Built motion from commit d56504d5.|2.5.37
authorAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 10 Nov 2021 10:25:58 +0000 (11:25 +0100)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 10 Nov 2021 10:25:58 +0000 (11:25 +0100)
1469 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/errors/404/i18n/hu.json [deleted file]
public/app/errors/500/i18n/hu.json [deleted file]
public/app/footer/i18n/hu.json [deleted file]
public/app/forgot/i18n/hu.json [deleted file]
public/app/header/i18n/hu.json [deleted file]
public/app/login/i18n/hu.json [deleted file]
public/app/main/apps/analytics/i18n/hu.json [deleted file]
public/app/main/apps/callysquare/i18n/hu.json [deleted file]
public/app/main/apps/chat/i18n/ar.json
public/app/main/apps/chat/i18n/cs.json
public/app/main/apps/chat/i18n/da.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/chat/i18n/en.json
public/app/main/apps/chat/i18n/es.json
public/app/main/apps/chat/i18n/et.json
public/app/main/apps/chat/i18n/fa.json
public/app/main/apps/chat/i18n/fi.json
public/app/main/apps/chat/i18n/fr.json
public/app/main/apps/chat/i18n/he.json
public/app/main/apps/chat/i18n/hi.json
public/app/main/apps/chat/i18n/hu.json [deleted file]
public/app/main/apps/chat/i18n/id.json
public/app/main/apps/chat/i18n/it.json
public/app/main/apps/chat/i18n/ja.json
public/app/main/apps/chat/i18n/ko.json
public/app/main/apps/chat/i18n/lt.json
public/app/main/apps/chat/i18n/lv.json
public/app/main/apps/chat/i18n/nl.json
public/app/main/apps/chat/i18n/no.json
public/app/main/apps/chat/i18n/pl.json
public/app/main/apps/chat/i18n/pt-BR.json
public/app/main/apps/chat/i18n/pt-PT.json
public/app/main/apps/chat/i18n/ru.json
public/app/main/apps/chat/i18n/sv.json
public/app/main/apps/chat/i18n/tr.json
public/app/main/apps/chat/i18n/zh-CN.json
public/app/main/apps/chat/i18n/zh-TW.json
public/app/main/apps/contactmanager/i18n/hu.json [deleted file]
public/app/main/apps/dashboards/i18n/cs.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/dashboards/i18n/en.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/dashboards/i18n/hu.json [deleted file]
public/app/main/apps/fax/i18n/cs.json
public/app/main/apps/fax/i18n/en.json
public/app/main/apps/fax/i18n/et.json
public/app/main/apps/fax/i18n/hu.json [deleted file]
public/app/main/apps/help/i18n/cs.json
public/app/main/apps/help/i18n/da.json
public/app/main/apps/help/i18n/de.json
public/app/main/apps/help/i18n/en.json
public/app/main/apps/help/i18n/et.json
public/app/main/apps/help/i18n/fa.json
public/app/main/apps/help/i18n/fi.json
public/app/main/apps/help/i18n/fr.json
public/app/main/apps/help/i18n/he.json
public/app/main/apps/help/i18n/hi.json
public/app/main/apps/help/i18n/hu.json [deleted file]
public/app/main/apps/help/i18n/it.json
public/app/main/apps/help/i18n/ko.json
public/app/main/apps/help/i18n/lt.json
public/app/main/apps/help/i18n/lv.json
public/app/main/apps/help/i18n/nl.json
public/app/main/apps/help/i18n/no.json
public/app/main/apps/help/i18n/pl.json
public/app/main/apps/help/i18n/pt-BR.json
public/app/main/apps/help/i18n/pt-PT.json
public/app/main/apps/help/i18n/ru.json
public/app/main/apps/help/i18n/sv.json
public/app/main/apps/help/i18n/tr.json
public/app/main/apps/help/i18n/zh-CN.json
public/app/main/apps/help/i18n/zh-TW.json
public/app/main/apps/integrations/i18n/en.json
public/app/main/apps/integrations/i18n/hu.json [deleted file]
public/app/main/apps/jscripty/i18n/hu.json [deleted file]
public/app/main/apps/mail/i18n/en.json
public/app/main/apps/mail/i18n/hu.json [deleted file]
public/app/main/apps/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/hu.json [deleted file]
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.json
public/app/main/apps/motiondialer/i18n/ar.json
public/app/main/apps/motiondialer/i18n/cs.json
public/app/main/apps/motiondialer/i18n/da.json
public/app/main/apps/motiondialer/i18n/de.json
public/app/main/apps/motiondialer/i18n/es.json
public/app/main/apps/motiondialer/i18n/et.json
public/app/main/apps/motiondialer/i18n/fa.json
public/app/main/apps/motiondialer/i18n/fi.json
public/app/main/apps/motiondialer/i18n/fr.json
public/app/main/apps/motiondialer/i18n/he.json
public/app/main/apps/motiondialer/i18n/hi.json
public/app/main/apps/motiondialer/i18n/hu.json [deleted file]
public/app/main/apps/motiondialer/i18n/id.json
public/app/main/apps/motiondialer/i18n/ja.json
public/app/main/apps/motiondialer/i18n/ko.json
public/app/main/apps/motiondialer/i18n/lt.json
public/app/main/apps/motiondialer/i18n/lv.json
public/app/main/apps/motiondialer/i18n/nl.json
public/app/main/apps/motiondialer/i18n/no.json
public/app/main/apps/motiondialer/i18n/pl.json
public/app/main/apps/motiondialer/i18n/pt-BR.json
public/app/main/apps/motiondialer/i18n/pt-PT.json
public/app/main/apps/motiondialer/i18n/ru.json
public/app/main/apps/motiondialer/i18n/sv.json
public/app/main/apps/motiondialer/i18n/tr.json
public/app/main/apps/motiondialer/i18n/zh-CN.json
public/app/main/apps/motiondialer/i18n/zh-TW.json
public/app/main/apps/openchannel/i18n/en.json
public/app/main/apps/openchannel/i18n/hu.json [deleted file]
public/app/main/apps/plugins/i18n/hu.json [deleted file]
public/app/main/apps/settings/i18n/de.json
public/app/main/apps/settings/i18n/hu.json [deleted file]
public/app/main/apps/sms/i18n/en.json
public/app/main/apps/sms/i18n/hu.json [deleted file]
public/app/main/apps/staff/i18n/ar.json
public/app/main/apps/staff/i18n/cs.json
public/app/main/apps/staff/i18n/da.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/staff/i18n/en.json
public/app/main/apps/staff/i18n/es.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/staff/i18n/fa.json
public/app/main/apps/staff/i18n/fi.json
public/app/main/apps/staff/i18n/fr.json
public/app/main/apps/staff/i18n/he.json
public/app/main/apps/staff/i18n/hi.json
public/app/main/apps/staff/i18n/hu.json [deleted file]
public/app/main/apps/staff/i18n/id.json
public/app/main/apps/staff/i18n/it.json
public/app/main/apps/staff/i18n/ja.json
public/app/main/apps/staff/i18n/ko.json
public/app/main/apps/staff/i18n/lt.json
public/app/main/apps/staff/i18n/lv.json
public/app/main/apps/staff/i18n/nl.json
public/app/main/apps/staff/i18n/no.json
public/app/main/apps/staff/i18n/pl.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/staff/i18n/pt-PT.json
public/app/main/apps/staff/i18n/ru.json
public/app/main/apps/staff/i18n/sv.json
public/app/main/apps/staff/i18n/tr.json
public/app/main/apps/staff/i18n/zh-CN.json
public/app/main/apps/staff/i18n/zh-TW.json
public/app/main/apps/tools/i18n/ar.json
public/app/main/apps/tools/i18n/cs.json
public/app/main/apps/tools/i18n/da.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/tools/i18n/es.json
public/app/main/apps/tools/i18n/et.json
public/app/main/apps/tools/i18n/fa.json
public/app/main/apps/tools/i18n/fi.json
public/app/main/apps/tools/i18n/fr.json
public/app/main/apps/tools/i18n/he.json
public/app/main/apps/tools/i18n/hi.json
public/app/main/apps/tools/i18n/hu.json [deleted file]
public/app/main/apps/tools/i18n/id.json
public/app/main/apps/tools/i18n/ja.json
public/app/main/apps/tools/i18n/ko.json
public/app/main/apps/tools/i18n/lt.json
public/app/main/apps/tools/i18n/lv.json
public/app/main/apps/tools/i18n/nl.json
public/app/main/apps/tools/i18n/no.json
public/app/main/apps/tools/i18n/pl.json
public/app/main/apps/tools/i18n/pt-BR.json
public/app/main/apps/tools/i18n/pt-PT.json
public/app/main/apps/tools/i18n/ru.json
public/app/main/apps/tools/i18n/sv.json
public/app/main/apps/tools/i18n/tr.json
public/app/main/apps/tools/i18n/zh-CN.json
public/app/main/apps/tools/i18n/zh-TW.json
public/app/main/apps/video/i18n/hu.json [deleted file]
public/app/main/apps/voice/i18n/ar.json
public/app/main/apps/voice/i18n/cs.json
public/app/main/apps/voice/i18n/da.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/es.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/voice/i18n/fa.json
public/app/main/apps/voice/i18n/fi.json
public/app/main/apps/voice/i18n/fr.json
public/app/main/apps/voice/i18n/he.json
public/app/main/apps/voice/i18n/hi.json
public/app/main/apps/voice/i18n/hu.json [deleted file]
public/app/main/apps/voice/i18n/id.json
public/app/main/apps/voice/i18n/it.json
public/app/main/apps/voice/i18n/ja.json
public/app/main/apps/voice/i18n/ko.json
public/app/main/apps/voice/i18n/lt.json
public/app/main/apps/voice/i18n/lv.json
public/app/main/apps/voice/i18n/nl.json
public/app/main/apps/voice/i18n/no.json
public/app/main/apps/voice/i18n/pl.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/voice/i18n/pt-PT.json
public/app/main/apps/voice/i18n/ru.json
public/app/main/apps/voice/i18n/sv.json
public/app/main/apps/voice/i18n/tr.json
public/app/main/apps/voice/i18n/zh-CN.json
public/app/main/apps/voice/i18n/zh-TW.json
public/app/main/apps/whatsapp/i18n/ar.json
public/app/main/apps/whatsapp/i18n/cs.json
public/app/main/apps/whatsapp/i18n/da.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/main/apps/whatsapp/i18n/en.json
public/app/main/apps/whatsapp/i18n/es.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/main/apps/whatsapp/i18n/fa.json
public/app/main/apps/whatsapp/i18n/fi.json
public/app/main/apps/whatsapp/i18n/fr.json
public/app/main/apps/whatsapp/i18n/he.json
public/app/main/apps/whatsapp/i18n/hi.json
public/app/main/apps/whatsapp/i18n/hu.json [deleted file]
public/app/main/apps/whatsapp/i18n/id.json
public/app/main/apps/whatsapp/i18n/it.json
public/app/main/apps/whatsapp/i18n/ja.json
public/app/main/apps/whatsapp/i18n/ko.json
public/app/main/apps/whatsapp/i18n/lt.json
public/app/main/apps/whatsapp/i18n/lv.json
public/app/main/apps/whatsapp/i18n/nl.json
public/app/main/apps/whatsapp/i18n/no.json
public/app/main/apps/whatsapp/i18n/pl.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-PT.json
public/app/main/apps/whatsapp/i18n/ru.json
public/app/main/apps/whatsapp/i18n/sv.json
public/app/main/apps/whatsapp/i18n/tr.json
public/app/main/apps/whatsapp/i18n/zh-CN.json
public/app/main/apps/whatsapp/i18n/zh-TW.json
public/app/quick-panel/i18n/hu.json [deleted file]
public/app/reset/i18n/hu.json [deleted file]
public/app/toolbar/i18n/ar.json
public/app/toolbar/i18n/cs.json
public/app/toolbar/i18n/da.json
public/app/toolbar/i18n/de.json
public/app/toolbar/i18n/en.json
public/app/toolbar/i18n/es.json
public/app/toolbar/i18n/et.json
public/app/toolbar/i18n/fa.json
public/app/toolbar/i18n/fi.json
public/app/toolbar/i18n/fr.json
public/app/toolbar/i18n/he.json
public/app/toolbar/i18n/hi.json
public/app/toolbar/i18n/hu.json [deleted file]
public/app/toolbar/i18n/id.json
public/app/toolbar/i18n/it.json
public/app/toolbar/i18n/ja.json
public/app/toolbar/i18n/ko.json
public/app/toolbar/i18n/lt.json
public/app/toolbar/i18n/lv.json
public/app/toolbar/i18n/nl.json
public/app/toolbar/i18n/no.json
public/app/toolbar/i18n/pl.json
public/app/toolbar/i18n/pt-BR.json
public/app/toolbar/i18n/pt-PT.json
public/app/toolbar/i18n/ru.json
public/app/toolbar/i18n/sv.json
public/app/toolbar/i18n/tr.json
public/app/toolbar/i18n/zh-CN.json
public/app/toolbar/i18n/zh-TW.json
public/assets/images/flags/hu.png [deleted file]
public/index.html
public/scripts/app.8fee3ae7.js [moved from public/scripts/app.a4ab584b.js with 52% similarity]
public/snippets/tvox/answer.controller.js [moved from public/tvox/answer.controller.js with 100% similarity]
public/snippets/tvox/answer.html [moved from public/tvox/answer.html with 100% similarity]
public/snippets/tvox/css/angular-material.min.css [moved from public/tvox/css/angular-material.min.css with 100% similarity]
public/snippets/tvox/css/style.css [moved from public/tvox/css/style.css with 100% similarity]
public/snippets/tvox/js/angular-animate.min.js [moved from public/tvox/js/angular-animate.min.js with 100% similarity]
public/snippets/tvox/js/angular-aria.min.js [moved from public/tvox/js/angular-aria.min.js with 100% similarity]
public/snippets/tvox/js/angular-cookies.min.js [moved from public/tvox/js/angular-cookies.min.js with 100% similarity]
public/snippets/tvox/js/angular-material.min.js [moved from public/tvox/js/angular-material.min.js with 100% similarity]
public/snippets/tvox/js/angular-messages.min.js [moved from public/tvox/js/angular-messages.min.js with 100% similarity]
public/snippets/tvox/js/angular-resource.js [moved from public/tvox/js/angular-resource.js with 100% similarity]
public/snippets/tvox/js/angular-sanitize.min.js [moved from public/tvox/js/angular-sanitize.min.js with 100% similarity]
public/snippets/tvox/js/angular.min.js [moved from public/tvox/js/angular.min.js with 100% similarity]
public/snippets/tvox/js/auth.service.js [moved from public/tvox/js/auth.service.js with 100% similarity]
public/snippets/tvox/js/index.socket.js [moved from public/tvox/js/index.socket.js with 100% similarity]
public/snippets/tvox/js/lodash.min.js [moved from public/tvox/js/lodash.min.js with 100% similarity]
public/snippets/tvox/js/ng-flow-standalone.min.js [moved from public/tvox/js/ng-flow-standalone.min.js with 100% similarity]
public/snippets/tvox/js/tvox_integration.min.js [moved from public/tvox/js/tvox_integration.min.js with 100% similarity]
public/snippets/tvox/ring.controller.js [moved from public/tvox/ring.controller.js with 100% similarity]
public/snippets/tvox/ring.html [moved from public/tvox/ring.html with 100% similarity]
public/snippets/tvox/script.js [moved from public/tvox/script.js with 100% similarity]
public/snippets/tvox/test.html [moved from public/tvox/test.html with 100% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/environment/development.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/files/chat/iframe.ejs
server/migrations/2.5.38.js
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/safe-template.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js

index 943f45b..14eba9b 100644 (file)
@@ -4281,13 +4281,6 @@ define({ "api": [
             "group": "Body",
             "type": "String",
             "optional": true,
-            "field": "labelText",
-            "description": ""
-          },
-          {
-            "group": "Body",
-            "type": "String",
-            "optional": true,
             "field": "messagesAlignment",
             "description": ""
           },
index 83345c6..83294f5 100644 (file)
             "group": "Body",
             "type": "String",
             "optional": true,
-            "field": "labelText",
-            "description": ""
-          },
-          {
-            "group": "Body",
-            "type": "String",
-            "optional": true,
             "field": "messagesAlignment",
             "description": ""
           },
index 9db3c86..4abfdfc 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-11-10T09:38:50.230Z",
+    "time": "2021-11-10T10:14:15.761Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 4e61f4f..5c8099d 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-11-10T09:38:50.230Z",
+    "time": "2021-11-10T10:14:15.761Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index f5fd03a..cc37218 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.30",
+  "version": "2.5.37",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
diff --git a/public/app/errors/404/i18n/hu.json b/public/app/errors/404/i18n/hu.json
deleted file mode 100644 (file)
index b061703..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "ERROR404": {
-    "CODE": "404",
-    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
-    "SEARCH": "Search for anything",
-    "GO_BACK": "Go back to dashboard"
-  }
-}
diff --git a/public/app/errors/500/i18n/hu.json b/public/app/errors/500/i18n/hu.json
deleted file mode 100644 (file)
index b218b70..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "ERROR500": {
-    "CODE": "500",
-    "MESSAGE": "Well, you broke the internet!",
-    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
-    "REPORT": "Report this problem",
-    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
-    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
-    "GO_BACK": "Go back to dashboard"
-  }
-}
diff --git a/public/app/footer/i18n/hu.json b/public/app/footer/i18n/hu.json
deleted file mode 100644 (file)
index 8a47415..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
-    "ERRORS": {}
-  }
-}
diff --git a/public/app/forgot/i18n/hu.json b/public/app/forgot/i18n/hu.json
deleted file mode 100644 (file)
index be7b81a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "FORGOTPASSWORD": {
-    "TITLE": "Recover your password",
-    "EMAIL_ADRESS": "Email address",
-    "SEND_RESET_LINK": "SEND RESET LINK",
-    "GO_BACK": "Go back to login",
-    "LINK_SENT": "Link Sent",
-    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
-    "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format"
-    }
-  }
-}
diff --git a/public/app/header/i18n/hu.json b/public/app/header/i18n/hu.json
deleted file mode 100644 (file)
index f78785b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "HEADER": {
-    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
-    "ERRORS": {}
-  }
-}
diff --git a/public/app/login/i18n/hu.json b/public/app/login/i18n/hu.json
deleted file mode 100644 (file)
index 8a25905..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "LOGIN": {
-    "TELEPHONES": "Telephones",
-    "SELECT": "Select",
-    "CANCEL": "Cancel",
-    "TITLE": "Log in to your account",
-    "EMAIL": "Email",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "REMEMBER_ME": "Remember Me",
-    "FORGOT_PASSWORD": "Forgot Password?",
-    "LOG_IN": "LOG IN",
-    "OR": "OR",
-    "WITH_GOOGLE": "Log in with Google",
-    "WITH_FACEBOOK": "Log in with Facebook",
-    "DONT_HAVE_ACCOUNT": "No account?",
-    "CREATE_ACCOUNT": "Create an account",
-    "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
-    }
-  }
-}
diff --git a/public/app/main/apps/analytics/i18n/hu.json b/public/app/main/apps/analytics/i18n/hu.json
deleted file mode 100644 (file)
index 71cf72f..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "ANALYTICS": {
-    "SEND_IF_EMPTY": "Send if empty",
-    "REPORTNAME": "Report Name",
-    "DELETE": "Delete",
-    "NAME": "Name",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Metrics",
-    "ID": "Id",
-    "TABLE": "Table",
-    "DESCRIPTION": "Description",
-    "SEARCH_FOR_ANYONE": "Search",
-    "METRIC": "Metric",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "METRIC_REQUIRED": "Mandatory field",
-      "COLUMN_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field"
-    },
-    "NEW_METRIC": "New Metric",
-    "ADD_METRIC": "Add Metric",
-    "EDIT_METRIC": "Edit Metric",
-    "DELETE_METRIC": "Delete Metric",
-    "SAVE": "Save",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Extracted Reports",
-    "DATE_RANGE_FROM": "Date Range From",
-    "DATE_RANGE_TO": "Date Range To",
-    "GENERATED_AT": "Generated At",
-    "STATUS": "Status",
-    "OUTPUT": "Output",
-    "REPORTS": "Reports",
-    "SEARCH_FOR_FOLDER": "Search for folder",
-    "CREATED_AT": "Created At",
-    "NEW_REPORT": "New Report",
-    "ADD_REPORT": "Add Report",
-    "COPY_REPORT": "Copy Report",
-    "PREVIEW_REPORT": "Preview Report",
-    "WEB_REPORT": "Web Report",
-    "RUN_REPORT": "Run Report",
-    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
-    "EDIT_REPORT": "Edit Report",
-    "DELETE_REPORT": "Delete Report",
-    "CREATE": "Create Folder",
-    "RENAME": "Rename Folder",
-    "REMOVE": "Remove Folder",
-    "SELECT_NODE": "Select Folder",
-    "ERROR": "Error",
-    "QUERY_ERROR": "Query Error",
-    "MESSAGE": "Message",
-    "CLOSE": "Close",
-    "FORMAT": "Format",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FIELDS": "Fields",
-    "CONDITION": "Condition",
-    "OPERATOR": "Operator",
-    "GROUP": "Group",
-    "COLUMN": "Column",
-    "VALUE": "Value",
-    "PREVIEW": "Preview",
-    "LIMITED_RESULT": "*Limited Results",
-    "NO_DATA": "No data results",
-    "CONDITIONS": "Conditions",
-    "ALIAS": "Alias",
-    "FUNCTION": "Function",
-    "GROUP_BY": "Group By",
-    "ORDER_BY": "Order By",
-    "ADD_REPORTFIELD": "Add Field",
-    "EDIT_REPORTFIELD": "Edit Field",
-    "DELETE_REPORTFIELD": "Delete Field",
-    "METRIC_NAME": "Metric",
-    "NO_METRIC_FOUND": "No metric found",
-    "NO_AVAILABLE_INFO": "No available info",
-    "CUSTOM_METRIC": "Custom Metric",
-    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
-    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of"
-  }
-}
diff --git a/public/app/main/apps/callysquare/i18n/hu.json b/public/app/main/apps/callysquare/i18n/hu.json
deleted file mode 100644 (file)
index 1e523a8..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-{
-  "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Add Users to Project",
-    "ADD_ODBC": "Add ODBC",
-    "ADD_PROJECT": "Add Project",
-    "ADD_VARIABLE": "Add Variable",
-    "AGENTS": "Agents",
-    "AGI": "AGI",
-    "ALL_USERS": "All Users",
-    "ANSWER": "Answer",
-    "APIKEY": "ApiKey",
-    "APPID": "App ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App Secret",
-    "ARGS": "Arguments",
-    "ATTACHMENT_NAME": "Attachment Name",
-    "ATTACHMENT_PATH": "Attachment Path",
-    "ATTACHMENT_TYPE": "Attachment Type",
-    "AUDIO": "Audio",
-    "AUDIOENCODING": "Audio Encoding",
-    "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Access Key ID",
-    "AWS_BOT_NAME": "Bot name",
-    "AWS_LEX_REGION": "Region",
-    "AWS_POLLY_REGION": "Region",
-    "AWS_POLLY_VOICE": "Voice",
-    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
-    "AWS_TEXT_TYPE": "Text type",
-    "BACK": "Back",
-    "BCC": "BCC",
-    "BEEP": "Beep",
-    "BODY": "Body",
-    "CALLBACK": "Callback",
-    "CALLBACK_PRIORITY": "Priority",
-    "CALLYSQUARE": "Cally Square",
-    "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Choose Attachment",
-    "CLIENT_EMAIL": "Client Email",
-    "CLOSE": "Close",
-    "COMMAND": "Command",
-    "COMPUTEDVARIABLES": "Computed Variables Script Path",
-    "CONDITION": "Condition",
-    "CONTEXT": "Context",
-    "COPY": "Copy",
-    "COPY_PROJECT": "Copy Project",
-    "CREATED_AT": "Created At",
-    "CUSTOM_ACTION": "Custom Action",
-    "CUSTOM_ACTION_DATA": "Custom Action Data",
-    "CUSTOM_APP": "Custom Application",
-    "DATABASE": "Database",
-    "DELAY": "delay [min]",
-    "DELETE": "Delete",
-    "DELETE_ODBC": "Delete ODBC",
-    "DELETE_PROJECT": "Delete Project",
-    "DELETE_SQUARERECORDING": "Delete Square Recording",
-    "DESCRIPTION": "Description",
-    "DIAL": "Dial",
-    "DIALOGFLOW": "Dialogflow",
-    "DIALOGFLOWV2": "DialogflowV2",
-    "DIALOGFLOWV2_LANGUAGE": "Language",
-    "DIALOGFLOWV2_PROJECT_ID": "Project ID",
-    "DIALOGFLOW_LANGUAGE": "Language",
-    "DIGIT": "Max Digits",
-    "DIGITS": "Digits",
-    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
-    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
-    "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit Square Recording",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
-    "ERRORS": {
-      "DSN_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field"
-    },
-    "ESCAPE_DIGITS": "Escape Digits",
-    "EXTEN": "Exten",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
-    "FILENAME": "Filename",
-    "FILE_ID": "Audio",
-    "FINALLY": "Finally",
-    "FINDBY": "Find By",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
-    "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Language",
-    "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
-    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Text Type",
-    "GOOGLE_TTS_LANGUAGE": "Language",
-    "GOSUB": "GoSub",
-    "GOTOC": "GoTo",
-    "GOTOIF": "GoToIf",
-    "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Go to projects",
-    "GRAMMAR": "Grammar",
-    "HANGUP": "Hangup",
-    "HEADERS": "Headers",
-    "HELP": {
-      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
-      "MAILBOX": "mailbox@context",
-      "MAX_TEXT_TTS": "The maximum number of characters supported is 200",
-      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
-    },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "hidden Digits Position",
-    "ID": "Id",
-    "IMPORT": "Import",
-    "IMPORT_XML": "Import XML",
-    "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
-    "ISPEECHASR": "iSpeech ASR",
-    "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
-    "LABEL": "Label",
-    "LANGUAGECODE": "Language Code",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Login",
-    "LOGOUT": "Logout",
-    "LUMENVOXASR": "Lumenvox ASR",
-    "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Macro",
-    "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
-    "MENU": "Menu",
-    "METHOD": "Method",
-    "MINDIGIT": "Minimum Digits",
-    "MODEL": "Model",
-    "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSynth",
-    "NAME": "Name",
-    "NDAACTIVITY_TYPE": "Activity Type",
-    "NDAGENERATE_AUDIO": "Generate Audio File",
-    "NDASSISTANT_URL": "NDASSISTANT Url",
-    "NDAUTH_URL": "NDAUTH Url",
-    "NEW": "New",
-    "NEW_ODBC": "New ODBC connection",
-    "NEW_PROJECT": "New Project",
-    "NEW_VARIABLE": "New Variable",
-    "NOOP": "NoOp",
-    "NOTES": "Notes",
-    "NO_AVAILABLE_INFO": "No available info",
-    "NUMBER": "Number",
-    "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
-    "OF": "of",
-    "OPEN": "Open",
-    "OPEN_NEW_WINDOW": "Open in a new window",
-    "OPEN_PROJECT": "Open Project",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
-    "PAGE": "Page",
-    "PASSWORD": "Password",
-    "PAUSE": "Pause",
-    "PAUSE_ID": "Pause type",
-    "PERMISSIONADD_PROJECTS": "Add Users to Project",
-    "PHONE": "Phone",
-    "PLAYBACK": "Playback",
-    "POSITION": "Position",
-    "PRIORITY": "Priority",
-    "PRIVATE_KEY": "Private Key",
-    "PROJECT": "Project",
-    "PROJECTS": "Projects",
-    "PROJECT_ID": "Project",
-    "QUERY": "Query",
-    "QUEUE": "Queue",
-    "QUEUE_ID": "Queue",
-    "RAWBODY": "Body",
-    "RAWHEADERS": "Headers",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
-    "RESTAPI": "Rest API",
-    "RETRY": "Retries",
-    "ROWSPERPAGE": "Rows per page",
-    "SAVE": "Save",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECTED_USERS": "Selected Users",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "SENDFAX": "Send Fax",
-    "SENDMAIL": "Send Email",
-    "SENDSMS": "Send SMS",
-    "SESTEKASR": "Sestek ASR",
-    "SESTEKNDA": "Sestek NDA",
-    "SESTEKTTS": "Sestek TTS",
-    "SET": "Set",
-    "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Account",
-    "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Recordings",
-    "SSMLGENDER": "Gender",
-    "START": "Start",
-    "SUBJECT": "Subject",
-    "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
-    "TELEPHONES": "Telephones",
-    "TEMPLATE_ID": "Template",
-    "TEST_ODBC": "Test ODBC",
-    "TEXT": "Text",
-    "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Timeout",
-    "TO": "To",
-    "TRUNK_NAME": "Trunk",
-    "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
-    "UNPAUSE": "End Pause",
-    "UPDATE_DESCRIPTION": "Update Description",
-    "UPDATE_INFO": "Update Info",
-    "URI": "URI",
-    "URL": "URL",
-    "USERNAME": "Username",
-    "USERS": "Users",
-    "VARIABLE_ID": "Variable",
-    "VARIABLE_VALUE": "Value",
-    "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch"
-  }
-}
index 0eb2983..933897b 100644 (file)
@@ -87,8 +87,7 @@
       "CLIENTEMAIL_REQUIRED": "حقل الزامي",
       "PRIVATEKEY_REQUIRED": "حقل الزامي",
       "PROJECTID_REQUIRED": "حقل الزامي",
-      "VIDAOOTOPIC_REQUIRED": "حقل الزامي",
-      "EMAIL_ACCOUNT_REQUIRED": "حقل الزامي"
+      "VIDAOOTOPIC_REQUIRED": "حقل الزامي"
     },
     "HELP": {
       "AGENTIDENTIFIER": "محدد هوية وكيل خدمه العملاء",
index 74dd5f5..7a1c47d 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Povinné pole",
       "PRIVATEKEY_REQUIRED": "Povinné pole",
       "PROJECTID_REQUIRED": "Povinné pole",
-      "VIDAOOTOPIC_REQUIRED": "Povinné pole",
-      "EMAIL_ACCOUNT_REQUIRED": "Povinné pole"
+      "VIDAOOTOPIC_REQUIRED": "Povinné pole"
     },
     "CM_FIELD": "Contact Manager Field",
     "CHATPROACTIVEACTIONS": "Proactive Actions",
index cd377dd..cf70b57 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Obligatorisk felt",
       "PRIVATEKEY_REQUIRED": "Obligatorisk felt",
       "PROJECTID_REQUIRED": "Obligatorisk felt",
-      "VIDAOOTOPIC_REQUIRED": "Obligatorisk felt",
-      "EMAIL_ACCOUNT_REQUIRED": "Obligatorisk felt"
+      "VIDAOOTOPIC_REQUIRED": "Obligatorisk felt"
     },
     "CM_FIELD": "Kontakt Manager mark",
     "CHATPROACTIVEACTIONS": "Proaktive handlinger",
index 3de6aae..34fdf73 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
-      "VIDAOOTOPIC_REQUIRED": "Pflichtfeld",
-      "EMAIL_ACCOUNT_REQUIRED": "Pflichtfeld"
+      "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
     "CM_FIELD": "Kontaktmanager-Feld",
     "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
index 3b36c02..13cbf3f 100644 (file)
     "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
     "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "LABELTEXT": "Label text"
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
   }
 }
index 1c15a88..9dd4073 100644 (file)
@@ -87,8 +87,7 @@
       "CLIENTEMAIL_REQUIRED": "Campo obligatorio",
       "PRIVATEKEY_REQUIRED": "Campo obligatorio",
       "PROJECTID_REQUIRED": "Campo obligatorio",
-      "VIDAOOTOPIC_REQUIRED": "Campo obligatorio",
-      "EMAIL_ACCOUNT_REQUIRED": "Campo obligatorio"
+      "VIDAOOTOPIC_REQUIRED": "Campo obligatorio"
     },
     "HELP": {
       "AUTOCLOSE": "Habilítelo si desea que las sesiones de chat se cierren como No gestionadas si no hay ningún agente disponible. Obtenga más información al respecto en: https://wiki.xcallymotion.com/display/XMV/Chat Websites",
index 62e0d45..58fbdb3 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
       "PROJECTID_REQUIRED": "Kohustuslik väli",
-      "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli",
-      "EMAIL_ACCOUNT_REQUIRED": "Kohustuslik väli"
+      "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli"
     },
     "CM_FIELD": "Contact Manager Field",
     "CHATPROACTIVEACTIONS": "Proactive Actions",
index 7fbb9a1..2c483e3 100644 (file)
       "CLIENTEMAIL_REQUIRED": "زمینه اجباری",
       "PRIVATEKEY_REQUIRED": "زمینه اجباری",
       "PROJECTID_REQUIRED": "زمینه اجباری",
-      "VIDAOOTOPIC_REQUIRED": "زمینه اجباری",
-      "EMAIL_ACCOUNT_REQUIRED": "فیلد اجباری"
+      "VIDAOOTOPIC_REQUIRED": "زمینه اجباری"
     },
     "CM_FIELD": "تماس با مدير گروه رشته",
     "CHATPROACTIVEACTIONS": "اقدامات فعالانه تر توبيخ",
index 0c00771..46c4cfe 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Pakollinen kenttä",
       "PRIVATEKEY_REQUIRED": "Pakollinen kenttä",
       "PROJECTID_REQUIRED": "Pakollinen kenttä",
-      "VIDAOOTOPIC_REQUIRED": "Pakollinen kenttä",
-      "EMAIL_ACCOUNT_REQUIRED": "Pakollinen kenttä"
+      "VIDAOOTOPIC_REQUIRED": "Pakollinen kenttä"
     },
     "CM_FIELD": "Contact Manager kenttä",
     "CHATPROACTIVEACTIONS": "Ennakoivat toimet",
index 873c589..704d2ff 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Champ obligatoire",
       "PRIVATEKEY_REQUIRED": "Champ obligatoire",
       "PROJECTID_REQUIRED": "Champ obligatoire",
-      "VIDAOOTOPIC_REQUIRED": "Champ obligatoire",
-      "EMAIL_ACCOUNT_REQUIRED": "Champ obligatoire"
+      "VIDAOOTOPIC_REQUIRED": "Champ obligatoire"
     },
     "CM_FIELD": "Contact Manager Domaine",
     "CHATPROACTIVEACTIONS": "Des actions proactives",
index 5a20fb1..fc198a2 100644 (file)
       "CLIENTEMAIL_REQUIRED": "שדה חובה",
       "PRIVATEKEY_REQUIRED": "שדה חובה",
       "PROJECTID_REQUIRED": "שדה חובה",
-      "VIDAOOTOPIC_REQUIRED": "שדה חובה",
-      "EMAIL_ACCOUNT_REQUIRED": "שדה חובה"
+      "VIDAOOTOPIC_REQUIRED": "שדה חובה"
     },
     "CM_FIELD": "שדה 'מנהל אנשי הקשר'",
     "CHATPROACTIVEACTIONS": "פעולות יזומות",
index 5b0f3e2..79cadf3 100644 (file)
       "CLIENTEMAIL_REQUIRED": "आवश्यक स्थान",
       "PRIVATEKEY_REQUIRED": "आवश्यक स्थान",
       "PROJECTID_REQUIRED": "आवश्यक स्थान",
-      "VIDAOOTOPIC_REQUIRED": "आवश्यक स्थान",
-      "EMAIL_ACCOUNT_REQUIRED": "अनिवार्य क्षेत्र"
+      "VIDAOOTOPIC_REQUIRED": "आवश्यक स्थान"
     },
     "CM_FIELD": "संपर्क प्रबंधक क्षेत्र",
     "CHATPROACTIVEACTIONS": "सक्रिय क्रियाएं",
diff --git a/public/app/main/apps/chat/i18n/hu.json b/public/app/main/apps/chat/i18n/hu.json
deleted file mode 100644 (file)
index 13cbf3f..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-{
-  "CHAT": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "VIDAOOESCALATION": "Start Video Call",
-    "VIDAOOAPIKEY": "Vidaoo Api Key",
-    "VIDAOOSESSION": "Start Video Call",
-    "VIDAOOTOPIC": "Vidaoo Topic",
-    "VIDAOONOTE": "Vidaoo Note",
-    "VIDAOOMETADATA": "Vidaoo Metadata",
-    "VIDEO": "Video",
-    "VIDAOO": "Vidaoo",
-    "EDIT_AMAZONLEX": "Edit Amazon Lex",
-    "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot Name",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "SYSTEMAVATAR": "System Avatar",
-    "SYSTEMALIAS": "System Alias",
-    "OPEN_NEW_INTERACTION": "Open new interaction",
-    "EMAIL_ACCOUNT": "Email account",
-    "SUBJECT": "Subject",
-    "WELCOMEMESSAGE": "Welcome Message",
-    "LANGUAGE": "Language",
-    "EDIT_DIALOGFLOW": "Edit Dialogflow",
-    "DIALOGFLOW": "Dialogflow",
-    "BACKGROUNDCOLOR": "Background Color",
-    "MESSAGEFONTSIZE": "Message Font Size",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "CUSTOMERALIAS": "Customer Alias",
-    "SNIPPETSWIPEOUT": "Snippet swipe out",
-    "CUSTOMERAVATAR": "Customer Avatar",
-    "SHOWCUSTOMERAVATAR": "Show customer avatar",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "DEFAULTTITLE": "Default Title",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ALTERNATE": "Alternate",
-    "CENTERED": "Centered",
-    "POSITION": "Position",
-    "VERTICALPOSITION": "Vertical position",
-    "ALIGNMENT": "Alignment",
-    "VERTICALALIGNMENT": "Vertical alignment",
-    "BOTTOM_RIGHT": "Bottom right",
-    "RIGHT": "Right",
-    "LEFT": "Left",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "AGENTIDENTIFIER": "Identifier",
-    "WEBSITEALIAS": "Website Alias",
-    "AGENTALIAS": "Agent Alias",
-    "AGENTFULLNAME": "Agent Fullname",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "HIDEWHENOFFLINE": "Hide",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "TEXTCOLOR": "Text Color",
-    "FONTSIZE": "Font Size",
-    "WEBSCRIPT": "Web Script",
-    "CANNEDANSWERS": "Canned Answers",
-    "CHATCANNEDANSWERS": "Canned Answers",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_CHATCANNEDANSWER": "New Canned Answer",
-    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit",
-    "DELETE_CHATCANNEDANSWER": "Delete",
-    "OFFLINEMESSAGESUBJECT": "Message subject",
-    "OFFLINEMESSAGEBODY": "Message body",
-    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
-    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
-    "PLACEHOLDERMESSAGE": "Message placeholder",
-    "NOTETITLE": "Note's title",
-    "CLOSINGQUESTION": "Closing question",
-    "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Show personal agent avatar",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "WRITING": "Writing",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
-    "FAX": "Fax",
-    "PAUSE": "Pause",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "UNPAUSE": "End Pause",
-    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NEW_CHATDISPOSITION": "New Chat Disposition",
-    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
-    "ENABLESENDBUTTON": "Enable Send Button",
-    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
-    "OFFLINESTATUS": "Offline Status",
-    "NAME": "Name",
-    "CHATQUEUES": "Chat Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "KEY": "Key",
-    "ALIAS": "Alias",
-    "VARIABLE": "Variable",
-    "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Edit Close",
-    "TIMEZONE": "Timezone",
-    "MESSAGE": "Message",
-    "ADVANCED": "Advanced",
-    "FORWARDTRANSCRIPT": "Forward Transcript",
-    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
-    "SKIPMESSAGEBUTTON": "Skip Message Button",
-    "EDIT_MESSAGE": "Edit Message",
-    "CONDITION_AGREEMENT": "Condition Agreement",
-    "NONE": "None",
-    "PRIORITY": "Priority",
-    "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Unmanaged Status",
-    "AUTOCLOSE": "Enable Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
-    "UNMANAGEDMESSAGE": "Message",
-    "SKIPUNMANAGED": "Skip Message",
-    "SENDUNMANAGED": "Send Message",
-    "WEBSITESCRIPT": "Website Script",
-    "DELETE_OFFLINEMESSAGE": "Delete",
-    "OFFLINEMESSAGES": "Offline Messages",
-    "FORWARD_OFFLINE": "Forward Offline",
-    "SHOW_OFFLINEMESSAGE": "Show",
-    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
-    "CLOSINGFORM": "Closing Form",
-    "ENABLERATING": "Enable Rating",
-    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
-    "ENABLEFEEDBACK": "Enable Feedback",
-    "FEEDBACKTITLE": "Feedback Title",
-    "RATINGTYPE": "Rating Type",
-    "CLOSINGMESSAGE": "Closing Message",
-    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
-    "RATINGSTARSNUMBER": "Rating Stars Number",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-    "SERVICEID": "Service ID",
-    "CHANNELID": "Channel ID",
-    "EDIT_TVOX": "Edit TVox",
-    "SERVICENAME": "Service name",
-    "TVOX": "TVox",
-    "TVOXURL": "TVox IP URL",
-    "TVOXIP": "TVox IP Address",
-    "TVOXUSERNAME": "TVox Username",
-    "TVOXPASSWD": "TVox Password",
-    "TVOXLOGINURL": "TVox Login REST Url",
-    "TVOXSESSIONURL": "TVox Session REST Url",
-    "MOTIONURLONRING": "Motion URL On Ring",
-    "MOTIONURLONANSWER": "Motion URL On Answer",
-    "MOTIONTITLE": "Motion Title",
-    "MOTIONURL": "Motion URL",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "VIDAOOAPIKEY_REQUIRED": "Mandatory Field",
-      "VIDAOOTOPIC_REQUIRED": "Mandatory Field",
-      "BOTNAME_REQUIRED": "Mandatory Field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Mandatory Field",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
-      "AGENTALIAS_REQUIRED": "Mandatory Field",
-      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Wrong format",
-      "ADDRESS_REQUIRED": "Mandatory Field",
-      "ADDRESS_MUST_VALID_URL": "Wrong format",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
-      "WAITINGTITLE_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "EMAIL_ACCOUNT_REQUIRED": "Mandatory field"
-    },
-    "CM_FIELD": "Contact Manager Field",
-    "CHATPROACTIVEACTIONS": "Proactive Actions",
-    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
-    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
-    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
-    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
-    "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Timeout",
-    "TYPE": "Type",
-    "SELECTOR": "Selector",
-    "AGENT": "Agent",
-    "GOTO": "Goto",
-    "GOTOIF": "GotoIf",
-    "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_GOTOIf": "Edit GotoIf",
-    "EDIT_NOOP": "Edit Noop",
-    "ADD_CHATQUEUE": "Add Chat Queue",
-    "EDIT_CHATQUEUE": "Edit Chat Queue",
-    "DELETE_CHATQUEUE": "Delete Chat Queue",
-    "SETTINGS": "Settings",
-    "SAVE": "Save",
-    "SCRIPT": "Script",
-    "TOKEN": "Token",
-    "CREATED_AT": "Created At",
-    "CHATWEBSITES": "Chat Websites",
-    "MOTIONADDRESS": "Website Domain",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "ADD_CHATWEBSITE": "Add Chat Website",
-    "EDIT_CHATWEBSITE": "Edit Chat Website",
-    "DELETE_CHATWEBSITE": "Delete Chat Website",
-    "LIST": "List",
-    "SNIPPET": "Snippet",
-    "FORMS": "Forms",
-    "UP": "Up",
-    "DOWN": "Down",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Proactive Actions",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "FIDELITY": "Fidelity",
-    "APPEARANCE": "Appearance",
-    "MAINCOLOR": "Main Color",
-    "FOCUSCOLOR": "Focus Color",
-    "BUTTONCOLOR": "Button Color",
-    "HEADERSHAPE": "Header Shape",
-    "ANIMATION": "Animation",
-    "DEFAULT": "Default",
-    "WHITELABEL": "White Label",
-    "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download Transcript",
-    "ENQUIRY_ENABLE": "Enquiry Enable",
-    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
-    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
-    "LABELS": "Labels",
-    "HEADER_ONLINE": "Online Header",
-    "ONLINE_MESSAGE": "Online Message",
-    "NAME_TITLE": "Name Input Label",
-    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
-    "START_CHAT_BUTTON": "'Start Chat' Button",
-    "AGENTS_BUSY": "Busy Agents Message",
-    "HEADER_OFFLINE": "Offline Header",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "MESSAGE_TITLE": "Message Label",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
-    "ENQUIRY_BUTTON": "Enquiry Button Text",
-    "RATING_MESSAGE": "Rating Message",
-    "RATING_SEND": "Rating Send Button Text",
-    "RATING_SKIP": "Rating Skip Button Text",
-    "ONLINE": "Online",
-    "OFFLINE": "Offline",
-    "PROACTIVE": "Proactive",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "EMBEDDING": "Embedding",
-    "GENERAL": "General",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "HELP": {
-      "VERTICALPOSITION": "Represents the distance in percentage from top",
-      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
-      "HIDEWHENOFFLINE": "Hides snippet when offline",
-      "KEY": "Website short name (5 char) shown on the Agent Tab",
-      "TOKEN": "Automatically generated token used in the Script",
-      "INTEVAL": "To be selected from the list of the available intervals",
-      "TIMEZONE": "Select one from the list (default=local timezone)",
-      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
-      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
-      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
-      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
-      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
-      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "The following Motion Contact Manager field:",
-      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
-      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
-      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate Contacts",
-      "INTERVAL": "Select one from the list",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message"
-    },
-    "ADDRESS": "Address",
-    "ONLINESTATE": "Online Status",
-    "OFFLINESTATE": "Offline Status",
-    "RATINGSTATE": "Rating State",
-    "ENQUIRY": "Enquiry",
-    "OFFLINETEMPLATE": "Offline Template",
-    "CHATDISPOSITIONS": "Chat Dispositions",
-    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
-    "ADD_CHATDISPOSITION": "Add Chat Disposition",
-    "DELETE": "Delete",
-    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
-    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
-    "ID": "Id",
-    "NEW_CHATQUEUE": "New Chat Queue",
-    "NEW_CHATWEBSITE": "New Chat Website",
-    "ROUNDED": "Rounded",
-    "SQUARED": "Squared",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "WEBSITE": "Website",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
-    "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
-    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CREATEDAT": "Created At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECTED_WEBSITE": "Select a website",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "SELECT_WEBSITE": "Select a website",
-    "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
-    "WAITINGTITLE": "Waiting Title",
-    "WAITINGMESSAGE": "Waiting Message",
-    "RATING": "Rating",
-    "NO_RATINGVALUE": "No Rating",
-    "DEFAULT_PAUSE": "Default pause",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
-  }
-}
index de9f60c..3292982 100644 (file)
@@ -87,8 +87,7 @@
       "CLIENTEMAIL_REQUIRED": "Bidang wajib",
       "PRIVATEKEY_REQUIRED": "Bidang wajib",
       "PROJECTID_REQUIRED": "Bidang wajib",
-      "VIDAOOTOPIC_REQUIRED": "Bidang wajib",
-      "EMAIL_ACCOUNT_REQUIRED": "Bidang wajib"
+      "VIDAOOTOPIC_REQUIRED": "Bidang wajib"
     },
     "HELP": {
       "AGENTIDENTIFIER": "Mewakili pengenal agen dalam sesi obrolan di cuplikan",
index 4f7420d..993edcb 100644 (file)
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obbligatorio",
       "CLIENTEMAIL_REQUIRED": "Campo obbligatorio",
       "PRIVATEKEY_REQUIRED": "Campo obbligatorio",
-      "PROJECTID_REQUIRED": "Campo obbligatorio",
-      "EMAIL_ACCOUNT_REQUIRED": "Campo obbligatorio"
+      "PROJECTID_REQUIRED": "Campo obbligatorio"
     },
     "ADD_CHATQUEUE": "Aggiungi Coda Chat",
     "EDIT_CHATQUEUE": "Modifica Coda Chat",
     "TVOXPASSWD": "Password TVox",
     "TVOXSESSIONURL": "URL REST della sessione TVox",
     "TVOXURL": "URL IP TVox",
-    "TVOXUSERNAME": "Nome utente TVox",
-    "LABELTEXT": "Testo dentro la Label"
+    "TVOXUSERNAME": "Nome utente TVox"
   }
 }
index ef8a2cb..b0f6760 100644 (file)
@@ -87,8 +87,7 @@
       "CLIENTEMAIL_REQUIRED": "必須フィールド",
       "PRIVATEKEY_REQUIRED": "必須フィールド",
       "PROJECTID_REQUIRED": "必須フィールド",
-      "VIDAOOTOPIC_REQUIRED": "必須フィールド",
-      "EMAIL_ACCOUNT_REQUIRED": "必須フィールド"
+      "VIDAOOTOPIC_REQUIRED": "必須フィールド"
     },
     "HELP": {
       "AUTOCLOSE": "エージェントは応じられない場合は、チャットセッションをアンマネージドとしてクローズする場合に有効にします。詳細はhttps://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippetをご覧ください。",
index 736d5d8..0ed40a1 100644 (file)
       "CLIENTEMAIL_REQUIRED": "필수 필드",
       "PRIVATEKEY_REQUIRED": "필수 필드",
       "PROJECTID_REQUIRED": "필수 필드",
-      "VIDAOOTOPIC_REQUIRED": "필수 필드",
-      "EMAIL_ACCOUNT_REQUIRED": "필수 필드"
+      "VIDAOOTOPIC_REQUIRED": "필수 필드"
     },
     "CM_FIELD": "CM 필드",
     "CHATPROACTIVEACTIONS": "채팅 사전 활동",
index 7e32b0d..86a1170 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Privalomas laukas",
       "PRIVATEKEY_REQUIRED": "Privalomas laukas",
       "PROJECTID_REQUIRED": "Privalomas laukas",
-      "VIDAOOTOPIC_REQUIRED": "Privalomas laukas",
-      "EMAIL_ACCOUNT_REQUIRED": "Privalomas laukas"
+      "VIDAOOTOPIC_REQUIRED": "Privalomas laukas"
     },
     "CM_FIELD": "Kontaktų vadybininko laukas",
     "CHATPROACTIVEACTIONS": "Aktyvūs veiksmai",
index 931a660..4972c83 100644 (file)
@@ -87,8 +87,7 @@
       "CLIENTEMAIL_REQUIRED": "Obligāts lauks",
       "PRIVATEKEY_REQUIRED": "Obligāts lauks",
       "PROJECTID_REQUIRED": "Obligāts lauks",
-      "VIDAOOTOPIC_REQUIRED": "Obligāts lauks",
-      "EMAIL_ACCOUNT_REQUIRED": "Obligāts lauks"
+      "VIDAOOTOPIC_REQUIRED": "Obligāts lauks"
     },
     "HELP": {
       "KEY": "Tīmekļa vietnes īss nosaukums (piecas rakstzīmes), kas ir attēlots cilnē Aģenti",
index 19585ca..5ac500d 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Verplicht veld",
       "PRIVATEKEY_REQUIRED": "Verplicht veld",
       "PROJECTID_REQUIRED": "Verplicht veld",
-      "VIDAOOTOPIC_REQUIRED": "Verplicht veld",
-      "EMAIL_ACCOUNT_REQUIRED": "Verplicht veld"
+      "VIDAOOTOPIC_REQUIRED": "Verplicht veld"
     },
     "CM_FIELD": "Contact Manager veld",
     "CHATPROACTIVEACTIONS": "Proactieve acties",
index a5dd7c4..cf9586b 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Obligatoriske felt",
       "PRIVATEKEY_REQUIRED": "Obligatoriske felt",
       "PROJECTID_REQUIRED": "Obligatoriske felt",
-      "VIDAOOTOPIC_REQUIRED": "Obligatoriske felt",
-      "EMAIL_ACCOUNT_REQUIRED": "Obligatoriske felt"
+      "VIDAOOTOPIC_REQUIRED": "Obligatoriske felt"
     },
     "CM_FIELD": "Kontakt leder",
     "CHATPROACTIVEACTIONS": "Proaktive tiltak",
index 2c1c73a..0f25c24 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Pole obowiązkowe",
       "PRIVATEKEY_REQUIRED": "Pole obowiązkowe",
       "PROJECTID_REQUIRED": "Pole obowiązkowe",
-      "VIDAOOTOPIC_REQUIRED": "Pole obowiązkowe",
-      "EMAIL_ACCOUNT_REQUIRED": "Pole obowiązkowe"
+      "VIDAOOTOPIC_REQUIRED": "Pole obowiązkowe"
     },
     "CM_FIELD": "Pole Contact Manager",
     "CHATPROACTIVEACTIONS": "Działania proaktywne",
index 121f315..ab52aee 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
       "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
       "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório",
-      "EMAIL_ACCOUNT_REQUIRED": "Campo obrigatório"
+      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório"
     },
     "CM_FIELD": "Contact Manager Field",
     "CHATPROACTIVEACTIONS": "Ações proativas",
index efce015..157d761 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
       "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
       "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório",
-      "EMAIL_ACCOUNT_REQUIRED": "Campo obrigatório"
+      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório"
     },
     "CM_FIELD": "Campo Contact Manager",
     "CHATPROACTIVEACTIONS": "Ações proativas",
index e552477..f291e64 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Обязательное поле",
       "PRIVATEKEY_REQUIRED": "Обязательное поле",
       "PROJECTID_REQUIRED": "Обязательное поле",
-      "VIDAOOTOPIC_REQUIRED": "Обязательное поле",
-      "EMAIL_ACCOUNT_REQUIRED": "Обязательное поле"
+      "VIDAOOTOPIC_REQUIRED": "Обязательное поле"
     },
     "CM_FIELD": "Контактное поле Менеджер",
     "CHATPROACTIVEACTIONS": "Профилактические меры",
index f592afb..353f1c9 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Obligatoriskt fält",
       "PRIVATEKEY_REQUIRED": "Obligatoriskt fält",
       "PROJECTID_REQUIRED": "Obligatoriskt fält",
-      "VIDAOOTOPIC_REQUIRED": "Obligatoriskt fält",
-      "EMAIL_ACCOUNT_REQUIRED": "Obligatoriskt fält"
+      "VIDAOOTOPIC_REQUIRED": "Obligatoriskt fält"
     },
     "CM_FIELD": "Kontakthanterarfältet",
     "CHATPROACTIVEACTIONS": "Proaktiva åtgärder",
index c2ac125..5bca72d 100644 (file)
       "CLIENTEMAIL_REQUIRED": "Zorunlu alan",
       "PRIVATEKEY_REQUIRED": "Zorunlu alan",
       "PROJECTID_REQUIRED": "Zorunlu alan",
-      "VIDAOOTOPIC_REQUIRED": "Zorunlu alan",
-      "EMAIL_ACCOUNT_REQUIRED": "Zorunlu alan"
+      "VIDAOOTOPIC_REQUIRED": "Zorunlu alan"
     },
     "CM_FIELD": "Kişi Yöneticisi Alan",
     "CHATPROACTIVEACTIONS": "Proaktif Eylemler",
index 9ce9db0..af9f76a 100644 (file)
       "CLIENTEMAIL_REQUIRED": "必填项",
       "PRIVATEKEY_REQUIRED": "必填项",
       "PROJECTID_REQUIRED": "必填项",
-      "VIDAOOTOPIC_REQUIRED": "必填项",
-      "EMAIL_ACCOUNT_REQUIRED": "必填项"
+      "VIDAOOTOPIC_REQUIRED": "必填项"
     },
     "CM_FIELD": "联系人管理器字段",
     "CHATPROACTIVEACTIONS": "积极主动的行动。",
index 4fbe7b5..7d07cf2 100644 (file)
       "CLIENTEMAIL_REQUIRED": "必填項",
       "PRIVATEKEY_REQUIRED": "必填項",
       "PROJECTID_REQUIRED": "必填項",
-      "VIDAOOTOPIC_REQUIRED": "必填項",
-      "EMAIL_ACCOUNT_REQUIRED": "必填項"
+      "VIDAOOTOPIC_REQUIRED": "必填項"
     },
     "CM_FIELD": "Contact Manager 欄位",
     "CHATPROACTIVEACTIONS": "預防措施",
diff --git a/public/app/main/apps/contactmanager/i18n/hu.json b/public/app/main/apps/contactmanager/i18n/hu.json
deleted file mode 100644 (file)
index ae09490..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-{
-  "CONTACTMANAGER": {
-    "SELECT_TAG": "Select tags",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "USERID": "Recall Agent ID",
-    "PRIORITY": "Priority",
-    "MOTIONDIALER": "Motion Bull",
-    "IMPORT_CONTACTS": "Import Contacts",
-    "PREFIX": "Dial Prefix",
-    "VOICEQUEUEID": "VoiceQueue ID",
-    "CAMPAIGNID": "Campaign ID",
-    "STATE": "State",
-    "NAME": "Name",
-    "LISTS": "Lists",
-    "UNIQUEID": "Unique Id",
-    "STATUS": "Status",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MOTION_BULL": "Motion Bull",
-    "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper History",
-    "SCHEDULEDAT": "Scheduled At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_LIST": "Edit List",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_LIST": "Delete List",
-    "DELETE_HOPPER": "Delete Hopper",
-    "RELOAD": "Reload",
-    "NO_COMPANIES": "No Company",
-    "NO_AVAILABLE_ITEMS": "No Available Items",
-    "ADD": "Add",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "CLICKTOACTION_REQUIRED": "Mandatory field",
-      "ACTIONTYPE_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on"
-    },
-    "DESCRIPTION": "Description",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositions",
-    "VOICEDISPOSITIONS": "Voice Dispositions",
-    "NEW_VOICEDISPOSITION": "New Voice Disposition",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "ADD_LIST": "Add List",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "COMPANIES": "Companies",
-    "EDIT_COMPANY": "Edit Company",
-    "DELETE_COMPANY": "Delete Company",
-    "PHONE": "Phone",
-    "EMAIL": "Email",
-    "ADD_COMPANY": "Add Company",
-    "CONTACTS": "Contacts",
-    "NEW_LIST": "New List",
-    "FIRSTNAME": "First Name",
-    "LASTNAME": "Last Name",
-    "LIST": "List",
-    "COMPANY": "Company",
-    "ADD_CONTACT": "Add Contact",
-    "EDIT_CONTACT": "Edit Contact",
-    "MERGE_CONTACT": "Merge Contact",
-    "DUPLICATE_CONTACT": "Duplicate Contact",
-    "DELETE_CONTACT": "Delete Contact",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "DETAIL": "Detail",
-    "PERSONAL_INFO": "Personal Info",
-    "MOBILE": "Mobile",
-    "FAX": "Fax",
-    "TAGS": "Tags",
-    "SHOW_ALL_FIELDS": "Show all fields",
-    "FEWER_FIELDS": "Show less fields",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "DELETE": "Delete",
-    "DELETE_ALL": "Delete All",
-    "CONTACTMANAGER": "Contacts Manager",
-    "ID": "Id",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CUSTOMFIELDS": "Custom Fields",
-    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
-    "ADD_TAG": "Add Tag",
-    "NO_TAG": "No Tags",
-    "ALIAS": "Alias",
-    "CLICKTOACTION": "Click to action",
-    "ACTIONTYPE": "Action type",
-    "TYPE": "Type",
-    "VALUE": "Value",
-    "ADD_CUSTOMFIELD": "Add Custom Field",
-    "EDIT_CUSTOMFIELD": "Edit Custom Field",
-    "DELETE_CUSTOMFIELD": "Delete Custom Field",
-    "NEW_COMPANY": "New Company",
-    "NEW_CONTACT": "New Contact",
-    "NEW_TAG": "New Tag",
-    "UPLOAD_CONTACTS": "Upload Contacts",
-    "FINISH": "Finish",
-    "SUCCESS": "Success",
-    "FAILURE": "Failure",
-    "ALL_CONTACTS": "All Contacts",
-    "NEW_CUSTOMFIELD": "New Custom Field",
-    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
-    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "VAT": "VAT",
-    "COMPANYID": "Company ID",
-    "WEBSITE": "Website",
-    "EMAIL_DOMAIN": "Email Domain",
-    "ADDRESS": "Address",
-    "POSTAL_CODE": "Postal Code",
-    "SHIPMENTADDRESS": "Shipment Address",
-    "COPY_CONTACT": "Copy Contact",
-    "GOTOCONTACTS_LIST": "Show Contacts",
-    "GOTOCONTACTS_COMPANY": "Show Contacts",
-    "ADD_AGENT_TO_LIST": "Add Agent to List",
-    "AGENTADD_LIST": "Add Agents to List",
-    "NO_AVAILABLE_INFO": "No available info",
-    "NONE": "None",
-    "ALL": "All",
-    "FULLNAME": "Full Name",
-    "CHECK_DUPLICATES": "Check Duplicates",
-    "DUPLICATES": "Duplicates",
-    "UPLOAD_CSV": "Upload CSV",
-    "TAG": "Tag",
-    "UPLOAD": "Upload",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "DATE_OF_BIRTH": "Birthdate",
-    "DATEOFBIRTH": "Birthdate",
-    "NOTES": "Notes",
-    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
-    "GOTO_LIST": "Show Contacts",
-    "GOTO_COMPANY": "Show Contacts",
-    "REQUIRED": "Required",
-    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
-    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
-    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
-    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
-    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
-    "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessions",
-    "AGENT": "Agent",
-    "PROJECT": "Project",
-    "SELECT_LIST": "Select a list",
-    "SELECT_COMPANY": "Select a company",
-    "SELECT_TAGS": "Select one or more tags",
-    "HELP": {
-      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
-      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "SOCIAL": "Social",
-    "ROW": "Row",
-    "EXPORT_ERRORS": "Export Errors",
-    "UPLOAD_COMPLETED": "Upload Completed",
-    "STOP": "Stop",
-    "SELECT_FILE": "Select File",
-    "BILLINGINFORMATION": "Billing Information",
-    "FLATDISCOUNT": "Company Discount",
-    "EUROPE": "Europe",
-    "ISOCODE": "ISO National Code",
-    "VATNUMBER_CF": "Codice Fiscale/VAT",
-    "PIVA": "VAT Number",
-    "SDICODE": "SDI Code",
-    "EXPIREDAY": "Expiration Days",
-    "INVOICEARTICLE": "Law Articles",
-    "PAYMENTMETHOD": "Payment Method",
-    "SOCIAL_CAPITAL": "Share Capital",
-    "COMPANY_FISCAL_TYPE": "Company Fiscal Type",
-    "RELATIONSHIP": "Relationship ...",
-    "RELATIONSHIPCOMPANY": " ... with",
-    "CREATE": "Create",
-    "RECALLME": "Recall Me",
-    "NOTIFICATIONS": {
-      "NO_DATA_ERROR": "Unable to retrieve any data",
-      "INTERACTION_OPEN_ERROR": "Unable to open the interaction",
-      "ACCOUNTS_GET_ERROR": "Unable to retrieve any {{channel}} account",
-      "JSCRIPTY_GET_ERROR": "Unable to retrieve any Jscripty project"
-    }
-  }
-}
index b0683a9..7a77010 100644 (file)
     "ATTENTION": "Attention",
     "SOCIAL": "Social",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Select Status",
     "SELECT_ACCOUNT": "Select Account",
index 5e4aa5f..dbfb7c7 100644 (file)
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
     "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
     "AGENT_PRESENCE": "Bereitschaftsstatus",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 1851427..f0ce997 100644 (file)
     "ATTENTION": "Attention",
     "SOCIAL": "Social",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Select Status",
     "SELECT_ACCOUNT": "Select Account",
index e584f60..a52a198 100644 (file)
     "ATTENTION": "Attention",
     "SOCIAL": "Social",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Select Status",
     "SELECT_ACCOUNT": "Select Account",
diff --git a/public/app/main/apps/dashboards/i18n/hu.json b/public/app/main/apps/dashboards/i18n/hu.json
deleted file mode 100644 (file)
index f0ce997..0000000
+++ /dev/null
@@ -1,576 +0,0 @@
-{
-  "DASHBOARDS": {
-    "VISIBILITY": "Visibility",
-    "PUBLIC": "Public",
-    "PRIVATE": "Private",
-    "PUBLIC_INTERACTION": "The interaction is public",
-    "LOST_CONNECTION": "Experiencing network connectivity issues. Please check your internet connection.",
-    "SCHEDULED_CALLS": "Scheduled Calls",
-    "DOWNLOAD": "Download",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "UNMANAGED_RATE": "Unmanaged Rate",
-    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
-    "VOICE_WAITING": "WAITING",
-    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
-    "VOICE_TALKING": "TALKING",
-    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
-    "VOICE_ANSWERED": "ANSWERED",
-    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
-    "VOICE_ABANDONED": "ABANDONED",
-    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
-    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
-    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
-    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
-    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
-    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
-    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
-    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
-    "VOICE_ANSWER_RATE": "ANSWER RATE",
-    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
-    "VOICE_ABANDON_RATE": "ABANDON RATE",
-    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
-    "VOICE_UNMANAGED": "UNMANAGED",
-    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
-    "ABANDONED": "Abandoned",
-    "ABANDONED_TEXT": "Abandoned Interactions",
-    "ABANDONED_RATE": "Abandoned Rate",
-    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
-    "TOTAL_OFFERED": "Total Offered",
-    "TOTAL_OFFERED_TEXT": "Offered Interactions",
-    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
-    "MANAGED_RATE": "Managed Rate",
-    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "No disposition set",
-    "AGENTS": "Agents",
-    "TRANSFER": "Transfer",
-    "NO_DATA_AVAILABLE": "No data available",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "ME": "Me",
-    "CURRENTLY_IN_USE_BY": "Currently in use by",
-    "NOTAVAILABLE": "Not available",
-    "CLICKRELOAD": "New abandoned calls! Reload please",
-    "ASSIGNTO": "Assign to",
-    "SELECT_QUEUE": "Select Queue",
-    "SELECT_CAMPAIGN": "Select Queue",
-    "FREE": "Free",
-    "RESERVED": "Reserved",
-    "QUEUECALLEREXITREASON": "Reason",
-    "QUEUECALLEREXITAT": "Dropped",
-    "LASTASSIGNEDTO": "Last Assigned To",
-    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
-    "ABANDONAT": "Abandoned",
-    "QUEUE": "Queue",
-    "SELECT_SUBSTATUS": "Select Substatus",
-    "READ": "Read",
-    "UNREAD": "Unread",
-    "SELECT_READ_UNREAD": "Select Read/Unread",
-    "SELECT_AGENT": "Select Agent",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
-    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
-    "CHANNEL_QUEUE": "Queue",
-    "CHANNEL_FROM": "From",
-    "LOADING_INTERACTION": "We are loading the interaction...",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
-    "AUGUST": "August",
-    "SEPTEMBER": "September",
-    "OCTOBER": "October",
-    "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "MON": "Mon",
-    "TUE": "Tue",
-    "WED": "Wed",
-    "THU": "Thu",
-    "FRI": "Fri",
-    "SAT": "Sat",
-    "SUN": "Sun",
-    "DELETE": "Delete",
-    "LAST_3_DAYS": "Last 3 Day",
-    "LAST_YEAR": "Last Year",
-    "THIS_YEAR": "This Year",
-    "LAST_MONTH": "Last Month",
-    "THIS_MONTH": "This Month",
-    "LAST_WEEK": "Last Week",
-    "THIS_WEEK": "This Week",
-    "YESTERDAY": "Yesterday",
-    "TODAY": "Today",
-    "SELECT_DATE": "Select Start Date",
-    "HOME": "Home",
-    "SET_AS": "Set As",
-    "PENDING": "Pending",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "TAGS": "Tags",
-    "SELECT_TAG": "Select Tag",
-    "TYPE": "Type",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "CALLERID": "Caller ID",
-    "END_AT": "End At",
-    "DURATION": "Duration",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "NOT_ASSIGNED": "Not Assigned",
-    "UNKNOWN": "Unknown",
-    "SELECT_USER": "Select User",
-    "LAST_MESSAGE": "Last message",
-    "USER": "User",
-    "RATING": "Rating",
-    "FEEDBACK": "Feedback",
-    "SUBJECT": "Subject",
-    "CUSTOMER_IP": "Originating IP Address",
-    "REFERER": "Referer",
-    "ACCOUNT": "Account",
-    "WEBSITE": "Website",
-    "AGENT": "Agent",
-    "CREATED_AT": "Created At",
-    "CLOSED_AT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CONTACT": "Contact",
-    "INTERACTION": "Interaction",
-    "BROWSER_NAME": "Browser Name",
-    "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Operating System Name",
-    "OS_VERSION": "Operating System Version",
-    "DEVICE_MODEL": "Device Model",
-    "DEVICE_VENDOR": "Device Vendor",
-    "DEVICE_TYPE": "Device Type",
-    "RECALLME": "Recall Me",
-    "DROP_RATE": "Drop Rate",
-    "DROPPED": "Dropped",
-    "DROPPED_TEXT": "Dropped Queue Calls",
-    "DETAIL": "Detail",
-    "MOTION_BULL": "Motion Bull",
-    "LIMITED": "Limited",
-    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
-    "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Recordings",
-    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
-    "ORIGINATED": "Originated",
-    "ORIGINATED_TEXT": "Queue Calls Originated",
-    "UPDATE": "Update",
-    "MORE": "More",
-    "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Dispose",
-    "QUEUES": "Queues",
-    "DIALER_CALL": "Dialer Call",
-    "ELAPSED_TIME": "Elapsed Time",
-    "EDIT": "Edit",
-    "MERGE": "Merge",
-    "DUPLICATE": "Duplicate",
-    "UNIQUEID": "Uniqueid",
-    "AUTOCLOSE": "Automatically close contact tab after disposal",
-    "CAMPAIGN": "Campaign",
-    "NONE": "None",
-    "NAME": "Name",
-    "ANSWER_MACHINE": "Answer Machine",
-    "INTERESTED": "Interested",
-    "NOT_INTERESTED": "Not Interested",
-    "PERSONAL_INFO": "Personal Info",
-    "SOLD": "Sold",
-    "SPECIAL": "Special",
-    "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reschedule",
-    "FIRSTNAME": "Firstname",
-    "LASTNAME": "Lastname",
-    "MOBILE": "Mobile",
-    "DATE_OF_BIRTH": "Birthdate",
-    "COMPANY": "Company",
-    "TAG": "Tag",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Address",
-    "POSTALCODE": "Postal Code",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "GENERAL": "General",
-    "VOICE": "Voice",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
-    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
-    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "INBOUND_ANSWERED": "Answered",
-    "OUTBOUND_ANSWERED": "Answered",
-    "AVG_HOLD_TIME": "Average Hold Time",
-    "INBOUND_ANSWER_RATE": "Answer Rate",
-    "OUTBOUND_ANSWER_RATE": "Answer Rate",
-    "ABANDON_RATE": "Abandon Rate",
-    "UNMANAGED": "Unmanaged",
-    "TOTAL": "Total",
-    "TOT_DURATION": "Total Duration",
-    "AVG_DURATION": "Average Duration",
-    "HELP": {
-      "MANDATORY_DISPOSITION_ENABLED": "Mandatory disposition enabled for this account",
-      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
-      "WAITING": "The total number of Waiting Interactions",
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "ABANDONED": "The total number of Abandoned Interactions",
-      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
-      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
-      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
-      "MANAGED_RATE": "The Managed Rate of all the Interactions",
-      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
-      "UNMANAGED": "The total number of Unmanaged Interactions",
-      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
-      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
-      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
-      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
-      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned + unmanaged in the last queue of the flow). Note that the calls which enter in an IVR and not in a queue, will not be considered",
-      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
-      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
-      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
-      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
-      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
-      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
-      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
-      "DROP_RATE": "The Drop Rate of all the Queue Calls",
-      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
-      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
-      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
-      "TOTAL": "The total number of Outbound Calls",
-      "TOT_DURATION": "The total duration of all the Outbound Calls",
-      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
-      "EXACT_MATCH_FILTER": "Search for an exact match",
-      "LIKE_FILTER": "Search for the specified pattern"
-    },
-    "ERRORS": {
-      "CAMPAIGN_REQUIRED": "Mandatory field",
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "FAILED_INITIALIZATION": "Error during initialization"
-    },
-    "NO_AVAILABLE_INFO": "No available info",
-    "WELCOME_TO_MOTION": "Welcome to Motion",
-    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
-    "ADD": "Add",
-    "CONTACTMANAGER": "Contact Manager",
-    "DASHBOARD": "Dashboard",
-    "EDIT_CONTACT": "Edit contact",
-    "EMAIL": "Email",
-    "FULLNAME": "Fullname",
-    "CREATEDAT": "Created At",
-    "LIST": "List",
-    "NEW_CONTACT": "New Contact",
-    "PHONE": "Phone",
-    "SAVE": "Save",
-    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
-    "CONTACTS": "Contacts",
-    "MYCONTACTS": "My Contacts",
-    "ADD_CONTACT": "Add Contact",
-    "RELOAD": "Reload",
-    "WAITING_TEXT": "Waiting Interactions",
-    "TALKING_TEXT": "Active Queue Calls",
-    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
-    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
-    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
-    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
-    "UNMANAGED_TEXT": "Unmanaged Interactions",
-    "TOTAL_TEXT": "Total Outbound Calls",
-    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
-    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
-    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
-    "CONTACT_INFO": "Contact Info",
-    "CLOSE_AND_DISPOSE": "Close and dispose",
-    "DISPOSITIONS": "Dispositions",
-    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
-    "ACCEPT": "Accept",
-    "REJECT": "Reject",
-    "CLOSED": "Closed",
-    "INFO": "Info",
-    "NOTE": "Note",
-    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
-    "ATTENTION": "Attention",
-    "SOCIAL": "Social",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Open",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "SELECT_ACCOUNT": "Select Account",
-    "SELECT_WEBSITE": "Select Website",
-    "ALL": "All",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "OPEN": "Open",
-    "SHOW": "Show",
-    "SHOW_DETAILS": "Show Details",
-    "HIDE_DETAILS": "Hide Details",
-    "EXTERNAL_URL": "External Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "No Whatsapp Account available",
-    "SELECT_DATE_RANGE": "Select Date Range",
-    "CLEAR": "Clear",
-    "CALL_NUMBER": "Call",
-    "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Call properly saved",
-    "CALL_DISPOSED": "Call properly disposed",
-    "CUSTOMER_PORT": "Originating TCP Port",
-    "INTERACTION_CLOSED": "Interaction properly closed",
-    "INTERACTION_DISPOSED": "Interaction properly disposed",
-    "INTERACTION_CLOSED_DISPOSED": "Interaction properly closed and disposed",
-    "SELECT_ALL": "Select all",
-    "ASSIGNED_TO_OTHERS": "Assigned to others",
-    "ID": "Id",
-    "CHAT_INTERACTIONS": "Chat Interactions",
-    "MAIL_INTERACTIONS": "Email Interactions",
-    "SMS_INTERACTIONS": "SMS Interactions",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel Interactions",
-    "FAX_INTERACTIONS": "Fax Interactions",
-    "DRAFT": "Draft",
-    "DRAFT_SAVE_WARNING_TITLE": "Overwrite existing draft?",
-    "DRAFT_SAVE_WARNING_MESSAGE": "There is already a draft saved for this interaction. Are you sure you want to overwrite it?",
-    "OVERWRITE": "Overwrite",
-    "CANCEL": "Cancel",
-    "UNTITLED": "Untitled",
-    "SAVE_AS_DRAFT": "Save as draft",
-    "UPDATE_DRAFT": "Update draft",
-    "NO_AVAILABLE_INTERACTION": "No available interaction",
-    "DOSSIERS": "Dossiers",
-    "DOSSIER": "Dossier",
-    "DOSSIER_INFO": "Information",
-    "SELECT_COMPANY": "Select Company",
-    "DOSSIERNAME": "Dossier Name",
-    "OPENDATE": "Open Date",
-    "ALL_COMPANIES": "All Companies",
-    "SELECT_WORKFLOW": "Select Workflow",
-    "WORKFLOW": "Select Workflow",
-    "SELECT_WORKFLOWSTEPS": "Select Workflow State",
-    "ALL_WORKFLOW": "All Workflow",
-    "STATE": "State",
-    "STEP": "Step",
-    "NEW_DOSSIER": "New Dossier",
-    "PRICELIST": "Price List",
-    "PRODUCTFILTERNAME": "Filter Name",
-    "PRODUCTNAME": "Product",
-    "PRODUCTINQUOTATION": "PRODUCT DETAILS",
-    "REQUEST": "REQUEST",
-    "QUOTATION": "QUOTATION",
-    "DOSSIERID": "Dossier ID",
-    "QUOTATIONNAME": "Quotation Name",
-    "QUOTATIONNOTES": "Quotation Notes",
-    "QUOTATIONSTATUS": "State",
-    "REQUESTNAME": "Request Name",
-    "REQUESTNOTES": "Request Notes",
-    "ALL_STEP": "All",
-    "UPDATED_AT": "Modified on",
-    "BY": "By",
-    "ORDER": "Order",
-    "PROFORMA": "PROFORMA",
-    "INVOICE": "INVOICE",
-    "REQUESTID": "Request",
-    "QUOTATIONID": "Offer",
-    "ORDERID": "Order",
-    "PRICELISTNAME": "Price List",
-    "PRODUCTCODE": "Product Code",
-    "PRICELISTNETPRICE": "Net Price",
-    "PRICELISTDISCOUNT": "Price list discount",
-    "QUOTATIONQTY": "Quantity",
-    "QUOTATIONTAX": "Tax",
-    "QUOTATIONPROFORMAID": "Proforma ID",
-    "QUOTATIONINVOICEID": "Invoice ID",
-    "QUOTATIONDISCOUNT": "Quotation Discount",
-    "ORDER_INFO": "Order",
-    "REQUEST_INFO": "Request",
-    "QUOTATION_INFO": "Quotation",
-    "ORDERCLIENTCODE": "Customer Code",
-    "ORDERNOTES": "Note",
-    "PROFORMANAME": "Proforma name",
-    "AGENTFULLNAME": "Agent",
-    "PROFORMANOTES": "Note",
-    "PRODUCTINPROFORMA": "Products in proforma",
-    "INVOICENAME": "Invoice Name",
-    "INVOICENOTES": "Note",
-    "DOSSIERNOTES": "Note",
-    "QUOTATIONTOTALPRICE": "Total net",
-    "QUOTATIONTOTALTAX": "Total tax",
-    "PROFORMA_INFO": "Proforma",
-    "PROFORMAID": "Id Proforma",
-    "PRICESALELISTNETPRICE": "Prezzo listino",
-    "PROFORMASTATUS": "State",
-    "INVOICESTATUS": "State",
-    "NO_PRODUCTINVOICE_AVAILABLE": "No product",
-    "INVOICEID": "Invoice",
-    "PRODUCTNOTE": "Note",
-    "INVOICE_INFO": "Invoice",
-    "COMPANYSTREET": "Address",
-    "COMPANYCITY": "City",
-    "COMPANYPOSTALCODE": "Postal Code",
-    "COMPANYCOUNTRY": "Country",
-    "COMPANYFAX": "Fax",
-    "COMPANYVAT": "Fiscal Code/VAT",
-    "COMPANYPHONE": "Telephone",
-    "COMPANYEMAIL": "Email",
-    "NOTES": "Note",
-    "QUOTATIONPRODUCTNOTE": "Product Note",
-    "QUOTATIONVAT": "VAT",
-    "AUTOPROFORMA": "SELF-PROFORMA",
-    "AUTOINVOICE": "SELF-INVOICE",
-    "MOVEASSET": "ASSET",
-    "ORDERSTATUS": "State",
-    "QUOTATIONTOTALS": "Total",
-    "QUOTATIONTOTAL": "TOTAL",
-    "PRODUCTTYPE": "Type",
-    "PRODUCTSUBSCRIPTION": "Duration",
-    "PRODUCTATUNIT": "Unit",
-    "INASSET": "Asset",
-    "PRODUCTININVOICE": "Products on the invoice",
-    "SUBSCRIPTIONS": "CUSTOMER SCHEDULE",
-    "SUBSCRIPTIONNAME": "Subscription",
-    "COMPANYNAME": "Company",
-    "NEXTINVOICE": "Next Invoice",
-    "SUBSCRIPTIONDETAIL": "Detail",
-    "PRODUCTDESCRIPTION": "Description",
-    "NETPRICE": "Price",
-    "DISCOUNT": "Discount",
-    "TAX": "Tax",
-    "ATTENDACELASTINVOICE": "Last invoice",
-    "ATTENDACENEXTINVOICE": "Next invoice",
-    "SELECT_PRODUCT": "Select product",
-    "SELECT_PRODUCTTYPE": "Select type",
-    "ALL_PRODUCTS": "All",
-    "ALL_STATUS": "All",
-    "PAYMENT_INFO": "Payment information",
-    "PAYMENTMETHOD": "Payment methods",
-    "PAYMENT": "Payment",
-    "DETAILS": "Details",
-    "INVOICEDETAILS": "INVOICE DETAILS",
-    "QUANTITY": "Quantity",
-    "MANAGESALES": "Subscriptions",
-    "ACCOUNTINGDOC": "Accounting",
-    "INVOICES": "INVOICES",
-    "PROFORMAS": "PROFORMA",
-    "PAYMENTS": "PAYMENTS",
-    "SELECT_PERIOD": "Select range",
-    "NO_PRODUCTPROFORMA_AVAILABLE": "No data available",
-    "NO_PRODUCTPRICELIST_AVAILABLE": "No data available",
-    "PROFORMAAUTHORIZED": "Authorized proforma",
-    "ADD_PRODUCTPRICELIST": "ADD PRODUCT",
-    "DELETE_PRODUCT": "Delete Product",
-    "AUTHORIZED": "AUTHORIZED",
-    "INVOICEDISCOUNT": "Discount",
-    "DEPOSIT": "DEPOSIT",
-    "BALANCE": "BALANCE",
-    "PRODUCTS": "PRODUCTS",
-    "INVOICENOPRODUCTDESCRIPTION": "Description on the invoice",
-    "INVOICENOPRODUCTAMOUNT": "Amount",
-    "INVOICENOTAXAMOUNT": "TAX",
-    "INVOICENOPRODUCTSAVE": "Save",
-    "INVOICENOPRODUCTUPDATE": "Update",
-    "PDFPROFORMA": "PDF",
-    "PDFINVOICE": "PDF",
-    "PAIDANDEXPIRED": "Payment",
-    "CREDITNOTE": "CREDIT NOTE",
-    "CREDITNOTE_INFO": "Credit Note",
-    "MOVECREDITNOTE": "SELF-CREDIT NOTE",
-    "CREDITNOTEDETAILS": "Credit Note Detail",
-    "PDFCREDITNOTE": "PDF",
-    "CREDITINOTENAME": "Name",
-    "TOTALPAYMENTS": "Total payments",
-    "PROFORMADETAILS": "Details",
-    "CREATIONDATE": "Created at",
-    "STARTDATE": "Invoice Date",
-    "ENDDATE": "Expiry Date",
-    "NUMBER": "Number",
-    "PRODUCTPRICE": "Price",
-    "PRODUCTTAX": "Tax percentage",
-    "PRODUCTQTY": "Quantity",
-    "UPDATE_PRODUCT": "Update Product",
-    "QUOTATIONPRODUCTTYPE": "Type",
-    "QUOTATIONUNIT": "Unit",
-    "QUOTATIONSUBSCRIPTION": "Duration",
-    "SELECT_PERIOD_CREATION": "Select Creation Date",
-    "SELECT_PERIOD_START": "Select Date",
-    "SELECT_PERIOD_EXPIRE": "Select Expiry Date",
-    "NEW_COMPANY": "New",
-    "COMPANIES": "Companies",
-    "PAYED_AY": "Payed on",
-    "CLONEPROFORMA": "Clone",
-    "COMPANYDESC": "Description",
-    "COMPANYNATION": "Nation",
-    "GRAPHINVOICES": "Invoice emission chart",
-    "YEARS": "Years",
-    "FROM": "From",
-    "TO": "To",
-    "INVOICEEMITED": "Issued",
-    "INVOICEPAYED": "Payed",
-    "INVOICETOTAL": "Total",
-    "CHOOSE": "Choose",
-    "ADVANCED_SEARCH": "Advanced Search",
-    "NEW_CONDITION": "New Condition",
-    "SELECT_FIELD": "Select field",
-    "SELECT_OPERATOR": "Select operator",
-    "VALUE": "Value",
-    "VALUES": "Values",
-    "APPLY": "Apply",
-    "MEET_ALL_CONDITIONS": "Meet all conditions",
-    "MEET_ANY_CONDITIONS": "Meet at least one condition",
-    "EQUALS": "Equals",
-    "IS_NOT_EQUAL": "Does not equal",
-    "IS_AMONG": "Is among",
-    "IS_NOT_AMONG": "Is not among",
-    "IS_GREATER_THAN": "Is greater than",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "Is greater than or equal to",
-    "IS_LESS_THAN": "Is less than",
-    "IS_LESS_THAN_OR_EQUAL_TO": "Is less than or equal to",
-    "IS_BETWEEN": "Is between",
-    "CONTAINS": "Contains",
-    "STARTS_WITH": "Starts with",
-    "ENDS_WITH": "Ends with",
-    "STARTING_DATE": "Starting date",
-    "ENDING_DATE": "Ending date",
-    "STARTING_VALUE": "Starting value",
-    "ENDING_VALUE": "Ending value",
-    "VALUE_RANGE_CHECK": "Value must be greater than",
-    "AND": "And",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "ELAPSED_ANSWERED": "Elapsed time since call started",
-    "ELAPSED_DISPOSED": "Elapsed time since call ended",
-    "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector Interactions",
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "VIDAOOSESSION": "Start Video Call",
-    "SELECT_CONTACT": "Select contact",
-    "SELECT": "Select",
-    "LAST_UPDATED": "Last updated",
-    "MATCHING_FIELD": "Matching field",
-    "MULTIPLE_CONTACTS_FOUND": "Multiple contacts found for number",
-    "WHICH_ONE_TO_USE": "Which one do you want to use?",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Your license is about to expire! Please contact your Administrator",
-    "NO_RESULTS_AVAILABLE": "No results available",
-    "AVAILABLE": "Available",
-    "AGENT_PRESENCE": "Agent Presence",
-    "SELECT_TEAM": "Select Team",
-    "NOTIFICATIONS": {
-      "TRANSFER_AGENT_EXECUTED": "Transfer to agent successfully executed",
-      "TRANSFER_QUEUE_EXECUTED": "Transfer to queue successfully executed"
-    }
-  }
-}
index 2944a52..7f93599 100644 (file)
     "SELECT_STATUS": "Select Status",
     "ALL": "All",
     "CLOSED": "Closed",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "SELECT_ACCOUNT": "Select Account",
     "INTERACTIONS": "Interactions",
     "CONTACT": "Contact",
index bc9aa75..bfa0d7e 100644 (file)
     "SELECT_STATUS": "Select Status",
     "ALL": "All",
     "CLOSED": "Closed",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "SELECT_ACCOUNT": "Select Account",
     "INTERACTIONS": "Interactions",
     "CONTACT": "Contact",
index 7e03440..ffbc857 100644 (file)
     "SELECT_STATUS": "Select Status",
     "ALL": "All",
     "CLOSED": "Closed",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "SELECT_ACCOUNT": "Select Account",
     "INTERACTIONS": "Interactions",
     "CONTACT": "Contact",
diff --git a/public/app/main/apps/fax/i18n/hu.json b/public/app/main/apps/fax/i18n/hu.json
deleted file mode 100644 (file)
index bfa0d7e..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-{
-  "FAX": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "CANNEDANSWERS": "Canned Answers",
-    "FAXCANNEDANSWERS": "Canned Answers",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_FAXCANNEDANSWER": "New Canned Answer",
-    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "TAGS": "Tags",
-    "REPLY": "Reply",
-    "SEND": "Send",
-    "TO": "To",
-    "FROM": "From",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
-    "EDIT_TRUNK": "Edit Trunk",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "EDIT_ACCOUNT": "Edit Fax Account",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
-    "ACCOUNTS": "Accounts",
-    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
-    "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "PAUSE": "Pause",
-    "INFO": "Info",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "DEFAULT_PAUSE": "Default pause",
-    "AGENTADD_QUEUE": "Add Agent to Fax queue",
-    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
-    "UNPAUSE": "End Pause",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "PRIORITY": "Priority",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "EDIT_FAXQUEUE": "Edit Fax Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOP": "Edit GotoP",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "EDIT_QUEUE": "Edit Fax Queue",
-    "EDIT_CLOSE": "Edit Close",
-    "QUEUE": "Queue",
-    "GOTOIF": "GotoIf",
-    "GOTOP": "GotoP",
-    "NOOP": "Noop",
-    "AGENT": "Agent",
-    "NOTES": "Notes",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "REALTIME": "Realtime",
-    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
-    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
-    "NAME": "Name",
-    "FAXQUEUES": "Fax Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause status when in mandatory disposition",
-    "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
-      "MODEM_REQUIRED": "Mandatory Field",
-      "GATEWAY_REQUIRED": "Mandatory Field",
-      "FAXDETECT_REQUIRED": "Mandatory Field",
-      "T38TIMEOUT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "HEADERINFO_REQUIRED": "Mandatory Field",
-      "TRUNK_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "You should specify a pause status when in mandatory disposition"
-    },
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_FAXQUEUE": "Add Fax Queue",
-    "DELETE_FAXQUEUE": "Delete Fax Queue",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_FAXACCOUNT": "Add Fax Account",
-    "EDIT_FAXACCOUNT": "Edit Fax Account",
-    "DELETE_FAXACCOUNT": "Delete Fax Account",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "TRUNK": "Trunk",
-    "LOCALSTATIONID": "Local Station Identifier",
-    "HELP": {
-      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
-      "HEADERINFO": "Outbound Fax Header information",
-      "MODEM": "Modem Type (v17/v27/v29)",
-      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
-      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
-      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
-      "ECM": "Error Connection Mode (ECM)",
-      "MINRATE": "Minimum transfer rate set before transmission",
-      "MAXRATE": "Maximum transfer rate set before transmission",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status for mandatory disposition",
-      "NAME": "Only numbers, letters and specific characters (._) are supported"
-    },
-    "ADVANCED": "Advanced",
-    "ECM": "ECM",
-    "MINRATE": "Min Rate",
-    "MAXRATE": "Max Rate",
-    "MODEM": "Modem",
-    "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
-    "T38TIMEOUT": "T.38 Timeout",
-    "SIP": "Technology",
-    "HEADERINFO": "Header Info",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "FAX": "Fax",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax Dispositions",
-    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
-    "NEW_FAXDISPOSITION": "New Fax Disposition",
-    "ADD_FAXDISPOSITION": "Add Fax Disposition",
-    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
-    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
-    "NEW_FAXQUEUE": "New Fax Queue",
-    "NEW_FAXACCOUNT": "New Fax Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "DELETE": "Delete",
-    "KEY": "Key",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "ALL": "All",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "SELECT_ACCOUNT": "Select Account",
-    "INTERACTIONS": "Interactions",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "UNKNOWN": "Unknown",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
-  }
-}
index 4c1be43..0acdb95 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
     "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
+    "ABOUT": "About",
+    "USEFUL_LINKS": "Useful links",
+    "CONTACT_US": "Contact us"
   }
 }
index 3e3f0ff..173a4b0 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Om",
-    "CONTACT_US": "Kontakt os",
     "HELP": "Hjælp",
-    "USEFUL_LINKS": "Nyttige links"
+    "ABOUT": "Om",
+    "USEFUL_LINKS": "Nyttige links",
+    "CONTACT_US": "Kontakt os"
   }
 }
index 2fb51f7..2ebd41c 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Über",
-    "CONTACT_US": "Kontaktieren Sie uns",
     "HELP": "Hilfe",
-    "USEFUL_LINKS": "Nützliche Links"
+    "ABOUT": "Über",
+    "USEFUL_LINKS": "Nützliche Links",
+    "CONTACT_US": "Kontaktieren Sie uns"
   }
 }
index 4c1be43..0acdb95 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
     "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
+    "ABOUT": "About",
+    "USEFUL_LINKS": "Useful links",
+    "CONTACT_US": "Contact us"
   }
 }
index 4c1be43..0acdb95 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
     "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
+    "ABOUT": "About",
+    "USEFUL_LINKS": "Useful links",
+    "CONTACT_US": "Contact us"
   }
 }
index 59f05c8..c7eed5e 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "در حدود",
-    "CONTACT_US": "تماس با ما",
     "HELP": "کمک کند",
-    "USEFUL_LINKS": "لینک های مفید"
+    "ABOUT": "در حدود",
+    "USEFUL_LINKS": "لینک های مفید",
+    "CONTACT_US": "تماس با ما"
   }
 }
index c5b03de..00d8cb8 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Lisätietoja",
-    "CONTACT_US": "Ota yhteyttä",
     "HELP": "Ohje",
-    "USEFUL_LINKS": "Hyödyllisiä linkkejä"
+    "ABOUT": "Lisätietoja",
+    "USEFUL_LINKS": "Hyödyllisiä linkkejä",
+    "CONTACT_US": "Ota yhteyttä"
   }
 }
index 7288aef..85ac632 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "À propos de",
-    "CONTACT_US": "Contactez-nous",
     "HELP": "Aide",
-    "USEFUL_LINKS": "Liens utiles"
+    "ABOUT": "À propos de",
+    "USEFUL_LINKS": "Liens utiles",
+    "CONTACT_US": "Contactez-nous"
   }
 }
index 4ce9a3f..a0165e8 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "אודות",
-    "CONTACT_US": "צור קשר",
     "HELP": "עזרה",
-    "USEFUL_LINKS": "קישורים שימושיים"
+    "ABOUT": "אודות",
+    "USEFUL_LINKS": "קישורים שימושיים",
+    "CONTACT_US": "צור קשר"
   }
 }
index d5c9048..1de7eb3 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "के बारे में",
-    "CONTACT_US": "संपर्क",
     "HELP": "मदद",
-    "USEFUL_LINKS": "उपयोगी संपर्क"
+    "ABOUT": "के बारे में",
+    "USEFUL_LINKS": "उपयोगी संपर्क",
+    "CONTACT_US": "संपर्क"
   }
 }
diff --git a/public/app/main/apps/help/i18n/hu.json b/public/app/main/apps/help/i18n/hu.json
deleted file mode 100644 (file)
index 4c1be43..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
-    "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
-  }
-}
index 64779bd..06519e2 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contattaci",
     "HELP": "Aiuto",
-    "USEFUL_LINKS": "Link utili"
+    "ABOUT": "About",
+    "USEFUL_LINKS": "Link utili",
+    "CONTACT_US": "Contattaci"
   }
 }
index 302c79f..4863155 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "상세정보",
-    "CONTACT_US": "연락처",
     "HELP": "도움말",
-    "USEFUL_LINKS": "유용한 링크"
+    "ABOUT": "상세정보",
+    "USEFUL_LINKS": "유용한 링크",
+    "CONTACT_US": "연락처"
   }
 }
index fa77f97..2ff5714 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Apie",
-    "CONTACT_US": "Susisiekite su mumis",
     "HELP": "Pagalba",
-    "USEFUL_LINKS": "Naudingos nuorodos"
+    "ABOUT": "Apie",
+    "USEFUL_LINKS": "Naudingos nuorodos",
+    "CONTACT_US": "Susisiekite su mumis"
   }
 }
index 925f1e4..4ccb23e 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Par",
-    "CONTACT_US": "Sazināties ar mums",
     "HELP": "Palīdzība",
-    "USEFUL_LINKS": "Noderīgas saites"
+    "ABOUT": "Par",
+    "USEFUL_LINKS": "Noderīgas saites",
+    "CONTACT_US": "Sazināties ar mums"
   }
 }
index c2a09ec..37c1393 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Over",
-    "CONTACT_US": "Neem contact met ons op",
     "HELP": "Help",
-    "USEFUL_LINKS": "Nuttige links"
+    "ABOUT": "Over",
+    "USEFUL_LINKS": "Nuttige links",
+    "CONTACT_US": "Neem contact met ons op"
   }
 }
index 58c4c33..628eab7 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Om",
-    "CONTACT_US": "Kontakt oss",
     "HELP": "Hjelp",
-    "USEFUL_LINKS": "Nyttige koblinger"
+    "ABOUT": "Om",
+    "USEFUL_LINKS": "Nyttige koblinger",
+    "CONTACT_US": "Kontakt oss"
   }
 }
index 52d2fee..422d57a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Na temat",
-    "CONTACT_US": "Skontaktuj się z nami",
     "HELP": "Pomoc",
-    "USEFUL_LINKS": "Przydatne linki"
+    "ABOUT": "Na temat",
+    "USEFUL_LINKS": "Przydatne linki",
+    "CONTACT_US": "Skontaktuj się z nami"
   }
 }
index 3f58330..f6a6be9 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Sobre",
-    "CONTACT_US": "Contate-Nos",
     "HELP": "Ajuda",
-    "USEFUL_LINKS": "Links Úteis"
+    "ABOUT": "Sobre",
+    "USEFUL_LINKS": "Links Úteis",
+    "CONTACT_US": "Contate-Nos"
   }
 }
index f6d8474..f631947 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Sobre",
-    "CONTACT_US": "Entre em contato conosco",
     "HELP": "Ajudar",
-    "USEFUL_LINKS": "Links úteis"
+    "ABOUT": "Sobre",
+    "USEFUL_LINKS": "Links úteis",
+    "CONTACT_US": "Entre em contato conosco"
   }
 }
index ddd2c68..bd2271b 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "О",
-    "CONTACT_US": "Свяжитесь с нами",
     "HELP": "Справка",
-    "USEFUL_LINKS": "Полезные ссылки"
+    "ABOUT": "О",
+    "USEFUL_LINKS": "Полезные ссылки",
+    "CONTACT_US": "Свяжитесь с нами"
   }
 }
index 5d1f33a..03f33ad 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Om",
-    "CONTACT_US": "Kontakta oss",
     "HELP": "Hjälp",
-    "USEFUL_LINKS": "Användbara länkar"
+    "ABOUT": "Om",
+    "USEFUL_LINKS": "Användbara länkar",
+    "CONTACT_US": "Kontakta oss"
   }
 }
index fb4dc3a..ba43663 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Yaklaşık",
-    "CONTACT_US": "Bize Başvurun",
     "HELP": "Yardım",
-    "USEFUL_LINKS": "Faydalı bağlantılar"
+    "ABOUT": "Yaklaşık",
+    "USEFUL_LINKS": "Faydalı bağlantılar",
+    "CONTACT_US": "Bize Başvurun"
   }
 }
index 5db3e0f..9038cad 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "关于",
-    "CONTACT_US": "联系我们",
     "HELP": "帮助",
-    "USEFUL_LINKS": "有用的链接"
+    "ABOUT": "关于",
+    "USEFUL_LINKS": "有用的链接",
+    "CONTACT_US": "联系我们"
   }
 }
index 507265b..0f300e9 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "關於",
-    "CONTACT_US": "與我們連絡",
     "HELP": "協助",
-    "USEFUL_LINKS": "有用連結"
+    "ABOUT": "關於",
+    "USEFUL_LINKS": "有用連結",
+    "CONTACT_US": "與我們連絡"
   }
 }
index f9429ca..5fa06bb 100644 (file)
@@ -56,7 +56,8 @@
       "EMAIL_REQUIRED": "Mandatory field",
       "TENANTID_REQUIRED": "Mandatory field",
       "CODE_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_REQUIRED": "Mandatory field"
+      "MOTIONPROXYADDRESS_REQUIRED": "Mandatory field",
+      "MODULECREATE_REQUIRED": "Mandatory field"
     },
     "HELP": {
       "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
@@ -71,6 +72,7 @@
       "ADDITIONALSEARCHCONTACT": "Additional field name used to search customer phone number in Contacts",
       "ADDITIONALSEARCHLEAD": "Additional field name used to search customer phone number in Leads"
     },
+    "MODULECREATE": "Module create",
     "CODE": "Developer Console Code",
     "REFRESHTOKEN": "Refresh Token (generated)",
     "ACCOUNT": "Account",
     "ADDITIONALSEARCHLEAD": "Additional Search Lead",
     "PHONECALL": "Phonecall",
     "TASK": "Task",
-    "MODULECREATE": "Module Create"
+    "DYNAMIC365CONTACT": "Contact",
+    "DYNAMIC365NOTHING": "Nothing"
   }
 }
diff --git a/public/app/main/apps/integrations/i18n/hu.json b/public/app/main/apps/integrations/i18n/hu.json
deleted file mode 100644 (file)
index f9429ca..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-{
-  "INTEGRATIONS": {
-    "ZONE": "Zone",
-    "ADVANCED": "Advanced",
-    "MODULE_SEARCH": "Module Search",
-    "MODULE_CREATE": "Module Create",
-    "LEADS": "Lead",
-    "CONTACTS": "Contact",
-    "INTEGRATIONS": "Integrations",
-    "ZENDESKACCOUNTS": "Zendesk Accounts",
-    "ID": "Id",
-    "NAME": "Name",
-    "USERNAME": "Username",
-    "URI": "URL",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
-    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
-    "AUTHTYPE": "Authentication Type",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "EMAIL": "Email",
-    "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
-    "DESCRIPTION": "Description",
-    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "URI_REQUIRED": "Mandatory field",
-      "URI_MUST_VALID_URL": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TOKEN_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
-      "CLIENTID_REQUIRED": "Mandatory field",
-      "CLIENTSECRET_REQUIRED": "Mandatory field",
-      "SECURITYTOKEN_REQUIRED": "Mandatory field",
-      "APIKEY_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "VARIABLENAME_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "CONSUMERKEY_REQUIRED": "Mandatory field",
-      "CONSUMERSECRET_REQUIRED": "Mandatory field",
-      "TOKENSECRET_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "AUTHTOKEN_REQUIRED": "Mandatory field",
-      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
-      "ACCESS_KEY_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "TENANTID_REQUIRED": "Mandatory field",
-      "CODE_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_REQUIRED": "Mandatory field"
-    },
-    "HELP": {
-      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "TICKETTYPE": "Ticket Type",
-      "ZONE": "Choose your geographic zone (US, AU, EU, IN, CN) to activate the domain-specific Zoho Accounts",
-      "CLIENTID": "The specific CLient Id of your application",
-      "CLIENTSECRET": "The specific CLientSecret of your application",
-      "CODE": "The specific code generated through Developer Console",
-      "REFRESHTOKEN": "The automatically generated refresh token used to refresh expired access tokens. Also the access token are automatically generated each time an api is launched.",
-      "LEADID": "Field name used to link Case and Lead objects",
-      "ADDITIONALSEARCHACCOUNT": "Additional field name used to search customer phone number in Accounts",
-      "ADDITIONALSEARCHCONTACT": "Additional field name used to search customer phone number in Contacts",
-      "ADDITIONALSEARCHLEAD": "Additional field name used to search customer phone number in Leads"
-    },
-    "CODE": "Developer Console Code",
-    "REFRESHTOKEN": "Refresh Token (generated)",
-    "ACCOUNT": "Account",
-    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
-    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
-    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
-    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
-    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
-    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
-    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
-    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
-    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
-    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
-    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
-    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
-    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
-    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
-    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
-    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
-    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
-    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
-    "SALESFORCEACCOUNTS": "Salesforce Accounts",
-    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
-    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
-    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
-    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
-    "CLIENTID": "Client ID",
-    "CLIENTSECRET": "Client Secret",
-    "SECURITYTOKEN": "Security Token",
-    "SEARCH_FOR_ANYONE": "Search",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
-    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
-    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
-    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
-    "CONFIGURATIONS": "Configurations",
-    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
-    "NEW_CONFIGURATION": "New Configuration",
-    "ADD_CONFIGURATION": "Add Configuration",
-    "EDIT_CONFIGURATION": "Edit Configuration",
-    "DELETE_CONFIGURATION": "Delete Configuration",
-    "SUBJECTS": "Subjects",
-    "DESCRIPTIONS": "Descriptions",
-    "FIELDS": "Fields",
-    "TAGS": "Tags",
-    "TYPE": "Type",
-    "CONTENT": "Content",
-    "EDIT_SUBJECT": "Edit Subject",
-    "DELETE_SUBJECT": "Delete Subject",
-    "NEW_SUBJECT": "New Subject",
-    "ADD_SUBJECT": "Add Subject",
-    "EDIT_DESCRIPTION": "Edit Description",
-    "DELETE_DESCRIPTION": "Delete Description",
-    "NEW_DESCRIPTION": "New Description",
-    "ADD_DESCRIPTION": "Add Description",
-    "EDIT_FIELD": "Edit Field",
-    "DELETE_FIELD": "Delete Field",
-    "NEW_FIELD": "New Field",
-    "ADD_FIELD": "Add Field",
-    "ADD": "Add",
-    "VOICE": "Voice",
-    "MAIL": "Email",
-    "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "INBOUND_IN_QUEUE": "Inbound in Queue",
-    "OUTBOUND_CALL": "Outbound Call",
-    "VALUE": "Value",
-    "FIELD": "Field",
-    "KEY": "Key",
-    "CHANNEL": "Channel",
-    "DELETE": "Delete",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
-    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
-    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
-    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
-    "INTEGRATION_TAB": "Integration Tab",
-    "NEW_TAB": "New Tab",
-    "DESKACCOUNTS": "Desk Accounts",
-    "EDIT_DESKACCOUNT": "Edit Desk Account",
-    "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Delete Desk Account",
-    "CONSUMERKEY": "Consumer Key",
-    "CONSUMERSECRET": "Consumer Secret",
-    "TOKENSECRET": "Token Secret",
-    "ADD_DESKACCOUNT": "Add Desk Account",
-    "NEW_DESKACCOUNT": "New Desk Account",
-    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
-    "NEW_DESKCONFIGURATION": "New Desk Configuration",
-    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
-    "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
-    "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
-    "ADD_ZOHOACCOUNT": "Add Zoho Account",
-    "NEW_ZOHOACCOUNT": "New Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
-    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
-    "AUTHTOKEN": "Authorization Token",
-    "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Accounts",
-    "VTIGER_USER_NAME": "vTiger User Name",
-    "MODULE_NAME": "vTiger Module Name",
-    "ACCESS_KEY": "vTiger Access Key",
-    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
-    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
-    "TEST_VTIGERACCOUNT": "Test vTiger Account",
-    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
-    "NEW_VTIGERACCOUNT": "New vTiger Account",
-    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
-    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
-    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
-    "FRESHSALESACCOUNTS": "Freshsales Accounts",
-    "EDIT_FRESHSALESACCOUNT": "Edit Freshsales Account",
-    "DELETE_FRESHSALESACCOUNT": "Delete Freshsales Account",
-    "NEW_FRESHSALESACCOUNT": "New Freshsales Account",
-    "ADD_FRESHSALESACCOUNT": "Add Freshsales Account",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "No Freshsales Configurations available",
-    "NEW_FRESHSALESCONFIGURATION": "New Freshsales Configuration",
-    "ADD_FRESHSALESCONFIGURATION": "Add Freshsales Configuration",
-    "EDIT_FRESHSALESCONFIGURATION": "Edit Freshsales Configuration",
-    "DELETE_FRESHSALESCONFIGURATION": "Delete Freshsales Configuration",
-    "TEST_FRESHSALESACCOUNT": "Test Freshsales Account",
-    "SERVICENOWACCOUNTS": "ServiceNow Accounts",
-    "ADD_SERVICENOWACCOUNT": "Add new ServiceNow Account",
-    "EDIT_SERVICENOWACCOUNT": "Edit ServiceNow Account",
-    "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
-    "DELETE_SERVICENOWACCOUNT": "Delete ServiceNow Account",
-    "NEW_SERVICENOWACCOUNT": "New ServiceNow Account",
-    "NEW_SERVICENOWCONFIGURATION": "Create ServiceNow Configuration",
-    "DELETE_SERVICENOWCONFIGURATION": "Delete ServiceNow Configuration",
-    "ADD_SERVICENOWCONFIGURATION": "Add ServiceNow Configuration",
-    "DYNAMICS365ACCOUNTS": "Dynamics365 Accounts",
-    "TENANTID": "Tenant Id",
-    "ADD_DYNAMICS365ACCOUNT": "Add new Dynamics365 Account",
-    "EDIT_DYNAMICS365ACCOUNT": "Edit Dynamics365 Account",
-    "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365 Account",
-    "DELETE_DYNAMICS365ACCOUNT": "Delete Dynamics365 Account",
-    "NEW_DYNAMICS365ACCOUNT": "New Dynamics365 Account",
-    "NEW_DYNAMICS365CONFIGURATION": "Create Dynamics365 Configuration",
-    "DELETE_DYNAMICS365CONFIGURATION": "Delete Dynamics365 Configuration",
-    "ADD_DYNAMICS365CONFIGURATION": "Add Dynamics365 Configuration",
-    "TICKETTYPE": "Ticket Type",
-    "CASE": "Case",
-    "LEADID": "Lead Id",
-    "ADDITIONALSEARCHACCOUNT": "Additional Search Account",
-    "ADDITIONALSEARCHCONTACT": "Additional Search Contact",
-    "ADDITIONALSEARCHLEAD": "Additional Search Lead",
-    "PHONECALL": "Phonecall",
-    "TASK": "Task",
-    "MODULECREATE": "Module Create"
-  }
-}
diff --git a/public/app/main/apps/jscripty/i18n/hu.json b/public/app/main/apps/jscripty/i18n/hu.json
deleted file mode 100644 (file)
index c5e12d7..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-{
-  "JSCRIPTY": {
-    "CLONE_PROJECT": "Clone Project",
-    "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DESCRIPTION": "Description",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format"
-    },
-    "SAVE": "Save",
-    "PROJECTS": "Projects",
-    "ADD_PROJECT": "Add Project",
-    "EDIT_PROJECT": "Edit Project",
-    "DELETE_PROJECT": "Delete Project",
-    "JSCRIPTY": "Jscripty",
-    "ID": "Id",
-    "PROJECT": "Project",
-    "CREATED_AT": "Created At",
-    "NEW_PROJECT": "New Project",
-    "EDIT": "Edit",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "OPEN_CONTACT": "Open Contact",
-    "SENDUNPAUSEONSUBMIT": "Unpause agent on Submit",
-    "HELP": {
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
-      "SENDUNPAUSEONSUBMIT": "At the end of the survey, automatically stop the agent's pause"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "JSCRIPTYSESSIONS": "Project Sessions",
-    "SESSIONS": "Sessions",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MEMBERNAME": "Member Name",
-    "CALLERIDNUM": "Caller Number",
-    "NO_SESSION_AVAILABLE": "No Sessions available",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
-    "ANSWERS": "Answers",
-    "NO_RESULTS_AVAILABLE": "No results available",
-    "TOTAL": "Total",
-    "ANSWER": "Answer",
-    "EXPORT_TO_CSV": "Export to CSV",
-    "NO_ANSWERS_AVAILABLE": "No answers available",
-    "DELETE_SESSION": "Delete Session",
-    "RESET_SESSION": "Reset Session",
-    "YES": "Yes",
-    "NO": "No",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
-    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
-    "SUBMIT": "Submit",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
-    "COMPLETE": "Complete",
-    "SESSIONS_PROJECT": "Go to Sessions"
-  },
-  "mwForm": {
-    "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
-    },
-    "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
-    },
-    "page": {
-      "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
-      },
-      "elements": {
-        "empty": "Empty page"
-      },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
-    },
-    "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
-    },
-    "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
-    },
-    "question": {
-      "types": {
-        "text": {
-          "name": "Short text"
-        },
-        "textarea": {
-          "name": "Long text"
-        },
-        "radio": {
-          "name": "Radio"
-        },
-        "select": {
-          "name": "Select"
-        },
-        "checkbox": {
-          "name": "Checkboxes"
-        },
-        "grid": {
-          "name": "Grid"
-        },
-        "priority": {
-          "name": "Priority"
-        },
-        "division": {
-          "name": "Division"
-        },
-        "number": {
-          "name": "Number"
-        },
-        "date": {
-          "name": "Date"
-        },
-        "datetime": {
-          "name": "Datetime"
-        },
-        "time": {
-          "name": "Time"
-        },
-        "email": {
-          "name": "Email"
-        },
-        "range": {
-          "name": "Range"
-        },
-        "url": {
-          "name": "URL"
-        }
-      },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
-      "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
-      },
-      "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
-      },
-      "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
-      },
-      "grid": {
-        "cellInputType": "Cell input type",
-        "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
-          "number": "Number",
-          "date": "Date",
-          "time": "Time"
-        },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
-      },
-      "range": {
-        "from": "Range from",
-        "to": "to"
-      },
-      "number": {
-        "min": "Min",
-        "max": "Max"
-      },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
-      "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
-      }
-    },
-    "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
-    },
-    "paragraph": {
-      "placeholder": "Enter paragraph text"
-    },
-    "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved"
-    }
-  }
-}
index 6183ea9..7a1ec06 100644 (file)
@@ -61,7 +61,7 @@
     "UNPAUSE": "End Pause",
     "DEFAULT_PAUSE": "Default pause",
     "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Email queue",
+    "AGENTADD_QUEUE": "Add Agent To Email Queue",
     "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "Sms",
diff --git a/public/app/main/apps/mail/i18n/hu.json b/public/app/main/apps/mail/i18n/hu.json
deleted file mode 100644 (file)
index 7a1ec06..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-{
-  "MAIL": {
-    "ADVANCED": "Advanced",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "DOWNLOAD": "Download",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "SEND_AS": "Send as",
-    "NEW_MAILSUBSTATUS": "New Sub Status",
-    "ADD_MAILSUBSTATUS": "Add Sub Status",
-    "MAILSUBSTATUSES": "Email Sub Statuses",
-    "EDIT_MAILSUBSTATUS": "Edit",
-    "DELETE_MAILSUBSTATUS": "Delete",
-    "FONT_FAMILY": "Font Family",
-    "FONT_SIZE": "Font Size",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "ACCEPTED": "Accepted",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
-    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-    "SHOW_ORIGINAL_MESSAGE": "Show original message",
-    "PENDING": "Pending",
-    "SEND_AS_PENDING": "Send as Pending",
-    "SEND_AND_CLOSE": "Send and Close",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add Agent To Email Queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "ACCOUNTS": "Accounts",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
-    "SMTP_STATUS": "SMTP Status",
-    "DISABLED": "Disabled",
-    "CONNECTED": "Connected",
-    "NEVER_VERIFIED": "Never Verified",
-    "ERROR": "Error",
-    "EDIT_ACCOUNT": "Edit Account",
-    "VERIFY_SMTP": "Verify SMTP",
-    "VERIFIED": "Verified",
-    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "REPLY_TYPE": "Reply Type",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "SHOW_AUTOREPLY": "Show Auto Reply",
-    "SHOW_DETAILS": "Show details",
-    "HIDE_DETAILS": "Hide details",
-    "TO": "To",
-    "FROM": "From",
-    "DATE": "Date",
-    "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
-    "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-    "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "REPLY_TYPE_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
-    },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Add Email Queue",
-    "EDIT_MAILQUEUE": "Edit Email Queue",
-    "DELETE_MAILQUEUE": "Delete Email Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SAVE": "Save",
-    "MAILACCOUNTS": "Email Accounts",
-    "EMAIL_ADDRESS": "Email Address",
-    "ADD_MAILACCOUNT": "Add Email Account",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Accounts",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
-    "IMAP": "IMAP",
-    "HOST": "Host",
-    "USERNAME": "Username",
-    "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
-    "SSL": "SSL",
-    "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
-    "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Add Email Disposition",
-    "NEW_MAILDISPOSITION": "New Email Disposition",
-    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
-    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
-    "MAILDISPOSITIONS": "Email Dispositions",
-    "NEW_MAILQUEUE": "New Email Queue",
-    "NEW_MAILACCOUNT": "New Email Account",
-    "NO_AVAILABLE_INFO": "No availables info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "AGENT": "Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
-    "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "ACTIVE": "Active",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
-    "SMTP_HOST": "SMTP Host",
-    "SMTP_PORT": "SMTP Port",
-    "IMAP_HOST": "IMAP Host",
-    "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "KEY": "Key",
-    "SMTPSERVICE": "SMTP Service",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTSADD_QUEUE": "Add agents to Email Queue",
-    "INFO": "Info",
-    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
-  }
-}
index 235afae..97c6fe2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 3bd5ad2..495ea1e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index f150ff2..054564e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index a85d3cb..56d6276 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index bf299e5..0202268 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index be3860b..b934012 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index edbcd90..bbf8e7b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index c3cb181..d5a9a13 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 1170227..043d58e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
diff --git a/public/app/main/apps/marketplace/i18n/hu.json b/public/app/main/apps/marketplace/i18n/hu.json
deleted file mode 100644 (file)
index 312c4ab..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "MARKETPLACE": {
-    "MARKETPLACE": "App Zone",
-    "PLUGINS": "Plugins",
-    "BACK": "Back",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select none",
-    "NAME": "Name",
-    "DESCRIPTION": "Description",
-    "ACTIVE": "Active",
-    "TYPE": "Type",
-    "ICON": "Icon",
-    "ADMINURL": "Admin url",
-    "AGENTURL": "Agent url",
-    "SCRIPTNAME": "Script name",
-    "SCRIPTPATH": "Script path",
-    "SIDEBAR": "Sidebar",
-    "VERSION": "Version",
-    "NO_AVAILABLE_INFO": "No available info",
-    "MORE": "More",
-    "INSTALL_PLUGIN": "Install plugin",
-    "EDIT_PLUGIN": "Edit plugin",
-    "STOP_PLUGIN": "Stop plugin",
-    "RESTART_PLUGIN": "Restart plugin",
-    "DOWNLOAD_PLUGIN": "Download plugin",
-    "UNINSTALL_PLUGIN": "Uninstall plugin",
-    "DELETE_PLUGIN": "Remove plugin",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DELETE": "Delete",
-    "SAVE": "Save",
-    "INSTALLING": "Installing",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
-    "UPLOAD_PLUGIN": "Upload plugin",
-    "UPLOADING": "Uploading",
-    "CREATED_AT": "Created at",
-    "GENERAL": "General",
-    "SETTINGS": "Settings",
-    "EDITOR": "Editor",
-    "ERRORS": {
-      "URL_REQUIRED": "Mandatory field"
-    },
-    "HELP": {},
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of"
-  }
-}
index c4fbe7e..86fb87a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 68e0c53..212fdff 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 3fd4f57..190c600 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index 29c0869..a3774d1 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 154c0b7..aad4d13 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 361f77e..0ab1946 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index d49bd20..0fbd637 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index d694357..2bda13c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index ac5383c..e93ddba 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 39efe9f..534d51d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 171327a..4085544 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 4646459..0c17adc 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index 18246b8..ac2f84c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 2956f0d..98dc201 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index 6ce8e95..842c0f9 100644 (file)
       "MACHINERETRYTIME": "الوقت في دقائق قبل محاولة الاتصال مرة أخرى جهة اتصال فاشلة بسبب الجهاز",
       "NOSUCHNUMBERETRYTIME": "الوقت في دقائق قبل محاولة الاتصال مرة أخرى جهة اتصال فاشلة بسبب عدم وجود هذا الرقم",
       "NOSUCHNUMBERMAXRETRY": "الحد الأقصى لعدد المرات التي يتم فيها الاتصال بجهة الاتصال قبل اعتبارها مغلقة ، عندما فشلت المكالمة لأي رقم من هذا القبيل",
-      "NOSUCHNUMBERRETRYTIME": "الوقت بالدقائق قبل محاولة الاتصال مرة أخرى بجهة اتصال فاشلة بسبب عدم وجود مثل هذا الرقم",
-      "PREVIEW_AUTO_RECALL_ME": "في حالة التمكين ، سيقوم النظام تلقائيًا بإنشاء مكالمات Recall Me ؛ وإلا ، يجب على الوكيل القيام بذلك يدويًا"
+      "NOSUCHNUMBERRETRYTIME": "الوقت بالدقائق قبل محاولة الاتصال مرة أخرى بجهة اتصال فاشلة بسبب عدم وجود مثل هذا الرقم"
     },
     "ABANDONED": "المتروكة",
     "ADD_IVRCAMPAIGN": "إضافه حمله الرد التفاعلى الآلى",
     "TOOLTIP_SCREENRECORDING_OFF": "تسجيل الشاشة المتاحة",
     "TOOLTIP_SCREENRECORDING_ON": "تسجيل الشاشة في التقدم",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
-    "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
-    "PREVIEW_AUTO_RECALL_ME": "أتمتة تذكرني المكالمات"
+    "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث"
   }
 }
index 0f3d24c..a56166e 100644 (file)
       "MACHINEMAXRETRY": "Maximální počet volání kontaktu, než se považuje za uzavřený, když se volání nezdařilo pro stroj",
       "MACHINERETRYTIME": "Čas v minutách před pokusem o opětovné volání neúspěšného kontaktu kvůli zařízení",
       "NOSUCHNUMBERMAXRETRY": "Maximální počet volání kontaktu, než se považuje za uzavřený, když volání selhalo pro žádné takové číslo",
-      "NOSUCHNUMBERRETRYTIME": "Čas v minutách před pokusem o opětovné volání neúspěšného kontaktu z důvodu neexistence takového čísla",
-      "PREVIEW_AUTO_RECALL_ME": "Pokud je povoleno, systém automaticky generuje volání Recall Me; jinak to musí agent provést ručně"
+      "NOSUCHNUMBERRETRYTIME": "Čas v minutách před pokusem o opětovné volání neúspěšného kontaktu z důvodu neexistence takového čísla"
     },
     "MUSICONHOLD": "Music On Hold",
     "ANNOUNCETOAGENT": "Announce To Agent",
     "NOSUCHNUMBERMAXRETRY": "Max",
     "NOSUCHNUMBERRETRYTIME": "Čas opakování [min]",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
-    "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizujte volání Recall Me"
+    "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně"
   }
 }
index e91c196..5db234c 100644 (file)
       "MACHINERETRYTIME": "Tid i minutter, før du forsøger at ringe igen en mislykket kontakt på grund af maskinen",
       "NOSUCHNUMBERETRYTIME": "Tid i minutter, før du forsøger at ringe igen en mislykket kontakt på grund af intet sådant nummer",
       "NOSUCHNUMBERMAXRETRY": "Maksimalt antal gange, der ringes til en kontakt, inden den overvejer at være lukket, når opkaldet mislykkedes uden noget sådant nummer",
-      "NOSUCHNUMBERRETRYTIME": "Tid i minutter, før du prøver at ringe til en mislykket kontakt på grund af intet sådant nummer",
-      "PREVIEW_AUTO_RECALL_ME": "Hvis det er aktiveret, vil systemet automatisk generere Recall Me-opkaldene; ellers skal agenten gøre det manuelt"
+      "NOSUCHNUMBERRETRYTIME": "Tid i minutter, før du prøver at ringe til en mislykket kontakt på grund af intet sådant nummer"
     },
     "MUSICONHOLD": "Musik ved parkeret opkald",
     "ANNOUNCETOAGENT": "Annoncere til agent",
     "TOOLTIP_SCREENRECORDING_OFF": "Screen optagelse tilgængelig",
     "TOOLTIP_SCREENRECORDING_ON": "Skærmoptagelse pågår",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
-    "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
-    "PREVIEW_AUTO_RECALL_ME": "Automatiser Call Me-opkald"
+    "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition"
   }
 }
index 6805ea3..b439dd0 100644 (file)
       "MACHINERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund der Maschine erneut anzurufen",
       "NOSUCHNUMBERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist",
       "NOSUCHNUMBERMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für keine solche Nummer fehlgeschlagen ist",
-      "NOSUCHNUMBERRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist",
-      "PREVIEW_AUTO_RECALL_ME": "Wenn aktiviert, generiert das System automatisch die Recall Me-Anrufe; andernfalls muss der Agent dies manuell tun"
+      "NOSUCHNUMBERRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist"
     },
     "MUSICONHOLD": "Musik auf Halten",
     "ANNOUNCETOAGENT": "Verkünden auf Agenten",
     "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
     "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
-    "PREVIEW_AUTO_RECALL_ME": "Automatisieren Sie Recall Me-Anrufe"
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene"
   }
 }
index 7f1ae56..c2b343a 100644 (file)
       "MACHINERETRYTIME": "Tiempo en minutos antes de intentar volver a llamar a un contacto fallido debido a la máquina",
       "NOSUCHNUMBERETRYTIME": "Tiempo en minutos antes de intentar volver a llamar a un contacto fallido debido a que no existe ese número",
       "NOSUCHNUMBERMAXRETRY": "Número máximo de veces que se llama a un contacto antes de considerarlo cerrado, cuando la llamada falló por dicho número",
-      "NOSUCHNUMBERRETRYTIME": "Tiempo en minutos antes de intentar llamar de nuevo a un contacto fallido debido a que no existe dicho número",
-      "PREVIEW_AUTO_RECALL_ME": "Si está habilitado, el sistema generará automáticamente las llamadas Recall Me; de lo contrario, el agente debe hacerlo manualmente"
+      "NOSUCHNUMBERRETRYTIME": "Tiempo en minutos antes de intentar llamar de nuevo a un contacto fallido debido a que no existe dicho número"
     },
     "ERRORS": {
       "AFTERCALLWORKDURATION_REQUIRED": "Campo obligatorio",
     "TOOLTIP_SCREENRECORDING_OFF": "Grabación de pantalla disponible",
     "TOOLTIP_SCREENRECORDING_ON": "Grabación de pantalla en progreso",
     "SECOND_LEVEL_DISPOSITION": "Tipficación de segundo nivel",
-    "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizar las llamadas de Recall Me"
+    "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel"
   }
 }
index 59161b2..40e5a27 100644 (file)
       "MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
       "MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
       "NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
-      "NOSUCHNUMBERRETRYTIME": "Aega minutites, enne kui proovite uuesti helistada nurjunud kontaktile, kuna sellist numbrit pole",
-      "PREVIEW_AUTO_RECALL_ME": "Kui see on lubatud, genereerib süsteem automaatselt Call Me kõned; vastasel juhul peab agent seda käsitsi tegema"
+      "NOSUCHNUMBERRETRYTIME": "Aega minutites, enne kui proovite uuesti helistada nurjunud kontaktile, kuna sellist numbrit pole"
     },
     "MUSICONHOLD": "Music On Hold",
     "ANNOUNCETOAGENT": "Announce To Agent",
     "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned"
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus"
   }
 }
index 40f8edf..54399c1 100644 (file)
       "MACHINERETRYTIME": "دقایقی قبل از تلاش برای تماس مجدد با شما به دلیل دستگاه تماس برقرار نشد",
       "NOSUCHNUMBERETRYTIME": "دقایقی قبل از تلاش برای تماس مجدد با شما تماس ناموفق بخاطر وجود چنین شماره ای",
       "NOSUCHNUMBERMAXRETRY": "حداکثر تعداد تماس با شما قبل از بسته شدن تماس گرفته می شود ، در صورت عدم موفقیت در چنین شماره ای",
-      "NOSUCHNUMBERRETRYTIME": "چند دقیقه قبل از تلاش برای تماس مجدد با یک تماس ناموفق به دلیل نداشتن چنین شماره ای زمان بگذارید",
-      "PREVIEW_AUTO_RECALL_ME": "اگر فعال باشد، سیستم به طور خودکار تماس های Recall Me را ایجاد می کند. در غیر این صورت، نماینده باید این کار را به صورت دستی انجام دهد"
+      "NOSUCHNUMBERRETRYTIME": "چند دقیقه قبل از تلاش برای تماس مجدد با یک تماس ناموفق به دلیل نداشتن چنین شماره ای زمان بگذارید"
     },
     "MUSICONHOLD": "موسيقي را نگه دارید",
     "ANNOUNCETOAGENT": "عامل را اعلام می کند",
     "TOOLTIP_SCREENRECORDING_OFF": "ضبط صفحه در دسترس است",
     "TOOLTIP_SCREENRECORDING_ON": "ضبط صفحه در حال انجام است",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
-    "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
-    "PREVIEW_AUTO_RECALL_ME": "تماس\200cهای Recall Me را خودکار کنید"
+    "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم"
   }
 }
index 7f79acb..b9ca0df 100644 (file)
       "MACHINERETRYTIME": "Aika minuutteina ennen kuin yrität soittaa uudestaan epäonnistuneelle konetalle koneesta johtuen",
       "NOSUCHNUMBERETRYTIME": "Aika minuutteina ennen kuin yrität soittaa uudelleen epäonnistuneelle yhteyshenkilölle, koska sellaista numeroa ei ole",
       "NOSUCHNUMBERMAXRETRY": "Enimmäiskertojen lukumäärä, johon yhteyshenkilöön on soitettu, ennen kuin harkitaan sen sulkeutumista, kun puhelu epäonnistui ilman tällaista numeroa",
-      "NOSUCHNUMBERRETRYTIME": "Aika minuutteina ennen kuin yrität soittaa uudelleen epäonnistuneelle yhteyshenkilölle, koska tällaista numeroa ei ole",
-      "PREVIEW_AUTO_RECALL_ME": "Jos tämä on käytössä, järjestelmä luo automaattisesti Recall Me -kutsut. Muussa tapauksessa edustajan on tehtävä se manuaalisesti"
+      "NOSUCHNUMBERRETRYTIME": "Aika minuutteina ennen kuin yrität soittaa uudelleen epäonnistuneelle yhteyshenkilölle, koska tällaista numeroa ei ole"
     },
     "MUSICONHOLD": "Musiikkia puhelun ollessa pidossa",
     "ANNOUNCETOAGENT": "Ilmoittaa Agent",
     "TOOLTIP_SCREENRECORDING_OFF": "Näytön tallennus saatavilla",
     "TOOLTIP_SCREENRECORDING_ON": "Näytön nauhoitus käynnissä",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
-    "PREVIEW_AUTO_RECALL_ME": "Automatisoi Recall Me -puhelut"
+    "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus"
   }
 }
index 8e689aa..154e624 100644 (file)
       "MACHINERETRYTIME": "Temps en minutes avant d'essayer de rappeler un contact ayant échoué en raison de la machine",
       "NOSUCHNUMBERETRYTIME": "Temps en minutes avant d'essayer de rappeler un contact ayant échoué en raison d'un tel numéro",
       "NOSUCHNUMBERMAXRETRY": "Nombre maximal de fois qu'un contact est appelé avant de le considérer comme fermé, lorsque l'appel a échoué pour un tel numéro",
-      "NOSUCHNUMBERRETRYTIME": "Temps en minutes avant de réessayer de rappeler un contact ayant échoué en raison d'un tel numéro",
-      "PREVIEW_AUTO_RECALL_ME": "S'il est activé, le système générera automatiquement les appels Recall Me ; sinon, l'agent doit le faire manuellement"
+      "NOSUCHNUMBERRETRYTIME": "Temps en minutes avant de réessayer de rappeler un contact ayant échoué en raison d'un tel numéro"
     },
     "MUSICONHOLD": "La musique d'attente",
     "ANNOUNCETOAGENT": "Annoncer à l'Agent",
     "TOOLTIP_SCREENRECORDING_OFF": "Enregistrement d'écran disponible",
     "TOOLTIP_SCREENRECORDING_ON": "Enregistrement d'écran en cours",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
-    "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau",
-    "PREVIEW_AUTO_RECALL_ME": "Automatisez les appels de rappel"
+    "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau"
   }
 }
index 1f7ba21..b21d1ba 100644 (file)
       "NOSUCHNUMBERETRYTIME": "זמן בתוך דקות לפני שניסה להתקשר שוב לאיש קשר כושל מכיוון שאין מספר כזה",
       "NOSUCHNUMBERMAXRETRY": "המספר המרבי של הפעמים שאיש קשר מתקשר לפני שהוא שוקל לסגור אותו, כאשר השיחה נכשלה ללא מספר כזה",
       "NOSUCHNUMBERRETRYTIME": "זמן בדקות לפני שניסה להתקשר שוב לאיש קשר נכשל בגלל מספר כזה",
-      "CALLYSQUAREPROJECT2": "בחירת פרויקט IVR, חייגן יעביר את השיחה ל- IVR לאחר התור (אם התור מסתיים בפסק זמן קצוב)",
-      "PREVIEW_AUTO_RECALL_ME": "אם מופעלת, המערכת תיצור אוטומטית את השיחות 'חזור אליי'; אחרת, הסוכן חייב לעשות זאת באופן ידני"
+      "CALLYSQUAREPROJECT2": "בחירת פרויקט IVR, חייגן יעביר את השיחה ל- IVR לאחר התור (אם התור מסתיים בפסק זמן קצוב)"
     },
     "MUSICONHOLD": "מוזיקה בהמתנה",
     "ANNOUNCETOAGENT": "הודעה לנציג",
     "TOOLTIP_SCREENRECORDING_OFF": "הקלטת מסך זמינה",
     "TOOLTIP_SCREENRECORDING_ON": "הקלטת מסך מתבצעת",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
-    "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
-    "PREVIEW_AUTO_RECALL_ME": "אוטומציה של שיחות Recall Me"
+    "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית"
   }
 }
index 78d66f1..644cf08 100644 (file)
       "MACHINERETRYTIME": "मशीन के कारण फिर से कॉल करने की कोशिश करने से पहले मिनटों में समय",
       "NOSUCHNUMBERETRYTIME": "इस तरह की कोई संख्या नहीं होने के कारण फिर से कॉल करने की कोशिश करने से पहले मिनटों में समय",
       "NOSUCHNUMBERMAXRETRY": "किसी संपर्क को बंद करने पर विचार करने से पहले अधिकतम बार कॉल किया जाता है, जब कॉल ऐसी किसी भी संख्या के लिए विफल रही",
-      "NOSUCHNUMBERRETRYTIME": "इस तरह की कोई संख्या नहीं होने के कारण फिर से कॉल करने की कोशिश करने से पहले मिनटों में समय",
-      "PREVIEW_AUTO_RECALL_ME": "यदि सक्षम किया गया है, तो सिस्टम स्वचालित रूप से रिकॉल मी कॉल उत्पन्न करेगा; अन्यथा, एजेंट को इसे मैन्युअल रूप से करना होगा"
+      "NOSUCHNUMBERRETRYTIME": "इस तरह की कोई संख्या नहीं होने के कारण फिर से कॉल करने की कोशिश करने से पहले मिनटों में समय"
     },
     "MUSICONHOLD": "संगीत पर रखें.",
     "ANNOUNCETOAGENT": "घोषणा के एजेंट",
     "TOOLTIP_SCREENRECORDING_OFF": "स्क्रीन रिकॉर्डिंग उपलब्ध है",
     "TOOLTIP_SCREENRECORDING_ON": "स्क्रीन रिकॉर्डिंग प्रगति पर है",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
-    "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
-    "PREVIEW_AUTO_RECALL_ME": "स्वचालित रिकॉल मी कॉल"
+    "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद"
   }
 }
diff --git a/public/app/main/apps/motiondialer/i18n/hu.json b/public/app/main/apps/motiondialer/i18n/hu.json
deleted file mode 100644 (file)
index bc7a95d..0000000
+++ /dev/null
@@ -1,693 +0,0 @@
-{
-  "MOTIONDIALER": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "ONE_CALL_EVERY": "One call every",
-    "CURRENT_INTERVAL": "Current Interval",
-    "PREVIOUS_INTERVAL": "Previous Interval",
-    "PREDICTIVE_IS_RUNNING": "Predictive is running",
-    "PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
-    "AVG_TALK_TIME": "Avg Talk Time",
-    "ANSWERED_CALLS": "Answered Calls",
-    "TOTAL_CALLS": "Total Calls",
-    "THRESHOLDS": "Thresholds",
-    "PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
-    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
-    "REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
-    "RECALLINQUEUE": "Recall in queue",
-    "SELECT_DATE": "Select Date",
-    "SELECT_TYPE": "Select Type",
-    "SELECT_CAMPAIGN": "Select Campaign",
-    "SCHEDULED_CALLS": "Scheduled Calls",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "CUTDIGIT": "Cut Digits",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-    "CLONE_IVRCAMPAIGN": "Clone Campaign",
-    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "HOPPERWIDGET": "Summary",
-    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
-    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Lists",
-    "SELECTALL": "Select All",
-    "UNSELECTALL": "Un-Select All",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TIMEOUT": "Timeout",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Parital Pause",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "TIMER": "Timer",
-    "MOVE_HOPPERFINAL": "Restore contact",
-    "RESTORECONTACTS": "Restore Contacts",
-    "NO_SUCH_NUMBER": "No Such Number",
-    "ANSWERING_MACHINE": "Answering machine",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
-    "ASC": "ASC",
-    "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
-    "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
-    "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
-    "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
-    "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
-    "NO_HOPPERHISTORY_AVAILABLE": "No items available",
-    "DELETE_HOPPERHISTORY": "Delete",
-    "DELETE_HOPPERFINAL": "Delete",
-    "CONTACTID": "Contact ID",
-    "STARTTIME": "Start Time",
-    "RESPONSETIME": "Response Time",
-    "ENDTIME": "End Time",
-    "STATUS": "Status",
-    "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
-    "DROPRATE": "Drop Rate",
-    "AGENTBUSYFACTOR": "Agent Busy Factor",
-    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-    "PREDICTIVEINTERVAL": "Predictive Interval",
-    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-    "CAMPAIGN": "Campaign",
-    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
-    "CONCURRENTCALLS": "Max Concurrent Calls",
-    "ORIGINATE": "Originate",
-    "ORIGINATECALLERIDNAME": "Caller ID Name",
-    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
-    "ORIGINATETIMEOUT": "Originate Timeout",
-    "QUEUEOPTIONS": "Queue Options",
-    "QUEUETIMEOUT": "Queue Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Project",
-    "RETRYANDFREQUENCY": "Retry Settings",
-    "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max Retries",
-    "CONGESTION": "Congestion",
-    "CONGESTIONMAXRETRY": "Max Retries",
-    "CONGESTIONRETRYTIME": "Retry Time [min]",
-    "BUSYMAXRETRY": "Max Retries",
-    "BUSYRETRYTIME": "Retry Time [min]",
-    "NOANSWER": "No Answer",
-    "NOANSWERMAXRETRY": "Max Retries",
-    "NOANSWERRETRYTIME": "Retry Time [min]",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
-    "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
-    "NOSUCHNUMBER": "No such number",
-    "NOSUCHNUMBERMAXRETRY": "Max Retries",
-    "NOSUCHNUMBERRETRYTIME": "Retry Time [min]",
-    "DROP": "Drop",
-    "DROPMAXRETRY": "Max Retries",
-    "DROPRETRYTIME": "Retry Time [min]",
-    "ABANDONEDMAXRETRY": "Max Retries",
-    "ABANDONEDRETRYTIME": "Retry Time [min]",
-    "MACHINE": "Machine",
-    "MACHINEMAXRETRY": "Max Retries",
-    "MACHINERETRYTIME": "Retry Time [min]",
-    "AGENTREJECT": "Agent Reject",
-    "AGENTREJECTMAXRETRY": "Max Retries",
-    "AGENTREJECTRETRYTIME": "Retry Time [min]",
-    "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
-    },
-    "ERRORS": {
-      "AGENT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
-      "INTERVAL_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
-      "NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
-      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
-      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
-      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
-      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Mandatory field",
-      "DROPMAXRETRY_REQUIRED": "Mandatory field",
-      "DROPRETRYTIME_REQUIRED": "Mandatory field",
-      "ABANDONEDMAXRETRY_REQUIRED": "Mandatory field",
-      "ABANDONEDRETRYTIME_REQUIRED": "Mandatory field",
-      "MACHINEMAXRETRY_REQUIRED": "Mandatory field",
-      "MACHINERETRYTIME_REQUIRED": "Mandatory field",
-      "AGENTREJECTMAXRETRY_REQUIRED": "Mandatory field",
-      "AGENTREJECTRETRYTIME_REQUIRED": "Mandatory field",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field"
-    },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
-    "HELP": {
-      "PREDICTIVEMAXTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured maximum limit, the predictive recalculates the prediction. ",
-      "PREDICTIVEMINTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured minimum limit, the predictive recalculates the prediction.",
-      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-      "TIMEOUT": "Number of seconds to ring agent in queue",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-      "PRIORITY": "Priority in the list",
-      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-      "PREFIX": "Telephone prefix",
-      "ACTIVE": "Active",
-      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "METHOD": "Outbound dialer method",
-      "POWERLEVEL": "Number of contacts to call for any available agent",
-      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
-      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
-      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
-      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
-      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
-      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
-      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
-      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
-      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
-      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
-      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
-      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
-      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
-      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
-      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
-      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number",
-      "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number",
-      "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop",
-      "DROPRETRYTIME": "Time in minutes before trying to call again a failed contact due to drop",
-      "ABANDONEDMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for abandon",
-      "ABANDONEDRETRYTIME": "Time in minutes before trying to call again a failed contact due to abandon",
-      "MACHINEMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for machine",
-      "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
-      "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
-      "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
-    },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
-    "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
-    "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
-    "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
-    "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
-    "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
-    "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls"
-  }
-}
index 248b861..ea77151 100644 (file)
       "MACHINERETRYTIME": "Waktu dalam beberapa menit sebelum mencoba menelepon lagi kontak yang gagal karena mesin",
       "NOSUCHNUMBERETRYTIME": "Waktu dalam beberapa menit sebelum mencoba menelepon lagi kontak yang gagal karena tidak ada nomor tersebut",
       "NOSUCHNUMBERMAXRETRY": "Jumlah maksimum kontak dipanggil sebelum mempertimbangkannya ditutup, ketika panggilan gagal karena tidak ada nomor tersebut",
-      "NOSUCHNUMBERRETRYTIME": "Waktu dalam menit sebelum mencoba menelepon lagi kontak yang gagal karena tidak ada nomor tersebut",
-      "PREVIEW_AUTO_RECALL_ME": "Jika diaktifkan, sistem akan secara otomatis menghasilkan panggilan Recall Me; jika tidak, agen harus melakukannya secara manual"
+      "NOSUCHNUMBERRETRYTIME": "Waktu dalam menit sebelum mencoba menelepon lagi kontak yang gagal karena tidak ada nomor tersebut"
     },
     "ABANDONED": "Ditinggalkan",
     "ABANDONEDCALLS": "Panggilan Antrian yang Ditinggalkan",
     "TOOLTIP_SCREENRECORDING_OFF": "Rekaman Layar tersedia",
     "TOOLTIP_SCREENRECORDING_ON": "Perekaman Layar sedang berlangsung",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
-    "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
-    "PREVIEW_AUTO_RECALL_ME": "Otomatiskan panggilan Recall Me"
+    "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga"
   }
 }
index 19f3e34..78e856c 100644 (file)
       "MACHINERETRYTIME": "マシンが原因で失敗した連絡先に再度電話をかけるまでの時間(分単位)",
       "NOSUCHNUMBERETRYTIME": "そのような番号がないために失敗した連絡先に再度電話をかけるまでの時間(分単位)",
       "NOSUCHNUMBERMAXRETRY": "連絡先が閉じられたと見なされる前に、そのような番号がないために失敗した場合に連絡先が呼び出される最大回数",
-      "NOSUCHNUMBERRETRYTIME": "そのような番号がないために失敗した連絡先に再度電話をかけるまでの時間(分)",
-      "PREVIEW_AUTO_RECALL_ME": "有効にすると、システムは自動的にRecallMe呼び出しを生成します。それ以外の場合、エージェントは手動で行う必要があります"
+      "NOSUCHNUMBERRETRYTIME": "そのような番号がないために失敗した連絡先に再度電話をかけるまでの時間(分)"
     },
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - カスタムアプリケーション"
     "TOOLTIP_SCREENRECORDING_OFF": "利用可能なスクリーン録画",
     "TOOLTIP_SCREENRECORDING_ON": "スクリーン録画中",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
-    "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
-    "PREVIEW_AUTO_RECALL_ME": "リコールミーコールを自動化する"
+    "THIRD_LEVEL_DISPOSITION": "第3レベルの気質"
   }
 }
index ecd6b6c..5974812 100644 (file)
       "MACHINERETRYTIME": "기계로 인해 실패한 컨택을 다시 호출하기 전의 시간 (분)",
       "NOSUCHNUMBERETRYTIME": "해당 번호가 없어 실패한 연락처를 다시 호출하기 전의 시간 (분)",
       "NOSUCHNUMBERMAXRETRY": "해당 번호가없는 통화에 실패한 경우, 통화 종료를 고려하기 전에 연락처가 전화를 건 최대 횟수",
-      "NOSUCHNUMBERRETRYTIME": "해당 번호가 없어 실패한 연락처로 다시 전화를 걸기 전의 시간 (분)",
-      "PREVIEW_AUTO_RECALL_ME": "활성화된 경우 시스템은 자동으로 Recall Me 호출을 생성합니다. 그렇지 않으면 에이전트가 수동으로 수행해야 합니다."
+      "NOSUCHNUMBERRETRYTIME": "해당 번호가 없어 실패한 연락처로 다시 전화를 걸기 전의 시간 (분)"
     },
     "MUSICONHOLD": "대기 중 음악",
     "ANNOUNCETOAGENT": "상담원에게 공지",
     "TOOLTIP_SCREENRECORDING_OFF": "스크린 녹화 가능",
     "TOOLTIP_SCREENRECORDING_ON": "화면 녹화 중",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
-    "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
-    "PREVIEW_AUTO_RECALL_ME": "자동 회상 전화"
+    "THIRD_LEVEL_DISPOSITION": "3 단계 처리"
   }
 }
index dd64b67..f201dd6 100644 (file)
       "MACHINEMAXRETRY": "Maksimalus kartų skaičius, kiek kontaktui yra skambinama prieš laikant jį uždarytu, kai skambutis nepavyko dėl įrenginio",
       "MACHINERETRYTIME": "Laikas minutėmis, kai bandysite dar kartą paskambinti nepavykusiam kontaktui dėl įrenginio",
       "NOSUCHNUMBERMAXRETRY": "Maksimalus kartų skaičius, kiek kontaktui yra skambinama prieš laikant jį uždarytu, kai skambutis nepavyko, nes nėra tokio numerio",
-      "NOSUCHNUMBERRETRYTIME": "Laikas minutėmis, kai bandysite dar kartą paskambinti nepavykusiam kontaktui, kai nėra tokio numerio",
-      "PREVIEW_AUTO_RECALL_ME": "Jei įjungta, sistema automatiškai generuos Recall Me skambučius; kitu atveju agentas turi tai padaryti rankiniu būdu"
+      "NOSUCHNUMBERRETRYTIME": "Laikas minutėmis, kai bandysite dar kartą paskambinti nepavykusiam kontaktui, kai nėra tokio numerio"
     },
     "MUSICONHOLD": "Muzika sulaikyta",
     "ANNOUNCETOAGENT": "Pranešti agentui",
     "NOSUCHNUMBERMAXRETRY": "Maks. bandymai iš naujo",
     "NOSUCHNUMBERRETRYTIME": "Pakartojimų laikas [min.]",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
-    "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizuokite „Recall Me“ skambučius"
+    "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas"
   }
 }
index 0db7391..d7e27a9 100644 (file)
       "MACHINERETRYTIME": "Laiks minūtēs, pirms mēģināt vēlreiz piezvanīt neveiksmīgam kontaktam mašīnas dēļ",
       "NOSUCHNUMBERETRYTIME": "Laiks minūtēs, pirms mēģināt vēlreiz piezvanīt neveiksmīgam kontaktam, jo šāda numura nav",
       "NOSUCHNUMBERMAXRETRY": "Maksimālais reižu skaits, uz kuru tiek piezvanīts kontaktam pirms tā uzskatīšanas par slēgtu, kad zvana neizdevās, ja šāda numura nav",
-      "NOSUCHNUMBERRETRYTIME": "Laiks minūtēs, pirms mēģināt vēlreiz piezvanīt uz neizdevušos kontaktu, jo nav šāda numura",
-      "PREVIEW_AUTO_RECALL_ME": "Ja tas ir iespējots, sistēma automātiski ģenerēs Recall Me zvanus; pretējā gadījumā aģentam tas jādara manuāli"
+      "NOSUCHNUMBERRETRYTIME": "Laiks minūtēs, pirms mēģināt vēlreiz piezvanīt uz neizdevušos kontaktu, jo nav šāda numura"
     },
     "NO_AVAILABLE_INFO": "Nav pieejama informācija",
     "TIMEOUT": "Noildze",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekrāna ieraksts ir pieejams",
     "TOOLTIP_SCREENRECORDING_ON": "Notiek ekrāna ierakstīšana",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
-    "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizējiet Recall Me zvanus"
+    "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums"
   }
 }
index 95fa4fc..8183a69 100644 (file)
       "MACHINERETRYTIME": "Tijd in minuten voordat u probeert een mislukt contact vanwege de machine opnieuw te bellen",
       "NOSUCHNUMBERETRYTIME": "Tijd in minuten voordat u probeert een mislukt contact opnieuw te bellen vanwege een dergelijk nummer",
       "NOSUCHNUMBERMAXRETRY": "Maximaal aantal keren dat een contactpersoon wordt gebeld voordat deze als gesloten wordt beschouwd, wanneer het gesprek niet voor zo'n aantal is mislukt",
-      "NOSUCHNUMBERRETRYTIME": "Tijd in minuten voordat u opnieuw probeert een mislukt contact te bellen omdat een dergelijk nummer niet bestaat",
-      "PREVIEW_AUTO_RECALL_ME": "Indien ingeschakeld, genereert het systeem automatisch de Recall Me-oproepen; anders moet de agent het handmatig doen"
+      "NOSUCHNUMBERRETRYTIME": "Tijd in minuten voordat u opnieuw probeert een mislukt contact te bellen omdat een dergelijk nummer niet bestaat"
     },
     "MUSICONHOLD": "Wachtmuziek",
     "ANNOUNCETOAGENT": "Kondig Agent",
     "TOOLTIP_SCREENRECORDING_OFF": "Schermopname beschikbaar",
     "TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
-    "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
-    "PREVIEW_AUTO_RECALL_ME": "Automatisch terugbellen oproepen"
+    "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau"
   }
 }
index 8c04670..690a6e1 100644 (file)
       "MACHINERETRYTIME": "Tid i minutter før du prøver å ringe igjen en mislykket kontakt på grunn av maskinen",
       "NOSUCHNUMBERETRYTIME": "Tid i minutter før du prøver å ringe igjen en mislykket kontakt på grunn av ikke noe slikt nummer",
       "NOSUCHNUMBERMAXRETRY": "Maksimalt antall ganger en kontakt ringes før den vurderes som lukket, når samtalen mislyktes uten noe slikt nummer",
-      "NOSUCHNUMBERRETRYTIME": "Tid i minutter før du prøver å ringe en mislykket kontakt igjen på grunn av ikke noe slikt nummer",
-      "PREVIEW_AUTO_RECALL_ME": "Hvis aktivert, vil systemet automatisk generere Recall Me-anropene; ellers må agenten gjøre det manuelt"
+      "NOSUCHNUMBERRETRYTIME": "Tid i minutter før du prøver å ringe en mislykket kontakt igjen på grunn av ikke noe slikt nummer"
     },
     "MUSICONHOLD": "Musikk på vent",
     "ANNOUNCETOAGENT": "Annonsere til agent",
     "TOOLTIP_SCREENRECORDING_OFF": "Skjermopptak tilgjengelig",
     "TOOLTIP_SCREENRECORDING_ON": "Skjermopptak pågår",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
-    "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
-    "PREVIEW_AUTO_RECALL_ME": "Automatiser Recall Me-samtaler"
+    "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon"
   }
 }
index c25baec..48442d7 100644 (file)
       "MACHINERETRYTIME": "Czas w minutach przed ponownym wywołaniem nieudanego kontaktu z powodu urządzenia",
       "NOSUCHNUMBERETRYTIME": "Czas w minutach przed ponownym wywołaniem nieudanego kontaktu z powodu braku takiego numeru",
       "NOSUCHNUMBERMAXRETRY": "Maksymalna liczba wywołań kontaktu przed uznaniem go za zamknięty, gdy połączenie nie powiodło się z powodu braku takiego numeru",
-      "NOSUCHNUMBERRETRYTIME": "Czas w minutach przed ponowną próbą połączenia z nieudanym kontaktem z powodu braku takiego numeru",
-      "PREVIEW_AUTO_RECALL_ME": "Jeśli ta opcja jest włączona, system automatycznie wygeneruje połączenia Przywołaj mnie; w przeciwnym razie agent musi to zrobić ręcznie"
+      "NOSUCHNUMBERRETRYTIME": "Czas w minutach przed ponowną próbą połączenia z nieudanym kontaktem z powodu braku takiego numeru"
     },
     "MUSICONHOLD": "Music on Hold",
     "ANNOUNCETOAGENT": "Poinformowania agenta",
     "TOOLTIP_SCREENRECORDING_OFF": "Dostępne nagrywanie ekranu",
     "TOOLTIP_SCREENRECORDING_ON": "Trwa nagrywanie ekranu",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
-    "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
-    "PREVIEW_AUTO_RECALL_ME": "Automatyzacja połączeń typu Przypomnij mnie"
+    "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu"
   }
 }
index 8719976..838c419 100644 (file)
       "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à máquina",
       "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a esse número",
       "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número",
-      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número",
-      "PREVIEW_AUTO_RECALL_ME": "Se ativado, o sistema irá gerar automaticamente as chamadas Recall Me; caso contrário, o agente deve fazer isso manualmente"
+      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número"
     },
     "MUSICONHOLD": "Música em espera",
     "ANNOUNCETOAGENT": "Anunciar ao agente",
     "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
     "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizar Chamadas Recall Me"
+    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível"
   }
 }
index 4aec7f4..bda3d28 100644 (file)
       "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à máquina",
       "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a esse número",
       "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número",
-      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número",
-      "PREVIEW_AUTO_RECALL_ME": "Se ativado, o sistema irá gerar automaticamente as chamadas Recall Me; caso contrário, o agente deve fazer isso manualmente"
+      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número"
     },
     "MUSICONHOLD": "Música em espera",
     "ANNOUNCETOAGENT": "Anunciar para agente",
     "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
     "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizar Chamadas Recall Me"
+    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível"
   }
 }
index ad68aa1..f3155bc 100644 (file)
       "MACHINEMAXRETRY": "Максимальное количество вызовов контакта, прежде чем он будет считаться закрытым, когда вызов не удался для машины",
       "MACHINERETRYTIME": "Время в минутах до повторной попытки дозвона. Неудачный контакт из-за машины",
       "NOSUCHNUMBERMAXRETRY": "Максимальное количество вызовов контакта, прежде чем он будет считаться закрытым, если вызов не удался ни для одного такого номера",
-      "NOSUCHNUMBERRETRYTIME": "Время в минутах до повторной попытки дозвона. Неудачный контакт из-за отсутствия такого номера",
-      "PREVIEW_AUTO_RECALL_ME": "Если этот параметр включен, система автоматически генерирует вызовы «Перезвоните мне»; в противном случае агент должен сделать это вручную"
+      "NOSUCHNUMBERRETRYTIME": "Время в минутах до повторной попытки дозвона. Неудачный контакт из-за отсутствия такого номера"
     },
     "MUSICONHOLD": "Музыка на удержании",
     "ANNOUNCETOAGENT": "Сообщить оператору",
     "NOSUCHNUMBERMAXRETRY": "Максимальное количество попыток",
     "NOSUCHNUMBERRETRYTIME": "Время повтора [мин]",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
-    "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
-    "PREVIEW_AUTO_RECALL_ME": "Автоматическая функция \"Перезвоните мне\""
+    "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня"
   }
 }
index 66021b0..3cd61cf 100644 (file)
       "MACHINERETRYTIME": "Tid i minuter innan du försöker ringa igen en misslyckad kontakt på grund av maskinen",
       "NOSUCHNUMBERETRYTIME": "Tid i minuter innan du försöker ringa igen en misslyckad kontakt på grund av inget sådant nummer",
       "NOSUCHNUMBERMAXRETRY": "Maximalt antal gånger en kontakt anropas innan den överväger att den är stängd, när samtalet misslyckades för inget sådant nummer",
-      "NOSUCHNUMBERRETRYTIME": "Tid i minuter innan du försöker ringa igen en misslyckad kontakt på grund av inget sådant nummer",
-      "PREVIEW_AUTO_RECALL_ME": "Om det är aktiverat kommer systemet automatiskt att generera Recall Me-samtal; annars måste agenten göra det manuellt"
+      "NOSUCHNUMBERRETRYTIME": "Tid i minuter innan du försöker ringa igen en misslyckad kontakt på grund av inget sådant nummer"
     },
     "MUSICONHOLD": "Musik i vänteläge",
     "ANNOUNCETOAGENT": "Meddela till agent",
     "TOOLTIP_SCREENRECORDING_OFF": "Skärminspelning tillgänglig",
     "TOOLTIP_SCREENRECORDING_ON": "Skärminspelning pågår",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
-    "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
-    "PREVIEW_AUTO_RECALL_ME": "Automatisera Recall Me-samtal"
+    "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition"
   }
 }
index f1a9f7a..830aa44 100644 (file)
       "MACHINERETRYTIME": "Makine nedeniyle başarısız bir kişiyi tekrar aramaya çalışmadan önce dakika",
       "NOSUCHNUMBERETRYTIME": "Böyle bir numara olmadığı için başarısız bir kişiyi tekrar aramaya çalışmadan önce dakika cinsinden süre",
       "NOSUCHNUMBERMAXRETRY": "Böyle bir numara için arama başarısız olduğunda, bir kişi kapalı olduğunu düşünmeden önce maksimum çağrı sayısı",
-      "NOSUCHNUMBERRETRYTIME": "Böyle bir numara olmaması nedeniyle başarısız bir kişiyi tekrar aramaya çalışmadan önce dakika cinsinden süre",
-      "PREVIEW_AUTO_RECALL_ME": "Etkinleştirilirse sistem, Beni Geri Çağır çağrılarını otomatik olarak oluşturur; aksi takdirde, aracının bunu manuel olarak yapması gerekir"
+      "NOSUCHNUMBERRETRYTIME": "Böyle bir numara olmaması nedeniyle başarısız bir kişiyi tekrar aramaya çalışmadan önce dakika cinsinden süre"
     },
     "MUSICONHOLD": "Bekletme Müziği",
     "ANNOUNCETOAGENT": "Duyurmak Agent",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekran Kaydı mevcut",
     "TOOLTIP_SCREENRECORDING_ON": "Ekran Kaydı devam ediyor",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
-    "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
-    "PREVIEW_AUTO_RECALL_ME": "Beni Geri Çağır aramalarını otomatikleştir"
+    "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf"
   }
 }
index 3ae2392..70f477b 100644 (file)
       "MACHINERETRYTIME": "以分钟为单位的时间,尝试再打一次由于计算机而导致失败的联系",
       "NOSUCHNUMBERETRYTIME": "分钟(以分钟为单位),由于没有该号码,因此尝试再次致电失败的联系人",
       "NOSUCHNUMBERMAXRETRY": "如果呼叫没有成功,则在联系被关闭之前被呼叫的最大次数",
-      "NOSUCHNUMBERRETRYTIME": "分钟(以分钟为单位),由于没有该号码,因此尝试再次致电失败的联系人",
-      "PREVIEW_AUTO_RECALL_ME": "如果启用,系统将自动生成 Recall Me 呼叫;否则,代理必须手动执行"
+      "NOSUCHNUMBERRETRYTIME": "分钟(以分钟为单位),由于没有该号码,因此尝试再次致电失败的联系人"
     },
     "MUSICONHOLD": "音乐保留",
     "ANNOUNCETOAGENT": "宣布到座席",
     "TOOLTIP_SCREENRECORDING_OFF": "屏幕录像可用",
     "TOOLTIP_SCREENRECORDING_ON": "屏幕录制正在进行中",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
-    "THIRD_LEVEL_DISPOSITION": "第三级处置",
-    "PREVIEW_AUTO_RECALL_ME": "自动回叫我电话"
+    "THIRD_LEVEL_DISPOSITION": "第三级处置"
   }
 }
index 847f0d6..cf9404c 100644 (file)
       "MACHINERETRYTIME": "以分鐘為單位的時間,嘗試再打一次由於機器而導致失敗的聯繫",
       "NOSUCHNUMBERETRYTIME": "分鐘(以分鐘為單位),由於沒有該號碼,因此嘗試再次致電失敗的聯繫人",
       "NOSUCHNUMBERMAXRETRY": "當呼叫未成功關閉時,呼叫被聯繫之前被關閉的最大次數",
-      "NOSUCHNUMBERRETRYTIME": "分鐘(以分鐘為單位),由於沒有該號碼,因此嘗試再次致電失敗的聯繫人",
-      "PREVIEW_AUTO_RECALL_ME": "如果啟用,系統將自動生成 Recall Me 呼叫;否則,代理必須手動執行"
+      "NOSUCHNUMBERRETRYTIME": "分鐘(以分鐘為單位),由於沒有該號碼,因此嘗試再次致電失敗的聯繫人"
     },
     "MUSICONHOLD": "音樂保留通話",
     "ANNOUNCETOAGENT": "發佈至值機員",
     "TOOLTIP_SCREENRECORDING_OFF": "屏幕錄像可用",
     "TOOLTIP_SCREENRECORDING_ON": "屏幕錄製正在進行中",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
-    "THIRD_LEVEL_DISPOSITION": "第三級處置",
-    "PREVIEW_AUTO_RECALL_ME": "自動回叫我電話"
+    "THIRD_LEVEL_DISPOSITION": "第三級處置"
   }
 }
index 49fbeed..8093eec 100644 (file)
     "PHONE_STATUS": "Phone Status",
     "PAUSE": "Pause",
     "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Open Channel queue",
+    "AGENTADD_QUEUE": "Add Agent To Open Channel Queue",
     "UNPAUSE": "End Pause",
     "DEFAULT_PAUSE": "Default pause",
     "LOGGED_IN": "Logged in",
diff --git a/public/app/main/apps/openchannel/i18n/hu.json b/public/app/main/apps/openchannel/i18n/hu.json
deleted file mode 100644 (file)
index 8093eec..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-{
-  "OPENCHANNEL": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "AMAZONLEX": "AmazonLex",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "ACCESSKEYID": "Access key ID",
-    "SECRETACCESSKEY": "Access key secret",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot name",
-    "WELCOMEMESSAGE": "Welcome message",
-    "DIALOGFLOW": "Dialogflow",
-    "EDIT_DIALOGFLOW": "Edit Dialogflow configuration",
-    "LANGUAGE": "Language",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "ADVANCED": "Advanced",
-    "PROXY": "Proxy",
-    "TOKEN": "Token",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "DELETE": "Delete",
-    "CANNEDANSWERS": "Canned Answers",
-    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
-    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "REALTIME": "Realtime",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NAME": "Name",
-    "OPENCHANNELQUEUES": "Open Channel Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Access key ID is required",
-      "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
-      "BOTNAME_REQUIRED": "Bot name is required",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "KEY_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "The field text is required",
-      "NAME_REQUIRED": "Mandatory field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "REPLYURI_REQUIRED": "Mandatory field",
-      "REPLYURI_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "CONDITION_REQUIRED": "Mandatory field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
-    },
-    "STRATEGY": "Strategy",
-    "AGENT": "Agent",
-    "GOTO": "Goto",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "PRIORITY": "Priority",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
-    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
-    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
-    "PENALTY": "Penalty",
-    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
-    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
-    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
-    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
-    "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "OPENCHANNEL": "Open Channel",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
-    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
-    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
-    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
-    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
-    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
-    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "REPLYURI": "Reply URL",
-    "RECEIVEURI": "Receive URL",
-    "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions.",
-      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
-      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager List used to associate contacts",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
-    "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECT_ACCOUNT": "Select an account",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "INFO": "Info",
-    "KEY": "Key",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add Agent To Open Channel Queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
-    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
-    "SEND": "Send",
-    "TO": "To",
-    "MAPKEY": "Map Key",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
-  }
-}
diff --git a/public/app/main/apps/plugins/i18n/hu.json b/public/app/main/apps/plugins/i18n/hu.json
deleted file mode 100644 (file)
index be8be0f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "PLUGINS": {
-    "PLUGINS": "Plugins",
-    "ERRORS": {},
-    "HELP": {}
-  }
-}
index 5d71896..9f425b0 100644 (file)
@@ -17,8 +17,8 @@
     "MOUNT_POINT": "Berg",
     "AVG_LOAD": "AVG Laden",
     "TOTAL": "Gesamt",
-    "USED": "in Verwendung",
-    "FREE": "Frei",
+    "USED": "Verwendet",
+    "FREE": "Kostenlos",
     "NAME": "Name",
     "STATE": "Zustand",
     "CHAT": "Chat",
diff --git a/public/app/main/apps/settings/i18n/hu.json b/public/app/main/apps/settings/i18n/hu.json
deleted file mode 100644 (file)
index aa1bc8a..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-{
-  "SETTINGS": {
-    "RTLSUPPORT": "RTL Support",
-    "PREFERRED": "Preferred Logo",
-    "DEFAULT_PREFERRED": "Default Preferred Logo",
-    "FAVICON": "Favicon",
-    "DEFAULT_FAVICON": "Default Favicon",
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
-    "SESSIONS": "Sessions",
-    "ADDONS": "Add-ons",
-    "REPORT": "Report",
-    "SPLIT": "Split report",
-    "SPLITSIZECSV": "Split report size [CSV records]",
-    "SPLITSIZEPDF": "Split report size [PDF records]",
-    "SPLITSIZEXLSX": "Split report size [XLSX records]",
-    "ENABLEEMAILPREVIEW": "Enable Email Preview",
-    "JAWS": "Jaws",
-    "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
-    "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
-    "WEBRTC": "WebRTC",
-    "CALLYSQUARE": "Cally Square",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "UNLIMITED_CHANNELS": "Unlimited Channels",
-    "RELOAD": "Reload",
-    "VERIFY": "Verify",
-    "INTERFACE": "Interface",
-    "UPDATING": "Updating",
-    "REMOTE_VERSION": "Remote Version",
-    "NO_NEW_VERSION_AVAILABLE": "No new version available",
-    "TOP_N_PROCESSES": "Top {{value}} processes",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
-    "PROCESSES": "Processes",
-    "MOUNT_POINT": "Mount",
-    "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "WHATSAPP": "WhatsApp Connector",
-    "FAX": "Fax",
-    "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
-    "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
-    "VIDEO": "Video",
-    "SCREENRECORDING": "Screen Recording",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
-    "ID": "Id",
-    "MIN_INTERNAL": "Min Internal",
-    "MIN_MAILBOX": "Min Mailbox",
-    "INSTALLED_AT": "Installed At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_GENERAL": "Edit General",
-    "SECURE_PASSWORD": "Secure Password",
-    "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
-    "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
-    "HEADER_WHITELABEL": "Header White Label",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMTP_SERVICE": "Service",
-    "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
-    "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "USERNAME": "Username",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
-    "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Login Mail Frequency (sec)",
-    "DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
-    "APPZONE": "App Zone",
-    "EDIT_NETWORK": "Edit Network",
-    "DELETE_NETWORK": "Delete Network",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EXPIRATION_DATE": "Expiration Date",
-    "REQUEST_LICENSE": "Request License",
-    "EMAIL": "Email",
-    "SEND": "Send",
-    "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Month to month",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
-    "USEFUL_COMMANDS": "Useful Commands",
-    "COMMAND": "Command",
-    "PM2_LIST": "List all processes",
-    "PM2_START": "Start a process by id or name",
-    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
-    "PM2_RESTART": "Restart a process by id or name",
-    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
-    "PASSWORD": "Password",
-    "NO_AVAILABLE_INFO": "No available info",
-    "STUNADDR": "STUN Address",
-    "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
-    "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
-    "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "New Token Detected",
-    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
-    "NEW_TOKEN": "New Token",
-    "PRICES": "Prices",
-    "UPDATE_LICENSE": "Update License",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "GLOBAL": "Global",
-    "SMTP_AUTHENTICATION": "Authentication",
-    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
-    "ACCOUNTNAME": "Account Name",
-    "EMAILADDRESS": "Email Address",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
-    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email to",
-    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
-    "SECURITY": "Security",
-    "ALLOWEDLOGINATTEMPTS": "Allowed login attempts before locking the user/agent",
-    "BLOCKDURATION": "Minutes to wait before automatic unlock",
-    "AI": "A.I. Tools",
-    "AITOOLS": "A.I. Tools",
-    "SERVICE": "Service",
-    "NEW_CLOUDPROVIDER": "New Account",
-    "ADD_CLOUDPROVIDER": "Add Account",
-    "DELETE": "Delete",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "ACCESSKEY": "Access Key ID",
-    "EDIT_CLOUDPROVIDER": "Edit Account",
-    "DELETE_CLOUDPROVIDER": "Delete Account",
-    "LANGUAGE": "Language",
-    "BUCKET": "Bucket",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIBEREGION": "Transcribe Region",
-    "TRANSCRIBEACCOUNT": "Transcribe Account",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "SENTIMENTREGION": "Sentiment Analysis Region",
-    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
-    "SSO": "SSO",
-    "GOOGLE_SSO_ENABLED": "Google SSO Enabled",
-    "ENFORCE_PASSWORD_HISTORY": "Enforce Password History",
-    "PASSWORD_HISTORY_LIMIT": "Password History Limit",
-    "PRIVACY_POLICY_EMAIL": "Privacy Policy for Email Addresses",
-    "PRIVACY_POLICY_NAME": "Privacy Policy for Names",
-    "PRIVACY_POLICY_NUMBER": "Privacy Policy for Numbers",
-    "SEARCH_ON_ENTER_KEY": "Search on Enter key",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Chat interactions reload timeout",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Email interactions reload timeout",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel interactions reload timeout",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS interactions reload timeout",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector interactions reload timeout",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Stop recording on voice call transfer",
-    "HELP": {
-      "DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
-      "RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
-      "ADDRESS": "External (public) ip address",
-      "LOCALNETADDRESS": "Local ip address/subnet",
-      "SMTP_SECURE": "If true, the connection to the server will use TLS",
-      "SMTP_USERNAME": "Username used for authentication",
-      "SMTP_PASSWORD": "Password used for authentication",
-      "EMAILADDRESS": "The message origin Email address (from)",
-      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-      "LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed",
-      "USERNAME": "Username",
-      "PASSWORD": "Password",
-      "ENFORCE_PASSWORD_HISTORY": "Enables the validation against previously used passwords",
-      "PASSWORD_HISTORY_LIMIT": "Number of last used unique passwords to check",
-      "PRIVACY_POLICY": "Number of characters that will be replaced with an asterisk (*) (0 = all characters)",
-      "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)"
-    },
-    "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Mandatory field",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-      "ADDRESS_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_REQUIRED": "Mandatory field",
-      "MIN_MAILBOX_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "SMTP_USERNAME_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "SMTP_HOST_REQUIRED": "Mandatory field",
-      "SMTP_PORT_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PAGE_TITLE_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PLAN_REQUIRED": "Mandatory field",
-      "LICENSE_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
-      "BLOCKDURATION_REQUIRED": "Mandatory field",
-      "SERVICE_REQUIRED": "Mandatory field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory field",
-      "ACCESSKEY_REQUIRED": "Mandatory field",
-      "LANGUAGE_REQUIRED": "Mandatory field",
-      "BUCKET_REQUIRED": "Mandatory field",
-      "TRANSCRIBEREGION_REQUIRED": "Mandatory field",
-      "TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
-      "SENTIMENTREGION_REQUIRED": "Mandatory field",
-      "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
-    }
-  }
-}
index 9f9a57b..797230c 100644 (file)
     "PHONE_STATUS": "Phone Status",
     "PAUSE": "Pause",
     "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
+    "AGENTADD_QUEUE": "Add Agent To SMS Queue",
     "UNPAUSE": "End Pause",
     "DEFAULT_PAUSE": "Default pause",
     "LOGGED_IN": "Logged in",
diff --git a/public/app/main/apps/sms/i18n/hu.json b/public/app/main/apps/sms/i18n/hu.json
deleted file mode 100644 (file)
index 797230c..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-{
-  "SMS": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "AMAZONLEX": "AmazonLex",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "ACCESSKEYID": "Access key ID",
-    "SECRETACCESSKEY": "Access key secret",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot name",
-    "WELCOMEMESSAGE": "Welcome message",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
-    "CANNEDANSWERS": "Canned Answers",
-    "SMSCANNEDANSWERS": "Canned Answers",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_SMSCANNEDANSWER": "New Canned Answer",
-    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
-    "EDIT_SMSCANNEDANSWER": "Edit",
-    "DELETE_SMSCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "DELETE": "Delete",
-    "SENDERSTRING": "Sender String",
-    "DELIVERYREPORT": "Delivery Report",
-    "METHOD": "Method",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "SPYINTERACTION": "Spy",
-    "AUTOREPLY": "Auto Reply",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "TIMES": "Number of times per interaction",
-    "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SEND": "Send",
-    "TO": "To",
-    "MESSAGE": "Message",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "BASEURL": "Base URL",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Access key ID is required",
-      "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
-      "BOTNAME_REQUIRED": "Bot name is required",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "AUTHID_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
-      "METHOD_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "SID_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
-      "APIKEY_REQUIRED": "Mandatory Field",
-      "APPLICATIONID_REQUIRED": "Mandatory Field",
-      "ACCOUNTID_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
-    },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
-    "SID": "SID",
-    "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "SMS": "SMS",
-    "ID": "Id",
-    "APIKEY": "ApiKey",
-    "APPLICATIONID": "Application ID",
-    "ACCOUNTID": "Account ID",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SMSDISPOSITIONS": "SMS Dispositions",
-    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
-    "NEW_SMSDISPOSITION": "New SMS Disposition",
-    "ADD_SMSDISPOSITION": "Add SMS Disposition",
-    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
-    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
-    "NEW_SMSQUEUE": "New SMS Queue",
-    "NEW_SMSACCOUNT": "New SMS Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
-    "LANGUAGE": "Language",
-    "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate contacts",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "GOTO": "Goto",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add Agent To SMS Queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to SMS queue",
-    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
-  }
-}
index 3faefaf..2513166 100644 (file)
     "JSCRIPTY_SESSIONS": "جلسات Jscripty",
     "OMNICHANNEL_INTERACTIONS": "تفاعلات Omnichannel",
     "SCREEN_RECORDINGS": "تسجيلات الشاشة",
-    "VOICE_RECORDINGS": "التسجيلات الصوتية",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "تجاهل حالة انقطاع الوكيل لمكالمات المعاينة",
-    "SELECT_RECALLME_CAMPAIGN": "حدد استدعاء حملة",
-    "ALL_QUEUES_CHAT_INBOUND": " جميع قوائم الدردشة الواردة",
-    "ALL_QUEUES_FAX_INBOUND": "جميع قوائم انتظار الفاكس الواردة",
-    "ALL_QUEUES_MAIL_INBOUND": "كل قوائم البريد الإلكتروني الوارد",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "جميع قوائم انتظار القنوات المفتوحة الواردة",
-    "ALL_QUEUES_SMS_INBOUND": "جميع قوائم الرسائل القصيرة الواردة",
-    "ALL_QUEUES_VOICE_INBOUND": "كل قوائم انتظار الصوت الواردة",
-    "ALL_QUEUES_VOICE_OUTBOUND": "جميع قوائم انتظار المكالمات الصادرة",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار الدردشةالواردة",
-    "QUEUEADD_AGENT_FAX_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار الفاكس الواردة",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "إضافة ممثل خدمة إلى قوائم البريد الإلكتروني الوارد",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "إضافة ممثل خدمة لفتح قائمة انتظار القنوات الواردة",
-    "QUEUEADD_AGENT_SMS_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار SMS",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار الصوت الوارد",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "إضافة ممثل خدمة لحملات المكالمات الصادرة",
-    "SELECTED_QUEUES_CHAT_INBOUND": "قوائم انتظار الدردشة المحددة",
-    "SELECTED_QUEUES_FAX_INBOUND": "قوائم انتظار الفاكس المحددة",
-    "SELECTED_QUEUES_MAIL_INBOUND": "قوائم انتظار البريد الإلكتروني المحددة",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "قوائم محددة فتح القنوات المفتوحة",
-    "SELECTED_QUEUES_SMS_INBOUND": "قوائم انتظار الرسائل القصيرة المختارة",
-    "SELECTED_QUEUES_VOICE_INBOUND": "قوائم الانتظار الصوتية المحددة",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "حملات قائمة الانتظار المحددة",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "جميع قوائم انتظار WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "إضافة عامل إلى قوائم انتظار WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "قوائم انتظار WhatsApp المحددة"
+    "VOICE_RECORDINGS": "التسجيلات الصوتية"
   }
 }
index 8c6322c..fac07a2 100644 (file)
       "TRANSPORT": "Set the default transports in order of preference",
       "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
       "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5060",
       "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
       "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
     "JSCRIPTY_SESSIONS": "Jscripty Sessions",
     "OMNICHANNEL_INTERACTIONS": "Omnikanálové interakce",
     "SCREEN_RECORDINGS": "Záznamy z obrazovky",
-    "VOICE_RECORDINGS": "Hlasové nahrávky",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorovat stav přerušení agenta pro náhledová volání",
-    "SELECT_RECALLME_CAMPAIGN": "Vyberte kampaň Zavolejte mi",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Všechny fronty WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Přidejte agenta do front WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Vybrané fronty WhatsApp"
+    "VOICE_RECORDINGS": "Hlasové nahrávky"
   }
 }
index 006da2e..963c618 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Opsætter transporter. Rækkefølgen bestemmer den primære standard transport.",
       "HOST": "Find den client - IP eller hostname. Hvis du vil have telefonen til at registrere sig, skal du bruge nøgleordet dynamisk i stedet for en IP adresse.",
       "NAT": "Ændrer adfærden hos stjerne for klienter bag en firewall.Hvis en kommasepareret muligheder er 'nej', Stjerne vil ignorere alle indstillinger og sæt nat=no.",
-      "SIPEXPIRES": "Standard: 160",
+      "SIPEXPIRES": "Standard: 120",
       "SIPPORT": "Standard: 5160",
       "TYPE": "Bestemmer SIP rolle i stjerne. Bruger: bruges til at autentificere indgående - Peer: til udgående opkald - Ven: dækker både beskrivelse af ovenstående.",
       "CHATCAPACITY": "Nul betyder ubegrænset.",
     "JSCRIPTY_SESSIONS": "Jscripty-sessioner",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-interaktioner",
     "SCREEN_RECORDINGS": "Skærmoptagelser",
-    "VOICE_RECORDINGS": "Stemmeoptagelser",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorer agentpausestatus for forhåndsvisning af opkald",
-    "SELECT_RECALLME_CAMPAIGN": "Vælg Recall Me Campaign",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Tilføj til kø Agent kampagner",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Tilføj Agent til Voice køer",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Tilføj Agent til Chat køer",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Tilføj Agent til Postkøer",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Tilføj Agent til SMS KØER",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Tilføj Agent åbne kanal køer",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Tilføj Agent til Faxkøer",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Kø kampagner",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Udvalgte Kampagner kø",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Voice køer",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valgt Voice køer",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat køer",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Udvalgte Chat køer",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Postkøer",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Udvalgte Postkøer",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-køer",
-    "SELECTED_QUEUES_SMS_INBOUND": "Udvalgte SMS KØER",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle åbne kanal køer",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valgte en åben kanal køer",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Faxkøer",
-    "SELECTED_QUEUES_FAX_INBOUND": "Udvalgte Faxkøer",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-køer",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Føj agent til WhatsApp-køer",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valgte WhatsApp-køer"
+    "VOICE_RECORDINGS": "Stemmeoptagelser"
   }
 }
index 55127d8..d07b3e6 100644 (file)
     "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
     "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Endgeräte",
+    "TELEPHONES": "Telefonnummern",
     "CALLERID": "Anrufer-ID",
     "ENABLERECORDING": "Aufzeichnung aktiv",
     "STAFF": "Personal",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
     "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
-    "VOICE_RECORDINGS": "Sprachaufzeichnungen",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorieren Sie den Unterbrechungsstatus des Agenten für Vorschauanrufe",
-    "SELECT_RECALLME_CAMPAIGN": "Wählen Sie „Recall Me“-Kampagne",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
-    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen"
+    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
   }
 }
index 6d61428..15d1dea 100644 (file)
       "TRANSPORT": "Set the default transports in order of preference",
       "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
       "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5160",
       "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
       "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
     "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
     "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
-    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Add Agent to WhatsApp Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "All WhatsApp Queues",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Selected WhatsApp Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues"
+    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign"
   }
 }
index 31e543c..be2c3bd 100644 (file)
@@ -14,7 +14,7 @@
       "NAT": "Cambia el comportamiento de Asterisk para clientes detrás de un firewall. Si alguna de las opciones separadas por comas es 'no', Asterisk ignorará otras configuraciones y configurará nat = no",
       "OPENCHANNELCAPACITY": "Número máximo de interacciones de canal simultáneas por agente (0 = ilimitado)",
       "PICKUPGROUP": "Los grupos en los que el agente puede capturar llamadas",
-      "SIPEXPIRES": "Valor predeterminado: 160",
+      "SIPEXPIRES": "Valor predeterminado: 120",
       "SIPPORT": "Por defecto: 5160",
       "SMSCAPACITY": "Número máximo de interacciones de canal simultáneas por agente (0 = ilimitado)",
       "TRANSPORT": "Establezca los transportes predeterminados en orden de preferencia",
     "JSCRIPTY_SESSIONS": "Sesiones de Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interacciones omnicanal",
     "SCREEN_RECORDINGS": "Grabaciones de pantalla",
-    "VOICE_RECORDINGS": "Grabaciones de voz",
-    "ALL_QUEUE_CAMPAIGNS": "Todas las campañas en cola",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar el estado de interrupción del agente para las llamadas de vista previa",
-    "SELECT_RECALLME_CAMPAIGN": "Seleccione la campaña Recall Me",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas las colas de chat",
-    "ALL_QUEUES_FAX_INBOUND": "Todas las colas de fax",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas Las Colas de Correo Electrónico",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas las colas de canales abiertos",
-    "ALL_QUEUES_SMS_INBOUND": "Todas las Colas de SMS",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas las colas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agregar Agente a Cola de Chat",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agregar Agente a Cola de FAX",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agregar Agente a Cola de Correo Electrónico",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agregar Agente a Cola de Canales Abiertos",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agregar agente a cola SMS",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agregar Agente a cola de voz",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agregar Agente a Colas de Campañas",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Colas de Chat seleccionadas",
-    "SELECTED_QUEUES_FAX_INBOUND": "Colas de Fax seleccionadas",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Colas de Correo Electrónico seleccionadas",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Colas de Canal Abierto seleccionadas",
-    "SELECTED_QUEUES_SMS_INBOUND": "Colas SMS seleccionadas",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Colas de voz seleccionadas",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campañas de cola seleccionadas",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas las colas de WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agregar agente a las colas de WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Colas de WhatsApp seleccionadas"
+    "VOICE_RECORDINGS": "Grabaciones de voz"
   }
 }
index 0172d39..a5d5bfc 100644 (file)
       "TRANSPORT": "Set the default transports in order of preference",
       "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
       "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5060",
       "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
       "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
     "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
     "SCREEN_RECORDINGS": "Ekraanisalvestused",
-    "VOICE_RECORDINGS": "Helisalvestised",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Eelvaatekõnede puhul ignoreerige agendi katkestuse olekut",
-    "SELECT_RECALLME_CAMPAIGN": "Valige Meenuta mind kampaania",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad"
+    "VOICE_RECORDINGS": "Helisalvestised"
   }
 }
index 789d5ef..d0cc3b7 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "تنظیم پیش فرض را در خلسه است. نظام حمل و نقل پیش فرض اولیه را تعیین می کند.",
       "HOST": "چطور موکل - پيدا کردن IP یا نام میزبان است. اگر می خواهید شماره تلفن خود را ثبت کرده و برای استفاده از واژه كليدى به جای آدرس IP میزبان پویا.",
       "NAT": "تغییرات در رفتار Asterisk برای مراجعان در پشت یک دیوار آتش است.اگر یکی از گزینه ها از جمله جدا شده است خیر، Asterisk تنظیمات دیگری را ناديده گرفته خواهد شد و 3-1=تنظیم خیر.",
-      "SIPEXPIRES": "فرض: 160",
+      "SIPEXPIRES": "فرض: 120",
       "SIPPORT": "فرض: 5160",
       "TYPE": "نقش تعيين كننده در داخل نوشيدني asterisk است. کاربر تایید اعتبار ورودی استفاده می شود: - برای تماس های خروجی کمبودى: دوست: - هر دو خصوصیات پوشش بالاتر است.",
       "CHATCAPACITY": "صفر به معناى نامحدود است.",
     "JSCRIPTY_SESSIONS": "جلسات Jscripty",
     "OMNICHANNEL_INTERACTIONS": "تعاملات Omnichannel",
     "SCREEN_RECORDINGS": "ضبط صفحه",
-    "VOICE_RECORDINGS": "ضبط صدا",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "برای پیش\200cنمایش تماس\200cها، وضعیت شکست نماینده را نادیده بگیرید",
-    "SELECT_RECALLME_CAMPAIGN": "کمپین Recall Me را انتخاب کنید",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "عامل به صف مبارزات خود را اضافه کنید",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "عامل صفهای طولانی به صدا اضافه کنید",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "افزودن عنصر به صفهای طولانی چت روم",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "عامل صفهای طولانی به پست اضافه کنید",
-    "QUEUEADD_AGENT_SMS_INBOUND": "افزودن به صفهای طولانی عامل SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "عامل اضافه کنید تا کانال باز صفها",
-    "QUEUEADD_AGENT_FAX_INBOUND": "عامل صفهای طولانی به فكس را اضافه کنید",
-    "ALL_QUEUES_VOICE_OUTBOUND": "همه صف مبارزات",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "توی صف مبارزات انتخابی",
-    "ALL_QUEUES_VOICE_INBOUND": "صدای همه صفها",
-    "SELECTED_QUEUES_VOICE_INBOUND": "صفهای طولانی صدای انتخاب شده",
-    "ALL_QUEUES_CHAT_INBOUND": "همه صفها چت روم",
-    "SELECTED_QUEUES_CHAT_INBOUND": "صفهای طولانی چت روم انتخاب می شود",
-    "ALL_QUEUES_MAIL_INBOUND": "همه صفها پستی",
-    "SELECTED_QUEUES_MAIL_INBOUND": "صفهای طولانی پیدا کرده انتخاب می شود",
-    "ALL_QUEUES_SMS_INBOUND": "همه صفها SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "صفهای طولانی انتخاب SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "همه صفها کانال باز",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "صفهای طولانی انتخاب کانال را باز کنید",
-    "ALL_QUEUES_FAX_INBOUND": "همه صفها فكس",
-    "SELECTED_QUEUES_FAX_INBOUND": "صفهای طولانی فكس انتخاب می شود",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "همه صف های WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "عامل را به صف های WhatsApp اضافه کنید",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "صف های WhatsApp انتخاب شده است"
+    "VOICE_RECORDINGS": "ضبط صدا"
   }
 }
index 8760d34..13922c8 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Aseta oletusarvoinen kuljetukset. Järjestys määrittää ensisijaisen oletus kuljetuksen ajaksi.",
       "HOST": "Miten asiakas - IP-osoite tai isäntänimi. Jos haluat, että puhelin rekisteröivät itsensä, käytä avainsanaa dynaaminen sen sijaan ovat IP-osoite.",
       "NAT": "Muuttaa käyttäytymistä tähti asiakkaille palomuurin takana.Jos jokin pilkulla erotettuja valinnat on \"ei\", tähti ohittaa kaikki muut asetukset ja määritä nat=no.",
-      "SIPEXPIRES": "Oletus: 160",
+      "SIPEXPIRES": "Oletus: 120",
       "SIPPORT": "Oletus: 5160",
       "TYPE": "Määrittää SIP-asema tähdellä. Käyttäjä: varmentamisessa käytettävät saapuneet - Peer: lähtevät puhelut - ystävä: kattaa molemmat ominaisuudet.",
       "CHATCAPACITY": "Nolla tarkoittaa rajaton.",
     "JSCRIPTY_SESSIONS": "Jscripty-istunnot",
     "OMNICHANNEL_INTERACTIONS": "Omikanavaiset vuorovaikutukset",
     "SCREEN_RECORDINGS": "Näytön nauhoitukset",
-    "VOICE_RECORDINGS": "Äänitallenteet",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ohita agenttikatkon tila esikatselukutsuissa",
-    "SELECT_RECALLME_CAMPAIGN": "Valitse Muista minut -kampanja",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisää Edustajan jonoon kampanjoita",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisää agentin Voice jonot",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisää agentin Chat jonot",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisää agentin Mail jonot",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Lisää agentin SMS jonot",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisää agentin avoimen kanavan jonot",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Lisää agentin faksi jonot",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Kaikki jonoon kampanjoita",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitun jonon kampanjoita",
-    "ALL_QUEUES_VOICE_INBOUND": "Kaikki Voice jonot",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valittu ääni jonot",
-    "ALL_QUEUES_CHAT_INBOUND": "Kaikki Chat jonot",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valitun Chat jonot",
-    "ALL_QUEUES_MAIL_INBOUND": "Kaikki posti jonot",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valittuna olevan jonot",
-    "ALL_QUEUES_SMS_INBOUND": "Kaikkiin tekstiviestilaatikoihin jonot",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valittu SMS jonot",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kaikki avoimen kanavan jonot",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valittu avoimen kanavan jonot",
-    "ALL_QUEUES_FAX_INBOUND": "Kaikki faksi jonot",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valittu Fax jonot",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kaikki WhatsApp-jonot",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisää agentti WhatsApp-jonoihin",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitut WhatsApp -jonot"
+    "VOICE_RECORDINGS": "Äänitallenteet"
   }
 }
index 4a8092b..9465167 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Définir la valeur par défaut de transports. L'ordre détermine le transport par défaut.",
       "HOST": "Comment trouver le client - IP ou nom d'hôte. Si vous voulez que le téléphone s'inscrire lui-même, utilisez le mot-clé au lieu d'adresse IP dynamique.",
       "NAT": "Change le comportement de Asterisk pour les clients derrière un pare-feu.Si l'une des options séparées par des virgules est 'non', l'astérisque permet de ne pas tenir compte des autres paramètres et définissez le nat =no.",
-      "SIPEXPIRES": "Par défaut : 160",
+      "SIPEXPIRES": "Par défaut : 120",
       "SIPPORT": "Par défaut : 5160",
       "TYPE": "Détermine le rôle SIP au sein de Asterisk. Utilisateur : utilisé pour authentifier les - : par les pairs pour les appels sortants - AMI : couvre à la fois les caractéristiques de la ci-dessus.",
       "CHATCAPACITY": "0 signifie illimité.",
     "JSCRIPTY_SESSIONS": "Sessions de script",
     "OMNICHANNEL_INTERACTIONS": "Interactions omnicanales",
     "SCREEN_RECORDINGS": "Enregistrements d'écran",
-    "VOICE_RECORDINGS": "Enregistrements vocaux",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorer l'état de pause de l'agent pour les appels de prévisualisation",
-    "SELECT_RECALLME_CAMPAIGN": "Sélectionnez la campagne Rappelez-moi",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Ajouter l'agent à la file d'attente Motion Bull",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Ajouter l'agent à la file d'attente voix",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Ajouter l'agent à la file d'attente discussion Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Ajouter l'agent à la file d'attente Mail",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Ajouter l'agent à la file d'attente SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Ajouter l'agent à la file d'attente Openchannel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Ajouter l'agent à la file d'attente Fax",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Toutes les campagnes Motion Bull",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campagne(s) Motion Bull sélectionnée(s)",
-    "ALL_QUEUES_VOICE_INBOUND": "Toutes les files d'attente voix",
-    "SELECTED_QUEUES_VOICE_INBOUND": "File(s) d'attente voix sélectionnée(s)",
-    "ALL_QUEUES_CHAT_INBOUND": "Toutes les files d'attentes Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "File(s) d'attente Chat selectionnée(s)",
-    "ALL_QUEUES_MAIL_INBOUND": "Toutes les files d'attentes Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "File(s) d'attente Mail sélectionnée(s)",
-    "ALL_QUEUES_SMS_INBOUND": "Toutes les files d'attentes SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "File(s) d'attente SMS sélectionnée(s)",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Toutes les files d'attente Openchannel",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Files d'attente ",
-    "ALL_QUEUES_FAX_INBOUND": "Toutes les files d'attente Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "File(s) d'attente Fax sélectionnée(s)",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Toutes les files d'attente WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Ajouter un agent aux files d'attente WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Files d'attente WhatsApp sélectionnées"
+    "VOICE_RECORDINGS": "Enregistrements vocaux"
   }
 }
index 2ee69e6..bbdbf26 100644 (file)
       "TRANSPORT": "הגדר העברות ברירת מחדל לפי סדר העדיפות",
       "HOST": "איתור כתובת IP או שם מארח של הלקוח: כדי שהטלפון ירשום את עצמו, השתמש במילת המפתח 'דינמית' במקום ב'כתובת ה-IP של המארח'",
       "NAT": "משנה את ההתנהגות של Asterisk עבור לקוחות מאחורי חומת אש. אם אחת מהאפשרויות המופרדות בפסיקים היא 'לא', Asterisk יתעלם מכל ההגדרות האחרות ויחיל nat=no.",
-      "SIPEXPIRES": "ברירת מחדל: 160",
+      "SIPEXPIRES": "ברירת מחדל: 120",
       "SIPPORT": "ברירת מחדל: 5160",
       "TYPE": "קובע את תפקיד ה-SIP בעזרת Asterisk. משתמש: לאישור שיחות נכנסות – עמית: לשיחות יוצאות – חבר: כולל מאפיינים של שיחות נכנסות וגם יוצאות.",
       "CHATCAPACITY": "המספר המרבי של אינטראקציות ערוץ מקבילות לנציג (0=בלתי מוגבל)",
     "JSCRIPTY_SESSIONS": "מושבי כתבי יד",
     "OMNICHANNEL_INTERACTIONS": "אינטראקציות בכל ערוץ",
     "SCREEN_RECORDINGS": "הקלטות מסך",
-    "VOICE_RECORDINGS": "הקלטות קוליות",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "התעלם מסטטוס הפסקת סוכן עבור שיחות תצוגה מקדימה",
-    "SELECT_RECALLME_CAMPAIGN": "בחר 'זכיר לי מסע פרסום'",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "הוספתף נציג למבצעי תורים",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "הוספת נציג לתורי קול",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "הוספת נציג לתורי צ'אט",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "הוספת נציג לתורי דוא\"ל",
-    "QUEUEADD_AGENT_SMS_INBOUND": "הוספת נציג לתורי מסרונים",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "הוספת נציג לתורי ערוצים פתוחים",
-    "QUEUEADD_AGENT_FAX_INBOUND": "הוספת נציג לתורי פקס",
-    "ALL_QUEUES_VOICE_OUTBOUND": "כל מבצעי התורים",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "מבצעי תורים נבחרים",
-    "ALL_QUEUES_VOICE_INBOUND": "כל תורי הקול",
-    "SELECTED_QUEUES_VOICE_INBOUND": "תורי קול נבחרים",
-    "ALL_QUEUES_CHAT_INBOUND": "כל תורי הצ'אט",
-    "SELECTED_QUEUES_CHAT_INBOUND": "תורי צ'אט נבחרים",
-    "ALL_QUEUES_MAIL_INBOUND": "כל תורי הדוא\"ל",
-    "SELECTED_QUEUES_MAIL_INBOUND": "תורי דוא\"ל נבחרים",
-    "ALL_QUEUES_SMS_INBOUND": "כל תורי ה-SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "תורי SMS נבחרים",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "כל תורי הערוצים הפתוחים",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "תורי ערוצים פתוחים נבחרים",
-    "ALL_QUEUES_FAX_INBOUND": "כל תורי הפקס",
-    "SELECTED_QUEUES_FAX_INBOUND": "תורי פקס נבחרים",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "כל התורים ב- WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "הוסף סוכן לתורי WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "תורי WhatsApp שנבחרו"
+    "VOICE_RECORDINGS": "הקלטות קוליות"
   }
 }
index 52f244a..bec04c4 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "डिफ़ॉल्ट केपरिवहन सेट करें क्रम निर्धारण की प्राथमिक डिफ़ॉल्ट परिवहन।",
       "HOST": "ग्राहक को कैसे - IP होस्ट नाम या है। यदि आप चाहते हैं कि फ़ोन रजिस्\200dटर करने का उपयोग करें. IP होस्ट के बजाय गतिशील कीवर्ड",
       "NAT": "ग्राहकों के लिए तारांकन के व्यवहार को पीछे फ़ायरवॉल.यदि कोई अलग-अल्पविराम की विकल्प है 'नहीं', तारांकन परटिप्प ाी और स ९सी अन्य सेटिंग्स सेट आइप गीतांजलिश्री का तिरोहित=सं.",
-      "SIPEXPIRES": "डिफ़ॉल्ट: 160",
+      "SIPEXPIRES": "डिफ़ॉल्ट: 120",
       "SIPPORT": "डिफ़ॉल्ट: 5160",
       "TYPE": "रखावके कमरंद की भूमिका के तारांक लगा। उपयोगकर्ता को प्रमाणित करने के लिए प्रयोग किया :------- मित्र आउटगोइंग कॉल के लिए पीयर इनकमिंग कार्यनिष्पादनके विशेषताओं के ऊपर है।",
       "CHATCAPACITY": "असीमित अर्थ शून्य",
     "JSCRIPTY_SESSIONS": "जेस्क्रिप्टी सत्र",
     "OMNICHANNEL_INTERACTIONS": "ओमनीचैनल इंटरैक्शन",
     "SCREEN_RECORDINGS": "स्क्रीन रिकॉर्डिंग",
-    "VOICE_RECORDINGS": "वॉयस रिकॉर्डिंग",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "पूर्वावलोकन कॉल के लिए एजेंट ब्रेक स्थिति पर ध्यान न दें",
-    "SELECT_RECALLME_CAMPAIGN": "रिकॉल मी कैंपेन चुनें",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "लोकतंत्रमें अभियानों एजेंट को जोड़ें",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "ध्वनि स्वर जोड़ने के एजेंट को कतार",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "चैट एजेंट को जोड़ने वाली कतारों",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "मेल जोड़ना एजेंट को कतार",
-    "QUEUEADD_AGENT_SMS_INBOUND": "SMS के एजेंट को जोड़ने वाली कतारों",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "एजेंट को जोड़ने के लिए खुले चैनल कतार",
-    "QUEUEADD_AGENT_FAX_INBOUND": "एजेंट को फैक्स कतार में जोड़ें",
-    "ALL_QUEUES_VOICE_OUTBOUND": "सभी कतार अभियान",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "चयनित कतार अभियान",
-    "ALL_QUEUES_VOICE_INBOUND": "सभी वॉयस कतार",
-    "SELECTED_QUEUES_VOICE_INBOUND": "चयनित आवाज कतार",
-    "ALL_QUEUES_CHAT_INBOUND": "सभी चैट कतार",
-    "SELECTED_QUEUES_CHAT_INBOUND": "चयनित चैट कतार",
-    "ALL_QUEUES_MAIL_INBOUND": "हर मेल कतार",
-    "SELECTED_QUEUES_MAIL_INBOUND": "चयनित मेल कतार",
-    "ALL_QUEUES_SMS_INBOUND": "सभी SMS कतार",
-    "SELECTED_QUEUES_SMS_INBOUND": "चयनित SMS कतार",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "सभी खुले चैनल कतार",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "चयनित खुले चैनल कतार",
-    "ALL_QUEUES_FAX_INBOUND": "सभी फैक्स कतार",
-    "SELECTED_QUEUES_FAX_INBOUND": "चयनित फैक्स कतार",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "सभी WhatsApp कतारें",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "एजेंट को व्हाट्सएप कतार में जोड़ें",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "चयनित व्हाट्सएप कतारें"
+    "VOICE_RECORDINGS": "वॉयस रिकॉर्डिंग"
   }
 }
diff --git a/public/app/main/apps/staff/i18n/hu.json b/public/app/main/apps/staff/i18n/hu.json
deleted file mode 100644 (file)
index 287a788..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-{
-  "STAFF": {
-    "MANAGE_API_KEY": "API Key Manager",
-    "GENERATE": "Generate",
-    "REGENERATE": "Regenerate",
-    "REMOVE": "Remove",
-    "APIKEYMANAGER_USER": "API Key Manager",
-    "APIKEY": "API Key",
-    "VIDEOSUPPORT": "Video support",
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEOECORDING": "Enable Video Recording",
-    "ENABLESCREENRECORDINGBYAGENT": "Enable Screen Recording by Agent",
-    "ENABLEAUTOMATICSCREENRECORDING": "Enable Automatic Screen Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
-    "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
-    "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
-    "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
-    "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select None",
-    "SELECTED": "Selected",
-    "DELETE_SELECTED": "Delete selected",
-    "EXPORT_SELECTED": "Export selected",
-    "ALL_USERS": "All users",
-    "ALL_AGENTS": "All agents",
-    "SORT": "sort",
-    "NAME": "Name",
-    "FULLNAME": "Full Name",
-    "A_TO_Z": "(A to Z)",
-    "Z_TO_A": "(Z to A)",
-    "MORE": "More",
-    "DELETE_USER": "Delete User",
-    "EDIT_USER": "Edit User",
-    "DELETE_AGENT": "Delete Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "DELETE": "Delete",
-    "SAVE": "SAVE",
-    "ADD_USER": "ADD USER",
-    "ADD_AGENT": "ADD AGENT",
-    "NO_RESULTS": "No results..",
-    "CLOSE_DIALOG": "Close dialog",
-    "NAME_REQUIRED": "Name (required)",
-    "USERNAME": "Username",
-    "SHOW_ALL_FIELDS": "Show All Fields",
-    "PHONE_NUMBER": "Phone number",
-    "EMAIL": "Email",
-    "PASSWORD": "Password",
-    "ERRORS": {
-      "CONFIRM_REQUIRED": "Mandatory field",
-      "ALLOWCODECS_REQUIRED": "Mandatory field",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "DTLSCERTFILE_REQUIRED": "Mandatory field",
-      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_REQUIRED": "Mandatory field",
-      "MAILCAPACITY_REQUIRED": "Mandatory field",
-      "FAXCAPACITY_REQUIRED": "Mandatory field",
-      "SMSCAPACITY_REQUIRED": "Mandatory field",
-      "WHATSAPPCAPACITY_REQUIRED": "Mandatory field",
-      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
-      "SIPEXPIRES_REQUIRED": "Mandatory field",
-      "SIPPORT_REQUIRED": "Mandatory field",
-      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
-      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
-      "BUSYNUMBER_REQUIRED": "Mandatory field",
-      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
-      "MONITOREXTENSION_REQUIRED": "Mandatory field",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!@#$%^&-_=+[{]}.",
-      "CRUDPERMISSIONS_REQUIRED": "Mandatory field",
-      "USERPROFILE_REQUIRED": "Mandatory field",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
-    },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
-    "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
-    "DISABLED": "Deactivated",
-    "BLOCKED": "Locked",
-    "HELP": {
-      "DISABLED": "select to deactivate / unselect to reactivate",
-      "BLOCKED": "Lock / Unlock access",
-      "APIKEY": "Please use 'API key manager' button on toolbar to manage this key",
-      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
-      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Allowed Codecs in order of preference",
-      "TRANSPORT": "Set the default transports in order of preference",
-      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
-      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 120",
-      "SIPPORT": "Default: 5160",
-      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
-      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "CALLGROUP": "The agent's callgroup",
-      "PICKUPGROUP": "The groups in which the agent can answer calls",
-      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "SAVE_PERMISSIONS": "Every section containing any pending changes will be saved",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Custom Dashboards permissions are managed in the Tools module",
-      "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
-      "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
-      "WSS_PORT": "Default: 8089"
-    },
-    "NEW_PASSWORD": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
-    "HOST": "Host",
-    "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
-    "WHATSAPPCAPACITY": "WhatsApp Connector Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
-    "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto Answer",
-    "ENABLESETTINGS": "Enable Settings",
-    "CALL_FORWARDING": "Call Forwarding",
-    "UNCONDITIONAL": "Unconditional",
-    "UNCONDITIONALNUMBER": "Unconditional Number",
-    "NOREPLY": "No Reply",
-    "NOREPLYNUMBER": "No Reply Number",
-    "BUSY": "Busy",
-    "BUSYNUMBER": "Busy Number",
-    "REMOTE_CONTROL": "Remote Control",
-    "REMOTECONTROL": "Remote Control",
-    "REMOTECONTROLPORT": "Remote Control Port",
-    "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
-    "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Add Agent to WhatsApp Queues",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
-    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
-    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
-    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
-    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
-    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Add User to WhatsApp Queues",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
-    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
-    "ALL_VOICE_QUEUES": "All Voice Queues",
-    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
-    "ALL_CHAT_QUEUES": "All Chat Queues",
-    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
-    "ALL_MAIL_QUEUES": "All Email Queues",
-    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
-    "ALL_SMS_QUEUES": "All SMS Queues",
-    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
-    "ALL_WHATSAPP_QUEUES": "All WhatsApp Queues",
-    "SELECTED_WHATSAPP_QUEUES": "Selected WhatsApp Queues",
-    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
-    "ALL_FAX_QUEUES": "All Fax Queues",
-    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
-    "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "WHATSAPP": "WhatsApp Connector",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READ_PERMISSION": "Read",
-    "EDIT_PERMISSION": "Edit",
-    "DELETE_PERMISSION": "Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
-    "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
-    "MOBILE": "Mobile",
-    "PREFIXREQUIRED": "Prefix Required",
-    "MANAGE_PERMISSIONS": "Manage Permissions",
-    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
-    "ALL_VOICEQUEUES": "All Voice Queues",
-    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
-    "USERADD_CHATQUEUES": "Add Chat Queue to User",
-    "ALL_CHATQUEUES": "All Chat Queues",
-    "SELECTED_CHATQUEUES": "Selected Email Queues",
-    "USERADD_MAILQUEUES": "Add Email Queue to User",
-    "ALL_MAILQUEUES": "All Email Queues",
-    "SELECTED_MAILQUEUES": "Selected Chat Queues",
-    "USERADD_SMSQUEUES": "Add SMS Queue to User",
-    "ALL_SMSQUEUES": "All SMS Queues",
-    "SELECTED_SMSQUEUES": "Selected SMS Queues",
-    "USERADD_WHATSAPPQUEUES": "Add Whataspp Queue to User",
-    "ALL_WHATSAPPQUEUES": "All Whataspp Queues",
-    "SELECTED_WHATSAPPQUEUES": "Selected WhatsApp Queues",
-    "USERADD_FAXQUEUES": "Add Fax Queue to User",
-    "ALL_FAXQUEUES": "All Fax Queues",
-    "SELECTED_FAXQUEUES": "Selected Fax Queues",
-    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
-    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
-    "USERADD_PROJECTS": "Add Cally Square Project to User",
-    "ALL_PROJECTS": "All Cally Square Projects",
-    "SELECTED_PROJECTS": "Selected Cally Square Projects",
-    "USERADD_CHATWEBSITES": "Add Chat Website to User",
-    "ALL_CHATWEBSITES": "All Chat Websites",
-    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
-    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
-    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
-    "USERADD_MAILACCOUNTS": "Add Email Account to User",
-    "ALL_MAILACCOUNTS": "All Email Accounts",
-    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
-    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
-    "ALL_FAXACCOUNTS": "All Fax Accounts",
-    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
-    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
-    "ALL_SMSACCOUNTS": "All SMS Accounts",
-    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
-    "USERADD_WHATSAPPACCOUNTS": "Add WhatsApp Account to User",
-    "ALL_WHATSAPPACCOUNTS": "All WhatsApp Accounts",
-    "SELECTED_WHATSAPPACCOUNTS": "Selected WhatsApp Accounts",
-    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "USERPROFILES": "User Profiles",
-    "USERPROFILE": "User Profile",
-    "NEW_USERPROFILE": "New User Profile",
-    "ADD_USERPROFILE": "Add User Profile",
-    "EDIT_USERPROFILE": "Edit User Profile",
-    "CLONE_USERPROFILE": "Clone User Profile",
-    "DELETE_USERPROFILE": "Delete User Profile",
-    "CRUDPERMISSIONS": "Permission Type",
-    "SECTIONS": "Sections",
-    "MODULES": "Modules",
-    "SUMMARY": "Summary",
-    "REPORT_TYPE": "Report Type",
-    "PERMISSIONS_MANAGE": "Manage",
-    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Permissions",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Automatically associate every current and future resource of this section to the User Profile",
-    "PERMISSIONS_PLACEHOLDER_SEARCH": "Search...",
-    "PERMISSIONS_SELECT_SECTION": "Select a section",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Select report type",
-    "PERMISSIONS_ALL_RESOURCES": "All resources",
-    "PERMISSIONS_SELECTED_RESOURCES": "Selected resources",
-    "PERMISSIONS_SECTION_HIDE": "Hide section to the User",
-    "PERMISSIONS_SECTION_SHOW": "Show section to the User",
-    "PERMISSIONS_WARNING_ENABLE_ALL": "All {{sectionName}} subsections and their resources will be enabled. Are you sure you want to continue?",
-    "PERMISSIONS_WARNING_CLOSE": "You have unsaved changes. Are you sure you want to exit without saving?",
-    "NOTIFICATIONS": {
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section enabled",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section disabled",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} section saved",
-      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Permissions successfully updated!"
-    },
-    "CONFIRM": "Confirm",
-    "CANCEL": "Cancel",
-    "CLOSE": "Close",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unauthorized action",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "You are not allowed to access the selected section",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "You are not allowed to create the resource",
-    "MASK_SENSITIVE_DATA": "Mask Sensitive Data",
-    "WSS_PORT": "WSS Port",
-    "DOWNLOADS": "Downloads",
-    "DOWNLOAD_PERMISSIONS": "Download Permissions",
-    "VOICE_RECORDINGS": "Voice Recordings",
-    "OMNICHANNEL_INTERACTIONS": "Omnichannel Interactions",
-    "ATTACHMENTS": "Attachments",
-    "SCREEN_RECORDINGS": "Screen Recordings",
-    "JSCRIPTY_SESSIONS": "Jscripty Sessions",
-    "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
-    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
-    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign",
-    "ALL_QUEUES_CHAT_INBOUND": "Minden csevegési sor",
-    "ALL_QUEUES_FAX_INBOUND": "Minden faxsor",
-    "ALL_QUEUES_MAIL_INBOUND": "Minden e-mail sor",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Minden nyitott csatornasor",
-    "ALL_QUEUES_SMS_INBOUND": "Minden SMS-sor",
-    "ALL_QUEUES_VOICE_INBOUND": "Minden hangsor",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Minden sorkampány",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Minden WhatsApp várólista",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Ügynök hozzáadása a csevegési sorokhoz",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Ügynök hozzáadása a faxsorokhoz",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Ügynök hozzáadása az e-mail sorokhoz",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Ügynök hozzáadása a nyitott csatornasorokhoz",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Ügynök hozzáadása az SMS-sorokhoz",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Ügynök hozzáadása a Voice Queues-hez",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Ügynök hozzáadása a kampányok sorába",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Ügynök hozzáadása a WhatsApp Várólistákhoz",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Kiválasztott csevegési sorok",
-    "SELECTED_QUEUES_FAX_INBOUND": "Kiválasztott faxsorok",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Kiválasztott e-mail sorok",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Kijelölt Nyitott csatornasorok",
-    "SELECTED_QUEUES_SMS_INBOUND": "Kiválasztott SMS-sorok",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Kiválasztott hangsorok",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Kiválasztott sorkampányok",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Kiválasztott WhatsApp-várólisták"
-  }
-}
index 0c68cc6..6a5dd29 100644 (file)
@@ -54,7 +54,7 @@
       "NAT": "Mengubah perilaku Asterisk untuk klien di belakang firewall. Jika salah satu opsi yang dipisahkan koma adalah 'tidak', Asterisk akan mengabaikan pengaturan lain dan mengatur nat = no",
       "OPENCHANNELCAPACITY": "Jumlah maksimum interaksi saluran bersamaan per agen (0 = tidak terbatas)",
       "PICKUPGROUP": "Grup tempat agen dapat menjawab panggilan",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5160",
       "SMSCAPACITY": "Jumlah maksimum interaksi saluran bersamaan per agen (0 = tidak terbatas)",
       "TRANSPORT": "Setel transport default sesuai urutan preferensi",
     "JSCRIPTY_SESSIONS": "Sesi Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interaksi Multisaluran",
     "SCREEN_RECORDINGS": "Rekaman Layar",
-    "VOICE_RECORDINGS": "Rekaman Suara",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Abaikan status istirahat agen untuk panggilan pratinjau",
-    "SELECT_RECALLME_CAMPAIGN": "Pilih Kampanye Ingat Saya",
-    "ALL_QUEUES_CHAT_INBOUND": "Semua Antrean Obrolan",
-    "ALL_QUEUES_FAX_INBOUND": "Semua Antrian Faks",
-    "ALL_QUEUES_MAIL_INBOUND": "Semua Antrian Email",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Semua Antrian Saluran Terbuka",
-    "ALL_QUEUES_SMS_INBOUND": "Semua Antrean SMS",
-    "ALL_QUEUES_VOICE_INBOUND": "Semua Antrian Suara",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Semua Kampanye Antrean",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Tambahkan Agen ke Antrean Obrolan",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Tambahkan Agen ke Antrean Faks",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Tambahkan Agen ke Antrean Email",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Tambahkan Agen ke Open Channel Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Tambahkan Agen ke Antrean SMS",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Tambahkan Agen ke Antrian Suara",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Tambahkan Agen ke Kampanye Antrean",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Antrean Obrolan Terpilih",
-    "SELECTED_QUEUES_FAX_INBOUND": "Antrian Faks yang Dipilih",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Antrean Email Terpilih",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Antrian Saluran Terbuka yang Dipilih",
-    "SELECTED_QUEUES_SMS_INBOUND": "Antrian SMS yang Dipilih",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Antrean Suara yang Dipilih",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Kampanye Antrian Terpilih",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Semua Antrean WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Tambahkan Agen ke Antrean WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Antrean WhatsApp yang Dipilih"
+    "VOICE_RECORDINGS": "Rekaman Suara"
   }
 }
index b77d91e..4da6527 100644 (file)
       "TRANSPORT": "Imposta i protocolli di default (saranno gestiti nell'ordine)",
       "HOST": "Come trovare il client - IP o nome host. Se si vuole che il telefono si registri autonomamente, usare la stringa 'dynamic' invece dell' IP dell'Host",
       "NAT": "Cambia il comportamento di asterisk per i client dietro un firewall. Se almeno una delle opzioni separate da virgola è 'no', Asterisk ignorerà tutte le altre e imposterà nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5160",
       "TYPE": "Determina il ruolo del SIP all'interno di asterisk. User: usato per identificare le chiamate in arrivo - Peer: per le chiamate in uscita - Friend: copre entrambe le caratteristiche di User e Peer",
       "CHATCAPACITY": "Inserire il numero massimo di interazioni concorrenti per il canale (0=illimitato)",
     "CONTACT_MANAGER_LISTS": "Liste Manager Contatti",
     "CALLYSQUARE_RECORDINGS": "Registrazioni Cally Square",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignora lo stato di pausa per le chiamate preview",
-    "SELECT_RECALLME_CAMPAIGN": "Seleziona Campagna Recall Me",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Aggiungi Agente a Campagne Coda",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Aggiungi Agente a code Voce",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Aggiungi Agente a code Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Aggiungi Agente a code Email",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Aggiungi Agente a code SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Aggiungi Agente a code Open Channel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Aggiungi Agente a code Fax",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Tutte le Campagne Coda",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campagne Coda selezionate",
-    "ALL_QUEUES_VOICE_INBOUND": "Tutte le code",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Code Voce selezionate",
-    "ALL_QUEUES_CHAT_INBOUND": "Tutte le code Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Code Chat selezionate",
-    "ALL_QUEUES_MAIL_INBOUND": "Tutte le code Email",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Code Email selezionate",
-    "ALL_QUEUES_SMS_INBOUND": "Tutte le code SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Code SMS selezionate",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Tutte le code Open Channel",
-    "ALL_QUEUES_FAX_INBOUND": "Tutte le code Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Code Fax selezionate",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selezionare le code Open Channel",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Tutte le code di WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Aggiungi agente alle code di WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Code WhatsApp selezionate"
+    "SELECT_RECALLME_CAMPAIGN": "Seleziona Campagna Recall Me"
   }
 }
index e7628f3..d238731 100644 (file)
@@ -54,7 +54,7 @@
       "NAT": "ファイアウォールの内側にあるクライアントのAsteriskの動作を変更します。 カンマ区切りのオプションのいずれかが 'no'の場合、Asteriskは他の設定を無視し、nat = noを設定します。",
       "OPENCHANNELCAPACITY": "エージェントあたりの同時チャネルインタラクションの最大数(0 =無制限)",
       "PICKUPGROUP": "エージェントがコールに応答できるグループ",
-      "SIPEXPIRES": "デフォルト:160",
+      "SIPEXPIRES": "デフォルト:120",
       "SIPPORT": "デフォルト:5160",
       "SMSCAPACITY": "エージェントあたりを同時チャネルインタラクションの最大数(0 =無制限)",
       "TRANSPORT": "優先順位でデフォルト転送を設定します",
     "JSCRIPTY_SESSIONS": "Jscriptyセッション",
     "OMNICHANNEL_INTERACTIONS": "オムニチャネルの相互作用",
     "SCREEN_RECORDINGS": "スクリーンレコーディング",
-    "VOICE_RECORDINGS": "音声録音",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "プレビューコールのエージェントブレークステータスを無視する",
-    "SELECT_RECALLME_CAMPAIGN": "リコールミーキャンペーンを選択",
-    "ALL_QUEUES_CHAT_INBOUND": "すべてのチャットキュー",
-    "ALL_QUEUES_FAX_INBOUND": "すべてのFAXキュー",
-    "ALL_QUEUES_MAIL_INBOUND": "すべてのメールキュー",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "すべてのオープンチャネルキュー",
-    "ALL_QUEUES_SMS_INBOUND": "すべてのSMSキュー",
-    "ALL_QUEUES_VOICE_INBOUND": "すべての音声キュー",
-    "ALL_QUEUES_VOICE_OUTBOUND": "すべてのキューキャンペーン",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "チャットキューにエージェントを追加",
-    "QUEUEADD_AGENT_FAX_INBOUND": "FAXキューにエージェントを追加",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "メールキューにエージェントを追加",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "オープンチャネルキューにエージェントを追加",
-    "QUEUEADD_AGENT_SMS_INBOUND": "SMSキューにエージェントを追加",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "音声キューにエージェントを追加",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "キューキャンペーンにエージェントを追加",
-    "SELECTED_QUEUES_CHAT_INBOUND": "選択されたチャットキュー",
-    "SELECTED_QUEUES_FAX_INBOUND": "選択されたFAXキュー",
-    "SELECTED_QUEUES_MAIL_INBOUND": "選択されたメールキュー",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "選択されたオープンチャンネルキュー",
-    "SELECTED_QUEUES_SMS_INBOUND": "選択されたSMSキュー",
-    "SELECTED_QUEUES_VOICE_INBOUND": "選択された音声キュー",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "選択されたキューキャンペーン",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "すべてのWhatsAppキュー",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsAppキューへのエージェントの追加",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "選択されたWhatsAppキュー"
+    "VOICE_RECORDINGS": "音声録音"
   }
 }
index f6d9ecc..4ac634c 100644 (file)
     "JSCRIPTY_SESSIONS": "Jscripty 세션",
     "OMNICHANNEL_INTERACTIONS": "옴니 채널 상호 작용",
     "SCREEN_RECORDINGS": "화면 녹화",
-    "VOICE_RECORDINGS": "음성 녹음",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "미리보기 통화에 대한 상담원 휴식 상태 무시",
-    "SELECT_RECALLME_CAMPAIGN": "리콜 미 캠페인 선택",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "상담원 발신 음성에 상담그룹 추가",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "상담원 수신 음성에 상담그룹 추가",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "상담원 수신 채팅에 상담그룹 추가",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "상담원 수신 이메일에 상담그룹 추가",
-    "QUEUEADD_AGENT_SMS_INBOUND": "상담원 수신 SMS에 상담그룹 추가",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "상담원 수신 오픈채널에 상담그룹 추가",
-    "QUEUEADD_AGENT_FAX_INBOUND": "상담원 수신 팩스에 상담그룹 추가",
-    "ALL_QUEUES_VOICE_OUTBOUND": "전체상담그룹 발신 음성",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "선택된 상담그룹 발신 음성",
-    "ALL_QUEUES_VOICE_INBOUND": "전체 상담그룹 수신 음성",
-    "SELECTED_QUEUES_VOICE_INBOUND": "선택된 상담그룹 수신 음성",
-    "ALL_QUEUES_CHAT_INBOUND": "전체 상담그룹 수신 채팅",
-    "SELECTED_QUEUES_CHAT_INBOUND": "선택된 상담그룹 수신 채팅",
-    "ALL_QUEUES_MAIL_INBOUND": "전체 상담그룹 수신 이메일",
-    "SELECTED_QUEUES_MAIL_INBOUND": "선택된 상담그룹 수신 이메일",
-    "ALL_QUEUES_SMS_INBOUND": "전체 상담그룹 수신 SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "선택된 상담그룹 수신 SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "전체 상담그룹 수신 오픈채널",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "선택된 상담그룹 수신 오픈채널",
-    "ALL_QUEUES_FAX_INBOUND": "전체 상담그룹 수신 팩스",
-    "SELECTED_QUEUES_FAX_INBOUND": "선택된 상담그룹 수신 팩스",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "모든 WhatsApp 대기열",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsApp 대기열에 에이전트 추가",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "선택된 WhatsApp 대기열"
+    "VOICE_RECORDINGS": "음성 녹음"
   }
 }
index 6766723..cb980f4 100644 (file)
       "TRANSPORT": "Nustatykite numatytuosius pernešimus pirmenybės tvarka",
       "HOST": "Kaip rasti klientą - IP arba pagrindinio kompiuterio vardas. Jei norite, kad telefonas pats užsiregistruotų, vietoj pagrindinio IP naudokite raktinį žodį „dinaminis“",
       "NAT": "Keičia „Asterisk“ klientų elgesį už ugniasienės. Jei kuri nors iš kableliais atskirtų parinkčių yra „ne“, „Asterisk“ ignoruos kitus parametrus ir nustatys nat = ne",
-      "SIPEXPIRES": "Numatytas: 160",
+      "SIPEXPIRES": "Numatytas: 120",
       "SIPPORT": "Numatytas: 5160",
       "TYPE": "Nustato SIP vaidmenį „Asterisk'e“. Vartotojas: naudojamas atpažinti įeinantiems - bendraamžis: išeinantiems skambučiams - draugas: apima abi pirmiau nurodytas charakteristikas",
       "CHATCAPACITY": "Didžiausias vienu metu veikiančių kanalų sąveikų skaičius vienam agentui (0 = neribotas)",
     "JSCRIPTY_SESSIONS": "Jscripty sesijos",
     "OMNICHANNEL_INTERACTIONS": "„Omnichannel“ sąveika",
     "SCREEN_RECORDINGS": "Ekrano įrašai",
-    "VOICE_RECORDINGS": "Balso įrašai",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignoruoti agento pertraukos būseną peržiūros skambučiams",
-    "SELECT_RECALLME_CAMPAIGN": "Pasirinkite Atšaukti mane kampanija",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Pridėti agentą prie eilės kampanijų",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Pridėti agentą prie balso eilių",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Pridėti agentą prie pokalbio eilių",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Pridėti agentą prie el. pašto eilių",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Pridėti agentą prie SMS eilių",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Pridėti agentą prie atviro kanalo eilių",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Pridėti agentą prie fakso eilių",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Visos eilės kampanijos",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Pasirinktos eilės kampanijos",
-    "ALL_QUEUES_VOICE_INBOUND": "Visos balso eilės",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Pasirinktos balso eilės",
-    "ALL_QUEUES_CHAT_INBOUND": "Visos pokalbio eilės",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Pasirinktos pokalbio eilės",
-    "ALL_QUEUES_MAIL_INBOUND": "Visos el. pašto eilės",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Pasirinktos el. pašto eilės",
-    "ALL_QUEUES_SMS_INBOUND": "Visos SMS eilės",
-    "SELECTED_QUEUES_SMS_INBOUND": "Pasirinktos SMS eilės",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Visos atviro kanalo eilės",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Pasirinktos atviro kanalo eilės",
-    "ALL_QUEUES_FAX_INBOUND": "Visos fakso eilės",
-    "SELECTED_QUEUES_FAX_INBOUND": "Pasirinktos fakso eilės",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Visos „WhatsApp“ eilės",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Pridėti agentą prie „WhatsApp“ eilių",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Pasirinktos „WhatsApp“ eilės"
+    "VOICE_RECORDINGS": "Balso įrašai"
   }
 }
index f930cb8..e1f79b9 100644 (file)
@@ -48,7 +48,7 @@
       "TRANSPORT": "Iestatiet noklusējuma transportēšanu pēc izvēles",
       "HOST": "Kā atrast klientu – IP vai resursdatora nosaukums. Ja vēlaties, lai tālrunis tiktu reģistrēts, izmantojiet atslēgvārdu dinamiku, nevis resursdatora IP",
       "NAT": "Maina \"Asterisk\" darbību klientiem aiz ugunsmūra. Ja kāda no opcijām, kas ir atdalītas ar komatiem, ir \"Nē\", \"Asterisk\" ignorēs citus iestatījumus un iestatīs nat = no",
-      "SIPEXPIRES": "Noklusējums: 160",
+      "SIPEXPIRES": "Noklusējums: 120",
       "SIPPORT": "Noklusējums: 5160",
       "TYPE": "Nosaka SIP lomu \"Asterisk\" ietvaros Lietotājs: izmanto, lai autentificētu ienākošo – Biedrs: izejošajiem zvaniem – Draugs: iekļauj abas iepriekš minētās īpašības",
       "CHATCAPACITY": "Maksimālais vienlaicīgu kanālu mijiedarbību skaits vienam aģentam (0 = neierobežots)",
     "JSCRIPTY_SESSIONS": "Jscripty sesijas",
     "OMNICHANNEL_INTERACTIONS": "Visu kanālu mijiedarbība",
     "SCREEN_RECORDINGS": "Ekrāna ieraksti",
-    "VOICE_RECORDINGS": "Balss ieraksti",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorēt aģenta pārtraukuma statusu priekšskatījuma zvaniem",
-    "SELECT_RECALLME_CAMPAIGN": "Atlasiet Atsaukt mani kampaņa",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Pievienot aģentu rindas kampaņām",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Pievienot pārstāvi balss rindām",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Pievienot aģentu tērzēšanas rindām",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Pievienot aģentu e-pasta rindām",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Pievienot aģentu īsziņu rindām",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Pievienot aģentu atvērtā kanāla rindām",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Pievienot aģentu faksa rindām",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Visas rindas kampaņas",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Atlasītās rindas kampaņas",
-    "ALL_QUEUES_VOICE_INBOUND": "Visas balss rindas",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Atlasītās balss rindas",
-    "ALL_QUEUES_CHAT_INBOUND": "Visas tērzēšanas rindas",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Atlasītās tērzēšanas rindas",
-    "ALL_QUEUES_MAIL_INBOUND": "Visas e-pasta rindas",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Atlasītās e-pasta rindas",
-    "ALL_QUEUES_SMS_INBOUND": "Visas īsziņu rindas",
-    "SELECTED_QUEUES_SMS_INBOUND": "Atlasītās īsziņu rindas",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Visas Open Channel rindas",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Atlasītās atvērto kanālu rindas",
-    "ALL_QUEUES_FAX_INBOUND": "Visas faksa rindas",
-    "SELECTED_QUEUES_FAX_INBOUND": "Atlasītās faksa rindas",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Visas WhatsApp rindas",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Pievienojiet aģentu WhatsApp rindām",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Atlasītās WhatsApp rindas"
+    "VOICE_RECORDINGS": "Balss ieraksti"
   }
 }
index 3ab5fcb..d00a035 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Stel de standaard transporteert. De volgorde bepaalt de primaire standaard transport.",
       "HOST": "Hoe vind ik de client - IP of hostnaam. Als u wilt dat de telefoon aan te melden, gebruik het trefwoord dynamische in plaats van Host IP.",
       "NAT": "Verandert het gedrag van Asterisk voor cliënten achter een firewall.Indien een van de comma-separated opties is 'nee', sterretje negeert andere instellingen en stel nat=no.",
-      "SIPEXPIRES": "Standaard: 160",
+      "SIPEXPIRES": "Standaard: 120",
       "SIPPORT": "Standaard: 5160",
       "TYPE": "Bepaalt de SIP-rol binnen asterisk. Gebruiker: gebruikt ter verificatie van binnenkomend - Peer: voor uitgaande gesprekken - vriend: zowel kenmerken van het bovenstaande.",
       "CHATCAPACITY": "Nul betekent onbeperkt.",
     "JSCRIPTY_SESSIONS": "Jscripty-sessies",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-interacties",
     "SCREEN_RECORDINGS": "Schermopnames",
-    "VOICE_RECORDINGS": "Spraakopnamen",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Negeer de status van agentonderbreking voor voorbeeldgesprekken",
-    "SELECT_RECALLME_CAMPAIGN": "Selecteer Recall Me-campagne",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent toevoegen aan wachtrij campagnes",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Voeg Agent Voice wachtrijen",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Voeg Agent Chatwachtrijen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Voeg Agent Mailwachtrijen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Voeg Agent naar SMS-wachtrijen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Voeg Agent Open kanaal wachtrijen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Voeg Agent Faxwachtrijen",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Wachtrij campagnes",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Geselecteerde Wachtrij campagnes",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle spraak wachtrijen",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Geselecteerde wachtrijen",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle wachtrijen",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Geselecteerde Chatwachtrijen",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Mailwachtrijen",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Geselecteerde Mailwachtrijen",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-wachtrijen",
-    "SELECTED_QUEUES_SMS_INBOUND": "Geselecteerde SMS wachtrijen",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle open kanaal wachtrijen",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Geselecteerde Open kanaal wachtrijen",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Faxwachtrijen",
-    "SELECTED_QUEUES_FAX_INBOUND": "Geselecteerde Faxwachtrijen",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-wachtrijen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Voeg agent toe aan WhatsApp-wachtrijen",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Geselecteerde WhatsApp-wachtrijen"
+    "VOICE_RECORDINGS": "Spraakopnamen"
   }
 }
index 8d71e11..cb1fbc7 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Angi standard transporterer. Rekkefølgen bestemmer den primære standard transport.",
       "HOST": "Hvordan finne klienten - IP eller vertsnavnet. Hvis du vil at telefonen skal registrere seg, bruk nøkkelord dynamisk i stedet for Host IP.",
       "NAT": "Endrer oppførselen til stjerne for klienter bak en brannmur.Hvis noen av kommaseparert alternativer er 'Nei', stjerne vil ignorere andre innstillinger og sette nat=Nei.",
-      "SIPEXPIRES": "Standard: 160",
+      "SIPEXPIRES": "Standard: 120",
       "SIPPORT": "Standard: 5160",
       "TYPE": "Bestemmer SIP rolle innen stjerne. Bruker: brukes til å autentisere innkommende - Peer: for utgående anrop - venn: dekker både egenskapene til ovenfor.",
       "CHATCAPACITY": "Null betyr ubegrenset.",
     "JSCRIPTY_SESSIONS": "Jscripty Sessions",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-interaksjoner",
     "SCREEN_RECORDINGS": "Skjermopptak",
-    "VOICE_RECORDINGS": "Stemmeopptak",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorer agentpausestatus for forhåndsvisningsanrop",
-    "SELECT_RECALLME_CAMPAIGN": "Velg Recall Me Campaign",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Legg til Agent til kø-kampanjer",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Legg til Agent til Voice køer",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Legg til Agent til å prate køer",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Legg til Agent til post køer",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Legg til Agent til SMS-køer",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Legg til Agent for å åpne kanalen køer",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Legg til Agent til faks køer",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle kø kampanjer",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valgte kø kampanjer",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Voice køer",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valgt stemme køer",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat køer",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valgt Chat køer",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle post-køer",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valgt post køer",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-køer",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valgt SMS køer",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle åpne kanal køer",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valgt åpen kanal køer",
-    "ALL_QUEUES_FAX_INBOUND": "Alle faks køer",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valgt faks køer",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-køer",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Legg agent til WhatsApp-køer",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valgte WhatsApp-køer"
+    "VOICE_RECORDINGS": "Stemmeopptak"
   }
 }
index 9881495..037d010 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Ustawianie domyślnego transporty w kolejności preferencji",
       "HOST": "Jak znaleźć klienta - adres IP lub nazwa hosta. Jeśli chcesz telefon aby zarejestrować się, należy użyć słowa kluczowego dynamiczne zamiast IP hosta",
       "NAT": "Zmiany zachowań gwiazdka dla klientów za zaporą ogniową. Jeżeli którykolwiek z oddzielonych przecinkami opcji 'no', gwiazdka będzie ignorował pozostałych ustawień i ustawić nat=no",
-      "SIPEXPIRES": "Domyślnie: 160",
+      "SIPEXPIRES": "Domyślnie: 120",
       "SIPPORT": "Wartość domyślna: 5160",
       "TYPE": "Ustala SIP roli w gwiazdki. Użytkownik: używane do uwierzytelniania przychodzące - Peer: dla połączeń wychodzących - przyjaciela: obejmuje zarówno charakterystyki powyżej",
       "CHATCAPACITY": "Maksymalna liczba jednoczesnych kanałów interakcji na agenta (0=nieograniczona)",
     "JSCRIPTY_SESSIONS": "Sesje Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interakcje wielokanałowe",
     "SCREEN_RECORDINGS": "Nagrania ekranu",
-    "VOICE_RECORDINGS": "Nagrania głosowe",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignoruj stan przerwania agenta dla połączeń podglądu",
-    "SELECT_RECALLME_CAMPAIGN": "Wybierz kampanię Przypomnij mnie",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Dodaj agenta do kolejki kampanie reklamowe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Dodaj agenta do głosu kolejek",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Dodaj agenta do rozmów kolejek",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Dodaj agenta do kolejek poczty",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Dodaj agenta do kolejki wiadomości SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Dodaj agenta do otwartego kanału kolejek",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Dodaj agenta do kolejek faksu",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Wszystkie kampanie kolejki",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Wybrane kampanie kolejki",
-    "ALL_QUEUES_VOICE_INBOUND": "Wszystkie notatki głosowe kolejek",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Wybrane głos kolejek",
-    "ALL_QUEUES_CHAT_INBOUND": "Wszystkich kolejek czatu",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Wybrany Czat kolejek",
-    "ALL_QUEUES_MAIL_INBOUND": "Wszystkich kolejek poczty",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Wybrane kolejek poczty",
-    "ALL_QUEUES_SMS_INBOUND": "Wszystkich kolejek SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Wybrany SMS kolejek",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Wszystkie Wiekszość kolejek",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Wybrane Wiekszość kolejek",
-    "ALL_QUEUES_FAX_INBOUND": "Wszystkie kolejki faksów",
-    "SELECTED_QUEUES_FAX_INBOUND": "Wybrane Fax kolejek",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Wszystkie kolejki WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Dodaj agenta do kolejek WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Wybrane kolejki WhatsApp"
+    "VOICE_RECORDINGS": "Nagrania głosowe"
   }
 }
index 2c3fdf2..9694b2c 100644 (file)
       "TRANSPORT": "Definir os transportes padrão em ordem de preferência",
       "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre, use a palavra-chave dynamic em vez de Host IP",
       "NAT": "Altera o comportamento do Asterisk para clientes por trás de um firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir nat = no",
-      "SIPEXPIRES": "Padrão: 160",
+      "SIPEXPIRES": "Padrão: 120",
       "SIPPORT": "Padrão: 5160",
       "TYPE": "Determina o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange ambas as características do acima",
       "CHATCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
     "SIPPORT": "Porta SIP",
     "PENALTY": "Prioridade",
     "ACCOUNTNAME": "Nome da conta",
-    "ADD_TELEPHONE": "Adicionar Ramal",
-    "EDIT_TELEPHONE": "Editar Ramal",
-    "DELETE_TELEPHONE": "Excluir Ramal",
-    "TEAMS": "Grupos",
-    "DELETE_TEAM": "Excluir Grupo",
-    "AGENTADD_TEAM": "Adicionar agentes no grupo",
-    "EDIT_TEAM": "Editar Grupo",
+    "ADD_TELEPHONE": "Adicionar Telefone",
+    "EDIT_TELEPHONE": "Editar Telefone",
+    "DELETE_TELEPHONE": "Excluir Telefone",
+    "TEAMS": "Equipes",
+    "DELETE_TEAM": "Excluir Equipe",
+    "AGENTADD_TEAM": "Adicionar agentes na equipe",
+    "EDIT_TEAM": "Editar Equipe",
     "TYPE": "Tipo",
-    "TELEPHONES": "Ramais",
+    "TELEPHONES": "Telefones",
     "CALLERID": "Identificador de chamadas",
     "ENABLERECORDING": "Ativar gravação",
-    "STAFF": "Equipe",
+    "STAFF": "Pessoal",
     "ID": "Id",
     "NEW_USER": "Novo Usuário",
     "NEW_AGENT": "Novo Agente",
-    "NEW_TELEPHONE": "Novo Ramal",
-    "NEW_TEAM": "Novo Grupo",
-    "ADD_TEAM": "Adicionar Grupo",
+    "NEW_TELEPHONE": "Novo Telefone",
+    "NEW_TEAM": "Nova Equipe",
+    "ADD_TEAM": "Adicionar Equipe",
     "JOIN_QUEUE": "Junte-se à fila",
     "CAPACITY": "Capacidade",
     "AUTOINTERNAL": "Auto gerar número interno",
-    "ADD_AGENT_TO_TEAM": "Adicionar agente no grupo",
-    "TEAMADD_AGENT": "Adicionar agente no grupo",
+    "ADD_AGENT_TO_TEAM": "Adicionar agente na equipe",
+    "TEAMADD_AGENT": "Adicionar agente na equipe",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "PERMISSIONS": "Permissões",
     "ADD_AGENT_TO_QUEUE": "Adicionar agente à fila",
     "QUEUEADD_USER_SMS_INBOUND": "Adicionar usuário às filas do SMS",
     "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Adicionar usuário para filas do Open Channel",
     "QUEUEADD_USER_FAX_INBOUND": "Adicionar usuário às filas de fax",
-    "ALL_TEAMS": "Todos os grupos",
-    "SELECTED_TEAMS": "Grupos Selecionados",
+    "ALL_TEAMS": "Todas as equipes",
+    "SELECTED_TEAMS": "Equipes Selecionadas",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de filas",
     "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de Filas Selecionadas",
     "REPORT_TYPE": "Tipo de relatório",
     "SECTIONS": "Seções",
     "SUMMARY": "Resumo",
-    "TEAMS_ASSOCIATION": "Associação de grupos",
+    "TEAMS_ASSOCIATION": "Associação de equipes",
     "USERPROFILE": "Perfil de usuário",
     "USERPROFILES": "Perfis de usuário",
     "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Você não tem permissão para criar o recurso",
     "JSCRIPTY_SESSIONS": "Sessões Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
     "SCREEN_RECORDINGS": "Gravações de tela",
-    "VOICE_RECORDINGS": "Gravações de Voz",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar o status de interrupção do agente para chamadas de visualização",
-    "SELECT_RECALLME_CAMPAIGN": "Selecione a campanha Recall Me",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar agente a campanhas de fila",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar agente às filas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar agente às filas de Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar agente às filas de emails",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar agente às filas do SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar agente às filas do Open Channel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar agente às filas de fax",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as campanhas de filas",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campanhas de Filas Selecionadas",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas as filas de voz",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de voz selecionadas",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas as filas de Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de Chat Selecionadas",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas as filas de email",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de E-mail Selecionadas",
-    "ALL_QUEUES_SMS_INBOUND": "Todas as filas do SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Filas SMS Selecionadas",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as filas do Open Channel",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de Open Channel Selecionadas",
-    "ALL_QUEUES_FAX_INBOUND": "Todas as filas de fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Filas de fax selecionadas",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas"
+    "VOICE_RECORDINGS": "Gravações de Voz"
   }
 }
index 4d002fd..2257104 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Defina o padrão de transportes. A ordem determina o transporte primário padrão.",
       "HOST": "Como encontrar o cliente - O IP ou o nome do host. Se desejar que o telefone para se registrar, use a palavra-chave dinâmica em vez do host IP.",
       "NAT": "Altera o comportamento do asterisco para clientes atrás de um firewall.Se qualquer uma das opções separadas por vírgula é \"não\", asterisco será ignorar quaisquer outras configurações e defina nat=n°",
-      "SIPEXPIRES": "Padrão: 160",
+      "SIPEXPIRES": "Padrão: 120",
       "SIPPORT": "Padrão: 5160",
       "TYPE": "Determina o papel SIP dentro de asterisco. Usuário: usado para autenticar - Ponto de entrada: para chamadas de saída - amigo: abrange tanto as características do acima.",
       "CHATCAPACITY": "Zero significa ilimitado.",
     "JSCRIPTY_SESSIONS": "Sessões Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
     "SCREEN_RECORDINGS": "Gravações de tela",
-    "VOICE_RECORDINGS": "Gravações de Voz",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar o status de interrupção do agente para chamadas de visualização",
-    "SELECT_RECALLME_CAMPAIGN": "Selecione a campanha Recall Me",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar agente para fila de campanhas",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar agente para filas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar agente para filas de bate-papo",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar agente para filas de correio",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar agente para filas de SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar agente para filas de canal aberto",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar agente para filas de Fax",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as campanhas de fila",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campanhas de filas selecionado",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas as filas de voz",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de voz selecionado",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas as filas de bate-papo",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de chat selecionado",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas as filas de correio",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de correio seleccionado",
-    "ALL_QUEUES_SMS_INBOUND": "Todas as filas de SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Filas de SMS selecionado",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as filas de canal aberto",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de abrir o canal seleccionado",
-    "ALL_QUEUES_FAX_INBOUND": "Todas as filas de Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Filas de fax selecionado",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas"
+    "VOICE_RECORDINGS": "Gravações de Voz"
   }
 }
index 76c5af1..6927c6f 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Установить значение по умолчанию для транспорта. Порядок определяет основной транспортом по умолчанию.",
       "HOST": "Как найти клиента - IP или имя хоста. Если Вы хотите телефон для самого Регистра, используйте ключевое слово Dynamic вместо IP-адрес хоста.",
       "NAT": "Изменяет поведение звездочка для клиентов за брандмауэром.Если любое из разделенных запятыми параметров 'Нет', звездочка будет игнорировать любые другие параметры и настройки NAT=no.",
-      "SIPEXPIRES": "По умолчанию: 160",
+      "SIPEXPIRES": "По умолчанию: 120",
       "SIPPORT": "По умолчанию: 5160",
       "TYPE": "Определяет роль SIP в Asterisk. Пользователь: используется для проверки подлинности входящих - Одноранговые сети: для исходящих вызовов - друга: охватывает как характеристики выше.",
       "CHATCAPACITY": "Ноль означает неограниченное количество.",
     "JSCRIPTY_SESSIONS": "Сессии Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Омниканальные взаимодействия",
     "SCREEN_RECORDINGS": "Записи с экрана",
-    "VOICE_RECORDINGS": "Голосовые записи",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Игнорировать статус перерыва агента для предварительных звонков",
-    "SELECT_RECALLME_CAMPAIGN": "Выберите кампанию \"Напомни мне\"",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Добавить оператора в очереди кампаний",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Добавить оператора в очереди голосовой связи",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Добавить оператора в чат очередей",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Добавить оператора в очереди сообщений электронной почты",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Добавить оператора в очереди сообщений SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Добавить оператора в открытый канал очередей",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Добавить оператора в очереди факса",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Все очереди кампаний",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Выбранные очереди кампаний",
-    "ALL_QUEUES_VOICE_INBOUND": "Все голосовые очередей",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Выбранный голос очередей",
-    "ALL_QUEUES_CHAT_INBOUND": "Все очереди чата",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Выбранный чат очередей",
-    "ALL_QUEUES_MAIL_INBOUND": "Все очереди сообщений электронной почты",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Выбранные очереди сообщений электронной почты",
-    "ALL_QUEUES_SMS_INBOUND": "Все очереди сообщений SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Выбранные очереди сообщений SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Все открытые канал очередей",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Выбранные открытый канал очередей",
-    "ALL_QUEUES_FAX_INBOUND": "Все очереди факса",
-    "SELECTED_QUEUES_FAX_INBOUND": "Выбранный факс очередей",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Все очереди WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Добавить агента в очереди WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Выбранные очереди WhatsApp"
+    "VOICE_RECORDINGS": "Голосовые записи"
   }
 }
index c5295e1..6b43f2c 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Ställ in standard transporter. Avgör det primära förvalda transporter.",
       "HOST": "Hur klienten - IP eller värdnamn. Om du vill att telefonen ska registrera sig, använda nyckelordet dynamisk istället för Host IP.",
       "NAT": "Förändringar i beteendet hos Asterisk för beställare bakom en firewall.Om någon av komma-avskilde alternativ är \"nej\", Asterisk kommer att ignorera alla andra inställningar och ställa in nat=no.",
-      "SIPEXPIRES": "Standard: 160",
+      "SIPEXPIRES": "Standard: 120",
       "SIPPORT": "Standard: 5160",
       "TYPE": "Bestämmer SIP roll inom asterisk. Användare: används för att autentisera inkommande - Kisa: för utgående samtal - vän: omfattar både egenskaper hos ovan.",
       "CHATCAPACITY": "Noll betyder obegränsade.",
     "JSCRIPTY_SESSIONS": "Jscripty-sessioner",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-interaktioner",
     "SCREEN_RECORDINGS": "Skärminspelningar",
-    "VOICE_RECORDINGS": "Röstinspelningar",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorera agentavbrottsstatus för förhandsgranskningssamtal",
-    "SELECT_RECALLME_CAMPAIGN": "Välj Recall Me Campaign",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lägg till agent till kökampanjer",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Lägg till agent till röstköer",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Lägg till agent till chattköer",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Lägg till agent till epostköer",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Lägg till agent till SMS-köer",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lägg till agent till öppna kanal-köer",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Lägg till agent till faxköer",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alla kökampanjer",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valda kökampanjer",
-    "ALL_QUEUES_VOICE_INBOUND": "Alla röstköer",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valda röstköer",
-    "ALL_QUEUES_CHAT_INBOUND": "All chattköer",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valda chattköer",
-    "ALL_QUEUES_MAIL_INBOUND": "Alla epostköer",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valda epostköer",
-    "ALL_QUEUES_SMS_INBOUND": "Alla SMS-köer",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valda SMS-köer",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alla öppna kanal-köer",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valda öppna kanal-köer",
-    "ALL_QUEUES_FAX_INBOUND": "Alla faxköer",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valda faxköer",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alla WhatsApp-köer",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lägg till agent i WhatsApp-köer",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valda WhatsApp-köer"
+    "VOICE_RECORDINGS": "Röstinspelningar"
   }
 }
index 85cdf7a..bec8cc8 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Varsayılan geciktirir. Sipariş belirler, birincil varsayılan taşıma.",
       "HOST": "Nasıl istemci - IP veya ana bilgisayar adı. Istiyorsanız, telefon kendini, dinamik anahtar yerine, Ana IP.",
       "NAT": "Değişiklikler, davranış, Yıldız istemciler için bir güvenlik duvarının arkasında.Herhangi bir virgülle ayrılmış seçenekleri 'hayır', Yıldız yok diğer ayarları ve nat=no.",
-      "SIPEXPIRES": "Varsayılan: 160",
+      "SIPEXPIRES": "Varsayılan: 120",
       "SIPPORT": "Varsayılan: 5160",
       "TYPE": "Belirler, SIP içinde yıldız. Kullanıcı: kimliğini doğrulamak için kullanılan gelen - Eşler: aramaları - Arkadaş: kapakları hem özellikleri.",
       "CHATCAPACITY": "Sıfır anlamına gelir sınırsız.",
     "JSCRIPTY_SESSIONS": "Jscript Oturumları",
     "OMNICHANNEL_INTERACTIONS": "Çok Kanallı Etkileşimler",
     "SCREEN_RECORDINGS": "Ekran Kayıtları",
-    "VOICE_RECORDINGS": "Ses Kayıtları",
-    "ALL_WHATSAPP_QUEUES": "Tüm WhatsApp Kuyrukları",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Önizleme çağrıları için aracı kesinti durumunu yoksay",
-    "SELECT_RECALLME_CAMPAIGN": "Beni Hatırla Kampanyasını Seçin",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Ajans Kuyruk Kampanyaları",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Ajans Sesli Kuyrukları",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Ajans Sohbet Kuyrukları",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Ajans Posta Kuyrukları",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Ajans SMS Kuyrukları",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent Açık Kanal Kuyrukları",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Ajans Faks Kuyrukları",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Sırada tüm Kampanyalar",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Seçilen Kuyruk Kampanyaları",
-    "ALL_QUEUES_VOICE_INBOUND": "Tüm Ses Kuyrukları",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Seçilen Ses Kuyrukları",
-    "ALL_QUEUES_CHAT_INBOUND": "Tüm Sohbet Kuyrukları",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Seçilen Sohbet Kuyrukları",
-    "ALL_QUEUES_MAIL_INBOUND": "Tüm Posta Kuyrukları",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Seçilen Posta Kuyrukları",
-    "ALL_QUEUES_SMS_INBOUND": "Tüm SMS Kuyrukları",
-    "SELECTED_QUEUES_SMS_INBOUND": "Seçilen SMS Kuyrukları",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Tüm Açık Kanal Kuyrukları",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Seçilen Açık Kanal Kuyrukları",
-    "ALL_QUEUES_FAX_INBOUND": "Tüm Faks Kuyrukları",
-    "SELECTED_QUEUES_FAX_INBOUND": "Seçilen Faks Kuyrukları",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsApp Sıralarına Ajan Ekle",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Seçili WhatsApp Sıraları"
+    "VOICE_RECORDINGS": "Ses Kayıtları"
   }
 }
index c55c12d..36581c3 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "设置缺省的传输。 该顺序确定主要的默认的传输。",
       "HOST": "如何找到客户端-服务器的 IP 或主机名。 如果您想要的手机本身注册、使用关键字动态而不是主机的 IP。",
       "NAT": "改变行为的星号后面的客户端的防火墙。 如果任何的以逗号分隔的-选项是 “不”、星号将会忽略任何其他设置和设置 nat =否。",
-      "SIPEXPIRES": "默认值: 160",
+      "SIPEXPIRES": "默认值: 120",
       "SIPPORT": "缺省值: 5160",
       "TYPE": "确定了 SIP 的作用范围内的星号。 用户名: 用于验证传入-同行: 呼出电话-朋友: 涵盖了这两个特点。",
       "CHATCAPACITY": "0 意味着无限的。",
     "JSCRIPTY_SESSIONS": "Jscripty 会话",
     "OMNICHANNEL_INTERACTIONS": "全渠道互动",
     "SCREEN_RECORDINGS": "屏幕录像",
-    "VOICE_RECORDINGS": "录音",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "忽略预览呼叫的座席中断状态",
-    "SELECT_RECALLME_CAMPAIGN": "选择 Recall Me 活动",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "代理添加到队列活动",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "代理添加到语音队列",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "代理添加到文本交谈的队列",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "代理添加到邮件队列。",
-    "QUEUEADD_AGENT_SMS_INBOUND": "代理添加到 SMS 队列。",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "代理添加到打开的通道的队列。",
-    "QUEUEADD_AGENT_FAX_INBOUND": "代理添加到传真队列。",
-    "ALL_QUEUES_VOICE_OUTBOUND": "所有队列活动",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "选定的队列活动",
-    "ALL_QUEUES_VOICE_INBOUND": "所有的语音队列",
-    "SELECTED_QUEUES_VOICE_INBOUND": "选定的语音队列",
-    "ALL_QUEUES_CHAT_INBOUND": "所有的聊天队列",
-    "SELECTED_QUEUES_CHAT_INBOUND": "选中 “文本交谈” 队列。",
-    "ALL_QUEUES_MAIL_INBOUND": "所有的邮件队列。",
-    "SELECTED_QUEUES_MAIL_INBOUND": "选中的邮件队列。",
-    "ALL_QUEUES_SMS_INBOUND": "所有的 SMS 队列。",
-    "SELECTED_QUEUES_SMS_INBOUND": "选中的短信队列。",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "所有打开的通道的队列。",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "选中的已经打开的通道的队列。",
-    "ALL_QUEUES_FAX_INBOUND": "所有的传真队列。",
-    "SELECTED_QUEUES_FAX_INBOUND": "选定的传真队列。",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "所有WhatsApp队列",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "将代理添加到WhatsApp队列",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "选定的WhatsApp队列"
+    "VOICE_RECORDINGS": "录音"
   }
 }
index e1732e5..9922b63 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "設定預設的傳輸。 醫令會決定主要預設傳輸。",
       "HOST": "如何找到用戶端 - IP 或主機名稱。 如果您想要將電話轉接至自己登錄 , 使用關鍵字動態而非主機的 IP 。",
       "NAT": "改變行為之星號的用戶端防火牆後面。如果有任何逗點分隔選項為「否」 , 星號將會略過所有其他設定值和設定 NAT = No ( 否 ) 。",
-      "SIPEXPIRES": "預設值 : 160",
+      "SIPEXPIRES": "預設值 : 120",
       "SIPPORT": "預設值 : 5160",
       "TYPE": "決定 SIP 角色星號。 使用者 : 用於驗證傳入 - 點對點式 : 撥出電話 - 朋友 : 涵蓋了這兩個特徵的以上。",
       "CHATCAPACITY": "0 表示沒有限制。",
     "JSCRIPTY_SESSIONS": "Jscripty 會話",
     "OMNICHANNEL_INTERACTIONS": "全渠道互動",
     "SCREEN_RECORDINGS": "屏幕錄像",
-    "VOICE_RECORDINGS": "錄音",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "忽略預覽呼叫的座席中斷狀態",
-    "SELECT_RECALLME_CAMPAIGN": "選擇 Recall Me 活動",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "值機員新增至佇列活動",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "新增值機員至語音佇列",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "值機員新增至文字交談」佇列",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "值機員新增至郵件佇列",
-    "QUEUEADD_AGENT_SMS_INBOUND": "新增值機員至 SMS 佇列",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "新增值機員以開啟通道佇列",
-    "QUEUEADD_AGENT_FAX_INBOUND": "值機員新增至傳真佇列",
-    "ALL_QUEUES_VOICE_OUTBOUND": "所有佇列活動",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "所選取的佇列活動",
-    "ALL_QUEUES_VOICE_INBOUND": "所有語音通話佇列",
-    "SELECTED_QUEUES_VOICE_INBOUND": "選取語音通話佇列",
-    "ALL_QUEUES_CHAT_INBOUND": "所有聊天佇列",
-    "SELECTED_QUEUES_CHAT_INBOUND": "選取的文字交談佇列",
-    "ALL_QUEUES_MAIL_INBOUND": "所有郵件佇列",
-    "SELECTED_QUEUES_MAIL_INBOUND": "選定的郵件佇列",
-    "ALL_QUEUES_SMS_INBOUND": "所有 SMS 佇列",
-    "SELECTED_QUEUES_SMS_INBOUND": "所選簡訊佇列",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "所有開啟通道佇列",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "選取開啟通道佇列",
-    "ALL_QUEUES_FAX_INBOUND": "所有傳真佇列",
-    "SELECTED_QUEUES_FAX_INBOUND": "選取的傳真佇列",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "所有WhatsApp隊列",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "將代理添加到WhatsApp隊列",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "選定的WhatsApp隊列"
+    "VOICE_RECORDINGS": "錄音"
   }
 }
index 71a200f..b5d2d5f 100644 (file)
@@ -62,8 +62,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أكبر من أو تساوي",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
       "TIMEOUT_REQUIRED": "حقل الزامي",
-      "AUTOCREATE_FIELD_REQUIRED": "حقل الزامي",
-      "IGNOREDIALERCONTACTID_REQUIRED": "تجاهل معرف جهة اتصال الطالب مطلوب"
+      "AUTOCREATE_FIELD_REQUIRED": "حقل الزامي"
     },
     "HELP": {
       "DEFAULTUSER": "المستخدم الافتراضي",
     "LEVEL": "مستوى",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "SELECT_LEVEL": "حدد مستوى",
-    "TITLEFONTSIZE": "حجم عنوان الخط",
-    "IGNOREDIALERCONTACTID": "تجاهل معرف جهة الاتصال",
-    "MAIL_SUBSTATUS": "حالة البريد الإلكتروني الفرعية"
+    "TITLEFONTSIZE": "حجم عنوان الخط"
   }
 }
index 43fc4da..b1b36ce 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hodnota musí být větší nebo rovna",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
       "TIMEOUT_REQUIRED": "Povinné pole",
-      "AUTOCREATE_FIELD_REQUIRED": "Povinné pole",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Pole Ignorovat ID kontaktu vytáčení je povinné"
+      "AUTOCREATE_FIELD_REQUIRED": "Povinné pole"
     },
     "HOST": "Host",
     "SECRET": "Secret",
     "LEVEL": "Úroveň",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "SELECT_LEVEL": "Vyberte úroveň",
-    "TITLEFONTSIZE": "Velikost názvu písma",
-    "IGNOREDIALERCONTACTID": "Ignorovat ID kontaktu vytáčení",
-    "MAIL_SUBSTATUS": "E-mail Substatus"
+    "TITLEFONTSIZE": "Velikost názvu písma"
   }
 }
index 35d5ef4..aae3bb1 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Værdien skal være større end eller lig med",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
       "TIMEOUT_REQUIRED": "Obligatorisk felt",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligatorisk felt",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Feltet Ignorer opkaldskontakt-id er påkrævet"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligatorisk felt"
     },
     "HOST": "Host",
     "SECRET": "Hemmelig",
     "LEVEL": "Niveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "SELECT_LEVEL": "Vælg et niveau",
-    "TITLEFONTSIZE": "Skrifttitelstørrelse",
-    "IGNOREDIALERCONTACTID": "Ignorer opkaldskontakt-id",
-    "MAIL_SUBSTATUS": "E-mail understatus"
+    "TITLEFONTSIZE": "Skrifttitelstørrelse"
   }
 }
index 07fed47..d62768d 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "TIMEOUT_REQUIRED": "Timeout erforderlich",
-      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Wählkontakt ignorieren ID-Feld ist erforderlich"
+      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
     },
     "HOST": "Host",
     "SECRET": "Secret",
     "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
-    "INTERVALS": "Zeiten und Feiertage",
+    "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
     "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "LEVEL": "Ebene",
     "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
     "SELECT_LEVEL": "Ebene auswählen",
-    "TITLEFONTSIZE": "Schriftgröße Titel",
-    "IGNOREDIALERCONTACTID": "Wählkontakt-ID ignorieren",
-    "MAIL_SUBSTATUS": "E-Mail-Unterstatus"
+    "TITLEFONTSIZE": "Schriftgröße Titel"
   }
 }
index 895a4d1..751cdf0 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El valor debe ser mayor o igual que",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
       "TIMEOUT_REQUIRED": "Campo obligatorio",
-      "AUTOCREATE_FIELD_REQUIRED": "Campo obligatorio",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignorar el campo de identificación del contacto del marcador es obligatorio"
+      "AUTOCREATE_FIELD_REQUIRED": "Campo obligatorio"
     },
     "15MIN": "15 minutos",
     "1H": "1 hora",
     "LEVEL": "Nivel",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "SELECT_LEVEL": "Seleccionar un nivel",
-    "TITLEFONTSIZE": "Tamaño del título de fuente",
-    "IGNOREDIALERCONTACTID": "Ignorar la identificación del contacto del marcador",
-    "MAIL_SUBSTATUS": "Subestado de correo electrónico"
+    "TITLEFONTSIZE": "Tamaño del título de fuente"
   }
 }
index 719f972..a0feca2 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "AUTOCREATE_FIELD_REQUIRED": "Kohustuslik väli",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignoreeri helistaja kontakti ID väli on kohustuslik"
+      "AUTOCREATE_FIELD_REQUIRED": "Kohustuslik väli"
     },
     "HOST": "Host",
     "SECRET": "Secret",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
-    "TITLEFONTSIZE": "Fondi pealkirja suurus",
-    "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID",
-    "MAIL_SUBSTATUS": "Meili alamolek"
+    "TITLEFONTSIZE": "Fondi pealkirja suurus"
   }
 }
index c97a19e..aeac236 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "مقدار باید بیشتر یا مساوی باشد",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر از یا مساوی باشد",
       "TIMEOUT_REQUIRED": "زمینه اجباری",
-      "AUTOCREATE_FIELD_REQUIRED": "زمینه اجباری",
-      "IGNOREDIALERCONTACTID_REQUIRED": "نادیده گرفتن قسمت شناسه تماس با شماره گیر الزامی است"
+      "AUTOCREATE_FIELD_REQUIRED": "زمینه اجباری"
     },
     "HOST": "کشور میزبان",
     "SECRET": "راز",
     "LEVEL": "مرحله",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "SELECT_LEVEL": "یک سطح را انتخاب کنید",
-    "TITLEFONTSIZE": "اندازه عنوان قلم",
-    "IGNOREDIALERCONTACTID": "نادیده گرفتن شناسه تماس شماره گیر",
-    "MAIL_SUBSTATUS": "وضعیت فرعی ایمیل"
+    "TITLEFONTSIZE": "اندازه عنوان قلم"
   }
 }
index 0c8fe05..5e64170 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Arvon on oltava suurempi tai yhtä suuri kuin",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
       "TIMEOUT_REQUIRED": "Pakollinen kenttä",
-      "AUTOCREATE_FIELD_REQUIRED": "Pakollinen kenttä",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ohita soittajan yhteyshenkilön tunnus -kenttä on pakollinen"
+      "AUTOCREATE_FIELD_REQUIRED": "Pakollinen kenttä"
     },
     "HOST": "Host",
     "SECRET": "Salainen",
     "LEVEL": "Taso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "SELECT_LEVEL": "Valitse taso",
-    "TITLEFONTSIZE": "Kirjasimen otsikon koko",
-    "IGNOREDIALERCONTACTID": "Ohita soittajan yhteystiedot",
-    "MAIL_SUBSTATUS": "Sähköpostin alitila"
+    "TITLEFONTSIZE": "Kirjasimen otsikon koko"
   }
 }
index e57bf31..9c210a8 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La valeur doit être supérieure ou égale à",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
       "TIMEOUT_REQUIRED": "Champ obligatoire",
-      "AUTOCREATE_FIELD_REQUIRED": "Champ obligatoire",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Le champ Ignorer le contact du numéroteur est requis"
+      "AUTOCREATE_FIELD_REQUIRED": "Champ obligatoire"
     },
     "HOST": "Host",
     "SECRET": "Secret",
     "LEVEL": "Niveau",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
     "SELECT_LEVEL": "Sélectionnez un niveau",
-    "TITLEFONTSIZE": "Taille du titre de la police",
-    "IGNOREDIALERCONTACTID": "Ignorer l'identifiant du contact du numéroteur",
-    "MAIL_SUBSTATUS": "Sous-statut de l'e-mail"
+    "TITLEFONTSIZE": "Taille du titre de la police"
   }
 }
index 864b373..00697e4 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "הערך חייב להיות גדול או שווה לו",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות פחות או שווה ל",
       "TIMEOUT_REQUIRED": "שדה חובה",
-      "AUTOCREATE_FIELD_REQUIRED": "שדה חובה",
-      "IGNOREDIALERCONTACTID_REQUIRED": "נדרש שדה התעלם מזהה איש קשר חייגן"
+      "AUTOCREATE_FIELD_REQUIRED": "שדה חובה"
     },
     "HOST": "מארח",
     "SECRET": "סוד",
     "LEVEL": "רָמָה",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "SELECT_LEVEL": "בחר רמה",
-    "TITLEFONTSIZE": "גודל כותרת הגופן",
-    "IGNOREDIALERCONTACTID": "התעלם מזהה איש קשר חייגן",
-    "MAIL_SUBSTATUS": "תת סטטוס דוא\"ל"
+    "TITLEFONTSIZE": "גודל כותרת הגופן"
   }
 }
index dcd7d4c..7319cb7 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मान इससे अधिक या उसके बराबर होना चाहिए",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
       "TIMEOUT_REQUIRED": "आवश्यक स्थान",
-      "AUTOCREATE_FIELD_REQUIRED": "आवश्यक स्थान",
-      "IGNOREDIALERCONTACTID_REQUIRED": "डायलर पर ध्यान न दें संपर्क आईडी फ़ील्ड आवश्यक है"
+      "AUTOCREATE_FIELD_REQUIRED": "आवश्यक स्थान"
     },
     "HOST": "होस्ट",
     "SECRET": "गुप्त",
     "LEVEL": "स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "SELECT_LEVEL": "एक स्तर चुनें",
-    "TITLEFONTSIZE": "फ़ॉन्ट शीर्षक आकार",
-    "IGNOREDIALERCONTACTID": "डायलर संपर्क आईडी पर ध्यान न दें",
-    "MAIL_SUBSTATUS": "ईमेल सबस्टैटस"
+    "TITLEFONTSIZE": "फ़ॉन्ट शीर्षक आकार"
   }
 }
diff --git a/public/app/main/apps/tools/i18n/hu.json b/public/app/main/apps/tools/i18n/hu.json
deleted file mode 100644 (file)
index 6308cde..0000000
+++ /dev/null
@@ -1,505 +0,0 @@
-{
-  "TOOLS": {
-    "VIDEOSUPPORT": "Video support",
-    "PREVIOUSCONTACT": "Previous",
-    "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clone Trunk",
-    "DISPOSITIONS": "Dispositions",
-    "NEW_DISPOSITION": "New Disposition",
-    "ADD_DISPOSITION": "Add Disposition",
-    "EDIT_DISPOSITION": "Edit Disposition",
-    "DELETE_DISPOSITION": "Delete Disposition",
-    "RUN_SCHEDULE": "Run schedule",
-    "SENDIFEMPTY": "Send if empty",
-    "NEXTCONTACT": "Next",
-    "OUTBOUND_ROUTE": "Outbound Route",
-    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
-    "FONTSIZE": "Font Size",
-    "TITLEFONTSIZE": "Font Title Size",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
-    "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "UNMANAGED": "Unmanaged",
-    "CUSTOMTYPE": "Custom [path]",
-    "WEBREPORT": "Web Report",
-    "PIECHART": "Pie Chart",
-    "MULTIBARCHART": "Multibar Chart",
-    "MOVE_WIDGET": "Move Widget",
-    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "METRIC": "Metric",
-    "FILTERVOICEQUEUES": "Filter Voice Queues",
-    "SERIE1": "Serie 1",
-    "SERIE2": "Serie 2",
-    "SERIE3": "Serie 3",
-    "REFRESH": "Refresh [s]",
-    "FORMAT": "Format",
-    "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
-    "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
-    "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SCRIPT": "Script",
-    "SCRIPT_INFO": "Info",
-    "SCRIPT_TYPE": "Type",
-    "ERRORS": {
-      "INFO_REQUIRED": "Mandatory field",
-      "SCRIPT_REQUIRED": "Mandatory field",
-      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "REFRESH_REQUIRED": "Mandatory field",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory field",
-      "PATH_REQUIRED": "Mandatory field",
-      "FORMAT_REQUIRED": "Mandatory field",
-      "REPORT_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "ACCOUNT_REQUIRED": "Mandatory field",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "DEFAULTUSER_REQUIRED": "Mandatory field",
-      "CALLERID_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The Passwords don't match",
-      "VALIDITYSTART_REQUIRED": "Mandatory field",
-      "VALIDITYEND_REQUIRED": "Mandatory field",
-      "MONTHDAY_REQUIRED": "Mandatory field",
-      "HOUR_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field",
-      "URL_MUST_VALID_URL": "Wrong format",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "ARGUMENTS_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
-      "TITLE_REQUIRED": "Mandatory field",
-      "EMAILADDRESS_REQUIRED": "Mandatory field",
-      "EVENTVARIABLES_REQUIRED": "Mandatory field",
-      "INTEGRATION_REQUIRED": "Mandatory field",
-      "LIST_REQUIRED": "Mandatory field",
-      "TEMPLATE_REQUIRED": "Mandatory field",
-      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
-      "AUTOCREATE_FIELD_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
-      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_TO_REQUIRED": "Mandatory field",
-      "TIME_RANGE_FROM_INVALID": "Wrong Format",
-      "TIME_RANGE_TO_INVALID": "Wrong Format",
-      "ACTION_REQUIRED": "Mandatory field",
-      "CONFIGURATION_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "LOCATION_REQUIRED": "Mandatory field",
-      "OUTPUT_REQUIRED": "Mandatory field",
-      "REPORTTYPE_REQUIRED": "Mandatory field",
-      "REPORTFOLDER_REQUIRED": "Mandatory field",
-      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
-    },
-    "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
-    "HELP": {
-      "SCRIPT_INFO": "Insert a description for the script",
-      "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
-      "INFO": "Insert title",
-      "SCRIPT": "Insert script",
-      "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
-      "SECRET": "Authentication password",
-      "HOST": "The domain or host name",
-      "DEFAULTUSER": "Authentication username",
-      "CALLERID": "The Caller ID, in the format \"name\" <number>",
-      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
-      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
-      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
-      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
-      "PORT": "The SIP port number",
-      "CONTEXT": "The context for the trunk",
-      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
-      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
-      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
-      "QUALIFY": "Determine when the SIP is achievable",
-      "ALLOWCODECS": "Allowed codecs in order of preference",
-      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
-      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
-      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
-      "CALLCOUNTER": "Enable call counters on devices",
-      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
-      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
-      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
-      "TRANSPORT": "Set the default transports, in order of preference",
-      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
-      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
-      "HEADERS": "Note: Headers section must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "TIMEOUT": "Request timeout in seconds. The value must be between 1 and 10 and the default value is 5."
-    },
-    "EDIT_TRUNK": "Edit Trunk",
-    "DELETE_TRUNK": "Delete Trunk",
-    "CREATED_AT": "Created At",
-    "SETTINGS": "Settings",
-    "ADVANCED": "Advanced",
-    "OTHER": "Other",
-    "ACTIVE": "Active",
-    "CONTEXT": "Context",
-    "CALLERID": "Caller ID",
-    "TYPE": "Type",
-    "DTMFMODE": "DTMF Mode",
-    "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
-    "REGISTRY": "Registry",
-    "DIRECTMEDIA": "Direct Media",
-    "CALLCOUNTER": "Call Counter",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From User",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Add Phone to URL",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
-    "ENCRYPTION": "Encryption",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
-    "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
-    "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Calls Limit",
-    "OTHERFIELDS": "Other Fields",
-    "NEW_VARIABLE": "New Variable",
-    "NEW_TAG": "New Tag",
-    "NEW_PAUSE": "New Pause",
-    "NEW_CANNEDANSWER": "New Canned Answer",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_TRUNK": "New Trunk",
-    "FROM": "From",
-    "TO": "To",
-    "WEEKDAY": "Week Day",
-    "MONTHDAY": "Month Day",
-    "MONTH": "Month",
-    "ALWAYS": "Always",
-    "MON": "Monday",
-    "TUE": "Tuesday",
-    "WED": "Wednesday",
-    "THU": "Thursday",
-    "FRI": "Friday",
-    "SAT": "Saturday",
-    "SUN": "Sunday",
-    "JAN": "January",
-    "FEB": "February",
-    "MAR": "March",
-    "APR": "April",
-    "MAY": "May",
-    "JUN": "June",
-    "JUL": "July",
-    "AUG": "August",
-    "SEP": "September",
-    "OCT": "October",
-    "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
-    "EMAILCCADDRESS": "Cc",
-    "EMAILBCCADDRESS": "Bcc",
-    "CURRENTDAY": "Current Day",
-    "DAILY": "Daily",
-    "WEEKLY": "Weekly",
-    "MONTHLY": "Monthly",
-    "PREVIOUS_DAY": "Previous Day",
-    "LAST_SEVEN_DAYS": "Last Seven Days",
-    "LAST_THIRTY_DAYS": "Last Thirthy Days",
-    "LAST_MONTH": "Last Month",
-    "WEEKDAYS": "Week Days",
-    "HOUR": "Hour",
-    "DEFAULT": "Default",
-    "CSV": "CSV",
-    "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "MAIL_SUBSTATUS": "Email Substatus",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
-    "MOTIONBAR": "Motion Bar",
-    "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
-    "URL": "URL",
-    "APPLICATION": "Application",
-    "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
-    "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
-    "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
-    "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
-    "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
-    "ON_THE": "On the",
-    "OF_EVERY": "Of every",
-    "MONTH_AT": "Month at",
-    "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
-    "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
-    "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "MOTION_TAB": "New Agent Dashboard Tab",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
-    "AGENT": "Agent",
-    "HEADERS": "Headers",
-    "WHATSAPP": "WhatsApp Connector",
-    "LEVEL": "Level",
-    "NOTIFICATIONS": {
-      "DISPOSITION_CREATED_SUCCESS_TITLE": "Disposition successfully created",
-      "DISPOSITION_SAVED_SUCCESS_TITLE": "Disposition successfully saved",
-      "DISPOSITION_DELETE_TITLE": "Are you sure want to delete the disposition?",
-      "DISPOSITION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} will be deleted with all its sub dispositions",
-      "DISPOSITION_DELETED_SUCCESS_TITLE": "Disposition successfully deleted",
-      "DISPOSITIONS_DELETE_TITLE": "Are you sure want to delete the selected dispositions?",
-      "DISPOSITIONS_DELETE_MESSAGE": "{{ total }} dispositions will be deleted",
-      "TRIGGER_CREATED_SUCCESS_TITLE": "Trigger successfully created",
-      "TRIGGER_SAVED_SUCCESS_TITLE": "Trigger successfully saved",
-      "TRIGGER_DELETE_TITLE": "Are you sure want to delete the trigger?",
-      "TRIGGER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "TRIGGER_DELETED_SUCCESS_TITLE": "Trigger successfully deleted",
-      "TRIGGERS_DELETE_TITLE": "Are you sure want to delete the selected triggers?",
-      "TRIGGERS_DELETE_MESSAGE": "{{ total }} triggers will be deleted",
-      "TRIGGERS_DELETED_SUCCESS_TITLE": "Triggers successfully deleted",
-      "ACTION_CREATED_SUCCESS_TITLE": "Action successfully created",
-      "ACTION_SAVED_SUCCESS_TITLE": "Action successfully saved",
-      "ACTION_DELETE_TITLE": "Are you sure want to delete the action?",
-      "ACTION_DELETED_SUCCESS_TITLE": "Action successfully deleted",
-      "ACTIONS_DELETE_TITLE": "Are you sure want to delete the selected actions?",
-      "ACTIONS_DELETE_MESSAGE": "{{ total }} actions will be deleted",
-      "ACTIONS_DELETED_SUCCESS_TITLE": "Actions successfully deleted",
-      "CONDITION_CREATED_SUCCESS_TITLE": "Condition successfully created",
-      "CONDITION_SAVED_SUCCESS_TITLE": "Condition successfully saved",
-      "CONDITION_DELETE_TITLE": "Are you sure want to delete the condition?",
-      "CONDITION_DELETED_SUCCESS_TITLE": "Condition successfully deleted",
-      "CONDITIONS_DELETE_TITLE": "Are you sure want to delete the selected conditions?",
-      "CONDITIONS_DELETE_MESSAGE": "{{ total }} conditions will be deleted",
-      "CONDITIONS_DELETED_SUCCESS_TITLE": "Conditions successfully deleted"
-    },
-    "ALL_DISPOSITIONS": "All dispositions",
-    "SELECT_LEVEL": "Select a level",
-    "ALL": "All",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "SEARCH_FIELDS": "Search fields",
-    "AUTOCREATE_FIELD": "Autocreate field",
-    "STANDARD": "Standard",
-    "GLOBALS": "Globals",
-    "MOTION_BAR": "Motion Bar"
-  }
-}
index 43551d0..1775184 100644 (file)
@@ -62,8 +62,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nilai harus lebih besar dari atau sama dengan",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilai harus kurang dari atau sama dengan",
       "TIMEOUT_REQUIRED": "Bidang wajib",
-      "AUTOCREATE_FIELD_REQUIRED": "Bidang wajib",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Abaikan bidang Id kontak dialer wajib diisi"
+      "AUTOCREATE_FIELD_REQUIRED": "Bidang wajib"
     },
     "HELP": {
       "ADD_PHONE_TO_URI": "Tentukan jika penyedia membutuhkan '; user = phone' di URL",
     "LEVEL": "Tingkat",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "SELECT_LEVEL": "Pilih level",
-    "TITLEFONTSIZE": "Ukuran Judul Font",
-    "IGNOREDIALERCONTACTID": "Abaikan Id kontak dialer",
-    "MAIL_SUBSTATUS": "Substatus Email"
+    "TITLEFONTSIZE": "Ukuran Judul Font"
   }
 }
index 37b15da..bb2a63f 100644 (file)
@@ -62,8 +62,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "値は以上でなければなりません",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
       "TIMEOUT_REQUIRED": "必須フィールド",
-      "AUTOCREATE_FIELD_REQUIRED": "必須フィールド",
-      "IGNOREDIALERCONTACTID_REQUIRED": "ダイヤラーの連絡先IDフィールドを無視する必要があります"
+      "AUTOCREATE_FIELD_REQUIRED": "必須フィールド"
     },
     "HELP": {
       "ADD_PHONE_TO_URI": "プロバイダーがURLに\";user=phone\"を要求するかどうかを定義します",
     "LEVEL": "レベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "SELECT_LEVEL": "レベルを選択してください",
-    "TITLEFONTSIZE": "フォントタイトルサイズ",
-    "IGNOREDIALERCONTACTID": "ダイヤラーの連絡先IDを無視する",
-    "MAIL_SUBSTATUS": "メールサブステータス"
+    "TITLEFONTSIZE": "フォントタイトルサイズ"
   }
 }
index 7d29f27..aa8aae2 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "값은 크거나 같아야합니다",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 이하 여야합니다",
       "TIMEOUT_REQUIRED": "필수 필드",
-      "AUTOCREATE_FIELD_REQUIRED": "필수 필드",
-      "IGNOREDIALERCONTACTID_REQUIRED": "다이얼러 연락처 ID 무시 필드는 필수 항목입니다."
+      "AUTOCREATE_FIELD_REQUIRED": "필수 필드"
     },
     "HOST": "호스트",
     "SECRET": "비공개",
     "LEVEL": "수평",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "SELECT_LEVEL": "레벨 선택",
-    "TITLEFONTSIZE": "글꼴 제목 크기",
-    "IGNOREDIALERCONTACTID": "다이얼러 연락처 ID 무시",
-    "MAIL_SUBSTATUS": "이메일 하위 상태"
+    "TITLEFONTSIZE": "글꼴 제목 크기"
   }
 }
index 3e4ba4c..06d6df0 100644 (file)
       "TIMEOUT_REQUIRED": "Privalomas laukas",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
-      "AUTOCREATE_FIELD_REQUIRED": "Privalomas laukas",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignoruoti rinkiklio kontakto ID lauką būtina užpildyti"
+      "AUTOCREATE_FIELD_REQUIRED": "Privalomas laukas"
     },
     "HOST": "Savininkas",
     "SECRET": "Slėpinys",
     "LEVEL": "Lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "SELECT_LEVEL": "Pasirinkite lygį",
-    "TITLEFONTSIZE": "Šrifto pavadinimo dydis",
-    "IGNOREDIALERCONTACTID": "Ignoruoti rinkiklio kontakto ID",
-    "MAIL_SUBSTATUS": "El. pašto būsena"
+    "TITLEFONTSIZE": "Šrifto pavadinimo dydis"
   }
 }
index 909021b..f9a67b6 100644 (file)
@@ -62,8 +62,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazai vai vienādai ar",
       "TIMEOUT_REQUIRED": "Obligāts lauks",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligāts lauks",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignorēt zvanītāja kontaktpersonas ID lauks ir nepieciešams"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligāts lauks"
     },
     "HELP": {
       "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
     "LEVEL": "Līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "SELECT_LEVEL": "Atlasiet līmeni",
-    "TITLEFONTSIZE": "Fonta nosaukuma lielums",
-    "IGNOREDIALERCONTACTID": "Ignorēt zvanītāja kontaktpersonas ID",
-    "MAIL_SUBSTATUS": "E-pasta apakšstatuss"
+    "TITLEFONTSIZE": "Fonta nosaukuma lielums"
   }
 }
index 4b212b6..1a9505d 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter dan of gelijk zijn aan",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
       "TIMEOUT_REQUIRED": "Verplicht veld",
-      "AUTOCREATE_FIELD_REQUIRED": "Verplicht veld",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Id-veld van contactpersoon voor kiezer negeren is verplicht"
+      "AUTOCREATE_FIELD_REQUIRED": "Verplicht veld"
     },
     "HOST": "Host",
     "SECRET": "Geheime",
     "LEVEL": "Niveau",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "SELECT_LEVEL": "Kies een niveau",
-    "TITLEFONTSIZE": "Lettertype titelgrootte",
-    "IGNOREDIALERCONTACTID": "Contact-ID van kiezer negeren",
-    "MAIL_SUBSTATUS": "Substatus e-mail"
+    "TITLEFONTSIZE": "Lettertype titelgrootte"
   }
 }
index 26ce084..d187d0c 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verdien må være større enn eller lik",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
       "TIMEOUT_REQUIRED": "Obligatoriske felt",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriske felt",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignorer oppringingskontakt-ID-feltet er obligatorisk"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriske felt"
     },
     "HOST": "Vert",
     "SECRET": "Hemmelige",
     "LEVEL": "Nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "SELECT_LEVEL": "Velg et nivå",
-    "TITLEFONTSIZE": "Skriftens tittelstørrelse",
-    "IGNOREDIALERCONTACTID": "Ignorer oppringingskontakt-ID",
-    "MAIL_SUBSTATUS": "E-post understatus"
+    "TITLEFONTSIZE": "Skriftens tittelstørrelse"
   }
 }
index 165262b..3196599 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wartość musi być większa lub równa",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
       "TIMEOUT_REQUIRED": "Pole obowiązkowe",
-      "AUTOCREATE_FIELD_REQUIRED": "Pole obowiązkowe",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignoruj pole identyfikatora kontaktu dialera jest wymagane"
+      "AUTOCREATE_FIELD_REQUIRED": "Pole obowiązkowe"
     },
     "HOST": "Hosta",
     "SECRET": "Secret",
     "LEVEL": "Poziom",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "SELECT_LEVEL": "Wybierz poziom",
-    "TITLEFONTSIZE": "Rozmiar tytułu czcionki",
-    "IGNOREDIALERCONTACTID": "Ignoruj identyfikator kontaktu dialera",
-    "MAIL_SUBSTATUS": "Substancja e-mail"
+    "TITLEFONTSIZE": "Rozmiar tytułu czcionki"
   }
 }
index 59d39ba..95b7fa9 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_REQUIRED": "Campo obrigatório",
-      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório",
-      "IGNOREDIALERCONTACTID_REQUIRED": "O campo Ignore dialer contact Id é obrigatório"
+      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório"
     },
     "HOST": "Host",
     "SECRET": "Segredo",
     "LEVEL": "Nível",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "SELECT_LEVEL": "Selecione um nível",
-    "TITLEFONTSIZE": "Tamanho do título da fonte",
-    "IGNOREDIALERCONTACTID": "Ignorar o ID de contato do discador",
-    "MAIL_SUBSTATUS": "Substatus do Email"
+    "TITLEFONTSIZE": "Tamanho do título da fonte"
   }
 }
index 9f1c987..11c8858 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_REQUIRED": "Campo obrigatório",
-      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório",
-      "IGNOREDIALERCONTACTID_REQUIRED": "O campo Ignore dialer contact Id é obrigatório"
+      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório"
     },
     "HOST": "Host",
     "SECRET": "Segredo",
     "LEVEL": "Nível",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "SELECT_LEVEL": "Selecione um nível",
-    "TITLEFONTSIZE": "Tamanho do título da fonte",
-    "IGNOREDIALERCONTACTID": "Ignorar o ID de contato do discador",
-    "MAIL_SUBSTATUS": "Substatus do Email"
+    "TITLEFONTSIZE": "Tamanho do título da fonte"
   }
 }
index f9c55ae..bde0ed5 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
       "TIMEOUT_REQUIRED": "Обязательное поле",
-      "AUTOCREATE_FIELD_REQUIRED": "Обязательное поле",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Поле Ignore dialer contact Id обязательно для заполнения"
+      "AUTOCREATE_FIELD_REQUIRED": "Обязательное поле"
     },
     "HOST": "Принимающей",
     "SECRET": "Секрет",
     "LEVEL": "Уровень",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "SELECT_LEVEL": "Выберите уровень",
-    "TITLEFONTSIZE": "Размер заголовка шрифта",
-    "IGNOREDIALERCONTACTID": "Игнорировать идентификатор контакта номеронабирателя",
-    "MAIL_SUBSTATUS": "Подстатус электронной почты"
+    "TITLEFONTSIZE": "Размер заголовка шрифта"
   }
 }
index c254bb8..2e11356 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Värdet måste vara större än eller lika med",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
       "TIMEOUT_REQUIRED": "Obligatoriskt fält",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriskt fält",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Fältet Ignorera kontakt-ID för uppringare krävs"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriskt fält"
     },
     "HOST": "Host",
     "SECRET": "Hemlig",
     "LEVEL": "Nivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "SELECT_LEVEL": "Välj en nivå",
-    "TITLEFONTSIZE": "Teckensnittsstorlek",
-    "IGNOREDIALERCONTACTID": "Ignorera uppringarens kontakt-ID",
-    "MAIL_SUBSTATUS": "E-postunderstatus"
+    "TITLEFONTSIZE": "Teckensnittsstorlek"
   }
 }
index 2fe880c..80117e9 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Değer şuna eşit veya daha büyük olmalıdır",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şuna eşit veya daha küçük olmalıdır",
       "TIMEOUT_REQUIRED": "Zorunlu alan",
-      "AUTOCREATE_FIELD_REQUIRED": "Zorunlu alan",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Çevirici kişi kimliğini yoksay alanı gereklidir"
+      "AUTOCREATE_FIELD_REQUIRED": "Zorunlu alan"
     },
     "HOST": "Ana",
     "SECRET": "Gizli",
     "LEVEL": "Seviye",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "SELECT_LEVEL": "Bir seviye seçin",
-    "TITLEFONTSIZE": "Yazı Tipi Başlık Boyutu",
-    "IGNOREDIALERCONTACTID": "Çevirici kişi kimliğini yoksay",
-    "MAIL_SUBSTATUS": "E-posta Alt Durumu"
+    "TITLEFONTSIZE": "Yazı Tipi Başlık Boyutu"
   }
 }
index 1f569fd..3063b73 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "该值必须大于或等于",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
       "TIMEOUT_REQUIRED": "必填项",
-      "AUTOCREATE_FIELD_REQUIRED": "必填项",
-      "IGNOREDIALERCONTACTID_REQUIRED": "忽略拨号联系人 ID 字段是必需的"
+      "AUTOCREATE_FIELD_REQUIRED": "必填项"
     },
     "HOST": "主机",
     "SECRET": "秘密",
     "LEVEL": "水平",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "SELECT_LEVEL": "选择一个级别",
-    "TITLEFONTSIZE": "字体标题大小",
-    "IGNOREDIALERCONTACTID": "忽略拨号联系人 ID",
-    "MAIL_SUBSTATUS": "电子邮件子状态"
+    "TITLEFONTSIZE": "字体标题大小"
   }
 }
index 0dbd9d1..3009e4b 100644 (file)
@@ -66,8 +66,7 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "該值必須大於或等於",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
       "TIMEOUT_REQUIRED": "必填項",
-      "AUTOCREATE_FIELD_REQUIRED": "必填項",
-      "IGNOREDIALERCONTACTID_REQUIRED": "忽略撥號聯繫人 ID 字段是必需的"
+      "AUTOCREATE_FIELD_REQUIRED": "必填項"
     },
     "HOST": "主機",
     "SECRET": "秘密",
     "LEVEL": "水平",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "SELECT_LEVEL": "選擇一個級別",
-    "TITLEFONTSIZE": "字體標題大小",
-    "IGNOREDIALERCONTACTID": "忽略撥號聯繫人 ID",
-    "MAIL_SUBSTATUS": "電子郵件子狀態"
+    "TITLEFONTSIZE": "字體標題大小"
   }
 }
diff --git a/public/app/main/apps/video/i18n/hu.json b/public/app/main/apps/video/i18n/hu.json
deleted file mode 100644 (file)
index 81b9c5c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "VIDEO": {
-    "VIDEO": "Video",
-    "SCREENRECORDINGS": "Screen Recordings",
-    "SEARCH_FOR_ANYONE": "Search",
-    "INTERACTIONID": "Interaction ID",
-    "CHANNEL": "Channel",
-    "AGENT": "Agent",
-    "RATING": "Rating",
-    "NO_RATING": "No Rating",
-    "RECORDSTARTTIME": "Record Start Time",
-    "RECORDENDTIME": "Record End Time",
-    "DURATION": "Duration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "EDIT_SCREENRECORDING": "Rate Screen Recording",
-    "PLAY_SCREENRECORDING": "Play Screen Recording",
-    "DOWNLOAD_SCREENRECORDING": "Download Screen Recording",
-    "DELETE_SCREENRECORDING": "Delete Screen Recording",
-    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
-    "WRONG_EXTENSION": "The file presents the wrong extension",
-    "FILE_NOT_FOUND": "File not found",
-    "SAVE": "Save",
-    "DELETE": "Delete",
-    "UPDATEDAT": "Last Update",
-    "PROPERTIES": "Properties",
-    "FORMAT": "Format",
-    "STARTEDAT": "Record Start Time",
-    "CLOSEDAT": "Record End Time",
-    "CREATEDAT": "Created at",
-    "ID": "Id",
-    "AGENTNAME": "Agent",
-    "CANT_PLAY_THIS_FILE": "Can't play this type of file",
-    "LEGEND": {},
-    "ERRORS": {},
-    "HELP": {}
-  }
-}
index e913b7d..254759d 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
     "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
-    "ALIAS": "الاسم المستعار",
-    "MAXCAPACITY": "السعة القصوى",
-    "WORKING": "عمل"
+    "ALIAS": "الاسم المستعار"
   }
 }
index acf12e0..3f3b98d 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
     "TEAMADD_VOICEPREFIX": "Přidat tým k předponě",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "Maximální kapacita",
-    "WORKING": "Pracovní"
+    "ALIAS": "Alias"
   }
 }
index d178808..ea7f1fe 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
     "TEAMADD_VOICEPREFIX": "Føj team til præfiks",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "Max kapacitet",
-    "WORKING": "Arbejder"
+    "ALIAS": "Alias"
   }
 }
index 2bf3764..bd7bae8 100644 (file)
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
       "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet",
-      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Änderungen nicht verlieren möchten."
+      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
     },
     "MUSICONHOLD": "Wartemusik",
     "ANNOUNCETOAGENT": "Ansage an Agenten",
     "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
     "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
     "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
     "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "maximale Kapazität",
-    "WORKING": "Arbeiten"
+    "ALIAS": "Alias"
   }
 }
index d815a36..b29a2d3 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
     "TEAMADD_VOICEPREFIX": "Agregar equipo al prefijo",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "máxima capacidad",
-    "WORKING": "Laboral"
+    "ALIAS": "Alias"
   }
 }
index e8fc04a..b52a7e9 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
     "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
-    "ALIAS": "Teise nimega",
-    "MAXCAPACITY": "Maksimaalne mahutavus",
-    "WORKING": "Töötab"
+    "ALIAS": "Teise nimega"
   }
 }
index eed1435..4c8f69b 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
     "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
-    "ALIAS": "نام مستعار",
-    "MAXCAPACITY": "حداکثر ظرفیت",
-    "WORKING": "کار کردن"
+    "ALIAS": "نام مستعار"
   }
 }
index 3745db0..664bc29 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
     "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "Max kapasiteetti",
-    "WORKING": "Työskentely"
+    "ALIAS": "Alias"
   }
 }
index 627cf9d..51099a3 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
     "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau",
     "TEAMADD_VOICEPREFIX": "Ajouter une équipe au préfixe",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "capacité maximale",
-    "WORKING": "Travail"
+    "ALIAS": "Alias"
   }
 }
index 84f003f..61c740b 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
     "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
-    "ALIAS": "כינוי",
-    "MAXCAPACITY": "קיבולת מקסימלית",
-    "WORKING": "עובד"
+    "ALIAS": "כינוי"
   }
 }
index 1fa63c5..905e9aa 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
     "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
-    "ALIAS": "उपनाम",
-    "MAXCAPACITY": "अधिकतम क्षमता",
-    "WORKING": "काम में हो"
+    "ALIAS": "उपनाम"
   }
 }
diff --git a/public/app/main/apps/voice/i18n/hu.json b/public/app/main/apps/voice/i18n/hu.json
deleted file mode 100644 (file)
index 28d2655..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-{
-  "VOICE": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "FAILUREREASON": "Failure reason",
-    "TEXT": "Text",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Download Transcript",
-    "INBOUND": "Inbound",
-    "OUTBOUND": "Outbound",
-    "DIALER": "Dialer",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "WAITING_FOR_AGENTS": "Waiting for agents",
-    "ACTIVE": "Active",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Partial Pause",
-    "STATUS": "Status",
-    "TIMER": "Timer",
-    "ALIAS": "Alias",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "EDIT_TRUNK": "Edit Trunk",
-    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "NAME": "Name",
-    "LOGOUT": "Logout",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "CREATED_AT": "Created At",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
-    "APPLICATIONS_LIST": "Applications List",
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCED": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "VARIABLE": "Variable",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
-    "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
-    "AGI": "Agi",
-    "DIAL": "Dial",
-    "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
-    "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
-    "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
-    "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
-    "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "TRUNK_STATUS": "Trunk Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not In Use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "ADD_VOICEPREFIX": "Add Prefix",
-    "EDIT_VOICEPREFIX": "Edit Prefix",
-    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "SCREENRECORDING": "Manage Screen Recording",
-    "START_SCREENRECORDING": "Start Screen Recording",
-    "STOP_SCREENRECORDING": "Stop Screen Recording",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
-    "WRONG_EXTENSION": "The file presents the wrong extension",
-    "FILE_NOT_FOUND": "File not found",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIPT": "Transcript",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "TRANSCRIBESTATUS_COMPLETED": "Completed",
-    "TRANSCRIBESTATUS_IN_PROGRESS": "In progress",
-    "TRANSCRIBESTATUS_FAILED": "Failed",
-    "TRANSCRIBESTATUS_NEW": "New",
-    "TRANSCRIPTANALYSIS": "Transcript & Analysis",
-    "SENTIMENT_POSITIVE": "Positive",
-    "SENTIMENT_NEGATIVE": "Negative",
-    "SENTIMENT_NEUTRAL": "Neutral",
-    "SENTIMENT_MIXED": "Mixed",
-    "RUNTRANSCRIBE_VOICERECORDING": "Run Transcribe",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Run Transcribe&Sentiment",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "SENTIMENT": "Sentiment",
-    "SERVICELEVEL": "Service level",
-    "MAXCAPACITY": "Max capacity",
-    "WORKING": "Working",
-    "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
-    },
-    "ERRORS": {
-      "PROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "VARIABLE_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "APPLICATION_NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
-      "PENALTY_REQUIRED": "You must specify a value for penalty"
-    },
-    "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the format of the recording file. If it set to 'inactive', calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)",
-      "SAVE_ROUTES": "The routing has been modified. Remember to save if you don't want to lose your changes."
-    },
-    "NOTIFICATIONS": {
-      "EXTENSION_CREATED_SUCCESS_TITLE": "Route successfully created",
-      "EXTENSION_SAVED_SUCCESS_TITLE": "Route successfully saved",
-      "EXTENSION_DELETE_TITLE": "Are you sure want to delete the route?",
-      "EXTENSION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "EXTENSION_DELETED_SUCCESS_TITLE": "Route successfully deleted",
-      "EXTENSIONS_DELETE_TITLE": "Are you sure want to delete the selected routes?",
-      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} routes will be deleted",
-      "ROUTING_APPLICATION_DELETE_TITLE": "Are you sure want to delete the application?",
-      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ROUTING_APPLICATIONS_DELETE_TITLE": "Are you sure want to delete the selected applications?",
-      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applications will be deleted",
-      "CALLYSQUARE_PROJECTS_GET_ERROR": "Unable to retrieve any CallySquare project",
-      "TRUNKS_GET_ERROR": "Unable to retrieve any trunk",
-      "VOICE_CONTEXTS_GET_ERROR": "Unable to retrieve any voice context",
-      "QUEUES_GET_ERROR": "Unable to retrieve any queue",
-      "SOUNDS_GET_ERROR": "Unable to retrieve any sound",
-      "USERS_GET_ERROR": "Unable to retrieve any user",
-      "VARIABLES_GET_ERROR": "Unable to retrieve any variable",
-      "VOICEMAILS_GET_ERROR": "Unable to retrieve any voicemail",
-      "TAGS_GET_ERROR": "Unable to retrieve any tag",
-      "INTERVALS_GET_ERROR": "Unable to retrieve any interval"
-    }
-  }
-}
index 3c7b0cc..eef7ebe 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
     "TEAMADD_VOICEPREFIX": "Tambahkan Tim ke Awalan",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "kapasitas maksimum",
-    "WORKING": "Bekerja"
+    "ALIAS": "Alias"
   }
 }
index 4ad4363..bf5b0d2 100644 (file)
     "TRUNKS": "Trunk",
     "REGISTRY": "Registrazione",
     "NO_REGISTRY": "Nessuna registrazione",
-    "LOGGED_IN": "Connesso",
+    "LOGGED_IN": "Online (SIP Connessi)",
     "PAUSED": "In pausa",
     "WAITING": "In attesa",
     "TALKING": "In conversazione",
       "CALLERIDALL_MUST_VALID_PATTERN": "Formato errato",
       "CALLER_ID_MUST_VALID_PATTERN": "Formato errato",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obbligatorio",
-      "PENALTY_REQUIRED": "Specificare un valore per la penalità"
+      "PENALTY_REQUIRED": "Devi specificare un valore per la penalità"
     },
     "HELP": {
       "TIMEOUT": "Tempo (in secondi) in cui va fatto squillare il dispositivo dell'agente in coda",
index 3aeb53a..d2accf3 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
     "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
-    "ALIAS": "エイリアス",
-    "MAXCAPACITY": "最大容量",
-    "WORKING": "働く"
+    "ALIAS": "エイリアス"
   }
 }
index 6792938..9e4a917 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
     "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
-    "ALIAS": "별명",
-    "MAXCAPACITY": "최대 용량",
-    "WORKING": "일하고있는"
+    "ALIAS": "별명"
   }
 }
index 37fad45..65172e6 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
     "TEAMADD_VOICEPREFIX": "Pridėti komandą prie priešdėlio",
-    "ALIAS": "Pseudonimas",
-    "MAXCAPACITY": "Maksimali talpa",
-    "WORKING": "Darbas"
+    "ALIAS": "Pseudonimas"
   }
 }
index ee73c26..499925d 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
     "TEAMADD_VOICEPREFIX": "Pievienot komandu prefiksam",
-    "ALIAS": "Pseidonīms",
-    "MAXCAPACITY": "Maksimālā ietilpība",
-    "WORKING": "Darbojas"
+    "ALIAS": "Pseidonīms"
   }
 }
index 656bb91..a1ad47d 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
     "TEAMADD_VOICEPREFIX": "Team toevoegen aan voorvoegsel",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "maximum capaciteit",
-    "WORKING": "Werken"
+    "ALIAS": "Alias"
   }
 }
index add2de9..f979e88 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
     "TEAMADD_VOICEPREFIX": "Legg Team til prefiks",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "Maks kapasitet",
-    "WORKING": "Jobber"
+    "ALIAS": "Alias"
   }
 }
index c709395..9974a58 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
     "TEAMADD_VOICEPREFIX": "Dodaj drużynę do prefiksu",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "Maksymalna pojemność",
-    "WORKING": "Pracujący"
+    "ALIAS": "Alias"
   }
 }
index 971bf53..95abd15 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
     "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
-    "ALIAS": "Pseudônimo",
-    "MAXCAPACITY": "capacidade máxima",
-    "WORKING": "Trabalhando"
+    "ALIAS": "Pseudônimo"
   }
 }
index faa44b9..3c55740 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
     "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
-    "ALIAS": "Pseudônimo",
-    "MAXCAPACITY": "capacidade máxima",
-    "WORKING": "Trabalhando"
+    "ALIAS": "Pseudônimo"
   }
 }
index cc17b0e..022d0b1 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
     "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
-    "ALIAS": "Псевдоним",
-    "MAXCAPACITY": "Максимальная вместимость",
-    "WORKING": "Работающий"
+    "ALIAS": "Псевдоним"
   }
 }
index fa7f690..6a741b4 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
     "TEAMADD_VOICEPREFIX": "Lägg till Team i prefixet",
-    "ALIAS": "Alias",
-    "MAXCAPACITY": "Max kapacitet",
-    "WORKING": "Arbetssätt"
+    "ALIAS": "Alias"
   }
 }
index 5cd2e05..51a4ca4 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
     "TEAMADD_VOICEPREFIX": "Önek'e Takım Ekle",
-    "ALIAS": "takma ad",
-    "MAXCAPACITY": "maksimum kapasite",
-    "WORKING": "Çalışma"
+    "ALIAS": "takma ad"
   }
 }
index 6792883..3abaa1b 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
     "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
-    "ALIAS": "别名",
-    "MAXCAPACITY": "最大容量",
-    "WORKING": "在职的"
+    "ALIAS": "别名"
   }
 }
index 62cf89c..c78fea9 100644 (file)
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
     "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
-    "ALIAS": "別名",
-    "MAXCAPACITY": "最大容量",
-    "WORKING": "在職的"
+    "ALIAS": "別名"
   }
 }
index 21b7425..6f42238 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "حقل الزامي",
       "CLIENTEMAIL_REQUIRED": "حقل الزامي",
       "PRIVATEKEY_REQUIRED": "حقل الزامي",
-      "PROJECTID_REQUIRED": "حقل الزامي",
-      "BASEURL_REQUIRED": "حقل الزامي"
+      "PROJECTID_REQUIRED": "حقل الزامي"
     },
     "HELP": {
       "LIST": "تستخدم قائمة مدير جهات الاتصال لربط جهات الاتصال",
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
+    "LOGGED_IN": "تم تسجيل الدخول",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "تحرير Dialogflow V2",
     "PRIVATEKEY": "مفتاح سري",
-    "PROJECTID": "معرف المشروع",
-    "BASEURL": "عنوان URL الأساسي",
-    "DELIVERYREPORTURL": "عنوان URL لتقرير التسليم"
+    "PROJECTID": "معرف المشروع"
   }
 }
index 26d518e..e361766 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Povinné pole",
       "CLIENTEMAIL_REQUIRED": "Povinné pole",
       "PRIVATEKEY_REQUIRED": "Povinné pole",
-      "PROJECTID_REQUIRED": "Povinné pole",
-      "BASEURL_REQUIRED": "Povinné pole"
+      "PROJECTID_REQUIRED": "Povinné pole"
     },
     "HELP": {
       "LIST": "Seznam Správce kontaktů používaný k přiřazení kontaktů",
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen (připojeno SIP)",
+    "LOGGED_IN": "Přihlášen",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Upravit Dialogflow V2",
     "PRIVATEKEY": "Soukromý klíč",
-    "PROJECTID": "ID projektu",
-    "BASEURL": "Základní URL",
-    "DELIVERYREPORTURL": "Adresa URL zprávy o doručení"
+    "PROJECTID": "ID projektu"
   }
 }
index 4e07eb6..00e305d 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Obligatorisk felt",
       "CLIENTEMAIL_REQUIRED": "Obligatorisk felt",
       "PRIVATEKEY_REQUIRED": "Obligatorisk felt",
-      "PROJECTID_REQUIRED": "Obligatorisk felt",
-      "BASEURL_REQUIRED": "Obligatorisk felt"
+      "PROJECTID_REQUIRED": "Obligatorisk felt"
     },
     "HELP": {
       "LIST": "Kontakt Manager-liste, der bruges til at knytte kontakter",
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
+    "LOGGED_IN": "Logget ind",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Rediger Dialogflow V2",
     "PRIVATEKEY": "Privat nøgle",
-    "PROJECTID": "Projekt-id",
-    "BASEURL": "Basis URL",
-    "DELIVERYREPORTURL": "Leveringsrapportens URL"
+    "PROJECTID": "Projekt-id"
   }
 }
index a362d79..f01cf37 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "PROJECTID_REQUIRED": "Pflichtfeld",
-      "BASEURL_REQUIRED": "Pflichtfeld"
+      "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
       "LIST": "Liste für die Zuordnung von Kontakten",
     "LASTMESSAGE": "Letzte Nachricht",
     "LEXREGION": "LexRegion",
     "LIST": "Liste",
-    "LOGGED_IN": "Eingeloggt (Verbunden mit SIP)",
+    "LOGGED_IN": "Eingeloggt",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
     "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
     "PRIVATEKEY": "Privater Schlüssel",
-    "PROJECTID": "Projekt-ID",
-    "BASEURL": "Basis-URL",
-    "DELIVERYREPORTURL": "Zustellberichts-URL"
+    "PROJECTID": "Projekt-ID"
   }
 }
index 68808ad..2d8b1f5 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In (SIP Connected)",
+    "LOGGED_IN": "Logged In",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
     "NOTIFICATIONSOUND": "Sound",
     "NOTIFICATIONTEMPLATE": "Template",
     "OF": "of",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "PAGE": "Page",
     "PARTIALPAUSE": "Partial Pause",
     "PAUSE": "Pause",
index af0bf10..a7cb714 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Campo obligatorio",
       "CLIENTEMAIL_REQUIRED": "Campo obligatorio",
       "PRIVATEKEY_REQUIRED": "Campo obligatorio",
-      "PROJECTID_REQUIRED": "Campo obligatorio",
-      "BASEURL_REQUIRED": "Campo obligatorio"
+      "PROJECTID_REQUIRED": "Campo obligatorio"
     },
     "HELP": {
       "LIST": "Lista de administrador de contactos utilizada para asociar contactos",
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
     "PRIVATEKEY": "Llave privada",
-    "PROJECTID": "Projecto ID",
-    "BASEURL": "URL base",
-    "DELIVERYREPORTURL": "URL del informe de entrega"
+    "PROJECTID": "Projecto ID"
   }
 }
index 7c8316a..c40e5bd 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli",
-      "BASEURL_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
+    "LOGGED_IN": "Sisse logitud",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID",
-    "BASEURL": "Baas-URL",
-    "DELIVERYREPORTURL": "Edastamisaruande URL"
+    "PROJECTID": "Projekti ID"
   }
 }
index 218417c..76a3444 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "زمینه اجباری",
       "CLIENTEMAIL_REQUIRED": "زمینه اجباری",
       "PRIVATEKEY_REQUIRED": "زمینه اجباری",
-      "PROJECTID_REQUIRED": "زمینه اجباری",
-      "BASEURL_REQUIRED": "فیلد اجباری"
+      "PROJECTID_REQUIRED": "زمینه اجباری"
     },
     "HELP": {
       "LIST": "لیست مدیر تماس با ما برای ارتباط مخاطبین استفاده می شود",
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
+    "LOGGED_IN": "ورود به سیستم",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "ویرایش Dialogflow V2",
     "PRIVATEKEY": "کلید خصوصی",
-    "PROJECTID": "شناسه پروژه",
-    "BASEURL": "URL پایه",
-    "DELIVERYREPORTURL": "URL گزارش تحویل"
+    "PROJECTID": "شناسه پروژه"
   }
 }
index fbcd21f..52f4f20 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Pakollinen kenttä",
       "CLIENTEMAIL_REQUIRED": "Pakollinen kenttä",
       "PRIVATEKEY_REQUIRED": "Pakollinen kenttä",
-      "PROJECTID_REQUIRED": "Pakollinen kenttä",
-      "BASEURL_REQUIRED": "Pakollinen kenttä"
+      "PROJECTID_REQUIRED": "Pakollinen kenttä"
     },
     "HELP": {
       "LIST": "Yhteystietojen yhdistämiseen käytetty yhteyshenkilöluettelo",
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
+    "LOGGED_IN": "Sisäänkirjautunut",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Muokkaa valintaikkunaa V2",
     "PRIVATEKEY": "Yksityinen avain",
-    "PROJECTID": "Projektin tunnus",
-    "BASEURL": "Perus-URL-osoite",
-    "DELIVERYREPORTURL": "Toimitusraportin URL-osoite"
+    "PROJECTID": "Projektin tunnus"
   }
 }
index 38e317f..919bb35 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Champ obligatoire",
       "CLIENTEMAIL_REQUIRED": "Champ obligatoire",
       "PRIVATEKEY_REQUIRED": "Champ obligatoire",
-      "PROJECTID_REQUIRED": "Champ obligatoire",
-      "BASEURL_REQUIRED": "Champ obligatoire"
+      "PROJECTID_REQUIRED": "Champ obligatoire"
     },
     "HELP": {
       "LIST": "Liste du gestionnaire de contacts utilisée pour associer des contacts",
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté (SIP connecté)",
+    "LOGGED_IN": "Connecté",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Modifier Dialogflow V2",
     "PRIVATEKEY": "Clé privée",
-    "PROJECTID": "ID du projet",
-    "BASEURL": "URL de base",
-    "DELIVERYREPORTURL": "URL du rapport de livraison"
+    "PROJECTID": "ID du projet"
   }
 }
index fe798b4..a6c765d 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "שדה חובה",
       "CLIENTEMAIL_REQUIRED": "שדה חובה",
       "PRIVATEKEY_REQUIRED": "שדה חובה",
-      "PROJECTID_REQUIRED": "שדה חובה",
-      "BASEURL_REQUIRED": "שדה חובה"
+      "PROJECTID_REQUIRED": "שדה חובה"
     },
     "HELP": {
       "LIST": "רשימת אנשי קשר המשמשת לשייך קשרים",
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר (SIP מחובר)",
+    "LOGGED_IN": "מחובר",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "ערוך את Dialogflow V2",
     "PRIVATEKEY": "מפתח פרטי",
-    "PROJECTID": "מזהה פרויקט",
-    "BASEURL": "כתובת האתר הבסיסית",
-    "DELIVERYREPORTURL": "כתובת האתר של דוח מסירה"
+    "PROJECTID": "מזהה פרויקט"
   }
 }
index 2cf73c4..0550a1a 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "आवश्यक स्थान",
       "CLIENTEMAIL_REQUIRED": "आवश्यक स्थान",
       "PRIVATEKEY_REQUIRED": "आवश्यक स्थान",
-      "PROJECTID_REQUIRED": "आवश्यक स्थान",
-      "BASEURL_REQUIRED": "अनिवार्य क्षेत्र"
+      "PROJECTID_REQUIRED": "आवश्यक स्थान"
     },
     "HELP": {
       "LIST": "कॉन्टैक्ट मैनेजर लिस्ट का इस्तेमाल कॉन्टैक्ट्स को जोड़ने में किया जाता है",
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
+    "LOGGED_IN": "लॉग इन",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
     "DIALOGFLOWV2": "संवाद प्रवाह V2",
     "EDIT_DIALOGFLOWV2": "डायलॉगफ़्लो V2 संपादित करें",
     "PRIVATEKEY": "निजी चाबी",
-    "PROJECTID": "प्रोजेक्ट आईडी",
-    "BASEURL": "आधार URL",
-    "DELIVERYREPORTURL": "वितरण रिपोर्ट URL"
+    "PROJECTID": "प्रोजेक्ट आईडी"
   }
 }
diff --git a/public/app/main/apps/whatsapp/i18n/hu.json b/public/app/main/apps/whatsapp/i18n/hu.json
deleted file mode 100644 (file)
index 2d8b1f5..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-{
-  "WHATSAPP": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "ACCESSKEYID": "Access Key ID",
-    "ACCOUNTSID": "Account SID",
-    "ACTIONS": "Actions",
-    "ADD_NOTE": "Add note",
-    "ADD_WHATSAPPACCOUNT": "Add",
-    "ADD_WHATSAPPCANNEDANSWER": "Add Canned Answer",
-    "ADD_WHATSAPPDISPOSITION": "Add WhatsApp Disposition",
-    "ADD_WHATSAPPQUEUE": "Add WhatsApp queue",
-    "ADVANCED": "Advanced",
-    "AGENT": "Agent",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "AGENTADD_QUEUE": "Add Agent To WhatsApp Queue",
-    "AGENTADD_WHATSAPPACCOUNT": "Add Agent To WhatsApp Account",
-    "AGENTADD_WHATSAPPQUEUE": "Add Agent To WhatsApp Queue",
-    "AGENTS": "Agents",
-    "AGENTSADD_QUEUE": "Add agents to WhatsApp queue",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "ALL": "All",
-    "ALL_AGENTS": "All Agents",
-    "ALL_TEAMS": "All Teams",
-    "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Auth Token",
-    "AUTOREPLY": "Auto Reply",
-    "BACK": "Back",
-    "BASEURL": "Base URL",
-    "BOTNAME": "Bot Name",
-    "BUSY": "Busy",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "CANNEDANSWERS": "Canned Answers",
-    "CAPACITY": "Capacity",
-    "CLOSE": "Close",
-    "CLOSED": "Closed",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "COMMAND": "Command",
-    "CONDITION": "Condition",
-    "CONTACT": "Contact",
-    "CREATED_AT": "Created at",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "DELETE": "Delete",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "DELETE_SELECTED": "Delete selected",
-    "DELETE_WHATSAPPACCOUNT": "Delete WhatsApp Account",
-    "DELETE_WHATSAPPCANNEDANSWER": "Deleted",
-    "DELETE_WHATSAPPDISPOSITION": "Delete WhatsApp Disposition",
-    "DELETE_WHATSAPPQUEUE": "Delete WhatsApp Queue",
-    "DESCRIPTION": "Description",
-    "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositions",
-    "DOWNLOAD_INTERACTION": "Download",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download With Attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download Without Attachments",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "EDIT_CLOSE": "Edit Close",
-    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SYSTEM": "Edit System",
-    "EDIT_TAG": "Edit Tag",
-    "EDIT_WHATSAPPACCOUNT": "Edit WhatsApp Account",
-    "EDIT_WHATSAPPCANNEDANSWER": "Edit",
-    "EDIT_WHATSAPPDISPOSITION": "Edit WhatsApp Disposition",
-    "EDIT_WHATSAPPQUEUE": "Edit WhatsApp Queue",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
-      "BOTNAME_REQUIRED": "Mandatory Field",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "DESCRIPTION_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "LANGUAGE_REQUIRED": "Mandtory Field",
-      "LEXREGION_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "TIMES_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "VARIABLE_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "WELCOMEMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WELCOMEMESSAGE_REQUIRED": "Mandatory Field"
-    },
-    "FALSEPRIORITY": "False Priority",
-    "GENERAL": "General",
-    "GO_TO_WHATSAPPACCOUNTS": "Go To Account",
-    "GOTOIF": "Gotoif",
-    "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Go To Realtime WhatsApp Queue",
-    "HELP": {
-      "LIST": "Contact Manager list used to associate contacts",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your WhatsApp Connector provider (POST method must be used): click the clipboard button to copy it",
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions"
-    },
-    "ID": "Id",
-    "IDLE": "Idle",
-    "INSERT_MESSAGE_HERE": "Insert message here",
-    "INTERACTIONS": "Interactions",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Go to Interactions",
-    "KEY": "Key",
-    "LANGUAGE": "Language",
-    "LASTMESSAGE": "Last Message",
-    "LEXREGION": "Region",
-    "LIST": "List",
-    "LOGGED_IN": "Logged In",
-    "LOGIN_TIME": "Login Time",
-    "LOGOUT": "Logout",
-    "MANDATORYDISPOSITION": "Mandatory Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-    "MORE": "More",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "MULTI_SELECT_TOGGLE": "Multi select toggle",
-    "NAME": "Name",
-    "NEW_WHATSAPPACCOUNT": "New WhatsApp Account",
-    "NEW_WHATSAPPCANNEDANSWER": "New WhatsApp Canned Answer",
-    "NEW_WHATSAPPDISPOSITION": "New WhatsApp Disposition",
-    "NEW_WHATSAPPQUEUE": "New WhatsApp Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "NO_INTERACTION_AVAILABLE": "No Interactions Available",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "No WhatsApp Accounts available",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "No WhatsApp Canned Answers Available",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "No WhatsApp Dispositions Available",
-    "NOOP": "Noop",
-    "NOTE": "Note",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "OF": "of",
-    "OPENED": "Open",
-    "PAGE": "Page",
-    "PARTIALPAUSE": "Partial Pause",
-    "PAUSE": "Pause",
-    "PAUSE_TIME": "Pause Time",
-    "PAUSED": "Paused",
-    "PHONE": "Phone",
-    "PRIORITY": "Priority",
-    "PROXY": "Proxy",
-    "QUEUE": "Queue",
-    "QUEUES": "Queues",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "READY": "Ready",
-    "REALTIME": "Realtime",
-    "RECEIVEURL": "Receive URL",
-    "DELIVERYREPORTURL": "Delivery report URL",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "REMOTE": "Remote",
-    "ROWSPERPAGE": "Rows per page",
-    "SAVE": "Save",
-    "SCREENRECORDING": "Manage Screen Recording",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SECRETACCESSKEY": "Access key secret",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select none",
-    "SELECTED": "Selected",
-    "SELECTED_AGENTS": "Selected Agents",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SEND": "Send",
-    "SETTINGS": "Settings",
-    "SPYINTERACTION": "Spy Interaction",
-    "START_SCREENRECORDING": "Start Screen Recording",
-    "STARTEDAT": "Started at",
-    "STATUS": "Status",
-    "STOP_SCREENRECORDING": "Stop Screen Recording",
-    "STRATEGY": "Strategy",
-    "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
-    "TEAMADD_WHATSAPPQUEUE": "Add Team To WhatsApp Queue",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TEXT": "Text",
-    "TIMEOUT": "Timeout",
-    "TIMER": "Timer",
-    "TIMES": "Times",
-    "TO": "To",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TRANSFER": "Transfer",
-    "TRUEPRIORITY": "True Priority",
-    "TYPE": "Type",
-    "UNPAUSE": "End Pause",
-    "VALUE": "Value",
-    "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "WAITING": "Waiting",
-    "WELCOMEMESSAGE": "Welcome Message",
-    "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPACCOUNTS": "WhatsApp Accounts",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp Canned Answers",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositions",
-    "WHATSAPPQUEUES": "WhatsApp Queues"
-  }
-}
index 9a8edae..246085c 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Bidang wajib",
       "CLIENTEMAIL_REQUIRED": "Bidang wajib",
       "PRIVATEKEY_REQUIRED": "Bidang wajib",
-      "PROJECTID_REQUIRED": "Bidang wajib",
-      "BASEURL_REQUIRED": "Bidang wajib"
+      "PROJECTID_REQUIRED": "Bidang wajib"
     },
     "HELP": {
       "LIST": "Daftar Manajer Kontak digunakan untuk mengasosiasikan kontak",
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk (SIP Terhubung)",
+    "LOGGED_IN": "Masuk",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
     "PRIVATEKEY": "Kunci Pribadi",
-    "PROJECTID": "ID Proyek",
-    "BASEURL": "URL Dasar",
-    "DELIVERYREPORTURL": "URL laporan pengiriman"
+    "PROJECTID": "ID Proyek"
   }
 }
index def9326..39dd215 100644 (file)
     "DELETE_WHATSAPPDISPOSITION": "Elimina la disposizione di WhatsApp",
     "DIALOGFLOW": "DialogFlow",
     "DISPOSITION": "Disposizione",
-    "DISPOSITIONS": "disposizioni",
+    "DISPOSITIONS": "Disposizioni",
     "DOWNLOAD_INTERACTION": "Scarica",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Scarica senza allegati",
     "DOWNLOAD_WITH_ATTACHMENTS": "Scarica con allegati",
     "FALSEPRIORITY": "Priorità falsa",
     "GOTOP": "Andare in cima",
     "GO_TO_WHATSAPPACCOUNTS": "Vai all'account",
-    "INTERACTIONS": "interazioni",
+    "INTERACTIONS": "Interazioni",
     "INTERACTIONS_WHATSAPPACCOUNT": "Vai a Interazioni",
     "KEY": "Chiave",
     "LEXREGION": "Regione",
     "TOKEN": "Gettone",
     "TRANSFER": "Trasferimento",
     "TRUEPRIORITY": "Vera priorità",
-    "TYPE": "genere",
+    "TYPE": "Genere",
     "VALUE": "Valore",
     "VARIABLE": "Variabile",
     "WAITFORTHEASSIGNEDAGENT": "Attendi l'agente assegnato",
index 9b009b0..d23db62 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "必須フィールド",
       "CLIENTEMAIL_REQUIRED": "必須フィールド",
       "PRIVATEKEY_REQUIRED": "必須フィールド",
-      "PROJECTID_REQUIRED": "必須フィールド",
-      "BASEURL_REQUIRED": "必須フィールド"
+      "PROJECTID_REQUIRED": "必須フィールド"
     },
     "HELP": {
       "LIST": "連絡先を関連付けるために使用される連絡先管理者リスト",
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み(SIP接続済み)",
+    "LOGGED_IN": "ログイン済み",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "DialogflowV2を編集する",
     "PRIVATEKEY": "秘密鍵",
-    "PROJECTID": "プロジェクトID",
-    "BASEURL": "ベースURL",
-    "DELIVERYREPORTURL": "配信レポートのURL"
+    "PROJECTID": "プロジェクトID"
   }
 }
index 52f1e9d..53a3344 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "필수 필드",
       "CLIENTEMAIL_REQUIRED": "필수 필드",
       "PRIVATEKEY_REQUIRED": "필수 필드",
-      "PROJECTID_REQUIRED": "필수 필드",
-      "BASEURL_REQUIRED": "필수 필드"
+      "PROJECTID_REQUIRED": "필수 필드"
     },
     "HELP": {
       "LIST": "연락처를 연결하는 데 사용되는 연락처 관리자 목록",
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
+    "LOGGED_IN": "로그인 됨",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 수정",
     "PRIVATEKEY": "개인 키",
-    "PROJECTID": "프로젝트 ID",
-    "BASEURL": "기본 URL",
-    "DELIVERYREPORTURL": "배달 보고서 URL"
+    "PROJECTID": "프로젝트 ID"
   }
 }
index eb8184c..a074057 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Privalomas laukas",
       "CLIENTEMAIL_REQUIRED": "Privalomas laukas",
       "PRIVATEKEY_REQUIRED": "Privalomas laukas",
-      "PROJECTID_REQUIRED": "Privalomas laukas",
-      "BASEURL_REQUIRED": "Privalomas laukas"
+      "PROJECTID_REQUIRED": "Privalomas laukas"
     },
     "HELP": {
       "LIST": "Kontaktų tvarkyklės sąrašas, naudojamas kontaktams susieti",
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
+    "LOGGED_IN": "Prisijungęs",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Redaguoti „Dialogflow V2“",
     "PRIVATEKEY": "Privatus raktas",
-    "PROJECTID": "Projekto ID",
-    "BASEURL": "Bazinis URL",
-    "DELIVERYREPORTURL": "Pristatymo ataskaitos URL"
+    "PROJECTID": "Projekto ID"
   }
 }
index 396be32..fb7beca 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Obligāts lauks",
       "CLIENTEMAIL_REQUIRED": "Obligāts lauks",
       "PRIVATEKEY_REQUIRED": "Obligāts lauks",
-      "PROJECTID_REQUIRED": "Obligāts lauks",
-      "BASEURL_REQUIRED": "Obligāts lauks"
+      "PROJECTID_REQUIRED": "Obligāts lauks"
     },
     "HELP": {
       "LIST": "Kontaktu pārvaldnieka saraksts, ko izmanto kontaktu saistīšanai",
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
+    "LOGGED_IN": "Pieteicies",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Rediģēt Dialogflow V2",
     "PRIVATEKEY": "Privātā atslēga",
-    "PROJECTID": "Projekta ID",
-    "BASEURL": "Pamata URL",
-    "DELIVERYREPORTURL": "Piegādes pārskata URL"
+    "PROJECTID": "Projekta ID"
   }
 }
index 18e8cc9..5eed559 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Verplicht veld",
       "CLIENTEMAIL_REQUIRED": "Verplicht veld",
       "PRIVATEKEY_REQUIRED": "Verplicht veld",
-      "PROJECTID_REQUIRED": "Verplicht veld",
-      "BASEURL_REQUIRED": "Verplicht veld"
+      "PROJECTID_REQUIRED": "Verplicht veld"
     },
     "HELP": {
       "LIST": "Contact Manager-lijst gebruikt om contacten te koppelen",
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd (SIP verbonden)",
+    "LOGGED_IN": "Ingelogd",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Bewerk Dialogflow V2",
     "PRIVATEKEY": "Prive sleutel",
-    "PROJECTID": "Project-ID",
-    "BASEURL": "Basis-URL",
-    "DELIVERYREPORTURL": "URL van leveringsrapport"
+    "PROJECTID": "Project-ID"
   }
 }
index e7ee9b7..efdafa2 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Obligatoriske felt",
       "CLIENTEMAIL_REQUIRED": "Obligatoriske felt",
       "PRIVATEKEY_REQUIRED": "Obligatoriske felt",
-      "PROJECTID_REQUIRED": "Obligatoriske felt",
-      "BASEURL_REQUIRED": "Obligatoriske felt"
+      "PROJECTID_REQUIRED": "Obligatoriske felt"
     },
     "HELP": {
       "LIST": "Kontakt managerliste som ble brukt til å knytte kontakter",
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
+    "LOGGED_IN": "Logget inn",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Rediger Dialogflow V2",
     "PRIVATEKEY": "Privat nøkkel",
-    "PROJECTID": "Prosjekt-ID",
-    "BASEURL": "Base URL",
-    "DELIVERYREPORTURL": "Nettadresse for leveringsrapport"
+    "PROJECTID": "Prosjekt-ID"
   }
 }
index c066e25..510b8e5 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Pole obowiązkowe",
       "CLIENTEMAIL_REQUIRED": "Pole obowiązkowe",
       "PRIVATEKEY_REQUIRED": "Pole obowiązkowe",
-      "PROJECTID_REQUIRED": "Pole obowiązkowe",
-      "BASEURL_REQUIRED": "Pole obowiązkowe"
+      "PROJECTID_REQUIRED": "Pole obowiązkowe"
     },
     "HELP": {
       "LIST": "Lista menedżera kontaktów używana do kojarzenia kontaktów",
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano (połączenie SIP)",
+    "LOGGED_IN": "Zalogowano",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Edytuj Dialogflow V2",
     "PRIVATEKEY": "Prywatny klucz",
-    "PROJECTID": "Identyfikator projektu",
-    "BASEURL": "Podstawowy adres URL",
-    "DELIVERYREPORTURL": "Adres URL raportu doręczenia"
+    "PROJECTID": "Identyfikator projektu"
   }
 }
index 97549f4..29fd2ec 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Campo Obrigatório",
       "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
       "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "BASEURL_REQUIRED": "Campo Obrigatório"
+      "PROJECTID_REQUIRED": "Campo Obrigatório"
     },
     "HELP": {
       "LIST": "Lista do gerenciador de contatos usada para associar contatos",
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
     "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "BASEURL": "URL base",
-    "DELIVERYREPORTURL": "URL do relatório de entrega"
+    "PROJECTID": "ID do projeto"
   }
 }
index 97549f4..29fd2ec 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Campo Obrigatório",
       "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
       "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "BASEURL_REQUIRED": "Campo Obrigatório"
+      "PROJECTID_REQUIRED": "Campo Obrigatório"
     },
     "HELP": {
       "LIST": "Lista do gerenciador de contatos usada para associar contatos",
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
     "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "BASEURL": "URL base",
-    "DELIVERYREPORTURL": "URL do relatório de entrega"
+    "PROJECTID": "ID do projeto"
   }
 }
index ad4ae06..5131899 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Обязательное поле",
       "CLIENTEMAIL_REQUIRED": "Обязательное поле",
       "PRIVATEKEY_REQUIRED": "Обязательное поле",
-      "PROJECTID_REQUIRED": "Обязательное поле",
-      "BASEURL_REQUIRED": "Обязательное поле"
+      "PROJECTID_REQUIRED": "Обязательное поле"
     },
     "HELP": {
       "LIST": "Список диспетчера контактов, используемый для связывания контактов",
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован (SIP подключен)",
+    "LOGGED_IN": "Авторизован",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Редактировать Dialogflow V2",
     "PRIVATEKEY": "Закрытый ключ",
-    "PROJECTID": "ID проекта",
-    "BASEURL": "Базовый URL",
-    "DELIVERYREPORTURL": "URL отчета о доставке"
+    "PROJECTID": "ID проекта"
   }
 }
index ff6d06b..ae13a80 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Obligatoriskt fält",
       "CLIENTEMAIL_REQUIRED": "Obligatoriskt fält",
       "PRIVATEKEY_REQUIRED": "Obligatoriskt fält",
-      "PROJECTID_REQUIRED": "Obligatoriskt fält",
-      "BASEURL_REQUIRED": "Obligatoriskt fält"
+      "PROJECTID_REQUIRED": "Obligatoriskt fält"
     },
     "HELP": {
       "LIST": "Lista över kontakthanterare som används för att koppla kontakter",
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad (SIP ansluten)",
+    "LOGGED_IN": "Inloggad",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Redigera Dialogflow V2",
     "PRIVATEKEY": "Privat nyckel",
-    "PROJECTID": "Projekt-ID",
-    "BASEURL": "Bas-URL",
-    "DELIVERYREPORTURL": "Leveransrapportens URL"
+    "PROJECTID": "Projekt-ID"
   }
 }
index ffd9208..da1b4f9 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "Zorunlu alan",
       "CLIENTEMAIL_REQUIRED": "Zorunlu alan",
       "PRIVATEKEY_REQUIRED": "Zorunlu alan",
-      "PROJECTID_REQUIRED": "Zorunlu alan",
-      "BASEURL_REQUIRED": "Zorunlu alan"
+      "PROJECTID_REQUIRED": "Zorunlu alan"
     },
     "HELP": {
       "LIST": "Kişileri ilişkilendirmek için kullanılan Kişi Yöneticisi listesi",
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
+    "LOGGED_IN": "Oturum Açıldı",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2'yi düzenle",
     "PRIVATEKEY": "Özel anahtar",
-    "PROJECTID": "Proje kimliği",
-    "BASEURL": "Temel URL",
-    "DELIVERYREPORTURL": "Teslim raporu URL'si"
+    "PROJECTID": "Proje kimliği"
   }
 }
index 8ea64c6..4804111 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "必填项",
       "CLIENTEMAIL_REQUIRED": "必填项",
       "PRIVATEKEY_REQUIRED": "必填项",
-      "PROJECTID_REQUIRED": "必填项",
-      "BASEURL_REQUIRED": "必填项"
+      "PROJECTID_REQUIRED": "必填项"
     },
     "HELP": {
       "LIST": "用于关联联系人的联系人管理器列表",
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录(已连接SIP)",
+    "LOGGED_IN": "已登录",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "编辑Dialogflow V2",
     "PRIVATEKEY": "私钥",
-    "PROJECTID": "专案编号",
-    "BASEURL": "基本网址",
-    "DELIVERYREPORTURL": "送达报告网址"
+    "PROJECTID": "专案编号"
   }
 }
index 54eb394..6d85da7 100644 (file)
@@ -50,8 +50,7 @@
       "WELCOMEMESSAGE_REQUIRED": "必填項",
       "CLIENTEMAIL_REQUIRED": "必填項",
       "PRIVATEKEY_REQUIRED": "必填項",
-      "PROJECTID_REQUIRED": "必填項",
-      "BASEURL_REQUIRED": "必填項"
+      "PROJECTID_REQUIRED": "必填項"
     },
     "HELP": {
       "LIST": "用於關聯聯繫人的聯繫人管理器列表",
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄(已連接SIP)",
+    "LOGGED_IN": "已登錄",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "編輯Dialogflow V2",
     "PRIVATEKEY": "私鑰",
-    "PROJECTID": "專案編號",
-    "BASEURL": "基本網址",
-    "DELIVERYREPORTURL": "送達報告網址"
+    "PROJECTID": "專案編號"
   }
 }
diff --git a/public/app/quick-panel/i18n/hu.json b/public/app/quick-panel/i18n/hu.json
deleted file mode 100644 (file)
index fd2a755..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
-    "NO_AVAILABLE_GROUPS": "No Available Groups",
-    "SAVE": "Save",
-    "INFO": "Info",
-    "NEW_CHATGROUP": "New Group",
-    "NAME": "Name",
-    "MEMBERS": "Members",
-    "ENABLE_WRITING": "Enable Writing",
-    "GROUPS": "Groups",
-    "YOU": "You + {{participants}}",
-    "NEW_INTERNAL_MESSAGE": "New internal message",
-    "DELETE": "Delete",
-    "SEARCH": "Search",
-    "USERS": "Users",
-    "TODAY": "TODAY",
-    "MONDAY": "Monday",
-    "TUESDAY": "Tuesday",
-    "WEDNESDAY": "Wednesday",
-    "THURSDAY": "Thursday",
-    "FRIDAY": "Friday",
-    "SATURDAY": "Saturday",
-    "SUNDAY": "Sunday",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
-    "AUGUST": "August",
-    "SEPTEMBER": "September",
-    "OCTOBER": "October",
-    "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "CHAT": "CHAT",
-    "ACTIVITY": "ACTIVITY",
-    "FRIENDS": "Friends",
-    "APP_SERVERS": "Application Servers",
-    "USER_STATS": "User Stats",
-    "EVENTS": "Events",
-    "NOTES": "Notes",
-    "QUICK_SETTINGS": "Quick Settings",
-    "NOTIFICATIONS": "Notifications",
-    "CLOUD_SYNC": "Cloud Sync",
-    "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Recent",
-    "START_NEW_CHAT": "Start New Chat",
-    "BACK": "Back",
-    "CALL": "Call",
-    "MORE": "More",
-    "SEND_MESSAGE": "Send message",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
-    "EXPIRATION_DATE": "Expiration Date",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "LICENSE": "License",
-    "NEW_TOKEN": "New Token",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email To",
-    "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
-    "WARNING": "Warning",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory Field"
-    }
-  }
-}
diff --git a/public/app/reset/i18n/hu.json b/public/app/reset/i18n/hu.json
deleted file mode 100644 (file)
index c3cf8da..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "RESETPASSWORD": {
-    "TITLE": "Reset your password",
-    "EMAIL_ADRESS": "Email address",
-    "PASSWORD": "Password",
-    "PASSWORD_CONFIRM": "Password (Confirm)",
-    "UPDATE_PASSWORD": "RESET MY PASSWORD",
-    "GO_BACK": "Go back to login",
-    "PASSWORD_RESET": "Password Reset",
-    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
-    "ERRORS": {
-      "EMAIL_REQUIRED": "Email field is required",
-      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
-      "PASSWORD_REQUIRED": "Password field is required",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
-    }
-  }
-}
index f210070..aeafcf1 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "إلى {{المستلم}}",
     "USER_FORCE_LOGOUT": "قام {{ip}} بتسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك.\nغير مسموح بتسجيل الدخول المتعدد",
     "LOGOUT": "تسجيل خروج",
-    "SESSION_TIMEOUT": "سيتم إغلاق الجلسة تلقائيًا بعد 60 ثانية",
-    "HUNGARIAN": "المجرية"
+    "SESSION_TIMEOUT": "سيتم إغلاق الجلسة تلقائيًا بعد 60 ثانية"
   }
 }
index f93aa2e..a0c43d4 100644 (file)
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Není k dispozici žádný mikrofon",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Není k dispozici žádný reproduktor",
     "LOGOUT": "Odhlásit se",
-    "SESSION_TIMEOUT": "Relace bude automaticky ukončena po 60 sekundách",
-    "HUNGARIAN": "maďarský"
+    "SESSION_TIMEOUT": "Relace bude automaticky ukončena po 60 sekundách"
   }
 }
index cdc81a8..81a2f7c 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "til {{modtager}}",
     "USER_FORCE_LOGOUT": "{{ip}} er logget ind med dine legitimationsoplysninger.\nFlere login er ikke tilladt",
     "LOGOUT": "Log ud",
-    "SESSION_TIMEOUT": "Sessionen lukkes automatisk efter 60 sekunder",
-    "HUNGARIAN": "ungarsk"
+    "SESSION_TIMEOUT": "Sessionen lukkes automatisk efter 60 sekunder"
   }
 }
index a8dc576..b6abdf2 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
     "LOGOUT": "Ausloggen",
-    "SESSION_TIMEOUT": "Die Sitzung wird nach 60 Sekunden automatisch geschlossen",
-    "HUNGARIAN": "ungarisch"
+    "SESSION_TIMEOUT": "Die Sitzung wird nach 60 Sekunden automatisch geschlossen"
   }
 }
index 1e9a532..39a5cef 100644 (file)
@@ -70,7 +70,6 @@
     "PORTUGUESE": "Portuguese",
     "NORWEGIAN": "Norwegian",
     "HINDI": "Hindi",
-    "HUNGARIAN": "Hungarian",
     "TURKISH": "Turkish",
     "PERSIAN": "Persian",
     "LATVIAN": "Latvian",
index 5418385..321e845 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "a {{destinatario}}",
     "USER_FORCE_LOGOUT": "{{ip}} ha iniciado sesión con sus credenciales.\nNo se permiten múltiples inicios de sesión",
     "LOGOUT": "Cerrar sesión",
-    "SESSION_TIMEOUT": "La sesión se cerrará automáticamente después de 60 segundos.",
-    "HUNGARIAN": "húngaro"
+    "SESSION_TIMEOUT": "La sesión se cerrará automáticamente después de 60 segundos."
   }
 }
index b919cf8..d9e1f5a 100644 (file)
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Mikrofoni pole saadaval",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kõlarit pole saadaval",
     "LOGOUT": "Logi välja",
-    "SESSION_TIMEOUT": "Seanss suletakse 60 sekundi pärast automaatselt",
-    "HUNGARIAN": "ungari"
+    "SESSION_TIMEOUT": "Seanss suletakse 60 sekundi pärast automaatselt"
   }
 }
index 1d0e188..b3fb09b 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "به {{گیرنده",
     "USER_FORCE_LOGOUT": "{{ip} with با اعتبار خود وارد شوید.\nورود چندگانه مجاز نیست",
     "LOGOUT": "خروج",
-    "SESSION_TIMEOUT": "جلسه پس از 60 ثانیه به طور خودکار بسته می شود",
-    "HUNGARIAN": "مجارستانی"
+    "SESSION_TIMEOUT": "جلسه پس از 60 ثانیه به طور خودکار بسته می شود"
   }
 }
index 5273a46..33e7ee3 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "vastaanottajalle {{vastaanottaja}}",
     "USER_FORCE_LOGOUT": "{{ip}} on kirjautunut sisään käyttöoikeustietosi.\nUseita kirjautumisia ei sallita",
     "LOGOUT": "Kirjautua ulos",
-    "SESSION_TIMEOUT": "Istunto suljetaan automaattisesti 60 sekunnin kuluttua",
-    "HUNGARIAN": "Unkarin kieli"
+    "SESSION_TIMEOUT": "Istunto suljetaan automaattisesti 60 sekunnin kuluttua"
   }
 }
index b16db07..fb90d04 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "à {{destinataire}}",
     "USER_FORCE_LOGOUT": "{{ip}} s'est connecté avec vos identifiants.\nLes connexions multiples ne sont pas autorisées",
     "LOGOUT": "Se déconnecter",
-    "SESSION_TIMEOUT": "La session sera automatiquement fermée après 60 secondes",
-    "HUNGARIAN": "hongrois"
+    "SESSION_TIMEOUT": "La session sera automatiquement fermée après 60 secondes"
   }
 }
index 9ee1848..ae40a5b 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "אל {{מקבל}}",
     "USER_FORCE_LOGOUT": "{{ip}} התחבר עם האישורים שלך.\nאין להכניס כניסות מרובות",
     "LOGOUT": "להתנתק",
-    "SESSION_TIMEOUT": "ההפעלה תיסגר אוטומטית לאחר 60 שניות",
-    "HUNGARIAN": "הוּנגָרִי"
+    "SESSION_TIMEOUT": "ההפעלה תיסגר אוטומטית לאחר 60 שניות"
   }
 }
index dfb3d60..a57ff24 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "से {{प्राप्तकर्ता}}",
     "USER_FORCE_LOGOUT": "{{ip}} ने आपकी साख के साथ लॉग इन किया है।\nएकाधिक लॉगिन की अनुमति नहीं है",
     "LOGOUT": "लॉग आउट",
-    "SESSION_TIMEOUT": "60 सेकंड के बाद सत्र स्वचालित रूप से बंद हो जाएगा",
-    "HUNGARIAN": "हंगेरी"
+    "SESSION_TIMEOUT": "60 सेकंड के बाद सत्र स्वचालित रूप से बंद हो जाएगा"
   }
 }
diff --git a/public/app/toolbar/i18n/hu.json b/public/app/toolbar/i18n/hu.json
deleted file mode 100644 (file)
index cb6cc4a..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-{
-  "TOOLBAR": {
-    "CHANGE_LANGUAGE_TITLE": "Change language",
-    "CHANGE_LANGUAGE_MESSAGE": "Remember to refresh the page to apply RTL Support (if enabled)",
-    "HEBREW": "Hebrew",
-    "PREFIXES": "Prefixes",
-    "CALL": "Call",
-    "ARABIC": "Arabic",
-    "INDONESIAN": "Indonesian",
-    "RESETPASSWORD": "Reset Password",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Remaining days before your password expires",
-    "BROWSER_COMPATIBILITY": "Browser Compatibility [Chrome, Opera, Safari]",
-    "RECORDING": "Recording",
-    "INVALID_LICENSE": "Invalid License",
-    "BROWSER": "Browser",
-    "OS": "Operating System",
-    "REQUIREMENTS": "Requirements",
-    "LICENSE": "License",
-    "HTTPS": "HTTPS",
-    "WEBRTCSUPPORT": "WebRTC Support",
-    "REGISTERED": "Registered",
-    "NOT_REGISTERED": "Not registered",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC License is not enabled",
-    "ATTENDED_TRANSFER": "Attended Tranfer",
-    "TRANSFER": "Transfer",
-    "TARGET": "Target",
-    "CANCEL": "Cancel",
-    "FILENAME": "File name",
-    "STATUS": "Status",
-    "ACTIONS": "Actions",
-    "SPEAKER": "Speaker",
-    "RINGING": "Ringing tone",
-    "MICROPHONE": "Microphone",
-    "CONFERENCE": "Conference with 2 active sessions",
-    "PROFILE": "Profile",
-    "SERVICES": "Services",
-    "AUDIO": "Audio",
-    "FULLNAME": "Fullname",
-    "NAME": "Name",
-    "INTERNAL": "Internal",
-    "RINGINGDEVICE": "Ringing Device",
-    "SPEAKERDEVICE": "Speaker Device",
-    "MICROPHONEDEVICE": "Microphone Device",
-    "CHANGEPASSWORD": "Change password",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto answer",
-    "TOGGLE_NAVIGATION": "Toggle navigation",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Toggle navigation mode",
-    "SEARCH": "Search",
-    "USER_SETTINGS": "User settings",
-    "TOGGLE_QUICK_PANEL": "Toggle quick panel",
-    "SOMEONE_LOGGED_YOU_OUT": "Someone logged out, do you want to stay logged?",
-    "STAY_LOGGED": "Stay logged",
-    "WARNING": "Warning",
-    "ENGLISH": "English",
-    "ITALIAN": "Italian",
-    "FRENCH": "French",
-    "KOREAN": "Korean",
-    "SPANISH": "Spanish",
-    "SWEDISH": "Swedish",
-    "RUSSIAN": "Russian",
-    "GERMAN": "German",
-    "JAPANESE": "Japanese",
-    "CHINESESIMPLIFIED": "Chinese Simplified",
-    "CHINESETRADITIONAL": "Chinese Traditional",
-    "DUTCH": "Dutch",
-    "FINNISH": "Finnish",
-    "DANISH": "Danish",
-    "PORTUGUESE": "Portuguese",
-    "NORWEGIAN": "Norwegian",
-    "HINDI": "Hindi",
-    "TURKISH": "Turkish",
-    "PERSIAN": "Persian",
-    "LATVIAN": "Latvian",
-    "POLISH": "Polish",
-    "LOGIN_TIME": "Login Time",
-    "PAUSE_TIME": "Pause Time",
-    "PREVIEW": "Preview",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_PASSWORD": "New Password",
-    "OLD_PASSWORD": "Old Password",
-    "SAVE": "Save",
-    "TRIAL_VERSION": "Trial Version",
-    "PAUSE": "Pause",
-    "RESUME": "End Pause",
-    "NO_PAUSES_AVAILABLE": "No pauses available",
-    "CZECH": "Czech",
-    "ERRORS": {
-      "FIELD_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
-    },
-    "BRAZILIAN": "Brazilian",
-    "ESTONIAN": "Estonian",
-    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "No microphone available",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "No speaker available",
-    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No audio devices available",
-    "NO_AVAILABLE_INFO": "No available info",
-    "LITHUANIAN": "Lithuanian",
-    "NOTIFICATION_TITLE": "New notification from {{sender}}",
-    "NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
-    "USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed",
-    "LOGOUT": "Logout",
-    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
-    "HELP": {
-      "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
-    },
-    "HUNGARIAN": "Magyar"
-  }
-}
index 7b7dbfe..7357092 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "kepada {{penerima}}",
     "USER_FORCE_LOGOUT": "{{ip}} telah masuk dengan kredensial Anda.\nBanyak login tidak diperbolehkan",
     "LOGOUT": "Keluar",
-    "SESSION_TIMEOUT": "Sesi akan ditutup secara otomatis setelah 60 detik",
-    "HUNGARIAN": "Hongaria"
+    "SESSION_TIMEOUT": "Sesi akan ditutup secara otomatis setelah 60 detik"
   }
 }
index b64b351..25ff681 100644 (file)
@@ -61,7 +61,6 @@
     "PORTUGUESE": "Portoghese",
     "NORWEGIAN": "Norwegian",
     "HINDI": "Hindi",
-    "HUNGARIAN": "Ungherese",
     "TURKISH": "Turco",
     "PERSIAN": "Persiano",
     "LATVIAN": "Lettone",
index 6af0cf2..d9d4dfa 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "{{recipient}}へ",
     "USER_FORCE_LOGOUT": "{{ip}}はあなたの認証情報でログインしています。\n複数のログインは許可されていません",
     "LOGOUT": "ログアウト",
-    "SESSION_TIMEOUT": "セッションは60秒後に自動的に閉じられます",
-    "HUNGARIAN": "ハンガリー語"
+    "SESSION_TIMEOUT": "セッションは60秒後に自動的に閉じられます"
   }
 }
index 98eef79..ba5a1a8 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "{{recipient}}에게",
     "USER_FORCE_LOGOUT": "{{ip}}이 (가) 귀하의 자격 증명으로 로그인했습니다.\n다중 로그인은 허용되지 않습니다.",
     "LOGOUT": "로그 아웃",
-    "SESSION_TIMEOUT": "세션은 60 초 후에 자동으로 닫힙니다.",
-    "HUNGARIAN": "헝가리 인"
+    "SESSION_TIMEOUT": "세션은 60 초 후에 자동으로 닫힙니다."
   }
 }
index 35d16c6..9364334 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "Naujas pranešimas kam {{gavėjas}}",
     "USER_FORCE_LOGOUT": "{{ip}} prisijungė naudodamas savo įgaliojimus. Keli prisijungimai neleidžiami",
     "LOGOUT": "Atsijungti",
-    "SESSION_TIMEOUT": "Po 60 sekundžių sesija bus automatiškai uždaryta",
-    "HUNGARIAN": "vengrų"
+    "SESSION_TIMEOUT": "Po 60 sekundžių sesija bus automatiškai uždaryta"
   }
 }
index 575c558..8187f49 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "adresātam {{saņēmējs}}",
     "USER_FORCE_LOGOUT": "{{ip}} ir pieteicies ar jūsu akreditācijas datiem.\nVairāki pieteikumi nav atļauti",
     "LOGOUT": "Izlogoties",
-    "SESSION_TIMEOUT": "Sesija tiks automātiski slēgta pēc 60 sekundēm",
-    "HUNGARIAN": "ungāru"
+    "SESSION_TIMEOUT": "Sesija tiks automātiski slēgta pēc 60 sekundēm"
   }
 }
index f14bae2..acee469 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "aan {{ontvanger}}",
     "USER_FORCE_LOGOUT": "{{ip}} is ingelogd met uw inloggegevens.\nMeerdere aanmeldingen zijn niet toegestaan",
     "LOGOUT": "Uitloggen",
-    "SESSION_TIMEOUT": "De sessie wordt automatisch na 60 seconden afgesloten",
-    "HUNGARIAN": "Hongaars"
+    "SESSION_TIMEOUT": "De sessie wordt automatisch na 60 seconden afgesloten"
   }
 }
index 4e25e26..0f7edb3 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "til {{mottaker}}",
     "USER_FORCE_LOGOUT": "{{ip}} har logget på med legitimasjonsbeskrivelsen.\nFlere pålogginger er ikke tillatt",
     "LOGOUT": "Logg ut",
-    "SESSION_TIMEOUT": "Økten lukkes automatisk etter 60 sekunder",
-    "HUNGARIAN": "ungarsk"
+    "SESSION_TIMEOUT": "Økten lukkes automatisk etter 60 sekunder"
   }
 }
index 3cec861..9884150 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "do {{recipient}}",
     "USER_FORCE_LOGOUT": "{{ip}} zalogował się przy użyciu Twoich danych logowania.\nWielokrotne logowanie jest niedozwolone",
     "LOGOUT": "Wyloguj",
-    "SESSION_TIMEOUT": "Sesja zostanie automatycznie zamknięta po 60 sekundach",
-    "HUNGARIAN": "język węgierski"
+    "SESSION_TIMEOUT": "Sesja zostanie automatycznie zamknięta po 60 sekundach"
   }
 }
index f2548f0..6316ee1 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}",
     "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos",
     "LOGOUT": "Sair",
-    "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos",
-    "HUNGARIAN": "húngaro"
+    "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos"
   }
 }
index 9ae53f1..af765ac 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}",
     "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos",
     "LOGOUT": "Sair",
-    "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos",
-    "HUNGARIAN": "húngaro"
+    "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos"
   }
 }
index b720718..94badc8 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "кому: {{recipient}}",
     "USER_FORCE_LOGOUT": "{{ip}} вошел в систему с вашими учетными данными.\nМножественные входы не разрешены",
     "LOGOUT": "Выйти",
-    "SESSION_TIMEOUT": "Сессия будет автоматически закрыта через 60 секунд.",
-    "HUNGARIAN": "венгерский язык"
+    "SESSION_TIMEOUT": "Сессия будет автоматически закрыта через 60 секунд."
   }
 }
index 67189c4..c3bef90 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "till {{mottagare}}",
     "USER_FORCE_LOGOUT": "{{ip}} har loggat in med dina referenser.\nFlera inloggningar är inte tillåtna",
     "LOGOUT": "Logga ut",
-    "SESSION_TIMEOUT": "Sessionen stängs automatiskt efter 60 sekunder",
-    "HUNGARIAN": "ungerska"
+    "SESSION_TIMEOUT": "Sessionen stängs automatiskt efter 60 sekunder"
   }
 }
index 677e733..18b4f3b 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "{{alıcı}}",
     "USER_FORCE_LOGOUT": "{{ip}} kimlik bilgilerinizle giriş yaptı.\nBirden çok girişe izin verilmez",
     "LOGOUT": "Çıkış Yap",
-    "SESSION_TIMEOUT": "60 saniye sonra oturum otomatik olarak kapatılacaktır",
-    "HUNGARIAN": "Macarca"
+    "SESSION_TIMEOUT": "60 saniye sonra oturum otomatik olarak kapatılacaktır"
   }
 }
index ae3295a..752e330 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "到{{recipient}}",
     "USER_FORCE_LOGOUT": "{{ip}}已使用您的凭据登录。\n不允许多次登录",
     "LOGOUT": "登出",
-    "SESSION_TIMEOUT": "该会话将在60秒后自动关闭",
-    "HUNGARIAN": "匈牙利"
+    "SESSION_TIMEOUT": "该会话将在60秒后自动关闭"
   }
 }
index 5cb816b..cf1dcc9 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "到{{recipient}}",
     "USER_FORCE_LOGOUT": "{{ip}}已使用您的憑據登錄。\n不允許多次登錄",
     "LOGOUT": "登出",
-    "SESSION_TIMEOUT": "該會話將在60秒後自動關閉",
-    "HUNGARIAN": "匈牙利"
+    "SESSION_TIMEOUT": "該會話將在60秒後自動關閉"
   }
 }
diff --git a/public/assets/images/flags/hu.png b/public/assets/images/flags/hu.png
deleted file mode 100644 (file)
index ff1aa24..0000000
Binary files a/public/assets/images/flags/hu.png and /dev/null differ
index 3624940..5647ae6 100644 (file)
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.a4ab584b.js"></script>
+  <script src="scripts/app.8fee3ae7.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.a4ab584b.js
rename to public/scripts/app.8fee3ae7.js
index 9863f97..44bc320 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,n,i,r,l,s,d){var c;return{getToken:t,getCurrentUser:function(){return c},getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return f(e)})},hasModulePermissions:function(i){return o(function(a,n){v()?a(!0):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};v()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!c&&c.role===e},hasPermission:f,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!v())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:g,isAdmin:v,isLoggedIn:function(){return!!t()},isTelephone:function(){return"telephone"===c.role},isUser:h,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return s.get().secureCookieEnabled?d.set("motion.token",e.token,{secure:!0,sameSite:"none"}):d.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(g()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return g()&&0!==c.showWebBar?m(e):v()||h()?u(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(p(),e()):o.resolve().then(function(){return g()&&0!==c.showWebBar?o(function(e,n){r.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):v()||h()?u(!1):void 0}).then(function(){p(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return v()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:m,reloadPermissions:A,removeCookies:p,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return E("SSO_LOGIN"),"/api/auth/"+e}};function t(){return e.get("motion.token")}function m(e){return o(function(n,t){r.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(){e.remove("motion.token"),c&&(n.localStorage.removeItem("motion.user:"+c.id),n.localStorage.removeItem("motion.authenticationtype"),c=null)}function g(){return"agent"===c.role}function v(){return"admin"===c.role}function h(){return"user"===c.role}function f(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){C(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=C,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){C(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function C(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              \n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6"\n                    ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error"\n                    ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                            must have a maximum length equal to 6</span>\n                    </div>\n                </div>\n            </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="!vm.dialerCall">\n          <md-input-container ng-if="vm.recallme && vm.user.selectRecallMeCampaign" class="md-block">\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,n,i,r,l,s,d){var c;return{getToken:t,getCurrentUser:function(){return c},getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return f(e)})},hasModulePermissions:function(i){return o(function(a,n){v()?a(!0):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};v()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!c&&c.role===e},hasPermission:f,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!v())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:g,isAdmin:v,isLoggedIn:function(){return!!t()},isTelephone:function(){return"telephone"===c.role},isUser:h,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return s.get().secureCookieEnabled?d.set("motion.token",e.token,{secure:!0,sameSite:"none"}):d.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(g()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return g()&&0!==c.showWebBar?m(e):v()||h()?u(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(p(),e()):o.resolve().then(function(){return g()&&0!==c.showWebBar?o(function(e,n){r.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):v()||h()?u(!1):void 0}).then(function(){p(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return v()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:m,reloadPermissions:A,removeCookies:p,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return E("SSO_LOGIN"),"/api/auth/"+e}};function t(){return e.get("motion.token")}function m(e){return o(function(n,t){r.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(){e.remove("motion.token"),c&&(n.localStorage.removeItem("motion.user:"+c.id),n.localStorage.removeItem("motion.authenticationtype"),c=null)}function g(){return"agent"===c.role}function v(){return"admin"===c.role}function h(){return"user"===c.role}function f(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",res.token,{secure:!0,sameSite:"none"}):r.set("motion.token",res.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){C(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=C,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){C(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function C(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="!vm.dialerCall">\n          <md-input-container ng-if="vm.recallme && vm.user.selectRecallMeCampaign" class="md-block">\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n            </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n    <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n      <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n        <md-button class="md-icon-button">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n      </div>\n    </div>\n    </md-card>\n  </div>\n</div>\n\n</md-tab-body>\n</md-tab>\n</md-tabs>\n\n</div>\n\x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index 279f196..2298b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x436c=['motionbar','jscripty','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','exports','VIRTUAL','getDataValue','action','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x436c,0x82));var _0xc436=function(_0x396621,_0x4160d6){_0x396621=_0x396621-0x0;var _0x3b91b0=_0x436c[_0x396621];return _0x3b91b0;};'use strict';var Sequelize=require('sequelize');module[_0xc436('0x0')]={'name':{'type':Sequelize[_0xc436('0x1')],'get':function(_0x46e083){return this[_0xc436('0x2')](_0xc436('0x3'));}},'action':{'type':Sequelize[_0xc436('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager','integration',_0xc436('0x5'),_0xc436('0x6'),'urlForward','browser',_0xc436('0x7'),_0xc436('0x8')]],'msg':_0xc436('0x9')}},'comment':_0xc436('0x9')},'data1':{'type':Sequelize[_0xc436('0x4')](0x1000),'comment':'jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'},'data2':{'type':Sequelize[_0xc436('0x4')](0x1000),'comment':_0xc436('0xa')},'data3':{'type':Sequelize[_0xc436('0x4')](0x1000),'comment':_0xc436('0xb')},'data4':{'type':Sequelize[_0xc436('0x4')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0xc436('0x4')](0x1000),'comments':_0xc436('0xc')},'data6':{'type':Sequelize[_0xc436('0x4')],'comments':_0xc436('0xd')},'data7':{'type':Sequelize[_0xc436('0xe')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x8edd=['contactManager','integration','motionbar','urlForward','browser','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','STRING'];(function(_0xfe4dc0,_0x536f38){var _0x164a09=function(_0x494a8a){while(--_0x494a8a){_0xfe4dc0['push'](_0xfe4dc0['shift']());}};_0x164a09(++_0x536f38);}(_0x8edd,0x175));var _0xd8ed=function(_0x49f82a,_0x527bd7){_0x49f82a=_0x49f82a-0x0;var _0x3a85d5=_0x8edd[_0x49f82a];return _0x3a85d5;};'use strict';var Sequelize=require(_0xd8ed('0x0'));module[_0xd8ed('0x1')]={'name':{'type':Sequelize[_0xd8ed('0x2')],'get':function(_0x1b6b0c){return this[_0xd8ed('0x3')]('action');}},'action':{'type':Sequelize[_0xd8ed('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0xd8ed('0x5'),_0xd8ed('0x6'),_0xd8ed('0x7'),'jscripty',_0xd8ed('0x8'),_0xd8ed('0x9'),_0xd8ed('0xa'),'script']],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xd8ed('0xb')},'data1':{'type':Sequelize[_0xd8ed('0x4')](0x1000),'comment':_0xd8ed('0xc')},'data2':{'type':Sequelize[_0xd8ed('0x4')](0x1000),'comment':_0xd8ed('0xd')},'data3':{'type':Sequelize[_0xd8ed('0x4')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0xd8ed('0xe')},'data5':{'type':Sequelize[_0xd8ed('0x4')](0x1000),'comments':_0xd8ed('0xf')},'data6':{'type':Sequelize[_0xd8ed('0x4')],'comments':_0xd8ed('0x10')},'data7':{'type':Sequelize['TEXT'],'comments':_0xd8ed('0x11')}};
\ No newline at end of file
index 7e3fe6c..2498952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2621=['params','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','body','Action','find'];(function(_0x3ff685,_0x304b9e){var _0x2046c9=function(_0x7a10e9){while(--_0x7a10e9){_0x3ff685['push'](_0x3ff685['shift']());}};_0x2046c9(++_0x304b9e);}(_0x2621,0x13c));var _0x1262=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2621[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x1262('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1262('0x1'));var jsonpatch=require(_0x1262('0x2'));var rp=require(_0x1262('0x3'));var moment=require('moment');var BPromise=require(_0x1262('0x4'));var Mustache=require(_0x1262('0x5'));var util=require(_0x1262('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x1262('0x7'));var ejs=require(_0x1262('0x8'));var fs=require('fs');var fs_extra=require(_0x1262('0x9'));var _=require('lodash');var squel=require(_0x1262('0xa'));var crypto=require(_0x1262('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1262('0x7'));var querystring=require(_0x1262('0xc'));var Papa=require(_0x1262('0xd'));var Redis=require(_0x1262('0xe'));var authService=require(_0x1262('0xf'));var qs=require(_0x1262('0x10'));var as=require(_0x1262('0x11'));var hardwareService=require(_0x1262('0x12'));var logger=require(_0x1262('0x13'))(_0x1262('0x14'));var utils=require(_0x1262('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1262('0x16'));var db=require(_0x1262('0x17'))['db'];function respondWithStatusCode(_0x2ceeac,_0x5a4192){_0x5a4192=_0x5a4192||0xcc;return function(_0xafc73d){if(_0xafc73d){return _0x2ceeac[_0x1262('0x18')](_0x5a4192);}return _0x2ceeac['status'](_0x5a4192)['end']();};}function respondWithResult(_0x45d39a,_0x313de2){_0x313de2=_0x313de2||0xc8;return function(_0x112886){if(_0x112886){return _0x45d39a[_0x1262('0x19')](_0x313de2)['json'](_0x112886);}};}function respondWithFilteredResult(_0x5323a5,_0x3d9dc6){return function(_0x18e742){if(_0x18e742){var _0x4464be=typeof _0x3d9dc6[_0x1262('0x1a')]===_0x1262('0x1b')&&typeof _0x3d9dc6[_0x1262('0x1c')]===_0x1262('0x1b');var _0x447395=_0x18e742[_0x1262('0x1d')];var _0x4c0e6c=_0x4464be?0x0:_0x3d9dc6[_0x1262('0x1a')];var _0xfe8eed=_0x4464be?_0x18e742['count']:_0x3d9dc6[_0x1262('0x1a')]+_0x3d9dc6[_0x1262('0x1c')];var _0x54e351;if(_0xfe8eed>=_0x447395){_0xfe8eed=_0x447395;_0x54e351=0xc8;}else{_0x54e351=0xce;}_0x5323a5['status'](_0x54e351);return _0x5323a5[_0x1262('0x1e')](_0x1262('0x1f'),_0x4c0e6c+'-'+_0xfe8eed+'/'+_0x447395)[_0x1262('0x20')](_0x18e742);}return null;};}function patchUpdates(_0x504188){return function(_0x1bfbdb){try{jsonpatch['apply'](_0x1bfbdb,_0x504188,!![]);}catch(_0x46b426){return BPromise[_0x1262('0x21')](_0x46b426);}return _0x1bfbdb[_0x1262('0x22')]();};}function saveUpdates(_0x2331c3,_0x4382e6){return function(_0x16583e){if(_0x16583e){return _0x16583e[_0x1262('0x23')](_0x2331c3)[_0x1262('0x24')](function(_0x441958){return _0x441958;});}return null;};}function removeEntity(_0x24932f,_0xc0c27f){return function(_0x54ac86){if(_0x54ac86){return _0x54ac86[_0x1262('0x25')]()['then'](function(){_0x24932f[_0x1262('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ee6fe,_0x2c2220){return function(_0x298a07){if(!_0x298a07){_0x4ee6fe[_0x1262('0x18')](0x194);}return _0x298a07;};}function handleError(_0x1535d6,_0x5003a9){_0x5003a9=_0x5003a9||0x1f4;return function(_0x13a775){logger[_0x1262('0x26')](_0x13a775[_0x1262('0x27')]);if(_0x13a775['name']){delete _0x13a775[_0x1262('0x28')];}_0x1535d6[_0x1262('0x19')](_0x5003a9)['send'](_0x13a775);};}exports['update']=function(_0x1c4f90,_0x453f68){if(_0x1c4f90['body']['id']){delete _0x1c4f90[_0x1262('0x29')]['id'];}return db[_0x1262('0x2a')][_0x1262('0x2b')]({'where':{'id':_0x1c4f90[_0x1262('0x2c')]['id']}})['then'](handleEntityNotFound(_0x453f68,null))[_0x1262('0x24')](saveUpdates(_0x1c4f90[_0x1262('0x29')],null))['then'](respondWithResult(_0x453f68,null))['catch'](handleError(_0x453f68,null));};exports['destroy']=function(_0x1aca65,_0x1e6f40){return db[_0x1262('0x2a')][_0x1262('0x2b')]({'where':{'id':_0x1aca65[_0x1262('0x2c')]['id']}})['then'](handleEntityNotFound(_0x1e6f40,null))[_0x1262('0x24')](removeEntity(_0x1e6f40,null))['catch'](handleError(_0x1e6f40,null));};
\ No newline at end of file
+var _0xb8f6=['undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','body','params','Action','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','offset'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xb8f6,0x6f));var _0x6b8f=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xb8f6[_0x1694f5];return _0x5b4321;};'use strict';var emlformat=require(_0x6b8f('0x0'));var rimraf=require(_0x6b8f('0x1'));var zipdir=require(_0x6b8f('0x2'));var jsonpatch=require(_0x6b8f('0x3'));var rp=require(_0x6b8f('0x4'));var moment=require(_0x6b8f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6b8f('0x6'));var util=require('util');var path=require(_0x6b8f('0x7'));var sox=require(_0x6b8f('0x8'));var csv=require(_0x6b8f('0x9'));var ejs=require(_0x6b8f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b8f('0xb'));var squel=require(_0x6b8f('0xc'));var crypto=require('crypto');var jsforce=require(_0x6b8f('0xd'));var deskjs=require(_0x6b8f('0xe'));var toCsv=require(_0x6b8f('0x9'));var querystring=require('querystring');var Papa=require(_0x6b8f('0xf'));var Redis=require(_0x6b8f('0x10'));var authService=require(_0x6b8f('0x11'));var qs=require(_0x6b8f('0x12'));var as=require(_0x6b8f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b8f('0x14'))('api');var utils=require(_0x6b8f('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6b8f('0x16'))['db'];function respondWithStatusCode(_0x46f228,_0x12814a){_0x12814a=_0x12814a||0xcc;return function(_0x18a0f0){if(_0x18a0f0){return _0x46f228[_0x6b8f('0x17')](_0x12814a);}return _0x46f228[_0x6b8f('0x18')](_0x12814a)[_0x6b8f('0x19')]();};}function respondWithResult(_0x5b3b99,_0x4fc89a){_0x4fc89a=_0x4fc89a||0xc8;return function(_0x6f5659){if(_0x6f5659){return _0x5b3b99[_0x6b8f('0x18')](_0x4fc89a)['json'](_0x6f5659);}};}function respondWithFilteredResult(_0x2e3a9e,_0x264ef1){return function(_0x1187e9){if(_0x1187e9){var _0x16733e=typeof _0x264ef1[_0x6b8f('0x1a')]===_0x6b8f('0x1b')&&typeof _0x264ef1[_0x6b8f('0x1c')]===_0x6b8f('0x1b');var _0x370a95=_0x1187e9[_0x6b8f('0x1d')];var _0xd03ff0=_0x16733e?0x0:_0x264ef1[_0x6b8f('0x1a')];var _0x5aec43=_0x16733e?_0x1187e9[_0x6b8f('0x1d')]:_0x264ef1[_0x6b8f('0x1a')]+_0x264ef1[_0x6b8f('0x1c')];var _0x337ec3;if(_0x5aec43>=_0x370a95){_0x5aec43=_0x370a95;_0x337ec3=0xc8;}else{_0x337ec3=0xce;}_0x2e3a9e[_0x6b8f('0x18')](_0x337ec3);return _0x2e3a9e[_0x6b8f('0x1e')](_0x6b8f('0x1f'),_0xd03ff0+'-'+_0x5aec43+'/'+_0x370a95)[_0x6b8f('0x20')](_0x1187e9);}return null;};}function patchUpdates(_0x2b5d4a){return function(_0x4820e4){try{jsonpatch[_0x6b8f('0x21')](_0x4820e4,_0x2b5d4a,!![]);}catch(_0x49868){return BPromise['reject'](_0x49868);}return _0x4820e4[_0x6b8f('0x22')]();};}function saveUpdates(_0x5208f3,_0xe752ef){return function(_0x1c94d5){if(_0x1c94d5){return _0x1c94d5[_0x6b8f('0x23')](_0x5208f3)[_0x6b8f('0x24')](function(_0xfd5821){return _0xfd5821;});}return null;};}function removeEntity(_0x20c57a,_0x588ac9){return function(_0x53abf8){if(_0x53abf8){return _0x53abf8[_0x6b8f('0x25')]()[_0x6b8f('0x24')](function(){_0x20c57a[_0x6b8f('0x18')](0xcc)[_0x6b8f('0x19')]();});}};}function handleEntityNotFound(_0x5289e0,_0x197044){return function(_0x485bcf){if(!_0x485bcf){_0x5289e0['sendStatus'](0x194);}return _0x485bcf;};}function handleError(_0x5f517f,_0x4357c3){_0x4357c3=_0x4357c3||0x1f4;return function(_0x3be039){logger[_0x6b8f('0x26')](_0x3be039[_0x6b8f('0x27')]);if(_0x3be039['name']){delete _0x3be039[_0x6b8f('0x28')];}_0x5f517f[_0x6b8f('0x18')](_0x4357c3)[_0x6b8f('0x29')](_0x3be039);};}exports[_0x6b8f('0x23')]=function(_0x2df9db,_0x1c3246){if(_0x2df9db[_0x6b8f('0x2a')]['id']){delete _0x2df9db[_0x6b8f('0x2a')]['id'];}return db['Action']['find']({'where':{'id':_0x2df9db[_0x6b8f('0x2b')]['id']}})['then'](handleEntityNotFound(_0x1c3246,null))[_0x6b8f('0x24')](saveUpdates(_0x2df9db['body'],null))['then'](respondWithResult(_0x1c3246,null))['catch'](handleError(_0x1c3246,null));};exports['destroy']=function(_0x4a7d36,_0x701a42){return db[_0x6b8f('0x2c')][_0x6b8f('0x2d')]({'where':{'id':_0x4a7d36[_0x6b8f('0x2b')]['id']}})[_0x6b8f('0x24')](handleEntityNotFound(_0x701a42,null))[_0x6b8f('0x24')](removeEntity(_0x701a42,null))['catch'](handleError(_0x701a42,null));};
\ No newline at end of file
index b186006..9cf06ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe40a=['util','../../config/logger','moment','request-promise','path','../../config/environment','./action.attributes','exports','lodash'];(function(_0x5ba86c,_0x14b40a){var _0x48b6ef=function(_0x27fc8c){while(--_0x27fc8c){_0x5ba86c['push'](_0x5ba86c['shift']());}};_0x48b6ef(++_0x14b40a);}(_0xe40a,0x7d));var _0xae40=function(_0x200319,_0x2f6beb){_0x200319=_0x200319-0x0;var _0x3ee88c=_0xe40a[_0x200319];return _0x3ee88c;};'use strict';var _=require(_0xae40('0x0'));var util=require(_0xae40('0x1'));var logger=require(_0xae40('0x2'))('api');var moment=require(_0xae40('0x3'));var BPromise=require('bluebird');var rp=require(_0xae40('0x4'));var fs=require('fs');var path=require(_0xae40('0x5'));var rimraf=require('rimraf');var config=require(_0xae40('0x6'));var attributes=require(_0xae40('0x7'));module[_0xae40('0x8')]=function(_0x16351f,_0x2ff5d3){return _0x16351f['define']('Action',attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa057=['exports','define','Action','lodash','util','../../config/logger','api','path','rimraf','./action.attributes'];(function(_0x4a20c1,_0x3915a2){var _0x456b04=function(_0x5b274a){while(--_0x5b274a){_0x4a20c1['push'](_0x4a20c1['shift']());}};_0x456b04(++_0x3915a2);}(_0xa057,0x175));var _0x7a05=function(_0x1876e7,_0x4cee85){_0x1876e7=_0x1876e7-0x0;var _0x4439ef=_0xa057[_0x1876e7];return _0x4439ef;};'use strict';var _=require(_0x7a05('0x0'));var util=require(_0x7a05('0x1'));var logger=require(_0x7a05('0x2'))(_0x7a05('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7a05('0x4'));var rimraf=require(_0x7a05('0x5'));var config=require('../../config/environment');var attributes=require(_0x7a05('0x6'));module[_0x7a05('0x7')]=function(_0x4e0b0e,_0x5d2fa1){return _0x4e0b0e[_0x7a05('0x8')](_0x7a05('0x9'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b033d4..66dec71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x814b,0x1a2));var _0xb814=function(_0x580238,_0x2adec2){_0x580238=_0x580238-0x0;var _0x3d5608=_0x814b[_0x580238];return _0x3d5608;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Action,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}
\ No newline at end of file
+var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x4cae41,_0x3043c5){var _0x4b3f0d=function(_0x4edc50){while(--_0x4edc50){_0x4cae41['push'](_0x4cae41['shift']());}};_0x4b3f0d(++_0x3043c5);}(_0x5fc3,0xa8));var _0x35fc=function(_0x29bf80,_0x4af855){_0x29bf80=_0x29bf80-0x0;var _0x932096=_0x5fc3[_0x29bf80];return _0x932096;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Action,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Action,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Action,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
index c9600a2..fb19419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6a8=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','update','exports','path'];(function(_0x132aa1,_0x4578d3){var _0x1694bb=function(_0x5dca2d){while(--_0x5dca2d){_0x132aa1['push'](_0x132aa1['shift']());}};_0x1694bb(++_0x4578d3);}(_0xb6a8,0x12a));var _0x8b6a=function(_0x3c82a2,_0x279f58){_0x3c82a2=_0x3c82a2-0x0;var _0x3558db=_0xb6a8[_0x3c82a2];return _0x3558db;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8b6a('0x0'));var timeout=require('connect-timeout');var express=require(_0x8b6a('0x1'));var router=express[_0x8b6a('0x2')]();var fs_extra=require(_0x8b6a('0x3'));var auth=require(_0x8b6a('0x4'));var interaction=require(_0x8b6a('0x5'));var config=require(_0x8b6a('0x6'));var controller=require(_0x8b6a('0x7'));router[_0x8b6a('0x8')](_0x8b6a('0x9'),auth[_0x8b6a('0xa')](),controller[_0x8b6a('0xb')]);router['delete']('/:id',auth[_0x8b6a('0xa')](),controller['destroy']);module[_0x8b6a('0xc')]=router;
\ No newline at end of file
+var _0x8f04=['destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','update','delete','isAuthenticated'];(function(_0x246328,_0x5ba8c1){var _0xf532a3=function(_0x4a723e){while(--_0x4a723e){_0x246328['push'](_0x246328['shift']());}};_0xf532a3(++_0x5ba8c1);}(_0x8f04,0xf1));var _0x48f0=function(_0x176c41,_0x5df842){_0x176c41=_0x176c41-0x0;var _0x309082=_0x8f04[_0x176c41];return _0x309082;};'use strict';var multer=require(_0x48f0('0x0'));var util=require(_0x48f0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x48f0('0x2'));var router=express[_0x48f0('0x3')]();var fs_extra=require(_0x48f0('0x4'));var auth=require(_0x48f0('0x5'));var interaction=require(_0x48f0('0x6'));var config=require(_0x48f0('0x7'));var controller=require(_0x48f0('0x8'));router[_0x48f0('0x9')](_0x48f0('0xa'),auth['isAuthenticated'](),controller[_0x48f0('0xb')]);router[_0x48f0('0xc')](_0x48f0('0xa'),auth[_0x48f0('0xd')](),controller[_0x48f0('0xe')]);module['exports']=router;
\ No newline at end of file
index c4c2db5..8e540ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['TEXT','sequelize','STRING'];(function(_0x1fcc7d,_0x4eb620){var _0x3daa39=function(_0x2b90f9){while(--_0x2b90f9){_0x1fcc7d['push'](_0x1fcc7d['shift']());}};_0x3daa39(++_0x4eb620);}(_0x6aa7,0x178));var _0x76aa=function(_0x2ef709,_0x1804bf){_0x2ef709=_0x2ef709-0x0;var _0x4e0962=_0x6aa7[_0x2ef709];return _0x4e0962;};'use strict';var Sequelize=require(_0x76aa('0x0'));module['exports']={'name':{'type':Sequelize[_0x76aa('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x76aa('0x1')]},'parent':{'type':Sequelize[_0x76aa('0x1')]},'table':{'type':Sequelize[_0x76aa('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x76aa('0x2')]}};
\ No newline at end of file
+var _0xc4aa=['STRING','sequelize','exports'];(function(_0x46cde7,_0x39a3c6){var _0x3b21e8=function(_0x4e76a9){while(--_0x4e76a9){_0x46cde7['push'](_0x46cde7['shift']());}};_0x3b21e8(++_0x39a3c6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0xc4aa[_0x5a776b];return _0xbbef59;};'use strict';var Sequelize=require(_0xac4a('0x0'));module[_0xac4a('0x1')]={'name':{'type':Sequelize[_0xac4a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xac4a('0x2')]},'parent':{'type':Sequelize[_0xac4a('0x2')]},'table':{'type':Sequelize[_0xac4a('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 45d7585..b818c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7fa=['COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','table','MetricId','metric','function','format','replace','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','SUM(%s)','includes','IS\x20NULL','IS\x20EMPTY','Sequelize','ValidationErrorItem','from','DESC','parentKey','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','info','Run\x20Query:','child_process','fork','../../components/export/','output','savename','select','countTable','run','runReport','IS\x20NOT\x20NULL','zip-dir','moment','mustache','util','path','sox','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join'];(function(_0x50e32b,_0x2aa269){var _0x5c95fa=function(_0x78053b){while(--_0x78053b){_0x50e32b['push'](_0x50e32b['shift']());}};_0x5c95fa(++_0x2aa269);}(_0xe7fa,0xf5));var _0xae7f=function(_0x54c054,_0x31b2ff){_0x54c054=_0x54c054-0x0;var _0x44b2f9=_0xe7fa[_0x54c054];return _0x44b2f9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xae7f('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xae7f('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xae7f('0x2'));var util=require(_0xae7f('0x3'));var path=require(_0xae7f('0x4'));var sox=require(_0xae7f('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xae7f('0x6'));var _=require(_0xae7f('0x7'));var squel=require('squel');var crypto=require(_0xae7f('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xae7f('0x9'));var toCsv=require(_0xae7f('0xa'));var querystring=require(_0xae7f('0xb'));var Papa=require(_0xae7f('0xc'));var Redis=require(_0xae7f('0xd'));var authService=require(_0xae7f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xae7f('0xf'));var hardwareService=require(_0xae7f('0x10'));var logger=require(_0xae7f('0x11'))(_0xae7f('0x12'));var utils=require(_0xae7f('0x13'));var config=require(_0xae7f('0x14'));var licenseUtil=require(_0xae7f('0x15'));var db=require('../../mysqldb')['db'];var dbH=require(_0xae7f('0x16'))[_0xae7f('0x17')];function respondWithStatusCode(_0x5517fa,_0x3656e0){_0x3656e0=_0x3656e0||0xcc;return function(_0x4529df){if(_0x4529df){return _0x5517fa[_0xae7f('0x18')](_0x3656e0);}return _0x5517fa[_0xae7f('0x19')](_0x3656e0)[_0xae7f('0x1a')]();};}function respondWithResult(_0x3448f2,_0x3f4a23){_0x3f4a23=_0x3f4a23||0xc8;return function(_0x22b430){if(_0x22b430){return _0x3448f2[_0xae7f('0x19')](_0x3f4a23)[_0xae7f('0x1b')](_0x22b430);}};}function respondWithFilteredResult(_0x1a91db,_0x12ee3f){return function(_0x26a8f2){if(_0x26a8f2){var _0x4f23ba=typeof _0x12ee3f[_0xae7f('0x1c')]===_0xae7f('0x1d')&&typeof _0x12ee3f[_0xae7f('0x1e')]===_0xae7f('0x1d');var _0x12f1d5=_0x26a8f2[_0xae7f('0x1f')];var _0x1371aa=_0x4f23ba?0x0:_0x12ee3f[_0xae7f('0x1c')];var _0x7579b6=_0x4f23ba?_0x26a8f2[_0xae7f('0x1f')]:_0x12ee3f[_0xae7f('0x1c')]+_0x12ee3f['limit'];var _0x529036;if(_0x7579b6>=_0x12f1d5){_0x7579b6=_0x12f1d5;_0x529036=0xc8;}else{_0x529036=0xce;}_0x1a91db[_0xae7f('0x19')](_0x529036);return _0x1a91db[_0xae7f('0x20')](_0xae7f('0x21'),_0x1371aa+'-'+_0x7579b6+'/'+_0x12f1d5)[_0xae7f('0x1b')](_0x26a8f2);}return null;};}function patchUpdates(_0x3dce52){return function(_0x52ee24){try{jsonpatch[_0xae7f('0x22')](_0x52ee24,_0x3dce52,!![]);}catch(_0x1d2050){return BPromise['reject'](_0x1d2050);}return _0x52ee24['save']();};}function saveUpdates(_0x3d0c37,_0x3fb7de){return function(_0x29f4fa){if(_0x29f4fa){return _0x29f4fa[_0xae7f('0x23')](_0x3d0c37)[_0xae7f('0x24')](function(_0x2797fa){return _0x2797fa;});}return null;};}function removeEntity(_0x1e1948,_0x3ca01f){return function(_0x4b365b){if(_0x4b365b){return _0x4b365b[_0xae7f('0x25')]()[_0xae7f('0x24')](function(){var _0x27d715=_0x4b365b[_0xae7f('0x26')]({'plain':!![]});var _0x54d3e6=_0xae7f('0x27');return db[_0xae7f('0x28')]['destroy']({'where':{'type':_0x54d3e6,'resourceId':_0x27d715['id']}})[_0xae7f('0x24')](function(){return _0x4b365b;});})[_0xae7f('0x24')](function(){_0x1e1948['status'](0xcc)[_0xae7f('0x1a')]();});}};}function handleEntityNotFound(_0x235f97,_0x3e8376){return function(_0x39aa1e){if(!_0x39aa1e){_0x235f97[_0xae7f('0x18')](0x194);}return _0x39aa1e;};}function handleError(_0x4e32cf,_0x521d1c){_0x521d1c=_0x521d1c||0x1f4;return function(_0x23cca3){logger[_0xae7f('0x29')](_0x23cca3[_0xae7f('0x2a')]);if(_0x23cca3['name']){delete _0x23cca3[_0xae7f('0x2b')];}_0x4e32cf[_0xae7f('0x19')](_0x521d1c)[_0xae7f('0x2c')](_0x23cca3);};}exports[_0xae7f('0x2d')]=function(_0x5b43f8,_0x1f1ee5){var _0x1bfc79={},_0xf23eab={},_0x4195ef={'count':0x0,'rows':[]};var _0xf4f582=_[_0xae7f('0x2e')](db[_0xae7f('0x2f')][_0xae7f('0x30')],function(_0x543fe6){return{'name':_0x543fe6[_0xae7f('0x31')],'type':_0x543fe6[_0xae7f('0x32')][_0xae7f('0x33')]};});_0xf23eab[_0xae7f('0x34')]=_['map'](_0xf4f582,'name');_0xf23eab[_0xae7f('0x35')]=_[_0xae7f('0x36')](_0x5b43f8['query']);_0xf23eab[_0xae7f('0x37')]=_[_0xae7f('0x38')](_0xf23eab['model'],_0xf23eab[_0xae7f('0x35')]);_0x1bfc79['attributes']=_['intersection'](_0xf23eab[_0xae7f('0x34')],qs['fields'](_0x5b43f8['query'][_0xae7f('0x39')]));_0x1bfc79[_0xae7f('0x3a')]=_0x1bfc79[_0xae7f('0x3a')]['length']?_0x1bfc79[_0xae7f('0x3a')]:_0xf23eab[_0xae7f('0x34')];if(!_0x5b43f8[_0xae7f('0x35')][_0xae7f('0x3b')]('nolimit')){_0x1bfc79['limit']=qs['limit'](_0x5b43f8['query'][_0xae7f('0x1e')]);_0x1bfc79[_0xae7f('0x1c')]=qs['offset'](_0x5b43f8['query']['offset']);}_0x1bfc79[_0xae7f('0x3c')]=qs[_0xae7f('0x3d')](_0x5b43f8[_0xae7f('0x35')][_0xae7f('0x3d')]);_0x1bfc79[_0xae7f('0x3e')]=qs[_0xae7f('0x37')](_[_0xae7f('0x3f')](_0x5b43f8[_0xae7f('0x35')],_0xf23eab['filters']),_0xf4f582);if(_0x5b43f8[_0xae7f('0x35')][_0xae7f('0x40')]){_0x1bfc79[_0xae7f('0x3e')]=_['merge'](_0x1bfc79['where'],{'$or':_[_0xae7f('0x2e')](_0xf4f582,function(_0x55631b){if(_0x55631b[_0xae7f('0x32')]!==_0xae7f('0x41')){var _0xffc150={};_0xffc150[_0x55631b[_0xae7f('0x2b')]]={'$like':'%'+_0x5b43f8[_0xae7f('0x35')][_0xae7f('0x40')]+'%'};return _0xffc150;}})});}_0x1bfc79=_[_0xae7f('0x42')]({},_0x1bfc79,_0x5b43f8[_0xae7f('0x43')]);var _0x1229c5={'where':_0x1bfc79[_0xae7f('0x3e')]};return db[_0xae7f('0x2f')]['count'](_0x1229c5)[_0xae7f('0x24')](function(_0x48a36a){_0x4195ef[_0xae7f('0x1f')]=_0x48a36a;if(_0x5b43f8['query'][_0xae7f('0x44')]){_0x1bfc79[_0xae7f('0x45')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0xae7f('0x46')](_0x1bfc79);})[_0xae7f('0x24')](function(_0x36cb03){_0x4195ef['rows']=_0x36cb03;return _0x4195ef;})['then'](respondWithFilteredResult(_0x1f1ee5,_0x1bfc79))[_0xae7f('0x47')](handleError(_0x1f1ee5,null));};exports[_0xae7f('0x48')]=function(_0x5a9431,_0x386f54){var _0x416aeb={'raw':![],'where':{'id':_0x5a9431['params']['id']}},_0x4db981={};_0x4db981[_0xae7f('0x34')]=_[_0xae7f('0x36')](db['AnalyticCustomReport'][_0xae7f('0x30')]);_0x4db981['query']=_[_0xae7f('0x36')](_0x5a9431[_0xae7f('0x35')]);_0x4db981[_0xae7f('0x37')]=_[_0xae7f('0x38')](_0x4db981['model'],_0x4db981[_0xae7f('0x35')]);_0x416aeb[_0xae7f('0x3a')]=_[_0xae7f('0x38')](_0x4db981['model'],qs[_0xae7f('0x39')](_0x5a9431[_0xae7f('0x35')][_0xae7f('0x39')]));_0x416aeb[_0xae7f('0x3a')]=_0x416aeb[_0xae7f('0x3a')][_0xae7f('0x49')]?_0x416aeb[_0xae7f('0x3a')]:_0x4db981[_0xae7f('0x34')];if(_0x5a9431['query'][_0xae7f('0x44')]){_0x416aeb[_0xae7f('0x45')]=[{'all':!![]}];}_0x416aeb=_[_0xae7f('0x42')]({},_0x416aeb,_0x5a9431[_0xae7f('0x43')]);return db[_0xae7f('0x2f')][_0xae7f('0x4a')](_0x416aeb)[_0xae7f('0x24')](handleEntityNotFound(_0x386f54,null))[_0xae7f('0x24')](respondWithResult(_0x386f54,null))[_0xae7f('0x47')](handleError(_0x386f54,null));};exports[_0xae7f('0x4b')]=function(_0x25c856,_0x771a22){return db[_0xae7f('0x2f')][_0xae7f('0x4b')](_0x25c856[_0xae7f('0x4c')],{})[_0xae7f('0x24')](function(_0x20d96a){var _0x10147c=_0x25c856[_0xae7f('0x4d')][_0xae7f('0x26')]({'plain':!![]});if(!_0x10147c)throw new Error(_0xae7f('0x4e'));if(_0x10147c[_0xae7f('0x4f')]===_0xae7f('0x4d')){var _0x1baffc=_0x20d96a[_0xae7f('0x26')]({'plain':!![]});var _0x22c80b=_0xae7f('0x50');return db[_0xae7f('0x51')][_0xae7f('0x4a')]({'where':{'name':_0x22c80b,'userProfileId':_0x10147c[_0xae7f('0x52')]},'raw':!![]})[_0xae7f('0x24')](function(_0x1910a0){if(_0x1910a0&&_0x1910a0[_0xae7f('0x53')]===0x0){return db[_0xae7f('0x28')][_0xae7f('0x4b')]({'name':_0x1baffc[_0xae7f('0x2b')],'resourceId':_0x1baffc['id'],'type':'CustomReports','sectionId':_0x1910a0['id']},{})['then'](function(){return _0x20d96a;});}else{return _0x20d96a;}})[_0xae7f('0x47')](function(_0x205f7c){logger['error'](_0xae7f('0x54'),_0x205f7c);throw _0x205f7c;});}return _0x20d96a;})[_0xae7f('0x24')](respondWithResult(_0x771a22,0xc9))[_0xae7f('0x47')](handleError(_0x771a22,null));};exports[_0xae7f('0x23')]=function(_0x4c87ce,_0x432e38){if(_0x4c87ce['body']['id']){delete _0x4c87ce[_0xae7f('0x4c')]['id'];}return db[_0xae7f('0x2f')]['find']({'where':{'id':_0x4c87ce[_0xae7f('0x55')]['id']}})[_0xae7f('0x24')](handleEntityNotFound(_0x432e38,null))[_0xae7f('0x24')](saveUpdates(_0x4c87ce[_0xae7f('0x4c')],null))[_0xae7f('0x24')](respondWithResult(_0x432e38,null))['catch'](handleError(_0x432e38,null));};exports['destroy']=function(_0x33ed87,_0x2c6a54){return db[_0xae7f('0x2f')][_0xae7f('0x4a')]({'where':{'id':_0x33ed87[_0xae7f('0x55')]['id']}})['then'](handleEntityNotFound(_0x2c6a54,null))[_0xae7f('0x24')](removeEntity(_0x2c6a54,null))['catch'](handleError(_0x2c6a54,null));};exports[_0xae7f('0x56')]=function(_0x504db2,_0x1f4d58){var _0x379cf5=0xa;var _0xe89b39=[_0xae7f('0x57'),_0xae7f('0x58'),_0xae7f('0x59'),_0xae7f('0x5a')];var _0x200fe2={'SUM':'SUM(%s)','COUNT':_0xae7f('0x5b'),'COUNT DISTINCT':_0xae7f('0x5c'),'MAX':_0xae7f('0x5d'),'MIN':_0xae7f('0x5e'),'AVG':_0xae7f('0x5f'),'GROUP_CONCAT':_0xae7f('0x60'),'GROUP_CONCAT ASC':_0xae7f('0x61'),'GROUP_CONCAT DESC':_0xae7f('0x62')};var _0x584d7f={'SEC_TO_TIME':_0xae7f('0x63'),'DATE':_0xae7f('0x64'),'HOUR':_0xae7f('0x65'),'ROUND':_0xae7f('0x66'),'UNIX_TIMESTAMP':_0xae7f('0x67')};var _0x5adca9=function(_0x129a73){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY',_0xae7f('0x68')],_0x129a73);};var _0x597312=function(_0x115487){if(!_0x115487||!_0x115487[_0xae7f('0x69')][_0xae7f('0x49')]){return'';}for(var _0x3889b9='(',_0x2a9843=0x0;_0x2a9843<_0x115487[_0xae7f('0x69')][_0xae7f('0x49')];_0x2a9843+=0x1){_0x2a9843>0x0&&(_0x3889b9+='\x20'+_0x115487[_0xae7f('0x6a')]+'\x20');_0x3889b9+=_0x115487[_0xae7f('0x69')][_0x2a9843][_0xae7f('0x6b')]?_0x597312(_0x115487[_0xae7f('0x69')][_0x2a9843][_0xae7f('0x6b')]):_0x115487['rules'][_0x2a9843][_0xae7f('0x6c')]+'\x20'+_0x115487['rules'][_0x2a9843][_0xae7f('0x6d')]+(_0x5adca9(_0x115487['rules'][_0x2a9843][_0xae7f('0x6d')])?'\x20'+_0x115487[_0xae7f('0x69')][_0x2a9843][_0xae7f('0x6e')]:'');}return _0x3889b9+')';};var _0x48f7c4={'where':{'id':_0x504db2[_0xae7f('0x55')]['id']}},_0x392a74,_0x25f827,_0x36611e,_0x2c5e08,_0x540aa6;_0x48f7c4=_[_0xae7f('0x42')]({},_0x48f7c4,_0x504db2[_0xae7f('0x43')]);return db[_0xae7f('0x2f')][_0xae7f('0x4a')](_0x48f7c4)[_0xae7f('0x24')](function(_0x2432e4){if(_0x2432e4){_0x392a74=_0x2432e4;return _0x2432e4[_0xae7f('0x6f')]();}return null;})[_0xae7f('0x24')](function(_0x1c95de){if(_0x1c95de){if(!_0x1c95de[_0xae7f('0x49')]){throw new db['Sequelize']['ValidationErrorItem'](_0xae7f('0x70'),0x193);}_0x25f827=_0x1c95de;return db[_0xae7f('0x71')][_0xae7f('0x46')]({'raw':!![]});}return null;})[_0xae7f('0x24')](function(_0x134840){if(_0x134840){_0x36611e=_[_0xae7f('0x72')](_0x134840,'id');var _0x1029d0;var _0x5112f5=squel['select']();_0x5112f5['from'](_0x392a74[_0xae7f('0x73')]);for(var _0x575d83=0x0;_0x575d83<_0x25f827[_0xae7f('0x49')];_0x575d83+=0x1){_0x1029d0=_0x25f827[_0x575d83][_0xae7f('0x74')]?_0x36611e[_0x25f827[_0x575d83][_0xae7f('0x74')]][_0xae7f('0x75')]:_0x25f827[_0x575d83][_0xae7f('0x6c')];_0x1029d0=_0x25f827[_0x575d83][_0xae7f('0x76')]?_['replace'](_0x200fe2[_0x25f827[_0x575d83]['function']],'%s',_0x1029d0):_0x1029d0;_0x1029d0=_0x25f827[_0x575d83][_0xae7f('0x77')]?_[_0xae7f('0x78')](_0x584d7f[_0x25f827[_0x575d83]['format']],'%s',_0x1029d0):_0x1029d0;if(_0x25f827[_0x575d83][_0xae7f('0x79')]){_0x5112f5[_0xae7f('0x6b')](_0x1029d0);}_0x25f827[_0x575d83][_0xae7f('0x7a')]&&_0x5112f5[_0xae7f('0x3c')](_0x1029d0,_0x25f827[_0x575d83][_0xae7f('0x7a')]==='DESC'?![]:!![]);_0x5112f5[_0xae7f('0x6c')](_0x1029d0,_0x25f827[_0x575d83][_0xae7f('0x7b')]||_0x1029d0);}if(_0x392a74[_0xae7f('0x7c')]){_0x392a74[_0xae7f('0x7c')]=JSON[_0xae7f('0x7d')](_0x392a74[_0xae7f('0x7c')]);for(var _0x47211b=0x0;_0x47211b<_0x392a74[_0xae7f('0x7c')][_0xae7f('0x49')];_0x47211b+=0x1){if(_0x392a74[_0xae7f('0x7c')][_0x47211b][_0xae7f('0x32')]&&_['includes'](_0xe89b39,_0x392a74[_0xae7f('0x7c')][_0x47211b][_0xae7f('0x32')])&&_0x392a74[_0xae7f('0x7c')][_0x47211b]['parentKey']&&_0x392a74['joins'][_0x47211b][_0xae7f('0x7e')]&&_0x392a74[_0xae7f('0x7c')][_0x47211b]['foreignKey']){_0x5112f5[_0x392a74[_0xae7f('0x7c')][_0x47211b]['type']](_0x392a74[_0xae7f('0x7c')][_0x47211b]['foreignTable'],null,util[_0xae7f('0x77')]('%s.%s\x20=\x20%s.%s',_0x392a74[_0xae7f('0x73')],_0x392a74[_0xae7f('0x7c')][_0x47211b]['parentKey'],_0x392a74[_0xae7f('0x7c')][_0x47211b]['foreignTable'],_0x392a74['joins'][_0x47211b][_0xae7f('0x7f')]));}}}if(_0x392a74['conditions']){_0x392a74['conditions']=JSON[_0xae7f('0x7d')](_0x392a74['conditions']);_0x5112f5[_0xae7f('0x3e')](_0x597312(_0x392a74[_0xae7f('0x80')][_0xae7f('0x6b')]));}_0x540aa6=_0x5112f5[_0xae7f('0x81')]();_0x5112f5[_0xae7f('0x1e')](_0x379cf5);_0x5112f5[_0xae7f('0x1c')](0x0);logger['debug'](_0xae7f('0x82'),_0x5112f5[_0xae7f('0x83')]());return dbH[_0xae7f('0x84')][_0xae7f('0x35')](_0x5112f5['toString'](),{'type':dbH[_0xae7f('0x84')][_0xae7f('0x85')][_0xae7f('0x86')]});}})[_0xae7f('0x24')](respondWithResult(_0x1f4d58,null))['catch'](handleError(_0x1f4d58,null));};function runReport(_0x154333,_0x1a9c01,_0x4bd62c){var _0xcc3a7=_0x1a9c01['name'];var _0x524215=0xa;var _0x3aaa96=[_0xae7f('0x57'),_0xae7f('0x58'),_0xae7f('0x59'),_0xae7f('0x5a')];var _0x20a85e={'SUM':_0xae7f('0x87'),'COUNT':_0xae7f('0x5b'),'COUNT DISTINCT':_0xae7f('0x5c'),'MAX':_0xae7f('0x5d'),'MIN':_0xae7f('0x5e'),'AVG':_0xae7f('0x5f'),'GROUP_CONCAT':_0xae7f('0x60'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xae7f('0x62')};var _0x229f48={'SEC_TO_TIME':_0xae7f('0x63'),'DATE':_0xae7f('0x64'),'HOUR':'HOUR(%s)','ROUND':_0xae7f('0x66'),'UNIX_TIMESTAMP':_0xae7f('0x67')};var _0x5df0f4=function(_0x43da3a){return!_[_0xae7f('0x88')]([_0xae7f('0x89'),'IS\x20NOT\x20NULL',_0xae7f('0x8a'),'IS\x20NOT\x20EMPTY'],_0x43da3a);};var _0x2f2852=function(_0x2d7583){if(!_0x2d7583||!_0x2d7583[_0xae7f('0x69')][_0xae7f('0x49')]){return'';}for(var _0xd6cad9='(',_0x233722=0x0;_0x233722<_0x2d7583[_0xae7f('0x69')][_0xae7f('0x49')];_0x233722+=0x1){_0x233722>0x0&&(_0xd6cad9+='\x20'+_0x2d7583[_0xae7f('0x6a')]+'\x20');_0xd6cad9+=_0x2d7583['rules'][_0x233722][_0xae7f('0x6b')]?_0x2f2852(_0x2d7583[_0xae7f('0x69')][_0x233722][_0xae7f('0x6b')]):_0x2d7583[_0xae7f('0x69')][_0x233722][_0xae7f('0x6c')]+'\x20'+_0x2d7583['rules'][_0x233722][_0xae7f('0x6d')]+(_0x5df0f4(_0x2d7583[_0xae7f('0x69')][_0x233722][_0xae7f('0x6d')])?'\x20'+_0x2d7583[_0xae7f('0x69')][_0x233722][_0xae7f('0x6e')]:'');}return _0xd6cad9+')';};var _0x1eddf2={'where':{'id':_0x154333['id']}},_0x2d7620,_0x1c05d6,_0x306990,_0x49fa44,_0x22438a;_0x1eddf2=_[_0xae7f('0x42')]({},_0x1eddf2,_0x4bd62c);return db[_0xae7f('0x2f')][_0xae7f('0x4a')](_0x1eddf2)[_0xae7f('0x24')](function(_0x2da03a){if(_0x2da03a){_0x2d7620=_0x2da03a;return _0x2da03a[_0xae7f('0x6f')]();}return null;})[_0xae7f('0x24')](function(_0x206a96){if(_0x206a96){if(!_0x206a96[_0xae7f('0x49')]){throw new db[(_0xae7f('0x8b'))][(_0xae7f('0x8c'))](_0xae7f('0x70'),0x193);}_0x1c05d6=_0x206a96;return db[_0xae7f('0x71')][_0xae7f('0x46')]({'raw':!![]});}return null;})['then'](function(_0x5e43ba){if(_0x5e43ba){_0x306990=_['keyBy'](_0x5e43ba,'id');var _0xba0e07;var _0x8c89d=squel['select']();_0x8c89d[_0xae7f('0x8d')](_0x2d7620[_0xae7f('0x73')]);for(var _0x3c0717=0x0;_0x3c0717<_0x1c05d6[_0xae7f('0x49')];_0x3c0717+=0x1){_0xba0e07=_0x1c05d6[_0x3c0717]['MetricId']?_0x306990[_0x1c05d6[_0x3c0717]['MetricId']][_0xae7f('0x75')]:_0x1c05d6[_0x3c0717]['field'];_0xba0e07=_0x1c05d6[_0x3c0717]['function']?_[_0xae7f('0x78')](_0x20a85e[_0x1c05d6[_0x3c0717][_0xae7f('0x76')]],'%s',_0xba0e07):_0xba0e07;_0xba0e07=_0x1c05d6[_0x3c0717][_0xae7f('0x77')]?_[_0xae7f('0x78')](_0x229f48[_0x1c05d6[_0x3c0717][_0xae7f('0x77')]],'%s',_0xba0e07):_0xba0e07;if(_0x1c05d6[_0x3c0717][_0xae7f('0x79')]){_0x8c89d['group'](_0xba0e07);}_0x1c05d6[_0x3c0717][_0xae7f('0x7a')]&&_0x8c89d[_0xae7f('0x3c')](_0xba0e07,_0x1c05d6[_0x3c0717][_0xae7f('0x7a')]===_0xae7f('0x8e')?![]:!![]);_0x8c89d[_0xae7f('0x6c')](_0xba0e07,_0x1c05d6[_0x3c0717][_0xae7f('0x7b')]||_0xba0e07);}if(_0x2d7620[_0xae7f('0x7c')]){_0x2d7620['joins']=JSON[_0xae7f('0x7d')](_0x2d7620[_0xae7f('0x7c')]);for(var _0x4c7b01=0x0;_0x4c7b01<_0x2d7620[_0xae7f('0x7c')][_0xae7f('0x49')];_0x4c7b01+=0x1){if(_0x2d7620[_0xae7f('0x7c')][_0x4c7b01][_0xae7f('0x32')]&&_[_0xae7f('0x88')](_0x3aaa96,_0x2d7620[_0xae7f('0x7c')][_0x4c7b01][_0xae7f('0x32')])&&_0x2d7620[_0xae7f('0x7c')][_0x4c7b01][_0xae7f('0x8f')]&&_0x2d7620[_0xae7f('0x7c')][_0x4c7b01][_0xae7f('0x7e')]&&_0x2d7620[_0xae7f('0x7c')][_0x4c7b01][_0xae7f('0x7f')]){_0x8c89d[_0x2d7620[_0xae7f('0x7c')][_0x4c7b01]['type']](_0x2d7620[_0xae7f('0x7c')][_0x4c7b01][_0xae7f('0x7e')],null,util[_0xae7f('0x77')]('%s.%s\x20=\x20%s.%s',_0x2d7620[_0xae7f('0x73')],_0x2d7620[_0xae7f('0x7c')][_0x4c7b01][_0xae7f('0x8f')],_0x2d7620['joins'][_0x4c7b01][_0xae7f('0x7e')],_0x2d7620[_0xae7f('0x7c')][_0x4c7b01]['foreignKey']));}}}if(_0x2d7620[_0xae7f('0x80')]){_0x2d7620['conditions']=JSON[_0xae7f('0x7d')](_0x2d7620[_0xae7f('0x80')]);_0x8c89d['where'](_0x2f2852(_0x2d7620[_0xae7f('0x80')][_0xae7f('0x6b')]));}_0x22438a=_0x8c89d['clone']();_0x8c89d[_0xae7f('0x1e')](_0x524215);_0x8c89d[_0xae7f('0x1c')](0x0);return;}})[_0xae7f('0x24')](function(){if(_0x1a9c01['output']===_0xae7f('0x90')){return null;}var _0x2c67b9=_[_0xae7f('0x42')](_0x1a9c01,{'name':_0x1a9c01[_0xae7f('0x91')]||_0x1a9c01['name']||_0x2d7620[_0xae7f('0x2b')],'basename':_0xcc3a7,'savename':util[_0xae7f('0x77')](_0xae7f('0x92'),_0x1a9c01['name']||_0x2d7620[_0xae7f('0x2b')],require(_0xae7f('0x93'))[_0xae7f('0x94')](0x4),_0x1a9c01['output']||_0xae7f('0x95')),'reportId':_0x2d7620['id'],'reportType':'custom'});return db[_0xae7f('0x96')][_0xae7f('0x4b')](_0x2c67b9,{'raw':!![]});})['then'](function(_0x232be9){if(_0x2d7620['table']===_0xae7f('0x97')){_0x22438a[_0xae7f('0x3e')](_0x2d7620['table']+_0xae7f('0x98'),_0x1a9c01['startDate'],_0x1a9c01[_0xae7f('0x99')]);}else{_0x22438a[_0xae7f('0x3e')](_0x2d7620[_0xae7f('0x73')]+_0xae7f('0x9a'),_0x1a9c01[_0xae7f('0x9b')],_0x1a9c01[_0xae7f('0x99')]);}if(_0x232be9){logger[_0xae7f('0x9c')](_0xae7f('0x9d'),_0x22438a[_0xae7f('0x83')]());require(_0xae7f('0x9e'))[_0xae7f('0x9f')](path['join'](__dirname,_0xae7f('0xa0'),_0x232be9[_0xae7f('0xa1')]),[_0x232be9['id'],_0x22438a[_0xae7f('0x83')](),path[_0xae7f('0x57')](__dirname,'../../files/reports',_0x232be9[_0xae7f('0xa2')]),_0xcc3a7]);return _0x232be9;}else{var _0x139e58=squel[_0xae7f('0xa3')]();_0x139e58['from']('('+_0x22438a[_0xae7f('0x83')]()+')',_0xae7f('0xa4'));_0x139e58[_0xae7f('0x6c')]('COUNT(*)',_0xae7f('0x1f'));_0x22438a[_0xae7f('0x1e')](_0x1a9c01['limit']||_0x524215);_0x22438a[_0xae7f('0x1c')](_0x1a9c01['offset']||0x0);return dbH[_0xae7f('0x84')][_0xae7f('0x35')](_0x139e58[_0xae7f('0x83')](),{'type':dbH[_0xae7f('0x84')][_0xae7f('0x85')]['SELECT']})[_0xae7f('0x24')](function(_0x17a7de){if(!_0x17a7de[_0xae7f('0x49')]){_0x49fa44=0x0;}else{_0x49fa44=_0x17a7de[0x0][_0xae7f('0x1f')]||0x0;}return dbH[_0xae7f('0x84')]['query'](_0x22438a[_0xae7f('0x83')](),{'type':dbH[_0xae7f('0x84')][_0xae7f('0x85')][_0xae7f('0x86')]});})[_0xae7f('0x24')](function(_0x2a48a4){return{'rows':_0x2a48a4||[],'count':_0x49fa44};});}});}exports[_0xae7f('0xa5')]=function(_0x58266a,_0x275181){return runReport(_0x58266a[_0xae7f('0x55')],_0x58266a['query'],_0x58266a[_0xae7f('0x43')])['then'](respondWithResult(_0x275181,null))[_0xae7f('0x47')](handleError(_0x275181,null));};exports[_0xae7f('0xa6')]=runReport;exports[_0xae7f('0x35')]=function(_0x570c82,_0x3bb374){var _0x15f6fd=0xa;var _0x526cbe=[_0xae7f('0x57'),_0xae7f('0x58'),_0xae7f('0x59'),_0xae7f('0x5a')];var _0x5298c0={'SUM':_0xae7f('0x87'),'COUNT':_0xae7f('0x5b'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xae7f('0x5d'),'MIN':'MIN(%s)','AVG':_0xae7f('0x5f'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xae7f('0x62')};var _0x179d61={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xae7f('0x64'),'HOUR':_0xae7f('0x65'),'ROUND':_0xae7f('0x66'),'UNIX_TIMESTAMP':_0xae7f('0x67')};var _0x4e1a99=function(_0x432d5e){return!_['includes']([_0xae7f('0x89'),_0xae7f('0xa7'),_0xae7f('0x8a'),'IS\x20NOT\x20EMPTY'],_0x432d5e);};var _0x19ba3c=function(_0xf304a4){if(!_0xf304a4||!_0xf304a4[_0xae7f('0x69')][_0xae7f('0x49')]){return'';}for(var _0x27fdf4='(',_0x37de98=0x0;_0x37de98<_0xf304a4['rules'][_0xae7f('0x49')];_0x37de98+=0x1){_0x37de98>0x0&&(_0x27fdf4+='\x20'+_0xf304a4[_0xae7f('0x6a')]+'\x20');_0x27fdf4+=_0xf304a4[_0xae7f('0x69')][_0x37de98][_0xae7f('0x6b')]?_0x19ba3c(_0xf304a4[_0xae7f('0x69')][_0x37de98][_0xae7f('0x6b')]):_0xf304a4[_0xae7f('0x69')][_0x37de98][_0xae7f('0x6c')]+'\x20'+_0xf304a4['rules'][_0x37de98][_0xae7f('0x6d')]+(_0x4e1a99(_0xf304a4['rules'][_0x37de98][_0xae7f('0x6d')])?'\x20'+_0xf304a4['rules'][_0x37de98]['value']:'');}return _0x27fdf4+')';};var _0x52e7e1={'where':{'id':_0x570c82['params']['id']}},_0x1b0d7e,_0x480191,_0x22399e,_0x5c3754,_0x405b50;_0x52e7e1=_['merge']({},_0x52e7e1,_0x570c82[_0xae7f('0x43')]);return db[_0xae7f('0x2f')][_0xae7f('0x4a')](_0x52e7e1)[_0xae7f('0x24')](function(_0x151e54){if(_0x151e54){_0x1b0d7e=_0x151e54;return _0x151e54['getFields']();}return null;})[_0xae7f('0x24')](function(_0x529be9){if(_0x529be9){if(!_0x529be9['length']){throw new db['Sequelize'][(_0xae7f('0x8c'))](_0xae7f('0x70'),0x193);}_0x480191=_0x529be9;return db[_0xae7f('0x71')][_0xae7f('0x46')]({'raw':!![]});}return null;})['then'](function(_0x5a222c){if(_0x5a222c){_0x22399e=_[_0xae7f('0x72')](_0x5a222c,'id');var _0xd8e7be;var _0x467fcd=squel[_0xae7f('0xa3')]();_0x467fcd[_0xae7f('0x8d')](_0x1b0d7e[_0xae7f('0x73')]);for(var _0x4d6c03=0x0;_0x4d6c03<_0x480191[_0xae7f('0x49')];_0x4d6c03+=0x1){_0xd8e7be=_0x480191[_0x4d6c03][_0xae7f('0x74')]?_0x22399e[_0x480191[_0x4d6c03][_0xae7f('0x74')]][_0xae7f('0x75')]:_0x480191[_0x4d6c03]['field'];_0xd8e7be=_0x480191[_0x4d6c03][_0xae7f('0x76')]?_[_0xae7f('0x78')](_0x5298c0[_0x480191[_0x4d6c03][_0xae7f('0x76')]],'%s',_0xd8e7be):_0xd8e7be;_0xd8e7be=_0x480191[_0x4d6c03][_0xae7f('0x77')]?_[_0xae7f('0x78')](_0x179d61[_0x480191[_0x4d6c03]['format']],'%s',_0xd8e7be):_0xd8e7be;if(_0x480191[_0x4d6c03][_0xae7f('0x79')]){_0x467fcd[_0xae7f('0x6b')](_0xd8e7be);}_0x480191[_0x4d6c03][_0xae7f('0x7a')]&&_0x467fcd['order'](_0xd8e7be,_0x480191[_0x4d6c03][_0xae7f('0x7a')]==='DESC'?![]:!![]);_0x467fcd[_0xae7f('0x6c')](_0xd8e7be,_0x480191[_0x4d6c03][_0xae7f('0x7b')]||_0xd8e7be);}if(_0x1b0d7e[_0xae7f('0x7c')]){_0x1b0d7e[_0xae7f('0x7c')]=JSON['parse'](_0x1b0d7e[_0xae7f('0x7c')]);for(var _0x43a4fe=0x0;_0x43a4fe<_0x1b0d7e[_0xae7f('0x7c')][_0xae7f('0x49')];_0x43a4fe+=0x1){if(_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe][_0xae7f('0x32')]&&_[_0xae7f('0x88')](_0x526cbe,_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe]['type'])&&_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe][_0xae7f('0x8f')]&&_0x1b0d7e['joins'][_0x43a4fe][_0xae7f('0x7e')]&&_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe][_0xae7f('0x7f')]){_0x467fcd[_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe][_0xae7f('0x32')]](_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe][_0xae7f('0x7e')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x1b0d7e['table'],_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe][_0xae7f('0x8f')],_0x1b0d7e['joins'][_0x43a4fe][_0xae7f('0x7e')],_0x1b0d7e[_0xae7f('0x7c')][_0x43a4fe]['foreignKey']));}}}if(_0x1b0d7e[_0xae7f('0x80')]){_0x1b0d7e[_0xae7f('0x80')]=JSON['parse'](_0x1b0d7e[_0xae7f('0x80')]);_0x467fcd[_0xae7f('0x3e')](_0x19ba3c(_0x1b0d7e[_0xae7f('0x80')][_0xae7f('0x6b')]));}_0x405b50=_0x467fcd[_0xae7f('0x81')]();_0x467fcd[_0xae7f('0x1e')](_0x15f6fd);_0x467fcd['offset'](0x0);logger['debug'](_0xae7f('0x82'),_0x467fcd[_0xae7f('0x83')]());return dbH['sequelize']['query'](_0x467fcd[_0xae7f('0x83')](),{'type':dbH[_0xae7f('0x84')][_0xae7f('0x85')][_0xae7f('0x86')]});}})[_0xae7f('0x24')](function(){return{'sql':_0x405b50[_0xae7f('0x83')]()};})[_0xae7f('0x24')](respondWithResult(_0x3bb374,null))[_0xae7f('0x47')](handleError(_0x3bb374,null));};
\ No newline at end of file
+var _0x353c=['../../files/reports','savename','countTable','COUNT(*)','run','runReport','groupBy','eml-format','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','rows','catch','show','params','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20EMPTY','operator','rules','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','metric','function','replace','format','orderBy','DESC','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','findAll','alias','parentKey','web','fullPath','randomstring','generate','output','csv','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/'];(function(_0xa2b8b8,_0xad7adc){var _0x318aa2=function(_0x2b4cca){while(--_0x2b4cca){_0xa2b8b8['push'](_0xa2b8b8['shift']());}};_0x318aa2(++_0xad7adc);}(_0x353c,0x153));var _0xc353=function(_0x152fe3,_0x12b0c8){_0x152fe3=_0x152fe3-0x0;var _0xc5bb39=_0x353c[_0x152fe3];return _0xc5bb39;};'use strict';var emlformat=require(_0xc353('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc353('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc353('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc353('0x3'));var util=require(_0xc353('0x4'));var path=require(_0xc353('0x5'));var sox=require(_0xc353('0x6'));var csv=require(_0xc353('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc353('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc353('0x9'));var jsforce=require(_0xc353('0xa'));var deskjs=require(_0xc353('0xb'));var toCsv=require(_0xc353('0x7'));var querystring=require(_0xc353('0xc'));var Papa=require(_0xc353('0xd'));var Redis=require('ioredis');var authService=require(_0xc353('0xe'));var qs=require(_0xc353('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc353('0x10'));var logger=require('../../config/logger')(_0xc353('0x11'));var utils=require(_0xc353('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xc353('0x13'));var db=require(_0xc353('0x14'))['db'];var dbH=require(_0xc353('0x14'))['dbH'];function respondWithStatusCode(_0x2b81c8,_0x4ba7c5){_0x4ba7c5=_0x4ba7c5||0xcc;return function(_0x5537c8){if(_0x5537c8){return _0x2b81c8[_0xc353('0x15')](_0x4ba7c5);}return _0x2b81c8[_0xc353('0x16')](_0x4ba7c5)[_0xc353('0x17')]();};}function respondWithResult(_0x5053d3,_0x540787){_0x540787=_0x540787||0xc8;return function(_0x3c1eca){if(_0x3c1eca){return _0x5053d3['status'](_0x540787)[_0xc353('0x18')](_0x3c1eca);}};}function respondWithFilteredResult(_0x28d81c,_0x222860){return function(_0xbdf265){if(_0xbdf265){var _0x4116fc=typeof _0x222860[_0xc353('0x19')]===_0xc353('0x1a')&&typeof _0x222860[_0xc353('0x1b')]===_0xc353('0x1a');var _0x18c144=_0xbdf265[_0xc353('0x1c')];var _0x511cb1=_0x4116fc?0x0:_0x222860[_0xc353('0x19')];var _0x435d52=_0x4116fc?_0xbdf265[_0xc353('0x1c')]:_0x222860[_0xc353('0x19')]+_0x222860[_0xc353('0x1b')];var _0x3be051;if(_0x435d52>=_0x18c144){_0x435d52=_0x18c144;_0x3be051=0xc8;}else{_0x3be051=0xce;}_0x28d81c[_0xc353('0x16')](_0x3be051);return _0x28d81c[_0xc353('0x1d')](_0xc353('0x1e'),_0x511cb1+'-'+_0x435d52+'/'+_0x18c144)[_0xc353('0x18')](_0xbdf265);}return null;};}function patchUpdates(_0x1fc54e){return function(_0x4dc243){try{jsonpatch[_0xc353('0x1f')](_0x4dc243,_0x1fc54e,!![]);}catch(_0x119a46){return BPromise[_0xc353('0x20')](_0x119a46);}return _0x4dc243[_0xc353('0x21')]();};}function saveUpdates(_0x46605d,_0xb3065f){return function(_0x554499){if(_0x554499){return _0x554499[_0xc353('0x22')](_0x46605d)[_0xc353('0x23')](function(_0x3180b6){return _0x3180b6;});}return null;};}function removeEntity(_0x2ce6bc,_0x20bd0d){return function(_0x547ccb){if(_0x547ccb){return _0x547ccb['destroy']()[_0xc353('0x23')](function(){var _0x440b4b=_0x547ccb[_0xc353('0x24')]({'plain':!![]});var _0x5e7e6a='CustomReports';return db[_0xc353('0x25')][_0xc353('0x26')]({'where':{'type':_0x5e7e6a,'resourceId':_0x440b4b['id']}})[_0xc353('0x23')](function(){return _0x547ccb;});})[_0xc353('0x23')](function(){_0x2ce6bc['status'](0xcc)[_0xc353('0x17')]();});}};}function handleEntityNotFound(_0x253ddd,_0x2701f0){return function(_0x36c861){if(!_0x36c861){_0x253ddd['sendStatus'](0x194);}return _0x36c861;};}function handleError(_0x55a1e8,_0x35777b){_0x35777b=_0x35777b||0x1f4;return function(_0x18c4fc){logger[_0xc353('0x27')](_0x18c4fc[_0xc353('0x28')]);if(_0x18c4fc[_0xc353('0x29')]){delete _0x18c4fc['name'];}_0x55a1e8[_0xc353('0x16')](_0x35777b)['send'](_0x18c4fc);};}exports['index']=function(_0x2e09a3,_0x2e7602){var _0x1b105f={},_0x22a72a={},_0x327c28={'count':0x0,'rows':[]};var _0x1146e7=_[_0xc353('0x2a')](db[_0xc353('0x2b')][_0xc353('0x2c')],function(_0x546ce9){return{'name':_0x546ce9[_0xc353('0x2d')],'type':_0x546ce9[_0xc353('0x2e')][_0xc353('0x2f')]};});_0x22a72a[_0xc353('0x30')]=_[_0xc353('0x2a')](_0x1146e7,_0xc353('0x29'));_0x22a72a[_0xc353('0x31')]=_[_0xc353('0x32')](_0x2e09a3[_0xc353('0x31')]);_0x22a72a[_0xc353('0x33')]=_[_0xc353('0x34')](_0x22a72a['model'],_0x22a72a[_0xc353('0x31')]);_0x1b105f['attributes']=_[_0xc353('0x34')](_0x22a72a[_0xc353('0x30')],qs[_0xc353('0x35')](_0x2e09a3[_0xc353('0x31')][_0xc353('0x35')]));_0x1b105f[_0xc353('0x36')]=_0x1b105f['attributes'][_0xc353('0x37')]?_0x1b105f[_0xc353('0x36')]:_0x22a72a[_0xc353('0x30')];if(!_0x2e09a3[_0xc353('0x31')][_0xc353('0x38')](_0xc353('0x39'))){_0x1b105f['limit']=qs['limit'](_0x2e09a3[_0xc353('0x31')][_0xc353('0x1b')]);_0x1b105f[_0xc353('0x19')]=qs[_0xc353('0x19')](_0x2e09a3[_0xc353('0x31')][_0xc353('0x19')]);}_0x1b105f[_0xc353('0x3a')]=qs['sort'](_0x2e09a3[_0xc353('0x31')][_0xc353('0x3b')]);_0x1b105f[_0xc353('0x3c')]=qs[_0xc353('0x33')](_[_0xc353('0x3d')](_0x2e09a3[_0xc353('0x31')],_0x22a72a[_0xc353('0x33')]),_0x1146e7);if(_0x2e09a3['query'][_0xc353('0x3e')]){_0x1b105f[_0xc353('0x3c')]=_[_0xc353('0x3f')](_0x1b105f[_0xc353('0x3c')],{'$or':_[_0xc353('0x2a')](_0x1146e7,function(_0x587427){if(_0x587427['type']!==_0xc353('0x40')){var _0x2ca643={};_0x2ca643[_0x587427[_0xc353('0x29')]]={'$like':'%'+_0x2e09a3['query'][_0xc353('0x3e')]+'%'};return _0x2ca643;}})});}_0x1b105f=_[_0xc353('0x3f')]({},_0x1b105f,_0x2e09a3['options']);var _0x322f51={'where':_0x1b105f['where']};return db['AnalyticCustomReport'][_0xc353('0x1c')](_0x322f51)[_0xc353('0x23')](function(_0x5dab03){_0x327c28['count']=_0x5dab03;if(_0x2e09a3[_0xc353('0x31')][_0xc353('0x41')]){_0x1b105f['include']=[{'all':!![]}];}return db[_0xc353('0x2b')]['findAll'](_0x1b105f);})['then'](function(_0x50258b){_0x327c28[_0xc353('0x42')]=_0x50258b;return _0x327c28;})[_0xc353('0x23')](respondWithFilteredResult(_0x2e7602,_0x1b105f))[_0xc353('0x43')](handleError(_0x2e7602,null));};exports[_0xc353('0x44')]=function(_0xc2df75,_0x1b3fbd){var _0x192426={'raw':![],'where':{'id':_0xc2df75[_0xc353('0x45')]['id']}},_0x77a229={};_0x77a229['model']=_['keys'](db[_0xc353('0x2b')][_0xc353('0x2c')]);_0x77a229[_0xc353('0x31')]=_['keys'](_0xc2df75[_0xc353('0x31')]);_0x77a229[_0xc353('0x33')]=_[_0xc353('0x34')](_0x77a229['model'],_0x77a229[_0xc353('0x31')]);_0x192426[_0xc353('0x36')]=_[_0xc353('0x34')](_0x77a229[_0xc353('0x30')],qs[_0xc353('0x35')](_0xc2df75[_0xc353('0x31')][_0xc353('0x35')]));_0x192426[_0xc353('0x36')]=_0x192426[_0xc353('0x36')][_0xc353('0x37')]?_0x192426[_0xc353('0x36')]:_0x77a229[_0xc353('0x30')];if(_0xc2df75[_0xc353('0x31')][_0xc353('0x41')]){_0x192426[_0xc353('0x46')]=[{'all':!![]}];}_0x192426=_[_0xc353('0x3f')]({},_0x192426,_0xc2df75[_0xc353('0x47')]);return db[_0xc353('0x2b')][_0xc353('0x48')](_0x192426)[_0xc353('0x23')](handleEntityNotFound(_0x1b3fbd,null))[_0xc353('0x23')](respondWithResult(_0x1b3fbd,null))[_0xc353('0x43')](handleError(_0x1b3fbd,null));};exports[_0xc353('0x49')]=function(_0x18b12e,_0x2e27e7){return db[_0xc353('0x2b')]['create'](_0x18b12e[_0xc353('0x4a')],{})[_0xc353('0x23')](function(_0x265eb1){var _0x4a4aa0=_0x18b12e[_0xc353('0x4b')][_0xc353('0x24')]({'plain':!![]});if(!_0x4a4aa0)throw new Error(_0xc353('0x4c'));if(_0x4a4aa0[_0xc353('0x4d')]===_0xc353('0x4b')){var _0x11eddf=_0x265eb1[_0xc353('0x24')]({'plain':!![]});var _0x30a327=_0xc353('0x4e');return db[_0xc353('0x4f')][_0xc353('0x48')]({'where':{'name':_0x30a327,'userProfileId':_0x4a4aa0['userProfileId']},'raw':!![]})[_0xc353('0x23')](function(_0x38e67b){if(_0x38e67b&&_0x38e67b[_0xc353('0x50')]===0x0){return db[_0xc353('0x25')][_0xc353('0x49')]({'name':_0x11eddf[_0xc353('0x29')],'resourceId':_0x11eddf['id'],'type':'CustomReports','sectionId':_0x38e67b['id']},{})[_0xc353('0x23')](function(){return _0x265eb1;});}else{return _0x265eb1;}})[_0xc353('0x43')](function(_0x3d722c){logger['error'](_0xc353('0x51'),_0x3d722c);throw _0x3d722c;});}return _0x265eb1;})[_0xc353('0x23')](respondWithResult(_0x2e27e7,0xc9))[_0xc353('0x43')](handleError(_0x2e27e7,null));};exports['update']=function(_0x980067,_0x438c93){if(_0x980067[_0xc353('0x4a')]['id']){delete _0x980067['body']['id'];}return db[_0xc353('0x2b')][_0xc353('0x48')]({'where':{'id':_0x980067['params']['id']}})[_0xc353('0x23')](handleEntityNotFound(_0x438c93,null))[_0xc353('0x23')](saveUpdates(_0x980067[_0xc353('0x4a')],null))['then'](respondWithResult(_0x438c93,null))[_0xc353('0x43')](handleError(_0x438c93,null));};exports[_0xc353('0x26')]=function(_0x39316b,_0x51e415){return db[_0xc353('0x2b')][_0xc353('0x48')]({'where':{'id':_0x39316b['params']['id']}})[_0xc353('0x23')](handleEntityNotFound(_0x51e415,null))[_0xc353('0x23')](removeEntity(_0x51e415,null))[_0xc353('0x43')](handleError(_0x51e415,null));};exports[_0xc353('0x52')]=function(_0x55b2fb,_0x10841c){var _0x32c1da=0xa;var _0x458134=[_0xc353('0x53'),_0xc353('0x54'),_0xc353('0x55'),_0xc353('0x56')];var _0x59aae6={'SUM':_0xc353('0x57'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc353('0x58'),'MAX':_0xc353('0x59'),'MIN':'MIN(%s)','AVG':_0xc353('0x5a'),'GROUP_CONCAT':_0xc353('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc353('0x5c')};var _0x2420f4={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xc353('0x5d'),'HOUR':_0xc353('0x5e'),'ROUND':_0xc353('0x5f'),'UNIX_TIMESTAMP':_0xc353('0x60')};var _0x18f63a=function(_0x427b6a){return!_[_0xc353('0x61')](['IS\x20NULL','IS\x20NOT\x20NULL',_0xc353('0x62'),'IS\x20NOT\x20EMPTY'],_0x427b6a);};var _0xe99ec1=function(_0x27118a){if(!_0x27118a||!_0x27118a['rules'][_0xc353('0x37')]){return'';}for(var _0x43ecd8='(',_0x3b90c1=0x0;_0x3b90c1<_0x27118a['rules']['length'];_0x3b90c1+=0x1){_0x3b90c1>0x0&&(_0x43ecd8+='\x20'+_0x27118a[_0xc353('0x63')]+'\x20');_0x43ecd8+=_0x27118a[_0xc353('0x64')][_0x3b90c1][_0xc353('0x65')]?_0xe99ec1(_0x27118a[_0xc353('0x64')][_0x3b90c1][_0xc353('0x65')]):_0x27118a[_0xc353('0x64')][_0x3b90c1][_0xc353('0x66')]+'\x20'+_0x27118a['rules'][_0x3b90c1][_0xc353('0x67')]+(_0x18f63a(_0x27118a[_0xc353('0x64')][_0x3b90c1][_0xc353('0x67')])?'\x20'+_0x27118a[_0xc353('0x64')][_0x3b90c1][_0xc353('0x68')]:'');}return _0x43ecd8+')';};var _0x57b823={'where':{'id':_0x55b2fb[_0xc353('0x45')]['id']}},_0x36e401,_0x20cdc1,_0x45ee0e,_0x12b10c,_0x3a434e;_0x57b823=_[_0xc353('0x3f')]({},_0x57b823,_0x55b2fb['options']);return db[_0xc353('0x2b')][_0xc353('0x48')](_0x57b823)[_0xc353('0x23')](function(_0x3a8499){if(_0x3a8499){_0x36e401=_0x3a8499;return _0x3a8499[_0xc353('0x69')]();}return null;})['then'](function(_0xe6956d){if(_0xe6956d){if(!_0xe6956d[_0xc353('0x37')]){throw new db[(_0xc353('0x6a'))][(_0xc353('0x6b'))](_0xc353('0x6c'),0x193);}_0x20cdc1=_0xe6956d;return db[_0xc353('0x6d')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x30889e){if(_0x30889e){_0x45ee0e=_[_0xc353('0x6e')](_0x30889e,'id');var _0x4718e9;var _0x4e899e=squel[_0xc353('0x6f')]();_0x4e899e[_0xc353('0x70')](_0x36e401['table']);for(var _0x1a8582=0x0;_0x1a8582<_0x20cdc1[_0xc353('0x37')];_0x1a8582+=0x1){_0x4718e9=_0x20cdc1[_0x1a8582][_0xc353('0x71')]?_0x45ee0e[_0x20cdc1[_0x1a8582][_0xc353('0x71')]][_0xc353('0x72')]:_0x20cdc1[_0x1a8582][_0xc353('0x66')];_0x4718e9=_0x20cdc1[_0x1a8582][_0xc353('0x73')]?_[_0xc353('0x74')](_0x59aae6[_0x20cdc1[_0x1a8582][_0xc353('0x73')]],'%s',_0x4718e9):_0x4718e9;_0x4718e9=_0x20cdc1[_0x1a8582][_0xc353('0x75')]?_[_0xc353('0x74')](_0x2420f4[_0x20cdc1[_0x1a8582][_0xc353('0x75')]],'%s',_0x4718e9):_0x4718e9;if(_0x20cdc1[_0x1a8582]['groupBy']){_0x4e899e[_0xc353('0x65')](_0x4718e9);}_0x20cdc1[_0x1a8582][_0xc353('0x76')]&&_0x4e899e[_0xc353('0x3a')](_0x4718e9,_0x20cdc1[_0x1a8582][_0xc353('0x76')]===_0xc353('0x77')?![]:!![]);_0x4e899e['field'](_0x4718e9,_0x20cdc1[_0x1a8582]['alias']||_0x4718e9);}if(_0x36e401[_0xc353('0x78')]){_0x36e401[_0xc353('0x78')]=JSON[_0xc353('0x79')](_0x36e401[_0xc353('0x78')]);for(var _0xe1eaf=0x0;_0xe1eaf<_0x36e401[_0xc353('0x78')][_0xc353('0x37')];_0xe1eaf+=0x1){if(_0x36e401[_0xc353('0x78')][_0xe1eaf][_0xc353('0x2e')]&&_['includes'](_0x458134,_0x36e401['joins'][_0xe1eaf][_0xc353('0x2e')])&&_0x36e401[_0xc353('0x78')][_0xe1eaf]['parentKey']&&_0x36e401[_0xc353('0x78')][_0xe1eaf][_0xc353('0x7a')]&&_0x36e401[_0xc353('0x78')][_0xe1eaf][_0xc353('0x7b')]){_0x4e899e[_0x36e401[_0xc353('0x78')][_0xe1eaf]['type']](_0x36e401[_0xc353('0x78')][_0xe1eaf][_0xc353('0x7a')],null,util[_0xc353('0x75')](_0xc353('0x7c'),_0x36e401[_0xc353('0x7d')],_0x36e401[_0xc353('0x78')][_0xe1eaf]['parentKey'],_0x36e401[_0xc353('0x78')][_0xe1eaf]['foreignTable'],_0x36e401['joins'][_0xe1eaf][_0xc353('0x7b')]));}}}if(_0x36e401[_0xc353('0x7e')]){_0x36e401[_0xc353('0x7e')]=JSON['parse'](_0x36e401[_0xc353('0x7e')]);_0x4e899e[_0xc353('0x3c')](_0xe99ec1(_0x36e401[_0xc353('0x7e')][_0xc353('0x65')]));}_0x3a434e=_0x4e899e[_0xc353('0x7f')]();_0x4e899e[_0xc353('0x1b')](_0x32c1da);_0x4e899e[_0xc353('0x19')](0x0);logger[_0xc353('0x80')](_0xc353('0x81'),_0x4e899e[_0xc353('0x82')]());return dbH[_0xc353('0x83')][_0xc353('0x31')](_0x4e899e[_0xc353('0x82')](),{'type':dbH['sequelize'][_0xc353('0x84')][_0xc353('0x85')]});}})[_0xc353('0x23')](respondWithResult(_0x10841c,null))[_0xc353('0x43')](handleError(_0x10841c,null));};function runReport(_0x2361a9,_0x5dbf9a,_0x8520f8){var _0x3811c8=_0x5dbf9a[_0xc353('0x29')];var _0x548ae7=0xa;var _0xd136e6=[_0xc353('0x53'),_0xc353('0x54'),_0xc353('0x55'),'cross_join'];var _0x509990={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc353('0x58'),'MAX':_0xc353('0x59'),'MIN':_0xc353('0x86'),'AVG':_0xc353('0x5a'),'GROUP_CONCAT':_0xc353('0x5b'),'GROUP_CONCAT ASC':_0xc353('0x87'),'GROUP_CONCAT DESC':_0xc353('0x5c')};var _0x28011d={'SEC_TO_TIME':_0xc353('0x88'),'DATE':'DATE(%s)','HOUR':_0xc353('0x5e'),'ROUND':_0xc353('0x5f'),'UNIX_TIMESTAMP':_0xc353('0x60')};var _0x1f0d7b=function(_0x4a1107){return!_['includes']([_0xc353('0x89'),_0xc353('0x8a'),'IS\x20EMPTY',_0xc353('0x8b')],_0x4a1107);};var _0xd42f4e=function(_0x5d34b6){if(!_0x5d34b6||!_0x5d34b6[_0xc353('0x64')][_0xc353('0x37')]){return'';}for(var _0x50b3f1='(',_0x4e7058=0x0;_0x4e7058<_0x5d34b6['rules'][_0xc353('0x37')];_0x4e7058+=0x1){_0x4e7058>0x0&&(_0x50b3f1+='\x20'+_0x5d34b6['operator']+'\x20');_0x50b3f1+=_0x5d34b6[_0xc353('0x64')][_0x4e7058][_0xc353('0x65')]?_0xd42f4e(_0x5d34b6[_0xc353('0x64')][_0x4e7058][_0xc353('0x65')]):_0x5d34b6['rules'][_0x4e7058][_0xc353('0x66')]+'\x20'+_0x5d34b6[_0xc353('0x64')][_0x4e7058]['condition']+(_0x1f0d7b(_0x5d34b6[_0xc353('0x64')][_0x4e7058][_0xc353('0x67')])?'\x20'+_0x5d34b6[_0xc353('0x64')][_0x4e7058][_0xc353('0x68')]:'');}return _0x50b3f1+')';};var _0x12a59d={'where':{'id':_0x2361a9['id']}},_0x1e8f12,_0x3e49e5,_0x3cd909,_0x5b361e,_0x5ad179;_0x12a59d=_[_0xc353('0x3f')]({},_0x12a59d,_0x8520f8);return db[_0xc353('0x2b')][_0xc353('0x48')](_0x12a59d)[_0xc353('0x23')](function(_0x4ec04f){if(_0x4ec04f){_0x1e8f12=_0x4ec04f;return _0x4ec04f[_0xc353('0x69')]();}return null;})['then'](function(_0x46d2e8){if(_0x46d2e8){if(!_0x46d2e8[_0xc353('0x37')]){throw new db[(_0xc353('0x6a'))][(_0xc353('0x6b'))](_0xc353('0x6c'),0x193);}_0x3e49e5=_0x46d2e8;return db['AnalyticMetric'][_0xc353('0x8c')]({'raw':!![]});}return null;})[_0xc353('0x23')](function(_0x404487){if(_0x404487){_0x3cd909=_[_0xc353('0x6e')](_0x404487,'id');var _0x25b99f;var _0x29cf0f=squel[_0xc353('0x6f')]();_0x29cf0f[_0xc353('0x70')](_0x1e8f12[_0xc353('0x7d')]);for(var _0x4fb98f=0x0;_0x4fb98f<_0x3e49e5[_0xc353('0x37')];_0x4fb98f+=0x1){_0x25b99f=_0x3e49e5[_0x4fb98f][_0xc353('0x71')]?_0x3cd909[_0x3e49e5[_0x4fb98f][_0xc353('0x71')]][_0xc353('0x72')]:_0x3e49e5[_0x4fb98f][_0xc353('0x66')];_0x25b99f=_0x3e49e5[_0x4fb98f]['function']?_[_0xc353('0x74')](_0x509990[_0x3e49e5[_0x4fb98f][_0xc353('0x73')]],'%s',_0x25b99f):_0x25b99f;_0x25b99f=_0x3e49e5[_0x4fb98f][_0xc353('0x75')]?_['replace'](_0x28011d[_0x3e49e5[_0x4fb98f][_0xc353('0x75')]],'%s',_0x25b99f):_0x25b99f;if(_0x3e49e5[_0x4fb98f]['groupBy']){_0x29cf0f[_0xc353('0x65')](_0x25b99f);}_0x3e49e5[_0x4fb98f][_0xc353('0x76')]&&_0x29cf0f[_0xc353('0x3a')](_0x25b99f,_0x3e49e5[_0x4fb98f]['orderBy']===_0xc353('0x77')?![]:!![]);_0x29cf0f['field'](_0x25b99f,_0x3e49e5[_0x4fb98f][_0xc353('0x8d')]||_0x25b99f);}if(_0x1e8f12[_0xc353('0x78')]){_0x1e8f12[_0xc353('0x78')]=JSON[_0xc353('0x79')](_0x1e8f12[_0xc353('0x78')]);for(var _0x4c083e=0x0;_0x4c083e<_0x1e8f12[_0xc353('0x78')]['length'];_0x4c083e+=0x1){if(_0x1e8f12['joins'][_0x4c083e][_0xc353('0x2e')]&&_['includes'](_0xd136e6,_0x1e8f12['joins'][_0x4c083e][_0xc353('0x2e')])&&_0x1e8f12[_0xc353('0x78')][_0x4c083e]['parentKey']&&_0x1e8f12[_0xc353('0x78')][_0x4c083e][_0xc353('0x7a')]&&_0x1e8f12['joins'][_0x4c083e][_0xc353('0x7b')]){_0x29cf0f[_0x1e8f12[_0xc353('0x78')][_0x4c083e]['type']](_0x1e8f12[_0xc353('0x78')][_0x4c083e]['foreignTable'],null,util['format'](_0xc353('0x7c'),_0x1e8f12['table'],_0x1e8f12[_0xc353('0x78')][_0x4c083e][_0xc353('0x8e')],_0x1e8f12[_0xc353('0x78')][_0x4c083e][_0xc353('0x7a')],_0x1e8f12[_0xc353('0x78')][_0x4c083e][_0xc353('0x7b')]));}}}if(_0x1e8f12[_0xc353('0x7e')]){_0x1e8f12['conditions']=JSON[_0xc353('0x79')](_0x1e8f12[_0xc353('0x7e')]);_0x29cf0f[_0xc353('0x3c')](_0xd42f4e(_0x1e8f12[_0xc353('0x7e')][_0xc353('0x65')]));}_0x5ad179=_0x29cf0f[_0xc353('0x7f')]();_0x29cf0f[_0xc353('0x1b')](_0x548ae7);_0x29cf0f[_0xc353('0x19')](0x0);return;}})[_0xc353('0x23')](function(){if(_0x5dbf9a['output']===_0xc353('0x8f')){return null;}var _0x14729f=_[_0xc353('0x3f')](_0x5dbf9a,{'name':_0x5dbf9a[_0xc353('0x90')]||_0x5dbf9a['name']||_0x1e8f12[_0xc353('0x29')],'basename':_0x3811c8,'savename':util[_0xc353('0x75')]('%s-%s.%s',_0x5dbf9a[_0xc353('0x29')]||_0x1e8f12[_0xc353('0x29')],require(_0xc353('0x91'))[_0xc353('0x92')](0x4),_0x5dbf9a[_0xc353('0x93')]||_0xc353('0x94')),'reportId':_0x1e8f12['id'],'reportType':'custom'});return db[_0xc353('0x95')][_0xc353('0x49')](_0x14729f,{'raw':!![]});})[_0xc353('0x23')](function(_0x49cc3d){if(_0x1e8f12['table']==='cdr'){_0x5ad179[_0xc353('0x3c')](_0x1e8f12[_0xc353('0x7d')]+_0xc353('0x96'),_0x5dbf9a[_0xc353('0x97')],_0x5dbf9a[_0xc353('0x98')]);}else{_0x5ad179['where'](_0x1e8f12[_0xc353('0x7d')]+_0xc353('0x99'),_0x5dbf9a[_0xc353('0x97')],_0x5dbf9a[_0xc353('0x98')]);}if(_0x49cc3d){logger[_0xc353('0x9a')](_0xc353('0x9b'),_0x5ad179['toString']());require(_0xc353('0x9c'))[_0xc353('0x9d')](path[_0xc353('0x53')](__dirname,_0xc353('0x9e'),_0x49cc3d[_0xc353('0x93')]),[_0x49cc3d['id'],_0x5ad179[_0xc353('0x82')](),path[_0xc353('0x53')](__dirname,_0xc353('0x9f'),_0x49cc3d[_0xc353('0xa0')]),_0x3811c8]);return _0x49cc3d;}else{var _0x5f430b=squel[_0xc353('0x6f')]();_0x5f430b[_0xc353('0x70')]('('+_0x5ad179[_0xc353('0x82')]()+')',_0xc353('0xa1'));_0x5f430b[_0xc353('0x66')](_0xc353('0xa2'),'count');_0x5ad179[_0xc353('0x1b')](_0x5dbf9a[_0xc353('0x1b')]||_0x548ae7);_0x5ad179[_0xc353('0x19')](_0x5dbf9a[_0xc353('0x19')]||0x0);return dbH[_0xc353('0x83')][_0xc353('0x31')](_0x5f430b[_0xc353('0x82')](),{'type':dbH[_0xc353('0x83')][_0xc353('0x84')][_0xc353('0x85')]})['then'](function(_0x1b487c){if(!_0x1b487c['length']){_0x5b361e=0x0;}else{_0x5b361e=_0x1b487c[0x0][_0xc353('0x1c')]||0x0;}return dbH['sequelize'][_0xc353('0x31')](_0x5ad179['toString'](),{'type':dbH['sequelize'][_0xc353('0x84')][_0xc353('0x85')]});})['then'](function(_0x2ab712){return{'rows':_0x2ab712||[],'count':_0x5b361e};});}});}exports[_0xc353('0xa3')]=function(_0xda886d,_0x2f33d5){return runReport(_0xda886d[_0xc353('0x45')],_0xda886d[_0xc353('0x31')],_0xda886d['options'])[_0xc353('0x23')](respondWithResult(_0x2f33d5,null))[_0xc353('0x43')](handleError(_0x2f33d5,null));};exports[_0xc353('0xa4')]=runReport;exports[_0xc353('0x31')]=function(_0x188085,_0x3854d){var _0x3d405a=0xa;var _0xa2d3f2=[_0xc353('0x53'),_0xc353('0x54'),_0xc353('0x55'),_0xc353('0x56')];var _0x2990b0={'SUM':_0xc353('0x57'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc353('0x58'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xc353('0x5a'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x19b6b1={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xc353('0x5d'),'HOUR':_0xc353('0x5e'),'ROUND':_0xc353('0x5f'),'UNIX_TIMESTAMP':_0xc353('0x60')};var _0x11b7fa=function(_0x1823d9){return!_[_0xc353('0x61')]([_0xc353('0x89'),_0xc353('0x8a'),_0xc353('0x62'),_0xc353('0x8b')],_0x1823d9);};var _0x863bc3=function(_0x3699ee){if(!_0x3699ee||!_0x3699ee['rules'][_0xc353('0x37')]){return'';}for(var _0x57a045='(',_0x715ec9=0x0;_0x715ec9<_0x3699ee[_0xc353('0x64')][_0xc353('0x37')];_0x715ec9+=0x1){_0x715ec9>0x0&&(_0x57a045+='\x20'+_0x3699ee[_0xc353('0x63')]+'\x20');_0x57a045+=_0x3699ee[_0xc353('0x64')][_0x715ec9][_0xc353('0x65')]?_0x863bc3(_0x3699ee[_0xc353('0x64')][_0x715ec9][_0xc353('0x65')]):_0x3699ee['rules'][_0x715ec9]['field']+'\x20'+_0x3699ee[_0xc353('0x64')][_0x715ec9][_0xc353('0x67')]+(_0x11b7fa(_0x3699ee['rules'][_0x715ec9]['condition'])?'\x20'+_0x3699ee[_0xc353('0x64')][_0x715ec9]['value']:'');}return _0x57a045+')';};var _0x30a903={'where':{'id':_0x188085['params']['id']}},_0x30e39c,_0x2c17cb,_0xd830b6,_0x39d807,_0x3aab46;_0x30a903=_[_0xc353('0x3f')]({},_0x30a903,_0x188085[_0xc353('0x47')]);return db[_0xc353('0x2b')][_0xc353('0x48')](_0x30a903)['then'](function(_0x4e1329){if(_0x4e1329){_0x30e39c=_0x4e1329;return _0x4e1329['getFields']();}return null;})[_0xc353('0x23')](function(_0x3ec708){if(_0x3ec708){if(!_0x3ec708['length']){throw new db[(_0xc353('0x6a'))][(_0xc353('0x6b'))](_0xc353('0x6c'),0x193);}_0x2c17cb=_0x3ec708;return db['AnalyticMetric'][_0xc353('0x8c')]({'raw':!![]});}return null;})[_0xc353('0x23')](function(_0x2e0f34){if(_0x2e0f34){_0xd830b6=_[_0xc353('0x6e')](_0x2e0f34,'id');var _0x237dda;var _0x1445d0=squel[_0xc353('0x6f')]();_0x1445d0[_0xc353('0x70')](_0x30e39c[_0xc353('0x7d')]);for(var _0x3572cd=0x0;_0x3572cd<_0x2c17cb['length'];_0x3572cd+=0x1){_0x237dda=_0x2c17cb[_0x3572cd]['MetricId']?_0xd830b6[_0x2c17cb[_0x3572cd][_0xc353('0x71')]][_0xc353('0x72')]:_0x2c17cb[_0x3572cd]['field'];_0x237dda=_0x2c17cb[_0x3572cd][_0xc353('0x73')]?_[_0xc353('0x74')](_0x2990b0[_0x2c17cb[_0x3572cd][_0xc353('0x73')]],'%s',_0x237dda):_0x237dda;_0x237dda=_0x2c17cb[_0x3572cd][_0xc353('0x75')]?_[_0xc353('0x74')](_0x19b6b1[_0x2c17cb[_0x3572cd][_0xc353('0x75')]],'%s',_0x237dda):_0x237dda;if(_0x2c17cb[_0x3572cd][_0xc353('0xa5')]){_0x1445d0[_0xc353('0x65')](_0x237dda);}_0x2c17cb[_0x3572cd][_0xc353('0x76')]&&_0x1445d0[_0xc353('0x3a')](_0x237dda,_0x2c17cb[_0x3572cd][_0xc353('0x76')]==='DESC'?![]:!![]);_0x1445d0[_0xc353('0x66')](_0x237dda,_0x2c17cb[_0x3572cd][_0xc353('0x8d')]||_0x237dda);}if(_0x30e39c[_0xc353('0x78')]){_0x30e39c[_0xc353('0x78')]=JSON['parse'](_0x30e39c[_0xc353('0x78')]);for(var _0xb39883=0x0;_0xb39883<_0x30e39c['joins'][_0xc353('0x37')];_0xb39883+=0x1){if(_0x30e39c[_0xc353('0x78')][_0xb39883]['type']&&_['includes'](_0xa2d3f2,_0x30e39c[_0xc353('0x78')][_0xb39883][_0xc353('0x2e')])&&_0x30e39c[_0xc353('0x78')][_0xb39883][_0xc353('0x8e')]&&_0x30e39c[_0xc353('0x78')][_0xb39883][_0xc353('0x7a')]&&_0x30e39c['joins'][_0xb39883]['foreignKey']){_0x1445d0[_0x30e39c[_0xc353('0x78')][_0xb39883][_0xc353('0x2e')]](_0x30e39c[_0xc353('0x78')][_0xb39883][_0xc353('0x7a')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x30e39c[_0xc353('0x7d')],_0x30e39c[_0xc353('0x78')][_0xb39883][_0xc353('0x8e')],_0x30e39c['joins'][_0xb39883][_0xc353('0x7a')],_0x30e39c['joins'][_0xb39883][_0xc353('0x7b')]));}}}if(_0x30e39c[_0xc353('0x7e')]){_0x30e39c[_0xc353('0x7e')]=JSON[_0xc353('0x79')](_0x30e39c[_0xc353('0x7e')]);_0x1445d0['where'](_0x863bc3(_0x30e39c[_0xc353('0x7e')][_0xc353('0x65')]));}_0x3aab46=_0x1445d0['clone']();_0x1445d0[_0xc353('0x1b')](_0x3d405a);_0x1445d0[_0xc353('0x19')](0x0);logger[_0xc353('0x80')](_0xc353('0x81'),_0x1445d0[_0xc353('0x82')]());return dbH[_0xc353('0x83')][_0xc353('0x31')](_0x1445d0[_0xc353('0x82')](),{'type':dbH[_0xc353('0x83')][_0xc353('0x84')][_0xc353('0x85')]});}})[_0xc353('0x23')](function(){return{'sql':_0x3aab46[_0xc353('0x82')]()};})[_0xc353('0x23')](respondWithResult(_0x3854d,null))[_0xc353('0x43')](handleError(_0x3854d,null));};
\ No newline at end of file
index b0848fd..0f78bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x552b=['rimraf','./analyticCustomReport.attributes','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x42135e,_0x5f4b26){var _0x11b9a8=function(_0x78794){while(--_0x78794){_0x42135e['push'](_0x42135e['shift']());}};_0x11b9a8(++_0x5f4b26);}(_0x552b,0x13d));var _0xb552=function(_0x15ac16,_0xdd1891){_0x15ac16=_0x15ac16-0x0;var _0x218408=_0x552b[_0x15ac16];return _0x218408;};'use strict';var _=require(_0xb552('0x0'));var util=require(_0xb552('0x1'));var logger=require(_0xb552('0x2'))(_0xb552('0x3'));var moment=require(_0xb552('0x4'));var BPromise=require(_0xb552('0x5'));var rp=require(_0xb552('0x6'));var fs=require('fs');var path=require(_0xb552('0x7'));var rimraf=require(_0xb552('0x8'));var config=require('../../config/environment');var attributes=require(_0xb552('0x9'));module['exports']=function(_0x216f9b,_0x9b7b3f){return _0x216f9b[_0xb552('0xa')](_0xb552('0xb'),attributes,{'tableName':_0xb552('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcdc=['./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','util','request-promise','path','rimraf'];(function(_0x55a89e,_0x1a05ab){var _0x3aa2bd=function(_0x4b9d09){while(--_0x4b9d09){_0x55a89e['push'](_0x55a89e['shift']());}};_0x3aa2bd(++_0x1a05ab);}(_0xfcdc,0x10c));var _0xcfcd=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xfcdc[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var util=require(_0xcfcd('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcfcd('0x1'));var fs=require('fs');var path=require(_0xcfcd('0x2'));var rimraf=require(_0xcfcd('0x3'));var config=require('../../config/environment');var attributes=require(_0xcfcd('0x4'));module[_0xcfcd('0x5')]=function(_0x2479ea,_0x4e8523){return _0x2479ea[_0xcfcd('0x6')](_0xcfcd('0x7'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d829e9f..5c295b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7685=['error','AnalyticCustomReport,\x20%s,\x20%s','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','request\x20sent','stringify'];(function(_0x2feb6d,_0x441f4e){var _0x127a90=function(_0x2753f1){while(--_0x2753f1){_0x2feb6d['push'](_0x2feb6d['shift']());}};_0x127a90(++_0x441f4e);}(_0x7685,0xc3));var _0x5768=function(_0x4a28fb,_0x57de4e){_0x4a28fb=_0x4a28fb-0x0;var _0x37404d=_0x7685[_0x4a28fb];return _0x37404d;};'use strict';var _=require(_0x5768('0x0'));var util=require(_0x5768('0x1'));var moment=require('moment');var BPromise=require(_0x5768('0x2'));var rs=require(_0x5768('0x3'));var fs=require('fs');var Redis=require(_0x5768('0x4'));var db=require(_0x5768('0x5'))['db'];var utils=require(_0x5768('0x6'));var logger=require('../../config/logger')(_0x5768('0x7'));var config=require('../../config/environment');var jayson=require(_0x5768('0x8'));var client=jayson[_0x5768('0x9')][_0x5768('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb22822,_0x55963f,_0x10f460){return new BPromise(function(_0x353767,_0x1c145a){return client[_0x5768('0xb')](_0xb22822,_0x10f460)[_0x5768('0xc')](function(_0x188e4e){logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x55963f,_0x5768('0xd'));logger['debug']('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x55963f,_0x5768('0xd'),JSON[_0x5768('0xe')](_0x188e4e));if(_0x188e4e[_0x5768('0xf')]){if(_0x188e4e[_0x5768('0xf')]['code']===0x1f4){logger['error'](_0x5768('0x10'),_0x55963f,_0x188e4e[_0x5768('0xf')][_0x5768('0x11')]);return _0x1c145a(_0x188e4e[_0x5768('0xf')][_0x5768('0x11')]);}logger[_0x5768('0xf')]('AnalyticCustomReport,\x20%s,\x20%s',_0x55963f,_0x188e4e[_0x5768('0xf')][_0x5768('0x11')]);return _0x353767(_0x188e4e[_0x5768('0xf')][_0x5768('0x11')]);}else{logger[_0x5768('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x55963f,'request\x20sent');_0x353767(_0x188e4e[_0x5768('0x13')][_0x5768('0x11')]);}})[_0x5768('0x14')](function(_0xf4e91d){logger[_0x5768('0xf')]('AnalyticCustomReport,\x20%s,\x20%s',_0x55963f,_0xf4e91d);_0x1c145a(_0xf4e91d);});});}
\ No newline at end of file
+var _0xdc29=['../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','AnalyticCustomReport,\x20%s,\x20%s','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4ad0f7,_0x1920b0){var _0x30f5c8=function(_0x2aa6b6){while(--_0x2aa6b6){_0x4ad0f7['push'](_0x4ad0f7['shift']());}};_0x30f5c8(++_0x1920b0);}(_0xdc29,0x77));var _0x9dc2=function(_0x224204,_0x471246){_0x224204=_0x224204-0x0;var _0x4bed6d=_0xdc29[_0x224204];return _0x4bed6d;};'use strict';var _=require('lodash');var util=require(_0x9dc2('0x0'));var moment=require(_0x9dc2('0x1'));var BPromise=require(_0x9dc2('0x2'));var rs=require(_0x9dc2('0x3'));var fs=require('fs');var Redis=require(_0x9dc2('0x4'));var db=require(_0x9dc2('0x5'))['db'];var utils=require(_0x9dc2('0x6'));var logger=require(_0x9dc2('0x7'))(_0x9dc2('0x8'));var config=require(_0x9dc2('0x9'));var jayson=require(_0x9dc2('0xa'));var client=jayson[_0x9dc2('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52cddb,_0x247da1,_0x30b701){return new BPromise(function(_0x134342,_0x419d65){return client['request'](_0x52cddb,_0x30b701)[_0x9dc2('0xc')](function(_0x26cf69){logger[_0x9dc2('0xd')]('AnalyticCustomReport,\x20%s,\x20%s',_0x247da1,_0x9dc2('0xe'));logger[_0x9dc2('0xf')](_0x9dc2('0x10'),_0x247da1,'request\x20sent',JSON['stringify'](_0x26cf69));if(_0x26cf69[_0x9dc2('0x11')]){if(_0x26cf69[_0x9dc2('0x11')]['code']===0x1f4){logger[_0x9dc2('0x11')](_0x9dc2('0x12'),_0x247da1,_0x26cf69[_0x9dc2('0x11')][_0x9dc2('0x13')]);return _0x419d65(_0x26cf69[_0x9dc2('0x11')][_0x9dc2('0x13')]);}logger[_0x9dc2('0x11')](_0x9dc2('0x12'),_0x247da1,_0x26cf69[_0x9dc2('0x11')][_0x9dc2('0x13')]);return _0x134342(_0x26cf69[_0x9dc2('0x11')][_0x9dc2('0x13')]);}else{logger[_0x9dc2('0xd')](_0x9dc2('0x12'),_0x247da1,_0x9dc2('0xe'));_0x134342(_0x26cf69['result'][_0x9dc2('0x13')]);}})[_0x9dc2('0x14')](function(_0xc80676){logger[_0x9dc2('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x247da1,_0xc80676);_0x419d65(_0xc80676);});});}
\ No newline at end of file
index c07dfdc..4ae02c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce8=['Router','fs-extra','../../components/auth/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id/preview','preview','/:id/run','run','/:id/query','query','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x148433,_0x45b23d){var _0x29d668=function(_0x577127){while(--_0x577127){_0x148433['push'](_0x148433['shift']());}};_0x29d668(++_0x45b23d);}(_0x4ce8,0x140));var _0x84ce=function(_0x29ad2e,_0x526f94){_0x29ad2e=_0x29ad2e-0x0;var _0x583e7e=_0x4ce8[_0x29ad2e];return _0x583e7e;};'use strict';var multer=require(_0x84ce('0x0'));var util=require(_0x84ce('0x1'));var path=require(_0x84ce('0x2'));var timeout=require(_0x84ce('0x3'));var express=require(_0x84ce('0x4'));var router=express[_0x84ce('0x5')]();var fs_extra=require(_0x84ce('0x6'));var auth=require(_0x84ce('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x84ce('0x8'));var controller=require(_0x84ce('0x9'));router[_0x84ce('0xa')]('/',auth[_0x84ce('0xb')](),controller[_0x84ce('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x84ce('0xa')](_0x84ce('0xd'),auth['isAuthenticated'](),controller[_0x84ce('0xe')]);router[_0x84ce('0xa')](_0x84ce('0xf'),auth['isAuthenticated'](),controller[_0x84ce('0x10')]);router[_0x84ce('0xa')](_0x84ce('0x11'),auth[_0x84ce('0xb')](),controller[_0x84ce('0x12')]);router['post']('/',auth['isAuthenticated'](),controller[_0x84ce('0x13')]);router[_0x84ce('0x14')](_0x84ce('0x15'),auth['isAuthenticated'](),controller[_0x84ce('0x16')]);router['delete'](_0x84ce('0x15'),auth['isAuthenticated'](),controller[_0x84ce('0x17')]);module[_0x84ce('0x18')]=router;
\ No newline at end of file
+var _0x70e5=['create','update','/:id','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','isAuthenticated','index','get','show','/:id/preview','preview','/:id/run','/:id/query','query','post'];(function(_0x15b4e5,_0x19cb9f){var _0x5730f3=function(_0x5e4171){while(--_0x5e4171){_0x15b4e5['push'](_0x15b4e5['shift']());}};_0x5730f3(++_0x19cb9f);}(_0x70e5,0x164));var _0x570e=function(_0xf7dfb3,_0x3c5a65){_0xf7dfb3=_0xf7dfb3-0x0;var _0x1650a0=_0x70e5[_0xf7dfb3];return _0x1650a0;};'use strict';var multer=require(_0x570e('0x0'));var util=require(_0x570e('0x1'));var path=require('path');var timeout=require(_0x570e('0x2'));var express=require('express');var router=express[_0x570e('0x3')]();var fs_extra=require(_0x570e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x570e('0x5'));var config=require(_0x570e('0x6'));var controller=require(_0x570e('0x7'));router['get']('/',auth[_0x570e('0x8')](),controller[_0x570e('0x9')]);router[_0x570e('0xa')]('/:id',auth[_0x570e('0x8')](),controller[_0x570e('0xb')]);router[_0x570e('0xa')](_0x570e('0xc'),auth[_0x570e('0x8')](),controller[_0x570e('0xd')]);router[_0x570e('0xa')](_0x570e('0xe'),auth[_0x570e('0x8')](),controller['run']);router[_0x570e('0xa')](_0x570e('0xf'),auth[_0x570e('0x8')](),controller[_0x570e('0x10')]);router[_0x570e('0x11')]('/',auth['isAuthenticated'](),controller[_0x570e('0x12')]);router['put']('/:id',auth[_0x570e('0x8')](),controller[_0x570e('0x13')]);router['delete'](_0x570e('0x14'),auth['isAuthenticated'](),controller[_0x570e('0x15')]);module['exports']=router;
\ No newline at end of file
index a982ec6..f65b3ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['exports','STRING','TEXT','sequelize'];(function(_0x81afe1,_0xe2e7ec){var _0x40ce74=function(_0x543f56){while(--_0x543f56){_0x81afe1['push'](_0x81afe1['shift']());}};_0x40ce74(++_0xe2e7ec);}(_0xabce,0x103));var _0xeabc=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0xabce[_0x363ef8];return _0x148822;};'use strict';var Sequelize=require(_0xeabc('0x0'));module[_0xeabc('0x1')]={'name':{'type':Sequelize[_0xeabc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xeabc('0x2')]},'parent':{'type':Sequelize[_0xeabc('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xeabc('0x3')]}};
\ No newline at end of file
+var _0x53ec=['STRING','TEXT','sequelize','exports'];(function(_0x28498a,_0x4e3f18){var _0x33df8d=function(_0x2a844d){while(--_0x2a844d){_0x28498a['push'](_0x28498a['shift']());}};_0x33df8d(++_0x4e3f18);}(_0x53ec,0x192));var _0xc53e=function(_0x5bca8f,_0x1683d5){_0x5bca8f=_0x5bca8f-0x0;var _0x20fd20=_0x53ec[_0x5bca8f];return _0x20fd20;};'use strict';var Sequelize=require(_0xc53e('0x0'));module[_0xc53e('0x1')]={'name':{'type':Sequelize[_0xc53e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xc53e('0x2')]},'parent':{'type':Sequelize[_0xc53e('0x2')]},'table':{'type':Sequelize[_0xc53e('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xc53e('0x3')]}};
\ No newline at end of file
index e2913db..fb9ad59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['set','Content-Range','save','update','then','destroy','get','DefaultReports','UserProfileResource','error','stack','name','index','AnalyticDefaultReport','rawAttributes','type','key','map','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','keys','find','body','role','user','Reports','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','SUM(%s)','COUNT(%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','format','groupBy','orderBy','DESC','joins','includes','parentKey','foreignKey','foreignTable','conditions','parse','debug','Limited\x20Query:','sequelize','QueryTypes','SELECT','left_join','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','HOUR(%s)','operator','Please\x20insert\x20at\x20least\x20one\x20field','alias','%s.%s\x20=\x20%s.%s','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','toString','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','cross_join','getFields','replace','clone','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x737c1e,_0xb1228b){var _0x3fb046=function(_0x51bf95){while(--_0x51bf95){_0x737c1e['push'](_0x737c1e['shift']());}};_0x3fb046(++_0xb1228b);}(_0x4975,0x86));var _0x5497=function(_0x1b7243,_0x1c016e){_0x1b7243=_0x1b7243-0x0;var _0x45356f=_0x4975[_0x1b7243];return _0x45356f;};'use strict';var emlformat=require(_0x5497('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5497('0x1'));var jsonpatch=require(_0x5497('0x2'));var rp=require(_0x5497('0x3'));var moment=require(_0x5497('0x4'));var BPromise=require(_0x5497('0x5'));var Mustache=require(_0x5497('0x6'));var util=require(_0x5497('0x7'));var path=require(_0x5497('0x8'));var sox=require(_0x5497('0x9'));var csv=require(_0x5497('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5497('0xb'));var _=require('lodash');var squel=require(_0x5497('0xc'));var crypto=require(_0x5497('0xd'));var jsforce=require(_0x5497('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5497('0xa'));var querystring=require('querystring');var Papa=require(_0x5497('0xf'));var Redis=require(_0x5497('0x10'));var authService=require(_0x5497('0x11'));var qs=require(_0x5497('0x12'));var as=require(_0x5497('0x13'));var hardwareService=require(_0x5497('0x14'));var logger=require(_0x5497('0x15'))(_0x5497('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5497('0x17'))['db'];var dbH=require(_0x5497('0x17'))[_0x5497('0x18')];function respondWithStatusCode(_0x984990,_0x747dc7){_0x747dc7=_0x747dc7||0xcc;return function(_0x365144){if(_0x365144){return _0x984990[_0x5497('0x19')](_0x747dc7);}return _0x984990[_0x5497('0x1a')](_0x747dc7)[_0x5497('0x1b')]();};}function respondWithResult(_0x1a4c74,_0x55f590){_0x55f590=_0x55f590||0xc8;return function(_0x11b0a9){if(_0x11b0a9){return _0x1a4c74['status'](_0x55f590)[_0x5497('0x1c')](_0x11b0a9);}};}function respondWithFilteredResult(_0x2bfd8a,_0x19e5f3){return function(_0x3ce50b){if(_0x3ce50b){var _0x37c18e=typeof _0x19e5f3[_0x5497('0x1d')]===_0x5497('0x1e')&&typeof _0x19e5f3['limit']==='undefined';var _0x3f4d20=_0x3ce50b[_0x5497('0x1f')];var _0x3a47fd=_0x37c18e?0x0:_0x19e5f3['offset'];var _0xbf1ba7=_0x37c18e?_0x3ce50b[_0x5497('0x1f')]:_0x19e5f3[_0x5497('0x1d')]+_0x19e5f3[_0x5497('0x20')];var _0x1b1b43;if(_0xbf1ba7>=_0x3f4d20){_0xbf1ba7=_0x3f4d20;_0x1b1b43=0xc8;}else{_0x1b1b43=0xce;}_0x2bfd8a[_0x5497('0x1a')](_0x1b1b43);return _0x2bfd8a[_0x5497('0x21')](_0x5497('0x22'),_0x3a47fd+'-'+_0xbf1ba7+'/'+_0x3f4d20)[_0x5497('0x1c')](_0x3ce50b);}return null;};}function patchUpdates(_0x3f54ef){return function(_0x186065){try{jsonpatch['apply'](_0x186065,_0x3f54ef,!![]);}catch(_0x720767){return BPromise['reject'](_0x720767);}return _0x186065[_0x5497('0x23')]();};}function saveUpdates(_0xd0868d,_0x44265c){return function(_0x2f587d){if(_0x2f587d){return _0x2f587d[_0x5497('0x24')](_0xd0868d)[_0x5497('0x25')](function(_0x5018fa){return _0x5018fa;});}return null;};}function removeEntity(_0x54043a,_0x1eefce){return function(_0x34b97f){if(_0x34b97f){return _0x34b97f[_0x5497('0x26')]()[_0x5497('0x25')](function(){var _0x5223b5=_0x34b97f[_0x5497('0x27')]({'plain':!![]});var _0x57268c=_0x5497('0x28');return db[_0x5497('0x29')][_0x5497('0x26')]({'where':{'type':_0x57268c,'resourceId':_0x5223b5['id']}})[_0x5497('0x25')](function(){return _0x34b97f;});})[_0x5497('0x25')](function(){_0x54043a[_0x5497('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4af5f4,_0x5406e2){return function(_0x583d06){if(!_0x583d06){_0x4af5f4['sendStatus'](0x194);}return _0x583d06;};}function handleError(_0x39a2b7,_0x48d146){_0x48d146=_0x48d146||0x1f4;return function(_0x5e9356){logger[_0x5497('0x2a')](_0x5e9356[_0x5497('0x2b')]);if(_0x5e9356[_0x5497('0x2c')]){delete _0x5e9356['name'];}_0x39a2b7['status'](_0x48d146)['send'](_0x5e9356);};}exports[_0x5497('0x2d')]=function(_0x471e0b,_0xf4c117){var _0x5b8f79={},_0x489f71={},_0x594866={'count':0x0,'rows':[]};var _0xa28dd8=_['map'](db[_0x5497('0x2e')][_0x5497('0x2f')],function(_0x77c575){return{'name':_0x77c575['fieldName'],'type':_0x77c575[_0x5497('0x30')][_0x5497('0x31')]};});_0x489f71['model']=_[_0x5497('0x32')](_0xa28dd8,_0x5497('0x2c'));_0x489f71[_0x5497('0x33')]=_['keys'](_0x471e0b[_0x5497('0x33')]);_0x489f71[_0x5497('0x34')]=_[_0x5497('0x35')](_0x489f71[_0x5497('0x36')],_0x489f71[_0x5497('0x33')]);_0x5b8f79['attributes']=_[_0x5497('0x35')](_0x489f71[_0x5497('0x36')],qs['fields'](_0x471e0b[_0x5497('0x33')][_0x5497('0x37')]));_0x5b8f79[_0x5497('0x38')]=_0x5b8f79[_0x5497('0x38')][_0x5497('0x39')]?_0x5b8f79[_0x5497('0x38')]:_0x489f71['model'];if(!_0x471e0b[_0x5497('0x33')]['hasOwnProperty'](_0x5497('0x3a'))){_0x5b8f79[_0x5497('0x20')]=qs[_0x5497('0x20')](_0x471e0b['query']['limit']);_0x5b8f79[_0x5497('0x1d')]=qs[_0x5497('0x1d')](_0x471e0b[_0x5497('0x33')][_0x5497('0x1d')]);}_0x5b8f79[_0x5497('0x3b')]=qs[_0x5497('0x3c')](_0x471e0b['query'][_0x5497('0x3c')]);_0x5b8f79[_0x5497('0x3d')]=qs[_0x5497('0x34')](_[_0x5497('0x3e')](_0x471e0b[_0x5497('0x33')],_0x489f71[_0x5497('0x34')]),_0xa28dd8);if(_0x471e0b[_0x5497('0x33')][_0x5497('0x3f')]){_0x5b8f79[_0x5497('0x3d')]=_['merge'](_0x5b8f79[_0x5497('0x3d')],{'$or':_[_0x5497('0x32')](_0xa28dd8,function(_0x1e9616){if(_0x1e9616[_0x5497('0x30')]!==_0x5497('0x40')){var _0xa5ebe6={};_0xa5ebe6[_0x1e9616[_0x5497('0x2c')]]={'$like':'%'+_0x471e0b['query'][_0x5497('0x3f')]+'%'};return _0xa5ebe6;}})});}_0x5b8f79=_[_0x5497('0x41')]({},_0x5b8f79,_0x471e0b[_0x5497('0x42')]);var _0x35993c={'where':_0x5b8f79[_0x5497('0x3d')]};return db[_0x5497('0x2e')][_0x5497('0x1f')](_0x35993c)['then'](function(_0x2137bd){_0x594866[_0x5497('0x1f')]=_0x2137bd;if(_0x471e0b[_0x5497('0x33')][_0x5497('0x43')]){_0x5b8f79[_0x5497('0x44')]=[{'all':!![]}];}return db[_0x5497('0x2e')][_0x5497('0x45')](_0x5b8f79);})[_0x5497('0x25')](function(_0x2021ae){_0x594866[_0x5497('0x46')]=_0x2021ae;return _0x594866;})['then'](respondWithFilteredResult(_0xf4c117,_0x5b8f79))[_0x5497('0x47')](handleError(_0xf4c117,null));};exports['show']=function(_0x40822a,_0x9fc24){var _0x26ef01={'raw':!![],'where':{'id':_0x40822a[_0x5497('0x48')]['id']}},_0x3602ec={};_0x3602ec['model']=_[_0x5497('0x49')](db[_0x5497('0x2e')]['rawAttributes']);_0x3602ec[_0x5497('0x33')]=_['keys'](_0x40822a[_0x5497('0x33')]);_0x3602ec['filters']=_[_0x5497('0x35')](_0x3602ec[_0x5497('0x36')],_0x3602ec[_0x5497('0x33')]);_0x26ef01[_0x5497('0x38')]=_[_0x5497('0x35')](_0x3602ec['model'],qs['fields'](_0x40822a['query']['fields']));_0x26ef01[_0x5497('0x38')]=_0x26ef01[_0x5497('0x38')][_0x5497('0x39')]?_0x26ef01[_0x5497('0x38')]:_0x3602ec[_0x5497('0x36')];if(_0x40822a[_0x5497('0x33')][_0x5497('0x43')]){_0x26ef01[_0x5497('0x44')]=[{'all':!![]}];}_0x26ef01=_[_0x5497('0x41')]({},_0x26ef01,_0x40822a['options']);return db[_0x5497('0x2e')][_0x5497('0x4a')](_0x26ef01)[_0x5497('0x25')](handleEntityNotFound(_0x9fc24,null))['then'](respondWithResult(_0x9fc24,null))[_0x5497('0x47')](handleError(_0x9fc24,null));};exports['create']=function(_0x12ffbc,_0x31f1ba){return db[_0x5497('0x2e')]['create'](_0x12ffbc[_0x5497('0x4b')],{})[_0x5497('0x25')](function(_0x515c3e){var _0x3abc92=_0x12ffbc['user'][_0x5497('0x27')]({'plain':!![]});if(!_0x3abc92)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3abc92[_0x5497('0x4c')]===_0x5497('0x4d')){var _0x26fd9f=_0x515c3e[_0x5497('0x27')]({'plain':!![]});var _0x25e80c=_0x5497('0x4e');return db[_0x5497('0x4f')][_0x5497('0x4a')]({'where':{'name':_0x25e80c,'userProfileId':_0x3abc92['userProfileId']},'raw':!![]})[_0x5497('0x25')](function(_0x5b2c22){if(_0x5b2c22&&_0x5b2c22['autoAssociation']===0x0){return db[_0x5497('0x29')][_0x5497('0x50')]({'name':_0x26fd9f['name'],'resourceId':_0x26fd9f['id'],'type':_0x5497('0x28'),'sectionId':_0x5b2c22['id']},{})[_0x5497('0x25')](function(){return _0x515c3e;});}else{return _0x515c3e;}})[_0x5497('0x47')](function(_0x3094c7){logger['error'](_0x5497('0x51'),_0x3094c7);throw _0x3094c7;});}return _0x515c3e;})['then'](respondWithResult(_0x31f1ba,0xc9))['catch'](handleError(_0x31f1ba,null));};exports[_0x5497('0x24')]=function(_0x33dd07,_0x2f7ec8){if(_0x33dd07['body']['id']){delete _0x33dd07['body']['id'];}return db[_0x5497('0x2e')]['find']({'where':{'id':_0x33dd07[_0x5497('0x48')]['id']}})['then'](handleEntityNotFound(_0x2f7ec8,null))[_0x5497('0x25')](saveUpdates(_0x33dd07['body'],null))[_0x5497('0x25')](respondWithResult(_0x2f7ec8,null))[_0x5497('0x47')](handleError(_0x2f7ec8,null));};exports['destroy']=function(_0x418f17,_0x5dccfb){return db['AnalyticDefaultReport'][_0x5497('0x4a')]({'where':{'id':_0x418f17[_0x5497('0x48')]['id']}})['then'](handleEntityNotFound(_0x5dccfb,null))[_0x5497('0x25')](removeEntity(_0x5dccfb,null))[_0x5497('0x47')](handleError(_0x5dccfb,null));};exports[_0x5497('0x52')]=function(_0x28b2a3,_0x3fca40){var _0x25c75e=0xa;var _0x590be7=[_0x5497('0x53'),'left_join','right_join','cross_join'];var _0x1f3965={'SUM':_0x5497('0x54'),'COUNT':_0x5497('0x55'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x5497('0x56'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x5497('0x57'),'GROUP_CONCAT ASC':_0x5497('0x58'),'GROUP_CONCAT DESC':_0x5497('0x59')};var _0x25f349={'SEC_TO_TIME':_0x5497('0x5a'),'DATE':_0x5497('0x5b'),'HOUR':'HOUR(%s)','ROUND':_0x5497('0x5c'),'UNIX_TIMESTAMP':_0x5497('0x5d')};var _0x425995=function(_0xc783ce){return!_['includes']([_0x5497('0x5e'),_0x5497('0x5f'),_0x5497('0x60'),_0x5497('0x61')],_0xc783ce);};var _0x5823f6=function(_0x31271c){if(!_0x31271c||!_0x31271c[_0x5497('0x62')][_0x5497('0x39')]){return'';}for(var _0x542bcf='(',_0x1ab48f=0x0;_0x1ab48f<_0x31271c['rules']['length'];_0x1ab48f+=0x1){_0x1ab48f>0x0&&(_0x542bcf+='\x20'+_0x31271c['operator']+'\x20');_0x542bcf+=_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x63')]?_0x5823f6(_0x31271c[_0x5497('0x62')][_0x1ab48f]['group']):_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x64')]+'\x20'+_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x65')]+(_0x425995(_0x31271c['rules'][_0x1ab48f][_0x5497('0x65')])?'\x20'+_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x66')]:'');}return _0x542bcf+')';};var _0x49617c={'where':{'id':_0x28b2a3[_0x5497('0x48')]['id']}},_0x164de1,_0x465bed,_0xb3eec2,_0x4368e3,_0x1467c4;_0x49617c=_[_0x5497('0x41')]({},_0x49617c,_0x28b2a3['options']);return db[_0x5497('0x2e')][_0x5497('0x4a')](_0x49617c)[_0x5497('0x25')](function(_0x20efea){if(_0x20efea){_0x164de1=_0x20efea;return _0x20efea['getFields']();}return null;})['then'](function(_0x4a7360){if(_0x4a7360){if(!_0x4a7360[_0x5497('0x39')]){throw new db[(_0x5497('0x67'))][(_0x5497('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x465bed=_0x4a7360;return db[_0x5497('0x69')][_0x5497('0x45')]({'raw':!![]});}return null;})[_0x5497('0x25')](function(_0x464df3){if(_0x464df3){_0xb3eec2=_[_0x5497('0x6a')](_0x464df3,'id');var _0x4338d4;var _0x3f38bf=squel[_0x5497('0x6b')]();_0x3f38bf[_0x5497('0x6c')](_0x164de1[_0x5497('0x6d')]);for(var _0x1fc6ad=0x0;_0x1fc6ad<_0x465bed['length'];_0x1fc6ad+=0x1){_0x4338d4=_0x465bed[_0x1fc6ad][_0x5497('0x6e')]?_0xb3eec2[_0x465bed[_0x1fc6ad][_0x5497('0x6e')]][_0x5497('0x6f')]:_0x465bed[_0x1fc6ad]['field'];_0x4338d4=_0x465bed[_0x1fc6ad][_0x5497('0x70')]?_['replace'](_0x1f3965[_0x465bed[_0x1fc6ad][_0x5497('0x70')]],'%s',_0x4338d4):_0x4338d4;_0x4338d4=_0x465bed[_0x1fc6ad][_0x5497('0x71')]?_['replace'](_0x25f349[_0x465bed[_0x1fc6ad][_0x5497('0x71')]],'%s',_0x4338d4):_0x4338d4;if(_0x465bed[_0x1fc6ad][_0x5497('0x72')]){_0x3f38bf[_0x5497('0x63')](_0x4338d4);}_0x465bed[_0x1fc6ad][_0x5497('0x73')]&&_0x3f38bf['order'](_0x4338d4,_0x465bed[_0x1fc6ad][_0x5497('0x73')]===_0x5497('0x74')?![]:!![]);_0x3f38bf[_0x5497('0x64')](_0x4338d4,_0x465bed[_0x1fc6ad]['alias']||_0x4338d4);}if(_0x164de1[_0x5497('0x75')]){_0x164de1[_0x5497('0x75')]=JSON['parse'](_0x164de1[_0x5497('0x75')]);for(var _0xebe694=0x0;_0xebe694<_0x164de1[_0x5497('0x75')]['length'];_0xebe694+=0x1){if(_0x164de1['joins'][_0xebe694][_0x5497('0x30')]&&_[_0x5497('0x76')](_0x590be7,_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x30')])&&_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x77')]&&_0x164de1[_0x5497('0x75')][_0xebe694]['foreignTable']&&_0x164de1['joins'][_0xebe694][_0x5497('0x78')]){_0x3f38bf[_0x164de1[_0x5497('0x75')][_0xebe694]['type']](_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x79')],null,util[_0x5497('0x71')]('%s.%s\x20=\x20%s.%s',_0x164de1[_0x5497('0x6d')],_0x164de1[_0x5497('0x75')][_0xebe694]['parentKey'],_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x79')],_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x78')]));}}}if(_0x164de1[_0x5497('0x7a')]){_0x164de1['conditions']=JSON[_0x5497('0x7b')](_0x164de1[_0x5497('0x7a')]);_0x3f38bf[_0x5497('0x3d')](_0x5823f6(_0x164de1[_0x5497('0x7a')][_0x5497('0x63')]));}_0x1467c4=_0x3f38bf['clone']();_0x3f38bf[_0x5497('0x20')](_0x25c75e);_0x3f38bf[_0x5497('0x1d')](0x0);logger[_0x5497('0x7c')](_0x5497('0x7d'),_0x3f38bf['toString']());return dbH[_0x5497('0x7e')][_0x5497('0x33')](_0x3f38bf['toString'](),{'type':dbH[_0x5497('0x7e')][_0x5497('0x7f')][_0x5497('0x80')]});}})[_0x5497('0x25')](respondWithResult(_0x3fca40,null))['catch'](handleError(_0x3fca40,null));};function runReport(_0x547de7,_0x4ff64f,_0x5343d5){var _0x594761=_0x4ff64f[_0x5497('0x2c')];var _0x2375cc=0xa;var _0x15d0da=[_0x5497('0x53'),_0x5497('0x81'),'right_join','cross_join'];var _0x392987={'SUM':_0x5497('0x54'),'COUNT':_0x5497('0x55'),'COUNT DISTINCT':_0x5497('0x82'),'MAX':_0x5497('0x56'),'MIN':_0x5497('0x83'),'AVG':_0x5497('0x84'),'GROUP_CONCAT':_0x5497('0x57'),'GROUP_CONCAT ASC':_0x5497('0x58'),'GROUP_CONCAT DESC':_0x5497('0x59')};var _0x4c41c4={'SEC_TO_TIME':_0x5497('0x5a'),'DATE':_0x5497('0x5b'),'HOUR':_0x5497('0x85'),'ROUND':_0x5497('0x5c'),'UNIX_TIMESTAMP':_0x5497('0x5d')};var _0x22b019=function(_0x4aa4ba){return!_[_0x5497('0x76')](['IS\x20NULL',_0x5497('0x5f'),_0x5497('0x60'),_0x5497('0x61')],_0x4aa4ba);};var _0x5b0f9d=function(_0x59960b){if(!_0x59960b||!_0x59960b[_0x5497('0x62')][_0x5497('0x39')]){return'';}for(var _0x953b31='(',_0xeb52c9=0x0;_0xeb52c9<_0x59960b[_0x5497('0x62')][_0x5497('0x39')];_0xeb52c9+=0x1){_0xeb52c9>0x0&&(_0x953b31+='\x20'+_0x59960b[_0x5497('0x86')]+'\x20');_0x953b31+=_0x59960b[_0x5497('0x62')][_0xeb52c9]['group']?_0x5b0f9d(_0x59960b['rules'][_0xeb52c9]['group']):_0x59960b[_0x5497('0x62')][_0xeb52c9][_0x5497('0x64')]+'\x20'+_0x59960b[_0x5497('0x62')][_0xeb52c9][_0x5497('0x65')]+(_0x22b019(_0x59960b['rules'][_0xeb52c9]['condition'])?'\x20'+_0x59960b[_0x5497('0x62')][_0xeb52c9][_0x5497('0x66')]:'');}return _0x953b31+')';};var _0x5dd9bc={'where':{'id':_0x547de7['id']}},_0x83b240,_0x2fc11a,_0x3ce2ee,_0x36c09f,_0x51e9fb;_0x5dd9bc=_['merge']({},_0x5dd9bc,_0x5343d5);return db['AnalyticDefaultReport']['find'](_0x5dd9bc)['then'](function(_0x497295){if(_0x497295){_0x83b240=_0x497295;return _0x497295['getFields']();}return null;})[_0x5497('0x25')](function(_0x5aa5e1){if(_0x5aa5e1){if(!_0x5aa5e1[_0x5497('0x39')]){throw new db[(_0x5497('0x67'))][(_0x5497('0x68'))](_0x5497('0x87'),0x193);}_0x2fc11a=_0x5aa5e1;return db[_0x5497('0x69')][_0x5497('0x45')]({'raw':!![]});}return null;})['then'](function(_0x77d52c){if(_0x77d52c){_0x3ce2ee=_['keyBy'](_0x77d52c,'id');var _0x15a67d;var _0x2721b2=squel[_0x5497('0x6b')]();_0x2721b2[_0x5497('0x6c')](_0x83b240[_0x5497('0x6d')]);for(var _0x38fa59=0x0;_0x38fa59<_0x2fc11a[_0x5497('0x39')];_0x38fa59+=0x1){_0x15a67d=_0x2fc11a[_0x38fa59][_0x5497('0x6e')]?_0x3ce2ee[_0x2fc11a[_0x38fa59][_0x5497('0x6e')]][_0x5497('0x6f')]:_0x2fc11a[_0x38fa59]['field'];_0x15a67d=_0x2fc11a[_0x38fa59][_0x5497('0x70')]?_['replace'](_0x392987[_0x2fc11a[_0x38fa59][_0x5497('0x70')]],'%s',_0x15a67d):_0x15a67d;_0x15a67d=_0x2fc11a[_0x38fa59][_0x5497('0x71')]?_['replace'](_0x4c41c4[_0x2fc11a[_0x38fa59][_0x5497('0x71')]],'%s',_0x15a67d):_0x15a67d;if(_0x2fc11a[_0x38fa59][_0x5497('0x72')]){_0x2721b2[_0x5497('0x63')](_0x15a67d);}_0x2fc11a[_0x38fa59][_0x5497('0x73')]&&_0x2721b2[_0x5497('0x3b')](_0x15a67d,_0x2fc11a[_0x38fa59][_0x5497('0x73')]===_0x5497('0x74')?![]:!![]);_0x2721b2[_0x5497('0x64')](_0x15a67d,_0x2fc11a[_0x38fa59][_0x5497('0x88')]||_0x15a67d);}if(_0x83b240[_0x5497('0x75')]){_0x83b240[_0x5497('0x75')]=JSON[_0x5497('0x7b')](_0x83b240[_0x5497('0x75')]);for(var _0x22426e=0x0;_0x22426e<_0x83b240['joins'][_0x5497('0x39')];_0x22426e+=0x1){if(_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x30')]&&_[_0x5497('0x76')](_0x15d0da,_0x83b240[_0x5497('0x75')][_0x22426e]['type'])&&_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x77')]&&_0x83b240['joins'][_0x22426e]['foreignTable']&&_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x78')]){_0x2721b2[_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x30')]](_0x83b240[_0x5497('0x75')][_0x22426e]['foreignTable'],null,util['format'](_0x5497('0x89'),_0x83b240['table'],_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x77')],_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x79')],_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x78')]));}}}if(_0x83b240['conditions']){_0x83b240['conditions']=JSON[_0x5497('0x7b')](_0x83b240[_0x5497('0x7a')]);_0x2721b2[_0x5497('0x3d')](_0x5b0f9d(_0x83b240['conditions'][_0x5497('0x63')]));}_0x51e9fb=_0x2721b2['clone']();_0x2721b2[_0x5497('0x20')](_0x2375cc);_0x2721b2['offset'](0x0);return;}})['then'](function(){if(_0x4ff64f[_0x5497('0x8a')]===_0x5497('0x8b')){return null;}var _0x4ce768=_[_0x5497('0x41')](_0x4ff64f,{'name':_0x4ff64f[_0x5497('0x8c')]||_0x4ff64f[_0x5497('0x2c')]||_0x83b240[_0x5497('0x2c')],'basename':_0x594761,'savename':util['format'](_0x5497('0x8d'),_0x4ff64f[_0x5497('0x2c')]||_0x83b240[_0x5497('0x2c')],require(_0x5497('0x8e'))[_0x5497('0x8f')](0x4),_0x4ff64f['output']||_0x5497('0x90')),'reportId':_0x83b240['id'],'reportType':'default'});return db[_0x5497('0x91')][_0x5497('0x50')](_0x4ce768,{'raw':!![]});})[_0x5497('0x25')](function(_0x314db4){if(_0x83b240[_0x5497('0x6d')]===_0x5497('0x92')){_0x51e9fb[_0x5497('0x3d')](_0x83b240[_0x5497('0x6d')]+_0x5497('0x93'),_0x4ff64f[_0x5497('0x94')],_0x4ff64f[_0x5497('0x95')]);}else{_0x51e9fb['where'](_0x83b240[_0x5497('0x6d')]+_0x5497('0x96'),_0x4ff64f[_0x5497('0x94')],_0x4ff64f[_0x5497('0x95')]);}if(_0x314db4){logger[_0x5497('0x97')](_0x5497('0x98'),_0x51e9fb[_0x5497('0x99')]());require(_0x5497('0x9a'))[_0x5497('0x9b')](path[_0x5497('0x53')](__dirname,_0x5497('0x9c'),_0x314db4['output']),[_0x314db4['id'],_0x51e9fb[_0x5497('0x99')](),path[_0x5497('0x53')](__dirname,_0x5497('0x9d'),_0x314db4[_0x5497('0x9e')]),_0x594761]);return _0x314db4;}else{var _0x46be08=squel[_0x5497('0x6b')]();_0x46be08[_0x5497('0x6c')]('('+_0x51e9fb[_0x5497('0x99')]()+')',_0x5497('0x9f'));_0x46be08[_0x5497('0x64')](_0x5497('0xa0'),_0x5497('0x1f'));_0x51e9fb[_0x5497('0x20')](_0x4ff64f[_0x5497('0x20')]||_0x2375cc);_0x51e9fb['offset'](_0x4ff64f['offset']||0x0);return dbH[_0x5497('0x7e')][_0x5497('0x33')](_0x46be08[_0x5497('0x99')](),{'type':dbH['sequelize'][_0x5497('0x7f')][_0x5497('0x80')]})[_0x5497('0x25')](function(_0x2bd48c){if(!_0x2bd48c[_0x5497('0x39')]){_0x36c09f=0x0;}else{_0x36c09f=_0x2bd48c[0x0][_0x5497('0x1f')]||0x0;}return dbH[_0x5497('0x7e')][_0x5497('0x33')](_0x51e9fb['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x5497('0x80')]});})[_0x5497('0x25')](function(_0x4dab6a){return{'rows':_0x4dab6a||[],'count':_0x36c09f};});}});}exports[_0x5497('0xa1')]=function(_0x27f42b,_0x1bef85){return runReport(_0x27f42b['params'],_0x27f42b[_0x5497('0x33')],_0x27f42b['options'])[_0x5497('0x25')](respondWithResult(_0x1bef85,null))[_0x5497('0x47')](handleError(_0x1bef85,null));};exports[_0x5497('0xa2')]=runReport;exports['query']=function(_0x1c3dad,_0xfba062){var _0x494cc3=0xa;var _0x401f04=[_0x5497('0x53'),_0x5497('0x81'),'right_join',_0x5497('0xa3')];var _0x1a5c32={'SUM':_0x5497('0x54'),'COUNT':_0x5497('0x55'),'COUNT DISTINCT':_0x5497('0x82'),'MAX':_0x5497('0x56'),'MIN':_0x5497('0x83'),'AVG':_0x5497('0x84'),'GROUP_CONCAT':_0x5497('0x57'),'GROUP_CONCAT ASC':_0x5497('0x58'),'GROUP_CONCAT DESC':_0x5497('0x59')};var _0x1dfb76={'SEC_TO_TIME':_0x5497('0x5a'),'DATE':_0x5497('0x5b'),'HOUR':_0x5497('0x85'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5497('0x5d')};var _0x5c2517=function(_0x367929){return!_[_0x5497('0x76')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x5497('0x60'),_0x5497('0x61')],_0x367929);};var _0x2fd2e3=function(_0x2fe770){if(!_0x2fe770||!_0x2fe770['rules'][_0x5497('0x39')]){return'';}for(var _0x1299cd='(',_0x4c2b14=0x0;_0x4c2b14<_0x2fe770['rules'][_0x5497('0x39')];_0x4c2b14+=0x1){_0x4c2b14>0x0&&(_0x1299cd+='\x20'+_0x2fe770[_0x5497('0x86')]+'\x20');_0x1299cd+=_0x2fe770[_0x5497('0x62')][_0x4c2b14][_0x5497('0x63')]?_0x2fd2e3(_0x2fe770[_0x5497('0x62')][_0x4c2b14]['group']):_0x2fe770['rules'][_0x4c2b14][_0x5497('0x64')]+'\x20'+_0x2fe770[_0x5497('0x62')][_0x4c2b14]['condition']+(_0x5c2517(_0x2fe770[_0x5497('0x62')][_0x4c2b14][_0x5497('0x65')])?'\x20'+_0x2fe770[_0x5497('0x62')][_0x4c2b14][_0x5497('0x66')]:'');}return _0x1299cd+')';};var _0x358ec5={'where':{'id':_0x1c3dad['params']['id']}},_0x5cddbc,_0x188d21,_0xf92129,_0x2d5cc1,_0x4f9228;_0x358ec5=_[_0x5497('0x41')]({},_0x358ec5,_0x1c3dad[_0x5497('0x42')]);return db[_0x5497('0x2e')]['find'](_0x358ec5)[_0x5497('0x25')](function(_0x30a248){if(_0x30a248){_0x5cddbc=_0x30a248;return _0x30a248[_0x5497('0xa4')]();}return null;})['then'](function(_0x1d4c76){if(_0x1d4c76){if(!_0x1d4c76[_0x5497('0x39')]){throw new db['Sequelize']['ValidationErrorItem'](_0x5497('0x87'),0x193);}_0x188d21=_0x1d4c76;return db[_0x5497('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5497('0x25')](function(_0x5001d5){if(_0x5001d5){_0xf92129=_[_0x5497('0x6a')](_0x5001d5,'id');var _0x2c58e6;var _0x300f3e=squel[_0x5497('0x6b')]();_0x300f3e[_0x5497('0x6c')](_0x5cddbc[_0x5497('0x6d')]);for(var _0x23732d=0x0;_0x23732d<_0x188d21['length'];_0x23732d+=0x1){_0x2c58e6=_0x188d21[_0x23732d]['MetricId']?_0xf92129[_0x188d21[_0x23732d][_0x5497('0x6e')]][_0x5497('0x6f')]:_0x188d21[_0x23732d]['field'];_0x2c58e6=_0x188d21[_0x23732d]['function']?_[_0x5497('0xa5')](_0x1a5c32[_0x188d21[_0x23732d][_0x5497('0x70')]],'%s',_0x2c58e6):_0x2c58e6;_0x2c58e6=_0x188d21[_0x23732d][_0x5497('0x71')]?_[_0x5497('0xa5')](_0x1dfb76[_0x188d21[_0x23732d][_0x5497('0x71')]],'%s',_0x2c58e6):_0x2c58e6;if(_0x188d21[_0x23732d][_0x5497('0x72')]){_0x300f3e['group'](_0x2c58e6);}_0x188d21[_0x23732d][_0x5497('0x73')]&&_0x300f3e[_0x5497('0x3b')](_0x2c58e6,_0x188d21[_0x23732d][_0x5497('0x73')]===_0x5497('0x74')?![]:!![]);_0x300f3e[_0x5497('0x64')](_0x2c58e6,_0x188d21[_0x23732d][_0x5497('0x88')]||_0x2c58e6);}if(_0x5cddbc['joins']){_0x5cddbc[_0x5497('0x75')]=JSON['parse'](_0x5cddbc[_0x5497('0x75')]);for(var _0x261804=0x0;_0x261804<_0x5cddbc[_0x5497('0x75')]['length'];_0x261804+=0x1){if(_0x5cddbc[_0x5497('0x75')][_0x261804]['type']&&_['includes'](_0x401f04,_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x30')])&&_0x5cddbc['joins'][_0x261804][_0x5497('0x77')]&&_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x79')]&&_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x78')]){_0x300f3e[_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x30')]](_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x79')],null,util['format'](_0x5497('0x89'),_0x5cddbc[_0x5497('0x6d')],_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x77')],_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x79')],_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x78')]));}}}if(_0x5cddbc[_0x5497('0x7a')]){_0x5cddbc[_0x5497('0x7a')]=JSON[_0x5497('0x7b')](_0x5cddbc[_0x5497('0x7a')]);_0x300f3e[_0x5497('0x3d')](_0x2fd2e3(_0x5cddbc[_0x5497('0x7a')][_0x5497('0x63')]));}_0x4f9228=_0x300f3e[_0x5497('0xa6')]();_0x300f3e[_0x5497('0x20')](_0x494cc3);_0x300f3e[_0x5497('0x1d')](0x0);logger[_0x5497('0x7c')]('Limited\x20Query:',_0x300f3e[_0x5497('0x99')]());return dbH[_0x5497('0x7e')]['query'](_0x300f3e['toString'](),{'type':dbH[_0x5497('0x7e')]['QueryTypes'][_0x5497('0x80')]});}})[_0x5497('0x25')](function(){return{'sql':_0x4f9228[_0x5497('0x99')]()};})[_0x5497('0x25')](respondWithResult(_0xfba062,null))[_0x5497('0x47')](handleError(_0xfba062,null));};
\ No newline at end of file
+var _0xdbf5=['includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','parentKey','conditions','debug','Limited\x20Query:','toString','SELECT','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','IS\x20EMPTY','ValidationErrorItem','metric','DESC','clone','output','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','cdr','startDate','endDate','info','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','sequelize','QueryTypes','run','Sequelize','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','dbH','end','status','json','limit','undefined','count','set','Content-Range','reject','save','then','destroy','get','DefaultReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','find','userProfileId','catch','update','join','left_join','right_join','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x3ab947,_0x569f61){_0x3ab947=_0x3ab947-0x0;var _0x269db5=_0xdbf5[_0x3ab947];return _0x269db5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dbf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5dbf('0x1'));var moment=require(_0x5dbf('0x2'));var BPromise=require(_0x5dbf('0x3'));var Mustache=require(_0x5dbf('0x4'));var util=require(_0x5dbf('0x5'));var path=require(_0x5dbf('0x6'));var sox=require(_0x5dbf('0x7'));var csv=require(_0x5dbf('0x8'));var ejs=require(_0x5dbf('0x9'));var fs=require('fs');var fs_extra=require(_0x5dbf('0xa'));var _=require(_0x5dbf('0xb'));var squel=require(_0x5dbf('0xc'));var crypto=require(_0x5dbf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5dbf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5dbf('0xf'));var Papa=require(_0x5dbf('0x10'));var Redis=require(_0x5dbf('0x11'));var authService=require(_0x5dbf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5dbf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5dbf('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5dbf('0x15'));var db=require('../../mysqldb')['db'];var dbH=require(_0x5dbf('0x16'))[_0x5dbf('0x17')];function respondWithStatusCode(_0x1453a9,_0x7cb848){_0x7cb848=_0x7cb848||0xcc;return function(_0x14493a){if(_0x14493a){return _0x1453a9['sendStatus'](_0x7cb848);}return _0x1453a9['status'](_0x7cb848)[_0x5dbf('0x18')]();};}function respondWithResult(_0x3480c8,_0x48e7fd){_0x48e7fd=_0x48e7fd||0xc8;return function(_0x19624e){if(_0x19624e){return _0x3480c8[_0x5dbf('0x19')](_0x48e7fd)[_0x5dbf('0x1a')](_0x19624e);}};}function respondWithFilteredResult(_0x2dfa44,_0x181816){return function(_0x472eb9){if(_0x472eb9){var _0x2d32cc=typeof _0x181816['offset']==='undefined'&&typeof _0x181816[_0x5dbf('0x1b')]===_0x5dbf('0x1c');var _0x39c7aa=_0x472eb9[_0x5dbf('0x1d')];var _0x20c2b0=_0x2d32cc?0x0:_0x181816['offset'];var _0x11cd00=_0x2d32cc?_0x472eb9['count']:_0x181816['offset']+_0x181816['limit'];var _0x23d1e7;if(_0x11cd00>=_0x39c7aa){_0x11cd00=_0x39c7aa;_0x23d1e7=0xc8;}else{_0x23d1e7=0xce;}_0x2dfa44[_0x5dbf('0x19')](_0x23d1e7);return _0x2dfa44[_0x5dbf('0x1e')](_0x5dbf('0x1f'),_0x20c2b0+'-'+_0x11cd00+'/'+_0x39c7aa)[_0x5dbf('0x1a')](_0x472eb9);}return null;};}function patchUpdates(_0x5b2518){return function(_0x2764ea){try{jsonpatch['apply'](_0x2764ea,_0x5b2518,!![]);}catch(_0xb68f92){return BPromise[_0x5dbf('0x20')](_0xb68f92);}return _0x2764ea[_0x5dbf('0x21')]();};}function saveUpdates(_0x43a612,_0x3b763c){return function(_0x2f154e){if(_0x2f154e){return _0x2f154e['update'](_0x43a612)[_0x5dbf('0x22')](function(_0x3e3a2d){return _0x3e3a2d;});}return null;};}function removeEntity(_0x2d3e1b,_0x2079fc){return function(_0x2763ec){if(_0x2763ec){return _0x2763ec[_0x5dbf('0x23')]()[_0x5dbf('0x22')](function(){var _0x20ab1b=_0x2763ec[_0x5dbf('0x24')]({'plain':!![]});var _0x15a790=_0x5dbf('0x25');return db[_0x5dbf('0x26')][_0x5dbf('0x23')]({'where':{'type':_0x15a790,'resourceId':_0x20ab1b['id']}})[_0x5dbf('0x22')](function(){return _0x2763ec;});})[_0x5dbf('0x22')](function(){_0x2d3e1b[_0x5dbf('0x19')](0xcc)[_0x5dbf('0x18')]();});}};}function handleEntityNotFound(_0x3f8341,_0x159e61){return function(_0x22ec42){if(!_0x22ec42){_0x3f8341[_0x5dbf('0x27')](0x194);}return _0x22ec42;};}function handleError(_0x471027,_0x21cd00){_0x21cd00=_0x21cd00||0x1f4;return function(_0x5768b7){logger[_0x5dbf('0x28')](_0x5768b7[_0x5dbf('0x29')]);if(_0x5768b7[_0x5dbf('0x2a')]){delete _0x5768b7[_0x5dbf('0x2a')];}_0x471027[_0x5dbf('0x19')](_0x21cd00)[_0x5dbf('0x2b')](_0x5768b7);};}exports[_0x5dbf('0x2c')]=function(_0x31d57a,_0x406ce6){var _0x273b63={},_0x294dd7={},_0x50a307={'count':0x0,'rows':[]};var _0x4c1587=_[_0x5dbf('0x2d')](db[_0x5dbf('0x2e')][_0x5dbf('0x2f')],function(_0x3b73ad){return{'name':_0x3b73ad[_0x5dbf('0x30')],'type':_0x3b73ad['type']['key']};});_0x294dd7[_0x5dbf('0x31')]=_[_0x5dbf('0x2d')](_0x4c1587,'name');_0x294dd7[_0x5dbf('0x32')]=_[_0x5dbf('0x33')](_0x31d57a[_0x5dbf('0x32')]);_0x294dd7[_0x5dbf('0x34')]=_[_0x5dbf('0x35')](_0x294dd7['model'],_0x294dd7[_0x5dbf('0x32')]);_0x273b63[_0x5dbf('0x36')]=_[_0x5dbf('0x35')](_0x294dd7[_0x5dbf('0x31')],qs[_0x5dbf('0x37')](_0x31d57a['query'][_0x5dbf('0x37')]));_0x273b63[_0x5dbf('0x36')]=_0x273b63[_0x5dbf('0x36')][_0x5dbf('0x38')]?_0x273b63['attributes']:_0x294dd7[_0x5dbf('0x31')];if(!_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x39')](_0x5dbf('0x3a'))){_0x273b63[_0x5dbf('0x1b')]=qs[_0x5dbf('0x1b')](_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x1b')]);_0x273b63[_0x5dbf('0x3b')]=qs[_0x5dbf('0x3b')](_0x31d57a[_0x5dbf('0x32')]['offset']);}_0x273b63[_0x5dbf('0x3c')]=qs[_0x5dbf('0x3d')](_0x31d57a[_0x5dbf('0x32')]['sort']);_0x273b63[_0x5dbf('0x3e')]=qs[_0x5dbf('0x34')](_[_0x5dbf('0x3f')](_0x31d57a['query'],_0x294dd7[_0x5dbf('0x34')]),_0x4c1587);if(_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x40')]){_0x273b63['where']=_[_0x5dbf('0x41')](_0x273b63[_0x5dbf('0x3e')],{'$or':_[_0x5dbf('0x2d')](_0x4c1587,function(_0x260c9f){if(_0x260c9f[_0x5dbf('0x42')]!==_0x5dbf('0x43')){var _0x321ae3={};_0x321ae3[_0x260c9f[_0x5dbf('0x2a')]]={'$like':'%'+_0x31d57a['query']['filter']+'%'};return _0x321ae3;}})});}_0x273b63=_['merge']({},_0x273b63,_0x31d57a['options']);var _0x28b28f={'where':_0x273b63[_0x5dbf('0x3e')]};return db['AnalyticDefaultReport'][_0x5dbf('0x1d')](_0x28b28f)[_0x5dbf('0x22')](function(_0x5a60e8){_0x50a307[_0x5dbf('0x1d')]=_0x5a60e8;if(_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x44')]){_0x273b63[_0x5dbf('0x45')]=[{'all':!![]}];}return db[_0x5dbf('0x2e')][_0x5dbf('0x46')](_0x273b63);})[_0x5dbf('0x22')](function(_0x1c020a){_0x50a307[_0x5dbf('0x47')]=_0x1c020a;return _0x50a307;})[_0x5dbf('0x22')](respondWithFilteredResult(_0x406ce6,_0x273b63))['catch'](handleError(_0x406ce6,null));};exports[_0x5dbf('0x48')]=function(_0x22f958,_0xec1d28){var _0x50880d={'raw':!![],'where':{'id':_0x22f958[_0x5dbf('0x49')]['id']}},_0x16b0ff={};_0x16b0ff[_0x5dbf('0x31')]=_[_0x5dbf('0x33')](db['AnalyticDefaultReport'][_0x5dbf('0x2f')]);_0x16b0ff['query']=_[_0x5dbf('0x33')](_0x22f958[_0x5dbf('0x32')]);_0x16b0ff[_0x5dbf('0x34')]=_[_0x5dbf('0x35')](_0x16b0ff['model'],_0x16b0ff['query']);_0x50880d[_0x5dbf('0x36')]=_[_0x5dbf('0x35')](_0x16b0ff[_0x5dbf('0x31')],qs['fields'](_0x22f958[_0x5dbf('0x32')]['fields']));_0x50880d['attributes']=_0x50880d['attributes']['length']?_0x50880d[_0x5dbf('0x36')]:_0x16b0ff[_0x5dbf('0x31')];if(_0x22f958['query'][_0x5dbf('0x44')]){_0x50880d[_0x5dbf('0x45')]=[{'all':!![]}];}_0x50880d=_['merge']({},_0x50880d,_0x22f958[_0x5dbf('0x4a')]);return db[_0x5dbf('0x2e')]['find'](_0x50880d)[_0x5dbf('0x22')](handleEntityNotFound(_0xec1d28,null))['then'](respondWithResult(_0xec1d28,null))['catch'](handleError(_0xec1d28,null));};exports[_0x5dbf('0x4b')]=function(_0x2a3d30,_0x17a1c0){return db['AnalyticDefaultReport']['create'](_0x2a3d30[_0x5dbf('0x4c')],{})[_0x5dbf('0x22')](function(_0x21f477){var _0x307a00=_0x2a3d30[_0x5dbf('0x4d')][_0x5dbf('0x24')]({'plain':!![]});if(!_0x307a00)throw new Error(_0x5dbf('0x4e'));if(_0x307a00[_0x5dbf('0x4f')]==='user'){var _0x3f38a0=_0x21f477[_0x5dbf('0x24')]({'plain':!![]});var _0x2927a3=_0x5dbf('0x50');return db[_0x5dbf('0x51')][_0x5dbf('0x52')]({'where':{'name':_0x2927a3,'userProfileId':_0x307a00[_0x5dbf('0x53')]},'raw':!![]})['then'](function(_0x1b0b13){if(_0x1b0b13&&_0x1b0b13['autoAssociation']===0x0){return db[_0x5dbf('0x26')][_0x5dbf('0x4b')]({'name':_0x3f38a0[_0x5dbf('0x2a')],'resourceId':_0x3f38a0['id'],'type':_0x5dbf('0x25'),'sectionId':_0x1b0b13['id']},{})[_0x5dbf('0x22')](function(){return _0x21f477;});}else{return _0x21f477;}})[_0x5dbf('0x54')](function(_0x353d0f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x353d0f);throw _0x353d0f;});}return _0x21f477;})['then'](respondWithResult(_0x17a1c0,0xc9))[_0x5dbf('0x54')](handleError(_0x17a1c0,null));};exports[_0x5dbf('0x55')]=function(_0x36a787,_0x56c8b2){if(_0x36a787['body']['id']){delete _0x36a787[_0x5dbf('0x4c')]['id'];}return db[_0x5dbf('0x2e')][_0x5dbf('0x52')]({'where':{'id':_0x36a787['params']['id']}})[_0x5dbf('0x22')](handleEntityNotFound(_0x56c8b2,null))['then'](saveUpdates(_0x36a787[_0x5dbf('0x4c')],null))[_0x5dbf('0x22')](respondWithResult(_0x56c8b2,null))[_0x5dbf('0x54')](handleError(_0x56c8b2,null));};exports['destroy']=function(_0x55fd51,_0x1b316d){return db[_0x5dbf('0x2e')][_0x5dbf('0x52')]({'where':{'id':_0x55fd51[_0x5dbf('0x49')]['id']}})['then'](handleEntityNotFound(_0x1b316d,null))[_0x5dbf('0x22')](removeEntity(_0x1b316d,null))[_0x5dbf('0x54')](handleError(_0x1b316d,null));};exports['preview']=function(_0x5485f3,_0x19ec03){var _0x14bdb1=0xa;var _0x197e8c=[_0x5dbf('0x56'),_0x5dbf('0x57'),_0x5dbf('0x58'),'cross_join'];var _0x4107f1={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x5dbf('0x59'),'MIN':'MIN(%s)','AVG':_0x5dbf('0x5a'),'GROUP_CONCAT':_0x5dbf('0x5b'),'GROUP_CONCAT ASC':_0x5dbf('0x5c'),'GROUP_CONCAT DESC':_0x5dbf('0x5d')};var _0x461ffb={'SEC_TO_TIME':_0x5dbf('0x5e'),'DATE':_0x5dbf('0x5f'),'HOUR':_0x5dbf('0x60'),'ROUND':_0x5dbf('0x61'),'UNIX_TIMESTAMP':_0x5dbf('0x62')};var _0x3a84c2=function(_0x2ca889){return!_[_0x5dbf('0x63')]([_0x5dbf('0x64'),_0x5dbf('0x65'),'IS\x20EMPTY',_0x5dbf('0x66')],_0x2ca889);};var _0x553be4=function(_0xb0a9bf){if(!_0xb0a9bf||!_0xb0a9bf[_0x5dbf('0x67')][_0x5dbf('0x38')]){return'';}for(var _0x110224='(',_0x5a975a=0x0;_0x5a975a<_0xb0a9bf[_0x5dbf('0x67')][_0x5dbf('0x38')];_0x5a975a+=0x1){_0x5a975a>0x0&&(_0x110224+='\x20'+_0xb0a9bf[_0x5dbf('0x68')]+'\x20');_0x110224+=_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x69')]?_0x553be4(_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a]['group']):_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6a')]+'\x20'+_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6b')]+(_0x3a84c2(_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6b')])?'\x20'+_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6c')]:'');}return _0x110224+')';};var _0x12d69b={'where':{'id':_0x5485f3[_0x5dbf('0x49')]['id']}},_0x3b53da,_0x13c8ab,_0x2997a8,_0x5d7a37,_0x52109d;_0x12d69b=_[_0x5dbf('0x41')]({},_0x12d69b,_0x5485f3[_0x5dbf('0x4a')]);return db[_0x5dbf('0x2e')][_0x5dbf('0x52')](_0x12d69b)[_0x5dbf('0x22')](function(_0x1b42cf){if(_0x1b42cf){_0x3b53da=_0x1b42cf;return _0x1b42cf[_0x5dbf('0x6d')]();}return null;})[_0x5dbf('0x22')](function(_0x57c568){if(_0x57c568){if(!_0x57c568['length']){throw new db['Sequelize']['ValidationErrorItem'](_0x5dbf('0x6e'),0x193);}_0x13c8ab=_0x57c568;return db[_0x5dbf('0x6f')][_0x5dbf('0x46')]({'raw':!![]});}return null;})[_0x5dbf('0x22')](function(_0x29c4d9){if(_0x29c4d9){_0x2997a8=_[_0x5dbf('0x70')](_0x29c4d9,'id');var _0x5331ff;var _0x5bb990=squel[_0x5dbf('0x71')]();_0x5bb990[_0x5dbf('0x72')](_0x3b53da['table']);for(var _0x1728b9=0x0;_0x1728b9<_0x13c8ab[_0x5dbf('0x38')];_0x1728b9+=0x1){_0x5331ff=_0x13c8ab[_0x1728b9][_0x5dbf('0x73')]?_0x2997a8[_0x13c8ab[_0x1728b9][_0x5dbf('0x73')]]['metric']:_0x13c8ab[_0x1728b9][_0x5dbf('0x6a')];_0x5331ff=_0x13c8ab[_0x1728b9][_0x5dbf('0x74')]?_[_0x5dbf('0x75')](_0x4107f1[_0x13c8ab[_0x1728b9][_0x5dbf('0x74')]],'%s',_0x5331ff):_0x5331ff;_0x5331ff=_0x13c8ab[_0x1728b9][_0x5dbf('0x76')]?_['replace'](_0x461ffb[_0x13c8ab[_0x1728b9][_0x5dbf('0x76')]],'%s',_0x5331ff):_0x5331ff;if(_0x13c8ab[_0x1728b9][_0x5dbf('0x77')]){_0x5bb990[_0x5dbf('0x69')](_0x5331ff);}_0x13c8ab[_0x1728b9][_0x5dbf('0x78')]&&_0x5bb990['order'](_0x5331ff,_0x13c8ab[_0x1728b9][_0x5dbf('0x78')]==='DESC'?![]:!![]);_0x5bb990[_0x5dbf('0x6a')](_0x5331ff,_0x13c8ab[_0x1728b9][_0x5dbf('0x79')]||_0x5331ff);}if(_0x3b53da[_0x5dbf('0x7a')]){_0x3b53da['joins']=JSON[_0x5dbf('0x7b')](_0x3b53da[_0x5dbf('0x7a')]);for(var _0x4166ce=0x0;_0x4166ce<_0x3b53da[_0x5dbf('0x7a')]['length'];_0x4166ce+=0x1){if(_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x42')]&&_[_0x5dbf('0x63')](_0x197e8c,_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x42')])&&_0x3b53da[_0x5dbf('0x7a')][_0x4166ce]['parentKey']&&_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7c')]&&_0x3b53da['joins'][_0x4166ce][_0x5dbf('0x7d')]){_0x5bb990[_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x42')]](_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7c')],null,util[_0x5dbf('0x76')](_0x5dbf('0x7e'),_0x3b53da[_0x5dbf('0x7f')],_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x80')],_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7c')],_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7d')]));}}}if(_0x3b53da[_0x5dbf('0x81')]){_0x3b53da[_0x5dbf('0x81')]=JSON['parse'](_0x3b53da[_0x5dbf('0x81')]);_0x5bb990[_0x5dbf('0x3e')](_0x553be4(_0x3b53da[_0x5dbf('0x81')][_0x5dbf('0x69')]));}_0x52109d=_0x5bb990['clone']();_0x5bb990[_0x5dbf('0x1b')](_0x14bdb1);_0x5bb990[_0x5dbf('0x3b')](0x0);logger[_0x5dbf('0x82')](_0x5dbf('0x83'),_0x5bb990[_0x5dbf('0x84')]());return dbH['sequelize'][_0x5dbf('0x32')](_0x5bb990[_0x5dbf('0x84')](),{'type':dbH['sequelize']['QueryTypes'][_0x5dbf('0x85')]});}})[_0x5dbf('0x22')](respondWithResult(_0x19ec03,null))[_0x5dbf('0x54')](handleError(_0x19ec03,null));};function runReport(_0x8ca7de,_0x14b21b,_0x23ec75){var _0x22339b=_0x14b21b['name'];var _0x310078=0xa;var _0x3b01c0=[_0x5dbf('0x56'),_0x5dbf('0x57'),_0x5dbf('0x58'),_0x5dbf('0x86')];var _0x4cceb1={'SUM':_0x5dbf('0x87'),'COUNT':_0x5dbf('0x88'),'COUNT DISTINCT':_0x5dbf('0x89'),'MAX':_0x5dbf('0x59'),'MIN':_0x5dbf('0x8a'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x5dbf('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5924d2={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x5dbf('0x5f'),'HOUR':_0x5dbf('0x60'),'ROUND':_0x5dbf('0x61'),'UNIX_TIMESTAMP':_0x5dbf('0x62')};var _0x4333db=function(_0x4cb92d){return!_['includes']([_0x5dbf('0x64'),'IS\x20NOT\x20NULL',_0x5dbf('0x8b'),_0x5dbf('0x66')],_0x4cb92d);};var _0x541241=function(_0x3c7eaa){if(!_0x3c7eaa||!_0x3c7eaa['rules'][_0x5dbf('0x38')]){return'';}for(var _0x24d90a='(',_0xa3e94f=0x0;_0xa3e94f<_0x3c7eaa[_0x5dbf('0x67')][_0x5dbf('0x38')];_0xa3e94f+=0x1){_0xa3e94f>0x0&&(_0x24d90a+='\x20'+_0x3c7eaa['operator']+'\x20');_0x24d90a+=_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x69')]?_0x541241(_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x69')]):_0x3c7eaa['rules'][_0xa3e94f][_0x5dbf('0x6a')]+'\x20'+_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x6b')]+(_0x4333db(_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x6b')])?'\x20'+_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x6c')]:'');}return _0x24d90a+')';};var _0x334f63={'where':{'id':_0x8ca7de['id']}},_0x5ac29f,_0x533fdd,_0x5bf068,_0x1bd06b,_0x274497;_0x334f63=_['merge']({},_0x334f63,_0x23ec75);return db['AnalyticDefaultReport']['find'](_0x334f63)[_0x5dbf('0x22')](function(_0x20bda9){if(_0x20bda9){_0x5ac29f=_0x20bda9;return _0x20bda9[_0x5dbf('0x6d')]();}return null;})[_0x5dbf('0x22')](function(_0x12757d){if(_0x12757d){if(!_0x12757d[_0x5dbf('0x38')]){throw new db['Sequelize'][(_0x5dbf('0x8c'))](_0x5dbf('0x6e'),0x193);}_0x533fdd=_0x12757d;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x5dbf('0x22')](function(_0x5722b3){if(_0x5722b3){_0x5bf068=_['keyBy'](_0x5722b3,'id');var _0x3a27c4;var _0x3620d2=squel[_0x5dbf('0x71')]();_0x3620d2['from'](_0x5ac29f[_0x5dbf('0x7f')]);for(var _0x447259=0x0;_0x447259<_0x533fdd['length'];_0x447259+=0x1){_0x3a27c4=_0x533fdd[_0x447259][_0x5dbf('0x73')]?_0x5bf068[_0x533fdd[_0x447259][_0x5dbf('0x73')]][_0x5dbf('0x8d')]:_0x533fdd[_0x447259][_0x5dbf('0x6a')];_0x3a27c4=_0x533fdd[_0x447259][_0x5dbf('0x74')]?_[_0x5dbf('0x75')](_0x4cceb1[_0x533fdd[_0x447259][_0x5dbf('0x74')]],'%s',_0x3a27c4):_0x3a27c4;_0x3a27c4=_0x533fdd[_0x447259][_0x5dbf('0x76')]?_['replace'](_0x5924d2[_0x533fdd[_0x447259]['format']],'%s',_0x3a27c4):_0x3a27c4;if(_0x533fdd[_0x447259]['groupBy']){_0x3620d2[_0x5dbf('0x69')](_0x3a27c4);}_0x533fdd[_0x447259][_0x5dbf('0x78')]&&_0x3620d2[_0x5dbf('0x3c')](_0x3a27c4,_0x533fdd[_0x447259][_0x5dbf('0x78')]===_0x5dbf('0x8e')?![]:!![]);_0x3620d2[_0x5dbf('0x6a')](_0x3a27c4,_0x533fdd[_0x447259][_0x5dbf('0x79')]||_0x3a27c4);}if(_0x5ac29f[_0x5dbf('0x7a')]){_0x5ac29f[_0x5dbf('0x7a')]=JSON[_0x5dbf('0x7b')](_0x5ac29f['joins']);for(var _0x2ded2b=0x0;_0x2ded2b<_0x5ac29f[_0x5dbf('0x7a')][_0x5dbf('0x38')];_0x2ded2b+=0x1){if(_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x42')]&&_[_0x5dbf('0x63')](_0x3b01c0,_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x42')])&&_0x5ac29f['joins'][_0x2ded2b]['parentKey']&&_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b]['foreignTable']&&_0x5ac29f['joins'][_0x2ded2b][_0x5dbf('0x7d')]){_0x3620d2[_0x5ac29f['joins'][_0x2ded2b]['type']](_0x5ac29f['joins'][_0x2ded2b]['foreignTable'],null,util[_0x5dbf('0x76')]('%s.%s\x20=\x20%s.%s',_0x5ac29f[_0x5dbf('0x7f')],_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x80')],_0x5ac29f['joins'][_0x2ded2b][_0x5dbf('0x7c')],_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x7d')]));}}}if(_0x5ac29f['conditions']){_0x5ac29f[_0x5dbf('0x81')]=JSON[_0x5dbf('0x7b')](_0x5ac29f[_0x5dbf('0x81')]);_0x3620d2['where'](_0x541241(_0x5ac29f[_0x5dbf('0x81')][_0x5dbf('0x69')]));}_0x274497=_0x3620d2[_0x5dbf('0x8f')]();_0x3620d2['limit'](_0x310078);_0x3620d2[_0x5dbf('0x3b')](0x0);return;}})[_0x5dbf('0x22')](function(){if(_0x14b21b[_0x5dbf('0x90')]==='web'){return null;}var _0x48a8c5=_['merge'](_0x14b21b,{'name':_0x14b21b[_0x5dbf('0x91')]||_0x14b21b[_0x5dbf('0x2a')]||_0x5ac29f[_0x5dbf('0x2a')],'basename':_0x22339b,'savename':util[_0x5dbf('0x76')](_0x5dbf('0x92'),_0x14b21b[_0x5dbf('0x2a')]||_0x5ac29f['name'],require(_0x5dbf('0x93'))[_0x5dbf('0x94')](0x4),_0x14b21b[_0x5dbf('0x90')]||'csv'),'reportId':_0x5ac29f['id'],'reportType':_0x5dbf('0x95')});return db[_0x5dbf('0x96')][_0x5dbf('0x4b')](_0x48a8c5,{'raw':!![]});})[_0x5dbf('0x22')](function(_0x2afbd4){if(_0x5ac29f[_0x5dbf('0x7f')]===_0x5dbf('0x97')){_0x274497['where'](_0x5ac29f[_0x5dbf('0x7f')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x14b21b[_0x5dbf('0x98')],_0x14b21b[_0x5dbf('0x99')]);}else{_0x274497[_0x5dbf('0x3e')](_0x5ac29f['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x14b21b['startDate'],_0x14b21b[_0x5dbf('0x99')]);}if(_0x2afbd4){logger[_0x5dbf('0x9a')]('Run\x20Query:',_0x274497[_0x5dbf('0x84')]());require('child_process')[_0x5dbf('0x9b')](path[_0x5dbf('0x56')](__dirname,_0x5dbf('0x9c'),_0x2afbd4['output']),[_0x2afbd4['id'],_0x274497[_0x5dbf('0x84')](),path[_0x5dbf('0x56')](__dirname,_0x5dbf('0x9d'),_0x2afbd4[_0x5dbf('0x9e')]),_0x22339b]);return _0x2afbd4;}else{var _0x4bc5af=squel[_0x5dbf('0x71')]();_0x4bc5af[_0x5dbf('0x72')]('('+_0x274497['toString']()+')',_0x5dbf('0x9f'));_0x4bc5af['field'](_0x5dbf('0xa0'),_0x5dbf('0x1d'));_0x274497[_0x5dbf('0x1b')](_0x14b21b['limit']||_0x310078);_0x274497[_0x5dbf('0x3b')](_0x14b21b[_0x5dbf('0x3b')]||0x0);return dbH[_0x5dbf('0xa1')][_0x5dbf('0x32')](_0x4bc5af[_0x5dbf('0x84')](),{'type':dbH[_0x5dbf('0xa1')]['QueryTypes'][_0x5dbf('0x85')]})['then'](function(_0x6cfb82){if(!_0x6cfb82[_0x5dbf('0x38')]){_0x1bd06b=0x0;}else{_0x1bd06b=_0x6cfb82[0x0][_0x5dbf('0x1d')]||0x0;}return dbH[_0x5dbf('0xa1')][_0x5dbf('0x32')](_0x274497[_0x5dbf('0x84')](),{'type':dbH['sequelize'][_0x5dbf('0xa2')][_0x5dbf('0x85')]});})[_0x5dbf('0x22')](function(_0x4d68f6){return{'rows':_0x4d68f6||[],'count':_0x1bd06b};});}});}exports[_0x5dbf('0xa3')]=function(_0x47ac95,_0x51b241){return runReport(_0x47ac95[_0x5dbf('0x49')],_0x47ac95[_0x5dbf('0x32')],_0x47ac95[_0x5dbf('0x4a')])[_0x5dbf('0x22')](respondWithResult(_0x51b241,null))[_0x5dbf('0x54')](handleError(_0x51b241,null));};exports['runReport']=runReport;exports['query']=function(_0x4f38a0,_0x144300){var _0x1da1e3=0xa;var _0x25e681=[_0x5dbf('0x56'),_0x5dbf('0x57'),_0x5dbf('0x58'),_0x5dbf('0x86')];var _0x236754={'SUM':'SUM(%s)','COUNT':_0x5dbf('0x88'),'COUNT DISTINCT':_0x5dbf('0x89'),'MAX':_0x5dbf('0x59'),'MIN':_0x5dbf('0x8a'),'AVG':_0x5dbf('0x5a'),'GROUP_CONCAT':_0x5dbf('0x5b'),'GROUP_CONCAT ASC':_0x5dbf('0x5c'),'GROUP_CONCAT DESC':_0x5dbf('0x5d')};var _0x191a16={'SEC_TO_TIME':_0x5dbf('0x5e'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5dbf('0x62')};var _0x51b0df=function(_0x48ea8a){return!_['includes']([_0x5dbf('0x64'),_0x5dbf('0x65'),_0x5dbf('0x8b'),_0x5dbf('0x66')],_0x48ea8a);};var _0x3de263=function(_0x4f8dde){if(!_0x4f8dde||!_0x4f8dde[_0x5dbf('0x67')][_0x5dbf('0x38')]){return'';}for(var _0x19effa='(',_0x29177e=0x0;_0x29177e<_0x4f8dde[_0x5dbf('0x67')]['length'];_0x29177e+=0x1){_0x29177e>0x0&&(_0x19effa+='\x20'+_0x4f8dde[_0x5dbf('0x68')]+'\x20');_0x19effa+=_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x69')]?_0x3de263(_0x4f8dde[_0x5dbf('0x67')][_0x29177e]['group']):_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x6a')]+'\x20'+_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x6b')]+(_0x51b0df(_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x6b')])?'\x20'+_0x4f8dde[_0x5dbf('0x67')][_0x29177e]['value']:'');}return _0x19effa+')';};var _0x4899ac={'where':{'id':_0x4f38a0['params']['id']}},_0x51864c,_0x4562a4,_0x240304,_0x5df275,_0xc588a2;_0x4899ac=_[_0x5dbf('0x41')]({},_0x4899ac,_0x4f38a0['options']);return db[_0x5dbf('0x2e')][_0x5dbf('0x52')](_0x4899ac)[_0x5dbf('0x22')](function(_0x2eafe0){if(_0x2eafe0){_0x51864c=_0x2eafe0;return _0x2eafe0[_0x5dbf('0x6d')]();}return null;})[_0x5dbf('0x22')](function(_0x414859){if(_0x414859){if(!_0x414859['length']){throw new db[(_0x5dbf('0xa4'))][(_0x5dbf('0x8c'))](_0x5dbf('0x6e'),0x193);}_0x4562a4=_0x414859;return db[_0x5dbf('0x6f')][_0x5dbf('0x46')]({'raw':!![]});}return null;})[_0x5dbf('0x22')](function(_0x153401){if(_0x153401){_0x240304=_[_0x5dbf('0x70')](_0x153401,'id');var _0xbe0ca0;var _0x521c72=squel[_0x5dbf('0x71')]();_0x521c72[_0x5dbf('0x72')](_0x51864c[_0x5dbf('0x7f')]);for(var _0x6b4262=0x0;_0x6b4262<_0x4562a4[_0x5dbf('0x38')];_0x6b4262+=0x1){_0xbe0ca0=_0x4562a4[_0x6b4262][_0x5dbf('0x73')]?_0x240304[_0x4562a4[_0x6b4262][_0x5dbf('0x73')]][_0x5dbf('0x8d')]:_0x4562a4[_0x6b4262][_0x5dbf('0x6a')];_0xbe0ca0=_0x4562a4[_0x6b4262][_0x5dbf('0x74')]?_[_0x5dbf('0x75')](_0x236754[_0x4562a4[_0x6b4262][_0x5dbf('0x74')]],'%s',_0xbe0ca0):_0xbe0ca0;_0xbe0ca0=_0x4562a4[_0x6b4262][_0x5dbf('0x76')]?_[_0x5dbf('0x75')](_0x191a16[_0x4562a4[_0x6b4262][_0x5dbf('0x76')]],'%s',_0xbe0ca0):_0xbe0ca0;if(_0x4562a4[_0x6b4262][_0x5dbf('0x77')]){_0x521c72[_0x5dbf('0x69')](_0xbe0ca0);}_0x4562a4[_0x6b4262][_0x5dbf('0x78')]&&_0x521c72[_0x5dbf('0x3c')](_0xbe0ca0,_0x4562a4[_0x6b4262]['orderBy']===_0x5dbf('0x8e')?![]:!![]);_0x521c72['field'](_0xbe0ca0,_0x4562a4[_0x6b4262][_0x5dbf('0x79')]||_0xbe0ca0);}if(_0x51864c['joins']){_0x51864c[_0x5dbf('0x7a')]=JSON['parse'](_0x51864c[_0x5dbf('0x7a')]);for(var _0x417869=0x0;_0x417869<_0x51864c[_0x5dbf('0x7a')]['length'];_0x417869+=0x1){if(_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x42')]&&_[_0x5dbf('0x63')](_0x25e681,_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x42')])&&_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x80')]&&_0x51864c['joins'][_0x417869][_0x5dbf('0x7c')]&&_0x51864c[_0x5dbf('0x7a')][_0x417869]['foreignKey']){_0x521c72[_0x51864c[_0x5dbf('0x7a')][_0x417869]['type']](_0x51864c['joins'][_0x417869][_0x5dbf('0x7c')],null,util[_0x5dbf('0x76')]('%s.%s\x20=\x20%s.%s',_0x51864c[_0x5dbf('0x7f')],_0x51864c['joins'][_0x417869]['parentKey'],_0x51864c[_0x5dbf('0x7a')][_0x417869]['foreignTable'],_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x7d')]));}}}if(_0x51864c[_0x5dbf('0x81')]){_0x51864c[_0x5dbf('0x81')]=JSON[_0x5dbf('0x7b')](_0x51864c[_0x5dbf('0x81')]);_0x521c72[_0x5dbf('0x3e')](_0x3de263(_0x51864c[_0x5dbf('0x81')][_0x5dbf('0x69')]));}_0xc588a2=_0x521c72[_0x5dbf('0x8f')]();_0x521c72[_0x5dbf('0x1b')](_0x1da1e3);_0x521c72[_0x5dbf('0x3b')](0x0);logger[_0x5dbf('0x82')]('Limited\x20Query:',_0x521c72[_0x5dbf('0x84')]());return dbH[_0x5dbf('0xa1')][_0x5dbf('0x32')](_0x521c72[_0x5dbf('0x84')](),{'type':dbH[_0x5dbf('0xa1')][_0x5dbf('0xa2')]['SELECT']});}})[_0x5dbf('0x22')](function(){return{'sql':_0xc588a2[_0x5dbf('0x84')]()};})[_0x5dbf('0x22')](respondWithResult(_0x144300,null))[_0x5dbf('0x54')](handleError(_0x144300,null));};
\ No newline at end of file
index 482b604..d618152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x401b=['path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','lodash','../../config/logger','request-promise'];(function(_0x1e5557,_0x2689bb){var _0x41339d=function(_0x597afc){while(--_0x597afc){_0x1e5557['push'](_0x1e5557['shift']());}};_0x41339d(++_0x2689bb);}(_0x401b,0x1da));var _0xb401=function(_0x258414,_0x4ad26e){_0x258414=_0x258414-0x0;var _0x21fcbb=_0x401b[_0x258414];return _0x21fcbb;};'use strict';var _=require(_0xb401('0x0'));var util=require('util');var logger=require(_0xb401('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb401('0x2'));var fs=require('fs');var path=require(_0xb401('0x3'));var rimraf=require(_0xb401('0x4'));var config=require(_0xb401('0x5'));var attributes=require(_0xb401('0x6'));module[_0xb401('0x7')]=function(_0x4ec84b,_0x159323){return _0x4ec84b['define'](_0xb401('0x8'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x277c=['request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api','moment'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x277c,0xe5));var _0xc277=function(_0x2f0bdf,_0x588720){_0x2f0bdf=_0x2f0bdf-0x0;var _0xdb82b2=_0x277c[_0x2f0bdf];return _0xdb82b2;};'use strict';var _=require(_0xc277('0x0'));var util=require(_0xc277('0x1'));var logger=require(_0xc277('0x2'))(_0xc277('0x3'));var moment=require(_0xc277('0x4'));var BPromise=require('bluebird');var rp=require(_0xc277('0x5'));var fs=require('fs');var path=require(_0xc277('0x6'));var rimraf=require(_0xc277('0x7'));var config=require(_0xc277('0x8'));var attributes=require(_0xc277('0x9'));module['exports']=function(_0x140593,_0x35365d){return _0x140593[_0xc277('0xa')](_0xc277('0xb'),attributes,{'tableName':_0xc277('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4083a9e..fe348f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54fb=['client','http','request','then','info','request\x20sent','debug','stringify','code','error','message','AnalyticDefaultReport,\x20%s,\x20%s','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x3b8dc1,_0x260e5b){var _0x3c09c1=function(_0x91464b){while(--_0x91464b){_0x3b8dc1['push'](_0x3b8dc1['shift']());}};_0x3c09c1(++_0x260e5b);}(_0x54fb,0x1b1));var _0xb54f=function(_0x5c0e45,_0x3fb6cd){_0x5c0e45=_0x5c0e45-0x0;var _0x1e3157=_0x54fb[_0x5c0e45];return _0x1e3157;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb54f('0x0'));var BPromise=require(_0xb54f('0x1'));var rs=require(_0xb54f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb54f('0x3'))['db'];var utils=require(_0xb54f('0x4'));var logger=require(_0xb54f('0x5'))(_0xb54f('0x6'));var config=require('../../config/environment');var jayson=require(_0xb54f('0x7'));var client=jayson[_0xb54f('0x8')][_0xb54f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x576b30,_0x5bf87b,_0x3b0fe9){return new BPromise(function(_0x1a618a,_0x5c0953){return client[_0xb54f('0xa')](_0x576b30,_0x3b0fe9)[_0xb54f('0xb')](function(_0x4636f9){logger[_0xb54f('0xc')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x5bf87b,_0xb54f('0xd'));logger[_0xb54f('0xe')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x5bf87b,_0xb54f('0xd'),JSON[_0xb54f('0xf')](_0x4636f9));if(_0x4636f9['error']){if(_0x4636f9['error'][_0xb54f('0x10')]===0x1f4){logger[_0xb54f('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x5bf87b,_0x4636f9[_0xb54f('0x11')]['message']);return _0x5c0953(_0x4636f9[_0xb54f('0x11')][_0xb54f('0x12')]);}logger[_0xb54f('0x11')](_0xb54f('0x13'),_0x5bf87b,_0x4636f9['error'][_0xb54f('0x12')]);return _0x1a618a(_0x4636f9[_0xb54f('0x11')][_0xb54f('0x12')]);}else{logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x5bf87b,'request\x20sent');_0x1a618a(_0x4636f9['result'][_0xb54f('0x12')]);}})[_0xb54f('0x14')](function(_0x339a0e){logger['error'](_0xb54f('0x13'),_0x5bf87b,_0x339a0e);_0x5c0953(_0x339a0e);});});}
\ No newline at end of file
+var _0x69d6=['lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','code','AnalyticDefaultReport,\x20%s,\x20%s','message','result','catch'];(function(_0xed3dd7,_0x5e9b76){var _0x513cf3=function(_0x10b6e2){while(--_0x10b6e2){_0xed3dd7['push'](_0xed3dd7['shift']());}};_0x513cf3(++_0x5e9b76);}(_0x69d6,0x1a4));var _0x669d=function(_0x559ba1,_0x559c23){_0x559ba1=_0x559ba1-0x0;var _0x231b83=_0x69d6[_0x559ba1];return _0x231b83;};'use strict';var _=require(_0x669d('0x0'));var util=require('util');var moment=require(_0x669d('0x1'));var BPromise=require(_0x669d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x669d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x669d('0x4'));var logger=require(_0x669d('0x5'))('rpc');var config=require(_0x669d('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x669d('0x7')][_0x669d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2804e2,_0x2ed237,_0x498bb6){return new BPromise(function(_0x28e8a2,_0x2fb01d){return client[_0x669d('0x9')](_0x2804e2,_0x498bb6)[_0x669d('0xa')](function(_0x2345d0){logger[_0x669d('0xb')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2ed237,_0x669d('0xc'));logger[_0x669d('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x2ed237,_0x669d('0xc'),JSON[_0x669d('0xe')](_0x2345d0));if(_0x2345d0[_0x669d('0xf')]){if(_0x2345d0['error'][_0x669d('0x10')]===0x1f4){logger['error'](_0x669d('0x11'),_0x2ed237,_0x2345d0[_0x669d('0xf')][_0x669d('0x12')]);return _0x2fb01d(_0x2345d0[_0x669d('0xf')][_0x669d('0x12')]);}logger['error'](_0x669d('0x11'),_0x2ed237,_0x2345d0[_0x669d('0xf')][_0x669d('0x12')]);return _0x28e8a2(_0x2345d0[_0x669d('0xf')][_0x669d('0x12')]);}else{logger['info'](_0x669d('0x11'),_0x2ed237,_0x669d('0xc'));_0x28e8a2(_0x2345d0[_0x669d('0x13')]['message']);}})[_0x669d('0x14')](function(_0x28d6a9){logger[_0x669d('0xf')](_0x669d('0x11'),_0x2ed237,_0x28d6a9);_0x2fb01d(_0x28d6a9);});});}
\ No newline at end of file
index afc65cd..8c47172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d8e=['preview','/:id/run','run','/:id/query','query','post','create','put','/:id','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id/preview'];(function(_0x94c83a,_0x2a9763){var _0x9a81e8=function(_0x5640ac){while(--_0x5640ac){_0x94c83a['push'](_0x94c83a['shift']());}};_0x9a81e8(++_0x2a9763);}(_0x0d8e,0x1e6));var _0xe0d8=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0d8e[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0xe0d8('0x0'));var util=require(_0xe0d8('0x1'));var path=require(_0xe0d8('0x2'));var timeout=require(_0xe0d8('0x3'));var express=require(_0xe0d8('0x4'));var router=express[_0xe0d8('0x5')]();var fs_extra=require(_0xe0d8('0x6'));var auth=require(_0xe0d8('0x7'));var interaction=require(_0xe0d8('0x8'));var config=require('../../config/environment');var controller=require(_0xe0d8('0x9'));router[_0xe0d8('0xa')]('/',auth[_0xe0d8('0xb')](),controller[_0xe0d8('0xc')]);router[_0xe0d8('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe0d8('0xa')](_0xe0d8('0xd'),auth[_0xe0d8('0xb')](),controller[_0xe0d8('0xe')]);router['get'](_0xe0d8('0xf'),auth['isAuthenticated'](),controller[_0xe0d8('0x10')]);router[_0xe0d8('0xa')](_0xe0d8('0x11'),auth[_0xe0d8('0xb')](),controller[_0xe0d8('0x12')]);router[_0xe0d8('0x13')]('/',auth[_0xe0d8('0xb')](),controller[_0xe0d8('0x14')]);router[_0xe0d8('0x15')](_0xe0d8('0x16'),auth[_0xe0d8('0xb')](),controller[_0xe0d8('0x17')]);router[_0xe0d8('0x18')]('/:id',auth[_0xe0d8('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x51ad=['destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','preview','run','/:id/query','query','post','create','put','update','delete'];(function(_0x4ad3e1,_0x1aaaff){var _0x52599f=function(_0x3d8516){while(--_0x3d8516){_0x4ad3e1['push'](_0x4ad3e1['shift']());}};_0x52599f(++_0x1aaaff);}(_0x51ad,0x19f));var _0xd51a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x51ad[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xd51a('0x0'));var util=require(_0xd51a('0x1'));var path=require('path');var timeout=require(_0xd51a('0x2'));var express=require(_0xd51a('0x3'));var router=express[_0xd51a('0x4')]();var fs_extra=require(_0xd51a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd51a('0x6'));var config=require(_0xd51a('0x7'));var controller=require('./analyticDefaultReport.controller');router[_0xd51a('0x8')]('/',auth['isAuthenticated'](),controller[_0xd51a('0x9')]);router['get'](_0xd51a('0xa'),auth[_0xd51a('0xb')](),controller[_0xd51a('0xc')]);router[_0xd51a('0x8')]('/:id/preview',auth[_0xd51a('0xb')](),controller[_0xd51a('0xd')]);router[_0xd51a('0x8')]('/:id/run',auth[_0xd51a('0xb')](),controller[_0xd51a('0xe')]);router[_0xd51a('0x8')](_0xd51a('0xf'),auth[_0xd51a('0xb')](),controller[_0xd51a('0x10')]);router[_0xd51a('0x11')]('/',auth['isAuthenticated'](),controller[_0xd51a('0x12')]);router[_0xd51a('0x13')](_0xd51a('0xa'),auth[_0xd51a('0xb')](),controller[_0xd51a('0x14')]);router[_0xd51a('0x15')](_0xd51a('0xa'),auth[_0xd51a('0xb')](),controller[_0xd51a('0x16')]);module['exports']=router;
\ No newline at end of file
index 720856f..750ea9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1728=['csv','pdf','xlsx','Loading','manual','scheduled','INTEGER','UNSIGNED','moment','exports','STRING','ENUM'];(function(_0x21fad2,_0x357864){var _0x448abe=function(_0x3fc3b6){while(--_0x3fc3b6){_0x21fad2['push'](_0x21fad2['shift']());}};_0x448abe(++_0x357864);}(_0x1728,0xf8));var _0x8172=function(_0x560857,_0x5d4564){_0x560857=_0x560857-0x0;var _0x5c48ee=_0x1728[_0x560857];return _0x5c48ee;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8172('0x0'));module[_0x8172('0x1')]={'name':{'type':Sequelize[_0x8172('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x8172('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x8172('0x3')](_0x8172('0x4'),_0x8172('0x5'),_0x8172('0x6')),'allowNull':![],'defaultValue':_0x8172('0x4')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x8172('0x2')],'defaultValue':_0x8172('0x7')},'type':{'type':Sequelize[_0x8172('0x3')](_0x8172('0x8'),_0x8172('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x8172('0xa')](0xb)[_0x8172('0xb')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3c8d=['ENUM','csv','pdf','xlsx','DATE','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','STRING'];(function(_0xc7a203,_0x4306c8){var _0x3654cd=function(_0x38b45d){while(--_0x38b45d){_0xc7a203['push'](_0xc7a203['shift']());}};_0x3654cd(++_0x4306c8);}(_0x3c8d,0xf9));var _0xd3c8=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x3c8d[_0x3ab9ee];return _0x82ee88;};'use strict';var Sequelize=require(_0xd3c8('0x0'));var moment=require(_0xd3c8('0x1'));module['exports']={'name':{'type':Sequelize[_0xd3c8('0x2')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0xd3c8('0x3')](_0xd3c8('0x4'),_0xd3c8('0x5'),_0xd3c8('0x6')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0xd3c8('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0xd3c8('0x7')]},'endDate':{'type':Sequelize[_0xd3c8('0x7')]},'status':{'type':Sequelize[_0xd3c8('0x2')],'defaultValue':'Loading'},'type':{'type':Sequelize['ENUM'](_0xd3c8('0x8'),_0xd3c8('0x9')),'allowNull':![],'defaultValue':_0xd3c8('0x8')},'reportId':{'type':Sequelize[_0xd3c8('0xa')](0xb)[_0xd3c8('0xb')]},'reportType':{'type':Sequelize[_0xd3c8('0x2')]}};
\ No newline at end of file
index 583632e..9d0d854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc35=['toLowerCase','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','get','ExtractedReports','UserProfileResource','destroy','end','error','stack','name','send','AnalyticExtractedReport','fieldName','key','map','query','intersection','attributes','model','fields','length','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','download','basename','output','existsSync','root','savename','ValidationError','Report\x20not\x20found\x20or\x20empty','join','server/files/reports'];(function(_0x5c0fe6,_0x12e229){var _0x17629d=function(_0x514636){while(--_0x514636){_0x5c0fe6['push'](_0x5c0fe6['shift']());}};_0x17629d(++_0x12e229);}(_0xdc35,0x179));var _0x5dc3=function(_0x3ca4b9,_0x514480){_0x3ca4b9=_0x3ca4b9-0x0;var _0x863b19=_0xdc35[_0x3ca4b9];return _0x863b19;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dc3('0x0'));var zipdir=require(_0x5dc3('0x1'));var jsonpatch=require(_0x5dc3('0x2'));var rp=require('request-promise');var moment=require(_0x5dc3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5dc3('0x4'));var util=require(_0x5dc3('0x5'));var path=require(_0x5dc3('0x6'));var sox=require(_0x5dc3('0x7'));var csv=require(_0x5dc3('0x8'));var ejs=require(_0x5dc3('0x9'));var fs=require('fs');var fs_extra=require(_0x5dc3('0xa'));var _=require(_0x5dc3('0xb'));var squel=require(_0x5dc3('0xc'));var crypto=require(_0x5dc3('0xd'));var jsforce=require(_0x5dc3('0xe'));var deskjs=require(_0x5dc3('0xf'));var toCsv=require(_0x5dc3('0x8'));var querystring=require('querystring');var Papa=require(_0x5dc3('0x10'));var Redis=require('ioredis');var authService=require(_0x5dc3('0x11'));var qs=require(_0x5dc3('0x12'));var as=require(_0x5dc3('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5dc3('0x14'));var utils=require(_0x5dc3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x5dc3('0x16'));var db=require(_0x5dc3('0x17'))['db'];function respondWithStatusCode(_0x4d4c51,_0x338422){_0x338422=_0x338422||0xcc;return function(_0x18e5f8){if(_0x18e5f8){return _0x4d4c51[_0x5dc3('0x18')](_0x338422);}return _0x4d4c51[_0x5dc3('0x19')](_0x338422)['end']();};}function respondWithResult(_0x20883e,_0x5bafb5){_0x5bafb5=_0x5bafb5||0xc8;return function(_0x2b6967){if(_0x2b6967){return _0x20883e['status'](_0x5bafb5)[_0x5dc3('0x1a')](_0x2b6967);}};}function respondWithFilteredResult(_0x257a2a,_0x54f9f3){return function(_0x2eae9b){if(_0x2eae9b){var _0x17dfe3=typeof _0x54f9f3['offset']===_0x5dc3('0x1b')&&typeof _0x54f9f3[_0x5dc3('0x1c')]==='undefined';var _0x124ce7=_0x2eae9b[_0x5dc3('0x1d')];var _0x4167a5=_0x17dfe3?0x0:_0x54f9f3['offset'];var _0x47db57=_0x17dfe3?_0x2eae9b['count']:_0x54f9f3[_0x5dc3('0x1e')]+_0x54f9f3[_0x5dc3('0x1c')];var _0x12bce1;if(_0x47db57>=_0x124ce7){_0x47db57=_0x124ce7;_0x12bce1=0xc8;}else{_0x12bce1=0xce;}_0x257a2a[_0x5dc3('0x19')](_0x12bce1);return _0x257a2a[_0x5dc3('0x1f')](_0x5dc3('0x20'),_0x4167a5+'-'+_0x47db57+'/'+_0x124ce7)[_0x5dc3('0x1a')](_0x2eae9b);}return null;};}function patchUpdates(_0x3df379){return function(_0x4eee30){try{jsonpatch[_0x5dc3('0x21')](_0x4eee30,_0x3df379,!![]);}catch(_0x4cdf09){return BPromise['reject'](_0x4cdf09);}return _0x4eee30[_0x5dc3('0x22')]();};}function saveUpdates(_0x26a617,_0x5a1d28){return function(_0x411226){if(_0x411226){return _0x411226[_0x5dc3('0x23')](_0x26a617)[_0x5dc3('0x24')](function(_0xc96226){return _0xc96226;});}return null;};}function removeEntity(_0x2d506d,_0x31e0b7){return function(_0x39907e){if(_0x39907e){return _0x39907e['destroy']()[_0x5dc3('0x24')](function(){var _0x3d6464=_0x39907e[_0x5dc3('0x25')]({'plain':!![]});var _0x59ef3c=_0x5dc3('0x26');return db[_0x5dc3('0x27')][_0x5dc3('0x28')]({'where':{'type':_0x59ef3c,'resourceId':_0x3d6464['id']}})[_0x5dc3('0x24')](function(){return _0x39907e;});})[_0x5dc3('0x24')](function(){_0x2d506d[_0x5dc3('0x19')](0xcc)[_0x5dc3('0x29')]();});}};}function handleEntityNotFound(_0x30de7d,_0x3bc6a7){return function(_0x23d39c){if(!_0x23d39c){_0x30de7d[_0x5dc3('0x18')](0x194);}return _0x23d39c;};}function handleError(_0x5ec01a,_0x351224){_0x351224=_0x351224||0x1f4;return function(_0x425d42){logger[_0x5dc3('0x2a')](_0x425d42[_0x5dc3('0x2b')]);if(_0x425d42[_0x5dc3('0x2c')]){delete _0x425d42['name'];}_0x5ec01a[_0x5dc3('0x19')](_0x351224)[_0x5dc3('0x2d')](_0x425d42);};}exports['index']=function(_0x206108,_0x536fc3){var _0x247fd2={},_0x3bc273={},_0x231e1e={'count':0x0,'rows':[]};var _0x1d9a3c=_['map'](db[_0x5dc3('0x2e')]['rawAttributes'],function(_0x5def9c){return{'name':_0x5def9c[_0x5dc3('0x2f')],'type':_0x5def9c['type'][_0x5dc3('0x30')]};});_0x3bc273['model']=_[_0x5dc3('0x31')](_0x1d9a3c,_0x5dc3('0x2c'));_0x3bc273[_0x5dc3('0x32')]=_['keys'](_0x206108['query']);_0x3bc273['filters']=_[_0x5dc3('0x33')](_0x3bc273['model'],_0x3bc273['query']);_0x247fd2[_0x5dc3('0x34')]=_[_0x5dc3('0x33')](_0x3bc273[_0x5dc3('0x35')],qs['fields'](_0x206108['query'][_0x5dc3('0x36')]));_0x247fd2['attributes']=_0x247fd2[_0x5dc3('0x34')][_0x5dc3('0x37')]?_0x247fd2[_0x5dc3('0x34')]:_0x3bc273[_0x5dc3('0x35')];if(!_0x206108[_0x5dc3('0x32')]['hasOwnProperty']('nolimit')){_0x247fd2[_0x5dc3('0x1c')]=qs[_0x5dc3('0x1c')](_0x206108['query'][_0x5dc3('0x1c')]);_0x247fd2['offset']=qs[_0x5dc3('0x1e')](_0x206108['query']['offset']);}_0x247fd2[_0x5dc3('0x38')]=qs[_0x5dc3('0x39')](_0x206108[_0x5dc3('0x32')][_0x5dc3('0x39')]);_0x247fd2[_0x5dc3('0x3a')]=qs[_0x5dc3('0x3b')](_[_0x5dc3('0x3c')](_0x206108['query'],_0x3bc273[_0x5dc3('0x3b')]),_0x1d9a3c);if(_0x206108[_0x5dc3('0x32')][_0x5dc3('0x3d')]){_0x247fd2[_0x5dc3('0x3a')]=_[_0x5dc3('0x3e')](_0x247fd2['where'],{'$or':_[_0x5dc3('0x31')](_0x1d9a3c,function(_0xc78d9a){if(_0xc78d9a[_0x5dc3('0x3f')]!==_0x5dc3('0x40')){var _0x31d10d={};_0x31d10d[_0xc78d9a[_0x5dc3('0x2c')]]={'$like':'%'+_0x206108[_0x5dc3('0x32')][_0x5dc3('0x3d')]+'%'};return _0x31d10d;}})});}_0x247fd2=_[_0x5dc3('0x3e')]({},_0x247fd2,_0x206108[_0x5dc3('0x41')]);var _0x567215={'where':_0x247fd2[_0x5dc3('0x3a')]};return db[_0x5dc3('0x2e')][_0x5dc3('0x1d')](_0x567215)[_0x5dc3('0x24')](function(_0x32c38b){_0x231e1e[_0x5dc3('0x1d')]=_0x32c38b;if(_0x206108['query'][_0x5dc3('0x42')]){_0x247fd2[_0x5dc3('0x43')]=[{'all':!![]}];}return db[_0x5dc3('0x2e')][_0x5dc3('0x44')](_0x247fd2);})[_0x5dc3('0x24')](function(_0x1bf578){_0x231e1e[_0x5dc3('0x45')]=_0x1bf578;return _0x231e1e;})[_0x5dc3('0x24')](respondWithFilteredResult(_0x536fc3,_0x247fd2))[_0x5dc3('0x46')](handleError(_0x536fc3,null));};exports[_0x5dc3('0x47')]=function(_0x5774ea,_0x538adf){var _0x54bc02={'raw':!![],'where':{'id':_0x5774ea['params']['id']}},_0x473eb2={};_0x473eb2['model']=_['keys'](db['AnalyticExtractedReport'][_0x5dc3('0x48')]);_0x473eb2['query']=_['keys'](_0x5774ea[_0x5dc3('0x32')]);_0x473eb2[_0x5dc3('0x3b')]=_['intersection'](_0x473eb2[_0x5dc3('0x35')],_0x473eb2['query']);_0x54bc02['attributes']=_[_0x5dc3('0x33')](_0x473eb2[_0x5dc3('0x35')],qs[_0x5dc3('0x36')](_0x5774ea[_0x5dc3('0x32')][_0x5dc3('0x36')]));_0x54bc02['attributes']=_0x54bc02[_0x5dc3('0x34')]['length']?_0x54bc02[_0x5dc3('0x34')]:_0x473eb2[_0x5dc3('0x35')];if(_0x5774ea[_0x5dc3('0x32')][_0x5dc3('0x42')]){_0x54bc02[_0x5dc3('0x43')]=[{'all':!![]}];}_0x54bc02=_[_0x5dc3('0x3e')]({},_0x54bc02,_0x5774ea[_0x5dc3('0x41')]);return db['AnalyticExtractedReport'][_0x5dc3('0x49')](_0x54bc02)[_0x5dc3('0x24')](handleEntityNotFound(_0x538adf,null))[_0x5dc3('0x24')](respondWithResult(_0x538adf,null))[_0x5dc3('0x46')](handleError(_0x538adf,null));};exports[_0x5dc3('0x4a')]=function(_0x4707c2,_0x1cf9d8){return db[_0x5dc3('0x2e')][_0x5dc3('0x4a')](_0x4707c2[_0x5dc3('0x4b')],{})[_0x5dc3('0x24')](function(_0x5957dc){var _0x1bd3a7=_0x4707c2[_0x5dc3('0x4c')][_0x5dc3('0x25')]({'plain':!![]});if(!_0x1bd3a7)throw new Error(_0x5dc3('0x4d'));if(_0x1bd3a7[_0x5dc3('0x4e')]===_0x5dc3('0x4c')){var _0x26690d=_0x5957dc['get']({'plain':!![]});var _0x39c442='ExtractedReports';return db[_0x5dc3('0x4f')]['find']({'where':{'name':_0x39c442,'userProfileId':_0x1bd3a7[_0x5dc3('0x50')]},'raw':!![]})[_0x5dc3('0x24')](function(_0x66938d){if(_0x66938d&&_0x66938d['autoAssociation']===0x0){return db[_0x5dc3('0x27')][_0x5dc3('0x4a')]({'name':_0x26690d[_0x5dc3('0x2c')],'resourceId':_0x26690d['id'],'type':_0x66938d[_0x5dc3('0x2c')],'sectionId':_0x66938d['id']},{})[_0x5dc3('0x24')](function(){return _0x5957dc;});}else{return _0x5957dc;}})[_0x5dc3('0x46')](function(_0x2b65d0){logger[_0x5dc3('0x2a')](_0x5dc3('0x51'),_0x2b65d0);throw _0x2b65d0;});}return _0x5957dc;})[_0x5dc3('0x24')](respondWithResult(_0x1cf9d8,0xc9))[_0x5dc3('0x46')](handleError(_0x1cf9d8,null));};exports[_0x5dc3('0x23')]=function(_0x4db227,_0x97a35){if(_0x4db227[_0x5dc3('0x4b')]['id']){delete _0x4db227[_0x5dc3('0x4b')]['id'];}return db['AnalyticExtractedReport'][_0x5dc3('0x49')]({'where':{'id':_0x4db227['params']['id']}})[_0x5dc3('0x24')](handleEntityNotFound(_0x97a35,null))['then'](saveUpdates(_0x4db227[_0x5dc3('0x4b')],null))[_0x5dc3('0x24')](respondWithResult(_0x97a35,null))[_0x5dc3('0x46')](handleError(_0x97a35,null));};exports['destroy']=function(_0xb67fff,_0x3291ce){return db['AnalyticExtractedReport'][_0x5dc3('0x49')]({'where':{'id':_0xb67fff[_0x5dc3('0x52')]['id']}})['then'](handleEntityNotFound(_0x3291ce,null))['then'](removeEntity(_0x3291ce,null))[_0x5dc3('0x46')](handleError(_0x3291ce,null));};exports[_0x5dc3('0x53')]=function(_0x15ad36,_0x253d3c,_0x4da7d2){return db['AnalyticExtractedReport'][_0x5dc3('0x49')]({'where':{'id':_0x15ad36[_0x5dc3('0x52')]['id']},'attributes':['name',_0x5dc3('0x54'),'savename',_0x5dc3('0x55')],'raw':!![]})['then'](handleEntityNotFound(_0x253d3c,null))[_0x5dc3('0x24')](function(_0x2e0d1c){if(_0x2e0d1c){if(!fs[_0x5dc3('0x56')](path['join'](config[_0x5dc3('0x57')],'server/files/reports',_0x2e0d1c[_0x5dc3('0x58')]))){throw new db['Sequelize'][(_0x5dc3('0x59'))](_0x5dc3('0x5a'));}if(_0x15ad36[_0x5dc3('0x32')]['exists']){return _0x253d3c[_0x5dc3('0x18')](0xc8);}return _0x253d3c['download'](path[_0x5dc3('0x5b')](config['root'],_0x5dc3('0x5c'),_0x2e0d1c[_0x5dc3('0x58')]),util['format']('%s.%s',_0x2e0d1c[_0x5dc3('0x54')]||_0x2e0d1c[_0x5dc3('0x2c')],_0x2e0d1c[_0x5dc3('0x55')][_0x5dc3('0x5d')]()));}})[_0x5dc3('0x46')](handleError(_0x253d3c,null));};
\ No newline at end of file
+var _0x343a=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','toLowerCase','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','get','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','include','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x343a,0x195));var _0xa343=function(_0x16bc84,_0x2961da){_0x16bc84=_0x16bc84-0x0;var _0x335225=_0x343a[_0x16bc84];return _0x335225;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa343('0x0'));var rp=require('request-promise');var moment=require(_0xa343('0x1'));var BPromise=require(_0xa343('0x2'));var Mustache=require(_0xa343('0x3'));var util=require('util');var path=require(_0xa343('0x4'));var sox=require('sox');var csv=require(_0xa343('0x5'));var ejs=require(_0xa343('0x6'));var fs=require('fs');var fs_extra=require(_0xa343('0x7'));var _=require(_0xa343('0x8'));var squel=require(_0xa343('0x9'));var crypto=require(_0xa343('0xa'));var jsforce=require(_0xa343('0xb'));var deskjs=require(_0xa343('0xc'));var toCsv=require(_0xa343('0x5'));var querystring=require(_0xa343('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa343('0xe'));var qs=require(_0xa343('0xf'));var as=require(_0xa343('0x10'));var hardwareService=require(_0xa343('0x11'));var logger=require(_0xa343('0x12'))(_0xa343('0x13'));var utils=require(_0xa343('0x14'));var config=require(_0xa343('0x15'));var licenseUtil=require(_0xa343('0x16'));var db=require(_0xa343('0x17'))['db'];function respondWithStatusCode(_0x2e1262,_0x105727){_0x105727=_0x105727||0xcc;return function(_0x4cd4c1){if(_0x4cd4c1){return _0x2e1262['sendStatus'](_0x105727);}return _0x2e1262[_0xa343('0x18')](_0x105727)[_0xa343('0x19')]();};}function respondWithResult(_0x412c80,_0x2901be){_0x2901be=_0x2901be||0xc8;return function(_0x380958){if(_0x380958){return _0x412c80['status'](_0x2901be)[_0xa343('0x1a')](_0x380958);}};}function respondWithFilteredResult(_0x2135d2,_0x93a66b){return function(_0x4f67cb){if(_0x4f67cb){var _0x42fbeb=typeof _0x93a66b[_0xa343('0x1b')]==='undefined'&&typeof _0x93a66b[_0xa343('0x1c')]===_0xa343('0x1d');var _0x51ea1b=_0x4f67cb[_0xa343('0x1e')];var _0x17353e=_0x42fbeb?0x0:_0x93a66b[_0xa343('0x1b')];var _0x49a64c=_0x42fbeb?_0x4f67cb[_0xa343('0x1e')]:_0x93a66b[_0xa343('0x1b')]+_0x93a66b['limit'];var _0x8cfe2c;if(_0x49a64c>=_0x51ea1b){_0x49a64c=_0x51ea1b;_0x8cfe2c=0xc8;}else{_0x8cfe2c=0xce;}_0x2135d2[_0xa343('0x18')](_0x8cfe2c);return _0x2135d2[_0xa343('0x1f')](_0xa343('0x20'),_0x17353e+'-'+_0x49a64c+'/'+_0x51ea1b)[_0xa343('0x1a')](_0x4f67cb);}return null;};}function patchUpdates(_0x43ca82){return function(_0x12cd1d){try{jsonpatch['apply'](_0x12cd1d,_0x43ca82,!![]);}catch(_0x31967b){return BPromise[_0xa343('0x21')](_0x31967b);}return _0x12cd1d[_0xa343('0x22')]();};}function saveUpdates(_0x11abe1,_0x41c4f2){return function(_0x30dea2){if(_0x30dea2){return _0x30dea2[_0xa343('0x23')](_0x11abe1)[_0xa343('0x24')](function(_0x463dec){return _0x463dec;});}return null;};}function removeEntity(_0x52530c,_0x541768){return function(_0x123fd4){if(_0x123fd4){return _0x123fd4['destroy']()[_0xa343('0x24')](function(){var _0xb969b0=_0x123fd4[_0xa343('0x25')]({'plain':!![]});var _0xc508e4='ExtractedReports';return db[_0xa343('0x26')][_0xa343('0x27')]({'where':{'type':_0xc508e4,'resourceId':_0xb969b0['id']}})[_0xa343('0x24')](function(){return _0x123fd4;});})[_0xa343('0x24')](function(){_0x52530c[_0xa343('0x18')](0xcc)[_0xa343('0x19')]();});}};}function handleEntityNotFound(_0xdccb8,_0x16f6e8){return function(_0x412afa){if(!_0x412afa){_0xdccb8[_0xa343('0x28')](0x194);}return _0x412afa;};}function handleError(_0x48ee5e,_0x177789){_0x177789=_0x177789||0x1f4;return function(_0x5c1e1a){logger[_0xa343('0x29')](_0x5c1e1a[_0xa343('0x2a')]);if(_0x5c1e1a[_0xa343('0x2b')]){delete _0x5c1e1a[_0xa343('0x2b')];}_0x48ee5e['status'](_0x177789)[_0xa343('0x2c')](_0x5c1e1a);};}exports[_0xa343('0x2d')]=function(_0x1fc36f,_0x4bc7a7){var _0x5372b5={},_0x4d26a7={},_0x145251={'count':0x0,'rows':[]};var _0x46e0d5=_[_0xa343('0x2e')](db[_0xa343('0x2f')][_0xa343('0x30')],function(_0x38e7e7){return{'name':_0x38e7e7['fieldName'],'type':_0x38e7e7[_0xa343('0x31')][_0xa343('0x32')]};});_0x4d26a7[_0xa343('0x33')]=_[_0xa343('0x2e')](_0x46e0d5,_0xa343('0x2b'));_0x4d26a7[_0xa343('0x34')]=_['keys'](_0x1fc36f[_0xa343('0x34')]);_0x4d26a7['filters']=_['intersection'](_0x4d26a7[_0xa343('0x33')],_0x4d26a7[_0xa343('0x34')]);_0x5372b5['attributes']=_[_0xa343('0x35')](_0x4d26a7[_0xa343('0x33')],qs['fields'](_0x1fc36f['query'][_0xa343('0x36')]));_0x5372b5[_0xa343('0x37')]=_0x5372b5[_0xa343('0x37')][_0xa343('0x38')]?_0x5372b5[_0xa343('0x37')]:_0x4d26a7[_0xa343('0x33')];if(!_0x1fc36f['query'][_0xa343('0x39')](_0xa343('0x3a'))){_0x5372b5[_0xa343('0x1c')]=qs[_0xa343('0x1c')](_0x1fc36f[_0xa343('0x34')][_0xa343('0x1c')]);_0x5372b5['offset']=qs[_0xa343('0x1b')](_0x1fc36f[_0xa343('0x34')]['offset']);}_0x5372b5[_0xa343('0x3b')]=qs[_0xa343('0x3c')](_0x1fc36f['query'][_0xa343('0x3c')]);_0x5372b5[_0xa343('0x3d')]=qs[_0xa343('0x3e')](_['pick'](_0x1fc36f[_0xa343('0x34')],_0x4d26a7[_0xa343('0x3e')]),_0x46e0d5);if(_0x1fc36f['query'][_0xa343('0x3f')]){_0x5372b5[_0xa343('0x3d')]=_[_0xa343('0x40')](_0x5372b5[_0xa343('0x3d')],{'$or':_[_0xa343('0x2e')](_0x46e0d5,function(_0x2b2fed){if(_0x2b2fed[_0xa343('0x31')]!==_0xa343('0x41')){var _0xe1c861={};_0xe1c861[_0x2b2fed['name']]={'$like':'%'+_0x1fc36f[_0xa343('0x34')][_0xa343('0x3f')]+'%'};return _0xe1c861;}})});}_0x5372b5=_[_0xa343('0x40')]({},_0x5372b5,_0x1fc36f[_0xa343('0x42')]);var _0x2e5d99={'where':_0x5372b5['where']};return db[_0xa343('0x2f')][_0xa343('0x1e')](_0x2e5d99)['then'](function(_0x5c2695){_0x145251[_0xa343('0x1e')]=_0x5c2695;if(_0x1fc36f[_0xa343('0x34')][_0xa343('0x43')]){_0x5372b5['include']=[{'all':!![]}];}return db[_0xa343('0x2f')][_0xa343('0x44')](_0x5372b5);})['then'](function(_0xe2ae5a){_0x145251[_0xa343('0x45')]=_0xe2ae5a;return _0x145251;})[_0xa343('0x24')](respondWithFilteredResult(_0x4bc7a7,_0x5372b5))[_0xa343('0x46')](handleError(_0x4bc7a7,null));};exports['show']=function(_0x48518,_0x316df0){var _0x52abba={'raw':!![],'where':{'id':_0x48518[_0xa343('0x47')]['id']}},_0x268c0f={};_0x268c0f[_0xa343('0x33')]=_[_0xa343('0x48')](db[_0xa343('0x2f')]['rawAttributes']);_0x268c0f[_0xa343('0x34')]=_[_0xa343('0x48')](_0x48518['query']);_0x268c0f[_0xa343('0x3e')]=_[_0xa343('0x35')](_0x268c0f['model'],_0x268c0f[_0xa343('0x34')]);_0x52abba[_0xa343('0x37')]=_[_0xa343('0x35')](_0x268c0f[_0xa343('0x33')],qs['fields'](_0x48518['query']['fields']));_0x52abba['attributes']=_0x52abba[_0xa343('0x37')][_0xa343('0x38')]?_0x52abba[_0xa343('0x37')]:_0x268c0f['model'];if(_0x48518['query'][_0xa343('0x43')]){_0x52abba[_0xa343('0x49')]=[{'all':!![]}];}_0x52abba=_['merge']({},_0x52abba,_0x48518[_0xa343('0x42')]);return db['AnalyticExtractedReport'][_0xa343('0x4a')](_0x52abba)['then'](handleEntityNotFound(_0x316df0,null))[_0xa343('0x24')](respondWithResult(_0x316df0,null))[_0xa343('0x46')](handleError(_0x316df0,null));};exports[_0xa343('0x4b')]=function(_0x804169,_0x59e7d4){return db['AnalyticExtractedReport'][_0xa343('0x4b')](_0x804169['body'],{})[_0xa343('0x24')](function(_0xaf66ce){var _0x526860=_0x804169[_0xa343('0x4c')][_0xa343('0x25')]({'plain':!![]});if(!_0x526860)throw new Error(_0xa343('0x4d'));if(_0x526860['role']===_0xa343('0x4c')){var _0x30878d=_0xaf66ce[_0xa343('0x25')]({'plain':!![]});var _0x175dd2='ExtractedReports';return db[_0xa343('0x4e')]['find']({'where':{'name':_0x175dd2,'userProfileId':_0x526860[_0xa343('0x4f')]},'raw':!![]})[_0xa343('0x24')](function(_0x563bdd){if(_0x563bdd&&_0x563bdd['autoAssociation']===0x0){return db[_0xa343('0x26')][_0xa343('0x4b')]({'name':_0x30878d['name'],'resourceId':_0x30878d['id'],'type':_0x563bdd[_0xa343('0x2b')],'sectionId':_0x563bdd['id']},{})[_0xa343('0x24')](function(){return _0xaf66ce;});}else{return _0xaf66ce;}})['catch'](function(_0x370e35){logger[_0xa343('0x29')](_0xa343('0x50'),_0x370e35);throw _0x370e35;});}return _0xaf66ce;})[_0xa343('0x24')](respondWithResult(_0x59e7d4,0xc9))['catch'](handleError(_0x59e7d4,null));};exports['update']=function(_0x3a3b52,_0x594ab3){if(_0x3a3b52[_0xa343('0x51')]['id']){delete _0x3a3b52[_0xa343('0x51')]['id'];}return db[_0xa343('0x2f')][_0xa343('0x4a')]({'where':{'id':_0x3a3b52[_0xa343('0x47')]['id']}})[_0xa343('0x24')](handleEntityNotFound(_0x594ab3,null))[_0xa343('0x24')](saveUpdates(_0x3a3b52[_0xa343('0x51')],null))[_0xa343('0x24')](respondWithResult(_0x594ab3,null))['catch'](handleError(_0x594ab3,null));};exports[_0xa343('0x27')]=function(_0x249e8e,_0x2fd1fc){return db[_0xa343('0x2f')][_0xa343('0x4a')]({'where':{'id':_0x249e8e[_0xa343('0x47')]['id']}})[_0xa343('0x24')](handleEntityNotFound(_0x2fd1fc,null))['then'](removeEntity(_0x2fd1fc,null))['catch'](handleError(_0x2fd1fc,null));};exports[_0xa343('0x52')]=function(_0x21ed5f,_0x18ba9b,_0x289449){return db[_0xa343('0x2f')][_0xa343('0x4a')]({'where':{'id':_0x21ed5f[_0xa343('0x47')]['id']},'attributes':[_0xa343('0x2b'),_0xa343('0x53'),_0xa343('0x54'),_0xa343('0x55')],'raw':!![]})['then'](handleEntityNotFound(_0x18ba9b,null))[_0xa343('0x24')](function(_0x330f61){if(_0x330f61){if(!fs[_0xa343('0x56')](path[_0xa343('0x57')](config[_0xa343('0x58')],_0xa343('0x59'),_0x330f61[_0xa343('0x54')]))){throw new db[(_0xa343('0x5a'))][(_0xa343('0x5b'))](_0xa343('0x5c'));}if(_0x21ed5f['query'][_0xa343('0x5d')]){return _0x18ba9b['sendStatus'](0xc8);}return _0x18ba9b['download'](path[_0xa343('0x57')](config['root'],'server/files/reports',_0x330f61[_0xa343('0x54')]),util[_0xa343('0x5e')]('%s.%s',_0x330f61[_0xa343('0x53')]||_0x330f61[_0xa343('0x2b')],_0x330f61[_0xa343('0x55')][_0xa343('0x5f')]()));}})['catch'](handleError(_0x18ba9b,null));};
\ No newline at end of file
index c19b65c..6a592c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x308b=['AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','moment','bluebird','path','rimraf','./analyticExtractedReport.attributes','exports'];(function(_0x2383e3,_0x152423){var _0x595818=function(_0x2e18d2){while(--_0x2e18d2){_0x2383e3['push'](_0x2383e3['shift']());}};_0x595818(++_0x152423);}(_0x308b,0xde));var _0xb308=function(_0x3c28cd,_0x14b202){_0x3c28cd=_0x3c28cd-0x0;var _0x4781a0=_0x308b[_0x3c28cd];return _0x4781a0;};'use strict';var _=require(_0xb308('0x0'));var util=require(_0xb308('0x1'));var logger=require(_0xb308('0x2'))('api');var moment=require(_0xb308('0x3'));var BPromise=require(_0xb308('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb308('0x5'));var rimraf=require(_0xb308('0x6'));var config=require('../../config/environment');var attributes=require(_0xb308('0x7'));module[_0xb308('0x8')]=function(_0x1a1b5f,_0xadac78){return _0x1a1b5f['define'](_0xb308('0x9'),attributes,{'tableName':_0xb308('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe005=['moment','bluebird','request-promise','path','../../config/environment','./analyticExtractedReport.attributes','define','AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xe005,0x13d));var _0x5e00=function(_0x13b58,_0x2d1ab0){_0x13b58=_0x13b58-0x0;var _0x176b74=_0xe005[_0x13b58];return _0x176b74;};'use strict';var _=require('lodash');var util=require(_0x5e00('0x0'));var logger=require(_0x5e00('0x1'))('api');var moment=require(_0x5e00('0x2'));var BPromise=require(_0x5e00('0x3'));var rp=require(_0x5e00('0x4'));var fs=require('fs');var path=require(_0x5e00('0x5'));var rimraf=require('rimraf');var config=require(_0x5e00('0x6'));var attributes=require(_0x5e00('0x7'));module['exports']=function(_0x207f59,_0x3bd191){return _0x207f59[_0x5e00('0x8')](_0x5e00('0x9'),attributes,{'tableName':_0x5e00('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18ff101..bbce8cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3552=['error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s'];(function(_0x193c48,_0x58b316){var _0x1b3017=function(_0x26d4f2){while(--_0x26d4f2){_0x193c48['push'](_0x193c48['shift']());}};_0x1b3017(++_0x58b316);}(_0x3552,0x11d));var _0x2355=function(_0x4d055,_0x58d2fd){_0x4d055=_0x4d055-0x0;var _0x26f1a4=_0x3552[_0x4d055];return _0x26f1a4;};'use strict';var _=require('lodash');var util=require(_0x2355('0x0'));var moment=require(_0x2355('0x1'));var BPromise=require(_0x2355('0x2'));var rs=require(_0x2355('0x3'));var fs=require('fs');var Redis=require(_0x2355('0x4'));var db=require(_0x2355('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2355('0x6'));var jayson=require(_0x2355('0x7'));var client=jayson['client'][_0x2355('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x8fd12e,_0x1c9e8a,_0x5e574e){return new BPromise(function(_0x337c5f,_0x22130d){return client[_0x2355('0x9')](_0x8fd12e,_0x5e574e)[_0x2355('0xa')](function(_0x316151){logger[_0x2355('0xb')](_0x2355('0xc'),_0x1c9e8a,_0x2355('0xd'));logger['debug'](_0x2355('0xe'),_0x1c9e8a,'request\x20sent',JSON['stringify'](_0x316151));if(_0x316151['error']){if(_0x316151[_0x2355('0xf')][_0x2355('0x10')]===0x1f4){logger[_0x2355('0xf')](_0x2355('0xc'),_0x1c9e8a,_0x316151[_0x2355('0xf')][_0x2355('0x11')]);return _0x22130d(_0x316151[_0x2355('0xf')]['message']);}logger[_0x2355('0xf')](_0x2355('0xc'),_0x1c9e8a,_0x316151[_0x2355('0xf')][_0x2355('0x11')]);return _0x337c5f(_0x316151[_0x2355('0xf')][_0x2355('0x11')]);}else{logger[_0x2355('0xb')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1c9e8a,_0x2355('0xd'));_0x337c5f(_0x316151[_0x2355('0x12')]['message']);}})[_0x2355('0x13')](function(_0xeefbe3){logger[_0x2355('0xf')](_0x2355('0xc'),_0x1c9e8a,_0xeefbe3);_0x22130d(_0xeefbe3);});});}
\ No newline at end of file
+var _0x1cbc=['../../config/environment','jayson/promise','client','http','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3ccc0c,_0x30b17c){var _0x42ea04=function(_0x5e2164){while(--_0x5e2164){_0x3ccc0c['push'](_0x3ccc0c['shift']());}};_0x42ea04(++_0x30b17c);}(_0x1cbc,0xf4));var _0xc1cb=function(_0x4ed239,_0x3bb2d8){_0x4ed239=_0x4ed239-0x0;var _0x19b898=_0x1cbc[_0x4ed239];return _0x19b898;};'use strict';var _=require(_0xc1cb('0x0'));var util=require('util');var moment=require(_0xc1cb('0x1'));var BPromise=require(_0xc1cb('0x2'));var rs=require(_0xc1cb('0x3'));var fs=require('fs');var Redis=require(_0xc1cb('0x4'));var db=require(_0xc1cb('0x5'))['db'];var utils=require(_0xc1cb('0x6'));var logger=require(_0xc1cb('0x7'))(_0xc1cb('0x8'));var config=require(_0xc1cb('0x9'));var jayson=require(_0xc1cb('0xa'));var client=jayson[_0xc1cb('0xb')][_0xc1cb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x56f1c8,_0x1735ab,_0x54cd03){return new BPromise(function(_0xe5da07,_0x271f7d){return client['request'](_0x56f1c8,_0x54cd03)[_0xc1cb('0xd')](function(_0xb3fff7){logger[_0xc1cb('0xe')](_0xc1cb('0xf'),_0x1735ab,_0xc1cb('0x10'));logger[_0xc1cb('0x11')](_0xc1cb('0x12'),_0x1735ab,_0xc1cb('0x10'),JSON['stringify'](_0xb3fff7));if(_0xb3fff7[_0xc1cb('0x13')]){if(_0xb3fff7['error'][_0xc1cb('0x14')]===0x1f4){logger[_0xc1cb('0x13')](_0xc1cb('0xf'),_0x1735ab,_0xb3fff7[_0xc1cb('0x13')][_0xc1cb('0x15')]);return _0x271f7d(_0xb3fff7[_0xc1cb('0x13')][_0xc1cb('0x15')]);}logger['error'](_0xc1cb('0xf'),_0x1735ab,_0xb3fff7[_0xc1cb('0x13')][_0xc1cb('0x15')]);return _0xe5da07(_0xb3fff7[_0xc1cb('0x13')]['message']);}else{logger[_0xc1cb('0xe')](_0xc1cb('0xf'),_0x1735ab,'request\x20sent');_0xe5da07(_0xb3fff7['result'][_0xc1cb('0x15')]);}})[_0xc1cb('0x16')](function(_0xc10170){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x1735ab,_0xc10170);_0x271f7d(_0xc10170);});});}
\ No newline at end of file
index f57fd74..1bdb114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fe5=['../../config/environment','get','isAuthenticated','index','/:id','show','download','post','create','put','update','delete','util','path','Router','../../components/auth/service','../../components/interaction/service'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x6fe5,0x10b));var _0x56fe=function(_0x56e309,_0x29fee4){_0x56e309=_0x56e309-0x0;var _0x122efd=_0x6fe5[_0x56e309];return _0x122efd;};'use strict';var multer=require('multer');var util=require(_0x56fe('0x0'));var path=require(_0x56fe('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x56fe('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x56fe('0x3'));var interaction=require(_0x56fe('0x4'));var config=require(_0x56fe('0x5'));var controller=require('./analyticExtractedReport.controller');router[_0x56fe('0x6')]('/',auth[_0x56fe('0x7')](),controller[_0x56fe('0x8')]);router[_0x56fe('0x6')](_0x56fe('0x9'),auth[_0x56fe('0x7')](),controller[_0x56fe('0xa')]);router['get']('/:id/download',auth[_0x56fe('0x7')](),controller[_0x56fe('0xb')]);router[_0x56fe('0xc')]('/',auth['isAuthenticated'](),controller[_0x56fe('0xd')]);router[_0x56fe('0xe')](_0x56fe('0x9'),auth[_0x56fe('0x7')](),controller[_0x56fe('0xf')]);router[_0x56fe('0x10')](_0x56fe('0x9'),auth[_0x56fe('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xee79=['/:id','show','/:id/download','download','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','index'];(function(_0x3cc033,_0x11c7cb){var _0x56fa8d=function(_0x537fe5){while(--_0x537fe5){_0x3cc033['push'](_0x3cc033['shift']());}};_0x56fa8d(++_0x11c7cb);}(_0xee79,0xfc));var _0x9ee7=function(_0x5502a7,_0x325618){_0x5502a7=_0x5502a7-0x0;var _0x3946fa=_0xee79[_0x5502a7];return _0x3946fa;};'use strict';var multer=require(_0x9ee7('0x0'));var util=require(_0x9ee7('0x1'));var path=require(_0x9ee7('0x2'));var timeout=require(_0x9ee7('0x3'));var express=require(_0x9ee7('0x4'));var router=express['Router']();var fs_extra=require(_0x9ee7('0x5'));var auth=require(_0x9ee7('0x6'));var interaction=require(_0x9ee7('0x7'));var config=require('../../config/environment');var controller=require(_0x9ee7('0x8'));router[_0x9ee7('0x9')]('/',auth[_0x9ee7('0xa')](),controller[_0x9ee7('0xb')]);router['get'](_0x9ee7('0xc'),auth['isAuthenticated'](),controller[_0x9ee7('0xd')]);router[_0x9ee7('0x9')](_0x9ee7('0xe'),auth['isAuthenticated'](),controller[_0x9ee7('0xf')]);router[_0x9ee7('0x10')]('/',auth[_0x9ee7('0xa')](),controller['create']);router[_0x9ee7('0x11')]('/:id',auth[_0x9ee7('0xa')](),controller[_0x9ee7('0x12')]);router[_0x9ee7('0x13')](_0x9ee7('0xc'),auth[_0x9ee7('0xa')](),controller[_0x9ee7('0x14')]);module[_0x9ee7('0x15')]=router;
\ No newline at end of file
index 0bb0a68..6ca2aaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e06=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x4bc18b,_0x22fc17){var _0x33b863=function(_0x28d553){while(--_0x28d553){_0x4bc18b['push'](_0x4bc18b['shift']());}};_0x33b863(++_0x22fc17);}(_0x4e06,0x199));var _0x64e0=function(_0x45f0ab,_0x166cd2){_0x45f0ab=_0x45f0ab-0x0;var _0x53e0ee=_0x4e06[_0x45f0ab];return _0x53e0ee;};'use strict';var Sequelize=require(_0x64e0('0x0'));module[_0x64e0('0x1')]={'field':{'type':Sequelize[_0x64e0('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x64e0('0x3')]},'format':{'type':Sequelize[_0x64e0('0x3')]},'groupBy':{'type':Sequelize[_0x64e0('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x64e0('0x3')]},'custom':{'type':Sequelize[_0x64e0('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb89d=['STRING','BOOLEAN','exports','TEXT'];(function(_0x5cd7b7,_0xe04ef3){var _0xdab773=function(_0x117218){while(--_0x117218){_0x5cd7b7['push'](_0x5cd7b7['shift']());}};_0xdab773(++_0xe04ef3);}(_0xb89d,0x6a));var _0xdb89=function(_0x5bb4f4,_0x4e41dc){_0x5bb4f4=_0x5bb4f4-0x0;var _0x32cc12=_0xb89d[_0x5bb4f4];return _0x32cc12;};'use strict';var Sequelize=require('sequelize');module[_0xdb89('0x0')]={'field':{'type':Sequelize[_0xdb89('0x1')]},'alias':{'type':Sequelize[_0xdb89('0x2')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0xdb89('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0xdb89('0x3')],'defaultValue':![]}};
\ No newline at end of file
index aef88ea..a02a522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718d=['options','AnalyticFieldReport','includeAll','include','rows','params','intersection','catch','bulkCreate','body','bulkDestroy','ids','addFields','AnalyticCustomReport','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','save','update','then','destroy','stack','name','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','map'];(function(_0x414920,_0x155441){var _0x353659=function(_0x8e6ded){while(--_0x8e6ded){_0x414920['push'](_0x414920['shift']());}};_0x353659(++_0x155441);}(_0x718d,0x198));var _0xd718=function(_0x161533,_0x1debe6){_0x161533=_0x161533-0x0;var _0x54d670=_0x718d[_0x161533];return _0x54d670;};'use strict';var emlformat=require(_0xd718('0x0'));var rimraf=require(_0xd718('0x1'));var zipdir=require(_0xd718('0x2'));var jsonpatch=require(_0xd718('0x3'));var rp=require(_0xd718('0x4'));var moment=require(_0xd718('0x5'));var BPromise=require(_0xd718('0x6'));var Mustache=require(_0xd718('0x7'));var util=require(_0xd718('0x8'));var path=require('path');var sox=require(_0xd718('0x9'));var csv=require(_0xd718('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd718('0xb'));var _=require('lodash');var squel=require(_0xd718('0xc'));var crypto=require(_0xd718('0xd'));var jsforce=require(_0xd718('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xd718('0xa'));var querystring=require(_0xd718('0xf'));var Papa=require('papaparse');var Redis=require(_0xd718('0x10'));var authService=require(_0xd718('0x11'));var qs=require(_0xd718('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd718('0x13'));var logger=require(_0xd718('0x14'))(_0xd718('0x15'));var utils=require(_0xd718('0x16'));var config=require(_0xd718('0x17'));var licenseUtil=require(_0xd718('0x18'));var db=require(_0xd718('0x19'))['db'];function respondWithStatusCode(_0x247f27,_0x1072b0){_0x1072b0=_0x1072b0||0xcc;return function(_0x31c5da){if(_0x31c5da){return _0x247f27[_0xd718('0x1a')](_0x1072b0);}return _0x247f27[_0xd718('0x1b')](_0x1072b0)[_0xd718('0x1c')]();};}function respondWithResult(_0x3a3be7,_0x426dec){_0x426dec=_0x426dec||0xc8;return function(_0x2c7671){if(_0x2c7671){return _0x3a3be7[_0xd718('0x1b')](_0x426dec)[_0xd718('0x1d')](_0x2c7671);}};}function respondWithFilteredResult(_0x5e372f,_0xbf63d4){return function(_0x48f14e){if(_0x48f14e){var _0x367655=typeof _0xbf63d4[_0xd718('0x1e')]==='undefined'&&typeof _0xbf63d4[_0xd718('0x1f')]===_0xd718('0x20');var _0x8b820=_0x48f14e[_0xd718('0x21')];var _0x2ba33d=_0x367655?0x0:_0xbf63d4[_0xd718('0x1e')];var _0x4b62bf=_0x367655?_0x48f14e['count']:_0xbf63d4['offset']+_0xbf63d4['limit'];var _0xc918eb;if(_0x4b62bf>=_0x8b820){_0x4b62bf=_0x8b820;_0xc918eb=0xc8;}else{_0xc918eb=0xce;}_0x5e372f[_0xd718('0x1b')](_0xc918eb);return _0x5e372f['set']('Content-Range',_0x2ba33d+'-'+_0x4b62bf+'/'+_0x8b820)[_0xd718('0x1d')](_0x48f14e);}return null;};}function patchUpdates(_0x4c95f0){return function(_0x4f7a3e){try{jsonpatch['apply'](_0x4f7a3e,_0x4c95f0,!![]);}catch(_0x504ed9){return BPromise['reject'](_0x504ed9);}return _0x4f7a3e[_0xd718('0x22')]();};}function saveUpdates(_0x4672ff,_0x59c051){return function(_0x1eb2f6){if(_0x1eb2f6){return _0x1eb2f6[_0xd718('0x23')](_0x4672ff)[_0xd718('0x24')](function(_0x2d67cb){return _0x2d67cb;});}return null;};}function removeEntity(_0x4b041b,_0x438c00){return function(_0x26b85b){if(_0x26b85b){return _0x26b85b[_0xd718('0x25')]()[_0xd718('0x24')](function(){_0x4b041b[_0xd718('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22d0d0,_0x51585d){return function(_0x11c9e5){if(!_0x11c9e5){_0x22d0d0[_0xd718('0x1a')](0x194);}return _0x11c9e5;};}function handleError(_0x522910,_0x40bff6){_0x40bff6=_0x40bff6||0x1f4;return function(_0x58f88e){logger['error'](_0x58f88e[_0xd718('0x26')]);if(_0x58f88e['name']){delete _0x58f88e[_0xd718('0x27')];}_0x522910[_0xd718('0x1b')](_0x40bff6)['send'](_0x58f88e);};}exports['index']=function(_0x12ed35,_0xbfdd5c){var _0x4a6a4b={},_0xc9781={},_0x1db1f4={'count':0x0,'rows':[]};var _0x2105a5=_['map'](db['AnalyticFieldReport'][_0xd718('0x28')],function(_0x2f8afd){return{'name':_0x2f8afd[_0xd718('0x29')],'type':_0x2f8afd[_0xd718('0x2a')][_0xd718('0x2b')]};});_0xc9781[_0xd718('0x2c')]=_['map'](_0x2105a5,_0xd718('0x27'));_0xc9781[_0xd718('0x2d')]=_[_0xd718('0x2e')](_0x12ed35[_0xd718('0x2d')]);_0xc9781['filters']=_['intersection'](_0xc9781[_0xd718('0x2c')],_0xc9781[_0xd718('0x2d')]);_0x4a6a4b[_0xd718('0x2f')]=_['intersection'](_0xc9781['model'],qs['fields'](_0x12ed35['query'][_0xd718('0x30')]));_0x4a6a4b[_0xd718('0x2f')]=_0x4a6a4b['attributes'][_0xd718('0x31')]?_0x4a6a4b[_0xd718('0x2f')]:_0xc9781[_0xd718('0x2c')];if(!_0x12ed35[_0xd718('0x2d')][_0xd718('0x32')](_0xd718('0x33'))){_0x4a6a4b['limit']=qs[_0xd718('0x1f')](_0x12ed35[_0xd718('0x2d')][_0xd718('0x1f')]);_0x4a6a4b['offset']=qs[_0xd718('0x1e')](_0x12ed35[_0xd718('0x2d')][_0xd718('0x1e')]);}_0x4a6a4b[_0xd718('0x34')]=qs['sort'](_0x12ed35[_0xd718('0x2d')][_0xd718('0x35')]);_0x4a6a4b['where']=qs['filters'](_[_0xd718('0x36')](_0x12ed35['query'],_0xc9781[_0xd718('0x37')]),_0x2105a5);if(_0x12ed35[_0xd718('0x2d')][_0xd718('0x38')]){_0x4a6a4b['where']=_[_0xd718('0x39')](_0x4a6a4b[_0xd718('0x3a')],{'$or':_[_0xd718('0x3b')](_0x2105a5,function(_0x2acf4a){if(_0x2acf4a[_0xd718('0x2a')]!=='VIRTUAL'){var _0x41f468={};_0x41f468[_0x2acf4a['name']]={'$like':'%'+_0x12ed35[_0xd718('0x2d')]['filter']+'%'};return _0x41f468;}})});}_0x4a6a4b=_[_0xd718('0x39')]({},_0x4a6a4b,_0x12ed35[_0xd718('0x3c')]);var _0x5dc8cb={'where':_0x4a6a4b[_0xd718('0x3a')]};return db[_0xd718('0x3d')][_0xd718('0x21')](_0x5dc8cb)[_0xd718('0x24')](function(_0x2c6485){_0x1db1f4[_0xd718('0x21')]=_0x2c6485;if(_0x12ed35[_0xd718('0x2d')][_0xd718('0x3e')]){_0x4a6a4b[_0xd718('0x3f')]=[{'all':!![]}];}return db[_0xd718('0x3d')]['findAll'](_0x4a6a4b);})['then'](function(_0x2f6cb7){_0x1db1f4[_0xd718('0x40')]=_0x2f6cb7;return _0x1db1f4;})[_0xd718('0x24')](respondWithFilteredResult(_0xbfdd5c,_0x4a6a4b))['catch'](handleError(_0xbfdd5c,null));};exports['show']=function(_0x554a09,_0x25c55e){var _0x571b74={'raw':![],'where':{'id':_0x554a09[_0xd718('0x41')]['id']}},_0x4d6a1a={};_0x4d6a1a[_0xd718('0x2c')]=_[_0xd718('0x2e')](db[_0xd718('0x3d')][_0xd718('0x28')]);_0x4d6a1a[_0xd718('0x2d')]=_['keys'](_0x554a09[_0xd718('0x2d')]);_0x4d6a1a[_0xd718('0x37')]=_[_0xd718('0x42')](_0x4d6a1a[_0xd718('0x2c')],_0x4d6a1a[_0xd718('0x2d')]);_0x571b74[_0xd718('0x2f')]=_[_0xd718('0x42')](_0x4d6a1a[_0xd718('0x2c')],qs['fields'](_0x554a09[_0xd718('0x2d')][_0xd718('0x30')]));_0x571b74[_0xd718('0x2f')]=_0x571b74[_0xd718('0x2f')][_0xd718('0x31')]?_0x571b74['attributes']:_0x4d6a1a[_0xd718('0x2c')];if(_0x554a09[_0xd718('0x2d')][_0xd718('0x3e')]){_0x571b74[_0xd718('0x3f')]=[{'all':!![]}];}_0x571b74=_[_0xd718('0x39')]({},_0x571b74,_0x554a09[_0xd718('0x3c')]);return db[_0xd718('0x3d')]['find'](_0x571b74)[_0xd718('0x24')](handleEntityNotFound(_0x25c55e,null))[_0xd718('0x24')](respondWithResult(_0x25c55e,null))[_0xd718('0x43')](handleError(_0x25c55e,null));};exports['create']=function(_0xb14fb5,_0x138f20){return db[_0xd718('0x3d')]['create'](_0xb14fb5['body'],{})[_0xd718('0x24')](respondWithResult(_0x138f20,0xc9))['catch'](handleError(_0x138f20,null));};exports[_0xd718('0x44')]=function(_0x1cccd1,_0x2f07c1){return db[_0xd718('0x3d')]['bulkCreate'](_0x1cccd1[_0xd718('0x45')],{'raw':![],'individualHooks':!![]})[_0xd718('0x24')](respondWithResult(_0x2f07c1,0xc9))['catch'](handleError(_0x2f07c1,null));};exports['update']=function(_0x564e94,_0x2f78cf){if(_0x564e94[_0xd718('0x45')]['id']){delete _0x564e94['body']['id'];}return db[_0xd718('0x3d')]['find']({'where':{'id':_0x564e94['params']['id']}})[_0xd718('0x24')](handleEntityNotFound(_0x2f78cf,null))[_0xd718('0x24')](saveUpdates(_0x564e94[_0xd718('0x45')],null))[_0xd718('0x24')](respondWithResult(_0x2f78cf,null))[_0xd718('0x43')](handleError(_0x2f78cf,null));};exports[_0xd718('0x25')]=function(_0x90c484,_0x518dfa){return db['AnalyticFieldReport']['find']({'where':{'id':_0x90c484['params']['id']}})['then'](handleEntityNotFound(_0x518dfa,null))[_0xd718('0x24')](removeEntity(_0x518dfa,null))[_0xd718('0x43')](handleError(_0x518dfa,null));};exports[_0xd718('0x46')]=function(_0x3c0ab1,_0x2f9e79){return db['AnalyticFieldReport'][_0xd718('0x25')]({'where':{'id':_0x3c0ab1[_0xd718('0x2d')][_0xd718('0x47')]||[]},'raw':![],'individualHooks':!![]})[_0xd718('0x24')](respondWithResult(_0x2f9e79,0xcc))['catch'](handleError(_0x2f9e79,null));};exports[_0xd718('0x48')]=function(_0x4610ea,_0x247b58,_0x371d28){return db[_0xd718('0x49')]['findOne']({'where':{'id':_0x4610ea[_0xd718('0x41')]['id']}})[_0xd718('0x24')](handleEntityNotFound(_0x247b58,null))[_0xd718('0x24')](function(_0xc775fd){if(_0xc775fd){return db[_0xd718('0x4a')][_0xd718('0x4b')](function(_0x5617ed){return db[_0xd718('0x3d')][_0xd718('0x25')]({'where':{'CustomReportId':_0x4610ea[_0xd718('0x41')]['id']},'transaction':_0x5617ed})['then'](function(_0xc2ac0d){var _0x3d3e61=_[_0xd718('0x3b')](_0x4610ea[_0xd718('0x45')],function(_0x494233){delete _0x494233['id'];_0x494233[_0xd718('0x4c')]=_0x4610ea['params']['id'];return _0x494233;});return db[_0xd718('0x3d')]['bulkCreate'](_0x3d3e61,{'transaction':_0x5617ed});});})[_0xd718('0x24')](function(){return db[_0xd718('0x3d')][_0xd718('0x4d')]({'where':{'CustomReportId':_0x4610ea['params']['id']}});});}})['then'](respondWithResult(_0x247b58,null))['catch'](handleError(_0x247b58,null));};
\ No newline at end of file
+var _0x61bf=['order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','bulkCreate','destroy','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','end','error','stack','name','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x404cde,_0x27b51c){var _0x139882=function(_0x1f31d1){while(--_0x1f31d1){_0x404cde['push'](_0x404cde['shift']());}};_0x139882(++_0x27b51c);}(_0x61bf,0x158));var _0xf61b=function(_0x271dfa,_0x3d43da){_0x271dfa=_0x271dfa-0x0;var _0xf3a515=_0x61bf[_0x271dfa];return _0xf3a515;};'use strict';var emlformat=require(_0xf61b('0x0'));var rimraf=require(_0xf61b('0x1'));var zipdir=require(_0xf61b('0x2'));var jsonpatch=require(_0xf61b('0x3'));var rp=require(_0xf61b('0x4'));var moment=require(_0xf61b('0x5'));var BPromise=require(_0xf61b('0x6'));var Mustache=require(_0xf61b('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf61b('0x8'));var csv=require(_0xf61b('0x9'));var ejs=require(_0xf61b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf61b('0xb'));var squel=require(_0xf61b('0xc'));var crypto=require('crypto');var jsforce=require(_0xf61b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf61b('0x9'));var querystring=require(_0xf61b('0xe'));var Papa=require(_0xf61b('0xf'));var Redis=require(_0xf61b('0x10'));var authService=require(_0xf61b('0x11'));var qs=require(_0xf61b('0x12'));var as=require(_0xf61b('0x13'));var hardwareService=require(_0xf61b('0x14'));var logger=require(_0xf61b('0x15'))('api');var utils=require(_0xf61b('0x16'));var config=require(_0xf61b('0x17'));var licenseUtil=require(_0xf61b('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x52eeb7,_0x38200a){_0x38200a=_0x38200a||0xcc;return function(_0x40d8b6){if(_0x40d8b6){return _0x52eeb7['sendStatus'](_0x38200a);}return _0x52eeb7[_0xf61b('0x19')](_0x38200a)['end']();};}function respondWithResult(_0x177d34,_0x4b31f6){_0x4b31f6=_0x4b31f6||0xc8;return function(_0xfbd30d){if(_0xfbd30d){return _0x177d34[_0xf61b('0x19')](_0x4b31f6)['json'](_0xfbd30d);}};}function respondWithFilteredResult(_0x57c95f,_0x404366){return function(_0x558968){if(_0x558968){var _0x148318=typeof _0x404366[_0xf61b('0x1a')]===_0xf61b('0x1b')&&typeof _0x404366[_0xf61b('0x1c')]===_0xf61b('0x1b');var _0x3ac576=_0x558968[_0xf61b('0x1d')];var _0x20d790=_0x148318?0x0:_0x404366['offset'];var _0xce2f88=_0x148318?_0x558968[_0xf61b('0x1d')]:_0x404366[_0xf61b('0x1a')]+_0x404366[_0xf61b('0x1c')];var _0xfe9395;if(_0xce2f88>=_0x3ac576){_0xce2f88=_0x3ac576;_0xfe9395=0xc8;}else{_0xfe9395=0xce;}_0x57c95f[_0xf61b('0x19')](_0xfe9395);return _0x57c95f[_0xf61b('0x1e')](_0xf61b('0x1f'),_0x20d790+'-'+_0xce2f88+'/'+_0x3ac576)[_0xf61b('0x20')](_0x558968);}return null;};}function patchUpdates(_0x47730c){return function(_0x925779){try{jsonpatch['apply'](_0x925779,_0x47730c,!![]);}catch(_0x2f0fd7){return BPromise[_0xf61b('0x21')](_0x2f0fd7);}return _0x925779[_0xf61b('0x22')]();};}function saveUpdates(_0x465db9,_0x956bb3){return function(_0x593363){if(_0x593363){return _0x593363[_0xf61b('0x23')](_0x465db9)[_0xf61b('0x24')](function(_0x515e74){return _0x515e74;});}return null;};}function removeEntity(_0x52fa8e,_0x275d1b){return function(_0x3a835e){if(_0x3a835e){return _0x3a835e['destroy']()[_0xf61b('0x24')](function(){_0x52fa8e[_0xf61b('0x19')](0xcc)[_0xf61b('0x25')]();});}};}function handleEntityNotFound(_0x544575,_0x1fe5b8){return function(_0xc9cb25){if(!_0xc9cb25){_0x544575['sendStatus'](0x194);}return _0xc9cb25;};}function handleError(_0x16e3af,_0x3c85ff){_0x3c85ff=_0x3c85ff||0x1f4;return function(_0x261994){logger[_0xf61b('0x26')](_0x261994[_0xf61b('0x27')]);if(_0x261994[_0xf61b('0x28')]){delete _0x261994[_0xf61b('0x28')];}_0x16e3af[_0xf61b('0x19')](_0x3c85ff)['send'](_0x261994);};}exports['index']=function(_0x5c9b61,_0xa715d4){var _0x110b39={},_0x508f32={},_0x17c5f2={'count':0x0,'rows':[]};var _0x4efeb8=_[_0xf61b('0x29')](db[_0xf61b('0x2a')][_0xf61b('0x2b')],function(_0x5228b2){return{'name':_0x5228b2[_0xf61b('0x2c')],'type':_0x5228b2[_0xf61b('0x2d')][_0xf61b('0x2e')]};});_0x508f32[_0xf61b('0x2f')]=_['map'](_0x4efeb8,_0xf61b('0x28'));_0x508f32['query']=_[_0xf61b('0x30')](_0x5c9b61[_0xf61b('0x31')]);_0x508f32[_0xf61b('0x32')]=_[_0xf61b('0x33')](_0x508f32[_0xf61b('0x2f')],_0x508f32[_0xf61b('0x31')]);_0x110b39[_0xf61b('0x34')]=_[_0xf61b('0x33')](_0x508f32[_0xf61b('0x2f')],qs[_0xf61b('0x35')](_0x5c9b61[_0xf61b('0x31')][_0xf61b('0x35')]));_0x110b39['attributes']=_0x110b39[_0xf61b('0x34')][_0xf61b('0x36')]?_0x110b39[_0xf61b('0x34')]:_0x508f32[_0xf61b('0x2f')];if(!_0x5c9b61['query'][_0xf61b('0x37')]('nolimit')){_0x110b39['limit']=qs[_0xf61b('0x1c')](_0x5c9b61[_0xf61b('0x31')][_0xf61b('0x1c')]);_0x110b39['offset']=qs[_0xf61b('0x1a')](_0x5c9b61['query'][_0xf61b('0x1a')]);}_0x110b39[_0xf61b('0x38')]=qs[_0xf61b('0x39')](_0x5c9b61['query'][_0xf61b('0x39')]);_0x110b39['where']=qs[_0xf61b('0x32')](_['pick'](_0x5c9b61[_0xf61b('0x31')],_0x508f32[_0xf61b('0x32')]),_0x4efeb8);if(_0x5c9b61[_0xf61b('0x31')][_0xf61b('0x3a')]){_0x110b39[_0xf61b('0x3b')]=_[_0xf61b('0x3c')](_0x110b39[_0xf61b('0x3b')],{'$or':_[_0xf61b('0x29')](_0x4efeb8,function(_0x13698b){if(_0x13698b['type']!==_0xf61b('0x3d')){var _0x3ae3ba={};_0x3ae3ba[_0x13698b[_0xf61b('0x28')]]={'$like':'%'+_0x5c9b61['query']['filter']+'%'};return _0x3ae3ba;}})});}_0x110b39=_[_0xf61b('0x3c')]({},_0x110b39,_0x5c9b61[_0xf61b('0x3e')]);var _0xd16706={'where':_0x110b39['where']};return db['AnalyticFieldReport'][_0xf61b('0x1d')](_0xd16706)[_0xf61b('0x24')](function(_0x3a0252){_0x17c5f2[_0xf61b('0x1d')]=_0x3a0252;if(_0x5c9b61[_0xf61b('0x31')][_0xf61b('0x3f')]){_0x110b39[_0xf61b('0x40')]=[{'all':!![]}];}return db[_0xf61b('0x2a')][_0xf61b('0x41')](_0x110b39);})[_0xf61b('0x24')](function(_0xe14f78){_0x17c5f2[_0xf61b('0x42')]=_0xe14f78;return _0x17c5f2;})[_0xf61b('0x24')](respondWithFilteredResult(_0xa715d4,_0x110b39))[_0xf61b('0x43')](handleError(_0xa715d4,null));};exports[_0xf61b('0x44')]=function(_0x18e241,_0x41d355){var _0x248c1a={'raw':![],'where':{'id':_0x18e241[_0xf61b('0x45')]['id']}},_0x2936b7={};_0x2936b7[_0xf61b('0x2f')]=_['keys'](db[_0xf61b('0x2a')][_0xf61b('0x2b')]);_0x2936b7[_0xf61b('0x31')]=_[_0xf61b('0x30')](_0x18e241[_0xf61b('0x31')]);_0x2936b7['filters']=_[_0xf61b('0x33')](_0x2936b7[_0xf61b('0x2f')],_0x2936b7['query']);_0x248c1a['attributes']=_[_0xf61b('0x33')](_0x2936b7[_0xf61b('0x2f')],qs[_0xf61b('0x35')](_0x18e241[_0xf61b('0x31')]['fields']));_0x248c1a[_0xf61b('0x34')]=_0x248c1a[_0xf61b('0x34')][_0xf61b('0x36')]?_0x248c1a[_0xf61b('0x34')]:_0x2936b7[_0xf61b('0x2f')];if(_0x18e241[_0xf61b('0x31')]['includeAll']){_0x248c1a['include']=[{'all':!![]}];}_0x248c1a=_[_0xf61b('0x3c')]({},_0x248c1a,_0x18e241[_0xf61b('0x3e')]);return db['AnalyticFieldReport'][_0xf61b('0x46')](_0x248c1a)[_0xf61b('0x24')](handleEntityNotFound(_0x41d355,null))[_0xf61b('0x24')](respondWithResult(_0x41d355,null))[_0xf61b('0x43')](handleError(_0x41d355,null));};exports[_0xf61b('0x47')]=function(_0x1498d1,_0x467370){return db[_0xf61b('0x2a')]['create'](_0x1498d1[_0xf61b('0x48')],{})[_0xf61b('0x24')](respondWithResult(_0x467370,0xc9))[_0xf61b('0x43')](handleError(_0x467370,null));};exports[_0xf61b('0x49')]=function(_0x2c82b0,_0x3a3e8e){return db[_0xf61b('0x2a')][_0xf61b('0x49')](_0x2c82b0['body'],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x3a3e8e,0xc9))[_0xf61b('0x43')](handleError(_0x3a3e8e,null));};exports[_0xf61b('0x23')]=function(_0x15ee02,_0x4d25c1){if(_0x15ee02[_0xf61b('0x48')]['id']){delete _0x15ee02[_0xf61b('0x48')]['id'];}return db['AnalyticFieldReport'][_0xf61b('0x46')]({'where':{'id':_0x15ee02[_0xf61b('0x45')]['id']}})[_0xf61b('0x24')](handleEntityNotFound(_0x4d25c1,null))[_0xf61b('0x24')](saveUpdates(_0x15ee02[_0xf61b('0x48')],null))[_0xf61b('0x24')](respondWithResult(_0x4d25c1,null))[_0xf61b('0x43')](handleError(_0x4d25c1,null));};exports['destroy']=function(_0x1c7637,_0x5c5af8){return db['AnalyticFieldReport']['find']({'where':{'id':_0x1c7637[_0xf61b('0x45')]['id']}})[_0xf61b('0x24')](handleEntityNotFound(_0x5c5af8,null))[_0xf61b('0x24')](removeEntity(_0x5c5af8,null))[_0xf61b('0x43')](handleError(_0x5c5af8,null));};exports['bulkDestroy']=function(_0x331c87,_0xf2d5c4){return db[_0xf61b('0x2a')][_0xf61b('0x4a')]({'where':{'id':_0x331c87[_0xf61b('0x31')]['ids']||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0xf2d5c4,0xcc))['catch'](handleError(_0xf2d5c4,null));};exports[_0xf61b('0x4b')]=function(_0x3f2331,_0x4bf436,_0x4ca9a0){return db[_0xf61b('0x4c')][_0xf61b('0x4d')]({'where':{'id':_0x3f2331[_0xf61b('0x45')]['id']}})[_0xf61b('0x24')](handleEntityNotFound(_0x4bf436,null))[_0xf61b('0x24')](function(_0xc5f5ef){if(_0xc5f5ef){return db[_0xf61b('0x4e')]['transaction'](function(_0x3d054d){return db[_0xf61b('0x2a')]['destroy']({'where':{'CustomReportId':_0x3f2331[_0xf61b('0x45')]['id']},'transaction':_0x3d054d})[_0xf61b('0x24')](function(_0x2be308){var _0xae2416=_['map'](_0x3f2331['body'],function(_0x43c33b){delete _0x43c33b['id'];_0x43c33b[_0xf61b('0x4f')]=_0x3f2331[_0xf61b('0x45')]['id'];return _0x43c33b;});return db[_0xf61b('0x2a')][_0xf61b('0x49')](_0xae2416,{'transaction':_0x3d054d});});})[_0xf61b('0x24')](function(){return db[_0xf61b('0x2a')][_0xf61b('0x41')]({'where':{'CustomReportId':_0x3f2331[_0xf61b('0x45')]['id']}});});}})[_0xf61b('0x24')](respondWithResult(_0x4bf436,null))[_0xf61b('0x43')](handleError(_0x4bf436,null));};
\ No newline at end of file
index 283ccdf..a9a0ac3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e89=['AnalyticFieldReport','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','exports'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0x6e89,0x88));var _0x96e8=function(_0x49c16f,_0x37aa8d){_0x49c16f=_0x49c16f-0x0;var _0x580ee2=_0x6e89[_0x49c16f];return _0x580ee2;};'use strict';var _=require(_0x96e8('0x0'));var util=require(_0x96e8('0x1'));var logger=require(_0x96e8('0x2'))(_0x96e8('0x3'));var moment=require(_0x96e8('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x96e8('0x5'));var config=require(_0x96e8('0x6'));var attributes=require('./analyticFieldReport.attributes');module[_0x96e8('0x7')]=function(_0x3c7770,_0x3df9f5){return _0x3c7770['define'](_0x96e8('0x8'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x314e=['AnalyticFieldReport','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./analyticFieldReport.attributes','exports','define'];(function(_0x47b3e8,_0x1557e0){var _0x435282=function(_0xac8618){while(--_0xac8618){_0x47b3e8['push'](_0x47b3e8['shift']());}};_0x435282(++_0x1557e0);}(_0x314e,0xf1));var _0xe314=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x314e[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xe314('0x0'));var util=require(_0xe314('0x1'));var logger=require(_0xe314('0x2'))('api');var moment=require(_0xe314('0x3'));var BPromise=require(_0xe314('0x4'));var rp=require(_0xe314('0x5'));var fs=require('fs');var path=require(_0xe314('0x6'));var rimraf=require(_0xe314('0x7'));var config=require('../../config/environment');var attributes=require(_0xe314('0x8'));module[_0xe314('0x9')]=function(_0x576bbe,_0x981b6d){return _0x576bbe[_0xe314('0xa')](_0xe314('0xb'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0cf0a88..7193253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec53=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticFieldReport,\x20%s,\x20%s','message','result','catch','lodash','util'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xec53,0x16e));var _0x3ec5=function(_0x47afa7,_0x3d9cbf){_0x47afa7=_0x47afa7-0x0;var _0x14924e=_0xec53[_0x47afa7];return _0x14924e;};'use strict';var _=require(_0x3ec5('0x0'));var util=require(_0x3ec5('0x1'));var moment=require(_0x3ec5('0x2'));var BPromise=require(_0x3ec5('0x3'));var rs=require(_0x3ec5('0x4'));var fs=require('fs');var Redis=require(_0x3ec5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3ec5('0x6'));var logger=require(_0x3ec5('0x7'))(_0x3ec5('0x8'));var config=require(_0x3ec5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3ec5('0xa')][_0x3ec5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b2b31,_0x19ae0e,_0x4d1756){return new BPromise(function(_0x13f3d4,_0x2f0f4a){return client[_0x3ec5('0xc')](_0x5b2b31,_0x4d1756)[_0x3ec5('0xd')](function(_0x56474e){logger[_0x3ec5('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x19ae0e,_0x3ec5('0xf'));logger['debug'](_0x3ec5('0x10'),_0x19ae0e,'request\x20sent',JSON[_0x3ec5('0x11')](_0x56474e));if(_0x56474e[_0x3ec5('0x12')]){if(_0x56474e['error']['code']===0x1f4){logger[_0x3ec5('0x12')](_0x3ec5('0x13'),_0x19ae0e,_0x56474e[_0x3ec5('0x12')]['message']);return _0x2f0f4a(_0x56474e[_0x3ec5('0x12')]['message']);}logger[_0x3ec5('0x12')](_0x3ec5('0x13'),_0x19ae0e,_0x56474e[_0x3ec5('0x12')][_0x3ec5('0x14')]);return _0x13f3d4(_0x56474e['error']['message']);}else{logger[_0x3ec5('0xe')](_0x3ec5('0x13'),_0x19ae0e,_0x3ec5('0xf'));_0x13f3d4(_0x56474e[_0x3ec5('0x15')][_0x3ec5('0x14')]);}})[_0x3ec5('0x16')](function(_0x456dc4){logger[_0x3ec5('0x12')](_0x3ec5('0x13'),_0x19ae0e,_0x456dc4);_0x2f0f4a(_0x456dc4);});});}
\ No newline at end of file
+var _0x0a8c=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash'];(function(_0x37909b,_0xbd548c){var _0x1a949b=function(_0x1bceb8){while(--_0x1bceb8){_0x37909b['push'](_0x37909b['shift']());}};_0x1a949b(++_0xbd548c);}(_0x0a8c,0x1b8));var _0xc0a8=function(_0x45a8b0,_0x4b1d34){_0x45a8b0=_0x45a8b0-0x0;var _0x137a42=_0x0a8c[_0x45a8b0];return _0x137a42;};'use strict';var _=require(_0xc0a8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc0a8('0x1'));var rs=require(_0xc0a8('0x2'));var fs=require('fs');var Redis=require(_0xc0a8('0x3'));var db=require(_0xc0a8('0x4'))['db'];var utils=require(_0xc0a8('0x5'));var logger=require('../../config/logger')(_0xc0a8('0x6'));var config=require(_0xc0a8('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc0a8('0x8')][_0xc0a8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x338451,_0x59f5f0,_0x3be5f1){return new BPromise(function(_0x1bdc6d,_0x39cab5){return client[_0xc0a8('0xa')](_0x338451,_0x3be5f1)[_0xc0a8('0xb')](function(_0x1d4ca3){logger['info'](_0xc0a8('0xc'),_0x59f5f0,_0xc0a8('0xd'));logger[_0xc0a8('0xe')](_0xc0a8('0xf'),_0x59f5f0,'request\x20sent',JSON['stringify'](_0x1d4ca3));if(_0x1d4ca3['error']){if(_0x1d4ca3['error'][_0xc0a8('0x10')]===0x1f4){logger[_0xc0a8('0x11')](_0xc0a8('0xc'),_0x59f5f0,_0x1d4ca3[_0xc0a8('0x11')][_0xc0a8('0x12')]);return _0x39cab5(_0x1d4ca3[_0xc0a8('0x11')]['message']);}logger[_0xc0a8('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0x59f5f0,_0x1d4ca3[_0xc0a8('0x11')][_0xc0a8('0x12')]);return _0x1bdc6d(_0x1d4ca3[_0xc0a8('0x11')][_0xc0a8('0x12')]);}else{logger['info'](_0xc0a8('0xc'),_0x59f5f0,_0xc0a8('0xd'));_0x1bdc6d(_0x1d4ca3[_0xc0a8('0x13')][_0xc0a8('0x12')]);}})[_0xc0a8('0x14')](function(_0x44c9ee){logger['error'](_0xc0a8('0xc'),_0x59f5f0,_0x44c9ee);_0x39cab5(_0x44c9ee);});});}
\ No newline at end of file
index 62dd7c3..8abe9e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x1e1aad,_0x19107f){var _0x4ed95f=function(_0x70924e){while(--_0x70924e){_0x1e1aad['push'](_0x1e1aad['shift']());}};_0x4ed95f(++_0x19107f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x49709b,_0x794fae){var _0x3c4484=function(_0x5f50a7){while(--_0x5f50a7){_0x49709b['push'](_0x49709b['shift']());}};_0x3c4484(++_0x794fae);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
index f7c1e02..9fa249e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7382=['exports','STRING'];(function(_0x51a023,_0x40ff38){var _0x1dfe91=function(_0x19c3ac){while(--_0x19c3ac){_0x51a023['push'](_0x51a023['shift']());}};_0x1dfe91(++_0x40ff38);}(_0x7382,0x1f2));var _0x2738=function(_0x21f4f2,_0x541392){_0x21f4f2=_0x21f4f2-0x0;var _0x2d1a05=_0x7382[_0x21f4f2];return _0x2d1a05;};'use strict';var Sequelize=require('sequelize');module[_0x2738('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0x2738('0x1')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x2738('0x1')]}};
\ No newline at end of file
+var _0x4d6e=['exports','STRING','name','sequelize'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4d6e,0x77));var _0xe4d6=function(_0x2d364e,_0x301c5e){_0x2d364e=_0x2d364e-0x0;var _0x1b9312=_0x4d6e[_0x2d364e];return _0x1b9312;};'use strict';var Sequelize=require(_0xe4d6('0x0'));module[_0xe4d6('0x1')]={'name':{'type':Sequelize[_0xe4d6('0x2')],'allowNull':![],'unique':_0xe4d6('0x3')},'table':{'type':Sequelize[_0xe4d6('0x2')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0xe4d6('0x2')]}};
\ No newline at end of file
index 91c3a0e..fbe5536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['json','apply','reject','save','update','then','destroy','get','Metrics','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','show','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','UserProfileResource','catch','error','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range'];(function(_0x5d2f39,_0x11e2f4){var _0x3df8f6=function(_0x50eeaf){while(--_0x50eeaf){_0x5d2f39['push'](_0x5d2f39['shift']());}};_0x3df8f6(++_0x11e2f4);}(_0x6aa7,0x178));var _0x76aa=function(_0x59a379,_0x31e673){_0x59a379=_0x59a379-0x0;var _0x28651f=_0x6aa7[_0x59a379];return _0x28651f;};'use strict';var emlformat=require(_0x76aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x76aa('0x1'));var jsonpatch=require(_0x76aa('0x2'));var rp=require(_0x76aa('0x3'));var moment=require(_0x76aa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x76aa('0x5'));var util=require(_0x76aa('0x6'));var path=require(_0x76aa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x76aa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76aa('0x9'));var squel=require(_0x76aa('0xa'));var crypto=require(_0x76aa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x76aa('0xc'));var toCsv=require(_0x76aa('0xd'));var querystring=require(_0x76aa('0xe'));var Papa=require('papaparse');var Redis=require(_0x76aa('0xf'));var authService=require(_0x76aa('0x10'));var qs=require(_0x76aa('0x11'));var as=require(_0x76aa('0x12'));var hardwareService=require(_0x76aa('0x13'));var logger=require(_0x76aa('0x14'))(_0x76aa('0x15'));var utils=require(_0x76aa('0x16'));var config=require(_0x76aa('0x17'));var licenseUtil=require(_0x76aa('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x112c39,_0x5df49c){_0x5df49c=_0x5df49c||0xcc;return function(_0x226536){if(_0x226536){return _0x112c39[_0x76aa('0x19')](_0x5df49c);}return _0x112c39[_0x76aa('0x1a')](_0x5df49c)[_0x76aa('0x1b')]();};}function respondWithResult(_0x10432c,_0x4e309f){_0x4e309f=_0x4e309f||0xc8;return function(_0x5f5b59){if(_0x5f5b59){return _0x10432c[_0x76aa('0x1a')](_0x4e309f)['json'](_0x5f5b59);}};}function respondWithFilteredResult(_0x180d92,_0x319bf1){return function(_0x5cf594){if(_0x5cf594){var _0x2111c7=typeof _0x319bf1['offset']===_0x76aa('0x1c')&&typeof _0x319bf1['limit']===_0x76aa('0x1c');var _0x413cf6=_0x5cf594[_0x76aa('0x1d')];var _0x21c16d=_0x2111c7?0x0:_0x319bf1[_0x76aa('0x1e')];var _0x3ead3f=_0x2111c7?_0x5cf594['count']:_0x319bf1['offset']+_0x319bf1[_0x76aa('0x1f')];var _0x454dd3;if(_0x3ead3f>=_0x413cf6){_0x3ead3f=_0x413cf6;_0x454dd3=0xc8;}else{_0x454dd3=0xce;}_0x180d92[_0x76aa('0x1a')](_0x454dd3);return _0x180d92[_0x76aa('0x20')](_0x76aa('0x21'),_0x21c16d+'-'+_0x3ead3f+'/'+_0x413cf6)[_0x76aa('0x22')](_0x5cf594);}return null;};}function patchUpdates(_0x19af92){return function(_0x2eaf48){try{jsonpatch[_0x76aa('0x23')](_0x2eaf48,_0x19af92,!![]);}catch(_0x5990c1){return BPromise[_0x76aa('0x24')](_0x5990c1);}return _0x2eaf48[_0x76aa('0x25')]();};}function saveUpdates(_0x338a6b,_0x5b3f55){return function(_0x41463a){if(_0x41463a){return _0x41463a[_0x76aa('0x26')](_0x338a6b)[_0x76aa('0x27')](function(_0x2bd2c6){return _0x2bd2c6;});}return null;};}function removeEntity(_0x29c50c,_0xc1044c){return function(_0x3cd039){if(_0x3cd039){return _0x3cd039[_0x76aa('0x28')]()[_0x76aa('0x27')](function(){var _0x2cba6d=_0x3cd039[_0x76aa('0x29')]({'plain':!![]});var _0x26b75e=_0x76aa('0x2a');return db['UserProfileResource'][_0x76aa('0x28')]({'where':{'type':_0x26b75e,'resourceId':_0x2cba6d['id']}})[_0x76aa('0x27')](function(){return _0x3cd039;});})[_0x76aa('0x27')](function(){_0x29c50c[_0x76aa('0x1a')](0xcc)[_0x76aa('0x1b')]();});}};}function handleEntityNotFound(_0x2f9316,_0x25a803){return function(_0x282d0a){if(!_0x282d0a){_0x2f9316[_0x76aa('0x19')](0x194);}return _0x282d0a;};}function handleError(_0x1bdc3d,_0x545b06){_0x545b06=_0x545b06||0x1f4;return function(_0x3fcb7f){logger['error'](_0x3fcb7f[_0x76aa('0x2b')]);if(_0x3fcb7f[_0x76aa('0x2c')]){delete _0x3fcb7f[_0x76aa('0x2c')];}_0x1bdc3d[_0x76aa('0x1a')](_0x545b06)[_0x76aa('0x2d')](_0x3fcb7f);};}exports[_0x76aa('0x2e')]=function(_0x2ee0f9,_0x3827ec){var _0x19fd4f={},_0x3ea05a={},_0x5edcd8={'count':0x0,'rows':[]};var _0x430ad6=_[_0x76aa('0x2f')](db[_0x76aa('0x30')][_0x76aa('0x31')],function(_0x458ac3){return{'name':_0x458ac3[_0x76aa('0x32')],'type':_0x458ac3[_0x76aa('0x33')]['key']};});_0x3ea05a[_0x76aa('0x34')]=_[_0x76aa('0x2f')](_0x430ad6,'name');_0x3ea05a[_0x76aa('0x35')]=_['keys'](_0x2ee0f9[_0x76aa('0x35')]);_0x3ea05a['filters']=_[_0x76aa('0x36')](_0x3ea05a['model'],_0x3ea05a['query']);_0x19fd4f[_0x76aa('0x37')]=_[_0x76aa('0x36')](_0x3ea05a[_0x76aa('0x34')],qs[_0x76aa('0x38')](_0x2ee0f9['query']['fields']));_0x19fd4f[_0x76aa('0x37')]=_0x19fd4f[_0x76aa('0x37')][_0x76aa('0x39')]?_0x19fd4f[_0x76aa('0x37')]:_0x3ea05a[_0x76aa('0x34')];if(!_0x2ee0f9['query'][_0x76aa('0x3a')]('nolimit')){_0x19fd4f['limit']=qs[_0x76aa('0x1f')](_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x1f')]);_0x19fd4f[_0x76aa('0x1e')]=qs['offset'](_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x1e')]);}_0x19fd4f[_0x76aa('0x3b')]=qs['sort'](_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x3c')]);_0x19fd4f[_0x76aa('0x3d')]=qs[_0x76aa('0x3e')](_[_0x76aa('0x3f')](_0x2ee0f9[_0x76aa('0x35')],_0x3ea05a[_0x76aa('0x3e')]),_0x430ad6);if(_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x40')]){_0x19fd4f['where']=_[_0x76aa('0x41')](_0x19fd4f[_0x76aa('0x3d')],{'$or':_[_0x76aa('0x2f')](_0x430ad6,function(_0xa824e8){if(_0xa824e8[_0x76aa('0x33')]!==_0x76aa('0x42')){var _0x572fdb={};_0x572fdb[_0xa824e8['name']]={'$like':'%'+_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x40')]+'%'};return _0x572fdb;}})});}_0x19fd4f=_[_0x76aa('0x41')]({},_0x19fd4f,_0x2ee0f9[_0x76aa('0x43')]);var _0x50599f={'where':_0x19fd4f[_0x76aa('0x3d')]};return db[_0x76aa('0x30')][_0x76aa('0x1d')](_0x50599f)[_0x76aa('0x27')](function(_0x1138b5){_0x5edcd8['count']=_0x1138b5;if(_0x2ee0f9[_0x76aa('0x35')]['includeAll']){_0x19fd4f[_0x76aa('0x44')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x19fd4f);})['then'](function(_0x144f0a){_0x5edcd8['rows']=_0x144f0a;return _0x5edcd8;})['then'](respondWithFilteredResult(_0x3827ec,_0x19fd4f))['catch'](handleError(_0x3827ec,null));};exports[_0x76aa('0x45')]=function(_0x3fd153,_0x116dc5){var _0x2c0744={'raw':!![],'where':{'id':_0x3fd153['params']['id']}},_0x27a52e={};_0x27a52e[_0x76aa('0x34')]=_[_0x76aa('0x46')](db[_0x76aa('0x30')][_0x76aa('0x31')]);_0x27a52e[_0x76aa('0x35')]=_['keys'](_0x3fd153[_0x76aa('0x35')]);_0x27a52e[_0x76aa('0x3e')]=_['intersection'](_0x27a52e[_0x76aa('0x34')],_0x27a52e['query']);_0x2c0744[_0x76aa('0x37')]=_[_0x76aa('0x36')](_0x27a52e[_0x76aa('0x34')],qs[_0x76aa('0x38')](_0x3fd153[_0x76aa('0x35')][_0x76aa('0x38')]));_0x2c0744[_0x76aa('0x37')]=_0x2c0744[_0x76aa('0x37')][_0x76aa('0x39')]?_0x2c0744[_0x76aa('0x37')]:_0x27a52e['model'];if(_0x3fd153[_0x76aa('0x35')]['includeAll']){_0x2c0744[_0x76aa('0x44')]=[{'all':!![]}];}_0x2c0744=_[_0x76aa('0x41')]({},_0x2c0744,_0x3fd153[_0x76aa('0x43')]);return db[_0x76aa('0x30')]['find'](_0x2c0744)['then'](handleEntityNotFound(_0x116dc5,null))[_0x76aa('0x27')](respondWithResult(_0x116dc5,null))['catch'](handleError(_0x116dc5,null));};exports[_0x76aa('0x47')]=function(_0x302a0c,_0x4315b3){return db[_0x76aa('0x30')][_0x76aa('0x47')](_0x302a0c[_0x76aa('0x48')],{})['then'](function(_0x564546){var _0x2fcf8f=_0x302a0c[_0x76aa('0x49')][_0x76aa('0x29')]({'plain':!![]});if(!_0x2fcf8f)throw new Error(_0x76aa('0x4a'));if(_0x2fcf8f[_0x76aa('0x4b')]===_0x76aa('0x49')){var _0x4c52d5=_0x564546[_0x76aa('0x29')]({'plain':!![]});var _0x2d631e=_0x76aa('0x2a');return db['UserProfileSection'][_0x76aa('0x4c')]({'where':{'name':_0x2d631e,'userProfileId':_0x2fcf8f['userProfileId']},'raw':!![]})[_0x76aa('0x27')](function(_0x5e1d84){if(_0x5e1d84&&_0x5e1d84[_0x76aa('0x4d')]===0x0){return db[_0x76aa('0x4e')][_0x76aa('0x47')]({'name':_0x4c52d5[_0x76aa('0x2c')],'resourceId':_0x4c52d5['id'],'type':_0x5e1d84[_0x76aa('0x2c')],'sectionId':_0x5e1d84['id']},{})[_0x76aa('0x27')](function(){return _0x564546;});}else{return _0x564546;}})[_0x76aa('0x4f')](function(_0x4f2c2b){logger[_0x76aa('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4f2c2b);throw _0x4f2c2b;});}return _0x564546;})[_0x76aa('0x27')](respondWithResult(_0x4315b3,0xc9))[_0x76aa('0x4f')](handleError(_0x4315b3,null));};exports[_0x76aa('0x26')]=function(_0x53be10,_0x3fa7ec){if(_0x53be10[_0x76aa('0x48')]['id']){delete _0x53be10[_0x76aa('0x48')]['id'];}return db['AnalyticMetric'][_0x76aa('0x4c')]({'where':{'id':_0x53be10[_0x76aa('0x51')]['id']}})[_0x76aa('0x27')](handleEntityNotFound(_0x3fa7ec,null))[_0x76aa('0x27')](saveUpdates(_0x53be10['body'],null))[_0x76aa('0x27')](respondWithResult(_0x3fa7ec,null))[_0x76aa('0x4f')](handleError(_0x3fa7ec,null));};exports[_0x76aa('0x28')]=function(_0x410933,_0x2027f8){return db[_0x76aa('0x30')]['find']({'where':{'id':_0x410933[_0x76aa('0x51')]['id']}})[_0x76aa('0x27')](handleEntityNotFound(_0x2027f8,null))[_0x76aa('0x27')](removeEntity(_0x2027f8,null))[_0x76aa('0x4f')](handleError(_0x2027f8,null));};
\ No newline at end of file
+var _0x7da7=['model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','merge','options','where','AnalyticMetric','includeAll','include','findAll','rows','catch','params','keys','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','json','apply','reject','update','then','destroy','get','Metrics','UserProfileResource','end','name','send','index','map','rawAttributes','fieldName','type','key'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0x7da7,0x10d));var _0x77da=function(_0x316904,_0x1e8b77){_0x316904=_0x316904-0x0;var _0xfa9a21=_0x7da7[_0x316904];return _0xfa9a21;};'use strict';var emlformat=require(_0x77da('0x0'));var rimraf=require(_0x77da('0x1'));var zipdir=require(_0x77da('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77da('0x3'));var BPromise=require(_0x77da('0x4'));var Mustache=require('mustache');var util=require(_0x77da('0x5'));var path=require(_0x77da('0x6'));var sox=require('sox');var csv=require(_0x77da('0x7'));var ejs=require(_0x77da('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77da('0x9'));var squel=require('squel');var crypto=require(_0x77da('0xa'));var jsforce=require(_0x77da('0xb'));var deskjs=require(_0x77da('0xc'));var toCsv=require(_0x77da('0x7'));var querystring=require(_0x77da('0xd'));var Papa=require('papaparse');var Redis=require(_0x77da('0xe'));var authService=require(_0x77da('0xf'));var qs=require(_0x77da('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77da('0x11'));var logger=require(_0x77da('0x12'))(_0x77da('0x13'));var utils=require(_0x77da('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x77da('0x15'));var db=require(_0x77da('0x16'))['db'];function respondWithStatusCode(_0x2acc65,_0x5d6e2f){_0x5d6e2f=_0x5d6e2f||0xcc;return function(_0x4a7748){if(_0x4a7748){return _0x2acc65[_0x77da('0x17')](_0x5d6e2f);}return _0x2acc65[_0x77da('0x18')](_0x5d6e2f)['end']();};}function respondWithResult(_0x3b0ff2,_0x369df0){_0x369df0=_0x369df0||0xc8;return function(_0x355719){if(_0x355719){return _0x3b0ff2[_0x77da('0x18')](_0x369df0)['json'](_0x355719);}};}function respondWithFilteredResult(_0x2172d0,_0x4e130c){return function(_0x29cd7b){if(_0x29cd7b){var _0x366443=typeof _0x4e130c[_0x77da('0x19')]===_0x77da('0x1a')&&typeof _0x4e130c['limit']==='undefined';var _0x514016=_0x29cd7b['count'];var _0x103e46=_0x366443?0x0:_0x4e130c[_0x77da('0x19')];var _0x289887=_0x366443?_0x29cd7b[_0x77da('0x1b')]:_0x4e130c[_0x77da('0x19')]+_0x4e130c[_0x77da('0x1c')];var _0x1d325c;if(_0x289887>=_0x514016){_0x289887=_0x514016;_0x1d325c=0xc8;}else{_0x1d325c=0xce;}_0x2172d0[_0x77da('0x18')](_0x1d325c);return _0x2172d0['set']('Content-Range',_0x103e46+'-'+_0x289887+'/'+_0x514016)[_0x77da('0x1d')](_0x29cd7b);}return null;};}function patchUpdates(_0x4d1512){return function(_0x507979){try{jsonpatch[_0x77da('0x1e')](_0x507979,_0x4d1512,!![]);}catch(_0x304a2b){return BPromise[_0x77da('0x1f')](_0x304a2b);}return _0x507979['save']();};}function saveUpdates(_0x58270c,_0x3e6cfe){return function(_0x58f6c1){if(_0x58f6c1){return _0x58f6c1[_0x77da('0x20')](_0x58270c)[_0x77da('0x21')](function(_0xc52f0e){return _0xc52f0e;});}return null;};}function removeEntity(_0x27b6c7,_0x10399a){return function(_0x270318){if(_0x270318){return _0x270318[_0x77da('0x22')]()['then'](function(){var _0x4885ec=_0x270318[_0x77da('0x23')]({'plain':!![]});var _0x2d009f=_0x77da('0x24');return db[_0x77da('0x25')]['destroy']({'where':{'type':_0x2d009f,'resourceId':_0x4885ec['id']}})[_0x77da('0x21')](function(){return _0x270318;});})[_0x77da('0x21')](function(){_0x27b6c7[_0x77da('0x18')](0xcc)[_0x77da('0x26')]();});}};}function handleEntityNotFound(_0x446ae7,_0x5997b6){return function(_0xce24b8){if(!_0xce24b8){_0x446ae7[_0x77da('0x17')](0x194);}return _0xce24b8;};}function handleError(_0x1f2279,_0x2913f7){_0x2913f7=_0x2913f7||0x1f4;return function(_0x496ecd){logger['error'](_0x496ecd['stack']);if(_0x496ecd[_0x77da('0x27')]){delete _0x496ecd[_0x77da('0x27')];}_0x1f2279[_0x77da('0x18')](_0x2913f7)[_0x77da('0x28')](_0x496ecd);};}exports[_0x77da('0x29')]=function(_0x4eeb99,_0x350b4e){var _0x26f5a0={},_0x356bfb={},_0x1d381b={'count':0x0,'rows':[]};var _0x1e7853=_[_0x77da('0x2a')](db['AnalyticMetric'][_0x77da('0x2b')],function(_0x228851){return{'name':_0x228851[_0x77da('0x2c')],'type':_0x228851[_0x77da('0x2d')][_0x77da('0x2e')]};});_0x356bfb[_0x77da('0x2f')]=_[_0x77da('0x2a')](_0x1e7853,_0x77da('0x27'));_0x356bfb['query']=_['keys'](_0x4eeb99[_0x77da('0x30')]);_0x356bfb[_0x77da('0x31')]=_['intersection'](_0x356bfb[_0x77da('0x2f')],_0x356bfb[_0x77da('0x30')]);_0x26f5a0[_0x77da('0x32')]=_[_0x77da('0x33')](_0x356bfb[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x4eeb99[_0x77da('0x30')]['fields']));_0x26f5a0[_0x77da('0x32')]=_0x26f5a0['attributes']['length']?_0x26f5a0['attributes']:_0x356bfb[_0x77da('0x2f')];if(!_0x4eeb99['query'][_0x77da('0x35')](_0x77da('0x36'))){_0x26f5a0[_0x77da('0x1c')]=qs[_0x77da('0x1c')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x1c')]);_0x26f5a0[_0x77da('0x19')]=qs['offset'](_0x4eeb99[_0x77da('0x30')][_0x77da('0x19')]);}_0x26f5a0[_0x77da('0x37')]=qs[_0x77da('0x38')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x38')]);_0x26f5a0['where']=qs[_0x77da('0x31')](_[_0x77da('0x39')](_0x4eeb99[_0x77da('0x30')],_0x356bfb['filters']),_0x1e7853);if(_0x4eeb99[_0x77da('0x30')]['filter']){_0x26f5a0['where']=_['merge'](_0x26f5a0['where'],{'$or':_[_0x77da('0x2a')](_0x1e7853,function(_0x1adba5){if(_0x1adba5[_0x77da('0x2d')]!=='VIRTUAL'){var _0x21d337={};_0x21d337[_0x1adba5['name']]={'$like':'%'+_0x4eeb99[_0x77da('0x30')]['filter']+'%'};return _0x21d337;}})});}_0x26f5a0=_[_0x77da('0x3a')]({},_0x26f5a0,_0x4eeb99[_0x77da('0x3b')]);var _0x290667={'where':_0x26f5a0[_0x77da('0x3c')]};return db[_0x77da('0x3d')]['count'](_0x290667)[_0x77da('0x21')](function(_0x1f48bd){_0x1d381b[_0x77da('0x1b')]=_0x1f48bd;if(_0x4eeb99[_0x77da('0x30')][_0x77da('0x3e')]){_0x26f5a0[_0x77da('0x3f')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x77da('0x40')](_0x26f5a0);})[_0x77da('0x21')](function(_0x21de41){_0x1d381b[_0x77da('0x41')]=_0x21de41;return _0x1d381b;})[_0x77da('0x21')](respondWithFilteredResult(_0x350b4e,_0x26f5a0))[_0x77da('0x42')](handleError(_0x350b4e,null));};exports['show']=function(_0x10957b,_0x5abcd9){var _0x1ae806={'raw':!![],'where':{'id':_0x10957b[_0x77da('0x43')]['id']}},_0x373fb2={};_0x373fb2['model']=_[_0x77da('0x44')](db[_0x77da('0x3d')][_0x77da('0x2b')]);_0x373fb2[_0x77da('0x30')]=_[_0x77da('0x44')](_0x10957b[_0x77da('0x30')]);_0x373fb2[_0x77da('0x31')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],_0x373fb2['query']);_0x1ae806[_0x77da('0x32')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x10957b[_0x77da('0x30')][_0x77da('0x34')]));_0x1ae806['attributes']=_0x1ae806['attributes'][_0x77da('0x45')]?_0x1ae806[_0x77da('0x32')]:_0x373fb2[_0x77da('0x2f')];if(_0x10957b[_0x77da('0x30')][_0x77da('0x3e')]){_0x1ae806[_0x77da('0x3f')]=[{'all':!![]}];}_0x1ae806=_['merge']({},_0x1ae806,_0x10957b[_0x77da('0x3b')]);return db[_0x77da('0x3d')][_0x77da('0x46')](_0x1ae806)[_0x77da('0x21')](handleEntityNotFound(_0x5abcd9,null))['then'](respondWithResult(_0x5abcd9,null))[_0x77da('0x42')](handleError(_0x5abcd9,null));};exports['create']=function(_0x518fd5,_0x36263b){return db[_0x77da('0x3d')][_0x77da('0x47')](_0x518fd5[_0x77da('0x48')],{})['then'](function(_0x16bf4b){var _0x1e36ee=_0x518fd5['user'][_0x77da('0x23')]({'plain':!![]});if(!_0x1e36ee)throw new Error(_0x77da('0x49'));if(_0x1e36ee['role']===_0x77da('0x4a')){var _0x3aaf5b=_0x16bf4b[_0x77da('0x23')]({'plain':!![]});var _0xef2496=_0x77da('0x24');return db[_0x77da('0x4b')][_0x77da('0x46')]({'where':{'name':_0xef2496,'userProfileId':_0x1e36ee[_0x77da('0x4c')]},'raw':!![]})[_0x77da('0x21')](function(_0x3a34a8){if(_0x3a34a8&&_0x3a34a8['autoAssociation']===0x0){return db[_0x77da('0x25')]['create']({'name':_0x3aaf5b[_0x77da('0x27')],'resourceId':_0x3aaf5b['id'],'type':_0x3a34a8[_0x77da('0x27')],'sectionId':_0x3a34a8['id']},{})[_0x77da('0x21')](function(){return _0x16bf4b;});}else{return _0x16bf4b;}})[_0x77da('0x42')](function(_0x374179){logger[_0x77da('0x4d')](_0x77da('0x4e'),_0x374179);throw _0x374179;});}return _0x16bf4b;})['then'](respondWithResult(_0x36263b,0xc9))[_0x77da('0x42')](handleError(_0x36263b,null));};exports[_0x77da('0x20')]=function(_0x1a7115,_0x353be9){if(_0x1a7115['body']['id']){delete _0x1a7115[_0x77da('0x48')]['id'];}return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x1a7115['params']['id']}})['then'](handleEntityNotFound(_0x353be9,null))[_0x77da('0x21')](saveUpdates(_0x1a7115[_0x77da('0x48')],null))[_0x77da('0x21')](respondWithResult(_0x353be9,null))[_0x77da('0x42')](handleError(_0x353be9,null));};exports[_0x77da('0x22')]=function(_0x528a32,_0x50437b){return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x528a32['params']['id']}})[_0x77da('0x21')](handleEntityNotFound(_0x50437b,null))[_0x77da('0x21')](removeEntity(_0x50437b,null))[_0x77da('0x42')](handleError(_0x50437b,null));};
\ No newline at end of file
index 084be19..5d812a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['define','AnalyticMetric','analytics_metrics','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./analyticMetric.attributes'];(function(_0x4f2cff,_0x4fb4be){var _0x32f79b=function(_0xe5d51b){while(--_0xe5d51b){_0x4f2cff['push'](_0x4f2cff['shift']());}};_0x32f79b(++_0x4fb4be);}(_0x187d,0x93));var _0xd187=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x187d[_0x45e98e];return _0x374dba;};'use strict';var _=require(_0xd187('0x0'));var util=require('util');var logger=require(_0xd187('0x1'))(_0xd187('0x2'));var moment=require(_0xd187('0x3'));var BPromise=require(_0xd187('0x4'));var rp=require(_0xd187('0x5'));var fs=require('fs');var path=require(_0xd187('0x6'));var rimraf=require('rimraf');var config=require(_0xd187('0x7'));var attributes=require(_0xd187('0x8'));module['exports']=function(_0x1d2533,_0x58ee7){return _0x1d2533[_0xd187('0x9')](_0xd187('0xa'),attributes,{'tableName':_0xd187('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe626=['../../config/environment','define','analytics_metrics','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x4b1db9,_0x2c5ad1){var _0x3b2167=function(_0x4325b1){while(--_0x4325b1){_0x4b1db9['push'](_0x4b1db9['shift']());}};_0x3b2167(++_0x2c5ad1);}(_0xe626,0x9d));var _0x6e62=function(_0x139121,_0x59cffd){_0x139121=_0x139121-0x0;var _0x1441db=_0xe626[_0x139121];return _0x1441db;};'use strict';var _=require(_0x6e62('0x0'));var util=require(_0x6e62('0x1'));var logger=require(_0x6e62('0x2'))(_0x6e62('0x3'));var moment=require('moment');var BPromise=require(_0x6e62('0x4'));var rp=require(_0x6e62('0x5'));var fs=require('fs');var path=require(_0x6e62('0x6'));var rimraf=require(_0x6e62('0x7'));var config=require(_0x6e62('0x8'));var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x4a778d,_0x2ee927){return _0x4a778d[_0x6e62('0x9')]('AnalyticMetric',attributes,{'tableName':_0x6e62('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8518a13..8b0fd89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3abd=['request','info','AnalyticMetric,\x20%s,\x20%s','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','moment','randomstring','ioredis','../../mysqldb','rpc','client','http'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x3abd,0xe3));var _0xd3ab=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x3abd[_0xa8883];return _0x479426;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd3ab('0x0'));var BPromise=require('bluebird');var rs=require(_0xd3ab('0x1'));var fs=require('fs');var Redis=require(_0xd3ab('0x2'));var db=require(_0xd3ab('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd3ab('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd3ab('0x5')][_0xd3ab('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x543c5f,_0x4eaee4,_0x370176){return new BPromise(function(_0x193f86,_0x55d68b){return client[_0xd3ab('0x7')](_0x543c5f,_0x370176)['then'](function(_0x524b11){logger[_0xd3ab('0x8')](_0xd3ab('0x9'),_0x4eaee4,'request\x20sent');logger[_0xd3ab('0xa')](_0xd3ab('0xb'),_0x4eaee4,_0xd3ab('0xc'),JSON[_0xd3ab('0xd')](_0x524b11));if(_0x524b11[_0xd3ab('0xe')]){if(_0x524b11[_0xd3ab('0xe')]['code']===0x1f4){logger['error'](_0xd3ab('0x9'),_0x4eaee4,_0x524b11[_0xd3ab('0xe')][_0xd3ab('0xf')]);return _0x55d68b(_0x524b11[_0xd3ab('0xe')]['message']);}logger[_0xd3ab('0xe')](_0xd3ab('0x9'),_0x4eaee4,_0x524b11[_0xd3ab('0xe')]['message']);return _0x193f86(_0x524b11['error']['message']);}else{logger[_0xd3ab('0x8')]('AnalyticMetric,\x20%s,\x20%s',_0x4eaee4,_0xd3ab('0xc'));_0x193f86(_0x524b11[_0xd3ab('0x10')][_0xd3ab('0xf')]);}})[_0xd3ab('0x11')](function(_0x20e4cc){logger['error'](_0xd3ab('0x9'),_0x4eaee4,_0x20e4cc);_0x55d68b(_0x20e4cc);});});}
\ No newline at end of file
+var _0x8ca7=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','AnalyticMetric,\x20%s,\x20%s','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x8ca7,0x19e));var _0x78ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ca7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x78ca('0x0'));var util=require(_0x78ca('0x1'));var moment=require(_0x78ca('0x2'));var BPromise=require('bluebird');var rs=require(_0x78ca('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x78ca('0x4'))['db'];var utils=require(_0x78ca('0x5'));var logger=require(_0x78ca('0x6'))(_0x78ca('0x7'));var config=require(_0x78ca('0x8'));var jayson=require(_0x78ca('0x9'));var client=jayson[_0x78ca('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x487412,_0xb636cb,_0x153fa0){return new BPromise(function(_0x57d33c,_0x3c25bc){return client[_0x78ca('0xb')](_0x487412,_0x153fa0)['then'](function(_0x1d00b7){logger[_0x78ca('0xc')](_0x78ca('0xd'),_0xb636cb,'request\x20sent');logger['debug'](_0x78ca('0xe'),_0xb636cb,'request\x20sent',JSON[_0x78ca('0xf')](_0x1d00b7));if(_0x1d00b7['error']){if(_0x1d00b7[_0x78ca('0x10')][_0x78ca('0x11')]===0x1f4){logger[_0x78ca('0x10')](_0x78ca('0xd'),_0xb636cb,_0x1d00b7[_0x78ca('0x10')][_0x78ca('0x12')]);return _0x3c25bc(_0x1d00b7[_0x78ca('0x10')][_0x78ca('0x12')]);}logger[_0x78ca('0x10')](_0x78ca('0xd'),_0xb636cb,_0x1d00b7[_0x78ca('0x10')][_0x78ca('0x12')]);return _0x57d33c(_0x1d00b7[_0x78ca('0x10')]['message']);}else{logger[_0x78ca('0xc')](_0x78ca('0xd'),_0xb636cb,_0x78ca('0x13'));_0x57d33c(_0x1d00b7[_0x78ca('0x14')][_0x78ca('0x12')]);}})[_0x78ca('0x15')](function(_0x15e879){logger[_0x78ca('0x10')](_0x78ca('0xd'),_0xb636cb,_0x15e879);_0x3c25bc(_0x15e879);});});}
\ No newline at end of file
index 63d4dae..629e917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1629=['index','get','/:id','show','put','update','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x45424e,_0x4e7b5a){var _0x5e31f9=function(_0x4171bd){while(--_0x4171bd){_0x45424e['push'](_0x45424e['shift']());}};_0x5e31f9(++_0x4e7b5a);}(_0x1629,0x1d8));var _0x9162=function(_0x17aecd,_0x5c0f57){_0x17aecd=_0x17aecd-0x0;var _0x525cd5=_0x1629[_0x17aecd];return _0x525cd5;};'use strict';var multer=require(_0x9162('0x0'));var util=require(_0x9162('0x1'));var path=require(_0x9162('0x2'));var timeout=require(_0x9162('0x3'));var express=require('express');var router=express[_0x9162('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9162('0x5'));var config=require(_0x9162('0x6'));var controller=require('./analyticMetric.controller');router['get']('/',auth[_0x9162('0x7')](),controller[_0x9162('0x8')]);router[_0x9162('0x9')](_0x9162('0xa'),auth[_0x9162('0x7')](),controller[_0x9162('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x9162('0xc')](_0x9162('0xa'),auth[_0x9162('0x7')](),controller[_0x9162('0xd')]);router['delete'](_0x9162('0xa'),auth[_0x9162('0x7')](),controller['destroy']);module[_0x9162('0xe')]=router;
\ No newline at end of file
+var _0x576b=['../../components/auth/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','connect-timeout','express','fs-extra'];(function(_0x2621c8,_0x5adc62){var _0x304acb=function(_0x211fe1){while(--_0x211fe1){_0x2621c8['push'](_0x2621c8['shift']());}};_0x304acb(++_0x5adc62);}(_0x576b,0x1d9));var _0xb576=function(_0x4afea5,_0x5a51e2){_0x4afea5=_0x4afea5-0x0;var _0x99bb19=_0x576b[_0x4afea5];return _0x99bb19;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb576('0x0'));var express=require(_0xb576('0x1'));var router=express['Router']();var fs_extra=require(_0xb576('0x2'));var auth=require(_0xb576('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xb576('0x4'));var controller=require(_0xb576('0x5'));router[_0xb576('0x6')]('/',auth[_0xb576('0x7')](),controller[_0xb576('0x8')]);router[_0xb576('0x6')](_0xb576('0x9'),auth[_0xb576('0x7')](),controller[_0xb576('0xa')]);router[_0xb576('0xb')]('/',auth[_0xb576('0x7')](),controller[_0xb576('0xc')]);router[_0xb576('0xd')](_0xb576('0x9'),auth[_0xb576('0x7')](),controller['update']);router[_0xb576('0xe')]('/:id',auth[_0xb576('0x7')](),controller[_0xb576('0xf')]);module[_0xb576('0x10')]=router;
\ No newline at end of file
index d6b63d2..91eed4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x681e=['sequelize'];(function(_0x17cea2,_0x3b0512){var _0x40ed52=function(_0x520e84){while(--_0x520e84){_0x17cea2['push'](_0x17cea2['shift']());}};_0x40ed52(++_0x3b0512);}(_0x681e,0xd0));var _0xe681=function(_0x38fdb2,_0x33173d){_0x38fdb2=_0x38fdb2-0x0;var _0x4497b2=_0x681e[_0x38fdb2];return _0x4497b2;};'use strict';var Sequelize=require(_0xe681('0x0'));module['exports']={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0xe898=['sequelize','exports','TEXT'];(function(_0x5ac339,_0x4c58c3){var _0x24ea40=function(_0x13d379){while(--_0x13d379){_0x5ac339['push'](_0x5ac339['shift']());}};_0x24ea40(++_0x4c58c3);}(_0xe898,0x156));var _0x8e89=function(_0x242556,_0x3ac5e7){_0x242556=_0x242556-0x0;var _0x2c7e0b=_0xe898[_0x242556];return _0x2c7e0b;};'use strict';var Sequelize=require(_0x8e89('0x0'));module[_0x8e89('0x1')]={'tree':{'type':Sequelize[_0x8e89('0x2')],'allowNull':![]}};
\ No newline at end of file
index 6f6fbfd..503e697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0963=['lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','save','destroy','then','error','stack','name','index','map','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','nolimit','limit','order','where','filter','VIRTUAL','merge','AnalyticTreeReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','options','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv'];(function(_0x2e9187,_0x3763f6){var _0x1fc3a8=function(_0xb30d96){while(--_0xb30d96){_0x2e9187['push'](_0x2e9187['shift']());}};_0x1fc3a8(++_0x3763f6);}(_0x0963,0x1ef));var _0x3096=function(_0x5d1044,_0x18f656){_0x5d1044=_0x5d1044-0x0;var _0x3cd90e=_0x0963[_0x5d1044];return _0x3cd90e;};'use strict';var emlformat=require(_0x3096('0x0'));var rimraf=require(_0x3096('0x1'));var zipdir=require(_0x3096('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3096('0x3'));var moment=require('moment');var BPromise=require(_0x3096('0x4'));var Mustache=require(_0x3096('0x5'));var util=require(_0x3096('0x6'));var path=require('path');var sox=require(_0x3096('0x7'));var csv=require(_0x3096('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3096('0x9'));var squel=require(_0x3096('0xa'));var crypto=require(_0x3096('0xb'));var jsforce=require(_0x3096('0xc'));var deskjs=require(_0x3096('0xd'));var toCsv=require(_0x3096('0x8'));var querystring=require(_0x3096('0xe'));var Papa=require('papaparse');var Redis=require(_0x3096('0xf'));var authService=require(_0x3096('0x10'));var qs=require(_0x3096('0x11'));var as=require(_0x3096('0x12'));var hardwareService=require(_0x3096('0x13'));var logger=require(_0x3096('0x14'))(_0x3096('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3096('0x16'));var db=require(_0x3096('0x17'))['db'];function respondWithStatusCode(_0x3207c6,_0x5204e3){_0x5204e3=_0x5204e3||0xcc;return function(_0x3aecba){if(_0x3aecba){return _0x3207c6[_0x3096('0x18')](_0x5204e3);}return _0x3207c6[_0x3096('0x19')](_0x5204e3)[_0x3096('0x1a')]();};}function respondWithResult(_0x2000a8,_0x300693){_0x300693=_0x300693||0xc8;return function(_0x5a393c){if(_0x5a393c){return _0x2000a8[_0x3096('0x19')](_0x300693)[_0x3096('0x1b')](_0x5a393c);}};}function respondWithFilteredResult(_0x38418e,_0x2491b4){return function(_0x13f87d){if(_0x13f87d){var _0x57d693=typeof _0x2491b4[_0x3096('0x1c')]===_0x3096('0x1d')&&typeof _0x2491b4['limit']===_0x3096('0x1d');var _0x4d79ee=_0x13f87d['count'];var _0x29b958=_0x57d693?0x0:_0x2491b4[_0x3096('0x1c')];var _0x508132=_0x57d693?_0x13f87d[_0x3096('0x1e')]:_0x2491b4[_0x3096('0x1c')]+_0x2491b4['limit'];var _0xa16bd1;if(_0x508132>=_0x4d79ee){_0x508132=_0x4d79ee;_0xa16bd1=0xc8;}else{_0xa16bd1=0xce;}_0x38418e[_0x3096('0x19')](_0xa16bd1);return _0x38418e[_0x3096('0x1f')]('Content-Range',_0x29b958+'-'+_0x508132+'/'+_0x4d79ee)['json'](_0x13f87d);}return null;};}function patchUpdates(_0x372753){return function(_0x204673){try{jsonpatch[_0x3096('0x20')](_0x204673,_0x372753,!![]);}catch(_0x14cdcc){return BPromise['reject'](_0x14cdcc);}return _0x204673[_0x3096('0x21')]();};}function saveUpdates(_0x484608,_0x1d2fcf){return function(_0x161d87){if(_0x161d87){return _0x161d87['update'](_0x484608)['then'](function(_0x18f314){return _0x18f314;});}return null;};}function removeEntity(_0x3a7ff8,_0x5b1467){return function(_0x8d48ab){if(_0x8d48ab){return _0x8d48ab[_0x3096('0x22')]()[_0x3096('0x23')](function(){_0x3a7ff8['status'](0xcc)[_0x3096('0x1a')]();});}};}function handleEntityNotFound(_0x7ed4e6,_0x336ffe){return function(_0x448d25){if(!_0x448d25){_0x7ed4e6[_0x3096('0x18')](0x194);}return _0x448d25;};}function handleError(_0x3e2fd0,_0x15b6b7){_0x15b6b7=_0x15b6b7||0x1f4;return function(_0xb6e788){logger[_0x3096('0x24')](_0xb6e788[_0x3096('0x25')]);if(_0xb6e788[_0x3096('0x26')]){delete _0xb6e788[_0x3096('0x26')];}_0x3e2fd0[_0x3096('0x19')](_0x15b6b7)['send'](_0xb6e788);};}exports[_0x3096('0x27')]=function(_0x119e2b,_0xfe81ad){var _0x2469ca={},_0x26335e={},_0x597755={'count':0x0,'rows':[]};var _0x357be7=_[_0x3096('0x28')](db['AnalyticTreeReport']['rawAttributes'],function(_0x2fa51c){return{'name':_0x2fa51c[_0x3096('0x29')],'type':_0x2fa51c[_0x3096('0x2a')][_0x3096('0x2b')]};});_0x26335e['model']=_['map'](_0x357be7,'name');_0x26335e['query']=_[_0x3096('0x2c')](_0x119e2b['query']);_0x26335e[_0x3096('0x2d')]=_[_0x3096('0x2e')](_0x26335e[_0x3096('0x2f')],_0x26335e[_0x3096('0x30')]);_0x2469ca[_0x3096('0x31')]=_['intersection'](_0x26335e[_0x3096('0x2f')],qs[_0x3096('0x32')](_0x119e2b['query'][_0x3096('0x32')]));_0x2469ca['attributes']=_0x2469ca[_0x3096('0x31')]['length']?_0x2469ca[_0x3096('0x31')]:_0x26335e[_0x3096('0x2f')];if(!_0x119e2b[_0x3096('0x30')]['hasOwnProperty'](_0x3096('0x33'))){_0x2469ca[_0x3096('0x34')]=qs[_0x3096('0x34')](_0x119e2b['query'][_0x3096('0x34')]);_0x2469ca['offset']=qs[_0x3096('0x1c')](_0x119e2b[_0x3096('0x30')][_0x3096('0x1c')]);}_0x2469ca[_0x3096('0x35')]=qs['sort'](_0x119e2b[_0x3096('0x30')]['sort']);_0x2469ca[_0x3096('0x36')]=qs[_0x3096('0x2d')](_['pick'](_0x119e2b[_0x3096('0x30')],_0x26335e[_0x3096('0x2d')]),_0x357be7);if(_0x119e2b[_0x3096('0x30')][_0x3096('0x37')]){_0x2469ca['where']=_['merge'](_0x2469ca[_0x3096('0x36')],{'$or':_[_0x3096('0x28')](_0x357be7,function(_0x49014f){if(_0x49014f[_0x3096('0x2a')]!==_0x3096('0x38')){var _0x14091a={};_0x14091a[_0x49014f['name']]={'$like':'%'+_0x119e2b[_0x3096('0x30')][_0x3096('0x37')]+'%'};return _0x14091a;}})});}_0x2469ca=_[_0x3096('0x39')]({},_0x2469ca,_0x119e2b['options']);var _0x19b54e={'where':_0x2469ca[_0x3096('0x36')]};return db[_0x3096('0x3a')]['count'](_0x19b54e)[_0x3096('0x23')](function(_0x495fc5){_0x597755[_0x3096('0x1e')]=_0x495fc5;if(_0x119e2b[_0x3096('0x30')][_0x3096('0x3b')]){_0x2469ca[_0x3096('0x3c')]=[{'all':!![]}];}return db[_0x3096('0x3a')][_0x3096('0x3d')](_0x2469ca);})[_0x3096('0x23')](function(_0x57238a){_0x597755[_0x3096('0x3e')]=_0x57238a;return _0x597755;})[_0x3096('0x23')](respondWithFilteredResult(_0xfe81ad,_0x2469ca))[_0x3096('0x3f')](handleError(_0xfe81ad,null));};exports[_0x3096('0x40')]=function(_0x151183,_0x5dfe29){var _0x44c10e={'raw':!![],'where':{'id':_0x151183[_0x3096('0x41')]['id']}},_0x3d0960={};_0x3d0960[_0x3096('0x2f')]=_['keys'](db['AnalyticTreeReport'][_0x3096('0x42')]);_0x3d0960[_0x3096('0x30')]=_[_0x3096('0x2c')](_0x151183[_0x3096('0x30')]);_0x3d0960[_0x3096('0x2d')]=_[_0x3096('0x2e')](_0x3d0960[_0x3096('0x2f')],_0x3d0960[_0x3096('0x30')]);_0x44c10e[_0x3096('0x31')]=_['intersection'](_0x3d0960[_0x3096('0x2f')],qs[_0x3096('0x32')](_0x151183[_0x3096('0x30')]['fields']));_0x44c10e['attributes']=_0x44c10e[_0x3096('0x31')][_0x3096('0x43')]?_0x44c10e[_0x3096('0x31')]:_0x3d0960[_0x3096('0x2f')];if(_0x151183[_0x3096('0x30')][_0x3096('0x3b')]){_0x44c10e[_0x3096('0x3c')]=[{'all':!![]}];}_0x44c10e=_['merge']({},_0x44c10e,_0x151183[_0x3096('0x44')]);return db[_0x3096('0x3a')][_0x3096('0x45')](_0x44c10e)[_0x3096('0x23')](handleEntityNotFound(_0x5dfe29,null))[_0x3096('0x23')](respondWithResult(_0x5dfe29,null))['catch'](handleError(_0x5dfe29,null));};exports[_0x3096('0x46')]=function(_0x541b38,_0x7e1e46){return db[_0x3096('0x3a')][_0x3096('0x46')](_0x541b38[_0x3096('0x47')],{})[_0x3096('0x23')](respondWithResult(_0x7e1e46,0xc9))['catch'](handleError(_0x7e1e46,null));};exports['update']=function(_0x364e8c,_0x37a1e8){if(_0x364e8c['body']['id']){delete _0x364e8c['body']['id'];}return db[_0x3096('0x3a')][_0x3096('0x45')]({'where':{'id':_0x364e8c[_0x3096('0x41')]['id']}})['then'](handleEntityNotFound(_0x37a1e8,null))[_0x3096('0x23')](saveUpdates(_0x364e8c[_0x3096('0x47')],null))['then'](respondWithResult(_0x37a1e8,null))['catch'](handleError(_0x37a1e8,null));};exports['destroy']=function(_0x28a91d,_0x2de008){return db['AnalyticTreeReport'][_0x3096('0x45')]({'where':{'id':_0x28a91d[_0x3096('0x41')]['id']}})[_0x3096('0x23')](handleEntityNotFound(_0x2de008,null))[_0x3096('0x23')](removeEntity(_0x2de008,null))[_0x3096('0x3f')](handleError(_0x2de008,null));};
\ No newline at end of file
+var _0x10c7=['reject','save','destroy','then','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x10c7,0x189));var _0x710c=function(_0x4f3056,_0xe685f6){_0x4f3056=_0x4f3056-0x0;var _0x2b8af0=_0x10c7[_0x4f3056];return _0x2b8af0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x710c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x710c('0x1'));var rp=require(_0x710c('0x2'));var moment=require(_0x710c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x710c('0x4'));var util=require(_0x710c('0x5'));var path=require(_0x710c('0x6'));var sox=require(_0x710c('0x7'));var csv=require(_0x710c('0x8'));var ejs=require(_0x710c('0x9'));var fs=require('fs');var fs_extra=require(_0x710c('0xa'));var _=require(_0x710c('0xb'));var squel=require(_0x710c('0xc'));var crypto=require(_0x710c('0xd'));var jsforce=require(_0x710c('0xe'));var deskjs=require(_0x710c('0xf'));var toCsv=require(_0x710c('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x710c('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x710c('0x11'));var hardwareService=require(_0x710c('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x710c('0x13'));var licenseUtil=require(_0x710c('0x14'));var db=require(_0x710c('0x15'))['db'];function respondWithStatusCode(_0x1dd19a,_0x3f1c08){_0x3f1c08=_0x3f1c08||0xcc;return function(_0x2c718f){if(_0x2c718f){return _0x1dd19a[_0x710c('0x16')](_0x3f1c08);}return _0x1dd19a[_0x710c('0x17')](_0x3f1c08)[_0x710c('0x18')]();};}function respondWithResult(_0x35ae8a,_0x394034){_0x394034=_0x394034||0xc8;return function(_0x369d09){if(_0x369d09){return _0x35ae8a[_0x710c('0x17')](_0x394034)[_0x710c('0x19')](_0x369d09);}};}function respondWithFilteredResult(_0x189987,_0x4468d3){return function(_0x2797b0){if(_0x2797b0){var _0x23138a=typeof _0x4468d3[_0x710c('0x1a')]===_0x710c('0x1b')&&typeof _0x4468d3[_0x710c('0x1c')]===_0x710c('0x1b');var _0x1a58c8=_0x2797b0[_0x710c('0x1d')];var _0x12ce77=_0x23138a?0x0:_0x4468d3[_0x710c('0x1a')];var _0x8cc056=_0x23138a?_0x2797b0[_0x710c('0x1d')]:_0x4468d3['offset']+_0x4468d3[_0x710c('0x1c')];var _0x3c283e;if(_0x8cc056>=_0x1a58c8){_0x8cc056=_0x1a58c8;_0x3c283e=0xc8;}else{_0x3c283e=0xce;}_0x189987[_0x710c('0x17')](_0x3c283e);return _0x189987[_0x710c('0x1e')](_0x710c('0x1f'),_0x12ce77+'-'+_0x8cc056+'/'+_0x1a58c8)[_0x710c('0x19')](_0x2797b0);}return null;};}function patchUpdates(_0x5171a1){return function(_0x2ef9d2){try{jsonpatch[_0x710c('0x20')](_0x2ef9d2,_0x5171a1,!![]);}catch(_0x26953e){return BPromise[_0x710c('0x21')](_0x26953e);}return _0x2ef9d2[_0x710c('0x22')]();};}function saveUpdates(_0x1335cb,_0x597e99){return function(_0x622872){if(_0x622872){return _0x622872['update'](_0x1335cb)['then'](function(_0x59bdea){return _0x59bdea;});}return null;};}function removeEntity(_0x6fcd49,_0xb80c15){return function(_0x3b072f){if(_0x3b072f){return _0x3b072f[_0x710c('0x23')]()[_0x710c('0x24')](function(){_0x6fcd49[_0x710c('0x17')](0xcc)[_0x710c('0x18')]();});}};}function handleEntityNotFound(_0x2a9480,_0x508de7){return function(_0x46b8fa){if(!_0x46b8fa){_0x2a9480['sendStatus'](0x194);}return _0x46b8fa;};}function handleError(_0x51302a,_0x2817ce){_0x2817ce=_0x2817ce||0x1f4;return function(_0x4f148f){logger['error'](_0x4f148f[_0x710c('0x25')]);if(_0x4f148f['name']){delete _0x4f148f[_0x710c('0x26')];}_0x51302a['status'](_0x2817ce)[_0x710c('0x27')](_0x4f148f);};}exports[_0x710c('0x28')]=function(_0x1467ee,_0x45c0ed){var _0x34d13c={},_0x3f9bd8={},_0x12c35f={'count':0x0,'rows':[]};var _0x5ecf8a=_[_0x710c('0x29')](db[_0x710c('0x2a')][_0x710c('0x2b')],function(_0x5022e7){return{'name':_0x5022e7['fieldName'],'type':_0x5022e7[_0x710c('0x2c')]['key']};});_0x3f9bd8[_0x710c('0x2d')]=_[_0x710c('0x29')](_0x5ecf8a,_0x710c('0x26'));_0x3f9bd8['query']=_['keys'](_0x1467ee[_0x710c('0x2e')]);_0x3f9bd8[_0x710c('0x2f')]=_[_0x710c('0x30')](_0x3f9bd8[_0x710c('0x2d')],_0x3f9bd8['query']);_0x34d13c[_0x710c('0x31')]=_[_0x710c('0x30')](_0x3f9bd8[_0x710c('0x2d')],qs[_0x710c('0x32')](_0x1467ee[_0x710c('0x2e')][_0x710c('0x32')]));_0x34d13c[_0x710c('0x31')]=_0x34d13c[_0x710c('0x31')][_0x710c('0x33')]?_0x34d13c[_0x710c('0x31')]:_0x3f9bd8[_0x710c('0x2d')];if(!_0x1467ee[_0x710c('0x2e')][_0x710c('0x34')](_0x710c('0x35'))){_0x34d13c[_0x710c('0x1c')]=qs[_0x710c('0x1c')](_0x1467ee[_0x710c('0x2e')]['limit']);_0x34d13c[_0x710c('0x1a')]=qs[_0x710c('0x1a')](_0x1467ee[_0x710c('0x2e')][_0x710c('0x1a')]);}_0x34d13c[_0x710c('0x36')]=qs[_0x710c('0x37')](_0x1467ee[_0x710c('0x2e')]['sort']);_0x34d13c[_0x710c('0x38')]=qs[_0x710c('0x2f')](_['pick'](_0x1467ee[_0x710c('0x2e')],_0x3f9bd8[_0x710c('0x2f')]),_0x5ecf8a);if(_0x1467ee[_0x710c('0x2e')]['filter']){_0x34d13c[_0x710c('0x38')]=_[_0x710c('0x39')](_0x34d13c['where'],{'$or':_[_0x710c('0x29')](_0x5ecf8a,function(_0x3510f6){if(_0x3510f6[_0x710c('0x2c')]!==_0x710c('0x3a')){var _0x246adf={};_0x246adf[_0x3510f6[_0x710c('0x26')]]={'$like':'%'+_0x1467ee[_0x710c('0x2e')][_0x710c('0x3b')]+'%'};return _0x246adf;}})});}_0x34d13c=_[_0x710c('0x39')]({},_0x34d13c,_0x1467ee[_0x710c('0x3c')]);var _0x26141={'where':_0x34d13c[_0x710c('0x38')]};return db[_0x710c('0x2a')][_0x710c('0x1d')](_0x26141)[_0x710c('0x24')](function(_0x2e2c06){_0x12c35f[_0x710c('0x1d')]=_0x2e2c06;if(_0x1467ee[_0x710c('0x2e')][_0x710c('0x3d')]){_0x34d13c[_0x710c('0x3e')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x710c('0x3f')](_0x34d13c);})[_0x710c('0x24')](function(_0x4b5e70){_0x12c35f[_0x710c('0x40')]=_0x4b5e70;return _0x12c35f;})[_0x710c('0x24')](respondWithFilteredResult(_0x45c0ed,_0x34d13c))['catch'](handleError(_0x45c0ed,null));};exports['show']=function(_0x5a01c8,_0x21d956){var _0x1986ee={'raw':!![],'where':{'id':_0x5a01c8[_0x710c('0x41')]['id']}},_0x5bd03f={};_0x5bd03f[_0x710c('0x2d')]=_[_0x710c('0x42')](db['AnalyticTreeReport'][_0x710c('0x2b')]);_0x5bd03f[_0x710c('0x2e')]=_[_0x710c('0x42')](_0x5a01c8['query']);_0x5bd03f['filters']=_[_0x710c('0x30')](_0x5bd03f[_0x710c('0x2d')],_0x5bd03f['query']);_0x1986ee['attributes']=_[_0x710c('0x30')](_0x5bd03f['model'],qs['fields'](_0x5a01c8[_0x710c('0x2e')][_0x710c('0x32')]));_0x1986ee['attributes']=_0x1986ee['attributes'][_0x710c('0x33')]?_0x1986ee[_0x710c('0x31')]:_0x5bd03f[_0x710c('0x2d')];if(_0x5a01c8[_0x710c('0x2e')][_0x710c('0x3d')]){_0x1986ee[_0x710c('0x3e')]=[{'all':!![]}];}_0x1986ee=_[_0x710c('0x39')]({},_0x1986ee,_0x5a01c8[_0x710c('0x3c')]);return db[_0x710c('0x2a')][_0x710c('0x43')](_0x1986ee)[_0x710c('0x24')](handleEntityNotFound(_0x21d956,null))['then'](respondWithResult(_0x21d956,null))[_0x710c('0x44')](handleError(_0x21d956,null));};exports[_0x710c('0x45')]=function(_0x5e7290,_0x413a69){return db[_0x710c('0x2a')][_0x710c('0x45')](_0x5e7290['body'],{})[_0x710c('0x24')](respondWithResult(_0x413a69,0xc9))[_0x710c('0x44')](handleError(_0x413a69,null));};exports['update']=function(_0x3eac05,_0x5c7e7b){if(_0x3eac05[_0x710c('0x46')]['id']){delete _0x3eac05[_0x710c('0x46')]['id'];}return db[_0x710c('0x2a')][_0x710c('0x43')]({'where':{'id':_0x3eac05[_0x710c('0x41')]['id']}})[_0x710c('0x24')](handleEntityNotFound(_0x5c7e7b,null))[_0x710c('0x24')](saveUpdates(_0x3eac05[_0x710c('0x46')],null))[_0x710c('0x24')](respondWithResult(_0x5c7e7b,null))[_0x710c('0x44')](handleError(_0x5c7e7b,null));};exports['destroy']=function(_0x2013da,_0x4be0a0){return db[_0x710c('0x2a')][_0x710c('0x43')]({'where':{'id':_0x2013da['params']['id']}})[_0x710c('0x24')](handleEntityNotFound(_0x4be0a0,null))[_0x710c('0x24')](removeEntity(_0x4be0a0,null))[_0x710c('0x44')](handleError(_0x4be0a0,null));};
\ No newline at end of file
index c9eaac6..ac2c0fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ac8=['../../config/logger','api','request-promise','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash'];(function(_0x1d88d0,_0x3c7b8b){var _0x4dbbe1=function(_0x2c6bf7){while(--_0x2c6bf7){_0x1d88d0['push'](_0x1d88d0['shift']());}};_0x4dbbe1(++_0x3c7b8b);}(_0x0ac8,0x1b8));var _0x80ac=function(_0x29fcea,_0x257199){_0x29fcea=_0x29fcea-0x0;var _0x243673=_0x0ac8[_0x29fcea];return _0x243673;};'use strict';var _=require(_0x80ac('0x0'));var util=require('util');var logger=require(_0x80ac('0x1'))(_0x80ac('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x80ac('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x80ac('0x4'));module[_0x80ac('0x5')]=function(_0x499b87,_0x2dbe63){return _0x499b87[_0x80ac('0x6')](_0x80ac('0x7'),attributes,{'tableName':_0x80ac('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f5d=['rimraf','../../config/environment','analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4d9403,_0x33c5f0){var _0x5eef11=function(_0x50bb5c){while(--_0x50bb5c){_0x4d9403['push'](_0x4d9403['shift']());}};_0x5eef11(++_0x33c5f0);}(_0x6f5d,0x1a7));var _0xd6f5=function(_0x1d9dd9,_0x94629c){_0x1d9dd9=_0x1d9dd9-0x0;var _0x2b19da=_0x6f5d[_0x1d9dd9];return _0x2b19da;};'use strict';var _=require(_0xd6f5('0x0'));var util=require(_0xd6f5('0x1'));var logger=require(_0xd6f5('0x2'))(_0xd6f5('0x3'));var moment=require(_0xd6f5('0x4'));var BPromise=require(_0xd6f5('0x5'));var rp=require(_0xd6f5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd6f5('0x7'));var config=require(_0xd6f5('0x8'));var attributes=require('./analyticTreeReport.attributes');module['exports']=function(_0xf2f669,_0x3cf1c1){return _0xf2f669['define']('AnalyticTreeReport',attributes,{'tableName':_0xd6f5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1012bdf..f55bbd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x21c880,_0x11cd40){var _0x43e085=function(_0x5a4a9d){while(--_0x5a4a9d){_0x21c880['push'](_0x21c880['shift']());}};_0x43e085(++_0x11cd40);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3bbbd3,_0x5738f5){_0x3bbbd3=_0x3bbbd3-0x0;var _0x5378b0=_0x5f2f[_0x3bbbd3];return _0x5378b0;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x103ba9,_0x722c81){var _0x274d6d=function(_0x5c0512){while(--_0x5c0512){_0x103ba9['push'](_0x103ba9['shift']());}};_0x274d6d(++_0x722c81);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3b595f,_0x2c98e0){_0x3b595f=_0x3b595f-0x0;var _0x57b592=_0x5f2f[_0x3b595f];return _0x57b592;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
index 79c673e..ceba37c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66f6=['./analyticTreeReport.controller','index','/:id','isAuthenticated','post','put','update','delete','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x66f6,0x6f));var _0x666f=function(_0x5df8bc,_0x4f5497){_0x5df8bc=_0x5df8bc-0x0;var _0x3ce722=_0x66f6[_0x5df8bc];return _0x3ce722;};'use strict';var multer=require('multer');var util=require(_0x666f('0x0'));var path=require(_0x666f('0x1'));var timeout=require('connect-timeout');var express=require(_0x666f('0x2'));var router=express[_0x666f('0x3')]();var fs_extra=require(_0x666f('0x4'));var auth=require(_0x666f('0x5'));var interaction=require(_0x666f('0x6'));var config=require(_0x666f('0x7'));var controller=require(_0x666f('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x666f('0x9')]);router['get'](_0x666f('0xa'),auth[_0x666f('0xb')](),controller['show']);router[_0x666f('0xc')]('/',auth[_0x666f('0xb')](),controller['create']);router[_0x666f('0xd')](_0x666f('0xa'),auth['isAuthenticated'](),controller[_0x666f('0xe')]);router[_0x666f('0xf')](_0x666f('0xa'),auth['isAuthenticated'](),controller[_0x666f('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x245c=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','/:id','isAuthenticated','show','create','update','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x3092aa,_0x165532){var _0x418231=function(_0x58901c){while(--_0x58901c){_0x3092aa['push'](_0x3092aa['shift']());}};_0x418231(++_0x165532);}(_0x245c,0x10a));var _0xc245=function(_0x1db859,_0x517a35){_0x1db859=_0x1db859-0x0;var _0x5a57d2=_0x245c[_0x1db859];return _0x5a57d2;};'use strict';var multer=require('multer');var util=require(_0xc245('0x0'));var path=require('path');var timeout=require(_0xc245('0x1'));var express=require(_0xc245('0x2'));var router=express[_0xc245('0x3')]();var fs_extra=require(_0xc245('0x4'));var auth=require(_0xc245('0x5'));var interaction=require(_0xc245('0x6'));var config=require(_0xc245('0x7'));var controller=require(_0xc245('0x8'));router[_0xc245('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xc245('0xa'),auth[_0xc245('0xb')](),controller[_0xc245('0xc')]);router['post']('/',auth[_0xc245('0xb')](),controller[_0xc245('0xd')]);router['put'](_0xc245('0xa'),auth[_0xc245('0xb')](),controller[_0xc245('0xe')]);router[_0xc245('0xf')](_0xc245('0xa'),auth[_0xc245('0xb')](),controller[_0xc245('0x10')]);module[_0xc245('0x11')]=router;
\ No newline at end of file
index dd2dbdc..2d33a65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6282=['STRING','sequelize','exports'];(function(_0x2f36b2,_0x8b9cf9){var _0x10439e=function(_0x5973c0){while(--_0x5973c0){_0x2f36b2['push'](_0x2f36b2['shift']());}};_0x10439e(++_0x8b9cf9);}(_0x6282,0x76));var _0x2628=function(_0x577dc6,_0x4daaeb){_0x577dc6=_0x577dc6-0x0;var _0x1477a6=_0x6282[_0x577dc6];return _0x1477a6;};'use strict';var Sequelize=require(_0x2628('0x0'));module[_0x2628('0x1')]={'name':{'type':Sequelize[_0x2628('0x2')]},'basename':{'type':Sequelize[_0x2628('0x2')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x684d=['exports','STRING'];(function(_0x11bf1b,_0x50581b){var _0x387d1c=function(_0x54e22f){while(--_0x54e22f){_0x11bf1b['push'](_0x11bf1b['shift']());}};_0x387d1c(++_0x50581b);}(_0x684d,0x174));var _0xd684=function(_0x1ce9e1,_0x5f4ceb){_0x1ce9e1=_0x1ce9e1-0x0;var _0x175185=_0x684d[_0x1ce9e1];return _0x175185;};'use strict';var Sequelize=require('sequelize');module[_0xd684('0x0')]={'name':{'type':Sequelize[_0xd684('0x1')]},'basename':{'type':Sequelize[_0xd684('0x1')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f21ad4b..0e83c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff2=['stack','name','index','map','Attachment','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','find','clone','includeAll','options','get','body','omit','createdAt','updatedAt','create','file','originalname','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','reject','save','update','then','destroy'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xfff2,0x1f0));var _0x2fff=function(_0x3f2b5b,_0x179452){_0x3f2b5b=_0x3f2b5b-0x0;var _0x100439=_0xfff2[_0x3f2b5b];return _0x100439;};'use strict';var emlformat=require(_0x2fff('0x0'));var rimraf=require(_0x2fff('0x1'));var zipdir=require(_0x2fff('0x2'));var jsonpatch=require(_0x2fff('0x3'));var rp=require(_0x2fff('0x4'));var moment=require(_0x2fff('0x5'));var BPromise=require(_0x2fff('0x6'));var Mustache=require(_0x2fff('0x7'));var util=require(_0x2fff('0x8'));var path=require(_0x2fff('0x9'));var sox=require(_0x2fff('0xa'));var csv=require('to-csv');var ejs=require(_0x2fff('0xb'));var fs=require('fs');var fs_extra=require(_0x2fff('0xc'));var _=require(_0x2fff('0xd'));var squel=require(_0x2fff('0xe'));var crypto=require('crypto');var jsforce=require(_0x2fff('0xf'));var deskjs=require(_0x2fff('0x10'));var toCsv=require(_0x2fff('0x11'));var querystring=require('querystring');var Papa=require(_0x2fff('0x12'));var Redis=require(_0x2fff('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2fff('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2fff('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2fff('0x16'));var licenseUtil=require(_0x2fff('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3de78f,_0x36a299){_0x36a299=_0x36a299||0xcc;return function(_0x4dba7e){if(_0x4dba7e){return _0x3de78f[_0x2fff('0x18')](_0x36a299);}return _0x3de78f[_0x2fff('0x19')](_0x36a299)[_0x2fff('0x1a')]();};}function respondWithResult(_0x161bf2,_0x558229){_0x558229=_0x558229||0xc8;return function(_0x3a6fee){if(_0x3a6fee){return _0x161bf2[_0x2fff('0x19')](_0x558229)['json'](_0x3a6fee);}};}function respondWithFilteredResult(_0x533b8c,_0x2c0a36){return function(_0x3e4710){if(_0x3e4710){var _0x22da39=typeof _0x2c0a36['offset']===_0x2fff('0x1b')&&typeof _0x2c0a36[_0x2fff('0x1c')]===_0x2fff('0x1b');var _0x511f14=_0x3e4710[_0x2fff('0x1d')];var _0x25cf0c=_0x22da39?0x0:_0x2c0a36[_0x2fff('0x1e')];var _0x22407e=_0x22da39?_0x3e4710[_0x2fff('0x1d')]:_0x2c0a36[_0x2fff('0x1e')]+_0x2c0a36[_0x2fff('0x1c')];var _0x595ac0;if(_0x22407e>=_0x511f14){_0x22407e=_0x511f14;_0x595ac0=0xc8;}else{_0x595ac0=0xce;}_0x533b8c[_0x2fff('0x19')](_0x595ac0);return _0x533b8c['set'](_0x2fff('0x1f'),_0x25cf0c+'-'+_0x22407e+'/'+_0x511f14)[_0x2fff('0x20')](_0x3e4710);}return null;};}function patchUpdates(_0x1609c5){return function(_0x2e1bdb){try{jsonpatch['apply'](_0x2e1bdb,_0x1609c5,!![]);}catch(_0x25bfb3){return BPromise[_0x2fff('0x21')](_0x25bfb3);}return _0x2e1bdb[_0x2fff('0x22')]();};}function saveUpdates(_0x46afeb,_0x4e19dc){return function(_0x456f59){if(_0x456f59){return _0x456f59[_0x2fff('0x23')](_0x46afeb)[_0x2fff('0x24')](function(_0x30dbc3){return _0x30dbc3;});}return null;};}function removeEntity(_0x199b79,_0x162c5a){return function(_0xf5fd9d){if(_0xf5fd9d){return _0xf5fd9d[_0x2fff('0x25')]()[_0x2fff('0x24')](function(){_0x199b79['status'](0xcc)[_0x2fff('0x1a')]();});}};}function handleEntityNotFound(_0x11373e,_0x27ffca){return function(_0x1b0b20){if(!_0x1b0b20){_0x11373e[_0x2fff('0x18')](0x194);}return _0x1b0b20;};}function handleError(_0x4f49f6,_0x4b09b5){_0x4b09b5=_0x4b09b5||0x1f4;return function(_0x127351){logger['error'](_0x127351[_0x2fff('0x26')]);if(_0x127351[_0x2fff('0x27')]){delete _0x127351['name'];}_0x4f49f6['status'](_0x4b09b5)['send'](_0x127351);};}exports[_0x2fff('0x28')]=function(_0x138d3b,_0x38f5b3){var _0x235ca1={},_0x1bf588={},_0x4c923f={'count':0x0,'rows':[]};var _0x41f856=_[_0x2fff('0x29')](db[_0x2fff('0x2a')][_0x2fff('0x2b')],function(_0x180345){return{'name':_0x180345['fieldName'],'type':_0x180345[_0x2fff('0x2c')]['key']};});_0x1bf588[_0x2fff('0x2d')]=_['map'](_0x41f856,'name');_0x1bf588[_0x2fff('0x2e')]=_[_0x2fff('0x2f')](_0x138d3b[_0x2fff('0x2e')]);_0x1bf588[_0x2fff('0x30')]=_[_0x2fff('0x31')](_0x1bf588[_0x2fff('0x2d')],_0x1bf588[_0x2fff('0x2e')]);_0x235ca1[_0x2fff('0x32')]=_[_0x2fff('0x31')](_0x1bf588[_0x2fff('0x2d')],qs[_0x2fff('0x33')](_0x138d3b[_0x2fff('0x2e')]['fields']));_0x235ca1['attributes']=_0x235ca1[_0x2fff('0x32')][_0x2fff('0x34')]?_0x235ca1[_0x2fff('0x32')]:_0x1bf588[_0x2fff('0x2d')];if(!_0x138d3b['query'][_0x2fff('0x35')](_0x2fff('0x36'))){_0x235ca1[_0x2fff('0x1c')]=qs['limit'](_0x138d3b[_0x2fff('0x2e')][_0x2fff('0x1c')]);_0x235ca1[_0x2fff('0x1e')]=qs[_0x2fff('0x1e')](_0x138d3b[_0x2fff('0x2e')][_0x2fff('0x1e')]);}_0x235ca1['order']=qs[_0x2fff('0x37')](_0x138d3b[_0x2fff('0x2e')]['sort']);_0x235ca1[_0x2fff('0x38')]=qs['filters'](_[_0x2fff('0x39')](_0x138d3b[_0x2fff('0x2e')],_0x1bf588[_0x2fff('0x30')]),_0x41f856);if(_0x138d3b[_0x2fff('0x2e')][_0x2fff('0x3a')]){_0x235ca1[_0x2fff('0x38')]=_[_0x2fff('0x3b')](_0x235ca1[_0x2fff('0x38')],{'$or':_[_0x2fff('0x29')](_0x41f856,function(_0x159a28){if(_0x159a28[_0x2fff('0x2c')]!==_0x2fff('0x3c')){var _0x486371={};_0x486371[_0x159a28[_0x2fff('0x27')]]={'$like':'%'+_0x138d3b['query'][_0x2fff('0x3a')]+'%'};return _0x486371;}})});}_0x235ca1=_[_0x2fff('0x3b')]({},_0x235ca1,_0x138d3b['options']);var _0x193147={'where':_0x235ca1[_0x2fff('0x38')]};return db[_0x2fff('0x2a')][_0x2fff('0x1d')](_0x193147)[_0x2fff('0x24')](function(_0x4f057b){_0x4c923f['count']=_0x4f057b;if(_0x138d3b[_0x2fff('0x2e')]['includeAll']){_0x235ca1[_0x2fff('0x3d')]=[{'all':!![]}];}return db[_0x2fff('0x2a')][_0x2fff('0x3e')](_0x235ca1);})['then'](function(_0x53b5f9){_0x4c923f[_0x2fff('0x3f')]=_0x53b5f9;return _0x4c923f;})[_0x2fff('0x24')](respondWithFilteredResult(_0x38f5b3,_0x235ca1))[_0x2fff('0x40')](handleError(_0x38f5b3,null));};exports[_0x2fff('0x41')]=function(_0x314449,_0x2f96da){var _0xf6bbe6={'raw':!![],'where':{'id':_0x314449[_0x2fff('0x42')]['id']}},_0x34a670={};_0x34a670['model']=_[_0x2fff('0x2f')](db[_0x2fff('0x2a')]['rawAttributes']);_0x34a670[_0x2fff('0x2e')]=_[_0x2fff('0x2f')](_0x314449[_0x2fff('0x2e')]);_0x34a670[_0x2fff('0x30')]=_[_0x2fff('0x31')](_0x34a670[_0x2fff('0x2d')],_0x34a670[_0x2fff('0x2e')]);_0xf6bbe6[_0x2fff('0x32')]=_[_0x2fff('0x31')](_0x34a670[_0x2fff('0x2d')],qs[_0x2fff('0x33')](_0x314449[_0x2fff('0x2e')]['fields']));_0xf6bbe6[_0x2fff('0x32')]=_0xf6bbe6[_0x2fff('0x32')][_0x2fff('0x34')]?_0xf6bbe6[_0x2fff('0x32')]:_0x34a670[_0x2fff('0x2d')];if(_0x314449['query']['includeAll']){_0xf6bbe6[_0x2fff('0x3d')]=[{'all':!![]}];}_0xf6bbe6=_[_0x2fff('0x3b')]({},_0xf6bbe6,_0x314449['options']);return db[_0x2fff('0x2a')][_0x2fff('0x43')](_0xf6bbe6)[_0x2fff('0x24')](handleEntityNotFound(_0x2f96da,null))['then'](respondWithResult(_0x2f96da,null))[_0x2fff('0x40')](handleError(_0x2f96da,null));};exports[_0x2fff('0x44')]=function(_0x4b6792,_0x47e68a){var _0x3669a0={'where':{'id':_0x4b6792[_0x2fff('0x42')]['id']}},_0x1a06dd={};_0x1a06dd['model']=_[_0x2fff('0x2f')](db[_0x2fff('0x2a')][_0x2fff('0x2b')]);_0x3669a0[_0x2fff('0x32')]=_['intersection'](_0x1a06dd[_0x2fff('0x2d')],qs[_0x2fff('0x33')](_0x4b6792[_0x2fff('0x2e')][_0x2fff('0x33')]));_0x3669a0[_0x2fff('0x32')]=_0x3669a0[_0x2fff('0x32')][_0x2fff('0x34')]?_0x3669a0['attributes']:_0x1a06dd[_0x2fff('0x2d')];if(_0x4b6792['query'][_0x2fff('0x45')]){_0x3669a0['include']=[{'all':!![]}];}_0x3669a0=_[_0x2fff('0x3b')]({},_0x3669a0,_0x4b6792[_0x2fff('0x46')]);return db[_0x2fff('0x2a')][_0x2fff('0x43')](_0x3669a0)['then'](handleEntityNotFound(_0x47e68a,null))[_0x2fff('0x24')](function(_0x196266){if(_0x196266){var _0x548295=_0x196266[_0x2fff('0x47')]({'plain':!![]});_0x548295=qs['omit'](_0x548295,['id','createdAt','updatedAt']);_0x4b6792[_0x2fff('0x48')]=_[_0x2fff('0x49')](_0x4b6792[_0x2fff('0x48')],['id',_0x2fff('0x4a'),_0x2fff('0x4b')]);return db['Attachment'][_0x2fff('0x4c')](_['merge'](_0x548295,_0x4b6792[_0x2fff('0x48')]),{'include':_0x4b6792[_0x2fff('0x2e')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x2fff('0x24')](respondWithResult(_0x47e68a,0xc9))['catch'](handleError(_0x47e68a,null));};exports[_0x2fff('0x23')]=function(_0x5b2ad0,_0x39223f){if(_0x5b2ad0[_0x2fff('0x48')]['id']){delete _0x5b2ad0[_0x2fff('0x48')]['id'];}return db[_0x2fff('0x2a')][_0x2fff('0x43')]({'where':{'id':_0x5b2ad0['params']['id']}})['then'](handleEntityNotFound(_0x39223f,null))[_0x2fff('0x24')](saveUpdates(_0x5b2ad0[_0x2fff('0x48')],null))[_0x2fff('0x24')](respondWithResult(_0x39223f,null))[_0x2fff('0x40')](handleError(_0x39223f,null));};exports[_0x2fff('0x25')]=function(_0x5b3243,_0x197cbf){return db['Attachment'][_0x2fff('0x43')]({'where':{'id':_0x5b3243[_0x2fff('0x42')]['id']}})[_0x2fff('0x24')](handleEntityNotFound(_0x197cbf,null))[_0x2fff('0x24')](removeEntity(_0x197cbf,null))['catch'](handleError(_0x197cbf,null));};exports[_0x2fff('0x4c')]=function(_0x4d4573,_0x29e21f,_0x5dc52b){_0x4d4573['body'][_0x2fff('0x27')]=_0x4d4573[_0x2fff('0x4d')][_0x2fff('0x4e')];_0x4d4573['body'][_0x2fff('0x4f')]=_0x4d4573['file'][_0x2fff('0x50')];_0x4d4573[_0x2fff('0x48')][_0x2fff('0x2c')]=_0x4d4573['file'][_0x2fff('0x51')];return db[_0x2fff('0x2a')]['create'](_0x4d4573[_0x2fff('0x48')])['then'](respondWithResult(_0x29e21f,0xc9))[_0x2fff('0x40')](handleError(_0x29e21f,null));};exports[_0x2fff('0x52')]=function(_0x1c98e5,_0x12d457,_0x48cdd7){return db[_0x2fff('0x2a')][_0x2fff('0x53')]({'where':{'id':_0x1c98e5[_0x2fff('0x42')]['id']},'raw':!![]})[_0x2fff('0x24')](handleEntityNotFound(_0x12d457,null))[_0x2fff('0x24')](function(_0x1a8105){if(_0x1a8105){var _0xe97600=_0x1a8105[_0x2fff('0x54')]!==null;var _0x1f0609=path[_0x2fff('0x55')](config[_0x2fff('0x56')],_0x2fff('0x57'));if(_0xe97600){_0x1f0609=path[_0x2fff('0x55')](_0x1f0609,_0x2fff('0x58'));}var _0x3d0be9=path['join'](_0x1f0609,_0x1a8105[_0x2fff('0x4f')]);return _0x12d457[_0x2fff('0x52')](_0x3d0be9);}})[_0x2fff('0x40')](handleError(_0x12d457,null));};
\ No newline at end of file
+var _0x7c06=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','end','error','name','send','index','map','Attachment','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','length','options','find','clone','get','omit','updatedAt','body','createdAt','create','file','filename','mimetype','findOne','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','basename','download','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0x7c06,0x1aa));var _0x67c0=function(_0x211f6a,_0x1a2e20){_0x211f6a=_0x211f6a-0x0;var _0x3aaff0=_0x7c06[_0x211f6a];return _0x3aaff0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x67c0('0x0'));var rp=require(_0x67c0('0x1'));var moment=require('moment');var BPromise=require(_0x67c0('0x2'));var Mustache=require(_0x67c0('0x3'));var util=require('util');var path=require(_0x67c0('0x4'));var sox=require('sox');var csv=require(_0x67c0('0x5'));var ejs=require(_0x67c0('0x6'));var fs=require('fs');var fs_extra=require(_0x67c0('0x7'));var _=require('lodash');var squel=require(_0x67c0('0x8'));var crypto=require(_0x67c0('0x9'));var jsforce=require(_0x67c0('0xa'));var deskjs=require(_0x67c0('0xb'));var toCsv=require('to-csv');var querystring=require(_0x67c0('0xc'));var Papa=require(_0x67c0('0xd'));var Redis=require(_0x67c0('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x67c0('0xf'));var as=require(_0x67c0('0x10'));var hardwareService=require(_0x67c0('0x11'));var logger=require(_0x67c0('0x12'))('api');var utils=require(_0x67c0('0x13'));var config=require(_0x67c0('0x14'));var licenseUtil=require(_0x67c0('0x15'));var db=require(_0x67c0('0x16'))['db'];function respondWithStatusCode(_0xb0e53f,_0x2a32be){_0x2a32be=_0x2a32be||0xcc;return function(_0x383ed1){if(_0x383ed1){return _0xb0e53f[_0x67c0('0x17')](_0x2a32be);}return _0xb0e53f[_0x67c0('0x18')](_0x2a32be)['end']();};}function respondWithResult(_0x2de02f,_0x5172b3){_0x5172b3=_0x5172b3||0xc8;return function(_0x22e297){if(_0x22e297){return _0x2de02f[_0x67c0('0x18')](_0x5172b3)[_0x67c0('0x19')](_0x22e297);}};}function respondWithFilteredResult(_0x5ca697,_0x5567d6){return function(_0x16cf1c){if(_0x16cf1c){var _0x1a5a18=typeof _0x5567d6[_0x67c0('0x1a')]===_0x67c0('0x1b')&&typeof _0x5567d6[_0x67c0('0x1c')]===_0x67c0('0x1b');var _0x15c555=_0x16cf1c[_0x67c0('0x1d')];var _0x407e7c=_0x1a5a18?0x0:_0x5567d6[_0x67c0('0x1a')];var _0x153db3=_0x1a5a18?_0x16cf1c[_0x67c0('0x1d')]:_0x5567d6[_0x67c0('0x1a')]+_0x5567d6['limit'];var _0x29e447;if(_0x153db3>=_0x15c555){_0x153db3=_0x15c555;_0x29e447=0xc8;}else{_0x29e447=0xce;}_0x5ca697[_0x67c0('0x18')](_0x29e447);return _0x5ca697['set'](_0x67c0('0x1e'),_0x407e7c+'-'+_0x153db3+'/'+_0x15c555)[_0x67c0('0x19')](_0x16cf1c);}return null;};}function patchUpdates(_0x52e4f5){return function(_0xfd6bff){try{jsonpatch[_0x67c0('0x1f')](_0xfd6bff,_0x52e4f5,!![]);}catch(_0x348c68){return BPromise[_0x67c0('0x20')](_0x348c68);}return _0xfd6bff['save']();};}function saveUpdates(_0x249857,_0x442b8e){return function(_0x453d1e){if(_0x453d1e){return _0x453d1e[_0x67c0('0x21')](_0x249857)['then'](function(_0x45201c){return _0x45201c;});}return null;};}function removeEntity(_0x3c3f25,_0x37b02a){return function(_0x5b27af){if(_0x5b27af){return _0x5b27af[_0x67c0('0x22')]()[_0x67c0('0x23')](function(){_0x3c3f25[_0x67c0('0x18')](0xcc)[_0x67c0('0x24')]();});}};}function handleEntityNotFound(_0x4066a4,_0x364792){return function(_0x1d2815){if(!_0x1d2815){_0x4066a4[_0x67c0('0x17')](0x194);}return _0x1d2815;};}function handleError(_0x4dd729,_0x2ff986){_0x2ff986=_0x2ff986||0x1f4;return function(_0x5d87eb){logger[_0x67c0('0x25')](_0x5d87eb['stack']);if(_0x5d87eb['name']){delete _0x5d87eb[_0x67c0('0x26')];}_0x4dd729['status'](_0x2ff986)[_0x67c0('0x27')](_0x5d87eb);};}exports[_0x67c0('0x28')]=function(_0x331a10,_0x20f8c7){var _0x2f08a4={},_0x5c02da={},_0x4f09cf={'count':0x0,'rows':[]};var _0x4c21d9=_[_0x67c0('0x29')](db[_0x67c0('0x2a')]['rawAttributes'],function(_0x396102){return{'name':_0x396102[_0x67c0('0x2b')],'type':_0x396102['type'][_0x67c0('0x2c')]};});_0x5c02da[_0x67c0('0x2d')]=_['map'](_0x4c21d9,_0x67c0('0x26'));_0x5c02da[_0x67c0('0x2e')]=_['keys'](_0x331a10[_0x67c0('0x2e')]);_0x5c02da[_0x67c0('0x2f')]=_[_0x67c0('0x30')](_0x5c02da[_0x67c0('0x2d')],_0x5c02da['query']);_0x2f08a4[_0x67c0('0x31')]=_[_0x67c0('0x30')](_0x5c02da['model'],qs[_0x67c0('0x32')](_0x331a10[_0x67c0('0x2e')][_0x67c0('0x32')]));_0x2f08a4[_0x67c0('0x31')]=_0x2f08a4[_0x67c0('0x31')]['length']?_0x2f08a4[_0x67c0('0x31')]:_0x5c02da[_0x67c0('0x2d')];if(!_0x331a10[_0x67c0('0x2e')][_0x67c0('0x33')](_0x67c0('0x34'))){_0x2f08a4[_0x67c0('0x1c')]=qs[_0x67c0('0x1c')](_0x331a10[_0x67c0('0x2e')][_0x67c0('0x1c')]);_0x2f08a4['offset']=qs[_0x67c0('0x1a')](_0x331a10[_0x67c0('0x2e')][_0x67c0('0x1a')]);}_0x2f08a4['order']=qs[_0x67c0('0x35')](_0x331a10['query'][_0x67c0('0x35')]);_0x2f08a4[_0x67c0('0x36')]=qs[_0x67c0('0x2f')](_[_0x67c0('0x37')](_0x331a10[_0x67c0('0x2e')],_0x5c02da[_0x67c0('0x2f')]),_0x4c21d9);if(_0x331a10[_0x67c0('0x2e')][_0x67c0('0x38')]){_0x2f08a4[_0x67c0('0x36')]=_[_0x67c0('0x39')](_0x2f08a4[_0x67c0('0x36')],{'$or':_[_0x67c0('0x29')](_0x4c21d9,function(_0x942e4d){if(_0x942e4d[_0x67c0('0x3a')]!==_0x67c0('0x3b')){var _0x3dfb44={};_0x3dfb44[_0x942e4d[_0x67c0('0x26')]]={'$like':'%'+_0x331a10[_0x67c0('0x2e')][_0x67c0('0x38')]+'%'};return _0x3dfb44;}})});}_0x2f08a4=_[_0x67c0('0x39')]({},_0x2f08a4,_0x331a10['options']);var _0x30bf04={'where':_0x2f08a4[_0x67c0('0x36')]};return db['Attachment']['count'](_0x30bf04)[_0x67c0('0x23')](function(_0x1a540b){_0x4f09cf[_0x67c0('0x1d')]=_0x1a540b;if(_0x331a10[_0x67c0('0x2e')][_0x67c0('0x3c')]){_0x2f08a4[_0x67c0('0x3d')]=[{'all':!![]}];}return db['Attachment'][_0x67c0('0x3e')](_0x2f08a4);})['then'](function(_0x512f5d){_0x4f09cf[_0x67c0('0x3f')]=_0x512f5d;return _0x4f09cf;})[_0x67c0('0x23')](respondWithFilteredResult(_0x20f8c7,_0x2f08a4))[_0x67c0('0x40')](handleError(_0x20f8c7,null));};exports[_0x67c0('0x41')]=function(_0x173c44,_0x8464d7){var _0x19386e={'raw':!![],'where':{'id':_0x173c44[_0x67c0('0x42')]['id']}},_0x4e171a={};_0x4e171a[_0x67c0('0x2d')]=_[_0x67c0('0x43')](db[_0x67c0('0x2a')]['rawAttributes']);_0x4e171a[_0x67c0('0x2e')]=_[_0x67c0('0x43')](_0x173c44['query']);_0x4e171a[_0x67c0('0x2f')]=_[_0x67c0('0x30')](_0x4e171a[_0x67c0('0x2d')],_0x4e171a[_0x67c0('0x2e')]);_0x19386e[_0x67c0('0x31')]=_[_0x67c0('0x30')](_0x4e171a['model'],qs[_0x67c0('0x32')](_0x173c44[_0x67c0('0x2e')]['fields']));_0x19386e[_0x67c0('0x31')]=_0x19386e[_0x67c0('0x31')][_0x67c0('0x44')]?_0x19386e['attributes']:_0x4e171a['model'];if(_0x173c44[_0x67c0('0x2e')]['includeAll']){_0x19386e[_0x67c0('0x3d')]=[{'all':!![]}];}_0x19386e=_[_0x67c0('0x39')]({},_0x19386e,_0x173c44[_0x67c0('0x45')]);return db[_0x67c0('0x2a')][_0x67c0('0x46')](_0x19386e)['then'](handleEntityNotFound(_0x8464d7,null))['then'](respondWithResult(_0x8464d7,null))['catch'](handleError(_0x8464d7,null));};exports[_0x67c0('0x47')]=function(_0x5a5d53,_0x4357b3){var _0x1f87c3={'where':{'id':_0x5a5d53['params']['id']}},_0x43e925={};_0x43e925['model']=_[_0x67c0('0x43')](db[_0x67c0('0x2a')]['rawAttributes']);_0x1f87c3['attributes']=_[_0x67c0('0x30')](_0x43e925[_0x67c0('0x2d')],qs['fields'](_0x5a5d53[_0x67c0('0x2e')][_0x67c0('0x32')]));_0x1f87c3[_0x67c0('0x31')]=_0x1f87c3[_0x67c0('0x31')][_0x67c0('0x44')]?_0x1f87c3[_0x67c0('0x31')]:_0x43e925[_0x67c0('0x2d')];if(_0x5a5d53[_0x67c0('0x2e')]['includeAll']){_0x1f87c3[_0x67c0('0x3d')]=[{'all':!![]}];}_0x1f87c3=_[_0x67c0('0x39')]({},_0x1f87c3,_0x5a5d53['options']);return db[_0x67c0('0x2a')]['find'](_0x1f87c3)[_0x67c0('0x23')](handleEntityNotFound(_0x4357b3,null))[_0x67c0('0x23')](function(_0x157dad){if(_0x157dad){var _0x14935b=_0x157dad[_0x67c0('0x48')]({'plain':!![]});_0x14935b=qs[_0x67c0('0x49')](_0x14935b,['id','createdAt',_0x67c0('0x4a')]);_0x5a5d53[_0x67c0('0x4b')]=_['omit'](_0x5a5d53[_0x67c0('0x4b')],['id',_0x67c0('0x4c'),_0x67c0('0x4a')]);return db['Attachment'][_0x67c0('0x4d')](_[_0x67c0('0x39')](_0x14935b,_0x5a5d53[_0x67c0('0x4b')]),{'include':_0x5a5d53[_0x67c0('0x2e')][_0x67c0('0x3c')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x4357b3,0xc9))[_0x67c0('0x40')](handleError(_0x4357b3,null));};exports[_0x67c0('0x21')]=function(_0x6ec3ca,_0x5f371d){if(_0x6ec3ca[_0x67c0('0x4b')]['id']){delete _0x6ec3ca['body']['id'];}return db[_0x67c0('0x2a')]['find']({'where':{'id':_0x6ec3ca['params']['id']}})['then'](handleEntityNotFound(_0x5f371d,null))['then'](saveUpdates(_0x6ec3ca[_0x67c0('0x4b')],null))[_0x67c0('0x23')](respondWithResult(_0x5f371d,null))[_0x67c0('0x40')](handleError(_0x5f371d,null));};exports[_0x67c0('0x22')]=function(_0x365427,_0x252579){return db[_0x67c0('0x2a')][_0x67c0('0x46')]({'where':{'id':_0x365427['params']['id']}})['then'](handleEntityNotFound(_0x252579,null))[_0x67c0('0x23')](removeEntity(_0x252579,null))[_0x67c0('0x40')](handleError(_0x252579,null));};exports[_0x67c0('0x4d')]=function(_0xa559e5,_0x524cb2,_0x56d6c6){_0xa559e5['body']['name']=_0xa559e5[_0x67c0('0x4e')]['originalname'];_0xa559e5['body']['basename']=_0xa559e5[_0x67c0('0x4e')][_0x67c0('0x4f')];_0xa559e5[_0x67c0('0x4b')][_0x67c0('0x3a')]=_0xa559e5[_0x67c0('0x4e')][_0x67c0('0x50')];return db['Attachment'][_0x67c0('0x4d')](_0xa559e5['body'])['then'](respondWithResult(_0x524cb2,0xc9))[_0x67c0('0x40')](handleError(_0x524cb2,null));};exports['download']=function(_0x5c81d8,_0x537b63,_0x14dd0c){return db[_0x67c0('0x2a')][_0x67c0('0x51')]({'where':{'id':_0x5c81d8['params']['id']},'raw':!![]})[_0x67c0('0x23')](handleEntityNotFound(_0x537b63,null))[_0x67c0('0x23')](function(_0x5817d8){if(_0x5817d8){var _0x8c3ee6=_0x5817d8[_0x67c0('0x52')]!==null;var _0xa16385=path[_0x67c0('0x53')](config['root'],_0x67c0('0x54'));if(_0x8c3ee6){_0xa16385=path[_0x67c0('0x53')](_0xa16385,_0x67c0('0x55'));}var _0x3f7619=path[_0x67c0('0x53')](_0xa16385,_0x5817d8[_0x67c0('0x56')]);return _0x537b63[_0x67c0('0x57')](_0x3f7619);}})[_0x67c0('0x40')](handleError(_0x537b63,null));};
\ No newline at end of file
index e1cb8b3..6a286bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb553=['exports','define','Attachment','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./attachment.attributes'];(function(_0x358806,_0x322b66){var _0x19fdcb=function(_0xe01b8d){while(--_0xe01b8d){_0x358806['push'](_0x358806['shift']());}};_0x19fdcb(++_0x322b66);}(_0xb553,0x13b));var _0x3b55=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xb553[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0x3b55('0x0'));var util=require(_0x3b55('0x1'));var logger=require(_0x3b55('0x2'))(_0x3b55('0x3'));var moment=require(_0x3b55('0x4'));var BPromise=require(_0x3b55('0x5'));var rp=require(_0x3b55('0x6'));var fs=require('fs');var path=require(_0x3b55('0x7'));var rimraf=require('rimraf');var config=require(_0x3b55('0x8'));var attributes=require(_0x3b55('0x9'));module[_0x3b55('0xa')]=function(_0x4b6c92,_0x345a80){return _0x4b6c92[_0x3b55('0xb')](_0x3b55('0xc'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x693d=['request-promise','rimraf','../../config/environment','./attachment.attributes','define','Attachment','attachments','lodash','util','../../config/logger','moment','bluebird'];(function(_0x170495,_0x33ca85){var _0x2dfcf9=function(_0xd18d4e){while(--_0xd18d4e){_0x170495['push'](_0x170495['shift']());}};_0x2dfcf9(++_0x33ca85);}(_0x693d,0xbb));var _0xd693=function(_0x1367b5,_0xeb1a4){_0x1367b5=_0x1367b5-0x0;var _0x296024=_0x693d[_0x1367b5];return _0x296024;};'use strict';var _=require(_0xd693('0x0'));var util=require(_0xd693('0x1'));var logger=require(_0xd693('0x2'))('api');var moment=require(_0xd693('0x3'));var BPromise=require(_0xd693('0x4'));var rp=require(_0xd693('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd693('0x6'));var config=require(_0xd693('0x7'));var attributes=require(_0xd693('0x8'));module['exports']=function(_0x4a05b6,_0x1a7568){return _0x4a05b6[_0xd693('0x9')](_0xd693('0xa'),attributes,{'tableName':_0xd693('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe4deee..a0f4002 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cfa=['util','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','stringify','error','Attachment,\x20%s,\x20%s','message','result','CreateAttachment','Attachment','create','body','options','raw','catch','lodash'];(function(_0x5cfced,_0x200283){var _0x46f026=function(_0x5433d9){while(--_0x5433d9){_0x5cfced['push'](_0x5cfced['shift']());}};_0x46f026(++_0x200283);}(_0x0cfa,0x18f));var _0xa0cf=function(_0x32b257,_0x4868b0){_0x32b257=_0x32b257-0x0;var _0x53a754=_0x0cfa[_0x32b257];return _0x53a754;};'use strict';var _=require(_0xa0cf('0x0'));var util=require(_0xa0cf('0x1'));var moment=require(_0xa0cf('0x2'));var BPromise=require(_0xa0cf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa0cf('0x4'));var logger=require('../../config/logger')(_0xa0cf('0x5'));var config=require(_0xa0cf('0x6'));var jayson=require(_0xa0cf('0x7'));var client=jayson[_0xa0cf('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27eb15,_0x5d9035,_0x232245){return new BPromise(function(_0x5f0054,_0xdee9d7){return client['request'](_0x27eb15,_0x232245)[_0xa0cf('0x9')](function(_0xaf7216){logger[_0xa0cf('0xa')]('Attachment,\x20%s,\x20%s',_0x5d9035,_0xa0cf('0xb'));logger[_0xa0cf('0xc')]('Attachment,\x20%s,\x20%s,\x20%s',_0x5d9035,'request\x20sent',JSON[_0xa0cf('0xd')](_0xaf7216));if(_0xaf7216[_0xa0cf('0xe')]){if(_0xaf7216[_0xa0cf('0xe')]['code']===0x1f4){logger[_0xa0cf('0xe')](_0xa0cf('0xf'),_0x5d9035,_0xaf7216[_0xa0cf('0xe')][_0xa0cf('0x10')]);return _0xdee9d7(_0xaf7216[_0xa0cf('0xe')][_0xa0cf('0x10')]);}logger[_0xa0cf('0xe')]('Attachment,\x20%s,\x20%s',_0x5d9035,_0xaf7216[_0xa0cf('0xe')][_0xa0cf('0x10')]);return _0x5f0054(_0xaf7216[_0xa0cf('0xe')]['message']);}else{logger[_0xa0cf('0xa')](_0xa0cf('0xf'),_0x5d9035,_0xa0cf('0xb'));_0x5f0054(_0xaf7216[_0xa0cf('0x11')][_0xa0cf('0x10')]);}})['catch'](function(_0x19e263){logger[_0xa0cf('0xe')]('Attachment,\x20%s,\x20%s',_0x5d9035,_0x19e263);_0xdee9d7(_0x19e263);});});}exports[_0xa0cf('0x12')]=function(_0x36c524){var _0x53a186=this;return new Promise(function(_0x112ced,_0x175727){return db[_0xa0cf('0x13')][_0xa0cf('0x14')](_0x36c524[_0xa0cf('0x15')],{'raw':_0x36c524[_0xa0cf('0x16')]?_0x36c524['options'][_0xa0cf('0x17')]===undefined?!![]:![]:!![]})[_0xa0cf('0x9')](function(_0x3551df){logger[_0xa0cf('0xa')](_0xa0cf('0x12'),_0x36c524);logger[_0xa0cf('0xc')](_0xa0cf('0x12'),_0x36c524,JSON[_0xa0cf('0xd')](_0x3551df));_0x112ced(_0x3551df);})[_0xa0cf('0x18')](function(_0x2137ea){logger[_0xa0cf('0xe')]('CreateAttachment',_0x2137ea['message'],_0x36c524);_0x175727(_0x53a186['error'](0x1f4,_0x2137ea['message']));});});};
\ No newline at end of file
+var _0x1782=['code','Attachment,\x20%s,\x20%s','message','catch','CreateAttachment','Attachment','create','body','options','raw','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2eb90d,_0x1d7240){var _0x30c7cd=function(_0xd9e968){while(--_0xd9e968){_0x2eb90d['push'](_0x2eb90d['shift']());}};_0x30c7cd(++_0x1d7240);}(_0x1782,0x13e));var _0x2178=function(_0x3ab14c,_0x31d526){_0x3ab14c=_0x3ab14c-0x0;var _0x4946e6=_0x1782[_0x3ab14c];return _0x4946e6;};'use strict';var _=require(_0x2178('0x0'));var util=require('util');var moment=require(_0x2178('0x1'));var BPromise=require(_0x2178('0x2'));var rs=require(_0x2178('0x3'));var fs=require('fs');var Redis=require(_0x2178('0x4'));var db=require(_0x2178('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2178('0x6'))(_0x2178('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2178('0x8')][_0x2178('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50ad34,_0x53b9f9,_0x4cf22a){return new BPromise(function(_0x3b4115,_0x2b3991){return client[_0x2178('0xa')](_0x50ad34,_0x4cf22a)[_0x2178('0xb')](function(_0x1cb1e6){logger[_0x2178('0xc')]('Attachment,\x20%s,\x20%s',_0x53b9f9,_0x2178('0xd'));logger[_0x2178('0xe')](_0x2178('0xf'),_0x53b9f9,_0x2178('0xd'),JSON[_0x2178('0x10')](_0x1cb1e6));if(_0x1cb1e6[_0x2178('0x11')]){if(_0x1cb1e6[_0x2178('0x11')][_0x2178('0x12')]===0x1f4){logger[_0x2178('0x11')](_0x2178('0x13'),_0x53b9f9,_0x1cb1e6['error'][_0x2178('0x14')]);return _0x2b3991(_0x1cb1e6[_0x2178('0x11')]['message']);}logger[_0x2178('0x11')](_0x2178('0x13'),_0x53b9f9,_0x1cb1e6[_0x2178('0x11')][_0x2178('0x14')]);return _0x3b4115(_0x1cb1e6[_0x2178('0x11')]['message']);}else{logger['info']('Attachment,\x20%s,\x20%s',_0x53b9f9,_0x2178('0xd'));_0x3b4115(_0x1cb1e6['result'][_0x2178('0x14')]);}})[_0x2178('0x15')](function(_0x5edc68){logger['error'](_0x2178('0x13'),_0x53b9f9,_0x5edc68);_0x2b3991(_0x5edc68);});});}exports[_0x2178('0x16')]=function(_0x561990){var _0x3d7e36=this;return new Promise(function(_0x39dd60,_0x1cece2){return db[_0x2178('0x17')][_0x2178('0x18')](_0x561990[_0x2178('0x19')],{'raw':_0x561990[_0x2178('0x1a')]?_0x561990[_0x2178('0x1a')][_0x2178('0x1b')]===undefined?!![]:![]:!![]})[_0x2178('0xb')](function(_0x1d2dd5){logger[_0x2178('0xc')]('CreateAttachment',_0x561990);logger[_0x2178('0xe')](_0x2178('0x16'),_0x561990,JSON[_0x2178('0x10')](_0x1d2dd5));_0x39dd60(_0x1d2dd5);})[_0x2178('0x15')](function(_0x4335f2){logger[_0x2178('0x11')](_0x2178('0x16'),_0x4335f2[_0x2178('0x14')],_0x561990);_0x1cece2(_0x3d7e36[_0x2178('0x11')](0x1f4,_0x4335f2[_0x2178('0x14')]));});});};
\ No newline at end of file
index c6f5309..d6ca0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0x4f3bcd,_0x3cb1a3){var _0x2a15e7=function(_0x27f293){while(--_0x27f293){_0x4f3bcd['push'](_0x4f3bcd['shift']());}};_0x2a15e7(++_0x3cb1a3);}(_0x757a,0xde));var _0xa757=function(_0x5b2b5c,_0x295865){_0x5b2b5c=_0x5b2b5c-0x0;var _0x55c5bf=_0x757a[_0x5b2b5c];return _0x55c5bf;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
+var _0x5f2f=['show','/:id/download','download','post','/:id/clone','clone','root','server/files/attachments/','format','now','originalname','replace','single','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./attachment.controller','get','isAuthenticated','index','/:id'];(function(_0x3c7346,_0x590a48){var _0x58ce69=function(_0x2e94eb){while(--_0x2e94eb){_0x3c7346['push'](_0x3c7346['shift']());}};_0x58ce69(++_0x590a48);}(_0x5f2f,0x73));var _0xf5f2=function(_0x9f8aa0,_0x291b27){_0x9f8aa0=_0x9f8aa0-0x0;var _0x2e3753=_0x5f2f[_0x9f8aa0];return _0x2e3753;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')](_0xf5f2('0x11'),auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x53fb33,_0xa7e1a6,_0x151aba){_0x151aba(null,path['join'](config[_0xf5f2('0x13')],_0xf5f2('0x14')));},'filename':function(_0x331482,_0x3f2997,_0x59bb6c){_0x59bb6c(null,util[_0xf5f2('0x15')]('%s-%s',Date[_0xf5f2('0x16')](),_0x3f2997[_0xf5f2('0x17')][_0xf5f2('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf5f2('0x10')]('/',upload[_0xf5f2('0x19')]('file'),controller[_0xf5f2('0x1a')]);router[_0xf5f2('0x1b')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1c')]);router[_0xf5f2('0x1d')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1e')]);module[_0xf5f2('0x1f')]=router;
\ No newline at end of file
index 647ee73..a52f498 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b4f=['../../components/auth/service','signToken','../../config/utils','authenticate','google','profile','email','callback','/login','use','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','then','User','find','value','admin','user','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','passport','passport-google-oauth20','Strategy','moment','../../mysqldb','../../config/environment'];(function(_0x47794f,_0x12c9b3){var _0x2ca51d=function(_0x43deb3){while(--_0x43deb3){_0x47794f['push'](_0x47794f['shift']());}};_0x2ca51d(++_0x12c9b3);}(_0x3b4f,0x176));var _0xf3b4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3b4f[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var passport=require(_0xf3b4('0x0'));var GoogleStrategy=require(_0xf3b4('0x1'))[_0xf3b4('0x2')];var moment=require(_0xf3b4('0x3'));var db=require(_0xf3b4('0x4'))['db'];var config=require(_0xf3b4('0x5'));var signToken=require(_0xf3b4('0x6'))[_0xf3b4('0x7')];var utils=require(_0xf3b4('0x8'));exports['login']=passport[_0xf3b4('0x9')](_0xf3b4('0xa'),{'failureRedirect':'/login','scope':[_0xf3b4('0xb'),_0xf3b4('0xc')],'session':![]});exports[_0xf3b4('0xd')]=passport[_0xf3b4('0x9')](_0xf3b4('0xa'),{'failureRedirect':_0xf3b4('0xe'),'session':![]});passport[_0xf3b4('0xf')](new GoogleStrategy({'clientID':config[_0xf3b4('0xa')]?config['google']['clientID']:'id','clientSecret':config['google']?config[_0xf3b4('0xa')][_0xf3b4('0x10')]:_0xf3b4('0x11'),'callbackURL':config['google']?config[_0xf3b4('0xa')][_0xf3b4('0x12')]:''},function(_0x476492,_0x4994e5,_0x5e05cf,_0x84927){var _0x45abe9,_0xd1bf8b;return db[_0xf3b4('0x13')][_0xf3b4('0x14')]({'where':{'id':0x1},'attributes':[_0xf3b4('0x15'),'blockDuration'],'raw':!![]})[_0xf3b4('0x16')](function(_0x10e47c){_0x45abe9=_0x10e47c;return db[_0xf3b4('0x17')][_0xf3b4('0x18')]({'where':{'email':_['map'](_0x5e05cf['emails'],_0xf3b4('0x19')),'role':{'$or':[_0xf3b4('0x1a'),_0xf3b4('0x1b'),'agent']}}});})[_0xf3b4('0x16')](function(_0x4f606a){_0xd1bf8b=_0x4f606a;if(_0xd1bf8b){if(_0xd1bf8b[_0xf3b4('0x1c')]){return _0x84927(_0xf3b4('0x1d'));}else if(_0x45abe9[_0xf3b4('0x1e')]>0x0){if(_0xd1bf8b[_0xf3b4('0x1f')]){if(moment(_0xd1bf8b[_0xf3b4('0x20')])[_0xf3b4('0x21')](_0x45abe9['blockDuration'],_0xf3b4('0x22'))>moment()){return _0x84927(_0xf3b4('0x1d'));}else{return utils[_0xf3b4('0x23')](_0xd1bf8b,0x0,![],null)[_0xf3b4('0x16')](function(){return utils[_0xf3b4('0x24')](_0xd1bf8b);})[_0xf3b4('0x16')](function(){return _0x84927(null,_0xd1bf8b);});}}else{return utils[_0xf3b4('0x24')](_0xd1bf8b)[_0xf3b4('0x16')](function(){return _0x84927(null,_0xd1bf8b);});}}else{return utils[_0xf3b4('0x24')](_0xd1bf8b)[_0xf3b4('0x16')](function(){return _0x84927(null,_0xd1bf8b);});}}return _0x84927(_0xf3b4('0x1d'));})[_0xf3b4('0x25')](function(_0x27847e){_0x84927(_0x27847e);});}));
\ No newline at end of file
+var _0x8c99=['clearBlockUser','getLicense','catch','passport','Strategy','moment','../../mysqldb','../../config/environment','signToken','../../config/utils','login','authenticate','/login','profile','google','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','then','User','map','value','admin','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','minutes'];(function(_0x389562,_0x3dc87d){var _0x5b126f=function(_0x10463b){while(--_0x10463b){_0x389562['push'](_0x389562['shift']());}};_0x5b126f(++_0x3dc87d);}(_0x8c99,0x6c));var _0x98c9=function(_0x35d8af,_0x14fd75){_0x35d8af=_0x35d8af-0x0;var _0x1d08b0=_0x8c99[_0x35d8af];return _0x1d08b0;};'use strict';var _=require('lodash');var passport=require(_0x98c9('0x0'));var GoogleStrategy=require('passport-google-oauth20')[_0x98c9('0x1')];var moment=require(_0x98c9('0x2'));var db=require(_0x98c9('0x3'))['db'];var config=require(_0x98c9('0x4'));var signToken=require('../../components/auth/service')[_0x98c9('0x5')];var utils=require(_0x98c9('0x6'));exports[_0x98c9('0x7')]=passport[_0x98c9('0x8')]('google',{'failureRedirect':_0x98c9('0x9'),'scope':[_0x98c9('0xa'),'email'],'session':![]});exports['callback']=passport['authenticate'](_0x98c9('0xb'),{'failureRedirect':_0x98c9('0x9'),'session':![]});passport[_0x98c9('0xc')](new GoogleStrategy({'clientID':config[_0x98c9('0xb')]?config['google'][_0x98c9('0xd')]:'id','clientSecret':config[_0x98c9('0xb')]?config[_0x98c9('0xb')][_0x98c9('0xe')]:_0x98c9('0xf'),'callbackURL':config[_0x98c9('0xb')]?config['google'][_0x98c9('0x10')]:''},function(_0x57ed0c,_0x19090c,_0x16d332,_0x4dd4a1){var _0x5be7a5,_0x594785;return db[_0x98c9('0x11')][_0x98c9('0x12')]({'where':{'id':0x1},'attributes':[_0x98c9('0x13'),_0x98c9('0x14')],'raw':!![]})[_0x98c9('0x15')](function(_0x2cc74a){_0x5be7a5=_0x2cc74a;return db[_0x98c9('0x16')]['find']({'where':{'email':_[_0x98c9('0x17')](_0x16d332['emails'],_0x98c9('0x18')),'role':{'$or':[_0x98c9('0x19'),'user',_0x98c9('0x1a')]}}});})[_0x98c9('0x15')](function(_0x36d6c3){_0x594785=_0x36d6c3;if(_0x594785){if(_0x594785[_0x98c9('0x1b')]){return _0x4dd4a1(_0x98c9('0x1c'));}else if(_0x5be7a5[_0x98c9('0x14')]>0x0){if(_0x594785[_0x98c9('0x1d')]){if(moment(_0x594785[_0x98c9('0x1e')])['add'](_0x5be7a5[_0x98c9('0x14')],_0x98c9('0x1f'))>moment()){return _0x4dd4a1(_0x98c9('0x1c'));}else{return utils[_0x98c9('0x20')](_0x594785,0x0,![],null)[_0x98c9('0x15')](function(){return utils['getLicense'](_0x594785);})[_0x98c9('0x15')](function(){return _0x4dd4a1(null,_0x594785);});}}else{return utils[_0x98c9('0x21')](_0x594785)['then'](function(){return _0x4dd4a1(null,_0x594785);});}}else{return utils[_0x98c9('0x21')](_0x594785)[_0x98c9('0x15')](function(){return _0x4dd4a1(null,_0x594785);});}}return _0x4dd4a1('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x98c9('0x22')](function(_0x2e4618){_0x4dd4a1(_0x2e4618);});}));
\ No newline at end of file
index a8626f2..bc06fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc41=['passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','isMiddleware','setTokenCookie'];(function(_0x24529e,_0x20b864){var _0x4f37ba=function(_0x1532e3){while(--_0x1532e3){_0x24529e['push'](_0x24529e['shift']());}};_0x4f37ba(++_0x20b864);}(_0xbc41,0x14d));var _0x1bc4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc41[_0x3dd15e];return _0x231fd0;};'use strict';var express=require('express');var passport=require(_0x1bc4('0x0'));var router=express[_0x1bc4('0x1')]();var controller=require(_0x1bc4('0x2'));var userController=require(_0x1bc4('0x3'));var authService=require(_0x1bc4('0x4'));router[_0x1bc4('0x5')]('/',controller[_0x1bc4('0x6')]);router[_0x1bc4('0x5')]('/callback',controller['callback'],authService[_0x1bc4('0x7')],userController[_0x1bc4('0x6')],authService[_0x1bc4('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0xe39c=['../user/user.controller.js','../../components/auth/service','get','login','/callback','callback','isMiddleware','exports','express','passport','Router','./authGoogle.controller'];(function(_0x840e0,_0x41c12e){var _0x3b9c28=function(_0x20430a){while(--_0x20430a){_0x840e0['push'](_0x840e0['shift']());}};_0x3b9c28(++_0x41c12e);}(_0xe39c,0x98));var _0xce39=function(_0x2bda7e,_0x2b6d2f){_0x2bda7e=_0x2bda7e-0x0;var _0x10a523=_0xe39c[_0x2bda7e];return _0x10a523;};'use strict';var express=require(_0xce39('0x0'));var passport=require(_0xce39('0x1'));var router=express[_0xce39('0x2')]();var controller=require(_0xce39('0x3'));var userController=require(_0xce39('0x4'));var authService=require(_0xce39('0x5'));router[_0xce39('0x6')]('/',controller[_0xce39('0x7')]);router[_0xce39('0x6')](_0xce39('0x8'),controller[_0xce39('0x9')],authService[_0xce39('0xa')],userController[_0xce39('0x7')],authService['setTokenCookie']);module[_0xce39('0xb')]=router;
\ No newline at end of file
index 6bc7eb7..4524a18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe920=['body','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','User','find','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','securePassword','previousPasswords','validatePasswordHistory','Password\x20reset!','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','client','Setting','findOne','allowedLoginAttempts','blockDuration','name','password','blocked','blockedAt','admin','user','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','disabled','add','minutes','clearBlockUser','getLicense','MailAccount','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','pass','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','stringify','status','message','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','forgot','generate'];(function(_0x526caa,_0x1924ab){var _0x260d50=function(_0x1a9744){while(--_0x1a9744){_0x526caa['push'](_0x526caa['shift']());}};_0x260d50(++_0x1924ab);}(_0xe920,0xbe));var _0x0e92=function(_0x173452,_0x3aa870){_0x173452=_0x173452-0x0;var _0xee3fd0=_0xe920[_0x173452];return _0xee3fd0;};'use strict';var util=require(_0x0e92('0x0'));var passport=require(_0x0e92('0x1'));var LocalStrategy=require(_0x0e92('0x2'))[_0x0e92('0x3')];var jayson=require(_0x0e92('0x4'));var _=require(_0x0e92('0x5'));var rs=require(_0x0e92('0x6'));var moment=require(_0x0e92('0x7'));var db=require(_0x0e92('0x8'))['db'];var authService=require(_0x0e92('0x9'));var utils=require('../../config/utils');var client=jayson[_0x0e92('0xa')]['http']({'port':0x232b});function localAuthenticate(_0x40d9f2,_0x33a315,_0x2d921f,_0x176c3b){var _0x5662dc,_0x3dbc96;return db[_0x0e92('0xb')][_0x0e92('0xc')]({'where':{'id':0x1},'attributes':[_0x0e92('0xd'),_0x0e92('0xe')],'raw':!![]})['then'](function(_0x50fcf6){_0x5662dc=_0x50fcf6;return _0x40d9f2['findOne']({'attributes':['id',_0x0e92('0xf'),_0x0e92('0x10'),'salt','role','disabled',_0x0e92('0x11'),_0x0e92('0x12'),'loginAttempts'],'where':{'name':_0x33a315,'role':{'$or':[_0x0e92('0x13'),_0x0e92('0x14'),'agent']}}});})[_0x0e92('0x15')](function(_0x3ac8ec){if(!_0x3ac8ec||_0x3ac8ec&&_0x3ac8ec[_0x0e92('0xf')]!==_0x33a315){throw new Error(_0x0e92('0x16'));}else{_0x3dbc96=_0x3ac8ec;return _0x3dbc96;}})[_0x0e92('0x15')](function(){_0x3dbc96[_0x0e92('0x17')](_0x2d921f,function(_0x44dcd0,_0x5cce2d){var _0x5e70ab=_0x3dbc96[_0x0e92('0x18')]+0x1;if(_0x44dcd0){return _0x176c3b(_0x44dcd0);}else if(!_0x5cce2d){if(_0x3dbc96[_0x0e92('0x19')]){return _0x176c3b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x5662dc['allowedLoginAttempts']>0x0){if(_0x3dbc96[_0x0e92('0x11')]){if(_0x5662dc['blockDuration']>0x0){if(moment(_0x3dbc96[_0x0e92('0x12')])[_0x0e92('0x1a')](_0x5662dc[_0x0e92('0xe')],_0x0e92('0x1b'))>moment()){return _0x176c3b(null,![],{'message':_0x0e92('0x16')});}else{return utils[_0x0e92('0x1c')](_0x3dbc96,_0x5e70ab,![],null)[_0x0e92('0x15')](function(){return _0x176c3b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x176c3b(null,![],{'message':_0x0e92('0x16')});}}else{if(_0x5e70ab>=_0x5662dc['allowedLoginAttempts']){return utils[_0x0e92('0x1c')](_0x3dbc96,0x0,!![],moment())['then'](function(){return _0x176c3b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils['clearBlockUser'](_0x3dbc96,_0x5e70ab,![],null)[_0x0e92('0x15')](function(){return _0x176c3b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x176c3b(null,![],{'message':_0x0e92('0x16')});}}else{if(_0x3dbc96['disabled']){return _0x176c3b(null,![],{'message':_0x0e92('0x16')});}else if(_0x5662dc[_0x0e92('0xd')]>0x0){if(_0x3dbc96['blocked']){if(_0x5662dc[_0x0e92('0xe')]>0x0){if(moment(_0x3dbc96[_0x0e92('0x12')])['add'](_0x5662dc[_0x0e92('0xe')],'minutes')>moment()){return _0x176c3b(null,![],{'message':_0x0e92('0x16')});}else{return utils[_0x0e92('0x1c')](_0x3dbc96,0x0,![],null)[_0x0e92('0x15')](function(){return utils[_0x0e92('0x1d')](_0x3dbc96);})[_0x0e92('0x15')](function(){return _0x176c3b(null,_0x3dbc96);});}}else{return _0x176c3b(null,![],{'message':_0x0e92('0x16')});}}else{return utils[_0x0e92('0x1c')](_0x3dbc96,0x0,![],null)[_0x0e92('0x15')](function(){return utils[_0x0e92('0x1d')](_0x3dbc96);})[_0x0e92('0x15')](function(){return _0x176c3b(null,_0x3dbc96);})['catch'](function(_0x3eb532){return _0x176c3b(null,![],_0x3eb532);});}}else{if(_0x3dbc96['blocked']){return _0x176c3b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x0e92('0x1d')](_0x3dbc96)[_0x0e92('0x15')](function(){return _0x176c3b(null,_0x3dbc96);});}}}});})['catch'](function(_0x4d6728){return _0x176c3b(null,![],_0x4d6728);});}function sendServiceMail(_0x118390){return db[_0x0e92('0x1e')]['find']({'where':{'service':!![]},'attributes':['id','name',_0x0e92('0x1f')],'include':[{'model':db[_0x0e92('0x20')],'as':_0x0e92('0x21')}]})[_0x0e92('0x15')](function(_0x36538b){if(!_0x36538b){throw new Error(_0x0e92('0x22'));}var _0x3139bf={'tls':{'rejectUnauthorized':![]}};if(_0x36538b[_0x0e92('0x21')][_0x0e92('0x23')]){_0x3139bf[_0x0e92('0x23')]=_0x36538b[_0x0e92('0x21')][_0x0e92('0x23')];}else{_0x3139bf[_0x0e92('0x24')]=_0x36538b[_0x0e92('0x21')][_0x0e92('0x24')];_0x3139bf[_0x0e92('0x25')]=_0x36538b[_0x0e92('0x21')][_0x0e92('0x25')];_0x3139bf[_0x0e92('0x26')]=_0x36538b[_0x0e92('0x21')]['secure'];}if(_0x36538b[_0x0e92('0x21')][_0x0e92('0x27')]){_0x3139bf['auth']={'user':_0x36538b['Smtp'][_0x0e92('0x14')],'pass':_0x36538b[_0x0e92('0x21')][_0x0e92('0x28')]};}var _0x460275={'account':_0x3139bf,'message':_[_0x0e92('0x29')]({'from':util[_0x0e92('0x2a')](_0x0e92('0x2b'),_0x36538b[_0x0e92('0xf')],_0x36538b['email']||_0x36538b[_0x0e92('0x21')][_0x0e92('0x14')])},_0x118390)};return client[_0x0e92('0x2c')](_0x0e92('0x2d'),_0x460275);})[_0x0e92('0x15')](function(_0x1de2fc){if(_0x1de2fc[_0x0e92('0x2e')]){throw new Error(util[_0x0e92('0x2a')](_0x0e92('0x2f'),_0x1de2fc['error']['message']||JSON[_0x0e92('0x30')](_0x1de2fc[_0x0e92('0x2e')])));}return!![];});}function handleError(_0x47b511,_0x353952,_0x5df24d){return _0x47b511[_0x0e92('0x31')](_0x353952||0x1f4)['send']({'message':_0x5df24d?_0x5df24d[_0x0e92('0x32')]||_0x5df24d:''});}exports['login']=function(_0x2ffdc7,_0x27e32d,_0x194089){passport['authenticate']('local',function(_0x1ed61e,_0x19a32a,_0xd86fd8){var _0x49c904=_0x1ed61e||_0xd86fd8;if(_0x49c904){return handleError(_0x27e32d,0x191,_0x49c904);}if(!_0x19a32a){return handleError(_0x27e32d,0x194,{'message':_0x0e92('0x33')});}else{var _0x4db423={'payload':{'id':_0x19a32a['id'],'role':_0x19a32a['role']},'options':{'expiresIn':0x15180}};return authService[_0x0e92('0x34')](_0x4db423)[_0x0e92('0x15')](function(_0x4dcc57){_0x27e32d[_0x0e92('0x35')]({'id':_0x19a32a['id'],'token':_0x4dcc57,'statusCall':'','isAlreadyLogged':_0x19a32a['online']});});}})(_0x2ffdc7,_0x27e32d,_0x194089);};exports[_0x0e92('0x36')]=function(_0x188f78,_0x56bfbe,_0x14b4ae){if(!_0x188f78['body']['email']){return handleError(_0x56bfbe,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x2758f8=rs[_0x0e92('0x37')]();_0x188f78[_0x0e92('0x38')][_0x0e92('0x1f')]=_0x188f78['body']['email'][_0x0e92('0x39')]()[_0x0e92('0x3a')]();var _0x328570;return db[_0x0e92('0xb')]['findOne']({'where':{'id':0x1},'attributes':[_0x0e92('0xd'),_0x0e92('0xe')],'raw':!![]})[_0x0e92('0x15')](function(_0x1670bb){_0x328570=_0x1670bb;return db['User']['find']({'where':{'email':_0x188f78[_0x0e92('0x38')][_0x0e92('0x1f')]}});})['then'](function(_0x32948a){if(!_0x32948a){throw new Error(_0x0e92('0x3b'));}if(_0x32948a[_0x0e92('0x19')]){throw new Error(_0x0e92('0x3c'));}if(_0x32948a[_0x0e92('0x11')]){if(moment(_0x32948a[_0x0e92('0x12')])['add'](_0x328570[_0x0e92('0xe')],_0x0e92('0x1b'))>moment()){throw new Error(_0x0e92('0x3d'));}else{_0x32948a['blocked']=![];_0x32948a[_0x0e92('0x12')]=null;}}_0x32948a[_0x0e92('0x3e')]=_0x2758f8;_0x32948a[_0x0e92('0x3f')]=Date[_0x0e92('0x40')]()+0x36ee80;return _0x32948a[_0x0e92('0x41')]();})[_0x0e92('0x15')](function(){return sendServiceMail({'to':_0x188f78[_0x0e92('0x38')][_0x0e92('0x1f')],'subject':_0x0e92('0x42'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x0e92('0x43')+_0x188f78[_0x0e92('0x44')][_0x0e92('0x24')]+_0x0e92('0x45')+_0x2758f8+'\x0a\x0a'+_0x0e92('0x46')});})['then'](function(){_0x56bfbe[_0x0e92('0x31')](0xc8)[_0x0e92('0x47')]({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x4633e9){return handleError(_0x56bfbe,0x1f4,_0x4633e9);});};exports['reset']=function(_0x14e7ed,_0x15c21d,_0x40e101){return db[_0x0e92('0x48')][_0x0e92('0x49')]({'where':{'resetPasswordToken':_0x14e7ed['params'][_0x0e92('0x4a')],'resetPasswordExpires':{'$gt':Date[_0x0e92('0x40')]()}}})[_0x0e92('0x15')](function(_0x33cd4c){if(!_0x33cd4c){throw new Error(_0x0e92('0x4b'));}return db[_0x0e92('0xb')][_0x0e92('0xc')]({'attributes':['id','securePassword',_0x0e92('0x4c'),_0x0e92('0x4d')]})['then'](function(_0x5c3dcd){if(_0x5c3dcd[_0x0e92('0x4e')])authService['validatePasswordPattern'](_0x14e7ed[_0x0e92('0x38')]['password']);if(!_0x5c3dcd[_0x0e92('0x4c')]||!_0x33cd4c[_0x0e92('0x4f')])return _0x33cd4c;authService[_0x0e92('0x50')](_0x14e7ed[_0x0e92('0x38')][_0x0e92('0x10')],_0x33cd4c[_0x0e92('0x4f')],_0x5c3dcd[_0x0e92('0x4d')]);return _0x33cd4c;})[_0x0e92('0x15')](function(){_0x33cd4c[_0x0e92('0x10')]=_0x14e7ed['body'][_0x0e92('0x10')];_0x33cd4c[_0x0e92('0x3e')]=null;_0x33cd4c[_0x0e92('0x3f')]=null;return _0x33cd4c[_0x0e92('0x41')]();});})['then'](function(){_0x15c21d['status'](0xc8)[_0x0e92('0x47')]({'message':_0x0e92('0x51')});})['catch'](function(_0x38e1e8){return handleError(_0x15c21d,0x1f4,_0x38e1e8);});};passport['use'](new LocalStrategy({'usernameField':_0x0e92('0xf'),'passwordField':_0x0e92('0x10')},function(_0x2ef512,_0x3b90be,_0x2c8e0b){return localAuthenticate(db[_0x0e92('0x48')],_0x2ef512,_0x3b90be,_0x2c8e0b);}));
\ No newline at end of file
+var _0x0194=['name','password','salt','blocked','blockedAt','loginAttempts','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','add','minutes','clearBlockUser','disabled','getLicense','catch','MailAccount','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','format','\x22%s\x22\x20<%s>','request','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','find','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','Password\x20reset!','passport-local','Strategy','jayson/promise','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','http','Setting','findOne','allowedLoginAttempts','blockDuration','then'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x0194,0xf1));var _0x4019=function(_0x3a686d,_0x44fe1a){_0x3a686d=_0x3a686d-0x0;var _0x5b31d7=_0x0194[_0x3a686d];return _0x5b31d7;};'use strict';var util=require('util');var passport=require('passport');var LocalStrategy=require(_0x4019('0x0'))[_0x4019('0x1')];var jayson=require(_0x4019('0x2'));var _=require('lodash');var rs=require(_0x4019('0x3'));var moment=require(_0x4019('0x4'));var db=require(_0x4019('0x5'))['db'];var authService=require(_0x4019('0x6'));var utils=require(_0x4019('0x7'));var client=jayson['client'][_0x4019('0x8')]({'port':0x232b});function localAuthenticate(_0x2803a5,_0x3b47b6,_0x45b6d8,_0x5c4015){var _0x173f77,_0x598c33;return db[_0x4019('0x9')][_0x4019('0xa')]({'where':{'id':0x1},'attributes':[_0x4019('0xb'),_0x4019('0xc')],'raw':!![]})[_0x4019('0xd')](function(_0x5eb597){_0x173f77=_0x5eb597;return _0x2803a5['findOne']({'attributes':['id',_0x4019('0xe'),_0x4019('0xf'),_0x4019('0x10'),'role','disabled',_0x4019('0x11'),_0x4019('0x12'),_0x4019('0x13')],'where':{'name':_0x3b47b6,'role':{'$or':['admin',_0x4019('0x14'),_0x4019('0x15')]}}});})['then'](function(_0x4a90f7){if(!_0x4a90f7||_0x4a90f7&&_0x4a90f7['name']!==_0x3b47b6){throw new Error(_0x4019('0x16'));}else{_0x598c33=_0x4a90f7;return _0x598c33;}})[_0x4019('0xd')](function(){_0x598c33[_0x4019('0x17')](_0x45b6d8,function(_0x517dd8,_0x3e07b9){var _0x4e9dc0=_0x598c33[_0x4019('0x13')]+0x1;if(_0x517dd8){return _0x5c4015(_0x517dd8);}else if(!_0x3e07b9){if(_0x598c33['disabled']){return _0x5c4015(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x173f77['allowedLoginAttempts']>0x0){if(_0x598c33['blocked']){if(_0x173f77[_0x4019('0xc')]>0x0){if(moment(_0x598c33[_0x4019('0x12')])[_0x4019('0x18')](_0x173f77['blockDuration'],_0x4019('0x19'))>moment()){return _0x5c4015(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x4019('0x1a')](_0x598c33,_0x4e9dc0,![],null)[_0x4019('0xd')](function(){return _0x5c4015(null,![],{'message':_0x4019('0x16')});});}}else{return _0x5c4015(null,![],{'message':_0x4019('0x16')});}}else{if(_0x4e9dc0>=_0x173f77[_0x4019('0xb')]){return utils[_0x4019('0x1a')](_0x598c33,0x0,!![],moment())[_0x4019('0xd')](function(){return _0x5c4015(null,![],{'message':_0x4019('0x16')});});}else{return utils[_0x4019('0x1a')](_0x598c33,_0x4e9dc0,![],null)[_0x4019('0xd')](function(){return _0x5c4015(null,![],{'message':_0x4019('0x16')});});}}}else{return _0x5c4015(null,![],{'message':_0x4019('0x16')});}}else{if(_0x598c33[_0x4019('0x1b')]){return _0x5c4015(null,![],{'message':_0x4019('0x16')});}else if(_0x173f77[_0x4019('0xb')]>0x0){if(_0x598c33[_0x4019('0x11')]){if(_0x173f77[_0x4019('0xc')]>0x0){if(moment(_0x598c33['blockedAt'])[_0x4019('0x18')](_0x173f77['blockDuration'],_0x4019('0x19'))>moment()){return _0x5c4015(null,![],{'message':_0x4019('0x16')});}else{return utils['clearBlockUser'](_0x598c33,0x0,![],null)['then'](function(){return utils[_0x4019('0x1c')](_0x598c33);})['then'](function(){return _0x5c4015(null,_0x598c33);});}}else{return _0x5c4015(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils['clearBlockUser'](_0x598c33,0x0,![],null)[_0x4019('0xd')](function(){return utils[_0x4019('0x1c')](_0x598c33);})[_0x4019('0xd')](function(){return _0x5c4015(null,_0x598c33);})[_0x4019('0x1d')](function(_0x16d449){return _0x5c4015(null,![],_0x16d449);});}}else{if(_0x598c33[_0x4019('0x11')]){return _0x5c4015(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x4019('0x1c')](_0x598c33)[_0x4019('0xd')](function(){return _0x5c4015(null,_0x598c33);});}}}});})[_0x4019('0x1d')](function(_0x31dbce){return _0x5c4015(null,![],_0x31dbce);});}function sendServiceMail(_0xe73e86){return db[_0x4019('0x1e')]['find']({'where':{'service':!![]},'attributes':['id',_0x4019('0xe'),_0x4019('0x1f')],'include':[{'model':db[_0x4019('0x20')],'as':_0x4019('0x21')}]})[_0x4019('0xd')](function(_0x5b5d23){if(!_0x5b5d23){throw new Error(_0x4019('0x22'));}var _0x75525b={'tls':{'rejectUnauthorized':![]}};if(_0x5b5d23[_0x4019('0x21')]['service']){_0x75525b[_0x4019('0x23')]=_0x5b5d23['Smtp']['service'];}else{_0x75525b['host']=_0x5b5d23[_0x4019('0x21')][_0x4019('0x24')];_0x75525b[_0x4019('0x25')]=_0x5b5d23[_0x4019('0x21')][_0x4019('0x25')];_0x75525b[_0x4019('0x26')]=_0x5b5d23[_0x4019('0x21')][_0x4019('0x26')];}if(_0x5b5d23[_0x4019('0x21')][_0x4019('0x27')]){_0x75525b[_0x4019('0x28')]={'user':_0x5b5d23[_0x4019('0x21')][_0x4019('0x14')],'pass':_0x5b5d23[_0x4019('0x21')]['pass']};}var _0x566809={'account':_0x75525b,'message':_['merge']({'from':util[_0x4019('0x29')](_0x4019('0x2a'),_0x5b5d23[_0x4019('0xe')],_0x5b5d23[_0x4019('0x1f')]||_0x5b5d23[_0x4019('0x21')][_0x4019('0x14')])},_0xe73e86)};return client[_0x4019('0x2b')]('SendMail',_0x566809);})['then'](function(_0x23be4e){if(_0x23be4e[_0x4019('0x2c')]){throw new Error(util[_0x4019('0x29')](_0x4019('0x2d'),_0x23be4e[_0x4019('0x2c')][_0x4019('0x2e')]||JSON[_0x4019('0x2f')](_0x23be4e[_0x4019('0x2c')])));}return!![];});}function handleError(_0x536ad9,_0x3d7eb2,_0x2f6039){return _0x536ad9[_0x4019('0x30')](_0x3d7eb2||0x1f4)[_0x4019('0x31')]({'message':_0x2f6039?_0x2f6039['message']||_0x2f6039:''});}exports['login']=function(_0x5524e4,_0x4b3ecf,_0x77a234){passport[_0x4019('0x17')](_0x4019('0x32'),function(_0x3b748c,_0x5bb575,_0x4271df){var _0x5b24bc=_0x3b748c||_0x4271df;if(_0x5b24bc){return handleError(_0x4b3ecf,0x191,_0x5b24bc);}if(!_0x5bb575){return handleError(_0x4b3ecf,0x194,{'message':_0x4019('0x33')});}else{var _0x5e3d53={'payload':{'id':_0x5bb575['id'],'role':_0x5bb575['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x5e3d53)['then'](function(_0x3add88){_0x4b3ecf[_0x4019('0x34')]({'id':_0x5bb575['id'],'token':_0x3add88,'statusCall':'','isAlreadyLogged':_0x5bb575[_0x4019('0x35')]});});}})(_0x5524e4,_0x4b3ecf,_0x77a234);};exports[_0x4019('0x36')]=function(_0x14cc5d,_0x53d223,_0x1630b6){if(!_0x14cc5d[_0x4019('0x37')][_0x4019('0x1f')]){return handleError(_0x53d223,0x1f4,{'message':_0x4019('0x38')});}var _0x8be519=rs[_0x4019('0x39')]();_0x14cc5d[_0x4019('0x37')][_0x4019('0x1f')]=_0x14cc5d[_0x4019('0x37')][_0x4019('0x1f')]['trim']()[_0x4019('0x3a')]();var _0x107ff7;return db[_0x4019('0x9')]['findOne']({'where':{'id':0x1},'attributes':[_0x4019('0xb'),'blockDuration'],'raw':!![]})[_0x4019('0xd')](function(_0x4edc19){_0x107ff7=_0x4edc19;return db[_0x4019('0x3b')]['find']({'where':{'email':_0x14cc5d[_0x4019('0x37')]['email']}});})[_0x4019('0xd')](function(_0x65f55e){if(!_0x65f55e){throw new Error(_0x4019('0x3c'));}if(_0x65f55e[_0x4019('0x1b')]){throw new Error(_0x4019('0x3d'));}if(_0x65f55e['blocked']){if(moment(_0x65f55e['blockedAt'])[_0x4019('0x18')](_0x107ff7[_0x4019('0xc')],_0x4019('0x19'))>moment()){throw new Error(_0x4019('0x3e'));}else{_0x65f55e[_0x4019('0x11')]=![];_0x65f55e[_0x4019('0x12')]=null;}}_0x65f55e[_0x4019('0x3f')]=_0x8be519;_0x65f55e[_0x4019('0x40')]=Date['now']()+0x36ee80;return _0x65f55e[_0x4019('0x41')]();})['then'](function(){return sendServiceMail({'to':_0x14cc5d[_0x4019('0x37')][_0x4019('0x1f')],'subject':_0x4019('0x42'),'text':_0x4019('0x43')+_0x4019('0x44')+_0x4019('0x45')+_0x14cc5d[_0x4019('0x46')][_0x4019('0x24')]+'/reset/'+_0x8be519+'\x0a\x0a'+_0x4019('0x47')});})[_0x4019('0xd')](function(){_0x53d223[_0x4019('0x30')](0xc8)[_0x4019('0x31')]({'message':_0x4019('0x48')});})[_0x4019('0x1d')](function(_0x2bbd5c){return handleError(_0x53d223,0x1f4,_0x2bbd5c);});};exports['reset']=function(_0x315a06,_0x5beb65,_0x43ba3b){return db[_0x4019('0x3b')][_0x4019('0x49')]({'where':{'resetPasswordToken':_0x315a06[_0x4019('0x4a')][_0x4019('0x4b')],'resetPasswordExpires':{'$gt':Date[_0x4019('0x4c')]()}}})['then'](function(_0xb38d96){if(!_0xb38d96){throw new Error(_0x4019('0x4d'));}return db[_0x4019('0x9')][_0x4019('0xa')]({'attributes':['id',_0x4019('0x4e'),_0x4019('0x4f'),'passwordHistoryLimit']})[_0x4019('0xd')](function(_0x1816f8){if(_0x1816f8[_0x4019('0x4e')])authService[_0x4019('0x50')](_0x315a06['body']['password']);if(!_0x1816f8[_0x4019('0x4f')]||!_0xb38d96[_0x4019('0x51')])return _0xb38d96;authService[_0x4019('0x52')](_0x315a06[_0x4019('0x37')][_0x4019('0xf')],_0xb38d96[_0x4019('0x51')],_0x1816f8[_0x4019('0x53')]);return _0xb38d96;})[_0x4019('0xd')](function(){_0xb38d96['password']=_0x315a06[_0x4019('0x37')][_0x4019('0xf')];_0xb38d96['resetPasswordToken']=null;_0xb38d96[_0x4019('0x40')]=null;return _0xb38d96[_0x4019('0x41')]();});})[_0x4019('0xd')](function(){_0x5beb65['status'](0xc8)[_0x4019('0x31')]({'message':_0x4019('0x54')});})['catch'](function(_0x5972c0){return handleError(_0x5beb65,0x1f4,_0x5972c0);});};passport['use'](new LocalStrategy({'usernameField':_0x4019('0xe'),'passwordField':'password'},function(_0xbe8262,_0xe53329,_0x45b57a){return localAuthenticate(db[_0x4019('0x3b')],_0xbe8262,_0xe53329,_0x45b57a);}));
\ No newline at end of file
index cc7d66e..2c43da2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a6=['post','login','/forgot','forgot','/reset/:token','reset','exports','express','Router','./authLocal.controller'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x30a6,0x15b));var _0x630a=function(_0x39bb37,_0x2a1d85){_0x39bb37=_0x39bb37-0x0;var _0x57709f=_0x30a6[_0x39bb37];return _0x57709f;};'use strict';var express=require(_0x630a('0x0'));var router=express[_0x630a('0x1')]();var controller=require(_0x630a('0x2'));router[_0x630a('0x3')]('/',controller[_0x630a('0x4')]);router[_0x630a('0x3')](_0x630a('0x5'),controller[_0x630a('0x6')]);router[_0x630a('0x3')](_0x630a('0x7'),controller[_0x630a('0x8')]);module[_0x630a('0x9')]=router;
\ No newline at end of file
+var _0x54b4=['Router','./authLocal.controller','post','login','forgot','/reset/:token','exports','express'];(function(_0x4284fc,_0x3cdea6){var _0x38fbd6=function(_0x59728f){while(--_0x59728f){_0x4284fc['push'](_0x4284fc['shift']());}};_0x38fbd6(++_0x3cdea6);}(_0x54b4,0x1b7));var _0x454b=function(_0x5cded3,_0x57b34d){_0x5cded3=_0x5cded3-0x0;var _0x39978e=_0x54b4[_0x5cded3];return _0x39978e;};'use strict';var express=require(_0x454b('0x0'));var router=express[_0x454b('0x1')]();var controller=require(_0x454b('0x2'));router[_0x454b('0x3')]('/',controller[_0x454b('0x4')]);router[_0x454b('0x3')]('/forgot',controller[_0x454b('0x5')]);router[_0x454b('0x3')](_0x454b('0x6'),controller['reset']);module[_0x454b('0x7')]=router;
\ No newline at end of file
index 89bcf43..8dc8936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x801c=['STRING','BOOLEAN','INTEGER','exports'];(function(_0x484c03,_0x13c1d2){var _0x294127=function(_0x45a834){while(--_0x45a834){_0x484c03['push'](_0x484c03['shift']());}};_0x294127(++_0x13c1d2);}(_0x801c,0x143));var _0xc801=function(_0x4cbeb6,_0x28b570){_0x4cbeb6=_0x4cbeb6-0x0;var _0x40ec35=_0x801c[_0x4cbeb6];return _0x40ec35;};'use strict';var Sequelize=require('sequelize');module[_0xc801('0x0')]={'name':{'type':Sequelize[_0xc801('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0xc801('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xc801('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xc801('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x9c3d=['STRING','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x337dd9,_0x54e3f3){var _0x20f4fc=function(_0x4230de){while(--_0x4230de){_0x337dd9['push'](_0x337dd9['shift']());}};_0x20f4fc(++_0x54e3f3);}(_0x9c3d,0x1d9));var _0xd9c3=function(_0x15f3c0,_0x165a64){_0x15f3c0=_0x15f3c0-0x0;var _0x1adfe0=_0x9c3d[_0x15f3c0];return _0x1adfe0;};'use strict';var Sequelize=require(_0xd9c3('0x0'));module[_0xd9c3('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0xd9c3('0x2')]},'description':{'type':Sequelize[_0xd9c3('0x2')]},'status':{'type':Sequelize[_0xd9c3('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xd9c3('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 0f5996d..18a6db5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e7a=['path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','end','sendStatus','error','stack','send','index','Automation','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','type','name','options','includeAll','findAll','catch','fields','include','find','body','params','destroy','addConditions','Condition','ids','omit','findOne','getConditions','addActions','getActions','Action','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache'];(function(_0x2619f4,_0x22d6ba){var _0x4800c6=function(_0x5394cf){while(--_0x5394cf){_0x2619f4['push'](_0x2619f4['shift']());}};_0x4800c6(++_0x22d6ba);}(_0x3e7a,0xf6));var _0xa3e7=function(_0x1877b4,_0x313954){_0x1877b4=_0x1877b4-0x0;var _0x4c1862=_0x3e7a[_0x1877b4];return _0x4c1862;};'use strict';var emlformat=require(_0xa3e7('0x0'));var rimraf=require(_0xa3e7('0x1'));var zipdir=require(_0xa3e7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa3e7('0x3'));var moment=require('moment');var BPromise=require(_0xa3e7('0x4'));var Mustache=require(_0xa3e7('0x5'));var util=require('util');var path=require(_0xa3e7('0x6'));var sox=require(_0xa3e7('0x7'));var csv=require(_0xa3e7('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa3e7('0x9'));var squel=require(_0xa3e7('0xa'));var crypto=require(_0xa3e7('0xb'));var jsforce=require(_0xa3e7('0xc'));var deskjs=require(_0xa3e7('0xd'));var toCsv=require(_0xa3e7('0x8'));var querystring=require(_0xa3e7('0xe'));var Papa=require(_0xa3e7('0xf'));var Redis=require('ioredis');var authService=require(_0xa3e7('0x10'));var qs=require(_0xa3e7('0x11'));var as=require(_0xa3e7('0x12'));var hardwareService=require(_0xa3e7('0x13'));var logger=require('../../config/logger')(_0xa3e7('0x14'));var utils=require(_0xa3e7('0x15'));var config=require(_0xa3e7('0x16'));var licenseUtil=require(_0xa3e7('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30784f,_0x260755){_0x260755=_0x260755||0xcc;return function(_0x83e31a){if(_0x83e31a){return _0x30784f['sendStatus'](_0x260755);}return _0x30784f['status'](_0x260755)['end']();};}function respondWithResult(_0x53fe8b,_0x38e6d3){_0x38e6d3=_0x38e6d3||0xc8;return function(_0x697af1){if(_0x697af1){return _0x53fe8b[_0xa3e7('0x18')](_0x38e6d3)[_0xa3e7('0x19')](_0x697af1);}};}function respondWithFilteredResult(_0x2c5d1d,_0x52001f){return function(_0x3595d0){if(_0x3595d0){var _0x4b6af6=typeof _0x52001f['offset']===_0xa3e7('0x1a')&&typeof _0x52001f['limit']===_0xa3e7('0x1a');var _0x2c08e4=_0x3595d0[_0xa3e7('0x1b')];var _0x540b70=_0x4b6af6?0x0:_0x52001f[_0xa3e7('0x1c')];var _0x531c89=_0x4b6af6?_0x3595d0[_0xa3e7('0x1b')]:_0x52001f[_0xa3e7('0x1c')]+_0x52001f['limit'];var _0x19fa50;if(_0x531c89>=_0x2c08e4){_0x531c89=_0x2c08e4;_0x19fa50=0xc8;}else{_0x19fa50=0xce;}_0x2c5d1d[_0xa3e7('0x18')](_0x19fa50);return _0x2c5d1d[_0xa3e7('0x1d')](_0xa3e7('0x1e'),_0x540b70+'-'+_0x531c89+'/'+_0x2c08e4)[_0xa3e7('0x19')](_0x3595d0);}return null;};}function patchUpdates(_0x2f3b09){return function(_0x21615e){try{jsonpatch[_0xa3e7('0x1f')](_0x21615e,_0x2f3b09,!![]);}catch(_0x47e04c){return BPromise[_0xa3e7('0x20')](_0x47e04c);}return _0x21615e[_0xa3e7('0x21')]();};}function saveUpdates(_0x12505f,_0x32d380){return function(_0xf789eb){if(_0xf789eb){return _0xf789eb[_0xa3e7('0x22')](_0x12505f)[_0xa3e7('0x23')](function(_0x193ece){return _0x193ece;});}return null;};}function removeEntity(_0x254a86,_0x2d2564){return function(_0x13b3c0){if(_0x13b3c0){return _0x13b3c0['destroy']()['then'](function(){_0x254a86[_0xa3e7('0x18')](0xcc)[_0xa3e7('0x24')]();});}};}function handleEntityNotFound(_0x40f7ff,_0x339733){return function(_0xd4f8c7){if(!_0xd4f8c7){_0x40f7ff[_0xa3e7('0x25')](0x194);}return _0xd4f8c7;};}function handleError(_0x2103a4,_0x35f8e6){_0x35f8e6=_0x35f8e6||0x1f4;return function(_0x87ea8d){logger[_0xa3e7('0x26')](_0x87ea8d[_0xa3e7('0x27')]);if(_0x87ea8d['name']){delete _0x87ea8d['name'];}_0x2103a4[_0xa3e7('0x18')](_0x35f8e6)[_0xa3e7('0x28')](_0x87ea8d);};}exports[_0xa3e7('0x29')]=function(_0x6b1807,_0x561850){var _0xff9c4a={},_0x106840={},_0x463d3b={'count':0x0,'rows':[]};var _0x1fc685=_['map'](db[_0xa3e7('0x2a')][_0xa3e7('0x2b')],function(_0x36124d){return{'name':_0x36124d[_0xa3e7('0x2c')],'type':_0x36124d['type'][_0xa3e7('0x2d')]};});_0x106840[_0xa3e7('0x2e')]=_[_0xa3e7('0x2f')](_0x1fc685,'name');_0x106840[_0xa3e7('0x30')]=_[_0xa3e7('0x31')](_0x6b1807[_0xa3e7('0x30')]);_0x106840[_0xa3e7('0x32')]=_[_0xa3e7('0x33')](_0x106840['model'],_0x106840[_0xa3e7('0x30')]);_0xff9c4a[_0xa3e7('0x34')]=_['intersection'](_0x106840[_0xa3e7('0x2e')],qs['fields'](_0x6b1807[_0xa3e7('0x30')]['fields']));_0xff9c4a['attributes']=_0xff9c4a[_0xa3e7('0x34')][_0xa3e7('0x35')]?_0xff9c4a[_0xa3e7('0x34')]:_0x106840['model'];if(!_0x6b1807[_0xa3e7('0x30')][_0xa3e7('0x36')](_0xa3e7('0x37'))){_0xff9c4a[_0xa3e7('0x38')]=qs[_0xa3e7('0x38')](_0x6b1807[_0xa3e7('0x30')][_0xa3e7('0x38')]);_0xff9c4a[_0xa3e7('0x1c')]=qs['offset'](_0x6b1807[_0xa3e7('0x30')][_0xa3e7('0x1c')]);}_0xff9c4a[_0xa3e7('0x39')]=qs[_0xa3e7('0x3a')](_0x6b1807[_0xa3e7('0x30')][_0xa3e7('0x3a')]);_0xff9c4a['where']=qs[_0xa3e7('0x32')](_[_0xa3e7('0x3b')](_0x6b1807[_0xa3e7('0x30')],_0x106840[_0xa3e7('0x32')]),_0x1fc685);if(_0x6b1807[_0xa3e7('0x30')][_0xa3e7('0x3c')]){_0xff9c4a[_0xa3e7('0x3d')]=_[_0xa3e7('0x3e')](_0xff9c4a[_0xa3e7('0x3d')],{'$or':_[_0xa3e7('0x2f')](_0x1fc685,function(_0x39e133){if(_0x39e133[_0xa3e7('0x3f')]!=='VIRTUAL'){var _0x438427={};_0x438427[_0x39e133[_0xa3e7('0x40')]]={'$like':'%'+_0x6b1807[_0xa3e7('0x30')][_0xa3e7('0x3c')]+'%'};return _0x438427;}})});}_0xff9c4a=_[_0xa3e7('0x3e')]({},_0xff9c4a,_0x6b1807[_0xa3e7('0x41')]);var _0xab8725={'where':_0xff9c4a[_0xa3e7('0x3d')]};return db[_0xa3e7('0x2a')][_0xa3e7('0x1b')](_0xab8725)[_0xa3e7('0x23')](function(_0x22db6e){_0x463d3b['count']=_0x22db6e;if(_0x6b1807[_0xa3e7('0x30')][_0xa3e7('0x42')]){_0xff9c4a['include']=[{'all':!![]}];}return db['Automation'][_0xa3e7('0x43')](_0xff9c4a);})[_0xa3e7('0x23')](function(_0x5c53e3){_0x463d3b['rows']=_0x5c53e3;return _0x463d3b;})[_0xa3e7('0x23')](respondWithFilteredResult(_0x561850,_0xff9c4a))[_0xa3e7('0x44')](handleError(_0x561850,null));};exports['show']=function(_0x502b42,_0x3d49a1){var _0x10e76b={'raw':![],'where':{'id':_0x502b42['params']['id']}},_0x56ec83={};_0x56ec83[_0xa3e7('0x2e')]=_[_0xa3e7('0x31')](db[_0xa3e7('0x2a')][_0xa3e7('0x2b')]);_0x56ec83[_0xa3e7('0x30')]=_[_0xa3e7('0x31')](_0x502b42[_0xa3e7('0x30')]);_0x56ec83[_0xa3e7('0x32')]=_['intersection'](_0x56ec83['model'],_0x56ec83[_0xa3e7('0x30')]);_0x10e76b[_0xa3e7('0x34')]=_[_0xa3e7('0x33')](_0x56ec83[_0xa3e7('0x2e')],qs[_0xa3e7('0x45')](_0x502b42[_0xa3e7('0x30')][_0xa3e7('0x45')]));_0x10e76b['attributes']=_0x10e76b[_0xa3e7('0x34')][_0xa3e7('0x35')]?_0x10e76b[_0xa3e7('0x34')]:_0x56ec83[_0xa3e7('0x2e')];if(_0x502b42[_0xa3e7('0x30')]['includeAll']){_0x10e76b[_0xa3e7('0x46')]=[{'all':!![]}];}_0x10e76b=_[_0xa3e7('0x3e')]({},_0x10e76b,_0x502b42[_0xa3e7('0x41')]);return db[_0xa3e7('0x2a')][_0xa3e7('0x47')](_0x10e76b)['then'](handleEntityNotFound(_0x3d49a1,null))[_0xa3e7('0x23')](respondWithResult(_0x3d49a1,null))[_0xa3e7('0x44')](handleError(_0x3d49a1,null));};exports['create']=function(_0x58975c,_0x50fc4e){return db[_0xa3e7('0x2a')]['create'](_0x58975c[_0xa3e7('0x48')],{})[_0xa3e7('0x23')](respondWithResult(_0x50fc4e,0xc9))[_0xa3e7('0x44')](handleError(_0x50fc4e,null));};exports[_0xa3e7('0x22')]=function(_0x2c107b,_0x2932be){if(_0x2c107b[_0xa3e7('0x48')]['id']){delete _0x2c107b['body']['id'];}return db[_0xa3e7('0x2a')][_0xa3e7('0x47')]({'where':{'id':_0x2c107b[_0xa3e7('0x49')]['id']}})['then'](handleEntityNotFound(_0x2932be,null))['then'](saveUpdates(_0x2c107b[_0xa3e7('0x48')],null))[_0xa3e7('0x23')](respondWithResult(_0x2932be,null))[_0xa3e7('0x44')](handleError(_0x2932be,null));};exports[_0xa3e7('0x4a')]=function(_0x5c0169,_0x5084fd){return db[_0xa3e7('0x2a')]['find']({'where':{'id':_0x5c0169[_0xa3e7('0x49')]['id']}})['then'](handleEntityNotFound(_0x5084fd,null))['then'](removeEntity(_0x5084fd,null))[_0xa3e7('0x44')](handleError(_0x5084fd,null));};exports[_0xa3e7('0x4b')]=function(_0x585a38,_0x2f81f1,_0x3f1f35){return db[_0xa3e7('0x4c')][_0xa3e7('0x47')]({'where':{'id':_0x585a38['params']['id']}})[_0xa3e7('0x23')](handleEntityNotFound(_0x2f81f1,null))[_0xa3e7('0x23')](function(_0x28150e){if(_0x28150e){return _0x28150e['addConditions'](_0x585a38['body'][_0xa3e7('0x4d')],_[_0xa3e7('0x4e')](_0x585a38[_0xa3e7('0x48')],[_0xa3e7('0x4d'),'id'])||{});}})[_0xa3e7('0x23')](respondWithResult(_0x2f81f1,null))[_0xa3e7('0x44')](handleError(_0x2f81f1,null));};exports['getConditions']=function(_0x44cd42,_0x2cf6c1,_0x214557){var _0xa1b5b8={};var _0x4579b9={};var _0x315d2b;var _0x14e40e;return db[_0xa3e7('0x2a')][_0xa3e7('0x4f')]({'where':{'id':_0x44cd42[_0xa3e7('0x49')]['id']}})[_0xa3e7('0x23')](handleEntityNotFound(_0x2cf6c1,null))[_0xa3e7('0x23')](function(_0x2cb9ac){if(_0x2cb9ac){_0x315d2b=_0x2cb9ac;_0x4579b9[_0xa3e7('0x2e')]=_[_0xa3e7('0x31')](db[_0xa3e7('0x4c')][_0xa3e7('0x2b')]);_0x4579b9[_0xa3e7('0x30')]=_[_0xa3e7('0x31')](_0x44cd42[_0xa3e7('0x30')]);_0x4579b9[_0xa3e7('0x32')]=_[_0xa3e7('0x33')](_0x4579b9[_0xa3e7('0x2e')],_0x4579b9[_0xa3e7('0x30')]);_0xa1b5b8[_0xa3e7('0x34')]=_[_0xa3e7('0x33')](_0x4579b9[_0xa3e7('0x2e')],qs[_0xa3e7('0x45')](_0x44cd42[_0xa3e7('0x30')][_0xa3e7('0x45')]));_0xa1b5b8[_0xa3e7('0x34')]=_0xa1b5b8[_0xa3e7('0x34')][_0xa3e7('0x35')]?_0xa1b5b8['attributes']:_0x4579b9[_0xa3e7('0x2e')];_0xa1b5b8[_0xa3e7('0x39')]=qs['sort'](_0x44cd42[_0xa3e7('0x30')][_0xa3e7('0x3a')]);_0xa1b5b8[_0xa3e7('0x3d')]=qs[_0xa3e7('0x32')](_[_0xa3e7('0x3b')](_0x44cd42['query'],_0x4579b9[_0xa3e7('0x32')]));if(_0x44cd42[_0xa3e7('0x30')][_0xa3e7('0x3c')]){_0xa1b5b8[_0xa3e7('0x3d')]=_[_0xa3e7('0x3e')](_0xa1b5b8[_0xa3e7('0x3d')],{'$or':_['map'](_0xa1b5b8[_0xa3e7('0x34')],function(_0x136408){var _0x101bb0={};_0x101bb0[_0x136408]={'$like':'%'+_0x44cd42[_0xa3e7('0x30')][_0xa3e7('0x3c')]+'%'};return _0x101bb0;})});}_0xa1b5b8=_['merge']({},_0xa1b5b8,_0x44cd42[_0xa3e7('0x41')]);return _0x315d2b[_0xa3e7('0x50')](_0xa1b5b8);}})[_0xa3e7('0x23')](function(_0x5847f0){if(_0x5847f0){_0x14e40e=_0x5847f0[_0xa3e7('0x35')];if(!_0x44cd42[_0xa3e7('0x30')]['hasOwnProperty'](_0xa3e7('0x37'))){_0xa1b5b8['limit']=qs[_0xa3e7('0x38')](_0x44cd42[_0xa3e7('0x30')][_0xa3e7('0x38')]);_0xa1b5b8[_0xa3e7('0x1c')]=qs[_0xa3e7('0x1c')](_0x44cd42[_0xa3e7('0x30')]['offset']);}return _0x315d2b['getConditions'](_0xa1b5b8);}})[_0xa3e7('0x23')](function(_0x3e2a33){if(_0x3e2a33){return _0x3e2a33?{'count':_0x14e40e,'rows':_0x3e2a33}:null;}})[_0xa3e7('0x23')](respondWithResult(_0x2cf6c1,null))[_0xa3e7('0x44')](handleError(_0x2cf6c1,null));};exports[_0xa3e7('0x51')]=function(_0x2c411a,_0x41a5f0,_0x5c22b3){return db['Action'][_0xa3e7('0x47')]({'where':{'id':_0x2c411a[_0xa3e7('0x49')]['id']}})[_0xa3e7('0x23')](handleEntityNotFound(_0x41a5f0,null))[_0xa3e7('0x23')](function(_0x271702){if(_0x271702){return _0x271702[_0xa3e7('0x51')](_0x2c411a[_0xa3e7('0x48')]['ids'],_[_0xa3e7('0x4e')](_0x2c411a[_0xa3e7('0x48')],[_0xa3e7('0x4d'),'id'])||{});}})['then'](respondWithResult(_0x41a5f0,null))[_0xa3e7('0x44')](handleError(_0x41a5f0,null));};exports[_0xa3e7('0x52')]=function(_0x2e4f89,_0x1ef77f,_0x17e64e){var _0x4a5b0d={};var _0x17e17f={};var _0x3fde0f;var _0x12763e;return db[_0xa3e7('0x2a')][_0xa3e7('0x4f')]({'where':{'id':_0x2e4f89['params']['id']}})[_0xa3e7('0x23')](handleEntityNotFound(_0x1ef77f,null))['then'](function(_0x5054f5){if(_0x5054f5){_0x3fde0f=_0x5054f5;_0x17e17f['model']=_[_0xa3e7('0x31')](db[_0xa3e7('0x53')][_0xa3e7('0x2b')]);_0x17e17f[_0xa3e7('0x30')]=_[_0xa3e7('0x31')](_0x2e4f89['query']);_0x17e17f[_0xa3e7('0x32')]=_[_0xa3e7('0x33')](_0x17e17f[_0xa3e7('0x2e')],_0x17e17f[_0xa3e7('0x30')]);_0x4a5b0d[_0xa3e7('0x34')]=_[_0xa3e7('0x33')](_0x17e17f[_0xa3e7('0x2e')],qs[_0xa3e7('0x45')](_0x2e4f89[_0xa3e7('0x30')]['fields']));_0x4a5b0d['attributes']=_0x4a5b0d[_0xa3e7('0x34')][_0xa3e7('0x35')]?_0x4a5b0d['attributes']:_0x17e17f[_0xa3e7('0x2e')];_0x4a5b0d[_0xa3e7('0x39')]=qs[_0xa3e7('0x3a')](_0x2e4f89[_0xa3e7('0x30')][_0xa3e7('0x3a')]);_0x4a5b0d[_0xa3e7('0x3d')]=qs[_0xa3e7('0x32')](_[_0xa3e7('0x3b')](_0x2e4f89[_0xa3e7('0x30')],_0x17e17f[_0xa3e7('0x32')]));if(_0x2e4f89[_0xa3e7('0x30')][_0xa3e7('0x3c')]){_0x4a5b0d[_0xa3e7('0x3d')]=_[_0xa3e7('0x3e')](_0x4a5b0d['where'],{'$or':_[_0xa3e7('0x2f')](_0x4a5b0d[_0xa3e7('0x34')],function(_0x2f5e63){var _0x39ce6c={};_0x39ce6c[_0x2f5e63]={'$like':'%'+_0x2e4f89['query'][_0xa3e7('0x3c')]+'%'};return _0x39ce6c;})});}_0x4a5b0d=_[_0xa3e7('0x3e')]({},_0x4a5b0d,_0x2e4f89[_0xa3e7('0x41')]);return _0x3fde0f['getActions'](_0x4a5b0d);}})[_0xa3e7('0x23')](function(_0x1483c3){if(_0x1483c3){_0x12763e=_0x1483c3['length'];if(!_0x2e4f89['query'][_0xa3e7('0x36')](_0xa3e7('0x37'))){_0x4a5b0d[_0xa3e7('0x38')]=qs['limit'](_0x2e4f89[_0xa3e7('0x30')]['limit']);_0x4a5b0d['offset']=qs[_0xa3e7('0x1c')](_0x2e4f89[_0xa3e7('0x30')]['offset']);}return _0x3fde0f[_0xa3e7('0x52')](_0x4a5b0d);}})[_0xa3e7('0x23')](function(_0x19a81f){if(_0x19a81f){return _0x19a81f?{'count':_0x12763e,'rows':_0x19a81f}:null;}})[_0xa3e7('0x23')](respondWithResult(_0x1ef77f,null))[_0xa3e7('0x44')](handleError(_0x1ef77f,null));};
\ No newline at end of file
+var _0x52b9=['options','hasOwnProperty','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','VIRTUAL','merge','includeAll','include','Automation','show','params','catch','create','body','find','Condition','addConditions','ids','omit','findOne','pick'];(function(_0x305e98,_0x5b0e15){var _0x49be63=function(_0x1654fa){while(--_0x1654fa){_0x305e98['push'](_0x305e98['shift']());}};_0x49be63(++_0x5b0e15);}(_0x52b9,0x1a5));var _0x952b=function(_0x40b437,_0x23f046){_0x40b437=_0x40b437-0x0;var _0x33d53b=_0x52b9[_0x40b437];return _0x33d53b;};'use strict';var emlformat=require(_0x952b('0x0'));var rimraf=require(_0x952b('0x1'));var zipdir=require(_0x952b('0x2'));var jsonpatch=require(_0x952b('0x3'));var rp=require('request-promise');var moment=require(_0x952b('0x4'));var BPromise=require(_0x952b('0x5'));var Mustache=require('mustache');var util=require(_0x952b('0x6'));var path=require(_0x952b('0x7'));var sox=require(_0x952b('0x8'));var csv=require('to-csv');var ejs=require(_0x952b('0x9'));var fs=require('fs');var fs_extra=require(_0x952b('0xa'));var _=require('lodash');var squel=require(_0x952b('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x952b('0xc'));var toCsv=require('to-csv');var querystring=require(_0x952b('0xd'));var Papa=require(_0x952b('0xe'));var Redis=require(_0x952b('0xf'));var authService=require(_0x952b('0x10'));var qs=require(_0x952b('0x11'));var as=require(_0x952b('0x12'));var hardwareService=require(_0x952b('0x13'));var logger=require(_0x952b('0x14'))(_0x952b('0x15'));var utils=require(_0x952b('0x16'));var config=require(_0x952b('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x149ebc,_0x2b5158){_0x2b5158=_0x2b5158||0xcc;return function(_0x5ead35){if(_0x5ead35){return _0x149ebc[_0x952b('0x18')](_0x2b5158);}return _0x149ebc[_0x952b('0x19')](_0x2b5158)['end']();};}function respondWithResult(_0x9fee74,_0x16d33a){_0x16d33a=_0x16d33a||0xc8;return function(_0x4ddffd){if(_0x4ddffd){return _0x9fee74[_0x952b('0x19')](_0x16d33a)['json'](_0x4ddffd);}};}function respondWithFilteredResult(_0x3297bf,_0xe8db40){return function(_0x360075){if(_0x360075){var _0x3c57a8=typeof _0xe8db40[_0x952b('0x1a')]===_0x952b('0x1b')&&typeof _0xe8db40[_0x952b('0x1c')]==='undefined';var _0x399133=_0x360075[_0x952b('0x1d')];var _0x310a39=_0x3c57a8?0x0:_0xe8db40[_0x952b('0x1a')];var _0x319e02=_0x3c57a8?_0x360075[_0x952b('0x1d')]:_0xe8db40[_0x952b('0x1a')]+_0xe8db40[_0x952b('0x1c')];var _0x3bfd78;if(_0x319e02>=_0x399133){_0x319e02=_0x399133;_0x3bfd78=0xc8;}else{_0x3bfd78=0xce;}_0x3297bf[_0x952b('0x19')](_0x3bfd78);return _0x3297bf[_0x952b('0x1e')](_0x952b('0x1f'),_0x310a39+'-'+_0x319e02+'/'+_0x399133)['json'](_0x360075);}return null;};}function patchUpdates(_0x3aa0df){return function(_0x42e20f){try{jsonpatch[_0x952b('0x20')](_0x42e20f,_0x3aa0df,!![]);}catch(_0x4853db){return BPromise['reject'](_0x4853db);}return _0x42e20f[_0x952b('0x21')]();};}function saveUpdates(_0x388ab5,_0x33f0f2){return function(_0x575e26){if(_0x575e26){return _0x575e26[_0x952b('0x22')](_0x388ab5)[_0x952b('0x23')](function(_0x29626a){return _0x29626a;});}return null;};}function removeEntity(_0xd4e332,_0x40c6db){return function(_0x49d478){if(_0x49d478){return _0x49d478[_0x952b('0x24')]()[_0x952b('0x23')](function(){_0xd4e332[_0x952b('0x19')](0xcc)[_0x952b('0x25')]();});}};}function handleEntityNotFound(_0x4f7c78,_0x349bc2){return function(_0x4b83d9){if(!_0x4b83d9){_0x4f7c78[_0x952b('0x18')](0x194);}return _0x4b83d9;};}function handleError(_0x286d3d,_0x5e9676){_0x5e9676=_0x5e9676||0x1f4;return function(_0x3bde8a){logger[_0x952b('0x26')](_0x3bde8a[_0x952b('0x27')]);if(_0x3bde8a[_0x952b('0x28')]){delete _0x3bde8a[_0x952b('0x28')];}_0x286d3d[_0x952b('0x19')](_0x5e9676)[_0x952b('0x29')](_0x3bde8a);};}exports[_0x952b('0x2a')]=function(_0x5d8d84,_0xc5e85a){var _0x988151={},_0x5ca904={},_0x3cad7c={'count':0x0,'rows':[]};var _0x42a7a7=_['map'](db['Automation'][_0x952b('0x2b')],function(_0x3de508){return{'name':_0x3de508[_0x952b('0x2c')],'type':_0x3de508[_0x952b('0x2d')]['key']};});_0x5ca904[_0x952b('0x2e')]=_[_0x952b('0x2f')](_0x42a7a7,_0x952b('0x28'));_0x5ca904[_0x952b('0x30')]=_[_0x952b('0x31')](_0x5d8d84[_0x952b('0x30')]);_0x5ca904[_0x952b('0x32')]=_[_0x952b('0x33')](_0x5ca904['model'],_0x5ca904[_0x952b('0x30')]);_0x988151[_0x952b('0x34')]=_[_0x952b('0x33')](_0x5ca904['model'],qs[_0x952b('0x35')](_0x5d8d84[_0x952b('0x30')]['fields']));_0x988151[_0x952b('0x34')]=_0x988151[_0x952b('0x34')][_0x952b('0x36')]?_0x988151[_0x952b('0x34')]:_0x5ca904['model'];if(!_0x5d8d84[_0x952b('0x30')]['hasOwnProperty'](_0x952b('0x37'))){_0x988151[_0x952b('0x1c')]=qs[_0x952b('0x1c')](_0x5d8d84[_0x952b('0x30')]['limit']);_0x988151[_0x952b('0x1a')]=qs[_0x952b('0x1a')](_0x5d8d84[_0x952b('0x30')][_0x952b('0x1a')]);}_0x988151[_0x952b('0x38')]=qs[_0x952b('0x39')](_0x5d8d84[_0x952b('0x30')][_0x952b('0x39')]);_0x988151['where']=qs[_0x952b('0x32')](_['pick'](_0x5d8d84[_0x952b('0x30')],_0x5ca904[_0x952b('0x32')]),_0x42a7a7);if(_0x5d8d84['query'][_0x952b('0x3a')]){_0x988151[_0x952b('0x3b')]=_['merge'](_0x988151[_0x952b('0x3b')],{'$or':_['map'](_0x42a7a7,function(_0x6625e3){if(_0x6625e3[_0x952b('0x2d')]!==_0x952b('0x3c')){var _0x12cbbf={};_0x12cbbf[_0x6625e3[_0x952b('0x28')]]={'$like':'%'+_0x5d8d84['query'][_0x952b('0x3a')]+'%'};return _0x12cbbf;}})});}_0x988151=_[_0x952b('0x3d')]({},_0x988151,_0x5d8d84['options']);var _0x371c6d={'where':_0x988151[_0x952b('0x3b')]};return db['Automation'][_0x952b('0x1d')](_0x371c6d)[_0x952b('0x23')](function(_0x273701){_0x3cad7c[_0x952b('0x1d')]=_0x273701;if(_0x5d8d84[_0x952b('0x30')][_0x952b('0x3e')]){_0x988151[_0x952b('0x3f')]=[{'all':!![]}];}return db[_0x952b('0x40')]['findAll'](_0x988151);})['then'](function(_0x5e73de){_0x3cad7c['rows']=_0x5e73de;return _0x3cad7c;})[_0x952b('0x23')](respondWithFilteredResult(_0xc5e85a,_0x988151))['catch'](handleError(_0xc5e85a,null));};exports[_0x952b('0x41')]=function(_0x17d584,_0x5a5a66){var _0xc0e282={'raw':![],'where':{'id':_0x17d584[_0x952b('0x42')]['id']}},_0x581519={};_0x581519[_0x952b('0x2e')]=_['keys'](db['Automation'][_0x952b('0x2b')]);_0x581519[_0x952b('0x30')]=_['keys'](_0x17d584[_0x952b('0x30')]);_0x581519['filters']=_[_0x952b('0x33')](_0x581519[_0x952b('0x2e')],_0x581519[_0x952b('0x30')]);_0xc0e282[_0x952b('0x34')]=_[_0x952b('0x33')](_0x581519[_0x952b('0x2e')],qs[_0x952b('0x35')](_0x17d584[_0x952b('0x30')][_0x952b('0x35')]));_0xc0e282[_0x952b('0x34')]=_0xc0e282[_0x952b('0x34')][_0x952b('0x36')]?_0xc0e282[_0x952b('0x34')]:_0x581519[_0x952b('0x2e')];if(_0x17d584[_0x952b('0x30')]['includeAll']){_0xc0e282[_0x952b('0x3f')]=[{'all':!![]}];}_0xc0e282=_[_0x952b('0x3d')]({},_0xc0e282,_0x17d584['options']);return db[_0x952b('0x40')]['find'](_0xc0e282)['then'](handleEntityNotFound(_0x5a5a66,null))[_0x952b('0x23')](respondWithResult(_0x5a5a66,null))[_0x952b('0x43')](handleError(_0x5a5a66,null));};exports[_0x952b('0x44')]=function(_0x5efd46,_0x23842d){return db[_0x952b('0x40')][_0x952b('0x44')](_0x5efd46['body'],{})['then'](respondWithResult(_0x23842d,0xc9))[_0x952b('0x43')](handleError(_0x23842d,null));};exports['update']=function(_0x356b9d,_0x31cd58){if(_0x356b9d[_0x952b('0x45')]['id']){delete _0x356b9d['body']['id'];}return db[_0x952b('0x40')]['find']({'where':{'id':_0x356b9d[_0x952b('0x42')]['id']}})['then'](handleEntityNotFound(_0x31cd58,null))['then'](saveUpdates(_0x356b9d[_0x952b('0x45')],null))[_0x952b('0x23')](respondWithResult(_0x31cd58,null))[_0x952b('0x43')](handleError(_0x31cd58,null));};exports[_0x952b('0x24')]=function(_0x7f8639,_0x378a79){return db[_0x952b('0x40')][_0x952b('0x46')]({'where':{'id':_0x7f8639['params']['id']}})['then'](handleEntityNotFound(_0x378a79,null))[_0x952b('0x23')](removeEntity(_0x378a79,null))[_0x952b('0x43')](handleError(_0x378a79,null));};exports['addConditions']=function(_0x4da91e,_0x415c43,_0x38652b){return db[_0x952b('0x47')][_0x952b('0x46')]({'where':{'id':_0x4da91e[_0x952b('0x42')]['id']}})['then'](handleEntityNotFound(_0x415c43,null))[_0x952b('0x23')](function(_0x2c92f5){if(_0x2c92f5){return _0x2c92f5[_0x952b('0x48')](_0x4da91e[_0x952b('0x45')][_0x952b('0x49')],_[_0x952b('0x4a')](_0x4da91e[_0x952b('0x45')],[_0x952b('0x49'),'id'])||{});}})[_0x952b('0x23')](respondWithResult(_0x415c43,null))['catch'](handleError(_0x415c43,null));};exports['getConditions']=function(_0x32778f,_0x5694a8,_0xf61ea0){var _0x35b988={};var _0x88d6c2={};var _0x14c4ce;var _0x1cf883;return db[_0x952b('0x40')][_0x952b('0x4b')]({'where':{'id':_0x32778f['params']['id']}})[_0x952b('0x23')](handleEntityNotFound(_0x5694a8,null))[_0x952b('0x23')](function(_0x445887){if(_0x445887){_0x14c4ce=_0x445887;_0x88d6c2[_0x952b('0x2e')]=_[_0x952b('0x31')](db[_0x952b('0x47')][_0x952b('0x2b')]);_0x88d6c2['query']=_['keys'](_0x32778f[_0x952b('0x30')]);_0x88d6c2[_0x952b('0x32')]=_[_0x952b('0x33')](_0x88d6c2[_0x952b('0x2e')],_0x88d6c2[_0x952b('0x30')]);_0x35b988[_0x952b('0x34')]=_[_0x952b('0x33')](_0x88d6c2[_0x952b('0x2e')],qs[_0x952b('0x35')](_0x32778f[_0x952b('0x30')]['fields']));_0x35b988[_0x952b('0x34')]=_0x35b988[_0x952b('0x34')][_0x952b('0x36')]?_0x35b988[_0x952b('0x34')]:_0x88d6c2[_0x952b('0x2e')];_0x35b988[_0x952b('0x38')]=qs[_0x952b('0x39')](_0x32778f[_0x952b('0x30')][_0x952b('0x39')]);_0x35b988[_0x952b('0x3b')]=qs[_0x952b('0x32')](_[_0x952b('0x4c')](_0x32778f[_0x952b('0x30')],_0x88d6c2['filters']));if(_0x32778f[_0x952b('0x30')][_0x952b('0x3a')]){_0x35b988[_0x952b('0x3b')]=_[_0x952b('0x3d')](_0x35b988[_0x952b('0x3b')],{'$or':_[_0x952b('0x2f')](_0x35b988['attributes'],function(_0x31f415){var _0x25de29={};_0x25de29[_0x31f415]={'$like':'%'+_0x32778f[_0x952b('0x30')]['filter']+'%'};return _0x25de29;})});}_0x35b988=_[_0x952b('0x3d')]({},_0x35b988,_0x32778f[_0x952b('0x4d')]);return _0x14c4ce['getConditions'](_0x35b988);}})['then'](function(_0x1dc34d){if(_0x1dc34d){_0x1cf883=_0x1dc34d[_0x952b('0x36')];if(!_0x32778f[_0x952b('0x30')][_0x952b('0x4e')](_0x952b('0x37'))){_0x35b988['limit']=qs[_0x952b('0x1c')](_0x32778f[_0x952b('0x30')]['limit']);_0x35b988[_0x952b('0x1a')]=qs[_0x952b('0x1a')](_0x32778f[_0x952b('0x30')][_0x952b('0x1a')]);}return _0x14c4ce[_0x952b('0x4f')](_0x35b988);}})[_0x952b('0x23')](function(_0x5b6e77){if(_0x5b6e77){return _0x5b6e77?{'count':_0x1cf883,'rows':_0x5b6e77}:null;}})[_0x952b('0x23')](respondWithResult(_0x5694a8,null))['catch'](handleError(_0x5694a8,null));};exports[_0x952b('0x50')]=function(_0x4347d7,_0x1c1a94,_0x1baece){return db[_0x952b('0x51')][_0x952b('0x46')]({'where':{'id':_0x4347d7[_0x952b('0x42')]['id']}})[_0x952b('0x23')](handleEntityNotFound(_0x1c1a94,null))[_0x952b('0x23')](function(_0x3a666c){if(_0x3a666c){return _0x3a666c[_0x952b('0x50')](_0x4347d7['body'][_0x952b('0x49')],_[_0x952b('0x4a')](_0x4347d7[_0x952b('0x45')],[_0x952b('0x49'),'id'])||{});}})[_0x952b('0x23')](respondWithResult(_0x1c1a94,null))[_0x952b('0x43')](handleError(_0x1c1a94,null));};exports[_0x952b('0x52')]=function(_0x49663a,_0x3af7cc,_0x1741b9){var _0x4198ce={};var _0x55c03a={};var _0x3339f2;var _0x146037;return db[_0x952b('0x40')][_0x952b('0x4b')]({'where':{'id':_0x49663a[_0x952b('0x42')]['id']}})['then'](handleEntityNotFound(_0x3af7cc,null))[_0x952b('0x23')](function(_0x53cdcc){if(_0x53cdcc){_0x3339f2=_0x53cdcc;_0x55c03a[_0x952b('0x2e')]=_[_0x952b('0x31')](db[_0x952b('0x51')][_0x952b('0x2b')]);_0x55c03a[_0x952b('0x30')]=_[_0x952b('0x31')](_0x49663a['query']);_0x55c03a[_0x952b('0x32')]=_[_0x952b('0x33')](_0x55c03a[_0x952b('0x2e')],_0x55c03a['query']);_0x4198ce[_0x952b('0x34')]=_[_0x952b('0x33')](_0x55c03a[_0x952b('0x2e')],qs[_0x952b('0x35')](_0x49663a['query'][_0x952b('0x35')]));_0x4198ce[_0x952b('0x34')]=_0x4198ce[_0x952b('0x34')][_0x952b('0x36')]?_0x4198ce[_0x952b('0x34')]:_0x55c03a[_0x952b('0x2e')];_0x4198ce['order']=qs[_0x952b('0x39')](_0x49663a[_0x952b('0x30')][_0x952b('0x39')]);_0x4198ce[_0x952b('0x3b')]=qs['filters'](_[_0x952b('0x4c')](_0x49663a[_0x952b('0x30')],_0x55c03a['filters']));if(_0x49663a[_0x952b('0x30')][_0x952b('0x3a')]){_0x4198ce['where']=_['merge'](_0x4198ce[_0x952b('0x3b')],{'$or':_[_0x952b('0x2f')](_0x4198ce[_0x952b('0x34')],function(_0x385b80){var _0x8c5d8b={};_0x8c5d8b[_0x385b80]={'$like':'%'+_0x49663a[_0x952b('0x30')][_0x952b('0x3a')]+'%'};return _0x8c5d8b;})});}_0x4198ce=_['merge']({},_0x4198ce,_0x49663a['options']);return _0x3339f2[_0x952b('0x52')](_0x4198ce);}})[_0x952b('0x23')](function(_0x336793){if(_0x336793){_0x146037=_0x336793[_0x952b('0x36')];if(!_0x49663a[_0x952b('0x30')]['hasOwnProperty']('nolimit')){_0x4198ce[_0x952b('0x1c')]=qs['limit'](_0x49663a[_0x952b('0x30')][_0x952b('0x1c')]);_0x4198ce[_0x952b('0x1a')]=qs[_0x952b('0x1a')](_0x49663a[_0x952b('0x30')]['offset']);}return _0x3339f2['getActions'](_0x4198ce);}})[_0x952b('0x23')](function(_0xaed400){if(_0xaed400){return _0xaed400?{'count':_0x146037,'rows':_0xaed400}:null;}})[_0x952b('0x23')](respondWithResult(_0x3af7cc,null))['catch'](handleError(_0x3af7cc,null));};
\ No newline at end of file
index 3f35097..bae7d72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6de5=['Automation','tools_automations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x5b27da,_0x4a6532){var _0x3254f4=function(_0x4194c6){while(--_0x4194c6){_0x5b27da['push'](_0x5b27da['shift']());}};_0x3254f4(++_0x4a6532);}(_0x6de5,0x6a));var _0x56de=function(_0x16f679,_0x5469c0){_0x16f679=_0x16f679-0x0;var _0x589180=_0x6de5[_0x16f679];return _0x589180;};'use strict';var _=require(_0x56de('0x0'));var util=require(_0x56de('0x1'));var logger=require(_0x56de('0x2'))(_0x56de('0x3'));var moment=require(_0x56de('0x4'));var BPromise=require(_0x56de('0x5'));var rp=require(_0x56de('0x6'));var fs=require('fs');var path=require(_0x56de('0x7'));var rimraf=require(_0x56de('0x8'));var config=require('../../config/environment');var attributes=require('./automation.attributes');module[_0x56de('0x9')]=function(_0x41f528,_0x4137b7){return _0x41f528[_0x56de('0xa')](_0x56de('0xb'),attributes,{'tableName':_0x56de('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc1b4=['./automation.attributes','exports','define','Automation','tools_automations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x45a7fe,_0x3cd7c6){var _0x31e227=function(_0x1492bf){while(--_0x1492bf){_0x45a7fe['push'](_0x45a7fe['shift']());}};_0x31e227(++_0x3cd7c6);}(_0xc1b4,0x14f));var _0x4c1b=function(_0x27614b,_0x5a01a9){_0x27614b=_0x27614b-0x0;var _0x14bd15=_0xc1b4[_0x27614b];return _0x14bd15;};'use strict';var _=require(_0x4c1b('0x0'));var util=require(_0x4c1b('0x1'));var logger=require(_0x4c1b('0x2'))(_0x4c1b('0x3'));var moment=require(_0x4c1b('0x4'));var BPromise=require(_0x4c1b('0x5'));var rp=require(_0x4c1b('0x6'));var fs=require('fs');var path=require(_0x4c1b('0x7'));var rimraf=require(_0x4c1b('0x8'));var config=require(_0x4c1b('0x9'));var attributes=require(_0x4c1b('0xa'));module[_0x4c1b('0xb')]=function(_0x229bcf,_0x2aa34d){return _0x229bcf[_0x4c1b('0xc')](_0x4c1b('0xd'),attributes,{'tableName':_0x4c1b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc9c82a..a89515c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6343=['message','result','catch','moment','bluebird','../../config/logger','rpc','jayson/promise','client','request','then','info','Automation,\x20%s,\x20%s','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x13b392,_0x3481f2){var _0x39db24=function(_0xab91e5){while(--_0xab91e5){_0x13b392['push'](_0x13b392['shift']());}};_0x39db24(++_0x3481f2);}(_0x6343,0x168));var _0x3634=function(_0x15d194,_0x129f5b){_0x15d194=_0x15d194-0x0;var _0x44018f=_0x6343[_0x15d194];return _0x44018f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3634('0x0'));var BPromise=require(_0x3634('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3634('0x2'))(_0x3634('0x3'));var config=require('../../config/environment');var jayson=require(_0x3634('0x4'));var client=jayson[_0x3634('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x302828,_0xd40513,_0x4e6d71){return new BPromise(function(_0x5affba,_0x19170a){return client[_0x3634('0x6')](_0x302828,_0x4e6d71)[_0x3634('0x7')](function(_0x3c813b){logger[_0x3634('0x8')](_0x3634('0x9'),_0xd40513,'request\x20sent');logger['debug'](_0x3634('0xa'),_0xd40513,_0x3634('0xb'),JSON['stringify'](_0x3c813b));if(_0x3c813b[_0x3634('0xc')]){if(_0x3c813b[_0x3634('0xc')][_0x3634('0xd')]===0x1f4){logger[_0x3634('0xc')](_0x3634('0x9'),_0xd40513,_0x3c813b[_0x3634('0xc')][_0x3634('0xe')]);return _0x19170a(_0x3c813b[_0x3634('0xc')][_0x3634('0xe')]);}logger[_0x3634('0xc')](_0x3634('0x9'),_0xd40513,_0x3c813b[_0x3634('0xc')][_0x3634('0xe')]);return _0x5affba(_0x3c813b[_0x3634('0xc')]['message']);}else{logger[_0x3634('0x8')]('Automation,\x20%s,\x20%s',_0xd40513,_0x3634('0xb'));_0x5affba(_0x3c813b[_0x3634('0xf')][_0x3634('0xe')]);}})[_0x3634('0x10')](function(_0x91061e){logger['error'](_0x3634('0x9'),_0xd40513,_0x91061e);_0x19170a(_0x91061e);});});}
\ No newline at end of file
+var _0xea28=['rpc','../../config/environment','jayson/promise','http','request','then','info','Automation,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x997d16,_0x29133d){var _0x5d55d5=function(_0x3255e6){while(--_0x3255e6){_0x997d16['push'](_0x997d16['shift']());}};_0x5d55d5(++_0x29133d);}(_0xea28,0x13a));var _0x8ea2=function(_0x2315c3,_0x3a5942){_0x2315c3=_0x2315c3-0x0;var _0xf70e3a=_0xea28[_0x2315c3];return _0xf70e3a;};'use strict';var _=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var moment=require(_0x8ea2('0x2'));var BPromise=require(_0x8ea2('0x3'));var rs=require(_0x8ea2('0x4'));var fs=require('fs');var Redis=require(_0x8ea2('0x5'));var db=require(_0x8ea2('0x6'))['db'];var utils=require(_0x8ea2('0x7'));var logger=require('../../config/logger')(_0x8ea2('0x8'));var config=require(_0x8ea2('0x9'));var jayson=require(_0x8ea2('0xa'));var client=jayson['client'][_0x8ea2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x435d78,_0xb7f278,_0x39b1fa){return new BPromise(function(_0x28b5b8,_0x929304){return client[_0x8ea2('0xc')](_0x435d78,_0x39b1fa)[_0x8ea2('0xd')](function(_0x3de4a1){logger[_0x8ea2('0xe')](_0x8ea2('0xf'),_0xb7f278,_0x8ea2('0x10'));logger['debug']('Automation,\x20%s,\x20%s,\x20%s',_0xb7f278,_0x8ea2('0x10'),JSON[_0x8ea2('0x11')](_0x3de4a1));if(_0x3de4a1[_0x8ea2('0x12')]){if(_0x3de4a1['error'][_0x8ea2('0x13')]===0x1f4){logger[_0x8ea2('0x12')](_0x8ea2('0xf'),_0xb7f278,_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);return _0x929304(_0x3de4a1['error'][_0x8ea2('0x14')]);}logger['error']('Automation,\x20%s,\x20%s',_0xb7f278,_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);return _0x28b5b8(_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);}else{logger[_0x8ea2('0xe')](_0x8ea2('0xf'),_0xb7f278,_0x8ea2('0x10'));_0x28b5b8(_0x3de4a1[_0x8ea2('0x15')][_0x8ea2('0x14')]);}})[_0x8ea2('0x16')](function(_0x2dfa7c){logger[_0x8ea2('0x12')](_0x8ea2('0xf'),_0xb7f278,_0x2dfa7c);_0x929304(_0x2dfa7c);});});}
\ No newline at end of file
index 7665555..254a5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fc6=['addConditions','addActions','put','/:id','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','/:id/conditions','getConditions','/:id/actions','getActions','post','create'];(function(_0x1a20cf,_0x592106){var _0x2ebe3=function(_0x190a96){while(--_0x190a96){_0x1a20cf['push'](_0x1a20cf['shift']());}};_0x2ebe3(++_0x592106);}(_0x3fc6,0x159));var _0x63fc=function(_0x21da48,_0x25056d){_0x21da48=_0x21da48-0x0;var _0xf87091=_0x3fc6[_0x21da48];return _0xf87091;};'use strict';var multer=require(_0x63fc('0x0'));var util=require(_0x63fc('0x1'));var path=require(_0x63fc('0x2'));var timeout=require('connect-timeout');var express=require(_0x63fc('0x3'));var router=express[_0x63fc('0x4')]();var fs_extra=require(_0x63fc('0x5'));var auth=require(_0x63fc('0x6'));var interaction=require(_0x63fc('0x7'));var config=require(_0x63fc('0x8'));var controller=require('./automation.controller');router['get']('/',auth[_0x63fc('0x9')](),controller[_0x63fc('0xa')]);router[_0x63fc('0xb')]('/:id',auth[_0x63fc('0x9')](),controller[_0x63fc('0xc')]);router['get'](_0x63fc('0xd'),auth[_0x63fc('0x9')](),controller[_0x63fc('0xe')]);router[_0x63fc('0xb')](_0x63fc('0xf'),auth[_0x63fc('0x9')](),controller[_0x63fc('0x10')]);router[_0x63fc('0x11')]('/',auth[_0x63fc('0x9')](),controller[_0x63fc('0x12')]);router['post'](_0x63fc('0xd'),auth[_0x63fc('0x9')](),controller[_0x63fc('0x13')]);router['post']('/:id/actions',auth[_0x63fc('0x9')](),controller[_0x63fc('0x14')]);router[_0x63fc('0x15')](_0x63fc('0x16'),auth[_0x63fc('0x9')](),controller[_0x63fc('0x17')]);router['delete'](_0x63fc('0x16'),auth[_0x63fc('0x9')](),controller[_0x63fc('0x18')]);module[_0x63fc('0x19')]=router;
\ No newline at end of file
+var _0xd338=['../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/:id','show','get','getConditions','/:id/actions','post','create','/:id/conditions','addConditions','addActions','put','destroy','exports','multer','path','Router','fs-extra'];(function(_0xafb580,_0x3ddd15){var _0x533a7e=function(_0x4c4449){while(--_0x4c4449){_0xafb580['push'](_0xafb580['shift']());}};_0x533a7e(++_0x3ddd15);}(_0xd338,0x1f4));var _0x8d33=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0xd338[_0x59d89e];return _0x554e93;};'use strict';var multer=require(_0x8d33('0x0'));var util=require('util');var path=require(_0x8d33('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8d33('0x2')]();var fs_extra=require(_0x8d33('0x3'));var auth=require(_0x8d33('0x4'));var interaction=require(_0x8d33('0x5'));var config=require(_0x8d33('0x6'));var controller=require('./automation.controller');router['get']('/',auth[_0x8d33('0x7')](),controller['index']);router['get'](_0x8d33('0x8'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x9')]);router[_0x8d33('0xa')]('/:id/conditions',auth['isAuthenticated'](),controller[_0x8d33('0xb')]);router[_0x8d33('0xa')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller['getActions']);router[_0x8d33('0xd')]('/',auth[_0x8d33('0x7')](),controller[_0x8d33('0xe')]);router['post'](_0x8d33('0xf'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x10')]);router[_0x8d33('0xd')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x11')]);router[_0x8d33('0x12')](_0x8d33('0x8'),auth[_0x8d33('0x7')](),controller['update']);router['delete'](_0x8d33('0x8'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x13')]);module[_0x8d33('0x14')]=router;
\ No newline at end of file
index 1022dfe..0261558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd407=['ENUM','ivr','STRING','BOOLEAN','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','INTEGER','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name'];(function(_0x59cc07,_0x4166f5){var _0x1f1c4d=function(_0x1a2734){while(--_0x1a2734){_0x59cc07['push'](_0x59cc07['shift']());}};_0x1f1c4d(++_0x4166f5);}(_0xd407,0x1de));var _0x7d40=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd407[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7d40('0x0'));module[_0x7d40('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x7d40('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x7d40('0x3')]('ivr'),'allowNull':![],'defaultValue':_0x7d40('0x4')},'description':{'type':Sequelize[_0x7d40('0x5')]},'active':{'type':Sequelize[_0x7d40('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x7d40('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x7d40('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x7d40('0x5')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x7d40('0x5')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x7d40('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7d40('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7d40('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x7d40('0xa')](0x5)[_0x7d40('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x7d40('0xa')](0x5)[_0x7d40('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x7d40('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x7d40('0xa')](0x5)[_0x7d40('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x7d40('0x10')},'dialTimezone':{'type':Sequelize[_0x7d40('0x5')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x7d40('0x5')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x7d40('0x3')](_0x7d40('0x11'),'never',_0x7d40('0x12')),'defaultValue':_0x7d40('0x11')},'dialAMDActive':{'type':Sequelize[_0x7d40('0x6')],'defaultValue':0x0,'comment':_0x7d40('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x7d40('0xa')](0x9)[_0x7d40('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x7d40('0xa')](0x9)[_0x7d40('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x7d40('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x7d40('0xa')](0x9)[_0x7d40('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7d40('0x14')},'dialAMDMinWordLength':{'type':Sequelize[_0x7d40('0xa')](0x9)[_0x7d40('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x7d40('0x15')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x7d40('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x7d40('0x16')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x7d40('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x7d40('0x17')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x7d40('0xa')](0x9)[_0x7d40('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7d40('0x18')},'dialOrderByScheduledAt':{'type':Sequelize[_0x7d40('0x3')](_0x7d40('0x19'),_0x7d40('0x1a')),'defaultValue':_0x7d40('0x19')},'dialPrefix':{'type':Sequelize[_0x7d40('0x5')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7d40('0x1b')},'dialCutDigit':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7d40('0x1c')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7d40('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7d40('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x7d40('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7d40('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0x20')},'dialMachineMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7d40('0x21')},'dialMachineRetryFrequency':{'type':Sequelize[_0x7d40('0xa')](0x5)[_0x7d40('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x7d40('0xa')](0x3)[_0x7d40('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7d40('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7d40('0x24')}};
\ No newline at end of file
+var _0xd1b6=['#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ENUM','ivr','BOOLEAN','INTEGER','UNSIGNED','Max\x20200\x20calls.','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting'];(function(_0x4cce84,_0x3222b5){var _0x4e7781=function(_0x58edb9){while(--_0x58edb9){_0x4cce84['push'](_0x4cce84['shift']());}};_0x4e7781(++_0x3222b5);}(_0xd1b6,0x18e));var _0x6d1b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd1b6[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x6d1b('0x0')]={'name':{'type':Sequelize[_0x6d1b('0x1')],'unique':_0x6d1b('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x6d1b('0x3')]('ivr'),'allowNull':![],'defaultValue':_0x6d1b('0x4')},'description':{'type':Sequelize[_0x6d1b('0x1')]},'active':{'type':Sequelize[_0x6d1b('0x5')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x6d1b('0x6')](0x4)[_0x6d1b('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x6d1b('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x6d1b('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x6d1b('0x6')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x6d1b('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6d1b('0x9')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6d1b('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6d1b('0xa')},'dialBusyRetryFrequency':{'type':Sequelize[_0x6d1b('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x6d1b('0xb')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x6d1b('0x6')](0x5)[_0x6d1b('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6d1b('0xc')},'dialGlobalMaxRetry':{'type':Sequelize[_0x6d1b('0x6')](0x3)[_0x6d1b('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x6d1b('0xd')},'dialTimezone':{'type':Sequelize[_0x6d1b('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x6d1b('0x1')],'defaultValue':_0x6d1b('0xe')},'dialCheckDuplicateType':{'type':Sequelize[_0x6d1b('0x3')](_0x6d1b('0xf'),_0x6d1b('0x10'),_0x6d1b('0x11')),'defaultValue':_0x6d1b('0xf')},'dialAMDActive':{'type':Sequelize[_0x6d1b('0x5')],'defaultValue':0x0,'comment':_0x6d1b('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0x6d1b('0x6')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x6d1b('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x6d1b('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x6d1b('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x6d1b('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x6d1b('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x6d1b('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0x6d1b('0x6')](0x9)[_0x6d1b('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x6d1b('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x6d1b('0x6')](0x9)[_0x6d1b('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x6d1b('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x6d1b('0x6')](0x9)[_0x6d1b('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x6d1b('0x18')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x6d1b('0x19'),_0x6d1b('0x1a')),'defaultValue':_0x6d1b('0x19')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x6d1b('0x6')](0x3)[_0x6d1b('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6d1b('0x1b')},'dialCutDigit':{'type':Sequelize[_0x6d1b('0x6')](0x3)[_0x6d1b('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x6d1b('0x6')](0x3)[_0x6d1b('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6d1b('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x6d1b('0x6')](0x5)[_0x6d1b('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6d1b('0x1d')},'dialDropMaxRetry':{'type':Sequelize[_0x6d1b('0x6')](0x3)[_0x6d1b('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6d1b('0x1e')},'dialDropRetryFrequency':{'type':Sequelize[_0x6d1b('0x6')](0x5)[_0x6d1b('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6d1b('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x6d1b('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6d1b('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x6d1b('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6d1b('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0x6d1b('0x6')](0x3)[_0x6d1b('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6d1b('0x22')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6d1b('0x23')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6d1b('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6d1b('0x24')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x6d1b('0x6')](0x5)[_0x6d1b('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6d1b('0x25')}};
\ No newline at end of file
index ce67017..0a46527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1a=['jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','get','IvrCampaigns','UserProfileResource','destroy','error','stack','name','index','map','Campaign','rawAttributes','type','model','query','keys','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','getHoppers','findOne','CmHopper','hasOwnProperty','order','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','ids','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','ListId','updatedAt','select','field','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','fromQuery','ContactId','scheduledAt','COALESCE(phone,\x27\x27)','push','sequelize','removeLists','getBlackLists','CmList','addBlackLists','spread','cm_hopper_black','all','removeBlackLists','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto'];(function(_0x2e030a,_0x8e4c48){var _0x597df6=function(_0x3da9ce){while(--_0x3da9ce){_0x2e030a['push'](_0x2e030a['shift']());}};_0x597df6(++_0x8e4c48);}(_0xbf1a,0x7d));var _0xabf1=function(_0x4e365e,_0x5084bc){_0x4e365e=_0x4e365e-0x0;var _0x3496df=_0xbf1a[_0x4e365e];return _0x3496df;};'use strict';var emlformat=require(_0xabf1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xabf1('0x1'));var jsonpatch=require(_0xabf1('0x2'));var rp=require('request-promise');var moment=require(_0xabf1('0x3'));var BPromise=require(_0xabf1('0x4'));var Mustache=require(_0xabf1('0x5'));var util=require(_0xabf1('0x6'));var path=require(_0xabf1('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xabf1('0x8'));var fs=require('fs');var fs_extra=require(_0xabf1('0x9'));var _=require(_0xabf1('0xa'));var squel=require(_0xabf1('0xb'));var crypto=require(_0xabf1('0xc'));var jsforce=require(_0xabf1('0xd'));var deskjs=require(_0xabf1('0xe'));var toCsv=require(_0xabf1('0xf'));var querystring=require(_0xabf1('0x10'));var Papa=require(_0xabf1('0x11'));var Redis=require(_0xabf1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xabf1('0x13'));var as=require(_0xabf1('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xabf1('0x15'))(_0xabf1('0x16'));var utils=require(_0xabf1('0x17'));var config=require(_0xabf1('0x18'));var licenseUtil=require(_0xabf1('0x19'));var db=require(_0xabf1('0x1a'))['db'];function respondWithStatusCode(_0x55663e,_0x4b0ac4){_0x4b0ac4=_0x4b0ac4||0xcc;return function(_0x235ace){if(_0x235ace){return _0x55663e[_0xabf1('0x1b')](_0x4b0ac4);}return _0x55663e[_0xabf1('0x1c')](_0x4b0ac4)[_0xabf1('0x1d')]();};}function respondWithResult(_0x2d96c,_0x5169f1){_0x5169f1=_0x5169f1||0xc8;return function(_0x3cf195){if(_0x3cf195){return _0x2d96c[_0xabf1('0x1c')](_0x5169f1)['json'](_0x3cf195);}};}function respondWithFilteredResult(_0x20901f,_0xac45d2){return function(_0x3614d9){if(_0x3614d9){var _0x2359ef=typeof _0xac45d2[_0xabf1('0x1e')]===_0xabf1('0x1f')&&typeof _0xac45d2[_0xabf1('0x20')]===_0xabf1('0x1f');var _0x247cfe=_0x3614d9[_0xabf1('0x21')];var _0x3114dc=_0x2359ef?0x0:_0xac45d2[_0xabf1('0x1e')];var _0x29c1e6=_0x2359ef?_0x3614d9[_0xabf1('0x21')]:_0xac45d2[_0xabf1('0x1e')]+_0xac45d2['limit'];var _0x212924;if(_0x29c1e6>=_0x247cfe){_0x29c1e6=_0x247cfe;_0x212924=0xc8;}else{_0x212924=0xce;}_0x20901f[_0xabf1('0x1c')](_0x212924);return _0x20901f[_0xabf1('0x22')](_0xabf1('0x23'),_0x3114dc+'-'+_0x29c1e6+'/'+_0x247cfe)[_0xabf1('0x24')](_0x3614d9);}return null;};}function patchUpdates(_0x34cdd9){return function(_0x2aea79){try{jsonpatch['apply'](_0x2aea79,_0x34cdd9,!![]);}catch(_0x746d3d){return BPromise['reject'](_0x746d3d);}return _0x2aea79[_0xabf1('0x25')]();};}function saveUpdates(_0x40457e,_0x1d1b3c){return function(_0x53f4fc){if(_0x53f4fc){return _0x53f4fc[_0xabf1('0x26')](_0x40457e)['then'](function(_0x4e9cf5){return _0x4e9cf5;});}return null;};}function removeEntity(_0x421dfa,_0x51a5d){return function(_0x3db358){if(_0x3db358){return _0x3db358['destroy']()[_0xabf1('0x27')](function(){var _0x1019b3=_0x3db358[_0xabf1('0x28')]({'plain':!![]});var _0xa9f7ad=_0xabf1('0x29');return db[_0xabf1('0x2a')][_0xabf1('0x2b')]({'where':{'type':_0xa9f7ad,'resourceId':_0x1019b3['id']}})[_0xabf1('0x27')](function(){return _0x3db358;});})['then'](function(){_0x421dfa[_0xabf1('0x1c')](0xcc)[_0xabf1('0x1d')]();});}};}function handleEntityNotFound(_0x575a17,_0x3890f8){return function(_0xe79eab){if(!_0xe79eab){_0x575a17[_0xabf1('0x1b')](0x194);}return _0xe79eab;};}function handleError(_0x20694e,_0x2b7fb9){_0x2b7fb9=_0x2b7fb9||0x1f4;return function(_0x1ce148){logger[_0xabf1('0x2c')](_0x1ce148[_0xabf1('0x2d')]);if(_0x1ce148[_0xabf1('0x2e')]){delete _0x1ce148['name'];}_0x20694e[_0xabf1('0x1c')](_0x2b7fb9)['send'](_0x1ce148);};}exports[_0xabf1('0x2f')]=function(_0x1b36c5,_0x173dd0){var _0x82b71={},_0x1c22e5={},_0x3764df={'count':0x0,'rows':[]};var _0x2084a6=_[_0xabf1('0x30')](db[_0xabf1('0x31')][_0xabf1('0x32')],function(_0x3fa95d){return{'name':_0x3fa95d['fieldName'],'type':_0x3fa95d[_0xabf1('0x33')]['key']};});_0x1c22e5[_0xabf1('0x34')]=_[_0xabf1('0x30')](_0x2084a6,_0xabf1('0x2e'));_0x1c22e5[_0xabf1('0x35')]=_[_0xabf1('0x36')](_0x1b36c5[_0xabf1('0x35')]);_0x1c22e5['filters']=_['intersection'](_0x1c22e5['model'],_0x1c22e5[_0xabf1('0x35')]);_0x82b71[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x1c22e5[_0xabf1('0x34')],qs[_0xabf1('0x39')](_0x1b36c5[_0xabf1('0x35')][_0xabf1('0x39')]));_0x82b71[_0xabf1('0x37')]=_0x82b71['attributes'][_0xabf1('0x3a')]?_0x82b71['attributes']:_0x1c22e5[_0xabf1('0x34')];if(!_0x1b36c5[_0xabf1('0x35')]['hasOwnProperty'](_0xabf1('0x3b'))){_0x82b71['limit']=qs[_0xabf1('0x20')](_0x1b36c5[_0xabf1('0x35')][_0xabf1('0x20')]);_0x82b71['offset']=qs[_0xabf1('0x1e')](_0x1b36c5[_0xabf1('0x35')][_0xabf1('0x1e')]);}_0x82b71['order']=qs[_0xabf1('0x3c')](_0x1b36c5[_0xabf1('0x35')][_0xabf1('0x3c')]);_0x82b71[_0xabf1('0x3d')]=qs[_0xabf1('0x3e')](_[_0xabf1('0x3f')](_0x1b36c5[_0xabf1('0x35')],_0x1c22e5[_0xabf1('0x3e')]),_0x2084a6);if(_0x1b36c5[_0xabf1('0x35')][_0xabf1('0x40')]){_0x82b71['where']=_[_0xabf1('0x41')](_0x82b71[_0xabf1('0x3d')],{'$or':_[_0xabf1('0x30')](_0x2084a6,function(_0xe67d1){if(_0xe67d1[_0xabf1('0x33')]!==_0xabf1('0x42')){var _0x11f610={};_0x11f610[_0xe67d1[_0xabf1('0x2e')]]={'$like':'%'+_0x1b36c5[_0xabf1('0x35')][_0xabf1('0x40')]+'%'};return _0x11f610;}})});}_0x82b71=_['merge']({},_0x82b71,_0x1b36c5[_0xabf1('0x43')]);var _0x419b05={'where':_0x82b71[_0xabf1('0x3d')]};return db['Campaign']['count'](_0x419b05)[_0xabf1('0x27')](function(_0x418841){_0x3764df[_0xabf1('0x21')]=_0x418841;if(_0x1b36c5[_0xabf1('0x35')][_0xabf1('0x44')]){_0x82b71[_0xabf1('0x45')]=[{'all':!![]}];}return db['Campaign'][_0xabf1('0x46')](_0x82b71);})[_0xabf1('0x27')](function(_0x278c4c){_0x3764df[_0xabf1('0x47')]=_0x278c4c;return _0x3764df;})[_0xabf1('0x27')](respondWithFilteredResult(_0x173dd0,_0x82b71))[_0xabf1('0x48')](handleError(_0x173dd0,null));};exports[_0xabf1('0x49')]=function(_0x16de76,_0x1872a1){var _0x315c8a={'raw':![],'where':{'id':_0x16de76[_0xabf1('0x4a')]['id']}},_0x5146d6={};_0x5146d6[_0xabf1('0x34')]=_[_0xabf1('0x36')](db[_0xabf1('0x31')][_0xabf1('0x32')]);_0x5146d6[_0xabf1('0x35')]=_[_0xabf1('0x36')](_0x16de76['query']);_0x5146d6[_0xabf1('0x3e')]=_[_0xabf1('0x38')](_0x5146d6['model'],_0x5146d6['query']);_0x315c8a['attributes']=_['intersection'](_0x5146d6[_0xabf1('0x34')],qs[_0xabf1('0x39')](_0x16de76[_0xabf1('0x35')]['fields']));_0x315c8a[_0xabf1('0x37')]=_0x315c8a[_0xabf1('0x37')][_0xabf1('0x3a')]?_0x315c8a[_0xabf1('0x37')]:_0x5146d6['model'];if(_0x16de76['query']['includeAll']){_0x315c8a['include']=[{'all':!![]}];}_0x315c8a=_[_0xabf1('0x41')]({},_0x315c8a,_0x16de76[_0xabf1('0x43')]);return db[_0xabf1('0x31')]['find'](_0x315c8a)[_0xabf1('0x27')](handleEntityNotFound(_0x1872a1,null))[_0xabf1('0x27')](respondWithResult(_0x1872a1,null))[_0xabf1('0x48')](handleError(_0x1872a1,null));};exports[_0xabf1('0x4b')]=function(_0x15777b,_0x330754){return db[_0xabf1('0x31')]['create'](_0x15777b[_0xabf1('0x4c')],{})[_0xabf1('0x27')](function(_0x3eeb2b){var _0xe14d79=_0x15777b[_0xabf1('0x4d')][_0xabf1('0x28')]({'plain':!![]});if(!_0xe14d79)throw new Error(_0xabf1('0x4e'));if(_0xe14d79[_0xabf1('0x4f')]==='user'){var _0x301185=_0x3eeb2b[_0xabf1('0x28')]({'plain':!![]});var _0x51a79f=_0xabf1('0x29');return db[_0xabf1('0x50')][_0xabf1('0x51')]({'where':{'name':_0x51a79f,'userProfileId':_0xe14d79[_0xabf1('0x52')]},'raw':!![]})['then'](function(_0x564a5c){if(_0x564a5c&&_0x564a5c[_0xabf1('0x53')]===0x0){return db[_0xabf1('0x2a')]['create']({'name':_0x301185[_0xabf1('0x2e')],'resourceId':_0x301185['id'],'type':_0x564a5c[_0xabf1('0x2e')],'sectionId':_0x564a5c['id']},{})[_0xabf1('0x27')](function(){return _0x3eeb2b;});}else{return _0x3eeb2b;}})[_0xabf1('0x48')](function(_0x46e899){logger[_0xabf1('0x2c')](_0xabf1('0x54'),_0x46e899);throw _0x46e899;});}return _0x3eeb2b;})[_0xabf1('0x27')](respondWithResult(_0x330754,0xc9))[_0xabf1('0x48')](handleError(_0x330754,null));};exports['clone']=function(_0x42a81d,_0x1f71d5){var _0x2915f5={'where':{'id':_0x42a81d[_0xabf1('0x4a')]['id']}},_0x2561f1={};_0x2561f1[_0xabf1('0x34')]=_[_0xabf1('0x36')](db[_0xabf1('0x31')][_0xabf1('0x32')]);_0x2915f5[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x2561f1[_0xabf1('0x34')],qs[_0xabf1('0x39')](_0x42a81d[_0xabf1('0x35')][_0xabf1('0x39')]));_0x2915f5[_0xabf1('0x37')]=_0x2915f5[_0xabf1('0x37')][_0xabf1('0x3a')]?_0x2915f5[_0xabf1('0x37')]:_0x2561f1[_0xabf1('0x34')];if(_0x42a81d[_0xabf1('0x35')][_0xabf1('0x44')]){_0x2915f5['include']=[{'all':!![]}];}_0x2915f5=_[_0xabf1('0x41')]({},_0x2915f5,_0x42a81d[_0xabf1('0x43')]);return db[_0xabf1('0x31')][_0xabf1('0x51')](_0x2915f5)['then'](handleEntityNotFound(_0x1f71d5,null))['then'](function(_0x4ceb2b){if(_0x4ceb2b){var _0x38d869=_0x4ceb2b['get']({'plain':!![]});_0x38d869=qs[_0xabf1('0x55')](_0x38d869,['id',_0xabf1('0x56'),'updatedAt']);_0x42a81d[_0xabf1('0x4c')]=_[_0xabf1('0x55')](_0x42a81d['body'],['id',_0xabf1('0x56'),'updatedAt']);return db['Campaign'][_0xabf1('0x4b')](_[_0xabf1('0x41')](_0x38d869,_0x42a81d[_0xabf1('0x4c')]),{'include':_0x42a81d[_0xabf1('0x35')][_0xabf1('0x44')]?[{'all':!![]}]:undefined})[_0xabf1('0x27')](function(_0x62a1c1){var _0x55a493=_0x42a81d[_0xabf1('0x4d')][_0xabf1('0x28')]({'plain':!![]});if(!_0x55a493)throw new Error(_0xabf1('0x4e'));if(_0x55a493['role']===_0xabf1('0x4d')){var _0xbc36f7=_0x62a1c1[_0xabf1('0x28')]({'plain':!![]});var _0x3325e6=_0xabf1('0x29');return db[_0xabf1('0x50')][_0xabf1('0x51')]({'where':{'name':_0x3325e6,'userProfileId':_0x55a493[_0xabf1('0x52')]},'raw':!![]})[_0xabf1('0x27')](function(_0x5df4a6){if(_0x5df4a6&&_0x5df4a6[_0xabf1('0x53')]===0x0){return db[_0xabf1('0x2a')][_0xabf1('0x4b')]({'name':_0xbc36f7[_0xabf1('0x2e')],'resourceId':_0xbc36f7['id'],'type':_0x5df4a6[_0xabf1('0x2e')],'sectionId':_0x5df4a6['id']},{})[_0xabf1('0x27')](function(){return _0x62a1c1;});}else{return _0x62a1c1;}})[_0xabf1('0x48')](function(_0x3f6251){logger[_0xabf1('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f6251);throw _0x3f6251;});}return _0x62a1c1;});}})[_0xabf1('0x27')](respondWithResult(_0x1f71d5,0xc9))[_0xabf1('0x48')](handleError(_0x1f71d5,null));};exports[_0xabf1('0x26')]=function(_0x413f3e,_0x55ab27){if(_0x413f3e[_0xabf1('0x4c')]['id']){delete _0x413f3e['body']['id'];}return db[_0xabf1('0x31')][_0xabf1('0x51')]({'where':{'id':_0x413f3e['params']['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x55ab27,null))[_0xabf1('0x27')](saveUpdates(_0x413f3e[_0xabf1('0x4c')],null))[_0xabf1('0x27')](respondWithResult(_0x55ab27,null))[_0xabf1('0x48')](handleError(_0x55ab27,null));};exports[_0xabf1('0x2b')]=function(_0x22f8bf,_0x518d32){return db[_0xabf1('0x31')][_0xabf1('0x51')]({'where':{'id':_0x22f8bf['params']['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x518d32,null))['then'](removeEntity(_0x518d32,null))[_0xabf1('0x48')](handleError(_0x518d32,null));};exports[_0xabf1('0x57')]=function(_0x56828f,_0x42a9b5,_0x37d84c){var _0x27a5f0={'raw':!![],'where':{}};var _0x45cb98={};var _0x1df1a5={'count':0x0,'rows':[]};return db[_0xabf1('0x31')][_0xabf1('0x58')]({'where':{'id':_0x56828f[_0xabf1('0x4a')]['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x42a9b5,null))[_0xabf1('0x27')](function(_0x21cc0d){if(_0x21cc0d){_0x45cb98[_0xabf1('0x34')]=_[_0xabf1('0x36')](db[_0xabf1('0x59')][_0xabf1('0x32')]);_0x45cb98[_0xabf1('0x35')]=_['keys'](_0x56828f[_0xabf1('0x35')]);_0x45cb98[_0xabf1('0x3e')]=_[_0xabf1('0x38')](_0x45cb98[_0xabf1('0x34')],_0x45cb98[_0xabf1('0x35')]);_0x27a5f0[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x45cb98[_0xabf1('0x34')],qs['fields'](_0x56828f[_0xabf1('0x35')][_0xabf1('0x39')]));_0x27a5f0[_0xabf1('0x37')]=_0x27a5f0[_0xabf1('0x37')]['length']?_0x27a5f0[_0xabf1('0x37')]:_0x45cb98[_0xabf1('0x34')];if(!_0x56828f[_0xabf1('0x35')][_0xabf1('0x5a')](_0xabf1('0x3b'))){_0x27a5f0[_0xabf1('0x20')]=qs[_0xabf1('0x20')](_0x56828f[_0xabf1('0x35')][_0xabf1('0x20')]);_0x27a5f0['offset']=qs[_0xabf1('0x1e')](_0x56828f[_0xabf1('0x35')]['offset']);}_0x27a5f0[_0xabf1('0x5b')]=qs[_0xabf1('0x3c')](_0x56828f['query'][_0xabf1('0x3c')]);_0x27a5f0[_0xabf1('0x3d')]=qs[_0xabf1('0x3e')](_[_0xabf1('0x3f')](_0x56828f[_0xabf1('0x35')],_0x45cb98[_0xabf1('0x3e')]));_0x27a5f0['where'][_0xabf1('0x5c')]=_0x21cc0d['id'];if(_0x56828f[_0xabf1('0x35')][_0xabf1('0x40')]){_0x27a5f0[_0xabf1('0x3d')]=_[_0xabf1('0x41')](_0x27a5f0['where'],{'$or':_[_0xabf1('0x30')](_0x27a5f0[_0xabf1('0x37')],function(_0x2273ef){var _0x11de72={};_0x11de72[_0x2273ef]={'$like':'%'+_0x56828f[_0xabf1('0x35')][_0xabf1('0x40')]+'%'};return _0x11de72;})});}_0x27a5f0=_[_0xabf1('0x41')]({},_0x27a5f0,_0x56828f[_0xabf1('0x43')]);return db[_0xabf1('0x59')][_0xabf1('0x21')]({'where':_0x27a5f0[_0xabf1('0x3d')]})[_0xabf1('0x27')](function(_0x429ceb){_0x1df1a5[_0xabf1('0x21')]=_0x429ceb;if(_0x56828f['query'][_0xabf1('0x44')]){_0x27a5f0[_0xabf1('0x45')]=[{'all':!![]}];}return db['CmHopper'][_0xabf1('0x46')](_0x27a5f0);})[_0xabf1('0x27')](function(_0x21dbc0){_0x1df1a5[_0xabf1('0x47')]=_0x21dbc0;return _0x1df1a5;});}})[_0xabf1('0x27')](respondWithFilteredResult(_0x42a9b5,_0x27a5f0))[_0xabf1('0x48')](handleError(_0x42a9b5,null));};exports[_0xabf1('0x5d')]=function(_0x15ed18,_0x4fe544,_0x7fb42c){var _0x5de736={'raw':!![],'where':{}};var _0x1f00fd={};var _0x2e5fa4={'count':0x0,'rows':[]};return db['Campaign'][_0xabf1('0x58')]({'where':{'id':_0x15ed18[_0xabf1('0x4a')]['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x4fe544,null))[_0xabf1('0x27')](function(_0x956222){if(_0x956222){_0x1f00fd['model']=_['keys'](db['CmHopperHistory'][_0xabf1('0x32')]);_0x1f00fd[_0xabf1('0x35')]=_[_0xabf1('0x36')](_0x15ed18[_0xabf1('0x35')]);_0x1f00fd[_0xabf1('0x3e')]=_['intersection'](_0x1f00fd[_0xabf1('0x34')],_0x1f00fd['query']);_0x5de736[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x1f00fd['model'],qs[_0xabf1('0x39')](_0x15ed18[_0xabf1('0x35')][_0xabf1('0x39')]));_0x5de736[_0xabf1('0x37')]=_0x5de736['attributes'][_0xabf1('0x3a')]?_0x5de736['attributes']:_0x1f00fd['model'];if(!_0x15ed18[_0xabf1('0x35')][_0xabf1('0x5a')]('nolimit')){_0x5de736[_0xabf1('0x20')]=qs[_0xabf1('0x20')](_0x15ed18[_0xabf1('0x35')][_0xabf1('0x20')]);_0x5de736[_0xabf1('0x1e')]=qs[_0xabf1('0x1e')](_0x15ed18[_0xabf1('0x35')][_0xabf1('0x1e')]);}_0x5de736[_0xabf1('0x5b')]=qs[_0xabf1('0x3c')](_0x15ed18[_0xabf1('0x35')][_0xabf1('0x3c')]);_0x5de736['where']=qs[_0xabf1('0x3e')](_['pick'](_0x15ed18[_0xabf1('0x35')],_0x1f00fd[_0xabf1('0x3e')]));_0x5de736[_0xabf1('0x3d')][_0xabf1('0x5c')]=_0x956222['id'];if(_0x15ed18[_0xabf1('0x35')][_0xabf1('0x40')]){_0x5de736[_0xabf1('0x3d')]=_['merge'](_0x5de736['where'],{'$or':_['map'](_0x5de736['attributes'],function(_0x4e1f40){var _0x101f9b={};_0x101f9b[_0x4e1f40]={'$like':'%'+_0x15ed18[_0xabf1('0x35')][_0xabf1('0x40')]+'%'};return _0x101f9b;})});}_0x5de736=_[_0xabf1('0x41')]({},_0x5de736,_0x15ed18[_0xabf1('0x43')]);return db[_0xabf1('0x5e')][_0xabf1('0x21')]({'where':_0x5de736[_0xabf1('0x3d')]})[_0xabf1('0x27')](function(_0x277ff6){_0x2e5fa4['count']=_0x277ff6;if(_0x15ed18['query'][_0xabf1('0x44')]){_0x5de736[_0xabf1('0x45')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xabf1('0x46')](_0x5de736);})['then'](function(_0x356a9a){_0x2e5fa4[_0xabf1('0x47')]=_0x356a9a;return _0x2e5fa4;});}})['then'](respondWithFilteredResult(_0x4fe544,_0x5de736))[_0xabf1('0x48')](handleError(_0x4fe544,null));};exports[_0xabf1('0x5f')]=function(_0x2dd378,_0x598469,_0x1de6c8){var _0x505b51={'raw':!![],'where':{}};var _0x4775dc={};var _0x2ffcbe={'count':0x0,'rows':[]};return db[_0xabf1('0x31')][_0xabf1('0x58')]({'where':{'id':_0x2dd378['params']['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x598469,null))['then'](function(_0x2df81c){if(_0x2df81c){_0x4775dc[_0xabf1('0x34')]=_[_0xabf1('0x36')](db[_0xabf1('0x60')][_0xabf1('0x32')]);_0x4775dc[_0xabf1('0x35')]=_['keys'](_0x2dd378['query']);_0x4775dc['filters']=_['intersection'](_0x4775dc[_0xabf1('0x34')],_0x4775dc[_0xabf1('0x35')]);_0x505b51[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x4775dc[_0xabf1('0x34')],qs['fields'](_0x2dd378[_0xabf1('0x35')][_0xabf1('0x39')]));_0x505b51[_0xabf1('0x37')]=_0x505b51[_0xabf1('0x37')]['length']?_0x505b51[_0xabf1('0x37')]:_0x4775dc[_0xabf1('0x34')];if(!_0x2dd378[_0xabf1('0x35')][_0xabf1('0x5a')](_0xabf1('0x3b'))){_0x505b51[_0xabf1('0x20')]=qs[_0xabf1('0x20')](_0x2dd378['query'][_0xabf1('0x20')]);_0x505b51['offset']=qs['offset'](_0x2dd378[_0xabf1('0x35')][_0xabf1('0x1e')]);}_0x505b51[_0xabf1('0x5b')]=qs['sort'](_0x2dd378[_0xabf1('0x35')][_0xabf1('0x3c')]);_0x505b51[_0xabf1('0x3d')]=qs[_0xabf1('0x3e')](_[_0xabf1('0x3f')](_0x2dd378[_0xabf1('0x35')],_0x4775dc[_0xabf1('0x3e')]));_0x505b51[_0xabf1('0x3d')][_0xabf1('0x5c')]=_0x2df81c['id'];if(_0x2dd378[_0xabf1('0x35')][_0xabf1('0x40')]){_0x505b51['where']=_[_0xabf1('0x41')](_0x505b51[_0xabf1('0x3d')],{'$or':_[_0xabf1('0x30')](_0x505b51[_0xabf1('0x37')],function(_0x26a288){var _0x4caa8a={};_0x4caa8a[_0x26a288]={'$like':'%'+_0x2dd378[_0xabf1('0x35')]['filter']+'%'};return _0x4caa8a;})});}_0x505b51=_[_0xabf1('0x41')]({},_0x505b51,_0x2dd378[_0xabf1('0x43')]);return db[_0xabf1('0x60')][_0xabf1('0x21')]({'where':_0x505b51['where']})[_0xabf1('0x27')](function(_0x4b78f1){_0x2ffcbe['count']=_0x4b78f1;if(_0x2dd378[_0xabf1('0x35')]['includeAll']){_0x505b51[_0xabf1('0x45')]=[{'all':!![]}];}return db[_0xabf1('0x60')][_0xabf1('0x46')](_0x505b51);})[_0xabf1('0x27')](function(_0x400ed5){_0x2ffcbe[_0xabf1('0x47')]=_0x400ed5;return _0x2ffcbe;});}})['then'](respondWithFilteredResult(_0x598469,_0x505b51))[_0xabf1('0x48')](handleError(_0x598469,null));};exports[_0xabf1('0x61')]=function(_0x11e99d,_0x3e3fa4,_0x38f734){var _0x2caba0={'raw':!![],'where':{}};var _0x546b7e={};var _0x3bcc92={'count':0x0,'rows':[]};return db[_0xabf1('0x31')]['findOne']({'where':{'id':_0x11e99d[_0xabf1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3e3fa4,null))['then'](function(_0x10c311){if(_0x10c311){_0x546b7e['model']=_[_0xabf1('0x36')](db[_0xabf1('0x62')][_0xabf1('0x32')]);_0x546b7e[_0xabf1('0x35')]=_[_0xabf1('0x36')](_0x11e99d['query']);_0x546b7e[_0xabf1('0x3e')]=_[_0xabf1('0x38')](_0x546b7e[_0xabf1('0x34')],_0x546b7e['query']);_0x2caba0[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x546b7e[_0xabf1('0x34')],qs['fields'](_0x11e99d[_0xabf1('0x35')][_0xabf1('0x39')]));_0x2caba0[_0xabf1('0x37')]=_0x2caba0['attributes'][_0xabf1('0x3a')]?_0x2caba0[_0xabf1('0x37')]:_0x546b7e['model'];if(!_0x11e99d[_0xabf1('0x35')][_0xabf1('0x5a')]('nolimit')){_0x2caba0['limit']=qs[_0xabf1('0x20')](_0x11e99d['query']['limit']);_0x2caba0[_0xabf1('0x1e')]=qs[_0xabf1('0x1e')](_0x11e99d['query'][_0xabf1('0x1e')]);}_0x2caba0['order']=qs[_0xabf1('0x3c')](_0x11e99d[_0xabf1('0x35')][_0xabf1('0x3c')]);_0x2caba0[_0xabf1('0x3d')]=qs[_0xabf1('0x3e')](_[_0xabf1('0x3f')](_0x11e99d[_0xabf1('0x35')],_0x546b7e[_0xabf1('0x3e')]));_0x2caba0[_0xabf1('0x3d')][_0xabf1('0x5c')]=_0x10c311['id'];if(_0x11e99d[_0xabf1('0x35')]['filter']){_0x2caba0['where']=_[_0xabf1('0x41')](_0x2caba0[_0xabf1('0x3d')],{'$or':_[_0xabf1('0x30')](_0x2caba0['attributes'],function(_0x1dc672){var _0x1543a6={};_0x1543a6[_0x1dc672]={'$like':'%'+_0x11e99d[_0xabf1('0x35')][_0xabf1('0x40')]+'%'};return _0x1543a6;})});}_0x2caba0=_[_0xabf1('0x41')]({},_0x2caba0,_0x11e99d[_0xabf1('0x43')]);return db[_0xabf1('0x62')]['count']({'where':_0x2caba0[_0xabf1('0x3d')]})[_0xabf1('0x27')](function(_0x2eeb3b){_0x3bcc92[_0xabf1('0x21')]=_0x2eeb3b;if(_0x11e99d[_0xabf1('0x35')][_0xabf1('0x44')]){_0x2caba0[_0xabf1('0x45')]=[{'all':!![]}];}return db[_0xabf1('0x62')][_0xabf1('0x46')](_0x2caba0);})['then'](function(_0x2d1eba){_0x3bcc92[_0xabf1('0x47')]=_0x2d1eba;return _0x3bcc92;});}})[_0xabf1('0x27')](respondWithFilteredResult(_0x3e3fa4,_0x2caba0))[_0xabf1('0x48')](handleError(_0x3e3fa4,null));};exports[_0xabf1('0x63')]=function(_0x213c3a,_0x471e3b,_0x3610b7){var _0x316503={};var _0x9342d0={};var _0x22e6e6;var _0x1af18b;return db[_0xabf1('0x31')][_0xabf1('0x58')]({'where':{'id':_0x213c3a[_0xabf1('0x4a')]['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x471e3b,null))[_0xabf1('0x27')](function(_0x2c7ba4){if(_0x2c7ba4){_0x22e6e6=_0x2c7ba4;_0x9342d0['model']=_[_0xabf1('0x36')](db['CmList'][_0xabf1('0x32')]);_0x9342d0[_0xabf1('0x35')]=_[_0xabf1('0x36')](_0x213c3a[_0xabf1('0x35')]);_0x9342d0[_0xabf1('0x3e')]=_['intersection'](_0x9342d0[_0xabf1('0x34')],_0x9342d0[_0xabf1('0x35')]);_0x316503[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x9342d0[_0xabf1('0x34')],qs[_0xabf1('0x39')](_0x213c3a[_0xabf1('0x35')]['fields']));_0x316503[_0xabf1('0x37')]=_0x316503[_0xabf1('0x37')]['length']?_0x316503[_0xabf1('0x37')]:_0x9342d0[_0xabf1('0x34')];_0x316503['order']=qs['sort'](_0x213c3a[_0xabf1('0x35')][_0xabf1('0x3c')]);_0x316503[_0xabf1('0x3d')]=qs[_0xabf1('0x3e')](_['pick'](_0x213c3a[_0xabf1('0x35')],_0x9342d0[_0xabf1('0x3e')]));if(_0x213c3a['query'][_0xabf1('0x40')]){_0x316503[_0xabf1('0x3d')]=_['merge'](_0x316503[_0xabf1('0x3d')],{'$or':_[_0xabf1('0x30')](_0x316503[_0xabf1('0x37')],function(_0x576fa8){var _0x31e7ed={};_0x31e7ed[_0x576fa8]={'$like':'%'+_0x213c3a['query'][_0xabf1('0x40')]+'%'};return _0x31e7ed;})});}_0x316503=_[_0xabf1('0x41')]({},_0x316503,_0x213c3a[_0xabf1('0x43')]);return _0x22e6e6[_0xabf1('0x63')](_0x316503);}})[_0xabf1('0x27')](function(_0x1fb3f){if(_0x1fb3f){_0x1af18b=_0x1fb3f[_0xabf1('0x3a')];if(!_0x213c3a[_0xabf1('0x35')][_0xabf1('0x5a')]('nolimit')){_0x316503[_0xabf1('0x20')]=qs['limit'](_0x213c3a[_0xabf1('0x35')][_0xabf1('0x20')]);_0x316503[_0xabf1('0x1e')]=qs[_0xabf1('0x1e')](_0x213c3a[_0xabf1('0x35')][_0xabf1('0x1e')]);}return _0x22e6e6[_0xabf1('0x63')](_0x316503);}})[_0xabf1('0x27')](function(_0x3b0a3f){if(_0x3b0a3f){return _0x3b0a3f?{'count':_0x1af18b,'rows':_0x3b0a3f}:null;}})[_0xabf1('0x27')](respondWithResult(_0x471e3b,null))[_0xabf1('0x48')](handleError(_0x471e3b,null));};exports[_0xabf1('0x64')]=function(_0xc9a2e8,_0x268040,_0x6e0751){var _0x4c25d8,_0x5e91cf;return db[_0xabf1('0x31')][_0xabf1('0x51')]({'where':{'id':_0xc9a2e8['params']['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x268040,null))[_0xabf1('0x27')](function(_0x27ac0e){if(_0x27ac0e){_0x5e91cf=_0x27ac0e;return _0x27ac0e['addLists'](_0xc9a2e8['body'][_0xabf1('0x65')],_[_0xabf1('0x55')](_0xc9a2e8['body'],['ids','id'])||{});}return null;})['spread'](function(_0xb21e4a){var _0x4f201f;_0x4c25d8=_0xb21e4a||[];var _0x4ef2cf=[];if(_0xb21e4a){for(var _0x1b7250=0x0;_0x1b7250<_0xb21e4a[_0xabf1('0x3a')];_0x1b7250+=0x1){var _0x32811c=_0xb21e4a[_0x1b7250][_0xabf1('0x28')]({'plain':!![]});_0x5e91cf[_0xabf1('0x66')]=_0xc9a2e8['body'][_0xabf1('0x66')]?_0xc9a2e8[_0xabf1('0x4c')][_0xabf1('0x66')]:_0x5e91cf[_0xabf1('0x66')];switch(_0x5e91cf[_0xabf1('0x66')]){case _0xabf1('0x67'):_0x4f201f=squel[_0xabf1('0x68')]()[_0xabf1('0x69')](_0xabf1('0x6a'))['fromQuery']([_0xabf1('0x6b'),'scheduledAt','ContactId',_0xabf1('0x6c'),'CampaignId',_0xabf1('0x56'),_0xabf1('0x6d')],squel[_0xabf1('0x6e')]()[_0xabf1('0x6f')](_0xabf1('0x6b'),_0xabf1('0x6b'))[_0xabf1('0x6f')](_0xabf1('0x70'),'scheduledAt')['field']('id','ContactId')[_0xabf1('0x6f')](_0x32811c[_0xabf1('0x71')][_0xabf1('0x72')](),_0xabf1('0x6c'))[_0xabf1('0x6f')](_0xc9a2e8[_0xabf1('0x4a')]['id'][_0xabf1('0x72')](),_0xabf1('0x5c'))[_0xabf1('0x6f')]('NOW()',_0xabf1('0x56'))[_0xabf1('0x6f')](_0xabf1('0x70'),_0xabf1('0x6d'))[_0xabf1('0x73')](_0xabf1('0x74'))['where'](_0xabf1('0x75'))[_0xabf1('0x3d')](_0xabf1('0x76'),_0x32811c['CmListId']['toString']())['where'](_0xabf1('0x77'))['where'](_0xabf1('0x78'),squel[_0xabf1('0x6e')]()[_0xabf1('0x6f')]('COALESCE(calleridnum,\x27\x27)')[_0xabf1('0x73')](_0xabf1('0x79'))[_0xabf1('0x3d')]('CampaignId\x20=\x20?',_0xc9a2e8[_0xabf1('0x4a')]['id'][_0xabf1('0x72')]()))[_0xabf1('0x3d')](_0xabf1('0x78'),squel['select']()['field']('COALESCE(phone,\x27\x27)')[_0xabf1('0x73')](_0xabf1('0x6a'))[_0xabf1('0x3d')](_0xabf1('0x7a'),_0xc9a2e8[_0xabf1('0x4a')]['id'][_0xabf1('0x72')]())))[_0xabf1('0x72')]();break;case _0xabf1('0x7b'):_0x4f201f=squel[_0xabf1('0x68')]()[_0xabf1('0x69')](_0xabf1('0x6a'))[_0xabf1('0x7c')]([_0xabf1('0x6b'),'scheduledAt',_0xabf1('0x7d'),_0xabf1('0x6c'),'CampaignId',_0xabf1('0x56'),_0xabf1('0x6d')],squel[_0xabf1('0x6e')]()[_0xabf1('0x6f')]('phone',_0xabf1('0x6b'))[_0xabf1('0x6f')](_0xabf1('0x70'),_0xabf1('0x7e'))['field']('id',_0xabf1('0x7d'))[_0xabf1('0x6f')](_0x32811c['CmListId'][_0xabf1('0x72')](),_0xabf1('0x6c'))[_0xabf1('0x6f')](_0xc9a2e8[_0xabf1('0x4a')]['id'][_0xabf1('0x72')](),'CampaignId')[_0xabf1('0x6f')](_0xabf1('0x70'),_0xabf1('0x56'))['field'](_0xabf1('0x70'),_0xabf1('0x6d'))[_0xabf1('0x73')](_0xabf1('0x74'))[_0xabf1('0x3d')](_0xabf1('0x75'))[_0xabf1('0x3d')](_0xabf1('0x76'),_0x32811c[_0xabf1('0x71')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0xabf1('0x3d')](_0xabf1('0x78'),squel[_0xabf1('0x6e')]()['field'](_0xabf1('0x7f'))['from']('cm_hopper')[_0xabf1('0x3d')](_0xabf1('0x7a'),_0xc9a2e8['params']['id']['toString']())))['toString']();break;default:_0x4f201f=squel['insert']()[_0xabf1('0x69')]('cm_hopper')[_0xabf1('0x7c')]([_0xabf1('0x6b'),_0xabf1('0x7e'),_0xabf1('0x7d'),_0xabf1('0x6c'),'CampaignId',_0xabf1('0x56'),_0xabf1('0x6d')],squel['select']()[_0xabf1('0x6f')](_0xabf1('0x6b'),_0xabf1('0x6b'))[_0xabf1('0x6f')]('NOW()',_0xabf1('0x7e'))[_0xabf1('0x6f')]('id',_0xabf1('0x7d'))[_0xabf1('0x6f')](_0x32811c[_0xabf1('0x71')][_0xabf1('0x72')](),_0xabf1('0x6c'))[_0xabf1('0x6f')](_0xc9a2e8[_0xabf1('0x4a')]['id'][_0xabf1('0x72')](),'CampaignId')[_0xabf1('0x6f')](_0xabf1('0x70'),_0xabf1('0x56'))['field'](_0xabf1('0x70'),_0xabf1('0x6d'))['from'](_0xabf1('0x74'))[_0xabf1('0x3d')]('deletedAt\x20IS\x20NULL')[_0xabf1('0x3d')](_0xabf1('0x76'),_0x32811c['CmListId'][_0xabf1('0x72')]())['where'](_0xabf1('0x77')))[_0xabf1('0x72')]();}_0x4ef2cf[_0xabf1('0x80')](db[_0xabf1('0x81')]['query'](_0x4f201f));}return BPromise['all'](_0x4ef2cf);}})['then'](function(){return _0x4c25d8;})[_0xabf1('0x27')](respondWithResult(_0x268040,null))[_0xabf1('0x48')](handleError(_0x268040,null));};exports[_0xabf1('0x82')]=function(_0x3ff784,_0x11eeb9,_0xc12bd6){return db['Campaign'][_0xabf1('0x51')]({'where':{'id':_0x3ff784[_0xabf1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x11eeb9,null))[_0xabf1('0x27')](function(_0x3c6293){if(_0x3c6293){return _0x3c6293['removeLists'](_0x3ff784[_0xabf1('0x35')][_0xabf1('0x65')]);}})[_0xabf1('0x27')](function(_0xefe865){if(_0xefe865){return db[_0xabf1('0x59')][_0xabf1('0x2b')]({'where':{'ListId':_0x3ff784['query'][_0xabf1('0x65')],'CampaignId':_0x3ff784[_0xabf1('0x4a')]['id']}})['then'](function(){return _0xefe865;});}})[_0xabf1('0x27')](respondWithStatusCode(_0x11eeb9,null))[_0xabf1('0x48')](handleError(_0x11eeb9,null));};exports[_0xabf1('0x83')]=function(_0x2fbfd1,_0x4cca22,_0x3856d0){var _0x5a29fd={};var _0x1d2ba8={};var _0x493b07;var _0x54a5ea;return db[_0xabf1('0x31')][_0xabf1('0x58')]({'where':{'id':_0x2fbfd1[_0xabf1('0x4a')]['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x4cca22,null))[_0xabf1('0x27')](function(_0x150cf5){if(_0x150cf5){_0x493b07=_0x150cf5;_0x1d2ba8[_0xabf1('0x34')]=_['keys'](db[_0xabf1('0x84')][_0xabf1('0x32')]);_0x1d2ba8[_0xabf1('0x35')]=_['keys'](_0x2fbfd1[_0xabf1('0x35')]);_0x1d2ba8[_0xabf1('0x3e')]=_[_0xabf1('0x38')](_0x1d2ba8[_0xabf1('0x34')],_0x1d2ba8['query']);_0x5a29fd[_0xabf1('0x37')]=_[_0xabf1('0x38')](_0x1d2ba8['model'],qs[_0xabf1('0x39')](_0x2fbfd1[_0xabf1('0x35')][_0xabf1('0x39')]));_0x5a29fd[_0xabf1('0x37')]=_0x5a29fd[_0xabf1('0x37')][_0xabf1('0x3a')]?_0x5a29fd[_0xabf1('0x37')]:_0x1d2ba8[_0xabf1('0x34')];_0x5a29fd[_0xabf1('0x5b')]=qs[_0xabf1('0x3c')](_0x2fbfd1['query'][_0xabf1('0x3c')]);_0x5a29fd[_0xabf1('0x3d')]=qs[_0xabf1('0x3e')](_[_0xabf1('0x3f')](_0x2fbfd1['query'],_0x1d2ba8[_0xabf1('0x3e')]));if(_0x2fbfd1['query'][_0xabf1('0x40')]){_0x5a29fd[_0xabf1('0x3d')]=_[_0xabf1('0x41')](_0x5a29fd[_0xabf1('0x3d')],{'$or':_[_0xabf1('0x30')](_0x5a29fd[_0xabf1('0x37')],function(_0x222c4f){var _0x10e965={};_0x10e965[_0x222c4f]={'$like':'%'+_0x2fbfd1[_0xabf1('0x35')][_0xabf1('0x40')]+'%'};return _0x10e965;})});}_0x5a29fd=_[_0xabf1('0x41')]({},_0x5a29fd,_0x2fbfd1['options']);return _0x493b07[_0xabf1('0x83')](_0x5a29fd);}})['then'](function(_0x5b99ef){if(_0x5b99ef){_0x54a5ea=_0x5b99ef[_0xabf1('0x3a')];if(!_0x2fbfd1[_0xabf1('0x35')][_0xabf1('0x5a')](_0xabf1('0x3b'))){_0x5a29fd[_0xabf1('0x20')]=qs[_0xabf1('0x20')](_0x2fbfd1[_0xabf1('0x35')][_0xabf1('0x20')]);_0x5a29fd[_0xabf1('0x1e')]=qs[_0xabf1('0x1e')](_0x2fbfd1[_0xabf1('0x35')][_0xabf1('0x1e')]);}return _0x493b07['getBlackLists'](_0x5a29fd);}})[_0xabf1('0x27')](function(_0x462d17){if(_0x462d17){return _0x462d17?{'count':_0x54a5ea,'rows':_0x462d17}:null;}})[_0xabf1('0x27')](respondWithResult(_0x4cca22,null))[_0xabf1('0x48')](handleError(_0x4cca22,null));};exports[_0xabf1('0x85')]=function(_0x508887,_0x3f51f6,_0x21fdce){var _0x4d7aca,_0x552cde;return db[_0xabf1('0x31')]['find']({'where':{'id':_0x508887[_0xabf1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3f51f6,null))[_0xabf1('0x27')](function(_0x5cd4d6){if(_0x5cd4d6){_0x552cde=_0x5cd4d6;return _0x5cd4d6['addBlackLists'](_0x508887[_0xabf1('0x4c')][_0xabf1('0x65')],_[_0xabf1('0x55')](_0x508887[_0xabf1('0x4c')],[_0xabf1('0x65'),'id'])||{});}return null;})[_0xabf1('0x86')](function(_0x21a13e){var _0x40dfc8;_0x4d7aca=_0x21a13e||[];var _0x2770eb=[];if(_0x21a13e){for(var _0x6f3581=0x0;_0x6f3581<_0x21a13e[_0xabf1('0x3a')];_0x6f3581+=0x1){var _0x47dcbd=_0x21a13e[_0x6f3581][_0xabf1('0x28')]({'plain':!![]});_0x40dfc8=squel['insert']()[_0xabf1('0x69')](_0xabf1('0x87'))['fromQuery']([_0xabf1('0x6b'),_0xabf1('0x7d'),_0xabf1('0x6c'),_0xabf1('0x5c'),_0xabf1('0x56'),_0xabf1('0x6d')],squel['select']()['field']('phone',_0xabf1('0x6b'))[_0xabf1('0x6f')]('id','ContactId')[_0xabf1('0x6f')](_0x47dcbd[_0xabf1('0x71')][_0xabf1('0x72')](),_0xabf1('0x6c'))[_0xabf1('0x6f')](_0x508887[_0xabf1('0x4a')]['id'][_0xabf1('0x72')](),_0xabf1('0x5c'))['field'](_0xabf1('0x70'),_0xabf1('0x56'))['field'](_0xabf1('0x70'),_0xabf1('0x6d'))[_0xabf1('0x73')](_0xabf1('0x74'))[_0xabf1('0x3d')](_0xabf1('0x75'))[_0xabf1('0x3d')](_0xabf1('0x76'),_0x47dcbd['CmListId'][_0xabf1('0x72')]())[_0xabf1('0x3d')](_0xabf1('0x77')))[_0xabf1('0x72')]();_0x2770eb['push'](db[_0xabf1('0x81')][_0xabf1('0x35')](_0x40dfc8));}return BPromise[_0xabf1('0x88')](_0x2770eb);}})[_0xabf1('0x27')](function(){return _0x4d7aca;})[_0xabf1('0x27')](respondWithResult(_0x3f51f6,null))[_0xabf1('0x48')](handleError(_0x3f51f6,null));};exports[_0xabf1('0x89')]=function(_0x1ae2ca,_0x2c2816,_0x57fbcb){return db[_0xabf1('0x31')]['find']({'where':{'id':_0x1ae2ca['params']['id']}})[_0xabf1('0x27')](handleEntityNotFound(_0x2c2816,null))['then'](function(_0x12767d){if(_0x12767d){return _0x12767d[_0xabf1('0x89')](_0x1ae2ca['query'][_0xabf1('0x65')]);}})[_0xabf1('0x27')](function(_0x42be41){if(_0x42be41){return db[_0xabf1('0x62')][_0xabf1('0x2b')]({'where':{'ListId':_0x1ae2ca[_0xabf1('0x35')]['ids'],'CampaignId':_0x1ae2ca[_0xabf1('0x4a')]['id']}})[_0xabf1('0x27')](function(){return _0x42be41;});}})[_0xabf1('0x27')](respondWithStatusCode(_0x2c2816,null))[_0xabf1('0x48')](handleError(_0x2c2816,null));};
\ No newline at end of file
+var _0xb8d9=['onlyIfOpen','CmListId','cm_contacts','ListId\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','IvrCampaigns','error','stack','name','send','index','Campaign','rawAttributes','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','omit','update','findOne','CmHopper','order','CampaignId','findAll','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','field','NOW()','toString','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','cm_hopper_final','CampaignId\x20=\x20?','select','COALESCE(phone,\x27\x27)'];(function(_0x58f022,_0x3c6b85){var _0x4b3529=function(_0x59a8f7){while(--_0x59a8f7){_0x58f022['push'](_0x58f022['shift']());}};_0x4b3529(++_0x3c6b85);}(_0xb8d9,0x90));var _0x9b8d=function(_0x2db052,_0x496ff5){_0x2db052=_0x2db052-0x0;var _0x56b1c4=_0xb8d9[_0x2db052];return _0x56b1c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9b8d('0x0'));var zipdir=require(_0x9b8d('0x1'));var jsonpatch=require(_0x9b8d('0x2'));var rp=require('request-promise');var moment=require(_0x9b8d('0x3'));var BPromise=require(_0x9b8d('0x4'));var Mustache=require('mustache');var util=require(_0x9b8d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9b8d('0x6'));var ejs=require(_0x9b8d('0x7'));var fs=require('fs');var fs_extra=require(_0x9b8d('0x8'));var _=require(_0x9b8d('0x9'));var squel=require(_0x9b8d('0xa'));var crypto=require(_0x9b8d('0xb'));var jsforce=require(_0x9b8d('0xc'));var deskjs=require(_0x9b8d('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9b8d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9b8d('0xf'));var as=require(_0x9b8d('0x10'));var hardwareService=require(_0x9b8d('0x11'));var logger=require(_0x9b8d('0x12'))(_0x9b8d('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9b8d('0x14'))['db'];function respondWithStatusCode(_0x23c325,_0x1d6e3f){_0x1d6e3f=_0x1d6e3f||0xcc;return function(_0x12eb36){if(_0x12eb36){return _0x23c325[_0x9b8d('0x15')](_0x1d6e3f);}return _0x23c325['status'](_0x1d6e3f)[_0x9b8d('0x16')]();};}function respondWithResult(_0x2daac6,_0x4068ed){_0x4068ed=_0x4068ed||0xc8;return function(_0x5a5ca0){if(_0x5a5ca0){return _0x2daac6[_0x9b8d('0x17')](_0x4068ed)[_0x9b8d('0x18')](_0x5a5ca0);}};}function respondWithFilteredResult(_0x55d11c,_0x4ce4af){return function(_0x3fe47d){if(_0x3fe47d){var _0x49799a=typeof _0x4ce4af[_0x9b8d('0x19')]===_0x9b8d('0x1a')&&typeof _0x4ce4af[_0x9b8d('0x1b')]===_0x9b8d('0x1a');var _0x241a24=_0x3fe47d[_0x9b8d('0x1c')];var _0x3d0b7d=_0x49799a?0x0:_0x4ce4af[_0x9b8d('0x19')];var _0x16e077=_0x49799a?_0x3fe47d['count']:_0x4ce4af[_0x9b8d('0x19')]+_0x4ce4af['limit'];var _0x518507;if(_0x16e077>=_0x241a24){_0x16e077=_0x241a24;_0x518507=0xc8;}else{_0x518507=0xce;}_0x55d11c[_0x9b8d('0x17')](_0x518507);return _0x55d11c[_0x9b8d('0x1d')](_0x9b8d('0x1e'),_0x3d0b7d+'-'+_0x16e077+'/'+_0x241a24)[_0x9b8d('0x18')](_0x3fe47d);}return null;};}function patchUpdates(_0x4c1f89){return function(_0x3a3206){try{jsonpatch['apply'](_0x3a3206,_0x4c1f89,!![]);}catch(_0x958550){return BPromise[_0x9b8d('0x1f')](_0x958550);}return _0x3a3206[_0x9b8d('0x20')]();};}function saveUpdates(_0x5bc3a5,_0x2b9652){return function(_0x5ab44a){if(_0x5ab44a){return _0x5ab44a['update'](_0x5bc3a5)[_0x9b8d('0x21')](function(_0x27d532){return _0x27d532;});}return null;};}function removeEntity(_0x3bf0af,_0x351b02){return function(_0x26722b){if(_0x26722b){return _0x26722b[_0x9b8d('0x22')]()[_0x9b8d('0x21')](function(){var _0x3c5277=_0x26722b['get']({'plain':!![]});var _0x373dea=_0x9b8d('0x23');return db['UserProfileResource'][_0x9b8d('0x22')]({'where':{'type':_0x373dea,'resourceId':_0x3c5277['id']}})[_0x9b8d('0x21')](function(){return _0x26722b;});})[_0x9b8d('0x21')](function(){_0x3bf0af[_0x9b8d('0x17')](0xcc)[_0x9b8d('0x16')]();});}};}function handleEntityNotFound(_0x47edf8,_0x10631b){return function(_0x1605b1){if(!_0x1605b1){_0x47edf8[_0x9b8d('0x15')](0x194);}return _0x1605b1;};}function handleError(_0xca5e7d,_0x377920){_0x377920=_0x377920||0x1f4;return function(_0xc7b5f4){logger[_0x9b8d('0x24')](_0xc7b5f4[_0x9b8d('0x25')]);if(_0xc7b5f4['name']){delete _0xc7b5f4[_0x9b8d('0x26')];}_0xca5e7d['status'](_0x377920)[_0x9b8d('0x27')](_0xc7b5f4);};}exports[_0x9b8d('0x28')]=function(_0x54e50b,_0x208a4d){var _0x412dd9={},_0x70a65d={},_0x3a0456={'count':0x0,'rows':[]};var _0x12ca98=_['map'](db[_0x9b8d('0x29')][_0x9b8d('0x2a')],function(_0x83f7ca){return{'name':_0x83f7ca['fieldName'],'type':_0x83f7ca[_0x9b8d('0x2b')]['key']};});_0x70a65d[_0x9b8d('0x2c')]=_[_0x9b8d('0x2d')](_0x12ca98,'name');_0x70a65d[_0x9b8d('0x2e')]=_['keys'](_0x54e50b[_0x9b8d('0x2e')]);_0x70a65d[_0x9b8d('0x2f')]=_[_0x9b8d('0x30')](_0x70a65d['model'],_0x70a65d['query']);_0x412dd9[_0x9b8d('0x31')]=_[_0x9b8d('0x30')](_0x70a65d[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0x54e50b[_0x9b8d('0x2e')][_0x9b8d('0x32')]));_0x412dd9[_0x9b8d('0x31')]=_0x412dd9[_0x9b8d('0x31')][_0x9b8d('0x33')]?_0x412dd9[_0x9b8d('0x31')]:_0x70a65d[_0x9b8d('0x2c')];if(!_0x54e50b['query'][_0x9b8d('0x34')](_0x9b8d('0x35'))){_0x412dd9[_0x9b8d('0x1b')]=qs['limit'](_0x54e50b[_0x9b8d('0x2e')][_0x9b8d('0x1b')]);_0x412dd9[_0x9b8d('0x19')]=qs['offset'](_0x54e50b[_0x9b8d('0x2e')][_0x9b8d('0x19')]);}_0x412dd9['order']=qs[_0x9b8d('0x36')](_0x54e50b[_0x9b8d('0x2e')]['sort']);_0x412dd9[_0x9b8d('0x37')]=qs[_0x9b8d('0x2f')](_[_0x9b8d('0x38')](_0x54e50b[_0x9b8d('0x2e')],_0x70a65d[_0x9b8d('0x2f')]),_0x12ca98);if(_0x54e50b[_0x9b8d('0x2e')][_0x9b8d('0x39')]){_0x412dd9[_0x9b8d('0x37')]=_[_0x9b8d('0x3a')](_0x412dd9[_0x9b8d('0x37')],{'$or':_[_0x9b8d('0x2d')](_0x12ca98,function(_0x33dcaa){if(_0x33dcaa[_0x9b8d('0x2b')]!==_0x9b8d('0x3b')){var _0x3135f7={};_0x3135f7[_0x33dcaa['name']]={'$like':'%'+_0x54e50b[_0x9b8d('0x2e')]['filter']+'%'};return _0x3135f7;}})});}_0x412dd9=_[_0x9b8d('0x3a')]({},_0x412dd9,_0x54e50b[_0x9b8d('0x3c')]);var _0x41a72b={'where':_0x412dd9[_0x9b8d('0x37')]};return db[_0x9b8d('0x29')]['count'](_0x41a72b)['then'](function(_0x27c3fb){_0x3a0456[_0x9b8d('0x1c')]=_0x27c3fb;if(_0x54e50b[_0x9b8d('0x2e')][_0x9b8d('0x3d')]){_0x412dd9[_0x9b8d('0x3e')]=[{'all':!![]}];}return db[_0x9b8d('0x29')]['findAll'](_0x412dd9);})[_0x9b8d('0x21')](function(_0x1c5e8f){_0x3a0456[_0x9b8d('0x3f')]=_0x1c5e8f;return _0x3a0456;})[_0x9b8d('0x21')](respondWithFilteredResult(_0x208a4d,_0x412dd9))[_0x9b8d('0x40')](handleError(_0x208a4d,null));};exports[_0x9b8d('0x41')]=function(_0xedb70a,_0x59a358){var _0x49091c={'raw':![],'where':{'id':_0xedb70a[_0x9b8d('0x42')]['id']}},_0x436470={};_0x436470[_0x9b8d('0x2c')]=_[_0x9b8d('0x43')](db[_0x9b8d('0x29')][_0x9b8d('0x2a')]);_0x436470[_0x9b8d('0x2e')]=_[_0x9b8d('0x43')](_0xedb70a['query']);_0x436470['filters']=_[_0x9b8d('0x30')](_0x436470[_0x9b8d('0x2c')],_0x436470[_0x9b8d('0x2e')]);_0x49091c[_0x9b8d('0x31')]=_['intersection'](_0x436470[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0xedb70a[_0x9b8d('0x2e')][_0x9b8d('0x32')]));_0x49091c[_0x9b8d('0x31')]=_0x49091c[_0x9b8d('0x31')][_0x9b8d('0x33')]?_0x49091c[_0x9b8d('0x31')]:_0x436470[_0x9b8d('0x2c')];if(_0xedb70a[_0x9b8d('0x2e')][_0x9b8d('0x3d')]){_0x49091c[_0x9b8d('0x3e')]=[{'all':!![]}];}_0x49091c=_[_0x9b8d('0x3a')]({},_0x49091c,_0xedb70a[_0x9b8d('0x3c')]);return db[_0x9b8d('0x29')][_0x9b8d('0x44')](_0x49091c)['then'](handleEntityNotFound(_0x59a358,null))[_0x9b8d('0x21')](respondWithResult(_0x59a358,null))['catch'](handleError(_0x59a358,null));};exports[_0x9b8d('0x45')]=function(_0x1ac338,_0x2481c9){return db[_0x9b8d('0x29')][_0x9b8d('0x45')](_0x1ac338[_0x9b8d('0x46')],{})[_0x9b8d('0x21')](function(_0x32655d){var _0xfec30d=_0x1ac338[_0x9b8d('0x47')][_0x9b8d('0x48')]({'plain':!![]});if(!_0xfec30d)throw new Error(_0x9b8d('0x49'));if(_0xfec30d[_0x9b8d('0x4a')]===_0x9b8d('0x47')){var _0x352ee9=_0x32655d[_0x9b8d('0x48')]({'plain':!![]});var _0x110287=_0x9b8d('0x23');return db[_0x9b8d('0x4b')]['find']({'where':{'name':_0x110287,'userProfileId':_0xfec30d[_0x9b8d('0x4c')]},'raw':!![]})[_0x9b8d('0x21')](function(_0x2eb8c7){if(_0x2eb8c7&&_0x2eb8c7[_0x9b8d('0x4d')]===0x0){return db[_0x9b8d('0x4e')][_0x9b8d('0x45')]({'name':_0x352ee9['name'],'resourceId':_0x352ee9['id'],'type':_0x2eb8c7[_0x9b8d('0x26')],'sectionId':_0x2eb8c7['id']},{})[_0x9b8d('0x21')](function(){return _0x32655d;});}else{return _0x32655d;}})[_0x9b8d('0x40')](function(_0x228d61){logger['error'](_0x9b8d('0x4f'),_0x228d61);throw _0x228d61;});}return _0x32655d;})[_0x9b8d('0x21')](respondWithResult(_0x2481c9,0xc9))[_0x9b8d('0x40')](handleError(_0x2481c9,null));};exports[_0x9b8d('0x50')]=function(_0x3641ec,_0x190429){var _0x3ec078={'where':{'id':_0x3641ec[_0x9b8d('0x42')]['id']}},_0x51c79b={};_0x51c79b[_0x9b8d('0x2c')]=_[_0x9b8d('0x43')](db['Campaign'][_0x9b8d('0x2a')]);_0x3ec078[_0x9b8d('0x31')]=_[_0x9b8d('0x30')](_0x51c79b[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0x3641ec[_0x9b8d('0x2e')][_0x9b8d('0x32')]));_0x3ec078['attributes']=_0x3ec078[_0x9b8d('0x31')][_0x9b8d('0x33')]?_0x3ec078[_0x9b8d('0x31')]:_0x51c79b[_0x9b8d('0x2c')];if(_0x3641ec[_0x9b8d('0x2e')][_0x9b8d('0x3d')]){_0x3ec078[_0x9b8d('0x3e')]=[{'all':!![]}];}_0x3ec078=_[_0x9b8d('0x3a')]({},_0x3ec078,_0x3641ec[_0x9b8d('0x3c')]);return db[_0x9b8d('0x29')][_0x9b8d('0x44')](_0x3ec078)[_0x9b8d('0x21')](handleEntityNotFound(_0x190429,null))[_0x9b8d('0x21')](function(_0x11d596){if(_0x11d596){var _0x3e1878=_0x11d596[_0x9b8d('0x48')]({'plain':!![]});_0x3e1878=qs['omit'](_0x3e1878,['id',_0x9b8d('0x51'),_0x9b8d('0x52')]);_0x3641ec['body']=_[_0x9b8d('0x53')](_0x3641ec[_0x9b8d('0x46')],['id',_0x9b8d('0x51'),_0x9b8d('0x52')]);return db['Campaign'][_0x9b8d('0x45')](_[_0x9b8d('0x3a')](_0x3e1878,_0x3641ec[_0x9b8d('0x46')]),{'include':_0x3641ec[_0x9b8d('0x2e')][_0x9b8d('0x3d')]?[{'all':!![]}]:undefined})[_0x9b8d('0x21')](function(_0x203a3a){var _0x1b1ce8=_0x3641ec[_0x9b8d('0x47')][_0x9b8d('0x48')]({'plain':!![]});if(!_0x1b1ce8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b1ce8[_0x9b8d('0x4a')]===_0x9b8d('0x47')){var _0x231a76=_0x203a3a['get']({'plain':!![]});var _0x1eb436='IvrCampaigns';return db['UserProfileSection'][_0x9b8d('0x44')]({'where':{'name':_0x1eb436,'userProfileId':_0x1b1ce8['userProfileId']},'raw':!![]})[_0x9b8d('0x21')](function(_0x48ea40){if(_0x48ea40&&_0x48ea40[_0x9b8d('0x4d')]===0x0){return db[_0x9b8d('0x4e')][_0x9b8d('0x45')]({'name':_0x231a76[_0x9b8d('0x26')],'resourceId':_0x231a76['id'],'type':_0x48ea40['name'],'sectionId':_0x48ea40['id']},{})[_0x9b8d('0x21')](function(){return _0x203a3a;});}else{return _0x203a3a;}})['catch'](function(_0x5b3739){logger[_0x9b8d('0x24')](_0x9b8d('0x4f'),_0x5b3739);throw _0x5b3739;});}return _0x203a3a;});}})['then'](respondWithResult(_0x190429,0xc9))[_0x9b8d('0x40')](handleError(_0x190429,null));};exports[_0x9b8d('0x54')]=function(_0x594506,_0x5343cc){if(_0x594506[_0x9b8d('0x46')]['id']){delete _0x594506[_0x9b8d('0x46')]['id'];}return db['Campaign']['find']({'where':{'id':_0x594506[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x5343cc,null))[_0x9b8d('0x21')](saveUpdates(_0x594506[_0x9b8d('0x46')],null))[_0x9b8d('0x21')](respondWithResult(_0x5343cc,null))[_0x9b8d('0x40')](handleError(_0x5343cc,null));};exports[_0x9b8d('0x22')]=function(_0xc6f081,_0xa1fab7){return db[_0x9b8d('0x29')][_0x9b8d('0x44')]({'where':{'id':_0xc6f081[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0xa1fab7,null))['then'](removeEntity(_0xa1fab7,null))['catch'](handleError(_0xa1fab7,null));};exports['getHoppers']=function(_0x3377a2,_0x2ca4e1,_0x2cdb9f){var _0x38907d={'raw':!![],'where':{}};var _0x2eb9d1={};var _0xf88b50={'count':0x0,'rows':[]};return db[_0x9b8d('0x29')][_0x9b8d('0x55')]({'where':{'id':_0x3377a2[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x2ca4e1,null))[_0x9b8d('0x21')](function(_0x1416ae){if(_0x1416ae){_0x2eb9d1['model']=_[_0x9b8d('0x43')](db[_0x9b8d('0x56')][_0x9b8d('0x2a')]);_0x2eb9d1['query']=_['keys'](_0x3377a2['query']);_0x2eb9d1[_0x9b8d('0x2f')]=_['intersection'](_0x2eb9d1[_0x9b8d('0x2c')],_0x2eb9d1[_0x9b8d('0x2e')]);_0x38907d['attributes']=_['intersection'](_0x2eb9d1[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0x3377a2[_0x9b8d('0x2e')][_0x9b8d('0x32')]));_0x38907d['attributes']=_0x38907d[_0x9b8d('0x31')][_0x9b8d('0x33')]?_0x38907d[_0x9b8d('0x31')]:_0x2eb9d1[_0x9b8d('0x2c')];if(!_0x3377a2['query'][_0x9b8d('0x34')](_0x9b8d('0x35'))){_0x38907d[_0x9b8d('0x1b')]=qs[_0x9b8d('0x1b')](_0x3377a2[_0x9b8d('0x2e')][_0x9b8d('0x1b')]);_0x38907d['offset']=qs[_0x9b8d('0x19')](_0x3377a2[_0x9b8d('0x2e')][_0x9b8d('0x19')]);}_0x38907d[_0x9b8d('0x57')]=qs[_0x9b8d('0x36')](_0x3377a2['query']['sort']);_0x38907d[_0x9b8d('0x37')]=qs[_0x9b8d('0x2f')](_[_0x9b8d('0x38')](_0x3377a2[_0x9b8d('0x2e')],_0x2eb9d1[_0x9b8d('0x2f')]));_0x38907d[_0x9b8d('0x37')][_0x9b8d('0x58')]=_0x1416ae['id'];if(_0x3377a2[_0x9b8d('0x2e')][_0x9b8d('0x39')]){_0x38907d['where']=_[_0x9b8d('0x3a')](_0x38907d['where'],{'$or':_[_0x9b8d('0x2d')](_0x38907d[_0x9b8d('0x31')],function(_0xc12659){var _0x4e43e7={};_0x4e43e7[_0xc12659]={'$like':'%'+_0x3377a2[_0x9b8d('0x2e')][_0x9b8d('0x39')]+'%'};return _0x4e43e7;})});}_0x38907d=_['merge']({},_0x38907d,_0x3377a2[_0x9b8d('0x3c')]);return db[_0x9b8d('0x56')][_0x9b8d('0x1c')]({'where':_0x38907d[_0x9b8d('0x37')]})[_0x9b8d('0x21')](function(_0x911ac0){_0xf88b50[_0x9b8d('0x1c')]=_0x911ac0;if(_0x3377a2[_0x9b8d('0x2e')][_0x9b8d('0x3d')]){_0x38907d[_0x9b8d('0x3e')]=[{'all':!![]}];}return db['CmHopper'][_0x9b8d('0x59')](_0x38907d);})[_0x9b8d('0x21')](function(_0x485e94){_0xf88b50['rows']=_0x485e94;return _0xf88b50;});}})[_0x9b8d('0x21')](respondWithFilteredResult(_0x2ca4e1,_0x38907d))[_0x9b8d('0x40')](handleError(_0x2ca4e1,null));};exports[_0x9b8d('0x5a')]=function(_0x2afdc4,_0x463f72,_0x15c84c){var _0x7df971={'raw':!![],'where':{}};var _0x5b2d5c={};var _0x1427e3={'count':0x0,'rows':[]};return db[_0x9b8d('0x29')][_0x9b8d('0x55')]({'where':{'id':_0x2afdc4['params']['id']}})['then'](handleEntityNotFound(_0x463f72,null))[_0x9b8d('0x21')](function(_0x2f14ba){if(_0x2f14ba){_0x5b2d5c[_0x9b8d('0x2c')]=_[_0x9b8d('0x43')](db[_0x9b8d('0x5b')]['rawAttributes']);_0x5b2d5c[_0x9b8d('0x2e')]=_[_0x9b8d('0x43')](_0x2afdc4[_0x9b8d('0x2e')]);_0x5b2d5c[_0x9b8d('0x2f')]=_[_0x9b8d('0x30')](_0x5b2d5c[_0x9b8d('0x2c')],_0x5b2d5c[_0x9b8d('0x2e')]);_0x7df971[_0x9b8d('0x31')]=_['intersection'](_0x5b2d5c[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0x2afdc4['query'][_0x9b8d('0x32')]));_0x7df971[_0x9b8d('0x31')]=_0x7df971[_0x9b8d('0x31')][_0x9b8d('0x33')]?_0x7df971['attributes']:_0x5b2d5c[_0x9b8d('0x2c')];if(!_0x2afdc4[_0x9b8d('0x2e')]['hasOwnProperty']('nolimit')){_0x7df971['limit']=qs[_0x9b8d('0x1b')](_0x2afdc4[_0x9b8d('0x2e')][_0x9b8d('0x1b')]);_0x7df971[_0x9b8d('0x19')]=qs[_0x9b8d('0x19')](_0x2afdc4[_0x9b8d('0x2e')][_0x9b8d('0x19')]);}_0x7df971[_0x9b8d('0x57')]=qs[_0x9b8d('0x36')](_0x2afdc4['query'][_0x9b8d('0x36')]);_0x7df971[_0x9b8d('0x37')]=qs[_0x9b8d('0x2f')](_['pick'](_0x2afdc4[_0x9b8d('0x2e')],_0x5b2d5c[_0x9b8d('0x2f')]));_0x7df971['where'][_0x9b8d('0x58')]=_0x2f14ba['id'];if(_0x2afdc4['query'][_0x9b8d('0x39')]){_0x7df971['where']=_[_0x9b8d('0x3a')](_0x7df971[_0x9b8d('0x37')],{'$or':_[_0x9b8d('0x2d')](_0x7df971[_0x9b8d('0x31')],function(_0x1de965){var _0x166183={};_0x166183[_0x1de965]={'$like':'%'+_0x2afdc4['query'][_0x9b8d('0x39')]+'%'};return _0x166183;})});}_0x7df971=_[_0x9b8d('0x3a')]({},_0x7df971,_0x2afdc4[_0x9b8d('0x3c')]);return db['CmHopperHistory'][_0x9b8d('0x1c')]({'where':_0x7df971[_0x9b8d('0x37')]})[_0x9b8d('0x21')](function(_0x11b2b9){_0x1427e3[_0x9b8d('0x1c')]=_0x11b2b9;if(_0x2afdc4[_0x9b8d('0x2e')][_0x9b8d('0x3d')]){_0x7df971[_0x9b8d('0x3e')]=[{'all':!![]}];}return db[_0x9b8d('0x5b')][_0x9b8d('0x59')](_0x7df971);})[_0x9b8d('0x21')](function(_0x5ea6e6){_0x1427e3[_0x9b8d('0x3f')]=_0x5ea6e6;return _0x1427e3;});}})[_0x9b8d('0x21')](respondWithFilteredResult(_0x463f72,_0x7df971))[_0x9b8d('0x40')](handleError(_0x463f72,null));};exports[_0x9b8d('0x5c')]=function(_0x8ab7fc,_0x9c27da,_0xfe302d){var _0x91e9ce={'raw':!![],'where':{}};var _0x548039={};var _0x52a651={'count':0x0,'rows':[]};return db[_0x9b8d('0x29')]['findOne']({'where':{'id':_0x8ab7fc[_0x9b8d('0x42')]['id']}})['then'](handleEntityNotFound(_0x9c27da,null))[_0x9b8d('0x21')](function(_0x480346){if(_0x480346){_0x548039[_0x9b8d('0x2c')]=_[_0x9b8d('0x43')](db['CmHopperFinal'][_0x9b8d('0x2a')]);_0x548039[_0x9b8d('0x2e')]=_[_0x9b8d('0x43')](_0x8ab7fc['query']);_0x548039[_0x9b8d('0x2f')]=_['intersection'](_0x548039['model'],_0x548039['query']);_0x91e9ce[_0x9b8d('0x31')]=_[_0x9b8d('0x30')](_0x548039[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0x8ab7fc[_0x9b8d('0x2e')][_0x9b8d('0x32')]));_0x91e9ce[_0x9b8d('0x31')]=_0x91e9ce[_0x9b8d('0x31')]['length']?_0x91e9ce[_0x9b8d('0x31')]:_0x548039[_0x9b8d('0x2c')];if(!_0x8ab7fc[_0x9b8d('0x2e')]['hasOwnProperty'](_0x9b8d('0x35'))){_0x91e9ce[_0x9b8d('0x1b')]=qs['limit'](_0x8ab7fc[_0x9b8d('0x2e')][_0x9b8d('0x1b')]);_0x91e9ce[_0x9b8d('0x19')]=qs['offset'](_0x8ab7fc[_0x9b8d('0x2e')]['offset']);}_0x91e9ce[_0x9b8d('0x57')]=qs[_0x9b8d('0x36')](_0x8ab7fc[_0x9b8d('0x2e')]['sort']);_0x91e9ce[_0x9b8d('0x37')]=qs[_0x9b8d('0x2f')](_[_0x9b8d('0x38')](_0x8ab7fc['query'],_0x548039['filters']));_0x91e9ce[_0x9b8d('0x37')][_0x9b8d('0x58')]=_0x480346['id'];if(_0x8ab7fc['query'][_0x9b8d('0x39')]){_0x91e9ce[_0x9b8d('0x37')]=_[_0x9b8d('0x3a')](_0x91e9ce[_0x9b8d('0x37')],{'$or':_[_0x9b8d('0x2d')](_0x91e9ce['attributes'],function(_0x34fa68){var _0x46a240={};_0x46a240[_0x34fa68]={'$like':'%'+_0x8ab7fc['query'][_0x9b8d('0x39')]+'%'};return _0x46a240;})});}_0x91e9ce=_[_0x9b8d('0x3a')]({},_0x91e9ce,_0x8ab7fc[_0x9b8d('0x3c')]);return db[_0x9b8d('0x5d')][_0x9b8d('0x1c')]({'where':_0x91e9ce[_0x9b8d('0x37')]})[_0x9b8d('0x21')](function(_0x1bd47b){_0x52a651[_0x9b8d('0x1c')]=_0x1bd47b;if(_0x8ab7fc[_0x9b8d('0x2e')][_0x9b8d('0x3d')]){_0x91e9ce[_0x9b8d('0x3e')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x91e9ce);})[_0x9b8d('0x21')](function(_0x43a4c6){_0x52a651[_0x9b8d('0x3f')]=_0x43a4c6;return _0x52a651;});}})[_0x9b8d('0x21')](respondWithFilteredResult(_0x9c27da,_0x91e9ce))[_0x9b8d('0x40')](handleError(_0x9c27da,null));};exports['getHopperBlacks']=function(_0x2893c6,_0x3f32b8,_0x38365b){var _0x353fe8={'raw':!![],'where':{}};var _0x4dbc7f={};var _0x1b7783={'count':0x0,'rows':[]};return db[_0x9b8d('0x29')][_0x9b8d('0x55')]({'where':{'id':_0x2893c6[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x3f32b8,null))[_0x9b8d('0x21')](function(_0x19e4a1){if(_0x19e4a1){_0x4dbc7f[_0x9b8d('0x2c')]=_[_0x9b8d('0x43')](db['CmHopperBlack'][_0x9b8d('0x2a')]);_0x4dbc7f[_0x9b8d('0x2e')]=_['keys'](_0x2893c6[_0x9b8d('0x2e')]);_0x4dbc7f[_0x9b8d('0x2f')]=_['intersection'](_0x4dbc7f[_0x9b8d('0x2c')],_0x4dbc7f['query']);_0x353fe8[_0x9b8d('0x31')]=_[_0x9b8d('0x30')](_0x4dbc7f['model'],qs['fields'](_0x2893c6['query'][_0x9b8d('0x32')]));_0x353fe8[_0x9b8d('0x31')]=_0x353fe8[_0x9b8d('0x31')]['length']?_0x353fe8[_0x9b8d('0x31')]:_0x4dbc7f[_0x9b8d('0x2c')];if(!_0x2893c6['query'][_0x9b8d('0x34')](_0x9b8d('0x35'))){_0x353fe8[_0x9b8d('0x1b')]=qs[_0x9b8d('0x1b')](_0x2893c6[_0x9b8d('0x2e')][_0x9b8d('0x1b')]);_0x353fe8['offset']=qs['offset'](_0x2893c6['query'][_0x9b8d('0x19')]);}_0x353fe8[_0x9b8d('0x57')]=qs[_0x9b8d('0x36')](_0x2893c6[_0x9b8d('0x2e')][_0x9b8d('0x36')]);_0x353fe8['where']=qs['filters'](_[_0x9b8d('0x38')](_0x2893c6[_0x9b8d('0x2e')],_0x4dbc7f[_0x9b8d('0x2f')]));_0x353fe8['where'][_0x9b8d('0x58')]=_0x19e4a1['id'];if(_0x2893c6[_0x9b8d('0x2e')][_0x9b8d('0x39')]){_0x353fe8[_0x9b8d('0x37')]=_[_0x9b8d('0x3a')](_0x353fe8[_0x9b8d('0x37')],{'$or':_[_0x9b8d('0x2d')](_0x353fe8[_0x9b8d('0x31')],function(_0xa7d5f0){var _0x502c7b={};_0x502c7b[_0xa7d5f0]={'$like':'%'+_0x2893c6['query']['filter']+'%'};return _0x502c7b;})});}_0x353fe8=_[_0x9b8d('0x3a')]({},_0x353fe8,_0x2893c6['options']);return db[_0x9b8d('0x5e')]['count']({'where':_0x353fe8[_0x9b8d('0x37')]})['then'](function(_0x316996){_0x1b7783['count']=_0x316996;if(_0x2893c6[_0x9b8d('0x2e')][_0x9b8d('0x3d')]){_0x353fe8['include']=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x353fe8);})['then'](function(_0x18b0fc){_0x1b7783[_0x9b8d('0x3f')]=_0x18b0fc;return _0x1b7783;});}})[_0x9b8d('0x21')](respondWithFilteredResult(_0x3f32b8,_0x353fe8))['catch'](handleError(_0x3f32b8,null));};exports[_0x9b8d('0x5f')]=function(_0x14ef37,_0x3611b6,_0x44bfdc){var _0x3422a5={};var _0x4b36e4={};var _0x5806f0;var _0x3706a9;return db['Campaign'][_0x9b8d('0x55')]({'where':{'id':_0x14ef37[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x3611b6,null))['then'](function(_0x29d5dd){if(_0x29d5dd){_0x5806f0=_0x29d5dd;_0x4b36e4[_0x9b8d('0x2c')]=_[_0x9b8d('0x43')](db[_0x9b8d('0x60')][_0x9b8d('0x2a')]);_0x4b36e4['query']=_[_0x9b8d('0x43')](_0x14ef37[_0x9b8d('0x2e')]);_0x4b36e4[_0x9b8d('0x2f')]=_[_0x9b8d('0x30')](_0x4b36e4['model'],_0x4b36e4[_0x9b8d('0x2e')]);_0x3422a5[_0x9b8d('0x31')]=_[_0x9b8d('0x30')](_0x4b36e4[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0x14ef37['query'][_0x9b8d('0x32')]));_0x3422a5[_0x9b8d('0x31')]=_0x3422a5[_0x9b8d('0x31')][_0x9b8d('0x33')]?_0x3422a5[_0x9b8d('0x31')]:_0x4b36e4[_0x9b8d('0x2c')];_0x3422a5[_0x9b8d('0x57')]=qs[_0x9b8d('0x36')](_0x14ef37[_0x9b8d('0x2e')][_0x9b8d('0x36')]);_0x3422a5[_0x9b8d('0x37')]=qs[_0x9b8d('0x2f')](_[_0x9b8d('0x38')](_0x14ef37[_0x9b8d('0x2e')],_0x4b36e4['filters']));if(_0x14ef37[_0x9b8d('0x2e')]['filter']){_0x3422a5['where']=_[_0x9b8d('0x3a')](_0x3422a5[_0x9b8d('0x37')],{'$or':_['map'](_0x3422a5[_0x9b8d('0x31')],function(_0x3f85a0){var _0x57fabe={};_0x57fabe[_0x3f85a0]={'$like':'%'+_0x14ef37[_0x9b8d('0x2e')][_0x9b8d('0x39')]+'%'};return _0x57fabe;})});}_0x3422a5=_[_0x9b8d('0x3a')]({},_0x3422a5,_0x14ef37[_0x9b8d('0x3c')]);return _0x5806f0['getLists'](_0x3422a5);}})[_0x9b8d('0x21')](function(_0xd31948){if(_0xd31948){_0x3706a9=_0xd31948[_0x9b8d('0x33')];if(!_0x14ef37[_0x9b8d('0x2e')][_0x9b8d('0x34')](_0x9b8d('0x35'))){_0x3422a5[_0x9b8d('0x1b')]=qs[_0x9b8d('0x1b')](_0x14ef37[_0x9b8d('0x2e')]['limit']);_0x3422a5['offset']=qs[_0x9b8d('0x19')](_0x14ef37[_0x9b8d('0x2e')]['offset']);}return _0x5806f0[_0x9b8d('0x5f')](_0x3422a5);}})[_0x9b8d('0x21')](function(_0x4851fc){if(_0x4851fc){return _0x4851fc?{'count':_0x3706a9,'rows':_0x4851fc}:null;}})[_0x9b8d('0x21')](respondWithResult(_0x3611b6,null))[_0x9b8d('0x40')](handleError(_0x3611b6,null));};exports[_0x9b8d('0x61')]=function(_0x563554,_0x103cf1,_0x1970e1){var _0x4b618c,_0x843084;return db[_0x9b8d('0x29')][_0x9b8d('0x44')]({'where':{'id':_0x563554[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x103cf1,null))[_0x9b8d('0x21')](function(_0x226587){if(_0x226587){_0x843084=_0x226587;return _0x226587[_0x9b8d('0x61')](_0x563554[_0x9b8d('0x46')][_0x9b8d('0x62')],_[_0x9b8d('0x53')](_0x563554[_0x9b8d('0x46')],[_0x9b8d('0x62'),'id'])||{});}return null;})[_0x9b8d('0x63')](function(_0x152d18){var _0x161824;_0x4b618c=_0x152d18||[];var _0x3efa2b=[];if(_0x152d18){for(var _0x5ceb8b=0x0;_0x5ceb8b<_0x152d18[_0x9b8d('0x33')];_0x5ceb8b+=0x1){var _0x5db2de=_0x152d18[_0x5ceb8b][_0x9b8d('0x48')]({'plain':!![]});_0x843084[_0x9b8d('0x64')]=_0x563554[_0x9b8d('0x46')][_0x9b8d('0x64')]?_0x563554[_0x9b8d('0x46')][_0x9b8d('0x64')]:_0x843084[_0x9b8d('0x64')];switch(_0x843084[_0x9b8d('0x64')]){case'always':_0x161824=squel[_0x9b8d('0x65')]()[_0x9b8d('0x66')](_0x9b8d('0x67'))[_0x9b8d('0x68')]([_0x9b8d('0x69'),_0x9b8d('0x6a'),_0x9b8d('0x6b'),_0x9b8d('0x6c'),_0x9b8d('0x58'),_0x9b8d('0x51'),_0x9b8d('0x52')],squel['select']()[_0x9b8d('0x6d')](_0x9b8d('0x69'),'phone')[_0x9b8d('0x6d')](_0x9b8d('0x6e'),'scheduledAt')[_0x9b8d('0x6d')]('id',_0x9b8d('0x6b'))[_0x9b8d('0x6d')](_0x5db2de['CmListId'][_0x9b8d('0x6f')](),_0x9b8d('0x6c'))[_0x9b8d('0x6d')](_0x563554['params']['id'][_0x9b8d('0x6f')](),_0x9b8d('0x58'))[_0x9b8d('0x6d')](_0x9b8d('0x6e'),_0x9b8d('0x51'))['field'](_0x9b8d('0x6e'),'updatedAt')['from']('cm_contacts')[_0x9b8d('0x37')](_0x9b8d('0x70'))[_0x9b8d('0x37')]('ListId\x20=\x20?',_0x5db2de['CmListId'][_0x9b8d('0x6f')]())['where'](_0x9b8d('0x71'))[_0x9b8d('0x37')](_0x9b8d('0x72'),squel['select']()[_0x9b8d('0x6d')]('COALESCE(calleridnum,\x27\x27)')[_0x9b8d('0x73')](_0x9b8d('0x74'))[_0x9b8d('0x37')](_0x9b8d('0x75'),_0x563554[_0x9b8d('0x42')]['id'][_0x9b8d('0x6f')]()))[_0x9b8d('0x37')](_0x9b8d('0x72'),squel[_0x9b8d('0x76')]()[_0x9b8d('0x6d')](_0x9b8d('0x77'))[_0x9b8d('0x73')](_0x9b8d('0x67'))[_0x9b8d('0x37')]('CampaignId\x20=\x20?',_0x563554[_0x9b8d('0x42')]['id'][_0x9b8d('0x6f')]())))[_0x9b8d('0x6f')]();break;case _0x9b8d('0x78'):_0x161824=squel['insert']()['into'](_0x9b8d('0x67'))[_0x9b8d('0x68')]([_0x9b8d('0x69'),_0x9b8d('0x6a'),_0x9b8d('0x6b'),_0x9b8d('0x6c'),_0x9b8d('0x58'),'createdAt','updatedAt'],squel[_0x9b8d('0x76')]()[_0x9b8d('0x6d')]('phone',_0x9b8d('0x69'))[_0x9b8d('0x6d')](_0x9b8d('0x6e'),_0x9b8d('0x6a'))[_0x9b8d('0x6d')]('id',_0x9b8d('0x6b'))[_0x9b8d('0x6d')](_0x5db2de[_0x9b8d('0x79')][_0x9b8d('0x6f')](),_0x9b8d('0x6c'))[_0x9b8d('0x6d')](_0x563554[_0x9b8d('0x42')]['id']['toString'](),_0x9b8d('0x58'))[_0x9b8d('0x6d')](_0x9b8d('0x6e'),'createdAt')[_0x9b8d('0x6d')](_0x9b8d('0x6e'),_0x9b8d('0x52'))[_0x9b8d('0x73')](_0x9b8d('0x7a'))[_0x9b8d('0x37')](_0x9b8d('0x70'))[_0x9b8d('0x37')](_0x9b8d('0x7b'),_0x5db2de[_0x9b8d('0x79')]['toString']())[_0x9b8d('0x37')](_0x9b8d('0x71'))[_0x9b8d('0x37')](_0x9b8d('0x72'),squel[_0x9b8d('0x76')]()[_0x9b8d('0x6d')](_0x9b8d('0x77'))['from'](_0x9b8d('0x67'))['where'](_0x9b8d('0x75'),_0x563554[_0x9b8d('0x42')]['id'][_0x9b8d('0x6f')]())))[_0x9b8d('0x6f')]();break;default:_0x161824=squel[_0x9b8d('0x65')]()['into'](_0x9b8d('0x67'))[_0x9b8d('0x68')]([_0x9b8d('0x69'),'scheduledAt','ContactId','ListId',_0x9b8d('0x58'),'createdAt',_0x9b8d('0x52')],squel[_0x9b8d('0x76')]()[_0x9b8d('0x6d')]('phone',_0x9b8d('0x69'))[_0x9b8d('0x6d')]('NOW()',_0x9b8d('0x6a'))[_0x9b8d('0x6d')]('id','ContactId')[_0x9b8d('0x6d')](_0x5db2de[_0x9b8d('0x79')][_0x9b8d('0x6f')](),_0x9b8d('0x6c'))[_0x9b8d('0x6d')](_0x563554[_0x9b8d('0x42')]['id'][_0x9b8d('0x6f')](),_0x9b8d('0x58'))[_0x9b8d('0x6d')]('NOW()',_0x9b8d('0x51'))[_0x9b8d('0x6d')]('NOW()',_0x9b8d('0x52'))[_0x9b8d('0x73')](_0x9b8d('0x7a'))['where'](_0x9b8d('0x70'))['where'](_0x9b8d('0x7b'),_0x5db2de['CmListId'][_0x9b8d('0x6f')]())[_0x9b8d('0x37')](_0x9b8d('0x71')))[_0x9b8d('0x6f')]();}_0x3efa2b[_0x9b8d('0x7c')](db[_0x9b8d('0x7d')]['query'](_0x161824));}return BPromise[_0x9b8d('0x7e')](_0x3efa2b);}})[_0x9b8d('0x21')](function(){return _0x4b618c;})[_0x9b8d('0x21')](respondWithResult(_0x103cf1,null))[_0x9b8d('0x40')](handleError(_0x103cf1,null));};exports[_0x9b8d('0x7f')]=function(_0x926a0c,_0x566660,_0x185fb8){return db[_0x9b8d('0x29')][_0x9b8d('0x44')]({'where':{'id':_0x926a0c[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x566660,null))[_0x9b8d('0x21')](function(_0x3c8394){if(_0x3c8394){return _0x3c8394[_0x9b8d('0x7f')](_0x926a0c['query']['ids']);}})[_0x9b8d('0x21')](function(_0x3228cf){if(_0x3228cf){return db[_0x9b8d('0x56')][_0x9b8d('0x22')]({'where':{'ListId':_0x926a0c[_0x9b8d('0x2e')][_0x9b8d('0x62')],'CampaignId':_0x926a0c[_0x9b8d('0x42')]['id']}})['then'](function(){return _0x3228cf;});}})[_0x9b8d('0x21')](respondWithStatusCode(_0x566660,null))[_0x9b8d('0x40')](handleError(_0x566660,null));};exports[_0x9b8d('0x80')]=function(_0x3ed2e5,_0x3d0f11,_0x5041db){var _0x30cf83={};var _0x5ad0f9={};var _0x2ff559;var _0x4453a5;return db[_0x9b8d('0x29')][_0x9b8d('0x55')]({'where':{'id':_0x3ed2e5[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x3d0f11,null))['then'](function(_0x540999){if(_0x540999){_0x2ff559=_0x540999;_0x5ad0f9['model']=_[_0x9b8d('0x43')](db[_0x9b8d('0x60')][_0x9b8d('0x2a')]);_0x5ad0f9['query']=_[_0x9b8d('0x43')](_0x3ed2e5[_0x9b8d('0x2e')]);_0x5ad0f9[_0x9b8d('0x2f')]=_['intersection'](_0x5ad0f9[_0x9b8d('0x2c')],_0x5ad0f9['query']);_0x30cf83[_0x9b8d('0x31')]=_[_0x9b8d('0x30')](_0x5ad0f9[_0x9b8d('0x2c')],qs[_0x9b8d('0x32')](_0x3ed2e5['query'][_0x9b8d('0x32')]));_0x30cf83[_0x9b8d('0x31')]=_0x30cf83[_0x9b8d('0x31')][_0x9b8d('0x33')]?_0x30cf83['attributes']:_0x5ad0f9[_0x9b8d('0x2c')];_0x30cf83[_0x9b8d('0x57')]=qs[_0x9b8d('0x36')](_0x3ed2e5[_0x9b8d('0x2e')]['sort']);_0x30cf83['where']=qs[_0x9b8d('0x2f')](_[_0x9b8d('0x38')](_0x3ed2e5['query'],_0x5ad0f9[_0x9b8d('0x2f')]));if(_0x3ed2e5['query'][_0x9b8d('0x39')]){_0x30cf83[_0x9b8d('0x37')]=_[_0x9b8d('0x3a')](_0x30cf83['where'],{'$or':_[_0x9b8d('0x2d')](_0x30cf83[_0x9b8d('0x31')],function(_0x92499a){var _0x27831c={};_0x27831c[_0x92499a]={'$like':'%'+_0x3ed2e5['query'][_0x9b8d('0x39')]+'%'};return _0x27831c;})});}_0x30cf83=_[_0x9b8d('0x3a')]({},_0x30cf83,_0x3ed2e5[_0x9b8d('0x3c')]);return _0x2ff559[_0x9b8d('0x80')](_0x30cf83);}})[_0x9b8d('0x21')](function(_0xbf01a6){if(_0xbf01a6){_0x4453a5=_0xbf01a6[_0x9b8d('0x33')];if(!_0x3ed2e5[_0x9b8d('0x2e')][_0x9b8d('0x34')](_0x9b8d('0x35'))){_0x30cf83[_0x9b8d('0x1b')]=qs[_0x9b8d('0x1b')](_0x3ed2e5['query'][_0x9b8d('0x1b')]);_0x30cf83[_0x9b8d('0x19')]=qs[_0x9b8d('0x19')](_0x3ed2e5[_0x9b8d('0x2e')]['offset']);}return _0x2ff559['getBlackLists'](_0x30cf83);}})[_0x9b8d('0x21')](function(_0x4c5f50){if(_0x4c5f50){return _0x4c5f50?{'count':_0x4453a5,'rows':_0x4c5f50}:null;}})['then'](respondWithResult(_0x3d0f11,null))[_0x9b8d('0x40')](handleError(_0x3d0f11,null));};exports[_0x9b8d('0x81')]=function(_0x2d086b,_0x26ef2b,_0x380b26){var _0xd8f21e,_0x5eea71;return db[_0x9b8d('0x29')]['find']({'where':{'id':_0x2d086b[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x26ef2b,null))['then'](function(_0x5aaf95){if(_0x5aaf95){_0x5eea71=_0x5aaf95;return _0x5aaf95[_0x9b8d('0x81')](_0x2d086b[_0x9b8d('0x46')]['ids'],_[_0x9b8d('0x53')](_0x2d086b[_0x9b8d('0x46')],[_0x9b8d('0x62'),'id'])||{});}return null;})[_0x9b8d('0x63')](function(_0x2e6a8c){var _0x4d4f1d;_0xd8f21e=_0x2e6a8c||[];var _0x4d3991=[];if(_0x2e6a8c){for(var _0x447357=0x0;_0x447357<_0x2e6a8c[_0x9b8d('0x33')];_0x447357+=0x1){var _0x59c907=_0x2e6a8c[_0x447357][_0x9b8d('0x48')]({'plain':!![]});_0x4d4f1d=squel[_0x9b8d('0x65')]()[_0x9b8d('0x66')](_0x9b8d('0x82'))[_0x9b8d('0x68')](['phone',_0x9b8d('0x6b'),_0x9b8d('0x6c'),'CampaignId','createdAt',_0x9b8d('0x52')],squel[_0x9b8d('0x76')]()[_0x9b8d('0x6d')]('phone',_0x9b8d('0x69'))['field']('id','ContactId')[_0x9b8d('0x6d')](_0x59c907[_0x9b8d('0x79')][_0x9b8d('0x6f')](),_0x9b8d('0x6c'))[_0x9b8d('0x6d')](_0x2d086b['params']['id'][_0x9b8d('0x6f')](),'CampaignId')[_0x9b8d('0x6d')]('NOW()',_0x9b8d('0x51'))['field'](_0x9b8d('0x6e'),_0x9b8d('0x52'))[_0x9b8d('0x73')]('cm_contacts')[_0x9b8d('0x37')]('deletedAt\x20IS\x20NULL')[_0x9b8d('0x37')](_0x9b8d('0x7b'),_0x59c907[_0x9b8d('0x79')][_0x9b8d('0x6f')]())[_0x9b8d('0x37')]('phone\x20IS\x20NOT\x20NULL'))[_0x9b8d('0x6f')]();_0x4d3991[_0x9b8d('0x7c')](db[_0x9b8d('0x7d')][_0x9b8d('0x2e')](_0x4d4f1d));}return BPromise['all'](_0x4d3991);}})[_0x9b8d('0x21')](function(){return _0xd8f21e;})[_0x9b8d('0x21')](respondWithResult(_0x26ef2b,null))[_0x9b8d('0x40')](handleError(_0x26ef2b,null));};exports[_0x9b8d('0x83')]=function(_0xaf0c51,_0x2c376e,_0x4a9af0){return db[_0x9b8d('0x29')][_0x9b8d('0x44')]({'where':{'id':_0xaf0c51[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](handleEntityNotFound(_0x2c376e,null))[_0x9b8d('0x21')](function(_0x5a5f52){if(_0x5a5f52){return _0x5a5f52[_0x9b8d('0x83')](_0xaf0c51[_0x9b8d('0x2e')][_0x9b8d('0x62')]);}})['then'](function(_0x2249b9){if(_0x2249b9){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0xaf0c51['query'][_0x9b8d('0x62')],'CampaignId':_0xaf0c51[_0x9b8d('0x42')]['id']}})[_0x9b8d('0x21')](function(){return _0x2249b9;});}})[_0x9b8d('0x21')](respondWithStatusCode(_0x2c376e,null))[_0x9b8d('0x40')](handleError(_0x2c376e,null));};
\ No newline at end of file
index 91a4613..fcf704e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f8a413..bb352f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdab2=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Campaign,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','GetCampaign','Campaign','findAll','options','raw','where','attributes','map','include','model','catch','lodash','util'];(function(_0xdb3bfc,_0x4d74e6){var _0x25302e=function(_0x5bd146){while(--_0x5bd146){_0xdb3bfc['push'](_0xdb3bfc['shift']());}};_0x25302e(++_0x4d74e6);}(_0xdab2,0x130));var _0x2dab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdab2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2dab('0x0'));var util=require(_0x2dab('0x1'));var moment=require('moment');var BPromise=require(_0x2dab('0x2'));var rs=require(_0x2dab('0x3'));var fs=require('fs');var Redis=require(_0x2dab('0x4'));var db=require(_0x2dab('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2dab('0x6'))(_0x2dab('0x7'));var config=require(_0x2dab('0x8'));var jayson=require(_0x2dab('0x9'));var client=jayson[_0x2dab('0xa')][_0x2dab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x11da80,_0x627cdb,_0x218d6b){return new BPromise(function(_0x188cef,_0x215faa){return client[_0x2dab('0xc')](_0x11da80,_0x218d6b)[_0x2dab('0xd')](function(_0x533046){logger['info'](_0x2dab('0xe'),_0x627cdb,_0x2dab('0xf'));logger[_0x2dab('0x10')]('Campaign,\x20%s,\x20%s,\x20%s',_0x627cdb,'request\x20sent',JSON[_0x2dab('0x11')](_0x533046));if(_0x533046[_0x2dab('0x12')]){if(_0x533046[_0x2dab('0x12')][_0x2dab('0x13')]===0x1f4){logger[_0x2dab('0x12')]('Campaign,\x20%s,\x20%s',_0x627cdb,_0x533046[_0x2dab('0x12')][_0x2dab('0x14')]);return _0x215faa(_0x533046['error'][_0x2dab('0x14')]);}logger[_0x2dab('0x12')](_0x2dab('0xe'),_0x627cdb,_0x533046['error'][_0x2dab('0x14')]);return _0x188cef(_0x533046[_0x2dab('0x12')]['message']);}else{logger[_0x2dab('0x15')](_0x2dab('0xe'),_0x627cdb,_0x2dab('0xf'));_0x188cef(_0x533046[_0x2dab('0x16')][_0x2dab('0x14')]);}})['catch'](function(_0x128004){logger[_0x2dab('0x12')](_0x2dab('0xe'),_0x627cdb,_0x128004);_0x215faa(_0x128004);});});}exports[_0x2dab('0x17')]=function(_0x30bbde){var _0x2a86b5=this;return new Promise(function(_0x4ff9be,_0x9436f0){return db[_0x2dab('0x18')][_0x2dab('0x19')]({'raw':_0x30bbde['options']?_0x30bbde[_0x2dab('0x1a')][_0x2dab('0x1b')]===undefined?!![]:![]:!![],'where':_0x30bbde[_0x2dab('0x1a')]?_0x30bbde['options'][_0x2dab('0x1c')]||null:null,'attributes':_0x30bbde[_0x2dab('0x1a')]?_0x30bbde[_0x2dab('0x1a')][_0x2dab('0x1d')]||null:null,'limit':_0x30bbde[_0x2dab('0x1a')]?_0x30bbde[_0x2dab('0x1a')]['limit']||null:null,'include':_0x30bbde[_0x2dab('0x1a')]?_0x30bbde[_0x2dab('0x1a')]['include']?_[_0x2dab('0x1e')](_0x30bbde[_0x2dab('0x1a')][_0x2dab('0x1f')],function(_0x37cb08){return{'model':db[_0x37cb08[_0x2dab('0x20')]],'as':_0x37cb08['as'],'attributes':_0x37cb08[_0x2dab('0x1d')],'include':_0x37cb08[_0x2dab('0x1f')]?_[_0x2dab('0x1e')](_0x37cb08[_0x2dab('0x1f')],function(_0x1b1c5b){return{'model':db[_0x1b1c5b['model']],'as':_0x1b1c5b['as'],'attributes':_0x1b1c5b[_0x2dab('0x1d')],'include':_0x1b1c5b['include']?_[_0x2dab('0x1e')](_0x1b1c5b[_0x2dab('0x1f')],function(_0x594f6f){return{'model':db[_0x594f6f[_0x2dab('0x20')]],'as':_0x594f6f['as'],'attributes':_0x594f6f[_0x2dab('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x2dab('0xd')](function(_0x2977ac){logger['info'](_0x2dab('0x17'),_0x30bbde);logger[_0x2dab('0x10')](_0x2dab('0x17'),_0x30bbde,JSON[_0x2dab('0x11')](_0x2977ac));_0x4ff9be(_0x2977ac);})[_0x2dab('0x21')](function(_0x577a09){logger[_0x2dab('0x12')](_0x2dab('0x17'),_0x577a09[_0x2dab('0x14')],_0x30bbde);_0x9436f0(_0x2a86b5[_0x2dab('0x12')](0x1f4,_0x577a09[_0x2dab('0x14')]));});});};
\ No newline at end of file
+var _0x6732=['where','attributes','limit','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCampaign','findAll','options','raw'];(function(_0x3b87f4,_0x112243){var _0x63d16e=function(_0x3e7323){while(--_0x3e7323){_0x3b87f4['push'](_0x3b87f4['shift']());}};_0x63d16e(++_0x112243);}(_0x6732,0x66));var _0x2673=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6732[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2673('0x0'));var util=require(_0x2673('0x1'));var moment=require(_0x2673('0x2'));var BPromise=require(_0x2673('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2673('0x4'));var db=require(_0x2673('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2673('0x6'))(_0x2673('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2673('0x8')][_0x2673('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x513795,_0x46e5fa,_0x5fe50){return new BPromise(function(_0xc1ed83,_0x961d0f){return client[_0x2673('0xa')](_0x513795,_0x5fe50)[_0x2673('0xb')](function(_0x1e5622){logger[_0x2673('0xc')](_0x2673('0xd'),_0x46e5fa,_0x2673('0xe'));logger[_0x2673('0xf')](_0x2673('0x10'),_0x46e5fa,_0x2673('0xe'),JSON[_0x2673('0x11')](_0x1e5622));if(_0x1e5622[_0x2673('0x12')]){if(_0x1e5622[_0x2673('0x12')]['code']===0x1f4){logger[_0x2673('0x12')]('Campaign,\x20%s,\x20%s',_0x46e5fa,_0x1e5622[_0x2673('0x12')][_0x2673('0x13')]);return _0x961d0f(_0x1e5622[_0x2673('0x12')][_0x2673('0x13')]);}logger[_0x2673('0x12')]('Campaign,\x20%s,\x20%s',_0x46e5fa,_0x1e5622['error'][_0x2673('0x13')]);return _0xc1ed83(_0x1e5622[_0x2673('0x12')][_0x2673('0x13')]);}else{logger[_0x2673('0xc')](_0x2673('0xd'),_0x46e5fa,'request\x20sent');_0xc1ed83(_0x1e5622[_0x2673('0x14')][_0x2673('0x13')]);}})[_0x2673('0x15')](function(_0xd2436d){logger['error'](_0x2673('0xd'),_0x46e5fa,_0xd2436d);_0x961d0f(_0xd2436d);});});}exports[_0x2673('0x16')]=function(_0x18b395){var _0x20df10=this;return new Promise(function(_0x26d85c,_0x525423){return db['Campaign'][_0x2673('0x17')]({'raw':_0x18b395[_0x2673('0x18')]?_0x18b395[_0x2673('0x18')][_0x2673('0x19')]===undefined?!![]:![]:!![],'where':_0x18b395[_0x2673('0x18')]?_0x18b395[_0x2673('0x18')][_0x2673('0x1a')]||null:null,'attributes':_0x18b395[_0x2673('0x18')]?_0x18b395['options'][_0x2673('0x1b')]||null:null,'limit':_0x18b395['options']?_0x18b395[_0x2673('0x18')][_0x2673('0x1c')]||null:null,'include':_0x18b395[_0x2673('0x18')]?_0x18b395[_0x2673('0x18')][_0x2673('0x1d')]?_[_0x2673('0x1e')](_0x18b395[_0x2673('0x18')]['include'],function(_0x17812a){return{'model':db[_0x17812a[_0x2673('0x1f')]],'as':_0x17812a['as'],'attributes':_0x17812a[_0x2673('0x1b')],'include':_0x17812a[_0x2673('0x1d')]?_['map'](_0x17812a[_0x2673('0x1d')],function(_0x28ef35){return{'model':db[_0x28ef35['model']],'as':_0x28ef35['as'],'attributes':_0x28ef35['attributes'],'include':_0x28ef35['include']?_[_0x2673('0x1e')](_0x28ef35['include'],function(_0xcd7375){return{'model':db[_0xcd7375[_0x2673('0x1f')]],'as':_0xcd7375['as'],'attributes':_0xcd7375['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x105589){logger[_0x2673('0xc')](_0x2673('0x16'),_0x18b395);logger[_0x2673('0xf')]('GetCampaign',_0x18b395,JSON[_0x2673('0x11')](_0x105589));_0x26d85c(_0x105589);})['catch'](function(_0x40723f){logger[_0x2673('0x12')](_0x2673('0x16'),_0x40723f['message'],_0x18b395);_0x525423(_0x20df10[_0x2673('0x12')](0x1f4,_0x40723f[_0x2673('0x13')]));});});};
\ No newline at end of file
index ee8c7fe..2707652 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb0=['create','post','/:id/clone','clone','addLists','addBlackLists','update','destroy','delete','removeBlackLists','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists'];(function(_0x26136d,_0xbb8176){var _0x5106e8=function(_0x38d60e){while(--_0x38d60e){_0x26136d['push'](_0x26136d['shift']());}};_0x5106e8(++_0xbb8176);}(_0x3cb0,0x123));var _0x03cb=function(_0x2c3fb1,_0x5b6406){_0x2c3fb1=_0x2c3fb1-0x0;var _0x88cc3f=_0x3cb0[_0x2c3fb1];return _0x88cc3f;};'use strict';var multer=require('multer');var util=require(_0x03cb('0x0'));var path=require(_0x03cb('0x1'));var timeout=require('connect-timeout');var express=require(_0x03cb('0x2'));var router=express[_0x03cb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x03cb('0x4'));var interaction=require(_0x03cb('0x5'));var config=require(_0x03cb('0x6'));var controller=require(_0x03cb('0x7'));router[_0x03cb('0x8')]('/',auth['isAuthenticated'](),controller[_0x03cb('0x9')]);router['get'](_0x03cb('0xa'),auth['isAuthenticated'](),controller[_0x03cb('0xb')]);router[_0x03cb('0x8')](_0x03cb('0xc'),auth['isAuthenticated'](),controller[_0x03cb('0xd')]);router[_0x03cb('0x8')](_0x03cb('0xe'),auth[_0x03cb('0xf')](),controller[_0x03cb('0x10')]);router[_0x03cb('0x8')](_0x03cb('0x11'),auth[_0x03cb('0xf')](),controller['getHopperFinals']);router[_0x03cb('0x8')](_0x03cb('0x12'),auth[_0x03cb('0xf')](),controller[_0x03cb('0x13')]);router[_0x03cb('0x8')](_0x03cb('0x14'),auth[_0x03cb('0xf')](),controller[_0x03cb('0x15')]);router['get'](_0x03cb('0x16'),auth[_0x03cb('0xf')](),controller[_0x03cb('0x17')]);router['post']('/',auth[_0x03cb('0xf')](),controller[_0x03cb('0x18')]);router[_0x03cb('0x19')](_0x03cb('0x1a'),auth['isAuthenticated'](),controller[_0x03cb('0x1b')]);router['post'](_0x03cb('0x14'),auth['isAuthenticated'](),controller[_0x03cb('0x1c')]);router[_0x03cb('0x19')]('/:id/blacklists',auth[_0x03cb('0xf')](),controller[_0x03cb('0x1d')]);router['put'](_0x03cb('0xa'),auth[_0x03cb('0xf')](),controller[_0x03cb('0x1e')]);router['delete'](_0x03cb('0xa'),auth['isAuthenticated'](),controller[_0x03cb('0x1f')]);router[_0x03cb('0x20')](_0x03cb('0x14'),auth[_0x03cb('0xf')](),controller['removeLists']);router[_0x03cb('0x20')](_0x03cb('0x16'),auth[_0x03cb('0xf')](),controller[_0x03cb('0x21')]);module[_0x03cb('0x22')]=router;
\ No newline at end of file
+var _0xa678=['destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','create','/:id/clone','post','addLists','delete','/:id'];(function(_0x3b607f,_0x2f47a9){var _0x383c7d=function(_0x1e2527){while(--_0x1e2527){_0x3b607f['push'](_0x3b607f['shift']());}};_0x383c7d(++_0x2f47a9);}(_0xa678,0xe1));var _0x8a67=function(_0x25c6e3,_0x1c263a){_0x25c6e3=_0x25c6e3-0x0;var _0x504be8=_0xa678[_0x25c6e3];return _0x504be8;};'use strict';var multer=require(_0x8a67('0x0'));var util=require(_0x8a67('0x1'));var path=require(_0x8a67('0x2'));var timeout=require(_0x8a67('0x3'));var express=require(_0x8a67('0x4'));var router=express[_0x8a67('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8a67('0x6'));var interaction=require(_0x8a67('0x7'));var config=require(_0x8a67('0x8'));var controller=require('./campaign.controller');router[_0x8a67('0x9')]('/',auth['isAuthenticated'](),controller[_0x8a67('0xa')]);router['get']('/:id',auth[_0x8a67('0xb')](),controller[_0x8a67('0xc')]);router[_0x8a67('0x9')](_0x8a67('0xd'),auth[_0x8a67('0xb')](),controller[_0x8a67('0xe')]);router[_0x8a67('0x9')](_0x8a67('0xf'),auth[_0x8a67('0xb')](),controller[_0x8a67('0x10')]);router['get'](_0x8a67('0x11'),auth[_0x8a67('0xb')](),controller[_0x8a67('0x12')]);router[_0x8a67('0x9')](_0x8a67('0x13'),auth[_0x8a67('0xb')](),controller[_0x8a67('0x14')]);router[_0x8a67('0x9')](_0x8a67('0x15'),auth['isAuthenticated'](),controller[_0x8a67('0x16')]);router[_0x8a67('0x9')](_0x8a67('0x17'),auth[_0x8a67('0xb')](),controller[_0x8a67('0x18')]);router['post']('/',auth[_0x8a67('0xb')](),controller[_0x8a67('0x19')]);router['post'](_0x8a67('0x1a'),auth['isAuthenticated'](),controller['clone']);router[_0x8a67('0x1b')]('/:id/lists',auth[_0x8a67('0xb')](),controller[_0x8a67('0x1c')]);router['post'](_0x8a67('0x17'),auth[_0x8a67('0xb')](),controller['addBlackLists']);router['put']('/:id',auth[_0x8a67('0xb')](),controller['update']);router[_0x8a67('0x1d')](_0x8a67('0x1e'),auth[_0x8a67('0xb')](),controller[_0x8a67('0x1f')]);router[_0x8a67('0x1d')]('/:id/lists',auth[_0x8a67('0xb')](),controller['removeLists']);router[_0x8a67('0x1d')]('/:id/blacklists',auth[_0x8a67('0xb')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
index 5bdca42..7c569d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc167=['exports','STRING','VIRTUAL','getDataValue','key','sequelize'];(function(_0x3220c4,_0x1b2af5){var _0x18d023=function(_0x3a6a3d){while(--_0x3a6a3d){_0x3220c4['push'](_0x3220c4['shift']());}};_0x18d023(++_0x1b2af5);}(_0xc167,0x131));var _0x7c16=function(_0x210e8c,_0x16855f){_0x210e8c=_0x210e8c-0x0;var _0x10d2e7=_0xc167[_0x210e8c];return _0x10d2e7;};'use strict';var Sequelize=require(_0x7c16('0x0'));module[_0x7c16('0x1')]={'key':{'type':Sequelize[_0x7c16('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x7c16('0x2')]},'name':{'type':Sequelize[_0x7c16('0x3')],'get':function(){return this[_0x7c16('0x4')](_0x7c16('0x5'));}}};
\ No newline at end of file
+var _0x0a6e=['TEXT','VIRTUAL','key','sequelize','exports','STRING'];(function(_0x4c4b7f,_0x5db34c){var _0x417d40=function(_0x199a7b){while(--_0x199a7b){_0x4c4b7f['push'](_0x4c4b7f['shift']());}};_0x417d40(++_0x5db34c);}(_0x0a6e,0x1ad));var _0xe0a6=function(_0x6680ac,_0xc5cf6){_0x6680ac=_0x6680ac-0x0;var _0x29e640=_0x0a6e[_0x6680ac];return _0x29e640;};'use strict';var Sequelize=require(_0xe0a6('0x0'));module[_0xe0a6('0x1')]={'key':{'type':Sequelize[_0xe0a6('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0xe0a6('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0xe0a6('0x2')]},'name':{'type':Sequelize[_0xe0a6('0x4')],'get':function(){return this['getDataValue'](_0xe0a6('0x5'));}}};
\ No newline at end of file
index 4b9b565..ed0b2b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d1e=['filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','CannedAnswers','UserProfileResource','error','stack','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where'];(function(_0x1736e8,_0x28cb17){var _0x23024e=function(_0x55b69c){while(--_0x55b69c){_0x1736e8['push'](_0x1736e8['shift']());}};_0x23024e(++_0x28cb17);}(_0x4d1e,0xcb));var _0xe4d1=function(_0x16771d,_0x224c60){_0x16771d=_0x16771d-0x0;var _0x386f11=_0x4d1e[_0x16771d];return _0x386f11;};'use strict';var emlformat=require(_0xe4d1('0x0'));var rimraf=require(_0xe4d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe4d1('0x2'));var rp=require(_0xe4d1('0x3'));var moment=require(_0xe4d1('0x4'));var BPromise=require(_0xe4d1('0x5'));var Mustache=require(_0xe4d1('0x6'));var util=require(_0xe4d1('0x7'));var path=require(_0xe4d1('0x8'));var sox=require(_0xe4d1('0x9'));var csv=require(_0xe4d1('0xa'));var ejs=require(_0xe4d1('0xb'));var fs=require('fs');var fs_extra=require(_0xe4d1('0xc'));var _=require(_0xe4d1('0xd'));var squel=require(_0xe4d1('0xe'));var crypto=require(_0xe4d1('0xf'));var jsforce=require(_0xe4d1('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xe4d1('0xa'));var querystring=require(_0xe4d1('0x11'));var Papa=require('papaparse');var Redis=require(_0xe4d1('0x12'));var authService=require(_0xe4d1('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe4d1('0x14'));var hardwareService=require(_0xe4d1('0x15'));var logger=require(_0xe4d1('0x16'))(_0xe4d1('0x17'));var utils=require(_0xe4d1('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe4d1('0x19'))['db'];function respondWithStatusCode(_0x4a35c5,_0x42771b){_0x42771b=_0x42771b||0xcc;return function(_0x3d1e5c){if(_0x3d1e5c){return _0x4a35c5[_0xe4d1('0x1a')](_0x42771b);}return _0x4a35c5['status'](_0x42771b)[_0xe4d1('0x1b')]();};}function respondWithResult(_0x430195,_0x3a784b){_0x3a784b=_0x3a784b||0xc8;return function(_0x2945d7){if(_0x2945d7){return _0x430195[_0xe4d1('0x1c')](_0x3a784b)[_0xe4d1('0x1d')](_0x2945d7);}};}function respondWithFilteredResult(_0x258f3a,_0x21f371){return function(_0x319e22){if(_0x319e22){var _0x3b2584=typeof _0x21f371[_0xe4d1('0x1e')]==='undefined'&&typeof _0x21f371[_0xe4d1('0x1f')]===_0xe4d1('0x20');var _0x572216=_0x319e22[_0xe4d1('0x21')];var _0x353342=_0x3b2584?0x0:_0x21f371[_0xe4d1('0x1e')];var _0x56c0b3=_0x3b2584?_0x319e22['count']:_0x21f371[_0xe4d1('0x1e')]+_0x21f371[_0xe4d1('0x1f')];var _0x3f0ab6;if(_0x56c0b3>=_0x572216){_0x56c0b3=_0x572216;_0x3f0ab6=0xc8;}else{_0x3f0ab6=0xce;}_0x258f3a[_0xe4d1('0x1c')](_0x3f0ab6);return _0x258f3a[_0xe4d1('0x22')](_0xe4d1('0x23'),_0x353342+'-'+_0x56c0b3+'/'+_0x572216)['json'](_0x319e22);}return null;};}function patchUpdates(_0x2deaed){return function(_0x2fb4c1){try{jsonpatch[_0xe4d1('0x24')](_0x2fb4c1,_0x2deaed,!![]);}catch(_0x1f01ab){return BPromise[_0xe4d1('0x25')](_0x1f01ab);}return _0x2fb4c1[_0xe4d1('0x26')]();};}function saveUpdates(_0x37551e,_0x6a3d9f){return function(_0x161959){if(_0x161959){return _0x161959[_0xe4d1('0x27')](_0x37551e)['then'](function(_0x19d5a2){return _0x19d5a2;});}return null;};}function removeEntity(_0x318752,_0xe7b8c){return function(_0x2ec293){if(_0x2ec293){return _0x2ec293[_0xe4d1('0x28')]()[_0xe4d1('0x29')](function(){var _0x2594e3=_0x2ec293[_0xe4d1('0x2a')]({'plain':!![]});var _0x28f04f=_0xe4d1('0x2b');return db[_0xe4d1('0x2c')][_0xe4d1('0x28')]({'where':{'type':_0x28f04f,'resourceId':_0x2594e3['id']}})[_0xe4d1('0x29')](function(){return _0x2ec293;});})[_0xe4d1('0x29')](function(){_0x318752[_0xe4d1('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a341f,_0x34a423){return function(_0x25b1a0){if(!_0x25b1a0){_0x2a341f[_0xe4d1('0x1a')](0x194);}return _0x25b1a0;};}function handleError(_0x1e42b6,_0x85117d){_0x85117d=_0x85117d||0x1f4;return function(_0x450b55){logger[_0xe4d1('0x2d')](_0x450b55[_0xe4d1('0x2e')]);if(_0x450b55['name']){delete _0x450b55[_0xe4d1('0x2f')];}_0x1e42b6[_0xe4d1('0x1c')](_0x85117d)[_0xe4d1('0x30')](_0x450b55);};}exports[_0xe4d1('0x31')]=function(_0x220e69,_0x45c6e3){var _0x4762b6={},_0x54823d={},_0x570de3={'count':0x0,'rows':[]};var _0x4710f7=_[_0xe4d1('0x32')](db[_0xe4d1('0x33')][_0xe4d1('0x34')],function(_0x4a2e86){return{'name':_0x4a2e86[_0xe4d1('0x35')],'type':_0x4a2e86[_0xe4d1('0x36')][_0xe4d1('0x37')]};});_0x54823d[_0xe4d1('0x38')]=_[_0xe4d1('0x32')](_0x4710f7,'name');_0x54823d[_0xe4d1('0x39')]=_[_0xe4d1('0x3a')](_0x220e69['query']);_0x54823d[_0xe4d1('0x3b')]=_['intersection'](_0x54823d[_0xe4d1('0x38')],_0x54823d['query']);_0x4762b6[_0xe4d1('0x3c')]=_[_0xe4d1('0x3d')](_0x54823d[_0xe4d1('0x38')],qs[_0xe4d1('0x3e')](_0x220e69[_0xe4d1('0x39')][_0xe4d1('0x3e')]));_0x4762b6[_0xe4d1('0x3c')]=_0x4762b6['attributes']['length']?_0x4762b6[_0xe4d1('0x3c')]:_0x54823d['model'];if(!_0x220e69['query']['hasOwnProperty'](_0xe4d1('0x3f'))){_0x4762b6[_0xe4d1('0x1f')]=qs[_0xe4d1('0x1f')](_0x220e69[_0xe4d1('0x39')][_0xe4d1('0x1f')]);_0x4762b6[_0xe4d1('0x1e')]=qs[_0xe4d1('0x1e')](_0x220e69[_0xe4d1('0x39')][_0xe4d1('0x1e')]);}_0x4762b6[_0xe4d1('0x40')]=qs[_0xe4d1('0x41')](_0x220e69['query'][_0xe4d1('0x41')]);_0x4762b6[_0xe4d1('0x42')]=qs[_0xe4d1('0x3b')](_['pick'](_0x220e69[_0xe4d1('0x39')],_0x54823d['filters']),_0x4710f7);if(_0x220e69[_0xe4d1('0x39')][_0xe4d1('0x43')]){_0x4762b6[_0xe4d1('0x42')]=_[_0xe4d1('0x44')](_0x4762b6['where'],{'$or':[{'key':{'$like':'%'+_0x220e69[_0xe4d1('0x39')][_0xe4d1('0x43')]+'%'}},{'value':{'$like':'%'+_0x220e69[_0xe4d1('0x39')]['filter']+'%'}}]});}_0x4762b6=_[_0xe4d1('0x44')]({},_0x4762b6,_0x220e69[_0xe4d1('0x45')]);var _0x323462={'where':_0x4762b6[_0xe4d1('0x42')]};return db[_0xe4d1('0x33')][_0xe4d1('0x21')](_0x323462)[_0xe4d1('0x29')](function(_0x31788f){_0x570de3[_0xe4d1('0x21')]=_0x31788f;if(_0x220e69['query'][_0xe4d1('0x46')]){_0x4762b6[_0xe4d1('0x47')]=[{'all':!![]}];}return db[_0xe4d1('0x33')][_0xe4d1('0x48')](_0x4762b6);})[_0xe4d1('0x29')](function(_0x39671f){_0x570de3[_0xe4d1('0x49')]=_0x39671f;return _0x570de3;})[_0xe4d1('0x29')](respondWithFilteredResult(_0x45c6e3,_0x4762b6))[_0xe4d1('0x4a')](handleError(_0x45c6e3,null));};exports[_0xe4d1('0x4b')]=function(_0x463875,_0x35e84a){var _0x4745fb={'raw':!![],'where':{'id':_0x463875[_0xe4d1('0x4c')]['id']}},_0x303791={};_0x303791[_0xe4d1('0x38')]=_[_0xe4d1('0x3a')](db[_0xe4d1('0x33')]['rawAttributes']);_0x303791['query']=_['keys'](_0x463875['query']);_0x303791['filters']=_[_0xe4d1('0x3d')](_0x303791[_0xe4d1('0x38')],_0x303791[_0xe4d1('0x39')]);_0x4745fb[_0xe4d1('0x3c')]=_[_0xe4d1('0x3d')](_0x303791['model'],qs[_0xe4d1('0x3e')](_0x463875[_0xe4d1('0x39')][_0xe4d1('0x3e')]));_0x4745fb[_0xe4d1('0x3c')]=_0x4745fb['attributes']['length']?_0x4745fb['attributes']:_0x303791[_0xe4d1('0x38')];if(_0x463875[_0xe4d1('0x39')]['includeAll']){_0x4745fb['include']=[{'all':!![]}];}_0x4745fb=_[_0xe4d1('0x44')]({},_0x4745fb,_0x463875[_0xe4d1('0x45')]);return db[_0xe4d1('0x33')][_0xe4d1('0x4d')](_0x4745fb)[_0xe4d1('0x29')](handleEntityNotFound(_0x35e84a,null))['then'](respondWithResult(_0x35e84a,null))[_0xe4d1('0x4a')](handleError(_0x35e84a,null));};exports['update']=function(_0x28231b,_0xace464){if(_0x28231b['body']['id']){delete _0x28231b[_0xe4d1('0x4e')]['id'];}return db[_0xe4d1('0x33')][_0xe4d1('0x4d')]({'where':{'id':_0x28231b[_0xe4d1('0x4c')]['id']}})[_0xe4d1('0x29')](handleEntityNotFound(_0xace464,null))[_0xe4d1('0x29')](saveUpdates(_0x28231b[_0xe4d1('0x4e')],null))[_0xe4d1('0x29')](respondWithResult(_0xace464,null))[_0xe4d1('0x4a')](handleError(_0xace464,null));};exports[_0xe4d1('0x28')]=function(_0x1650e8,_0x20ad1a){return db['CannedAnswer'][_0xe4d1('0x4d')]({'where':{'id':_0x1650e8[_0xe4d1('0x4c')]['id']}})[_0xe4d1('0x29')](handleEntityNotFound(_0x20ad1a,null))[_0xe4d1('0x29')](removeEntity(_0x20ad1a,null))['catch'](handleError(_0x20ad1a,null));};exports[_0xe4d1('0x4f')]=function(_0x3b8fac,_0xd4bca4){var _0x2476fb={'key':_0x3b8fac[_0xe4d1('0x4e')][_0xe4d1('0x37')]};if(_0x3b8fac['body'][_0xe4d1('0x50')]){_0x2476fb[_0xe4d1('0x50')]=_0x3b8fac[_0xe4d1('0x4e')][_0xe4d1('0x50')];}else if(_0x3b8fac['body'][_0xe4d1('0x51')]){_0x2476fb['SmsAccountId']=_0x3b8fac[_0xe4d1('0x4e')][_0xe4d1('0x51')];}else if(_0x3b8fac[_0xe4d1('0x4e')]['OpenchannelAccountId']){_0x2476fb[_0xe4d1('0x52')]=_0x3b8fac[_0xe4d1('0x4e')]['OpenchannelAccountId'];}else if(_0x3b8fac[_0xe4d1('0x4e')][_0xe4d1('0x53')]){_0x2476fb['ChatWebsiteId']=_0x3b8fac['body']['ChatWebsiteId'];}return db[_0xe4d1('0x33')][_0xe4d1('0x4d')]({'where':_0x2476fb})[_0xe4d1('0x29')](function(_0x44422f){if(_0x44422f){throw new db[(_0xe4d1('0x54'))][(_0xe4d1('0x55'))](_0xe4d1('0x56'));}return db['CannedAnswer'][_0xe4d1('0x4f')](_0x3b8fac['body']);})[_0xe4d1('0x29')](function(_0x103595){var _0x1b7144=_0x3b8fac[_0xe4d1('0x57')][_0xe4d1('0x2a')]({'plain':!![]});if(!_0x1b7144)throw new Error(_0xe4d1('0x58'));if(_0x1b7144['role']===_0xe4d1('0x57')){var _0x208434=_0x103595[_0xe4d1('0x2a')]({'plain':!![]});return db['UserProfileSection'][_0xe4d1('0x4d')]({'where':{'name':_0xe4d1('0x2b'),'userProfileId':_0x1b7144['userProfileId']},'raw':!![]})['then'](function(_0x40ae49){if(_0x40ae49&&_0x40ae49['autoAssociation']===0x0){return db[_0xe4d1('0x2c')][_0xe4d1('0x4f')]({'name':_0x208434[_0xe4d1('0x2f')],'resourceId':_0x208434['id'],'type':_0x40ae49['name'],'sectionId':_0x40ae49['id']},{})[_0xe4d1('0x29')](function(){return _0x103595;});}else{return _0x103595;}})[_0xe4d1('0x4a')](function(_0x383253){logger[_0xe4d1('0x2d')](_0xe4d1('0x59'),_0x383253);throw _0x383253;});}return _0x103595;})['then'](respondWithResult(_0xd4bca4,0xc9))[_0xe4d1('0x4a')](handleError(_0xd4bca4,null));};
\ No newline at end of file
+var _0x8b57=['length','find','update','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','create','get','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','then','destroy','CannedAnswers','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','options','CannedAnswer','includeAll','include','rows','catch','show','params','keys'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x8b57,0x10a));var _0x78b5=function(_0x4286a8,_0x2a6686){_0x4286a8=_0x4286a8-0x0;var _0xdfdecc=_0x8b57[_0x4286a8];return _0xdfdecc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x78b5('0x0'));var zipdir=require(_0x78b5('0x1'));var jsonpatch=require(_0x78b5('0x2'));var rp=require(_0x78b5('0x3'));var moment=require(_0x78b5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x78b5('0x5'));var sox=require(_0x78b5('0x6'));var csv=require(_0x78b5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x78b5('0x8'));var _=require(_0x78b5('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x78b5('0xa'));var toCsv=require(_0x78b5('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x78b5('0xb'));var authService=require(_0x78b5('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x78b5('0xd'));var hardwareService=require(_0x78b5('0xe'));var logger=require('../../config/logger')(_0x78b5('0xf'));var utils=require(_0x78b5('0x10'));var config=require(_0x78b5('0x11'));var licenseUtil=require(_0x78b5('0x12'));var db=require(_0x78b5('0x13'))['db'];function respondWithStatusCode(_0x34e7a3,_0x5ac0a1){_0x5ac0a1=_0x5ac0a1||0xcc;return function(_0x33a14f){if(_0x33a14f){return _0x34e7a3[_0x78b5('0x14')](_0x5ac0a1);}return _0x34e7a3[_0x78b5('0x15')](_0x5ac0a1)[_0x78b5('0x16')]();};}function respondWithResult(_0x5c1e05,_0x3ea8f8){_0x3ea8f8=_0x3ea8f8||0xc8;return function(_0x2a7637){if(_0x2a7637){return _0x5c1e05[_0x78b5('0x15')](_0x3ea8f8)[_0x78b5('0x17')](_0x2a7637);}};}function respondWithFilteredResult(_0x13e62c,_0x10c971){return function(_0x5d86a2){if(_0x5d86a2){var _0x5ed550=typeof _0x10c971[_0x78b5('0x18')]===_0x78b5('0x19')&&typeof _0x10c971['limit']===_0x78b5('0x19');var _0x28b2c1=_0x5d86a2[_0x78b5('0x1a')];var _0x50675c=_0x5ed550?0x0:_0x10c971[_0x78b5('0x18')];var _0xbdf5ba=_0x5ed550?_0x5d86a2[_0x78b5('0x1a')]:_0x10c971['offset']+_0x10c971[_0x78b5('0x1b')];var _0x44f5e2;if(_0xbdf5ba>=_0x28b2c1){_0xbdf5ba=_0x28b2c1;_0x44f5e2=0xc8;}else{_0x44f5e2=0xce;}_0x13e62c[_0x78b5('0x15')](_0x44f5e2);return _0x13e62c[_0x78b5('0x1c')](_0x78b5('0x1d'),_0x50675c+'-'+_0xbdf5ba+'/'+_0x28b2c1)['json'](_0x5d86a2);}return null;};}function patchUpdates(_0x43b664){return function(_0x1d156f){try{jsonpatch[_0x78b5('0x1e')](_0x1d156f,_0x43b664,!![]);}catch(_0x19ad22){return BPromise['reject'](_0x19ad22);}return _0x1d156f['save']();};}function saveUpdates(_0x397a2a,_0x3a673f){return function(_0x2defe6){if(_0x2defe6){return _0x2defe6['update'](_0x397a2a)[_0x78b5('0x1f')](function(_0x574445){return _0x574445;});}return null;};}function removeEntity(_0x10c98c,_0x18a123){return function(_0x160583){if(_0x160583){return _0x160583[_0x78b5('0x20')]()[_0x78b5('0x1f')](function(){var _0x5040f0=_0x160583['get']({'plain':!![]});var _0x45bfd6=_0x78b5('0x21');return db[_0x78b5('0x22')][_0x78b5('0x20')]({'where':{'type':_0x45bfd6,'resourceId':_0x5040f0['id']}})['then'](function(){return _0x160583;});})[_0x78b5('0x1f')](function(){_0x10c98c[_0x78b5('0x15')](0xcc)[_0x78b5('0x16')]();});}};}function handleEntityNotFound(_0x26bc48,_0x561fd7){return function(_0x2036de){if(!_0x2036de){_0x26bc48[_0x78b5('0x14')](0x194);}return _0x2036de;};}function handleError(_0x30d7d4,_0x2cc69a){_0x2cc69a=_0x2cc69a||0x1f4;return function(_0x5ea85d){logger[_0x78b5('0x23')](_0x5ea85d[_0x78b5('0x24')]);if(_0x5ea85d['name']){delete _0x5ea85d[_0x78b5('0x25')];}_0x30d7d4['status'](_0x2cc69a)['send'](_0x5ea85d);};}exports[_0x78b5('0x26')]=function(_0x4d4eef,_0x4bdbce){var _0x557cbc={},_0x2fee83={},_0x3b18b9={'count':0x0,'rows':[]};var _0x3e5a7e=_[_0x78b5('0x27')](db['CannedAnswer'][_0x78b5('0x28')],function(_0x35d2c7){return{'name':_0x35d2c7[_0x78b5('0x29')],'type':_0x35d2c7[_0x78b5('0x2a')][_0x78b5('0x2b')]};});_0x2fee83[_0x78b5('0x2c')]=_[_0x78b5('0x27')](_0x3e5a7e,_0x78b5('0x25'));_0x2fee83[_0x78b5('0x2d')]=_['keys'](_0x4d4eef[_0x78b5('0x2d')]);_0x2fee83[_0x78b5('0x2e')]=_[_0x78b5('0x2f')](_0x2fee83['model'],_0x2fee83['query']);_0x557cbc['attributes']=_[_0x78b5('0x2f')](_0x2fee83[_0x78b5('0x2c')],qs['fields'](_0x4d4eef[_0x78b5('0x2d')][_0x78b5('0x30')]));_0x557cbc['attributes']=_0x557cbc[_0x78b5('0x31')]['length']?_0x557cbc[_0x78b5('0x31')]:_0x2fee83[_0x78b5('0x2c')];if(!_0x4d4eef[_0x78b5('0x2d')][_0x78b5('0x32')]('nolimit')){_0x557cbc[_0x78b5('0x1b')]=qs[_0x78b5('0x1b')](_0x4d4eef[_0x78b5('0x2d')][_0x78b5('0x1b')]);_0x557cbc[_0x78b5('0x18')]=qs[_0x78b5('0x18')](_0x4d4eef['query'][_0x78b5('0x18')]);}_0x557cbc[_0x78b5('0x33')]=qs[_0x78b5('0x34')](_0x4d4eef[_0x78b5('0x2d')][_0x78b5('0x34')]);_0x557cbc[_0x78b5('0x35')]=qs[_0x78b5('0x2e')](_[_0x78b5('0x36')](_0x4d4eef['query'],_0x2fee83[_0x78b5('0x2e')]),_0x3e5a7e);if(_0x4d4eef[_0x78b5('0x2d')][_0x78b5('0x37')]){_0x557cbc[_0x78b5('0x35')]=_[_0x78b5('0x38')](_0x557cbc[_0x78b5('0x35')],{'$or':[{'key':{'$like':'%'+_0x4d4eef[_0x78b5('0x2d')][_0x78b5('0x37')]+'%'}},{'value':{'$like':'%'+_0x4d4eef['query'][_0x78b5('0x37')]+'%'}}]});}_0x557cbc=_[_0x78b5('0x38')]({},_0x557cbc,_0x4d4eef[_0x78b5('0x39')]);var _0x13c273={'where':_0x557cbc[_0x78b5('0x35')]};return db[_0x78b5('0x3a')]['count'](_0x13c273)[_0x78b5('0x1f')](function(_0x72ea27){_0x3b18b9['count']=_0x72ea27;if(_0x4d4eef[_0x78b5('0x2d')][_0x78b5('0x3b')]){_0x557cbc[_0x78b5('0x3c')]=[{'all':!![]}];}return db[_0x78b5('0x3a')]['findAll'](_0x557cbc);})[_0x78b5('0x1f')](function(_0x5983c6){_0x3b18b9[_0x78b5('0x3d')]=_0x5983c6;return _0x3b18b9;})[_0x78b5('0x1f')](respondWithFilteredResult(_0x4bdbce,_0x557cbc))[_0x78b5('0x3e')](handleError(_0x4bdbce,null));};exports[_0x78b5('0x3f')]=function(_0x2627f1,_0x36678b){var _0x307815={'raw':!![],'where':{'id':_0x2627f1[_0x78b5('0x40')]['id']}},_0x35dc98={};_0x35dc98[_0x78b5('0x2c')]=_[_0x78b5('0x41')](db[_0x78b5('0x3a')][_0x78b5('0x28')]);_0x35dc98[_0x78b5('0x2d')]=_[_0x78b5('0x41')](_0x2627f1[_0x78b5('0x2d')]);_0x35dc98[_0x78b5('0x2e')]=_['intersection'](_0x35dc98[_0x78b5('0x2c')],_0x35dc98[_0x78b5('0x2d')]);_0x307815['attributes']=_[_0x78b5('0x2f')](_0x35dc98[_0x78b5('0x2c')],qs['fields'](_0x2627f1[_0x78b5('0x2d')]['fields']));_0x307815[_0x78b5('0x31')]=_0x307815[_0x78b5('0x31')][_0x78b5('0x42')]?_0x307815['attributes']:_0x35dc98[_0x78b5('0x2c')];if(_0x2627f1[_0x78b5('0x2d')][_0x78b5('0x3b')]){_0x307815[_0x78b5('0x3c')]=[{'all':!![]}];}_0x307815=_[_0x78b5('0x38')]({},_0x307815,_0x2627f1[_0x78b5('0x39')]);return db[_0x78b5('0x3a')][_0x78b5('0x43')](_0x307815)[_0x78b5('0x1f')](handleEntityNotFound(_0x36678b,null))[_0x78b5('0x1f')](respondWithResult(_0x36678b,null))['catch'](handleError(_0x36678b,null));};exports[_0x78b5('0x44')]=function(_0x51ca09,_0x177371){if(_0x51ca09[_0x78b5('0x45')]['id']){delete _0x51ca09[_0x78b5('0x45')]['id'];}return db[_0x78b5('0x3a')]['find']({'where':{'id':_0x51ca09[_0x78b5('0x40')]['id']}})[_0x78b5('0x1f')](handleEntityNotFound(_0x177371,null))[_0x78b5('0x1f')](saveUpdates(_0x51ca09[_0x78b5('0x45')],null))[_0x78b5('0x1f')](respondWithResult(_0x177371,null))['catch'](handleError(_0x177371,null));};exports[_0x78b5('0x20')]=function(_0x13865c,_0xda49e){return db[_0x78b5('0x3a')]['find']({'where':{'id':_0x13865c[_0x78b5('0x40')]['id']}})['then'](handleEntityNotFound(_0xda49e,null))['then'](removeEntity(_0xda49e,null))['catch'](handleError(_0xda49e,null));};exports['create']=function(_0x218619,_0x52edb4){var _0x2a1746={'key':_0x218619[_0x78b5('0x45')][_0x78b5('0x2b')]};if(_0x218619[_0x78b5('0x45')][_0x78b5('0x46')]){_0x2a1746[_0x78b5('0x46')]=_0x218619['body'][_0x78b5('0x46')];}else if(_0x218619[_0x78b5('0x45')][_0x78b5('0x47')]){_0x2a1746[_0x78b5('0x47')]=_0x218619[_0x78b5('0x45')][_0x78b5('0x47')];}else if(_0x218619[_0x78b5('0x45')][_0x78b5('0x48')]){_0x2a1746[_0x78b5('0x48')]=_0x218619[_0x78b5('0x45')][_0x78b5('0x48')];}else if(_0x218619[_0x78b5('0x45')]['ChatWebsiteId']){_0x2a1746[_0x78b5('0x49')]=_0x218619['body'][_0x78b5('0x49')];}return db[_0x78b5('0x3a')][_0x78b5('0x43')]({'where':_0x2a1746})[_0x78b5('0x1f')](function(_0x5d2b0c){if(_0x5d2b0c){throw new db[(_0x78b5('0x4a'))]['ValidationError']('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x78b5('0x3a')][_0x78b5('0x4b')](_0x218619[_0x78b5('0x45')]);})[_0x78b5('0x1f')](function(_0x191155){var _0x614243=_0x218619['user'][_0x78b5('0x4c')]({'plain':!![]});if(!_0x614243)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x614243[_0x78b5('0x4d')]===_0x78b5('0x4e')){var _0x5128c6=_0x191155[_0x78b5('0x4c')]({'plain':!![]});return db[_0x78b5('0x4f')][_0x78b5('0x43')]({'where':{'name':'CannedAnswers','userProfileId':_0x614243[_0x78b5('0x50')]},'raw':!![]})['then'](function(_0x442653){if(_0x442653&&_0x442653[_0x78b5('0x51')]===0x0){return db[_0x78b5('0x22')][_0x78b5('0x4b')]({'name':_0x5128c6[_0x78b5('0x25')],'resourceId':_0x5128c6['id'],'type':_0x442653[_0x78b5('0x25')],'sectionId':_0x442653['id']},{})[_0x78b5('0x1f')](function(){return _0x191155;});}else{return _0x191155;}})[_0x78b5('0x3e')](function(_0x1db768){logger[_0x78b5('0x23')](_0x78b5('0x52'),_0x1db768);throw _0x1db768;});}return _0x191155;})['then'](respondWithResult(_0x52edb4,0xc9))['catch'](handleError(_0x52edb4,null));};
\ No newline at end of file
index d3d9f74..5286b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc092=['../../config/logger','api','bluebird','../../config/environment','exports','define','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci','util'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0xc092,0x171));var _0x2c09=function(_0x5af284,_0x2762d9){_0x5af284=_0x5af284-0x0;var _0x1141e3=_0xc092[_0x5af284];return _0x1141e3;};'use strict';var _=require('lodash');var util=require(_0x2c09('0x0'));var logger=require(_0x2c09('0x1'))(_0x2c09('0x2'));var moment=require('moment');var BPromise=require(_0x2c09('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2c09('0x4'));var attributes=require('./cannedAnswer.attributes');module[_0x2c09('0x5')]=function(_0x383541,_0x51f837){return _0x383541[_0x2c09('0x6')](_0x2c09('0x7'),attributes,{'tableName':_0x2c09('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x2c09('0x9')});};
\ No newline at end of file
+var _0xc7ea=['exports','define','CannedAnswer','tools_canned_answers','utf8mb4','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cannedAnswer.attributes'];(function(_0xb47bb7,_0x12d95d){var _0x248f4c=function(_0x494d7f){while(--_0x494d7f){_0xb47bb7['push'](_0xb47bb7['shift']());}};_0x248f4c(++_0x12d95d);}(_0xc7ea,0x171));var _0xac7e=function(_0x425dc2,_0x511276){_0x425dc2=_0x425dc2-0x0;var _0x47240d=_0xc7ea[_0x425dc2];return _0x47240d;};'use strict';var _=require(_0xac7e('0x0'));var util=require(_0xac7e('0x1'));var logger=require('../../config/logger')(_0xac7e('0x2'));var moment=require(_0xac7e('0x3'));var BPromise=require(_0xac7e('0x4'));var rp=require(_0xac7e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xac7e('0x6'));var config=require(_0xac7e('0x7'));var attributes=require(_0xac7e('0x8'));module[_0xac7e('0x9')]=function(_0x26b1c5,_0x45e73f){return _0x26b1c5[_0xac7e('0xa')](_0xac7e('0xb'),attributes,{'tableName':_0xac7e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xac7e('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 67b2ab4..3d72924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4722f4,_0x5bc45a){var _0xab682e=function(_0x53f96c){while(--_0x53f96c){_0x4722f4['push'](_0x4722f4['shift']());}};_0xab682e(++_0x5bc45a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x70f8e2,_0x105cdc){var _0x415a2b=function(_0x3afbad){while(--_0x3afbad){_0x70f8e2['push'](_0x70f8e2['shift']());}};_0x415a2b(++_0x105cdc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 14081d8..ec2877c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5de7=['create','put','update','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cannedAnswer.controller','get','index','/:id','isAuthenticated','show'];(function(_0x5c637e,_0x45d40c){var _0xfb33f0=function(_0x180365){while(--_0x180365){_0x5c637e['push'](_0x5c637e['shift']());}};_0xfb33f0(++_0x45d40c);}(_0x5de7,0xdd));var _0x75de=function(_0x105618,_0x40d52c){_0x105618=_0x105618-0x0;var _0x2590b8=_0x5de7[_0x105618];return _0x2590b8;};'use strict';var multer=require('multer');var util=require(_0x75de('0x0'));var path=require(_0x75de('0x1'));var timeout=require('connect-timeout');var express=require(_0x75de('0x2'));var router=express[_0x75de('0x3')]();var fs_extra=require(_0x75de('0x4'));var auth=require(_0x75de('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x75de('0x6'));var controller=require(_0x75de('0x7'));router[_0x75de('0x8')]('/',auth['isAuthenticated'](),controller[_0x75de('0x9')]);router[_0x75de('0x8')](_0x75de('0xa'),auth[_0x75de('0xb')](),controller[_0x75de('0xc')]);router['post']('/',auth[_0x75de('0xb')](),controller[_0x75de('0xd')]);router[_0x75de('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x75de('0xf')]);router[_0x75de('0x10')](_0x75de('0xa'),auth[_0x75de('0xb')](),controller['destroy']);module[_0x75de('0x11')]=router;
\ No newline at end of file
+var _0x5adf=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','post','put','/:id','delete','exports','multer','util','connect-timeout','express','Router'];(function(_0x3ccc9c,_0x51e027){var _0x45973f=function(_0x38f1bb){while(--_0x38f1bb){_0x3ccc9c['push'](_0x3ccc9c['shift']());}};_0x45973f(++_0x51e027);}(_0x5adf,0xeb));var _0xf5ad=function(_0x1b5079,_0x156567){_0x1b5079=_0x1b5079-0x0;var _0x5a6319=_0x5adf[_0x1b5079];return _0x5a6319;};'use strict';var multer=require(_0xf5ad('0x0'));var util=require(_0xf5ad('0x1'));var path=require('path');var timeout=require(_0xf5ad('0x2'));var express=require(_0xf5ad('0x3'));var router=express[_0xf5ad('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf5ad('0x5'));var interaction=require(_0xf5ad('0x6'));var config=require(_0xf5ad('0x7'));var controller=require(_0xf5ad('0x8'));router[_0xf5ad('0x9')]('/',auth[_0xf5ad('0xa')](),controller['index']);router[_0xf5ad('0x9')]('/:id',auth[_0xf5ad('0xa')](),controller['show']);router[_0xf5ad('0xb')]('/',auth[_0xf5ad('0xa')](),controller['create']);router[_0xf5ad('0xc')](_0xf5ad('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xf5ad('0xe')](_0xf5ad('0xd'),auth[_0xf5ad('0xa')](),controller['destroy']);module[_0xf5ad('0xf')]=router;
\ No newline at end of file
index e3eba11..7a4c394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['DATE','STRING','INTEGER','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe706,0xa3));var _0x6e70=function(_0x5637f5,_0x1082c5){_0x5637f5=_0x5637f5-0x0;var _0x2f1873=_0xe706[_0x5637f5];return _0x2f1873;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'calldate':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x6e70('0x3')]},'src':{'type':Sequelize[_0x6e70('0x3')]},'dst':{'type':Sequelize[_0x6e70('0x3')]},'dcontext':{'type':Sequelize[_0x6e70('0x3')]},'channel':{'type':Sequelize[_0x6e70('0x3')]},'dstchannel':{'type':Sequelize[_0x6e70('0x3')]},'lastapp':{'type':Sequelize[_0x6e70('0x3')]},'lastdata':{'type':Sequelize[_0x6e70('0x3')]},'duration':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x6e70('0x3')]},'amaflags':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x6e70('0x3')]},'userfield':{'type':Sequelize[_0x6e70('0x3')]},'uniqueid':{'type':Sequelize[_0x6e70('0x3')]},'linkedid':{'type':Sequelize[_0x6e70('0x3')]},'sequence':{'type':Sequelize[_0x6e70('0x3')]},'peeraccount':{'type':Sequelize[_0x6e70('0x3')]},'type':{'type':Sequelize[_0x6e70('0x3')]},'tag':{'type':Sequelize[_0x6e70('0x3')]}};
\ No newline at end of file
+var _0xfc79=['INTEGER','DATE','STRING'];(function(_0x578d24,_0xf90bbe){var _0x55087c=function(_0x1ea6c2){while(--_0x1ea6c2){_0x578d24['push'](_0x578d24['shift']());}};_0x55087c(++_0xf90bbe);}(_0xfc79,0x1c3));var _0x9fc7=function(_0xac9474,_0x56282d){_0xac9474=_0xac9474-0x0;var _0x3dbe1d=_0xfc79[_0xac9474];return _0x3dbe1d;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0x9fc7('0x0')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0x9fc7('0x1')]},'dst':{'type':Sequelize[_0x9fc7('0x1')]},'dcontext':{'type':Sequelize[_0x9fc7('0x1')]},'channel':{'type':Sequelize[_0x9fc7('0x1')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x9fc7('0x1')]},'lastdata':{'type':Sequelize[_0x9fc7('0x1')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x9fc7('0x2')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x9fc7('0x2')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x9fc7('0x1')]},'userfield':{'type':Sequelize[_0x9fc7('0x1')]},'uniqueid':{'type':Sequelize[_0x9fc7('0x1')]},'linkedid':{'type':Sequelize[_0x9fc7('0x1')]},'sequence':{'type':Sequelize[_0x9fc7('0x1')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x9fc7('0x1')]}};
\ No newline at end of file
index b9d29e4..dc58348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0faf=['includeAll','options','find','create','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','error','name','send','index','Cdr','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','show','params','keys'];(function(_0x1445ba,_0x3e89bf){var _0x435e06=function(_0x327382){while(--_0x327382){_0x1445ba['push'](_0x1445ba['shift']());}};_0x435e06(++_0x3e89bf);}(_0x0faf,0x132));var _0xf0fa=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x0faf[_0x38537f];return _0x141e23;};'use strict';var emlformat=require(_0xf0fa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0fa('0x1'));var jsonpatch=require(_0xf0fa('0x2'));var rp=require(_0xf0fa('0x3'));var moment=require(_0xf0fa('0x4'));var BPromise=require(_0xf0fa('0x5'));var Mustache=require(_0xf0fa('0x6'));var util=require(_0xf0fa('0x7'));var path=require(_0xf0fa('0x8'));var sox=require(_0xf0fa('0x9'));var csv=require('to-csv');var ejs=require(_0xf0fa('0xa'));var fs=require('fs');var fs_extra=require(_0xf0fa('0xb'));var _=require(_0xf0fa('0xc'));var squel=require(_0xf0fa('0xd'));var crypto=require(_0xf0fa('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xf0fa('0xf'));var toCsv=require(_0xf0fa('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf0fa('0x11'));var authService=require(_0xf0fa('0x12'));var qs=require(_0xf0fa('0x13'));var as=require(_0xf0fa('0x14'));var hardwareService=require(_0xf0fa('0x15'));var logger=require(_0xf0fa('0x16'))(_0xf0fa('0x17'));var utils=require(_0xf0fa('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf0fa('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f46ff,_0x521034){_0x521034=_0x521034||0xcc;return function(_0x39ae2b){if(_0x39ae2b){return _0x2f46ff[_0xf0fa('0x1a')](_0x521034);}return _0x2f46ff[_0xf0fa('0x1b')](_0x521034)['end']();};}function respondWithResult(_0x5821ae,_0x42591b){_0x42591b=_0x42591b||0xc8;return function(_0x540a04){if(_0x540a04){return _0x5821ae[_0xf0fa('0x1b')](_0x42591b)[_0xf0fa('0x1c')](_0x540a04);}};}function respondWithFilteredResult(_0x10ce43,_0x3203ce){return function(_0x467d5f){if(_0x467d5f){var _0x33df80=typeof _0x3203ce[_0xf0fa('0x1d')]===_0xf0fa('0x1e')&&typeof _0x3203ce['limit']===_0xf0fa('0x1e');var _0x477914=_0x467d5f[_0xf0fa('0x1f')];var _0x1d3c22=_0x33df80?0x0:_0x3203ce[_0xf0fa('0x1d')];var _0x386e5f=_0x33df80?_0x467d5f['count']:_0x3203ce['offset']+_0x3203ce[_0xf0fa('0x20')];var _0x2751cc;if(_0x386e5f>=_0x477914){_0x386e5f=_0x477914;_0x2751cc=0xc8;}else{_0x2751cc=0xce;}_0x10ce43[_0xf0fa('0x1b')](_0x2751cc);return _0x10ce43[_0xf0fa('0x21')](_0xf0fa('0x22'),_0x1d3c22+'-'+_0x386e5f+'/'+_0x477914)[_0xf0fa('0x1c')](_0x467d5f);}return null;};}function patchUpdates(_0x32c9bc){return function(_0x3de639){try{jsonpatch[_0xf0fa('0x23')](_0x3de639,_0x32c9bc,!![]);}catch(_0x15942b){return BPromise[_0xf0fa('0x24')](_0x15942b);}return _0x3de639['save']();};}function saveUpdates(_0x10c93e,_0x306f3e){return function(_0x39e82d){if(_0x39e82d){return _0x39e82d[_0xf0fa('0x25')](_0x10c93e)[_0xf0fa('0x26')](function(_0x2b22c5){return _0x2b22c5;});}return null;};}function removeEntity(_0x3901aa,_0x1f0eaf){return function(_0x3feb0c){if(_0x3feb0c){return _0x3feb0c['destroy']()[_0xf0fa('0x26')](function(){_0x3901aa[_0xf0fa('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b5d7d,_0x3703b5){return function(_0x2efe88){if(!_0x2efe88){_0x3b5d7d['sendStatus'](0x194);}return _0x2efe88;};}function handleError(_0xded80d,_0x284499){_0x284499=_0x284499||0x1f4;return function(_0x3d10fb){logger[_0xf0fa('0x27')](_0x3d10fb['stack']);if(_0x3d10fb['name']){delete _0x3d10fb[_0xf0fa('0x28')];}_0xded80d[_0xf0fa('0x1b')](_0x284499)[_0xf0fa('0x29')](_0x3d10fb);};}exports[_0xf0fa('0x2a')]=function(_0x57b8e9,_0x4058d6){var _0x409a8c={},_0x1279cf={},_0x5a4fd3={'count':0x0,'rows':[]};var _0x9ad0e3=_['map'](db[_0xf0fa('0x2b')][_0xf0fa('0x2c')],function(_0x28e057){return{'name':_0x28e057['fieldName'],'type':_0x28e057[_0xf0fa('0x2d')][_0xf0fa('0x2e')]};});_0x1279cf[_0xf0fa('0x2f')]=_[_0xf0fa('0x30')](_0x9ad0e3,_0xf0fa('0x28'));_0x1279cf[_0xf0fa('0x31')]=_['keys'](_0x57b8e9['query']);_0x1279cf[_0xf0fa('0x32')]=_[_0xf0fa('0x33')](_0x1279cf['model'],_0x1279cf[_0xf0fa('0x31')]);_0x409a8c['attributes']=_['intersection'](_0x1279cf['model'],qs[_0xf0fa('0x34')](_0x57b8e9['query'][_0xf0fa('0x34')]));_0x409a8c[_0xf0fa('0x35')]=_0x409a8c[_0xf0fa('0x35')][_0xf0fa('0x36')]?_0x409a8c[_0xf0fa('0x35')]:_0x1279cf[_0xf0fa('0x2f')];if(!_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x37')]('nolimit')){_0x409a8c[_0xf0fa('0x20')]=qs[_0xf0fa('0x20')](_0x57b8e9[_0xf0fa('0x31')]['limit']);_0x409a8c[_0xf0fa('0x1d')]=qs[_0xf0fa('0x1d')](_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x1d')]);}_0x409a8c['order']=qs['sort'](_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x38')]);_0x409a8c[_0xf0fa('0x39')]=qs[_0xf0fa('0x32')](_[_0xf0fa('0x3a')](_0x57b8e9['query'],_0x1279cf['filters']),_0x9ad0e3);if(_0x57b8e9['query']['filter']){_0x409a8c[_0xf0fa('0x39')]=_[_0xf0fa('0x3b')](_0x409a8c['where'],{'$or':_['map'](_0x9ad0e3,function(_0xdada45){if(_0xdada45[_0xf0fa('0x2d')]!==_0xf0fa('0x3c')){var _0xcd5ae5={};_0xcd5ae5[_0xdada45[_0xf0fa('0x28')]]={'$like':'%'+_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x3d')]+'%'};return _0xcd5ae5;}})});}_0x409a8c=_['merge']({},_0x409a8c,_0x57b8e9['options']);var _0x344bb0={'where':_0x409a8c[_0xf0fa('0x39')]};return db[_0xf0fa('0x2b')][_0xf0fa('0x1f')](_0x344bb0)[_0xf0fa('0x26')](function(_0x1d0129){_0x5a4fd3['count']=_0x1d0129;if(_0x57b8e9[_0xf0fa('0x31')]['includeAll']){_0x409a8c[_0xf0fa('0x3e')]=[{'all':!![]}];}return db[_0xf0fa('0x2b')][_0xf0fa('0x3f')](_0x409a8c);})[_0xf0fa('0x26')](function(_0x14bee8){_0x5a4fd3[_0xf0fa('0x40')]=_0x14bee8;return _0x5a4fd3;})[_0xf0fa('0x26')](respondWithFilteredResult(_0x4058d6,_0x409a8c))[_0xf0fa('0x41')](handleError(_0x4058d6,null));};exports[_0xf0fa('0x42')]=function(_0x57fbc5,_0x51ea79){var _0x52221a={'raw':!![],'where':{'id':_0x57fbc5[_0xf0fa('0x43')]['id']}},_0x304bae={};_0x304bae['model']=_[_0xf0fa('0x44')](db[_0xf0fa('0x2b')][_0xf0fa('0x2c')]);_0x304bae[_0xf0fa('0x31')]=_['keys'](_0x57fbc5[_0xf0fa('0x31')]);_0x304bae[_0xf0fa('0x32')]=_[_0xf0fa('0x33')](_0x304bae[_0xf0fa('0x2f')],_0x304bae[_0xf0fa('0x31')]);_0x52221a[_0xf0fa('0x35')]=_[_0xf0fa('0x33')](_0x304bae[_0xf0fa('0x2f')],qs[_0xf0fa('0x34')](_0x57fbc5['query'][_0xf0fa('0x34')]));_0x52221a[_0xf0fa('0x35')]=_0x52221a[_0xf0fa('0x35')][_0xf0fa('0x36')]?_0x52221a[_0xf0fa('0x35')]:_0x304bae[_0xf0fa('0x2f')];if(_0x57fbc5['query'][_0xf0fa('0x45')]){_0x52221a[_0xf0fa('0x3e')]=[{'all':!![]}];}_0x52221a=_['merge']({},_0x52221a,_0x57fbc5[_0xf0fa('0x46')]);return db[_0xf0fa('0x2b')][_0xf0fa('0x47')](_0x52221a)[_0xf0fa('0x26')](handleEntityNotFound(_0x51ea79,null))[_0xf0fa('0x26')](respondWithResult(_0x51ea79,null))[_0xf0fa('0x41')](handleError(_0x51ea79,null));};exports[_0xf0fa('0x48')]=function(_0x32bf89,_0x35272e){return db['Cdr'][_0xf0fa('0x48')](_0x32bf89['body'],{})[_0xf0fa('0x26')](respondWithResult(_0x35272e,0xc9))[_0xf0fa('0x41')](handleError(_0x35272e,null));};exports[_0xf0fa('0x25')]=function(_0x569ba9,_0x324765){if(_0x569ba9[_0xf0fa('0x49')]['id']){delete _0x569ba9[_0xf0fa('0x49')]['id'];}return db[_0xf0fa('0x2b')][_0xf0fa('0x47')]({'where':{'id':_0x569ba9['params']['id']}})[_0xf0fa('0x26')](handleEntityNotFound(_0x324765,null))['then'](saveUpdates(_0x569ba9[_0xf0fa('0x49')],null))[_0xf0fa('0x26')](respondWithResult(_0x324765,null))[_0xf0fa('0x41')](handleError(_0x324765,null));};exports[_0xf0fa('0x4a')]=function(_0x8090a7,_0x5dd098){return db[_0xf0fa('0x2b')][_0xf0fa('0x47')]({'where':{'id':_0x8090a7[_0xf0fa('0x43')]['id']}})[_0xf0fa('0x26')](handleEntityNotFound(_0x5dd098,null))[_0xf0fa('0x26')](removeEntity(_0x5dd098,null))[_0xf0fa('0x41')](handleError(_0x5dd098,null));};exports['describe']=function(_0x44a3bf,_0x5e1e8e){return db['Cdr']['describe']()[_0xf0fa('0x26')](respondWithResult(_0x5e1e8e,null))[_0xf0fa('0x41')](handleError(_0x5e1e8e,null));};
\ No newline at end of file
+var _0xb4c7=['Cdr','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','rows','catch','params','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map'];(function(_0x5c3865,_0xfd6377){var _0x2df810=function(_0x4b5889){while(--_0x4b5889){_0x5c3865['push'](_0x5c3865['shift']());}};_0x2df810(++_0xfd6377);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x2c0425,_0x5eb52d){_0x2c0425=_0x2c0425-0x0;var _0x54af66=_0xb4c7[_0x2c0425];return _0x54af66;};'use strict';var emlformat=require(_0x7b4c('0x0'));var rimraf=require(_0x7b4c('0x1'));var zipdir=require(_0x7b4c('0x2'));var jsonpatch=require(_0x7b4c('0x3'));var rp=require(_0x7b4c('0x4'));var moment=require('moment');var BPromise=require(_0x7b4c('0x5'));var Mustache=require(_0x7b4c('0x6'));var util=require(_0x7b4c('0x7'));var path=require(_0x7b4c('0x8'));var sox=require(_0x7b4c('0x9'));var csv=require('to-csv');var ejs=require(_0x7b4c('0xa'));var fs=require('fs');var fs_extra=require(_0x7b4c('0xb'));var _=require(_0x7b4c('0xc'));var squel=require('squel');var crypto=require(_0x7b4c('0xd'));var jsforce=require(_0x7b4c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7b4c('0xf'));var querystring=require(_0x7b4c('0x10'));var Papa=require(_0x7b4c('0x11'));var Redis=require(_0x7b4c('0x12'));var authService=require(_0x7b4c('0x13'));var qs=require(_0x7b4c('0x14'));var as=require(_0x7b4c('0x15'));var hardwareService=require(_0x7b4c('0x16'));var logger=require(_0x7b4c('0x17'))(_0x7b4c('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7b4c('0x19'));var db=require(_0x7b4c('0x1a'))['db'];function respondWithStatusCode(_0x38656b,_0x1722ad){_0x1722ad=_0x1722ad||0xcc;return function(_0x3e1558){if(_0x3e1558){return _0x38656b[_0x7b4c('0x1b')](_0x1722ad);}return _0x38656b[_0x7b4c('0x1c')](_0x1722ad)[_0x7b4c('0x1d')]();};}function respondWithResult(_0x25b90b,_0x387488){_0x387488=_0x387488||0xc8;return function(_0x593a19){if(_0x593a19){return _0x25b90b[_0x7b4c('0x1c')](_0x387488)[_0x7b4c('0x1e')](_0x593a19);}};}function respondWithFilteredResult(_0xdc71cd,_0x2a0e2f){return function(_0xa0a812){if(_0xa0a812){var _0x2471b3=typeof _0x2a0e2f[_0x7b4c('0x1f')]===_0x7b4c('0x20')&&typeof _0x2a0e2f['limit']===_0x7b4c('0x20');var _0xe71d88=_0xa0a812[_0x7b4c('0x21')];var _0x36c02a=_0x2471b3?0x0:_0x2a0e2f['offset'];var _0x3ce10c=_0x2471b3?_0xa0a812[_0x7b4c('0x21')]:_0x2a0e2f[_0x7b4c('0x1f')]+_0x2a0e2f[_0x7b4c('0x22')];var _0x2d4c72;if(_0x3ce10c>=_0xe71d88){_0x3ce10c=_0xe71d88;_0x2d4c72=0xc8;}else{_0x2d4c72=0xce;}_0xdc71cd[_0x7b4c('0x1c')](_0x2d4c72);return _0xdc71cd[_0x7b4c('0x23')](_0x7b4c('0x24'),_0x36c02a+'-'+_0x3ce10c+'/'+_0xe71d88)[_0x7b4c('0x1e')](_0xa0a812);}return null;};}function patchUpdates(_0x55e3df){return function(_0x1f06ec){try{jsonpatch[_0x7b4c('0x25')](_0x1f06ec,_0x55e3df,!![]);}catch(_0x11996d){return BPromise[_0x7b4c('0x26')](_0x11996d);}return _0x1f06ec[_0x7b4c('0x27')]();};}function saveUpdates(_0x168ac9,_0x176704){return function(_0x3d4826){if(_0x3d4826){return _0x3d4826[_0x7b4c('0x28')](_0x168ac9)[_0x7b4c('0x29')](function(_0x5eec1e){return _0x5eec1e;});}return null;};}function removeEntity(_0x45438c,_0x4350c9){return function(_0x276271){if(_0x276271){return _0x276271[_0x7b4c('0x2a')]()[_0x7b4c('0x29')](function(){_0x45438c[_0x7b4c('0x1c')](0xcc)[_0x7b4c('0x1d')]();});}};}function handleEntityNotFound(_0x459eb4,_0x1f311e){return function(_0x1a69db){if(!_0x1a69db){_0x459eb4[_0x7b4c('0x1b')](0x194);}return _0x1a69db;};}function handleError(_0x257da2,_0x316e5f){_0x316e5f=_0x316e5f||0x1f4;return function(_0x501f75){logger[_0x7b4c('0x2b')](_0x501f75[_0x7b4c('0x2c')]);if(_0x501f75[_0x7b4c('0x2d')]){delete _0x501f75[_0x7b4c('0x2d')];}_0x257da2[_0x7b4c('0x1c')](_0x316e5f)[_0x7b4c('0x2e')](_0x501f75);};}exports[_0x7b4c('0x2f')]=function(_0x2552f9,_0x3e4a46){var _0x9a799b={},_0x3585cd={},_0x130ace={'count':0x0,'rows':[]};var _0x3544bc=_[_0x7b4c('0x30')](db[_0x7b4c('0x31')][_0x7b4c('0x32')],function(_0x1d0724){return{'name':_0x1d0724[_0x7b4c('0x33')],'type':_0x1d0724[_0x7b4c('0x34')]['key']};});_0x3585cd['model']=_['map'](_0x3544bc,_0x7b4c('0x2d'));_0x3585cd[_0x7b4c('0x35')]=_[_0x7b4c('0x36')](_0x2552f9[_0x7b4c('0x35')]);_0x3585cd['filters']=_[_0x7b4c('0x37')](_0x3585cd[_0x7b4c('0x38')],_0x3585cd['query']);_0x9a799b[_0x7b4c('0x39')]=_['intersection'](_0x3585cd[_0x7b4c('0x38')],qs[_0x7b4c('0x3a')](_0x2552f9[_0x7b4c('0x35')]['fields']));_0x9a799b[_0x7b4c('0x39')]=_0x9a799b[_0x7b4c('0x39')]['length']?_0x9a799b[_0x7b4c('0x39')]:_0x3585cd[_0x7b4c('0x38')];if(!_0x2552f9[_0x7b4c('0x35')][_0x7b4c('0x3b')]('nolimit')){_0x9a799b['limit']=qs[_0x7b4c('0x22')](_0x2552f9[_0x7b4c('0x35')]['limit']);_0x9a799b[_0x7b4c('0x1f')]=qs['offset'](_0x2552f9['query'][_0x7b4c('0x1f')]);}_0x9a799b[_0x7b4c('0x3c')]=qs[_0x7b4c('0x3d')](_0x2552f9[_0x7b4c('0x35')]['sort']);_0x9a799b[_0x7b4c('0x3e')]=qs[_0x7b4c('0x3f')](_[_0x7b4c('0x40')](_0x2552f9[_0x7b4c('0x35')],_0x3585cd[_0x7b4c('0x3f')]),_0x3544bc);if(_0x2552f9[_0x7b4c('0x35')][_0x7b4c('0x41')]){_0x9a799b['where']=_['merge'](_0x9a799b[_0x7b4c('0x3e')],{'$or':_[_0x7b4c('0x30')](_0x3544bc,function(_0x31ef1e){if(_0x31ef1e[_0x7b4c('0x34')]!==_0x7b4c('0x42')){var _0x592834={};_0x592834[_0x31ef1e[_0x7b4c('0x2d')]]={'$like':'%'+_0x2552f9[_0x7b4c('0x35')][_0x7b4c('0x41')]+'%'};return _0x592834;}})});}_0x9a799b=_[_0x7b4c('0x43')]({},_0x9a799b,_0x2552f9[_0x7b4c('0x44')]);var _0x25659d={'where':_0x9a799b[_0x7b4c('0x3e')]};return db[_0x7b4c('0x31')][_0x7b4c('0x21')](_0x25659d)['then'](function(_0x2a4085){_0x130ace['count']=_0x2a4085;if(_0x2552f9[_0x7b4c('0x35')]['includeAll']){_0x9a799b[_0x7b4c('0x45')]=[{'all':!![]}];}return db[_0x7b4c('0x31')]['findAll'](_0x9a799b);})['then'](function(_0x354578){_0x130ace[_0x7b4c('0x46')]=_0x354578;return _0x130ace;})[_0x7b4c('0x29')](respondWithFilteredResult(_0x3e4a46,_0x9a799b))[_0x7b4c('0x47')](handleError(_0x3e4a46,null));};exports['show']=function(_0x2b1681,_0x2ed731){var _0x100774={'raw':!![],'where':{'id':_0x2b1681[_0x7b4c('0x48')]['id']}},_0x5d4ed8={};_0x5d4ed8['model']=_['keys'](db[_0x7b4c('0x31')]['rawAttributes']);_0x5d4ed8[_0x7b4c('0x35')]=_[_0x7b4c('0x36')](_0x2b1681[_0x7b4c('0x35')]);_0x5d4ed8[_0x7b4c('0x3f')]=_[_0x7b4c('0x37')](_0x5d4ed8[_0x7b4c('0x38')],_0x5d4ed8[_0x7b4c('0x35')]);_0x100774[_0x7b4c('0x39')]=_[_0x7b4c('0x37')](_0x5d4ed8['model'],qs[_0x7b4c('0x3a')](_0x2b1681['query']['fields']));_0x100774[_0x7b4c('0x39')]=_0x100774[_0x7b4c('0x39')]['length']?_0x100774['attributes']:_0x5d4ed8[_0x7b4c('0x38')];if(_0x2b1681[_0x7b4c('0x35')][_0x7b4c('0x49')]){_0x100774[_0x7b4c('0x45')]=[{'all':!![]}];}_0x100774=_[_0x7b4c('0x43')]({},_0x100774,_0x2b1681[_0x7b4c('0x44')]);return db[_0x7b4c('0x31')][_0x7b4c('0x4a')](_0x100774)['then'](handleEntityNotFound(_0x2ed731,null))[_0x7b4c('0x29')](respondWithResult(_0x2ed731,null))[_0x7b4c('0x47')](handleError(_0x2ed731,null));};exports[_0x7b4c('0x4b')]=function(_0x387efd,_0xc76435){return db[_0x7b4c('0x31')][_0x7b4c('0x4b')](_0x387efd[_0x7b4c('0x4c')],{})[_0x7b4c('0x29')](respondWithResult(_0xc76435,0xc9))['catch'](handleError(_0xc76435,null));};exports['update']=function(_0x1884a4,_0x3f6aaa){if(_0x1884a4[_0x7b4c('0x4c')]['id']){delete _0x1884a4['body']['id'];}return db[_0x7b4c('0x31')][_0x7b4c('0x4a')]({'where':{'id':_0x1884a4['params']['id']}})[_0x7b4c('0x29')](handleEntityNotFound(_0x3f6aaa,null))['then'](saveUpdates(_0x1884a4[_0x7b4c('0x4c')],null))['then'](respondWithResult(_0x3f6aaa,null))[_0x7b4c('0x47')](handleError(_0x3f6aaa,null));};exports['destroy']=function(_0x15d7f1,_0x11faed){return db['Cdr']['find']({'where':{'id':_0x15d7f1[_0x7b4c('0x48')]['id']}})[_0x7b4c('0x29')](handleEntityNotFound(_0x11faed,null))[_0x7b4c('0x29')](removeEntity(_0x11faed,null))['catch'](handleError(_0x11faed,null));};exports['describe']=function(_0x2fc5b5,_0x1c118a){return db['Cdr']['describe']()[_0x7b4c('0x29')](respondWithResult(_0x1c118a,null))[_0x7b4c('0x47')](handleError(_0x1c118a,null));};
\ No newline at end of file
index 1a08f6b..46e0e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x31e613,_0x2d5bd0){var _0x100ceb=function(_0x2560ea){while(--_0x2560ea){_0x31e613['push'](_0x31e613['shift']());}};_0x100ceb(++_0x2d5bd0);}(_0x7a54,0x106));var _0x47a5=function(_0x57a79a,_0x5e9876){_0x57a79a=_0x57a79a-0x0;var _0xc02450=_0x7a54[_0x57a79a];return _0xc02450;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x57ef92,_0x275943){var _0x36696a=function(_0x53acf9){while(--_0x53acf9){_0x57ef92['push'](_0x57ef92['shift']());}};_0x36696a(++_0x275943);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index 8b20587..c6418c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa1=['then','info','request\x20sent','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','Cdr,\x20%s,\x20%s','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x5c57a3,_0x1cc856){var _0x18d098=function(_0x1a8e6f){while(--_0x1a8e6f){_0x5c57a3['push'](_0x5c57a3['shift']());}};_0x18d098(++_0x1cc856);}(_0x0aa1,0x135));var _0x10aa=function(_0x3870d0,_0x1c38ad){_0x3870d0=_0x3870d0-0x0;var _0x1956be=_0x0aa1[_0x3870d0];return _0x1956be;};'use strict';var _=require(_0x10aa('0x0'));var util=require(_0x10aa('0x1'));var moment=require(_0x10aa('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x10aa('0x3'));var db=require(_0x10aa('0x4'))['db'];var utils=require(_0x10aa('0x5'));var logger=require(_0x10aa('0x6'))(_0x10aa('0x7'));var config=require('../../config/environment');var jayson=require(_0x10aa('0x8'));var client=jayson[_0x10aa('0x9')][_0x10aa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x40aedd,_0x10cde4,_0x1308cd){return new BPromise(function(_0x59cfb3,_0x1cef88){return client['request'](_0x40aedd,_0x1308cd)[_0x10aa('0xb')](function(_0xcfe52){logger[_0x10aa('0xc')]('Cdr,\x20%s,\x20%s',_0x10cde4,_0x10aa('0xd'));logger['debug'](_0x10aa('0xe'),_0x10cde4,_0x10aa('0xd'),JSON[_0x10aa('0xf')](_0xcfe52));if(_0xcfe52[_0x10aa('0x10')]){if(_0xcfe52[_0x10aa('0x10')]['code']===0x1f4){logger[_0x10aa('0x10')](_0x10aa('0x11'),_0x10cde4,_0xcfe52['error'][_0x10aa('0x12')]);return _0x1cef88(_0xcfe52[_0x10aa('0x10')]['message']);}logger[_0x10aa('0x10')](_0x10aa('0x11'),_0x10cde4,_0xcfe52['error']['message']);return _0x59cfb3(_0xcfe52[_0x10aa('0x10')][_0x10aa('0x12')]);}else{logger['info']('Cdr,\x20%s,\x20%s',_0x10cde4,_0x10aa('0xd'));_0x59cfb3(_0xcfe52['result']['message']);}})[_0x10aa('0x13')](function(_0x5b7311){logger[_0x10aa('0x10')]('Cdr,\x20%s,\x20%s',_0x10cde4,_0x5b7311);_0x1cef88(_0x5b7311);});});}
\ No newline at end of file
+var _0x3452=['request','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http'];(function(_0x102123,_0x5c1a48){var _0x151fee=function(_0x5c0b42){while(--_0x5c0b42){_0x102123['push'](_0x102123['shift']());}};_0x151fee(++_0x5c1a48);}(_0x3452,0x9e));var _0x2345=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x3452[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0x2345('0x0'));var util=require(_0x2345('0x1'));var moment=require(_0x2345('0x2'));var BPromise=require(_0x2345('0x3'));var rs=require(_0x2345('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2345('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2345('0x6'));var jayson=require(_0x2345('0x7'));var client=jayson[_0x2345('0x8')][_0x2345('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x43be2d,_0x34e185,_0x151c72){return new BPromise(function(_0x455cc0,_0x20a6c2){return client[_0x2345('0xa')](_0x43be2d,_0x151c72)['then'](function(_0x309e54){logger[_0x2345('0xb')](_0x2345('0xc'),_0x34e185,'request\x20sent');logger[_0x2345('0xd')](_0x2345('0xe'),_0x34e185,'request\x20sent',JSON[_0x2345('0xf')](_0x309e54));if(_0x309e54[_0x2345('0x10')]){if(_0x309e54['error'][_0x2345('0x11')]===0x1f4){logger[_0x2345('0x10')](_0x2345('0xc'),_0x34e185,_0x309e54[_0x2345('0x10')][_0x2345('0x12')]);return _0x20a6c2(_0x309e54['error'][_0x2345('0x12')]);}logger[_0x2345('0x10')](_0x2345('0xc'),_0x34e185,_0x309e54['error'][_0x2345('0x12')]);return _0x455cc0(_0x309e54[_0x2345('0x10')][_0x2345('0x12')]);}else{logger[_0x2345('0xb')](_0x2345('0xc'),_0x34e185,'request\x20sent');_0x455cc0(_0x309e54[_0x2345('0x13')][_0x2345('0x12')]);}})[_0x2345('0x14')](function(_0x570177){logger[_0x2345('0x10')](_0x2345('0xc'),_0x34e185,_0x570177);_0x20a6c2(_0x570177);});});}
\ No newline at end of file
index 8ee6571..c61ddf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x48e1ec,_0x35f468){var _0x3b33eb=function(_0x507bf9){while(--_0x507bf9){_0x48e1ec['push'](_0x48e1ec['shift']());}};_0x3b33eb(++_0x35f468);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x318410,_0x451962){var _0x2898a3=function(_0x58e572){while(--_0x58e572){_0x318410['push'](_0x318410['shift']());}};_0x2898a3(++_0x451962);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index c7049c0..d653084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe348=['sequelize','STRING','*,*,*,*'];(function(_0x1e74f3,_0x21dab7){var _0x15782b=function(_0x13b049){while(--_0x13b049){_0x1e74f3['push'](_0x1e74f3['shift']());}};_0x15782b(++_0x21dab7);}(_0xe348,0x10b));var _0x8e34=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xe348[_0x51020b];return _0x371e47;};'use strict';var Sequelize=require(_0x8e34('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x8e34('0x1')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x8e34('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x8e34('0x2')}};
\ No newline at end of file
+var _0xa2e2=['INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x28c472,_0x51a8de){var _0x2c8751=function(_0x1753bb){while(--_0x1753bb){_0x28c472['push'](_0x28c472['shift']());}};_0x2c8751(++_0x51a8de);}(_0xa2e2,0x147));var _0x2a2e=function(_0x21eacf,_0x1d1f5b){_0x21eacf=_0x21eacf-0x0;var _0xbae3e=_0xa2e2[_0x21eacf];return _0xbae3e;};'use strict';var Sequelize=require(_0x2a2e('0x0'));module[_0x2a2e('0x1')]={'priority':{'type':Sequelize[_0x2a2e('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x2a2e('0x3')],'allowNull':![],'defaultValue':_0x2a2e('0x4')},'appdata':{'type':Sequelize[_0x2a2e('0x5')]()},'description':{'type':Sequelize[_0x2a2e('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x2a2e('0x6')}};
\ No newline at end of file
index 59b51cf..08733de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0487=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','ChatApplication','rawAttributes','keys','intersection','query','attributes','model','fields','includeAll','merge','options','find','catch','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x4b785d,_0xbb844a){var _0x3a7689=function(_0x46f397){while(--_0x46f397){_0x4b785d['push'](_0x4b785d['shift']());}};_0x3a7689(++_0xbb844a);}(_0x0487,0x14f));var _0x7048=function(_0x576e2b,_0x328953){_0x576e2b=_0x576e2b-0x0;var _0x46461a=_0x0487[_0x576e2b];return _0x46461a;};'use strict';var emlformat=require(_0x7048('0x0'));var rimraf=require(_0x7048('0x1'));var zipdir=require(_0x7048('0x2'));var jsonpatch=require(_0x7048('0x3'));var rp=require(_0x7048('0x4'));var moment=require(_0x7048('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7048('0x6'));var util=require('util');var path=require(_0x7048('0x7'));var sox=require(_0x7048('0x8'));var csv=require(_0x7048('0x9'));var ejs=require(_0x7048('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7048('0xb'));var squel=require(_0x7048('0xc'));var crypto=require(_0x7048('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7048('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7048('0xf'));var Papa=require(_0x7048('0x10'));var Redis=require(_0x7048('0x11'));var authService=require(_0x7048('0x12'));var qs=require(_0x7048('0x13'));var as=require(_0x7048('0x14'));var hardwareService=require(_0x7048('0x15'));var logger=require('../../config/logger')(_0x7048('0x16'));var utils=require(_0x7048('0x17'));var config=require(_0x7048('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x7048('0x19'))['db'];function respondWithStatusCode(_0x1ba215,_0x59542b){_0x59542b=_0x59542b||0xcc;return function(_0x116386){if(_0x116386){return _0x1ba215[_0x7048('0x1a')](_0x59542b);}return _0x1ba215[_0x7048('0x1b')](_0x59542b)[_0x7048('0x1c')]();};}function respondWithResult(_0xc9c508,_0x546c51){_0x546c51=_0x546c51||0xc8;return function(_0x1072d0){if(_0x1072d0){return _0xc9c508['status'](_0x546c51)[_0x7048('0x1d')](_0x1072d0);}};}function respondWithFilteredResult(_0x361cf8,_0x6a2a55){return function(_0x2b9800){if(_0x2b9800){var _0x4ec491=typeof _0x6a2a55[_0x7048('0x1e')]==='undefined'&&typeof _0x6a2a55[_0x7048('0x1f')]===_0x7048('0x20');var _0x4cff1c=_0x2b9800['count'];var _0x255d5d=_0x4ec491?0x0:_0x6a2a55[_0x7048('0x1e')];var _0x1db323=_0x4ec491?_0x2b9800[_0x7048('0x21')]:_0x6a2a55['offset']+_0x6a2a55[_0x7048('0x1f')];var _0x5b040b;if(_0x1db323>=_0x4cff1c){_0x1db323=_0x4cff1c;_0x5b040b=0xc8;}else{_0x5b040b=0xce;}_0x361cf8['status'](_0x5b040b);return _0x361cf8['set'](_0x7048('0x22'),_0x255d5d+'-'+_0x1db323+'/'+_0x4cff1c)[_0x7048('0x1d')](_0x2b9800);}return null;};}function patchUpdates(_0xa83230){return function(_0x4b9def){try{jsonpatch[_0x7048('0x23')](_0x4b9def,_0xa83230,!![]);}catch(_0x5de659){return BPromise[_0x7048('0x24')](_0x5de659);}return _0x4b9def['save']();};}function saveUpdates(_0x3d6ee7,_0x43a621){return function(_0x31c5dc){if(_0x31c5dc){return _0x31c5dc[_0x7048('0x25')](_0x3d6ee7)[_0x7048('0x26')](function(_0x171304){return _0x171304;});}return null;};}function removeEntity(_0x5a683d,_0x4c8709){return function(_0x519649){if(_0x519649){return _0x519649[_0x7048('0x27')]()['then'](function(){_0x5a683d[_0x7048('0x1b')](0xcc)[_0x7048('0x1c')]();});}};}function handleEntityNotFound(_0x3c7c96,_0x4fc143){return function(_0x1e0c61){if(!_0x1e0c61){_0x3c7c96['sendStatus'](0x194);}return _0x1e0c61;};}function handleError(_0x33a9f1,_0x4a0f3b){_0x4a0f3b=_0x4a0f3b||0x1f4;return function(_0xe3b552){logger[_0x7048('0x28')](_0xe3b552[_0x7048('0x29')]);if(_0xe3b552['name']){delete _0xe3b552[_0x7048('0x2a')];}_0x33a9f1['status'](_0x4a0f3b)[_0x7048('0x2b')](_0xe3b552);};}exports['show']=function(_0x228981,_0x5ee10a){var _0x30d90b={'raw':!![],'where':{'id':_0x228981['params']['id']}},_0x3ccc34={};_0x3ccc34['model']=_['keys'](db[_0x7048('0x2c')][_0x7048('0x2d')]);_0x3ccc34['query']=_[_0x7048('0x2e')](_0x228981['query']);_0x3ccc34['filters']=_[_0x7048('0x2f')](_0x3ccc34['model'],_0x3ccc34[_0x7048('0x30')]);_0x30d90b[_0x7048('0x31')]=_[_0x7048('0x2f')](_0x3ccc34[_0x7048('0x32')],qs[_0x7048('0x33')](_0x228981[_0x7048('0x30')][_0x7048('0x33')]));_0x30d90b[_0x7048('0x31')]=_0x30d90b[_0x7048('0x31')]['length']?_0x30d90b['attributes']:_0x3ccc34[_0x7048('0x32')];if(_0x228981[_0x7048('0x30')][_0x7048('0x34')]){_0x30d90b['include']=[{'all':!![]}];}_0x30d90b=_[_0x7048('0x35')]({},_0x30d90b,_0x228981[_0x7048('0x36')]);return db[_0x7048('0x2c')][_0x7048('0x37')](_0x30d90b)[_0x7048('0x26')](handleEntityNotFound(_0x5ee10a,null))[_0x7048('0x26')](respondWithResult(_0x5ee10a,null))[_0x7048('0x38')](handleError(_0x5ee10a,null));};exports[_0x7048('0x25')]=function(_0xdce055,_0x1251ae){if(_0xdce055[_0x7048('0x39')]['id']){delete _0xdce055['body']['id'];}return db['ChatApplication'][_0x7048('0x37')]({'where':{'id':_0xdce055['params']['id']}})[_0x7048('0x26')](handleEntityNotFound(_0x1251ae,null))['then'](saveUpdates(_0xdce055[_0x7048('0x39')],null))[_0x7048('0x26')](respondWithResult(_0x1251ae,null))[_0x7048('0x38')](handleError(_0x1251ae,null));};exports[_0x7048('0x27')]=function(_0x5ac439,_0x43a3d3){return db[_0x7048('0x2c')][_0x7048('0x37')]({'where':{'id':_0x5ac439[_0x7048('0x3a')]['id']}})['then'](handleEntityNotFound(_0x43a3d3,null))['then'](removeEntity(_0x43a3d3,null))[_0x7048('0x38')](handleError(_0x43a3d3,null));};
\ No newline at end of file
+var _0xbd99=['fields','length','includeAll','options','body','catch','find','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes'];(function(_0xfed0b8,_0x14fc81){var _0x17908e=function(_0x209f80){while(--_0x209f80){_0xfed0b8['push'](_0xfed0b8['shift']());}};_0x17908e(++_0x14fc81);}(_0xbd99,0x1df));var _0x9bd9=function(_0x2e1146,_0x172a05){_0x2e1146=_0x2e1146-0x0;var _0x470349=_0xbd99[_0x2e1146];return _0x470349;};'use strict';var emlformat=require(_0x9bd9('0x0'));var rimraf=require(_0x9bd9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9bd9('0x2'));var rp=require(_0x9bd9('0x3'));var moment=require('moment');var BPromise=require(_0x9bd9('0x4'));var Mustache=require(_0x9bd9('0x5'));var util=require(_0x9bd9('0x6'));var path=require(_0x9bd9('0x7'));var sox=require(_0x9bd9('0x8'));var csv=require(_0x9bd9('0x9'));var ejs=require(_0x9bd9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9bd9('0xb'));var squel=require(_0x9bd9('0xc'));var crypto=require(_0x9bd9('0xd'));var jsforce=require(_0x9bd9('0xe'));var deskjs=require(_0x9bd9('0xf'));var toCsv=require(_0x9bd9('0x9'));var querystring=require('querystring');var Papa=require(_0x9bd9('0x10'));var Redis=require('ioredis');var authService=require(_0x9bd9('0x11'));var qs=require(_0x9bd9('0x12'));var as=require(_0x9bd9('0x13'));var hardwareService=require(_0x9bd9('0x14'));var logger=require(_0x9bd9('0x15'))(_0x9bd9('0x16'));var utils=require(_0x9bd9('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9bd9('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4df012,_0x6f1f31){_0x6f1f31=_0x6f1f31||0xcc;return function(_0x4e66c4){if(_0x4e66c4){return _0x4df012[_0x9bd9('0x19')](_0x6f1f31);}return _0x4df012[_0x9bd9('0x1a')](_0x6f1f31)[_0x9bd9('0x1b')]();};}function respondWithResult(_0x5198f0,_0x2bd99e){_0x2bd99e=_0x2bd99e||0xc8;return function(_0x4f9039){if(_0x4f9039){return _0x5198f0[_0x9bd9('0x1a')](_0x2bd99e)[_0x9bd9('0x1c')](_0x4f9039);}};}function respondWithFilteredResult(_0x4bab02,_0x197bcc){return function(_0xf3949c){if(_0xf3949c){var _0x36ceaa=typeof _0x197bcc[_0x9bd9('0x1d')]==='undefined'&&typeof _0x197bcc['limit']===_0x9bd9('0x1e');var _0x221d94=_0xf3949c[_0x9bd9('0x1f')];var _0x46a4bf=_0x36ceaa?0x0:_0x197bcc[_0x9bd9('0x1d')];var _0x3e52ae=_0x36ceaa?_0xf3949c[_0x9bd9('0x1f')]:_0x197bcc[_0x9bd9('0x1d')]+_0x197bcc[_0x9bd9('0x20')];var _0x3b3b38;if(_0x3e52ae>=_0x221d94){_0x3e52ae=_0x221d94;_0x3b3b38=0xc8;}else{_0x3b3b38=0xce;}_0x4bab02['status'](_0x3b3b38);return _0x4bab02[_0x9bd9('0x21')](_0x9bd9('0x22'),_0x46a4bf+'-'+_0x3e52ae+'/'+_0x221d94)[_0x9bd9('0x1c')](_0xf3949c);}return null;};}function patchUpdates(_0x1820e3){return function(_0x2a2f9c){try{jsonpatch[_0x9bd9('0x23')](_0x2a2f9c,_0x1820e3,!![]);}catch(_0x4ae7ef){return BPromise['reject'](_0x4ae7ef);}return _0x2a2f9c['save']();};}function saveUpdates(_0x4f05dc,_0x1fd658){return function(_0x3c8cab){if(_0x3c8cab){return _0x3c8cab[_0x9bd9('0x24')](_0x4f05dc)[_0x9bd9('0x25')](function(_0x4506d3){return _0x4506d3;});}return null;};}function removeEntity(_0x50fd9e,_0x299573){return function(_0x4b6bec){if(_0x4b6bec){return _0x4b6bec[_0x9bd9('0x26')]()['then'](function(){_0x50fd9e[_0x9bd9('0x1a')](0xcc)[_0x9bd9('0x1b')]();});}};}function handleEntityNotFound(_0x4896d8,_0x31340d){return function(_0xf9e8fb){if(!_0xf9e8fb){_0x4896d8[_0x9bd9('0x19')](0x194);}return _0xf9e8fb;};}function handleError(_0x1fbb40,_0x2ff274){_0x2ff274=_0x2ff274||0x1f4;return function(_0x439cb8){logger['error'](_0x439cb8[_0x9bd9('0x27')]);if(_0x439cb8[_0x9bd9('0x28')]){delete _0x439cb8['name'];}_0x1fbb40[_0x9bd9('0x1a')](_0x2ff274)[_0x9bd9('0x29')](_0x439cb8);};}exports[_0x9bd9('0x2a')]=function(_0x4b5140,_0x4fdcc6){var _0x52e4b7={'raw':!![],'where':{'id':_0x4b5140[_0x9bd9('0x2b')]['id']}},_0x362db6={};_0x362db6[_0x9bd9('0x2c')]=_[_0x9bd9('0x2d')](db[_0x9bd9('0x2e')][_0x9bd9('0x2f')]);_0x362db6['query']=_[_0x9bd9('0x2d')](_0x4b5140[_0x9bd9('0x30')]);_0x362db6[_0x9bd9('0x31')]=_[_0x9bd9('0x32')](_0x362db6[_0x9bd9('0x2c')],_0x362db6[_0x9bd9('0x30')]);_0x52e4b7[_0x9bd9('0x33')]=_['intersection'](_0x362db6['model'],qs[_0x9bd9('0x34')](_0x4b5140['query']['fields']));_0x52e4b7['attributes']=_0x52e4b7[_0x9bd9('0x33')][_0x9bd9('0x35')]?_0x52e4b7['attributes']:_0x362db6['model'];if(_0x4b5140[_0x9bd9('0x30')][_0x9bd9('0x36')]){_0x52e4b7['include']=[{'all':!![]}];}_0x52e4b7=_['merge']({},_0x52e4b7,_0x4b5140[_0x9bd9('0x37')]);return db[_0x9bd9('0x2e')]['find'](_0x52e4b7)['then'](handleEntityNotFound(_0x4fdcc6,null))[_0x9bd9('0x25')](respondWithResult(_0x4fdcc6,null))['catch'](handleError(_0x4fdcc6,null));};exports['update']=function(_0x43e374,_0x193086){if(_0x43e374[_0x9bd9('0x38')]['id']){delete _0x43e374[_0x9bd9('0x38')]['id'];}return db[_0x9bd9('0x2e')]['find']({'where':{'id':_0x43e374['params']['id']}})[_0x9bd9('0x25')](handleEntityNotFound(_0x193086,null))[_0x9bd9('0x25')](saveUpdates(_0x43e374[_0x9bd9('0x38')],null))[_0x9bd9('0x25')](respondWithResult(_0x193086,null))[_0x9bd9('0x39')](handleError(_0x193086,null));};exports[_0x9bd9('0x26')]=function(_0x1003f2,_0x69f496){return db[_0x9bd9('0x2e')][_0x9bd9('0x3a')]({'where':{'id':_0x1003f2[_0x9bd9('0x2b')]['id']}})[_0x9bd9('0x25')](handleEntityNotFound(_0x69f496,null))[_0x9bd9('0x25')](removeEntity(_0x69f496,null))[_0x9bd9('0x39')](handleError(_0x69f496,null));};
\ No newline at end of file
index feb6fa3..8be5471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x851c=['rimraf','../../config/environment','exports','define','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1265ed,_0x4b85e8){var _0x5ac459=function(_0xf0c114){while(--_0xf0c114){_0x1265ed['push'](_0x1265ed['shift']());}};_0x5ac459(++_0x4b85e8);}(_0x851c,0x19d));var _0xc851=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x851c[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xc851('0x0'));var util=require(_0xc851('0x1'));var logger=require(_0xc851('0x2'))(_0xc851('0x3'));var moment=require(_0xc851('0x4'));var BPromise=require(_0xc851('0x5'));var rp=require(_0xc851('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc851('0x7'));var config=require(_0xc851('0x8'));var attributes=require('./chatApplication.attributes');module[_0xc851('0x9')]=function(_0x272e34,_0x535cf1){return _0x272e34[_0xc851('0xa')]('ChatApplication',attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc851('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5d87=['../../config/environment','define','chat_applications','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x37f3b3,_0x1c33ea){var _0x310b96=function(_0x4f9df4){while(--_0x4f9df4){_0x37f3b3['push'](_0x37f3b3['shift']());}};_0x310b96(++_0x1c33ea);}(_0x5d87,0xdc));var _0x75d8=function(_0x156c44,_0xffe9c5){_0x156c44=_0x156c44-0x0;var _0x40746b=_0x5d87[_0x156c44];return _0x40746b;};'use strict';var _=require(_0x75d8('0x0'));var util=require(_0x75d8('0x1'));var logger=require('../../config/logger')(_0x75d8('0x2'));var moment=require(_0x75d8('0x3'));var BPromise=require(_0x75d8('0x4'));var rp=require(_0x75d8('0x5'));var fs=require('fs');var path=require(_0x75d8('0x6'));var rimraf=require(_0x75d8('0x7'));var config=require(_0x75d8('0x8'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x318a00,_0x2d2162){return _0x318a00[_0x75d8('0x9')]('ChatApplication',attributes,{'tableName':_0x75d8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x75d8('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d8466b9..734f07d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18b0=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x5f1e1c,_0x329fc6){var _0x5981f5=function(_0x2f1db5){while(--_0x2f1db5){_0x5f1e1c['push'](_0x5f1e1c['shift']());}};_0x5981f5(++_0x329fc6);}(_0x18b0,0x1c5));var _0x018b=function(_0x1e0fa4,_0x2c6e3b){_0x1e0fa4=_0x1e0fa4-0x0;var _0x7bb605=_0x18b0[_0x1e0fa4];return _0x7bb605;};'use strict';var _=require(_0x018b('0x0'));var util=require(_0x018b('0x1'));var moment=require(_0x018b('0x2'));var BPromise=require(_0x018b('0x3'));var rs=require(_0x018b('0x4'));var fs=require('fs');var Redis=require(_0x018b('0x5'));var db=require(_0x018b('0x6'))['db'];var utils=require(_0x018b('0x7'));var logger=require(_0x018b('0x8'))(_0x018b('0x9'));var config=require(_0x018b('0xa'));var jayson=require(_0x018b('0xb'));var client=jayson[_0x018b('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x381796,_0x24dd1d,_0x1ed352){return new BPromise(function(_0x38cbbd,_0x45580c){return client[_0x018b('0xd')](_0x381796,_0x1ed352)[_0x018b('0xe')](function(_0x3203f3){logger[_0x018b('0xf')](_0x018b('0x10'),_0x24dd1d,_0x018b('0x11'));logger[_0x018b('0x12')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x24dd1d,_0x018b('0x11'),JSON[_0x018b('0x13')](_0x3203f3));if(_0x3203f3['error']){if(_0x3203f3[_0x018b('0x14')][_0x018b('0x15')]===0x1f4){logger[_0x018b('0x14')](_0x018b('0x10'),_0x24dd1d,_0x3203f3[_0x018b('0x14')][_0x018b('0x16')]);return _0x45580c(_0x3203f3['error'][_0x018b('0x16')]);}logger[_0x018b('0x14')](_0x018b('0x10'),_0x24dd1d,_0x3203f3['error'][_0x018b('0x16')]);return _0x38cbbd(_0x3203f3[_0x018b('0x14')][_0x018b('0x16')]);}else{logger[_0x018b('0xf')](_0x018b('0x10'),_0x24dd1d,_0x018b('0x11'));_0x38cbbd(_0x3203f3[_0x018b('0x17')]['message']);}})[_0x018b('0x18')](function(_0x4ec9c2){logger[_0x018b('0x14')]('ChatApplication,\x20%s,\x20%s',_0x24dd1d,_0x4ec9c2);_0x45580c(_0x4ec9c2);});});}
\ No newline at end of file
+var _0x6344=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0x6344,0x18a));var _0x4634=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x6344[_0x6cf19c];return _0xce14f3;};'use strict';var _=require(_0x4634('0x0'));var util=require(_0x4634('0x1'));var moment=require(_0x4634('0x2'));var BPromise=require(_0x4634('0x3'));var rs=require(_0x4634('0x4'));var fs=require('fs');var Redis=require(_0x4634('0x5'));var db=require(_0x4634('0x6'))['db'];var utils=require(_0x4634('0x7'));var logger=require(_0x4634('0x8'))(_0x4634('0x9'));var config=require(_0x4634('0xa'));var jayson=require(_0x4634('0xb'));var client=jayson[_0x4634('0xc')][_0x4634('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x24b07d,_0x1744c5,_0x1026f1){return new BPromise(function(_0x52d53f,_0x3139d1){return client[_0x4634('0xe')](_0x24b07d,_0x1026f1)[_0x4634('0xf')](function(_0x335750){logger['info'](_0x4634('0x10'),_0x1744c5,_0x4634('0x11'));logger[_0x4634('0x12')](_0x4634('0x13'),_0x1744c5,_0x4634('0x11'),JSON[_0x4634('0x14')](_0x335750));if(_0x335750[_0x4634('0x15')]){if(_0x335750[_0x4634('0x15')]['code']===0x1f4){logger[_0x4634('0x15')](_0x4634('0x10'),_0x1744c5,_0x335750[_0x4634('0x15')][_0x4634('0x16')]);return _0x3139d1(_0x335750['error']['message']);}logger[_0x4634('0x15')](_0x4634('0x10'),_0x1744c5,_0x335750['error']['message']);return _0x52d53f(_0x335750['error'][_0x4634('0x16')]);}else{logger['info'](_0x4634('0x10'),_0x1744c5,_0x4634('0x11'));_0x52d53f(_0x335750[_0x4634('0x17')][_0x4634('0x16')]);}})[_0x4634('0x18')](function(_0x416831){logger['error'](_0x4634('0x10'),_0x1744c5,_0x416831);_0x3139d1(_0x416831);});});}
\ No newline at end of file
index ca2ee1a..5e03955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81b6=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','show','put','/:id','isAuthenticated','update','delete'];(function(_0x269652,_0x13003e){var _0x220021=function(_0x34a55c){while(--_0x34a55c){_0x269652['push'](_0x269652['shift']());}};_0x220021(++_0x13003e);}(_0x81b6,0xf8));var _0x681b=function(_0x214b34,_0x2d6dfc){_0x214b34=_0x214b34-0x0;var _0x51ff90=_0x81b6[_0x214b34];return _0x51ff90;};'use strict';var multer=require(_0x681b('0x0'));var util=require(_0x681b('0x1'));var path=require(_0x681b('0x2'));var timeout=require(_0x681b('0x3'));var express=require(_0x681b('0x4'));var router=express[_0x681b('0x5')]();var fs_extra=require(_0x681b('0x6'));var auth=require(_0x681b('0x7'));var interaction=require(_0x681b('0x8'));var config=require(_0x681b('0x9'));var controller=require(_0x681b('0xa'));router[_0x681b('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x681b('0xc')]);router[_0x681b('0xd')](_0x681b('0xe'),auth[_0x681b('0xf')](),controller[_0x681b('0x10')]);router[_0x681b('0x11')](_0x681b('0xe'),auth[_0x681b('0xf')](),controller[_0x681b('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x2a7c=['isAuthenticated','show','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id'];(function(_0x121c00,_0x58800a){var _0x323cee=function(_0x137ca4){while(--_0x137ca4){_0x121c00['push'](_0x121c00['shift']());}};_0x323cee(++_0x58800a);}(_0x2a7c,0x8d));var _0xc2a7=function(_0x28ad3d,_0x4716fe){_0x28ad3d=_0x28ad3d-0x0;var _0xa2b3fd=_0x2a7c[_0x28ad3d];return _0xa2b3fd;};'use strict';var multer=require(_0xc2a7('0x0'));var util=require(_0xc2a7('0x1'));var path=require('path');var timeout=require(_0xc2a7('0x2'));var express=require(_0xc2a7('0x3'));var router=express[_0xc2a7('0x4')]();var fs_extra=require(_0xc2a7('0x5'));var auth=require(_0xc2a7('0x6'));var interaction=require(_0xc2a7('0x7'));var config=require(_0xc2a7('0x8'));var controller=require(_0xc2a7('0x9'));router[_0xc2a7('0xa')](_0xc2a7('0xb'),auth[_0xc2a7('0xc')](),controller[_0xc2a7('0xd')]);router['put'](_0xc2a7('0xb'),auth[_0xc2a7('0xc')](),controller[_0xc2a7('0xe')]);router[_0xc2a7('0xf')](_0xc2a7('0xb'),auth[_0xc2a7('0xc')](),controller[_0xc2a7('0x10')]);module['exports']=router;
\ No newline at end of file
index fbb4fda..b6229c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa665=['STRING','BOOLEAN','sequelize','exports'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa665,0x7e));var _0x5a66=function(_0x5caee2,_0x325a65){_0x5caee2=_0x5caee2-0x0;var _0x3f8747=_0xa665[_0x5caee2];return _0x3f8747;};'use strict';var Sequelize=require(_0x5a66('0x0'));module[_0x5a66('0x1')]={'name':{'type':Sequelize[_0x5a66('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5a66('0x2')]},'write':{'type':Sequelize[_0x5a66('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x430c=['sequelize','STRING','BOOLEAN'];(function(_0x382279,_0x181b66){var _0x193f40=function(_0x453461){while(--_0x453461){_0x382279['push'](_0x382279['shift']());}};_0x193f40(++_0x181b66);}(_0x430c,0x1a1));var _0xc430=function(_0x1d50f2,_0x3c3ec6){_0x1d50f2=_0x1d50f2-0x0;var _0x3769b8=_0x430c[_0x1d50f2];return _0x3769b8;};'use strict';var Sequelize=require(_0xc430('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xc430('0x1')]},'write':{'type':Sequelize[_0xc430('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 0aa14d8..9c86728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab1=['intersection','fields','length','hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','options','ChatGroup','includeAll','include','findAll','catch','show','find','create','body','params','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','sort','removeMembers','addMessage','ChatGroupId','getMessages','pick','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatGroup.socket','register','sendStatus','status','end','json','limit','count','offset','set','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes'];(function(_0x1e8b1e,_0x407bbd){var _0x4a0fde=function(_0x4fd2be){while(--_0x4fd2be){_0x1e8b1e['push'](_0x1e8b1e['shift']());}};_0x4a0fde(++_0x407bbd);}(_0x9ab1,0x8a));var _0x19ab=function(_0x5a302c,_0x1d4804){_0x5a302c=_0x5a302c-0x0;var _0x454fd5=_0x9ab1[_0x5a302c];return _0x454fd5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x19ab('0x0'));var jsonpatch=require(_0x19ab('0x1'));var rp=require('request-promise');var moment=require(_0x19ab('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x19ab('0x3'));var util=require(_0x19ab('0x4'));var path=require(_0x19ab('0x5'));var sox=require(_0x19ab('0x6'));var csv=require(_0x19ab('0x7'));var ejs=require(_0x19ab('0x8'));var fs=require('fs');var fs_extra=require(_0x19ab('0x9'));var _=require(_0x19ab('0xa'));var squel=require('squel');var crypto=require(_0x19ab('0xb'));var jsforce=require(_0x19ab('0xc'));var deskjs=require(_0x19ab('0xd'));var toCsv=require('to-csv');var querystring=require(_0x19ab('0xe'));var Papa=require(_0x19ab('0xf'));var Redis=require(_0x19ab('0x10'));var authService=require(_0x19ab('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x19ab('0x12'));var hardwareService=require(_0x19ab('0x13'));var logger=require(_0x19ab('0x14'))(_0x19ab('0x15'));var utils=require(_0x19ab('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x19ab('0x17'));var db=require(_0x19ab('0x18'))['db'];config[_0x19ab('0x19')]=_[_0x19ab('0x1a')](config['redis'],{'host':_0x19ab('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x19ab('0x19')]));require(_0x19ab('0x1c'))[_0x19ab('0x1d')](socket);function respondWithStatusCode(_0x1d25e7,_0x34b311){_0x34b311=_0x34b311||0xcc;return function(_0x26efaa){if(_0x26efaa){return _0x1d25e7[_0x19ab('0x1e')](_0x34b311);}return _0x1d25e7[_0x19ab('0x1f')](_0x34b311)[_0x19ab('0x20')]();};}function respondWithResult(_0x24931c,_0x312bab){_0x312bab=_0x312bab||0xc8;return function(_0x318578){if(_0x318578){return _0x24931c[_0x19ab('0x1f')](_0x312bab)[_0x19ab('0x21')](_0x318578);}};}function respondWithFilteredResult(_0x85703f,_0x15f731){return function(_0x2ad041){if(_0x2ad041){var _0x2ea161=typeof _0x15f731['offset']==='undefined'&&typeof _0x15f731[_0x19ab('0x22')]==='undefined';var _0xa19d5=_0x2ad041['count'];var _0x551fb0=_0x2ea161?0x0:_0x15f731['offset'];var _0x3b0dc7=_0x2ea161?_0x2ad041[_0x19ab('0x23')]:_0x15f731[_0x19ab('0x24')]+_0x15f731[_0x19ab('0x22')];var _0xb830d;if(_0x3b0dc7>=_0xa19d5){_0x3b0dc7=_0xa19d5;_0xb830d=0xc8;}else{_0xb830d=0xce;}_0x85703f[_0x19ab('0x1f')](_0xb830d);return _0x85703f[_0x19ab('0x25')]('Content-Range',_0x551fb0+'-'+_0x3b0dc7+'/'+_0xa19d5)[_0x19ab('0x21')](_0x2ad041);}return null;};}function patchUpdates(_0x303d4a){return function(_0x48eab4){try{jsonpatch['apply'](_0x48eab4,_0x303d4a,!![]);}catch(_0x2027d5){return BPromise['reject'](_0x2027d5);}return _0x48eab4[_0x19ab('0x26')]();};}function saveUpdates(_0x16cadb,_0x5d6a26){return function(_0x5afb2d){if(_0x5afb2d){return _0x5afb2d[_0x19ab('0x27')](_0x16cadb)[_0x19ab('0x28')](function(_0x329f28){return _0x329f28;});}return null;};}function removeEntity(_0x2b7b5b,_0xf69b00){return function(_0x3cd860){if(_0x3cd860){return _0x3cd860[_0x19ab('0x29')]()[_0x19ab('0x28')](function(){_0x2b7b5b[_0x19ab('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55c8e7,_0x484b6e){return function(_0x60ca94){if(!_0x60ca94){_0x55c8e7[_0x19ab('0x1e')](0x194);}return _0x60ca94;};}function handleError(_0x3e9fce,_0x4209f2){_0x4209f2=_0x4209f2||0x1f4;return function(_0x2b12ae){logger['error'](_0x2b12ae[_0x19ab('0x2a')]);if(_0x2b12ae[_0x19ab('0x2b')]){delete _0x2b12ae[_0x19ab('0x2b')];}_0x3e9fce[_0x19ab('0x1f')](_0x4209f2)[_0x19ab('0x2c')](_0x2b12ae);};}exports[_0x19ab('0x2d')]=function(_0x2b7107,_0x1610e5){var _0x38c1de={},_0x3e9943={},_0x518200={'count':0x0,'rows':[]};var _0x2c6c20=_[_0x19ab('0x2e')](db['ChatGroup'][_0x19ab('0x2f')],function(_0x2d856b){return{'name':_0x2d856b[_0x19ab('0x30')],'type':_0x2d856b[_0x19ab('0x31')][_0x19ab('0x32')]};});_0x3e9943[_0x19ab('0x33')]=_['map'](_0x2c6c20,_0x19ab('0x2b'));_0x3e9943[_0x19ab('0x34')]=_[_0x19ab('0x35')](_0x2b7107[_0x19ab('0x34')]);_0x3e9943[_0x19ab('0x36')]=_['intersection'](_0x3e9943['model'],_0x3e9943['query']);_0x38c1de[_0x19ab('0x37')]=_[_0x19ab('0x38')](_0x3e9943[_0x19ab('0x33')],qs[_0x19ab('0x39')](_0x2b7107['query'][_0x19ab('0x39')]));_0x38c1de[_0x19ab('0x37')]=_0x38c1de[_0x19ab('0x37')][_0x19ab('0x3a')]?_0x38c1de[_0x19ab('0x37')]:_0x3e9943[_0x19ab('0x33')];if(!_0x2b7107[_0x19ab('0x34')][_0x19ab('0x3b')](_0x19ab('0x3c'))){_0x38c1de[_0x19ab('0x22')]=qs['limit'](_0x2b7107[_0x19ab('0x34')][_0x19ab('0x22')]);_0x38c1de['offset']=qs['offset'](_0x2b7107[_0x19ab('0x34')]['offset']);}_0x38c1de[_0x19ab('0x3d')]=qs['sort'](_0x2b7107[_0x19ab('0x34')]['sort']);_0x38c1de[_0x19ab('0x3e')]=qs[_0x19ab('0x36')](_['pick'](_0x2b7107[_0x19ab('0x34')],_0x3e9943[_0x19ab('0x36')]),_0x2c6c20);if(_0x2b7107[_0x19ab('0x34')][_0x19ab('0x3f')]){_0x38c1de['where']=_[_0x19ab('0x40')](_0x38c1de[_0x19ab('0x3e')],{'$or':_['map'](_0x2c6c20,function(_0x4cf3d3){if(_0x4cf3d3[_0x19ab('0x31')]!==_0x19ab('0x41')){var _0x16f3d6={};_0x16f3d6[_0x4cf3d3[_0x19ab('0x2b')]]={'$like':'%'+_0x2b7107[_0x19ab('0x34')][_0x19ab('0x3f')]+'%'};return _0x16f3d6;}})});}_0x38c1de=_['merge']({},_0x38c1de,_0x2b7107[_0x19ab('0x42')]);var _0x49eac9={'where':_0x38c1de[_0x19ab('0x3e')]};return db[_0x19ab('0x43')][_0x19ab('0x23')](_0x49eac9)[_0x19ab('0x28')](function(_0x50abab){_0x518200[_0x19ab('0x23')]=_0x50abab;if(_0x2b7107[_0x19ab('0x34')][_0x19ab('0x44')]){_0x38c1de[_0x19ab('0x45')]=[{'all':!![]}];}return db['ChatGroup'][_0x19ab('0x46')](_0x38c1de);})['then'](function(_0x451aef){_0x518200['rows']=_0x451aef;return _0x518200;})[_0x19ab('0x28')](respondWithFilteredResult(_0x1610e5,_0x38c1de))[_0x19ab('0x47')](handleError(_0x1610e5,null));};exports[_0x19ab('0x48')]=function(_0x2cf924,_0x1f98bc){var _0x279362={'raw':!![],'where':{'id':_0x2cf924['params']['id']}},_0x30c6a2={};_0x30c6a2[_0x19ab('0x33')]=_[_0x19ab('0x35')](db[_0x19ab('0x43')][_0x19ab('0x2f')]);_0x30c6a2[_0x19ab('0x34')]=_[_0x19ab('0x35')](_0x2cf924[_0x19ab('0x34')]);_0x30c6a2[_0x19ab('0x36')]=_[_0x19ab('0x38')](_0x30c6a2[_0x19ab('0x33')],_0x30c6a2['query']);_0x279362[_0x19ab('0x37')]=_[_0x19ab('0x38')](_0x30c6a2[_0x19ab('0x33')],qs['fields'](_0x2cf924[_0x19ab('0x34')][_0x19ab('0x39')]));_0x279362[_0x19ab('0x37')]=_0x279362[_0x19ab('0x37')][_0x19ab('0x3a')]?_0x279362[_0x19ab('0x37')]:_0x30c6a2['model'];if(_0x2cf924[_0x19ab('0x34')][_0x19ab('0x44')]){_0x279362[_0x19ab('0x45')]=[{'all':!![]}];}_0x279362=_[_0x19ab('0x40')]({},_0x279362,_0x2cf924[_0x19ab('0x42')]);return db[_0x19ab('0x43')][_0x19ab('0x49')](_0x279362)['then'](handleEntityNotFound(_0x1f98bc,null))['then'](respondWithResult(_0x1f98bc,null))[_0x19ab('0x47')](handleError(_0x1f98bc,null));};exports[_0x19ab('0x4a')]=function(_0x132183,_0x407558){return db[_0x19ab('0x43')][_0x19ab('0x4a')](_0x132183[_0x19ab('0x4b')],{})[_0x19ab('0x28')](respondWithResult(_0x407558,0xc9))[_0x19ab('0x47')](handleError(_0x407558,null));};exports['update']=function(_0x348160,_0x48b8d5){if(_0x348160[_0x19ab('0x4b')]['id']){delete _0x348160[_0x19ab('0x4b')]['id'];}return db[_0x19ab('0x43')][_0x19ab('0x49')]({'where':{'id':_0x348160[_0x19ab('0x4c')]['id']}})[_0x19ab('0x28')](handleEntityNotFound(_0x48b8d5,null))[_0x19ab('0x28')](saveUpdates(_0x348160[_0x19ab('0x4b')],null))[_0x19ab('0x28')](respondWithResult(_0x48b8d5,null))[_0x19ab('0x47')](handleError(_0x48b8d5,null));};exports[_0x19ab('0x29')]=function(_0x2bce9a,_0x17d841){return db['ChatGroup']['find']({'where':{'id':_0x2bce9a[_0x19ab('0x4c')]['id']}})[_0x19ab('0x28')](handleEntityNotFound(_0x17d841,null))[_0x19ab('0x28')](removeEntity(_0x17d841,null))[_0x19ab('0x47')](handleError(_0x17d841,null));};exports[_0x19ab('0x4d')]=function(_0x1e6d95,_0x548203){return db[_0x19ab('0x43')][_0x19ab('0x4d')]()[_0x19ab('0x28')](respondWithResult(_0x548203,null))['catch'](handleError(_0x548203,null));};exports[_0x19ab('0x4e')]=function(_0x505c44,_0x1d6120,_0x562200){return db[_0x19ab('0x4f')][_0x19ab('0x23')]({'where':{'ChatGroupId':_0x505c44[_0x19ab('0x4c')]['id'],'ToId':_0x505c44[_0x19ab('0x50')]['id'],'read':![]}})[_0x19ab('0x28')](function(_0x5dda7a){return{'id':_[_0x19ab('0x51')](_0x505c44[_0x19ab('0x4c')]['id']),'count':_0x5dda7a};})['then'](respondWithResult(_0x1d6120,null))['catch'](handleError(_0x1d6120,null));};exports[_0x19ab('0x52')]=function(_0x213e34,_0x15be80,_0x2ec8a8){return db['ChatGroup'][_0x19ab('0x49')]({'where':{'id':_0x213e34['params']['id']}})[_0x19ab('0x28')](handleEntityNotFound(_0x15be80,null))[_0x19ab('0x28')](function(_0x297070){if(_0x297070){return _0x297070['addMembers'](_0x213e34[_0x19ab('0x4b')][_0x19ab('0x53')],_[_0x19ab('0x54')](_0x213e34[_0x19ab('0x4b')],['ids','id'])||{});}})[_0x19ab('0x28')](respondWithResult(_0x15be80,null))[_0x19ab('0x47')](handleError(_0x15be80,null));};exports[_0x19ab('0x55')]=function(_0x3c5e4b,_0xc2af2d,_0xed882a){var _0x30b679={};var _0x15278e={};var _0x222e2f;var _0x48bd32;return db[_0x19ab('0x43')][_0x19ab('0x56')]({'where':{'id':_0x3c5e4b[_0x19ab('0x4c')]['id']}})[_0x19ab('0x28')](handleEntityNotFound(_0xc2af2d,null))[_0x19ab('0x28')](function(_0x15e396){if(_0x15e396){_0x222e2f=_0x15e396;_0x15278e[_0x19ab('0x33')]=_[_0x19ab('0x35')](db['User'][_0x19ab('0x2f')]);_0x15278e[_0x19ab('0x34')]=_[_0x19ab('0x35')](_0x3c5e4b[_0x19ab('0x34')]);_0x15278e['filters']=_[_0x19ab('0x38')](_0x15278e[_0x19ab('0x33')],_0x15278e[_0x19ab('0x34')]);_0x30b679[_0x19ab('0x37')]=_[_0x19ab('0x38')](_0x15278e['model'],qs[_0x19ab('0x39')](_0x3c5e4b[_0x19ab('0x34')][_0x19ab('0x39')]));_0x30b679[_0x19ab('0x37')]=_0x30b679['attributes']['length']?_0x30b679[_0x19ab('0x37')]:_0x15278e['model'];_0x30b679[_0x19ab('0x3d')]=qs[_0x19ab('0x57')](_0x3c5e4b[_0x19ab('0x34')][_0x19ab('0x57')]);_0x30b679['where']=qs['filters'](_['pick'](_0x3c5e4b['query'],_0x15278e[_0x19ab('0x36')]));if(_0x3c5e4b['query'][_0x19ab('0x3f')]){_0x30b679[_0x19ab('0x3e')]=_[_0x19ab('0x40')](_0x30b679['where'],{'$or':_[_0x19ab('0x2e')](_0x30b679['attributes'],function(_0x3b06ee){var _0xc513ef={};_0xc513ef[_0x3b06ee]={'$like':'%'+_0x3c5e4b[_0x19ab('0x34')][_0x19ab('0x3f')]+'%'};return _0xc513ef;})});}_0x30b679=_[_0x19ab('0x40')]({},_0x30b679,_0x3c5e4b['options']);return _0x222e2f['getMembers'](_0x30b679);}})[_0x19ab('0x28')](function(_0x4cfeea){if(_0x4cfeea){_0x48bd32=_0x4cfeea['length'];if(!_0x3c5e4b[_0x19ab('0x34')][_0x19ab('0x3b')]('nolimit')){_0x30b679[_0x19ab('0x22')]=qs[_0x19ab('0x22')](_0x3c5e4b[_0x19ab('0x34')][_0x19ab('0x22')]);_0x30b679['offset']=qs[_0x19ab('0x24')](_0x3c5e4b[_0x19ab('0x34')][_0x19ab('0x24')]);}return _0x222e2f[_0x19ab('0x55')](_0x30b679);}})['then'](function(_0x5ab415){if(_0x5ab415){return _0x5ab415?{'count':_0x48bd32,'rows':_0x5ab415}:null;}})[_0x19ab('0x28')](respondWithResult(_0xc2af2d,null))[_0x19ab('0x47')](handleError(_0xc2af2d,null));};exports[_0x19ab('0x58')]=function(_0x402f6a,_0x230e7f,_0xc9e7ec){return db[_0x19ab('0x43')][_0x19ab('0x49')]({'where':{'id':_0x402f6a[_0x19ab('0x4c')]['id']}})[_0x19ab('0x28')](handleEntityNotFound(_0x230e7f,null))['then'](function(_0xf72693){if(_0xf72693){return _0xf72693[_0x19ab('0x58')](_0x402f6a[_0x19ab('0x34')][_0x19ab('0x53')]);}})[_0x19ab('0x28')](respondWithStatusCode(_0x230e7f,null))[_0x19ab('0x47')](handleError(_0x230e7f,null));};exports[_0x19ab('0x59')]=function(_0x21c2c9,_0x193df6,_0x5a589c){if(_0x21c2c9['body']['id']){delete _0x21c2c9[_0x19ab('0x4b')]['id'];}return db['ChatGroup']['find']({'where':{'id':_0x21c2c9[_0x19ab('0x4c')]['id']}})[_0x19ab('0x28')](handleEntityNotFound(_0x193df6,null))[_0x19ab('0x28')](function(_0x117a45){if(_0x117a45){_0x21c2c9[_0x19ab('0x4b')][_0x19ab('0x5a')]=_0x117a45['id'];return db['ChatInternalMessage'][_0x19ab('0x4a')](_0x21c2c9[_0x19ab('0x4b')]);}})['then'](respondWithResult(_0x193df6,null))['catch'](handleError(_0x193df6,null));};exports[_0x19ab('0x5b')]=function(_0xf9a023,_0x59b9a3,_0x12794c){var _0x228ae1={};var _0x446a54={};var _0x15a003;var _0x12626f;return db[_0x19ab('0x43')][_0x19ab('0x56')]({'where':{'id':_0xf9a023[_0x19ab('0x4c')]['id']}})[_0x19ab('0x28')](handleEntityNotFound(_0x59b9a3,null))[_0x19ab('0x28')](function(_0x887e33){if(_0x887e33){_0x15a003=_0x887e33;_0x446a54[_0x19ab('0x33')]=_[_0x19ab('0x35')](db[_0x19ab('0x4f')][_0x19ab('0x2f')]);_0x446a54[_0x19ab('0x34')]=_[_0x19ab('0x35')](_0xf9a023['query']);_0x446a54['filters']=_[_0x19ab('0x38')](_0x446a54['model'],_0x446a54[_0x19ab('0x34')]);_0x228ae1[_0x19ab('0x37')]=_[_0x19ab('0x38')](_0x446a54[_0x19ab('0x33')],qs['fields'](_0xf9a023[_0x19ab('0x34')][_0x19ab('0x39')]));_0x228ae1[_0x19ab('0x37')]=_0x228ae1['attributes'][_0x19ab('0x3a')]?_0x228ae1['attributes']:_0x446a54['model'];_0x228ae1[_0x19ab('0x3d')]=qs[_0x19ab('0x57')](_0xf9a023[_0x19ab('0x34')][_0x19ab('0x57')]);_0x228ae1['where']=qs[_0x19ab('0x36')](_[_0x19ab('0x5c')](_0xf9a023[_0x19ab('0x34')],_0x446a54[_0x19ab('0x36')]));if(_0xf9a023[_0x19ab('0x34')]['filter']){_0x228ae1[_0x19ab('0x3e')]=_[_0x19ab('0x40')](_0x228ae1[_0x19ab('0x3e')],{'$or':_['map'](_0x228ae1[_0x19ab('0x37')],function(_0xe3f431){var _0x4742cc={};_0x4742cc[_0xe3f431]={'$like':'%'+_0xf9a023[_0x19ab('0x34')]['filter']+'%'};return _0x4742cc;})});}if(_0xf9a023[_0x19ab('0x34')][_0x19ab('0x5d')]){var _0x361aff=_0xf9a023['query'][_0x19ab('0x5d')][_0x19ab('0x5e')](',');var _0x3c1a86={};_0x3c1a86[_0x361aff[0x0]]={'$gte':moment(_0x361aff[0x1])[_0x19ab('0x5f')](_0x19ab('0x60'))};_0x228ae1['where']=_[_0x19ab('0x40')](_0x228ae1[_0x19ab('0x3e')],_0x3c1a86);}_0x228ae1=_[_0x19ab('0x40')]({},_0x228ae1,_0xf9a023[_0x19ab('0x42')]);return _0x15a003[_0x19ab('0x5b')](_0x228ae1);}})['then'](function(_0x388ad6){if(_0x388ad6){_0x12626f=_0x388ad6['length'];if(!_0xf9a023[_0x19ab('0x34')][_0x19ab('0x3b')]('nolimit')){_0x228ae1[_0x19ab('0x22')]=qs[_0x19ab('0x22')](_0xf9a023[_0x19ab('0x34')][_0x19ab('0x22')]);_0x228ae1[_0x19ab('0x24')]=qs[_0x19ab('0x24')](_0xf9a023[_0x19ab('0x34')][_0x19ab('0x24')]);}return _0x15a003[_0x19ab('0x5b')](_0x228ae1);}})[_0x19ab('0x28')](function(_0x1278ad){if(_0x1278ad){return _0x1278ad?{'count':_0x12626f,'rows':_0x1278ad}:null;}})[_0x19ab('0x28')](respondWithResult(_0x59b9a3,null))[_0x19ab('0x47')](handleError(_0x59b9a3,null));};
\ No newline at end of file
+var _0x00de=['fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','rows','params','find','catch','create','body','update','describe','getUnread','ChatInternalMessage','user','addMembers','ids','omit','getMembers','findOne','User','removeMembers','addMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','name','send','map','ChatGroup','rawAttributes','type','model','query','keys','intersection'];(function(_0x587aed,_0x5bd4a0){var _0x7e6bc4=function(_0x2e69d8){while(--_0x2e69d8){_0x587aed['push'](_0x587aed['shift']());}};_0x7e6bc4(++_0x5bd4a0);}(_0x00de,0x13b));var _0xe00d=function(_0x34a8c8,_0x31e259){_0x34a8c8=_0x34a8c8-0x0;var _0x1fe6e5=_0x00de[_0x34a8c8];return _0x1fe6e5;};'use strict';var emlformat=require(_0xe00d('0x0'));var rimraf=require(_0xe00d('0x1'));var zipdir=require(_0xe00d('0x2'));var jsonpatch=require(_0xe00d('0x3'));var rp=require(_0xe00d('0x4'));var moment=require(_0xe00d('0x5'));var BPromise=require(_0xe00d('0x6'));var Mustache=require('mustache');var util=require(_0xe00d('0x7'));var path=require(_0xe00d('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe00d('0x9'));var fs=require('fs');var fs_extra=require(_0xe00d('0xa'));var _=require('lodash');var squel=require(_0xe00d('0xb'));var crypto=require(_0xe00d('0xc'));var jsforce=require(_0xe00d('0xd'));var deskjs=require(_0xe00d('0xe'));var toCsv=require(_0xe00d('0xf'));var querystring=require(_0xe00d('0x10'));var Papa=require('papaparse');var Redis=require(_0xe00d('0x11'));var authService=require(_0xe00d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe00d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe00d('0x14'));var utils=require(_0xe00d('0x15'));var config=require(_0xe00d('0x16'));var licenseUtil=require(_0xe00d('0x17'));var db=require('../../mysqldb')['db'];config[_0xe00d('0x18')]=_['defaults'](config[_0xe00d('0x18')],{'host':_0xe00d('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe00d('0x18')]));require('./chatGroup.socket')[_0xe00d('0x1a')](socket);function respondWithStatusCode(_0x565aa0,_0x5b96d3){_0x5b96d3=_0x5b96d3||0xcc;return function(_0x50cf50){if(_0x50cf50){return _0x565aa0[_0xe00d('0x1b')](_0x5b96d3);}return _0x565aa0[_0xe00d('0x1c')](_0x5b96d3)[_0xe00d('0x1d')]();};}function respondWithResult(_0x3b3e56,_0x31677f){_0x31677f=_0x31677f||0xc8;return function(_0x451702){if(_0x451702){return _0x3b3e56[_0xe00d('0x1c')](_0x31677f)[_0xe00d('0x1e')](_0x451702);}};}function respondWithFilteredResult(_0x178091,_0x19e894){return function(_0x2d6e94){if(_0x2d6e94){var _0x4ea8cb=typeof _0x19e894[_0xe00d('0x1f')]===_0xe00d('0x20')&&typeof _0x19e894[_0xe00d('0x21')]===_0xe00d('0x20');var _0x1ae3d=_0x2d6e94[_0xe00d('0x22')];var _0x2c2b8f=_0x4ea8cb?0x0:_0x19e894[_0xe00d('0x1f')];var _0x10b96=_0x4ea8cb?_0x2d6e94[_0xe00d('0x22')]:_0x19e894[_0xe00d('0x1f')]+_0x19e894['limit'];var _0x5b17fa;if(_0x10b96>=_0x1ae3d){_0x10b96=_0x1ae3d;_0x5b17fa=0xc8;}else{_0x5b17fa=0xce;}_0x178091[_0xe00d('0x1c')](_0x5b17fa);return _0x178091[_0xe00d('0x23')](_0xe00d('0x24'),_0x2c2b8f+'-'+_0x10b96+'/'+_0x1ae3d)[_0xe00d('0x1e')](_0x2d6e94);}return null;};}function patchUpdates(_0x5d2094){return function(_0x4e5808){try{jsonpatch[_0xe00d('0x25')](_0x4e5808,_0x5d2094,!![]);}catch(_0x385e4b){return BPromise[_0xe00d('0x26')](_0x385e4b);}return _0x4e5808[_0xe00d('0x27')]();};}function saveUpdates(_0xa71679,_0x3e27f0){return function(_0x127b62){if(_0x127b62){return _0x127b62['update'](_0xa71679)['then'](function(_0x3ecf17){return _0x3ecf17;});}return null;};}function removeEntity(_0x4db446,_0x190216){return function(_0x217703){if(_0x217703){return _0x217703[_0xe00d('0x28')]()[_0xe00d('0x29')](function(){_0x4db446[_0xe00d('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x430fa4,_0x21ca82){return function(_0x3cfab0){if(!_0x3cfab0){_0x430fa4[_0xe00d('0x1b')](0x194);}return _0x3cfab0;};}function handleError(_0x4e8f71,_0x5d3b13){_0x5d3b13=_0x5d3b13||0x1f4;return function(_0x2cf699){logger[_0xe00d('0x2a')](_0x2cf699['stack']);if(_0x2cf699[_0xe00d('0x2b')]){delete _0x2cf699[_0xe00d('0x2b')];}_0x4e8f71[_0xe00d('0x1c')](_0x5d3b13)[_0xe00d('0x2c')](_0x2cf699);};}exports['index']=function(_0x52a274,_0x201725){var _0x1aba1f={},_0x157d2a={},_0x38730f={'count':0x0,'rows':[]};var _0xe7783=_[_0xe00d('0x2d')](db[_0xe00d('0x2e')][_0xe00d('0x2f')],function(_0x70d1b6){return{'name':_0x70d1b6['fieldName'],'type':_0x70d1b6[_0xe00d('0x30')]['key']};});_0x157d2a[_0xe00d('0x31')]=_[_0xe00d('0x2d')](_0xe7783,_0xe00d('0x2b'));_0x157d2a[_0xe00d('0x32')]=_[_0xe00d('0x33')](_0x52a274[_0xe00d('0x32')]);_0x157d2a['filters']=_['intersection'](_0x157d2a[_0xe00d('0x31')],_0x157d2a[_0xe00d('0x32')]);_0x1aba1f['attributes']=_[_0xe00d('0x34')](_0x157d2a[_0xe00d('0x31')],qs[_0xe00d('0x35')](_0x52a274[_0xe00d('0x32')][_0xe00d('0x35')]));_0x1aba1f[_0xe00d('0x36')]=_0x1aba1f[_0xe00d('0x36')][_0xe00d('0x37')]?_0x1aba1f[_0xe00d('0x36')]:_0x157d2a[_0xe00d('0x31')];if(!_0x52a274['query'][_0xe00d('0x38')](_0xe00d('0x39'))){_0x1aba1f['limit']=qs[_0xe00d('0x21')](_0x52a274[_0xe00d('0x32')]['limit']);_0x1aba1f['offset']=qs[_0xe00d('0x1f')](_0x52a274[_0xe00d('0x32')][_0xe00d('0x1f')]);}_0x1aba1f[_0xe00d('0x3a')]=qs[_0xe00d('0x3b')](_0x52a274[_0xe00d('0x32')][_0xe00d('0x3b')]);_0x1aba1f[_0xe00d('0x3c')]=qs[_0xe00d('0x3d')](_[_0xe00d('0x3e')](_0x52a274['query'],_0x157d2a[_0xe00d('0x3d')]),_0xe7783);if(_0x52a274[_0xe00d('0x32')][_0xe00d('0x3f')]){_0x1aba1f[_0xe00d('0x3c')]=_[_0xe00d('0x40')](_0x1aba1f[_0xe00d('0x3c')],{'$or':_[_0xe00d('0x2d')](_0xe7783,function(_0x290bec){if(_0x290bec[_0xe00d('0x30')]!=='VIRTUAL'){var _0x47207b={};_0x47207b[_0x290bec[_0xe00d('0x2b')]]={'$like':'%'+_0x52a274['query'][_0xe00d('0x3f')]+'%'};return _0x47207b;}})});}_0x1aba1f=_['merge']({},_0x1aba1f,_0x52a274[_0xe00d('0x41')]);var _0x82c302={'where':_0x1aba1f['where']};return db['ChatGroup']['count'](_0x82c302)['then'](function(_0x9557af){_0x38730f[_0xe00d('0x22')]=_0x9557af;if(_0x52a274[_0xe00d('0x32')][_0xe00d('0x42')]){_0x1aba1f[_0xe00d('0x43')]=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0x1aba1f);})['then'](function(_0x3df7cc){_0x38730f[_0xe00d('0x44')]=_0x3df7cc;return _0x38730f;})[_0xe00d('0x29')](respondWithFilteredResult(_0x201725,_0x1aba1f))['catch'](handleError(_0x201725,null));};exports['show']=function(_0x495e16,_0x5e0e55){var _0x151867={'raw':!![],'where':{'id':_0x495e16[_0xe00d('0x45')]['id']}},_0x5eb076={};_0x5eb076[_0xe00d('0x31')]=_['keys'](db[_0xe00d('0x2e')][_0xe00d('0x2f')]);_0x5eb076[_0xe00d('0x32')]=_[_0xe00d('0x33')](_0x495e16[_0xe00d('0x32')]);_0x5eb076[_0xe00d('0x3d')]=_[_0xe00d('0x34')](_0x5eb076[_0xe00d('0x31')],_0x5eb076[_0xe00d('0x32')]);_0x151867[_0xe00d('0x36')]=_['intersection'](_0x5eb076[_0xe00d('0x31')],qs[_0xe00d('0x35')](_0x495e16[_0xe00d('0x32')]['fields']));_0x151867[_0xe00d('0x36')]=_0x151867[_0xe00d('0x36')][_0xe00d('0x37')]?_0x151867['attributes']:_0x5eb076[_0xe00d('0x31')];if(_0x495e16['query']['includeAll']){_0x151867[_0xe00d('0x43')]=[{'all':!![]}];}_0x151867=_[_0xe00d('0x40')]({},_0x151867,_0x495e16[_0xe00d('0x41')]);return db['ChatGroup'][_0xe00d('0x46')](_0x151867)[_0xe00d('0x29')](handleEntityNotFound(_0x5e0e55,null))[_0xe00d('0x29')](respondWithResult(_0x5e0e55,null))[_0xe00d('0x47')](handleError(_0x5e0e55,null));};exports[_0xe00d('0x48')]=function(_0x2bdd8b,_0xc8ba59){return db[_0xe00d('0x2e')]['create'](_0x2bdd8b[_0xe00d('0x49')],{})[_0xe00d('0x29')](respondWithResult(_0xc8ba59,0xc9))['catch'](handleError(_0xc8ba59,null));};exports[_0xe00d('0x4a')]=function(_0x1446f4,_0x3eb2a9){if(_0x1446f4[_0xe00d('0x49')]['id']){delete _0x1446f4[_0xe00d('0x49')]['id'];}return db[_0xe00d('0x2e')][_0xe00d('0x46')]({'where':{'id':_0x1446f4[_0xe00d('0x45')]['id']}})[_0xe00d('0x29')](handleEntityNotFound(_0x3eb2a9,null))['then'](saveUpdates(_0x1446f4[_0xe00d('0x49')],null))[_0xe00d('0x29')](respondWithResult(_0x3eb2a9,null))['catch'](handleError(_0x3eb2a9,null));};exports[_0xe00d('0x28')]=function(_0x12eca0,_0x1eaa93){return db[_0xe00d('0x2e')][_0xe00d('0x46')]({'where':{'id':_0x12eca0[_0xe00d('0x45')]['id']}})[_0xe00d('0x29')](handleEntityNotFound(_0x1eaa93,null))[_0xe00d('0x29')](removeEntity(_0x1eaa93,null))[_0xe00d('0x47')](handleError(_0x1eaa93,null));};exports[_0xe00d('0x4b')]=function(_0xe1918a,_0x383a5f){return db[_0xe00d('0x2e')]['describe']()[_0xe00d('0x29')](respondWithResult(_0x383a5f,null))[_0xe00d('0x47')](handleError(_0x383a5f,null));};exports[_0xe00d('0x4c')]=function(_0x34d99b,_0x5f46b3,_0x4d00de){return db[_0xe00d('0x4d')][_0xe00d('0x22')]({'where':{'ChatGroupId':_0x34d99b[_0xe00d('0x45')]['id'],'ToId':_0x34d99b[_0xe00d('0x4e')]['id'],'read':![]}})[_0xe00d('0x29')](function(_0xc4befd){return{'id':_['toInteger'](_0x34d99b[_0xe00d('0x45')]['id']),'count':_0xc4befd};})[_0xe00d('0x29')](respondWithResult(_0x5f46b3,null))[_0xe00d('0x47')](handleError(_0x5f46b3,null));};exports[_0xe00d('0x4f')]=function(_0x4300c7,_0xdf5dcf,_0xb86c66){return db[_0xe00d('0x2e')][_0xe00d('0x46')]({'where':{'id':_0x4300c7[_0xe00d('0x45')]['id']}})[_0xe00d('0x29')](handleEntityNotFound(_0xdf5dcf,null))[_0xe00d('0x29')](function(_0x28213f){if(_0x28213f){return _0x28213f[_0xe00d('0x4f')](_0x4300c7[_0xe00d('0x49')][_0xe00d('0x50')],_[_0xe00d('0x51')](_0x4300c7['body'],[_0xe00d('0x50'),'id'])||{});}})[_0xe00d('0x29')](respondWithResult(_0xdf5dcf,null))[_0xe00d('0x47')](handleError(_0xdf5dcf,null));};exports[_0xe00d('0x52')]=function(_0x14229f,_0x315c16,_0x52a432){var _0xb426e5={};var _0x2bd4ca={};var _0xbe6372;var _0x33c6e4;return db[_0xe00d('0x2e')][_0xe00d('0x53')]({'where':{'id':_0x14229f['params']['id']}})[_0xe00d('0x29')](handleEntityNotFound(_0x315c16,null))[_0xe00d('0x29')](function(_0x5491f1){if(_0x5491f1){_0xbe6372=_0x5491f1;_0x2bd4ca[_0xe00d('0x31')]=_[_0xe00d('0x33')](db[_0xe00d('0x54')]['rawAttributes']);_0x2bd4ca['query']=_['keys'](_0x14229f['query']);_0x2bd4ca['filters']=_[_0xe00d('0x34')](_0x2bd4ca[_0xe00d('0x31')],_0x2bd4ca[_0xe00d('0x32')]);_0xb426e5['attributes']=_[_0xe00d('0x34')](_0x2bd4ca[_0xe00d('0x31')],qs[_0xe00d('0x35')](_0x14229f[_0xe00d('0x32')][_0xe00d('0x35')]));_0xb426e5[_0xe00d('0x36')]=_0xb426e5[_0xe00d('0x36')]['length']?_0xb426e5[_0xe00d('0x36')]:_0x2bd4ca[_0xe00d('0x31')];_0xb426e5[_0xe00d('0x3a')]=qs['sort'](_0x14229f[_0xe00d('0x32')][_0xe00d('0x3b')]);_0xb426e5[_0xe00d('0x3c')]=qs['filters'](_['pick'](_0x14229f[_0xe00d('0x32')],_0x2bd4ca[_0xe00d('0x3d')]));if(_0x14229f['query']['filter']){_0xb426e5[_0xe00d('0x3c')]=_[_0xe00d('0x40')](_0xb426e5['where'],{'$or':_[_0xe00d('0x2d')](_0xb426e5['attributes'],function(_0x2c68e5){var _0x470895={};_0x470895[_0x2c68e5]={'$like':'%'+_0x14229f[_0xe00d('0x32')]['filter']+'%'};return _0x470895;})});}_0xb426e5=_[_0xe00d('0x40')]({},_0xb426e5,_0x14229f['options']);return _0xbe6372[_0xe00d('0x52')](_0xb426e5);}})[_0xe00d('0x29')](function(_0x5a7bfa){if(_0x5a7bfa){_0x33c6e4=_0x5a7bfa['length'];if(!_0x14229f['query']['hasOwnProperty'](_0xe00d('0x39'))){_0xb426e5['limit']=qs[_0xe00d('0x21')](_0x14229f[_0xe00d('0x32')][_0xe00d('0x21')]);_0xb426e5['offset']=qs[_0xe00d('0x1f')](_0x14229f[_0xe00d('0x32')][_0xe00d('0x1f')]);}return _0xbe6372[_0xe00d('0x52')](_0xb426e5);}})[_0xe00d('0x29')](function(_0x432ccb){if(_0x432ccb){return _0x432ccb?{'count':_0x33c6e4,'rows':_0x432ccb}:null;}})[_0xe00d('0x29')](respondWithResult(_0x315c16,null))[_0xe00d('0x47')](handleError(_0x315c16,null));};exports[_0xe00d('0x55')]=function(_0x277be3,_0x33df73,_0x59013b){return db[_0xe00d('0x2e')]['find']({'where':{'id':_0x277be3[_0xe00d('0x45')]['id']}})['then'](handleEntityNotFound(_0x33df73,null))['then'](function(_0xb1b988){if(_0xb1b988){return _0xb1b988['removeMembers'](_0x277be3[_0xe00d('0x32')][_0xe00d('0x50')]);}})[_0xe00d('0x29')](respondWithStatusCode(_0x33df73,null))[_0xe00d('0x47')](handleError(_0x33df73,null));};exports[_0xe00d('0x56')]=function(_0x29a384,_0x5df15,_0x9af9d2){if(_0x29a384[_0xe00d('0x49')]['id']){delete _0x29a384[_0xe00d('0x49')]['id'];}return db[_0xe00d('0x2e')][_0xe00d('0x46')]({'where':{'id':_0x29a384[_0xe00d('0x45')]['id']}})[_0xe00d('0x29')](handleEntityNotFound(_0x5df15,null))[_0xe00d('0x29')](function(_0x307264){if(_0x307264){_0x29a384['body']['ChatGroupId']=_0x307264['id'];return db['ChatInternalMessage']['create'](_0x29a384[_0xe00d('0x49')]);}})[_0xe00d('0x29')](respondWithResult(_0x5df15,null))[_0xe00d('0x47')](handleError(_0x5df15,null));};exports[_0xe00d('0x57')]=function(_0x388ad2,_0x45372d,_0x2eab0e){var _0x3f9704={};var _0x5084f1={};var _0x36aeeb;var _0x314380;return db[_0xe00d('0x2e')][_0xe00d('0x53')]({'where':{'id':_0x388ad2[_0xe00d('0x45')]['id']}})[_0xe00d('0x29')](handleEntityNotFound(_0x45372d,null))['then'](function(_0x5b57fe){if(_0x5b57fe){_0x36aeeb=_0x5b57fe;_0x5084f1[_0xe00d('0x31')]=_[_0xe00d('0x33')](db[_0xe00d('0x4d')][_0xe00d('0x2f')]);_0x5084f1[_0xe00d('0x32')]=_['keys'](_0x388ad2[_0xe00d('0x32')]);_0x5084f1[_0xe00d('0x3d')]=_[_0xe00d('0x34')](_0x5084f1['model'],_0x5084f1[_0xe00d('0x32')]);_0x3f9704[_0xe00d('0x36')]=_['intersection'](_0x5084f1[_0xe00d('0x31')],qs[_0xe00d('0x35')](_0x388ad2[_0xe00d('0x32')]['fields']));_0x3f9704[_0xe00d('0x36')]=_0x3f9704[_0xe00d('0x36')][_0xe00d('0x37')]?_0x3f9704[_0xe00d('0x36')]:_0x5084f1[_0xe00d('0x31')];_0x3f9704['order']=qs['sort'](_0x388ad2[_0xe00d('0x32')][_0xe00d('0x3b')]);_0x3f9704[_0xe00d('0x3c')]=qs[_0xe00d('0x3d')](_[_0xe00d('0x3e')](_0x388ad2[_0xe00d('0x32')],_0x5084f1[_0xe00d('0x3d')]));if(_0x388ad2[_0xe00d('0x32')][_0xe00d('0x3f')]){_0x3f9704[_0xe00d('0x3c')]=_['merge'](_0x3f9704[_0xe00d('0x3c')],{'$or':_[_0xe00d('0x2d')](_0x3f9704['attributes'],function(_0x1f5958){var _0x5353a9={};_0x5353a9[_0x1f5958]={'$like':'%'+_0x388ad2[_0xe00d('0x32')][_0xe00d('0x3f')]+'%'};return _0x5353a9;})});}if(_0x388ad2['query'][_0xe00d('0x58')]){var _0x36a779=_0x388ad2[_0xe00d('0x32')][_0xe00d('0x58')][_0xe00d('0x59')](',');var _0x5320e6={};_0x5320e6[_0x36a779[0x0]]={'$gte':moment(_0x36a779[0x1])[_0xe00d('0x5a')](_0xe00d('0x5b'))};_0x3f9704['where']=_[_0xe00d('0x40')](_0x3f9704['where'],_0x5320e6);}_0x3f9704=_[_0xe00d('0x40')]({},_0x3f9704,_0x388ad2[_0xe00d('0x41')]);return _0x36aeeb[_0xe00d('0x57')](_0x3f9704);}})[_0xe00d('0x29')](function(_0x519420){if(_0x519420){_0x314380=_0x519420[_0xe00d('0x37')];if(!_0x388ad2[_0xe00d('0x32')][_0xe00d('0x38')](_0xe00d('0x39'))){_0x3f9704['limit']=qs[_0xe00d('0x21')](_0x388ad2[_0xe00d('0x32')][_0xe00d('0x21')]);_0x3f9704['offset']=qs[_0xe00d('0x1f')](_0x388ad2[_0xe00d('0x32')]['offset']);}return _0x36aeeb[_0xe00d('0x57')](_0x3f9704);}})['then'](function(_0x4990d1){if(_0x4990d1){return _0x4990d1?{'count':_0x314380,'rows':_0x4990d1}:null;}})[_0xe00d('0x29')](respondWithResult(_0x45372d,null))[_0xe00d('0x47')](handleError(_0x45372d,null));};
\ No newline at end of file
index 9e5475d..633571e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ebf=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x7ebf,0x153));var _0xf7eb=function(_0x2a058e,_0x500cfc){_0x2a058e=_0x2a058e-0x0;var _0x186f07=_0x7ebf[_0x2a058e];return _0x186f07;};'use strict';var EventEmitter=require(_0xf7eb('0x0'));var ChatGroup=require(_0xf7eb('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xf7eb('0x2')](0x0);var events={'afterCreate':_0xf7eb('0x3'),'afterUpdate':_0xf7eb('0x4'),'afterDestroy':_0xf7eb('0x5')};function emitEvent(_0x13e0ce){return function(_0x32a84b,_0x141527,_0x41b38b){ChatGroupEvents[_0xf7eb('0x6')](_0x13e0ce+':'+_0x32a84b['id'],_0x32a84b);ChatGroupEvents['emit'](_0x13e0ce,_0x32a84b);_0x41b38b(null);};}for(var e in events){if(events[_0xf7eb('0x7')](e)){var event=events[e];ChatGroup[_0xf7eb('0x8')](e,emitEvent(event));}}module[_0xf7eb('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0xe9f2=['../../mysqldb','ChatGroup','save','update','remove','emit','hook','events'];(function(_0x23d9f2,_0x4a747f){var _0x4a2407=function(_0xaa84a2){while(--_0xaa84a2){_0x23d9f2['push'](_0x23d9f2['shift']());}};_0x4a2407(++_0x4a747f);}(_0xe9f2,0x10f));var _0x2e9f=function(_0xe4223b,_0x56065b){_0xe4223b=_0xe4223b-0x0;var _0x491655=_0xe9f2[_0xe4223b];return _0x491655;};'use strict';var EventEmitter=require(_0x2e9f('0x0'));var ChatGroup=require(_0x2e9f('0x1'))['db'][_0x2e9f('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2e9f('0x3'),'afterUpdate':_0x2e9f('0x4'),'afterDestroy':_0x2e9f('0x5')};function emitEvent(_0x426a95){return function(_0x522974,_0x296db1,_0x9a9b5e){ChatGroupEvents[_0x2e9f('0x6')](_0x426a95+':'+_0x522974['id'],_0x522974);ChatGroupEvents['emit'](_0x426a95,_0x522974);_0x9a9b5e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x2e9f('0x7')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index 548b1c3..2516579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca98=['./chatGroup.attributes','exports','define','ChatGroup','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment'];(function(_0x524473,_0x3e73c8){var _0xd64035=function(_0x418319){while(--_0x418319){_0x524473['push'](_0x524473['shift']());}};_0xd64035(++_0x3e73c8);}(_0xca98,0x16f));var _0x8ca9=function(_0x509c83,_0x511882){_0x509c83=_0x509c83-0x0;var _0x534626=_0xca98[_0x509c83];return _0x534626;};'use strict';var _=require(_0x8ca9('0x0'));var util=require(_0x8ca9('0x1'));var logger=require(_0x8ca9('0x2'))(_0x8ca9('0x3'));var moment=require(_0x8ca9('0x4'));var BPromise=require(_0x8ca9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8ca9('0x6'));var attributes=require(_0x8ca9('0x7'));module[_0x8ca9('0x8')]=function(_0x80f4ab,_0x263470){return _0x80f4ab[_0x8ca9('0x9')](_0x8ca9('0xa'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ba9=['request-promise','path','rimraf','exports','define','ChatGroup','lodash','util','../../config/logger','api','moment'];(function(_0x2c1cc7,_0x17218f){var _0x2d14e7=function(_0x20c8d8){while(--_0x20c8d8){_0x2c1cc7['push'](_0x2c1cc7['shift']());}};_0x2d14e7(++_0x17218f);}(_0x5ba9,0x1df));var _0x95ba=function(_0x37bd61,_0x2a6642){_0x37bd61=_0x37bd61-0x0;var _0x30a16d=_0x5ba9[_0x37bd61];return _0x30a16d;};'use strict';var _=require(_0x95ba('0x0'));var util=require(_0x95ba('0x1'));var logger=require(_0x95ba('0x2'))(_0x95ba('0x3'));var moment=require(_0x95ba('0x4'));var BPromise=require('bluebird');var rp=require(_0x95ba('0x5'));var fs=require('fs');var path=require(_0x95ba('0x6'));var rimraf=require(_0x95ba('0x7'));var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module[_0x95ba('0x8')]=function(_0x1e0f92,_0x3bf4d4){return _0x1e0f92[_0x95ba('0x9')](_0x95ba('0xa'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 49ff806..035922d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f7=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','request','then','info','ChatGroup,\x20%s,\x20%s','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','lodash'];(function(_0x4abbb7,_0x4cd94e){var _0x190f58=function(_0x468999){while(--_0x468999){_0x4abbb7['push'](_0x4abbb7['shift']());}};_0x190f58(++_0x4cd94e);}(_0xe8f7,0x137));var _0x7e8f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe8f7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7e8f('0x0'));var util=require('util');var moment=require(_0x7e8f('0x1'));var BPromise=require(_0x7e8f('0x2'));var rs=require(_0x7e8f('0x3'));var fs=require('fs');var Redis=require(_0x7e8f('0x4'));var db=require(_0x7e8f('0x5'))['db'];var utils=require(_0x7e8f('0x6'));var logger=require(_0x7e8f('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7e8f('0x8'));var client=jayson[_0x7e8f('0x9')]['http']({'port':0x232a});config[_0x7e8f('0xa')]=_[_0x7e8f('0xb')](config[_0x7e8f('0xa')],{'host':_0x7e8f('0xc'),'port':0x18eb});var socket=require(_0x7e8f('0xd'))(new Redis(config[_0x7e8f('0xa')]));require(_0x7e8f('0xe'))['register'](socket);function respondWithRpcPromise(_0x36be08,_0x43e13c,_0x47bbe2){return new BPromise(function(_0x61b3d1,_0xc078ba){return client[_0x7e8f('0xf')](_0x36be08,_0x47bbe2)[_0x7e8f('0x10')](function(_0x5da526){logger[_0x7e8f('0x11')](_0x7e8f('0x12'),_0x43e13c,'request\x20sent');logger[_0x7e8f('0x13')](_0x7e8f('0x14'),_0x43e13c,'request\x20sent',JSON['stringify'](_0x5da526));if(_0x5da526[_0x7e8f('0x15')]){if(_0x5da526[_0x7e8f('0x15')][_0x7e8f('0x16')]===0x1f4){logger[_0x7e8f('0x15')](_0x7e8f('0x12'),_0x43e13c,_0x5da526[_0x7e8f('0x15')][_0x7e8f('0x17')]);return _0xc078ba(_0x5da526[_0x7e8f('0x15')][_0x7e8f('0x17')]);}logger[_0x7e8f('0x15')](_0x7e8f('0x12'),_0x43e13c,_0x5da526[_0x7e8f('0x15')][_0x7e8f('0x17')]);return _0x61b3d1(_0x5da526[_0x7e8f('0x15')][_0x7e8f('0x17')]);}else{logger[_0x7e8f('0x11')]('ChatGroup,\x20%s,\x20%s',_0x43e13c,_0x7e8f('0x18'));_0x61b3d1(_0x5da526[_0x7e8f('0x19')][_0x7e8f('0x17')]);}})['catch'](function(_0x4223f0){logger[_0x7e8f('0x15')](_0x7e8f('0x12'),_0x43e13c,_0x4223f0);_0xc078ba(_0x4223f0);});});}
\ No newline at end of file
+var _0xe002=['localhost','socket.io-emitter','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x504215,_0x35b3d0){var _0x5da35b=function(_0x4a6b8d){while(--_0x4a6b8d){_0x504215['push'](_0x504215['shift']());}};_0x5da35b(++_0x35b3d0);}(_0xe002,0xf7));var _0x2e00=function(_0x3a607e,_0x54d530){_0x3a607e=_0x3a607e-0x0;var _0x37b106=_0xe002[_0x3a607e];return _0x37b106;};'use strict';var _=require(_0x2e00('0x0'));var util=require(_0x2e00('0x1'));var moment=require(_0x2e00('0x2'));var BPromise=require('bluebird');var rs=require(_0x2e00('0x3'));var fs=require('fs');var Redis=require(_0x2e00('0x4'));var db=require(_0x2e00('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2e00('0x6'))(_0x2e00('0x7'));var config=require(_0x2e00('0x8'));var jayson=require(_0x2e00('0x9'));var client=jayson[_0x2e00('0xa')][_0x2e00('0xb')]({'port':0x232a});config[_0x2e00('0xc')]=_[_0x2e00('0xd')](config['redis'],{'host':_0x2e00('0xe'),'port':0x18eb});var socket=require(_0x2e00('0xf'))(new Redis(config['redis']));require(_0x2e00('0x10'))[_0x2e00('0x11')](socket);function respondWithRpcPromise(_0x1797c4,_0x2e5f9d,_0x4ad57e){return new BPromise(function(_0x5dc42f,_0x3841a0){return client[_0x2e00('0x12')](_0x1797c4,_0x4ad57e)[_0x2e00('0x13')](function(_0x4963cc){logger[_0x2e00('0x14')](_0x2e00('0x15'),_0x2e5f9d,_0x2e00('0x16'));logger[_0x2e00('0x17')](_0x2e00('0x18'),_0x2e5f9d,'request\x20sent',JSON['stringify'](_0x4963cc));if(_0x4963cc[_0x2e00('0x19')]){if(_0x4963cc[_0x2e00('0x19')][_0x2e00('0x1a')]===0x1f4){logger[_0x2e00('0x19')](_0x2e00('0x15'),_0x2e5f9d,_0x4963cc['error'][_0x2e00('0x1b')]);return _0x3841a0(_0x4963cc['error'][_0x2e00('0x1b')]);}logger[_0x2e00('0x19')]('ChatGroup,\x20%s,\x20%s',_0x2e5f9d,_0x4963cc[_0x2e00('0x19')][_0x2e00('0x1b')]);return _0x5dc42f(_0x4963cc[_0x2e00('0x19')][_0x2e00('0x1b')]);}else{logger['info'](_0x2e00('0x15'),_0x2e5f9d,_0x2e00('0x16'));_0x5dc42f(_0x4963cc['result'][_0x2e00('0x1b')]);}})[_0x2e00('0x1c')](function(_0x1620ec){logger['error'](_0x2e00('0x15'),_0x2e5f9d,_0x1620ec);_0x3841a0(_0x1620ec);});});}
\ No newline at end of file
index d146361..35d063f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa56e=['chatGroup:','./chatGroup.events','remove','update','emit','register','length'];(function(_0x5026ee,_0x50af2c){var _0x516b21=function(_0x8dbab7){while(--_0x8dbab7){_0x5026ee['push'](_0x5026ee['shift']());}};_0x516b21(++_0x50af2c);}(_0xa56e,0xa2));var _0xea56=function(_0x1f9e17,_0x127015){_0x1f9e17=_0x1f9e17-0x0;var _0x4fda50=_0xa56e[_0x1f9e17];return _0x4fda50;};'use strict';var ChatGroupEvents=require(_0xea56('0x0'));var events=['save',_0xea56('0x1'),_0xea56('0x2')];function createListener(_0x2688ef,_0x3d4a0e){return function(_0x25f0b1){_0x3d4a0e[_0xea56('0x3')](_0x2688ef,_0x25f0b1);};}function removeListener(_0x306948,_0x4c3a14){return function(){ChatGroupEvents['removeListener'](_0x306948,_0x4c3a14);};}exports[_0xea56('0x4')]=function(_0x4a2a48){for(var _0x2c9fcd=0x0,_0x3850c4=events[_0xea56('0x5')];_0x2c9fcd<_0x3850c4;_0x2c9fcd++){var _0x153f9f=events[_0x2c9fcd];var _0x4f7686=createListener(_0xea56('0x6')+_0x153f9f,_0x4a2a48);ChatGroupEvents['on'](_0x153f9f,_0x4f7686);}};
\ No newline at end of file
+var _0xf959=['length','chatGroup:','./chatGroup.events','remove','update','emit','register'];(function(_0x39a235,_0x758775){var _0x56474d=function(_0x2ee205){while(--_0x2ee205){_0x39a235['push'](_0x39a235['shift']());}};_0x56474d(++_0x758775);}(_0xf959,0xe9));var _0x9f95=function(_0x4bcb3c,_0x192122){_0x4bcb3c=_0x4bcb3c-0x0;var _0xfe09bb=_0xf959[_0x4bcb3c];return _0xfe09bb;};'use strict';var ChatGroupEvents=require(_0x9f95('0x0'));var events=['save',_0x9f95('0x1'),_0x9f95('0x2')];function createListener(_0x970dc2,_0x30ac4c){return function(_0x20c0b1){_0x30ac4c[_0x9f95('0x3')](_0x970dc2,_0x20c0b1);};}function removeListener(_0x789f94,_0x1a4629){return function(){ChatGroupEvents['removeListener'](_0x789f94,_0x1a4629);};}exports[_0x9f95('0x4')]=function(_0x52aa63){for(var _0x45c10d=0x0,_0x4a80df=events[_0x9f95('0x5')];_0x45c10d<_0x4a80df;_0x45c10d++){var _0x365325=events[_0x45c10d];var _0xfd29f3=createListener(_0x9f95('0x6')+_0x365325,_0x52aa63);ChatGroupEvents['on'](_0x365325,_0xfd29f3);}};
\ No newline at end of file
index 9a6ef31..d646114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0926=['/:id/messages','addMessage','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','/describe','get','/:id','isAuthenticated','getUnread','/:id/members','getMessages','post','create','addMembers'];(function(_0x378b4,_0x5ca7fa){var _0x11d07b=function(_0x35d420){while(--_0x35d420){_0x378b4['push'](_0x378b4['shift']());}};_0x11d07b(++_0x5ca7fa);}(_0x0926,0x83));var _0x6092=function(_0x4ec9e3,_0x15fbf4){_0x4ec9e3=_0x4ec9e3-0x0;var _0x2883ce=_0x0926[_0x4ec9e3];return _0x2883ce;};'use strict';var multer=require(_0x6092('0x0'));var util=require(_0x6092('0x1'));var path=require(_0x6092('0x2'));var timeout=require('connect-timeout');var express=require(_0x6092('0x3'));var router=express[_0x6092('0x4')]();var fs_extra=require(_0x6092('0x5'));var auth=require(_0x6092('0x6'));var interaction=require(_0x6092('0x7'));var config=require('../../config/environment');var controller=require(_0x6092('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x6092('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x6092('0xa')](_0x6092('0xb'),auth[_0x6092('0xc')](),controller['show']);router[_0x6092('0xa')]('/:id/unread',auth['isAuthenticated'](),controller[_0x6092('0xd')]);router[_0x6092('0xa')](_0x6092('0xe'),auth[_0x6092('0xc')](),controller['getMembers']);router[_0x6092('0xa')]('/:id/messages',auth['isAuthenticated'](),controller[_0x6092('0xf')]);router[_0x6092('0x10')]('/',auth['isAuthenticated'](),controller[_0x6092('0x11')]);router[_0x6092('0x10')](_0x6092('0xe'),auth['isAuthenticated'](),controller[_0x6092('0x12')]);router[_0x6092('0x10')](_0x6092('0x13'),auth[_0x6092('0xc')](),controller[_0x6092('0x14')]);router[_0x6092('0x15')]('/:id',auth[_0x6092('0xc')](),controller[_0x6092('0x16')]);router[_0x6092('0x17')]('/:id',auth[_0x6092('0xc')](),controller[_0x6092('0x18')]);router['delete'](_0x6092('0xe'),auth[_0x6092('0xc')](),controller['removeMembers']);module['exports']=router;
\ No newline at end of file
+var _0xde86=['./chatGroup.controller','get','isAuthenticated','index','describe','/:id','show','/:id/unread','/:id/members','getMembers','/:id/messages','create','post','addMembers','update','destroy','delete','removeMembers','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0xde86,0x10c));var _0x6de8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xde86[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x6de8('0x0'));var util=require(_0x6de8('0x1'));var path=require(_0x6de8('0x2'));var timeout=require(_0x6de8('0x3'));var express=require(_0x6de8('0x4'));var router=express[_0x6de8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6de8('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6de8('0x7'));router[_0x6de8('0x8')]('/',auth[_0x6de8('0x9')](),controller[_0x6de8('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x6de8('0xb')]);router['get'](_0x6de8('0xc'),auth[_0x6de8('0x9')](),controller[_0x6de8('0xd')]);router['get'](_0x6de8('0xe'),auth['isAuthenticated'](),controller['getUnread']);router[_0x6de8('0x8')](_0x6de8('0xf'),auth[_0x6de8('0x9')](),controller[_0x6de8('0x10')]);router[_0x6de8('0x8')](_0x6de8('0x11'),auth[_0x6de8('0x9')](),controller['getMessages']);router['post']('/',auth[_0x6de8('0x9')](),controller[_0x6de8('0x12')]);router[_0x6de8('0x13')](_0x6de8('0xf'),auth[_0x6de8('0x9')](),controller[_0x6de8('0x14')]);router[_0x6de8('0x13')](_0x6de8('0x11'),auth[_0x6de8('0x9')](),controller['addMessage']);router['put'](_0x6de8('0xc'),auth['isAuthenticated'](),controller[_0x6de8('0x15')]);router['delete']('/:id',auth[_0x6de8('0x9')](),controller[_0x6de8('0x16')]);router[_0x6de8('0x17')](_0x6de8('0xf'),auth[_0x6de8('0x9')](),controller[_0x6de8('0x18')]);module['exports']=router;
\ No newline at end of file
index 9527878..f3d181c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e8=['STRING','DATE','out','exports','BOOLEAN','INTEGER','ENUM','star','thumb','TEXT'];(function(_0x58ac28,_0x3edfd2){var _0x524c8f=function(_0x18df5a){while(--_0x18df5a){_0x58ac28['push'](_0x58ac28['shift']());}};_0x524c8f(++_0x3edfd2);}(_0xf6e8,0xc1));var _0x8f6e=function(_0x8fdc3f,_0x21ad37){_0x8fdc3f=_0x8fdc3f-0x0;var _0x5d3da4=_0xf6e8[_0x8fdc3f];return _0x5d3da4;};'use strict';var Sequelize=require('sequelize');module[_0x8f6e('0x0')]={'closed':{'type':Sequelize[_0x8f6e('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x8f6e('0x2')]},'ratingType':{'type':Sequelize[_0x8f6e('0x3')](_0x8f6e('0x4'),_0x8f6e('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0x8f6e('0x6')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x8f6e('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x8f6e('0x8')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x8f6e('0x7')]},'thirdDisposition':{'type':Sequelize[_0x8f6e('0x7')]},'note':{'type':Sequelize[_0x8f6e('0x7')]},'browserName':{'type':Sequelize[_0x8f6e('0x7')]},'browserVersion':{'type':Sequelize[_0x8f6e('0x7')]},'osName':{'type':Sequelize[_0x8f6e('0x7')]},'osVersion':{'type':Sequelize[_0x8f6e('0x7')]},'deviceModel':{'type':Sequelize[_0x8f6e('0x7')]},'deviceVendor':{'type':Sequelize[_0x8f6e('0x7')]},'deviceType':{'type':Sequelize[_0x8f6e('0x7')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x8f6e('0x7')]},'formData':{'type':Sequelize[_0x8f6e('0x6')]('long')},'read1stAt':{'type':Sequelize[_0x8f6e('0x8')]},'lastMsgAt':{'type':Sequelize[_0x8f6e('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x8f6e('0x3')]('in',_0x8f6e('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x8f6e('0x7')]},'customerPort':{'type':Sequelize[_0x8f6e('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x8f6e('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x8f6e('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x68b7=['thumb','star','TEXT','STRING','DATE','sequelize','BOOLEAN','INTEGER','ENUM'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x68b7,0x8c));var _0x768b=function(_0xee11e2,_0x5acea6){_0xee11e2=_0xee11e2-0x0;var _0x4135f1=_0x68b7[_0xee11e2];return _0x4135f1;};'use strict';var Sequelize=require(_0x768b('0x0'));module['exports']={'closed':{'type':Sequelize[_0x768b('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x768b('0x2')]},'ratingType':{'type':Sequelize[_0x768b('0x3')]('star',_0x768b('0x4')),'defaultValue':_0x768b('0x5')},'ratingMessage':{'type':Sequelize[_0x768b('0x6')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x768b('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x768b('0x8')]},'disposition':{'type':Sequelize[_0x768b('0x7')]},'secondDisposition':{'type':Sequelize[_0x768b('0x7')]},'thirdDisposition':{'type':Sequelize[_0x768b('0x7')]},'note':{'type':Sequelize[_0x768b('0x7')]},'browserName':{'type':Sequelize[_0x768b('0x7')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x768b('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x768b('0x7')]},'deviceVendor':{'type':Sequelize[_0x768b('0x7')]},'deviceType':{'type':Sequelize[_0x768b('0x7')]},'referer':{'type':Sequelize[_0x768b('0x6')]},'customerIp':{'type':Sequelize[_0x768b('0x7')]},'formData':{'type':Sequelize[_0x768b('0x6')]('long')},'read1stAt':{'type':Sequelize[_0x768b('0x8')]},'lastMsgAt':{'type':Sequelize[_0x768b('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x768b('0x7')]},'customerPort':{'type':Sequelize[_0x768b('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x768b('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x768b('0x1')],'defaultValue':![]}};
\ No newline at end of file
index fc544dc..bf27c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','Attachment','attachmentDownload','attachId','ChatOfflineMessageId','join','root','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','ChatMessage','Messages','%s%d','agentAlias','customer','Visitor','agentIdentifier','website_alias','System','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','SendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','nolimit','YYYY-MM-DD\x20HH:mm:ss','findAll','getMyMessages','includeAgent','spread','chatInteractionTags:save','removeTags','files','tmp','attachments','lastName','Account','Owner','get','mkdirSync','N.A.','browserName','customerIp','customerPort','createReadStream','pipe','createWriteStream','firstName','renderFile','server','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','then','request\x20sent','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','send','merge','body','contact','interaction','account','Users','map','TagIds','split','forEach','Tags','push','index','ChatInteraction','rawAttributes','fieldName','type','name','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','field','color','from','tools_tags','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','isEmpty','where','i.ChatWebsiteId\x20IN\x20?','createdAt','parse','$gte','$lte','null','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','agent','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','ChatWebsiteId','sequelize','toString','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','ChatInteractionId','all','rows','show','params','filters','includeAll','include','options','create','describe','createVidaooSession','ChatWebsite','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','fullname','email','POST','isNull','follow','vidaooMetadata','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','customUpdate','CmContact','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned'];(function(_0x2662e9,_0x46870c){var _0x50ef33=function(_0x30799c){while(--_0x30799c){_0x2662e9['push'](_0x2662e9['shift']());}};_0x50ef33(++_0x46870c);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5b7788,_0x309ae5){_0x5b7788=_0x5b7788-0x0;var _0x573871=_0x0b0e[_0x5b7788];return _0x573871;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var pdf=require(_0xe0b0('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe0b0('0x14'))(_0xe0b0('0x15'));var utils=require(_0xe0b0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe0b0('0x17'));var db=require(_0xe0b0('0x18'))['db'];config[_0xe0b0('0x19')]=_[_0xe0b0('0x1a')](config[_0xe0b0('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xe0b0('0x1b'))(new Redis(config[_0xe0b0('0x19')]));require(_0xe0b0('0x1c'))[_0xe0b0('0x1d')](socket);var jayson=require(_0xe0b0('0x1e'));var client=jayson['client'][_0xe0b0('0x1f')]({'port':0x232b});var client9004=jayson['client'][_0xe0b0('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0xadee6e,_0x519ae8,_0x11fdca,_0x4a4cc0){return new BPromise(function(_0x2d6fb6,_0x100204){var _0x56bcc7=_0x4a4cc0||client;return _0x56bcc7['request'](_0xadee6e,_0x11fdca)[_0xe0b0('0x20')](function(_0x50a441){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x519ae8,_0xe0b0('0x21'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x519ae8,_0xe0b0('0x21'),JSON['stringify'](_0x50a441));if(_0x50a441[_0xe0b0('0x22')]){if(_0x50a441['error'][_0xe0b0('0x23')]===0x1f4){logger[_0xe0b0('0x22')](_0xe0b0('0x24'),_0x519ae8,_0x50a441[_0xe0b0('0x22')][_0xe0b0('0x25')]);return _0x100204(_0x50a441['error']['message']);}logger[_0xe0b0('0x22')]('ChatInteraction,\x20%s,\x20%s',_0x519ae8,_0x50a441[_0xe0b0('0x22')][_0xe0b0('0x25')]);return _0x2d6fb6(_0x50a441['error'][_0xe0b0('0x25')]);}else{logger['info'](_0xe0b0('0x24'),_0x519ae8,'request\x20sent');_0x2d6fb6(_0x50a441[_0xe0b0('0x26')]['message']);}})[_0xe0b0('0x27')](function(_0x4de537){logger[_0xe0b0('0x22')]('ChatInteraction,\x20%s,\x20%s',_0x519ae8,_0x4de537);_0x100204(_0x4de537);});});}function respondWithStatusCode(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0xcc;return function(_0x362aba){if(_0x362aba){return _0x3c221d[_0xe0b0('0x28')](_0x5c5317);}return _0x3c221d[_0xe0b0('0x29')](_0x5c5317)[_0xe0b0('0x2a')]();};}function respondWithResult(_0x3ec2,_0x10745d){_0x10745d=_0x10745d||0xc8;return function(_0x5200a6){if(_0x5200a6){return _0x3ec2[_0xe0b0('0x29')](_0x10745d)[_0xe0b0('0x2b')](_0x5200a6);}};}function respondWithFilteredResult(_0x5b7a64,_0x15e13b){return function(_0x419b1f){if(_0x419b1f){var _0x36d137=typeof _0x15e13b[_0xe0b0('0x2c')]===_0xe0b0('0x2d')&&typeof _0x15e13b[_0xe0b0('0x2e')]===_0xe0b0('0x2d');var _0x4fb3b7=_0x419b1f[_0xe0b0('0x2f')];var _0x3c0109=_0x36d137?0x0:_0x15e13b['offset'];var _0x4fe400=_0x36d137?_0x419b1f[_0xe0b0('0x2f')]:_0x15e13b[_0xe0b0('0x2c')]+_0x15e13b[_0xe0b0('0x2e')];var _0x3f81d5;if(_0x4fe400>=_0x4fb3b7){_0x4fe400=_0x4fb3b7;_0x3f81d5=0xc8;}else{_0x3f81d5=0xce;}_0x5b7a64[_0xe0b0('0x29')](_0x3f81d5);return _0x5b7a64['set'](_0xe0b0('0x30'),_0x3c0109+'-'+_0x4fe400+'/'+_0x4fb3b7)[_0xe0b0('0x2b')](_0x419b1f);}return null;};}function patchUpdates(_0x7867c4){return function(_0x29d725){try{jsonpatch[_0xe0b0('0x31')](_0x29d725,_0x7867c4,!![]);}catch(_0x4fe835){return BPromise[_0xe0b0('0x32')](_0x4fe835);}return _0x29d725[_0xe0b0('0x33')]();};}function saveUpdates(_0xfc51d3,_0x31c6f5){return function(_0x3575bc){if(_0x3575bc){return _0x3575bc[_0xe0b0('0x34')](_0xfc51d3)[_0xe0b0('0x20')](function(_0x20908f){return _0x20908f;});}return null;};}function removeEntity(_0x2125d5,_0x1dd010){return function(_0xd56467){if(_0xd56467){return _0xd56467[_0xe0b0('0x35')]()[_0xe0b0('0x20')](function(){_0x2125d5[_0xe0b0('0x29')](0xcc)[_0xe0b0('0x2a')]();});}};}function handleEntityNotFound(_0x4cf80c,_0x121608){return function(_0x135be5){if(!_0x135be5){_0x4cf80c[_0xe0b0('0x28')](0x194);}return _0x135be5;};}function handleError(_0x1eb3f9,_0x1a2d24){_0x1a2d24=_0x1a2d24||0x1f4;return function(_0x2c6e60){logger[_0xe0b0('0x22')](_0x2c6e60['stack']);if(_0x2c6e60['name']){delete _0x2c6e60['name'];}_0x1eb3f9['status'](_0x1a2d24)[_0xe0b0('0x36')](_0x2c6e60);};}function getMustacheRender(_0xc3d967,_0xe6f635){return Mustache['render'](_0xc3d967,_[_0xe0b0('0x37')](_0xe6f635[_0xe0b0('0x38')],{'contact':_0xe6f635[_0xe0b0('0x39')],'message':_0xe6f635[_0xe0b0('0x25')],'agent':_0xe6f635['agent'],'interaction':_0xe6f635[_0xe0b0('0x3a')],'account':_0xe6f635[_0xe0b0('0x3b')]}))||'';}function getInteractionUsers(_0x43d352,_0x30dcbb){return new BPromise(function(_0x4265e3,_0x1205db){try{if(_0x30dcbb[_0x43d352['id']]){_0x43d352[_0xe0b0('0x3c')]=_[_0xe0b0('0x3d')](_0x30dcbb[_0x43d352['id']],function(_0xeaffbb){return{'id':_0xeaffbb['id'],'fullname':_0xeaffbb['fullname']};});}}catch(_0x3e349b){_0x1205db(_0x3e349b);}_0x4265e3(_0x43d352);});}function getInteractionTags(_0x54f646,_0x34178d){return new BPromise(function(_0x2d5f47,_0x46c4ea){try{if(_0x54f646[_0xe0b0('0x3e')]){_0x54f646['Tags']=[];_0x54f646[_0xe0b0('0x3e')][_0xe0b0('0x3f')](',')[_0xe0b0('0x40')](function(_0x402a0e){_0x54f646[_0xe0b0('0x41')][_0xe0b0('0x42')](_0x34178d[_0x402a0e]);});}delete _0x54f646[_0xe0b0('0x3e')];}catch(_0x3bde8b){_0x46c4ea(_0x3bde8b);}_0x2d5f47(_0x54f646);});}function updateChatInteraction(_0x52ffe4,_0x2aad80,_0x309bbf){return new BPromise(function(_0x528818,_0x515bd2){return getInteractionUsers(_0x52ffe4,_0x309bbf)[_0xe0b0('0x20')](function(_0x247f8d){return getInteractionTags(_0x247f8d,_0x2aad80);})['then'](function(_0x18a59d){_0x528818(_0x18a59d);})[_0xe0b0('0x27')](function(_0x6bca5c){_0x515bd2(_0x6bca5c);});});}exports[_0xe0b0('0x43')]=function(_0x1a8cc7,_0x5c31b5){var _0x5d2fa2={},_0x51c580={},_0xc3235b={'count':0x0,'rows':[]};var _0x38e715=_['map'](db[_0xe0b0('0x44')][_0xe0b0('0x45')],function(_0x14197b){return{'name':_0x14197b[_0xe0b0('0x46')],'type':_0x14197b[_0xe0b0('0x47')]['key']};});_0x51c580['model']=_[_0xe0b0('0x3d')](_0x38e715,_0xe0b0('0x48'));_0x51c580[_0xe0b0('0x49')]=_[_0xe0b0('0x4a')](_0x1a8cc7[_0xe0b0('0x49')]);_0x51c580['filters']=_[_0xe0b0('0x4b')](_0x51c580[_0xe0b0('0x4c')],_0x51c580['query']);_0x5d2fa2['attributes']=_['intersection'](_0x51c580[_0xe0b0('0x4c')],qs[_0xe0b0('0x4d')](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x4d')]));_0x5d2fa2['attributes']=_0x5d2fa2[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x5d2fa2['attributes']:_0x51c580['model'];if(!_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x50')]('nolimit')){_0x5d2fa2[_0xe0b0('0x2e')]=qs[_0xe0b0('0x2e')](_0x1a8cc7['query']['limit']);_0x5d2fa2[_0xe0b0('0x2c')]=qs['offset'](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x2c')]);}_0x5d2fa2[_0xe0b0('0x51')]=qs[_0xe0b0('0x52')](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x52')]);_0x5d2fa2['where']=qs['filters'](_[_0xe0b0('0x53')](_0x1a8cc7['query'],_0x51c580['filters']),_0x38e715);var _0x249d9a=[];var _0x222174=squel['select']()['field']('id')[_0xe0b0('0x54')](_0xe0b0('0x48'))[_0xe0b0('0x54')](_0xe0b0('0x55'))[_0xe0b0('0x56')](_0xe0b0('0x57'));var _0x84fabb=squel['select']()[_0xe0b0('0x54')]('u.id')[_0xe0b0('0x54')]('u.fullname')['field'](_0xe0b0('0x58'))[_0xe0b0('0x56')](_0xe0b0('0x59'),'ui')[_0xe0b0('0x5a')](_0xe0b0('0x5b'),'u',_0xe0b0('0x5c'));var _0x4548da=squel[_0xe0b0('0x5d')]()[_0xe0b0('0x56')]('chat_interactions','i')[_0xe0b0('0x5a')]('cm_contacts','c',_0xe0b0('0x5e'))[_0xe0b0('0x5a')](_0xe0b0('0x5b'),'o',_0xe0b0('0x5f'))[_0xe0b0('0x5a')](_0xe0b0('0x60'),'a','a.id\x20=\x20i.ChatWebsiteId')[_0xe0b0('0x5a')](_0xe0b0('0x61'),'me',_0xe0b0('0x62'))[_0xe0b0('0x5a')](_0xe0b0('0x63'),'it',_0xe0b0('0x64'))[_0xe0b0('0x5a')](_0xe0b0('0x57'),'t',_0xe0b0('0x65'));var _0xf331df=squel[_0xe0b0('0x66')]();var _0x18ab99=[];var _0xc719d2=squel[_0xe0b0('0x66')]();var _0xcdf97;if(_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x67')]){_0xcdf97=as[_0xe0b0('0x68')](_0x1a8cc7['query'][_0xe0b0('0x67')]);var _0xe7fbac=_0xcdf97[_0xe0b0('0x69')];for(var _0x2f24e6=0x0;_0x2f24e6<_0xcdf97[_0xe0b0('0x6a')][_0xe0b0('0x4f')];_0x2f24e6++){var _0x2bdb59=_0xcdf97['conditions'][_0x2f24e6];var _0x47dcc4='i';var _0x139014=_[_0xe0b0('0x6b')](_0x38e715,[_0xe0b0('0x48'),_0x2bdb59['field']]);if(!_0x139014){switch(_0x2bdb59[_0xe0b0('0x54')]){case _0xe0b0('0x6c'):if(_0x2bdb59[_0xe0b0('0x6d')]==0x1){_0x4548da[_0xe0b0('0x6e')]('`'+_0x2bdb59[_0xe0b0('0x54')]+'`\x20=\x200');}else{_0x4548da[_0xe0b0('0x6e')]('`'+_0x2bdb59[_0xe0b0('0x54')]+_0xe0b0('0x6f'));}break;case'Contact':if(_0x2bdb59[_0xe0b0('0x70')]===_0xe0b0('0x71')){if(_0x2bdb59['value'][_0xe0b0('0x3f')]('\x20')['length']>0x1){_0xf331df[_0xe7fbac]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xe0b0('0x72')](_0x2bdb59['value']),null);}else{var _0x4d75e4='%'+_0x2bdb59[_0xe0b0('0x6d')]+'%';_0xf331df[_0xe7fbac](_0xe0b0('0x73'),_0x4d75e4,_0x4d75e4,_0x4d75e4);}}else{_0x139014=_[_0xe0b0('0x6b')](_0x38e715,[_0xe0b0('0x48'),'ContactId']);_0x2bdb59[_0xe0b0('0x54')]=_0xe0b0('0x74');_0x14da9c=as[_0xe0b0('0x75')](_0x47dcc4,_0x139014[_0xe0b0('0x47')],_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c[_0xe0b0('0x76')],_0x14da9c[_0xe0b0('0x6d')][_0xe0b0('0x77')],_0x14da9c[_0xe0b0('0x6d')]['end']);}break;case'Tag':var _0x4b41a=_0x2bdb59[_0xe0b0('0x6d')][_0xe0b0('0x3f')](',')['map'](function(_0x49b754){return Number(_0x49b754);});_0x4b41a[_0xe0b0('0x40')](function(_0x26f36f){_0xc719d2['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x26f36f+',%');});_0x18ab99=_['union'](_0x18ab99,_0x4b41a);break;case _0xe0b0('0x78'):if(_0x2bdb59[_0xe0b0('0x70')]===_0xe0b0('0x71')){_0xf331df[_0xe7fbac](_0xe0b0('0x79'),'%'+_0x2bdb59[_0xe0b0('0x6d')]+'%',null);}else{_0x139014=_[_0xe0b0('0x6b')](_0x38e715,[_0xe0b0('0x48'),_0xe0b0('0x7a')]);_0x2bdb59['field']=_0xe0b0('0x7a');_0x14da9c=as[_0xe0b0('0x75')](_0x47dcc4,_0x139014[_0xe0b0('0x47')],_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c['text'],_0x14da9c['value']['start'],_0x14da9c['value']['end']);}break;case'body':_0x14da9c=as[_0xe0b0('0x75')]('me',null,_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c['text'],_0x14da9c['value'][_0xe0b0('0x77')],_0x14da9c[_0xe0b0('0x6d')][_0xe0b0('0x2a')]);break;}}else{var _0x14da9c=as[_0xe0b0('0x75')](_0x47dcc4,_0x139014[_0xe0b0('0x47')],_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c[_0xe0b0('0x76')],_0x14da9c[_0xe0b0('0x6d')]['start'],_0x14da9c[_0xe0b0('0x6d')][_0xe0b0('0x2a')]);}}}else{var _0x86e90=_(_0x1a8cc7[_0xe0b0('0x49')])[_0xe0b0('0x4a')]()[_0xe0b0('0x3d')](function(_0x16a2ae){return _['some'](_0x38e715,[_0xe0b0('0x48'),_0x16a2ae])?_0x16a2ae:undefined;})['compact']()[_0xe0b0('0x6d')]();if(!_[_0xe0b0('0x7b')](_0x86e90)){_0x86e90[_0xe0b0('0x40')](function(_0x9c7221){if(_0x9c7221==='ChatWebsiteId'){_0x4548da[_0xe0b0('0x7c')](_0xe0b0('0x7d'),[]['concat'](_0x1a8cc7['query'][_0x9c7221]));}else if(_0x9c7221===_0xe0b0('0x7e')){var _0x30adc5=JSON[_0xe0b0('0x7f')](_0x1a8cc7[_0xe0b0('0x49')][_0x9c7221])[_0xe0b0('0x80')];var _0x31dd21=JSON[_0xe0b0('0x7f')](_0x1a8cc7[_0xe0b0('0x49')][_0x9c7221])[_0xe0b0('0x81')];_0x4548da[_0xe0b0('0x7c')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x30adc5,_0x31dd21);}else{if(_0x1a8cc7['query'][_0x9c7221]===_0xe0b0('0x82')){_0x4548da['where']('i.'+_0x9c7221+'\x20IS\x20NULL');}else{_0x4548da['where']('i.'+_0x9c7221+'\x20=\x20?',_0x1a8cc7[_0xe0b0('0x49')][_0x9c7221]);}}});}if(_0x1a8cc7['query'][_0xe0b0('0x83')]){if(_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x83')]==0x1){_0x4548da[_0xe0b0('0x6e')]('`unreadMessages`\x20=\x200');}else{_0x4548da[_0xe0b0('0x6e')](_0xe0b0('0x84'));}}if(_0x1a8cc7['query'][_0xe0b0('0x85')]){_0x18ab99=_[_0xe0b0('0x86')](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x85')])?_0x1a8cc7[_0xe0b0('0x49')]['tag']:new Array(_0x1a8cc7['query']['tag']);_0x18ab99['forEach'](function(_0x5c258b){_0xc719d2['or'](_0xe0b0('0x87'),'%,'+_0x5c258b+',%');});}if(_0x1a8cc7['query'][_0xe0b0('0x88')]){var _0x5f4aaf=_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x88')][_0xe0b0('0x89')]('\x5c','\x5c\x5c')[_0xe0b0('0x89')](/'/g,'\x27\x27');if(qs[_0xe0b0('0x8a')](_0x5f4aaf)){_0xf331df['or'](_0xe0b0('0x8b'),_0x5f4aaf+'%');}else{_0xf331df['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x5f4aaf))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5f4aaf+'%');}}}_0x4548da['where'](_0xf331df);_0x4548da[_0xe0b0('0x8c')](_0xe0b0('0x8d'));var _0x264363={'type':db[_0xe0b0('0x8e')][_0xe0b0('0x8f')]['SELECT'],'raw':!![]};var _0x234716=_0x4548da[_0xe0b0('0x90')]();_0x234716[_0xe0b0('0x54')](_0xe0b0('0x8d'));_0x234716[_0xe0b0('0x54')](_0xe0b0('0x91'),_0xe0b0('0x6c'));if(_0x5d2fa2[_0xe0b0('0x51')]){_0x5d2fa2[_0xe0b0('0x51')]['forEach'](function(_0x589c47){var _0x6e0e9=_0x589c47[0x0]===_0xe0b0('0x92')?_0x589c47[0x0]:'i.'+_0x589c47[0x0];_0x4548da['order'](_0x6e0e9,_0x589c47[0x1]===_0xe0b0('0x93')?![]:!![]);});}if(!_[_0xe0b0('0x7b')](_0x18ab99)){_0x4548da[_0xe0b0('0x6e')](_0xc719d2);_0x234716[_0xe0b0('0x7c')](_0xe0b0('0x94'),_0x18ab99);}BPromise[_0xe0b0('0x95')]()[_0xe0b0('0x20')](function(){if(!_0xcdf97){if(_0x1a8cc7[_0xe0b0('0x49')]['ChatWebsiteId'])return;_0x234716['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x4548da[_0xe0b0('0x7c')](_0xe0b0('0x96'));return;}if(_0x1a8cc7['user'][_0xe0b0('0x97')]!==_0xe0b0('0x98'))return;return _0x1a8cc7[_0xe0b0('0x99')][_0xe0b0('0x9a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x56c4b9){if(_['isEmpty'](_0x56c4b9)){_0x234716[_0xe0b0('0x7c')](_0xe0b0('0x9b'));_0x4548da['where'](_0xe0b0('0x9b'));}else{_0x234716[_0xe0b0('0x7c')]('i.ChatWebsiteId\x20IN\x20?',_['map'](_0x56c4b9,'id'));_0x4548da[_0xe0b0('0x7c')]('i.ChatWebsiteId\x20IN\x20?',_[_0xe0b0('0x3d')](_0x56c4b9,'id'));}});})['then'](function(){if(_0x1a8cc7[_0xe0b0('0x99')][_0xe0b0('0x97')]===_0xe0b0('0x98')&&!_0xcdf97&&!_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x9c')])return[];return db[_0xe0b0('0x9d')][_0xe0b0('0x49')](_0x234716[_0xe0b0('0x9e')](),_0x264363);})[_0xe0b0('0x20')](function(_0x48497e){_0xc3235b[_0xe0b0('0x2f')]=_0x48497e[_0xe0b0('0x4f')];if(_0xc3235b[_0xe0b0('0x2f')]===0x0)return[];return db['sequelize'][_0xe0b0('0x49')](_0x222174['toString'](),_0x264363)[_0xe0b0('0x20')](function(_0x350c40){_0x249d9a=_['keyBy'](_0x350c40,'id');_0x264363=_[_0xe0b0('0x37')](_0x264363,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1a8cc7['query'][_0xe0b0('0x4d')]){_0x5d2fa2['attributes']['forEach'](function(_0x4f027c){_0x4548da[_0xe0b0('0x54')]('i.'+_0x4f027c);});}else{_0x4548da[_0xe0b0('0x54')](_0xe0b0('0x91'),_0xe0b0('0x6c'));_0x4548da[_0xe0b0('0x54')]('a.key',_0xe0b0('0x9f'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa0'),'Account.mandatoryDisposition');_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa1'),'contactName');_0x4548da['field'](_0xe0b0('0xa2'));_0x4548da['field'](_0xe0b0('0xa3'),_0xe0b0('0xa4'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa5'),_0xe0b0('0xa6'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa7'),'Contact.email');_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa8'),_0xe0b0('0xa9'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xaa'),'Contact.mobile');_0x4548da['field'](_0xe0b0('0xab'),_0xe0b0('0xac'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xad'),_0xe0b0('0xae'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xaf'),_0xe0b0('0xb0'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xb1'),'TagIds');}if(_0x5d2fa2[_0xe0b0('0x2e')])_0x4548da[_0xe0b0('0x2e')](_0x5d2fa2[_0xe0b0('0x2e')]);if(_0x5d2fa2[_0xe0b0('0x2c')])_0x4548da['offset'](_0x5d2fa2[_0xe0b0('0x2c')]);return db[_0xe0b0('0x9d')][_0xe0b0('0x49')](_0x4548da[_0xe0b0('0x9e')](),_0x264363);})[_0xe0b0('0x20')](function(_0x484cb2){if(_0x484cb2[_0xe0b0('0x4f')]>0x0)_0x84fabb['where'](_0xe0b0('0xb2'),_[_0xe0b0('0x3d')](_0x484cb2,'id'));return db[_0xe0b0('0x9d')][_0xe0b0('0x49')](_0x84fabb[_0xe0b0('0x9e')](),_0x264363)['then'](function(_0x567e42){var _0x3822e4=_['groupBy'](_0x567e42,_0xe0b0('0xb3'));var _0x4c82d6=[];_0x484cb2[_0xe0b0('0x40')](function(_0x474fbb){_0x4c82d6[_0xe0b0('0x42')](updateChatInteraction(_0x474fbb,_0x249d9a,_0x3822e4));});return BPromise[_0xe0b0('0xb4')](_0x4c82d6);});});})[_0xe0b0('0x20')](function(_0x1bb4da){_0xc3235b[_0xe0b0('0xb5')]=_0x1bb4da;return _0xc3235b;})['then'](respondWithFilteredResult(_0x5c31b5,_0x5d2fa2))['catch'](handleError(_0x5c31b5,null));};exports[_0xe0b0('0xb6')]=function(_0x717e74,_0x184938){var _0x20d6bd={'raw':![],'where':{'id':_0x717e74[_0xe0b0('0xb7')]['id']}},_0xd83992={};_0xd83992[_0xe0b0('0x4c')]=_[_0xe0b0('0x4a')](db[_0xe0b0('0x44')][_0xe0b0('0x45')]);_0xd83992['query']=_['keys'](_0x717e74[_0xe0b0('0x49')]);_0xd83992[_0xe0b0('0xb8')]=_[_0xe0b0('0x4b')](_0xd83992[_0xe0b0('0x4c')],_0xd83992[_0xe0b0('0x49')]);_0x20d6bd[_0xe0b0('0x4e')]=_[_0xe0b0('0x4b')](_0xd83992['model'],qs['fields'](_0x717e74[_0xe0b0('0x49')][_0xe0b0('0x4d')]));_0x20d6bd[_0xe0b0('0x4e')]=_0x20d6bd[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x20d6bd[_0xe0b0('0x4e')]:_0xd83992[_0xe0b0('0x4c')];if(_0x717e74[_0xe0b0('0x49')][_0xe0b0('0xb9')]){_0x20d6bd[_0xe0b0('0xba')]=[{'all':!![]}];}_0x20d6bd=_['merge']({},_0x20d6bd,_0x717e74[_0xe0b0('0xbb')]);return db[_0xe0b0('0x44')]['find'](_0x20d6bd)[_0xe0b0('0x20')](handleEntityNotFound(_0x184938,null))[_0xe0b0('0x20')](respondWithResult(_0x184938,null))[_0xe0b0('0x27')](handleError(_0x184938,null));};exports[_0xe0b0('0xbc')]=function(_0x41fdef,_0x594f91){return db[_0xe0b0('0x44')][_0xe0b0('0xbc')](_0x41fdef[_0xe0b0('0x38')],{})[_0xe0b0('0x20')](respondWithResult(_0x594f91,0xc9))[_0xe0b0('0x27')](handleError(_0x594f91,null));};exports['update']=function(_0x475404,_0x58d61b){if(_0x475404[_0xe0b0('0x38')]['id']){delete _0x475404[_0xe0b0('0x38')]['id'];}return db[_0xe0b0('0x44')]['find']({'where':{'id':_0x475404['params']['id']}})[_0xe0b0('0x20')](handleEntityNotFound(_0x58d61b,null))[_0xe0b0('0x20')](saveUpdates(_0x475404[_0xe0b0('0x38')],null))['then'](respondWithResult(_0x58d61b,null))['catch'](handleError(_0x58d61b,null));};exports['destroy']=function(_0x5175e1,_0x57694c){return db['ChatInteraction'][_0xe0b0('0x6b')]({'where':{'id':_0x5175e1[_0xe0b0('0xb7')]['id']}})['then'](handleEntityNotFound(_0x57694c,null))[_0xe0b0('0x20')](removeEntity(_0x57694c,null))[_0xe0b0('0x27')](handleError(_0x57694c,null));};exports[_0xe0b0('0xbd')]=function(_0xd73b8a,_0x437588){return db['ChatInteraction']['describe']()[_0xe0b0('0x20')](respondWithResult(_0x437588,null))[_0xe0b0('0x27')](handleError(_0x437588,null));};exports[_0xe0b0('0xbe')]=function(_0x52dfd8,_0x6ab413){var _0x395083=_0x52dfd8[_0xe0b0('0xb7')]['id'];var _0xd231c4;var _0x35ca4e;var _0x1b8d4a;return db['ChatInteraction']['findOne']({'where':{'id':_0x395083}})['then'](function(_0x1ce027){_0xd231c4=_0x1ce027;return db[_0xe0b0('0xbf')][_0xe0b0('0xc0')]({'where':{'id':_0x1ce027[_0xe0b0('0x9c')]},'attributes':['id',_0xe0b0('0xc1'),_0xe0b0('0xc2'),_0xe0b0('0xc3'),_0xe0b0('0xc4'),'vidaooMetadata'],'raw':!![]});})['then'](function(_0x28ba25){if(_0x28ba25&&_0x28ba25[_0xe0b0('0xc1')]&&_0x28ba25[_0xe0b0('0xc2')]){_0x35ca4e=_0x28ba25;var _0x5451e7={'interaction':{'id':_0x395083},'agent':{'id':_0x52dfd8[_0xe0b0('0x99')]['id'],'name':_0x52dfd8[_0xe0b0('0x99')][_0xe0b0('0x48')],'fullname':_0x52dfd8['user'][_0xe0b0('0xc5')],'email':_0x52dfd8['user'][_0xe0b0('0xc6')]},'contact':_0x52dfd8[_0xe0b0('0x38')][_0xe0b0('0x39')],'account':_0x52dfd8[_0xe0b0('0x38')][_0xe0b0('0x3b')]};var _0x26df60={'rejectUnauthorized':![],'method':_0xe0b0('0xc7'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x28ba25[_0xe0b0('0xc1')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x52dfd8[_0xe0b0('0x99')]['email']],'buttons':null,'topic':_0x35ca4e[_0xe0b0('0xc3')],'note':_[_0xe0b0('0xc8')](_0x35ca4e[_0xe0b0('0xc4')])?null:getMustacheRender(_0x35ca4e['vidaooNote'],_0x5451e7),'metadata':null},'redirect':_0xe0b0('0xc9'),'json':!![]};try{if(!_[_0xe0b0('0xc8')](_0x35ca4e[_0xe0b0('0xca')])){var _0x566a6e=getMustacheRender(_0x35ca4e[_0xe0b0('0xca')],_0x5451e7);var _0x32f67b=JSON[_0xe0b0('0x7f')](_0x566a6e);_0x26df60[_0xe0b0('0x38')][_0xe0b0('0xcb')]=_0x32f67b;}}catch(_0x15be52){throw new db['Sequelize'][(_0xe0b0('0xcc'))](_0xe0b0('0xcd'));}return rp(_0x26df60);}else{throw new db[(_0xe0b0('0x8e'))][(_0xe0b0('0xcc'))](_0xe0b0('0xce'));}})[_0xe0b0('0x20')](function(_0x38b2cf){_0x1b8d4a=_0x38b2cf;if(_0x1b8d4a['id']){var _0x31b01a={'body':_0x1b8d4a[_0xe0b0('0xcf')],'ChatWebsiteId':_0x35ca4e['id'],'ChatInteractionId':_0xd231c4['id'],'direction':_0xe0b0('0xd0'),'UserId':_0x52dfd8[_0xe0b0('0x99')]['id']};return db['ChatMessage'][_0xe0b0('0xbc')](_0x31b01a,{});}else{throw new db['Sequelize']['ValidationError'](_0xe0b0('0xd1'));}})[_0xe0b0('0x20')](function(){return _0xd231c4['updateAttributes']({'vidaooSessionId':_0x1b8d4a['id']});})[_0xe0b0('0x20')](respondWithResult(_0x6ab413,null))[_0xe0b0('0x27')](handleError(_0x6ab413,null));};exports[_0xe0b0('0xd2')]=function(_0x11e969,_0xa18619){if(_0x11e969[_0xe0b0('0x38')]['id']){delete _0x11e969[_0xe0b0('0x38')]['id'];}return db[_0xe0b0('0x44')][_0xe0b0('0x6b')]({'where':{'id':_0x11e969['params']['id']},'include':[{'model':db[_0xe0b0('0xd3')],'as':_0xe0b0('0xd4')}]})[_0xe0b0('0x20')](handleEntityNotFound(_0xa18619,null))[_0xe0b0('0x20')](saveUpdates(_0x11e969['body'],null))['then'](respondWithResult(_0xa18619,null))[_0xe0b0('0x27')](handleError(_0xa18619,null));};exports[_0xe0b0('0xd5')]=function(_0x333c2a,_0x2cd7db,_0x308d03){if(_0x333c2a[_0xe0b0('0x38')]['id']){delete _0x333c2a[_0xe0b0('0x38')]['id'];}return db[_0xe0b0('0x44')][_0xe0b0('0x6b')]({'where':{'id':_0x333c2a[_0xe0b0('0xb7')]['id']}})[_0xe0b0('0x20')](function(_0xaa7a71){if(!_0xaa7a71){logger[_0xe0b0('0x22')](_0xe0b0('0xd6'),_0xe0b0('0xd5'),0x194,_0xe0b0('0xd7'));_0x2cd7db[_0xe0b0('0x28')](0x194);}else{if(_0xaa7a71[_0xe0b0('0x7a')]){throw new db[(_0xe0b0('0x8e'))]['ValidationError'](_0xe0b0('0xd8'));}}return _0xaa7a71;})[_0xe0b0('0x20')](function(_0x36a006){if(_0x36a006){return _0x36a006['update']({'closed':_0x333c2a[_0xe0b0('0x38')][_0xe0b0('0xd9')],'disposition':_0x333c2a[_0xe0b0('0x38')][_0xe0b0('0xda')]})[_0xe0b0('0x20')](function(_0x3532f1){return _0x3532f1;});}})[_0xe0b0('0x20')](function(_0x581ae9){return respondWithRpcPromise(_0xe0b0('0xdb'),'abandon',_0x333c2a[_0xe0b0('0x38')],client9004);})['then'](respondWithResult(_0x2cd7db,null))[_0xe0b0('0x27')](handleError(_0x2cd7db,null));};exports[_0xe0b0('0xdc')]=function(_0x4bd799,_0x2102bc,_0x4f0cbe){_0x4bd799[_0xe0b0('0x38')][_0xe0b0('0x48')]=_0x4bd799[_0xe0b0('0xdd')][_0xe0b0('0xde')];_0x4bd799[_0xe0b0('0x38')][_0xe0b0('0xdf')]=_0x4bd799[_0xe0b0('0xdd')][_0xe0b0('0xe0')];_0x4bd799['body'][_0xe0b0('0x47')]=_0x4bd799['file']['mimetype'];return db[_0xe0b0('0xe1')][_0xe0b0('0xbc')](_0x4bd799[_0xe0b0('0x38')])['then'](respondWithResult(_0x2102bc,0xc9))['catch'](handleError(_0x2102bc,null));};exports[_0xe0b0('0xe2')]=function(_0x3c207e,_0x4fc379,_0x98e7c9){return db[_0xe0b0('0x44')][_0xe0b0('0xc0')]({'where':{'id':_0x3c207e[_0xe0b0('0xb7')]['id']},'raw':!![]})[_0xe0b0('0x20')](handleEntityNotFound(_0x4fc379,null))[_0xe0b0('0x20')](function(_0x4074bb){if(_0x4074bb){if(_0x4074bb[_0xe0b0('0xd9')]){return _0x4fc379[_0xe0b0('0x29')](0x193)['json']({'status':0x193,'message':'Unauthorized'});}return db[_0xe0b0('0xe1')][_0xe0b0('0xc0')]({'where':{'id':_0x3c207e[_0xe0b0('0x49')][_0xe0b0('0xe3')]},'raw':!![]})[_0xe0b0('0x20')](handleEntityNotFound(_0x4fc379,null));}})[_0xe0b0('0x20')](function(_0x54f90a){if(_0x54f90a){var _0x1aa40b=_0x54f90a[_0xe0b0('0xe4')]!==null;var _0x22c8a2=path[_0xe0b0('0xe5')](config[_0xe0b0('0xe6')],'server/files/attachments/');if(_0x1aa40b){_0x22c8a2=path[_0xe0b0('0xe5')](_0x22c8a2,_0xe0b0('0xe7'));}var _0x321b0b=path[_0xe0b0('0xe5')](_0x22c8a2,_0x54f90a[_0xe0b0('0xdf')]);return _0x4fc379[_0xe0b0('0xe8')](_0x321b0b);}})[_0xe0b0('0x27')](handleError(_0x4fc379,null));};exports[_0xe0b0('0xe9')]=function(_0x1ccfc1,_0x2b1474){var _0x574f0a=null;var _0x108371=null;var _0x3f2ec=null;var _0x4f0db7=null;if(_0x1ccfc1[_0xe0b0('0x38')]['id']){delete _0x1ccfc1['body']['id'];}if(_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xea')]){_0x4f0db7=path['join'](config[_0xe0b0('0xe6')],_0xe0b0('0xeb'),util[_0xe0b0('0xec')](_0xe0b0('0xed'),Date[_0xe0b0('0xee')]()));_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xef')]=_0x4f0db7;}return db['ChatInteraction']['find']({'where':{'id':_0x1ccfc1[_0xe0b0('0xb7')]['id']},'include':[{'model':db[_0xe0b0('0xf0')],'as':_0xe0b0('0xf1'),'include':[{'model':db['User'],'as':_0xe0b0('0x78')}]}]})[_0xe0b0('0x20')](handleEntityNotFound(_0x2b1474,null))[_0xe0b0('0x20')](saveUpdates(_0x1ccfc1[_0xe0b0('0x38')],null))[_0xe0b0('0x20')](function(_0x117d00){if(_0x117d00){_0x574f0a=_0x117d00;return db[_0xe0b0('0xbf')][_0xe0b0('0x6b')]({'where':{'id':_0x574f0a[_0xe0b0('0x9c')]}});}})[_0xe0b0('0x20')](function(_0x5aa313){if(_0x5aa313){_0x3f2ec=_0x5aa313;return db['CmContact'][_0xe0b0('0x6b')]({'where':{'id':_0x574f0a[_0xe0b0('0x74')]}});}})[_0xe0b0('0x20')](function(_0x3c93c6){if(_0x3c93c6){_0x108371=_0x3c93c6;if(_0x4f0db7){var _0x203351=null;for(var _0x343409=0x1;_0x343409<_0x574f0a[_0xe0b0('0xf1')]['length'];++_0x343409){_0x203351=_0x574f0a[_0xe0b0('0xf1')][_0x343409];var _0x2e7fe2=_0x203351[_0xe0b0('0x7a')]?util['format'](_0xe0b0('0xf2'),_0x3f2ec[_0xe0b0('0xf3')],_0x203351['UserId']):'System';var _0x3b3473=_0x1ccfc1['body'][_0xe0b0('0xf4')]||util['format'](_0xe0b0('0xf2'),_0xe0b0('0xf5'),_0x203351['ContactId']);switch(_0x3f2ec[_0xe0b0('0xf6')]){case _0xe0b0('0xf7'):_0x2e7fe2=_0x203351['UserId']?util[_0xe0b0('0xec')]('%s%d',_0x3f2ec[_0xe0b0('0xf3')],_0x203351[_0xe0b0('0x7a')]):_0xe0b0('0xf8');break;case _0xe0b0('0xf9'):_0x2e7fe2=_0x203351[_0xe0b0('0x7a')]?_0x203351[_0xe0b0('0x78')][_0xe0b0('0xfa')]||_0x203351['User'][_0xe0b0('0xc5')]:_0xe0b0('0xf8');break;case'agent_fullname':_0x2e7fe2=_0x203351['UserId']?_0x203351[_0xe0b0('0x78')]['fullname']:_0xe0b0('0xf8');break;default:_0x2e7fe2=_0x203351[_0xe0b0('0x7a')]?util[_0xe0b0('0xec')](_0xe0b0('0xf2'),_0x3f2ec[_0xe0b0('0xf3')],_0x203351[_0xe0b0('0x7a')]):_0xe0b0('0xf8');}var _0x8364b0=util[_0xe0b0('0xec')](_0xe0b0('0xfb'),moment(_0x203351[_0xe0b0('0x7e')])[_0xe0b0('0xec')](_0xe0b0('0xfc')),_0x203351[_0xe0b0('0xfd')]==='in'?_0x3b3473:_0x2e7fe2,_0x203351['body']);if(!_0x203351[_0xe0b0('0xfe')]){fs[_0xe0b0('0xff')](_0x4f0db7,_0x8364b0);}}return db[_0xe0b0('0x100')][_0xe0b0('0xc0')]({'where':{'service':!![]},'include':[{'model':db[_0xe0b0('0x101')],'as':'Smtp','raw':!![]}]});}}})[_0xe0b0('0x20')](function(_0x3a75d8){if(_0x3a75d8&&_0x3a75d8[_0xe0b0('0x102')]&&_0x1ccfc1[_0xe0b0('0x38')]){var _0x1e2ef8={'tls':{'rejectUnauthorized':![]}};if(_0x3a75d8[_0xe0b0('0x102')]['service']){_0x1e2ef8[_0xe0b0('0x103')]=_0x3a75d8['Smtp'][_0xe0b0('0x103')];}else{_0x1e2ef8[_0xe0b0('0x104')]=_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x104')];_0x1e2ef8[_0xe0b0('0x105')]=_0x3a75d8[_0xe0b0('0x102')]['port'];_0x1e2ef8[_0xe0b0('0x106')]=_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x106')];}if(_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x107')]){_0x1e2ef8[_0xe0b0('0x108')]={'user':_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x99')],'pass':_0x3a75d8['Smtp']['pass']};}return respondWithRpcPromise(_0xe0b0('0x109'),'sendMail',{'account':_0x1e2ef8,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x3a75d8['name'],_0x3a75d8[_0xe0b0('0xc6')]||_0x3a75d8['Smtp']['user']),'to':_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xea')],'subject':_0xe0b0('0x10a'),'text':util[_0xe0b0('0xec')](_0xe0b0('0x10b'),_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xea')]),'attachments':[{'path':_0x4f0db7}]}})[_0xe0b0('0x20')](function(){return _0x574f0a;})[_0xe0b0('0x27')](function(_0x43f1b1){console['error'](_0x43f1b1);});}else{return _0x574f0a;}})['then'](respondWithStatusCode(_0x2b1474,0xc8))[_0xe0b0('0x27')](handleError(_0x2b1474,null));};exports[_0xe0b0('0x10c')]=function(_0x2b8a03,_0x4f784a,_0x4b5a48){return db[_0xe0b0('0xf0')]['find']({'where':{'id':_0x2b8a03[_0xe0b0('0xb7')]['id']}})[_0xe0b0('0x20')](handleEntityNotFound(_0x4f784a,null))['then'](function(_0x2e393e){if(_0x2e393e){return _0x2e393e[_0xe0b0('0x10c')](_0x2b8a03[_0xe0b0('0x38')][_0xe0b0('0x10d')],_[_0xe0b0('0x10e')](_0x2b8a03[_0xe0b0('0x38')],[_0xe0b0('0x10d'),'id'])||{});}})['then'](respondWithResult(_0x4f784a,null))[_0xe0b0('0x27')](handleError(_0x4f784a,null));};exports[_0xe0b0('0x10f')]=function(_0x1f3162,_0x22da3a,_0x2b2c68){var _0x5c5c2d={'raw':![],'where':{}};var _0x4d6429={};var _0x322d1b={'count':0x0,'rows':[]};return db['ChatInteraction']['findOne']({'where':{'id':_0x1f3162[_0xe0b0('0xb7')]['id']}})['then'](handleEntityNotFound(_0x22da3a,null))[_0xe0b0('0x20')](function(_0x151da2){if(_0x151da2){_0x4d6429[_0xe0b0('0x4c')]=_[_0xe0b0('0x4a')](db['ChatMessage']['rawAttributes']);_0x4d6429[_0xe0b0('0x49')]=_[_0xe0b0('0x4a')](_0x1f3162[_0xe0b0('0x49')]);_0x4d6429[_0xe0b0('0xb8')]=_[_0xe0b0('0x4b')](_0x4d6429[_0xe0b0('0x4c')],_0x4d6429[_0xe0b0('0x49')]);_0x5c5c2d[_0xe0b0('0x4e')]=_['intersection'](_0x4d6429[_0xe0b0('0x4c')],qs[_0xe0b0('0x4d')](_0x1f3162[_0xe0b0('0x49')]['fields']));_0x5c5c2d[_0xe0b0('0x4e')]=_0x5c5c2d[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x5c5c2d[_0xe0b0('0x4e')]:_0x4d6429[_0xe0b0('0x4c')];if(!_0x1f3162[_0xe0b0('0x49')]['hasOwnProperty'](_0xe0b0('0x110'))){_0x5c5c2d[_0xe0b0('0x2e')]=qs[_0xe0b0('0x2e')](_0x1f3162['query'][_0xe0b0('0x2e')]);_0x5c5c2d[_0xe0b0('0x2c')]=qs[_0xe0b0('0x2c')](_0x1f3162[_0xe0b0('0x49')]['offset']);}_0x5c5c2d[_0xe0b0('0x51')]=qs[_0xe0b0('0x52')](_0x1f3162[_0xe0b0('0x49')][_0xe0b0('0x52')]);_0x5c5c2d[_0xe0b0('0x7c')]=qs[_0xe0b0('0xb8')](_[_0xe0b0('0x53')](_0x1f3162[_0xe0b0('0x49')],_0x4d6429['filters']));_0x5c5c2d[_0xe0b0('0x7c')]['ChatInteractionId']=_0x151da2['id'];if(_0x1f3162['query'][_0xe0b0('0x88')]){_0x5c5c2d[_0xe0b0('0x7c')]=_[_0xe0b0('0x37')](_0x5c5c2d['where'],{'$or':_[_0xe0b0('0x3d')](_0x5c5c2d['attributes'],function(_0xf0c217){var _0x4c5406={};_0x4c5406[_0xf0c217]={'$like':'%'+_0x1f3162['query']['filter']+'%'};return _0x4c5406;})});}if(_0x1f3162[_0xe0b0('0x49')][_0xe0b0('0x80')]){var _0x55e013=_0x1f3162[_0xe0b0('0x49')]['$gte']['split'](',');var _0x31fa9d={};_0x31fa9d[_0x55e013[0x0]]={'$gte':moment(_0x55e013[0x1])['format'](_0xe0b0('0x111'))};_0x5c5c2d[_0xe0b0('0x7c')]=_[_0xe0b0('0x37')](_0x5c5c2d[_0xe0b0('0x7c')],_0x31fa9d);}_0x5c5c2d=_['merge']({},_0x5c5c2d,_0x1f3162[_0xe0b0('0xbb')]);return db[_0xe0b0('0xf0')][_0xe0b0('0x2f')]({'where':_0x5c5c2d[_0xe0b0('0x7c')]})[_0xe0b0('0x20')](function(_0x51600e){_0x322d1b[_0xe0b0('0x2f')]=_0x51600e;if(_0x1f3162[_0xe0b0('0x49')]['includeAll']){_0x5c5c2d[_0xe0b0('0xba')]=[{'all':!![]}];}return db['ChatMessage'][_0xe0b0('0x112')](_0x5c5c2d);})[_0xe0b0('0x20')](function(_0x1e0374){_0x322d1b[_0xe0b0('0xb5')]=_0x1e0374;return _0x322d1b;});}})[_0xe0b0('0x20')](respondWithFilteredResult(_0x22da3a,_0x5c5c2d))[_0xe0b0('0x27')](handleError(_0x22da3a,null));};exports[_0xe0b0('0x113')]=function(_0x5b7b02,_0x565f67,_0x2853bf){var _0x4c0d9d={'where':{}},_0x38dd79={},_0x2dc446={'count':0x0,'rows':[]};return db[_0xe0b0('0x44')][_0xe0b0('0xc0')]({'where':{'id':_0x5b7b02[_0xe0b0('0xb7')]['id']}})[_0xe0b0('0x20')](handleEntityNotFound(_0x565f67,null))['then'](function(_0x5996a6){if(_0x5996a6){_0x38dd79[_0xe0b0('0x4c')]=_[_0xe0b0('0x4a')](db['ChatMessage'][_0xe0b0('0x45')]);_0x38dd79[_0xe0b0('0x49')]=_['keys'](_0x5b7b02[_0xe0b0('0x49')]);_0x38dd79[_0xe0b0('0xb8')]=_[_0xe0b0('0x4b')](_0x38dd79['model'],_0x38dd79[_0xe0b0('0x49')]);_0x4c0d9d[_0xe0b0('0x4e')]=_[_0xe0b0('0x4b')](_0x38dd79[_0xe0b0('0x4c')],qs['fields'](_0x5b7b02[_0xe0b0('0x49')]['fields']));_0x4c0d9d[_0xe0b0('0x4e')]=_0x4c0d9d[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x4c0d9d['attributes']:_0x38dd79[_0xe0b0('0x4c')];if(!_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0x50')](_0xe0b0('0x110'))){_0x4c0d9d['limit']=qs[_0xe0b0('0x2e')](_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0x2e')]);_0x4c0d9d[_0xe0b0('0x2c')]=qs[_0xe0b0('0x2c')](_0x5b7b02[_0xe0b0('0x49')]['offset']);}_0x4c0d9d['order']=qs['sort'](_0x5b7b02[_0xe0b0('0x49')]['sort']);_0x4c0d9d[_0xe0b0('0x7c')]=qs['filters'](_['pick'](_0x5b7b02[_0xe0b0('0x49')],_0x38dd79[_0xe0b0('0xb8')]));_0x4c0d9d[_0xe0b0('0x7c')][_0xe0b0('0xb3')]=_0x5996a6['id'];if(_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0x88')]){_0x4c0d9d[_0xe0b0('0x7c')]=_['merge'](_0x4c0d9d[_0xe0b0('0x7c')],{'$or':_[_0xe0b0('0x3d')](_0x4c0d9d[_0xe0b0('0x4e')],function(_0x15033e){var _0x14ba21={};_0x14ba21[_0x15033e]={'$like':'%'+_0x5b7b02[_0xe0b0('0x49')]['filter']+'%'};return _0x14ba21;})});}_0x4c0d9d['where'][_0xe0b0('0xfe')]=![];if(_0x5b7b02[_0xe0b0('0x49')]['id']){_0x4c0d9d[_0xe0b0('0x7c')]['id']={'$gt':_0x5b7b02[_0xe0b0('0x49')]['id']};}_0x4c0d9d=_[_0xe0b0('0x37')]({},_0x4c0d9d,_0x5b7b02[_0xe0b0('0xbb')]);return db[_0xe0b0('0xf0')]['count']({'where':_0x4c0d9d['where']})[_0xe0b0('0x20')](function(_0x16386b){_0x2dc446[_0xe0b0('0x2f')]=_0x16386b;_0x4c0d9d['include']=[];if(_0x5b7b02['query'][_0xe0b0('0x114')]){_0x4c0d9d[_0xe0b0('0xba')][_0xe0b0('0x42')]({'model':db[_0xe0b0('0x78')],'as':_0xe0b0('0x78'),'attributes':['id',_0xe0b0('0xc5'),_0xe0b0('0xfa')]});}if(_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0xb9')]){_0x4c0d9d[_0xe0b0('0xba')]=[{'all':!![]}];}return db['ChatMessage'][_0xe0b0('0x112')](_0x4c0d9d);})['then'](function(_0x2df3df){_0x2dc446['rows']=_0x2df3df;return _0x2dc446;});}})[_0xe0b0('0x20')](respondWithFilteredResult(_0x565f67,_0x4c0d9d))[_0xe0b0('0x27')](handleError(_0x565f67,null));};exports['addTags']=function(_0x236966,_0x41fd0e,_0x17e7d4){return db['ChatInteraction'][_0xe0b0('0x6b')]({'where':{'id':_0x236966[_0xe0b0('0xb7')]['id']}})['then'](handleEntityNotFound(_0x41fd0e,null))[_0xe0b0('0x20')](function(_0x19dafb){if(_0x19dafb){return _0x19dafb['setTags'](_0x236966['body'][_0xe0b0('0x10d')],_[_0xe0b0('0x10e')](_0x236966['body'],['ids','id'])||{})[_0xe0b0('0x115')](function(){return db['Tag'][_0xe0b0('0x112')]({'attributes':['id',_0xe0b0('0x48'),_0xe0b0('0x55')],'where':{'id':_0x236966[_0xe0b0('0x38')][_0xe0b0('0x10d')]}});})[_0xe0b0('0x20')](function(_0x36106e){socket['emit'](_0xe0b0('0x116'),{'id':Number(_0x236966['params']['id']),'tags':_0x36106e||[]});return{'id':Number(_0x236966['params']['id']),'tags':_0x36106e||[]};});}})['then'](respondWithResult(_0x41fd0e,null))[_0xe0b0('0x27')](handleError(_0x41fd0e,null));};exports[_0xe0b0('0x117')]=function(_0x263288,_0x7117ca,_0x21ccfe){return db['ChatInteraction']['find']({'where':{'id':_0x263288['params']['id']}})['then'](handleEntityNotFound(_0x7117ca,null))[_0xe0b0('0x20')](function(_0x1bd420){if(_0x1bd420){return _0x1bd420[_0xe0b0('0x117')](_0x263288['query'][_0xe0b0('0x10d')]);}})[_0xe0b0('0x20')](respondWithStatusCode(_0x7117ca,null))[_0xe0b0('0x27')](handleError(_0x7117ca,null));};exports[_0xe0b0('0xe8')]=function(_0x2d2852,_0x16a02b){var _0x125ead=moment()['unix']()[_0xe0b0('0x9e')]();var _0x380fe1=path[_0xe0b0('0xe5')](config[_0xe0b0('0xe6')],'server',_0xe0b0('0x118'),_0xe0b0('0x119'));var _0x3eb643=path[_0xe0b0('0xe5')](config['root'],'server',_0xe0b0('0x118'),_0xe0b0('0x11a'));var _0x26bd6c=path[_0xe0b0('0xe5')](_0x380fe1,_0x125ead);var _0x104409=util[_0xe0b0('0xec')]('transcript-%d-%s.zip',_0x2d2852[_0xe0b0('0xb7')]['id'],_0x125ead);var _0x6f9dbd=path[_0xe0b0('0xe5')](_0x380fe1,_0x104409);var _0x4c6646=[];_0x4c6646[_0xe0b0('0x42')]({'model':db['User'],'as':_0xe0b0('0x78'),'attributes':['id',_0xe0b0('0xc5')],'raw':!![]});_0x4c6646['push']({'model':db[_0xe0b0('0xd3')],'as':'Contact','attributes':['id','firstName',_0xe0b0('0x11b')],'raw':!![]});if(_0x2d2852['query']['attachments']){_0x4c6646['push']({'model':db[_0xe0b0('0xe1')],'as':_0xe0b0('0xe1'),'raw':!![]});}var _0x573ca9=[{'model':db[_0xe0b0('0xf0')],'as':'Messages','attributes':['id',_0xe0b0('0x38'),_0xe0b0('0x7e'),_0xe0b0('0xfd'),_0xe0b0('0xfe'),'read'],'include':_0x4c6646}];_0x573ca9['push']({'model':db['ChatWebsite'],'as':_0xe0b0('0x11c'),'attributes':['id',_0xe0b0('0x48')]});_0x573ca9['push']({'model':db['User'],'as':_0xe0b0('0x11d'),'attributes':['id',_0xe0b0('0xc5')]});return db[_0xe0b0('0x44')][_0xe0b0('0x6b')]({'where':{'id':_0x2d2852['params']['id']},'include':_0x573ca9})['then'](handleEntityNotFound(_0x16a02b,null))[_0xe0b0('0x20')](function(_0x329684){if(_0x329684){var _0x5b1bb7=_0x329684[_0xe0b0('0x11e')]({'plain':!![]});fs[_0xe0b0('0x11f')](_0x26bd6c);var _0x5b7df1={'channel':'Chat','account':_0x5b1bb7['Account'][_0xe0b0('0x48')],'agent':_0x5b1bb7[_0xe0b0('0x11d')]?_0x5b1bb7['Owner'][_0xe0b0('0xc5')]:_0xe0b0('0x120'),'createdAt':moment(_0x5b1bb7[_0xe0b0('0x7e')])[_0xe0b0('0xec')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe0b0('0x9e')](),'closedAt':_0x5b1bb7[_0xe0b0('0xd9')]?moment(_0x5b1bb7['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xe0b0('0x9e')]():'','disposition':_0x5b1bb7['disposition'],'chatInfo':{'browser':_0x5b1bb7[_0xe0b0('0x121')],'os':_0x5b1bb7['osName'],'referer':_0x5b1bb7['referer'],'customerIp':_0x5b1bb7[_0xe0b0('0x122')],'customerPort':_0x5b1bb7[_0xe0b0('0x123')]?_0x5b1bb7[_0xe0b0('0x123')]:_0xe0b0('0x120')},'messages':_(_0x5b1bb7['Messages'])['tail']()['filter']({'secret':![]})['map'](function(_0x26a916){if(_0x26a916[_0xe0b0('0xe1')]){var _0x5b5bb2=path['join'](_0x3eb643,_0x26a916[_0xe0b0('0xe1')][_0xe0b0('0xdf')]);if(fs['existsSync'](_0x5b5bb2)){fs[_0xe0b0('0x124')](_0x5b5bb2)[_0xe0b0('0x125')](fs[_0xe0b0('0x126')](path[_0xe0b0('0xe5')](_0x26bd6c,_0x26a916['Attachment'][_0xe0b0('0xdf')])));}}return{'date':moment(_0x26a916[_0xe0b0('0x7e')])[_0xe0b0('0xec')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe0b0('0x9e')](),'sender':_0x26a916[_0xe0b0('0xfd')]===_0xe0b0('0xd0')?_0x26a916[_0xe0b0('0x78')]?_0x26a916['User'][_0xe0b0('0xc5')]:_0xe0b0('0xf8'):_0x26a916[_0xe0b0('0xd4')][_0xe0b0('0x127')]+(_0x26a916[_0xe0b0('0xd4')]['lastName']?'\x20'+_0x26a916[_0xe0b0('0xd4')][_0xe0b0('0x11b')]:''),'body':_0x26a916['Attachment']?_0x26a916[_0xe0b0('0xe1')][_0xe0b0('0xdf')]:_0x26a916[_0xe0b0('0x38')],'direction':_0x26a916[_0xe0b0('0xfd')]===_0xe0b0('0xd0')?'A':'C','secret':_0x26a916[_0xe0b0('0xfe')],'read':_0x26a916['read'],'attachment':_0x26a916[_0xe0b0('0xe1')]};})[_0xe0b0('0x6d')]()};return ejs[_0xe0b0('0x128')](path[_0xe0b0('0xe5')](config[_0xe0b0('0xe6')],_0xe0b0('0x129'),_0xe0b0('0x12a'),_0xe0b0('0x12b')),{'interaction':_0x5b7df1})[_0xe0b0('0x20')](function(_0x1f5871){var _0x4d12b2=path[_0xe0b0('0xe5')](_0x26bd6c,'transcript-'+_0x5b1bb7['id']+'-'+_0x125ead+_0xe0b0('0x12c'));var _0x4b655d={'path':_0x4d12b2,'channel':'Chat','interactionId':_0x5b1bb7['id']};return pdf[_0xe0b0('0x12d')](_0x1f5871,_0x4b655d);})[_0xe0b0('0x20')](function(){return new BPromise(function(_0x5b8cef,_0x4d4eae){zipdir(_0x26bd6c,{'saveTo':_0x6f9dbd},function(_0x388f0d,_0x317dee){if(_0x388f0d)return _0x4d4eae(_0x388f0d);return _0x5b8cef(_0x317dee);});})['then'](function(){return new BPromise(function(_0x5501c2,_0xa7f2cf){rimraf(_0x26bd6c,function(_0x2c61b3){if(_0x2c61b3)_0xa7f2cf(_0x2c61b3);return _0x5501c2();});});})['then'](function(){return _0x16a02b[_0xe0b0('0xe8')](_0x6f9dbd,_0x104409,function(_0x465315){if(_0x465315){console[_0xe0b0('0x12e')](_0xe0b0('0x12f'),_0x465315);}else{fs['unlinkSync'](_0x6f9dbd);}});});});}else{return _0x16a02b[_0xe0b0('0x28')](0xc8);}})[_0xe0b0('0x27')](handleError(_0x16a02b,null));};
\ No newline at end of file
+var _0xd7d1=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','groupBy','ChatInteractionId','all','rows','show','params','includeAll','include','create','destroy','describe','createVidaooSession','findOne','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','vidaooApiKey','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','UserId','Interaction\x20already\x20assigned','update','disposition','file','basename','filename','Attachment','attachmentDownload','closed','json','Unauthorized','attachId','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','close','mailTranscript','root','transcript-%s.txt','now','pathTranscript','Messages','format','agentAlias','System','customer','%s%d','Visitor','agentIdentifier','website_alias','agent_fullname','direction','secret','appendFileSync','MailAccount','Smtp','service','host','secure','auth','pass','SendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','YYYY-MM-DD\x20HH:mm:ss','getMyMessages','alias','findAll','addTags','setTags','ids','omit','spread','emit','chatInteractionTags:save','removeTags','download','unix','tmp','server','files','attachments','transcript-%d-%s.zip','lastName','ChatWebsite','get','mkdirSync','Chat','Account','Owner','N.A.','browserName','osName','customerIp','customerPort','tail','createReadStream','pipe','createWriteStream','renderFile','downloadInteraction.ejs','.pdf','createPdfFromHTML','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./chatInteraction.socket','register','jayson/promise','client','http','then','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','info','catch','sendStatus','status','end','limit','undefined','count','offset','set','apply','reject','save','stack','name','send','contact','agent','interaction','account','map','fullname','TagIds','forEach','Tags','push','index','ChatInteraction','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','select','field','color','tools_tags','u.fullname','from','user_has_chat_interactions','users','u.id\x20=\x20ui.UserId','chat_interactions','left_join','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','find','unreadMessages','having','`\x20>\x200','Contact','operator','$substring','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','buildExpression','body','some','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','order','contactName','DESC','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','a.mandatoryDisposition','c.firstName','Contact.firstName','c.lastName','c.email'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x463f21,_0x13cb4b){_0x463f21=_0x463f21-0x0;var _0x34b117=_0xd7d1[_0x463f21];return _0x34b117;};'use strict';var emlformat=require(_0x1d7d('0x0'));var rimraf=require(_0x1d7d('0x1'));var zipdir=require(_0x1d7d('0x2'));var jsonpatch=require(_0x1d7d('0x3'));var rp=require(_0x1d7d('0x4'));var moment=require(_0x1d7d('0x5'));var BPromise=require(_0x1d7d('0x6'));var Mustache=require(_0x1d7d('0x7'));var util=require(_0x1d7d('0x8'));var path=require(_0x1d7d('0x9'));var sox=require(_0x1d7d('0xa'));var csv=require(_0x1d7d('0xb'));var ejs=require(_0x1d7d('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1d7d('0xd'));var squel=require(_0x1d7d('0xe'));var crypto=require(_0x1d7d('0xf'));var jsforce=require(_0x1d7d('0x10'));var deskjs=require(_0x1d7d('0x11'));var toCsv=require(_0x1d7d('0xb'));var querystring=require(_0x1d7d('0x12'));var Papa=require(_0x1d7d('0x13'));var Redis=require(_0x1d7d('0x14'));var authService=require(_0x1d7d('0x15'));var qs=require(_0x1d7d('0x16'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x1d7d('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1d7d('0x18'))(_0x1d7d('0x19'));var utils=require(_0x1d7d('0x1a'));var config=require(_0x1d7d('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x1d7d('0x1c'))['db'];config['redis']=_['defaults'](config[_0x1d7d('0x1d')],{'host':_0x1d7d('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1d7d('0x1f'))[_0x1d7d('0x20')](socket);var jayson=require(_0x1d7d('0x21'));var client=jayson[_0x1d7d('0x22')][_0x1d7d('0x23')]({'port':0x232b});var client9004=jayson['client'][_0x1d7d('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x1de6cc,_0x51cbca,_0xb90a8c,_0x162c3a){return new BPromise(function(_0x3c3417,_0x47826a){var _0x40db4d=_0x162c3a||client;return _0x40db4d['request'](_0x1de6cc,_0xb90a8c)[_0x1d7d('0x24')](function(_0x191024){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x51cbca,_0x1d7d('0x25'));logger[_0x1d7d('0x26')](_0x1d7d('0x27'),_0x51cbca,_0x1d7d('0x25'),JSON[_0x1d7d('0x28')](_0x191024));if(_0x191024[_0x1d7d('0x29')]){if(_0x191024['error'][_0x1d7d('0x2a')]===0x1f4){logger[_0x1d7d('0x29')](_0x1d7d('0x2b'),_0x51cbca,_0x191024['error'][_0x1d7d('0x2c')]);return _0x47826a(_0x191024[_0x1d7d('0x29')]['message']);}logger['error'](_0x1d7d('0x2b'),_0x51cbca,_0x191024[_0x1d7d('0x29')][_0x1d7d('0x2c')]);return _0x3c3417(_0x191024['error'][_0x1d7d('0x2c')]);}else{logger[_0x1d7d('0x2d')](_0x1d7d('0x2b'),_0x51cbca,_0x1d7d('0x25'));_0x3c3417(_0x191024['result'][_0x1d7d('0x2c')]);}})[_0x1d7d('0x2e')](function(_0x5c8257){logger['error'](_0x1d7d('0x2b'),_0x51cbca,_0x5c8257);_0x47826a(_0x5c8257);});});}function respondWithStatusCode(_0x52c618,_0x38c323){_0x38c323=_0x38c323||0xcc;return function(_0x2d4de4){if(_0x2d4de4){return _0x52c618[_0x1d7d('0x2f')](_0x38c323);}return _0x52c618[_0x1d7d('0x30')](_0x38c323)[_0x1d7d('0x31')]();};}function respondWithResult(_0x59f827,_0x1c2616){_0x1c2616=_0x1c2616||0xc8;return function(_0x98c1ad){if(_0x98c1ad){return _0x59f827[_0x1d7d('0x30')](_0x1c2616)['json'](_0x98c1ad);}};}function respondWithFilteredResult(_0x78adbe,_0x1a935a){return function(_0x23ad85){if(_0x23ad85){var _0x482367=typeof _0x1a935a['offset']==='undefined'&&typeof _0x1a935a[_0x1d7d('0x32')]===_0x1d7d('0x33');var _0x559f19=_0x23ad85[_0x1d7d('0x34')];var _0x3e4136=_0x482367?0x0:_0x1a935a[_0x1d7d('0x35')];var _0x3336ab=_0x482367?_0x23ad85[_0x1d7d('0x34')]:_0x1a935a[_0x1d7d('0x35')]+_0x1a935a[_0x1d7d('0x32')];var _0x803dc9;if(_0x3336ab>=_0x559f19){_0x3336ab=_0x559f19;_0x803dc9=0xc8;}else{_0x803dc9=0xce;}_0x78adbe[_0x1d7d('0x30')](_0x803dc9);return _0x78adbe[_0x1d7d('0x36')]('Content-Range',_0x3e4136+'-'+_0x3336ab+'/'+_0x559f19)['json'](_0x23ad85);}return null;};}function patchUpdates(_0x2e4402){return function(_0x2266a6){try{jsonpatch[_0x1d7d('0x37')](_0x2266a6,_0x2e4402,!![]);}catch(_0x40318f){return BPromise[_0x1d7d('0x38')](_0x40318f);}return _0x2266a6[_0x1d7d('0x39')]();};}function saveUpdates(_0x1aee3c,_0x40aca9){return function(_0x2fa3f4){if(_0x2fa3f4){return _0x2fa3f4['update'](_0x1aee3c)[_0x1d7d('0x24')](function(_0xf9d3e4){return _0xf9d3e4;});}return null;};}function removeEntity(_0x13a974,_0x30fb9a){return function(_0x4cc364){if(_0x4cc364){return _0x4cc364['destroy']()[_0x1d7d('0x24')](function(){_0x13a974[_0x1d7d('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x103c77,_0x3fea2e){return function(_0x568092){if(!_0x568092){_0x103c77['sendStatus'](0x194);}return _0x568092;};}function handleError(_0x26f81c,_0xc77f24){_0xc77f24=_0xc77f24||0x1f4;return function(_0x406f57){logger[_0x1d7d('0x29')](_0x406f57[_0x1d7d('0x3a')]);if(_0x406f57[_0x1d7d('0x3b')]){delete _0x406f57[_0x1d7d('0x3b')];}_0x26f81c[_0x1d7d('0x30')](_0xc77f24)[_0x1d7d('0x3c')](_0x406f57);};}function getMustacheRender(_0x318b9a,_0x4fcdcc){return Mustache['render'](_0x318b9a,_['merge'](_0x4fcdcc['body'],{'contact':_0x4fcdcc[_0x1d7d('0x3d')],'message':_0x4fcdcc['message'],'agent':_0x4fcdcc[_0x1d7d('0x3e')],'interaction':_0x4fcdcc[_0x1d7d('0x3f')],'account':_0x4fcdcc[_0x1d7d('0x40')]}))||'';}function getInteractionUsers(_0x515199,_0x5a4052){return new BPromise(function(_0x16a4e0,_0x153979){try{if(_0x5a4052[_0x515199['id']]){_0x515199['Users']=_[_0x1d7d('0x41')](_0x5a4052[_0x515199['id']],function(_0xa53806){return{'id':_0xa53806['id'],'fullname':_0xa53806[_0x1d7d('0x42')]};});}}catch(_0x2100f6){_0x153979(_0x2100f6);}_0x16a4e0(_0x515199);});}function getInteractionTags(_0x5eef0a,_0x1db8e8){return new BPromise(function(_0x42c229,_0x4239fa){try{if(_0x5eef0a[_0x1d7d('0x43')]){_0x5eef0a['Tags']=[];_0x5eef0a[_0x1d7d('0x43')]['split'](',')[_0x1d7d('0x44')](function(_0x31b850){_0x5eef0a[_0x1d7d('0x45')][_0x1d7d('0x46')](_0x1db8e8[_0x31b850]);});}delete _0x5eef0a[_0x1d7d('0x43')];}catch(_0x4becec){_0x4239fa(_0x4becec);}_0x42c229(_0x5eef0a);});}function updateChatInteraction(_0x59b8e7,_0x33582a,_0xe57fa5){return new BPromise(function(_0x1637fc,_0x4bed84){return getInteractionUsers(_0x59b8e7,_0xe57fa5)['then'](function(_0x12f397){return getInteractionTags(_0x12f397,_0x33582a);})['then'](function(_0x86e7bc){_0x1637fc(_0x86e7bc);})[_0x1d7d('0x2e')](function(_0x1d1064){_0x4bed84(_0x1d1064);});});}exports[_0x1d7d('0x47')]=function(_0x1e2ea8,_0x370e8d){var _0x72f5d7={},_0x51cb15={},_0x3ccd44={'count':0x0,'rows':[]};var _0x8b0c22=_['map'](db[_0x1d7d('0x48')][_0x1d7d('0x49')],function(_0x40599b){return{'name':_0x40599b[_0x1d7d('0x4a')],'type':_0x40599b[_0x1d7d('0x4b')][_0x1d7d('0x4c')]};});_0x51cb15[_0x1d7d('0x4d')]=_[_0x1d7d('0x41')](_0x8b0c22,_0x1d7d('0x3b'));_0x51cb15[_0x1d7d('0x4e')]=_[_0x1d7d('0x4f')](_0x1e2ea8[_0x1d7d('0x4e')]);_0x51cb15['filters']=_[_0x1d7d('0x50')](_0x51cb15['model'],_0x51cb15[_0x1d7d('0x4e')]);_0x72f5d7['attributes']=_[_0x1d7d('0x50')](_0x51cb15[_0x1d7d('0x4d')],qs[_0x1d7d('0x51')](_0x1e2ea8[_0x1d7d('0x4e')]['fields']));_0x72f5d7[_0x1d7d('0x52')]=_0x72f5d7['attributes']['length']?_0x72f5d7[_0x1d7d('0x52')]:_0x51cb15['model'];if(!_0x1e2ea8['query'][_0x1d7d('0x53')](_0x1d7d('0x54'))){_0x72f5d7['limit']=qs[_0x1d7d('0x32')](_0x1e2ea8[_0x1d7d('0x4e')]['limit']);_0x72f5d7[_0x1d7d('0x35')]=qs[_0x1d7d('0x35')](_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x35')]);}_0x72f5d7['order']=qs['sort'](_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x55')]);_0x72f5d7[_0x1d7d('0x56')]=qs[_0x1d7d('0x57')](_[_0x1d7d('0x58')](_0x1e2ea8['query'],_0x51cb15[_0x1d7d('0x57')]),_0x8b0c22);var _0x24e0b7=[];var _0x344b66=squel[_0x1d7d('0x59')]()[_0x1d7d('0x5a')]('id')[_0x1d7d('0x5a')](_0x1d7d('0x3b'))[_0x1d7d('0x5a')](_0x1d7d('0x5b'))['from'](_0x1d7d('0x5c'));var _0x41ad41=squel[_0x1d7d('0x59')]()['field']('u.id')[_0x1d7d('0x5a')](_0x1d7d('0x5d'))[_0x1d7d('0x5a')]('ui.ChatInteractionId')[_0x1d7d('0x5e')](_0x1d7d('0x5f'),'ui')['left_join'](_0x1d7d('0x60'),'u',_0x1d7d('0x61'));var _0x3fc216=squel[_0x1d7d('0x59')]()['from'](_0x1d7d('0x62'),'i')[_0x1d7d('0x63')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x1d7d('0x63')](_0x1d7d('0x60'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x1d7d('0x64'),'a',_0x1d7d('0x65'))[_0x1d7d('0x63')](_0x1d7d('0x66'),'me','me.ChatInteractionId\x20=\x20i.id')[_0x1d7d('0x63')]('chat_interaction_has_tags','it',_0x1d7d('0x67'))[_0x1d7d('0x63')](_0x1d7d('0x5c'),'t',_0x1d7d('0x68'));var _0x5a4bd7=squel[_0x1d7d('0x69')]();var _0x1ea966=[];var _0x193135=squel[_0x1d7d('0x69')]();var _0x28ec14;if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x6a')]){_0x28ec14=as[_0x1d7d('0x6b')](_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x6a')]);var _0x44a187=_0x28ec14[_0x1d7d('0x6c')];for(var _0x301a67=0x0;_0x301a67<_0x28ec14[_0x1d7d('0x6d')][_0x1d7d('0x6e')];_0x301a67++){var _0x520d3c=_0x28ec14[_0x1d7d('0x6d')][_0x301a67];var _0x566d27='i';var _0x1c9fe7=_[_0x1d7d('0x6f')](_0x8b0c22,[_0x1d7d('0x3b'),_0x520d3c[_0x1d7d('0x5a')]]);if(!_0x1c9fe7){switch(_0x520d3c[_0x1d7d('0x5a')]){case _0x1d7d('0x70'):if(_0x520d3c['value']==0x1){_0x3fc216[_0x1d7d('0x71')]('`'+_0x520d3c[_0x1d7d('0x5a')]+'`\x20=\x200');}else{_0x3fc216[_0x1d7d('0x71')]('`'+_0x520d3c['field']+_0x1d7d('0x72'));}break;case _0x1d7d('0x73'):if(_0x520d3c[_0x1d7d('0x74')]===_0x1d7d('0x75')){if(_0x520d3c[_0x1d7d('0x76')][_0x1d7d('0x77')]('\x20')['length']>0x1){_0x5a4bd7[_0x44a187](_0x1d7d('0x78'),qs[_0x1d7d('0x79')](_0x520d3c['value']),null);}else{var _0x3289c2='%'+_0x520d3c[_0x1d7d('0x76')]+'%';_0x5a4bd7[_0x44a187](_0x1d7d('0x7a'),_0x3289c2,_0x3289c2,_0x3289c2);}}else{_0x1c9fe7=_['find'](_0x8b0c22,[_0x1d7d('0x3b'),_0x1d7d('0x7b')]);_0x520d3c[_0x1d7d('0x5a')]=_0x1d7d('0x7b');_0x2e26d4=as['buildExpression'](_0x566d27,_0x1c9fe7[_0x1d7d('0x4b')],_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4[_0x1d7d('0x76')][_0x1d7d('0x7d')],_0x2e26d4[_0x1d7d('0x76')]['end']);}break;case _0x1d7d('0x7e'):var _0x10dea3=_0x520d3c['value'][_0x1d7d('0x77')](',')[_0x1d7d('0x41')](function(_0x17c174){return Number(_0x17c174);});_0x10dea3[_0x1d7d('0x44')](function(_0x47d27e){_0x193135['or'](_0x1d7d('0x7f'),'%,'+_0x47d27e+',%');});_0x1ea966=_['union'](_0x1ea966,_0x10dea3);break;case _0x1d7d('0x80'):if(_0x520d3c[_0x1d7d('0x74')]===_0x1d7d('0x75')){_0x5a4bd7[_0x44a187]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x520d3c[_0x1d7d('0x76')]+'%',null);}else{_0x1c9fe7=_[_0x1d7d('0x6f')](_0x8b0c22,[_0x1d7d('0x3b'),'UserId']);_0x520d3c[_0x1d7d('0x5a')]='UserId';_0x2e26d4=as[_0x1d7d('0x81')](_0x566d27,_0x1c9fe7[_0x1d7d('0x4b')],_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4[_0x1d7d('0x76')][_0x1d7d('0x7d')],_0x2e26d4[_0x1d7d('0x76')][_0x1d7d('0x31')]);}break;case _0x1d7d('0x82'):_0x2e26d4=as[_0x1d7d('0x81')]('me',null,_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4[_0x1d7d('0x76')]['start'],_0x2e26d4['value'][_0x1d7d('0x31')]);break;}}else{var _0x2e26d4=as[_0x1d7d('0x81')](_0x566d27,_0x1c9fe7['type'],_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4['value'][_0x1d7d('0x7d')],_0x2e26d4[_0x1d7d('0x76')]['end']);}}}else{var _0x1f55a2=_(_0x1e2ea8[_0x1d7d('0x4e')])['keys']()[_0x1d7d('0x41')](function(_0x40ee1f){return _[_0x1d7d('0x83')](_0x8b0c22,['name',_0x40ee1f])?_0x40ee1f:undefined;})['compact']()[_0x1d7d('0x76')]();if(!_[_0x1d7d('0x84')](_0x1f55a2)){_0x1f55a2['forEach'](function(_0x33430c){if(_0x33430c===_0x1d7d('0x85')){_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0x86'),[]['concat'](_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c]));}else if(_0x33430c===_0x1d7d('0x87')){var _0x22cdd1=JSON[_0x1d7d('0x88')](_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c])[_0x1d7d('0x89')];var _0x42a83c=JSON[_0x1d7d('0x88')](_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c])[_0x1d7d('0x8a')];_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0x8b'),_0x22cdd1,_0x42a83c);}else{if(_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c]==='null'){_0x3fc216[_0x1d7d('0x56')]('i.'+_0x33430c+_0x1d7d('0x8c'));}else{_0x3fc216['where']('i.'+_0x33430c+_0x1d7d('0x8d'),_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c]);}}});}if(_0x1e2ea8['query']['read']){if(_0x1e2ea8['query'][_0x1d7d('0x8e')]==0x1){_0x3fc216[_0x1d7d('0x71')](_0x1d7d('0x8f'));}else{_0x3fc216[_0x1d7d('0x71')]('`unreadMessages`\x20>\x200');}}if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x90')]){_0x1ea966=_[_0x1d7d('0x91')](_0x1e2ea8[_0x1d7d('0x4e')]['tag'])?_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x90')]:new Array(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x90')]);_0x1ea966[_0x1d7d('0x44')](function(_0x2a7229){_0x193135['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2a7229+',%');});}if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x92')]){var _0x57aba7=_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x92')][_0x1d7d('0x93')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x1d7d('0x94')](_0x57aba7)){_0x5a4bd7['or']('i.id\x20LIKE\x20?',_0x57aba7+'%');}else{_0x5a4bd7['or'](_0x1d7d('0x95'),qs[_0x1d7d('0x79')](_0x57aba7))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x57aba7+'%');}}}_0x3fc216[_0x1d7d('0x56')](_0x5a4bd7);_0x3fc216[_0x1d7d('0x96')](_0x1d7d('0x97'));var _0xc3c42f={'type':db[_0x1d7d('0x98')][_0x1d7d('0x99')][_0x1d7d('0x9a')],'raw':!![]};var _0x155e88=_0x3fc216[_0x1d7d('0x9b')]();_0x155e88[_0x1d7d('0x5a')](_0x1d7d('0x97'));_0x155e88[_0x1d7d('0x5a')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x72f5d7[_0x1d7d('0x9c')]){_0x72f5d7[_0x1d7d('0x9c')][_0x1d7d('0x44')](function(_0x395818){var _0x247289=_0x395818[0x0]===_0x1d7d('0x9d')?_0x395818[0x0]:'i.'+_0x395818[0x0];_0x3fc216[_0x1d7d('0x9c')](_0x247289,_0x395818[0x1]===_0x1d7d('0x9e')?![]:!![]);});}if(!_[_0x1d7d('0x84')](_0x1ea966)){_0x3fc216[_0x1d7d('0x71')](_0x193135);_0x155e88[_0x1d7d('0x56')](_0x1d7d('0x9f'),_0x1ea966);}BPromise['resolve']()[_0x1d7d('0x24')](function(){if(!_0x28ec14){if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x85')])return;_0x155e88[_0x1d7d('0x56')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0xa0'));return;}if(_0x1e2ea8[_0x1d7d('0xa1')][_0x1d7d('0xa2')]!=='agent')return;return _0x1e2ea8['user']['getChatWebsites']({'attributes':['id'],'raw':!![]})['then'](function(_0x10925b){if(_[_0x1d7d('0x84')](_0x10925b)){_0x155e88['where']('i.ChatWebsiteId\x20IS\x20NULL');_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0xa3'));}else{_0x155e88[_0x1d7d('0x56')](_0x1d7d('0x86'),_[_0x1d7d('0x41')](_0x10925b,'id'));_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0x86'),_[_0x1d7d('0x41')](_0x10925b,'id'));}});})[_0x1d7d('0x24')](function(){if(_0x1e2ea8[_0x1d7d('0xa1')]['role']===_0x1d7d('0x3e')&&!_0x28ec14&&!_0x1e2ea8['query'][_0x1d7d('0x85')])return[];return db[_0x1d7d('0xa4')][_0x1d7d('0x4e')](_0x155e88['toString'](),_0xc3c42f);})[_0x1d7d('0x24')](function(_0x40464c){_0x3ccd44[_0x1d7d('0x34')]=_0x40464c[_0x1d7d('0x6e')];if(_0x3ccd44[_0x1d7d('0x34')]===0x0)return[];return db[_0x1d7d('0xa4')][_0x1d7d('0x4e')](_0x344b66[_0x1d7d('0xa5')](),_0xc3c42f)[_0x1d7d('0x24')](function(_0x74e3fe){_0x24e0b7=_[_0x1d7d('0xa6')](_0x74e3fe,'id');_0xc3c42f=_[_0x1d7d('0xa7')](_0xc3c42f,{'model':db[_0x1d7d('0x48')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x51')]){_0x72f5d7[_0x1d7d('0x52')][_0x1d7d('0x44')](function(_0x2aac19){_0x3fc216[_0x1d7d('0x5a')]('i.'+_0x2aac19);});}else{_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xa8'),_0x1d7d('0x70'));_0x3fc216[_0x1d7d('0x5a')]('a.key',_0x1d7d('0xa9'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xaa'),'Account.mandatoryDisposition');_0x3fc216[_0x1d7d('0x5a')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x3fc216['field']('i.*');_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xab'),_0x1d7d('0xac'));_0x3fc216['field'](_0x1d7d('0xad'),'Contact.lastName');_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xae'),_0x1d7d('0xaf'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb0'),_0x1d7d('0xb1'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb2'),_0x1d7d('0xb3'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb4'),'Contact.fax');_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb5'),_0x1d7d('0xb6'));_0x3fc216['field'](_0x1d7d('0xb7'),_0x1d7d('0xb8'));_0x3fc216[_0x1d7d('0x5a')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x72f5d7[_0x1d7d('0x32')])_0x3fc216['limit'](_0x72f5d7[_0x1d7d('0x32')]);if(_0x72f5d7[_0x1d7d('0x35')])_0x3fc216['offset'](_0x72f5d7[_0x1d7d('0x35')]);return db[_0x1d7d('0xa4')]['query'](_0x3fc216[_0x1d7d('0xa5')](),_0xc3c42f);})[_0x1d7d('0x24')](function(_0x45b5e2){if(_0x45b5e2[_0x1d7d('0x6e')]>0x0)_0x41ad41['where']('ui.ChatInteractionId\x20IN\x20?',_[_0x1d7d('0x41')](_0x45b5e2,'id'));return db[_0x1d7d('0xa4')][_0x1d7d('0x4e')](_0x41ad41[_0x1d7d('0xa5')](),_0xc3c42f)[_0x1d7d('0x24')](function(_0xa5c005){var _0x1af86a=_[_0x1d7d('0xb9')](_0xa5c005,_0x1d7d('0xba'));var _0x434500=[];_0x45b5e2[_0x1d7d('0x44')](function(_0x26781c){_0x434500[_0x1d7d('0x46')](updateChatInteraction(_0x26781c,_0x24e0b7,_0x1af86a));});return BPromise[_0x1d7d('0xbb')](_0x434500);});});})[_0x1d7d('0x24')](function(_0x39924a){_0x3ccd44[_0x1d7d('0xbc')]=_0x39924a;return _0x3ccd44;})[_0x1d7d('0x24')](respondWithFilteredResult(_0x370e8d,_0x72f5d7))['catch'](handleError(_0x370e8d,null));};exports[_0x1d7d('0xbd')]=function(_0x45e83d,_0x16ce51){var _0x20b99d={'raw':![],'where':{'id':_0x45e83d[_0x1d7d('0xbe')]['id']}},_0x5ca824={};_0x5ca824[_0x1d7d('0x4d')]=_[_0x1d7d('0x4f')](db[_0x1d7d('0x48')]['rawAttributes']);_0x5ca824[_0x1d7d('0x4e')]=_['keys'](_0x45e83d[_0x1d7d('0x4e')]);_0x5ca824[_0x1d7d('0x57')]=_[_0x1d7d('0x50')](_0x5ca824['model'],_0x5ca824[_0x1d7d('0x4e')]);_0x20b99d['attributes']=_[_0x1d7d('0x50')](_0x5ca824[_0x1d7d('0x4d')],qs[_0x1d7d('0x51')](_0x45e83d[_0x1d7d('0x4e')]['fields']));_0x20b99d[_0x1d7d('0x52')]=_0x20b99d['attributes'][_0x1d7d('0x6e')]?_0x20b99d[_0x1d7d('0x52')]:_0x5ca824['model'];if(_0x45e83d[_0x1d7d('0x4e')][_0x1d7d('0xbf')]){_0x20b99d[_0x1d7d('0xc0')]=[{'all':!![]}];}_0x20b99d=_[_0x1d7d('0xa7')]({},_0x20b99d,_0x45e83d['options']);return db['ChatInteraction']['find'](_0x20b99d)[_0x1d7d('0x24')](handleEntityNotFound(_0x16ce51,null))[_0x1d7d('0x24')](respondWithResult(_0x16ce51,null))[_0x1d7d('0x2e')](handleError(_0x16ce51,null));};exports[_0x1d7d('0xc1')]=function(_0x458f92,_0x55ea3b){return db[_0x1d7d('0x48')][_0x1d7d('0xc1')](_0x458f92[_0x1d7d('0x82')],{})[_0x1d7d('0x24')](respondWithResult(_0x55ea3b,0xc9))['catch'](handleError(_0x55ea3b,null));};exports['update']=function(_0xbde512,_0x21995f){if(_0xbde512[_0x1d7d('0x82')]['id']){delete _0xbde512[_0x1d7d('0x82')]['id'];}return db[_0x1d7d('0x48')][_0x1d7d('0x6f')]({'where':{'id':_0xbde512['params']['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x21995f,null))['then'](saveUpdates(_0xbde512[_0x1d7d('0x82')],null))[_0x1d7d('0x24')](respondWithResult(_0x21995f,null))['catch'](handleError(_0x21995f,null));};exports[_0x1d7d('0xc2')]=function(_0x5a754a,_0x13566e){return db[_0x1d7d('0x48')][_0x1d7d('0x6f')]({'where':{'id':_0x5a754a[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x13566e,null))['then'](removeEntity(_0x13566e,null))[_0x1d7d('0x2e')](handleError(_0x13566e,null));};exports['describe']=function(_0x303d6f,_0x5bf0de){return db['ChatInteraction'][_0x1d7d('0xc3')]()[_0x1d7d('0x24')](respondWithResult(_0x5bf0de,null))[_0x1d7d('0x2e')](handleError(_0x5bf0de,null));};exports[_0x1d7d('0xc4')]=function(_0x8ce169,_0x3f119f){var _0x14d3fb=_0x8ce169[_0x1d7d('0xbe')]['id'];var _0x3d5fff;var _0x3b7543;var _0x3e94d6;return db[_0x1d7d('0x48')]['findOne']({'where':{'id':_0x14d3fb}})['then'](function(_0x1f2d68){_0x3d5fff=_0x1f2d68;return db['ChatWebsite'][_0x1d7d('0xc5')]({'where':{'id':_0x1f2d68['ChatWebsiteId']},'attributes':['id','vidaooApiKey',_0x1d7d('0xc6'),_0x1d7d('0xc7'),_0x1d7d('0xc8'),_0x1d7d('0xc9')],'raw':!![]});})[_0x1d7d('0x24')](function(_0xd919b1){if(_0xd919b1&&_0xd919b1[_0x1d7d('0xca')]&&_0xd919b1[_0x1d7d('0xc6')]){_0x3b7543=_0xd919b1;var _0x5690c={'interaction':{'id':_0x14d3fb},'agent':{'id':_0x8ce169['user']['id'],'name':_0x8ce169['user'][_0x1d7d('0x3b')],'fullname':_0x8ce169['user'][_0x1d7d('0x42')],'email':_0x8ce169[_0x1d7d('0xa1')][_0x1d7d('0xcb')]},'contact':_0x8ce169[_0x1d7d('0x82')][_0x1d7d('0x3d')],'account':_0x8ce169[_0x1d7d('0x82')][_0x1d7d('0x40')]};var _0x3774f8={'rejectUnauthorized':![],'method':_0x1d7d('0xcc'),'url':_0x1d7d('0xcd'),'headers':{'X-APIKEY':_0xd919b1[_0x1d7d('0xca')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x8ce169[_0x1d7d('0xa1')]['email']],'buttons':null,'topic':_0x3b7543['vidaooTopic'],'note':_[_0x1d7d('0xce')](_0x3b7543[_0x1d7d('0xc8')])?null:getMustacheRender(_0x3b7543[_0x1d7d('0xc8')],_0x5690c),'metadata':null},'redirect':'follow','json':!![]};try{if(!_['isNull'](_0x3b7543[_0x1d7d('0xc9')])){var _0x470f5e=getMustacheRender(_0x3b7543['vidaooMetadata'],_0x5690c);var _0x1f0d9f=JSON['parse'](_0x470f5e);_0x3774f8[_0x1d7d('0x82')]['metadata']=_0x1f0d9f;}}catch(_0x1f50d4){throw new db[(_0x1d7d('0x98'))][(_0x1d7d('0xcf'))](_0x1d7d('0xd0'));}return rp(_0x3774f8);}else{throw new db[(_0x1d7d('0x98'))][(_0x1d7d('0xcf'))](_0x1d7d('0xd1'));}})[_0x1d7d('0x24')](function(_0x4f1602){_0x3e94d6=_0x4f1602;if(_0x3e94d6['id']){var _0x202d85={'body':_0x3e94d6[_0x1d7d('0xd2')],'ChatWebsiteId':_0x3b7543['id'],'ChatInteractionId':_0x3d5fff['id'],'direction':_0x1d7d('0xd3'),'UserId':_0x8ce169[_0x1d7d('0xa1')]['id']};return db[_0x1d7d('0xd4')][_0x1d7d('0xc1')](_0x202d85,{});}else{throw new db['Sequelize'][(_0x1d7d('0xcf'))]('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0x1d7d('0x24')](function(){return _0x3d5fff[_0x1d7d('0xd5')]({'vidaooSessionId':_0x3e94d6['id']});})['then'](respondWithResult(_0x3f119f,null))[_0x1d7d('0x2e')](handleError(_0x3f119f,null));};exports[_0x1d7d('0xd6')]=function(_0x3e7f3c,_0x454679){if(_0x3e7f3c['body']['id']){delete _0x3e7f3c[_0x1d7d('0x82')]['id'];}return db[_0x1d7d('0x48')]['find']({'where':{'id':_0x3e7f3c['params']['id']},'include':[{'model':db[_0x1d7d('0xd7')],'as':'Contact'}]})['then'](handleEntityNotFound(_0x454679,null))['then'](saveUpdates(_0x3e7f3c[_0x1d7d('0x82')],null))['then'](respondWithResult(_0x454679,null))[_0x1d7d('0x2e')](handleError(_0x454679,null));};exports[_0x1d7d('0xd8')]=function(_0x4abfb1,_0x4caa84,_0x561f33){if(_0x4abfb1[_0x1d7d('0x82')]['id']){delete _0x4abfb1[_0x1d7d('0x82')]['id'];}return db[_0x1d7d('0x48')]['find']({'where':{'id':_0x4abfb1[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](function(_0x54616b){if(!_0x54616b){logger['error'](_0x1d7d('0xd9'),'abandon',0x194,'entity\x20not\x20found');_0x4caa84[_0x1d7d('0x2f')](0x194);}else{if(_0x54616b[_0x1d7d('0xda')]){throw new db[(_0x1d7d('0x98'))][(_0x1d7d('0xcf'))](_0x1d7d('0xdb'));}}return _0x54616b;})[_0x1d7d('0x24')](function(_0x19427f){if(_0x19427f){return _0x19427f[_0x1d7d('0xdc')]({'closed':_0x4abfb1['body']['closed'],'disposition':_0x4abfb1[_0x1d7d('0x82')][_0x1d7d('0xdd')]})[_0x1d7d('0x24')](function(_0x4d8a36){return _0x4d8a36;});}})[_0x1d7d('0x24')](function(_0x216585){return respondWithRpcPromise('AbandonInteraction',_0x1d7d('0xd8'),_0x4abfb1[_0x1d7d('0x82')],client9004);})[_0x1d7d('0x24')](respondWithResult(_0x4caa84,null))['catch'](handleError(_0x4caa84,null));};exports['attachmentUpload']=function(_0x854f68,_0x205d6f,_0x149415){_0x854f68[_0x1d7d('0x82')][_0x1d7d('0x3b')]=_0x854f68[_0x1d7d('0xde')]['originalname'];_0x854f68[_0x1d7d('0x82')][_0x1d7d('0xdf')]=_0x854f68['file'][_0x1d7d('0xe0')];_0x854f68[_0x1d7d('0x82')]['type']=_0x854f68['file']['mimetype'];return db[_0x1d7d('0xe1')][_0x1d7d('0xc1')](_0x854f68[_0x1d7d('0x82')])[_0x1d7d('0x24')](respondWithResult(_0x205d6f,0xc9))[_0x1d7d('0x2e')](handleError(_0x205d6f,null));};exports[_0x1d7d('0xe2')]=function(_0x3e358c,_0x2eae3c,_0x3838ef){return db[_0x1d7d('0x48')][_0x1d7d('0xc5')]({'where':{'id':_0x3e358c[_0x1d7d('0xbe')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x2eae3c,null))['then'](function(_0x545b09){if(_0x545b09){if(_0x545b09[_0x1d7d('0xe3')]){return _0x2eae3c[_0x1d7d('0x30')](0x193)[_0x1d7d('0xe4')]({'status':0x193,'message':_0x1d7d('0xe5')});}return db[_0x1d7d('0xe1')][_0x1d7d('0xc5')]({'where':{'id':_0x3e358c[_0x1d7d('0x4e')][_0x1d7d('0xe6')]},'raw':!![]})['then'](handleEntityNotFound(_0x2eae3c,null));}})['then'](function(_0x549144){if(_0x549144){var _0x2a4feb=_0x549144[_0x1d7d('0xe7')]!==null;var _0x4df896=path[_0x1d7d('0xe8')](config['root'],_0x1d7d('0xe9'));if(_0x2a4feb){_0x4df896=path[_0x1d7d('0xe8')](_0x4df896,_0x1d7d('0xea'));}var _0x37eb97=path[_0x1d7d('0xe8')](_0x4df896,_0x549144[_0x1d7d('0xdf')]);return _0x2eae3c['download'](_0x37eb97);}})[_0x1d7d('0x2e')](handleError(_0x2eae3c,null));};exports[_0x1d7d('0xeb')]=function(_0x185697,_0x4d5753){var _0x55929b=null;var _0x43ce7f=null;var _0x2b0486=null;var _0x337c32=null;if(_0x185697['body']['id']){delete _0x185697[_0x1d7d('0x82')]['id'];}if(_0x185697['body'][_0x1d7d('0xec')]){_0x337c32=path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],'server/files/chat/upload/',util['format'](_0x1d7d('0xee'),Date[_0x1d7d('0xef')]()));_0x185697[_0x1d7d('0x82')][_0x1d7d('0xf0')]=_0x337c32;}return db[_0x1d7d('0x48')][_0x1d7d('0x6f')]({'where':{'id':_0x185697[_0x1d7d('0xbe')]['id']},'include':[{'model':db[_0x1d7d('0xd4')],'as':_0x1d7d('0xf1'),'include':[{'model':db[_0x1d7d('0x80')],'as':_0x1d7d('0x80')}]}]})['then'](handleEntityNotFound(_0x4d5753,null))[_0x1d7d('0x24')](saveUpdates(_0x185697[_0x1d7d('0x82')],null))[_0x1d7d('0x24')](function(_0x551a56){if(_0x551a56){_0x55929b=_0x551a56;return db['ChatWebsite'][_0x1d7d('0x6f')]({'where':{'id':_0x55929b['ChatWebsiteId']}});}})[_0x1d7d('0x24')](function(_0x1d47d9){if(_0x1d47d9){_0x2b0486=_0x1d47d9;return db[_0x1d7d('0xd7')]['find']({'where':{'id':_0x55929b[_0x1d7d('0x7b')]}});}})['then'](function(_0x5c0be4){if(_0x5c0be4){_0x43ce7f=_0x5c0be4;if(_0x337c32){var _0x46b9e5=null;for(var _0x385e15=0x1;_0x385e15<_0x55929b['Messages'][_0x1d7d('0x6e')];++_0x385e15){_0x46b9e5=_0x55929b[_0x1d7d('0xf1')][_0x385e15];var _0x20543c=_0x46b9e5[_0x1d7d('0xda')]?util[_0x1d7d('0xf2')]('%s%d',_0x2b0486[_0x1d7d('0xf3')],_0x46b9e5['UserId']):_0x1d7d('0xf4');var _0x474f68=_0x185697['body'][_0x1d7d('0xf5')]||util[_0x1d7d('0xf2')](_0x1d7d('0xf6'),_0x1d7d('0xf7'),_0x46b9e5[_0x1d7d('0x7b')]);switch(_0x2b0486[_0x1d7d('0xf8')]){case _0x1d7d('0xf9'):_0x20543c=_0x46b9e5[_0x1d7d('0xda')]?util[_0x1d7d('0xf2')](_0x1d7d('0xf6'),_0x2b0486[_0x1d7d('0xf3')],_0x46b9e5[_0x1d7d('0xda')]):_0x1d7d('0xf4');break;case'agent_alias':_0x20543c=_0x46b9e5['UserId']?_0x46b9e5[_0x1d7d('0x80')]['alias']||_0x46b9e5['User'][_0x1d7d('0x42')]:'System';break;case _0x1d7d('0xfa'):_0x20543c=_0x46b9e5[_0x1d7d('0xda')]?_0x46b9e5[_0x1d7d('0x80')]['fullname']:_0x1d7d('0xf4');break;default:_0x20543c=_0x46b9e5[_0x1d7d('0xda')]?util[_0x1d7d('0xf2')](_0x1d7d('0xf6'),_0x2b0486[_0x1d7d('0xf3')],_0x46b9e5[_0x1d7d('0xda')]):_0x1d7d('0xf4');}var _0x353bb1=util[_0x1d7d('0xf2')]('[%s]\x20%s:\x20%s\x0a',moment(_0x46b9e5[_0x1d7d('0x87')])['format']('MM/DD/YYYY\x20HH:mm:ss'),_0x46b9e5[_0x1d7d('0xfb')]==='in'?_0x474f68:_0x20543c,_0x46b9e5['body']);if(!_0x46b9e5[_0x1d7d('0xfc')]){fs[_0x1d7d('0xfd')](_0x337c32,_0x353bb1);}}return db[_0x1d7d('0xfe')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x1d7d('0xff'),'raw':!![]}]});}}})[_0x1d7d('0x24')](function(_0x5c2113){if(_0x5c2113&&_0x5c2113[_0x1d7d('0xff')]&&_0x185697[_0x1d7d('0x82')]){var _0x129d4b={'tls':{'rejectUnauthorized':![]}};if(_0x5c2113['Smtp']['service']){_0x129d4b[_0x1d7d('0x100')]=_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0x100')];}else{_0x129d4b['host']=_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0x101')];_0x129d4b['port']=_0x5c2113['Smtp']['port'];_0x129d4b[_0x1d7d('0x102')]=_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0x102')];}if(_0x5c2113['Smtp']['authentication']){_0x129d4b[_0x1d7d('0x103')]={'user':_0x5c2113[_0x1d7d('0xff')]['user'],'pass':_0x5c2113['Smtp'][_0x1d7d('0x104')]};}return respondWithRpcPromise(_0x1d7d('0x105'),'sendMail',{'account':_0x129d4b,'message':{'from':util[_0x1d7d('0xf2')]('\x22%s\x22\x20<%s>',_0x5c2113[_0x1d7d('0x3b')],_0x5c2113[_0x1d7d('0xcb')]||_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0xa1')]),'to':_0x185697[_0x1d7d('0x82')][_0x1d7d('0xec')],'subject':_0x1d7d('0x106'),'text':util[_0x1d7d('0xf2')](_0x1d7d('0x107'),_0x185697[_0x1d7d('0x82')][_0x1d7d('0xec')]),'attachments':[{'path':_0x337c32}]}})['then'](function(){return _0x55929b;})[_0x1d7d('0x2e')](function(_0x18c505){console[_0x1d7d('0x29')](_0x18c505);});}else{return _0x55929b;}})['then'](respondWithStatusCode(_0x4d5753,0xc8))['catch'](handleError(_0x4d5753,null));};exports[_0x1d7d('0x108')]=function(_0x1b41b5,_0x5b79bd,_0xb87340){return db[_0x1d7d('0xd4')][_0x1d7d('0x6f')]({'where':{'id':_0x1b41b5[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x5b79bd,null))[_0x1d7d('0x24')](function(_0x537520){if(_0x537520){return _0x537520[_0x1d7d('0x108')](_0x1b41b5['body']['ids'],_['omit'](_0x1b41b5[_0x1d7d('0x82')],['ids','id'])||{});}})[_0x1d7d('0x24')](respondWithResult(_0x5b79bd,null))[_0x1d7d('0x2e')](handleError(_0x5b79bd,null));};exports['getMessages']=function(_0x1ce79d,_0x7dbbc9,_0x286ddd){var _0x1484b1={'raw':![],'where':{}};var _0x5be0c4={};var _0x50be17={'count':0x0,'rows':[]};return db[_0x1d7d('0x48')][_0x1d7d('0xc5')]({'where':{'id':_0x1ce79d[_0x1d7d('0xbe')]['id']}})['then'](handleEntityNotFound(_0x7dbbc9,null))['then'](function(_0x81fadf){if(_0x81fadf){_0x5be0c4['model']=_[_0x1d7d('0x4f')](db[_0x1d7d('0xd4')][_0x1d7d('0x49')]);_0x5be0c4[_0x1d7d('0x4e')]=_['keys'](_0x1ce79d[_0x1d7d('0x4e')]);_0x5be0c4['filters']=_[_0x1d7d('0x50')](_0x5be0c4[_0x1d7d('0x4d')],_0x5be0c4[_0x1d7d('0x4e')]);_0x1484b1['attributes']=_[_0x1d7d('0x50')](_0x5be0c4[_0x1d7d('0x4d')],qs['fields'](_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x51')]));_0x1484b1[_0x1d7d('0x52')]=_0x1484b1[_0x1d7d('0x52')]['length']?_0x1484b1[_0x1d7d('0x52')]:_0x5be0c4[_0x1d7d('0x4d')];if(!_0x1ce79d[_0x1d7d('0x4e')]['hasOwnProperty']('nolimit')){_0x1484b1[_0x1d7d('0x32')]=qs['limit'](_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x32')]);_0x1484b1[_0x1d7d('0x35')]=qs['offset'](_0x1ce79d[_0x1d7d('0x4e')]['offset']);}_0x1484b1[_0x1d7d('0x9c')]=qs['sort'](_0x1ce79d[_0x1d7d('0x4e')]['sort']);_0x1484b1['where']=qs[_0x1d7d('0x57')](_[_0x1d7d('0x58')](_0x1ce79d[_0x1d7d('0x4e')],_0x5be0c4[_0x1d7d('0x57')]));_0x1484b1[_0x1d7d('0x56')]['ChatInteractionId']=_0x81fadf['id'];if(_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x92')]){_0x1484b1[_0x1d7d('0x56')]=_['merge'](_0x1484b1[_0x1d7d('0x56')],{'$or':_['map'](_0x1484b1['attributes'],function(_0x19ee24){var _0x3cdad2={};_0x3cdad2[_0x19ee24]={'$like':'%'+_0x1ce79d['query'][_0x1d7d('0x92')]+'%'};return _0x3cdad2;})});}if(_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x89')]){var _0x24984d=_0x1ce79d[_0x1d7d('0x4e')]['$gte'][_0x1d7d('0x77')](',');var _0x5a2144={};_0x5a2144[_0x24984d[0x0]]={'$gte':moment(_0x24984d[0x1])[_0x1d7d('0xf2')](_0x1d7d('0x109'))};_0x1484b1[_0x1d7d('0x56')]=_['merge'](_0x1484b1['where'],_0x5a2144);}_0x1484b1=_['merge']({},_0x1484b1,_0x1ce79d['options']);return db['ChatMessage'][_0x1d7d('0x34')]({'where':_0x1484b1[_0x1d7d('0x56')]})[_0x1d7d('0x24')](function(_0x1e83dc){_0x50be17[_0x1d7d('0x34')]=_0x1e83dc;if(_0x1ce79d['query']['includeAll']){_0x1484b1[_0x1d7d('0xc0')]=[{'all':!![]}];}return db[_0x1d7d('0xd4')]['findAll'](_0x1484b1);})[_0x1d7d('0x24')](function(_0x2d0232){_0x50be17[_0x1d7d('0xbc')]=_0x2d0232;return _0x50be17;});}})['then'](respondWithFilteredResult(_0x7dbbc9,_0x1484b1))[_0x1d7d('0x2e')](handleError(_0x7dbbc9,null));};exports[_0x1d7d('0x10a')]=function(_0xb42210,_0x3844b6,_0x1181b6){var _0x530493={'where':{}},_0x53cdb8={},_0x960917={'count':0x0,'rows':[]};return db[_0x1d7d('0x48')][_0x1d7d('0xc5')]({'where':{'id':_0xb42210[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x3844b6,null))['then'](function(_0x339603){if(_0x339603){_0x53cdb8[_0x1d7d('0x4d')]=_['keys'](db['ChatMessage'][_0x1d7d('0x49')]);_0x53cdb8['query']=_[_0x1d7d('0x4f')](_0xb42210[_0x1d7d('0x4e')]);_0x53cdb8[_0x1d7d('0x57')]=_[_0x1d7d('0x50')](_0x53cdb8[_0x1d7d('0x4d')],_0x53cdb8[_0x1d7d('0x4e')]);_0x530493[_0x1d7d('0x52')]=_['intersection'](_0x53cdb8[_0x1d7d('0x4d')],qs[_0x1d7d('0x51')](_0xb42210[_0x1d7d('0x4e')]['fields']));_0x530493[_0x1d7d('0x52')]=_0x530493[_0x1d7d('0x52')]['length']?_0x530493[_0x1d7d('0x52')]:_0x53cdb8['model'];if(!_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x53')](_0x1d7d('0x54'))){_0x530493[_0x1d7d('0x32')]=qs[_0x1d7d('0x32')](_0xb42210['query'][_0x1d7d('0x32')]);_0x530493[_0x1d7d('0x35')]=qs['offset'](_0xb42210['query'][_0x1d7d('0x35')]);}_0x530493[_0x1d7d('0x9c')]=qs['sort'](_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x55')]);_0x530493[_0x1d7d('0x56')]=qs[_0x1d7d('0x57')](_['pick'](_0xb42210['query'],_0x53cdb8[_0x1d7d('0x57')]));_0x530493[_0x1d7d('0x56')][_0x1d7d('0xba')]=_0x339603['id'];if(_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x92')]){_0x530493[_0x1d7d('0x56')]=_[_0x1d7d('0xa7')](_0x530493[_0x1d7d('0x56')],{'$or':_[_0x1d7d('0x41')](_0x530493[_0x1d7d('0x52')],function(_0x3dfeb8){var _0x4726cb={};_0x4726cb[_0x3dfeb8]={'$like':'%'+_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x92')]+'%'};return _0x4726cb;})});}_0x530493[_0x1d7d('0x56')][_0x1d7d('0xfc')]=![];if(_0xb42210[_0x1d7d('0x4e')]['id']){_0x530493['where']['id']={'$gt':_0xb42210[_0x1d7d('0x4e')]['id']};}_0x530493=_['merge']({},_0x530493,_0xb42210['options']);return db[_0x1d7d('0xd4')][_0x1d7d('0x34')]({'where':_0x530493[_0x1d7d('0x56')]})[_0x1d7d('0x24')](function(_0x1e2b03){_0x960917['count']=_0x1e2b03;_0x530493[_0x1d7d('0xc0')]=[];if(_0xb42210[_0x1d7d('0x4e')]['includeAgent']){_0x530493[_0x1d7d('0xc0')]['push']({'model':db[_0x1d7d('0x80')],'as':_0x1d7d('0x80'),'attributes':['id',_0x1d7d('0x42'),_0x1d7d('0x10b')]});}if(_0xb42210[_0x1d7d('0x4e')]['includeAll']){_0x530493[_0x1d7d('0xc0')]=[{'all':!![]}];}return db[_0x1d7d('0xd4')][_0x1d7d('0x10c')](_0x530493);})[_0x1d7d('0x24')](function(_0x2d1258){_0x960917[_0x1d7d('0xbc')]=_0x2d1258;return _0x960917;});}})[_0x1d7d('0x24')](respondWithFilteredResult(_0x3844b6,_0x530493))[_0x1d7d('0x2e')](handleError(_0x3844b6,null));};exports[_0x1d7d('0x10d')]=function(_0x34b43f,_0x14a937,_0x291f26){return db['ChatInteraction'][_0x1d7d('0x6f')]({'where':{'id':_0x34b43f[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x14a937,null))['then'](function(_0x59b044){if(_0x59b044){return _0x59b044[_0x1d7d('0x10e')](_0x34b43f['body'][_0x1d7d('0x10f')],_[_0x1d7d('0x110')](_0x34b43f[_0x1d7d('0x82')],[_0x1d7d('0x10f'),'id'])||{})[_0x1d7d('0x111')](function(){return db[_0x1d7d('0x7e')]['findAll']({'attributes':['id',_0x1d7d('0x3b'),'color'],'where':{'id':_0x34b43f['body'][_0x1d7d('0x10f')]}});})[_0x1d7d('0x24')](function(_0x5b1ae1){socket[_0x1d7d('0x112')](_0x1d7d('0x113'),{'id':Number(_0x34b43f['params']['id']),'tags':_0x5b1ae1||[]});return{'id':Number(_0x34b43f[_0x1d7d('0xbe')]['id']),'tags':_0x5b1ae1||[]};});}})['then'](respondWithResult(_0x14a937,null))[_0x1d7d('0x2e')](handleError(_0x14a937,null));};exports[_0x1d7d('0x114')]=function(_0x7c3bd8,_0x552481,_0x2c91d5){return db['ChatInteraction'][_0x1d7d('0x6f')]({'where':{'id':_0x7c3bd8[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x552481,null))[_0x1d7d('0x24')](function(_0xf5e9f8){if(_0xf5e9f8){return _0xf5e9f8['removeTags'](_0x7c3bd8['query'][_0x1d7d('0x10f')]);}})[_0x1d7d('0x24')](respondWithStatusCode(_0x552481,null))['catch'](handleError(_0x552481,null));};exports[_0x1d7d('0x115')]=function(_0x210be0,_0x5f1b69){var _0x44c5ac=moment()[_0x1d7d('0x116')]()['toString']();var _0x39cae3=path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],'server','files',_0x1d7d('0x117'));var _0x1eec70=path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],_0x1d7d('0x118'),_0x1d7d('0x119'),_0x1d7d('0x11a'));var _0x3ded4b=path['join'](_0x39cae3,_0x44c5ac);var _0xe65d48=util[_0x1d7d('0xf2')](_0x1d7d('0x11b'),_0x210be0[_0x1d7d('0xbe')]['id'],_0x44c5ac);var _0x3b440c=path['join'](_0x39cae3,_0xe65d48);var _0x473472=[];_0x473472[_0x1d7d('0x46')]({'model':db[_0x1d7d('0x80')],'as':_0x1d7d('0x80'),'attributes':['id',_0x1d7d('0x42')],'raw':!![]});_0x473472[_0x1d7d('0x46')]({'model':db[_0x1d7d('0xd7')],'as':_0x1d7d('0x73'),'attributes':['id','firstName',_0x1d7d('0x11c')],'raw':!![]});if(_0x210be0[_0x1d7d('0x4e')][_0x1d7d('0x11a')]){_0x473472[_0x1d7d('0x46')]({'model':db['Attachment'],'as':_0x1d7d('0xe1'),'raw':!![]});}var _0x2aab28=[{'model':db[_0x1d7d('0xd4')],'as':_0x1d7d('0xf1'),'attributes':['id','body',_0x1d7d('0x87'),_0x1d7d('0xfb'),'secret',_0x1d7d('0x8e')],'include':_0x473472}];_0x2aab28['push']({'model':db[_0x1d7d('0x11d')],'as':'Account','attributes':['id','name']});_0x2aab28[_0x1d7d('0x46')]({'model':db[_0x1d7d('0x80')],'as':'Owner','attributes':['id','fullname']});return db[_0x1d7d('0x48')]['find']({'where':{'id':_0x210be0[_0x1d7d('0xbe')]['id']},'include':_0x2aab28})[_0x1d7d('0x24')](handleEntityNotFound(_0x5f1b69,null))[_0x1d7d('0x24')](function(_0x4e8473){if(_0x4e8473){var _0x194822=_0x4e8473[_0x1d7d('0x11e')]({'plain':!![]});fs[_0x1d7d('0x11f')](_0x3ded4b);var _0x3e93bb={'channel':_0x1d7d('0x120'),'account':_0x194822[_0x1d7d('0x121')]['name'],'agent':_0x194822['Owner']?_0x194822[_0x1d7d('0x122')][_0x1d7d('0x42')]:_0x1d7d('0x123'),'createdAt':moment(_0x194822[_0x1d7d('0x87')])[_0x1d7d('0xf2')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x194822[_0x1d7d('0xe3')]?moment(_0x194822['closedAt'])['format'](_0x1d7d('0x109'))[_0x1d7d('0xa5')]():'','disposition':_0x194822[_0x1d7d('0xdd')],'chatInfo':{'browser':_0x194822[_0x1d7d('0x124')],'os':_0x194822[_0x1d7d('0x125')],'referer':_0x194822['referer'],'customerIp':_0x194822[_0x1d7d('0x126')],'customerPort':_0x194822[_0x1d7d('0x127')]?_0x194822[_0x1d7d('0x127')]:_0x1d7d('0x123')},'messages':_(_0x194822[_0x1d7d('0xf1')])[_0x1d7d('0x128')]()['filter']({'secret':![]})[_0x1d7d('0x41')](function(_0x6ea91f){if(_0x6ea91f[_0x1d7d('0xe1')]){var _0x2b3cbd=path[_0x1d7d('0xe8')](_0x1eec70,_0x6ea91f[_0x1d7d('0xe1')][_0x1d7d('0xdf')]);if(fs['existsSync'](_0x2b3cbd)){fs[_0x1d7d('0x129')](_0x2b3cbd)[_0x1d7d('0x12a')](fs[_0x1d7d('0x12b')](path[_0x1d7d('0xe8')](_0x3ded4b,_0x6ea91f[_0x1d7d('0xe1')]['basename'])));}}return{'date':moment(_0x6ea91f[_0x1d7d('0x87')])[_0x1d7d('0xf2')](_0x1d7d('0x109'))[_0x1d7d('0xa5')](),'sender':_0x6ea91f['direction']==='out'?_0x6ea91f[_0x1d7d('0x80')]?_0x6ea91f[_0x1d7d('0x80')][_0x1d7d('0x42')]:_0x1d7d('0xf4'):_0x6ea91f[_0x1d7d('0x73')]['firstName']+(_0x6ea91f[_0x1d7d('0x73')][_0x1d7d('0x11c')]?'\x20'+_0x6ea91f[_0x1d7d('0x73')]['lastName']:''),'body':_0x6ea91f[_0x1d7d('0xe1')]?_0x6ea91f[_0x1d7d('0xe1')][_0x1d7d('0xdf')]:_0x6ea91f[_0x1d7d('0x82')],'direction':_0x6ea91f['direction']===_0x1d7d('0xd3')?'A':'C','secret':_0x6ea91f[_0x1d7d('0xfc')],'read':_0x6ea91f[_0x1d7d('0x8e')],'attachment':_0x6ea91f['Attachment']};})[_0x1d7d('0x76')]()};return ejs[_0x1d7d('0x12c')](path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],'server','views',_0x1d7d('0x12d')),{'interaction':_0x3e93bb})[_0x1d7d('0x24')](function(_0x43f4cb){var _0x21d65a=path[_0x1d7d('0xe8')](_0x3ded4b,'transcript-'+_0x194822['id']+'-'+_0x44c5ac+_0x1d7d('0x12e'));var _0x4d0682={'path':_0x21d65a,'channel':_0x1d7d('0x120'),'interactionId':_0x194822['id']};return pdf[_0x1d7d('0x12f')](_0x43f4cb,_0x4d0682);})['then'](function(){return new BPromise(function(_0x29f93c,_0x582183){zipdir(_0x3ded4b,{'saveTo':_0x3b440c},function(_0x12250e,_0x19127b){if(_0x12250e)return _0x582183(_0x12250e);return _0x29f93c(_0x19127b);});})['then'](function(){return new BPromise(function(_0x35f2d1,_0x588610){rimraf(_0x3ded4b,function(_0x35f18d){if(_0x35f18d)_0x588610(_0x35f18d);return _0x35f2d1();});});})[_0x1d7d('0x24')](function(){return _0x5f1b69[_0x1d7d('0x115')](_0x3b440c,_0xe65d48,function(_0x10263c){if(_0x10263c){console['log']('err',_0x10263c);}else{fs[_0x1d7d('0x130')](_0x3b440c);}});});});}else{return _0x5f1b69[_0x1d7d('0x2f')](0xc8);}})[_0x1d7d('0x2e')](handleError(_0x5f1b69,null));};
\ No newline at end of file
index a302632..03c3b08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8236=['then','setDataValue','Users','map','findAll','emit','hasOwnProperty','hook','../../mysqldb','ChatMessage','setMaxListeners','update','remove','getUsers'];(function(_0x7ca518,_0x57d6d7){var _0x26ab20=function(_0x8be0c9){while(--_0x8be0c9){_0x7ca518['push'](_0x7ca518['shift']());}};_0x26ab20(++_0x57d6d7);}(_0x8236,0x94));var _0x6823=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x8236[_0x35da42];return _0x370035;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x6823('0x0'))['db']['ChatInteraction'];var ChatMessage=require(_0x6823('0x0'))['db'][_0x6823('0x1')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x6823('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6823('0x3'),'afterDestroy':_0x6823('0x4')};function emitEvent(_0x22c997){return function(_0x45a073,_0x2cac00,_0x4ac718){_0x45a073[_0x6823('0x5')]({'attributes':['id'],'raw':!![]})[_0x6823('0x6')](function(_0x2a9388){_0x45a073[_0x6823('0x7')](_0x6823('0x8'),_0x2a9388[_0x6823('0x9')](function(_0x55f169){return{'id':_0x55f169['id']};}));return ChatMessage[_0x6823('0xa')]({'where':{'ChatInteractionId':_0x45a073['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x1632d9){_0x45a073[_0x6823('0x7')]('unreadMessages',_0x1632d9['length']);ChatInteractionEvents[_0x6823('0xb')](_0x22c997+':'+_0x45a073['id'],_0x45a073);ChatInteractionEvents[_0x6823('0xb')](_0x22c997,_0x45a073);_0x4ac718(null);})['catch'](_0x4ac718(null));};}for(var e in events){if(events[_0x6823('0xc')](e)){var event=events[e];ChatInteraction[_0x6823('0xd')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0x19f2=['remove','getUsers','then','setDataValue','findAll','unreadMessages','length','emit','hook','events','../../mysqldb','ChatInteraction','ChatMessage','update'];(function(_0x1b7f67,_0x28fdb0){var _0x4b4f0f=function(_0x387bdf){while(--_0x387bdf){_0x1b7f67['push'](_0x1b7f67['shift']());}};_0x4b4f0f(++_0x28fdb0);}(_0x19f2,0xbf));var _0x219f=function(_0x43ed38,_0x507af1){_0x43ed38=_0x43ed38-0x0;var _0x181497=_0x19f2[_0x43ed38];return _0x181497;};'use strict';var EventEmitter=require(_0x219f('0x0'));var ChatInteraction=require(_0x219f('0x1'))['db'][_0x219f('0x2')];var ChatMessage=require(_0x219f('0x1'))['db'][_0x219f('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x219f('0x4'),'afterDestroy':_0x219f('0x5')};function emitEvent(_0x34b5b5){return function(_0x31a40d,_0x26b10e,_0x1ffd45){_0x31a40d[_0x219f('0x6')]({'attributes':['id'],'raw':!![]})[_0x219f('0x7')](function(_0x4c9bd3){_0x31a40d[_0x219f('0x8')]('Users',_0x4c9bd3['map'](function(_0x3e7cd3){return{'id':_0x3e7cd3['id']};}));return ChatMessage[_0x219f('0x9')]({'where':{'ChatInteractionId':_0x31a40d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x219f('0x7')](function(_0x5b58e6){_0x31a40d[_0x219f('0x8')](_0x219f('0xa'),_0x5b58e6[_0x219f('0xb')]);ChatInteractionEvents[_0x219f('0xc')](_0x34b5b5+':'+_0x31a40d['id'],_0x31a40d);ChatInteractionEvents[_0x219f('0xc')](_0x34b5b5,_0x31a40d);_0x1ffd45(null);})['catch'](_0x1ffd45(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0x219f('0xd')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
index e8c39e5..355d688 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadbe=['bluebird','request-promise','path','rimraf','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed','utf8mb4','lodash','api'];(function(_0x54e6f5,_0x4f4e99){var _0x5e8794=function(_0x27512b){while(--_0x27512b){_0x54e6f5['push'](_0x54e6f5['shift']());}};_0x5e8794(++_0x4f4e99);}(_0xadbe,0x1a2));var _0xeadb=function(_0x3395bb,_0x35aedf){_0x3395bb=_0x3395bb-0x0;var _0x4deeaa=_0xadbe[_0x3395bb];return _0x4deeaa;};'use strict';var _=require(_0xeadb('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeadb('0x1'));var moment=require('moment');var BPromise=require(_0xeadb('0x2'));var rp=require(_0xeadb('0x3'));var fs=require('fs');var path=require(_0xeadb('0x4'));var rimraf=require(_0xeadb('0x5'));var config=require('../../config/environment');var attributes=require(_0xeadb('0x6'));module[_0xeadb('0x7')]=function(_0x45502d,_0x58102a){return _0x45502d[_0xeadb('0x8')](_0xeadb('0x9'),attributes,{'tableName':_0xeadb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x9e9976,_0x268cfc,_0xa6f9e6){if(_0x9e9976[_0xeadb('0xb')](_0xeadb('0xc'))){_0x9e9976['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0xa6f9e6(null,_0x9e9976);}},'charset':_0xeadb('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x31b1=['util','api','bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','exports','ChatInteraction','chat_interactions','closed','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x448c09,_0x40cacc){var _0x3825cd=function(_0x468612){while(--_0x468612){_0x448c09['push'](_0x448c09['shift']());}};_0x3825cd(++_0x40cacc);}(_0x31b1,0x178));var _0x131b=function(_0x3b6069,_0x20fdd9){_0x3b6069=_0x3b6069-0x0;var _0x1f6bb0=_0x31b1[_0x3b6069];return _0x1f6bb0;};'use strict';var _=require(_0x131b('0x0'));var util=require(_0x131b('0x1'));var logger=require('../../config/logger')(_0x131b('0x2'));var moment=require('moment');var BPromise=require(_0x131b('0x3'));var rp=require(_0x131b('0x4'));var fs=require('fs');var path=require(_0x131b('0x5'));var rimraf=require('rimraf');var config=require(_0x131b('0x6'));var attributes=require(_0x131b('0x7'));module[_0x131b('0x8')]=function(_0x10ffe0,_0x50435b){return _0x10ffe0['define'](_0x131b('0x9'),attributes,{'tableName':_0x131b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xc9999b,_0xf9327a,_0x581e81){if(_0xc9999b['changed'](_0x131b('0xb'))){_0xc9999b['closedAt']=moment()['format'](_0x131b('0xc'));}_0x581e81(null,_0xc9999b);}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a871350..d6f7579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fb2=['omit','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','UpdateChatInteraction','ChatInteraction','options','where','attributes','limit','stringify','AddTagsToChatInteraction','find','body','ids'];(function(_0x3f5505,_0x52928a){var _0x1ca3d8=function(_0x452cba){while(--_0x452cba){_0x3f5505['push'](_0x3f5505['shift']());}};_0x1ca3d8(++_0x52928a);}(_0x3fb2,0x1b0));var _0x23fb=function(_0x1d7ca5,_0x91cdd7){_0x1d7ca5=_0x1d7ca5-0x0;var _0x502214=_0x3fb2[_0x1d7ca5];return _0x502214;};'use strict';var _=require(_0x23fb('0x0'));var util=require(_0x23fb('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x23fb('0x2'));var fs=require('fs');var Redis=require(_0x23fb('0x3'));var db=require(_0x23fb('0x4'))['db'];var utils=require(_0x23fb('0x5'));var logger=require(_0x23fb('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x23fb('0x7')]({'port':0x232a});config[_0x23fb('0x8')]=_[_0x23fb('0x9')](config['redis'],{'host':_0x23fb('0xa'),'port':0x18eb});var socket=require(_0x23fb('0xb'))(new Redis(config[_0x23fb('0x8')]));require(_0x23fb('0xc'))[_0x23fb('0xd')](socket);function respondWithRpcPromise(_0x4f3353,_0x4bbcfb,_0x1f867e){return new BPromise(function(_0x346fc0,_0x5ded74){return client['request'](_0x4f3353,_0x1f867e)[_0x23fb('0xe')](function(_0x44b05e){logger[_0x23fb('0xf')](_0x23fb('0x10'),_0x4bbcfb,_0x23fb('0x11'));logger[_0x23fb('0x12')](_0x23fb('0x13'),_0x4bbcfb,'request\x20sent',JSON['stringify'](_0x44b05e));if(_0x44b05e['error']){if(_0x44b05e['error'][_0x23fb('0x14')]===0x1f4){logger[_0x23fb('0x15')](_0x23fb('0x10'),_0x4bbcfb,_0x44b05e['error']['message']);return _0x5ded74(_0x44b05e['error'][_0x23fb('0x16')]);}logger['error'](_0x23fb('0x10'),_0x4bbcfb,_0x44b05e[_0x23fb('0x15')][_0x23fb('0x16')]);return _0x346fc0(_0x44b05e[_0x23fb('0x15')]['message']);}else{logger[_0x23fb('0xf')](_0x23fb('0x10'),_0x4bbcfb,'request\x20sent');_0x346fc0(_0x44b05e[_0x23fb('0x17')][_0x23fb('0x16')]);}})[_0x23fb('0x18')](function(_0x4691f9){logger[_0x23fb('0x15')](_0x23fb('0x10'),_0x4bbcfb,_0x4691f9);_0x5ded74(_0x4691f9);});});}exports[_0x23fb('0x19')]=function(_0x508f58){var _0x4b45d4=this;return new Promise(function(_0x164b9f,_0x10c6ae){return db[_0x23fb('0x1a')]['update'](_0x508f58['body'],{'raw':_0x508f58[_0x23fb('0x1b')]?_0x508f58['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x508f58[_0x23fb('0x1b')]?_0x508f58[_0x23fb('0x1b')][_0x23fb('0x1c')]||null:null,'attributes':_0x508f58['options']?_0x508f58[_0x23fb('0x1b')][_0x23fb('0x1d')]||null:null,'limit':_0x508f58[_0x23fb('0x1b')]?_0x508f58[_0x23fb('0x1b')][_0x23fb('0x1e')]||null:null})[_0x23fb('0xe')](function(_0x30b366){logger[_0x23fb('0xf')](_0x23fb('0x19'),_0x508f58);logger['debug']('UpdateChatInteraction',_0x508f58,JSON[_0x23fb('0x1f')](_0x30b366));_0x164b9f(_0x30b366);})[_0x23fb('0x18')](function(_0x2dc6e6){logger[_0x23fb('0x15')](_0x23fb('0x19'),_0x2dc6e6['message'],_0x508f58);_0x10c6ae(_0x4b45d4[_0x23fb('0x15')](0x1f4,_0x2dc6e6['message']));});});};exports[_0x23fb('0x20')]=function(_0x5b2528){return new Promise(function(_0x490996,_0x200536){return db['ChatInteraction'][_0x23fb('0x21')]({'where':_0x5b2528[_0x23fb('0x1b')]?_0x5b2528[_0x23fb('0x1b')]['where']||null:null})['then'](function(_0xa6a3ca){if(_0xa6a3ca){return _0xa6a3ca['addTags'](_0x5b2528[_0x23fb('0x22')][_0x23fb('0x23')],_[_0x23fb('0x24')](_0x5b2528[_0x23fb('0x22')],['ids','id'])||{});}})[_0x23fb('0x25')](function(_0x5aa886){logger[_0x23fb('0xf')](_0x23fb('0x26'),_0x5b2528);logger[_0x23fb('0x12')](_0x23fb('0x26'),_0x5b2528,JSON[_0x23fb('0x1f')](_0x5aa886));_0x490996(_0x5aa886);})[_0x23fb('0x18')](function(_0x58fc96){logger[_0x23fb('0x15')](_0x23fb('0x26'),_0x58fc96['message'],_0x5b2528);_0x200536(_this['error'](0x1f4,_0x58fc96['message']));});});};
\ No newline at end of file
+var _0x521f=['defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','options','raw','where','attributes','find','addTags','ids','body','spread','AddTags','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis'];(function(_0x2a7685,_0x4a041f){var _0xa5ac2c=function(_0x13ca81){while(--_0x13ca81){_0x2a7685['push'](_0x2a7685['shift']());}};_0xa5ac2c(++_0x4a041f);}(_0x521f,0x15d));var _0xf521=function(_0x3dfe4b,_0x2bcfa9){_0x3dfe4b=_0x3dfe4b-0x0;var _0x579aff=_0x521f[_0x3dfe4b];return _0x579aff;};'use strict';var _=require('lodash');var util=require(_0xf521('0x0'));var moment=require('moment');var BPromise=require(_0xf521('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf521('0x2'));var db=require(_0xf521('0x3'))['db'];var utils=require(_0xf521('0x4'));var logger=require(_0xf521('0x5'))('rpc');var config=require(_0xf521('0x6'));var jayson=require(_0xf521('0x7'));var client=jayson[_0xf521('0x8')][_0xf521('0x9')]({'port':0x232a});config[_0xf521('0xa')]=_[_0xf521('0xb')](config[_0xf521('0xa')],{'host':_0xf521('0xc'),'port':0x18eb});var socket=require(_0xf521('0xd'))(new Redis(config[_0xf521('0xa')]));require(_0xf521('0xe'))[_0xf521('0xf')](socket);function respondWithRpcPromise(_0x1edbb6,_0x659df9,_0x51fccc){return new BPromise(function(_0x2e8de3,_0x3cda06){return client[_0xf521('0x10')](_0x1edbb6,_0x51fccc)[_0xf521('0x11')](function(_0x564420){logger[_0xf521('0x12')](_0xf521('0x13'),_0x659df9,_0xf521('0x14'));logger[_0xf521('0x15')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x659df9,_0xf521('0x14'),JSON[_0xf521('0x16')](_0x564420));if(_0x564420[_0xf521('0x17')]){if(_0x564420['error'][_0xf521('0x18')]===0x1f4){logger[_0xf521('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x659df9,_0x564420[_0xf521('0x17')][_0xf521('0x19')]);return _0x3cda06(_0x564420[_0xf521('0x17')][_0xf521('0x19')]);}logger[_0xf521('0x17')](_0xf521('0x13'),_0x659df9,_0x564420[_0xf521('0x17')][_0xf521('0x19')]);return _0x2e8de3(_0x564420[_0xf521('0x17')]['message']);}else{logger[_0xf521('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x659df9,_0xf521('0x14'));_0x2e8de3(_0x564420[_0xf521('0x1a')][_0xf521('0x19')]);}})[_0xf521('0x1b')](function(_0x2c85fc){logger[_0xf521('0x17')](_0xf521('0x13'),_0x659df9,_0x2c85fc);_0x3cda06(_0x2c85fc);});});}exports[_0xf521('0x1c')]=function(_0x321746){var _0x505dbb=this;return new Promise(function(_0x68dfef,_0x22ce4b){return db[_0xf521('0x1d')]['update'](_0x321746['body'],{'raw':_0x321746['options']?_0x321746[_0xf521('0x1e')][_0xf521('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x321746[_0xf521('0x1e')]?_0x321746['options'][_0xf521('0x20')]||null:null,'attributes':_0x321746['options']?_0x321746['options'][_0xf521('0x21')]||null:null,'limit':_0x321746[_0xf521('0x1e')]?_0x321746['options']['limit']||null:null})['then'](function(_0x17cd79){logger[_0xf521('0x12')]('UpdateChatInteraction',_0x321746);logger['debug'](_0xf521('0x1c'),_0x321746,JSON[_0xf521('0x16')](_0x17cd79));_0x68dfef(_0x17cd79);})[_0xf521('0x1b')](function(_0x207d9a){logger[_0xf521('0x17')]('UpdateChatInteraction',_0x207d9a[_0xf521('0x19')],_0x321746);_0x22ce4b(_0x505dbb['error'](0x1f4,_0x207d9a[_0xf521('0x19')]));});});};exports['AddTagsToChatInteraction']=function(_0x3377cc){return new Promise(function(_0x2fa68c,_0x42ee2f){return db['ChatInteraction'][_0xf521('0x22')]({'where':_0x3377cc[_0xf521('0x1e')]?_0x3377cc[_0xf521('0x1e')][_0xf521('0x20')]||null:null})['then'](function(_0x29774c){if(_0x29774c){return _0x29774c[_0xf521('0x23')](_0x3377cc['body'][_0xf521('0x24')],_['omit'](_0x3377cc[_0xf521('0x25')],[_0xf521('0x24'),'id'])||{});}})[_0xf521('0x26')](function(_0x4fe9eb){logger['info']('AddTags',_0x3377cc);logger[_0xf521('0x15')](_0xf521('0x27'),_0x3377cc,JSON[_0xf521('0x16')](_0x4fe9eb));_0x2fa68c(_0x4fe9eb);})[_0xf521('0x1b')](function(_0xfa20c4){logger[_0xf521('0x17')](_0xf521('0x27'),_0xfa20c4[_0xf521('0x19')],_0x3377cc);_0x42ee2f(_this[_0xf521('0x17')](0x1f4,_0xfa20c4[_0xf521('0x19')]));});});};
\ No newline at end of file
index 4e8bb7d..9090169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a1=['chatInteraction:','save','remove','emit','removeListener','register','length'];(function(_0x3fee4e,_0x3ff124){var _0x48565e=function(_0x2aa98d){while(--_0x2aa98d){_0x3fee4e['push'](_0x3fee4e['shift']());}};_0x48565e(++_0x3ff124);}(_0xd8a1,0x174));var _0x1d8a=function(_0x45fede,_0x16721f){_0x45fede=_0x45fede-0x0;var _0x94b887=_0xd8a1[_0x45fede];return _0x94b887;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0x1d8a('0x0'),_0x1d8a('0x1'),'update'];function createListener(_0xbd45fd,_0x110d87){return function(_0x2ea395){_0x110d87[_0x1d8a('0x2')](_0xbd45fd,_0x2ea395);};}function removeListener(_0x2612b2,_0x7589b3){return function(){ChatInteractionEvents[_0x1d8a('0x3')](_0x2612b2,_0x7589b3);};}exports[_0x1d8a('0x4')]=function(_0x58baae){for(var _0x298f42=0x0,_0x4f512e=events[_0x1d8a('0x5')];_0x298f42<_0x4f512e;_0x298f42++){var _0x120012=events[_0x298f42];var _0x36c5be=createListener(_0x1d8a('0x6')+_0x120012,_0x58baae);ChatInteractionEvents['on'](_0x120012,_0x36c5be);}};
\ No newline at end of file
+var _0xa0e9=['emit','length','chatInteraction:','save','update'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xa0e9,0xdf));var _0x9a0e=function(_0x4b2a90,_0xba32e6){_0x4b2a90=_0x4b2a90-0x0;var _0x1cea31=_0xa0e9[_0x4b2a90];return _0x1cea31;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0x9a0e('0x0'),'remove',_0x9a0e('0x1')];function createListener(_0x19d5a7,_0x330b0f){return function(_0x24724a){_0x330b0f[_0x9a0e('0x2')](_0x19d5a7,_0x24724a);};}function removeListener(_0x4105d8,_0x5e0a0c){return function(){ChatInteractionEvents['removeListener'](_0x4105d8,_0x5e0a0c);};}exports['register']=function(_0x5b6687){for(var _0x291497=0x0,_0x35a632=events[_0x9a0e('0x3')];_0x291497<_0x35a632;_0x291497++){var _0x325f8f=events[_0x291497];var _0x306b51=createListener(_0x9a0e('0x4')+_0x325f8f,_0x5b6687);ChatInteractionEvents['on'](_0x325f8f,_0x306b51);}};
\ No newline at end of file
index 9136d30..30b1a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a9=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','get','/describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','createVidaooSession','diskStorage','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','attachmentUpload','/:id/messages','addMessage','tracked','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','/:id/abandon','abandon','close','chatinteraction:destroy','destroy','/:id/tags','removeTags','exports'];(function(_0x2112f8,_0x4332cc){var _0x158fea=function(_0x563f41){while(--_0x563f41){_0x2112f8['push'](_0x2112f8['shift']());}};_0x158fea(++_0x4332cc);}(_0x15a9,0xff));var _0x915a=function(_0x6cfb3e,_0x331cba){_0x6cfb3e=_0x6cfb3e-0x0;var _0x3d8740=_0x15a9[_0x6cfb3e];return _0x3d8740;};'use strict';var multer=require(_0x915a('0x0'));var util=require('util');var path=require(_0x915a('0x1'));var timeout=require(_0x915a('0x2'));var express=require(_0x915a('0x3'));var router=express['Router']();var fs_extra=require(_0x915a('0x4'));var auth=require(_0x915a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x915a('0x6'));var controller=require(_0x915a('0x7'));router['get']('/',auth[_0x915a('0x8')](),controller[_0x915a('0x9')]);router[_0x915a('0xa')](_0x915a('0xb'),auth[_0x915a('0x8')](),controller['describe']);router[_0x915a('0xa')](_0x915a('0xc'),auth[_0x915a('0xd')](),controller['show']);router[_0x915a('0xa')](_0x915a('0xe'),auth[_0x915a('0xd')](),controller[_0x915a('0xf')]);router['get']('/:id/messages',auth[_0x915a('0x8')](),controller[_0x915a('0x10')]);router['get'](_0x915a('0x11'),auth[_0x915a('0xd')](),controller[_0x915a('0x12')]);router[_0x915a('0xa')](_0x915a('0x13'),auth['isAuthenticated'](),controller[_0x915a('0x14')]);router[_0x915a('0x15')]('/',auth[_0x915a('0x8')](),controller['create']);router[_0x915a('0x15')]('/:id/vidaoo',auth['isAuthenticated'](),controller[_0x915a('0x16')]);var upload=multer({'storage':multer[_0x915a('0x17')]({'destination':function(_0x2f7142,_0x1acb17,_0x114cec){_0x114cec(null,path['join'](config[_0x915a('0x18')],_0x915a('0x19')));},'filename':function(_0x5d8c8b,_0x31f946,_0x3317f5){_0x3317f5(null,util[_0x915a('0x1a')](_0x915a('0x1b'),Date[_0x915a('0x1c')](),_0x31f946[_0x915a('0x1d')][_0x915a('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x915a('0x15')](_0x915a('0x1f'),upload[_0x915a('0x20')]('file'),controller[_0x915a('0x21')]);router[_0x915a('0x15')](_0x915a('0x22'),auth[_0x915a('0xd')](),controller[_0x915a('0x23')]);router[_0x915a('0x15')]('/:id/tags',auth[_0x915a('0x8')](),interaction[_0x915a('0x24')]('chat',_0x915a('0x25')),controller[_0x915a('0x26')]);router[_0x915a('0x27')](_0x915a('0xc'),auth[_0x915a('0x8')](),interaction[_0x915a('0x24')]('chat',_0x915a('0x28')),controller[_0x915a('0x29')]);router['put'](_0x915a('0x2a'),controller['customUpdate']);router[_0x915a('0x27')](_0x915a('0x2b'),auth['isChatInteractionAuthorized'](),controller[_0x915a('0x2c')]);router[_0x915a('0x27')]('/:id/close',controller[_0x915a('0x2d')]);router['delete'](_0x915a('0xc'),auth['isAuthenticated'](),interaction[_0x915a('0x24')]('chat',_0x915a('0x2e')),controller[_0x915a('0x2f')]);router['delete'](_0x915a('0x30'),auth[_0x915a('0x8')](),controller[_0x915a('0x31')]);module[_0x915a('0x32')]=router;
\ No newline at end of file
+var _0xa543=['join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','file','chat','addTags','tracked','chatinteraction:update','update','put','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','destroy','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatInteraction.controller','isAuthenticated','index','get','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','/:id/my_messages','/:id/download','download','post','create','createVidaooSession'];(function(_0x50a1f6,_0x238fd8){var _0x84f8d4=function(_0x2d9586){while(--_0x2d9586){_0x50a1f6['push'](_0x50a1f6['shift']());}};_0x84f8d4(++_0x238fd8);}(_0xa543,0x13f));var _0x3a54=function(_0x3fd774,_0x2dab0c){_0x3fd774=_0x3fd774-0x0;var _0x801005=_0xa543[_0x3fd774];return _0x801005;};'use strict';var multer=require(_0x3a54('0x0'));var util=require('util');var path=require(_0x3a54('0x1'));var timeout=require(_0x3a54('0x2'));var express=require('express');var router=express[_0x3a54('0x3')]();var fs_extra=require(_0x3a54('0x4'));var auth=require(_0x3a54('0x5'));var interaction=require(_0x3a54('0x6'));var config=require('../../config/environment');var controller=require(_0x3a54('0x7'));router['get']('/',auth[_0x3a54('0x8')](),controller[_0x3a54('0x9')]);router[_0x3a54('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x3a54('0xb')]);router[_0x3a54('0xa')](_0x3a54('0xc'),auth[_0x3a54('0xd')](),controller[_0x3a54('0xe')]);router[_0x3a54('0xa')](_0x3a54('0xf'),auth[_0x3a54('0xd')](),controller[_0x3a54('0x10')]);router['get'](_0x3a54('0x11'),auth[_0x3a54('0x8')](),controller['getMessages']);router[_0x3a54('0xa')](_0x3a54('0x12'),auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0x3a54('0xa')](_0x3a54('0x13'),auth[_0x3a54('0x8')](),controller[_0x3a54('0x14')]);router[_0x3a54('0x15')]('/',auth[_0x3a54('0x8')](),controller[_0x3a54('0x16')]);router['post']('/:id/vidaoo',auth[_0x3a54('0x8')](),controller[_0x3a54('0x17')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xeaa366,_0x29ba69,_0x4b6d1d){_0x4b6d1d(null,path[_0x3a54('0x18')](config[_0x3a54('0x19')],_0x3a54('0x1a')));},'filename':function(_0x3140b3,_0x58ee9d,_0x5b61b7){_0x5b61b7(null,util[_0x3a54('0x1b')](_0x3a54('0x1c'),Date[_0x3a54('0x1d')](),_0x58ee9d[_0x3a54('0x1e')][_0x3a54('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x3a54('0x15')](_0x3a54('0x20'),upload['single'](_0x3a54('0x21')),controller['attachmentUpload']);router[_0x3a54('0x15')](_0x3a54('0x11'),auth[_0x3a54('0xd')](),controller['addMessage']);router['post']('/:id/tags',auth[_0x3a54('0x8')](),interaction['tracked'](_0x3a54('0x22'),'chatinteraction:addtags'),controller[_0x3a54('0x23')]);router['put'](_0x3a54('0xc'),auth[_0x3a54('0x8')](),interaction[_0x3a54('0x24')](_0x3a54('0x22'),_0x3a54('0x25')),controller[_0x3a54('0x26')]);router[_0x3a54('0x27')](_0x3a54('0x28'),controller[_0x3a54('0x29')]);router['put'](_0x3a54('0x2a'),auth[_0x3a54('0xd')](),controller[_0x3a54('0x2b')]);router[_0x3a54('0x27')](_0x3a54('0x2c'),controller[_0x3a54('0x2d')]);router['delete'](_0x3a54('0xc'),auth[_0x3a54('0x8')](),interaction[_0x3a54('0x24')](_0x3a54('0x22'),'chatinteraction:destroy'),controller[_0x3a54('0x2e')]);router[_0x3a54('0x2f')]('/:id/tags',auth[_0x3a54('0x8')](),controller['removeTags']);module[_0x3a54('0x30')]=router;
\ No newline at end of file
index fd1659f..3f8dd79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e08=['medium','BOOLEAN','INTEGER'];(function(_0x5cceed,_0x98291f){var _0x51d5db=function(_0x3985ce){while(--_0x3985ce){_0x5cceed['push'](_0x5cceed['shift']());}};_0x51d5db(++_0x98291f);}(_0x5e08,0x1c5));var _0x85e0=function(_0x528b85,_0x571ba6){_0x528b85=_0x528b85-0x0;var _0x19b135=_0x5e08[_0x528b85];return _0x19b135;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x85e0('0x0')),'allowNull':![]},'read':{'type':Sequelize[_0x85e0('0x1')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x85e0('0x2')]}};
\ No newline at end of file
+var _0x75c0=['exports','TEXT','medium','INTEGER','sequelize'];(function(_0x45cbf3,_0x55fdc1){var _0x73323b=function(_0x502d20){while(--_0x502d20){_0x45cbf3['push'](_0x45cbf3['shift']());}};_0x73323b(++_0x55fdc1);}(_0x75c0,0x7c));var _0x075c=function(_0x3d754d,_0x71aad){_0x3d754d=_0x3d754d-0x0;var _0x59f912=_0x75c0[_0x3d754d];return _0x59f912;};'use strict';var Sequelize=require(_0x075c('0x0'));module[_0x075c('0x1')]={'body':{'type':Sequelize[_0x075c('0x2')](_0x075c('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x075c('0x4')]}};
\ No newline at end of file
index dfddfbb..d4ee250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x967e=['lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','then','destroy','error','stack','index','ChatInternalMessage','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','name','options','includeAll','include','rows','catch','params','keys','find','create','update','body','describe','get','messages','createdAt','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','admin','user','fullname','role','userpic','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','FromId','read','all','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra'];(function(_0x345af,_0x4df2f7){var _0x3679b0=function(_0x20ec3c){while(--_0x20ec3c){_0x345af['push'](_0x345af['shift']());}};_0x3679b0(++_0x4df2f7);}(_0x967e,0xcb));var _0xe967=function(_0x1b29ac,_0x2920c7){_0x1b29ac=_0x1b29ac-0x0;var _0x1038c8=_0x967e[_0x1b29ac];return _0x1038c8;};'use strict';var emlformat=require(_0xe967('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe967('0x1'));var jsonpatch=require(_0xe967('0x2'));var rp=require('request-promise');var moment=require(_0xe967('0x3'));var BPromise=require(_0xe967('0x4'));var Mustache=require('mustache');var util=require(_0xe967('0x5'));var path=require(_0xe967('0x6'));var sox=require('sox');var csv=require(_0xe967('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe967('0x8'));var _=require(_0xe967('0x9'));var squel=require(_0xe967('0xa'));var crypto=require(_0xe967('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe967('0xc'));var toCsv=require(_0xe967('0x7'));var querystring=require(_0xe967('0xd'));var Papa=require(_0xe967('0xe'));var Redis=require(_0xe967('0xf'));var authService=require(_0xe967('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe967('0x11'))(_0xe967('0x12'));var utils=require('../../config/utils');var config=require(_0xe967('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xe967('0x14'))['db'];config[_0xe967('0x15')]=_[_0xe967('0x16')](config[_0xe967('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe967('0x15')]));require('./chatInternalMessage.socket')[_0xe967('0x17')](socket);function respondWithStatusCode(_0x2b0333,_0x4f0938){_0x4f0938=_0x4f0938||0xcc;return function(_0x2fba7e){if(_0x2fba7e){return _0x2b0333[_0xe967('0x18')](_0x4f0938);}return _0x2b0333[_0xe967('0x19')](_0x4f0938)[_0xe967('0x1a')]();};}function respondWithResult(_0x23e2d5,_0x2ae06d){_0x2ae06d=_0x2ae06d||0xc8;return function(_0x1ce0ff){if(_0x1ce0ff){return _0x23e2d5[_0xe967('0x19')](_0x2ae06d)[_0xe967('0x1b')](_0x1ce0ff);}};}function respondWithFilteredResult(_0x4c8121,_0x4642ab){return function(_0x45d142){if(_0x45d142){var _0x10952a=typeof _0x4642ab[_0xe967('0x1c')]===_0xe967('0x1d')&&typeof _0x4642ab['limit']===_0xe967('0x1d');var _0xee0294=_0x45d142[_0xe967('0x1e')];var _0x2e71a5=_0x10952a?0x0:_0x4642ab[_0xe967('0x1c')];var _0x397847=_0x10952a?_0x45d142[_0xe967('0x1e')]:_0x4642ab[_0xe967('0x1c')]+_0x4642ab[_0xe967('0x1f')];var _0x1f555d;if(_0x397847>=_0xee0294){_0x397847=_0xee0294;_0x1f555d=0xc8;}else{_0x1f555d=0xce;}_0x4c8121[_0xe967('0x19')](_0x1f555d);return _0x4c8121['set'](_0xe967('0x20'),_0x2e71a5+'-'+_0x397847+'/'+_0xee0294)[_0xe967('0x1b')](_0x45d142);}return null;};}function patchUpdates(_0x45c31c){return function(_0x1259df){try{jsonpatch['apply'](_0x1259df,_0x45c31c,!![]);}catch(_0x1994e0){return BPromise[_0xe967('0x21')](_0x1994e0);}return _0x1259df['save']();};}function saveUpdates(_0x38f66f,_0x5bff2d){return function(_0x1ba447){if(_0x1ba447){return _0x1ba447['update'](_0x38f66f)[_0xe967('0x22')](function(_0x11067e){return _0x11067e;});}return null;};}function removeEntity(_0x3be989,_0x3f7f45){return function(_0x315dbe){if(_0x315dbe){return _0x315dbe[_0xe967('0x23')]()[_0xe967('0x22')](function(){_0x3be989[_0xe967('0x19')](0xcc)[_0xe967('0x1a')]();});}};}function handleEntityNotFound(_0x2f9574,_0x4b401a){return function(_0x1e2f22){if(!_0x1e2f22){_0x2f9574[_0xe967('0x18')](0x194);}return _0x1e2f22;};}function handleError(_0x304a2e,_0x5bfe2e){_0x5bfe2e=_0x5bfe2e||0x1f4;return function(_0x1e41c3){logger[_0xe967('0x24')](_0x1e41c3[_0xe967('0x25')]);if(_0x1e41c3['name']){delete _0x1e41c3['name'];}_0x304a2e[_0xe967('0x19')](_0x5bfe2e)['send'](_0x1e41c3);};}exports[_0xe967('0x26')]=function(_0xca0ad9,_0x27aa2d){var _0x3870f1={},_0x237239={},_0x5cd4b3={'count':0x0,'rows':[]};var _0x487cb0=_['map'](db[_0xe967('0x27')][_0xe967('0x28')],function(_0x3623bf){return{'name':_0x3623bf['fieldName'],'type':_0x3623bf[_0xe967('0x29')][_0xe967('0x2a')]};});_0x237239[_0xe967('0x2b')]=_['map'](_0x487cb0,'name');_0x237239[_0xe967('0x2c')]=_['keys'](_0xca0ad9[_0xe967('0x2c')]);_0x237239[_0xe967('0x2d')]=_[_0xe967('0x2e')](_0x237239['model'],_0x237239[_0xe967('0x2c')]);_0x3870f1[_0xe967('0x2f')]=_['intersection'](_0x237239[_0xe967('0x2b')],qs[_0xe967('0x30')](_0xca0ad9['query'][_0xe967('0x30')]));_0x3870f1[_0xe967('0x2f')]=_0x3870f1[_0xe967('0x2f')][_0xe967('0x31')]?_0x3870f1[_0xe967('0x2f')]:_0x237239[_0xe967('0x2b')];if(!_0xca0ad9[_0xe967('0x2c')][_0xe967('0x32')](_0xe967('0x33'))){_0x3870f1[_0xe967('0x1f')]=qs['limit'](_0xca0ad9[_0xe967('0x2c')]['limit']);_0x3870f1[_0xe967('0x1c')]=qs[_0xe967('0x1c')](_0xca0ad9[_0xe967('0x2c')][_0xe967('0x1c')]);}_0x3870f1[_0xe967('0x34')]=qs['sort'](_0xca0ad9[_0xe967('0x2c')][_0xe967('0x35')]);_0x3870f1[_0xe967('0x36')]=qs[_0xe967('0x2d')](_[_0xe967('0x37')](_0xca0ad9[_0xe967('0x2c')],_0x237239['filters']),_0x487cb0);if(_0xca0ad9['query'][_0xe967('0x38')]){_0x3870f1[_0xe967('0x36')]=_[_0xe967('0x39')](_0x3870f1['where'],{'$or':_[_0xe967('0x3a')](_0x487cb0,function(_0x62a7b7){if(_0x62a7b7[_0xe967('0x29')]!=='VIRTUAL'){var _0x5df3d5={};_0x5df3d5[_0x62a7b7[_0xe967('0x3b')]]={'$like':'%'+_0xca0ad9['query'][_0xe967('0x38')]+'%'};return _0x5df3d5;}})});}_0x3870f1=_[_0xe967('0x39')]({},_0x3870f1,_0xca0ad9[_0xe967('0x3c')]);var _0x254fb3={'where':_0x3870f1[_0xe967('0x36')]};return db['ChatInternalMessage'][_0xe967('0x1e')](_0x254fb3)[_0xe967('0x22')](function(_0xed0fc5){_0x5cd4b3[_0xe967('0x1e')]=_0xed0fc5;if(_0xca0ad9[_0xe967('0x2c')][_0xe967('0x3d')]){_0x3870f1[_0xe967('0x3e')]=[{'all':!![]}];}return db[_0xe967('0x27')]['findAll'](_0x3870f1);})[_0xe967('0x22')](function(_0x6e7940){_0x5cd4b3[_0xe967('0x3f')]=_0x6e7940;return _0x5cd4b3;})[_0xe967('0x22')](respondWithFilteredResult(_0x27aa2d,_0x3870f1))[_0xe967('0x40')](handleError(_0x27aa2d,null));};exports['show']=function(_0x324b05,_0x44cc33){var _0x201f30={'raw':!![],'where':{'id':_0x324b05[_0xe967('0x41')]['id']}},_0x40b80a={};_0x40b80a['model']=_[_0xe967('0x42')](db[_0xe967('0x27')][_0xe967('0x28')]);_0x40b80a[_0xe967('0x2c')]=_[_0xe967('0x42')](_0x324b05[_0xe967('0x2c')]);_0x40b80a[_0xe967('0x2d')]=_[_0xe967('0x2e')](_0x40b80a['model'],_0x40b80a['query']);_0x201f30['attributes']=_[_0xe967('0x2e')](_0x40b80a['model'],qs['fields'](_0x324b05[_0xe967('0x2c')][_0xe967('0x30')]));_0x201f30[_0xe967('0x2f')]=_0x201f30[_0xe967('0x2f')][_0xe967('0x31')]?_0x201f30[_0xe967('0x2f')]:_0x40b80a[_0xe967('0x2b')];if(_0x324b05[_0xe967('0x2c')]['includeAll']){_0x201f30[_0xe967('0x3e')]=[{'all':!![]}];}_0x201f30=_[_0xe967('0x39')]({},_0x201f30,_0x324b05[_0xe967('0x3c')]);return db[_0xe967('0x27')][_0xe967('0x43')](_0x201f30)['then'](handleEntityNotFound(_0x44cc33,null))['then'](respondWithResult(_0x44cc33,null))[_0xe967('0x40')](handleError(_0x44cc33,null));};exports[_0xe967('0x44')]=function(_0x132a1f,_0x520284){return db[_0xe967('0x27')]['create'](_0x132a1f['body'],{})[_0xe967('0x22')](respondWithResult(_0x520284,0xc9))[_0xe967('0x40')](handleError(_0x520284,null));};exports[_0xe967('0x45')]=function(_0x5ebd5e,_0x1ca570){if(_0x5ebd5e[_0xe967('0x46')]['id']){delete _0x5ebd5e[_0xe967('0x46')]['id'];}return db[_0xe967('0x27')][_0xe967('0x43')]({'where':{'id':_0x5ebd5e[_0xe967('0x41')]['id']}})[_0xe967('0x22')](handleEntityNotFound(_0x1ca570,null))[_0xe967('0x22')](saveUpdates(_0x5ebd5e['body'],null))[_0xe967('0x22')](respondWithResult(_0x1ca570,null))[_0xe967('0x40')](handleError(_0x1ca570,null));};exports[_0xe967('0x23')]=function(_0xa77121,_0x46c1c3){return db[_0xe967('0x27')]['find']({'where':{'id':_0xa77121[_0xe967('0x41')]['id']}})['then'](handleEntityNotFound(_0x46c1c3,null))['then'](removeEntity(_0x46c1c3,null))[_0xe967('0x40')](handleError(_0x46c1c3,null));};exports[_0xe967('0x47')]=function(_0x1ed4a6,_0x40ebf3){return db['ChatInternalMessage'][_0xe967('0x47')]()[_0xe967('0x22')](respondWithResult(_0x40ebf3,null))[_0xe967('0x40')](handleError(_0x40ebf3,null));};function wrapUser(_0x49f6a6){return function(_0x1e5caa){var _0x309b47=_0x49f6a6[_0xe967('0x48')]({'plain':!![]});_0x309b47[_0xe967('0x49')]=[];if(_0x1e5caa){_0x309b47['lastMessageAt']=_0x1e5caa[_0xe967('0x4a')];_0x309b47[_0xe967('0x4b')]=_0x1e5caa;}else{_0x309b47[_0xe967('0x4c')]=moment(0x0)[_0xe967('0x4d')](_0xe967('0x4e'));_0x309b47['lastMessage']={};}return _0x309b47;};}exports[_0xe967('0x4f')]=function(_0xd06861,_0x52375a,_0x1fecb1){var _0x2470fb=[];return db[_0xe967('0x50')][_0xe967('0x51')]({'where':{'role':['agent',_0xe967('0x52'),_0xe967('0x53')]},'attributes':['id',_0xe967('0x54'),_0xe967('0x3b'),_0xe967('0x55'),_0xe967('0x56'),'internal','online',_0xe967('0x57'),_0xe967('0x58'),_0xe967('0x59')],'order':qs[_0xe967('0x35')](_0xe967('0x5a')),'include':[{'model':db[_0xe967('0x5b')],'as':_0xe967('0x5c'),'attributes':['id',_0xe967('0x3b'),_0xe967('0x29')],'through':{'attributes':[]}}]})[_0xe967('0x22')](function(_0x339d05){if(_0x339d05){var _0x57bf5d=_0xd06861[_0xe967('0x53')]['get']({'plain':!![]});if(!_0x57bf5d)throw new Error(_0xe967('0x5d'));if(_0x57bf5d[_0xe967('0x55')]===_0xe967('0x53')){return db[_0xe967('0x5e')][_0xe967('0x43')]({'where':{'name':_0xe967('0x5f'),'userProfileId':_0x57bf5d[_0xe967('0x60')]},'raw':!![]})['then'](function(_0x55710f){if(_0x55710f){if(_0x55710f[_0xe967('0x61')]===0x0){return db[_0xe967('0x62')]['findAll']({'where':{'sectionId':_0x55710f['id']},'raw':!![]})[_0xe967('0x22')](function(_0x4c395b){var _0x59c962=[];if(_[_0xe967('0x63')](_0x4c395b)){_0x59c962=_[_0xe967('0x38')](_0x339d05,function(_0x272404){if(_0x272404[_0xe967('0x55')]!==_0xe967('0x64')){return _0x272404;}});return _0x59c962;}else{for(var _0x457e94=0x0;_0x457e94<_0x339d05[_0xe967('0x31')];_0x457e94++){var _0x45cb12=_0x339d05[_0x457e94];if(_0x45cb12[_0xe967('0x55')]===_0xe967('0x64')){var _0x33ec99=_[_0xe967('0x43')](_0x4c395b,function(_0x1694bf){return _0x1694bf[_0xe967('0x65')]===_0x45cb12['id'];});if(_0x33ec99)_0x59c962[_0xe967('0x66')](_0x45cb12);}else{_0x59c962[_0xe967('0x66')](_0x45cb12);}}return _0x59c962;}});}else{return _0x339d05;}}else{var _0x4cfe23=_[_0xe967('0x38')](_0x339d05,function(_0x1b62f1){if(_0x1b62f1['role']!=='agent'){return _0x1b62f1;}});return _0x4cfe23;}});}else{return _0x339d05;}}})[_0xe967('0x22')](function(_0x4c18f9){var _0x13c494=[];if(_0x4c18f9){_0x2470fb=_0x4c18f9;for(var _0x1c5d35=0x0;_0x1c5d35<_0x4c18f9[_0xe967('0x31')];_0x1c5d35+=0x1){_0x2470fb[_0x1c5d35][_0xe967('0x49')]=[];_0x13c494[_0xe967('0x66')](db[_0xe967('0x27')][_0xe967('0x43')]({'where':{'FromId':[_0xd06861[_0xe967('0x53')]['id'],_0x4c18f9[_0x1c5d35]['id']],'ToId':[_0xd06861[_0xe967('0x53')]['id'],_0x4c18f9[_0x1c5d35]['id']],'ChatGroupId':null},'attributes':['id',_0xe967('0x4a'),_0xe967('0x67'),'ToId',_0xe967('0x68'),_0xe967('0x46')],'order':qs['sort']('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xe967('0x22')](wrapUser(_0x4c18f9[_0x1c5d35])));}return BPromise[_0xe967('0x69')](_0x13c494);}return[];})[_0xe967('0x22')](function(_0x3114fc){return{'rows':_0x3114fc,'count':_0x3114fc['length']};})[_0xe967('0x22')](respondWithResult(_0x52375a,null))[_0xe967('0x40')](handleError(_0x52375a,null));};
\ No newline at end of file
+var _0xad4e=['reject','update','then','destroy','name','index','map','ChatInternalMessage','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','get','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','admin','internal','online','allowmessenger','-online','type','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','length','push','role','ToId','read','-createdAt','all','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x453bc4,_0x1a31a0){var _0x55476c=function(_0x52e2b3){while(--_0x52e2b3){_0x453bc4['push'](_0x453bc4['shift']());}};_0x55476c(++_0x1a31a0);}(_0xad4e,0xad));var _0xead4=function(_0x374810,_0x1b4ae7){_0x374810=_0x374810-0x0;var _0x9871c0=_0xad4e[_0x374810];return _0x9871c0;};'use strict';var emlformat=require(_0xead4('0x0'));var rimraf=require(_0xead4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xead4('0x2'));var rp=require(_0xead4('0x3'));var moment=require('moment');var BPromise=require(_0xead4('0x4'));var Mustache=require(_0xead4('0x5'));var util=require(_0xead4('0x6'));var path=require(_0xead4('0x7'));var sox=require(_0xead4('0x8'));var csv=require('to-csv');var ejs=require(_0xead4('0x9'));var fs=require('fs');var fs_extra=require(_0xead4('0xa'));var _=require(_0xead4('0xb'));var squel=require('squel');var crypto=require(_0xead4('0xc'));var jsforce=require(_0xead4('0xd'));var deskjs=require(_0xead4('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xead4('0xf'));var Redis=require(_0xead4('0x10'));var authService=require(_0xead4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xead4('0x12'));var hardwareService=require(_0xead4('0x13'));var logger=require(_0xead4('0x14'))(_0xead4('0x15'));var utils=require(_0xead4('0x16'));var config=require(_0xead4('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xead4('0x18'))['db'];config[_0xead4('0x19')]=_['defaults'](config['redis'],{'host':_0xead4('0x1a'),'port':0x18eb});var socket=require(_0xead4('0x1b'))(new Redis(config['redis']));require(_0xead4('0x1c'))[_0xead4('0x1d')](socket);function respondWithStatusCode(_0x563537,_0x3ae8ca){_0x3ae8ca=_0x3ae8ca||0xcc;return function(_0x4a100d){if(_0x4a100d){return _0x563537[_0xead4('0x1e')](_0x3ae8ca);}return _0x563537[_0xead4('0x1f')](_0x3ae8ca)[_0xead4('0x20')]();};}function respondWithResult(_0xff065,_0x5d7da5){_0x5d7da5=_0x5d7da5||0xc8;return function(_0x30d5df){if(_0x30d5df){return _0xff065[_0xead4('0x1f')](_0x5d7da5)[_0xead4('0x21')](_0x30d5df);}};}function respondWithFilteredResult(_0x2cde57,_0x1269cc){return function(_0x2cb8fc){if(_0x2cb8fc){var _0x40e5ea=typeof _0x1269cc[_0xead4('0x22')]===_0xead4('0x23')&&typeof _0x1269cc[_0xead4('0x24')]===_0xead4('0x23');var _0x2b3c29=_0x2cb8fc[_0xead4('0x25')];var _0x26d96c=_0x40e5ea?0x0:_0x1269cc['offset'];var _0x27ea8c=_0x40e5ea?_0x2cb8fc['count']:_0x1269cc[_0xead4('0x22')]+_0x1269cc['limit'];var _0x36b06e;if(_0x27ea8c>=_0x2b3c29){_0x27ea8c=_0x2b3c29;_0x36b06e=0xc8;}else{_0x36b06e=0xce;}_0x2cde57[_0xead4('0x1f')](_0x36b06e);return _0x2cde57[_0xead4('0x26')](_0xead4('0x27'),_0x26d96c+'-'+_0x27ea8c+'/'+_0x2b3c29)['json'](_0x2cb8fc);}return null;};}function patchUpdates(_0x26e117){return function(_0x3d66a5){try{jsonpatch[_0xead4('0x28')](_0x3d66a5,_0x26e117,!![]);}catch(_0x57f7f4){return BPromise[_0xead4('0x29')](_0x57f7f4);}return _0x3d66a5['save']();};}function saveUpdates(_0x2c0ab7,_0x34f76b){return function(_0xb60d3){if(_0xb60d3){return _0xb60d3[_0xead4('0x2a')](_0x2c0ab7)[_0xead4('0x2b')](function(_0x30b45){return _0x30b45;});}return null;};}function removeEntity(_0x486ac6,_0x133b3a){return function(_0x5bbb90){if(_0x5bbb90){return _0x5bbb90[_0xead4('0x2c')]()[_0xead4('0x2b')](function(){_0x486ac6['status'](0xcc)[_0xead4('0x20')]();});}};}function handleEntityNotFound(_0x3115dc,_0x4542fc){return function(_0x3c0fb4){if(!_0x3c0fb4){_0x3115dc['sendStatus'](0x194);}return _0x3c0fb4;};}function handleError(_0x1df1eb,_0x5cbe40){_0x5cbe40=_0x5cbe40||0x1f4;return function(_0x572bd9){logger['error'](_0x572bd9['stack']);if(_0x572bd9['name']){delete _0x572bd9[_0xead4('0x2d')];}_0x1df1eb[_0xead4('0x1f')](_0x5cbe40)['send'](_0x572bd9);};}exports[_0xead4('0x2e')]=function(_0x4b4871,_0x3d3bbf){var _0x47609a={},_0x310436={},_0x1da62b={'count':0x0,'rows':[]};var _0x374095=_[_0xead4('0x2f')](db[_0xead4('0x30')][_0xead4('0x31')],function(_0x2f89ed){return{'name':_0x2f89ed['fieldName'],'type':_0x2f89ed['type'][_0xead4('0x32')]};});_0x310436['model']=_[_0xead4('0x2f')](_0x374095,_0xead4('0x2d'));_0x310436[_0xead4('0x33')]=_[_0xead4('0x34')](_0x4b4871['query']);_0x310436[_0xead4('0x35')]=_[_0xead4('0x36')](_0x310436[_0xead4('0x37')],_0x310436[_0xead4('0x33')]);_0x47609a[_0xead4('0x38')]=_['intersection'](_0x310436[_0xead4('0x37')],qs['fields'](_0x4b4871[_0xead4('0x33')][_0xead4('0x39')]));_0x47609a[_0xead4('0x38')]=_0x47609a['attributes']['length']?_0x47609a[_0xead4('0x38')]:_0x310436[_0xead4('0x37')];if(!_0x4b4871[_0xead4('0x33')][_0xead4('0x3a')](_0xead4('0x3b'))){_0x47609a[_0xead4('0x24')]=qs[_0xead4('0x24')](_0x4b4871[_0xead4('0x33')][_0xead4('0x24')]);_0x47609a[_0xead4('0x22')]=qs[_0xead4('0x22')](_0x4b4871['query'][_0xead4('0x22')]);}_0x47609a['order']=qs[_0xead4('0x3c')](_0x4b4871[_0xead4('0x33')][_0xead4('0x3c')]);_0x47609a['where']=qs[_0xead4('0x35')](_[_0xead4('0x3d')](_0x4b4871[_0xead4('0x33')],_0x310436[_0xead4('0x35')]),_0x374095);if(_0x4b4871['query'][_0xead4('0x3e')]){_0x47609a[_0xead4('0x3f')]=_[_0xead4('0x40')](_0x47609a[_0xead4('0x3f')],{'$or':_[_0xead4('0x2f')](_0x374095,function(_0x2dbbd4){if(_0x2dbbd4['type']!=='VIRTUAL'){var _0x22c7cb={};_0x22c7cb[_0x2dbbd4[_0xead4('0x2d')]]={'$like':'%'+_0x4b4871['query'][_0xead4('0x3e')]+'%'};return _0x22c7cb;}})});}_0x47609a=_[_0xead4('0x40')]({},_0x47609a,_0x4b4871[_0xead4('0x41')]);var _0x1bd1aa={'where':_0x47609a[_0xead4('0x3f')]};return db[_0xead4('0x30')][_0xead4('0x25')](_0x1bd1aa)[_0xead4('0x2b')](function(_0x2e649e){_0x1da62b[_0xead4('0x25')]=_0x2e649e;if(_0x4b4871['query'][_0xead4('0x42')]){_0x47609a[_0xead4('0x43')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0xead4('0x44')](_0x47609a);})['then'](function(_0xe31ab2){_0x1da62b[_0xead4('0x45')]=_0xe31ab2;return _0x1da62b;})[_0xead4('0x2b')](respondWithFilteredResult(_0x3d3bbf,_0x47609a))[_0xead4('0x46')](handleError(_0x3d3bbf,null));};exports[_0xead4('0x47')]=function(_0x9afad4,_0x4e33e3){var _0x3d35e2={'raw':!![],'where':{'id':_0x9afad4[_0xead4('0x48')]['id']}},_0x5d0d26={};_0x5d0d26['model']=_[_0xead4('0x34')](db[_0xead4('0x30')]['rawAttributes']);_0x5d0d26[_0xead4('0x33')]=_['keys'](_0x9afad4[_0xead4('0x33')]);_0x5d0d26[_0xead4('0x35')]=_[_0xead4('0x36')](_0x5d0d26[_0xead4('0x37')],_0x5d0d26['query']);_0x3d35e2[_0xead4('0x38')]=_[_0xead4('0x36')](_0x5d0d26[_0xead4('0x37')],qs[_0xead4('0x39')](_0x9afad4[_0xead4('0x33')]['fields']));_0x3d35e2[_0xead4('0x38')]=_0x3d35e2[_0xead4('0x38')]['length']?_0x3d35e2['attributes']:_0x5d0d26[_0xead4('0x37')];if(_0x9afad4[_0xead4('0x33')][_0xead4('0x42')]){_0x3d35e2[_0xead4('0x43')]=[{'all':!![]}];}_0x3d35e2=_[_0xead4('0x40')]({},_0x3d35e2,_0x9afad4[_0xead4('0x41')]);return db['ChatInternalMessage'][_0xead4('0x49')](_0x3d35e2)[_0xead4('0x2b')](handleEntityNotFound(_0x4e33e3,null))['then'](respondWithResult(_0x4e33e3,null))[_0xead4('0x46')](handleError(_0x4e33e3,null));};exports[_0xead4('0x4a')]=function(_0x3a299c,_0x48ab8f){return db['ChatInternalMessage'][_0xead4('0x4a')](_0x3a299c[_0xead4('0x4b')],{})[_0xead4('0x2b')](respondWithResult(_0x48ab8f,0xc9))[_0xead4('0x46')](handleError(_0x48ab8f,null));};exports[_0xead4('0x2a')]=function(_0x59908d,_0x28b12d){if(_0x59908d[_0xead4('0x4b')]['id']){delete _0x59908d[_0xead4('0x4b')]['id'];}return db[_0xead4('0x30')][_0xead4('0x49')]({'where':{'id':_0x59908d[_0xead4('0x48')]['id']}})[_0xead4('0x2b')](handleEntityNotFound(_0x28b12d,null))[_0xead4('0x2b')](saveUpdates(_0x59908d[_0xead4('0x4b')],null))[_0xead4('0x2b')](respondWithResult(_0x28b12d,null))[_0xead4('0x46')](handleError(_0x28b12d,null));};exports['destroy']=function(_0x3ce126,_0x475f68){return db[_0xead4('0x30')][_0xead4('0x49')]({'where':{'id':_0x3ce126[_0xead4('0x48')]['id']}})['then'](handleEntityNotFound(_0x475f68,null))[_0xead4('0x2b')](removeEntity(_0x475f68,null))[_0xead4('0x46')](handleError(_0x475f68,null));};exports[_0xead4('0x4c')]=function(_0xaf0620,_0x2db7c1){return db[_0xead4('0x30')][_0xead4('0x4c')]()['then'](respondWithResult(_0x2db7c1,null))['catch'](handleError(_0x2db7c1,null));};function wrapUser(_0x43c1b8){return function(_0x5ba2ad){var _0x19197a=_0x43c1b8[_0xead4('0x4d')]({'plain':!![]});_0x19197a['messages']=[];if(_0x5ba2ad){_0x19197a[_0xead4('0x4e')]=_0x5ba2ad[_0xead4('0x4f')];_0x19197a[_0xead4('0x50')]=_0x5ba2ad;}else{_0x19197a[_0xead4('0x4e')]=moment(0x0)[_0xead4('0x51')](_0xead4('0x52'));_0x19197a[_0xead4('0x50')]={};}return _0x19197a;};}exports[_0xead4('0x53')]=function(_0x263d49,_0x383d82,_0x3e2151){var _0x5742b1=[];return db[_0xead4('0x54')][_0xead4('0x44')]({'where':{'role':['agent',_0xead4('0x55'),'user']},'attributes':['id','fullname',_0xead4('0x2d'),'role','userpic',_0xead4('0x56'),_0xead4('0x57'),'lastLoginAt',_0xead4('0x58'),'showWebBar'],'order':qs['sort'](_0xead4('0x59')),'include':[{'model':db['VoiceQueue'],'as':'VoiceQueues','attributes':['id','name',_0xead4('0x5a')],'through':{'attributes':[]}}]})[_0xead4('0x2b')](function(_0x2336ac){if(_0x2336ac){var _0x272fe6=_0x263d49[_0xead4('0x5b')][_0xead4('0x4d')]({'plain':!![]});if(!_0x272fe6)throw new Error(_0xead4('0x5c'));if(_0x272fe6['role']===_0xead4('0x5b')){return db[_0xead4('0x5d')]['find']({'where':{'name':_0xead4('0x5e'),'userProfileId':_0x272fe6[_0xead4('0x5f')]},'raw':!![]})[_0xead4('0x2b')](function(_0x5cf609){if(_0x5cf609){if(_0x5cf609[_0xead4('0x60')]===0x0){return db[_0xead4('0x61')][_0xead4('0x44')]({'where':{'sectionId':_0x5cf609['id']},'raw':!![]})[_0xead4('0x2b')](function(_0xfc45ae){var _0x2559c1=[];if(_[_0xead4('0x62')](_0xfc45ae)){_0x2559c1=_[_0xead4('0x3e')](_0x2336ac,function(_0x2fe22d){if(_0x2fe22d['role']!==_0xead4('0x63')){return _0x2fe22d;}});return _0x2559c1;}else{for(var _0x29967c=0x0;_0x29967c<_0x2336ac[_0xead4('0x64')];_0x29967c++){var _0x347fbb=_0x2336ac[_0x29967c];if(_0x347fbb['role']===_0xead4('0x63')){var _0x34d33c=_[_0xead4('0x49')](_0xfc45ae,function(_0x52277e){return _0x52277e['resourceId']===_0x347fbb['id'];});if(_0x34d33c)_0x2559c1['push'](_0x347fbb);}else{_0x2559c1[_0xead4('0x65')](_0x347fbb);}}return _0x2559c1;}});}else{return _0x2336ac;}}else{var _0x158e9e=_['filter'](_0x2336ac,function(_0x238ea5){if(_0x238ea5[_0xead4('0x66')]!=='agent'){return _0x238ea5;}});return _0x158e9e;}});}else{return _0x2336ac;}}})[_0xead4('0x2b')](function(_0x1236a8){var _0x4adf2d=[];if(_0x1236a8){_0x5742b1=_0x1236a8;for(var _0x529c65=0x0;_0x529c65<_0x1236a8[_0xead4('0x64')];_0x529c65+=0x1){_0x5742b1[_0x529c65]['messages']=[];_0x4adf2d[_0xead4('0x65')](db[_0xead4('0x30')]['find']({'where':{'FromId':[_0x263d49[_0xead4('0x5b')]['id'],_0x1236a8[_0x529c65]['id']],'ToId':[_0x263d49[_0xead4('0x5b')]['id'],_0x1236a8[_0x529c65]['id']],'ChatGroupId':null},'attributes':['id',_0xead4('0x4f'),'FromId',_0xead4('0x67'),_0xead4('0x68'),_0xead4('0x4b')],'order':qs[_0xead4('0x3c')](_0xead4('0x69')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xead4('0x2b')](wrapUser(_0x1236a8[_0x529c65])));}return BPromise[_0xead4('0x6a')](_0x4adf2d);}return[];})[_0xead4('0x2b')](function(_0x4ffd48){return{'rows':_0x4ffd48,'count':_0x4ffd48[_0xead4('0x64')]};})[_0xead4('0x2b')](respondWithResult(_0x383d82,null))['catch'](handleError(_0x383d82,null));};
\ No newline at end of file
index e4fa1d1..ef68d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x118a=['ChatInternalMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x111c17,_0xd138d1){var _0x184d04=function(_0x3581f9){while(--_0x3581f9){_0x111c17['push'](_0x111c17['shift']());}};_0x184d04(++_0xd138d1);}(_0x118a,0x1e2));var _0xa118=function(_0x4684cb,_0x8a4448){_0x4684cb=_0x4684cb-0x0;var _0x3c7a20=_0x118a[_0x4684cb];return _0x3c7a20;};'use strict';var EventEmitter=require(_0xa118('0x0'));var ChatInternalMessage=require(_0xa118('0x1'))['db'][_0xa118('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xa118('0x3')](0x0);var events={'afterCreate':_0xa118('0x4'),'afterUpdate':_0xa118('0x5'),'afterDestroy':_0xa118('0x6')};function emitEvent(_0x456a5e){return function(_0x19b383,_0x5d8b5c,_0x52acdd){ChatInternalMessageEvents['emit'](_0x456a5e+':'+_0x19b383['id'],_0x19b383);ChatInternalMessageEvents[_0xa118('0x7')](_0x456a5e,_0x19b383);_0x52acdd(null);};}for(var e in events){if(events[_0xa118('0x8')](e)){var event=events[e];ChatInternalMessage[_0xa118('0x9')](e,emitEvent(event));}}module[_0xa118('0xa')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x4390=['exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update','emit','hook'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x4390,0x88));var _0x0439=function(_0x57d074,_0x444670){_0x57d074=_0x57d074-0x0;var _0x1aa706=_0x4390[_0x57d074];return _0x1aa706;};'use strict';var EventEmitter=require(_0x0439('0x0'));var ChatInternalMessage=require(_0x0439('0x1'))['db'][_0x0439('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x0439('0x3')](0x0);var events={'afterCreate':_0x0439('0x4'),'afterUpdate':_0x0439('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4ac968){return function(_0x5c8030,_0x196901,_0x25142f){ChatInternalMessageEvents[_0x0439('0x6')](_0x4ac968+':'+_0x5c8030['id'],_0x5c8030);ChatInternalMessageEvents[_0x0439('0x6')](_0x4ac968,_0x5c8030);_0x25142f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x0439('0x7')](e,emitEvent(event));}}module[_0x0439('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index f6c6bdb..e1b7895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc97=['bluebird','request-promise','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment'];(function(_0x2c0557,_0x4314fd){var _0x2878cd=function(_0x1f8a9f){while(--_0x1f8a9f){_0x2c0557['push'](_0x2c0557['shift']());}};_0x2878cd(++_0x4314fd);}(_0xcc97,0x171));var _0x7cc9=function(_0x4176c0,_0x26fad1){_0x4176c0=_0x4176c0-0x0;var _0x4be537=_0xcc97[_0x4176c0];return _0x4be537;};'use strict';var _=require(_0x7cc9('0x0'));var util=require(_0x7cc9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x7cc9('0x2'));var BPromise=require(_0x7cc9('0x3'));var rp=require(_0x7cc9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7cc9('0x5'));var config=require(_0x7cc9('0x6'));var attributes=require(_0x7cc9('0x7'));module[_0x7cc9('0x8')]=function(_0x2608fa,_0x2d6032){return _0x2608fa['define']('ChatInternalMessage',attributes,{'tableName':_0x7cc9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7cc9('0xa'),'collate':_0x7cc9('0xb')});};
\ No newline at end of file
+var _0xbcdc=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','ChatInternalMessage','chat_internal_messages','utf8mb4'];(function(_0x5723bf,_0x4ff409){var _0xcd38ba=function(_0x18b5da){while(--_0x18b5da){_0x5723bf['push'](_0x5723bf['shift']());}};_0xcd38ba(++_0x4ff409);}(_0xbcdc,0x196));var _0xcbcd=function(_0x53f05b,_0x379e47){_0x53f05b=_0x53f05b-0x0;var _0x312b2d=_0xbcdc[_0x53f05b];return _0x312b2d;};'use strict';var _=require(_0xcbcd('0x0'));var util=require(_0xcbcd('0x1'));var logger=require(_0xcbcd('0x2'))(_0xcbcd('0x3'));var moment=require(_0xcbcd('0x4'));var BPromise=require(_0xcbcd('0x5'));var rp=require(_0xcbcd('0x6'));var fs=require('fs');var path=require(_0xcbcd('0x7'));var rimraf=require(_0xcbcd('0x8'));var config=require(_0xcbcd('0x9'));var attributes=require('./chatInternalMessage.attributes');module[_0xcbcd('0xa')]=function(_0x545849,_0x3d3059){return _0x545849['define'](_0xcbcd('0xb'),attributes,{'tableName':_0xcbcd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcbcd('0xd'),'collate':_0xcbcd('0xe')});};
\ No newline at end of file
index 38812ee..d45e6bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe53e=['../../config/logger','rpc','../../config/environment','redis','socket.io-emitter','./chatInternalMessage.socket','register','request','info','ChatInternalMessage,\x20%s,\x20%s','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x5e92aa,_0x32d201){var _0x10ecd1=function(_0x5ca0fd){while(--_0x5ca0fd){_0x5e92aa['push'](_0x5e92aa['shift']());}};_0x10ecd1(++_0x32d201);}(_0xe53e,0x11b));var _0xee53=function(_0x1c7d0,_0x330fc3){_0x1c7d0=_0x1c7d0-0x0;var _0x2fefe8=_0xe53e[_0x1c7d0];return _0x2fefe8;};'use strict';var _=require(_0xee53('0x0'));var util=require('util');var moment=require(_0xee53('0x1'));var BPromise=require(_0xee53('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee53('0x3'));var db=require(_0xee53('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xee53('0x5'))(_0xee53('0x6'));var config=require(_0xee53('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xee53('0x8')]=_['defaults'](config[_0xee53('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xee53('0x9'))(new Redis(config[_0xee53('0x8')]));require(_0xee53('0xa'))[_0xee53('0xb')](socket);function respondWithRpcPromise(_0x1f978a,_0xbd3f90,_0x169a99){return new BPromise(function(_0x5caa0e,_0x1b2fad){return client[_0xee53('0xc')](_0x1f978a,_0x169a99)['then'](function(_0xd74cdc){logger[_0xee53('0xd')](_0xee53('0xe'),_0xbd3f90,'request\x20sent');logger[_0xee53('0xf')](_0xee53('0x10'),_0xbd3f90,_0xee53('0x11'),JSON[_0xee53('0x12')](_0xd74cdc));if(_0xd74cdc['error']){if(_0xd74cdc[_0xee53('0x13')][_0xee53('0x14')]===0x1f4){logger['error'](_0xee53('0xe'),_0xbd3f90,_0xd74cdc[_0xee53('0x13')]['message']);return _0x1b2fad(_0xd74cdc['error'][_0xee53('0x15')]);}logger[_0xee53('0x13')](_0xee53('0xe'),_0xbd3f90,_0xd74cdc[_0xee53('0x13')][_0xee53('0x15')]);return _0x5caa0e(_0xd74cdc['error'][_0xee53('0x15')]);}else{logger[_0xee53('0xd')](_0xee53('0xe'),_0xbd3f90,_0xee53('0x11'));_0x5caa0e(_0xd74cdc[_0xee53('0x16')][_0xee53('0x15')]);}})[_0xee53('0x17')](function(_0x51a8c7){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0xbd3f90,_0x51a8c7);_0x1b2fad(_0x51a8c7);});});}
\ No newline at end of file
+var _0xf19b=['register','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','http','redis','socket.io-emitter'];(function(_0x3da612,_0x332456){var _0x1a9d1d=function(_0x5ca0d0){while(--_0x5ca0d0){_0x3da612['push'](_0x3da612['shift']());}};_0x1a9d1d(++_0x332456);}(_0xf19b,0x197));var _0xbf19=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xf19b[_0x4243a3];return _0x1b2a33;};'use strict';var _=require('lodash');var util=require(_0xbf19('0x0'));var moment=require(_0xbf19('0x1'));var BPromise=require(_0xbf19('0x2'));var rs=require(_0xbf19('0x3'));var fs=require('fs');var Redis=require(_0xbf19('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbf19('0x5'));var logger=require(_0xbf19('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbf19('0x7'));var client=jayson['client'][_0xbf19('0x8')]({'port':0x232a});config[_0xbf19('0x9')]=_['defaults'](config[_0xbf19('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xbf19('0xa'))(new Redis(config[_0xbf19('0x9')]));require('./chatInternalMessage.socket')[_0xbf19('0xb')](socket);function respondWithRpcPromise(_0x40024f,_0x2cc14d,_0x309138){return new BPromise(function(_0x56fa44,_0x184663){return client['request'](_0x40024f,_0x309138)[_0xbf19('0xc')](function(_0x4de0b8){logger[_0xbf19('0xd')](_0xbf19('0xe'),_0x2cc14d,_0xbf19('0xf'));logger[_0xbf19('0x10')](_0xbf19('0x11'),_0x2cc14d,_0xbf19('0xf'),JSON[_0xbf19('0x12')](_0x4de0b8));if(_0x4de0b8['error']){if(_0x4de0b8[_0xbf19('0x13')]['code']===0x1f4){logger[_0xbf19('0x13')](_0xbf19('0xe'),_0x2cc14d,_0x4de0b8[_0xbf19('0x13')]['message']);return _0x184663(_0x4de0b8[_0xbf19('0x13')][_0xbf19('0x14')]);}logger[_0xbf19('0x13')](_0xbf19('0xe'),_0x2cc14d,_0x4de0b8['error'][_0xbf19('0x14')]);return _0x56fa44(_0x4de0b8['error']['message']);}else{logger['info'](_0xbf19('0xe'),_0x2cc14d,_0xbf19('0xf'));_0x56fa44(_0x4de0b8[_0xbf19('0x15')][_0xbf19('0x14')]);}})['catch'](function(_0x37152b){logger[_0xbf19('0x13')](_0xbf19('0xe'),_0x2cc14d,_0x37152b);_0x184663(_0x37152b);});});}
\ No newline at end of file
index ce098ca..f6b1ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe952=['emit','removeListener','register','length','./chatInternalMessage.events','save','remove','update'];(function(_0x2c8cff,_0x2580b2){var _0x345e55=function(_0x446bfe){while(--_0x446bfe){_0x2c8cff['push'](_0x2c8cff['shift']());}};_0x345e55(++_0x2580b2);}(_0xe952,0x1cc));var _0x2e95=function(_0x34947a,_0x482057){_0x34947a=_0x34947a-0x0;var _0x3e752a=_0xe952[_0x34947a];return _0x3e752a;};'use strict';var ChatInternalMessageEvents=require(_0x2e95('0x0'));var events=[_0x2e95('0x1'),_0x2e95('0x2'),_0x2e95('0x3')];function createListener(_0x11fd18,_0x155a38){return function(_0x346920){_0x155a38[_0x2e95('0x4')](_0x11fd18,_0x346920);};}function removeListener(_0x742d8d,_0x5afdc6){return function(){ChatInternalMessageEvents[_0x2e95('0x5')](_0x742d8d,_0x5afdc6);};}exports[_0x2e95('0x6')]=function(_0x6a2140){for(var _0x10743a=0x0,_0x2c51c3=events[_0x2e95('0x7')];_0x10743a<_0x2c51c3;_0x10743a++){var _0x3cb74c=events[_0x10743a];var _0x3f6ceb=createListener('chatInternalMessage:'+_0x3cb74c,_0x6a2140);ChatInternalMessageEvents['on'](_0x3cb74c,_0x3f6ceb);}};
\ No newline at end of file
+var _0xdcce=['update','removeListener','register','chatInternalMessage:','save','remove'];(function(_0x3001cd,_0x4de44c){var _0x5894f5=function(_0x437070){while(--_0x437070){_0x3001cd['push'](_0x3001cd['shift']());}};_0x5894f5(++_0x4de44c);}(_0xdcce,0x112));var _0xedcc=function(_0x1cb7e9,_0x523ea2){_0x1cb7e9=_0x1cb7e9-0x0;var _0x4d9bf5=_0xdcce[_0x1cb7e9];return _0x4d9bf5;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0xedcc('0x0'),_0xedcc('0x1'),_0xedcc('0x2')];function createListener(_0x516df2,_0x13a3d5){return function(_0x40ca3f){_0x13a3d5['emit'](_0x516df2,_0x40ca3f);};}function removeListener(_0x704f6c,_0x57d7c6){return function(){ChatInternalMessageEvents[_0xedcc('0x3')](_0x704f6c,_0x57d7c6);};}exports[_0xedcc('0x4')]=function(_0x342ebe){for(var _0x39c8ff=0x0,_0x34cc14=events['length'];_0x39c8ff<_0x34cc14;_0x39c8ff++){var _0x1cbec8=events[_0x39c8ff];var _0x40ab58=createListener(_0xedcc('0x5')+_0x1cbec8,_0x342ebe);ChatInternalMessageEvents['on'](_0x1cbec8,_0x40ab58);}};
\ No newline at end of file
index 604ea7d..f81e904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a84=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','post','create','update','delete'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x8a84,0x1ba));var _0x48a8=function(_0x57fa7e,_0xd0b5ce){_0x57fa7e=_0x57fa7e-0x0;var _0x320671=_0x8a84[_0x57fa7e];return _0x320671;};'use strict';var multer=require(_0x48a8('0x0'));var util=require('util');var path=require(_0x48a8('0x1'));var timeout=require(_0x48a8('0x2'));var express=require(_0x48a8('0x3'));var router=express[_0x48a8('0x4')]();var fs_extra=require(_0x48a8('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x48a8('0x6'));router[_0x48a8('0x7')]('/',auth[_0x48a8('0x8')](),controller[_0x48a8('0x9')]);router[_0x48a8('0x7')](_0x48a8('0xa'),auth[_0x48a8('0x8')](),controller[_0x48a8('0xb')]);router[_0x48a8('0x7')](_0x48a8('0xc'),auth['isAuthenticated'](),controller[_0x48a8('0xd')]);router[_0x48a8('0x7')](_0x48a8('0xe'),auth[_0x48a8('0x8')](),controller[_0x48a8('0xf')]);router[_0x48a8('0x10')]('/',auth[_0x48a8('0x8')](),controller[_0x48a8('0x11')]);router['put'](_0x48a8('0xe'),controller[_0x48a8('0x12')]);router[_0x48a8('0x13')](_0x48a8('0xe'),auth[_0x48a8('0x8')](),controller[_0x48a8('0x14')]);module[_0x48a8('0x15')]=router;
\ No newline at end of file
+var _0xb6e8=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','update','delete','destroy','multer'];(function(_0x1c3afc,_0x3f6ab1){var _0x2933fb=function(_0x22b6e5){while(--_0x22b6e5){_0x1c3afc['push'](_0x1c3afc['shift']());}};_0x2933fb(++_0x3f6ab1);}(_0xb6e8,0xa0));var _0x8b6e=function(_0x415d4d,_0xd37b34){_0x415d4d=_0x415d4d-0x0;var _0x1399b3=_0xb6e8[_0x415d4d];return _0x1399b3;};'use strict';var multer=require(_0x8b6e('0x0'));var util=require(_0x8b6e('0x1'));var path=require(_0x8b6e('0x2'));var timeout=require(_0x8b6e('0x3'));var express=require(_0x8b6e('0x4'));var router=express[_0x8b6e('0x5')]();var fs_extra=require(_0x8b6e('0x6'));var auth=require(_0x8b6e('0x7'));var interaction=require(_0x8b6e('0x8'));var config=require(_0x8b6e('0x9'));var controller=require(_0x8b6e('0xa'));router['get']('/',auth[_0x8b6e('0xb')](),controller[_0x8b6e('0xc')]);router[_0x8b6e('0xd')](_0x8b6e('0xe'),auth[_0x8b6e('0xb')](),controller[_0x8b6e('0xf')]);router[_0x8b6e('0xd')]('/users',auth['isAuthenticated'](),controller['getUsers']);router['get'](_0x8b6e('0x10'),auth['isAuthenticated'](),controller[_0x8b6e('0x11')]);router[_0x8b6e('0x12')]('/',auth['isAuthenticated'](),controller[_0x8b6e('0x13')]);router['put'](_0x8b6e('0x10'),controller[_0x8b6e('0x14')]);router[_0x8b6e('0x15')](_0x8b6e('0x10'),auth[_0x8b6e('0xb')](),controller[_0x8b6e('0x16')]);module['exports']=router;
\ No newline at end of file
index db83909..379a1ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x33d050,_0x389a08){var _0x3acfb9=function(_0x6b7812){while(--_0x6b7812){_0x33d050['push'](_0x33d050['shift']());}};_0x3acfb9(++_0x389a08);}(_0xb62e,0x1de));var _0xeb62=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb62e[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0xeb62('0x0'));module[_0xeb62('0x1')]={'body':{'type':Sequelize[_0xeb62('0x2')](_0xeb62('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0xeb62('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xeb62('0x5')]('in',_0xeb62('0x6')),'defaultValue':_0xeb62('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xeb62('0x7')]},'providerName':{'type':Sequelize[_0xeb62('0x8')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x15b8=['DATE','STRING','exports','TEXT','medium','BOOLEAN','out'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x15b8,0xcd));var _0x815b=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x15b8[_0x5d2803];return _0xdcad2c;};'use strict';var Sequelize=require('sequelize');module[_0x815b('0x0')]={'body':{'type':Sequelize[_0x815b('0x1')](_0x815b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x815b('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x815b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x815b('0x4')),'defaultValue':_0x815b('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x815b('0x5')]},'providerName':{'type':Sequelize[_0x815b('0x6')]},'providerResponse':{'type':Sequelize[_0x815b('0x1')]}};
\ No newline at end of file
index 177f876..de795c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c5c=['ContactId','Sequelize','QueryTypes','internal','interface','rejectmessage','parse','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','http','request','then','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','index','map','ChatMessage','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','keys','rawAttributes','find','create','body','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','SELECT','contact','User','fullname','email','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage'];(function(_0x2bd8b7,_0xc16ee5){var _0x2d0ee9=function(_0x1caf0a){while(--_0x1caf0a){_0x2bd8b7['push'](_0x2bd8b7['shift']());}};_0x2d0ee9(++_0xc16ee5);}(_0x0c5c,0x92));var _0xc0c5=function(_0x490edb,_0x3892c6){_0x490edb=_0x490edb-0x0;var _0x126889=_0x0c5c[_0x490edb];return _0x126889;};'use strict';var emlformat=require(_0xc0c5('0x0'));var rimraf=require(_0xc0c5('0x1'));var zipdir=require(_0xc0c5('0x2'));var jsonpatch=require(_0xc0c5('0x3'));var rp=require(_0xc0c5('0x4'));var moment=require('moment');var BPromise=require(_0xc0c5('0x5'));var Mustache=require(_0xc0c5('0x6'));var util=require(_0xc0c5('0x7'));var path=require('path');var sox=require(_0xc0c5('0x8'));var csv=require(_0xc0c5('0x9'));var ejs=require(_0xc0c5('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc0c5('0xb'));var squel=require(_0xc0c5('0xc'));var crypto=require(_0xc0c5('0xd'));var jsforce=require(_0xc0c5('0xe'));var deskjs=require(_0xc0c5('0xf'));var toCsv=require(_0xc0c5('0x9'));var querystring=require(_0xc0c5('0x10'));var Papa=require(_0xc0c5('0x11'));var Redis=require(_0xc0c5('0x12'));var authService=require(_0xc0c5('0x13'));var qs=require(_0xc0c5('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc0c5('0x15'));var logger=require(_0xc0c5('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc0c5('0x17'));var db=require(_0xc0c5('0x18'))['db'];config[_0xc0c5('0x19')]=_[_0xc0c5('0x1a')](config['redis'],{'host':_0xc0c5('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc0c5('0x19')]));require(_0xc0c5('0x1c'))[_0xc0c5('0x1d')](socket);var jayson=require(_0xc0c5('0x1e'));var client=jayson['client'][_0xc0c5('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0xc0c5('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x50e95d,_0x2fcaef,_0x48f20d,_0x4fa57d){return new BPromise(function(_0x334483,_0x94c386){var _0x157c6d=_0x4fa57d||client;return _0x157c6d[_0xc0c5('0x20')](_0x50e95d,_0x48f20d)[_0xc0c5('0x21')](function(_0x5ef291){logger['info']('ChatMessage,\x20%s,\x20%s',_0x2fcaef,'request\x20sent');logger[_0xc0c5('0x22')](_0xc0c5('0x23'),_0x2fcaef,'request\x20sent',JSON[_0xc0c5('0x24')](_0x5ef291));if(_0x5ef291[_0xc0c5('0x25')]){if(_0x5ef291[_0xc0c5('0x25')][_0xc0c5('0x26')]===0x1f4){logger['error'](_0xc0c5('0x27'),_0x2fcaef,_0x5ef291['error'][_0xc0c5('0x28')]);return _0x94c386(_0x5ef291[_0xc0c5('0x25')]['message']);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x2fcaef,_0x5ef291['error'][_0xc0c5('0x28')]);return _0x334483(_0x5ef291[_0xc0c5('0x25')]['message']);}else{logger[_0xc0c5('0x29')](_0xc0c5('0x27'),_0x2fcaef,'request\x20sent');_0x334483(_0x5ef291[_0xc0c5('0x2a')][_0xc0c5('0x28')]);}})[_0xc0c5('0x2b')](function(_0x4f229f){logger['error'](_0xc0c5('0x27'),_0x2fcaef,_0x4f229f);_0x94c386(_0x4f229f);});});}function respondWithStatusCode(_0x427fb5,_0x9a8c2a){_0x9a8c2a=_0x9a8c2a||0xcc;return function(_0x2eeaba){if(_0x2eeaba){return _0x427fb5[_0xc0c5('0x2c')](_0x9a8c2a);}return _0x427fb5['status'](_0x9a8c2a)[_0xc0c5('0x2d')]();};}function respondWithResult(_0x3340bb,_0x19fc66){_0x19fc66=_0x19fc66||0xc8;return function(_0xd9df27){if(_0xd9df27){return _0x3340bb[_0xc0c5('0x2e')](_0x19fc66)[_0xc0c5('0x2f')](_0xd9df27);}};}function respondWithFilteredResult(_0x2b3898,_0x461169){return function(_0x512a15){if(_0x512a15){var _0x18cfbb=typeof _0x461169[_0xc0c5('0x30')]===_0xc0c5('0x31')&&typeof _0x461169[_0xc0c5('0x32')]===_0xc0c5('0x31');var _0x5dfb09=_0x512a15['count'];var _0xa2d48b=_0x18cfbb?0x0:_0x461169['offset'];var _0x2b6fdc=_0x18cfbb?_0x512a15['count']:_0x461169[_0xc0c5('0x30')]+_0x461169['limit'];var _0x3d9139;if(_0x2b6fdc>=_0x5dfb09){_0x2b6fdc=_0x5dfb09;_0x3d9139=0xc8;}else{_0x3d9139=0xce;}_0x2b3898[_0xc0c5('0x2e')](_0x3d9139);return _0x2b3898[_0xc0c5('0x33')](_0xc0c5('0x34'),_0xa2d48b+'-'+_0x2b6fdc+'/'+_0x5dfb09)[_0xc0c5('0x2f')](_0x512a15);}return null;};}function patchUpdates(_0x3965a6){return function(_0x55e2db){try{jsonpatch['apply'](_0x55e2db,_0x3965a6,!![]);}catch(_0x3e4390){return BPromise[_0xc0c5('0x35')](_0x3e4390);}return _0x55e2db[_0xc0c5('0x36')]();};}function saveUpdates(_0x5b8a5a,_0x5c107b){return function(_0x313c99){if(_0x313c99){return _0x313c99[_0xc0c5('0x37')](_0x5b8a5a)[_0xc0c5('0x21')](function(_0x20c373){return _0x20c373;});}return null;};}function removeEntity(_0x59c865,_0x3a39c4){return function(_0x16ca67){if(_0x16ca67){return _0x16ca67[_0xc0c5('0x38')]()[_0xc0c5('0x21')](function(){_0x59c865[_0xc0c5('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f1c9d,_0x3fecb1){return function(_0x15d1d3){if(!_0x15d1d3){_0x5f1c9d[_0xc0c5('0x2c')](0x194);}return _0x15d1d3;};}function handleError(_0x20cd64,_0xb5a4f2){_0xb5a4f2=_0xb5a4f2||0x1f4;return function(_0xe10f7f){logger[_0xc0c5('0x25')](_0xe10f7f[_0xc0c5('0x39')]);if(_0xe10f7f[_0xc0c5('0x3a')]){delete _0xe10f7f[_0xc0c5('0x3a')];}_0x20cd64[_0xc0c5('0x2e')](_0xb5a4f2)[_0xc0c5('0x3b')](_0xe10f7f);};}exports[_0xc0c5('0x3c')]=function(_0xf63980,_0xadfd64){var _0x5b0596={},_0x584ca1={},_0x405fd4={'count':0x0,'rows':[]};var _0x1cc4b2=_[_0xc0c5('0x3d')](db[_0xc0c5('0x3e')]['rawAttributes'],function(_0xfe5141){return{'name':_0xfe5141[_0xc0c5('0x3f')],'type':_0xfe5141[_0xc0c5('0x40')][_0xc0c5('0x41')]};});_0x584ca1[_0xc0c5('0x42')]=_['map'](_0x1cc4b2,'name');_0x584ca1['query']=_['keys'](_0xf63980[_0xc0c5('0x43')]);_0x584ca1[_0xc0c5('0x44')]=_[_0xc0c5('0x45')](_0x584ca1[_0xc0c5('0x42')],_0x584ca1[_0xc0c5('0x43')]);_0x5b0596[_0xc0c5('0x46')]=_[_0xc0c5('0x45')](_0x584ca1[_0xc0c5('0x42')],qs[_0xc0c5('0x47')](_0xf63980[_0xc0c5('0x43')][_0xc0c5('0x47')]));_0x5b0596[_0xc0c5('0x46')]=_0x5b0596[_0xc0c5('0x46')][_0xc0c5('0x48')]?_0x5b0596[_0xc0c5('0x46')]:_0x584ca1[_0xc0c5('0x42')];if(!_0xf63980[_0xc0c5('0x43')][_0xc0c5('0x49')](_0xc0c5('0x4a'))){_0x5b0596['limit']=qs['limit'](_0xf63980[_0xc0c5('0x43')]['limit']);_0x5b0596[_0xc0c5('0x30')]=qs[_0xc0c5('0x30')](_0xf63980['query'][_0xc0c5('0x30')]);}_0x5b0596[_0xc0c5('0x4b')]=qs[_0xc0c5('0x4c')](_0xf63980[_0xc0c5('0x43')][_0xc0c5('0x4c')]);_0x5b0596[_0xc0c5('0x4d')]=qs['filters'](_['pick'](_0xf63980['query'],_0x584ca1[_0xc0c5('0x44')]),_0x1cc4b2);if(_0xf63980['query'][_0xc0c5('0x4e')]){_0x5b0596[_0xc0c5('0x4d')]=_[_0xc0c5('0x4f')](_0x5b0596[_0xc0c5('0x4d')],{'$or':_['map'](_0x1cc4b2,function(_0x227945){if(_0x227945[_0xc0c5('0x40')]!==_0xc0c5('0x50')){var _0xf1b865={};_0xf1b865[_0x227945['name']]={'$like':'%'+_0xf63980[_0xc0c5('0x43')][_0xc0c5('0x4e')]+'%'};return _0xf1b865;}})});}_0x5b0596=_[_0xc0c5('0x4f')]({},_0x5b0596,_0xf63980[_0xc0c5('0x51')]);var _0x5d5bcf={'where':_0x5b0596[_0xc0c5('0x4d')]};return db[_0xc0c5('0x3e')][_0xc0c5('0x52')](_0x5d5bcf)['then'](function(_0x1d7d85){_0x405fd4[_0xc0c5('0x52')]=_0x1d7d85;if(_0xf63980['query'][_0xc0c5('0x53')]){_0x5b0596[_0xc0c5('0x54')]=[{'all':!![]}];}return db[_0xc0c5('0x3e')][_0xc0c5('0x55')](_0x5b0596);})['then'](function(_0x39388a){_0x405fd4[_0xc0c5('0x56')]=_0x39388a;return _0x405fd4;})[_0xc0c5('0x21')](respondWithFilteredResult(_0xadfd64,_0x5b0596))[_0xc0c5('0x2b')](handleError(_0xadfd64,null));};exports[_0xc0c5('0x57')]=function(_0x545aa2,_0x389cb6){var _0x174ad7={'raw':!![],'where':{'id':_0x545aa2[_0xc0c5('0x58')]['id']}},_0x34e3ef={};_0x34e3ef['model']=_[_0xc0c5('0x59')](db[_0xc0c5('0x3e')][_0xc0c5('0x5a')]);_0x34e3ef[_0xc0c5('0x43')]=_[_0xc0c5('0x59')](_0x545aa2[_0xc0c5('0x43')]);_0x34e3ef['filters']=_[_0xc0c5('0x45')](_0x34e3ef[_0xc0c5('0x42')],_0x34e3ef[_0xc0c5('0x43')]);_0x174ad7[_0xc0c5('0x46')]=_['intersection'](_0x34e3ef[_0xc0c5('0x42')],qs['fields'](_0x545aa2[_0xc0c5('0x43')][_0xc0c5('0x47')]));_0x174ad7[_0xc0c5('0x46')]=_0x174ad7[_0xc0c5('0x46')][_0xc0c5('0x48')]?_0x174ad7[_0xc0c5('0x46')]:_0x34e3ef['model'];if(_0x545aa2['query'][_0xc0c5('0x53')]){_0x174ad7[_0xc0c5('0x54')]=[{'all':!![]}];}_0x174ad7=_[_0xc0c5('0x4f')]({},_0x174ad7,_0x545aa2[_0xc0c5('0x51')]);return db[_0xc0c5('0x3e')][_0xc0c5('0x5b')](_0x174ad7)[_0xc0c5('0x21')](handleEntityNotFound(_0x389cb6,null))['then'](respondWithResult(_0x389cb6,null))[_0xc0c5('0x2b')](handleError(_0x389cb6,null));};exports[_0xc0c5('0x5c')]=function(_0x2d9e4a,_0x139736){return db[_0xc0c5('0x3e')][_0xc0c5('0x5c')](_0x2d9e4a['body'],{})['then'](respondWithResult(_0x139736,0xc9))['catch'](handleError(_0x139736,null));};exports['update']=function(_0x17c460,_0x3e0ac8){if(_0x17c460[_0xc0c5('0x5d')]['id']){delete _0x17c460['body']['id'];}return db[_0xc0c5('0x3e')][_0xc0c5('0x5b')]({'where':{'id':_0x17c460[_0xc0c5('0x58')]['id']}})['then'](handleEntityNotFound(_0x3e0ac8,null))['then'](saveUpdates(_0x17c460[_0xc0c5('0x5d')],null))[_0xc0c5('0x21')](respondWithResult(_0x3e0ac8,null))['catch'](handleError(_0x3e0ac8,null));};exports[_0xc0c5('0x38')]=function(_0x22763d,_0x3c30c0){return db['ChatMessage'][_0xc0c5('0x5b')]({'where':{'id':_0x22763d[_0xc0c5('0x58')]['id']}})[_0xc0c5('0x21')](handleEntityNotFound(_0x3c30c0,null))[_0xc0c5('0x21')](removeEntity(_0x3c30c0,null))[_0xc0c5('0x2b')](handleError(_0x3c30c0,null));};exports[_0xc0c5('0x5e')]=function(_0x586b97,_0x88fa97){return db[_0xc0c5('0x3e')][_0xc0c5('0x5e')]()[_0xc0c5('0x21')](respondWithResult(_0x88fa97,null))[_0xc0c5('0x2b')](handleError(_0x88fa97,null));};var interaction_log=require(_0xc0c5('0x16'))(_0xc0c5('0x5f'));exports[_0xc0c5('0x60')]=function(_0x59c319,_0x2c4e5d,_0x15f442){var _0x92862c={'agent':{},'channel':_0xc0c5('0x61')};if(_0x59c319[_0xc0c5('0x5d')]['id']){delete _0x59c319[_0xc0c5('0x5d')]['id'];}_0x59c319['body'][_0xc0c5('0x62')]=!![];_0x59c319[_0xc0c5('0x5d')][_0xc0c5('0x63')]=moment()[_0xc0c5('0x64')](_0xc0c5('0x65'));_0x59c319[_0xc0c5('0x5d')][_0xc0c5('0x66')]=_0x59c319[_0xc0c5('0x5d')][_0xc0c5('0x66')]||_0x59c319[_0xc0c5('0x67')]['id'];_0x92862c[_0xc0c5('0x68')]['id']=_0x59c319['body'][_0xc0c5('0x66')];return db[_0xc0c5('0x3e')][_0xc0c5('0x5b')]({'where':{'id':_0x59c319[_0xc0c5('0x58')]['id'],'UserId':null}})[_0xc0c5('0x21')](handleEntityNotFound(_0x2c4e5d,null))[_0xc0c5('0x21')](saveUpdates(_0x59c319[_0xc0c5('0x5d')],null))['then'](function(_0x368df2){if(_0x368df2){_0x92862c[_0xc0c5('0x28')]=_0x368df2[_0xc0c5('0x69')]({'plain':!![]});return db[_0xc0c5('0x6a')][_0xc0c5('0x5b')]({'where':{'id':_0x368df2[_0xc0c5('0x6b')]}});}return null;})[_0xc0c5('0x21')](handleEntityNotFound(_0x2c4e5d,null))[_0xc0c5('0x21')](function(_0x3d064c){if(_0x3d064c){return _0x3d064c['update']({'UserId':_0x59c319[_0xc0c5('0x5d')][_0xc0c5('0x66')],'read1stAt':_['isNil'](_0x3d064c[_0xc0c5('0x6c')])?moment()[_0xc0c5('0x64')](_0xc0c5('0x65')):undefined});}return null;})[_0xc0c5('0x21')](function(_0x57727c){if(_0x57727c){_0x92862c[_0xc0c5('0x6d')]=_0x57727c[_0xc0c5('0x69')]({'plain':!![]});interaction_log['info'](_0xc0c5('0x6e'),_0x59c319[_0xc0c5('0x67')]['id'],_0x59c319['user'][_0xc0c5('0x3a')],_0x59c319['user'][_0xc0c5('0x6f')],_0x92862c[_0xc0c5('0x6d')]['id'],_0x59c319[_0xc0c5('0x5d')]?JSON['stringify'](_0x59c319[_0xc0c5('0x5d')]):'null');return respondWithRpcPromise(_0xc0c5('0x70'),_0xc0c5('0x71'),_0x92862c);}return null;})[_0xc0c5('0x21')](function(_0x3511d3){var _0x53239d=_0xc0c5('0x72')+_0x3511d3[_0xc0c5('0x28')]['ContactId'];return db[_0xc0c5('0x73')][_0xc0c5('0x43')](_0x53239d,{'type':db['Sequelize']['QueryTypes'][_0xc0c5('0x74')],'raw':!![]})[_0xc0c5('0x21')](function(_0x128e6d){return _0x128e6d;});})[_0xc0c5('0x21')](function(_0x101fed){if(_0x101fed){_0x92862c[_0xc0c5('0x28')][_0xc0c5('0x75')]=_0x101fed[0x0];if(!_0x59c319['body'][_0xc0c5('0x66')])return;return db[_0xc0c5('0x76')][_0xc0c5('0x5b')]({'where':{'id':_0x59c319[_0xc0c5('0x5d')][_0xc0c5('0x66')],'role':'agent'},'attributes':['id','name',_0xc0c5('0x77'),_0xc0c5('0x78'),'internal'],'raw':!![]});}return null;})[_0xc0c5('0x21')](function(_0x3325b4){if(!_0x3325b4)return null;_0x92862c[_0xc0c5('0x28')][_0xc0c5('0x68')]=_0x3325b4;return _0x92862c;})[_0xc0c5('0x21')](function(_0x3bdd37){if(_0x3bdd37){if(_0x59c319['body'][_0xc0c5('0x79')]){_0x92862c[_0xc0c5('0x28')]['interface']=util[_0xc0c5('0x64')](_0xc0c5('0x7a'),_0x59c319[_0xc0c5('0x67')][_0xc0c5('0x3a')]);_0x92862c[_0xc0c5('0x28')][_0xc0c5('0x7b')]=_0x92862c['channel'];_0x92862c[_0xc0c5('0x28')][_0xc0c5('0x7c')]=_0x92862c[_0xc0c5('0x7b')];_0x92862c[_0xc0c5('0x28')][_0xc0c5('0x7d')]='accept';return respondWithRpcPromise(_0xc0c5('0x7e'),_0xc0c5('0x7e'),{'event':_0xc0c5('0x7f'),'message':_[_0xc0c5('0x4f')](_0x92862c['message'],JSON['parse'](_0x92862c[_0xc0c5('0x6d')][_0xc0c5('0x80')]))},client9002)[_0xc0c5('0x21')](function(){return _0x92862c;});}return _0x92862c;}return null;})[_0xc0c5('0x21')](respondWithResult(_0x2c4e5d,null))['catch'](handleError(_0x2c4e5d,null));};var interaction_log=require(_0xc0c5('0x16'))(_0xc0c5('0x5f'));exports['reject']=function(_0x236653,_0x35823e,_0x11418c){var _0x1b00b1={'agent':{},'channel':_0xc0c5('0x61')};if(_0x236653['body']['id']){delete _0x236653['body']['id'];}_0x236653['body'][_0xc0c5('0x66')]=_0x236653[_0xc0c5('0x5d')]['UserId']||_0x236653[_0xc0c5('0x67')]['id'];_0x1b00b1[_0xc0c5('0x68')]['id']=_0x236653[_0xc0c5('0x5d')][_0xc0c5('0x66')];return db[_0xc0c5('0x3e')][_0xc0c5('0x5b')]({'where':{'id':_0x236653[_0xc0c5('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x35823e,null))[_0xc0c5('0x21')](function(_0x348a10){if(_0x348a10){_0x1b00b1[_0xc0c5('0x28')]=_0x348a10[_0xc0c5('0x69')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x348a10[_0xc0c5('0x6b')]}});}return null;})[_0xc0c5('0x21')](handleEntityNotFound(_0x35823e,null))[_0xc0c5('0x21')](function(_0x1eb09f){if(_0x1eb09f){_0x1b00b1[_0xc0c5('0x6d')]=_0x1eb09f[_0xc0c5('0x69')]({'plain':!![]});interaction_log[_0xc0c5('0x29')](_0xc0c5('0x81'),_0x236653['user']['id'],_0x236653['user'][_0xc0c5('0x3a')],_0x236653[_0xc0c5('0x67')][_0xc0c5('0x6f')],_0x1b00b1[_0xc0c5('0x6d')]['id'],_0x236653[_0xc0c5('0x5d')]?JSON[_0xc0c5('0x24')](_0x236653['body']):_0xc0c5('0x82'));return respondWithRpcPromise('RejectMessage',_0xc0c5('0x83'),_0x1b00b1);}return null;})[_0xc0c5('0x21')](function(_0x44ab8e){var _0x425464=_0xc0c5('0x72')+_0x44ab8e[_0xc0c5('0x28')][_0xc0c5('0x84')];return db[_0xc0c5('0x73')][_0xc0c5('0x43')](_0x425464,{'type':db[_0xc0c5('0x85')][_0xc0c5('0x86')][_0xc0c5('0x74')],'raw':!![]})[_0xc0c5('0x21')](function(_0x53ffc4){return _0x53ffc4;});})[_0xc0c5('0x21')](function(_0x5470fc){if(_0x5470fc){_0x1b00b1[_0xc0c5('0x28')][_0xc0c5('0x75')]=_0x5470fc[0x0];if(!_0x236653['body']['UserId'])return;return db[_0xc0c5('0x76')][_0xc0c5('0x5b')]({'where':{'id':_0x236653[_0xc0c5('0x5d')][_0xc0c5('0x66')],'role':_0xc0c5('0x68')},'attributes':['id',_0xc0c5('0x3a'),_0xc0c5('0x77'),_0xc0c5('0x78'),_0xc0c5('0x87')],'raw':!![]});}return null;})['then'](function(_0x257664){if(!_0x257664)return null;_0x1b00b1[_0xc0c5('0x28')]['agent']=_0x257664;return _0x1b00b1;})['then'](function(_0xc9213f){if(_0xc9213f){_0xc9213f[_0xc0c5('0x28')][_0xc0c5('0x88')]=util[_0xc0c5('0x64')]('SIP/%s',_0x236653[_0xc0c5('0x67')]['name']);_0xc9213f['message'][_0xc0c5('0x7b')]=_0x1b00b1['channel'];_0xc9213f[_0xc0c5('0x28')][_0xc0c5('0x7c')]=_0x1b00b1['channel'];_0xc9213f[_0xc0c5('0x28')][_0xc0c5('0x7d')]=_0xc0c5('0x35');respondWithRpcPromise(_0xc0c5('0x7e'),_0xc0c5('0x7e'),{'event':_0xc0c5('0x89'),'message':_[_0xc0c5('0x4f')](_0x1b00b1[_0xc0c5('0x28')],JSON[_0xc0c5('0x8a')](_0x1b00b1[_0xc0c5('0x6d')][_0xc0c5('0x80')]))},client9002);return _0x1b00b1;}return null;})[_0xc0c5('0x21')](respondWithResult(_0x35823e,null))[_0xc0c5('0x2b')](handleError(_0x35823e,null));};
\ No newline at end of file
+var _0x1929=['mustache','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','end','send','index','map','ChatMessage','rawAttributes','fieldName','type','model','name','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','keys','find','create','body','params','describe','accept','chat','readAt','user','agent','UserId','get','ChatInteraction','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','interaction','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','parse','formData','chat-interactions','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','contact','email','event','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird'];(function(_0x15278e,_0x1d9952){var _0x6ae1d9=function(_0x10f895){while(--_0x10f895){_0x15278e['push'](_0x15278e['shift']());}};_0x6ae1d9(++_0x1d9952);}(_0x1929,0x77));var _0x9192=function(_0x2d460c,_0x4f08c0){_0x2d460c=_0x2d460c-0x0;var _0xf6fc4c=_0x1929[_0x2d460c];return _0xf6fc4c;};'use strict';var emlformat=require(_0x9192('0x0'));var rimraf=require(_0x9192('0x1'));var zipdir=require(_0x9192('0x2'));var jsonpatch=require(_0x9192('0x3'));var rp=require(_0x9192('0x4'));var moment=require('moment');var BPromise=require(_0x9192('0x5'));var Mustache=require(_0x9192('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x9192('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9192('0x8'));var _=require(_0x9192('0x9'));var squel=require('squel');var crypto=require(_0x9192('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9192('0xb'));var toCsv=require('to-csv');var querystring=require(_0x9192('0xc'));var Papa=require(_0x9192('0xd'));var Redis=require('ioredis');var authService=require(_0x9192('0xe'));var qs=require(_0x9192('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9192('0x10'));var logger=require(_0x9192('0x11'))(_0x9192('0x12'));var utils=require(_0x9192('0x13'));var config=require(_0x9192('0x14'));var licenseUtil=require(_0x9192('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9192('0x16')](config[_0x9192('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x9192('0x18'))(new Redis(config[_0x9192('0x17')]));require(_0x9192('0x19'))[_0x9192('0x1a')](socket);var jayson=require(_0x9192('0x1b'));var client=jayson[_0x9192('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0x9192('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a2837,_0x229370,_0x4c4d7c,_0x2af41b){return new BPromise(function(_0x424b9c,_0x1f8d50){var _0x112f0a=_0x2af41b||client;return _0x112f0a['request'](_0x4a2837,_0x4c4d7c)[_0x9192('0x1d')](function(_0x24f967){logger[_0x9192('0x1e')](_0x9192('0x1f'),_0x229370,_0x9192('0x20'));logger['debug'](_0x9192('0x21'),_0x229370,_0x9192('0x20'),JSON[_0x9192('0x22')](_0x24f967));if(_0x24f967[_0x9192('0x23')]){if(_0x24f967[_0x9192('0x23')]['code']===0x1f4){logger[_0x9192('0x23')](_0x9192('0x1f'),_0x229370,_0x24f967[_0x9192('0x23')]['message']);return _0x1f8d50(_0x24f967[_0x9192('0x23')]['message']);}logger[_0x9192('0x23')]('ChatMessage,\x20%s,\x20%s',_0x229370,_0x24f967['error'][_0x9192('0x24')]);return _0x424b9c(_0x24f967[_0x9192('0x23')][_0x9192('0x24')]);}else{logger[_0x9192('0x1e')]('ChatMessage,\x20%s,\x20%s',_0x229370,_0x9192('0x20'));_0x424b9c(_0x24f967['result'][_0x9192('0x24')]);}})[_0x9192('0x25')](function(_0x4cb167){logger[_0x9192('0x23')](_0x9192('0x1f'),_0x229370,_0x4cb167);_0x1f8d50(_0x4cb167);});});}function respondWithStatusCode(_0x7d38f4,_0x4d4bb1){_0x4d4bb1=_0x4d4bb1||0xcc;return function(_0x430ece){if(_0x430ece){return _0x7d38f4['sendStatus'](_0x4d4bb1);}return _0x7d38f4[_0x9192('0x26')](_0x4d4bb1)['end']();};}function respondWithResult(_0x4f2e6f,_0x5d383a){_0x5d383a=_0x5d383a||0xc8;return function(_0x4269f4){if(_0x4269f4){return _0x4f2e6f['status'](_0x5d383a)[_0x9192('0x27')](_0x4269f4);}};}function respondWithFilteredResult(_0x199914,_0x11bfa3){return function(_0x416c45){if(_0x416c45){var _0x311a2a=typeof _0x11bfa3[_0x9192('0x28')]==='undefined'&&typeof _0x11bfa3[_0x9192('0x29')]===_0x9192('0x2a');var _0x59678a=_0x416c45['count'];var _0x5b3a71=_0x311a2a?0x0:_0x11bfa3[_0x9192('0x28')];var _0x531106=_0x311a2a?_0x416c45[_0x9192('0x2b')]:_0x11bfa3[_0x9192('0x28')]+_0x11bfa3[_0x9192('0x29')];var _0x411af8;if(_0x531106>=_0x59678a){_0x531106=_0x59678a;_0x411af8=0xc8;}else{_0x411af8=0xce;}_0x199914[_0x9192('0x26')](_0x411af8);return _0x199914[_0x9192('0x2c')](_0x9192('0x2d'),_0x5b3a71+'-'+_0x531106+'/'+_0x59678a)[_0x9192('0x27')](_0x416c45);}return null;};}function patchUpdates(_0x3fb8e2){return function(_0x4b7415){try{jsonpatch[_0x9192('0x2e')](_0x4b7415,_0x3fb8e2,!![]);}catch(_0x5428ec){return BPromise[_0x9192('0x2f')](_0x5428ec);}return _0x4b7415['save']();};}function saveUpdates(_0x15281f,_0x1f2d6c){return function(_0x14b0d4){if(_0x14b0d4){return _0x14b0d4[_0x9192('0x30')](_0x15281f)['then'](function(_0x71d9a0){return _0x71d9a0;});}return null;};}function removeEntity(_0x1b5d27,_0x521d39){return function(_0x25db27){if(_0x25db27){return _0x25db27[_0x9192('0x31')]()[_0x9192('0x1d')](function(){_0x1b5d27[_0x9192('0x26')](0xcc)[_0x9192('0x32')]();});}};}function handleEntityNotFound(_0x5533ff,_0x3bf767){return function(_0x4740d0){if(!_0x4740d0){_0x5533ff['sendStatus'](0x194);}return _0x4740d0;};}function handleError(_0xdda5dc,_0x5ee600){_0x5ee600=_0x5ee600||0x1f4;return function(_0xc8d51){logger['error'](_0xc8d51['stack']);if(_0xc8d51['name']){delete _0xc8d51['name'];}_0xdda5dc['status'](_0x5ee600)[_0x9192('0x33')](_0xc8d51);};}exports[_0x9192('0x34')]=function(_0x1c3240,_0x3c7608){var _0x2e98b0={},_0x4c0e54={},_0x540add={'count':0x0,'rows':[]};var _0x3c969b=_[_0x9192('0x35')](db[_0x9192('0x36')][_0x9192('0x37')],function(_0xd8ec7a){return{'name':_0xd8ec7a[_0x9192('0x38')],'type':_0xd8ec7a[_0x9192('0x39')]['key']};});_0x4c0e54[_0x9192('0x3a')]=_[_0x9192('0x35')](_0x3c969b,_0x9192('0x3b'));_0x4c0e54[_0x9192('0x3c')]=_['keys'](_0x1c3240[_0x9192('0x3c')]);_0x4c0e54[_0x9192('0x3d')]=_[_0x9192('0x3e')](_0x4c0e54['model'],_0x4c0e54[_0x9192('0x3c')]);_0x2e98b0[_0x9192('0x3f')]=_[_0x9192('0x3e')](_0x4c0e54[_0x9192('0x3a')],qs[_0x9192('0x40')](_0x1c3240[_0x9192('0x3c')][_0x9192('0x40')]));_0x2e98b0[_0x9192('0x3f')]=_0x2e98b0[_0x9192('0x3f')][_0x9192('0x41')]?_0x2e98b0['attributes']:_0x4c0e54[_0x9192('0x3a')];if(!_0x1c3240[_0x9192('0x3c')]['hasOwnProperty'](_0x9192('0x42'))){_0x2e98b0[_0x9192('0x29')]=qs['limit'](_0x1c3240[_0x9192('0x3c')]['limit']);_0x2e98b0[_0x9192('0x28')]=qs[_0x9192('0x28')](_0x1c3240[_0x9192('0x3c')]['offset']);}_0x2e98b0[_0x9192('0x43')]=qs['sort'](_0x1c3240['query'][_0x9192('0x44')]);_0x2e98b0[_0x9192('0x45')]=qs[_0x9192('0x3d')](_['pick'](_0x1c3240[_0x9192('0x3c')],_0x4c0e54[_0x9192('0x3d')]),_0x3c969b);if(_0x1c3240['query'][_0x9192('0x46')]){_0x2e98b0['where']=_['merge'](_0x2e98b0[_0x9192('0x45')],{'$or':_[_0x9192('0x35')](_0x3c969b,function(_0x3cf3f1){if(_0x3cf3f1['type']!==_0x9192('0x47')){var _0x452f6b={};_0x452f6b[_0x3cf3f1[_0x9192('0x3b')]]={'$like':'%'+_0x1c3240[_0x9192('0x3c')][_0x9192('0x46')]+'%'};return _0x452f6b;}})});}_0x2e98b0=_[_0x9192('0x48')]({},_0x2e98b0,_0x1c3240[_0x9192('0x49')]);var _0x41657c={'where':_0x2e98b0[_0x9192('0x45')]};return db[_0x9192('0x36')]['count'](_0x41657c)[_0x9192('0x1d')](function(_0x1f1441){_0x540add[_0x9192('0x2b')]=_0x1f1441;if(_0x1c3240[_0x9192('0x3c')][_0x9192('0x4a')]){_0x2e98b0[_0x9192('0x4b')]=[{'all':!![]}];}return db[_0x9192('0x36')][_0x9192('0x4c')](_0x2e98b0);})[_0x9192('0x1d')](function(_0x3e881c){_0x540add[_0x9192('0x4d')]=_0x3e881c;return _0x540add;})[_0x9192('0x1d')](respondWithFilteredResult(_0x3c7608,_0x2e98b0))[_0x9192('0x25')](handleError(_0x3c7608,null));};exports[_0x9192('0x4e')]=function(_0x291521,_0x14c4c7){var _0x5569b0={'raw':!![],'where':{'id':_0x291521['params']['id']}},_0x58e50f={};_0x58e50f[_0x9192('0x3a')]=_['keys'](db[_0x9192('0x36')][_0x9192('0x37')]);_0x58e50f['query']=_[_0x9192('0x4f')](_0x291521[_0x9192('0x3c')]);_0x58e50f[_0x9192('0x3d')]=_[_0x9192('0x3e')](_0x58e50f[_0x9192('0x3a')],_0x58e50f[_0x9192('0x3c')]);_0x5569b0[_0x9192('0x3f')]=_[_0x9192('0x3e')](_0x58e50f[_0x9192('0x3a')],qs[_0x9192('0x40')](_0x291521[_0x9192('0x3c')][_0x9192('0x40')]));_0x5569b0['attributes']=_0x5569b0[_0x9192('0x3f')][_0x9192('0x41')]?_0x5569b0[_0x9192('0x3f')]:_0x58e50f[_0x9192('0x3a')];if(_0x291521['query'][_0x9192('0x4a')]){_0x5569b0[_0x9192('0x4b')]=[{'all':!![]}];}_0x5569b0=_[_0x9192('0x48')]({},_0x5569b0,_0x291521[_0x9192('0x49')]);return db[_0x9192('0x36')][_0x9192('0x50')](_0x5569b0)['then'](handleEntityNotFound(_0x14c4c7,null))[_0x9192('0x1d')](respondWithResult(_0x14c4c7,null))['catch'](handleError(_0x14c4c7,null));};exports['create']=function(_0xcd21c9,_0x45b925){return db['ChatMessage'][_0x9192('0x51')](_0xcd21c9['body'],{})[_0x9192('0x1d')](respondWithResult(_0x45b925,0xc9))['catch'](handleError(_0x45b925,null));};exports[_0x9192('0x30')]=function(_0x1ace0d,_0x23a75a){if(_0x1ace0d[_0x9192('0x52')]['id']){delete _0x1ace0d[_0x9192('0x52')]['id'];}return db[_0x9192('0x36')]['find']({'where':{'id':_0x1ace0d[_0x9192('0x53')]['id']}})[_0x9192('0x1d')](handleEntityNotFound(_0x23a75a,null))[_0x9192('0x1d')](saveUpdates(_0x1ace0d[_0x9192('0x52')],null))[_0x9192('0x1d')](respondWithResult(_0x23a75a,null))[_0x9192('0x25')](handleError(_0x23a75a,null));};exports[_0x9192('0x31')]=function(_0x5682f6,_0x1c82cc){return db['ChatMessage']['find']({'where':{'id':_0x5682f6[_0x9192('0x53')]['id']}})[_0x9192('0x1d')](handleEntityNotFound(_0x1c82cc,null))[_0x9192('0x1d')](removeEntity(_0x1c82cc,null))[_0x9192('0x25')](handleError(_0x1c82cc,null));};exports[_0x9192('0x54')]=function(_0x3892f6,_0x6001b8){return db[_0x9192('0x36')][_0x9192('0x54')]()[_0x9192('0x1d')](respondWithResult(_0x6001b8,null))['catch'](handleError(_0x6001b8,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x9192('0x55')]=function(_0x1dd231,_0x36ad23,_0x1db0a2){var _0x50305c={'agent':{},'channel':_0x9192('0x56')};if(_0x1dd231[_0x9192('0x52')]['id']){delete _0x1dd231[_0x9192('0x52')]['id'];}_0x1dd231['body']['read']=!![];_0x1dd231[_0x9192('0x52')][_0x9192('0x57')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1dd231[_0x9192('0x52')]['UserId']=_0x1dd231[_0x9192('0x52')]['UserId']||_0x1dd231[_0x9192('0x58')]['id'];_0x50305c[_0x9192('0x59')]['id']=_0x1dd231[_0x9192('0x52')][_0x9192('0x5a')];return db['ChatMessage']['find']({'where':{'id':_0x1dd231[_0x9192('0x53')]['id'],'UserId':null}})[_0x9192('0x1d')](handleEntityNotFound(_0x36ad23,null))[_0x9192('0x1d')](saveUpdates(_0x1dd231[_0x9192('0x52')],null))['then'](function(_0x4fcc2b){if(_0x4fcc2b){_0x50305c['message']=_0x4fcc2b[_0x9192('0x5b')]({'plain':!![]});return db[_0x9192('0x5c')]['find']({'where':{'id':_0x4fcc2b['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x36ad23,null))[_0x9192('0x1d')](function(_0x5e13fd){if(_0x5e13fd){return _0x5e13fd[_0x9192('0x30')]({'UserId':_0x1dd231['body'][_0x9192('0x5a')],'read1stAt':_['isNil'](_0x5e13fd[_0x9192('0x5d')])?moment()[_0x9192('0x5e')](_0x9192('0x5f')):undefined});}return null;})['then'](function(_0x16165c){if(_0x16165c){_0x50305c[_0x9192('0x60')]=_0x16165c[_0x9192('0x5b')]({'plain':!![]});interaction_log[_0x9192('0x1e')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1dd231[_0x9192('0x58')]['id'],_0x1dd231[_0x9192('0x58')][_0x9192('0x3b')],_0x1dd231[_0x9192('0x58')][_0x9192('0x61')],_0x50305c[_0x9192('0x60')]['id'],_0x1dd231['body']?JSON['stringify'](_0x1dd231[_0x9192('0x52')]):_0x9192('0x62'));return respondWithRpcPromise(_0x9192('0x63'),'acceptMessage',_0x50305c);}return null;})[_0x9192('0x1d')](function(_0x415336){var _0xa2a646=_0x9192('0x64')+_0x415336[_0x9192('0x24')][_0x9192('0x65')];return db[_0x9192('0x66')][_0x9192('0x3c')](_0xa2a646,{'type':db[_0x9192('0x67')][_0x9192('0x68')][_0x9192('0x69')],'raw':!![]})[_0x9192('0x1d')](function(_0x3e4732){return _0x3e4732;});})[_0x9192('0x1d')](function(_0x24a509){if(_0x24a509){_0x50305c[_0x9192('0x24')]['contact']=_0x24a509[0x0];if(!_0x1dd231[_0x9192('0x52')]['UserId'])return;return db[_0x9192('0x6a')][_0x9192('0x50')]({'where':{'id':_0x1dd231[_0x9192('0x52')][_0x9192('0x5a')],'role':'agent'},'attributes':['id',_0x9192('0x3b'),_0x9192('0x6b'),'email',_0x9192('0x6c')],'raw':!![]});}return null;})[_0x9192('0x1d')](function(_0x3c98d3){if(!_0x3c98d3)return null;_0x50305c['message'][_0x9192('0x59')]=_0x3c98d3;return _0x50305c;})[_0x9192('0x1d')](function(_0x1840c9){if(_0x1840c9){if(_0x1dd231[_0x9192('0x52')][_0x9192('0x6d')]){_0x50305c[_0x9192('0x24')][_0x9192('0x6e')]=util[_0x9192('0x5e')](_0x9192('0x6f'),_0x1dd231[_0x9192('0x58')][_0x9192('0x3b')]);_0x50305c[_0x9192('0x24')]['channel']=_0x50305c[_0x9192('0x70')];_0x50305c[_0x9192('0x24')][_0x9192('0x71')]=_0x50305c['channel'];_0x50305c['message']['event']=_0x9192('0x55');return respondWithRpcPromise(_0x9192('0x72'),'EventManager',{'event':_0x9192('0x73'),'message':_[_0x9192('0x48')](_0x50305c[_0x9192('0x24')],JSON[_0x9192('0x74')](_0x50305c['interaction'][_0x9192('0x75')]))},client9002)[_0x9192('0x1d')](function(){return _0x50305c;});}return _0x50305c;}return null;})[_0x9192('0x1d')](respondWithResult(_0x36ad23,null))[_0x9192('0x25')](handleError(_0x36ad23,null));};var interaction_log=require(_0x9192('0x11'))(_0x9192('0x76'));exports[_0x9192('0x2f')]=function(_0x12aa69,_0x4ad882,_0x3039eb){var _0x13c5e7={'agent':{},'channel':_0x9192('0x56')};if(_0x12aa69[_0x9192('0x52')]['id']){delete _0x12aa69[_0x9192('0x52')]['id'];}_0x12aa69['body'][_0x9192('0x5a')]=_0x12aa69[_0x9192('0x52')][_0x9192('0x5a')]||_0x12aa69[_0x9192('0x58')]['id'];_0x13c5e7[_0x9192('0x59')]['id']=_0x12aa69[_0x9192('0x52')][_0x9192('0x5a')];return db[_0x9192('0x36')][_0x9192('0x50')]({'where':{'id':_0x12aa69['params']['id'],'UserId':null}})[_0x9192('0x1d')](handleEntityNotFound(_0x4ad882,null))[_0x9192('0x1d')](function(_0x39545e){if(_0x39545e){_0x13c5e7[_0x9192('0x24')]=_0x39545e['get']({'plain':!![]});return db[_0x9192('0x5c')][_0x9192('0x50')]({'where':{'id':_0x39545e[_0x9192('0x77')]}});}return null;})[_0x9192('0x1d')](handleEntityNotFound(_0x4ad882,null))['then'](function(_0x2e3db0){if(_0x2e3db0){_0x13c5e7['interaction']=_0x2e3db0[_0x9192('0x5b')]({'plain':!![]});interaction_log['info'](_0x9192('0x78'),_0x12aa69['user']['id'],_0x12aa69['user'][_0x9192('0x3b')],_0x12aa69[_0x9192('0x58')]['role'],_0x13c5e7[_0x9192('0x60')]['id'],_0x12aa69['body']?JSON['stringify'](_0x12aa69[_0x9192('0x52')]):_0x9192('0x62'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x13c5e7);}return null;})['then'](function(_0x366bce){var _0x125145=_0x9192('0x64')+_0x366bce[_0x9192('0x24')][_0x9192('0x65')];return db['sequelize'][_0x9192('0x3c')](_0x125145,{'type':db[_0x9192('0x67')][_0x9192('0x68')]['SELECT'],'raw':!![]})[_0x9192('0x1d')](function(_0x2cb1a3){return _0x2cb1a3;});})[_0x9192('0x1d')](function(_0x51ae03){if(_0x51ae03){_0x13c5e7[_0x9192('0x24')][_0x9192('0x79')]=_0x51ae03[0x0];if(!_0x12aa69[_0x9192('0x52')]['UserId'])return;return db[_0x9192('0x6a')][_0x9192('0x50')]({'where':{'id':_0x12aa69['body'][_0x9192('0x5a')],'role':_0x9192('0x59')},'attributes':['id',_0x9192('0x3b'),'fullname',_0x9192('0x7a'),'internal'],'raw':!![]});}return null;})[_0x9192('0x1d')](function(_0x9d897f){if(!_0x9d897f)return null;_0x13c5e7[_0x9192('0x24')]['agent']=_0x9d897f;return _0x13c5e7;})[_0x9192('0x1d')](function(_0x3688e5){if(_0x3688e5){_0x3688e5[_0x9192('0x24')][_0x9192('0x6e')]=util[_0x9192('0x5e')](_0x9192('0x6f'),_0x12aa69['user'][_0x9192('0x3b')]);_0x3688e5[_0x9192('0x24')]['channel']=_0x13c5e7[_0x9192('0x70')];_0x3688e5['message'][_0x9192('0x71')]=_0x13c5e7[_0x9192('0x70')];_0x3688e5[_0x9192('0x24')][_0x9192('0x7b')]=_0x9192('0x2f');respondWithRpcPromise(_0x9192('0x72'),_0x9192('0x72'),{'event':_0x9192('0x7c'),'message':_[_0x9192('0x48')](_0x13c5e7['message'],JSON[_0x9192('0x74')](_0x13c5e7[_0x9192('0x60')][_0x9192('0x75')]))},client9002);return _0x13c5e7;}return null;})[_0x9192('0x1d')](respondWithResult(_0x4ad882,null))['catch'](handleError(_0x4ad882,null));};
\ No newline at end of file
index 6c769c2..0ba4c4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x230c=['../../mysqldb','ChatMessage','save','emit','hasOwnProperty','hook','exports','events'];(function(_0x2e1924,_0x3ab6b8){var _0x2b5053=function(_0x2c23d5){while(--_0x2c23d5){_0x2e1924['push'](_0x2e1924['shift']());}};_0x2b5053(++_0x3ab6b8);}(_0x230c,0x1a7));var _0xc230=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x230c[_0x5d6456];return _0x4d66c1;};'use strict';var EventEmitter=require(_0xc230('0x0'));var ChatMessage=require(_0xc230('0x1'))['db'][_0xc230('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc230('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xb600f3){return function(_0x4df0af,_0x1d0fa4,_0x1affc6){ChatMessageEvents[_0xc230('0x4')](_0xb600f3+':'+_0x4df0af['id'],_0x4df0af);ChatMessageEvents['emit'](_0xb600f3,_0x4df0af);_0x1affc6(null);};}for(var e in events){if(events[_0xc230('0x5')](e)){var event=events[e];ChatMessage[_0xc230('0x6')](e,emitEvent(event));}}module[_0xc230('0x7')]=ChatMessageEvents;
\ No newline at end of file
+var _0xce79=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatMessage'];(function(_0x3a8d13,_0x46154d){var _0x575544=function(_0x29711e){while(--_0x29711e){_0x3a8d13['push'](_0x3a8d13['shift']());}};_0x575544(++_0x46154d);}(_0xce79,0xa8));var _0x9ce7=function(_0x3c6dce,_0x5424dd){_0x3c6dce=_0x3c6dce-0x0;var _0x1450e9=_0xce79[_0x3c6dce];return _0x1450e9;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0x9ce7('0x0'))['db'][_0x9ce7('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x9ce7('0x2')](0x0);var events={'afterCreate':_0x9ce7('0x3'),'afterUpdate':_0x9ce7('0x4'),'afterDestroy':_0x9ce7('0x5')};function emitEvent(_0x22446a){return function(_0x2967b3,_0x16fde9,_0x1b3638){ChatMessageEvents[_0x9ce7('0x6')](_0x22446a+':'+_0x2967b3['id'],_0x2967b3);ChatMessageEvents['emit'](_0x22446a,_0x2967b3);_0x1b3638(null);};}for(var e in events){if(events[_0x9ce7('0x7')](e)){var event=events[e];ChatMessage[_0x9ce7('0x8')](e,emitEvent(event));}}module[_0x9ce7('0x9')]=ChatMessageEvents;
\ No newline at end of file
index 0061d7b..e5fe38a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x661c=['define','chat_messages','body','models','direction','toLowerCase','out','secret','UserId','ChatInteraction','findOne','ChatInteractionId','update','error','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports'];(function(_0x519375,_0x25788e){var _0x386ac0=function(_0x4c6187){while(--_0x4c6187){_0x519375['push'](_0x519375['shift']());}};_0x386ac0(++_0x25788e);}(_0x661c,0x122));var _0xc661=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x661c[_0x599f41];return _0x2e4d58;};'use strict';var _=require(_0xc661('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc661('0x1'));var moment=require('moment');var BPromise=require(_0xc661('0x2'));var rp=require(_0xc661('0x3'));var fs=require('fs');var path=require(_0xc661('0x4'));var rimraf=require(_0xc661('0x5'));var config=require(_0xc661('0x6'));var attributes=require(_0xc661('0x7'));module[_0xc661('0x8')]=function(_0x502716,_0x4de875){return _0x502716[_0xc661('0x9')]('ChatMessage',attributes,{'tableName':_0xc661('0xa'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0xc661('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1df15a,_0x3306fe,_0x126428){var _0x32cbeb=_0x502716[_0xc661('0xc')];var _0xee23b2=_0x1df15a['get']({'plain':!![]});if(_0xee23b2[_0xc661('0xd')]['toLowerCase']()==='in'||_0xee23b2[_0xc661('0xd')][_0xc661('0xe')]()===_0xc661('0xf')&&!_0xee23b2[_0xc661('0x10')]&&!_['isNil'](_0xee23b2[_0xc661('0x11')])){_0x32cbeb[_0xc661('0x12')][_0xc661('0x13')]({'where':{'id':_0xee23b2[_0xc661('0x14')]}})['then'](function(_0x803f14){if(_0x803f14){_0x803f14[_0xc661('0x15')]({'lastMsgAt':_0xee23b2['createdAt'],'lastMsgDirection':_0xee23b2[_0xc661('0xd')]['toLowerCase']()});}})['catch'](function(_0x2478c8){console[_0xc661('0x16')](_0x2478c8);});}_0x126428();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5a05=['get','toLowerCase','direction','out','secret','isNil','UserId','ChatInteraction','ChatInteractionId','then','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','exports','ChatMessage','chat_messages','body','FULLTEXT'];(function(_0x7791d5,_0xdab65f){var _0x5ce288=function(_0x2b818d){while(--_0x2b818d){_0x7791d5['push'](_0x7791d5['shift']());}};_0x5ce288(++_0xdab65f);}(_0x5a05,0x17b));var _0x55a0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5a05[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x55a0('0x0'));var logger=require(_0x55a0('0x1'))(_0x55a0('0x2'));var moment=require('moment');var BPromise=require(_0x55a0('0x3'));var rp=require(_0x55a0('0x4'));var fs=require('fs');var path=require(_0x55a0('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatMessage.attributes');module[_0x55a0('0x6')]=function(_0x2c9910,_0x31e6e2){return _0x2c9910['define'](_0x55a0('0x7'),attributes,{'tableName':_0x55a0('0x8'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x55a0('0x9')],'type':_0x55a0('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4d27ca,_0x5a05d4,_0x3bddd6){var _0x1ccda5=_0x2c9910['models'];var _0x14abd2=_0x4d27ca[_0x55a0('0xb')]({'plain':!![]});if(_0x14abd2['direction'][_0x55a0('0xc')]()==='in'||_0x14abd2[_0x55a0('0xd')][_0x55a0('0xc')]()===_0x55a0('0xe')&&!_0x14abd2[_0x55a0('0xf')]&&!_[_0x55a0('0x10')](_0x14abd2[_0x55a0('0x11')])){_0x1ccda5[_0x55a0('0x12')]['findOne']({'where':{'id':_0x14abd2[_0x55a0('0x13')]}})[_0x55a0('0x14')](function(_0x9346cc){if(_0x9346cc){_0x9346cc['update']({'lastMsgAt':_0x14abd2[_0x55a0('0x15')],'lastMsgDirection':_0x14abd2['direction'][_0x55a0('0xc')]()});}})[_0x55a0('0x16')](function(_0x5d273d){console[_0x55a0('0x17')](_0x5d273d);});}_0x3bddd6();}},'charset':_0x55a0('0x18'),'collate':_0x55a0('0x19')});};
\ No newline at end of file
index 5c0703b..c44352e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x029a=['request\x20sent','create','body','options','raw','CreateChatMessage','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','redis','defaults','localhost','register','request','ChatMessage,\x20%s,\x20%s','debug','stringify','error','message','info'];(function(_0xe354bd,_0x5e4100){var _0x37e494=function(_0x38829e){while(--_0x38829e){_0xe354bd['push'](_0xe354bd['shift']());}};_0x37e494(++_0x5e4100);}(_0x029a,0xb5));var _0xa029=function(_0x312587,_0xfb46b9){_0x312587=_0x312587-0x0;var _0x5cb354=_0x029a[_0x312587];return _0x5cb354;};'use strict';var _=require('lodash');var util=require(_0xa029('0x0'));var moment=require(_0xa029('0x1'));var BPromise=require('bluebird');var rs=require(_0xa029('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa029('0x3'))['db'];var utils=require(_0xa029('0x4'));var logger=require('../../config/logger')(_0xa029('0x5'));var config=require('../../config/environment');var jayson=require(_0xa029('0x6'));var client=jayson['client'][_0xa029('0x7')]({'port':0x232a});config[_0xa029('0x8')]=_[_0xa029('0x9')](config[_0xa029('0x8')],{'host':_0xa029('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa029('0x8')]));require('./chatMessage.socket')[_0xa029('0xb')](socket);function respondWithRpcPromise(_0x1b389e,_0x2ec357,_0x49edf9){return new BPromise(function(_0x128c70,_0x2d95de){return client[_0xa029('0xc')](_0x1b389e,_0x49edf9)['then'](function(_0x2778c5){logger['info'](_0xa029('0xd'),_0x2ec357,'request\x20sent');logger[_0xa029('0xe')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x2ec357,'request\x20sent',JSON[_0xa029('0xf')](_0x2778c5));if(_0x2778c5[_0xa029('0x10')]){if(_0x2778c5[_0xa029('0x10')]['code']===0x1f4){logger['error'](_0xa029('0xd'),_0x2ec357,_0x2778c5[_0xa029('0x10')][_0xa029('0x11')]);return _0x2d95de(_0x2778c5['error']['message']);}logger[_0xa029('0x10')](_0xa029('0xd'),_0x2ec357,_0x2778c5[_0xa029('0x10')][_0xa029('0x11')]);return _0x128c70(_0x2778c5['error'][_0xa029('0x11')]);}else{logger[_0xa029('0x12')](_0xa029('0xd'),_0x2ec357,_0xa029('0x13'));_0x128c70(_0x2778c5['result'][_0xa029('0x11')]);}})['catch'](function(_0x196c0a){logger[_0xa029('0x10')](_0xa029('0xd'),_0x2ec357,_0x196c0a);_0x2d95de(_0x196c0a);});});}exports['CreateChatMessage']=function(_0x134b91){var _0x2e23e1=this;return new Promise(function(_0x370212,_0xa082c){return db['ChatMessage'][_0xa029('0x14')](_0x134b91[_0xa029('0x15')],{'raw':_0x134b91['options']?_0x134b91[_0xa029('0x16')][_0xa029('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x49eee6){logger['info'](_0xa029('0x18'),_0x134b91);logger[_0xa029('0xe')](_0xa029('0x18'),_0x134b91,JSON[_0xa029('0xf')](_0x49eee6));_0x370212(_0x49eee6);})['catch'](function(_0x2bc2c8){logger[_0xa029('0x10')]('CreateChatMessage',_0x2bc2c8[_0xa029('0x11')],_0x134b91);_0xa082c(_0x2e23e1[_0xa029('0x10')](0x1f4,_0x2bc2c8[_0xa029('0x11')]));});});};
\ No newline at end of file
+var _0xde4e=['code','ChatMessage,\x20%s,\x20%s','message','catch','CreateChatMessage','create','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','error'];(function(_0x26cd65,_0x3e6b6f){var _0x51c930=function(_0x48a242){while(--_0x48a242){_0x26cd65['push'](_0x26cd65['shift']());}};_0x51c930(++_0x3e6b6f);}(_0xde4e,0x18e));var _0xede4=function(_0x38edb1,_0x445088){_0x38edb1=_0x38edb1-0x0;var _0x4ab80b=_0xde4e[_0x38edb1];return _0x4ab80b;};'use strict';var _=require(_0xede4('0x0'));var util=require(_0xede4('0x1'));var moment=require('moment');var BPromise=require(_0xede4('0x2'));var rs=require(_0xede4('0x3'));var fs=require('fs');var Redis=require(_0xede4('0x4'));var db=require(_0xede4('0x5'))['db'];var utils=require(_0xede4('0x6'));var logger=require(_0xede4('0x7'))(_0xede4('0x8'));var config=require(_0xede4('0x9'));var jayson=require(_0xede4('0xa'));var client=jayson['client'][_0xede4('0xb')]({'port':0x232a});config[_0xede4('0xc')]=_[_0xede4('0xd')](config[_0xede4('0xc')],{'host':_0xede4('0xe'),'port':0x18eb});var socket=require(_0xede4('0xf'))(new Redis(config['redis']));require('./chatMessage.socket')[_0xede4('0x10')](socket);function respondWithRpcPromise(_0xa9110b,_0x481dc0,_0x1613f1){return new BPromise(function(_0x31998f,_0x2c1eed){return client[_0xede4('0x11')](_0xa9110b,_0x1613f1)[_0xede4('0x12')](function(_0x7c6ff5){logger[_0xede4('0x13')]('ChatMessage,\x20%s,\x20%s',_0x481dc0,_0xede4('0x14'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x481dc0,_0xede4('0x14'),JSON['stringify'](_0x7c6ff5));if(_0x7c6ff5[_0xede4('0x15')]){if(_0x7c6ff5[_0xede4('0x15')][_0xede4('0x16')]===0x1f4){logger['error'](_0xede4('0x17'),_0x481dc0,_0x7c6ff5[_0xede4('0x15')][_0xede4('0x18')]);return _0x2c1eed(_0x7c6ff5[_0xede4('0x15')][_0xede4('0x18')]);}logger[_0xede4('0x15')](_0xede4('0x17'),_0x481dc0,_0x7c6ff5[_0xede4('0x15')]['message']);return _0x31998f(_0x7c6ff5['error'][_0xede4('0x18')]);}else{logger[_0xede4('0x13')]('ChatMessage,\x20%s,\x20%s',_0x481dc0,_0xede4('0x14'));_0x31998f(_0x7c6ff5['result'][_0xede4('0x18')]);}})[_0xede4('0x19')](function(_0x36bcfd){logger[_0xede4('0x15')](_0xede4('0x17'),_0x481dc0,_0x36bcfd);_0x2c1eed(_0x36bcfd);});});}exports[_0xede4('0x1a')]=function(_0x5a80d2){var _0x55c49d=this;return new Promise(function(_0x3c3650,_0x34580b){return db['ChatMessage'][_0xede4('0x1b')](_0x5a80d2['body'],{'raw':_0x5a80d2[_0xede4('0x1c')]?_0x5a80d2['options'][_0xede4('0x1d')]===undefined?!![]:![]:!![]})[_0xede4('0x12')](function(_0xa7859c){logger['info'](_0xede4('0x1a'),_0x5a80d2);logger['debug'](_0xede4('0x1a'),_0x5a80d2,JSON['stringify'](_0xa7859c));_0x3c3650(_0xa7859c);})[_0xede4('0x19')](function(_0x471884){logger[_0xede4('0x15')]('CreateChatMessage',_0x471884[_0xede4('0x18')],_0x5a80d2);_0x34580b(_0x55c49d[_0xede4('0x15')](0x1f4,_0x471884['message']));});});};
\ No newline at end of file
index 1a2c985..a60527d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3645=['emit','removeListener','register','length','save','remove','update'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0x3645,0x154));var _0x5364=function(_0x2a56ad,_0x2b94bf){_0x2a56ad=_0x2a56ad-0x0;var _0x425175=_0x3645[_0x2a56ad];return _0x425175;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x5364('0x0'),_0x5364('0x1'),_0x5364('0x2')];function createListener(_0x28eafb,_0x2d71d7){return function(_0x2f629b){_0x2d71d7[_0x5364('0x3')](_0x28eafb,_0x2f629b);};}function removeListener(_0x5a63bf,_0x334a16){return function(){ChatMessageEvents[_0x5364('0x4')](_0x5a63bf,_0x334a16);};}exports[_0x5364('0x5')]=function(_0x1f9c6b){for(var _0x417c44=0x0,_0x7933a5=events[_0x5364('0x6')];_0x417c44<_0x7933a5;_0x417c44++){var _0x43fb3f=events[_0x417c44];var _0x3c1b21=createListener('chatMessage:'+_0x43fb3f,_0x1f9c6b);ChatMessageEvents['on'](_0x43fb3f,_0x3c1b21);}};
\ No newline at end of file
+var _0x425d=['./chatMessage.events','remove','update','emit','removeListener','register','length','chatMessage:'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x425d,0x1e0));var _0xd425=function(_0xba0502,_0x2fb75b){_0xba0502=_0xba0502-0x0;var _0x5ed16d=_0x425d[_0xba0502];return _0x5ed16d;};'use strict';var ChatMessageEvents=require(_0xd425('0x0'));var events=['save',_0xd425('0x1'),_0xd425('0x2')];function createListener(_0x314a2b,_0x97e370){return function(_0x183caa){_0x97e370[_0xd425('0x3')](_0x314a2b,_0x183caa);};}function removeListener(_0x47043f,_0x596be7){return function(){ChatMessageEvents[_0xd425('0x4')](_0x47043f,_0x596be7);};}exports[_0xd425('0x5')]=function(_0xc4e080){for(var _0x36866e=0x0,_0x1d97d9=events[_0xd425('0x6')];_0x36866e<_0x1d97d9;_0x36866e++){var _0x50b061=events[_0x36866e];var _0xb6ba8e=createListener(_0xd425('0x7')+_0x50b061,_0xc4e080);ChatMessageEvents['on'](_0x50b061,_0xb6ba8e);}};
\ No newline at end of file
index 19b771f..8afd3bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x171d=['Router','fs-extra','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','show','chat','create','put','/:id','/:id/accept','/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x565fed,_0xb85768){var _0x3e018f=function(_0x104d8e){while(--_0x104d8e){_0x565fed['push'](_0x565fed['shift']());}};_0x3e018f(++_0xb85768);}(_0x171d,0x163));var _0xd171=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x171d[_0x1ab180];return _0xfb2c2d;};'use strict';var multer=require(_0xd171('0x0'));var util=require(_0xd171('0x1'));var path=require(_0xd171('0x2'));var timeout=require(_0xd171('0x3'));var express=require(_0xd171('0x4'));var router=express[_0xd171('0x5')]();var fs_extra=require(_0xd171('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd171('0x7'));var controller=require(_0xd171('0x8'));router[_0xd171('0x9')]('/',auth[_0xd171('0xa')](),controller[_0xd171('0xb')]);router[_0xd171('0x9')](_0xd171('0xc'),auth[_0xd171('0xa')](),controller[_0xd171('0xd')]);router[_0xd171('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xd171('0xe')]);router['post']('/',auth[_0xd171('0xa')](),interaction['tracked'](_0xd171('0xf'),'chatmessage:create'),controller[_0xd171('0x10')]);router[_0xd171('0x11')](_0xd171('0x12'),controller['update']);router[_0xd171('0x11')](_0xd171('0x13'),auth['isAuthenticated'](),controller['accept']);router['put'](_0xd171('0x14'),auth[_0xd171('0xa')](),controller['reject']);router[_0xd171('0x15')](_0xd171('0x12'),auth['isAuthenticated'](),controller[_0xd171('0x16')]);module[_0xd171('0x17')]=router;
\ No newline at end of file
+var _0x63b7=['/:id/reject','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','describe','/:id','show','tracked','chat','create','put','update','/:id/accept','accept'];(function(_0x58528c,_0x22e775){var _0xdb1cf6=function(_0x47387d){while(--_0x47387d){_0x58528c['push'](_0x58528c['shift']());}};_0xdb1cf6(++_0x22e775);}(_0x63b7,0xcb));var _0x763b=function(_0x40ddc0,_0x41c082){_0x40ddc0=_0x40ddc0-0x0;var _0x1aebf1=_0x63b7[_0x40ddc0];return _0x1aebf1;};'use strict';var multer=require('multer');var util=require(_0x763b('0x0'));var path=require(_0x763b('0x1'));var timeout=require(_0x763b('0x2'));var express=require(_0x763b('0x3'));var router=express[_0x763b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x763b('0x5'));var interaction=require(_0x763b('0x6'));var config=require(_0x763b('0x7'));var controller=require(_0x763b('0x8'));router[_0x763b('0x9')]('/',auth[_0x763b('0xa')](),controller[_0x763b('0xb')]);router[_0x763b('0x9')]('/describe',auth[_0x763b('0xa')](),controller[_0x763b('0xc')]);router['get'](_0x763b('0xd'),auth['isAuthenticated'](),controller[_0x763b('0xe')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x763b('0xf')](_0x763b('0x10'),'chatmessage:create'),controller[_0x763b('0x11')]);router[_0x763b('0x12')](_0x763b('0xd'),controller[_0x763b('0x13')]);router[_0x763b('0x12')](_0x763b('0x14'),auth[_0x763b('0xa')](),controller[_0x763b('0x15')]);router[_0x763b('0x12')](_0x763b('0x16'),auth[_0x763b('0xa')](),controller['reject']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x763b('0x17')]);module[_0x763b('0x18')]=router;
\ No newline at end of file
index 207ebef..bcf2e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8a1=['sequelize','medium'];(function(_0x320770,_0x254fda){var _0x2ed28e=function(_0x33a5aa){while(--_0x33a5aa){_0x320770['push'](_0x320770['shift']());}};_0x2ed28e(++_0x254fda);}(_0xe8a1,0x1a6));var _0x1e8a=function(_0xe02f37,_0x5ea846){_0xe02f37=_0xe02f37-0x0;var _0xdfbcea=_0xe8a1[_0xe02f37];return _0xdfbcea;};'use strict';var Sequelize=require(_0x1e8a('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x1e8a('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0x0af5=['medium','sequelize','exports','TEXT'];(function(_0x40ec15,_0x1b31dd){var _0x55fb5d=function(_0x21aa8b){while(--_0x21aa8b){_0x40ec15['push'](_0x40ec15['shift']());}};_0x55fb5d(++_0x1b31dd);}(_0x0af5,0x91));var _0x50af=function(_0xf10b88,_0x3dcb31){_0xf10b88=_0xf10b88-0x0;var _0x4d9dc8=_0x0af5[_0xf10b88];return _0x4d9dc8;};'use strict';var Sequelize=require(_0x50af('0x0'));module[_0x50af('0x1')]={'body':{'type':Sequelize[_0x50af('0x2')](_0x50af('0x3')),'allowNull':![]}};
\ No newline at end of file
index 8434408..d778def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x3f52d7,_0x48d512){var _0x635c17=function(_0x4e7bda){while(--_0x4e7bda){_0x3f52d7['push'](_0x3f52d7['shift']());}};_0x635c17(++_0x48d512);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0x7a54,0x106));var _0x47a5=function(_0x1befa9,_0x5de311){_0x1befa9=_0x1befa9-0x0;var _0xf74286=_0x7a54[_0x1befa9];return _0xf74286;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 7b637a6..7b17d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9722=['rimraf','./chatOfflineMessage.attributes','define','ChatOfflineMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x2ecc65,_0xd75c48){var _0x103cc3=function(_0x3f856b){while(--_0x3f856b){_0x2ecc65['push'](_0x2ecc65['shift']());}};_0x103cc3(++_0xd75c48);}(_0x9722,0x10a));var _0x2972=function(_0x535567,_0x1ce217){_0x535567=_0x535567-0x0;var _0x148baa=_0x9722[_0x535567];return _0x148baa;};'use strict';var _=require(_0x2972('0x0'));var util=require(_0x2972('0x1'));var logger=require('../../config/logger')(_0x2972('0x2'));var moment=require(_0x2972('0x3'));var BPromise=require(_0x2972('0x4'));var rp=require(_0x2972('0x5'));var fs=require('fs');var path=require(_0x2972('0x6'));var rimraf=require(_0x2972('0x7'));var config=require('../../config/environment');var attributes=require(_0x2972('0x8'));module['exports']=function(_0x370ca0,_0x3b3e15){return _0x370ca0[_0x2972('0x9')](_0x2972('0xa'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2972('0xb'),'collate':_0x2972('0xc')});};
\ No newline at end of file
+var _0x3824=['define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x423d5a,_0x6fd81e){var _0x3bd394=function(_0x5a8ac9){while(--_0x5a8ac9){_0x423d5a['push'](_0x423d5a['shift']());}};_0x3bd394(++_0x6fd81e);}(_0x3824,0x7a));var _0x4382=function(_0x15fc3c,_0x35665b){_0x15fc3c=_0x15fc3c-0x0;var _0x94c5c8=_0x3824[_0x15fc3c];return _0x94c5c8;};'use strict';var _=require(_0x4382('0x0'));var util=require(_0x4382('0x1'));var logger=require(_0x4382('0x2'))(_0x4382('0x3'));var moment=require(_0x4382('0x4'));var BPromise=require('bluebird');var rp=require(_0x4382('0x5'));var fs=require('fs');var path=require(_0x4382('0x6'));var rimraf=require(_0x4382('0x7'));var config=require('../../config/environment');var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0x1e736a,_0x283649){return _0x1e736a[_0x4382('0x8')](_0x4382('0x9'),attributes,{'tableName':_0x4382('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4382('0xb'),'collate':_0x4382('0xc')});};
\ No newline at end of file
index 08e87ac..2ac4618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e3d=['jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','ChatOfflineMessage,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0xc2562b,_0x4df6cd){var _0x16d293=function(_0x56fd97){while(--_0x56fd97){_0xc2562b['push'](_0xc2562b['shift']());}};_0x16d293(++_0x4df6cd);}(_0x2e3d,0x8c));var _0xd2e3=function(_0x2e525b,_0x39ccbd){_0x2e525b=_0x2e525b-0x0;var _0x515ead=_0x2e3d[_0x2e525b];return _0x515ead;};'use strict';var _=require(_0xd2e3('0x0'));var util=require(_0xd2e3('0x1'));var moment=require(_0xd2e3('0x2'));var BPromise=require(_0xd2e3('0x3'));var rs=require(_0xd2e3('0x4'));var fs=require('fs');var Redis=require(_0xd2e3('0x5'));var db=require(_0xd2e3('0x6'))['db'];var utils=require(_0xd2e3('0x7'));var logger=require(_0xd2e3('0x8'))('rpc');var config=require(_0xd2e3('0x9'));var jayson=require(_0xd2e3('0xa'));var client=jayson[_0xd2e3('0xb')][_0xd2e3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4a3a97,_0xfcf840,_0x5c7736){return new BPromise(function(_0x3152a2,_0x5c10cc){return client[_0xd2e3('0xd')](_0x4a3a97,_0x5c7736)[_0xd2e3('0xe')](function(_0x2b9af0){logger[_0xd2e3('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0xfcf840,_0xd2e3('0x10'));logger[_0xd2e3('0x11')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0xfcf840,_0xd2e3('0x10'),JSON[_0xd2e3('0x12')](_0x2b9af0));if(_0x2b9af0[_0xd2e3('0x13')]){if(_0x2b9af0['error'][_0xd2e3('0x14')]===0x1f4){logger[_0xd2e3('0x13')](_0xd2e3('0x15'),_0xfcf840,_0x2b9af0[_0xd2e3('0x13')][_0xd2e3('0x16')]);return _0x5c10cc(_0x2b9af0[_0xd2e3('0x13')][_0xd2e3('0x16')]);}logger[_0xd2e3('0x13')](_0xd2e3('0x15'),_0xfcf840,_0x2b9af0[_0xd2e3('0x13')][_0xd2e3('0x16')]);return _0x3152a2(_0x2b9af0[_0xd2e3('0x13')]['message']);}else{logger['info'](_0xd2e3('0x15'),_0xfcf840,_0xd2e3('0x10'));_0x3152a2(_0x2b9af0[_0xd2e3('0x17')][_0xd2e3('0x16')]);}})[_0xd2e3('0x18')](function(_0x42e147){logger[_0xd2e3('0x13')](_0xd2e3('0x15'),_0xfcf840,_0x42e147);_0x5c10cc(_0x42e147);});});}
\ No newline at end of file
+var _0xff76=['error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xff76,0x125));var _0x6ff7=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xff76[_0x53cf8e];return _0x459197;};'use strict';var _=require('lodash');var util=require(_0x6ff7('0x0'));var moment=require(_0x6ff7('0x1'));var BPromise=require(_0x6ff7('0x2'));var rs=require(_0x6ff7('0x3'));var fs=require('fs');var Redis=require(_0x6ff7('0x4'));var db=require(_0x6ff7('0x5'))['db'];var utils=require(_0x6ff7('0x6'));var logger=require(_0x6ff7('0x7'))(_0x6ff7('0x8'));var config=require(_0x6ff7('0x9'));var jayson=require(_0x6ff7('0xa'));var client=jayson[_0x6ff7('0xb')][_0x6ff7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x31477f,_0x6b508a,_0xd0780){return new BPromise(function(_0x58fc92,_0x16790a){return client[_0x6ff7('0xd')](_0x31477f,_0xd0780)[_0x6ff7('0xe')](function(_0x49d2a9){logger['info'](_0x6ff7('0xf'),_0x6b508a,_0x6ff7('0x10'));logger[_0x6ff7('0x11')](_0x6ff7('0x12'),_0x6b508a,_0x6ff7('0x10'),JSON['stringify'](_0x49d2a9));if(_0x49d2a9[_0x6ff7('0x13')]){if(_0x49d2a9[_0x6ff7('0x13')][_0x6ff7('0x14')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x6b508a,_0x49d2a9[_0x6ff7('0x13')][_0x6ff7('0x15')]);return _0x16790a(_0x49d2a9['error'][_0x6ff7('0x15')]);}logger[_0x6ff7('0x13')]('ChatOfflineMessage,\x20%s,\x20%s',_0x6b508a,_0x49d2a9['error']['message']);return _0x58fc92(_0x49d2a9[_0x6ff7('0x13')][_0x6ff7('0x15')]);}else{logger['info'](_0x6ff7('0xf'),_0x6b508a,_0x6ff7('0x10'));_0x58fc92(_0x49d2a9[_0x6ff7('0x16')][_0x6ff7('0x15')]);}})[_0x6ff7('0x17')](function(_0x52b9d8){logger['error'](_0x6ff7('0xf'),_0x6b508a,_0x52b9d8);_0x16790a(_0x52b9d8);});});}
\ No newline at end of file
index 60462aa..8079048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfb2=['update','delete','destroy','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xdfb2,0xeb));var _0x2dfb=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xdfb2[_0x5b561d];return _0x431060;};'use strict';var multer=require(_0x2dfb('0x0'));var util=require(_0x2dfb('0x1'));var path=require(_0x2dfb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2dfb('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2dfb('0x4'));var config=require(_0x2dfb('0x5'));var controller=require(_0x2dfb('0x6'));router[_0x2dfb('0x7')]('/',auth[_0x2dfb('0x8')](),controller[_0x2dfb('0x9')]);router['get'](_0x2dfb('0xa'),auth[_0x2dfb('0x8')](),controller[_0x2dfb('0xb')]);router[_0x2dfb('0x7')](_0x2dfb('0xc'),auth[_0x2dfb('0x8')](),controller[_0x2dfb('0xd')]);router[_0x2dfb('0xe')]('/',auth[_0x2dfb('0x8')](),controller[_0x2dfb('0xf')]);router[_0x2dfb('0x10')](_0x2dfb('0xc'),auth[_0x2dfb('0x8')](),controller[_0x2dfb('0x11')]);router[_0x2dfb('0x12')](_0x2dfb('0xc'),auth[_0x2dfb('0x8')](),controller[_0x2dfb('0x13')]);module[_0x2dfb('0x14')]=router;
\ No newline at end of file
+var _0x0297=['../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x0297,0x1b4));var _0x7029=function(_0x178f27,_0x26e5b0){_0x178f27=_0x178f27-0x0;var _0x1bef17=_0x0297[_0x178f27];return _0x1bef17;};'use strict';var multer=require(_0x7029('0x0'));var util=require(_0x7029('0x1'));var path=require('path');var timeout=require(_0x7029('0x2'));var express=require('express');var router=express[_0x7029('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7029('0x4'));var interaction=require(_0x7029('0x5'));var config=require(_0x7029('0x6'));var controller=require(_0x7029('0x7'));router[_0x7029('0x8')]('/',auth[_0x7029('0x9')](),controller[_0x7029('0xa')]);router['get'](_0x7029('0xb'),auth[_0x7029('0x9')](),controller[_0x7029('0xc')]);router[_0x7029('0x8')](_0x7029('0xd'),auth['isAuthenticated'](),controller[_0x7029('0xe')]);router['post']('/',auth[_0x7029('0x9')](),controller[_0x7029('0xf')]);router[_0x7029('0x10')](_0x7029('0xd'),auth[_0x7029('0x9')](),controller[_0x7029('0x11')]);router[_0x7029('0x12')]('/:id',auth[_0x7029('0x9')](),controller[_0x7029('0x13')]);module[_0x7029('0x14')]=router;
\ No newline at end of file
index 8fffedd..73694a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8624=['INTEGER','sequelize','STRING','ENUM','mouseOver'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8624,0x105));var _0x4862=function(_0x5e8fc,_0x1ccc06){_0x5e8fc=_0x5e8fc-0x0;var _0x41c58c=_0x8624[_0x5e8fc];return _0x41c58c;};'use strict';var Sequelize=require(_0x4862('0x0'));module['exports']={'name':{'type':Sequelize[_0x4862('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x4862('0x2')]('mouseOver','timeout'),'defaultValue':_0x4862('0x3')},'selector':{'type':Sequelize[_0x4862('0x1')]},'timeout':{'type':Sequelize[_0x4862('0x4')]}};
\ No newline at end of file
+var _0xc987=['sequelize','STRING','ENUM','timeout','INTEGER'];(function(_0x2fdb06,_0x5659fd){var _0x38c469=function(_0xa5c81a){while(--_0xa5c81a){_0x2fdb06['push'](_0x2fdb06['shift']());}};_0x38c469(++_0x5659fd);}(_0xc987,0xdc));var _0x7c98=function(_0x3ad7ad,_0x291a8d){_0x3ad7ad=_0x3ad7ad-0x0;var _0x225a60=_0xc987[_0x3ad7ad];return _0x225a60;};'use strict';var Sequelize=require(_0x7c98('0x0'));module['exports']={'name':{'type':Sequelize[_0x7c98('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x7c98('0x2')]('mouseOver',_0x7c98('0x3')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x7c98('0x1')]},'timeout':{'type':Sequelize[_0x7c98('0x4')]}};
\ No newline at end of file
index 5326573..2f0bd4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ba=['count','limit','set','reject','update','then','destroy','sendStatus','error','stack','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','intersection','attributes','fields','includeAll','include','merge','options','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined'];(function(_0x7d68fe,_0x8b5561){var _0x455412=function(_0x2ec275){while(--_0x2ec275){_0x7d68fe['push'](_0x7d68fe['shift']());}};_0x455412(++_0x8b5561);}(_0xf0ba,0x1ed));var _0xaf0b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf0ba[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xaf0b('0x0'));var rimraf=require(_0xaf0b('0x1'));var zipdir=require(_0xaf0b('0x2'));var jsonpatch=require(_0xaf0b('0x3'));var rp=require(_0xaf0b('0x4'));var moment=require('moment');var BPromise=require(_0xaf0b('0x5'));var Mustache=require(_0xaf0b('0x6'));var util=require('util');var path=require(_0xaf0b('0x7'));var sox=require('sox');var csv=require(_0xaf0b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaf0b('0x9'));var squel=require(_0xaf0b('0xa'));var crypto=require(_0xaf0b('0xb'));var jsforce=require(_0xaf0b('0xc'));var deskjs=require(_0xaf0b('0xd'));var toCsv=require('to-csv');var querystring=require(_0xaf0b('0xe'));var Papa=require(_0xaf0b('0xf'));var Redis=require(_0xaf0b('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xaf0b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaf0b('0x12'));var logger=require(_0xaf0b('0x13'))(_0xaf0b('0x14'));var utils=require('../../config/utils');var config=require(_0xaf0b('0x15'));var licenseUtil=require(_0xaf0b('0x16'));var db=require(_0xaf0b('0x17'))['db'];function respondWithStatusCode(_0x1ada96,_0x283de8){_0x283de8=_0x283de8||0xcc;return function(_0x31ced1){if(_0x31ced1){return _0x1ada96['sendStatus'](_0x283de8);}return _0x1ada96[_0xaf0b('0x18')](_0x283de8)[_0xaf0b('0x19')]();};}function respondWithResult(_0xc72b7d,_0x27732e){_0x27732e=_0x27732e||0xc8;return function(_0x4f0c02){if(_0x4f0c02){return _0xc72b7d[_0xaf0b('0x18')](_0x27732e)[_0xaf0b('0x1a')](_0x4f0c02);}};}function respondWithFilteredResult(_0x45c1b2,_0x2cb9a2){return function(_0x3b2347){if(_0x3b2347){var _0x15d4a6=typeof _0x2cb9a2[_0xaf0b('0x1b')]===_0xaf0b('0x1c')&&typeof _0x2cb9a2['limit']===_0xaf0b('0x1c');var _0x535612=_0x3b2347[_0xaf0b('0x1d')];var _0x1dd132=_0x15d4a6?0x0:_0x2cb9a2[_0xaf0b('0x1b')];var _0xbe0d1e=_0x15d4a6?_0x3b2347[_0xaf0b('0x1d')]:_0x2cb9a2[_0xaf0b('0x1b')]+_0x2cb9a2[_0xaf0b('0x1e')];var _0x217a08;if(_0xbe0d1e>=_0x535612){_0xbe0d1e=_0x535612;_0x217a08=0xc8;}else{_0x217a08=0xce;}_0x45c1b2[_0xaf0b('0x18')](_0x217a08);return _0x45c1b2[_0xaf0b('0x1f')]('Content-Range',_0x1dd132+'-'+_0xbe0d1e+'/'+_0x535612)[_0xaf0b('0x1a')](_0x3b2347);}return null;};}function patchUpdates(_0x707794){return function(_0x1b7911){try{jsonpatch['apply'](_0x1b7911,_0x707794,!![]);}catch(_0x41651d){return BPromise[_0xaf0b('0x20')](_0x41651d);}return _0x1b7911['save']();};}function saveUpdates(_0x3f77d5,_0x47130e){return function(_0xd0af40){if(_0xd0af40){return _0xd0af40[_0xaf0b('0x21')](_0x3f77d5)[_0xaf0b('0x22')](function(_0x4fe7dc){return _0x4fe7dc;});}return null;};}function removeEntity(_0x5f1f70,_0x4541c5){return function(_0x22bf6d){if(_0x22bf6d){return _0x22bf6d[_0xaf0b('0x23')]()[_0xaf0b('0x22')](function(){_0x5f1f70[_0xaf0b('0x18')](0xcc)[_0xaf0b('0x19')]();});}};}function handleEntityNotFound(_0x234040,_0x178b65){return function(_0x5396f2){if(!_0x5396f2){_0x234040[_0xaf0b('0x24')](0x194);}return _0x5396f2;};}function handleError(_0x21e0e6,_0x3a4820){_0x3a4820=_0x3a4820||0x1f4;return function(_0x51cb2f){logger[_0xaf0b('0x25')](_0x51cb2f[_0xaf0b('0x26')]);if(_0x51cb2f['name']){delete _0x51cb2f['name'];}_0x21e0e6['status'](_0x3a4820)[_0xaf0b('0x27')](_0x51cb2f);};}exports[_0xaf0b('0x28')]=function(_0x862513,_0x550586){var _0x33481c={'raw':!![],'where':{'id':_0x862513[_0xaf0b('0x29')]['id']}},_0x674048={};_0x674048[_0xaf0b('0x2a')]=_[_0xaf0b('0x2b')](db[_0xaf0b('0x2c')][_0xaf0b('0x2d')]);_0x674048['query']=_[_0xaf0b('0x2b')](_0x862513[_0xaf0b('0x2e')]);_0x674048['filters']=_[_0xaf0b('0x2f')](_0x674048[_0xaf0b('0x2a')],_0x674048[_0xaf0b('0x2e')]);_0x33481c[_0xaf0b('0x30')]=_[_0xaf0b('0x2f')](_0x674048[_0xaf0b('0x2a')],qs[_0xaf0b('0x31')](_0x862513[_0xaf0b('0x2e')][_0xaf0b('0x31')]));_0x33481c['attributes']=_0x33481c[_0xaf0b('0x30')]['length']?_0x33481c['attributes']:_0x674048['model'];if(_0x862513[_0xaf0b('0x2e')][_0xaf0b('0x32')]){_0x33481c[_0xaf0b('0x33')]=[{'all':!![]}];}_0x33481c=_[_0xaf0b('0x34')]({},_0x33481c,_0x862513[_0xaf0b('0x35')]);return db[_0xaf0b('0x2c')]['find'](_0x33481c)[_0xaf0b('0x22')](handleEntityNotFound(_0x550586,null))[_0xaf0b('0x22')](respondWithResult(_0x550586,null))[_0xaf0b('0x36')](handleError(_0x550586,null));};exports[_0xaf0b('0x37')]=function(_0x6522aa,_0x3a17e0){return db[_0xaf0b('0x2c')][_0xaf0b('0x37')](_0x6522aa[_0xaf0b('0x38')],{})[_0xaf0b('0x22')](respondWithResult(_0x3a17e0,0xc9))['catch'](handleError(_0x3a17e0,null));};exports[_0xaf0b('0x21')]=function(_0x5943c1,_0x2ed4bd){if(_0x5943c1['body']['id']){delete _0x5943c1[_0xaf0b('0x38')]['id'];}return db['ChatProactiveAction'][_0xaf0b('0x39')]({'where':{'id':_0x5943c1[_0xaf0b('0x29')]['id']}})[_0xaf0b('0x22')](handleEntityNotFound(_0x2ed4bd,null))[_0xaf0b('0x22')](saveUpdates(_0x5943c1[_0xaf0b('0x38')],null))[_0xaf0b('0x22')](respondWithResult(_0x2ed4bd,null))[_0xaf0b('0x36')](handleError(_0x2ed4bd,null));};exports['destroy']=function(_0x30849e,_0x282f9b){return db[_0xaf0b('0x2c')][_0xaf0b('0x39')]({'where':{'id':_0x30849e['params']['id']}})[_0xaf0b('0x22')](handleEntityNotFound(_0x282f9b,null))[_0xaf0b('0x22')](removeEntity(_0x282f9b,null))[_0xaf0b('0x36')](handleError(_0x282f9b,null));};
\ No newline at end of file
+var _0x029b=['ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','destroy','error','stack','send','show','model','keys','ChatProactiveAction','query','filters','attributes','intersection','fields','include','merge','catch','create','body','params','find','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv'];(function(_0x13e3cc,_0x24af14){var _0x355014=function(_0xa5c8b8){while(--_0xa5c8b8){_0x13e3cc['push'](_0x13e3cc['shift']());}};_0x355014(++_0x24af14);}(_0x029b,0x66));var _0xb029=function(_0xd08ae2,_0x2abfae){_0xd08ae2=_0xd08ae2-0x0;var _0x197777=_0x029b[_0xd08ae2];return _0x197777;};'use strict';var emlformat=require(_0xb029('0x0'));var rimraf=require(_0xb029('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb029('0x2'));var rp=require(_0xb029('0x3'));var moment=require('moment');var BPromise=require(_0xb029('0x4'));var Mustache=require(_0xb029('0x5'));var util=require('util');var path=require('path');var sox=require(_0xb029('0x6'));var csv=require(_0xb029('0x7'));var ejs=require(_0xb029('0x8'));var fs=require('fs');var fs_extra=require(_0xb029('0x9'));var _=require(_0xb029('0xa'));var squel=require('squel');var crypto=require(_0xb029('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb029('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb029('0xd'));var Papa=require('papaparse');var Redis=require(_0xb029('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb029('0xf'));var as=require(_0xb029('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb029('0x11'))(_0xb029('0x12'));var utils=require(_0xb029('0x13'));var config=require(_0xb029('0x14'));var licenseUtil=require(_0xb029('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13c87c,_0x4b6202){_0x4b6202=_0x4b6202||0xcc;return function(_0x2ba6c2){if(_0x2ba6c2){return _0x13c87c[_0xb029('0x16')](_0x4b6202);}return _0x13c87c[_0xb029('0x17')](_0x4b6202)[_0xb029('0x18')]();};}function respondWithResult(_0x5ce391,_0x337ab5){_0x337ab5=_0x337ab5||0xc8;return function(_0x356552){if(_0x356552){return _0x5ce391[_0xb029('0x17')](_0x337ab5)['json'](_0x356552);}};}function respondWithFilteredResult(_0x5617c,_0x3afa2b){return function(_0x379fdb){if(_0x379fdb){var _0x3434cf=typeof _0x3afa2b[_0xb029('0x19')]===_0xb029('0x1a')&&typeof _0x3afa2b[_0xb029('0x1b')]===_0xb029('0x1a');var _0x3f91cb=_0x379fdb['count'];var _0x58fbe7=_0x3434cf?0x0:_0x3afa2b[_0xb029('0x19')];var _0x5373cd=_0x3434cf?_0x379fdb[_0xb029('0x1c')]:_0x3afa2b[_0xb029('0x19')]+_0x3afa2b[_0xb029('0x1b')];var _0x497ca0;if(_0x5373cd>=_0x3f91cb){_0x5373cd=_0x3f91cb;_0x497ca0=0xc8;}else{_0x497ca0=0xce;}_0x5617c['status'](_0x497ca0);return _0x5617c[_0xb029('0x1d')](_0xb029('0x1e'),_0x58fbe7+'-'+_0x5373cd+'/'+_0x3f91cb)[_0xb029('0x1f')](_0x379fdb);}return null;};}function patchUpdates(_0x3381b2){return function(_0x3c4396){try{jsonpatch[_0xb029('0x20')](_0x3c4396,_0x3381b2,!![]);}catch(_0x530486){return BPromise['reject'](_0x530486);}return _0x3c4396['save']();};}function saveUpdates(_0x5a79fa,_0x3e1dc4){return function(_0x1e16a3){if(_0x1e16a3){return _0x1e16a3[_0xb029('0x21')](_0x5a79fa)[_0xb029('0x22')](function(_0x500bb6){return _0x500bb6;});}return null;};}function removeEntity(_0x3642b5,_0x379ef3){return function(_0x42b91e){if(_0x42b91e){return _0x42b91e[_0xb029('0x23')]()[_0xb029('0x22')](function(){_0x3642b5[_0xb029('0x17')](0xcc)[_0xb029('0x18')]();});}};}function handleEntityNotFound(_0x3eb5ac,_0x147ad0){return function(_0x3671e6){if(!_0x3671e6){_0x3eb5ac[_0xb029('0x16')](0x194);}return _0x3671e6;};}function handleError(_0x22dccd,_0x279e4a){_0x279e4a=_0x279e4a||0x1f4;return function(_0x599a14){logger[_0xb029('0x24')](_0x599a14[_0xb029('0x25')]);if(_0x599a14['name']){delete _0x599a14['name'];}_0x22dccd[_0xb029('0x17')](_0x279e4a)[_0xb029('0x26')](_0x599a14);};}exports[_0xb029('0x27')]=function(_0x45cb0c,_0x3632a0){var _0x4af2ad={'raw':!![],'where':{'id':_0x45cb0c['params']['id']}},_0x605a61={};_0x605a61[_0xb029('0x28')]=_[_0xb029('0x29')](db[_0xb029('0x2a')]['rawAttributes']);_0x605a61[_0xb029('0x2b')]=_[_0xb029('0x29')](_0x45cb0c['query']);_0x605a61[_0xb029('0x2c')]=_['intersection'](_0x605a61[_0xb029('0x28')],_0x605a61['query']);_0x4af2ad[_0xb029('0x2d')]=_[_0xb029('0x2e')](_0x605a61[_0xb029('0x28')],qs[_0xb029('0x2f')](_0x45cb0c[_0xb029('0x2b')][_0xb029('0x2f')]));_0x4af2ad[_0xb029('0x2d')]=_0x4af2ad[_0xb029('0x2d')]['length']?_0x4af2ad[_0xb029('0x2d')]:_0x605a61[_0xb029('0x28')];if(_0x45cb0c[_0xb029('0x2b')]['includeAll']){_0x4af2ad[_0xb029('0x30')]=[{'all':!![]}];}_0x4af2ad=_[_0xb029('0x31')]({},_0x4af2ad,_0x45cb0c['options']);return db[_0xb029('0x2a')]['find'](_0x4af2ad)[_0xb029('0x22')](handleEntityNotFound(_0x3632a0,null))['then'](respondWithResult(_0x3632a0,null))[_0xb029('0x32')](handleError(_0x3632a0,null));};exports[_0xb029('0x33')]=function(_0x43bf36,_0xae3440){return db[_0xb029('0x2a')][_0xb029('0x33')](_0x43bf36[_0xb029('0x34')],{})['then'](respondWithResult(_0xae3440,0xc9))[_0xb029('0x32')](handleError(_0xae3440,null));};exports[_0xb029('0x21')]=function(_0x4ce95d,_0x38f4eb){if(_0x4ce95d[_0xb029('0x34')]['id']){delete _0x4ce95d[_0xb029('0x34')]['id'];}return db[_0xb029('0x2a')]['find']({'where':{'id':_0x4ce95d[_0xb029('0x35')]['id']}})[_0xb029('0x22')](handleEntityNotFound(_0x38f4eb,null))[_0xb029('0x22')](saveUpdates(_0x4ce95d['body'],null))[_0xb029('0x22')](respondWithResult(_0x38f4eb,null))[_0xb029('0x32')](handleError(_0x38f4eb,null));};exports[_0xb029('0x23')]=function(_0x35b3b9,_0x109fe6){return db[_0xb029('0x2a')][_0xb029('0x36')]({'where':{'id':_0x35b3b9[_0xb029('0x35')]['id']}})[_0xb029('0x22')](handleEntityNotFound(_0x109fe6,null))[_0xb029('0x22')](removeEntity(_0x109fe6,null))['catch'](handleError(_0x109fe6,null));};
\ No newline at end of file
index 3e35be3..6cde2bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7ca=['../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','lodash'];(function(_0x52e4d3,_0x854cf6){var _0x7a477e=function(_0x1c0408){while(--_0x1c0408){_0x52e4d3['push'](_0x52e4d3['shift']());}};_0x7a477e(++_0x854cf6);}(_0xe7ca,0xa7));var _0xae7c=function(_0x3bb0b8,_0x1fbf5e){_0x3bb0b8=_0x3bb0b8-0x0;var _0x4f21c9=_0xe7ca[_0x3bb0b8];return _0x4f21c9;};'use strict';var _=require(_0xae7c('0x0'));var util=require('util');var logger=require(_0xae7c('0x1'))('api');var moment=require('moment');var BPromise=require(_0xae7c('0x2'));var rp=require(_0xae7c('0x3'));var fs=require('fs');var path=require(_0xae7c('0x4'));var rimraf=require(_0xae7c('0x5'));var config=require(_0xae7c('0x6'));var attributes=require(_0xae7c('0x7'));module[_0xae7c('0x8')]=function(_0x49658a,_0x3672f2){return _0x49658a[_0xae7c('0x9')](_0xae7c('0xa'),attributes,{'tableName':_0xae7c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0dac=['chat_proactive_actions','lodash','util','bluebird','request-promise','path','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction'];(function(_0x4da5d0,_0x1b8d11){var _0x4bbe99=function(_0x117cd){while(--_0x117cd){_0x4da5d0['push'](_0x4da5d0['shift']());}};_0x4bbe99(++_0x1b8d11);}(_0x0dac,0x1da));var _0xc0da=function(_0x5f5594,_0x3fba69){_0x5f5594=_0x5f5594-0x0;var _0x27c978=_0x0dac[_0x5f5594];return _0x27c978;};'use strict';var _=require(_0xc0da('0x0'));var util=require(_0xc0da('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xc0da('0x2'));var rp=require(_0xc0da('0x3'));var fs=require('fs');var path=require(_0xc0da('0x4'));var rimraf=require('rimraf');var config=require(_0xc0da('0x5'));var attributes=require(_0xc0da('0x6'));module[_0xc0da('0x7')]=function(_0x56bcb5,_0x47643c){return _0x56bcb5[_0xc0da('0x8')](_0xc0da('0x9'),attributes,{'tableName':_0xc0da('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3cb2a10..a824a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb53=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2a928d,_0x3afae9){var _0x2945fc=function(_0x35b1de){while(--_0x35b1de){_0x2a928d['push'](_0x2a928d['shift']());}};_0x2945fc(++_0x3afae9);}(_0xdb53,0x17a));var _0x3db5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdb53[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x3db5('0x0'));var moment=require(_0x3db5('0x1'));var BPromise=require(_0x3db5('0x2'));var rs=require(_0x3db5('0x3'));var fs=require('fs');var Redis=require(_0x3db5('0x4'));var db=require(_0x3db5('0x5'))['db'];var utils=require(_0x3db5('0x6'));var logger=require(_0x3db5('0x7'))('rpc');var config=require(_0x3db5('0x8'));var jayson=require(_0x3db5('0x9'));var client=jayson[_0x3db5('0xa')][_0x3db5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x160909,_0x4deaf1,_0x1de4a0){return new BPromise(function(_0x4d1812,_0x13db2c){return client[_0x3db5('0xc')](_0x160909,_0x1de4a0)[_0x3db5('0xd')](function(_0x45ddaf){logger[_0x3db5('0xe')](_0x3db5('0xf'),_0x4deaf1,_0x3db5('0x10'));logger[_0x3db5('0x11')](_0x3db5('0x12'),_0x4deaf1,'request\x20sent',JSON[_0x3db5('0x13')](_0x45ddaf));if(_0x45ddaf[_0x3db5('0x14')]){if(_0x45ddaf[_0x3db5('0x14')][_0x3db5('0x15')]===0x1f4){logger[_0x3db5('0x14')](_0x3db5('0xf'),_0x4deaf1,_0x45ddaf['error'][_0x3db5('0x16')]);return _0x13db2c(_0x45ddaf['error'][_0x3db5('0x16')]);}logger[_0x3db5('0x14')](_0x3db5('0xf'),_0x4deaf1,_0x45ddaf[_0x3db5('0x14')][_0x3db5('0x16')]);return _0x4d1812(_0x45ddaf['error'][_0x3db5('0x16')]);}else{logger[_0x3db5('0xe')](_0x3db5('0xf'),_0x4deaf1,_0x3db5('0x10'));_0x4d1812(_0x45ddaf[_0x3db5('0x17')][_0x3db5('0x16')]);}})[_0x3db5('0x18')](function(_0x3a40e3){logger[_0x3db5('0x14')](_0x3db5('0xf'),_0x4deaf1,_0x3a40e3);_0x13db2c(_0x3a40e3);});});}
\ No newline at end of file
+var _0x16bc=['stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s'];(function(_0x5c962b,_0x3aa9f3){var _0xa9fd84=function(_0x1e461f){while(--_0x1e461f){_0x5c962b['push'](_0x5c962b['shift']());}};_0xa9fd84(++_0x3aa9f3);}(_0x16bc,0xcc));var _0xc16b=function(_0x19159d,_0x3d05c8){_0x19159d=_0x19159d-0x0;var _0x35884a=_0x16bc[_0x19159d];return _0x35884a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc16b('0x0'));var BPromise=require(_0xc16b('0x1'));var rs=require(_0xc16b('0x2'));var fs=require('fs');var Redis=require(_0xc16b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc16b('0x4'));var logger=require(_0xc16b('0x5'))(_0xc16b('0x6'));var config=require(_0xc16b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc16b('0x8')][_0xc16b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x492601,_0x237f2d,_0x3eb502){return new BPromise(function(_0x222bdf,_0x1a52b7){return client[_0xc16b('0xa')](_0x492601,_0x3eb502)[_0xc16b('0xb')](function(_0x5bc9f4){logger['info'](_0xc16b('0xc'),_0x237f2d,_0xc16b('0xd'));logger[_0xc16b('0xe')](_0xc16b('0xf'),_0x237f2d,_0xc16b('0xd'),JSON[_0xc16b('0x10')](_0x5bc9f4));if(_0x5bc9f4[_0xc16b('0x11')]){if(_0x5bc9f4[_0xc16b('0x11')][_0xc16b('0x12')]===0x1f4){logger[_0xc16b('0x11')](_0xc16b('0xc'),_0x237f2d,_0x5bc9f4['error'][_0xc16b('0x13')]);return _0x1a52b7(_0x5bc9f4[_0xc16b('0x11')]['message']);}logger['error'](_0xc16b('0xc'),_0x237f2d,_0x5bc9f4[_0xc16b('0x11')][_0xc16b('0x13')]);return _0x222bdf(_0x5bc9f4[_0xc16b('0x11')][_0xc16b('0x13')]);}else{logger['info'](_0xc16b('0xc'),_0x237f2d,_0xc16b('0xd'));_0x222bdf(_0x5bc9f4[_0xc16b('0x14')][_0xc16b('0x13')]);}})[_0xc16b('0x15')](function(_0x1ef685){logger[_0xc16b('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x237f2d,_0x1ef685);_0x1a52b7(_0x1ef685);});});}
\ No newline at end of file
index 0560224..a7df58c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','show','post','isAuthenticated','put','/:id','update','delete'];(function(_0x1731a9,_0x4fb551){var _0x22b9a5=function(_0x3b62fd){while(--_0x3b62fd){_0x1731a9['push'](_0x1731a9['shift']());}};_0x22b9a5(++_0x4fb551);}(_0x8ef6,0xf2));var _0x68ef=function(_0x293fcf,_0x440084){_0x293fcf=_0x293fcf-0x0;var _0x4286ce=_0x8ef6[_0x293fcf];return _0x4286ce;};'use strict';var multer=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var path=require(_0x68ef('0x2'));var timeout=require(_0x68ef('0x3'));var express=require(_0x68ef('0x4'));var router=express[_0x68ef('0x5')]();var fs_extra=require(_0x68ef('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var controller=require(_0x68ef('0x9'));router[_0x68ef('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x68ef('0xb')]);router[_0x68ef('0xc')]('/',auth[_0x68ef('0xd')](),controller['create']);router[_0x68ef('0xe')](_0x68ef('0xf'),auth[_0x68ef('0xd')](),controller[_0x68ef('0x10')]);router[_0x68ef('0x11')](_0x68ef('0xf'),auth[_0x68ef('0xd')](),controller[_0x68ef('0x12')]);module[_0x68ef('0x13')]=router;
\ No newline at end of file
+var _0xb4c7=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id','isAuthenticated','show','create'];(function(_0x215e65,_0x183f97){var _0xa85842=function(_0x43bf45){while(--_0x43bf45){_0x215e65['push'](_0x215e65['shift']());}};_0xa85842(++_0x183f97);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x3f7be0,_0x4217b9){_0x3f7be0=_0x3f7be0-0x0;var _0x10cfea=_0xb4c7[_0x3f7be0];return _0x10cfea;};'use strict';var multer=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var path=require(_0x7b4c('0x2'));var timeout=require(_0x7b4c('0x3'));var express=require(_0x7b4c('0x4'));var router=express['Router']();var fs_extra=require(_0x7b4c('0x5'));var auth=require(_0x7b4c('0x6'));var interaction=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var controller=require(_0x7b4c('0x9'));router['get'](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xc')]);router['post']('/',auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xd')]);router['put'](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xe')]);router[_0x7b4c('0xf')](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0x10')]);module[_0x7b4c('0x11')]=router;
\ No newline at end of file
index 11bb52f..b6cabdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e2a=['STRING','INTEGER','rrmemory','roundrobin','sequelize','exports'];(function(_0x1b38a6,_0x446d5b){var _0xd011d5=function(_0x2ea1bb){while(--_0x2ea1bb){_0x1b38a6['push'](_0x1b38a6['shift']());}};_0xd011d5(++_0x446d5b);}(_0x2e2a,0x94));var _0xa2e2=function(_0x1ef726,_0x16fdea){_0x1ef726=_0x1ef726-0x0;var _0x4c3c66=_0x2e2a[_0x1ef726];return _0x4c3c66;};'use strict';var Sequelize=require(_0xa2e2('0x0'));module[_0xa2e2('0x1')]={'name':{'type':Sequelize[_0xa2e2('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa2e2('0x2')]},'timeout':{'type':Sequelize[_0xa2e2('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xa2e2('0x4'),'beepall',_0xa2e2('0x5'))}};
\ No newline at end of file
+var _0x0ecb=['STRING','name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x1fe5b3,_0x378148){var _0xc63fef=function(_0x295cb8){while(--_0x295cb8){_0x1fe5b3['push'](_0x1fe5b3['shift']());}};_0xc63fef(++_0x378148);}(_0x0ecb,0xc6));var _0xb0ec=function(_0xadd417,_0x207028){_0xadd417=_0xadd417-0x0;var _0x5c79e7=_0x0ecb[_0xadd417];return _0x5c79e7;};'use strict';var Sequelize=require(_0xb0ec('0x0'));module[_0xb0ec('0x1')]={'name':{'type':Sequelize[_0xb0ec('0x2')],'unique':_0xb0ec('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb0ec('0x2')]},'timeout':{'type':Sequelize[_0xb0ec('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb0ec('0x5')](_0xb0ec('0x6'),_0xb0ec('0x7'),'roundrobin')}};
\ No newline at end of file
index a3705af..d38f6cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf63=['select','tq.TeamId','team_has_chat_queues','join','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','forEach','userChatQueue:remove','addAgents','omit','isArray','getAgents','eml-format','fast-json-patch','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','request','then','request\x20sent','debug','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','apply','update','destroy','ChatQueues','end','stack','name','send','index','map','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','includeAll','include','ChatQueue','findAll','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserChatQueue','rawAttributes','ChatQueueId','options','findAndCountAll','chatPause','updatedAt','createdAt','SIP','Team','getTeams','addTeams','ids','User','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','emit','removeTeams'];(function(_0x1c8334,_0x4dd310){var _0xb2b99b=function(_0x454eb7){while(--_0x454eb7){_0x1c8334['push'](_0x1c8334['shift']());}};_0xb2b99b(++_0x4dd310);}(_0xcf63,0xaf));var _0x3cf6=function(_0x3ade3b,_0xfa770d){_0x3ade3b=_0x3ade3b-0x0;var _0x5d51de=_0xcf63[_0x3ade3b];return _0x5d51de;};'use strict';var emlformat=require(_0x3cf6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3cf6('0x1'));var rp=require('request-promise');var moment=require(_0x3cf6('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3cf6('0x3'));var path=require(_0x3cf6('0x4'));var sox=require(_0x3cf6('0x5'));var csv=require(_0x3cf6('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3cf6('0x7'));var _=require(_0x3cf6('0x8'));var squel=require(_0x3cf6('0x9'));var crypto=require(_0x3cf6('0xa'));var jsforce=require(_0x3cf6('0xb'));var deskjs=require(_0x3cf6('0xc'));var toCsv=require(_0x3cf6('0x6'));var querystring=require(_0x3cf6('0xd'));var Papa=require(_0x3cf6('0xe'));var Redis=require(_0x3cf6('0xf'));var authService=require(_0x3cf6('0x10'));var qs=require(_0x3cf6('0x11'));var as=require(_0x3cf6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3cf6('0x13'))(_0x3cf6('0x14'));var utils=require(_0x3cf6('0x15'));var config=require(_0x3cf6('0x16'));var licenseUtil=require(_0x3cf6('0x17'));var db=require(_0x3cf6('0x18'))['db'];config[_0x3cf6('0x19')]=_['defaults'](config[_0x3cf6('0x19')],{'host':_0x3cf6('0x1a'),'port':0x18eb});var socket=require(_0x3cf6('0x1b'))(new Redis(config[_0x3cf6('0x19')]));require(_0x3cf6('0x1c'))[_0x3cf6('0x1d')](socket);var jayson=require(_0x3cf6('0x1e'));var client=jayson[_0x3cf6('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1aa4ff,_0x49900a,_0x2cc346,_0x531588){return new BPromise(function(_0x1a2f77,_0xc6aa62){var _0x56e1f5=_0x531588||client;return _0x56e1f5[_0x3cf6('0x20')](_0x1aa4ff,_0x2cc346)[_0x3cf6('0x21')](function(_0x57f36e){logger['info']('ChatQueue,\x20%s,\x20%s',_0x49900a,_0x3cf6('0x22'));logger[_0x3cf6('0x23')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x49900a,_0x3cf6('0x22'),JSON['stringify'](_0x57f36e));if(_0x57f36e[_0x3cf6('0x24')]){if(_0x57f36e[_0x3cf6('0x24')][_0x3cf6('0x25')]===0x1f4){logger['error'](_0x3cf6('0x26'),_0x49900a,_0x57f36e[_0x3cf6('0x24')][_0x3cf6('0x27')]);return _0xc6aa62(_0x57f36e[_0x3cf6('0x24')][_0x3cf6('0x27')]);}logger[_0x3cf6('0x24')](_0x3cf6('0x26'),_0x49900a,_0x57f36e['error'][_0x3cf6('0x27')]);return _0x1a2f77(_0x57f36e[_0x3cf6('0x24')][_0x3cf6('0x27')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x49900a,_0x3cf6('0x22'));_0x1a2f77(_0x57f36e[_0x3cf6('0x28')][_0x3cf6('0x27')]);}})[_0x3cf6('0x29')](function(_0x277126){logger[_0x3cf6('0x24')]('ChatQueue,\x20%s,\x20%s',_0x49900a,_0x277126);_0xc6aa62(_0x277126);});});}function respondWithStatusCode(_0x405268,_0x33ba5d){_0x33ba5d=_0x33ba5d||0xcc;return function(_0x3ce5e0){if(_0x3ce5e0){return _0x405268[_0x3cf6('0x2a')](_0x33ba5d);}return _0x405268[_0x3cf6('0x2b')](_0x33ba5d)['end']();};}function respondWithResult(_0x458eca,_0x6a7067){_0x6a7067=_0x6a7067||0xc8;return function(_0x5ed32c){if(_0x5ed32c){return _0x458eca['status'](_0x6a7067)[_0x3cf6('0x2c')](_0x5ed32c);}};}function respondWithFilteredResult(_0xd58a37,_0x24772f){return function(_0x3622f8){if(_0x3622f8){var _0xdafbcc=typeof _0x24772f[_0x3cf6('0x2d')]===_0x3cf6('0x2e')&&typeof _0x24772f['limit']===_0x3cf6('0x2e');var _0x443ae5=_0x3622f8['count'];var _0x3a4abc=_0xdafbcc?0x0:_0x24772f[_0x3cf6('0x2d')];var _0x33d455=_0xdafbcc?_0x3622f8[_0x3cf6('0x2f')]:_0x24772f[_0x3cf6('0x2d')]+_0x24772f[_0x3cf6('0x30')];var _0x3a1480;if(_0x33d455>=_0x443ae5){_0x33d455=_0x443ae5;_0x3a1480=0xc8;}else{_0x3a1480=0xce;}_0xd58a37[_0x3cf6('0x2b')](_0x3a1480);return _0xd58a37[_0x3cf6('0x31')]('Content-Range',_0x3a4abc+'-'+_0x33d455+'/'+_0x443ae5)[_0x3cf6('0x2c')](_0x3622f8);}return null;};}function patchUpdates(_0x30c5aa){return function(_0x3345a3){try{jsonpatch[_0x3cf6('0x32')](_0x3345a3,_0x30c5aa,!![]);}catch(_0x2f0bcd){return BPromise['reject'](_0x2f0bcd);}return _0x3345a3['save']();};}function saveUpdates(_0xa2f66f,_0x50266e){return function(_0x20b026){if(_0x20b026){return _0x20b026[_0x3cf6('0x33')](_0xa2f66f)['then'](function(_0x1ade08){return _0x1ade08;});}return null;};}function removeEntity(_0x2e2593,_0x222d3d){return function(_0x2be048){if(_0x2be048){return _0x2be048[_0x3cf6('0x34')]()['then'](function(){var _0x420d5a=_0x2be048['get']({'plain':!![]});var _0x543566=_0x3cf6('0x35');return db['UserProfileResource'][_0x3cf6('0x34')]({'where':{'type':_0x543566,'resourceId':_0x420d5a['id']}})[_0x3cf6('0x21')](function(){return _0x2be048;});})[_0x3cf6('0x21')](function(){_0x2e2593[_0x3cf6('0x2b')](0xcc)[_0x3cf6('0x36')]();});}};}function handleEntityNotFound(_0x3b8f34,_0x187b37){return function(_0x22ab67){if(!_0x22ab67){_0x3b8f34[_0x3cf6('0x2a')](0x194);}return _0x22ab67;};}function handleError(_0x1102fa,_0x5804d7){_0x5804d7=_0x5804d7||0x1f4;return function(_0x5c001c){logger[_0x3cf6('0x24')](_0x5c001c[_0x3cf6('0x37')]);if(_0x5c001c[_0x3cf6('0x38')]){delete _0x5c001c[_0x3cf6('0x38')];}_0x1102fa['status'](_0x5804d7)[_0x3cf6('0x39')](_0x5c001c);};}exports[_0x3cf6('0x3a')]=function(_0xd2f185,_0xeaac37){var _0x453fb8={},_0x301cf0={},_0x199c4c={'count':0x0,'rows':[]};var _0x2bd878=_[_0x3cf6('0x3b')](db['ChatQueue']['rawAttributes'],function(_0x558042){return{'name':_0x558042[_0x3cf6('0x3c')],'type':_0x558042['type'][_0x3cf6('0x3d')]};});_0x301cf0[_0x3cf6('0x3e')]=_[_0x3cf6('0x3b')](_0x2bd878,_0x3cf6('0x38'));_0x301cf0[_0x3cf6('0x3f')]=_[_0x3cf6('0x40')](_0xd2f185['query']);_0x301cf0['filters']=_[_0x3cf6('0x41')](_0x301cf0['model'],_0x301cf0[_0x3cf6('0x3f')]);_0x453fb8['attributes']=_[_0x3cf6('0x41')](_0x301cf0['model'],qs[_0x3cf6('0x42')](_0xd2f185['query'][_0x3cf6('0x42')]));_0x453fb8[_0x3cf6('0x43')]=_0x453fb8[_0x3cf6('0x43')][_0x3cf6('0x44')]?_0x453fb8[_0x3cf6('0x43')]:_0x301cf0[_0x3cf6('0x3e')];if(!_0xd2f185[_0x3cf6('0x3f')][_0x3cf6('0x45')](_0x3cf6('0x46'))){_0x453fb8[_0x3cf6('0x30')]=qs['limit'](_0xd2f185['query'][_0x3cf6('0x30')]);_0x453fb8[_0x3cf6('0x2d')]=qs[_0x3cf6('0x2d')](_0xd2f185[_0x3cf6('0x3f')]['offset']);}_0x453fb8[_0x3cf6('0x47')]=qs['sort'](_0xd2f185['query'][_0x3cf6('0x48')]);_0x453fb8[_0x3cf6('0x49')]=qs[_0x3cf6('0x4a')](_[_0x3cf6('0x4b')](_0xd2f185['query'],_0x301cf0[_0x3cf6('0x4a')]),_0x2bd878);if(_0xd2f185[_0x3cf6('0x3f')]['filter']){_0x453fb8[_0x3cf6('0x49')]=_[_0x3cf6('0x4c')](_0x453fb8[_0x3cf6('0x49')],{'$or':_['map'](_0x2bd878,function(_0x134b20){if(_0x134b20[_0x3cf6('0x4d')]!==_0x3cf6('0x4e')){var _0x5b637f={};_0x5b637f[_0x134b20[_0x3cf6('0x38')]]={'$like':'%'+_0xd2f185[_0x3cf6('0x3f')][_0x3cf6('0x4f')]+'%'};return _0x5b637f;}})});}_0x453fb8=_[_0x3cf6('0x4c')]({},_0x453fb8,_0xd2f185['options']);var _0x5ed79b={'where':_0x453fb8[_0x3cf6('0x49')]};return db['ChatQueue'][_0x3cf6('0x2f')](_0x5ed79b)[_0x3cf6('0x21')](function(_0x2fa8e9){_0x199c4c[_0x3cf6('0x2f')]=_0x2fa8e9;if(_0xd2f185['query'][_0x3cf6('0x50')]){_0x453fb8[_0x3cf6('0x51')]=[{'all':!![]}];}return db[_0x3cf6('0x52')][_0x3cf6('0x53')](_0x453fb8);})['then'](function(_0x5d5bc1){_0x199c4c[_0x3cf6('0x54')]=_0x5d5bc1;return _0x199c4c;})[_0x3cf6('0x21')](respondWithFilteredResult(_0xeaac37,_0x453fb8))[_0x3cf6('0x29')](handleError(_0xeaac37,null));};exports[_0x3cf6('0x55')]=function(_0x5d5f52,_0xbe75e6){var _0x48e405={'raw':!![],'where':{'id':_0x5d5f52[_0x3cf6('0x56')]['id']}},_0x20c52c={};_0x20c52c[_0x3cf6('0x3e')]=_[_0x3cf6('0x40')](db[_0x3cf6('0x52')]['rawAttributes']);_0x20c52c['query']=_[_0x3cf6('0x40')](_0x5d5f52['query']);_0x20c52c[_0x3cf6('0x4a')]=_['intersection'](_0x20c52c[_0x3cf6('0x3e')],_0x20c52c[_0x3cf6('0x3f')]);_0x48e405[_0x3cf6('0x43')]=_[_0x3cf6('0x41')](_0x20c52c[_0x3cf6('0x3e')],qs[_0x3cf6('0x42')](_0x5d5f52[_0x3cf6('0x3f')][_0x3cf6('0x42')]));_0x48e405[_0x3cf6('0x43')]=_0x48e405[_0x3cf6('0x43')]['length']?_0x48e405[_0x3cf6('0x43')]:_0x20c52c['model'];if(_0x5d5f52['query'][_0x3cf6('0x50')]){_0x48e405['include']=[{'all':!![]}];}_0x48e405=_[_0x3cf6('0x4c')]({},_0x48e405,_0x5d5f52['options']);return db['ChatQueue'][_0x3cf6('0x57')](_0x48e405)['then'](handleEntityNotFound(_0xbe75e6,null))['then'](respondWithResult(_0xbe75e6,null))['catch'](handleError(_0xbe75e6,null));};exports[_0x3cf6('0x58')]=function(_0x1aebb9,_0x465250){return db['ChatQueue'][_0x3cf6('0x58')](_0x1aebb9[_0x3cf6('0x59')],{})[_0x3cf6('0x21')](function(_0x463fa9){var _0x5efd30=_0x1aebb9[_0x3cf6('0x5a')]['get']({'plain':!![]});if(!_0x5efd30)throw new Error(_0x3cf6('0x5b'));if(_0x5efd30[_0x3cf6('0x5c')]==='user'){var _0x49a557=_0x463fa9[_0x3cf6('0x5d')]({'plain':!![]});var _0x35c62a=_0x3cf6('0x35');return db['UserProfileSection']['find']({'where':{'name':_0x35c62a,'userProfileId':_0x5efd30[_0x3cf6('0x5e')]},'raw':!![]})['then'](function(_0x42061a){if(_0x42061a&&_0x42061a['autoAssociation']===0x0){return db[_0x3cf6('0x5f')][_0x3cf6('0x58')]({'name':_0x49a557['name'],'resourceId':_0x49a557['id'],'type':_0x42061a[_0x3cf6('0x38')],'sectionId':_0x42061a['id']},{})[_0x3cf6('0x21')](function(){return _0x463fa9;});}else{return _0x463fa9;}})['catch'](function(_0x4721de){logger['error'](_0x3cf6('0x60'),_0x4721de);throw _0x4721de;});}return _0x463fa9;})[_0x3cf6('0x21')](respondWithResult(_0x465250,0xc9))[_0x3cf6('0x29')](handleError(_0x465250,null));};exports['update']=function(_0x1add73,_0x34e8ad){if(_0x1add73[_0x3cf6('0x59')]['id']){delete _0x1add73[_0x3cf6('0x59')]['id'];}return db[_0x3cf6('0x52')][_0x3cf6('0x57')]({'where':{'id':_0x1add73[_0x3cf6('0x56')]['id']}})[_0x3cf6('0x21')](handleEntityNotFound(_0x34e8ad,null))['then'](saveUpdates(_0x1add73[_0x3cf6('0x59')],null))['then'](respondWithResult(_0x34e8ad,null))[_0x3cf6('0x29')](handleError(_0x34e8ad,null));};exports['destroy']=function(_0x4de0e9,_0x36b684){return db['ChatQueue'][_0x3cf6('0x57')]({'where':{'id':_0x4de0e9['params']['id']}})[_0x3cf6('0x21')](handleEntityNotFound(_0x36b684,null))[_0x3cf6('0x21')](removeEntity(_0x36b684,null))[_0x3cf6('0x29')](handleError(_0x36b684,null));};exports['describe']=function(_0x2362fa,_0x1ca0f2){return db[_0x3cf6('0x52')][_0x3cf6('0x61')]()['then'](respondWithResult(_0x1ca0f2,null))[_0x3cf6('0x29')](handleError(_0x1ca0f2,null));};exports[_0x3cf6('0x62')]=function(_0x3d730e,_0x4be293,_0x22fd52){var _0x3218aa={'raw':!![],'where':{}},_0x456269={},_0x46cf1b;return db[_0x3cf6('0x52')][_0x3cf6('0x63')]({'where':{'id':_0x3d730e[_0x3cf6('0x56')]['id']}})['then'](handleEntityNotFound(_0x4be293,null))['then'](function(_0x2ef601){if(_0x2ef601){_0x46cf1b=_0x2ef601['get']({'plain':!![]});_0x456269[_0x3cf6('0x3e')]=_['keys'](db[_0x3cf6('0x64')][_0x3cf6('0x65')]);_0x456269[_0x3cf6('0x3f')]=_[_0x3cf6('0x40')](_0x3d730e[_0x3cf6('0x3f')]);_0x456269[_0x3cf6('0x4a')]=_[_0x3cf6('0x41')](_0x456269['model'],_0x456269[_0x3cf6('0x3f')]);_0x3218aa[_0x3cf6('0x43')]=_[_0x3cf6('0x41')](_0x456269[_0x3cf6('0x3e')],qs[_0x3cf6('0x42')](_0x3d730e['query']['fields']));_0x3218aa[_0x3cf6('0x43')]=_0x3218aa[_0x3cf6('0x43')][_0x3cf6('0x44')]?_0x3218aa['attributes']:_0x456269[_0x3cf6('0x3e')];if(!_0x3d730e[_0x3cf6('0x3f')][_0x3cf6('0x45')](_0x3cf6('0x46'))){_0x3218aa[_0x3cf6('0x30')]=qs[_0x3cf6('0x30')](_0x3d730e[_0x3cf6('0x3f')][_0x3cf6('0x30')]);_0x3218aa[_0x3cf6('0x2d')]=qs[_0x3cf6('0x2d')](_0x3d730e['query'][_0x3cf6('0x2d')]);}_0x3218aa[_0x3cf6('0x47')]=qs[_0x3cf6('0x48')](_0x3d730e[_0x3cf6('0x3f')]['sort']);_0x3218aa[_0x3cf6('0x49')]=qs[_0x3cf6('0x4a')](_['pick'](_0x3d730e[_0x3cf6('0x3f')],_0x456269[_0x3cf6('0x4a')]));_0x3218aa['where'][_0x3cf6('0x66')]=_0x2ef601['id'];if(_0x3d730e[_0x3cf6('0x3f')][_0x3cf6('0x4f')]){_0x3218aa[_0x3cf6('0x49')]=_[_0x3cf6('0x4c')](_0x3218aa[_0x3cf6('0x49')],{'$or':_[_0x3cf6('0x3b')](_0x3218aa[_0x3cf6('0x43')],function(_0x1e8679){var _0x58f4fa={};_0x58f4fa[_0x1e8679]={'$like':'%'+_0x3d730e[_0x3cf6('0x3f')][_0x3cf6('0x4f')]+'%'};return _0x58f4fa;})});}_0x3218aa=_[_0x3cf6('0x4c')]({},_0x3218aa,_0x3d730e[_0x3cf6('0x67')]);return db[_0x3cf6('0x64')][_0x3cf6('0x53')](_0x3218aa);}})[_0x3cf6('0x21')](function(_0x2c3dfc){if(_0x2c3dfc){return db['User'][_0x3cf6('0x68')]({'where':{'id':_['map'](_0x2c3dfc,'UserId'),'role':'agent'},'attributes':['id','name',_0x3cf6('0x69'),_0x3cf6('0x6a'),_0x3cf6('0x6b')]});}})[_0x3cf6('0x21')](function(_0x444d09){if(_0x444d09){return{'count':_0x444d09['count'],'rows':_[_0x3cf6('0x3b')](_0x444d09[_0x3cf6('0x54')],function(_0x2923f8){return{'membername':_0x2923f8[_0x3cf6('0x38')],'UserId':_0x2923f8['id'],'queue_name':_0x46cf1b[_0x3cf6('0x38')],'ChatQueueId':_0x46cf1b['id'],'interface':util['format']('%s/%s',_0x3cf6('0x6c'),_0x2923f8[_0x3cf6('0x38')]),'penalty':0x0,'paused':_0x2923f8['chatPause'],'createdAt':_0x2923f8['createdAt'],'updatedAt':_0x2923f8[_0x3cf6('0x6a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3cf6('0x21')](respondWithFilteredResult(_0x4be293,_0x3218aa))[_0x3cf6('0x29')](handleError(_0x4be293,null));};exports['getTeams']=function(_0xd355c2,_0xe3f84e,_0x1385e9){var _0x59ee7b={};var _0x1940d7={};var _0x7e026b;var _0x100022;return db[_0x3cf6('0x52')][_0x3cf6('0x63')]({'where':{'id':_0xd355c2['params']['id']}})[_0x3cf6('0x21')](handleEntityNotFound(_0xe3f84e,null))[_0x3cf6('0x21')](function(_0x4ce45d){if(_0x4ce45d){_0x7e026b=_0x4ce45d;_0x1940d7['model']=_[_0x3cf6('0x40')](db[_0x3cf6('0x6d')][_0x3cf6('0x65')]);_0x1940d7[_0x3cf6('0x3f')]=_[_0x3cf6('0x40')](_0xd355c2[_0x3cf6('0x3f')]);_0x1940d7[_0x3cf6('0x4a')]=_['intersection'](_0x1940d7['model'],_0x1940d7[_0x3cf6('0x3f')]);_0x59ee7b[_0x3cf6('0x43')]=_[_0x3cf6('0x41')](_0x1940d7[_0x3cf6('0x3e')],qs[_0x3cf6('0x42')](_0xd355c2['query'][_0x3cf6('0x42')]));_0x59ee7b['attributes']=_0x59ee7b['attributes'][_0x3cf6('0x44')]?_0x59ee7b['attributes']:_0x1940d7[_0x3cf6('0x3e')];_0x59ee7b[_0x3cf6('0x47')]=qs['sort'](_0xd355c2[_0x3cf6('0x3f')][_0x3cf6('0x48')]);_0x59ee7b['where']=qs[_0x3cf6('0x4a')](_[_0x3cf6('0x4b')](_0xd355c2[_0x3cf6('0x3f')],_0x1940d7[_0x3cf6('0x4a')]));if(_0xd355c2[_0x3cf6('0x3f')][_0x3cf6('0x4f')]){_0x59ee7b[_0x3cf6('0x49')]=_['merge'](_0x59ee7b['where'],{'$or':_[_0x3cf6('0x3b')](_0x59ee7b[_0x3cf6('0x43')],function(_0x596aad){var _0x5df07e={};_0x5df07e[_0x596aad]={'$like':'%'+_0xd355c2['query'][_0x3cf6('0x4f')]+'%'};return _0x5df07e;})});}_0x59ee7b=_[_0x3cf6('0x4c')]({},_0x59ee7b,_0xd355c2[_0x3cf6('0x67')]);return _0x7e026b[_0x3cf6('0x6e')](_0x59ee7b);}})['then'](function(_0x3c3da7){if(_0x3c3da7){_0x100022=_0x3c3da7['length'];if(!_0xd355c2[_0x3cf6('0x3f')]['hasOwnProperty'](_0x3cf6('0x46'))){_0x59ee7b[_0x3cf6('0x30')]=qs[_0x3cf6('0x30')](_0xd355c2[_0x3cf6('0x3f')]['limit']);_0x59ee7b[_0x3cf6('0x2d')]=qs[_0x3cf6('0x2d')](_0xd355c2[_0x3cf6('0x3f')][_0x3cf6('0x2d')]);}return _0x7e026b[_0x3cf6('0x6e')](_0x59ee7b);}})['then'](function(_0x4f27cc){if(_0x4f27cc){return _0x4f27cc?{'count':_0x100022,'rows':_0x4f27cc}:null;}})['then'](respondWithResult(_0xe3f84e,null))[_0x3cf6('0x29')](handleError(_0xe3f84e,null));};exports[_0x3cf6('0x6f')]=function(_0x392d62,_0x3509bd,_0x53cb8f){var _0x449be7=_0x392d62[_0x3cf6('0x59')][_0x3cf6('0x70')];return db[_0x3cf6('0x6d')][_0x3cf6('0x53')]({'where':{'id':_0x449be7},'attributes':['id'],'include':[{'model':db[_0x3cf6('0x71')],'as':'Agents','attributes':['id',_0x3cf6('0x38'),_0x3cf6('0x72'),_0x3cf6('0x73'),_0x3cf6('0x74')],'raw':!![]}]})['then'](function(_0x2375a3){if(_0x2375a3){var _0x4c1b06=_[_0x3cf6('0x75')](_0x2375a3,function(_0x5402fe){var _0x1c8ca0=_0x5402fe[_0x3cf6('0x5d')]({'plain':!![]});return _0x1c8ca0[_0x3cf6('0x76')];});return db[_0x3cf6('0x52')][_0x3cf6('0x57')]({'where':{'id':_0x392d62[_0x3cf6('0x56')]['id']}})['then'](function(_0x1fb61c){return db[_0x3cf6('0x77')][_0x3cf6('0x78')](function(_0x1e3272){return _0x1fb61c[_0x3cf6('0x6f')](_0x449be7,{'transaction':_0x1e3272})[_0x3cf6('0x21')](function(){return BPromise[_0x3cf6('0x79')](_0x4c1b06,function(_0x29743c){return db[_0x3cf6('0x64')][_0x3cf6('0x7a')]({'where':{'UserId':_0x29743c['id'],'ChatQueueId':_0x392d62[_0x3cf6('0x56')]['id']},'transaction':_0x1e3272});});})[_0x3cf6('0x21')](function(){_0x4c1b06['forEach'](function(_0x3a485e){socket[_0x3cf6('0x7b')]('userChatQueue:save',{'UserId':_0x3a485e['id'],'ChatQueueId':_0x1fb61c['id']});});});});});}})[_0x3cf6('0x21')](respondWithStatusCode(_0x3509bd,null))['catch'](handleError(_0x3509bd,null));};exports[_0x3cf6('0x7c')]=function(_0x1a2ca6,_0x185473,_0xa9483e){return db['Team'][_0x3cf6('0x53')]({'where':{'id':_0x1a2ca6['query'][_0x3cf6('0x70')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x3cf6('0x21')](handleEntityNotFound(_0x185473,null))['then'](function(_0x1b4df0){var _0x3fc60d=_[_0x3cf6('0x3b')](_0x1b4df0,'id');var _0x3eb6f7=[];var _0x5063c0=[];var _0x5938db=squel[_0x3cf6('0x7d')]();_0x5938db['field'](_0x3cf6('0x7e'))['from'](_0x3cf6('0x7f'),'tq')[_0x3cf6('0x80')](_0x3cf6('0x81'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x3cf6('0x82'),_0x1a2ca6['params']['id']);for(var _0x38c3e7=0x0;_0x38c3e7<_0x1b4df0[_0x3cf6('0x44')];_0x38c3e7+=0x1){let _0x286047=_0x1b4df0[_0x38c3e7];for(var _0x2e4994=0x0;_0x2e4994<_0x286047[_0x3cf6('0x76')]['length'];_0x2e4994+=0x1){let _0x238818=_0x286047[_0x3cf6('0x76')][_0x2e4994];var _0x4d6d39=_0x5938db[_0x3cf6('0x83')]();_0x4d6d39[_0x3cf6('0x49')](_0x3cf6('0x84'),_0x238818['id']);_0x5063c0[_0x3cf6('0x85')](db[_0x3cf6('0x77')][_0x3cf6('0x3f')](_0x4d6d39['toString'](),{'type':db[_0x3cf6('0x77')][_0x3cf6('0x86')][_0x3cf6('0x87')]})[_0x3cf6('0x21')](function(_0x62bf83){if(_0x62bf83[_0x3cf6('0x44')]===0x1){return _0x238818['id'];}else{var _0x33f3b9=_[_0x3cf6('0x88')](_[_0x3cf6('0x3b')](_0x62bf83,_0x3cf6('0x89')),function(_0x39bb84){return _['includes'](_0x3fc60d,_0x39bb84);});if(_0x33f3b9){return _0x238818['id'];}}}));}}return BPromise[_0x3cf6('0x8a')](_0x5063c0)[_0x3cf6('0x21')](function(_0x168c4a){_0x3eb6f7=_(_0x3eb6f7)[_0x3cf6('0x8b')](_0x168c4a)[_0x3cf6('0x8c')]()[_0x3cf6('0x8d')]();return db['ChatQueue']['find']({'where':{'id':_0x1a2ca6['params']['id']}})[_0x3cf6('0x21')](function(_0x1eba0e){return db['sequelize']['transaction'](function(_0x47535e){return _0x1eba0e[_0x3cf6('0x7c')](_0x1a2ca6[_0x3cf6('0x3f')][_0x3cf6('0x70')],{'transaction':_0x47535e})['then'](function(){if(!_[_0x3cf6('0x8e')](_0x3eb6f7)){return _0x1eba0e[_0x3cf6('0x8f')](_0x3eb6f7,{'transaction':_0x47535e});}})[_0x3cf6('0x21')](function(){_0x3eb6f7[_0x3cf6('0x90')](function(_0x1a4e9a){socket[_0x3cf6('0x7b')](_0x3cf6('0x91'),{'UserId':_0x1a4e9a,'ChatQueueId':_0x1eba0e['id']});});});});});});})['then'](respondWithStatusCode(_0x185473,null))[_0x3cf6('0x29')](handleError(_0x185473,null));};exports['addAgents']=function(_0x176e05,_0x2bb3fe,_0x4f3376){return db[_0x3cf6('0x52')][_0x3cf6('0x57')]({'where':{'id':_0x176e05[_0x3cf6('0x56')]['id']}})[_0x3cf6('0x21')](handleEntityNotFound(_0x2bb3fe,null))['then'](function(_0x36fdda){if(_0x36fdda){return _0x36fdda[_0x3cf6('0x92')](_0x176e05[_0x3cf6('0x59')]['ids'],_[_0x3cf6('0x93')](_0x176e05[_0x3cf6('0x59')],[_0x3cf6('0x70'),'id'])||{})['spread'](function(_0x1bda4d){for(var _0x503c99=0x0;_0x503c99<_0x176e05[_0x3cf6('0x59')][_0x3cf6('0x70')][_0x3cf6('0x44')];_0x503c99+=0x1){socket['emit']('userChatQueue:save',{'UserId':Number(_0x176e05[_0x3cf6('0x59')]['ids'][_0x503c99]),'ChatQueueId':Number(_0x176e05[_0x3cf6('0x56')]['id'])});}return _0x1bda4d;});}})[_0x3cf6('0x21')](respondWithResult(_0x2bb3fe,null))[_0x3cf6('0x29')](handleError(_0x2bb3fe,null));};exports['removeAgents']=function(_0x497ee1,_0xe28864,_0x36a137){return db[_0x3cf6('0x52')]['find']({'where':{'id':_0x497ee1[_0x3cf6('0x56')]['id']}})[_0x3cf6('0x21')](handleEntityNotFound(_0xe28864,null))['then'](function(_0x272194){if(_0x272194){return _0x272194[_0x3cf6('0x8f')](_0x497ee1[_0x3cf6('0x3f')][_0x3cf6('0x70')])[_0x3cf6('0x21')](function(){if(_[_0x3cf6('0x94')](_0x497ee1['query']['ids'])){for(var _0x4d239d=0x0;_0x4d239d<_0x497ee1[_0x3cf6('0x3f')]['ids'][_0x3cf6('0x44')];_0x4d239d+=0x1){socket[_0x3cf6('0x7b')](_0x3cf6('0x91'),{'UserId':Number(_0x497ee1['query'][_0x3cf6('0x70')][_0x4d239d]),'ChatQueueId':Number(_0x497ee1[_0x3cf6('0x56')]['id'])});}}else{socket[_0x3cf6('0x7b')]('userChatQueue:remove',{'UserId':Number(_0x497ee1['query'][_0x3cf6('0x70')]),'ChatQueueId':Number(_0x497ee1[_0x3cf6('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0xe28864,null))[_0x3cf6('0x29')](handleError(_0xe28864,null));};exports[_0x3cf6('0x95')]=function(_0x5e5edb,_0x13debb,_0x3be41f){var _0xb675eb={};var _0x14a0dd={};var _0x15f4ae;var _0x579db3;return db[_0x3cf6('0x52')][_0x3cf6('0x63')]({'where':{'id':_0x5e5edb[_0x3cf6('0x56')]['id']}})[_0x3cf6('0x21')](handleEntityNotFound(_0x13debb,null))[_0x3cf6('0x21')](function(_0x1acd62){if(_0x1acd62){_0x15f4ae=_0x1acd62;_0x14a0dd[_0x3cf6('0x3e')]=_[_0x3cf6('0x40')](db[_0x3cf6('0x71')]['rawAttributes']);_0x14a0dd['query']=_[_0x3cf6('0x40')](_0x5e5edb[_0x3cf6('0x3f')]);_0x14a0dd[_0x3cf6('0x4a')]=_[_0x3cf6('0x41')](_0x14a0dd['model'],_0x14a0dd[_0x3cf6('0x3f')]);_0xb675eb[_0x3cf6('0x43')]=_[_0x3cf6('0x41')](_0x14a0dd['model'],qs[_0x3cf6('0x42')](_0x5e5edb[_0x3cf6('0x3f')]['fields']));_0xb675eb[_0x3cf6('0x43')]=_0xb675eb[_0x3cf6('0x43')][_0x3cf6('0x44')]?_0xb675eb[_0x3cf6('0x43')]:_0x14a0dd['model'];_0xb675eb[_0x3cf6('0x47')]=qs[_0x3cf6('0x48')](_0x5e5edb[_0x3cf6('0x3f')][_0x3cf6('0x48')]);_0xb675eb[_0x3cf6('0x49')]=qs['filters'](_[_0x3cf6('0x4b')](_0x5e5edb[_0x3cf6('0x3f')],_0x14a0dd[_0x3cf6('0x4a')]));if(_0x5e5edb[_0x3cf6('0x3f')][_0x3cf6('0x4f')]){_0xb675eb[_0x3cf6('0x49')]=_[_0x3cf6('0x4c')](_0xb675eb[_0x3cf6('0x49')],{'$or':_[_0x3cf6('0x3b')](_0xb675eb['attributes'],function(_0x973f8d){var _0x17f0f0={};_0x17f0f0[_0x973f8d]={'$like':'%'+_0x5e5edb[_0x3cf6('0x3f')]['filter']+'%'};return _0x17f0f0;})});}_0xb675eb=_[_0x3cf6('0x4c')]({},_0xb675eb,_0x5e5edb[_0x3cf6('0x67')]);return _0x15f4ae[_0x3cf6('0x95')](_0xb675eb);}})[_0x3cf6('0x21')](function(_0x2fd03c){if(_0x2fd03c){_0x579db3=_0x2fd03c[_0x3cf6('0x44')];if(!_0x5e5edb[_0x3cf6('0x3f')][_0x3cf6('0x45')](_0x3cf6('0x46'))){_0xb675eb[_0x3cf6('0x30')]=qs['limit'](_0x5e5edb['query'][_0x3cf6('0x30')]);_0xb675eb[_0x3cf6('0x2d')]=qs[_0x3cf6('0x2d')](_0x5e5edb[_0x3cf6('0x3f')][_0x3cf6('0x2d')]);}return _0x15f4ae[_0x3cf6('0x95')](_0xb675eb);}})[_0x3cf6('0x21')](function(_0xe5e77a){if(_0xe5e77a){return _0xe5e77a?{'count':_0x579db3,'rows':_0xe5e77a}:null;}})[_0x3cf6('0x21')](respondWithResult(_0x13debb,null))[_0x3cf6('0x29')](handleError(_0x13debb,null));};
\ No newline at end of file
+var _0x5d3d=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','ChatQueues','UserProfileResource','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','filters','filter','VIRTUAL','options','includeAll','include','rows','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserChatQueue','order','sort','ChatQueueId','merge','findAll','findAndCountAll','UserId','chatPause','updatedAt','createdAt','SIP','getTeams','findOne','Team','pick','ids','online','interface','flatMap','Agents','transaction','findOrCreate','forEach','userChatQueue:save','User','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','includes','all','union','compact','value','removeTeams','removeAgents','userChatQueue:remove','addAgents','omit','spread','emit','getAgents','eml-format','request-promise','moment'];(function(_0x31c730,_0x2f14b3){var _0x309cf0=function(_0x2570ea){while(--_0x2570ea){_0x31c730['push'](_0x31c730['shift']());}};_0x309cf0(++_0x2f14b3);}(_0x5d3d,0x1c8));var _0xd5d3=function(_0x2c65e8,_0x12fe05){_0x2c65e8=_0x2c65e8-0x0;var _0x10b492=_0x5d3d[_0x2c65e8];return _0x10b492;};'use strict';var emlformat=require(_0xd5d3('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd5d3('0x1'));var moment=require(_0xd5d3('0x2'));var BPromise=require(_0xd5d3('0x3'));var Mustache=require(_0xd5d3('0x4'));var util=require(_0xd5d3('0x5'));var path=require(_0xd5d3('0x6'));var sox=require(_0xd5d3('0x7'));var csv=require(_0xd5d3('0x8'));var ejs=require(_0xd5d3('0x9'));var fs=require('fs');var fs_extra=require(_0xd5d3('0xa'));var _=require(_0xd5d3('0xb'));var squel=require(_0xd5d3('0xc'));var crypto=require(_0xd5d3('0xd'));var jsforce=require(_0xd5d3('0xe'));var deskjs=require(_0xd5d3('0xf'));var toCsv=require(_0xd5d3('0x8'));var querystring=require(_0xd5d3('0x10'));var Papa=require(_0xd5d3('0x11'));var Redis=require('ioredis');var authService=require(_0xd5d3('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd5d3('0x13'));var hardwareService=require(_0xd5d3('0x14'));var logger=require(_0xd5d3('0x15'))('api');var utils=require(_0xd5d3('0x16'));var config=require(_0xd5d3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd5d3('0x18'))['db'];config[_0xd5d3('0x19')]=_['defaults'](config[_0xd5d3('0x19')],{'host':_0xd5d3('0x1a'),'port':0x18eb});var socket=require(_0xd5d3('0x1b'))(new Redis(config[_0xd5d3('0x19')]));require('./chatQueue.socket')[_0xd5d3('0x1c')](socket);var jayson=require(_0xd5d3('0x1d'));var client=jayson[_0xd5d3('0x1e')][_0xd5d3('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x3d8cc5,_0x1fbb61,_0x138aef,_0x5eff01){return new BPromise(function(_0x4bc609,_0x13cd0c){var _0x3d6761=_0x5eff01||client;return _0x3d6761[_0xd5d3('0x20')](_0x3d8cc5,_0x138aef)['then'](function(_0x32c138){logger[_0xd5d3('0x21')](_0xd5d3('0x22'),_0x1fbb61,_0xd5d3('0x23'));logger['debug'](_0xd5d3('0x24'),_0x1fbb61,_0xd5d3('0x23'),JSON['stringify'](_0x32c138));if(_0x32c138[_0xd5d3('0x25')]){if(_0x32c138[_0xd5d3('0x25')][_0xd5d3('0x26')]===0x1f4){logger[_0xd5d3('0x25')]('ChatQueue,\x20%s,\x20%s',_0x1fbb61,_0x32c138[_0xd5d3('0x25')][_0xd5d3('0x27')]);return _0x13cd0c(_0x32c138['error'][_0xd5d3('0x27')]);}logger[_0xd5d3('0x25')](_0xd5d3('0x22'),_0x1fbb61,_0x32c138[_0xd5d3('0x25')][_0xd5d3('0x27')]);return _0x4bc609(_0x32c138[_0xd5d3('0x25')][_0xd5d3('0x27')]);}else{logger[_0xd5d3('0x21')](_0xd5d3('0x22'),_0x1fbb61,_0xd5d3('0x23'));_0x4bc609(_0x32c138['result']['message']);}})[_0xd5d3('0x28')](function(_0x55ef92){logger[_0xd5d3('0x25')](_0xd5d3('0x22'),_0x1fbb61,_0x55ef92);_0x13cd0c(_0x55ef92);});});}function respondWithStatusCode(_0x405241,_0x435c20){_0x435c20=_0x435c20||0xcc;return function(_0x4a69e9){if(_0x4a69e9){return _0x405241[_0xd5d3('0x29')](_0x435c20);}return _0x405241['status'](_0x435c20)[_0xd5d3('0x2a')]();};}function respondWithResult(_0x1ac4a7,_0x34f5cc){_0x34f5cc=_0x34f5cc||0xc8;return function(_0x61c48d){if(_0x61c48d){return _0x1ac4a7[_0xd5d3('0x2b')](_0x34f5cc)[_0xd5d3('0x2c')](_0x61c48d);}};}function respondWithFilteredResult(_0xf04629,_0x153f0d){return function(_0x33b3a4){if(_0x33b3a4){var _0x5d6058=typeof _0x153f0d[_0xd5d3('0x2d')]===_0xd5d3('0x2e')&&typeof _0x153f0d[_0xd5d3('0x2f')]===_0xd5d3('0x2e');var _0x2e7dfb=_0x33b3a4[_0xd5d3('0x30')];var _0x280150=_0x5d6058?0x0:_0x153f0d[_0xd5d3('0x2d')];var _0x46039e=_0x5d6058?_0x33b3a4[_0xd5d3('0x30')]:_0x153f0d[_0xd5d3('0x2d')]+_0x153f0d['limit'];var _0x15cf1b;if(_0x46039e>=_0x2e7dfb){_0x46039e=_0x2e7dfb;_0x15cf1b=0xc8;}else{_0x15cf1b=0xce;}_0xf04629[_0xd5d3('0x2b')](_0x15cf1b);return _0xf04629['set'](_0xd5d3('0x31'),_0x280150+'-'+_0x46039e+'/'+_0x2e7dfb)[_0xd5d3('0x2c')](_0x33b3a4);}return null;};}function patchUpdates(_0x2d476c){return function(_0x2afbdb){try{jsonpatch['apply'](_0x2afbdb,_0x2d476c,!![]);}catch(_0x34590a){return BPromise[_0xd5d3('0x32')](_0x34590a);}return _0x2afbdb[_0xd5d3('0x33')]();};}function saveUpdates(_0x3bab0c,_0x2bf0e5){return function(_0x30c97c){if(_0x30c97c){return _0x30c97c[_0xd5d3('0x34')](_0x3bab0c)[_0xd5d3('0x35')](function(_0x4b0843){return _0x4b0843;});}return null;};}function removeEntity(_0x47ddbc,_0x38efec){return function(_0xb84608){if(_0xb84608){return _0xb84608[_0xd5d3('0x36')]()[_0xd5d3('0x35')](function(){var _0x1abf90=_0xb84608['get']({'plain':!![]});var _0x1e2f1f=_0xd5d3('0x37');return db[_0xd5d3('0x38')][_0xd5d3('0x36')]({'where':{'type':_0x1e2f1f,'resourceId':_0x1abf90['id']}})[_0xd5d3('0x35')](function(){return _0xb84608;});})[_0xd5d3('0x35')](function(){_0x47ddbc[_0xd5d3('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7eedf1,_0x1cace9){return function(_0x2fc60f){if(!_0x2fc60f){_0x7eedf1['sendStatus'](0x194);}return _0x2fc60f;};}function handleError(_0x41d67d,_0x1f4634){_0x1f4634=_0x1f4634||0x1f4;return function(_0x5a4e4d){logger[_0xd5d3('0x25')](_0x5a4e4d[_0xd5d3('0x39')]);if(_0x5a4e4d[_0xd5d3('0x3a')]){delete _0x5a4e4d['name'];}_0x41d67d['status'](_0x1f4634)[_0xd5d3('0x3b')](_0x5a4e4d);};}exports[_0xd5d3('0x3c')]=function(_0x39b247,_0x227c46){var _0x278641={},_0x26819a={},_0x2914f5={'count':0x0,'rows':[]};var _0x37ff7a=_[_0xd5d3('0x3d')](db[_0xd5d3('0x3e')][_0xd5d3('0x3f')],function(_0x8a331e){return{'name':_0x8a331e[_0xd5d3('0x40')],'type':_0x8a331e[_0xd5d3('0x41')][_0xd5d3('0x42')]};});_0x26819a[_0xd5d3('0x43')]=_[_0xd5d3('0x3d')](_0x37ff7a,_0xd5d3('0x3a'));_0x26819a[_0xd5d3('0x44')]=_[_0xd5d3('0x45')](_0x39b247[_0xd5d3('0x44')]);_0x26819a['filters']=_[_0xd5d3('0x46')](_0x26819a[_0xd5d3('0x43')],_0x26819a[_0xd5d3('0x44')]);_0x278641[_0xd5d3('0x47')]=_['intersection'](_0x26819a[_0xd5d3('0x43')],qs[_0xd5d3('0x48')](_0x39b247[_0xd5d3('0x44')][_0xd5d3('0x48')]));_0x278641[_0xd5d3('0x47')]=_0x278641[_0xd5d3('0x47')][_0xd5d3('0x49')]?_0x278641[_0xd5d3('0x47')]:_0x26819a[_0xd5d3('0x43')];if(!_0x39b247[_0xd5d3('0x44')][_0xd5d3('0x4a')](_0xd5d3('0x4b'))){_0x278641[_0xd5d3('0x2f')]=qs[_0xd5d3('0x2f')](_0x39b247[_0xd5d3('0x44')][_0xd5d3('0x2f')]);_0x278641[_0xd5d3('0x2d')]=qs[_0xd5d3('0x2d')](_0x39b247['query'][_0xd5d3('0x2d')]);}_0x278641['order']=qs['sort'](_0x39b247[_0xd5d3('0x44')]['sort']);_0x278641[_0xd5d3('0x4c')]=qs[_0xd5d3('0x4d')](_['pick'](_0x39b247[_0xd5d3('0x44')],_0x26819a[_0xd5d3('0x4d')]),_0x37ff7a);if(_0x39b247[_0xd5d3('0x44')][_0xd5d3('0x4e')]){_0x278641[_0xd5d3('0x4c')]=_['merge'](_0x278641['where'],{'$or':_[_0xd5d3('0x3d')](_0x37ff7a,function(_0x5c8bb5){if(_0x5c8bb5[_0xd5d3('0x41')]!==_0xd5d3('0x4f')){var _0x1469dd={};_0x1469dd[_0x5c8bb5[_0xd5d3('0x3a')]]={'$like':'%'+_0x39b247[_0xd5d3('0x44')]['filter']+'%'};return _0x1469dd;}})});}_0x278641=_['merge']({},_0x278641,_0x39b247[_0xd5d3('0x50')]);var _0x4b28bc={'where':_0x278641[_0xd5d3('0x4c')]};return db['ChatQueue'][_0xd5d3('0x30')](_0x4b28bc)['then'](function(_0x2c6603){_0x2914f5['count']=_0x2c6603;if(_0x39b247[_0xd5d3('0x44')][_0xd5d3('0x51')]){_0x278641[_0xd5d3('0x52')]=[{'all':!![]}];}return db[_0xd5d3('0x3e')]['findAll'](_0x278641);})[_0xd5d3('0x35')](function(_0x4db28){_0x2914f5[_0xd5d3('0x53')]=_0x4db28;return _0x2914f5;})[_0xd5d3('0x35')](respondWithFilteredResult(_0x227c46,_0x278641))[_0xd5d3('0x28')](handleError(_0x227c46,null));};exports[_0xd5d3('0x54')]=function(_0x174cba,_0x336244){var _0x4a1f6a={'raw':!![],'where':{'id':_0x174cba[_0xd5d3('0x55')]['id']}},_0x34586b={};_0x34586b[_0xd5d3('0x43')]=_[_0xd5d3('0x45')](db[_0xd5d3('0x3e')][_0xd5d3('0x3f')]);_0x34586b[_0xd5d3('0x44')]=_['keys'](_0x174cba['query']);_0x34586b['filters']=_[_0xd5d3('0x46')](_0x34586b[_0xd5d3('0x43')],_0x34586b[_0xd5d3('0x44')]);_0x4a1f6a[_0xd5d3('0x47')]=_[_0xd5d3('0x46')](_0x34586b[_0xd5d3('0x43')],qs[_0xd5d3('0x48')](_0x174cba[_0xd5d3('0x44')]['fields']));_0x4a1f6a[_0xd5d3('0x47')]=_0x4a1f6a[_0xd5d3('0x47')][_0xd5d3('0x49')]?_0x4a1f6a['attributes']:_0x34586b[_0xd5d3('0x43')];if(_0x174cba[_0xd5d3('0x44')][_0xd5d3('0x51')]){_0x4a1f6a[_0xd5d3('0x52')]=[{'all':!![]}];}_0x4a1f6a=_['merge']({},_0x4a1f6a,_0x174cba[_0xd5d3('0x50')]);return db['ChatQueue']['find'](_0x4a1f6a)[_0xd5d3('0x35')](handleEntityNotFound(_0x336244,null))[_0xd5d3('0x35')](respondWithResult(_0x336244,null))['catch'](handleError(_0x336244,null));};exports['create']=function(_0x207441,_0x4ed539){return db[_0xd5d3('0x3e')][_0xd5d3('0x56')](_0x207441[_0xd5d3('0x57')],{})[_0xd5d3('0x35')](function(_0x19d4f7){var _0x154e0a=_0x207441[_0xd5d3('0x58')]['get']({'plain':!![]});if(!_0x154e0a)throw new Error(_0xd5d3('0x59'));if(_0x154e0a[_0xd5d3('0x5a')]===_0xd5d3('0x58')){var _0x5a5b61=_0x19d4f7[_0xd5d3('0x5b')]({'plain':!![]});var _0x4b657f=_0xd5d3('0x37');return db[_0xd5d3('0x5c')][_0xd5d3('0x5d')]({'where':{'name':_0x4b657f,'userProfileId':_0x154e0a[_0xd5d3('0x5e')]},'raw':!![]})[_0xd5d3('0x35')](function(_0x4cc39f){if(_0x4cc39f&&_0x4cc39f[_0xd5d3('0x5f')]===0x0){return db[_0xd5d3('0x38')][_0xd5d3('0x56')]({'name':_0x5a5b61[_0xd5d3('0x3a')],'resourceId':_0x5a5b61['id'],'type':_0x4cc39f[_0xd5d3('0x3a')],'sectionId':_0x4cc39f['id']},{})['then'](function(){return _0x19d4f7;});}else{return _0x19d4f7;}})[_0xd5d3('0x28')](function(_0x321486){logger[_0xd5d3('0x25')](_0xd5d3('0x60'),_0x321486);throw _0x321486;});}return _0x19d4f7;})[_0xd5d3('0x35')](respondWithResult(_0x4ed539,0xc9))[_0xd5d3('0x28')](handleError(_0x4ed539,null));};exports[_0xd5d3('0x34')]=function(_0x40ed7c,_0x4dad50){if(_0x40ed7c['body']['id']){delete _0x40ed7c[_0xd5d3('0x57')]['id'];}return db[_0xd5d3('0x3e')][_0xd5d3('0x5d')]({'where':{'id':_0x40ed7c[_0xd5d3('0x55')]['id']}})[_0xd5d3('0x35')](handleEntityNotFound(_0x4dad50,null))[_0xd5d3('0x35')](saveUpdates(_0x40ed7c[_0xd5d3('0x57')],null))[_0xd5d3('0x35')](respondWithResult(_0x4dad50,null))['catch'](handleError(_0x4dad50,null));};exports[_0xd5d3('0x36')]=function(_0x65ac77,_0x49badf){return db['ChatQueue'][_0xd5d3('0x5d')]({'where':{'id':_0x65ac77[_0xd5d3('0x55')]['id']}})['then'](handleEntityNotFound(_0x49badf,null))['then'](removeEntity(_0x49badf,null))['catch'](handleError(_0x49badf,null));};exports[_0xd5d3('0x61')]=function(_0x4a64a8,_0x3b0f1d){return db[_0xd5d3('0x3e')][_0xd5d3('0x61')]()[_0xd5d3('0x35')](respondWithResult(_0x3b0f1d,null))[_0xd5d3('0x28')](handleError(_0x3b0f1d,null));};exports[_0xd5d3('0x62')]=function(_0x497032,_0x3e2e02,_0x27f642){var _0x28daa9={'raw':!![],'where':{}},_0x203f8d={},_0x30c363;return db['ChatQueue']['findOne']({'where':{'id':_0x497032[_0xd5d3('0x55')]['id']}})[_0xd5d3('0x35')](handleEntityNotFound(_0x3e2e02,null))['then'](function(_0x4db74a){if(_0x4db74a){_0x30c363=_0x4db74a[_0xd5d3('0x5b')]({'plain':!![]});_0x203f8d[_0xd5d3('0x43')]=_[_0xd5d3('0x45')](db[_0xd5d3('0x63')][_0xd5d3('0x3f')]);_0x203f8d[_0xd5d3('0x44')]=_[_0xd5d3('0x45')](_0x497032[_0xd5d3('0x44')]);_0x203f8d[_0xd5d3('0x4d')]=_[_0xd5d3('0x46')](_0x203f8d[_0xd5d3('0x43')],_0x203f8d[_0xd5d3('0x44')]);_0x28daa9[_0xd5d3('0x47')]=_[_0xd5d3('0x46')](_0x203f8d[_0xd5d3('0x43')],qs['fields'](_0x497032[_0xd5d3('0x44')][_0xd5d3('0x48')]));_0x28daa9[_0xd5d3('0x47')]=_0x28daa9[_0xd5d3('0x47')][_0xd5d3('0x49')]?_0x28daa9[_0xd5d3('0x47')]:_0x203f8d[_0xd5d3('0x43')];if(!_0x497032[_0xd5d3('0x44')]['hasOwnProperty'](_0xd5d3('0x4b'))){_0x28daa9[_0xd5d3('0x2f')]=qs[_0xd5d3('0x2f')](_0x497032[_0xd5d3('0x44')][_0xd5d3('0x2f')]);_0x28daa9[_0xd5d3('0x2d')]=qs[_0xd5d3('0x2d')](_0x497032['query'][_0xd5d3('0x2d')]);}_0x28daa9[_0xd5d3('0x64')]=qs[_0xd5d3('0x65')](_0x497032[_0xd5d3('0x44')][_0xd5d3('0x65')]);_0x28daa9[_0xd5d3('0x4c')]=qs[_0xd5d3('0x4d')](_['pick'](_0x497032['query'],_0x203f8d[_0xd5d3('0x4d')]));_0x28daa9[_0xd5d3('0x4c')][_0xd5d3('0x66')]=_0x4db74a['id'];if(_0x497032[_0xd5d3('0x44')][_0xd5d3('0x4e')]){_0x28daa9['where']=_[_0xd5d3('0x67')](_0x28daa9[_0xd5d3('0x4c')],{'$or':_[_0xd5d3('0x3d')](_0x28daa9['attributes'],function(_0x4e2b85){var _0x280459={};_0x280459[_0x4e2b85]={'$like':'%'+_0x497032[_0xd5d3('0x44')][_0xd5d3('0x4e')]+'%'};return _0x280459;})});}_0x28daa9=_[_0xd5d3('0x67')]({},_0x28daa9,_0x497032[_0xd5d3('0x50')]);return db[_0xd5d3('0x63')][_0xd5d3('0x68')](_0x28daa9);}})['then'](function(_0xe25db2){if(_0xe25db2){return db['User'][_0xd5d3('0x69')]({'where':{'id':_[_0xd5d3('0x3d')](_0xe25db2,_0xd5d3('0x6a')),'role':'agent'},'attributes':['id','name',_0xd5d3('0x6b'),_0xd5d3('0x6c'),_0xd5d3('0x6d')]});}})[_0xd5d3('0x35')](function(_0x3dbc52){if(_0x3dbc52){return{'count':_0x3dbc52[_0xd5d3('0x30')],'rows':_[_0xd5d3('0x3d')](_0x3dbc52[_0xd5d3('0x53')],function(_0xa1495e){return{'membername':_0xa1495e[_0xd5d3('0x3a')],'UserId':_0xa1495e['id'],'queue_name':_0x30c363[_0xd5d3('0x3a')],'ChatQueueId':_0x30c363['id'],'interface':util['format']('%s/%s',_0xd5d3('0x6e'),_0xa1495e[_0xd5d3('0x3a')]),'penalty':0x0,'paused':_0xa1495e[_0xd5d3('0x6b')],'createdAt':_0xa1495e[_0xd5d3('0x6d')],'updatedAt':_0xa1495e[_0xd5d3('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x3e2e02,_0x28daa9))['catch'](handleError(_0x3e2e02,null));};exports[_0xd5d3('0x6f')]=function(_0x220848,_0x5e13c8,_0x30fcf5){var _0x38035a={};var _0x1c611d={};var _0x35d98b;var _0x3ebbe5;return db[_0xd5d3('0x3e')][_0xd5d3('0x70')]({'where':{'id':_0x220848[_0xd5d3('0x55')]['id']}})[_0xd5d3('0x35')](handleEntityNotFound(_0x5e13c8,null))[_0xd5d3('0x35')](function(_0x5a0159){if(_0x5a0159){_0x35d98b=_0x5a0159;_0x1c611d[_0xd5d3('0x43')]=_[_0xd5d3('0x45')](db[_0xd5d3('0x71')]['rawAttributes']);_0x1c611d[_0xd5d3('0x44')]=_[_0xd5d3('0x45')](_0x220848[_0xd5d3('0x44')]);_0x1c611d['filters']=_['intersection'](_0x1c611d['model'],_0x1c611d[_0xd5d3('0x44')]);_0x38035a[_0xd5d3('0x47')]=_['intersection'](_0x1c611d[_0xd5d3('0x43')],qs[_0xd5d3('0x48')](_0x220848[_0xd5d3('0x44')][_0xd5d3('0x48')]));_0x38035a[_0xd5d3('0x47')]=_0x38035a[_0xd5d3('0x47')]['length']?_0x38035a[_0xd5d3('0x47')]:_0x1c611d['model'];_0x38035a[_0xd5d3('0x64')]=qs[_0xd5d3('0x65')](_0x220848[_0xd5d3('0x44')][_0xd5d3('0x65')]);_0x38035a['where']=qs['filters'](_[_0xd5d3('0x72')](_0x220848[_0xd5d3('0x44')],_0x1c611d[_0xd5d3('0x4d')]));if(_0x220848[_0xd5d3('0x44')][_0xd5d3('0x4e')]){_0x38035a['where']=_['merge'](_0x38035a[_0xd5d3('0x4c')],{'$or':_[_0xd5d3('0x3d')](_0x38035a[_0xd5d3('0x47')],function(_0x31ecb2){var _0x1d6852={};_0x1d6852[_0x31ecb2]={'$like':'%'+_0x220848['query'][_0xd5d3('0x4e')]+'%'};return _0x1d6852;})});}_0x38035a=_['merge']({},_0x38035a,_0x220848[_0xd5d3('0x50')]);return _0x35d98b[_0xd5d3('0x6f')](_0x38035a);}})['then'](function(_0x26558d){if(_0x26558d){_0x3ebbe5=_0x26558d[_0xd5d3('0x49')];if(!_0x220848[_0xd5d3('0x44')][_0xd5d3('0x4a')](_0xd5d3('0x4b'))){_0x38035a[_0xd5d3('0x2f')]=qs[_0xd5d3('0x2f')](_0x220848[_0xd5d3('0x44')][_0xd5d3('0x2f')]);_0x38035a[_0xd5d3('0x2d')]=qs[_0xd5d3('0x2d')](_0x220848[_0xd5d3('0x44')][_0xd5d3('0x2d')]);}return _0x35d98b[_0xd5d3('0x6f')](_0x38035a);}})[_0xd5d3('0x35')](function(_0x177b2f){if(_0x177b2f){return _0x177b2f?{'count':_0x3ebbe5,'rows':_0x177b2f}:null;}})['then'](respondWithResult(_0x5e13c8,null))[_0xd5d3('0x28')](handleError(_0x5e13c8,null));};exports['addTeams']=function(_0x147cc3,_0x8b353b,_0x4126c1){var _0x325d1e=_0x147cc3[_0xd5d3('0x57')][_0xd5d3('0x73')];return db['Team'][_0xd5d3('0x68')]({'where':{'id':_0x325d1e},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0xd5d3('0x74'),'voicePause',_0xd5d3('0x75')],'raw':!![]}]})[_0xd5d3('0x35')](function(_0x4c41f9){if(_0x4c41f9){var _0x4b8ab0=_[_0xd5d3('0x76')](_0x4c41f9,function(_0x58828c){var _0x3d5142=_0x58828c[_0xd5d3('0x5b')]({'plain':!![]});return _0x3d5142[_0xd5d3('0x77')];});return db[_0xd5d3('0x3e')][_0xd5d3('0x5d')]({'where':{'id':_0x147cc3[_0xd5d3('0x55')]['id']}})[_0xd5d3('0x35')](function(_0x27a29d){return db['sequelize'][_0xd5d3('0x78')](function(_0xdf5a42){return _0x27a29d['addTeams'](_0x325d1e,{'transaction':_0xdf5a42})[_0xd5d3('0x35')](function(){return BPromise['each'](_0x4b8ab0,function(_0x547745){return db[_0xd5d3('0x63')][_0xd5d3('0x79')]({'where':{'UserId':_0x547745['id'],'ChatQueueId':_0x147cc3[_0xd5d3('0x55')]['id']},'transaction':_0xdf5a42});});})[_0xd5d3('0x35')](function(){_0x4b8ab0[_0xd5d3('0x7a')](function(_0x51f83c){socket['emit'](_0xd5d3('0x7b'),{'UserId':_0x51f83c['id'],'ChatQueueId':_0x27a29d['id']});});});});});}})['then'](respondWithStatusCode(_0x8b353b,null))[_0xd5d3('0x28')](handleError(_0x8b353b,null));};exports['removeTeams']=function(_0x3ce534,_0xeff383,_0x57f069){return db[_0xd5d3('0x71')][_0xd5d3('0x68')]({'where':{'id':_0x3ce534[_0xd5d3('0x44')][_0xd5d3('0x73')]},'attributes':['id'],'include':[{'model':db[_0xd5d3('0x7c')],'as':_0xd5d3('0x77'),'attributes':['id'],'raw':!![]}]})[_0xd5d3('0x35')](handleEntityNotFound(_0xeff383,null))[_0xd5d3('0x35')](function(_0x27c635){var _0x70ac9e=_['map'](_0x27c635,'id');var _0x67aef3=[];var _0x4788b0=[];var _0x24c086=squel[_0xd5d3('0x7d')]();_0x24c086[_0xd5d3('0x7e')](_0xd5d3('0x7f'))[_0xd5d3('0x80')](_0xd5d3('0x81'),'tq')[_0xd5d3('0x82')](_0xd5d3('0x83'),'ut',_0xd5d3('0x84'))[_0xd5d3('0x4c')](_0xd5d3('0x85'),_0x3ce534['params']['id']);for(var _0x4b4bc2=0x0;_0x4b4bc2<_0x27c635['length'];_0x4b4bc2+=0x1){let _0x406d4b=_0x27c635[_0x4b4bc2];for(var _0x1a2b8a=0x0;_0x1a2b8a<_0x406d4b['Agents'][_0xd5d3('0x49')];_0x1a2b8a+=0x1){let _0x338090=_0x406d4b[_0xd5d3('0x77')][_0x1a2b8a];var _0x52e731=_0x24c086['clone']();_0x52e731[_0xd5d3('0x4c')](_0xd5d3('0x86'),_0x338090['id']);_0x4788b0[_0xd5d3('0x87')](db[_0xd5d3('0x88')][_0xd5d3('0x44')](_0x52e731['toString'](),{'type':db[_0xd5d3('0x88')][_0xd5d3('0x89')][_0xd5d3('0x8a')]})[_0xd5d3('0x35')](function(_0x519ba7){if(_0x519ba7[_0xd5d3('0x49')]===0x1){return _0x338090['id'];}else{var _0x34b71d=_[_0xd5d3('0x8b')](_['map'](_0x519ba7,'TeamId'),function(_0xa99d67){return _[_0xd5d3('0x8c')](_0x70ac9e,_0xa99d67);});if(_0x34b71d){return _0x338090['id'];}}}));}}return BPromise[_0xd5d3('0x8d')](_0x4788b0)['then'](function(_0x284e90){_0x67aef3=_(_0x67aef3)[_0xd5d3('0x8e')](_0x284e90)[_0xd5d3('0x8f')]()[_0xd5d3('0x90')]();return db[_0xd5d3('0x3e')]['find']({'where':{'id':_0x3ce534['params']['id']}})[_0xd5d3('0x35')](function(_0x1b662c){return db[_0xd5d3('0x88')]['transaction'](function(_0x5a3438){return _0x1b662c[_0xd5d3('0x91')](_0x3ce534['query']['ids'],{'transaction':_0x5a3438})[_0xd5d3('0x35')](function(){if(!_['isEmpty'](_0x67aef3)){return _0x1b662c[_0xd5d3('0x92')](_0x67aef3,{'transaction':_0x5a3438});}})[_0xd5d3('0x35')](function(){_0x67aef3[_0xd5d3('0x7a')](function(_0x3f4105){socket['emit'](_0xd5d3('0x93'),{'UserId':_0x3f4105,'ChatQueueId':_0x1b662c['id']});});});});});});})[_0xd5d3('0x35')](respondWithStatusCode(_0xeff383,null))[_0xd5d3('0x28')](handleError(_0xeff383,null));};exports[_0xd5d3('0x94')]=function(_0x2a1ff6,_0x1171dd,_0x5c90cf){return db['ChatQueue']['find']({'where':{'id':_0x2a1ff6[_0xd5d3('0x55')]['id']}})[_0xd5d3('0x35')](handleEntityNotFound(_0x1171dd,null))['then'](function(_0x45e75e){if(_0x45e75e){return _0x45e75e[_0xd5d3('0x94')](_0x2a1ff6[_0xd5d3('0x57')][_0xd5d3('0x73')],_[_0xd5d3('0x95')](_0x2a1ff6[_0xd5d3('0x57')],[_0xd5d3('0x73'),'id'])||{})[_0xd5d3('0x96')](function(_0xe04f00){for(var _0x801360=0x0;_0x801360<_0x2a1ff6[_0xd5d3('0x57')]['ids']['length'];_0x801360+=0x1){socket['emit']('userChatQueue:save',{'UserId':Number(_0x2a1ff6[_0xd5d3('0x57')]['ids'][_0x801360]),'ChatQueueId':Number(_0x2a1ff6[_0xd5d3('0x55')]['id'])});}return _0xe04f00;});}})['then'](respondWithResult(_0x1171dd,null))[_0xd5d3('0x28')](handleError(_0x1171dd,null));};exports[_0xd5d3('0x92')]=function(_0x457abc,_0x3afed3,_0x12011c){return db[_0xd5d3('0x3e')]['find']({'where':{'id':_0x457abc[_0xd5d3('0x55')]['id']}})['then'](handleEntityNotFound(_0x3afed3,null))[_0xd5d3('0x35')](function(_0xad309d){if(_0xad309d){return _0xad309d['removeAgents'](_0x457abc[_0xd5d3('0x44')][_0xd5d3('0x73')])[_0xd5d3('0x35')](function(){if(_['isArray'](_0x457abc[_0xd5d3('0x44')]['ids'])){for(var _0x3e2290=0x0;_0x3e2290<_0x457abc[_0xd5d3('0x44')][_0xd5d3('0x73')][_0xd5d3('0x49')];_0x3e2290+=0x1){socket[_0xd5d3('0x97')](_0xd5d3('0x93'),{'UserId':Number(_0x457abc[_0xd5d3('0x44')][_0xd5d3('0x73')][_0x3e2290]),'ChatQueueId':Number(_0x457abc[_0xd5d3('0x55')]['id'])});}}else{socket[_0xd5d3('0x97')](_0xd5d3('0x93'),{'UserId':Number(_0x457abc[_0xd5d3('0x44')][_0xd5d3('0x73')]),'ChatQueueId':Number(_0x457abc[_0xd5d3('0x55')]['id'])});}});}})[_0xd5d3('0x35')](respondWithStatusCode(_0x3afed3,null))[_0xd5d3('0x28')](handleError(_0x3afed3,null));};exports[_0xd5d3('0x98')]=function(_0x4d8f80,_0x3aed07,_0xf7e8c5){var _0x546010={};var _0x4ed4c1={};var _0x352928;var _0x2d7438;return db[_0xd5d3('0x3e')][_0xd5d3('0x70')]({'where':{'id':_0x4d8f80[_0xd5d3('0x55')]['id']}})[_0xd5d3('0x35')](handleEntityNotFound(_0x3aed07,null))['then'](function(_0x3831e4){if(_0x3831e4){_0x352928=_0x3831e4;_0x4ed4c1[_0xd5d3('0x43')]=_[_0xd5d3('0x45')](db['User'][_0xd5d3('0x3f')]);_0x4ed4c1[_0xd5d3('0x44')]=_[_0xd5d3('0x45')](_0x4d8f80['query']);_0x4ed4c1[_0xd5d3('0x4d')]=_['intersection'](_0x4ed4c1[_0xd5d3('0x43')],_0x4ed4c1[_0xd5d3('0x44')]);_0x546010['attributes']=_['intersection'](_0x4ed4c1['model'],qs[_0xd5d3('0x48')](_0x4d8f80[_0xd5d3('0x44')]['fields']));_0x546010['attributes']=_0x546010['attributes'][_0xd5d3('0x49')]?_0x546010[_0xd5d3('0x47')]:_0x4ed4c1[_0xd5d3('0x43')];_0x546010[_0xd5d3('0x64')]=qs[_0xd5d3('0x65')](_0x4d8f80['query'][_0xd5d3('0x65')]);_0x546010['where']=qs[_0xd5d3('0x4d')](_['pick'](_0x4d8f80[_0xd5d3('0x44')],_0x4ed4c1[_0xd5d3('0x4d')]));if(_0x4d8f80[_0xd5d3('0x44')][_0xd5d3('0x4e')]){_0x546010['where']=_['merge'](_0x546010[_0xd5d3('0x4c')],{'$or':_[_0xd5d3('0x3d')](_0x546010[_0xd5d3('0x47')],function(_0x2a4912){var _0x47082d={};_0x47082d[_0x2a4912]={'$like':'%'+_0x4d8f80['query'][_0xd5d3('0x4e')]+'%'};return _0x47082d;})});}_0x546010=_[_0xd5d3('0x67')]({},_0x546010,_0x4d8f80[_0xd5d3('0x50')]);return _0x352928[_0xd5d3('0x98')](_0x546010);}})[_0xd5d3('0x35')](function(_0x52de19){if(_0x52de19){_0x2d7438=_0x52de19[_0xd5d3('0x49')];if(!_0x4d8f80[_0xd5d3('0x44')]['hasOwnProperty'](_0xd5d3('0x4b'))){_0x546010['limit']=qs[_0xd5d3('0x2f')](_0x4d8f80[_0xd5d3('0x44')][_0xd5d3('0x2f')]);_0x546010[_0xd5d3('0x2d')]=qs[_0xd5d3('0x2d')](_0x4d8f80[_0xd5d3('0x44')]['offset']);}return _0x352928[_0xd5d3('0x98')](_0x546010);}})[_0xd5d3('0x35')](function(_0x4f4b57){if(_0x4f4b57){return _0x4f4b57?{'count':_0x2d7438,'rows':_0x4f4b57}:null;}})[_0xd5d3('0x35')](respondWithResult(_0x3aed07,null))[_0xd5d3('0x28')](handleError(_0x3aed07,null));};
\ No newline at end of file
index ad5b55b..b34df53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30ab=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x12acaa,_0x5ed722){var _0xe2b239=function(_0x3cc144){while(--_0x3cc144){_0x12acaa['push'](_0x12acaa['shift']());}};_0xe2b239(++_0x5ed722);}(_0x30ab,0x11d));var _0xb30a=function(_0x5b2c41,_0x17b53d){_0x5b2c41=_0x5b2c41-0x0;var _0x5e3b76=_0x30ab[_0x5b2c41];return _0x5e3b76;};'use strict';var EventEmitter=require(_0xb30a('0x0'));var ChatQueue=require(_0xb30a('0x1'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xb30a('0x2')](0x0);var events={'afterCreate':_0xb30a('0x3'),'afterUpdate':_0xb30a('0x4'),'afterDestroy':_0xb30a('0x5')};function emitEvent(_0x5ba959){return function(_0x5f3969,_0x2d5725,_0x5e9b4f){ChatQueueEvents['emit'](_0x5ba959+':'+_0x5f3969['id'],_0x5f3969);ChatQueueEvents[_0xb30a('0x6')](_0x5ba959,_0x5f3969);_0x5e9b4f(null);};}for(var e in events){if(events[_0xb30a('0x7')](e)){var event=events[e];ChatQueue[_0xb30a('0x8')](e,emitEvent(event));}}module[_0xb30a('0x9')]=ChatQueueEvents;
\ No newline at end of file
+var _0x6f9d=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x6f9d,0xd8));var _0xd6f9=function(_0x5a7650,_0x454cd1){_0x5a7650=_0x5a7650-0x0;var _0x1b8bfc=_0x6f9d[_0x5a7650];return _0x1b8bfc;};'use strict';var EventEmitter=require(_0xd6f9('0x0'));var ChatQueue=require(_0xd6f9('0x1'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xd6f9('0x2')](0x0);var events={'afterCreate':_0xd6f9('0x3'),'afterUpdate':_0xd6f9('0x4'),'afterDestroy':_0xd6f9('0x5')};function emitEvent(_0x1bc445){return function(_0x18a096,_0x3e9d3a,_0x1f30a1){ChatQueueEvents[_0xd6f9('0x6')](_0x1bc445+':'+_0x18a096['id'],_0x18a096);ChatQueueEvents[_0xd6f9('0x6')](_0x1bc445,_0x18a096);_0x1f30a1(null);};}for(var e in events){if(events[_0xd6f9('0x7')](e)){var event=events[e];ChatQueue[_0xd6f9('0x8')](e,emitEvent(event));}}module[_0xd6f9('0x9')]=ChatQueueEvents;
\ No newline at end of file
index 864aea8..0106da9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c40=['api','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','lodash','util','../../config/logger'];(function(_0x27dc89,_0x593aff){var _0x34e89a=function(_0x121a14){while(--_0x121a14){_0x27dc89['push'](_0x27dc89['shift']());}};_0x34e89a(++_0x593aff);}(_0x6c40,0x1aa));var _0x06c4=function(_0x1104ae,_0x4b3b11){_0x1104ae=_0x1104ae-0x0;var _0x42aa2c=_0x6c40[_0x1104ae];return _0x42aa2c;};'use strict';var _=require(_0x06c4('0x0'));var util=require(_0x06c4('0x1'));var logger=require(_0x06c4('0x2'))(_0x06c4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x06c4('0x4'));var rimraf=require(_0x06c4('0x5'));var config=require(_0x06c4('0x6'));var attributes=require(_0x06c4('0x7'));module[_0x06c4('0x8')]=function(_0x1bda8a,_0x5e5a8a){return _0x1bda8a[_0x06c4('0x9')](_0x06c4('0xa'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f05=['../../config/environment','./chatQueue.attributes','exports','define','chat_queues','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5bb985,_0x505d34){var _0xa697cd=function(_0x150857){while(--_0x150857){_0x5bb985['push'](_0x5bb985['shift']());}};_0xa697cd(++_0x505d34);}(_0x9f05,0xe9));var _0x59f0=function(_0x55c92b,_0x486762){_0x55c92b=_0x55c92b-0x0;var _0x249ca3=_0x9f05[_0x55c92b];return _0x249ca3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x59f0('0x0'))(_0x59f0('0x1'));var moment=require(_0x59f0('0x2'));var BPromise=require(_0x59f0('0x3'));var rp=require(_0x59f0('0x4'));var fs=require('fs');var path=require(_0x59f0('0x5'));var rimraf=require(_0x59f0('0x6'));var config=require(_0x59f0('0x7'));var attributes=require(_0x59f0('0x8'));module[_0x59f0('0x9')]=function(_0x7c041,_0xdcd189){return _0x7c041[_0x59f0('0xa')]('ChatQueue',attributes,{'tableName':_0x59f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index acdc65b..ab6a56e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26c2=['find','where','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','register','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetChatQueue','findAll','options','raw','attributes','limit','include','map','model','then','ShowChatQueue','ChatQueue'];(function(_0xc36b9d,_0x72da4){var _0x2e3867=function(_0x5aeefc){while(--_0x5aeefc){_0xc36b9d['push'](_0xc36b9d['shift']());}};_0x2e3867(++_0x72da4);}(_0x26c2,0x1d6));var _0x226c=function(_0x5597e9,_0x4ef704){_0x5597e9=_0x5597e9-0x0;var _0x315b7a=_0x26c2[_0x5597e9];return _0x315b7a;};'use strict';var _=require('lodash');var util=require(_0x226c('0x0'));var moment=require(_0x226c('0x1'));var BPromise=require(_0x226c('0x2'));var rs=require(_0x226c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x226c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x226c('0x5'))(_0x226c('0x6'));var config=require(_0x226c('0x7'));var jayson=require(_0x226c('0x8'));var client=jayson[_0x226c('0x9')][_0x226c('0xa')]({'port':0x232a});config[_0x226c('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x226c('0xc'))(new Redis(config[_0x226c('0xb')]));require('./chatQueue.socket')[_0x226c('0xd')](socket);function respondWithRpcPromise(_0x355c1f,_0x85ed80,_0x36d64b){return new BPromise(function(_0x1ae421,_0x1001f9){return client[_0x226c('0xe')](_0x355c1f,_0x36d64b)['then'](function(_0x4dd4f5){logger[_0x226c('0xf')](_0x226c('0x10'),_0x85ed80,_0x226c('0x11'));logger[_0x226c('0x12')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x85ed80,'request\x20sent',JSON[_0x226c('0x13')](_0x4dd4f5));if(_0x4dd4f5[_0x226c('0x14')]){if(_0x4dd4f5[_0x226c('0x14')][_0x226c('0x15')]===0x1f4){logger[_0x226c('0x14')]('ChatQueue,\x20%s,\x20%s',_0x85ed80,_0x4dd4f5[_0x226c('0x14')][_0x226c('0x16')]);return _0x1001f9(_0x4dd4f5[_0x226c('0x14')]['message']);}logger[_0x226c('0x14')](_0x226c('0x10'),_0x85ed80,_0x4dd4f5[_0x226c('0x14')][_0x226c('0x16')]);return _0x1ae421(_0x4dd4f5[_0x226c('0x14')][_0x226c('0x16')]);}else{logger[_0x226c('0xf')](_0x226c('0x10'),_0x85ed80,_0x226c('0x11'));_0x1ae421(_0x4dd4f5[_0x226c('0x17')][_0x226c('0x16')]);}})[_0x226c('0x18')](function(_0x1ecb10){logger['error'](_0x226c('0x10'),_0x85ed80,_0x1ecb10);_0x1001f9(_0x1ecb10);});});}exports[_0x226c('0x19')]=function(_0x1abe31){var _0x49f43d=this;return new Promise(function(_0x4038b0,_0x9fae06){return db['ChatQueue'][_0x226c('0x1a')]({'raw':_0x1abe31[_0x226c('0x1b')]?_0x1abe31[_0x226c('0x1b')][_0x226c('0x1c')]===undefined?!![]:![]:!![],'where':_0x1abe31[_0x226c('0x1b')]?_0x1abe31[_0x226c('0x1b')]['where']||null:null,'attributes':_0x1abe31[_0x226c('0x1b')]?_0x1abe31[_0x226c('0x1b')][_0x226c('0x1d')]||null:null,'limit':_0x1abe31[_0x226c('0x1b')]?_0x1abe31[_0x226c('0x1b')][_0x226c('0x1e')]||null:null,'include':_0x1abe31['options']?_0x1abe31[_0x226c('0x1b')][_0x226c('0x1f')]?_[_0x226c('0x20')](_0x1abe31['options'][_0x226c('0x1f')],function(_0x544d41){return{'model':db[_0x544d41[_0x226c('0x21')]],'as':_0x544d41['as'],'attributes':_0x544d41[_0x226c('0x1d')],'include':_0x544d41[_0x226c('0x1f')]?_[_0x226c('0x20')](_0x544d41['include'],function(_0x5cc11c){return{'model':db[_0x5cc11c['model']],'as':_0x5cc11c['as'],'attributes':_0x5cc11c['attributes'],'include':_0x5cc11c['include']?_[_0x226c('0x20')](_0x5cc11c[_0x226c('0x1f')],function(_0x58b2c9){return{'model':db[_0x58b2c9[_0x226c('0x21')]],'as':_0x58b2c9['as'],'attributes':_0x58b2c9[_0x226c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x226c('0x22')](function(_0x7d2369){logger[_0x226c('0xf')]('GetChatQueue',_0x1abe31);logger[_0x226c('0x12')](_0x226c('0x19'),_0x1abe31,JSON['stringify'](_0x7d2369));_0x4038b0(_0x7d2369);})[_0x226c('0x18')](function(_0x160f9e){logger[_0x226c('0x14')]('GetChatQueue',_0x160f9e[_0x226c('0x16')],_0x1abe31);_0x9fae06(_0x49f43d[_0x226c('0x14')](0x1f4,_0x160f9e[_0x226c('0x16')]));});});};exports[_0x226c('0x23')]=function(_0xdc4c4e){var _0x8756b7=this;return new Promise(function(_0x2a5b03,_0x5d7c95){return db[_0x226c('0x24')][_0x226c('0x25')]({'raw':_0xdc4c4e[_0x226c('0x1b')]?_0xdc4c4e['options'][_0x226c('0x1c')]===undefined?!![]:![]:!![],'where':_0xdc4c4e[_0x226c('0x1b')]?_0xdc4c4e[_0x226c('0x1b')][_0x226c('0x26')]||null:null,'attributes':_0xdc4c4e[_0x226c('0x1b')]?_0xdc4c4e[_0x226c('0x1b')][_0x226c('0x1d')]||null:null,'include':_0xdc4c4e[_0x226c('0x1b')]?_0xdc4c4e['options'][_0x226c('0x1f')]?_[_0x226c('0x20')](_0xdc4c4e[_0x226c('0x1b')][_0x226c('0x1f')],function(_0x710d0b){return{'model':db[_0x710d0b['model']],'as':_0x710d0b['as'],'attributes':_0x710d0b['attributes'],'include':_0x710d0b[_0x226c('0x1f')]?_[_0x226c('0x20')](_0x710d0b[_0x226c('0x1f')],function(_0x5ba5bf){return{'model':db[_0x5ba5bf['model']],'as':_0x5ba5bf['as'],'attributes':_0x5ba5bf[_0x226c('0x1d')],'include':_0x5ba5bf[_0x226c('0x1f')]?_[_0x226c('0x20')](_0x5ba5bf['include'],function(_0x3d3dc7){return{'model':db[_0x3d3dc7['model']],'as':_0x3d3dc7['as'],'attributes':_0x3d3dc7[_0x226c('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xbcaf60){logger[_0x226c('0xf')](_0x226c('0x23'),_0xdc4c4e);logger['debug'](_0x226c('0x23'),_0xdc4c4e,JSON['stringify'](_0xbcaf60));_0x2a5b03(_0xbcaf60);})[_0x226c('0x18')](function(_0x1d9101){logger[_0x226c('0x14')]('ShowChatQueue',_0x1d9101[_0x226c('0x16')],_0xdc4c4e);_0x5d7c95(_0x8756b7['error'](0x1f4,_0x1d9101[_0x226c('0x16')]));});});};
\ No newline at end of file
+var _0xa7b5=['options','raw','where','attributes','limit','map','include','model','find','ShowChatQueue','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetChatQueue','ChatQueue'];(function(_0x5972a5,_0x19dcef){var _0x3e230e=function(_0x577b61){while(--_0x577b61){_0x5972a5['push'](_0x5972a5['shift']());}};_0x3e230e(++_0x19dcef);}(_0xa7b5,0x15a));var _0x5a7b=function(_0x550789,_0xdf540){_0x550789=_0x550789-0x0;var _0x164e37=_0xa7b5[_0x550789];return _0x164e37;};'use strict';var _=require(_0x5a7b('0x0'));var util=require('util');var moment=require(_0x5a7b('0x1'));var BPromise=require('bluebird');var rs=require(_0x5a7b('0x2'));var fs=require('fs');var Redis=require(_0x5a7b('0x3'));var db=require(_0x5a7b('0x4'))['db'];var utils=require(_0x5a7b('0x5'));var logger=require(_0x5a7b('0x6'))(_0x5a7b('0x7'));var config=require(_0x5a7b('0x8'));var jayson=require(_0x5a7b('0x9'));var client=jayson[_0x5a7b('0xa')][_0x5a7b('0xb')]({'port':0x232a});config[_0x5a7b('0xc')]=_[_0x5a7b('0xd')](config[_0x5a7b('0xc')],{'host':_0x5a7b('0xe'),'port':0x18eb});var socket=require(_0x5a7b('0xf'))(new Redis(config[_0x5a7b('0xc')]));require(_0x5a7b('0x10'))[_0x5a7b('0x11')](socket);function respondWithRpcPromise(_0x5a414a,_0x5476b8,_0x294a7f){return new BPromise(function(_0x5423dc,_0xfd7963){return client[_0x5a7b('0x12')](_0x5a414a,_0x294a7f)[_0x5a7b('0x13')](function(_0x478aee){logger[_0x5a7b('0x14')](_0x5a7b('0x15'),_0x5476b8,_0x5a7b('0x16'));logger[_0x5a7b('0x17')](_0x5a7b('0x18'),_0x5476b8,_0x5a7b('0x16'),JSON[_0x5a7b('0x19')](_0x478aee));if(_0x478aee['error']){if(_0x478aee[_0x5a7b('0x1a')][_0x5a7b('0x1b')]===0x1f4){logger[_0x5a7b('0x1a')](_0x5a7b('0x15'),_0x5476b8,_0x478aee['error'][_0x5a7b('0x1c')]);return _0xfd7963(_0x478aee[_0x5a7b('0x1a')]['message']);}logger[_0x5a7b('0x1a')]('ChatQueue,\x20%s,\x20%s',_0x5476b8,_0x478aee[_0x5a7b('0x1a')]['message']);return _0x5423dc(_0x478aee[_0x5a7b('0x1a')][_0x5a7b('0x1c')]);}else{logger[_0x5a7b('0x14')]('ChatQueue,\x20%s,\x20%s',_0x5476b8,_0x5a7b('0x16'));_0x5423dc(_0x478aee['result'][_0x5a7b('0x1c')]);}})[_0x5a7b('0x1d')](function(_0x3e1fce){logger[_0x5a7b('0x1a')](_0x5a7b('0x15'),_0x5476b8,_0x3e1fce);_0xfd7963(_0x3e1fce);});});}exports[_0x5a7b('0x1e')]=function(_0x15d8fb){var _0x16fe9a=this;return new Promise(function(_0x4dd310,_0x4126a5){return db[_0x5a7b('0x1f')]['findAll']({'raw':_0x15d8fb['options']?_0x15d8fb[_0x5a7b('0x20')][_0x5a7b('0x21')]===undefined?!![]:![]:!![],'where':_0x15d8fb[_0x5a7b('0x20')]?_0x15d8fb[_0x5a7b('0x20')][_0x5a7b('0x22')]||null:null,'attributes':_0x15d8fb['options']?_0x15d8fb['options'][_0x5a7b('0x23')]||null:null,'limit':_0x15d8fb[_0x5a7b('0x20')]?_0x15d8fb[_0x5a7b('0x20')][_0x5a7b('0x24')]||null:null,'include':_0x15d8fb['options']?_0x15d8fb['options']['include']?_[_0x5a7b('0x25')](_0x15d8fb[_0x5a7b('0x20')][_0x5a7b('0x26')],function(_0x3e572a){return{'model':db[_0x3e572a[_0x5a7b('0x27')]],'as':_0x3e572a['as'],'attributes':_0x3e572a['attributes'],'include':_0x3e572a[_0x5a7b('0x26')]?_['map'](_0x3e572a[_0x5a7b('0x26')],function(_0x547e82){return{'model':db[_0x547e82[_0x5a7b('0x27')]],'as':_0x547e82['as'],'attributes':_0x547e82[_0x5a7b('0x23')],'include':_0x547e82[_0x5a7b('0x26')]?_['map'](_0x547e82[_0x5a7b('0x26')],function(_0x449cc7){return{'model':db[_0x449cc7[_0x5a7b('0x27')]],'as':_0x449cc7['as'],'attributes':_0x449cc7['attributes']};}):[]};}):[]};}):[]:[]})[_0x5a7b('0x13')](function(_0x3172a8){logger[_0x5a7b('0x14')](_0x5a7b('0x1e'),_0x15d8fb);logger[_0x5a7b('0x17')]('GetChatQueue',_0x15d8fb,JSON[_0x5a7b('0x19')](_0x3172a8));_0x4dd310(_0x3172a8);})[_0x5a7b('0x1d')](function(_0x401bfd){logger[_0x5a7b('0x1a')](_0x5a7b('0x1e'),_0x401bfd[_0x5a7b('0x1c')],_0x15d8fb);_0x4126a5(_0x16fe9a['error'](0x1f4,_0x401bfd[_0x5a7b('0x1c')]));});});};exports['ShowChatQueue']=function(_0x453f49){var _0x54ea9d=this;return new Promise(function(_0xe7f83a,_0x2d49c6){return db[_0x5a7b('0x1f')][_0x5a7b('0x28')]({'raw':_0x453f49[_0x5a7b('0x20')]?_0x453f49[_0x5a7b('0x20')][_0x5a7b('0x21')]===undefined?!![]:![]:!![],'where':_0x453f49['options']?_0x453f49[_0x5a7b('0x20')]['where']||null:null,'attributes':_0x453f49[_0x5a7b('0x20')]?_0x453f49[_0x5a7b('0x20')][_0x5a7b('0x23')]||null:null,'include':_0x453f49[_0x5a7b('0x20')]?_0x453f49['options'][_0x5a7b('0x26')]?_[_0x5a7b('0x25')](_0x453f49[_0x5a7b('0x20')][_0x5a7b('0x26')],function(_0x55da28){return{'model':db[_0x55da28[_0x5a7b('0x27')]],'as':_0x55da28['as'],'attributes':_0x55da28[_0x5a7b('0x23')],'include':_0x55da28[_0x5a7b('0x26')]?_['map'](_0x55da28[_0x5a7b('0x26')],function(_0x1cd562){return{'model':db[_0x1cd562[_0x5a7b('0x27')]],'as':_0x1cd562['as'],'attributes':_0x1cd562[_0x5a7b('0x23')],'include':_0x1cd562['include']?_[_0x5a7b('0x25')](_0x1cd562['include'],function(_0xefb71c){return{'model':db[_0xefb71c[_0x5a7b('0x27')]],'as':_0xefb71c['as'],'attributes':_0xefb71c[_0x5a7b('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xa04143){logger[_0x5a7b('0x14')](_0x5a7b('0x29'),_0x453f49);logger[_0x5a7b('0x17')](_0x5a7b('0x29'),_0x453f49,JSON[_0x5a7b('0x19')](_0xa04143));_0xe7f83a(_0xa04143);})[_0x5a7b('0x1d')](function(_0x27cd19){logger[_0x5a7b('0x1a')](_0x5a7b('0x29'),_0x27cd19['message'],_0x453f49);_0x2d49c6(_0x54ea9d['error'](0x1f4,_0x27cd19['message']));});});};
\ No newline at end of file
index ca67ac6..df47517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac9d=['update','emit','register','length','chatQueue:','./chatQueue.events','save','remove'];(function(_0x22d211,_0x499c5f){var _0x412f37=function(_0x3d1fe0){while(--_0x3d1fe0){_0x22d211['push'](_0x22d211['shift']());}};_0x412f37(++_0x499c5f);}(_0xac9d,0x14d));var _0xdac9=function(_0x2d0b84,_0x34682d){_0x2d0b84=_0x2d0b84-0x0;var _0x8d0088=_0xac9d[_0x2d0b84];return _0x8d0088;};'use strict';var ChatQueueEvents=require(_0xdac9('0x0'));var events=[_0xdac9('0x1'),_0xdac9('0x2'),_0xdac9('0x3')];function createListener(_0x12390c,_0x27eb7c){return function(_0x25d1b3){_0x27eb7c[_0xdac9('0x4')](_0x12390c,_0x25d1b3);};}function removeListener(_0x51a5d7,_0x1c17a6){return function(){ChatQueueEvents['removeListener'](_0x51a5d7,_0x1c17a6);};}exports[_0xdac9('0x5')]=function(_0x1f8ff3){for(var _0x1222bb=0x0,_0x776b6c=events[_0xdac9('0x6')];_0x1222bb<_0x776b6c;_0x1222bb++){var _0x39f560=events[_0x1222bb];var _0x5531af=createListener(_0xdac9('0x7')+_0x39f560,_0x1f8ff3);ChatQueueEvents['on'](_0x39f560,_0x5531af);}};
\ No newline at end of file
+var _0x70e0=['chatQueue:','./chatQueue.events','save','remove','emit','removeListener'];(function(_0x59441b,_0x2b772e){var _0x5a64ff=function(_0x2c144e){while(--_0x2c144e){_0x59441b['push'](_0x59441b['shift']());}};_0x5a64ff(++_0x2b772e);}(_0x70e0,0x17b));var _0x070e=function(_0x5cc487,_0x35c7b2){_0x5cc487=_0x5cc487-0x0;var _0x4ccb7e=_0x70e0[_0x5cc487];return _0x4ccb7e;};'use strict';var ChatQueueEvents=require(_0x070e('0x0'));var events=[_0x070e('0x1'),_0x070e('0x2'),'update'];function createListener(_0x579b83,_0x16e651){return function(_0xee173){_0x16e651[_0x070e('0x3')](_0x579b83,_0xee173);};}function removeListener(_0x2593e5,_0x5c90fc){return function(){ChatQueueEvents[_0x070e('0x4')](_0x2593e5,_0x5c90fc);};}exports['register']=function(_0x46fe68){for(var _0x4b041d=0x0,_0x56e420=events['length'];_0x4b041d<_0x56e420;_0x4b041d++){var _0x35ab0c=events[_0x4b041d];var _0x1e11f0=createListener(_0x070e('0x5')+_0x35ab0c,_0x46fe68);ChatQueueEvents['on'](_0x35ab0c,_0x1e11f0);}};
\ No newline at end of file
index fba3091..cce1036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x372246,_0x11c9fc){var _0x851da8=function(_0x3c8603){while(--_0x3c8603){_0x372246['push'](_0x372246['shift']());}};_0x851da8(++_0x11c9fc);}(_0x7217,0x19e));var _0x7721=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0x7217[_0x28947d];return _0x12d2ee;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getAgents']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['post'](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);router[_0x7721('0x17')](_0x7721('0xd'),auth['isAuthenticated'](),controller[_0x7721('0x18')]);router['delete'](_0x7721('0x11'),auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x17')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1a')]);module[_0x7721('0x1b')]=router;
\ No newline at end of file
+var _0x3e74=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','addAgents','put','delete','removeTeams','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x3e74,0x175));var _0x43e7=function(_0x138d73,_0x280776){_0x138d73=_0x138d73-0x0;var _0x5d0f30=_0x3e74[_0x138d73];return _0x5d0f30;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/members',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x13')]);router['post']('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router[_0x43e7('0x15')](_0x43e7('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43e7('0x16')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['destroy']);router['delete'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x17')]);router[_0x43e7('0x16')](_0x43e7('0x18'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x19')]);module[_0x43e7('0x1a')]=router;
\ No newline at end of file
index c07e98e..22909bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x888e=['sequelize','exports','STRING','DATE'];(function(_0x3b12e1,_0x17fa82){var _0x32cc31=function(_0x4ef89f){while(--_0x4ef89f){_0x3b12e1['push'](_0x3b12e1['shift']());}};_0x32cc31(++_0x17fa82);}(_0x888e,0xc0));var _0xe888=function(_0x160dc6,_0x183c83){_0x160dc6=_0x160dc6-0x0;var _0xf57c65=_0x888e[_0x160dc6];return _0xf57c65;};'use strict';var moment=require('moment');var Sequelize=require(_0xe888('0x0'));module[_0xe888('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xe888('0x2')]},'joinAt':{'type':Sequelize[_0xe888('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xe888('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcb6c=['STRING','DATE','moment'];(function(_0x213f67,_0x56ab59){var _0x57beed=function(_0x27cf0f){while(--_0x27cf0f){_0x213f67['push'](_0x213f67['shift']());}};_0x57beed(++_0x56ab59);}(_0xcb6c,0x128));var _0xccb6=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xcb6c[_0x122ef9];return _0x42fba0;};'use strict';var moment=require(_0xccb6('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xccb6('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xccb6('0x1')]},'joinAt':{'type':Sequelize[_0xccb6('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xccb6('0x2')]},'reason':{'type':Sequelize[_0xccb6('0x1')]}};
\ No newline at end of file
index dd89d73..d9382fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac4=['ChatQueueReport','rawAttributes','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','catch','show','params','includeAll','create','body','update','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','set','Content-Range','json','apply','save','then','destroy','error','name','send','index'];(function(_0xf0bcac,_0x531755){var _0x4e4c65=function(_0x35a77a){while(--_0x35a77a){_0xf0bcac['push'](_0xf0bcac['shift']());}};_0x4e4c65(++_0x531755);}(_0xaac4,0x6c));var _0x4aac=function(_0x2d489a,_0x25ce3c){_0x2d489a=_0x2d489a-0x0;var _0x11b301=_0xaac4[_0x2d489a];return _0x11b301;};'use strict';var emlformat=require(_0x4aac('0x0'));var rimraf=require(_0x4aac('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4aac('0x2'));var rp=require(_0x4aac('0x3'));var moment=require(_0x4aac('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4aac('0x5'));var util=require(_0x4aac('0x6'));var path=require(_0x4aac('0x7'));var sox=require(_0x4aac('0x8'));var csv=require(_0x4aac('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4aac('0xa'));var _=require(_0x4aac('0xb'));var squel=require(_0x4aac('0xc'));var crypto=require('crypto');var jsforce=require(_0x4aac('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4aac('0x9'));var querystring=require(_0x4aac('0xe'));var Papa=require(_0x4aac('0xf'));var Redis=require(_0x4aac('0x10'));var authService=require(_0x4aac('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4aac('0x12'));var hardwareService=require(_0x4aac('0x13'));var logger=require(_0x4aac('0x14'))(_0x4aac('0x15'));var utils=require('../../config/utils');var config=require(_0x4aac('0x16'));var licenseUtil=require(_0x4aac('0x17'));var db=require(_0x4aac('0x18'))['db'];function respondWithStatusCode(_0xfec6bd,_0x323eb0){_0x323eb0=_0x323eb0||0xcc;return function(_0x30eefc){if(_0x30eefc){return _0xfec6bd[_0x4aac('0x19')](_0x323eb0);}return _0xfec6bd['status'](_0x323eb0)[_0x4aac('0x1a')]();};}function respondWithResult(_0x5b1b27,_0x35469f){_0x35469f=_0x35469f||0xc8;return function(_0x55cbf4){if(_0x55cbf4){return _0x5b1b27[_0x4aac('0x1b')](_0x35469f)['json'](_0x55cbf4);}};}function respondWithFilteredResult(_0x2c58d3,_0x442883){return function(_0x2dca5b){if(_0x2dca5b){var _0x593782=typeof _0x442883[_0x4aac('0x1c')]===_0x4aac('0x1d')&&typeof _0x442883['limit']==='undefined';var _0x5c02c6=_0x2dca5b['count'];var _0x1539fb=_0x593782?0x0:_0x442883[_0x4aac('0x1c')];var _0x44d2a1=_0x593782?_0x2dca5b['count']:_0x442883[_0x4aac('0x1c')]+_0x442883[_0x4aac('0x1e')];var _0x2f751b;if(_0x44d2a1>=_0x5c02c6){_0x44d2a1=_0x5c02c6;_0x2f751b=0xc8;}else{_0x2f751b=0xce;}_0x2c58d3[_0x4aac('0x1b')](_0x2f751b);return _0x2c58d3[_0x4aac('0x1f')](_0x4aac('0x20'),_0x1539fb+'-'+_0x44d2a1+'/'+_0x5c02c6)[_0x4aac('0x21')](_0x2dca5b);}return null;};}function patchUpdates(_0x2c26cc){return function(_0x331226){try{jsonpatch[_0x4aac('0x22')](_0x331226,_0x2c26cc,!![]);}catch(_0x39d457){return BPromise['reject'](_0x39d457);}return _0x331226[_0x4aac('0x23')]();};}function saveUpdates(_0x16eef9,_0x594ef1){return function(_0x192db5){if(_0x192db5){return _0x192db5['update'](_0x16eef9)[_0x4aac('0x24')](function(_0x23fb33){return _0x23fb33;});}return null;};}function removeEntity(_0x34a384,_0x3d4836){return function(_0x1a9cca){if(_0x1a9cca){return _0x1a9cca[_0x4aac('0x25')]()[_0x4aac('0x24')](function(){_0x34a384['status'](0xcc)[_0x4aac('0x1a')]();});}};}function handleEntityNotFound(_0x279c10,_0x431cd9){return function(_0x516261){if(!_0x516261){_0x279c10[_0x4aac('0x19')](0x194);}return _0x516261;};}function handleError(_0x1f135a,_0x1b57ed){_0x1b57ed=_0x1b57ed||0x1f4;return function(_0x18bafe){logger[_0x4aac('0x26')](_0x18bafe['stack']);if(_0x18bafe[_0x4aac('0x27')]){delete _0x18bafe['name'];}_0x1f135a['status'](_0x1b57ed)[_0x4aac('0x28')](_0x18bafe);};}exports[_0x4aac('0x29')]=function(_0x459028,_0x3a1bd3){var _0x37a98b={},_0x5133b8={},_0x2750f3={'count':0x0,'rows':[]};var _0xf7618d=_['map'](db[_0x4aac('0x2a')][_0x4aac('0x2b')],function(_0x59b69f){return{'name':_0x59b69f[_0x4aac('0x2c')],'type':_0x59b69f['type']['key']};});_0x5133b8[_0x4aac('0x2d')]=_[_0x4aac('0x2e')](_0xf7618d,_0x4aac('0x27'));_0x5133b8['query']=_[_0x4aac('0x2f')](_0x459028[_0x4aac('0x30')]);_0x5133b8[_0x4aac('0x31')]=_[_0x4aac('0x32')](_0x5133b8[_0x4aac('0x2d')],_0x5133b8['query']);_0x37a98b[_0x4aac('0x33')]=_[_0x4aac('0x32')](_0x5133b8[_0x4aac('0x2d')],qs[_0x4aac('0x34')](_0x459028['query'][_0x4aac('0x34')]));_0x37a98b[_0x4aac('0x33')]=_0x37a98b['attributes'][_0x4aac('0x35')]?_0x37a98b[_0x4aac('0x33')]:_0x5133b8['model'];if(!_0x459028[_0x4aac('0x30')][_0x4aac('0x36')](_0x4aac('0x37'))){_0x37a98b['limit']=qs['limit'](_0x459028[_0x4aac('0x30')][_0x4aac('0x1e')]);_0x37a98b['offset']=qs[_0x4aac('0x1c')](_0x459028[_0x4aac('0x30')]['offset']);}_0x37a98b[_0x4aac('0x38')]=qs[_0x4aac('0x39')](_0x459028[_0x4aac('0x30')][_0x4aac('0x39')]);_0x37a98b[_0x4aac('0x3a')]=qs[_0x4aac('0x31')](_[_0x4aac('0x3b')](_0x459028[_0x4aac('0x30')],_0x5133b8[_0x4aac('0x31')]),_0xf7618d);if(_0x459028['query'][_0x4aac('0x3c')]){_0x37a98b[_0x4aac('0x3a')]=_[_0x4aac('0x3d')](_0x37a98b['where'],{'$or':_[_0x4aac('0x2e')](_0xf7618d,function(_0x1717c0){if(_0x1717c0[_0x4aac('0x3e')]!==_0x4aac('0x3f')){var _0x2c9a8f={};_0x2c9a8f[_0x1717c0[_0x4aac('0x27')]]={'$like':'%'+_0x459028[_0x4aac('0x30')][_0x4aac('0x3c')]+'%'};return _0x2c9a8f;}})});}_0x37a98b=_[_0x4aac('0x3d')]({},_0x37a98b,_0x459028[_0x4aac('0x40')]);var _0x331514={'where':_0x37a98b['where']};return db[_0x4aac('0x2a')]['count'](_0x331514)[_0x4aac('0x24')](function(_0x1d1435){_0x2750f3['count']=_0x1d1435;if(_0x459028[_0x4aac('0x30')]['includeAll']){_0x37a98b['include']=[{'all':!![]}];}return db[_0x4aac('0x2a')][_0x4aac('0x41')](_0x37a98b);})[_0x4aac('0x24')](function(_0x3d1cd5){_0x2750f3['rows']=_0x3d1cd5;return _0x2750f3;})[_0x4aac('0x24')](respondWithFilteredResult(_0x3a1bd3,_0x37a98b))[_0x4aac('0x42')](handleError(_0x3a1bd3,null));};exports[_0x4aac('0x43')]=function(_0xf84265,_0x44fb73){var _0x354fed={'raw':!![],'where':{'id':_0xf84265[_0x4aac('0x44')]['id']}},_0x5d09f6={};_0x5d09f6['model']=_[_0x4aac('0x2f')](db[_0x4aac('0x2a')][_0x4aac('0x2b')]);_0x5d09f6['query']=_[_0x4aac('0x2f')](_0xf84265[_0x4aac('0x30')]);_0x5d09f6[_0x4aac('0x31')]=_[_0x4aac('0x32')](_0x5d09f6[_0x4aac('0x2d')],_0x5d09f6[_0x4aac('0x30')]);_0x354fed['attributes']=_['intersection'](_0x5d09f6[_0x4aac('0x2d')],qs['fields'](_0xf84265[_0x4aac('0x30')][_0x4aac('0x34')]));_0x354fed[_0x4aac('0x33')]=_0x354fed[_0x4aac('0x33')][_0x4aac('0x35')]?_0x354fed[_0x4aac('0x33')]:_0x5d09f6[_0x4aac('0x2d')];if(_0xf84265[_0x4aac('0x30')][_0x4aac('0x45')]){_0x354fed['include']=[{'all':!![]}];}_0x354fed=_[_0x4aac('0x3d')]({},_0x354fed,_0xf84265[_0x4aac('0x40')]);return db['ChatQueueReport']['find'](_0x354fed)[_0x4aac('0x24')](handleEntityNotFound(_0x44fb73,null))['then'](respondWithResult(_0x44fb73,null))['catch'](handleError(_0x44fb73,null));};exports['create']=function(_0x5191ba,_0x58c47b){return db['ChatQueueReport'][_0x4aac('0x46')](_0x5191ba[_0x4aac('0x47')],{})[_0x4aac('0x24')](respondWithResult(_0x58c47b,0xc9))[_0x4aac('0x42')](handleError(_0x58c47b,null));};exports[_0x4aac('0x48')]=function(_0x2d25f9,_0x74f0ad){if(_0x2d25f9[_0x4aac('0x47')]['id']){delete _0x2d25f9[_0x4aac('0x47')]['id'];}return db[_0x4aac('0x2a')]['find']({'where':{'id':_0x2d25f9[_0x4aac('0x44')]['id']}})[_0x4aac('0x24')](handleEntityNotFound(_0x74f0ad,null))['then'](saveUpdates(_0x2d25f9[_0x4aac('0x47')],null))[_0x4aac('0x24')](respondWithResult(_0x74f0ad,null))[_0x4aac('0x42')](handleError(_0x74f0ad,null));};exports[_0x4aac('0x25')]=function(_0x1b2179,_0x1164de){return db[_0x4aac('0x2a')][_0x4aac('0x49')]({'where':{'id':_0x1b2179[_0x4aac('0x44')]['id']}})[_0x4aac('0x24')](handleEntityNotFound(_0x1164de,null))[_0x4aac('0x24')](removeEntity(_0x1164de,null))[_0x4aac('0x42')](handleError(_0x1164de,null));};exports[_0x4aac('0x4a')]=function(_0x11419b,_0x1d9197){return db['ChatQueueReport'][_0x4aac('0x4a')]()['then'](respondWithResult(_0x1d9197,null))[_0x4aac('0x42')](handleError(_0x1d9197,null));};
\ No newline at end of file
+var _0xb4d9=['status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','index','ChatQueueReport','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','fields','includeAll','options','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x2f887f,_0x260aaf){var _0x35add9=function(_0x2ced8a){while(--_0x2ced8a){_0x2f887f['push'](_0x2f887f['shift']());}};_0x35add9(++_0x260aaf);}(_0xb4d9,0xce));var _0x9b4d=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xb4d9[_0x5f0089];return _0x193892;};'use strict';var emlformat=require(_0x9b4d('0x0'));var rimraf=require(_0x9b4d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9b4d('0x2'));var rp=require(_0x9b4d('0x3'));var moment=require(_0x9b4d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9b4d('0x5'));var util=require(_0x9b4d('0x6'));var path=require(_0x9b4d('0x7'));var sox=require(_0x9b4d('0x8'));var csv=require(_0x9b4d('0x9'));var ejs=require(_0x9b4d('0xa'));var fs=require('fs');var fs_extra=require(_0x9b4d('0xb'));var _=require(_0x9b4d('0xc'));var squel=require(_0x9b4d('0xd'));var crypto=require(_0x9b4d('0xe'));var jsforce=require(_0x9b4d('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x9b4d('0x9'));var querystring=require('querystring');var Papa=require(_0x9b4d('0x10'));var Redis=require('ioredis');var authService=require(_0x9b4d('0x11'));var qs=require(_0x9b4d('0x12'));var as=require(_0x9b4d('0x13'));var hardwareService=require(_0x9b4d('0x14'));var logger=require(_0x9b4d('0x15'))(_0x9b4d('0x16'));var utils=require(_0x9b4d('0x17'));var config=require(_0x9b4d('0x18'));var licenseUtil=require(_0x9b4d('0x19'));var db=require(_0x9b4d('0x1a'))['db'];function respondWithStatusCode(_0x1ea6b9,_0x312e95){_0x312e95=_0x312e95||0xcc;return function(_0x4881c4){if(_0x4881c4){return _0x1ea6b9[_0x9b4d('0x1b')](_0x312e95);}return _0x1ea6b9[_0x9b4d('0x1c')](_0x312e95)[_0x9b4d('0x1d')]();};}function respondWithResult(_0x3c4ae0,_0x5c5de2){_0x5c5de2=_0x5c5de2||0xc8;return function(_0x1dc9ee){if(_0x1dc9ee){return _0x3c4ae0['status'](_0x5c5de2)['json'](_0x1dc9ee);}};}function respondWithFilteredResult(_0x3e6921,_0x242de7){return function(_0x2660f2){if(_0x2660f2){var _0x1f9fb7=typeof _0x242de7[_0x9b4d('0x1e')]===_0x9b4d('0x1f')&&typeof _0x242de7['limit']==='undefined';var _0x66ddb9=_0x2660f2[_0x9b4d('0x20')];var _0x15e808=_0x1f9fb7?0x0:_0x242de7[_0x9b4d('0x1e')];var _0x1c52eb=_0x1f9fb7?_0x2660f2[_0x9b4d('0x20')]:_0x242de7[_0x9b4d('0x1e')]+_0x242de7[_0x9b4d('0x21')];var _0xd03471;if(_0x1c52eb>=_0x66ddb9){_0x1c52eb=_0x66ddb9;_0xd03471=0xc8;}else{_0xd03471=0xce;}_0x3e6921[_0x9b4d('0x1c')](_0xd03471);return _0x3e6921[_0x9b4d('0x22')](_0x9b4d('0x23'),_0x15e808+'-'+_0x1c52eb+'/'+_0x66ddb9)[_0x9b4d('0x24')](_0x2660f2);}return null;};}function patchUpdates(_0x2b03d6){return function(_0x12bc05){try{jsonpatch[_0x9b4d('0x25')](_0x12bc05,_0x2b03d6,!![]);}catch(_0x2c5d05){return BPromise[_0x9b4d('0x26')](_0x2c5d05);}return _0x12bc05[_0x9b4d('0x27')]();};}function saveUpdates(_0x35a282,_0x5ea613){return function(_0x3a698f){if(_0x3a698f){return _0x3a698f[_0x9b4d('0x28')](_0x35a282)[_0x9b4d('0x29')](function(_0x495676){return _0x495676;});}return null;};}function removeEntity(_0x38a0b6,_0x5daeda){return function(_0x478b5e){if(_0x478b5e){return _0x478b5e[_0x9b4d('0x2a')]()['then'](function(){_0x38a0b6[_0x9b4d('0x1c')](0xcc)[_0x9b4d('0x1d')]();});}};}function handleEntityNotFound(_0x5607b7,_0x15fe45){return function(_0xdd29f5){if(!_0xdd29f5){_0x5607b7[_0x9b4d('0x1b')](0x194);}return _0xdd29f5;};}function handleError(_0x495a31,_0x504b87){_0x504b87=_0x504b87||0x1f4;return function(_0x465013){logger[_0x9b4d('0x2b')](_0x465013['stack']);if(_0x465013[_0x9b4d('0x2c')]){delete _0x465013['name'];}_0x495a31[_0x9b4d('0x1c')](_0x504b87)['send'](_0x465013);};}exports[_0x9b4d('0x2d')]=function(_0x5dced4,_0x2fdd31){var _0xf006aa={},_0x5e9d1b={},_0x34ca4d={'count':0x0,'rows':[]};var _0x4a6ad8=_['map'](db[_0x9b4d('0x2e')][_0x9b4d('0x2f')],function(_0x4f9382){return{'name':_0x4f9382['fieldName'],'type':_0x4f9382[_0x9b4d('0x30')][_0x9b4d('0x31')]};});_0x5e9d1b[_0x9b4d('0x32')]=_[_0x9b4d('0x33')](_0x4a6ad8,_0x9b4d('0x2c'));_0x5e9d1b[_0x9b4d('0x34')]=_[_0x9b4d('0x35')](_0x5dced4[_0x9b4d('0x34')]);_0x5e9d1b[_0x9b4d('0x36')]=_[_0x9b4d('0x37')](_0x5e9d1b[_0x9b4d('0x32')],_0x5e9d1b[_0x9b4d('0x34')]);_0xf006aa[_0x9b4d('0x38')]=_[_0x9b4d('0x37')](_0x5e9d1b[_0x9b4d('0x32')],qs['fields'](_0x5dced4[_0x9b4d('0x34')]['fields']));_0xf006aa[_0x9b4d('0x38')]=_0xf006aa[_0x9b4d('0x38')][_0x9b4d('0x39')]?_0xf006aa[_0x9b4d('0x38')]:_0x5e9d1b[_0x9b4d('0x32')];if(!_0x5dced4[_0x9b4d('0x34')][_0x9b4d('0x3a')]('nolimit')){_0xf006aa[_0x9b4d('0x21')]=qs[_0x9b4d('0x21')](_0x5dced4[_0x9b4d('0x34')]['limit']);_0xf006aa['offset']=qs[_0x9b4d('0x1e')](_0x5dced4['query']['offset']);}_0xf006aa[_0x9b4d('0x3b')]=qs[_0x9b4d('0x3c')](_0x5dced4[_0x9b4d('0x34')][_0x9b4d('0x3c')]);_0xf006aa[_0x9b4d('0x3d')]=qs['filters'](_[_0x9b4d('0x3e')](_0x5dced4[_0x9b4d('0x34')],_0x5e9d1b['filters']),_0x4a6ad8);if(_0x5dced4[_0x9b4d('0x34')][_0x9b4d('0x3f')]){_0xf006aa[_0x9b4d('0x3d')]=_[_0x9b4d('0x40')](_0xf006aa[_0x9b4d('0x3d')],{'$or':_['map'](_0x4a6ad8,function(_0x4ce93e){if(_0x4ce93e[_0x9b4d('0x30')]!=='VIRTUAL'){var _0x232b87={};_0x232b87[_0x4ce93e[_0x9b4d('0x2c')]]={'$like':'%'+_0x5dced4['query'][_0x9b4d('0x3f')]+'%'};return _0x232b87;}})});}_0xf006aa=_['merge']({},_0xf006aa,_0x5dced4['options']);var _0x2d6432={'where':_0xf006aa['where']};return db[_0x9b4d('0x2e')][_0x9b4d('0x20')](_0x2d6432)[_0x9b4d('0x29')](function(_0x342ad3){_0x34ca4d[_0x9b4d('0x20')]=_0x342ad3;if(_0x5dced4[_0x9b4d('0x34')]['includeAll']){_0xf006aa[_0x9b4d('0x41')]=[{'all':!![]}];}return db['ChatQueueReport'][_0x9b4d('0x42')](_0xf006aa);})[_0x9b4d('0x29')](function(_0x514825){_0x34ca4d[_0x9b4d('0x43')]=_0x514825;return _0x34ca4d;})[_0x9b4d('0x29')](respondWithFilteredResult(_0x2fdd31,_0xf006aa))[_0x9b4d('0x44')](handleError(_0x2fdd31,null));};exports[_0x9b4d('0x45')]=function(_0x4f250f,_0x4834a4){var _0x17a6f0={'raw':!![],'where':{'id':_0x4f250f['params']['id']}},_0x4d0da9={};_0x4d0da9['model']=_[_0x9b4d('0x35')](db[_0x9b4d('0x2e')]['rawAttributes']);_0x4d0da9[_0x9b4d('0x34')]=_[_0x9b4d('0x35')](_0x4f250f[_0x9b4d('0x34')]);_0x4d0da9['filters']=_[_0x9b4d('0x37')](_0x4d0da9[_0x9b4d('0x32')],_0x4d0da9['query']);_0x17a6f0[_0x9b4d('0x38')]=_[_0x9b4d('0x37')](_0x4d0da9['model'],qs[_0x9b4d('0x46')](_0x4f250f[_0x9b4d('0x34')]['fields']));_0x17a6f0[_0x9b4d('0x38')]=_0x17a6f0[_0x9b4d('0x38')]['length']?_0x17a6f0[_0x9b4d('0x38')]:_0x4d0da9[_0x9b4d('0x32')];if(_0x4f250f[_0x9b4d('0x34')][_0x9b4d('0x47')]){_0x17a6f0['include']=[{'all':!![]}];}_0x17a6f0=_[_0x9b4d('0x40')]({},_0x17a6f0,_0x4f250f[_0x9b4d('0x48')]);return db[_0x9b4d('0x2e')][_0x9b4d('0x49')](_0x17a6f0)[_0x9b4d('0x29')](handleEntityNotFound(_0x4834a4,null))[_0x9b4d('0x29')](respondWithResult(_0x4834a4,null))[_0x9b4d('0x44')](handleError(_0x4834a4,null));};exports[_0x9b4d('0x4a')]=function(_0x58a972,_0x5ad303){return db['ChatQueueReport'][_0x9b4d('0x4a')](_0x58a972['body'],{})[_0x9b4d('0x29')](respondWithResult(_0x5ad303,0xc9))[_0x9b4d('0x44')](handleError(_0x5ad303,null));};exports[_0x9b4d('0x28')]=function(_0xe43754,_0x5aa12a){if(_0xe43754[_0x9b4d('0x4b')]['id']){delete _0xe43754['body']['id'];}return db['ChatQueueReport'][_0x9b4d('0x49')]({'where':{'id':_0xe43754[_0x9b4d('0x4c')]['id']}})[_0x9b4d('0x29')](handleEntityNotFound(_0x5aa12a,null))[_0x9b4d('0x29')](saveUpdates(_0xe43754[_0x9b4d('0x4b')],null))[_0x9b4d('0x29')](respondWithResult(_0x5aa12a,null))[_0x9b4d('0x44')](handleError(_0x5aa12a,null));};exports['destroy']=function(_0x5b6fed,_0x24b43f){return db[_0x9b4d('0x2e')][_0x9b4d('0x49')]({'where':{'id':_0x5b6fed[_0x9b4d('0x4c')]['id']}})[_0x9b4d('0x29')](handleEntityNotFound(_0x24b43f,null))[_0x9b4d('0x29')](removeEntity(_0x24b43f,null))[_0x9b4d('0x44')](handleError(_0x24b43f,null));};exports[_0x9b4d('0x4d')]=function(_0x24aa34,_0x3b96b9){return db[_0x9b4d('0x2e')][_0x9b4d('0x4d')]()[_0x9b4d('0x29')](respondWithResult(_0x3b96b9,null))[_0x9b4d('0x44')](handleError(_0x3b96b9,null));};
\ No newline at end of file
index dbd5cc1..ef8f1ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0xdd7115,_0x397af4){var _0x443901=function(_0x1f93a8){while(--_0x1f93a8){_0xdd7115['push'](_0xdd7115['shift']());}};_0x443901(++_0x397af4);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x38c632,_0x14e8e6){var _0x12737e=function(_0x3e0fe4){while(--_0x3e0fe4){_0x38c632['push'](_0x38c632['shift']());}};_0x12737e(++_0x14e8e6);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 7c7c942..c2eb7e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30cc=['catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','UpdateChatQueueReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x40e854,_0x42f1f6){var _0x1463b3=function(_0x17b100){while(--_0x17b100){_0x40e854['push'](_0x40e854['shift']());}};_0x1463b3(++_0x42f1f6);}(_0x30cc,0xfa));var _0xc30c=function(_0x3ba422,_0x53303c){_0x3ba422=_0x3ba422-0x0;var _0x20b5dd=_0x30cc[_0x3ba422];return _0x20b5dd;};'use strict';var _=require(_0xc30c('0x0'));var util=require(_0xc30c('0x1'));var moment=require('moment');var BPromise=require(_0xc30c('0x2'));var rs=require(_0xc30c('0x3'));var fs=require('fs');var Redis=require(_0xc30c('0x4'));var db=require(_0xc30c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc30c('0x6'))(_0xc30c('0x7'));var config=require('../../config/environment');var jayson=require(_0xc30c('0x8'));var client=jayson[_0xc30c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16eaea,_0x5382c9,_0x5c2bf1){return new BPromise(function(_0x23a7cf,_0x170f16){return client[_0xc30c('0xa')](_0x16eaea,_0x5c2bf1)[_0xc30c('0xb')](function(_0x1cdf47){logger[_0xc30c('0xc')](_0xc30c('0xd'),_0x5382c9,_0xc30c('0xe'));logger[_0xc30c('0xf')](_0xc30c('0x10'),_0x5382c9,_0xc30c('0xe'),JSON[_0xc30c('0x11')](_0x1cdf47));if(_0x1cdf47[_0xc30c('0x12')]){if(_0x1cdf47[_0xc30c('0x12')][_0xc30c('0x13')]===0x1f4){logger[_0xc30c('0x12')](_0xc30c('0xd'),_0x5382c9,_0x1cdf47[_0xc30c('0x12')][_0xc30c('0x14')]);return _0x170f16(_0x1cdf47[_0xc30c('0x12')][_0xc30c('0x14')]);}logger[_0xc30c('0x12')](_0xc30c('0xd'),_0x5382c9,_0x1cdf47[_0xc30c('0x12')][_0xc30c('0x14')]);return _0x23a7cf(_0x1cdf47[_0xc30c('0x12')][_0xc30c('0x14')]);}else{logger[_0xc30c('0xc')](_0xc30c('0xd'),_0x5382c9,_0xc30c('0xe'));_0x23a7cf(_0x1cdf47[_0xc30c('0x15')][_0xc30c('0x14')]);}})[_0xc30c('0x16')](function(_0x73a4ef){logger['error'](_0xc30c('0xd'),_0x5382c9,_0x73a4ef);_0x170f16(_0x73a4ef);});});}exports[_0xc30c('0x17')]=function(_0x5887fa){var _0x4a85cd=this;return new Promise(function(_0x26126d,_0x4da63e){return db[_0xc30c('0x18')][_0xc30c('0x19')](_0x5887fa[_0xc30c('0x1a')],{'raw':_0x5887fa['options']?_0x5887fa[_0xc30c('0x1b')][_0xc30c('0x1c')]===undefined?!![]:![]:!![]})[_0xc30c('0xb')](function(_0x7ee56e){logger[_0xc30c('0xc')](_0xc30c('0x17'),_0x5887fa);logger[_0xc30c('0xf')]('CreateChatQueueReport',_0x5887fa,JSON[_0xc30c('0x11')](_0x7ee56e));_0x26126d(_0x7ee56e);})[_0xc30c('0x16')](function(_0x4162f9){logger[_0xc30c('0x12')](_0xc30c('0x17'),_0x4162f9[_0xc30c('0x14')],_0x5887fa);_0x4da63e(_0x4a85cd[_0xc30c('0x12')](0x1f4,_0x4162f9[_0xc30c('0x14')]));});});};exports[_0xc30c('0x1d')]=function(_0xb142d9){var _0x423b33=this;return new Promise(function(_0xa6b8a1,_0x4e60e8){return db['ChatQueueReport'][_0xc30c('0x1e')](_0xb142d9[_0xc30c('0x1a')],{'raw':_0xb142d9[_0xc30c('0x1b')]?_0xb142d9[_0xc30c('0x1b')][_0xc30c('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb142d9[_0xc30c('0x1b')]?_0xb142d9[_0xc30c('0x1b')][_0xc30c('0x1f')]||null:null,'attributes':_0xb142d9[_0xc30c('0x1b')]?_0xb142d9[_0xc30c('0x1b')][_0xc30c('0x20')]||null:null,'limit':_0xb142d9['options']?_0xb142d9[_0xc30c('0x1b')][_0xc30c('0x21')]||null:null})['then'](function(_0x31c4b8){logger[_0xc30c('0xc')](_0xc30c('0x1d'),_0xb142d9);logger[_0xc30c('0xf')]('UpdateChatQueueReport',_0xb142d9,JSON['stringify'](_0x31c4b8));_0xa6b8a1(_0x31c4b8);})['catch'](function(_0x30014c){logger[_0xc30c('0x12')](_0xc30c('0x1d'),_0x30014c[_0xc30c('0x14')],_0xb142d9);_0x4e60e8(_0x423b33[_0xc30c('0x12')](0x1f4,_0x30014c['message']));});});};
\ No newline at end of file
+var _0xf637=['../../config/environment','client','http','request','then','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','catch','UpdateChatQueueReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0xe49211,_0x25d19c){var _0x5d1e5c=function(_0x176319){while(--_0x176319){_0xe49211['push'](_0xe49211['shift']());}};_0x5d1e5c(++_0x25d19c);}(_0xf637,0x179));var _0x7f63=function(_0x3da222,_0x319a2b){_0x3da222=_0x3da222-0x0;var _0x4c6bd7=_0xf637[_0x3da222];return _0x4c6bd7;};'use strict';var _=require(_0x7f63('0x0'));var util=require(_0x7f63('0x1'));var moment=require(_0x7f63('0x2'));var BPromise=require(_0x7f63('0x3'));var rs=require(_0x7f63('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7f63('0x5'))['db'];var utils=require(_0x7f63('0x6'));var logger=require('../../config/logger')(_0x7f63('0x7'));var config=require(_0x7f63('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7f63('0x9')][_0x7f63('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5576c1,_0x2c524b,_0xfd7170){return new BPromise(function(_0x9e7899,_0x312cbb){return client[_0x7f63('0xb')](_0x5576c1,_0xfd7170)[_0x7f63('0xc')](function(_0x4dd27a){logger['info'](_0x7f63('0xd'),_0x2c524b,_0x7f63('0xe'));logger[_0x7f63('0xf')](_0x7f63('0x10'),_0x2c524b,_0x7f63('0xe'),JSON[_0x7f63('0x11')](_0x4dd27a));if(_0x4dd27a[_0x7f63('0x12')]){if(_0x4dd27a['error'][_0x7f63('0x13')]===0x1f4){logger[_0x7f63('0x12')](_0x7f63('0xd'),_0x2c524b,_0x4dd27a[_0x7f63('0x12')]['message']);return _0x312cbb(_0x4dd27a[_0x7f63('0x12')][_0x7f63('0x14')]);}logger[_0x7f63('0x12')](_0x7f63('0xd'),_0x2c524b,_0x4dd27a[_0x7f63('0x12')][_0x7f63('0x14')]);return _0x9e7899(_0x4dd27a[_0x7f63('0x12')][_0x7f63('0x14')]);}else{logger[_0x7f63('0x15')]('ChatQueueReport,\x20%s,\x20%s',_0x2c524b,_0x7f63('0xe'));_0x9e7899(_0x4dd27a[_0x7f63('0x16')]['message']);}})['catch'](function(_0x285825){logger[_0x7f63('0x12')](_0x7f63('0xd'),_0x2c524b,_0x285825);_0x312cbb(_0x285825);});});}exports[_0x7f63('0x17')]=function(_0x1a553c){var _0x5a7980=this;return new Promise(function(_0x52ab4b,_0x33a982){return db[_0x7f63('0x18')][_0x7f63('0x19')](_0x1a553c[_0x7f63('0x1a')],{'raw':_0x1a553c[_0x7f63('0x1b')]?_0x1a553c['options'][_0x7f63('0x1c')]===undefined?!![]:![]:!![]})[_0x7f63('0xc')](function(_0x4472b3){logger[_0x7f63('0x15')](_0x7f63('0x17'),_0x1a553c);logger[_0x7f63('0xf')](_0x7f63('0x17'),_0x1a553c,JSON[_0x7f63('0x11')](_0x4472b3));_0x52ab4b(_0x4472b3);})[_0x7f63('0x1d')](function(_0x40d668){logger['error']('CreateChatQueueReport',_0x40d668['message'],_0x1a553c);_0x33a982(_0x5a7980['error'](0x1f4,_0x40d668[_0x7f63('0x14')]));});});};exports[_0x7f63('0x1e')]=function(_0x584bc7){var _0x18bbd0=this;return new Promise(function(_0x235fd1,_0x424060){return db[_0x7f63('0x18')][_0x7f63('0x1f')](_0x584bc7['body'],{'raw':_0x584bc7[_0x7f63('0x1b')]?_0x584bc7[_0x7f63('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x584bc7[_0x7f63('0x1b')]?_0x584bc7[_0x7f63('0x1b')][_0x7f63('0x20')]||null:null,'attributes':_0x584bc7['options']?_0x584bc7[_0x7f63('0x1b')][_0x7f63('0x21')]||null:null,'limit':_0x584bc7['options']?_0x584bc7[_0x7f63('0x1b')][_0x7f63('0x22')]||null:null})[_0x7f63('0xc')](function(_0x2776dc){logger[_0x7f63('0x15')](_0x7f63('0x1e'),_0x584bc7);logger[_0x7f63('0xf')]('UpdateChatQueueReport',_0x584bc7,JSON[_0x7f63('0x11')](_0x2776dc));_0x235fd1(_0x2776dc);})[_0x7f63('0x1d')](function(_0x211535){logger['error'](_0x7f63('0x1e'),_0x211535[_0x7f63('0x14')],_0x584bc7);_0x424060(_0x18bbd0['error'](0x1f4,_0x211535[_0x7f63('0x14')]));});});};
\ No newline at end of file
index 38b967a..2f18899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ce7=['/:id','show','post','create','put','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','get','index','/describe','isAuthenticated','describe'];(function(_0x4f337f,_0x594023){var _0x8705f1=function(_0x5932ac){while(--_0x5932ac){_0x4f337f['push'](_0x4f337f['shift']());}};_0x8705f1(++_0x594023);}(_0x7ce7,0xcf));var _0x77ce=function(_0x3ab4be,_0x40d624){_0x3ab4be=_0x3ab4be-0x0;var _0x4ecbd4=_0x7ce7[_0x3ab4be];return _0x4ecbd4;};'use strict';var multer=require(_0x77ce('0x0'));var util=require(_0x77ce('0x1'));var path=require(_0x77ce('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x77ce('0x3')]();var fs_extra=require(_0x77ce('0x4'));var auth=require(_0x77ce('0x5'));var interaction=require(_0x77ce('0x6'));var config=require('../../config/environment');var controller=require(_0x77ce('0x7'));router[_0x77ce('0x8')]('/',auth['isAuthenticated'](),controller[_0x77ce('0x9')]);router[_0x77ce('0x8')](_0x77ce('0xa'),auth[_0x77ce('0xb')](),controller[_0x77ce('0xc')]);router[_0x77ce('0x8')](_0x77ce('0xd'),auth[_0x77ce('0xb')](),controller[_0x77ce('0xe')]);router[_0x77ce('0xf')]('/',auth[_0x77ce('0xb')](),controller[_0x77ce('0x10')]);router[_0x77ce('0x11')]('/:id',auth[_0x77ce('0xb')](),controller['update']);router[_0x77ce('0x12')](_0x77ce('0xd'),auth[_0x77ce('0xb')](),controller['destroy']);module[_0x77ce('0x13')]=router;
\ No newline at end of file
+var _0xa3b0=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','/:id','post','put','update','delete','exports','multer','path','express','Router','fs-extra'];(function(_0x56efbd,_0xb7ace8){var _0x333d91=function(_0x1f47d2){while(--_0x1f47d2){_0x56efbd['push'](_0x56efbd['shift']());}};_0x333d91(++_0xb7ace8);}(_0xa3b0,0x118));var _0x0a3b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa3b0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x0a3b('0x0'));var util=require('util');var path=require(_0x0a3b('0x1'));var timeout=require('connect-timeout');var express=require(_0x0a3b('0x2'));var router=express[_0x0a3b('0x3')]();var fs_extra=require(_0x0a3b('0x4'));var auth=require(_0x0a3b('0x5'));var interaction=require(_0x0a3b('0x6'));var config=require(_0x0a3b('0x7'));var controller=require(_0x0a3b('0x8'));router[_0x0a3b('0x9')]('/',auth[_0x0a3b('0xa')](),controller[_0x0a3b('0xb')]);router[_0x0a3b('0x9')](_0x0a3b('0xc'),auth[_0x0a3b('0xa')](),controller['describe']);router[_0x0a3b('0x9')](_0x0a3b('0xd'),auth[_0x0a3b('0xa')](),controller['show']);router[_0x0a3b('0xe')]('/',auth[_0x0a3b('0xa')](),controller['create']);router[_0x0a3b('0xf')]('/:id',auth[_0x0a3b('0xa')](),controller[_0x0a3b('0x10')]);router[_0x0a3b('0x11')](_0x0a3b('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x0a3b('0x12')]=router;
\ No newline at end of file
index bd5a920..a2e995a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x353d3d,_0xc7ebc){var _0x1c5409=function(_0x54838e){while(--_0x54838e){_0x353d3d['push'](_0x353d3d['shift']());}};_0x1c5409(++_0xc7ebc);}(_0x008c,0x188));var _0xc008=function(_0x6c9b2c,_0x2e1e98){_0x6c9b2c=_0x6c9b2c-0x0;var _0x2dbb9c=_0x008c[_0x6c9b2c];return _0x2dbb9c;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x325501,_0x5242f6){var _0x2c1626=function(_0x4270b2){while(--_0x4270b2){_0x325501['push'](_0x325501['shift']());}};_0x2c1626(++_0x5242f6);}(_0x9bde,0xe1));var _0xe9bd=function(_0x45f53c,_0x3cd706){_0x45f53c=_0x45f53c-0x0;var _0x55f97c=_0x9bde[_0x45f53c];return _0x55f97c;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index cca3c71..395b079 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a9f=['includeAll','create','body','find','params','describe','eml-format','zip-dir','fast-json-patch','bluebird','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','catch','show','length'];(function(_0x198ed7,_0x35978d){var _0x28b202=function(_0x4532be){while(--_0x4532be){_0x198ed7['push'](_0x198ed7['shift']());}};_0x28b202(++_0x35978d);}(_0x4a9f,0x90));var _0xf4a9=function(_0x2a928e,_0x58b864){_0x2a928e=_0x2a928e-0x0;var _0x292d7e=_0x4a9f[_0x2a928e];return _0x292d7e;};'use strict';var emlformat=require(_0xf4a9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf4a9('0x1'));var jsonpatch=require(_0xf4a9('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf4a9('0x3'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xf4a9('0x4'));var csv=require('to-csv');var ejs=require(_0xf4a9('0x5'));var fs=require('fs');var fs_extra=require(_0xf4a9('0x6'));var _=require(_0xf4a9('0x7'));var squel=require(_0xf4a9('0x8'));var crypto=require(_0xf4a9('0x9'));var jsforce=require(_0xf4a9('0xa'));var deskjs=require(_0xf4a9('0xb'));var toCsv=require('to-csv');var querystring=require(_0xf4a9('0xc'));var Papa=require(_0xf4a9('0xd'));var Redis=require('ioredis');var authService=require(_0xf4a9('0xe'));var qs=require(_0xf4a9('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf4a9('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xf4a9('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf4a9('0x12'))['db'];function respondWithStatusCode(_0x5565ce,_0x53329a){_0x53329a=_0x53329a||0xcc;return function(_0x3bf346){if(_0x3bf346){return _0x5565ce[_0xf4a9('0x13')](_0x53329a);}return _0x5565ce[_0xf4a9('0x14')](_0x53329a)[_0xf4a9('0x15')]();};}function respondWithResult(_0x191268,_0x262c79){_0x262c79=_0x262c79||0xc8;return function(_0x53aa4c){if(_0x53aa4c){return _0x191268['status'](_0x262c79)[_0xf4a9('0x16')](_0x53aa4c);}};}function respondWithFilteredResult(_0xd7bdee,_0x116caa){return function(_0x385916){if(_0x385916){var _0xb1e997=typeof _0x116caa['offset']===_0xf4a9('0x17')&&typeof _0x116caa[_0xf4a9('0x18')]===_0xf4a9('0x17');var _0x3a6674=_0x385916['count'];var _0x1880a9=_0xb1e997?0x0:_0x116caa[_0xf4a9('0x19')];var _0x30451b=_0xb1e997?_0x385916[_0xf4a9('0x1a')]:_0x116caa[_0xf4a9('0x19')]+_0x116caa[_0xf4a9('0x18')];var _0x25a8db;if(_0x30451b>=_0x3a6674){_0x30451b=_0x3a6674;_0x25a8db=0xc8;}else{_0x25a8db=0xce;}_0xd7bdee[_0xf4a9('0x14')](_0x25a8db);return _0xd7bdee['set'](_0xf4a9('0x1b'),_0x1880a9+'-'+_0x30451b+'/'+_0x3a6674)[_0xf4a9('0x16')](_0x385916);}return null;};}function patchUpdates(_0x340edc){return function(_0x293179){try{jsonpatch['apply'](_0x293179,_0x340edc,!![]);}catch(_0x3b0579){return BPromise[_0xf4a9('0x1c')](_0x3b0579);}return _0x293179[_0xf4a9('0x1d')]();};}function saveUpdates(_0x292a1b,_0xfe34a8){return function(_0x33e1e6){if(_0x33e1e6){return _0x33e1e6[_0xf4a9('0x1e')](_0x292a1b)[_0xf4a9('0x1f')](function(_0x39784f){return _0x39784f;});}return null;};}function removeEntity(_0x2cd558,_0x3a9523){return function(_0x5a28c9){if(_0x5a28c9){return _0x5a28c9[_0xf4a9('0x20')]()['then'](function(){_0x2cd558[_0xf4a9('0x14')](0xcc)[_0xf4a9('0x15')]();});}};}function handleEntityNotFound(_0x49c0e8,_0x3bfa64){return function(_0x43ce7a){if(!_0x43ce7a){_0x49c0e8[_0xf4a9('0x13')](0x194);}return _0x43ce7a;};}function handleError(_0x223ad8,_0x3370a5){_0x3370a5=_0x3370a5||0x1f4;return function(_0x2feeb3){logger[_0xf4a9('0x21')](_0x2feeb3[_0xf4a9('0x22')]);if(_0x2feeb3[_0xf4a9('0x23')]){delete _0x2feeb3[_0xf4a9('0x23')];}_0x223ad8[_0xf4a9('0x14')](_0x3370a5)[_0xf4a9('0x24')](_0x2feeb3);};}exports[_0xf4a9('0x25')]=function(_0x2c0cd5,_0x25fa33){var _0x4e18a0={},_0x33bd7b={},_0x3d1ab3={'count':0x0,'rows':[]};var _0x2ba509=_[_0xf4a9('0x26')](db[_0xf4a9('0x27')][_0xf4a9('0x28')],function(_0x296d82){return{'name':_0x296d82[_0xf4a9('0x29')],'type':_0x296d82[_0xf4a9('0x2a')][_0xf4a9('0x2b')]};});_0x33bd7b[_0xf4a9('0x2c')]=_['map'](_0x2ba509,_0xf4a9('0x23'));_0x33bd7b[_0xf4a9('0x2d')]=_[_0xf4a9('0x2e')](_0x2c0cd5[_0xf4a9('0x2d')]);_0x33bd7b[_0xf4a9('0x2f')]=_[_0xf4a9('0x30')](_0x33bd7b[_0xf4a9('0x2c')],_0x33bd7b['query']);_0x4e18a0[_0xf4a9('0x31')]=_[_0xf4a9('0x30')](_0x33bd7b['model'],qs['fields'](_0x2c0cd5[_0xf4a9('0x2d')][_0xf4a9('0x32')]));_0x4e18a0[_0xf4a9('0x31')]=_0x4e18a0[_0xf4a9('0x31')]['length']?_0x4e18a0[_0xf4a9('0x31')]:_0x33bd7b[_0xf4a9('0x2c')];if(!_0x2c0cd5[_0xf4a9('0x2d')]['hasOwnProperty']('nolimit')){_0x4e18a0['limit']=qs[_0xf4a9('0x18')](_0x2c0cd5[_0xf4a9('0x2d')][_0xf4a9('0x18')]);_0x4e18a0[_0xf4a9('0x19')]=qs[_0xf4a9('0x19')](_0x2c0cd5['query']['offset']);}_0x4e18a0[_0xf4a9('0x33')]=qs[_0xf4a9('0x34')](_0x2c0cd5[_0xf4a9('0x2d')][_0xf4a9('0x34')]);_0x4e18a0[_0xf4a9('0x35')]=qs[_0xf4a9('0x2f')](_['pick'](_0x2c0cd5[_0xf4a9('0x2d')],_0x33bd7b[_0xf4a9('0x2f')]),_0x2ba509);if(_0x2c0cd5[_0xf4a9('0x2d')][_0xf4a9('0x36')]){_0x4e18a0[_0xf4a9('0x35')]=_[_0xf4a9('0x37')](_0x4e18a0[_0xf4a9('0x35')],{'$or':_[_0xf4a9('0x26')](_0x2ba509,function(_0x44188f){if(_0x44188f[_0xf4a9('0x2a')]!==_0xf4a9('0x38')){var _0x3b1f31={};_0x3b1f31[_0x44188f[_0xf4a9('0x23')]]={'$like':'%'+_0x2c0cd5['query'][_0xf4a9('0x36')]+'%'};return _0x3b1f31;}})});}_0x4e18a0=_['merge']({},_0x4e18a0,_0x2c0cd5[_0xf4a9('0x39')]);var _0x1ab9eb={'where':_0x4e18a0['where']};return db['ChatTransferReport'][_0xf4a9('0x1a')](_0x1ab9eb)[_0xf4a9('0x1f')](function(_0xc7aad8){_0x3d1ab3[_0xf4a9('0x1a')]=_0xc7aad8;if(_0x2c0cd5[_0xf4a9('0x2d')]['includeAll']){_0x4e18a0[_0xf4a9('0x3a')]=[{'all':!![]}];}return db[_0xf4a9('0x27')][_0xf4a9('0x3b')](_0x4e18a0);})[_0xf4a9('0x1f')](function(_0x30bbfe){_0x3d1ab3['rows']=_0x30bbfe;return _0x3d1ab3;})[_0xf4a9('0x1f')](respondWithFilteredResult(_0x25fa33,_0x4e18a0))[_0xf4a9('0x3c')](handleError(_0x25fa33,null));};exports[_0xf4a9('0x3d')]=function(_0x5c1a80,_0x4b961f){var _0x5b6c6c={'raw':!![],'where':{'id':_0x5c1a80['params']['id']}},_0x44ce7b={};_0x44ce7b[_0xf4a9('0x2c')]=_[_0xf4a9('0x2e')](db['ChatTransferReport'][_0xf4a9('0x28')]);_0x44ce7b['query']=_[_0xf4a9('0x2e')](_0x5c1a80[_0xf4a9('0x2d')]);_0x44ce7b[_0xf4a9('0x2f')]=_[_0xf4a9('0x30')](_0x44ce7b[_0xf4a9('0x2c')],_0x44ce7b[_0xf4a9('0x2d')]);_0x5b6c6c[_0xf4a9('0x31')]=_[_0xf4a9('0x30')](_0x44ce7b[_0xf4a9('0x2c')],qs[_0xf4a9('0x32')](_0x5c1a80[_0xf4a9('0x2d')][_0xf4a9('0x32')]));_0x5b6c6c[_0xf4a9('0x31')]=_0x5b6c6c['attributes'][_0xf4a9('0x3e')]?_0x5b6c6c[_0xf4a9('0x31')]:_0x44ce7b['model'];if(_0x5c1a80[_0xf4a9('0x2d')][_0xf4a9('0x3f')]){_0x5b6c6c[_0xf4a9('0x3a')]=[{'all':!![]}];}_0x5b6c6c=_[_0xf4a9('0x37')]({},_0x5b6c6c,_0x5c1a80['options']);return db['ChatTransferReport']['find'](_0x5b6c6c)['then'](handleEntityNotFound(_0x4b961f,null))[_0xf4a9('0x1f')](respondWithResult(_0x4b961f,null))[_0xf4a9('0x3c')](handleError(_0x4b961f,null));};exports[_0xf4a9('0x40')]=function(_0x463ba4,_0x5054a6){return db[_0xf4a9('0x27')][_0xf4a9('0x40')](_0x463ba4[_0xf4a9('0x41')],{})['then'](respondWithResult(_0x5054a6,0xc9))[_0xf4a9('0x3c')](handleError(_0x5054a6,null));};exports[_0xf4a9('0x1e')]=function(_0x5e284a,_0x4bbf69){if(_0x5e284a[_0xf4a9('0x41')]['id']){delete _0x5e284a[_0xf4a9('0x41')]['id'];}return db[_0xf4a9('0x27')][_0xf4a9('0x42')]({'where':{'id':_0x5e284a[_0xf4a9('0x43')]['id']}})[_0xf4a9('0x1f')](handleEntityNotFound(_0x4bbf69,null))['then'](saveUpdates(_0x5e284a['body'],null))['then'](respondWithResult(_0x4bbf69,null))[_0xf4a9('0x3c')](handleError(_0x4bbf69,null));};exports['destroy']=function(_0x5c6c3d,_0xdab8d4){return db[_0xf4a9('0x27')][_0xf4a9('0x42')]({'where':{'id':_0x5c6c3d[_0xf4a9('0x43')]['id']}})[_0xf4a9('0x1f')](handleEntityNotFound(_0xdab8d4,null))[_0xf4a9('0x1f')](removeEntity(_0xdab8d4,null))[_0xf4a9('0x3c')](handleError(_0xdab8d4,null));};exports[_0xf4a9('0x44')]=function(_0x24cc09,_0x17d262){return db[_0xf4a9('0x27')][_0xf4a9('0x44')]()[_0xf4a9('0x1f')](respondWithResult(_0x17d262,null))[_0xf4a9('0x3c')](handleError(_0x17d262,null));};
\ No newline at end of file
+var _0x2c91=['ChatTransferReport','rawAttributes','fieldName','type','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map'];(function(_0x346645,_0x3e9d9c){var _0x32f590=function(_0x5b1bb5){while(--_0x5b1bb5){_0x346645['push'](_0x346645['shift']());}};_0x32f590(++_0x3e9d9c);}(_0x2c91,0x70));var _0x12c9=function(_0x12ce59,_0x4ffbfc){_0x12ce59=_0x12ce59-0x0;var _0x4b455d=_0x2c91[_0x12ce59];return _0x4b455d;};'use strict';var emlformat=require(_0x12c9('0x0'));var rimraf=require(_0x12c9('0x1'));var zipdir=require(_0x12c9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x12c9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x12c9('0x4'));var util=require(_0x12c9('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x12c9('0x6'));var ejs=require(_0x12c9('0x7'));var fs=require('fs');var fs_extra=require(_0x12c9('0x8'));var _=require(_0x12c9('0x9'));var squel=require(_0x12c9('0xa'));var crypto=require(_0x12c9('0xb'));var jsforce=require(_0x12c9('0xc'));var deskjs=require(_0x12c9('0xd'));var toCsv=require(_0x12c9('0x6'));var querystring=require(_0x12c9('0xe'));var Papa=require(_0x12c9('0xf'));var Redis=require(_0x12c9('0x10'));var authService=require(_0x12c9('0x11'));var qs=require(_0x12c9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x12c9('0x13'));var logger=require(_0x12c9('0x14'))(_0x12c9('0x15'));var utils=require('../../config/utils');var config=require(_0x12c9('0x16'));var licenseUtil=require(_0x12c9('0x17'));var db=require(_0x12c9('0x18'))['db'];function respondWithStatusCode(_0x1f155c,_0x7ac307){_0x7ac307=_0x7ac307||0xcc;return function(_0x37cbf0){if(_0x37cbf0){return _0x1f155c['sendStatus'](_0x7ac307);}return _0x1f155c[_0x12c9('0x19')](_0x7ac307)[_0x12c9('0x1a')]();};}function respondWithResult(_0x1a7659,_0x1a9c6c){_0x1a9c6c=_0x1a9c6c||0xc8;return function(_0x3c4bc2){if(_0x3c4bc2){return _0x1a7659['status'](_0x1a9c6c)[_0x12c9('0x1b')](_0x3c4bc2);}};}function respondWithFilteredResult(_0x25a4bb,_0xd91367){return function(_0x6188c4){if(_0x6188c4){var _0x27f46f=typeof _0xd91367[_0x12c9('0x1c')]===_0x12c9('0x1d')&&typeof _0xd91367[_0x12c9('0x1e')]==='undefined';var _0x11ed1f=_0x6188c4[_0x12c9('0x1f')];var _0x5985bc=_0x27f46f?0x0:_0xd91367['offset'];var _0x20b28d=_0x27f46f?_0x6188c4[_0x12c9('0x1f')]:_0xd91367[_0x12c9('0x1c')]+_0xd91367[_0x12c9('0x1e')];var _0x1e023d;if(_0x20b28d>=_0x11ed1f){_0x20b28d=_0x11ed1f;_0x1e023d=0xc8;}else{_0x1e023d=0xce;}_0x25a4bb['status'](_0x1e023d);return _0x25a4bb['set'](_0x12c9('0x20'),_0x5985bc+'-'+_0x20b28d+'/'+_0x11ed1f)[_0x12c9('0x1b')](_0x6188c4);}return null;};}function patchUpdates(_0x18f718){return function(_0x274a78){try{jsonpatch[_0x12c9('0x21')](_0x274a78,_0x18f718,!![]);}catch(_0x316dcf){return BPromise[_0x12c9('0x22')](_0x316dcf);}return _0x274a78[_0x12c9('0x23')]();};}function saveUpdates(_0x1f1fd1,_0x4f2f7d){return function(_0x362af3){if(_0x362af3){return _0x362af3[_0x12c9('0x24')](_0x1f1fd1)[_0x12c9('0x25')](function(_0x2439b7){return _0x2439b7;});}return null;};}function removeEntity(_0x3c68b0,_0x2234cb){return function(_0x11617e){if(_0x11617e){return _0x11617e['destroy']()[_0x12c9('0x25')](function(){_0x3c68b0[_0x12c9('0x19')](0xcc)[_0x12c9('0x1a')]();});}};}function handleEntityNotFound(_0x30fa0c,_0x231d04){return function(_0x2c5e99){if(!_0x2c5e99){_0x30fa0c['sendStatus'](0x194);}return _0x2c5e99;};}function handleError(_0x368bed,_0x217490){_0x217490=_0x217490||0x1f4;return function(_0x3bc411){logger[_0x12c9('0x26')](_0x3bc411[_0x12c9('0x27')]);if(_0x3bc411[_0x12c9('0x28')]){delete _0x3bc411[_0x12c9('0x28')];}_0x368bed[_0x12c9('0x19')](_0x217490)[_0x12c9('0x29')](_0x3bc411);};}exports[_0x12c9('0x2a')]=function(_0xbf94cd,_0x4519dd){var _0x23b394={},_0x2063bd={},_0x244f94={'count':0x0,'rows':[]};var _0xcc7993=_[_0x12c9('0x2b')](db[_0x12c9('0x2c')][_0x12c9('0x2d')],function(_0x2f17ea){return{'name':_0x2f17ea[_0x12c9('0x2e')],'type':_0x2f17ea[_0x12c9('0x2f')]['key']};});_0x2063bd[_0x12c9('0x30')]=_['map'](_0xcc7993,'name');_0x2063bd['query']=_[_0x12c9('0x31')](_0xbf94cd[_0x12c9('0x32')]);_0x2063bd['filters']=_[_0x12c9('0x33')](_0x2063bd[_0x12c9('0x30')],_0x2063bd['query']);_0x23b394['attributes']=_['intersection'](_0x2063bd[_0x12c9('0x30')],qs[_0x12c9('0x34')](_0xbf94cd[_0x12c9('0x32')][_0x12c9('0x34')]));_0x23b394['attributes']=_0x23b394[_0x12c9('0x35')][_0x12c9('0x36')]?_0x23b394['attributes']:_0x2063bd['model'];if(!_0xbf94cd[_0x12c9('0x32')][_0x12c9('0x37')](_0x12c9('0x38'))){_0x23b394[_0x12c9('0x1e')]=qs['limit'](_0xbf94cd[_0x12c9('0x32')][_0x12c9('0x1e')]);_0x23b394[_0x12c9('0x1c')]=qs[_0x12c9('0x1c')](_0xbf94cd[_0x12c9('0x32')][_0x12c9('0x1c')]);}_0x23b394[_0x12c9('0x39')]=qs[_0x12c9('0x3a')](_0xbf94cd[_0x12c9('0x32')][_0x12c9('0x3a')]);_0x23b394['where']=qs[_0x12c9('0x3b')](_[_0x12c9('0x3c')](_0xbf94cd[_0x12c9('0x32')],_0x2063bd[_0x12c9('0x3b')]),_0xcc7993);if(_0xbf94cd['query']['filter']){_0x23b394[_0x12c9('0x3d')]=_[_0x12c9('0x3e')](_0x23b394[_0x12c9('0x3d')],{'$or':_['map'](_0xcc7993,function(_0x586316){if(_0x586316[_0x12c9('0x2f')]!==_0x12c9('0x3f')){var _0x180f46={};_0x180f46[_0x586316[_0x12c9('0x28')]]={'$like':'%'+_0xbf94cd[_0x12c9('0x32')][_0x12c9('0x40')]+'%'};return _0x180f46;}})});}_0x23b394=_[_0x12c9('0x3e')]({},_0x23b394,_0xbf94cd[_0x12c9('0x41')]);var _0x4767e5={'where':_0x23b394[_0x12c9('0x3d')]};return db[_0x12c9('0x2c')][_0x12c9('0x1f')](_0x4767e5)['then'](function(_0x211f7b){_0x244f94['count']=_0x211f7b;if(_0xbf94cd['query']['includeAll']){_0x23b394[_0x12c9('0x42')]=[{'all':!![]}];}return db[_0x12c9('0x2c')][_0x12c9('0x43')](_0x23b394);})[_0x12c9('0x25')](function(_0x48c0df){_0x244f94[_0x12c9('0x44')]=_0x48c0df;return _0x244f94;})['then'](respondWithFilteredResult(_0x4519dd,_0x23b394))[_0x12c9('0x45')](handleError(_0x4519dd,null));};exports[_0x12c9('0x46')]=function(_0xb9a6ac,_0x52b0e0){var _0x5a8d31={'raw':!![],'where':{'id':_0xb9a6ac['params']['id']}},_0x284ed8={};_0x284ed8[_0x12c9('0x30')]=_['keys'](db[_0x12c9('0x2c')][_0x12c9('0x2d')]);_0x284ed8[_0x12c9('0x32')]=_[_0x12c9('0x31')](_0xb9a6ac[_0x12c9('0x32')]);_0x284ed8['filters']=_[_0x12c9('0x33')](_0x284ed8[_0x12c9('0x30')],_0x284ed8[_0x12c9('0x32')]);_0x5a8d31[_0x12c9('0x35')]=_[_0x12c9('0x33')](_0x284ed8[_0x12c9('0x30')],qs[_0x12c9('0x34')](_0xb9a6ac['query'][_0x12c9('0x34')]));_0x5a8d31['attributes']=_0x5a8d31[_0x12c9('0x35')]['length']?_0x5a8d31[_0x12c9('0x35')]:_0x284ed8[_0x12c9('0x30')];if(_0xb9a6ac[_0x12c9('0x32')][_0x12c9('0x47')]){_0x5a8d31[_0x12c9('0x42')]=[{'all':!![]}];}_0x5a8d31=_['merge']({},_0x5a8d31,_0xb9a6ac[_0x12c9('0x41')]);return db[_0x12c9('0x2c')][_0x12c9('0x48')](_0x5a8d31)['then'](handleEntityNotFound(_0x52b0e0,null))[_0x12c9('0x25')](respondWithResult(_0x52b0e0,null))[_0x12c9('0x45')](handleError(_0x52b0e0,null));};exports[_0x12c9('0x49')]=function(_0x3f123d,_0x952f3a){return db[_0x12c9('0x2c')][_0x12c9('0x49')](_0x3f123d[_0x12c9('0x4a')],{})[_0x12c9('0x25')](respondWithResult(_0x952f3a,0xc9))[_0x12c9('0x45')](handleError(_0x952f3a,null));};exports[_0x12c9('0x24')]=function(_0x3b1ff5,_0x34946a){if(_0x3b1ff5['body']['id']){delete _0x3b1ff5[_0x12c9('0x4a')]['id'];}return db[_0x12c9('0x2c')][_0x12c9('0x48')]({'where':{'id':_0x3b1ff5[_0x12c9('0x4b')]['id']}})['then'](handleEntityNotFound(_0x34946a,null))[_0x12c9('0x25')](saveUpdates(_0x3b1ff5[_0x12c9('0x4a')],null))['then'](respondWithResult(_0x34946a,null))[_0x12c9('0x45')](handleError(_0x34946a,null));};exports[_0x12c9('0x4c')]=function(_0x148d83,_0x5d6cb5){return db[_0x12c9('0x2c')][_0x12c9('0x48')]({'where':{'id':_0x148d83['params']['id']}})[_0x12c9('0x25')](handleEntityNotFound(_0x5d6cb5,null))[_0x12c9('0x25')](removeEntity(_0x5d6cb5,null))[_0x12c9('0x45')](handleError(_0x5d6cb5,null));};exports[_0x12c9('0x4d')]=function(_0x1e6af7,_0x5f2f23){return db[_0x12c9('0x2c')][_0x12c9('0x4d')]()[_0x12c9('0x25')](respondWithResult(_0x5f2f23,null))[_0x12c9('0x45')](handleError(_0x5f2f23,null));};
\ No newline at end of file
index d7d776e..7513a4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0320=['../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','moment','request-promise','path','rimraf'];(function(_0xd3a08a,_0x501d4a){var _0xfa2472=function(_0x4e1296){while(--_0x4e1296){_0xd3a08a['push'](_0xd3a08a['shift']());}};_0xfa2472(++_0x501d4a);}(_0x0320,0x7c));var _0x0032=function(_0x39ef73,_0x2c66c3){_0x39ef73=_0x39ef73-0x0;var _0x564acd=_0x0320[_0x39ef73];return _0x564acd;};'use strict';var _=require(_0x0032('0x0'));var util=require(_0x0032('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0032('0x2'));var BPromise=require('bluebird');var rp=require(_0x0032('0x3'));var fs=require('fs');var path=require(_0x0032('0x4'));var rimraf=require(_0x0032('0x5'));var config=require(_0x0032('0x6'));var attributes=require(_0x0032('0x7'));module[_0x0032('0x8')]=function(_0x597387,_0x440bee){return _0x597387[_0x0032('0x9')](_0x0032('0xa'),attributes,{'tableName':_0x0032('0xb'),'paranoid':![],'indexes':[{'name':_0x0032('0xc'),'fields':[_0x0032('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x194a=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util'];(function(_0x1936f6,_0x47a125){var _0x32e727=function(_0x1ebfe1){while(--_0x1ebfe1){_0x1936f6['push'](_0x1936f6['shift']());}};_0x32e727(++_0x47a125);}(_0x194a,0x14e));var _0xa194=function(_0x39e84d,_0x11931d){_0x39e84d=_0x39e84d-0x0;var _0x1991bc=_0x194a[_0x39e84d];return _0x1991bc;};'use strict';var _=require(_0xa194('0x0'));var util=require(_0xa194('0x1'));var logger=require(_0xa194('0x2'))('api');var moment=require(_0xa194('0x3'));var BPromise=require(_0xa194('0x4'));var rp=require(_0xa194('0x5'));var fs=require('fs');var path=require(_0xa194('0x6'));var rimraf=require(_0xa194('0x7'));var config=require(_0xa194('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0xa194('0x9')]=function(_0x2f9e8e,_0x2b0670){return _0x2f9e8e[_0xa194('0xa')](_0xa194('0xb'),attributes,{'tableName':_0xa194('0xc'),'paranoid':![],'indexes':[{'name':_0xa194('0xd'),'fields':[_0xa194('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 0a1c1d1..097e804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e1=['../../mysqldb','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatTransferReport,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','ioredis'];(function(_0x3425b4,_0x2245ba){var _0x10f497=function(_0x2c05cf){while(--_0x2c05cf){_0x3425b4['push'](_0x3425b4['shift']());}};_0x10f497(++_0x2245ba);}(_0xa9e1,0x19d));var _0x1a9e=function(_0x50f112,_0xd38e53){_0x50f112=_0x50f112-0x0;var _0x4ecf28=_0xa9e1[_0x50f112];return _0x4ecf28;};'use strict';var _=require(_0x1a9e('0x0'));var util=require(_0x1a9e('0x1'));var moment=require(_0x1a9e('0x2'));var BPromise=require(_0x1a9e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a9e('0x4'));var db=require(_0x1a9e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1a9e('0x6'));var config=require(_0x1a9e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x1a9e('0x8')][_0x1a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x22b635,_0xe15f85,_0x47ef85){return new BPromise(function(_0xecbed5,_0x5d802d){return client[_0x1a9e('0xa')](_0x22b635,_0x47ef85)[_0x1a9e('0xb')](function(_0x23ce71){logger[_0x1a9e('0xc')]('ChatTransferReport,\x20%s,\x20%s',_0xe15f85,_0x1a9e('0xd'));logger[_0x1a9e('0xe')](_0x1a9e('0xf'),_0xe15f85,'request\x20sent',JSON[_0x1a9e('0x10')](_0x23ce71));if(_0x23ce71[_0x1a9e('0x11')]){if(_0x23ce71[_0x1a9e('0x11')][_0x1a9e('0x12')]===0x1f4){logger[_0x1a9e('0x11')](_0x1a9e('0x13'),_0xe15f85,_0x23ce71[_0x1a9e('0x11')][_0x1a9e('0x14')]);return _0x5d802d(_0x23ce71[_0x1a9e('0x11')][_0x1a9e('0x14')]);}logger[_0x1a9e('0x11')](_0x1a9e('0x13'),_0xe15f85,_0x23ce71[_0x1a9e('0x11')][_0x1a9e('0x14')]);return _0xecbed5(_0x23ce71[_0x1a9e('0x11')][_0x1a9e('0x14')]);}else{logger['info']('ChatTransferReport,\x20%s,\x20%s',_0xe15f85,_0x1a9e('0xd'));_0xecbed5(_0x23ce71[_0x1a9e('0x15')][_0x1a9e('0x14')]);}})['catch'](function(_0xea5e65){logger[_0x1a9e('0x11')](_0x1a9e('0x13'),_0xe15f85,_0xea5e65);_0x5d802d(_0xea5e65);});});}
\ No newline at end of file
+var _0x934d=['debug','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','request\x20sent'];(function(_0xda7c25,_0x256fc4){var _0x1ef7db=function(_0x1fa751){while(--_0x1fa751){_0xda7c25['push'](_0xda7c25['shift']());}};_0x1ef7db(++_0x256fc4);}(_0x934d,0xdd));var _0xd934=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0x934d[_0x186376];return _0x2dbdd9;};'use strict';var _=require(_0xd934('0x0'));var util=require(_0xd934('0x1'));var moment=require(_0xd934('0x2'));var BPromise=require('bluebird');var rs=require(_0xd934('0x3'));var fs=require('fs');var Redis=require(_0xd934('0x4'));var db=require(_0xd934('0x5'))['db'];var utils=require(_0xd934('0x6'));var logger=require('../../config/logger')(_0xd934('0x7'));var config=require('../../config/environment');var jayson=require(_0xd934('0x8'));var client=jayson[_0xd934('0x9')][_0xd934('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x396102,_0x121452,_0xa0b887){return new BPromise(function(_0x24ffb6,_0x740b79){return client['request'](_0x396102,_0xa0b887)[_0xd934('0xb')](function(_0x2a47fd){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x121452,_0xd934('0xc'));logger[_0xd934('0xd')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x121452,'request\x20sent',JSON['stringify'](_0x2a47fd));if(_0x2a47fd[_0xd934('0xe')]){if(_0x2a47fd[_0xd934('0xe')][_0xd934('0xf')]===0x1f4){logger[_0xd934('0xe')]('ChatTransferReport,\x20%s,\x20%s',_0x121452,_0x2a47fd[_0xd934('0xe')][_0xd934('0x10')]);return _0x740b79(_0x2a47fd[_0xd934('0xe')][_0xd934('0x10')]);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x121452,_0x2a47fd[_0xd934('0xe')][_0xd934('0x10')]);return _0x24ffb6(_0x2a47fd['error'][_0xd934('0x10')]);}else{logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x121452,_0xd934('0xc'));_0x24ffb6(_0x2a47fd[_0xd934('0x11')][_0xd934('0x10')]);}})['catch'](function(_0x39225e){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x121452,_0x39225e);_0x740b79(_0x39225e);});});}
\ No newline at end of file
index a2ba400..05357d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2976=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','put','update','delete','destroy','exports','multer'];(function(_0x1d0499,_0x23e22f){var _0x153fb3=function(_0x40c19c){while(--_0x40c19c){_0x1d0499['push'](_0x1d0499['shift']());}};_0x153fb3(++_0x23e22f);}(_0x2976,0x153));var _0x6297=function(_0x5f4420,_0x3a9b21){_0x5f4420=_0x5f4420-0x0;var _0x5ba373=_0x2976[_0x5f4420];return _0x5ba373;};'use strict';var multer=require(_0x6297('0x0'));var util=require(_0x6297('0x1'));var path=require(_0x6297('0x2'));var timeout=require(_0x6297('0x3'));var express=require('express');var router=express[_0x6297('0x4')]();var fs_extra=require(_0x6297('0x5'));var auth=require(_0x6297('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6297('0x7'));var controller=require('./chatTransferReport.controller');router[_0x6297('0x8')]('/',auth[_0x6297('0x9')](),controller[_0x6297('0xa')]);router['get'](_0x6297('0xb'),auth['isAuthenticated'](),controller[_0x6297('0xc')]);router['get'](_0x6297('0xd'),auth['isAuthenticated'](),controller[_0x6297('0xe')]);router['post']('/',auth[_0x6297('0x9')](),controller['create']);router[_0x6297('0xf')](_0x6297('0xd'),auth[_0x6297('0x9')](),controller[_0x6297('0x10')]);router[_0x6297('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x6297('0x12')]);module[_0x6297('0x13')]=router;
\ No newline at end of file
+var _0xbb56=['/describe','describe','/:id','show','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xbb56,0xce));var _0x6bb5=function(_0x4cbde1,_0x5785ec){_0x4cbde1=_0x4cbde1-0x0;var _0x37d42=_0xbb56[_0x4cbde1];return _0x37d42;};'use strict';var multer=require(_0x6bb5('0x0'));var util=require(_0x6bb5('0x1'));var path=require(_0x6bb5('0x2'));var timeout=require(_0x6bb5('0x3'));var express=require(_0x6bb5('0x4'));var router=express[_0x6bb5('0x5')]();var fs_extra=require(_0x6bb5('0x6'));var auth=require(_0x6bb5('0x7'));var interaction=require(_0x6bb5('0x8'));var config=require(_0x6bb5('0x9'));var controller=require(_0x6bb5('0xa'));router['get']('/',auth[_0x6bb5('0xb')](),controller[_0x6bb5('0xc')]);router[_0x6bb5('0xd')](_0x6bb5('0xe'),auth[_0x6bb5('0xb')](),controller[_0x6bb5('0xf')]);router[_0x6bb5('0xd')](_0x6bb5('0x10'),auth[_0x6bb5('0xb')](),controller[_0x6bb5('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6bb5('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x6bb5('0x13')]);router['delete'](_0x6bb5('0x10'),auth[_0x6bb5('0xb')](),controller[_0x6bb5('0x14')]);module[_0x6bb5('0x15')]=router;
\ No newline at end of file
index d9a469c..5c0cc48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ff=['input','name','getDataValue','onlineForm','parse','setDataValue','TEXT','Comments','Leave\x20your\x20comments','offlineForm','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','CHAT','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','STRING','email','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Send','Contact\x20us','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','thumb','star','stringify'];(function(_0x7b3f70,_0x40a34f){var _0x5b247c=function(_0x237cff){while(--_0x237cff){_0x7b3f70['push'](_0x7b3f70['shift']());}};_0x5b247c(++_0x40a34f);}(_0x54ff,0x16e));var _0xf54f=function(_0x5e79f5,_0x305dcc){_0x5e79f5=_0x5e79f5-0x0;var _0x17f182=_0x54ff[_0x5e79f5];return _0x17f182;};'use strict';var Sequelize=require(_0xf54f('0x0'));var rs=require(_0xf54f('0x1'));module['exports']={'name':{'type':Sequelize[_0xf54f('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xf54f('0x2')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x3')},'key':{'type':Sequelize[_0xf54f('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf54f('0x4'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xf54f('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xf54f('0x2')],'allowNull':![],'defaultValue':_0xf54f('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xf54f('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xf54f('0x2')]},'animation':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xf54f('0x8')](_0xf54f('0x9'),_0xf54f('0xa')),'defaultValue':_0xf54f('0x9')},'header_online':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0xb')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0xc')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0xd')},'download_transcript':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xf54f('0x6')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0xe')},'defaultWhiteLabel':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x11')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0x12')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0x13')},'closingMessage':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x14')},'closingMessageButton':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0xc')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0x15')},'conditionAgreement':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x16')},'ratingType':{'type':Sequelize[_0xf54f('0x8')]('star',_0xf54f('0x17')),'defaultValue':_0xf54f('0x18')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xf54f('0x19')]({'items':[{'type':_0xf54f('0x1a'),'variable':null,'config':{'placeholder':'name','type':'text','required':!![]},'props':{'title':_0xf54f('0x1b'),'helpText':''}},{'type':_0xf54f('0x1a'),'props':{'title':_0xf54f('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xf54f('0x1c')](_0xf54f('0x1d'))?JSON[_0xf54f('0x1e')](this[_0xf54f('0x1c')](_0xf54f('0x1d'))):{};},'set':function(_0x8f04ec){return this[_0xf54f('0x1f')](_0xf54f('0x1d'),JSON[_0xf54f('0x19')](_0x8f04ec));}},'offlineForm':{'type':Sequelize[_0xf54f('0x20')],'defaultValue':function(){return JSON[_0xf54f('0x19')]({'items':[{'type':_0xf54f('0x1a'),'props':{'title':_0xf54f('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xf54f('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':_0xf54f('0x21')},'props':{'title':'Comments','helpText':_0xf54f('0x22')}}],'fromKey':0x0});},'get':function(){return this[_0xf54f('0x1c')](_0xf54f('0x23'))?JSON[_0xf54f('0x1e')](this[_0xf54f('0x1c')](_0xf54f('0x23'))):{};},'set':function(_0x4e067a){return this[_0xf54f('0x1f')](_0xf54f('0x23'),JSON[_0xf54f('0x19')](_0x4e067a));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xf54f('0x24')]();}},'autoclose':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xf54f('0x2')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x25')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0x26')},'offlineMessageBody':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x27')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0x28')},'skipUnmanaged':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x15')},'sendUnmanaged':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0xc')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xf54f('0x20')]},'showAgentAvatar':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xf54f('0x20')],'defaultValue':function(){return _0xf54f('0x29');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':_0xf54f('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize[_0xf54f('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0xf54f('0x6')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':_0xf54f('0x2b')},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xf54f('0x20')]},'showCustomerAvatar':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xf54f('0x2')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf54f('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf54f('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':'System'},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0xf54f('0x2c')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xf54f('0x2d'),'set':function(_0x5697b9){if(!_0x5697b9)this[_0xf54f('0x1f')]('mandatoryDispositionPauseId',null);this[_0xf54f('0x1f')](_0xf54f('0x2e'),_0x5697b9);}},'vidaooEscalation':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xf54f('0x2')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf54f('0x2f')},'vidaooNote':{'type':Sequelize[_0xf54f('0x2')],'defaultValue':function(){return _0xf54f('0x30');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xf54f('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xf54f('0x20')]}};
\ No newline at end of file
+var _0xfa0a=['bottom_right','alternate','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Form\x20properly\x20submitted','Note','Type\x20a\x20message','Skip','Feedback','thumb','stringify','input','name','getDataValue','onlineForm','setDataValue','textarea','Comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfa0a,0x1d3));var _0xafa0=function(_0x7ad6cb,_0xffee6c){_0x7ad6cb=_0x7ad6cb-0x0;var _0x22a0ba=_0xfa0a[_0x7ad6cb];return _0x22a0ba;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xafa0('0x0'));module[_0xafa0('0x1')]={'name':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xafa0('0x2')]},'mapKey':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x3')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':'email'},'key':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x4')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![],'defaultValue':_0xafa0('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![],'defaultValue':_0xafa0('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xafa0('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xafa0('0x2')]},'animation':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xafa0('0x9')](_0xafa0('0xa'),'squared'),'defaultValue':_0xafa0('0xa')},'header_online':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0xb')},'start_chat_button':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0xc')},'offline_chat_button':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0xd')},'header_offline':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0xe')},'download_transcript':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xafa0('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xafa0('0x10')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x11')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0xafa0('0x12')},'placeholderMessage':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x13')},'closingMessage':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0xd')},'skipMessageButton':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x14')},'conditionAgreement':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x15')},'ratingType':{'type':Sequelize['ENUM']('star',_0xafa0('0x16')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0xafa0('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xafa0('0x17')]({'items':[{'type':_0xafa0('0x18'),'variable':null,'config':{'placeholder':_0xafa0('0x19'),'type':'text','required':!![]},'props':{'title':'name','helpText':''}},{'type':_0xafa0('0x18'),'props':{'title':_0xafa0('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0xafa0('0x3'),'type':_0xafa0('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xafa0('0x1a')]('onlineForm')?JSON['parse'](this[_0xafa0('0x1a')](_0xafa0('0x1b'))):{};},'set':function(_0x2f9277){return this[_0xafa0('0x1c')](_0xafa0('0x1b'),JSON[_0xafa0('0x17')](_0x2f9277));}},'offlineForm':{'type':Sequelize[_0xafa0('0x10')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xafa0('0x18'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0xafa0('0x3'),'type':'email'},'variable':null},{'type':_0xafa0('0x1d'),'config':{'placeholder':_0xafa0('0x1e')},'props':{'title':_0xafa0('0x1e'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xafa0('0x1a')](_0xafa0('0x1f'))?JSON['parse'](this[_0xafa0('0x1a')]('offlineForm')):{};},'set':function(_0x558d42){return this[_0xafa0('0x1c')]('offlineForm',JSON['stringify'](_0x558d42));}},'token':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':function(){return rs[_0xafa0('0x20')]();}},'autoclose':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xafa0('0x2')]},'waitingTitle':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x21')},'waitingMessage':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x22')},'offlineMessageSubject':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x23')},'offlineMessageBody':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x24')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xafa0('0x14')},'sendUnmanaged':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0xd')},'enableCustomerAttachment':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xafa0('0x2')]},'notificationTemplate':{'type':Sequelize[_0xafa0('0x10')],'defaultValue':function(){return _0xafa0('0x25');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x26')},'waitForTheAssignedAgent':{'type':Sequelize[_0xafa0('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0xafa0('0x27')},'verticalAlignment':{'type':Sequelize[_0xafa0('0x7')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':_0xafa0('0x28')},'defaultTitle':{'type':Sequelize[_0xafa0('0x2')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xafa0('0x7')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xafa0('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0xafa0('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xafa0('0x7')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![],'comment':_0xafa0('0x29'),'set':function(_0x547dba){if(!_0x547dba)this['setDataValue'](_0xafa0('0x2a'),null);this[_0xafa0('0x1c')](_0xafa0('0x2b'),_0x547dba);}},'vidaooEscalation':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0xafa0('0x2')],'allowNull':![],'defaultValue':_0xafa0('0x2c')},'vidaooNote':{'type':Sequelize[_0xafa0('0x2')],'defaultValue':function(){return _0xafa0('0x2d');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xafa0('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xafa0('0x10')]}};
\ No newline at end of file
index b1142d2..147723d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf330=['Interval','Intervals','getProactiveActions','increment','chatLicenseExceeded','server/files/chat/iframe.ejs','remote','x-real-ip','remoteAddress','alignment','verticalAlignment','labelText','textColor','addApplications','Transaction','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','findAndCountAll','stack','finally','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','util','fs-extra','lodash','ioredis','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./chatWebsite.socket','register','client','http','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','offset','limit','count','set','update','then','destroy','get','ChatWebsites','UserProfileResource','sendStatus','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','show','params','keys','ChatWebsite','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','nolimit','include','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','addLogo','sitepic','file','filename','addAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','getLicense','custom','isNil','existsSync','server/files/images/logos/','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','download','getCustomerAvatar','showCustomerAvatar','getSystemAvatar','notify','user-agent-parser','setUA','getResult','chat','CmContact','Sequelize','ValidationError','difference','createdAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','updatedAt','DESC','Applications','account','applications','orderBy','priority','customerIp','headers','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','referer','browser','version','%s\x20%s','unknown','format','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','interaction','spread','firstName','contact','lastName','messageId','created','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','files','no\x20available\x20attributes','mapKeyOffline','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','ChatOfflineMessage','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','MailServerOut','Smtp','service','host','port','secure','auth','sendMail','email','forwardOfflineAddress','offlineMessageSubject','MailAccountId','originalname','toPairsIn','mapValues','subjectOffline','Chat','NotifyMailAccount','notifyMail','addInteraction','omit','getInteractions','Owner','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','indexOf','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','No\x20timezone','inspect'];(function(_0x5c96df,_0x24d6b0){var _0x330755=function(_0x1d6ed4){while(--_0x1d6ed4){_0x5c96df['push'](_0x5c96df['shift']());}};_0x330755(++_0x24d6b0);}(_0xf330,0x146));var _0x0f33=function(_0x16ae5f,_0x45811a){_0x16ae5f=_0x16ae5f-0x0;var _0x2614ae=_0xf330[_0x16ae5f];return _0x2614ae;};'use strict';var BPromise=require(_0x0f33('0x0'));var Mustache=require('mustache');var util=require(_0x0f33('0x1'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0f33('0x2'));var _=require(_0x0f33('0x3'));var querystring=require('querystring');var Redis=require(_0x0f33('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0x0f33('0x5'))(_0x0f33('0x6'));var config=require('../../config/environment');var db=require(_0x0f33('0x7'))['db'];config[_0x0f33('0x8')]=_[_0x0f33('0x9')](config[_0x0f33('0x8')],{'host':_0x0f33('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0f33('0x8')]));require(_0x0f33('0xb'))[_0x0f33('0xc')](socket);var jayson=require('jayson/promise');var client=jayson[_0x0f33('0xd')][_0x0f33('0xe')]({'port':0x232c});var client9002=jayson[_0x0f33('0xd')][_0x0f33('0xe')]({'port':0x232a});var client9003=jayson['client'][_0x0f33('0xe')]({'port':0x232b});var client9001=jayson[_0x0f33('0xd')][_0x0f33('0xe')]({'port':0x2329});function respondWithRpcPromise(_0x27a542,_0x41e7ba,_0x39fce8,_0x5a48d6){return new BPromise(function(_0x206c04,_0x655c28){var _0x494cca=_0x5a48d6||client;return _0x494cca[_0x0f33('0xf')](_0x27a542,_0x39fce8)['then'](function(_0xe17008){logger[_0x0f33('0x10')](_0x0f33('0x11'),_0x41e7ba,_0x0f33('0x12'));logger['debug'](_0x0f33('0x13'),_0x41e7ba,'request\x20sent',JSON[_0x0f33('0x14')](_0xe17008));if(_0xe17008[_0x0f33('0x15')]){if(_0xe17008['error']['code']===0x1f4){logger[_0x0f33('0x15')](_0x0f33('0x11'),_0x41e7ba,_0xe17008[_0x0f33('0x15')][_0x0f33('0x16')]);return _0x655c28(_0xe17008[_0x0f33('0x15')]['message']);}logger[_0x0f33('0x15')](_0x0f33('0x11'),_0x41e7ba,_0xe17008[_0x0f33('0x15')][_0x0f33('0x16')]);return _0x206c04(_0xe17008['error'][_0x0f33('0x16')]);}else{logger[_0x0f33('0x10')](_0x0f33('0x11'),_0x41e7ba,_0x0f33('0x12'));_0x206c04(_0xe17008[_0x0f33('0x17')][_0x0f33('0x16')]);}})[_0x0f33('0x18')](function(_0x4be246){logger[_0x0f33('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x41e7ba,_0x4be246);_0x655c28(_0x4be246);});});}function respondWithStatusCode(_0x3a4505,_0x4a3762){_0x4a3762=_0x4a3762||0xcc;return function(_0x16c945){if(_0x16c945){return _0x3a4505['sendStatus'](_0x4a3762);}return _0x3a4505[_0x0f33('0x19')](_0x4a3762)[_0x0f33('0x1a')]();};}function respondWithResult(_0x3c3fde,_0x136a6f){_0x136a6f=_0x136a6f||0xc8;return function(_0xc6ca7b){if(_0xc6ca7b){return _0x3c3fde[_0x0f33('0x19')](_0x136a6f)[_0x0f33('0x1b')](_0xc6ca7b);}};}function respondWithFilteredResult(_0x4894e1,_0x3aa413){return function(_0x1018b8){if(_0x1018b8){var _0x319054=typeof _0x3aa413[_0x0f33('0x1c')]==='undefined'&&typeof _0x3aa413[_0x0f33('0x1d')]==='undefined';var _0x119122=_0x1018b8[_0x0f33('0x1e')];var _0x1876df=_0x319054?0x0:_0x3aa413[_0x0f33('0x1c')];var _0x6c513d=_0x319054?_0x1018b8[_0x0f33('0x1e')]:_0x3aa413[_0x0f33('0x1c')]+_0x3aa413[_0x0f33('0x1d')];var _0x215435;if(_0x6c513d>=_0x119122){_0x6c513d=_0x119122;_0x215435=0xc8;}else{_0x215435=0xce;}_0x4894e1[_0x0f33('0x19')](_0x215435);return _0x4894e1[_0x0f33('0x1f')]('Content-Range',_0x1876df+'-'+_0x6c513d+'/'+_0x119122)[_0x0f33('0x1b')](_0x1018b8);}return null;};}function saveUpdates(_0x501543){return function(_0x3248fb){if(_0x3248fb){return _0x3248fb[_0x0f33('0x20')](_0x501543)[_0x0f33('0x21')](function(_0x35216e){return _0x35216e;});}return null;};}function removeEntity(_0x1b5dd8){return function(_0x49dc93){if(_0x49dc93){return _0x49dc93[_0x0f33('0x22')]()['then'](function(){var _0x4392fa=_0x49dc93[_0x0f33('0x23')]({'plain':!![]});var _0x224064=_0x0f33('0x24');return db[_0x0f33('0x25')][_0x0f33('0x22')]({'where':{'type':_0x224064,'resourceId':_0x4392fa['id']}})[_0x0f33('0x21')](function(){return _0x49dc93;});})[_0x0f33('0x21')](function(){_0x1b5dd8[_0x0f33('0x19')](0xcc)[_0x0f33('0x1a')]();});}};}function handleEntityNotFound(_0xcc5ca7){return function(_0x8c59e4){if(!_0x8c59e4){_0xcc5ca7[_0x0f33('0x26')](0x194);}return _0x8c59e4;};}function handleError(_0x47074d,_0x289b90){_0x289b90=_0x289b90||0x1f4;return function(_0x5a18e0){logger[_0x0f33('0x15')](_0x5a18e0['stack']);if(_0x5a18e0['name']){delete _0x5a18e0[_0x0f33('0x27')];}_0x47074d[_0x0f33('0x19')](_0x289b90)[_0x0f33('0x28')](_0x5a18e0);};}exports[_0x0f33('0x29')]=function(_0x2e6d6f,_0x168aee){var _0x313a47={'include':[{'model':db[_0x0f33('0x2a')],'as':_0x0f33('0x2b')}]},_0x5d6132={},_0xdadf95={'count':0x0,'rows':[]};var _0x50e597=_[_0x0f33('0x2c')](db['ChatWebsite'][_0x0f33('0x2d')],function(_0x147a80){return{'name':_0x147a80[_0x0f33('0x2e')],'type':_0x147a80[_0x0f33('0x2f')][_0x0f33('0x30')]};});_0x5d6132[_0x0f33('0x31')]=_[_0x0f33('0x2c')](_0x50e597,_0x0f33('0x27'));_0x5d6132[_0x0f33('0x32')]=_['keys'](_0x2e6d6f['query']);_0x5d6132[_0x0f33('0x33')]=_[_0x0f33('0x34')](_0x5d6132['model'],_0x5d6132[_0x0f33('0x32')]);_0x313a47[_0x0f33('0x35')]=_[_0x0f33('0x34')](_0x5d6132[_0x0f33('0x31')],qs[_0x0f33('0x36')](_0x2e6d6f[_0x0f33('0x32')][_0x0f33('0x36')]));_0x313a47['attributes']=_0x313a47[_0x0f33('0x35')]['length']?_0x313a47[_0x0f33('0x35')]:_0x5d6132[_0x0f33('0x31')];if(!_0x2e6d6f[_0x0f33('0x32')]['hasOwnProperty']('nolimit')){_0x313a47[_0x0f33('0x1d')]=qs[_0x0f33('0x1d')](_0x2e6d6f[_0x0f33('0x32')][_0x0f33('0x1d')]);_0x313a47['offset']=qs[_0x0f33('0x1c')](_0x2e6d6f[_0x0f33('0x32')][_0x0f33('0x1c')]);}_0x313a47[_0x0f33('0x37')]=qs[_0x0f33('0x38')](_0x2e6d6f['query'][_0x0f33('0x38')]);_0x313a47[_0x0f33('0x39')]=qs['filters'](_[_0x0f33('0x3a')](_0x2e6d6f[_0x0f33('0x32')],_0x5d6132[_0x0f33('0x33')]),_0x50e597);if(_0x2e6d6f[_0x0f33('0x32')][_0x0f33('0x3b')]){_0x313a47[_0x0f33('0x39')]=_[_0x0f33('0x3c')](_0x313a47[_0x0f33('0x39')],{'$or':_[_0x0f33('0x2c')](_0x50e597,function(_0x1774fb){if(_0x1774fb[_0x0f33('0x2f')]!=='VIRTUAL'){var _0x3b7825={};_0x3b7825[_0x1774fb['name']]={'$like':'%'+_0x2e6d6f[_0x0f33('0x32')][_0x0f33('0x3b')]+'%'};return _0x3b7825;}})});}_0x313a47=_['merge']({},_0x313a47,_0x2e6d6f[_0x0f33('0x3d')]);var _0x39020a={'where':_0x313a47[_0x0f33('0x39')]};return db['ChatWebsite'][_0x0f33('0x1e')](_0x39020a)[_0x0f33('0x21')](function(_0x5ba79c){_0xdadf95[_0x0f33('0x1e')]=_0x5ba79c;if(_0x2e6d6f[_0x0f33('0x32')][_0x0f33('0x3e')]){_0x313a47['include']=[{'all':!![]}];}return db['ChatWebsite'][_0x0f33('0x3f')](_0x313a47);})['then'](function(_0x3f16cf){_0xdadf95[_0x0f33('0x40')]=_0x3f16cf;return _0xdadf95;})[_0x0f33('0x21')](respondWithFilteredResult(_0x168aee,_0x313a47))[_0x0f33('0x18')](handleError(_0x168aee,null));};exports[_0x0f33('0x41')]=function(_0x501161,_0x4be3ea){var _0x21015e={'raw':![],'where':{'id':_0x501161[_0x0f33('0x42')]['id']},'include':[{'model':db['Pause'],'as':_0x0f33('0x2b')}]},_0xd82ee0={};_0xd82ee0['model']=_[_0x0f33('0x43')](db[_0x0f33('0x44')][_0x0f33('0x2d')]);_0xd82ee0[_0x0f33('0x32')]=_[_0x0f33('0x43')](_0x501161[_0x0f33('0x32')]);_0xd82ee0[_0x0f33('0x33')]=_[_0x0f33('0x34')](_0xd82ee0[_0x0f33('0x31')],_0xd82ee0[_0x0f33('0x32')]);_0x21015e[_0x0f33('0x35')]=_['intersection'](_0xd82ee0[_0x0f33('0x31')],qs[_0x0f33('0x36')](_0x501161[_0x0f33('0x32')][_0x0f33('0x36')]));_0x21015e[_0x0f33('0x35')]=_0x21015e[_0x0f33('0x35')][_0x0f33('0x45')]?_0x21015e['attributes']:_0xd82ee0[_0x0f33('0x31')];if(_0x501161[_0x0f33('0x32')][_0x0f33('0x3e')]){_0x21015e['include']=[{'all':!![]}];}_0x21015e=_[_0x0f33('0x3c')]({},_0x21015e,_0x501161[_0x0f33('0x3d')]);return db[_0x0f33('0x44')][_0x0f33('0x46')](_0x21015e)['then'](handleEntityNotFound(_0x4be3ea,null))['then'](respondWithResult(_0x4be3ea,null))[_0x0f33('0x18')](handleError(_0x4be3ea,null));};exports[_0x0f33('0x47')]=function(_0x224e77,_0x87f87d){return db[_0x0f33('0x44')]['create'](_0x224e77[_0x0f33('0x48')],{})[_0x0f33('0x21')](function(_0x1b722c){var _0x3b0059=_0x224e77[_0x0f33('0x49')][_0x0f33('0x23')]({'plain':!![]});if(!_0x3b0059)throw new Error(_0x0f33('0x4a'));if(_0x3b0059[_0x0f33('0x4b')]===_0x0f33('0x49')){var _0x465f90=_0x1b722c[_0x0f33('0x23')]({'plain':!![]});var _0x158ffd=_0x0f33('0x24');return db[_0x0f33('0x4c')]['find']({'where':{'name':_0x158ffd,'userProfileId':_0x3b0059[_0x0f33('0x4d')]},'raw':!![]})['then'](function(_0x2ae2af){if(_0x2ae2af&&_0x2ae2af[_0x0f33('0x4e')]===0x0){return db[_0x0f33('0x25')][_0x0f33('0x47')]({'name':_0x465f90[_0x0f33('0x27')],'resourceId':_0x465f90['id'],'type':_0x2ae2af[_0x0f33('0x27')],'sectionId':_0x2ae2af['id']},{})[_0x0f33('0x21')](function(){return _0x1b722c;});}else{return _0x1b722c;}})['catch'](function(_0x3ed488){logger['error'](_0x0f33('0x4f'),_0x3ed488);throw _0x3ed488;});}return _0x1b722c;})[_0x0f33('0x21')](respondWithResult(_0x87f87d,0xc9))[_0x0f33('0x18')](handleError(_0x87f87d,null));};exports[_0x0f33('0x20')]=function(_0x2d4b81,_0x22069a){if(_0x2d4b81[_0x0f33('0x48')]['id']){delete _0x2d4b81[_0x0f33('0x48')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x2d4b81['params']['id']},'include':[{'model':db[_0x0f33('0x2a')],'as':_0x0f33('0x2b')}]})[_0x0f33('0x21')](handleEntityNotFound(_0x22069a,null))['then'](saveUpdates(_0x2d4b81[_0x0f33('0x48')],null))[_0x0f33('0x21')](respondWithResult(_0x22069a,null))[_0x0f33('0x18')](handleError(_0x22069a,null));};exports[_0x0f33('0x22')]=function(_0x25b3c9,_0x217d06){return db[_0x0f33('0x44')]['find']({'where':{'id':_0x25b3c9[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x217d06,null))[_0x0f33('0x21')](removeEntity(_0x217d06,null))['catch'](handleError(_0x217d06,null));};exports[_0x0f33('0x50')]=function(_0x3fd069,_0x1e1c95){return db[_0x0f33('0x44')]['describe']()[_0x0f33('0x21')](respondWithResult(_0x1e1c95,null))[_0x0f33('0x18')](handleError(_0x1e1c95,null));};exports[_0x0f33('0x51')]=function(_0x301e45,_0x27df7e){if(_0x301e45[_0x0f33('0x48')]['id']){delete _0x301e45[_0x0f33('0x48')]['id'];}return db['ChatWebsite'][_0x0f33('0x46')]({'where':{'id':_0x301e45[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x27df7e,null))[_0x0f33('0x21')](function(_0x4d8d22){if(_0x4d8d22){_0x301e45[_0x0f33('0x48')][_0x0f33('0x52')]=_0x4d8d22['id'];return db[_0x0f33('0x53')][_0x0f33('0x47')](_0x301e45[_0x0f33('0x48')]);}})[_0x0f33('0x21')](respondWithResult(_0x27df7e,null))[_0x0f33('0x18')](handleError(_0x27df7e,null));};exports[_0x0f33('0x54')]=function(_0x114673,_0x55b643){var _0x4b4a60={'raw':![],'where':{}};var _0x52ff5e={};var _0x22d035={'count':0x0,'rows':[]};return db[_0x0f33('0x44')][_0x0f33('0x55')]({'where':{'id':_0x114673[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x55b643,null))[_0x0f33('0x21')](function(_0x28ccb9){if(_0x28ccb9){_0x52ff5e[_0x0f33('0x31')]=_['keys'](db[_0x0f33('0x53')][_0x0f33('0x2d')]);_0x52ff5e[_0x0f33('0x32')]=_['keys'](_0x114673[_0x0f33('0x32')]);_0x52ff5e[_0x0f33('0x33')]=_['intersection'](_0x52ff5e[_0x0f33('0x31')],_0x52ff5e[_0x0f33('0x32')]);_0x4b4a60['attributes']=_['intersection'](_0x52ff5e[_0x0f33('0x31')],qs[_0x0f33('0x36')](_0x114673[_0x0f33('0x32')][_0x0f33('0x36')]));_0x4b4a60['attributes']=_0x4b4a60[_0x0f33('0x35')][_0x0f33('0x45')]?_0x4b4a60[_0x0f33('0x35')]:_0x52ff5e[_0x0f33('0x31')];if(!_0x114673[_0x0f33('0x32')][_0x0f33('0x56')](_0x0f33('0x57'))){_0x4b4a60[_0x0f33('0x1d')]=qs[_0x0f33('0x1d')](_0x114673[_0x0f33('0x32')][_0x0f33('0x1d')]);_0x4b4a60[_0x0f33('0x1c')]=qs[_0x0f33('0x1c')](_0x114673['query']['offset']);}_0x4b4a60['order']=qs[_0x0f33('0x38')](_0x114673[_0x0f33('0x32')][_0x0f33('0x38')]);_0x4b4a60['where']=qs[_0x0f33('0x33')](_[_0x0f33('0x3a')](_0x114673[_0x0f33('0x32')],_0x52ff5e[_0x0f33('0x33')]));_0x4b4a60[_0x0f33('0x39')][_0x0f33('0x52')]=_0x28ccb9['id'];if(_0x114673[_0x0f33('0x32')][_0x0f33('0x3b')]){_0x4b4a60['where']=_[_0x0f33('0x3c')](_0x4b4a60['where'],{'$or':_['map'](_0x4b4a60[_0x0f33('0x35')],function(_0x59e8c0){var _0x3a6105={};_0x3a6105[_0x59e8c0]={'$like':'%'+_0x114673[_0x0f33('0x32')][_0x0f33('0x3b')]+'%'};return _0x3a6105;})});}_0x4b4a60=_[_0x0f33('0x3c')]({},_0x4b4a60,_0x114673[_0x0f33('0x3d')]);return db[_0x0f33('0x53')]['count']({'where':_0x4b4a60['where']})[_0x0f33('0x21')](function(_0x116956){_0x22d035[_0x0f33('0x1e')]=_0x116956;if(_0x114673[_0x0f33('0x32')][_0x0f33('0x3e')]){_0x4b4a60[_0x0f33('0x58')]=[{'all':!![]}];}return db[_0x0f33('0x53')]['findAll'](_0x4b4a60);})[_0x0f33('0x21')](function(_0x12ac92){_0x22d035[_0x0f33('0x40')]=_0x12ac92;return _0x22d035;});}})[_0x0f33('0x21')](respondWithFilteredResult(_0x55b643,_0x4b4a60))[_0x0f33('0x18')](handleError(_0x55b643,null));};exports['removeDispositions']=function(_0x2700c5,_0x4d9538){return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x2700c5[_0x0f33('0x42')]['id']}})['then'](handleEntityNotFound(_0x4d9538,null))[_0x0f33('0x21')](function(_0x5c15a){if(_0x5c15a){return _0x5c15a[_0x0f33('0x59')](_0x2700c5[_0x0f33('0x32')][_0x0f33('0x5a')]);}})[_0x0f33('0x21')](respondWithStatusCode(_0x4d9538,null))['catch'](handleError(_0x4d9538,null));};exports['addAnswer']=function(_0x38f568,_0x5ee2f2){if(_0x38f568[_0x0f33('0x48')]['id']){delete _0x38f568[_0x0f33('0x48')]['id'];}return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x38f568[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x5ee2f2,null))[_0x0f33('0x21')](function(_0x371bef){if(_0x371bef){_0x38f568[_0x0f33('0x48')][_0x0f33('0x52')]=_0x371bef['id'];return db[_0x0f33('0x5b')]['create'](_0x38f568[_0x0f33('0x48')]);}})[_0x0f33('0x21')](respondWithResult(_0x5ee2f2,null))[_0x0f33('0x18')](handleError(_0x5ee2f2,null));};exports[_0x0f33('0x5c')]=function(_0xe34b9b,_0x54b195){var _0x2c5c7f={'raw':![],'where':{}};var _0x478f5e={};var _0x567c7b={'count':0x0,'rows':[]};return db[_0x0f33('0x44')][_0x0f33('0x55')]({'where':{'id':_0xe34b9b[_0x0f33('0x42')]['id']}})['then'](handleEntityNotFound(_0x54b195,null))['then'](function(_0x4f6ae4){if(_0x4f6ae4){_0x478f5e[_0x0f33('0x31')]=_[_0x0f33('0x43')](db[_0x0f33('0x5b')][_0x0f33('0x2d')]);_0x478f5e[_0x0f33('0x32')]=_[_0x0f33('0x43')](_0xe34b9b[_0x0f33('0x32')]);_0x478f5e[_0x0f33('0x33')]=_[_0x0f33('0x34')](_0x478f5e['model'],_0x478f5e[_0x0f33('0x32')]);_0x2c5c7f[_0x0f33('0x35')]=_[_0x0f33('0x34')](_0x478f5e[_0x0f33('0x31')],qs[_0x0f33('0x36')](_0xe34b9b[_0x0f33('0x32')][_0x0f33('0x36')]));_0x2c5c7f[_0x0f33('0x35')]=_0x2c5c7f[_0x0f33('0x35')][_0x0f33('0x45')]?_0x2c5c7f['attributes']:_0x478f5e[_0x0f33('0x31')];if(!_0xe34b9b[_0x0f33('0x32')][_0x0f33('0x56')](_0x0f33('0x57'))){_0x2c5c7f[_0x0f33('0x1d')]=qs['limit'](_0xe34b9b[_0x0f33('0x32')][_0x0f33('0x1d')]);_0x2c5c7f['offset']=qs[_0x0f33('0x1c')](_0xe34b9b[_0x0f33('0x32')][_0x0f33('0x1c')]);}_0x2c5c7f[_0x0f33('0x37')]=qs[_0x0f33('0x38')](_0xe34b9b[_0x0f33('0x32')][_0x0f33('0x38')]);_0x2c5c7f[_0x0f33('0x39')]=qs[_0x0f33('0x33')](_[_0x0f33('0x3a')](_0xe34b9b[_0x0f33('0x32')],_0x478f5e[_0x0f33('0x33')]));_0x2c5c7f[_0x0f33('0x39')][_0x0f33('0x52')]=_0x4f6ae4['id'];if(_0xe34b9b[_0x0f33('0x32')][_0x0f33('0x3b')]){_0x2c5c7f['where']=_['merge'](_0x2c5c7f[_0x0f33('0x39')],{'$or':_[_0x0f33('0x2c')](_0x2c5c7f['attributes'],function(_0x4edb50){var _0x133b7a={};_0x133b7a[_0x4edb50]={'$like':'%'+_0xe34b9b[_0x0f33('0x32')][_0x0f33('0x3b')]+'%'};return _0x133b7a;})});}_0x2c5c7f=_[_0x0f33('0x3c')]({},_0x2c5c7f,_0xe34b9b[_0x0f33('0x3d')]);return db[_0x0f33('0x5b')]['count']({'where':_0x2c5c7f[_0x0f33('0x39')]})[_0x0f33('0x21')](function(_0x189af1){_0x567c7b[_0x0f33('0x1e')]=_0x189af1;if(_0xe34b9b['query'][_0x0f33('0x3e')]){_0x2c5c7f[_0x0f33('0x58')]=[{'all':!![]}];}return db[_0x0f33('0x5b')][_0x0f33('0x3f')](_0x2c5c7f);})[_0x0f33('0x21')](function(_0x47a2bd){_0x567c7b[_0x0f33('0x40')]=_0x47a2bd;return _0x567c7b;});}})[_0x0f33('0x21')](respondWithFilteredResult(_0x54b195,_0x2c5c7f))[_0x0f33('0x18')](handleError(_0x54b195,null));};exports[_0x0f33('0x5d')]=function(_0x44cee4,_0x5572b5){return db[_0x0f33('0x44')]['find']({'where':{'id':_0x44cee4['params']['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x5572b5,null))[_0x0f33('0x21')](function(_0x42bb56){if(_0x42bb56){return _0x42bb56['removeAnswers'](_0x44cee4['query'][_0x0f33('0x5a')]);}})['then'](respondWithStatusCode(_0x5572b5,null))['catch'](handleError(_0x5572b5,null));};exports[_0x0f33('0x5e')]=function(_0x2334ef,_0x16e8bf){_0x2334ef[_0x0f33('0x48')][_0x0f33('0x5f')]=_0x2334ef[_0x0f33('0x60')][_0x0f33('0x61')];return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x2334ef[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x16e8bf,null))[_0x0f33('0x21')](saveUpdates(_0x2334ef[_0x0f33('0x48')],null))[_0x0f33('0x21')](respondWithResult(_0x16e8bf,null))[_0x0f33('0x18')](handleError(_0x16e8bf,null));};exports[_0x0f33('0x62')]=function(_0x195546,_0x424632){_0x195546[_0x0f33('0x48')]['agentAvatar']=_0x195546[_0x0f33('0x60')]['filename'];return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x195546[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x424632,null))[_0x0f33('0x21')](saveUpdates(_0x195546[_0x0f33('0x48')],null))[_0x0f33('0x21')](respondWithResult(_0x424632,null))['catch'](handleError(_0x424632,null));};exports[_0x0f33('0x63')]=function(_0x5c9281,_0x497cb4){_0x5c9281[_0x0f33('0x48')][_0x0f33('0x64')]=_0x5c9281[_0x0f33('0x60')][_0x0f33('0x61')];return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x5c9281['params']['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x497cb4,null))[_0x0f33('0x21')](saveUpdates(_0x5c9281[_0x0f33('0x48')],null))[_0x0f33('0x21')](respondWithResult(_0x497cb4,null))[_0x0f33('0x18')](handleError(_0x497cb4,null));};exports['addSystemAvatar']=function(_0x1e436f,_0x4a370e){_0x1e436f[_0x0f33('0x48')][_0x0f33('0x65')]=_0x1e436f[_0x0f33('0x60')][_0x0f33('0x61')];return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x1e436f[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x4a370e,null))[_0x0f33('0x21')](saveUpdates(_0x1e436f[_0x0f33('0x48')],null))[_0x0f33('0x21')](respondWithResult(_0x4a370e,null))[_0x0f33('0x18')](handleError(_0x4a370e,null));};exports[_0x0f33('0x66')]=function(_0x3fd113,_0x4ff0fa){var _0x372f5e=path[_0x0f33('0x67')](config[_0x0f33('0x68')],'server/files/images/logos/default_logo.svg');var _0xdf78b2={'where':{'id':_0x3fd113['params']['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x177aeb=![];return require('../../config/license/util')[_0x0f33('0x69')]()['then'](function(_0x1f4fb9){if(_0x1f4fb9){_0x177aeb=_0x1f4fb9[_0x0f33('0x6a')];}})['then'](function(){return db['ChatWebsite'][_0x0f33('0x46')](_0xdf78b2);})[_0x0f33('0x21')](handleEntityNotFound(_0x4ff0fa,null))[_0x0f33('0x21')](function(_0x2bdab5){if(_0x2bdab5){if(!_[_0x0f33('0x6b')](_0x2bdab5['sitepic'])){if(fs[_0x0f33('0x6c')](path[_0x0f33('0x67')](config['root'],_0x0f33('0x6d'),_0x2bdab5[_0x0f33('0x5f')]))&&_0x177aeb){_0x372f5e=path[_0x0f33('0x67')](config['root'],_0x0f33('0x6d'),_0x2bdab5[_0x0f33('0x5f')]);}}return _0x4ff0fa['download'](_0x372f5e);}})[_0x0f33('0x18')](handleError(_0x4ff0fa,null));};exports[_0x0f33('0x6e')]=function(_0x29c329,_0x4bb112){var _0x178b97=path[_0x0f33('0x67')](config['root'],_0x0f33('0x6f'));var _0x44f5fb={'where':{'id':_0x29c329['params']['id']},'attributes':['id',_0x0f33('0x70')],'raw':!![]};return db[_0x0f33('0x44')][_0x0f33('0x46')](_0x44f5fb)[_0x0f33('0x21')](handleEntityNotFound(_0x4bb112,null))['then'](function(_0x1a62e1){if(_0x1a62e1){if(!_[_0x0f33('0x6b')](_0x1a62e1[_0x0f33('0x70')])){if(fs[_0x0f33('0x6c')](path[_0x0f33('0x67')](config[_0x0f33('0x68')],'server/files/images/avatars/',_0x1a62e1['agentAvatar']))){_0x178b97=path[_0x0f33('0x67')](config[_0x0f33('0x68')],_0x0f33('0x71'),_0x1a62e1[_0x0f33('0x70')]);}}return _0x4bb112[_0x0f33('0x72')](_0x178b97);}})[_0x0f33('0x18')](handleError(_0x4bb112,null));};exports[_0x0f33('0x73')]=function(_0x49b505,_0x26ca41){var _0x1ab351=path['join'](config[_0x0f33('0x68')],'server/files/images/avatars/customer_avatar.png');var _0x378a89={'where':{'id':_0x49b505[_0x0f33('0x42')]['id']},'attributes':['id',_0x0f33('0x64'),'showCustomerAvatar'],'raw':!![]};return db[_0x0f33('0x44')]['find'](_0x378a89)[_0x0f33('0x21')](handleEntityNotFound(_0x26ca41,null))[_0x0f33('0x21')](function(_0x2ea58a){if(_0x2ea58a){if(!_[_0x0f33('0x6b')](_0x2ea58a['customerAvatar'])){if(fs['existsSync'](path['join'](config[_0x0f33('0x68')],_0x0f33('0x71'),_0x2ea58a[_0x0f33('0x64')]))&&_0x2ea58a[_0x0f33('0x74')]){_0x1ab351=path['join'](config[_0x0f33('0x68')],_0x0f33('0x71'),_0x2ea58a[_0x0f33('0x64')]);}}return _0x26ca41[_0x0f33('0x72')](_0x1ab351);}})['catch'](handleError(_0x26ca41,null));};exports[_0x0f33('0x75')]=function(_0x2fc084,_0x39b74c){var _0x539515=path[_0x0f33('0x67')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x481285={'where':{'id':_0x2fc084[_0x0f33('0x42')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x0f33('0x44')][_0x0f33('0x46')](_0x481285)[_0x0f33('0x21')](handleEntityNotFound(_0x39b74c,null))[_0x0f33('0x21')](function(_0x58cb0f){if(_0x58cb0f){if(!_[_0x0f33('0x6b')](_0x58cb0f['systemAvatar'])){if(fs[_0x0f33('0x6c')](path[_0x0f33('0x67')](config[_0x0f33('0x68')],'server/files/images/avatars/',_0x58cb0f[_0x0f33('0x65')]))){_0x539515=path[_0x0f33('0x67')](config[_0x0f33('0x68')],'server/files/images/avatars/',_0x58cb0f[_0x0f33('0x65')]);}}return _0x39b74c['download'](_0x539515);}})[_0x0f33('0x18')](handleError(_0x39b74c,null));};exports[_0x0f33('0x76')]=function(_0xda00f8,_0x1c5dcb){var _0x4adf24=require(_0x0f33('0x77'));var _0x2d1708=new _0x4adf24();var _0x5bbace=_0x2d1708[_0x0f33('0x78')](_0xda00f8['headers']['user-agent'])[_0x0f33('0x79')]();var _0x2df1dd={'body':_0xda00f8[_0x0f33('0x48')],'channel':_0x0f33('0x7a')};var _0x2a5563=[];var _0x592ecb=[];var _0x2b344b={};var _0x20c82c=![];return db[_0x0f33('0x7b')]['describe']()[_0x0f33('0x21')](function(_0x5ab0a5){if(!_0x5ab0a5){throw new db[(_0x0f33('0x7c'))][(_0x0f33('0x7d'))]('no\x20available\x20attributes');}_0x2a5563=_[_0x0f33('0x7e')](_[_0x0f33('0x43')](_0x5ab0a5),[_0x0f33('0x7f'),'updatedAt']);_0x592ecb=_['difference'](_['keys'](_0x5ab0a5),[_0x0f33('0x7f'),'updatedAt',_0x0f33('0x80'),_0x0f33('0x81')]);if(_0xda00f8['body']['id']){delete _0xda00f8[_0x0f33('0x48')]['id'];}if(_[_0x0f33('0x6b')](_0xda00f8[_0x0f33('0x48')][_0x0f33('0x82')])){throw new db[(_0x0f33('0x7c'))][(_0x0f33('0x7d'))](_0x0f33('0x83'));}if(_[_0x0f33('0x6b')](_0xda00f8[_0x0f33('0x48')][_0x0f33('0x48')])||_0xda00f8['body']['body']===''){throw new db['Sequelize'][(_0x0f33('0x7d'))](_0x0f33('0x84'));}if(_[_0x0f33('0x6b')](_0xda00f8[_0x0f33('0x48')][_0x0f33('0x85')])){throw new db['Sequelize'][(_0x0f33('0x7d'))](_0x0f33('0x86')+_0x592ecb);}if(!_[_0x0f33('0x87')](_0x592ecb,_0xda00f8[_0x0f33('0x48')][_0x0f33('0x85')])){throw new db[(_0x0f33('0x7c'))][(_0x0f33('0x7d'))](_0x0f33('0x88')+_0x592ecb);}_0x2b344b[_0xda00f8['body']['mapKey']]=_0xda00f8[_0x0f33('0x48')][_0x0f33('0x82')];})[_0x0f33('0x21')](function(){return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0xda00f8[_0x0f33('0x42')]['id']},'include':[{'model':db[_0x0f33('0x89')],'as':_0x0f33('0x8a'),'include':[{'model':db[_0x0f33('0x7b')],'as':_0x0f33('0x8b'),'where':_0x2b344b,'limit':0x1,'order':[[_0x0f33('0x8c'),_0x0f33('0x8d')]]}]},{'model':db['ChatApplication'],'as':_0x0f33('0x8e')}]});})[_0x0f33('0x21')](handleEntityNotFound(_0x1c5dcb,null))[_0x0f33('0x21')](function(_0x1be5bb){if(_0x1be5bb&&_0x1be5bb[_0x0f33('0x8a')]){_0x2df1dd[_0x0f33('0x8f')]=_0x1be5bb;_0x2df1dd['applications']=_0x1be5bb['Applications'];_0x2df1dd['list']=_0x1be5bb[_0x0f33('0x8a')];_0x2df1dd[_0x0f33('0x90')]=_[_0x0f33('0x91')](_0x2df1dd[_0x0f33('0x90')],[_0x0f33('0x92')],['asc']);if(_0x2df1dd[_0x0f33('0x8f')][_0x0f33('0x8e')]){delete _0x2df1dd[_0x0f33('0x8f')][_0x0f33('0x8e')];}if(_0x2df1dd[_0x0f33('0x8f')]['List']&&_0x2df1dd[_0x0f33('0x8f')][_0x0f33('0x8a')]['Contacts']['length']){return _0x2df1dd[_0x0f33('0x8f')][_0x0f33('0x8a')][_0x0f33('0x8b')][0x0];}var _0x23ae31=_['defaults'](_0xda00f8[_0x0f33('0x48')],{'firstName':_0xda00f8[_0x0f33('0x48')][_0x0f33('0x82')],'ListId':_0x1be5bb[_0x0f33('0x81')]});_0x23ae31[_0xda00f8['body'][_0x0f33('0x85')]]=_0xda00f8[_0x0f33('0x48')][_0x0f33('0x82')];return db[_0x0f33('0x7b')]['create'](_0x23ae31,{'fields':_0x2a5563,'raw':!![]});}})['then'](handleEntityNotFound(_0x1c5dcb,null))['then'](function(_0x5f0aaa){_0x2df1dd['contact']=_0x5f0aaa;var _0x566588=_0xda00f8['body'][_0x0f33('0x93')];if(_0xda00f8[_0x0f33('0x94')][_0x0f33('0x95')]){_0x566588=_0xda00f8[_0x0f33('0x94')]['cf-connecting-ip'];}else if(_0xda00f8['headers'][_0x0f33('0x96')]){_0x566588=_[_0x0f33('0x97')](_0xda00f8[_0x0f33('0x94')][_0x0f33('0x96')][_0x0f33('0x98')](','));}if(_0x5f0aaa){var _0x5eb891={'ContactId':_0x5f0aaa['id'],'ChatWebsiteId':_0xda00f8[_0x0f33('0x42')]['id'],'from':(_0x5f0aaa['firstName']||'')+'\x20'+(_0x5f0aaa['lastName']||''),'customerIp':_0x566588,'customerPort':_0xda00f8[_0x0f33('0x94')][_0x0f33('0x99')]?_0xda00f8[_0x0f33('0x94')]['x-real-port']:null,'referer':_0xda00f8[_0x0f33('0x48')][_0x0f33('0x9a')],'browserName':_0x5bbace[_0x0f33('0x9b')][_0x0f33('0x27')]&&_0x5bbace['browser'][_0x0f33('0x9c')]?util['format'](_0x0f33('0x9d'),_0x5bbace[_0x0f33('0x9b')][_0x0f33('0x27')],_0x5bbace[_0x0f33('0x9b')][_0x0f33('0x9c')]):'unknown','browserVersion':_0x5bbace[_0x0f33('0x9b')][_0x0f33('0x9c')]||_0x0f33('0x9e'),'osName':util[_0x0f33('0x9f')](_0x0f33('0x9d'),_0x5bbace['os']['name'],_0x5bbace['os']['version']),'osVersion':_0x5bbace['os'][_0x0f33('0x9c')],'deviceModel':_0x5bbace[_0x0f33('0xa0')][_0x0f33('0x31')]&&_0x5bbace[_0x0f33('0xa0')][_0x0f33('0xa1')]?util[_0x0f33('0x9f')](_0x0f33('0xa2'),_0x5bbace[_0x0f33('0xa0')][_0x0f33('0x31')],_0x5bbace[_0x0f33('0xa0')][_0x0f33('0xa1')],_0x5bbace[_0x0f33('0xa0')][_0x0f33('0x2f')]):null,'deviceVendor':_0x5bbace['device'][_0x0f33('0xa1')],'deviceType':_0x5bbace[_0x0f33('0xa0')][_0x0f33('0x2f')],'formData':JSON[_0x0f33('0x14')](_0xda00f8[_0x0f33('0x48')])};var _0x507731={'ChatWebsiteId':_0xda00f8[_0x0f33('0x42')]['id'],'closed':![]};if(_0xda00f8[_0x0f33('0x48')]['threadId']){_0x507731[_0x0f33('0xa3')]=_0xda00f8[_0x0f33('0x48')][_0x0f33('0xa3')];return db[_0x0f33('0xa4')][_0x0f33('0x46')]({'where':_0x507731})['then'](function(_0x32c390){if(_0x32c390){return[_0x32c390,![]];}_0x5eb891[_0x0f33('0xa3')]=_0xda00f8[_0x0f33('0x48')][_0x0f33('0xa3')];_0x5eb891['externalUrl']=_0xda00f8[_0x0f33('0x48')][_0x0f33('0xa5')];return db[_0x0f33('0xa4')][_0x0f33('0x47')](_0x5eb891)[_0x0f33('0x21')](function(_0x51a4fc){return[_0x51a4fc,!![]];});});}_0x507731['ContactId']=_0x5f0aaa['id'];if(_0xda00f8[_0x0f33('0x48')][_0x0f33('0xa6')]&&_0xda00f8[_0x0f33('0x48')]['interaction']['id']){_0x507731['id']=_0xda00f8[_0x0f33('0x48')][_0x0f33('0xa6')]['id'];return db[_0x0f33('0xa4')][_0x0f33('0x46')]({'where':_0x507731})[_0x0f33('0x21')](function(_0x240d3b){if(_0x240d3b){return[_0x240d3b,![]];}return db[_0x0f33('0xa4')][_0x0f33('0x47')](_0x5eb891)['then'](function(_0xec4d79){return[_0xec4d79,!![]];});});}return db[_0x0f33('0xa4')][_0x0f33('0x47')](_0x5eb891)[_0x0f33('0x21')](function(_0x1d7d8a){return[_0x1d7d8a,!![]];});}})[_0x0f33('0xa7')](function(_0x233092,_0x1b38fa){if(_0x233092){_0x20c82c=_0x1b38fa;if(!_0x1b38fa){var _0x35cc70={'from':(_0x2df1dd['contact'][_0x0f33('0xa8')]||'')+'\x20'+(_0x2df1dd[_0x0f33('0xa9')][_0x0f33('0xaa')]||'')};if(_0xda00f8[_0x0f33('0x48')][_0x0f33('0xa3')]&&_0xda00f8['body']['messageId']&&_0xda00f8[_0x0f33('0x48')][_0x0f33('0xa3')]!=_0xda00f8[_0x0f33('0x48')][_0x0f33('0xab')]){_0x35cc70[_0x0f33('0xa3')]=_0xda00f8[_0x0f33('0x48')][_0x0f33('0xab')];}return _0x233092[_0x0f33('0x20')](_0x35cc70);}else{return _0x233092;}}})[_0x0f33('0x21')](function(_0x5a9abc){_0x2df1dd[_0x0f33('0xa6')]=_0x5a9abc[_0x0f33('0x23')]({'plain':!![]});_0x2df1dd[_0x0f33('0xa6')][_0x0f33('0xac')]=_0x20c82c;if(_0x2df1dd['interaction'][_0x0f33('0xac')]){if(_0x2df1dd[_0x0f33('0x8f')]['autoclose']){_0x2df1dd[_0x0f33('0x90')][_0x0f33('0xad')]({'id':0x0,'priority':_0x2df1dd[_0x0f33('0x90')][_0x0f33('0x45')]+0x1,'app':_0x0f33('0xae'),'appdata':_0x0f33('0xaf'),'interval':_0x0f33('0xb0')});}}return db['ChatMessage'][_0x0f33('0x47')]({'body':_0xda00f8[_0x0f33('0x48')][_0x0f33('0x48')],'ChatWebsiteId':_0xda00f8['params']['id'],'ChatInteractionId':_0x5a9abc['id'],'direction':'in','ContactId':_0x2df1dd[_0x0f33('0xa9')]['id'],'AttachmentId':_0xda00f8[_0x0f33('0x48')][_0x0f33('0xb1')]});})[_0x0f33('0x21')](function(_0x393a88){_0x2df1dd['message']=_0x393a88;if(_0x2df1dd[_0x0f33('0xa6')][_0x0f33('0xb2')]){return db[_0x0f33('0xb3')][_0x0f33('0x46')]({'attributes':['id',_0x0f33('0x27')],'where':{'id':_0x2df1dd[_0x0f33('0xa6')][_0x0f33('0xb2')]}})[_0x0f33('0x21')](function(_0x1a7026){if(_0x1a7026){_0x2df1dd['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x0f33('0xb4'),'appdata':_0x1a7026['name']+','+(_0x2df1dd[_0x0f33('0x8f')][_0x0f33('0xb5')]||0xa),'interval':'*,*,*,*'});_0x2df1dd[_0x0f33('0xb6')]=!![];}return respondWithRpcPromise(_0x0f33('0xb7'),_0x0f33('0xb8'),_0x2df1dd);});}return respondWithRpcPromise(_0x0f33('0xb7'),_0x0f33('0xb8'),_0x2df1dd);})[_0x0f33('0x21')](function(_0xf05d52){respondWithRpcPromise(_0x0f33('0xb9'),_0x0f33('0xb9'),{'event':'notify','message':_0xf05d52},client9002);return _0xf05d52;})[_0x0f33('0x21')](respondWithResult(_0x1c5dcb,null))[_0x0f33('0x18')](handleError(_0x1c5dcb,null));};exports[_0x0f33('0xba')]=function(_0x3f4851,_0x509b45){var _0xd37d2d,_0x526f60,_0x48bee6;var _0x4a735b=[];var _0x736ac1={};var _0x2330e1=_0x3f4851[_0x0f33('0xbb')]||[];var _0x31136b=[];var _0x194a66;return db['CmContact'][_0x0f33('0x50')]()[_0x0f33('0x21')](function(_0x4361ee){if(!_0x4361ee){throw new db[(_0x0f33('0x7c'))][(_0x0f33('0x7d'))](_0x0f33('0xbc'));}_0x4a735b=_[_0x0f33('0x7e')](_[_0x0f33('0x43')](_0x4361ee),[_0x0f33('0x7f'),_0x0f33('0x8c'),_0x0f33('0x80'),_0x0f33('0x81')]);if(_0x3f4851['body']['id']){delete _0x3f4851[_0x0f33('0x48')]['id'];}if(_[_0x0f33('0x6b')](_0x3f4851[_0x0f33('0x48')][_0x0f33('0x82')])){throw _0x509b45[_0x0f33('0x19')](0x1f4)['send'](new db[(_0x0f33('0x7c'))]['ValidationError'](_0x0f33('0x83')));}if(_[_0x0f33('0x6b')](_0x3f4851[_0x0f33('0x48')][_0x0f33('0x48')])||_0x3f4851[_0x0f33('0x48')][_0x0f33('0x48')]===''){throw _0x509b45[_0x0f33('0x19')](0x1f4)[_0x0f33('0x28')](new db[(_0x0f33('0x7c'))][(_0x0f33('0x7d'))](_0x0f33('0x84')));}if(_['isNil'](_0x3f4851[_0x0f33('0x48')][_0x0f33('0xbd')])){throw _0x509b45[_0x0f33('0x19')](0x1f4)['send'](new db[(_0x0f33('0x7c'))][(_0x0f33('0x7d'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a735b));}if(!_['includes'](_0x4a735b,_0x3f4851['body']['mapKeyOffline'])){throw _0x509b45['status'](0x1f4)[_0x0f33('0x28')](new db[(_0x0f33('0x7c'))]['ValidationError']('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a735b));}_0x736ac1[_0x3f4851[_0x0f33('0x48')]['mapKeyOffline']]=_0x3f4851[_0x0f33('0x48')][_0x0f33('0x82')];})[_0x0f33('0x21')](function(){return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x3f4851[_0x0f33('0x42')]['id']},'include':[{'model':db[_0x0f33('0x89')],'as':_0x0f33('0x8a')},{'model':db[_0x0f33('0xbe')],'as':_0x0f33('0xbe')}]});})[_0x0f33('0x21')](handleEntityNotFound(_0x509b45,null))[_0x0f33('0x21')](function(_0x263851){if(_0x263851&&_0x263851['List']){_0x526f60=_0x263851;var _0x12d9e5=_[_0x0f33('0x9')](_0x3f4851[_0x0f33('0x48')],{'firstName':_0x3f4851['body'][_0x0f33('0x82')],'phone':_0x3f4851['body'][_0x0f33('0x82')],'ListId':_0x263851[_0x0f33('0x81')]});_0x12d9e5[_0x3f4851[_0x0f33('0x48')][_0x0f33('0xbd')]]=_0x3f4851[_0x0f33('0x48')][_0x0f33('0x82')];return db[_0x0f33('0x7b')][_0x0f33('0xbf')]({'where':_0x736ac1,'defaults':_0x12d9e5});}})['spread'](function(_0x396edf){if(_0x396edf){_0x48bee6=_0x396edf;var _0xe1c539=fs[_0x0f33('0xc0')](path[_0x0f33('0x67')](config[_0x0f33('0x68')],_0x0f33('0xc1')),_0x0f33('0xc2'));var _0x69e17d=ejs['render'](_0xe1c539,{'body':_[_0x0f33('0xc3')](_0x3f4851[_0x0f33('0x48')]['body']),'bodyTitle':_0x526f60['offlineMessageBody']});return db[_0x0f33('0xc4')][_0x0f33('0x47')]({'body':_0x69e17d,'ContactId':_0x396edf['id'],'ChatWebsiteId':_0x526f60['id']});}})['then'](function(_0x54019f){_0x194a66=_0x54019f;if(_0x2330e1[_0x0f33('0x45')]){var _0x262a82=_0x2330e1[_0x0f33('0x2c')](function(_0x2d3e55){return{'name':_0x2d3e55['originalname'],'basename':_0x2d3e55[_0x0f33('0x61')],'type':_0x2d3e55[_0x0f33('0xc5')],'ChatOfflineMessageId':_0x54019f['id']};});_0x31136b=_0x262a82['map'](_0x10858b=>{var _0xb1eb19={'filename':_0x10858b['name'],'path':path[_0x0f33('0x67')](config[_0x0f33('0x68')],_0x0f33('0xc6'),'files',_0x0f33('0xc7'),_0x0f33('0xc8'),_0x10858b[_0x0f33('0xc9')])};return _0xb1eb19;});if(!_0x526f60[_0x0f33('0xca')]){return db[_0x0f33('0xcb')][_0x0f33('0xcc')](function(_0x4b2e12){return db[_0x0f33('0xcd')]['bulkCreate'](_0x262a82,{'transaction':_0x4b2e12});});}}})['then'](function(){if(_0x194a66){_0xd37d2d=_0x194a66;return db['MailAccount'][_0x0f33('0x55')]({'where':{'active':!![]},'include':[{'model':db[_0x0f33('0xce')],'as':'Smtp','raw':!![]}]});}})[_0x0f33('0x21')](function(_0x4f7cac){if(_0x4f7cac&&_0x4f7cac[_0x0f33('0xcf')]&&_0x526f60['forwardOffline']&&_0x526f60['forwardOfflineAddress']){var _0x282c25={'tls':{'rejectUnauthorized':![]}};if(_0x4f7cac[_0x0f33('0xcf')][_0x0f33('0xd0')]){_0x282c25[_0x0f33('0xd0')]=_0x4f7cac[_0x0f33('0xcf')][_0x0f33('0xd0')];}else{_0x282c25['host']=_0x4f7cac[_0x0f33('0xcf')][_0x0f33('0xd1')];_0x282c25[_0x0f33('0xd2')]=_0x4f7cac[_0x0f33('0xcf')][_0x0f33('0xd2')];_0x282c25[_0x0f33('0xd3')]=_0x4f7cac[_0x0f33('0xcf')][_0x0f33('0xd3')];}if(_0x4f7cac[_0x0f33('0xcf')]['authentication']){_0x282c25[_0x0f33('0xd4')]={'user':_0x4f7cac['Smtp'][_0x0f33('0x49')],'pass':_0x4f7cac[_0x0f33('0xcf')]['pass']};}return respondWithRpcPromise('SendMail',_0x0f33('0xd5'),{'account':_0x282c25,'message':{'from':util[_0x0f33('0x9f')]('\x22%s\x22\x20<%s>',_0x4f7cac[_0x0f33('0x27')],_0x4f7cac[_0x0f33('0xd6')]||_0x4f7cac['Smtp'][_0x0f33('0x49')]),'to':_0x526f60[_0x0f33('0xd7')],'subject':_0x526f60[_0x0f33('0xd8')],'html':_0xd37d2d['body'],'attachments':_0x31136b}},client9003)[_0x0f33('0x21')](function(){return _0xd37d2d;})[_0x0f33('0x18')](function(_0x2bd01e){console[_0x0f33('0x15')](_0x2bd01e);});}})[_0x0f33('0x21')](function(){if(_0x526f60&&_0x526f60['openNewInteraction']&&_0x526f60[_0x0f33('0xd9')]){var _0x209e09=[];if(_0x2330e1[_0x0f33('0x45')]){_0x209e09=_0x2330e1[_0x0f33('0x2c')](function(_0x107c8a){return{'name':_0x107c8a[_0x0f33('0xda')],'basename':_0x107c8a['filename'],'type':_0x107c8a[_0x0f33('0xc5')],'ChatOfflineMessageId':_0x194a66['id']};});}var _0x28ad4e;if(!_['isNil'](_0x526f60['subjectOffline'])){var _0x51c408=_[_0x0f33('0x2c')](_0x3f4851[_0x0f33('0x48')],function(_0x5b4232){return _0x5b4232;});var _0x3f0ab0=_[_0x0f33('0xdb')](_0x51c408)[0x0];var _0x28fbe8=_[_0x0f33('0xdc')](_0x3f0ab0,function(_0x1b30c0){return _0x1b30c0;});_0x28ad4e=_0x28fbe8[0x1][_0x526f60[_0x0f33('0xdd')]];}var _0x29d17b={'from':_0x48bee6[_0x0f33('0xd6')],'firstName':_0x48bee6[_0x0f33('0xa8')],'lastName':_0x48bee6[_0x0f33('0xaa')],'mapKey':'email','message':{'from':_0x48bee6[_0x0f33('0xd6')],'to':_0x526f60[_0x0f33('0xbe')][_0x0f33('0xd6')],'cc':'','subject':_[_0x0f33('0x6b')](_0x28ad4e)?_0x526f60[_0x0f33('0xd8')]:_0x28ad4e,'messageId':'','sentAt':new Date(),'attach':_0x209e09['length'],'attachments':_0x209e09,'originChannel':_0x0f33('0xde'),'ChatWebsiteId':_0x526f60['id'],'ChatOfflineMessageId':_0xd37d2d['id'],'originTo':_0x526f60['MailAccount']['email']},'body':_0xd37d2d[_0x0f33('0x48')]};var _0x444185={'account':{'id':_0x526f60[_0x0f33('0xd9')]},'body':_0x29d17b,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x0f33('0xdf'),_0x0f33('0xe0'),_0x444185,client9001)[_0x0f33('0x21')](function(){return _0xd37d2d;})[_0x0f33('0x18')](function(_0x4a57bd){console[_0x0f33('0x15')](_0x4a57bd);});}return;})[_0x0f33('0x21')](function(){if(_0xd37d2d){return _0xd37d2d;}})[_0x0f33('0x21')](respondWithResult(_0x509b45,null))[_0x0f33('0x18')](function(_0x4a37af){console[_0x0f33('0x15')](_0x0f33('0x18'),_0x4a37af);for(var _0x1f4a38 of _0x2330e1){var _0x48bfa3=path[_0x0f33('0x67')](config[_0x0f33('0x68')],_0x0f33('0xc6'),'files',_0x0f33('0xc7'),_0x0f33('0xc8'),_0x1f4a38[_0x0f33('0x61')]);fs_extra['remove'](_0x48bfa3)[_0x0f33('0x18')](function(_0x2f1e82){console[_0x0f33('0x15')]('Could\x20not\x20remove\x20attachment\x20file',_0x48bfa3,_0x2f1e82);});}});};exports[_0x0f33('0xe1')]=function(_0x3ea9ee,_0x10145c){return db[_0x0f33('0xa4')][_0x0f33('0x46')]({'where':{'id':_0x3ea9ee[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x10145c,null))[_0x0f33('0x21')](function(_0x11ff05){if(_0x11ff05){return _0x11ff05[_0x0f33('0xe1')](_0x3ea9ee[_0x0f33('0x48')][_0x0f33('0x5a')],_[_0x0f33('0xe2')](_0x3ea9ee[_0x0f33('0x48')],[_0x0f33('0x5a'),'id'])||{});}})[_0x0f33('0x21')](respondWithResult(_0x10145c,null))[_0x0f33('0x18')](handleError(_0x10145c,null));};exports[_0x0f33('0xe3')]=function(_0x2253c6,_0x49d832){var _0x20476d={'raw':![],'where':{}};var _0x55ed96={};var _0x46beaf={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x2253c6[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x49d832,null))[_0x0f33('0x21')](function(_0x389c2c){if(_0x389c2c){_0x55ed96['model']=_[_0x0f33('0x43')](db[_0x0f33('0xa4')][_0x0f33('0x2d')]);_0x55ed96['query']=_[_0x0f33('0x43')](_0x2253c6[_0x0f33('0x32')]);_0x55ed96['filters']=_[_0x0f33('0x34')](_0x55ed96['model'],_0x55ed96[_0x0f33('0x32')]);_0x20476d[_0x0f33('0x35')]=_['intersection'](_0x55ed96[_0x0f33('0x31')],qs[_0x0f33('0x36')](_0x2253c6[_0x0f33('0x32')]['fields']));_0x20476d['attributes']=_0x20476d[_0x0f33('0x35')][_0x0f33('0x45')]?_0x20476d[_0x0f33('0x35')]:_0x55ed96['model'];if(!_0x2253c6['query'][_0x0f33('0x56')](_0x0f33('0x57'))){_0x20476d[_0x0f33('0x1d')]=qs[_0x0f33('0x1d')](_0x2253c6[_0x0f33('0x32')][_0x0f33('0x1d')]);_0x20476d['offset']=qs[_0x0f33('0x1c')](_0x2253c6[_0x0f33('0x32')][_0x0f33('0x1c')]);}_0x20476d['order']=qs[_0x0f33('0x38')](_0x2253c6['query'][_0x0f33('0x38')]);_0x20476d[_0x0f33('0x39')]=qs[_0x0f33('0x33')](_['pick'](_0x2253c6[_0x0f33('0x32')],_0x55ed96[_0x0f33('0x33')]));_0x20476d['where'][_0x0f33('0x52')]=_0x389c2c['id'];if(_0x2253c6[_0x0f33('0x32')][_0x0f33('0x3b')]){_0x20476d[_0x0f33('0x39')]=_[_0x0f33('0x3c')](_0x20476d['where'],{'$or':_[_0x0f33('0x2c')](_0x20476d['attributes'],function(_0x438c8e){var _0x33d247={};_0x33d247[_0x438c8e]={'$like':'%'+_0x2253c6['query']['filter']+'%'};return _0x33d247;})});}_0x20476d=_[_0x0f33('0x3c')]({},_0x20476d,_0x2253c6[_0x0f33('0x3d')]);return db[_0x0f33('0xa4')][_0x0f33('0x1e')]({'where':_0x20476d[_0x0f33('0x39')]})['then'](function(_0x3fa974){_0x46beaf[_0x0f33('0x1e')]=_0x3fa974;if(_0x2253c6[_0x0f33('0x32')]['includeAll']){_0x20476d[_0x0f33('0x58')]=[{'model':db[_0x0f33('0x7b')],'as':'Contact','required':![]},{'model':db[_0x0f33('0xb3')],'as':_0x0f33('0xe4'),'attributes':[_0x0f33('0x27'),'fullname',_0x0f33('0xe5')],'required':![]},{'model':db[_0x0f33('0xe6')],'as':_0x0f33('0xe7'),'attributes':['id',_0x0f33('0x27'),_0x0f33('0xe8')],'where':_0x2253c6[_0x0f33('0x32')]['tag']?{'id':_0x2253c6[_0x0f33('0x32')][_0x0f33('0xe9')]}:undefined,'required':_0x2253c6[_0x0f33('0x32')][_0x0f33('0xe9')]?!![]:![]}];}return db[_0x0f33('0xa4')][_0x0f33('0x3f')](_0x20476d);})[_0x0f33('0x21')](function(_0x8942a0){_0x46beaf['rows']=_0x8942a0;return _0x46beaf;});}})[_0x0f33('0x21')](respondWithFilteredResult(_0x49d832,_0x20476d))[_0x0f33('0x18')](handleError(_0x49d832,null));};function iftimePromise(_0x2c695b,_0x4cc192){return respondWithRpcPromise(_0x0f33('0xea'),_0x0f33('0xeb'),{'command':_0x4cc192[_0x0f33('0xec')]?util[_0x0f33('0x9f')](_0x0f33('0xed'),_0x2c695b['interval'],_0x4cc192['timezone']):util[_0x0f33('0x9f')]('iftime\x20%s',_0x2c695b[_0x0f33('0xee')])},client9002)['then'](function(_0x35518e){var _0x8a1535=_0x35518e&&_0x35518e[_0x0f33('0xef')]('true')>=0x0?!![]:![];logger[_0x0f33('0x10')](_0x0f33('0xf0'),_0x4cc192['id'],_0x2c695b['id'],_0x2c695b[_0x0f33('0xee')],_0x8a1535?_0x0f33('0xf1'):'OFFLINE',_0x4cc192[_0x0f33('0xec')]?_0x4cc192[_0x0f33('0xec')]:_0x0f33('0xf2'));return _0x8a1535;})['catch'](function(_0x2d7e51){logger['error'](_0x0f33('0xf0'),_0x4cc192['id'],_0x2c695b['id'],_0x2c695b[_0x0f33('0xee')],util[_0x0f33('0xf3')](_0x2d7e51,{'showHidden':![],'depth':null}),_0x4cc192[_0x0f33('0xec')]?_0x4cc192[_0x0f33('0xec')]:_0x0f33('0xf2'));return![];});}exports[_0x0f33('0xeb')]=function(_0xf149f0,_0x2e7270){var _0x81992a=0x0;var _0x1abb6b=0x0;var _0x492536=![];var _0x353219;var _0x14149c;return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0xf149f0['params']['id']},'include':[{'model':db[_0x0f33('0xf4')],'as':_0x0f33('0xf4'),'include':[{'model':db[_0x0f33('0xf4')],'as':_0x0f33('0xf5'),'attributes':['id',_0x0f33('0xee')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x2e7270,null))[_0x0f33('0x21')](function(_0x5a259d){if(_0x5a259d){_0x353219=_0x5a259d;return _0x5a259d[_0x0f33('0xf6')]({'raw':!![]});}})[_0x0f33('0x21')](function(_0x27f7f9){if(_0x353219){if(_0x27f7f9){_0x14149c=_0x27f7f9;}}return require('../../config/license/util')['getLicense']();})[_0x0f33('0x21')](function(_0x15f48b){if(_0x15f48b){_0x1abb6b=_0x15f48b['virtual'];_0x492536=_0x15f48b[_0x0f33('0x6a')];}})[_0x0f33('0x21')](function(){return db[_0x0f33('0xa4')][_0x0f33('0x1e')]({'where':{'closed':![]}});})['then'](function(_0x291c73){_0x81992a=_0x291c73;if(_0x1abb6b&&_0x291c73>_0x1abb6b){return db['License']['findOne']({'where':{'id':0x1}})[_0x0f33('0x21')](function(_0x36b0a9){if(_0x36b0a9){_0x36b0a9[_0x0f33('0xf7')](_0x0f33('0xf8'));}});}})[_0x0f33('0x21')](function(){if(_0x353219[_0x0f33('0xf4')]&&_0x353219[_0x0f33('0xf4')][_0x0f33('0xf5')]){var _0x2461ed=[];for(var _0x43a134=0x0;_0x43a134<_0x353219[_0x0f33('0xf4')][_0x0f33('0xf5')][_0x0f33('0x45')];_0x43a134++){var _0x4d97db=_0x353219[_0x0f33('0xf4')][_0x0f33('0xf5')][_0x43a134][_0x0f33('0x23')]({'plain':!![]});_0x2461ed[_0x0f33('0xad')](iftimePromise(_0x4d97db,_0x353219));}return BPromise['all'](_0x2461ed)[_0x0f33('0x21')](function(_0xb9d335){return _['some'](_0xb9d335);});}else{return!![];}})['then'](function(_0x39e14f){var _0x449084=fs[_0x0f33('0xc0')](path['join'](config[_0x0f33('0x68')],_0x0f33('0xf9')),_0x0f33('0xc2'));var _0xf9997c={'remote':_0x353219[_0x0f33('0xfa')],'query':querystring[_0x0f33('0x14')](_[_0x0f33('0x3c')](_0x353219[_0x0f33('0x23')]({'plain':!![]}),{'customerIp':_0xf149f0[_0x0f33('0x94')][_0x0f33('0x96')]||_0xf149f0['headers'][_0x0f33('0xfb')]||_0xf149f0['connection'][_0x0f33('0xfc')]||_0xf149f0['ip'],'referer':_0xf149f0['headers'][_0x0f33('0x9a')],'openedInteractions':_0x81992a,'maxInteractions':_0x1abb6b,'virtual':_0x492536['virtual'],'online':_0x39e14f,'custom':_0x492536}))['replace'](/'/g,'\x5c\x27')};_0x2e7270[_0x0f33('0x28')](ejs['render'](Mustache['render'](_0x449084,_0xf9997c),{'proactiveActions':_0x14149c,'alignment':_0x353219[_0x0f33('0xfd')],'verticalAlignment':_0x353219[_0x0f33('0xfe')],'div_color':_0x353219['color'],'labelText':_0x353219[_0x0f33('0xff')],'text_color':_0x353219[_0x0f33('0x100')],'button_color':_0x353219['color_button'],'background_color':_0x353219['backgroundColor']}));})[_0x0f33('0x18')](handleError(_0x2e7270,null));};exports[_0x0f33('0x101')]=function(_0x2eb45c,_0x24e7f9){var _0x1eb367=_0x2eb45c[_0x0f33('0x42')]['id'];var _0x52bfcb=_0x2eb45c[_0x0f33('0x48')];var _0x1f88e8=0xc8;var _0x5122c4=null;return db[_0x0f33('0xcb')]['transaction']({'isolationLevel':db[_0x0f33('0xcb')][_0x0f33('0x102')][_0x0f33('0x103')][_0x0f33('0x104')]},function(_0x2c7010){return db[_0x0f33('0x44')]['findOne']({'where':{'id':_0x1eb367},'transaction':_0x2c7010})[_0x0f33('0x21')](function(_0x3035ce){if(_0x3035ce){return db[_0x0f33('0x105')][_0x0f33('0x22')]({'where':{'ChatWebsiteId':_0x1eb367},'transaction':_0x2c7010})[_0x0f33('0x21')](function(){var _0x51e886=_[_0x0f33('0x2c')](_0x52bfcb,function(_0x388421){_0x388421['ChatWebsiteId']=_0x1eb367;return _0x388421;});return db['ChatApplication']['bulkCreate'](_0x51e886,{'transaction':_0x2c7010});});}else{_0x1f88e8=0x194;_0x5122c4=[];}});})[_0x0f33('0x21')](function(){if(_0x1f88e8!==0x194){return db[_0x0f33('0x105')][_0x0f33('0x106')]({'where':{'ChatWebsiteId':_0x1eb367},'order':_0x0f33('0x92')})[_0x0f33('0x21')](function(_0x1a83d7){_0x5122c4=_0x1a83d7;});}})[_0x0f33('0x18')](function(_0x5528c7){_0x1f88e8=0x1f4;logger[_0x0f33('0x15')](_0x5528c7[_0x0f33('0x107')]);if(_0x5528c7[_0x0f33('0x27')]){delete _0x5528c7[_0x0f33('0x27')];}_0x5122c4=_0x5528c7;})[_0x0f33('0x108')](function(){if(_0x5122c4===null){_0x24e7f9[_0x0f33('0x26')](_0x1f88e8);}else{if(_0x1f88e8===0x1f4){_0x24e7f9[_0x0f33('0x19')](_0x1f88e8)[_0x0f33('0x28')](_0x5122c4);}else{_0x24e7f9[_0x0f33('0x19')](_0x1f88e8)[_0x0f33('0x1b')](_0x5122c4);}}});};exports[_0x0f33('0x109')]=function(_0x1be4da,_0x2eac02){var _0x5f5d94={};var _0xfd896d={};var _0x3a9cdb;var _0x3ffde9;return db[_0x0f33('0x44')][_0x0f33('0x55')]({'where':{'id':_0x1be4da[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x2eac02,null))[_0x0f33('0x21')](function(_0x28635a){if(_0x28635a){_0x3a9cdb=_0x28635a;_0xfd896d['model']=_[_0x0f33('0x43')](db[_0x0f33('0x105')]['rawAttributes']);_0xfd896d[_0x0f33('0x32')]=_[_0x0f33('0x43')](_0x1be4da[_0x0f33('0x32')]);_0xfd896d[_0x0f33('0x33')]=_[_0x0f33('0x34')](_0xfd896d[_0x0f33('0x31')],_0xfd896d[_0x0f33('0x32')]);_0x5f5d94[_0x0f33('0x35')]=_[_0x0f33('0x34')](_0xfd896d[_0x0f33('0x31')],qs['fields'](_0x1be4da['query'][_0x0f33('0x36')]));_0x5f5d94[_0x0f33('0x35')]=_0x5f5d94[_0x0f33('0x35')]['length']?_0x5f5d94[_0x0f33('0x35')]:_0xfd896d[_0x0f33('0x31')];_0x5f5d94[_0x0f33('0x37')]=qs['sort'](_0x1be4da['query']['sort']);_0x5f5d94[_0x0f33('0x39')]=qs[_0x0f33('0x33')](_[_0x0f33('0x3a')](_0x1be4da[_0x0f33('0x32')],_0xfd896d[_0x0f33('0x33')]));if(_0x1be4da[_0x0f33('0x32')][_0x0f33('0x3b')]){_0x5f5d94[_0x0f33('0x39')]=_[_0x0f33('0x3c')](_0x5f5d94[_0x0f33('0x39')],{'$or':_['map'](_0x5f5d94['attributes'],function(_0x1d5137){var _0x36b8bf={};_0x36b8bf[_0x1d5137]={'$like':'%'+_0x1be4da['query']['filter']+'%'};return _0x36b8bf;})});}_0x5f5d94=_[_0x0f33('0x3c')]({},_0x5f5d94,_0x1be4da[_0x0f33('0x3d')]);return _0x3a9cdb[_0x0f33('0x109')](_0x5f5d94);}})[_0x0f33('0x21')](function(_0x63f157){if(_0x63f157){_0x3ffde9=_0x63f157[_0x0f33('0x45')];if(!_0x1be4da[_0x0f33('0x32')][_0x0f33('0x56')](_0x0f33('0x57'))){_0x5f5d94[_0x0f33('0x1d')]=qs['limit'](_0x1be4da[_0x0f33('0x32')][_0x0f33('0x1d')]);_0x5f5d94[_0x0f33('0x1c')]=qs[_0x0f33('0x1c')](_0x1be4da['query']['offset']);}return _0x3a9cdb['getApplications'](_0x5f5d94);}})[_0x0f33('0x21')](function(_0x2c880f){if(_0x2c880f){return _0x2c880f?{'count':_0x3ffde9,'rows':_0x2c880f}:null;}})[_0x0f33('0x21')](respondWithResult(_0x2eac02,null))['catch'](handleError(_0x2eac02,null));};exports[_0x0f33('0x10a')]=function(_0x438afc,_0x10020b){return db[_0x0f33('0x10b')][_0x0f33('0x46')]({'where':{'id':_0x438afc[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x10020b,null))['then'](function(_0x5b05cf){if(_0x5b05cf){return _0x5b05cf[_0x0f33('0x10a')](_0x438afc[_0x0f33('0x48')][_0x0f33('0x5a')],_[_0x0f33('0xe2')](_0x438afc[_0x0f33('0x48')],['ids','id'])||{});}})[_0x0f33('0x21')](respondWithResult(_0x10020b,null))['catch'](handleError(_0x10020b,null));};exports[_0x0f33('0xf6')]=function(_0x4e806f,_0x10368a){var _0x3750c6={};var _0x34c5fb={};var _0x54ea86;var _0x322b1f;return db[_0x0f33('0x44')][_0x0f33('0x55')]({'where':{'id':_0x4e806f['params']['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x10368a,null))[_0x0f33('0x21')](function(_0x29f48c){if(_0x29f48c){_0x54ea86=_0x29f48c;_0x34c5fb['model']=_['keys'](db[_0x0f33('0x10c')][_0x0f33('0x2d')]);_0x34c5fb['query']=_[_0x0f33('0x43')](_0x4e806f[_0x0f33('0x32')]);_0x34c5fb[_0x0f33('0x33')]=_[_0x0f33('0x34')](_0x34c5fb[_0x0f33('0x31')],_0x34c5fb[_0x0f33('0x32')]);_0x3750c6[_0x0f33('0x35')]=_['intersection'](_0x34c5fb['model'],qs[_0x0f33('0x36')](_0x4e806f['query'][_0x0f33('0x36')]));_0x3750c6[_0x0f33('0x35')]=_0x3750c6[_0x0f33('0x35')][_0x0f33('0x45')]?_0x3750c6[_0x0f33('0x35')]:_0x34c5fb[_0x0f33('0x31')];_0x3750c6[_0x0f33('0x37')]=qs[_0x0f33('0x38')](_0x4e806f[_0x0f33('0x32')][_0x0f33('0x38')]);_0x3750c6[_0x0f33('0x39')]=qs[_0x0f33('0x33')](_[_0x0f33('0x3a')](_0x4e806f[_0x0f33('0x32')],_0x34c5fb[_0x0f33('0x33')]));if(_0x4e806f[_0x0f33('0x32')][_0x0f33('0x3b')]){_0x3750c6[_0x0f33('0x39')]=_[_0x0f33('0x3c')](_0x3750c6['where'],{'$or':_[_0x0f33('0x2c')](_0x3750c6[_0x0f33('0x35')],function(_0x24167a){var _0x44d31a={};_0x44d31a[_0x24167a]={'$like':'%'+_0x4e806f[_0x0f33('0x32')][_0x0f33('0x3b')]+'%'};return _0x44d31a;})});}_0x3750c6=_[_0x0f33('0x3c')]({},_0x3750c6,_0x4e806f['options']);return _0x54ea86[_0x0f33('0xf6')](_0x3750c6);}})[_0x0f33('0x21')](function(_0x269e91){if(_0x269e91){_0x322b1f=_0x269e91[_0x0f33('0x45')];if(!_0x4e806f[_0x0f33('0x32')][_0x0f33('0x56')](_0x0f33('0x57'))){_0x3750c6[_0x0f33('0x1d')]=qs[_0x0f33('0x1d')](_0x4e806f[_0x0f33('0x32')]['limit']);_0x3750c6[_0x0f33('0x1c')]=qs[_0x0f33('0x1c')](_0x4e806f[_0x0f33('0x32')][_0x0f33('0x1c')]);}return _0x54ea86[_0x0f33('0xf6')](_0x3750c6);}})['then'](function(_0x58eb5a){if(_0x58eb5a){return _0x58eb5a?{'count':_0x322b1f,'rows':_0x58eb5a}:null;}})[_0x0f33('0x21')](respondWithResult(_0x10368a,null))[_0x0f33('0x18')](handleError(_0x10368a,null));};exports[_0x0f33('0x10d')]=function(_0x588fdd,_0x38a5a7){var _0x1169e5=_0x588fdd[_0x0f33('0x32')][_0x0f33('0x10e')]===_0x0f33('0x10f')?_0x0f33('0x110'):_0x0f33('0x111');return db[_0x0f33('0x44')][_0x0f33('0x46')]({'attributes':['id',_0x1169e5],'where':{'id':_0x588fdd[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x38a5a7,null))[_0x0f33('0x21')](function(_0x42f05e){if(_0x42f05e){var _0x1b7dee=_0x42f05e[_0x1169e5];var _0x3dc526=_0x1b7dee&&_0x1b7dee[_0x0f33('0x112')]?_0x1b7dee[_0x0f33('0x112')]:[];_0x38a5a7['send']({'fromKey':_[_0x0f33('0x6b')](_0x1b7dee[_0x0f33('0x113')])?undefined:_0x1b7dee[_0x0f33('0x113')],'count':_0x3dc526['length'],'rows':_0x3dc526});}})[_0x0f33('0x18')](handleError(_0x38a5a7,null));};exports[_0x0f33('0x114')]=function(_0x37ad13,_0x5aea89){var _0x3255bd={'raw':![],'where':{}};var _0x1a0f92={};var _0x556234={'count':0x0,'rows':[]};return db[_0x0f33('0x44')][_0x0f33('0x55')]({'where':{'id':_0x37ad13[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x5aea89,null))[_0x0f33('0x21')](function(_0x10e7f5){if(_0x10e7f5){_0x1a0f92[_0x0f33('0x31')]=_['keys'](db[_0x0f33('0xc4')]['rawAttributes']);_0x1a0f92[_0x0f33('0x32')]=_['keys'](_0x37ad13[_0x0f33('0x32')]);_0x1a0f92[_0x0f33('0x33')]=_[_0x0f33('0x34')](_0x1a0f92['model'],_0x1a0f92[_0x0f33('0x32')]);_0x3255bd[_0x0f33('0x35')]=_[_0x0f33('0x34')](_0x1a0f92['model'],qs[_0x0f33('0x36')](_0x37ad13[_0x0f33('0x32')]['fields']));_0x3255bd[_0x0f33('0x35')]=_0x3255bd[_0x0f33('0x35')][_0x0f33('0x45')]?_0x3255bd[_0x0f33('0x35')]:_0x1a0f92['model'];if(!_0x37ad13[_0x0f33('0x32')][_0x0f33('0x56')](_0x0f33('0x57'))){_0x3255bd[_0x0f33('0x1d')]=qs[_0x0f33('0x1d')](_0x37ad13[_0x0f33('0x32')][_0x0f33('0x1d')]);_0x3255bd[_0x0f33('0x1c')]=qs[_0x0f33('0x1c')](_0x37ad13[_0x0f33('0x32')][_0x0f33('0x1c')]);}_0x3255bd[_0x0f33('0x37')]=qs['sort'](_0x37ad13[_0x0f33('0x32')]['sort']);_0x3255bd[_0x0f33('0x39')]=qs[_0x0f33('0x33')](_[_0x0f33('0x3a')](_0x37ad13[_0x0f33('0x32')],_0x1a0f92[_0x0f33('0x33')]));_0x3255bd[_0x0f33('0x39')][_0x0f33('0x52')]=_0x10e7f5['id'];if(_0x37ad13[_0x0f33('0x32')]['filter']){_0x3255bd[_0x0f33('0x39')]=_[_0x0f33('0x3c')](_0x3255bd[_0x0f33('0x39')],{'$or':_[_0x0f33('0x2c')](_0x3255bd[_0x0f33('0x35')],function(_0x529d74){var _0x5af414={};_0x5af414[_0x529d74]={'$like':'%'+_0x37ad13[_0x0f33('0x32')][_0x0f33('0x3b')]+'%'};return _0x5af414;})});}_0x3255bd=_[_0x0f33('0x3c')]({},_0x3255bd,_0x37ad13[_0x0f33('0x3d')]);return db['ChatOfflineMessage'][_0x0f33('0x1e')]({'where':_0x3255bd[_0x0f33('0x39')]})[_0x0f33('0x21')](function(_0x2a4a56){_0x556234[_0x0f33('0x1e')]=_0x2a4a56;if(_0x37ad13[_0x0f33('0x32')]['includeAll']){_0x3255bd[_0x0f33('0x58')]=[{'all':!![]}];}else{_0x3255bd[_0x0f33('0x58')]=[{'model':db[_0x0f33('0x7b')],'as':_0x0f33('0x115'),'required':![]},{'model':db[_0x0f33('0xcd')],'as':'Attachments','required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x3255bd);})[_0x0f33('0x21')](function(_0x338b95){_0x556234[_0x0f33('0x40')]=_0x338b95;return _0x556234;});}})[_0x0f33('0x21')](respondWithFilteredResult(_0x5aea89,_0x3255bd))[_0x0f33('0x18')](handleError(_0x5aea89,null));};exports['addAgents']=function(_0x5187e3,_0x315ba9){return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x5187e3[_0x0f33('0x42')]['id']}})['then'](handleEntityNotFound(_0x315ba9,null))[_0x0f33('0x21')](function(_0x1afad4){if(_0x1afad4){return _0x1afad4[_0x0f33('0x116')](_0x5187e3[_0x0f33('0x48')][_0x0f33('0x5a')],_[_0x0f33('0xe2')](_0x5187e3['body'],[_0x0f33('0x5a'),'id'])||{})[_0x0f33('0xa7')](function(_0x3c7c35){for(var _0x55ed46=0x0;_0x55ed46<_0x5187e3[_0x0f33('0x48')][_0x0f33('0x5a')][_0x0f33('0x45')];_0x55ed46+=0x1){socket[_0x0f33('0x117')](_0x0f33('0x118'),{'UserId':Number(_0x5187e3[_0x0f33('0x48')]['ids'][_0x55ed46]),'ChatWebsiteId':Number(_0x5187e3[_0x0f33('0x42')]['id'])});}return _0x3c7c35;});}})[_0x0f33('0x21')](respondWithResult(_0x315ba9,null))[_0x0f33('0x18')](handleError(_0x315ba9,null));};exports['removeAgents']=function(_0x5ef8da,_0x2ca1ca){return db[_0x0f33('0x44')][_0x0f33('0x46')]({'where':{'id':_0x5ef8da[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x2ca1ca,null))['then'](function(_0x24f215){if(_0x24f215){return _0x24f215[_0x0f33('0x119')](_0x5ef8da[_0x0f33('0x32')][_0x0f33('0x5a')])[_0x0f33('0x21')](function(){if(_[_0x0f33('0x11a')](_0x5ef8da[_0x0f33('0x32')][_0x0f33('0x5a')])){for(var _0x3f12d2=0x0;_0x3f12d2<_0x5ef8da[_0x0f33('0x32')]['ids'][_0x0f33('0x45')];_0x3f12d2+=0x1){socket[_0x0f33('0x117')](_0x0f33('0x11b'),{'UserId':Number(_0x5ef8da['query'][_0x0f33('0x5a')][_0x3f12d2]),'ChatWebsiteId':Number(_0x5ef8da[_0x0f33('0x42')]['id'])});}}else{socket[_0x0f33('0x117')]('userChatWebsite:remove',{'UserId':Number(_0x5ef8da[_0x0f33('0x32')][_0x0f33('0x5a')]),'ChatWebsiteId':Number(_0x5ef8da[_0x0f33('0x42')]['id'])});}});}})[_0x0f33('0x21')](respondWithStatusCode(_0x2ca1ca,null))[_0x0f33('0x18')](handleError(_0x2ca1ca,null));};exports[_0x0f33('0x11c')]=function(_0x40e4f0,_0x2ce663){var _0x1477a6={};var _0x34f70f={};var _0x2e0de2;var _0x42d2c6;return db[_0x0f33('0x44')][_0x0f33('0x55')]({'where':{'id':_0x40e4f0[_0x0f33('0x42')]['id']}})[_0x0f33('0x21')](handleEntityNotFound(_0x2ce663,null))[_0x0f33('0x21')](function(_0x571ca0){if(_0x571ca0){_0x2e0de2=_0x571ca0;_0x34f70f[_0x0f33('0x31')]=_[_0x0f33('0x43')](db[_0x0f33('0xb3')][_0x0f33('0x2d')]);_0x34f70f['query']=_['keys'](_0x40e4f0['query']);_0x34f70f['filters']=_[_0x0f33('0x34')](_0x34f70f[_0x0f33('0x31')],_0x34f70f['query']);_0x1477a6[_0x0f33('0x35')]=_[_0x0f33('0x34')](_0x34f70f[_0x0f33('0x31')],qs[_0x0f33('0x36')](_0x40e4f0[_0x0f33('0x32')]['fields']));_0x1477a6[_0x0f33('0x35')]=_0x1477a6['attributes']['length']?_0x1477a6['attributes']:_0x34f70f['model'];_0x1477a6[_0x0f33('0x37')]=qs['sort'](_0x40e4f0[_0x0f33('0x32')][_0x0f33('0x38')]);_0x1477a6[_0x0f33('0x39')]=qs[_0x0f33('0x33')](_['pick'](_0x40e4f0[_0x0f33('0x32')],_0x34f70f[_0x0f33('0x33')]));if(_0x40e4f0['query'][_0x0f33('0x3b')]){_0x1477a6['where']=_[_0x0f33('0x3c')](_0x1477a6['where'],{'$or':_[_0x0f33('0x2c')](_0x1477a6['attributes'],function(_0x564941){var _0x896dba={};_0x896dba[_0x564941]={'$like':'%'+_0x40e4f0[_0x0f33('0x32')][_0x0f33('0x3b')]+'%'};return _0x896dba;})});}_0x1477a6=_[_0x0f33('0x3c')]({},_0x1477a6,_0x40e4f0['options']);return _0x2e0de2[_0x0f33('0x11c')](_0x1477a6);}})[_0x0f33('0x21')](function(_0x1277b3){if(_0x1277b3){_0x42d2c6=_0x1277b3['length'];if(!_0x40e4f0[_0x0f33('0x32')][_0x0f33('0x56')]('nolimit')){_0x1477a6[_0x0f33('0x1d')]=qs[_0x0f33('0x1d')](_0x40e4f0['query'][_0x0f33('0x1d')]);_0x1477a6[_0x0f33('0x1c')]=qs[_0x0f33('0x1c')](_0x40e4f0[_0x0f33('0x32')][_0x0f33('0x1c')]);}return _0x2e0de2[_0x0f33('0x11c')](_0x1477a6);}})[_0x0f33('0x21')](function(_0x1a2f8d){if(_0x1a2f8d){return _0x1a2f8d?{'count':_0x42d2c6,'rows':_0x1a2f8d}:null;}})[_0x0f33('0x21')](respondWithResult(_0x2ce663,null))[_0x0f33('0x18')](handleError(_0x2ce663,null));};
\ No newline at end of file
+var _0x840b=['lodash','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','./chatWebsite.socket','register','client','http','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','Content-Range','update','get','ChatWebsites','UserProfileResource','destroy','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','ChatWebsiteId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','addLogo','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','file','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','sitepic','../../config/license/util','custom','existsSync','server/files/images/logos/','getAvatar','server/files/images/avatars/default_avatar.png','isNil','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','setUA','headers','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','List','ChatApplication','Applications','account','applications','list','priority','asc','Contacts','defaults','customerIp','cf-connecting-ip','x-forwarded-for','first','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','interaction','contact','messageId','created','autoclose','push','close','*,*,*,*','ChatMessage','AttachmentId','User','UserId','unshift','waitForTheAssignedAgent','forcedOwnership','Start','EventManager','offline','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','mimetype','server','files','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','pass','SendMail','sendMail','offlineMessageSubject','MailAccountId','originalname','subjectOffline','toPairsIn','mapValues','email','Chat','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','fullname','internal','Tag','Tags','tag','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','inspect','Interval','getProactiveActions','getLicense','virtual','chatLicenseExceeded','Intervals','some','readFileSync','server/files/chat/iframe.ejs','remote','x-real-ip','connection','alignment','verticalAlignment','textColor','color_button','addApplications','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','stack','getApplications','addProactiveActions','chatProactiveAction','getFields','false','offlineForm','onlineForm','items','fromKey','ChatOfflineMessage','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','fs-extra'];(function(_0x2062b1,_0x2f1ac6){var _0x4f2bf0=function(_0x3c4b84){while(--_0x3c4b84){_0x2062b1['push'](_0x2062b1['shift']());}};_0x4f2bf0(++_0x2f1ac6);}(_0x840b,0x11f));var _0xb840=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x840b[_0x485b5a];return _0xd2b34d;};'use strict';var BPromise=require(_0xb840('0x0'));var Mustache=require(_0xb840('0x1'));var util=require(_0xb840('0x2'));var path=require(_0xb840('0x3'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb840('0x4'));var _=require(_0xb840('0x5'));var querystring=require(_0xb840('0x6'));var Redis=require(_0xb840('0x7'));var qs=require(_0xb840('0x8'));var logger=require(_0xb840('0x9'))(_0xb840('0xa'));var config=require(_0xb840('0xb'));var db=require('../../mysqldb')['db'];config[_0xb840('0xc')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb840('0xd'))[_0xb840('0xe')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xb840('0xf')][_0xb840('0x10')]({'port':0x232a});var client9003=jayson[_0xb840('0xf')][_0xb840('0x10')]({'port':0x232b});var client9001=jayson[_0xb840('0xf')]['http']({'port':0x2329});function respondWithRpcPromise(_0x4f7fad,_0x718e6e,_0x3ba0dd,_0x53b8df){return new BPromise(function(_0x103927,_0x3866e3){var _0x5eb421=_0x53b8df||client;return _0x5eb421['request'](_0x4f7fad,_0x3ba0dd)[_0xb840('0x11')](function(_0x38a46e){logger[_0xb840('0x12')](_0xb840('0x13'),_0x718e6e,_0xb840('0x14'));logger[_0xb840('0x15')](_0xb840('0x16'),_0x718e6e,'request\x20sent',JSON[_0xb840('0x17')](_0x38a46e));if(_0x38a46e[_0xb840('0x18')]){if(_0x38a46e[_0xb840('0x18')][_0xb840('0x19')]===0x1f4){logger[_0xb840('0x18')](_0xb840('0x13'),_0x718e6e,_0x38a46e['error'][_0xb840('0x1a')]);return _0x3866e3(_0x38a46e[_0xb840('0x18')]['message']);}logger['error'](_0xb840('0x13'),_0x718e6e,_0x38a46e[_0xb840('0x18')]['message']);return _0x103927(_0x38a46e[_0xb840('0x18')][_0xb840('0x1a')]);}else{logger[_0xb840('0x12')](_0xb840('0x13'),_0x718e6e,_0xb840('0x14'));_0x103927(_0x38a46e[_0xb840('0x1b')]['message']);}})[_0xb840('0x1c')](function(_0x4069c6){logger[_0xb840('0x18')](_0xb840('0x13'),_0x718e6e,_0x4069c6);_0x3866e3(_0x4069c6);});});}function respondWithStatusCode(_0x20ce2d,_0x38e7a1){_0x38e7a1=_0x38e7a1||0xcc;return function(_0x27779a){if(_0x27779a){return _0x20ce2d[_0xb840('0x1d')](_0x38e7a1);}return _0x20ce2d[_0xb840('0x1e')](_0x38e7a1)[_0xb840('0x1f')]();};}function respondWithResult(_0x12cd13,_0x553eee){_0x553eee=_0x553eee||0xc8;return function(_0x208478){if(_0x208478){return _0x12cd13['status'](_0x553eee)[_0xb840('0x20')](_0x208478);}};}function respondWithFilteredResult(_0x1c73cf,_0x5bc3d8){return function(_0x832cb7){if(_0x832cb7){var _0x4ea6da=typeof _0x5bc3d8['offset']===_0xb840('0x21')&&typeof _0x5bc3d8[_0xb840('0x22')]===_0xb840('0x21');var _0x1aa289=_0x832cb7['count'];var _0x4e711c=_0x4ea6da?0x0:_0x5bc3d8['offset'];var _0x406356=_0x4ea6da?_0x832cb7['count']:_0x5bc3d8['offset']+_0x5bc3d8['limit'];var _0x27150a;if(_0x406356>=_0x1aa289){_0x406356=_0x1aa289;_0x27150a=0xc8;}else{_0x27150a=0xce;}_0x1c73cf['status'](_0x27150a);return _0x1c73cf['set'](_0xb840('0x23'),_0x4e711c+'-'+_0x406356+'/'+_0x1aa289)[_0xb840('0x20')](_0x832cb7);}return null;};}function saveUpdates(_0x4b9c71){return function(_0x23d397){if(_0x23d397){return _0x23d397[_0xb840('0x24')](_0x4b9c71)['then'](function(_0x5a9878){return _0x5a9878;});}return null;};}function removeEntity(_0x4c4b80){return function(_0x339461){if(_0x339461){return _0x339461['destroy']()[_0xb840('0x11')](function(){var _0x1e1575=_0x339461[_0xb840('0x25')]({'plain':!![]});var _0x10caf0=_0xb840('0x26');return db[_0xb840('0x27')][_0xb840('0x28')]({'where':{'type':_0x10caf0,'resourceId':_0x1e1575['id']}})['then'](function(){return _0x339461;});})['then'](function(){_0x4c4b80[_0xb840('0x1e')](0xcc)[_0xb840('0x1f')]();});}};}function handleEntityNotFound(_0xe99c9f){return function(_0xaf623f){if(!_0xaf623f){_0xe99c9f[_0xb840('0x1d')](0x194);}return _0xaf623f;};}function handleError(_0x3b2d6d,_0x59a3e2){_0x59a3e2=_0x59a3e2||0x1f4;return function(_0x328d53){logger['error'](_0x328d53['stack']);if(_0x328d53[_0xb840('0x29')]){delete _0x328d53[_0xb840('0x29')];}_0x3b2d6d[_0xb840('0x1e')](_0x59a3e2)[_0xb840('0x2a')](_0x328d53);};}exports[_0xb840('0x2b')]=function(_0x597ae0,_0x4870c8){var _0x3ca15d={'include':[{'model':db[_0xb840('0x2c')],'as':_0xb840('0x2d')}]},_0x24d91b={},_0x189cee={'count':0x0,'rows':[]};var _0x4ff1b6=_[_0xb840('0x2e')](db[_0xb840('0x2f')]['rawAttributes'],function(_0x598fab){return{'name':_0x598fab[_0xb840('0x30')],'type':_0x598fab[_0xb840('0x31')][_0xb840('0x32')]};});_0x24d91b[_0xb840('0x33')]=_[_0xb840('0x2e')](_0x4ff1b6,_0xb840('0x29'));_0x24d91b[_0xb840('0x34')]=_[_0xb840('0x35')](_0x597ae0['query']);_0x24d91b[_0xb840('0x36')]=_[_0xb840('0x37')](_0x24d91b['model'],_0x24d91b[_0xb840('0x34')]);_0x3ca15d[_0xb840('0x38')]=_[_0xb840('0x37')](_0x24d91b[_0xb840('0x33')],qs['fields'](_0x597ae0[_0xb840('0x34')][_0xb840('0x39')]));_0x3ca15d[_0xb840('0x38')]=_0x3ca15d['attributes']['length']?_0x3ca15d['attributes']:_0x24d91b['model'];if(!_0x597ae0['query'][_0xb840('0x3a')](_0xb840('0x3b'))){_0x3ca15d['limit']=qs['limit'](_0x597ae0[_0xb840('0x34')]['limit']);_0x3ca15d[_0xb840('0x3c')]=qs[_0xb840('0x3c')](_0x597ae0[_0xb840('0x34')][_0xb840('0x3c')]);}_0x3ca15d[_0xb840('0x3d')]=qs[_0xb840('0x3e')](_0x597ae0[_0xb840('0x34')][_0xb840('0x3e')]);_0x3ca15d[_0xb840('0x3f')]=qs[_0xb840('0x36')](_[_0xb840('0x40')](_0x597ae0[_0xb840('0x34')],_0x24d91b[_0xb840('0x36')]),_0x4ff1b6);if(_0x597ae0[_0xb840('0x34')][_0xb840('0x41')]){_0x3ca15d[_0xb840('0x3f')]=_[_0xb840('0x42')](_0x3ca15d['where'],{'$or':_[_0xb840('0x2e')](_0x4ff1b6,function(_0x37afff){if(_0x37afff[_0xb840('0x31')]!==_0xb840('0x43')){var _0x3889dd={};_0x3889dd[_0x37afff[_0xb840('0x29')]]={'$like':'%'+_0x597ae0['query'][_0xb840('0x41')]+'%'};return _0x3889dd;}})});}_0x3ca15d=_[_0xb840('0x42')]({},_0x3ca15d,_0x597ae0[_0xb840('0x44')]);var _0x385872={'where':_0x3ca15d[_0xb840('0x3f')]};return db[_0xb840('0x2f')][_0xb840('0x45')](_0x385872)[_0xb840('0x11')](function(_0x5d65b7){_0x189cee[_0xb840('0x45')]=_0x5d65b7;if(_0x597ae0['query'][_0xb840('0x46')]){_0x3ca15d[_0xb840('0x47')]=[{'all':!![]}];}return db[_0xb840('0x2f')][_0xb840('0x48')](_0x3ca15d);})[_0xb840('0x11')](function(_0x4c752e){_0x189cee[_0xb840('0x49')]=_0x4c752e;return _0x189cee;})[_0xb840('0x11')](respondWithFilteredResult(_0x4870c8,_0x3ca15d))[_0xb840('0x1c')](handleError(_0x4870c8,null));};exports[_0xb840('0x4a')]=function(_0x4daf80,_0x43c9a4){var _0x1119f7={'raw':![],'where':{'id':_0x4daf80[_0xb840('0x4b')]['id']},'include':[{'model':db['Pause'],'as':_0xb840('0x2d')}]},_0x9f7b73={};_0x9f7b73['model']=_[_0xb840('0x35')](db[_0xb840('0x2f')][_0xb840('0x4c')]);_0x9f7b73['query']=_['keys'](_0x4daf80[_0xb840('0x34')]);_0x9f7b73[_0xb840('0x36')]=_[_0xb840('0x37')](_0x9f7b73[_0xb840('0x33')],_0x9f7b73[_0xb840('0x34')]);_0x1119f7[_0xb840('0x38')]=_[_0xb840('0x37')](_0x9f7b73[_0xb840('0x33')],qs['fields'](_0x4daf80[_0xb840('0x34')]['fields']));_0x1119f7[_0xb840('0x38')]=_0x1119f7[_0xb840('0x38')][_0xb840('0x4d')]?_0x1119f7['attributes']:_0x9f7b73[_0xb840('0x33')];if(_0x4daf80[_0xb840('0x34')]['includeAll']){_0x1119f7['include']=[{'all':!![]}];}_0x1119f7=_[_0xb840('0x42')]({},_0x1119f7,_0x4daf80[_0xb840('0x44')]);return db[_0xb840('0x2f')][_0xb840('0x4e')](_0x1119f7)[_0xb840('0x11')](handleEntityNotFound(_0x43c9a4,null))[_0xb840('0x11')](respondWithResult(_0x43c9a4,null))[_0xb840('0x1c')](handleError(_0x43c9a4,null));};exports[_0xb840('0x4f')]=function(_0x35fe83,_0x73829d){return db[_0xb840('0x2f')][_0xb840('0x4f')](_0x35fe83[_0xb840('0x50')],{})[_0xb840('0x11')](function(_0x1fe055){var _0x289129=_0x35fe83[_0xb840('0x51')][_0xb840('0x25')]({'plain':!![]});if(!_0x289129)throw new Error(_0xb840('0x52'));if(_0x289129[_0xb840('0x53')]===_0xb840('0x51')){var _0x333d0d=_0x1fe055[_0xb840('0x25')]({'plain':!![]});var _0x77f00d=_0xb840('0x26');return db[_0xb840('0x54')][_0xb840('0x4e')]({'where':{'name':_0x77f00d,'userProfileId':_0x289129[_0xb840('0x55')]},'raw':!![]})[_0xb840('0x11')](function(_0x2b3202){if(_0x2b3202&&_0x2b3202[_0xb840('0x56')]===0x0){return db[_0xb840('0x27')][_0xb840('0x4f')]({'name':_0x333d0d['name'],'resourceId':_0x333d0d['id'],'type':_0x2b3202[_0xb840('0x29')],'sectionId':_0x2b3202['id']},{})[_0xb840('0x11')](function(){return _0x1fe055;});}else{return _0x1fe055;}})[_0xb840('0x1c')](function(_0xc53f17){logger[_0xb840('0x18')](_0xb840('0x57'),_0xc53f17);throw _0xc53f17;});}return _0x1fe055;})[_0xb840('0x11')](respondWithResult(_0x73829d,0xc9))['catch'](handleError(_0x73829d,null));};exports['update']=function(_0x16aac2,_0x52935b){if(_0x16aac2[_0xb840('0x50')]['id']){delete _0x16aac2[_0xb840('0x50')]['id'];}return db[_0xb840('0x2f')][_0xb840('0x4e')]({'where':{'id':_0x16aac2['params']['id']},'include':[{'model':db[_0xb840('0x2c')],'as':_0xb840('0x2d')}]})[_0xb840('0x11')](handleEntityNotFound(_0x52935b,null))[_0xb840('0x11')](saveUpdates(_0x16aac2['body'],null))[_0xb840('0x11')](respondWithResult(_0x52935b,null))['catch'](handleError(_0x52935b,null));};exports[_0xb840('0x28')]=function(_0x19a79a,_0x3c5c1e){return db['ChatWebsite'][_0xb840('0x4e')]({'where':{'id':_0x19a79a[_0xb840('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3c5c1e,null))[_0xb840('0x11')](removeEntity(_0x3c5c1e,null))[_0xb840('0x1c')](handleError(_0x3c5c1e,null));};exports[_0xb840('0x58')]=function(_0x14d644,_0xc6ac90){return db[_0xb840('0x2f')][_0xb840('0x58')]()[_0xb840('0x11')](respondWithResult(_0xc6ac90,null))['catch'](handleError(_0xc6ac90,null));};exports[_0xb840('0x59')]=function(_0x61f2b7,_0x248b44){if(_0x61f2b7[_0xb840('0x50')]['id']){delete _0x61f2b7[_0xb840('0x50')]['id'];}return db[_0xb840('0x2f')]['find']({'where':{'id':_0x61f2b7[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x248b44,null))['then'](function(_0x4dfb23){if(_0x4dfb23){_0x61f2b7['body']['ChatWebsiteId']=_0x4dfb23['id'];return db[_0xb840('0x5a')][_0xb840('0x4f')](_0x61f2b7[_0xb840('0x50')]);}})[_0xb840('0x11')](respondWithResult(_0x248b44,null))[_0xb840('0x1c')](handleError(_0x248b44,null));};exports[_0xb840('0x5b')]=function(_0x907108,_0x2ebfe2){var _0x5a3a7b={'raw':![],'where':{}};var _0x29fc39={};var _0x510290={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb840('0x5c')]({'where':{'id':_0x907108[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x2ebfe2,null))[_0xb840('0x11')](function(_0x113263){if(_0x113263){_0x29fc39[_0xb840('0x33')]=_[_0xb840('0x35')](db[_0xb840('0x5a')][_0xb840('0x4c')]);_0x29fc39[_0xb840('0x34')]=_[_0xb840('0x35')](_0x907108[_0xb840('0x34')]);_0x29fc39[_0xb840('0x36')]=_[_0xb840('0x37')](_0x29fc39[_0xb840('0x33')],_0x29fc39[_0xb840('0x34')]);_0x5a3a7b[_0xb840('0x38')]=_['intersection'](_0x29fc39[_0xb840('0x33')],qs['fields'](_0x907108['query'][_0xb840('0x39')]));_0x5a3a7b[_0xb840('0x38')]=_0x5a3a7b[_0xb840('0x38')][_0xb840('0x4d')]?_0x5a3a7b[_0xb840('0x38')]:_0x29fc39[_0xb840('0x33')];if(!_0x907108[_0xb840('0x34')]['hasOwnProperty'](_0xb840('0x3b'))){_0x5a3a7b[_0xb840('0x22')]=qs[_0xb840('0x22')](_0x907108[_0xb840('0x34')][_0xb840('0x22')]);_0x5a3a7b['offset']=qs[_0xb840('0x3c')](_0x907108[_0xb840('0x34')][_0xb840('0x3c')]);}_0x5a3a7b[_0xb840('0x3d')]=qs[_0xb840('0x3e')](_0x907108[_0xb840('0x34')]['sort']);_0x5a3a7b[_0xb840('0x3f')]=qs[_0xb840('0x36')](_[_0xb840('0x40')](_0x907108['query'],_0x29fc39[_0xb840('0x36')]));_0x5a3a7b[_0xb840('0x3f')][_0xb840('0x5d')]=_0x113263['id'];if(_0x907108[_0xb840('0x34')][_0xb840('0x41')]){_0x5a3a7b['where']=_[_0xb840('0x42')](_0x5a3a7b[_0xb840('0x3f')],{'$or':_['map'](_0x5a3a7b[_0xb840('0x38')],function(_0x53a57e){var _0x3632c7={};_0x3632c7[_0x53a57e]={'$like':'%'+_0x907108[_0xb840('0x34')]['filter']+'%'};return _0x3632c7;})});}_0x5a3a7b=_[_0xb840('0x42')]({},_0x5a3a7b,_0x907108[_0xb840('0x44')]);return db[_0xb840('0x5a')]['count']({'where':_0x5a3a7b[_0xb840('0x3f')]})[_0xb840('0x11')](function(_0x5ce877){_0x510290[_0xb840('0x45')]=_0x5ce877;if(_0x907108['query']['includeAll']){_0x5a3a7b[_0xb840('0x47')]=[{'all':!![]}];}return db[_0xb840('0x5a')][_0xb840('0x48')](_0x5a3a7b);})[_0xb840('0x11')](function(_0x2d61c5){_0x510290[_0xb840('0x49')]=_0x2d61c5;return _0x510290;});}})[_0xb840('0x11')](respondWithFilteredResult(_0x2ebfe2,_0x5a3a7b))[_0xb840('0x1c')](handleError(_0x2ebfe2,null));};exports[_0xb840('0x5e')]=function(_0x2704b6,_0x3aafb7){return db['ChatWebsite']['find']({'where':{'id':_0x2704b6['params']['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x3aafb7,null))[_0xb840('0x11')](function(_0x20c669){if(_0x20c669){return _0x20c669['removeDispositions'](_0x2704b6[_0xb840('0x34')][_0xb840('0x5f')]);}})[_0xb840('0x11')](respondWithStatusCode(_0x3aafb7,null))[_0xb840('0x1c')](handleError(_0x3aafb7,null));};exports[_0xb840('0x60')]=function(_0x53befc,_0x2d1f70){if(_0x53befc[_0xb840('0x50')]['id']){delete _0x53befc[_0xb840('0x50')]['id'];}return db[_0xb840('0x2f')][_0xb840('0x4e')]({'where':{'id':_0x53befc[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x2d1f70,null))[_0xb840('0x11')](function(_0x23184d){if(_0x23184d){_0x53befc['body'][_0xb840('0x5d')]=_0x23184d['id'];return db[_0xb840('0x61')][_0xb840('0x4f')](_0x53befc[_0xb840('0x50')]);}})[_0xb840('0x11')](respondWithResult(_0x2d1f70,null))[_0xb840('0x1c')](handleError(_0x2d1f70,null));};exports[_0xb840('0x62')]=function(_0x35f991,_0x4ce586){var _0x3a9d73={'raw':![],'where':{}};var _0x15cb3c={};var _0x28523e={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb840('0x5c')]({'where':{'id':_0x35f991[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x4ce586,null))['then'](function(_0x117cc1){if(_0x117cc1){_0x15cb3c[_0xb840('0x33')]=_['keys'](db[_0xb840('0x61')][_0xb840('0x4c')]);_0x15cb3c[_0xb840('0x34')]=_[_0xb840('0x35')](_0x35f991[_0xb840('0x34')]);_0x15cb3c[_0xb840('0x36')]=_['intersection'](_0x15cb3c[_0xb840('0x33')],_0x15cb3c['query']);_0x3a9d73[_0xb840('0x38')]=_[_0xb840('0x37')](_0x15cb3c[_0xb840('0x33')],qs[_0xb840('0x39')](_0x35f991[_0xb840('0x34')][_0xb840('0x39')]));_0x3a9d73[_0xb840('0x38')]=_0x3a9d73[_0xb840('0x38')][_0xb840('0x4d')]?_0x3a9d73[_0xb840('0x38')]:_0x15cb3c[_0xb840('0x33')];if(!_0x35f991[_0xb840('0x34')][_0xb840('0x3a')]('nolimit')){_0x3a9d73[_0xb840('0x22')]=qs[_0xb840('0x22')](_0x35f991[_0xb840('0x34')][_0xb840('0x22')]);_0x3a9d73[_0xb840('0x3c')]=qs[_0xb840('0x3c')](_0x35f991['query'][_0xb840('0x3c')]);}_0x3a9d73['order']=qs[_0xb840('0x3e')](_0x35f991[_0xb840('0x34')][_0xb840('0x3e')]);_0x3a9d73[_0xb840('0x3f')]=qs[_0xb840('0x36')](_[_0xb840('0x40')](_0x35f991[_0xb840('0x34')],_0x15cb3c[_0xb840('0x36')]));_0x3a9d73[_0xb840('0x3f')][_0xb840('0x5d')]=_0x117cc1['id'];if(_0x35f991[_0xb840('0x34')][_0xb840('0x41')]){_0x3a9d73[_0xb840('0x3f')]=_['merge'](_0x3a9d73[_0xb840('0x3f')],{'$or':_[_0xb840('0x2e')](_0x3a9d73[_0xb840('0x38')],function(_0x2b91c0){var _0x3eea68={};_0x3eea68[_0x2b91c0]={'$like':'%'+_0x35f991[_0xb840('0x34')][_0xb840('0x41')]+'%'};return _0x3eea68;})});}_0x3a9d73=_[_0xb840('0x42')]({},_0x3a9d73,_0x35f991[_0xb840('0x44')]);return db[_0xb840('0x61')][_0xb840('0x45')]({'where':_0x3a9d73[_0xb840('0x3f')]})['then'](function(_0x29062e){_0x28523e[_0xb840('0x45')]=_0x29062e;if(_0x35f991[_0xb840('0x34')][_0xb840('0x46')]){_0x3a9d73[_0xb840('0x47')]=[{'all':!![]}];}return db['CannedAnswer'][_0xb840('0x48')](_0x3a9d73);})[_0xb840('0x11')](function(_0x203ca0){_0x28523e['rows']=_0x203ca0;return _0x28523e;});}})['then'](respondWithFilteredResult(_0x4ce586,_0x3a9d73))['catch'](handleError(_0x4ce586,null));};exports['removeAnswers']=function(_0x584b3f,_0x3f0b29){return db['ChatWebsite'][_0xb840('0x4e')]({'where':{'id':_0x584b3f[_0xb840('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3f0b29,null))['then'](function(_0x461866){if(_0x461866){return _0x461866['removeAnswers'](_0x584b3f['query']['ids']);}})[_0xb840('0x11')](respondWithStatusCode(_0x3f0b29,null))[_0xb840('0x1c')](handleError(_0x3f0b29,null));};exports[_0xb840('0x63')]=function(_0x3ccb40,_0x4633b5){_0x3ccb40[_0xb840('0x50')]['sitepic']=_0x3ccb40['file'][_0xb840('0x64')];return db['ChatWebsite'][_0xb840('0x4e')]({'where':{'id':_0x3ccb40['params']['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x4633b5,null))['then'](saveUpdates(_0x3ccb40[_0xb840('0x50')],null))[_0xb840('0x11')](respondWithResult(_0x4633b5,null))[_0xb840('0x1c')](handleError(_0x4633b5,null));};exports[_0xb840('0x65')]=function(_0x537baa,_0x2553a4){_0x537baa['body'][_0xb840('0x66')]=_0x537baa['file']['filename'];return db[_0xb840('0x2f')][_0xb840('0x4e')]({'where':{'id':_0x537baa['params']['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x2553a4,null))[_0xb840('0x11')](saveUpdates(_0x537baa[_0xb840('0x50')],null))['then'](respondWithResult(_0x2553a4,null))[_0xb840('0x1c')](handleError(_0x2553a4,null));};exports[_0xb840('0x67')]=function(_0x575b94,_0x49836d){_0x575b94[_0xb840('0x50')][_0xb840('0x68')]=_0x575b94[_0xb840('0x69')][_0xb840('0x64')];return db[_0xb840('0x2f')][_0xb840('0x4e')]({'where':{'id':_0x575b94[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x49836d,null))['then'](saveUpdates(_0x575b94[_0xb840('0x50')],null))['then'](respondWithResult(_0x49836d,null))[_0xb840('0x1c')](handleError(_0x49836d,null));};exports[_0xb840('0x6a')]=function(_0x32f10e,_0x15696c){_0x32f10e[_0xb840('0x50')][_0xb840('0x6b')]=_0x32f10e['file'][_0xb840('0x64')];return db[_0xb840('0x2f')][_0xb840('0x4e')]({'where':{'id':_0x32f10e[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x15696c,null))[_0xb840('0x11')](saveUpdates(_0x32f10e[_0xb840('0x50')],null))[_0xb840('0x11')](respondWithResult(_0x15696c,null))[_0xb840('0x1c')](handleError(_0x15696c,null));};exports[_0xb840('0x6c')]=function(_0x408290,_0x53d63d){var _0x3f4ff5=path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0x6f'));var _0x5d7feb={'where':{'id':_0x408290[_0xb840('0x4b')]['id']},'attributes':['id',_0xb840('0x70')],'raw':!![]};var _0x297393=![];return require(_0xb840('0x71'))['getLicense']()[_0xb840('0x11')](function(_0x2c641c){if(_0x2c641c){_0x297393=_0x2c641c[_0xb840('0x72')];}})[_0xb840('0x11')](function(){return db[_0xb840('0x2f')][_0xb840('0x4e')](_0x5d7feb);})['then'](handleEntityNotFound(_0x53d63d,null))[_0xb840('0x11')](function(_0x56cf76){if(_0x56cf76){if(!_['isNil'](_0x56cf76['sitepic'])){if(fs[_0xb840('0x73')](path[_0xb840('0x6d')](config[_0xb840('0x6e')],'server/files/images/logos/',_0x56cf76[_0xb840('0x70')]))&&_0x297393){_0x3f4ff5=path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0x74'),_0x56cf76[_0xb840('0x70')]);}}return _0x53d63d['download'](_0x3f4ff5);}})[_0xb840('0x1c')](handleError(_0x53d63d,null));};exports[_0xb840('0x75')]=function(_0x27f700,_0x2521dd){var _0x34fc25=path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0x76'));var _0x4c5cb2={'where':{'id':_0x27f700[_0xb840('0x4b')]['id']},'attributes':['id',_0xb840('0x66')],'raw':!![]};return db[_0xb840('0x2f')]['find'](_0x4c5cb2)[_0xb840('0x11')](handleEntityNotFound(_0x2521dd,null))[_0xb840('0x11')](function(_0x2e987d){if(_0x2e987d){if(!_[_0xb840('0x77')](_0x2e987d['agentAvatar'])){if(fs[_0xb840('0x73')](path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0x78'),_0x2e987d[_0xb840('0x66')]))){_0x34fc25=path['join'](config[_0xb840('0x6e')],_0xb840('0x78'),_0x2e987d['agentAvatar']);}}return _0x2521dd[_0xb840('0x79')](_0x34fc25);}})['catch'](handleError(_0x2521dd,null));};exports[_0xb840('0x7a')]=function(_0xc9fa85,_0xe1b809){var _0x5a5c3b=path[_0xb840('0x6d')](config['root'],_0xb840('0x7b'));var _0x3511a1={'where':{'id':_0xc9fa85[_0xb840('0x4b')]['id']},'attributes':['id',_0xb840('0x68'),'showCustomerAvatar'],'raw':!![]};return db[_0xb840('0x2f')][_0xb840('0x4e')](_0x3511a1)['then'](handleEntityNotFound(_0xe1b809,null))[_0xb840('0x11')](function(_0x58ef4a){if(_0x58ef4a){if(!_['isNil'](_0x58ef4a[_0xb840('0x68')])){if(fs['existsSync'](path[_0xb840('0x6d')](config['root'],'server/files/images/avatars/',_0x58ef4a['customerAvatar']))&&_0x58ef4a['showCustomerAvatar']){_0x5a5c3b=path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0x78'),_0x58ef4a[_0xb840('0x68')]);}}return _0xe1b809[_0xb840('0x79')](_0x5a5c3b);}})['catch'](handleError(_0xe1b809,null));};exports[_0xb840('0x7c')]=function(_0x3b0659,_0x19438b){var _0x4c5b63=path['join'](config['root'],_0xb840('0x7d'));var _0x5ebdb8={'where':{'id':_0x3b0659[_0xb840('0x4b')]['id']},'attributes':['id',_0xb840('0x6b')],'raw':!![]};return db[_0xb840('0x2f')][_0xb840('0x4e')](_0x5ebdb8)['then'](handleEntityNotFound(_0x19438b,null))[_0xb840('0x11')](function(_0x6d2700){if(_0x6d2700){if(!_[_0xb840('0x77')](_0x6d2700[_0xb840('0x6b')])){if(fs['existsSync'](path[_0xb840('0x6d')](config['root'],_0xb840('0x78'),_0x6d2700[_0xb840('0x6b')]))){_0x4c5b63=path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0x78'),_0x6d2700[_0xb840('0x6b')]);}}return _0x19438b['download'](_0x4c5b63);}})[_0xb840('0x1c')](handleError(_0x19438b,null));};exports[_0xb840('0x7e')]=function(_0x3d4f14,_0x2f88db){var _0x1be63c=require('user-agent-parser');var _0x34b22c=new _0x1be63c();var _0x466f63=_0x34b22c[_0xb840('0x7f')](_0x3d4f14[_0xb840('0x80')]['user-agent'])['getResult']();var _0x2d6654={'body':_0x3d4f14[_0xb840('0x50')],'channel':_0xb840('0x81')};var _0x566cc1=[];var _0x35442c=[];var _0x2c1f72={};var _0x5e84d0=![];return db[_0xb840('0x82')][_0xb840('0x58')]()[_0xb840('0x11')](function(_0x367f51){if(!_0x367f51){throw new db[(_0xb840('0x83'))][(_0xb840('0x84'))](_0xb840('0x85'));}_0x566cc1=_[_0xb840('0x86')](_[_0xb840('0x35')](_0x367f51),[_0xb840('0x87'),'updatedAt']);_0x35442c=_[_0xb840('0x86')](_[_0xb840('0x35')](_0x367f51),[_0xb840('0x87'),_0xb840('0x88'),_0xb840('0x89'),_0xb840('0x8a')]);if(_0x3d4f14['body']['id']){delete _0x3d4f14[_0xb840('0x50')]['id'];}if(_[_0xb840('0x77')](_0x3d4f14[_0xb840('0x50')][_0xb840('0x8b')])){throw new db['Sequelize'][(_0xb840('0x84'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x3d4f14[_0xb840('0x50')][_0xb840('0x50')])||_0x3d4f14['body'][_0xb840('0x50')]===''){throw new db[(_0xb840('0x83'))][(_0xb840('0x84'))](_0xb840('0x8c'));}if(_[_0xb840('0x77')](_0x3d4f14[_0xb840('0x50')]['mapKey'])){throw new db[(_0xb840('0x83'))][(_0xb840('0x84'))](_0xb840('0x8d')+_0x35442c);}if(!_['includes'](_0x35442c,_0x3d4f14[_0xb840('0x50')]['mapKey'])){throw new db[(_0xb840('0x83'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x35442c);}_0x2c1f72[_0x3d4f14[_0xb840('0x50')][_0xb840('0x8e')]]=_0x3d4f14[_0xb840('0x50')][_0xb840('0x8b')];})[_0xb840('0x11')](function(){return db[_0xb840('0x2f')]['find']({'where':{'id':_0x3d4f14[_0xb840('0x4b')]['id']},'include':[{'model':db[_0xb840('0x8f')],'as':_0xb840('0x90'),'include':[{'model':db[_0xb840('0x82')],'as':'Contacts','where':_0x2c1f72,'limit':0x1,'order':[[_0xb840('0x88'),'DESC']]}]},{'model':db[_0xb840('0x91')],'as':_0xb840('0x92')}]});})[_0xb840('0x11')](handleEntityNotFound(_0x2f88db,null))[_0xb840('0x11')](function(_0x4a8877){if(_0x4a8877&&_0x4a8877[_0xb840('0x90')]){_0x2d6654[_0xb840('0x93')]=_0x4a8877;_0x2d6654[_0xb840('0x94')]=_0x4a8877[_0xb840('0x92')];_0x2d6654[_0xb840('0x95')]=_0x4a8877[_0xb840('0x90')];_0x2d6654[_0xb840('0x94')]=_['orderBy'](_0x2d6654[_0xb840('0x94')],[_0xb840('0x96')],[_0xb840('0x97')]);if(_0x2d6654['account'][_0xb840('0x92')]){delete _0x2d6654[_0xb840('0x93')]['Applications'];}if(_0x2d6654['account']['List']&&_0x2d6654['account'][_0xb840('0x90')][_0xb840('0x98')]['length']){return _0x2d6654[_0xb840('0x93')][_0xb840('0x90')][_0xb840('0x98')][0x0];}var _0x4b5cae=_[_0xb840('0x99')](_0x3d4f14['body'],{'firstName':_0x3d4f14['body'][_0xb840('0x8b')],'ListId':_0x4a8877[_0xb840('0x8a')]});_0x4b5cae[_0x3d4f14[_0xb840('0x50')]['mapKey']]=_0x3d4f14[_0xb840('0x50')][_0xb840('0x8b')];return db['CmContact']['create'](_0x4b5cae,{'fields':_0x566cc1,'raw':!![]});}})[_0xb840('0x11')](handleEntityNotFound(_0x2f88db,null))[_0xb840('0x11')](function(_0x4a14a8){_0x2d6654['contact']=_0x4a14a8;var _0x48b608=_0x3d4f14[_0xb840('0x50')][_0xb840('0x9a')];if(_0x3d4f14['headers'][_0xb840('0x9b')]){_0x48b608=_0x3d4f14[_0xb840('0x80')]['cf-connecting-ip'];}else if(_0x3d4f14['headers'][_0xb840('0x9c')]){_0x48b608=_[_0xb840('0x9d')](_0x3d4f14[_0xb840('0x80')][_0xb840('0x9c')]['split'](','));}if(_0x4a14a8){var _0x1dc15d={'ContactId':_0x4a14a8['id'],'ChatWebsiteId':_0x3d4f14['params']['id'],'from':(_0x4a14a8[_0xb840('0x9e')]||'')+'\x20'+(_0x4a14a8[_0xb840('0x9f')]||''),'customerIp':_0x48b608,'customerPort':_0x3d4f14[_0xb840('0x80')][_0xb840('0xa0')]?_0x3d4f14[_0xb840('0x80')][_0xb840('0xa0')]:null,'referer':_0x3d4f14[_0xb840('0x50')][_0xb840('0xa1')],'browserName':_0x466f63[_0xb840('0xa2')][_0xb840('0x29')]&&_0x466f63[_0xb840('0xa2')][_0xb840('0xa3')]?util[_0xb840('0xa4')](_0xb840('0xa5'),_0x466f63['browser'][_0xb840('0x29')],_0x466f63[_0xb840('0xa2')][_0xb840('0xa3')]):_0xb840('0xa6'),'browserVersion':_0x466f63[_0xb840('0xa2')][_0xb840('0xa3')]||_0xb840('0xa6'),'osName':util[_0xb840('0xa4')](_0xb840('0xa5'),_0x466f63['os']['name'],_0x466f63['os'][_0xb840('0xa3')]),'osVersion':_0x466f63['os']['version'],'deviceModel':_0x466f63[_0xb840('0xa7')][_0xb840('0x33')]&&_0x466f63['device'][_0xb840('0xa8')]?util[_0xb840('0xa4')](_0xb840('0xa9'),_0x466f63[_0xb840('0xa7')][_0xb840('0x33')],_0x466f63[_0xb840('0xa7')][_0xb840('0xa8')],_0x466f63[_0xb840('0xa7')]['type']):null,'deviceVendor':_0x466f63[_0xb840('0xa7')][_0xb840('0xa8')],'deviceType':_0x466f63[_0xb840('0xa7')]['type'],'formData':JSON[_0xb840('0x17')](_0x3d4f14[_0xb840('0x50')])};var _0x59a210={'ChatWebsiteId':_0x3d4f14['params']['id'],'closed':![]};if(_0x3d4f14[_0xb840('0x50')][_0xb840('0xaa')]){_0x59a210[_0xb840('0xaa')]=_0x3d4f14[_0xb840('0x50')][_0xb840('0xaa')];return db[_0xb840('0xab')][_0xb840('0x4e')]({'where':_0x59a210})[_0xb840('0x11')](function(_0x2bf403){if(_0x2bf403){return[_0x2bf403,![]];}_0x1dc15d['threadId']=_0x3d4f14[_0xb840('0x50')][_0xb840('0xaa')];_0x1dc15d[_0xb840('0xac')]=_0x3d4f14[_0xb840('0x50')][_0xb840('0xac')];return db['ChatInteraction'][_0xb840('0x4f')](_0x1dc15d)[_0xb840('0x11')](function(_0x335210){return[_0x335210,!![]];});});}_0x59a210['ContactId']=_0x4a14a8['id'];if(_0x3d4f14[_0xb840('0x50')][_0xb840('0xad')]&&_0x3d4f14[_0xb840('0x50')][_0xb840('0xad')]['id']){_0x59a210['id']=_0x3d4f14[_0xb840('0x50')][_0xb840('0xad')]['id'];return db['ChatInteraction'][_0xb840('0x4e')]({'where':_0x59a210})['then'](function(_0x3f6c99){if(_0x3f6c99){return[_0x3f6c99,![]];}return db[_0xb840('0xab')]['create'](_0x1dc15d)[_0xb840('0x11')](function(_0x772bd2){return[_0x772bd2,!![]];});});}return db[_0xb840('0xab')][_0xb840('0x4f')](_0x1dc15d)['then'](function(_0x4e6b42){return[_0x4e6b42,!![]];});}})['spread'](function(_0x165835,_0x3d0831){if(_0x165835){_0x5e84d0=_0x3d0831;if(!_0x3d0831){var _0x38bef8={'from':(_0x2d6654['contact']['firstName']||'')+'\x20'+(_0x2d6654[_0xb840('0xae')][_0xb840('0x9f')]||'')};if(_0x3d4f14[_0xb840('0x50')]['threadId']&&_0x3d4f14['body'][_0xb840('0xaf')]&&_0x3d4f14[_0xb840('0x50')][_0xb840('0xaa')]!=_0x3d4f14[_0xb840('0x50')][_0xb840('0xaf')]){_0x38bef8[_0xb840('0xaa')]=_0x3d4f14[_0xb840('0x50')][_0xb840('0xaf')];}return _0x165835[_0xb840('0x24')](_0x38bef8);}else{return _0x165835;}}})[_0xb840('0x11')](function(_0x5bed8c){_0x2d6654[_0xb840('0xad')]=_0x5bed8c[_0xb840('0x25')]({'plain':!![]});_0x2d6654[_0xb840('0xad')][_0xb840('0xb0')]=_0x5e84d0;if(_0x2d6654[_0xb840('0xad')][_0xb840('0xb0')]){if(_0x2d6654[_0xb840('0x93')][_0xb840('0xb1')]){_0x2d6654[_0xb840('0x94')][_0xb840('0xb2')]({'id':0x0,'priority':_0x2d6654[_0xb840('0x94')]['length']+0x1,'app':_0xb840('0xb3'),'appdata':'unmanaged','interval':_0xb840('0xb4')});}}return db[_0xb840('0xb5')]['create']({'body':_0x3d4f14['body'][_0xb840('0x50')],'ChatWebsiteId':_0x3d4f14[_0xb840('0x4b')]['id'],'ChatInteractionId':_0x5bed8c['id'],'direction':'in','ContactId':_0x2d6654['contact']['id'],'AttachmentId':_0x3d4f14[_0xb840('0x50')][_0xb840('0xb6')]});})[_0xb840('0x11')](function(_0x1d59cb){_0x2d6654[_0xb840('0x1a')]=_0x1d59cb;if(_0x2d6654[_0xb840('0xad')]['UserId']){return db[_0xb840('0xb7')]['find']({'attributes':['id',_0xb840('0x29')],'where':{'id':_0x2d6654[_0xb840('0xad')][_0xb840('0xb8')]}})[_0xb840('0x11')](function(_0xb1f4ab){if(_0xb1f4ab){_0x2d6654['applications'][_0xb840('0xb9')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0xb1f4ab['name']+','+(_0x2d6654[_0xb840('0x93')][_0xb840('0xba')]||0xa),'interval':_0xb840('0xb4')});_0x2d6654[_0xb840('0xbb')]=!![];}return respondWithRpcPromise('Start','startRouting',_0x2d6654);});}return respondWithRpcPromise(_0xb840('0xbc'),'startRouting',_0x2d6654);})[_0xb840('0x11')](function(_0x5ae671){respondWithRpcPromise(_0xb840('0xbd'),_0xb840('0xbd'),{'event':_0xb840('0x7e'),'message':_0x5ae671},client9002);return _0x5ae671;})[_0xb840('0x11')](respondWithResult(_0x2f88db,null))['catch'](handleError(_0x2f88db,null));};exports[_0xb840('0xbe')]=function(_0x3cde54,_0x4a5750){var _0x10eaf5,_0x95691,_0x2ee903;var _0x2e8fd3=[];var _0x576826={};var _0x5f365a=_0x3cde54['files']||[];var _0x58cd7e=[];var _0x2642cc;return db[_0xb840('0x82')]['describe']()['then'](function(_0x30f481){if(!_0x30f481){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x2e8fd3=_[_0xb840('0x86')](_['keys'](_0x30f481),['createdAt',_0xb840('0x88'),_0xb840('0x89'),_0xb840('0x8a')]);if(_0x3cde54[_0xb840('0x50')]['id']){delete _0x3cde54[_0xb840('0x50')]['id'];}if(_[_0xb840('0x77')](_0x3cde54[_0xb840('0x50')][_0xb840('0x8b')])){throw _0x4a5750[_0xb840('0x1e')](0x1f4)[_0xb840('0x2a')](new db['Sequelize'][(_0xb840('0x84'))]('from\x20is\x20mandatory'));}if(_[_0xb840('0x77')](_0x3cde54[_0xb840('0x50')][_0xb840('0x50')])||_0x3cde54[_0xb840('0x50')][_0xb840('0x50')]===''){throw _0x4a5750[_0xb840('0x1e')](0x1f4)[_0xb840('0x2a')](new db[(_0xb840('0x83'))][(_0xb840('0x84'))](_0xb840('0x8c')));}if(_[_0xb840('0x77')](_0x3cde54['body'][_0xb840('0xbf')])){throw _0x4a5750['status'](0x1f4)[_0xb840('0x2a')](new db[(_0xb840('0x83'))][(_0xb840('0x84'))](_0xb840('0xc0')+_0x2e8fd3));}if(!_[_0xb840('0xc1')](_0x2e8fd3,_0x3cde54[_0xb840('0x50')][_0xb840('0xbf')])){throw _0x4a5750['status'](0x1f4)[_0xb840('0x2a')](new db['Sequelize'][(_0xb840('0x84'))](_0xb840('0xc2')+_0x2e8fd3));}_0x576826[_0x3cde54[_0xb840('0x50')]['mapKeyOffline']]=_0x3cde54[_0xb840('0x50')][_0xb840('0x8b')];})[_0xb840('0x11')](function(){return db[_0xb840('0x2f')][_0xb840('0x4e')]({'where':{'id':_0x3cde54[_0xb840('0x4b')]['id']},'include':[{'model':db[_0xb840('0x8f')],'as':_0xb840('0x90')},{'model':db[_0xb840('0xc3')],'as':_0xb840('0xc3')}]});})[_0xb840('0x11')](handleEntityNotFound(_0x4a5750,null))['then'](function(_0x5affbf){if(_0x5affbf&&_0x5affbf[_0xb840('0x90')]){_0x95691=_0x5affbf;var _0x59bc2b=_[_0xb840('0x99')](_0x3cde54[_0xb840('0x50')],{'firstName':_0x3cde54[_0xb840('0x50')]['from'],'phone':_0x3cde54['body']['from'],'ListId':_0x5affbf[_0xb840('0x8a')]});_0x59bc2b[_0x3cde54[_0xb840('0x50')][_0xb840('0xbf')]]=_0x3cde54[_0xb840('0x50')][_0xb840('0x8b')];return db[_0xb840('0x82')][_0xb840('0xc4')]({'where':_0x576826,'defaults':_0x59bc2b});}})['spread'](function(_0x270f25){if(_0x270f25){_0x2ee903=_0x270f25;var _0x179790=fs['readFileSync'](path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0xc5')),_0xb840('0xc6'));var _0x30afd2=ejs[_0xb840('0xc7')](_0x179790,{'body':_[_0xb840('0xc8')](_0x3cde54[_0xb840('0x50')][_0xb840('0x50')]),'bodyTitle':_0x95691['offlineMessageBody']});return db['ChatOfflineMessage'][_0xb840('0x4f')]({'body':_0x30afd2,'ContactId':_0x270f25['id'],'ChatWebsiteId':_0x95691['id']});}})['then'](function(_0x4c58fe){_0x2642cc=_0x4c58fe;if(_0x5f365a[_0xb840('0x4d')]){var _0x926b43=_0x5f365a[_0xb840('0x2e')](function(_0x4aac44){return{'name':_0x4aac44['originalname'],'basename':_0x4aac44[_0xb840('0x64')],'type':_0x4aac44[_0xb840('0xc9')],'ChatOfflineMessageId':_0x4c58fe['id']};});_0x58cd7e=_0x926b43[_0xb840('0x2e')](_0x133720=>{var _0x441ed7={'filename':_0x133720[_0xb840('0x29')],'path':path[_0xb840('0x6d')](config['root'],_0xb840('0xca'),_0xb840('0xcb'),_0xb840('0xcc'),_0xb840('0xcd'),_0x133720[_0xb840('0xce')])};return _0x441ed7;});if(!_0x95691[_0xb840('0xcf')]){return db[_0xb840('0xd0')][_0xb840('0xd1')](function(_0x1d2d74){return db[_0xb840('0xd2')]['bulkCreate'](_0x926b43,{'transaction':_0x1d2d74});});}}})['then'](function(){if(_0x2642cc){_0x10eaf5=_0x2642cc;return db['MailAccount'][_0xb840('0x5c')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0xb840('0xd3'),'raw':!![]}]});}})[_0xb840('0x11')](function(_0xa4afd3){if(_0xa4afd3&&_0xa4afd3[_0xb840('0xd3')]&&_0x95691[_0xb840('0xd4')]&&_0x95691[_0xb840('0xd5')]){var _0x484161={'tls':{'rejectUnauthorized':![]}};if(_0xa4afd3['Smtp'][_0xb840('0xd6')]){_0x484161[_0xb840('0xd6')]=_0xa4afd3[_0xb840('0xd3')][_0xb840('0xd6')];}else{_0x484161[_0xb840('0xd7')]=_0xa4afd3[_0xb840('0xd3')]['host'];_0x484161[_0xb840('0xd8')]=_0xa4afd3[_0xb840('0xd3')]['port'];_0x484161[_0xb840('0xd9')]=_0xa4afd3[_0xb840('0xd3')]['secure'];}if(_0xa4afd3[_0xb840('0xd3')][_0xb840('0xda')]){_0x484161['auth']={'user':_0xa4afd3[_0xb840('0xd3')][_0xb840('0x51')],'pass':_0xa4afd3['Smtp'][_0xb840('0xdb')]};}return respondWithRpcPromise(_0xb840('0xdc'),_0xb840('0xdd'),{'account':_0x484161,'message':{'from':util[_0xb840('0xa4')]('\x22%s\x22\x20<%s>',_0xa4afd3[_0xb840('0x29')],_0xa4afd3['email']||_0xa4afd3['Smtp'][_0xb840('0x51')]),'to':_0x95691[_0xb840('0xd5')],'subject':_0x95691[_0xb840('0xde')],'html':_0x10eaf5[_0xb840('0x50')],'attachments':_0x58cd7e}},client9003)['then'](function(){return _0x10eaf5;})[_0xb840('0x1c')](function(_0x5f14c4){console['error'](_0x5f14c4);});}})['then'](function(){if(_0x95691&&_0x95691['openNewInteraction']&&_0x95691[_0xb840('0xdf')]){var _0x20afab=[];if(_0x5f365a[_0xb840('0x4d')]){_0x20afab=_0x5f365a[_0xb840('0x2e')](function(_0x210365){return{'name':_0x210365[_0xb840('0xe0')],'basename':_0x210365[_0xb840('0x64')],'type':_0x210365['mimetype'],'ChatOfflineMessageId':_0x2642cc['id']};});}var _0xc6144a;if(!_[_0xb840('0x77')](_0x95691[_0xb840('0xe1')])){var _0x448a06=_[_0xb840('0x2e')](_0x3cde54[_0xb840('0x50')],function(_0x342b37){return _0x342b37;});var _0x5ab53a=_[_0xb840('0xe2')](_0x448a06)[0x0];var _0x2dbc4e=_[_0xb840('0xe3')](_0x5ab53a,function(_0x3b4e17){return _0x3b4e17;});_0xc6144a=_0x2dbc4e[0x1][_0x95691[_0xb840('0xe1')]];}var _0x5675af={'from':_0x2ee903[_0xb840('0xe4')],'firstName':_0x2ee903[_0xb840('0x9e')],'lastName':_0x2ee903[_0xb840('0x9f')],'mapKey':_0xb840('0xe4'),'message':{'from':_0x2ee903['email'],'to':_0x95691[_0xb840('0xc3')][_0xb840('0xe4')],'cc':'','subject':_[_0xb840('0x77')](_0xc6144a)?_0x95691[_0xb840('0xde')]:_0xc6144a,'messageId':'','sentAt':new Date(),'attach':_0x20afab[_0xb840('0x4d')],'attachments':_0x20afab,'originChannel':_0xb840('0xe5'),'ChatWebsiteId':_0x95691['id'],'ChatOfflineMessageId':_0x10eaf5['id'],'originTo':_0x95691[_0xb840('0xc3')][_0xb840('0xe4')]},'body':_0x10eaf5[_0xb840('0x50')]};var _0x5d7b32={'account':{'id':_0x95691[_0xb840('0xdf')]},'body':_0x5675af,'log':_0xb840('0xe6')};return respondWithRpcPromise(_0xb840('0xe6'),'notifyMail',_0x5d7b32,client9001)[_0xb840('0x11')](function(){return _0x10eaf5;})[_0xb840('0x1c')](function(_0x3d5310){console[_0xb840('0x18')](_0x3d5310);});}return;})[_0xb840('0x11')](function(){if(_0x10eaf5){return _0x10eaf5;}})['then'](respondWithResult(_0x4a5750,null))['catch'](function(_0x242b66){console[_0xb840('0x18')](_0xb840('0x1c'),_0x242b66);for(var _0x4b9a1a of _0x5f365a){var _0x26717c=path[_0xb840('0x6d')](config[_0xb840('0x6e')],_0xb840('0xca'),_0xb840('0xcb'),'attachments',_0xb840('0xcd'),_0x4b9a1a[_0xb840('0x64')]);fs_extra[_0xb840('0xe7')](_0x26717c)[_0xb840('0x1c')](function(_0x168ee3){console[_0xb840('0x18')](_0xb840('0xe8'),_0x26717c,_0x168ee3);});}});};exports[_0xb840('0xe9')]=function(_0x304367,_0x1d7d47){return db['ChatInteraction'][_0xb840('0x4e')]({'where':{'id':_0x304367[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x1d7d47,null))['then'](function(_0x4ed6fb){if(_0x4ed6fb){return _0x4ed6fb[_0xb840('0xe9')](_0x304367['body'][_0xb840('0x5f')],_[_0xb840('0xea')](_0x304367[_0xb840('0x50')],[_0xb840('0x5f'),'id'])||{});}})[_0xb840('0x11')](respondWithResult(_0x1d7d47,null))['catch'](handleError(_0x1d7d47,null));};exports[_0xb840('0xeb')]=function(_0x33b2be,_0x2d65d9){var _0x53243c={'raw':![],'where':{}};var _0x14ca25={};var _0x406f53={'count':0x0,'rows':[]};return db[_0xb840('0x2f')][_0xb840('0x5c')]({'where':{'id':_0x33b2be[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x2d65d9,null))[_0xb840('0x11')](function(_0x367829){if(_0x367829){_0x14ca25['model']=_[_0xb840('0x35')](db['ChatInteraction'][_0xb840('0x4c')]);_0x14ca25[_0xb840('0x34')]=_[_0xb840('0x35')](_0x33b2be[_0xb840('0x34')]);_0x14ca25[_0xb840('0x36')]=_[_0xb840('0x37')](_0x14ca25[_0xb840('0x33')],_0x14ca25[_0xb840('0x34')]);_0x53243c[_0xb840('0x38')]=_[_0xb840('0x37')](_0x14ca25[_0xb840('0x33')],qs[_0xb840('0x39')](_0x33b2be[_0xb840('0x34')]['fields']));_0x53243c['attributes']=_0x53243c[_0xb840('0x38')]['length']?_0x53243c[_0xb840('0x38')]:_0x14ca25['model'];if(!_0x33b2be[_0xb840('0x34')][_0xb840('0x3a')](_0xb840('0x3b'))){_0x53243c[_0xb840('0x22')]=qs[_0xb840('0x22')](_0x33b2be['query'][_0xb840('0x22')]);_0x53243c[_0xb840('0x3c')]=qs[_0xb840('0x3c')](_0x33b2be['query'][_0xb840('0x3c')]);}_0x53243c['order']=qs[_0xb840('0x3e')](_0x33b2be[_0xb840('0x34')][_0xb840('0x3e')]);_0x53243c['where']=qs['filters'](_[_0xb840('0x40')](_0x33b2be['query'],_0x14ca25['filters']));_0x53243c[_0xb840('0x3f')][_0xb840('0x5d')]=_0x367829['id'];if(_0x33b2be[_0xb840('0x34')][_0xb840('0x41')]){_0x53243c[_0xb840('0x3f')]=_[_0xb840('0x42')](_0x53243c['where'],{'$or':_[_0xb840('0x2e')](_0x53243c[_0xb840('0x38')],function(_0x1f1eab){var _0x2d0641={};_0x2d0641[_0x1f1eab]={'$like':'%'+_0x33b2be[_0xb840('0x34')][_0xb840('0x41')]+'%'};return _0x2d0641;})});}_0x53243c=_[_0xb840('0x42')]({},_0x53243c,_0x33b2be[_0xb840('0x44')]);return db[_0xb840('0xab')][_0xb840('0x45')]({'where':_0x53243c[_0xb840('0x3f')]})[_0xb840('0x11')](function(_0x2d7367){_0x406f53[_0xb840('0x45')]=_0x2d7367;if(_0x33b2be[_0xb840('0x34')]['includeAll']){_0x53243c[_0xb840('0x47')]=[{'model':db['CmContact'],'as':_0xb840('0xec'),'required':![]},{'model':db[_0xb840('0xb7')],'as':'Owner','attributes':[_0xb840('0x29'),_0xb840('0xed'),_0xb840('0xee')],'required':![]},{'model':db[_0xb840('0xef')],'as':_0xb840('0xf0'),'attributes':['id',_0xb840('0x29'),'color'],'where':_0x33b2be['query'][_0xb840('0xf1')]?{'id':_0x33b2be['query'][_0xb840('0xf1')]}:undefined,'required':_0x33b2be[_0xb840('0x34')][_0xb840('0xf1')]?!![]:![]}];}return db['ChatInteraction'][_0xb840('0x48')](_0x53243c);})[_0xb840('0x11')](function(_0x5cf689){_0x406f53['rows']=_0x5cf689;return _0x406f53;});}})[_0xb840('0x11')](respondWithFilteredResult(_0x2d65d9,_0x53243c))[_0xb840('0x1c')](handleError(_0x2d65d9,null));};function iftimePromise(_0x3c2b36,_0xf55beb){return respondWithRpcPromise('Command',_0xb840('0xf2'),{'command':_0xf55beb[_0xb840('0xf3')]?util[_0xb840('0xa4')](_0xb840('0xf4'),_0x3c2b36[_0xb840('0xf5')],_0xf55beb['timezone']):util[_0xb840('0xa4')](_0xb840('0xf6'),_0x3c2b36[_0xb840('0xf5')])},client9002)[_0xb840('0x11')](function(_0x2fa17f){var _0x2b48b0=_0x2fa17f&&_0x2fa17f[_0xb840('0xf7')](_0xb840('0xf8'))>=0x0?!![]:![];logger[_0xb840('0x12')](_0xb840('0xf9'),_0xf55beb['id'],_0x3c2b36['id'],_0x3c2b36['interval'],_0x2b48b0?'ONLINE':_0xb840('0xfa'),_0xf55beb[_0xb840('0xf3')]?_0xf55beb[_0xb840('0xf3')]:'No\x20timezone');return _0x2b48b0;})[_0xb840('0x1c')](function(_0x4b78e2){logger[_0xb840('0x18')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0xf55beb['id'],_0x3c2b36['id'],_0x3c2b36[_0xb840('0xf5')],util[_0xb840('0xfb')](_0x4b78e2,{'showHidden':![],'depth':null}),_0xf55beb[_0xb840('0xf3')]?_0xf55beb['timezone']:'No\x20timezone');return![];});}exports[_0xb840('0xf2')]=function(_0x3b3df9,_0x5999ea){var _0x530eba=0x0;var _0xe712e8=0x0;var _0x1806d8=![];var _0x185b1d;var _0x4471b7;return db[_0xb840('0x2f')]['find']({'where':{'id':_0x3b3df9[_0xb840('0x4b')]['id']},'include':[{'model':db[_0xb840('0xfc')],'as':_0xb840('0xfc'),'include':[{'model':db[_0xb840('0xfc')],'as':'Intervals','attributes':['id',_0xb840('0xf5')],'raw':!![]}]}]})[_0xb840('0x11')](handleEntityNotFound(_0x5999ea,null))[_0xb840('0x11')](function(_0x28807d){if(_0x28807d){_0x185b1d=_0x28807d;return _0x28807d[_0xb840('0xfd')]({'raw':!![]});}})['then'](function(_0x3f9713){if(_0x185b1d){if(_0x3f9713){_0x4471b7=_0x3f9713;}}return require(_0xb840('0x71'))[_0xb840('0xfe')]();})[_0xb840('0x11')](function(_0x2d6e32){if(_0x2d6e32){_0xe712e8=_0x2d6e32[_0xb840('0xff')];_0x1806d8=_0x2d6e32[_0xb840('0x72')];}})[_0xb840('0x11')](function(){return db[_0xb840('0xab')][_0xb840('0x45')]({'where':{'closed':![]}});})[_0xb840('0x11')](function(_0x2a0d23){_0x530eba=_0x2a0d23;if(_0xe712e8&&_0x2a0d23>_0xe712e8){return db['License'][_0xb840('0x5c')]({'where':{'id':0x1}})[_0xb840('0x11')](function(_0x4db982){if(_0x4db982){_0x4db982['increment'](_0xb840('0x100'));}});}})['then'](function(){if(_0x185b1d[_0xb840('0xfc')]&&_0x185b1d[_0xb840('0xfc')][_0xb840('0x101')]){var _0x1faf5e=[];for(var _0x1a4d68=0x0;_0x1a4d68<_0x185b1d['Interval']['Intervals']['length'];_0x1a4d68++){var _0x42a463=_0x185b1d['Interval'][_0xb840('0x101')][_0x1a4d68][_0xb840('0x25')]({'plain':!![]});_0x1faf5e['push'](iftimePromise(_0x42a463,_0x185b1d));}return BPromise['all'](_0x1faf5e)[_0xb840('0x11')](function(_0x2d6f42){return _[_0xb840('0x102')](_0x2d6f42);});}else{return!![];}})[_0xb840('0x11')](function(_0x3b180a){var _0x2de25e=fs[_0xb840('0x103')](path['join'](config['root'],_0xb840('0x104')),'utf8');var _0x49e050={'remote':_0x185b1d[_0xb840('0x105')],'query':querystring[_0xb840('0x17')](_[_0xb840('0x42')](_0x185b1d[_0xb840('0x25')]({'plain':!![]}),{'customerIp':_0x3b3df9[_0xb840('0x80')][_0xb840('0x9c')]||_0x3b3df9[_0xb840('0x80')][_0xb840('0x106')]||_0x3b3df9[_0xb840('0x107')]['remoteAddress']||_0x3b3df9['ip'],'referer':_0x3b3df9[_0xb840('0x80')][_0xb840('0xa1')],'openedInteractions':_0x530eba,'maxInteractions':_0xe712e8,'virtual':_0x1806d8[_0xb840('0xff')],'online':_0x3b180a,'custom':_0x1806d8}))['replace'](/'/g,'\x5c\x27')};_0x5999ea[_0xb840('0x2a')](ejs[_0xb840('0xc7')](Mustache[_0xb840('0xc7')](_0x2de25e,_0x49e050),{'proactiveActions':_0x4471b7,'alignment':_0x185b1d[_0xb840('0x108')],'verticalAlignment':_0x185b1d[_0xb840('0x109')],'div_color':_0x185b1d['color'],'text_color':_0x185b1d[_0xb840('0x10a')],'button_color':_0x185b1d[_0xb840('0x10b')],'background_color':_0x185b1d['backgroundColor']}));})[_0xb840('0x1c')](handleError(_0x5999ea,null));};exports[_0xb840('0x10c')]=function(_0x5ded82,_0x4d1ca2){var _0xcb8362=_0x5ded82[_0xb840('0x4b')]['id'];var _0x3a2e29=_0x5ded82['body'];var _0x20bc8c=0xc8;var _0x3e4f62=null;return db['sequelize'][_0xb840('0xd1')]({'isolationLevel':db[_0xb840('0xd0')]['Transaction'][_0xb840('0x10d')][_0xb840('0x10e')]},function(_0x2cd315){return db['ChatWebsite']['findOne']({'where':{'id':_0xcb8362},'transaction':_0x2cd315})[_0xb840('0x11')](function(_0x2787b6){if(_0x2787b6){return db[_0xb840('0x91')][_0xb840('0x28')]({'where':{'ChatWebsiteId':_0xcb8362},'transaction':_0x2cd315})[_0xb840('0x11')](function(){var _0x5e40bf=_[_0xb840('0x2e')](_0x3a2e29,function(_0x16b0a5){_0x16b0a5['ChatWebsiteId']=_0xcb8362;return _0x16b0a5;});return db[_0xb840('0x91')][_0xb840('0x10f')](_0x5e40bf,{'transaction':_0x2cd315});});}else{_0x20bc8c=0x194;_0x3e4f62=[];}});})[_0xb840('0x11')](function(){if(_0x20bc8c!==0x194){return db[_0xb840('0x91')][_0xb840('0x110')]({'where':{'ChatWebsiteId':_0xcb8362},'order':_0xb840('0x96')})[_0xb840('0x11')](function(_0x1cab76){_0x3e4f62=_0x1cab76;});}})[_0xb840('0x1c')](function(_0x2d314a){_0x20bc8c=0x1f4;logger[_0xb840('0x18')](_0x2d314a[_0xb840('0x111')]);if(_0x2d314a['name']){delete _0x2d314a[_0xb840('0x29')];}_0x3e4f62=_0x2d314a;})['finally'](function(){if(_0x3e4f62===null){_0x4d1ca2[_0xb840('0x1d')](_0x20bc8c);}else{if(_0x20bc8c===0x1f4){_0x4d1ca2[_0xb840('0x1e')](_0x20bc8c)[_0xb840('0x2a')](_0x3e4f62);}else{_0x4d1ca2[_0xb840('0x1e')](_0x20bc8c)[_0xb840('0x20')](_0x3e4f62);}}});};exports['getApplications']=function(_0x52711b,_0x2ac432){var _0x42cd8b={};var _0x284794={};var _0x1f1e9f;var _0x3d7134;return db['ChatWebsite'][_0xb840('0x5c')]({'where':{'id':_0x52711b['params']['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x2ac432,null))['then'](function(_0x5587f0){if(_0x5587f0){_0x1f1e9f=_0x5587f0;_0x284794[_0xb840('0x33')]=_['keys'](db['ChatApplication']['rawAttributes']);_0x284794[_0xb840('0x34')]=_[_0xb840('0x35')](_0x52711b[_0xb840('0x34')]);_0x284794[_0xb840('0x36')]=_['intersection'](_0x284794[_0xb840('0x33')],_0x284794['query']);_0x42cd8b[_0xb840('0x38')]=_[_0xb840('0x37')](_0x284794['model'],qs['fields'](_0x52711b[_0xb840('0x34')][_0xb840('0x39')]));_0x42cd8b['attributes']=_0x42cd8b[_0xb840('0x38')]['length']?_0x42cd8b[_0xb840('0x38')]:_0x284794['model'];_0x42cd8b[_0xb840('0x3d')]=qs['sort'](_0x52711b[_0xb840('0x34')][_0xb840('0x3e')]);_0x42cd8b[_0xb840('0x3f')]=qs['filters'](_[_0xb840('0x40')](_0x52711b[_0xb840('0x34')],_0x284794['filters']));if(_0x52711b[_0xb840('0x34')][_0xb840('0x41')]){_0x42cd8b[_0xb840('0x3f')]=_[_0xb840('0x42')](_0x42cd8b['where'],{'$or':_['map'](_0x42cd8b[_0xb840('0x38')],function(_0x54d059){var _0xc6ac7={};_0xc6ac7[_0x54d059]={'$like':'%'+_0x52711b[_0xb840('0x34')]['filter']+'%'};return _0xc6ac7;})});}_0x42cd8b=_[_0xb840('0x42')]({},_0x42cd8b,_0x52711b[_0xb840('0x44')]);return _0x1f1e9f[_0xb840('0x112')](_0x42cd8b);}})['then'](function(_0x5954a4){if(_0x5954a4){_0x3d7134=_0x5954a4[_0xb840('0x4d')];if(!_0x52711b[_0xb840('0x34')][_0xb840('0x3a')]('nolimit')){_0x42cd8b[_0xb840('0x22')]=qs[_0xb840('0x22')](_0x52711b['query'][_0xb840('0x22')]);_0x42cd8b['offset']=qs['offset'](_0x52711b[_0xb840('0x34')][_0xb840('0x3c')]);}return _0x1f1e9f[_0xb840('0x112')](_0x42cd8b);}})['then'](function(_0x5bba77){if(_0x5bba77){return _0x5bba77?{'count':_0x3d7134,'rows':_0x5bba77}:null;}})['then'](respondWithResult(_0x2ac432,null))[_0xb840('0x1c')](handleError(_0x2ac432,null));};exports[_0xb840('0x113')]=function(_0x45a7a3,_0x292eb4){return db[_0xb840('0x114')]['find']({'where':{'id':_0x45a7a3[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x292eb4,null))['then'](function(_0x5e7d18){if(_0x5e7d18){return _0x5e7d18[_0xb840('0x113')](_0x45a7a3[_0xb840('0x50')][_0xb840('0x5f')],_['omit'](_0x45a7a3[_0xb840('0x50')],[_0xb840('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x292eb4,null))[_0xb840('0x1c')](handleError(_0x292eb4,null));};exports[_0xb840('0xfd')]=function(_0x5626a6,_0x1ced8f){var _0x3e592a={};var _0x2f75a3={};var _0x31decf;var _0x859ef9;return db[_0xb840('0x2f')][_0xb840('0x5c')]({'where':{'id':_0x5626a6[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x1ced8f,null))[_0xb840('0x11')](function(_0xc1d58f){if(_0xc1d58f){_0x31decf=_0xc1d58f;_0x2f75a3['model']=_['keys'](db['ChatProactiveAction']['rawAttributes']);_0x2f75a3[_0xb840('0x34')]=_['keys'](_0x5626a6['query']);_0x2f75a3[_0xb840('0x36')]=_[_0xb840('0x37')](_0x2f75a3[_0xb840('0x33')],_0x2f75a3[_0xb840('0x34')]);_0x3e592a[_0xb840('0x38')]=_[_0xb840('0x37')](_0x2f75a3['model'],qs[_0xb840('0x39')](_0x5626a6[_0xb840('0x34')][_0xb840('0x39')]));_0x3e592a[_0xb840('0x38')]=_0x3e592a[_0xb840('0x38')][_0xb840('0x4d')]?_0x3e592a[_0xb840('0x38')]:_0x2f75a3[_0xb840('0x33')];_0x3e592a[_0xb840('0x3d')]=qs[_0xb840('0x3e')](_0x5626a6['query']['sort']);_0x3e592a[_0xb840('0x3f')]=qs[_0xb840('0x36')](_[_0xb840('0x40')](_0x5626a6[_0xb840('0x34')],_0x2f75a3[_0xb840('0x36')]));if(_0x5626a6['query'][_0xb840('0x41')]){_0x3e592a[_0xb840('0x3f')]=_[_0xb840('0x42')](_0x3e592a[_0xb840('0x3f')],{'$or':_[_0xb840('0x2e')](_0x3e592a['attributes'],function(_0x5066b3){var _0x1e3cf6={};_0x1e3cf6[_0x5066b3]={'$like':'%'+_0x5626a6[_0xb840('0x34')][_0xb840('0x41')]+'%'};return _0x1e3cf6;})});}_0x3e592a=_['merge']({},_0x3e592a,_0x5626a6[_0xb840('0x44')]);return _0x31decf[_0xb840('0xfd')](_0x3e592a);}})[_0xb840('0x11')](function(_0x58861a){if(_0x58861a){_0x859ef9=_0x58861a['length'];if(!_0x5626a6['query'][_0xb840('0x3a')](_0xb840('0x3b'))){_0x3e592a[_0xb840('0x22')]=qs[_0xb840('0x22')](_0x5626a6['query']['limit']);_0x3e592a[_0xb840('0x3c')]=qs[_0xb840('0x3c')](_0x5626a6[_0xb840('0x34')]['offset']);}return _0x31decf[_0xb840('0xfd')](_0x3e592a);}})[_0xb840('0x11')](function(_0x451e03){if(_0x451e03){return _0x451e03?{'count':_0x859ef9,'rows':_0x451e03}:null;}})['then'](respondWithResult(_0x1ced8f,null))[_0xb840('0x1c')](handleError(_0x1ced8f,null));};exports[_0xb840('0x115')]=function(_0x59512d,_0x559ed8){var _0x5b559b=_0x59512d['query']['online']===_0xb840('0x116')?_0xb840('0x117'):_0xb840('0x118');return db[_0xb840('0x2f')][_0xb840('0x4e')]({'attributes':['id',_0x5b559b],'where':{'id':_0x59512d[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x559ed8,null))['then'](function(_0x4eb904){if(_0x4eb904){var _0x1df874=_0x4eb904[_0x5b559b];var _0x1363d2=_0x1df874&&_0x1df874[_0xb840('0x119')]?_0x1df874['items']:[];_0x559ed8[_0xb840('0x2a')]({'fromKey':_[_0xb840('0x77')](_0x1df874[_0xb840('0x11a')])?undefined:_0x1df874['fromKey'],'count':_0x1363d2[_0xb840('0x4d')],'rows':_0x1363d2});}})[_0xb840('0x1c')](handleError(_0x559ed8,null));};exports['getOfflineMessages']=function(_0x182cb3,_0x1c5a5b){var _0x1106e7={'raw':![],'where':{}};var _0xf79c2b={};var _0x5b5022={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb840('0x5c')]({'where':{'id':_0x182cb3[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x1c5a5b,null))[_0xb840('0x11')](function(_0x5236ad){if(_0x5236ad){_0xf79c2b['model']=_[_0xb840('0x35')](db[_0xb840('0x11b')][_0xb840('0x4c')]);_0xf79c2b[_0xb840('0x34')]=_[_0xb840('0x35')](_0x182cb3[_0xb840('0x34')]);_0xf79c2b['filters']=_[_0xb840('0x37')](_0xf79c2b[_0xb840('0x33')],_0xf79c2b[_0xb840('0x34')]);_0x1106e7[_0xb840('0x38')]=_[_0xb840('0x37')](_0xf79c2b[_0xb840('0x33')],qs[_0xb840('0x39')](_0x182cb3[_0xb840('0x34')]['fields']));_0x1106e7[_0xb840('0x38')]=_0x1106e7[_0xb840('0x38')][_0xb840('0x4d')]?_0x1106e7[_0xb840('0x38')]:_0xf79c2b[_0xb840('0x33')];if(!_0x182cb3['query'][_0xb840('0x3a')](_0xb840('0x3b'))){_0x1106e7['limit']=qs['limit'](_0x182cb3[_0xb840('0x34')][_0xb840('0x22')]);_0x1106e7[_0xb840('0x3c')]=qs[_0xb840('0x3c')](_0x182cb3['query'][_0xb840('0x3c')]);}_0x1106e7[_0xb840('0x3d')]=qs['sort'](_0x182cb3['query'][_0xb840('0x3e')]);_0x1106e7['where']=qs['filters'](_[_0xb840('0x40')](_0x182cb3[_0xb840('0x34')],_0xf79c2b[_0xb840('0x36')]));_0x1106e7[_0xb840('0x3f')][_0xb840('0x5d')]=_0x5236ad['id'];if(_0x182cb3[_0xb840('0x34')][_0xb840('0x41')]){_0x1106e7[_0xb840('0x3f')]=_[_0xb840('0x42')](_0x1106e7['where'],{'$or':_[_0xb840('0x2e')](_0x1106e7[_0xb840('0x38')],function(_0x49c5cd){var _0x349ac6={};_0x349ac6[_0x49c5cd]={'$like':'%'+_0x182cb3['query'][_0xb840('0x41')]+'%'};return _0x349ac6;})});}_0x1106e7=_[_0xb840('0x42')]({},_0x1106e7,_0x182cb3[_0xb840('0x44')]);return db[_0xb840('0x11b')][_0xb840('0x45')]({'where':_0x1106e7['where']})['then'](function(_0x14a279){_0x5b5022[_0xb840('0x45')]=_0x14a279;if(_0x182cb3[_0xb840('0x34')][_0xb840('0x46')]){_0x1106e7[_0xb840('0x47')]=[{'all':!![]}];}else{_0x1106e7['include']=[{'model':db['CmContact'],'as':_0xb840('0xec'),'required':![]},{'model':db[_0xb840('0xd2')],'as':_0xb840('0x11c'),'required':![]}];}return db[_0xb840('0x11b')][_0xb840('0x48')](_0x1106e7);})[_0xb840('0x11')](function(_0x4e4759){_0x5b5022[_0xb840('0x49')]=_0x4e4759;return _0x5b5022;});}})['then'](respondWithFilteredResult(_0x1c5a5b,_0x1106e7))[_0xb840('0x1c')](handleError(_0x1c5a5b,null));};exports[_0xb840('0x11d')]=function(_0x521b7d,_0x2da2a9){return db['ChatWebsite'][_0xb840('0x4e')]({'where':{'id':_0x521b7d[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x2da2a9,null))[_0xb840('0x11')](function(_0x4f40d9){if(_0x4f40d9){return _0x4f40d9[_0xb840('0x11d')](_0x521b7d['body']['ids'],_[_0xb840('0xea')](_0x521b7d[_0xb840('0x50')],[_0xb840('0x5f'),'id'])||{})['spread'](function(_0x465e7a){for(var _0x50fb23=0x0;_0x50fb23<_0x521b7d[_0xb840('0x50')][_0xb840('0x5f')]['length'];_0x50fb23+=0x1){socket[_0xb840('0x11e')](_0xb840('0x11f'),{'UserId':Number(_0x521b7d[_0xb840('0x50')][_0xb840('0x5f')][_0x50fb23]),'ChatWebsiteId':Number(_0x521b7d[_0xb840('0x4b')]['id'])});}return _0x465e7a;});}})[_0xb840('0x11')](respondWithResult(_0x2da2a9,null))[_0xb840('0x1c')](handleError(_0x2da2a9,null));};exports[_0xb840('0x120')]=function(_0x25550f,_0xa6bbed){return db[_0xb840('0x2f')]['find']({'where':{'id':_0x25550f[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0xa6bbed,null))[_0xb840('0x11')](function(_0x3355ed){if(_0x3355ed){return _0x3355ed['removeAgents'](_0x25550f[_0xb840('0x34')][_0xb840('0x5f')])['then'](function(){if(_[_0xb840('0x121')](_0x25550f[_0xb840('0x34')][_0xb840('0x5f')])){for(var _0x18452c=0x0;_0x18452c<_0x25550f[_0xb840('0x34')]['ids'][_0xb840('0x4d')];_0x18452c+=0x1){socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x25550f[_0xb840('0x34')][_0xb840('0x5f')][_0x18452c]),'ChatWebsiteId':Number(_0x25550f['params']['id'])});}}else{socket[_0xb840('0x11e')](_0xb840('0x122'),{'UserId':Number(_0x25550f[_0xb840('0x34')]['ids']),'ChatWebsiteId':Number(_0x25550f['params']['id'])});}});}})[_0xb840('0x11')](respondWithStatusCode(_0xa6bbed,null))[_0xb840('0x1c')](handleError(_0xa6bbed,null));};exports['getAgents']=function(_0x22eeeb,_0x30420d){var _0x5aa8be={};var _0xa9dc85={};var _0x338181;var _0x1649fc;return db[_0xb840('0x2f')][_0xb840('0x5c')]({'where':{'id':_0x22eeeb[_0xb840('0x4b')]['id']}})[_0xb840('0x11')](handleEntityNotFound(_0x30420d,null))[_0xb840('0x11')](function(_0x37d454){if(_0x37d454){_0x338181=_0x37d454;_0xa9dc85[_0xb840('0x33')]=_[_0xb840('0x35')](db[_0xb840('0xb7')]['rawAttributes']);_0xa9dc85[_0xb840('0x34')]=_['keys'](_0x22eeeb[_0xb840('0x34')]);_0xa9dc85[_0xb840('0x36')]=_['intersection'](_0xa9dc85[_0xb840('0x33')],_0xa9dc85[_0xb840('0x34')]);_0x5aa8be[_0xb840('0x38')]=_[_0xb840('0x37')](_0xa9dc85['model'],qs[_0xb840('0x39')](_0x22eeeb[_0xb840('0x34')][_0xb840('0x39')]));_0x5aa8be[_0xb840('0x38')]=_0x5aa8be['attributes'][_0xb840('0x4d')]?_0x5aa8be['attributes']:_0xa9dc85[_0xb840('0x33')];_0x5aa8be['order']=qs[_0xb840('0x3e')](_0x22eeeb['query']['sort']);_0x5aa8be[_0xb840('0x3f')]=qs[_0xb840('0x36')](_[_0xb840('0x40')](_0x22eeeb[_0xb840('0x34')],_0xa9dc85[_0xb840('0x36')]));if(_0x22eeeb[_0xb840('0x34')]['filter']){_0x5aa8be[_0xb840('0x3f')]=_[_0xb840('0x42')](_0x5aa8be[_0xb840('0x3f')],{'$or':_[_0xb840('0x2e')](_0x5aa8be[_0xb840('0x38')],function(_0x262480){var _0x449da5={};_0x449da5[_0x262480]={'$like':'%'+_0x22eeeb[_0xb840('0x34')][_0xb840('0x41')]+'%'};return _0x449da5;})});}_0x5aa8be=_[_0xb840('0x42')]({},_0x5aa8be,_0x22eeeb[_0xb840('0x44')]);return _0x338181[_0xb840('0x123')](_0x5aa8be);}})[_0xb840('0x11')](function(_0x46d7bf){if(_0x46d7bf){_0x1649fc=_0x46d7bf['length'];if(!_0x22eeeb[_0xb840('0x34')][_0xb840('0x3a')](_0xb840('0x3b'))){_0x5aa8be[_0xb840('0x22')]=qs[_0xb840('0x22')](_0x22eeeb[_0xb840('0x34')]['limit']);_0x5aa8be[_0xb840('0x3c')]=qs[_0xb840('0x3c')](_0x22eeeb[_0xb840('0x34')][_0xb840('0x3c')]);}return _0x338181[_0xb840('0x123')](_0x5aa8be);}})['then'](function(_0x5cad18){if(_0x5cad18){return _0x5cad18?{'count':_0x1649fc,'rows':_0x5cad18}:null;}})[_0xb840('0x11')](respondWithResult(_0x30420d,null))[_0xb840('0x1c')](handleError(_0x30420d,null));};
\ No newline at end of file
index d50f0d3..34d4663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x032e=['emit','hasOwnProperty','hook','exports','events','ChatWebsite','setMaxListeners','remove'];(function(_0x10e335,_0x4cc68f){var _0x5c94ba=function(_0x3d3ae6){while(--_0x3d3ae6){_0x10e335['push'](_0x10e335['shift']());}};_0x5c94ba(++_0x4cc68f);}(_0x032e,0x124));var _0xe032=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x032e[_0x30ae5e];return _0x1f2e93;};'use strict';var EventEmitter=require(_0xe032('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xe032('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xe032('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xe032('0x3')};function emitEvent(_0x2ce001){return function(_0x2f44f6,_0x1983cc,_0x306f3d){ChatWebsiteEvents[_0xe032('0x4')](_0x2ce001+':'+_0x2f44f6['id'],_0x2f44f6);ChatWebsiteEvents[_0xe032('0x4')](_0x2ce001,_0x2f44f6);_0x306f3d(null);};}for(var e in events){if(events[_0xe032('0x5')](e)){var event=events[e];ChatWebsite[_0xe032('0x6')](e,emitEvent(event));}}module[_0xe032('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x7aaf=['exports','events','ChatWebsite','setMaxListeners','remove','emit','hasOwnProperty'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x7aaf,0x1eb));var _0xf7aa=function(_0x31dec4,_0x349c0f){_0x31dec4=_0x31dec4-0x0;var _0x214393=_0x7aaf[_0x31dec4];return _0x214393;};'use strict';var EventEmitter=require(_0xf7aa('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xf7aa('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xf7aa('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xf7aa('0x3')};function emitEvent(_0x573e43){return function(_0x198d5c,_0x5ee53a,_0x19cbb7){ChatWebsiteEvents[_0xf7aa('0x4')](_0x573e43+':'+_0x198d5c['id'],_0x198d5c);ChatWebsiteEvents[_0xf7aa('0x4')](_0x573e43,_0x198d5c);_0x19cbb7(null);};}for(var e in events){if(events[_0xf7aa('0x5')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0xf7aa('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
index a5a2a29..3f1aca8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa136=['chat_websites','util','../../config/logger','moment','bluebird','request-promise','rimraf','./chatWebsite.attributes','exports','define'];(function(_0x3cab4b,_0x287d42){var _0x3d5ab2=function(_0x20e4b8){while(--_0x20e4b8){_0x3cab4b['push'](_0x3cab4b['shift']());}};_0x3d5ab2(++_0x287d42);}(_0xa136,0x12d));var _0x6a13=function(_0x5854a6,_0x4111dd){_0x5854a6=_0x5854a6-0x0;var _0x32c7ee=_0xa136[_0x5854a6];return _0x32c7ee;};'use strict';var _=require('lodash');var util=require(_0x6a13('0x0'));var logger=require(_0x6a13('0x1'))('api');var moment=require(_0x6a13('0x2'));var BPromise=require(_0x6a13('0x3'));var rp=require(_0x6a13('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6a13('0x5'));var config=require('../../config/environment');var attributes=require(_0x6a13('0x6'));module[_0x6a13('0x7')]=function(_0x3de00e,_0x107c14){return _0x3de00e[_0x6a13('0x8')]('ChatWebsite',attributes,{'tableName':_0x6a13('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd181=['rimraf','./chatWebsite.attributes','exports','ChatWebsite','chat_websites','../../config/logger','api','bluebird','request-promise'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xd181,0xd4));var _0x1d18=function(_0x3fe766,_0x2ab865){_0x3fe766=_0x3fe766-0x0;var _0x36705f=_0xd181[_0x3fe766];return _0x36705f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1d18('0x0'))(_0x1d18('0x1'));var moment=require('moment');var BPromise=require(_0x1d18('0x2'));var rp=require(_0x1d18('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1d18('0x4'));var config=require('../../config/environment');var attributes=require(_0x1d18('0x5'));module[_0x1d18('0x6')]=function(_0x1d90b7,_0x3fcce9){return _0x1d90b7['define'](_0x1d18('0x7'),attributes,{'tableName':_0x1d18('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 861e4cd..c403ce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8549=['ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','request','then'];(function(_0x2770c7,_0xe561d7){var _0x4e91e2=function(_0x25e796){while(--_0x25e796){_0x2770c7['push'](_0x2770c7['shift']());}};_0x4e91e2(++_0xe561d7);}(_0x8549,0x1a9));var _0x9854=function(_0x24af1d,_0x45acd2){_0x24af1d=_0x24af1d-0x0;var _0x28b1c5=_0x8549[_0x24af1d];return _0x28b1c5;};'use strict';var _=require(_0x9854('0x0'));var util=require(_0x9854('0x1'));var moment=require('moment');var BPromise=require(_0x9854('0x2'));var rs=require(_0x9854('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9854('0x4'))['db'];var utils=require(_0x9854('0x5'));var logger=require(_0x9854('0x6'))(_0x9854('0x7'));var config=require(_0x9854('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9854('0x9')]({'port':0x232a});config[_0x9854('0xa')]=_['defaults'](config[_0x9854('0xa')],{'host':_0x9854('0xb'),'port':0x18eb});var socket=require(_0x9854('0xc'))(new Redis(config[_0x9854('0xa')]));require(_0x9854('0xd'))[_0x9854('0xe')](socket);function respondWithRpcPromise(_0x89ac42,_0x36af31,_0x365234){return new BPromise(function(_0x40527c,_0x5dd20a){return client[_0x9854('0xf')](_0x89ac42,_0x365234)[_0x9854('0x10')](function(_0x2cc0d3){logger['info'](_0x9854('0x11'),_0x36af31,_0x9854('0x12'));logger['debug'](_0x9854('0x13'),_0x36af31,_0x9854('0x12'),JSON[_0x9854('0x14')](_0x2cc0d3));if(_0x2cc0d3[_0x9854('0x15')]){if(_0x2cc0d3[_0x9854('0x15')][_0x9854('0x16')]===0x1f4){logger[_0x9854('0x15')](_0x9854('0x11'),_0x36af31,_0x2cc0d3['error'][_0x9854('0x17')]);return _0x5dd20a(_0x2cc0d3[_0x9854('0x15')][_0x9854('0x17')]);}logger[_0x9854('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x36af31,_0x2cc0d3['error'][_0x9854('0x17')]);return _0x40527c(_0x2cc0d3[_0x9854('0x15')][_0x9854('0x17')]);}else{logger[_0x9854('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x36af31,_0x9854('0x12'));_0x40527c(_0x2cc0d3[_0x9854('0x19')][_0x9854('0x17')]);}})['catch'](function(_0x2d1f9c){logger['error'](_0x9854('0x11'),_0x36af31,_0x2d1f9c);_0x5dd20a(_0x2d1f9c);});});}
\ No newline at end of file
+var _0xe8b8=['../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','request','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x464ea4,_0x239588){var _0x567d6e=function(_0x14b082){while(--_0x14b082){_0x464ea4['push'](_0x464ea4['shift']());}};_0x567d6e(++_0x239588);}(_0xe8b8,0x7f));var _0x8e8b=function(_0x3464fd,_0x1b211a){_0x3464fd=_0x3464fd-0x0;var _0x39ca80=_0xe8b8[_0x3464fd];return _0x39ca80;};'use strict';var _=require(_0x8e8b('0x0'));var util=require('util');var moment=require(_0x8e8b('0x1'));var BPromise=require(_0x8e8b('0x2'));var rs=require(_0x8e8b('0x3'));var fs=require('fs');var Redis=require(_0x8e8b('0x4'));var db=require(_0x8e8b('0x5'))['db'];var utils=require(_0x8e8b('0x6'));var logger=require('../../config/logger')(_0x8e8b('0x7'));var config=require(_0x8e8b('0x8'));var jayson=require(_0x8e8b('0x9'));var client=jayson[_0x8e8b('0xa')]['http']({'port':0x232a});config[_0x8e8b('0xb')]=_[_0x8e8b('0xc')](config['redis'],{'host':_0x8e8b('0xd'),'port':0x18eb});var socket=require(_0x8e8b('0xe'))(new Redis(config[_0x8e8b('0xb')]));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x1479da,_0x5b7839,_0x5b6030){return new BPromise(function(_0x24a554,_0x414143){return client[_0x8e8b('0xf')](_0x1479da,_0x5b6030)['then'](function(_0x3e7397){logger[_0x8e8b('0x10')]('ChatWebsite,\x20%s,\x20%s',_0x5b7839,_0x8e8b('0x11'));logger[_0x8e8b('0x12')](_0x8e8b('0x13'),_0x5b7839,_0x8e8b('0x11'),JSON[_0x8e8b('0x14')](_0x3e7397));if(_0x3e7397[_0x8e8b('0x15')]){if(_0x3e7397[_0x8e8b('0x15')][_0x8e8b('0x16')]===0x1f4){logger[_0x8e8b('0x15')](_0x8e8b('0x17'),_0x5b7839,_0x3e7397[_0x8e8b('0x15')][_0x8e8b('0x18')]);return _0x414143(_0x3e7397['error'][_0x8e8b('0x18')]);}logger[_0x8e8b('0x15')](_0x8e8b('0x17'),_0x5b7839,_0x3e7397[_0x8e8b('0x15')][_0x8e8b('0x18')]);return _0x24a554(_0x3e7397[_0x8e8b('0x15')][_0x8e8b('0x18')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x5b7839,'request\x20sent');_0x24a554(_0x3e7397[_0x8e8b('0x19')][_0x8e8b('0x18')]);}})[_0x8e8b('0x1a')](function(_0x506b51){logger['error'](_0x8e8b('0x17'),_0x5b7839,_0x506b51);_0x414143(_0x506b51);});});}
\ No newline at end of file
index bd94f21..2541ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa527=['length','chatWebsite:','remove','update','emit','removeListener','register'];(function(_0x1d319e,_0x5bbd7e){var _0x26cd43=function(_0x50dd2e){while(--_0x50dd2e){_0x1d319e['push'](_0x1d319e['shift']());}};_0x26cd43(++_0x5bbd7e);}(_0xa527,0x95));var _0x7a52=function(_0x40e6bf,_0xc86f){_0x40e6bf=_0x40e6bf-0x0;var _0x36164c=_0xa527[_0x40e6bf];return _0x36164c;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=['save',_0x7a52('0x0'),_0x7a52('0x1')];function createListener(_0x2a2c81,_0x33565f){return function(_0x58ace8){_0x33565f[_0x7a52('0x2')](_0x2a2c81,_0x58ace8);};}function removeListener(_0x1494b3,_0x251d06){return function(){ChatWebsiteEvents[_0x7a52('0x3')](_0x1494b3,_0x251d06);};}exports[_0x7a52('0x4')]=function(_0x496b7c){for(var _0x18dc62=0x0,_0x5a6f1c=events[_0x7a52('0x5')];_0x18dc62<_0x5a6f1c;_0x18dc62++){var _0x389a91=events[_0x18dc62];var _0x542416=createListener(_0x7a52('0x6')+_0x389a91,_0x496b7c);ChatWebsiteEvents['on'](_0x389a91,_0x542416);}};
\ No newline at end of file
+var _0x5fd8=['removeListener','register','./chatWebsite.events','save','update','emit'];(function(_0x41b133,_0x114320){var _0x844201=function(_0x328f1a){while(--_0x328f1a){_0x41b133['push'](_0x41b133['shift']());}};_0x844201(++_0x114320);}(_0x5fd8,0x12e));var _0x85fd=function(_0x54f625,_0x30f7c3){_0x54f625=_0x54f625-0x0;var _0xc89586=_0x5fd8[_0x54f625];return _0xc89586;};'use strict';var ChatWebsiteEvents=require(_0x85fd('0x0'));var events=[_0x85fd('0x1'),'remove',_0x85fd('0x2')];function createListener(_0xebd942,_0x2fa79e){return function(_0x1cdb75){_0x2fa79e[_0x85fd('0x3')](_0xebd942,_0x1cdb75);};}function removeListener(_0x272dd5,_0x5029c3){return function(){ChatWebsiteEvents[_0x85fd('0x4')](_0x272dd5,_0x5029c3);};}exports[_0x85fd('0x5')]=function(_0x4ccf6a){for(var _0x59ea1b=0x0,_0xde9c49=events['length'];_0x59ea1b<_0xde9c49;_0x59ea1b++){var _0x167705=events[_0x59ea1b];var _0x10cbc5=createListener('chatWebsite:'+_0x167705,_0x4ccf6a);ChatWebsiteEvents['on'](_0x167705,_0x10cbc5);}};
\ No newline at end of file
index 8035904..563aea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1420=['addProactiveActions','addAgents','put','/:id','update','delete','destroy','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getLogo','getAvatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','post','create','addAnswer','diskStorage','root','server/files/images/logos/','now','/:id/logo','single','file','addLogo','join','server/files/images/avatars/','originalname','/:id/avatar','format','%s-%s','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','extname','any','offline','addInteraction','addApplications'];(function(_0x1bb312,_0x41bfb4){var _0x3befa9=function(_0x445b7a){while(--_0x445b7a){_0x1bb312['push'](_0x1bb312['shift']());}};_0x3befa9(++_0x41bfb4);}(_0x1420,0x181));var _0x0142=function(_0x4effe1,_0x3cc6a6){_0x4effe1=_0x4effe1-0x0;var _0x476368=_0x1420[_0x4effe1];return _0x476368;};'use strict';var multer=require('multer');var util=require(_0x0142('0x0'));var path=require(_0x0142('0x1'));var timeout=require(_0x0142('0x2'));var express=require(_0x0142('0x3'));var router=express[_0x0142('0x4')]();var fs_extra=require(_0x0142('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0142('0x6'));var config=require(_0x0142('0x7'));var controller=require(_0x0142('0x8'));router[_0x0142('0x9')]('/',auth[_0x0142('0xa')](),controller[_0x0142('0xb')]);router['get'](_0x0142('0xc'),auth[_0x0142('0xa')](),controller[_0x0142('0xd')]);router[_0x0142('0x9')]('/:id',auth[_0x0142('0xa')](),controller[_0x0142('0xe')]);router[_0x0142('0x9')](_0x0142('0xf'),auth[_0x0142('0xa')](),controller[_0x0142('0x10')]);router[_0x0142('0x9')](_0x0142('0x11'),auth[_0x0142('0xa')](),controller['getAnswers']);router[_0x0142('0x9')]('/:id/logo',controller[_0x0142('0x12')]);router['get']('/:id/avatar',controller[_0x0142('0x13')]);router[_0x0142('0x9')](_0x0142('0x14'),controller['getCustomerAvatar']);router[_0x0142('0x9')](_0x0142('0x15'),controller[_0x0142('0x16')]);router['get']('/:id/interactions',auth[_0x0142('0xa')](),controller[_0x0142('0x17')]);router[_0x0142('0x9')](_0x0142('0x18'),controller[_0x0142('0x19')]);router[_0x0142('0x9')](_0x0142('0x1a'),auth[_0x0142('0xa')](),controller[_0x0142('0x1b')]);router[_0x0142('0x9')](_0x0142('0x1c'),auth['isAuthenticated'](),controller[_0x0142('0x1d')]);router[_0x0142('0x9')](_0x0142('0x1e'),controller[_0x0142('0x1f')]);router[_0x0142('0x9')](_0x0142('0x20'),auth[_0x0142('0xa')](),controller['getOfflineMessages']);router[_0x0142('0x9')](_0x0142('0x21'),auth[_0x0142('0xa')](),controller[_0x0142('0x22')]);router[_0x0142('0x23')]('/',auth[_0x0142('0xa')](),controller[_0x0142('0x24')]);router['post'](_0x0142('0xf'),auth[_0x0142('0xa')](),controller['addDisposition']);router['post'](_0x0142('0x11'),auth[_0x0142('0xa')](),controller[_0x0142('0x25')]);var upload=multer({'storage':multer[_0x0142('0x26')]({'destination':function(_0xb5071d,_0x433ba3,_0x3b4639){_0x3b4639(null,path['join'](config[_0x0142('0x27')],_0x0142('0x28')));},'filename':function(_0x5a0876,_0x4f83f9,_0x5e3b54){_0x5e3b54(null,util['format']('%s-%s',Date[_0x0142('0x29')](),_0x4f83f9['originalname']));}})});router[_0x0142('0x23')](_0x0142('0x2a'),upload[_0x0142('0x2b')](_0x0142('0x2c')),controller[_0x0142('0x2d')]);var upload=multer({'storage':multer[_0x0142('0x26')]({'destination':function(_0x591104,_0x3e68c5,_0x2a2f3c){_0x2a2f3c(null,path[_0x0142('0x2e')](config[_0x0142('0x27')],_0x0142('0x2f')));},'filename':function(_0xd7bfe2,_0x380563,_0x40ce24){_0x40ce24(null,util['format']('%s-%s',Date['now'](),_0x380563[_0x0142('0x30')]));}})});router[_0x0142('0x23')](_0x0142('0x31'),upload[_0x0142('0x2b')](_0x0142('0x2c')),controller['addAvatar']);var upload=multer({'storage':multer[_0x0142('0x26')]({'destination':function(_0x79e28a,_0x38175b,_0x373b6c){_0x373b6c(null,path[_0x0142('0x2e')](config['root'],_0x0142('0x2f')));},'filename':function(_0x4ef16c,_0x289499,_0x3d14fb){_0x3d14fb(null,util[_0x0142('0x32')](_0x0142('0x33'),Date['now'](),_0x289499['originalname']));}})});router['post']('/:id/customer_avatar',upload['single'](_0x0142('0x2c')),controller[_0x0142('0x34')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x67590b,_0x3aee4b,_0x1d1364){_0x1d1364(null,path[_0x0142('0x2e')](config['root'],_0x0142('0x2f')));},'filename':function(_0x1af27b,_0x56eb59,_0x4c0be4){_0x4c0be4(null,util[_0x0142('0x32')]('%s-%s',Date[_0x0142('0x29')](),_0x56eb59[_0x0142('0x30')]));}})});router[_0x0142('0x23')](_0x0142('0x15'),upload[_0x0142('0x2b')](_0x0142('0x2c')),controller[_0x0142('0x35')]);router[_0x0142('0x23')](_0x0142('0x36'),controller[_0x0142('0x37')]);const offlineUploadMulter=multer({'storage':multer[_0x0142('0x26')]({'destination':function(_0x12b976,_0x31a0cc,_0xe79986){const _0x46c675=path[_0x0142('0x2e')](config[_0x0142('0x27')],_0x0142('0x38'),_0x0142('0x39'),_0x0142('0x3a'));fs_extra[_0x0142('0x3b')](_0x46c675,function(){_0xe79986(null,_0x46c675);});},'filename':function(_0x2cbdae,_0x228c8d,_0x3e4ab5){const _0x5704f4=_0x228c8d['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x378a96=path[_0x0142('0x3c')](_0x5704f4);const _0x1f94a6=Date[_0x0142('0x29')]()+'-'+_0x5704f4['replace'](_0x378a96,'')+_0x378a96;_0x3e4ab5(null,_0x1f94a6);}})});router[_0x0142('0x23')]('/:id/offline',offlineUploadMulter[_0x0142('0x3d')](),controller[_0x0142('0x3e')]);router['post']('/:id/interactions',auth[_0x0142('0xa')](),controller[_0x0142('0x3f')]);router['post'](_0x0142('0x1a'),auth[_0x0142('0xa')](),controller[_0x0142('0x40')]);router[_0x0142('0x23')](_0x0142('0x1c'),auth[_0x0142('0xa')](),controller[_0x0142('0x41')]);router[_0x0142('0x23')](_0x0142('0x21'),auth[_0x0142('0xa')](),controller[_0x0142('0x42')]);router[_0x0142('0x43')](_0x0142('0x44'),auth[_0x0142('0xa')](),controller[_0x0142('0x45')]);router[_0x0142('0x46')]('/:id',auth[_0x0142('0xa')](),controller[_0x0142('0x47')]);router[_0x0142('0x46')](_0x0142('0xf'),auth[_0x0142('0xa')](),controller['removeDispositions']);router[_0x0142('0x46')](_0x0142('0x11'),auth[_0x0142('0xa')](),controller[_0x0142('0x48')]);router['delete'](_0x0142('0x21'),auth[_0x0142('0xa')](),controller[_0x0142('0x49')]);module[_0x0142('0x4a')]=router;
\ No newline at end of file
+var _0x22eb=['create','/:id/dispositions','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','server/files/images/avatars/','addAvatar','/:id/customer_avatar','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','offline-chat','ensureDir','replace','extname','any','addInteraction','addApplications','/:id/proactive_actions','addProactiveActions','addAgents','put','delete','destroy','removeDispositions','removeAgents','multer','util','connect-timeout','../../components/auth/service','../../components/interaction/service','get','/describe','isAuthenticated','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','getProactiveActions','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post'];(function(_0x3988b9,_0x513eaa){var _0x5b7e50=function(_0x1d5268){while(--_0x1d5268){_0x3988b9['push'](_0x3988b9['shift']());}};_0x5b7e50(++_0x513eaa);}(_0x22eb,0x142));var _0xb22e=function(_0x5f25f4,_0x12b1a9){_0x5f25f4=_0x5f25f4-0x0;var _0x12afb0=_0x22eb[_0x5f25f4];return _0x12afb0;};'use strict';var multer=require(_0xb22e('0x0'));var util=require(_0xb22e('0x1'));var path=require('path');var timeout=require(_0xb22e('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb22e('0x3'));var interaction=require(_0xb22e('0x4'));var config=require('../../config/environment');var controller=require('./chatWebsite.controller');router[_0xb22e('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb22e('0x5')](_0xb22e('0x6'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x8')]);router[_0xb22e('0x5')](_0xb22e('0x9'),auth['isAuthenticated'](),controller[_0xb22e('0xa')]);router[_0xb22e('0x5')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xb22e('0xb')]);router['get'](_0xb22e('0xc'),auth['isAuthenticated'](),controller[_0xb22e('0xd')]);router[_0xb22e('0x5')](_0xb22e('0xe'),controller[_0xb22e('0xf')]);router[_0xb22e('0x5')](_0xb22e('0x10'),controller[_0xb22e('0x11')]);router[_0xb22e('0x5')]('/:id/customer_avatar',controller[_0xb22e('0x12')]);router[_0xb22e('0x5')](_0xb22e('0x13'),controller[_0xb22e('0x14')]);router[_0xb22e('0x5')](_0xb22e('0x15'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x16')]);router['get'](_0xb22e('0x17'),controller[_0xb22e('0x18')]);router[_0xb22e('0x5')](_0xb22e('0x19'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x1a')]);router[_0xb22e('0x5')]('/:id/proactive_actions',auth[_0xb22e('0x7')](),controller[_0xb22e('0x1b')]);router[_0xb22e('0x5')]('/:id/fields',controller['getFields']);router[_0xb22e('0x5')](_0xb22e('0x1c'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x1d')]);router['get'](_0xb22e('0x1e'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x1f')]);router[_0xb22e('0x20')]('/',auth[_0xb22e('0x7')](),controller[_0xb22e('0x21')]);router[_0xb22e('0x20')](_0xb22e('0x22'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x23')]);router['post'](_0xb22e('0xc'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x24')]);var upload=multer({'storage':multer[_0xb22e('0x25')]({'destination':function(_0x2cd178,_0x44f8ac,_0x128269){_0x128269(null,path[_0xb22e('0x26')](config[_0xb22e('0x27')],_0xb22e('0x28')));},'filename':function(_0x15f846,_0x291070,_0x286c48){_0x286c48(null,util[_0xb22e('0x29')](_0xb22e('0x2a'),Date[_0xb22e('0x2b')](),_0x291070[_0xb22e('0x2c')]));}})});router[_0xb22e('0x20')]('/:id/logo',upload[_0xb22e('0x2d')](_0xb22e('0x2e')),controller[_0xb22e('0x2f')]);var upload=multer({'storage':multer[_0xb22e('0x25')]({'destination':function(_0x58d186,_0x10afef,_0x491942){_0x491942(null,path[_0xb22e('0x26')](config[_0xb22e('0x27')],_0xb22e('0x30')));},'filename':function(_0x2a2f29,_0x5d430f,_0x281d7e){_0x281d7e(null,util[_0xb22e('0x29')]('%s-%s',Date[_0xb22e('0x2b')](),_0x5d430f[_0xb22e('0x2c')]));}})});router[_0xb22e('0x20')](_0xb22e('0x10'),upload[_0xb22e('0x2d')](_0xb22e('0x2e')),controller[_0xb22e('0x31')]);var upload=multer({'storage':multer[_0xb22e('0x25')]({'destination':function(_0x29a30f,_0x363314,_0x84121){_0x84121(null,path[_0xb22e('0x26')](config[_0xb22e('0x27')],'server/files/images/avatars/'));},'filename':function(_0x9a7624,_0x2811ac,_0x4758f0){_0x4758f0(null,util[_0xb22e('0x29')](_0xb22e('0x2a'),Date[_0xb22e('0x2b')](),_0x2811ac[_0xb22e('0x2c')]));}})});router[_0xb22e('0x20')](_0xb22e('0x32'),upload[_0xb22e('0x2d')](_0xb22e('0x2e')),controller[_0xb22e('0x33')]);var upload=multer({'storage':multer[_0xb22e('0x25')]({'destination':function(_0x55683a,_0x499879,_0x4d096f){_0x4d096f(null,path[_0xb22e('0x26')](config[_0xb22e('0x27')],'server/files/images/avatars/'));},'filename':function(_0x466928,_0x501a57,_0x4de423){_0x4de423(null,util['format']('%s-%s',Date['now'](),_0x501a57[_0xb22e('0x2c')]));}})});router[_0xb22e('0x20')](_0xb22e('0x13'),upload[_0xb22e('0x2d')](_0xb22e('0x2e')),controller[_0xb22e('0x34')]);router[_0xb22e('0x20')](_0xb22e('0x35'),controller[_0xb22e('0x36')]);const offlineUploadMulter=multer({'storage':multer[_0xb22e('0x25')]({'destination':function(_0x2e647c,_0x46b045,_0x55f2d2){const _0x13e464=path[_0xb22e('0x26')](config['root'],_0xb22e('0x37'),'attachments',_0xb22e('0x38'));fs_extra[_0xb22e('0x39')](_0x13e464,function(){_0x55f2d2(null,_0x13e464);});},'filename':function(_0x29cefd,_0xf846a,_0x2056b1){const _0x42fbd4=_0xf846a[_0xb22e('0x2c')][_0xb22e('0x3a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0xf563c8=path[_0xb22e('0x3b')](_0x42fbd4);const _0x21347a=Date['now']()+'-'+_0x42fbd4[_0xb22e('0x3a')](_0xf563c8,'')+_0xf563c8;_0x2056b1(null,_0x21347a);}})});router[_0xb22e('0x20')]('/:id/offline',offlineUploadMulter[_0xb22e('0x3c')](),controller['offline']);router[_0xb22e('0x20')](_0xb22e('0x15'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x3d')]);router[_0xb22e('0x20')](_0xb22e('0x19'),auth['isAuthenticated'](),controller[_0xb22e('0x3e')]);router[_0xb22e('0x20')](_0xb22e('0x3f'),auth['isAuthenticated'](),controller[_0xb22e('0x40')]);router['post'](_0xb22e('0x1e'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x41')]);router[_0xb22e('0x42')](_0xb22e('0x9'),auth[_0xb22e('0x7')](),controller['update']);router[_0xb22e('0x43')](_0xb22e('0x9'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x44')]);router['delete'](_0xb22e('0x22'),auth[_0xb22e('0x7')](),controller[_0xb22e('0x45')]);router['delete']('/:id/canned_answers',auth[_0xb22e('0x7')](),controller['removeAnswers']);router[_0xb22e('0x43')]('/:id/users',auth[_0xb22e('0x7')](),controller[_0xb22e('0x46')]);module['exports']=router;
\ No newline at end of file
index 9c08245..a16d4ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a0=['STRING','sequelize','exports'];(function(_0x420aea,_0x979cfc){var _0x367569=function(_0x3eef1c){while(--_0x3eef1c){_0x420aea['push'](_0x420aea['shift']());}};_0x367569(++_0x979cfc);}(_0x99a0,0x121));var _0x099a=function(_0x1d2401,_0xfaadaa){_0x1d2401=_0x1d2401-0x0;var _0x381be3=_0x99a0[_0x1d2401];return _0x381be3;};'use strict';var Sequelize=require(_0x099a('0x0'));module[_0x099a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x099a('0x2')]},'data2':{'type':Sequelize[_0x099a('0x2')]}};
\ No newline at end of file
+var _0xa23f=['exports','AmazonAWS','Google','STRING','sequelize'];(function(_0x2c62b2,_0x4aff9f){var _0x41dced=function(_0x1ae779){while(--_0x1ae779){_0x2c62b2['push'](_0x2c62b2['shift']());}};_0x41dced(++_0x4aff9f);}(_0xa23f,0x7c));var _0xfa23=function(_0x38c9f6,_0xe63509){_0x38c9f6=_0x38c9f6-0x0;var _0x3b5766=_0xa23f[_0x38c9f6];return _0x3b5766;};'use strict';var Sequelize=require(_0xfa23('0x0'));module[_0xfa23('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0xfa23('0x2'),_0xfa23('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xfa23('0x4')]},'data2':{'type':Sequelize[_0xfa23('0x4')]}};
\ No newline at end of file
index 9282259..e9abfb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','CloudProvider','fieldName','type','key'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xadb5,0xad));var _0x5adb=function(_0x564aa2,_0x21f56e){_0x564aa2=_0x564aa2-0x0;var _0x5d9e3b=_0xadb5[_0x564aa2];return _0x5d9e3b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['CloudProvider']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};
\ No newline at end of file
+var _0xdb28=['error','stack','name','send','index','CloudProvider','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus'];(function(_0x59d348,_0x31052c){var _0x2dd19b=function(_0x2bf62b){while(--_0x2bf62b){_0x59d348['push'](_0x59d348['shift']());}};_0x2dd19b(++_0x31052c);}(_0xdb28,0x106));var _0x8db2=function(_0x5f2803,_0x4a6046){_0x5f2803=_0x5f2803-0x0;var _0x505b8e=_0xdb28[_0x5f2803];return _0x505b8e;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':!![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};
\ No newline at end of file
index 7fc36ab..35ac8b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d5c=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CloudProvider','cloud_providers'];(function(_0x16dc2f,_0x40c6bf){var _0x4a4848=function(_0x15f944){while(--_0x15f944){_0x16dc2f['push'](_0x16dc2f['shift']());}};_0x4a4848(++_0x40c6bf);}(_0x9d5c,0x1ce));var _0xc9d5=function(_0x4cf81d,_0x21f5f6){_0x4cf81d=_0x4cf81d-0x0;var _0x59e5c4=_0x9d5c[_0x4cf81d];return _0x59e5c4;};'use strict';var _=require(_0xc9d5('0x0'));var util=require(_0xc9d5('0x1'));var logger=require(_0xc9d5('0x2'))(_0xc9d5('0x3'));var moment=require(_0xc9d5('0x4'));var BPromise=require(_0xc9d5('0x5'));var rp=require(_0xc9d5('0x6'));var fs=require('fs');var path=require(_0xc9d5('0x7'));var rimraf=require(_0xc9d5('0x8'));var config=require(_0xc9d5('0x9'));var attributes=require('./cloudProvider.attributes');module[_0xc9d5('0xa')]=function(_0x423142,_0x164518){return _0x423142[_0xc9d5('0xb')](_0xc9d5('0xc'),attributes,{'tableName':_0xc9d5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c77=['request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','util','api','moment','bluebird'];(function(_0x3d788a,_0xac1711){var _0x1afdcd=function(_0x31bfdc){while(--_0x31bfdc){_0x3d788a['push'](_0x3d788a['shift']());}};_0x1afdcd(++_0xac1711);}(_0x7c77,0xa3));var _0x77c7=function(_0xf52584,_0x41be64){_0xf52584=_0xf52584-0x0;var _0x312616=_0x7c77[_0xf52584];return _0x312616;};'use strict';var _=require(_0x77c7('0x0'));var util=require(_0x77c7('0x1'));var logger=require('../../config/logger')(_0x77c7('0x2'));var moment=require(_0x77c7('0x3'));var BPromise=require(_0x77c7('0x4'));var rp=require(_0x77c7('0x5'));var fs=require('fs');var path=require(_0x77c7('0x6'));var rimraf=require(_0x77c7('0x7'));var config=require(_0x77c7('0x8'));var attributes=require(_0x77c7('0x9'));module[_0x77c7('0xa')]=function(_0x3b0571,_0x6fbb76){return _0x3b0571[_0x77c7('0xb')](_0x77c7('0xc'),attributes,{'tableName':_0x77c7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b62be77..2e87e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85de=['CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x7e6d3b,_0x3ac760){var _0xd78ca=function(_0x2eb0b6){while(--_0x2eb0b6){_0x7e6d3b['push'](_0x7e6d3b['shift']());}};_0xd78ca(++_0x3ac760);}(_0x85de,0x65));var _0xe85d=function(_0x5c950d,_0x169218){_0x5c950d=_0x5c950d-0x0;var _0x2829d=_0x85de[_0x5c950d];return _0x2829d;};'use strict';var _=require(_0xe85d('0x0'));var util=require(_0xe85d('0x1'));var moment=require(_0xe85d('0x2'));var BPromise=require(_0xe85d('0x3'));var rs=require(_0xe85d('0x4'));var fs=require('fs');var Redis=require(_0xe85d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe85d('0x6'));var logger=require(_0xe85d('0x7'))(_0xe85d('0x8'));var config=require(_0xe85d('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe85d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x27401c,_0x387bfc,_0x42c1ca){return new BPromise(function(_0x4c1cbb,_0x2c1197){return client[_0xe85d('0xb')](_0x27401c,_0x42c1ca)[_0xe85d('0xc')](function(_0x89b2b2){logger[_0xe85d('0xd')](_0xe85d('0xe'),_0x387bfc,_0xe85d('0xf'));logger[_0xe85d('0x10')](_0xe85d('0x11'),_0x387bfc,_0xe85d('0xf'),JSON[_0xe85d('0x12')](_0x89b2b2));if(_0x89b2b2[_0xe85d('0x13')]){if(_0x89b2b2[_0xe85d('0x13')][_0xe85d('0x14')]===0x1f4){logger[_0xe85d('0x13')](_0xe85d('0xe'),_0x387bfc,_0x89b2b2[_0xe85d('0x13')]['message']);return _0x2c1197(_0x89b2b2['error'][_0xe85d('0x15')]);}logger[_0xe85d('0x13')](_0xe85d('0xe'),_0x387bfc,_0x89b2b2[_0xe85d('0x13')][_0xe85d('0x15')]);return _0x4c1cbb(_0x89b2b2[_0xe85d('0x13')][_0xe85d('0x15')]);}else{logger['info']('CloudProvider,\x20%s,\x20%s',_0x387bfc,'request\x20sent');_0x4c1cbb(_0x89b2b2['result'][_0xe85d('0x15')]);}})[_0xe85d('0x16')](function(_0x5c431c){logger[_0xe85d('0x13')](_0xe85d('0xe'),_0x387bfc,_0x5c431c);_0x2c1197(_0x5c431c);});});}
\ No newline at end of file
+var _0x09df=['rpc','../../config/environment','request','then','info','request\x20sent','debug','error','code','CloudProvider,\x20%s,\x20%s','message','lodash','util','bluebird','../../mysqldb'];(function(_0x150979,_0x2008b7){var _0x4302b8=function(_0x3939d4){while(--_0x3939d4){_0x150979['push'](_0x150979['shift']());}};_0x4302b8(++_0x2008b7);}(_0x09df,0x164));var _0xf09d=function(_0x5e8d3e,_0x18ed2e){_0x5e8d3e=_0x5e8d3e-0x0;var _0x1348c0=_0x09df[_0x5e8d3e];return _0x1348c0;};'use strict';var _=require(_0xf09d('0x0'));var util=require(_0xf09d('0x1'));var moment=require('moment');var BPromise=require(_0xf09d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf09d('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf09d('0x4'));var config=require(_0xf09d('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x284a42,_0x48b82f,_0x28c91c){return new BPromise(function(_0x2555c7,_0x2f1810){return client[_0xf09d('0x6')](_0x284a42,_0x28c91c)[_0xf09d('0x7')](function(_0x2a59a8){logger[_0xf09d('0x8')]('CloudProvider,\x20%s,\x20%s',_0x48b82f,_0xf09d('0x9'));logger[_0xf09d('0xa')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x48b82f,_0xf09d('0x9'),JSON['stringify'](_0x2a59a8));if(_0x2a59a8[_0xf09d('0xb')]){if(_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xc')]===0x1f4){logger[_0xf09d('0xb')](_0xf09d('0xd'),_0x48b82f,_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xe')]);return _0x2f1810(_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xe')]);}logger['error'](_0xf09d('0xd'),_0x48b82f,_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xe')]);return _0x2555c7(_0x2a59a8['error']['message']);}else{logger[_0xf09d('0x8')](_0xf09d('0xd'),_0x48b82f,_0xf09d('0x9'));_0x2555c7(_0x2a59a8['result'][_0xf09d('0xe')]);}})['catch'](function(_0x3614f7){logger[_0xf09d('0xb')](_0xf09d('0xd'),_0x48b82f,_0x3614f7);_0x2f1810(_0x3614f7);});});}
\ No newline at end of file
index 62d5378..4f3d3ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c9=['post','create','put','update','delete','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','/:id','show'];(function(_0x17516a,_0x2824c1){var _0x22e61f=function(_0x5f0226){while(--_0x5f0226){_0x17516a['push'](_0x17516a['shift']());}};_0x22e61f(++_0x2824c1);}(_0x81c9,0x65));var _0x981c=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x81c9[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0x981c('0x0'));var util=require(_0x981c('0x1'));var path=require('path');var timeout=require(_0x981c('0x2'));var express=require('express');var router=express[_0x981c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x981c('0x4'));var interaction=require(_0x981c('0x5'));var config=require(_0x981c('0x6'));var controller=require(_0x981c('0x7'));router[_0x981c('0x8')]('/',auth[_0x981c('0x9')](),controller[_0x981c('0xa')]);router[_0x981c('0x8')](_0x981c('0xb'),auth[_0x981c('0x9')](),controller[_0x981c('0xc')]);router[_0x981c('0xd')]('/',auth[_0x981c('0x9')](),controller[_0x981c('0xe')]);router[_0x981c('0xf')](_0x981c('0xb'),auth[_0x981c('0x9')](),controller[_0x981c('0x10')]);router[_0x981c('0x11')]('/:id',auth[_0x981c('0x9')](),controller['destroy']);module[_0x981c('0x12')]=router;
\ No newline at end of file
+var _0x3525=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cloudProvider.controller','get','isAuthenticated','/:id','show','post','put','update','delete'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x3525,0x16a));var _0x5352=function(_0x1f0120,_0x561f63){_0x1f0120=_0x1f0120-0x0;var _0x3a2452=_0x3525[_0x1f0120];return _0x3a2452;};'use strict';var multer=require(_0x5352('0x0'));var util=require(_0x5352('0x1'));var path=require(_0x5352('0x2'));var timeout=require(_0x5352('0x3'));var express=require(_0x5352('0x4'));var router=express[_0x5352('0x5')]();var fs_extra=require(_0x5352('0x6'));var auth=require(_0x5352('0x7'));var interaction=require(_0x5352('0x8'));var config=require('../../config/environment');var controller=require(_0x5352('0x9'));router[_0x5352('0xa')]('/',auth[_0x5352('0xb')](),controller['index']);router['get'](_0x5352('0xc'),auth[_0x5352('0xb')](),controller[_0x5352('0xd')]);router[_0x5352('0xe')]('/',auth[_0x5352('0xb')](),controller['create']);router[_0x5352('0xf')](_0x5352('0xc'),auth['isAuthenticated'](),controller[_0x5352('0x10')]);router[_0x5352('0x11')](_0x5352('0xc'),auth[_0x5352('0xb')](),controller[_0x5352('0x12')]);module[_0x5352('0x13')]=router;
\ No newline at end of file
index fdf0a91..ec895a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e62=['exports','STRING','sequelize'];(function(_0x242355,_0x4f0c34){var _0x502c0d=function(_0x18f5f4){while(--_0x18f5f4){_0x242355['push'](_0x242355['shift']());}};_0x502c0d(++_0x4f0c34);}(_0x8e62,0xe9));var _0x28e6=function(_0x4cd14a,_0x3c08b4){_0x4cd14a=_0x4cd14a-0x0;var _0x59ac6a=_0x8e62[_0x4cd14a];return _0x59ac6a;};'use strict';var Sequelize=require(_0x28e6('0x0'));module[_0x28e6('0x1')]={'name':{'type':Sequelize[_0x28e6('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x28e6('0x2')]},'website':{'type':Sequelize[_0x28e6('0x2')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x28e6('0x2')]},'type':{'type':Sequelize[_0x28e6('0x2')]},'street':{'type':Sequelize[_0x28e6('0x2')]},'postalCode':{'type':Sequelize[_0x28e6('0x2')]},'city':{'type':Sequelize[_0x28e6('0x2')]},'country':{'type':Sequelize[_0x28e6('0x2')]},'email':{'type':Sequelize[_0x28e6('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x28e6('0x2')]},'sStreet':{'type':Sequelize[_0x28e6('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x28e6('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7872=['name','STRING'];(function(_0xe40a31,_0x1c1202){var _0x5e37a6=function(_0x3f9a31){while(--_0x3f9a31){_0xe40a31['push'](_0xe40a31['shift']());}};_0x5e37a6(++_0x1c1202);}(_0x7872,0xcf));var _0x2787=function(_0x5114e0,_0x15e947){_0x5114e0=_0x5114e0-0x0;var _0x1b29e5=_0x7872[_0x5114e0];return _0x1b29e5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2787('0x0')],'unique':_0x2787('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x2787('0x0')]},'companyId':{'type':Sequelize[_0x2787('0x0')]},'website':{'type':Sequelize[_0x2787('0x0')]},'phone':{'type':Sequelize[_0x2787('0x0')]},'fax':{'type':Sequelize[_0x2787('0x0')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x2787('0x0')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x2787('0x0')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x2787('0x0')]},'description':{'type':Sequelize[_0x2787('0x0')]}};
\ No newline at end of file
index 134ea24..65c32f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7675=['sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Companies','error','stack','name','index','CmCompany','model','keys','filters','intersection','query','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','fields','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','userProfileId','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','CmContact','addContacts','ids','findOne','length','getContacts','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x7675,0x154));var _0x5767=function(_0x83e2ef,_0x816611){_0x83e2ef=_0x83e2ef-0x0;var _0x53070f=_0x7675[_0x83e2ef];return _0x53070f;};'use strict';var emlformat=require(_0x5767('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5767('0x1'));var jsonpatch=require(_0x5767('0x2'));var rp=require(_0x5767('0x3'));var moment=require(_0x5767('0x4'));var BPromise=require(_0x5767('0x5'));var Mustache=require('mustache');var util=require(_0x5767('0x6'));var path=require(_0x5767('0x7'));var sox=require(_0x5767('0x8'));var csv=require('to-csv');var ejs=require(_0x5767('0x9'));var fs=require('fs');var fs_extra=require(_0x5767('0xa'));var _=require(_0x5767('0xb'));var squel=require(_0x5767('0xc'));var crypto=require(_0x5767('0xd'));var jsforce=require(_0x5767('0xe'));var deskjs=require(_0x5767('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5767('0x10'));var Papa=require('papaparse');var Redis=require(_0x5767('0x11'));var authService=require(_0x5767('0x12'));var qs=require(_0x5767('0x13'));var as=require(_0x5767('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5767('0x15'))(_0x5767('0x16'));var utils=require(_0x5767('0x17'));var config=require(_0x5767('0x18'));var licenseUtil=require(_0x5767('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c333e,_0x540eb0){_0x540eb0=_0x540eb0||0xcc;return function(_0x405042){if(_0x405042){return _0x3c333e[_0x5767('0x1a')](_0x540eb0);}return _0x3c333e[_0x5767('0x1b')](_0x540eb0)[_0x5767('0x1c')]();};}function respondWithResult(_0x2fcc97,_0x2135e0){_0x2135e0=_0x2135e0||0xc8;return function(_0x114bfe){if(_0x114bfe){return _0x2fcc97['status'](_0x2135e0)['json'](_0x114bfe);}};}function respondWithFilteredResult(_0xc3505d,_0x5b0833){return function(_0x358d9b){if(_0x358d9b){var _0x2cad8f=typeof _0x5b0833[_0x5767('0x1d')]===_0x5767('0x1e')&&typeof _0x5b0833[_0x5767('0x1f')]==='undefined';var _0x3f2faa=_0x358d9b[_0x5767('0x20')];var _0x5b54da=_0x2cad8f?0x0:_0x5b0833[_0x5767('0x1d')];var _0x41271a=_0x2cad8f?_0x358d9b['count']:_0x5b0833[_0x5767('0x1d')]+_0x5b0833[_0x5767('0x1f')];var _0x59e559;if(_0x41271a>=_0x3f2faa){_0x41271a=_0x3f2faa;_0x59e559=0xc8;}else{_0x59e559=0xce;}_0xc3505d['status'](_0x59e559);return _0xc3505d[_0x5767('0x21')](_0x5767('0x22'),_0x5b54da+'-'+_0x41271a+'/'+_0x3f2faa)['json'](_0x358d9b);}return null;};}function patchUpdates(_0x42c8d5){return function(_0x40077a){try{jsonpatch[_0x5767('0x23')](_0x40077a,_0x42c8d5,!![]);}catch(_0x479c4d){return BPromise[_0x5767('0x24')](_0x479c4d);}return _0x40077a[_0x5767('0x25')]();};}function saveUpdates(_0x271abe,_0x2ed40d){return function(_0x2b3d19){if(_0x2b3d19){return _0x2b3d19[_0x5767('0x26')](_0x271abe)[_0x5767('0x27')](function(_0x3431a0){return _0x3431a0;});}return null;};}function removeEntity(_0xd2509a,_0x1f37d1){return function(_0x4818a1){if(_0x4818a1){return _0x4818a1['destroy']()['then'](function(){var _0x1842bb=_0x4818a1[_0x5767('0x28')]({'plain':!![]});var _0xc7b920=_0x5767('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0xc7b920,'resourceId':_0x1842bb['id']}})[_0x5767('0x27')](function(){return _0x4818a1;});})[_0x5767('0x27')](function(){_0xd2509a[_0x5767('0x1b')](0xcc)[_0x5767('0x1c')]();});}};}function handleEntityNotFound(_0x510607,_0x3c9889){return function(_0x309d3e){if(!_0x309d3e){_0x510607['sendStatus'](0x194);}return _0x309d3e;};}function handleError(_0x42736f,_0x33cb96){_0x33cb96=_0x33cb96||0x1f4;return function(_0x145c19){logger[_0x5767('0x2a')](_0x145c19[_0x5767('0x2b')]);if(_0x145c19[_0x5767('0x2c')]){delete _0x145c19[_0x5767('0x2c')];}_0x42736f['status'](_0x33cb96)['send'](_0x145c19);};}exports[_0x5767('0x2d')]=function(_0x1d0e53,_0x24ac68){var _0x1d5d5f={},_0x44c85a={},_0x348cbb={'count':0x0,'rows':[]};return db[_0x5767('0x2e')]['describe']()[_0x5767('0x27')](function(_0x3c9225){_0x44c85a[_0x5767('0x2f')]=_[_0x5767('0x30')](_0x3c9225);_0x44c85a['query']=_['keys'](_0x1d0e53['query']);_0x44c85a[_0x5767('0x31')]=_[_0x5767('0x32')](_0x44c85a['model'],_0x44c85a[_0x5767('0x33')]);_0x1d5d5f['attributes']=_[_0x5767('0x32')](_0x44c85a[_0x5767('0x2f')],qs['fields'](_0x1d0e53['query']['fields']));_0x1d5d5f[_0x5767('0x34')]=_0x1d5d5f['attributes']['length']?_0x1d5d5f['attributes']:_0x44c85a[_0x5767('0x2f')];if(!_0x1d0e53['query'][_0x5767('0x35')](_0x5767('0x36'))){_0x1d5d5f['limit']=qs[_0x5767('0x1f')](_0x1d0e53['query'][_0x5767('0x1f')]);_0x1d5d5f['offset']=qs[_0x5767('0x1d')](_0x1d0e53[_0x5767('0x33')][_0x5767('0x1d')]);}_0x1d5d5f[_0x5767('0x37')]=qs[_0x5767('0x38')](_0x1d0e53[_0x5767('0x33')]['sort']);_0x1d5d5f[_0x5767('0x39')]=qs[_0x5767('0x31')](_[_0x5767('0x3a')](_0x1d0e53[_0x5767('0x33')],_0x44c85a[_0x5767('0x31')]),_0x3c9225);if(_0x1d0e53[_0x5767('0x33')][_0x5767('0x3b')]){_0x1d5d5f['where']=_['merge'](_0x1d5d5f[_0x5767('0x39')],{'$or':_[_0x5767('0x3c')](_0x1d5d5f['attributes'],function(_0x1038ef){var _0x2931e3={};_0x2931e3[_0x1038ef]={'$like':'%'+_0x1d0e53[_0x5767('0x33')][_0x5767('0x3b')]+'%'};return _0x2931e3;})});}_0x1d5d5f=_[_0x5767('0x3d')]({},_0x1d5d5f,_0x1d0e53[_0x5767('0x3e')]);var _0x2c3405={'where':_0x1d5d5f[_0x5767('0x39')]};return db[_0x5767('0x2e')]['count'](_0x2c3405)[_0x5767('0x27')](function(_0x2bc913){_0x348cbb[_0x5767('0x20')]=_0x2bc913;if(_0x1d0e53[_0x5767('0x33')][_0x5767('0x3f')]){_0x1d5d5f[_0x5767('0x40')]=[{'all':!![]}];}return db[_0x5767('0x2e')][_0x5767('0x41')](_0x1d5d5f);})[_0x5767('0x27')](function(_0x3de156){_0x348cbb[_0x5767('0x42')]=_0x3de156;return _0x348cbb;})[_0x5767('0x27')](respondWithFilteredResult(_0x24ac68,_0x1d5d5f))[_0x5767('0x43')](handleError(_0x24ac68,null));})['catch'](handleError(_0x24ac68,null));};exports[_0x5767('0x44')]=function(_0x30bfd6,_0xbebd5){var _0xcb459e={'raw':![],'where':{'id':_0x30bfd6['params']['id']}},_0x5b8a72={};_0x5b8a72[_0x5767('0x2f')]=_[_0x5767('0x30')](db[_0x5767('0x2e')][_0x5767('0x45')]);_0x5b8a72[_0x5767('0x33')]=_['keys'](_0x30bfd6[_0x5767('0x33')]);_0x5b8a72[_0x5767('0x31')]=_[_0x5767('0x32')](_0x5b8a72['model'],_0x5b8a72[_0x5767('0x33')]);_0xcb459e[_0x5767('0x34')]=_[_0x5767('0x32')](_0x5b8a72[_0x5767('0x2f')],qs[_0x5767('0x46')](_0x30bfd6[_0x5767('0x33')][_0x5767('0x46')]));_0xcb459e[_0x5767('0x34')]=_0xcb459e[_0x5767('0x34')]['length']?_0xcb459e[_0x5767('0x34')]:_0x5b8a72['model'];if(_0x30bfd6['query'][_0x5767('0x3f')]){_0xcb459e[_0x5767('0x40')]=[{'all':!![]}];}_0xcb459e=_[_0x5767('0x3d')]({},_0xcb459e,_0x30bfd6[_0x5767('0x3e')]);return db[_0x5767('0x2e')]['find'](_0xcb459e)[_0x5767('0x27')](handleEntityNotFound(_0xbebd5,null))[_0x5767('0x27')](respondWithResult(_0xbebd5,null))[_0x5767('0x43')](handleError(_0xbebd5,null));};exports['create']=function(_0x464a2b,_0x5db562){return db['CmCompany']['create'](_0x464a2b['body'],{})[_0x5767('0x27')](function(_0x189356){var _0x9d16bc=_0x464a2b['user']['get']({'plain':!![]});if(!_0x9d16bc)throw new Error(_0x5767('0x47'));if(_0x9d16bc['role']===_0x5767('0x48')){var _0xa8fad0=_0x189356['get']({'plain':!![]});var _0x1833df='Companies';return db[_0x5767('0x49')][_0x5767('0x4a')]({'where':{'name':_0x1833df,'userProfileId':_0x9d16bc[_0x5767('0x4b')]},'raw':!![]})[_0x5767('0x27')](function(_0x1cbae0){if(_0x1cbae0&&_0x1cbae0['autoAssociation']===0x0){return db['UserProfileResource'][_0x5767('0x4c')]({'name':_0xa8fad0[_0x5767('0x2c')],'resourceId':_0xa8fad0['id'],'type':_0x1cbae0[_0x5767('0x2c')],'sectionId':_0x1cbae0['id']},{})['then'](function(){return _0x189356;});}else{return _0x189356;}})[_0x5767('0x43')](function(_0x514edf){logger[_0x5767('0x2a')](_0x5767('0x4d'),_0x514edf);throw _0x514edf;});}return _0x189356;})['then'](respondWithResult(_0x5db562,0xc9))[_0x5767('0x43')](handleError(_0x5db562,null));};exports['update']=function(_0x332bfe,_0x3a37bd){if(_0x332bfe[_0x5767('0x4e')]['id']){delete _0x332bfe['body']['id'];}return db[_0x5767('0x2e')]['find']({'where':{'id':_0x332bfe[_0x5767('0x4f')]['id']}})[_0x5767('0x27')](handleEntityNotFound(_0x3a37bd,null))[_0x5767('0x27')](saveUpdates(_0x332bfe['body'],null))['then'](respondWithResult(_0x3a37bd,null))['catch'](handleError(_0x3a37bd,null));};exports['destroy']=function(_0x469d0a,_0x15df7b){return db[_0x5767('0x2e')][_0x5767('0x4a')]({'where':{'id':_0x469d0a['params']['id']}})['then'](handleEntityNotFound(_0x15df7b,null))[_0x5767('0x27')](removeEntity(_0x15df7b,null))['catch'](handleError(_0x15df7b,null));};exports[_0x5767('0x50')]=function(_0x13012a,_0x336ad2){return db[_0x5767('0x2e')][_0x5767('0x50')]()[_0x5767('0x27')](respondWithResult(_0x336ad2,null))[_0x5767('0x43')](handleError(_0x336ad2,null));};exports['addContacts']=function(_0x2f3e9d,_0x2cf212,_0x466585){return db[_0x5767('0x51')][_0x5767('0x4a')]({'where':{'id':_0x2f3e9d['params']['id']}})['then'](handleEntityNotFound(_0x2cf212,null))[_0x5767('0x27')](function(_0x464cf3){if(_0x464cf3){return _0x464cf3[_0x5767('0x52')](_0x2f3e9d[_0x5767('0x4e')][_0x5767('0x53')],_['omit'](_0x2f3e9d[_0x5767('0x4e')],[_0x5767('0x53'),'id'])||{});}})[_0x5767('0x27')](respondWithResult(_0x2cf212,null))[_0x5767('0x43')](handleError(_0x2cf212,null));};exports['getContacts']=function(_0x25edb5,_0x849af6,_0x4f4059){var _0x11f288={};var _0x53155a={};var _0xdd24bc;var _0x474cf4;return db[_0x5767('0x2e')][_0x5767('0x54')]({'where':{'id':_0x25edb5[_0x5767('0x4f')]['id']}})[_0x5767('0x27')](handleEntityNotFound(_0x849af6,null))[_0x5767('0x27')](function(_0x4b6d76){if(_0x4b6d76){_0xdd24bc=_0x4b6d76;_0x53155a[_0x5767('0x2f')]=_['keys'](db[_0x5767('0x51')][_0x5767('0x45')]);_0x53155a['query']=_[_0x5767('0x30')](_0x25edb5[_0x5767('0x33')]);_0x53155a[_0x5767('0x31')]=_[_0x5767('0x32')](_0x53155a[_0x5767('0x2f')],_0x53155a[_0x5767('0x33')]);_0x11f288[_0x5767('0x34')]=_[_0x5767('0x32')](_0x53155a[_0x5767('0x2f')],qs['fields'](_0x25edb5['query'][_0x5767('0x46')]));_0x11f288[_0x5767('0x34')]=_0x11f288[_0x5767('0x34')][_0x5767('0x55')]?_0x11f288['attributes']:_0x53155a[_0x5767('0x2f')];_0x11f288[_0x5767('0x37')]=qs[_0x5767('0x38')](_0x25edb5[_0x5767('0x33')]['sort']);_0x11f288[_0x5767('0x39')]=qs[_0x5767('0x31')](_[_0x5767('0x3a')](_0x25edb5[_0x5767('0x33')],_0x53155a[_0x5767('0x31')]));if(_0x25edb5['query']['filter']){_0x11f288[_0x5767('0x39')]=_[_0x5767('0x3d')](_0x11f288[_0x5767('0x39')],{'$or':_['map'](_0x11f288[_0x5767('0x34')],function(_0x28add8){var _0x591c4f={};_0x591c4f[_0x28add8]={'$like':'%'+_0x25edb5['query']['filter']+'%'};return _0x591c4f;})});}_0x11f288=_[_0x5767('0x3d')]({},_0x11f288,_0x25edb5['options']);return _0xdd24bc[_0x5767('0x56')](_0x11f288);}})[_0x5767('0x27')](function(_0x1cec69){if(_0x1cec69){_0x474cf4=_0x1cec69[_0x5767('0x55')];if(!_0x25edb5[_0x5767('0x33')][_0x5767('0x35')](_0x5767('0x36'))){_0x11f288['limit']=qs['limit'](_0x25edb5['query'][_0x5767('0x1f')]);_0x11f288[_0x5767('0x1d')]=qs[_0x5767('0x1d')](_0x25edb5[_0x5767('0x33')][_0x5767('0x1d')]);}return _0xdd24bc[_0x5767('0x56')](_0x11f288);}})[_0x5767('0x27')](function(_0x4c0212){if(_0x4c0212){return _0x4c0212?{'count':_0x474cf4,'rows':_0x4c0212}:null;}})[_0x5767('0x27')](respondWithResult(_0x849af6,null))[_0x5767('0x43')](handleError(_0x849af6,null));};
\ No newline at end of file
+var _0xa0b7=['offset','limit','undefined','count','status','set','Content-Range','apply','save','update','then','destroy','get','Companies','name','send','CmCompany','describe','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','map','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','user','role','UserProfileSection','autoAssociation','UserProfileResource','error','CmContact','addContacts','getContacts','length','order','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json'];(function(_0x16906e,_0x381ba4){var _0x49e26b=function(_0xf78f4){while(--_0xf78f4){_0x16906e['push'](_0x16906e['shift']());}};_0x49e26b(++_0x381ba4);}(_0xa0b7,0x12d));var _0x7a0b=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xa0b7[_0x279d37];return _0x530173;};'use strict';var emlformat=require(_0x7a0b('0x0'));var rimraf=require(_0x7a0b('0x1'));var zipdir=require(_0x7a0b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7a0b('0x3'));var moment=require('moment');var BPromise=require(_0x7a0b('0x4'));var Mustache=require('mustache');var util=require(_0x7a0b('0x5'));var path=require(_0x7a0b('0x6'));var sox=require(_0x7a0b('0x7'));var csv=require(_0x7a0b('0x8'));var ejs=require(_0x7a0b('0x9'));var fs=require('fs');var fs_extra=require(_0x7a0b('0xa'));var _=require(_0x7a0b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7a0b('0xc'));var deskjs=require(_0x7a0b('0xd'));var toCsv=require(_0x7a0b('0x8'));var querystring=require(_0x7a0b('0xe'));var Papa=require('papaparse');var Redis=require(_0x7a0b('0xf'));var authService=require(_0x7a0b('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x7a0b('0x11'));var hardwareService=require(_0x7a0b('0x12'));var logger=require(_0x7a0b('0x13'))(_0x7a0b('0x14'));var utils=require('../../config/utils');var config=require(_0x7a0b('0x15'));var licenseUtil=require(_0x7a0b('0x16'));var db=require(_0x7a0b('0x17'))['db'];function respondWithStatusCode(_0x451531,_0x26115a){_0x26115a=_0x26115a||0xcc;return function(_0x1fe5ac){if(_0x1fe5ac){return _0x451531[_0x7a0b('0x18')](_0x26115a);}return _0x451531['status'](_0x26115a)[_0x7a0b('0x19')]();};}function respondWithResult(_0x23d85c,_0x36e842){_0x36e842=_0x36e842||0xc8;return function(_0x2681cd){if(_0x2681cd){return _0x23d85c['status'](_0x36e842)[_0x7a0b('0x1a')](_0x2681cd);}};}function respondWithFilteredResult(_0x43a194,_0x23d997){return function(_0x4053c7){if(_0x4053c7){var _0x3b5786=typeof _0x23d997[_0x7a0b('0x1b')]==='undefined'&&typeof _0x23d997[_0x7a0b('0x1c')]===_0x7a0b('0x1d');var _0x389f1e=_0x4053c7[_0x7a0b('0x1e')];var _0x1d3869=_0x3b5786?0x0:_0x23d997['offset'];var _0x564e9a=_0x3b5786?_0x4053c7[_0x7a0b('0x1e')]:_0x23d997[_0x7a0b('0x1b')]+_0x23d997[_0x7a0b('0x1c')];var _0x50bfed;if(_0x564e9a>=_0x389f1e){_0x564e9a=_0x389f1e;_0x50bfed=0xc8;}else{_0x50bfed=0xce;}_0x43a194[_0x7a0b('0x1f')](_0x50bfed);return _0x43a194[_0x7a0b('0x20')](_0x7a0b('0x21'),_0x1d3869+'-'+_0x564e9a+'/'+_0x389f1e)['json'](_0x4053c7);}return null;};}function patchUpdates(_0x4a5a7b){return function(_0x512f3c){try{jsonpatch[_0x7a0b('0x22')](_0x512f3c,_0x4a5a7b,!![]);}catch(_0x4989d0){return BPromise['reject'](_0x4989d0);}return _0x512f3c[_0x7a0b('0x23')]();};}function saveUpdates(_0xf11c86,_0x5157a9){return function(_0x4b85f8){if(_0x4b85f8){return _0x4b85f8[_0x7a0b('0x24')](_0xf11c86)[_0x7a0b('0x25')](function(_0x138d5b){return _0x138d5b;});}return null;};}function removeEntity(_0x407723,_0x5ae410){return function(_0x5550ec){if(_0x5550ec){return _0x5550ec[_0x7a0b('0x26')]()[_0x7a0b('0x25')](function(){var _0xe12338=_0x5550ec[_0x7a0b('0x27')]({'plain':!![]});var _0x3ed915=_0x7a0b('0x28');return db['UserProfileResource'][_0x7a0b('0x26')]({'where':{'type':_0x3ed915,'resourceId':_0xe12338['id']}})[_0x7a0b('0x25')](function(){return _0x5550ec;});})[_0x7a0b('0x25')](function(){_0x407723[_0x7a0b('0x1f')](0xcc)[_0x7a0b('0x19')]();});}};}function handleEntityNotFound(_0x31974c,_0x4a631b){return function(_0x2bc237){if(!_0x2bc237){_0x31974c[_0x7a0b('0x18')](0x194);}return _0x2bc237;};}function handleError(_0x581d97,_0x4ba344){_0x4ba344=_0x4ba344||0x1f4;return function(_0x30eac6){logger['error'](_0x30eac6['stack']);if(_0x30eac6[_0x7a0b('0x29')]){delete _0x30eac6[_0x7a0b('0x29')];}_0x581d97['status'](_0x4ba344)[_0x7a0b('0x2a')](_0x30eac6);};}exports['index']=function(_0x23cc05,_0x33dacc){var _0x39f733={},_0x4d4b4b={},_0x5b87dc={'count':0x0,'rows':[]};return db[_0x7a0b('0x2b')][_0x7a0b('0x2c')]()[_0x7a0b('0x25')](function(_0x5ce8e7){_0x4d4b4b[_0x7a0b('0x2d')]=_[_0x7a0b('0x2e')](_0x5ce8e7);_0x4d4b4b[_0x7a0b('0x2f')]=_[_0x7a0b('0x2e')](_0x23cc05['query']);_0x4d4b4b[_0x7a0b('0x30')]=_['intersection'](_0x4d4b4b[_0x7a0b('0x2d')],_0x4d4b4b['query']);_0x39f733[_0x7a0b('0x31')]=_[_0x7a0b('0x32')](_0x4d4b4b[_0x7a0b('0x2d')],qs[_0x7a0b('0x33')](_0x23cc05['query'][_0x7a0b('0x33')]));_0x39f733[_0x7a0b('0x31')]=_0x39f733[_0x7a0b('0x31')]['length']?_0x39f733['attributes']:_0x4d4b4b[_0x7a0b('0x2d')];if(!_0x23cc05[_0x7a0b('0x2f')][_0x7a0b('0x34')](_0x7a0b('0x35'))){_0x39f733[_0x7a0b('0x1c')]=qs['limit'](_0x23cc05[_0x7a0b('0x2f')][_0x7a0b('0x1c')]);_0x39f733[_0x7a0b('0x1b')]=qs[_0x7a0b('0x1b')](_0x23cc05[_0x7a0b('0x2f')][_0x7a0b('0x1b')]);}_0x39f733['order']=qs[_0x7a0b('0x36')](_0x23cc05['query'][_0x7a0b('0x36')]);_0x39f733['where']=qs[_0x7a0b('0x30')](_[_0x7a0b('0x37')](_0x23cc05[_0x7a0b('0x2f')],_0x4d4b4b[_0x7a0b('0x30')]),_0x5ce8e7);if(_0x23cc05[_0x7a0b('0x2f')][_0x7a0b('0x38')]){_0x39f733[_0x7a0b('0x39')]=_[_0x7a0b('0x3a')](_0x39f733['where'],{'$or':_[_0x7a0b('0x3b')](_0x39f733[_0x7a0b('0x31')],function(_0x3e12e3){var _0x4575a1={};_0x4575a1[_0x3e12e3]={'$like':'%'+_0x23cc05[_0x7a0b('0x2f')][_0x7a0b('0x38')]+'%'};return _0x4575a1;})});}_0x39f733=_[_0x7a0b('0x3a')]({},_0x39f733,_0x23cc05[_0x7a0b('0x3c')]);var _0x29feda={'where':_0x39f733['where']};return db[_0x7a0b('0x2b')][_0x7a0b('0x1e')](_0x29feda)[_0x7a0b('0x25')](function(_0x5dbbc1){_0x5b87dc[_0x7a0b('0x1e')]=_0x5dbbc1;if(_0x23cc05['query'][_0x7a0b('0x3d')]){_0x39f733[_0x7a0b('0x3e')]=[{'all':!![]}];}return db[_0x7a0b('0x2b')]['findAll'](_0x39f733);})[_0x7a0b('0x25')](function(_0x2f9062){_0x5b87dc[_0x7a0b('0x3f')]=_0x2f9062;return _0x5b87dc;})[_0x7a0b('0x25')](respondWithFilteredResult(_0x33dacc,_0x39f733))[_0x7a0b('0x40')](handleError(_0x33dacc,null));})[_0x7a0b('0x40')](handleError(_0x33dacc,null));};exports[_0x7a0b('0x41')]=function(_0x57a6,_0x2ccf33){var _0x44bb60={'raw':![],'where':{'id':_0x57a6[_0x7a0b('0x42')]['id']}},_0x152c08={};_0x152c08[_0x7a0b('0x2d')]=_['keys'](db[_0x7a0b('0x2b')][_0x7a0b('0x43')]);_0x152c08[_0x7a0b('0x2f')]=_[_0x7a0b('0x2e')](_0x57a6['query']);_0x152c08[_0x7a0b('0x30')]=_[_0x7a0b('0x32')](_0x152c08[_0x7a0b('0x2d')],_0x152c08[_0x7a0b('0x2f')]);_0x44bb60[_0x7a0b('0x31')]=_[_0x7a0b('0x32')](_0x152c08[_0x7a0b('0x2d')],qs[_0x7a0b('0x33')](_0x57a6[_0x7a0b('0x2f')][_0x7a0b('0x33')]));_0x44bb60[_0x7a0b('0x31')]=_0x44bb60[_0x7a0b('0x31')]['length']?_0x44bb60[_0x7a0b('0x31')]:_0x152c08[_0x7a0b('0x2d')];if(_0x57a6['query'][_0x7a0b('0x3d')]){_0x44bb60[_0x7a0b('0x3e')]=[{'all':!![]}];}_0x44bb60=_[_0x7a0b('0x3a')]({},_0x44bb60,_0x57a6[_0x7a0b('0x3c')]);return db['CmCompany'][_0x7a0b('0x44')](_0x44bb60)[_0x7a0b('0x25')](handleEntityNotFound(_0x2ccf33,null))[_0x7a0b('0x25')](respondWithResult(_0x2ccf33,null))[_0x7a0b('0x40')](handleError(_0x2ccf33,null));};exports['create']=function(_0x22766e,_0x1c5302){return db[_0x7a0b('0x2b')][_0x7a0b('0x45')](_0x22766e[_0x7a0b('0x46')],{})[_0x7a0b('0x25')](function(_0x227adf){var _0x44c07a=_0x22766e[_0x7a0b('0x47')][_0x7a0b('0x27')]({'plain':!![]});if(!_0x44c07a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x44c07a[_0x7a0b('0x48')]==='user'){var _0x1c99a2=_0x227adf[_0x7a0b('0x27')]({'plain':!![]});var _0x2ade67='Companies';return db[_0x7a0b('0x49')][_0x7a0b('0x44')]({'where':{'name':_0x2ade67,'userProfileId':_0x44c07a['userProfileId']},'raw':!![]})['then'](function(_0x540189){if(_0x540189&&_0x540189[_0x7a0b('0x4a')]===0x0){return db[_0x7a0b('0x4b')][_0x7a0b('0x45')]({'name':_0x1c99a2['name'],'resourceId':_0x1c99a2['id'],'type':_0x540189['name'],'sectionId':_0x540189['id']},{})[_0x7a0b('0x25')](function(){return _0x227adf;});}else{return _0x227adf;}})['catch'](function(_0x173169){logger[_0x7a0b('0x4c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x173169);throw _0x173169;});}return _0x227adf;})[_0x7a0b('0x25')](respondWithResult(_0x1c5302,0xc9))[_0x7a0b('0x40')](handleError(_0x1c5302,null));};exports['update']=function(_0x2b9834,_0x2aaf0b){if(_0x2b9834[_0x7a0b('0x46')]['id']){delete _0x2b9834['body']['id'];}return db[_0x7a0b('0x2b')][_0x7a0b('0x44')]({'where':{'id':_0x2b9834['params']['id']}})[_0x7a0b('0x25')](handleEntityNotFound(_0x2aaf0b,null))[_0x7a0b('0x25')](saveUpdates(_0x2b9834[_0x7a0b('0x46')],null))[_0x7a0b('0x25')](respondWithResult(_0x2aaf0b,null))[_0x7a0b('0x40')](handleError(_0x2aaf0b,null));};exports[_0x7a0b('0x26')]=function(_0xc2dfca,_0x4dc6a5){return db[_0x7a0b('0x2b')]['find']({'where':{'id':_0xc2dfca[_0x7a0b('0x42')]['id']}})[_0x7a0b('0x25')](handleEntityNotFound(_0x4dc6a5,null))[_0x7a0b('0x25')](removeEntity(_0x4dc6a5,null))[_0x7a0b('0x40')](handleError(_0x4dc6a5,null));};exports[_0x7a0b('0x2c')]=function(_0x211ce7,_0x3ff609){return db[_0x7a0b('0x2b')][_0x7a0b('0x2c')]()[_0x7a0b('0x25')](respondWithResult(_0x3ff609,null))['catch'](handleError(_0x3ff609,null));};exports['addContacts']=function(_0x797fd5,_0x45777c,_0x29a61e){return db[_0x7a0b('0x4d')]['find']({'where':{'id':_0x797fd5['params']['id']}})['then'](handleEntityNotFound(_0x45777c,null))[_0x7a0b('0x25')](function(_0x4c5258){if(_0x4c5258){return _0x4c5258[_0x7a0b('0x4e')](_0x797fd5[_0x7a0b('0x46')]['ids'],_['omit'](_0x797fd5[_0x7a0b('0x46')],['ids','id'])||{});}})[_0x7a0b('0x25')](respondWithResult(_0x45777c,null))['catch'](handleError(_0x45777c,null));};exports[_0x7a0b('0x4f')]=function(_0x177510,_0x970af5,_0x53b320){var _0x434cfc={};var _0x230c4b={};var _0x4c9f18;var _0x5f5ac5;return db[_0x7a0b('0x2b')]['findOne']({'where':{'id':_0x177510[_0x7a0b('0x42')]['id']}})[_0x7a0b('0x25')](handleEntityNotFound(_0x970af5,null))[_0x7a0b('0x25')](function(_0x23d351){if(_0x23d351){_0x4c9f18=_0x23d351;_0x230c4b[_0x7a0b('0x2d')]=_[_0x7a0b('0x2e')](db[_0x7a0b('0x4d')][_0x7a0b('0x43')]);_0x230c4b[_0x7a0b('0x2f')]=_[_0x7a0b('0x2e')](_0x177510[_0x7a0b('0x2f')]);_0x230c4b['filters']=_[_0x7a0b('0x32')](_0x230c4b[_0x7a0b('0x2d')],_0x230c4b[_0x7a0b('0x2f')]);_0x434cfc[_0x7a0b('0x31')]=_['intersection'](_0x230c4b[_0x7a0b('0x2d')],qs[_0x7a0b('0x33')](_0x177510['query'][_0x7a0b('0x33')]));_0x434cfc['attributes']=_0x434cfc[_0x7a0b('0x31')][_0x7a0b('0x50')]?_0x434cfc[_0x7a0b('0x31')]:_0x230c4b[_0x7a0b('0x2d')];_0x434cfc[_0x7a0b('0x51')]=qs[_0x7a0b('0x36')](_0x177510['query'][_0x7a0b('0x36')]);_0x434cfc[_0x7a0b('0x39')]=qs[_0x7a0b('0x30')](_[_0x7a0b('0x37')](_0x177510[_0x7a0b('0x2f')],_0x230c4b['filters']));if(_0x177510[_0x7a0b('0x2f')][_0x7a0b('0x38')]){_0x434cfc[_0x7a0b('0x39')]=_['merge'](_0x434cfc[_0x7a0b('0x39')],{'$or':_[_0x7a0b('0x3b')](_0x434cfc[_0x7a0b('0x31')],function(_0x4e1a3b){var _0x200bd1={};_0x200bd1[_0x4e1a3b]={'$like':'%'+_0x177510[_0x7a0b('0x2f')][_0x7a0b('0x38')]+'%'};return _0x200bd1;})});}_0x434cfc=_[_0x7a0b('0x3a')]({},_0x434cfc,_0x177510['options']);return _0x4c9f18[_0x7a0b('0x4f')](_0x434cfc);}})[_0x7a0b('0x25')](function(_0x246126){if(_0x246126){_0x5f5ac5=_0x246126['length'];if(!_0x177510[_0x7a0b('0x2f')][_0x7a0b('0x34')]('nolimit')){_0x434cfc[_0x7a0b('0x1c')]=qs[_0x7a0b('0x1c')](_0x177510[_0x7a0b('0x2f')][_0x7a0b('0x1c')]);_0x434cfc[_0x7a0b('0x1b')]=qs[_0x7a0b('0x1b')](_0x177510[_0x7a0b('0x2f')]['offset']);}return _0x4c9f18[_0x7a0b('0x4f')](_0x434cfc);}})[_0x7a0b('0x25')](function(_0x350afd){if(_0x350afd){return _0x350afd?{'count':_0x5f5ac5,'rows':_0x350afd}:null;}})[_0x7a0b('0x25')](respondWithResult(_0x970af5,null))[_0x7a0b('0x40')](handleError(_0x970af5,null));};
\ No newline at end of file
index 2d1a10c..a52786b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x121b=['moment','bluebird','request-promise','path','rimraf','./cmCompany.attributes','exports','define','CmCompany','cm_companies','lodash','util','../../config/logger'];(function(_0x5d88c0,_0x5d7d83){var _0x1b40f0=function(_0x3fde10){while(--_0x3fde10){_0x5d88c0['push'](_0x5d88c0['shift']());}};_0x1b40f0(++_0x5d7d83);}(_0x121b,0x1c4));var _0xb121=function(_0x409deb,_0x2b731){_0x409deb=_0x409deb-0x0;var _0x15a4f7=_0x121b[_0x409deb];return _0x15a4f7;};'use strict';var _=require(_0xb121('0x0'));var util=require(_0xb121('0x1'));var logger=require(_0xb121('0x2'))('api');var moment=require(_0xb121('0x3'));var BPromise=require(_0xb121('0x4'));var rp=require(_0xb121('0x5'));var fs=require('fs');var path=require(_0xb121('0x6'));var rimraf=require(_0xb121('0x7'));var config=require('../../config/environment');var attributes=require(_0xb121('0x8'));module[_0xb121('0x9')]=function(_0x4c96e1,_0x3f9fc1){return _0x4c96e1[_0xb121('0xa')](_0xb121('0xb'),attributes,{'tableName':_0xb121('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c05=['bluebird','request-promise','../../config/environment','./cmCompany.attributes','CmCompany','cm_companies','util','api','moment'];(function(_0x4409e7,_0x307f17){var _0x24c751=function(_0x3a7d33){while(--_0x3a7d33){_0x4409e7['push'](_0x4409e7['shift']());}};_0x24c751(++_0x307f17);}(_0x5c05,0x10b));var _0x55c0=function(_0x89c06a,_0x3d95ed){_0x89c06a=_0x89c06a-0x0;var _0x524261=_0x5c05[_0x89c06a];return _0x524261;};'use strict';var _=require('lodash');var util=require(_0x55c0('0x0'));var logger=require('../../config/logger')(_0x55c0('0x1'));var moment=require(_0x55c0('0x2'));var BPromise=require(_0x55c0('0x3'));var rp=require(_0x55c0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x55c0('0x5'));var attributes=require(_0x55c0('0x6'));module['exports']=function(_0x52863d,_0x2d7566){return _0x52863d['define'](_0x55c0('0x7'),attributes,{'tableName':_0x55c0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c3dfb59..bf73a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ce=['error','message','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4b99a8,_0xac7b84){var _0x496afc=function(_0x1818e2){while(--_0x1818e2){_0x4b99a8['push'](_0x4b99a8['shift']());}};_0x496afc(++_0xac7b84);}(_0x50ce,0x146));var _0xe50c=function(_0x440ba5,_0x573515){_0x440ba5=_0x440ba5-0x0;var _0x218106=_0x50ce[_0x440ba5];return _0x218106;};'use strict';var _=require('lodash');var util=require(_0xe50c('0x0'));var moment=require('moment');var BPromise=require(_0xe50c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe50c('0x2'));var db=require(_0xe50c('0x3'))['db'];var utils=require(_0xe50c('0x4'));var logger=require('../../config/logger')(_0xe50c('0x5'));var config=require(_0xe50c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe50c('0x7')][_0xe50c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3071cb,_0x2c3793,_0x4ee5c3){return new BPromise(function(_0x13c2fb,_0x59a6af){return client[_0xe50c('0x9')](_0x3071cb,_0x4ee5c3)['then'](function(_0x597321){logger[_0xe50c('0xa')](_0xe50c('0xb'),_0x2c3793,_0xe50c('0xc'));logger[_0xe50c('0xd')](_0xe50c('0xe'),_0x2c3793,'request\x20sent',JSON[_0xe50c('0xf')](_0x597321));if(_0x597321[_0xe50c('0x10')]){if(_0x597321[_0xe50c('0x10')]['code']===0x1f4){logger[_0xe50c('0x10')]('CmCompany,\x20%s,\x20%s',_0x2c3793,_0x597321[_0xe50c('0x10')]['message']);return _0x59a6af(_0x597321[_0xe50c('0x10')][_0xe50c('0x11')]);}logger[_0xe50c('0x10')]('CmCompany,\x20%s,\x20%s',_0x2c3793,_0x597321['error'][_0xe50c('0x11')]);return _0x13c2fb(_0x597321[_0xe50c('0x10')]['message']);}else{logger[_0xe50c('0xa')]('CmCompany,\x20%s,\x20%s',_0x2c3793,_0xe50c('0xc'));_0x13c2fb(_0x597321['result']['message']);}})[_0xe50c('0x12')](function(_0x224637){logger[_0xe50c('0x10')](_0xe50c('0xb'),_0x2c3793,_0x224637);_0x59a6af(_0x224637);});});}
\ No newline at end of file
+var _0x6f3d=['CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x6f3d,0x104));var _0xd6f3=function(_0x599c94,_0x464f0e){_0x599c94=_0x599c94-0x0;var _0x34e215=_0x6f3d[_0x599c94];return _0x34e215;};'use strict';var _=require(_0xd6f3('0x0'));var util=require(_0xd6f3('0x1'));var moment=require('moment');var BPromise=require(_0xd6f3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd6f3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd6f3('0x4'));var logger=require(_0xd6f3('0x5'))(_0xd6f3('0x6'));var config=require('../../config/environment');var jayson=require(_0xd6f3('0x7'));var client=jayson[_0xd6f3('0x8')][_0xd6f3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x766f81,_0x2415b8,_0x35121d){return new BPromise(function(_0x4f491a,_0x51605c){return client[_0xd6f3('0xa')](_0x766f81,_0x35121d)[_0xd6f3('0xb')](function(_0x5838cd){logger[_0xd6f3('0xc')](_0xd6f3('0xd'),_0x2415b8,_0xd6f3('0xe'));logger[_0xd6f3('0xf')](_0xd6f3('0x10'),_0x2415b8,_0xd6f3('0xe'),JSON[_0xd6f3('0x11')](_0x5838cd));if(_0x5838cd[_0xd6f3('0x12')]){if(_0x5838cd[_0xd6f3('0x12')][_0xd6f3('0x13')]===0x1f4){logger['error'](_0xd6f3('0xd'),_0x2415b8,_0x5838cd['error']['message']);return _0x51605c(_0x5838cd[_0xd6f3('0x12')][_0xd6f3('0x14')]);}logger[_0xd6f3('0x12')](_0xd6f3('0xd'),_0x2415b8,_0x5838cd[_0xd6f3('0x12')][_0xd6f3('0x14')]);return _0x4f491a(_0x5838cd['error']['message']);}else{logger[_0xd6f3('0xc')](_0xd6f3('0xd'),_0x2415b8,_0xd6f3('0xe'));_0x4f491a(_0x5838cd[_0xd6f3('0x15')]['message']);}})[_0xd6f3('0x16')](function(_0xb6593d){logger[_0xd6f3('0x12')](_0xd6f3('0xd'),_0x2415b8,_0xb6593d);_0x51605c(_0xb6593d);});});}
\ No newline at end of file
index 8703d7d..5e65968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf66b=['isAuthenticated','describe','/:id','/:id/contacts','getContacts','post','put','update','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','index','get'];(function(_0x2d7e09,_0x16be83){var _0x1ba707=function(_0x4d3063){while(--_0x4d3063){_0x2d7e09['push'](_0x2d7e09['shift']());}};_0x1ba707(++_0x16be83);}(_0xf66b,0x1ae));var _0xbf66=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xf66b[_0x9df060];return _0x338dfe;};'use strict';var multer=require(_0xbf66('0x0'));var util=require('util');var path=require(_0xbf66('0x1'));var timeout=require(_0xbf66('0x2'));var express=require(_0xbf66('0x3'));var router=express['Router']();var fs_extra=require(_0xbf66('0x4'));var auth=require(_0xbf66('0x5'));var interaction=require(_0xbf66('0x6'));var config=require(_0xbf66('0x7'));var controller=require(_0xbf66('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xbf66('0x9')]);router[_0xbf66('0xa')]('/describe',auth[_0xbf66('0xb')](),controller[_0xbf66('0xc')]);router[_0xbf66('0xa')](_0xbf66('0xd'),auth[_0xbf66('0xb')](),controller['show']);router[_0xbf66('0xa')](_0xbf66('0xe'),auth['isAuthenticated'](),controller[_0xbf66('0xf')]);router[_0xbf66('0x10')]('/',auth[_0xbf66('0xb')](),controller['create']);router['post'](_0xbf66('0xe'),auth['isAuthenticated'](),controller['addContacts']);router[_0xbf66('0x11')](_0xbf66('0xd'),auth[_0xbf66('0xb')](),controller[_0xbf66('0x12')]);router[_0xbf66('0x13')]('/:id',auth[_0xbf66('0xb')](),controller['destroy']);module[_0xbf66('0x14')]=router;
\ No newline at end of file
+var _0xa285=['Router','fs-extra','../../components/auth/service','../../config/environment','./cmCompany.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/contacts','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x5ac0f0,_0xee4d98){var _0x4aceec=function(_0x3a9044){while(--_0x3a9044){_0x5ac0f0['push'](_0x5ac0f0['shift']());}};_0x4aceec(++_0xee4d98);}(_0xa285,0xf9));var _0x5a28=function(_0x547dea,_0x1e62df){_0x547dea=_0x547dea-0x0;var _0x2cd53c=_0xa285[_0x547dea];return _0x2cd53c;};'use strict';var multer=require(_0x5a28('0x0'));var util=require('util');var path=require(_0x5a28('0x1'));var timeout=require(_0x5a28('0x2'));var express=require(_0x5a28('0x3'));var router=express[_0x5a28('0x4')]();var fs_extra=require(_0x5a28('0x5'));var auth=require(_0x5a28('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5a28('0x7'));var controller=require(_0x5a28('0x8'));router['get']('/',auth[_0x5a28('0x9')](),controller['index']);router[_0x5a28('0xa')](_0x5a28('0xb'),auth[_0x5a28('0x9')](),controller[_0x5a28('0xc')]);router['get'](_0x5a28('0xd'),auth[_0x5a28('0x9')](),controller[_0x5a28('0xe')]);router['get'](_0x5a28('0xf'),auth['isAuthenticated'](),controller['getContacts']);router[_0x5a28('0x10')]('/',auth['isAuthenticated'](),controller[_0x5a28('0x11')]);router[_0x5a28('0x10')](_0x5a28('0xf'),auth['isAuthenticated'](),controller['addContacts']);router[_0x5a28('0x12')](_0x5a28('0xd'),auth[_0x5a28('0x9')](),controller[_0x5a28('0x13')]);router[_0x5a28('0x14')]('/:id',auth[_0x5a28('0x9')](),controller[_0x5a28('0x15')]);module[_0x5a28('0x16')]=router;
\ No newline at end of file
index 722dfe1..9555906 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb477=['STRING','INTEGER','DATE','NOW','lodash','sequelize','exports'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xb477,0x13f));var _0x7b47=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xb477[_0xdea41a];return _0x15d0d8;};'use strict';var _=require(_0x7b47('0x0'));var Sequelize=require(_0x7b47('0x1'));module[_0x7b47('0x2')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize[_0x7b47('0x3')]},'street':{'type':Sequelize[_0x7b47('0x3')]},'postalCode':{'type':Sequelize[_0x7b47('0x3')]},'city':{'type':Sequelize[_0x7b47('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0x7b47('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x7b47('0x3')]},'mobile':{'type':Sequelize[_0x7b47('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0x7b47('0x3')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0x7b47('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x7b47('0x3')]},'teams':{'type':Sequelize[_0x7b47('0x3')]},'viber':{'type':Sequelize[_0x7b47('0x3')]},'line':{'type':Sequelize[_0x7b47('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x7b47('0x3')]},'UserId':{'type':Sequelize[_0x7b47('0x4')]},'priority':{'type':Sequelize[_0x7b47('0x4')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x7b47('0x5')],'defaultValue':Sequelize[_0x7b47('0x6')]}};
\ No newline at end of file
+var _0x5c7d=['NOW','lodash','sequelize','exports','STRING','TEXT','DATE'];(function(_0x1f1a63,_0x3b5924){var _0x21492a=function(_0x56c789){while(--_0x56c789){_0x1f1a63['push'](_0x1f1a63['shift']());}};_0x21492a(++_0x3b5924);}(_0x5c7d,0x12e));var _0xd5c7=function(_0x29e082,_0xb38f71){_0x29e082=_0x29e082-0x0;var _0x2e6cbb=_0x5c7d[_0x29e082];return _0x2e6cbb;};'use strict';var _=require(_0xd5c7('0x0'));var Sequelize=require(_0xd5c7('0x1'));module[_0xd5c7('0x2')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xd5c7('0x3')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xd5c7('0x3')]},'country':{'type':Sequelize[_0xd5c7('0x3')]},'dateOfBirth':{'type':Sequelize[_0xd5c7('0x3')]},'description':{'type':Sequelize[_0xd5c7('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xd5c7('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xd5c7('0x3')]},'url':{'type':Sequelize[_0xd5c7('0x3')]},'facebook':{'type':Sequelize[_0xd5c7('0x3')]},'fb_data':{'type':Sequelize[_0xd5c7('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0xd5c7('0x3')]},'teams':{'type':Sequelize[_0xd5c7('0x3')]},'viber':{'type':Sequelize[_0xd5c7('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xd5c7('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xd5c7('0x5')],'defaultValue':Sequelize[_0xd5c7('0x6')]}};
\ No newline at end of file
index 6eb1bbf..4814fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b06=['message','start\x20child\x20process\x20correctly!','pid','exit','error\x20child\x20process','getJourney','mail','chat','fax','whatsapp','voice','-createdAt','channel','toLowerCase','Invalid\x20channel','range','isValid','uniqueid','source','destination','callerid','starttime','endtime','duration','note','createdAt','userSecondDisposition','userThirdDisposition','UserId','fullname','startCase','Website','Account','closed','disposition','secondDisposition','thirdDisposition','key','Owner','browserName','customerIp','deviceModel','osName','ratingMessage','ratingType','referer','substatus','openchannel','Interaction','flatten','moment','bluebird','util','path','lodash','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./cmContact.socket','register','status','json','offset','limit','count','set','Content-Range','update','then','destroy','sendStatus','error','name','send','CmContact','describe','keys','length','startsWith','cf_','CmCustomField','findOne','trimStart','all','fieldType','model','query','filters','intersection','attributes','fields','order','sort','where','pick','select','field','color','from','cm_contacts','left_join','tools_tags','expr','search','parseSearch','sqlOperator','conditions','Tag','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','datetime','castTo','DATE','type','text','start','value','end','hasOwnProperty','isNil','push','isEmpty','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','filter','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','having','resolve','role','agent','some','user','c.ListId\x20IS\x20NULL','sequelize','toString','keyBy','c.firstName','c.lastName','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','Tags','TagIds','rows','catch','find','params','tags','columnName','displayName','analytics','findAll','alias','custom','values','merge','body','get','mergeWith','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','info','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','bulkCreate','each','duplicates','$or','ListId','show','$and','format','omit','pickBy','table','phone','rawAttributes','options','nolimit','setTags','ids','getHoppers','ContactId','includeAll','include','CmHopperHistory','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','binding_keys','Incorrect\x20binding\x20parameters\x20passed!','root','server/files/tmp','file','chmodSync','0777','child_process','fork','join','CompanyId','socket_timestamp','File\x20uploaded\x20correctly!','upload','createReadStream','parse','meta','import','binding','../../components/import/cm/csv2','stringify'];(function(_0x2dee81,_0x58c3df){var _0xa3a214=function(_0x459326){while(--_0x459326){_0x2dee81['push'](_0x2dee81['shift']());}};_0xa3a214(++_0x58c3df);}(_0x6b06,0x143));var _0x66b0=function(_0x34bea8,_0x32c4d5){_0x34bea8=_0x34bea8-0x0;var _0x5b022e=_0x6b06[_0x34bea8];return _0x5b022e;};'use strict';var moment=require(_0x66b0('0x0'));var BPromise=require(_0x66b0('0x1'));var util=require(_0x66b0('0x2'));var path=require(_0x66b0('0x3'));var fs=require('fs');var _=require(_0x66b0('0x4'));var squel=require('squel');var Papa=require(_0x66b0('0x5'));var Redis=require(_0x66b0('0x6'));var qs=require(_0x66b0('0x7'));var as=require(_0x66b0('0x8'));var logger=require(_0x66b0('0x9'))(_0x66b0('0xa'));var config=require('../../config/environment');var db=require(_0x66b0('0xb'))['db'];config[_0x66b0('0xc')]=_[_0x66b0('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x66b0('0xe'))(new Redis(config['redis']));require(_0x66b0('0xf'))[_0x66b0('0x10')](socket);function respondWithResult(_0x20a638,_0x3dcf14){_0x3dcf14=_0x3dcf14||0xc8;return function(_0x3b719c){if(_0x3b719c){return _0x20a638[_0x66b0('0x11')](_0x3dcf14)[_0x66b0('0x12')](_0x3b719c);}};}function respondWithFilteredResult(_0x5c96a7,_0xfb671b){return function(_0x13a504){if(_0x13a504){var _0x2f124f=typeof _0xfb671b[_0x66b0('0x13')]==='undefined'&&typeof _0xfb671b[_0x66b0('0x14')]==='undefined';var _0x22c34f=_0x13a504[_0x66b0('0x15')];var _0x90253d=_0x2f124f?0x0:_0xfb671b['offset'];var _0x1cae5d=_0x2f124f?_0x13a504[_0x66b0('0x15')]:_0xfb671b[_0x66b0('0x13')]+_0xfb671b[_0x66b0('0x14')];var _0x6c8222;if(_0x1cae5d>=_0x22c34f){_0x1cae5d=_0x22c34f;_0x6c8222=0xc8;}else{_0x6c8222=0xce;}_0x5c96a7['status'](_0x6c8222);return _0x5c96a7[_0x66b0('0x16')](_0x66b0('0x17'),_0x90253d+'-'+_0x1cae5d+'/'+_0x22c34f)['json'](_0x13a504);}return null;};}function saveUpdates(_0x53646a){return function(_0x5efb0b){if(_0x5efb0b){return _0x5efb0b[_0x66b0('0x18')](_0x53646a)[_0x66b0('0x19')](function(_0x5d84cb){return _0x5d84cb;});}return null;};}function removeEntity(_0x229212){return function(_0x45ba01){if(_0x45ba01){return _0x45ba01[_0x66b0('0x1a')]()[_0x66b0('0x19')](function(){_0x229212[_0x66b0('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x179cf6){return function(_0x13107b){if(!_0x13107b){_0x179cf6[_0x66b0('0x1b')](0x194);}return _0x13107b;};}function handleError(_0x3db20b,_0x54ba99){_0x54ba99=_0x54ba99||0x1f4;return function(_0x47d3a7){logger[_0x66b0('0x1c')](_0x47d3a7['stack']);if(_0x47d3a7[_0x66b0('0x1d')]){delete _0x47d3a7[_0x66b0('0x1d')];}_0x3db20b[_0x66b0('0x11')](_0x54ba99)[_0x66b0('0x1e')](_0x47d3a7);};}exports['index']=function(_0x2754bd,_0x3935b8){var _0x4f5928={},_0x2996f1={},_0x213775={'count':0x0,'rows':[]};return db[_0x66b0('0x1f')][_0x66b0('0x20')]()[_0x66b0('0x19')](function(_0x19b959){var _0x1f276e=[];for(var _0x4e5ddf=0x0;_0x4e5ddf<Object[_0x66b0('0x21')](_0x19b959)[_0x66b0('0x22')];_0x4e5ddf++){var _0x18b496=Object[_0x66b0('0x21')](_0x19b959)[_0x4e5ddf];if(_[_0x66b0('0x23')](_0x18b496,_0x66b0('0x24'))){_0x1f276e['push'](db[_0x66b0('0x25')][_0x66b0('0x26')]({'where':{'id':_[_0x66b0('0x27')](_0x18b496,_0x66b0('0x24'))},'raw':!![]}));}}return BPromise[_0x66b0('0x28')](_0x1f276e)[_0x66b0('0x19')](function(_0x45fdba){for(var _0x313c12=0x0;_0x313c12<_0x45fdba[_0x66b0('0x22')];_0x313c12++){if(_0x45fdba[_0x313c12]){var _0x15c8ac=_0x66b0('0x24')+_0x45fdba[_0x313c12]['id'];var _0x3edab2=_0x19b959[_0x15c8ac];_0x3edab2[_0x66b0('0x29')]=_0x45fdba[_0x313c12]['type'];}}return _0x19b959;});})[_0x66b0('0x19')](function(_0x4f3fd2){_0x2996f1[_0x66b0('0x2a')]=_['keys'](_0x4f3fd2);_0x2996f1[_0x66b0('0x2b')]=_[_0x66b0('0x21')](_0x2754bd[_0x66b0('0x2b')]);_0x2996f1[_0x66b0('0x2c')]=_[_0x66b0('0x2d')](_0x2996f1['model'],_0x2996f1[_0x66b0('0x2b')]);_0x4f5928[_0x66b0('0x2e')]=_[_0x66b0('0x2d')](_0x2996f1[_0x66b0('0x2a')],qs[_0x66b0('0x2f')](_0x2754bd[_0x66b0('0x2b')]['fields']));_0x4f5928[_0x66b0('0x2e')]=_0x4f5928[_0x66b0('0x2e')][_0x66b0('0x22')]?_0x4f5928[_0x66b0('0x2e')]:_0x2996f1[_0x66b0('0x2a')];if(!_0x2754bd[_0x66b0('0x2b')]['hasOwnProperty']('nolimit')){_0x4f5928[_0x66b0('0x14')]=qs[_0x66b0('0x14')](_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x14')]);_0x4f5928['offset']=qs[_0x66b0('0x13')](_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x13')]);}_0x4f5928[_0x66b0('0x30')]=qs[_0x66b0('0x31')](_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x31')]);_0x4f5928[_0x66b0('0x32')]=qs[_0x66b0('0x2c')](_[_0x66b0('0x33')](_0x2754bd[_0x66b0('0x2b')],_0x2996f1['filters']),_0x4f3fd2);var _0x1ee89a=[];var _0x383c24=squel[_0x66b0('0x34')]()[_0x66b0('0x35')]('id')[_0x66b0('0x35')](_0x66b0('0x1d'))[_0x66b0('0x35')](_0x66b0('0x36'))[_0x66b0('0x37')]('tools_tags');var _0x279f4d=squel[_0x66b0('0x34')]()['from'](_0x66b0('0x38'),'c')[_0x66b0('0x39')]('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20c.id')[_0x66b0('0x39')]('cm_contact_has_tags','ct','ct.CmContactId\x20=\x20c.id')[_0x66b0('0x39')](_0x66b0('0x3a'),'t','t.id\x20=\x20ct.TagId')['where']('c.deletedAt\x20IS\x20NULL');var _0xd68887=squel['expr']();var _0x23a181=[];var _0x1ddee7=squel[_0x66b0('0x3b')]();var _0x179245;if(_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x3c')]){_0x179245=as[_0x66b0('0x3d')](_0x2754bd['query']['search']);var _0x14b5cc=_0x179245[_0x66b0('0x3e')];for(var _0x37697d=0x0;_0x37697d<_0x179245[_0x66b0('0x3f')][_0x66b0('0x22')];_0x37697d++){var _0x6abae=_0x179245[_0x66b0('0x3f')][_0x37697d];var _0x594275='c';var _0x2d0b97=_(_0x4f3fd2)[_0x66b0('0x21')]()['find'](function(_0x332c84){return _0x332c84===_0x6abae[_0x66b0('0x35')];});if(_0x2d0b97)_0x2d0b97=_0x4f3fd2[_0x6abae[_0x66b0('0x35')]];if(!_0x2d0b97){if(_0x6abae['field']===_0x66b0('0x40')){var _0x1194b4=_0x6abae['value']['split'](',')[_0x66b0('0x41')](function(_0x5e644f){return Number(_0x5e644f);});_0x1194b4[_0x66b0('0x42')](function(_0x4aeb1a){_0x1ddee7['or'](_0x66b0('0x43'),'%,'+_0x4aeb1a+',%');});_0x23a181=_[_0x66b0('0x44')](_0x23a181,_0x1194b4);}else if(_0x6abae[_0x66b0('0x35')]===_0x66b0('0x45')){_0xd68887[_0x66b0('0x46')]('uc.UserId\x20=\x20?',_0x6abae['value']);}}else{if(_0x6abae[_0x66b0('0x35')]==='dateOfBirth'||_0x2d0b97['fieldType']===_0x66b0('0x47'))_0x6abae[_0x66b0('0x48')]=_0x66b0('0x49');var _0x55d2ea=as['buildExpression'](_0x594275,_0x2d0b97[_0x66b0('0x4a')],_0x6abae);_0xd68887[_0x14b5cc](_0x55d2ea[_0x66b0('0x4b')],_0x55d2ea['value'][_0x66b0('0x4c')],_0x55d2ea[_0x66b0('0x4d')][_0x66b0('0x4e')]);}}}else{var _0xd41916=_(Object[_0x66b0('0x21')](_0x2754bd['query']))['map'](function(_0x176fe1){return _0x4f3fd2[_0x66b0('0x4f')](_0x176fe1)?_0x176fe1:undefined;})['filter'](function(_0x59534b){return!_[_0x66b0('0x50')](_0x59534b);})[_0x66b0('0x4d')]();if(_0x2754bd[_0x66b0('0x2b')]['Contact'])_0xd41916[_0x66b0('0x51')]('Contact');if(!_[_0x66b0('0x52')](_0xd41916)){_0xd41916[_0x66b0('0x42')](function(_0x5209f6){if(_0x5209f6==='ListId'){_0x279f4d[_0x66b0('0x32')](_0x66b0('0x53'),[]['concat'](_0x2754bd['query'][_0x5209f6]));}else if(_0x5209f6==='Contact'){var _0x5163c9='%'+_0x2754bd['query'][_0x5209f6]+'%';_0x279f4d[_0x66b0('0x32')](_0x66b0('0x54'),_0x5163c9);}else{_0x279f4d[_0x66b0('0x32')]('c.'+_0x5209f6+_0x66b0('0x55'),_0x2754bd[_0x66b0('0x2b')][_0x5209f6]);}});}if(_0x2754bd['query'][_0x66b0('0x56')]){_0x23a181=_[_0x66b0('0x57')](_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x56')])?_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x56')]:new Array(_0x2754bd['query']['tag']);_0x23a181[_0x66b0('0x42')](function(_0xbcf17f){_0x1ddee7['or'](_0x66b0('0x43'),'%,'+_0xbcf17f+',%');});}if(_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x58')]){var _0x5b8625=_0x2754bd[_0x66b0('0x2b')][_0x66b0('0x58')][_0x66b0('0x59')]('\x5c','\x5c\x5c')[_0x66b0('0x59')](/'/g,'\x27\x27');if(_0x5b8625[_0x66b0('0x5a')]('\x20')[_0x66b0('0x22')]>0x1){_0xd68887['or'](_0x66b0('0x5b'),qs[_0x66b0('0x5c')](_0x5b8625),null);}else{if(qs[_0x66b0('0x5d')](_0x5b8625)){_0xd68887['or']('c.id\x20LIKE\x20?',_0x5b8625+'%');_0xd68887['or'](_0x66b0('0x5e'),_0x5b8625+'%');_0xd68887['or'](_0x66b0('0x5f'),_0x5b8625+'%');_0xd68887['or'](_0x66b0('0x60'),_0x5b8625+'%');}else if(qs['isEmail'](_0x5b8625)){_0xd68887['or'](_0x66b0('0x61'),_0x5b8625+'%');}else{_0xd68887['or'](_0x66b0('0x62'),'%'+_0x5b8625+'%');_0xd68887['or'](_0x66b0('0x63'),'%'+_0x5b8625+'%');_0xd68887['or'](_0x66b0('0x61'),'%'+_0x5b8625+'%');}}}}_0x279f4d['where'](_0xd68887);_0x279f4d[_0x66b0('0x64')](_0x66b0('0x65'));var _0x342007={'type':db[_0x66b0('0x66')][_0x66b0('0x67')][_0x66b0('0x68')],'raw':!![]};var _0x56cc66=_0x279f4d[_0x66b0('0x69')]()[_0x66b0('0x35')]('c.id');if(_0x4f5928[_0x66b0('0x30')]){_0x4f5928[_0x66b0('0x30')][_0x66b0('0x42')](function(_0x147436){_0x279f4d['order']('c.'+_0x147436[0x0],_0x147436[0x1]===_0x66b0('0x6a')?![]:!![]);});}if(!_['isEmpty'](_0x23a181)){_0x279f4d[_0x66b0('0x6b')](_0x1ddee7);_0x56cc66[_0x66b0('0x32')]('t.id\x20IN\x20?',_0x23a181);}BPromise[_0x66b0('0x6c')]()[_0x66b0('0x19')](function(){if(!_0x179245)return;if(_0x2754bd['user'][_0x66b0('0x6d')]!==_0x66b0('0x6e'))return;if(!_[_0x66b0('0x6f')](_0x179245[_0x66b0('0x3f')],['field','User'])){return _0x2754bd[_0x66b0('0x70')]['getLists']({'attributes':['id'],'raw':!![]})[_0x66b0('0x19')](function(_0x2c9af9){if(_[_0x66b0('0x52')](_0x2c9af9)){_0x56cc66[_0x66b0('0x32')](_0x66b0('0x71'));_0x279f4d[_0x66b0('0x32')](_0x66b0('0x71'));}else{_0x56cc66[_0x66b0('0x32')](_0x66b0('0x53'),_[_0x66b0('0x41')](_0x2c9af9,'id'));_0x279f4d[_0x66b0('0x32')](_0x66b0('0x53'),_['map'](_0x2c9af9,'id'));}});}})[_0x66b0('0x19')](function(){if(_0x2754bd[_0x66b0('0x70')]['role']===_0x66b0('0x6e')&&!_0x179245&&!_0x2754bd[_0x66b0('0x2b')]['ListId'])return[];return db['sequelize'][_0x66b0('0x2b')](_0x56cc66['toString'](),_0x342007);})[_0x66b0('0x19')](function(_0x5089e6){_0x213775[_0x66b0('0x15')]=_0x5089e6[_0x66b0('0x22')];if(_0x213775[_0x66b0('0x15')]===0x0)return[];return db[_0x66b0('0x72')][_0x66b0('0x2b')](_0x383c24[_0x66b0('0x73')](),_0x342007)['then'](function(_0x31078d){_0x1ee89a=_[_0x66b0('0x74')](_0x31078d,'id');_0x342007=_['merge'](_0x342007,{'model':db[_0x66b0('0x1f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2754bd['query'][_0x66b0('0x2f')]){_0x4f5928[_0x66b0('0x2e')][_0x66b0('0x42')](function(_0x43f435){_0x279f4d[_0x66b0('0x35')]('c.'+_0x43f435);});}else{_0x279f4d[_0x66b0('0x35')](_0x66b0('0x65'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x75'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x76'));_0x279f4d[_0x66b0('0x35')]('c.phone');_0x279f4d[_0x66b0('0x35')](_0x66b0('0x77'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x78'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x79'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x7a'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x7b'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x7c'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x7d'));_0x279f4d[_0x66b0('0x35')](_0x66b0('0x7e'),'TagIds');}if(_0x4f5928[_0x66b0('0x14')])_0x279f4d['limit'](_0x4f5928[_0x66b0('0x14')]);if(_0x4f5928['offset'])_0x279f4d[_0x66b0('0x13')](_0x4f5928['offset']);return db[_0x66b0('0x72')][_0x66b0('0x2b')](_0x279f4d[_0x66b0('0x73')](),_0x342007);});})[_0x66b0('0x19')](function(_0x4bf377){_0x4bf377[_0x66b0('0x42')](function(_0x3111a8){if(_0x3111a8['TagIds']){_0x3111a8[_0x66b0('0x7f')]=[];_0x3111a8[_0x66b0('0x80')]['split'](',')['forEach'](function(_0x2d6d11){_0x3111a8[_0x66b0('0x7f')]['push'](_0x1ee89a[_0x2d6d11]);});}delete _0x3111a8['TagIds'];});_0x213775[_0x66b0('0x81')]=_0x4bf377;return _0x213775;})[_0x66b0('0x19')](respondWithFilteredResult(_0x3935b8,_0x4f5928));})[_0x66b0('0x82')](handleError(_0x3935b8,null));};exports[_0x66b0('0x1a')]=function(_0x28a1a4,_0x42c4c5){return db[_0x66b0('0x1f')][_0x66b0('0x83')]({'where':{'id':_0x28a1a4[_0x66b0('0x84')]['id']}})[_0x66b0('0x19')](handleEntityNotFound(_0x42c4c5,null))[_0x66b0('0x19')](removeEntity(_0x42c4c5,null))[_0x66b0('0x82')](handleError(_0x42c4c5,null));};exports[_0x66b0('0x20')]=function(_0x287a07,_0x45c972){return db[_0x66b0('0x1f')][_0x66b0('0x20')]()[_0x66b0('0x19')](function(_0x548e06){delete _0x548e06[_0x66b0('0x85')];for(var _0x14c270=0x0;_0x14c270<Object['keys'](_0x548e06)['length'];_0x14c270++){var _0x117d00=Object['keys'](_0x548e06)[_0x14c270];if(!_[_0x66b0('0x23')](_0x117d00,_0x66b0('0x24'))){_0x548e06[_0x117d00][_0x66b0('0x86')]=_0x117d00;_0x548e06[_0x117d00][_0x66b0('0x87')]=_0x117d00;}}return _0x548e06;})[_0x66b0('0x19')](function(_0x5336c9){var _0x333daa={'where':Boolean(_0x287a07[_0x66b0('0x2b')][_0x66b0('0x88')])===!![]?undefined:{'$or':[{'ListId':_0x287a07['query']['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField'][_0x66b0('0x89')](_0x333daa)[_0x66b0('0x19')](function(_0x4854ca){for(var _0x428b4f=0x0;_0x428b4f<_0x4854ca['length'];_0x428b4f++){var _0x4472d1='cf_'+_0x4854ca[_0x428b4f]['id'];_0x5336c9[_0x4472d1][_0x66b0('0x86')]=_0x4472d1;_0x5336c9[_0x4472d1][_0x66b0('0x87')]=_0x4854ca[_0x428b4f][_0x66b0('0x8a')];_0x5336c9[_0x4472d1][_0x66b0('0x8b')]={'type':_0x4854ca[_0x428b4f][_0x66b0('0x4a')],'values':_0x4854ca[_0x428b4f][_0x66b0('0x8c')]};}Object[_0x66b0('0x21')](_0x5336c9)[_0x66b0('0x42')](function(_0x4a349f){if(!_0x5336c9[_0x4a349f][_0x66b0('0x4f')]('columnName')){delete _0x5336c9[_0x4a349f];}});return _0x5336c9;});})[_0x66b0('0x19')](respondWithResult(_0x45c972,null))[_0x66b0('0x82')](handleError(_0x45c972,null));};exports[_0x66b0('0x8d')]=function(_0x3dae45,_0x27fc6f){var _0x498c6a;var _0x489ed7;var _0x21a0d8;if(_0x3dae45['body']['id']){delete _0x3dae45[_0x66b0('0x8e')]['id'];}return db[_0x66b0('0x1f')]['findAll']({'where':{'id':[_0x3dae45['body']['to'],_0x3dae45[_0x66b0('0x8e')][_0x66b0('0x37')]]}})[_0x66b0('0x19')](function(_0x4d828c){if(_0x4d828c){if(_0x4d828c[_0x66b0('0x22')]!==0x2){return null;}_0x4d828c[0x0]=_0x4d828c[0x0]['get']({'plain':!![]});_0x4d828c[0x1]=_0x4d828c[0x1][_0x66b0('0x8f')]({'plain':!![]});delete _0x4d828c[0x0]['id'];delete _0x4d828c[0x1]['id'];return _[_0x66b0('0x90')](_0x4d828c[0x0],_0x4d828c[0x1],function(_0x8c0e7f,_0x450b71){if(Array[_0x66b0('0x57')](_0x450b71)&&!_0x450b71[_0x66b0('0x22')]){return _0x8c0e7f;}else if(!_0x450b71){return _0x8c0e7f;}});}})[_0x66b0('0x19')](handleEntityNotFound(_0x27fc6f,null))['then'](function(_0x3914c7){if(_0x3914c7){if(_0x3914c7[_0x66b0('0x85')]&&_[_0x66b0('0x57')](_0x3914c7[_0x66b0('0x85')])){_0x3914c7[_0x66b0('0x85')]=_0x3914c7[_0x66b0('0x85')]['join']();}logger['info'](_0x66b0('0x91'),_0x3dae45['body']['to'],_0x3dae45[_0x66b0('0x8e')][_0x66b0('0x37')]);return db[_0x66b0('0x92')][_0x66b0('0x1a')]({'where':{'ContactId':[_0x3dae45[_0x66b0('0x8e')]['to'],_0x3dae45[_0x66b0('0x8e')][_0x66b0('0x37')]]}})[_0x66b0('0x19')](function(_0x543293){logger['info'](_0x66b0('0x93'),_0x543293);return db[_0x66b0('0x94')]['destroy']({'where':{'ContactId':[_0x3dae45[_0x66b0('0x8e')]['to'],_0x3dae45[_0x66b0('0x8e')][_0x66b0('0x37')]]}})['then'](function(_0x58ef3b){logger[_0x66b0('0x95')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x58ef3b);return db[_0x66b0('0x1f')][_0x66b0('0x96')](_0x3914c7);});});}})[_0x66b0('0x19')](function(_0x57c26d){if(_0x57c26d){_0x498c6a=_0x57c26d;_0x489ed7={'ContactId':_0x498c6a['id']};_0x21a0d8={'where':{'ContactId':[_0x3dae45[_0x66b0('0x8e')]['to'],_0x3dae45[_0x66b0('0x8e')][_0x66b0('0x37')]]}};return db[_0x66b0('0x97')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x98')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x99')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x9a')]['update'](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db['MailMessage'][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x9a')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x9b')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x9c')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})['then'](function(){if(_0x498c6a){return db[_0x66b0('0x9d')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x9e')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x9f')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xa0')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})['then'](function(){if(_0x498c6a){return db[_0x66b0('0xa1')]['update'](_0x489ed7,_0x21a0d8);}})['then'](function(){if(_0x498c6a){return db[_0x66b0('0xa2')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db['CmHopperHistory'][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})['then'](function(){if(_0x498c6a){return db['ReportAgentPreview'][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})['then'](function(){if(_0x498c6a){return db[_0x66b0('0xa3')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xa4')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})['then'](function(){if(_0x498c6a){return db[_0x66b0('0xa5')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xa6')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xa7')]['update'](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xa8')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xa9')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})['then'](function(){if(_0x498c6a){return db[_0x66b0('0xaa')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xab')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0xac')][_0x66b0('0x18')](_0x489ed7,_0x21a0d8);}})[_0x66b0('0x19')](function(){if(_0x498c6a){return db[_0x66b0('0x1f')][_0x66b0('0x1a')]({'where':{'id':[_0x3dae45[_0x66b0('0x8e')]['to'],_0x3dae45[_0x66b0('0x8e')][_0x66b0('0x37')]]}});}})[_0x66b0('0x19')](function(){if(_0x498c6a){return _0x498c6a;}})['then'](respondWithResult(_0x27fc6f,null))['catch'](handleError(_0x27fc6f,null));};exports[_0x66b0('0x96')]=function(_0x4dd14a,_0x5f47dc){return db['CmContact'][_0x66b0('0x20')]()['then'](function(_0xdc87b3){if(_0x4dd14a['body'][_0x66b0('0x85')]&&_[_0x66b0('0x57')](_0x4dd14a[_0x66b0('0x8e')][_0x66b0('0x85')])){if(_0x4dd14a[_0x66b0('0x8e')][_0x66b0('0x85')][_0x66b0('0x22')]){_0x4dd14a['body'][_0x66b0('0x85')]=_0x4dd14a['body'][_0x66b0('0x85')]['join'](';')+';';}else{_0x4dd14a['body'][_0x66b0('0x85')]=null;}}else{_0x4dd14a['body'][_0x66b0('0x85')]=null;}return db[_0x66b0('0x1f')][_0x66b0('0x96')](_0x4dd14a[_0x66b0('0x8e')],{'fields':_[_0x66b0('0x21')](_0xdc87b3),'raw':!![]});})['then'](respondWithResult(_0x5f47dc,0xc9))[_0x66b0('0x82')](handleError(_0x5f47dc,null));};exports[_0x66b0('0xad')]=function(_0x4f3c06,_0x4cbd23){var _0x701734=0x0;var _0x5b3895=0x0;var _0x340b89=0x0;return db[_0x66b0('0x1f')][_0x66b0('0x20')]()[_0x66b0('0x19')](function(_0xfa29f9){return BPromise[_0x66b0('0xae')](_0x4f3c06['body'],function(_0x3f23ae){var _0xc0e67e={'where':{'$or':[]},'defaults':_0x3f23ae,'fields':_[_0x66b0('0x21')](_0xfa29f9),'raw':!![]};if(_0x3f23ae['duplicates']){for(var _0xd7957b=0x0;_0xd7957b<_0x3f23ae[_0x66b0('0xaf')][_0x66b0('0x22')];_0xd7957b++){var _0x1c96a9={};_0x1c96a9[_0x3f23ae['duplicates'][_0xd7957b]]=_0x3f23ae[_0x3f23ae[_0x66b0('0xaf')][_0xd7957b]];_0xc0e67e[_0x66b0('0x32')][_0x66b0('0xb0')][_0x66b0('0x51')](_0x1c96a9);}_0xc0e67e['where'][_0x66b0('0xb1')]=_0x3f23ae[_0x66b0('0xb1')];}return db['CmContact']['findOrCreate'](_0xc0e67e)['spread'](function(_0x24542b,_0x1da95d){if(_0x1da95d){_0x701734++;}else{_0x340b89++;}})['catch'](function(){_0x5b3895++;});});})[_0x66b0('0x19')](function(_0xe36ace){if(_0xe36ace){return{'success':_0x701734,'failure':_0x5b3895,'duplicates':_0x340b89};}})['then'](respondWithResult(_0x4cbd23,0xc9))['catch'](handleError(_0x4cbd23,null));};exports[_0x66b0('0xb2')]=function(_0x3aa722,_0x29a8f0){var _0x4e8f85;return db[_0x66b0('0x1f')][_0x66b0('0x20')]()[_0x66b0('0x19')](function(_0x228a7f){return db['CmContact']['find']({'where':{'id':_0x3aa722[_0x66b0('0x84')]['id']},'include':[{'model':db['Tag'],'as':_0x66b0('0x7f'),'attributes':['id','name','color'],'required':_0x3aa722['query'][_0x66b0('0x56')]?!![]:![]}],'attributes':_['keys'](_0x228a7f)});})[_0x66b0('0x19')](function(_0x1ed766){if(!_[_0x66b0('0x50')](_0x1ed766)){_0x4e8f85=_0x1ed766['get']({'plain':!![]});var _0x216da2={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1ed766&&_0x1ed766['ListId']){if(_0x1ed766['ListId']){_0x216da2['where'][_0x66b0('0xb3')][_0x66b0('0x51')]({'ListId':{'$ne':_0x1ed766['ListId']}});}}return db[_0x66b0('0x25')][_0x66b0('0x89')](_0x216da2);}})['then'](function(_0xa7370f){if(!_[_0x66b0('0x50')](_0xa7370f)){return _['omit'](_0x4e8f85,_[_0x66b0('0x41')](_0xa7370f,function(_0x1f6675){return util[_0x66b0('0xb4')]('cf_%d',_0x1f6675['id']);}));}})[_0x66b0('0x19')](handleEntityNotFound(_0x29a8f0,null))[_0x66b0('0x19')](respondWithResult(_0x29a8f0,null))[_0x66b0('0x82')](handleError(_0x29a8f0,null));};exports[_0x66b0('0x18')]=function(_0x34b09d,_0x1c60ce){var _0x40f8d1;if(_0x34b09d['body']['id']){delete _0x34b09d[_0x66b0('0x8e')]['id'];}return db[_0x66b0('0x1f')][_0x66b0('0x83')]({'where':{'id':_0x34b09d[_0x66b0('0x84')]['id']}})[_0x66b0('0x19')](handleEntityNotFound(_0x1c60ce,null))[_0x66b0('0x19')](saveUpdates(_0x34b09d['body'],null))['then'](function(_0x51f905){_0x40f8d1=_0x51f905;var _0x58aa81={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x51f905&&_0x51f905[_0x66b0('0xb1')]){if(_0x51f905[_0x66b0('0xb1')]){_0x58aa81['where'][_0x66b0('0xb3')][_0x66b0('0x51')]({'ListId':{'$ne':_0x51f905[_0x66b0('0xb1')]}});}}return db[_0x66b0('0x25')][_0x66b0('0x89')](_0x58aa81);})[_0x66b0('0x19')](function(_0x614c3c){if(_0x614c3c){return _[_0x66b0('0xb5')](_[_0x66b0('0xb6')](_0x34b09d['body'],function(_0x3f682f,_0x2a3aed){return _[_0x66b0('0x23')](_0x2a3aed,_0x66b0('0x24'));}),_['map'](_0x614c3c,function(_0x59bc4b){return util['format']('cf_%d',_0x59bc4b['id']);}));}})[_0x66b0('0x19')](function(_0x29f03a){if(_0x29f03a&&!_[_0x66b0('0x52')](_0x29f03a)){var _0x2fc478=squel['update']()[_0x66b0('0xb7')]('cm_contacts')['setFields'](_0x29f03a)[_0x66b0('0x32')]('id\x20=\x20?',_0x34b09d[_0x66b0('0x84')]['id'])['toParam']();return db[_0x66b0('0x72')]['query'](_0x2fc478['text'],{'replacements':_0x2fc478[_0x66b0('0x8c')]});}})['then'](function(){if(_0x34b09d['body'][_0x66b0('0xb8')]&&_0x40f8d1){return db[_0x66b0('0x92')]['update']({'phone':_0x34b09d['body'][_0x66b0('0xb8')]},{'where':{'ContactId':_0x40f8d1['id']}});}})['then'](function(){return _0x40f8d1;})[_0x66b0('0x19')](respondWithResult(_0x1c60ce,null))[_0x66b0('0x82')](handleError(_0x1c60ce,null));};exports['getTags']=function(_0x5720bc,_0x34d07d){var _0x2c9a47={};var _0x27d0e7={};var _0x4e7ffb;var _0x4f8a0c;return db[_0x66b0('0x1f')][_0x66b0('0x26')]({'where':{'id':_0x5720bc[_0x66b0('0x84')]['id']}})[_0x66b0('0x19')](handleEntityNotFound(_0x34d07d,null))[_0x66b0('0x19')](function(_0x5a8347){if(_0x5a8347){_0x4e7ffb=_0x5a8347;_0x27d0e7[_0x66b0('0x2a')]=_['keys'](db[_0x66b0('0x40')][_0x66b0('0xb9')]);_0x27d0e7[_0x66b0('0x2b')]=_[_0x66b0('0x21')](_0x5720bc[_0x66b0('0x2b')]);_0x27d0e7[_0x66b0('0x2c')]=_['intersection'](_0x27d0e7['model'],_0x27d0e7[_0x66b0('0x2b')]);_0x2c9a47[_0x66b0('0x2e')]=_[_0x66b0('0x2d')](_0x27d0e7[_0x66b0('0x2a')],qs[_0x66b0('0x2f')](_0x5720bc[_0x66b0('0x2b')][_0x66b0('0x2f')]));_0x2c9a47[_0x66b0('0x2e')]=_0x2c9a47[_0x66b0('0x2e')]['length']?_0x2c9a47[_0x66b0('0x2e')]:_0x27d0e7[_0x66b0('0x2a')];_0x2c9a47[_0x66b0('0x30')]=qs[_0x66b0('0x31')](_0x5720bc[_0x66b0('0x2b')][_0x66b0('0x31')]);_0x2c9a47[_0x66b0('0x32')]=qs[_0x66b0('0x2c')](_[_0x66b0('0x33')](_0x5720bc['query'],_0x27d0e7['filters']));if(_0x5720bc[_0x66b0('0x2b')]['filter']){_0x2c9a47[_0x66b0('0x32')]=_[_0x66b0('0x8d')](_0x2c9a47[_0x66b0('0x32')],{'$or':_['map'](_0x2c9a47[_0x66b0('0x2e')],function(_0x3c806f){var _0x1b3d4e={};_0x1b3d4e[_0x3c806f]={'$like':'%'+_0x5720bc[_0x66b0('0x2b')]['filter']+'%'};return _0x1b3d4e;})});}_0x2c9a47=_[_0x66b0('0x8d')]({},_0x2c9a47,_0x5720bc[_0x66b0('0xba')]);return _0x4e7ffb['getTags'](_0x2c9a47);}})['then'](function(_0x2b30e5){if(_0x2b30e5){_0x4f8a0c=_0x2b30e5[_0x66b0('0x22')];if(!_0x5720bc[_0x66b0('0x2b')]['hasOwnProperty'](_0x66b0('0xbb'))){_0x2c9a47[_0x66b0('0x14')]=qs[_0x66b0('0x14')](_0x5720bc[_0x66b0('0x2b')][_0x66b0('0x14')]);_0x2c9a47[_0x66b0('0x13')]=qs[_0x66b0('0x13')](_0x5720bc[_0x66b0('0x2b')][_0x66b0('0x13')]);}return _0x4e7ffb['getTags'](_0x2c9a47);}})['then'](function(_0x24d9b2){if(_0x24d9b2){return _0x24d9b2?{'count':_0x4f8a0c,'rows':_0x24d9b2}:null;}})[_0x66b0('0x19')](respondWithResult(_0x34d07d,null))[_0x66b0('0x82')](handleError(_0x34d07d,null));};exports[_0x66b0('0xbc')]=function(_0x3ee33b,_0x115acb){if(_0x3ee33b['body']['id']){delete _0x3ee33b['body']['id'];}return db['CmContact']['findOne']({'where':{'id':_0x3ee33b['params']['id']}})[_0x66b0('0x19')](handleEntityNotFound(_0x115acb,null))[_0x66b0('0x19')](function(_0x10f824){if(_0x10f824){return _0x10f824[_0x66b0('0xbc')](_0x3ee33b['body'][_0x66b0('0xbd')]||[]);}return null;})[_0x66b0('0x19')](respondWithResult(_0x115acb,null))[_0x66b0('0x82')](handleError(_0x115acb,null));};exports[_0x66b0('0xbe')]=function(_0x1c04f9,_0x48e66c){var _0xa345e9={'raw':![],'where':{}};var _0x2ae4fb={};var _0x1f1bcf={'count':0x0,'rows':[]};return db[_0x66b0('0x1f')][_0x66b0('0x26')]({'where':{'id':_0x1c04f9[_0x66b0('0x84')]['id']}})[_0x66b0('0x19')](handleEntityNotFound(_0x48e66c,null))[_0x66b0('0x19')](function(_0x40b48d){if(_0x40b48d){_0x2ae4fb[_0x66b0('0x2a')]=_[_0x66b0('0x21')](db[_0x66b0('0x92')][_0x66b0('0xb9')]);_0x2ae4fb[_0x66b0('0x2b')]=_['keys'](_0x1c04f9[_0x66b0('0x2b')]);_0x2ae4fb['filters']=_[_0x66b0('0x2d')](_0x2ae4fb['model'],_0x2ae4fb[_0x66b0('0x2b')]);_0xa345e9[_0x66b0('0x2e')]=_[_0x66b0('0x2d')](_0x2ae4fb[_0x66b0('0x2a')],qs[_0x66b0('0x2f')](_0x1c04f9[_0x66b0('0x2b')][_0x66b0('0x2f')]));_0xa345e9[_0x66b0('0x2e')]=_0xa345e9[_0x66b0('0x2e')][_0x66b0('0x22')]?_0xa345e9['attributes']:_0x2ae4fb[_0x66b0('0x2a')];if(!_0x1c04f9[_0x66b0('0x2b')]['hasOwnProperty']('nolimit')){_0xa345e9[_0x66b0('0x14')]=qs[_0x66b0('0x14')](_0x1c04f9['query']['limit']);_0xa345e9[_0x66b0('0x13')]=qs[_0x66b0('0x13')](_0x1c04f9['query'][_0x66b0('0x13')]);}_0xa345e9['order']=qs[_0x66b0('0x31')](_0x1c04f9[_0x66b0('0x2b')][_0x66b0('0x31')]);_0xa345e9[_0x66b0('0x32')]=qs[_0x66b0('0x2c')](_['pick'](_0x1c04f9[_0x66b0('0x2b')],_0x2ae4fb[_0x66b0('0x2c')]));_0xa345e9[_0x66b0('0x32')][_0x66b0('0xbf')]=_0x40b48d['id'];if(_0x1c04f9[_0x66b0('0x2b')][_0x66b0('0x58')]){_0xa345e9[_0x66b0('0x32')]=_[_0x66b0('0x8d')](_0xa345e9['where'],{'$or':_[_0x66b0('0x41')](_0xa345e9[_0x66b0('0x2e')],function(_0x1c9f03){var _0x3119a7={};_0x3119a7[_0x1c9f03]={'$like':'%'+_0x1c04f9[_0x66b0('0x2b')][_0x66b0('0x58')]+'%'};return _0x3119a7;})});}_0xa345e9=_[_0x66b0('0x8d')]({},_0xa345e9,_0x1c04f9[_0x66b0('0xba')]);return db[_0x66b0('0x92')][_0x66b0('0x15')]({'where':_0xa345e9['where']})[_0x66b0('0x19')](function(_0x13fff4){_0x1f1bcf[_0x66b0('0x15')]=_0x13fff4;if(_0x1c04f9[_0x66b0('0x2b')][_0x66b0('0xc0')]){_0xa345e9[_0x66b0('0xc1')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0xa345e9);})['then'](function(_0x170989){_0x1f1bcf[_0x66b0('0x81')]=_0x170989;return _0x1f1bcf;});}})[_0x66b0('0x19')](respondWithFilteredResult(_0x48e66c,_0xa345e9))['catch'](handleError(_0x48e66c,null));};exports['getHopperHistories']=function(_0x42eb64,_0x286525){var _0x3586e4={'raw':!![],'where':{}};var _0x5b42a5={};var _0x506648={'count':0x0,'rows':[]};return db[_0x66b0('0x1f')]['findOne']({'where':{'id':_0x42eb64['params']['id']}})['then'](handleEntityNotFound(_0x286525,null))[_0x66b0('0x19')](function(_0x5a998c){if(_0x5a998c){_0x5b42a5[_0x66b0('0x2a')]=_[_0x66b0('0x21')](db[_0x66b0('0xc2')]['rawAttributes']);_0x5b42a5[_0x66b0('0x2b')]=_[_0x66b0('0x21')](_0x42eb64[_0x66b0('0x2b')]);_0x5b42a5[_0x66b0('0x2c')]=_[_0x66b0('0x2d')](_0x5b42a5[_0x66b0('0x2a')],_0x5b42a5[_0x66b0('0x2b')]);_0x3586e4[_0x66b0('0x2e')]=_[_0x66b0('0x2d')](_0x5b42a5['model'],qs[_0x66b0('0x2f')](_0x42eb64['query'][_0x66b0('0x2f')]));_0x3586e4[_0x66b0('0x2e')]=_0x3586e4[_0x66b0('0x2e')]['length']?_0x3586e4[_0x66b0('0x2e')]:_0x5b42a5[_0x66b0('0x2a')];if(!_0x42eb64[_0x66b0('0x2b')]['hasOwnProperty']('nolimit')){_0x3586e4[_0x66b0('0x14')]=qs[_0x66b0('0x14')](_0x42eb64[_0x66b0('0x2b')][_0x66b0('0x14')]);_0x3586e4[_0x66b0('0x13')]=qs['offset'](_0x42eb64[_0x66b0('0x2b')][_0x66b0('0x13')]);}_0x3586e4[_0x66b0('0x30')]=qs['sort'](_0x42eb64[_0x66b0('0x2b')][_0x66b0('0x31')]);_0x3586e4[_0x66b0('0x32')]=qs[_0x66b0('0x2c')](_['pick'](_0x42eb64[_0x66b0('0x2b')],_0x5b42a5['filters']));_0x3586e4[_0x66b0('0x32')][_0x66b0('0xbf')]=_0x5a998c['id'];if(_0x42eb64[_0x66b0('0x2b')][_0x66b0('0x58')]){_0x3586e4[_0x66b0('0x32')]=_[_0x66b0('0x8d')](_0x3586e4[_0x66b0('0x32')],{'$or':_['map'](_0x3586e4['attributes'],function(_0x1ec2b9){var _0x2f3416={};_0x2f3416[_0x1ec2b9]={'$like':'%'+_0x42eb64['query'][_0x66b0('0x58')]+'%'};return _0x2f3416;})});}_0x3586e4=_[_0x66b0('0x8d')]({},_0x3586e4,_0x42eb64[_0x66b0('0xba')]);return db[_0x66b0('0xc2')][_0x66b0('0x15')]({'where':_0x3586e4[_0x66b0('0x32')]})[_0x66b0('0x19')](function(_0x52cacc){_0x506648[_0x66b0('0x15')]=_0x52cacc;if(_0x42eb64['query']['includeAll']){_0x3586e4['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x66b0('0x89')](_0x3586e4);})[_0x66b0('0x19')](function(_0xffd661){_0x506648[_0x66b0('0x81')]=_0xffd661;return _0x506648;});}})[_0x66b0('0x19')](respondWithFilteredResult(_0x286525,_0x3586e4))[_0x66b0('0x82')](handleError(_0x286525,null));};exports['getHopperFinals']=function(_0x7397f8,_0x97dc6){var _0x4c0225={'raw':!![],'where':{}};var _0x300c74={};var _0x41e08a={'count':0x0,'rows':[]};return db[_0x66b0('0x1f')][_0x66b0('0x26')]({'where':{'id':_0x7397f8[_0x66b0('0x84')]['id']}})[_0x66b0('0x19')](handleEntityNotFound(_0x97dc6,null))[_0x66b0('0x19')](function(_0x5d9718){if(_0x5d9718){_0x300c74['model']=_[_0x66b0('0x21')](db['CmHopperFinal']['rawAttributes']);_0x300c74[_0x66b0('0x2b')]=_[_0x66b0('0x21')](_0x7397f8[_0x66b0('0x2b')]);_0x300c74[_0x66b0('0x2c')]=_['intersection'](_0x300c74['model'],_0x300c74[_0x66b0('0x2b')]);_0x4c0225[_0x66b0('0x2e')]=_[_0x66b0('0x2d')](_0x300c74[_0x66b0('0x2a')],qs[_0x66b0('0x2f')](_0x7397f8[_0x66b0('0x2b')][_0x66b0('0x2f')]));_0x4c0225['attributes']=_0x4c0225[_0x66b0('0x2e')][_0x66b0('0x22')]?_0x4c0225[_0x66b0('0x2e')]:_0x300c74['model'];if(!_0x7397f8[_0x66b0('0x2b')][_0x66b0('0x4f')](_0x66b0('0xbb'))){_0x4c0225[_0x66b0('0x14')]=qs[_0x66b0('0x14')](_0x7397f8['query'][_0x66b0('0x14')]);_0x4c0225['offset']=qs['offset'](_0x7397f8[_0x66b0('0x2b')][_0x66b0('0x13')]);}_0x4c0225[_0x66b0('0x30')]=qs[_0x66b0('0x31')](_0x7397f8[_0x66b0('0x2b')][_0x66b0('0x31')]);_0x4c0225[_0x66b0('0x32')]=qs[_0x66b0('0x2c')](_[_0x66b0('0x33')](_0x7397f8[_0x66b0('0x2b')],_0x300c74[_0x66b0('0x2c')]));_0x4c0225[_0x66b0('0x32')][_0x66b0('0xbf')]=_0x5d9718['id'];if(_0x7397f8[_0x66b0('0x2b')]['filter']){_0x4c0225[_0x66b0('0x32')]=_[_0x66b0('0x8d')](_0x4c0225[_0x66b0('0x32')],{'$or':_[_0x66b0('0x41')](_0x4c0225[_0x66b0('0x2e')],function(_0x40c7a8){var _0x50b048={};_0x50b048[_0x40c7a8]={'$like':'%'+_0x7397f8['query'][_0x66b0('0x58')]+'%'};return _0x50b048;})});}_0x4c0225=_['merge']({},_0x4c0225,_0x7397f8[_0x66b0('0xba')]);return db['CmHopperFinal'][_0x66b0('0x15')]({'where':_0x4c0225[_0x66b0('0x32')]})[_0x66b0('0x19')](function(_0x5bc87e){_0x41e08a['count']=_0x5bc87e;if(_0x7397f8[_0x66b0('0x2b')][_0x66b0('0xc0')]){_0x4c0225[_0x66b0('0xc1')]=[{'all':!![]}];}return db[_0x66b0('0xa2')]['findAll'](_0x4c0225);})[_0x66b0('0x19')](function(_0x4ef9f3){_0x41e08a[_0x66b0('0x81')]=_0x4ef9f3;return _0x41e08a;});}})[_0x66b0('0x19')](respondWithFilteredResult(_0x97dc6,_0x4c0225))[_0x66b0('0x82')](handleError(_0x97dc6,null));};exports[_0x66b0('0xc3')]=function(_0x49cb34,_0x7fcff2){var _0x25fb34={'raw':!![],'where':{}};var _0x49d59a={};var _0x5009c3={'count':0x0,'rows':[]};return db[_0x66b0('0x1f')]['findOne']({'where':{'id':_0x49cb34[_0x66b0('0x84')]['id']}})[_0x66b0('0x19')](handleEntityNotFound(_0x7fcff2,null))['then'](function(_0x26af8a){if(_0x26af8a){_0x49d59a[_0x66b0('0x2a')]=_[_0x66b0('0x21')](db['JscriptySessionReport'][_0x66b0('0xb9')]);_0x49d59a[_0x66b0('0x2b')]=_[_0x66b0('0x21')](_0x49cb34['query']);_0x49d59a[_0x66b0('0x2c')]=_[_0x66b0('0x2d')](_0x49d59a[_0x66b0('0x2a')],_0x49d59a[_0x66b0('0x2b')]);_0x25fb34[_0x66b0('0x2e')]=_[_0x66b0('0x2d')](_0x49d59a['model'],qs[_0x66b0('0x2f')](_0x49cb34['query'][_0x66b0('0x2f')]));_0x25fb34[_0x66b0('0x2e')]=_0x25fb34['attributes'][_0x66b0('0x22')]?_0x25fb34[_0x66b0('0x2e')]:_0x49d59a[_0x66b0('0x2a')];if(!_0x49cb34['query']['hasOwnProperty']('nolimit')){_0x25fb34[_0x66b0('0x14')]=qs['limit'](_0x49cb34[_0x66b0('0x2b')][_0x66b0('0x14')]);_0x25fb34[_0x66b0('0x13')]=qs['offset'](_0x49cb34['query'][_0x66b0('0x13')]);}_0x25fb34[_0x66b0('0x30')]=qs[_0x66b0('0x31')](_0x49cb34[_0x66b0('0x2b')][_0x66b0('0x31')]);_0x25fb34[_0x66b0('0x32')]=qs[_0x66b0('0x2c')](_[_0x66b0('0x33')](_0x49cb34['query'],_0x49d59a['filters']));_0x25fb34[_0x66b0('0x32')][_0x66b0('0xbf')]=_0x26af8a['id'];if(_0x49cb34[_0x66b0('0x2b')][_0x66b0('0x58')]){_0x25fb34[_0x66b0('0x32')]=_[_0x66b0('0x8d')](_0x25fb34[_0x66b0('0x32')],{'$or':_[_0x66b0('0x41')](_0x25fb34['attributes'],function(_0x54fccc){var _0x1112e0={};_0x1112e0[_0x54fccc]={'$like':'%'+_0x49cb34['query']['filter']+'%'};return _0x1112e0;})});}_0x25fb34=_[_0x66b0('0x8d')]({},_0x25fb34,_0x49cb34[_0x66b0('0xba')]);return db[_0x66b0('0xa9')][_0x66b0('0x15')]({'where':_0x25fb34[_0x66b0('0x32')]})[_0x66b0('0x19')](function(_0x3b2fe7){_0x5009c3[_0x66b0('0x15')]=_0x3b2fe7;if(_0x49cb34[_0x66b0('0x2b')][_0x66b0('0xc0')]){_0x25fb34['include']=[{'all':!![]}];}return db[_0x66b0('0xa9')][_0x66b0('0x89')](_0x25fb34);})[_0x66b0('0x19')](function(_0x3d8917){_0x5009c3[_0x66b0('0x81')]=_0x3d8917;return _0x5009c3;});}})[_0x66b0('0x19')](respondWithFilteredResult(_0x7fcff2,_0x25fb34))[_0x66b0('0x82')](handleError(_0x7fcff2,null));};exports[_0x66b0('0xc4')]=function(_0x23b596,_0x5f515b){try{if(!_0x23b596[_0x66b0('0x8e')][_0x66b0('0xb1')]){throw new Error(_0x66b0('0xc5'));}if(!_0x23b596[_0x66b0('0x8e')]['binding_keys']){throw new Error(_0x66b0('0xc6'));}if(!_0x23b596[_0x66b0('0x8e')][_0x66b0('0xc7')]){throw new Error(_0x66b0('0xc8'));}if(!_0x23b596[_0x66b0('0x8e')]['socket_timestamp']){throw new Error(_0x66b0('0xc9'));}var _0x14fed2=_0x23b596[_0x66b0('0x8e')][_0x66b0('0xca')][_0x66b0('0x5a')](',');var _0x211cc1=_0x23b596['body'][_0x66b0('0xc7')][_0x66b0('0x5a')](',');if(!_0x14fed2[_0x66b0('0x22')]||!_0x211cc1['length']||_0x14fed2[_0x66b0('0x22')]!==_0x211cc1[_0x66b0('0x22')]){throw new Error(_0x66b0('0xcb'));}_0x23b596[_0x66b0('0x8e')][_0x66b0('0x2f')]=_['zipObject'](_0x14fed2,_0x211cc1);if(!_0x23b596['body']['fields']['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x23b596[_0x66b0('0x8e')]['fields']['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}var _0x447de3=path['join'](config[_0x66b0('0xcc')],_0x66b0('0xcd'),_0x23b596[_0x66b0('0xce')]['filename']);fs[_0x66b0('0xcf')](_0x447de3,parseInt(_0x66b0('0xd0'),0x8));var _0x2a2705=require(_0x66b0('0xd1'))[_0x66b0('0xd2')](path[_0x66b0('0xd3')](__dirname,'../../components/import/cm/csv'),[_0x447de3,_0x23b596['body']['binding_keys'],_0x23b596[_0x66b0('0x8e')][_0x66b0('0xc7')],_0x23b596[_0x66b0('0x8e')][_0x66b0('0xb1')],_0x23b596[_0x66b0('0x8e')][_0x66b0('0xd4')],_0x23b596['body']['duplicates'],_0x23b596['body'][_0x66b0('0xd5')]]);return _0x5f515b['status'](0xc8)[_0x66b0('0x12')]({'message':_0x66b0('0xd6'),'pid':_0x2a2705['pid']});}catch(_0x4a3338){return _0x5f515b[_0x66b0('0x11')](0x1f4)[_0x66b0('0x1e')](_0x4a3338);}};exports[_0x66b0('0xd7')]=function(_0x410e8d,_0x50140a){var _0x445075=fs[_0x66b0('0xd8')](_0x410e8d['file'][_0x66b0('0x3')]);Papa[_0x66b0('0xd9')](_0x445075,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x16575a){return _0x50140a['status'](0xc8)[_0x66b0('0x12')]({'file':_0x410e8d[_0x66b0('0xce')],'fields':_0x16575a[_0x66b0('0xda')][_0x66b0('0x2f')]});}});};exports[_0x66b0('0xdb')]=function(_0x44c594,_0x27a7fe){return db[_0x66b0('0x45')][_0x66b0('0x89')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})['then'](function(_0x29be66){var _0x2e6a6e=![];if(!_0x44c594[_0x66b0('0x8e')][_0x66b0('0xb1')]){throw new Error('No\x20ListId\x20specified');}if(!_0x44c594[_0x66b0('0x8e')][_0x66b0('0xdc')][_0x66b0('0xb8')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x44c594[_0x66b0('0x8e')][_0x66b0('0xdc')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x44c594[_0x66b0('0x8e')][_0x66b0('0xd5')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x3d221d=require('child_process')[_0x66b0('0xd2')](path[_0x66b0('0xd3')](__dirname,_0x66b0('0xdd')),[_0x44c594[_0x66b0('0x84')]['id'],JSON[_0x66b0('0xde')](_0x44c594[_0x66b0('0x8e')]),JSON[_0x66b0('0xde')](_0x29be66)]);_0x3d221d['on'](_0x66b0('0xdf'),function(){_0x2e6a6e=!![];return _0x27a7fe[_0x66b0('0x11')](0xc8)[_0x66b0('0x12')]({'message':_0x66b0('0xe0'),'pid':_0x3d221d[_0x66b0('0xe1')]});});_0x3d221d['on'](_0x66b0('0xe2'),function(_0xd8edb3){if(_0xd8edb3&&!_0x2e6a6e){return _0x27a7fe[_0x66b0('0x11')](0x1f4)['json']({'message':_0x66b0('0xe3'),'pid':_0x3d221d[_0x66b0('0xe1')]});}});})[_0x66b0('0x82')](handleError(_0x27a7fe,null));};exports[_0x66b0('0xe4')]=function(_0x201474,_0x7bc8b1){var _0x6b7bfb=[_0x66b0('0xe5'),_0x66b0('0xe6'),'sms','openchannel',_0x66b0('0xe7'),_0x66b0('0xe8'),_0x66b0('0xe9')];var _0x5da281={'offset':0x0,'order':qs[_0x66b0('0x31')](_0x66b0('0xea'))},_0x1d4db0={'count':0x0,'rows':[]};Promise['resolve']()[_0x66b0('0x19')](function(){if(_0x201474[_0x66b0('0x2b')][_0x66b0('0xeb')]){if(!_['includes'](_0x6b7bfb,_0x201474[_0x66b0('0x2b')][_0x66b0('0xeb')][_0x66b0('0xec')]())){throw new Error(_0x66b0('0xed'));}_0x6b7bfb=[_0x201474[_0x66b0('0x2b')][_0x66b0('0xeb')][_0x66b0('0xec')]()];}if(_0x201474[_0x66b0('0x2b')][_0x66b0('0xee')]){try{var _0x1a1a34=JSON[_0x66b0('0xd9')](_0x201474[_0x66b0('0x2b')][_0x66b0('0xee')]);if(!moment(_0x1a1a34[_0x66b0('0x37')])[_0x66b0('0xef')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x1a1a34['to'])[_0x66b0('0xef')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x580a29){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x201474['query'][_0x66b0('0x4f')](_0x66b0('0xbb'))){_0x5da281[_0x66b0('0x14')]=qs[_0x66b0('0x14')](_0x201474[_0x66b0('0x2b')]['limit']||0xa);_0x5da281[_0x66b0('0x13')]=qs[_0x66b0('0x13')](_0x201474['query'][_0x66b0('0x13')]);}var _0xa67375=_0x6b7bfb['map'](function(_0x42dba6){if(_0x42dba6===_0x66b0('0xe9')){var _0x1c1589={'attributes':['id',_0x66b0('0xf0'),_0x66b0('0x4a'),_0x66b0('0xf1'),_0x66b0('0xf2'),_0x66b0('0xf3'),_0x66b0('0xf4'),_0x66b0('0xf5'),_0x66b0('0xf6'),_0x66b0('0xf7'),_0x66b0('0xf8'),'userDisposition',_0x66b0('0xf9'),_0x66b0('0xfa'),_0x66b0('0xfb')],'where':{'ContactId':_0x201474['params']['id']},'include':[{'model':db[_0x66b0('0x45')],'as':'User','attributes':['id','name',_0x66b0('0xfc'),'alias']}],'order':[['createdAt',_0x66b0('0x6a')]]};if(_0x201474[_0x66b0('0x2b')][_0x66b0('0xee')]){_0x1c1589['where'][_0x66b0('0xf8')]={'$gte':_0x1a1a34[_0x66b0('0x37')],'$lte':_0x1a1a34['to']};}return db[_0x66b0('0xa3')]['findAndCountAll'](_0x1c1589)[_0x66b0('0x19')](function(_0x159340){_0x1d4db0[_0x66b0('0x15')]+=_0x159340[_0x66b0('0x15')];return _[_0x66b0('0x41')](_0x159340[_0x66b0('0x81')],function(_0x8d617b){var _0x4a457e=_0x8d617b[_0x66b0('0x8f')]({'plain':!![]});_0x4a457e[_0x66b0('0xeb')]=_0x42dba6;if(_0x4a457e[_0x66b0('0x45')]){_0x4a457e[_0x66b0('0x45')]={'id':_0x4a457e[_0x66b0('0x45')]['id'],'name':_0x4a457e['User']['name'],'fullname':_0x4a457e[_0x66b0('0x45')]['fullname'],'alias':_0x4a457e[_0x66b0('0x45')][_0x66b0('0x8a')]};}return _0x4a457e;});});}else{var _0x108e18=_[_0x66b0('0xfd')](_0x42dba6)+(_0x42dba6==='chat'?_0x66b0('0xfe'):_0x66b0('0xff'));var _0x5196db={'attributes':['id',_0x66b0('0x100'),'closedAt',_0x66b0('0xf8'),_0x66b0('0xf7'),_0x66b0('0x101'),_0x66b0('0x102'),_0x66b0('0x103'),_0x66b0('0xfb'),_0x108e18+'Id'],'where':{'ContactId':_0x201474[_0x66b0('0x84')]['id']},'include':[{'model':db[_0x108e18],'as':_0x66b0('0xff'),'attributes':['id',_0x66b0('0x1d'),_0x66b0('0x104')]},{'model':db[_0x66b0('0x45')],'as':_0x66b0('0x105'),'attributes':['id',_0x66b0('0x1d'),_0x66b0('0xfc')]},{'model':db['Tag'],'as':_0x66b0('0x7f'),'attributes':['id',_0x66b0('0x1d'),_0x66b0('0x36')],'through':{'attributes':[]}}],'order':[['createdAt',_0x66b0('0x6a')]]};if(_0x201474[_0x66b0('0x2b')][_0x66b0('0xee')]){_0x5196db[_0x66b0('0x32')][_0x66b0('0xf8')]={'$gte':_0x1a1a34[_0x66b0('0x37')],'$lte':_0x1a1a34['to']};}switch(_0x42dba6){case _0x66b0('0xe6'):_0x5196db[_0x66b0('0x2e')][_0x66b0('0x51')](_0x66b0('0x106'),_0x66b0('0x107'),'customerPort',_0x66b0('0x108'),_0x66b0('0x109'),_0x66b0('0x10a'),_0x66b0('0x10b'),'ratingValue',_0x66b0('0x10c'));break;case _0x66b0('0xe5'):_0x5196db[_0x66b0('0x2e')][_0x66b0('0x51')]('subject',_0x66b0('0x10d'));break;case _0x66b0('0x10e'):_0x5196db[_0x66b0('0x2e')]['push']('externalUrl','threadId');break;}return db[_[_0x66b0('0xfd')](_0x42dba6)+_0x66b0('0x10f')]['findAndCountAll'](_0x5196db)[_0x66b0('0x19')](function(_0x3efe97){_0x1d4db0['count']+=_0x3efe97[_0x66b0('0x15')];return _[_0x66b0('0x41')](_0x3efe97['rows'],function(_0x5c718c){var _0x370baf=_0x5c718c[_0x66b0('0x8f')]({'plain':!![]});_0x370baf[_0x66b0('0xeb')]=_0x42dba6;if(_0x370baf[_0x66b0('0x105')]){_0x370baf['Owner']={'id':_0x370baf['Owner']['id'],'name':_0x370baf['Owner'][_0x66b0('0x1d')],'fullname':_0x370baf['Owner'][_0x66b0('0xfc')]};}return _0x370baf;});});}});return Promise[_0x66b0('0x28')](_0xa67375);})[_0x66b0('0x19')](function(_0x5a2f36){return _(_0x5a2f36)[_0x66b0('0x110')]()['sortBy'](_0x66b0('0xf8'))['reverse']()['value']();})[_0x66b0('0x19')](function(_0xb6533c){_0x1d4db0[_0x66b0('0x81')]=_0x5da281[_0x66b0('0x14')]?_0xb6533c['slice'](_0x5da281[_0x66b0('0x13')],_0x5da281[_0x66b0('0x13')]+_0x5da281[_0x66b0('0x14')]):_0xb6533c;return _0x1d4db0;})[_0x66b0('0x19')](respondWithFilteredResult(_0x7bc8b1,_0x5da281))[_0x66b0('0x82')](handleError(_0x7bc8b1,null));};
\ No newline at end of file
+var _0x317b=['c.firstName','c.lastName','c.email','c.ListId','c.createdAt','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','Tags','TagIds','rows','catch','destroy','params','tags','columnName','displayName','analytics','alias','custom','values','body','get','mergeWith','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','OpenchannelQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','bulkCreate','each','duplicates','$or','findOrCreate','spread','show','$and','findAll','omit','format','cf_%d','pickBy','table','setFields','id\x20=\x20?','toParam','phone','getTags','rawAttributes','setTags','ids','getHoppers','includeAll','include','getHopperHistories','CmHopperHistory','pick','ContactId','options','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','upload','file','json','meta','import','binding','No\x20firstName\x20column\x20specified','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','pid','getJourney','sms','openchannel','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','uniqueid','source','destination','callerid','endtime','duration','createdAt','userDisposition','UserId','fullname','range','findAndCountAll','chat','Account','closedAt','disposition','secondDisposition','thirdDisposition','key','Owner','customerIp','customerPort','deviceModel','osName','ratingType','ratingValue','referer','mail','subject','substatus','externalUrl','threadId','startCase','Interaction','flatten','sortBy','reverse','slice','moment','bluebird','path','lodash','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','undefined','limit','count','update','then','end','sendStatus','error','stack','name','send','index','describe','keys','length','startsWith','push','CmCustomField','findOne','trimStart','cf_','all','fieldType','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','filters','select','field','color','from','tools_tags','cm_contacts','cm_user_has_contacts','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','dateOfBirth','datetime','buildExpression','type','text','filter','isNil','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','getLists','c.ListId\x20IS\x20NULL','ListId','sequelize','toString','merge','CmContact'];(function(_0x37e886,_0x17d0ad){var _0x57c5cd=function(_0x2692a3){while(--_0x2692a3){_0x37e886['push'](_0x37e886['shift']());}};_0x57c5cd(++_0x17d0ad);}(_0x317b,0x1c7));var _0xb317=function(_0x332ef7,_0x1f365b){_0x332ef7=_0x332ef7-0x0;var _0x34ac3d=_0x317b[_0x332ef7];return _0x34ac3d;};'use strict';var moment=require(_0xb317('0x0'));var BPromise=require(_0xb317('0x1'));var util=require('util');var path=require(_0xb317('0x2'));var fs=require('fs');var _=require(_0xb317('0x3'));var squel=require('squel');var Papa=require(_0xb317('0x4'));var Redis=require(_0xb317('0x5'));var qs=require(_0xb317('0x6'));var as=require(_0xb317('0x7'));var logger=require(_0xb317('0x8'))(_0xb317('0x9'));var config=require(_0xb317('0xa'));var db=require(_0xb317('0xb'))['db'];config[_0xb317('0xc')]=_[_0xb317('0xd')](config['redis'],{'host':_0xb317('0xe'),'port':0x18eb});var socket=require(_0xb317('0xf'))(new Redis(config['redis']));require(_0xb317('0x10'))[_0xb317('0x11')](socket);function respondWithResult(_0x45e4a0,_0xd2deea){_0xd2deea=_0xd2deea||0xc8;return function(_0xbffffb){if(_0xbffffb){return _0x45e4a0[_0xb317('0x12')](_0xd2deea)['json'](_0xbffffb);}};}function respondWithFilteredResult(_0x38e26d,_0x177258){return function(_0x58d153){if(_0x58d153){var _0x1000d9=typeof _0x177258['offset']===_0xb317('0x13')&&typeof _0x177258[_0xb317('0x14')]===_0xb317('0x13');var _0x15f3f5=_0x58d153['count'];var _0xf88e1c=_0x1000d9?0x0:_0x177258['offset'];var _0x5562b0=_0x1000d9?_0x58d153[_0xb317('0x15')]:_0x177258['offset']+_0x177258[_0xb317('0x14')];var _0x42a379;if(_0x5562b0>=_0x15f3f5){_0x5562b0=_0x15f3f5;_0x42a379=0xc8;}else{_0x42a379=0xce;}_0x38e26d[_0xb317('0x12')](_0x42a379);return _0x38e26d['set']('Content-Range',_0xf88e1c+'-'+_0x5562b0+'/'+_0x15f3f5)['json'](_0x58d153);}return null;};}function saveUpdates(_0x46e95a){return function(_0x48e812){if(_0x48e812){return _0x48e812[_0xb317('0x16')](_0x46e95a)[_0xb317('0x17')](function(_0x4ceef3){return _0x4ceef3;});}return null;};}function removeEntity(_0x477660){return function(_0x337eaf){if(_0x337eaf){return _0x337eaf['destroy']()['then'](function(){_0x477660[_0xb317('0x12')](0xcc)[_0xb317('0x18')]();});}};}function handleEntityNotFound(_0x235895){return function(_0x13d760){if(!_0x13d760){_0x235895[_0xb317('0x19')](0x194);}return _0x13d760;};}function handleError(_0x496354,_0x3916c7){_0x3916c7=_0x3916c7||0x1f4;return function(_0x45bcaf){logger[_0xb317('0x1a')](_0x45bcaf[_0xb317('0x1b')]);if(_0x45bcaf[_0xb317('0x1c')]){delete _0x45bcaf[_0xb317('0x1c')];}_0x496354[_0xb317('0x12')](_0x3916c7)[_0xb317('0x1d')](_0x45bcaf);};}exports[_0xb317('0x1e')]=function(_0x2f85d4,_0x2dfdee){var _0x26896e={},_0xb22915={},_0x3539fd={'count':0x0,'rows':[]};return db['CmContact'][_0xb317('0x1f')]()['then'](function(_0x16ef79){var _0x4b7eb6=[];for(var _0x3009fb=0x0;_0x3009fb<Object[_0xb317('0x20')](_0x16ef79)[_0xb317('0x21')];_0x3009fb++){var _0x1e32d4=Object[_0xb317('0x20')](_0x16ef79)[_0x3009fb];if(_[_0xb317('0x22')](_0x1e32d4,'cf_')){_0x4b7eb6[_0xb317('0x23')](db[_0xb317('0x24')][_0xb317('0x25')]({'where':{'id':_[_0xb317('0x26')](_0x1e32d4,_0xb317('0x27'))},'raw':!![]}));}}return BPromise[_0xb317('0x28')](_0x4b7eb6)['then'](function(_0x130c41){for(var _0x35e446=0x0;_0x35e446<_0x130c41['length'];_0x35e446++){if(_0x130c41[_0x35e446]){var _0x5c629c=_0xb317('0x27')+_0x130c41[_0x35e446]['id'];var _0x387e17=_0x16ef79[_0x5c629c];_0x387e17[_0xb317('0x29')]=_0x130c41[_0x35e446]['type'];}}return _0x16ef79;});})[_0xb317('0x17')](function(_0xa35219){_0xb22915[_0xb317('0x2a')]=_[_0xb317('0x20')](_0xa35219);_0xb22915[_0xb317('0x2b')]=_['keys'](_0x2f85d4[_0xb317('0x2b')]);_0xb22915['filters']=_[_0xb317('0x2c')](_0xb22915['model'],_0xb22915[_0xb317('0x2b')]);_0x26896e[_0xb317('0x2d')]=_[_0xb317('0x2c')](_0xb22915['model'],qs[_0xb317('0x2e')](_0x2f85d4[_0xb317('0x2b')][_0xb317('0x2e')]));_0x26896e['attributes']=_0x26896e['attributes'][_0xb317('0x21')]?_0x26896e['attributes']:_0xb22915['model'];if(!_0x2f85d4['query'][_0xb317('0x2f')](_0xb317('0x30'))){_0x26896e[_0xb317('0x14')]=qs[_0xb317('0x14')](_0x2f85d4['query'][_0xb317('0x14')]);_0x26896e[_0xb317('0x31')]=qs[_0xb317('0x31')](_0x2f85d4[_0xb317('0x2b')]['offset']);}_0x26896e[_0xb317('0x32')]=qs['sort'](_0x2f85d4[_0xb317('0x2b')][_0xb317('0x33')]);_0x26896e[_0xb317('0x34')]=qs[_0xb317('0x35')](_['pick'](_0x2f85d4[_0xb317('0x2b')],_0xb22915[_0xb317('0x35')]),_0xa35219);var _0x3bdd06=[];var _0x4d2436=squel[_0xb317('0x36')]()[_0xb317('0x37')]('id')[_0xb317('0x37')](_0xb317('0x1c'))['field'](_0xb317('0x38'))[_0xb317('0x39')](_0xb317('0x3a'));var _0x1e5039=squel[_0xb317('0x36')]()[_0xb317('0x39')](_0xb317('0x3b'),'c')['left_join'](_0xb317('0x3c'),'uc','uc.CmContactId\x20=\x20c.id')[_0xb317('0x3d')](_0xb317('0x3e'),'ct',_0xb317('0x3f'))['left_join'](_0xb317('0x3a'),'t',_0xb317('0x40'))[_0xb317('0x34')](_0xb317('0x41'));var _0x5cac08=squel[_0xb317('0x42')]();var _0x487829=[];var _0x682954=squel['expr']();var _0x2cee98;if(_0x2f85d4['query'][_0xb317('0x43')]){_0x2cee98=as['parseSearch'](_0x2f85d4[_0xb317('0x2b')][_0xb317('0x43')]);var _0x1b4d2f=_0x2cee98['sqlOperator'];for(var _0x541225=0x0;_0x541225<_0x2cee98[_0xb317('0x44')][_0xb317('0x21')];_0x541225++){var _0x4b6a3a=_0x2cee98[_0xb317('0x44')][_0x541225];var _0x30440e='c';var _0x207e4b=_(_0xa35219)[_0xb317('0x20')]()[_0xb317('0x45')](function(_0x580eee){return _0x580eee===_0x4b6a3a['field'];});if(_0x207e4b)_0x207e4b=_0xa35219[_0x4b6a3a[_0xb317('0x37')]];if(!_0x207e4b){if(_0x4b6a3a['field']===_0xb317('0x46')){var _0x2bd5a1=_0x4b6a3a[_0xb317('0x47')][_0xb317('0x48')](',')[_0xb317('0x49')](function(_0x233a76){return Number(_0x233a76);});_0x2bd5a1[_0xb317('0x4a')](function(_0x1aaa06){_0x682954['or'](_0xb317('0x4b'),'%,'+_0x1aaa06+',%');});_0x487829=_[_0xb317('0x4c')](_0x487829,_0x2bd5a1);}else if(_0x4b6a3a[_0xb317('0x37')]===_0xb317('0x4d')){_0x5cac08[_0xb317('0x4e')]('uc.UserId\x20=\x20?',_0x4b6a3a[_0xb317('0x47')]);}}else{if(_0x4b6a3a['field']===_0xb317('0x4f')||_0x207e4b[_0xb317('0x29')]===_0xb317('0x50'))_0x4b6a3a['castTo']='DATE';var _0x3edae0=as[_0xb317('0x51')](_0x30440e,_0x207e4b[_0xb317('0x52')],_0x4b6a3a);_0x5cac08[_0x1b4d2f](_0x3edae0[_0xb317('0x53')],_0x3edae0[_0xb317('0x47')]['start'],_0x3edae0[_0xb317('0x47')][_0xb317('0x18')]);}}}else{var _0x920cf6=_(Object[_0xb317('0x20')](_0x2f85d4['query']))[_0xb317('0x49')](function(_0x271de0){return _0xa35219[_0xb317('0x2f')](_0x271de0)?_0x271de0:undefined;})[_0xb317('0x54')](function(_0x366d9c){return!_[_0xb317('0x55')](_0x366d9c);})['value']();if(_0x2f85d4[_0xb317('0x2b')][_0xb317('0x56')])_0x920cf6[_0xb317('0x23')](_0xb317('0x56'));if(!_[_0xb317('0x57')](_0x920cf6)){_0x920cf6[_0xb317('0x4a')](function(_0x27b7a5){if(_0x27b7a5==='ListId'){_0x1e5039[_0xb317('0x34')](_0xb317('0x58'),[][_0xb317('0x59')](_0x2f85d4[_0xb317('0x2b')][_0x27b7a5]));}else if(_0x27b7a5===_0xb317('0x56')){var _0x3e7043='%'+_0x2f85d4['query'][_0x27b7a5]+'%';_0x1e5039['where'](_0xb317('0x5a'),_0x3e7043);}else{_0x1e5039['where']('c.'+_0x27b7a5+_0xb317('0x5b'),_0x2f85d4[_0xb317('0x2b')][_0x27b7a5]);}});}if(_0x2f85d4[_0xb317('0x2b')][_0xb317('0x5c')]){_0x487829=_['isArray'](_0x2f85d4[_0xb317('0x2b')]['tag'])?_0x2f85d4['query']['tag']:new Array(_0x2f85d4[_0xb317('0x2b')]['tag']);_0x487829['forEach'](function(_0x1a6fe6){_0x682954['or'](_0xb317('0x4b'),'%,'+_0x1a6fe6+',%');});}if(_0x2f85d4[_0xb317('0x2b')][_0xb317('0x54')]){var _0x16db1a=_0x2f85d4[_0xb317('0x2b')][_0xb317('0x54')][_0xb317('0x5d')]('\x5c','\x5c\x5c')[_0xb317('0x5d')](/'/g,'\x27\x27');if(_0x16db1a[_0xb317('0x48')]('\x20')[_0xb317('0x21')]>0x1){_0x5cac08['or'](_0xb317('0x5e'),qs[_0xb317('0x5f')](_0x16db1a),null);}else{if(qs[_0xb317('0x60')](_0x16db1a)){_0x5cac08['or']('c.id\x20LIKE\x20?',_0x16db1a+'%');_0x5cac08['or'](_0xb317('0x61'),_0x16db1a+'%');_0x5cac08['or'](_0xb317('0x62'),_0x16db1a+'%');_0x5cac08['or'](_0xb317('0x63'),_0x16db1a+'%');}else if(qs[_0xb317('0x64')](_0x16db1a)){_0x5cac08['or'](_0xb317('0x65'),_0x16db1a+'%');}else{_0x5cac08['or'](_0xb317('0x66'),'%'+_0x16db1a+'%');_0x5cac08['or'](_0xb317('0x67'),'%'+_0x16db1a+'%');_0x5cac08['or']('c.email\x20LIKE\x20?','%'+_0x16db1a+'%');}}}}_0x1e5039[_0xb317('0x34')](_0x5cac08);_0x1e5039[_0xb317('0x68')](_0xb317('0x69'));var _0x4e5fd2={'type':db[_0xb317('0x6a')][_0xb317('0x6b')][_0xb317('0x6c')],'raw':!![]};var _0xa6af78=_0x1e5039[_0xb317('0x6d')]()[_0xb317('0x37')]('c.id');if(_0x26896e[_0xb317('0x32')]){_0x26896e[_0xb317('0x32')]['forEach'](function(_0x4c2d75){_0x1e5039[_0xb317('0x32')]('c.'+_0x4c2d75[0x0],_0x4c2d75[0x1]===_0xb317('0x6e')?![]:!![]);});}if(!_[_0xb317('0x57')](_0x487829)){_0x1e5039[_0xb317('0x6f')](_0x682954);_0xa6af78[_0xb317('0x34')](_0xb317('0x70'),_0x487829);}BPromise[_0xb317('0x71')]()[_0xb317('0x17')](function(){if(!_0x2cee98)return;if(_0x2f85d4[_0xb317('0x72')][_0xb317('0x73')]!==_0xb317('0x74'))return;if(!_[_0xb317('0x75')](_0x2cee98[_0xb317('0x44')],[_0xb317('0x37'),_0xb317('0x4d')])){return _0x2f85d4[_0xb317('0x72')][_0xb317('0x76')]({'attributes':['id'],'raw':!![]})[_0xb317('0x17')](function(_0xb602c5){if(_[_0xb317('0x57')](_0xb602c5)){_0xa6af78[_0xb317('0x34')]('c.ListId\x20IS\x20NULL');_0x1e5039[_0xb317('0x34')](_0xb317('0x77'));}else{_0xa6af78[_0xb317('0x34')](_0xb317('0x58'),_[_0xb317('0x49')](_0xb602c5,'id'));_0x1e5039[_0xb317('0x34')](_0xb317('0x58'),_[_0xb317('0x49')](_0xb602c5,'id'));}});}})[_0xb317('0x17')](function(){if(_0x2f85d4['user'][_0xb317('0x73')]==='agent'&&!_0x2cee98&&!_0x2f85d4[_0xb317('0x2b')][_0xb317('0x78')])return[];return db[_0xb317('0x79')]['query'](_0xa6af78[_0xb317('0x7a')](),_0x4e5fd2);})[_0xb317('0x17')](function(_0x405cff){_0x3539fd['count']=_0x405cff['length'];if(_0x3539fd['count']===0x0)return[];return db[_0xb317('0x79')]['query'](_0x4d2436['toString'](),_0x4e5fd2)[_0xb317('0x17')](function(_0x2bf345){_0x3bdd06=_['keyBy'](_0x2bf345,'id');_0x4e5fd2=_[_0xb317('0x7b')](_0x4e5fd2,{'model':db[_0xb317('0x7c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2f85d4[_0xb317('0x2b')][_0xb317('0x2e')]){_0x26896e[_0xb317('0x2d')][_0xb317('0x4a')](function(_0x4c710d){_0x1e5039[_0xb317('0x37')]('c.'+_0x4c710d);});}else{_0x1e5039[_0xb317('0x37')](_0xb317('0x69'));_0x1e5039['field'](_0xb317('0x7d'));_0x1e5039[_0xb317('0x37')](_0xb317('0x7e'));_0x1e5039[_0xb317('0x37')]('c.phone');_0x1e5039['field']('c.mobile');_0x1e5039['field']('c.fax');_0x1e5039['field'](_0xb317('0x7f'));_0x1e5039['field'](_0xb317('0x80'));_0x1e5039[_0xb317('0x37')](_0xb317('0x81'));_0x1e5039[_0xb317('0x37')](_0xb317('0x82'));_0x1e5039[_0xb317('0x37')]('c.CompanyId');_0x1e5039[_0xb317('0x37')](_0xb317('0x83'),'TagIds');}if(_0x26896e['limit'])_0x1e5039[_0xb317('0x14')](_0x26896e[_0xb317('0x14')]);if(_0x26896e[_0xb317('0x31')])_0x1e5039[_0xb317('0x31')](_0x26896e['offset']);return db[_0xb317('0x79')][_0xb317('0x2b')](_0x1e5039[_0xb317('0x7a')](),_0x4e5fd2);});})[_0xb317('0x17')](function(_0x377218){_0x377218[_0xb317('0x4a')](function(_0x21716d){if(_0x21716d['TagIds']){_0x21716d[_0xb317('0x84')]=[];_0x21716d[_0xb317('0x85')]['split'](',')[_0xb317('0x4a')](function(_0x27b86b){_0x21716d[_0xb317('0x84')][_0xb317('0x23')](_0x3bdd06[_0x27b86b]);});}delete _0x21716d[_0xb317('0x85')];});_0x3539fd[_0xb317('0x86')]=_0x377218;return _0x3539fd;})[_0xb317('0x17')](respondWithFilteredResult(_0x2dfdee,_0x26896e));})[_0xb317('0x87')](handleError(_0x2dfdee,null));};exports[_0xb317('0x88')]=function(_0x4ef1a9,_0x354066){return db[_0xb317('0x7c')][_0xb317('0x45')]({'where':{'id':_0x4ef1a9[_0xb317('0x89')]['id']}})[_0xb317('0x17')](handleEntityNotFound(_0x354066,null))[_0xb317('0x17')](removeEntity(_0x354066,null))[_0xb317('0x87')](handleError(_0x354066,null));};exports[_0xb317('0x1f')]=function(_0x3083af,_0x2822e1){return db[_0xb317('0x7c')][_0xb317('0x1f')]()[_0xb317('0x17')](function(_0x1d4ee9){delete _0x1d4ee9[_0xb317('0x8a')];for(var _0x35e86f=0x0;_0x35e86f<Object['keys'](_0x1d4ee9)[_0xb317('0x21')];_0x35e86f++){var _0x6f9d87=Object[_0xb317('0x20')](_0x1d4ee9)[_0x35e86f];if(!_['startsWith'](_0x6f9d87,'cf_')){_0x1d4ee9[_0x6f9d87][_0xb317('0x8b')]=_0x6f9d87;_0x1d4ee9[_0x6f9d87][_0xb317('0x8c')]=_0x6f9d87;}}return _0x1d4ee9;})['then'](function(_0x3444f4){var _0xf63ad3={'where':Boolean(_0x3083af[_0xb317('0x2b')][_0xb317('0x8d')])===!![]?undefined:{'$or':[{'ListId':_0x3083af[_0xb317('0x2b')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xb317('0x24')]['findAll'](_0xf63ad3)['then'](function(_0x5708a3){for(var _0x4e7793=0x0;_0x4e7793<_0x5708a3['length'];_0x4e7793++){var _0x4a67fb=_0xb317('0x27')+_0x5708a3[_0x4e7793]['id'];_0x3444f4[_0x4a67fb][_0xb317('0x8b')]=_0x4a67fb;_0x3444f4[_0x4a67fb]['displayName']=_0x5708a3[_0x4e7793][_0xb317('0x8e')];_0x3444f4[_0x4a67fb][_0xb317('0x8f')]={'type':_0x5708a3[_0x4e7793][_0xb317('0x52')],'values':_0x5708a3[_0x4e7793][_0xb317('0x90')]};}Object[_0xb317('0x20')](_0x3444f4)[_0xb317('0x4a')](function(_0x52ff00){if(!_0x3444f4[_0x52ff00][_0xb317('0x2f')]('columnName')){delete _0x3444f4[_0x52ff00];}});return _0x3444f4;});})[_0xb317('0x17')](respondWithResult(_0x2822e1,null))['catch'](handleError(_0x2822e1,null));};exports[_0xb317('0x7b')]=function(_0x243eec,_0x31b333){var _0x50c5a9;var _0x331e5a;var _0x4feb4a;if(_0x243eec['body']['id']){delete _0x243eec['body']['id'];}return db[_0xb317('0x7c')]['findAll']({'where':{'id':[_0x243eec[_0xb317('0x91')]['to'],_0x243eec[_0xb317('0x91')][_0xb317('0x39')]]}})[_0xb317('0x17')](function(_0x20ccc4){if(_0x20ccc4){if(_0x20ccc4[_0xb317('0x21')]!==0x2){return null;}_0x20ccc4[0x0]=_0x20ccc4[0x0]['get']({'plain':!![]});_0x20ccc4[0x1]=_0x20ccc4[0x1][_0xb317('0x92')]({'plain':!![]});delete _0x20ccc4[0x0]['id'];delete _0x20ccc4[0x1]['id'];return _[_0xb317('0x93')](_0x20ccc4[0x0],_0x20ccc4[0x1],function(_0xdc26bf,_0x24dad2){if(Array[_0xb317('0x94')](_0x24dad2)&&!_0x24dad2['length']){return _0xdc26bf;}else if(!_0x24dad2){return _0xdc26bf;}});}})['then'](handleEntityNotFound(_0x31b333,null))[_0xb317('0x17')](function(_0x36b5d1){if(_0x36b5d1){if(_0x36b5d1[_0xb317('0x8a')]&&_[_0xb317('0x94')](_0x36b5d1[_0xb317('0x8a')])){_0x36b5d1[_0xb317('0x8a')]=_0x36b5d1[_0xb317('0x8a')][_0xb317('0x95')]();}logger[_0xb317('0x96')](_0xb317('0x97'),_0x243eec[_0xb317('0x91')]['to'],_0x243eec[_0xb317('0x91')][_0xb317('0x39')]);return db[_0xb317('0x98')][_0xb317('0x88')]({'where':{'ContactId':[_0x243eec['body']['to'],_0x243eec[_0xb317('0x91')][_0xb317('0x39')]]}})[_0xb317('0x17')](function(_0x19be18){logger[_0xb317('0x96')](_0xb317('0x99'),_0x19be18);return db['CmHopperBlack'][_0xb317('0x88')]({'where':{'ContactId':[_0x243eec[_0xb317('0x91')]['to'],_0x243eec[_0xb317('0x91')][_0xb317('0x39')]]}})[_0xb317('0x17')](function(_0x5de5b1){logger[_0xb317('0x96')](_0xb317('0x9a'),_0x5de5b1);return db[_0xb317('0x7c')][_0xb317('0x9b')](_0x36b5d1);});});}})[_0xb317('0x17')](function(_0x54c071){if(_0x54c071){_0x50c5a9=_0x54c071;_0x331e5a={'ContactId':_0x50c5a9['id']};_0x4feb4a={'where':{'ContactId':[_0x243eec[_0xb317('0x91')]['to'],_0x243eec[_0xb317('0x91')][_0xb317('0x39')]]}};return db[_0xb317('0x9c')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0x9d')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db['ChatOfflineMessage']['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0x9e')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})['then'](function(){if(_0x50c5a9){return db[_0xb317('0x9f')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0x9e')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0x9f')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa0')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa1')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa2')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db['FaxMessage']['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa3')]['update'](_0x331e5a,_0x4feb4a);}})['then'](function(){if(_0x50c5a9){return db[_0xb317('0xa4')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa5')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db['CmHopperHistory'][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa6')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa7')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xa8')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})['then'](function(){if(_0x50c5a9){return db[_0xb317('0xa9')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db['MailQueueReport']['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xaa')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})['then'](function(){if(_0x50c5a9){return db['SmsQueueReport'][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})['then'](function(){if(_0x50c5a9){return db[_0xb317('0xab')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xac')][_0xb317('0x16')](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xad')]['update'](_0x331e5a,_0x4feb4a);}})[_0xb317('0x17')](function(){if(_0x50c5a9){return db[_0xb317('0xae')]['update'](_0x331e5a,_0x4feb4a);}})['then'](function(){if(_0x50c5a9){return db[_0xb317('0x7c')]['destroy']({'where':{'id':[_0x243eec[_0xb317('0x91')]['to'],_0x243eec[_0xb317('0x91')][_0xb317('0x39')]]}});}})[_0xb317('0x17')](function(){if(_0x50c5a9){return _0x50c5a9;}})['then'](respondWithResult(_0x31b333,null))[_0xb317('0x87')](handleError(_0x31b333,null));};exports[_0xb317('0x9b')]=function(_0x4fddd9,_0x4f8f5f){return db['CmContact'][_0xb317('0x1f')]()[_0xb317('0x17')](function(_0x1d78af){if(_0x4fddd9['body']['tags']&&_[_0xb317('0x94')](_0x4fddd9[_0xb317('0x91')][_0xb317('0x8a')])){if(_0x4fddd9[_0xb317('0x91')][_0xb317('0x8a')]['length']){_0x4fddd9[_0xb317('0x91')]['tags']=_0x4fddd9[_0xb317('0x91')][_0xb317('0x8a')][_0xb317('0x95')](';')+';';}else{_0x4fddd9[_0xb317('0x91')][_0xb317('0x8a')]=null;}}else{_0x4fddd9['body']['tags']=null;}return db[_0xb317('0x7c')]['create'](_0x4fddd9[_0xb317('0x91')],{'fields':_[_0xb317('0x20')](_0x1d78af),'raw':!![]});})[_0xb317('0x17')](respondWithResult(_0x4f8f5f,0xc9))[_0xb317('0x87')](handleError(_0x4f8f5f,null));};exports[_0xb317('0xaf')]=function(_0x2d6f83,_0x4e9ed7){var _0x9c2057=0x0;var _0x1e0b9b=0x0;var _0x1bb9d7=0x0;return db[_0xb317('0x7c')]['describe']()[_0xb317('0x17')](function(_0x1bee70){return BPromise[_0xb317('0xb0')](_0x2d6f83['body'],function(_0x2a9284){var _0x2f5f18={'where':{'$or':[]},'defaults':_0x2a9284,'fields':_['keys'](_0x1bee70),'raw':!![]};if(_0x2a9284['duplicates']){for(var _0x10f33a=0x0;_0x10f33a<_0x2a9284[_0xb317('0xb1')][_0xb317('0x21')];_0x10f33a++){var _0x1cb15c={};_0x1cb15c[_0x2a9284[_0xb317('0xb1')][_0x10f33a]]=_0x2a9284[_0x2a9284['duplicates'][_0x10f33a]];_0x2f5f18['where'][_0xb317('0xb2')][_0xb317('0x23')](_0x1cb15c);}_0x2f5f18[_0xb317('0x34')][_0xb317('0x78')]=_0x2a9284['ListId'];}return db[_0xb317('0x7c')][_0xb317('0xb3')](_0x2f5f18)[_0xb317('0xb4')](function(_0x136dc0,_0x5830e2){if(_0x5830e2){_0x9c2057++;}else{_0x1bb9d7++;}})[_0xb317('0x87')](function(){_0x1e0b9b++;});});})[_0xb317('0x17')](function(_0x4d363f){if(_0x4d363f){return{'success':_0x9c2057,'failure':_0x1e0b9b,'duplicates':_0x1bb9d7};}})[_0xb317('0x17')](respondWithResult(_0x4e9ed7,0xc9))[_0xb317('0x87')](handleError(_0x4e9ed7,null));};exports[_0xb317('0xb5')]=function(_0x5ad62e,_0x418a55){var _0x4e96f9;return db['CmContact'][_0xb317('0x1f')]()['then'](function(_0x28901c){return db['CmContact'][_0xb317('0x45')]({'where':{'id':_0x5ad62e[_0xb317('0x89')]['id']},'include':[{'model':db[_0xb317('0x46')],'as':_0xb317('0x84'),'attributes':['id',_0xb317('0x1c'),_0xb317('0x38')],'required':_0x5ad62e[_0xb317('0x2b')][_0xb317('0x5c')]?!![]:![]}],'attributes':_[_0xb317('0x20')](_0x28901c)});})[_0xb317('0x17')](function(_0x3b322e){if(!_[_0xb317('0x55')](_0x3b322e)){_0x4e96f9=_0x3b322e[_0xb317('0x92')]({'plain':!![]});var _0x283a92={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3b322e&&_0x3b322e[_0xb317('0x78')]){if(_0x3b322e[_0xb317('0x78')]){_0x283a92[_0xb317('0x34')][_0xb317('0xb6')][_0xb317('0x23')]({'ListId':{'$ne':_0x3b322e[_0xb317('0x78')]}});}}return db['CmCustomField'][_0xb317('0xb7')](_0x283a92);}})[_0xb317('0x17')](function(_0x4bc09a){if(!_[_0xb317('0x55')](_0x4bc09a)){return _[_0xb317('0xb8')](_0x4e96f9,_[_0xb317('0x49')](_0x4bc09a,function(_0x957cf0){return util[_0xb317('0xb9')](_0xb317('0xba'),_0x957cf0['id']);}));}})[_0xb317('0x17')](handleEntityNotFound(_0x418a55,null))[_0xb317('0x17')](respondWithResult(_0x418a55,null))[_0xb317('0x87')](handleError(_0x418a55,null));};exports[_0xb317('0x16')]=function(_0x516527,_0x20c4b6){var _0x5df5ee;if(_0x516527[_0xb317('0x91')]['id']){delete _0x516527[_0xb317('0x91')]['id'];}return db[_0xb317('0x7c')][_0xb317('0x45')]({'where':{'id':_0x516527[_0xb317('0x89')]['id']}})[_0xb317('0x17')](handleEntityNotFound(_0x20c4b6,null))[_0xb317('0x17')](saveUpdates(_0x516527[_0xb317('0x91')],null))[_0xb317('0x17')](function(_0x23a3ea){_0x5df5ee=_0x23a3ea;var _0x2a76cc={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x23a3ea&&_0x23a3ea[_0xb317('0x78')]){if(_0x23a3ea[_0xb317('0x78')]){_0x2a76cc[_0xb317('0x34')][_0xb317('0xb6')][_0xb317('0x23')]({'ListId':{'$ne':_0x23a3ea[_0xb317('0x78')]}});}}return db['CmCustomField'][_0xb317('0xb7')](_0x2a76cc);})[_0xb317('0x17')](function(_0x167bde){if(_0x167bde){return _[_0xb317('0xb8')](_[_0xb317('0xbb')](_0x516527['body'],function(_0x27d7b2,_0x478599){return _[_0xb317('0x22')](_0x478599,_0xb317('0x27'));}),_[_0xb317('0x49')](_0x167bde,function(_0x18e2a2){return util[_0xb317('0xb9')](_0xb317('0xba'),_0x18e2a2['id']);}));}})[_0xb317('0x17')](function(_0x5acadc){if(_0x5acadc&&!_[_0xb317('0x57')](_0x5acadc)){var _0x4d25b4=squel[_0xb317('0x16')]()[_0xb317('0xbc')](_0xb317('0x3b'))[_0xb317('0xbd')](_0x5acadc)[_0xb317('0x34')](_0xb317('0xbe'),_0x516527[_0xb317('0x89')]['id'])[_0xb317('0xbf')]();return db['sequelize'][_0xb317('0x2b')](_0x4d25b4['text'],{'replacements':_0x4d25b4[_0xb317('0x90')]});}})[_0xb317('0x17')](function(){if(_0x516527[_0xb317('0x91')][_0xb317('0xc0')]&&_0x5df5ee){return db[_0xb317('0x98')][_0xb317('0x16')]({'phone':_0x516527[_0xb317('0x91')]['phone']},{'where':{'ContactId':_0x5df5ee['id']}});}})[_0xb317('0x17')](function(){return _0x5df5ee;})['then'](respondWithResult(_0x20c4b6,null))[_0xb317('0x87')](handleError(_0x20c4b6,null));};exports[_0xb317('0xc1')]=function(_0x4148cd,_0x3373a3){var _0x5291aa={};var _0x30e298={};var _0x310f0b;var _0x4881ce;return db['CmContact'][_0xb317('0x25')]({'where':{'id':_0x4148cd[_0xb317('0x89')]['id']}})['then'](handleEntityNotFound(_0x3373a3,null))[_0xb317('0x17')](function(_0x329a20){if(_0x329a20){_0x310f0b=_0x329a20;_0x30e298[_0xb317('0x2a')]=_['keys'](db[_0xb317('0x46')][_0xb317('0xc2')]);_0x30e298[_0xb317('0x2b')]=_[_0xb317('0x20')](_0x4148cd[_0xb317('0x2b')]);_0x30e298[_0xb317('0x35')]=_[_0xb317('0x2c')](_0x30e298[_0xb317('0x2a')],_0x30e298['query']);_0x5291aa[_0xb317('0x2d')]=_[_0xb317('0x2c')](_0x30e298['model'],qs[_0xb317('0x2e')](_0x4148cd[_0xb317('0x2b')][_0xb317('0x2e')]));_0x5291aa[_0xb317('0x2d')]=_0x5291aa['attributes'][_0xb317('0x21')]?_0x5291aa[_0xb317('0x2d')]:_0x30e298[_0xb317('0x2a')];_0x5291aa[_0xb317('0x32')]=qs['sort'](_0x4148cd[_0xb317('0x2b')][_0xb317('0x33')]);_0x5291aa[_0xb317('0x34')]=qs[_0xb317('0x35')](_['pick'](_0x4148cd[_0xb317('0x2b')],_0x30e298['filters']));if(_0x4148cd['query'][_0xb317('0x54')]){_0x5291aa[_0xb317('0x34')]=_['merge'](_0x5291aa['where'],{'$or':_[_0xb317('0x49')](_0x5291aa[_0xb317('0x2d')],function(_0x1e9edd){var _0x4c4a0e={};_0x4c4a0e[_0x1e9edd]={'$like':'%'+_0x4148cd[_0xb317('0x2b')]['filter']+'%'};return _0x4c4a0e;})});}_0x5291aa=_[_0xb317('0x7b')]({},_0x5291aa,_0x4148cd['options']);return _0x310f0b[_0xb317('0xc1')](_0x5291aa);}})[_0xb317('0x17')](function(_0x57375a){if(_0x57375a){_0x4881ce=_0x57375a['length'];if(!_0x4148cd[_0xb317('0x2b')][_0xb317('0x2f')](_0xb317('0x30'))){_0x5291aa[_0xb317('0x14')]=qs[_0xb317('0x14')](_0x4148cd[_0xb317('0x2b')]['limit']);_0x5291aa[_0xb317('0x31')]=qs[_0xb317('0x31')](_0x4148cd[_0xb317('0x2b')][_0xb317('0x31')]);}return _0x310f0b[_0xb317('0xc1')](_0x5291aa);}})[_0xb317('0x17')](function(_0xad067a){if(_0xad067a){return _0xad067a?{'count':_0x4881ce,'rows':_0xad067a}:null;}})[_0xb317('0x17')](respondWithResult(_0x3373a3,null))['catch'](handleError(_0x3373a3,null));};exports[_0xb317('0xc3')]=function(_0x3cc88c,_0x461fdb){if(_0x3cc88c['body']['id']){delete _0x3cc88c[_0xb317('0x91')]['id'];}return db[_0xb317('0x7c')][_0xb317('0x25')]({'where':{'id':_0x3cc88c[_0xb317('0x89')]['id']}})[_0xb317('0x17')](handleEntityNotFound(_0x461fdb,null))[_0xb317('0x17')](function(_0xac66bc){if(_0xac66bc){return _0xac66bc[_0xb317('0xc3')](_0x3cc88c[_0xb317('0x91')][_0xb317('0xc4')]||[]);}return null;})['then'](respondWithResult(_0x461fdb,null))['catch'](handleError(_0x461fdb,null));};exports[_0xb317('0xc5')]=function(_0x1869a9,_0x15b9ef){var _0x5d388d={'raw':![],'where':{}};var _0x5ee89d={};var _0x3eb031={'count':0x0,'rows':[]};return db['CmContact'][_0xb317('0x25')]({'where':{'id':_0x1869a9[_0xb317('0x89')]['id']}})[_0xb317('0x17')](handleEntityNotFound(_0x15b9ef,null))[_0xb317('0x17')](function(_0x2c3ec3){if(_0x2c3ec3){_0x5ee89d[_0xb317('0x2a')]=_[_0xb317('0x20')](db[_0xb317('0x98')][_0xb317('0xc2')]);_0x5ee89d[_0xb317('0x2b')]=_[_0xb317('0x20')](_0x1869a9[_0xb317('0x2b')]);_0x5ee89d[_0xb317('0x35')]=_[_0xb317('0x2c')](_0x5ee89d[_0xb317('0x2a')],_0x5ee89d[_0xb317('0x2b')]);_0x5d388d[_0xb317('0x2d')]=_[_0xb317('0x2c')](_0x5ee89d[_0xb317('0x2a')],qs[_0xb317('0x2e')](_0x1869a9[_0xb317('0x2b')][_0xb317('0x2e')]));_0x5d388d['attributes']=_0x5d388d[_0xb317('0x2d')][_0xb317('0x21')]?_0x5d388d[_0xb317('0x2d')]:_0x5ee89d['model'];if(!_0x1869a9[_0xb317('0x2b')]['hasOwnProperty']('nolimit')){_0x5d388d[_0xb317('0x14')]=qs[_0xb317('0x14')](_0x1869a9[_0xb317('0x2b')][_0xb317('0x14')]);_0x5d388d[_0xb317('0x31')]=qs[_0xb317('0x31')](_0x1869a9[_0xb317('0x2b')][_0xb317('0x31')]);}_0x5d388d['order']=qs[_0xb317('0x33')](_0x1869a9[_0xb317('0x2b')][_0xb317('0x33')]);_0x5d388d[_0xb317('0x34')]=qs[_0xb317('0x35')](_['pick'](_0x1869a9[_0xb317('0x2b')],_0x5ee89d[_0xb317('0x35')]));_0x5d388d['where']['ContactId']=_0x2c3ec3['id'];if(_0x1869a9[_0xb317('0x2b')][_0xb317('0x54')]){_0x5d388d[_0xb317('0x34')]=_[_0xb317('0x7b')](_0x5d388d[_0xb317('0x34')],{'$or':_[_0xb317('0x49')](_0x5d388d['attributes'],function(_0x22840a){var _0x3ed04b={};_0x3ed04b[_0x22840a]={'$like':'%'+_0x1869a9[_0xb317('0x2b')][_0xb317('0x54')]+'%'};return _0x3ed04b;})});}_0x5d388d=_[_0xb317('0x7b')]({},_0x5d388d,_0x1869a9['options']);return db[_0xb317('0x98')][_0xb317('0x15')]({'where':_0x5d388d[_0xb317('0x34')]})[_0xb317('0x17')](function(_0x1737f3){_0x3eb031[_0xb317('0x15')]=_0x1737f3;if(_0x1869a9['query'][_0xb317('0xc6')]){_0x5d388d[_0xb317('0xc7')]=[{'all':!![]}];}return db[_0xb317('0x98')][_0xb317('0xb7')](_0x5d388d);})['then'](function(_0x58d9b0){_0x3eb031[_0xb317('0x86')]=_0x58d9b0;return _0x3eb031;});}})[_0xb317('0x17')](respondWithFilteredResult(_0x15b9ef,_0x5d388d))[_0xb317('0x87')](handleError(_0x15b9ef,null));};exports[_0xb317('0xc8')]=function(_0x5c23f5,_0x31d422){var _0x44e372={'raw':!![],'where':{}};var _0x3f69d8={};var _0x3c68e4={'count':0x0,'rows':[]};return db[_0xb317('0x7c')][_0xb317('0x25')]({'where':{'id':_0x5c23f5[_0xb317('0x89')]['id']}})['then'](handleEntityNotFound(_0x31d422,null))['then'](function(_0x29f884){if(_0x29f884){_0x3f69d8[_0xb317('0x2a')]=_['keys'](db[_0xb317('0xc9')]['rawAttributes']);_0x3f69d8[_0xb317('0x2b')]=_['keys'](_0x5c23f5[_0xb317('0x2b')]);_0x3f69d8[_0xb317('0x35')]=_[_0xb317('0x2c')](_0x3f69d8['model'],_0x3f69d8[_0xb317('0x2b')]);_0x44e372[_0xb317('0x2d')]=_['intersection'](_0x3f69d8[_0xb317('0x2a')],qs[_0xb317('0x2e')](_0x5c23f5['query'][_0xb317('0x2e')]));_0x44e372[_0xb317('0x2d')]=_0x44e372[_0xb317('0x2d')][_0xb317('0x21')]?_0x44e372[_0xb317('0x2d')]:_0x3f69d8[_0xb317('0x2a')];if(!_0x5c23f5[_0xb317('0x2b')][_0xb317('0x2f')](_0xb317('0x30'))){_0x44e372[_0xb317('0x14')]=qs[_0xb317('0x14')](_0x5c23f5[_0xb317('0x2b')][_0xb317('0x14')]);_0x44e372['offset']=qs['offset'](_0x5c23f5[_0xb317('0x2b')][_0xb317('0x31')]);}_0x44e372[_0xb317('0x32')]=qs['sort'](_0x5c23f5[_0xb317('0x2b')][_0xb317('0x33')]);_0x44e372[_0xb317('0x34')]=qs['filters'](_[_0xb317('0xca')](_0x5c23f5[_0xb317('0x2b')],_0x3f69d8[_0xb317('0x35')]));_0x44e372[_0xb317('0x34')][_0xb317('0xcb')]=_0x29f884['id'];if(_0x5c23f5[_0xb317('0x2b')][_0xb317('0x54')]){_0x44e372[_0xb317('0x34')]=_[_0xb317('0x7b')](_0x44e372['where'],{'$or':_[_0xb317('0x49')](_0x44e372[_0xb317('0x2d')],function(_0x1cfd43){var _0x5eb2f7={};_0x5eb2f7[_0x1cfd43]={'$like':'%'+_0x5c23f5[_0xb317('0x2b')][_0xb317('0x54')]+'%'};return _0x5eb2f7;})});}_0x44e372=_['merge']({},_0x44e372,_0x5c23f5[_0xb317('0xcc')]);return db[_0xb317('0xc9')]['count']({'where':_0x44e372[_0xb317('0x34')]})[_0xb317('0x17')](function(_0x17e4d2){_0x3c68e4[_0xb317('0x15')]=_0x17e4d2;if(_0x5c23f5[_0xb317('0x2b')][_0xb317('0xc6')]){_0x44e372[_0xb317('0xc7')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xb317('0xb7')](_0x44e372);})[_0xb317('0x17')](function(_0x53b84e){_0x3c68e4[_0xb317('0x86')]=_0x53b84e;return _0x3c68e4;});}})[_0xb317('0x17')](respondWithFilteredResult(_0x31d422,_0x44e372))[_0xb317('0x87')](handleError(_0x31d422,null));};exports['getHopperFinals']=function(_0x31b8e8,_0x18cdfc){var _0x1d042e={'raw':!![],'where':{}};var _0x23d9b7={};var _0x260ac7={'count':0x0,'rows':[]};return db[_0xb317('0x7c')][_0xb317('0x25')]({'where':{'id':_0x31b8e8[_0xb317('0x89')]['id']}})[_0xb317('0x17')](handleEntityNotFound(_0x18cdfc,null))[_0xb317('0x17')](function(_0x561673){if(_0x561673){_0x23d9b7[_0xb317('0x2a')]=_['keys'](db[_0xb317('0xa5')][_0xb317('0xc2')]);_0x23d9b7[_0xb317('0x2b')]=_[_0xb317('0x20')](_0x31b8e8['query']);_0x23d9b7[_0xb317('0x35')]=_[_0xb317('0x2c')](_0x23d9b7[_0xb317('0x2a')],_0x23d9b7['query']);_0x1d042e[_0xb317('0x2d')]=_[_0xb317('0x2c')](_0x23d9b7[_0xb317('0x2a')],qs['fields'](_0x31b8e8[_0xb317('0x2b')][_0xb317('0x2e')]));_0x1d042e[_0xb317('0x2d')]=_0x1d042e['attributes'][_0xb317('0x21')]?_0x1d042e['attributes']:_0x23d9b7['model'];if(!_0x31b8e8[_0xb317('0x2b')][_0xb317('0x2f')](_0xb317('0x30'))){_0x1d042e[_0xb317('0x14')]=qs[_0xb317('0x14')](_0x31b8e8[_0xb317('0x2b')][_0xb317('0x14')]);_0x1d042e[_0xb317('0x31')]=qs[_0xb317('0x31')](_0x31b8e8[_0xb317('0x2b')]['offset']);}_0x1d042e['order']=qs[_0xb317('0x33')](_0x31b8e8[_0xb317('0x2b')][_0xb317('0x33')]);_0x1d042e[_0xb317('0x34')]=qs['filters'](_['pick'](_0x31b8e8[_0xb317('0x2b')],_0x23d9b7[_0xb317('0x35')]));_0x1d042e[_0xb317('0x34')][_0xb317('0xcb')]=_0x561673['id'];if(_0x31b8e8[_0xb317('0x2b')]['filter']){_0x1d042e[_0xb317('0x34')]=_['merge'](_0x1d042e[_0xb317('0x34')],{'$or':_[_0xb317('0x49')](_0x1d042e[_0xb317('0x2d')],function(_0x3a7f0d){var _0x22c180={};_0x22c180[_0x3a7f0d]={'$like':'%'+_0x31b8e8['query'][_0xb317('0x54')]+'%'};return _0x22c180;})});}_0x1d042e=_[_0xb317('0x7b')]({},_0x1d042e,_0x31b8e8[_0xb317('0xcc')]);return db[_0xb317('0xa5')]['count']({'where':_0x1d042e[_0xb317('0x34')]})[_0xb317('0x17')](function(_0x5b9edf){_0x260ac7[_0xb317('0x15')]=_0x5b9edf;if(_0x31b8e8[_0xb317('0x2b')]['includeAll']){_0x1d042e[_0xb317('0xc7')]=[{'all':!![]}];}return db[_0xb317('0xa5')][_0xb317('0xb7')](_0x1d042e);})[_0xb317('0x17')](function(_0x756d6f){_0x260ac7[_0xb317('0x86')]=_0x756d6f;return _0x260ac7;});}})[_0xb317('0x17')](respondWithFilteredResult(_0x18cdfc,_0x1d042e))[_0xb317('0x87')](handleError(_0x18cdfc,null));};exports[_0xb317('0xcd')]=function(_0x21abdd,_0x4e9e36){var _0x579878={'raw':!![],'where':{}};var _0x11b6d4={};var _0x42dbe5={'count':0x0,'rows':[]};return db[_0xb317('0x7c')][_0xb317('0x25')]({'where':{'id':_0x21abdd[_0xb317('0x89')]['id']}})[_0xb317('0x17')](handleEntityNotFound(_0x4e9e36,null))[_0xb317('0x17')](function(_0x2c4f40){if(_0x2c4f40){_0x11b6d4[_0xb317('0x2a')]=_[_0xb317('0x20')](db[_0xb317('0xab')]['rawAttributes']);_0x11b6d4[_0xb317('0x2b')]=_['keys'](_0x21abdd[_0xb317('0x2b')]);_0x11b6d4[_0xb317('0x35')]=_[_0xb317('0x2c')](_0x11b6d4['model'],_0x11b6d4[_0xb317('0x2b')]);_0x579878[_0xb317('0x2d')]=_['intersection'](_0x11b6d4[_0xb317('0x2a')],qs[_0xb317('0x2e')](_0x21abdd[_0xb317('0x2b')][_0xb317('0x2e')]));_0x579878['attributes']=_0x579878[_0xb317('0x2d')][_0xb317('0x21')]?_0x579878[_0xb317('0x2d')]:_0x11b6d4[_0xb317('0x2a')];if(!_0x21abdd[_0xb317('0x2b')]['hasOwnProperty'](_0xb317('0x30'))){_0x579878[_0xb317('0x14')]=qs[_0xb317('0x14')](_0x21abdd[_0xb317('0x2b')][_0xb317('0x14')]);_0x579878['offset']=qs[_0xb317('0x31')](_0x21abdd[_0xb317('0x2b')]['offset']);}_0x579878[_0xb317('0x32')]=qs['sort'](_0x21abdd[_0xb317('0x2b')][_0xb317('0x33')]);_0x579878[_0xb317('0x34')]=qs['filters'](_[_0xb317('0xca')](_0x21abdd[_0xb317('0x2b')],_0x11b6d4[_0xb317('0x35')]));_0x579878[_0xb317('0x34')][_0xb317('0xcb')]=_0x2c4f40['id'];if(_0x21abdd['query']['filter']){_0x579878['where']=_[_0xb317('0x7b')](_0x579878['where'],{'$or':_[_0xb317('0x49')](_0x579878[_0xb317('0x2d')],function(_0x56d402){var _0x521fbf={};_0x521fbf[_0x56d402]={'$like':'%'+_0x21abdd[_0xb317('0x2b')][_0xb317('0x54')]+'%'};return _0x521fbf;})});}_0x579878=_[_0xb317('0x7b')]({},_0x579878,_0x21abdd[_0xb317('0xcc')]);return db[_0xb317('0xab')][_0xb317('0x15')]({'where':_0x579878[_0xb317('0x34')]})[_0xb317('0x17')](function(_0xf13271){_0x42dbe5[_0xb317('0x15')]=_0xf13271;if(_0x21abdd[_0xb317('0x2b')][_0xb317('0xc6')]){_0x579878['include']=[{'all':!![]}];}return db[_0xb317('0xab')][_0xb317('0xb7')](_0x579878);})[_0xb317('0x17')](function(_0x3ec4ab){_0x42dbe5[_0xb317('0x86')]=_0x3ec4ab;return _0x42dbe5;});}})['then'](respondWithFilteredResult(_0x4e9e36,_0x579878))[_0xb317('0x87')](handleError(_0x4e9e36,null));};exports[_0xb317('0xce')]=function(_0x47349e,_0x3027c7){try{if(!_0x47349e[_0xb317('0x91')][_0xb317('0x78')]){throw new Error(_0xb317('0xcf'));}if(!_0x47349e[_0xb317('0x91')]['binding_keys']){throw new Error(_0xb317('0xd0'));}if(!_0x47349e[_0xb317('0x91')][_0xb317('0xd1')]){throw new Error(_0xb317('0xd2'));}if(!_0x47349e[_0xb317('0x91')][_0xb317('0xd3')]){throw new Error(_0xb317('0xd4'));}var _0x19ba74=_0x47349e['body']['binding_keys'][_0xb317('0x48')](',');var _0xa89973=_0x47349e[_0xb317('0x91')]['binding_values']['split'](',');if(!_0x19ba74['length']||!_0xa89973[_0xb317('0x21')]||_0x19ba74['length']!==_0xa89973[_0xb317('0x21')]){throw new Error(_0xb317('0xd5'));}_0x47349e['body'][_0xb317('0x2e')]=_[_0xb317('0xd6')](_0x19ba74,_0xa89973);if(!_0x47349e['body'][_0xb317('0x2e')][_0xb317('0xc0')]){throw new Error(_0xb317('0xd7'));}if(!_0x47349e[_0xb317('0x91')]['fields'][_0xb317('0xd8')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x5bd0a2=path[_0xb317('0x95')](config[_0xb317('0xd9')],_0xb317('0xda'),_0x47349e['file'][_0xb317('0xdb')]);fs[_0xb317('0xdc')](_0x5bd0a2,parseInt(_0xb317('0xdd'),0x8));var _0x514f9e=require(_0xb317('0xde'))[_0xb317('0xdf')](path[_0xb317('0x95')](__dirname,_0xb317('0xe0')),[_0x5bd0a2,_0x47349e[_0xb317('0x91')]['binding_keys'],_0x47349e[_0xb317('0x91')][_0xb317('0xd1')],_0x47349e['body'][_0xb317('0x78')],_0x47349e[_0xb317('0x91')]['CompanyId'],_0x47349e[_0xb317('0x91')][_0xb317('0xb1')],_0x47349e['body'][_0xb317('0xd3')]]);return _0x3027c7['status'](0xc8)['json']({'message':'File\x20uploaded\x20correctly!','pid':_0x514f9e['pid']});}catch(_0x5a6179){return _0x3027c7[_0xb317('0x12')](0x1f4)[_0xb317('0x1d')](_0x5a6179);}};exports[_0xb317('0xe1')]=function(_0x5da89f,_0x5c0720){var _0x298865=fs['createReadStream'](_0x5da89f[_0xb317('0xe2')]['path']);Papa['parse'](_0x298865,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x24209d){return _0x5c0720[_0xb317('0x12')](0xc8)[_0xb317('0xe3')]({'file':_0x5da89f['file'],'fields':_0x24209d[_0xb317('0xe4')][_0xb317('0x2e')]});}});};exports[_0xb317('0xe5')]=function(_0x1cc0a8,_0x3e91af){return db['User'][_0xb317('0xb7')]({'raw':!![],'attributes':['id'],'where':{'role':_0xb317('0x74')}})['then'](function(_0x56f435){var _0x4fcf28=![];if(!_0x1cc0a8[_0xb317('0x91')][_0xb317('0x78')]){throw new Error(_0xb317('0xcf'));}if(!_0x1cc0a8[_0xb317('0x91')][_0xb317('0xe6')][_0xb317('0xc0')]){throw new Error(_0xb317('0xd7'));}if(!_0x1cc0a8[_0xb317('0x91')][_0xb317('0xe6')]['firstName']){throw new Error(_0xb317('0xe7'));}if(!_0x1cc0a8[_0xb317('0x91')][_0xb317('0xd3')]){throw new Error(_0xb317('0xd4'));}var _0x4cdc6c=require('child_process')['fork'](path[_0xb317('0x95')](__dirname,_0xb317('0xe8')),[_0x1cc0a8['params']['id'],JSON[_0xb317('0xe9')](_0x1cc0a8['body']),JSON[_0xb317('0xe9')](_0x56f435)]);_0x4cdc6c['on'](_0xb317('0xea'),function(){_0x4fcf28=!![];return _0x3e91af[_0xb317('0x12')](0xc8)['json']({'message':_0xb317('0xeb'),'pid':_0x4cdc6c['pid']});});_0x4cdc6c['on'](_0xb317('0xec'),function(_0x1a3960){if(_0x1a3960&&!_0x4fcf28){return _0x3e91af[_0xb317('0x12')](0x1f4)[_0xb317('0xe3')]({'message':_0xb317('0xed'),'pid':_0x4cdc6c[_0xb317('0xee')]});}});})[_0xb317('0x87')](handleError(_0x3e91af,null));};exports[_0xb317('0xef')]=function(_0x55ada1,_0x191e3c){var _0x3a0b41=['mail','chat',_0xb317('0xf0'),_0xb317('0xf1'),_0xb317('0xf2'),_0xb317('0xf3'),_0xb317('0xf4')];var _0x13fa3b={'offset':0x0,'order':qs['sort'](_0xb317('0xf5'))},_0x267eba={'count':0x0,'rows':[]};Promise[_0xb317('0x71')]()[_0xb317('0x17')](function(){if(_0x55ada1[_0xb317('0x2b')][_0xb317('0xf6')]){if(!_[_0xb317('0xf7')](_0x3a0b41,_0x55ada1[_0xb317('0x2b')][_0xb317('0xf6')][_0xb317('0xf8')]())){throw new Error('Invalid\x20channel');}_0x3a0b41=[_0x55ada1[_0xb317('0x2b')][_0xb317('0xf6')]['toLowerCase']()];}if(_0x55ada1[_0xb317('0x2b')]['range']){try{var _0x437309=JSON['parse'](_0x55ada1['query']['range']);if(!moment(_0x437309[_0xb317('0x39')])[_0xb317('0xf9')]()){throw new Error(_0xb317('0xfa'));}if(!moment(_0x437309['to'])[_0xb317('0xf9')]()){throw new Error(_0xb317('0xfb'));}}catch(_0xe61a7a){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x55ada1[_0xb317('0x2b')][_0xb317('0x2f')](_0xb317('0x30'))){_0x13fa3b['limit']=qs[_0xb317('0x14')](_0x55ada1[_0xb317('0x2b')][_0xb317('0x14')]||0xa);_0x13fa3b[_0xb317('0x31')]=qs['offset'](_0x55ada1[_0xb317('0x2b')][_0xb317('0x31')]);}var _0x18408b=_0x3a0b41[_0xb317('0x49')](function(_0x297e79){if(_0x297e79===_0xb317('0xf4')){var _0x305fcb={'attributes':['id',_0xb317('0xfc'),'type',_0xb317('0xfd'),_0xb317('0xfe'),_0xb317('0xff'),'starttime',_0xb317('0x100'),_0xb317('0x101'),'note',_0xb317('0x102'),_0xb317('0x103'),'userSecondDisposition','userThirdDisposition',_0xb317('0x104')],'where':{'ContactId':_0x55ada1[_0xb317('0x89')]['id']},'include':[{'model':db[_0xb317('0x4d')],'as':_0xb317('0x4d'),'attributes':['id',_0xb317('0x1c'),_0xb317('0x105'),_0xb317('0x8e')]}],'order':[[_0xb317('0x102'),_0xb317('0x6e')]]};if(_0x55ada1[_0xb317('0x2b')][_0xb317('0x106')]){_0x305fcb[_0xb317('0x34')][_0xb317('0x102')]={'$gte':_0x437309[_0xb317('0x39')],'$lte':_0x437309['to']};}return db[_0xb317('0xa7')][_0xb317('0x107')](_0x305fcb)['then'](function(_0x5a5f30){_0x267eba['count']+=_0x5a5f30[_0xb317('0x15')];return _[_0xb317('0x49')](_0x5a5f30[_0xb317('0x86')],function(_0x45a4e7){var _0x2e3a7a=_0x45a4e7['get']({'plain':!![]});_0x2e3a7a[_0xb317('0xf6')]=_0x297e79;if(_0x2e3a7a['User']){_0x2e3a7a[_0xb317('0x4d')]={'id':_0x2e3a7a[_0xb317('0x4d')]['id'],'name':_0x2e3a7a['User']['name'],'fullname':_0x2e3a7a[_0xb317('0x4d')][_0xb317('0x105')],'alias':_0x2e3a7a[_0xb317('0x4d')]['alias']};}return _0x2e3a7a;});});}else{var _0xfdb401=_['startCase'](_0x297e79)+(_0x297e79===_0xb317('0x108')?'Website':_0xb317('0x109'));var _0x10c4a0={'attributes':['id','closed',_0xb317('0x10a'),'createdAt','note',_0xb317('0x10b'),_0xb317('0x10c'),_0xb317('0x10d'),_0xb317('0x104'),_0xfdb401+'Id'],'where':{'ContactId':_0x55ada1[_0xb317('0x89')]['id']},'include':[{'model':db[_0xfdb401],'as':_0xb317('0x109'),'attributes':['id',_0xb317('0x1c'),_0xb317('0x10e')]},{'model':db['User'],'as':_0xb317('0x10f'),'attributes':['id','name',_0xb317('0x105')]},{'model':db[_0xb317('0x46')],'as':_0xb317('0x84'),'attributes':['id',_0xb317('0x1c'),_0xb317('0x38')],'through':{'attributes':[]}}],'order':[['createdAt',_0xb317('0x6e')]]};if(_0x55ada1[_0xb317('0x2b')][_0xb317('0x106')]){_0x10c4a0[_0xb317('0x34')][_0xb317('0x102')]={'$gte':_0x437309[_0xb317('0x39')],'$lte':_0x437309['to']};}switch(_0x297e79){case _0xb317('0x108'):_0x10c4a0[_0xb317('0x2d')]['push']('browserName',_0xb317('0x110'),_0xb317('0x111'),_0xb317('0x112'),_0xb317('0x113'),'ratingMessage',_0xb317('0x114'),_0xb317('0x115'),_0xb317('0x116'));break;case _0xb317('0x117'):_0x10c4a0[_0xb317('0x2d')][_0xb317('0x23')](_0xb317('0x118'),_0xb317('0x119'));break;case'openchannel':_0x10c4a0[_0xb317('0x2d')][_0xb317('0x23')](_0xb317('0x11a'),_0xb317('0x11b'));break;}return db[_[_0xb317('0x11c')](_0x297e79)+_0xb317('0x11d')][_0xb317('0x107')](_0x10c4a0)[_0xb317('0x17')](function(_0x2f4415){_0x267eba[_0xb317('0x15')]+=_0x2f4415[_0xb317('0x15')];return _[_0xb317('0x49')](_0x2f4415[_0xb317('0x86')],function(_0x10bdaf){var _0x553e22=_0x10bdaf['get']({'plain':!![]});_0x553e22[_0xb317('0xf6')]=_0x297e79;if(_0x553e22['Owner']){_0x553e22[_0xb317('0x10f')]={'id':_0x553e22[_0xb317('0x10f')]['id'],'name':_0x553e22['Owner'][_0xb317('0x1c')],'fullname':_0x553e22[_0xb317('0x10f')][_0xb317('0x105')]};}return _0x553e22;});});}});return Promise[_0xb317('0x28')](_0x18408b);})[_0xb317('0x17')](function(_0x3856f1){return _(_0x3856f1)[_0xb317('0x11e')]()[_0xb317('0x11f')](_0xb317('0x102'))[_0xb317('0x120')]()[_0xb317('0x47')]();})[_0xb317('0x17')](function(_0x2051c6){_0x267eba[_0xb317('0x86')]=_0x13fa3b[_0xb317('0x14')]?_0x2051c6[_0xb317('0x121')](_0x13fa3b['offset'],_0x13fa3b[_0xb317('0x31')]+_0x13fa3b[_0xb317('0x14')]):_0x2051c6;return _0x267eba;})[_0xb317('0x17')](respondWithFilteredResult(_0x191e3c,_0x13fa3b))[_0xb317('0x87')](handleError(_0x191e3c,null));};
\ No newline at end of file
index da54bba..31feae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b32=['update','remove','emit','exports','events','../../mysqldb','setMaxListeners'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x1b32,0xdd));var _0x21b3=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x1b32[_0x1da527];return _0x40fc7c;};'use strict';var EventEmitter=require(_0x21b3('0x0'));var CmContact=require(_0x21b3('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x21b3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x21b3('0x3'),'afterDestroy':_0x21b3('0x4')};function emitEvent(_0x4671c1){return function(_0x18ec70,_0x4cd780,_0xdfd17b){CmContactEvents[_0x21b3('0x5')](_0x4671c1+':'+_0x18ec70['id'],_0x18ec70);CmContactEvents['emit'](_0x4671c1,_0x18ec70);_0xdfd17b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x21b3('0x6')]=CmContactEvents;
\ No newline at end of file
+var _0x34b1=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmContact','setMaxListeners','save','update'];(function(_0x4e6c79,_0x14bf8c){var _0x421497=function(_0x59a9e2){while(--_0x59a9e2){_0x4e6c79['push'](_0x4e6c79['shift']());}};_0x421497(++_0x14bf8c);}(_0x34b1,0x73));var _0x134b=function(_0x16ba74,_0x2ebcfa){_0x16ba74=_0x16ba74-0x0;var _0x4333a6=_0x34b1[_0x16ba74];return _0x4333a6;};'use strict';var EventEmitter=require(_0x134b('0x0'));var CmContact=require(_0x134b('0x1'))['db'][_0x134b('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x134b('0x3')](0x0);var events={'afterCreate':_0x134b('0x4'),'afterUpdate':_0x134b('0x5'),'afterDestroy':_0x134b('0x6')};function emitEvent(_0x3cced2){return function(_0x411bf6,_0x2bfcf4,_0x2197b9){CmContactEvents['emit'](_0x3cced2+':'+_0x411bf6['id'],_0x411bf6);CmContactEvents[_0x134b('0x7')](_0x3cced2,_0x411bf6);_0x2197b9(null);};}for(var e in events){if(events[_0x134b('0x8')](e)){var event=events[e];CmContact[_0x134b('0x9')](e,emitEvent(event));}}module[_0x134b('0xa')]=CmContactEvents;
\ No newline at end of file
index 77a33be..08ff9cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a4c=['CmHopperBlack','message','Campaign','always','findAll','BlackLists','cmContact,\x20%s,\x20%s','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','define','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','error','afterCreate','inspect','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','findOne','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','cmContact','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','outbound','dialCheckDuplicateType','CmList','Lists','get','onlyIfOpen','length'];(function(_0x4d94db,_0x5a2d71){var _0x41d157=function(_0x61c243){while(--_0x61c243){_0x4d94db['push'](_0x4d94db['shift']());}};_0x41d157(++_0x5a2d71);}(_0x1a4c,0x164));var _0xc1a4=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1a4c[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xc1a4('0x0'));var util=require('util');var logger=require(_0xc1a4('0x1'))(_0xc1a4('0x2'));var moment=require(_0xc1a4('0x3'));var BPromise=require('bluebird');var rp=require(_0xc1a4('0x4'));var fs=require('fs');var path=require(_0xc1a4('0x5'));var rimraf=require(_0xc1a4('0x6'));var config=require(_0xc1a4('0x7'));var attributes=require(_0xc1a4('0x8'));module['exports']=function(_0x3b348b,_0x58e5b0){return _0x3b348b[_0xc1a4('0x9')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0xc1a4('0xa'),'fields':[_0xc1a4('0xa')]},{'name':_0xc1a4('0xb'),'fields':['firstName',_0xc1a4('0xc'),_0xc1a4('0xa'),_0xc1a4('0xd'),_0xc1a4('0xe'),_0xc1a4('0xf')],'type':_0xc1a4('0x10')}],'timestamps':!![],'charset':_0xc1a4('0x11'),'collate':_0xc1a4('0x12'),'hooks':{'afterCreate':function(_0x4ec35f,_0x5b23fb,_0x17f5ef){var _0x384a1a=_0x3b348b[_0xc1a4('0x13')];var _0x20ec8b=_0x4ec35f['get']({'plain':!![]});function _0x3b6292(){return function(_0xae0b42){logger[_0xc1a4('0x14')]('cmContact',_0xc1a4('0x15'),util[_0xc1a4('0x16')](_0xae0b42,{'showHidden':![],'depth':null}));};}var _0xdf4d9f=function(_0x206a1f){return new BPromise(function(_0x2fa0ca,_0x4e4787){_0x384a1a['CmHopper']['findOne']({'where':{'phone':_0x20ec8b[_0xc1a4('0xa')],'VoiceQueueId':_0x206a1f['id']}})['then'](function(_0x52f1bf){if(!_[_0xc1a4('0x17')](_0x52f1bf)){throw new Error(_0xc1a4('0x18')+_0x20ec8b[_0xc1a4('0xa')]+_0xc1a4('0x19')+_0x206a1f['id']);}return _0x384a1a[_0xc1a4('0x1a')][_0xc1a4('0x1b')]({'phone':_0x20ec8b['phone'],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'priority':_0x20ec8b[_0xc1a4('0x1d')]?_0x20ec8b[_0xc1a4('0x1d')]:0x2,'scheduledat':_0x20ec8b[_0xc1a4('0x1e')]?_0x20ec8b['scheduledat']:moment()[_0xc1a4('0x1f')](_0xc1a4('0x20')),'callback':_0x20ec8b[_0xc1a4('0x21')]?!![]:![],'callbackuniqueid':_0x20ec8b[_0xc1a4('0x21')]?_0x20ec8b[_0xc1a4('0x21')]:undefined,'callbackat':_0x20ec8b[_0xc1a4('0x21')]?moment()[_0xc1a4('0x1f')](_0xc1a4('0x20')):undefined,'VoiceQueueId':_0x206a1f['id']});})[_0xc1a4('0x22')](function(_0x528ddd){_0x4e4787(_0x528ddd);});});};var _0x58dcc2=function(_0xac21f2){return new BPromise(function(_0x1cfc5d,_0x6c1786){_0x384a1a[_0xc1a4('0x1a')][_0xc1a4('0x23')]({'where':{'phone':_0x20ec8b[_0xc1a4('0xa')],'VoiceQueueId':_0xac21f2['id']}})[_0xc1a4('0x24')](function(_0x173db0){if(!_['isNil'](_0x173db0)){throw new Error('cmContact,\x20afterCreate\x20'+_0x20ec8b[_0xc1a4('0xa')]+_0xc1a4('0x25')+_0xac21f2['id']);}return _0x384a1a[_0xc1a4('0x26')][_0xc1a4('0x23')]({'where':{'calleridnum':_0x20ec8b['phone'],'VoiceQueueId':_0xac21f2['id']}});})['then'](function(_0x3612fc){if(!_[_0xc1a4('0x17')](_0x3612fc)){throw new Error(_0xc1a4('0x27')+_0x20ec8b[_0xc1a4('0xa')]+_0xc1a4('0x28')+_0xac21f2['id']);}return _0x384a1a[_0xc1a4('0x1a')][_0xc1a4('0x1b')]({'phone':_0x20ec8b[_0xc1a4('0xa')],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'priority':_0x20ec8b[_0xc1a4('0x1d')]?_0x20ec8b[_0xc1a4('0x1d')]:0x2,'scheduledat':_0x20ec8b[_0xc1a4('0x1e')]?_0x20ec8b[_0xc1a4('0x1e')]:moment()[_0xc1a4('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x20ec8b[_0xc1a4('0x21')]?!![]:![],'callbackuniqueid':_0x20ec8b[_0xc1a4('0x21')]?_0x20ec8b[_0xc1a4('0x21')]:undefined,'callbackat':_0x20ec8b[_0xc1a4('0x21')]?moment()[_0xc1a4('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0xac21f2['id']});})['catch'](function(_0x1a2b2e){_0x6c1786(_0x1a2b2e);});});};function _0x139657(){return function(_0x5f1216){logger[_0xc1a4('0x14')](_0xc1a4('0x29'),_0xc1a4('0x15'),util['inspect'](_0x5f1216,{'showHidden':![],'depth':null}));};}var _0x158637=function(_0x22cbd9){return new BPromise(function(_0x475697,_0x25facc){_0x384a1a[_0xc1a4('0x1a')]['findOne']({'where':{'phone':_0x20ec8b[_0xc1a4('0xa')],'CampaignId':_0x22cbd9['id']}})['then'](function(_0x3cbd33){if(!_[_0xc1a4('0x17')](_0x3cbd33)){throw new Error(_0xc1a4('0x18')+_0x20ec8b[_0xc1a4('0xa')]+_0xc1a4('0x2a')+_0x22cbd9['id']);}return _0x384a1a[_0xc1a4('0x1a')]['create']({'phone':_0x20ec8b['phone'],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'priority':_0x20ec8b[_0xc1a4('0x1d')]?_0x20ec8b['priority']:0x2,'scheduledat':_0x20ec8b[_0xc1a4('0x1e')]?_0x20ec8b[_0xc1a4('0x1e')]:moment()[_0xc1a4('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x20ec8b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x20ec8b['callbackUniqueid']?_0x20ec8b[_0xc1a4('0x21')]:undefined,'callbackat':_0x20ec8b[_0xc1a4('0x21')]?moment()[_0xc1a4('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x22cbd9['id']});})[_0xc1a4('0x22')](function(_0x4f6100){_0x25facc(_0x4f6100);});});};var _0x265383=function(_0x90b689){return new BPromise(function(_0x4b9524,_0x4440c3){_0x384a1a['CmHopper'][_0xc1a4('0x23')]({'where':{'phone':_0x20ec8b[_0xc1a4('0xa')],'CampaignId':_0x90b689['id']}})[_0xc1a4('0x24')](function(_0x22a43e){if(!_['isNil'](_0x22a43e)){throw new Error(_0xc1a4('0x18')+_0x20ec8b['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x90b689['id']);}return _0x384a1a[_0xc1a4('0x26')][_0xc1a4('0x23')]({'where':{'calleridnum':_0x20ec8b[_0xc1a4('0xa')],'CampaignId':_0x90b689['id']}});})['then'](function(_0x27380b){if(!_[_0xc1a4('0x17')](_0x27380b)){throw new Error(_0xc1a4('0x27')+_0x20ec8b[_0xc1a4('0xa')]+_0xc1a4('0x2b')+_0x90b689['id']);}return _0x384a1a[_0xc1a4('0x1a')]['create']({'phone':_0x20ec8b[_0xc1a4('0xa')],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'priority':_0x20ec8b['priority']?_0x20ec8b[_0xc1a4('0x1d')]:0x2,'scheduledat':_0x20ec8b['scheduledat']?_0x20ec8b['scheduledat']:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x20ec8b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x20ec8b[_0xc1a4('0x21')]?_0x20ec8b[_0xc1a4('0x21')]:undefined,'callbackat':_0x20ec8b['callbackUniqueid']?moment()[_0xc1a4('0x1f')](_0xc1a4('0x20')):undefined,'CampaignId':_0x90b689['id']});})[_0xc1a4('0x22')](function(_0x1d2c7c){_0x4440c3(_0x1d2c7c);});});};if(_0x20ec8b[_0xc1a4('0x1c')]){_0x384a1a[_0xc1a4('0x2c')]['findAll']({'where':{'type':_0xc1a4('0x2d')},'attributes':['id',_0xc1a4('0x2e')],'include':[{'model':_0x384a1a[_0xc1a4('0x2f')],'as':_0xc1a4('0x30'),'where':{'id':_0x20ec8b[_0xc1a4('0x1c')]}}]})[_0xc1a4('0x24')](function(_0x15f1d6){if(_0x15f1d6){var _0x2e9ad9=[];for(var _0x55b72b=0x0,_0xfc1888;_0x55b72b<_0x15f1d6['length'];_0x55b72b+=0x1){_0xfc1888=_0x15f1d6[_0x55b72b][_0xc1a4('0x31')]({'plain':!![]});switch(_0xfc1888[_0xc1a4('0x2e')]){case'always':_0x58dcc2(_0xfc1888)[_0xc1a4('0x22')](_0x3b6292());break;case _0xc1a4('0x32'):_0xdf4d9f(_0xfc1888)[_0xc1a4('0x22')](_0x3b6292());break;default:_0x384a1a[_0xc1a4('0x1a')][_0xc1a4('0x1b')]({'phone':_0x20ec8b[_0xc1a4('0xa')],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'scheduledat':_0x20ec8b['scheduledat']?_0x20ec8b[_0xc1a4('0x1e')]:moment()[_0xc1a4('0x1f')](_0xc1a4('0x20')),'priority':_0x20ec8b[_0xc1a4('0x1d')]?_0x20ec8b[_0xc1a4('0x1d')]:0x2,'callback':_0x20ec8b[_0xc1a4('0x21')]?!![]:![],'callbackuniqueid':_0x20ec8b[_0xc1a4('0x21')]?_0x20ec8b[_0xc1a4('0x21')]:undefined,'callbackat':_0x20ec8b[_0xc1a4('0x21')]?moment()[_0xc1a4('0x1f')](_0xc1a4('0x20')):undefined,'VoiceQueueId':_0xfc1888['id']})['catch'](_0x3b6292());}}}})[_0xc1a4('0x24')](function(){return _0x384a1a[_0xc1a4('0x2c')]['findAll']({'where':{'type':_0xc1a4('0x2d')},'attributes':['id'],'include':[{'model':_0x384a1a[_0xc1a4('0x2f')],'as':'BlackLists','where':{'id':_0x20ec8b[_0xc1a4('0x1c')]}}]})['then'](function(_0x88fa8a){if(_0x88fa8a){var _0x16438d=[];for(var _0xc1ad59=0x0,_0x25b49f;_0xc1ad59<_0x88fa8a[_0xc1a4('0x33')];_0xc1ad59+=0x1){_0x25b49f=_0x88fa8a[_0xc1ad59][_0xc1a4('0x31')]({'plain':!![]});_0x384a1a[_0xc1a4('0x34')][_0xc1a4('0x1b')]({'phone':_0x20ec8b['phone'],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'VoiceQueueId':_0x25b49f['id']})[_0xc1a4('0x22')](function(_0x122992){logger['error']('cmContact,\x20%s,\x20%s',_0xc1a4('0x15'),_0x122992[_0xc1a4('0x35')]);});}}});})[_0xc1a4('0x24')](function(){return _0x384a1a[_0xc1a4('0x36')]['findAll']({'attributes':['id',_0xc1a4('0x2e')],'include':[{'model':_0x384a1a[_0xc1a4('0x2f')],'as':_0xc1a4('0x30'),'where':{'id':_0x20ec8b['ListId']}}]})[_0xc1a4('0x24')](function(_0x4e2f7c){if(_0x4e2f7c){var _0x20cda8=[];for(var _0x5f26e4=0x0,_0x3088b9;_0x5f26e4<_0x4e2f7c[_0xc1a4('0x33')];_0x5f26e4+=0x1){_0x3088b9=_0x4e2f7c[_0x5f26e4][_0xc1a4('0x31')]({'plain':!![]});switch(_0x3088b9[_0xc1a4('0x2e')]){case _0xc1a4('0x37'):_0x265383(_0x3088b9)[_0xc1a4('0x22')](_0x139657());break;case _0xc1a4('0x32'):_0x158637(_0x3088b9)[_0xc1a4('0x22')](_0x139657());break;default:_0x384a1a[_0xc1a4('0x1a')][_0xc1a4('0x1b')]({'phone':_0x20ec8b[_0xc1a4('0xa')],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'scheduledat':_0x20ec8b[_0xc1a4('0x1e')]?_0x20ec8b['scheduledat']:moment()[_0xc1a4('0x1f')](_0xc1a4('0x20')),'priority':_0x20ec8b['priority']?_0x20ec8b[_0xc1a4('0x1d')]:0x2,'callback':_0x20ec8b[_0xc1a4('0x21')]?!![]:![],'callbackuniqueid':_0x20ec8b[_0xc1a4('0x21')]?_0x20ec8b[_0xc1a4('0x21')]:undefined,'callbackat':_0x20ec8b[_0xc1a4('0x21')]?moment()[_0xc1a4('0x1f')](_0xc1a4('0x20')):undefined,'CampaignId':_0x3088b9['id']})[_0xc1a4('0x22')](_0x139657());}}}});})[_0xc1a4('0x24')](function(){return _0x384a1a['Campaign'][_0xc1a4('0x38')]({'attributes':['id'],'include':[{'model':_0x384a1a['CmList'],'as':_0xc1a4('0x39'),'where':{'id':_0x20ec8b[_0xc1a4('0x1c')]}}]})[_0xc1a4('0x24')](function(_0x168137){if(_0x168137){var _0x2d7dca=[];for(var _0x57f8de=0x0,_0x107feb;_0x57f8de<_0x168137[_0xc1a4('0x33')];_0x57f8de+=0x1){_0x107feb=_0x168137[_0x57f8de]['get']({'plain':!![]});_0x384a1a[_0xc1a4('0x34')][_0xc1a4('0x1b')]({'phone':_0x20ec8b[_0xc1a4('0xa')],'ContactId':_0x20ec8b['id'],'ListId':_0x20ec8b[_0xc1a4('0x1c')],'CampaignId':_0x107feb['id']})[_0xc1a4('0x22')](function(_0x178334){logger[_0xc1a4('0x14')](_0xc1a4('0x3a'),_0xc1a4('0x15'),_0x178334[_0xc1a4('0x35')]);});}}});})[_0xc1a4('0x24')](function(){_0x17f5ef();})[_0xc1a4('0x22')](function(_0x25a430){logger['error'](_0xc1a4('0x3a'),_0xc1a4('0x15'),_0x25a430[_0xc1a4('0x35')]);_0x17f5ef(_0x25a430);});}else{_0x17f5ef(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x439b34,_0x3b49fb,_0x1ee8a0){var _0x1eee55=_0x3b348b[_0xc1a4('0x13')];var _0x1ddc73=_0x439b34[_0xc1a4('0x31')]({'plain':!![]});return _0x1eee55[_0xc1a4('0x1a')][_0xc1a4('0x38')]({'raw':!![],'where':{'ListId':_0x1ddc73['ListId'],'ContactId':_0x1ddc73['id']}})[_0xc1a4('0x24')](function(_0x56e689){if(!_[_0xc1a4('0x3b')](_0x56e689)){var _0x4d146a=[];for(var _0x32c3ac=0x0;_0x32c3ac<_0x56e689[_0xc1a4('0x33')];_0x32c3ac+=0x1){var _0x14f974=_0x1eee55[_0xc1a4('0x1a')][_0xc1a4('0x3c')]({'where':{'ListId':_0x56e689[_0x32c3ac][_0xc1a4('0x1c')],'ContactId':_0x56e689[_0x32c3ac][_0xc1a4('0x3d')],'VoiceQueueId':_0x56e689[_0x32c3ac][_0xc1a4('0x3e')],'CampaignId':_0x56e689[_0x32c3ac][_0xc1a4('0x3f')]}});_0x4d146a[_0xc1a4('0x40')](_0x14f974);}return BPromise['all'](_0x4d146a);}})['then'](function(_0x3958f8){logger[_0xc1a4('0x41')](_0xc1a4('0x42'),util['inspect'](_0x3958f8,{'showHidden':![],'depth':null}));_0x1ee8a0();})['catch'](function(_0x35d9d6){logger[_0xc1a4('0x14')](_0xc1a4('0x43'),util[_0xc1a4('0x16')](_0x35d9d6,{'showHidden':![],'depth':null}));_0x1ee8a0(_0x35d9d6);});}}});};
\ No newline at end of file
+var _0x2fc0=['VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','cmContact,\x20%s,\x20%s','afterCreate','message','Campaign','BlackLists','error','models','isEmpty','destroy','ContactId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','define','CmContact','phone','fti_cm_contacts','firstName','mobile','fax','FULLTEXT','utf8mb4','get','cmContact','inspect','CmHopper','findOne','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ListId','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'];(function(_0x2061ea,_0x4ea198){var _0x5768f8=function(_0x2fd605){while(--_0x2fd605){_0x2061ea['push'](_0x2061ea['shift']());}};_0x5768f8(++_0x4ea198);}(_0x2fc0,0x192));var _0x02fc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2fc0[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x02fc('0x0'));var logger=require(_0x02fc('0x1'))(_0x02fc('0x2'));var moment=require(_0x02fc('0x3'));var BPromise=require(_0x02fc('0x4'));var rp=require(_0x02fc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x02fc('0x6'));var config=require(_0x02fc('0x7'));var attributes=require(_0x02fc('0x8'));module['exports']=function(_0x43e033,_0x3dc7c3){return _0x43e033[_0x02fc('0x9')](_0x02fc('0xa'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x02fc('0xb'),'fields':[_0x02fc('0xb')]},{'name':_0x02fc('0xc'),'fields':[_0x02fc('0xd'),'lastName',_0x02fc('0xb'),_0x02fc('0xe'),_0x02fc('0xf'),'email'],'type':_0x02fc('0x10')}],'timestamps':!![],'charset':_0x02fc('0x11'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x88540d,_0x189681,_0xc78c0a){var _0x51a8a6=_0x43e033['models'];var _0x253327=_0x88540d[_0x02fc('0x12')]({'plain':!![]});function _0x25d032(){return function(_0x2deb15){logger['error'](_0x02fc('0x13'),'afterCreate',util[_0x02fc('0x14')](_0x2deb15,{'showHidden':![],'depth':null}));};}var _0x8fe9=function(_0x5abaa0){return new BPromise(function(_0x35ebfe,_0x155bb7){_0x51a8a6[_0x02fc('0x15')][_0x02fc('0x16')]({'where':{'phone':_0x253327['phone'],'VoiceQueueId':_0x5abaa0['id']}})['then'](function(_0x18f3c8){if(!_[_0x02fc('0x17')](_0x18f3c8)){throw new Error(_0x02fc('0x18')+_0x253327[_0x02fc('0xb')]+_0x02fc('0x19')+_0x5abaa0['id']);}return _0x51a8a6[_0x02fc('0x15')][_0x02fc('0x1a')]({'phone':_0x253327[_0x02fc('0xb')],'ContactId':_0x253327['id'],'ListId':_0x253327['ListId'],'priority':_0x253327[_0x02fc('0x1b')]?_0x253327[_0x02fc('0x1b')]:0x2,'scheduledat':_0x253327[_0x02fc('0x1c')]?_0x253327[_0x02fc('0x1c')]:moment()[_0x02fc('0x1d')](_0x02fc('0x1e')),'callback':_0x253327[_0x02fc('0x1f')]?!![]:![],'callbackuniqueid':_0x253327['callbackUniqueid']?_0x253327['callbackUniqueid']:undefined,'callbackat':_0x253327[_0x02fc('0x1f')]?moment()[_0x02fc('0x1d')](_0x02fc('0x1e')):undefined,'VoiceQueueId':_0x5abaa0['id']});})['catch'](function(_0x4d1408){_0x155bb7(_0x4d1408);});});};var _0x58e3ba=function(_0x4f6eec){return new BPromise(function(_0x1de6e1,_0x1bd8cd){_0x51a8a6[_0x02fc('0x15')][_0x02fc('0x16')]({'where':{'phone':_0x253327['phone'],'VoiceQueueId':_0x4f6eec['id']}})[_0x02fc('0x20')](function(_0xc3f677){if(!_[_0x02fc('0x17')](_0xc3f677)){throw new Error(_0x02fc('0x18')+_0x253327['phone']+_0x02fc('0x21')+_0x4f6eec['id']);}return _0x51a8a6[_0x02fc('0x22')][_0x02fc('0x16')]({'where':{'calleridnum':_0x253327[_0x02fc('0xb')],'VoiceQueueId':_0x4f6eec['id']}});})[_0x02fc('0x20')](function(_0x1d5d4b){if(!_['isNil'](_0x1d5d4b)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x253327[_0x02fc('0xb')]+_0x02fc('0x23')+_0x4f6eec['id']);}return _0x51a8a6['CmHopper'][_0x02fc('0x1a')]({'phone':_0x253327[_0x02fc('0xb')],'ContactId':_0x253327['id'],'ListId':_0x253327[_0x02fc('0x24')],'priority':_0x253327['priority']?_0x253327[_0x02fc('0x1b')]:0x2,'scheduledat':_0x253327[_0x02fc('0x1c')]?_0x253327[_0x02fc('0x1c')]:moment()[_0x02fc('0x1d')](_0x02fc('0x1e')),'callback':_0x253327[_0x02fc('0x1f')]?!![]:![],'callbackuniqueid':_0x253327[_0x02fc('0x1f')]?_0x253327['callbackUniqueid']:undefined,'callbackat':_0x253327['callbackUniqueid']?moment()[_0x02fc('0x1d')](_0x02fc('0x1e')):undefined,'VoiceQueueId':_0x4f6eec['id']});})['catch'](function(_0xbaee10){_0x1bd8cd(_0xbaee10);});});};function _0x7de937(){return function(_0x21e1d8){logger['error'](_0x02fc('0x13'),'afterCreate',util[_0x02fc('0x14')](_0x21e1d8,{'showHidden':![],'depth':null}));};}var _0x5e97ba=function(_0x547aa3){return new BPromise(function(_0x4f27ee,_0x4d5b0d){_0x51a8a6[_0x02fc('0x15')]['findOne']({'where':{'phone':_0x253327[_0x02fc('0xb')],'CampaignId':_0x547aa3['id']}})[_0x02fc('0x20')](function(_0x50a3ec){if(!_['isNil'](_0x50a3ec)){throw new Error(_0x02fc('0x18')+_0x253327['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x547aa3['id']);}return _0x51a8a6[_0x02fc('0x15')]['create']({'phone':_0x253327[_0x02fc('0xb')],'ContactId':_0x253327['id'],'ListId':_0x253327['ListId'],'priority':_0x253327[_0x02fc('0x1b')]?_0x253327['priority']:0x2,'scheduledat':_0x253327[_0x02fc('0x1c')]?_0x253327[_0x02fc('0x1c')]:moment()['format'](_0x02fc('0x1e')),'callback':_0x253327[_0x02fc('0x1f')]?!![]:![],'callbackuniqueid':_0x253327[_0x02fc('0x1f')]?_0x253327[_0x02fc('0x1f')]:undefined,'callbackat':_0x253327['callbackUniqueid']?moment()[_0x02fc('0x1d')](_0x02fc('0x1e')):undefined,'CampaignId':_0x547aa3['id']});})[_0x02fc('0x25')](function(_0x57673c){_0x4d5b0d(_0x57673c);});});};var _0x633ec5=function(_0x3a8619){return new BPromise(function(_0x2a973f,_0x358b40){_0x51a8a6[_0x02fc('0x15')][_0x02fc('0x16')]({'where':{'phone':_0x253327['phone'],'CampaignId':_0x3a8619['id']}})['then'](function(_0x49bf00){if(!_[_0x02fc('0x17')](_0x49bf00)){throw new Error(_0x02fc('0x18')+_0x253327[_0x02fc('0xb')]+_0x02fc('0x26')+_0x3a8619['id']);}return _0x51a8a6['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x253327[_0x02fc('0xb')],'CampaignId':_0x3a8619['id']}});})[_0x02fc('0x20')](function(_0x1824c5){if(!_[_0x02fc('0x17')](_0x1824c5)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x253327[_0x02fc('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x3a8619['id']);}return _0x51a8a6['CmHopper'][_0x02fc('0x1a')]({'phone':_0x253327['phone'],'ContactId':_0x253327['id'],'ListId':_0x253327[_0x02fc('0x24')],'priority':_0x253327[_0x02fc('0x1b')]?_0x253327[_0x02fc('0x1b')]:0x2,'scheduledat':_0x253327[_0x02fc('0x1c')]?_0x253327[_0x02fc('0x1c')]:moment()[_0x02fc('0x1d')](_0x02fc('0x1e')),'callback':_0x253327[_0x02fc('0x1f')]?!![]:![],'callbackuniqueid':_0x253327[_0x02fc('0x1f')]?_0x253327['callbackUniqueid']:undefined,'callbackat':_0x253327['callbackUniqueid']?moment()['format'](_0x02fc('0x1e')):undefined,'CampaignId':_0x3a8619['id']});})[_0x02fc('0x25')](function(_0xb430){_0x358b40(_0xb430);});});};if(_0x253327[_0x02fc('0x24')]){_0x51a8a6[_0x02fc('0x27')][_0x02fc('0x28')]({'where':{'type':_0x02fc('0x29')},'attributes':['id',_0x02fc('0x2a')],'include':[{'model':_0x51a8a6[_0x02fc('0x2b')],'as':_0x02fc('0x2c'),'where':{'id':_0x253327[_0x02fc('0x24')]}}]})[_0x02fc('0x20')](function(_0xac06d2){if(_0xac06d2){var _0x12bd7a=[];for(var _0x379c7a=0x0,_0x77f19d;_0x379c7a<_0xac06d2[_0x02fc('0x2d')];_0x379c7a+=0x1){_0x77f19d=_0xac06d2[_0x379c7a][_0x02fc('0x12')]({'plain':!![]});switch(_0x77f19d[_0x02fc('0x2a')]){case _0x02fc('0x2e'):_0x58e3ba(_0x77f19d)[_0x02fc('0x25')](_0x25d032());break;case _0x02fc('0x2f'):_0x8fe9(_0x77f19d)[_0x02fc('0x25')](_0x25d032());break;default:_0x51a8a6[_0x02fc('0x15')]['create']({'phone':_0x253327[_0x02fc('0xb')],'ContactId':_0x253327['id'],'ListId':_0x253327[_0x02fc('0x24')],'scheduledat':_0x253327[_0x02fc('0x1c')]?_0x253327[_0x02fc('0x1c')]:moment()[_0x02fc('0x1d')](_0x02fc('0x1e')),'priority':_0x253327[_0x02fc('0x1b')]?_0x253327[_0x02fc('0x1b')]:0x2,'callback':_0x253327[_0x02fc('0x1f')]?!![]:![],'callbackuniqueid':_0x253327[_0x02fc('0x1f')]?_0x253327[_0x02fc('0x1f')]:undefined,'callbackat':_0x253327[_0x02fc('0x1f')]?moment()[_0x02fc('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x77f19d['id']})[_0x02fc('0x25')](_0x25d032());}}}})[_0x02fc('0x20')](function(){return _0x51a8a6['VoiceQueue'][_0x02fc('0x28')]({'where':{'type':_0x02fc('0x29')},'attributes':['id'],'include':[{'model':_0x51a8a6[_0x02fc('0x2b')],'as':'BlackLists','where':{'id':_0x253327[_0x02fc('0x24')]}}]})['then'](function(_0x2a6078){if(_0x2a6078){var _0x5e6c4c=[];for(var _0x2bd0e0=0x0,_0x1dd61b;_0x2bd0e0<_0x2a6078[_0x02fc('0x2d')];_0x2bd0e0+=0x1){_0x1dd61b=_0x2a6078[_0x2bd0e0][_0x02fc('0x12')]({'plain':!![]});_0x51a8a6['CmHopperBlack'][_0x02fc('0x1a')]({'phone':_0x253327[_0x02fc('0xb')],'ContactId':_0x253327['id'],'ListId':_0x253327[_0x02fc('0x24')],'VoiceQueueId':_0x1dd61b['id']})[_0x02fc('0x25')](function(_0x439269){logger['error'](_0x02fc('0x30'),_0x02fc('0x31'),_0x439269[_0x02fc('0x32')]);});}}});})['then'](function(){return _0x51a8a6[_0x02fc('0x33')]['findAll']({'attributes':['id',_0x02fc('0x2a')],'include':[{'model':_0x51a8a6['CmList'],'as':'Lists','where':{'id':_0x253327['ListId']}}]})[_0x02fc('0x20')](function(_0x28bfcf){if(_0x28bfcf){var _0x596325=[];for(var _0x387549=0x0,_0x4f4c93;_0x387549<_0x28bfcf[_0x02fc('0x2d')];_0x387549+=0x1){_0x4f4c93=_0x28bfcf[_0x387549][_0x02fc('0x12')]({'plain':!![]});switch(_0x4f4c93[_0x02fc('0x2a')]){case _0x02fc('0x2e'):_0x633ec5(_0x4f4c93)[_0x02fc('0x25')](_0x7de937());break;case _0x02fc('0x2f'):_0x5e97ba(_0x4f4c93)[_0x02fc('0x25')](_0x7de937());break;default:_0x51a8a6[_0x02fc('0x15')]['create']({'phone':_0x253327[_0x02fc('0xb')],'ContactId':_0x253327['id'],'ListId':_0x253327['ListId'],'scheduledat':_0x253327[_0x02fc('0x1c')]?_0x253327[_0x02fc('0x1c')]:moment()[_0x02fc('0x1d')](_0x02fc('0x1e')),'priority':_0x253327[_0x02fc('0x1b')]?_0x253327[_0x02fc('0x1b')]:0x2,'callback':_0x253327[_0x02fc('0x1f')]?!![]:![],'callbackuniqueid':_0x253327[_0x02fc('0x1f')]?_0x253327[_0x02fc('0x1f')]:undefined,'callbackat':_0x253327[_0x02fc('0x1f')]?moment()[_0x02fc('0x1d')](_0x02fc('0x1e')):undefined,'CampaignId':_0x4f4c93['id']})[_0x02fc('0x25')](_0x7de937());}}}});})[_0x02fc('0x20')](function(){return _0x51a8a6[_0x02fc('0x33')][_0x02fc('0x28')]({'attributes':['id'],'include':[{'model':_0x51a8a6[_0x02fc('0x2b')],'as':_0x02fc('0x34'),'where':{'id':_0x253327[_0x02fc('0x24')]}}]})[_0x02fc('0x20')](function(_0x5abaeb){if(_0x5abaeb){var _0xe917b7=[];for(var _0x16fdf2=0x0,_0x492136;_0x16fdf2<_0x5abaeb[_0x02fc('0x2d')];_0x16fdf2+=0x1){_0x492136=_0x5abaeb[_0x16fdf2][_0x02fc('0x12')]({'plain':!![]});_0x51a8a6['CmHopperBlack'][_0x02fc('0x1a')]({'phone':_0x253327[_0x02fc('0xb')],'ContactId':_0x253327['id'],'ListId':_0x253327[_0x02fc('0x24')],'CampaignId':_0x492136['id']})[_0x02fc('0x25')](function(_0x3ee709){logger['error']('cmContact,\x20%s,\x20%s',_0x02fc('0x31'),_0x3ee709[_0x02fc('0x32')]);});}}});})[_0x02fc('0x20')](function(){_0xc78c0a();})[_0x02fc('0x25')](function(_0x462f28){logger[_0x02fc('0x35')](_0x02fc('0x30'),_0x02fc('0x31'),_0x462f28[_0x02fc('0x32')]);_0xc78c0a(_0x462f28);});}else{_0xc78c0a(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x3baf41,_0x79cd7f,_0xd2973b){var _0x365402=_0x43e033[_0x02fc('0x36')];var _0x521547=_0x3baf41[_0x02fc('0x12')]({'plain':!![]});return _0x365402[_0x02fc('0x15')][_0x02fc('0x28')]({'raw':!![],'where':{'ListId':_0x521547[_0x02fc('0x24')],'ContactId':_0x521547['id']}})[_0x02fc('0x20')](function(_0x423ae3){if(!_[_0x02fc('0x37')](_0x423ae3)){var _0x59ad2d=[];for(var _0x465b4f=0x0;_0x465b4f<_0x423ae3['length'];_0x465b4f+=0x1){var _0x38df28=_0x365402[_0x02fc('0x15')][_0x02fc('0x38')]({'where':{'ListId':_0x423ae3[_0x465b4f][_0x02fc('0x24')],'ContactId':_0x423ae3[_0x465b4f][_0x02fc('0x39')],'VoiceQueueId':_0x423ae3[_0x465b4f]['VoiceQueueId'],'CampaignId':_0x423ae3[_0x465b4f]['CampaignId']}});_0x59ad2d[_0x02fc('0x3a')](_0x38df28);}return BPromise[_0x02fc('0x3b')](_0x59ad2d);}})[_0x02fc('0x20')](function(_0x185dd8){logger[_0x02fc('0x3c')](_0x02fc('0x3d'),util['inspect'](_0x185dd8,{'showHidden':![],'depth':null}));_0xd2973b();})[_0x02fc('0x25')](function(_0x52450f){logger['error'](_0x02fc('0x3e'),util[_0x02fc('0x14')](_0x52450f,{'showHidden':![],'depth':null}));_0xd2973b(_0x52450f);});}}});};
\ No newline at end of file
index 046de72..20b5672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea3=['moment','bluebird','randomstring','squel','../../mysqldb','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','request','then','info','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','CmContact,\x20%s,\x20%s','message','result','catch','GetCmContact','CmContact','findAll','options','raw','attributes','include','map','model','CreateCmContact','create','body','keys','length','startsWith','cf_','update','table','set','where','id\x20=\x20?','toString','sequelize','query','stringify','lodash','util'];(function(_0x428c6f,_0x314ade){var _0x638ece=function(_0x731486){while(--_0x731486){_0x428c6f['push'](_0x428c6f['shift']());}};_0x638ece(++_0x314ade);}(_0xbea3,0xfd));var _0x3bea=function(_0x4037d2,_0x13ad4c){_0x4037d2=_0x4037d2-0x0;var _0x571053=_0xbea3[_0x4037d2];return _0x571053;};'use strict';var _=require(_0x3bea('0x0'));var util=require(_0x3bea('0x1'));var moment=require(_0x3bea('0x2'));var BPromise=require(_0x3bea('0x3'));var rs=require(_0x3bea('0x4'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0x3bea('0x5'));var db=require(_0x3bea('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x3bea('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3bea('0x8')]({'port':0x232a});config[_0x3bea('0x9')]=_[_0x3bea('0xa')](config[_0x3bea('0x9')],{'host':_0x3bea('0xb'),'port':0x18eb});var socket=require(_0x3bea('0xc'))(new Redis(config[_0x3bea('0x9')]));require(_0x3bea('0xd'))['register'](socket);function respondWithRpcPromise(_0x5b47e9,_0x12796d,_0x3557f1){return new BPromise(function(_0x89189c,_0x19abb8){return client[_0x3bea('0xe')](_0x5b47e9,_0x3557f1)[_0x3bea('0xf')](function(_0x3d4136){logger[_0x3bea('0x10')]('CmContact,\x20%s,\x20%s',_0x12796d,_0x3bea('0x11'));logger[_0x3bea('0x12')](_0x3bea('0x13'),_0x12796d,_0x3bea('0x11'),JSON['stringify'](_0x3d4136));if(_0x3d4136[_0x3bea('0x14')]){if(_0x3d4136[_0x3bea('0x14')][_0x3bea('0x15')]===0x1f4){logger[_0x3bea('0x14')](_0x3bea('0x16'),_0x12796d,_0x3d4136[_0x3bea('0x14')][_0x3bea('0x17')]);return _0x19abb8(_0x3d4136[_0x3bea('0x14')][_0x3bea('0x17')]);}logger['error'](_0x3bea('0x16'),_0x12796d,_0x3d4136[_0x3bea('0x14')][_0x3bea('0x17')]);return _0x89189c(_0x3d4136[_0x3bea('0x14')][_0x3bea('0x17')]);}else{logger[_0x3bea('0x10')](_0x3bea('0x16'),_0x12796d,_0x3bea('0x11'));_0x89189c(_0x3d4136[_0x3bea('0x18')][_0x3bea('0x17')]);}})[_0x3bea('0x19')](function(_0x13a1ac){logger['error'](_0x3bea('0x16'),_0x12796d,_0x13a1ac);_0x19abb8(_0x13a1ac);});});}exports[_0x3bea('0x1a')]=function(_0xa044a9){var _0x44ae35=this;return new Promise(function(_0x5e92d8,_0x36ae42){return db[_0x3bea('0x1b')][_0x3bea('0x1c')]({'raw':_0xa044a9[_0x3bea('0x1d')]?_0xa044a9[_0x3bea('0x1d')][_0x3bea('0x1e')]===undefined?!![]:![]:!![],'where':_0xa044a9[_0x3bea('0x1d')]?_0xa044a9[_0x3bea('0x1d')]['where']||null:null,'attributes':_0xa044a9['options']?_0xa044a9[_0x3bea('0x1d')][_0x3bea('0x1f')]||null:null,'limit':_0xa044a9[_0x3bea('0x1d')]?_0xa044a9[_0x3bea('0x1d')]['limit']||null:null,'include':_0xa044a9[_0x3bea('0x1d')]?_0xa044a9['options'][_0x3bea('0x20')]?_[_0x3bea('0x21')](_0xa044a9['options'][_0x3bea('0x20')],function(_0x5231b5){return{'model':db[_0x5231b5[_0x3bea('0x22')]],'as':_0x5231b5['as'],'attributes':_0x5231b5[_0x3bea('0x1f')],'include':_0x5231b5['include']?_[_0x3bea('0x21')](_0x5231b5[_0x3bea('0x20')],function(_0xd4c073){return{'model':db[_0xd4c073[_0x3bea('0x22')]],'as':_0xd4c073['as'],'attributes':_0xd4c073['attributes'],'include':_0xd4c073[_0x3bea('0x20')]?_['map'](_0xd4c073[_0x3bea('0x20')],function(_0x19468e){return{'model':db[_0x19468e[_0x3bea('0x22')]],'as':_0x19468e['as'],'attributes':_0x19468e[_0x3bea('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3bea('0xf')](function(_0x131e44){logger['info'](_0x3bea('0x1a'),_0xa044a9);logger[_0x3bea('0x12')]('GetCmContact',_0xa044a9,JSON['stringify'](_0x131e44));_0x5e92d8(_0x131e44);})['catch'](function(_0x50bf97){logger['error']('GetCmContact',_0x50bf97[_0x3bea('0x17')],_0xa044a9);_0x36ae42(_0x44ae35[_0x3bea('0x14')](0x1f4,_0x50bf97[_0x3bea('0x17')]));});});};exports[_0x3bea('0x23')]=function(_0x583af9){var _0xa76e29=this;return new Promise(function(_0x489c19,_0x2a4126){return db[_0x3bea('0x1b')][_0x3bea('0x24')](_0x583af9[_0x3bea('0x25')],{'raw':_0x583af9[_0x3bea('0x1d')]?_0x583af9[_0x3bea('0x1d')][_0x3bea('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x286e5f){var _0x904d18;for(var _0x56fcc8=0x0;_0x56fcc8<Object[_0x3bea('0x26')](_0x583af9[_0x3bea('0x25')])[_0x3bea('0x27')];_0x56fcc8++){var _0x5dd2e7=Object[_0x3bea('0x26')](_0x583af9[_0x3bea('0x25')])[_0x56fcc8];if(_0x5dd2e7[_0x3bea('0x28')](_0x3bea('0x29'))){_0x904d18=squel[_0x3bea('0x2a')]()[_0x3bea('0x2b')]('cm_contacts')[_0x3bea('0x2c')](_0x5dd2e7,_0x583af9[_0x3bea('0x25')][_0x5dd2e7])[_0x3bea('0x2d')](_0x3bea('0x2e'),_0x286e5f['id'])[_0x3bea('0x2f')]();break;}}if(!_0x904d18)return _0x286e5f;return db[_0x3bea('0x30')][_0x3bea('0x31')](_0x904d18)[_0x3bea('0xf')](function(){return _0x286e5f;});})[_0x3bea('0xf')](function(_0x53c15e){logger[_0x3bea('0x10')](_0x3bea('0x23'),_0x583af9);logger[_0x3bea('0x12')](_0x3bea('0x23'),_0x583af9,JSON[_0x3bea('0x32')](_0x53c15e));_0x489c19(_0x53c15e);})[_0x3bea('0x19')](function(_0x4a1da4){logger[_0x3bea('0x14')](_0x3bea('0x23'),_0x4a1da4[_0x3bea('0x17')],_0x583af9);_0x2a4126(_0xa76e29[_0x3bea('0x14')](0x1f4,_0x4a1da4[_0x3bea('0x17')]));});});};
\ No newline at end of file
+var _0xd045=['request','then','info','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','CmContact,\x20%s,\x20%s','message','result','catch','GetCmContact','findAll','options','raw','where','attributes','limit','include','map','model','CreateCmContact','CmContact','create','body','keys','length','startsWith','cf_','table','cm_contacts','id\x20=\x20?','sequelize','lodash','util','moment','bluebird','randomstring','squel','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','./cmContact.socket'];(function(_0xf24dd8,_0x468ca3){var _0x423215=function(_0x11cae4){while(--_0x11cae4){_0xf24dd8['push'](_0xf24dd8['shift']());}};_0x423215(++_0x468ca3);}(_0xd045,0x8b));var _0x5d04=function(_0x4993ce,_0x775391){_0x4993ce=_0x4993ce-0x0;var _0x25bc03=_0xd045[_0x4993ce];return _0x25bc03;};'use strict';var _=require(_0x5d04('0x0'));var util=require(_0x5d04('0x1'));var moment=require(_0x5d04('0x2'));var BPromise=require(_0x5d04('0x3'));var rs=require(_0x5d04('0x4'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0x5d04('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5d04('0x6'));var logger=require(_0x5d04('0x7'))(_0x5d04('0x8'));var config=require(_0x5d04('0x9'));var jayson=require(_0x5d04('0xa'));var client=jayson['client'][_0x5d04('0xb')]({'port':0x232a});config['redis']=_[_0x5d04('0xc')](config['redis'],{'host':_0x5d04('0xd'),'port':0x18eb});var socket=require(_0x5d04('0xe'))(new Redis(config[_0x5d04('0xf')]));require(_0x5d04('0x10'))['register'](socket);function respondWithRpcPromise(_0x289f3f,_0x549eb,_0x34c007){return new BPromise(function(_0x2b81f5,_0x319acc){return client[_0x5d04('0x11')](_0x289f3f,_0x34c007)[_0x5d04('0x12')](function(_0x26a414){logger[_0x5d04('0x13')]('CmContact,\x20%s,\x20%s',_0x549eb,_0x5d04('0x14'));logger[_0x5d04('0x15')](_0x5d04('0x16'),_0x549eb,_0x5d04('0x14'),JSON[_0x5d04('0x17')](_0x26a414));if(_0x26a414[_0x5d04('0x18')]){if(_0x26a414['error'][_0x5d04('0x19')]===0x1f4){logger[_0x5d04('0x18')](_0x5d04('0x1a'),_0x549eb,_0x26a414[_0x5d04('0x18')][_0x5d04('0x1b')]);return _0x319acc(_0x26a414[_0x5d04('0x18')][_0x5d04('0x1b')]);}logger['error'](_0x5d04('0x1a'),_0x549eb,_0x26a414['error'][_0x5d04('0x1b')]);return _0x2b81f5(_0x26a414[_0x5d04('0x18')]['message']);}else{logger[_0x5d04('0x13')](_0x5d04('0x1a'),_0x549eb,_0x5d04('0x14'));_0x2b81f5(_0x26a414[_0x5d04('0x1c')][_0x5d04('0x1b')]);}})[_0x5d04('0x1d')](function(_0x2d8eeb){logger[_0x5d04('0x18')](_0x5d04('0x1a'),_0x549eb,_0x2d8eeb);_0x319acc(_0x2d8eeb);});});}exports[_0x5d04('0x1e')]=function(_0x8cf9e5){var _0x3a3006=this;return new Promise(function(_0x594c6c,_0x2ea6de){return db['CmContact'][_0x5d04('0x1f')]({'raw':_0x8cf9e5[_0x5d04('0x20')]?_0x8cf9e5[_0x5d04('0x20')][_0x5d04('0x21')]===undefined?!![]:![]:!![],'where':_0x8cf9e5['options']?_0x8cf9e5['options'][_0x5d04('0x22')]||null:null,'attributes':_0x8cf9e5[_0x5d04('0x20')]?_0x8cf9e5[_0x5d04('0x20')][_0x5d04('0x23')]||null:null,'limit':_0x8cf9e5[_0x5d04('0x20')]?_0x8cf9e5['options'][_0x5d04('0x24')]||null:null,'include':_0x8cf9e5['options']?_0x8cf9e5[_0x5d04('0x20')][_0x5d04('0x25')]?_[_0x5d04('0x26')](_0x8cf9e5['options']['include'],function(_0x3bd4f0){return{'model':db[_0x3bd4f0[_0x5d04('0x27')]],'as':_0x3bd4f0['as'],'attributes':_0x3bd4f0[_0x5d04('0x23')],'include':_0x3bd4f0[_0x5d04('0x25')]?_[_0x5d04('0x26')](_0x3bd4f0[_0x5d04('0x25')],function(_0x31ada5){return{'model':db[_0x31ada5['model']],'as':_0x31ada5['as'],'attributes':_0x31ada5[_0x5d04('0x23')],'include':_0x31ada5[_0x5d04('0x25')]?_['map'](_0x31ada5['include'],function(_0x2fdbb4){return{'model':db[_0x2fdbb4[_0x5d04('0x27')]],'as':_0x2fdbb4['as'],'attributes':_0x2fdbb4[_0x5d04('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x475906){logger[_0x5d04('0x13')]('GetCmContact',_0x8cf9e5);logger[_0x5d04('0x15')](_0x5d04('0x1e'),_0x8cf9e5,JSON[_0x5d04('0x17')](_0x475906));_0x594c6c(_0x475906);})[_0x5d04('0x1d')](function(_0xc07a7e){logger[_0x5d04('0x18')]('GetCmContact',_0xc07a7e[_0x5d04('0x1b')],_0x8cf9e5);_0x2ea6de(_0x3a3006[_0x5d04('0x18')](0x1f4,_0xc07a7e[_0x5d04('0x1b')]));});});};exports[_0x5d04('0x28')]=function(_0x31d4b1){var _0x3e4b2e=this;return new Promise(function(_0x1df9bf,_0x35156e){return db[_0x5d04('0x29')][_0x5d04('0x2a')](_0x31d4b1[_0x5d04('0x2b')],{'raw':_0x31d4b1['options']?_0x31d4b1[_0x5d04('0x20')][_0x5d04('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x95743e){var _0x323918;for(var _0x32a6a2=0x0;_0x32a6a2<Object[_0x5d04('0x2c')](_0x31d4b1['body'])[_0x5d04('0x2d')];_0x32a6a2++){var _0x2987ef=Object[_0x5d04('0x2c')](_0x31d4b1['body'])[_0x32a6a2];if(_0x2987ef[_0x5d04('0x2e')](_0x5d04('0x2f'))){_0x323918=squel['update']()[_0x5d04('0x30')](_0x5d04('0x31'))['set'](_0x2987ef,_0x31d4b1[_0x5d04('0x2b')][_0x2987ef])[_0x5d04('0x22')](_0x5d04('0x32'),_0x95743e['id'])['toString']();break;}}if(!_0x323918)return _0x95743e;return db[_0x5d04('0x33')]['query'](_0x323918)[_0x5d04('0x12')](function(){return _0x95743e;});})['then'](function(_0x1f310b){logger[_0x5d04('0x13')](_0x5d04('0x28'),_0x31d4b1);logger[_0x5d04('0x15')](_0x5d04('0x28'),_0x31d4b1,JSON['stringify'](_0x1f310b));_0x1df9bf(_0x1f310b);})['catch'](function(_0x3ead41){logger[_0x5d04('0x18')](_0x5d04('0x28'),_0x3ead41['message'],_0x31d4b1);_0x35156e(_0x3e4b2e[_0x5d04('0x18')](0x1f4,_0x3ead41[_0x5d04('0x1b')]));});});};
\ No newline at end of file
index e876e0c..6a839c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 13f1480..98029d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7efd=['describe','/:id','isAuthenticated','show','/:id/tags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getJscriptySessions','getJourney','post','/merge','merge','/create_many','diskStorage','join','server/files/tmp','originalname','format','%s-%s%s','basename','extname','now','single','file','uploadCsv','root','replace','/upload','upload','/upload/:id','import','put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index'];(function(_0x184a5a,_0x24d420){var _0x188d7d=function(_0x5b40ff){while(--_0x5b40ff){_0x184a5a['push'](_0x184a5a['shift']());}};_0x188d7d(++_0x24d420);}(_0x7efd,0xb4));var _0xd7ef=function(_0x3c567e,_0x4c1442){_0x3c567e=_0x3c567e-0x0;var _0x401953=_0x7efd[_0x3c567e];return _0x401953;};'use strict';var multer=require(_0xd7ef('0x0'));var util=require(_0xd7ef('0x1'));var path=require(_0xd7ef('0x2'));var timeout=require(_0xd7ef('0x3'));var express=require(_0xd7ef('0x4'));var router=express[_0xd7ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd7ef('0x6'));var interaction=require(_0xd7ef('0x7'));var config=require(_0xd7ef('0x8'));var controller=require(_0xd7ef('0x9'));router[_0xd7ef('0xa')]('/',auth['isAuthenticated'](),controller[_0xd7ef('0xb')]);router[_0xd7ef('0xa')]('/describe',auth['isAuthenticated'](),controller[_0xd7ef('0xc')]);router[_0xd7ef('0xa')](_0xd7ef('0xd'),auth[_0xd7ef('0xe')](),controller[_0xd7ef('0xf')]);router['get'](_0xd7ef('0x10'),auth[_0xd7ef('0xe')](),controller['getTags']);router[_0xd7ef('0xa')](_0xd7ef('0x11'),auth[_0xd7ef('0xe')](),controller[_0xd7ef('0x12')]);router['get'](_0xd7ef('0x13'),auth[_0xd7ef('0xe')](),controller['getHopperHistories']);router[_0xd7ef('0xa')](_0xd7ef('0x14'),auth['isAuthenticated'](),controller['getHopperFinals']);router[_0xd7ef('0xa')]('/:id/jscripty_sessions',auth[_0xd7ef('0xe')](),controller[_0xd7ef('0x15')]);router[_0xd7ef('0xa')]('/:id/journey',auth[_0xd7ef('0xe')](),controller[_0xd7ef('0x16')]);router[_0xd7ef('0x17')](_0xd7ef('0x18'),auth[_0xd7ef('0xe')](),controller[_0xd7ef('0x19')]);router[_0xd7ef('0x17')]('/',auth[_0xd7ef('0xe')](),controller['create']);router[_0xd7ef('0x17')](_0xd7ef('0x1a'),auth[_0xd7ef('0xe')](),controller['bulkCreate']);router[_0xd7ef('0x17')]('/:id/tags',auth[_0xd7ef('0xe')](),controller['setTags']);var upload=multer({'storage':multer[_0xd7ef('0x1b')]({'destination':function(_0xa58670,_0x4265fe,_0x24d0b9){_0x24d0b9(null,path[_0xd7ef('0x1c')](config['root'],_0xd7ef('0x1d')));},'filename':function(_0x5947be,_0x2af753,_0x98e9ab){_0x2af753['originalname']=_0x2af753[_0xd7ef('0x1e')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x98e9ab(null,util[_0xd7ef('0x1f')](_0xd7ef('0x20'),path[_0xd7ef('0x21')](_0x2af753[_0xd7ef('0x1e')],path[_0xd7ef('0x22')](_0x2af753[_0xd7ef('0x1e')])),Date[_0xd7ef('0x23')](),path['extname'](_0x2af753[_0xd7ef('0x1e')])));}})});router['post']('/csv',upload[_0xd7ef('0x24')](_0xd7ef('0x25')),controller[_0xd7ef('0x26')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4a4531,_0x55985c,_0x403c5e){_0x403c5e(null,path[_0xd7ef('0x1c')](config[_0xd7ef('0x27')],_0xd7ef('0x1d')));},'filename':function(_0x53e4a9,_0x1a0e33,_0x105d05){_0x1a0e33[_0xd7ef('0x1e')]=_0x1a0e33[_0xd7ef('0x1e')][_0xd7ef('0x28')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x105d05(null,util['format'](_0xd7ef('0x20'),path[_0xd7ef('0x21')](_0x1a0e33[_0xd7ef('0x1e')],path[_0xd7ef('0x22')](_0x1a0e33[_0xd7ef('0x1e')])),Date[_0xd7ef('0x23')](),path['extname'](_0x1a0e33['originalname'])));}})});router[_0xd7ef('0x17')](_0xd7ef('0x29'),upload[_0xd7ef('0x24')](_0xd7ef('0x25')),controller[_0xd7ef('0x2a')]);router[_0xd7ef('0x17')](_0xd7ef('0x2b'),auth[_0xd7ef('0xe')](),controller[_0xd7ef('0x2c')]);router[_0xd7ef('0x2d')](_0xd7ef('0xd'),auth['isAuthenticated'](),controller[_0xd7ef('0x2e')]);router[_0xd7ef('0x2f')](_0xd7ef('0xd'),auth[_0xd7ef('0xe')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc708=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','isAuthenticated','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','setTags','diskStorage','join','server/files/tmp','originalname','replace','format','basename','extname','now','/csv','single','file','uploadCsv','root','/upload','upload','import','put','/:id','update','exports','multer'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xc708,0x1d3));var _0x8c70=function(_0x53915d,_0x1daa70){_0x53915d=_0x53915d-0x0;var _0x11e040=_0xc708[_0x53915d];return _0x11e040;};'use strict';var multer=require(_0x8c70('0x0'));var util=require('util');var path=require(_0x8c70('0x1'));var timeout=require(_0x8c70('0x2'));var express=require(_0x8c70('0x3'));var router=express[_0x8c70('0x4')]();var fs_extra=require(_0x8c70('0x5'));var auth=require(_0x8c70('0x6'));var interaction=require(_0x8c70('0x7'));var config=require(_0x8c70('0x8'));var controller=require(_0x8c70('0x9'));router[_0x8c70('0xa')]('/',auth['isAuthenticated'](),controller[_0x8c70('0xb')]);router[_0x8c70('0xa')](_0x8c70('0xc'),auth[_0x8c70('0xd')](),controller['describe']);router[_0x8c70('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x8c70('0xe')]);router['get'](_0x8c70('0xf'),auth['isAuthenticated'](),controller[_0x8c70('0x10')]);router[_0x8c70('0xa')](_0x8c70('0x11'),auth[_0x8c70('0xd')](),controller[_0x8c70('0x12')]);router[_0x8c70('0xa')](_0x8c70('0x13'),auth[_0x8c70('0xd')](),controller[_0x8c70('0x14')]);router[_0x8c70('0xa')]('/:id/hopper_finals',auth[_0x8c70('0xd')](),controller[_0x8c70('0x15')]);router[_0x8c70('0xa')]('/:id/jscripty_sessions',auth[_0x8c70('0xd')](),controller[_0x8c70('0x16')]);router['get'](_0x8c70('0x17'),auth[_0x8c70('0xd')](),controller[_0x8c70('0x18')]);router[_0x8c70('0x19')](_0x8c70('0x1a'),auth[_0x8c70('0xd')](),controller[_0x8c70('0x1b')]);router[_0x8c70('0x19')]('/',auth[_0x8c70('0xd')](),controller[_0x8c70('0x1c')]);router[_0x8c70('0x19')](_0x8c70('0x1d'),auth[_0x8c70('0xd')](),controller['bulkCreate']);router[_0x8c70('0x19')](_0x8c70('0xf'),auth['isAuthenticated'](),controller[_0x8c70('0x1e')]);var upload=multer({'storage':multer[_0x8c70('0x1f')]({'destination':function(_0x146c4d,_0x3c70d0,_0xf7a55d){_0xf7a55d(null,path[_0x8c70('0x20')](config['root'],_0x8c70('0x21')));},'filename':function(_0x3eacdf,_0x45f589,_0x2e5c34){_0x45f589[_0x8c70('0x22')]=_0x45f589[_0x8c70('0x22')][_0x8c70('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2e5c34(null,util[_0x8c70('0x24')]('%s-%s%s',path[_0x8c70('0x25')](_0x45f589[_0x8c70('0x22')],path[_0x8c70('0x26')](_0x45f589[_0x8c70('0x22')])),Date[_0x8c70('0x27')](),path[_0x8c70('0x26')](_0x45f589[_0x8c70('0x22')])));}})});router[_0x8c70('0x19')](_0x8c70('0x28'),upload[_0x8c70('0x29')](_0x8c70('0x2a')),controller[_0x8c70('0x2b')]);var upload=multer({'storage':multer[_0x8c70('0x1f')]({'destination':function(_0xe4b69d,_0x5e3807,_0x39431e){_0x39431e(null,path[_0x8c70('0x20')](config[_0x8c70('0x2c')],_0x8c70('0x21')));},'filename':function(_0x1a2095,_0x50c3a7,_0x55d425){_0x50c3a7[_0x8c70('0x22')]=_0x50c3a7['originalname'][_0x8c70('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x55d425(null,util['format']('%s-%s%s',path[_0x8c70('0x25')](_0x50c3a7[_0x8c70('0x22')],path[_0x8c70('0x26')](_0x50c3a7[_0x8c70('0x22')])),Date['now'](),path[_0x8c70('0x26')](_0x50c3a7[_0x8c70('0x22')])));}})});router['post'](_0x8c70('0x2d'),upload[_0x8c70('0x29')]('file'),controller[_0x8c70('0x2e')]);router[_0x8c70('0x19')]('/upload/:id',auth['isAuthenticated'](),controller[_0x8c70('0x2f')]);router[_0x8c70('0x30')](_0x8c70('0x31'),auth[_0x8c70('0xd')](),controller[_0x8c70('0x32')]);router['delete'](_0x8c70('0x31'),auth[_0x8c70('0xd')](),controller['destroy']);module[_0x8c70('0x33')]=router;
\ No newline at end of file
index 49ef792..4c7e7b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x901f=['sequelize','lodash','VIRTUAL','getDataValue','STRING','alias','name','TEXT','type','select','parse','values','stringify','setDataValue','BOOLEAN','ENUM','voice'];(function(_0xd6fcb5,_0x526523){var _0x278ac7=function(_0x3a9512){while(--_0x3a9512){_0xd6fcb5['push'](_0xd6fcb5['shift']());}};_0x278ac7(++_0x526523);}(_0x901f,0x66));var _0xf901=function(_0x1b049,_0x5882c7){_0x1b049=_0x1b049-0x0;var _0x532bd3=_0x901f[_0x1b049];return _0x532bd3;};'use strict';var Sequelize=require(_0xf901('0x0'));var _=require(_0xf901('0x1'));module['exports']={'name':{'type':Sequelize[_0xf901('0x2')],'get':function(_0x21a14e){return this[_0xf901('0x3')]('alias');}},'alias':{'type':Sequelize[_0xf901('0x4')],'allowNull':![],'set':function(_0x252626){this['setDataValue'](_0xf901('0x5'),_0x252626?_0x252626:this['getDataValue'](_0xf901('0x6')));}},'type':{'type':Sequelize[_0xf901('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0xf901('0x7')]('long'),'get':function(){if(this[_0xf901('0x3')](_0xf901('0x8'))===_0xf901('0x9')){return JSON[_0xf901('0xa')](this[_0xf901('0x3')](_0xf901('0xb')));}else{return this[_0xf901('0x3')]('values');}},'set':function(_0xd67254){if(Array['isArray'](_0xd67254)){this['setDataValue'](_0xf901('0xb'),JSON[_0xf901('0xc')](_0xd67254));}else{this[_0xf901('0xd')](_0xf901('0xb'),_0xd67254);}}},'required':{'type':Sequelize[_0xf901('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xf901('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xf901('0xf')](_0xf901('0x10'))}};
\ No newline at end of file
+var _0x449b=['exports','VIRTUAL','getDataValue','alias','STRING','name','long','parse','values','isArray','stringify','setDataValue','ENUM'];(function(_0x23cf19,_0x547532){var _0x2003b0=function(_0x12cd77){while(--_0x12cd77){_0x23cf19['push'](_0x23cf19['shift']());}};_0x2003b0(++_0x547532);}(_0x449b,0x152));var _0xb449=function(_0x5acc9a,_0x1b9122){_0x5acc9a=_0x5acc9a-0x0;var _0x42d7aa=_0x449b[_0x5acc9a];return _0x42d7aa;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module[_0xb449('0x0')]={'name':{'type':Sequelize[_0xb449('0x1')],'get':function(_0x284c92){return this[_0xb449('0x2')](_0xb449('0x3'));}},'alias':{'type':Sequelize[_0xb449('0x4')],'allowNull':![],'set':function(_0x4ee9f9){this['setDataValue'](_0xb449('0x3'),_0x4ee9f9?_0x4ee9f9:this[_0xb449('0x2')](_0xb449('0x5')));}},'type':{'type':Sequelize[_0xb449('0x4')],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0xb449('0x6')),'get':function(){if(this[_0xb449('0x2')]('type')==='select'){return JSON[_0xb449('0x7')](this[_0xb449('0x2')](_0xb449('0x8')));}else{return this[_0xb449('0x2')](_0xb449('0x8'));}},'set':function(_0x5a2cf2){if(Array[_0xb449('0x9')](_0x5a2cf2)){this['setDataValue']('values',JSON[_0xb449('0xa')](_0x5a2cf2));}else{this[_0xb449('0xb')](_0xb449('0x8'),_0x5a2cf2);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xb449('0xc')]('voice')}};
\ No newline at end of file
index 0c6d4b9..b734d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e3b=['error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','body','create','sequelize','transaction','text','Sequelize','number','switch','defaultValue','queryInterface','addColumn','cm_contacts','cf_%d','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','end'];(function(_0x512f84,_0x5bd7ab){var _0x42fe7a=function(_0x36d0af){while(--_0x36d0af){_0x512f84['push'](_0x512f84['shift']());}};_0x42fe7a(++_0x5bd7ab);}(_0x3e3b,0x86));var _0xb3e3=function(_0x4eef59,_0x4319a4){_0x4eef59=_0x4eef59-0x0;var _0x512ace=_0x3e3b[_0x4eef59];return _0x512ace;};'use strict';var emlformat=require(_0xb3e3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb3e3('0x1'));var jsonpatch=require(_0xb3e3('0x2'));var rp=require(_0xb3e3('0x3'));var moment=require(_0xb3e3('0x4'));var BPromise=require(_0xb3e3('0x5'));var Mustache=require(_0xb3e3('0x6'));var util=require(_0xb3e3('0x7'));var path=require(_0xb3e3('0x8'));var sox=require(_0xb3e3('0x9'));var csv=require(_0xb3e3('0xa'));var ejs=require(_0xb3e3('0xb'));var fs=require('fs');var fs_extra=require(_0xb3e3('0xc'));var _=require(_0xb3e3('0xd'));var squel=require(_0xb3e3('0xe'));var crypto=require(_0xb3e3('0xf'));var jsforce=require(_0xb3e3('0x10'));var deskjs=require(_0xb3e3('0x11'));var toCsv=require(_0xb3e3('0xa'));var querystring=require(_0xb3e3('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb3e3('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xb3e3('0x14'));var hardwareService=require(_0xb3e3('0x15'));var logger=require(_0xb3e3('0x16'))(_0xb3e3('0x17'));var utils=require(_0xb3e3('0x18'));var config=require(_0xb3e3('0x19'));var licenseUtil=require(_0xb3e3('0x1a'));var db=require(_0xb3e3('0x1b'))['db'];function respondWithStatusCode(_0x292fb9,_0xad2fb){_0xad2fb=_0xad2fb||0xcc;return function(_0x3325eb){if(_0x3325eb){return _0x292fb9[_0xb3e3('0x1c')](_0xad2fb);}return _0x292fb9[_0xb3e3('0x1d')](_0xad2fb)['end']();};}function respondWithResult(_0x4e29e3,_0x444634){_0x444634=_0x444634||0xc8;return function(_0x414fe6){if(_0x414fe6){return _0x4e29e3[_0xb3e3('0x1d')](_0x444634)[_0xb3e3('0x1e')](_0x414fe6);}};}function respondWithFilteredResult(_0x4d9c07,_0x2fd6c2){return function(_0x4afc61){if(_0x4afc61){var _0xb17aa4=typeof _0x2fd6c2[_0xb3e3('0x1f')]===_0xb3e3('0x20')&&typeof _0x2fd6c2[_0xb3e3('0x21')]===_0xb3e3('0x20');var _0x142df1=_0x4afc61[_0xb3e3('0x22')];var _0x5b2b0c=_0xb17aa4?0x0:_0x2fd6c2[_0xb3e3('0x1f')];var _0x224027=_0xb17aa4?_0x4afc61[_0xb3e3('0x22')]:_0x2fd6c2[_0xb3e3('0x1f')]+_0x2fd6c2['limit'];var _0x3e95ff;if(_0x224027>=_0x142df1){_0x224027=_0x142df1;_0x3e95ff=0xc8;}else{_0x3e95ff=0xce;}_0x4d9c07[_0xb3e3('0x1d')](_0x3e95ff);return _0x4d9c07['set'](_0xb3e3('0x23'),_0x5b2b0c+'-'+_0x224027+'/'+_0x142df1)[_0xb3e3('0x1e')](_0x4afc61);}return null;};}function patchUpdates(_0x5007aa){return function(_0x9213da){try{jsonpatch[_0xb3e3('0x24')](_0x9213da,_0x5007aa,!![]);}catch(_0x4cd4b8){return BPromise[_0xb3e3('0x25')](_0x4cd4b8);}return _0x9213da['save']();};}function saveUpdates(_0x43e4f0,_0x6b6ad6){return function(_0xf9978b){if(_0xf9978b){return _0xf9978b[_0xb3e3('0x26')](_0x43e4f0)['then'](function(_0x10dfcb){return _0x10dfcb;});}return null;};}function removeEntity(_0x425734,_0x2a9d78){return function(_0x45f13c){if(_0x45f13c){return _0x45f13c[_0xb3e3('0x27')]()[_0xb3e3('0x28')](function(){_0x425734[_0xb3e3('0x1d')](0xcc)[_0xb3e3('0x29')]();});}};}function handleEntityNotFound(_0x5396f9,_0x59f85a){return function(_0x125c34){if(!_0x125c34){_0x5396f9['sendStatus'](0x194);}return _0x125c34;};}function handleError(_0x1f61d4,_0x56deab){_0x56deab=_0x56deab||0x1f4;return function(_0x1661ad){logger[_0xb3e3('0x2a')](_0x1661ad[_0xb3e3('0x2b')]);if(_0x1661ad[_0xb3e3('0x2c')]){delete _0x1661ad['name'];}_0x1f61d4['status'](_0x56deab)[_0xb3e3('0x2d')](_0x1661ad);};}exports[_0xb3e3('0x2e')]=function(_0x2e740d,_0x3a90db){var _0x2ea6c9={},_0x18324a={},_0x2be5fc={'count':0x0,'rows':[]};var _0x1f6d85=_[_0xb3e3('0x2f')](db[_0xb3e3('0x30')][_0xb3e3('0x31')],function(_0xbc5e95){return{'name':_0xbc5e95[_0xb3e3('0x32')],'type':_0xbc5e95[_0xb3e3('0x33')][_0xb3e3('0x34')]};});_0x18324a[_0xb3e3('0x35')]=_[_0xb3e3('0x36')](_[_0xb3e3('0x2f')](_0x1f6d85,_0xb3e3('0x2c')),[_0xb3e3('0x2c')]);_0x18324a[_0xb3e3('0x37')]=_[_0xb3e3('0x38')](_0x2e740d[_0xb3e3('0x37')]);_0x18324a[_0xb3e3('0x39')]=_[_0xb3e3('0x3a')](_0x18324a[_0xb3e3('0x35')],_0x18324a[_0xb3e3('0x37')]);_0x2ea6c9[_0xb3e3('0x3b')]=_[_0xb3e3('0x3a')](_0x18324a[_0xb3e3('0x35')],qs['fields'](_0x2e740d['query'][_0xb3e3('0x3c')]));_0x2ea6c9[_0xb3e3('0x3b')]=_0x2ea6c9[_0xb3e3('0x3b')][_0xb3e3('0x3d')]?_0x2ea6c9[_0xb3e3('0x3b')]:_0x18324a[_0xb3e3('0x35')];if(!_0x2e740d[_0xb3e3('0x37')]['hasOwnProperty']('nolimit')){_0x2ea6c9[_0xb3e3('0x21')]=qs[_0xb3e3('0x21')](_0x2e740d[_0xb3e3('0x37')][_0xb3e3('0x21')]);_0x2ea6c9['offset']=qs[_0xb3e3('0x1f')](_0x2e740d['query'][_0xb3e3('0x1f')]);}_0x2ea6c9['order']=qs[_0xb3e3('0x3e')](_0x2e740d[_0xb3e3('0x37')][_0xb3e3('0x3e')]);_0x2ea6c9[_0xb3e3('0x3f')]=qs[_0xb3e3('0x39')](_['pick'](_0x2e740d[_0xb3e3('0x37')],_0x18324a[_0xb3e3('0x39')]),_0x1f6d85);if(_0x2e740d[_0xb3e3('0x37')][_0xb3e3('0x40')]){_0x2ea6c9[_0xb3e3('0x3f')]=_[_0xb3e3('0x41')](_0x2ea6c9['where'],{'$or':_[_0xb3e3('0x2f')](_0x1f6d85,function(_0x264595){if(_0x264595[_0xb3e3('0x33')]!==_0xb3e3('0x42')){var _0x1c74b6={};_0x1c74b6[_0x264595[_0xb3e3('0x2c')]]={'$like':'%'+_0x2e740d[_0xb3e3('0x37')][_0xb3e3('0x40')]+'%'};return _0x1c74b6;}})});}_0x2ea6c9=_[_0xb3e3('0x41')]({},_0x2ea6c9,_0x2e740d[_0xb3e3('0x43')]);var _0x3a85b7={'where':_0x2ea6c9[_0xb3e3('0x3f')]};return db['CmCustomField'][_0xb3e3('0x22')](_0x3a85b7)[_0xb3e3('0x28')](function(_0x3c4809){_0x2be5fc[_0xb3e3('0x22')]=_0x3c4809;if(_0x2e740d['query'][_0xb3e3('0x44')]){_0x2ea6c9[_0xb3e3('0x45')]=[{'all':!![]}];}return db[_0xb3e3('0x30')]['findAll'](_0x2ea6c9);})[_0xb3e3('0x28')](function(_0x5322ef){_0x2be5fc[_0xb3e3('0x46')]=_0x5322ef;return _0x2be5fc;})[_0xb3e3('0x28')](respondWithFilteredResult(_0x3a90db,_0x2ea6c9))[_0xb3e3('0x47')](handleError(_0x3a90db,null));};exports[_0xb3e3('0x48')]=function(_0x2deb0b,_0x34fc14){var _0x10d83a={'raw':!![],'where':{'id':_0x2deb0b[_0xb3e3('0x49')]['id']}},_0x734718={};_0x734718[_0xb3e3('0x35')]=_[_0xb3e3('0x38')](db[_0xb3e3('0x30')][_0xb3e3('0x31')]);_0x734718[_0xb3e3('0x37')]=_[_0xb3e3('0x38')](_0x2deb0b[_0xb3e3('0x37')]);_0x734718[_0xb3e3('0x39')]=_[_0xb3e3('0x3a')](_0x734718['model'],_0x734718[_0xb3e3('0x37')]);_0x10d83a[_0xb3e3('0x3b')]=_[_0xb3e3('0x3a')](_0x734718[_0xb3e3('0x35')],qs['fields'](_0x2deb0b[_0xb3e3('0x37')][_0xb3e3('0x3c')]));_0x10d83a['attributes']=_0x10d83a[_0xb3e3('0x3b')][_0xb3e3('0x3d')]?_0x10d83a[_0xb3e3('0x3b')]:_0x734718[_0xb3e3('0x35')];if(_0x2deb0b[_0xb3e3('0x37')][_0xb3e3('0x44')]){_0x10d83a[_0xb3e3('0x45')]=[{'all':!![]}];}_0x10d83a=_[_0xb3e3('0x41')]({},_0x10d83a,_0x2deb0b['options']);return db[_0xb3e3('0x30')][_0xb3e3('0x4a')](_0x10d83a)[_0xb3e3('0x28')](handleEntityNotFound(_0x34fc14,null))['then'](respondWithResult(_0x34fc14,null))['catch'](handleError(_0x34fc14,null));};exports[_0xb3e3('0x26')]=function(_0x4bbf51,_0x4e77e5){if(_0x4bbf51[_0xb3e3('0x4b')]['id']){delete _0x4bbf51['body']['id'];}return db['CmCustomField']['find']({'where':{'id':_0x4bbf51[_0xb3e3('0x49')]['id']}})['then'](handleEntityNotFound(_0x4e77e5,null))['then'](saveUpdates(_0x4bbf51[_0xb3e3('0x4b')],null))[_0xb3e3('0x28')](respondWithResult(_0x4e77e5,null))[_0xb3e3('0x47')](handleError(_0x4e77e5,null));};exports[_0xb3e3('0x27')]=function(_0x34926f,_0x2378fb){return db[_0xb3e3('0x30')][_0xb3e3('0x4a')]({'where':{'id':_0x34926f[_0xb3e3('0x49')]['id']}})[_0xb3e3('0x28')](handleEntityNotFound(_0x2378fb,null))['then'](removeEntity(_0x2378fb,null))[_0xb3e3('0x47')](handleError(_0x2378fb,null));};exports[_0xb3e3('0x4c')]=function(_0x1511d5,_0x27c13f){var _0x30d7b7;return db[_0xb3e3('0x4d')][_0xb3e3('0x4e')](function(_0x4d0890){return db['CmCustomField']['create'](_0x1511d5[_0xb3e3('0x4b')],{'transaction':_0x4d0890})[_0xb3e3('0x28')](function(_0x155385){_0x30d7b7=_0x155385;var _0x198663={'type':db['Sequelize']['TEXT'],'transaction':_0x4d0890};switch(_0x1511d5['body']['type']){case _0xb3e3('0x4f'):_0x198663[_0xb3e3('0x33')]=db[_0xb3e3('0x50')]['TEXT'];break;case _0xb3e3('0x51'):_0x198663[_0xb3e3('0x33')]=db[_0xb3e3('0x50')]['INTEGER'];break;case _0xb3e3('0x52'):_0x198663[_0xb3e3('0x33')]=db['Sequelize']['BOOLEAN'];_0x198663[_0xb3e3('0x53')]=![];break;default:}return db[_0xb3e3('0x4d')][_0xb3e3('0x54')][_0xb3e3('0x55')](_0xb3e3('0x56'),util['format'](_0xb3e3('0x57'),_0x30d7b7['id']),_0x198663);})[_0xb3e3('0x28')](function(){return _0x30d7b7;});})[_0xb3e3('0x28')](respondWithResult(_0x27c13f,0xc9))['catch'](handleError(_0x27c13f,null));};
\ No newline at end of file
+var _0xd91d=['index','map','CmCustomField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','show','fields','include','options','catch','body','find','params','sequelize','transaction','create','TEXT','text','Sequelize','number','switch','BOOLEAN','addColumn','cm_contacts','format','cf_%d','rimraf','zip-dir','bluebird','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','end','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name'];(function(_0x20a569,_0x218266){var _0x204a47=function(_0x21d8e7){while(--_0x21d8e7){_0x20a569['push'](_0x20a569['shift']());}};_0x204a47(++_0x218266);}(_0xd91d,0x122));var _0xdd91=function(_0xb62749,_0xa5c5ea){_0xb62749=_0xb62749-0x0;var _0x49ff82=_0xd91d[_0xb62749];return _0x49ff82;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd91('0x0'));var zipdir=require(_0xdd91('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdd91('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0xdd91('0x3'));var sox=require(_0xdd91('0x4'));var csv=require('to-csv');var ejs=require(_0xdd91('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdd91('0x6'));var squel=require(_0xdd91('0x7'));var crypto=require(_0xdd91('0x8'));var jsforce=require(_0xdd91('0x9'));var deskjs=require(_0xdd91('0xa'));var toCsv=require(_0xdd91('0xb'));var querystring=require(_0xdd91('0xc'));var Papa=require(_0xdd91('0xd'));var Redis=require('ioredis');var authService=require(_0xdd91('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xdd91('0xf'));var hardwareService=require(_0xdd91('0x10'));var logger=require('../../config/logger')(_0xdd91('0x11'));var utils=require(_0xdd91('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xdd91('0x13'));var db=require(_0xdd91('0x14'))['db'];function respondWithStatusCode(_0x4b5d46,_0x41d996){_0x41d996=_0x41d996||0xcc;return function(_0x5cacb7){if(_0x5cacb7){return _0x4b5d46['sendStatus'](_0x41d996);}return _0x4b5d46['status'](_0x41d996)[_0xdd91('0x15')]();};}function respondWithResult(_0x5a2719,_0x4fabe5){_0x4fabe5=_0x4fabe5||0xc8;return function(_0x11acbc){if(_0x11acbc){return _0x5a2719['status'](_0x4fabe5)[_0xdd91('0x16')](_0x11acbc);}};}function respondWithFilteredResult(_0x588005,_0x5d7a42){return function(_0xc3ca57){if(_0xc3ca57){var _0x3d5527=typeof _0x5d7a42[_0xdd91('0x17')]===_0xdd91('0x18')&&typeof _0x5d7a42['limit']===_0xdd91('0x18');var _0x380751=_0xc3ca57[_0xdd91('0x19')];var _0x31961e=_0x3d5527?0x0:_0x5d7a42[_0xdd91('0x17')];var _0x2c7802=_0x3d5527?_0xc3ca57[_0xdd91('0x19')]:_0x5d7a42[_0xdd91('0x17')]+_0x5d7a42[_0xdd91('0x1a')];var _0x46b1e0;if(_0x2c7802>=_0x380751){_0x2c7802=_0x380751;_0x46b1e0=0xc8;}else{_0x46b1e0=0xce;}_0x588005[_0xdd91('0x1b')](_0x46b1e0);return _0x588005[_0xdd91('0x1c')](_0xdd91('0x1d'),_0x31961e+'-'+_0x2c7802+'/'+_0x380751)['json'](_0xc3ca57);}return null;};}function patchUpdates(_0x468986){return function(_0x1a7c42){try{jsonpatch[_0xdd91('0x1e')](_0x1a7c42,_0x468986,!![]);}catch(_0x838bc1){return BPromise[_0xdd91('0x1f')](_0x838bc1);}return _0x1a7c42[_0xdd91('0x20')]();};}function saveUpdates(_0x440b8f,_0x470bfe){return function(_0x3bdc9e){if(_0x3bdc9e){return _0x3bdc9e[_0xdd91('0x21')](_0x440b8f)[_0xdd91('0x22')](function(_0x2f702b){return _0x2f702b;});}return null;};}function removeEntity(_0x1c82de,_0x4f08db){return function(_0x28003d){if(_0x28003d){return _0x28003d[_0xdd91('0x23')]()[_0xdd91('0x22')](function(){_0x1c82de[_0xdd91('0x1b')](0xcc)[_0xdd91('0x15')]();});}};}function handleEntityNotFound(_0x95c13,_0x7d4ccd){return function(_0x3cd004){if(!_0x3cd004){_0x95c13[_0xdd91('0x24')](0x194);}return _0x3cd004;};}function handleError(_0x414d4c,_0x9672dd){_0x9672dd=_0x9672dd||0x1f4;return function(_0x2b8fd5){logger['error'](_0x2b8fd5['stack']);if(_0x2b8fd5[_0xdd91('0x25')]){delete _0x2b8fd5[_0xdd91('0x25')];}_0x414d4c[_0xdd91('0x1b')](_0x9672dd)['send'](_0x2b8fd5);};}exports[_0xdd91('0x26')]=function(_0x2a3e64,_0x1235c3){var _0x458130={},_0x521f89={},_0x1b8cf4={'count':0x0,'rows':[]};var _0x5eaae1=_[_0xdd91('0x27')](db[_0xdd91('0x28')][_0xdd91('0x29')],function(_0x5bdf47){return{'name':_0x5bdf47['fieldName'],'type':_0x5bdf47[_0xdd91('0x2a')][_0xdd91('0x2b')]};});_0x521f89[_0xdd91('0x2c')]=_['differenceBy'](_[_0xdd91('0x27')](_0x5eaae1,_0xdd91('0x25')),[_0xdd91('0x25')]);_0x521f89[_0xdd91('0x2d')]=_[_0xdd91('0x2e')](_0x2a3e64[_0xdd91('0x2d')]);_0x521f89[_0xdd91('0x2f')]=_[_0xdd91('0x30')](_0x521f89[_0xdd91('0x2c')],_0x521f89[_0xdd91('0x2d')]);_0x458130[_0xdd91('0x31')]=_[_0xdd91('0x30')](_0x521f89[_0xdd91('0x2c')],qs['fields'](_0x2a3e64[_0xdd91('0x2d')]['fields']));_0x458130[_0xdd91('0x31')]=_0x458130['attributes'][_0xdd91('0x32')]?_0x458130[_0xdd91('0x31')]:_0x521f89[_0xdd91('0x2c')];if(!_0x2a3e64[_0xdd91('0x2d')][_0xdd91('0x33')]('nolimit')){_0x458130[_0xdd91('0x1a')]=qs[_0xdd91('0x1a')](_0x2a3e64[_0xdd91('0x2d')]['limit']);_0x458130['offset']=qs[_0xdd91('0x17')](_0x2a3e64[_0xdd91('0x2d')][_0xdd91('0x17')]);}_0x458130[_0xdd91('0x34')]=qs[_0xdd91('0x35')](_0x2a3e64['query'][_0xdd91('0x35')]);_0x458130[_0xdd91('0x36')]=qs[_0xdd91('0x2f')](_[_0xdd91('0x37')](_0x2a3e64[_0xdd91('0x2d')],_0x521f89[_0xdd91('0x2f')]),_0x5eaae1);if(_0x2a3e64[_0xdd91('0x2d')][_0xdd91('0x38')]){_0x458130[_0xdd91('0x36')]=_[_0xdd91('0x39')](_0x458130['where'],{'$or':_[_0xdd91('0x27')](_0x5eaae1,function(_0x18ca62){if(_0x18ca62[_0xdd91('0x2a')]!==_0xdd91('0x3a')){var _0x328016={};_0x328016[_0x18ca62['name']]={'$like':'%'+_0x2a3e64[_0xdd91('0x2d')]['filter']+'%'};return _0x328016;}})});}_0x458130=_[_0xdd91('0x39')]({},_0x458130,_0x2a3e64['options']);var _0x1e7d97={'where':_0x458130['where']};return db[_0xdd91('0x28')]['count'](_0x1e7d97)[_0xdd91('0x22')](function(_0xb654cc){_0x1b8cf4[_0xdd91('0x19')]=_0xb654cc;if(_0x2a3e64[_0xdd91('0x2d')][_0xdd91('0x3b')]){_0x458130['include']=[{'all':!![]}];}return db['CmCustomField'][_0xdd91('0x3c')](_0x458130);})['then'](function(_0x36d385){_0x1b8cf4['rows']=_0x36d385;return _0x1b8cf4;})['then'](respondWithFilteredResult(_0x1235c3,_0x458130))['catch'](handleError(_0x1235c3,null));};exports[_0xdd91('0x3d')]=function(_0x4996d4,_0x19df59){var _0x139134={'raw':!![],'where':{'id':_0x4996d4['params']['id']}},_0x1a1cf8={};_0x1a1cf8[_0xdd91('0x2c')]=_[_0xdd91('0x2e')](db['CmCustomField'][_0xdd91('0x29')]);_0x1a1cf8[_0xdd91('0x2d')]=_['keys'](_0x4996d4[_0xdd91('0x2d')]);_0x1a1cf8['filters']=_[_0xdd91('0x30')](_0x1a1cf8['model'],_0x1a1cf8[_0xdd91('0x2d')]);_0x139134[_0xdd91('0x31')]=_['intersection'](_0x1a1cf8['model'],qs[_0xdd91('0x3e')](_0x4996d4['query'][_0xdd91('0x3e')]));_0x139134['attributes']=_0x139134[_0xdd91('0x31')][_0xdd91('0x32')]?_0x139134[_0xdd91('0x31')]:_0x1a1cf8[_0xdd91('0x2c')];if(_0x4996d4[_0xdd91('0x2d')][_0xdd91('0x3b')]){_0x139134[_0xdd91('0x3f')]=[{'all':!![]}];}_0x139134=_[_0xdd91('0x39')]({},_0x139134,_0x4996d4[_0xdd91('0x40')]);return db[_0xdd91('0x28')]['find'](_0x139134)[_0xdd91('0x22')](handleEntityNotFound(_0x19df59,null))[_0xdd91('0x22')](respondWithResult(_0x19df59,null))[_0xdd91('0x41')](handleError(_0x19df59,null));};exports[_0xdd91('0x21')]=function(_0x2e864b,_0x525cdb){if(_0x2e864b[_0xdd91('0x42')]['id']){delete _0x2e864b[_0xdd91('0x42')]['id'];}return db[_0xdd91('0x28')][_0xdd91('0x43')]({'where':{'id':_0x2e864b[_0xdd91('0x44')]['id']}})['then'](handleEntityNotFound(_0x525cdb,null))[_0xdd91('0x22')](saveUpdates(_0x2e864b[_0xdd91('0x42')],null))[_0xdd91('0x22')](respondWithResult(_0x525cdb,null))[_0xdd91('0x41')](handleError(_0x525cdb,null));};exports[_0xdd91('0x23')]=function(_0x1a25b4,_0x4cc12e){return db[_0xdd91('0x28')]['find']({'where':{'id':_0x1a25b4['params']['id']}})[_0xdd91('0x22')](handleEntityNotFound(_0x4cc12e,null))['then'](removeEntity(_0x4cc12e,null))[_0xdd91('0x41')](handleError(_0x4cc12e,null));};exports['create']=function(_0x5b93ac,_0x30283d){var _0x555b0a;return db[_0xdd91('0x45')][_0xdd91('0x46')](function(_0x178c6d){return db[_0xdd91('0x28')][_0xdd91('0x47')](_0x5b93ac[_0xdd91('0x42')],{'transaction':_0x178c6d})[_0xdd91('0x22')](function(_0x490747){_0x555b0a=_0x490747;var _0x46a350={'type':db['Sequelize'][_0xdd91('0x48')],'transaction':_0x178c6d};switch(_0x5b93ac[_0xdd91('0x42')][_0xdd91('0x2a')]){case _0xdd91('0x49'):_0x46a350[_0xdd91('0x2a')]=db[_0xdd91('0x4a')]['TEXT'];break;case _0xdd91('0x4b'):_0x46a350[_0xdd91('0x2a')]=db[_0xdd91('0x4a')]['INTEGER'];break;case _0xdd91('0x4c'):_0x46a350['type']=db[_0xdd91('0x4a')][_0xdd91('0x4d')];_0x46a350['defaultValue']=![];break;default:}return db['sequelize']['queryInterface'][_0xdd91('0x4e')](_0xdd91('0x4f'),util[_0xdd91('0x50')](_0xdd91('0x51'),_0x555b0a['id']),_0x46a350);})[_0xdd91('0x22')](function(){return _0x555b0a;});})[_0xdd91('0x22')](respondWithResult(_0x30283d,0xc9))['catch'](handleError(_0x30283d,null));};
\ No newline at end of file
index 364dcb1..4b7147a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c97=['exports','define','CmCustomField','cm_custom_fields','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCustomField.attributes'];(function(_0x311c94,_0x3b12a6){var _0x525eac=function(_0x53bd32){while(--_0x53bd32){_0x311c94['push'](_0x311c94['shift']());}};_0x525eac(++_0x3b12a6);}(_0x8c97,0xee));var _0x78c9=function(_0x137f6a,_0x3b13e6){_0x137f6a=_0x137f6a-0x0;var _0x23dbaa=_0x8c97[_0x137f6a];return _0x23dbaa;};'use strict';var _=require(_0x78c9('0x0'));var util=require('util');var logger=require(_0x78c9('0x1'))('api');var moment=require(_0x78c9('0x2'));var BPromise=require(_0x78c9('0x3'));var rp=require(_0x78c9('0x4'));var fs=require('fs');var path=require(_0x78c9('0x5'));var rimraf=require(_0x78c9('0x6'));var config=require(_0x78c9('0x7'));var attributes=require(_0x78c9('0x8'));module[_0x78c9('0x9')]=function(_0x4b77ae,_0x578fba){return _0x4b77ae[_0x78c9('0xa')](_0x78c9('0xb'),attributes,{'tableName':_0x78c9('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2651=['api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','CmCustomField','cm_custom_fields','lodash','util'];(function(_0x171234,_0x285b56){var _0x1cea9d=function(_0x3d515e){while(--_0x3d515e){_0x171234['push'](_0x171234['shift']());}};_0x1cea9d(++_0x285b56);}(_0x2651,0x11c));var _0x1265=function(_0x42bc91,_0x41f40a){_0x42bc91=_0x42bc91-0x0;var _0x3f5507=_0x2651[_0x42bc91];return _0x3f5507;};'use strict';var _=require(_0x1265('0x0'));var util=require(_0x1265('0x1'));var logger=require('../../config/logger')(_0x1265('0x2'));var moment=require(_0x1265('0x3'));var BPromise=require(_0x1265('0x4'));var rp=require(_0x1265('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1265('0x6'));var config=require(_0x1265('0x7'));var attributes=require('./cmCustomField.attributes');module[_0x1265('0x8')]=function(_0x3ef533,_0x4ac7ac){return _0x3ef533['define'](_0x1265('0x9'),attributes,{'tableName':_0x1265('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a56d55e..9baebb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e8a=['../../config/utils','../../config/environment','jayson/promise','client','then','info','CmCustomField,\x20%s,\x20%s','debug','error','message','request\x20sent','catch','lodash','util','randomstring','../../mysqldb'];(function(_0x5362b9,_0x5090c3){var _0x149e0c=function(_0x3ba782){while(--_0x3ba782){_0x5362b9['push'](_0x5362b9['shift']());}};_0x149e0c(++_0x5090c3);}(_0x7e8a,0x11c));var _0xa7e8=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x7e8a[_0x12fc8d];return _0x3f9d04;};'use strict';var _=require(_0xa7e8('0x0'));var util=require(_0xa7e8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa7e8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa7e8('0x3'))['db'];var utils=require(_0xa7e8('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xa7e8('0x5'));var jayson=require(_0xa7e8('0x6'));var client=jayson[_0xa7e8('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2eea32,_0x1db217,_0x55517c){return new BPromise(function(_0x25f873,_0x46d38d){return client['request'](_0x2eea32,_0x55517c)[_0xa7e8('0x8')](function(_0x51780f){logger[_0xa7e8('0x9')](_0xa7e8('0xa'),_0x1db217,'request\x20sent');logger[_0xa7e8('0xb')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x1db217,'request\x20sent',JSON['stringify'](_0x51780f));if(_0x51780f['error']){if(_0x51780f[_0xa7e8('0xc')]['code']===0x1f4){logger[_0xa7e8('0xc')](_0xa7e8('0xa'),_0x1db217,_0x51780f[_0xa7e8('0xc')][_0xa7e8('0xd')]);return _0x46d38d(_0x51780f[_0xa7e8('0xc')][_0xa7e8('0xd')]);}logger['error'](_0xa7e8('0xa'),_0x1db217,_0x51780f[_0xa7e8('0xc')][_0xa7e8('0xd')]);return _0x25f873(_0x51780f[_0xa7e8('0xc')][_0xa7e8('0xd')]);}else{logger['info'](_0xa7e8('0xa'),_0x1db217,_0xa7e8('0xe'));_0x25f873(_0x51780f['result'][_0xa7e8('0xd')]);}})[_0xa7e8('0xf')](function(_0x26c15b){logger[_0xa7e8('0xc')]('CmCustomField,\x20%s,\x20%s',_0x1db217,_0x26c15b);_0x46d38d(_0x26c15b);});});}
\ No newline at end of file
+var _0x12d1=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','CmCustomField,\x20%s,\x20%s','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x5a873c,_0x33e3d9){var _0x48db8e=function(_0x522a0a){while(--_0x522a0a){_0x5a873c['push'](_0x5a873c['shift']());}};_0x48db8e(++_0x33e3d9);}(_0x12d1,0x1f4));var _0x112d=function(_0x4f0e96,_0x742622){_0x4f0e96=_0x4f0e96-0x0;var _0x3dff05=_0x12d1[_0x4f0e96];return _0x3dff05;};'use strict';var _=require('lodash');var util=require(_0x112d('0x0'));var moment=require(_0x112d('0x1'));var BPromise=require(_0x112d('0x2'));var rs=require(_0x112d('0x3'));var fs=require('fs');var Redis=require(_0x112d('0x4'));var db=require(_0x112d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x112d('0x6'))(_0x112d('0x7'));var config=require(_0x112d('0x8'));var jayson=require(_0x112d('0x9'));var client=jayson[_0x112d('0xa')][_0x112d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x57f436,_0x35eb2d,_0xf6568a){return new BPromise(function(_0x4ffbdb,_0x5aee9d){return client[_0x112d('0xc')](_0x57f436,_0xf6568a)['then'](function(_0x5c755e){logger[_0x112d('0xd')](_0x112d('0xe'),_0x35eb2d,'request\x20sent');logger[_0x112d('0xf')](_0x112d('0x10'),_0x35eb2d,_0x112d('0x11'),JSON[_0x112d('0x12')](_0x5c755e));if(_0x5c755e[_0x112d('0x13')]){if(_0x5c755e[_0x112d('0x13')][_0x112d('0x14')]===0x1f4){logger['error'](_0x112d('0xe'),_0x35eb2d,_0x5c755e[_0x112d('0x13')]['message']);return _0x5aee9d(_0x5c755e[_0x112d('0x13')]['message']);}logger[_0x112d('0x13')]('CmCustomField,\x20%s,\x20%s',_0x35eb2d,_0x5c755e[_0x112d('0x13')][_0x112d('0x15')]);return _0x4ffbdb(_0x5c755e[_0x112d('0x13')]['message']);}else{logger[_0x112d('0xd')](_0x112d('0xe'),_0x35eb2d,'request\x20sent');_0x4ffbdb(_0x5c755e[_0x112d('0x16')][_0x112d('0x15')]);}})[_0x112d('0x17')](function(_0x3cfbbe){logger[_0x112d('0x13')]('CmCustomField,\x20%s,\x20%s',_0x35eb2d,_0x3cfbbe);_0x5aee9d(_0x3cfbbe);});});}
\ No newline at end of file
index f78fdf6..f8b210a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa45=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./cmCustomField.controller','get','isAuthenticated','index','/:id','show','post','put','update'];(function(_0x57020b,_0x5c302c){var _0x53a17b=function(_0x104a88){while(--_0x104a88){_0x57020b['push'](_0x57020b['shift']());}};_0x53a17b(++_0x5c302c);}(_0xfa45,0x11b));var _0x5fa4=function(_0x352f3b,_0x393553){_0x352f3b=_0x352f3b-0x0;var _0x11d49e=_0xfa45[_0x352f3b];return _0x11d49e;};'use strict';var multer=require(_0x5fa4('0x0'));var util=require(_0x5fa4('0x1'));var path=require(_0x5fa4('0x2'));var timeout=require(_0x5fa4('0x3'));var express=require(_0x5fa4('0x4'));var router=express[_0x5fa4('0x5')]();var fs_extra=require(_0x5fa4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5fa4('0x7'));var config=require('../../config/environment');var controller=require(_0x5fa4('0x8'));router[_0x5fa4('0x9')]('/',auth[_0x5fa4('0xa')](),controller[_0x5fa4('0xb')]);router[_0x5fa4('0x9')](_0x5fa4('0xc'),auth[_0x5fa4('0xa')](),controller[_0x5fa4('0xd')]);router[_0x5fa4('0xe')]('/',auth[_0x5fa4('0xa')](),controller['create']);router[_0x5fa4('0xf')]('/:id',auth[_0x5fa4('0xa')](),controller[_0x5fa4('0x10')]);router[_0x5fa4('0x11')](_0x5fa4('0xc'),auth[_0x5fa4('0xa')](),controller[_0x5fa4('0x12')]);module[_0x5fa4('0x13')]=router;
\ No newline at end of file
+var _0x972c=['destroy','exports','path','connect-timeout','Router','fs-extra','../../config/environment','./cmCustomField.controller','get','index','/:id','isAuthenticated','show','put','update','delete'];(function(_0x11155f,_0x57b687){var _0xd07e48=function(_0x592615){while(--_0x592615){_0x11155f['push'](_0x11155f['shift']());}};_0xd07e48(++_0x57b687);}(_0x972c,0xf2));var _0xc972=function(_0x3e7999,_0x53b911){_0x3e7999=_0x3e7999-0x0;var _0xc2d3c3=_0x972c[_0x3e7999];return _0xc2d3c3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc972('0x0'));var timeout=require(_0xc972('0x1'));var express=require('express');var router=express[_0xc972('0x2')]();var fs_extra=require(_0xc972('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc972('0x4'));var controller=require(_0xc972('0x5'));router[_0xc972('0x6')]('/',auth['isAuthenticated'](),controller[_0xc972('0x7')]);router['get'](_0xc972('0x8'),auth[_0xc972('0x9')](),controller[_0xc972('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xc972('0xb')]('/:id',auth[_0xc972('0x9')](),controller[_0xc972('0xc')]);router[_0xc972('0xd')](_0xc972('0x8'),auth[_0xc972('0x9')](),controller[_0xc972('0xe')]);module[_0xc972('0xf')]=router;
\ No newline at end of file
index f31bfcd..331b251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc69=['contactListQueue','sequelize','exports','STRING','BOOLEAN','DATE','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED'];(function(_0x1cad3d,_0x2dffc7){var _0x4c1883=function(_0x4da0d4){while(--_0x4da0d4){_0x1cad3d['push'](_0x1cad3d['shift']());}};_0x4c1883(++_0x2dffc7);}(_0xfc69,0x145));var _0x9fc6=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0xfc69[_0x5d4607];return _0x5e4a86;};'use strict';var moment=require('moment');var Sequelize=require(_0x9fc6('0x0'));module[_0x9fc6('0x1')]={'phone':{'type':Sequelize[_0x9fc6('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x9fc6('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x9fc6('0x4')],'defaultValue':moment()['format'](_0x9fc6('0x5'))},'countbusyretry':{'type':Sequelize[_0x9fc6('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x9fc6('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x9fc6('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x9fc6('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x9fc6('0x4')]},'priority':{'type':Sequelize[_0x9fc6('0x6')](0x2)[_0x9fc6('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x9fc6('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x9fc6('0x6')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x9fc6('0x6')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x9fc6('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x9fc6('0x6')],'unique':_0x9fc6('0x8')},'CampaignId':{'type':Sequelize[_0x9fc6('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x9fc6('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x9fc6('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x9fc6('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x9fc6('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x9fc6('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9b1e=['moment','sequelize','STRING','BOOLEAN','DATE','format','INTEGER','contactListQueue'];(function(_0x571030,_0x5d2051){var _0x2345d6=function(_0x23c5f1){while(--_0x23c5f1){_0x571030['push'](_0x571030['shift']());}};_0x2345d6(++_0x5d2051);}(_0x9b1e,0x130));var _0xe9b1=function(_0x52170a,_0x143f44){_0x52170a=_0x52170a-0x0;var _0x4af224=_0x9b1e[_0x52170a];return _0x4af224;};'use strict';var moment=require(_0xe9b1('0x0'));var Sequelize=require(_0xe9b1('0x1'));module['exports']={'phone':{'type':Sequelize[_0xe9b1('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0xe9b1('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xe9b1('0x4')],'defaultValue':moment()[_0xe9b1('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0xe9b1('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xe9b1('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe9b1('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe9b1('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xe9b1('0x4')]},'priority':{'type':Sequelize[_0xe9b1('0x6')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xe9b1('0x6')],'unique':_0xe9b1('0x7')},'ListId':{'type':Sequelize[_0xe9b1('0x6')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0xe9b1('0x6')]},'VoiceQueueId':{'type':Sequelize[_0xe9b1('0x6')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0xe9b1('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0xe9b1('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe9b1('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe9b1('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index b1f72e0..5107b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ed=['$lt','$lte','$eq','$not','$between','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','attributes','fields','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','describe','VoiceQueueId','VoiceQueue','Campaign','CampaignId','dataValues','createdAt','state','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','findOne','recallme','UPDATE','Contact','CmList','List','update','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','$and','$gte'];(function(_0x235f49,_0x2992b4){var _0x551139=function(_0x35565c){while(--_0x35565c){_0x235f49['push'](_0x235f49['shift']());}};_0x551139(++_0x2992b4);}(_0xa9ed,0x187));var _0xda9e=function(_0xcfeff4,_0x3f2e19){_0xcfeff4=_0xcfeff4-0x0;var _0xb2fadc=_0xa9ed[_0xcfeff4];return _0xb2fadc;};'use strict';var emlformat=require(_0xda9e('0x0'));var rimraf=require(_0xda9e('0x1'));var zipdir=require(_0xda9e('0x2'));var jsonpatch=require(_0xda9e('0x3'));var rp=require(_0xda9e('0x4'));var moment=require('moment');var BPromise=require(_0xda9e('0x5'));var Mustache=require(_0xda9e('0x6'));var util=require(_0xda9e('0x7'));var path=require(_0xda9e('0x8'));var sox=require(_0xda9e('0x9'));var csv=require(_0xda9e('0xa'));var ejs=require(_0xda9e('0xb'));var fs=require('fs');var fs_extra=require(_0xda9e('0xc'));var _=require(_0xda9e('0xd'));var squel=require(_0xda9e('0xe'));var crypto=require(_0xda9e('0xf'));var jsforce=require(_0xda9e('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xda9e('0xa'));var querystring=require(_0xda9e('0x11'));var Papa=require(_0xda9e('0x12'));var Redis=require(_0xda9e('0x13'));var authService=require(_0xda9e('0x14'));var qs=require(_0xda9e('0x15'));var as=require(_0xda9e('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xda9e('0x17'))(_0xda9e('0x18'));var utils=require(_0xda9e('0x19'));var config=require(_0xda9e('0x1a'));var licenseUtil=require(_0xda9e('0x1b'));var db=require(_0xda9e('0x1c'))['db'];function respondWithStatusCode(_0x198fbe,_0x2a23e6){_0x2a23e6=_0x2a23e6||0xcc;return function(_0x55ede6){if(_0x55ede6){return _0x198fbe['sendStatus'](_0x2a23e6);}return _0x198fbe[_0xda9e('0x1d')](_0x2a23e6)[_0xda9e('0x1e')]();};}function respondWithResult(_0x3b25d9,_0x27b637){_0x27b637=_0x27b637||0xc8;return function(_0x2b8e08){if(_0x2b8e08){return _0x3b25d9[_0xda9e('0x1d')](_0x27b637)['json'](_0x2b8e08);}};}function respondWithFilteredResult(_0x19490d,_0x368003){return function(_0x2d8cef){if(_0x2d8cef){var _0x482da8=typeof _0x368003[_0xda9e('0x1f')]===_0xda9e('0x20')&&typeof _0x368003[_0xda9e('0x21')]==='undefined';var _0x3b9722=_0x2d8cef[_0xda9e('0x22')];var _0xe12445=_0x482da8?0x0:_0x368003[_0xda9e('0x1f')];var _0x3f7552=_0x482da8?_0x2d8cef['count']:_0x368003[_0xda9e('0x1f')]+_0x368003[_0xda9e('0x21')];var _0x3fe9ea;if(_0x3f7552>=_0x3b9722){_0x3f7552=_0x3b9722;_0x3fe9ea=0xc8;}else{_0x3fe9ea=0xce;}_0x19490d[_0xda9e('0x1d')](_0x3fe9ea);return _0x19490d[_0xda9e('0x23')](_0xda9e('0x24'),_0xe12445+'-'+_0x3f7552+'/'+_0x3b9722)[_0xda9e('0x25')](_0x2d8cef);}return null;};}function patchUpdates(_0x5154da){return function(_0x589aaa){try{jsonpatch[_0xda9e('0x26')](_0x589aaa,_0x5154da,!![]);}catch(_0x4c6293){return BPromise[_0xda9e('0x27')](_0x4c6293);}return _0x589aaa[_0xda9e('0x28')]();};}function saveUpdates(_0xcd57b9,_0x1262d1){return function(_0x283ec9){if(_0x283ec9){return _0x283ec9['update'](_0xcd57b9)[_0xda9e('0x29')](function(_0x117263){return _0x117263;});}return null;};}function removeEntity(_0x997bdc,_0x54306a){return function(_0x15b53c){if(_0x15b53c){return _0x15b53c[_0xda9e('0x2a')]()[_0xda9e('0x29')](function(){_0x997bdc[_0xda9e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbb026d,_0x40cc15){return function(_0x364ef4){if(!_0x364ef4){_0xbb026d[_0xda9e('0x2b')](0x194);}return _0x364ef4;};}function handleError(_0x433a3e,_0x253d8c){_0x253d8c=_0x253d8c||0x1f4;return function(_0x11f03a){logger[_0xda9e('0x2c')](_0x11f03a[_0xda9e('0x2d')]);if(_0x11f03a['name']){delete _0x11f03a[_0xda9e('0x2e')];}_0x433a3e[_0xda9e('0x1d')](_0x253d8c)[_0xda9e('0x2f')](_0x11f03a);};}exports[_0xda9e('0x30')]=function(_0x3f701f,_0x279ff8){var _0x19a72f={},_0x1daa0b={},_0x5091f5={'count':0x0,'rows':[]};var _0x4e39b1=_[_0xda9e('0x31')](db[_0xda9e('0x32')][_0xda9e('0x33')],function(_0x14bced){return{'name':_0x14bced[_0xda9e('0x34')],'type':_0x14bced[_0xda9e('0x35')][_0xda9e('0x36')]};});_0x1daa0b['model']=_[_0xda9e('0x31')](_0x4e39b1,'name');_0x1daa0b[_0xda9e('0x37')]=_[_0xda9e('0x38')](_0x3f701f[_0xda9e('0x37')]);_0x1daa0b[_0xda9e('0x39')]=_[_0xda9e('0x3a')](_0x1daa0b[_0xda9e('0x3b')],_0x1daa0b[_0xda9e('0x37')]);_0x1daa0b[_0xda9e('0x39')]=_['concat'](_0x1daa0b['filters'],[_0xda9e('0x3c'),'$or','$gt',_0xda9e('0x3d'),_0xda9e('0x3e'),_0xda9e('0x3f'),'$ne',_0xda9e('0x40'),_0xda9e('0x41'),_0xda9e('0x42'),'$notBetween',_0xda9e('0x43'),_0xda9e('0x44'),_0xda9e('0x45'),_0xda9e('0x46'),_0xda9e('0x47'),_0xda9e('0x48'),_0xda9e('0x45'),_0xda9e('0x49'),_0xda9e('0x4a'),'$contained','$any']);_0x19a72f[_0xda9e('0x4b')]=_[_0xda9e('0x3a')](_0x1daa0b[_0xda9e('0x3b')],qs[_0xda9e('0x4c')](_0x3f701f[_0xda9e('0x37')][_0xda9e('0x4c')]));_0x19a72f['attributes']=_0x19a72f[_0xda9e('0x4b')][_0xda9e('0x4d')]?_0x19a72f['attributes']:_0x1daa0b[_0xda9e('0x3b')];if(!_0x3f701f['query'][_0xda9e('0x4e')]('nolimit')){_0x19a72f[_0xda9e('0x21')]=qs[_0xda9e('0x21')](_0x3f701f[_0xda9e('0x37')][_0xda9e('0x21')]);_0x19a72f[_0xda9e('0x1f')]=qs[_0xda9e('0x1f')](_0x3f701f[_0xda9e('0x37')]['offset']);}_0x19a72f['order']=qs[_0xda9e('0x4f')](_0x3f701f['query']['sort']);_0x19a72f[_0xda9e('0x50')]=qs[_0xda9e('0x39')](_[_0xda9e('0x51')](_0x3f701f['query'],_0x1daa0b[_0xda9e('0x39')]),_0x4e39b1);if(_0x3f701f[_0xda9e('0x37')]['filter']){_0x19a72f[_0xda9e('0x50')]=_[_0xda9e('0x52')](_0x19a72f['where'],{'$or':_[_0xda9e('0x31')](_0x4e39b1,function(_0x5e301d){if(_0x5e301d[_0xda9e('0x35')]!==_0xda9e('0x53')){var _0x44b4bc={};_0x44b4bc[_0x5e301d[_0xda9e('0x2e')]]={'$like':'%'+_0x3f701f[_0xda9e('0x37')][_0xda9e('0x54')]+'%'};return _0x44b4bc;}})});}_0x19a72f=_[_0xda9e('0x52')]({},_0x19a72f,_0x3f701f['options']);var _0x1cd31e={'where':_0x19a72f[_0xda9e('0x50')]};return db['CmHopper'][_0xda9e('0x22')](_0x1cd31e)[_0xda9e('0x29')](function(_0x4e0c26){_0x5091f5['count']=_0x4e0c26;if(_0x3f701f['query'][_0xda9e('0x55')]){_0x19a72f[_0xda9e('0x56')]=[{'all':!![]}];}return db[_0xda9e('0x32')][_0xda9e('0x57')](_0x19a72f);})[_0xda9e('0x29')](function(_0x4e544a){_0x5091f5[_0xda9e('0x58')]=_0x4e544a;return _0x5091f5;})['then'](respondWithFilteredResult(_0x279ff8,_0x19a72f))['catch'](handleError(_0x279ff8,null));};exports[_0xda9e('0x59')]=function(_0x24339b,_0x3773d8){var _0x30d3c4={'raw':!![],'where':{'id':_0x24339b[_0xda9e('0x5a')]['id']}},_0x10feda={};_0x10feda[_0xda9e('0x3b')]=_[_0xda9e('0x38')](db[_0xda9e('0x32')]['rawAttributes']);_0x10feda['query']=_[_0xda9e('0x38')](_0x24339b[_0xda9e('0x37')]);_0x10feda[_0xda9e('0x39')]=_[_0xda9e('0x3a')](_0x10feda[_0xda9e('0x3b')],_0x10feda[_0xda9e('0x37')]);_0x30d3c4[_0xda9e('0x4b')]=_['intersection'](_0x10feda[_0xda9e('0x3b')],qs['fields'](_0x24339b[_0xda9e('0x37')][_0xda9e('0x4c')]));_0x30d3c4[_0xda9e('0x4b')]=_0x30d3c4[_0xda9e('0x4b')][_0xda9e('0x4d')]?_0x30d3c4[_0xda9e('0x4b')]:_0x10feda[_0xda9e('0x3b')];if(_0x24339b[_0xda9e('0x37')][_0xda9e('0x55')]){_0x30d3c4[_0xda9e('0x56')]=[{'all':!![]}];}_0x30d3c4=_['merge']({},_0x30d3c4,_0x24339b[_0xda9e('0x5b')]);return db[_0xda9e('0x32')][_0xda9e('0x5c')](_0x30d3c4)[_0xda9e('0x29')](handleEntityNotFound(_0x3773d8,null))[_0xda9e('0x29')](respondWithResult(_0x3773d8,null))[_0xda9e('0x5d')](handleError(_0x3773d8,null));};exports[_0xda9e('0x5e')]=function(_0x4dfa2d,_0x28bb59){return db[_0xda9e('0x32')][_0xda9e('0x5e')](_0x4dfa2d[_0xda9e('0x5f')],{})['then'](respondWithResult(_0x28bb59,0xc9))[_0xda9e('0x5d')](handleError(_0x28bb59,null));};exports['update']=function(_0x351504,_0x3c4d22){if(_0x351504[_0xda9e('0x5f')]['id']){delete _0x351504[_0xda9e('0x5f')]['id'];}return db[_0xda9e('0x32')][_0xda9e('0x5c')]({'where':{'id':_0x351504[_0xda9e('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3c4d22,null))[_0xda9e('0x29')](saveUpdates(_0x351504[_0xda9e('0x5f')],null))[_0xda9e('0x29')](respondWithResult(_0x3c4d22,null))['catch'](handleError(_0x3c4d22,null));};exports[_0xda9e('0x60')]=function(_0xabf40c,_0xcaaf64){return db[_0xda9e('0x32')]['describe']()[_0xda9e('0x29')](respondWithResult(_0xcaaf64,null))[_0xda9e('0x5d')](handleError(_0xcaaf64,null));};exports[_0xda9e('0x2a')]=function(_0x51f688,_0x352bbf){var _0x374b77;return db['CmHopper']['find']({'where':{'id':_0x51f688['params']['id']}})['then'](handleEntityNotFound(_0x352bbf,null))[_0xda9e('0x29')](function(_0x15530e){if(_0x15530e){return _0x15530e[_0xda9e('0x2a')]()[_0xda9e('0x29')](function(_0x11f353){return _0x11f353;});}})[_0xda9e('0x29')](function(_0x1dd82d){_0x374b77=_0x1dd82d;if(_0x1dd82d){if(_0x1dd82d[_0xda9e('0x61')]||_0x1dd82d['CampaignId']){return db[_0x1dd82d['VoiceQueueId']?_0xda9e('0x62'):_0xda9e('0x63')]['find']({'where':{'id':_0x1dd82d['VoiceQueueId']?_0x1dd82d['VoiceQueueId']:_0x1dd82d[_0xda9e('0x64')]},'attributes':['id','name'],'raw':!![]});}}})[_0xda9e('0x29')](function(_0x221a70){var _0x35e517={};if(_0x221a70){_[_0xda9e('0x52')](_0x35e517,_['omit'](_0x374b77[_0xda9e('0x65')],[_0xda9e('0x66'),'updatedAt','id']));_0x35e517[_0xda9e('0x67')]=0x15;_0x35e517['statedesc']=_0xda9e('0x68');_0x35e517[_0xda9e('0x69')]=_0x221a70[_0xda9e('0x2e')];_0x35e517[_0xda9e('0x6a')]=_0x51f688[_0xda9e('0x6b')]['name'];_0x35e517[_0xda9e('0x6c')]=_0x51f688[_0xda9e('0x6b')]['id'];_0x35e517[_0xda9e('0x68')]=!![];_0x35e517[_0xda9e('0x6d')]=moment()[_0xda9e('0x6e')](_0xda9e('0x6f'));_0x35e517['calleridnum']=_0x374b77['phone'];_0x35e517['campaigntype']=_0x374b77[_0xda9e('0x61')]?_0xda9e('0x70'):_0xda9e('0x71');return db[_0xda9e('0x72')][_0xda9e('0x5c')]({'where':{'id':_0x35e517[_0xda9e('0x73')]},'attributes':[_0xda9e('0x74'),_0xda9e('0x75')]})['then'](function(_0x1e5d13){if(!_[_0xda9e('0x76')](_0x352bbf)&&!_[_0xda9e('0x76')](_0x1e5d13[_0xda9e('0x74')])){_0x35e517[_0xda9e('0x77')]=_0x1e5d13['firstName'];if(!_[_0xda9e('0x76')](_0x1e5d13['lastName'])){_0x35e517[_0xda9e('0x77')]+='\x20'+_0x1e5d13[_0xda9e('0x75')];}}})[_0xda9e('0x78')](function(){return db[_0xda9e('0x79')][_0xda9e('0x5e')](_0x35e517);});}})[_0xda9e('0x29')](function(){return _0x352bbf['status'](0xcc)[_0xda9e('0x1e')]();})[_0xda9e('0x5d')](handleError(_0x352bbf,null));};exports[_0xda9e('0x7a')]=function(_0x2eaad5,_0x490527,_0x384f0c){var _0x2d1248=[];return db[_0xda9e('0x72')][_0xda9e('0x60')]()[_0xda9e('0x29')](function(_0x2f8ca4){_0x2d1248=_['keys'](_0x2f8ca4);return _0x2eaad5['user'][_0xda9e('0x7b')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xda9e('0x7c')},'attributes':['id',_0xda9e('0x7d'),_0xda9e('0x7e')],'raw':!![]});})[_0xda9e('0x29')](function(_0x1ccb76){if(_0x1ccb76&&_0x1ccb76[_0xda9e('0x4d')]){return db[_0xda9e('0x7f')][_0xda9e('0x80')](function(_0x324c14){var _0xa57a7e={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xda9e('0x6e')](_0xda9e('0x6f'))},'VoiceQueueId':{'$in':_[_0xda9e('0x31')](_0x1ccb76,'id')},'$or':[{'UserId':null},{'UserId':_0x2eaad5['user']['id']}]};var _0x1c4dac={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1ccb76)[_0xda9e('0x54')]([_0xda9e('0x7e'),0x0])[_0xda9e('0x31')]('id')[_0xda9e('0x81')]()},'$or':[{'UserId':null},{'UserId':_0x2eaad5[_0xda9e('0x6b')]['id']}]};var _0x23dac8={'$or':[_0xa57a7e,_0x1c4dac]};var _0x1152c5=[];if(_0x2eaad5['body'][_0xda9e('0x82')]&&_0x2eaad5['body'][_0xda9e('0x82')]===_0xda9e('0x83')){if(!_[_0xda9e('0x84')](_0x2eaad5[_0xda9e('0x5f')]['hopperIds'])){_0x23dac8['id']={'$in':_0x2eaad5[_0xda9e('0x5f')][_0xda9e('0x85')]};}_0x1152c5=[[_0xda9e('0x86'),_0xda9e('0x87')],[_0xda9e('0x88'),_0x1ccb76[0x0][_0xda9e('0x7d')]===_0xda9e('0x87')?_0xda9e('0x89'):'ASC'],db['sequelize']['literal']('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xda9e('0x89')]];}else{if(!_[_0xda9e('0x84')](_0x2eaad5[_0xda9e('0x5f')][_0xda9e('0x85')])){_0x23dac8['id']={'$notIn':_0x2eaad5[_0xda9e('0x5f')]['hopperIds']};}_0x1152c5=[[_0xda9e('0x86'),_0xda9e('0x89')],[_0xda9e('0x88'),_0x1ccb76[0x0][_0xda9e('0x7d')]],db[_0xda9e('0x7f')][_0xda9e('0x8a')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0xda9e('0x32')][_0xda9e('0x8b')]({'attributes':['id','scheduledat',_0xda9e('0x8c')],'where':_0x23dac8,'order':_0x1152c5,'transaction':_0x324c14,'lock':_0x324c14['LOCK'][_0xda9e('0x8d')],'include':[{'model':db[_0xda9e('0x72')],'as':_0xda9e('0x8e'),'attributes':_0x2d1248,'include':[{'model':db['CmCompany'],'as':'Company','attributes':['id',_0xda9e('0x2e')]}]},{'model':db[_0xda9e('0x8f')],'as':_0xda9e('0x90'),'attributes':['id',_0xda9e('0x2e')]},{'model':db[_0xda9e('0x62')],'as':'Queue','attributes':['id',_0xda9e('0x2e'),'dialActive']}]})[_0xda9e('0x29')](function(_0x5abed3){if(_0x5abed3){return _0x5abed3[_0xda9e('0x91')]({'UserId':_0x2eaad5[_0xda9e('0x6b')]['id']},{'transaction':_0x324c14});}});});}})[_0xda9e('0x29')](handleEntityNotFound(_0x490527,null))[_0xda9e('0x29')](respondWithResult(_0x490527,null))[_0xda9e('0x5d')](handleError(_0x490527,null));};exports[_0xda9e('0x92')]=function(_0x235bfe,_0x5b3286,_0xfdcb0b){return _0x235bfe[_0xda9e('0x6b')][_0xda9e('0x7b')]({'where':{'type':_0xda9e('0x93'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0xda9e('0x29')](function(_0x778630){if(_0x778630&&_0x778630['length']){return db[_0xda9e('0x32')][_0xda9e('0x22')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xda9e('0x6e')](_0xda9e('0x6f'))},'VoiceQueueId':{'$in':_[_0xda9e('0x31')](_0x778630,'id')},'$or':[{'UserId':null},{'UserId':_0x235bfe[_0xda9e('0x6b')]['id']}]}});}return 0x0;})['then'](function(_0xd744e7){if(!_[_0xda9e('0x76')](_0xd744e7)&&_[_0xda9e('0x94')](_0xd744e7)){return _0x5b3286['status'](0xc8)[_0xda9e('0x25')]({'contacts':_0xd744e7});}else{logger[_0xda9e('0x2c')](_0xda9e('0x95'),_0xda9e('0x92'),0x194,_0xda9e('0x96'));_0x5b3286[_0xda9e('0x2b')](0x194);}})[_0xda9e('0x5d')](handleError(_0x5b3286,null));};
\ No newline at end of file
+var _0xbb94=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show','params','length','create','body','find','describe','CampaignId','VoiceQueue','Campaign','VoiceQueueId','omit','dataValues','updatedAt','state','deleted','campaign','membername','user','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','queue','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getVoiceQueues','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','transaction','format','value','direction','hopperIds','ASC','scheduledAt','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','isEmpty','priority','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','Company','List','dialActive','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','offset','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','concat','$gt','$gte','$lte','$eq','$not','$between','$notBetween','$in','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields'];(function(_0x2a8b1e,_0x170c66){var _0x35a1c2=function(_0x4fda26){while(--_0x4fda26){_0x2a8b1e['push'](_0x2a8b1e['shift']());}};_0x35a1c2(++_0x170c66);}(_0xbb94,0xde));var _0x4bb9=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xbb94[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4bb9('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4bb9('0x1'));var moment=require(_0x4bb9('0x2'));var BPromise=require(_0x4bb9('0x3'));var Mustache=require(_0x4bb9('0x4'));var util=require(_0x4bb9('0x5'));var path=require(_0x4bb9('0x6'));var sox=require(_0x4bb9('0x7'));var csv=require(_0x4bb9('0x8'));var ejs=require(_0x4bb9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4bb9('0xa'));var squel=require(_0x4bb9('0xb'));var crypto=require(_0x4bb9('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x4bb9('0xd'));var toCsv=require(_0x4bb9('0x8'));var querystring=require('querystring');var Papa=require(_0x4bb9('0xe'));var Redis=require('ioredis');var authService=require(_0x4bb9('0xf'));var qs=require(_0x4bb9('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4bb9('0x11'))(_0x4bb9('0x12'));var utils=require(_0x4bb9('0x13'));var config=require(_0x4bb9('0x14'));var licenseUtil=require(_0x4bb9('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x41dc77,_0x59f1e3){_0x59f1e3=_0x59f1e3||0xcc;return function(_0xfd9c23){if(_0xfd9c23){return _0x41dc77[_0x4bb9('0x16')](_0x59f1e3);}return _0x41dc77[_0x4bb9('0x17')](_0x59f1e3)[_0x4bb9('0x18')]();};}function respondWithResult(_0x3ea55a,_0x52b678){_0x52b678=_0x52b678||0xc8;return function(_0x6ce04b){if(_0x6ce04b){return _0x3ea55a[_0x4bb9('0x17')](_0x52b678)[_0x4bb9('0x19')](_0x6ce04b);}};}function respondWithFilteredResult(_0x2c6bb2,_0x469ba4){return function(_0x1f7ef1){if(_0x1f7ef1){var _0x168f40=typeof _0x469ba4['offset']===_0x4bb9('0x1a')&&typeof _0x469ba4[_0x4bb9('0x1b')]==='undefined';var _0x325994=_0x1f7ef1['count'];var _0x421813=_0x168f40?0x0:_0x469ba4[_0x4bb9('0x1c')];var _0x5b7c73=_0x168f40?_0x1f7ef1['count']:_0x469ba4[_0x4bb9('0x1c')]+_0x469ba4[_0x4bb9('0x1b')];var _0x1535f0;if(_0x5b7c73>=_0x325994){_0x5b7c73=_0x325994;_0x1535f0=0xc8;}else{_0x1535f0=0xce;}_0x2c6bb2[_0x4bb9('0x17')](_0x1535f0);return _0x2c6bb2[_0x4bb9('0x1d')]('Content-Range',_0x421813+'-'+_0x5b7c73+'/'+_0x325994)[_0x4bb9('0x19')](_0x1f7ef1);}return null;};}function patchUpdates(_0x302651){return function(_0x4b8a13){try{jsonpatch[_0x4bb9('0x1e')](_0x4b8a13,_0x302651,!![]);}catch(_0x19c770){return BPromise[_0x4bb9('0x1f')](_0x19c770);}return _0x4b8a13[_0x4bb9('0x20')]();};}function saveUpdates(_0x9d585c,_0x1b57f7){return function(_0x1428e7){if(_0x1428e7){return _0x1428e7[_0x4bb9('0x21')](_0x9d585c)[_0x4bb9('0x22')](function(_0x14eeef){return _0x14eeef;});}return null;};}function removeEntity(_0x26afc7,_0x27675f){return function(_0x3fe991){if(_0x3fe991){return _0x3fe991[_0x4bb9('0x23')]()[_0x4bb9('0x22')](function(){_0x26afc7['status'](0xcc)[_0x4bb9('0x18')]();});}};}function handleEntityNotFound(_0x510008,_0x1c7bed){return function(_0x5200d6){if(!_0x5200d6){_0x510008[_0x4bb9('0x16')](0x194);}return _0x5200d6;};}function handleError(_0xe8bcb8,_0x48f153){_0x48f153=_0x48f153||0x1f4;return function(_0x1ab6e5){logger[_0x4bb9('0x24')](_0x1ab6e5[_0x4bb9('0x25')]);if(_0x1ab6e5[_0x4bb9('0x26')]){delete _0x1ab6e5[_0x4bb9('0x26')];}_0xe8bcb8['status'](_0x48f153)[_0x4bb9('0x27')](_0x1ab6e5);};}exports[_0x4bb9('0x28')]=function(_0x5f216e,_0x283778){var _0x40da36={},_0x224045={},_0x513b05={'count':0x0,'rows':[]};var _0x1f8aa6=_[_0x4bb9('0x29')](db[_0x4bb9('0x2a')][_0x4bb9('0x2b')],function(_0x3e958c){return{'name':_0x3e958c[_0x4bb9('0x2c')],'type':_0x3e958c[_0x4bb9('0x2d')][_0x4bb9('0x2e')]};});_0x224045[_0x4bb9('0x2f')]=_['map'](_0x1f8aa6,_0x4bb9('0x26'));_0x224045['query']=_[_0x4bb9('0x30')](_0x5f216e['query']);_0x224045[_0x4bb9('0x31')]=_[_0x4bb9('0x32')](_0x224045['model'],_0x224045[_0x4bb9('0x33')]);_0x224045[_0x4bb9('0x31')]=_[_0x4bb9('0x34')](_0x224045[_0x4bb9('0x31')],['$and','$or',_0x4bb9('0x35'),_0x4bb9('0x36'),'$lt',_0x4bb9('0x37'),'$ne',_0x4bb9('0x38'),_0x4bb9('0x39'),_0x4bb9('0x3a'),_0x4bb9('0x3b'),_0x4bb9('0x3c'),'$notIn',_0x4bb9('0x3d'),_0x4bb9('0x3e'),'$iLike',_0x4bb9('0x3f'),'$like',_0x4bb9('0x40'),_0x4bb9('0x41'),_0x4bb9('0x42'),_0x4bb9('0x43')]);_0x40da36[_0x4bb9('0x44')]=_[_0x4bb9('0x32')](_0x224045[_0x4bb9('0x2f')],qs[_0x4bb9('0x45')](_0x5f216e[_0x4bb9('0x33')][_0x4bb9('0x45')]));_0x40da36[_0x4bb9('0x44')]=_0x40da36[_0x4bb9('0x44')]['length']?_0x40da36[_0x4bb9('0x44')]:_0x224045[_0x4bb9('0x2f')];if(!_0x5f216e[_0x4bb9('0x33')][_0x4bb9('0x46')](_0x4bb9('0x47'))){_0x40da36[_0x4bb9('0x1b')]=qs[_0x4bb9('0x1b')](_0x5f216e[_0x4bb9('0x33')][_0x4bb9('0x1b')]);_0x40da36[_0x4bb9('0x1c')]=qs[_0x4bb9('0x1c')](_0x5f216e[_0x4bb9('0x33')][_0x4bb9('0x1c')]);}_0x40da36[_0x4bb9('0x48')]=qs[_0x4bb9('0x49')](_0x5f216e['query'][_0x4bb9('0x49')]);_0x40da36[_0x4bb9('0x4a')]=qs[_0x4bb9('0x31')](_[_0x4bb9('0x4b')](_0x5f216e['query'],_0x224045[_0x4bb9('0x31')]),_0x1f8aa6);if(_0x5f216e[_0x4bb9('0x33')][_0x4bb9('0x4c')]){_0x40da36['where']=_[_0x4bb9('0x4d')](_0x40da36[_0x4bb9('0x4a')],{'$or':_['map'](_0x1f8aa6,function(_0x11700c){if(_0x11700c[_0x4bb9('0x2d')]!==_0x4bb9('0x4e')){var _0x3557b1={};_0x3557b1[_0x11700c[_0x4bb9('0x26')]]={'$like':'%'+_0x5f216e[_0x4bb9('0x33')][_0x4bb9('0x4c')]+'%'};return _0x3557b1;}})});}_0x40da36=_['merge']({},_0x40da36,_0x5f216e[_0x4bb9('0x4f')]);var _0x2d6d45={'where':_0x40da36[_0x4bb9('0x4a')]};return db[_0x4bb9('0x2a')][_0x4bb9('0x50')](_0x2d6d45)[_0x4bb9('0x22')](function(_0x391f8c){_0x513b05[_0x4bb9('0x50')]=_0x391f8c;if(_0x5f216e['query'][_0x4bb9('0x51')]){_0x40da36[_0x4bb9('0x52')]=[{'all':!![]}];}return db[_0x4bb9('0x2a')]['findAll'](_0x40da36);})[_0x4bb9('0x22')](function(_0x21bfcd){_0x513b05[_0x4bb9('0x53')]=_0x21bfcd;return _0x513b05;})[_0x4bb9('0x22')](respondWithFilteredResult(_0x283778,_0x40da36))[_0x4bb9('0x54')](handleError(_0x283778,null));};exports[_0x4bb9('0x55')]=function(_0x585466,_0x386656){var _0x367ceb={'raw':!![],'where':{'id':_0x585466[_0x4bb9('0x56')]['id']}},_0x5c8a33={};_0x5c8a33[_0x4bb9('0x2f')]=_[_0x4bb9('0x30')](db[_0x4bb9('0x2a')][_0x4bb9('0x2b')]);_0x5c8a33[_0x4bb9('0x33')]=_[_0x4bb9('0x30')](_0x585466[_0x4bb9('0x33')]);_0x5c8a33['filters']=_[_0x4bb9('0x32')](_0x5c8a33['model'],_0x5c8a33['query']);_0x367ceb[_0x4bb9('0x44')]=_['intersection'](_0x5c8a33['model'],qs[_0x4bb9('0x45')](_0x585466[_0x4bb9('0x33')]['fields']));_0x367ceb[_0x4bb9('0x44')]=_0x367ceb[_0x4bb9('0x44')][_0x4bb9('0x57')]?_0x367ceb[_0x4bb9('0x44')]:_0x5c8a33[_0x4bb9('0x2f')];if(_0x585466['query'][_0x4bb9('0x51')]){_0x367ceb[_0x4bb9('0x52')]=[{'all':!![]}];}_0x367ceb=_[_0x4bb9('0x4d')]({},_0x367ceb,_0x585466['options']);return db[_0x4bb9('0x2a')]['find'](_0x367ceb)[_0x4bb9('0x22')](handleEntityNotFound(_0x386656,null))[_0x4bb9('0x22')](respondWithResult(_0x386656,null))[_0x4bb9('0x54')](handleError(_0x386656,null));};exports[_0x4bb9('0x58')]=function(_0x1f89f8,_0x54f35a){return db[_0x4bb9('0x2a')]['create'](_0x1f89f8[_0x4bb9('0x59')],{})[_0x4bb9('0x22')](respondWithResult(_0x54f35a,0xc9))[_0x4bb9('0x54')](handleError(_0x54f35a,null));};exports[_0x4bb9('0x21')]=function(_0x512308,_0xbec021){if(_0x512308[_0x4bb9('0x59')]['id']){delete _0x512308['body']['id'];}return db[_0x4bb9('0x2a')][_0x4bb9('0x5a')]({'where':{'id':_0x512308[_0x4bb9('0x56')]['id']}})[_0x4bb9('0x22')](handleEntityNotFound(_0xbec021,null))['then'](saveUpdates(_0x512308[_0x4bb9('0x59')],null))[_0x4bb9('0x22')](respondWithResult(_0xbec021,null))[_0x4bb9('0x54')](handleError(_0xbec021,null));};exports[_0x4bb9('0x5b')]=function(_0x161cc1,_0x22208d){return db[_0x4bb9('0x2a')]['describe']()[_0x4bb9('0x22')](respondWithResult(_0x22208d,null))[_0x4bb9('0x54')](handleError(_0x22208d,null));};exports['destroy']=function(_0x2041cf,_0x100be5){var _0x10dc75;return db['CmHopper']['find']({'where':{'id':_0x2041cf['params']['id']}})[_0x4bb9('0x22')](handleEntityNotFound(_0x100be5,null))['then'](function(_0xb48dcf){if(_0xb48dcf){return _0xb48dcf[_0x4bb9('0x23')]()[_0x4bb9('0x22')](function(_0x25660c){return _0x25660c;});}})[_0x4bb9('0x22')](function(_0x154729){_0x10dc75=_0x154729;if(_0x154729){if(_0x154729['VoiceQueueId']||_0x154729[_0x4bb9('0x5c')]){return db[_0x154729['VoiceQueueId']?_0x4bb9('0x5d'):_0x4bb9('0x5e')]['find']({'where':{'id':_0x154729[_0x4bb9('0x5f')]?_0x154729[_0x4bb9('0x5f')]:_0x154729[_0x4bb9('0x5c')]},'attributes':['id',_0x4bb9('0x26')],'raw':!![]});}}})['then'](function(_0x43f514){var _0x1604a5={};if(_0x43f514){_[_0x4bb9('0x4d')](_0x1604a5,_[_0x4bb9('0x60')](_0x10dc75[_0x4bb9('0x61')],['createdAt',_0x4bb9('0x62'),'id']));_0x1604a5[_0x4bb9('0x63')]=0x15;_0x1604a5['statedesc']=_0x4bb9('0x64');_0x1604a5[_0x4bb9('0x65')]=_0x43f514[_0x4bb9('0x26')];_0x1604a5[_0x4bb9('0x66')]=_0x2041cf['user'][_0x4bb9('0x26')];_0x1604a5['UserId']=_0x2041cf[_0x4bb9('0x67')]['id'];_0x1604a5[_0x4bb9('0x64')]=!![];_0x1604a5['deletedat']=moment()['format'](_0x4bb9('0x68'));_0x1604a5[_0x4bb9('0x69')]=_0x10dc75['phone'];_0x1604a5[_0x4bb9('0x6a')]=_0x10dc75[_0x4bb9('0x5f')]?_0x4bb9('0x6b'):'ivr';return db[_0x4bb9('0x6c')]['find']({'where':{'id':_0x1604a5[_0x4bb9('0x6d')]},'attributes':[_0x4bb9('0x6e'),_0x4bb9('0x6f')]})[_0x4bb9('0x22')](function(_0x9c92c){if(!_[_0x4bb9('0x70')](_0x100be5)&&!_[_0x4bb9('0x70')](_0x9c92c[_0x4bb9('0x6e')])){_0x1604a5[_0x4bb9('0x71')]=_0x9c92c[_0x4bb9('0x6e')];if(!_['isNil'](_0x9c92c[_0x4bb9('0x6f')])){_0x1604a5[_0x4bb9('0x71')]+='\x20'+_0x9c92c[_0x4bb9('0x6f')];}}})[_0x4bb9('0x72')](function(){return db[_0x4bb9('0x73')][_0x4bb9('0x58')](_0x1604a5);});}})[_0x4bb9('0x22')](function(){return _0x100be5[_0x4bb9('0x17')](0xcc)[_0x4bb9('0x18')]();})[_0x4bb9('0x54')](handleError(_0x100be5,null));};exports['getPreview']=function(_0x2d60c7,_0x13ce27,_0x3f98cb){var _0x570b8f=[];return db[_0x4bb9('0x6c')][_0x4bb9('0x5b')]()[_0x4bb9('0x22')](function(_0x5c4ea5){_0x570b8f=_['keys'](_0x5c4ea5);return _0x2d60c7[_0x4bb9('0x67')][_0x4bb9('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x4bb9('0x75')},'attributes':['id',_0x4bb9('0x76'),_0x4bb9('0x77')],'raw':!![]});})['then'](function(_0x12977d){if(_0x12977d&&_0x12977d['length']){return db['sequelize'][_0x4bb9('0x78')](function(_0x1bed7d){var _0x4035bc={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x4bb9('0x79')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x4bb9('0x29')](_0x12977d,'id')},'$or':[{'UserId':null},{'UserId':_0x2d60c7['user']['id']}]};var _0x4cc534={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x12977d)[_0x4bb9('0x4c')]([_0x4bb9('0x77'),0x0])[_0x4bb9('0x29')]('id')[_0x4bb9('0x7a')]()},'$or':[{'UserId':null},{'UserId':_0x2d60c7[_0x4bb9('0x67')]['id']}]};var _0x16b6c8={'$or':[_0x4035bc,_0x4cc534]};var _0x8612d=[];if(_0x2d60c7[_0x4bb9('0x59')][_0x4bb9('0x7b')]&&_0x2d60c7[_0x4bb9('0x59')][_0x4bb9('0x7b')]==='prev'){if(!_['isEmpty'](_0x2d60c7['body'][_0x4bb9('0x7c')])){_0x16b6c8['id']={'$in':_0x2d60c7[_0x4bb9('0x59')][_0x4bb9('0x7c')]};}_0x8612d=[['priority',_0x4bb9('0x7d')],[_0x4bb9('0x7e'),_0x12977d[0x0][_0x4bb9('0x76')]==='ASC'?'DESC':_0x4bb9('0x7d')],db[_0x4bb9('0x7f')][_0x4bb9('0x80')](_0x4bb9('0x81')),['id',_0x4bb9('0x82')]];}else{if(!_[_0x4bb9('0x83')](_0x2d60c7[_0x4bb9('0x59')][_0x4bb9('0x7c')])){_0x16b6c8['id']={'$notIn':_0x2d60c7[_0x4bb9('0x59')][_0x4bb9('0x7c')]};}_0x8612d=[[_0x4bb9('0x84'),'DESC'],[_0x4bb9('0x7e'),_0x12977d[0x0][_0x4bb9('0x76')]],db[_0x4bb9('0x7f')][_0x4bb9('0x80')](_0x4bb9('0x85')),['id',_0x4bb9('0x7d')]];}return db[_0x4bb9('0x2a')][_0x4bb9('0x86')]({'attributes':['id',_0x4bb9('0x87'),_0x4bb9('0x88')],'where':_0x16b6c8,'order':_0x8612d,'transaction':_0x1bed7d,'lock':_0x1bed7d['LOCK'][_0x4bb9('0x89')],'include':[{'model':db[_0x4bb9('0x6c')],'as':'Contact','attributes':_0x570b8f,'include':[{'model':db['CmCompany'],'as':_0x4bb9('0x8a'),'attributes':['id',_0x4bb9('0x26')]}]},{'model':db['CmList'],'as':_0x4bb9('0x8b'),'attributes':['id','name']},{'model':db[_0x4bb9('0x5d')],'as':'Queue','attributes':['id','name',_0x4bb9('0x8c')]}]})[_0x4bb9('0x22')](function(_0x27ba49){if(_0x27ba49){return _0x27ba49['update']({'UserId':_0x2d60c7['user']['id']},{'transaction':_0x1bed7d});}});});}})['then'](handleEntityNotFound(_0x13ce27,null))[_0x4bb9('0x22')](respondWithResult(_0x13ce27,null))['catch'](handleError(_0x13ce27,null));};exports[_0x4bb9('0x8d')]=function(_0xbe88e8,_0x22ad3a,_0x334a16){return _0xbe88e8[_0x4bb9('0x67')][_0x4bb9('0x74')]({'where':{'type':_0x4bb9('0x8e'),'dialActive':!![],'dialMethod':_0x4bb9('0x75')},'attributes':['id'],'raw':!![]})['then'](function(_0x1e4e5a){if(_0x1e4e5a&&_0x1e4e5a['length']){return db['CmHopper'][_0x4bb9('0x50')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x4bb9('0x68'))},'VoiceQueueId':{'$in':_[_0x4bb9('0x29')](_0x1e4e5a,'id')},'$or':[{'UserId':null},{'UserId':_0xbe88e8[_0x4bb9('0x67')]['id']}]}});}return 0x0;})[_0x4bb9('0x22')](function(_0x3a10c7){if(!_[_0x4bb9('0x70')](_0x3a10c7)&&_[_0x4bb9('0x8f')](_0x3a10c7)){return _0x22ad3a[_0x4bb9('0x17')](0xc8)[_0x4bb9('0x19')]({'contacts':_0x3a10c7});}else{logger[_0x4bb9('0x24')](_0x4bb9('0x90'),_0x4bb9('0x8d'),0x194,_0x4bb9('0x91'));_0x22ad3a[_0x4bb9('0x16')](0x194);}})[_0x4bb9('0x54')](handleError(_0x22ad3a,null));};
\ No newline at end of file
index 105ab7f..af2f6ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['request-promise','rimraf','../../config/environment','./cmHopper.attributes','define','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment'];(function(_0x28c0e,_0x2e8643){var _0x326959=function(_0x4c311c){while(--_0x4c311c){_0x28c0e['push'](_0x28c0e['shift']());}};_0x326959(++_0x2e8643);}(_0x5496,0x175));var _0x6549=function(_0x11cf89,_0xd64018){_0x11cf89=_0x11cf89-0x0;var _0xc81326=_0x5496[_0x11cf89];return _0xc81326;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var logger=require(_0x6549('0x2'))(_0x6549('0x3'));var moment=require(_0x6549('0x4'));var BPromise=require('bluebird');var rp=require(_0x6549('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6549('0x6'));var config=require(_0x6549('0x7'));var attributes=require(_0x6549('0x8'));module['exports']=function(_0x5a4658,_0x43cb17){return _0x5a4658[_0x6549('0x9')]('CmHopper',attributes,{'tableName':_0x6549('0xa'),'paranoid':![],'indexes':[{'name':_0x6549('0xb'),'fields':[_0x6549('0xb')]},{'name':'phone','fields':[_0x6549('0xc')]},{'name':_0x6549('0xd'),'fields':[_0x6549('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6ac=['./cmHopper.attributes','exports','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x1c2d6f,_0x39cb1e){_0x1c2d6f=_0x1c2d6f-0x0;var _0x2ba731=_0xc6ac[_0x1c2d6f];return _0x2ba731;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var logger=require(_0xcc6a('0x2'))(_0xcc6a('0x3'));var moment=require(_0xcc6a('0x4'));var BPromise=require(_0xcc6a('0x5'));var rp=require(_0xcc6a('0x6'));var fs=require('fs');var path=require(_0xcc6a('0x7'));var rimraf=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var attributes=require(_0xcc6a('0xa'));module[_0xcc6a('0xb')]=function(_0x12330e,_0x197bd7){return _0x12330e['define'](_0xcc6a('0xc'),attributes,{'tableName':_0xcc6a('0xd'),'paranoid':![],'indexes':[{'name':_0xcc6a('0xe'),'fields':['scheduledat']},{'name':_0xcc6a('0xf'),'fields':[_0xcc6a('0xf')]},{'name':_0xcc6a('0x10'),'fields':[_0xcc6a('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 0c62cd5..19f9cfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a76=['push','update','includes','all','dataValues','MoveContactManagedDialer','CmHopperFinal','create','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','describe','UserId','LOCK','GetCmHopperPreview','ResetActiveCalls','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopper,\x20%s,\x20%s','message','result','catch','GetCmHopper','CmHopper','findAll','options','where','attributes','limit','include','map','model','raw','ShowCmHopper','CreateCmHopper','body','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','GetContactDialer','sequelize','transaction','order','UPDATE','CmContact','Contact','keys','User','Agent','voicePause','length'];(function(_0xa9859c,_0x50500d){var _0x3e23f9=function(_0x4f242a){while(--_0x4f242a){_0xa9859c['push'](_0xa9859c['shift']());}};_0x3e23f9(++_0x50500d);}(_0x7a76,0x1eb));var _0x67a7=function(_0x5471ec,_0x1ce81a){_0x5471ec=_0x5471ec-0x0;var _0x121d4c=_0x7a76[_0x5471ec];return _0x121d4c;};'use strict';var _=require(_0x67a7('0x0'));var util=require(_0x67a7('0x1'));var moment=require(_0x67a7('0x2'));var BPromise=require(_0x67a7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x67a7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x67a7('0x5'));var logger=require(_0x67a7('0x6'))(_0x67a7('0x7'));var config=require(_0x67a7('0x8'));var jayson=require(_0x67a7('0x9'));var client=jayson[_0x67a7('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x28f858,_0x53dd90,_0x608125){return new BPromise(function(_0x94d862,_0x4626b6){return client[_0x67a7('0xb')](_0x28f858,_0x608125)[_0x67a7('0xc')](function(_0x21fae5){logger[_0x67a7('0xd')]('CmHopper,\x20%s,\x20%s',_0x53dd90,_0x67a7('0xe'));logger[_0x67a7('0xf')](_0x67a7('0x10'),_0x53dd90,_0x67a7('0xe'),JSON[_0x67a7('0x11')](_0x21fae5));if(_0x21fae5[_0x67a7('0x12')]){if(_0x21fae5[_0x67a7('0x12')][_0x67a7('0x13')]===0x1f4){logger['error'](_0x67a7('0x14'),_0x53dd90,_0x21fae5[_0x67a7('0x12')]['message']);return _0x4626b6(_0x21fae5[_0x67a7('0x12')]['message']);}logger[_0x67a7('0x12')](_0x67a7('0x14'),_0x53dd90,_0x21fae5['error'][_0x67a7('0x15')]);return _0x94d862(_0x21fae5[_0x67a7('0x12')]['message']);}else{logger[_0x67a7('0xd')](_0x67a7('0x14'),_0x53dd90,_0x67a7('0xe'));_0x94d862(_0x21fae5[_0x67a7('0x16')][_0x67a7('0x15')]);}})[_0x67a7('0x17')](function(_0x13316c){logger[_0x67a7('0x12')](_0x67a7('0x14'),_0x53dd90,_0x13316c);_0x4626b6(_0x13316c);});});}exports[_0x67a7('0x18')]=function(_0x16efe0){var _0x3d71d6=this;return new Promise(function(_0x412e5b,_0x152620){return db[_0x67a7('0x19')][_0x67a7('0x1a')]({'raw':_0x16efe0[_0x67a7('0x1b')]?_0x16efe0[_0x67a7('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x16efe0['options']?_0x16efe0['options'][_0x67a7('0x1c')]||null:null,'attributes':_0x16efe0[_0x67a7('0x1b')]?_0x16efe0['options'][_0x67a7('0x1d')]||null:null,'limit':_0x16efe0[_0x67a7('0x1b')]?_0x16efe0[_0x67a7('0x1b')][_0x67a7('0x1e')]||null:null,'include':_0x16efe0[_0x67a7('0x1b')]?_0x16efe0['options'][_0x67a7('0x1f')]?_[_0x67a7('0x20')](_0x16efe0[_0x67a7('0x1b')][_0x67a7('0x1f')],function(_0x2d5a68){return{'model':db[_0x2d5a68['model']],'as':_0x2d5a68['as'],'attributes':_0x2d5a68[_0x67a7('0x1d')],'include':_0x2d5a68['include']?_[_0x67a7('0x20')](_0x2d5a68[_0x67a7('0x1f')],function(_0x5369c1){return{'model':db[_0x5369c1[_0x67a7('0x21')]],'as':_0x5369c1['as'],'attributes':_0x5369c1[_0x67a7('0x1d')],'include':_0x5369c1[_0x67a7('0x1f')]?_[_0x67a7('0x20')](_0x5369c1[_0x67a7('0x1f')],function(_0x5e54ba){return{'model':db[_0x5e54ba[_0x67a7('0x21')]],'as':_0x5e54ba['as'],'attributes':_0x5e54ba[_0x67a7('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x67a7('0xc')](function(_0xfe8aeb){logger['info'](_0x67a7('0x18'),_0x16efe0);logger['debug'](_0x67a7('0x18'),_0x16efe0,JSON[_0x67a7('0x11')](_0xfe8aeb));_0x412e5b(_0xfe8aeb);})[_0x67a7('0x17')](function(_0x15083d){logger[_0x67a7('0x12')]('GetCmHopper',_0x15083d['message'],_0x16efe0);_0x152620(_0x3d71d6['error'](0x1f4,_0x15083d[_0x67a7('0x15')]));});});};exports['ShowCmHopper']=function(_0x375b95){var _0x324fa2=this;return new Promise(function(_0x20e1d7,_0x2842ef){return db[_0x67a7('0x19')]['find']({'raw':_0x375b95['options']?_0x375b95[_0x67a7('0x1b')][_0x67a7('0x22')]===undefined?!![]:![]:!![],'where':_0x375b95[_0x67a7('0x1b')]?_0x375b95[_0x67a7('0x1b')]['where']||null:null,'attributes':_0x375b95[_0x67a7('0x1b')]?_0x375b95[_0x67a7('0x1b')][_0x67a7('0x1d')]||null:null,'include':_0x375b95[_0x67a7('0x1b')]?_0x375b95[_0x67a7('0x1b')]['include']?_[_0x67a7('0x20')](_0x375b95[_0x67a7('0x1b')][_0x67a7('0x1f')],function(_0x2080e7){return{'model':db[_0x2080e7[_0x67a7('0x21')]],'as':_0x2080e7['as'],'attributes':_0x2080e7[_0x67a7('0x1d')],'include':_0x2080e7['include']?_[_0x67a7('0x20')](_0x2080e7[_0x67a7('0x1f')],function(_0x38876e){return{'model':db[_0x38876e['model']],'as':_0x38876e['as'],'attributes':_0x38876e[_0x67a7('0x1d')],'include':_0x38876e[_0x67a7('0x1f')]?_[_0x67a7('0x20')](_0x38876e['include'],function(_0x2d83fc){return{'model':db[_0x2d83fc[_0x67a7('0x21')]],'as':_0x2d83fc['as'],'attributes':_0x2d83fc[_0x67a7('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1bb7c3){logger[_0x67a7('0xd')](_0x67a7('0x23'),_0x375b95);logger['debug'](_0x67a7('0x23'),_0x375b95,JSON[_0x67a7('0x11')](_0x1bb7c3));_0x20e1d7(_0x1bb7c3);})['catch'](function(_0x3c12ef){logger[_0x67a7('0x12')](_0x67a7('0x23'),_0x3c12ef[_0x67a7('0x15')],_0x375b95);_0x2842ef(_0x324fa2[_0x67a7('0x12')](0x1f4,_0x3c12ef[_0x67a7('0x15')]));});});};exports[_0x67a7('0x24')]=function(_0x3eddde){var _0x58f9b7=this;return new Promise(function(_0x5d04ae,_0x3b92f2){return db[_0x67a7('0x19')]['create'](_0x3eddde[_0x67a7('0x25')],{'raw':_0x3eddde['options']?_0x3eddde[_0x67a7('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x67a7('0xc')](function(_0x1aa8e8){logger[_0x67a7('0xd')](_0x67a7('0x24'),_0x3eddde);logger[_0x67a7('0xf')]('CreateCmHopper',_0x3eddde,JSON[_0x67a7('0x11')](_0x1aa8e8));_0x5d04ae(_0x1aa8e8);})[_0x67a7('0x17')](function(_0x5ebc56){logger[_0x67a7('0x12')](_0x67a7('0x24'),_0x5ebc56[_0x67a7('0x15')],_0x3eddde);_0x3b92f2(_0x58f9b7[_0x67a7('0x12')](0x1f4,_0x5ebc56[_0x67a7('0x15')]));});});};exports[_0x67a7('0x26')]=function(_0x53d768){var _0x193d6b=this;return new Promise(function(_0x506f57,_0x10285c){return db[_0x67a7('0x19')]['update'](_0x53d768['body'],{'raw':_0x53d768[_0x67a7('0x1b')]?_0x53d768[_0x67a7('0x1b')][_0x67a7('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53d768[_0x67a7('0x1b')]?_0x53d768[_0x67a7('0x1b')][_0x67a7('0x1c')]||null:null,'attributes':_0x53d768[_0x67a7('0x1b')]?_0x53d768[_0x67a7('0x1b')][_0x67a7('0x1d')]||null:null,'limit':_0x53d768[_0x67a7('0x1b')]?_0x53d768[_0x67a7('0x1b')][_0x67a7('0x1e')]||null:null})[_0x67a7('0xc')](function(_0x361e0c){logger[_0x67a7('0xd')](_0x67a7('0x26'),_0x53d768);logger[_0x67a7('0xd')](_0x67a7('0x27'),JSON[_0x67a7('0x11')](_0x53d768[_0x67a7('0x1b')][_0x67a7('0x1c')]),_0x53d768['body'][_0x67a7('0x28')]);logger['debug'](_0x67a7('0x26'),_0x53d768,JSON[_0x67a7('0x11')](_0x361e0c));_0x506f57(_0x361e0c);})[_0x67a7('0x17')](function(_0x2aa651){logger['error'](_0x67a7('0x26'),_0x2aa651['message'],_0x53d768);_0x10285c(_0x193d6b['error'](0x1f4,_0x2aa651[_0x67a7('0x15')]));});});};exports[_0x67a7('0x29')]=function(_0x33fee2){var _0x5dce5e=this;return new Promise(function(_0x580352,_0x2e8fe2){return db['CmHopper'][_0x67a7('0x2a')]({'where':_0x33fee2['options']?_0x33fee2[_0x67a7('0x1b')][_0x67a7('0x1c')]||null:null})['then'](function(_0x5b742a){logger['info']('DestroyCmHopper',_0x33fee2);logger[_0x67a7('0xf')]('DestroyCmHopper',_0x33fee2,JSON[_0x67a7('0x11')](_0x5b742a));_0x580352(_0x5b742a);})[_0x67a7('0x17')](function(_0x3e05f3){logger['error']('DestroyCmHopper',_0x3e05f3[_0x67a7('0x15')],_0x33fee2);_0x2e8fe2(_0x5dce5e[_0x67a7('0x12')](0x1f4,_0x3e05f3[_0x67a7('0x15')]));});});};exports[_0x67a7('0x2b')]=function(_0x22808d){var _0x20847b=this;return new Promise(function(_0x46cb10,_0x1aa946){return db['CmContact']['describe']()[_0x67a7('0xc')](function(_0x49b370){return db[_0x67a7('0x2c')][_0x67a7('0x2d')](function(_0x4179f6){return db[_0x67a7('0x19')][_0x67a7('0x1a')]({'where':_0x22808d[_0x67a7('0x1b')]?_0x22808d[_0x67a7('0x1b')][_0x67a7('0x1c')]||null:null,'attributes':_0x22808d[_0x67a7('0x1b')]?_0x22808d[_0x67a7('0x1b')][_0x67a7('0x1d')]||null:null,'limit':_0x22808d['options']?_0x22808d['options'][_0x67a7('0x1e')]||null:null,'order':_0x22808d[_0x67a7('0x1b')]?_0x22808d['options'][_0x67a7('0x2e')]||null:null,'transaction':_0x4179f6,'lock':_0x4179f6['LOCK'][_0x67a7('0x2f')],'include':[{'model':db[_0x67a7('0x30')],'as':_0x67a7('0x31'),'attributes':_[_0x67a7('0x32')](_0x49b370)},{'model':db[_0x67a7('0x33')],'as':_0x67a7('0x34'),'attributes':['id','name',_0x67a7('0x35')]}]})['then'](function(_0x1ae618){var _0x27c768=[];var _0x58603f=[];for(var _0x347cb4=0x0;_0x347cb4<_0x1ae618[_0x67a7('0x36')];_0x347cb4+=0x1){var _0x4e4983=_0x1ae618[_0x347cb4]['UserId'];if(_0x4e4983===null){_0x27c768[_0x67a7('0x37')](_0x1ae618[_0x347cb4][_0x67a7('0x38')](_0x22808d[_0x67a7('0x25')],{'transaction':_0x4179f6}));}else if(!_0x58603f[_0x67a7('0x39')](_0x4e4983)){_0x58603f[_0x67a7('0x37')](_0x4e4983);_0x27c768[_0x67a7('0x37')](_0x1ae618[_0x347cb4]['update'](_0x22808d[_0x67a7('0x25')],{'transaction':_0x4179f6}));}}return BPromise[_0x67a7('0x3a')](_0x27c768);});})[_0x67a7('0xc')](function(_0x425c95){logger[_0x67a7('0xd')]('GetContactDialer',_0x22808d);if(_0x425c95['length']>0x0){logger[_0x67a7('0xd')]('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0x425c95[0x0][_0x67a7('0x3b')]['id'],_0x425c95[0x0]['dataValues']['ContactId'],_0x425c95[0x0][_0x67a7('0x3b')][_0x67a7('0x28')]);}logger['debug'](_0x67a7('0x2b'),_0x22808d,JSON[_0x67a7('0x11')](_0x425c95));_0x46cb10(_0x425c95);})[_0x67a7('0x17')](function(_0x4839b4){logger[_0x67a7('0x12')](_0x67a7('0x2b'),_0x4839b4[_0x67a7('0x15')],_0x22808d);_0x1aa946(_0x20847b[_0x67a7('0x12')](0x1f4,_0x4839b4['message']));});});});};exports[_0x67a7('0x3c')]=function(_0x442e54){var _0x470dc9=this;return new Promise(function(_0x1b6c53,_0x465652){return db[_0x67a7('0x2c')][_0x67a7('0x2d')](function(_0x29c8ba){return db[_0x67a7('0x3d')][_0x67a7('0x3e')](_0x442e54[_0x67a7('0x25')],{'raw':_0x442e54[_0x67a7('0x1b')]?_0x442e54['options']['raw']===undefined?!![]:![]:!![],'transaction':_0x29c8ba})[_0x67a7('0xc')](function(){logger['info'](_0x67a7('0x3f'),JSON[_0x67a7('0x11')](_0x442e54[_0x67a7('0x1b')][_0x67a7('0x1c')]),_0x442e54[_0x67a7('0x1b')][_0x67a7('0x1c')][_0x67a7('0x28')]);return db[_0x67a7('0x19')]['destroy']({'where':_0x442e54[_0x67a7('0x1b')]?_0x442e54[_0x67a7('0x1b')]['where']||null:null,'transaction':_0x29c8ba});});})[_0x67a7('0xc')](function(_0x4fa1e5){logger[_0x67a7('0xd')](_0x67a7('0x3c'),_0x442e54);logger[_0x67a7('0xf')](_0x67a7('0x3c'),_0x442e54,JSON['stringify'](_0x4fa1e5));_0x1b6c53(_0x4fa1e5);})[_0x67a7('0x17')](function(_0x4ebeb8){logger[_0x67a7('0x12')](_0x67a7('0x3c'),_0x4ebeb8[_0x67a7('0x15')],_0x442e54);_0x465652(_0x470dc9[_0x67a7('0x12')](0x1f4,_0x4ebeb8[_0x67a7('0x15')]));});});};exports[_0x67a7('0x40')]=function(_0x35332e){var _0x308e8f=this;return new Promise(function(_0xb35f0d,_0x4010a3){return db[_0x67a7('0x19')]['findAll']({'raw':_0x35332e[_0x67a7('0x1b')]?_0x35332e[_0x67a7('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x35332e['options']?_0x35332e['options']['where']||null:null,'attributes':[[db[_0x67a7('0x2c')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x67a7('0x2c')][_0x67a7('0x41')](_0x67a7('0x42')+util[_0x67a7('0x43')](_0x67a7('0x44'),moment()[_0x67a7('0x43')](_0x67a7('0x45')))+_0x67a7('0x46')))),_0x67a7('0x47')]]})[_0x67a7('0xc')](function(_0x11e29a){logger['info'](_0x67a7('0x40'),_0x35332e);logger[_0x67a7('0xf')](_0x67a7('0x40'),_0x35332e,JSON['stringify'](_0x11e29a));_0xb35f0d(_0x11e29a);})[_0x67a7('0x17')](function(_0xbbba8a){logger[_0x67a7('0x12')](_0x67a7('0x40'),_0xbbba8a[_0x67a7('0x15')],_0x35332e);_0x4010a3(_0x308e8f[_0x67a7('0x12')](0x1f4,_0xbbba8a[_0x67a7('0x15')]));});});};exports[_0x67a7('0x48')]=function(_0x5a7915){var _0x2f2a25=this;return new Promise(function(_0x3395b8,_0x1d4833){return db[_0x67a7('0x30')][_0x67a7('0x49')]()[_0x67a7('0xc')](function(_0x3ac919){return db['sequelize']['transaction'](function(_0x2f077d){return db['CmHopper'][_0x67a7('0x1a')]({'where':_0x5a7915['options']?_0x5a7915[_0x67a7('0x1b')][_0x67a7('0x1c')]||null:null,'attributes':_0x5a7915[_0x67a7('0x1b')]?_0x5a7915[_0x67a7('0x1b')][_0x67a7('0x1d')]||null:null,'limit':0x1,'order':_0x5a7915['options']?_0x5a7915[_0x67a7('0x1b')][_0x67a7('0x2e')]||null:null,'group':db[_0x67a7('0x19')][_0x67a7('0x4a')],'transaction':_0x2f077d,'lock':_0x2f077d[_0x67a7('0x4b')][_0x67a7('0x2f')],'include':_0x5a7915[_0x67a7('0x1b')]?_0x5a7915[_0x67a7('0x1b')][_0x67a7('0x1f')]?_['map'](_0x5a7915[_0x67a7('0x1b')][_0x67a7('0x1f')],function(_0x2b35eb){return{'model':db[_0x2b35eb[_0x67a7('0x21')]],'as':_0x2b35eb['as'],'attributes':_0x2b35eb[_0x67a7('0x1d')],'include':_0x2b35eb[_0x67a7('0x1f')]?_[_0x67a7('0x20')](_0x2b35eb[_0x67a7('0x1f')],function(_0x4b8147){return{'model':db[_0x4b8147[_0x67a7('0x21')]],'as':_0x4b8147['as'],'attributes':_0x4b8147[_0x67a7('0x1d')],'include':_0x4b8147[_0x67a7('0x1f')]?_['map'](_0x4b8147[_0x67a7('0x1f')],function(_0x2aa29b){return{'model':db[_0x2aa29b[_0x67a7('0x21')]],'as':_0x2aa29b['as'],'attributes':_0x2aa29b[_0x67a7('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3d6223){var _0x16fac3=[];for(var _0xae324=0x0;_0xae324<_0x3d6223['length'];_0xae324+=0x1){_0x16fac3[_0x67a7('0x37')](_0x3d6223[_0xae324][_0x67a7('0x38')](_0x5a7915[_0x67a7('0x25')],{'transaction':_0x2f077d}));}return BPromise['all'](_0x16fac3);});})[_0x67a7('0xc')](function(_0x1fc2f1){logger['info'](_0x67a7('0x48'),_0x5a7915);logger['debug'](_0x67a7('0x48'),_0x5a7915,JSON[_0x67a7('0x11')](_0x1fc2f1));_0x3395b8(_0x1fc2f1);})['catch'](function(_0xa4839d){logger[_0x67a7('0x12')](_0x67a7('0x48'),_0xa4839d[_0x67a7('0x15')],_0x5a7915);_0x1d4833(_0x2f2a25[_0x67a7('0x12')](0x1f4,_0xa4839d[_0x67a7('0x15')]));});});});};exports[_0x67a7('0x4c')]=function(_0xeee305){var _0x17a626=this;return new Promise(function(_0x28a6d7,_0x109b72){db[_0x67a7('0x30')][_0x67a7('0x49')]()[_0x67a7('0xc')](function(_0x1e65c0){return db[_0x67a7('0x19')][_0x67a7('0x1a')]({'raw':_0xeee305[_0x67a7('0x1b')]?_0xeee305['options'][_0x67a7('0x22')]===undefined?!![]:![]:!![],'where':_0xeee305[_0x67a7('0x1b')]?_0xeee305[_0x67a7('0x1b')]['where']||null:null,'attributes':_0xeee305[_0x67a7('0x1b')]?_0xeee305[_0x67a7('0x1b')][_0x67a7('0x1d')]||null:null,'limit':_0xeee305[_0x67a7('0x1b')]?_0xeee305[_0x67a7('0x1b')][_0x67a7('0x1e')]||null:null,'include':_0xeee305[_0x67a7('0x1b')]?_0xeee305[_0x67a7('0x1b')]['include']?_['map'](_0xeee305[_0x67a7('0x1b')][_0x67a7('0x1f')],function(_0x4b4432){return{'model':db[_0x4b4432['model']],'as':_0x4b4432['as'],'attributes':_0x4b4432['as']===_0x67a7('0x31')?_['keys'](_0x1e65c0):_0x4b4432['attributes'],'include':_0x4b4432['include']?_['map'](_0x4b4432[_0x67a7('0x1f')],function(_0x18f79b){return{'model':db[_0x18f79b['model']],'as':_0x18f79b['as'],'attributes':_0x18f79b[_0x67a7('0x1d')],'include':_0x18f79b['include']?_['map'](_0x18f79b['include'],function(_0x43d1ee){return{'model':db[_0x43d1ee[_0x67a7('0x21')]],'as':_0x43d1ee['as'],'attributes':_0x43d1ee['attributes']};}):[]};}):[]};}):[]:[]})[_0x67a7('0xc')](function(_0x304f4d){logger[_0x67a7('0xd')]('GetCmHopper',_0xeee305);logger['debug'](_0x67a7('0x18'),_0xeee305,JSON['stringify'](_0x304f4d));_0x28a6d7(_0x304f4d);})[_0x67a7('0x17')](function(_0x3b56d4){logger[_0x67a7('0x12')](_0x67a7('0x18'),_0x3b56d4[_0x67a7('0x15')],_0xeee305);_0x109b72(_0x17a626[_0x67a7('0x12')](0x1f4,_0x3b56d4[_0x67a7('0x15')]));});});});};exports['ResetActiveCalls']=function(_0x249ae9){var _0x2e2f0d=this;return new Promise(function(_0x18b07b,_0xe91716){return db[_0x67a7('0x2c')][_0x67a7('0x2d')](function(_0x21d0d5){return db[_0x67a7('0x19')]['update']({'active':![]},{'where':{},'transaction':_0x21d0d5})['then'](function(_0x50fbfb){logger['info']('ResetActiveCalls',_0x249ae9);logger[_0x67a7('0xf')](_0x67a7('0x4d'),_0x249ae9,JSON['stringify'](_0x50fbfb));_0x18b07b(_0x50fbfb);})[_0x67a7('0x17')](function(_0x3480b0){logger[_0x67a7('0x12')](_0x67a7('0x4d'),_0x3480b0[_0x67a7('0x15')],_0x249ae9);_0xe91716(_0x2e2f0d[_0x67a7('0x12')](0x1f4,_0x3480b0[_0x67a7('0x15')]));});});});};
\ No newline at end of file
+var _0x3d2b=['../../config/logger','rpc','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','model','map','ShowCmHopper','find','CreateCmHopper','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','body','active','DestroyCmHopper','destroy','CmContact','describe','transaction','order','LOCK','UPDATE','Contact','User','Agent','voicePause','length','UserId','includes','push','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','MoveContactManagedDialer','CountReScheduled','sequelize','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','ResetActiveCalls','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x211087,_0x354fdd){var _0x2a581f=function(_0x2928fe){while(--_0x2928fe){_0x211087['push'](_0x211087['shift']());}};_0x2a581f(++_0x354fdd);}(_0x3d2b,0x179));var _0xb3d2=function(_0x3657e8,_0x426ea9){_0x3657e8=_0x3657e8-0x0;var _0x492ebc=_0x3d2b[_0x3657e8];return _0x492ebc;};'use strict';var _=require(_0xb3d2('0x0'));var util=require(_0xb3d2('0x1'));var moment=require(_0xb3d2('0x2'));var BPromise=require(_0xb3d2('0x3'));var rs=require(_0xb3d2('0x4'));var fs=require('fs');var Redis=require(_0xb3d2('0x5'));var db=require(_0xb3d2('0x6'))['db'];var utils=require(_0xb3d2('0x7'));var logger=require(_0xb3d2('0x8'))(_0xb3d2('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xb3d2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2045fc,_0x2762a1,_0x254f24){return new BPromise(function(_0x11f3a0,_0xe0966b){return client[_0xb3d2('0xb')](_0x2045fc,_0x254f24)[_0xb3d2('0xc')](function(_0x5da71e){logger[_0xb3d2('0xd')](_0xb3d2('0xe'),_0x2762a1,_0xb3d2('0xf'));logger[_0xb3d2('0x10')](_0xb3d2('0x11'),_0x2762a1,_0xb3d2('0xf'),JSON[_0xb3d2('0x12')](_0x5da71e));if(_0x5da71e[_0xb3d2('0x13')]){if(_0x5da71e['error'][_0xb3d2('0x14')]===0x1f4){logger[_0xb3d2('0x13')](_0xb3d2('0xe'),_0x2762a1,_0x5da71e[_0xb3d2('0x13')]['message']);return _0xe0966b(_0x5da71e[_0xb3d2('0x13')][_0xb3d2('0x15')]);}logger['error'](_0xb3d2('0xe'),_0x2762a1,_0x5da71e[_0xb3d2('0x13')][_0xb3d2('0x15')]);return _0x11f3a0(_0x5da71e['error'][_0xb3d2('0x15')]);}else{logger[_0xb3d2('0xd')](_0xb3d2('0xe'),_0x2762a1,_0xb3d2('0xf'));_0x11f3a0(_0x5da71e[_0xb3d2('0x16')]['message']);}})[_0xb3d2('0x17')](function(_0x1cd445){logger[_0xb3d2('0x13')]('CmHopper,\x20%s,\x20%s',_0x2762a1,_0x1cd445);_0xe0966b(_0x1cd445);});});}exports[_0xb3d2('0x18')]=function(_0x5cef0d){var _0xb77b79=this;return new Promise(function(_0x2dcb36,_0x179166){return db[_0xb3d2('0x19')][_0xb3d2('0x1a')]({'raw':_0x5cef0d[_0xb3d2('0x1b')]?_0x5cef0d[_0xb3d2('0x1b')][_0xb3d2('0x1c')]===undefined?!![]:![]:!![],'where':_0x5cef0d[_0xb3d2('0x1b')]?_0x5cef0d[_0xb3d2('0x1b')][_0xb3d2('0x1d')]||null:null,'attributes':_0x5cef0d[_0xb3d2('0x1b')]?_0x5cef0d[_0xb3d2('0x1b')][_0xb3d2('0x1e')]||null:null,'limit':_0x5cef0d[_0xb3d2('0x1b')]?_0x5cef0d['options'][_0xb3d2('0x1f')]||null:null,'include':_0x5cef0d['options']?_0x5cef0d[_0xb3d2('0x1b')]['include']?_['map'](_0x5cef0d[_0xb3d2('0x1b')][_0xb3d2('0x20')],function(_0x2ada96){return{'model':db[_0x2ada96[_0xb3d2('0x21')]],'as':_0x2ada96['as'],'attributes':_0x2ada96[_0xb3d2('0x1e')],'include':_0x2ada96[_0xb3d2('0x20')]?_['map'](_0x2ada96[_0xb3d2('0x20')],function(_0x430571){return{'model':db[_0x430571[_0xb3d2('0x21')]],'as':_0x430571['as'],'attributes':_0x430571[_0xb3d2('0x1e')],'include':_0x430571[_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x430571[_0xb3d2('0x20')],function(_0x194151){return{'model':db[_0x194151[_0xb3d2('0x21')]],'as':_0x194151['as'],'attributes':_0x194151[_0xb3d2('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb3d2('0xc')](function(_0x6367be){logger[_0xb3d2('0xd')](_0xb3d2('0x18'),_0x5cef0d);logger['debug'](_0xb3d2('0x18'),_0x5cef0d,JSON[_0xb3d2('0x12')](_0x6367be));_0x2dcb36(_0x6367be);})['catch'](function(_0x26275e){logger[_0xb3d2('0x13')]('GetCmHopper',_0x26275e['message'],_0x5cef0d);_0x179166(_0xb77b79[_0xb3d2('0x13')](0x1f4,_0x26275e[_0xb3d2('0x15')]));});});};exports[_0xb3d2('0x23')]=function(_0x43ada3){var _0xf3291=this;return new Promise(function(_0x40c0ec,_0x2d19f5){return db[_0xb3d2('0x19')][_0xb3d2('0x24')]({'raw':_0x43ada3[_0xb3d2('0x1b')]?_0x43ada3['options']['raw']===undefined?!![]:![]:!![],'where':_0x43ada3[_0xb3d2('0x1b')]?_0x43ada3[_0xb3d2('0x1b')][_0xb3d2('0x1d')]||null:null,'attributes':_0x43ada3[_0xb3d2('0x1b')]?_0x43ada3[_0xb3d2('0x1b')]['attributes']||null:null,'include':_0x43ada3['options']?_0x43ada3[_0xb3d2('0x1b')][_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x43ada3[_0xb3d2('0x1b')][_0xb3d2('0x20')],function(_0x2df895){return{'model':db[_0x2df895[_0xb3d2('0x21')]],'as':_0x2df895['as'],'attributes':_0x2df895[_0xb3d2('0x1e')],'include':_0x2df895[_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x2df895[_0xb3d2('0x20')],function(_0x284416){return{'model':db[_0x284416[_0xb3d2('0x21')]],'as':_0x284416['as'],'attributes':_0x284416[_0xb3d2('0x1e')],'include':_0x284416[_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x284416['include'],function(_0x1f6338){return{'model':db[_0x1f6338['model']],'as':_0x1f6338['as'],'attributes':_0x1f6338[_0xb3d2('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2178f0){logger[_0xb3d2('0xd')](_0xb3d2('0x23'),_0x43ada3);logger[_0xb3d2('0x10')](_0xb3d2('0x23'),_0x43ada3,JSON[_0xb3d2('0x12')](_0x2178f0));_0x40c0ec(_0x2178f0);})['catch'](function(_0x8ad55e){logger[_0xb3d2('0x13')]('ShowCmHopper',_0x8ad55e[_0xb3d2('0x15')],_0x43ada3);_0x2d19f5(_0xf3291['error'](0x1f4,_0x8ad55e['message']));});});};exports[_0xb3d2('0x25')]=function(_0x2f359e){var _0x35b07f=this;return new Promise(function(_0x564a25,_0x3de220){return db[_0xb3d2('0x19')]['create'](_0x2f359e['body'],{'raw':_0x2f359e[_0xb3d2('0x1b')]?_0x2f359e[_0xb3d2('0x1b')][_0xb3d2('0x1c')]===undefined?!![]:![]:!![]})[_0xb3d2('0xc')](function(_0x30c3a1){logger[_0xb3d2('0xd')]('CreateCmHopper',_0x2f359e);logger[_0xb3d2('0x10')](_0xb3d2('0x25'),_0x2f359e,JSON[_0xb3d2('0x12')](_0x30c3a1));_0x564a25(_0x30c3a1);})['catch'](function(_0x47ce1c){logger[_0xb3d2('0x13')]('CreateCmHopper',_0x47ce1c[_0xb3d2('0x15')],_0x2f359e);_0x3de220(_0x35b07f[_0xb3d2('0x13')](0x1f4,_0x47ce1c['message']));});});};exports[_0xb3d2('0x26')]=function(_0x117519){var _0x5452d1=this;return new Promise(function(_0x43ef8c,_0x22db34){return db['CmHopper'][_0xb3d2('0x27')](_0x117519['body'],{'raw':_0x117519[_0xb3d2('0x1b')]?_0x117519[_0xb3d2('0x1b')][_0xb3d2('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x117519[_0xb3d2('0x1b')]?_0x117519[_0xb3d2('0x1b')]['where']||null:null,'attributes':_0x117519[_0xb3d2('0x1b')]?_0x117519[_0xb3d2('0x1b')]['attributes']||null:null,'limit':_0x117519[_0xb3d2('0x1b')]?_0x117519['options'][_0xb3d2('0x1f')]||null:null})[_0xb3d2('0xc')](function(_0x62afd4){logger[_0xb3d2('0xd')](_0xb3d2('0x26'),_0x117519);logger['info'](_0xb3d2('0x28'),JSON[_0xb3d2('0x12')](_0x117519[_0xb3d2('0x1b')]['where']),_0x117519[_0xb3d2('0x29')][_0xb3d2('0x2a')]);logger[_0xb3d2('0x10')](_0xb3d2('0x26'),_0x117519,JSON[_0xb3d2('0x12')](_0x62afd4));_0x43ef8c(_0x62afd4);})[_0xb3d2('0x17')](function(_0x20c6ba){logger[_0xb3d2('0x13')](_0xb3d2('0x26'),_0x20c6ba[_0xb3d2('0x15')],_0x117519);_0x22db34(_0x5452d1[_0xb3d2('0x13')](0x1f4,_0x20c6ba[_0xb3d2('0x15')]));});});};exports[_0xb3d2('0x2b')]=function(_0xbb0d0){var _0x477e25=this;return new Promise(function(_0x3bf886,_0x5167bd){return db[_0xb3d2('0x19')][_0xb3d2('0x2c')]({'where':_0xbb0d0[_0xb3d2('0x1b')]?_0xbb0d0[_0xb3d2('0x1b')][_0xb3d2('0x1d')]||null:null})[_0xb3d2('0xc')](function(_0x2d1986){logger['info'](_0xb3d2('0x2b'),_0xbb0d0);logger[_0xb3d2('0x10')](_0xb3d2('0x2b'),_0xbb0d0,JSON[_0xb3d2('0x12')](_0x2d1986));_0x3bf886(_0x2d1986);})[_0xb3d2('0x17')](function(_0x3ff95b){logger[_0xb3d2('0x13')](_0xb3d2('0x2b'),_0x3ff95b['message'],_0xbb0d0);_0x5167bd(_0x477e25['error'](0x1f4,_0x3ff95b[_0xb3d2('0x15')]));});});};exports['GetContactDialer']=function(_0x2e95b1){var _0x1863ea=this;return new Promise(function(_0x47d12c,_0x395d24){return db[_0xb3d2('0x2d')][_0xb3d2('0x2e')]()[_0xb3d2('0xc')](function(_0x2f92a4){return db['sequelize'][_0xb3d2('0x2f')](function(_0x8015be){return db['CmHopper'][_0xb3d2('0x1a')]({'where':_0x2e95b1[_0xb3d2('0x1b')]?_0x2e95b1[_0xb3d2('0x1b')][_0xb3d2('0x1d')]||null:null,'attributes':_0x2e95b1[_0xb3d2('0x1b')]?_0x2e95b1[_0xb3d2('0x1b')][_0xb3d2('0x1e')]||null:null,'limit':_0x2e95b1[_0xb3d2('0x1b')]?_0x2e95b1[_0xb3d2('0x1b')]['limit']||null:null,'order':_0x2e95b1[_0xb3d2('0x1b')]?_0x2e95b1[_0xb3d2('0x1b')][_0xb3d2('0x30')]||null:null,'transaction':_0x8015be,'lock':_0x8015be[_0xb3d2('0x31')][_0xb3d2('0x32')],'include':[{'model':db[_0xb3d2('0x2d')],'as':_0xb3d2('0x33'),'attributes':_['keys'](_0x2f92a4)},{'model':db[_0xb3d2('0x34')],'as':_0xb3d2('0x35'),'attributes':['id','name',_0xb3d2('0x36')]}]})[_0xb3d2('0xc')](function(_0x78cc71){var _0x4ede42=[];var _0x48d8d9=[];for(var _0x32d4b2=0x0;_0x32d4b2<_0x78cc71[_0xb3d2('0x37')];_0x32d4b2+=0x1){var _0x415913=_0x78cc71[_0x32d4b2][_0xb3d2('0x38')];if(_0x415913===null){_0x4ede42['push'](_0x78cc71[_0x32d4b2][_0xb3d2('0x27')](_0x2e95b1['body'],{'transaction':_0x8015be}));}else if(!_0x48d8d9[_0xb3d2('0x39')](_0x415913)){_0x48d8d9['push'](_0x415913);_0x4ede42[_0xb3d2('0x3a')](_0x78cc71[_0x32d4b2]['update'](_0x2e95b1[_0xb3d2('0x29')],{'transaction':_0x8015be}));}}return BPromise[_0xb3d2('0x3b')](_0x4ede42);});})[_0xb3d2('0xc')](function(_0x351b33){logger[_0xb3d2('0xd')](_0xb3d2('0x3c'),_0x2e95b1);if(_0x351b33[_0xb3d2('0x37')]>0x0){logger[_0xb3d2('0xd')](_0xb3d2('0x3d'),_0x351b33[0x0][_0xb3d2('0x3e')]['id'],_0x351b33[0x0][_0xb3d2('0x3e')][_0xb3d2('0x3f')],_0x351b33[0x0][_0xb3d2('0x3e')][_0xb3d2('0x2a')]);}logger[_0xb3d2('0x10')]('GetContactDialer',_0x2e95b1,JSON[_0xb3d2('0x12')](_0x351b33));_0x47d12c(_0x351b33);})[_0xb3d2('0x17')](function(_0x33494d){logger[_0xb3d2('0x13')]('GetContactDialer',_0x33494d[_0xb3d2('0x15')],_0x2e95b1);_0x395d24(_0x1863ea['error'](0x1f4,_0x33494d['message']));});});});};exports[_0xb3d2('0x40')]=function(_0x2cd45f){var _0x53491e=this;return new Promise(function(_0x4298cf,_0x2c8bbb){return db['sequelize'][_0xb3d2('0x2f')](function(_0x34cc12){return db['CmHopperFinal']['create'](_0x2cd45f[_0xb3d2('0x29')],{'raw':_0x2cd45f[_0xb3d2('0x1b')]?_0x2cd45f['options'][_0xb3d2('0x1c')]===undefined?!![]:![]:!![],'transaction':_0x34cc12})[_0xb3d2('0xc')](function(){logger['info']('MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON['stringify'](_0x2cd45f[_0xb3d2('0x1b')][_0xb3d2('0x1d')]),_0x2cd45f['options'][_0xb3d2('0x1d')][_0xb3d2('0x2a')]);return db[_0xb3d2('0x19')]['destroy']({'where':_0x2cd45f[_0xb3d2('0x1b')]?_0x2cd45f['options'][_0xb3d2('0x1d')]||null:null,'transaction':_0x34cc12});});})[_0xb3d2('0xc')](function(_0x33a0ba){logger['info'](_0xb3d2('0x40'),_0x2cd45f);logger[_0xb3d2('0x10')](_0xb3d2('0x40'),_0x2cd45f,JSON[_0xb3d2('0x12')](_0x33a0ba));_0x4298cf(_0x33a0ba);})[_0xb3d2('0x17')](function(_0x5270a3){logger['error'](_0xb3d2('0x40'),_0x5270a3[_0xb3d2('0x15')],_0x2cd45f);_0x2c8bbb(_0x53491e[_0xb3d2('0x13')](0x1f4,_0x5270a3[_0xb3d2('0x15')]));});});};exports[_0xb3d2('0x41')]=function(_0x26ae3a){var _0x110cf6=this;return new Promise(function(_0xe605a9,_0x35c6e5){return db[_0xb3d2('0x19')]['findAll']({'raw':_0x26ae3a[_0xb3d2('0x1b')]?_0x26ae3a[_0xb3d2('0x1b')][_0xb3d2('0x1c')]===undefined?!![]:![]:!![],'where':_0x26ae3a['options']?_0x26ae3a['options'][_0xb3d2('0x1d')]||null:null,'attributes':[[db[_0xb3d2('0x42')]['fn'](_0xb3d2('0x43'),db[_0xb3d2('0x42')]['fn']('IF',db['sequelize'][_0xb3d2('0x44')](_0xb3d2('0x45')+util[_0xb3d2('0x46')](_0xb3d2('0x47'),moment()[_0xb3d2('0x46')](_0xb3d2('0x48')))+'\x20,\x201,\x20null'))),_0xb3d2('0x49')]]})[_0xb3d2('0xc')](function(_0x59a059){logger['info']('CountReScheduled',_0x26ae3a);logger['debug']('CountReScheduled',_0x26ae3a,JSON[_0xb3d2('0x12')](_0x59a059));_0xe605a9(_0x59a059);})['catch'](function(_0x59c138){logger[_0xb3d2('0x13')](_0xb3d2('0x41'),_0x59c138[_0xb3d2('0x15')],_0x26ae3a);_0x35c6e5(_0x110cf6[_0xb3d2('0x13')](0x1f4,_0x59c138['message']));});});};exports[_0xb3d2('0x4a')]=function(_0x5511da){var _0x56624a=this;return new Promise(function(_0x4163d2,_0x3ccf5b){return db[_0xb3d2('0x2d')]['describe']()[_0xb3d2('0xc')](function(_0x38e8f0){return db[_0xb3d2('0x42')]['transaction'](function(_0x160fc5){return db[_0xb3d2('0x19')]['findAll']({'where':_0x5511da[_0xb3d2('0x1b')]?_0x5511da[_0xb3d2('0x1b')][_0xb3d2('0x1d')]||null:null,'attributes':_0x5511da[_0xb3d2('0x1b')]?_0x5511da['options'][_0xb3d2('0x1e')]||null:null,'limit':0x1,'order':_0x5511da[_0xb3d2('0x1b')]?_0x5511da[_0xb3d2('0x1b')]['order']||null:null,'group':db[_0xb3d2('0x19')][_0xb3d2('0x38')],'transaction':_0x160fc5,'lock':_0x160fc5[_0xb3d2('0x31')][_0xb3d2('0x32')],'include':_0x5511da[_0xb3d2('0x1b')]?_0x5511da[_0xb3d2('0x1b')]['include']?_[_0xb3d2('0x22')](_0x5511da[_0xb3d2('0x1b')]['include'],function(_0x8de687){return{'model':db[_0x8de687[_0xb3d2('0x21')]],'as':_0x8de687['as'],'attributes':_0x8de687['attributes'],'include':_0x8de687[_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x8de687[_0xb3d2('0x20')],function(_0x310afc){return{'model':db[_0x310afc['model']],'as':_0x310afc['as'],'attributes':_0x310afc[_0xb3d2('0x1e')],'include':_0x310afc[_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x310afc[_0xb3d2('0x20')],function(_0x33578a){return{'model':db[_0x33578a['model']],'as':_0x33578a['as'],'attributes':_0x33578a[_0xb3d2('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb3d2('0xc')](function(_0xdcb81d){var _0x5f5b19=[];for(var _0x9dba0c=0x0;_0x9dba0c<_0xdcb81d[_0xb3d2('0x37')];_0x9dba0c+=0x1){_0x5f5b19['push'](_0xdcb81d[_0x9dba0c][_0xb3d2('0x27')](_0x5511da[_0xb3d2('0x29')],{'transaction':_0x160fc5}));}return BPromise[_0xb3d2('0x3b')](_0x5f5b19);});})[_0xb3d2('0xc')](function(_0x14a77f){logger[_0xb3d2('0xd')](_0xb3d2('0x4a'),_0x5511da);logger[_0xb3d2('0x10')](_0xb3d2('0x4a'),_0x5511da,JSON[_0xb3d2('0x12')](_0x14a77f));_0x4163d2(_0x14a77f);})[_0xb3d2('0x17')](function(_0x560a50){logger['error'](_0xb3d2('0x4a'),_0x560a50['message'],_0x5511da);_0x3ccf5b(_0x56624a[_0xb3d2('0x13')](0x1f4,_0x560a50[_0xb3d2('0x15')]));});});});};exports[_0xb3d2('0x4b')]=function(_0x594553){var _0x3c0958=this;return new Promise(function(_0x340c60,_0x4f3ec7){db[_0xb3d2('0x2d')][_0xb3d2('0x2e')]()['then'](function(_0x4bd95e){return db['CmHopper'][_0xb3d2('0x1a')]({'raw':_0x594553['options']?_0x594553[_0xb3d2('0x1b')][_0xb3d2('0x1c')]===undefined?!![]:![]:!![],'where':_0x594553[_0xb3d2('0x1b')]?_0x594553[_0xb3d2('0x1b')][_0xb3d2('0x1d')]||null:null,'attributes':_0x594553[_0xb3d2('0x1b')]?_0x594553[_0xb3d2('0x1b')][_0xb3d2('0x1e')]||null:null,'limit':_0x594553[_0xb3d2('0x1b')]?_0x594553[_0xb3d2('0x1b')][_0xb3d2('0x1f')]||null:null,'include':_0x594553[_0xb3d2('0x1b')]?_0x594553[_0xb3d2('0x1b')][_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x594553[_0xb3d2('0x1b')][_0xb3d2('0x20')],function(_0x2dbf4f){return{'model':db[_0x2dbf4f[_0xb3d2('0x21')]],'as':_0x2dbf4f['as'],'attributes':_0x2dbf4f['as']===_0xb3d2('0x33')?_['keys'](_0x4bd95e):_0x2dbf4f[_0xb3d2('0x1e')],'include':_0x2dbf4f[_0xb3d2('0x20')]?_[_0xb3d2('0x22')](_0x2dbf4f[_0xb3d2('0x20')],function(_0x4cac8e){return{'model':db[_0x4cac8e[_0xb3d2('0x21')]],'as':_0x4cac8e['as'],'attributes':_0x4cac8e['attributes'],'include':_0x4cac8e['include']?_['map'](_0x4cac8e[_0xb3d2('0x20')],function(_0x3e7936){return{'model':db[_0x3e7936[_0xb3d2('0x21')]],'as':_0x3e7936['as'],'attributes':_0x3e7936[_0xb3d2('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb3d2('0xc')](function(_0x583b4c){logger[_0xb3d2('0xd')](_0xb3d2('0x18'),_0x594553);logger[_0xb3d2('0x10')](_0xb3d2('0x18'),_0x594553,JSON[_0xb3d2('0x12')](_0x583b4c));_0x340c60(_0x583b4c);})[_0xb3d2('0x17')](function(_0x5f43b7){logger[_0xb3d2('0x13')](_0xb3d2('0x18'),_0x5f43b7[_0xb3d2('0x15')],_0x594553);_0x4f3ec7(_0x3c0958['error'](0x1f4,_0x5f43b7[_0xb3d2('0x15')]));});});});};exports[_0xb3d2('0x4c')]=function(_0x32d088){var _0x38e280=this;return new Promise(function(_0x52bd1b,_0x520bb4){return db[_0xb3d2('0x42')]['transaction'](function(_0x144c4a){return db[_0xb3d2('0x19')]['update']({'active':![]},{'where':{},'transaction':_0x144c4a})[_0xb3d2('0xc')](function(_0x550e62){logger[_0xb3d2('0xd')](_0xb3d2('0x4c'),_0x32d088);logger[_0xb3d2('0x10')](_0xb3d2('0x4c'),_0x32d088,JSON[_0xb3d2('0x12')](_0x550e62));_0x52bd1b(_0x550e62);})[_0xb3d2('0x17')](function(_0x2691e4){logger[_0xb3d2('0x13')](_0xb3d2('0x4c'),_0x2691e4[_0xb3d2('0x15')],_0x32d088);_0x520bb4(_0x38e280['error'](0x1f4,_0x2691e4[_0xb3d2('0x15')]));});});});};
\ No newline at end of file
index 852890c..45a456b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eae=['get','isAuthenticated','/describe','describe','/opencontacts','getOpenContacts','/:id','post','getPreview','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x1b8c78,_0x416d56){var _0x8d1465=function(_0x55c463){while(--_0x55c463){_0x1b8c78['push'](_0x1b8c78['shift']());}};_0x8d1465(++_0x416d56);}(_0x7eae,0x7c));var _0xe7ea=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x7eae[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require(_0xe7ea('0x0'));var util=require(_0xe7ea('0x1'));var path=require('path');var timeout=require(_0xe7ea('0x2'));var express=require(_0xe7ea('0x3'));var router=express[_0xe7ea('0x4')]();var fs_extra=require(_0xe7ea('0x5'));var auth=require(_0xe7ea('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe7ea('0x7'));var controller=require('./cmHopper.controller');router[_0xe7ea('0x8')]('/',auth[_0xe7ea('0x9')](),controller['index']);router[_0xe7ea('0x8')](_0xe7ea('0xa'),auth[_0xe7ea('0x9')](),controller[_0xe7ea('0xb')]);router[_0xe7ea('0x8')](_0xe7ea('0xc'),auth[_0xe7ea('0x9')](),controller[_0xe7ea('0xd')]);router[_0xe7ea('0x8')](_0xe7ea('0xe'),auth[_0xe7ea('0x9')](),controller['show']);router[_0xe7ea('0xf')]('/',auth[_0xe7ea('0x9')](),controller['create']);router[_0xe7ea('0xf')]('/preview',auth[_0xe7ea('0x9')](),controller[_0xe7ea('0x10')]);router[_0xe7ea('0x11')](_0xe7ea('0xe'),auth[_0xe7ea('0x9')](),controller[_0xe7ea('0x12')]);router[_0xe7ea('0x13')](_0xe7ea('0xe'),auth[_0xe7ea('0x9')](),controller[_0xe7ea('0x14')]);module[_0xe7ea('0x15')]=router;
\ No newline at end of file
+var _0x8cc3=['../../components/interaction/service','../../config/environment','./cmHopper.controller','index','/describe','isAuthenticated','describe','/opencontacts','get','/:id','show','post','/preview','getPreview','update','delete','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x71ff50,_0x37460b){var _0x44d119=function(_0x39334b){while(--_0x39334b){_0x71ff50['push'](_0x71ff50['shift']());}};_0x44d119(++_0x37460b);}(_0x8cc3,0xc9));var _0x38cc=function(_0x22fb63,_0x20957c){_0x22fb63=_0x22fb63-0x0;var _0x4e7500=_0x8cc3[_0x22fb63];return _0x4e7500;};'use strict';var multer=require(_0x38cc('0x0'));var util=require('util');var path=require(_0x38cc('0x1'));var timeout=require(_0x38cc('0x2'));var express=require(_0x38cc('0x3'));var router=express[_0x38cc('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x38cc('0x5'));var interaction=require(_0x38cc('0x6'));var config=require(_0x38cc('0x7'));var controller=require(_0x38cc('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x38cc('0x9')]);router['get'](_0x38cc('0xa'),auth[_0x38cc('0xb')](),controller[_0x38cc('0xc')]);router['get'](_0x38cc('0xd'),auth['isAuthenticated'](),controller['getOpenContacts']);router[_0x38cc('0xe')](_0x38cc('0xf'),auth[_0x38cc('0xb')](),controller[_0x38cc('0x10')]);router[_0x38cc('0x11')]('/',auth[_0x38cc('0xb')](),controller['create']);router[_0x38cc('0x11')](_0x38cc('0x12'),auth[_0x38cc('0xb')](),controller[_0x38cc('0x13')]);router['put'](_0x38cc('0xf'),auth[_0x38cc('0xb')](),controller[_0x38cc('0x14')]);router[_0x38cc('0x15')](_0x38cc('0xf'),auth['isAuthenticated'](),controller[_0x38cc('0x16')]);module['exports']=router;
\ No newline at end of file
index 05ed783..6be94e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e3=['moment','exports','STRING','contactListQueue','INTEGER'];(function(_0x18b36c,_0x3fd9e5){var _0x3efbfa=function(_0x87e516){while(--_0x87e516){_0x18b36c['push'](_0x18b36c['shift']());}};_0x3efbfa(++_0x3fd9e5);}(_0x52e3,0x159));var _0x352e=function(_0x492e2a,_0x282009){_0x492e2a=_0x492e2a-0x0;var _0x4467da=_0x52e3[_0x492e2a];return _0x4467da;};'use strict';var moment=require(_0x352e('0x0'));var Sequelize=require('sequelize');module[_0x352e('0x1')]={'phone':{'type':Sequelize[_0x352e('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x352e('0x3')},'ListId':{'type':Sequelize[_0x352e('0x4')],'unique':_0x352e('0x3')},'VoiceQueueId':{'type':Sequelize[_0x352e('0x4')],'unique':_0x352e('0x3')}};
\ No newline at end of file
+var _0xb934=['contactListQueue','moment','sequelize','exports','INTEGER'];(function(_0x14f78d,_0x2f076e){var _0x429c6d=function(_0xfb26fb){while(--_0xfb26fb){_0x14f78d['push'](_0x14f78d['shift']());}};_0x429c6d(++_0x2f076e);}(_0xb934,0x92));var _0x4b93=function(_0x4a9b74,_0xc7fa81){_0x4a9b74=_0x4a9b74-0x0;var _0x18f74f=_0xb934[_0x4a9b74];return _0x18f74f;};'use strict';var moment=require(_0x4b93('0x0'));var Sequelize=require(_0x4b93('0x1'));module[_0x4b93('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x4b93('0x3')],'unique':_0x4b93('0x4')},'ListId':{'type':Sequelize[_0x4b93('0x3')],'unique':_0x4b93('0x4')},'VoiceQueueId':{'type':Sequelize[_0x4b93('0x3')],'unique':'contactListQueue'}};
\ No newline at end of file
index a88ba09..00cff99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd399=['pick','filter','where','merge','options','CmHopperBlack','includeAll','findAll','catch','show','params','include','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','rawAttributes','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters'];(function(_0x2a8279,_0x496dfb){var _0x3d8538=function(_0x3a66ae){while(--_0x3a66ae){_0x2a8279['push'](_0x2a8279['shift']());}};_0x3d8538(++_0x496dfb);}(_0xd399,0x181));var _0x9d39=function(_0x190ba2,_0x277ab3){_0x190ba2=_0x190ba2-0x0;var _0x27758f=_0xd399[_0x190ba2];return _0x27758f;};'use strict';var emlformat=require(_0x9d39('0x0'));var rimraf=require(_0x9d39('0x1'));var zipdir=require(_0x9d39('0x2'));var jsonpatch=require(_0x9d39('0x3'));var rp=require('request-promise');var moment=require(_0x9d39('0x4'));var BPromise=require(_0x9d39('0x5'));var Mustache=require(_0x9d39('0x6'));var util=require(_0x9d39('0x7'));var path=require(_0x9d39('0x8'));var sox=require('sox');var csv=require(_0x9d39('0x9'));var ejs=require(_0x9d39('0xa'));var fs=require('fs');var fs_extra=require(_0x9d39('0xb'));var _=require('lodash');var squel=require(_0x9d39('0xc'));var crypto=require(_0x9d39('0xd'));var jsforce=require(_0x9d39('0xe'));var deskjs=require(_0x9d39('0xf'));var toCsv=require(_0x9d39('0x9'));var querystring=require(_0x9d39('0x10'));var Papa=require(_0x9d39('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9d39('0x12'));var as=require(_0x9d39('0x13'));var hardwareService=require(_0x9d39('0x14'));var logger=require(_0x9d39('0x15'))(_0x9d39('0x16'));var utils=require(_0x9d39('0x17'));var config=require(_0x9d39('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2d92e0,_0x191d32){_0x191d32=_0x191d32||0xcc;return function(_0xbbe2cf){if(_0xbbe2cf){return _0x2d92e0[_0x9d39('0x19')](_0x191d32);}return _0x2d92e0[_0x9d39('0x1a')](_0x191d32)[_0x9d39('0x1b')]();};}function respondWithResult(_0x46873f,_0x2aabab){_0x2aabab=_0x2aabab||0xc8;return function(_0x47f8c9){if(_0x47f8c9){return _0x46873f[_0x9d39('0x1a')](_0x2aabab)[_0x9d39('0x1c')](_0x47f8c9);}};}function respondWithFilteredResult(_0xa3bb70,_0x2c9bf7){return function(_0x95819c){if(_0x95819c){var _0x5da431=typeof _0x2c9bf7[_0x9d39('0x1d')]===_0x9d39('0x1e')&&typeof _0x2c9bf7[_0x9d39('0x1f')]==='undefined';var _0x4b3f70=_0x95819c[_0x9d39('0x20')];var _0x3679a8=_0x5da431?0x0:_0x2c9bf7[_0x9d39('0x1d')];var _0x55e459=_0x5da431?_0x95819c[_0x9d39('0x20')]:_0x2c9bf7[_0x9d39('0x1d')]+_0x2c9bf7[_0x9d39('0x1f')];var _0x2b049e;if(_0x55e459>=_0x4b3f70){_0x55e459=_0x4b3f70;_0x2b049e=0xc8;}else{_0x2b049e=0xce;}_0xa3bb70['status'](_0x2b049e);return _0xa3bb70['set'](_0x9d39('0x21'),_0x3679a8+'-'+_0x55e459+'/'+_0x4b3f70)[_0x9d39('0x1c')](_0x95819c);}return null;};}function patchUpdates(_0xd2ced7){return function(_0x3c5d6e){try{jsonpatch[_0x9d39('0x22')](_0x3c5d6e,_0xd2ced7,!![]);}catch(_0x249fa6){return BPromise[_0x9d39('0x23')](_0x249fa6);}return _0x3c5d6e['save']();};}function saveUpdates(_0x576822,_0x5c9f8f){return function(_0x23f0fe){if(_0x23f0fe){return _0x23f0fe[_0x9d39('0x24')](_0x576822)[_0x9d39('0x25')](function(_0x41cb96){return _0x41cb96;});}return null;};}function removeEntity(_0x20eab2,_0x5a9200){return function(_0x61a1b6){if(_0x61a1b6){return _0x61a1b6[_0x9d39('0x26')]()[_0x9d39('0x25')](function(){_0x20eab2[_0x9d39('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a6292,_0xeeed09){return function(_0x2b768a){if(!_0x2b768a){_0x3a6292[_0x9d39('0x19')](0x194);}return _0x2b768a;};}function handleError(_0x215a3c,_0x36ba4e){_0x36ba4e=_0x36ba4e||0x1f4;return function(_0x2da4a2){logger['error'](_0x2da4a2[_0x9d39('0x27')]);if(_0x2da4a2[_0x9d39('0x28')]){delete _0x2da4a2[_0x9d39('0x28')];}_0x215a3c[_0x9d39('0x1a')](_0x36ba4e)[_0x9d39('0x29')](_0x2da4a2);};}exports[_0x9d39('0x2a')]=function(_0x410e4a,_0x6cbfbe){var _0x490a6f={},_0x5068ca={},_0x3205c7={'count':0x0,'rows':[]};var _0x4f66fd=_['map'](db['CmHopperBlack'][_0x9d39('0x2b')],function(_0x4a3022){return{'name':_0x4a3022['fieldName'],'type':_0x4a3022[_0x9d39('0x2c')][_0x9d39('0x2d')]};});_0x5068ca[_0x9d39('0x2e')]=_[_0x9d39('0x2f')](_0x4f66fd,_0x9d39('0x28'));_0x5068ca[_0x9d39('0x30')]=_[_0x9d39('0x31')](_0x410e4a[_0x9d39('0x30')]);_0x5068ca['filters']=_[_0x9d39('0x32')](_0x5068ca[_0x9d39('0x2e')],_0x5068ca[_0x9d39('0x30')]);_0x490a6f['attributes']=_[_0x9d39('0x32')](_0x5068ca[_0x9d39('0x2e')],qs[_0x9d39('0x33')](_0x410e4a[_0x9d39('0x30')][_0x9d39('0x33')]));_0x490a6f[_0x9d39('0x34')]=_0x490a6f[_0x9d39('0x34')][_0x9d39('0x35')]?_0x490a6f[_0x9d39('0x34')]:_0x5068ca[_0x9d39('0x2e')];if(!_0x410e4a['query'][_0x9d39('0x36')](_0x9d39('0x37'))){_0x490a6f[_0x9d39('0x1f')]=qs[_0x9d39('0x1f')](_0x410e4a[_0x9d39('0x30')]['limit']);_0x490a6f['offset']=qs['offset'](_0x410e4a[_0x9d39('0x30')][_0x9d39('0x1d')]);}_0x490a6f[_0x9d39('0x38')]=qs[_0x9d39('0x39')](_0x410e4a[_0x9d39('0x30')][_0x9d39('0x39')]);_0x490a6f['where']=qs[_0x9d39('0x3a')](_[_0x9d39('0x3b')](_0x410e4a['query'],_0x5068ca[_0x9d39('0x3a')]),_0x4f66fd);if(_0x410e4a['query'][_0x9d39('0x3c')]){_0x490a6f[_0x9d39('0x3d')]=_[_0x9d39('0x3e')](_0x490a6f[_0x9d39('0x3d')],{'$or':_[_0x9d39('0x2f')](_0x4f66fd,function(_0x2e5786){if(_0x2e5786[_0x9d39('0x2c')]!=='VIRTUAL'){var _0x522431={};_0x522431[_0x2e5786['name']]={'$like':'%'+_0x410e4a[_0x9d39('0x30')][_0x9d39('0x3c')]+'%'};return _0x522431;}})});}_0x490a6f=_[_0x9d39('0x3e')]({},_0x490a6f,_0x410e4a[_0x9d39('0x3f')]);var _0x4bfb29={'where':_0x490a6f['where']};return db[_0x9d39('0x40')]['count'](_0x4bfb29)['then'](function(_0x14fa28){_0x3205c7[_0x9d39('0x20')]=_0x14fa28;if(_0x410e4a[_0x9d39('0x30')][_0x9d39('0x41')]){_0x490a6f['include']=[{'all':!![]}];}return db[_0x9d39('0x40')][_0x9d39('0x42')](_0x490a6f);})[_0x9d39('0x25')](function(_0x29895b){_0x3205c7['rows']=_0x29895b;return _0x3205c7;})['then'](respondWithFilteredResult(_0x6cbfbe,_0x490a6f))[_0x9d39('0x43')](handleError(_0x6cbfbe,null));};exports[_0x9d39('0x44')]=function(_0x1a2c59,_0x2ff0cc){var _0x29445f={'raw':!![],'where':{'id':_0x1a2c59[_0x9d39('0x45')]['id']}},_0x3aa34d={};_0x3aa34d['model']=_[_0x9d39('0x31')](db[_0x9d39('0x40')][_0x9d39('0x2b')]);_0x3aa34d['query']=_[_0x9d39('0x31')](_0x1a2c59[_0x9d39('0x30')]);_0x3aa34d['filters']=_['intersection'](_0x3aa34d['model'],_0x3aa34d[_0x9d39('0x30')]);_0x29445f['attributes']=_[_0x9d39('0x32')](_0x3aa34d[_0x9d39('0x2e')],qs[_0x9d39('0x33')](_0x1a2c59['query'][_0x9d39('0x33')]));_0x29445f['attributes']=_0x29445f[_0x9d39('0x34')][_0x9d39('0x35')]?_0x29445f['attributes']:_0x3aa34d['model'];if(_0x1a2c59[_0x9d39('0x30')][_0x9d39('0x41')]){_0x29445f[_0x9d39('0x46')]=[{'all':!![]}];}_0x29445f=_['merge']({},_0x29445f,_0x1a2c59[_0x9d39('0x3f')]);return db[_0x9d39('0x40')][_0x9d39('0x47')](_0x29445f)['then'](handleEntityNotFound(_0x2ff0cc,null))[_0x9d39('0x25')](respondWithResult(_0x2ff0cc,null))[_0x9d39('0x43')](handleError(_0x2ff0cc,null));};exports[_0x9d39('0x24')]=function(_0x1c5871,_0xdea6ba){if(_0x1c5871[_0x9d39('0x48')]['id']){delete _0x1c5871[_0x9d39('0x48')]['id'];}return db[_0x9d39('0x40')][_0x9d39('0x47')]({'where':{'id':_0x1c5871[_0x9d39('0x45')]['id']}})[_0x9d39('0x25')](handleEntityNotFound(_0xdea6ba,null))['then'](saveUpdates(_0x1c5871[_0x9d39('0x48')],null))[_0x9d39('0x25')](respondWithResult(_0xdea6ba,null))[_0x9d39('0x43')](handleError(_0xdea6ba,null));};exports[_0x9d39('0x26')]=function(_0x141a59,_0x57232c){return db[_0x9d39('0x40')][_0x9d39('0x47')]({'where':{'id':_0x141a59[_0x9d39('0x45')]['id']}})['then'](handleEntityNotFound(_0x57232c,null))[_0x9d39('0x25')](removeEntity(_0x57232c,null))[_0x9d39('0x43')](handleError(_0x57232c,null));};exports[_0x9d39('0x49')]=function(_0xe420d5,_0x2314d4){return db[_0x9d39('0x40')][_0x9d39('0x49')]()['then'](respondWithResult(_0x2314d4,null))['catch'](handleError(_0x2314d4,null));};
\ No newline at end of file
+var _0x3c54=['sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','CmHopperBlack','findAll','rows','catch','params','include','find','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy'];(function(_0xabd441,_0x6ffdd1){var _0x41eac3=function(_0x140746){while(--_0x140746){_0xabd441['push'](_0xabd441['shift']());}};_0x41eac3(++_0x6ffdd1);}(_0x3c54,0x14d));var _0x43c5=function(_0x5a7b27,_0x4f9926){_0x5a7b27=_0x5a7b27-0x0;var _0x1a709d=_0x3c54[_0x5a7b27];return _0x1a709d;};'use strict';var emlformat=require(_0x43c5('0x0'));var rimraf=require(_0x43c5('0x1'));var zipdir=require(_0x43c5('0x2'));var jsonpatch=require(_0x43c5('0x3'));var rp=require(_0x43c5('0x4'));var moment=require(_0x43c5('0x5'));var BPromise=require(_0x43c5('0x6'));var Mustache=require(_0x43c5('0x7'));var util=require(_0x43c5('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x43c5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x43c5('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x43c5('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x43c5('0x9'));var querystring=require(_0x43c5('0xc'));var Papa=require(_0x43c5('0xd'));var Redis=require(_0x43c5('0xe'));var authService=require(_0x43c5('0xf'));var qs=require(_0x43c5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x43c5('0x11'));var logger=require(_0x43c5('0x12'))(_0x43c5('0x13'));var utils=require('../../config/utils');var config=require(_0x43c5('0x14'));var licenseUtil=require(_0x43c5('0x15'));var db=require(_0x43c5('0x16'))['db'];function respondWithStatusCode(_0x4e1640,_0x50c198){_0x50c198=_0x50c198||0xcc;return function(_0x3bdd31){if(_0x3bdd31){return _0x4e1640['sendStatus'](_0x50c198);}return _0x4e1640[_0x43c5('0x17')](_0x50c198)[_0x43c5('0x18')]();};}function respondWithResult(_0x53b6ac,_0x19d64a){_0x19d64a=_0x19d64a||0xc8;return function(_0x55fae2){if(_0x55fae2){return _0x53b6ac[_0x43c5('0x17')](_0x19d64a)['json'](_0x55fae2);}};}function respondWithFilteredResult(_0x5dc3df,_0x12b703){return function(_0x419ccd){if(_0x419ccd){var _0x1bcf1a=typeof _0x12b703[_0x43c5('0x19')]===_0x43c5('0x1a')&&typeof _0x12b703[_0x43c5('0x1b')]===_0x43c5('0x1a');var _0x543079=_0x419ccd[_0x43c5('0x1c')];var _0x522912=_0x1bcf1a?0x0:_0x12b703[_0x43c5('0x19')];var _0x3bc3e8=_0x1bcf1a?_0x419ccd['count']:_0x12b703['offset']+_0x12b703[_0x43c5('0x1b')];var _0x1df205;if(_0x3bc3e8>=_0x543079){_0x3bc3e8=_0x543079;_0x1df205=0xc8;}else{_0x1df205=0xce;}_0x5dc3df[_0x43c5('0x17')](_0x1df205);return _0x5dc3df[_0x43c5('0x1d')](_0x43c5('0x1e'),_0x522912+'-'+_0x3bc3e8+'/'+_0x543079)[_0x43c5('0x1f')](_0x419ccd);}return null;};}function patchUpdates(_0x1bb433){return function(_0x30ec05){try{jsonpatch[_0x43c5('0x20')](_0x30ec05,_0x1bb433,!![]);}catch(_0x3d1e74){return BPromise[_0x43c5('0x21')](_0x3d1e74);}return _0x30ec05[_0x43c5('0x22')]();};}function saveUpdates(_0x191a02,_0x110059){return function(_0x4ff391){if(_0x4ff391){return _0x4ff391['update'](_0x191a02)[_0x43c5('0x23')](function(_0xefd68){return _0xefd68;});}return null;};}function removeEntity(_0x791c35,_0xd726e3){return function(_0x584536){if(_0x584536){return _0x584536[_0x43c5('0x24')]()[_0x43c5('0x23')](function(){_0x791c35['status'](0xcc)[_0x43c5('0x18')]();});}};}function handleEntityNotFound(_0x18c398,_0x351e99){return function(_0x27b331){if(!_0x27b331){_0x18c398[_0x43c5('0x25')](0x194);}return _0x27b331;};}function handleError(_0x55ff45,_0x484e33){_0x484e33=_0x484e33||0x1f4;return function(_0x2c578d){logger[_0x43c5('0x26')](_0x2c578d[_0x43c5('0x27')]);if(_0x2c578d[_0x43c5('0x28')]){delete _0x2c578d[_0x43c5('0x28')];}_0x55ff45['status'](_0x484e33)[_0x43c5('0x29')](_0x2c578d);};}exports[_0x43c5('0x2a')]=function(_0x3346e8,_0x9fc774){var _0x3a5667={},_0x221ef2={},_0x34e817={'count':0x0,'rows':[]};var _0xfeb198=_[_0x43c5('0x2b')](db['CmHopperBlack'][_0x43c5('0x2c')],function(_0x1240a6){return{'name':_0x1240a6[_0x43c5('0x2d')],'type':_0x1240a6[_0x43c5('0x2e')]['key']};});_0x221ef2[_0x43c5('0x2f')]=_[_0x43c5('0x2b')](_0xfeb198,_0x43c5('0x28'));_0x221ef2['query']=_[_0x43c5('0x30')](_0x3346e8['query']);_0x221ef2[_0x43c5('0x31')]=_[_0x43c5('0x32')](_0x221ef2[_0x43c5('0x2f')],_0x221ef2[_0x43c5('0x33')]);_0x3a5667[_0x43c5('0x34')]=_[_0x43c5('0x32')](_0x221ef2[_0x43c5('0x2f')],qs[_0x43c5('0x35')](_0x3346e8['query'][_0x43c5('0x35')]));_0x3a5667['attributes']=_0x3a5667[_0x43c5('0x34')][_0x43c5('0x36')]?_0x3a5667[_0x43c5('0x34')]:_0x221ef2['model'];if(!_0x3346e8[_0x43c5('0x33')][_0x43c5('0x37')]('nolimit')){_0x3a5667[_0x43c5('0x1b')]=qs[_0x43c5('0x1b')](_0x3346e8[_0x43c5('0x33')][_0x43c5('0x1b')]);_0x3a5667[_0x43c5('0x19')]=qs['offset'](_0x3346e8[_0x43c5('0x33')][_0x43c5('0x19')]);}_0x3a5667[_0x43c5('0x38')]=qs[_0x43c5('0x39')](_0x3346e8['query'][_0x43c5('0x39')]);_0x3a5667[_0x43c5('0x3a')]=qs[_0x43c5('0x31')](_[_0x43c5('0x3b')](_0x3346e8[_0x43c5('0x33')],_0x221ef2[_0x43c5('0x31')]),_0xfeb198);if(_0x3346e8[_0x43c5('0x33')]['filter']){_0x3a5667['where']=_[_0x43c5('0x3c')](_0x3a5667[_0x43c5('0x3a')],{'$or':_['map'](_0xfeb198,function(_0x4df9d2){if(_0x4df9d2['type']!==_0x43c5('0x3d')){var _0x3875d1={};_0x3875d1[_0x4df9d2['name']]={'$like':'%'+_0x3346e8['query']['filter']+'%'};return _0x3875d1;}})});}_0x3a5667=_[_0x43c5('0x3c')]({},_0x3a5667,_0x3346e8[_0x43c5('0x3e')]);var _0xb8a0af={'where':_0x3a5667[_0x43c5('0x3a')]};return db['CmHopperBlack']['count'](_0xb8a0af)[_0x43c5('0x23')](function(_0x5f4d0e){_0x34e817['count']=_0x5f4d0e;if(_0x3346e8['query'][_0x43c5('0x3f')]){_0x3a5667['include']=[{'all':!![]}];}return db[_0x43c5('0x40')][_0x43c5('0x41')](_0x3a5667);})[_0x43c5('0x23')](function(_0x41a00d){_0x34e817[_0x43c5('0x42')]=_0x41a00d;return _0x34e817;})[_0x43c5('0x23')](respondWithFilteredResult(_0x9fc774,_0x3a5667))[_0x43c5('0x43')](handleError(_0x9fc774,null));};exports['show']=function(_0xebce61,_0x1c3d92){var _0x184824={'raw':!![],'where':{'id':_0xebce61[_0x43c5('0x44')]['id']}},_0x436518={};_0x436518[_0x43c5('0x2f')]=_['keys'](db[_0x43c5('0x40')][_0x43c5('0x2c')]);_0x436518[_0x43c5('0x33')]=_[_0x43c5('0x30')](_0xebce61[_0x43c5('0x33')]);_0x436518[_0x43c5('0x31')]=_[_0x43c5('0x32')](_0x436518[_0x43c5('0x2f')],_0x436518['query']);_0x184824[_0x43c5('0x34')]=_[_0x43c5('0x32')](_0x436518['model'],qs[_0x43c5('0x35')](_0xebce61[_0x43c5('0x33')][_0x43c5('0x35')]));_0x184824[_0x43c5('0x34')]=_0x184824['attributes'][_0x43c5('0x36')]?_0x184824[_0x43c5('0x34')]:_0x436518[_0x43c5('0x2f')];if(_0xebce61['query'][_0x43c5('0x3f')]){_0x184824[_0x43c5('0x45')]=[{'all':!![]}];}_0x184824=_[_0x43c5('0x3c')]({},_0x184824,_0xebce61[_0x43c5('0x3e')]);return db[_0x43c5('0x40')][_0x43c5('0x46')](_0x184824)[_0x43c5('0x23')](handleEntityNotFound(_0x1c3d92,null))[_0x43c5('0x23')](respondWithResult(_0x1c3d92,null))[_0x43c5('0x43')](handleError(_0x1c3d92,null));};exports[_0x43c5('0x47')]=function(_0x30aa67,_0x162c5f){if(_0x30aa67[_0x43c5('0x48')]['id']){delete _0x30aa67[_0x43c5('0x48')]['id'];}return db['CmHopperBlack'][_0x43c5('0x46')]({'where':{'id':_0x30aa67[_0x43c5('0x44')]['id']}})[_0x43c5('0x23')](handleEntityNotFound(_0x162c5f,null))[_0x43c5('0x23')](saveUpdates(_0x30aa67[_0x43c5('0x48')],null))[_0x43c5('0x23')](respondWithResult(_0x162c5f,null))['catch'](handleError(_0x162c5f,null));};exports[_0x43c5('0x24')]=function(_0x2249c5,_0x3ba45e){return db['CmHopperBlack']['find']({'where':{'id':_0x2249c5[_0x43c5('0x44')]['id']}})[_0x43c5('0x23')](handleEntityNotFound(_0x3ba45e,null))[_0x43c5('0x23')](removeEntity(_0x3ba45e,null))[_0x43c5('0x43')](handleError(_0x3ba45e,null));};exports[_0x43c5('0x49')]=function(_0x37d3a2,_0x193a1d){return db[_0x43c5('0x40')][_0x43c5('0x49')]()[_0x43c5('0x23')](respondWithResult(_0x193a1d,null))[_0x43c5('0x43')](handleError(_0x193a1d,null));};
\ No newline at end of file
index d9b76cf..4b67c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc910=['bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','CmHopperBlack','cm_hopper_black','util','../../config/logger','api','moment'];(function(_0x3b56aa,_0x228f4e){var _0x2e0dcd=function(_0x143883){while(--_0x143883){_0x3b56aa['push'](_0x3b56aa['shift']());}};_0x2e0dcd(++_0x228f4e);}(_0xc910,0x7a));var _0x0c91=function(_0x16ef28,_0x15dbcb){_0x16ef28=_0x16ef28-0x0;var _0x82e2a4=_0xc910[_0x16ef28];return _0x82e2a4;};'use strict';var _=require('lodash');var util=require(_0x0c91('0x0'));var logger=require(_0x0c91('0x1'))(_0x0c91('0x2'));var moment=require(_0x0c91('0x3'));var BPromise=require(_0x0c91('0x4'));var rp=require(_0x0c91('0x5'));var fs=require('fs');var path=require(_0x0c91('0x6'));var rimraf=require(_0x0c91('0x7'));var config=require(_0x0c91('0x8'));var attributes=require(_0x0c91('0x9'));module[_0x0c91('0xa')]=function(_0x296116,_0x2fafc5){return _0x296116[_0x0c91('0xb')](_0x0c91('0xc'),attributes,{'tableName':_0x0c91('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6f3=['CmHopperBlack','cm_hopper_black','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./cmHopperBlack.attributes','exports','define'];(function(_0x100682,_0x11afec){var _0xcb6e87=function(_0x3ef421){while(--_0x3ef421){_0x100682['push'](_0x100682['shift']());}};_0xcb6e87(++_0x11afec);}(_0xd6f3,0x92));var _0x3d6f=function(_0x5d4968,_0x503c98){_0x5d4968=_0x5d4968-0x0;var _0x53fb22=_0xd6f3[_0x5d4968];return _0x53fb22;};'use strict';var _=require(_0x3d6f('0x0'));var util=require('util');var logger=require(_0x3d6f('0x1'))('api');var moment=require(_0x3d6f('0x2'));var BPromise=require(_0x3d6f('0x3'));var rp=require(_0x3d6f('0x4'));var fs=require('fs');var path=require(_0x3d6f('0x5'));var rimraf=require('rimraf');var config=require(_0x3d6f('0x6'));var attributes=require(_0x3d6f('0x7'));module[_0x3d6f('0x8')]=function(_0x2c924d,_0x2cc8b4){return _0x2c924d[_0x3d6f('0x9')](_0x3d6f('0xa'),attributes,{'tableName':_0x3d6f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bdc41c..e3e5f47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee07=['limit','include','map','model','attributes','info','stringify','UpdateCmHopperBlack','update','DestroyCmHopperBlack','destroy','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetCmHopperBlack','CmHopperBlack','options','raw'];(function(_0x56eefb,_0x1a1c6d){var _0x13ed78=function(_0x18f89a){while(--_0x18f89a){_0x56eefb['push'](_0x56eefb['shift']());}};_0x13ed78(++_0x1a1c6d);}(_0xee07,0x93));var _0x7ee0=function(_0x8e234e,_0x4db9ca){_0x8e234e=_0x8e234e-0x0;var _0x3b0a62=_0xee07[_0x8e234e];return _0x3b0a62;};'use strict';var _=require(_0x7ee0('0x0'));var util=require('util');var moment=require(_0x7ee0('0x1'));var BPromise=require(_0x7ee0('0x2'));var rs=require(_0x7ee0('0x3'));var fs=require('fs');var Redis=require(_0x7ee0('0x4'));var db=require(_0x7ee0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7ee0('0x6'))('rpc');var config=require(_0x7ee0('0x7'));var jayson=require(_0x7ee0('0x8'));var client=jayson[_0x7ee0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b7fcc,_0x58b3a2,_0x296c68){return new BPromise(function(_0x2f89c0,_0x377e70){return client['request'](_0x4b7fcc,_0x296c68)[_0x7ee0('0xa')](function(_0x99f056){logger['info'](_0x7ee0('0xb'),_0x58b3a2,_0x7ee0('0xc'));logger[_0x7ee0('0xd')](_0x7ee0('0xe'),_0x58b3a2,_0x7ee0('0xc'),JSON['stringify'](_0x99f056));if(_0x99f056[_0x7ee0('0xf')]){if(_0x99f056[_0x7ee0('0xf')][_0x7ee0('0x10')]===0x1f4){logger[_0x7ee0('0xf')](_0x7ee0('0xb'),_0x58b3a2,_0x99f056['error'][_0x7ee0('0x11')]);return _0x377e70(_0x99f056['error'][_0x7ee0('0x11')]);}logger[_0x7ee0('0xf')](_0x7ee0('0xb'),_0x58b3a2,_0x99f056['error'][_0x7ee0('0x11')]);return _0x2f89c0(_0x99f056[_0x7ee0('0xf')][_0x7ee0('0x11')]);}else{logger['info'](_0x7ee0('0xb'),_0x58b3a2,'request\x20sent');_0x2f89c0(_0x99f056['result'][_0x7ee0('0x11')]);}})[_0x7ee0('0x12')](function(_0x26c997){logger[_0x7ee0('0xf')](_0x7ee0('0xb'),_0x58b3a2,_0x26c997);_0x377e70(_0x26c997);});});}exports[_0x7ee0('0x13')]=function(_0x2d5ed9){var _0x41c349=this;return new Promise(function(_0x1272d6,_0x2cdc8c){return db[_0x7ee0('0x14')]['findAll']({'raw':_0x2d5ed9[_0x7ee0('0x15')]?_0x2d5ed9['options'][_0x7ee0('0x16')]===undefined?!![]:![]:!![],'where':_0x2d5ed9[_0x7ee0('0x15')]?_0x2d5ed9[_0x7ee0('0x15')]['where']||null:null,'attributes':_0x2d5ed9[_0x7ee0('0x15')]?_0x2d5ed9[_0x7ee0('0x15')]['attributes']||null:null,'limit':_0x2d5ed9[_0x7ee0('0x15')]?_0x2d5ed9[_0x7ee0('0x15')][_0x7ee0('0x17')]||null:null,'include':_0x2d5ed9[_0x7ee0('0x15')]?_0x2d5ed9[_0x7ee0('0x15')][_0x7ee0('0x18')]?_[_0x7ee0('0x19')](_0x2d5ed9[_0x7ee0('0x15')]['include'],function(_0x333d8e){return{'model':db[_0x333d8e['model']],'as':_0x333d8e['as'],'attributes':_0x333d8e['attributes'],'include':_0x333d8e['include']?_[_0x7ee0('0x19')](_0x333d8e[_0x7ee0('0x18')],function(_0x54b923){return{'model':db[_0x54b923[_0x7ee0('0x1a')]],'as':_0x54b923['as'],'attributes':_0x54b923[_0x7ee0('0x1b')],'include':_0x54b923[_0x7ee0('0x18')]?_[_0x7ee0('0x19')](_0x54b923[_0x7ee0('0x18')],function(_0x66282f){return{'model':db[_0x66282f[_0x7ee0('0x1a')]],'as':_0x66282f['as'],'attributes':_0x66282f[_0x7ee0('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x7ee0('0xa')](function(_0x3597b7){logger[_0x7ee0('0x1c')](_0x7ee0('0x13'),_0x2d5ed9);logger[_0x7ee0('0xd')]('GetCmHopperBlack',_0x2d5ed9,JSON[_0x7ee0('0x1d')](_0x3597b7));_0x1272d6(_0x3597b7);})[_0x7ee0('0x12')](function(_0x31bb44){logger[_0x7ee0('0xf')](_0x7ee0('0x13'),_0x31bb44[_0x7ee0('0x11')],_0x2d5ed9);_0x2cdc8c(_0x41c349[_0x7ee0('0xf')](0x1f4,_0x31bb44[_0x7ee0('0x11')]));});});};exports[_0x7ee0('0x1e')]=function(_0x5d84de){var _0x34a563=this;return new Promise(function(_0x48f215,_0x372074){return db[_0x7ee0('0x14')][_0x7ee0('0x1f')](_0x5d84de['body'],{'raw':_0x5d84de[_0x7ee0('0x15')]?_0x5d84de[_0x7ee0('0x15')][_0x7ee0('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d84de[_0x7ee0('0x15')]?_0x5d84de[_0x7ee0('0x15')]['where']||null:null,'attributes':_0x5d84de[_0x7ee0('0x15')]?_0x5d84de[_0x7ee0('0x15')]['attributes']||null:null,'limit':_0x5d84de[_0x7ee0('0x15')]?_0x5d84de[_0x7ee0('0x15')][_0x7ee0('0x17')]||null:null})[_0x7ee0('0xa')](function(_0x1e63a7){logger[_0x7ee0('0x1c')](_0x7ee0('0x1e'),_0x5d84de);logger[_0x7ee0('0xd')]('UpdateCmHopperBlack',_0x5d84de,JSON[_0x7ee0('0x1d')](_0x1e63a7));_0x48f215(_0x1e63a7);})[_0x7ee0('0x12')](function(_0x227608){logger[_0x7ee0('0xf')](_0x7ee0('0x1e'),_0x227608['message'],_0x5d84de);_0x372074(_0x34a563[_0x7ee0('0xf')](0x1f4,_0x227608[_0x7ee0('0x11')]));});});};exports[_0x7ee0('0x20')]=function(_0x2353b3){var _0x55f475=this;return new Promise(function(_0x49b14c,_0xfa52dc){return db[_0x7ee0('0x14')][_0x7ee0('0x21')]({'where':_0x2353b3[_0x7ee0('0x15')]?_0x2353b3[_0x7ee0('0x15')]['where']||null:null})['then'](function(_0x23c879){logger['info']('DestroyCmHopperBlack',_0x2353b3);logger[_0x7ee0('0xd')](_0x7ee0('0x20'),_0x2353b3,JSON['stringify'](_0x23c879));_0x49b14c(_0x23c879);})[_0x7ee0('0x12')](function(_0x932a29){logger[_0x7ee0('0xf')](_0x7ee0('0x20'),_0x932a29['message'],_0x2353b3);_0xfa52dc(_0x55f475[_0x7ee0('0xf')](0x1f4,_0x932a29[_0x7ee0('0x11')]));});});};
\ No newline at end of file
+var _0x9b42=['stringify','error','code','message','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','include','map','model','then','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','moment','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','request','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x429003,_0x3508da){var _0x3cc0d9=function(_0x1bc27c){while(--_0x1bc27c){_0x429003['push'](_0x429003['shift']());}};_0x3cc0d9(++_0x3508da);}(_0x9b42,0x1ea));var _0x29b4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9b42[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x29b4('0x0'));var util=require(_0x29b4('0x1'));var moment=require(_0x29b4('0x2'));var BPromise=require('bluebird');var rs=require(_0x29b4('0x3'));var fs=require('fs');var Redis=require(_0x29b4('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x29b4('0x5'))('rpc');var config=require(_0x29b4('0x6'));var jayson=require(_0x29b4('0x7'));var client=jayson[_0x29b4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17ad62,_0x1b0cec,_0x5981d2){return new BPromise(function(_0x21b7ee,_0x42c0d4){return client[_0x29b4('0x9')](_0x17ad62,_0x5981d2)['then'](function(_0x4f4c77){logger[_0x29b4('0xa')](_0x29b4('0xb'),_0x1b0cec,_0x29b4('0xc'));logger[_0x29b4('0xd')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x1b0cec,_0x29b4('0xc'),JSON[_0x29b4('0xe')](_0x4f4c77));if(_0x4f4c77[_0x29b4('0xf')]){if(_0x4f4c77['error'][_0x29b4('0x10')]===0x1f4){logger[_0x29b4('0xf')](_0x29b4('0xb'),_0x1b0cec,_0x4f4c77[_0x29b4('0xf')][_0x29b4('0x11')]);return _0x42c0d4(_0x4f4c77['error'][_0x29b4('0x11')]);}logger[_0x29b4('0xf')](_0x29b4('0xb'),_0x1b0cec,_0x4f4c77['error'][_0x29b4('0x11')]);return _0x21b7ee(_0x4f4c77[_0x29b4('0xf')][_0x29b4('0x11')]);}else{logger[_0x29b4('0xa')]('CmHopperBlack,\x20%s,\x20%s',_0x1b0cec,_0x29b4('0xc'));_0x21b7ee(_0x4f4c77[_0x29b4('0x12')][_0x29b4('0x11')]);}})[_0x29b4('0x13')](function(_0x22f770){logger[_0x29b4('0xf')](_0x29b4('0xb'),_0x1b0cec,_0x22f770);_0x42c0d4(_0x22f770);});});}exports[_0x29b4('0x14')]=function(_0x3eeb06){var _0x5d62ba=this;return new Promise(function(_0x25a9b2,_0x322dfc){return db[_0x29b4('0x15')][_0x29b4('0x16')]({'raw':_0x3eeb06[_0x29b4('0x17')]?_0x3eeb06[_0x29b4('0x17')][_0x29b4('0x18')]===undefined?!![]:![]:!![],'where':_0x3eeb06[_0x29b4('0x17')]?_0x3eeb06[_0x29b4('0x17')][_0x29b4('0x19')]||null:null,'attributes':_0x3eeb06[_0x29b4('0x17')]?_0x3eeb06[_0x29b4('0x17')][_0x29b4('0x1a')]||null:null,'limit':_0x3eeb06[_0x29b4('0x17')]?_0x3eeb06['options']['limit']||null:null,'include':_0x3eeb06[_0x29b4('0x17')]?_0x3eeb06[_0x29b4('0x17')][_0x29b4('0x1b')]?_[_0x29b4('0x1c')](_0x3eeb06[_0x29b4('0x17')][_0x29b4('0x1b')],function(_0x19f31c){return{'model':db[_0x19f31c[_0x29b4('0x1d')]],'as':_0x19f31c['as'],'attributes':_0x19f31c[_0x29b4('0x1a')],'include':_0x19f31c['include']?_['map'](_0x19f31c[_0x29b4('0x1b')],function(_0x202845){return{'model':db[_0x202845['model']],'as':_0x202845['as'],'attributes':_0x202845[_0x29b4('0x1a')],'include':_0x202845[_0x29b4('0x1b')]?_[_0x29b4('0x1c')](_0x202845[_0x29b4('0x1b')],function(_0x268d0e){return{'model':db[_0x268d0e[_0x29b4('0x1d')]],'as':_0x268d0e['as'],'attributes':_0x268d0e[_0x29b4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x29b4('0x1e')](function(_0x3945f4){logger[_0x29b4('0xa')](_0x29b4('0x14'),_0x3eeb06);logger[_0x29b4('0xd')](_0x29b4('0x14'),_0x3eeb06,JSON[_0x29b4('0xe')](_0x3945f4));_0x25a9b2(_0x3945f4);})[_0x29b4('0x13')](function(_0x48b5dd){logger[_0x29b4('0xf')]('GetCmHopperBlack',_0x48b5dd[_0x29b4('0x11')],_0x3eeb06);_0x322dfc(_0x5d62ba['error'](0x1f4,_0x48b5dd['message']));});});};exports[_0x29b4('0x1f')]=function(_0x3b8174){var _0x22c050=this;return new Promise(function(_0x1d8707,_0x7a24bd){return db[_0x29b4('0x15')][_0x29b4('0x20')](_0x3b8174[_0x29b4('0x21')],{'raw':_0x3b8174[_0x29b4('0x17')]?_0x3b8174['options'][_0x29b4('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b8174[_0x29b4('0x17')]?_0x3b8174[_0x29b4('0x17')][_0x29b4('0x19')]||null:null,'attributes':_0x3b8174[_0x29b4('0x17')]?_0x3b8174[_0x29b4('0x17')][_0x29b4('0x1a')]||null:null,'limit':_0x3b8174[_0x29b4('0x17')]?_0x3b8174[_0x29b4('0x17')]['limit']||null:null})[_0x29b4('0x1e')](function(_0xaee813){logger[_0x29b4('0xa')]('UpdateCmHopperBlack',_0x3b8174);logger[_0x29b4('0xd')]('UpdateCmHopperBlack',_0x3b8174,JSON[_0x29b4('0xe')](_0xaee813));_0x1d8707(_0xaee813);})[_0x29b4('0x13')](function(_0x37d33b){logger[_0x29b4('0xf')](_0x29b4('0x1f'),_0x37d33b['message'],_0x3b8174);_0x7a24bd(_0x22c050[_0x29b4('0xf')](0x1f4,_0x37d33b['message']));});});};exports[_0x29b4('0x22')]=function(_0x4438a3){var _0x4d3fce=this;return new Promise(function(_0x1a3e4d,_0x252f82){return db['CmHopperBlack'][_0x29b4('0x23')]({'where':_0x4438a3[_0x29b4('0x17')]?_0x4438a3[_0x29b4('0x17')][_0x29b4('0x19')]||null:null})[_0x29b4('0x1e')](function(_0x386a25){logger['info'](_0x29b4('0x22'),_0x4438a3);logger[_0x29b4('0xd')](_0x29b4('0x22'),_0x4438a3,JSON[_0x29b4('0xe')](_0x386a25));_0x1a3e4d(_0x386a25);})[_0x29b4('0x13')](function(_0x27f5a7){logger[_0x29b4('0xf')](_0x29b4('0x22'),_0x27f5a7[_0x29b4('0x11')],_0x4438a3);_0x252f82(_0x4d3fce[_0x29b4('0xf')](0x1f4,_0x27f5a7['message']));});});};
\ No newline at end of file
index 349f8f0..a3dc590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','describe','/:id','show','put','update','delete'];(function(_0x3efeeb,_0x4abdf7){var _0x84de75=function(_0x5f297a){while(--_0x5f297a){_0x3efeeb['push'](_0x3efeeb['shift']());}};_0x84de75(++_0x4abdf7);}(_0x2542,0x169));var _0x2254=function(_0x5559a0,_0x2b162a){_0x5559a0=_0x5559a0-0x0;var _0x1ff3af=_0x2542[_0x5559a0];return _0x1ff3af;};'use strict';var multer=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var path=require(_0x2254('0x2'));var timeout=require(_0x2254('0x3'));var express=require('express');var router=express[_0x2254('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2254('0x5'));var interaction=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var controller=require(_0x2254('0x8'));router[_0x2254('0x9')]('/',auth['isAuthenticated'](),controller[_0x2254('0xa')]);router[_0x2254('0x9')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0xd')]);router[_0x2254('0x9')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0xf')]);router[_0x2254('0x10')](_0x2254('0xe'),auth['isAuthenticated'](),controller[_0x2254('0x11')]);router[_0x2254('0x12')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2eb2=['/describe','describe','/:id','show','put','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index'];(function(_0x29a3cf,_0x1a158d){var _0x30ead6=function(_0x5cff68){while(--_0x5cff68){_0x29a3cf['push'](_0x29a3cf['shift']());}};_0x30ead6(++_0x1a158d);}(_0x2eb2,0x19f));var _0x22eb=function(_0x397cfb,_0xb8f317){_0x397cfb=_0x397cfb-0x0;var _0x15fed9=_0x2eb2[_0x397cfb];return _0x15fed9;};'use strict';var multer=require('multer');var util=require(_0x22eb('0x0'));var path=require(_0x22eb('0x1'));var timeout=require(_0x22eb('0x2'));var express=require(_0x22eb('0x3'));var router=express[_0x22eb('0x4')]();var fs_extra=require(_0x22eb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x22eb('0x6'));var config=require('../../config/environment');var controller=require('./cmHopperBlack.controller');router[_0x22eb('0x7')]('/',auth[_0x22eb('0x8')](),controller[_0x22eb('0x9')]);router[_0x22eb('0x7')](_0x22eb('0xa'),auth[_0x22eb('0x8')](),controller[_0x22eb('0xb')]);router[_0x22eb('0x7')](_0x22eb('0xc'),auth[_0x22eb('0x8')](),controller[_0x22eb('0xd')]);router[_0x22eb('0xe')]('/:id',auth[_0x22eb('0x8')](),controller['update']);router['delete'](_0x22eb('0xc'),auth['isAuthenticated'](),controller[_0x22eb('0xf')]);module[_0x22eb('0x10')]=router;
\ No newline at end of file
index b765298..bdc6af3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2961=['followuptime','diff','dispositionat','BOOLEAN','moment','exports','DATE','INTEGER','STRING','getDataValue','endtime','setDataValue'];(function(_0x3dd2bf,_0x105fbb){var _0x5912be=function(_0x23b27e){while(--_0x23b27e){_0x3dd2bf['push'](_0x3dd2bf['shift']());}};_0x5912be(++_0x105fbb);}(_0x2961,0x10c));var _0x1296=function(_0x3f87ce,_0x4abd6c){_0x3f87ce=_0x3f87ce-0x0;var _0x8d7035=_0x2961[_0x3f87ce];return _0x8d7035;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x1296('0x0'));module[_0x1296('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x1296('0x2')]},'countbusyretry':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x1296('0x4')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x1296('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x1296('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x1296('0x2')]},'droptime':{'type':Sequelize[_0x1296('0x2')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x1296('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x1296('0x4')]},'disposition':{'type':Sequelize[_0x1296('0x4')]},'secondDisposition':{'type':Sequelize[_0x1296('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1296('0x4')]},'dispositionat':{'type':Sequelize[_0x1296('0x2')],'set':function(_0x5f3304){var _0x270ce7=this[_0x1296('0x5')](_0x1296('0x6'));if(_0x270ce7&&_0x5f3304){this[_0x1296('0x7')](_0x1296('0x8'),moment(_0x5f3304)[_0x1296('0x9')](moment(_0x270ce7),'seconds'));}return this['setDataValue'](_0x1296('0xa'),_0x5f3304);}},'amd':{'type':Sequelize[_0x1296('0xb')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x1296('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x1296('0x2')]},'callback':{'type':Sequelize[_0x1296('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1296('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1296('0x2')]},'deleted':{'type':Sequelize[_0x1296('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x1296('0x2')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1296('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe661=['diff','seconds','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue','followuptime'];(function(_0x1a6cb1,_0x1915cd){var _0x2175fb=function(_0xf55fee){while(--_0xf55fee){_0x1a6cb1['push'](_0x1a6cb1['shift']());}};_0x2175fb(++_0x1915cd);}(_0xe661,0x184));var _0x1e66=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xe661[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x1e66('0x0'));var moment=require(_0x1e66('0x1'));module[_0x1e66('0x2')]={'state':{'type':Sequelize[_0x1e66('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x1e66('0x4')]},'scheduledat':{'type':Sequelize[_0x1e66('0x5')]},'countbusyretry':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x1e66('0x4')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x1e66('0x4')]},'starttime':{'type':Sequelize[_0x1e66('0x5')]},'responsetime':{'type':Sequelize[_0x1e66('0x5')]},'answertime':{'type':Sequelize[_0x1e66('0x5')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x1e66('0x5')]},'ringtime':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x1e66('0x4')]},'campaign':{'type':Sequelize[_0x1e66('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x1e66('0x4')]},'reason':{'type':Sequelize[_0x1e66('0x4')]},'disposition':{'type':Sequelize[_0x1e66('0x4')]},'secondDisposition':{'type':Sequelize[_0x1e66('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x45e5a0){var _0x488bc1=this[_0x1e66('0x6')]('endtime');if(_0x488bc1&&_0x45e5a0){this['setDataValue'](_0x1e66('0x7'),moment(_0x45e5a0)[_0x1e66('0x8')](moment(_0x488bc1),_0x1e66('0x9')));}return this['setDataValue'](_0x1e66('0xa'),_0x45e5a0);}},'amd':{'type':Sequelize[_0x1e66('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x1e66('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x1e66('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x1e66('0x5')]},'callback':{'type':Sequelize[_0x1e66('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0x1e66('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x1e66('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x1e66('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1e66('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index cc45357..e41fe80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','NOW()','from','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','find','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','cm_hopper_final','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','undefined','count','set','apply','reject','save','then','sendStatus','error','name','send','index','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','CmHopperFinal','includeAll','include','rows','catch','params','options','describe','update','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','COUNT','sequelize','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','dropContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','createdAt','updatedAt','select','field','ANY_VALUE(ContactId)','ContactId'];(function(_0xf80b3,_0x25d5f3){var _0x10c489=function(_0x3c5aee){while(--_0x3c5aee){_0xf80b3['push'](_0xf80b3['shift']());}};_0x10c489(++_0x25d5f3);}(_0x4888,0x198));var _0x8488=function(_0x119ec0,_0x206327){_0x119ec0=_0x119ec0-0x0;var _0x56f82b=_0x4888[_0x119ec0];return _0x56f82b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8488('0x0'));var zipdir=require(_0x8488('0x1'));var jsonpatch=require(_0x8488('0x2'));var rp=require(_0x8488('0x3'));var moment=require(_0x8488('0x4'));var BPromise=require(_0x8488('0x5'));var Mustache=require(_0x8488('0x6'));var util=require('util');var path=require(_0x8488('0x7'));var sox=require(_0x8488('0x8'));var csv=require(_0x8488('0x9'));var ejs=require(_0x8488('0xa'));var fs=require('fs');var fs_extra=require(_0x8488('0xb'));var _=require(_0x8488('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8488('0x9'));var querystring=require(_0x8488('0xd'));var Papa=require('papaparse');var Redis=require(_0x8488('0xe'));var authService=require(_0x8488('0xf'));var qs=require(_0x8488('0x10'));var as=require(_0x8488('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8488('0x12'))(_0x8488('0x13'));var utils=require(_0x8488('0x14'));var config=require(_0x8488('0x15'));var licenseUtil=require(_0x8488('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x14462e,_0x3d1f7a){_0x3d1f7a=_0x3d1f7a||0xcc;return function(_0x58f83d){if(_0x58f83d){return _0x14462e['sendStatus'](_0x3d1f7a);}return _0x14462e[_0x8488('0x17')](_0x3d1f7a)['end']();};}function respondWithResult(_0x214083,_0x4e94fc){_0x4e94fc=_0x4e94fc||0xc8;return function(_0x5161a3){if(_0x5161a3){return _0x214083[_0x8488('0x17')](_0x4e94fc)[_0x8488('0x18')](_0x5161a3);}};}function respondWithFilteredResult(_0x5700b,_0x2bcb7c){return function(_0x3b3cfa){if(_0x3b3cfa){var _0x8d3b3d=typeof _0x2bcb7c[_0x8488('0x19')]==='undefined'&&typeof _0x2bcb7c[_0x8488('0x1a')]===_0x8488('0x1b');var _0x3edfe4=_0x3b3cfa[_0x8488('0x1c')];var _0x60ae2f=_0x8d3b3d?0x0:_0x2bcb7c[_0x8488('0x19')];var _0x1aedb1=_0x8d3b3d?_0x3b3cfa[_0x8488('0x1c')]:_0x2bcb7c[_0x8488('0x19')]+_0x2bcb7c[_0x8488('0x1a')];var _0x10bfd6;if(_0x1aedb1>=_0x3edfe4){_0x1aedb1=_0x3edfe4;_0x10bfd6=0xc8;}else{_0x10bfd6=0xce;}_0x5700b[_0x8488('0x17')](_0x10bfd6);return _0x5700b[_0x8488('0x1d')]('Content-Range',_0x60ae2f+'-'+_0x1aedb1+'/'+_0x3edfe4)['json'](_0x3b3cfa);}return null;};}function patchUpdates(_0x340d6b){return function(_0x12d40f){try{jsonpatch[_0x8488('0x1e')](_0x12d40f,_0x340d6b,!![]);}catch(_0x3c9fc2){return BPromise[_0x8488('0x1f')](_0x3c9fc2);}return _0x12d40f[_0x8488('0x20')]();};}function saveUpdates(_0x43b672,_0x3c078c){return function(_0x39dd43){if(_0x39dd43){return _0x39dd43['update'](_0x43b672)[_0x8488('0x21')](function(_0x4e07e1){return _0x4e07e1;});}return null;};}function removeEntity(_0x140b0b,_0x1361a6){return function(_0x290b33){if(_0x290b33){return _0x290b33['destroy']()['then'](function(){_0x140b0b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x472624,_0x51fe30){return function(_0x58057a){if(!_0x58057a){_0x472624[_0x8488('0x22')](0x194);}return _0x58057a;};}function handleError(_0x2f350a,_0x2b3c97){_0x2b3c97=_0x2b3c97||0x1f4;return function(_0x6ebee0){logger[_0x8488('0x23')](_0x6ebee0['stack']);if(_0x6ebee0[_0x8488('0x24')]){delete _0x6ebee0[_0x8488('0x24')];}_0x2f350a[_0x8488('0x17')](_0x2b3c97)[_0x8488('0x25')](_0x6ebee0);};}exports[_0x8488('0x26')]=function(_0x27f5cf,_0x2c15ff){var _0x296b6c={},_0x368f9c={},_0x1d9317={'count':0x0,'rows':[]};var _0x888b24=_['map'](db['CmHopperFinal']['rawAttributes'],function(_0x292fe8){return{'name':_0x292fe8[_0x8488('0x27')],'type':_0x292fe8[_0x8488('0x28')][_0x8488('0x29')]};});_0x368f9c[_0x8488('0x2a')]=_[_0x8488('0x2b')](_0x888b24,'name');_0x368f9c[_0x8488('0x2c')]=_[_0x8488('0x2d')](_0x27f5cf[_0x8488('0x2c')]);_0x368f9c[_0x8488('0x2e')]=_[_0x8488('0x2f')](_0x368f9c['model'],_0x368f9c[_0x8488('0x2c')]);_0x296b6c[_0x8488('0x30')]=_['intersection'](_0x368f9c[_0x8488('0x2a')],qs[_0x8488('0x31')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x31')]));_0x296b6c[_0x8488('0x30')]=_0x296b6c['attributes'][_0x8488('0x32')]?_0x296b6c[_0x8488('0x30')]:_0x368f9c[_0x8488('0x2a')];if(!_0x27f5cf['query'][_0x8488('0x33')]('nolimit')){_0x296b6c[_0x8488('0x1a')]=qs[_0x8488('0x1a')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x1a')]);_0x296b6c['offset']=qs[_0x8488('0x19')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x19')]);}_0x296b6c['order']=qs[_0x8488('0x34')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x34')]);_0x296b6c[_0x8488('0x35')]=qs[_0x8488('0x2e')](_[_0x8488('0x36')](_0x27f5cf[_0x8488('0x2c')],_0x368f9c[_0x8488('0x2e')]),_0x888b24);if(_0x27f5cf[_0x8488('0x2c')][_0x8488('0x37')]){_0x296b6c[_0x8488('0x35')]=_['merge'](_0x296b6c['where'],{'$or':_[_0x8488('0x2b')](_0x888b24,function(_0x36c17a){if(_0x36c17a[_0x8488('0x28')]!==_0x8488('0x38')){var _0x2d9fa1={};_0x2d9fa1[_0x36c17a[_0x8488('0x24')]]={'$like':'%'+_0x27f5cf[_0x8488('0x2c')][_0x8488('0x37')]+'%'};return _0x2d9fa1;}})});}_0x296b6c=_[_0x8488('0x39')]({},_0x296b6c,_0x27f5cf['options']);var _0xf5a0a0={'where':_0x296b6c[_0x8488('0x35')]};return db[_0x8488('0x3a')]['count'](_0xf5a0a0)[_0x8488('0x21')](function(_0xa50c4b){_0x1d9317[_0x8488('0x1c')]=_0xa50c4b;if(_0x27f5cf[_0x8488('0x2c')][_0x8488('0x3b')]){_0x296b6c[_0x8488('0x3c')]=[{'all':!![]}];}return db[_0x8488('0x3a')]['findAll'](_0x296b6c);})[_0x8488('0x21')](function(_0x1c33a1){_0x1d9317[_0x8488('0x3d')]=_0x1c33a1;return _0x1d9317;})['then'](respondWithFilteredResult(_0x2c15ff,_0x296b6c))[_0x8488('0x3e')](handleError(_0x2c15ff,null));};exports['show']=function(_0x40ee7e,_0x34b11b){var _0x5cbd11={'raw':!![],'where':{'id':_0x40ee7e[_0x8488('0x3f')]['id']}},_0x22a3f3={};_0x22a3f3[_0x8488('0x2a')]=_[_0x8488('0x2d')](db[_0x8488('0x3a')]['rawAttributes']);_0x22a3f3[_0x8488('0x2c')]=_['keys'](_0x40ee7e[_0x8488('0x2c')]);_0x22a3f3[_0x8488('0x2e')]=_[_0x8488('0x2f')](_0x22a3f3[_0x8488('0x2a')],_0x22a3f3[_0x8488('0x2c')]);_0x5cbd11[_0x8488('0x30')]=_[_0x8488('0x2f')](_0x22a3f3[_0x8488('0x2a')],qs[_0x8488('0x31')](_0x40ee7e[_0x8488('0x2c')][_0x8488('0x31')]));_0x5cbd11[_0x8488('0x30')]=_0x5cbd11[_0x8488('0x30')][_0x8488('0x32')]?_0x5cbd11[_0x8488('0x30')]:_0x22a3f3[_0x8488('0x2a')];if(_0x40ee7e[_0x8488('0x2c')]['includeAll']){_0x5cbd11[_0x8488('0x3c')]=[{'all':!![]}];}_0x5cbd11=_[_0x8488('0x39')]({},_0x5cbd11,_0x40ee7e[_0x8488('0x40')]);return db[_0x8488('0x3a')]['find'](_0x5cbd11)[_0x8488('0x21')](handleEntityNotFound(_0x34b11b,null))[_0x8488('0x21')](respondWithResult(_0x34b11b,null))[_0x8488('0x3e')](handleError(_0x34b11b,null));};exports[_0x8488('0x41')]=function(_0x52042c,_0x1f0516){return db[_0x8488('0x3a')][_0x8488('0x41')]()[_0x8488('0x21')](respondWithResult(_0x1f0516,null))[_0x8488('0x3e')](handleError(_0x1f0516,null));};exports[_0x8488('0x42')]=function(_0x886a9e,_0x299d8e){if(_0x886a9e[_0x8488('0x43')][_0x8488('0x44')]){delete _0x886a9e[_0x8488('0x43')][_0x8488('0x44')];}return db[_0x8488('0x3a')]['find']({'where':{'uniqueid':_0x886a9e['params']['id']}})[_0x8488('0x21')](handleEntityNotFound(_0x299d8e,null))[_0x8488('0x21')](saveUpdates(_0x886a9e[_0x8488('0x43')],null))[_0x8488('0x21')](respondWithResult(_0x299d8e,null))[_0x8488('0x3e')](handleError(_0x299d8e,null));};exports[_0x8488('0x45')]=function(_0x25f2dc,_0x27dfd2,_0x24fa20){return db['CmHopperFinal'][_0x8488('0x46')]({'raw':![],'where':{'VoiceQueueId':_0x25f2dc[_0x8488('0x3f')]['id']},'attributes':[[db['sequelize']['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x200,\x201,\x20null'))),_0x8488('0x4a')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x4b')))),_0x8488('0x4c')],[db['sequelize']['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db['sequelize'][_0x8488('0x49')]('`state`\x20=\x205,\x201,\x20null'))),_0x8488('0x4d')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x208,\x201,\x20null'))),_0x8488('0x4e')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')]['literal'](_0x8488('0x4f')))),'dropContacts'],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x50')))),_0x8488('0x51')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')]['literal'](_0x8488('0x52')))),_0x8488('0x53')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')]['literal'](_0x8488('0x54')))),'answeringMachine']]})[_0x8488('0x21')](handleEntityNotFound(_0x27dfd2,null))[_0x8488('0x21')](respondWithResult(_0x27dfd2,null))[_0x8488('0x3e')](handleError(_0x27dfd2,null));};exports[_0x8488('0x55')]=function(_0x1971f3,_0x24ba2d,_0x4facfb){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x1971f3[_0x8488('0x3f')]['id']},'attributes':[[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x56')))),_0x8488('0x4a')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x4b')))),'noAnswerContacts'],[db['sequelize']['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x205,\x201,\x20null'))),'busyContacts'],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db['sequelize'][_0x8488('0x49')](_0x8488('0x57')))),_0x8488('0x4e')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x8488('0x58')],[db[_0x8488('0x48')]['fn']('COUNT',db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x50')))),_0x8488('0x51')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x2022,\x201,\x20null'))),'reCallContacts'],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db['sequelize'][_0x8488('0x49')](_0x8488('0x54')))),'answeringMachine']]})[_0x8488('0x21')](handleEntityNotFound(_0x24ba2d,null))['then'](respondWithResult(_0x24ba2d,null))[_0x8488('0x3e')](handleError(_0x24ba2d,null));};exports[_0x8488('0x59')]=function(_0x44a50b,_0x5815cb,_0xbee86e){return db[_0x8488('0x5a')]['find']({'where':{'id':_0x44a50b['params']['id']}})[_0x8488('0x21')](handleEntityNotFound(_0x5815cb,null))[_0x8488('0x21')](function(_0xfedfd2){var _0x3ab1b6;if(_0xfedfd2){_0x3ab1b6=squel[_0x8488('0x5b')]()[_0x8488('0x5c')](_0x8488('0x5d'))[_0x8488('0x5e')]([_0x8488('0x5f'),_0x8488('0x60'),'ContactId',_0x8488('0x61'),'VoiceQueueId',_0x8488('0x62'),_0x8488('0x63')],squel[_0x8488('0x64')]()[_0x8488('0x65')]('ANY_VALUE(calleridnum)',_0x8488('0x5f'))[_0x8488('0x65')]('NOW()',_0x8488('0x60'))['field'](_0x8488('0x66'),_0x8488('0x67'))[_0x8488('0x65')](_0x8488('0x68'),_0x8488('0x61'))[_0x8488('0x65')](_0x8488('0x69'),_0x8488('0x6a'))['field'](_0x8488('0x6b'),'createdAt')['field'](_0x8488('0x6b'),_0x8488('0x63'))[_0x8488('0x6c')]('cm_hopper_final')['where'](_0x8488('0x6d'),_0x44a50b[_0x8488('0x3f')]['id']['toString']())[_0x8488('0x35')](_0x8488('0x6e'),_0x44a50b[_0x8488('0x43')][_0x8488('0x6f')][_0x8488('0x70')]())[_0x8488('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x8488('0x35')](_0x8488('0x71'),squel[_0x8488('0x64')]()['field'](_0x8488('0x5f'))[_0x8488('0x6c')](_0x8488('0x5d'))['where'](_0x8488('0x6d'),_0x44a50b[_0x8488('0x3f')]['id']['toString']()))['where'](_0x8488('0x71'),squel[_0x8488('0x64')]()['field'](_0x8488('0x72'))[_0x8488('0x6c')]('cm_hopper_final')['where'](_0x8488('0x6d'),_0x44a50b['params']['id'][_0x8488('0x70')]())[_0x8488('0x35')](_0x8488('0x73')))[_0x8488('0x74')]('ContactId'))[_0x8488('0x70')]();return db['sequelize'][_0x8488('0x2c')](_0x3ab1b6);}return[];})['then'](respondWithResult(_0x5815cb,null))[_0x8488('0x3e')](handleError(_0x5815cb,null));};exports[_0x8488('0x75')]=function(_0x267401,_0x1e635a,_0x31ab35){return db[_0x8488('0x76')][_0x8488('0x77')]({'where':{'id':_0x267401[_0x8488('0x3f')]['id']}})[_0x8488('0x21')](handleEntityNotFound(_0x1e635a,null))[_0x8488('0x21')](function(_0xce1d1a){var _0xc9c221;if(_0xce1d1a){_0xc9c221=squel[_0x8488('0x5b')]()[_0x8488('0x5c')]('cm_hopper')[_0x8488('0x5e')]([_0x8488('0x5f'),'scheduledAt',_0x8488('0x67'),_0x8488('0x61'),_0x8488('0x78'),_0x8488('0x62'),_0x8488('0x63')],squel[_0x8488('0x64')]()[_0x8488('0x65')](_0x8488('0x79'),_0x8488('0x5f'))[_0x8488('0x65')](_0x8488('0x6b'),'scheduledAt')[_0x8488('0x65')](_0x8488('0x66'),'ContactId')[_0x8488('0x65')](_0x8488('0x68'),_0x8488('0x61'))[_0x8488('0x65')](_0x8488('0x7a'),'CampaignId')['field'](_0x8488('0x6b'),_0x8488('0x62'))[_0x8488('0x65')](_0x8488('0x6b'),_0x8488('0x63'))[_0x8488('0x6c')](_0x8488('0x7b'))[_0x8488('0x35')](_0x8488('0x7c'),_0x267401[_0x8488('0x3f')]['id'][_0x8488('0x70')]())[_0x8488('0x35')](_0x8488('0x6e'),_0x267401[_0x8488('0x43')][_0x8488('0x6f')]['toString']())[_0x8488('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0x8488('0x71'),squel[_0x8488('0x64')]()[_0x8488('0x65')](_0x8488('0x5f'))[_0x8488('0x6c')](_0x8488('0x5d'))[_0x8488('0x35')](_0x8488('0x7c'),_0x267401[_0x8488('0x3f')]['id'][_0x8488('0x70')]()))['where'](_0x8488('0x71'),squel[_0x8488('0x64')]()[_0x8488('0x65')](_0x8488('0x72'))[_0x8488('0x6c')](_0x8488('0x7b'))['where'](_0x8488('0x7c'),_0x267401['params']['id'][_0x8488('0x70')]())[_0x8488('0x35')]('state\x20=\x204'))['group'](_0x8488('0x67')))[_0x8488('0x70')]();return db[_0x8488('0x48')][_0x8488('0x2c')](_0xc9c221);}return[];})[_0x8488('0x21')](respondWithResult(_0x1e635a,null))['catch'](handleError(_0x1e635a,null));};exports[_0x8488('0x7d')]=function(_0x19c5c6,_0x50f773,_0x52c750){return db[_0x8488('0x7e')][_0x8488('0x7f')]({'where':{'VoiceQueueId':_0x19c5c6[_0x8488('0x43')]['VoiceQueueId'],'CampaignId':_0x19c5c6['body'][_0x8488('0x78')],'ContactId':_0x19c5c6[_0x8488('0x43')][_0x8488('0x67')]}})['then'](handleEntityNotFound(_0x50f773,null))[_0x8488('0x21')](function(_0x1e4e51){if(_0x1e4e51){return _0x1e4e51;}return null;})[_0x8488('0x21')](respondWithResult(_0x50f773,null))[_0x8488('0x3e')](handleError(_0x50f773,null));};
\ No newline at end of file
+var _0xd8fb=['updatedAt','select','field','ANY_VALUE(calleridnum)','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','NOW()','from','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','toString','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state\x20=\x204','group','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','Content-Range','apply','reject','save','update','then','error','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','show','params','keys','include','options','find','describe','body','uniqueid','COUNT','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','reCallContacts','`state`\x20=\x2019,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt'];(function(_0x4096ca,_0x9536d4){var _0x5e435d=function(_0x522d5d){while(--_0x522d5d){_0x4096ca['push'](_0x4096ca['shift']());}};_0x5e435d(++_0x9536d4);}(_0xd8fb,0x99));var _0xbd8f=function(_0x1520b5,_0x20d30c){_0x1520b5=_0x1520b5-0x0;var _0x4dc406=_0xd8fb[_0x1520b5];return _0x4dc406;};'use strict';var emlformat=require(_0xbd8f('0x0'));var rimraf=require(_0xbd8f('0x1'));var zipdir=require(_0xbd8f('0x2'));var jsonpatch=require(_0xbd8f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbd8f('0x4'));var util=require(_0xbd8f('0x5'));var path=require('path');var sox=require(_0xbd8f('0x6'));var csv=require(_0xbd8f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbd8f('0x8'));var _=require('lodash');var squel=require(_0xbd8f('0x9'));var crypto=require('crypto');var jsforce=require(_0xbd8f('0xa'));var deskjs=require(_0xbd8f('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xbd8f('0xc'));var Redis=require(_0xbd8f('0xd'));var authService=require(_0xbd8f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xbd8f('0xf'));var hardwareService=require(_0xbd8f('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xbd8f('0x11'));var config=require(_0xbd8f('0x12'));var licenseUtil=require(_0xbd8f('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x230988,_0x159f09){_0x159f09=_0x159f09||0xcc;return function(_0x39be16){if(_0x39be16){return _0x230988[_0xbd8f('0x14')](_0x159f09);}return _0x230988[_0xbd8f('0x15')](_0x159f09)[_0xbd8f('0x16')]();};}function respondWithResult(_0x37d4d5,_0x29ffe8){_0x29ffe8=_0x29ffe8||0xc8;return function(_0x14606c){if(_0x14606c){return _0x37d4d5['status'](_0x29ffe8)[_0xbd8f('0x17')](_0x14606c);}};}function respondWithFilteredResult(_0x829fb2,_0xa57e91){return function(_0x10d72e){if(_0x10d72e){var _0x4da96f=typeof _0xa57e91[_0xbd8f('0x18')]===_0xbd8f('0x19')&&typeof _0xa57e91['limit']===_0xbd8f('0x19');var _0xf5e7a=_0x10d72e['count'];var _0x4435b9=_0x4da96f?0x0:_0xa57e91[_0xbd8f('0x18')];var _0x47d317=_0x4da96f?_0x10d72e['count']:_0xa57e91[_0xbd8f('0x18')]+_0xa57e91['limit'];var _0x5705c5;if(_0x47d317>=_0xf5e7a){_0x47d317=_0xf5e7a;_0x5705c5=0xc8;}else{_0x5705c5=0xce;}_0x829fb2[_0xbd8f('0x15')](_0x5705c5);return _0x829fb2['set'](_0xbd8f('0x1a'),_0x4435b9+'-'+_0x47d317+'/'+_0xf5e7a)[_0xbd8f('0x17')](_0x10d72e);}return null;};}function patchUpdates(_0xb47c8e){return function(_0x897f25){try{jsonpatch[_0xbd8f('0x1b')](_0x897f25,_0xb47c8e,!![]);}catch(_0x20cab7){return BPromise[_0xbd8f('0x1c')](_0x20cab7);}return _0x897f25[_0xbd8f('0x1d')]();};}function saveUpdates(_0x2fbe3b,_0x775acc){return function(_0xfe4048){if(_0xfe4048){return _0xfe4048[_0xbd8f('0x1e')](_0x2fbe3b)[_0xbd8f('0x1f')](function(_0x15c4a9){return _0x15c4a9;});}return null;};}function removeEntity(_0x320ede,_0xd11ae){return function(_0x395b1b){if(_0x395b1b){return _0x395b1b['destroy']()[_0xbd8f('0x1f')](function(){_0x320ede[_0xbd8f('0x15')](0xcc)[_0xbd8f('0x16')]();});}};}function handleEntityNotFound(_0x2f3df7,_0xa88414){return function(_0x2257fd){if(!_0x2257fd){_0x2f3df7[_0xbd8f('0x14')](0x194);}return _0x2257fd;};}function handleError(_0x264e62,_0x4ea554){_0x4ea554=_0x4ea554||0x1f4;return function(_0x40cb43){logger[_0xbd8f('0x20')](_0x40cb43['stack']);if(_0x40cb43[_0xbd8f('0x21')]){delete _0x40cb43['name'];}_0x264e62[_0xbd8f('0x15')](_0x4ea554)[_0xbd8f('0x22')](_0x40cb43);};}exports[_0xbd8f('0x23')]=function(_0x202126,_0x2aefa2){var _0x247b07={},_0x4c4431={},_0x166de7={'count':0x0,'rows':[]};var _0x14f3cb=_[_0xbd8f('0x24')](db[_0xbd8f('0x25')][_0xbd8f('0x26')],function(_0x2ac26f){return{'name':_0x2ac26f[_0xbd8f('0x27')],'type':_0x2ac26f['type'][_0xbd8f('0x28')]};});_0x4c4431[_0xbd8f('0x29')]=_[_0xbd8f('0x24')](_0x14f3cb,_0xbd8f('0x21'));_0x4c4431['query']=_['keys'](_0x202126[_0xbd8f('0x2a')]);_0x4c4431[_0xbd8f('0x2b')]=_[_0xbd8f('0x2c')](_0x4c4431[_0xbd8f('0x29')],_0x4c4431['query']);_0x247b07[_0xbd8f('0x2d')]=_[_0xbd8f('0x2c')](_0x4c4431[_0xbd8f('0x29')],qs[_0xbd8f('0x2e')](_0x202126[_0xbd8f('0x2a')]['fields']));_0x247b07[_0xbd8f('0x2d')]=_0x247b07[_0xbd8f('0x2d')][_0xbd8f('0x2f')]?_0x247b07[_0xbd8f('0x2d')]:_0x4c4431[_0xbd8f('0x29')];if(!_0x202126['query'][_0xbd8f('0x30')]('nolimit')){_0x247b07[_0xbd8f('0x31')]=qs[_0xbd8f('0x31')](_0x202126[_0xbd8f('0x2a')][_0xbd8f('0x31')]);_0x247b07[_0xbd8f('0x18')]=qs[_0xbd8f('0x18')](_0x202126['query']['offset']);}_0x247b07['order']=qs[_0xbd8f('0x32')](_0x202126[_0xbd8f('0x2a')][_0xbd8f('0x32')]);_0x247b07[_0xbd8f('0x33')]=qs[_0xbd8f('0x2b')](_[_0xbd8f('0x34')](_0x202126[_0xbd8f('0x2a')],_0x4c4431[_0xbd8f('0x2b')]),_0x14f3cb);if(_0x202126[_0xbd8f('0x2a')][_0xbd8f('0x35')]){_0x247b07[_0xbd8f('0x33')]=_[_0xbd8f('0x36')](_0x247b07[_0xbd8f('0x33')],{'$or':_[_0xbd8f('0x24')](_0x14f3cb,function(_0x391d45){if(_0x391d45['type']!==_0xbd8f('0x37')){var _0x4181e0={};_0x4181e0[_0x391d45['name']]={'$like':'%'+_0x202126[_0xbd8f('0x2a')][_0xbd8f('0x35')]+'%'};return _0x4181e0;}})});}_0x247b07=_[_0xbd8f('0x36')]({},_0x247b07,_0x202126['options']);var _0x21da54={'where':_0x247b07['where']};return db[_0xbd8f('0x25')][_0xbd8f('0x38')](_0x21da54)[_0xbd8f('0x1f')](function(_0x4f2ebc){_0x166de7[_0xbd8f('0x38')]=_0x4f2ebc;if(_0x202126[_0xbd8f('0x2a')][_0xbd8f('0x39')]){_0x247b07['include']=[{'all':!![]}];}return db[_0xbd8f('0x25')][_0xbd8f('0x3a')](_0x247b07);})[_0xbd8f('0x1f')](function(_0x351027){_0x166de7[_0xbd8f('0x3b')]=_0x351027;return _0x166de7;})[_0xbd8f('0x1f')](respondWithFilteredResult(_0x2aefa2,_0x247b07))[_0xbd8f('0x3c')](handleError(_0x2aefa2,null));};exports[_0xbd8f('0x3d')]=function(_0x14b768,_0x5e1e77){var _0x52c62b={'raw':!![],'where':{'id':_0x14b768[_0xbd8f('0x3e')]['id']}},_0x2907a3={};_0x2907a3[_0xbd8f('0x29')]=_[_0xbd8f('0x3f')](db['CmHopperFinal'][_0xbd8f('0x26')]);_0x2907a3[_0xbd8f('0x2a')]=_[_0xbd8f('0x3f')](_0x14b768[_0xbd8f('0x2a')]);_0x2907a3[_0xbd8f('0x2b')]=_['intersection'](_0x2907a3['model'],_0x2907a3[_0xbd8f('0x2a')]);_0x52c62b['attributes']=_[_0xbd8f('0x2c')](_0x2907a3[_0xbd8f('0x29')],qs[_0xbd8f('0x2e')](_0x14b768[_0xbd8f('0x2a')][_0xbd8f('0x2e')]));_0x52c62b[_0xbd8f('0x2d')]=_0x52c62b[_0xbd8f('0x2d')][_0xbd8f('0x2f')]?_0x52c62b['attributes']:_0x2907a3[_0xbd8f('0x29')];if(_0x14b768[_0xbd8f('0x2a')][_0xbd8f('0x39')]){_0x52c62b[_0xbd8f('0x40')]=[{'all':!![]}];}_0x52c62b=_[_0xbd8f('0x36')]({},_0x52c62b,_0x14b768[_0xbd8f('0x41')]);return db[_0xbd8f('0x25')][_0xbd8f('0x42')](_0x52c62b)['then'](handleEntityNotFound(_0x5e1e77,null))[_0xbd8f('0x1f')](respondWithResult(_0x5e1e77,null))[_0xbd8f('0x3c')](handleError(_0x5e1e77,null));};exports[_0xbd8f('0x43')]=function(_0x1f12dd,_0x2fdbd0){return db[_0xbd8f('0x25')][_0xbd8f('0x43')]()[_0xbd8f('0x1f')](respondWithResult(_0x2fdbd0,null))[_0xbd8f('0x3c')](handleError(_0x2fdbd0,null));};exports[_0xbd8f('0x1e')]=function(_0x406741,_0x255c59){if(_0x406741[_0xbd8f('0x44')][_0xbd8f('0x45')]){delete _0x406741[_0xbd8f('0x44')][_0xbd8f('0x45')];}return db[_0xbd8f('0x25')][_0xbd8f('0x42')]({'where':{'uniqueid':_0x406741[_0xbd8f('0x3e')]['id']}})['then'](handleEntityNotFound(_0x255c59,null))[_0xbd8f('0x1f')](saveUpdates(_0x406741[_0xbd8f('0x44')],null))[_0xbd8f('0x1f')](respondWithResult(_0x255c59,null))[_0xbd8f('0x3c')](handleError(_0x255c59,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x1b38ad,_0x5a33c5,_0x9bfe93){return db[_0xbd8f('0x25')][_0xbd8f('0x3a')]({'raw':![],'where':{'VoiceQueueId':_0x1b38ad[_0xbd8f('0x3e')]['id']},'attributes':[[db['sequelize']['fn'](_0xbd8f('0x46'),db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x49')))),_0xbd8f('0x4a')],[db['sequelize']['fn'](_0xbd8f('0x46'),db['sequelize']['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x4b')))),_0xbd8f('0x4c')],[db[_0xbd8f('0x47')]['fn'](_0xbd8f('0x46'),db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')]('`state`\x20=\x205,\x201,\x20null'))),_0xbd8f('0x4d')],[db['sequelize']['fn'](_0xbd8f('0x46'),db[_0xbd8f('0x47')]['fn']('IF',db['sequelize'][_0xbd8f('0x48')]('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db['sequelize']['fn']('COUNT',db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x4e')))),_0xbd8f('0x4f')],[db['sequelize']['fn']('COUNT',db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x50')))),_0xbd8f('0x51')],[db['sequelize']['fn'](_0xbd8f('0x46'),db['sequelize']['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x52')))),'reCallContacts'],[db[_0xbd8f('0x47')]['fn'](_0xbd8f('0x46'),db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')]['literal']('`state`\x20=\x2019,\x201,\x20null'))),_0xbd8f('0x53')]]})['then'](handleEntityNotFound(_0x5a33c5,null))[_0xbd8f('0x1f')](respondWithResult(_0x5a33c5,null))[_0xbd8f('0x3c')](handleError(_0x5a33c5,null));};exports[_0xbd8f('0x54')]=function(_0x93452d,_0x4a86a9,_0x5ea275){return db[_0xbd8f('0x25')][_0xbd8f('0x3a')]({'raw':![],'where':{'CampaignId':_0x93452d[_0xbd8f('0x3e')]['id']},'attributes':[[db[_0xbd8f('0x47')]['fn'](_0xbd8f('0x46'),db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x49')))),_0xbd8f('0x4a')],[db[_0xbd8f('0x47')]['fn']('COUNT',db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x4b')))),_0xbd8f('0x4c')],[db[_0xbd8f('0x47')]['fn']('COUNT',db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')]['literal']('`state`\x20=\x205,\x201,\x20null'))),_0xbd8f('0x4d')],[db[_0xbd8f('0x47')]['fn'](_0xbd8f('0x46'),db['sequelize']['fn']('IF',db['sequelize'][_0xbd8f('0x48')]('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xbd8f('0x47')]['literal'](_0xbd8f('0x4e')))),_0xbd8f('0x4f')],[db['sequelize']['fn'](_0xbd8f('0x46'),db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x50')))),'abandonedContacts'],[db['sequelize']['fn'](_0xbd8f('0x46'),db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')][_0xbd8f('0x48')](_0xbd8f('0x52')))),_0xbd8f('0x55')],[db['sequelize']['fn']('COUNT',db[_0xbd8f('0x47')]['fn']('IF',db[_0xbd8f('0x47')]['literal'](_0xbd8f('0x56')))),_0xbd8f('0x53')]]})['then'](handleEntityNotFound(_0x4a86a9,null))[_0xbd8f('0x1f')](respondWithResult(_0x4a86a9,null))[_0xbd8f('0x3c')](handleError(_0x4a86a9,null));};exports[_0xbd8f('0x57')]=function(_0x5a8c8f,_0x5c04d9,_0x2407e7){return db[_0xbd8f('0x58')][_0xbd8f('0x42')]({'where':{'id':_0x5a8c8f[_0xbd8f('0x3e')]['id']}})[_0xbd8f('0x1f')](handleEntityNotFound(_0x5c04d9,null))['then'](function(_0x200718){var _0x27ec14;if(_0x200718){_0x27ec14=squel[_0xbd8f('0x59')]()[_0xbd8f('0x5a')](_0xbd8f('0x5b'))[_0xbd8f('0x5c')]([_0xbd8f('0x5d'),_0xbd8f('0x5e'),_0xbd8f('0x5f'),_0xbd8f('0x60'),_0xbd8f('0x61'),_0xbd8f('0x62'),_0xbd8f('0x63')],squel[_0xbd8f('0x64')]()[_0xbd8f('0x65')](_0xbd8f('0x66'),_0xbd8f('0x5d'))[_0xbd8f('0x65')]('NOW()',_0xbd8f('0x5e'))[_0xbd8f('0x65')](_0xbd8f('0x67'),_0xbd8f('0x5f'))[_0xbd8f('0x65')](_0xbd8f('0x68'),'ListId')['field'](_0xbd8f('0x69'),_0xbd8f('0x61'))['field'](_0xbd8f('0x6a'),'createdAt')[_0xbd8f('0x65')](_0xbd8f('0x6a'),_0xbd8f('0x63'))[_0xbd8f('0x6b')]('cm_hopper_final')[_0xbd8f('0x33')](_0xbd8f('0x6c'),_0x5a8c8f[_0xbd8f('0x3e')]['id']['toString']())[_0xbd8f('0x33')](_0xbd8f('0x6d'),_0x5a8c8f[_0xbd8f('0x44')][_0xbd8f('0x6e')]['toString']())[_0xbd8f('0x33')](_0xbd8f('0x6f'))[_0xbd8f('0x33')](_0xbd8f('0x70'),squel[_0xbd8f('0x64')]()[_0xbd8f('0x65')](_0xbd8f('0x5d'))[_0xbd8f('0x6b')]('cm_hopper')[_0xbd8f('0x33')]('VoiceQueueId\x20=\x20?',_0x5a8c8f[_0xbd8f('0x3e')]['id']['toString']()))[_0xbd8f('0x33')](_0xbd8f('0x70'),squel['select']()[_0xbd8f('0x65')](_0xbd8f('0x71'))[_0xbd8f('0x6b')](_0xbd8f('0x72'))['where'](_0xbd8f('0x6c'),_0x5a8c8f[_0xbd8f('0x3e')]['id'][_0xbd8f('0x73')]())[_0xbd8f('0x33')]('state\x20=\x204'))['group'](_0xbd8f('0x5f')))[_0xbd8f('0x73')]();return db[_0xbd8f('0x47')][_0xbd8f('0x2a')](_0x27ec14);}return[];})[_0xbd8f('0x1f')](respondWithResult(_0x5c04d9,null))['catch'](handleError(_0x5c04d9,null));};exports[_0xbd8f('0x74')]=function(_0x13314f,_0x328bd6,_0x11a05a){return db[_0xbd8f('0x75')]['find']({'where':{'id':_0x13314f['params']['id']}})['then'](handleEntityNotFound(_0x328bd6,null))[_0xbd8f('0x1f')](function(_0x5df0e1){var _0x535869;if(_0x5df0e1){_0x535869=squel['insert']()[_0xbd8f('0x5a')](_0xbd8f('0x5b'))[_0xbd8f('0x5c')]([_0xbd8f('0x5d'),_0xbd8f('0x5e'),_0xbd8f('0x5f'),_0xbd8f('0x60'),_0xbd8f('0x76'),'createdAt',_0xbd8f('0x63')],squel[_0xbd8f('0x64')]()[_0xbd8f('0x65')]('ANY_VALUE(calleridnum)',_0xbd8f('0x5d'))[_0xbd8f('0x65')](_0xbd8f('0x6a'),_0xbd8f('0x5e'))[_0xbd8f('0x65')](_0xbd8f('0x67'),_0xbd8f('0x5f'))[_0xbd8f('0x65')](_0xbd8f('0x68'),_0xbd8f('0x60'))['field'](_0xbd8f('0x77'),_0xbd8f('0x76'))[_0xbd8f('0x65')]('NOW()',_0xbd8f('0x62'))['field'](_0xbd8f('0x6a'),_0xbd8f('0x63'))[_0xbd8f('0x6b')](_0xbd8f('0x72'))[_0xbd8f('0x33')]('CampaignId\x20=\x20?',_0x13314f[_0xbd8f('0x3e')]['id'][_0xbd8f('0x73')]())[_0xbd8f('0x33')](_0xbd8f('0x6d'),_0x13314f[_0xbd8f('0x44')][_0xbd8f('0x6e')]['toString']())[_0xbd8f('0x33')](_0xbd8f('0x6f'))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xbd8f('0x64')]()['field']('phone')['from'](_0xbd8f('0x5b'))[_0xbd8f('0x33')](_0xbd8f('0x78'),_0x13314f[_0xbd8f('0x3e')]['id']['toString']()))[_0xbd8f('0x33')](_0xbd8f('0x70'),squel['select']()['field'](_0xbd8f('0x71'))['from'](_0xbd8f('0x72'))['where']('CampaignId\x20=\x20?',_0x13314f[_0xbd8f('0x3e')]['id'][_0xbd8f('0x73')]())[_0xbd8f('0x33')](_0xbd8f('0x79')))[_0xbd8f('0x7a')]('ContactId'))[_0xbd8f('0x73')]();return db[_0xbd8f('0x47')][_0xbd8f('0x2a')](_0x535869);}return[];})['then'](respondWithResult(_0x328bd6,null))[_0xbd8f('0x3c')](handleError(_0x328bd6,null));};exports[_0xbd8f('0x7b')]=function(_0x38d1a6,_0x31b92c,_0x11fb11){return db[_0xbd8f('0x7c')][_0xbd8f('0x7d')]({'where':{'VoiceQueueId':_0x38d1a6[_0xbd8f('0x44')][_0xbd8f('0x61')],'CampaignId':_0x38d1a6[_0xbd8f('0x44')]['CampaignId'],'ContactId':_0x38d1a6['body']['ContactId']}})['then'](handleEntityNotFound(_0x31b92c,null))[_0xbd8f('0x1f')](function(_0x3ff503){if(_0x3ff503){return _0x3ff503;}return null;})['then'](respondWithResult(_0x31b92c,null))['catch'](handleError(_0x31b92c,null));};
\ No newline at end of file
index 45cd971..8aeccca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6d2=['define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperFinal.attributes','exports'];(function(_0x5db420,_0xf3e4bb){var _0x27a72a=function(_0x366c91){while(--_0x366c91){_0x5db420['push'](_0x5db420['shift']());}};_0x27a72a(++_0xf3e4bb);}(_0xa6d2,0xf5));var _0x2a6d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa6d2[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x2a6d('0x0'));var util=require(_0x2a6d('0x1'));var logger=require('../../config/logger')(_0x2a6d('0x2'));var moment=require(_0x2a6d('0x3'));var BPromise=require(_0x2a6d('0x4'));var rp=require(_0x2a6d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2a6d('0x6'));var config=require(_0x2a6d('0x7'));var attributes=require(_0x2a6d('0x8'));module[_0x2a6d('0x9')]=function(_0x3b41ec,_0x39242a){return _0x3b41ec[_0x2a6d('0xa')](_0x2a6d('0xb'),attributes,{'tableName':_0x2a6d('0xc'),'paranoid':![],'indexes':[{'name':_0x2a6d('0xd'),'fields':['calleridnum']},{'name':'uniqueid','fields':[_0x2a6d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8040=['../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','api','request-promise','path','rimraf'];(function(_0x4cdbfb,_0x431bdc){var _0x3a2c6f=function(_0x1e89a8){while(--_0x1e89a8){_0x4cdbfb['push'](_0x4cdbfb['shift']());}};_0x3a2c6f(++_0x431bdc);}(_0x8040,0x78));var _0x0804=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x8040[_0x47e7cb];return _0x2a8874;};'use strict';var _=require(_0x0804('0x0'));var util=require(_0x0804('0x1'));var logger=require('../../config/logger')(_0x0804('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0804('0x3'));var fs=require('fs');var path=require(_0x0804('0x4'));var rimraf=require(_0x0804('0x5'));var config=require(_0x0804('0x6'));var attributes=require(_0x0804('0x7'));module[_0x0804('0x8')]=function(_0x564c0f,_0x2db5ca){return _0x564c0f[_0x0804('0x9')](_0x0804('0xa'),attributes,{'tableName':_0x0804('0xb'),'paranoid':![],'indexes':[{'name':_0x0804('0xc'),'fields':[_0x0804('0xc')]},{'name':'uniqueid','fields':[_0x0804('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 05f038d..c0b0f68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x380030,_0x3e3dbb){var _0x27428e=function(_0x1ee57e){while(--_0x1ee57e){_0x380030['push'](_0x380030['shift']());}};_0x27428e(++_0x3e3dbb);}(_0x7a54,0x106));var _0x47a5=function(_0x3b4bb0,_0x9afb97){_0x3b4bb0=_0x3b4bb0-0x0;var _0x367e78=_0x7a54[_0x3b4bb0];return _0x367e78;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x1dd120,_0xc462b1){var _0x58060c=function(_0x5744e9){while(--_0x5744e9){_0x1dd120['push'](_0x1dd120['shift']());}};_0x58060c(++_0xc462b1);}(_0xb10b,0x12a));var _0xbb10=function(_0x346392,_0x32b724){_0x346392=_0x346392-0x0;var _0xd76262=_0xb10b[_0x346392];return _0xd76262;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index b74b6bc..0c9e883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x234b=['/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','/:id','update','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','describe','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x234b,0x8a));var _0xb234=function(_0x5549fe,_0x1dd98c){_0x5549fe=_0x5549fe-0x0;var _0x115126=_0x234b[_0x5549fe];return _0x115126;};'use strict';var multer=require(_0xb234('0x0'));var util=require(_0xb234('0x1'));var path=require(_0xb234('0x2'));var timeout=require(_0xb234('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb234('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xb234('0x5'));var controller=require(_0xb234('0x6'));router[_0xb234('0x7')]('/',auth[_0xb234('0x8')](),controller['index']);router['get']('/describe',auth[_0xb234('0x8')](),controller[_0xb234('0x9')]);router[_0xb234('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0xb234('0xa'),auth[_0xb234('0x8')](),controller[_0xb234('0xb')]);router['get'](_0xb234('0xc'),auth[_0xb234('0x8')](),controller['countContactsIvrCampaignHopperFinal']);router['post'](_0xb234('0xd'),auth['isAuthenticated'](),controller[_0xb234('0xe')]);router[_0xb234('0xf')](_0xb234('0x10'),auth[_0xb234('0x8')](),controller[_0xb234('0x11')]);router[_0xb234('0xf')]('/checkContactHopper',auth[_0xb234('0x8')](),controller[_0xb234('0x12')]);router[_0xb234('0x13')](_0xb234('0x14'),auth[_0xb234('0x8')](),controller[_0xb234('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd6bc=['path','connect-timeout','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','/voice/queue/countAttributes/:id','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','exports','multer','util'];(function(_0x1e4f2f,_0x35edfa){var _0xccea89=function(_0x164386){while(--_0x164386){_0x1e4f2f['push'](_0x1e4f2f['shift']());}};_0xccea89(++_0x35edfa);}(_0xd6bc,0x1a0));var _0xcd6b=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xd6bc[_0x1d24eb];return _0x1dc576;};'use strict';var multer=require(_0xcd6b('0x0'));var util=require(_0xcd6b('0x1'));var path=require(_0xcd6b('0x2'));var timeout=require(_0xcd6b('0x3'));var express=require(_0xcd6b('0x4'));var router=express[_0xcd6b('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcd6b('0x6'));var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router[_0xcd6b('0x7')]('/',auth[_0xcd6b('0x8')](),controller[_0xcd6b('0x9')]);router[_0xcd6b('0x7')](_0xcd6b('0xa'),auth[_0xcd6b('0x8')](),controller[_0xcd6b('0xb')]);router[_0xcd6b('0x7')](_0xcd6b('0xc'),auth['isAuthenticated'](),controller['show']);router['get'](_0xcd6b('0xd'),auth[_0xcd6b('0x8')](),controller['countContactsQueueCampaignHopperFinal']);router[_0xcd6b('0x7')]('/campaign/countAttributes/:id',auth[_0xcd6b('0x8')](),controller['countContactsIvrCampaignHopperFinal']);router[_0xcd6b('0xe')](_0xcd6b('0xf'),auth[_0xcd6b('0x8')](),controller[_0xcd6b('0x10')]);router['post']('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller[_0xcd6b('0x11')]);router[_0xcd6b('0xe')](_0xcd6b('0x12'),auth[_0xcd6b('0x8')](),controller['checkContactHopper']);router[_0xcd6b('0x13')](_0xcd6b('0xc'),auth['isAuthenticated'](),controller[_0xcd6b('0x14')]);module[_0xcd6b('0x15')]=router;
\ No newline at end of file
index ad885d7..a4b0c2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa3c=['DATE','STRING','BOOLEAN','sequelize','INTEGER'];(function(_0x6ae570,_0x20bc83){var _0x2983df=function(_0x7c331e){while(--_0x7c331e){_0x6ae570['push'](_0x6ae570['shift']());}};_0x2983df(++_0x20bc83);}(_0xfa3c,0x1b6));var _0xcfa3=function(_0x2fff52,_0x1580ac){_0x2fff52=_0x2fff52-0x0;var _0x4fef52=_0xfa3c[_0x2fff52];return _0x4fef52;};'use strict';var Sequelize=require(_0xcfa3('0x0'));module['exports']={'state':{'type':Sequelize[_0xcfa3('0x1')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xcfa3('0x2')]},'countbusyretry':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xcfa3('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xcfa3('0x3')]},'originatecalleridname':{'type':Sequelize[_0xcfa3('0x3')]},'calleridnum':{'type':Sequelize[_0xcfa3('0x3')]},'calleridname':{'type':Sequelize[_0xcfa3('0x3')]},'starttime':{'type':Sequelize[_0xcfa3('0x2')]},'responsetime':{'type':Sequelize[_0xcfa3('0x2')]},'answertime':{'type':Sequelize[_0xcfa3('0x2')]},'droptime':{'type':Sequelize[_0xcfa3('0x2')]},'endtime':{'type':Sequelize[_0xcfa3('0x2')]},'ringtime':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xcfa3('0x3')]},'campaign':{'type':Sequelize[_0xcfa3('0x3')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xcfa3('0x3')]},'amd':{'type':Sequelize[_0xcfa3('0x4')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0xcfa3('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xcfa3('0x2')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xcfa3('0x2')]},'edited':{'type':Sequelize[_0xcfa3('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xcfa3('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1fd3=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x68676c,_0x3dfeaf){var _0x38b0fa=function(_0x587d7c){while(--_0x587d7c){_0x68676c['push'](_0x68676c['shift']());}};_0x38b0fa(++_0x3dfeaf);}(_0x1fd3,0x173));var _0x31fd=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x1fd3[_0x134c2e];return _0x2825db;};'use strict';var Sequelize=require(_0x31fd('0x0'));module[_0x31fd('0x1')]={'state':{'type':Sequelize[_0x31fd('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x31fd('0x3')]},'scheduledat':{'type':Sequelize[_0x31fd('0x4')]},'countbusyretry':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x31fd('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x31fd('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x31fd('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x31fd('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x31fd('0x4')]},'endtime':{'type':Sequelize[_0x31fd('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x31fd('0x3')]},'campaign':{'type':Sequelize[_0x31fd('0x3')]},'campaigntype':{'type':Sequelize[_0x31fd('0x3')]},'membername':{'type':Sequelize[_0x31fd('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x31fd('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x31fd('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x31fd('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x31fd('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x31fd('0x4')]},'recallme':{'type':Sequelize[_0x31fd('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x31fd('0x4')]},'edited':{'type':Sequelize[_0x31fd('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x31fd('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 0c7ca4b..43a26ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ad=['eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','update','then','error','stack','name','send','index','map','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','CmHopperHistory','includeAll','findAll','rows','catch','show','rawAttributes','include','options','find','create','body','describe','uniqueid','params'];(function(_0x2aac08,_0x4fc187){var _0x1426b2=function(_0x285344){while(--_0x285344){_0x2aac08['push'](_0x2aac08['shift']());}};_0x1426b2(++_0x4fc187);}(_0xf7ad,0x9c));var _0xdf7a=function(_0x56e157,_0x41c435){_0x56e157=_0x56e157-0x0;var _0x267e88=_0xf7ad[_0x56e157];return _0x267e88;};'use strict';var emlformat=require(_0xdf7a('0x0'));var rimraf=require(_0xdf7a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdf7a('0x2'));var rp=require(_0xdf7a('0x3'));var moment=require(_0xdf7a('0x4'));var BPromise=require(_0xdf7a('0x5'));var Mustache=require(_0xdf7a('0x6'));var util=require(_0xdf7a('0x7'));var path=require(_0xdf7a('0x8'));var sox=require(_0xdf7a('0x9'));var csv=require('to-csv');var ejs=require(_0xdf7a('0xa'));var fs=require('fs');var fs_extra=require(_0xdf7a('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xdf7a('0xc'));var jsforce=require(_0xdf7a('0xd'));var deskjs=require(_0xdf7a('0xe'));var toCsv=require(_0xdf7a('0xf'));var querystring=require(_0xdf7a('0x10'));var Papa=require(_0xdf7a('0x11'));var Redis=require(_0xdf7a('0x12'));var authService=require(_0xdf7a('0x13'));var qs=require(_0xdf7a('0x14'));var as=require(_0xdf7a('0x15'));var hardwareService=require(_0xdf7a('0x16'));var logger=require('../../config/logger')(_0xdf7a('0x17'));var utils=require(_0xdf7a('0x18'));var config=require(_0xdf7a('0x19'));var licenseUtil=require(_0xdf7a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2958b3,_0x574e19){_0x574e19=_0x574e19||0xcc;return function(_0x5cd6cb){if(_0x5cd6cb){return _0x2958b3[_0xdf7a('0x1b')](_0x574e19);}return _0x2958b3[_0xdf7a('0x1c')](_0x574e19)[_0xdf7a('0x1d')]();};}function respondWithResult(_0x5a7e65,_0x23e3b9){_0x23e3b9=_0x23e3b9||0xc8;return function(_0x15d971){if(_0x15d971){return _0x5a7e65[_0xdf7a('0x1c')](_0x23e3b9)[_0xdf7a('0x1e')](_0x15d971);}};}function respondWithFilteredResult(_0x141d55,_0x5b484b){return function(_0x110487){if(_0x110487){var _0x465f1a=typeof _0x5b484b['offset']===_0xdf7a('0x1f')&&typeof _0x5b484b[_0xdf7a('0x20')]===_0xdf7a('0x1f');var _0x1c7826=_0x110487[_0xdf7a('0x21')];var _0x168c5e=_0x465f1a?0x0:_0x5b484b[_0xdf7a('0x22')];var _0x287f2f=_0x465f1a?_0x110487[_0xdf7a('0x21')]:_0x5b484b[_0xdf7a('0x22')]+_0x5b484b[_0xdf7a('0x20')];var _0x2ec70d;if(_0x287f2f>=_0x1c7826){_0x287f2f=_0x1c7826;_0x2ec70d=0xc8;}else{_0x2ec70d=0xce;}_0x141d55[_0xdf7a('0x1c')](_0x2ec70d);return _0x141d55[_0xdf7a('0x23')]('Content-Range',_0x168c5e+'-'+_0x287f2f+'/'+_0x1c7826)['json'](_0x110487);}return null;};}function patchUpdates(_0x5e1fa0){return function(_0x32341b){try{jsonpatch[_0xdf7a('0x24')](_0x32341b,_0x5e1fa0,!![]);}catch(_0x545dbc){return BPromise[_0xdf7a('0x25')](_0x545dbc);}return _0x32341b['save']();};}function saveUpdates(_0x3eb6d4,_0x465768){return function(_0x4fe2c6){if(_0x4fe2c6){return _0x4fe2c6[_0xdf7a('0x26')](_0x3eb6d4)[_0xdf7a('0x27')](function(_0x551fa9){return _0x551fa9;});}return null;};}function removeEntity(_0x17a35a,_0x3dad18){return function(_0x3905e3){if(_0x3905e3){return _0x3905e3['destroy']()[_0xdf7a('0x27')](function(){_0x17a35a[_0xdf7a('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x373c25,_0x395d9f){return function(_0xaf31bf){if(!_0xaf31bf){_0x373c25['sendStatus'](0x194);}return _0xaf31bf;};}function handleError(_0x5e9353,_0x5e8a3a){_0x5e8a3a=_0x5e8a3a||0x1f4;return function(_0x3ab482){logger[_0xdf7a('0x28')](_0x3ab482[_0xdf7a('0x29')]);if(_0x3ab482[_0xdf7a('0x2a')]){delete _0x3ab482['name'];}_0x5e9353[_0xdf7a('0x1c')](_0x5e8a3a)[_0xdf7a('0x2b')](_0x3ab482);};}exports[_0xdf7a('0x2c')]=function(_0x2aa0a9,_0x1775af){var _0x123023={},_0x1d3a4e={},_0x20df00={'count':0x0,'rows':[]};var _0x53b6f2=_[_0xdf7a('0x2d')](db['CmHopperHistory']['rawAttributes'],function(_0x2a7b7d){return{'name':_0x2a7b7d[_0xdf7a('0x2e')],'type':_0x2a7b7d[_0xdf7a('0x2f')]['key']};});_0x1d3a4e[_0xdf7a('0x30')]=_['map'](_0x53b6f2,_0xdf7a('0x2a'));_0x1d3a4e[_0xdf7a('0x31')]=_[_0xdf7a('0x32')](_0x2aa0a9[_0xdf7a('0x31')]);_0x1d3a4e[_0xdf7a('0x33')]=_[_0xdf7a('0x34')](_0x1d3a4e[_0xdf7a('0x30')],_0x1d3a4e[_0xdf7a('0x31')]);_0x123023[_0xdf7a('0x35')]=_[_0xdf7a('0x34')](_0x1d3a4e[_0xdf7a('0x30')],qs[_0xdf7a('0x36')](_0x2aa0a9[_0xdf7a('0x31')]['fields']));_0x123023[_0xdf7a('0x35')]=_0x123023['attributes'][_0xdf7a('0x37')]?_0x123023[_0xdf7a('0x35')]:_0x1d3a4e[_0xdf7a('0x30')];if(!_0x2aa0a9[_0xdf7a('0x31')][_0xdf7a('0x38')]('nolimit')){_0x123023['limit']=qs['limit'](_0x2aa0a9['query']['limit']);_0x123023['offset']=qs[_0xdf7a('0x22')](_0x2aa0a9[_0xdf7a('0x31')][_0xdf7a('0x22')]);}_0x123023[_0xdf7a('0x39')]=qs[_0xdf7a('0x3a')](_0x2aa0a9[_0xdf7a('0x31')][_0xdf7a('0x3a')]);_0x123023['where']=qs[_0xdf7a('0x33')](_[_0xdf7a('0x3b')](_0x2aa0a9[_0xdf7a('0x31')],_0x1d3a4e[_0xdf7a('0x33')]),_0x53b6f2);if(_0x2aa0a9[_0xdf7a('0x31')][_0xdf7a('0x3c')]){_0x123023[_0xdf7a('0x3d')]=_['merge'](_0x123023[_0xdf7a('0x3d')],{'$or':_[_0xdf7a('0x2d')](_0x53b6f2,function(_0x151fca){if(_0x151fca[_0xdf7a('0x2f')]!=='VIRTUAL'){var _0x49c6ee={};_0x49c6ee[_0x151fca['name']]={'$like':'%'+_0x2aa0a9[_0xdf7a('0x31')][_0xdf7a('0x3c')]+'%'};return _0x49c6ee;}})});}_0x123023=_[_0xdf7a('0x3e')]({},_0x123023,_0x2aa0a9['options']);var _0x1caf82={'where':_0x123023[_0xdf7a('0x3d')]};return db[_0xdf7a('0x3f')][_0xdf7a('0x21')](_0x1caf82)['then'](function(_0x7c7441){_0x20df00[_0xdf7a('0x21')]=_0x7c7441;if(_0x2aa0a9[_0xdf7a('0x31')][_0xdf7a('0x40')]){_0x123023['include']=[{'all':!![]}];}return db[_0xdf7a('0x3f')][_0xdf7a('0x41')](_0x123023);})[_0xdf7a('0x27')](function(_0x5be1f5){_0x20df00[_0xdf7a('0x42')]=_0x5be1f5;return _0x20df00;})[_0xdf7a('0x27')](respondWithFilteredResult(_0x1775af,_0x123023))[_0xdf7a('0x43')](handleError(_0x1775af,null));};exports[_0xdf7a('0x44')]=function(_0x1e3770,_0x4e8e20){var _0x507fcc={'raw':!![],'where':{'id':_0x1e3770['params']['id']}},_0x48e6b7={};_0x48e6b7[_0xdf7a('0x30')]=_['keys'](db[_0xdf7a('0x3f')][_0xdf7a('0x45')]);_0x48e6b7[_0xdf7a('0x31')]=_[_0xdf7a('0x32')](_0x1e3770[_0xdf7a('0x31')]);_0x48e6b7[_0xdf7a('0x33')]=_['intersection'](_0x48e6b7[_0xdf7a('0x30')],_0x48e6b7[_0xdf7a('0x31')]);_0x507fcc[_0xdf7a('0x35')]=_[_0xdf7a('0x34')](_0x48e6b7[_0xdf7a('0x30')],qs[_0xdf7a('0x36')](_0x1e3770[_0xdf7a('0x31')][_0xdf7a('0x36')]));_0x507fcc[_0xdf7a('0x35')]=_0x507fcc['attributes'][_0xdf7a('0x37')]?_0x507fcc['attributes']:_0x48e6b7['model'];if(_0x1e3770[_0xdf7a('0x31')][_0xdf7a('0x40')]){_0x507fcc[_0xdf7a('0x46')]=[{'all':!![]}];}_0x507fcc=_[_0xdf7a('0x3e')]({},_0x507fcc,_0x1e3770[_0xdf7a('0x47')]);return db[_0xdf7a('0x3f')][_0xdf7a('0x48')](_0x507fcc)[_0xdf7a('0x27')](handleEntityNotFound(_0x4e8e20,null))[_0xdf7a('0x27')](respondWithResult(_0x4e8e20,null))['catch'](handleError(_0x4e8e20,null));};exports[_0xdf7a('0x49')]=function(_0x43c9b3,_0xe981c1){return db[_0xdf7a('0x3f')][_0xdf7a('0x49')](_0x43c9b3[_0xdf7a('0x4a')],{})[_0xdf7a('0x27')](respondWithResult(_0xe981c1,0xc9))[_0xdf7a('0x43')](handleError(_0xe981c1,null));};exports[_0xdf7a('0x4b')]=function(_0x1c3fd8,_0x4d492e){return db[_0xdf7a('0x3f')][_0xdf7a('0x4b')]()[_0xdf7a('0x27')](respondWithResult(_0x4d492e,null))['catch'](handleError(_0x4d492e,null));};exports['update']=function(_0x54bb2f,_0x8cb28c){if(_0x54bb2f[_0xdf7a('0x4a')][_0xdf7a('0x4c')]){delete _0x54bb2f[_0xdf7a('0x4a')]['uniqueid'];}return db[_0xdf7a('0x3f')][_0xdf7a('0x48')]({'where':{'uniqueid':_0x54bb2f[_0xdf7a('0x4d')]['id']}})[_0xdf7a('0x27')](handleEntityNotFound(_0x8cb28c,null))[_0xdf7a('0x27')](saveUpdates(_0x54bb2f[_0xdf7a('0x4a')],null))[_0xdf7a('0x27')](respondWithResult(_0x8cb28c,null))['catch'](handleError(_0x8cb28c,null));};
\ No newline at end of file
+var _0x8d43=['index','map','CmHopperHistory','rawAttributes','type','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','include','findAll','rows','catch','keys','create','body','describe','uniqueid','find','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','name','send'];(function(_0x7bff4f,_0x45ce80){var _0x3c6a26=function(_0x562f84){while(--_0x562f84){_0x7bff4f['push'](_0x7bff4f['shift']());}};_0x3c6a26(++_0x45ce80);}(_0x8d43,0x10b));var _0x38d4=function(_0xb1a618,_0x2f0f58){_0xb1a618=_0xb1a618-0x0;var _0x17d504=_0x8d43[_0xb1a618];return _0x17d504;};'use strict';var emlformat=require(_0x38d4('0x0'));var rimraf=require(_0x38d4('0x1'));var zipdir=require(_0x38d4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x38d4('0x3'));var moment=require(_0x38d4('0x4'));var BPromise=require(_0x38d4('0x5'));var Mustache=require(_0x38d4('0x6'));var util=require(_0x38d4('0x7'));var path=require(_0x38d4('0x8'));var sox=require(_0x38d4('0x9'));var csv=require(_0x38d4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x38d4('0xb'));var _=require(_0x38d4('0xc'));var squel=require(_0x38d4('0xd'));var crypto=require('crypto');var jsforce=require(_0x38d4('0xe'));var deskjs=require(_0x38d4('0xf'));var toCsv=require(_0x38d4('0xa'));var querystring=require(_0x38d4('0x10'));var Papa=require('papaparse');var Redis=require(_0x38d4('0x11'));var authService=require(_0x38d4('0x12'));var qs=require(_0x38d4('0x13'));var as=require(_0x38d4('0x14'));var hardwareService=require(_0x38d4('0x15'));var logger=require(_0x38d4('0x16'))(_0x38d4('0x17'));var utils=require(_0x38d4('0x18'));var config=require(_0x38d4('0x19'));var licenseUtil=require(_0x38d4('0x1a'));var db=require(_0x38d4('0x1b'))['db'];function respondWithStatusCode(_0x176d95,_0x10ecd4){_0x10ecd4=_0x10ecd4||0xcc;return function(_0x50272d){if(_0x50272d){return _0x176d95[_0x38d4('0x1c')](_0x10ecd4);}return _0x176d95[_0x38d4('0x1d')](_0x10ecd4)[_0x38d4('0x1e')]();};}function respondWithResult(_0xc5c093,_0x4e32ad){_0x4e32ad=_0x4e32ad||0xc8;return function(_0x265c51){if(_0x265c51){return _0xc5c093[_0x38d4('0x1d')](_0x4e32ad)['json'](_0x265c51);}};}function respondWithFilteredResult(_0x975763,_0x403689){return function(_0x11fb5c){if(_0x11fb5c){var _0x380da2=typeof _0x403689[_0x38d4('0x1f')]==='undefined'&&typeof _0x403689[_0x38d4('0x20')]===_0x38d4('0x21');var _0x342e08=_0x11fb5c[_0x38d4('0x22')];var _0x35e7e1=_0x380da2?0x0:_0x403689[_0x38d4('0x1f')];var _0x5ce21d=_0x380da2?_0x11fb5c[_0x38d4('0x22')]:_0x403689[_0x38d4('0x1f')]+_0x403689[_0x38d4('0x20')];var _0x2509a3;if(_0x5ce21d>=_0x342e08){_0x5ce21d=_0x342e08;_0x2509a3=0xc8;}else{_0x2509a3=0xce;}_0x975763[_0x38d4('0x1d')](_0x2509a3);return _0x975763['set'](_0x38d4('0x23'),_0x35e7e1+'-'+_0x5ce21d+'/'+_0x342e08)['json'](_0x11fb5c);}return null;};}function patchUpdates(_0x5f218e){return function(_0x3db140){try{jsonpatch[_0x38d4('0x24')](_0x3db140,_0x5f218e,!![]);}catch(_0x52b445){return BPromise[_0x38d4('0x25')](_0x52b445);}return _0x3db140[_0x38d4('0x26')]();};}function saveUpdates(_0x349962,_0x544a61){return function(_0x1e878f){if(_0x1e878f){return _0x1e878f[_0x38d4('0x27')](_0x349962)[_0x38d4('0x28')](function(_0xc203a8){return _0xc203a8;});}return null;};}function removeEntity(_0x58d4bc,_0x4ef44b){return function(_0x27c803){if(_0x27c803){return _0x27c803[_0x38d4('0x29')]()[_0x38d4('0x28')](function(){_0x58d4bc['status'](0xcc)[_0x38d4('0x1e')]();});}};}function handleEntityNotFound(_0x37740e,_0x4d2702){return function(_0x355642){if(!_0x355642){_0x37740e['sendStatus'](0x194);}return _0x355642;};}function handleError(_0x14440c,_0x2d70a5){_0x2d70a5=_0x2d70a5||0x1f4;return function(_0x41d5ee){logger[_0x38d4('0x2a')](_0x41d5ee['stack']);if(_0x41d5ee[_0x38d4('0x2b')]){delete _0x41d5ee['name'];}_0x14440c[_0x38d4('0x1d')](_0x2d70a5)[_0x38d4('0x2c')](_0x41d5ee);};}exports[_0x38d4('0x2d')]=function(_0x48aa36,_0x736da0){var _0x4d9610={},_0x24e418={},_0x338ec1={'count':0x0,'rows':[]};var _0x112661=_[_0x38d4('0x2e')](db[_0x38d4('0x2f')][_0x38d4('0x30')],function(_0xd4b847){return{'name':_0xd4b847['fieldName'],'type':_0xd4b847[_0x38d4('0x31')]['key']};});_0x24e418['model']=_[_0x38d4('0x2e')](_0x112661,_0x38d4('0x2b'));_0x24e418[_0x38d4('0x32')]=_['keys'](_0x48aa36[_0x38d4('0x32')]);_0x24e418['filters']=_[_0x38d4('0x33')](_0x24e418[_0x38d4('0x34')],_0x24e418['query']);_0x4d9610[_0x38d4('0x35')]=_[_0x38d4('0x33')](_0x24e418['model'],qs[_0x38d4('0x36')](_0x48aa36[_0x38d4('0x32')][_0x38d4('0x36')]));_0x4d9610[_0x38d4('0x35')]=_0x4d9610['attributes'][_0x38d4('0x37')]?_0x4d9610[_0x38d4('0x35')]:_0x24e418[_0x38d4('0x34')];if(!_0x48aa36[_0x38d4('0x32')][_0x38d4('0x38')](_0x38d4('0x39'))){_0x4d9610['limit']=qs[_0x38d4('0x20')](_0x48aa36[_0x38d4('0x32')][_0x38d4('0x20')]);_0x4d9610[_0x38d4('0x1f')]=qs[_0x38d4('0x1f')](_0x48aa36[_0x38d4('0x32')][_0x38d4('0x1f')]);}_0x4d9610[_0x38d4('0x3a')]=qs[_0x38d4('0x3b')](_0x48aa36[_0x38d4('0x32')][_0x38d4('0x3b')]);_0x4d9610[_0x38d4('0x3c')]=qs['filters'](_[_0x38d4('0x3d')](_0x48aa36[_0x38d4('0x32')],_0x24e418[_0x38d4('0x3e')]),_0x112661);if(_0x48aa36['query'][_0x38d4('0x3f')]){_0x4d9610[_0x38d4('0x3c')]=_[_0x38d4('0x40')](_0x4d9610['where'],{'$or':_[_0x38d4('0x2e')](_0x112661,function(_0x175ff2){if(_0x175ff2[_0x38d4('0x31')]!=='VIRTUAL'){var _0xd50c3={};_0xd50c3[_0x175ff2[_0x38d4('0x2b')]]={'$like':'%'+_0x48aa36[_0x38d4('0x32')]['filter']+'%'};return _0xd50c3;}})});}_0x4d9610=_['merge']({},_0x4d9610,_0x48aa36[_0x38d4('0x41')]);var _0x4564b8={'where':_0x4d9610['where']};return db[_0x38d4('0x2f')]['count'](_0x4564b8)[_0x38d4('0x28')](function(_0x59aabe){_0x338ec1['count']=_0x59aabe;if(_0x48aa36[_0x38d4('0x32')][_0x38d4('0x42')]){_0x4d9610[_0x38d4('0x43')]=[{'all':!![]}];}return db[_0x38d4('0x2f')][_0x38d4('0x44')](_0x4d9610);})[_0x38d4('0x28')](function(_0x4734fc){_0x338ec1[_0x38d4('0x45')]=_0x4734fc;return _0x338ec1;})[_0x38d4('0x28')](respondWithFilteredResult(_0x736da0,_0x4d9610))[_0x38d4('0x46')](handleError(_0x736da0,null));};exports['show']=function(_0x2475dc,_0x4e5f36){var _0x1be372={'raw':!![],'where':{'id':_0x2475dc['params']['id']}},_0x4045e1={};_0x4045e1[_0x38d4('0x34')]=_[_0x38d4('0x47')](db[_0x38d4('0x2f')][_0x38d4('0x30')]);_0x4045e1['query']=_[_0x38d4('0x47')](_0x2475dc[_0x38d4('0x32')]);_0x4045e1[_0x38d4('0x3e')]=_[_0x38d4('0x33')](_0x4045e1['model'],_0x4045e1[_0x38d4('0x32')]);_0x1be372['attributes']=_[_0x38d4('0x33')](_0x4045e1[_0x38d4('0x34')],qs['fields'](_0x2475dc[_0x38d4('0x32')]['fields']));_0x1be372[_0x38d4('0x35')]=_0x1be372[_0x38d4('0x35')][_0x38d4('0x37')]?_0x1be372['attributes']:_0x4045e1[_0x38d4('0x34')];if(_0x2475dc[_0x38d4('0x32')][_0x38d4('0x42')]){_0x1be372['include']=[{'all':!![]}];}_0x1be372=_[_0x38d4('0x40')]({},_0x1be372,_0x2475dc[_0x38d4('0x41')]);return db[_0x38d4('0x2f')]['find'](_0x1be372)[_0x38d4('0x28')](handleEntityNotFound(_0x4e5f36,null))[_0x38d4('0x28')](respondWithResult(_0x4e5f36,null))[_0x38d4('0x46')](handleError(_0x4e5f36,null));};exports[_0x38d4('0x48')]=function(_0x495ca5,_0x3db502){return db[_0x38d4('0x2f')][_0x38d4('0x48')](_0x495ca5[_0x38d4('0x49')],{})[_0x38d4('0x28')](respondWithResult(_0x3db502,0xc9))[_0x38d4('0x46')](handleError(_0x3db502,null));};exports[_0x38d4('0x4a')]=function(_0x5cd1fe,_0x395227){return db['CmHopperHistory'][_0x38d4('0x4a')]()['then'](respondWithResult(_0x395227,null))[_0x38d4('0x46')](handleError(_0x395227,null));};exports[_0x38d4('0x27')]=function(_0x58e1a7,_0x16d1a0){if(_0x58e1a7[_0x38d4('0x49')][_0x38d4('0x4b')]){delete _0x58e1a7['body'][_0x38d4('0x4b')];}return db[_0x38d4('0x2f')][_0x38d4('0x4c')]({'where':{'uniqueid':_0x58e1a7[_0x38d4('0x4d')]['id']}})[_0x38d4('0x28')](handleEntityNotFound(_0x16d1a0,null))[_0x38d4('0x28')](saveUpdates(_0x58e1a7[_0x38d4('0x49')],null))['then'](respondWithResult(_0x16d1a0,null))[_0x38d4('0x46')](handleError(_0x16d1a0,null));};
\ No newline at end of file
index f973b50..4cb991a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x677a=['define','CmHopperHistory','cm_hopper_history','endtime','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperHistory.attributes','exports'];(function(_0x5d0e40,_0x2fd1e1){var _0x2a8989=function(_0x365399){while(--_0x365399){_0x5d0e40['push'](_0x5d0e40['shift']());}};_0x2a8989(++_0x2fd1e1);}(_0x677a,0xd6));var _0xa677=function(_0x562456,_0x9ad741){_0x562456=_0x562456-0x0;var _0x46d4a9=_0x677a[_0x562456];return _0x46d4a9;};'use strict';var _=require(_0xa677('0x0'));var util=require('util');var logger=require(_0xa677('0x1'))(_0xa677('0x2'));var moment=require(_0xa677('0x3'));var BPromise=require(_0xa677('0x4'));var rp=require(_0xa677('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa677('0x6'));var config=require(_0xa677('0x7'));var attributes=require(_0xa677('0x8'));module[_0xa677('0x9')]=function(_0x24576c,_0x5127c1){return _0x24576c[_0xa677('0xa')](_0xa677('0xb'),attributes,{'tableName':_0xa677('0xc'),'paranoid':![],'indexes':[{'name':_0xa677('0xd'),'fields':['endtime']},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x323f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','util'];(function(_0x37b599,_0x8e26cc){var _0x123314=function(_0x48a619){while(--_0x48a619){_0x37b599['push'](_0x37b599['shift']());}};_0x123314(++_0x8e26cc);}(_0x323f,0x1ee));var _0xf323=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x323f[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var logger=require('../../config/logger')(_0xf323('0x1'));var moment=require(_0xf323('0x2'));var BPromise=require(_0xf323('0x3'));var rp=require(_0xf323('0x4'));var fs=require('fs');var path=require(_0xf323('0x5'));var rimraf=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var attributes=require(_0xf323('0x8'));module[_0xf323('0x9')]=function(_0x371707,_0x5d7d60){return _0x371707[_0xf323('0xa')](_0xf323('0xb'),attributes,{'tableName':_0xf323('0xc'),'paranoid':![],'indexes':[{'name':_0xf323('0xd'),'fields':[_0xf323('0xd')]},{'name':_0xf323('0xe'),'fields':[_0xf323('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 9e83ce4..a04c60a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1491=['`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','literal','`state`\x20=\x2011,\x201,\x20null','AVG','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','debug','error','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','options','raw','stringify','AvgHandleTime','findAll','sequelize','COUNT','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls'];(function(_0x2742db,_0x58e00c){var _0x18659e=function(_0x5bd3ac){while(--_0x5bd3ac){_0x2742db['push'](_0x2742db['shift']());}};_0x18659e(++_0x58e00c);}(_0x1491,0x1b1));var _0x1149=function(_0xd12281,_0x428f44){_0xd12281=_0xd12281-0x0;var _0x4cc537=_0x1491[_0xd12281];return _0x4cc537;};'use strict';var _=require(_0x1149('0x0'));var util=require(_0x1149('0x1'));var moment=require(_0x1149('0x2'));var BPromise=require(_0x1149('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1149('0x4'));var db=require(_0x1149('0x5'))['db'];var utils=require(_0x1149('0x6'));var logger=require(_0x1149('0x7'))(_0x1149('0x8'));var config=require(_0x1149('0x9'));var jayson=require(_0x1149('0xa'));var client=jayson[_0x1149('0xb')][_0x1149('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xaa7515,_0x15513b,_0x3bf02f){return new BPromise(function(_0x285f6c,_0xde257c){return client[_0x1149('0xd')](_0xaa7515,_0x3bf02f)[_0x1149('0xe')](function(_0x17a116){logger[_0x1149('0xf')](_0x1149('0x10'),_0x15513b,'request\x20sent');logger[_0x1149('0x11')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x15513b,'request\x20sent',JSON['stringify'](_0x17a116));if(_0x17a116[_0x1149('0x12')]){if(_0x17a116['error']['code']===0x1f4){logger[_0x1149('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x15513b,_0x17a116[_0x1149('0x12')][_0x1149('0x13')]);return _0xde257c(_0x17a116[_0x1149('0x12')][_0x1149('0x13')]);}logger[_0x1149('0x12')](_0x1149('0x10'),_0x15513b,_0x17a116['error'][_0x1149('0x13')]);return _0x285f6c(_0x17a116['error']['message']);}else{logger[_0x1149('0xf')](_0x1149('0x10'),_0x15513b,'request\x20sent');_0x285f6c(_0x17a116[_0x1149('0x14')][_0x1149('0x13')]);}})[_0x1149('0x15')](function(_0x165b15){logger[_0x1149('0x12')](_0x1149('0x10'),_0x15513b,_0x165b15);_0xde257c(_0x165b15);});});}exports[_0x1149('0x16')]=function(_0x373ca0){var _0x4215b0=this;return new Promise(function(_0x88c9b1,_0x444028){return db[_0x1149('0x17')][_0x1149('0x18')](_0x373ca0['body'],{'raw':_0x373ca0['options']?_0x373ca0[_0x1149('0x19')][_0x1149('0x1a')]===undefined?!![]:![]:!![]})[_0x1149('0xe')](function(_0x4781b8){logger[_0x1149('0xf')]('CreateCmHopperHistory',_0x373ca0);logger[_0x1149('0x11')](_0x1149('0x16'),_0x373ca0,JSON[_0x1149('0x1b')](_0x4781b8));_0x88c9b1(_0x4781b8);})['catch'](function(_0x3a891c){logger[_0x1149('0x12')](_0x1149('0x16'),_0x3a891c['message'],_0x373ca0);_0x444028(_0x4215b0[_0x1149('0x12')](0x1f4,_0x3a891c[_0x1149('0x13')]));});});};exports[_0x1149('0x1c')]=function(_0x59eb5e){var _0x6b7701=this;return new Promise(function(_0x1d0537,_0x1f36ff){return db[_0x1149('0x17')][_0x1149('0x1d')]({'raw':_0x59eb5e[_0x1149('0x19')]?_0x59eb5e[_0x1149('0x19')][_0x1149('0x1a')]===undefined?!![]:![]:!![],'where':_0x59eb5e[_0x1149('0x19')]?_0x59eb5e[_0x1149('0x19')]['where']||null:null,'attributes':[[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db['sequelize'][_0x1149('0x20')]('id')),_0x1149('0x21')],[db['sequelize']['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db[_0x1149('0x1e')]['literal'](_0x1149('0x22')))),_0x1149('0x23')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x1149('0x24')))),_0x1149('0x25')],[db[_0x1149('0x1e')]['fn']('COUNT',db[_0x1149('0x1e')]['fn']('IF',db[_0x1149('0x1e')][_0x1149('0x26')](_0x1149('0x27')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x1149('0x1e')]['fn'](_0x1149('0x28'),db['sequelize']['fn']('IF',db['sequelize'][_0x1149('0x26')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),'predictiveIntervalAvgHoldtime'],[db['sequelize']['fn']('AVG',db[_0x1149('0x1e')]['fn']('IF',db[_0x1149('0x1e')][_0x1149('0x26')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0x1149('0x29')]]})['then'](function(_0x49f0da){logger[_0x1149('0xf')](_0x1149('0x1c'),_0x59eb5e);logger[_0x1149('0x11')](_0x1149('0x1c'),_0x59eb5e,JSON[_0x1149('0x1b')](_0x49f0da));_0x1d0537(_0x49f0da);})['catch'](function(_0x9719d1){logger[_0x1149('0x12')](_0x1149('0x1c'),_0x9719d1[_0x1149('0x13')],_0x59eb5e);_0x1f36ff(_0x6b7701[_0x1149('0x12')](0x1f4,_0x9719d1['message']));});});};exports[_0x1149('0x2a')]=function(_0x3c8314){var _0x34b1ac=this;return new Promise(function(_0x336417,_0x46fd08){return db[_0x1149('0x17')][_0x1149('0x1d')]({'raw':_0x3c8314[_0x1149('0x19')]?_0x3c8314['options'][_0x1149('0x1a')]===undefined?!![]:![]:!![],'where':_0x3c8314[_0x1149('0x19')]?_0x3c8314['options']['where']||null:null,'attributes':[[_0x1149('0x2b'),_0x1149('0x2c')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x1149('0x2d')))),_0x1149('0x2e')],[db[_0x1149('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x1149('0x26')]('`state`\x20=\x203,\x201,\x20null'))),'outboundNoAnswerCallsDay'],[db[_0x1149('0x1e')]['fn']('COUNT',db[_0x1149('0x1e')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x204,\x201,\x20null'))),_0x1149('0x2f')],[db['sequelize']['fn']('COUNT',db[_0x1149('0x1e')]['fn']('IF',db[_0x1149('0x1e')]['literal']('`state`\x20=\x205,\x201,\x20null'))),_0x1149('0x30')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db[_0x1149('0x1e')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0x1149('0x31')],[db[_0x1149('0x1e')]['fn']('COUNT',db[_0x1149('0x1e')]['fn']('IF',db['sequelize'][_0x1149('0x26')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x1149('0x32')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db[_0x1149('0x1e')]['literal'](_0x1149('0x33')))),_0x1149('0x34')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x1149('0x35')))),_0x1149('0x36')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db['sequelize']['fn']('IF',db[_0x1149('0x1e')][_0x1149('0x26')]('`state`\x20=\x2013,\x201,\x20null'))),_0x1149('0x37')],[db[_0x1149('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x1149('0x1e')][_0x1149('0x26')]('`state`\x20=\x2014,\x201,\x20null'))),_0x1149('0x38')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db['sequelize'][_0x1149('0x26')](_0x1149('0x39')))),_0x1149('0x3a')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db[_0x1149('0x1e')][_0x1149('0x26')](_0x1149('0x3b')))),_0x1149('0x3c')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db['sequelize'][_0x1149('0x26')](_0x1149('0x3d')))),_0x1149('0x3a')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db['sequelize']['fn']('IF',db[_0x1149('0x1e')][_0x1149('0x26')](_0x1149('0x3e')))),_0x1149('0x3f')]],'group':[_0x1149('0x2b')]})[_0x1149('0xe')](function(_0x301796){logger[_0x1149('0xf')](_0x1149('0x2a'),_0x3c8314);logger[_0x1149('0x11')]('GetVoiceQueueHopperHistory',_0x3c8314,JSON[_0x1149('0x1b')](_0x301796));_0x336417(_0x301796);})[_0x1149('0x15')](function(_0x37c82e){logger['error']('GetVoiceQueueHopperHistory',_0x37c82e[_0x1149('0x13')],_0x3c8314);_0x46fd08(_0x34b1ac[_0x1149('0x12')](0x1f4,_0x37c82e[_0x1149('0x13')]));});});};exports['GetCampaignHopperHistory']=function(_0x592120){var _0xe115f0=this;return new Promise(function(_0x3da703,_0x151f02){return db[_0x1149('0x17')]['findAll']({'raw':_0x592120[_0x1149('0x19')]?_0x592120['options'][_0x1149('0x1a')]===undefined?!![]:![]:!![],'where':_0x592120[_0x1149('0x19')]?_0x592120[_0x1149('0x19')]['where']||null:null,'attributes':[['campaign',_0x1149('0x2c')],[db[_0x1149('0x1e')]['fn']('COUNT',db[_0x1149('0x1e')][_0x1149('0x20')]('id')),_0x1149('0x40')],[db[_0x1149('0x1e')]['fn'](_0x1149('0x1f'),db[_0x1149('0x1e')]['fn']('IF',db['sequelize'][_0x1149('0x26')]('`state`\x20=\x204,\x201,\x20null'))),_0x1149('0x41')]],'group':[_0x1149('0x2b')]})[_0x1149('0xe')](function(_0x48ea45){logger['info']('GetCampaignHopperHistory',_0x592120);logger[_0x1149('0x11')](_0x1149('0x42'),_0x592120,JSON['stringify'](_0x48ea45));_0x3da703(_0x48ea45);})[_0x1149('0x15')](function(_0x3b0994){logger[_0x1149('0x12')](_0x1149('0x42'),_0x3b0994[_0x1149('0x13')],_0x592120);_0x151f02(_0xe115f0[_0x1149('0x12')](0x1f4,_0x3b0994[_0x1149('0x13')]));});});};
\ No newline at end of file
+var _0x340c=['`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','col','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateCmHopperHistory','body','options','AvgHandleTime','CmHopperHistory','findAll','raw','where','sequelize','COUNT','literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','then','GetVoiceQueueHopperHistory','campaign','name','outboundNoSuchCallsDay'];(function(_0x13800c,_0x3f24b8){var _0x3dd4b6=function(_0x2f24f4){while(--_0x2f24f4){_0x13800c['push'](_0x13800c['shift']());}};_0x3dd4b6(++_0x3f24b8);}(_0x340c,0xe5));var _0xc340=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x340c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc340('0x0'));var util=require(_0xc340('0x1'));var moment=require(_0xc340('0x2'));var BPromise=require(_0xc340('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc340('0x4'));var db=require(_0xc340('0x5'))['db'];var utils=require(_0xc340('0x6'));var logger=require(_0xc340('0x7'))('rpc');var config=require(_0xc340('0x8'));var jayson=require(_0xc340('0x9'));var client=jayson[_0xc340('0xa')][_0xc340('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35b8e6,_0x4c3a04,_0x4c33db){return new BPromise(function(_0x59a213,_0x4726ff){return client[_0xc340('0xc')](_0x35b8e6,_0x4c33db)['then'](function(_0x388873){logger[_0xc340('0xd')](_0xc340('0xe'),_0x4c3a04,_0xc340('0xf'));logger[_0xc340('0x10')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x4c3a04,_0xc340('0xf'),JSON[_0xc340('0x11')](_0x388873));if(_0x388873[_0xc340('0x12')]){if(_0x388873['error'][_0xc340('0x13')]===0x1f4){logger[_0xc340('0x12')](_0xc340('0xe'),_0x4c3a04,_0x388873[_0xc340('0x12')][_0xc340('0x14')]);return _0x4726ff(_0x388873['error'][_0xc340('0x14')]);}logger[_0xc340('0x12')](_0xc340('0xe'),_0x4c3a04,_0x388873[_0xc340('0x12')][_0xc340('0x14')]);return _0x59a213(_0x388873['error'][_0xc340('0x14')]);}else{logger[_0xc340('0xd')](_0xc340('0xe'),_0x4c3a04,_0xc340('0xf'));_0x59a213(_0x388873[_0xc340('0x15')]['message']);}})[_0xc340('0x16')](function(_0x3b05bb){logger[_0xc340('0x12')](_0xc340('0xe'),_0x4c3a04,_0x3b05bb);_0x4726ff(_0x3b05bb);});});}exports[_0xc340('0x17')]=function(_0x51efe9){var _0x2a08e1=this;return new Promise(function(_0x32286c,_0x3696f3){return db['CmHopperHistory']['create'](_0x51efe9[_0xc340('0x18')],{'raw':_0x51efe9[_0xc340('0x19')]?_0x51efe9[_0xc340('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x22e6ee){logger['info'](_0xc340('0x17'),_0x51efe9);logger[_0xc340('0x10')](_0xc340('0x17'),_0x51efe9,JSON[_0xc340('0x11')](_0x22e6ee));_0x32286c(_0x22e6ee);})[_0xc340('0x16')](function(_0x435c28){logger[_0xc340('0x12')](_0xc340('0x17'),_0x435c28[_0xc340('0x14')],_0x51efe9);_0x3696f3(_0x2a08e1[_0xc340('0x12')](0x1f4,_0x435c28['message']));});});};exports[_0xc340('0x1a')]=function(_0x250dbd){var _0x5e3892=this;return new Promise(function(_0x3b13eb,_0x50ec86){return db[_0xc340('0x1b')][_0xc340('0x1c')]({'raw':_0x250dbd[_0xc340('0x19')]?_0x250dbd['options'][_0xc340('0x1d')]===undefined?!![]:![]:!![],'where':_0x250dbd[_0xc340('0x19')]?_0x250dbd[_0xc340('0x19')][_0xc340('0x1e')]||null:null,'attributes':[[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['col']('id')),'predictiveIntervalTotalCalls'],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x22')))),'predictiveIntervalAnsweredCalls'],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x23')))),_0xc340('0x24')],[db['sequelize']['fn']('COUNT',db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x25')))),_0xc340('0x26')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x27'),db['sequelize']['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0xc340('0x28')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x27'),db['sequelize']['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x29')))),'predictiveIntervalAvgTalktime']]})[_0xc340('0x2a')](function(_0x2ece6f){logger['info'](_0xc340('0x1a'),_0x250dbd);logger['debug'](_0xc340('0x1a'),_0x250dbd,JSON[_0xc340('0x11')](_0x2ece6f));_0x3b13eb(_0x2ece6f);})[_0xc340('0x16')](function(_0x5a9889){logger[_0xc340('0x12')](_0xc340('0x1a'),_0x5a9889['message'],_0x250dbd);_0x50ec86(_0x5e3892[_0xc340('0x12')](0x1f4,_0x5a9889[_0xc340('0x14')]));});});};exports[_0xc340('0x2b')]=function(_0x1eefc3){var _0xdb363c=this;return new Promise(function(_0x3ed2aa,_0x1c37bb){return db['CmHopperHistory'][_0xc340('0x1c')]({'raw':_0x1eefc3[_0xc340('0x19')]?_0x1eefc3[_0xc340('0x19')][_0xc340('0x1d')]===undefined?!![]:![]:!![],'where':_0x1eefc3[_0xc340('0x19')]?_0x1eefc3[_0xc340('0x19')]['where']||null:null,'attributes':[[_0xc340('0x2c'),_0xc340('0x2d')],[db[_0xc340('0x1f')]['fn']('COUNT',db[_0xc340('0x1f')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xc340('0x2e')],[db['sequelize']['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db['sequelize'][_0xc340('0x21')](_0xc340('0x2f')))),_0xc340('0x30')],[db['sequelize']['fn'](_0xc340('0x20'),db['sequelize']['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x22')))),_0xc340('0x31')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')]('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db['sequelize']['literal'](_0xc340('0x32')))),_0xc340('0x33')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x34')))),_0xc340('0x35')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db['sequelize']['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x36')))),_0xc340('0x37')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db['sequelize'][_0xc340('0x21')](_0xc340('0x38')))),_0xc340('0x39')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')]['literal']('`state`\x20=\x2013,\x201,\x20null'))),_0xc340('0x3a')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')]['literal']('`state`\x20=\x2014,\x201,\x20null'))),_0xc340('0x3b')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x3c')))),_0xc340('0x3d')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x3e')))),_0xc340('0x3f')],[db[_0xc340('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')](_0xc340('0x40')))),_0xc340('0x3d')],[db['sequelize']['fn']('COUNT',db[_0xc340('0x1f')]['fn']('IF',db['sequelize'][_0xc340('0x21')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0xc340('0x2c')]})[_0xc340('0x2a')](function(_0x3151f3){logger[_0xc340('0xd')]('GetVoiceQueueHopperHistory',_0x1eefc3);logger['debug'](_0xc340('0x2b'),_0x1eefc3,JSON['stringify'](_0x3151f3));_0x3ed2aa(_0x3151f3);})['catch'](function(_0x36edf4){logger[_0xc340('0x12')]('GetVoiceQueueHopperHistory',_0x36edf4[_0xc340('0x14')],_0x1eefc3);_0x1c37bb(_0xdb363c[_0xc340('0x12')](0x1f4,_0x36edf4['message']));});});};exports['GetCampaignHopperHistory']=function(_0x563860){var _0x4b70b8=this;return new Promise(function(_0x1b7e32,_0x46a366){return db[_0xc340('0x1b')][_0xc340('0x1c')]({'raw':_0x563860[_0xc340('0x19')]?_0x563860['options'][_0xc340('0x1d')]===undefined?!![]:![]:!![],'where':_0x563860[_0xc340('0x19')]?_0x563860['options'][_0xc340('0x1e')]||null:null,'attributes':[['campaign',_0xc340('0x2d')],[db[_0xc340('0x1f')]['fn']('COUNT',db[_0xc340('0x1f')][_0xc340('0x41')]('id')),_0xc340('0x42')],[db[_0xc340('0x1f')]['fn'](_0xc340('0x20'),db[_0xc340('0x1f')]['fn']('IF',db[_0xc340('0x1f')][_0xc340('0x21')]('`state`\x20=\x204,\x201,\x20null'))),_0xc340('0x43')]],'group':[_0xc340('0x2c')]})['then'](function(_0x3c036a){logger[_0xc340('0xd')](_0xc340('0x44'),_0x563860);logger[_0xc340('0x10')](_0xc340('0x44'),_0x563860,JSON['stringify'](_0x3c036a));_0x1b7e32(_0x3c036a);})[_0xc340('0x16')](function(_0x100134){logger[_0xc340('0x12')](_0xc340('0x44'),_0x100134[_0xc340('0x14')],_0x563860);_0x46a366(_0x4b70b8[_0xc340('0x12')](0x1f4,_0x100134[_0xc340('0x14')]));});});};
\ No newline at end of file
index 96643a6..9222304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a9f=['post','create','/:id','update','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','describe','show'];(function(_0x393890,_0x831d66){var _0x25958f=function(_0x443533){while(--_0x443533){_0x393890['push'](_0x393890['shift']());}};_0x25958f(++_0x831d66);}(_0x2a9f,0x1a3));var _0xf2a9=function(_0x9ec221,_0x2594a6){_0x9ec221=_0x9ec221-0x0;var _0xdbe55e=_0x2a9f[_0x9ec221];return _0xdbe55e;};'use strict';var multer=require(_0xf2a9('0x0'));var util=require(_0xf2a9('0x1'));var path=require(_0xf2a9('0x2'));var timeout=require('connect-timeout');var express=require(_0xf2a9('0x3'));var router=express[_0xf2a9('0x4')]();var fs_extra=require(_0xf2a9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf2a9('0x6'));var config=require(_0xf2a9('0x7'));var controller=require(_0xf2a9('0x8'));router['get']('/',auth[_0xf2a9('0x9')](),controller[_0xf2a9('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xf2a9('0xb')]);router['get']('/:id',auth[_0xf2a9('0x9')](),controller[_0xf2a9('0xc')]);router[_0xf2a9('0xd')]('/',auth[_0xf2a9('0x9')](),controller[_0xf2a9('0xe')]);router['put'](_0xf2a9('0xf'),auth['isAuthenticated'](),controller[_0xf2a9('0x10')]);module[_0xf2a9('0x11')]=router;
\ No newline at end of file
+var _0x5922=['./cmHopperHistory.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','put','update','multer','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x226c32,_0x561d5e){var _0x29c02c=function(_0x478681){while(--_0x478681){_0x226c32['push'](_0x226c32['shift']());}};_0x29c02c(++_0x561d5e);}(_0x5922,0x192));var _0x2592=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x5922[_0x3e112d];return _0x531c31;};'use strict';var multer=require(_0x2592('0x0'));var util=require(_0x2592('0x1'));var path=require('path');var timeout=require(_0x2592('0x2'));var express=require(_0x2592('0x3'));var router=express[_0x2592('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2592('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2592('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x2592('0x7')]);router[_0x2592('0x8')](_0x2592('0x9'),auth[_0x2592('0xa')](),controller[_0x2592('0xb')]);router['get'](_0x2592('0xc'),auth[_0x2592('0xa')](),controller[_0x2592('0xd')]);router[_0x2592('0xe')]('/',auth[_0x2592('0xa')](),controller['create']);router[_0x2592('0xf')](_0x2592('0xc'),auth[_0x2592('0xa')](),controller[_0x2592('0x10')]);module['exports']=router;
\ No newline at end of file
index 0c54639..73b86a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd0=['sequelize','exports','STRING','name'];(function(_0x1bc21c,_0x18eb9c){var _0x2f88df=function(_0x54869f){while(--_0x54869f){_0x1bc21c['push'](_0x1bc21c['shift']());}};_0x2f88df(++_0x18eb9c);}(_0xdbd0,0x88));var _0x0dbd=function(_0x53125e,_0x3e516c){_0x53125e=_0x53125e-0x0;var _0x340e8e=_0xdbd0[_0x53125e];return _0x340e8e;};'use strict';var Sequelize=require(_0x0dbd('0x0'));module[_0x0dbd('0x1')]={'name':{'type':Sequelize[_0x0dbd('0x2')],'unique':_0x0dbd('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0dbd('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc30d=['STRING','name','sequelize'];(function(_0x284082,_0x22a241){var _0x13047a=function(_0x5a2769){while(--_0x5a2769){_0x284082['push'](_0x284082['shift']());}};_0x13047a(++_0x22a241);}(_0xc30d,0x6e));var _0xdc30=function(_0x588077,_0x981d25){_0x588077=_0x588077-0x0;var _0x43ea8c=_0xc30d[_0x588077];return _0x43ea8c;};'use strict';var Sequelize=require(_0xdc30('0x0'));module['exports']={'name':{'type':Sequelize[_0xdc30('0x1')],'unique':_0xdc30('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xdc30('0x1')]},'dialPrefix':{'type':Sequelize[_0xdc30('0x1')]}};
\ No newline at end of file
index 86a1a06..8a224ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe651=['emit','removeAgents','userCmList:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','status','json','offset','undefined','count','limit','set','apply','save','update','then','get','Lists','UserProfileResource','destroy','sendStatus','error','stack','name','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','CmList','findAll','rows','catch','params','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','getDispositions','findOne','length','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','list_%d_%s.csv','Content-type','text/csv','download','addCustomFields','Sequelize','TEXT','switch','defaultValue','sequelize','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread'];(function(_0x32b904,_0x30a942){var _0x4d8261=function(_0x2dc0d7){while(--_0x2dc0d7){_0x32b904['push'](_0x32b904['shift']());}};_0x4d8261(++_0x30a942);}(_0xe651,0x90));var _0x1e65=function(_0x19cb5a,_0x583fbd){_0x19cb5a=_0x19cb5a-0x0;var _0x9b2f0f=_0xe651[_0x19cb5a];return _0x9b2f0f;};'use strict';var emlformat=require(_0x1e65('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1e65('0x1'));var jsonpatch=require(_0x1e65('0x2'));var rp=require(_0x1e65('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1e65('0x4'));var util=require(_0x1e65('0x5'));var path=require(_0x1e65('0x6'));var sox=require(_0x1e65('0x7'));var csv=require(_0x1e65('0x8'));var ejs=require(_0x1e65('0x9'));var fs=require('fs');var fs_extra=require(_0x1e65('0xa'));var _=require(_0x1e65('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1e65('0x8'));var querystring=require(_0x1e65('0xc'));var Papa=require(_0x1e65('0xd'));var Redis=require(_0x1e65('0xe'));var authService=require(_0x1e65('0xf'));var qs=require(_0x1e65('0x10'));var as=require(_0x1e65('0x11'));var hardwareService=require(_0x1e65('0x12'));var logger=require(_0x1e65('0x13'))(_0x1e65('0x14'));var utils=require(_0x1e65('0x15'));var config=require(_0x1e65('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x1e65('0x17')]=_[_0x1e65('0x18')](config[_0x1e65('0x17')],{'host':_0x1e65('0x19'),'port':0x18eb});var socket=require(_0x1e65('0x1a'))(new Redis(config[_0x1e65('0x17')]));require('./cmList.socket')[_0x1e65('0x1b')](socket);function respondWithStatusCode(_0x41f941,_0x35013d){_0x35013d=_0x35013d||0xcc;return function(_0x19ba7b){if(_0x19ba7b){return _0x41f941['sendStatus'](_0x35013d);}return _0x41f941[_0x1e65('0x1c')](_0x35013d)['end']();};}function respondWithResult(_0x233649,_0x57bcde){_0x57bcde=_0x57bcde||0xc8;return function(_0x32140e){if(_0x32140e){return _0x233649[_0x1e65('0x1c')](_0x57bcde)[_0x1e65('0x1d')](_0x32140e);}};}function respondWithFilteredResult(_0x4b1b02,_0x5ac0e1){return function(_0x22d6d5){if(_0x22d6d5){var _0x21e2e7=typeof _0x5ac0e1[_0x1e65('0x1e')]==='undefined'&&typeof _0x5ac0e1['limit']===_0x1e65('0x1f');var _0x3ab348=_0x22d6d5[_0x1e65('0x20')];var _0x4ad6a6=_0x21e2e7?0x0:_0x5ac0e1['offset'];var _0x55dbc2=_0x21e2e7?_0x22d6d5[_0x1e65('0x20')]:_0x5ac0e1[_0x1e65('0x1e')]+_0x5ac0e1[_0x1e65('0x21')];var _0x537dde;if(_0x55dbc2>=_0x3ab348){_0x55dbc2=_0x3ab348;_0x537dde=0xc8;}else{_0x537dde=0xce;}_0x4b1b02['status'](_0x537dde);return _0x4b1b02[_0x1e65('0x22')]('Content-Range',_0x4ad6a6+'-'+_0x55dbc2+'/'+_0x3ab348)[_0x1e65('0x1d')](_0x22d6d5);}return null;};}function patchUpdates(_0x31b2d8){return function(_0x442c36){try{jsonpatch[_0x1e65('0x23')](_0x442c36,_0x31b2d8,!![]);}catch(_0x5cdfc2){return BPromise['reject'](_0x5cdfc2);}return _0x442c36[_0x1e65('0x24')]();};}function saveUpdates(_0x30ddce,_0x24c200){return function(_0x299414){if(_0x299414){return _0x299414[_0x1e65('0x25')](_0x30ddce)[_0x1e65('0x26')](function(_0x45bde5){return _0x45bde5;});}return null;};}function removeEntity(_0x1a2da6,_0x1259d5){return function(_0x22b360){if(_0x22b360){return _0x22b360['destroy']()[_0x1e65('0x26')](function(){var _0x45291e=_0x22b360[_0x1e65('0x27')]({'plain':!![]});var _0x94ec21=_0x1e65('0x28');return db[_0x1e65('0x29')][_0x1e65('0x2a')]({'where':{'type':_0x94ec21,'resourceId':_0x45291e['id']}})[_0x1e65('0x26')](function(){return _0x22b360;});})[_0x1e65('0x26')](function(){_0x1a2da6[_0x1e65('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42f74e,_0xc23565){return function(_0x1ac2cb){if(!_0x1ac2cb){_0x42f74e[_0x1e65('0x2b')](0x194);}return _0x1ac2cb;};}function handleError(_0x1b7ca6,_0x280fff){_0x280fff=_0x280fff||0x1f4;return function(_0x5b39df){logger[_0x1e65('0x2c')](_0x5b39df[_0x1e65('0x2d')]);if(_0x5b39df[_0x1e65('0x2e')]){delete _0x5b39df[_0x1e65('0x2e')];}_0x1b7ca6[_0x1e65('0x1c')](_0x280fff)['send'](_0x5b39df);};}exports[_0x1e65('0x2f')]=function(_0x4ca7b7,_0x4c6a6e){var _0xabc5ae={},_0x43be48={},_0x2b567d={'count':0x0,'rows':[]};var _0x20d7e9=_[_0x1e65('0x30')](db['CmList']['rawAttributes'],function(_0xeba490){return{'name':_0xeba490[_0x1e65('0x31')],'type':_0xeba490[_0x1e65('0x32')][_0x1e65('0x33')]};});_0x43be48['model']=_[_0x1e65('0x30')](_0x20d7e9,_0x1e65('0x2e'));_0x43be48[_0x1e65('0x34')]=_[_0x1e65('0x35')](_0x4ca7b7[_0x1e65('0x34')]);_0x43be48[_0x1e65('0x36')]=_[_0x1e65('0x37')](_0x43be48[_0x1e65('0x38')],_0x43be48[_0x1e65('0x34')]);_0xabc5ae[_0x1e65('0x39')]=_['intersection'](_0x43be48[_0x1e65('0x38')],qs[_0x1e65('0x3a')](_0x4ca7b7[_0x1e65('0x34')][_0x1e65('0x3a')]));_0xabc5ae[_0x1e65('0x39')]=_0xabc5ae[_0x1e65('0x39')]['length']?_0xabc5ae[_0x1e65('0x39')]:_0x43be48[_0x1e65('0x38')];if(!_0x4ca7b7[_0x1e65('0x34')][_0x1e65('0x3b')](_0x1e65('0x3c'))){_0xabc5ae['limit']=qs[_0x1e65('0x21')](_0x4ca7b7['query'][_0x1e65('0x21')]);_0xabc5ae['offset']=qs[_0x1e65('0x1e')](_0x4ca7b7[_0x1e65('0x34')][_0x1e65('0x1e')]);}_0xabc5ae[_0x1e65('0x3d')]=qs[_0x1e65('0x3e')](_0x4ca7b7[_0x1e65('0x34')]['sort']);_0xabc5ae[_0x1e65('0x3f')]=qs[_0x1e65('0x36')](_[_0x1e65('0x40')](_0x4ca7b7[_0x1e65('0x34')],_0x43be48[_0x1e65('0x36')]),_0x20d7e9);if(_0x4ca7b7['query']['filter']){_0xabc5ae['where']=_[_0x1e65('0x41')](_0xabc5ae[_0x1e65('0x3f')],{'$or':_[_0x1e65('0x30')](_0x20d7e9,function(_0x39a401){if(_0x39a401['type']!==_0x1e65('0x42')){var _0x368b3c={};_0x368b3c[_0x39a401[_0x1e65('0x2e')]]={'$like':'%'+_0x4ca7b7['query'][_0x1e65('0x43')]+'%'};return _0x368b3c;}})});}_0xabc5ae=_['merge']({},_0xabc5ae,_0x4ca7b7[_0x1e65('0x44')]);var _0x382c8c={'where':_0xabc5ae[_0x1e65('0x3f')]};return db['CmList'][_0x1e65('0x20')](_0x382c8c)[_0x1e65('0x26')](function(_0x32d53d){_0x2b567d['count']=_0x32d53d;if(_0x4ca7b7[_0x1e65('0x34')][_0x1e65('0x45')]){_0xabc5ae[_0x1e65('0x46')]=[{'all':!![]}];}return db[_0x1e65('0x47')][_0x1e65('0x48')](_0xabc5ae);})[_0x1e65('0x26')](function(_0xd017cb){_0x2b567d[_0x1e65('0x49')]=_0xd017cb;return _0x2b567d;})[_0x1e65('0x26')](respondWithFilteredResult(_0x4c6a6e,_0xabc5ae))[_0x1e65('0x4a')](handleError(_0x4c6a6e,null));};exports['show']=function(_0x235cce,_0x5bb6ea){var _0x475574={'raw':![],'where':{'id':_0x235cce[_0x1e65('0x4b')]['id']}},_0x525533={};_0x525533[_0x1e65('0x38')]=_['keys'](db[_0x1e65('0x47')][_0x1e65('0x4c')]);_0x525533['query']=_['keys'](_0x235cce[_0x1e65('0x34')]);_0x525533[_0x1e65('0x36')]=_['intersection'](_0x525533[_0x1e65('0x38')],_0x525533['query']);_0x475574['attributes']=_[_0x1e65('0x37')](_0x525533[_0x1e65('0x38')],qs['fields'](_0x235cce[_0x1e65('0x34')][_0x1e65('0x3a')]));_0x475574['attributes']=_0x475574[_0x1e65('0x39')]['length']?_0x475574[_0x1e65('0x39')]:_0x525533[_0x1e65('0x38')];if(_0x235cce[_0x1e65('0x34')][_0x1e65('0x45')]){_0x475574[_0x1e65('0x46')]=[{'all':!![]}];}_0x475574=_['merge']({},_0x475574,_0x235cce['options']);return db[_0x1e65('0x47')]['find'](_0x475574)[_0x1e65('0x26')](handleEntityNotFound(_0x5bb6ea,null))['then'](respondWithResult(_0x5bb6ea,null))[_0x1e65('0x4a')](handleError(_0x5bb6ea,null));};exports[_0x1e65('0x4d')]=function(_0x2a5c5e,_0x39b3e6){return db['CmList'][_0x1e65('0x4d')](_0x2a5c5e[_0x1e65('0x4e')],{})[_0x1e65('0x26')](function(_0x1817b8){var _0x518b79=_0x2a5c5e[_0x1e65('0x4f')][_0x1e65('0x27')]({'plain':!![]});if(!_0x518b79)throw new Error(_0x1e65('0x50'));if(_0x518b79['role']===_0x1e65('0x4f')){var _0x4979ea=_0x1817b8['get']({'plain':!![]});var _0x1ac6cd=_0x1e65('0x28');return db['UserProfileSection'][_0x1e65('0x51')]({'where':{'name':_0x1ac6cd,'userProfileId':_0x518b79[_0x1e65('0x52')]},'raw':!![]})['then'](function(_0x14d496){if(_0x14d496&&_0x14d496[_0x1e65('0x53')]===0x0){return db['UserProfileResource']['create']({'name':_0x4979ea[_0x1e65('0x2e')],'resourceId':_0x4979ea['id'],'type':_0x14d496[_0x1e65('0x2e')],'sectionId':_0x14d496['id']},{})[_0x1e65('0x26')](function(){return _0x1817b8;});}else{return _0x1817b8;}})[_0x1e65('0x4a')](function(_0x2de0c7){logger[_0x1e65('0x2c')](_0x1e65('0x54'),_0x2de0c7);throw _0x2de0c7;});}return _0x1817b8;})[_0x1e65('0x26')](respondWithResult(_0x39b3e6,0xc9))[_0x1e65('0x4a')](handleError(_0x39b3e6,null));};exports[_0x1e65('0x25')]=function(_0x1c8f02,_0x12d498){if(_0x1c8f02[_0x1e65('0x4e')]['id']){delete _0x1c8f02[_0x1e65('0x4e')]['id'];}return db[_0x1e65('0x47')][_0x1e65('0x51')]({'where':{'id':_0x1c8f02[_0x1e65('0x4b')]['id']}})['then'](handleEntityNotFound(_0x12d498,null))[_0x1e65('0x26')](saveUpdates(_0x1c8f02[_0x1e65('0x4e')],null))[_0x1e65('0x26')](respondWithResult(_0x12d498,null))[_0x1e65('0x4a')](handleError(_0x12d498,null));};exports[_0x1e65('0x2a')]=function(_0xbf4b41,_0x491bf0){return db['CmList'][_0x1e65('0x51')]({'where':{'id':_0xbf4b41[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0x491bf0,null))[_0x1e65('0x26')](removeEntity(_0x491bf0,null))['catch'](handleError(_0x491bf0,null));};exports[_0x1e65('0x55')]=function(_0x4bbe6b,_0x224dfc){return db[_0x1e65('0x47')]['describe']()[_0x1e65('0x26')](respondWithResult(_0x224dfc,null))[_0x1e65('0x4a')](handleError(_0x224dfc,null));};exports[_0x1e65('0x56')]=function(_0x482542,_0x1879f2,_0x221402){if(_0x482542[_0x1e65('0x4e')]['id']){delete _0x482542[_0x1e65('0x4e')]['id'];}return db[_0x1e65('0x47')][_0x1e65('0x51')]({'where':{'id':_0x482542[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0x1879f2,null))['then'](function(_0x562c28){if(_0x562c28){_0x482542['body'][_0x1e65('0x57')]=_0x562c28['id'];return db[_0x1e65('0x58')]['create'](_0x482542['body']);}})[_0x1e65('0x26')](respondWithResult(_0x1879f2,null))[_0x1e65('0x4a')](handleError(_0x1879f2,null));};exports[_0x1e65('0x59')]=function(_0x4d6067,_0x2bb23c,_0x1f860a){var _0x31ca26={'raw':![],'where':{}};var _0x109e87={};var _0x1326a7={'count':0x0,'rows':[]};return db[_0x1e65('0x47')][_0x1e65('0x5a')]({'where':{'id':_0x4d6067[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0x2bb23c,null))['then'](function(_0x231f74){if(_0x231f74){_0x109e87[_0x1e65('0x38')]=_[_0x1e65('0x35')](db[_0x1e65('0x58')][_0x1e65('0x4c')]);_0x109e87['query']=_[_0x1e65('0x35')](_0x4d6067[_0x1e65('0x34')]);_0x109e87[_0x1e65('0x36')]=_[_0x1e65('0x37')](_0x109e87[_0x1e65('0x38')],_0x109e87[_0x1e65('0x34')]);_0x31ca26[_0x1e65('0x39')]=_[_0x1e65('0x37')](_0x109e87['model'],qs[_0x1e65('0x3a')](_0x4d6067['query'][_0x1e65('0x3a')]));_0x31ca26[_0x1e65('0x39')]=_0x31ca26[_0x1e65('0x39')][_0x1e65('0x5b')]?_0x31ca26[_0x1e65('0x39')]:_0x109e87['model'];if(!_0x4d6067[_0x1e65('0x34')]['hasOwnProperty']('nolimit')){_0x31ca26[_0x1e65('0x21')]=qs[_0x1e65('0x21')](_0x4d6067[_0x1e65('0x34')][_0x1e65('0x21')]);_0x31ca26['offset']=qs['offset'](_0x4d6067['query'][_0x1e65('0x1e')]);}_0x31ca26[_0x1e65('0x3d')]=qs['sort'](_0x4d6067[_0x1e65('0x34')][_0x1e65('0x3e')]);_0x31ca26[_0x1e65('0x3f')]=qs[_0x1e65('0x36')](_[_0x1e65('0x40')](_0x4d6067[_0x1e65('0x34')],_0x109e87[_0x1e65('0x36')]));_0x31ca26[_0x1e65('0x3f')][_0x1e65('0x57')]=_0x231f74['id'];if(_0x4d6067[_0x1e65('0x34')][_0x1e65('0x43')]){_0x31ca26[_0x1e65('0x3f')]=_[_0x1e65('0x41')](_0x31ca26[_0x1e65('0x3f')],{'$or':_[_0x1e65('0x30')](_0x31ca26['attributes'],function(_0x440f12){var _0x2f6c59={};_0x2f6c59[_0x440f12]={'$like':'%'+_0x4d6067[_0x1e65('0x34')][_0x1e65('0x43')]+'%'};return _0x2f6c59;})});}_0x31ca26=_['merge']({},_0x31ca26,_0x4d6067[_0x1e65('0x44')]);return db[_0x1e65('0x58')]['count']({'where':_0x31ca26[_0x1e65('0x3f')]})[_0x1e65('0x26')](function(_0x367fe9){_0x1326a7[_0x1e65('0x20')]=_0x367fe9;if(_0x4d6067[_0x1e65('0x34')]['includeAll']){_0x31ca26[_0x1e65('0x46')]=[{'all':!![]}];}return db[_0x1e65('0x58')][_0x1e65('0x48')](_0x31ca26);})[_0x1e65('0x26')](function(_0x52eb84){_0x1326a7[_0x1e65('0x49')]=_0x52eb84;return _0x1326a7;});}})['then'](respondWithFilteredResult(_0x2bb23c,_0x31ca26))[_0x1e65('0x4a')](handleError(_0x2bb23c,null));};exports[_0x1e65('0x5c')]=function(_0x1448b1,_0xde2708,_0x5252b3){return db[_0x1e65('0x47')][_0x1e65('0x51')]({'where':{'id':_0x1448b1[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0xde2708,null))[_0x1e65('0x26')](function(_0x447c10){if(_0x447c10){return _0x447c10['removeDispositions'](_0x1448b1[_0x1e65('0x34')][_0x1e65('0x5d')]);}})[_0x1e65('0x26')](respondWithStatusCode(_0xde2708,null))[_0x1e65('0x4a')](handleError(_0xde2708,null));};exports[_0x1e65('0x5e')]=function(_0x4087a6,_0x507a78,_0x622f5f){return db[_0x1e65('0x47')][_0x1e65('0x51')]({'where':{'id':_0x4087a6[_0x1e65('0x4b')]['id']}})['then'](handleEntityNotFound(_0x507a78,null))['then'](function(_0x5e3547){if(_0x5e3547){var _0xc5f8bc=[];var _0x89efe7={'success':[],'errors':[]};return db[_0x1e65('0x5f')][_0x1e65('0x55')]()[_0x1e65('0x26')](function(_0x3cf52e){if(_0x4087a6[_0x1e65('0x4e')][_0x1e65('0x60')]&&_[_0x1e65('0x61')](_0x4087a6['body'][_0x1e65('0x60')])){if(_0x4087a6[_0x1e65('0x4e')][_0x1e65('0x60')][_0x1e65('0x5b')]){_0x4087a6[_0x1e65('0x4e')][_0x1e65('0x60')]=_0x4087a6[_0x1e65('0x4e')][_0x1e65('0x60')][_0x1e65('0x62')](';')+';';}else{_0x4087a6[_0x1e65('0x4e')]['tags']=null;}}else{_0x4087a6[_0x1e65('0x4e')]['tags']=null;}if(_0x4087a6['body']&&_[_0x1e65('0x61')](_0x4087a6[_0x1e65('0x4e')])){for(var _0x18dec7=0x0;_0x18dec7<_0x4087a6[_0x1e65('0x4e')][_0x1e65('0x5b')];_0x18dec7+=0x1){_0x4087a6[_0x1e65('0x4e')][_0x18dec7]['ListId']=_0x4087a6[_0x1e65('0x4b')]['id'];_0xc5f8bc[_0x1e65('0x63')](_0x4087a6[_0x1e65('0x4e')][_0x18dec7]);}return BPromise['each'](_0xc5f8bc,function(_0x46948a){return db['CmContact'][_0x1e65('0x4d')](_['omit'](_0x46948a,[_0x1e65('0x5d'),'id'])||{},{'fields':_[_0x1e65('0x35')](_0x3cf52e),'raw':!![]})[_0x1e65('0x26')](function(_0x13fbc3){_0x89efe7[_0x1e65('0x64')]['push'](_0x13fbc3[_0x1e65('0x65')]);})[_0x1e65('0x4a')](function(_0x432563){_0x89efe7[_0x1e65('0x66')][_0x1e65('0x63')]({'data':_0x46948a,'error':_0x432563[_0x1e65('0x67')]});});})['then'](function(_0x106d17){return _0x89efe7;})[_0x1e65('0x4a')](function(_0x224626){return _0x224626;});}else{_0x507a78[_0x1e65('0x1c')](0x190)[_0x1e65('0x1d')]({'message':_0x1e65('0x68')});}});}})['then'](respondWithResult(_0x507a78,null))[_0x1e65('0x4a')](handleError(_0x507a78,null));};exports[_0x1e65('0x69')]=function(_0x286f13,_0xe35c9f,_0x4ca6d1){var _0x320b11;return db['CmList']['find']({'where':{'id':_0x286f13['params']['id']},'include':[{'model':db[_0x1e65('0x6a')],'as':_0x1e65('0x6b')}]})['then'](handleEntityNotFound(_0xe35c9f,null))['then'](function(_0x3a72a5){if(_0x3a72a5){_0x320b11=_0x3a72a5;return db[_0x1e65('0x5f')][_0x1e65('0x4c')];}})['then'](function(_0x4f2985){if(_0x4f2985){var _0x536e7c={};var _0x357b09={};_0x357b09['model']=_[_0x1e65('0x6c')](_[_0x1e65('0x35')](_0x4f2985),_[_0x1e65('0x30')](_0x320b11[_0x1e65('0x6b')],function(_0x3e8c91){return util[_0x1e65('0x6d')]('cf_%d',_0x3e8c91['id']);}));_0x357b09[_0x1e65('0x34')]=_[_0x1e65('0x35')](_0x286f13[_0x1e65('0x34')]);_0x357b09[_0x1e65('0x36')]=_[_0x1e65('0x37')](_0x357b09['model'],_0x357b09['query']);_0x536e7c[_0x1e65('0x39')]=_[_0x1e65('0x37')](_0x357b09[_0x1e65('0x38')],qs[_0x1e65('0x3a')](_0x286f13[_0x1e65('0x34')][_0x1e65('0x3a')]));_0x536e7c['attributes']=_0x536e7c['attributes'][_0x1e65('0x5b')]?_0x536e7c[_0x1e65('0x39')]:_0x357b09[_0x1e65('0x38')];if(!_0x286f13[_0x1e65('0x34')]['hasOwnProperty'](_0x1e65('0x3c'))){_0x536e7c[_0x1e65('0x21')]=qs[_0x1e65('0x21')](_0x286f13['query']['limit']);_0x536e7c[_0x1e65('0x1e')]=qs[_0x1e65('0x1e')](_0x286f13['query']['offset']);}_0x536e7c['order']=qs[_0x1e65('0x3e')](_0x286f13['query'][_0x1e65('0x3e')]);_0x536e7c['where']=qs[_0x1e65('0x36')](_[_0x1e65('0x40')](_0x286f13['query'],_0x357b09[_0x1e65('0x36')]));_0x536e7c['raw']=!![];if(_0x286f13[_0x1e65('0x34')]['filter']){_0x536e7c[_0x1e65('0x3f')]=_[_0x1e65('0x41')](_0x536e7c[_0x1e65('0x3f')],{'$or':_[_0x1e65('0x30')](_0x536e7c['attributes'],function(_0x4a5a76){var _0x597164={};_0x597164[_0x4a5a76]={'$like':'%'+_0x286f13['query'][_0x1e65('0x43')]+'%'};return _0x597164;})});}_0x536e7c=_[_0x1e65('0x41')]({},_0x536e7c,_0x286f13[_0x1e65('0x44')]);return _0x320b11['getContacts'](_0x536e7c);}})[_0x1e65('0x26')](respondWithResult(_0xe35c9f,null))[_0x1e65('0x4a')](handleError(_0xe35c9f,null));};exports['getContactsCsv']=function(_0xbab172,_0x4774e8,_0x1fc52d){var _0x42dd75;return db[_0x1e65('0x47')][_0x1e65('0x51')]({'where':{'id':_0xbab172[_0x1e65('0x4b')]['id']},'include':[{'model':db[_0x1e65('0x6a')],'as':'CustomFields'}]})[_0x1e65('0x26')](handleEntityNotFound(_0x4774e8,null))[_0x1e65('0x26')](function(_0x4187b4){if(_0x4187b4){_0x42dd75=_0x4187b4;return db[_0x1e65('0x5f')]['rawAttributes'];}})[_0x1e65('0x26')](function(_0x50cd7a){if(_0x50cd7a){var _0x56efe7={};var _0x2322a3={};_0x2322a3[_0x1e65('0x38')]=_['concat'](_[_0x1e65('0x35')](_0x50cd7a),_['map'](_0x42dd75[_0x1e65('0x6b')],function(_0x326a1c){return util['format'](_0x1e65('0x6e'),_0x326a1c['id']);}));_0x2322a3[_0x1e65('0x34')]=_[_0x1e65('0x35')](_0xbab172[_0x1e65('0x34')]);_0x2322a3[_0x1e65('0x36')]=_['intersection'](_0x2322a3['model'],_0x2322a3['query']);_0x56efe7[_0x1e65('0x39')]=_[_0x1e65('0x37')](_0x2322a3['model'],qs[_0x1e65('0x3a')](_0xbab172['query'][_0x1e65('0x3a')]));_0x56efe7[_0x1e65('0x39')]=_0x56efe7[_0x1e65('0x39')][_0x1e65('0x5b')]?_0x56efe7[_0x1e65('0x39')]:_0x2322a3[_0x1e65('0x38')];if(!_0xbab172['query']['hasOwnProperty'](_0x1e65('0x3c'))){_0x56efe7[_0x1e65('0x21')]=qs[_0x1e65('0x21')](_0xbab172[_0x1e65('0x34')][_0x1e65('0x21')]);_0x56efe7[_0x1e65('0x1e')]=qs['offset'](_0xbab172[_0x1e65('0x34')][_0x1e65('0x1e')]);}_0x56efe7[_0x1e65('0x3d')]=qs[_0x1e65('0x3e')](_0xbab172[_0x1e65('0x34')]['sort']);_0x56efe7['where']=qs[_0x1e65('0x36')](_[_0x1e65('0x40')](_0xbab172[_0x1e65('0x34')],_0x2322a3[_0x1e65('0x36')]));_0x56efe7[_0x1e65('0x6f')]=!![];if(_0xbab172[_0x1e65('0x34')][_0x1e65('0x43')]){_0x56efe7[_0x1e65('0x3f')]=_[_0x1e65('0x41')](_0x56efe7[_0x1e65('0x3f')],{'$or':_[_0x1e65('0x30')](_0x56efe7[_0x1e65('0x39')],function(_0x46436c){var _0x200262={};_0x200262[_0x46436c]={'$like':'%'+_0xbab172['query']['filter']+'%'};return _0x200262;})});}_0x56efe7=_[_0x1e65('0x41')]({},_0x56efe7,_0xbab172[_0x1e65('0x44')]);return _0x42dd75[_0x1e65('0x69')](_0x56efe7);}})[_0x1e65('0x26')](function(_0x57d371){if(!_[_0x1e65('0x70')](_0x57d371)){var _0x106ebb=toCsv(_0x57d371);var _0x22d4e6=Date[_0x1e65('0x71')]();fs[_0x1e65('0x72')](util[_0x1e65('0x6d')](_0x1e65('0x73'),_0x42dd75['id'],_0x22d4e6),_0x106ebb);_0x4774e8[_0x1e65('0x74')](_0x1e65('0x75'),'attachment;\x20filename='+util[_0x1e65('0x6d')](_0x1e65('0x76'),_0x42dd75['id'],_0x22d4e6));_0x4774e8[_0x1e65('0x74')](_0x1e65('0x77'),_0x1e65('0x78'));return _0x4774e8[_0x1e65('0x79')](util['format'](_0x1e65('0x73'),_0x42dd75['id'],_0x22d4e6));}else{return _0x4774e8[_0x1e65('0x2b')](0xcc);}})['catch'](handleError(_0x4774e8,null));};exports['addCustomField']=function(_0x24c021,_0x3cc2bb,_0x3c53d6){var _0x18cd0c;delete _0x24c021[_0x1e65('0x4e')]['id'];return db[_0x1e65('0x47')][_0x1e65('0x5a')]({'where':{'id':_0x24c021[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0x3cc2bb,null))[_0x1e65('0x26')](function(_0xa73c33){if(_0xa73c33){return db['sequelize']['transaction'](function(_0x370e05){return db[_0x1e65('0x6a')][_0x1e65('0x4d')](_0x24c021[_0x1e65('0x4e')],{'transaction':_0x370e05})[_0x1e65('0x26')](function(_0x73ccbc){_0x18cd0c=_0x73ccbc;return _0xa73c33[_0x1e65('0x7a')](_0x73ccbc,{'transaction':_0x370e05});})[_0x1e65('0x26')](function(){var _0x1397bf={'type':db[_0x1e65('0x7b')][_0x1e65('0x7c')],'transaction':_0x370e05};switch(_0x24c021['body'][_0x1e65('0x32')]){case'text':_0x1397bf[_0x1e65('0x32')]=db[_0x1e65('0x7b')]['TEXT'];break;case'number':_0x1397bf[_0x1e65('0x32')]=db[_0x1e65('0x7b')]['INTEGER'];break;case _0x1e65('0x7d'):_0x1397bf[_0x1e65('0x32')]=db[_0x1e65('0x7b')]['BOOLEAN'];_0x1397bf[_0x1e65('0x7e')]=![];break;default:}return db[_0x1e65('0x7f')][_0x1e65('0x80')][_0x1e65('0x81')](_0x1e65('0x82'),util['format'](_0x1e65('0x83'),_0x18cd0c['id']),_0x1397bf);})[_0x1e65('0x26')](function(){return _0x18cd0c;});});}})[_0x1e65('0x26')](respondWithResult(_0x3cc2bb,null))[_0x1e65('0x4a')](handleError(_0x3cc2bb,null));};exports[_0x1e65('0x84')]=function(_0x272713,_0x653565,_0xf49863){var _0x35ec09={};var _0x36089a={};var _0x346bb0;var _0x5c2806;return db[_0x1e65('0x47')][_0x1e65('0x5a')]({'where':{'id':_0x272713[_0x1e65('0x4b')]['id']}})['then'](handleEntityNotFound(_0x653565,null))[_0x1e65('0x26')](function(_0x474ec9){if(_0x474ec9){_0x346bb0=_0x474ec9;_0x36089a[_0x1e65('0x38')]=_[_0x1e65('0x35')](db[_0x1e65('0x6a')][_0x1e65('0x4c')]);_0x36089a[_0x1e65('0x34')]=_[_0x1e65('0x35')](_0x272713[_0x1e65('0x34')]);_0x36089a[_0x1e65('0x36')]=_[_0x1e65('0x37')](_0x36089a[_0x1e65('0x38')],_0x36089a['query']);_0x35ec09[_0x1e65('0x39')]=_['intersection'](_0x36089a['model'],qs[_0x1e65('0x3a')](_0x272713['query'][_0x1e65('0x3a')]));_0x35ec09[_0x1e65('0x39')]=_0x35ec09[_0x1e65('0x39')][_0x1e65('0x5b')]?_0x35ec09[_0x1e65('0x39')]:_0x36089a[_0x1e65('0x38')];_0x35ec09[_0x1e65('0x3d')]=qs[_0x1e65('0x3e')](_0x272713[_0x1e65('0x34')][_0x1e65('0x3e')]);_0x35ec09[_0x1e65('0x3f')]=qs[_0x1e65('0x36')](_[_0x1e65('0x40')](_0x272713[_0x1e65('0x34')],_0x36089a[_0x1e65('0x36')]));_0x35ec09['where']=_['merge'](_0x35ec09[_0x1e65('0x3f')],{'$or':[{'ListId':_0x474ec9['id']},{'ListId':null}]});if(_0x272713[_0x1e65('0x34')][_0x1e65('0x43')]){_0x35ec09[_0x1e65('0x3f')]=_[_0x1e65('0x41')](_0x35ec09[_0x1e65('0x3f')],{'$or':_[_0x1e65('0x30')](_0x35ec09[_0x1e65('0x39')],function(_0x38b82f){var _0x23433f={};_0x23433f[_0x38b82f]={'$like':'%'+_0x272713[_0x1e65('0x34')][_0x1e65('0x43')]+'%'};return _0x23433f;})});}_0x35ec09=_[_0x1e65('0x41')]({},_0x35ec09,_0x272713[_0x1e65('0x44')]);return db[_0x1e65('0x6a')][_0x1e65('0x85')](_0x35ec09);}})[_0x1e65('0x26')](respondWithResult(_0x653565,null))[_0x1e65('0x4a')](handleError(_0x653565,null));};exports[_0x1e65('0x86')]=function(_0xdb0b10,_0x52be95,_0x1e2675){return db[_0x1e65('0x47')]['find']({'where':{'id':_0xdb0b10[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0x52be95,null))[_0x1e65('0x26')](function(_0x32b238){if(_0x32b238){return _0x32b238['addAgents'](_0xdb0b10[_0x1e65('0x4e')]['ids'],_['omit'](_0xdb0b10[_0x1e65('0x4e')],[_0x1e65('0x5d'),'id'])||{})[_0x1e65('0x87')](function(_0x3a934a){for(var _0x12864d=0x0;_0x12864d<_0xdb0b10[_0x1e65('0x4e')][_0x1e65('0x5d')][_0x1e65('0x5b')];_0x12864d+=0x1){socket[_0x1e65('0x88')]('userCmList:save',{'UserId':Number(_0xdb0b10['body']['ids'][_0x12864d]),'CmListId':Number(_0xdb0b10['params']['id'])});}return _0x3a934a;});}})[_0x1e65('0x26')](respondWithResult(_0x52be95,null))[_0x1e65('0x4a')](handleError(_0x52be95,null));};exports['removeAgents']=function(_0x55164b,_0x19ad22,_0x2bde39){return db[_0x1e65('0x47')][_0x1e65('0x51')]({'where':{'id':_0x55164b[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0x19ad22,null))[_0x1e65('0x26')](function(_0x573676){if(_0x573676){return _0x573676[_0x1e65('0x89')](_0x55164b['query'][_0x1e65('0x5d')])[_0x1e65('0x26')](function(){if(_[_0x1e65('0x61')](_0x55164b[_0x1e65('0x34')][_0x1e65('0x5d')])){for(var _0x4ed94a=0x0;_0x4ed94a<_0x55164b[_0x1e65('0x34')]['ids'][_0x1e65('0x5b')];_0x4ed94a+=0x1){socket[_0x1e65('0x88')](_0x1e65('0x8a'),{'UserId':Number(_0x55164b[_0x1e65('0x34')][_0x1e65('0x5d')][_0x4ed94a]),'CmListId':Number(_0x55164b[_0x1e65('0x4b')]['id'])});}}else{socket[_0x1e65('0x88')](_0x1e65('0x8a'),{'UserId':Number(_0x55164b['query'][_0x1e65('0x5d')]),'CmListId':Number(_0x55164b['params']['id'])});}});}})['then'](respondWithStatusCode(_0x19ad22,null))[_0x1e65('0x4a')](handleError(_0x19ad22,null));};exports['getAgents']=function(_0x8e10e4,_0x52be20,_0x47a905){var _0x443e9d={};var _0x5809b4={};var _0x5ab868;var _0xbbfa04;return db[_0x1e65('0x47')][_0x1e65('0x5a')]({'where':{'id':_0x8e10e4[_0x1e65('0x4b')]['id']}})[_0x1e65('0x26')](handleEntityNotFound(_0x52be20,null))['then'](function(_0x4b8c5b){if(_0x4b8c5b){_0x5ab868=_0x4b8c5b;_0x5809b4[_0x1e65('0x38')]=_[_0x1e65('0x35')](db['User'][_0x1e65('0x4c')]);_0x5809b4[_0x1e65('0x34')]=_[_0x1e65('0x35')](_0x8e10e4['query']);_0x5809b4[_0x1e65('0x36')]=_[_0x1e65('0x37')](_0x5809b4[_0x1e65('0x38')],_0x5809b4[_0x1e65('0x34')]);_0x443e9d[_0x1e65('0x39')]=_[_0x1e65('0x37')](_0x5809b4[_0x1e65('0x38')],qs[_0x1e65('0x3a')](_0x8e10e4[_0x1e65('0x34')][_0x1e65('0x3a')]));_0x443e9d[_0x1e65('0x39')]=_0x443e9d[_0x1e65('0x39')]['length']?_0x443e9d[_0x1e65('0x39')]:_0x5809b4['model'];_0x443e9d['order']=qs['sort'](_0x8e10e4[_0x1e65('0x34')][_0x1e65('0x3e')]);_0x443e9d[_0x1e65('0x3f')]=qs[_0x1e65('0x36')](_[_0x1e65('0x40')](_0x8e10e4[_0x1e65('0x34')],_0x5809b4[_0x1e65('0x36')]));if(_0x8e10e4['query'][_0x1e65('0x43')]){_0x443e9d['where']=_[_0x1e65('0x41')](_0x443e9d[_0x1e65('0x3f')],{'$or':_[_0x1e65('0x30')](_0x443e9d[_0x1e65('0x39')],function(_0xf7e0d9){var _0x233de2={};_0x233de2[_0xf7e0d9]={'$like':'%'+_0x8e10e4[_0x1e65('0x34')][_0x1e65('0x43')]+'%'};return _0x233de2;})});}_0x443e9d=_['merge']({},_0x443e9d,_0x8e10e4[_0x1e65('0x44')]);return _0x5ab868[_0x1e65('0x8b')](_0x443e9d);}})['then'](function(_0x547fdf){if(_0x547fdf){_0xbbfa04=_0x547fdf['length'];if(!_0x8e10e4[_0x1e65('0x34')][_0x1e65('0x3b')](_0x1e65('0x3c'))){_0x443e9d[_0x1e65('0x21')]=qs['limit'](_0x8e10e4['query'][_0x1e65('0x21')]);_0x443e9d[_0x1e65('0x1e')]=qs[_0x1e65('0x1e')](_0x8e10e4['query']['offset']);}return _0x5ab868[_0x1e65('0x8b')](_0x443e9d);}})[_0x1e65('0x26')](function(_0x87a470){if(_0x87a470){return _0x87a470?{'count':_0xbbfa04,'rows':_0x87a470}:null;}})[_0x1e65('0x26')](respondWithResult(_0x52be20,null))[_0x1e65('0x4a')](handleError(_0x52be20,null));};
\ No newline at end of file
+var _0x480f=['getContactsCsv','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','Content-type','text/csv','download','sendStatus','addCustomField','findOne','sequelize','transaction','addCustomFields','text','Sequelize','number','switch','queryInterface','addColumn','cm_contacts','getCustomFields','findAndCountAll','addAgents','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','json','offset','undefined','limit','count','status','set','apply','reject','then','get','Lists','end','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','CmList','include','findAll','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','ListId','getDispositions','pick','Disposition','removeDispositions','ids','addContacts','CmContact','tags','isArray','omit','push','dataValues','errors','message','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x480f,0x13c));var _0xf480=function(_0x3b0e76,_0x239221){_0x3b0e76=_0x3b0e76-0x0;var _0x1e4af4=_0x480f[_0x3b0e76];return _0x1e4af4;};'use strict';var emlformat=require(_0xf480('0x0'));var rimraf=require(_0xf480('0x1'));var zipdir=require(_0xf480('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf480('0x3'));var moment=require(_0xf480('0x4'));var BPromise=require(_0xf480('0x5'));var Mustache=require(_0xf480('0x6'));var util=require(_0xf480('0x7'));var path=require(_0xf480('0x8'));var sox=require(_0xf480('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf480('0xa'));var crypto=require('crypto');var jsforce=require(_0xf480('0xb'));var deskjs=require(_0xf480('0xc'));var toCsv=require(_0xf480('0xd'));var querystring=require(_0xf480('0xe'));var Papa=require(_0xf480('0xf'));var Redis=require(_0xf480('0x10'));var authService=require(_0xf480('0x11'));var qs=require(_0xf480('0x12'));var as=require(_0xf480('0x13'));var hardwareService=require(_0xf480('0x14'));var logger=require(_0xf480('0x15'))(_0xf480('0x16'));var utils=require(_0xf480('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf480('0x18'));var db=require(_0xf480('0x19'))['db'];config[_0xf480('0x1a')]=_[_0xf480('0x1b')](config[_0xf480('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xf480('0x1c'))(new Redis(config[_0xf480('0x1a')]));require('./cmList.socket')[_0xf480('0x1d')](socket);function respondWithStatusCode(_0x28976f,_0x28e8a1){_0x28e8a1=_0x28e8a1||0xcc;return function(_0x4e640f){if(_0x4e640f){return _0x28976f['sendStatus'](_0x28e8a1);}return _0x28976f['status'](_0x28e8a1)['end']();};}function respondWithResult(_0x138394,_0x889d3b){_0x889d3b=_0x889d3b||0xc8;return function(_0x5a76bb){if(_0x5a76bb){return _0x138394['status'](_0x889d3b)[_0xf480('0x1e')](_0x5a76bb);}};}function respondWithFilteredResult(_0x4dbfeb,_0x272b25){return function(_0x154d28){if(_0x154d28){var _0x3f838c=typeof _0x272b25[_0xf480('0x1f')]===_0xf480('0x20')&&typeof _0x272b25[_0xf480('0x21')]===_0xf480('0x20');var _0x9c6237=_0x154d28[_0xf480('0x22')];var _0x1e3d93=_0x3f838c?0x0:_0x272b25[_0xf480('0x1f')];var _0x1c8f6b=_0x3f838c?_0x154d28['count']:_0x272b25[_0xf480('0x1f')]+_0x272b25[_0xf480('0x21')];var _0x58ec09;if(_0x1c8f6b>=_0x9c6237){_0x1c8f6b=_0x9c6237;_0x58ec09=0xc8;}else{_0x58ec09=0xce;}_0x4dbfeb[_0xf480('0x23')](_0x58ec09);return _0x4dbfeb[_0xf480('0x24')]('Content-Range',_0x1e3d93+'-'+_0x1c8f6b+'/'+_0x9c6237)[_0xf480('0x1e')](_0x154d28);}return null;};}function patchUpdates(_0x1b84a6){return function(_0xefb95b){try{jsonpatch[_0xf480('0x25')](_0xefb95b,_0x1b84a6,!![]);}catch(_0x13ded4){return BPromise[_0xf480('0x26')](_0x13ded4);}return _0xefb95b['save']();};}function saveUpdates(_0xa93acc,_0x1da916){return function(_0x288703){if(_0x288703){return _0x288703['update'](_0xa93acc)[_0xf480('0x27')](function(_0x319641){return _0x319641;});}return null;};}function removeEntity(_0x5a8567,_0x5502a3){return function(_0x4ab02c){if(_0x4ab02c){return _0x4ab02c['destroy']()['then'](function(){var _0x1c6022=_0x4ab02c[_0xf480('0x28')]({'plain':!![]});var _0xaaaed5=_0xf480('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0xaaaed5,'resourceId':_0x1c6022['id']}})[_0xf480('0x27')](function(){return _0x4ab02c;});})[_0xf480('0x27')](function(){_0x5a8567[_0xf480('0x23')](0xcc)[_0xf480('0x2a')]();});}};}function handleEntityNotFound(_0x3965d5,_0x49c2cc){return function(_0x1f8598){if(!_0x1f8598){_0x3965d5['sendStatus'](0x194);}return _0x1f8598;};}function handleError(_0x5bcb15,_0x4da44b){_0x4da44b=_0x4da44b||0x1f4;return function(_0x4ff770){logger[_0xf480('0x2b')](_0x4ff770[_0xf480('0x2c')]);if(_0x4ff770[_0xf480('0x2d')]){delete _0x4ff770[_0xf480('0x2d')];}_0x5bcb15['status'](_0x4da44b)['send'](_0x4ff770);};}exports[_0xf480('0x2e')]=function(_0x301ce2,_0x5de38a){var _0x25c412={},_0x2a4605={},_0x3c001d={'count':0x0,'rows':[]};var _0xe6c6ac=_['map'](db['CmList'][_0xf480('0x2f')],function(_0x3dde0d){return{'name':_0x3dde0d[_0xf480('0x30')],'type':_0x3dde0d[_0xf480('0x31')][_0xf480('0x32')]};});_0x2a4605[_0xf480('0x33')]=_[_0xf480('0x34')](_0xe6c6ac,_0xf480('0x2d'));_0x2a4605[_0xf480('0x35')]=_[_0xf480('0x36')](_0x301ce2[_0xf480('0x35')]);_0x2a4605['filters']=_[_0xf480('0x37')](_0x2a4605[_0xf480('0x33')],_0x2a4605['query']);_0x25c412[_0xf480('0x38')]=_[_0xf480('0x37')](_0x2a4605['model'],qs[_0xf480('0x39')](_0x301ce2[_0xf480('0x35')][_0xf480('0x39')]));_0x25c412[_0xf480('0x38')]=_0x25c412[_0xf480('0x38')][_0xf480('0x3a')]?_0x25c412[_0xf480('0x38')]:_0x2a4605[_0xf480('0x33')];if(!_0x301ce2['query'][_0xf480('0x3b')](_0xf480('0x3c'))){_0x25c412[_0xf480('0x21')]=qs[_0xf480('0x21')](_0x301ce2[_0xf480('0x35')][_0xf480('0x21')]);_0x25c412[_0xf480('0x1f')]=qs[_0xf480('0x1f')](_0x301ce2[_0xf480('0x35')][_0xf480('0x1f')]);}_0x25c412[_0xf480('0x3d')]=qs[_0xf480('0x3e')](_0x301ce2[_0xf480('0x35')][_0xf480('0x3e')]);_0x25c412[_0xf480('0x3f')]=qs[_0xf480('0x40')](_['pick'](_0x301ce2[_0xf480('0x35')],_0x2a4605[_0xf480('0x40')]),_0xe6c6ac);if(_0x301ce2[_0xf480('0x35')][_0xf480('0x41')]){_0x25c412[_0xf480('0x3f')]=_['merge'](_0x25c412['where'],{'$or':_[_0xf480('0x34')](_0xe6c6ac,function(_0x4dc082){if(_0x4dc082['type']!==_0xf480('0x42')){var _0x39889b={};_0x39889b[_0x4dc082[_0xf480('0x2d')]]={'$like':'%'+_0x301ce2[_0xf480('0x35')][_0xf480('0x41')]+'%'};return _0x39889b;}})});}_0x25c412=_[_0xf480('0x43')]({},_0x25c412,_0x301ce2[_0xf480('0x44')]);var _0x5b6ba9={'where':_0x25c412[_0xf480('0x3f')]};return db[_0xf480('0x45')][_0xf480('0x22')](_0x5b6ba9)[_0xf480('0x27')](function(_0x4bc2ce){_0x3c001d['count']=_0x4bc2ce;if(_0x301ce2[_0xf480('0x35')]['includeAll']){_0x25c412[_0xf480('0x46')]=[{'all':!![]}];}return db[_0xf480('0x45')][_0xf480('0x47')](_0x25c412);})['then'](function(_0xcaa04c){_0x3c001d['rows']=_0xcaa04c;return _0x3c001d;})[_0xf480('0x27')](respondWithFilteredResult(_0x5de38a,_0x25c412))['catch'](handleError(_0x5de38a,null));};exports['show']=function(_0x17b340,_0x33fcc3){var _0x4de78e={'raw':![],'where':{'id':_0x17b340[_0xf480('0x48')]['id']}},_0x178b77={};_0x178b77[_0xf480('0x33')]=_[_0xf480('0x36')](db[_0xf480('0x45')][_0xf480('0x2f')]);_0x178b77[_0xf480('0x35')]=_['keys'](_0x17b340[_0xf480('0x35')]);_0x178b77['filters']=_[_0xf480('0x37')](_0x178b77[_0xf480('0x33')],_0x178b77[_0xf480('0x35')]);_0x4de78e['attributes']=_[_0xf480('0x37')](_0x178b77[_0xf480('0x33')],qs[_0xf480('0x39')](_0x17b340['query'][_0xf480('0x39')]));_0x4de78e[_0xf480('0x38')]=_0x4de78e[_0xf480('0x38')][_0xf480('0x3a')]?_0x4de78e[_0xf480('0x38')]:_0x178b77[_0xf480('0x33')];if(_0x17b340[_0xf480('0x35')][_0xf480('0x49')]){_0x4de78e[_0xf480('0x46')]=[{'all':!![]}];}_0x4de78e=_['merge']({},_0x4de78e,_0x17b340['options']);return db[_0xf480('0x45')][_0xf480('0x4a')](_0x4de78e)['then'](handleEntityNotFound(_0x33fcc3,null))[_0xf480('0x27')](respondWithResult(_0x33fcc3,null))['catch'](handleError(_0x33fcc3,null));};exports[_0xf480('0x4b')]=function(_0x424990,_0x1df448){return db['CmList'][_0xf480('0x4b')](_0x424990['body'],{})[_0xf480('0x27')](function(_0x1537e8){var _0x4e2881=_0x424990[_0xf480('0x4c')]['get']({'plain':!![]});if(!_0x4e2881)throw new Error(_0xf480('0x4d'));if(_0x4e2881[_0xf480('0x4e')]==='user'){var _0x39dc4e=_0x1537e8[_0xf480('0x28')]({'plain':!![]});var _0x3868ac=_0xf480('0x29');return db['UserProfileSection'][_0xf480('0x4a')]({'where':{'name':_0x3868ac,'userProfileId':_0x4e2881[_0xf480('0x4f')]},'raw':!![]})['then'](function(_0x1b51e1){if(_0x1b51e1&&_0x1b51e1[_0xf480('0x50')]===0x0){return db[_0xf480('0x51')][_0xf480('0x4b')]({'name':_0x39dc4e[_0xf480('0x2d')],'resourceId':_0x39dc4e['id'],'type':_0x1b51e1[_0xf480('0x2d')],'sectionId':_0x1b51e1['id']},{})[_0xf480('0x27')](function(){return _0x1537e8;});}else{return _0x1537e8;}})[_0xf480('0x52')](function(_0x15d3b5){logger['error'](_0xf480('0x53'),_0x15d3b5);throw _0x15d3b5;});}return _0x1537e8;})[_0xf480('0x27')](respondWithResult(_0x1df448,0xc9))['catch'](handleError(_0x1df448,null));};exports[_0xf480('0x54')]=function(_0x5e2a46,_0xbcc69a){if(_0x5e2a46['body']['id']){delete _0x5e2a46[_0xf480('0x55')]['id'];}return db[_0xf480('0x45')]['find']({'where':{'id':_0x5e2a46[_0xf480('0x48')]['id']}})['then'](handleEntityNotFound(_0xbcc69a,null))[_0xf480('0x27')](saveUpdates(_0x5e2a46['body'],null))[_0xf480('0x27')](respondWithResult(_0xbcc69a,null))['catch'](handleError(_0xbcc69a,null));};exports['destroy']=function(_0x2d0370,_0xc969db){return db['CmList'][_0xf480('0x4a')]({'where':{'id':_0x2d0370[_0xf480('0x48')]['id']}})[_0xf480('0x27')](handleEntityNotFound(_0xc969db,null))[_0xf480('0x27')](removeEntity(_0xc969db,null))[_0xf480('0x52')](handleError(_0xc969db,null));};exports[_0xf480('0x56')]=function(_0xc23d35,_0x1cbdec){return db[_0xf480('0x45')][_0xf480('0x56')]()['then'](respondWithResult(_0x1cbdec,null))[_0xf480('0x52')](handleError(_0x1cbdec,null));};exports[_0xf480('0x57')]=function(_0x3c25dd,_0x30f13d,_0x1379f5){if(_0x3c25dd[_0xf480('0x55')]['id']){delete _0x3c25dd[_0xf480('0x55')]['id'];}return db[_0xf480('0x45')][_0xf480('0x4a')]({'where':{'id':_0x3c25dd['params']['id']}})[_0xf480('0x27')](handleEntityNotFound(_0x30f13d,null))[_0xf480('0x27')](function(_0x52f86f){if(_0x52f86f){_0x3c25dd['body'][_0xf480('0x58')]=_0x52f86f['id'];return db['Disposition'][_0xf480('0x4b')](_0x3c25dd[_0xf480('0x55')]);}})[_0xf480('0x27')](respondWithResult(_0x30f13d,null))[_0xf480('0x52')](handleError(_0x30f13d,null));};exports[_0xf480('0x59')]=function(_0x17e844,_0x43231b,_0x3e4234){var _0x5f5cbc={'raw':![],'where':{}};var _0x237515={};var _0x3dea61={'count':0x0,'rows':[]};return db[_0xf480('0x45')]['findOne']({'where':{'id':_0x17e844[_0xf480('0x48')]['id']}})[_0xf480('0x27')](handleEntityNotFound(_0x43231b,null))[_0xf480('0x27')](function(_0x5f16be){if(_0x5f16be){_0x237515[_0xf480('0x33')]=_[_0xf480('0x36')](db['Disposition'][_0xf480('0x2f')]);_0x237515[_0xf480('0x35')]=_[_0xf480('0x36')](_0x17e844[_0xf480('0x35')]);_0x237515[_0xf480('0x40')]=_[_0xf480('0x37')](_0x237515['model'],_0x237515[_0xf480('0x35')]);_0x5f5cbc[_0xf480('0x38')]=_[_0xf480('0x37')](_0x237515['model'],qs[_0xf480('0x39')](_0x17e844[_0xf480('0x35')][_0xf480('0x39')]));_0x5f5cbc[_0xf480('0x38')]=_0x5f5cbc['attributes'][_0xf480('0x3a')]?_0x5f5cbc[_0xf480('0x38')]:_0x237515['model'];if(!_0x17e844[_0xf480('0x35')]['hasOwnProperty'](_0xf480('0x3c'))){_0x5f5cbc['limit']=qs[_0xf480('0x21')](_0x17e844[_0xf480('0x35')][_0xf480('0x21')]);_0x5f5cbc[_0xf480('0x1f')]=qs[_0xf480('0x1f')](_0x17e844['query']['offset']);}_0x5f5cbc[_0xf480('0x3d')]=qs[_0xf480('0x3e')](_0x17e844[_0xf480('0x35')][_0xf480('0x3e')]);_0x5f5cbc[_0xf480('0x3f')]=qs[_0xf480('0x40')](_[_0xf480('0x5a')](_0x17e844[_0xf480('0x35')],_0x237515[_0xf480('0x40')]));_0x5f5cbc['where'][_0xf480('0x58')]=_0x5f16be['id'];if(_0x17e844[_0xf480('0x35')][_0xf480('0x41')]){_0x5f5cbc[_0xf480('0x3f')]=_[_0xf480('0x43')](_0x5f5cbc['where'],{'$or':_[_0xf480('0x34')](_0x5f5cbc[_0xf480('0x38')],function(_0x4e89c9){var _0x2915fa={};_0x2915fa[_0x4e89c9]={'$like':'%'+_0x17e844[_0xf480('0x35')][_0xf480('0x41')]+'%'};return _0x2915fa;})});}_0x5f5cbc=_[_0xf480('0x43')]({},_0x5f5cbc,_0x17e844[_0xf480('0x44')]);return db['Disposition'][_0xf480('0x22')]({'where':_0x5f5cbc[_0xf480('0x3f')]})[_0xf480('0x27')](function(_0x265f4b){_0x3dea61[_0xf480('0x22')]=_0x265f4b;if(_0x17e844['query'][_0xf480('0x49')]){_0x5f5cbc[_0xf480('0x46')]=[{'all':!![]}];}return db[_0xf480('0x5b')][_0xf480('0x47')](_0x5f5cbc);})[_0xf480('0x27')](function(_0x1e75d9){_0x3dea61['rows']=_0x1e75d9;return _0x3dea61;});}})[_0xf480('0x27')](respondWithFilteredResult(_0x43231b,_0x5f5cbc))[_0xf480('0x52')](handleError(_0x43231b,null));};exports[_0xf480('0x5c')]=function(_0x504252,_0x1d8a4e,_0x5573d5){return db[_0xf480('0x45')][_0xf480('0x4a')]({'where':{'id':_0x504252['params']['id']}})[_0xf480('0x27')](handleEntityNotFound(_0x1d8a4e,null))['then'](function(_0x5019d7){if(_0x5019d7){return _0x5019d7[_0xf480('0x5c')](_0x504252[_0xf480('0x35')][_0xf480('0x5d')]);}})['then'](respondWithStatusCode(_0x1d8a4e,null))['catch'](handleError(_0x1d8a4e,null));};exports[_0xf480('0x5e')]=function(_0x445929,_0x553175,_0x724ed){return db['CmList'][_0xf480('0x4a')]({'where':{'id':_0x445929['params']['id']}})[_0xf480('0x27')](handleEntityNotFound(_0x553175,null))['then'](function(_0x142f8c){if(_0x142f8c){var _0x288046=[];var _0x25f8a4={'success':[],'errors':[]};return db[_0xf480('0x5f')]['describe']()[_0xf480('0x27')](function(_0xf0a424){if(_0x445929[_0xf480('0x55')][_0xf480('0x60')]&&_[_0xf480('0x61')](_0x445929[_0xf480('0x55')][_0xf480('0x60')])){if(_0x445929[_0xf480('0x55')][_0xf480('0x60')][_0xf480('0x3a')]){_0x445929['body'][_0xf480('0x60')]=_0x445929[_0xf480('0x55')][_0xf480('0x60')]['join'](';')+';';}else{_0x445929[_0xf480('0x55')][_0xf480('0x60')]=null;}}else{_0x445929[_0xf480('0x55')][_0xf480('0x60')]=null;}if(_0x445929[_0xf480('0x55')]&&_[_0xf480('0x61')](_0x445929[_0xf480('0x55')])){for(var _0x1f5e4c=0x0;_0x1f5e4c<_0x445929['body'][_0xf480('0x3a')];_0x1f5e4c+=0x1){_0x445929[_0xf480('0x55')][_0x1f5e4c][_0xf480('0x58')]=_0x445929[_0xf480('0x48')]['id'];_0x288046['push'](_0x445929['body'][_0x1f5e4c]);}return BPromise['each'](_0x288046,function(_0x4012f5){return db[_0xf480('0x5f')][_0xf480('0x4b')](_[_0xf480('0x62')](_0x4012f5,[_0xf480('0x5d'),'id'])||{},{'fields':_['keys'](_0xf0a424),'raw':!![]})[_0xf480('0x27')](function(_0x5bf65c){_0x25f8a4['success'][_0xf480('0x63')](_0x5bf65c[_0xf480('0x64')]);})[_0xf480('0x52')](function(_0x3809b0){_0x25f8a4[_0xf480('0x65')]['push']({'data':_0x4012f5,'error':_0x3809b0[_0xf480('0x66')]});});})[_0xf480('0x27')](function(_0x45ecca){return _0x25f8a4;})[_0xf480('0x52')](function(_0x4f4ddd){return _0x4f4ddd;});}else{_0x553175[_0xf480('0x23')](0x190)[_0xf480('0x1e')]({'message':'Malformed\x20request\x20syntax'});}});}})['then'](respondWithResult(_0x553175,null))['catch'](handleError(_0x553175,null));};exports[_0xf480('0x67')]=function(_0x3af04e,_0x1a1d4a,_0x964e9){var _0x5b9a8f;return db[_0xf480('0x45')]['find']({'where':{'id':_0x3af04e[_0xf480('0x48')]['id']},'include':[{'model':db[_0xf480('0x68')],'as':_0xf480('0x69')}]})[_0xf480('0x27')](handleEntityNotFound(_0x1a1d4a,null))[_0xf480('0x27')](function(_0xe83441){if(_0xe83441){_0x5b9a8f=_0xe83441;return db['CmContact'][_0xf480('0x2f')];}})['then'](function(_0x188dc9){if(_0x188dc9){var _0x3a6c36={};var _0x1ef539={};_0x1ef539[_0xf480('0x33')]=_[_0xf480('0x6a')](_[_0xf480('0x36')](_0x188dc9),_[_0xf480('0x34')](_0x5b9a8f[_0xf480('0x69')],function(_0x41513b){return util[_0xf480('0x6b')](_0xf480('0x6c'),_0x41513b['id']);}));_0x1ef539[_0xf480('0x35')]=_[_0xf480('0x36')](_0x3af04e[_0xf480('0x35')]);_0x1ef539[_0xf480('0x40')]=_[_0xf480('0x37')](_0x1ef539[_0xf480('0x33')],_0x1ef539[_0xf480('0x35')]);_0x3a6c36[_0xf480('0x38')]=_['intersection'](_0x1ef539[_0xf480('0x33')],qs[_0xf480('0x39')](_0x3af04e['query']['fields']));_0x3a6c36[_0xf480('0x38')]=_0x3a6c36[_0xf480('0x38')][_0xf480('0x3a')]?_0x3a6c36[_0xf480('0x38')]:_0x1ef539[_0xf480('0x33')];if(!_0x3af04e['query']['hasOwnProperty'](_0xf480('0x3c'))){_0x3a6c36['limit']=qs['limit'](_0x3af04e[_0xf480('0x35')][_0xf480('0x21')]);_0x3a6c36['offset']=qs[_0xf480('0x1f')](_0x3af04e[_0xf480('0x35')][_0xf480('0x1f')]);}_0x3a6c36[_0xf480('0x3d')]=qs[_0xf480('0x3e')](_0x3af04e[_0xf480('0x35')][_0xf480('0x3e')]);_0x3a6c36[_0xf480('0x3f')]=qs['filters'](_[_0xf480('0x5a')](_0x3af04e['query'],_0x1ef539['filters']));_0x3a6c36[_0xf480('0x6d')]=!![];if(_0x3af04e[_0xf480('0x35')][_0xf480('0x41')]){_0x3a6c36[_0xf480('0x3f')]=_[_0xf480('0x43')](_0x3a6c36[_0xf480('0x3f')],{'$or':_[_0xf480('0x34')](_0x3a6c36[_0xf480('0x38')],function(_0x50afdf){var _0x271359={};_0x271359[_0x50afdf]={'$like':'%'+_0x3af04e[_0xf480('0x35')][_0xf480('0x41')]+'%'};return _0x271359;})});}_0x3a6c36=_[_0xf480('0x43')]({},_0x3a6c36,_0x3af04e[_0xf480('0x44')]);return _0x5b9a8f[_0xf480('0x67')](_0x3a6c36);}})['then'](respondWithResult(_0x1a1d4a,null))[_0xf480('0x52')](handleError(_0x1a1d4a,null));};exports[_0xf480('0x6e')]=function(_0x5e0628,_0x263c68,_0x471a87){var _0x3142f9;return db[_0xf480('0x45')][_0xf480('0x4a')]({'where':{'id':_0x5e0628[_0xf480('0x48')]['id']},'include':[{'model':db[_0xf480('0x68')],'as':'CustomFields'}]})[_0xf480('0x27')](handleEntityNotFound(_0x263c68,null))[_0xf480('0x27')](function(_0x54e5a6){if(_0x54e5a6){_0x3142f9=_0x54e5a6;return db[_0xf480('0x5f')][_0xf480('0x2f')];}})[_0xf480('0x27')](function(_0x3b526f){if(_0x3b526f){var _0x35cdbb={};var _0x25506f={};_0x25506f[_0xf480('0x33')]=_[_0xf480('0x6a')](_[_0xf480('0x36')](_0x3b526f),_[_0xf480('0x34')](_0x3142f9['CustomFields'],function(_0x15010c){return util[_0xf480('0x6b')]('cf_%d',_0x15010c['id']);}));_0x25506f[_0xf480('0x35')]=_[_0xf480('0x36')](_0x5e0628[_0xf480('0x35')]);_0x25506f['filters']=_[_0xf480('0x37')](_0x25506f[_0xf480('0x33')],_0x25506f[_0xf480('0x35')]);_0x35cdbb[_0xf480('0x38')]=_[_0xf480('0x37')](_0x25506f['model'],qs['fields'](_0x5e0628[_0xf480('0x35')][_0xf480('0x39')]));_0x35cdbb[_0xf480('0x38')]=_0x35cdbb[_0xf480('0x38')]['length']?_0x35cdbb[_0xf480('0x38')]:_0x25506f['model'];if(!_0x5e0628[_0xf480('0x35')]['hasOwnProperty'](_0xf480('0x3c'))){_0x35cdbb[_0xf480('0x21')]=qs['limit'](_0x5e0628[_0xf480('0x35')][_0xf480('0x21')]);_0x35cdbb[_0xf480('0x1f')]=qs[_0xf480('0x1f')](_0x5e0628[_0xf480('0x35')][_0xf480('0x1f')]);}_0x35cdbb['order']=qs[_0xf480('0x3e')](_0x5e0628['query'][_0xf480('0x3e')]);_0x35cdbb[_0xf480('0x3f')]=qs[_0xf480('0x40')](_['pick'](_0x5e0628[_0xf480('0x35')],_0x25506f['filters']));_0x35cdbb[_0xf480('0x6d')]=!![];if(_0x5e0628[_0xf480('0x35')][_0xf480('0x41')]){_0x35cdbb[_0xf480('0x3f')]=_[_0xf480('0x43')](_0x35cdbb['where'],{'$or':_['map'](_0x35cdbb[_0xf480('0x38')],function(_0xc9fec5){var _0x67803f={};_0x67803f[_0xc9fec5]={'$like':'%'+_0x5e0628[_0xf480('0x35')][_0xf480('0x41')]+'%'};return _0x67803f;})});}_0x35cdbb=_[_0xf480('0x43')]({},_0x35cdbb,_0x5e0628['options']);return _0x3142f9['getContacts'](_0x35cdbb);}})[_0xf480('0x27')](function(_0x406c6f){if(!_['isEmpty'](_0x406c6f)){var _0x3bed0e=toCsv(_0x406c6f);var _0x5071a5=Date[_0xf480('0x6f')]();fs[_0xf480('0x70')](util[_0xf480('0x6b')](_0xf480('0x71'),_0x3142f9['id'],_0x5071a5),_0x3bed0e);_0x263c68[_0xf480('0x72')]('Content-disposition',_0xf480('0x73')+util['format']('list_%d_%s.csv',_0x3142f9['id'],_0x5071a5));_0x263c68['setHeader'](_0xf480('0x74'),_0xf480('0x75'));return _0x263c68[_0xf480('0x76')](util[_0xf480('0x6b')]('/tmp/list_%d_%s.csv',_0x3142f9['id'],_0x5071a5));}else{return _0x263c68[_0xf480('0x77')](0xcc);}})[_0xf480('0x52')](handleError(_0x263c68,null));};exports[_0xf480('0x78')]=function(_0x205c3e,_0x2f4b8e,_0x8bd8ea){var _0x19c8a4;delete _0x205c3e[_0xf480('0x55')]['id'];return db[_0xf480('0x45')][_0xf480('0x79')]({'where':{'id':_0x205c3e[_0xf480('0x48')]['id']}})['then'](handleEntityNotFound(_0x2f4b8e,null))[_0xf480('0x27')](function(_0x290bdc){if(_0x290bdc){return db[_0xf480('0x7a')][_0xf480('0x7b')](function(_0x12ec0d){return db['CmCustomField'][_0xf480('0x4b')](_0x205c3e[_0xf480('0x55')],{'transaction':_0x12ec0d})[_0xf480('0x27')](function(_0xa9b72e){_0x19c8a4=_0xa9b72e;return _0x290bdc[_0xf480('0x7c')](_0xa9b72e,{'transaction':_0x12ec0d});})['then'](function(){var _0x2b2174={'type':db['Sequelize']['TEXT'],'transaction':_0x12ec0d};switch(_0x205c3e[_0xf480('0x55')][_0xf480('0x31')]){case _0xf480('0x7d'):_0x2b2174['type']=db[_0xf480('0x7e')]['TEXT'];break;case _0xf480('0x7f'):_0x2b2174[_0xf480('0x31')]=db[_0xf480('0x7e')]['INTEGER'];break;case _0xf480('0x80'):_0x2b2174[_0xf480('0x31')]=db[_0xf480('0x7e')]['BOOLEAN'];_0x2b2174['defaultValue']=![];break;default:}return db[_0xf480('0x7a')][_0xf480('0x81')][_0xf480('0x82')](_0xf480('0x83'),util[_0xf480('0x6b')]('cf_%s',_0x19c8a4['id']),_0x2b2174);})[_0xf480('0x27')](function(){return _0x19c8a4;});});}})['then'](respondWithResult(_0x2f4b8e,null))[_0xf480('0x52')](handleError(_0x2f4b8e,null));};exports[_0xf480('0x84')]=function(_0xa3f726,_0x20766a,_0x14911c){var _0xa5394={};var _0x507356={};var _0xfde0e2;var _0x17881d;return db[_0xf480('0x45')][_0xf480('0x79')]({'where':{'id':_0xa3f726[_0xf480('0x48')]['id']}})['then'](handleEntityNotFound(_0x20766a,null))[_0xf480('0x27')](function(_0x352b75){if(_0x352b75){_0xfde0e2=_0x352b75;_0x507356['model']=_[_0xf480('0x36')](db['CmCustomField'][_0xf480('0x2f')]);_0x507356[_0xf480('0x35')]=_[_0xf480('0x36')](_0xa3f726[_0xf480('0x35')]);_0x507356[_0xf480('0x40')]=_[_0xf480('0x37')](_0x507356[_0xf480('0x33')],_0x507356[_0xf480('0x35')]);_0xa5394['attributes']=_[_0xf480('0x37')](_0x507356[_0xf480('0x33')],qs[_0xf480('0x39')](_0xa3f726[_0xf480('0x35')][_0xf480('0x39')]));_0xa5394[_0xf480('0x38')]=_0xa5394[_0xf480('0x38')][_0xf480('0x3a')]?_0xa5394[_0xf480('0x38')]:_0x507356[_0xf480('0x33')];_0xa5394[_0xf480('0x3d')]=qs[_0xf480('0x3e')](_0xa3f726[_0xf480('0x35')][_0xf480('0x3e')]);_0xa5394[_0xf480('0x3f')]=qs[_0xf480('0x40')](_[_0xf480('0x5a')](_0xa3f726[_0xf480('0x35')],_0x507356['filters']));_0xa5394[_0xf480('0x3f')]=_[_0xf480('0x43')](_0xa5394['where'],{'$or':[{'ListId':_0x352b75['id']},{'ListId':null}]});if(_0xa3f726[_0xf480('0x35')][_0xf480('0x41')]){_0xa5394['where']=_[_0xf480('0x43')](_0xa5394[_0xf480('0x3f')],{'$or':_['map'](_0xa5394[_0xf480('0x38')],function(_0x2c4079){var _0x5b0c30={};_0x5b0c30[_0x2c4079]={'$like':'%'+_0xa3f726[_0xf480('0x35')][_0xf480('0x41')]+'%'};return _0x5b0c30;})});}_0xa5394=_[_0xf480('0x43')]({},_0xa5394,_0xa3f726[_0xf480('0x44')]);return db[_0xf480('0x68')][_0xf480('0x85')](_0xa5394);}})[_0xf480('0x27')](respondWithResult(_0x20766a,null))[_0xf480('0x52')](handleError(_0x20766a,null));};exports[_0xf480('0x86')]=function(_0x4a7557,_0x4cf027,_0x109e39){return db[_0xf480('0x45')]['find']({'where':{'id':_0x4a7557[_0xf480('0x48')]['id']}})[_0xf480('0x27')](handleEntityNotFound(_0x4cf027,null))['then'](function(_0x4cb345){if(_0x4cb345){return _0x4cb345['addAgents'](_0x4a7557[_0xf480('0x55')][_0xf480('0x5d')],_[_0xf480('0x62')](_0x4a7557['body'],[_0xf480('0x5d'),'id'])||{})[_0xf480('0x87')](function(_0x4a9fac){for(var _0x2c2e3c=0x0;_0x2c2e3c<_0x4a7557[_0xf480('0x55')][_0xf480('0x5d')][_0xf480('0x3a')];_0x2c2e3c+=0x1){socket['emit'](_0xf480('0x88'),{'UserId':Number(_0x4a7557[_0xf480('0x55')][_0xf480('0x5d')][_0x2c2e3c]),'CmListId':Number(_0x4a7557[_0xf480('0x48')]['id'])});}return _0x4a9fac;});}})['then'](respondWithResult(_0x4cf027,null))[_0xf480('0x52')](handleError(_0x4cf027,null));};exports[_0xf480('0x89')]=function(_0x4c2556,_0x36de20,_0x29744d){return db['CmList']['find']({'where':{'id':_0x4c2556[_0xf480('0x48')]['id']}})[_0xf480('0x27')](handleEntityNotFound(_0x36de20,null))[_0xf480('0x27')](function(_0xa09622){if(_0xa09622){return _0xa09622[_0xf480('0x89')](_0x4c2556[_0xf480('0x35')]['ids'])[_0xf480('0x27')](function(){if(_[_0xf480('0x61')](_0x4c2556[_0xf480('0x35')]['ids'])){for(var _0x484894=0x0;_0x484894<_0x4c2556[_0xf480('0x35')][_0xf480('0x5d')]['length'];_0x484894+=0x1){socket[_0xf480('0x8a')](_0xf480('0x8b'),{'UserId':Number(_0x4c2556['query'][_0xf480('0x5d')][_0x484894]),'CmListId':Number(_0x4c2556[_0xf480('0x48')]['id'])});}}else{socket[_0xf480('0x8a')]('userCmList:remove',{'UserId':Number(_0x4c2556[_0xf480('0x35')]['ids']),'CmListId':Number(_0x4c2556[_0xf480('0x48')]['id'])});}});}})[_0xf480('0x27')](respondWithStatusCode(_0x36de20,null))[_0xf480('0x52')](handleError(_0x36de20,null));};exports[_0xf480('0x8c')]=function(_0xa84f36,_0x26b250,_0x375c83){var _0x5caf54={};var _0x58ae66={};var _0x55d46d;var _0x1b219b;return db[_0xf480('0x45')][_0xf480('0x79')]({'where':{'id':_0xa84f36['params']['id']}})[_0xf480('0x27')](handleEntityNotFound(_0x26b250,null))['then'](function(_0x4f83d9){if(_0x4f83d9){_0x55d46d=_0x4f83d9;_0x58ae66['model']=_[_0xf480('0x36')](db[_0xf480('0x8d')][_0xf480('0x2f')]);_0x58ae66[_0xf480('0x35')]=_['keys'](_0xa84f36['query']);_0x58ae66[_0xf480('0x40')]=_[_0xf480('0x37')](_0x58ae66['model'],_0x58ae66[_0xf480('0x35')]);_0x5caf54[_0xf480('0x38')]=_['intersection'](_0x58ae66[_0xf480('0x33')],qs[_0xf480('0x39')](_0xa84f36[_0xf480('0x35')][_0xf480('0x39')]));_0x5caf54[_0xf480('0x38')]=_0x5caf54[_0xf480('0x38')]['length']?_0x5caf54[_0xf480('0x38')]:_0x58ae66['model'];_0x5caf54[_0xf480('0x3d')]=qs['sort'](_0xa84f36[_0xf480('0x35')]['sort']);_0x5caf54[_0xf480('0x3f')]=qs[_0xf480('0x40')](_[_0xf480('0x5a')](_0xa84f36[_0xf480('0x35')],_0x58ae66['filters']));if(_0xa84f36[_0xf480('0x35')][_0xf480('0x41')]){_0x5caf54[_0xf480('0x3f')]=_['merge'](_0x5caf54[_0xf480('0x3f')],{'$or':_[_0xf480('0x34')](_0x5caf54[_0xf480('0x38')],function(_0x2498df){var _0x31bb8f={};_0x31bb8f[_0x2498df]={'$like':'%'+_0xa84f36[_0xf480('0x35')][_0xf480('0x41')]+'%'};return _0x31bb8f;})});}_0x5caf54=_[_0xf480('0x43')]({},_0x5caf54,_0xa84f36['options']);return _0x55d46d[_0xf480('0x8c')](_0x5caf54);}})[_0xf480('0x27')](function(_0x477eb5){if(_0x477eb5){_0x1b219b=_0x477eb5['length'];if(!_0xa84f36['query'][_0xf480('0x3b')](_0xf480('0x3c'))){_0x5caf54[_0xf480('0x21')]=qs['limit'](_0xa84f36[_0xf480('0x35')][_0xf480('0x21')]);_0x5caf54['offset']=qs[_0xf480('0x1f')](_0xa84f36[_0xf480('0x35')]['offset']);}return _0x55d46d[_0xf480('0x8c')](_0x5caf54);}})[_0xf480('0x27')](function(_0x19cb04){if(_0x19cb04){return _0x19cb04?{'count':_0x1b219b,'rows':_0x19cb04}:null;}})[_0xf480('0x27')](respondWithResult(_0x26b250,null))[_0xf480('0x52')](handleError(_0x26b250,null));};
\ No newline at end of file
index 9f14949..cddb23c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3e74,0x175));var _0x43e7=function(_0x454d28,_0x4f6cda){_0x454d28=_0x454d28-0x0;var _0xeb748e=_0x3e74[_0x454d28];return _0xeb748e;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
+var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x30b0d8,_0x57470c){var _0x459c09=function(_0x5e51b6){while(--_0x5e51b6){_0x30b0d8['push'](_0x30b0d8['shift']());}};_0x459c09(++_0x57470c);}(_0x55ca,0x126));var _0xa55c=function(_0x2bbb3d,_0x400061){_0x2bbb3d=_0x2bbb3d-0x0;var _0x5739f0=_0x55ca[_0x2bbb3d];return _0x5739f0;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index 5b1d5e3..6a46060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['CmList','cm_lists','util','../../config/logger','api','bluebird','request-promise','rimraf','./cmList.attributes','exports','define'];(function(_0x322719,_0x16b381){var _0x30cb6f=function(_0x1e5698){while(--_0x1e5698){_0x322719['push'](_0x322719['shift']());}};_0x30cb6f(++_0x16b381);}(_0xb58b,0x1f1));var _0xbb58=function(_0x349850,_0x248710){_0x349850=_0x349850-0x0;var _0x382465=_0xb58b[_0x349850];return _0x382465;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var logger=require(_0xbb58('0x1'))(_0xbb58('0x2'));var moment=require('moment');var BPromise=require(_0xbb58('0x3'));var rp=require(_0xbb58('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbb58('0x5'));var config=require('../../config/environment');var attributes=require(_0xbb58('0x6'));module[_0xbb58('0x7')]=function(_0x33fe85,_0x5cf8b1){return _0x33fe85[_0xbb58('0x8')](_0xbb58('0x9'),attributes,{'tableName':_0xbb58('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2547=['rimraf','./cmList.attributes','exports','CmList','cm_lists','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3859fb,_0x316c6d){var _0x1d30f6=function(_0x3e7664){while(--_0x3e7664){_0x3859fb['push'](_0x3859fb['shift']());}};_0x1d30f6(++_0x316c6d);}(_0x2547,0x1cd));var _0x7254=function(_0x1fcd48,_0x34264c){_0x1fcd48=_0x1fcd48-0x0;var _0x1bbb19=_0x2547[_0x1fcd48];return _0x1bbb19;};'use strict';var _=require('lodash');var util=require(_0x7254('0x0'));var logger=require(_0x7254('0x1'))(_0x7254('0x2'));var moment=require(_0x7254('0x3'));var BPromise=require(_0x7254('0x4'));var rp=require(_0x7254('0x5'));var fs=require('fs');var path=require(_0x7254('0x6'));var rimraf=require(_0x7254('0x7'));var config=require('../../config/environment');var attributes=require(_0x7254('0x8'));module[_0x7254('0x9')]=function(_0x67f427,_0x119f66){return _0x67f427['define'](_0x7254('0xa'),attributes,{'tableName':_0x7254('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bcea28a..c2e068f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6f5=['register','request','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./cmList.socket'];(function(_0x223ee9,_0x45b947){var _0x56b6e5=function(_0x119a7a){while(--_0x119a7a){_0x223ee9['push'](_0x223ee9['shift']());}};_0x56b6e5(++_0x45b947);}(_0xe6f5,0x124));var _0x5e6f=function(_0x3118d4,_0x2da222){_0x3118d4=_0x3118d4-0x0;var _0x2ac5e4=_0xe6f5[_0x3118d4];return _0x2ac5e4;};'use strict';var _=require(_0x5e6f('0x0'));var util=require(_0x5e6f('0x1'));var moment=require(_0x5e6f('0x2'));var BPromise=require(_0x5e6f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5e6f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5e6f('0x5'));var logger=require(_0x5e6f('0x6'))(_0x5e6f('0x7'));var config=require('../../config/environment');var jayson=require(_0x5e6f('0x8'));var client=jayson[_0x5e6f('0x9')][_0x5e6f('0xa')]({'port':0x232a});config['redis']=_[_0x5e6f('0xb')](config[_0x5e6f('0xc')],{'host':_0x5e6f('0xd'),'port':0x18eb});var socket=require(_0x5e6f('0xe'))(new Redis(config[_0x5e6f('0xc')]));require(_0x5e6f('0xf'))[_0x5e6f('0x10')](socket);function respondWithRpcPromise(_0x2ad97e,_0x5a55b5,_0x5dde9d){return new BPromise(function(_0x25dad3,_0x57324d){return client[_0x5e6f('0x11')](_0x2ad97e,_0x5dde9d)[_0x5e6f('0x12')](function(_0x3f775f){logger[_0x5e6f('0x13')](_0x5e6f('0x14'),_0x5a55b5,'request\x20sent');logger[_0x5e6f('0x15')](_0x5e6f('0x16'),_0x5a55b5,_0x5e6f('0x17'),JSON['stringify'](_0x3f775f));if(_0x3f775f['error']){if(_0x3f775f['error'][_0x5e6f('0x18')]===0x1f4){logger['error']('CmList,\x20%s,\x20%s',_0x5a55b5,_0x3f775f[_0x5e6f('0x19')]['message']);return _0x57324d(_0x3f775f[_0x5e6f('0x19')][_0x5e6f('0x1a')]);}logger[_0x5e6f('0x19')]('CmList,\x20%s,\x20%s',_0x5a55b5,_0x3f775f[_0x5e6f('0x19')][_0x5e6f('0x1a')]);return _0x25dad3(_0x3f775f[_0x5e6f('0x19')][_0x5e6f('0x1a')]);}else{logger[_0x5e6f('0x13')](_0x5e6f('0x14'),_0x5a55b5,'request\x20sent');_0x25dad3(_0x3f775f[_0x5e6f('0x1b')][_0x5e6f('0x1a')]);}})['catch'](function(_0x1c9877){logger['error']('CmList,\x20%s,\x20%s',_0x5a55b5,_0x1c9877);_0x57324d(_0x1c9877);});});}
\ No newline at end of file
+var _0x157a=['../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','CmList,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x3d3f85,_0x3c93ad){var _0x39fbae=function(_0x5df224){while(--_0x5df224){_0x3d3f85['push'](_0x3d3f85['shift']());}};_0x39fbae(++_0x3c93ad);}(_0x157a,0x66));var _0xa157=function(_0xf273f9,_0x486198){_0xf273f9=_0xf273f9-0x0;var _0xb4abcc=_0x157a[_0xf273f9];return _0xb4abcc;};'use strict';var _=require(_0xa157('0x0'));var util=require(_0xa157('0x1'));var moment=require(_0xa157('0x2'));var BPromise=require('bluebird');var rs=require(_0xa157('0x3'));var fs=require('fs');var Redis=require(_0xa157('0x4'));var db=require(_0xa157('0x5'))['db'];var utils=require(_0xa157('0x6'));var logger=require(_0xa157('0x7'))(_0xa157('0x8'));var config=require('../../config/environment');var jayson=require(_0xa157('0x9'));var client=jayson[_0xa157('0xa')]['http']({'port':0x232a});config[_0xa157('0xb')]=_[_0xa157('0xc')](config[_0xa157('0xb')],{'host':_0xa157('0xd'),'port':0x18eb});var socket=require(_0xa157('0xe'))(new Redis(config[_0xa157('0xb')]));require('./cmList.socket')[_0xa157('0xf')](socket);function respondWithRpcPromise(_0x12dbc2,_0x2d2d0b,_0x182cce){return new BPromise(function(_0xfe2a6f,_0x51c20d){return client[_0xa157('0x10')](_0x12dbc2,_0x182cce)['then'](function(_0x350a20){logger['info']('CmList,\x20%s,\x20%s',_0x2d2d0b,_0xa157('0x11'));logger[_0xa157('0x12')](_0xa157('0x13'),_0x2d2d0b,_0xa157('0x11'),JSON[_0xa157('0x14')](_0x350a20));if(_0x350a20[_0xa157('0x15')]){if(_0x350a20[_0xa157('0x15')]['code']===0x1f4){logger['error'](_0xa157('0x16'),_0x2d2d0b,_0x350a20['error'][_0xa157('0x17')]);return _0x51c20d(_0x350a20[_0xa157('0x15')][_0xa157('0x17')]);}logger[_0xa157('0x15')](_0xa157('0x16'),_0x2d2d0b,_0x350a20[_0xa157('0x15')][_0xa157('0x17')]);return _0xfe2a6f(_0x350a20[_0xa157('0x15')]['message']);}else{logger[_0xa157('0x18')]('CmList,\x20%s,\x20%s',_0x2d2d0b,_0xa157('0x11'));_0xfe2a6f(_0x350a20[_0xa157('0x19')][_0xa157('0x17')]);}})[_0xa157('0x1a')](function(_0x73b4aa){logger[_0xa157('0x15')](_0xa157('0x16'),_0x2d2d0b,_0x73b4aa);_0x51c20d(_0x73b4aa);});});}
\ No newline at end of file
index af08f2c..d7b3b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73da=['./cmList.events','save','remove','update','emit','removeListener','register','length'];(function(_0xd4bbc7,_0x3ab6cd){var _0x3c49cd=function(_0x89406a){while(--_0x89406a){_0xd4bbc7['push'](_0xd4bbc7['shift']());}};_0x3c49cd(++_0x3ab6cd);}(_0x73da,0xb0));var _0xa73d=function(_0xab8668,_0x5204ac){_0xab8668=_0xab8668-0x0;var _0x571c10=_0x73da[_0xab8668];return _0x571c10;};'use strict';var CmListEvents=require(_0xa73d('0x0'));var events=[_0xa73d('0x1'),_0xa73d('0x2'),_0xa73d('0x3')];function createListener(_0x540cd0,_0x4774b3){return function(_0x4708d5){_0x4774b3[_0xa73d('0x4')](_0x540cd0,_0x4708d5);};}function removeListener(_0xc6cd0f,_0x29ea88){return function(){CmListEvents[_0xa73d('0x5')](_0xc6cd0f,_0x29ea88);};}exports[_0xa73d('0x6')]=function(_0x27209e){for(var _0x1fa5f1=0x0,_0x2db750=events[_0xa73d('0x7')];_0x1fa5f1<_0x2db750;_0x1fa5f1++){var _0x1a6c3c=events[_0x1fa5f1];var _0x1835e8=createListener('cmList:'+_0x1a6c3c,_0x27209e);CmListEvents['on'](_0x1a6c3c,_0x1835e8);}};
\ No newline at end of file
+var _0x1462=['cmList:','./cmList.events','save','remove','emit','removeListener','register','length'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x1462,0x111));var _0x2146=function(_0x27437a,_0x31b607){_0x27437a=_0x27437a-0x0;var _0x232cc2=_0x1462[_0x27437a];return _0x232cc2;};'use strict';var CmListEvents=require(_0x2146('0x0'));var events=[_0x2146('0x1'),_0x2146('0x2'),'update'];function createListener(_0x12a449,_0x13c8e3){return function(_0x6cf99d){_0x13c8e3[_0x2146('0x3')](_0x12a449,_0x6cf99d);};}function removeListener(_0x3d6e13,_0x29487c){return function(){CmListEvents[_0x2146('0x4')](_0x3d6e13,_0x29487c);};}exports[_0x2146('0x5')]=function(_0x184727){for(var _0x1d799d=0x0,_0x5adfb2=events[_0x2146('0x6')];_0x1d799d<_0x5adfb2;_0x1d799d++){var _0x3b781f=events[_0x1d799d];var _0x3bee1d=createListener(_0x2146('0x7')+_0x3b781f,_0x184727);CmListEvents['on'](_0x3b781f,_0x3bee1d);}};
\ No newline at end of file
index 5e42f5f..6139a61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe012=['../../components/auth/service','../../components/interaction/service','./cmList.controller','get','/describe','isAuthenticated','describe','/:id','/:id/dispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addContacts','addAgents','put','update','delete','destroy','removeDispositions','exports','multer','util','connect-timeout','express','Router'];(function(_0x304b67,_0x31cb39){var _0x493afb=function(_0x21dce3){while(--_0x21dce3){_0x304b67['push'](_0x304b67['shift']());}};_0x493afb(++_0x31cb39);}(_0xe012,0x124));var _0x2e01=function(_0x552e57,_0x1406d1){_0x552e57=_0x552e57-0x0;var _0x36f03c=_0xe012[_0x552e57];return _0x36f03c;};'use strict';var multer=require(_0x2e01('0x0'));var util=require(_0x2e01('0x1'));var path=require('path');var timeout=require(_0x2e01('0x2'));var express=require(_0x2e01('0x3'));var router=express[_0x2e01('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2e01('0x5'));var interaction=require(_0x2e01('0x6'));var config=require('../../config/environment');var controller=require(_0x2e01('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x2e01('0x8')](_0x2e01('0x9'),auth[_0x2e01('0xa')](),controller[_0x2e01('0xb')]);router[_0x2e01('0x8')](_0x2e01('0xc'),auth[_0x2e01('0xa')](),controller['show']);router[_0x2e01('0x8')](_0x2e01('0xd'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x2e01('0x8')](_0x2e01('0xe'),auth['isAuthenticated'](),controller[_0x2e01('0xf')]);router[_0x2e01('0x8')](_0x2e01('0x10'),auth['isAuthenticated'](),controller[_0x2e01('0x11')]);router[_0x2e01('0x8')](_0x2e01('0x12'),auth['isAuthenticated'](),controller[_0x2e01('0x13')]);router[_0x2e01('0x8')](_0x2e01('0x14'),auth[_0x2e01('0xa')](),controller[_0x2e01('0x15')]);router[_0x2e01('0x16')]('/',auth[_0x2e01('0xa')](),controller[_0x2e01('0x17')]);router['post'](_0x2e01('0xd'),auth['isAuthenticated'](),controller[_0x2e01('0x18')]);router[_0x2e01('0x16')](_0x2e01('0xe'),auth[_0x2e01('0xa')](),controller[_0x2e01('0x19')]);router['post'](_0x2e01('0x12'),auth[_0x2e01('0xa')](),controller['addCustomField']);router[_0x2e01('0x16')](_0x2e01('0x14'),auth[_0x2e01('0xa')](),controller[_0x2e01('0x1a')]);router[_0x2e01('0x1b')]('/:id',auth['isAuthenticated'](),controller[_0x2e01('0x1c')]);router[_0x2e01('0x1d')](_0x2e01('0xc'),auth[_0x2e01('0xa')](),controller[_0x2e01('0x1e')]);router[_0x2e01('0x1d')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x2e01('0x1f')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x2e01('0x20')]=router;
\ No newline at end of file
+var _0x0ca9=['addDisposition','addCustomField','addAgents','put','destroy','removeDispositions','delete','/:id/users','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/contacts','/:id/contacts/csv','/:id/fields','getCustomFields','getAgents','create','post'];(function(_0x334aba,_0x370e0c){var _0x4e5e7d=function(_0x1c65b2){while(--_0x1c65b2){_0x334aba['push'](_0x334aba['shift']());}};_0x4e5e7d(++_0x370e0c);}(_0x0ca9,0x6c));var _0x90ca=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0ca9[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x90ca('0x0'));var util=require(_0x90ca('0x1'));var path=require('path');var timeout=require(_0x90ca('0x2'));var express=require(_0x90ca('0x3'));var router=express[_0x90ca('0x4')]();var fs_extra=require(_0x90ca('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x90ca('0x6'));var config=require(_0x90ca('0x7'));var controller=require(_0x90ca('0x8'));router[_0x90ca('0x9')]('/',auth[_0x90ca('0xa')](),controller[_0x90ca('0xb')]);router[_0x90ca('0x9')](_0x90ca('0xc'),auth['isAuthenticated'](),controller[_0x90ca('0xd')]);router['get'](_0x90ca('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x90ca('0x9')](_0x90ca('0xf'),auth[_0x90ca('0xa')](),controller[_0x90ca('0x10')]);router['get'](_0x90ca('0x11'),auth[_0x90ca('0xa')](),controller['getContacts']);router[_0x90ca('0x9')](_0x90ca('0x12'),auth[_0x90ca('0xa')](),controller['getContactsCsv']);router[_0x90ca('0x9')](_0x90ca('0x13'),auth[_0x90ca('0xa')](),controller[_0x90ca('0x14')]);router[_0x90ca('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0x90ca('0x15')]);router['post']('/',auth[_0x90ca('0xa')](),controller[_0x90ca('0x16')]);router[_0x90ca('0x17')](_0x90ca('0xf'),auth['isAuthenticated'](),controller[_0x90ca('0x18')]);router[_0x90ca('0x17')]('/:id/contacts',auth['isAuthenticated'](),controller['addContacts']);router['post'](_0x90ca('0x13'),auth[_0x90ca('0xa')](),controller[_0x90ca('0x19')]);router[_0x90ca('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0x90ca('0x1a')]);router[_0x90ca('0x1b')]('/:id',auth[_0x90ca('0xa')](),controller['update']);router['delete'](_0x90ca('0xe'),auth[_0x90ca('0xa')](),controller[_0x90ca('0x1c')]);router['delete'](_0x90ca('0xf'),auth[_0x90ca('0xa')](),controller[_0x90ca('0x1d')]);router[_0x90ca('0x1e')](_0x90ca('0x1f'),auth['isAuthenticated'](),controller[_0x90ca('0x20')]);module['exports']=router;
\ No newline at end of file
index 20be733..a64b16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x647b=['getDataValue','field','STRING','sequelize','exports'];(function(_0x1ff67e,_0x57e3c3){var _0x4343b6=function(_0x59b76c){while(--_0x59b76c){_0x1ff67e['push'](_0x1ff67e['shift']());}};_0x4343b6(++_0x57e3c3);}(_0x647b,0x125));var _0xb647=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x647b[_0x1035c1];return _0x308d67;};'use strict';var Sequelize=require(_0xb647('0x0'));module[_0xb647('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0xe569b7){return this[_0xb647('0x2')](_0xb647('0x3'));}},'field':{'type':Sequelize[_0xb647('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x6706=['sequelize','exports','VIRTUAL','field','STRING'];(function(_0x3c4e4c,_0x36ff70){var _0x144a87=function(_0x5efb4b){while(--_0x5efb4b){_0x3c4e4c['push'](_0x3c4e4c['shift']());}};_0x144a87(++_0x36ff70);}(_0x6706,0x69));var _0x6670=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6706[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x6670('0x0'));module[_0x6670('0x1')]={'name':{'type':Sequelize[_0x6670('0x2')],'get':function(_0x48d938){return this['getDataValue'](_0x6670('0x3'));}},'field':{'type':Sequelize[_0x6670('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x6670('0x4')],'allowNull':![]}};
\ No newline at end of file
index 0410ae9..53ae6d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x56bc5e,_0x48d534){var _0x32eb9c=function(_0x332e16){while(--_0x332e16){_0x56bc5e['push'](_0x56bc5e['shift']());}};_0x32eb9c(++_0x48d534);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x4d04c0,_0x2e3ad1){var _0x7a1717=function(_0x51a72a){while(--_0x51a72a){_0x4d04c0['push'](_0x4d04c0['shift']());}};_0x7a1717(++_0x2e3ad1);}(_0x7a54,0x106));var _0x47a5=function(_0x11a4b1,_0x2d657b){_0x11a4b1=_0x11a4b1-0x0;var _0x129935=_0x7a54[_0x11a4b1];return _0x129935;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index 1548e90..4bb0faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc023=['Condition','tools_conditions','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x156efa,_0x2a0b2a){var _0x9dce0d=function(_0xd55d01){while(--_0xd55d01){_0x156efa['push'](_0x156efa['shift']());}};_0x9dce0d(++_0x2a0b2a);}(_0xc023,0xde));var _0x3c02=function(_0x58428c,_0x435751){_0x58428c=_0x58428c-0x0;var _0x4bebd4=_0xc023[_0x58428c];return _0x4bebd4;};'use strict';var _=require(_0x3c02('0x0'));var util=require(_0x3c02('0x1'));var logger=require('../../config/logger')(_0x3c02('0x2'));var moment=require(_0x3c02('0x3'));var BPromise=require(_0x3c02('0x4'));var rp=require(_0x3c02('0x5'));var fs=require('fs');var path=require(_0x3c02('0x6'));var rimraf=require('rimraf');var config=require(_0x3c02('0x7'));var attributes=require('./condition.attributes');module[_0x3c02('0x8')]=function(_0x69ac2e,_0x53ecdf){return _0x69ac2e['define'](_0x3c02('0x9'),attributes,{'tableName':_0x3c02('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xda4e=['../../config/environment','./condition.attributes','Condition','tools_conditions','lodash','util','api','moment','request-promise','path','rimraf'];(function(_0x335165,_0x50b9f0){var _0x4c670f=function(_0x2a91ac){while(--_0x2a91ac){_0x335165['push'](_0x335165['shift']());}};_0x4c670f(++_0x50b9f0);}(_0xda4e,0x190));var _0xeda4=function(_0x289911,_0xffccca){_0x289911=_0x289911-0x0;var _0x2e69ec=_0xda4e[_0x289911];return _0x2e69ec;};'use strict';var _=require(_0xeda4('0x0'));var util=require(_0xeda4('0x1'));var logger=require('../../config/logger')(_0xeda4('0x2'));var moment=require(_0xeda4('0x3'));var BPromise=require('bluebird');var rp=require(_0xeda4('0x4'));var fs=require('fs');var path=require(_0xeda4('0x5'));var rimraf=require(_0xeda4('0x6'));var config=require(_0xeda4('0x7'));var attributes=require(_0xeda4('0x8'));module['exports']=function(_0x1952a6,_0x3a0097){return _0x1952a6['define'](_0xeda4('0x9'),attributes,{'tableName':_0xeda4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4a632b..37e1610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb21a=['Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent'];(function(_0x31fbec,_0x2018a9){var _0x11cfd3=function(_0x283d5e){while(--_0x283d5e){_0x31fbec['push'](_0x31fbec['shift']());}};_0x11cfd3(++_0x2018a9);}(_0xb21a,0x1eb));var _0xab21=function(_0x422015,_0x4fef9e){_0x422015=_0x422015-0x0;var _0x240676=_0xb21a[_0x422015];return _0x240676;};'use strict';var _=require(_0xab21('0x0'));var util=require(_0xab21('0x1'));var moment=require(_0xab21('0x2'));var BPromise=require(_0xab21('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xab21('0x4'));var db=require(_0xab21('0x5'))['db'];var utils=require(_0xab21('0x6'));var logger=require(_0xab21('0x7'))('rpc');var config=require(_0xab21('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xab21('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5424cd,_0x555fa0,_0x312890){return new BPromise(function(_0x43489b,_0x4b6079){return client[_0xab21('0xa')](_0x5424cd,_0x312890)[_0xab21('0xb')](function(_0x237ebb){logger[_0xab21('0xc')](_0xab21('0xd'),_0x555fa0,_0xab21('0xe'));logger['debug'](_0xab21('0xf'),_0x555fa0,_0xab21('0xe'),JSON[_0xab21('0x10')](_0x237ebb));if(_0x237ebb['error']){if(_0x237ebb[_0xab21('0x11')][_0xab21('0x12')]===0x1f4){logger[_0xab21('0x11')](_0xab21('0xd'),_0x555fa0,_0x237ebb[_0xab21('0x11')][_0xab21('0x13')]);return _0x4b6079(_0x237ebb['error'][_0xab21('0x13')]);}logger[_0xab21('0x11')](_0xab21('0xd'),_0x555fa0,_0x237ebb['error']['message']);return _0x43489b(_0x237ebb[_0xab21('0x11')]['message']);}else{logger[_0xab21('0xc')](_0xab21('0xd'),_0x555fa0,_0xab21('0xe'));_0x43489b(_0x237ebb[_0xab21('0x14')][_0xab21('0x13')]);}})[_0xab21('0x15')](function(_0x5950d1){logger[_0xab21('0x11')](_0xab21('0xd'),_0x555fa0,_0x5950d1);_0x4b6079(_0x5950d1);});});}
\ No newline at end of file
+var _0x941b=['Condition,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent'];(function(_0x428018,_0x2e3229){var _0x49fefa=function(_0x3dacdc){while(--_0x3dacdc){_0x428018['push'](_0x428018['shift']());}};_0x49fefa(++_0x2e3229);}(_0x941b,0x166));var _0xb941=function(_0x3b8330,_0x18f4a1){_0x3b8330=_0x3b8330-0x0;var _0x36d1f2=_0x941b[_0x3b8330];return _0x36d1f2;};'use strict';var _=require(_0xb941('0x0'));var util=require(_0xb941('0x1'));var moment=require(_0xb941('0x2'));var BPromise=require(_0xb941('0x3'));var rs=require(_0xb941('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb941('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb941('0x6'));var config=require(_0xb941('0x7'));var jayson=require(_0xb941('0x8'));var client=jayson[_0xb941('0x9')][_0xb941('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x53695d,_0x3b08ff,_0x3b06c1){return new BPromise(function(_0x1b0c04,_0x486de9){return client[_0xb941('0xb')](_0x53695d,_0x3b06c1)[_0xb941('0xc')](function(_0x31d4d8){logger[_0xb941('0xd')](_0xb941('0xe'),_0x3b08ff,_0xb941('0xf'));logger['debug'](_0xb941('0x10'),_0x3b08ff,'request\x20sent',JSON['stringify'](_0x31d4d8));if(_0x31d4d8[_0xb941('0x11')]){if(_0x31d4d8[_0xb941('0x11')][_0xb941('0x12')]===0x1f4){logger[_0xb941('0x11')](_0xb941('0xe'),_0x3b08ff,_0x31d4d8[_0xb941('0x11')][_0xb941('0x13')]);return _0x486de9(_0x31d4d8[_0xb941('0x11')]['message']);}logger['error'](_0xb941('0xe'),_0x3b08ff,_0x31d4d8[_0xb941('0x11')][_0xb941('0x13')]);return _0x1b0c04(_0x31d4d8[_0xb941('0x11')][_0xb941('0x13')]);}else{logger[_0xb941('0xd')](_0xb941('0xe'),_0x3b08ff,_0xb941('0xf'));_0x1b0c04(_0x31d4d8[_0xb941('0x14')][_0xb941('0x13')]);}})[_0xb941('0x15')](function(_0xef8929){logger[_0xb941('0x11')](_0xb941('0xe'),_0x3b08ff,_0xef8929);_0x486de9(_0xef8929);});});}
\ No newline at end of file
index 3d1e16a..4d34000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x663c=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','/:id','isAuthenticated','destroy','exports','multer','util'];(function(_0x3d48dd,_0x42ffb7){var _0x56df05=function(_0x10b7d8){while(--_0x10b7d8){_0x3d48dd['push'](_0x3d48dd['shift']());}};_0x56df05(++_0x42ffb7);}(_0x663c,0x1a2));var _0xc663=function(_0x4dca38,_0x5dfae1){_0x4dca38=_0x4dca38-0x0;var _0x44656c=_0x663c[_0x4dca38];return _0x44656c;};'use strict';var multer=require(_0xc663('0x0'));var util=require(_0xc663('0x1'));var path=require('path');var timeout=require(_0xc663('0x2'));var express=require(_0xc663('0x3'));var router=express[_0xc663('0x4')]();var fs_extra=require(_0xc663('0x5'));var auth=require(_0xc663('0x6'));var interaction=require(_0xc663('0x7'));var config=require(_0xc663('0x8'));var controller=require(_0xc663('0x9'));router['put'](_0xc663('0xa'),auth[_0xc663('0xb')](),controller['update']);router['delete'](_0xc663('0xa'),auth[_0xc663('0xb')](),controller[_0xc663('0xc')]);module[_0xc663('0xd')]=router;
\ No newline at end of file
+var _0xe8b1=['put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./condition.controller'];(function(_0x182c88,_0x3012c3){var _0x3d0f0d=function(_0x3d88bd){while(--_0x3d88bd){_0x182c88['push'](_0x182c88['shift']());}};_0x3d0f0d(++_0x3012c3);}(_0xe8b1,0xa0));var _0x1e8b=function(_0x53b6ae,_0x3cb9f4){_0x53b6ae=_0x53b6ae-0x0;var _0x34f4b2=_0xe8b1[_0x53b6ae];return _0x34f4b2;};'use strict';var multer=require(_0x1e8b('0x0'));var util=require(_0x1e8b('0x1'));var path=require(_0x1e8b('0x2'));var timeout=require(_0x1e8b('0x3'));var express=require(_0x1e8b('0x4'));var router=express[_0x1e8b('0x5')]();var fs_extra=require(_0x1e8b('0x6'));var auth=require(_0x1e8b('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x1e8b('0x8'));var controller=require(_0x1e8b('0x9'));router[_0x1e8b('0xa')](_0x1e8b('0xb'),auth[_0x1e8b('0xc')](),controller[_0x1e8b('0xd')]);router[_0x1e8b('0xe')](_0x1e8b('0xb'),auth['isAuthenticated'](),controller[_0x1e8b('0xf')]);module[_0x1e8b('0x10')]=router;
\ No newline at end of file
index 2edb099..0b66865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x2a4c15,_0x4df6a4){var _0x59939c=function(_0x34f0e2){while(--_0x34f0e2){_0x2a4c15['push'](_0x2a4c15['shift']());}};_0x59939c(++_0x4df6a4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x57d13b,_0x52d8cb){var _0x467696=function(_0x153000){while(--_0x153000){_0x57d13b['push'](_0x57d13b['shift']());}};_0x467696(++_0x52d8cb);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index 8facead..881d358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa291=['createdAt','updatedAt','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','findOne','DashboardItem','getItems','hasOwnProperty','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','status','json','limit','undefined','count','offset','set','apply','reject','update','then','destroy','get','end','sendStatus','error','stack','name','send','index','map','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Dashboard','includeAll','include','rows','catch','show','params','keys','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','CustomDashboards','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit'];(function(_0x1f9dc4,_0x1aaf21){var _0x3dff50=function(_0x5cf4ab){while(--_0x5cf4ab){_0x1f9dc4['push'](_0x1f9dc4['shift']());}};_0x3dff50(++_0x1aaf21);}(_0xa291,0x11f));var _0x1a29=function(_0x28f32c,_0x4cc342){_0x28f32c=_0x28f32c-0x0;var _0x355402=_0xa291[_0x28f32c];return _0x355402;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1a29('0x0'));var jsonpatch=require(_0x1a29('0x1'));var rp=require(_0x1a29('0x2'));var moment=require(_0x1a29('0x3'));var BPromise=require(_0x1a29('0x4'));var Mustache=require(_0x1a29('0x5'));var util=require(_0x1a29('0x6'));var path=require(_0x1a29('0x7'));var sox=require(_0x1a29('0x8'));var csv=require(_0x1a29('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1a29('0xa'));var _=require('lodash');var squel=require(_0x1a29('0xb'));var crypto=require(_0x1a29('0xc'));var jsforce=require(_0x1a29('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x1a29('0x9'));var querystring=require(_0x1a29('0xe'));var Papa=require(_0x1a29('0xf'));var Redis=require(_0x1a29('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x1a29('0x11'));var as=require(_0x1a29('0x12'));var hardwareService=require(_0x1a29('0x13'));var logger=require(_0x1a29('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1a29('0x15'))['db'];config[_0x1a29('0x16')]=_[_0x1a29('0x17')](config[_0x1a29('0x16')],{'host':_0x1a29('0x18'),'port':0x18eb});var socket=require(_0x1a29('0x19'))(new Redis(config[_0x1a29('0x16')]));require(_0x1a29('0x1a'))[_0x1a29('0x1b')](socket);function respondWithStatusCode(_0x3e6928,_0x3fb9e2){_0x3fb9e2=_0x3fb9e2||0xcc;return function(_0x1465cf){if(_0x1465cf){return _0x3e6928['sendStatus'](_0x3fb9e2);}return _0x3e6928[_0x1a29('0x1c')](_0x3fb9e2)['end']();};}function respondWithResult(_0x3e9ac4,_0x1a9e31){_0x1a9e31=_0x1a9e31||0xc8;return function(_0x47cfce){if(_0x47cfce){return _0x3e9ac4['status'](_0x1a9e31)[_0x1a29('0x1d')](_0x47cfce);}};}function respondWithFilteredResult(_0x48656e,_0x431788){return function(_0x4ec673){if(_0x4ec673){var _0x2028df=typeof _0x431788['offset']==='undefined'&&typeof _0x431788[_0x1a29('0x1e')]===_0x1a29('0x1f');var _0x3c7a5c=_0x4ec673[_0x1a29('0x20')];var _0xbe0f9=_0x2028df?0x0:_0x431788[_0x1a29('0x21')];var _0x4c095e=_0x2028df?_0x4ec673['count']:_0x431788[_0x1a29('0x21')]+_0x431788[_0x1a29('0x1e')];var _0x14737d;if(_0x4c095e>=_0x3c7a5c){_0x4c095e=_0x3c7a5c;_0x14737d=0xc8;}else{_0x14737d=0xce;}_0x48656e[_0x1a29('0x1c')](_0x14737d);return _0x48656e[_0x1a29('0x22')]('Content-Range',_0xbe0f9+'-'+_0x4c095e+'/'+_0x3c7a5c)[_0x1a29('0x1d')](_0x4ec673);}return null;};}function patchUpdates(_0x7554d1){return function(_0x2dacf2){try{jsonpatch[_0x1a29('0x23')](_0x2dacf2,_0x7554d1,!![]);}catch(_0x312392){return BPromise[_0x1a29('0x24')](_0x312392);}return _0x2dacf2['save']();};}function saveUpdates(_0x3523a2,_0x217795){return function(_0x896df1){if(_0x896df1){return _0x896df1[_0x1a29('0x25')](_0x3523a2)[_0x1a29('0x26')](function(_0x3219b3){return _0x3219b3;});}return null;};}function removeEntity(_0x375ee0,_0x43ae4b){return function(_0x4d5a87){if(_0x4d5a87){return _0x4d5a87[_0x1a29('0x27')]()[_0x1a29('0x26')](function(){var _0x301a97=_0x4d5a87[_0x1a29('0x28')]({'plain':!![]});var _0x5c579d='CustomDashboards';return db['UserProfileResource'][_0x1a29('0x27')]({'where':{'type':_0x5c579d,'resourceId':_0x301a97['id']}})[_0x1a29('0x26')](function(){return _0x4d5a87;});})[_0x1a29('0x26')](function(){_0x375ee0[_0x1a29('0x1c')](0xcc)[_0x1a29('0x29')]();});}};}function handleEntityNotFound(_0x558db3,_0x391efd){return function(_0x4b6b02){if(!_0x4b6b02){_0x558db3[_0x1a29('0x2a')](0x194);}return _0x4b6b02;};}function handleError(_0x502a2b,_0x53fe45){_0x53fe45=_0x53fe45||0x1f4;return function(_0x3efc0d){logger[_0x1a29('0x2b')](_0x3efc0d[_0x1a29('0x2c')]);if(_0x3efc0d[_0x1a29('0x2d')]){delete _0x3efc0d['name'];}_0x502a2b[_0x1a29('0x1c')](_0x53fe45)[_0x1a29('0x2e')](_0x3efc0d);};}exports[_0x1a29('0x2f')]=function(_0x17e1c7,_0x2c872c){var _0x1d0e55={},_0x427f2b={},_0x486207={'count':0x0,'rows':[]};var _0x460d4f=_[_0x1a29('0x30')](db['Dashboard']['rawAttributes'],function(_0x3ec1e8){return{'name':_0x3ec1e8[_0x1a29('0x31')],'type':_0x3ec1e8['type'][_0x1a29('0x32')]};});_0x427f2b[_0x1a29('0x33')]=_['map'](_0x460d4f,_0x1a29('0x2d'));_0x427f2b[_0x1a29('0x34')]=_['keys'](_0x17e1c7['query']);_0x427f2b[_0x1a29('0x35')]=_[_0x1a29('0x36')](_0x427f2b[_0x1a29('0x33')],_0x427f2b[_0x1a29('0x34')]);_0x1d0e55[_0x1a29('0x37')]=_['intersection'](_0x427f2b[_0x1a29('0x33')],qs['fields'](_0x17e1c7[_0x1a29('0x34')][_0x1a29('0x38')]));_0x1d0e55[_0x1a29('0x37')]=_0x1d0e55[_0x1a29('0x37')][_0x1a29('0x39')]?_0x1d0e55[_0x1a29('0x37')]:_0x427f2b['model'];if(!_0x17e1c7['query']['hasOwnProperty'](_0x1a29('0x3a'))){_0x1d0e55[_0x1a29('0x1e')]=qs[_0x1a29('0x1e')](_0x17e1c7[_0x1a29('0x34')][_0x1a29('0x1e')]);_0x1d0e55[_0x1a29('0x21')]=qs[_0x1a29('0x21')](_0x17e1c7['query'][_0x1a29('0x21')]);}_0x1d0e55[_0x1a29('0x3b')]=qs[_0x1a29('0x3c')](_0x17e1c7[_0x1a29('0x34')]['sort']);_0x1d0e55[_0x1a29('0x3d')]=qs[_0x1a29('0x35')](_[_0x1a29('0x3e')](_0x17e1c7['query'],_0x427f2b[_0x1a29('0x35')]),_0x460d4f);if(_0x17e1c7[_0x1a29('0x34')][_0x1a29('0x3f')]){_0x1d0e55[_0x1a29('0x3d')]=_[_0x1a29('0x40')](_0x1d0e55[_0x1a29('0x3d')],{'$or':_['map'](_0x460d4f,function(_0x396562){if(_0x396562[_0x1a29('0x41')]!==_0x1a29('0x42')){var _0x5e06a1={};_0x5e06a1[_0x396562[_0x1a29('0x2d')]]={'$like':'%'+_0x17e1c7[_0x1a29('0x34')]['filter']+'%'};return _0x5e06a1;}})});}_0x1d0e55=_[_0x1a29('0x40')]({},_0x1d0e55,_0x17e1c7[_0x1a29('0x43')]);var _0x2245eb={'where':_0x1d0e55[_0x1a29('0x3d')]};return db[_0x1a29('0x44')][_0x1a29('0x20')](_0x2245eb)[_0x1a29('0x26')](function(_0x490b35){_0x486207['count']=_0x490b35;if(_0x17e1c7[_0x1a29('0x34')][_0x1a29('0x45')]){_0x1d0e55[_0x1a29('0x46')]=[{'all':!![]}];}return db[_0x1a29('0x44')]['findAll'](_0x1d0e55);})[_0x1a29('0x26')](function(_0x2f0a58){_0x486207[_0x1a29('0x47')]=_0x2f0a58;return _0x486207;})[_0x1a29('0x26')](respondWithFilteredResult(_0x2c872c,_0x1d0e55))[_0x1a29('0x48')](handleError(_0x2c872c,null));};exports[_0x1a29('0x49')]=function(_0x398f62,_0x446e57){var _0x337a27={'raw':![],'where':{'id':_0x398f62[_0x1a29('0x4a')]['id']}},_0x2c869f={};_0x2c869f[_0x1a29('0x33')]=_[_0x1a29('0x4b')](db[_0x1a29('0x44')][_0x1a29('0x4c')]);_0x2c869f[_0x1a29('0x34')]=_['keys'](_0x398f62['query']);_0x2c869f[_0x1a29('0x35')]=_[_0x1a29('0x36')](_0x2c869f[_0x1a29('0x33')],_0x2c869f[_0x1a29('0x34')]);_0x337a27[_0x1a29('0x37')]=_[_0x1a29('0x36')](_0x2c869f[_0x1a29('0x33')],qs[_0x1a29('0x38')](_0x398f62[_0x1a29('0x34')][_0x1a29('0x38')]));_0x337a27[_0x1a29('0x37')]=_0x337a27[_0x1a29('0x37')][_0x1a29('0x39')]?_0x337a27[_0x1a29('0x37')]:_0x2c869f[_0x1a29('0x33')];if(_0x398f62['query'][_0x1a29('0x45')]){_0x337a27[_0x1a29('0x46')]=[{'all':!![]}];}_0x337a27=_[_0x1a29('0x40')]({},_0x337a27,_0x398f62[_0x1a29('0x43')]);return db[_0x1a29('0x44')][_0x1a29('0x4d')](_0x337a27)[_0x1a29('0x26')](handleEntityNotFound(_0x446e57,null))[_0x1a29('0x26')](respondWithResult(_0x446e57,null))[_0x1a29('0x48')](handleError(_0x446e57,null));};exports[_0x1a29('0x4e')]=function(_0x32158d,_0x427be7){return db[_0x1a29('0x44')][_0x1a29('0x4e')](_0x32158d[_0x1a29('0x4f')],{})['then'](function(_0x4f31a0){var _0x21c830=_0x32158d['user'][_0x1a29('0x28')]({'plain':!![]});if(!_0x21c830)throw new Error(_0x1a29('0x50'));if(_0x21c830[_0x1a29('0x51')]===_0x1a29('0x52')){var _0x2f6889=_0x4f31a0[_0x1a29('0x28')]({'plain':!![]});var _0x3796e8=_0x1a29('0x53');return db[_0x1a29('0x54')]['find']({'where':{'name':_0x3796e8,'userProfileId':_0x21c830[_0x1a29('0x55')]},'raw':!![]})[_0x1a29('0x26')](function(_0x399279){if(_0x399279&&_0x399279[_0x1a29('0x56')]===0x0){return db[_0x1a29('0x57')][_0x1a29('0x4e')]({'name':_0x2f6889[_0x1a29('0x2d')],'resourceId':_0x2f6889['id'],'type':_0x399279[_0x1a29('0x2d')],'sectionId':_0x399279['id']},{})[_0x1a29('0x26')](function(){return _0x4f31a0;});}else{return _0x4f31a0;}})[_0x1a29('0x48')](function(_0x11dd02){logger['error'](_0x1a29('0x58'),_0x11dd02);throw _0x11dd02;});}return _0x4f31a0;})[_0x1a29('0x26')](respondWithResult(_0x427be7,0xc9))[_0x1a29('0x48')](handleError(_0x427be7,null));};exports[_0x1a29('0x59')]=function(_0x3bdbc3,_0x4881cd){var _0x48cacd={'where':{'id':_0x3bdbc3[_0x1a29('0x4a')]['id']}},_0x57c08a={};_0x57c08a[_0x1a29('0x33')]=_[_0x1a29('0x4b')](db['Dashboard'][_0x1a29('0x4c')]);_0x48cacd[_0x1a29('0x37')]=_[_0x1a29('0x36')](_0x57c08a['model'],qs[_0x1a29('0x38')](_0x3bdbc3['query']['fields']));_0x48cacd['attributes']=_0x48cacd[_0x1a29('0x37')][_0x1a29('0x39')]?_0x48cacd[_0x1a29('0x37')]:_0x57c08a[_0x1a29('0x33')];if(_0x3bdbc3[_0x1a29('0x34')][_0x1a29('0x45')]){_0x48cacd[_0x1a29('0x46')]=[{'all':!![]}];}_0x48cacd=_[_0x1a29('0x40')]({},_0x48cacd,_0x3bdbc3[_0x1a29('0x43')]);return db[_0x1a29('0x44')]['find'](_0x48cacd)[_0x1a29('0x26')](handleEntityNotFound(_0x4881cd,null))['then'](function(_0x24b62d){if(_0x24b62d){var _0x4b5f3e=_0x24b62d[_0x1a29('0x28')]({'plain':!![]});_0x4b5f3e=qs[_0x1a29('0x5a')](_0x4b5f3e,['id',_0x1a29('0x5b'),_0x1a29('0x5c')]);_0x3bdbc3[_0x1a29('0x4f')]=_[_0x1a29('0x5a')](_0x3bdbc3['body'],['id',_0x1a29('0x5b'),_0x1a29('0x5c')]);return db['Dashboard']['create'](_['merge'](_0x4b5f3e,_0x3bdbc3['body']),{'include':_0x3bdbc3[_0x1a29('0x34')][_0x1a29('0x45')]?[{'all':!![]}]:undefined})['then'](function(_0xbcb064){var _0x41feee=_0x3bdbc3[_0x1a29('0x52')][_0x1a29('0x28')]({'plain':!![]});if(!_0x41feee)throw new Error(_0x1a29('0x50'));if(_0x41feee[_0x1a29('0x51')]===_0x1a29('0x52')){var _0x22b9b7=_0xbcb064[_0x1a29('0x28')]({'plain':!![]});var _0xa7bfb6=_0x1a29('0x53');return db[_0x1a29('0x54')]['find']({'where':{'name':_0xa7bfb6,'userProfileId':_0x41feee[_0x1a29('0x55')]},'raw':!![]})[_0x1a29('0x26')](function(_0x2e9137){if(_0x2e9137&&_0x2e9137['autoAssociation']===0x0){return db[_0x1a29('0x57')]['create']({'name':_0x22b9b7[_0x1a29('0x2d')],'resourceId':_0x22b9b7['id'],'type':_0x2e9137[_0x1a29('0x2d')],'sectionId':_0x2e9137['id']},{})['then'](function(){return _0xbcb064;});}else{return _0xbcb064;}})[_0x1a29('0x48')](function(_0x11e323){logger[_0x1a29('0x2b')](_0x1a29('0x58'),_0x11e323);throw _0x11e323;});}return _0xbcb064;});}})[_0x1a29('0x26')](respondWithResult(_0x4881cd,0xc9))[_0x1a29('0x48')](handleError(_0x4881cd,null));};exports[_0x1a29('0x25')]=function(_0x7633e3,_0xb96849){if(_0x7633e3[_0x1a29('0x4f')]['id']){delete _0x7633e3[_0x1a29('0x4f')]['id'];}return db['Dashboard'][_0x1a29('0x4d')]({'where':{'id':_0x7633e3[_0x1a29('0x4a')]['id']}})['then'](handleEntityNotFound(_0xb96849,null))[_0x1a29('0x26')](saveUpdates(_0x7633e3['body'],null))['then'](respondWithResult(_0xb96849,null))[_0x1a29('0x48')](handleError(_0xb96849,null));};exports[_0x1a29('0x27')]=function(_0x543151,_0x362f14){return db[_0x1a29('0x44')][_0x1a29('0x4d')]({'where':{'id':_0x543151[_0x1a29('0x4a')]['id']}})[_0x1a29('0x26')](handleEntityNotFound(_0x362f14,null))['then'](removeEntity(_0x362f14,null))[_0x1a29('0x48')](handleError(_0x362f14,null));};function widgetAttributes(_0x8e3788){try{switch(_0x8e3788['type']){case _0x1a29('0x5d'):return[{'name':_0x1a29('0x5e'),'value':_0x8e3788['attrUrl']||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788['attrs'][0x0]?_0x8e3788[_0x1a29('0x5f')][0x0][_0x1a29('0x60')]:undefined)||_0x1a29('0x61')}];case _0x1a29('0x62'):return[{'name':_0x1a29('0x63'),'value':_0x8e3788['attrPath']||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788['attrs'][0x0]?_0x8e3788['attrs'][0x0][_0x1a29('0x60')]:undefined)||''}];case _0x1a29('0x64'):return[{'name':_0x1a29('0x65'),'value':_0x8e3788[_0x1a29('0x65')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x0]?_0x8e3788[_0x1a29('0x5f')][0x0][_0x1a29('0x60')]:undefined)||'HH:mm:ss'},{'name':_0x1a29('0x66'),'value':_0x8e3788[_0x1a29('0x66')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x1]?_0x8e3788[_0x1a29('0x5f')][0x1]['value']:undefined)||_0x1a29('0x67')},{'name':_0x1a29('0x68'),'value':_0x8e3788[_0x1a29('0x68')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x2]?_0x8e3788[_0x1a29('0x5f')][0x2]['value']:undefined)||0xc}];case _0x1a29('0x69'):return[{'name':_0x1a29('0x6a'),'value':_0x8e3788[_0x1a29('0x6a')]||(_0x8e3788['attrs']&&_0x8e3788[_0x1a29('0x5f')][0x0]?_0x8e3788['attrs'][0x0][_0x1a29('0x60')]:undefined)||_0x1a29('0x6b')},{'name':_0x1a29('0x6c'),'value':_0x8e3788[_0x1a29('0x6c')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x1]?_0x8e3788['attrs'][0x1][_0x1a29('0x60')]:undefined)||[]},{'name':_0x1a29('0x68'),'value':_0x8e3788['attrFontSize']||(_0x8e3788['attrs']&&_0x8e3788[_0x1a29('0x5f')][0x2]?_0x8e3788['attrs'][0x2][_0x1a29('0x60')]:undefined)||0x14}];case _0x1a29('0x6d'):case _0x1a29('0x6e'):return[{'name':_0x1a29('0x6f'),'value':_0x8e3788[_0x1a29('0x6f')]||(_0x8e3788['attrs']&&_0x8e3788[_0x1a29('0x5f')][0x0]?_0x8e3788['attrs'][0x0]['value']:undefined)||'total'},{'name':_0x1a29('0x70'),'value':_0x8e3788['attrSerie2']||(_0x8e3788['attrs']&&_0x8e3788[_0x1a29('0x5f')][0x1]?_0x8e3788['attrs'][0x1]['value']:undefined)||null},{'name':_0x1a29('0x71'),'value':_0x8e3788[_0x1a29('0x71')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x2]?_0x8e3788[_0x1a29('0x5f')][0x2]['value']:undefined)||null},{'name':_0x1a29('0x6c'),'value':_0x8e3788[_0x1a29('0x6c')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x3]?_0x8e3788[_0x1a29('0x5f')][0x3]['value']:undefined)||[]}];case _0x1a29('0x72'):return[{'name':_0x1a29('0x73'),'type':_0x8e3788[_0x1a29('0x74')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x0]?_0x8e3788[_0x1a29('0x5f')][0x0][_0x1a29('0x41')]:undefined)||null,'value':_0x8e3788[_0x1a29('0x73')]||(_0x8e3788['attrs']&&_0x8e3788[_0x1a29('0x5f')][0x0]?_0x8e3788[_0x1a29('0x5f')][0x0][_0x1a29('0x60')]:undefined)||null},{'name':_0x1a29('0x75'),'value':_0x8e3788[_0x1a29('0x75')]||(_0x8e3788[_0x1a29('0x5f')]&&_0x8e3788[_0x1a29('0x5f')][0x1]?_0x8e3788[_0x1a29('0x5f')][0x1][_0x1a29('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x5a6dab){logger['error'](_0x1a29('0x76'),JSON[_0x1a29('0x77')](_0x5a6dab));return[];}}exports[_0x1a29('0x78')]=function(_0x346e34,_0x16c817,_0x570cd1){if(_0x346e34[_0x1a29('0x4f')]['id']){delete _0x346e34[_0x1a29('0x4f')]['id'];}return db[_0x1a29('0x44')][_0x1a29('0x4d')]({'where':{'id':_0x346e34[_0x1a29('0x4a')]['id']}})[_0x1a29('0x26')](handleEntityNotFound(_0x16c817,null))[_0x1a29('0x26')](function(_0x21e901){if(_0x21e901){_0x346e34[_0x1a29('0x4f')][_0x1a29('0x79')]=_0x21e901['id'];_0x346e34[_0x1a29('0x4f')]['attrs']=widgetAttributes(_0x346e34[_0x1a29('0x4f')]);return db['DashboardItem'][_0x1a29('0x4e')](_0x346e34[_0x1a29('0x4f')]);}})[_0x1a29('0x26')](respondWithResult(_0x16c817,null))[_0x1a29('0x48')](handleError(_0x16c817,null));};exports['getItems']=function(_0x5eba92,_0x77036a,_0x3a128c){var _0x11e614={};var _0x43d480={};var _0xb4b1ec;var _0x512121;return db[_0x1a29('0x44')][_0x1a29('0x7a')]({'where':{'id':_0x5eba92[_0x1a29('0x4a')]['id']}})[_0x1a29('0x26')](handleEntityNotFound(_0x77036a,null))[_0x1a29('0x26')](function(_0x3270fd){if(_0x3270fd){_0xb4b1ec=_0x3270fd;_0x43d480[_0x1a29('0x33')]=_[_0x1a29('0x4b')](db[_0x1a29('0x7b')][_0x1a29('0x4c')]);_0x43d480['query']=_[_0x1a29('0x4b')](_0x5eba92['query']);_0x43d480[_0x1a29('0x35')]=_[_0x1a29('0x36')](_0x43d480[_0x1a29('0x33')],_0x43d480['query']);_0x11e614[_0x1a29('0x37')]=_[_0x1a29('0x36')](_0x43d480[_0x1a29('0x33')],qs[_0x1a29('0x38')](_0x5eba92['query'][_0x1a29('0x38')]));_0x11e614[_0x1a29('0x37')]=_0x11e614[_0x1a29('0x37')][_0x1a29('0x39')]?_0x11e614[_0x1a29('0x37')]:_0x43d480[_0x1a29('0x33')];_0x11e614['order']=qs[_0x1a29('0x3c')](_0x5eba92[_0x1a29('0x34')]['sort']);_0x11e614['where']=qs[_0x1a29('0x35')](_[_0x1a29('0x3e')](_0x5eba92[_0x1a29('0x34')],_0x43d480['filters']));if(_0x5eba92[_0x1a29('0x34')][_0x1a29('0x3f')]){_0x11e614[_0x1a29('0x3d')]=_['merge'](_0x11e614[_0x1a29('0x3d')],{'$or':_['map'](_0x11e614[_0x1a29('0x37')],function(_0x1bcf6f){var _0x15fbbd={};_0x15fbbd[_0x1bcf6f]={'$like':'%'+_0x5eba92['query']['filter']+'%'};return _0x15fbbd;})});}_0x11e614=_['merge']({},_0x11e614,_0x5eba92[_0x1a29('0x43')]);return _0xb4b1ec[_0x1a29('0x7c')](_0x11e614);}})[_0x1a29('0x26')](function(_0xb59828){if(_0xb59828){_0x512121=_0xb59828[_0x1a29('0x39')];if(!_0x5eba92['query'][_0x1a29('0x7d')](_0x1a29('0x3a'))){_0x11e614[_0x1a29('0x1e')]=qs[_0x1a29('0x1e')](_0x5eba92[_0x1a29('0x34')][_0x1a29('0x1e')]);_0x11e614[_0x1a29('0x21')]=qs[_0x1a29('0x21')](_0x5eba92[_0x1a29('0x34')][_0x1a29('0x21')]);}return _0xb4b1ec[_0x1a29('0x7c')](_0x11e614);}})[_0x1a29('0x26')](function(_0x563c28){if(_0x563c28){return _0x563c28?{'count':_0x512121,'rows':_0x563c28}:null;}})[_0x1a29('0x26')](respondWithResult(_0x77036a,null))[_0x1a29('0x48')](handleError(_0x77036a,null));};
\ No newline at end of file
+var _0xaa65=['clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart','total','attrSerie2','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','findOne','getItems','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./dashboard.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','apply','save','destroy','then','CustomDashboards','UserProfileResource','end','error','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','type','VIRTUAL','filter','options','includeAll','include','Dashboard','findAll','rows','catch','show','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','clone','createdAt','updatedAt','omit','params','iframe','attrUrl','attrs','value','attrPath'];(function(_0x1238ef,_0x4432f0){var _0x49f52e=function(_0x4d49f0){while(--_0x4d49f0){_0x1238ef['push'](_0x1238ef['shift']());}};_0x49f52e(++_0x4432f0);}(_0xaa65,0x10b));var _0x5aa6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaa65[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5aa6('0x0'));var rimraf=require(_0x5aa6('0x1'));var zipdir=require(_0x5aa6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5aa6('0x3'));var moment=require(_0x5aa6('0x4'));var BPromise=require(_0x5aa6('0x5'));var Mustache=require(_0x5aa6('0x6'));var util=require(_0x5aa6('0x7'));var path=require(_0x5aa6('0x8'));var sox=require(_0x5aa6('0x9'));var csv=require(_0x5aa6('0xa'));var ejs=require(_0x5aa6('0xb'));var fs=require('fs');var fs_extra=require(_0x5aa6('0xc'));var _=require(_0x5aa6('0xd'));var squel=require('squel');var crypto=require(_0x5aa6('0xe'));var jsforce=require(_0x5aa6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5aa6('0xa'));var querystring=require(_0x5aa6('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5aa6('0x11'));var qs=require(_0x5aa6('0x12'));var as=require(_0x5aa6('0x13'));var hardwareService=require(_0x5aa6('0x14'));var logger=require('../../config/logger')(_0x5aa6('0x15'));var utils=require(_0x5aa6('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5aa6('0x17'))['db'];config['redis']=_[_0x5aa6('0x18')](config['redis'],{'host':_0x5aa6('0x19'),'port':0x18eb});var socket=require(_0x5aa6('0x1a'))(new Redis(config[_0x5aa6('0x1b')]));require(_0x5aa6('0x1c'))[_0x5aa6('0x1d')](socket);function respondWithStatusCode(_0x27dc9f,_0x2c6f51){_0x2c6f51=_0x2c6f51||0xcc;return function(_0x15c313){if(_0x15c313){return _0x27dc9f[_0x5aa6('0x1e')](_0x2c6f51);}return _0x27dc9f[_0x5aa6('0x1f')](_0x2c6f51)['end']();};}function respondWithResult(_0x409063,_0x14a624){_0x14a624=_0x14a624||0xc8;return function(_0x1c6f21){if(_0x1c6f21){return _0x409063['status'](_0x14a624)[_0x5aa6('0x20')](_0x1c6f21);}};}function respondWithFilteredResult(_0x3211bd,_0x48d935){return function(_0x378eef){if(_0x378eef){var _0x20876c=typeof _0x48d935[_0x5aa6('0x21')]==='undefined'&&typeof _0x48d935[_0x5aa6('0x22')]===_0x5aa6('0x23');var _0x176d6f=_0x378eef['count'];var _0x13effb=_0x20876c?0x0:_0x48d935[_0x5aa6('0x21')];var _0x18c120=_0x20876c?_0x378eef[_0x5aa6('0x24')]:_0x48d935[_0x5aa6('0x21')]+_0x48d935['limit'];var _0x563d58;if(_0x18c120>=_0x176d6f){_0x18c120=_0x176d6f;_0x563d58=0xc8;}else{_0x563d58=0xce;}_0x3211bd['status'](_0x563d58);return _0x3211bd[_0x5aa6('0x25')]('Content-Range',_0x13effb+'-'+_0x18c120+'/'+_0x176d6f)[_0x5aa6('0x20')](_0x378eef);}return null;};}function patchUpdates(_0x225208){return function(_0x5e02da){try{jsonpatch[_0x5aa6('0x26')](_0x5e02da,_0x225208,!![]);}catch(_0x17c1fc){return BPromise['reject'](_0x17c1fc);}return _0x5e02da[_0x5aa6('0x27')]();};}function saveUpdates(_0x54b57f,_0x29df6a){return function(_0x41c32c){if(_0x41c32c){return _0x41c32c['update'](_0x54b57f)['then'](function(_0x3d47ba){return _0x3d47ba;});}return null;};}function removeEntity(_0x517656,_0x29c8dc){return function(_0x596327){if(_0x596327){return _0x596327[_0x5aa6('0x28')]()[_0x5aa6('0x29')](function(){var _0x2d569f=_0x596327['get']({'plain':!![]});var _0x5f2d49=_0x5aa6('0x2a');return db[_0x5aa6('0x2b')][_0x5aa6('0x28')]({'where':{'type':_0x5f2d49,'resourceId':_0x2d569f['id']}})['then'](function(){return _0x596327;});})['then'](function(){_0x517656[_0x5aa6('0x1f')](0xcc)[_0x5aa6('0x2c')]();});}};}function handleEntityNotFound(_0x89c456,_0x54dc44){return function(_0x53dc89){if(!_0x53dc89){_0x89c456['sendStatus'](0x194);}return _0x53dc89;};}function handleError(_0x9681c,_0x2e67a8){_0x2e67a8=_0x2e67a8||0x1f4;return function(_0x9ea3c){logger[_0x5aa6('0x2d')](_0x9ea3c['stack']);if(_0x9ea3c['name']){delete _0x9ea3c[_0x5aa6('0x2e')];}_0x9681c[_0x5aa6('0x1f')](_0x2e67a8)[_0x5aa6('0x2f')](_0x9ea3c);};}exports[_0x5aa6('0x30')]=function(_0x196444,_0x1fed18){var _0x263e28={},_0x4d9d45={},_0x5e12a2={'count':0x0,'rows':[]};var _0x292289=_[_0x5aa6('0x31')](db['Dashboard'][_0x5aa6('0x32')],function(_0x17bbe0){return{'name':_0x17bbe0[_0x5aa6('0x33')],'type':_0x17bbe0['type'][_0x5aa6('0x34')]};});_0x4d9d45[_0x5aa6('0x35')]=_[_0x5aa6('0x31')](_0x292289,_0x5aa6('0x2e'));_0x4d9d45['query']=_[_0x5aa6('0x36')](_0x196444[_0x5aa6('0x37')]);_0x4d9d45[_0x5aa6('0x38')]=_['intersection'](_0x4d9d45[_0x5aa6('0x35')],_0x4d9d45[_0x5aa6('0x37')]);_0x263e28[_0x5aa6('0x39')]=_[_0x5aa6('0x3a')](_0x4d9d45[_0x5aa6('0x35')],qs['fields'](_0x196444[_0x5aa6('0x37')][_0x5aa6('0x3b')]));_0x263e28['attributes']=_0x263e28['attributes'][_0x5aa6('0x3c')]?_0x263e28[_0x5aa6('0x39')]:_0x4d9d45[_0x5aa6('0x35')];if(!_0x196444[_0x5aa6('0x37')][_0x5aa6('0x3d')](_0x5aa6('0x3e'))){_0x263e28[_0x5aa6('0x22')]=qs['limit'](_0x196444[_0x5aa6('0x37')][_0x5aa6('0x22')]);_0x263e28[_0x5aa6('0x21')]=qs[_0x5aa6('0x21')](_0x196444['query'][_0x5aa6('0x21')]);}_0x263e28[_0x5aa6('0x3f')]=qs[_0x5aa6('0x40')](_0x196444[_0x5aa6('0x37')][_0x5aa6('0x40')]);_0x263e28['where']=qs[_0x5aa6('0x38')](_[_0x5aa6('0x41')](_0x196444['query'],_0x4d9d45[_0x5aa6('0x38')]),_0x292289);if(_0x196444[_0x5aa6('0x37')]['filter']){_0x263e28[_0x5aa6('0x42')]=_[_0x5aa6('0x43')](_0x263e28[_0x5aa6('0x42')],{'$or':_[_0x5aa6('0x31')](_0x292289,function(_0x4417e2){if(_0x4417e2[_0x5aa6('0x44')]!==_0x5aa6('0x45')){var _0x307ac5={};_0x307ac5[_0x4417e2[_0x5aa6('0x2e')]]={'$like':'%'+_0x196444[_0x5aa6('0x37')][_0x5aa6('0x46')]+'%'};return _0x307ac5;}})});}_0x263e28=_[_0x5aa6('0x43')]({},_0x263e28,_0x196444[_0x5aa6('0x47')]);var _0x321489={'where':_0x263e28[_0x5aa6('0x42')]};return db['Dashboard'][_0x5aa6('0x24')](_0x321489)[_0x5aa6('0x29')](function(_0x5b0fec){_0x5e12a2[_0x5aa6('0x24')]=_0x5b0fec;if(_0x196444[_0x5aa6('0x37')][_0x5aa6('0x48')]){_0x263e28[_0x5aa6('0x49')]=[{'all':!![]}];}return db[_0x5aa6('0x4a')][_0x5aa6('0x4b')](_0x263e28);})[_0x5aa6('0x29')](function(_0x174980){_0x5e12a2[_0x5aa6('0x4c')]=_0x174980;return _0x5e12a2;})[_0x5aa6('0x29')](respondWithFilteredResult(_0x1fed18,_0x263e28))[_0x5aa6('0x4d')](handleError(_0x1fed18,null));};exports[_0x5aa6('0x4e')]=function(_0x5854e8,_0xaa68c3){var _0x59b59e={'raw':![],'where':{'id':_0x5854e8['params']['id']}},_0x52edc5={};_0x52edc5[_0x5aa6('0x35')]=_['keys'](db[_0x5aa6('0x4a')][_0x5aa6('0x32')]);_0x52edc5[_0x5aa6('0x37')]=_[_0x5aa6('0x36')](_0x5854e8[_0x5aa6('0x37')]);_0x52edc5[_0x5aa6('0x38')]=_[_0x5aa6('0x3a')](_0x52edc5[_0x5aa6('0x35')],_0x52edc5[_0x5aa6('0x37')]);_0x59b59e['attributes']=_['intersection'](_0x52edc5['model'],qs[_0x5aa6('0x3b')](_0x5854e8[_0x5aa6('0x37')][_0x5aa6('0x3b')]));_0x59b59e[_0x5aa6('0x39')]=_0x59b59e[_0x5aa6('0x39')][_0x5aa6('0x3c')]?_0x59b59e[_0x5aa6('0x39')]:_0x52edc5[_0x5aa6('0x35')];if(_0x5854e8['query'][_0x5aa6('0x48')]){_0x59b59e['include']=[{'all':!![]}];}_0x59b59e=_['merge']({},_0x59b59e,_0x5854e8[_0x5aa6('0x47')]);return db['Dashboard']['find'](_0x59b59e)[_0x5aa6('0x29')](handleEntityNotFound(_0xaa68c3,null))[_0x5aa6('0x29')](respondWithResult(_0xaa68c3,null))[_0x5aa6('0x4d')](handleError(_0xaa68c3,null));};exports[_0x5aa6('0x4f')]=function(_0x163b0b,_0x487ac2){return db[_0x5aa6('0x4a')][_0x5aa6('0x4f')](_0x163b0b[_0x5aa6('0x50')],{})[_0x5aa6('0x29')](function(_0x6a4f29){var _0x3cd8d3=_0x163b0b['user'][_0x5aa6('0x51')]({'plain':!![]});if(!_0x3cd8d3)throw new Error(_0x5aa6('0x52'));if(_0x3cd8d3[_0x5aa6('0x53')]===_0x5aa6('0x54')){var _0x4f7350=_0x6a4f29[_0x5aa6('0x51')]({'plain':!![]});var _0x3abb6f=_0x5aa6('0x2a');return db[_0x5aa6('0x55')][_0x5aa6('0x56')]({'where':{'name':_0x3abb6f,'userProfileId':_0x3cd8d3[_0x5aa6('0x57')]},'raw':!![]})['then'](function(_0x49a934){if(_0x49a934&&_0x49a934[_0x5aa6('0x58')]===0x0){return db[_0x5aa6('0x2b')][_0x5aa6('0x4f')]({'name':_0x4f7350[_0x5aa6('0x2e')],'resourceId':_0x4f7350['id'],'type':_0x49a934[_0x5aa6('0x2e')],'sectionId':_0x49a934['id']},{})['then'](function(){return _0x6a4f29;});}else{return _0x6a4f29;}})[_0x5aa6('0x4d')](function(_0x30a9a0){logger[_0x5aa6('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x30a9a0);throw _0x30a9a0;});}return _0x6a4f29;})[_0x5aa6('0x29')](respondWithResult(_0x487ac2,0xc9))[_0x5aa6('0x4d')](handleError(_0x487ac2,null));};exports[_0x5aa6('0x59')]=function(_0x401097,_0x13dfde){var _0x2f48bb={'where':{'id':_0x401097['params']['id']}},_0x1b63c4={};_0x1b63c4[_0x5aa6('0x35')]=_['keys'](db[_0x5aa6('0x4a')][_0x5aa6('0x32')]);_0x2f48bb['attributes']=_[_0x5aa6('0x3a')](_0x1b63c4[_0x5aa6('0x35')],qs[_0x5aa6('0x3b')](_0x401097[_0x5aa6('0x37')]['fields']));_0x2f48bb['attributes']=_0x2f48bb[_0x5aa6('0x39')]['length']?_0x2f48bb[_0x5aa6('0x39')]:_0x1b63c4[_0x5aa6('0x35')];if(_0x401097[_0x5aa6('0x37')][_0x5aa6('0x48')]){_0x2f48bb[_0x5aa6('0x49')]=[{'all':!![]}];}_0x2f48bb=_['merge']({},_0x2f48bb,_0x401097[_0x5aa6('0x47')]);return db[_0x5aa6('0x4a')][_0x5aa6('0x56')](_0x2f48bb)[_0x5aa6('0x29')](handleEntityNotFound(_0x13dfde,null))['then'](function(_0x3c5a54){if(_0x3c5a54){var _0x1bc79e=_0x3c5a54[_0x5aa6('0x51')]({'plain':!![]});_0x1bc79e=qs['omit'](_0x1bc79e,['id',_0x5aa6('0x5a'),_0x5aa6('0x5b')]);_0x401097[_0x5aa6('0x50')]=_[_0x5aa6('0x5c')](_0x401097[_0x5aa6('0x50')],['id',_0x5aa6('0x5a'),'updatedAt']);return db['Dashboard'][_0x5aa6('0x4f')](_[_0x5aa6('0x43')](_0x1bc79e,_0x401097[_0x5aa6('0x50')]),{'include':_0x401097['query'][_0x5aa6('0x48')]?[{'all':!![]}]:undefined})['then'](function(_0x298b4d){var _0x30bb39=_0x401097[_0x5aa6('0x54')][_0x5aa6('0x51')]({'plain':!![]});if(!_0x30bb39)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x30bb39[_0x5aa6('0x53')]===_0x5aa6('0x54')){var _0xede962=_0x298b4d[_0x5aa6('0x51')]({'plain':!![]});var _0x5bfcf1=_0x5aa6('0x2a');return db[_0x5aa6('0x55')][_0x5aa6('0x56')]({'where':{'name':_0x5bfcf1,'userProfileId':_0x30bb39[_0x5aa6('0x57')]},'raw':!![]})[_0x5aa6('0x29')](function(_0x32d0cc){if(_0x32d0cc&&_0x32d0cc['autoAssociation']===0x0){return db['UserProfileResource'][_0x5aa6('0x4f')]({'name':_0xede962[_0x5aa6('0x2e')],'resourceId':_0xede962['id'],'type':_0x32d0cc[_0x5aa6('0x2e')],'sectionId':_0x32d0cc['id']},{})[_0x5aa6('0x29')](function(){return _0x298b4d;});}else{return _0x298b4d;}})['catch'](function(_0x286221){logger[_0x5aa6('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x286221);throw _0x286221;});}return _0x298b4d;});}})[_0x5aa6('0x29')](respondWithResult(_0x13dfde,0xc9))['catch'](handleError(_0x13dfde,null));};exports['update']=function(_0x49686a,_0x32a70c){if(_0x49686a[_0x5aa6('0x50')]['id']){delete _0x49686a[_0x5aa6('0x50')]['id'];}return db[_0x5aa6('0x4a')][_0x5aa6('0x56')]({'where':{'id':_0x49686a[_0x5aa6('0x5d')]['id']}})['then'](handleEntityNotFound(_0x32a70c,null))[_0x5aa6('0x29')](saveUpdates(_0x49686a[_0x5aa6('0x50')],null))[_0x5aa6('0x29')](respondWithResult(_0x32a70c,null))['catch'](handleError(_0x32a70c,null));};exports[_0x5aa6('0x28')]=function(_0x401cb6,_0x58965d){return db[_0x5aa6('0x4a')][_0x5aa6('0x56')]({'where':{'id':_0x401cb6[_0x5aa6('0x5d')]['id']}})[_0x5aa6('0x29')](handleEntityNotFound(_0x58965d,null))['then'](removeEntity(_0x58965d,null))['catch'](handleError(_0x58965d,null));};function widgetAttributes(_0x11a0e6){try{switch(_0x11a0e6[_0x5aa6('0x44')]){case _0x5aa6('0x5e'):return[{'name':'attrUrl','value':_0x11a0e6[_0x5aa6('0x5f')]||(_0x11a0e6['attrs']&&_0x11a0e6['attrs'][0x0]?_0x11a0e6[_0x5aa6('0x60')][0x0][_0x5aa6('0x61')]:undefined)||'https://'}];case'custom':return[{'name':_0x5aa6('0x62'),'value':_0x11a0e6[_0x5aa6('0x62')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x0]?_0x11a0e6[_0x5aa6('0x60')][0x0][_0x5aa6('0x61')]:undefined)||''}];case _0x5aa6('0x63'):return[{'name':_0x5aa6('0x64'),'value':_0x11a0e6[_0x5aa6('0x64')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x0]?_0x11a0e6[_0x5aa6('0x60')][0x0][_0x5aa6('0x61')]:undefined)||_0x5aa6('0x65')},{'name':_0x5aa6('0x66'),'value':_0x11a0e6[_0x5aa6('0x66')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6['attrs'][0x1]?_0x11a0e6[_0x5aa6('0x60')][0x1][_0x5aa6('0x61')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x11a0e6[_0x5aa6('0x67')]||(_0x11a0e6['attrs']&&_0x11a0e6[_0x5aa6('0x60')][0x2]?_0x11a0e6[_0x5aa6('0x60')][0x2][_0x5aa6('0x61')]:undefined)||0xc}];case _0x5aa6('0x68'):return[{'name':_0x5aa6('0x69'),'value':_0x11a0e6[_0x5aa6('0x69')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x0]?_0x11a0e6[_0x5aa6('0x60')][0x0][_0x5aa6('0x61')]:undefined)||'total'},{'name':_0x5aa6('0x6a'),'value':_0x11a0e6['attrVoiceQueues']||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6['attrs'][0x1]?_0x11a0e6[_0x5aa6('0x60')][0x1][_0x5aa6('0x61')]:undefined)||[]},{'name':_0x5aa6('0x67'),'value':_0x11a0e6[_0x5aa6('0x67')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x2]?_0x11a0e6[_0x5aa6('0x60')][0x2][_0x5aa6('0x61')]:undefined)||0x14}];case _0x5aa6('0x6b'):case _0x5aa6('0x6c'):return[{'name':'attrSerie1','value':_0x11a0e6['attrSerie1']||(_0x11a0e6['attrs']&&_0x11a0e6['attrs'][0x0]?_0x11a0e6[_0x5aa6('0x60')][0x0]['value']:undefined)||_0x5aa6('0x6d')},{'name':_0x5aa6('0x6e'),'value':_0x11a0e6[_0x5aa6('0x6e')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x1]?_0x11a0e6[_0x5aa6('0x60')][0x1][_0x5aa6('0x61')]:undefined)||null},{'name':'attrSerie3','value':_0x11a0e6['attrSerie3']||(_0x11a0e6['attrs']&&_0x11a0e6['attrs'][0x2]?_0x11a0e6[_0x5aa6('0x60')][0x2][_0x5aa6('0x61')]:undefined)||null},{'name':_0x5aa6('0x6a'),'value':_0x11a0e6[_0x5aa6('0x6a')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x3]?_0x11a0e6[_0x5aa6('0x60')][0x3][_0x5aa6('0x61')]:undefined)||[]}];case _0x5aa6('0x6f'):return[{'name':_0x5aa6('0x70'),'type':_0x11a0e6[_0x5aa6('0x71')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x0]?_0x11a0e6[_0x5aa6('0x60')][0x0][_0x5aa6('0x44')]:undefined)||null,'value':_0x11a0e6[_0x5aa6('0x70')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6[_0x5aa6('0x60')][0x0]?_0x11a0e6[_0x5aa6('0x60')][0x0][_0x5aa6('0x61')]:undefined)||null},{'name':'attrRefresh','value':_0x11a0e6[_0x5aa6('0x72')]||(_0x11a0e6[_0x5aa6('0x60')]&&_0x11a0e6['attrs'][0x1]?_0x11a0e6[_0x5aa6('0x60')][0x1][_0x5aa6('0x61')]:undefined)||0x0}];default:return[];}}catch(_0x475d51){logger[_0x5aa6('0x2d')](_0x5aa6('0x73'),JSON[_0x5aa6('0x74')](_0x475d51));return[];}}exports[_0x5aa6('0x75')]=function(_0x333b98,_0x42118c,_0x3defc0){if(_0x333b98[_0x5aa6('0x50')]['id']){delete _0x333b98[_0x5aa6('0x50')]['id'];}return db['Dashboard'][_0x5aa6('0x56')]({'where':{'id':_0x333b98[_0x5aa6('0x5d')]['id']}})[_0x5aa6('0x29')](handleEntityNotFound(_0x42118c,null))[_0x5aa6('0x29')](function(_0x14f9bb){if(_0x14f9bb){_0x333b98[_0x5aa6('0x50')][_0x5aa6('0x76')]=_0x14f9bb['id'];_0x333b98[_0x5aa6('0x50')][_0x5aa6('0x60')]=widgetAttributes(_0x333b98[_0x5aa6('0x50')]);return db[_0x5aa6('0x77')]['create'](_0x333b98[_0x5aa6('0x50')]);}})['then'](respondWithResult(_0x42118c,null))[_0x5aa6('0x4d')](handleError(_0x42118c,null));};exports['getItems']=function(_0xf61b24,_0x5efeec,_0x5d1f45){var _0xa7cdd0={};var _0xfbe749={};var _0x3144a6;var _0x4341fd;return db[_0x5aa6('0x4a')][_0x5aa6('0x78')]({'where':{'id':_0xf61b24[_0x5aa6('0x5d')]['id']}})[_0x5aa6('0x29')](handleEntityNotFound(_0x5efeec,null))[_0x5aa6('0x29')](function(_0x2b420){if(_0x2b420){_0x3144a6=_0x2b420;_0xfbe749[_0x5aa6('0x35')]=_[_0x5aa6('0x36')](db['DashboardItem'][_0x5aa6('0x32')]);_0xfbe749[_0x5aa6('0x37')]=_[_0x5aa6('0x36')](_0xf61b24[_0x5aa6('0x37')]);_0xfbe749[_0x5aa6('0x38')]=_[_0x5aa6('0x3a')](_0xfbe749[_0x5aa6('0x35')],_0xfbe749[_0x5aa6('0x37')]);_0xa7cdd0[_0x5aa6('0x39')]=_[_0x5aa6('0x3a')](_0xfbe749[_0x5aa6('0x35')],qs[_0x5aa6('0x3b')](_0xf61b24[_0x5aa6('0x37')]['fields']));_0xa7cdd0[_0x5aa6('0x39')]=_0xa7cdd0[_0x5aa6('0x39')]['length']?_0xa7cdd0[_0x5aa6('0x39')]:_0xfbe749[_0x5aa6('0x35')];_0xa7cdd0[_0x5aa6('0x3f')]=qs[_0x5aa6('0x40')](_0xf61b24[_0x5aa6('0x37')][_0x5aa6('0x40')]);_0xa7cdd0[_0x5aa6('0x42')]=qs[_0x5aa6('0x38')](_[_0x5aa6('0x41')](_0xf61b24[_0x5aa6('0x37')],_0xfbe749[_0x5aa6('0x38')]));if(_0xf61b24[_0x5aa6('0x37')]['filter']){_0xa7cdd0['where']=_['merge'](_0xa7cdd0['where'],{'$or':_[_0x5aa6('0x31')](_0xa7cdd0[_0x5aa6('0x39')],function(_0x49f2ed){var _0x3cded7={};_0x3cded7[_0x49f2ed]={'$like':'%'+_0xf61b24[_0x5aa6('0x37')][_0x5aa6('0x46')]+'%'};return _0x3cded7;})});}_0xa7cdd0=_[_0x5aa6('0x43')]({},_0xa7cdd0,_0xf61b24[_0x5aa6('0x47')]);return _0x3144a6[_0x5aa6('0x79')](_0xa7cdd0);}})[_0x5aa6('0x29')](function(_0xc4645c){if(_0xc4645c){_0x4341fd=_0xc4645c['length'];if(!_0xf61b24['query'][_0x5aa6('0x3d')](_0x5aa6('0x3e'))){_0xa7cdd0[_0x5aa6('0x22')]=qs['limit'](_0xf61b24[_0x5aa6('0x37')][_0x5aa6('0x22')]);_0xa7cdd0[_0x5aa6('0x21')]=qs[_0x5aa6('0x21')](_0xf61b24['query'][_0x5aa6('0x21')]);}return _0x3144a6['getItems'](_0xa7cdd0);}})[_0x5aa6('0x29')](function(_0x4abc9b){if(_0x4abc9b){return _0x4abc9b?{'count':_0x4341fd,'rows':_0x4abc9b}:null;}})['then'](respondWithResult(_0x5efeec,null))[_0x5aa6('0x4d')](handleError(_0x5efeec,null));};
\ No newline at end of file
index ab8c8ba..2428636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b43=['hasOwnProperty','exports','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x14816d,_0x3fdac7){var _0x4d6e63=function(_0x6c78fc){while(--_0x6c78fc){_0x14816d['push'](_0x14816d['shift']());}};_0x4d6e63(++_0x3fdac7);}(_0x5b43,0x11a));var _0x35b4=function(_0x3033e7,_0x5b22f1){_0x3033e7=_0x3033e7-0x0;var _0x4254a9=_0x5b43[_0x3033e7];return _0x4254a9;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0x35b4('0x0'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0x35b4('0x1')](0x0);var events={'afterCreate':_0x35b4('0x2'),'afterUpdate':'update','afterDestroy':_0x35b4('0x3')};function emitEvent(_0x240e2b){return function(_0x5dd6a9,_0x2c6401,_0x5f3972){DashboardEvents[_0x35b4('0x4')](_0x240e2b+':'+_0x5dd6a9['id'],_0x5dd6a9);DashboardEvents[_0x35b4('0x4')](_0x240e2b,_0x5dd6a9);_0x5f3972(null);};}for(var e in events){if(events[_0x35b4('0x5')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0x35b4('0x6')]=DashboardEvents;
\ No newline at end of file
+var _0x1504=['hook','exports','events','Dashboard','setMaxListeners','update','remove','emit'];(function(_0x299310,_0x46876e){var _0x449b99=function(_0x4cce5c){while(--_0x4cce5c){_0x299310['push'](_0x299310['shift']());}};_0x449b99(++_0x46876e);}(_0x1504,0x1da));var _0x4150=function(_0x532c55,_0x4dab9a){_0x532c55=_0x532c55-0x0;var _0x1eefe9=_0x1504[_0x532c55];return _0x1eefe9;};'use strict';var EventEmitter=require(_0x4150('0x0'));var Dashboard=require('../../mysqldb')['db'][_0x4150('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x4150('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4150('0x3'),'afterDestroy':_0x4150('0x4')};function emitEvent(_0x4e0a92){return function(_0x4efad0,_0x44f4c4,_0x2d83b7){DashboardEvents[_0x4150('0x5')](_0x4e0a92+':'+_0x4efad0['id'],_0x4efad0);DashboardEvents['emit'](_0x4e0a92,_0x4efad0);_0x2d83b7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x4150('0x6')](e,emitEvent(event));}}module[_0x4150('0x7')]=DashboardEvents;
\ No newline at end of file
index 65a778a..850d5b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3779=['rimraf','exports','define','Dashboard','dashboards','lodash','util','api','moment','bluebird','request-promise'];(function(_0x195d0b,_0x1210fe){var _0x1954f0=function(_0x7f98dd){while(--_0x7f98dd){_0x195d0b['push'](_0x195d0b['shift']());}};_0x1954f0(++_0x1210fe);}(_0x3779,0x102));var _0x9377=function(_0x179c4a,_0x10eb06){_0x179c4a=_0x179c4a-0x0;var _0x5d1879=_0x3779[_0x179c4a];return _0x5d1879;};'use strict';var _=require(_0x9377('0x0'));var util=require(_0x9377('0x1'));var logger=require('../../config/logger')(_0x9377('0x2'));var moment=require(_0x9377('0x3'));var BPromise=require(_0x9377('0x4'));var rp=require(_0x9377('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9377('0x6'));var config=require('../../config/environment');var attributes=require('./dashboard.attributes');module[_0x9377('0x7')]=function(_0x287d60,_0x4a9995){return _0x287d60[_0x9377('0x8')](_0x9377('0x9'),attributes,{'tableName':_0x9377('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70f8=['request-promise','path','../../config/environment','./dashboard.attributes','exports','Dashboard','dashboards','../../config/logger','api','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70f8,0x6b));var _0x870f=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x70f8[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x870f('0x0'))(_0x870f('0x1'));var moment=require('moment');var BPromise=require(_0x870f('0x2'));var rp=require(_0x870f('0x3'));var fs=require('fs');var path=require(_0x870f('0x4'));var rimraf=require('rimraf');var config=require(_0x870f('0x5'));var attributes=require(_0x870f('0x6'));module[_0x870f('0x7')]=function(_0x542059,_0x3c0144){return _0x542059['define'](_0x870f('0x8'),attributes,{'tableName':_0x870f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7738116..bf62cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd05c=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./dashboard.socket','request','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x53c146,_0x1d6d0c){var _0x2b9587=function(_0x4175fd){while(--_0x4175fd){_0x53c146['push'](_0x53c146['shift']());}};_0x2b9587(++_0x1d6d0c);}(_0xd05c,0x18c));var _0xcd05=function(_0x45c87a,_0x1e3b68){_0x45c87a=_0x45c87a-0x0;var _0x2393d9=_0xd05c[_0x45c87a];return _0x2393d9;};'use strict';var _=require(_0xcd05('0x0'));var util=require(_0xcd05('0x1'));var moment=require(_0xcd05('0x2'));var BPromise=require(_0xcd05('0x3'));var rs=require(_0xcd05('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcd05('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcd05('0x6'))(_0xcd05('0x7'));var config=require(_0xcd05('0x8'));var jayson=require(_0xcd05('0x9'));var client=jayson[_0xcd05('0xa')][_0xcd05('0xb')]({'port':0x232a});config[_0xcd05('0xc')]=_[_0xcd05('0xd')](config[_0xcd05('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xcd05('0xe'))(new Redis(config[_0xcd05('0xc')]));require(_0xcd05('0xf'))['register'](socket);function respondWithRpcPromise(_0x406d12,_0x1ae03a,_0x39912d){return new BPromise(function(_0x1f5e1a,_0x379872){return client[_0xcd05('0x10')](_0x406d12,_0x39912d)['then'](function(_0x8e468){logger[_0xcd05('0x11')](_0xcd05('0x12'),_0x1ae03a,_0xcd05('0x13'));logger[_0xcd05('0x14')](_0xcd05('0x15'),_0x1ae03a,'request\x20sent',JSON[_0xcd05('0x16')](_0x8e468));if(_0x8e468['error']){if(_0x8e468[_0xcd05('0x17')][_0xcd05('0x18')]===0x1f4){logger[_0xcd05('0x17')](_0xcd05('0x12'),_0x1ae03a,_0x8e468[_0xcd05('0x17')][_0xcd05('0x19')]);return _0x379872(_0x8e468[_0xcd05('0x17')][_0xcd05('0x19')]);}logger[_0xcd05('0x17')](_0xcd05('0x12'),_0x1ae03a,_0x8e468[_0xcd05('0x17')][_0xcd05('0x19')]);return _0x1f5e1a(_0x8e468[_0xcd05('0x17')]['message']);}else{logger[_0xcd05('0x11')]('Dashboard,\x20%s,\x20%s',_0x1ae03a,_0xcd05('0x13'));_0x1f5e1a(_0x8e468[_0xcd05('0x1a')]['message']);}})[_0xcd05('0x1b')](function(_0x36a8ae){logger['error'](_0xcd05('0x12'),_0x1ae03a,_0x36a8ae);_0x379872(_0x36a8ae);});});}
\ No newline at end of file
+var _0x2f21=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util'];(function(_0x145306,_0x32ab2a){var _0x54541a=function(_0x3eaf36){while(--_0x3eaf36){_0x145306['push'](_0x145306['shift']());}};_0x54541a(++_0x32ab2a);}(_0x2f21,0xf2));var _0x12f2=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x2f21[_0x40220a];return _0x3903cc;};'use strict';var _=require('lodash');var util=require(_0x12f2('0x0'));var moment=require(_0x12f2('0x1'));var BPromise=require(_0x12f2('0x2'));var rs=require(_0x12f2('0x3'));var fs=require('fs');var Redis=require(_0x12f2('0x4'));var db=require(_0x12f2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x12f2('0x6'))(_0x12f2('0x7'));var config=require(_0x12f2('0x8'));var jayson=require(_0x12f2('0x9'));var client=jayson['client'][_0x12f2('0xa')]({'port':0x232a});config[_0x12f2('0xb')]=_[_0x12f2('0xc')](config[_0x12f2('0xb')],{'host':_0x12f2('0xd'),'port':0x18eb});var socket=require(_0x12f2('0xe'))(new Redis(config[_0x12f2('0xb')]));require(_0x12f2('0xf'))[_0x12f2('0x10')](socket);function respondWithRpcPromise(_0x190c3b,_0x2f8a5a,_0x3d2d5){return new BPromise(function(_0x180f48,_0x41a72b){return client['request'](_0x190c3b,_0x3d2d5)[_0x12f2('0x11')](function(_0x503942){logger['info'](_0x12f2('0x12'),_0x2f8a5a,_0x12f2('0x13'));logger[_0x12f2('0x14')](_0x12f2('0x15'),_0x2f8a5a,'request\x20sent',JSON['stringify'](_0x503942));if(_0x503942['error']){if(_0x503942[_0x12f2('0x16')][_0x12f2('0x17')]===0x1f4){logger[_0x12f2('0x16')]('Dashboard,\x20%s,\x20%s',_0x2f8a5a,_0x503942['error'][_0x12f2('0x18')]);return _0x41a72b(_0x503942[_0x12f2('0x16')]['message']);}logger['error'](_0x12f2('0x12'),_0x2f8a5a,_0x503942['error'][_0x12f2('0x18')]);return _0x180f48(_0x503942[_0x12f2('0x16')][_0x12f2('0x18')]);}else{logger['info']('Dashboard,\x20%s,\x20%s',_0x2f8a5a,'request\x20sent');_0x180f48(_0x503942[_0x12f2('0x19')][_0x12f2('0x18')]);}})[_0x12f2('0x1a')](function(_0x422b64){logger['error'](_0x12f2('0x12'),_0x2f8a5a,_0x422b64);_0x41a72b(_0x422b64);});});}
\ No newline at end of file
index ffb014e..3a6a80b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a1d=['dashboard:','./dashboard.events','save','remove','removeListener','register','length'];(function(_0x2bf5f6,_0x1184cc){var _0x572b2a=function(_0x345c1a){while(--_0x345c1a){_0x2bf5f6['push'](_0x2bf5f6['shift']());}};_0x572b2a(++_0x1184cc);}(_0x6a1d,0x1e4));var _0xd6a1=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x6a1d[_0x55e08b];return _0xd1a7ff;};'use strict';var DashboardEvents=require(_0xd6a1('0x0'));var events=[_0xd6a1('0x1'),_0xd6a1('0x2'),'update'];function createListener(_0x3e5a59,_0xbbbd3a){return function(_0x594990){_0xbbbd3a['emit'](_0x3e5a59,_0x594990);};}function removeListener(_0x482323,_0x1eb19a){return function(){DashboardEvents[_0xd6a1('0x3')](_0x482323,_0x1eb19a);};}exports[_0xd6a1('0x4')]=function(_0x4b89d9){for(var _0x2a6818=0x0,_0x465d87=events[_0xd6a1('0x5')];_0x2a6818<_0x465d87;_0x2a6818++){var _0x5da1cf=events[_0x2a6818];var _0x3b5d23=createListener(_0xd6a1('0x6')+_0x5da1cf,_0x4b89d9);DashboardEvents['on'](_0x5da1cf,_0x3b5d23);}};
\ No newline at end of file
+var _0x4e55=['register','length','dashboard:','save','remove','emit','removeListener'];(function(_0x132d9e,_0x4a0839){var _0x40b733=function(_0x30c113){while(--_0x30c113){_0x132d9e['push'](_0x132d9e['shift']());}};_0x40b733(++_0x4a0839);}(_0x4e55,0xab));var _0x54e5=function(_0x28320d,_0xc2975d){_0x28320d=_0x28320d-0x0;var _0x189ee3=_0x4e55[_0x28320d];return _0x189ee3;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x54e5('0x0'),_0x54e5('0x1'),'update'];function createListener(_0x2415fb,_0x314faf){return function(_0x2fb5cd){_0x314faf[_0x54e5('0x2')](_0x2415fb,_0x2fb5cd);};}function removeListener(_0x21b4f0,_0x1d8095){return function(){DashboardEvents[_0x54e5('0x3')](_0x21b4f0,_0x1d8095);};}exports[_0x54e5('0x4')]=function(_0x54431d){for(var _0xbdaa57=0x0,_0x3012da=events[_0x54e5('0x5')];_0xbdaa57<_0x3012da;_0xbdaa57++){var _0x5a1173=events[_0xbdaa57];var _0x43e836=createListener(_0x54e5('0x6')+_0x5a1173,_0x54431d);DashboardEvents['on'](_0x5a1173,_0x43e836);}};
\ No newline at end of file
index 6c677e2..16ebc31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86b4=['delete','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','index','/:id','/:id/items','isAuthenticated','getItems','post','create','addItem','put','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x86b4,0x1ce));var _0x486b=function(_0xc51e0e,_0x1cc9b4){_0xc51e0e=_0xc51e0e-0x0;var _0x26b3cf=_0x86b4[_0xc51e0e];return _0x26b3cf;};'use strict';var multer=require('multer');var util=require(_0x486b('0x0'));var path=require(_0x486b('0x1'));var timeout=require(_0x486b('0x2'));var express=require(_0x486b('0x3'));var router=express[_0x486b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x486b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x486b('0x6'));var controller=require('./dashboard.controller');router[_0x486b('0x7')]('/',auth['isAuthenticated'](),controller[_0x486b('0x8')]);router[_0x486b('0x7')](_0x486b('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x486b('0x7')](_0x486b('0xa'),auth[_0x486b('0xb')](),controller[_0x486b('0xc')]);router[_0x486b('0xd')]('/',auth[_0x486b('0xb')](),controller[_0x486b('0xe')]);router[_0x486b('0xd')]('/:id/clone',auth[_0x486b('0xb')](),controller['clone']);router[_0x486b('0xd')](_0x486b('0xa'),auth[_0x486b('0xb')](),controller[_0x486b('0xf')]);router[_0x486b('0x10')](_0x486b('0x9'),auth[_0x486b('0xb')](),controller[_0x486b('0x11')]);router[_0x486b('0x12')](_0x486b('0x9'),auth[_0x486b('0xb')](),controller[_0x486b('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xe5d7=['../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','/:id/items','getItems','post','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0xe5d7,0x1c9));var _0x7e5d=function(_0xf66d4f,_0x417f7d){_0xf66d4f=_0xf66d4f-0x0;var _0x35957c=_0xe5d7[_0xf66d4f];return _0x35957c;};'use strict';var multer=require(_0x7e5d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7e5d('0x1'));var express=require(_0x7e5d('0x2'));var router=express[_0x7e5d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7e5d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7e5d('0x5'));var controller=require(_0x7e5d('0x6'));router[_0x7e5d('0x7')]('/',auth[_0x7e5d('0x8')](),controller[_0x7e5d('0x9')]);router[_0x7e5d('0x7')](_0x7e5d('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0x7e5d('0xb'),auth[_0x7e5d('0x8')](),controller[_0x7e5d('0xc')]);router[_0x7e5d('0xd')]('/',auth['isAuthenticated'](),controller[_0x7e5d('0xe')]);router[_0x7e5d('0xd')](_0x7e5d('0xf'),auth[_0x7e5d('0x8')](),controller[_0x7e5d('0x10')]);router[_0x7e5d('0xd')]('/:id/items',auth[_0x7e5d('0x8')](),controller['addItem']);router[_0x7e5d('0x11')](_0x7e5d('0xa'),auth['isAuthenticated'](),controller[_0x7e5d('0x12')]);router[_0x7e5d('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7e5d('0x14')]);module[_0x7e5d('0x15')]=router;
\ No newline at end of file
index cd61730..d0ff900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['#ffffff','squel','lodash','STRING','TEXT','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x45542b,_0x2ce61c){var _0x1e0e49=function(_0x1b1800){while(--_0x1b1800){_0x45542b['push'](_0x45542b['shift']());}};_0x1e0e49(++_0x2ce61c);}(_0x6f47,0xc7));var _0x76f4=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x6f47[_0x432fca];return _0x3adba4;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x76f4('0x0'));var _=require(_0x76f4('0x1'));module['exports']={'title':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x76f4('0x3')]('long'),'get':function(){try{return JSON[_0x76f4('0x4')](this[_0x76f4('0x5')](_0x76f4('0x6')));}catch(_0x2523ba){return[];}},'set':function(_0x5754ca){try{this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')](_0x5754ca));}catch(_0x497f99){this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![],'defaultValue':_0x76f4('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x76f4('0x2')]},'titleFontSize':{'type':Sequelize[_0x76f4('0x9')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x01d9=['INTEGER','#ffffff','#2196f3','sequelize','squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x01d9,0x6c));var _0x901d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x01d9[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x901d('0x0'));var squel=require(_0x901d('0x1'));var _=require(_0x901d('0x2'));module[_0x901d('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x901d('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x901d('0x5')](_0x901d('0x6')),'get':function(){try{return JSON[_0x901d('0x7')](this[_0x901d('0x8')](_0x901d('0x9')));}catch(_0xb96b86){return[];}},'set':function(_0x4e7842){try{this[_0x901d('0xa')](_0x901d('0x9'),JSON[_0x901d('0xb')](_0x4e7842));}catch(_0x12c39f){this[_0x901d('0xa')](_0x901d('0x9'),JSON[_0x901d('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0x901d('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x901d('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x901d('0xc')]},'col':{'type':Sequelize[_0x901d('0xc')]},'background':{'type':Sequelize[_0x901d('0x4')],'allowNull':![],'defaultValue':_0x901d('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x901d('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0x901d('0xc')],'defaultValue':0xc}};
\ No newline at end of file
index bc7496e..60d6f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6001=['stringify','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','error','stack','name','send','show','params','model','keys','DashboardItem','filters','intersection','query','attributes','fields','length','include','merge','find','destroy','catch','type','iframe','attrUrl','attrs','value','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','widgetAttributes:\x20%s'];(function(_0x32b3c2,_0xe56fd){var _0x40a313=function(_0x51ba92){while(--_0x51ba92){_0x32b3c2['push'](_0x32b3c2['shift']());}};_0x40a313(++_0xe56fd);}(_0x6001,0x1cb));var _0x1600=function(_0x53b0f8,_0x459130){_0x53b0f8=_0x53b0f8-0x0;var _0x133415=_0x6001[_0x53b0f8];return _0x133415;};'use strict';var emlformat=require(_0x1600('0x0'));var rimraf=require(_0x1600('0x1'));var zipdir=require(_0x1600('0x2'));var jsonpatch=require(_0x1600('0x3'));var rp=require('request-promise');var moment=require(_0x1600('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1600('0x5'));var util=require('util');var path=require(_0x1600('0x6'));var sox=require(_0x1600('0x7'));var csv=require(_0x1600('0x8'));var ejs=require(_0x1600('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1600('0xa'));var crypto=require(_0x1600('0xb'));var jsforce=require(_0x1600('0xc'));var deskjs=require(_0x1600('0xd'));var toCsv=require(_0x1600('0x8'));var querystring=require(_0x1600('0xe'));var Papa=require(_0x1600('0xf'));var Redis=require(_0x1600('0x10'));var authService=require(_0x1600('0x11'));var qs=require(_0x1600('0x12'));var as=require(_0x1600('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1600('0x14'));var utils=require(_0x1600('0x15'));var config=require(_0x1600('0x16'));var licenseUtil=require(_0x1600('0x17'));var db=require('../../mysqldb')['db'];config[_0x1600('0x18')]=_[_0x1600('0x19')](config[_0x1600('0x18')],{'host':_0x1600('0x1a'),'port':0x18eb});var socket=require(_0x1600('0x1b'))(new Redis(config[_0x1600('0x18')]));require(_0x1600('0x1c'))[_0x1600('0x1d')](socket);function respondWithStatusCode(_0x4a1e70,_0x549955){_0x549955=_0x549955||0xcc;return function(_0x176089){if(_0x176089){return _0x4a1e70[_0x1600('0x1e')](_0x549955);}return _0x4a1e70[_0x1600('0x1f')](_0x549955)[_0x1600('0x20')]();};}function respondWithResult(_0x18f9df,_0x651968){_0x651968=_0x651968||0xc8;return function(_0x2f6dc9){if(_0x2f6dc9){return _0x18f9df['status'](_0x651968)[_0x1600('0x21')](_0x2f6dc9);}};}function respondWithFilteredResult(_0x5a5ec3,_0x4cea4a){return function(_0x59051c){if(_0x59051c){var _0x33a0c3=typeof _0x4cea4a[_0x1600('0x22')]===_0x1600('0x23')&&typeof _0x4cea4a[_0x1600('0x24')]===_0x1600('0x23');var _0x8f0ee3=_0x59051c[_0x1600('0x25')];var _0x49bd66=_0x33a0c3?0x0:_0x4cea4a[_0x1600('0x22')];var _0x6a758d=_0x33a0c3?_0x59051c[_0x1600('0x25')]:_0x4cea4a[_0x1600('0x22')]+_0x4cea4a[_0x1600('0x24')];var _0x360b57;if(_0x6a758d>=_0x8f0ee3){_0x6a758d=_0x8f0ee3;_0x360b57=0xc8;}else{_0x360b57=0xce;}_0x5a5ec3[_0x1600('0x1f')](_0x360b57);return _0x5a5ec3[_0x1600('0x26')]('Content-Range',_0x49bd66+'-'+_0x6a758d+'/'+_0x8f0ee3)[_0x1600('0x21')](_0x59051c);}return null;};}function patchUpdates(_0x2143f2){return function(_0x1ba567){try{jsonpatch[_0x1600('0x27')](_0x1ba567,_0x2143f2,!![]);}catch(_0xd9e055){return BPromise['reject'](_0xd9e055);}return _0x1ba567[_0x1600('0x28')]();};}function saveUpdates(_0x16fcda,_0x1fa331){return function(_0x2e9f4a){if(_0x2e9f4a){return _0x2e9f4a['update'](_0x16fcda)[_0x1600('0x29')](function(_0x27764c){return _0x27764c;});}return null;};}function removeEntity(_0x2cb21c,_0x3cb580){return function(_0x29ba59){if(_0x29ba59){return _0x29ba59['destroy']()[_0x1600('0x29')](function(){_0x2cb21c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x8553ac,_0x40f15c){return function(_0x259762){if(!_0x259762){_0x8553ac['sendStatus'](0x194);}return _0x259762;};}function handleError(_0x379d77,_0x251fe9){_0x251fe9=_0x251fe9||0x1f4;return function(_0x25fde2){logger[_0x1600('0x2a')](_0x25fde2[_0x1600('0x2b')]);if(_0x25fde2[_0x1600('0x2c')]){delete _0x25fde2['name'];}_0x379d77['status'](_0x251fe9)[_0x1600('0x2d')](_0x25fde2);};}exports[_0x1600('0x2e')]=function(_0x28c72b,_0xa761f2){var _0x4c227e={'raw':![],'where':{'id':_0x28c72b[_0x1600('0x2f')]['id']}},_0x1332db={};_0x1332db[_0x1600('0x30')]=_[_0x1600('0x31')](db[_0x1600('0x32')]['rawAttributes']);_0x1332db['query']=_[_0x1600('0x31')](_0x28c72b['query']);_0x1332db[_0x1600('0x33')]=_[_0x1600('0x34')](_0x1332db[_0x1600('0x30')],_0x1332db[_0x1600('0x35')]);_0x4c227e[_0x1600('0x36')]=_[_0x1600('0x34')](_0x1332db[_0x1600('0x30')],qs[_0x1600('0x37')](_0x28c72b[_0x1600('0x35')][_0x1600('0x37')]));_0x4c227e[_0x1600('0x36')]=_0x4c227e[_0x1600('0x36')][_0x1600('0x38')]?_0x4c227e['attributes']:_0x1332db[_0x1600('0x30')];if(_0x28c72b['query']['includeAll']){_0x4c227e[_0x1600('0x39')]=[{'all':!![]}];}_0x4c227e=_[_0x1600('0x3a')]({},_0x4c227e,_0x28c72b['options']);return db[_0x1600('0x32')][_0x1600('0x3b')](_0x4c227e)[_0x1600('0x29')](handleEntityNotFound(_0xa761f2,null))[_0x1600('0x29')](respondWithResult(_0xa761f2,null))['catch'](handleError(_0xa761f2,null));};exports[_0x1600('0x3c')]=function(_0x596654,_0x31a76b){return db[_0x1600('0x32')][_0x1600('0x3b')]({'where':{'id':_0x596654[_0x1600('0x2f')]['id']}})[_0x1600('0x29')](handleEntityNotFound(_0x31a76b,null))[_0x1600('0x29')](removeEntity(_0x31a76b,null))[_0x1600('0x3d')](handleError(_0x31a76b,null));};function widgetAttributes(_0x250889){try{switch(_0x250889[_0x1600('0x3e')]){case _0x1600('0x3f'):return[{'name':_0x1600('0x40'),'value':_0x250889['attrUrl']||(_0x250889['attrs']&&_0x250889[_0x1600('0x41')][0x0]?_0x250889[_0x1600('0x41')][0x0][_0x1600('0x42')]:undefined)||'https://'}];case _0x1600('0x43'):return[{'name':_0x1600('0x44'),'value':_0x250889[_0x1600('0x44')]||(_0x250889[_0x1600('0x41')]&&_0x250889[_0x1600('0x41')][0x0]?_0x250889[_0x1600('0x41')][0x0][_0x1600('0x42')]:undefined)||''}];case'clock':return[{'name':'attrHourFormat','value':_0x250889[_0x1600('0x45')]||(_0x250889[_0x1600('0x41')]&&_0x250889[_0x1600('0x41')][0x0]?_0x250889[_0x1600('0x41')][0x0]['value']:undefined)||_0x1600('0x46')},{'name':_0x1600('0x47'),'value':_0x250889['attrTimezone']||(_0x250889[_0x1600('0x41')]&&_0x250889[_0x1600('0x41')][0x1]?_0x250889[_0x1600('0x41')][0x1][_0x1600('0x42')]:undefined)||_0x1600('0x48')},{'name':_0x1600('0x49'),'value':_0x250889['attrFontSize']||(_0x250889[_0x1600('0x41')]&&_0x250889[_0x1600('0x41')][0x2]?_0x250889[_0x1600('0x41')][0x2][_0x1600('0x42')]:undefined)||0xc}];case _0x1600('0x4a'):return[{'name':_0x1600('0x4b'),'value':_0x250889[_0x1600('0x4b')]||(_0x250889[_0x1600('0x41')]&&_0x250889['attrs'][0x0]?_0x250889[_0x1600('0x41')][0x0][_0x1600('0x42')]:undefined)||_0x1600('0x4c')},{'name':_0x1600('0x4d'),'value':_0x250889[_0x1600('0x4d')]||(_0x250889[_0x1600('0x41')]&&_0x250889['attrs'][0x1]?_0x250889[_0x1600('0x41')][0x1][_0x1600('0x42')]:undefined)||[]},{'name':_0x1600('0x49'),'value':_0x250889[_0x1600('0x49')]||(_0x250889['attrs']&&_0x250889['attrs'][0x2]?_0x250889[_0x1600('0x41')][0x2][_0x1600('0x42')]:undefined)||0x14}];case _0x1600('0x4e'):case _0x1600('0x4f'):return[{'name':_0x1600('0x50'),'value':_0x250889[_0x1600('0x50')]||(_0x250889[_0x1600('0x41')]&&_0x250889[_0x1600('0x41')][0x0]?_0x250889[_0x1600('0x41')][0x0][_0x1600('0x42')]:undefined)||_0x1600('0x4c')},{'name':_0x1600('0x51'),'value':_0x250889[_0x1600('0x51')]||(_0x250889['attrs']&&_0x250889[_0x1600('0x41')][0x1]?_0x250889[_0x1600('0x41')][0x1][_0x1600('0x42')]:undefined)||null},{'name':_0x1600('0x52'),'value':_0x250889[_0x1600('0x52')]||(_0x250889[_0x1600('0x41')]&&_0x250889['attrs'][0x2]?_0x250889[_0x1600('0x41')][0x2][_0x1600('0x42')]:undefined)||null},{'name':_0x1600('0x4d'),'value':_0x250889[_0x1600('0x4d')]||(_0x250889['attrs']&&_0x250889['attrs'][0x3]?_0x250889[_0x1600('0x41')][0x3]['value']:undefined)||[]}];case _0x1600('0x53'):return[{'name':'attrReport','type':_0x250889[_0x1600('0x54')]||(_0x250889[_0x1600('0x41')]&&_0x250889['attrs'][0x0]?_0x250889['attrs'][0x0][_0x1600('0x3e')]:undefined)||null,'value':_0x250889[_0x1600('0x55')]||(_0x250889['attrs']&&_0x250889[_0x1600('0x41')][0x0]?_0x250889['attrs'][0x0][_0x1600('0x42')]:undefined)||null},{'name':'attrRefresh','value':_0x250889['attrRefresh']||(_0x250889[_0x1600('0x41')]&&_0x250889[_0x1600('0x41')][0x1]?_0x250889[_0x1600('0x41')][0x1][_0x1600('0x42')]:undefined)||0x0}];default:return[];}}catch(_0x1f1ea5){logger[_0x1600('0x2a')](_0x1600('0x56'),JSON[_0x1600('0x57')](_0x1f1ea5));return[];}}exports[_0x1600('0x58')]=function(_0x26a8d9,_0x4a5606){if(_0x26a8d9['body']){_0x26a8d9[_0x1600('0x59')][_0x1600('0x41')]=widgetAttributes(_0x26a8d9['body']);}return db[_0x1600('0x32')][_0x1600('0x58')](_0x26a8d9[_0x1600('0x59')],{})[_0x1600('0x29')](respondWithResult(_0x4a5606,0xc9))[_0x1600('0x3d')](handleError(_0x4a5606,null));};exports[_0x1600('0x5a')]=function(_0x13e102,_0x3609be){if(_0x13e102[_0x1600('0x59')]['id']){delete _0x13e102[_0x1600('0x59')]['id'];}_0x13e102[_0x1600('0x59')][_0x1600('0x41')]=widgetAttributes(_0x13e102[_0x1600('0x59')]);return db[_0x1600('0x32')][_0x1600('0x3b')]({'where':{'id':_0x13e102[_0x1600('0x2f')]['id']}})[_0x1600('0x29')](handleEntityNotFound(_0x3609be,null))[_0x1600('0x29')](saveUpdates(_0x13e102[_0x1600('0x59')],null))['then'](respondWithResult(_0x3609be,null))[_0x1600('0x3d')](handleError(_0x3609be,null));};
\ No newline at end of file
+var _0xc7d9=['rawAttributes','query','intersection','attributes','fields','length','includeAll','include','options','DashboardItem','find','catch','iframe','attrUrl','attrs','value','https://','attrPath','clock','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','type','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','update','destroy','then','error','stack','send','show','model','keys'];(function(_0x50f0a9,_0x2b0c57){var _0x5a33d9=function(_0x40338e){while(--_0x40338e){_0x50f0a9['push'](_0x50f0a9['shift']());}};_0x5a33d9(++_0x2b0c57);}(_0xc7d9,0x1cc));var _0x9c7d=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xc7d9[_0x2d7f0e];return _0x110b07;};'use strict';var emlformat=require(_0x9c7d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9c7d('0x1'));var jsonpatch=require(_0x9c7d('0x2'));var rp=require(_0x9c7d('0x3'));var moment=require(_0x9c7d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9c7d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9c7d('0x6'));var ejs=require(_0x9c7d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9c7d('0x8'));var crypto=require(_0x9c7d('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x9c7d('0xa'));var toCsv=require(_0x9c7d('0x6'));var querystring=require(_0x9c7d('0xb'));var Papa=require(_0x9c7d('0xc'));var Redis=require(_0x9c7d('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9c7d('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9c7d('0xf'));var utils=require('../../config/utils');var config=require(_0x9c7d('0x10'));var licenseUtil=require(_0x9c7d('0x11'));var db=require(_0x9c7d('0x12'))['db'];config[_0x9c7d('0x13')]=_['defaults'](config[_0x9c7d('0x13')],{'host':_0x9c7d('0x14'),'port':0x18eb});var socket=require(_0x9c7d('0x15'))(new Redis(config[_0x9c7d('0x13')]));require(_0x9c7d('0x16'))[_0x9c7d('0x17')](socket);function respondWithStatusCode(_0x5a40dc,_0x296d16){_0x296d16=_0x296d16||0xcc;return function(_0x5673e9){if(_0x5673e9){return _0x5a40dc[_0x9c7d('0x18')](_0x296d16);}return _0x5a40dc[_0x9c7d('0x19')](_0x296d16)[_0x9c7d('0x1a')]();};}function respondWithResult(_0x5916bb,_0x288fe2){_0x288fe2=_0x288fe2||0xc8;return function(_0x29c3fe){if(_0x29c3fe){return _0x5916bb[_0x9c7d('0x19')](_0x288fe2)['json'](_0x29c3fe);}};}function respondWithFilteredResult(_0x173a09,_0x167ab3){return function(_0x234124){if(_0x234124){var _0x28831d=typeof _0x167ab3[_0x9c7d('0x1b')]===_0x9c7d('0x1c')&&typeof _0x167ab3['limit']==='undefined';var _0x35565f=_0x234124[_0x9c7d('0x1d')];var _0x5a7921=_0x28831d?0x0:_0x167ab3['offset'];var _0x1b7809=_0x28831d?_0x234124[_0x9c7d('0x1d')]:_0x167ab3[_0x9c7d('0x1b')]+_0x167ab3[_0x9c7d('0x1e')];var _0x540eb5;if(_0x1b7809>=_0x35565f){_0x1b7809=_0x35565f;_0x540eb5=0xc8;}else{_0x540eb5=0xce;}_0x173a09[_0x9c7d('0x19')](_0x540eb5);return _0x173a09['set'](_0x9c7d('0x1f'),_0x5a7921+'-'+_0x1b7809+'/'+_0x35565f)[_0x9c7d('0x20')](_0x234124);}return null;};}function patchUpdates(_0x2ba7d9){return function(_0x37dc99){try{jsonpatch[_0x9c7d('0x21')](_0x37dc99,_0x2ba7d9,!![]);}catch(_0x3d0a4b){return BPromise[_0x9c7d('0x22')](_0x3d0a4b);}return _0x37dc99['save']();};}function saveUpdates(_0x6435e8,_0x3b6cb7){return function(_0x147725){if(_0x147725){return _0x147725[_0x9c7d('0x23')](_0x6435e8)['then'](function(_0x171c8b){return _0x171c8b;});}return null;};}function removeEntity(_0x276144,_0xe7081d){return function(_0x48fffc){if(_0x48fffc){return _0x48fffc[_0x9c7d('0x24')]()[_0x9c7d('0x25')](function(){_0x276144['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a37ae,_0x1b4f84){return function(_0x107ccb){if(!_0x107ccb){_0x3a37ae[_0x9c7d('0x18')](0x194);}return _0x107ccb;};}function handleError(_0x345dd1,_0x173336){_0x173336=_0x173336||0x1f4;return function(_0x117003){logger[_0x9c7d('0x26')](_0x117003[_0x9c7d('0x27')]);if(_0x117003['name']){delete _0x117003['name'];}_0x345dd1[_0x9c7d('0x19')](_0x173336)[_0x9c7d('0x28')](_0x117003);};}exports[_0x9c7d('0x29')]=function(_0x1ccc71,_0x2413a7){var _0x138f99={'raw':![],'where':{'id':_0x1ccc71['params']['id']}},_0x324918={};_0x324918[_0x9c7d('0x2a')]=_[_0x9c7d('0x2b')](db['DashboardItem'][_0x9c7d('0x2c')]);_0x324918['query']=_[_0x9c7d('0x2b')](_0x1ccc71[_0x9c7d('0x2d')]);_0x324918['filters']=_[_0x9c7d('0x2e')](_0x324918[_0x9c7d('0x2a')],_0x324918[_0x9c7d('0x2d')]);_0x138f99[_0x9c7d('0x2f')]=_[_0x9c7d('0x2e')](_0x324918[_0x9c7d('0x2a')],qs['fields'](_0x1ccc71['query'][_0x9c7d('0x30')]));_0x138f99[_0x9c7d('0x2f')]=_0x138f99['attributes'][_0x9c7d('0x31')]?_0x138f99['attributes']:_0x324918['model'];if(_0x1ccc71['query'][_0x9c7d('0x32')]){_0x138f99[_0x9c7d('0x33')]=[{'all':!![]}];}_0x138f99=_['merge']({},_0x138f99,_0x1ccc71[_0x9c7d('0x34')]);return db[_0x9c7d('0x35')][_0x9c7d('0x36')](_0x138f99)[_0x9c7d('0x25')](handleEntityNotFound(_0x2413a7,null))[_0x9c7d('0x25')](respondWithResult(_0x2413a7,null))[_0x9c7d('0x37')](handleError(_0x2413a7,null));};exports[_0x9c7d('0x24')]=function(_0x27ac17,_0x126f3b){return db[_0x9c7d('0x35')][_0x9c7d('0x36')]({'where':{'id':_0x27ac17['params']['id']}})[_0x9c7d('0x25')](handleEntityNotFound(_0x126f3b,null))[_0x9c7d('0x25')](removeEntity(_0x126f3b,null))[_0x9c7d('0x37')](handleError(_0x126f3b,null));};function widgetAttributes(_0x3047a4){try{switch(_0x3047a4['type']){case _0x9c7d('0x38'):return[{'name':_0x9c7d('0x39'),'value':_0x3047a4['attrUrl']||(_0x3047a4['attrs']&&_0x3047a4[_0x9c7d('0x3a')][0x0]?_0x3047a4[_0x9c7d('0x3a')][0x0][_0x9c7d('0x3b')]:undefined)||_0x9c7d('0x3c')}];case'custom':return[{'name':_0x9c7d('0x3d'),'value':_0x3047a4[_0x9c7d('0x3d')]||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x0]?_0x3047a4['attrs'][0x0][_0x9c7d('0x3b')]:undefined)||''}];case _0x9c7d('0x3e'):return[{'name':'attrHourFormat','value':_0x3047a4['attrHourFormat']||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x0]?_0x3047a4[_0x9c7d('0x3a')][0x0][_0x9c7d('0x3b')]:undefined)||_0x9c7d('0x3f')},{'name':_0x9c7d('0x40'),'value':_0x3047a4['attrTimezone']||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x1]?_0x3047a4['attrs'][0x1][_0x9c7d('0x3b')]:undefined)||_0x9c7d('0x41')},{'name':_0x9c7d('0x42'),'value':_0x3047a4[_0x9c7d('0x42')]||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x2]?_0x3047a4[_0x9c7d('0x3a')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x9c7d('0x43'),'value':_0x3047a4[_0x9c7d('0x43')]||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x0]?_0x3047a4[_0x9c7d('0x3a')][0x0][_0x9c7d('0x3b')]:undefined)||_0x9c7d('0x44')},{'name':_0x9c7d('0x45'),'value':_0x3047a4[_0x9c7d('0x45')]||(_0x3047a4['attrs']&&_0x3047a4[_0x9c7d('0x3a')][0x1]?_0x3047a4[_0x9c7d('0x3a')][0x1][_0x9c7d('0x3b')]:undefined)||[]},{'name':_0x9c7d('0x42'),'value':_0x3047a4[_0x9c7d('0x42')]||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4['attrs'][0x2]?_0x3047a4[_0x9c7d('0x3a')][0x2][_0x9c7d('0x3b')]:undefined)||0x14}];case _0x9c7d('0x46'):case'pie-chart':return[{'name':'attrSerie1','value':_0x3047a4[_0x9c7d('0x47')]||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4['attrs'][0x0]?_0x3047a4[_0x9c7d('0x3a')][0x0][_0x9c7d('0x3b')]:undefined)||'total'},{'name':_0x9c7d('0x48'),'value':_0x3047a4[_0x9c7d('0x48')]||(_0x3047a4['attrs']&&_0x3047a4[_0x9c7d('0x3a')][0x1]?_0x3047a4[_0x9c7d('0x3a')][0x1]['value']:undefined)||null},{'name':_0x9c7d('0x49'),'value':_0x3047a4['attrSerie3']||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x2]?_0x3047a4[_0x9c7d('0x3a')][0x2][_0x9c7d('0x3b')]:undefined)||null},{'name':_0x9c7d('0x45'),'value':_0x3047a4['attrVoiceQueues']||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x3]?_0x3047a4[_0x9c7d('0x3a')][0x3][_0x9c7d('0x3b')]:undefined)||[]}];case _0x9c7d('0x4a'):return[{'name':'attrReport','type':_0x3047a4[_0x9c7d('0x4b')]||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x0]?_0x3047a4[_0x9c7d('0x3a')][0x0][_0x9c7d('0x4c')]:undefined)||null,'value':_0x3047a4[_0x9c7d('0x4d')]||(_0x3047a4[_0x9c7d('0x3a')]&&_0x3047a4[_0x9c7d('0x3a')][0x0]?_0x3047a4[_0x9c7d('0x3a')][0x0][_0x9c7d('0x3b')]:undefined)||null},{'name':_0x9c7d('0x4e'),'value':_0x3047a4['attrRefresh']||(_0x3047a4['attrs']&&_0x3047a4['attrs'][0x1]?_0x3047a4[_0x9c7d('0x3a')][0x1][_0x9c7d('0x3b')]:undefined)||0x0}];default:return[];}}catch(_0x2ea3c3){logger[_0x9c7d('0x26')](_0x9c7d('0x4f'),JSON[_0x9c7d('0x50')](_0x2ea3c3));return[];}}exports[_0x9c7d('0x51')]=function(_0x1a07fd,_0x1b2fb7){if(_0x1a07fd[_0x9c7d('0x52')]){_0x1a07fd[_0x9c7d('0x52')][_0x9c7d('0x3a')]=widgetAttributes(_0x1a07fd[_0x9c7d('0x52')]);}return db['DashboardItem'][_0x9c7d('0x51')](_0x1a07fd[_0x9c7d('0x52')],{})[_0x9c7d('0x25')](respondWithResult(_0x1b2fb7,0xc9))[_0x9c7d('0x37')](handleError(_0x1b2fb7,null));};exports[_0x9c7d('0x23')]=function(_0x16936b,_0x3f20dc){if(_0x16936b[_0x9c7d('0x52')]['id']){delete _0x16936b[_0x9c7d('0x52')]['id'];}_0x16936b[_0x9c7d('0x52')]['attrs']=widgetAttributes(_0x16936b[_0x9c7d('0x52')]);return db['DashboardItem'][_0x9c7d('0x36')]({'where':{'id':_0x16936b[_0x9c7d('0x53')]['id']}})[_0x9c7d('0x25')](handleEntityNotFound(_0x3f20dc,null))['then'](saveUpdates(_0x16936b['body'],null))[_0x9c7d('0x25')](respondWithResult(_0x3f20dc,null))[_0x9c7d('0x37')](handleError(_0x3f20dc,null));};
\ No newline at end of file
index baf44f3..1a11924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c7c=['events','../../mysqldb','DashboardItem','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x115ade,_0x3b36f3){var _0x652c6c=function(_0x552904){while(--_0x552904){_0x115ade['push'](_0x115ade['shift']());}};_0x652c6c(++_0x3b36f3);}(_0x5c7c,0x172));var _0xc5c7=function(_0xc315de,_0x5dc877){_0xc315de=_0xc315de-0x0;var _0x11a627=_0x5c7c[_0xc315de];return _0x11a627;};'use strict';var EventEmitter=require(_0xc5c7('0x0'));var DashboardItem=require(_0xc5c7('0x1'))['db'][_0xc5c7('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xc5c7('0x3')](0x0);var events={'afterCreate':_0xc5c7('0x4'),'afterUpdate':_0xc5c7('0x5'),'afterDestroy':_0xc5c7('0x6')};function emitEvent(_0x4e4407){return function(_0x1c4f6b,_0x1cfbf3,_0x557ffb){DashboardItemEvents['emit'](_0x4e4407+':'+_0x1c4f6b['id'],_0x1c4f6b);DashboardItemEvents[_0xc5c7('0x7')](_0x4e4407,_0x1c4f6b);_0x557ffb(null);};}for(var e in events){if(events[_0xc5c7('0x8')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xc5c7('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0x598a=['exports','events','DashboardItem','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x32efcb,_0x55523f){var _0x1dae88=function(_0x11c606){while(--_0x11c606){_0x32efcb['push'](_0x32efcb['shift']());}};_0x1dae88(++_0x55523f);}(_0x598a,0x99));var _0xa598=function(_0xd13268,_0x4b8473){_0xd13268=_0xd13268-0x0;var _0xcd6f7a=_0x598a[_0xd13268];return _0xcd6f7a;};'use strict';var EventEmitter=require(_0xa598('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xa598('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xa598('0x2')](0x0);var events={'afterCreate':_0xa598('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x52701e){return function(_0xa59ef0,_0x5d32de,_0x154070){DashboardItemEvents[_0xa598('0x4')](_0x52701e+':'+_0xa59ef0['id'],_0xa59ef0);DashboardItemEvents[_0xa598('0x4')](_0x52701e,_0xa59ef0);_0x154070(null);};}for(var e in events){if(events[_0xa598('0x5')](e)){var event=events[e];DashboardItem[_0xa598('0x6')](e,emitEvent(event));}}module[_0xa598('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 6766c5b..5c6e5f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af1=['rimraf','../../config/environment','exports','DashboardItem','dashboard_items','lodash','util','moment','bluebird','request-promise','path'];(function(_0x195dff,_0x2810a3){var _0x490b0e=function(_0x329a62){while(--_0x329a62){_0x195dff['push'](_0x195dff['shift']());}};_0x490b0e(++_0x2810a3);}(_0x1af1,0x1e9));var _0x11af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1af1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x11af('0x0'));var util=require(_0x11af('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x11af('0x2'));var BPromise=require(_0x11af('0x3'));var rp=require(_0x11af('0x4'));var fs=require('fs');var path=require(_0x11af('0x5'));var rimraf=require(_0x11af('0x6'));var config=require(_0x11af('0x7'));var attributes=require('./dashboardItem.attributes');module[_0x11af('0x8')]=function(_0x1534f0,_0x17830a){return _0x1534f0['define'](_0x11af('0x9'),attributes,{'tableName':_0x11af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc715=['rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2c01b9,_0x5b5f46){var _0xbc501d=function(_0xc73e74){while(--_0xc73e74){_0x2c01b9['push'](_0x2c01b9['shift']());}};_0xbc501d(++_0x5b5f46);}(_0xc715,0x18f));var _0x5c71=function(_0x4be57c,_0x151881){_0x4be57c=_0x4be57c-0x0;var _0x5901da=_0xc715[_0x4be57c];return _0x5901da;};'use strict';var _=require('lodash');var util=require(_0x5c71('0x0'));var logger=require(_0x5c71('0x1'))(_0x5c71('0x2'));var moment=require(_0x5c71('0x3'));var BPromise=require(_0x5c71('0x4'));var rp=require(_0x5c71('0x5'));var fs=require('fs');var path=require(_0x5c71('0x6'));var rimraf=require(_0x5c71('0x7'));var config=require(_0x5c71('0x8'));var attributes=require(_0x5c71('0x9'));module[_0x5c71('0xa')]=function(_0x4fbd70,_0xef132b){return _0x4fbd70[_0x5c71('0xb')](_0x5c71('0xc'),attributes,{'tableName':_0x5c71('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b74800e..905b157 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d7=['info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','socket.io-emitter','./dashboardItem.socket','then'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x36d7,0x134));var _0x736d=function(_0x3b21f9,_0xc2e1ea){_0x3b21f9=_0x3b21f9-0x0;var _0x58410b=_0x36d7[_0x3b21f9];return _0x58410b;};'use strict';var _=require(_0x736d('0x0'));var util=require(_0x736d('0x1'));var moment=require(_0x736d('0x2'));var BPromise=require(_0x736d('0x3'));var rs=require(_0x736d('0x4'));var fs=require('fs');var Redis=require(_0x736d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x736d('0x6'));var logger=require(_0x736d('0x7'))(_0x736d('0x8'));var config=require('../../config/environment');var jayson=require(_0x736d('0x9'));var client=jayson[_0x736d('0xa')][_0x736d('0xb')]({'port':0x232a});config['redis']=_[_0x736d('0xc')](config[_0x736d('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x736d('0xe'))(new Redis(config[_0x736d('0xd')]));require(_0x736d('0xf'))['register'](socket);function respondWithRpcPromise(_0x169413,_0x1453dd,_0x2cd2a){return new BPromise(function(_0xa5d864,_0xa1e0ce){return client['request'](_0x169413,_0x2cd2a)[_0x736d('0x10')](function(_0x2d9410){logger[_0x736d('0x11')](_0x736d('0x12'),_0x1453dd,_0x736d('0x13'));logger[_0x736d('0x14')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x1453dd,_0x736d('0x13'),JSON[_0x736d('0x15')](_0x2d9410));if(_0x2d9410['error']){if(_0x2d9410[_0x736d('0x16')]['code']===0x1f4){logger[_0x736d('0x16')](_0x736d('0x12'),_0x1453dd,_0x2d9410['error'][_0x736d('0x17')]);return _0xa1e0ce(_0x2d9410[_0x736d('0x16')][_0x736d('0x17')]);}logger[_0x736d('0x16')]('DashboardItem,\x20%s,\x20%s',_0x1453dd,_0x2d9410['error']['message']);return _0xa5d864(_0x2d9410[_0x736d('0x16')][_0x736d('0x17')]);}else{logger[_0x736d('0x11')](_0x736d('0x12'),_0x1453dd,_0x736d('0x13'));_0xa5d864(_0x2d9410['result'][_0x736d('0x17')]);}})[_0x736d('0x18')](function(_0x229c50){logger[_0x736d('0x16')](_0x736d('0x12'),_0x1453dd,_0x229c50);_0xa1e0ce(_0x229c50);});});}
\ No newline at end of file
+var _0x6e48=['util','moment','bluebird','ioredis','rpc','jayson/promise','client','redis','localhost','then','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch'];(function(_0x4f4550,_0x67b655){var _0x2a9dec=function(_0x101a2a){while(--_0x101a2a){_0x4f4550['push'](_0x4f4550['shift']());}};_0x2a9dec(++_0x67b655);}(_0x6e48,0x64));var _0x86e4=function(_0x466aa1,_0x28f539){_0x466aa1=_0x466aa1-0x0;var _0x429aef=_0x6e48[_0x466aa1];return _0x429aef;};'use strict';var _=require('lodash');var util=require(_0x86e4('0x0'));var moment=require(_0x86e4('0x1'));var BPromise=require(_0x86e4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x86e4('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x86e4('0x4'));var config=require('../../config/environment');var jayson=require(_0x86e4('0x5'));var client=jayson[_0x86e4('0x6')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x86e4('0x7')],{'host':_0x86e4('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./dashboardItem.socket')['register'](socket);function respondWithRpcPromise(_0x419598,_0x3ed0a9,_0x1e6da7){return new BPromise(function(_0x598c9e,_0x8e516b){return client['request'](_0x419598,_0x1e6da7)[_0x86e4('0x9')](function(_0x483b80){logger['info'](_0x86e4('0xa'),_0x3ed0a9,_0x86e4('0xb'));logger[_0x86e4('0xc')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x3ed0a9,_0x86e4('0xb'),JSON[_0x86e4('0xd')](_0x483b80));if(_0x483b80[_0x86e4('0xe')]){if(_0x483b80[_0x86e4('0xe')][_0x86e4('0xf')]===0x1f4){logger[_0x86e4('0xe')](_0x86e4('0xa'),_0x3ed0a9,_0x483b80[_0x86e4('0xe')][_0x86e4('0x10')]);return _0x8e516b(_0x483b80[_0x86e4('0xe')][_0x86e4('0x10')]);}logger[_0x86e4('0xe')](_0x86e4('0xa'),_0x3ed0a9,_0x483b80[_0x86e4('0xe')][_0x86e4('0x10')]);return _0x598c9e(_0x483b80[_0x86e4('0xe')]['message']);}else{logger[_0x86e4('0x11')](_0x86e4('0xa'),_0x3ed0a9,_0x86e4('0xb'));_0x598c9e(_0x483b80[_0x86e4('0x12')][_0x86e4('0x10')]);}})[_0x86e4('0x13')](function(_0x387b65){logger[_0x86e4('0xe')](_0x86e4('0xa'),_0x3ed0a9,_0x387b65);_0x8e516b(_0x387b65);});});}
\ No newline at end of file
index 92256de..df00650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3430=['dashboardItem:','remove','emit','register','length'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0x3430,0x155));var _0x0343=function(_0x67f95e,_0x3ca797){_0x67f95e=_0x67f95e-0x0;var _0x538f5a=_0x3430[_0x67f95e];return _0x538f5a;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=['save',_0x0343('0x0'),'update'];function createListener(_0x35d2b8,_0x547c30){return function(_0x37e901){_0x547c30[_0x0343('0x1')](_0x35d2b8,_0x37e901);};}function removeListener(_0x311053,_0x10aa1f){return function(){DashboardItemEvents['removeListener'](_0x311053,_0x10aa1f);};}exports[_0x0343('0x2')]=function(_0x873fbc){for(var _0x27cdb3=0x0,_0x14e7f1=events[_0x0343('0x3')];_0x27cdb3<_0x14e7f1;_0x27cdb3++){var _0x34c168=events[_0x27cdb3];var _0x90b041=createListener(_0x0343('0x4')+_0x34c168,_0x873fbc);DashboardItemEvents['on'](_0x34c168,_0x90b041);}};
\ No newline at end of file
+var _0x2ea5=['remove','update','emit','removeListener','register','length','dashboardItem:','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2ea5,0x177));var _0x52ea=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x2ea5[_0x397e5f];return _0x5302b8;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0x52ea('0x0'),_0x52ea('0x1'),_0x52ea('0x2')];function createListener(_0x12c06a,_0x2bcb74){return function(_0x382b12){_0x2bcb74[_0x52ea('0x3')](_0x12c06a,_0x382b12);};}function removeListener(_0x3bf752,_0x57739d){return function(){DashboardItemEvents[_0x52ea('0x4')](_0x3bf752,_0x57739d);};}exports[_0x52ea('0x5')]=function(_0x242798){for(var _0x61544d=0x0,_0x5568ca=events[_0x52ea('0x6')];_0x61544d<_0x5568ca;_0x61544d++){var _0x3ff029=events[_0x61544d];var _0x358305=createListener(_0x52ea('0x7')+_0x3ff029,_0x242798);DashboardItemEvents['on'](_0x3ff029,_0x358305);}};
\ No newline at end of file
index 6af279b..cb1de9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe87d=['put','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','post','create'];(function(_0xf1c739,_0x480a45){var _0x56a0ad=function(_0x3b100a){while(--_0x3b100a){_0xf1c739['push'](_0xf1c739['shift']());}};_0x56a0ad(++_0x480a45);}(_0xe87d,0x1f0));var _0xde87=function(_0x141076,_0x42365b){_0x141076=_0x141076-0x0;var _0x224985=_0xe87d[_0x141076];return _0x224985;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xde87('0x0'));var timeout=require(_0xde87('0x1'));var express=require(_0xde87('0x2'));var router=express[_0xde87('0x3')]();var fs_extra=require(_0xde87('0x4'));var auth=require(_0xde87('0x5'));var interaction=require(_0xde87('0x6'));var config=require(_0xde87('0x7'));var controller=require(_0xde87('0x8'));router[_0xde87('0x9')](_0xde87('0xa'),auth[_0xde87('0xb')](),controller['show']);router[_0xde87('0xc')]('/',auth[_0xde87('0xb')](),controller[_0xde87('0xd')]);router[_0xde87('0xe')](_0xde87('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xde87('0xf')](_0xde87('0xa'),auth[_0xde87('0xb')](),controller['destroy']);module[_0xde87('0x10')]=router;
\ No newline at end of file
+var _0x0bc3=['util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','get','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer'];(function(_0x37cc52,_0x459a9b){var _0x2b4a90=function(_0xabcfc7){while(--_0xabcfc7){_0x37cc52['push'](_0x37cc52['shift']());}};_0x2b4a90(++_0x459a9b);}(_0x0bc3,0x1c1));var _0x30bc=function(_0x18317f,_0x1bdd96){_0x18317f=_0x18317f-0x0;var _0x27de78=_0x0bc3[_0x18317f];return _0x27de78;};'use strict';var multer=require(_0x30bc('0x0'));var util=require(_0x30bc('0x1'));var path=require(_0x30bc('0x2'));var timeout=require(_0x30bc('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x30bc('0x4'));var auth=require(_0x30bc('0x5'));var interaction=require(_0x30bc('0x6'));var config=require('../../config/environment');var controller=require(_0x30bc('0x7'));router[_0x30bc('0x8')](_0x30bc('0x9'),auth[_0x30bc('0xa')](),controller['show']);router[_0x30bc('0xb')]('/',auth[_0x30bc('0xa')](),controller[_0x30bc('0xc')]);router[_0x30bc('0xd')](_0x30bc('0x9'),auth[_0x30bc('0xa')](),controller[_0x30bc('0xe')]);router[_0x30bc('0xf')](_0x30bc('0x9'),auth[_0x30bc('0xa')](),controller[_0x30bc('0x10')]);module[_0x30bc('0x11')]=router;
\ No newline at end of file
index d86b217..8e2f12a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x259b=['ENUM','first','STRING','exports'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x259b,0xd3));var _0xb259=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0x259b[_0x42f009];return _0x22a1e0;};'use strict';var Sequelize=require('sequelize');module[_0xb259('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0xb259('0x1')](_0xb259('0x2'),'second','third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0xb259('0x3')]}};
\ No newline at end of file
+var _0x34f2=['exports','STRING','first','second','third'];(function(_0xa30123,_0x406295){var _0x38d080=function(_0x2da46c){while(--_0x2da46c){_0xa30123['push'](_0xa30123['shift']());}};_0x38d080(++_0x406295);}(_0x34f2,0x64));var _0x234f=function(_0x37bccd,_0x21bbb1){_0x37bccd=_0x37bccd-0x0;var _0x47c488=_0x34f2[_0x37bccd];return _0x47c488;};'use strict';var Sequelize=require('sequelize');module[_0x234f('0x0')]={'name':{'type':Sequelize[_0x234f('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x234f('0x2'),_0x234f('0x3'),_0x234f('0x4')),'allowNull':![],'defaultValue':_0x234f('0x2')},'description':{'type':Sequelize[_0x234f('0x1')]}};
\ No newline at end of file
index 8e87700..f223b7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x535d=['to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','limit','offset','set','Content-Range','reject','save','update','destroy','get','then','stack','name','index','map','Disposition','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','keys','options','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Dispositions','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox'];(function(_0x204f5a,_0x376088){var _0x7a343e=function(_0x403e42){while(--_0x403e42){_0x204f5a['push'](_0x204f5a['shift']());}};_0x7a343e(++_0x376088);}(_0x535d,0xe8));var _0xd535=function(_0x1e02a2,_0xc9e2a7){_0x1e02a2=_0x1e02a2-0x0;var _0x3d1727=_0x535d[_0x1e02a2];return _0x3d1727;};'use strict';var emlformat=require(_0xd535('0x0'));var rimraf=require(_0xd535('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd535('0x2'));var rp=require(_0xd535('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd535('0x4'));var util=require(_0xd535('0x5'));var path=require(_0xd535('0x6'));var sox=require(_0xd535('0x7'));var csv=require(_0xd535('0x8'));var ejs=require(_0xd535('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd535('0xa'));var crypto=require(_0xd535('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd535('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd535('0xd'));var Papa=require(_0xd535('0xe'));var Redis=require(_0xd535('0xf'));var authService=require(_0xd535('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xd535('0x11'));var hardwareService=require(_0xd535('0x12'));var logger=require(_0xd535('0x13'))(_0xd535('0x14'));var utils=require('../../config/utils');var config=require(_0xd535('0x15'));var licenseUtil=require(_0xd535('0x16'));var db=require(_0xd535('0x17'))['db'];function respondWithStatusCode(_0x7aab34,_0x352bf3){_0x352bf3=_0x352bf3||0xcc;return function(_0x3fd304){if(_0x3fd304){return _0x7aab34[_0xd535('0x18')](_0x352bf3);}return _0x7aab34['status'](_0x352bf3)[_0xd535('0x19')]();};}function respondWithResult(_0x52f768,_0x5c659d){_0x5c659d=_0x5c659d||0xc8;return function(_0x2b3e1b){if(_0x2b3e1b){return _0x52f768[_0xd535('0x1a')](_0x5c659d)['json'](_0x2b3e1b);}};}function respondWithFilteredResult(_0x2078ad,_0x338042){return function(_0x29e478){if(_0x29e478){var _0x500675=typeof _0x338042['offset']===_0xd535('0x1b')&&typeof _0x338042[_0xd535('0x1c')]===_0xd535('0x1b');var _0xb3cc32=_0x29e478['count'];var _0x921b2e=_0x500675?0x0:_0x338042['offset'];var _0x22d4e2=_0x500675?_0x29e478['count']:_0x338042[_0xd535('0x1d')]+_0x338042['limit'];var _0x2d7338;if(_0x22d4e2>=_0xb3cc32){_0x22d4e2=_0xb3cc32;_0x2d7338=0xc8;}else{_0x2d7338=0xce;}_0x2078ad[_0xd535('0x1a')](_0x2d7338);return _0x2078ad[_0xd535('0x1e')](_0xd535('0x1f'),_0x921b2e+'-'+_0x22d4e2+'/'+_0xb3cc32)['json'](_0x29e478);}return null;};}function patchUpdates(_0x4b11d9){return function(_0x185966){try{jsonpatch['apply'](_0x185966,_0x4b11d9,!![]);}catch(_0x5c4afa){return BPromise[_0xd535('0x20')](_0x5c4afa);}return _0x185966[_0xd535('0x21')]();};}function saveUpdates(_0x283d41,_0x11187d){return function(_0x3cad49){if(_0x3cad49){return _0x3cad49[_0xd535('0x22')](_0x283d41)['then'](function(_0x8e32ee){return _0x8e32ee;});}return null;};}function removeEntity(_0x34106a,_0x42008f){return function(_0x7cc1ef){if(_0x7cc1ef){return _0x7cc1ef[_0xd535('0x23')]()['then'](function(){var _0x59729f=_0x7cc1ef[_0xd535('0x24')]({'plain':!![]});var _0x1abfec='Dispositions';return db['UserProfileResource'][_0xd535('0x23')]({'where':{'type':_0x1abfec,'resourceId':_0x59729f['id']}})[_0xd535('0x25')](function(){return _0x7cc1ef;});})[_0xd535('0x25')](function(){_0x34106a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3797c9,_0x3a56ac){return function(_0x15769b){if(!_0x15769b){_0x3797c9[_0xd535('0x18')](0x194);}return _0x15769b;};}function handleError(_0x11daf4,_0x33fcb1){_0x33fcb1=_0x33fcb1||0x1f4;return function(_0x231736){logger['error'](_0x231736[_0xd535('0x26')]);if(_0x231736[_0xd535('0x27')]){delete _0x231736['name'];}_0x11daf4['status'](_0x33fcb1)['send'](_0x231736);};}exports[_0xd535('0x28')]=function(_0x1fca40,_0x324f54){var _0x2e6aff={},_0x3e4021={},_0x47d5e2={'count':0x0,'rows':[]};var _0x51ff66=_[_0xd535('0x29')](db[_0xd535('0x2a')][_0xd535('0x2b')],function(_0x34f12e){return{'name':_0x34f12e['fieldName'],'type':_0x34f12e[_0xd535('0x2c')][_0xd535('0x2d')]};});_0x3e4021[_0xd535('0x2e')]=_[_0xd535('0x29')](_0x51ff66,_0xd535('0x27'));_0x3e4021[_0xd535('0x2f')]=_['keys'](_0x1fca40[_0xd535('0x2f')]);_0x3e4021[_0xd535('0x30')]=_[_0xd535('0x31')](_0x3e4021['model'],_0x3e4021[_0xd535('0x2f')]);_0x2e6aff[_0xd535('0x32')]=_[_0xd535('0x31')](_0x3e4021[_0xd535('0x2e')],qs[_0xd535('0x33')](_0x1fca40['query']['fields']));_0x2e6aff['attributes']=_0x2e6aff[_0xd535('0x32')][_0xd535('0x34')]?_0x2e6aff[_0xd535('0x32')]:_0x3e4021[_0xd535('0x2e')];if(!_0x1fca40[_0xd535('0x2f')][_0xd535('0x35')]('nolimit')){_0x2e6aff['limit']=qs[_0xd535('0x1c')](_0x1fca40['query'][_0xd535('0x1c')]);_0x2e6aff['offset']=qs[_0xd535('0x1d')](_0x1fca40['query'][_0xd535('0x1d')]);}_0x2e6aff['order']=qs[_0xd535('0x36')](_0x1fca40[_0xd535('0x2f')][_0xd535('0x36')]);_0x2e6aff[_0xd535('0x37')]=qs['filters'](_[_0xd535('0x38')](_0x1fca40[_0xd535('0x2f')],_0x3e4021['filters']),_0x51ff66);if(_0x1fca40[_0xd535('0x2f')][_0xd535('0x39')]){_0x2e6aff[_0xd535('0x37')]=_[_0xd535('0x3a')](_0x2e6aff[_0xd535('0x37')],{'$or':_[_0xd535('0x29')](_0x51ff66,function(_0xb3f00e){if(_0xb3f00e[_0xd535('0x2c')]!==_0xd535('0x3b')){var _0xb3e222={};_0xb3e222[_0xb3f00e['name']]={'$like':'%'+_0x1fca40[_0xd535('0x2f')][_0xd535('0x39')]+'%'};return _0xb3e222;}})});}_0x2e6aff=_[_0xd535('0x3a')]({},_0x2e6aff,_0x1fca40['options']);var _0x42bd18={'where':_0x2e6aff[_0xd535('0x37')]};return db[_0xd535('0x2a')]['count'](_0x42bd18)[_0xd535('0x25')](function(_0x2fd8a3){_0x47d5e2['count']=_0x2fd8a3;if(_0x1fca40[_0xd535('0x2f')]['includeAll']){_0x2e6aff[_0xd535('0x3c')]=[{'all':!![]}];}return db[_0xd535('0x2a')][_0xd535('0x3d')](_0x2e6aff);})[_0xd535('0x25')](function(_0x5d6a86){_0x47d5e2['rows']=_0x5d6a86;return _0x47d5e2;})['then'](respondWithFilteredResult(_0x324f54,_0x2e6aff))['catch'](handleError(_0x324f54,null));};exports[_0xd535('0x3e')]=function(_0x383c64,_0x4a4d36){var _0x23341a={'raw':!![],'where':{'id':_0x383c64[_0xd535('0x3f')]['id']}},_0x48e738={};_0x48e738[_0xd535('0x2e')]=_['keys'](db['Disposition'][_0xd535('0x2b')]);_0x48e738[_0xd535('0x2f')]=_[_0xd535('0x40')](_0x383c64['query']);_0x48e738[_0xd535('0x30')]=_['intersection'](_0x48e738[_0xd535('0x2e')],_0x48e738[_0xd535('0x2f')]);_0x23341a[_0xd535('0x32')]=_[_0xd535('0x31')](_0x48e738[_0xd535('0x2e')],qs[_0xd535('0x33')](_0x383c64[_0xd535('0x2f')]['fields']));_0x23341a['attributes']=_0x23341a[_0xd535('0x32')][_0xd535('0x34')]?_0x23341a[_0xd535('0x32')]:_0x48e738['model'];if(_0x383c64[_0xd535('0x2f')]['includeAll']){_0x23341a[_0xd535('0x3c')]=[{'all':!![]}];}_0x23341a=_[_0xd535('0x3a')]({},_0x23341a,_0x383c64[_0xd535('0x41')]);return db[_0xd535('0x2a')]['find'](_0x23341a)[_0xd535('0x25')](handleEntityNotFound(_0x4a4d36,null))[_0xd535('0x25')](respondWithResult(_0x4a4d36,null))[_0xd535('0x42')](handleError(_0x4a4d36,null));};exports[_0xd535('0x43')]=function(_0x3cc374,_0x2535e4){return db[_0xd535('0x2a')][_0xd535('0x43')](_0x3cc374[_0xd535('0x44')],{})[_0xd535('0x25')](function(_0x554e08){var _0x382a5b=_0x3cc374[_0xd535('0x45')]['get']({'plain':!![]});if(!_0x382a5b)throw new Error(_0xd535('0x46'));if(_0x382a5b[_0xd535('0x47')]===_0xd535('0x45')){var _0x25c459=_0x554e08[_0xd535('0x24')]({'plain':!![]});var _0x5782fe=_0xd535('0x48');return db[_0xd535('0x49')][_0xd535('0x4a')]({'where':{'name':_0x5782fe,'userProfileId':_0x382a5b[_0xd535('0x4b')]},'raw':!![]})[_0xd535('0x25')](function(_0x219fd3){if(_0x219fd3&&_0x219fd3[_0xd535('0x4c')]===0x0){return db[_0xd535('0x4d')]['create']({'name':_0x25c459[_0xd535('0x27')],'resourceId':_0x25c459['id'],'type':_0x219fd3[_0xd535('0x27')],'sectionId':_0x219fd3['id']},{})[_0xd535('0x25')](function(){return _0x554e08;});}else{return _0x554e08;}})[_0xd535('0x42')](function(_0x5934e1){logger[_0xd535('0x4e')](_0xd535('0x4f'),_0x5934e1);throw _0x5934e1;});}return _0x554e08;})[_0xd535('0x25')](respondWithResult(_0x2535e4,0xc9))['catch'](handleError(_0x2535e4,null));};exports[_0xd535('0x22')]=function(_0x1ea77b,_0x132282){if(_0x1ea77b['body']['id']){delete _0x1ea77b[_0xd535('0x44')]['id'];}return db[_0xd535('0x2a')][_0xd535('0x4a')]({'where':{'id':_0x1ea77b[_0xd535('0x3f')]['id']}})[_0xd535('0x25')](handleEntityNotFound(_0x132282,null))[_0xd535('0x25')](saveUpdates(_0x1ea77b[_0xd535('0x44')],null))[_0xd535('0x25')](respondWithResult(_0x132282,null))[_0xd535('0x42')](handleError(_0x132282,null));};exports[_0xd535('0x23')]=function(_0x3628ff,_0x1279f3){return db[_0xd535('0x2a')]['find']({'where':{'id':_0x3628ff['params']['id']}})['then'](handleEntityNotFound(_0x1279f3,null))[_0xd535('0x25')](removeEntity(_0x1279f3,null))['catch'](handleError(_0x1279f3,null));};
\ No newline at end of file
+var _0x2a56=['moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','get','Dispositions','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','options','Disposition','include','findAll','rows','catch','show','params','keys','includeAll','merge','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','request-promise'];(function(_0x115cb2,_0x324026){var _0x1ac519=function(_0x519e44){while(--_0x519e44){_0x115cb2['push'](_0x115cb2['shift']());}};_0x1ac519(++_0x324026);}(_0x2a56,0xaf));var _0x62a5=function(_0x192300,_0x4fcc19){_0x192300=_0x192300-0x0;var _0x1e8bed=_0x2a56[_0x192300];return _0x1e8bed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x62a5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x62a5('0x1'));var rp=require(_0x62a5('0x2'));var moment=require(_0x62a5('0x3'));var BPromise=require(_0x62a5('0x4'));var Mustache=require(_0x62a5('0x5'));var util=require('util');var path=require(_0x62a5('0x6'));var sox=require(_0x62a5('0x7'));var csv=require(_0x62a5('0x8'));var ejs=require(_0x62a5('0x9'));var fs=require('fs');var fs_extra=require(_0x62a5('0xa'));var _=require(_0x62a5('0xb'));var squel=require(_0x62a5('0xc'));var crypto=require(_0x62a5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x62a5('0xe'));var toCsv=require(_0x62a5('0x8'));var querystring=require(_0x62a5('0xf'));var Papa=require(_0x62a5('0x10'));var Redis=require(_0x62a5('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x62a5('0x12'));var as=require(_0x62a5('0x13'));var hardwareService=require(_0x62a5('0x14'));var logger=require(_0x62a5('0x15'))(_0x62a5('0x16'));var utils=require(_0x62a5('0x17'));var config=require(_0x62a5('0x18'));var licenseUtil=require(_0x62a5('0x19'));var db=require(_0x62a5('0x1a'))['db'];function respondWithStatusCode(_0x57ee80,_0x28d120){_0x28d120=_0x28d120||0xcc;return function(_0x442b43){if(_0x442b43){return _0x57ee80[_0x62a5('0x1b')](_0x28d120);}return _0x57ee80[_0x62a5('0x1c')](_0x28d120)['end']();};}function respondWithResult(_0x53f28f,_0x55a70f){_0x55a70f=_0x55a70f||0xc8;return function(_0x27ade1){if(_0x27ade1){return _0x53f28f['status'](_0x55a70f)[_0x62a5('0x1d')](_0x27ade1);}};}function respondWithFilteredResult(_0x4b9e38,_0x2e818e){return function(_0x18dca){if(_0x18dca){var _0x2bc6d9=typeof _0x2e818e['offset']===_0x62a5('0x1e')&&typeof _0x2e818e['limit']==='undefined';var _0x3bbe9e=_0x18dca['count'];var _0x4fd684=_0x2bc6d9?0x0:_0x2e818e['offset'];var _0xddb1ff=_0x2bc6d9?_0x18dca[_0x62a5('0x1f')]:_0x2e818e['offset']+_0x2e818e[_0x62a5('0x20')];var _0x34db16;if(_0xddb1ff>=_0x3bbe9e){_0xddb1ff=_0x3bbe9e;_0x34db16=0xc8;}else{_0x34db16=0xce;}_0x4b9e38[_0x62a5('0x1c')](_0x34db16);return _0x4b9e38[_0x62a5('0x21')](_0x62a5('0x22'),_0x4fd684+'-'+_0xddb1ff+'/'+_0x3bbe9e)[_0x62a5('0x1d')](_0x18dca);}return null;};}function patchUpdates(_0x12fcf5){return function(_0x203985){try{jsonpatch['apply'](_0x203985,_0x12fcf5,!![]);}catch(_0x4f9108){return BPromise[_0x62a5('0x23')](_0x4f9108);}return _0x203985[_0x62a5('0x24')]();};}function saveUpdates(_0x368e35,_0x307ee4){return function(_0x234e22){if(_0x234e22){return _0x234e22[_0x62a5('0x25')](_0x368e35)[_0x62a5('0x26')](function(_0xe08ab6){return _0xe08ab6;});}return null;};}function removeEntity(_0xb80660,_0x306650){return function(_0x48ee49){if(_0x48ee49){return _0x48ee49[_0x62a5('0x27')]()[_0x62a5('0x26')](function(){var _0x1b7bfc=_0x48ee49[_0x62a5('0x28')]({'plain':!![]});var _0x5e7092=_0x62a5('0x29');return db[_0x62a5('0x2a')]['destroy']({'where':{'type':_0x5e7092,'resourceId':_0x1b7bfc['id']}})[_0x62a5('0x26')](function(){return _0x48ee49;});})['then'](function(){_0xb80660[_0x62a5('0x1c')](0xcc)[_0x62a5('0x2b')]();});}};}function handleEntityNotFound(_0x3db069,_0x42eed0){return function(_0x4961ba){if(!_0x4961ba){_0x3db069[_0x62a5('0x1b')](0x194);}return _0x4961ba;};}function handleError(_0x37e4a6,_0x3bd81e){_0x3bd81e=_0x3bd81e||0x1f4;return function(_0x39ccb1){logger[_0x62a5('0x2c')](_0x39ccb1[_0x62a5('0x2d')]);if(_0x39ccb1[_0x62a5('0x2e')]){delete _0x39ccb1[_0x62a5('0x2e')];}_0x37e4a6[_0x62a5('0x1c')](_0x3bd81e)[_0x62a5('0x2f')](_0x39ccb1);};}exports[_0x62a5('0x30')]=function(_0x34a3c8,_0x17723b){var _0x446cb2={},_0x380ba0={},_0x3e0f9f={'count':0x0,'rows':[]};var _0x5b46cf=_[_0x62a5('0x31')](db['Disposition'][_0x62a5('0x32')],function(_0x33b3b1){return{'name':_0x33b3b1[_0x62a5('0x33')],'type':_0x33b3b1[_0x62a5('0x34')][_0x62a5('0x35')]};});_0x380ba0[_0x62a5('0x36')]=_[_0x62a5('0x31')](_0x5b46cf,_0x62a5('0x2e'));_0x380ba0['query']=_['keys'](_0x34a3c8[_0x62a5('0x37')]);_0x380ba0[_0x62a5('0x38')]=_[_0x62a5('0x39')](_0x380ba0[_0x62a5('0x36')],_0x380ba0[_0x62a5('0x37')]);_0x446cb2[_0x62a5('0x3a')]=_[_0x62a5('0x39')](_0x380ba0[_0x62a5('0x36')],qs[_0x62a5('0x3b')](_0x34a3c8[_0x62a5('0x37')][_0x62a5('0x3b')]));_0x446cb2[_0x62a5('0x3a')]=_0x446cb2[_0x62a5('0x3a')][_0x62a5('0x3c')]?_0x446cb2[_0x62a5('0x3a')]:_0x380ba0[_0x62a5('0x36')];if(!_0x34a3c8['query'][_0x62a5('0x3d')](_0x62a5('0x3e'))){_0x446cb2[_0x62a5('0x20')]=qs['limit'](_0x34a3c8[_0x62a5('0x37')][_0x62a5('0x20')]);_0x446cb2[_0x62a5('0x3f')]=qs['offset'](_0x34a3c8[_0x62a5('0x37')][_0x62a5('0x3f')]);}_0x446cb2[_0x62a5('0x40')]=qs['sort'](_0x34a3c8[_0x62a5('0x37')][_0x62a5('0x41')]);_0x446cb2[_0x62a5('0x42')]=qs['filters'](_[_0x62a5('0x43')](_0x34a3c8[_0x62a5('0x37')],_0x380ba0[_0x62a5('0x38')]),_0x5b46cf);if(_0x34a3c8[_0x62a5('0x37')][_0x62a5('0x44')]){_0x446cb2[_0x62a5('0x42')]=_['merge'](_0x446cb2[_0x62a5('0x42')],{'$or':_[_0x62a5('0x31')](_0x5b46cf,function(_0x5ce381){if(_0x5ce381[_0x62a5('0x34')]!=='VIRTUAL'){var _0x4923c3={};_0x4923c3[_0x5ce381['name']]={'$like':'%'+_0x34a3c8['query'][_0x62a5('0x44')]+'%'};return _0x4923c3;}})});}_0x446cb2=_['merge']({},_0x446cb2,_0x34a3c8[_0x62a5('0x45')]);var _0x2a5b35={'where':_0x446cb2['where']};return db[_0x62a5('0x46')][_0x62a5('0x1f')](_0x2a5b35)[_0x62a5('0x26')](function(_0x2155d6){_0x3e0f9f[_0x62a5('0x1f')]=_0x2155d6;if(_0x34a3c8[_0x62a5('0x37')]['includeAll']){_0x446cb2[_0x62a5('0x47')]=[{'all':!![]}];}return db[_0x62a5('0x46')][_0x62a5('0x48')](_0x446cb2);})['then'](function(_0xd4c494){_0x3e0f9f[_0x62a5('0x49')]=_0xd4c494;return _0x3e0f9f;})['then'](respondWithFilteredResult(_0x17723b,_0x446cb2))[_0x62a5('0x4a')](handleError(_0x17723b,null));};exports[_0x62a5('0x4b')]=function(_0x5b4ce8,_0x541626){var _0x2165b2={'raw':!![],'where':{'id':_0x5b4ce8[_0x62a5('0x4c')]['id']}},_0x3fddce={};_0x3fddce[_0x62a5('0x36')]=_[_0x62a5('0x4d')](db[_0x62a5('0x46')]['rawAttributes']);_0x3fddce['query']=_['keys'](_0x5b4ce8['query']);_0x3fddce[_0x62a5('0x38')]=_[_0x62a5('0x39')](_0x3fddce[_0x62a5('0x36')],_0x3fddce['query']);_0x2165b2[_0x62a5('0x3a')]=_[_0x62a5('0x39')](_0x3fddce[_0x62a5('0x36')],qs[_0x62a5('0x3b')](_0x5b4ce8[_0x62a5('0x37')][_0x62a5('0x3b')]));_0x2165b2['attributes']=_0x2165b2['attributes']['length']?_0x2165b2['attributes']:_0x3fddce[_0x62a5('0x36')];if(_0x5b4ce8[_0x62a5('0x37')][_0x62a5('0x4e')]){_0x2165b2[_0x62a5('0x47')]=[{'all':!![]}];}_0x2165b2=_[_0x62a5('0x4f')]({},_0x2165b2,_0x5b4ce8[_0x62a5('0x45')]);return db[_0x62a5('0x46')]['find'](_0x2165b2)[_0x62a5('0x26')](handleEntityNotFound(_0x541626,null))[_0x62a5('0x26')](respondWithResult(_0x541626,null))[_0x62a5('0x4a')](handleError(_0x541626,null));};exports[_0x62a5('0x50')]=function(_0x1b7d5e,_0x2a4ad6){return db[_0x62a5('0x46')]['create'](_0x1b7d5e[_0x62a5('0x51')],{})[_0x62a5('0x26')](function(_0xd056dc){var _0x48ac64=_0x1b7d5e['user'][_0x62a5('0x28')]({'plain':!![]});if(!_0x48ac64)throw new Error(_0x62a5('0x52'));if(_0x48ac64[_0x62a5('0x53')]===_0x62a5('0x54')){var _0x2100f6=_0xd056dc['get']({'plain':!![]});var _0x2a892a=_0x62a5('0x29');return db[_0x62a5('0x55')][_0x62a5('0x56')]({'where':{'name':_0x2a892a,'userProfileId':_0x48ac64['userProfileId']},'raw':!![]})['then'](function(_0x3fa844){if(_0x3fa844&&_0x3fa844[_0x62a5('0x57')]===0x0){return db['UserProfileResource'][_0x62a5('0x50')]({'name':_0x2100f6['name'],'resourceId':_0x2100f6['id'],'type':_0x3fa844[_0x62a5('0x2e')],'sectionId':_0x3fa844['id']},{})[_0x62a5('0x26')](function(){return _0xd056dc;});}else{return _0xd056dc;}})[_0x62a5('0x4a')](function(_0xcb18f3){logger[_0x62a5('0x2c')](_0x62a5('0x58'),_0xcb18f3);throw _0xcb18f3;});}return _0xd056dc;})[_0x62a5('0x26')](respondWithResult(_0x2a4ad6,0xc9))[_0x62a5('0x4a')](handleError(_0x2a4ad6,null));};exports[_0x62a5('0x25')]=function(_0x5947d6,_0x551910){if(_0x5947d6[_0x62a5('0x51')]['id']){delete _0x5947d6[_0x62a5('0x51')]['id'];}return db[_0x62a5('0x46')][_0x62a5('0x56')]({'where':{'id':_0x5947d6['params']['id']}})[_0x62a5('0x26')](handleEntityNotFound(_0x551910,null))['then'](saveUpdates(_0x5947d6[_0x62a5('0x51')],null))[_0x62a5('0x26')](respondWithResult(_0x551910,null))['catch'](handleError(_0x551910,null));};exports['destroy']=function(_0x44c200,_0x703355){return db[_0x62a5('0x46')]['find']({'where':{'id':_0x44c200['params']['id']}})['then'](handleEntityNotFound(_0x703355,null))[_0x62a5('0x26')](removeEntity(_0x703355,null))[_0x62a5('0x4a')](handleError(_0x703355,null));};
\ No newline at end of file
index 7e95817..f710908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a1a=['exports','define','Disposition','name_voice','ListId','name','name_mail','MailAccountId','name_sms','SmsAccountId','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./disposition.attributes'];(function(_0x4ab9f0,_0x548c3c){var _0x364cbc=function(_0x193c1c){while(--_0x193c1c){_0x4ab9f0['push'](_0x4ab9f0['shift']());}};_0x364cbc(++_0x548c3c);}(_0x3a1a,0x15f));var _0xa3a1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3a1a[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xa3a1('0x0'));var logger=require(_0xa3a1('0x1'))(_0xa3a1('0x2'));var moment=require(_0xa3a1('0x3'));var BPromise=require(_0xa3a1('0x4'));var rp=require(_0xa3a1('0x5'));var fs=require('fs');var path=require(_0xa3a1('0x6'));var rimraf=require(_0xa3a1('0x7'));var config=require('../../config/environment');var attributes=require(_0xa3a1('0x8'));module[_0xa3a1('0x9')]=function(_0x36003c,_0x54779c){return _0x36003c[_0xa3a1('0xa')](_0xa3a1('0xb'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0xa3a1('0xc'),'fields':['name',_0xa3a1('0xd')]},{'unique':!![],'name':'name_chat','fields':[_0xa3a1('0xe'),'ChatWebsiteId']},{'unique':!![],'name':_0xa3a1('0xf'),'fields':['name',_0xa3a1('0x10')]},{'unique':!![],'name':_0xa3a1('0x11'),'fields':[_0xa3a1('0xe'),_0xa3a1('0x12')]},{'unique':!![],'name':'name_fax','fields':['name',_0xa3a1('0x13')]},{'unique':!![],'name':_0xa3a1('0x14'),'fields':[_0xa3a1('0xe'),_0xa3a1('0x15')]},{'unique':!![],'name':_0xa3a1('0x16'),'fields':[_0xa3a1('0xe'),_0xa3a1('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7187=['moment','request-promise','rimraf','../../config/environment','./disposition.attributes','exports','tools_dispositions','name_voice','name','ListId','name_chat','name_mail','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','../../config/logger','api'];(function(_0x587a19,_0x446a99){var _0x5d883b=function(_0x21d33d){while(--_0x21d33d){_0x587a19['push'](_0x587a19['shift']());}};_0x5d883b(++_0x446a99);}(_0x7187,0x10f));var _0x7718=function(_0x4a7bf3,_0x48bc7f){_0x4a7bf3=_0x4a7bf3-0x0;var _0x41fcd9=_0x7187[_0x4a7bf3];return _0x41fcd9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7718('0x0'))(_0x7718('0x1'));var moment=require(_0x7718('0x2'));var BPromise=require('bluebird');var rp=require(_0x7718('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7718('0x4'));var config=require(_0x7718('0x5'));var attributes=require(_0x7718('0x6'));module[_0x7718('0x7')]=function(_0x3072b5,_0x2f89d1){return _0x3072b5['define']('Disposition',attributes,{'tableName':_0x7718('0x8'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x7718('0x9'),'fields':[_0x7718('0xa'),_0x7718('0xb')]},{'unique':!![],'name':_0x7718('0xc'),'fields':[_0x7718('0xa'),'ChatWebsiteId']},{'unique':!![],'name':_0x7718('0xd'),'fields':[_0x7718('0xa'),'MailAccountId']},{'unique':!![],'name':'name_sms','fields':['name',_0x7718('0xe')]},{'unique':!![],'name':_0x7718('0xf'),'fields':[_0x7718('0xa'),_0x7718('0x10')]},{'unique':!![],'name':_0x7718('0x11'),'fields':[_0x7718('0xa'),_0x7718('0x12')]},{'unique':!![],'name':_0x7718('0x13'),'fields':['name',_0x7718('0x14')]}],'timestamps':!![]});};
\ No newline at end of file
index a7d49e9..f9aa87d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4669f0,_0x5c046a){var _0x5e9b4b=function(_0x1c982a){while(--_0x1c982a){_0x4669f0['push'](_0x4669f0['shift']());}};_0x5e9b4b(++_0x5c046a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x41655a,_0x2d6f0b){var _0x4d560e=function(_0x5d9a30){while(--_0x5d9a30){_0x41655a['push'](_0x41655a['shift']());}};_0x4d560e(++_0x2d6f0b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index aa469be..0b2e08c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a90=['isAuthenticated','index','/:id','show','post','put','update','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get'];(function(_0x493239,_0x4e059e){var _0x4d09fe=function(_0x5382b1){while(--_0x5382b1){_0x493239['push'](_0x493239['shift']());}};_0x4d09fe(++_0x4e059e);}(_0x0a90,0x8d));var _0x00a9=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0x0a90[_0x5a3cf0];return _0x5a64ee;};'use strict';var multer=require(_0x00a9('0x0'));var util=require('util');var path=require(_0x00a9('0x1'));var timeout=require(_0x00a9('0x2'));var express=require(_0x00a9('0x3'));var router=express[_0x00a9('0x4')]();var fs_extra=require(_0x00a9('0x5'));var auth=require(_0x00a9('0x6'));var interaction=require(_0x00a9('0x7'));var config=require(_0x00a9('0x8'));var controller=require(_0x00a9('0x9'));router[_0x00a9('0xa')]('/',auth[_0x00a9('0xb')](),controller[_0x00a9('0xc')]);router[_0x00a9('0xa')](_0x00a9('0xd'),auth[_0x00a9('0xb')](),controller[_0x00a9('0xe')]);router[_0x00a9('0xf')]('/',auth[_0x00a9('0xb')](),controller['create']);router[_0x00a9('0x10')](_0x00a9('0xd'),auth['isAuthenticated'](),controller[_0x00a9('0x11')]);router[_0x00a9('0x12')](_0x00a9('0xd'),auth[_0x00a9('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x548e=['put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','post','create'];(function(_0x4831f1,_0x4e9161){var _0x1eee43=function(_0x5ca780){while(--_0x5ca780){_0x4831f1['push'](_0x4831f1['shift']());}};_0x1eee43(++_0x4e9161);}(_0x548e,0x192));var _0xe548=function(_0x350a16,_0x4058e8){_0x350a16=_0x350a16-0x0;var _0x1d3205=_0x548e[_0x350a16];return _0x1d3205;};'use strict';var multer=require('multer');var util=require(_0xe548('0x0'));var path=require(_0xe548('0x1'));var timeout=require(_0xe548('0x2'));var express=require(_0xe548('0x3'));var router=express[_0xe548('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe548('0x5'));var interaction=require(_0xe548('0x6'));var config=require('../../config/environment');var controller=require('./disposition.controller');router[_0xe548('0x7')]('/',auth[_0xe548('0x8')](),controller[_0xe548('0x9')]);router[_0xe548('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe548('0xa')]('/',auth['isAuthenticated'](),controller[_0xe548('0xb')]);router[_0xe548('0xc')](_0xe548('0xd'),auth[_0xe548('0x8')](),controller[_0xe548('0xe')]);router[_0xe548('0xf')](_0xe548('0xd'),auth[_0xe548('0x8')](),controller[_0xe548('0x10')]);module[_0xe548('0x11')]=router;
\ No newline at end of file
index e0182e2..b2cedf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe803=['exports','STRING','ENUM','xCALLY\x20Motion\x20Fax','2400','7200','9600','4800','12000','14400','v17,v27,v29','SIP','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize'];(function(_0x215e65,_0x183f97){var _0xa85842=function(_0x43bf45){while(--_0x43bf45){_0x215e65['push'](_0x215e65['shift']());}};_0xa85842(++_0x183f97);}(_0xe803,0x137));var _0x3e80=function(_0x5051fe,_0x409826){_0x5051fe=_0x5051fe-0x0;var _0x2a6576=_0xe803[_0x5051fe];return _0x2a6576;};'use strict';var Sequelize=require(_0x3e80('0x0'));module[_0x3e80('0x1')]={'name':{'type':Sequelize[_0x3e80('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0x3e80('0x3')]('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x3e80('0x2')],'defaultValue':_0x3e80('0x4')},'localstationid':{'type':Sequelize[_0x3e80('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x3e80('0x3')](_0x3e80('0x5'),'4800',_0x3e80('0x6'),_0x3e80('0x7'),'12000','14400'),'defaultValue':'4800'},'maxrate':{'type':Sequelize['ENUM'](_0x3e80('0x5'),_0x3e80('0x8'),_0x3e80('0x6'),_0x3e80('0x7'),_0x3e80('0x9'),_0x3e80('0xa')),'defaultValue':_0x3e80('0xa')},'modem':{'type':Sequelize[_0x3e80('0x2')],'defaultValue':_0x3e80('0xb')},'gateway':{'type':Sequelize[_0x3e80('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x3e80('0x3')](_0x3e80('0xc'),'IAX',_0x3e80('0xd'),_0x3e80('0xe')),'defaultValue':'SIP'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3e80('0xf')],'defaultValue':function(){return _0x3e80('0x10');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3e80('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3e80('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3e80('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3e80('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0x3e80('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x3e80('0x11')],'defaultValue':![],'comment':_0x3e80('0x14'),'set':function(_0x2d8137){if(!_0x2d8137)this[_0x3e80('0x15')](_0x3e80('0x16'),null);this['setDataValue'](_0x3e80('0x17'),_0x2d8137);}}};
\ No newline at end of file
+var _0x0c39=['12000','14400','9600','v17,v27,v29','INTEGER','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','mandatoryDispositionPauseId','setDataValue','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800'];(function(_0x227389,_0x2463a0){var _0x3e813a=function(_0x159cdb){while(--_0x159cdb){_0x227389['push'](_0x227389['shift']());}};_0x3e813a(++_0x2463a0);}(_0x0c39,0x7e));var _0x90c3=function(_0x23342b,_0x5958d8){_0x23342b=_0x23342b-0x0;var _0x195805=_0x0c39[_0x23342b];return _0x195805;};'use strict';var Sequelize=require('sequelize');module[_0x90c3('0x0')]={'name':{'type':Sequelize[_0x90c3('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0x90c3('0x2')](_0x90c3('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x90c3('0x1')],'defaultValue':_0x90c3('0x4')},'localstationid':{'type':Sequelize[_0x90c3('0x1')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x90c3('0x2')](_0x90c3('0x5'),_0x90c3('0x6'),'7200','9600',_0x90c3('0x7'),_0x90c3('0x8')),'defaultValue':_0x90c3('0x6')},'maxrate':{'type':Sequelize['ENUM'](_0x90c3('0x5'),'4800','7200',_0x90c3('0x9'),_0x90c3('0x7'),_0x90c3('0x8')),'defaultValue':_0x90c3('0x8')},'modem':{'type':Sequelize['STRING'],'defaultValue':_0x90c3('0xa')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x90c3('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x90c3('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x90c3('0x2')]('SIP','IAX',_0x90c3('0xc'),_0x90c3('0xd')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x90c3('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x90c3('0xe')],'defaultValue':function(){return _0x90c3('0xf');}},'notificationSound':{'type':Sequelize[_0x90c3('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x90c3('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x90c3('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x90c3('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x90c3('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x90c3('0x10')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1ead65){if(!_0x1ead65)this['setDataValue'](_0x90c3('0x11'),null);this[_0x90c3('0x12')]('mandatoryDisposition',_0x1ead65);}}};
\ No newline at end of file
index dbd0bc4..acdc3af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2ee=['undefined','count','offset','Content-Range','apply','reject','save','update','destroy','get','FaxAccounts','name','index','mandatoryDispositionPause','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','filters','merge','map','VIRTUAL','filter','options','include','rows','params','Pause','includeAll','create','body','user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','describe','addDisposition','Disposition','getDispositions','findOne','order','removeDispositions','FaxAccountId','CannedAnswer','hasOwnProperty','findAll','removeAnswers','ids','FaxInteraction','addInteraction','getInteractions','CmContact','Contact','User','Owner','internal','Tags','color','tag','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','stack','finally','send','getApplications','context','from-voip-provider','exten','app','system','Fax\x20Extension','priority','appdata','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','maxrate','minrate','modem','t38timeout','push','Wait','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','omit','tech','createdAt','updatedAt','TrunkId','ListId','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','List','Contacts','DESC','attachments','join','root','server/files/attachments','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json'];(function(_0x79154a,_0x553571){var _0xf950f1=function(_0x428806){while(--_0x428806){_0x79154a['push'](_0x79154a['shift']());}};_0xf950f1(++_0x553571);}(_0xc2ee,0x95));var _0xec2e=function(_0x1fa2b7,_0x1072a4){_0x1fa2b7=_0x1fa2b7-0x0;var _0x16fb89=_0xc2ee[_0x1fa2b7];return _0x16fb89;};'use strict';var emlformat=require(_0xec2e('0x0'));var rimraf=require(_0xec2e('0x1'));var zipdir=require(_0xec2e('0x2'));var jsonpatch=require(_0xec2e('0x3'));var rp=require('request-promise');var moment=require(_0xec2e('0x4'));var BPromise=require(_0xec2e('0x5'));var Mustache=require('mustache');var util=require(_0xec2e('0x6'));var path=require(_0xec2e('0x7'));var sox=require(_0xec2e('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xec2e('0x9'));var _=require(_0xec2e('0xa'));var squel=require(_0xec2e('0xb'));var crypto=require('crypto');var jsforce=require(_0xec2e('0xc'));var deskjs=require(_0xec2e('0xd'));var toCsv=require(_0xec2e('0xe'));var querystring=require('querystring');var Papa=require(_0xec2e('0xf'));var Redis=require(_0xec2e('0x10'));var authService=require(_0xec2e('0x11'));var qs=require(_0xec2e('0x12'));var as=require(_0xec2e('0x13'));var hardwareService=require(_0xec2e('0x14'));var logger=require(_0xec2e('0x15'))('api');var utils=require(_0xec2e('0x16'));var config=require(_0xec2e('0x17'));var licenseUtil=require(_0xec2e('0x18'));var db=require('../../mysqldb')['db'];config[_0xec2e('0x19')]=_[_0xec2e('0x1a')](config[_0xec2e('0x19')],{'host':_0xec2e('0x1b'),'port':0x18eb});var socket=require(_0xec2e('0x1c'))(new Redis(config[_0xec2e('0x19')]));require(_0xec2e('0x1d'))[_0xec2e('0x1e')](socket);var jayson=require(_0xec2e('0x1f'));var client=jayson[_0xec2e('0x20')]['http']({'port':0x232c});var client9002=jayson[_0xec2e('0x20')][_0xec2e('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x52e4e5,_0x2347e9,_0x25e8be,_0x2c8f8a){return new BPromise(function(_0x2f612a,_0x192405){var _0x58cee1=_0x2c8f8a||client;return _0x58cee1[_0xec2e('0x22')](_0x52e4e5,_0x25e8be)[_0xec2e('0x23')](function(_0x10f292){logger[_0xec2e('0x24')](_0xec2e('0x25'),_0x2347e9,_0xec2e('0x26'));logger[_0xec2e('0x27')](_0xec2e('0x28'),_0x2347e9,_0xec2e('0x26'),JSON['stringify'](_0x10f292));if(_0x10f292[_0xec2e('0x29')]){if(_0x10f292[_0xec2e('0x29')][_0xec2e('0x2a')]===0x1f4){logger[_0xec2e('0x29')]('FaxAccount,\x20%s,\x20%s',_0x2347e9,_0x10f292[_0xec2e('0x29')][_0xec2e('0x2b')]);return _0x192405(_0x10f292[_0xec2e('0x29')][_0xec2e('0x2b')]);}logger[_0xec2e('0x29')]('FaxAccount,\x20%s,\x20%s',_0x2347e9,_0x10f292[_0xec2e('0x29')][_0xec2e('0x2b')]);return _0x2f612a(_0x10f292[_0xec2e('0x29')][_0xec2e('0x2b')]);}else{logger[_0xec2e('0x24')](_0xec2e('0x25'),_0x2347e9,_0xec2e('0x26'));_0x2f612a(_0x10f292[_0xec2e('0x2c')][_0xec2e('0x2b')]);}})[_0xec2e('0x2d')](function(_0x1a967d){logger[_0xec2e('0x29')]('FaxAccount,\x20%s,\x20%s',_0x2347e9,_0x1a967d);_0x192405(_0x1a967d);});});}function respondWithStatusCode(_0x3f3874,_0x33246e){_0x33246e=_0x33246e||0xcc;return function(_0x4ab0b9){if(_0x4ab0b9){return _0x3f3874[_0xec2e('0x2e')](_0x33246e);}return _0x3f3874[_0xec2e('0x2f')](_0x33246e)[_0xec2e('0x30')]();};}function respondWithResult(_0x1800fb,_0x557707){_0x557707=_0x557707||0xc8;return function(_0x56ee02){if(_0x56ee02){return _0x1800fb[_0xec2e('0x2f')](_0x557707)[_0xec2e('0x31')](_0x56ee02);}};}function respondWithFilteredResult(_0x10b4ac,_0xad7390){return function(_0x25c608){if(_0x25c608){var _0x3f6f97=typeof _0xad7390['offset']===_0xec2e('0x32')&&typeof _0xad7390['limit']==='undefined';var _0x2aede0=_0x25c608[_0xec2e('0x33')];var _0x99df11=_0x3f6f97?0x0:_0xad7390[_0xec2e('0x34')];var _0x23146c=_0x3f6f97?_0x25c608[_0xec2e('0x33')]:_0xad7390[_0xec2e('0x34')]+_0xad7390['limit'];var _0x18b534;if(_0x23146c>=_0x2aede0){_0x23146c=_0x2aede0;_0x18b534=0xc8;}else{_0x18b534=0xce;}_0x10b4ac[_0xec2e('0x2f')](_0x18b534);return _0x10b4ac['set'](_0xec2e('0x35'),_0x99df11+'-'+_0x23146c+'/'+_0x2aede0)[_0xec2e('0x31')](_0x25c608);}return null;};}function patchUpdates(_0x536937){return function(_0x28c12a){try{jsonpatch[_0xec2e('0x36')](_0x28c12a,_0x536937,!![]);}catch(_0x24f75e){return BPromise[_0xec2e('0x37')](_0x24f75e);}return _0x28c12a[_0xec2e('0x38')]();};}function saveUpdates(_0x1d4e77,_0x49dc8f){return function(_0x4af7a1){if(_0x4af7a1){return _0x4af7a1[_0xec2e('0x39')](_0x1d4e77)[_0xec2e('0x23')](function(_0x4a0c25){return _0x4a0c25;});}return null;};}function removeEntity(_0x4ee96f,_0x1c1607){return function(_0x247635){if(_0x247635){return _0x247635[_0xec2e('0x3a')]()[_0xec2e('0x23')](function(){var _0x4f8653=_0x247635[_0xec2e('0x3b')]({'plain':!![]});var _0x3f285e=_0xec2e('0x3c');return db['UserProfileResource']['destroy']({'where':{'type':_0x3f285e,'resourceId':_0x4f8653['id']}})[_0xec2e('0x23')](function(){return _0x247635;});})['then'](function(){_0x4ee96f[_0xec2e('0x2f')](0xcc)[_0xec2e('0x30')]();});}};}function handleEntityNotFound(_0x46bade,_0x46394b){return function(_0x2962fa){if(!_0x2962fa){_0x46bade[_0xec2e('0x2e')](0x194);}return _0x2962fa;};}function handleError(_0x22ce1b,_0x2e485c){_0x2e485c=_0x2e485c||0x1f4;return function(_0x4a33e2){logger[_0xec2e('0x29')](_0x4a33e2['stack']);if(_0x4a33e2[_0xec2e('0x3d')]){delete _0x4a33e2[_0xec2e('0x3d')];}_0x22ce1b[_0xec2e('0x2f')](_0x2e485c)['send'](_0x4a33e2);};}exports[_0xec2e('0x3e')]=function(_0x4fc3a3,_0x2d032e){var _0x33132a={'include':[{'model':db['Pause'],'as':_0xec2e('0x3f')}]},_0x24d9b5={},_0xa1f2={'count':0x0,'rows':[]};var _0x334b62=_['map'](db[_0xec2e('0x40')][_0xec2e('0x41')],function(_0x13124f){return{'name':_0x13124f[_0xec2e('0x42')],'type':_0x13124f[_0xec2e('0x43')][_0xec2e('0x44')]};});_0x24d9b5[_0xec2e('0x45')]=_['map'](_0x334b62,_0xec2e('0x3d'));_0x24d9b5[_0xec2e('0x46')]=_[_0xec2e('0x47')](_0x4fc3a3[_0xec2e('0x46')]);_0x24d9b5['filters']=_[_0xec2e('0x48')](_0x24d9b5[_0xec2e('0x45')],_0x24d9b5[_0xec2e('0x46')]);_0x33132a[_0xec2e('0x49')]=_[_0xec2e('0x48')](_0x24d9b5[_0xec2e('0x45')],qs[_0xec2e('0x4a')](_0x4fc3a3[_0xec2e('0x46')]['fields']));_0x33132a[_0xec2e('0x49')]=_0x33132a['attributes'][_0xec2e('0x4b')]?_0x33132a['attributes']:_0x24d9b5['model'];if(!_0x4fc3a3[_0xec2e('0x46')]['hasOwnProperty'](_0xec2e('0x4c'))){_0x33132a[_0xec2e('0x4d')]=qs[_0xec2e('0x4d')](_0x4fc3a3[_0xec2e('0x46')]['limit']);_0x33132a[_0xec2e('0x34')]=qs[_0xec2e('0x34')](_0x4fc3a3[_0xec2e('0x46')][_0xec2e('0x34')]);}_0x33132a['order']=qs[_0xec2e('0x4e')](_0x4fc3a3[_0xec2e('0x46')][_0xec2e('0x4e')]);_0x33132a[_0xec2e('0x4f')]=qs['filters'](_[_0xec2e('0x50')](_0x4fc3a3[_0xec2e('0x46')],_0x24d9b5[_0xec2e('0x51')]),_0x334b62);if(_0x4fc3a3['query']['filter']){_0x33132a[_0xec2e('0x4f')]=_[_0xec2e('0x52')](_0x33132a[_0xec2e('0x4f')],{'$or':_[_0xec2e('0x53')](_0x334b62,function(_0x1d3d8f){if(_0x1d3d8f[_0xec2e('0x43')]!==_0xec2e('0x54')){var _0x1a7b59={};_0x1a7b59[_0x1d3d8f[_0xec2e('0x3d')]]={'$like':'%'+_0x4fc3a3[_0xec2e('0x46')][_0xec2e('0x55')]+'%'};return _0x1a7b59;}})});}_0x33132a=_[_0xec2e('0x52')]({},_0x33132a,_0x4fc3a3[_0xec2e('0x56')]);var _0x1740bf={'where':_0x33132a[_0xec2e('0x4f')]};return db[_0xec2e('0x40')][_0xec2e('0x33')](_0x1740bf)['then'](function(_0x29b470){_0xa1f2[_0xec2e('0x33')]=_0x29b470;if(_0x4fc3a3[_0xec2e('0x46')]['includeAll']){_0x33132a[_0xec2e('0x57')]=[{'all':!![]}];}return db[_0xec2e('0x40')]['findAll'](_0x33132a);})[_0xec2e('0x23')](function(_0x54d705){_0xa1f2[_0xec2e('0x58')]=_0x54d705;return _0xa1f2;})[_0xec2e('0x23')](respondWithFilteredResult(_0x2d032e,_0x33132a))[_0xec2e('0x2d')](handleError(_0x2d032e,null));};exports['show']=function(_0x4ec9d9,_0x282e88){var _0x544beb={'raw':![],'where':{'id':_0x4ec9d9[_0xec2e('0x59')]['id']},'include':[{'model':db[_0xec2e('0x5a')],'as':_0xec2e('0x3f')}]},_0x55018c={};_0x55018c[_0xec2e('0x45')]=_['keys'](db[_0xec2e('0x40')][_0xec2e('0x41')]);_0x55018c[_0xec2e('0x46')]=_[_0xec2e('0x47')](_0x4ec9d9['query']);_0x55018c[_0xec2e('0x51')]=_['intersection'](_0x55018c[_0xec2e('0x45')],_0x55018c['query']);_0x544beb['attributes']=_[_0xec2e('0x48')](_0x55018c['model'],qs[_0xec2e('0x4a')](_0x4ec9d9[_0xec2e('0x46')][_0xec2e('0x4a')]));_0x544beb[_0xec2e('0x49')]=_0x544beb[_0xec2e('0x49')][_0xec2e('0x4b')]?_0x544beb[_0xec2e('0x49')]:_0x55018c['model'];if(_0x4ec9d9[_0xec2e('0x46')][_0xec2e('0x5b')]){_0x544beb[_0xec2e('0x57')]=[{'all':!![]}];}_0x544beb=_[_0xec2e('0x52')]({},_0x544beb,_0x4ec9d9[_0xec2e('0x56')]);return db[_0xec2e('0x40')]['find'](_0x544beb)['then'](handleEntityNotFound(_0x282e88,null))[_0xec2e('0x23')](respondWithResult(_0x282e88,null))[_0xec2e('0x2d')](handleError(_0x282e88,null));};exports[_0xec2e('0x5c')]=function(_0x5eed9d,_0x54324b){return db[_0xec2e('0x40')][_0xec2e('0x5c')](_0x5eed9d[_0xec2e('0x5d')],{})[_0xec2e('0x23')](function(_0x353a26){var _0x2ad250=_0x5eed9d[_0xec2e('0x5e')][_0xec2e('0x3b')]({'plain':!![]});if(!_0x2ad250)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2ad250[_0xec2e('0x5f')]===_0xec2e('0x5e')){var _0x460127=_0x353a26[_0xec2e('0x3b')]({'plain':!![]});var _0xb0dc62=_0xec2e('0x3c');return db[_0xec2e('0x60')][_0xec2e('0x61')]({'where':{'name':_0xb0dc62,'userProfileId':_0x2ad250[_0xec2e('0x62')]},'raw':!![]})[_0xec2e('0x23')](function(_0x456e7d){if(_0x456e7d&&_0x456e7d[_0xec2e('0x63')]===0x0){return db[_0xec2e('0x64')][_0xec2e('0x5c')]({'name':_0x460127[_0xec2e('0x3d')],'resourceId':_0x460127['id'],'type':_0x456e7d['name'],'sectionId':_0x456e7d['id']},{})[_0xec2e('0x23')](function(){return _0x353a26;});}else{return _0x353a26;}})['catch'](function(_0x5add18){logger[_0xec2e('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5add18);throw _0x5add18;});}return _0x353a26;})['then'](respondWithResult(_0x54324b,0xc9))[_0xec2e('0x2d')](handleError(_0x54324b,null));};exports[_0xec2e('0x39')]=function(_0x143a4a,_0x2c4718){if(_0x143a4a[_0xec2e('0x5d')]['id']){delete _0x143a4a[_0xec2e('0x5d')]['id'];}return db[_0xec2e('0x40')][_0xec2e('0x61')]({'where':{'id':_0x143a4a[_0xec2e('0x59')]['id']},'include':[{'model':db[_0xec2e('0x5a')],'as':_0xec2e('0x3f')}]})[_0xec2e('0x23')](handleEntityNotFound(_0x2c4718,null))[_0xec2e('0x23')](saveUpdates(_0x143a4a['body'],null))[_0xec2e('0x23')](respondWithResult(_0x2c4718,null))['catch'](handleError(_0x2c4718,null));};exports['destroy']=function(_0x564c33,_0x391bf2){return db['FaxAccount']['find']({'where':{'id':_0x564c33[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x391bf2,null))[_0xec2e('0x23')](removeEntity(_0x391bf2,null))['catch'](handleError(_0x391bf2,null));};exports['describe']=function(_0x4389f7,_0x33f8ba){return db[_0xec2e('0x40')][_0xec2e('0x65')]()[_0xec2e('0x23')](respondWithResult(_0x33f8ba,null))[_0xec2e('0x2d')](handleError(_0x33f8ba,null));};exports[_0xec2e('0x66')]=function(_0x382b45,_0x4adcb5,_0x335654){if(_0x382b45[_0xec2e('0x5d')]['id']){delete _0x382b45[_0xec2e('0x5d')]['id'];}return db[_0xec2e('0x40')][_0xec2e('0x61')]({'where':{'id':_0x382b45['params']['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x4adcb5,null))[_0xec2e('0x23')](function(_0x2bb381){if(_0x2bb381){_0x382b45[_0xec2e('0x5d')]['FaxAccountId']=_0x2bb381['id'];return db[_0xec2e('0x67')]['create'](_0x382b45[_0xec2e('0x5d')]);}})[_0xec2e('0x23')](respondWithResult(_0x4adcb5,null))[_0xec2e('0x2d')](handleError(_0x4adcb5,null));};exports[_0xec2e('0x68')]=function(_0x3fe205,_0xf46f8,_0x4a7d01){var _0x2273a0={'raw':![],'where':{}};var _0x2dd81c={};var _0x2fe181={'count':0x0,'rows':[]};return db[_0xec2e('0x40')][_0xec2e('0x69')]({'where':{'id':_0x3fe205[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0xf46f8,null))[_0xec2e('0x23')](function(_0x5aca70){if(_0x5aca70){_0x2dd81c[_0xec2e('0x45')]=_[_0xec2e('0x47')](db[_0xec2e('0x67')][_0xec2e('0x41')]);_0x2dd81c[_0xec2e('0x46')]=_[_0xec2e('0x47')](_0x3fe205[_0xec2e('0x46')]);_0x2dd81c[_0xec2e('0x51')]=_[_0xec2e('0x48')](_0x2dd81c['model'],_0x2dd81c[_0xec2e('0x46')]);_0x2273a0[_0xec2e('0x49')]=_[_0xec2e('0x48')](_0x2dd81c[_0xec2e('0x45')],qs[_0xec2e('0x4a')](_0x3fe205[_0xec2e('0x46')]['fields']));_0x2273a0[_0xec2e('0x49')]=_0x2273a0['attributes']['length']?_0x2273a0[_0xec2e('0x49')]:_0x2dd81c[_0xec2e('0x45')];if(!_0x3fe205[_0xec2e('0x46')]['hasOwnProperty']('nolimit')){_0x2273a0[_0xec2e('0x4d')]=qs[_0xec2e('0x4d')](_0x3fe205['query']['limit']);_0x2273a0[_0xec2e('0x34')]=qs['offset'](_0x3fe205['query']['offset']);}_0x2273a0[_0xec2e('0x6a')]=qs[_0xec2e('0x4e')](_0x3fe205[_0xec2e('0x46')][_0xec2e('0x4e')]);_0x2273a0[_0xec2e('0x4f')]=qs[_0xec2e('0x51')](_[_0xec2e('0x50')](_0x3fe205['query'],_0x2dd81c[_0xec2e('0x51')]));_0x2273a0[_0xec2e('0x4f')]['FaxAccountId']=_0x5aca70['id'];if(_0x3fe205[_0xec2e('0x46')][_0xec2e('0x55')]){_0x2273a0['where']=_[_0xec2e('0x52')](_0x2273a0[_0xec2e('0x4f')],{'$or':_['map'](_0x2273a0[_0xec2e('0x49')],function(_0x578a02){var _0xe59e02={};_0xe59e02[_0x578a02]={'$like':'%'+_0x3fe205['query'][_0xec2e('0x55')]+'%'};return _0xe59e02;})});}_0x2273a0=_['merge']({},_0x2273a0,_0x3fe205[_0xec2e('0x56')]);return db[_0xec2e('0x67')][_0xec2e('0x33')]({'where':_0x2273a0['where']})[_0xec2e('0x23')](function(_0x541232){_0x2fe181[_0xec2e('0x33')]=_0x541232;if(_0x3fe205[_0xec2e('0x46')]['includeAll']){_0x2273a0[_0xec2e('0x57')]=[{'all':!![]}];}return db[_0xec2e('0x67')]['findAll'](_0x2273a0);})['then'](function(_0x51f187){_0x2fe181[_0xec2e('0x58')]=_0x51f187;return _0x2fe181;});}})[_0xec2e('0x23')](respondWithFilteredResult(_0xf46f8,_0x2273a0))[_0xec2e('0x2d')](handleError(_0xf46f8,null));};exports[_0xec2e('0x6b')]=function(_0x232327,_0x1c5358,_0x2969da){return db[_0xec2e('0x40')]['find']({'where':{'id':_0x232327[_0xec2e('0x59')]['id']}})['then'](handleEntityNotFound(_0x1c5358,null))[_0xec2e('0x23')](function(_0x20dd9c){if(_0x20dd9c){return _0x20dd9c[_0xec2e('0x6b')](_0x232327[_0xec2e('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x1c5358,null))[_0xec2e('0x2d')](handleError(_0x1c5358,null));};exports['addAnswer']=function(_0xc89b5f,_0x137518,_0x4ebabe){if(_0xc89b5f[_0xec2e('0x5d')]['id']){delete _0xc89b5f[_0xec2e('0x5d')]['id'];}return db[_0xec2e('0x40')]['find']({'where':{'id':_0xc89b5f[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x137518,null))[_0xec2e('0x23')](function(_0x54e084){if(_0x54e084){_0xc89b5f['body'][_0xec2e('0x6c')]=_0x54e084['id'];return db['CannedAnswer'][_0xec2e('0x5c')](_0xc89b5f[_0xec2e('0x5d')]);}})[_0xec2e('0x23')](respondWithResult(_0x137518,null))[_0xec2e('0x2d')](handleError(_0x137518,null));};exports['getAnswers']=function(_0xbcb41f,_0x520e15,_0x3b9d55){var _0x225224={'raw':![],'where':{}};var _0x52c7f4={};var _0x5d01c9={'count':0x0,'rows':[]};return db['FaxAccount'][_0xec2e('0x69')]({'where':{'id':_0xbcb41f[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x520e15,null))[_0xec2e('0x23')](function(_0x273e3d){if(_0x273e3d){_0x52c7f4[_0xec2e('0x45')]=_[_0xec2e('0x47')](db[_0xec2e('0x6d')][_0xec2e('0x41')]);_0x52c7f4['query']=_[_0xec2e('0x47')](_0xbcb41f[_0xec2e('0x46')]);_0x52c7f4[_0xec2e('0x51')]=_[_0xec2e('0x48')](_0x52c7f4[_0xec2e('0x45')],_0x52c7f4['query']);_0x225224[_0xec2e('0x49')]=_[_0xec2e('0x48')](_0x52c7f4[_0xec2e('0x45')],qs[_0xec2e('0x4a')](_0xbcb41f[_0xec2e('0x46')][_0xec2e('0x4a')]));_0x225224[_0xec2e('0x49')]=_0x225224['attributes']['length']?_0x225224[_0xec2e('0x49')]:_0x52c7f4[_0xec2e('0x45')];if(!_0xbcb41f[_0xec2e('0x46')][_0xec2e('0x6e')](_0xec2e('0x4c'))){_0x225224[_0xec2e('0x4d')]=qs['limit'](_0xbcb41f[_0xec2e('0x46')][_0xec2e('0x4d')]);_0x225224['offset']=qs[_0xec2e('0x34')](_0xbcb41f['query'][_0xec2e('0x34')]);}_0x225224[_0xec2e('0x6a')]=qs[_0xec2e('0x4e')](_0xbcb41f[_0xec2e('0x46')][_0xec2e('0x4e')]);_0x225224[_0xec2e('0x4f')]=qs[_0xec2e('0x51')](_['pick'](_0xbcb41f['query'],_0x52c7f4[_0xec2e('0x51')]));_0x225224[_0xec2e('0x4f')]['FaxAccountId']=_0x273e3d['id'];if(_0xbcb41f[_0xec2e('0x46')][_0xec2e('0x55')]){_0x225224['where']=_[_0xec2e('0x52')](_0x225224[_0xec2e('0x4f')],{'$or':_[_0xec2e('0x53')](_0x225224[_0xec2e('0x49')],function(_0x27845f){var _0xae965b={};_0xae965b[_0x27845f]={'$like':'%'+_0xbcb41f['query'][_0xec2e('0x55')]+'%'};return _0xae965b;})});}_0x225224=_[_0xec2e('0x52')]({},_0x225224,_0xbcb41f[_0xec2e('0x56')]);return db['CannedAnswer'][_0xec2e('0x33')]({'where':_0x225224[_0xec2e('0x4f')]})[_0xec2e('0x23')](function(_0x44e10b){_0x5d01c9[_0xec2e('0x33')]=_0x44e10b;if(_0xbcb41f['query'][_0xec2e('0x5b')]){_0x225224[_0xec2e('0x57')]=[{'all':!![]}];}return db['CannedAnswer'][_0xec2e('0x6f')](_0x225224);})[_0xec2e('0x23')](function(_0x5da046){_0x5d01c9[_0xec2e('0x58')]=_0x5da046;return _0x5d01c9;});}})['then'](respondWithFilteredResult(_0x520e15,_0x225224))[_0xec2e('0x2d')](handleError(_0x520e15,null));};exports[_0xec2e('0x70')]=function(_0x476dd4,_0x2d8666,_0x380d5c){return db['FaxAccount']['find']({'where':{'id':_0x476dd4[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x2d8666,null))[_0xec2e('0x23')](function(_0x54acb6){if(_0x54acb6){return _0x54acb6['removeAnswers'](_0x476dd4[_0xec2e('0x46')][_0xec2e('0x71')]);}})[_0xec2e('0x23')](respondWithStatusCode(_0x2d8666,null))['catch'](handleError(_0x2d8666,null));};exports['addInteraction']=function(_0x376d73,_0x57ead8,_0x4d50f1){return db[_0xec2e('0x72')][_0xec2e('0x61')]({'where':{'id':_0x376d73[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x57ead8,null))[_0xec2e('0x23')](function(_0x1a3171){if(_0x1a3171){return _0x1a3171[_0xec2e('0x73')](_0x376d73[_0xec2e('0x5d')][_0xec2e('0x71')],_['omit'](_0x376d73[_0xec2e('0x5d')],[_0xec2e('0x71'),'id'])||{});}})[_0xec2e('0x23')](respondWithResult(_0x57ead8,null))[_0xec2e('0x2d')](handleError(_0x57ead8,null));};exports[_0xec2e('0x74')]=function(_0x31891c,_0xadd3fd,_0x793b0f){var _0x363173={'raw':![],'where':{}};var _0x3743d4={};var _0x984a0d={'count':0x0,'rows':[]};return db[_0xec2e('0x40')][_0xec2e('0x69')]({'where':{'id':_0x31891c[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0xadd3fd,null))['then'](function(_0x2f4aa1){if(_0x2f4aa1){_0x3743d4[_0xec2e('0x45')]=_[_0xec2e('0x47')](db['FaxInteraction']['rawAttributes']);_0x3743d4[_0xec2e('0x46')]=_[_0xec2e('0x47')](_0x31891c['query']);_0x3743d4['filters']=_['intersection'](_0x3743d4[_0xec2e('0x45')],_0x3743d4['query']);_0x363173[_0xec2e('0x49')]=_['intersection'](_0x3743d4[_0xec2e('0x45')],qs[_0xec2e('0x4a')](_0x31891c['query'][_0xec2e('0x4a')]));_0x363173[_0xec2e('0x49')]=_0x363173[_0xec2e('0x49')][_0xec2e('0x4b')]?_0x363173[_0xec2e('0x49')]:_0x3743d4[_0xec2e('0x45')];if(!_0x31891c[_0xec2e('0x46')]['hasOwnProperty'](_0xec2e('0x4c'))){_0x363173[_0xec2e('0x4d')]=qs[_0xec2e('0x4d')](_0x31891c[_0xec2e('0x46')]['limit']);_0x363173[_0xec2e('0x34')]=qs[_0xec2e('0x34')](_0x31891c[_0xec2e('0x46')][_0xec2e('0x34')]);}_0x363173[_0xec2e('0x6a')]=qs[_0xec2e('0x4e')](_0x31891c[_0xec2e('0x46')][_0xec2e('0x4e')]);_0x363173[_0xec2e('0x4f')]=qs[_0xec2e('0x51')](_[_0xec2e('0x50')](_0x31891c[_0xec2e('0x46')],_0x3743d4[_0xec2e('0x51')]));_0x363173[_0xec2e('0x4f')][_0xec2e('0x6c')]=_0x2f4aa1['id'];if(_0x31891c['query'][_0xec2e('0x55')]){_0x363173['where']=_['merge'](_0x363173[_0xec2e('0x4f')],{'$or':_[_0xec2e('0x53')](_0x363173['attributes'],function(_0x3114d4){var _0x307e37={};_0x307e37[_0x3114d4]={'$like':'%'+_0x31891c['query'][_0xec2e('0x55')]+'%'};return _0x307e37;})});}_0x363173=_[_0xec2e('0x52')]({},_0x363173,_0x31891c['options']);return db[_0xec2e('0x72')][_0xec2e('0x33')]({'where':_0x363173[_0xec2e('0x4f')]})['then'](function(_0x29b29d){_0x984a0d[_0xec2e('0x33')]=_0x29b29d;if(_0x31891c[_0xec2e('0x46')][_0xec2e('0x5b')]){_0x363173[_0xec2e('0x57')]=[{'model':db[_0xec2e('0x75')],'as':_0xec2e('0x76'),'required':![]},{'model':db[_0xec2e('0x77')],'as':_0xec2e('0x78'),'attributes':[_0xec2e('0x3d'),'fullname',_0xec2e('0x79')],'required':![]},{'model':db['Tag'],'as':_0xec2e('0x7a'),'attributes':['id',_0xec2e('0x3d'),_0xec2e('0x7b')],'where':_0x31891c[_0xec2e('0x46')][_0xec2e('0x7c')]?{'id':_0x31891c[_0xec2e('0x46')]['tag']}:undefined,'required':_0x31891c[_0xec2e('0x46')][_0xec2e('0x7c')]?!![]:![]}];}return db[_0xec2e('0x72')][_0xec2e('0x6f')](_0x363173);})['then'](function(_0x363680){_0x984a0d[_0xec2e('0x58')]=_0x363680;return _0x984a0d;});}})[_0xec2e('0x23')](respondWithFilteredResult(_0xadd3fd,_0x363173))['catch'](handleError(_0xadd3fd,null));};exports['addApplications']=function(_0x5ac068,_0x5646c8){var _0x4edbe6=_0x5ac068[_0xec2e('0x59')]['id'];var _0x554e32=_0x5ac068[_0xec2e('0x5d')];var _0x17b702=0xc8;var _0x1503e1=null;return db[_0xec2e('0x7d')][_0xec2e('0x7e')]({'isolationLevel':db['sequelize'][_0xec2e('0x7f')][_0xec2e('0x80')][_0xec2e('0x81')]},function(_0x393063){return db[_0xec2e('0x40')][_0xec2e('0x69')]({'where':{'id':_0x4edbe6},'transaction':_0x393063})[_0xec2e('0x23')](function(_0x4f650f){if(_0x4f650f){return db[_0xec2e('0x82')][_0xec2e('0x3a')]({'where':{'FaxAccountId':_0x4edbe6},'transaction':_0x393063})[_0xec2e('0x23')](function(){var _0x3fadc2=_['map'](_0x554e32,function(_0x2580b0){_0x2580b0[_0xec2e('0x6c')]=_0x4edbe6;return _0x2580b0;});return db[_0xec2e('0x82')][_0xec2e('0x83')](_0x3fadc2,{'transaction':_0x393063});});}else{_0x17b702=0x194;_0x1503e1=[];}});})[_0xec2e('0x23')](function(){if(_0x17b702!==0x194){return db[_0xec2e('0x82')][_0xec2e('0x84')]({'where':{'FaxAccountId':_0x4edbe6},'order':'priority'})[_0xec2e('0x23')](function(_0xe726b6){_0x1503e1=_0xe726b6;});}})[_0xec2e('0x2d')](function(_0x530525){_0x17b702=0x1f4;logger[_0xec2e('0x29')](_0x530525[_0xec2e('0x85')]);if(_0x530525[_0xec2e('0x3d')]){delete _0x530525[_0xec2e('0x3d')];}_0x1503e1=_0x530525;})[_0xec2e('0x86')](function(){if(_0x1503e1===null){_0x5646c8[_0xec2e('0x2e')](_0x17b702);}else{if(_0x17b702===0x1f4){_0x5646c8['status'](_0x17b702)[_0xec2e('0x87')](_0x1503e1);}else{_0x5646c8[_0xec2e('0x2f')](_0x17b702)[_0xec2e('0x31')](_0x1503e1);}}});};exports[_0xec2e('0x88')]=function(_0x52da1f,_0x21db68,_0x2b02b3){var _0x10ea13={};var _0x137b11={};var _0x3dc73d;var _0x48c40c;return db[_0xec2e('0x40')][_0xec2e('0x69')]({'where':{'id':_0x52da1f['params']['id']}})['then'](handleEntityNotFound(_0x21db68,null))[_0xec2e('0x23')](function(_0x12034c){if(_0x12034c){_0x3dc73d=_0x12034c;_0x137b11[_0xec2e('0x45')]=_[_0xec2e('0x47')](db[_0xec2e('0x82')][_0xec2e('0x41')]);_0x137b11['query']=_[_0xec2e('0x47')](_0x52da1f['query']);_0x137b11[_0xec2e('0x51')]=_[_0xec2e('0x48')](_0x137b11[_0xec2e('0x45')],_0x137b11[_0xec2e('0x46')]);_0x10ea13['attributes']=_[_0xec2e('0x48')](_0x137b11[_0xec2e('0x45')],qs[_0xec2e('0x4a')](_0x52da1f[_0xec2e('0x46')][_0xec2e('0x4a')]));_0x10ea13[_0xec2e('0x49')]=_0x10ea13[_0xec2e('0x49')]['length']?_0x10ea13[_0xec2e('0x49')]:_0x137b11[_0xec2e('0x45')];_0x10ea13[_0xec2e('0x6a')]=qs[_0xec2e('0x4e')](_0x52da1f[_0xec2e('0x46')][_0xec2e('0x4e')]);_0x10ea13[_0xec2e('0x4f')]=qs[_0xec2e('0x51')](_[_0xec2e('0x50')](_0x52da1f['query'],_0x137b11[_0xec2e('0x51')]));if(_0x52da1f['query'][_0xec2e('0x55')]){_0x10ea13[_0xec2e('0x4f')]=_[_0xec2e('0x52')](_0x10ea13['where'],{'$or':_['map'](_0x10ea13['attributes'],function(_0x3b6cae){var _0x793ff8={};_0x793ff8[_0x3b6cae]={'$like':'%'+_0x52da1f['query'][_0xec2e('0x55')]+'%'};return _0x793ff8;})});}_0x10ea13=_[_0xec2e('0x52')]({},_0x10ea13,_0x52da1f[_0xec2e('0x56')]);return _0x3dc73d[_0xec2e('0x88')](_0x10ea13);}})[_0xec2e('0x23')](function(_0x1bebe6){if(_0x1bebe6){_0x48c40c=_0x1bebe6[_0xec2e('0x4b')];if(!_0x52da1f[_0xec2e('0x46')][_0xec2e('0x6e')](_0xec2e('0x4c'))){_0x10ea13[_0xec2e('0x4d')]=qs[_0xec2e('0x4d')](_0x52da1f[_0xec2e('0x46')][_0xec2e('0x4d')]);_0x10ea13[_0xec2e('0x34')]=qs[_0xec2e('0x34')](_0x52da1f[_0xec2e('0x46')][_0xec2e('0x34')]);}return _0x3dc73d['getApplications'](_0x10ea13);}})[_0xec2e('0x23')](function(_0x2b7a2d){if(_0x2b7a2d){return _0x2b7a2d?{'count':_0x48c40c,'rows':_0x2b7a2d}:null;}})[_0xec2e('0x23')](respondWithResult(_0x21db68,null))[_0xec2e('0x2d')](handleError(_0x21db68,null));};function Extension(_0x499f6e,_0xcf9c32,_0x2a45f2,_0x275c5d){this[_0xec2e('0x89')]=_0xec2e('0x8a');this[_0xec2e('0x8b')]=_0x499f6e['localstationid'];this[_0xec2e('0x8c')]=_0x275c5d;this[_0xec2e('0x43')]=_0xec2e('0x8d');this['description']=_0xec2e('0x8e');this[_0xec2e('0x6c')]=_0x499f6e['id'];this[_0xec2e('0x8f')]=_0xcf9c32;this[_0xec2e('0x90')]=_0x2a45f2;}function createExtensionsReciveFax(_0x59b2ab){var _0x55c4b9=0x1;var _0x5dfd9f=[];_0x5dfd9f['push'](new Extension(_0x59b2ab,_0x55c4b9,'',_0xec2e('0x91')));_0x55c4b9+=0x1;_0x5dfd9f['push'](new Extension(_0x59b2ab,_0x55c4b9,_0xec2e('0x92'),_0xec2e('0x93')));_0x55c4b9+=0x1;for(var _0x14422f in _0x59b2ab){if(_0x59b2ab['hasOwnProperty'](_0x14422f)&&(_0x14422f===_0xec2e('0x94')||_0x14422f==='localstationid'||_0x14422f===_0xec2e('0x95')||_0x14422f==='faxdetect'||_0x14422f==='headerinfo'||_0x14422f===_0xec2e('0x96')||_0x14422f===_0xec2e('0x97')||_0x14422f===_0xec2e('0x98')||_0x14422f===_0xec2e('0x99'))){_0x5dfd9f['push'](new Extension(_0x59b2ab,_0x55c4b9,'FAXOPT('+_0x14422f+')='+_0x59b2ab[_0x14422f],_0xec2e('0x93')));_0x55c4b9+=0x1;}}_0x5dfd9f[_0xec2e('0x9a')](new Extension(_0x59b2ab,_0x55c4b9,'6',_0xec2e('0x9b')));_0x55c4b9+=0x1;_0x5dfd9f[_0xec2e('0x9a')](new Extension(_0x59b2ab,_0x55c4b9,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d',_0xec2e('0x9c')));_0x55c4b9=0x0;return _0x5dfd9f;}exports[_0xec2e('0x9d')]=function(_0x573719,_0x1591dd,_0x4b15cb){var _0x4b5bf4;return db[_0xec2e('0x7d')]['transaction'](function(_0x4bad5e){return db[_0xec2e('0x40')][_0xec2e('0x5c')](_0x573719[_0xec2e('0x5d')],{'transaction':_0x4bad5e})[_0xec2e('0x23')](function(_0x43aef8){_0x4b5bf4=_0x43aef8[_0xec2e('0x3b')]({'plain':!![]});return db[_0xec2e('0x9e')][_0xec2e('0x83')](createExtensionsReciveFax(_0x4b5bf4),{'transaction':_0x4bad5e});});})[_0xec2e('0x23')](function(){return _0x4b5bf4;})[_0xec2e('0x23')](respondWithResult(_0x1591dd,null))[_0xec2e('0x2d')](handleError(_0x1591dd,null));};exports[_0xec2e('0x9f')]=function(_0x3bdadb,_0x3e12c6,_0x4c4eab){var _0x31c28f;return db[_0xec2e('0x7d')][_0xec2e('0x7e')](function(_0x4166ed){return db[_0xec2e('0x40')][_0xec2e('0x39')](_0x3bdadb['body'],{'where':{'id':_0x3bdadb['body']['id']},'transaction':_0x4166ed})[_0xec2e('0x23')](function(_0x361c18){return db[_0xec2e('0x9e')][_0xec2e('0x3a')]({'where':{'FaxAccountId':_0x3bdadb[_0xec2e('0x5d')]['id']},'transaction':_0x4166ed})[_0xec2e('0x23')](function(_0x153766){return db[_0xec2e('0x9e')]['bulkCreate'](createExtensionsReciveFax(_[_0xec2e('0xa0')](_0x3bdadb[_0xec2e('0x5d')],[_0xec2e('0xa1'),_0xec2e('0x44'),_0xec2e('0xa2'),_0xec2e('0xa3'),_0xec2e('0xa4'),_0xec2e('0xa5')])),{'transaction':_0x4166ed});});});})['then'](function(){return db[_0xec2e('0x40')]['findById'](_0x3bdadb[_0xec2e('0x5d')]['id']);})['then'](respondWithResult(_0x3e12c6,null))[_0xec2e('0x2d')](handleError(_0x3e12c6,null));};exports['getMessages']=function(_0xe3aaa5,_0x16768d,_0x451549){var _0x400ba1={'raw':!![],'where':{}};var _0x25f6b1={};var _0x4a332e={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0xe3aaa5[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x16768d,null))[_0xec2e('0x23')](function(_0x184909){if(_0x184909){_0x25f6b1[_0xec2e('0x45')]=_['keys'](db['FaxMessage'][_0xec2e('0x41')]);_0x25f6b1[_0xec2e('0x46')]=_[_0xec2e('0x47')](_0xe3aaa5[_0xec2e('0x46')]);_0x25f6b1[_0xec2e('0x51')]=_[_0xec2e('0x48')](_0x25f6b1[_0xec2e('0x45')],_0x25f6b1[_0xec2e('0x46')]);_0x400ba1[_0xec2e('0x49')]=_[_0xec2e('0x48')](_0x25f6b1[_0xec2e('0x45')],qs[_0xec2e('0x4a')](_0xe3aaa5[_0xec2e('0x46')]['fields']));_0x400ba1[_0xec2e('0x49')]=_0x400ba1['attributes']['length']?_0x400ba1[_0xec2e('0x49')]:_0x25f6b1[_0xec2e('0x45')];if(!_0xe3aaa5[_0xec2e('0x46')][_0xec2e('0x6e')](_0xec2e('0x4c'))){_0x400ba1[_0xec2e('0x4d')]=qs[_0xec2e('0x4d')](_0xe3aaa5['query']['limit']);_0x400ba1[_0xec2e('0x34')]=qs[_0xec2e('0x34')](_0xe3aaa5[_0xec2e('0x46')][_0xec2e('0x34')]);}_0x400ba1[_0xec2e('0x6a')]=qs[_0xec2e('0x4e')](_0xe3aaa5[_0xec2e('0x46')][_0xec2e('0x4e')]);_0x400ba1[_0xec2e('0x4f')]=qs[_0xec2e('0x51')](_[_0xec2e('0x50')](_0xe3aaa5[_0xec2e('0x46')],_0x25f6b1['filters']));_0x400ba1[_0xec2e('0x4f')][_0xec2e('0x6c')]=_0x184909['id'];if(_0xe3aaa5[_0xec2e('0x46')]['filter']){_0x400ba1[_0xec2e('0x4f')]=_['merge'](_0x400ba1[_0xec2e('0x4f')],{'$or':_[_0xec2e('0x53')](_0x400ba1[_0xec2e('0x49')],function(_0xaca5fa){var _0x6e40c={};_0x6e40c[_0xaca5fa]={'$like':'%'+_0xe3aaa5[_0xec2e('0x46')]['filter']+'%'};return _0x6e40c;})});}if(_0xe3aaa5[_0xec2e('0x46')][_0xec2e('0xa6')]){var _0x4d67e7=_0xe3aaa5['query'][_0xec2e('0xa6')][_0xec2e('0xa7')](',');var _0x5a4d61={};_0x5a4d61[_0x4d67e7[0x0]]={'$gte':moment(_0x4d67e7[0x1])[_0xec2e('0xa8')](_0xec2e('0xa9'))};_0x400ba1['where']=_[_0xec2e('0x52')](_0x400ba1[_0xec2e('0x4f')],_0x5a4d61);}_0x400ba1=_[_0xec2e('0x52')]({},_0x400ba1,_0xe3aaa5[_0xec2e('0x56')]);return db[_0xec2e('0xaa')][_0xec2e('0x33')]({'where':_0x400ba1[_0xec2e('0x4f')]})[_0xec2e('0x23')](function(_0x490f4f){_0x4a332e['count']=_0x490f4f;if(_0xe3aaa5[_0xec2e('0x46')]['includeAll']){_0x400ba1['include']=[{'all':!![]}];}return db[_0xec2e('0xaa')][_0xec2e('0x6f')](_0x400ba1);})[_0xec2e('0x23')](function(_0x480520){_0x4a332e[_0xec2e('0x58')]=_0x480520;return _0x4a332e;});}})['then'](respondWithFilteredResult(_0x16768d,_0x400ba1))['catch'](handleError(_0x16768d,null));};exports['send']=function(_0x5d3305,_0x3ce680,_0x5f52c2){var _0xc91263,_0x109a81={},_0x296c89;if(_0x5d3305[_0xec2e('0x5d')]['to']){_0x296c89=_0x5d3305[_0xec2e('0x5d')]['to'][0x0];}return db[_0xec2e('0x40')]['find']({'where':{'id':_0x5d3305[_0xec2e('0x59')]['id']},'include':[{'model':db['CmList'],'as':_0xec2e('0xab'),'include':[{'model':db[_0xec2e('0x75')],'as':_0xec2e('0xac'),'where':{'fax':_0x296c89},'limit':0x1,'order':[['updatedAt',_0xec2e('0xad')]]}]}]})[_0xec2e('0x23')](handleEntityNotFound(_0x3ce680,null))[_0xec2e('0x23')](function(_0x2b90de){_0xc91263=_0x2b90de;if(_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')]&&_0x5d3305[_0xec2e('0x5d')]['attachments'][_0xec2e('0x4b')]){for(var _0x34bf0d=0x0;_0x34bf0d<_0x5d3305[_0xec2e('0x5d')]['attachments']['length'];_0x34bf0d+=0x1){_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][_0x34bf0d]={'filename':_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][_0x34bf0d][_0xec2e('0x3d')],'id':_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][_0x34bf0d]['id'],'path':path[_0xec2e('0xaf')](config[_0xec2e('0xb0')],_0xec2e('0xb1'),_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][_0x34bf0d]['basename'])};}}return respondWithRpcPromise(_0xec2e('0xb2'),_0xec2e('0xb2'),{'FaxAccountId':_['isNil'](_0x5d3305[_0xec2e('0x59')]['id'])?undefined:_0x5d3305[_0xec2e('0x59')]['id'],'path':_[_0xec2e('0xb3')](_0x5d3305[_0xec2e('0x5d')]['attachments'][0x0]['path'])?undefined:_0x5d3305[_0xec2e('0x5d')]['attachments'][0x0][_0xec2e('0x7')],'fax':_[_0xec2e('0xb3')](_0x5d3305[_0xec2e('0x5d')]['to'][0x0])?undefined:_0x5d3305[_0xec2e('0x5d')]['to'][0x0]},client9002);})[_0xec2e('0x23')](function(){if(_0xc91263){if(_[_0xec2e('0xb3')](_0x5d3305[_0xec2e('0x5d')]['from'])){_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xb4')]=util['format'](_0xec2e('0xb5'),_0xc91263[_0xec2e('0x3d')],_0xc91263[_0xec2e('0xb6')]);}if(_0xc91263[_0xec2e('0xab')]){if(_0xc91263[_0xec2e('0xab')]['Contacts'][_0xec2e('0x4b')]){return _0xc91263[_0xec2e('0xab')]['Contacts'][0x0];}else{return db[_0xec2e('0x75')][_0xec2e('0x5c')](_['defaults'](_0x5d3305['body'],{'firstName':_0x5d3305[_0xec2e('0x5d')]['to'][0x0],'phone':_0x5d3305['body']['to'][0x0],'fax':_0x5d3305[_0xec2e('0x5d')]['to'][0x0],'ListId':_0xc91263['ListId']}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xec2e('0xb7'));}})[_0xec2e('0x23')](function(_0x21ba46){if(_0x21ba46){return db[_0xec2e('0x72')][_0xec2e('0x61')]({'where':{'ContactId':_0x21ba46['id'],'closed':![],'FaxAccountId':_0xc91263['id']}})[_0xec2e('0x23')](function(_0x3e135d){if(_0x3e135d){return[_0x3e135d,![]];}return db['FaxInteraction'][_0xec2e('0x5c')]({'UserId':_0x5d3305[_0xec2e('0x5e')]['id'],'ContactId':_0x21ba46['id'],'FaxAccountId':_0xc91263['id'],'fax':_0x5d3305['body']['to'][0x0],'firstMsgDirection':_0xec2e('0xb8'),'Messages':[_[_0xec2e('0x52')](_0x5d3305['body'],{'read':![],'body':_0x5d3305['body'][_0xec2e('0xae')][0x0][_0xec2e('0xb9')],'FaxAccountId':_0xc91263['id'],'UserId':_0x5d3305['user']['id'],'ContactId':_0x21ba46['id'],'AttachmentId':_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][0x0]['id']})]},{'include':[{'model':db[_0xec2e('0xaa')],'as':_0xec2e('0xba')}]})['then'](function(_0x598200){return[_0x598200,!![]];});});}else{throw new Error(_0xec2e('0xbb'));}})[_0xec2e('0xbc')](function(_0x1ef758,_0x3afea3){if(_0x3afea3){return _0x1ef758;}return db[_0xec2e('0xaa')][_0xec2e('0x5c')]({'direction':_0xec2e('0xb8'),'read':![],'body':_0x5d3305[_0xec2e('0x5d')]['attachments'][0x0][_0xec2e('0xb9')],'FaxAccountId':_0xc91263['id'],'FaxInteractionId':_0x1ef758['id'],'UserId':_0x5d3305['user']['id'],'ContactId':_0x1ef758[_0xec2e('0xbd')],'AttachmentId':_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][0x0]['id']})[_0xec2e('0x23')](function(_0x2240b6){_0x1ef758[_0xec2e('0xbe')]['Messages']=[];_0x1ef758['dataValues'][_0xec2e('0xba')][_0xec2e('0x9a')](_0x2240b6[_0xec2e('0xbe')]);return _0x1ef758;});})[_0xec2e('0x23')](function(_0x1b2146){respondWithRpcPromise(_0xec2e('0xbf'),_0xec2e('0xbf'),{'FaxAccountId':_[_0xec2e('0xb3')](_0x5d3305['params']['id'])?undefined:_0x5d3305[_0xec2e('0x59')]['id'],'path':_[_0xec2e('0xb3')](_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][0x0][_0xec2e('0x7')])?undefined:_0x5d3305[_0xec2e('0x5d')][_0xec2e('0xae')][0x0][_0xec2e('0x7')],'fax':_[_0xec2e('0xb3')](_0x5d3305['body']['to'][0x0])?undefined:_0x5d3305[_0xec2e('0x5d')]['to'][0x0],'AttachmentId':_0x5d3305['body'][_0xec2e('0xae')][0x0]['id']},client9002)[_0xec2e('0x23')](function(_0x451249){logger[_0xec2e('0x24')]('SendFaxRpc,\x20%s',_0x451249);})[_0xec2e('0x2d')](function(_0x25a9a7){logger[_0xec2e('0x24')]('SendFaxRpc,\x20%s',_0x25a9a7);});return _0x1b2146;})[_0xec2e('0x23')](respondWithResult(_0x3ce680,null))[_0xec2e('0x2d')](handleError(_0x3ce680,null));};exports[_0xec2e('0xc0')]=function(_0x279e26,_0xafcda3,_0x332b1e){return db[_0xec2e('0x40')][_0xec2e('0x61')]({'where':{'id':_0x279e26[_0xec2e('0x59')]['id']}})['then'](handleEntityNotFound(_0xafcda3,null))[_0xec2e('0x23')](function(_0x1dfcc8){if(_0x1dfcc8){return _0x1dfcc8[_0xec2e('0xc0')](_0x279e26[_0xec2e('0x5d')][_0xec2e('0x71')],_['omit'](_0x279e26[_0xec2e('0x5d')],[_0xec2e('0x71'),'id'])||{})['spread'](function(_0x4356ef){for(var _0x1252ec=0x0;_0x1252ec<_0x279e26['body']['ids'][_0xec2e('0x4b')];_0x1252ec+=0x1){socket[_0xec2e('0xc1')](_0xec2e('0xc2'),{'UserId':Number(_0x279e26[_0xec2e('0x5d')][_0xec2e('0x71')][_0x1252ec]),'FaxAccountId':Number(_0x279e26['params']['id'])});}return _0x4356ef;});}})[_0xec2e('0x23')](respondWithResult(_0xafcda3,null))[_0xec2e('0x2d')](handleError(_0xafcda3,null));};exports[_0xec2e('0xc3')]=function(_0x432efe,_0x45744e,_0x478918){return db[_0xec2e('0x40')][_0xec2e('0x61')]({'where':{'id':_0x432efe['params']['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x45744e,null))[_0xec2e('0x23')](function(_0x8e1b99){if(_0x8e1b99){return _0x8e1b99[_0xec2e('0xc3')](_0x432efe['query'][_0xec2e('0x71')])[_0xec2e('0x23')](function(){if(_[_0xec2e('0xc4')](_0x432efe[_0xec2e('0x46')][_0xec2e('0x71')])){for(var _0x43dc46=0x0;_0x43dc46<_0x432efe[_0xec2e('0x46')][_0xec2e('0x71')]['length'];_0x43dc46+=0x1){socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x432efe['query'][_0xec2e('0x71')][_0x43dc46]),'FaxAccountId':Number(_0x432efe[_0xec2e('0x59')]['id'])});}}else{socket['emit'](_0xec2e('0xc5'),{'UserId':Number(_0x432efe[_0xec2e('0x46')][_0xec2e('0x71')]),'FaxAccountId':Number(_0x432efe[_0xec2e('0x59')]['id'])});}});}})[_0xec2e('0x23')](respondWithStatusCode(_0x45744e,null))[_0xec2e('0x2d')](handleError(_0x45744e,null));};exports[_0xec2e('0xc6')]=function(_0x360f8d,_0x58520c,_0x19cba2){var _0xd970c9={};var _0x2f3402={};var _0x986b7b;var _0x402fb9;return db[_0xec2e('0x40')][_0xec2e('0x69')]({'where':{'id':_0x360f8d[_0xec2e('0x59')]['id']}})[_0xec2e('0x23')](handleEntityNotFound(_0x58520c,null))[_0xec2e('0x23')](function(_0x42c5a6){if(_0x42c5a6){_0x986b7b=_0x42c5a6;_0x2f3402[_0xec2e('0x45')]=_[_0xec2e('0x47')](db['User']['rawAttributes']);_0x2f3402[_0xec2e('0x46')]=_[_0xec2e('0x47')](_0x360f8d['query']);_0x2f3402[_0xec2e('0x51')]=_['intersection'](_0x2f3402[_0xec2e('0x45')],_0x2f3402[_0xec2e('0x46')]);_0xd970c9['attributes']=_['intersection'](_0x2f3402['model'],qs[_0xec2e('0x4a')](_0x360f8d[_0xec2e('0x46')]['fields']));_0xd970c9[_0xec2e('0x49')]=_0xd970c9[_0xec2e('0x49')][_0xec2e('0x4b')]?_0xd970c9[_0xec2e('0x49')]:_0x2f3402[_0xec2e('0x45')];_0xd970c9[_0xec2e('0x6a')]=qs['sort'](_0x360f8d[_0xec2e('0x46')][_0xec2e('0x4e')]);_0xd970c9[_0xec2e('0x4f')]=qs[_0xec2e('0x51')](_[_0xec2e('0x50')](_0x360f8d[_0xec2e('0x46')],_0x2f3402[_0xec2e('0x51')]));if(_0x360f8d[_0xec2e('0x46')][_0xec2e('0x55')]){_0xd970c9[_0xec2e('0x4f')]=_['merge'](_0xd970c9['where'],{'$or':_[_0xec2e('0x53')](_0xd970c9[_0xec2e('0x49')],function(_0xdba560){var _0x46728f={};_0x46728f[_0xdba560]={'$like':'%'+_0x360f8d[_0xec2e('0x46')][_0xec2e('0x55')]+'%'};return _0x46728f;})});}_0xd970c9=_[_0xec2e('0x52')]({},_0xd970c9,_0x360f8d[_0xec2e('0x56')]);return _0x986b7b[_0xec2e('0xc6')](_0xd970c9);}})[_0xec2e('0x23')](function(_0x16011b){if(_0x16011b){_0x402fb9=_0x16011b[_0xec2e('0x4b')];if(!_0x360f8d['query'][_0xec2e('0x6e')](_0xec2e('0x4c'))){_0xd970c9[_0xec2e('0x4d')]=qs[_0xec2e('0x4d')](_0x360f8d[_0xec2e('0x46')]['limit']);_0xd970c9[_0xec2e('0x34')]=qs[_0xec2e('0x34')](_0x360f8d[_0xec2e('0x46')][_0xec2e('0x34')]);}return _0x986b7b[_0xec2e('0xc6')](_0xd970c9);}})[_0xec2e('0x23')](function(_0x3c290b){if(_0x3c290b){return _0x3c290b?{'count':_0x402fb9,'rows':_0x3c290b}:null;}})[_0xec2e('0x23')](respondWithResult(_0x58520c,null))[_0xec2e('0x2d')](handleError(_0x58520c,null));};
\ No newline at end of file
+var _0xd125=['create','body','user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','nolimit','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','User','fullname','internal','Tag','Tags','tag','sequelize','Transaction','ISOLATION_LEVELS','FaxApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','exten','localstationid','app','system','Fax\x20Extension','appdata','push','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','modem','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','transaction','VoiceExtension','omit','tech','createdAt','TrunkId','findById','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','updatedAt','attachments','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','ListId','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','FaxMessage','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','FaxAccount','include','findAll','rows','show','params','includeAll','options','find'];(function(_0x9be28f,_0x231334){var _0xa9f52d=function(_0x239dad){while(--_0x239dad){_0x9be28f['push'](_0x9be28f['shift']());}};_0xa9f52d(++_0x231334);}(_0xd125,0x126));var _0x5d12=function(_0x56dfe1,_0x39787f){_0x56dfe1=_0x56dfe1-0x0;var _0x24e8fa=_0xd125[_0x56dfe1];return _0x24e8fa;};'use strict';var emlformat=require(_0x5d12('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5d12('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5d12('0x2'));var moment=require(_0x5d12('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5d12('0x4'));var util=require(_0x5d12('0x5'));var path=require(_0x5d12('0x6'));var sox=require(_0x5d12('0x7'));var csv=require(_0x5d12('0x8'));var ejs=require(_0x5d12('0x9'));var fs=require('fs');var fs_extra=require(_0x5d12('0xa'));var _=require(_0x5d12('0xb'));var squel=require(_0x5d12('0xc'));var crypto=require(_0x5d12('0xd'));var jsforce=require(_0x5d12('0xe'));var deskjs=require(_0x5d12('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5d12('0x10'));var Papa=require('papaparse');var Redis=require(_0x5d12('0x11'));var authService=require(_0x5d12('0x12'));var qs=require(_0x5d12('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5d12('0x14'))(_0x5d12('0x15'));var utils=require(_0x5d12('0x16'));var config=require(_0x5d12('0x17'));var licenseUtil=require(_0x5d12('0x18'));var db=require(_0x5d12('0x19'))['db'];config[_0x5d12('0x1a')]=_[_0x5d12('0x1b')](config[_0x5d12('0x1a')],{'host':_0x5d12('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5d12('0x1a')]));require('./faxAccount.socket')[_0x5d12('0x1d')](socket);var jayson=require(_0x5d12('0x1e'));var client=jayson[_0x5d12('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x5d12('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x262c32,_0x2d2f44,_0x2e7cc4,_0x65d78e){return new BPromise(function(_0x4cc240,_0x25d265){var _0x2c4f4=_0x65d78e||client;return _0x2c4f4[_0x5d12('0x20')](_0x262c32,_0x2e7cc4)[_0x5d12('0x21')](function(_0x592e73){logger[_0x5d12('0x22')](_0x5d12('0x23'),_0x2d2f44,_0x5d12('0x24'));logger[_0x5d12('0x25')](_0x5d12('0x26'),_0x2d2f44,'request\x20sent',JSON[_0x5d12('0x27')](_0x592e73));if(_0x592e73['error']){if(_0x592e73[_0x5d12('0x28')][_0x5d12('0x29')]===0x1f4){logger['error'](_0x5d12('0x23'),_0x2d2f44,_0x592e73['error'][_0x5d12('0x2a')]);return _0x25d265(_0x592e73[_0x5d12('0x28')][_0x5d12('0x2a')]);}logger[_0x5d12('0x28')](_0x5d12('0x23'),_0x2d2f44,_0x592e73[_0x5d12('0x28')][_0x5d12('0x2a')]);return _0x4cc240(_0x592e73[_0x5d12('0x28')][_0x5d12('0x2a')]);}else{logger[_0x5d12('0x22')](_0x5d12('0x23'),_0x2d2f44,_0x5d12('0x24'));_0x4cc240(_0x592e73[_0x5d12('0x2b')][_0x5d12('0x2a')]);}})[_0x5d12('0x2c')](function(_0x7c23f6){logger[_0x5d12('0x28')](_0x5d12('0x23'),_0x2d2f44,_0x7c23f6);_0x25d265(_0x7c23f6);});});}function respondWithStatusCode(_0x2cc45e,_0x4e9b25){_0x4e9b25=_0x4e9b25||0xcc;return function(_0x537962){if(_0x537962){return _0x2cc45e[_0x5d12('0x2d')](_0x4e9b25);}return _0x2cc45e[_0x5d12('0x2e')](_0x4e9b25)[_0x5d12('0x2f')]();};}function respondWithResult(_0x1ae1f6,_0x3c7e34){_0x3c7e34=_0x3c7e34||0xc8;return function(_0x4f6235){if(_0x4f6235){return _0x1ae1f6[_0x5d12('0x2e')](_0x3c7e34)[_0x5d12('0x30')](_0x4f6235);}};}function respondWithFilteredResult(_0x5b91c5,_0x2e2519){return function(_0x3a7891){if(_0x3a7891){var _0x17c5af=typeof _0x2e2519[_0x5d12('0x31')]===_0x5d12('0x32')&&typeof _0x2e2519['limit']===_0x5d12('0x32');var _0x563af0=_0x3a7891[_0x5d12('0x33')];var _0x4a33de=_0x17c5af?0x0:_0x2e2519[_0x5d12('0x31')];var _0x1e221e=_0x17c5af?_0x3a7891['count']:_0x2e2519['offset']+_0x2e2519[_0x5d12('0x34')];var _0x1b81b3;if(_0x1e221e>=_0x563af0){_0x1e221e=_0x563af0;_0x1b81b3=0xc8;}else{_0x1b81b3=0xce;}_0x5b91c5[_0x5d12('0x2e')](_0x1b81b3);return _0x5b91c5[_0x5d12('0x35')](_0x5d12('0x36'),_0x4a33de+'-'+_0x1e221e+'/'+_0x563af0)[_0x5d12('0x30')](_0x3a7891);}return null;};}function patchUpdates(_0x33ef69){return function(_0x44b3eb){try{jsonpatch['apply'](_0x44b3eb,_0x33ef69,!![]);}catch(_0x444eb8){return BPromise[_0x5d12('0x37')](_0x444eb8);}return _0x44b3eb['save']();};}function saveUpdates(_0x54bf2b,_0x542ebf){return function(_0x2ba042){if(_0x2ba042){return _0x2ba042[_0x5d12('0x38')](_0x54bf2b)[_0x5d12('0x21')](function(_0x40da10){return _0x40da10;});}return null;};}function removeEntity(_0x339b8b,_0x210855){return function(_0x4b291b){if(_0x4b291b){return _0x4b291b[_0x5d12('0x39')]()['then'](function(){var _0x576767=_0x4b291b[_0x5d12('0x3a')]({'plain':!![]});var _0x4f4ee8=_0x5d12('0x3b');return db[_0x5d12('0x3c')][_0x5d12('0x39')]({'where':{'type':_0x4f4ee8,'resourceId':_0x576767['id']}})['then'](function(){return _0x4b291b;});})[_0x5d12('0x21')](function(){_0x339b8b[_0x5d12('0x2e')](0xcc)[_0x5d12('0x2f')]();});}};}function handleEntityNotFound(_0x5e8ed1,_0x300512){return function(_0x5d47f0){if(!_0x5d47f0){_0x5e8ed1[_0x5d12('0x2d')](0x194);}return _0x5d47f0;};}function handleError(_0x3233db,_0x1fedfc){_0x1fedfc=_0x1fedfc||0x1f4;return function(_0x11a058){logger['error'](_0x11a058[_0x5d12('0x3d')]);if(_0x11a058[_0x5d12('0x3e')]){delete _0x11a058['name'];}_0x3233db['status'](_0x1fedfc)['send'](_0x11a058);};}exports[_0x5d12('0x3f')]=function(_0x5ae6b4,_0x9b09f0){var _0x788c7={'include':[{'model':db[_0x5d12('0x40')],'as':_0x5d12('0x41')}]},_0x4e5c88={},_0x2c0647={'count':0x0,'rows':[]};var _0x1a1f59=_[_0x5d12('0x42')](db['FaxAccount'][_0x5d12('0x43')],function(_0x5be891){return{'name':_0x5be891[_0x5d12('0x44')],'type':_0x5be891[_0x5d12('0x45')][_0x5d12('0x46')]};});_0x4e5c88[_0x5d12('0x47')]=_['map'](_0x1a1f59,_0x5d12('0x3e'));_0x4e5c88[_0x5d12('0x48')]=_[_0x5d12('0x49')](_0x5ae6b4[_0x5d12('0x48')]);_0x4e5c88[_0x5d12('0x4a')]=_[_0x5d12('0x4b')](_0x4e5c88[_0x5d12('0x47')],_0x4e5c88[_0x5d12('0x48')]);_0x788c7[_0x5d12('0x4c')]=_['intersection'](_0x4e5c88[_0x5d12('0x47')],qs[_0x5d12('0x4d')](_0x5ae6b4[_0x5d12('0x48')]['fields']));_0x788c7[_0x5d12('0x4c')]=_0x788c7[_0x5d12('0x4c')][_0x5d12('0x4e')]?_0x788c7[_0x5d12('0x4c')]:_0x4e5c88[_0x5d12('0x47')];if(!_0x5ae6b4[_0x5d12('0x48')][_0x5d12('0x4f')]('nolimit')){_0x788c7[_0x5d12('0x34')]=qs['limit'](_0x5ae6b4[_0x5d12('0x48')][_0x5d12('0x34')]);_0x788c7['offset']=qs[_0x5d12('0x31')](_0x5ae6b4['query'][_0x5d12('0x31')]);}_0x788c7[_0x5d12('0x50')]=qs['sort'](_0x5ae6b4['query'][_0x5d12('0x51')]);_0x788c7[_0x5d12('0x52')]=qs['filters'](_[_0x5d12('0x53')](_0x5ae6b4[_0x5d12('0x48')],_0x4e5c88[_0x5d12('0x4a')]),_0x1a1f59);if(_0x5ae6b4[_0x5d12('0x48')][_0x5d12('0x54')]){_0x788c7[_0x5d12('0x52')]=_[_0x5d12('0x55')](_0x788c7['where'],{'$or':_[_0x5d12('0x42')](_0x1a1f59,function(_0x19e7ea){if(_0x19e7ea[_0x5d12('0x45')]!==_0x5d12('0x56')){var _0x13d574={};_0x13d574[_0x19e7ea[_0x5d12('0x3e')]]={'$like':'%'+_0x5ae6b4['query'][_0x5d12('0x54')]+'%'};return _0x13d574;}})});}_0x788c7=_[_0x5d12('0x55')]({},_0x788c7,_0x5ae6b4['options']);var _0x3a7b13={'where':_0x788c7['where']};return db[_0x5d12('0x57')][_0x5d12('0x33')](_0x3a7b13)[_0x5d12('0x21')](function(_0x1deae5){_0x2c0647[_0x5d12('0x33')]=_0x1deae5;if(_0x5ae6b4[_0x5d12('0x48')]['includeAll']){_0x788c7[_0x5d12('0x58')]=[{'all':!![]}];}return db[_0x5d12('0x57')][_0x5d12('0x59')](_0x788c7);})[_0x5d12('0x21')](function(_0xab9c14){_0x2c0647[_0x5d12('0x5a')]=_0xab9c14;return _0x2c0647;})[_0x5d12('0x21')](respondWithFilteredResult(_0x9b09f0,_0x788c7))['catch'](handleError(_0x9b09f0,null));};exports[_0x5d12('0x5b')]=function(_0x48b07e,_0x36a2aa){var _0x58fb9b={'raw':![],'where':{'id':_0x48b07e[_0x5d12('0x5c')]['id']},'include':[{'model':db[_0x5d12('0x40')],'as':_0x5d12('0x41')}]},_0x55e2c8={};_0x55e2c8[_0x5d12('0x47')]=_['keys'](db[_0x5d12('0x57')][_0x5d12('0x43')]);_0x55e2c8[_0x5d12('0x48')]=_[_0x5d12('0x49')](_0x48b07e[_0x5d12('0x48')]);_0x55e2c8['filters']=_['intersection'](_0x55e2c8['model'],_0x55e2c8[_0x5d12('0x48')]);_0x58fb9b[_0x5d12('0x4c')]=_[_0x5d12('0x4b')](_0x55e2c8[_0x5d12('0x47')],qs['fields'](_0x48b07e[_0x5d12('0x48')][_0x5d12('0x4d')]));_0x58fb9b['attributes']=_0x58fb9b[_0x5d12('0x4c')][_0x5d12('0x4e')]?_0x58fb9b[_0x5d12('0x4c')]:_0x55e2c8[_0x5d12('0x47')];if(_0x48b07e[_0x5d12('0x48')][_0x5d12('0x5d')]){_0x58fb9b[_0x5d12('0x58')]=[{'all':!![]}];}_0x58fb9b=_[_0x5d12('0x55')]({},_0x58fb9b,_0x48b07e[_0x5d12('0x5e')]);return db[_0x5d12('0x57')][_0x5d12('0x5f')](_0x58fb9b)['then'](handleEntityNotFound(_0x36a2aa,null))[_0x5d12('0x21')](respondWithResult(_0x36a2aa,null))['catch'](handleError(_0x36a2aa,null));};exports['create']=function(_0x1e7164,_0x323364){return db[_0x5d12('0x57')][_0x5d12('0x60')](_0x1e7164[_0x5d12('0x61')],{})[_0x5d12('0x21')](function(_0xec5702){var _0x2c33f3=_0x1e7164[_0x5d12('0x62')][_0x5d12('0x3a')]({'plain':!![]});if(!_0x2c33f3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c33f3[_0x5d12('0x63')]===_0x5d12('0x62')){var _0x1c7a8b=_0xec5702['get']({'plain':!![]});var _0x1bb377='FaxAccounts';return db['UserProfileSection'][_0x5d12('0x5f')]({'where':{'name':_0x1bb377,'userProfileId':_0x2c33f3['userProfileId']},'raw':!![]})[_0x5d12('0x21')](function(_0x38ed60){if(_0x38ed60&&_0x38ed60[_0x5d12('0x64')]===0x0){return db[_0x5d12('0x3c')][_0x5d12('0x60')]({'name':_0x1c7a8b[_0x5d12('0x3e')],'resourceId':_0x1c7a8b['id'],'type':_0x38ed60[_0x5d12('0x3e')],'sectionId':_0x38ed60['id']},{})['then'](function(){return _0xec5702;});}else{return _0xec5702;}})[_0x5d12('0x2c')](function(_0x23d7e5){logger[_0x5d12('0x28')](_0x5d12('0x65'),_0x23d7e5);throw _0x23d7e5;});}return _0xec5702;})[_0x5d12('0x21')](respondWithResult(_0x323364,0xc9))['catch'](handleError(_0x323364,null));};exports[_0x5d12('0x38')]=function(_0x3fab0c,_0x2295e0){if(_0x3fab0c['body']['id']){delete _0x3fab0c[_0x5d12('0x61')]['id'];}return db[_0x5d12('0x57')]['find']({'where':{'id':_0x3fab0c[_0x5d12('0x5c')]['id']},'include':[{'model':db[_0x5d12('0x40')],'as':'mandatoryDispositionPause'}]})[_0x5d12('0x21')](handleEntityNotFound(_0x2295e0,null))['then'](saveUpdates(_0x3fab0c[_0x5d12('0x61')],null))['then'](respondWithResult(_0x2295e0,null))[_0x5d12('0x2c')](handleError(_0x2295e0,null));};exports[_0x5d12('0x39')]=function(_0x2f767d,_0x454611){return db[_0x5d12('0x57')][_0x5d12('0x5f')]({'where':{'id':_0x2f767d[_0x5d12('0x5c')]['id']}})['then'](handleEntityNotFound(_0x454611,null))[_0x5d12('0x21')](removeEntity(_0x454611,null))[_0x5d12('0x2c')](handleError(_0x454611,null));};exports[_0x5d12('0x66')]=function(_0x4b3cd5,_0x49354e){return db[_0x5d12('0x57')][_0x5d12('0x66')]()['then'](respondWithResult(_0x49354e,null))[_0x5d12('0x2c')](handleError(_0x49354e,null));};exports[_0x5d12('0x67')]=function(_0xe3ea31,_0x36175e,_0x22250c){if(_0xe3ea31[_0x5d12('0x61')]['id']){delete _0xe3ea31['body']['id'];}return db[_0x5d12('0x57')][_0x5d12('0x5f')]({'where':{'id':_0xe3ea31[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x36175e,null))[_0x5d12('0x21')](function(_0x3e91d1){if(_0x3e91d1){_0xe3ea31[_0x5d12('0x61')][_0x5d12('0x68')]=_0x3e91d1['id'];return db[_0x5d12('0x69')][_0x5d12('0x60')](_0xe3ea31[_0x5d12('0x61')]);}})[_0x5d12('0x21')](respondWithResult(_0x36175e,null))[_0x5d12('0x2c')](handleError(_0x36175e,null));};exports[_0x5d12('0x6a')]=function(_0xf4fe8,_0x14017d,_0x189160){var _0x1f04bc={'raw':![],'where':{}};var _0x2cfe70={};var _0xa53293={'count':0x0,'rows':[]};return db[_0x5d12('0x57')][_0x5d12('0x6b')]({'where':{'id':_0xf4fe8[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x14017d,null))[_0x5d12('0x21')](function(_0x11b2f5){if(_0x11b2f5){_0x2cfe70['model']=_[_0x5d12('0x49')](db[_0x5d12('0x69')][_0x5d12('0x43')]);_0x2cfe70['query']=_[_0x5d12('0x49')](_0xf4fe8['query']);_0x2cfe70[_0x5d12('0x4a')]=_[_0x5d12('0x4b')](_0x2cfe70[_0x5d12('0x47')],_0x2cfe70['query']);_0x1f04bc[_0x5d12('0x4c')]=_[_0x5d12('0x4b')](_0x2cfe70['model'],qs['fields'](_0xf4fe8[_0x5d12('0x48')][_0x5d12('0x4d')]));_0x1f04bc['attributes']=_0x1f04bc[_0x5d12('0x4c')][_0x5d12('0x4e')]?_0x1f04bc['attributes']:_0x2cfe70['model'];if(!_0xf4fe8['query'][_0x5d12('0x4f')](_0x5d12('0x6c'))){_0x1f04bc[_0x5d12('0x34')]=qs['limit'](_0xf4fe8['query'][_0x5d12('0x34')]);_0x1f04bc['offset']=qs[_0x5d12('0x31')](_0xf4fe8[_0x5d12('0x48')][_0x5d12('0x31')]);}_0x1f04bc['order']=qs[_0x5d12('0x51')](_0xf4fe8[_0x5d12('0x48')][_0x5d12('0x51')]);_0x1f04bc[_0x5d12('0x52')]=qs[_0x5d12('0x4a')](_[_0x5d12('0x53')](_0xf4fe8[_0x5d12('0x48')],_0x2cfe70[_0x5d12('0x4a')]));_0x1f04bc[_0x5d12('0x52')][_0x5d12('0x68')]=_0x11b2f5['id'];if(_0xf4fe8[_0x5d12('0x48')][_0x5d12('0x54')]){_0x1f04bc[_0x5d12('0x52')]=_[_0x5d12('0x55')](_0x1f04bc[_0x5d12('0x52')],{'$or':_[_0x5d12('0x42')](_0x1f04bc['attributes'],function(_0x52984b){var _0x433358={};_0x433358[_0x52984b]={'$like':'%'+_0xf4fe8[_0x5d12('0x48')][_0x5d12('0x54')]+'%'};return _0x433358;})});}_0x1f04bc=_[_0x5d12('0x55')]({},_0x1f04bc,_0xf4fe8['options']);return db[_0x5d12('0x69')][_0x5d12('0x33')]({'where':_0x1f04bc[_0x5d12('0x52')]})[_0x5d12('0x21')](function(_0x40e81b){_0xa53293[_0x5d12('0x33')]=_0x40e81b;if(_0xf4fe8['query'][_0x5d12('0x5d')]){_0x1f04bc[_0x5d12('0x58')]=[{'all':!![]}];}return db[_0x5d12('0x69')][_0x5d12('0x59')](_0x1f04bc);})[_0x5d12('0x21')](function(_0x542b55){_0xa53293[_0x5d12('0x5a')]=_0x542b55;return _0xa53293;});}})[_0x5d12('0x21')](respondWithFilteredResult(_0x14017d,_0x1f04bc))[_0x5d12('0x2c')](handleError(_0x14017d,null));};exports[_0x5d12('0x6d')]=function(_0x185290,_0xc79fe8,_0x4a7433){return db[_0x5d12('0x57')][_0x5d12('0x5f')]({'where':{'id':_0x185290['params']['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0xc79fe8,null))[_0x5d12('0x21')](function(_0x3f51d2){if(_0x3f51d2){return _0x3f51d2[_0x5d12('0x6d')](_0x185290[_0x5d12('0x48')][_0x5d12('0x6e')]);}})[_0x5d12('0x21')](respondWithStatusCode(_0xc79fe8,null))[_0x5d12('0x2c')](handleError(_0xc79fe8,null));};exports['addAnswer']=function(_0x1215e6,_0x56217a,_0x4fa6ea){if(_0x1215e6[_0x5d12('0x61')]['id']){delete _0x1215e6[_0x5d12('0x61')]['id'];}return db[_0x5d12('0x57')]['find']({'where':{'id':_0x1215e6[_0x5d12('0x5c')]['id']}})['then'](handleEntityNotFound(_0x56217a,null))[_0x5d12('0x21')](function(_0x390f91){if(_0x390f91){_0x1215e6['body'][_0x5d12('0x68')]=_0x390f91['id'];return db[_0x5d12('0x6f')][_0x5d12('0x60')](_0x1215e6[_0x5d12('0x61')]);}})[_0x5d12('0x21')](respondWithResult(_0x56217a,null))['catch'](handleError(_0x56217a,null));};exports[_0x5d12('0x70')]=function(_0x5afe82,_0x2abe19,_0x46ddc3){var _0x550174={'raw':![],'where':{}};var _0x21defd={};var _0x2428e2={'count':0x0,'rows':[]};return db[_0x5d12('0x57')][_0x5d12('0x6b')]({'where':{'id':_0x5afe82[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x2abe19,null))[_0x5d12('0x21')](function(_0x56d20f){if(_0x56d20f){_0x21defd[_0x5d12('0x47')]=_['keys'](db['CannedAnswer'][_0x5d12('0x43')]);_0x21defd[_0x5d12('0x48')]=_[_0x5d12('0x49')](_0x5afe82[_0x5d12('0x48')]);_0x21defd[_0x5d12('0x4a')]=_[_0x5d12('0x4b')](_0x21defd[_0x5d12('0x47')],_0x21defd[_0x5d12('0x48')]);_0x550174[_0x5d12('0x4c')]=_[_0x5d12('0x4b')](_0x21defd[_0x5d12('0x47')],qs[_0x5d12('0x4d')](_0x5afe82[_0x5d12('0x48')][_0x5d12('0x4d')]));_0x550174[_0x5d12('0x4c')]=_0x550174['attributes'][_0x5d12('0x4e')]?_0x550174[_0x5d12('0x4c')]:_0x21defd[_0x5d12('0x47')];if(!_0x5afe82[_0x5d12('0x48')][_0x5d12('0x4f')](_0x5d12('0x6c'))){_0x550174[_0x5d12('0x34')]=qs['limit'](_0x5afe82[_0x5d12('0x48')][_0x5d12('0x34')]);_0x550174[_0x5d12('0x31')]=qs[_0x5d12('0x31')](_0x5afe82[_0x5d12('0x48')][_0x5d12('0x31')]);}_0x550174[_0x5d12('0x50')]=qs[_0x5d12('0x51')](_0x5afe82['query'][_0x5d12('0x51')]);_0x550174['where']=qs['filters'](_[_0x5d12('0x53')](_0x5afe82['query'],_0x21defd[_0x5d12('0x4a')]));_0x550174[_0x5d12('0x52')][_0x5d12('0x68')]=_0x56d20f['id'];if(_0x5afe82['query'][_0x5d12('0x54')]){_0x550174[_0x5d12('0x52')]=_[_0x5d12('0x55')](_0x550174[_0x5d12('0x52')],{'$or':_['map'](_0x550174['attributes'],function(_0xccc95f){var _0x234729={};_0x234729[_0xccc95f]={'$like':'%'+_0x5afe82[_0x5d12('0x48')]['filter']+'%'};return _0x234729;})});}_0x550174=_['merge']({},_0x550174,_0x5afe82[_0x5d12('0x5e')]);return db[_0x5d12('0x6f')][_0x5d12('0x33')]({'where':_0x550174['where']})[_0x5d12('0x21')](function(_0x3bd38b){_0x2428e2[_0x5d12('0x33')]=_0x3bd38b;if(_0x5afe82['query'][_0x5d12('0x5d')]){_0x550174[_0x5d12('0x58')]=[{'all':!![]}];}return db[_0x5d12('0x6f')]['findAll'](_0x550174);})['then'](function(_0x2f8437){_0x2428e2['rows']=_0x2f8437;return _0x2428e2;});}})[_0x5d12('0x21')](respondWithFilteredResult(_0x2abe19,_0x550174))[_0x5d12('0x2c')](handleError(_0x2abe19,null));};exports[_0x5d12('0x71')]=function(_0x56833b,_0x11ab04,_0x198ac1){return db[_0x5d12('0x57')]['find']({'where':{'id':_0x56833b[_0x5d12('0x5c')]['id']}})['then'](handleEntityNotFound(_0x11ab04,null))[_0x5d12('0x21')](function(_0x4682b7){if(_0x4682b7){return _0x4682b7[_0x5d12('0x71')](_0x56833b[_0x5d12('0x48')][_0x5d12('0x6e')]);}})['then'](respondWithStatusCode(_0x11ab04,null))[_0x5d12('0x2c')](handleError(_0x11ab04,null));};exports[_0x5d12('0x72')]=function(_0x57bcb4,_0x9a0f7a,_0x5a7728){return db[_0x5d12('0x73')][_0x5d12('0x5f')]({'where':{'id':_0x57bcb4['params']['id']}})['then'](handleEntityNotFound(_0x9a0f7a,null))[_0x5d12('0x21')](function(_0xe4af90){if(_0xe4af90){return _0xe4af90['addInteraction'](_0x57bcb4[_0x5d12('0x61')][_0x5d12('0x6e')],_['omit'](_0x57bcb4['body'],[_0x5d12('0x6e'),'id'])||{});}})['then'](respondWithResult(_0x9a0f7a,null))[_0x5d12('0x2c')](handleError(_0x9a0f7a,null));};exports[_0x5d12('0x74')]=function(_0x42911b,_0x1d9568,_0x5065ee){var _0x24770a={'raw':![],'where':{}};var _0x399f66={};var _0x356501={'count':0x0,'rows':[]};return db[_0x5d12('0x57')]['findOne']({'where':{'id':_0x42911b[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x1d9568,null))[_0x5d12('0x21')](function(_0x3a3503){if(_0x3a3503){_0x399f66[_0x5d12('0x47')]=_[_0x5d12('0x49')](db[_0x5d12('0x73')][_0x5d12('0x43')]);_0x399f66[_0x5d12('0x48')]=_[_0x5d12('0x49')](_0x42911b[_0x5d12('0x48')]);_0x399f66[_0x5d12('0x4a')]=_[_0x5d12('0x4b')](_0x399f66[_0x5d12('0x47')],_0x399f66[_0x5d12('0x48')]);_0x24770a[_0x5d12('0x4c')]=_['intersection'](_0x399f66[_0x5d12('0x47')],qs[_0x5d12('0x4d')](_0x42911b['query'][_0x5d12('0x4d')]));_0x24770a[_0x5d12('0x4c')]=_0x24770a[_0x5d12('0x4c')]['length']?_0x24770a[_0x5d12('0x4c')]:_0x399f66[_0x5d12('0x47')];if(!_0x42911b[_0x5d12('0x48')]['hasOwnProperty'](_0x5d12('0x6c'))){_0x24770a[_0x5d12('0x34')]=qs['limit'](_0x42911b[_0x5d12('0x48')][_0x5d12('0x34')]);_0x24770a['offset']=qs[_0x5d12('0x31')](_0x42911b[_0x5d12('0x48')]['offset']);}_0x24770a[_0x5d12('0x50')]=qs['sort'](_0x42911b[_0x5d12('0x48')][_0x5d12('0x51')]);_0x24770a[_0x5d12('0x52')]=qs[_0x5d12('0x4a')](_[_0x5d12('0x53')](_0x42911b[_0x5d12('0x48')],_0x399f66[_0x5d12('0x4a')]));_0x24770a[_0x5d12('0x52')][_0x5d12('0x68')]=_0x3a3503['id'];if(_0x42911b[_0x5d12('0x48')][_0x5d12('0x54')]){_0x24770a['where']=_[_0x5d12('0x55')](_0x24770a['where'],{'$or':_['map'](_0x24770a[_0x5d12('0x4c')],function(_0x50b905){var _0x417ffa={};_0x417ffa[_0x50b905]={'$like':'%'+_0x42911b[_0x5d12('0x48')]['filter']+'%'};return _0x417ffa;})});}_0x24770a=_[_0x5d12('0x55')]({},_0x24770a,_0x42911b['options']);return db[_0x5d12('0x73')][_0x5d12('0x33')]({'where':_0x24770a[_0x5d12('0x52')]})['then'](function(_0x38999e){_0x356501[_0x5d12('0x33')]=_0x38999e;if(_0x42911b[_0x5d12('0x48')]['includeAll']){_0x24770a['include']=[{'model':db[_0x5d12('0x75')],'as':'Contact','required':![]},{'model':db[_0x5d12('0x76')],'as':'Owner','attributes':['name',_0x5d12('0x77'),_0x5d12('0x78')],'required':![]},{'model':db[_0x5d12('0x79')],'as':_0x5d12('0x7a'),'attributes':['id','name','color'],'where':_0x42911b['query'][_0x5d12('0x7b')]?{'id':_0x42911b['query'][_0x5d12('0x7b')]}:undefined,'required':_0x42911b['query'][_0x5d12('0x7b')]?!![]:![]}];}return db[_0x5d12('0x73')][_0x5d12('0x59')](_0x24770a);})[_0x5d12('0x21')](function(_0x314c10){_0x356501[_0x5d12('0x5a')]=_0x314c10;return _0x356501;});}})[_0x5d12('0x21')](respondWithFilteredResult(_0x1d9568,_0x24770a))['catch'](handleError(_0x1d9568,null));};exports['addApplications']=function(_0x437f06,_0x527691){var _0x45c447=_0x437f06[_0x5d12('0x5c')]['id'];var _0x4f23c4=_0x437f06['body'];var _0x5df757=0xc8;var _0x2fb98c=null;return db[_0x5d12('0x7c')]['transaction']({'isolationLevel':db[_0x5d12('0x7c')][_0x5d12('0x7d')][_0x5d12('0x7e')]['READ_COMMITTED']},function(_0x120178){return db['FaxAccount'][_0x5d12('0x6b')]({'where':{'id':_0x45c447},'transaction':_0x120178})[_0x5d12('0x21')](function(_0x499065){if(_0x499065){return db['FaxApplication'][_0x5d12('0x39')]({'where':{'FaxAccountId':_0x45c447},'transaction':_0x120178})[_0x5d12('0x21')](function(){var _0x55e614=_['map'](_0x4f23c4,function(_0x126014){_0x126014[_0x5d12('0x68')]=_0x45c447;return _0x126014;});return db[_0x5d12('0x7f')][_0x5d12('0x80')](_0x55e614,{'transaction':_0x120178});});}else{_0x5df757=0x194;_0x2fb98c=[];}});})[_0x5d12('0x21')](function(){if(_0x5df757!==0x194){return db[_0x5d12('0x7f')][_0x5d12('0x81')]({'where':{'FaxAccountId':_0x45c447},'order':_0x5d12('0x82')})[_0x5d12('0x21')](function(_0x491d9e){_0x2fb98c=_0x491d9e;});}})[_0x5d12('0x2c')](function(_0x2c47a0){_0x5df757=0x1f4;logger[_0x5d12('0x28')](_0x2c47a0[_0x5d12('0x3d')]);if(_0x2c47a0[_0x5d12('0x3e')]){delete _0x2c47a0['name'];}_0x2fb98c=_0x2c47a0;})[_0x5d12('0x83')](function(){if(_0x2fb98c===null){_0x527691['sendStatus'](_0x5df757);}else{if(_0x5df757===0x1f4){_0x527691[_0x5d12('0x2e')](_0x5df757)[_0x5d12('0x84')](_0x2fb98c);}else{_0x527691['status'](_0x5df757)['json'](_0x2fb98c);}}});};exports[_0x5d12('0x85')]=function(_0x53080f,_0x4bd9ed,_0x27c8d1){var _0x410e55={};var _0x560348={};var _0x36645d;var _0x47e93b;return db[_0x5d12('0x57')][_0x5d12('0x6b')]({'where':{'id':_0x53080f[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x4bd9ed,null))[_0x5d12('0x21')](function(_0x5194fa){if(_0x5194fa){_0x36645d=_0x5194fa;_0x560348[_0x5d12('0x47')]=_[_0x5d12('0x49')](db['FaxApplication'][_0x5d12('0x43')]);_0x560348[_0x5d12('0x48')]=_['keys'](_0x53080f[_0x5d12('0x48')]);_0x560348[_0x5d12('0x4a')]=_[_0x5d12('0x4b')](_0x560348[_0x5d12('0x47')],_0x560348[_0x5d12('0x48')]);_0x410e55[_0x5d12('0x4c')]=_[_0x5d12('0x4b')](_0x560348[_0x5d12('0x47')],qs[_0x5d12('0x4d')](_0x53080f['query'][_0x5d12('0x4d')]));_0x410e55[_0x5d12('0x4c')]=_0x410e55[_0x5d12('0x4c')]['length']?_0x410e55['attributes']:_0x560348[_0x5d12('0x47')];_0x410e55[_0x5d12('0x50')]=qs[_0x5d12('0x51')](_0x53080f['query'][_0x5d12('0x51')]);_0x410e55['where']=qs[_0x5d12('0x4a')](_['pick'](_0x53080f[_0x5d12('0x48')],_0x560348['filters']));if(_0x53080f[_0x5d12('0x48')]['filter']){_0x410e55[_0x5d12('0x52')]=_[_0x5d12('0x55')](_0x410e55['where'],{'$or':_[_0x5d12('0x42')](_0x410e55[_0x5d12('0x4c')],function(_0x5c0542){var _0x588328={};_0x588328[_0x5c0542]={'$like':'%'+_0x53080f[_0x5d12('0x48')][_0x5d12('0x54')]+'%'};return _0x588328;})});}_0x410e55=_[_0x5d12('0x55')]({},_0x410e55,_0x53080f['options']);return _0x36645d['getApplications'](_0x410e55);}})['then'](function(_0x2a64d2){if(_0x2a64d2){_0x47e93b=_0x2a64d2[_0x5d12('0x4e')];if(!_0x53080f['query'][_0x5d12('0x4f')](_0x5d12('0x6c'))){_0x410e55[_0x5d12('0x34')]=qs['limit'](_0x53080f[_0x5d12('0x48')][_0x5d12('0x34')]);_0x410e55[_0x5d12('0x31')]=qs[_0x5d12('0x31')](_0x53080f[_0x5d12('0x48')]['offset']);}return _0x36645d[_0x5d12('0x85')](_0x410e55);}})[_0x5d12('0x21')](function(_0x2d44b4){if(_0x2d44b4){return _0x2d44b4?{'count':_0x47e93b,'rows':_0x2d44b4}:null;}})[_0x5d12('0x21')](respondWithResult(_0x4bd9ed,null))[_0x5d12('0x2c')](handleError(_0x4bd9ed,null));};function Extension(_0x22d850,_0x2603ee,_0x1029b8,_0x1a79b8){this['context']='from-voip-provider';this[_0x5d12('0x86')]=_0x22d850[_0x5d12('0x87')];this[_0x5d12('0x88')]=_0x1a79b8;this[_0x5d12('0x45')]=_0x5d12('0x89');this['description']=_0x5d12('0x8a');this[_0x5d12('0x68')]=_0x22d850['id'];this['priority']=_0x2603ee;this[_0x5d12('0x8b')]=_0x1029b8;}function createExtensionsReciveFax(_0x1cb26d){var _0x3b48cf=0x1;var _0x573ca4=[];_0x573ca4[_0x5d12('0x8c')](new Extension(_0x1cb26d,_0x3b48cf,'','Answer'));_0x3b48cf+=0x1;_0x573ca4['push'](new Extension(_0x1cb26d,_0x3b48cf,_0x5d12('0x8d'),_0x5d12('0x8e')));_0x3b48cf+=0x1;for(var _0x2cc3a4 in _0x1cb26d){if(_0x1cb26d['hasOwnProperty'](_0x2cc3a4)&&(_0x2cc3a4===_0x5d12('0x8f')||_0x2cc3a4===_0x5d12('0x87')||_0x2cc3a4===_0x5d12('0x90')||_0x2cc3a4===_0x5d12('0x91')||_0x2cc3a4===_0x5d12('0x92')||_0x2cc3a4===_0x5d12('0x93')||_0x2cc3a4===_0x5d12('0x94')||_0x2cc3a4===_0x5d12('0x95')||_0x2cc3a4==='t38timeout')){_0x573ca4[_0x5d12('0x8c')](new Extension(_0x1cb26d,_0x3b48cf,'FAXOPT('+_0x2cc3a4+')='+_0x1cb26d[_0x2cc3a4],_0x5d12('0x8e')));_0x3b48cf+=0x1;}}_0x573ca4[_0x5d12('0x8c')](new Extension(_0x1cb26d,_0x3b48cf,'6',_0x5d12('0x96')));_0x3b48cf+=0x1;_0x573ca4['push'](new Extension(_0x1cb26d,_0x3b48cf,_0x5d12('0x97'),_0x5d12('0x98')));_0x3b48cf=0x0;return _0x573ca4;}exports[_0x5d12('0x99')]=function(_0x20db9d,_0x49239c,_0x39ce42){var _0x1688d6;return db[_0x5d12('0x7c')][_0x5d12('0x9a')](function(_0x5347ac){return db[_0x5d12('0x57')][_0x5d12('0x60')](_0x20db9d[_0x5d12('0x61')],{'transaction':_0x5347ac})[_0x5d12('0x21')](function(_0x4c72c2){_0x1688d6=_0x4c72c2[_0x5d12('0x3a')]({'plain':!![]});return db[_0x5d12('0x9b')][_0x5d12('0x80')](createExtensionsReciveFax(_0x1688d6),{'transaction':_0x5347ac});});})[_0x5d12('0x21')](function(){return _0x1688d6;})[_0x5d12('0x21')](respondWithResult(_0x49239c,null))['catch'](handleError(_0x49239c,null));};exports['updateAccountApplications']=function(_0x2b8dc2,_0x1d7542,_0x314d6){var _0x4a3efb;return db[_0x5d12('0x7c')][_0x5d12('0x9a')](function(_0x563cb8){return db['FaxAccount'][_0x5d12('0x38')](_0x2b8dc2['body'],{'where':{'id':_0x2b8dc2[_0x5d12('0x61')]['id']},'transaction':_0x563cb8})[_0x5d12('0x21')](function(_0x248d7b){return db[_0x5d12('0x9b')][_0x5d12('0x39')]({'where':{'FaxAccountId':_0x2b8dc2[_0x5d12('0x61')]['id']},'transaction':_0x563cb8})[_0x5d12('0x21')](function(_0x4ac370){return db[_0x5d12('0x9b')][_0x5d12('0x80')](createExtensionsReciveFax(_[_0x5d12('0x9c')](_0x2b8dc2[_0x5d12('0x61')],[_0x5d12('0x9d'),'key',_0x5d12('0x9e'),'updatedAt',_0x5d12('0x9f'),'ListId'])),{'transaction':_0x563cb8});});});})['then'](function(){return db['FaxAccount'][_0x5d12('0xa0')](_0x2b8dc2[_0x5d12('0x61')]['id']);})[_0x5d12('0x21')](respondWithResult(_0x1d7542,null))[_0x5d12('0x2c')](handleError(_0x1d7542,null));};exports['getMessages']=function(_0x336b7f,_0x1c8995,_0x4fd336){var _0x32f090={'raw':!![],'where':{}};var _0xf02c4e={};var _0x5a2de7={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x336b7f[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x1c8995,null))[_0x5d12('0x21')](function(_0x5d4a9b){if(_0x5d4a9b){_0xf02c4e[_0x5d12('0x47')]=_[_0x5d12('0x49')](db['FaxMessage']['rawAttributes']);_0xf02c4e[_0x5d12('0x48')]=_['keys'](_0x336b7f['query']);_0xf02c4e['filters']=_['intersection'](_0xf02c4e[_0x5d12('0x47')],_0xf02c4e[_0x5d12('0x48')]);_0x32f090[_0x5d12('0x4c')]=_[_0x5d12('0x4b')](_0xf02c4e[_0x5d12('0x47')],qs['fields'](_0x336b7f['query']['fields']));_0x32f090['attributes']=_0x32f090[_0x5d12('0x4c')][_0x5d12('0x4e')]?_0x32f090[_0x5d12('0x4c')]:_0xf02c4e[_0x5d12('0x47')];if(!_0x336b7f[_0x5d12('0x48')][_0x5d12('0x4f')](_0x5d12('0x6c'))){_0x32f090['limit']=qs[_0x5d12('0x34')](_0x336b7f[_0x5d12('0x48')]['limit']);_0x32f090['offset']=qs['offset'](_0x336b7f[_0x5d12('0x48')][_0x5d12('0x31')]);}_0x32f090[_0x5d12('0x50')]=qs[_0x5d12('0x51')](_0x336b7f[_0x5d12('0x48')]['sort']);_0x32f090[_0x5d12('0x52')]=qs['filters'](_[_0x5d12('0x53')](_0x336b7f[_0x5d12('0x48')],_0xf02c4e['filters']));_0x32f090[_0x5d12('0x52')]['FaxAccountId']=_0x5d4a9b['id'];if(_0x336b7f[_0x5d12('0x48')][_0x5d12('0x54')]){_0x32f090[_0x5d12('0x52')]=_[_0x5d12('0x55')](_0x32f090[_0x5d12('0x52')],{'$or':_[_0x5d12('0x42')](_0x32f090['attributes'],function(_0x4bb08e){var _0x39805c={};_0x39805c[_0x4bb08e]={'$like':'%'+_0x336b7f[_0x5d12('0x48')][_0x5d12('0x54')]+'%'};return _0x39805c;})});}if(_0x336b7f[_0x5d12('0x48')][_0x5d12('0xa1')]){var _0x546929=_0x336b7f[_0x5d12('0x48')][_0x5d12('0xa1')][_0x5d12('0xa2')](',');var _0x16912d={};_0x16912d[_0x546929[0x0]]={'$gte':moment(_0x546929[0x1])[_0x5d12('0xa3')](_0x5d12('0xa4'))};_0x32f090[_0x5d12('0x52')]=_[_0x5d12('0x55')](_0x32f090[_0x5d12('0x52')],_0x16912d);}_0x32f090=_['merge']({},_0x32f090,_0x336b7f[_0x5d12('0x5e')]);return db['FaxMessage'][_0x5d12('0x33')]({'where':_0x32f090[_0x5d12('0x52')]})[_0x5d12('0x21')](function(_0x185e57){_0x5a2de7['count']=_0x185e57;if(_0x336b7f[_0x5d12('0x48')]['includeAll']){_0x32f090[_0x5d12('0x58')]=[{'all':!![]}];}return db['FaxMessage'][_0x5d12('0x59')](_0x32f090);})[_0x5d12('0x21')](function(_0xb6c124){_0x5a2de7[_0x5d12('0x5a')]=_0xb6c124;return _0x5a2de7;});}})[_0x5d12('0x21')](respondWithFilteredResult(_0x1c8995,_0x32f090))[_0x5d12('0x2c')](handleError(_0x1c8995,null));};exports[_0x5d12('0x84')]=function(_0x1f0ef0,_0x410088,_0x5d5a7a){var _0x57d421,_0x2902d9={},_0x333f3c;if(_0x1f0ef0[_0x5d12('0x61')]['to']){_0x333f3c=_0x1f0ef0['body']['to'][0x0];}return db[_0x5d12('0x57')][_0x5d12('0x5f')]({'where':{'id':_0x1f0ef0[_0x5d12('0x5c')]['id']},'include':[{'model':db[_0x5d12('0xa5')],'as':_0x5d12('0xa6'),'include':[{'model':db[_0x5d12('0x75')],'as':_0x5d12('0xa7'),'where':{'fax':_0x333f3c},'limit':0x1,'order':[[_0x5d12('0xa8'),'DESC']]}]}]})[_0x5d12('0x21')](handleEntityNotFound(_0x410088,null))['then'](function(_0x147b78){_0x57d421=_0x147b78;if(_0x1f0ef0[_0x5d12('0x61')]['attachments']&&_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][_0x5d12('0x4e')]){for(var _0x558e8e=0x0;_0x558e8e<_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')]['length'];_0x558e8e+=0x1){_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][_0x558e8e]={'filename':_0x1f0ef0['body'][_0x5d12('0xa9')][_0x558e8e]['name'],'id':_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][_0x558e8e]['id'],'path':path['join'](config[_0x5d12('0xaa')],'server/files/attachments',_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][_0x558e8e][_0x5d12('0xab')])};}}return respondWithRpcPromise(_0x5d12('0xac'),'CheckAfterSend',{'FaxAccountId':_['isNil'](_0x1f0ef0[_0x5d12('0x5c')]['id'])?undefined:_0x1f0ef0[_0x5d12('0x5c')]['id'],'path':_[_0x5d12('0xad')](_0x1f0ef0['body'][_0x5d12('0xa9')][0x0][_0x5d12('0x6')])?undefined:_0x1f0ef0[_0x5d12('0x61')]['attachments'][0x0][_0x5d12('0x6')],'fax':_[_0x5d12('0xad')](_0x1f0ef0[_0x5d12('0x61')]['to'][0x0])?undefined:_0x1f0ef0[_0x5d12('0x61')]['to'][0x0]},client9002);})['then'](function(){if(_0x57d421){if(_[_0x5d12('0xad')](_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xae')])){_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xae')]=util[_0x5d12('0xa3')](_0x5d12('0xaf'),_0x57d421['name'],_0x57d421[_0x5d12('0xb0')]);}if(_0x57d421[_0x5d12('0xa6')]){if(_0x57d421[_0x5d12('0xa6')]['Contacts'][_0x5d12('0x4e')]){return _0x57d421[_0x5d12('0xa6')][_0x5d12('0xa7')][0x0];}else{return db[_0x5d12('0x75')][_0x5d12('0x60')](_['defaults'](_0x1f0ef0[_0x5d12('0x61')],{'firstName':_0x1f0ef0['body']['to'][0x0],'phone':_0x1f0ef0[_0x5d12('0x61')]['to'][0x0],'fax':_0x1f0ef0[_0x5d12('0x61')]['to'][0x0],'ListId':_0x57d421[_0x5d12('0xb1')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x5d12('0xb2'));}})[_0x5d12('0x21')](function(_0x244e20){if(_0x244e20){return db['FaxInteraction'][_0x5d12('0x5f')]({'where':{'ContactId':_0x244e20['id'],'closed':![],'FaxAccountId':_0x57d421['id']}})[_0x5d12('0x21')](function(_0x2ea752){if(_0x2ea752){return[_0x2ea752,![]];}return db[_0x5d12('0x73')][_0x5d12('0x60')]({'UserId':_0x1f0ef0[_0x5d12('0x62')]['id'],'ContactId':_0x244e20['id'],'FaxAccountId':_0x57d421['id'],'fax':_0x1f0ef0['body']['to'][0x0],'firstMsgDirection':_0x5d12('0xb3'),'Messages':[_['merge'](_0x1f0ef0[_0x5d12('0x61')],{'read':![],'body':_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][0x0][_0x5d12('0xb4')],'FaxAccountId':_0x57d421['id'],'UserId':_0x1f0ef0[_0x5d12('0x62')]['id'],'ContactId':_0x244e20['id'],'AttachmentId':_0x1f0ef0['body'][_0x5d12('0xa9')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0x5d12('0xb5')}]})[_0x5d12('0x21')](function(_0xda47f1){return[_0xda47f1,!![]];});});}else{throw new Error(_0x5d12('0xb6'));}})[_0x5d12('0xb7')](function(_0x2553d9,_0x5c0045){if(_0x5c0045){return _0x2553d9;}return db[_0x5d12('0xb8')][_0x5d12('0x60')]({'direction':_0x5d12('0xb3'),'read':![],'body':_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][0x0][_0x5d12('0xb4')],'FaxAccountId':_0x57d421['id'],'FaxInteractionId':_0x2553d9['id'],'UserId':_0x1f0ef0[_0x5d12('0x62')]['id'],'ContactId':_0x2553d9[_0x5d12('0xb9')],'AttachmentId':_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][0x0]['id']})[_0x5d12('0x21')](function(_0x4dd860){_0x2553d9[_0x5d12('0xba')][_0x5d12('0xb5')]=[];_0x2553d9[_0x5d12('0xba')][_0x5d12('0xb5')]['push'](_0x4dd860[_0x5d12('0xba')]);return _0x2553d9;});})['then'](function(_0x1e6fad){respondWithRpcPromise(_0x5d12('0xbb'),_0x5d12('0xbb'),{'FaxAccountId':_[_0x5d12('0xad')](_0x1f0ef0[_0x5d12('0x5c')]['id'])?undefined:_0x1f0ef0[_0x5d12('0x5c')]['id'],'path':_[_0x5d12('0xad')](_0x1f0ef0[_0x5d12('0x61')]['attachments'][0x0]['path'])?undefined:_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][0x0][_0x5d12('0x6')],'fax':_[_0x5d12('0xad')](_0x1f0ef0['body']['to'][0x0])?undefined:_0x1f0ef0['body']['to'][0x0],'AttachmentId':_0x1f0ef0[_0x5d12('0x61')][_0x5d12('0xa9')][0x0]['id']},client9002)[_0x5d12('0x21')](function(_0x58b498){logger['info'](_0x5d12('0xbc'),_0x58b498);})[_0x5d12('0x2c')](function(_0x18cee4){logger['info'](_0x5d12('0xbc'),_0x18cee4);});return _0x1e6fad;})[_0x5d12('0x21')](respondWithResult(_0x410088,null))[_0x5d12('0x2c')](handleError(_0x410088,null));};exports[_0x5d12('0xbd')]=function(_0x4be734,_0x2bbf45,_0x4e00b5){return db[_0x5d12('0x57')][_0x5d12('0x5f')]({'where':{'id':_0x4be734['params']['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x2bbf45,null))[_0x5d12('0x21')](function(_0xf17614){if(_0xf17614){return _0xf17614[_0x5d12('0xbd')](_0x4be734[_0x5d12('0x61')][_0x5d12('0x6e')],_[_0x5d12('0x9c')](_0x4be734[_0x5d12('0x61')],['ids','id'])||{})[_0x5d12('0xb7')](function(_0x27253e){for(var _0x31ebc1=0x0;_0x31ebc1<_0x4be734[_0x5d12('0x61')]['ids'][_0x5d12('0x4e')];_0x31ebc1+=0x1){socket[_0x5d12('0xbe')]('userFaxAccount:save',{'UserId':Number(_0x4be734[_0x5d12('0x61')]['ids'][_0x31ebc1]),'FaxAccountId':Number(_0x4be734[_0x5d12('0x5c')]['id'])});}return _0x27253e;});}})[_0x5d12('0x21')](respondWithResult(_0x2bbf45,null))['catch'](handleError(_0x2bbf45,null));};exports['removeAgents']=function(_0x59d762,_0x3ffd6e,_0x519d58){return db[_0x5d12('0x57')][_0x5d12('0x5f')]({'where':{'id':_0x59d762[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x3ffd6e,null))['then'](function(_0x14cb4e){if(_0x14cb4e){return _0x14cb4e[_0x5d12('0xbf')](_0x59d762[_0x5d12('0x48')][_0x5d12('0x6e')])[_0x5d12('0x21')](function(){if(_[_0x5d12('0xc0')](_0x59d762[_0x5d12('0x48')][_0x5d12('0x6e')])){for(var _0x124527=0x0;_0x124527<_0x59d762['query']['ids']['length'];_0x124527+=0x1){socket[_0x5d12('0xbe')](_0x5d12('0xc1'),{'UserId':Number(_0x59d762[_0x5d12('0x48')][_0x5d12('0x6e')][_0x124527]),'FaxAccountId':Number(_0x59d762['params']['id'])});}}else{socket['emit'](_0x5d12('0xc1'),{'UserId':Number(_0x59d762['query'][_0x5d12('0x6e')]),'FaxAccountId':Number(_0x59d762[_0x5d12('0x5c')]['id'])});}});}})['then'](respondWithStatusCode(_0x3ffd6e,null))[_0x5d12('0x2c')](handleError(_0x3ffd6e,null));};exports[_0x5d12('0xc2')]=function(_0x732ccd,_0x22a254,_0x2f832f){var _0xdb7574={};var _0x3013ff={};var _0x21fade;var _0x2ff4a3;return db['FaxAccount'][_0x5d12('0x6b')]({'where':{'id':_0x732ccd[_0x5d12('0x5c')]['id']}})[_0x5d12('0x21')](handleEntityNotFound(_0x22a254,null))[_0x5d12('0x21')](function(_0x2d5712){if(_0x2d5712){_0x21fade=_0x2d5712;_0x3013ff[_0x5d12('0x47')]=_[_0x5d12('0x49')](db[_0x5d12('0x76')]['rawAttributes']);_0x3013ff[_0x5d12('0x48')]=_[_0x5d12('0x49')](_0x732ccd[_0x5d12('0x48')]);_0x3013ff[_0x5d12('0x4a')]=_['intersection'](_0x3013ff['model'],_0x3013ff[_0x5d12('0x48')]);_0xdb7574[_0x5d12('0x4c')]=_[_0x5d12('0x4b')](_0x3013ff[_0x5d12('0x47')],qs[_0x5d12('0x4d')](_0x732ccd[_0x5d12('0x48')][_0x5d12('0x4d')]));_0xdb7574['attributes']=_0xdb7574[_0x5d12('0x4c')][_0x5d12('0x4e')]?_0xdb7574[_0x5d12('0x4c')]:_0x3013ff[_0x5d12('0x47')];_0xdb7574[_0x5d12('0x50')]=qs['sort'](_0x732ccd[_0x5d12('0x48')]['sort']);_0xdb7574[_0x5d12('0x52')]=qs['filters'](_[_0x5d12('0x53')](_0x732ccd[_0x5d12('0x48')],_0x3013ff[_0x5d12('0x4a')]));if(_0x732ccd[_0x5d12('0x48')]['filter']){_0xdb7574['where']=_[_0x5d12('0x55')](_0xdb7574[_0x5d12('0x52')],{'$or':_[_0x5d12('0x42')](_0xdb7574[_0x5d12('0x4c')],function(_0x50c8d0){var _0x4b0a3c={};_0x4b0a3c[_0x50c8d0]={'$like':'%'+_0x732ccd[_0x5d12('0x48')][_0x5d12('0x54')]+'%'};return _0x4b0a3c;})});}_0xdb7574=_['merge']({},_0xdb7574,_0x732ccd[_0x5d12('0x5e')]);return _0x21fade[_0x5d12('0xc2')](_0xdb7574);}})['then'](function(_0x2c7abc){if(_0x2c7abc){_0x2ff4a3=_0x2c7abc[_0x5d12('0x4e')];if(!_0x732ccd[_0x5d12('0x48')][_0x5d12('0x4f')](_0x5d12('0x6c'))){_0xdb7574['limit']=qs[_0x5d12('0x34')](_0x732ccd[_0x5d12('0x48')]['limit']);_0xdb7574[_0x5d12('0x31')]=qs[_0x5d12('0x31')](_0x732ccd['query']['offset']);}return _0x21fade['getAgents'](_0xdb7574);}})[_0x5d12('0x21')](function(_0xdbec1f){if(_0xdbec1f){return _0xdbec1f?{'count':_0x2ff4a3,'rows':_0xdbec1f}:null;}})[_0x5d12('0x21')](respondWithResult(_0x22a254,null))[_0x5d12('0x2c')](handleError(_0x22a254,null));};
\ No newline at end of file
index 3aa412d..b922963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a51=['FaxAccount','save','update','emit','events','../../mysqldb'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x4a51,0x14e));var _0x14a5=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x4a51[_0x2064e5];return _0x21a233;};'use strict';var EventEmitter=require(_0x14a5('0x0'));var FaxAccount=require(_0x14a5('0x1'))['db'][_0x14a5('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x14a5('0x3'),'afterUpdate':_0x14a5('0x4'),'afterDestroy':'remove'};function emitEvent(_0xfad8b3){return function(_0x37f29d,_0x51ab5f,_0x57065a){FaxAccountEvents[_0x14a5('0x5')](_0xfad8b3+':'+_0x37f29d['id'],_0x37f29d);FaxAccountEvents['emit'](_0xfad8b3,_0x37f29d);_0x57065a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0x02fb=['FaxAccount','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x5b4cd5,_0x1d5b32){var _0x5eaa1e=function(_0x2efc68){while(--_0x2efc68){_0x5b4cd5['push'](_0x5b4cd5['shift']());}};_0x5eaa1e(++_0x1d5b32);}(_0x02fb,0x1b6));var _0xb02f=function(_0xf1c82f,_0x3d71f9){_0xf1c82f=_0xf1c82f-0x0;var _0x1bb5be=_0x02fb[_0xf1c82f];return _0x1bb5be;};'use strict';var EventEmitter=require(_0xb02f('0x0'));var FaxAccount=require(_0xb02f('0x1'))['db'][_0xb02f('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xb02f('0x3')](0x0);var events={'afterCreate':_0xb02f('0x4'),'afterUpdate':_0xb02f('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2b0150){return function(_0x40c5a2,_0x533aee,_0x232b16){FaxAccountEvents[_0xb02f('0x6')](_0x2b0150+':'+_0x40c5a2['id'],_0x40c5a2);FaxAccountEvents[_0xb02f('0x6')](_0x2b0150,_0x40c5a2);_0x232b16(null);};}for(var e in events){if(events[_0xb02f('0x7')](e)){var event=events[e];FaxAccount[_0xb02f('0x8')](e,emitEvent(event));}}module[_0xb02f('0x9')]=FaxAccountEvents;
\ No newline at end of file
index d3c7bf4..c371c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc22f=['fax_accounts','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','FaxAccount'];(function(_0x1f7839,_0x2a26e6){var _0x36b42e=function(_0x553222){while(--_0x553222){_0x1f7839['push'](_0x1f7839['shift']());}};_0x36b42e(++_0x2a26e6);}(_0xc22f,0x175));var _0xfc22=function(_0x594c94,_0x267dba){_0x594c94=_0x594c94-0x0;var _0x5ed144=_0xc22f[_0x594c94];return _0x5ed144;};'use strict';var _=require('lodash');var util=require(_0xfc22('0x0'));var logger=require(_0xfc22('0x1'))('api');var moment=require(_0xfc22('0x2'));var BPromise=require(_0xfc22('0x3'));var rp=require(_0xfc22('0x4'));var fs=require('fs');var path=require(_0xfc22('0x5'));var rimraf=require(_0xfc22('0x6'));var config=require(_0xfc22('0x7'));var attributes=require(_0xfc22('0x8'));module[_0xfc22('0x9')]=function(_0x9288da,_0x2c13da){return _0x9288da['define'](_0xfc22('0xa'),attributes,{'tableName':_0xfc22('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5133=['rimraf','../../config/environment','exports','define','fax_accounts','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x23697f,_0x4dee4b){var _0x3e3d2f=function(_0x2c73ed){while(--_0x2c73ed){_0x23697f['push'](_0x23697f['shift']());}};_0x3e3d2f(++_0x4dee4b);}(_0x5133,0x1e9));var _0x3513=function(_0x21de50,_0x51845a){_0x21de50=_0x21de50-0x0;var _0x5842ba=_0x5133[_0x21de50];return _0x5842ba;};'use strict';var _=require(_0x3513('0x0'));var util=require(_0x3513('0x1'));var logger=require(_0x3513('0x2'))('api');var moment=require(_0x3513('0x3'));var BPromise=require(_0x3513('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3513('0x5'));var rimraf=require(_0x3513('0x6'));var config=require(_0x3513('0x7'));var attributes=require('./faxAccount.attributes');module[_0x3513('0x8')]=function(_0x17f759,_0x52050f){return _0x17f759[_0x3513('0x9')]('FaxAccount',attributes,{'tableName':_0x3513('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index deec492..6115b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23a7=['ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','CmContact','Contacts','DESC','FaxApplication','List','get','applications','Applications','list','orderBy','priority','asc','length','defaults','FaxInteraction','create','Contact\x20not\x20found','spread','push','close','*,*,*,*','created','interaction','ContactId','AttachmentId','UserId','unshift','agent','name','Start','startRouting','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','then','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','NotifyFaxAccount','body','fax','describe','Sequelize'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x23a7,0xe1));var _0x723a=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x23a7[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x723a('0x0'));var BPromise=require(_0x723a('0x1'));var rs=require(_0x723a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x723a('0x3'));var logger=require(_0x723a('0x4'))(_0x723a('0x5'));var config=require('../../config/environment');var jayson=require(_0x723a('0x6'));var client=jayson[_0x723a('0x7')][_0x723a('0x8')]({'port':0x232c});config[_0x723a('0x9')]=_['defaults'](config[_0x723a('0x9')],{'host':_0x723a('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x723a('0x9')]));require('./faxAccount.socket')['register'](socket);function respondWithRpcPromise(_0x5dc1ed,_0x20bdca,_0x2b7ef5){return new BPromise(function(_0xb265fc,_0x47e95d){return client['request'](_0x5dc1ed,_0x2b7ef5)[_0x723a('0xb')](function(_0x33a487){logger[_0x723a('0xc')](_0x723a('0xd'),_0x20bdca,'request\x20sent');logger[_0x723a('0xe')](_0x723a('0xf'),_0x20bdca,_0x723a('0x10'),JSON['stringify'](_0x33a487));if(_0x33a487[_0x723a('0x11')]){if(_0x33a487[_0x723a('0x11')][_0x723a('0x12')]===0x1f4){logger[_0x723a('0x11')](_0x723a('0xd'),_0x20bdca,_0x33a487[_0x723a('0x11')]['message']);return _0x47e95d(_0x33a487['error']['message']);}logger[_0x723a('0x11')](_0x723a('0xd'),_0x20bdca,_0x33a487[_0x723a('0x11')]['message']);return _0xb265fc(_0x33a487[_0x723a('0x11')][_0x723a('0x13')]);}else{logger[_0x723a('0xc')]('FaxAccount,\x20%s,\x20%s',_0x20bdca,_0x723a('0x10'));_0xb265fc(_0x33a487[_0x723a('0x14')][_0x723a('0x13')]);}})[_0x723a('0x15')](function(_0x395b62){logger[_0x723a('0x11')](_0x723a('0xd'),_0x20bdca,_0x395b62);_0x47e95d(_0x395b62);});});}exports[_0x723a('0x16')]=function(_0xd1c315){var _0x31d173=this;return new Promise(function(_0x1a4d59,_0x18f0b2){return db[_0x723a('0x17')][_0x723a('0x18')]({'raw':_0xd1c315[_0x723a('0x19')]?_0xd1c315[_0x723a('0x19')][_0x723a('0x1a')]===undefined?!![]:![]:!![],'where':_0xd1c315[_0x723a('0x19')]?_0xd1c315[_0x723a('0x19')][_0x723a('0x1b')]||null:null,'attributes':_0xd1c315[_0x723a('0x19')]?_0xd1c315[_0x723a('0x19')][_0x723a('0x1c')]||null:null,'limit':_0xd1c315[_0x723a('0x19')]?_0xd1c315[_0x723a('0x19')][_0x723a('0x1d')]||null:null,'include':_0xd1c315[_0x723a('0x19')]?_0xd1c315[_0x723a('0x19')][_0x723a('0x1e')]?_[_0x723a('0x1f')](_0xd1c315[_0x723a('0x19')][_0x723a('0x1e')],function(_0x53603c){return{'model':db[_0x53603c['model']],'as':_0x53603c['as'],'attributes':_0x53603c[_0x723a('0x1c')],'include':_0x53603c[_0x723a('0x1e')]?_['map'](_0x53603c['include'],function(_0x14bb2c){return{'model':db[_0x14bb2c[_0x723a('0x20')]],'as':_0x14bb2c['as'],'attributes':_0x14bb2c['attributes'],'include':_0x14bb2c[_0x723a('0x1e')]?_['map'](_0x14bb2c[_0x723a('0x1e')],function(_0x17697e){return{'model':db[_0x17697e['model']],'as':_0x17697e['as'],'attributes':_0x17697e['attributes']};}):[]};}):[]};}):[]:[]})[_0x723a('0xb')](function(_0x476fe8){logger[_0x723a('0xc')](_0x723a('0x16'),_0xd1c315);logger[_0x723a('0xe')]('GetFaxAccount',_0xd1c315,JSON[_0x723a('0x21')](_0x476fe8));_0x1a4d59(_0x476fe8);})['catch'](function(_0x315270){logger[_0x723a('0x11')](_0x723a('0x16'),_0x315270[_0x723a('0x13')],_0xd1c315);_0x18f0b2(_0x31d173[_0x723a('0x11')](0x1f4,_0x315270[_0x723a('0x13')]));});});};exports[_0x723a('0x22')]=function(_0x3d667e,_0x9ad92e,_0x399c96){var _0x2cc5ef=this;return new Promise(function(_0x1f5bf4,_0x12dca2){var _0x3f0eb5={'body':_0x3d667e[_0x723a('0x23')],'channel':_0x723a('0x24')};var _0x41a70a=[];var _0xd2ae38=[];var _0x4124f8={};return db['CmContact'][_0x723a('0x25')]()['then'](function(_0x2b64dd){if(!_0x2b64dd){throw new db[(_0x723a('0x26'))][(_0x723a('0x27'))](_0x723a('0x28'));}_0x41a70a=_[_0x723a('0x29')](_[_0x723a('0x2a')](_0x2b64dd),[_0x723a('0x2b'),_0x723a('0x2c')]);_0xd2ae38=_['difference'](_[_0x723a('0x2a')](_0x2b64dd),['createdAt',_0x723a('0x2c'),_0x723a('0x2d'),_0x723a('0x2e')]);if(_0x3d667e[_0x723a('0x23')]['id']){delete _0x3d667e[_0x723a('0x23')]['id'];}if(_[_0x723a('0x2f')](_0x3d667e['body'][_0x723a('0x30')])){throw new db['Sequelize'][(_0x723a('0x27'))](_0x723a('0x31'));}if(_[_0x723a('0x2f')](_0x3d667e[_0x723a('0x23')][_0x723a('0x23')])||_0x3d667e[_0x723a('0x23')][_0x723a('0x23')]===''){throw new db[(_0x723a('0x26'))]['ValidationError'](_0x723a('0x32'));}if(_[_0x723a('0x2f')](_0x3d667e[_0x723a('0x23')][_0x723a('0x33')])){throw new db[(_0x723a('0x26'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xd2ae38);}if(!_[_0x723a('0x34')](_0xd2ae38,_0x3d667e[_0x723a('0x23')][_0x723a('0x33')])){throw new db['Sequelize'][(_0x723a('0x27'))](_0x723a('0x35')+_0xd2ae38);}_0x4124f8[_0x3d667e[_0x723a('0x23')][_0x723a('0x33')]]=_0x3d667e[_0x723a('0x23')][_0x723a('0x30')];})[_0x723a('0xb')](function(){return db[_0x723a('0x17')][_0x723a('0x36')]({'where':{'id':_0x3d667e[_0x723a('0x37')]['id']},'include':[{'model':db[_0x723a('0x38')],'as':'List','include':[{'model':db[_0x723a('0x39')],'as':_0x723a('0x3a'),'where':_0x4124f8,'limit':0x1,'order':[[_0x723a('0x2c'),_0x723a('0x3b')]]}]},{'model':db[_0x723a('0x3c')],'as':'Applications'}]});})[_0x723a('0xb')](function(_0x59cf1a){if(_0x59cf1a&&_0x59cf1a[_0x723a('0x3d')]){var _0x14a4c1=_0x59cf1a[_0x723a('0x3e')]({'plain':!![]});_0x3f0eb5[_0x723a('0x37')]=_0x14a4c1;_0x3f0eb5[_0x723a('0x3f')]=_0x14a4c1[_0x723a('0x40')];_0x3f0eb5[_0x723a('0x41')]=_0x14a4c1[_0x723a('0x3d')];_0x3f0eb5[_0x723a('0x3f')]=_[_0x723a('0x42')](_0x3f0eb5[_0x723a('0x3f')],[_0x723a('0x43')],[_0x723a('0x44')]);if(_0x3f0eb5[_0x723a('0x37')]['Applications']){delete _0x3f0eb5[_0x723a('0x37')]['Applications'];}if(_0x3f0eb5['account'][_0x723a('0x3d')]&&_0x3f0eb5[_0x723a('0x37')]['List'][_0x723a('0x3a')][_0x723a('0x45')]){return _0x3f0eb5[_0x723a('0x37')]['List'][_0x723a('0x3a')][0x0];}var _0x253a54=_[_0x723a('0x46')](_0x3d667e[_0x723a('0x23')],{'firstName':_0x3d667e[_0x723a('0x23')]['from'],'ListId':_0x14a4c1[_0x723a('0x2e')]});_0x253a54[_0x3d667e['body'][_0x723a('0x33')]]=_0x3d667e[_0x723a('0x23')][_0x723a('0x30')];return db[_0x723a('0x39')]['create'](_0x253a54,{'fields':_0x41a70a,'raw':!![]});}})[_0x723a('0xb')](function(_0x3a47ed){_0x3f0eb5['contact']=_0x3a47ed;if(_0x3a47ed){var _0x12f1aa={'ContactId':_0x3a47ed['id'],'FaxAccountId':_0x3d667e[_0x723a('0x37')]['id'],'fax':_0x3a47ed[_0x723a('0x24')]};return db['FaxInteraction'][_0x723a('0x36')]({'where':{'ContactId':_0x3a47ed['id'],'closed':![],'FaxAccountId':_0x3d667e[_0x723a('0x37')]['id']}})[_0x723a('0xb')](function(_0x720a0b){if(_0x720a0b){return[_0x720a0b,![]];}return db[_0x723a('0x47')][_0x723a('0x48')](_0x12f1aa)['then'](function(_0x14c253){return[_0x14c253,!![]];});});}else{throw new Error(_0x723a('0x49'));}})[_0x723a('0x4a')](function(_0x54855f,_0x29a462){var _0x48367e=_0x54855f[_0x723a('0x3e')]({'plain':!![]});if(_0x29a462){if(_0x3f0eb5[_0x723a('0x37')]['autoclose']){_0x3f0eb5[_0x723a('0x3f')][_0x723a('0x4b')]({'id':0x0,'priority':_0x3f0eb5[_0x723a('0x3f')][_0x723a('0x45')]+0x1,'app':_0x723a('0x4c'),'appdata':'unmanaged','interval':_0x723a('0x4d')});}_0x48367e[_0x723a('0x4e')]=!![];}else{_0x48367e['created']=![];}_0x3f0eb5[_0x723a('0x4f')]=_0x48367e;return db['FaxMessage'][_0x723a('0x48')]({'body':_0x3d667e[_0x723a('0x23')][_0x723a('0x23')],'FaxAccountId':_0x3d667e['account']['id'],'FaxInteractionId':_0x54855f['id'],'direction':'in','ContactId':_0x54855f[_0x723a('0x50')],'AttachmentId':_0x3d667e['body'][_0x723a('0x51')]});})[_0x723a('0xb')](function(_0x6564c7){_0x3f0eb5[_0x723a('0x13')]=_0x6564c7;if(_0x3f0eb5[_0x723a('0x4f')][_0x723a('0x52')]){return db['User']['find']({'attributes':['id','name'],'where':{'id':_0x3f0eb5[_0x723a('0x4f')][_0x723a('0x52')]}})[_0x723a('0xb')](function(_0x31b288){if(_0x31b288){_0x3f0eb5[_0x723a('0x3f')][_0x723a('0x53')]({'id':0x0,'priority':0x0,'app':_0x723a('0x54'),'appdata':_0x31b288[_0x723a('0x55')]+','+(_0x3f0eb5[_0x723a('0x37')]['waitForTheAssignedAgent']||0xa),'interval':_0x723a('0x4d')});}return respondWithRpcPromise(_0x723a('0x56'),_0x723a('0x57'),_0x3f0eb5);});}return respondWithRpcPromise(_0x723a('0x56'),_0x723a('0x57'),_0x3f0eb5);})[_0x723a('0xb')](function(_0x43d4ca){_0x1f5bf4(_0x43d4ca);})[_0x723a('0x15')](function(_0x731604){_0x12dca2(_0x2cc5ef[_0x723a('0x11')](0x1f4,_0x731604[_0x723a('0x13')]));});});};
\ No newline at end of file
+var _0xdf82=['NotifyFaxAccount','body','fax','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','from','find','account','CmList','CmContact','Contacts','DESC','FaxApplication','Applications','List','get','list','orderBy','applications','priority','asc','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','length','close','unmanaged','*,*,*,*','created','interaction','create','ContactId','AttachmentId','User','name','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','GetFaxAccount','FaxAccount','findAll','raw','options','where','attributes','limit','include','map','model','debug','catch'];(function(_0x2ef251,_0x3687e5){var _0x5c931b=function(_0x3e1e36){while(--_0x3e1e36){_0x2ef251['push'](_0x2ef251['shift']());}};_0x5c931b(++_0x3687e5);}(_0xdf82,0xfe));var _0x2df8=function(_0x244e85,_0x9a8dd7){_0x244e85=_0x244e85-0x0;var _0x55b122=_0xdf82[_0x244e85];return _0x55b122;};'use strict';var _=require(_0x2df8('0x0'));var util=require(_0x2df8('0x1'));var moment=require(_0x2df8('0x2'));var BPromise=require('bluebird');var rs=require(_0x2df8('0x3'));var fs=require('fs');var Redis=require(_0x2df8('0x4'));var db=require(_0x2df8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2df8('0x6'))(_0x2df8('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2df8('0x8')][_0x2df8('0x9')]({'port':0x232c});config[_0x2df8('0xa')]=_[_0x2df8('0xb')](config[_0x2df8('0xa')],{'host':_0x2df8('0xc'),'port':0x18eb});var socket=require(_0x2df8('0xd'))(new Redis(config[_0x2df8('0xa')]));require(_0x2df8('0xe'))[_0x2df8('0xf')](socket);function respondWithRpcPromise(_0x3580df,_0x3d8eae,_0x652eb8){return new BPromise(function(_0x454f38,_0xa65a99){return client[_0x2df8('0x10')](_0x3580df,_0x652eb8)[_0x2df8('0x11')](function(_0x44f752){logger[_0x2df8('0x12')]('FaxAccount,\x20%s,\x20%s',_0x3d8eae,_0x2df8('0x13'));logger['debug'](_0x2df8('0x14'),_0x3d8eae,_0x2df8('0x13'),JSON[_0x2df8('0x15')](_0x44f752));if(_0x44f752[_0x2df8('0x16')]){if(_0x44f752[_0x2df8('0x16')][_0x2df8('0x17')]===0x1f4){logger['error'](_0x2df8('0x18'),_0x3d8eae,_0x44f752['error'][_0x2df8('0x19')]);return _0xa65a99(_0x44f752['error'][_0x2df8('0x19')]);}logger['error'](_0x2df8('0x18'),_0x3d8eae,_0x44f752['error']['message']);return _0x454f38(_0x44f752[_0x2df8('0x16')][_0x2df8('0x19')]);}else{logger[_0x2df8('0x12')](_0x2df8('0x18'),_0x3d8eae,_0x2df8('0x13'));_0x454f38(_0x44f752[_0x2df8('0x1a')][_0x2df8('0x19')]);}})['catch'](function(_0x3450cf){logger[_0x2df8('0x16')](_0x2df8('0x18'),_0x3d8eae,_0x3450cf);_0xa65a99(_0x3450cf);});});}exports[_0x2df8('0x1b')]=function(_0x2c38f3){var _0x188122=this;return new Promise(function(_0x222b65,_0x5e3259){return db[_0x2df8('0x1c')][_0x2df8('0x1d')]({'raw':_0x2c38f3['options']?_0x2c38f3['options'][_0x2df8('0x1e')]===undefined?!![]:![]:!![],'where':_0x2c38f3[_0x2df8('0x1f')]?_0x2c38f3[_0x2df8('0x1f')][_0x2df8('0x20')]||null:null,'attributes':_0x2c38f3[_0x2df8('0x1f')]?_0x2c38f3[_0x2df8('0x1f')][_0x2df8('0x21')]||null:null,'limit':_0x2c38f3[_0x2df8('0x1f')]?_0x2c38f3[_0x2df8('0x1f')][_0x2df8('0x22')]||null:null,'include':_0x2c38f3['options']?_0x2c38f3[_0x2df8('0x1f')][_0x2df8('0x23')]?_[_0x2df8('0x24')](_0x2c38f3[_0x2df8('0x1f')][_0x2df8('0x23')],function(_0x35bdcd){return{'model':db[_0x35bdcd[_0x2df8('0x25')]],'as':_0x35bdcd['as'],'attributes':_0x35bdcd['attributes'],'include':_0x35bdcd[_0x2df8('0x23')]?_['map'](_0x35bdcd[_0x2df8('0x23')],function(_0x3fd10e){return{'model':db[_0x3fd10e[_0x2df8('0x25')]],'as':_0x3fd10e['as'],'attributes':_0x3fd10e['attributes'],'include':_0x3fd10e[_0x2df8('0x23')]?_[_0x2df8('0x24')](_0x3fd10e[_0x2df8('0x23')],function(_0x426d46){return{'model':db[_0x426d46[_0x2df8('0x25')]],'as':_0x426d46['as'],'attributes':_0x426d46[_0x2df8('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11ef3e){logger['info'](_0x2df8('0x1b'),_0x2c38f3);logger[_0x2df8('0x26')](_0x2df8('0x1b'),_0x2c38f3,JSON['stringify'](_0x11ef3e));_0x222b65(_0x11ef3e);})[_0x2df8('0x27')](function(_0x3690dc){logger[_0x2df8('0x16')]('GetFaxAccount',_0x3690dc[_0x2df8('0x19')],_0x2c38f3);_0x5e3259(_0x188122[_0x2df8('0x16')](0x1f4,_0x3690dc[_0x2df8('0x19')]));});});};exports[_0x2df8('0x28')]=function(_0x1328de,_0x4b2112,_0x143f8b){var _0x4f0830=this;return new Promise(function(_0x344eea,_0x569cf6){var _0x5f0fb7={'body':_0x1328de[_0x2df8('0x29')],'channel':_0x2df8('0x2a')};var _0x462990=[];var _0x5a7661=[];var _0xf8a5ff={};return db['CmContact'][_0x2df8('0x2b')]()[_0x2df8('0x11')](function(_0x25d263){if(!_0x25d263){throw new db[(_0x2df8('0x2c'))][(_0x2df8('0x2d'))](_0x2df8('0x2e'));}_0x462990=_[_0x2df8('0x2f')](_[_0x2df8('0x30')](_0x25d263),[_0x2df8('0x31'),_0x2df8('0x32')]);_0x5a7661=_[_0x2df8('0x2f')](_['keys'](_0x25d263),[_0x2df8('0x31'),'updatedAt',_0x2df8('0x33'),_0x2df8('0x34')]);if(_0x1328de['body']['id']){delete _0x1328de['body']['id'];}if(_[_0x2df8('0x35')](_0x1328de[_0x2df8('0x29')]['from'])){throw new db[(_0x2df8('0x2c'))][(_0x2df8('0x2d'))](_0x2df8('0x36'));}if(_[_0x2df8('0x35')](_0x1328de[_0x2df8('0x29')][_0x2df8('0x29')])||_0x1328de[_0x2df8('0x29')][_0x2df8('0x29')]===''){throw new db[(_0x2df8('0x2c'))][(_0x2df8('0x2d'))](_0x2df8('0x37'));}if(_[_0x2df8('0x35')](_0x1328de['body'][_0x2df8('0x38')])){throw new db[(_0x2df8('0x2c'))][(_0x2df8('0x2d'))](_0x2df8('0x39')+_0x5a7661);}if(!_[_0x2df8('0x3a')](_0x5a7661,_0x1328de[_0x2df8('0x29')][_0x2df8('0x38')])){throw new db[(_0x2df8('0x2c'))][(_0x2df8('0x2d'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5a7661);}_0xf8a5ff[_0x1328de['body'][_0x2df8('0x38')]]=_0x1328de['body'][_0x2df8('0x3b')];})['then'](function(){return db['FaxAccount'][_0x2df8('0x3c')]({'where':{'id':_0x1328de[_0x2df8('0x3d')]['id']},'include':[{'model':db[_0x2df8('0x3e')],'as':'List','include':[{'model':db[_0x2df8('0x3f')],'as':_0x2df8('0x40'),'where':_0xf8a5ff,'limit':0x1,'order':[['updatedAt',_0x2df8('0x41')]]}]},{'model':db[_0x2df8('0x42')],'as':_0x2df8('0x43')}]});})[_0x2df8('0x11')](function(_0x54bced){if(_0x54bced&&_0x54bced[_0x2df8('0x44')]){var _0x403a52=_0x54bced[_0x2df8('0x45')]({'plain':!![]});_0x5f0fb7['account']=_0x403a52;_0x5f0fb7['applications']=_0x403a52[_0x2df8('0x43')];_0x5f0fb7[_0x2df8('0x46')]=_0x403a52[_0x2df8('0x44')];_0x5f0fb7['applications']=_[_0x2df8('0x47')](_0x5f0fb7[_0x2df8('0x48')],[_0x2df8('0x49')],[_0x2df8('0x4a')]);if(_0x5f0fb7[_0x2df8('0x3d')][_0x2df8('0x43')]){delete _0x5f0fb7['account'][_0x2df8('0x43')];}if(_0x5f0fb7[_0x2df8('0x3d')][_0x2df8('0x44')]&&_0x5f0fb7[_0x2df8('0x3d')][_0x2df8('0x44')]['Contacts']['length']){return _0x5f0fb7['account']['List'][_0x2df8('0x40')][0x0];}var _0x49a387=_[_0x2df8('0xb')](_0x1328de[_0x2df8('0x29')],{'firstName':_0x1328de[_0x2df8('0x29')][_0x2df8('0x3b')],'ListId':_0x403a52[_0x2df8('0x34')]});_0x49a387[_0x1328de[_0x2df8('0x29')][_0x2df8('0x38')]]=_0x1328de[_0x2df8('0x29')][_0x2df8('0x3b')];return db['CmContact']['create'](_0x49a387,{'fields':_0x462990,'raw':!![]});}})[_0x2df8('0x11')](function(_0x39b568){_0x5f0fb7[_0x2df8('0x4b')]=_0x39b568;if(_0x39b568){var _0x5a9f0e={'ContactId':_0x39b568['id'],'FaxAccountId':_0x1328de[_0x2df8('0x3d')]['id'],'fax':_0x39b568['fax']};return db[_0x2df8('0x4c')]['find']({'where':{'ContactId':_0x39b568['id'],'closed':![],'FaxAccountId':_0x1328de[_0x2df8('0x3d')]['id']}})[_0x2df8('0x11')](function(_0x2a2599){if(_0x2a2599){return[_0x2a2599,![]];}return db[_0x2df8('0x4c')]['create'](_0x5a9f0e)[_0x2df8('0x11')](function(_0x23dc1f){return[_0x23dc1f,!![]];});});}else{throw new Error(_0x2df8('0x4d'));}})[_0x2df8('0x4e')](function(_0x185ca0,_0x5e8b50){var _0x271849=_0x185ca0[_0x2df8('0x45')]({'plain':!![]});if(_0x5e8b50){if(_0x5f0fb7[_0x2df8('0x3d')][_0x2df8('0x4f')]){_0x5f0fb7['applications'][_0x2df8('0x50')]({'id':0x0,'priority':_0x5f0fb7[_0x2df8('0x48')][_0x2df8('0x51')]+0x1,'app':_0x2df8('0x52'),'appdata':_0x2df8('0x53'),'interval':_0x2df8('0x54')});}_0x271849[_0x2df8('0x55')]=!![];}else{_0x271849[_0x2df8('0x55')]=![];}_0x5f0fb7[_0x2df8('0x56')]=_0x271849;return db['FaxMessage'][_0x2df8('0x57')]({'body':_0x1328de[_0x2df8('0x29')][_0x2df8('0x29')],'FaxAccountId':_0x1328de[_0x2df8('0x3d')]['id'],'FaxInteractionId':_0x185ca0['id'],'direction':'in','ContactId':_0x185ca0[_0x2df8('0x58')],'AttachmentId':_0x1328de['body'][_0x2df8('0x59')]});})['then'](function(_0x1c4011){_0x5f0fb7[_0x2df8('0x19')]=_0x1c4011;if(_0x5f0fb7[_0x2df8('0x56')]['UserId']){return db[_0x2df8('0x5a')][_0x2df8('0x3c')]({'attributes':['id',_0x2df8('0x5b')],'where':{'id':_0x5f0fb7[_0x2df8('0x56')][_0x2df8('0x5c')]}})['then'](function(_0x272db3){if(_0x272db3){_0x5f0fb7[_0x2df8('0x48')][_0x2df8('0x5d')]({'id':0x0,'priority':0x0,'app':_0x2df8('0x5e'),'appdata':_0x272db3['name']+','+(_0x5f0fb7[_0x2df8('0x3d')][_0x2df8('0x5f')]||0xa),'interval':_0x2df8('0x54')});}return respondWithRpcPromise(_0x2df8('0x60'),_0x2df8('0x61'),_0x5f0fb7);});}return respondWithRpcPromise(_0x2df8('0x60'),_0x2df8('0x61'),_0x5f0fb7);})[_0x2df8('0x11')](function(_0x53d299){_0x344eea(_0x53d299);})[_0x2df8('0x27')](function(_0x1f7fe7){_0x569cf6(_0x4f0830[_0x2df8('0x16')](0x1f4,_0x1f7fe7[_0x2df8('0x19')]));});});};
\ No newline at end of file
index 2af1b71..e7e7fe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb3d=['update','emit','removeListener','register','length','faxAccount:','./faxAccount.events','save','remove'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0xcb3d,0x153));var _0xdcb3=function(_0x5105ca,_0x1dc7dd){_0x5105ca=_0x5105ca-0x0;var _0x2e7cde=_0xcb3d[_0x5105ca];return _0x2e7cde;};'use strict';var FaxAccountEvents=require(_0xdcb3('0x0'));var events=[_0xdcb3('0x1'),_0xdcb3('0x2'),_0xdcb3('0x3')];function createListener(_0x2b289c,_0x4f0519){return function(_0x374a5b){_0x4f0519[_0xdcb3('0x4')](_0x2b289c,_0x374a5b);};}function removeListener(_0x541850,_0x242981){return function(){FaxAccountEvents[_0xdcb3('0x5')](_0x541850,_0x242981);};}exports[_0xdcb3('0x6')]=function(_0x136d5e){for(var _0xa46952=0x0,_0x273923=events[_0xdcb3('0x7')];_0xa46952<_0x273923;_0xa46952++){var _0x32dc19=events[_0xa46952];var _0x2d3c1a=createListener(_0xdcb3('0x8')+_0x32dc19,_0x136d5e);FaxAccountEvents['on'](_0x32dc19,_0x2d3c1a);}};
\ No newline at end of file
+var _0xa705=['./faxAccount.events','save','update','emit','removeListener','length','faxAccount:'];(function(_0x59628d,_0x57d370){var _0x1e223f=function(_0x260733){while(--_0x260733){_0x59628d['push'](_0x59628d['shift']());}};_0x1e223f(++_0x57d370);}(_0xa705,0x1b2));var _0x5a70=function(_0x17e769,_0x12d189){_0x17e769=_0x17e769-0x0;var _0x2f6d5d=_0xa705[_0x17e769];return _0x2f6d5d;};'use strict';var FaxAccountEvents=require(_0x5a70('0x0'));var events=[_0x5a70('0x1'),'remove',_0x5a70('0x2')];function createListener(_0xd63800,_0x1c836b){return function(_0x3f66e3){_0x1c836b[_0x5a70('0x3')](_0xd63800,_0x3f66e3);};}function removeListener(_0xbec9c0,_0x4bdab1){return function(){FaxAccountEvents[_0x5a70('0x4')](_0xbec9c0,_0x4bdab1);};}exports['register']=function(_0xf92d05){for(var _0x55640d=0x0,_0x1224f0=events[_0x5a70('0x5')];_0x55640d<_0x1224f0;_0x55640d++){var _0x52b6b5=events[_0x55640d];var _0x15792a=createListener(_0x5a70('0x6')+_0x52b6b5,_0xf92d05);FaxAccountEvents['on'](_0x52b6b5,_0x15792a);}};
\ No newline at end of file
index e8f6a03..76522c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x1fbbe4,_0x55018d){var _0x338485=function(_0x6ca45c){while(--_0x6ca45c){_0x1fbbe4['push'](_0x1fbbe4['shift']());}};_0x338485(++_0x55018d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x15330a,_0x38657a){var _0x3e97a4=function(_0x13b21f){while(--_0x13b21f){_0x15330a['push'](_0x15330a['shift']());}};_0x3e97a4(++_0x38657a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index 9898b80..5b17dae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x047c=['STRING','TEXT','*,*,*,*','sequelize','exports'];(function(_0x29996b,_0x2bc9d5){var _0x22e122=function(_0x427509){while(--_0x427509){_0x29996b['push'](_0x29996b['shift']());}};_0x22e122(++_0x2bc9d5);}(_0x047c,0x1b1));var _0xc047=function(_0x267c95,_0x5f3e92){_0x267c95=_0x267c95-0x0;var _0x510cf5=_0x047c[_0x267c95];return _0x510cf5;};'use strict';var Sequelize=require(_0xc047('0x0'));module[_0xc047('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xc047('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xc047('0x3')]()},'description':{'type':Sequelize[_0xc047('0x2')]},'interval':{'type':Sequelize[_0xc047('0x2')],'defaultValue':_0xc047('0x4')}};
\ No newline at end of file
+var _0xd6c9=['exports','noop','STRING','*,*,*,*'];(function(_0x2b90ac,_0xfd7db){var _0x2db3b4=function(_0x305c83){while(--_0x305c83){_0x2b90ac['push'](_0x2b90ac['shift']());}};_0x2db3b4(++_0xfd7db);}(_0xd6c9,0x128));var _0x9d6c=function(_0x5f3819,_0x5a824e){_0x5f3819=_0x5f3819-0x0;var _0x2f6253=_0xd6c9[_0x5f3819];return _0x2f6253;};'use strict';var Sequelize=require('sequelize');module[_0x9d6c('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9d6c('0x1')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9d6c('0x2')]},'interval':{'type':Sequelize[_0x9d6c('0x2')],'defaultValue':_0x9d6c('0x3')}};
\ No newline at end of file
index 70f462e..740ed25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee0a=['then','destroy','error','stack','name','send','index','map','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','FaxApplication','findAll','rows','show','catch','create','body','update','find','params','eml-format','rimraf','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save'];(function(_0xbbd673,_0x40a9d8){var _0x5a6a48=function(_0x4909c5){while(--_0x4909c5){_0xbbd673['push'](_0xbbd673['shift']());}};_0x5a6a48(++_0x40a9d8);}(_0xee0a,0x153));var _0xaee0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee0a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xaee0('0x0'));var rimraf=require(_0xaee0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xaee0('0x2'));var moment=require('moment');var BPromise=require(_0xaee0('0x3'));var Mustache=require('mustache');var util=require(_0xaee0('0x4'));var path=require(_0xaee0('0x5'));var sox=require(_0xaee0('0x6'));var csv=require(_0xaee0('0x7'));var ejs=require(_0xaee0('0x8'));var fs=require('fs');var fs_extra=require(_0xaee0('0x9'));var _=require('lodash');var squel=require(_0xaee0('0xa'));var crypto=require(_0xaee0('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xaee0('0xc'));var toCsv=require(_0xaee0('0x7'));var querystring=require(_0xaee0('0xd'));var Papa=require(_0xaee0('0xe'));var Redis=require(_0xaee0('0xf'));var authService=require(_0xaee0('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xaee0('0x11'));var hardwareService=require(_0xaee0('0x12'));var logger=require(_0xaee0('0x13'))(_0xaee0('0x14'));var utils=require('../../config/utils');var config=require(_0xaee0('0x15'));var licenseUtil=require(_0xaee0('0x16'));var db=require(_0xaee0('0x17'))['db'];function respondWithStatusCode(_0x3eb55c,_0x2d06d9){_0x2d06d9=_0x2d06d9||0xcc;return function(_0xd90cc4){if(_0xd90cc4){return _0x3eb55c[_0xaee0('0x18')](_0x2d06d9);}return _0x3eb55c[_0xaee0('0x19')](_0x2d06d9)[_0xaee0('0x1a')]();};}function respondWithResult(_0x397f,_0x20ae1d){_0x20ae1d=_0x20ae1d||0xc8;return function(_0x5859e8){if(_0x5859e8){return _0x397f[_0xaee0('0x19')](_0x20ae1d)['json'](_0x5859e8);}};}function respondWithFilteredResult(_0x5b3184,_0x48d35f){return function(_0x3adffb){if(_0x3adffb){var _0x3290b2=typeof _0x48d35f[_0xaee0('0x1b')]===_0xaee0('0x1c')&&typeof _0x48d35f[_0xaee0('0x1d')]===_0xaee0('0x1c');var _0x3746cc=_0x3adffb['count'];var _0x4bfaff=_0x3290b2?0x0:_0x48d35f[_0xaee0('0x1b')];var _0x4921ec=_0x3290b2?_0x3adffb[_0xaee0('0x1e')]:_0x48d35f[_0xaee0('0x1b')]+_0x48d35f['limit'];var _0xdf3c74;if(_0x4921ec>=_0x3746cc){_0x4921ec=_0x3746cc;_0xdf3c74=0xc8;}else{_0xdf3c74=0xce;}_0x5b3184[_0xaee0('0x19')](_0xdf3c74);return _0x5b3184['set'](_0xaee0('0x1f'),_0x4bfaff+'-'+_0x4921ec+'/'+_0x3746cc)[_0xaee0('0x20')](_0x3adffb);}return null;};}function patchUpdates(_0x59d49f){return function(_0x3f05bb){try{jsonpatch[_0xaee0('0x21')](_0x3f05bb,_0x59d49f,!![]);}catch(_0x27f7c3){return BPromise[_0xaee0('0x22')](_0x27f7c3);}return _0x3f05bb[_0xaee0('0x23')]();};}function saveUpdates(_0x1d4c61,_0xaf37e8){return function(_0x1f9862){if(_0x1f9862){return _0x1f9862['update'](_0x1d4c61)[_0xaee0('0x24')](function(_0x4ba09c){return _0x4ba09c;});}return null;};}function removeEntity(_0x5252b2,_0x442725){return function(_0x246d53){if(_0x246d53){return _0x246d53[_0xaee0('0x25')]()['then'](function(){_0x5252b2[_0xaee0('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5decb8,_0x3bff6f){return function(_0x20848e){if(!_0x20848e){_0x5decb8[_0xaee0('0x18')](0x194);}return _0x20848e;};}function handleError(_0x30cf08,_0x5911f2){_0x5911f2=_0x5911f2||0x1f4;return function(_0x333a1b){logger[_0xaee0('0x26')](_0x333a1b[_0xaee0('0x27')]);if(_0x333a1b[_0xaee0('0x28')]){delete _0x333a1b[_0xaee0('0x28')];}_0x30cf08[_0xaee0('0x19')](_0x5911f2)[_0xaee0('0x29')](_0x333a1b);};}exports[_0xaee0('0x2a')]=function(_0x494b16,_0xfec421){var _0x1bf40b={},_0x2f8d84={},_0x350c2a={'count':0x0,'rows':[]};var _0x583d85=_[_0xaee0('0x2b')](db['FaxApplication'][_0xaee0('0x2c')],function(_0x63020){return{'name':_0x63020['fieldName'],'type':_0x63020[_0xaee0('0x2d')]['key']};});_0x2f8d84['model']=_[_0xaee0('0x2b')](_0x583d85,_0xaee0('0x28'));_0x2f8d84[_0xaee0('0x2e')]=_[_0xaee0('0x2f')](_0x494b16['query']);_0x2f8d84[_0xaee0('0x30')]=_[_0xaee0('0x31')](_0x2f8d84[_0xaee0('0x32')],_0x2f8d84[_0xaee0('0x2e')]);_0x1bf40b[_0xaee0('0x33')]=_['intersection'](_0x2f8d84[_0xaee0('0x32')],qs[_0xaee0('0x34')](_0x494b16['query'][_0xaee0('0x34')]));_0x1bf40b[_0xaee0('0x33')]=_0x1bf40b[_0xaee0('0x33')][_0xaee0('0x35')]?_0x1bf40b[_0xaee0('0x33')]:_0x2f8d84[_0xaee0('0x32')];if(!_0x494b16[_0xaee0('0x2e')][_0xaee0('0x36')](_0xaee0('0x37'))){_0x1bf40b['limit']=qs[_0xaee0('0x1d')](_0x494b16[_0xaee0('0x2e')][_0xaee0('0x1d')]);_0x1bf40b['offset']=qs[_0xaee0('0x1b')](_0x494b16[_0xaee0('0x2e')]['offset']);}_0x1bf40b[_0xaee0('0x38')]=qs[_0xaee0('0x39')](_0x494b16[_0xaee0('0x2e')]['sort']);_0x1bf40b[_0xaee0('0x3a')]=qs[_0xaee0('0x30')](_[_0xaee0('0x3b')](_0x494b16['query'],_0x2f8d84['filters']),_0x583d85);if(_0x494b16['query']['filter']){_0x1bf40b[_0xaee0('0x3a')]=_[_0xaee0('0x3c')](_0x1bf40b[_0xaee0('0x3a')],{'$or':_[_0xaee0('0x2b')](_0x583d85,function(_0x57a870){if(_0x57a870[_0xaee0('0x2d')]!==_0xaee0('0x3d')){var _0x33800d={};_0x33800d[_0x57a870[_0xaee0('0x28')]]={'$like':'%'+_0x494b16[_0xaee0('0x2e')]['filter']+'%'};return _0x33800d;}})});}_0x1bf40b=_[_0xaee0('0x3c')]({},_0x1bf40b,_0x494b16[_0xaee0('0x3e')]);var _0x182407={'where':_0x1bf40b['where']};return db['FaxApplication'][_0xaee0('0x1e')](_0x182407)[_0xaee0('0x24')](function(_0x314b64){_0x350c2a[_0xaee0('0x1e')]=_0x314b64;if(_0x494b16[_0xaee0('0x2e')][_0xaee0('0x3f')]){_0x1bf40b[_0xaee0('0x40')]=[{'all':!![]}];}return db[_0xaee0('0x41')][_0xaee0('0x42')](_0x1bf40b);})[_0xaee0('0x24')](function(_0x37c7a2){_0x350c2a[_0xaee0('0x43')]=_0x37c7a2;return _0x350c2a;})['then'](respondWithFilteredResult(_0xfec421,_0x1bf40b))['catch'](handleError(_0xfec421,null));};exports[_0xaee0('0x44')]=function(_0x410d71,_0x14c35a){var _0x232a21={'raw':!![],'where':{'id':_0x410d71['params']['id']}},_0x4392a0={};_0x4392a0[_0xaee0('0x32')]=_['keys'](db[_0xaee0('0x41')][_0xaee0('0x2c')]);_0x4392a0[_0xaee0('0x2e')]=_['keys'](_0x410d71[_0xaee0('0x2e')]);_0x4392a0[_0xaee0('0x30')]=_[_0xaee0('0x31')](_0x4392a0[_0xaee0('0x32')],_0x4392a0[_0xaee0('0x2e')]);_0x232a21['attributes']=_[_0xaee0('0x31')](_0x4392a0[_0xaee0('0x32')],qs[_0xaee0('0x34')](_0x410d71[_0xaee0('0x2e')][_0xaee0('0x34')]));_0x232a21[_0xaee0('0x33')]=_0x232a21[_0xaee0('0x33')]['length']?_0x232a21[_0xaee0('0x33')]:_0x4392a0[_0xaee0('0x32')];if(_0x410d71[_0xaee0('0x2e')][_0xaee0('0x3f')]){_0x232a21[_0xaee0('0x40')]=[{'all':!![]}];}_0x232a21=_['merge']({},_0x232a21,_0x410d71[_0xaee0('0x3e')]);return db[_0xaee0('0x41')]['find'](_0x232a21)[_0xaee0('0x24')](handleEntityNotFound(_0x14c35a,null))['then'](respondWithResult(_0x14c35a,null))[_0xaee0('0x45')](handleError(_0x14c35a,null));};exports[_0xaee0('0x46')]=function(_0x5c7122,_0x48944c){return db[_0xaee0('0x41')][_0xaee0('0x46')](_0x5c7122[_0xaee0('0x47')],{})['then'](respondWithResult(_0x48944c,0xc9))[_0xaee0('0x45')](handleError(_0x48944c,null));};exports[_0xaee0('0x48')]=function(_0x5858d4,_0x57c7e0){if(_0x5858d4[_0xaee0('0x47')]['id']){delete _0x5858d4[_0xaee0('0x47')]['id'];}return db[_0xaee0('0x41')][_0xaee0('0x49')]({'where':{'id':_0x5858d4[_0xaee0('0x4a')]['id']}})[_0xaee0('0x24')](handleEntityNotFound(_0x57c7e0,null))[_0xaee0('0x24')](saveUpdates(_0x5858d4['body'],null))['then'](respondWithResult(_0x57c7e0,null))[_0xaee0('0x45')](handleError(_0x57c7e0,null));};exports[_0xaee0('0x25')]=function(_0x3fb4a4,_0x54bbc0){return db[_0xaee0('0x41')][_0xaee0('0x49')]({'where':{'id':_0x3fb4a4['params']['id']}})[_0xaee0('0x24')](handleEntityNotFound(_0x54bbc0,null))['then'](removeEntity(_0x54bbc0,null))[_0xaee0('0x45')](handleError(_0x54bbc0,null));};
\ No newline at end of file
+var _0x905c=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','reject','save','update','then','destroy','error','stack','name','send','map','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','FaxApplication','includeAll','include','findAll','rows','show','params','keys','rawAttributes','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x905c,0xc7));var _0xc905=function(_0xae17b7,_0x506237){_0xae17b7=_0xae17b7-0x0;var _0x17f518=_0x905c[_0xae17b7];return _0x17f518;};'use strict';var emlformat=require(_0xc905('0x0'));var rimraf=require(_0xc905('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc905('0x2'));var rp=require(_0xc905('0x3'));var moment=require(_0xc905('0x4'));var BPromise=require(_0xc905('0x5'));var Mustache=require(_0xc905('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc905('0x7'));var csv=require(_0xc905('0x8'));var ejs=require(_0xc905('0x9'));var fs=require('fs');var fs_extra=require(_0xc905('0xa'));var _=require(_0xc905('0xb'));var squel=require(_0xc905('0xc'));var crypto=require(_0xc905('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc905('0xe'));var authService=require(_0xc905('0xf'));var qs=require(_0xc905('0x10'));var as=require(_0xc905('0x11'));var hardwareService=require(_0xc905('0x12'));var logger=require(_0xc905('0x13'))(_0xc905('0x14'));var utils=require(_0xc905('0x15'));var config=require(_0xc905('0x16'));var licenseUtil=require(_0xc905('0x17'));var db=require(_0xc905('0x18'))['db'];function respondWithStatusCode(_0x136173,_0x2e1e6a){_0x2e1e6a=_0x2e1e6a||0xcc;return function(_0x1c83e9){if(_0x1c83e9){return _0x136173[_0xc905('0x19')](_0x2e1e6a);}return _0x136173[_0xc905('0x1a')](_0x2e1e6a)['end']();};}function respondWithResult(_0x34eaac,_0x4abf9d){_0x4abf9d=_0x4abf9d||0xc8;return function(_0x29e106){if(_0x29e106){return _0x34eaac['status'](_0x4abf9d)[_0xc905('0x1b')](_0x29e106);}};}function respondWithFilteredResult(_0x3c5c77,_0x270d5c){return function(_0x2bca27){if(_0x2bca27){var _0x481ec9=typeof _0x270d5c[_0xc905('0x1c')]==='undefined'&&typeof _0x270d5c[_0xc905('0x1d')]===_0xc905('0x1e');var _0x39eb9d=_0x2bca27[_0xc905('0x1f')];var _0x10940=_0x481ec9?0x0:_0x270d5c[_0xc905('0x1c')];var _0x3b1c21=_0x481ec9?_0x2bca27[_0xc905('0x1f')]:_0x270d5c['offset']+_0x270d5c[_0xc905('0x1d')];var _0x2eda67;if(_0x3b1c21>=_0x39eb9d){_0x3b1c21=_0x39eb9d;_0x2eda67=0xc8;}else{_0x2eda67=0xce;}_0x3c5c77[_0xc905('0x1a')](_0x2eda67);return _0x3c5c77[_0xc905('0x20')]('Content-Range',_0x10940+'-'+_0x3b1c21+'/'+_0x39eb9d)['json'](_0x2bca27);}return null;};}function patchUpdates(_0x2a91bf){return function(_0x1ce908){try{jsonpatch['apply'](_0x1ce908,_0x2a91bf,!![]);}catch(_0x344a00){return BPromise[_0xc905('0x21')](_0x344a00);}return _0x1ce908[_0xc905('0x22')]();};}function saveUpdates(_0x2ad38b,_0x1e99a8){return function(_0x4f57d2){if(_0x4f57d2){return _0x4f57d2[_0xc905('0x23')](_0x2ad38b)[_0xc905('0x24')](function(_0x4ba4ce){return _0x4ba4ce;});}return null;};}function removeEntity(_0x19bf6e,_0x4b4f28){return function(_0x41aea3){if(_0x41aea3){return _0x41aea3[_0xc905('0x25')]()[_0xc905('0x24')](function(){_0x19bf6e[_0xc905('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ee72e,_0xa8ce03){return function(_0xc961d6){if(!_0xc961d6){_0x1ee72e[_0xc905('0x19')](0x194);}return _0xc961d6;};}function handleError(_0x562edb,_0x5255e0){_0x5255e0=_0x5255e0||0x1f4;return function(_0x155ceb){logger[_0xc905('0x26')](_0x155ceb[_0xc905('0x27')]);if(_0x155ceb['name']){delete _0x155ceb[_0xc905('0x28')];}_0x562edb[_0xc905('0x1a')](_0x5255e0)[_0xc905('0x29')](_0x155ceb);};}exports['index']=function(_0x5c2b72,_0x4c7554){var _0x579b63={},_0x5ec662={},_0x190d9a={'count':0x0,'rows':[]};var _0x54ae3c=_[_0xc905('0x2a')](db['FaxApplication']['rawAttributes'],function(_0x5eafc2){return{'name':_0x5eafc2['fieldName'],'type':_0x5eafc2[_0xc905('0x2b')]['key']};});_0x5ec662[_0xc905('0x2c')]=_[_0xc905('0x2a')](_0x54ae3c,_0xc905('0x28'));_0x5ec662[_0xc905('0x2d')]=_['keys'](_0x5c2b72[_0xc905('0x2d')]);_0x5ec662[_0xc905('0x2e')]=_['intersection'](_0x5ec662[_0xc905('0x2c')],_0x5ec662['query']);_0x579b63[_0xc905('0x2f')]=_[_0xc905('0x30')](_0x5ec662['model'],qs[_0xc905('0x31')](_0x5c2b72[_0xc905('0x2d')]['fields']));_0x579b63[_0xc905('0x2f')]=_0x579b63[_0xc905('0x2f')][_0xc905('0x32')]?_0x579b63[_0xc905('0x2f')]:_0x5ec662[_0xc905('0x2c')];if(!_0x5c2b72[_0xc905('0x2d')][_0xc905('0x33')]('nolimit')){_0x579b63['limit']=qs[_0xc905('0x1d')](_0x5c2b72[_0xc905('0x2d')][_0xc905('0x1d')]);_0x579b63['offset']=qs[_0xc905('0x1c')](_0x5c2b72[_0xc905('0x2d')][_0xc905('0x1c')]);}_0x579b63[_0xc905('0x34')]=qs[_0xc905('0x35')](_0x5c2b72[_0xc905('0x2d')][_0xc905('0x35')]);_0x579b63[_0xc905('0x36')]=qs[_0xc905('0x2e')](_[_0xc905('0x37')](_0x5c2b72[_0xc905('0x2d')],_0x5ec662['filters']),_0x54ae3c);if(_0x5c2b72[_0xc905('0x2d')]['filter']){_0x579b63[_0xc905('0x36')]=_[_0xc905('0x38')](_0x579b63[_0xc905('0x36')],{'$or':_[_0xc905('0x2a')](_0x54ae3c,function(_0x150570){if(_0x150570[_0xc905('0x2b')]!==_0xc905('0x39')){var _0x52bdca={};_0x52bdca[_0x150570[_0xc905('0x28')]]={'$like':'%'+_0x5c2b72['query']['filter']+'%'};return _0x52bdca;}})});}_0x579b63=_['merge']({},_0x579b63,_0x5c2b72[_0xc905('0x3a')]);var _0x498615={'where':_0x579b63[_0xc905('0x36')]};return db[_0xc905('0x3b')][_0xc905('0x1f')](_0x498615)['then'](function(_0x305b55){_0x190d9a['count']=_0x305b55;if(_0x5c2b72[_0xc905('0x2d')][_0xc905('0x3c')]){_0x579b63[_0xc905('0x3d')]=[{'all':!![]}];}return db[_0xc905('0x3b')][_0xc905('0x3e')](_0x579b63);})[_0xc905('0x24')](function(_0x5dffb8){_0x190d9a[_0xc905('0x3f')]=_0x5dffb8;return _0x190d9a;})[_0xc905('0x24')](respondWithFilteredResult(_0x4c7554,_0x579b63))['catch'](handleError(_0x4c7554,null));};exports[_0xc905('0x40')]=function(_0x1b0e9a,_0x2513e5){var _0x5d5efd={'raw':!![],'where':{'id':_0x1b0e9a[_0xc905('0x41')]['id']}},_0x9ccb9d={};_0x9ccb9d[_0xc905('0x2c')]=_[_0xc905('0x42')](db['FaxApplication'][_0xc905('0x43')]);_0x9ccb9d[_0xc905('0x2d')]=_['keys'](_0x1b0e9a[_0xc905('0x2d')]);_0x9ccb9d[_0xc905('0x2e')]=_[_0xc905('0x30')](_0x9ccb9d['model'],_0x9ccb9d['query']);_0x5d5efd[_0xc905('0x2f')]=_[_0xc905('0x30')](_0x9ccb9d['model'],qs[_0xc905('0x31')](_0x1b0e9a['query']['fields']));_0x5d5efd[_0xc905('0x2f')]=_0x5d5efd[_0xc905('0x2f')]['length']?_0x5d5efd[_0xc905('0x2f')]:_0x9ccb9d[_0xc905('0x2c')];if(_0x1b0e9a[_0xc905('0x2d')][_0xc905('0x3c')]){_0x5d5efd[_0xc905('0x3d')]=[{'all':!![]}];}_0x5d5efd=_['merge']({},_0x5d5efd,_0x1b0e9a[_0xc905('0x3a')]);return db['FaxApplication'][_0xc905('0x44')](_0x5d5efd)[_0xc905('0x24')](handleEntityNotFound(_0x2513e5,null))[_0xc905('0x24')](respondWithResult(_0x2513e5,null))[_0xc905('0x45')](handleError(_0x2513e5,null));};exports[_0xc905('0x46')]=function(_0x4ef0af,_0x2a8797){return db[_0xc905('0x3b')][_0xc905('0x46')](_0x4ef0af[_0xc905('0x47')],{})['then'](respondWithResult(_0x2a8797,0xc9))[_0xc905('0x45')](handleError(_0x2a8797,null));};exports['update']=function(_0x4dc51c,_0x44afb0){if(_0x4dc51c[_0xc905('0x47')]['id']){delete _0x4dc51c[_0xc905('0x47')]['id'];}return db[_0xc905('0x3b')][_0xc905('0x44')]({'where':{'id':_0x4dc51c[_0xc905('0x41')]['id']}})['then'](handleEntityNotFound(_0x44afb0,null))[_0xc905('0x24')](saveUpdates(_0x4dc51c['body'],null))[_0xc905('0x24')](respondWithResult(_0x44afb0,null))['catch'](handleError(_0x44afb0,null));};exports[_0xc905('0x25')]=function(_0x4970b8,_0x3a5bf1){return db['FaxApplication']['find']({'where':{'id':_0x4970b8[_0xc905('0x41')]['id']}})[_0xc905('0x24')](handleEntityNotFound(_0x3a5bf1,null))[_0xc905('0x24')](removeEntity(_0x3a5bf1,null))[_0xc905('0x45')](handleError(_0x3a5bf1,null));};
\ No newline at end of file
index 93ca875..42be9aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb61f=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','path','exports','define','FaxApplication','fax_applications'];(function(_0x2a15c4,_0x13d117){var _0x2daf32=function(_0x47b94b){while(--_0x47b94b){_0x2a15c4['push'](_0x2a15c4['shift']());}};_0x2daf32(++_0x13d117);}(_0xb61f,0x136));var _0xfb61=function(_0x364e96,_0xccc02e){_0x364e96=_0x364e96-0x0;var _0x3f5aab=_0xb61f[_0x364e96];return _0x3f5aab;};'use strict';var _=require(_0xfb61('0x0'));var util=require(_0xfb61('0x1'));var logger=require(_0xfb61('0x2'))(_0xfb61('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfb61('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./faxApplication.attributes');module[_0xfb61('0x5')]=function(_0x27a030,_0x38ebe8){return _0x27a030[_0xfb61('0x6')](_0xfb61('0x7'),attributes,{'tableName':_0xfb61('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfb61('0x9'),'collate':_0xfb61('0xa')});};
\ No newline at end of file
+var _0x711f=['path','../../config/environment','./faxApplication.attributes','exports','define','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x711f,0x190));var _0xf711=function(_0x5828d0,_0x2c3e93){_0x5828d0=_0x5828d0-0x0;var _0x239b02=_0x711f[_0x5828d0];return _0x239b02;};'use strict';var _=require(_0xf711('0x0'));var util=require(_0xf711('0x1'));var logger=require(_0xf711('0x2'))(_0xf711('0x3'));var moment=require(_0xf711('0x4'));var BPromise=require('bluebird');var rp=require(_0xf711('0x5'));var fs=require('fs');var path=require(_0xf711('0x6'));var rimraf=require('rimraf');var config=require(_0xf711('0x7'));var attributes=require(_0xf711('0x8'));module[_0xf711('0x9')]=function(_0x371dbf,_0x40866d){return _0x371dbf[_0xf711('0xa')]('FaxApplication',attributes,{'tableName':_0xf711('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf711('0xc'),'collate':_0xf711('0xd')});};
\ No newline at end of file
index 1a18021..9c58489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85b3=['attributes','limit','info','debug','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateFaxApplication','FaxApplication','options','where'];(function(_0x536592,_0x20e759){var _0x51e035=function(_0x3ebeb2){while(--_0x3ebeb2){_0x536592['push'](_0x536592['shift']());}};_0x51e035(++_0x20e759);}(_0x85b3,0x90));var _0x385b=function(_0x53bbd3,_0x446dd2){_0x53bbd3=_0x53bbd3-0x0;var _0x4e49d1=_0x85b3[_0x53bbd3];return _0x4e49d1;};'use strict';var _=require(_0x385b('0x0'));var util=require('util');var moment=require(_0x385b('0x1'));var BPromise=require('bluebird');var rs=require(_0x385b('0x2'));var fs=require('fs');var Redis=require(_0x385b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x385b('0x4'));var logger=require('../../config/logger')(_0x385b('0x5'));var config=require(_0x385b('0x6'));var jayson=require(_0x385b('0x7'));var client=jayson[_0x385b('0x8')][_0x385b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3997c8,_0x4598e3,_0xf6d567){return new BPromise(function(_0x22595c,_0x5788a3){return client[_0x385b('0xa')](_0x3997c8,_0xf6d567)[_0x385b('0xb')](function(_0x14e7bb){logger['info'](_0x385b('0xc'),_0x4598e3,_0x385b('0xd'));logger['debug'](_0x385b('0xe'),_0x4598e3,_0x385b('0xd'),JSON[_0x385b('0xf')](_0x14e7bb));if(_0x14e7bb[_0x385b('0x10')]){if(_0x14e7bb[_0x385b('0x10')][_0x385b('0x11')]===0x1f4){logger['error'](_0x385b('0xc'),_0x4598e3,_0x14e7bb['error'][_0x385b('0x12')]);return _0x5788a3(_0x14e7bb[_0x385b('0x10')][_0x385b('0x12')]);}logger[_0x385b('0x10')](_0x385b('0xc'),_0x4598e3,_0x14e7bb[_0x385b('0x10')][_0x385b('0x12')]);return _0x22595c(_0x14e7bb[_0x385b('0x10')][_0x385b('0x12')]);}else{logger['info'](_0x385b('0xc'),_0x4598e3,'request\x20sent');_0x22595c(_0x14e7bb['result'][_0x385b('0x12')]);}})[_0x385b('0x13')](function(_0x455263){logger[_0x385b('0x10')](_0x385b('0xc'),_0x4598e3,_0x455263);_0x5788a3(_0x455263);});});}exports[_0x385b('0x14')]=function(_0x8c7a83){var _0x846caa=this;return new Promise(function(_0x56bdde,_0x47d731){return db[_0x385b('0x15')]['update'](_0x8c7a83['body'],{'raw':_0x8c7a83[_0x385b('0x16')]?_0x8c7a83[_0x385b('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x8c7a83['options']?_0x8c7a83[_0x385b('0x16')][_0x385b('0x17')]||null:null,'attributes':_0x8c7a83[_0x385b('0x16')]?_0x8c7a83[_0x385b('0x16')][_0x385b('0x18')]||null:null,'limit':_0x8c7a83[_0x385b('0x16')]?_0x8c7a83[_0x385b('0x16')][_0x385b('0x19')]||null:null})[_0x385b('0xb')](function(_0x308b93){logger[_0x385b('0x1a')](_0x385b('0x14'),_0x8c7a83);logger[_0x385b('0x1b')](_0x385b('0x14'),_0x8c7a83,JSON[_0x385b('0xf')](_0x308b93));_0x56bdde(_0x308b93);})[_0x385b('0x13')](function(_0x219083){logger[_0x385b('0x10')](_0x385b('0x14'),_0x219083['message'],_0x8c7a83);_0x47d731(_0x846caa[_0x385b('0x10')](0x1f4,_0x219083[_0x385b('0x12')]));});});};
\ No newline at end of file
+var _0x5a1c=['body','options','raw','where','attributes','limit','debug','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','FaxApplication,\x20%s,\x20%s','FaxApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','UpdateFaxApplication','update'];(function(_0x4c9cc0,_0x218a3e){var _0x5ac965=function(_0x273eb2){while(--_0x273eb2){_0x4c9cc0['push'](_0x4c9cc0['shift']());}};_0x5ac965(++_0x218a3e);}(_0x5a1c,0x1e7));var _0xc5a1=function(_0x5b7712,_0x346914){_0x5b7712=_0x5b7712-0x0;var _0x4fa082=_0x5a1c[_0x5b7712];return _0x4fa082;};'use strict';var _=require(_0xc5a1('0x0'));var util=require(_0xc5a1('0x1'));var moment=require('moment');var BPromise=require(_0xc5a1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc5a1('0x3'));var db=require(_0xc5a1('0x4'))['db'];var utils=require(_0xc5a1('0x5'));var logger=require('../../config/logger')(_0xc5a1('0x6'));var config=require(_0xc5a1('0x7'));var jayson=require(_0xc5a1('0x8'));var client=jayson[_0xc5a1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5dbc72,_0x17ae5d,_0x3f9673){return new BPromise(function(_0x10fa8d,_0x43db47){return client[_0xc5a1('0xa')](_0x5dbc72,_0x3f9673)[_0xc5a1('0xb')](function(_0x4e3823){logger['info'](_0xc5a1('0xc'),_0x17ae5d,'request\x20sent');logger['debug'](_0xc5a1('0xd'),_0x17ae5d,_0xc5a1('0xe'),JSON[_0xc5a1('0xf')](_0x4e3823));if(_0x4e3823[_0xc5a1('0x10')]){if(_0x4e3823[_0xc5a1('0x10')][_0xc5a1('0x11')]===0x1f4){logger[_0xc5a1('0x10')](_0xc5a1('0xc'),_0x17ae5d,_0x4e3823[_0xc5a1('0x10')][_0xc5a1('0x12')]);return _0x43db47(_0x4e3823[_0xc5a1('0x10')][_0xc5a1('0x12')]);}logger[_0xc5a1('0x10')](_0xc5a1('0xc'),_0x17ae5d,_0x4e3823['error'][_0xc5a1('0x12')]);return _0x10fa8d(_0x4e3823['error']['message']);}else{logger[_0xc5a1('0x13')](_0xc5a1('0xc'),_0x17ae5d,_0xc5a1('0xe'));_0x10fa8d(_0x4e3823['result'][_0xc5a1('0x12')]);}})[_0xc5a1('0x14')](function(_0x1ec263){logger['error']('FaxApplication,\x20%s,\x20%s',_0x17ae5d,_0x1ec263);_0x43db47(_0x1ec263);});});}exports[_0xc5a1('0x15')]=function(_0x5dfcf3){var _0x511289=this;return new Promise(function(_0x4bcc1b,_0x5126ae){return db['FaxApplication'][_0xc5a1('0x16')](_0x5dfcf3[_0xc5a1('0x17')],{'raw':_0x5dfcf3[_0xc5a1('0x18')]?_0x5dfcf3['options'][_0xc5a1('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5dfcf3[_0xc5a1('0x18')]?_0x5dfcf3[_0xc5a1('0x18')][_0xc5a1('0x1a')]||null:null,'attributes':_0x5dfcf3[_0xc5a1('0x18')]?_0x5dfcf3[_0xc5a1('0x18')][_0xc5a1('0x1b')]||null:null,'limit':_0x5dfcf3['options']?_0x5dfcf3['options'][_0xc5a1('0x1c')]||null:null})['then'](function(_0x181ce4){logger[_0xc5a1('0x13')](_0xc5a1('0x15'),_0x5dfcf3);logger[_0xc5a1('0x1d')](_0xc5a1('0x15'),_0x5dfcf3,JSON['stringify'](_0x181ce4));_0x4bcc1b(_0x181ce4);})[_0xc5a1('0x14')](function(_0x45b2bc){logger['error']('UpdateFaxApplication',_0x45b2bc[_0xc5a1('0x12')],_0x5dfcf3);_0x5126ae(_0x511289[_0xc5a1('0x10')](0x1f4,_0x45b2bc['message']));});});};
\ No newline at end of file
index ed5f5bd..3b6a871 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports','util','path','express'];(function(_0x54d69f,_0x3f450b){var _0x5d2d3c=function(_0x1e9e2e){while(--_0x1e9e2e){_0x54d69f['push'](_0x54d69f['shift']());}};_0x5d2d3c(++_0x3f450b);}(_0x9354,0x96));var _0x4935=function(_0x540dcb,_0x4eacb6){_0x540dcb=_0x540dcb-0x0;var _0x49353c=_0x9354[_0x540dcb];return _0x49353c;};'use strict';var multer=require('multer');var util=require(_0x4935('0x0'));var path=require(_0x4935('0x1'));var timeout=require('connect-timeout');var express=require(_0x4935('0x2'));var router=express[_0x4935('0x3')]();var fs_extra=require(_0x4935('0x4'));var auth=require(_0x4935('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4935('0x6'));var controller=require(_0x4935('0x7'));router[_0x4935('0x8')]('/',auth[_0x4935('0x9')](),controller[_0x4935('0xa')]);router[_0x4935('0x8')](_0x4935('0xb'),auth[_0x4935('0x9')](),controller[_0x4935('0xc')]);router['post']('/',auth[_0x4935('0x9')](),controller['create']);router[_0x4935('0xd')](_0x4935('0xb'),auth[_0x4935('0x9')](),controller[_0x4935('0xe')]);router[_0x4935('0xf')](_0x4935('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x4935('0x10')]=router;
\ No newline at end of file
+var _0xea28=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xea28,0x13a));var _0x8ea2=function(_0x37037c,_0x40380c){_0x37037c=_0x37037c-0x0;var _0x39aff0=_0xea28[_0x37037c];return _0x39aff0;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xf')]('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0x11')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x12')]);router['delete']('/:id',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);module[_0x8ea2('0x14')]=router;
\ No newline at end of file
index be58ddb..09f5ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1809=['out','sequelize','exports','BOOLEAN','STRING','DATE','ENUM'];(function(_0x583c95,_0x2caa4d){var _0x1cb317=function(_0x1e2fd1){while(--_0x1e2fd1){_0x583c95['push'](_0x583c95['shift']());}};_0x1cb317(++_0x2caa4d);}(_0x1809,0x15f));var _0x9180=function(_0x21c4dd,_0x3ea927){_0x21c4dd=_0x21c4dd-0x0;var _0x53722a=_0x1809[_0x21c4dd];return _0x53722a;};'use strict';var Sequelize=require(_0x9180('0x0'));module[_0x9180('0x1')]={'closed':{'type':Sequelize[_0x9180('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x9180('0x3')]},'secondDisposition':{'type':Sequelize[_0x9180('0x3')]},'thirdDisposition':{'type':Sequelize[_0x9180('0x3')]},'note':{'type':Sequelize[_0x9180('0x3')]},'read1stAt':{'type':Sequelize[_0x9180('0x4')]},'fax':{'type':Sequelize[_0x9180('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x9180('0x5')]('in',_0x9180('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x9180('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x6146=['sequelize','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x1c9470,_0x23b9c8){var _0x356879=function(_0x1720ee){while(--_0x1720ee){_0x1c9470['push'](_0x1c9470['shift']());}};_0x356879(++_0x23b9c8);}(_0x6146,0xba));var _0x6614=function(_0x5af8d2,_0x3c1311){_0x5af8d2=_0x5af8d2-0x0;var _0x54f8f4=_0x6146[_0x5af8d2];return _0x54f8f4;};'use strict';var Sequelize=require(_0x6614('0x0'));module['exports']={'closed':{'type':Sequelize[_0x6614('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x6614('0x2')]},'disposition':{'type':Sequelize[_0x6614('0x3')]},'secondDisposition':{'type':Sequelize[_0x6614('0x3')]},'thirdDisposition':{'type':Sequelize[_0x6614('0x3')]},'note':{'type':Sequelize[_0x6614('0x3')]},'read1stAt':{'type':Sequelize[_0x6614('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x6614('0x4')]('in',_0x6614('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x6614('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x6614('0x4')]('in',_0x6614('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 8a6d93a..048ead7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8777=['resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','toString','keyBy','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','show','params','include','create','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','addTags','setTags','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','createReadStream','pipe','createWriteStream','log','err','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','update','destroy','then','error','stack','name','map','fullname','TagIds','Tags','split','forEach','push','catch','index','FaxInteraction','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','select','field','color','from','u.id','ui.FaxInteractionId','left_join','u.id\x20=\x20ui.UserId','fax_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','body','keys','compact','FaxAccountId','i.FaxAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','isEmpty','t.id\x20IN\x20?'];(function(_0x2e6922,_0x439673){var _0x2d8c6e=function(_0x3d4670){while(--_0x3d4670){_0x2e6922['push'](_0x2e6922['shift']());}};_0x2d8c6e(++_0x439673);}(_0x8777,0x1f4));var _0x7877=function(_0x55d032,_0x4e4d83){_0x55d032=_0x55d032-0x0;var _0x4634d3=_0x8777[_0x55d032];return _0x4634d3;};'use strict';var emlformat=require(_0x7877('0x0'));var rimraf=require(_0x7877('0x1'));var zipdir=require(_0x7877('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7877('0x3'));var BPromise=require(_0x7877('0x4'));var Mustache=require('mustache');var util=require(_0x7877('0x5'));var path=require(_0x7877('0x6'));var sox=require('sox');var csv=require(_0x7877('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7877('0x8'));var _=require(_0x7877('0x9'));var squel=require('squel');var crypto=require(_0x7877('0xa'));var jsforce=require(_0x7877('0xb'));var deskjs=require(_0x7877('0xc'));var toCsv=require(_0x7877('0x7'));var querystring=require(_0x7877('0xd'));var Papa=require(_0x7877('0xe'));var Redis=require(_0x7877('0xf'));var authService=require(_0x7877('0x10'));var qs=require(_0x7877('0x11'));var as=require(_0x7877('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7877('0x13'))('api');var utils=require(_0x7877('0x14'));var config=require(_0x7877('0x15'));var licenseUtil=require(_0x7877('0x16'));var db=require(_0x7877('0x17'))['db'];config[_0x7877('0x18')]=_[_0x7877('0x19')](config[_0x7877('0x18')],{'host':_0x7877('0x1a'),'port':0x18eb});var socket=require(_0x7877('0x1b'))(new Redis(config[_0x7877('0x18')]));require(_0x7877('0x1c'))[_0x7877('0x1d')](socket);function respondWithStatusCode(_0x3c6502,_0x465557){_0x465557=_0x465557||0xcc;return function(_0x67f075){if(_0x67f075){return _0x3c6502[_0x7877('0x1e')](_0x465557);}return _0x3c6502['status'](_0x465557)[_0x7877('0x1f')]();};}function respondWithResult(_0x2e9151,_0x2ec4c5){_0x2ec4c5=_0x2ec4c5||0xc8;return function(_0x47fc29){if(_0x47fc29){return _0x2e9151['status'](_0x2ec4c5)[_0x7877('0x20')](_0x47fc29);}};}function respondWithFilteredResult(_0x229d5e,_0x2d8053){return function(_0x410e05){if(_0x410e05){var _0xf0153a=typeof _0x2d8053[_0x7877('0x21')]===_0x7877('0x22')&&typeof _0x2d8053[_0x7877('0x23')]==='undefined';var _0x457ef5=_0x410e05[_0x7877('0x24')];var _0x448f97=_0xf0153a?0x0:_0x2d8053[_0x7877('0x21')];var _0x4e787c=_0xf0153a?_0x410e05['count']:_0x2d8053[_0x7877('0x21')]+_0x2d8053[_0x7877('0x23')];var _0x22789d;if(_0x4e787c>=_0x457ef5){_0x4e787c=_0x457ef5;_0x22789d=0xc8;}else{_0x22789d=0xce;}_0x229d5e[_0x7877('0x25')](_0x22789d);return _0x229d5e['set'](_0x7877('0x26'),_0x448f97+'-'+_0x4e787c+'/'+_0x457ef5)[_0x7877('0x20')](_0x410e05);}return null;};}function patchUpdates(_0x5eaf37){return function(_0x5e8190){try{jsonpatch[_0x7877('0x27')](_0x5e8190,_0x5eaf37,!![]);}catch(_0x57d5ab){return BPromise[_0x7877('0x28')](_0x57d5ab);}return _0x5e8190['save']();};}function saveUpdates(_0x2a6029,_0x27e6bc){return function(_0x4ddf18){if(_0x4ddf18){return _0x4ddf18[_0x7877('0x29')](_0x2a6029)['then'](function(_0x53ee6f){return _0x53ee6f;});}return null;};}function removeEntity(_0x15f414,_0x396f20){return function(_0x5dd416){if(_0x5dd416){return _0x5dd416[_0x7877('0x2a')]()[_0x7877('0x2b')](function(){_0x15f414[_0x7877('0x25')](0xcc)[_0x7877('0x1f')]();});}};}function handleEntityNotFound(_0x56c6c1,_0x556b19){return function(_0x1e32fa){if(!_0x1e32fa){_0x56c6c1[_0x7877('0x1e')](0x194);}return _0x1e32fa;};}function handleError(_0x18a5fb,_0x4b630b){_0x4b630b=_0x4b630b||0x1f4;return function(_0x5319a0){logger[_0x7877('0x2c')](_0x5319a0[_0x7877('0x2d')]);if(_0x5319a0[_0x7877('0x2e')]){delete _0x5319a0[_0x7877('0x2e')];}_0x18a5fb[_0x7877('0x25')](_0x4b630b)['send'](_0x5319a0);};}function getInteractionUsers(_0x56a518,_0x2887b2){return new BPromise(function(_0x2c17fe,_0x472428){try{if(_0x2887b2[_0x56a518['id']]){_0x56a518['Users']=_[_0x7877('0x2f')](_0x2887b2[_0x56a518['id']],function(_0x38fd19){return{'id':_0x38fd19['id'],'fullname':_0x38fd19[_0x7877('0x30')]};});}}catch(_0x1f94d5){_0x472428(_0x1f94d5);}_0x2c17fe(_0x56a518);});}function getInteractionTags(_0x5c2fba,_0x56e554){return new BPromise(function(_0x56ddbe,_0x17ccd1){try{if(_0x5c2fba[_0x7877('0x31')]){_0x5c2fba[_0x7877('0x32')]=[];_0x5c2fba[_0x7877('0x31')][_0x7877('0x33')](',')[_0x7877('0x34')](function(_0x15955e){_0x5c2fba[_0x7877('0x32')][_0x7877('0x35')](_0x56e554[_0x15955e]);});}delete _0x5c2fba[_0x7877('0x31')];}catch(_0x182e26){_0x17ccd1(_0x182e26);}_0x56ddbe(_0x5c2fba);});}function updateFaxInteraction(_0x5dc671,_0x8563d,_0x414061){return new BPromise(function(_0x35a218,_0x87c01d){return getInteractionUsers(_0x5dc671,_0x414061)[_0x7877('0x2b')](function(_0xe142e5){return getInteractionTags(_0xe142e5,_0x8563d);})[_0x7877('0x2b')](function(_0x1592bc){_0x35a218(_0x1592bc);})[_0x7877('0x36')](function(_0x1c4a6a){_0x87c01d(_0x1c4a6a);});});}exports[_0x7877('0x37')]=function(_0x4c1168,_0x4252e2){var _0x248375={},_0x2c7010={},_0x559ce4={'count':0x0,'rows':[]};var _0x127711=_[_0x7877('0x2f')](db[_0x7877('0x38')][_0x7877('0x39')],function(_0x3c0c59){return{'name':_0x3c0c59[_0x7877('0x3a')],'type':_0x3c0c59[_0x7877('0x3b')][_0x7877('0x3c')]};});_0x2c7010[_0x7877('0x3d')]=_[_0x7877('0x2f')](_0x127711,_0x7877('0x2e'));_0x2c7010[_0x7877('0x3e')]=_['keys'](_0x4c1168['query']);_0x2c7010['filters']=_[_0x7877('0x3f')](_0x2c7010[_0x7877('0x3d')],_0x2c7010[_0x7877('0x3e')]);_0x248375[_0x7877('0x40')]=_['intersection'](_0x2c7010[_0x7877('0x3d')],qs[_0x7877('0x41')](_0x4c1168[_0x7877('0x3e')]['fields']));_0x248375[_0x7877('0x40')]=_0x248375[_0x7877('0x40')][_0x7877('0x42')]?_0x248375[_0x7877('0x40')]:_0x2c7010['model'];if(!_0x4c1168['query'][_0x7877('0x43')](_0x7877('0x44'))){_0x248375[_0x7877('0x23')]=qs[_0x7877('0x23')](_0x4c1168['query'][_0x7877('0x23')]);_0x248375[_0x7877('0x21')]=qs[_0x7877('0x21')](_0x4c1168[_0x7877('0x3e')][_0x7877('0x21')]);}_0x248375['order']=qs[_0x7877('0x45')](_0x4c1168[_0x7877('0x3e')][_0x7877('0x45')]);_0x248375[_0x7877('0x46')]=qs[_0x7877('0x47')](_[_0x7877('0x48')](_0x4c1168[_0x7877('0x3e')],_0x2c7010[_0x7877('0x47')]),_0x127711);var _0x1d2600=[];var _0x5178e1=squel[_0x7877('0x49')]()[_0x7877('0x4a')]('id')[_0x7877('0x4a')](_0x7877('0x2e'))[_0x7877('0x4a')](_0x7877('0x4b'))[_0x7877('0x4c')]('tools_tags');var _0xfddb2b=squel[_0x7877('0x49')]()[_0x7877('0x4a')](_0x7877('0x4d'))['field']('u.fullname')[_0x7877('0x4a')](_0x7877('0x4e'))['from']('user_has_fax_interactions','ui')[_0x7877('0x4f')]('users','u',_0x7877('0x50'));var _0x3e7c0a=squel[_0x7877('0x49')]()[_0x7877('0x4c')](_0x7877('0x51'),'i')[_0x7877('0x4f')]('cm_contacts','c',_0x7877('0x52'))[_0x7877('0x4f')]('users','o',_0x7877('0x53'))[_0x7877('0x4f')](_0x7877('0x54'),'a',_0x7877('0x55'))[_0x7877('0x4f')](_0x7877('0x56'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x7877('0x4f')](_0x7877('0x57'),'it',_0x7877('0x58'))[_0x7877('0x4f')](_0x7877('0x59'),'t',_0x7877('0x5a'));var _0x184a31=squel[_0x7877('0x5b')]();var _0x198537=[];var _0x48ac15=squel['expr']();var _0x5e5e42;if(_0x4c1168[_0x7877('0x3e')][_0x7877('0x5c')]){_0x5e5e42=as['parseSearch'](_0x4c1168[_0x7877('0x3e')][_0x7877('0x5c')]);var _0x4cc08d=_0x5e5e42[_0x7877('0x5d')];for(var _0x5578a8=0x0;_0x5578a8<_0x5e5e42[_0x7877('0x5e')][_0x7877('0x42')];_0x5578a8++){var _0x30d22e=_0x5e5e42[_0x7877('0x5e')][_0x5578a8];var _0x567d8f='i';var _0x18777a=_[_0x7877('0x5f')](_0x127711,[_0x7877('0x2e'),_0x30d22e[_0x7877('0x4a')]]);if(!_0x18777a){switch(_0x30d22e[_0x7877('0x4a')]){case _0x7877('0x60'):if(_0x30d22e[_0x7877('0x61')]==0x1){_0x3e7c0a[_0x7877('0x62')]('`'+_0x30d22e[_0x7877('0x4a')]+_0x7877('0x63'));}else{_0x3e7c0a[_0x7877('0x62')]('`'+_0x30d22e['field']+_0x7877('0x64'));}break;case _0x7877('0x65'):if(_0x30d22e['operator']===_0x7877('0x66')){if(_0x30d22e['value'][_0x7877('0x33')]('\x20')['length']>0x1){_0x184a31[_0x4cc08d]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x30d22e['value']),null);}else{var _0x4677d2='%'+_0x30d22e[_0x7877('0x61')]+'%';_0x184a31[_0x4cc08d](_0x7877('0x67'),_0x4677d2,_0x4677d2,_0x4677d2);}}else{_0x18777a=_['find'](_0x127711,['name',_0x7877('0x68')]);_0x30d22e['field']=_0x7877('0x68');_0x311986=as[_0x7877('0x69')](_0x567d8f,_0x18777a[_0x7877('0x3b')],_0x30d22e);_0x184a31[_0x4cc08d](_0x311986['text'],_0x311986[_0x7877('0x61')][_0x7877('0x6a')],_0x311986[_0x7877('0x61')][_0x7877('0x1f')]);}break;case _0x7877('0x6b'):var _0x13eb03=_0x30d22e['value']['split'](',')[_0x7877('0x2f')](function(_0xb18a18){return Number(_0xb18a18);});_0x13eb03['forEach'](function(_0x4b2265){_0x48ac15['or'](_0x7877('0x6c'),'%,'+_0x4b2265+',%');});_0x198537=_['union'](_0x198537,_0x13eb03);break;case _0x7877('0x6d'):if(_0x30d22e[_0x7877('0x6e')]===_0x7877('0x66')){_0x184a31[_0x4cc08d](_0x7877('0x6f'),'%'+_0x30d22e[_0x7877('0x61')]+'%',null);}else{_0x18777a=_[_0x7877('0x5f')](_0x127711,[_0x7877('0x2e'),_0x7877('0x70')]);_0x30d22e[_0x7877('0x4a')]='UserId';_0x311986=as[_0x7877('0x69')](_0x567d8f,_0x18777a[_0x7877('0x3b')],_0x30d22e);_0x184a31[_0x4cc08d](_0x311986[_0x7877('0x71')],_0x311986['value'][_0x7877('0x6a')],_0x311986[_0x7877('0x61')][_0x7877('0x1f')]);}break;case _0x7877('0x72'):_0x311986=as['buildExpression']('me',null,_0x30d22e);_0x184a31[_0x4cc08d](_0x311986[_0x7877('0x71')],_0x311986[_0x7877('0x61')][_0x7877('0x6a')],_0x311986[_0x7877('0x61')][_0x7877('0x1f')]);break;}}else{var _0x311986=as[_0x7877('0x69')](_0x567d8f,_0x18777a[_0x7877('0x3b')],_0x30d22e);_0x184a31[_0x4cc08d](_0x311986[_0x7877('0x71')],_0x311986['value']['start'],_0x311986['value'][_0x7877('0x1f')]);}}}else{var _0x41fcb8=_(_0x4c1168[_0x7877('0x3e')])[_0x7877('0x73')]()[_0x7877('0x2f')](function(_0x3be5ff){return _['some'](_0x127711,[_0x7877('0x2e'),_0x3be5ff])?_0x3be5ff:undefined;})[_0x7877('0x74')]()[_0x7877('0x61')]();if(!_['isEmpty'](_0x41fcb8)){_0x41fcb8[_0x7877('0x34')](function(_0x1cdc7f){if(_0x1cdc7f===_0x7877('0x75')){_0x3e7c0a[_0x7877('0x46')](_0x7877('0x76'),[]['concat'](_0x4c1168[_0x7877('0x3e')][_0x1cdc7f]));}else if(_0x1cdc7f===_0x7877('0x77')){var _0xc0f31c=JSON[_0x7877('0x78')](_0x4c1168['query'][_0x1cdc7f])[_0x7877('0x79')];var _0x5426cb=JSON['parse'](_0x4c1168[_0x7877('0x3e')][_0x1cdc7f])[_0x7877('0x7a')];_0x3e7c0a[_0x7877('0x46')](_0x7877('0x7b'),_0xc0f31c,_0x5426cb);}else{if(_0x4c1168[_0x7877('0x3e')][_0x1cdc7f]===_0x7877('0x7c')){_0x3e7c0a[_0x7877('0x46')]('i.'+_0x1cdc7f+'\x20IS\x20NULL');}else{_0x3e7c0a[_0x7877('0x46')]('i.'+_0x1cdc7f+_0x7877('0x7d'),_0x4c1168[_0x7877('0x3e')][_0x1cdc7f]);}}});}if(_0x4c1168[_0x7877('0x3e')][_0x7877('0x7e')]){if(_0x4c1168[_0x7877('0x3e')][_0x7877('0x7e')]==0x1){_0x3e7c0a[_0x7877('0x62')]('`unreadMessages`\x20=\x200');}else{_0x3e7c0a['having'](_0x7877('0x7f'));}}if(_0x4c1168['query']['tag']){_0x198537=_['isArray'](_0x4c1168[_0x7877('0x3e')][_0x7877('0x80')])?_0x4c1168['query']['tag']:new Array(_0x4c1168[_0x7877('0x3e')]['tag']);_0x198537[_0x7877('0x34')](function(_0x5b803e){_0x48ac15['or'](_0x7877('0x6c'),'%,'+_0x5b803e+',%');});}if(_0x4c1168['query'][_0x7877('0x81')]){var _0x246069=_0x4c1168[_0x7877('0x3e')][_0x7877('0x81')][_0x7877('0x82')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x7877('0x83')](_0x246069)){_0x184a31['or'](_0x7877('0x84'),_0x246069+'%')['or']('i.fax\x20LIKE\x20?',_0x246069+'%');}_0x184a31['or'](_0x7877('0x85'),_0x246069+'%');}}_0x3e7c0a[_0x7877('0x46')](_0x184a31);_0x3e7c0a[_0x7877('0x86')]('i.id');var _0x18a1b7={'type':db[_0x7877('0x87')]['QueryTypes'][_0x7877('0x88')],'raw':!![]};var _0x100d00=_0x3e7c0a[_0x7877('0x89')]();_0x100d00[_0x7877('0x4a')](_0x7877('0x8a'));_0x100d00[_0x7877('0x4a')](_0x7877('0x8b'),_0x7877('0x60'));if(_0x248375[_0x7877('0x8c')]){_0x248375[_0x7877('0x8c')][_0x7877('0x34')](function(_0x5b754e){var _0x5cf1db=_0x5b754e[0x0]===_0x7877('0x8d')?_0x5b754e[0x0]:'i.'+_0x5b754e[0x0];_0x3e7c0a[_0x7877('0x8c')](_0x5cf1db,_0x5b754e[0x1]===_0x7877('0x8e')?![]:!![]);});}if(!_[_0x7877('0x8f')](_0x198537)){_0x3e7c0a['having'](_0x48ac15);_0x100d00[_0x7877('0x46')](_0x7877('0x90'),_0x198537);}BPromise[_0x7877('0x91')]()[_0x7877('0x2b')](function(){if(!_0x5e5e42){if(_0x4c1168[_0x7877('0x3e')][_0x7877('0x75')])return;_0x100d00[_0x7877('0x46')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x3e7c0a[_0x7877('0x46')](_0x7877('0x92'));return;}if(_0x4c1168[_0x7877('0x93')][_0x7877('0x94')]!==_0x7877('0x95'))return;return _0x4c1168[_0x7877('0x93')][_0x7877('0x96')]({'attributes':['id'],'raw':!![]})[_0x7877('0x2b')](function(_0x6c6ca3){if(_[_0x7877('0x8f')](_0x6c6ca3)){_0x100d00[_0x7877('0x46')](_0x7877('0x97'));_0x3e7c0a[_0x7877('0x46')](_0x7877('0x97'));}else{_0x100d00[_0x7877('0x46')](_0x7877('0x76'),_[_0x7877('0x2f')](_0x6c6ca3,'id'));_0x3e7c0a[_0x7877('0x46')](_0x7877('0x76'),_[_0x7877('0x2f')](_0x6c6ca3,'id'));}});})[_0x7877('0x2b')](function(){if(_0x4c1168[_0x7877('0x93')][_0x7877('0x94')]===_0x7877('0x95')&&!_0x5e5e42&&!_0x4c1168[_0x7877('0x3e')]['FaxAccountId'])return[];return db['sequelize']['query'](_0x100d00[_0x7877('0x98')](),_0x18a1b7);})[_0x7877('0x2b')](function(_0x1e677f){_0x559ce4[_0x7877('0x24')]=_0x1e677f['length'];if(_0x559ce4['count']===0x0)return[];return db['sequelize'][_0x7877('0x3e')](_0x5178e1[_0x7877('0x98')](),_0x18a1b7)[_0x7877('0x2b')](function(_0x351c4d){_0x1d2600=_[_0x7877('0x99')](_0x351c4d,'id');_0x18a1b7=_[_0x7877('0x9a')](_0x18a1b7,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4c1168[_0x7877('0x3e')][_0x7877('0x41')]){_0x248375[_0x7877('0x40')][_0x7877('0x34')](function(_0x2f6c6f){_0x3e7c0a[_0x7877('0x4a')]('i.'+_0x2f6c6f);});}else{_0x3e7c0a[_0x7877('0x4a')](_0x7877('0x8b'),_0x7877('0x60'));_0x3e7c0a[_0x7877('0x4a')](_0x7877('0x9b'),'Account.key');_0x3e7c0a[_0x7877('0x4a')](_0x7877('0x9c'),_0x7877('0x9d'));_0x3e7c0a[_0x7877('0x4a')](_0x7877('0x9e'),'contactName');_0x3e7c0a['field'](_0x7877('0x9f'));_0x3e7c0a[_0x7877('0x4a')]('c.firstName','Contact.firstName');_0x3e7c0a[_0x7877('0x4a')](_0x7877('0xa0'),_0x7877('0xa1'));_0x3e7c0a['field'](_0x7877('0xa2'),_0x7877('0xa3'));_0x3e7c0a['field'](_0x7877('0xa4'),'Contact.phone');_0x3e7c0a[_0x7877('0x4a')](_0x7877('0xa5'),_0x7877('0xa6'));_0x3e7c0a[_0x7877('0x4a')]('c.fax','Contact.fax');_0x3e7c0a[_0x7877('0x4a')](_0x7877('0xa7'),_0x7877('0xa8'));_0x3e7c0a['field']('o.internal',_0x7877('0xa9'));_0x3e7c0a['field'](_0x7877('0xaa'),_0x7877('0x31'));}if(_0x248375[_0x7877('0x23')])_0x3e7c0a['limit'](_0x248375[_0x7877('0x23')]);if(_0x248375[_0x7877('0x21')])_0x3e7c0a[_0x7877('0x21')](_0x248375[_0x7877('0x21')]);return db[_0x7877('0xab')][_0x7877('0x3e')](_0x3e7c0a['toString'](),_0x18a1b7);})['then'](function(_0x4b0973){if(_0x4b0973[_0x7877('0x42')]>0x0)_0xfddb2b['where'](_0x7877('0xac'),_[_0x7877('0x2f')](_0x4b0973,'id'));return db[_0x7877('0xab')][_0x7877('0x3e')](_0xfddb2b[_0x7877('0x98')](),_0x18a1b7)[_0x7877('0x2b')](function(_0x13a946){var _0x47a6ec=_[_0x7877('0xad')](_0x13a946,_0x7877('0xae'));var _0x544d33=[];_0x4b0973['forEach'](function(_0x21b464){_0x544d33[_0x7877('0x35')](updateFaxInteraction(_0x21b464,_0x1d2600,_0x47a6ec));});return BPromise[_0x7877('0xaf')](_0x544d33);});});})[_0x7877('0x2b')](function(_0x3ac444){_0x559ce4[_0x7877('0xb0')]=_0x3ac444;return _0x559ce4;})[_0x7877('0x2b')](respondWithFilteredResult(_0x4252e2,_0x248375))[_0x7877('0x36')](handleError(_0x4252e2,null));};exports[_0x7877('0xb1')]=function(_0x1f4f0d,_0x3b3b60){var _0x5d7831={'raw':![],'where':{'id':_0x1f4f0d[_0x7877('0xb2')]['id']}},_0x311cd1={};_0x311cd1['model']=_[_0x7877('0x73')](db[_0x7877('0x38')][_0x7877('0x39')]);_0x311cd1[_0x7877('0x3e')]=_[_0x7877('0x73')](_0x1f4f0d[_0x7877('0x3e')]);_0x311cd1[_0x7877('0x47')]=_[_0x7877('0x3f')](_0x311cd1[_0x7877('0x3d')],_0x311cd1['query']);_0x5d7831[_0x7877('0x40')]=_[_0x7877('0x3f')](_0x311cd1[_0x7877('0x3d')],qs[_0x7877('0x41')](_0x1f4f0d[_0x7877('0x3e')][_0x7877('0x41')]));_0x5d7831[_0x7877('0x40')]=_0x5d7831[_0x7877('0x40')][_0x7877('0x42')]?_0x5d7831[_0x7877('0x40')]:_0x311cd1[_0x7877('0x3d')];if(_0x1f4f0d[_0x7877('0x3e')]['includeAll']){_0x5d7831[_0x7877('0xb3')]=[{'all':!![]}];}_0x5d7831=_[_0x7877('0x9a')]({},_0x5d7831,_0x1f4f0d['options']);return db[_0x7877('0x38')][_0x7877('0x5f')](_0x5d7831)[_0x7877('0x2b')](handleEntityNotFound(_0x3b3b60,null))['then'](respondWithResult(_0x3b3b60,null))[_0x7877('0x36')](handleError(_0x3b3b60,null));};exports[_0x7877('0xb4')]=function(_0x4647c4,_0x14b48c){return db[_0x7877('0x38')][_0x7877('0xb4')](_0x4647c4[_0x7877('0x72')],{})['then'](respondWithResult(_0x14b48c,0xc9))['catch'](handleError(_0x14b48c,null));};exports[_0x7877('0x29')]=function(_0x2f43c1,_0xf66635){if(_0x2f43c1[_0x7877('0x72')]['id']){delete _0x2f43c1[_0x7877('0x72')]['id'];}return db[_0x7877('0x38')][_0x7877('0x5f')]({'where':{'id':_0x2f43c1[_0x7877('0xb2')]['id']}})[_0x7877('0x2b')](handleEntityNotFound(_0xf66635,null))['then'](saveUpdates(_0x2f43c1[_0x7877('0x72')],null))[_0x7877('0x2b')](respondWithResult(_0xf66635,null))[_0x7877('0x36')](handleError(_0xf66635,null));};exports[_0x7877('0x2a')]=function(_0x1901d0,_0x1087ef){return db[_0x7877('0x38')][_0x7877('0x5f')]({'where':{'id':_0x1901d0[_0x7877('0xb2')]['id']}})[_0x7877('0x2b')](handleEntityNotFound(_0x1087ef,null))['then'](removeEntity(_0x1087ef,null))[_0x7877('0x36')](handleError(_0x1087ef,null));};exports[_0x7877('0xb5')]=function(_0x35901b,_0x5717ee){return db[_0x7877('0x38')][_0x7877('0xb5')]()[_0x7877('0x2b')](respondWithResult(_0x5717ee,null))[_0x7877('0x36')](handleError(_0x5717ee,null));};exports[_0x7877('0xb6')]=function(_0x34f842,_0x43c2a5,_0x70b131){return db[_0x7877('0xb7')][_0x7877('0x5f')]({'where':{'id':_0x34f842['params']['id']}})[_0x7877('0x2b')](handleEntityNotFound(_0x43c2a5,null))[_0x7877('0x2b')](function(_0x49a85c){if(_0x49a85c){return _0x49a85c[_0x7877('0xb6')](_0x34f842['body'][_0x7877('0xb8')],_[_0x7877('0xb9')](_0x34f842['body'],[_0x7877('0xb8'),'id'])||{});}})[_0x7877('0x2b')](respondWithResult(_0x43c2a5,null))[_0x7877('0x36')](handleError(_0x43c2a5,null));};exports[_0x7877('0xba')]=function(_0x2ddf40,_0x53816f,_0x37eccc){var _0x3af129={'raw':![],'where':{}};var _0x28892c={};var _0x8d730a={'count':0x0,'rows':[]};return db[_0x7877('0x38')][_0x7877('0xbb')]({'where':{'id':_0x2ddf40[_0x7877('0xb2')]['id']}})[_0x7877('0x2b')](handleEntityNotFound(_0x53816f,null))['then'](function(_0x463a6c){if(_0x463a6c){_0x28892c['model']=_[_0x7877('0x73')](db[_0x7877('0xb7')]['rawAttributes']);_0x28892c[_0x7877('0x3e')]=_[_0x7877('0x73')](_0x2ddf40[_0x7877('0x3e')]);_0x28892c['filters']=_['intersection'](_0x28892c[_0x7877('0x3d')],_0x28892c[_0x7877('0x3e')]);_0x3af129[_0x7877('0x40')]=_['intersection'](_0x28892c[_0x7877('0x3d')],qs['fields'](_0x2ddf40[_0x7877('0x3e')][_0x7877('0x41')]));_0x3af129[_0x7877('0x40')]=_0x3af129[_0x7877('0x40')][_0x7877('0x42')]?_0x3af129[_0x7877('0x40')]:_0x28892c[_0x7877('0x3d')];if(!_0x2ddf40[_0x7877('0x3e')][_0x7877('0x43')](_0x7877('0x44'))){_0x3af129[_0x7877('0x23')]=qs[_0x7877('0x23')](_0x2ddf40[_0x7877('0x3e')][_0x7877('0x23')]);_0x3af129[_0x7877('0x21')]=qs[_0x7877('0x21')](_0x2ddf40[_0x7877('0x3e')][_0x7877('0x21')]);}_0x3af129[_0x7877('0x8c')]=qs[_0x7877('0x45')](_0x2ddf40['query'][_0x7877('0x45')]);_0x3af129['where']=qs[_0x7877('0x47')](_[_0x7877('0x48')](_0x2ddf40['query'],_0x28892c[_0x7877('0x47')]));_0x3af129['where'][_0x7877('0xae')]=_0x463a6c['id'];if(_0x2ddf40['query'][_0x7877('0x81')]){_0x3af129[_0x7877('0x46')]=_['merge'](_0x3af129[_0x7877('0x46')],{'$or':_['map'](_0x3af129['attributes'],function(_0x1721e5){var _0x40197a={};_0x40197a[_0x1721e5]={'$like':'%'+_0x2ddf40[_0x7877('0x3e')][_0x7877('0x81')]+'%'};return _0x40197a;})});}if(_0x2ddf40[_0x7877('0x3e')][_0x7877('0x79')]){var _0x19520f=_0x2ddf40[_0x7877('0x3e')][_0x7877('0x79')][_0x7877('0x33')](',');var _0x58122f={};_0x58122f[_0x19520f[0x0]]={'$gte':moment(_0x19520f[0x1])[_0x7877('0xbc')](_0x7877('0xbd'))};_0x3af129[_0x7877('0x46')]=_[_0x7877('0x9a')](_0x3af129[_0x7877('0x46')],_0x58122f);}_0x3af129=_[_0x7877('0x9a')]({},_0x3af129,_0x2ddf40[_0x7877('0xbe')]);return db[_0x7877('0xb7')]['count']({'where':_0x3af129[_0x7877('0x46')]})[_0x7877('0x2b')](function(_0x1301e7){_0x8d730a[_0x7877('0x24')]=_0x1301e7;if(_0x2ddf40[_0x7877('0x3e')][_0x7877('0xbf')]){_0x3af129[_0x7877('0xb3')]=[{'all':!![]}];}return db[_0x7877('0xb7')]['findAll'](_0x3af129);})[_0x7877('0x2b')](function(_0x31fc8a){_0x8d730a[_0x7877('0xb0')]=_0x31fc8a;return _0x8d730a;});}})['then'](respondWithFilteredResult(_0x53816f,_0x3af129))[_0x7877('0x36')](handleError(_0x53816f,null));};exports[_0x7877('0xc0')]=function(_0x2e9870,_0x38e4b6,_0x4e2a0b){return db[_0x7877('0x38')][_0x7877('0x5f')]({'where':{'id':_0x2e9870[_0x7877('0xb2')]['id']}})[_0x7877('0x2b')](handleEntityNotFound(_0x38e4b6,null))['then'](function(_0x12f810){if(_0x12f810){return _0x12f810[_0x7877('0xc1')](_0x2e9870[_0x7877('0x72')][_0x7877('0xb8')],_['omit'](_0x2e9870['body'],[_0x7877('0xb8'),'id'])||{})['spread'](function(){return db[_0x7877('0x6b')]['findAll']({'attributes':['id',_0x7877('0x2e'),_0x7877('0x4b')],'where':{'id':_0x2e9870[_0x7877('0x72')]['ids']}});})[_0x7877('0x2b')](function(_0x410406){socket[_0x7877('0xc2')](_0x7877('0xc3'),{'id':Number(_0x2e9870[_0x7877('0xb2')]['id']),'tags':_0x410406||[]});return{'id':Number(_0x2e9870[_0x7877('0xb2')]['id']),'tags':_0x410406||[]};});}})[_0x7877('0x2b')](respondWithResult(_0x38e4b6,null))[_0x7877('0x36')](handleError(_0x38e4b6,null));};exports['removeTags']=function(_0x3ebba4,_0x40ff9c,_0x27f3cb){return db[_0x7877('0x38')]['find']({'where':{'id':_0x3ebba4[_0x7877('0xb2')]['id']}})[_0x7877('0x2b')](handleEntityNotFound(_0x40ff9c,null))[_0x7877('0x2b')](function(_0x1094d5){if(_0x1094d5){return _0x1094d5[_0x7877('0xc4')](_0x3ebba4[_0x7877('0x3e')]['ids']);}})[_0x7877('0x2b')](respondWithStatusCode(_0x40ff9c,null))[_0x7877('0x36')](handleError(_0x40ff9c,null));};exports[_0x7877('0xc5')]=function(_0x455cca,_0x389587){var _0x2ea548=moment()[_0x7877('0xc6')]()[_0x7877('0x98')]();var _0x4a23a2=path[_0x7877('0xc7')](config[_0x7877('0xc8')],_0x7877('0xc9'),_0x7877('0xca'),_0x7877('0xcb'));var _0x3166fb=path[_0x7877('0xc7')](config['root'],_0x7877('0xc9'),_0x7877('0xca'),'attachments');var _0x51418b=path[_0x7877('0xc7')](_0x4a23a2,_0x2ea548);var _0x180acf=util[_0x7877('0xbc')](_0x7877('0xcc'),_0x455cca[_0x7877('0xb2')]['id'],_0x2ea548);var _0x500dbc=path[_0x7877('0xc7')](_0x4a23a2,_0x180acf);var _0x1bd340=[];_0x1bd340[_0x7877('0x35')]({'model':db[_0x7877('0xcd')],'as':_0x7877('0xcd'),'raw':!![]});var _0xf61952=[{'model':db['FaxMessage'],'as':_0x7877('0xce'),'attributes':['id',_0x7877('0x72'),_0x7877('0x77')],'include':_0x1bd340}];return db['FaxInteraction'][_0x7877('0x5f')]({'where':{'id':_0x455cca['params']['id']},'include':_0xf61952})[_0x7877('0x2b')](handleEntityNotFound(_0x389587,null))[_0x7877('0x2b')](function(_0x55786a){if(_0x55786a&&_0x55786a[_0x7877('0xce')]){var _0x469346=_0x55786a[_0x7877('0xcf')]({'plain':!![]});fs[_0x7877('0xd0')](_0x51418b);for(var _0x41ac57=0x0;_0x41ac57<_0x469346[_0x7877('0xce')]['length'];_0x41ac57++){var _0x2bd0ba=_0x469346['Messages'][_0x41ac57]['Attachment'];if(_0x2bd0ba){var _0x842764=path[_0x7877('0xc7')](_0x3166fb,_0x2bd0ba[_0x7877('0xd1')]);if(fs['existsSync'](_0x842764)){fs[_0x7877('0xd2')](_0x842764)[_0x7877('0xd3')](fs[_0x7877('0xd4')](path[_0x7877('0xc7')](_0x51418b,_0x2bd0ba[_0x7877('0xd1')])));}}}return BPromise[_0x7877('0x91')]()['then'](function(){return new BPromise(function(_0x3ccb84,_0x3821a7){zipdir(_0x51418b,{'saveTo':_0x500dbc},function(_0x24ad76,_0x1a3abb){if(_0x24ad76)return _0x3821a7(_0x24ad76);return _0x3ccb84(_0x1a3abb);});})['then'](function(){return new BPromise(function(_0x509d8c,_0x4c8865){rimraf(_0x51418b,function(_0x90570c){if(_0x90570c)_0x4c8865(_0x90570c);return _0x509d8c();});});})[_0x7877('0x2b')](function(){return _0x389587['download'](_0x500dbc,_0x180acf,function(_0x3d6d77){if(_0x3d6d77){console[_0x7877('0xd5')](_0x7877('0xd6'),_0x3d6d77);}else{fs['unlinkSync'](_0x500dbc);}});});});}else{return _0x389587[_0x7877('0x1e')](0xc8);}})[_0x7877('0x36')](handleError(_0x389587,null));};
\ No newline at end of file
+var _0xe60c=['operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','buildExpression','body','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','group','Sequelize','QueryTypes','clone','i.id','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','params','includeAll','include','options','create','update','describe','addMessage','FaxMessage','ids','omit','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','spread','color','emit','faxInteractionTags:save','removeTags','download','unix','join','files','tmp','root','attachments','transcript-%d-%s.zip','Attachment','Messages','mkdirSync','existsSync','createReadStream','pipe','basename','log','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','end','stack','name','Users','map','Tags','TagIds','split','forEach','push','catch','index','FaxInteraction','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','field','from','tools_tags','select','u.id','u.fullname','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','value','having','`\x20=\x200','`\x20>\x200'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xe60c,0x14b));var _0xce60=function(_0x18fb16,_0x45edbc){_0x18fb16=_0x18fb16-0x0;var _0x147b0d=_0xe60c[_0x18fb16];return _0x147b0d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xce60('0x0'));var zipdir=require(_0xce60('0x1'));var jsonpatch=require(_0xce60('0x2'));var rp=require(_0xce60('0x3'));var moment=require(_0xce60('0x4'));var BPromise=require(_0xce60('0x5'));var Mustache=require(_0xce60('0x6'));var util=require(_0xce60('0x7'));var path=require(_0xce60('0x8'));var sox=require(_0xce60('0x9'));var csv=require(_0xce60('0xa'));var ejs=require(_0xce60('0xb'));var fs=require('fs');var fs_extra=require(_0xce60('0xc'));var _=require(_0xce60('0xd'));var squel=require(_0xce60('0xe'));var crypto=require(_0xce60('0xf'));var jsforce=require(_0xce60('0x10'));var deskjs=require(_0xce60('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xce60('0x12'));var Redis=require('ioredis');var authService=require(_0xce60('0x13'));var qs=require(_0xce60('0x14'));var as=require(_0xce60('0x15'));var hardwareService=require(_0xce60('0x16'));var logger=require(_0xce60('0x17'))('api');var utils=require(_0xce60('0x18'));var config=require(_0xce60('0x19'));var licenseUtil=require(_0xce60('0x1a'));var db=require(_0xce60('0x1b'))['db'];config['redis']=_[_0xce60('0x1c')](config[_0xce60('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0xce60('0x1e'))(new Redis(config[_0xce60('0x1d')]));require(_0xce60('0x1f'))[_0xce60('0x20')](socket);function respondWithStatusCode(_0x541ffd,_0x4ccdaa){_0x4ccdaa=_0x4ccdaa||0xcc;return function(_0x32ff20){if(_0x32ff20){return _0x541ffd[_0xce60('0x21')](_0x4ccdaa);}return _0x541ffd[_0xce60('0x22')](_0x4ccdaa)['end']();};}function respondWithResult(_0x13c5f7,_0x1e04a6){_0x1e04a6=_0x1e04a6||0xc8;return function(_0x47c5a7){if(_0x47c5a7){return _0x13c5f7['status'](_0x1e04a6)[_0xce60('0x23')](_0x47c5a7);}};}function respondWithFilteredResult(_0x53dd3a,_0x42d7ab){return function(_0x479b1b){if(_0x479b1b){var _0x4a5a4c=typeof _0x42d7ab[_0xce60('0x24')]===_0xce60('0x25')&&typeof _0x42d7ab[_0xce60('0x26')]===_0xce60('0x25');var _0x111ec3=_0x479b1b[_0xce60('0x27')];var _0x369ce0=_0x4a5a4c?0x0:_0x42d7ab['offset'];var _0x2259b8=_0x4a5a4c?_0x479b1b[_0xce60('0x27')]:_0x42d7ab[_0xce60('0x24')]+_0x42d7ab['limit'];var _0x3df30c;if(_0x2259b8>=_0x111ec3){_0x2259b8=_0x111ec3;_0x3df30c=0xc8;}else{_0x3df30c=0xce;}_0x53dd3a['status'](_0x3df30c);return _0x53dd3a['set'](_0xce60('0x28'),_0x369ce0+'-'+_0x2259b8+'/'+_0x111ec3)['json'](_0x479b1b);}return null;};}function patchUpdates(_0x512feb){return function(_0xcb062e){try{jsonpatch[_0xce60('0x29')](_0xcb062e,_0x512feb,!![]);}catch(_0x37cd05){return BPromise[_0xce60('0x2a')](_0x37cd05);}return _0xcb062e[_0xce60('0x2b')]();};}function saveUpdates(_0x2dca2e,_0x3114c8){return function(_0x2b82b7){if(_0x2b82b7){return _0x2b82b7['update'](_0x2dca2e)[_0xce60('0x2c')](function(_0x3b9da6){return _0x3b9da6;});}return null;};}function removeEntity(_0x2b96f7,_0x2cc68f){return function(_0x413547){if(_0x413547){return _0x413547[_0xce60('0x2d')]()[_0xce60('0x2c')](function(){_0x2b96f7[_0xce60('0x22')](0xcc)[_0xce60('0x2e')]();});}};}function handleEntityNotFound(_0x378284,_0x5e4657){return function(_0x11dfcf){if(!_0x11dfcf){_0x378284[_0xce60('0x21')](0x194);}return _0x11dfcf;};}function handleError(_0x2f9c31,_0x3979f2){_0x3979f2=_0x3979f2||0x1f4;return function(_0x401577){logger['error'](_0x401577[_0xce60('0x2f')]);if(_0x401577[_0xce60('0x30')]){delete _0x401577[_0xce60('0x30')];}_0x2f9c31[_0xce60('0x22')](_0x3979f2)['send'](_0x401577);};}function getInteractionUsers(_0x2ef3e4,_0x4e781a){return new BPromise(function(_0x86aab0,_0x2258f1){try{if(_0x4e781a[_0x2ef3e4['id']]){_0x2ef3e4[_0xce60('0x31')]=_[_0xce60('0x32')](_0x4e781a[_0x2ef3e4['id']],function(_0x1725e3){return{'id':_0x1725e3['id'],'fullname':_0x1725e3['fullname']};});}}catch(_0x449a9f){_0x2258f1(_0x449a9f);}_0x86aab0(_0x2ef3e4);});}function getInteractionTags(_0x958d8b,_0x3d4efe){return new BPromise(function(_0x1998b4,_0x1d4cef){try{if(_0x958d8b['TagIds']){_0x958d8b[_0xce60('0x33')]=[];_0x958d8b[_0xce60('0x34')][_0xce60('0x35')](',')[_0xce60('0x36')](function(_0x4e6030){_0x958d8b[_0xce60('0x33')][_0xce60('0x37')](_0x3d4efe[_0x4e6030]);});}delete _0x958d8b[_0xce60('0x34')];}catch(_0x1938c2){_0x1d4cef(_0x1938c2);}_0x1998b4(_0x958d8b);});}function updateFaxInteraction(_0x305bbb,_0x2b9011,_0x173c8a){return new BPromise(function(_0x3c2fcb,_0x2e27cb){return getInteractionUsers(_0x305bbb,_0x173c8a)['then'](function(_0x24ec8e){return getInteractionTags(_0x24ec8e,_0x2b9011);})['then'](function(_0x47a160){_0x3c2fcb(_0x47a160);})[_0xce60('0x38')](function(_0x5ae6ba){_0x2e27cb(_0x5ae6ba);});});}exports[_0xce60('0x39')]=function(_0x526b6d,_0x46e818){var _0x558192={},_0x49cd83={},_0x956451={'count':0x0,'rows':[]};var _0xe47dc4=_[_0xce60('0x32')](db[_0xce60('0x3a')][_0xce60('0x3b')],function(_0x46c6cb){return{'name':_0x46c6cb[_0xce60('0x3c')],'type':_0x46c6cb[_0xce60('0x3d')][_0xce60('0x3e')]};});_0x49cd83[_0xce60('0x3f')]=_[_0xce60('0x32')](_0xe47dc4,_0xce60('0x30'));_0x49cd83['query']=_[_0xce60('0x40')](_0x526b6d['query']);_0x49cd83[_0xce60('0x41')]=_[_0xce60('0x42')](_0x49cd83[_0xce60('0x3f')],_0x49cd83[_0xce60('0x43')]);_0x558192[_0xce60('0x44')]=_[_0xce60('0x42')](_0x49cd83[_0xce60('0x3f')],qs[_0xce60('0x45')](_0x526b6d[_0xce60('0x43')][_0xce60('0x45')]));_0x558192[_0xce60('0x44')]=_0x558192[_0xce60('0x44')][_0xce60('0x46')]?_0x558192[_0xce60('0x44')]:_0x49cd83[_0xce60('0x3f')];if(!_0x526b6d[_0xce60('0x43')][_0xce60('0x47')](_0xce60('0x48'))){_0x558192[_0xce60('0x26')]=qs[_0xce60('0x26')](_0x526b6d[_0xce60('0x43')][_0xce60('0x26')]);_0x558192[_0xce60('0x24')]=qs['offset'](_0x526b6d[_0xce60('0x43')][_0xce60('0x24')]);}_0x558192[_0xce60('0x49')]=qs[_0xce60('0x4a')](_0x526b6d[_0xce60('0x43')]['sort']);_0x558192[_0xce60('0x4b')]=qs[_0xce60('0x41')](_[_0xce60('0x4c')](_0x526b6d['query'],_0x49cd83[_0xce60('0x41')]),_0xe47dc4);var _0x27d8a3=[];var _0x521adf=squel['select']()[_0xce60('0x4d')]('id')[_0xce60('0x4d')](_0xce60('0x30'))[_0xce60('0x4d')]('color')[_0xce60('0x4e')](_0xce60('0x4f'));var _0x7d7a98=squel[_0xce60('0x50')]()[_0xce60('0x4d')](_0xce60('0x51'))[_0xce60('0x4d')](_0xce60('0x52'))[_0xce60('0x4d')]('ui.FaxInteractionId')['from'](_0xce60('0x53'),'ui')[_0xce60('0x54')](_0xce60('0x55'),'u',_0xce60('0x56'));var _0x1a96d4=squel['select']()[_0xce60('0x4e')]('fax_interactions','i')[_0xce60('0x54')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xce60('0x54')](_0xce60('0x55'),'o',_0xce60('0x57'))['left_join'](_0xce60('0x58'),'a','a.id\x20=\x20i.FaxAccountId')[_0xce60('0x54')](_0xce60('0x59'),'me','me.FaxInteractionId\x20=\x20i.id')[_0xce60('0x54')](_0xce60('0x5a'),'it',_0xce60('0x5b'))[_0xce60('0x54')](_0xce60('0x4f'),'t',_0xce60('0x5c'));var _0x126597=squel[_0xce60('0x5d')]();var _0x3e51c2=[];var _0x464b6e=squel['expr']();var _0x4c19b3;if(_0x526b6d[_0xce60('0x43')][_0xce60('0x5e')]){_0x4c19b3=as[_0xce60('0x5f')](_0x526b6d[_0xce60('0x43')][_0xce60('0x5e')]);var _0x2e23da=_0x4c19b3['sqlOperator'];for(var _0x588953=0x0;_0x588953<_0x4c19b3[_0xce60('0x60')][_0xce60('0x46')];_0x588953++){var _0x2be946=_0x4c19b3[_0xce60('0x60')][_0x588953];var _0x37de00='i';var _0x276d4e=_['find'](_0xe47dc4,[_0xce60('0x30'),_0x2be946[_0xce60('0x4d')]]);if(!_0x276d4e){switch(_0x2be946[_0xce60('0x4d')]){case'unreadMessages':if(_0x2be946[_0xce60('0x61')]==0x1){_0x1a96d4[_0xce60('0x62')]('`'+_0x2be946['field']+_0xce60('0x63'));}else{_0x1a96d4['having']('`'+_0x2be946[_0xce60('0x4d')]+_0xce60('0x64'));}break;case'Contact':if(_0x2be946[_0xce60('0x65')]===_0xce60('0x66')){if(_0x2be946[_0xce60('0x61')][_0xce60('0x35')]('\x20')[_0xce60('0x46')]>0x1){_0x126597[_0x2e23da](_0xce60('0x67'),qs['getFullTextValue'](_0x2be946[_0xce60('0x61')]),null);}else{var _0xe206b9='%'+_0x2be946['value']+'%';_0x126597[_0x2e23da]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0xe206b9,_0xe206b9,_0xe206b9);}}else{_0x276d4e=_['find'](_0xe47dc4,[_0xce60('0x30'),_0xce60('0x68')]);_0x2be946[_0xce60('0x4d')]=_0xce60('0x68');_0x4068f9=as['buildExpression'](_0x37de00,_0x276d4e[_0xce60('0x3d')],_0x2be946);_0x126597[_0x2e23da](_0x4068f9[_0xce60('0x69')],_0x4068f9[_0xce60('0x61')][_0xce60('0x6a')],_0x4068f9['value'][_0xce60('0x2e')]);}break;case _0xce60('0x6b'):var _0x423d55=_0x2be946[_0xce60('0x61')][_0xce60('0x35')](',')[_0xce60('0x32')](function(_0x32a7d0){return Number(_0x32a7d0);});_0x423d55[_0xce60('0x36')](function(_0x316d76){_0x464b6e['or'](_0xce60('0x6c'),'%,'+_0x316d76+',%');});_0x3e51c2=_[_0xce60('0x6d')](_0x3e51c2,_0x423d55);break;case _0xce60('0x6e'):if(_0x2be946[_0xce60('0x65')]===_0xce60('0x66')){_0x126597[_0x2e23da](_0xce60('0x6f'),'%'+_0x2be946[_0xce60('0x61')]+'%',null);}else{_0x276d4e=_[_0xce60('0x70')](_0xe47dc4,[_0xce60('0x30'),'UserId']);_0x2be946[_0xce60('0x4d')]='UserId';_0x4068f9=as[_0xce60('0x71')](_0x37de00,_0x276d4e[_0xce60('0x3d')],_0x2be946);_0x126597[_0x2e23da](_0x4068f9[_0xce60('0x69')],_0x4068f9['value']['start'],_0x4068f9[_0xce60('0x61')][_0xce60('0x2e')]);}break;case _0xce60('0x72'):_0x4068f9=as[_0xce60('0x71')]('me',null,_0x2be946);_0x126597[_0x2e23da](_0x4068f9[_0xce60('0x69')],_0x4068f9[_0xce60('0x61')]['start'],_0x4068f9[_0xce60('0x61')][_0xce60('0x2e')]);break;}}else{var _0x4068f9=as['buildExpression'](_0x37de00,_0x276d4e['type'],_0x2be946);_0x126597[_0x2e23da](_0x4068f9[_0xce60('0x69')],_0x4068f9['value'][_0xce60('0x6a')],_0x4068f9['value'][_0xce60('0x2e')]);}}}else{var _0x408aa5=_(_0x526b6d[_0xce60('0x43')])[_0xce60('0x40')]()[_0xce60('0x32')](function(_0x53b154){return _['some'](_0xe47dc4,[_0xce60('0x30'),_0x53b154])?_0x53b154:undefined;})[_0xce60('0x73')]()[_0xce60('0x61')]();if(!_[_0xce60('0x74')](_0x408aa5)){_0x408aa5[_0xce60('0x36')](function(_0x1ed0e2){if(_0x1ed0e2===_0xce60('0x75')){_0x1a96d4[_0xce60('0x4b')](_0xce60('0x76'),[][_0xce60('0x77')](_0x526b6d['query'][_0x1ed0e2]));}else if(_0x1ed0e2===_0xce60('0x78')){var _0x1ee147=JSON['parse'](_0x526b6d[_0xce60('0x43')][_0x1ed0e2])['$gte'];var _0x5e81a7=JSON[_0xce60('0x79')](_0x526b6d[_0xce60('0x43')][_0x1ed0e2])[_0xce60('0x7a')];_0x1a96d4[_0xce60('0x4b')](_0xce60('0x7b'),_0x1ee147,_0x5e81a7);}else{if(_0x526b6d[_0xce60('0x43')][_0x1ed0e2]===_0xce60('0x7c')){_0x1a96d4[_0xce60('0x4b')]('i.'+_0x1ed0e2+_0xce60('0x7d'));}else{_0x1a96d4[_0xce60('0x4b')]('i.'+_0x1ed0e2+_0xce60('0x7e'),_0x526b6d[_0xce60('0x43')][_0x1ed0e2]);}}});}if(_0x526b6d[_0xce60('0x43')][_0xce60('0x7f')]){if(_0x526b6d[_0xce60('0x43')][_0xce60('0x7f')]==0x1){_0x1a96d4['having']('`unreadMessages`\x20=\x200');}else{_0x1a96d4[_0xce60('0x62')](_0xce60('0x80'));}}if(_0x526b6d[_0xce60('0x43')][_0xce60('0x81')]){_0x3e51c2=_[_0xce60('0x82')](_0x526b6d[_0xce60('0x43')][_0xce60('0x81')])?_0x526b6d[_0xce60('0x43')][_0xce60('0x81')]:new Array(_0x526b6d[_0xce60('0x43')][_0xce60('0x81')]);_0x3e51c2['forEach'](function(_0xc4747d){_0x464b6e['or'](_0xce60('0x6c'),'%,'+_0xc4747d+',%');});}if(_0x526b6d[_0xce60('0x43')][_0xce60('0x83')]){var _0x5e61c9=_0x526b6d[_0xce60('0x43')]['filter']['replace']('\x5c','\x5c\x5c')[_0xce60('0x84')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x5e61c9)){_0x126597['or'](_0xce60('0x85'),_0x5e61c9+'%')['or'](_0xce60('0x86'),_0x5e61c9+'%');}_0x126597['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5e61c9+'%');}}_0x1a96d4['where'](_0x126597);_0x1a96d4[_0xce60('0x87')]('i.id');var _0x10d69a={'type':db[_0xce60('0x88')][_0xce60('0x89')]['SELECT'],'raw':!![]};var _0x454208=_0x1a96d4[_0xce60('0x8a')]();_0x454208['field'](_0xce60('0x8b'));_0x454208[_0xce60('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x558192['order']){_0x558192[_0xce60('0x49')]['forEach'](function(_0x434908){var _0x500697=_0x434908[0x0]===_0xce60('0x8c')?_0x434908[0x0]:'i.'+_0x434908[0x0];_0x1a96d4[_0xce60('0x49')](_0x500697,_0x434908[0x1]===_0xce60('0x8d')?![]:!![]);});}if(!_[_0xce60('0x74')](_0x3e51c2)){_0x1a96d4[_0xce60('0x62')](_0x464b6e);_0x454208['where'](_0xce60('0x8e'),_0x3e51c2);}BPromise[_0xce60('0x8f')]()[_0xce60('0x2c')](function(){if(!_0x4c19b3){if(_0x526b6d['query'][_0xce60('0x75')])return;_0x454208[_0xce60('0x4b')](_0xce60('0x90'));_0x1a96d4[_0xce60('0x4b')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x526b6d[_0xce60('0x91')]['role']!==_0xce60('0x92'))return;return _0x526b6d['user'][_0xce60('0x93')]({'attributes':['id'],'raw':!![]})['then'](function(_0x411bf7){if(_['isEmpty'](_0x411bf7)){_0x454208[_0xce60('0x4b')](_0xce60('0x94'));_0x1a96d4['where'](_0xce60('0x94'));}else{_0x454208['where'](_0xce60('0x76'),_[_0xce60('0x32')](_0x411bf7,'id'));_0x1a96d4[_0xce60('0x4b')]('i.FaxAccountId\x20IN\x20?',_[_0xce60('0x32')](_0x411bf7,'id'));}});})[_0xce60('0x2c')](function(){if(_0x526b6d[_0xce60('0x91')]['role']==='agent'&&!_0x4c19b3&&!_0x526b6d[_0xce60('0x43')]['FaxAccountId'])return[];return db['sequelize'][_0xce60('0x43')](_0x454208[_0xce60('0x95')](),_0x10d69a);})[_0xce60('0x2c')](function(_0x1b90c6){_0x956451[_0xce60('0x27')]=_0x1b90c6[_0xce60('0x46')];if(_0x956451[_0xce60('0x27')]===0x0)return[];return db[_0xce60('0x96')]['query'](_0x521adf[_0xce60('0x95')](),_0x10d69a)['then'](function(_0x3be42d){_0x27d8a3=_[_0xce60('0x97')](_0x3be42d,'id');_0x10d69a=_[_0xce60('0x98')](_0x10d69a,{'model':db[_0xce60('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x526b6d[_0xce60('0x43')][_0xce60('0x45')]){_0x558192['attributes'][_0xce60('0x36')](function(_0x24aa16){_0x1a96d4['field']('i.'+_0x24aa16);});}else{_0x1a96d4[_0xce60('0x4d')](_0xce60('0x99'),_0xce60('0x9a'));_0x1a96d4[_0xce60('0x4d')](_0xce60('0x9b'),_0xce60('0x9c'));_0x1a96d4['field'](_0xce60('0x9d'),_0xce60('0x9e'));_0x1a96d4[_0xce60('0x4d')](_0xce60('0x9f'),_0xce60('0x8c'));_0x1a96d4['field'](_0xce60('0xa0'));_0x1a96d4[_0xce60('0x4d')]('c.firstName',_0xce60('0xa1'));_0x1a96d4[_0xce60('0x4d')]('c.lastName','Contact.lastName');_0x1a96d4[_0xce60('0x4d')](_0xce60('0xa2'),_0xce60('0xa3'));_0x1a96d4[_0xce60('0x4d')](_0xce60('0xa4'),'Contact.phone');_0x1a96d4[_0xce60('0x4d')](_0xce60('0xa5'),_0xce60('0xa6'));_0x1a96d4[_0xce60('0x4d')](_0xce60('0xa7'),'Contact.fax');_0x1a96d4[_0xce60('0x4d')](_0xce60('0xa8'),'Owner.fullname');_0x1a96d4['field'](_0xce60('0xa9'),_0xce60('0xaa'));_0x1a96d4[_0xce60('0x4d')](_0xce60('0xab'),_0xce60('0x34'));}if(_0x558192[_0xce60('0x26')])_0x1a96d4[_0xce60('0x26')](_0x558192[_0xce60('0x26')]);if(_0x558192[_0xce60('0x24')])_0x1a96d4[_0xce60('0x24')](_0x558192[_0xce60('0x24')]);return db['sequelize']['query'](_0x1a96d4[_0xce60('0x95')](),_0x10d69a);})[_0xce60('0x2c')](function(_0x20dc55){if(_0x20dc55[_0xce60('0x46')]>0x0)_0x7d7a98[_0xce60('0x4b')](_0xce60('0xac'),_[_0xce60('0x32')](_0x20dc55,'id'));return db['sequelize'][_0xce60('0x43')](_0x7d7a98['toString'](),_0x10d69a)[_0xce60('0x2c')](function(_0x35a757){var _0x4a86de=_[_0xce60('0xad')](_0x35a757,_0xce60('0xae'));var _0x477ec1=[];_0x20dc55[_0xce60('0x36')](function(_0x431aa4){_0x477ec1[_0xce60('0x37')](updateFaxInteraction(_0x431aa4,_0x27d8a3,_0x4a86de));});return BPromise[_0xce60('0xaf')](_0x477ec1);});});})[_0xce60('0x2c')](function(_0xdf7487){_0x956451[_0xce60('0xb0')]=_0xdf7487;return _0x956451;})[_0xce60('0x2c')](respondWithFilteredResult(_0x46e818,_0x558192))[_0xce60('0x38')](handleError(_0x46e818,null));};exports['show']=function(_0x18025f,_0x39b8fd){var _0x1d9e92={'raw':![],'where':{'id':_0x18025f[_0xce60('0xb1')]['id']}},_0x255937={};_0x255937[_0xce60('0x3f')]=_[_0xce60('0x40')](db['FaxInteraction']['rawAttributes']);_0x255937[_0xce60('0x43')]=_[_0xce60('0x40')](_0x18025f['query']);_0x255937[_0xce60('0x41')]=_[_0xce60('0x42')](_0x255937[_0xce60('0x3f')],_0x255937[_0xce60('0x43')]);_0x1d9e92['attributes']=_[_0xce60('0x42')](_0x255937['model'],qs[_0xce60('0x45')](_0x18025f[_0xce60('0x43')]['fields']));_0x1d9e92[_0xce60('0x44')]=_0x1d9e92[_0xce60('0x44')][_0xce60('0x46')]?_0x1d9e92[_0xce60('0x44')]:_0x255937[_0xce60('0x3f')];if(_0x18025f[_0xce60('0x43')][_0xce60('0xb2')]){_0x1d9e92[_0xce60('0xb3')]=[{'all':!![]}];}_0x1d9e92=_[_0xce60('0x98')]({},_0x1d9e92,_0x18025f[_0xce60('0xb4')]);return db[_0xce60('0x3a')][_0xce60('0x70')](_0x1d9e92)[_0xce60('0x2c')](handleEntityNotFound(_0x39b8fd,null))[_0xce60('0x2c')](respondWithResult(_0x39b8fd,null))[_0xce60('0x38')](handleError(_0x39b8fd,null));};exports[_0xce60('0xb5')]=function(_0x29e8ac,_0xff5ed){return db[_0xce60('0x3a')][_0xce60('0xb5')](_0x29e8ac[_0xce60('0x72')],{})[_0xce60('0x2c')](respondWithResult(_0xff5ed,0xc9))[_0xce60('0x38')](handleError(_0xff5ed,null));};exports[_0xce60('0xb6')]=function(_0xad0ba3,_0x449cb6){if(_0xad0ba3[_0xce60('0x72')]['id']){delete _0xad0ba3[_0xce60('0x72')]['id'];}return db[_0xce60('0x3a')]['find']({'where':{'id':_0xad0ba3[_0xce60('0xb1')]['id']}})[_0xce60('0x2c')](handleEntityNotFound(_0x449cb6,null))[_0xce60('0x2c')](saveUpdates(_0xad0ba3[_0xce60('0x72')],null))['then'](respondWithResult(_0x449cb6,null))[_0xce60('0x38')](handleError(_0x449cb6,null));};exports[_0xce60('0x2d')]=function(_0x3b4269,_0x25991a){return db[_0xce60('0x3a')][_0xce60('0x70')]({'where':{'id':_0x3b4269[_0xce60('0xb1')]['id']}})[_0xce60('0x2c')](handleEntityNotFound(_0x25991a,null))[_0xce60('0x2c')](removeEntity(_0x25991a,null))[_0xce60('0x38')](handleError(_0x25991a,null));};exports[_0xce60('0xb7')]=function(_0x173528,_0x43ad62){return db[_0xce60('0x3a')]['describe']()[_0xce60('0x2c')](respondWithResult(_0x43ad62,null))[_0xce60('0x38')](handleError(_0x43ad62,null));};exports[_0xce60('0xb8')]=function(_0x43bd14,_0x569390,_0x37f6d3){return db[_0xce60('0xb9')][_0xce60('0x70')]({'where':{'id':_0x43bd14[_0xce60('0xb1')]['id']}})[_0xce60('0x2c')](handleEntityNotFound(_0x569390,null))[_0xce60('0x2c')](function(_0x218802){if(_0x218802){return _0x218802[_0xce60('0xb8')](_0x43bd14[_0xce60('0x72')][_0xce60('0xba')],_[_0xce60('0xbb')](_0x43bd14[_0xce60('0x72')],[_0xce60('0xba'),'id'])||{});}})[_0xce60('0x2c')](respondWithResult(_0x569390,null))[_0xce60('0x38')](handleError(_0x569390,null));};exports['getMessages']=function(_0x2269e7,_0x324161,_0x227101){var _0x2e203c={'raw':![],'where':{}};var _0x532618={};var _0x1bd84c={'count':0x0,'rows':[]};return db[_0xce60('0x3a')]['findOne']({'where':{'id':_0x2269e7[_0xce60('0xb1')]['id']}})[_0xce60('0x2c')](handleEntityNotFound(_0x324161,null))[_0xce60('0x2c')](function(_0x5c1108){if(_0x5c1108){_0x532618['model']=_['keys'](db[_0xce60('0xb9')][_0xce60('0x3b')]);_0x532618[_0xce60('0x43')]=_[_0xce60('0x40')](_0x2269e7[_0xce60('0x43')]);_0x532618[_0xce60('0x41')]=_[_0xce60('0x42')](_0x532618['model'],_0x532618[_0xce60('0x43')]);_0x2e203c['attributes']=_[_0xce60('0x42')](_0x532618['model'],qs['fields'](_0x2269e7[_0xce60('0x43')][_0xce60('0x45')]));_0x2e203c['attributes']=_0x2e203c[_0xce60('0x44')][_0xce60('0x46')]?_0x2e203c[_0xce60('0x44')]:_0x532618[_0xce60('0x3f')];if(!_0x2269e7[_0xce60('0x43')]['hasOwnProperty'](_0xce60('0x48'))){_0x2e203c[_0xce60('0x26')]=qs['limit'](_0x2269e7[_0xce60('0x43')][_0xce60('0x26')]);_0x2e203c[_0xce60('0x24')]=qs[_0xce60('0x24')](_0x2269e7[_0xce60('0x43')]['offset']);}_0x2e203c[_0xce60('0x49')]=qs[_0xce60('0x4a')](_0x2269e7[_0xce60('0x43')]['sort']);_0x2e203c['where']=qs[_0xce60('0x41')](_[_0xce60('0x4c')](_0x2269e7[_0xce60('0x43')],_0x532618[_0xce60('0x41')]));_0x2e203c[_0xce60('0x4b')]['FaxInteractionId']=_0x5c1108['id'];if(_0x2269e7['query']['filter']){_0x2e203c[_0xce60('0x4b')]=_[_0xce60('0x98')](_0x2e203c[_0xce60('0x4b')],{'$or':_[_0xce60('0x32')](_0x2e203c[_0xce60('0x44')],function(_0x53f0e3){var _0x4d0cd2={};_0x4d0cd2[_0x53f0e3]={'$like':'%'+_0x2269e7[_0xce60('0x43')][_0xce60('0x83')]+'%'};return _0x4d0cd2;})});}if(_0x2269e7[_0xce60('0x43')][_0xce60('0xbc')]){var _0x474c88=_0x2269e7[_0xce60('0x43')][_0xce60('0xbc')][_0xce60('0x35')](',');var _0x502437={};_0x502437[_0x474c88[0x0]]={'$gte':moment(_0x474c88[0x1])[_0xce60('0xbd')](_0xce60('0xbe'))};_0x2e203c[_0xce60('0x4b')]=_['merge'](_0x2e203c[_0xce60('0x4b')],_0x502437);}_0x2e203c=_[_0xce60('0x98')]({},_0x2e203c,_0x2269e7[_0xce60('0xb4')]);return db[_0xce60('0xb9')]['count']({'where':_0x2e203c['where']})[_0xce60('0x2c')](function(_0x37d9bf){_0x1bd84c[_0xce60('0x27')]=_0x37d9bf;if(_0x2269e7[_0xce60('0x43')][_0xce60('0xb2')]){_0x2e203c[_0xce60('0xb3')]=[{'all':!![]}];}return db[_0xce60('0xb9')][_0xce60('0xbf')](_0x2e203c);})[_0xce60('0x2c')](function(_0x56c34e){_0x1bd84c[_0xce60('0xb0')]=_0x56c34e;return _0x1bd84c;});}})[_0xce60('0x2c')](respondWithFilteredResult(_0x324161,_0x2e203c))[_0xce60('0x38')](handleError(_0x324161,null));};exports[_0xce60('0xc0')]=function(_0x75b440,_0x16fbee,_0x3517ad){return db[_0xce60('0x3a')]['find']({'where':{'id':_0x75b440[_0xce60('0xb1')]['id']}})['then'](handleEntityNotFound(_0x16fbee,null))[_0xce60('0x2c')](function(_0x1da204){if(_0x1da204){return _0x1da204['setTags'](_0x75b440[_0xce60('0x72')][_0xce60('0xba')],_['omit'](_0x75b440[_0xce60('0x72')],[_0xce60('0xba'),'id'])||{})[_0xce60('0xc1')](function(){return db[_0xce60('0x6b')]['findAll']({'attributes':['id','name',_0xce60('0xc2')],'where':{'id':_0x75b440[_0xce60('0x72')]['ids']}});})[_0xce60('0x2c')](function(_0x23987b){socket[_0xce60('0xc3')](_0xce60('0xc4'),{'id':Number(_0x75b440[_0xce60('0xb1')]['id']),'tags':_0x23987b||[]});return{'id':Number(_0x75b440[_0xce60('0xb1')]['id']),'tags':_0x23987b||[]};});}})[_0xce60('0x2c')](respondWithResult(_0x16fbee,null))[_0xce60('0x38')](handleError(_0x16fbee,null));};exports[_0xce60('0xc5')]=function(_0x5b04a3,_0x135340,_0x24b2dc){return db[_0xce60('0x3a')][_0xce60('0x70')]({'where':{'id':_0x5b04a3[_0xce60('0xb1')]['id']}})[_0xce60('0x2c')](handleEntityNotFound(_0x135340,null))['then'](function(_0x21f1fe){if(_0x21f1fe){return _0x21f1fe[_0xce60('0xc5')](_0x5b04a3[_0xce60('0x43')][_0xce60('0xba')]);}})[_0xce60('0x2c')](respondWithStatusCode(_0x135340,null))[_0xce60('0x38')](handleError(_0x135340,null));};exports[_0xce60('0xc6')]=function(_0x15cb56,_0x3b40b0){var _0x459848=moment()[_0xce60('0xc7')]()['toString']();var _0x476538=path[_0xce60('0xc8')](config['root'],'server',_0xce60('0xc9'),_0xce60('0xca'));var _0x25d0bf=path[_0xce60('0xc8')](config[_0xce60('0xcb')],'server',_0xce60('0xc9'),_0xce60('0xcc'));var _0x621726=path[_0xce60('0xc8')](_0x476538,_0x459848);var _0x205d68=util[_0xce60('0xbd')](_0xce60('0xcd'),_0x15cb56[_0xce60('0xb1')]['id'],_0x459848);var _0x1c224d=path[_0xce60('0xc8')](_0x476538,_0x205d68);var _0x4641dd=[];_0x4641dd['push']({'model':db['Attachment'],'as':_0xce60('0xce'),'raw':!![]});var _0x56e2b4=[{'model':db[_0xce60('0xb9')],'as':_0xce60('0xcf'),'attributes':['id',_0xce60('0x72'),_0xce60('0x78')],'include':_0x4641dd}];return db[_0xce60('0x3a')][_0xce60('0x70')]({'where':{'id':_0x15cb56['params']['id']},'include':_0x56e2b4})['then'](handleEntityNotFound(_0x3b40b0,null))[_0xce60('0x2c')](function(_0x1ad76b){if(_0x1ad76b&&_0x1ad76b[_0xce60('0xcf')]){var _0x287093=_0x1ad76b['get']({'plain':!![]});fs[_0xce60('0xd0')](_0x621726);for(var _0x544752=0x0;_0x544752<_0x287093[_0xce60('0xcf')][_0xce60('0x46')];_0x544752++){var _0x3ef828=_0x287093[_0xce60('0xcf')][_0x544752]['Attachment'];if(_0x3ef828){var _0x29a51d=path[_0xce60('0xc8')](_0x25d0bf,_0x3ef828['basename']);if(fs[_0xce60('0xd1')](_0x29a51d)){fs[_0xce60('0xd2')](_0x29a51d)[_0xce60('0xd3')](fs['createWriteStream'](path[_0xce60('0xc8')](_0x621726,_0x3ef828[_0xce60('0xd4')])));}}}return BPromise[_0xce60('0x8f')]()[_0xce60('0x2c')](function(){return new BPromise(function(_0x23745d,_0x3781d9){zipdir(_0x621726,{'saveTo':_0x1c224d},function(_0x49e045,_0x5eea56){if(_0x49e045)return _0x3781d9(_0x49e045);return _0x23745d(_0x5eea56);});})[_0xce60('0x2c')](function(){return new BPromise(function(_0x427c0a,_0x1a145d){rimraf(_0x621726,function(_0x161d2d){if(_0x161d2d)_0x1a145d(_0x161d2d);return _0x427c0a();});});})[_0xce60('0x2c')](function(){return _0x3b40b0[_0xce60('0xc6')](_0x1c224d,_0x205d68,function(_0x177051){if(_0x177051){console[_0xce60('0xd5')](_0xce60('0xd6'),_0x177051);}else{fs[_0xce60('0xd7')](_0x1c224d);}});});});}else{return _0x3b40b0[_0xce60('0x21')](0xc8);}})[_0xce60('0x38')](handleError(_0x3b40b0,null));};
\ No newline at end of file
index 40424e0..302e854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5673=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit'];(function(_0x5bc534,_0x2433ef){var _0x12b8c7=function(_0x227130){while(--_0x227130){_0x5bc534['push'](_0x5bc534['shift']());}};_0x12b8c7(++_0x2433ef);}(_0x5673,0x192));var _0x3567=function(_0x5de214,_0x107e9d){_0x5de214=_0x5de214-0x0;var _0x4df627=_0x5673[_0x5de214];return _0x4df627;};'use strict';var EventEmitter=require(_0x3567('0x0'));var FaxInteraction=require(_0x3567('0x1'))['db']['FaxInteraction'];var FaxMessage=require('../../mysqldb')['db'][_0x3567('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x3567('0x3')](0x0);var events={'afterCreate':_0x3567('0x4'),'afterUpdate':_0x3567('0x5'),'afterDestroy':_0x3567('0x6')};function emitEvent(_0x351065){return function(_0x580a44,_0x43d272,_0x4bf595){_0x580a44[_0x3567('0x7')]({'attributes':['id'],'raw':!![]})[_0x3567('0x8')](function(_0x426677){_0x580a44[_0x3567('0x9')](_0x3567('0xa'),_0x426677[_0x3567('0xb')](function(_0x144878){return{'id':_0x144878['id']};}));return FaxMessage[_0x3567('0xc')]({'where':{'FaxInteractionId':_0x580a44['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3567('0x8')](function(_0x785216){_0x580a44['setDataValue'](_0x3567('0xd'),_0x785216[_0x3567('0xe')]);FaxInteractionEvents[_0x3567('0xf')](_0x351065+':'+_0x580a44['id'],_0x580a44);FaxInteractionEvents[_0x3567('0xf')](_0x351065,_0x580a44);_0x4bf595(null);})['catch'](_0x4bf595(null));};}for(var e in events){if(events[_0x3567('0x10')](e)){var event=events[e];FaxInteraction[_0x3567('0x11')](e,emitEvent(event));}}module[_0x3567('0x12')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x8f67=['update','remove','then','Users','map','findAll','unreadMessages','emit','catch','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage'];(function(_0x1e03a6,_0xf0349){var _0x295b64=function(_0x1ad0a5){while(--_0x1ad0a5){_0x1e03a6['push'](_0x1e03a6['shift']());}};_0x295b64(++_0xf0349);}(_0x8f67,0xec));var _0x78f6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8f67[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x78f6('0x0'));var FaxInteraction=require(_0x78f6('0x1'))['db'][_0x78f6('0x2')];var FaxMessage=require(_0x78f6('0x1'))['db'][_0x78f6('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x78f6('0x4'),'afterDestroy':_0x78f6('0x5')};function emitEvent(_0x5aabce){return function(_0x3f327a,_0x2bd18f,_0x3298e8){_0x3f327a['getUsers']({'attributes':['id'],'raw':!![]})[_0x78f6('0x6')](function(_0x10b7a0){_0x3f327a['setDataValue'](_0x78f6('0x7'),_0x10b7a0[_0x78f6('0x8')](function(_0xe23410){return{'id':_0xe23410['id']};}));return FaxMessage[_0x78f6('0x9')]({'where':{'FaxInteractionId':_0x3f327a['id'],'direction':'in','read':![]},'raw':!![]});})[_0x78f6('0x6')](function(_0x38990e){_0x3f327a['setDataValue'](_0x78f6('0xa'),_0x38990e['length']);FaxInteractionEvents[_0x78f6('0xb')](_0x5aabce+':'+_0x3f327a['id'],_0x3f327a);FaxInteractionEvents[_0x78f6('0xb')](_0x5aabce,_0x3f327a);_0x3298e8(null);})[_0x78f6('0xc')](_0x3298e8(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0x78f6('0xd')](e,emitEvent(event));}}module[_0x78f6('0xe')]=FaxInteractionEvents;
\ No newline at end of file
index fec50cd..2cb7bdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7313=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxInteraction.attributes','exports','FaxInteraction','fax_interactions','closedAt','format'];(function(_0x2682f4,_0x5f0220){var _0x43f7d8=function(_0x2c1a19){while(--_0x2c1a19){_0x2682f4['push'](_0x2682f4['shift']());}};_0x43f7d8(++_0x5f0220);}(_0x7313,0x1f1));var _0x3731=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x7313[_0x2dea24];return _0x309d58;};'use strict';var _=require(_0x3731('0x0'));var util=require(_0x3731('0x1'));var logger=require(_0x3731('0x2'))(_0x3731('0x3'));var moment=require(_0x3731('0x4'));var BPromise=require(_0x3731('0x5'));var rp=require(_0x3731('0x6'));var fs=require('fs');var path=require(_0x3731('0x7'));var rimraf=require(_0x3731('0x8'));var config=require('../../config/environment');var attributes=require(_0x3731('0x9'));module[_0x3731('0xa')]=function(_0x266f40,_0x5a46c7){return _0x266f40['define'](_0x3731('0xb'),attributes,{'tableName':_0x3731('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4e3166,_0x5a9fd5,_0x56b909){if(_0x4e3166['changed']('closed')){_0x4e3166[_0x3731('0xd')]=moment()[_0x3731('0xe')](_0x3731('0xf'));}_0x56b909(null,_0x4e3166);}}});};
\ No newline at end of file
+var _0x98f9=['define','fax_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','api','path','./faxInteraction.attributes','exports'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x98f9,0x1a8));var _0x998f=function(_0x2380b3,_0x1530bd){_0x2380b3=_0x2380b3-0x0;var _0x143836=_0x98f9[_0x2380b3];return _0x143836;};'use strict';var _=require(_0x998f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x998f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x998f('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x998f('0x3'));module[_0x998f('0x4')]=function(_0x49368d,_0x2d4955){return _0x49368d[_0x998f('0x5')]('FaxInteraction',attributes,{'tableName':_0x998f('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x172ed0,_0x46251f,_0xfcee15){if(_0x172ed0[_0x998f('0x7')](_0x998f('0x8'))){_0x172ed0['closedAt']=moment()[_0x998f('0x9')](_0x998f('0xa'));}_0xfcee15(null,_0x172ed0);}}});};
\ No newline at end of file
index 82bb18f..cadeda9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3a6=['register','request','then','request\x20sent','debug','stringify','error','code','message','FaxInteraction,\x20%s,\x20%s','info','result','catch','UpdateFaxInteraction','FaxInteraction','body','options','raw','where','attributes','AddTagsToFaxInteraction','find','addTags','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x55fc63,_0x25b2b0){var _0x119074=function(_0x20e456){while(--_0x20e456){_0x55fc63['push'](_0x55fc63['shift']());}};_0x119074(++_0x25b2b0);}(_0xf3a6,0x15a));var _0x6f3a=function(_0x4a9d73,_0x404b5f){_0x4a9d73=_0x4a9d73-0x0;var _0x2544c1=_0xf3a6[_0x4a9d73];return _0x2544c1;};'use strict';var _=require(_0x6f3a('0x0'));var util=require(_0x6f3a('0x1'));var moment=require(_0x6f3a('0x2'));var BPromise=require(_0x6f3a('0x3'));var rs=require(_0x6f3a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6f3a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6f3a('0x6'))(_0x6f3a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6f3a('0x8')][_0x6f3a('0x9')]({'port':0x232a});config[_0x6f3a('0xa')]=_[_0x6f3a('0xb')](config['redis'],{'host':_0x6f3a('0xc'),'port':0x18eb});var socket=require(_0x6f3a('0xd'))(new Redis(config[_0x6f3a('0xa')]));require('./faxInteraction.socket')[_0x6f3a('0xe')](socket);function respondWithRpcPromise(_0x23d968,_0x4c2800,_0x1e853f){return new BPromise(function(_0x414eb6,_0x91dc09){return client[_0x6f3a('0xf')](_0x23d968,_0x1e853f)[_0x6f3a('0x10')](function(_0x2da40c){logger['info']('FaxInteraction,\x20%s,\x20%s',_0x4c2800,_0x6f3a('0x11'));logger[_0x6f3a('0x12')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x4c2800,_0x6f3a('0x11'),JSON[_0x6f3a('0x13')](_0x2da40c));if(_0x2da40c[_0x6f3a('0x14')]){if(_0x2da40c[_0x6f3a('0x14')][_0x6f3a('0x15')]===0x1f4){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x4c2800,_0x2da40c[_0x6f3a('0x14')][_0x6f3a('0x16')]);return _0x91dc09(_0x2da40c[_0x6f3a('0x14')][_0x6f3a('0x16')]);}logger['error'](_0x6f3a('0x17'),_0x4c2800,_0x2da40c[_0x6f3a('0x14')][_0x6f3a('0x16')]);return _0x414eb6(_0x2da40c['error'][_0x6f3a('0x16')]);}else{logger[_0x6f3a('0x18')](_0x6f3a('0x17'),_0x4c2800,_0x6f3a('0x11'));_0x414eb6(_0x2da40c[_0x6f3a('0x19')][_0x6f3a('0x16')]);}})[_0x6f3a('0x1a')](function(_0x484e86){logger[_0x6f3a('0x14')](_0x6f3a('0x17'),_0x4c2800,_0x484e86);_0x91dc09(_0x484e86);});});}exports[_0x6f3a('0x1b')]=function(_0x959199){var _0x16f7ff=this;return new Promise(function(_0x1670ce,_0x1c9919){return db[_0x6f3a('0x1c')]['update'](_0x959199[_0x6f3a('0x1d')],{'raw':_0x959199[_0x6f3a('0x1e')]?_0x959199['options'][_0x6f3a('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x959199['options']?_0x959199[_0x6f3a('0x1e')][_0x6f3a('0x20')]||null:null,'attributes':_0x959199[_0x6f3a('0x1e')]?_0x959199[_0x6f3a('0x1e')][_0x6f3a('0x21')]||null:null,'limit':_0x959199['options']?_0x959199[_0x6f3a('0x1e')]['limit']||null:null})[_0x6f3a('0x10')](function(_0x58ed8b){logger[_0x6f3a('0x18')]('UpdateFaxInteraction',_0x959199);logger[_0x6f3a('0x12')]('UpdateFaxInteraction',_0x959199,JSON[_0x6f3a('0x13')](_0x58ed8b));_0x1670ce(_0x58ed8b);})['catch'](function(_0x28aa78){logger[_0x6f3a('0x14')]('UpdateFaxInteraction',_0x28aa78[_0x6f3a('0x16')],_0x959199);_0x1c9919(_0x16f7ff[_0x6f3a('0x14')](0x1f4,_0x28aa78[_0x6f3a('0x16')]));});});};exports[_0x6f3a('0x22')]=function(_0x1ec8d3){return new Promise(function(_0xbc3fb1,_0x13abe8){return db[_0x6f3a('0x1c')][_0x6f3a('0x23')]({'where':_0x1ec8d3[_0x6f3a('0x1e')]?_0x1ec8d3['options'][_0x6f3a('0x20')]||null:null})['then'](function(_0x12f76e){if(_0x12f76e){return _0x12f76e[_0x6f3a('0x24')](_0x1ec8d3[_0x6f3a('0x1d')][_0x6f3a('0x25')],_['omit'](_0x1ec8d3['body'],[_0x6f3a('0x25'),'id'])||{});}})[_0x6f3a('0x26')](function(_0xca989b){logger[_0x6f3a('0x18')](_0x6f3a('0x27'),_0x1ec8d3);logger['debug']('AddTags',_0x1ec8d3,JSON[_0x6f3a('0x13')](_0xca989b));_0xbc3fb1(_0xca989b);})[_0x6f3a('0x1a')](function(_0x2e50c3){logger['error'](_0x6f3a('0x27'),_0x2e50c3[_0x6f3a('0x16')],_0x1ec8d3);_0x13abe8(_this[_0x6f3a('0x14')](0x1f4,_0x2e50c3[_0x6f3a('0x16')]));});});};
\ No newline at end of file
+var _0x8720=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','limit','AddTagsToFaxInteraction','find','addTags','omit','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x4b6847,_0x50c4d6){var _0x562863=function(_0x51fb51){while(--_0x51fb51){_0x4b6847['push'](_0x4b6847['shift']());}};_0x562863(++_0x50c4d6);}(_0x8720,0x87));var _0x0872=function(_0x159a50,_0x1fc17e){_0x159a50=_0x159a50-0x0;var _0x2e03a7=_0x8720[_0x159a50];return _0x2e03a7;};'use strict';var _=require(_0x0872('0x0'));var util=require(_0x0872('0x1'));var moment=require(_0x0872('0x2'));var BPromise=require(_0x0872('0x3'));var rs=require(_0x0872('0x4'));var fs=require('fs');var Redis=require(_0x0872('0x5'));var db=require(_0x0872('0x6'))['db'];var utils=require(_0x0872('0x7'));var logger=require(_0x0872('0x8'))(_0x0872('0x9'));var config=require(_0x0872('0xa'));var jayson=require(_0x0872('0xb'));var client=jayson['client'][_0x0872('0xc')]({'port':0x232a});config[_0x0872('0xd')]=_[_0x0872('0xe')](config[_0x0872('0xd')],{'host':_0x0872('0xf'),'port':0x18eb});var socket=require(_0x0872('0x10'))(new Redis(config[_0x0872('0xd')]));require(_0x0872('0x11'))[_0x0872('0x12')](socket);function respondWithRpcPromise(_0x32d07b,_0x186996,_0x5d588c){return new BPromise(function(_0xa4956d,_0x1aa97d){return client[_0x0872('0x13')](_0x32d07b,_0x5d588c)[_0x0872('0x14')](function(_0x39519d){logger[_0x0872('0x15')](_0x0872('0x16'),_0x186996,'request\x20sent');logger[_0x0872('0x17')](_0x0872('0x18'),_0x186996,_0x0872('0x19'),JSON['stringify'](_0x39519d));if(_0x39519d['error']){if(_0x39519d[_0x0872('0x1a')][_0x0872('0x1b')]===0x1f4){logger[_0x0872('0x1a')](_0x0872('0x16'),_0x186996,_0x39519d[_0x0872('0x1a')][_0x0872('0x1c')]);return _0x1aa97d(_0x39519d['error'][_0x0872('0x1c')]);}logger[_0x0872('0x1a')]('FaxInteraction,\x20%s,\x20%s',_0x186996,_0x39519d['error']['message']);return _0xa4956d(_0x39519d['error'][_0x0872('0x1c')]);}else{logger[_0x0872('0x15')](_0x0872('0x16'),_0x186996,_0x0872('0x19'));_0xa4956d(_0x39519d[_0x0872('0x1d')][_0x0872('0x1c')]);}})[_0x0872('0x1e')](function(_0x160be0){logger['error'](_0x0872('0x16'),_0x186996,_0x160be0);_0x1aa97d(_0x160be0);});});}exports[_0x0872('0x1f')]=function(_0x2b7bd2){var _0x1ce0eb=this;return new Promise(function(_0x1d4b50,_0x45f91b){return db[_0x0872('0x20')][_0x0872('0x21')](_0x2b7bd2[_0x0872('0x22')],{'raw':_0x2b7bd2[_0x0872('0x23')]?_0x2b7bd2[_0x0872('0x23')][_0x0872('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b7bd2['options']?_0x2b7bd2['options'][_0x0872('0x25')]||null:null,'attributes':_0x2b7bd2[_0x0872('0x23')]?_0x2b7bd2[_0x0872('0x23')][_0x0872('0x26')]||null:null,'limit':_0x2b7bd2[_0x0872('0x23')]?_0x2b7bd2[_0x0872('0x23')][_0x0872('0x27')]||null:null})['then'](function(_0x24b06b){logger['info'](_0x0872('0x1f'),_0x2b7bd2);logger[_0x0872('0x17')](_0x0872('0x1f'),_0x2b7bd2,JSON['stringify'](_0x24b06b));_0x1d4b50(_0x24b06b);})[_0x0872('0x1e')](function(_0x2aa5e9){logger[_0x0872('0x1a')](_0x0872('0x1f'),_0x2aa5e9['message'],_0x2b7bd2);_0x45f91b(_0x1ce0eb[_0x0872('0x1a')](0x1f4,_0x2aa5e9[_0x0872('0x1c')]));});});};exports[_0x0872('0x28')]=function(_0x4859d3){return new Promise(function(_0x1e140b,_0x3177cf){return db['FaxInteraction'][_0x0872('0x29')]({'where':_0x4859d3[_0x0872('0x23')]?_0x4859d3[_0x0872('0x23')]['where']||null:null})['then'](function(_0x1ceeae){if(_0x1ceeae){return _0x1ceeae[_0x0872('0x2a')](_0x4859d3[_0x0872('0x22')]['ids'],_[_0x0872('0x2b')](_0x4859d3[_0x0872('0x22')],[_0x0872('0x2c'),'id'])||{});}})[_0x0872('0x2d')](function(_0x5c1aa8){logger['info'](_0x0872('0x2e'),_0x4859d3);logger[_0x0872('0x17')]('AddTags',_0x4859d3,JSON['stringify'](_0x5c1aa8));_0x1e140b(_0x5c1aa8);})[_0x0872('0x1e')](function(_0x52db33){logger[_0x0872('0x1a')](_0x0872('0x2e'),_0x52db33[_0x0872('0x1c')],_0x4859d3);_0x3177cf(_this[_0x0872('0x1a')](0x1f4,_0x52db33[_0x0872('0x1c')]));});});};
\ No newline at end of file
index ea2f0f9..92feebf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe665=['./faxInteraction.events','save','emit','removeListener','register','faxInteraction:'];(function(_0x1d5bb9,_0xc8259a){var _0x19b9ec=function(_0x2755bd){while(--_0x2755bd){_0x1d5bb9['push'](_0x1d5bb9['shift']());}};_0x19b9ec(++_0xc8259a);}(_0xe665,0x7e));var _0x5e66=function(_0x50e1a6,_0xdcaca1){_0x50e1a6=_0x50e1a6-0x0;var _0x495adb=_0xe665[_0x50e1a6];return _0x495adb;};'use strict';var FaxInteractionEvents=require(_0x5e66('0x0'));var events=[_0x5e66('0x1'),'remove','update'];function createListener(_0x431a6e,_0x580a0c){return function(_0x2a640d){_0x580a0c[_0x5e66('0x2')](_0x431a6e,_0x2a640d);};}function removeListener(_0x3b8e1d,_0x13a99e){return function(){FaxInteractionEvents[_0x5e66('0x3')](_0x3b8e1d,_0x13a99e);};}exports[_0x5e66('0x4')]=function(_0x2bd88f){for(var _0x18e093=0x0,_0x132320=events['length'];_0x18e093<_0x132320;_0x18e093++){var _0x3b0e5b=events[_0x18e093];var _0x2ecb63=createListener(_0x5e66('0x5')+_0x3b0e5b,_0x2bd88f);FaxInteractionEvents['on'](_0x3b0e5b,_0x2ecb63);}};
\ No newline at end of file
+var _0x9afd=['faxInteraction:','./faxInteraction.events','save','remove','update','emit','removeListener','register','length'];(function(_0x478c8a,_0x9afc92){var _0x3b6b3e=function(_0x37634e){while(--_0x37634e){_0x478c8a['push'](_0x478c8a['shift']());}};_0x3b6b3e(++_0x9afc92);}(_0x9afd,0x88));var _0xd9af=function(_0x34df4a,_0x209d10){_0x34df4a=_0x34df4a-0x0;var _0x145c69=_0x9afd[_0x34df4a];return _0x145c69;};'use strict';var FaxInteractionEvents=require(_0xd9af('0x0'));var events=[_0xd9af('0x1'),_0xd9af('0x2'),_0xd9af('0x3')];function createListener(_0x28f9d2,_0x577b12){return function(_0x57e813){_0x577b12[_0xd9af('0x4')](_0x28f9d2,_0x57e813);};}function removeListener(_0x3db20f,_0x5ee076){return function(){FaxInteractionEvents[_0xd9af('0x5')](_0x3db20f,_0x5ee076);};}exports[_0xd9af('0x6')]=function(_0x1a5a05){for(var _0x5de8fd=0x0,_0xf0de75=events[_0xd9af('0x7')];_0x5de8fd<_0xf0de75;_0x5de8fd++){var _0x3b0126=events[_0x5de8fd];var _0x43561d=createListener(_0xd9af('0x8')+_0x3b0126,_0x1a5a05);FaxInteractionEvents['on'](_0x3b0126,_0x43561d);}};
\ No newline at end of file
index 2063017..fbfa4d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5961=['/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','fax','faxinteraction:addtags','addTags','put','tracked','faxinteraction:update','update','faxinteraction:destroy','delete','/:id/tags','removeTags','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get'];(function(_0x4f74a5,_0x1fd979){var _0x5be8b2=function(_0x3bb233){while(--_0x3bb233){_0x4f74a5['push'](_0x4f74a5['shift']());}};_0x5be8b2(++_0x1fd979);}(_0x5961,0x6f));var _0x1596=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0x5961[_0x53cf8e];return _0x459197;};'use strict';var multer=require(_0x1596('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1596('0x1'));var express=require(_0x1596('0x2'));var router=express['Router']();var fs_extra=require(_0x1596('0x3'));var auth=require(_0x1596('0x4'));var interaction=require(_0x1596('0x5'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router['get']('/',auth[_0x1596('0x6')](),controller[_0x1596('0x7')]);router[_0x1596('0x8')](_0x1596('0x9'),auth[_0x1596('0x6')](),controller[_0x1596('0xa')]);router[_0x1596('0x8')](_0x1596('0xb'),auth[_0x1596('0x6')](),controller[_0x1596('0xc')]);router[_0x1596('0x8')](_0x1596('0xd'),auth['isAuthenticated'](),controller[_0x1596('0xe')]);router[_0x1596('0x8')](_0x1596('0xf'),auth[_0x1596('0x6')](),controller['download']);router[_0x1596('0x10')]('/',auth[_0x1596('0x6')](),controller['create']);router[_0x1596('0x10')]('/:id/messages',auth[_0x1596('0x6')](),controller[_0x1596('0x11')]);router[_0x1596('0x10')]('/:id/tags',auth['isAuthenticated'](),interaction['tracked'](_0x1596('0x12'),_0x1596('0x13')),controller[_0x1596('0x14')]);router[_0x1596('0x15')]('/:id',auth[_0x1596('0x6')](),interaction[_0x1596('0x16')](_0x1596('0x12'),_0x1596('0x17')),controller[_0x1596('0x18')]);router['delete'](_0x1596('0xb'),auth[_0x1596('0x6')](),interaction[_0x1596('0x16')](_0x1596('0x12'),_0x1596('0x19')),controller['destroy']);router[_0x1596('0x1a')](_0x1596('0x1b'),auth['isAuthenticated'](),controller[_0x1596('0x1c')]);module[_0x1596('0x1d')]=router;
\ No newline at end of file
+var _0xbf9a=['../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','index','/describe','show','/:id/messages','isAuthenticated','getMessages','download','create','post','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','/:id','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x3748d7,_0xbb9699){var _0x5e3535=function(_0x53b8a7){while(--_0x53b8a7){_0x3748d7['push'](_0x3748d7['shift']());}};_0x5e3535(++_0xbb9699);}(_0xbf9a,0x7e));var _0xabf9=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0xbf9a[_0x2fc012];return _0x2891f9;};'use strict';var multer=require(_0xabf9('0x0'));var util=require('util');var path=require(_0xabf9('0x1'));var timeout=require(_0xabf9('0x2'));var express=require(_0xabf9('0x3'));var router=express['Router']();var fs_extra=require(_0xabf9('0x4'));var auth=require(_0xabf9('0x5'));var interaction=require(_0xabf9('0x6'));var config=require(_0xabf9('0x7'));var controller=require(_0xabf9('0x8'));router[_0xabf9('0x9')]('/',auth['isAuthenticated'](),controller[_0xabf9('0xa')]);router[_0xabf9('0x9')](_0xabf9('0xb'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller[_0xabf9('0xc')]);router['get'](_0xabf9('0xd'),auth[_0xabf9('0xe')](),controller[_0xabf9('0xf')]);router[_0xabf9('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0xabf9('0x10')]);router['post']('/',auth[_0xabf9('0xe')](),controller[_0xabf9('0x11')]);router[_0xabf9('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0xabf9('0x13')]);router[_0xabf9('0x12')](_0xabf9('0x14'),auth[_0xabf9('0xe')](),interaction[_0xabf9('0x15')](_0xabf9('0x16'),_0xabf9('0x17')),controller[_0xabf9('0x18')]);router['put'](_0xabf9('0x19'),auth['isAuthenticated'](),interaction['tracked'](_0xabf9('0x16'),_0xabf9('0x1a')),controller[_0xabf9('0x1b')]);router[_0xabf9('0x1c')](_0xabf9('0x19'),auth[_0xabf9('0xe')](),interaction[_0xabf9('0x15')](_0xabf9('0x16'),_0xabf9('0x1d')),controller[_0xabf9('0x1e')]);router[_0xabf9('0x1c')](_0xabf9('0x14'),auth['isAuthenticated'](),controller[_0xabf9('0x1f')]);module[_0xabf9('0x20')]=router;
\ No newline at end of file
index fa27b3a..c6bb476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['TEXT','medium','BOOLEAN','ENUM','out','DATE','exports'];(function(_0x396466,_0xe9857b){var _0x5e9ab4=function(_0x362f66){while(--_0x362f66){_0x396466['push'](_0x396466['shift']());}};_0x5e9ab4(++_0xe9857b);}(_0xe5b3,0x133));var _0x3e5b=function(_0x2c0abe,_0x2a14c4){_0x2c0abe=_0x2c0abe-0x0;var _0x1b0041=_0xe5b3[_0x2c0abe];return _0x1b0041;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'body':{'type':Sequelize[_0x3e5b('0x1')](_0x3e5b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x3e5b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3e5b('0x4')]('in',_0x3e5b('0x5')),'defaultValue':_0x3e5b('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x3e5b('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x3e5b('0x6')]}};
\ No newline at end of file
+var _0xfd0f=['exports','medium','BOOLEAN','ENUM','out','DATE','sequelize'];(function(_0x19b46c,_0x328ca2){var _0x4ae7c6=function(_0x2a8e50){while(--_0x2a8e50){_0x19b46c['push'](_0x19b46c['shift']());}};_0x4ae7c6(++_0x328ca2);}(_0xfd0f,0x1b8));var _0xffd0=function(_0x25cda9,_0x190b0e){_0x25cda9=_0x25cda9-0x0;var _0x3646a8=_0xfd0f[_0x25cda9];return _0x3646a8;};'use strict';var Sequelize=require(_0xffd0('0x0'));module[_0xffd0('0x1')]={'body':{'type':Sequelize['TEXT'](_0xffd0('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xffd0('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xffd0('0x4')]('in','out'),'defaultValue':_0xffd0('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0xffd0('0x6')]}};
\ No newline at end of file
index 5c196c9..6fdec1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07d6=['FaxMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','destroy','end','stack','name','send','index','FaxMessage','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','keys','find','body','describe','fax-interactions','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','update','read1stAt','interaction','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','email','internal','interface','SIP/%s','channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT','fullname','motionChannel','rejectmessage','findOne','isNil','Attachment','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','AttachmentId','download','join','root','attachments','basename','eml-format','rimraf','request-promise','mustache','util','to-csv','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','jayson/promise','client','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x07d6,0x174));var _0x607d=function(_0x5a91f3,_0x315683){_0x5a91f3=_0x5a91f3-0x0;var _0x4572d4=_0x07d6[_0x5a91f3];return _0x4572d4;};'use strict';var emlformat=require(_0x607d('0x0'));var rimraf=require(_0x607d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x607d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x607d('0x3'));var util=require(_0x607d('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x607d('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x607d('0x6'));var squel=require(_0x607d('0x7'));var crypto=require('crypto');var jsforce=require(_0x607d('0x8'));var deskjs=require('desk.js');var toCsv=require(_0x607d('0x5'));var querystring=require(_0x607d('0x9'));var Papa=require(_0x607d('0xa'));var Redis=require(_0x607d('0xb'));var authService=require(_0x607d('0xc'));var qs=require(_0x607d('0xd'));var as=require(_0x607d('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x607d('0xf'))(_0x607d('0x10'));var utils=require(_0x607d('0x11'));var config=require(_0x607d('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x607d('0x13'))['db'];config[_0x607d('0x14')]=_[_0x607d('0x15')](config[_0x607d('0x14')],{'host':_0x607d('0x16'),'port':0x18eb});var socket=require(_0x607d('0x17'))(new Redis(config['redis']));require(_0x607d('0x18'))['register'](socket);var jayson=require(_0x607d('0x19'));var client=jayson[_0x607d('0x1a')]['http']({'port':0x232c});var client9002=jayson[_0x607d('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20f13e,_0x53335e,_0x42ba75,_0x55eb35){return new BPromise(function(_0x1b4d9f,_0x785b37){var _0x3ed8bf=_0x55eb35||client;return _0x3ed8bf['request'](_0x20f13e,_0x42ba75)[_0x607d('0x1b')](function(_0x270773){logger['info']('FaxMessage,\x20%s,\x20%s',_0x53335e,_0x607d('0x1c'));logger[_0x607d('0x1d')](_0x607d('0x1e'),_0x53335e,_0x607d('0x1c'),JSON[_0x607d('0x1f')](_0x270773));if(_0x270773['error']){if(_0x270773[_0x607d('0x20')]['code']===0x1f4){logger[_0x607d('0x20')](_0x607d('0x21'),_0x53335e,_0x270773[_0x607d('0x20')]['message']);return _0x785b37(_0x270773[_0x607d('0x20')][_0x607d('0x22')]);}logger[_0x607d('0x20')]('FaxMessage,\x20%s,\x20%s',_0x53335e,_0x270773[_0x607d('0x20')]['message']);return _0x1b4d9f(_0x270773['error']['message']);}else{logger[_0x607d('0x23')](_0x607d('0x21'),_0x53335e,_0x607d('0x1c'));_0x1b4d9f(_0x270773[_0x607d('0x24')]['message']);}})[_0x607d('0x25')](function(_0x14a7b6){logger[_0x607d('0x20')](_0x607d('0x21'),_0x53335e,_0x14a7b6);_0x785b37(_0x14a7b6);});});}function respondWithStatusCode(_0x3e6613,_0x2c2f4e){_0x2c2f4e=_0x2c2f4e||0xcc;return function(_0xaf2c2f){if(_0xaf2c2f){return _0x3e6613[_0x607d('0x26')](_0x2c2f4e);}return _0x3e6613[_0x607d('0x27')](_0x2c2f4e)['end']();};}function respondWithResult(_0x4c15f6,_0x10a35a){_0x10a35a=_0x10a35a||0xc8;return function(_0x370918){if(_0x370918){return _0x4c15f6[_0x607d('0x27')](_0x10a35a)['json'](_0x370918);}};}function respondWithFilteredResult(_0x51bdd9,_0x1e452e){return function(_0x63a894){if(_0x63a894){var _0x131bed=typeof _0x1e452e[_0x607d('0x28')]===_0x607d('0x29')&&typeof _0x1e452e[_0x607d('0x2a')]===_0x607d('0x29');var _0x4fe6c9=_0x63a894[_0x607d('0x2b')];var _0x399001=_0x131bed?0x0:_0x1e452e['offset'];var _0x256902=_0x131bed?_0x63a894[_0x607d('0x2b')]:_0x1e452e[_0x607d('0x28')]+_0x1e452e['limit'];var _0x2f287f;if(_0x256902>=_0x4fe6c9){_0x256902=_0x4fe6c9;_0x2f287f=0xc8;}else{_0x2f287f=0xce;}_0x51bdd9[_0x607d('0x27')](_0x2f287f);return _0x51bdd9['set'](_0x607d('0x2c'),_0x399001+'-'+_0x256902+'/'+_0x4fe6c9)[_0x607d('0x2d')](_0x63a894);}return null;};}function patchUpdates(_0x171123){return function(_0x18e75d){try{jsonpatch[_0x607d('0x2e')](_0x18e75d,_0x171123,!![]);}catch(_0x3f3b7c){return BPromise[_0x607d('0x2f')](_0x3f3b7c);}return _0x18e75d[_0x607d('0x30')]();};}function saveUpdates(_0x342cd6,_0x3b9dfd){return function(_0x38d78a){if(_0x38d78a){return _0x38d78a['update'](_0x342cd6)[_0x607d('0x1b')](function(_0x2944be){return _0x2944be;});}return null;};}function removeEntity(_0x1c3e90,_0xbad20f){return function(_0x3ce751){if(_0x3ce751){return _0x3ce751[_0x607d('0x31')]()[_0x607d('0x1b')](function(){_0x1c3e90[_0x607d('0x27')](0xcc)[_0x607d('0x32')]();});}};}function handleEntityNotFound(_0x15d904,_0x5454ce){return function(_0x1941dc){if(!_0x1941dc){_0x15d904['sendStatus'](0x194);}return _0x1941dc;};}function handleError(_0x52d5bc,_0x56d314){_0x56d314=_0x56d314||0x1f4;return function(_0xb65684){logger['error'](_0xb65684[_0x607d('0x33')]);if(_0xb65684[_0x607d('0x34')]){delete _0xb65684[_0x607d('0x34')];}_0x52d5bc[_0x607d('0x27')](_0x56d314)[_0x607d('0x35')](_0xb65684);};}exports[_0x607d('0x36')]=function(_0x3cf4bf,_0x43911d){var _0x21687b={},_0x25f745={},_0x1e9b77={'count':0x0,'rows':[]};var _0x4d3955=_['map'](db[_0x607d('0x37')][_0x607d('0x38')],function(_0x16f7a4){return{'name':_0x16f7a4[_0x607d('0x39')],'type':_0x16f7a4[_0x607d('0x3a')][_0x607d('0x3b')]};});_0x25f745[_0x607d('0x3c')]=_[_0x607d('0x3d')](_0x4d3955,_0x607d('0x34'));_0x25f745[_0x607d('0x3e')]=_['keys'](_0x3cf4bf[_0x607d('0x3e')]);_0x25f745[_0x607d('0x3f')]=_[_0x607d('0x40')](_0x25f745['model'],_0x25f745[_0x607d('0x3e')]);_0x21687b[_0x607d('0x41')]=_[_0x607d('0x40')](_0x25f745[_0x607d('0x3c')],qs['fields'](_0x3cf4bf['query'][_0x607d('0x42')]));_0x21687b[_0x607d('0x41')]=_0x21687b[_0x607d('0x41')][_0x607d('0x43')]?_0x21687b[_0x607d('0x41')]:_0x25f745['model'];if(!_0x3cf4bf[_0x607d('0x3e')]['hasOwnProperty']('nolimit')){_0x21687b['limit']=qs[_0x607d('0x2a')](_0x3cf4bf[_0x607d('0x3e')][_0x607d('0x2a')]);_0x21687b[_0x607d('0x28')]=qs[_0x607d('0x28')](_0x3cf4bf[_0x607d('0x3e')][_0x607d('0x28')]);}_0x21687b[_0x607d('0x44')]=qs[_0x607d('0x45')](_0x3cf4bf[_0x607d('0x3e')][_0x607d('0x45')]);_0x21687b[_0x607d('0x46')]=qs['filters'](_['pick'](_0x3cf4bf['query'],_0x25f745[_0x607d('0x3f')]),_0x4d3955);if(_0x3cf4bf[_0x607d('0x3e')]['filter']){_0x21687b[_0x607d('0x46')]=_[_0x607d('0x47')](_0x21687b['where'],{'$or':_['map'](_0x4d3955,function(_0x4ef170){if(_0x4ef170['type']!==_0x607d('0x48')){var _0xed3a20={};_0xed3a20[_0x4ef170['name']]={'$like':'%'+_0x3cf4bf[_0x607d('0x3e')][_0x607d('0x49')]+'%'};return _0xed3a20;}})});}_0x21687b=_[_0x607d('0x47')]({},_0x21687b,_0x3cf4bf[_0x607d('0x4a')]);var _0x16b401={'where':_0x21687b[_0x607d('0x46')]};return db[_0x607d('0x37')][_0x607d('0x2b')](_0x16b401)[_0x607d('0x1b')](function(_0x5a18c3){_0x1e9b77['count']=_0x5a18c3;if(_0x3cf4bf[_0x607d('0x3e')][_0x607d('0x4b')]){_0x21687b['include']=[{'all':!![]}];}return db['FaxMessage'][_0x607d('0x4c')](_0x21687b);})[_0x607d('0x1b')](function(_0x2a727b){_0x1e9b77[_0x607d('0x4d')]=_0x2a727b;return _0x1e9b77;})['then'](respondWithFilteredResult(_0x43911d,_0x21687b))['catch'](handleError(_0x43911d,null));};exports[_0x607d('0x4e')]=function(_0xb0d971,_0xe8298b){var _0x11255b={'raw':!![],'where':{'id':_0xb0d971[_0x607d('0x4f')]['id']}},_0x1c2d9b={};_0x1c2d9b[_0x607d('0x3c')]=_[_0x607d('0x50')](db[_0x607d('0x37')][_0x607d('0x38')]);_0x1c2d9b['query']=_[_0x607d('0x50')](_0xb0d971[_0x607d('0x3e')]);_0x1c2d9b[_0x607d('0x3f')]=_[_0x607d('0x40')](_0x1c2d9b[_0x607d('0x3c')],_0x1c2d9b[_0x607d('0x3e')]);_0x11255b[_0x607d('0x41')]=_[_0x607d('0x40')](_0x1c2d9b['model'],qs[_0x607d('0x42')](_0xb0d971[_0x607d('0x3e')][_0x607d('0x42')]));_0x11255b[_0x607d('0x41')]=_0x11255b['attributes'][_0x607d('0x43')]?_0x11255b['attributes']:_0x1c2d9b[_0x607d('0x3c')];if(_0xb0d971[_0x607d('0x3e')][_0x607d('0x4b')]){_0x11255b['include']=[{'all':!![]}];}_0x11255b=_[_0x607d('0x47')]({},_0x11255b,_0xb0d971[_0x607d('0x4a')]);return db['FaxMessage'][_0x607d('0x51')](_0x11255b)['then'](handleEntityNotFound(_0xe8298b,null))[_0x607d('0x1b')](respondWithResult(_0xe8298b,null))[_0x607d('0x25')](handleError(_0xe8298b,null));};exports['update']=function(_0x3fb389,_0x255414){if(_0x3fb389['body']['id']){delete _0x3fb389[_0x607d('0x52')]['id'];}return db[_0x607d('0x37')][_0x607d('0x51')]({'where':{'id':_0x3fb389[_0x607d('0x4f')]['id']}})[_0x607d('0x1b')](handleEntityNotFound(_0x255414,null))[_0x607d('0x1b')](saveUpdates(_0x3fb389[_0x607d('0x52')],null))[_0x607d('0x1b')](respondWithResult(_0x255414,null))[_0x607d('0x25')](handleError(_0x255414,null));};exports[_0x607d('0x31')]=function(_0x15ae51,_0x163fde){return db['FaxMessage'][_0x607d('0x51')]({'where':{'id':_0x15ae51['params']['id']}})['then'](handleEntityNotFound(_0x163fde,null))[_0x607d('0x1b')](removeEntity(_0x163fde,null))[_0x607d('0x25')](handleError(_0x163fde,null));};exports[_0x607d('0x53')]=function(_0x439490,_0x1fdda8){return db[_0x607d('0x37')]['describe']()['then'](respondWithResult(_0x1fdda8,null))[_0x607d('0x25')](handleError(_0x1fdda8,null));};var interaction_log=require('../../config/logger')(_0x607d('0x54'));exports[_0x607d('0x55')]=function(_0x268bc1,_0xb76b86,_0x12024b){var _0x2579f2={'agent':{},'channel':_0x607d('0x56')};if(_0x268bc1[_0x607d('0x52')]['id']){delete _0x268bc1[_0x607d('0x52')]['id'];}_0x268bc1[_0x607d('0x52')][_0x607d('0x57')]=!![];_0x268bc1[_0x607d('0x52')][_0x607d('0x58')]=moment()[_0x607d('0x59')](_0x607d('0x5a'));_0x268bc1[_0x607d('0x52')]['UserId']=_0x268bc1['body'][_0x607d('0x5b')]||_0x268bc1[_0x607d('0x5c')]['id'];_0x2579f2[_0x607d('0x5d')]['id']=_0x268bc1[_0x607d('0x52')][_0x607d('0x5b')];return db['FaxMessage'][_0x607d('0x51')]({'where':{'id':_0x268bc1[_0x607d('0x4f')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xb76b86,null))[_0x607d('0x1b')](saveUpdates(_0x268bc1[_0x607d('0x52')],null))[_0x607d('0x1b')](function(_0x318138){if(_0x318138){_0x2579f2[_0x607d('0x22')]=_0x318138[_0x607d('0x5e')]({'plain':!![]});return db[_0x607d('0x5f')]['find']({'where':{'id':_0x318138[_0x607d('0x60')]}});}return null;})['then'](handleEntityNotFound(_0xb76b86,null))[_0x607d('0x1b')](function(_0x140daa){if(_0x140daa){return _0x140daa[_0x607d('0x61')]({'UserId':_0x268bc1[_0x607d('0x52')][_0x607d('0x5b')],'read1stAt':_['isNil'](_0x140daa[_0x607d('0x62')])?moment()['format'](_0x607d('0x5a')):undefined});}return null;})[_0x607d('0x1b')](function(_0x520408){if(_0x520408){_0x2579f2[_0x607d('0x63')]=_0x520408[_0x607d('0x5e')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x268bc1[_0x607d('0x5c')]['id'],_0x268bc1['user']['name'],_0x268bc1[_0x607d('0x5c')][_0x607d('0x64')],_0x2579f2['interaction']['id'],_0x268bc1[_0x607d('0x52')]?JSON['stringify'](_0x268bc1['body']):'null');return respondWithRpcPromise(_0x607d('0x65'),_0x607d('0x66'),_0x2579f2);}return null;})[_0x607d('0x1b')](function(_0x2bf1c2){var _0x70b419=_0x607d('0x67')+_0x2bf1c2[_0x607d('0x22')][_0x607d('0x68')];return db[_0x607d('0x69')][_0x607d('0x3e')](_0x70b419,{'type':db[_0x607d('0x6a')][_0x607d('0x6b')]['SELECT'],'raw':!![]})[_0x607d('0x1b')](function(_0x283ad3){return _0x283ad3;});})['then'](function(_0x41d123){if(_0x41d123){_0x2579f2[_0x607d('0x22')][_0x607d('0x6c')]=_0x41d123[0x0];if(!_0x268bc1['body']['UserId'])return;return db['User'][_0x607d('0x51')]({'where':{'id':_0x268bc1[_0x607d('0x52')][_0x607d('0x5b')],'role':_0x607d('0x5d')},'attributes':['id',_0x607d('0x34'),'fullname',_0x607d('0x6d'),_0x607d('0x6e')],'raw':!![]});}return null;})[_0x607d('0x1b')](function(_0x27a6f9){if(!_0x27a6f9)return null;_0x2579f2[_0x607d('0x22')][_0x607d('0x5d')]=_0x27a6f9;return _0x2579f2;})[_0x607d('0x1b')](function(_0x34b0c4){if(_0x34b0c4){if(_0x268bc1[_0x607d('0x52')]['manual']){_0x2579f2['message'][_0x607d('0x6f')]=util[_0x607d('0x59')](_0x607d('0x70'),_0x268bc1[_0x607d('0x5c')][_0x607d('0x34')]);_0x2579f2[_0x607d('0x22')][_0x607d('0x71')]=_0x2579f2['channel'];_0x2579f2[_0x607d('0x22')]['motionChannel']=_0x2579f2[_0x607d('0x71')];_0x2579f2[_0x607d('0x22')][_0x607d('0x72')]=_0x607d('0x55');return respondWithRpcPromise(_0x607d('0x73'),'EventManager',{'event':_0x607d('0x74'),'message':_0x2579f2['message']},client9002)[_0x607d('0x1b')](function(){return _0x2579f2;});}return _0x2579f2;}return null;})[_0x607d('0x1b')](respondWithResult(_0xb76b86,null))[_0x607d('0x25')](handleError(_0xb76b86,null));};var interaction_log=require('../../config/logger')(_0x607d('0x54'));exports[_0x607d('0x2f')]=function(_0x5931c3,_0x3c757a,_0x356114){var _0x464b42={'agent':{},'channel':_0x607d('0x56')};if(_0x5931c3[_0x607d('0x52')]['id']){delete _0x5931c3[_0x607d('0x52')]['id'];}_0x5931c3[_0x607d('0x52')]['UserId']=_0x5931c3[_0x607d('0x52')][_0x607d('0x5b')]||_0x5931c3[_0x607d('0x5c')]['id'];_0x464b42['agent']['id']=_0x5931c3[_0x607d('0x52')]['UserId'];return db['FaxMessage']['find']({'where':{'id':_0x5931c3[_0x607d('0x4f')]['id'],'UserId':null}})[_0x607d('0x1b')](handleEntityNotFound(_0x3c757a,null))[_0x607d('0x1b')](function(_0x4ec3f2){if(_0x4ec3f2){_0x464b42[_0x607d('0x22')]=_0x4ec3f2[_0x607d('0x5e')]({'plain':!![]});return db[_0x607d('0x5f')][_0x607d('0x51')]({'where':{'id':_0x4ec3f2[_0x607d('0x60')]}});}return null;})[_0x607d('0x1b')](handleEntityNotFound(_0x3c757a,null))['then'](function(_0xacf7e){if(_0xacf7e){_0x464b42['interaction']=_0xacf7e['get']({'plain':!![]});interaction_log[_0x607d('0x23')](_0x607d('0x75'),_0x5931c3[_0x607d('0x5c')]['id'],_0x5931c3[_0x607d('0x5c')]['name'],_0x5931c3[_0x607d('0x5c')][_0x607d('0x64')],_0x464b42['interaction']['id'],_0x5931c3['body']?JSON[_0x607d('0x1f')](_0x5931c3[_0x607d('0x52')]):'null');return respondWithRpcPromise(_0x607d('0x76'),'rejectMessage',_0x464b42);}return null;})[_0x607d('0x1b')](function(_0x256769){var _0x1fd42c=_0x607d('0x67')+_0x256769[_0x607d('0x22')]['ContactId'];return db[_0x607d('0x69')][_0x607d('0x3e')](_0x1fd42c,{'type':db[_0x607d('0x6a')][_0x607d('0x6b')][_0x607d('0x77')],'raw':!![]})[_0x607d('0x1b')](function(_0x54a700){return _0x54a700;});})[_0x607d('0x1b')](function(_0x2c6d41){if(_0x2c6d41){_0x464b42[_0x607d('0x22')]['contact']=_0x2c6d41[0x0];if(!_0x5931c3[_0x607d('0x52')][_0x607d('0x5b')])return;return db['User'][_0x607d('0x51')]({'where':{'id':_0x5931c3[_0x607d('0x52')]['UserId'],'role':_0x607d('0x5d')},'attributes':['id',_0x607d('0x34'),_0x607d('0x78'),_0x607d('0x6d'),'internal'],'raw':!![]});}return null;})[_0x607d('0x1b')](function(_0x4672bc){if(!_0x4672bc)return null;_0x464b42['message'][_0x607d('0x5d')]=_0x4672bc;return _0x464b42;})[_0x607d('0x1b')](function(_0x3d5811){if(_0x3d5811){_0x3d5811['message'][_0x607d('0x6f')]=util[_0x607d('0x59')](_0x607d('0x70'),_0x5931c3['user'][_0x607d('0x34')]);_0x3d5811[_0x607d('0x22')][_0x607d('0x71')]=_0x464b42[_0x607d('0x71')];_0x3d5811['message'][_0x607d('0x79')]=_0x464b42[_0x607d('0x71')];_0x3d5811[_0x607d('0x22')][_0x607d('0x72')]=_0x607d('0x2f');respondWithRpcPromise(_0x607d('0x73'),_0x607d('0x73'),{'event':_0x607d('0x7a'),'message':_0x3d5811[_0x607d('0x22')]},client9002);return _0x464b42;}return null;})['then'](respondWithResult(_0x3c757a,null))[_0x607d('0x25')](handleError(_0x3c757a,null));};exports['create']=function(_0x2269db,_0x3b69e7){var _0x6b4bec;return db['FaxMessage']['create'](_0x2269db[_0x607d('0x52')],{})[_0x607d('0x1b')](function(_0x557527){_0x6b4bec=_0x557527;return db['CmContact'][_0x607d('0x7b')]({'where':{'id':_0x6b4bec[_0x607d('0x68')]}});})[_0x607d('0x1b')](function(_0x432df6){if(_[_0x607d('0x7c')](_0x432df6)){return;}else{_0x6b4bec[_0x607d('0x56')]=_0x432df6[_0x607d('0x56')];return db[_0x607d('0x7d')]['findOne']({'where':{'id':_0x6b4bec['AttachmentId']}});}})[_0x607d('0x1b')](function(_0x3b044a){return respondWithRpcPromise(_0x607d('0x7e'),_0x607d('0x7e'),{'FaxAccountId':_['isNil'](_0x2269db[_0x607d('0x52')])?undefined:_0x2269db[_0x607d('0x52')][_0x607d('0x7f')],'path':_[_0x607d('0x7c')](_0x3b044a)?undefined:util['format'](_0x607d('0x80'),_0x3b044a['basename']),'fax':_[_0x607d('0x7c')](_0x6b4bec[_0x607d('0x56')])?undefined:_0x6b4bec[_0x607d('0x56')],'AttachmentId':_0x6b4bec[_0x607d('0x81')]},client9002);})[_0x607d('0x1b')](respondWithResult(_0x3b69e7,0xc9))[_0x607d('0x25')](handleError(_0x3b69e7,null));};exports[_0x607d('0x82')]=function(_0x303d18,_0x156d4e){var _0x4e72c3=path[_0x607d('0x83')](config[_0x607d('0x84')],'server','files',_0x607d('0x85'));return db[_0x607d('0x37')][_0x607d('0x51')]({'where':{'id':_0x303d18[_0x607d('0x4f')]['id']},'include':[{'model':db[_0x607d('0x7d')],'as':'Attachment'}]})[_0x607d('0x1b')](handleEntityNotFound(_0x156d4e,null))[_0x607d('0x1b')](function(_0x11277f){if(_0x11277f){return _0x156d4e[_0x607d('0x82')](path[_0x607d('0x83')](_0x4e72c3,_0x11277f['Attachment'][_0x607d('0x86')]));}})['catch'](handleError(_0x156d4e,null));};
\ No newline at end of file
+var _0xfd1f=['rawAttributes','find','body','describe','fax-interactions','accept','fax','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteractionId','isNil','read1stAt','interaction','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','contact','fullname','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','RejectMessage','rejectMessage','sequelize','SELECT','User','email','internal','reject','rejectmessage','create','CmContact','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','root','files','attachments','download','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','client','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','end','stack','name','send','map','FaxMessage','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','params'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xfd1f,0x149));var _0xffd1=function(_0x40f44c,_0x4b30d8){_0x40f44c=_0x40f44c-0x0;var _0xc63565=_0xfd1f[_0x40f44c];return _0xc63565;};'use strict';var emlformat=require(_0xffd1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xffd1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xffd1('0x2'));var moment=require(_0xffd1('0x3'));var BPromise=require(_0xffd1('0x4'));var Mustache=require('mustache');var util=require(_0xffd1('0x5'));var path=require(_0xffd1('0x6'));var sox=require(_0xffd1('0x7'));var csv=require(_0xffd1('0x8'));var ejs=require(_0xffd1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xffd1('0xa'));var crypto=require('crypto');var jsforce=require(_0xffd1('0xb'));var deskjs=require(_0xffd1('0xc'));var toCsv=require('to-csv');var querystring=require(_0xffd1('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xffd1('0xe'));var hardwareService=require(_0xffd1('0xf'));var logger=require(_0xffd1('0x10'))(_0xffd1('0x11'));var utils=require('../../config/utils');var config=require(_0xffd1('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xffd1('0x13'))['db'];config[_0xffd1('0x14')]=_[_0xffd1('0x15')](config[_0xffd1('0x14')],{'host':_0xffd1('0x16'),'port':0x18eb});var socket=require(_0xffd1('0x17'))(new Redis(config[_0xffd1('0x14')]));require(_0xffd1('0x18'))[_0xffd1('0x19')](socket);var jayson=require('jayson/promise');var client=jayson[_0xffd1('0x1a')]['http']({'port':0x232c});var client9002=jayson[_0xffd1('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x520b2f,_0x3711c7,_0x1d19c0,_0x5049ca){return new BPromise(function(_0x44b255,_0x34d67e){var _0x3d2012=_0x5049ca||client;return _0x3d2012['request'](_0x520b2f,_0x1d19c0)[_0xffd1('0x1b')](function(_0x55810d){logger[_0xffd1('0x1c')](_0xffd1('0x1d'),_0x3711c7,_0xffd1('0x1e'));logger[_0xffd1('0x1f')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x3711c7,_0xffd1('0x1e'),JSON[_0xffd1('0x20')](_0x55810d));if(_0x55810d[_0xffd1('0x21')]){if(_0x55810d[_0xffd1('0x21')][_0xffd1('0x22')]===0x1f4){logger[_0xffd1('0x21')](_0xffd1('0x1d'),_0x3711c7,_0x55810d['error'][_0xffd1('0x23')]);return _0x34d67e(_0x55810d[_0xffd1('0x21')]['message']);}logger[_0xffd1('0x21')](_0xffd1('0x1d'),_0x3711c7,_0x55810d[_0xffd1('0x21')][_0xffd1('0x23')]);return _0x44b255(_0x55810d[_0xffd1('0x21')][_0xffd1('0x23')]);}else{logger['info'](_0xffd1('0x1d'),_0x3711c7,_0xffd1('0x1e'));_0x44b255(_0x55810d[_0xffd1('0x24')][_0xffd1('0x23')]);}})[_0xffd1('0x25')](function(_0x286f1f){logger[_0xffd1('0x21')](_0xffd1('0x1d'),_0x3711c7,_0x286f1f);_0x34d67e(_0x286f1f);});});}function respondWithStatusCode(_0x2a59d8,_0x11115d){_0x11115d=_0x11115d||0xcc;return function(_0x3ed7c5){if(_0x3ed7c5){return _0x2a59d8[_0xffd1('0x26')](_0x11115d);}return _0x2a59d8[_0xffd1('0x27')](_0x11115d)['end']();};}function respondWithResult(_0x20871e,_0x56bc66){_0x56bc66=_0x56bc66||0xc8;return function(_0x366ed8){if(_0x366ed8){return _0x20871e['status'](_0x56bc66)['json'](_0x366ed8);}};}function respondWithFilteredResult(_0x248a0c,_0x431a09){return function(_0x5011d3){if(_0x5011d3){var _0x4e582b=typeof _0x431a09[_0xffd1('0x28')]===_0xffd1('0x29')&&typeof _0x431a09[_0xffd1('0x2a')]===_0xffd1('0x29');var _0xe1d822=_0x5011d3['count'];var _0x20b9c6=_0x4e582b?0x0:_0x431a09[_0xffd1('0x28')];var _0x20b48a=_0x4e582b?_0x5011d3[_0xffd1('0x2b')]:_0x431a09[_0xffd1('0x28')]+_0x431a09[_0xffd1('0x2a')];var _0x238e64;if(_0x20b48a>=_0xe1d822){_0x20b48a=_0xe1d822;_0x238e64=0xc8;}else{_0x238e64=0xce;}_0x248a0c[_0xffd1('0x27')](_0x238e64);return _0x248a0c[_0xffd1('0x2c')](_0xffd1('0x2d'),_0x20b9c6+'-'+_0x20b48a+'/'+_0xe1d822)[_0xffd1('0x2e')](_0x5011d3);}return null;};}function patchUpdates(_0x454b11){return function(_0x1aa9a6){try{jsonpatch[_0xffd1('0x2f')](_0x1aa9a6,_0x454b11,!![]);}catch(_0x1835de){return BPromise['reject'](_0x1835de);}return _0x1aa9a6[_0xffd1('0x30')]();};}function saveUpdates(_0x16dec1,_0x5700ab){return function(_0x41d1ce){if(_0x41d1ce){return _0x41d1ce[_0xffd1('0x31')](_0x16dec1)[_0xffd1('0x1b')](function(_0xd64535){return _0xd64535;});}return null;};}function removeEntity(_0x16461d,_0x466b69){return function(_0x4cd326){if(_0x4cd326){return _0x4cd326[_0xffd1('0x32')]()['then'](function(){_0x16461d[_0xffd1('0x27')](0xcc)[_0xffd1('0x33')]();});}};}function handleEntityNotFound(_0x57b592,_0x4a7cd2){return function(_0x3f8d11){if(!_0x3f8d11){_0x57b592[_0xffd1('0x26')](0x194);}return _0x3f8d11;};}function handleError(_0x546d99,_0xe9f6c5){_0xe9f6c5=_0xe9f6c5||0x1f4;return function(_0x28d9fe){logger[_0xffd1('0x21')](_0x28d9fe[_0xffd1('0x34')]);if(_0x28d9fe[_0xffd1('0x35')]){delete _0x28d9fe[_0xffd1('0x35')];}_0x546d99[_0xffd1('0x27')](_0xe9f6c5)[_0xffd1('0x36')](_0x28d9fe);};}exports['index']=function(_0x283a3d,_0x548363){var _0x3cf587={},_0x525521={},_0x33583a={'count':0x0,'rows':[]};var _0x4775ba=_[_0xffd1('0x37')](db[_0xffd1('0x38')]['rawAttributes'],function(_0x1aa16f){return{'name':_0x1aa16f['fieldName'],'type':_0x1aa16f[_0xffd1('0x39')][_0xffd1('0x3a')]};});_0x525521[_0xffd1('0x3b')]=_['map'](_0x4775ba,_0xffd1('0x35'));_0x525521['query']=_[_0xffd1('0x3c')](_0x283a3d[_0xffd1('0x3d')]);_0x525521[_0xffd1('0x3e')]=_[_0xffd1('0x3f')](_0x525521[_0xffd1('0x3b')],_0x525521['query']);_0x3cf587[_0xffd1('0x40')]=_['intersection'](_0x525521['model'],qs[_0xffd1('0x41')](_0x283a3d[_0xffd1('0x3d')][_0xffd1('0x41')]));_0x3cf587['attributes']=_0x3cf587['attributes'][_0xffd1('0x42')]?_0x3cf587['attributes']:_0x525521[_0xffd1('0x3b')];if(!_0x283a3d[_0xffd1('0x3d')][_0xffd1('0x43')](_0xffd1('0x44'))){_0x3cf587['limit']=qs['limit'](_0x283a3d[_0xffd1('0x3d')][_0xffd1('0x2a')]);_0x3cf587['offset']=qs[_0xffd1('0x28')](_0x283a3d[_0xffd1('0x3d')][_0xffd1('0x28')]);}_0x3cf587[_0xffd1('0x45')]=qs['sort'](_0x283a3d[_0xffd1('0x3d')][_0xffd1('0x46')]);_0x3cf587['where']=qs['filters'](_['pick'](_0x283a3d[_0xffd1('0x3d')],_0x525521[_0xffd1('0x3e')]),_0x4775ba);if(_0x283a3d[_0xffd1('0x3d')][_0xffd1('0x47')]){_0x3cf587['where']=_[_0xffd1('0x48')](_0x3cf587[_0xffd1('0x49')],{'$or':_['map'](_0x4775ba,function(_0x14a4eb){if(_0x14a4eb['type']!==_0xffd1('0x4a')){var _0x5a9c29={};_0x5a9c29[_0x14a4eb['name']]={'$like':'%'+_0x283a3d[_0xffd1('0x3d')]['filter']+'%'};return _0x5a9c29;}})});}_0x3cf587=_['merge']({},_0x3cf587,_0x283a3d[_0xffd1('0x4b')]);var _0x113518={'where':_0x3cf587['where']};return db[_0xffd1('0x38')][_0xffd1('0x2b')](_0x113518)['then'](function(_0x3f6ff7){_0x33583a[_0xffd1('0x2b')]=_0x3f6ff7;if(_0x283a3d[_0xffd1('0x3d')][_0xffd1('0x4c')]){_0x3cf587[_0xffd1('0x4d')]=[{'all':!![]}];}return db[_0xffd1('0x38')][_0xffd1('0x4e')](_0x3cf587);})[_0xffd1('0x1b')](function(_0x4a5e21){_0x33583a[_0xffd1('0x4f')]=_0x4a5e21;return _0x33583a;})['then'](respondWithFilteredResult(_0x548363,_0x3cf587))['catch'](handleError(_0x548363,null));};exports[_0xffd1('0x50')]=function(_0x45904e,_0x5c5d14){var _0x432b0e={'raw':!![],'where':{'id':_0x45904e[_0xffd1('0x51')]['id']}},_0x13649b={};_0x13649b[_0xffd1('0x3b')]=_[_0xffd1('0x3c')](db['FaxMessage'][_0xffd1('0x52')]);_0x13649b[_0xffd1('0x3d')]=_[_0xffd1('0x3c')](_0x45904e['query']);_0x13649b['filters']=_[_0xffd1('0x3f')](_0x13649b[_0xffd1('0x3b')],_0x13649b[_0xffd1('0x3d')]);_0x432b0e[_0xffd1('0x40')]=_['intersection'](_0x13649b[_0xffd1('0x3b')],qs[_0xffd1('0x41')](_0x45904e[_0xffd1('0x3d')]['fields']));_0x432b0e[_0xffd1('0x40')]=_0x432b0e['attributes'][_0xffd1('0x42')]?_0x432b0e[_0xffd1('0x40')]:_0x13649b[_0xffd1('0x3b')];if(_0x45904e[_0xffd1('0x3d')][_0xffd1('0x4c')]){_0x432b0e[_0xffd1('0x4d')]=[{'all':!![]}];}_0x432b0e=_[_0xffd1('0x48')]({},_0x432b0e,_0x45904e[_0xffd1('0x4b')]);return db['FaxMessage'][_0xffd1('0x53')](_0x432b0e)[_0xffd1('0x1b')](handleEntityNotFound(_0x5c5d14,null))[_0xffd1('0x1b')](respondWithResult(_0x5c5d14,null))[_0xffd1('0x25')](handleError(_0x5c5d14,null));};exports[_0xffd1('0x31')]=function(_0x589d80,_0x3a8913){if(_0x589d80[_0xffd1('0x54')]['id']){delete _0x589d80[_0xffd1('0x54')]['id'];}return db['FaxMessage']['find']({'where':{'id':_0x589d80['params']['id']}})[_0xffd1('0x1b')](handleEntityNotFound(_0x3a8913,null))[_0xffd1('0x1b')](saveUpdates(_0x589d80[_0xffd1('0x54')],null))[_0xffd1('0x1b')](respondWithResult(_0x3a8913,null))[_0xffd1('0x25')](handleError(_0x3a8913,null));};exports[_0xffd1('0x32')]=function(_0x32cd03,_0x83111b){return db['FaxMessage'][_0xffd1('0x53')]({'where':{'id':_0x32cd03[_0xffd1('0x51')]['id']}})['then'](handleEntityNotFound(_0x83111b,null))['then'](removeEntity(_0x83111b,null))[_0xffd1('0x25')](handleError(_0x83111b,null));};exports['describe']=function(_0x45359e,_0x4ad1c3){return db[_0xffd1('0x38')][_0xffd1('0x55')]()[_0xffd1('0x1b')](respondWithResult(_0x4ad1c3,null))[_0xffd1('0x25')](handleError(_0x4ad1c3,null));};var interaction_log=require(_0xffd1('0x10'))(_0xffd1('0x56'));exports[_0xffd1('0x57')]=function(_0x12fd66,_0x1d1458,_0x2e04cb){var _0x3e3992={'agent':{},'channel':_0xffd1('0x58')};if(_0x12fd66[_0xffd1('0x54')]['id']){delete _0x12fd66[_0xffd1('0x54')]['id'];}_0x12fd66[_0xffd1('0x54')]['read']=!![];_0x12fd66[_0xffd1('0x54')][_0xffd1('0x59')]=moment()[_0xffd1('0x5a')](_0xffd1('0x5b'));_0x12fd66[_0xffd1('0x54')]['UserId']=_0x12fd66[_0xffd1('0x54')][_0xffd1('0x5c')]||_0x12fd66[_0xffd1('0x5d')]['id'];_0x3e3992[_0xffd1('0x5e')]['id']=_0x12fd66['body']['UserId'];return db['FaxMessage']['find']({'where':{'id':_0x12fd66[_0xffd1('0x51')]['id'],'UserId':null}})[_0xffd1('0x1b')](handleEntityNotFound(_0x1d1458,null))['then'](saveUpdates(_0x12fd66['body'],null))[_0xffd1('0x1b')](function(_0x1c6380){if(_0x1c6380){_0x3e3992[_0xffd1('0x23')]=_0x1c6380[_0xffd1('0x5f')]({'plain':!![]});return db['FaxInteraction'][_0xffd1('0x53')]({'where':{'id':_0x1c6380[_0xffd1('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x1d1458,null))[_0xffd1('0x1b')](function(_0x4b3ea0){if(_0x4b3ea0){return _0x4b3ea0[_0xffd1('0x31')]({'UserId':_0x12fd66[_0xffd1('0x54')]['UserId'],'read1stAt':_[_0xffd1('0x61')](_0x4b3ea0[_0xffd1('0x62')])?moment()['format'](_0xffd1('0x5b')):undefined});}return null;})[_0xffd1('0x1b')](function(_0x9c43e1){if(_0x9c43e1){_0x3e3992[_0xffd1('0x63')]=_0x9c43e1[_0xffd1('0x5f')]({'plain':!![]});interaction_log[_0xffd1('0x1c')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x12fd66[_0xffd1('0x5d')]['id'],_0x12fd66[_0xffd1('0x5d')]['name'],_0x12fd66[_0xffd1('0x5d')][_0xffd1('0x64')],_0x3e3992['interaction']['id'],_0x12fd66[_0xffd1('0x54')]?JSON[_0xffd1('0x20')](_0x12fd66[_0xffd1('0x54')]):'null');return respondWithRpcPromise('AcceptMessage',_0xffd1('0x65'),_0x3e3992);}return null;})[_0xffd1('0x1b')](function(_0x4c3c0f){var _0x9aab91=_0xffd1('0x66')+_0x4c3c0f[_0xffd1('0x23')][_0xffd1('0x67')];return db['sequelize'][_0xffd1('0x3d')](_0x9aab91,{'type':db[_0xffd1('0x68')][_0xffd1('0x69')]['SELECT'],'raw':!![]})[_0xffd1('0x1b')](function(_0x319d0d){return _0x319d0d;});})[_0xffd1('0x1b')](function(_0x22489d){if(_0x22489d){_0x3e3992[_0xffd1('0x23')][_0xffd1('0x6a')]=_0x22489d[0x0];if(!_0x12fd66[_0xffd1('0x54')][_0xffd1('0x5c')])return;return db['User'][_0xffd1('0x53')]({'where':{'id':_0x12fd66[_0xffd1('0x54')][_0xffd1('0x5c')],'role':_0xffd1('0x5e')},'attributes':['id',_0xffd1('0x35'),_0xffd1('0x6b'),'email','internal'],'raw':!![]});}return null;})[_0xffd1('0x1b')](function(_0x47308b){if(!_0x47308b)return null;_0x3e3992['message']['agent']=_0x47308b;return _0x3e3992;})[_0xffd1('0x1b')](function(_0x56c5e2){if(_0x56c5e2){if(_0x12fd66[_0xffd1('0x54')]['manual']){_0x3e3992[_0xffd1('0x23')][_0xffd1('0x6c')]=util['format'](_0xffd1('0x6d'),_0x12fd66[_0xffd1('0x5d')][_0xffd1('0x35')]);_0x3e3992[_0xffd1('0x23')][_0xffd1('0x6e')]=_0x3e3992[_0xffd1('0x6e')];_0x3e3992['message'][_0xffd1('0x6f')]=_0x3e3992['channel'];_0x3e3992[_0xffd1('0x23')][_0xffd1('0x70')]=_0xffd1('0x57');return respondWithRpcPromise(_0xffd1('0x71'),_0xffd1('0x71'),{'event':_0xffd1('0x72'),'message':_0x3e3992[_0xffd1('0x23')]},client9002)[_0xffd1('0x1b')](function(){return _0x3e3992;});}return _0x3e3992;}return null;})[_0xffd1('0x1b')](respondWithResult(_0x1d1458,null))[_0xffd1('0x25')](handleError(_0x1d1458,null));};var interaction_log=require('../../config/logger')(_0xffd1('0x56'));exports['reject']=function(_0x2c27f9,_0x319bd8,_0x597ae4){var _0xc335bc={'agent':{},'channel':_0xffd1('0x58')};if(_0x2c27f9[_0xffd1('0x54')]['id']){delete _0x2c27f9[_0xffd1('0x54')]['id'];}_0x2c27f9['body'][_0xffd1('0x5c')]=_0x2c27f9[_0xffd1('0x54')][_0xffd1('0x5c')]||_0x2c27f9[_0xffd1('0x5d')]['id'];_0xc335bc[_0xffd1('0x5e')]['id']=_0x2c27f9[_0xffd1('0x54')][_0xffd1('0x5c')];return db[_0xffd1('0x38')][_0xffd1('0x53')]({'where':{'id':_0x2c27f9['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x319bd8,null))[_0xffd1('0x1b')](function(_0x134f8a){if(_0x134f8a){_0xc335bc[_0xffd1('0x23')]=_0x134f8a[_0xffd1('0x5f')]({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0x134f8a[_0xffd1('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x319bd8,null))[_0xffd1('0x1b')](function(_0x3b8d7b){if(_0x3b8d7b){_0xc335bc['interaction']=_0x3b8d7b['get']({'plain':!![]});interaction_log[_0xffd1('0x1c')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2c27f9['user']['id'],_0x2c27f9['user'][_0xffd1('0x35')],_0x2c27f9[_0xffd1('0x5d')][_0xffd1('0x64')],_0xc335bc['interaction']['id'],_0x2c27f9[_0xffd1('0x54')]?JSON[_0xffd1('0x20')](_0x2c27f9[_0xffd1('0x54')]):'null');return respondWithRpcPromise(_0xffd1('0x73'),_0xffd1('0x74'),_0xc335bc);}return null;})['then'](function(_0x3aa49c){var _0x2c8346=_0xffd1('0x66')+_0x3aa49c[_0xffd1('0x23')][_0xffd1('0x67')];return db[_0xffd1('0x75')][_0xffd1('0x3d')](_0x2c8346,{'type':db['Sequelize']['QueryTypes'][_0xffd1('0x76')],'raw':!![]})[_0xffd1('0x1b')](function(_0xcfc2d6){return _0xcfc2d6;});})[_0xffd1('0x1b')](function(_0x313bed){if(_0x313bed){_0xc335bc[_0xffd1('0x23')]['contact']=_0x313bed[0x0];if(!_0x2c27f9[_0xffd1('0x54')][_0xffd1('0x5c')])return;return db[_0xffd1('0x77')][_0xffd1('0x53')]({'where':{'id':_0x2c27f9['body'][_0xffd1('0x5c')],'role':_0xffd1('0x5e')},'attributes':['id','name',_0xffd1('0x6b'),_0xffd1('0x78'),_0xffd1('0x79')],'raw':!![]});}return null;})[_0xffd1('0x1b')](function(_0x4d1630){if(!_0x4d1630)return null;_0xc335bc[_0xffd1('0x23')][_0xffd1('0x5e')]=_0x4d1630;return _0xc335bc;})[_0xffd1('0x1b')](function(_0x5f16ac){if(_0x5f16ac){_0x5f16ac[_0xffd1('0x23')][_0xffd1('0x6c')]=util[_0xffd1('0x5a')](_0xffd1('0x6d'),_0x2c27f9[_0xffd1('0x5d')]['name']);_0x5f16ac['message'][_0xffd1('0x6e')]=_0xc335bc[_0xffd1('0x6e')];_0x5f16ac['message'][_0xffd1('0x6f')]=_0xc335bc[_0xffd1('0x6e')];_0x5f16ac[_0xffd1('0x23')][_0xffd1('0x70')]=_0xffd1('0x7a');respondWithRpcPromise(_0xffd1('0x71'),_0xffd1('0x71'),{'event':_0xffd1('0x7b'),'message':_0x5f16ac[_0xffd1('0x23')]},client9002);return _0xc335bc;}return null;})[_0xffd1('0x1b')](respondWithResult(_0x319bd8,null))[_0xffd1('0x25')](handleError(_0x319bd8,null));};exports[_0xffd1('0x7c')]=function(_0x59d06d,_0x4dc550){var _0x3236b0;return db[_0xffd1('0x38')][_0xffd1('0x7c')](_0x59d06d[_0xffd1('0x54')],{})[_0xffd1('0x1b')](function(_0xcf5a75){_0x3236b0=_0xcf5a75;return db[_0xffd1('0x7d')]['findOne']({'where':{'id':_0x3236b0[_0xffd1('0x67')]}});})[_0xffd1('0x1b')](function(_0x4a6367){if(_[_0xffd1('0x61')](_0x4a6367)){return;}else{_0x3236b0[_0xffd1('0x58')]=_0x4a6367[_0xffd1('0x58')];return db[_0xffd1('0x7e')]['findOne']({'where':{'id':_0x3236b0[_0xffd1('0x7f')]}});}})[_0xffd1('0x1b')](function(_0x2737a9){return respondWithRpcPromise('SendFax',_0xffd1('0x80'),{'FaxAccountId':_['isNil'](_0x59d06d[_0xffd1('0x54')])?undefined:_0x59d06d['body'][_0xffd1('0x81')],'path':_[_0xffd1('0x61')](_0x2737a9)?undefined:util[_0xffd1('0x5a')](_0xffd1('0x82'),_0x2737a9[_0xffd1('0x83')]),'fax':_['isNil'](_0x3236b0[_0xffd1('0x58')])?undefined:_0x3236b0['fax'],'AttachmentId':_0x3236b0[_0xffd1('0x7f')]},client9002);})['then'](respondWithResult(_0x4dc550,0xc9))[_0xffd1('0x25')](handleError(_0x4dc550,null));};exports['download']=function(_0x4ca013,_0x32c911){var _0x327cf7=path[_0xffd1('0x84')](config[_0xffd1('0x85')],'server',_0xffd1('0x86'),_0xffd1('0x87'));return db[_0xffd1('0x38')][_0xffd1('0x53')]({'where':{'id':_0x4ca013[_0xffd1('0x51')]['id']},'include':[{'model':db[_0xffd1('0x7e')],'as':'Attachment'}]})[_0xffd1('0x1b')](handleEntityNotFound(_0x32c911,null))[_0xffd1('0x1b')](function(_0x2d1a79){if(_0x2d1a79){return _0x32c911[_0xffd1('0x88')](path['join'](_0x327cf7,_0x2d1a79['Attachment'][_0xffd1('0x83')]));}})['catch'](handleError(_0x32c911,null));};
\ No newline at end of file
index 804f370..8b7f7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1d3=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save'];(function(_0x2317a3,_0x418ac6){var _0x2a32a8=function(_0x5f0d3a){while(--_0x5f0d3a){_0x2317a3['push'](_0x2317a3['shift']());}};_0x2a32a8(++_0x418ac6);}(_0xe1d3,0x159));var _0x3e1d=function(_0x48476e,_0x3825bd){_0x48476e=_0x48476e-0x0;var _0x1ab4c2=_0xe1d3[_0x48476e];return _0x1ab4c2;};'use strict';var EventEmitter=require(_0x3e1d('0x0'));var FaxMessage=require(_0x3e1d('0x1'))['db'][_0x3e1d('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x3e1d('0x3')](0x0);var events={'afterCreate':_0x3e1d('0x4'),'afterUpdate':'update','afterDestroy':_0x3e1d('0x5')};function emitEvent(_0x4a0768){return function(_0x23f59b,_0x38df15,_0x4f6337){FaxMessageEvents['emit'](_0x4a0768+':'+_0x23f59b['id'],_0x23f59b);FaxMessageEvents[_0x3e1d('0x6')](_0x4a0768,_0x23f59b);_0x4f6337(null);};}for(var e in events){if(events[_0x3e1d('0x7')](e)){var event=events[e];FaxMessage[_0x3e1d('0x8')](e,emitEvent(event));}}module[_0x3e1d('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0x0d91=['FaxMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3a9f28,_0x42da9e){var _0x3a1b65=function(_0x19b4c0){while(--_0x19b4c0){_0x3a9f28['push'](_0x3a9f28['shift']());}};_0x3a1b65(++_0x42da9e);}(_0x0d91,0x76));var _0x10d9=function(_0x1c6ceb,_0x19956c){_0x1c6ceb=_0x1c6ceb-0x0;var _0x5c8a17=_0x0d91[_0x1c6ceb];return _0x5c8a17;};'use strict';var EventEmitter=require(_0x10d9('0x0'));var FaxMessage=require(_0x10d9('0x1'))['db'][_0x10d9('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x10d9('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x10d9('0x4'),'afterDestroy':_0x10d9('0x5')};function emitEvent(_0x132a71){return function(_0x56ab5d,_0x2f6e57,_0x305c20){FaxMessageEvents[_0x10d9('0x6')](_0x132a71+':'+_0x56ab5d['id'],_0x56ab5d);FaxMessageEvents['emit'](_0x132a71,_0x56ab5d);_0x305c20(null);};}for(var e in events){if(events[_0x10d9('0x7')](e)){var event=events[e];FaxMessage[_0x10d9('0x8')](e,emitEvent(event));}}module[_0x10d9('0x9')]=FaxMessageEvents;
\ No newline at end of file
index b347862..f1baf34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f54=['./faxMessage.attributes','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','error','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2f3f6a,_0x26a328){var _0x112a1f=function(_0x566da4){while(--_0x566da4){_0x2f3f6a['push'](_0x2f3f6a['shift']());}};_0x112a1f(++_0x26a328);}(_0x2f54,0x120));var _0x42f5=function(_0x51057a,_0x2c8c27){_0x51057a=_0x51057a-0x0;var _0x3cbdaa=_0x2f54[_0x51057a];return _0x3cbdaa;};'use strict';var _=require(_0x42f5('0x0'));var util=require(_0x42f5('0x1'));var logger=require('../../config/logger')(_0x42f5('0x2'));var moment=require(_0x42f5('0x3'));var BPromise=require(_0x42f5('0x4'));var rp=require(_0x42f5('0x5'));var fs=require('fs');var path=require(_0x42f5('0x6'));var rimraf=require(_0x42f5('0x7'));var config=require(_0x42f5('0x8'));var attributes=require(_0x42f5('0x9'));module['exports']=function(_0x3c2ac1,_0x566b5d){return _0x3c2ac1['define'](_0x42f5('0xa'),attributes,{'tableName':_0x42f5('0xb'),'paranoid':![],'indexes':[{'name':_0x42f5('0xc'),'fields':[_0x42f5('0xd')],'type':_0x42f5('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3f165a,_0x5575d0,_0x42c1eb){var _0x18ab59=_0x3c2ac1['models'];var _0x431db2=_0x3f165a['get']({'plain':!![]});if(_0x431db2[_0x42f5('0xf')][_0x42f5('0x10')]()==='in'||_0x431db2[_0x42f5('0xf')][_0x42f5('0x10')]()===_0x42f5('0x11')&&!_0x431db2[_0x42f5('0x12')]&&!_[_0x42f5('0x13')](_0x431db2[_0x42f5('0x14')])){_0x18ab59[_0x42f5('0x15')][_0x42f5('0x16')]({'where':{'id':_0x431db2[_0x42f5('0x17')]}})[_0x42f5('0x18')](function(_0x525536){if(_0x525536){_0x525536['update']({'lastMsgAt':_0x431db2['createdAt'],'lastMsgDirection':_0x431db2[_0x42f5('0xf')][_0x42f5('0x10')]()});}})['catch'](function(_0x3eb6ef){console[_0x42f5('0x19')](_0x3eb6ef);});}_0x42c1eb();}},'charset':_0x42f5('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x7ade=['fax_messages','fti_fax_messages','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','moment','path','../../config/environment','./faxMessage.attributes','exports','FaxMessage'];(function(_0x16af02,_0x37b293){var _0x4bb9b2=function(_0x4f2fe3){while(--_0x4f2fe3){_0x16af02['push'](_0x16af02['shift']());}};_0x4bb9b2(++_0x37b293);}(_0x7ade,0x1dd));var _0xe7ad=function(_0x3d7c57,_0x45f6f0){_0x3d7c57=_0x3d7c57-0x0;var _0x2258d2=_0x7ade[_0x3d7c57];return _0x2258d2;};'use strict';var _=require(_0xe7ad('0x0'));var util=require(_0xe7ad('0x1'));var logger=require(_0xe7ad('0x2'))('api');var moment=require(_0xe7ad('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe7ad('0x4'));var rimraf=require('rimraf');var config=require(_0xe7ad('0x5'));var attributes=require(_0xe7ad('0x6'));module[_0xe7ad('0x7')]=function(_0x21ac51,_0x134cc5){return _0x21ac51['define'](_0xe7ad('0x8'),attributes,{'tableName':_0xe7ad('0x9'),'paranoid':![],'indexes':[{'name':_0xe7ad('0xa'),'fields':['body'],'type':_0xe7ad('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2adc9f,_0x344336,_0x4b3cc7){var _0x600d3c=_0x21ac51[_0xe7ad('0xc')];var _0x5953ac=_0x2adc9f['get']({'plain':!![]});if(_0x5953ac[_0xe7ad('0xd')]['toLowerCase']()==='in'||_0x5953ac['direction'][_0xe7ad('0xe')]()===_0xe7ad('0xf')&&!_0x5953ac[_0xe7ad('0x10')]&&!_[_0xe7ad('0x11')](_0x5953ac[_0xe7ad('0x12')])){_0x600d3c[_0xe7ad('0x13')][_0xe7ad('0x14')]({'where':{'id':_0x5953ac[_0xe7ad('0x15')]}})[_0xe7ad('0x16')](function(_0x36a54a){if(_0x36a54a){_0x36a54a['update']({'lastMsgAt':_0x5953ac[_0xe7ad('0x17')],'lastMsgDirection':_0x5953ac[_0xe7ad('0xd')][_0xe7ad('0xe')]()});}})[_0xe7ad('0x18')](function(_0x568b35){console[_0xe7ad('0x19')](_0x568b35);});}_0x4b3cc7();}},'charset':_0xe7ad('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 91084f5..61d5ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['jayson/promise','client','http','redis','defaults','localhost','./faxMessage.socket','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','CreateFaxMessage','FaxMessage','create','body','options','raw','info','catch','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xed1f,0x6a));var _0xfed1=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0xed1f[_0x344a3f];return _0x264712;};'use strict';var _=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var moment=require(_0xfed1('0x2'));var BPromise=require(_0xfed1('0x3'));var rs=require(_0xfed1('0x4'));var fs=require('fs');var Redis=require(_0xfed1('0x5'));var db=require(_0xfed1('0x6'))['db'];var utils=require(_0xfed1('0x7'));var logger=require(_0xfed1('0x8'))(_0xfed1('0x9'));var config=require(_0xfed1('0xa'));var jayson=require(_0xfed1('0xb'));var client=jayson[_0xfed1('0xc')][_0xfed1('0xd')]({'port':0x232a});config[_0xfed1('0xe')]=_[_0xfed1('0xf')](config[_0xfed1('0xe')],{'host':_0xfed1('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfed1('0xe')]));require(_0xfed1('0x11'))['register'](socket);function respondWithRpcPromise(_0x1414be,_0x7bf48c,_0x4a564e){return new BPromise(function(_0x3ce017,_0x48c338){return client[_0xfed1('0x12')](_0x1414be,_0x4a564e)[_0xfed1('0x13')](function(_0x4a8369){logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));logger['debug'](_0xfed1('0x16'),_0x7bf48c,'request\x20sent',JSON['stringify'](_0x4a8369));if(_0x4a8369[_0xfed1('0x17')]){if(_0x4a8369[_0xfed1('0x17')]['code']===0x1f4){logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369['error'][_0xfed1('0x18')]);return _0x48c338(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369[_0xfed1('0x17')]['message']);return _0x3ce017(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}else{logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));_0x3ce017(_0x4a8369['result']['message']);}})['catch'](function(_0x1e5afb){logger['error'](_0xfed1('0x14'),_0x7bf48c,_0x1e5afb);_0x48c338(_0x1e5afb);});});}exports[_0xfed1('0x19')]=function(_0x51a860){var _0x94cb84=this;return new Promise(function(_0x65f14b,_0x59ee9d){return db[_0xfed1('0x1a')][_0xfed1('0x1b')](_0x51a860[_0xfed1('0x1c')],{'raw':_0x51a860[_0xfed1('0x1d')]?_0x51a860['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x446558){logger[_0xfed1('0x1f')](_0xfed1('0x19'),_0x51a860);logger['debug'](_0xfed1('0x19'),_0x51a860,JSON['stringify'](_0x446558));_0x65f14b(_0x446558);})[_0xfed1('0x20')](function(_0x2793b7){logger[_0xfed1('0x17')](_0xfed1('0x19'),_0x2793b7[_0xfed1('0x18')],_0x51a860);_0x59ee9d(_0x94cb84[_0xfed1('0x17')](0x1f4,_0x2793b7['message']));});});};exports[_0xfed1('0x21')]=function(_0xcb1cdc){var _0x49072b=this;return new Promise(function(_0x1d6c72,_0x2b9dd2){return db[_0xfed1('0x1a')][_0xfed1('0x22')](_0xcb1cdc[_0xfed1('0x1c')],{'raw':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')]['where']||null:null,'attributes':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')][_0xfed1('0x23')]||null:null,'limit':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x24')]||null:null})[_0xfed1('0x13')](function(_0x13f414){logger[_0xfed1('0x1f')](_0xfed1('0x21'),_0xcb1cdc);logger[_0xfed1('0x25')]('UpdateFaxMessage',_0xcb1cdc,JSON[_0xfed1('0x26')](_0x13f414));_0x1d6c72(_0x13f414);})[_0xfed1('0x20')](function(_0x4fc309){logger['error'](_0xfed1('0x21'),_0x4fc309[_0xfed1('0x18')],_0xcb1cdc);_0x2b9dd2(_0x49072b[_0xfed1('0x17')](0x1f4,_0x4fc309[_0xfed1('0x18')]));});});};
\ No newline at end of file
+var _0x008c=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','register','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','catch','options','raw','then','CreateFaxMessage','attributes','limit','UpdateFaxMessage','stringify','lodash','util','moment','bluebird'];(function(_0x468630,_0x580913){var _0x39032e=function(_0x61eada){while(--_0x61eada){_0x468630['push'](_0x468630['shift']());}};_0x39032e(++_0x580913);}(_0x008c,0x188));var _0xc008=function(_0x59c233,_0xe0627e){_0x59c233=_0x59c233-0x0;var _0x26e0ef=_0x008c[_0x59c233];return _0x26e0ef;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});config[_0xc008('0xd')]=_['defaults'](config[_0xc008('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xc008('0xe'))(new Redis(config['redis']));require('./faxMessage.socket')[_0xc008('0xf')](socket);function respondWithRpcPromise(_0x7231b4,_0x57c46d,_0x51ba7d){return new BPromise(function(_0x543eb8,_0x1eacfa){return client[_0xc008('0x10')](_0x7231b4,_0x51ba7d)['then'](function(_0xae2dab){logger[_0xc008('0x11')](_0xc008('0x12'),_0x57c46d,_0xc008('0x13'));logger[_0xc008('0x14')](_0xc008('0x15'),_0x57c46d,_0xc008('0x13'),JSON['stringify'](_0xae2dab));if(_0xae2dab['error']){if(_0xae2dab[_0xc008('0x16')]['code']===0x1f4){logger[_0xc008('0x16')](_0xc008('0x12'),_0x57c46d,_0xae2dab[_0xc008('0x16')][_0xc008('0x17')]);return _0x1eacfa(_0xae2dab[_0xc008('0x16')]['message']);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x57c46d,_0xae2dab[_0xc008('0x16')][_0xc008('0x17')]);return _0x543eb8(_0xae2dab[_0xc008('0x16')][_0xc008('0x17')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x57c46d,'request\x20sent');_0x543eb8(_0xae2dab['result'][_0xc008('0x17')]);}})[_0xc008('0x18')](function(_0x501137){logger[_0xc008('0x16')]('FaxMessage,\x20%s,\x20%s',_0x57c46d,_0x501137);_0x1eacfa(_0x501137);});});}exports['CreateFaxMessage']=function(_0x543e5d){var _0x50261c=this;return new Promise(function(_0x5754a0,_0x4b9726){return db['FaxMessage']['create'](_0x543e5d['body'],{'raw':_0x543e5d['options']?_0x543e5d[_0xc008('0x19')][_0xc008('0x1a')]===undefined?!![]:![]:!![]})[_0xc008('0x1b')](function(_0x415af3){logger[_0xc008('0x11')](_0xc008('0x1c'),_0x543e5d);logger['debug'](_0xc008('0x1c'),_0x543e5d,JSON['stringify'](_0x415af3));_0x5754a0(_0x415af3);})['catch'](function(_0x218599){logger[_0xc008('0x16')](_0xc008('0x1c'),_0x218599[_0xc008('0x17')],_0x543e5d);_0x4b9726(_0x50261c['error'](0x1f4,_0x218599['message']));});});};exports['UpdateFaxMessage']=function(_0x3f7b07){var _0x15dade=this;return new Promise(function(_0x92c582,_0x2e31c2){return db['FaxMessage']['update'](_0x3f7b07['body'],{'raw':_0x3f7b07['options']?_0x3f7b07['options'][_0xc008('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f7b07[_0xc008('0x19')]?_0x3f7b07[_0xc008('0x19')]['where']||null:null,'attributes':_0x3f7b07[_0xc008('0x19')]?_0x3f7b07[_0xc008('0x19')][_0xc008('0x1d')]||null:null,'limit':_0x3f7b07[_0xc008('0x19')]?_0x3f7b07['options'][_0xc008('0x1e')]||null:null})[_0xc008('0x1b')](function(_0x53ed35){logger['info']('UpdateFaxMessage',_0x3f7b07);logger[_0xc008('0x14')](_0xc008('0x1f'),_0x3f7b07,JSON[_0xc008('0x20')](_0x53ed35));_0x92c582(_0x53ed35);})[_0xc008('0x18')](function(_0x1de04b){logger[_0xc008('0x16')](_0xc008('0x1f'),_0x1de04b[_0xc008('0x17')],_0x3f7b07);_0x2e31c2(_0x15dade[_0xc008('0x16')](0x1f4,_0x1de04b[_0xc008('0x17')]));});});};
\ No newline at end of file
index c17bdba..6da5ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc11e=['update','emit','removeListener','register','length','./faxMessage.events','save'];(function(_0x1848b5,_0x3e81d9){var _0x455dc1=function(_0x30c989){while(--_0x30c989){_0x1848b5['push'](_0x1848b5['shift']());}};_0x455dc1(++_0x3e81d9);}(_0xc11e,0x16a));var _0xec11=function(_0x29e4e0,_0x272570){_0x29e4e0=_0x29e4e0-0x0;var _0x2cafd8=_0xc11e[_0x29e4e0];return _0x2cafd8;};'use strict';var FaxMessageEvents=require(_0xec11('0x0'));var events=[_0xec11('0x1'),'remove',_0xec11('0x2')];function createListener(_0x1a6f26,_0x5be62f){return function(_0x5c7d48){_0x5be62f[_0xec11('0x3')](_0x1a6f26,_0x5c7d48);};}function removeListener(_0xf89065,_0xd93e37){return function(){FaxMessageEvents[_0xec11('0x4')](_0xf89065,_0xd93e37);};}exports[_0xec11('0x5')]=function(_0x314008){for(var _0x15ae3e=0x0,_0x1a122e=events[_0xec11('0x6')];_0x15ae3e<_0x1a122e;_0x15ae3e++){var _0x429f8f=events[_0x15ae3e];var _0x1ad5a3=createListener('faxMessage:'+_0x429f8f,_0x314008);FaxMessageEvents['on'](_0x429f8f,_0x1ad5a3);}};
\ No newline at end of file
+var _0xa18a=['./faxMessage.events','save','remove','emit','removeListener','faxMessage:'];(function(_0x5275b8,_0x51e5dd){var _0x568a9b=function(_0x583a71){while(--_0x583a71){_0x5275b8['push'](_0x5275b8['shift']());}};_0x568a9b(++_0x51e5dd);}(_0xa18a,0x11a));var _0xaa18=function(_0xc5e2af,_0x345582){_0xc5e2af=_0xc5e2af-0x0;var _0x155fdc=_0xa18a[_0xc5e2af];return _0x155fdc;};'use strict';var FaxMessageEvents=require(_0xaa18('0x0'));var events=[_0xaa18('0x1'),_0xaa18('0x2'),'update'];function createListener(_0x12479d,_0x1f9b60){return function(_0x4a4b80){_0x1f9b60[_0xaa18('0x3')](_0x12479d,_0x4a4b80);};}function removeListener(_0x4fc6f8,_0x5335c1){return function(){FaxMessageEvents[_0xaa18('0x4')](_0x4fc6f8,_0x5335c1);};}exports['register']=function(_0x2043cd){for(var _0x1c10ab=0x0,_0x323133=events['length'];_0x1c10ab<_0x323133;_0x1c10ab++){var _0x9d0580=events[_0x1c10ab];var _0x2ea04a=createListener(_0xaa18('0x5')+_0x9d0580,_0x2043cd);FaxMessageEvents['on'](_0x9d0580,_0x2ea04a);}};
\ No newline at end of file
index a822551..cb83134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b20=['accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','post','fax','faxmessage:create','create','put','update','/:id/accept'];(function(_0x1627f9,_0x37181a){var _0x3ec5c0=function(_0x40912b){while(--_0x40912b){_0x1627f9['push'](_0x1627f9['shift']());}};_0x3ec5c0(++_0x37181a);}(_0x6b20,0xd1));var _0x06b2=function(_0x5e7d75,_0x42c8fe){_0x5e7d75=_0x5e7d75-0x0;var _0x12d6e6=_0x6b20[_0x5e7d75];return _0x12d6e6;};'use strict';var multer=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var path=require('path');var timeout=require(_0x06b2('0x2'));var express=require('express');var router=express[_0x06b2('0x3')]();var fs_extra=require(_0x06b2('0x4'));var auth=require(_0x06b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x06b2('0x6'));var controller=require(_0x06b2('0x7'));router[_0x06b2('0x8')]('/',auth[_0x06b2('0x9')](),controller[_0x06b2('0xa')]);router[_0x06b2('0x8')](_0x06b2('0xb'),auth['isAuthenticated'](),controller[_0x06b2('0xc')]);router[_0x06b2('0x8')](_0x06b2('0xd'),auth['isAuthenticated'](),controller[_0x06b2('0xe')]);router['get'](_0x06b2('0xf'),auth['isAuthenticated'](),controller['download']);router[_0x06b2('0x10')]('/',auth[_0x06b2('0x9')](),interaction['tracked'](_0x06b2('0x11'),_0x06b2('0x12')),controller[_0x06b2('0x13')]);router[_0x06b2('0x14')](_0x06b2('0xd'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x15')]);router[_0x06b2('0x14')](_0x06b2('0x16'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x17')]);router[_0x06b2('0x14')](_0x06b2('0x18'),auth['isAuthenticated'](),controller[_0x06b2('0x19')]);router[_0x06b2('0x1a')](_0x06b2('0xd'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x1b')]);module[_0x06b2('0x1c')]=router;
\ No newline at end of file
+var _0xac4a=['../../components/interaction/service','../../config/environment','./faxMessage.controller','isAuthenticated','get','describe','download','post','tracked','fax','put','/:id','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x163fb9,_0x125c00){var _0x226778=function(_0x453ec7){while(--_0x453ec7){_0x163fb9['push'](_0x163fb9['shift']());}};_0x226778(++_0x125c00);}(_0xac4a,0x13f));var _0xaac4=function(_0x513575,_0x41dbed){_0x513575=_0x513575-0x0;var _0x145a13=_0xac4a[_0x513575];return _0x145a13;};'use strict';var multer=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var path=require(_0xaac4('0x2'));var timeout=require(_0xaac4('0x3'));var express=require(_0xaac4('0x4'));var router=express[_0xaac4('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaac4('0x6'));var config=require(_0xaac4('0x7'));var controller=require(_0xaac4('0x8'));router['get']('/',auth[_0xaac4('0x9')](),controller['index']);router[_0xaac4('0xa')]('/describe',auth[_0xaac4('0x9')](),controller[_0xaac4('0xb')]);router['get']('/:id',auth[_0xaac4('0x9')](),controller['show']);router[_0xaac4('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0xaac4('0xc')]);router[_0xaac4('0xd')]('/',auth[_0xaac4('0x9')](),interaction[_0xaac4('0xe')](_0xaac4('0xf'),'faxmessage:create'),controller['create']);router[_0xaac4('0x10')](_0xaac4('0x11'),auth[_0xaac4('0x9')](),controller['update']);router[_0xaac4('0x10')](_0xaac4('0x12'),auth['isAuthenticated'](),controller[_0xaac4('0x13')]);router[_0xaac4('0x10')](_0xaac4('0x14'),auth[_0xaac4('0x9')](),controller[_0xaac4('0x15')]);router[_0xaac4('0x16')](_0xaac4('0x11'),auth[_0xaac4('0x9')](),controller[_0xaac4('0x17')]);module[_0xaac4('0x18')]=router;
\ No newline at end of file
index 9a74967..11bdbb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f4=['ENUM','rrmemory','beepall','roundrobin','exports','STRING','INTEGER'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xe4f4,0x89));var _0x4e4f=function(_0x1c0e91,_0xd8625e){_0x1c0e91=_0x1c0e91-0x0;var _0x34322c=_0xe4f4[_0x1c0e91];return _0x34322c;};'use strict';var Sequelize=require('sequelize');module[_0x4e4f('0x0')]={'name':{'type':Sequelize[_0x4e4f('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4e4f('0x1')]},'timeout':{'type':Sequelize[_0x4e4f('0x2')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4e4f('0x3')](_0x4e4f('0x4'),_0x4e4f('0x5'),_0x4e4f('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x4e4f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x75ac=['sequelize','STRING','name','INTEGER','rrmemory','beepall'];(function(_0x5e1e57,_0x39711c){var _0x44fba0=function(_0x2e0b5d){while(--_0x2e0b5d){_0x5e1e57['push'](_0x5e1e57['shift']());}};_0x44fba0(++_0x39711c);}(_0x75ac,0x1b6));var _0xc75a=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x75ac[_0x485b5a];return _0xd2b34d;};'use strict';var Sequelize=require(_0xc75a('0x0'));module['exports']={'name':{'type':Sequelize[_0xc75a('0x1')],'unique':_0xc75a('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc75a('0x1')]},'timeout':{'type':Sequelize[_0xc75a('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xc75a('0x4'),_0xc75a('0x5'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 6f49bb6..e8516d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3ba=['squel','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','FaxQueues','UserProfileResource','destroy','end','stack','name','send','index','map','FaxQueue','fieldName','type','query','filters','model','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','rows','catch','params','rawAttributes','keys','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMembers','findOne','UserFaxQueue','hasOwnProperty','FaxQueueId','findAll','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','addTeams','ids','online','voicePause','interface','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','field','team_has_fax_queues','join','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','union','compact','value','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','fs-extra','lodash'];(function(_0x1bd106,_0x29dcbe){var _0x231dbb=function(_0x3638d7){while(--_0x3638d7){_0x1bd106['push'](_0x1bd106['shift']());}};_0x231dbb(++_0x29dcbe);}(_0xf3ba,0x82));var _0xaf3b=function(_0x28669c,_0x1f62c4){_0x28669c=_0x28669c-0x0;var _0x4a3af6=_0xf3ba[_0x28669c];return _0x4a3af6;};'use strict';var emlformat=require(_0xaf3b('0x0'));var rimraf=require(_0xaf3b('0x1'));var zipdir=require(_0xaf3b('0x2'));var jsonpatch=require(_0xaf3b('0x3'));var rp=require(_0xaf3b('0x4'));var moment=require(_0xaf3b('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xaf3b('0x6'));var sox=require(_0xaf3b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaf3b('0x8'));var _=require(_0xaf3b('0x9'));var squel=require(_0xaf3b('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xaf3b('0xb'));var toCsv=require(_0xaf3b('0xc'));var querystring=require(_0xaf3b('0xd'));var Papa=require(_0xaf3b('0xe'));var Redis=require('ioredis');var authService=require(_0xaf3b('0xf'));var qs=require(_0xaf3b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaf3b('0x11'));var logger=require(_0xaf3b('0x12'))('api');var utils=require(_0xaf3b('0x13'));var config=require(_0xaf3b('0x14'));var licenseUtil=require(_0xaf3b('0x15'));var db=require(_0xaf3b('0x16'))['db'];config[_0xaf3b('0x17')]=_[_0xaf3b('0x18')](config[_0xaf3b('0x17')],{'host':_0xaf3b('0x19'),'port':0x18eb});var socket=require(_0xaf3b('0x1a'))(new Redis(config[_0xaf3b('0x17')]));require('./faxQueue.socket')[_0xaf3b('0x1b')](socket);function respondWithStatusCode(_0x56ceb7,_0x54378d){_0x54378d=_0x54378d||0xcc;return function(_0x2c139b){if(_0x2c139b){return _0x56ceb7[_0xaf3b('0x1c')](_0x54378d);}return _0x56ceb7['status'](_0x54378d)['end']();};}function respondWithResult(_0x2205c4,_0x570917){_0x570917=_0x570917||0xc8;return function(_0x1a313f){if(_0x1a313f){return _0x2205c4[_0xaf3b('0x1d')](_0x570917)[_0xaf3b('0x1e')](_0x1a313f);}};}function respondWithFilteredResult(_0x53bb4d,_0x275279){return function(_0x646cd1){if(_0x646cd1){var _0x24a69d=typeof _0x275279[_0xaf3b('0x1f')]===_0xaf3b('0x20')&&typeof _0x275279[_0xaf3b('0x21')]===_0xaf3b('0x20');var _0x3f5f0d=_0x646cd1[_0xaf3b('0x22')];var _0x5ff4d4=_0x24a69d?0x0:_0x275279[_0xaf3b('0x1f')];var _0x3d47fc=_0x24a69d?_0x646cd1[_0xaf3b('0x22')]:_0x275279[_0xaf3b('0x1f')]+_0x275279['limit'];var _0x33bd0c;if(_0x3d47fc>=_0x3f5f0d){_0x3d47fc=_0x3f5f0d;_0x33bd0c=0xc8;}else{_0x33bd0c=0xce;}_0x53bb4d['status'](_0x33bd0c);return _0x53bb4d[_0xaf3b('0x23')](_0xaf3b('0x24'),_0x5ff4d4+'-'+_0x3d47fc+'/'+_0x3f5f0d)[_0xaf3b('0x1e')](_0x646cd1);}return null;};}function patchUpdates(_0x5405d3){return function(_0x2f7d9c){try{jsonpatch[_0xaf3b('0x25')](_0x2f7d9c,_0x5405d3,!![]);}catch(_0x547d83){return BPromise['reject'](_0x547d83);}return _0x2f7d9c[_0xaf3b('0x26')]();};}function saveUpdates(_0x776408,_0x408c22){return function(_0x5ab8b6){if(_0x5ab8b6){return _0x5ab8b6[_0xaf3b('0x27')](_0x776408)[_0xaf3b('0x28')](function(_0x448103){return _0x448103;});}return null;};}function removeEntity(_0x54ef9c,_0x27c4c1){return function(_0x10f303){if(_0x10f303){return _0x10f303['destroy']()['then'](function(){var _0x4dc221=_0x10f303[_0xaf3b('0x29')]({'plain':!![]});var _0x59cfd8=_0xaf3b('0x2a');return db[_0xaf3b('0x2b')][_0xaf3b('0x2c')]({'where':{'type':_0x59cfd8,'resourceId':_0x4dc221['id']}})[_0xaf3b('0x28')](function(){return _0x10f303;});})[_0xaf3b('0x28')](function(){_0x54ef9c['status'](0xcc)[_0xaf3b('0x2d')]();});}};}function handleEntityNotFound(_0xb41f62,_0x10c8f6){return function(_0x325820){if(!_0x325820){_0xb41f62[_0xaf3b('0x1c')](0x194);}return _0x325820;};}function handleError(_0x105266,_0x1c29bf){_0x1c29bf=_0x1c29bf||0x1f4;return function(_0x4a820b){logger['error'](_0x4a820b[_0xaf3b('0x2e')]);if(_0x4a820b['name']){delete _0x4a820b[_0xaf3b('0x2f')];}_0x105266[_0xaf3b('0x1d')](_0x1c29bf)[_0xaf3b('0x30')](_0x4a820b);};}exports[_0xaf3b('0x31')]=function(_0x1af43c,_0xd140e7){var _0xc11f1e={},_0x537027={},_0x37e4ff={'count':0x0,'rows':[]};var _0x2b9cf1=_[_0xaf3b('0x32')](db[_0xaf3b('0x33')]['rawAttributes'],function(_0x3665c5){return{'name':_0x3665c5[_0xaf3b('0x34')],'type':_0x3665c5[_0xaf3b('0x35')]['key']};});_0x537027['model']=_['map'](_0x2b9cf1,_0xaf3b('0x2f'));_0x537027[_0xaf3b('0x36')]=_['keys'](_0x1af43c[_0xaf3b('0x36')]);_0x537027[_0xaf3b('0x37')]=_['intersection'](_0x537027[_0xaf3b('0x38')],_0x537027['query']);_0xc11f1e['attributes']=_[_0xaf3b('0x39')](_0x537027[_0xaf3b('0x38')],qs['fields'](_0x1af43c[_0xaf3b('0x36')][_0xaf3b('0x3a')]));_0xc11f1e[_0xaf3b('0x3b')]=_0xc11f1e[_0xaf3b('0x3b')][_0xaf3b('0x3c')]?_0xc11f1e[_0xaf3b('0x3b')]:_0x537027[_0xaf3b('0x38')];if(!_0x1af43c['query']['hasOwnProperty'](_0xaf3b('0x3d'))){_0xc11f1e[_0xaf3b('0x21')]=qs[_0xaf3b('0x21')](_0x1af43c[_0xaf3b('0x36')][_0xaf3b('0x21')]);_0xc11f1e['offset']=qs[_0xaf3b('0x1f')](_0x1af43c['query'][_0xaf3b('0x1f')]);}_0xc11f1e[_0xaf3b('0x3e')]=qs[_0xaf3b('0x3f')](_0x1af43c['query'][_0xaf3b('0x3f')]);_0xc11f1e[_0xaf3b('0x40')]=qs[_0xaf3b('0x37')](_[_0xaf3b('0x41')](_0x1af43c[_0xaf3b('0x36')],_0x537027[_0xaf3b('0x37')]),_0x2b9cf1);if(_0x1af43c[_0xaf3b('0x36')]['filter']){_0xc11f1e[_0xaf3b('0x40')]=_[_0xaf3b('0x42')](_0xc11f1e[_0xaf3b('0x40')],{'$or':_[_0xaf3b('0x32')](_0x2b9cf1,function(_0x34d994){if(_0x34d994[_0xaf3b('0x35')]!==_0xaf3b('0x43')){var _0x555738={};_0x555738[_0x34d994[_0xaf3b('0x2f')]]={'$like':'%'+_0x1af43c[_0xaf3b('0x36')][_0xaf3b('0x44')]+'%'};return _0x555738;}})});}_0xc11f1e=_[_0xaf3b('0x42')]({},_0xc11f1e,_0x1af43c[_0xaf3b('0x45')]);var _0x2b9b0d={'where':_0xc11f1e[_0xaf3b('0x40')]};return db[_0xaf3b('0x33')][_0xaf3b('0x22')](_0x2b9b0d)[_0xaf3b('0x28')](function(_0x389c48){_0x37e4ff[_0xaf3b('0x22')]=_0x389c48;if(_0x1af43c[_0xaf3b('0x36')]['includeAll']){_0xc11f1e[_0xaf3b('0x46')]=[{'all':!![]}];}return db[_0xaf3b('0x33')]['findAll'](_0xc11f1e);})['then'](function(_0x5472b1){_0x37e4ff[_0xaf3b('0x47')]=_0x5472b1;return _0x37e4ff;})[_0xaf3b('0x28')](respondWithFilteredResult(_0xd140e7,_0xc11f1e))[_0xaf3b('0x48')](handleError(_0xd140e7,null));};exports['show']=function(_0x1b4ae7,_0x11efff){var _0x1c744d={'raw':!![],'where':{'id':_0x1b4ae7[_0xaf3b('0x49')]['id']}},_0x62ce27={};_0x62ce27['model']=_['keys'](db[_0xaf3b('0x33')][_0xaf3b('0x4a')]);_0x62ce27['query']=_[_0xaf3b('0x4b')](_0x1b4ae7[_0xaf3b('0x36')]);_0x62ce27[_0xaf3b('0x37')]=_['intersection'](_0x62ce27[_0xaf3b('0x38')],_0x62ce27[_0xaf3b('0x36')]);_0x1c744d[_0xaf3b('0x3b')]=_[_0xaf3b('0x39')](_0x62ce27[_0xaf3b('0x38')],qs[_0xaf3b('0x3a')](_0x1b4ae7[_0xaf3b('0x36')][_0xaf3b('0x3a')]));_0x1c744d['attributes']=_0x1c744d[_0xaf3b('0x3b')][_0xaf3b('0x3c')]?_0x1c744d[_0xaf3b('0x3b')]:_0x62ce27[_0xaf3b('0x38')];if(_0x1b4ae7[_0xaf3b('0x36')]['includeAll']){_0x1c744d['include']=[{'all':!![]}];}_0x1c744d=_['merge']({},_0x1c744d,_0x1b4ae7[_0xaf3b('0x45')]);return db[_0xaf3b('0x33')][_0xaf3b('0x4c')](_0x1c744d)[_0xaf3b('0x28')](handleEntityNotFound(_0x11efff,null))['then'](respondWithResult(_0x11efff,null))[_0xaf3b('0x48')](handleError(_0x11efff,null));};exports['create']=function(_0x3c8476,_0x22545d){return db[_0xaf3b('0x33')]['create'](_0x3c8476[_0xaf3b('0x4d')],{})[_0xaf3b('0x28')](function(_0x21b66a){var _0x579167=_0x3c8476[_0xaf3b('0x4e')][_0xaf3b('0x29')]({'plain':!![]});if(!_0x579167)throw new Error(_0xaf3b('0x4f'));if(_0x579167['role']===_0xaf3b('0x4e')){var _0x84f845=_0x21b66a['get']({'plain':!![]});var _0x5c2fa9=_0xaf3b('0x2a');return db[_0xaf3b('0x50')]['find']({'where':{'name':_0x5c2fa9,'userProfileId':_0x579167[_0xaf3b('0x51')]},'raw':!![]})[_0xaf3b('0x28')](function(_0x2c3c94){if(_0x2c3c94&&_0x2c3c94[_0xaf3b('0x52')]===0x0){return db[_0xaf3b('0x2b')][_0xaf3b('0x53')]({'name':_0x84f845['name'],'resourceId':_0x84f845['id'],'type':_0x2c3c94[_0xaf3b('0x2f')],'sectionId':_0x2c3c94['id']},{})[_0xaf3b('0x28')](function(){return _0x21b66a;});}else{return _0x21b66a;}})['catch'](function(_0x55dfcf){logger[_0xaf3b('0x54')](_0xaf3b('0x55'),_0x55dfcf);throw _0x55dfcf;});}return _0x21b66a;})['then'](respondWithResult(_0x22545d,0xc9))['catch'](handleError(_0x22545d,null));};exports[_0xaf3b('0x27')]=function(_0x54533b,_0x2a3442){if(_0x54533b['body']['id']){delete _0x54533b[_0xaf3b('0x4d')]['id'];}return db[_0xaf3b('0x33')][_0xaf3b('0x4c')]({'where':{'id':_0x54533b[_0xaf3b('0x49')]['id']}})['then'](handleEntityNotFound(_0x2a3442,null))['then'](saveUpdates(_0x54533b[_0xaf3b('0x4d')],null))[_0xaf3b('0x28')](respondWithResult(_0x2a3442,null))[_0xaf3b('0x48')](handleError(_0x2a3442,null));};exports['destroy']=function(_0x5999fb,_0x5cdc91){return db[_0xaf3b('0x33')][_0xaf3b('0x4c')]({'where':{'id':_0x5999fb[_0xaf3b('0x49')]['id']}})[_0xaf3b('0x28')](handleEntityNotFound(_0x5cdc91,null))['then'](removeEntity(_0x5cdc91,null))['catch'](handleError(_0x5cdc91,null));};exports['describe']=function(_0x455018,_0x5c4da8){return db['FaxQueue']['describe']()[_0xaf3b('0x28')](respondWithResult(_0x5c4da8,null))['catch'](handleError(_0x5c4da8,null));};exports[_0xaf3b('0x56')]=function(_0x3624b1,_0x18fd9a,_0xf9ab15){var _0xf7888e={'raw':!![],'where':{}},_0x9578bb={},_0x50777a;return db[_0xaf3b('0x33')][_0xaf3b('0x57')]({'where':{'id':_0x3624b1[_0xaf3b('0x49')]['id']}})[_0xaf3b('0x28')](handleEntityNotFound(_0x18fd9a,null))[_0xaf3b('0x28')](function(_0x717fa){if(_0x717fa){_0x50777a=_0x717fa['get']({'plain':!![]});_0x9578bb[_0xaf3b('0x38')]=_[_0xaf3b('0x4b')](db[_0xaf3b('0x58')][_0xaf3b('0x4a')]);_0x9578bb[_0xaf3b('0x36')]=_[_0xaf3b('0x4b')](_0x3624b1['query']);_0x9578bb[_0xaf3b('0x37')]=_[_0xaf3b('0x39')](_0x9578bb[_0xaf3b('0x38')],_0x9578bb[_0xaf3b('0x36')]);_0xf7888e[_0xaf3b('0x3b')]=_[_0xaf3b('0x39')](_0x9578bb[_0xaf3b('0x38')],qs[_0xaf3b('0x3a')](_0x3624b1['query'][_0xaf3b('0x3a')]));_0xf7888e[_0xaf3b('0x3b')]=_0xf7888e[_0xaf3b('0x3b')][_0xaf3b('0x3c')]?_0xf7888e['attributes']:_0x9578bb[_0xaf3b('0x38')];if(!_0x3624b1[_0xaf3b('0x36')][_0xaf3b('0x59')](_0xaf3b('0x3d'))){_0xf7888e['limit']=qs[_0xaf3b('0x21')](_0x3624b1[_0xaf3b('0x36')][_0xaf3b('0x21')]);_0xf7888e[_0xaf3b('0x1f')]=qs[_0xaf3b('0x1f')](_0x3624b1[_0xaf3b('0x36')]['offset']);}_0xf7888e[_0xaf3b('0x3e')]=qs[_0xaf3b('0x3f')](_0x3624b1[_0xaf3b('0x36')][_0xaf3b('0x3f')]);_0xf7888e[_0xaf3b('0x40')]=qs[_0xaf3b('0x37')](_[_0xaf3b('0x41')](_0x3624b1[_0xaf3b('0x36')],_0x9578bb[_0xaf3b('0x37')]));_0xf7888e[_0xaf3b('0x40')][_0xaf3b('0x5a')]=_0x717fa['id'];if(_0x3624b1[_0xaf3b('0x36')][_0xaf3b('0x44')]){_0xf7888e[_0xaf3b('0x40')]=_[_0xaf3b('0x42')](_0xf7888e[_0xaf3b('0x40')],{'$or':_[_0xaf3b('0x32')](_0xf7888e[_0xaf3b('0x3b')],function(_0x57fd3e){var _0x3910b9={};_0x3910b9[_0x57fd3e]={'$like':'%'+_0x3624b1[_0xaf3b('0x36')][_0xaf3b('0x44')]+'%'};return _0x3910b9;})});}_0xf7888e=_[_0xaf3b('0x42')]({},_0xf7888e,_0x3624b1['options']);return db[_0xaf3b('0x58')][_0xaf3b('0x5b')](_0xf7888e);}})['then'](function(_0x1945c6){if(_0x1945c6){return db[_0xaf3b('0x5c')][_0xaf3b('0x5d')]({'where':{'id':_[_0xaf3b('0x32')](_0x1945c6,_0xaf3b('0x5e')),'role':_0xaf3b('0x5f')},'attributes':['id',_0xaf3b('0x2f'),_0xaf3b('0x60'),_0xaf3b('0x61'),_0xaf3b('0x62')]});}})[_0xaf3b('0x28')](function(_0x1a3607){if(_0x1a3607){return{'count':_0x1a3607[_0xaf3b('0x22')],'rows':_[_0xaf3b('0x32')](_0x1a3607['rows'],function(_0x317160){return{'membername':_0x317160['name'],'UserId':_0x317160['id'],'queue_name':_0x50777a[_0xaf3b('0x2f')],'FaxQueueId':_0x50777a['id'],'interface':util[_0xaf3b('0x63')](_0xaf3b('0x64'),_0xaf3b('0x65'),_0x317160[_0xaf3b('0x2f')]),'penalty':0x0,'paused':_0x317160['faxPause'],'createdAt':_0x317160[_0xaf3b('0x62')],'updatedAt':_0x317160[_0xaf3b('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xaf3b('0x28')](respondWithFilteredResult(_0x18fd9a,_0xf7888e))['catch'](handleError(_0x18fd9a,null));};exports['getTeams']=function(_0x15bccb,_0xccdd45,_0x3df61a){var _0x4e02a4={};var _0x5ab21d={};var _0x179499;var _0x20dfab;return db[_0xaf3b('0x33')][_0xaf3b('0x57')]({'where':{'id':_0x15bccb['params']['id']}})['then'](handleEntityNotFound(_0xccdd45,null))['then'](function(_0x1fd107){if(_0x1fd107){_0x179499=_0x1fd107;_0x5ab21d['model']=_[_0xaf3b('0x4b')](db[_0xaf3b('0x66')][_0xaf3b('0x4a')]);_0x5ab21d['query']=_[_0xaf3b('0x4b')](_0x15bccb[_0xaf3b('0x36')]);_0x5ab21d['filters']=_[_0xaf3b('0x39')](_0x5ab21d[_0xaf3b('0x38')],_0x5ab21d['query']);_0x4e02a4[_0xaf3b('0x3b')]=_[_0xaf3b('0x39')](_0x5ab21d['model'],qs['fields'](_0x15bccb[_0xaf3b('0x36')]['fields']));_0x4e02a4[_0xaf3b('0x3b')]=_0x4e02a4[_0xaf3b('0x3b')][_0xaf3b('0x3c')]?_0x4e02a4[_0xaf3b('0x3b')]:_0x5ab21d[_0xaf3b('0x38')];_0x4e02a4['order']=qs[_0xaf3b('0x3f')](_0x15bccb[_0xaf3b('0x36')][_0xaf3b('0x3f')]);_0x4e02a4[_0xaf3b('0x40')]=qs[_0xaf3b('0x37')](_[_0xaf3b('0x41')](_0x15bccb[_0xaf3b('0x36')],_0x5ab21d['filters']));if(_0x15bccb[_0xaf3b('0x36')][_0xaf3b('0x44')]){_0x4e02a4['where']=_['merge'](_0x4e02a4[_0xaf3b('0x40')],{'$or':_[_0xaf3b('0x32')](_0x4e02a4['attributes'],function(_0x3d05ba){var _0x1ffb2a={};_0x1ffb2a[_0x3d05ba]={'$like':'%'+_0x15bccb[_0xaf3b('0x36')][_0xaf3b('0x44')]+'%'};return _0x1ffb2a;})});}_0x4e02a4=_[_0xaf3b('0x42')]({},_0x4e02a4,_0x15bccb['options']);return _0x179499['getTeams'](_0x4e02a4);}})['then'](function(_0x1351a5){if(_0x1351a5){_0x20dfab=_0x1351a5[_0xaf3b('0x3c')];if(!_0x15bccb[_0xaf3b('0x36')]['hasOwnProperty'](_0xaf3b('0x3d'))){_0x4e02a4[_0xaf3b('0x21')]=qs[_0xaf3b('0x21')](_0x15bccb['query'][_0xaf3b('0x21')]);_0x4e02a4[_0xaf3b('0x1f')]=qs[_0xaf3b('0x1f')](_0x15bccb[_0xaf3b('0x36')]['offset']);}return _0x179499[_0xaf3b('0x67')](_0x4e02a4);}})[_0xaf3b('0x28')](function(_0x1b5846){if(_0x1b5846){return _0x1b5846?{'count':_0x20dfab,'rows':_0x1b5846}:null;}})[_0xaf3b('0x28')](respondWithResult(_0xccdd45,null))[_0xaf3b('0x48')](handleError(_0xccdd45,null));};exports[_0xaf3b('0x68')]=function(_0x1e3251,_0x4af487,_0x5bd989){var _0x18aade=_0x1e3251[_0xaf3b('0x4d')][_0xaf3b('0x69')];return db[_0xaf3b('0x66')][_0xaf3b('0x5b')]({'where':{'id':_0x18aade},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xaf3b('0x2f'),_0xaf3b('0x6a'),_0xaf3b('0x6b'),_0xaf3b('0x6c')],'raw':!![]}]})[_0xaf3b('0x28')](function(_0x5680ca){if(_0x5680ca){var _0x5a5b6c=_['flatMap'](_0x5680ca,function(_0x2a4e61){var _0x46bc13=_0x2a4e61[_0xaf3b('0x29')]({'plain':!![]});return _0x46bc13[_0xaf3b('0x6d')];});return db[_0xaf3b('0x33')][_0xaf3b('0x4c')]({'where':{'id':_0x1e3251[_0xaf3b('0x49')]['id']}})[_0xaf3b('0x28')](function(_0x13e567){return db[_0xaf3b('0x6e')][_0xaf3b('0x6f')](function(_0x34156b){return _0x13e567[_0xaf3b('0x68')](_0x18aade,{'transaction':_0x34156b})[_0xaf3b('0x28')](function(){return BPromise[_0xaf3b('0x70')](_0x5a5b6c,function(_0x21d48a){return db['UserFaxQueue'][_0xaf3b('0x71')]({'where':{'UserId':_0x21d48a['id'],'FaxQueueId':_0x1e3251['params']['id']},'transaction':_0x34156b});});})[_0xaf3b('0x28')](function(){_0x5a5b6c[_0xaf3b('0x72')](function(_0x59db22){socket[_0xaf3b('0x73')](_0xaf3b('0x74'),{'UserId':_0x59db22['id'],'FaxQueueId':_0x13e567['id']});});});});});}})['then'](respondWithStatusCode(_0x4af487,null))['catch'](handleError(_0x4af487,null));};exports[_0xaf3b('0x75')]=function(_0x1b322e,_0x162662,_0x3289de){return db['Team'][_0xaf3b('0x5b')]({'where':{'id':_0x1b322e[_0xaf3b('0x36')][_0xaf3b('0x69')]},'attributes':['id'],'include':[{'model':db[_0xaf3b('0x5c')],'as':_0xaf3b('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xaf3b('0x28')](handleEntityNotFound(_0x162662,null))[_0xaf3b('0x28')](function(_0x12d0e3){var _0x7b058d=_[_0xaf3b('0x32')](_0x12d0e3,'id');var _0x17cc6e=[];var _0x190890=[];var _0x8a7856=squel['select']();_0x8a7856[_0xaf3b('0x76')]('tq.TeamId')['from'](_0xaf3b('0x77'),'tq')[_0xaf3b('0x78')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xaf3b('0x40')](_0xaf3b('0x79'),_0x1b322e['params']['id']);for(var _0x3e9765=0x0;_0x3e9765<_0x12d0e3[_0xaf3b('0x3c')];_0x3e9765+=0x1){let _0x3858d4=_0x12d0e3[_0x3e9765];for(var _0x36778d=0x0;_0x36778d<_0x3858d4[_0xaf3b('0x6d')][_0xaf3b('0x3c')];_0x36778d+=0x1){let _0x5581a9=_0x3858d4[_0xaf3b('0x6d')][_0x36778d];var _0x45c5db=_0x8a7856[_0xaf3b('0x7a')]();_0x45c5db[_0xaf3b('0x40')](_0xaf3b('0x7b'),_0x5581a9['id']);_0x190890[_0xaf3b('0x7c')](db[_0xaf3b('0x6e')][_0xaf3b('0x36')](_0x45c5db[_0xaf3b('0x7d')](),{'type':db[_0xaf3b('0x6e')][_0xaf3b('0x7e')][_0xaf3b('0x7f')]})[_0xaf3b('0x28')](function(_0x28d171){if(_0x28d171[_0xaf3b('0x3c')]===0x1){return _0x5581a9['id'];}else{var _0x25b3ee=_[_0xaf3b('0x80')](_[_0xaf3b('0x32')](_0x28d171,_0xaf3b('0x81')),function(_0x522f68){return _['includes'](_0x7b058d,_0x522f68);});if(_0x25b3ee){return _0x5581a9['id'];}}}));}}return BPromise['all'](_0x190890)[_0xaf3b('0x28')](function(_0x10be79){_0x17cc6e=_(_0x17cc6e)[_0xaf3b('0x82')](_0x10be79)[_0xaf3b('0x83')]()[_0xaf3b('0x84')]();return db[_0xaf3b('0x33')][_0xaf3b('0x4c')]({'where':{'id':_0x1b322e[_0xaf3b('0x49')]['id']}})[_0xaf3b('0x28')](function(_0x509556){return db[_0xaf3b('0x6e')][_0xaf3b('0x6f')](function(_0x13193e){return _0x509556[_0xaf3b('0x75')](_0x1b322e['query'][_0xaf3b('0x69')],{'transaction':_0x13193e})[_0xaf3b('0x28')](function(){if(!_['isEmpty'](_0x17cc6e)){return _0x509556[_0xaf3b('0x85')](_0x17cc6e,{'transaction':_0x13193e});}})[_0xaf3b('0x28')](function(){_0x17cc6e[_0xaf3b('0x72')](function(_0x548d08){socket[_0xaf3b('0x73')](_0xaf3b('0x86'),{'UserId':_0x548d08,'FaxQueueId':_0x509556['id']});});});});});});})['then'](respondWithStatusCode(_0x162662,null))[_0xaf3b('0x48')](handleError(_0x162662,null));};exports[_0xaf3b('0x87')]=function(_0x4bd45a,_0x22aaee,_0x33b470){return db[_0xaf3b('0x33')][_0xaf3b('0x4c')]({'where':{'id':_0x4bd45a[_0xaf3b('0x49')]['id']}})[_0xaf3b('0x28')](handleEntityNotFound(_0x22aaee,null))['then'](function(_0x463135){if(_0x463135){return _0x463135['addAgents'](_0x4bd45a[_0xaf3b('0x4d')][_0xaf3b('0x69')],_[_0xaf3b('0x88')](_0x4bd45a['body'],[_0xaf3b('0x69'),'id'])||{})[_0xaf3b('0x89')](function(_0x5f2dee){for(var _0x161ebe=0x0;_0x161ebe<_0x4bd45a['body']['ids'][_0xaf3b('0x3c')];_0x161ebe+=0x1){socket[_0xaf3b('0x73')](_0xaf3b('0x74'),{'UserId':Number(_0x4bd45a[_0xaf3b('0x4d')][_0xaf3b('0x69')][_0x161ebe]),'FaxQueueId':Number(_0x4bd45a['params']['id'])});}return _0x5f2dee;});}})[_0xaf3b('0x28')](respondWithResult(_0x22aaee,null))[_0xaf3b('0x48')](handleError(_0x22aaee,null));};exports[_0xaf3b('0x85')]=function(_0x29c502,_0x54f004,_0x512ee7){return db[_0xaf3b('0x33')][_0xaf3b('0x4c')]({'where':{'id':_0x29c502[_0xaf3b('0x49')]['id']}})[_0xaf3b('0x28')](handleEntityNotFound(_0x54f004,null))[_0xaf3b('0x28')](function(_0xf9b052){if(_0xf9b052){return _0xf9b052[_0xaf3b('0x85')](_0x29c502['query']['ids'])['then'](function(){if(_[_0xaf3b('0x8a')](_0x29c502[_0xaf3b('0x36')][_0xaf3b('0x69')])){for(var _0x2237b2=0x0;_0x2237b2<_0x29c502[_0xaf3b('0x36')][_0xaf3b('0x69')][_0xaf3b('0x3c')];_0x2237b2+=0x1){socket[_0xaf3b('0x73')](_0xaf3b('0x86'),{'UserId':Number(_0x29c502[_0xaf3b('0x36')]['ids'][_0x2237b2]),'FaxQueueId':Number(_0x29c502[_0xaf3b('0x49')]['id'])});}}else{socket[_0xaf3b('0x73')]('userFaxQueue:remove',{'UserId':Number(_0x29c502[_0xaf3b('0x36')][_0xaf3b('0x69')]),'FaxQueueId':Number(_0x29c502[_0xaf3b('0x49')]['id'])});}});}})[_0xaf3b('0x28')](respondWithStatusCode(_0x54f004,null))[_0xaf3b('0x48')](handleError(_0x54f004,null));};exports[_0xaf3b('0x8b')]=function(_0x5ba070,_0x771b19,_0x4b3288){var _0x8eda09={};var _0x2e1843={};var _0x5e5ac9;var _0x24bd5c;return db[_0xaf3b('0x33')][_0xaf3b('0x57')]({'where':{'id':_0x5ba070['params']['id']}})[_0xaf3b('0x28')](handleEntityNotFound(_0x771b19,null))[_0xaf3b('0x28')](function(_0x4164b0){if(_0x4164b0){_0x5e5ac9=_0x4164b0;_0x2e1843[_0xaf3b('0x38')]=_[_0xaf3b('0x4b')](db[_0xaf3b('0x5c')][_0xaf3b('0x4a')]);_0x2e1843[_0xaf3b('0x36')]=_[_0xaf3b('0x4b')](_0x5ba070['query']);_0x2e1843['filters']=_['intersection'](_0x2e1843[_0xaf3b('0x38')],_0x2e1843['query']);_0x8eda09[_0xaf3b('0x3b')]=_[_0xaf3b('0x39')](_0x2e1843['model'],qs[_0xaf3b('0x3a')](_0x5ba070[_0xaf3b('0x36')][_0xaf3b('0x3a')]));_0x8eda09[_0xaf3b('0x3b')]=_0x8eda09[_0xaf3b('0x3b')][_0xaf3b('0x3c')]?_0x8eda09['attributes']:_0x2e1843[_0xaf3b('0x38')];_0x8eda09['order']=qs['sort'](_0x5ba070['query'][_0xaf3b('0x3f')]);_0x8eda09[_0xaf3b('0x40')]=qs[_0xaf3b('0x37')](_[_0xaf3b('0x41')](_0x5ba070[_0xaf3b('0x36')],_0x2e1843[_0xaf3b('0x37')]));if(_0x5ba070['query']['filter']){_0x8eda09[_0xaf3b('0x40')]=_[_0xaf3b('0x42')](_0x8eda09[_0xaf3b('0x40')],{'$or':_[_0xaf3b('0x32')](_0x8eda09[_0xaf3b('0x3b')],function(_0x553ebc){var _0x43d056={};_0x43d056[_0x553ebc]={'$like':'%'+_0x5ba070[_0xaf3b('0x36')][_0xaf3b('0x44')]+'%'};return _0x43d056;})});}_0x8eda09=_['merge']({},_0x8eda09,_0x5ba070[_0xaf3b('0x45')]);return _0x5e5ac9[_0xaf3b('0x8b')](_0x8eda09);}})[_0xaf3b('0x28')](function(_0x1c5558){if(_0x1c5558){_0x24bd5c=_0x1c5558[_0xaf3b('0x3c')];if(!_0x5ba070['query'][_0xaf3b('0x59')](_0xaf3b('0x3d'))){_0x8eda09[_0xaf3b('0x21')]=qs['limit'](_0x5ba070[_0xaf3b('0x36')][_0xaf3b('0x21')]);_0x8eda09[_0xaf3b('0x1f')]=qs['offset'](_0x5ba070[_0xaf3b('0x36')][_0xaf3b('0x1f')]);}return _0x5e5ac9[_0xaf3b('0x8b')](_0x8eda09);}})[_0xaf3b('0x28')](function(_0x4114b2){if(_0x4114b2){return _0x4114b2?{'count':_0x24bd5c,'rows':_0x4114b2}:null;}})[_0xaf3b('0x28')](respondWithResult(_0x771b19,null))[_0xaf3b('0x48')](handleError(_0x771b19,null));};
\ No newline at end of file
+var _0xccf2=['find','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','order','FaxQueueId','User','findAndCountAll','agent','faxPause','createdAt','rows','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','sequelize','each','forEach','userFaxQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','ut.UserId\x20=\x20?','toString','SELECT','TeamId','all','union','compact','value','transaction','isEmpty','emit','addAgents','spread','removeAgents','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','get','FaxQueues','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','FaxQueue','includeAll','include','findAll','params','rawAttributes','length','catch','create','body','user','role','UserProfileSection'];(function(_0x487066,_0x1fdadd){var _0xff5f81=function(_0x568881){while(--_0x568881){_0x487066['push'](_0x487066['shift']());}};_0xff5f81(++_0x1fdadd);}(_0xccf2,0x148));var _0x2ccf=function(_0x21dc33,_0x2472be){_0x21dc33=_0x21dc33-0x0;var _0x5c765e=_0xccf2[_0x21dc33];return _0x5c765e;};'use strict';var emlformat=require(_0x2ccf('0x0'));var rimraf=require(_0x2ccf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2ccf('0x2'));var rp=require('request-promise');var moment=require(_0x2ccf('0x3'));var BPromise=require(_0x2ccf('0x4'));var Mustache=require(_0x2ccf('0x5'));var util=require('util');var path=require(_0x2ccf('0x6'));var sox=require(_0x2ccf('0x7'));var csv=require(_0x2ccf('0x8'));var ejs=require(_0x2ccf('0x9'));var fs=require('fs');var fs_extra=require(_0x2ccf('0xa'));var _=require(_0x2ccf('0xb'));var squel=require('squel');var crypto=require(_0x2ccf('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2ccf('0x8'));var querystring=require(_0x2ccf('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2ccf('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x2ccf('0xf'));var hardwareService=require(_0x2ccf('0x10'));var logger=require(_0x2ccf('0x11'))('api');var utils=require(_0x2ccf('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2ccf('0x13'))['db'];config[_0x2ccf('0x14')]=_['defaults'](config[_0x2ccf('0x14')],{'host':_0x2ccf('0x15'),'port':0x18eb});var socket=require(_0x2ccf('0x16'))(new Redis(config[_0x2ccf('0x14')]));require('./faxQueue.socket')[_0x2ccf('0x17')](socket);function respondWithStatusCode(_0x1438ef,_0x49d539){_0x49d539=_0x49d539||0xcc;return function(_0x20f50d){if(_0x20f50d){return _0x1438ef[_0x2ccf('0x18')](_0x49d539);}return _0x1438ef[_0x2ccf('0x19')](_0x49d539)[_0x2ccf('0x1a')]();};}function respondWithResult(_0xccbb2f,_0x2671d4){_0x2671d4=_0x2671d4||0xc8;return function(_0x16abc3){if(_0x16abc3){return _0xccbb2f['status'](_0x2671d4)['json'](_0x16abc3);}};}function respondWithFilteredResult(_0x16c93e,_0x292a0e){return function(_0x5b1a21){if(_0x5b1a21){var _0x5f3c4d=typeof _0x292a0e[_0x2ccf('0x1b')]===_0x2ccf('0x1c')&&typeof _0x292a0e[_0x2ccf('0x1d')]===_0x2ccf('0x1c');var _0xd81ecb=_0x5b1a21[_0x2ccf('0x1e')];var _0x14fe29=_0x5f3c4d?0x0:_0x292a0e[_0x2ccf('0x1b')];var _0x48a949=_0x5f3c4d?_0x5b1a21['count']:_0x292a0e['offset']+_0x292a0e[_0x2ccf('0x1d')];var _0x3b7d8f;if(_0x48a949>=_0xd81ecb){_0x48a949=_0xd81ecb;_0x3b7d8f=0xc8;}else{_0x3b7d8f=0xce;}_0x16c93e[_0x2ccf('0x19')](_0x3b7d8f);return _0x16c93e[_0x2ccf('0x1f')](_0x2ccf('0x20'),_0x14fe29+'-'+_0x48a949+'/'+_0xd81ecb)[_0x2ccf('0x21')](_0x5b1a21);}return null;};}function patchUpdates(_0x4f12bf){return function(_0x227a74){try{jsonpatch['apply'](_0x227a74,_0x4f12bf,!![]);}catch(_0xe42bf){return BPromise[_0x2ccf('0x22')](_0xe42bf);}return _0x227a74[_0x2ccf('0x23')]();};}function saveUpdates(_0x397af8,_0x3246c5){return function(_0x3e5256){if(_0x3e5256){return _0x3e5256[_0x2ccf('0x24')](_0x397af8)[_0x2ccf('0x25')](function(_0x38c3c4){return _0x38c3c4;});}return null;};}function removeEntity(_0x417124,_0x196064){return function(_0x258346){if(_0x258346){return _0x258346[_0x2ccf('0x26')]()[_0x2ccf('0x25')](function(){var _0x308bfa=_0x258346[_0x2ccf('0x27')]({'plain':!![]});var _0x31bbc2=_0x2ccf('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x31bbc2,'resourceId':_0x308bfa['id']}})['then'](function(){return _0x258346;});})[_0x2ccf('0x25')](function(){_0x417124[_0x2ccf('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b7369,_0x3dfb7a){return function(_0x18a347){if(!_0x18a347){_0x3b7369['sendStatus'](0x194);}return _0x18a347;};}function handleError(_0x57d11d,_0x2827ec){_0x2827ec=_0x2827ec||0x1f4;return function(_0x7db385){logger['error'](_0x7db385['stack']);if(_0x7db385[_0x2ccf('0x29')]){delete _0x7db385[_0x2ccf('0x29')];}_0x57d11d[_0x2ccf('0x19')](_0x2827ec)[_0x2ccf('0x2a')](_0x7db385);};}exports[_0x2ccf('0x2b')]=function(_0x2b513a,_0x1c32b7){var _0x209dd7={},_0x5363c6={},_0x4f7bd6={'count':0x0,'rows':[]};var _0x593b0f=_[_0x2ccf('0x2c')](db['FaxQueue']['rawAttributes'],function(_0x21cd30){return{'name':_0x21cd30[_0x2ccf('0x2d')],'type':_0x21cd30[_0x2ccf('0x2e')][_0x2ccf('0x2f')]};});_0x5363c6['model']=_[_0x2ccf('0x2c')](_0x593b0f,_0x2ccf('0x29'));_0x5363c6[_0x2ccf('0x30')]=_[_0x2ccf('0x31')](_0x2b513a[_0x2ccf('0x30')]);_0x5363c6[_0x2ccf('0x32')]=_[_0x2ccf('0x33')](_0x5363c6['model'],_0x5363c6[_0x2ccf('0x30')]);_0x209dd7[_0x2ccf('0x34')]=_['intersection'](_0x5363c6[_0x2ccf('0x35')],qs[_0x2ccf('0x36')](_0x2b513a[_0x2ccf('0x30')][_0x2ccf('0x36')]));_0x209dd7[_0x2ccf('0x34')]=_0x209dd7[_0x2ccf('0x34')]['length']?_0x209dd7[_0x2ccf('0x34')]:_0x5363c6['model'];if(!_0x2b513a[_0x2ccf('0x30')][_0x2ccf('0x37')](_0x2ccf('0x38'))){_0x209dd7[_0x2ccf('0x1d')]=qs['limit'](_0x2b513a[_0x2ccf('0x30')][_0x2ccf('0x1d')]);_0x209dd7[_0x2ccf('0x1b')]=qs[_0x2ccf('0x1b')](_0x2b513a['query']['offset']);}_0x209dd7['order']=qs[_0x2ccf('0x39')](_0x2b513a[_0x2ccf('0x30')]['sort']);_0x209dd7[_0x2ccf('0x3a')]=qs[_0x2ccf('0x32')](_[_0x2ccf('0x3b')](_0x2b513a[_0x2ccf('0x30')],_0x5363c6[_0x2ccf('0x32')]),_0x593b0f);if(_0x2b513a[_0x2ccf('0x30')][_0x2ccf('0x3c')]){_0x209dd7[_0x2ccf('0x3a')]=_[_0x2ccf('0x3d')](_0x209dd7[_0x2ccf('0x3a')],{'$or':_[_0x2ccf('0x2c')](_0x593b0f,function(_0x408ce6){if(_0x408ce6[_0x2ccf('0x2e')]!==_0x2ccf('0x3e')){var _0x34f2da={};_0x34f2da[_0x408ce6['name']]={'$like':'%'+_0x2b513a[_0x2ccf('0x30')][_0x2ccf('0x3c')]+'%'};return _0x34f2da;}})});}_0x209dd7=_[_0x2ccf('0x3d')]({},_0x209dd7,_0x2b513a[_0x2ccf('0x3f')]);var _0x35b312={'where':_0x209dd7['where']};return db[_0x2ccf('0x40')][_0x2ccf('0x1e')](_0x35b312)['then'](function(_0x144743){_0x4f7bd6['count']=_0x144743;if(_0x2b513a[_0x2ccf('0x30')][_0x2ccf('0x41')]){_0x209dd7[_0x2ccf('0x42')]=[{'all':!![]}];}return db[_0x2ccf('0x40')][_0x2ccf('0x43')](_0x209dd7);})[_0x2ccf('0x25')](function(_0x27df1a){_0x4f7bd6['rows']=_0x27df1a;return _0x4f7bd6;})[_0x2ccf('0x25')](respondWithFilteredResult(_0x1c32b7,_0x209dd7))['catch'](handleError(_0x1c32b7,null));};exports['show']=function(_0x3b4b71,_0x351656){var _0x18db9f={'raw':!![],'where':{'id':_0x3b4b71[_0x2ccf('0x44')]['id']}},_0x1a5530={};_0x1a5530[_0x2ccf('0x35')]=_['keys'](db[_0x2ccf('0x40')][_0x2ccf('0x45')]);_0x1a5530[_0x2ccf('0x30')]=_['keys'](_0x3b4b71[_0x2ccf('0x30')]);_0x1a5530[_0x2ccf('0x32')]=_['intersection'](_0x1a5530[_0x2ccf('0x35')],_0x1a5530[_0x2ccf('0x30')]);_0x18db9f[_0x2ccf('0x34')]=_['intersection'](_0x1a5530[_0x2ccf('0x35')],qs[_0x2ccf('0x36')](_0x3b4b71[_0x2ccf('0x30')]['fields']));_0x18db9f[_0x2ccf('0x34')]=_0x18db9f[_0x2ccf('0x34')][_0x2ccf('0x46')]?_0x18db9f[_0x2ccf('0x34')]:_0x1a5530[_0x2ccf('0x35')];if(_0x3b4b71[_0x2ccf('0x30')][_0x2ccf('0x41')]){_0x18db9f[_0x2ccf('0x42')]=[{'all':!![]}];}_0x18db9f=_[_0x2ccf('0x3d')]({},_0x18db9f,_0x3b4b71[_0x2ccf('0x3f')]);return db['FaxQueue']['find'](_0x18db9f)['then'](handleEntityNotFound(_0x351656,null))[_0x2ccf('0x25')](respondWithResult(_0x351656,null))[_0x2ccf('0x47')](handleError(_0x351656,null));};exports[_0x2ccf('0x48')]=function(_0x3250fd,_0x33e6ad){return db[_0x2ccf('0x40')][_0x2ccf('0x48')](_0x3250fd[_0x2ccf('0x49')],{})[_0x2ccf('0x25')](function(_0x4ca071){var _0x33a74c=_0x3250fd[_0x2ccf('0x4a')][_0x2ccf('0x27')]({'plain':!![]});if(!_0x33a74c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x33a74c[_0x2ccf('0x4b')]===_0x2ccf('0x4a')){var _0x1c7064=_0x4ca071['get']({'plain':!![]});var _0x19ddc1=_0x2ccf('0x28');return db[_0x2ccf('0x4c')][_0x2ccf('0x4d')]({'where':{'name':_0x19ddc1,'userProfileId':_0x33a74c[_0x2ccf('0x4e')]},'raw':!![]})[_0x2ccf('0x25')](function(_0x1e4b2d){if(_0x1e4b2d&&_0x1e4b2d[_0x2ccf('0x4f')]===0x0){return db[_0x2ccf('0x50')][_0x2ccf('0x48')]({'name':_0x1c7064['name'],'resourceId':_0x1c7064['id'],'type':_0x1e4b2d[_0x2ccf('0x29')],'sectionId':_0x1e4b2d['id']},{})['then'](function(){return _0x4ca071;});}else{return _0x4ca071;}})[_0x2ccf('0x47')](function(_0x3aed4d){logger[_0x2ccf('0x51')](_0x2ccf('0x52'),_0x3aed4d);throw _0x3aed4d;});}return _0x4ca071;})[_0x2ccf('0x25')](respondWithResult(_0x33e6ad,0xc9))['catch'](handleError(_0x33e6ad,null));};exports[_0x2ccf('0x24')]=function(_0x2bae7e,_0xf391e6){if(_0x2bae7e[_0x2ccf('0x49')]['id']){delete _0x2bae7e[_0x2ccf('0x49')]['id'];}return db[_0x2ccf('0x40')][_0x2ccf('0x4d')]({'where':{'id':_0x2bae7e[_0x2ccf('0x44')]['id']}})[_0x2ccf('0x25')](handleEntityNotFound(_0xf391e6,null))[_0x2ccf('0x25')](saveUpdates(_0x2bae7e[_0x2ccf('0x49')],null))[_0x2ccf('0x25')](respondWithResult(_0xf391e6,null))[_0x2ccf('0x47')](handleError(_0xf391e6,null));};exports[_0x2ccf('0x26')]=function(_0x35d342,_0xd06de9){return db[_0x2ccf('0x40')]['find']({'where':{'id':_0x35d342[_0x2ccf('0x44')]['id']}})[_0x2ccf('0x25')](handleEntityNotFound(_0xd06de9,null))['then'](removeEntity(_0xd06de9,null))['catch'](handleError(_0xd06de9,null));};exports['describe']=function(_0x1c42f9,_0x5bccaa){return db[_0x2ccf('0x40')][_0x2ccf('0x53')]()[_0x2ccf('0x25')](respondWithResult(_0x5bccaa,null))[_0x2ccf('0x47')](handleError(_0x5bccaa,null));};exports[_0x2ccf('0x54')]=function(_0x3c0bea,_0x3e0b22,_0x47772b){var _0xed1848={'raw':!![],'where':{}},_0x554892={},_0x4a5604;return db[_0x2ccf('0x40')][_0x2ccf('0x55')]({'where':{'id':_0x3c0bea[_0x2ccf('0x44')]['id']}})[_0x2ccf('0x25')](handleEntityNotFound(_0x3e0b22,null))[_0x2ccf('0x25')](function(_0x56eb54){if(_0x56eb54){_0x4a5604=_0x56eb54[_0x2ccf('0x27')]({'plain':!![]});_0x554892[_0x2ccf('0x35')]=_[_0x2ccf('0x31')](db[_0x2ccf('0x56')]['rawAttributes']);_0x554892['query']=_[_0x2ccf('0x31')](_0x3c0bea[_0x2ccf('0x30')]);_0x554892[_0x2ccf('0x32')]=_[_0x2ccf('0x33')](_0x554892[_0x2ccf('0x35')],_0x554892[_0x2ccf('0x30')]);_0xed1848['attributes']=_[_0x2ccf('0x33')](_0x554892[_0x2ccf('0x35')],qs[_0x2ccf('0x36')](_0x3c0bea['query'][_0x2ccf('0x36')]));_0xed1848[_0x2ccf('0x34')]=_0xed1848[_0x2ccf('0x34')][_0x2ccf('0x46')]?_0xed1848[_0x2ccf('0x34')]:_0x554892['model'];if(!_0x3c0bea[_0x2ccf('0x30')]['hasOwnProperty'](_0x2ccf('0x38'))){_0xed1848[_0x2ccf('0x1d')]=qs[_0x2ccf('0x1d')](_0x3c0bea[_0x2ccf('0x30')][_0x2ccf('0x1d')]);_0xed1848[_0x2ccf('0x1b')]=qs[_0x2ccf('0x1b')](_0x3c0bea[_0x2ccf('0x30')][_0x2ccf('0x1b')]);}_0xed1848[_0x2ccf('0x57')]=qs[_0x2ccf('0x39')](_0x3c0bea[_0x2ccf('0x30')]['sort']);_0xed1848[_0x2ccf('0x3a')]=qs[_0x2ccf('0x32')](_[_0x2ccf('0x3b')](_0x3c0bea[_0x2ccf('0x30')],_0x554892[_0x2ccf('0x32')]));_0xed1848[_0x2ccf('0x3a')][_0x2ccf('0x58')]=_0x56eb54['id'];if(_0x3c0bea[_0x2ccf('0x30')]['filter']){_0xed1848[_0x2ccf('0x3a')]=_[_0x2ccf('0x3d')](_0xed1848[_0x2ccf('0x3a')],{'$or':_[_0x2ccf('0x2c')](_0xed1848['attributes'],function(_0x74f41){var _0xf940a3={};_0xf940a3[_0x74f41]={'$like':'%'+_0x3c0bea['query'][_0x2ccf('0x3c')]+'%'};return _0xf940a3;})});}_0xed1848=_[_0x2ccf('0x3d')]({},_0xed1848,_0x3c0bea[_0x2ccf('0x3f')]);return db[_0x2ccf('0x56')][_0x2ccf('0x43')](_0xed1848);}})[_0x2ccf('0x25')](function(_0x2c6d7d){if(_0x2c6d7d){return db[_0x2ccf('0x59')][_0x2ccf('0x5a')]({'where':{'id':_[_0x2ccf('0x2c')](_0x2c6d7d,'UserId'),'role':_0x2ccf('0x5b')},'attributes':['id',_0x2ccf('0x29'),_0x2ccf('0x5c'),'updatedAt',_0x2ccf('0x5d')]});}})[_0x2ccf('0x25')](function(_0x5483f7){if(_0x5483f7){return{'count':_0x5483f7[_0x2ccf('0x1e')],'rows':_[_0x2ccf('0x2c')](_0x5483f7[_0x2ccf('0x5e')],function(_0x219bd8){return{'membername':_0x219bd8[_0x2ccf('0x29')],'UserId':_0x219bd8['id'],'queue_name':_0x4a5604[_0x2ccf('0x29')],'FaxQueueId':_0x4a5604['id'],'interface':util[_0x2ccf('0x5f')](_0x2ccf('0x60'),_0x2ccf('0x61'),_0x219bd8[_0x2ccf('0x29')]),'penalty':0x0,'paused':_0x219bd8[_0x2ccf('0x5c')],'createdAt':_0x219bd8[_0x2ccf('0x5d')],'updatedAt':_0x219bd8[_0x2ccf('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x2ccf('0x25')](respondWithFilteredResult(_0x3e0b22,_0xed1848))[_0x2ccf('0x47')](handleError(_0x3e0b22,null));};exports[_0x2ccf('0x63')]=function(_0x5e3beb,_0x2f96a6,_0x3ccf3){var _0x47b5bf={};var _0x5742b0={};var _0x99c3dc;var _0x1caa3c;return db[_0x2ccf('0x40')][_0x2ccf('0x55')]({'where':{'id':_0x5e3beb['params']['id']}})[_0x2ccf('0x25')](handleEntityNotFound(_0x2f96a6,null))[_0x2ccf('0x25')](function(_0x24c056){if(_0x24c056){_0x99c3dc=_0x24c056;_0x5742b0[_0x2ccf('0x35')]=_[_0x2ccf('0x31')](db[_0x2ccf('0x64')][_0x2ccf('0x45')]);_0x5742b0['query']=_[_0x2ccf('0x31')](_0x5e3beb['query']);_0x5742b0['filters']=_['intersection'](_0x5742b0[_0x2ccf('0x35')],_0x5742b0['query']);_0x47b5bf[_0x2ccf('0x34')]=_[_0x2ccf('0x33')](_0x5742b0['model'],qs['fields'](_0x5e3beb['query']['fields']));_0x47b5bf[_0x2ccf('0x34')]=_0x47b5bf['attributes'][_0x2ccf('0x46')]?_0x47b5bf[_0x2ccf('0x34')]:_0x5742b0[_0x2ccf('0x35')];_0x47b5bf[_0x2ccf('0x57')]=qs[_0x2ccf('0x39')](_0x5e3beb[_0x2ccf('0x30')][_0x2ccf('0x39')]);_0x47b5bf['where']=qs[_0x2ccf('0x32')](_[_0x2ccf('0x3b')](_0x5e3beb[_0x2ccf('0x30')],_0x5742b0['filters']));if(_0x5e3beb[_0x2ccf('0x30')][_0x2ccf('0x3c')]){_0x47b5bf[_0x2ccf('0x3a')]=_[_0x2ccf('0x3d')](_0x47b5bf[_0x2ccf('0x3a')],{'$or':_[_0x2ccf('0x2c')](_0x47b5bf[_0x2ccf('0x34')],function(_0x1dce1f){var _0x5c9965={};_0x5c9965[_0x1dce1f]={'$like':'%'+_0x5e3beb[_0x2ccf('0x30')][_0x2ccf('0x3c')]+'%'};return _0x5c9965;})});}_0x47b5bf=_[_0x2ccf('0x3d')]({},_0x47b5bf,_0x5e3beb['options']);return _0x99c3dc[_0x2ccf('0x63')](_0x47b5bf);}})[_0x2ccf('0x25')](function(_0x831517){if(_0x831517){_0x1caa3c=_0x831517[_0x2ccf('0x46')];if(!_0x5e3beb[_0x2ccf('0x30')]['hasOwnProperty']('nolimit')){_0x47b5bf[_0x2ccf('0x1d')]=qs['limit'](_0x5e3beb[_0x2ccf('0x30')][_0x2ccf('0x1d')]);_0x47b5bf[_0x2ccf('0x1b')]=qs['offset'](_0x5e3beb['query'][_0x2ccf('0x1b')]);}return _0x99c3dc[_0x2ccf('0x63')](_0x47b5bf);}})[_0x2ccf('0x25')](function(_0x27ad65){if(_0x27ad65){return _0x27ad65?{'count':_0x1caa3c,'rows':_0x27ad65}:null;}})[_0x2ccf('0x25')](respondWithResult(_0x2f96a6,null))[_0x2ccf('0x47')](handleError(_0x2f96a6,null));};exports[_0x2ccf('0x65')]=function(_0xbe5645,_0x41694a,_0x122475){var _0x39edac=_0xbe5645['body'][_0x2ccf('0x66')];return db[_0x2ccf('0x64')][_0x2ccf('0x43')]({'where':{'id':_0x39edac},'attributes':['id'],'include':[{'model':db[_0x2ccf('0x59')],'as':_0x2ccf('0x67'),'attributes':['id',_0x2ccf('0x29'),_0x2ccf('0x68'),_0x2ccf('0x69'),_0x2ccf('0x6a')],'raw':!![]}]})[_0x2ccf('0x25')](function(_0x161247){if(_0x161247){var _0x40caec=_['flatMap'](_0x161247,function(_0x196e80){var _0x3b8e66=_0x196e80[_0x2ccf('0x27')]({'plain':!![]});return _0x3b8e66[_0x2ccf('0x67')];});return db[_0x2ccf('0x40')]['find']({'where':{'id':_0xbe5645['params']['id']}})['then'](function(_0x52109d){return db[_0x2ccf('0x6b')]['transaction'](function(_0x268f90){return _0x52109d['addTeams'](_0x39edac,{'transaction':_0x268f90})['then'](function(){return BPromise[_0x2ccf('0x6c')](_0x40caec,function(_0x43dd17){return db[_0x2ccf('0x56')]['findOrCreate']({'where':{'UserId':_0x43dd17['id'],'FaxQueueId':_0xbe5645[_0x2ccf('0x44')]['id']},'transaction':_0x268f90});});})['then'](function(){_0x40caec[_0x2ccf('0x6d')](function(_0x3d3b1e){socket['emit'](_0x2ccf('0x6e'),{'UserId':_0x3d3b1e['id'],'FaxQueueId':_0x52109d['id']});});});});});}})['then'](respondWithStatusCode(_0x41694a,null))[_0x2ccf('0x47')](handleError(_0x41694a,null));};exports[_0x2ccf('0x6f')]=function(_0x451947,_0x41125a,_0x57e850){return db[_0x2ccf('0x64')][_0x2ccf('0x43')]({'where':{'id':_0x451947[_0x2ccf('0x30')][_0x2ccf('0x66')]},'attributes':['id'],'include':[{'model':db[_0x2ccf('0x59')],'as':_0x2ccf('0x67'),'attributes':['id'],'raw':!![]}]})[_0x2ccf('0x25')](handleEntityNotFound(_0x41125a,null))[_0x2ccf('0x25')](function(_0x4e3b6f){var _0x38bb6c=_[_0x2ccf('0x2c')](_0x4e3b6f,'id');var _0x14de66=[];var _0x10c919=[];var _0x2217b7=squel[_0x2ccf('0x70')]();_0x2217b7[_0x2ccf('0x71')](_0x2ccf('0x72'))[_0x2ccf('0x73')](_0x2ccf('0x74'),'tq')['join'](_0x2ccf('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x2ccf('0x3a')]('FaxQueueId\x20=\x20?',_0x451947[_0x2ccf('0x44')]['id']);for(var _0x5ea56c=0x0;_0x5ea56c<_0x4e3b6f[_0x2ccf('0x46')];_0x5ea56c+=0x1){let _0x5e723c=_0x4e3b6f[_0x5ea56c];for(var _0x38a6da=0x0;_0x38a6da<_0x5e723c[_0x2ccf('0x67')]['length'];_0x38a6da+=0x1){let _0x3ee3d0=_0x5e723c[_0x2ccf('0x67')][_0x38a6da];var _0x1ddf81=_0x2217b7['clone']();_0x1ddf81[_0x2ccf('0x3a')](_0x2ccf('0x76'),_0x3ee3d0['id']);_0x10c919['push'](db[_0x2ccf('0x6b')][_0x2ccf('0x30')](_0x1ddf81[_0x2ccf('0x77')](),{'type':db[_0x2ccf('0x6b')]['QueryTypes'][_0x2ccf('0x78')]})['then'](function(_0x1f00ef){if(_0x1f00ef[_0x2ccf('0x46')]===0x1){return _0x3ee3d0['id'];}else{var _0x2eb7de=_['every'](_[_0x2ccf('0x2c')](_0x1f00ef,_0x2ccf('0x79')),function(_0x282bb3){return _['includes'](_0x38bb6c,_0x282bb3);});if(_0x2eb7de){return _0x3ee3d0['id'];}}}));}}return BPromise[_0x2ccf('0x7a')](_0x10c919)[_0x2ccf('0x25')](function(_0x5d0a71){_0x14de66=_(_0x14de66)[_0x2ccf('0x7b')](_0x5d0a71)[_0x2ccf('0x7c')]()[_0x2ccf('0x7d')]();return db['FaxQueue'][_0x2ccf('0x4d')]({'where':{'id':_0x451947[_0x2ccf('0x44')]['id']}})[_0x2ccf('0x25')](function(_0x5c3087){return db['sequelize'][_0x2ccf('0x7e')](function(_0x3ed99b){return _0x5c3087['removeTeams'](_0x451947[_0x2ccf('0x30')]['ids'],{'transaction':_0x3ed99b})[_0x2ccf('0x25')](function(){if(!_[_0x2ccf('0x7f')](_0x14de66)){return _0x5c3087['removeAgents'](_0x14de66,{'transaction':_0x3ed99b});}})['then'](function(){_0x14de66[_0x2ccf('0x6d')](function(_0x1280f8){socket[_0x2ccf('0x80')]('userFaxQueue:remove',{'UserId':_0x1280f8,'FaxQueueId':_0x5c3087['id']});});});});});});})[_0x2ccf('0x25')](respondWithStatusCode(_0x41125a,null))[_0x2ccf('0x47')](handleError(_0x41125a,null));};exports[_0x2ccf('0x81')]=function(_0x3a042e,_0x21f80a,_0x45cb49){return db[_0x2ccf('0x40')][_0x2ccf('0x4d')]({'where':{'id':_0x3a042e[_0x2ccf('0x44')]['id']}})[_0x2ccf('0x25')](handleEntityNotFound(_0x21f80a,null))[_0x2ccf('0x25')](function(_0x300a68){if(_0x300a68){return _0x300a68[_0x2ccf('0x81')](_0x3a042e[_0x2ccf('0x49')][_0x2ccf('0x66')],_['omit'](_0x3a042e['body'],[_0x2ccf('0x66'),'id'])||{})[_0x2ccf('0x82')](function(_0x1efb49){for(var _0x270c7a=0x0;_0x270c7a<_0x3a042e[_0x2ccf('0x49')][_0x2ccf('0x66')]['length'];_0x270c7a+=0x1){socket[_0x2ccf('0x80')]('userFaxQueue:save',{'UserId':Number(_0x3a042e[_0x2ccf('0x49')][_0x2ccf('0x66')][_0x270c7a]),'FaxQueueId':Number(_0x3a042e['params']['id'])});}return _0x1efb49;});}})[_0x2ccf('0x25')](respondWithResult(_0x21f80a,null))[_0x2ccf('0x47')](handleError(_0x21f80a,null));};exports[_0x2ccf('0x83')]=function(_0x1fe2b2,_0x3fc49a,_0x439ddd){return db[_0x2ccf('0x40')][_0x2ccf('0x4d')]({'where':{'id':_0x1fe2b2[_0x2ccf('0x44')]['id']}})['then'](handleEntityNotFound(_0x3fc49a,null))[_0x2ccf('0x25')](function(_0x49902b){if(_0x49902b){return _0x49902b[_0x2ccf('0x83')](_0x1fe2b2[_0x2ccf('0x30')][_0x2ccf('0x66')])[_0x2ccf('0x25')](function(){if(_[_0x2ccf('0x84')](_0x1fe2b2[_0x2ccf('0x30')]['ids'])){for(var _0x160072=0x0;_0x160072<_0x1fe2b2[_0x2ccf('0x30')][_0x2ccf('0x66')]['length'];_0x160072+=0x1){socket[_0x2ccf('0x80')](_0x2ccf('0x85'),{'UserId':Number(_0x1fe2b2['query'][_0x2ccf('0x66')][_0x160072]),'FaxQueueId':Number(_0x1fe2b2['params']['id'])});}}else{socket['emit'](_0x2ccf('0x85'),{'UserId':Number(_0x1fe2b2[_0x2ccf('0x30')][_0x2ccf('0x66')]),'FaxQueueId':Number(_0x1fe2b2['params']['id'])});}});}})[_0x2ccf('0x25')](respondWithStatusCode(_0x3fc49a,null))[_0x2ccf('0x47')](handleError(_0x3fc49a,null));};exports[_0x2ccf('0x86')]=function(_0x13e84a,_0x479349,_0x3a5523){var _0x5aa38b={};var _0x1d5421={};var _0x3b2aee;var _0x14bb99;return db[_0x2ccf('0x40')]['findOne']({'where':{'id':_0x13e84a[_0x2ccf('0x44')]['id']}})[_0x2ccf('0x25')](handleEntityNotFound(_0x479349,null))['then'](function(_0x238f0f){if(_0x238f0f){_0x3b2aee=_0x238f0f;_0x1d5421[_0x2ccf('0x35')]=_[_0x2ccf('0x31')](db['User'][_0x2ccf('0x45')]);_0x1d5421[_0x2ccf('0x30')]=_[_0x2ccf('0x31')](_0x13e84a[_0x2ccf('0x30')]);_0x1d5421[_0x2ccf('0x32')]=_[_0x2ccf('0x33')](_0x1d5421[_0x2ccf('0x35')],_0x1d5421['query']);_0x5aa38b[_0x2ccf('0x34')]=_[_0x2ccf('0x33')](_0x1d5421[_0x2ccf('0x35')],qs[_0x2ccf('0x36')](_0x13e84a[_0x2ccf('0x30')][_0x2ccf('0x36')]));_0x5aa38b['attributes']=_0x5aa38b[_0x2ccf('0x34')]['length']?_0x5aa38b[_0x2ccf('0x34')]:_0x1d5421[_0x2ccf('0x35')];_0x5aa38b[_0x2ccf('0x57')]=qs[_0x2ccf('0x39')](_0x13e84a[_0x2ccf('0x30')][_0x2ccf('0x39')]);_0x5aa38b['where']=qs[_0x2ccf('0x32')](_[_0x2ccf('0x3b')](_0x13e84a[_0x2ccf('0x30')],_0x1d5421[_0x2ccf('0x32')]));if(_0x13e84a[_0x2ccf('0x30')]['filter']){_0x5aa38b[_0x2ccf('0x3a')]=_['merge'](_0x5aa38b['where'],{'$or':_['map'](_0x5aa38b['attributes'],function(_0x2a7f48){var _0xacd7b8={};_0xacd7b8[_0x2a7f48]={'$like':'%'+_0x13e84a['query']['filter']+'%'};return _0xacd7b8;})});}_0x5aa38b=_[_0x2ccf('0x3d')]({},_0x5aa38b,_0x13e84a['options']);return _0x3b2aee[_0x2ccf('0x86')](_0x5aa38b);}})[_0x2ccf('0x25')](function(_0x20e569){if(_0x20e569){_0x14bb99=_0x20e569[_0x2ccf('0x46')];if(!_0x13e84a[_0x2ccf('0x30')][_0x2ccf('0x37')](_0x2ccf('0x38'))){_0x5aa38b[_0x2ccf('0x1d')]=qs['limit'](_0x13e84a['query']['limit']);_0x5aa38b[_0x2ccf('0x1b')]=qs[_0x2ccf('0x1b')](_0x13e84a[_0x2ccf('0x30')][_0x2ccf('0x1b')]);}return _0x3b2aee['getAgents'](_0x5aa38b);}})[_0x2ccf('0x25')](function(_0x89b064){if(_0x89b064){return _0x89b064?{'count':_0x14bb99,'rows':_0x89b064}:null;}})[_0x2ccf('0x25')](respondWithResult(_0x479349,null))[_0x2ccf('0x47')](handleError(_0x479349,null));};
\ No newline at end of file
index d3b30e8..695ef6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b1=['save','remove','emit','hasOwnProperty','exports','../../mysqldb','setMaxListeners'];(function(_0x1301d4,_0x67b05e){var _0x467501=function(_0x35f1bf){while(--_0x35f1bf){_0x1301d4['push'](_0x1301d4['shift']());}};_0x467501(++_0x67b05e);}(_0xb3b1,0x67));var _0x1b3b=function(_0x3e4761,_0x371056){_0x3e4761=_0x3e4761-0x0;var _0x524f09=_0xb3b1[_0x3e4761];return _0x524f09;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x1b3b('0x0'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x1b3b('0x1')](0x0);var events={'afterCreate':_0x1b3b('0x2'),'afterUpdate':'update','afterDestroy':_0x1b3b('0x3')};function emitEvent(_0x47317e){return function(_0x1ff2f7,_0x4180f1,_0x5cc261){FaxQueueEvents[_0x1b3b('0x4')](_0x47317e+':'+_0x1ff2f7['id'],_0x1ff2f7);FaxQueueEvents[_0x1b3b('0x4')](_0x47317e,_0x1ff2f7);_0x5cc261(null);};}for(var e in events){if(events[_0x1b3b('0x5')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x1b3b('0x6')]=FaxQueueEvents;
\ No newline at end of file
+var _0xb69f=['FaxQueue','save','update','remove','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x1c06f4,_0x2feba6){var _0x1a727e=function(_0x2e83af){while(--_0x2e83af){_0x1c06f4['push'](_0x1c06f4['shift']());}};_0x1a727e(++_0x2feba6);}(_0xb69f,0x16f));var _0xfb69=function(_0x8ae7dc,_0x328c03){_0x8ae7dc=_0x8ae7dc-0x0;var _0x173d09=_0xb69f[_0x8ae7dc];return _0x173d09;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0xfb69('0x0'))['db'][_0xfb69('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfb69('0x2'),'afterUpdate':_0xfb69('0x3'),'afterDestroy':_0xfb69('0x4')};function emitEvent(_0x12346a){return function(_0x4a0f50,_0x54f6b5,_0xe298d2){FaxQueueEvents[_0xfb69('0x5')](_0x12346a+':'+_0x4a0f50['id'],_0x4a0f50);FaxQueueEvents[_0xfb69('0x5')](_0x12346a,_0x4a0f50);_0xe298d2(null);};}for(var e in events){if(events[_0xfb69('0x6')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xfb69('0x7')]=FaxQueueEvents;
\ No newline at end of file
index a14d7d8..5a88cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb2=['FaxQueue','fax_queues','lodash','util','api','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes'];(function(_0x236fdb,_0x2ac251){var _0x50c273=function(_0xd29ffa){while(--_0xd29ffa){_0x236fdb['push'](_0x236fdb['shift']());}};_0x50c273(++_0x2ac251);}(_0x7eb2,0xd4));var _0x27eb=function(_0x3b934c,_0xd472a9){_0x3b934c=_0x3b934c-0x0;var _0x104d4a=_0x7eb2[_0x3b934c];return _0x104d4a;};'use strict';var _=require(_0x27eb('0x0'));var util=require(_0x27eb('0x1'));var logger=require('../../config/logger')(_0x27eb('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x27eb('0x3'));var fs=require('fs');var path=require(_0x27eb('0x4'));var rimraf=require(_0x27eb('0x5'));var config=require(_0x27eb('0x6'));var attributes=require(_0x27eb('0x7'));module['exports']=function(_0x13c0e9,_0x19b490){return _0x13c0e9['define'](_0x27eb('0x8'),attributes,{'tableName':_0x27eb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc869=['path','rimraf','../../config/environment','./faxQueue.attributes','exports','define','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc869,0xd2));var _0x9c86=function(_0x15c9fa,_0x38a951){_0x15c9fa=_0x15c9fa-0x0;var _0x54c729=_0xc869[_0x15c9fa];return _0x54c729;};'use strict';var _=require(_0x9c86('0x0'));var util=require('util');var logger=require(_0x9c86('0x1'))(_0x9c86('0x2'));var moment=require(_0x9c86('0x3'));var BPromise=require(_0x9c86('0x4'));var rp=require(_0x9c86('0x5'));var fs=require('fs');var path=require(_0x9c86('0x6'));var rimraf=require(_0x9c86('0x7'));var config=require(_0x9c86('0x8'));var attributes=require(_0x9c86('0x9'));module[_0x9c86('0xa')]=function(_0x5763b5,_0x3271ac){return _0x5763b5[_0x9c86('0xb')]('FaxQueue',attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f9b004c..33408c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8243=['raw','where','attributes','include','map','model','GetFaxQueue','ShowFaxQueue','find','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','./faxQueue.socket','register','request','then','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','FaxQueue','options'];(function(_0x4013da,_0xeaf6dc){var _0x434e19=function(_0x491376){while(--_0x491376){_0x4013da['push'](_0x4013da['shift']());}};_0x434e19(++_0xeaf6dc);}(_0x8243,0x15f));var _0x3824=function(_0x2c2bdc,_0x54dd0d){_0x2c2bdc=_0x2c2bdc-0x0;var _0x59f28c=_0x8243[_0x2c2bdc];return _0x59f28c;};'use strict';var _=require('lodash');var util=require(_0x3824('0x0'));var moment=require(_0x3824('0x1'));var BPromise=require(_0x3824('0x2'));var rs=require(_0x3824('0x3'));var fs=require('fs');var Redis=require(_0x3824('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3824('0x5'));var logger=require(_0x3824('0x6'))(_0x3824('0x7'));var config=require('../../config/environment');var jayson=require(_0x3824('0x8'));var client=jayson['client'][_0x3824('0x9')]({'port':0x232a});config[_0x3824('0xa')]=_[_0x3824('0xb')](config[_0x3824('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3824('0xa')]));require(_0x3824('0xc'))[_0x3824('0xd')](socket);function respondWithRpcPromise(_0x294c74,_0xe9a9bd,_0xa26170){return new BPromise(function(_0x18febe,_0x21e58a){return client[_0x3824('0xe')](_0x294c74,_0xa26170)[_0x3824('0xf')](function(_0x59859c){logger['info'](_0x3824('0x10'),_0xe9a9bd,_0x3824('0x11'));logger[_0x3824('0x12')](_0x3824('0x13'),_0xe9a9bd,_0x3824('0x11'),JSON[_0x3824('0x14')](_0x59859c));if(_0x59859c[_0x3824('0x15')]){if(_0x59859c[_0x3824('0x15')][_0x3824('0x16')]===0x1f4){logger[_0x3824('0x15')](_0x3824('0x10'),_0xe9a9bd,_0x59859c[_0x3824('0x15')][_0x3824('0x17')]);return _0x21e58a(_0x59859c['error']['message']);}logger[_0x3824('0x15')](_0x3824('0x10'),_0xe9a9bd,_0x59859c[_0x3824('0x15')]['message']);return _0x18febe(_0x59859c[_0x3824('0x15')][_0x3824('0x17')]);}else{logger[_0x3824('0x18')](_0x3824('0x10'),_0xe9a9bd,_0x3824('0x11'));_0x18febe(_0x59859c[_0x3824('0x19')]['message']);}})[_0x3824('0x1a')](function(_0x17af67){logger[_0x3824('0x15')](_0x3824('0x10'),_0xe9a9bd,_0x17af67);_0x21e58a(_0x17af67);});});}exports['GetFaxQueue']=function(_0x27ddb2){var _0x80de2=this;return new Promise(function(_0xc4cc16,_0xb267de){return db[_0x3824('0x1b')]['findAll']({'raw':_0x27ddb2['options']?_0x27ddb2[_0x3824('0x1c')][_0x3824('0x1d')]===undefined?!![]:![]:!![],'where':_0x27ddb2[_0x3824('0x1c')]?_0x27ddb2[_0x3824('0x1c')][_0x3824('0x1e')]||null:null,'attributes':_0x27ddb2['options']?_0x27ddb2[_0x3824('0x1c')][_0x3824('0x1f')]||null:null,'limit':_0x27ddb2[_0x3824('0x1c')]?_0x27ddb2[_0x3824('0x1c')]['limit']||null:null,'include':_0x27ddb2[_0x3824('0x1c')]?_0x27ddb2[_0x3824('0x1c')][_0x3824('0x20')]?_[_0x3824('0x21')](_0x27ddb2[_0x3824('0x1c')][_0x3824('0x20')],function(_0xa909ac){return{'model':db[_0xa909ac[_0x3824('0x22')]],'as':_0xa909ac['as'],'attributes':_0xa909ac[_0x3824('0x1f')],'include':_0xa909ac['include']?_[_0x3824('0x21')](_0xa909ac[_0x3824('0x20')],function(_0x314da6){return{'model':db[_0x314da6['model']],'as':_0x314da6['as'],'attributes':_0x314da6[_0x3824('0x1f')],'include':_0x314da6[_0x3824('0x20')]?_[_0x3824('0x21')](_0x314da6['include'],function(_0x2f9220){return{'model':db[_0x2f9220['model']],'as':_0x2f9220['as'],'attributes':_0x2f9220['attributes']};}):[]};}):[]};}):[]:[]})[_0x3824('0xf')](function(_0x4e4eaf){logger[_0x3824('0x18')](_0x3824('0x23'),_0x27ddb2);logger[_0x3824('0x12')]('GetFaxQueue',_0x27ddb2,JSON[_0x3824('0x14')](_0x4e4eaf));_0xc4cc16(_0x4e4eaf);})[_0x3824('0x1a')](function(_0x10f15c){logger['error'](_0x3824('0x23'),_0x10f15c[_0x3824('0x17')],_0x27ddb2);_0xb267de(_0x80de2[_0x3824('0x15')](0x1f4,_0x10f15c[_0x3824('0x17')]));});});};exports[_0x3824('0x24')]=function(_0x1bb608){var _0x17ad73=this;return new Promise(function(_0x2ff914,_0x30b0e1){return db['FaxQueue'][_0x3824('0x25')]({'raw':_0x1bb608[_0x3824('0x1c')]?_0x1bb608[_0x3824('0x1c')][_0x3824('0x1d')]===undefined?!![]:![]:!![],'where':_0x1bb608['options']?_0x1bb608['options'][_0x3824('0x1e')]||null:null,'attributes':_0x1bb608[_0x3824('0x1c')]?_0x1bb608[_0x3824('0x1c')][_0x3824('0x1f')]||null:null,'include':_0x1bb608['options']?_0x1bb608['options'][_0x3824('0x20')]?_[_0x3824('0x21')](_0x1bb608['options'][_0x3824('0x20')],function(_0x1d78b7){return{'model':db[_0x1d78b7[_0x3824('0x22')]],'as':_0x1d78b7['as'],'attributes':_0x1d78b7[_0x3824('0x1f')],'include':_0x1d78b7[_0x3824('0x20')]?_['map'](_0x1d78b7[_0x3824('0x20')],function(_0x5798cf){return{'model':db[_0x5798cf['model']],'as':_0x5798cf['as'],'attributes':_0x5798cf[_0x3824('0x1f')],'include':_0x5798cf[_0x3824('0x20')]?_[_0x3824('0x21')](_0x5798cf['include'],function(_0x449534){return{'model':db[_0x449534['model']],'as':_0x449534['as'],'attributes':_0x449534['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x95eab1){logger[_0x3824('0x18')](_0x3824('0x24'),_0x1bb608);logger[_0x3824('0x12')]('ShowFaxQueue',_0x1bb608,JSON[_0x3824('0x14')](_0x95eab1));_0x2ff914(_0x95eab1);})['catch'](function(_0x4ceed1){logger[_0x3824('0x15')](_0x3824('0x24'),_0x4ceed1[_0x3824('0x17')],_0x1bb608);_0x30b0e1(_0x17ad73[_0x3824('0x15')](0x1f4,_0x4ceed1['message']));});});};
\ No newline at end of file
+var _0xb352=['../../config/environment','jayson/promise','client','redis','localhost','register','request','then','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','GetFaxQueue','FaxQueue','options','raw','where','limit','include','model','attributes','map','catch','ShowFaxQueue','find','lodash','bluebird','ioredis','../../config/logger','rpc'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xb352,0x17c));var _0x2b35=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xb352[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require(_0x2b35('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2b35('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2b35('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2b35('0x3'))(_0x2b35('0x4'));var config=require(_0x2b35('0x5'));var jayson=require(_0x2b35('0x6'));var client=jayson[_0x2b35('0x7')]['http']({'port':0x232a});config[_0x2b35('0x8')]=_['defaults'](config[_0x2b35('0x8')],{'host':_0x2b35('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./faxQueue.socket')[_0x2b35('0xa')](socket);function respondWithRpcPromise(_0x34988a,_0x5f0f56,_0x46b6be){return new BPromise(function(_0x1a870c,_0x2b0475){return client[_0x2b35('0xb')](_0x34988a,_0x46b6be)[_0x2b35('0xc')](function(_0x1605fc){logger['info'](_0x2b35('0xd'),_0x5f0f56,_0x2b35('0xe'));logger[_0x2b35('0xf')](_0x2b35('0x10'),_0x5f0f56,_0x2b35('0xe'),JSON[_0x2b35('0x11')](_0x1605fc));if(_0x1605fc[_0x2b35('0x12')]){if(_0x1605fc[_0x2b35('0x12')]['code']===0x1f4){logger[_0x2b35('0x12')](_0x2b35('0xd'),_0x5f0f56,_0x1605fc['error'][_0x2b35('0x13')]);return _0x2b0475(_0x1605fc[_0x2b35('0x12')][_0x2b35('0x13')]);}logger['error'](_0x2b35('0xd'),_0x5f0f56,_0x1605fc[_0x2b35('0x12')][_0x2b35('0x13')]);return _0x1a870c(_0x1605fc[_0x2b35('0x12')]['message']);}else{logger[_0x2b35('0x14')](_0x2b35('0xd'),_0x5f0f56,_0x2b35('0xe'));_0x1a870c(_0x1605fc[_0x2b35('0x15')]['message']);}})['catch'](function(_0x37e4c5){logger['error']('FaxQueue,\x20%s,\x20%s',_0x5f0f56,_0x37e4c5);_0x2b0475(_0x37e4c5);});});}exports[_0x2b35('0x16')]=function(_0x3948d6){var _0x37e141=this;return new Promise(function(_0x531630,_0x8158f8){return db[_0x2b35('0x17')]['findAll']({'raw':_0x3948d6[_0x2b35('0x18')]?_0x3948d6[_0x2b35('0x18')][_0x2b35('0x19')]===undefined?!![]:![]:!![],'where':_0x3948d6['options']?_0x3948d6[_0x2b35('0x18')][_0x2b35('0x1a')]||null:null,'attributes':_0x3948d6[_0x2b35('0x18')]?_0x3948d6[_0x2b35('0x18')]['attributes']||null:null,'limit':_0x3948d6[_0x2b35('0x18')]?_0x3948d6[_0x2b35('0x18')][_0x2b35('0x1b')]||null:null,'include':_0x3948d6[_0x2b35('0x18')]?_0x3948d6[_0x2b35('0x18')][_0x2b35('0x1c')]?_['map'](_0x3948d6[_0x2b35('0x18')]['include'],function(_0x1bcfc6){return{'model':db[_0x1bcfc6[_0x2b35('0x1d')]],'as':_0x1bcfc6['as'],'attributes':_0x1bcfc6[_0x2b35('0x1e')],'include':_0x1bcfc6[_0x2b35('0x1c')]?_[_0x2b35('0x1f')](_0x1bcfc6[_0x2b35('0x1c')],function(_0xd8ebc8){return{'model':db[_0xd8ebc8[_0x2b35('0x1d')]],'as':_0xd8ebc8['as'],'attributes':_0xd8ebc8[_0x2b35('0x1e')],'include':_0xd8ebc8['include']?_['map'](_0xd8ebc8['include'],function(_0x423a11){return{'model':db[_0x423a11['model']],'as':_0x423a11['as'],'attributes':_0x423a11['attributes']};}):[]};}):[]};}):[]:[]})[_0x2b35('0xc')](function(_0x405133){logger[_0x2b35('0x14')](_0x2b35('0x16'),_0x3948d6);logger[_0x2b35('0xf')](_0x2b35('0x16'),_0x3948d6,JSON['stringify'](_0x405133));_0x531630(_0x405133);})[_0x2b35('0x20')](function(_0x2547e8){logger['error'](_0x2b35('0x16'),_0x2547e8['message'],_0x3948d6);_0x8158f8(_0x37e141['error'](0x1f4,_0x2547e8[_0x2b35('0x13')]));});});};exports[_0x2b35('0x21')]=function(_0x1698d0){var _0x55d734=this;return new Promise(function(_0x3867f0,_0x1704c3){return db[_0x2b35('0x17')][_0x2b35('0x22')]({'raw':_0x1698d0[_0x2b35('0x18')]?_0x1698d0['options'][_0x2b35('0x19')]===undefined?!![]:![]:!![],'where':_0x1698d0[_0x2b35('0x18')]?_0x1698d0[_0x2b35('0x18')][_0x2b35('0x1a')]||null:null,'attributes':_0x1698d0[_0x2b35('0x18')]?_0x1698d0['options'][_0x2b35('0x1e')]||null:null,'include':_0x1698d0[_0x2b35('0x18')]?_0x1698d0[_0x2b35('0x18')]['include']?_[_0x2b35('0x1f')](_0x1698d0[_0x2b35('0x18')]['include'],function(_0xf8d275){return{'model':db[_0xf8d275[_0x2b35('0x1d')]],'as':_0xf8d275['as'],'attributes':_0xf8d275['attributes'],'include':_0xf8d275['include']?_[_0x2b35('0x1f')](_0xf8d275[_0x2b35('0x1c')],function(_0x24d3ec){return{'model':db[_0x24d3ec[_0x2b35('0x1d')]],'as':_0x24d3ec['as'],'attributes':_0x24d3ec[_0x2b35('0x1e')],'include':_0x24d3ec[_0x2b35('0x1c')]?_[_0x2b35('0x1f')](_0x24d3ec['include'],function(_0xe5b945){return{'model':db[_0xe5b945['model']],'as':_0xe5b945['as'],'attributes':_0xe5b945[_0x2b35('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x2b35('0xc')](function(_0x3cf691){logger[_0x2b35('0x14')](_0x2b35('0x21'),_0x1698d0);logger[_0x2b35('0xf')](_0x2b35('0x21'),_0x1698d0,JSON[_0x2b35('0x11')](_0x3cf691));_0x3867f0(_0x3cf691);})[_0x2b35('0x20')](function(_0x241ddf){logger['error']('ShowFaxQueue',_0x241ddf['message'],_0x1698d0);_0x1704c3(_0x55d734[_0x2b35('0x12')](0x1f4,_0x241ddf[_0x2b35('0x13')]));});});};
\ No newline at end of file
index dcde718..b45564d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4939=['update','emit','removeListener','register','length','./faxQueue.events','save'];(function(_0x46efd7,_0x43f84d){var _0x5637e4=function(_0x54e078){while(--_0x54e078){_0x46efd7['push'](_0x46efd7['shift']());}};_0x5637e4(++_0x43f84d);}(_0x4939,0x1a9));var _0x9493=function(_0x1ce807,_0xe56287){_0x1ce807=_0x1ce807-0x0;var _0xd4c776=_0x4939[_0x1ce807];return _0xd4c776;};'use strict';var FaxQueueEvents=require(_0x9493('0x0'));var events=[_0x9493('0x1'),'remove',_0x9493('0x2')];function createListener(_0x572cf0,_0x40a46e){return function(_0x7822c7){_0x40a46e[_0x9493('0x3')](_0x572cf0,_0x7822c7);};}function removeListener(_0x151fd2,_0x77b9e5){return function(){FaxQueueEvents[_0x9493('0x4')](_0x151fd2,_0x77b9e5);};}exports[_0x9493('0x5')]=function(_0x2acd57){for(var _0x35a176=0x0,_0x36c07f=events[_0x9493('0x6')];_0x35a176<_0x36c07f;_0x35a176++){var _0x4518b0=events[_0x35a176];var _0x33fa4a=createListener('faxQueue:'+_0x4518b0,_0x2acd57);FaxQueueEvents['on'](_0x4518b0,_0x33fa4a);}};
\ No newline at end of file
+var _0x6be5=['faxQueue:','./faxQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0x6be5,0x71));var _0x56be=function(_0x1b4ec9,_0x9f3510){_0x1b4ec9=_0x1b4ec9-0x0;var _0x2b1ebf=_0x6be5[_0x1b4ec9];return _0x2b1ebf;};'use strict';var FaxQueueEvents=require(_0x56be('0x0'));var events=[_0x56be('0x1'),_0x56be('0x2'),_0x56be('0x3')];function createListener(_0x2c51d5,_0x2611d2){return function(_0x1a1355){_0x2611d2[_0x56be('0x4')](_0x2c51d5,_0x1a1355);};}function removeListener(_0x30e28b,_0x235ad1){return function(){FaxQueueEvents[_0x56be('0x5')](_0x30e28b,_0x235ad1);};}exports[_0x56be('0x6')]=function(_0x5929b6){for(var _0x1b55fe=0x0,_0x59d5c1=events['length'];_0x1b55fe<_0x59d5c1;_0x1b55fe++){var _0x1faa2c=events[_0x1b55fe];var _0x26b451=createListener(_0x56be('0x7')+_0x1faa2c,_0x5929b6);FaxQueueEvents['on'](_0x1faa2c,_0x26b451);}};
\ No newline at end of file
index 3701ef6..9ab9835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['index','/describe','describe','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','create','addTeams','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','multer','express','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x5586b6,_0x2d57ac){var _0x261c5d=function(_0x6ab149){while(--_0x6ab149){_0x5586b6['push'](_0x5586b6['shift']());}};_0x261c5d(++_0x2d57ac);}(_0x6a55,0xdb));var _0x56a5=function(_0x149a9b,_0x5bb275){_0x149a9b=_0x149a9b-0x0;var _0x2c2bf6=_0x6a55[_0x149a9b];return _0x2c2bf6;};'use strict';var multer=require(_0x56a5('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x56a5('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x56a5('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x56a5('0x3'));var controller=require('./faxQueue.controller');router[_0x56a5('0x4')]('/',auth[_0x56a5('0x5')](),controller[_0x56a5('0x6')]);router[_0x56a5('0x4')](_0x56a5('0x7'),auth[_0x56a5('0x5')](),controller[_0x56a5('0x8')]);router[_0x56a5('0x4')]('/:id',auth[_0x56a5('0x5')](),controller[_0x56a5('0x9')]);router[_0x56a5('0x4')](_0x56a5('0xa'),auth[_0x56a5('0x5')](),controller[_0x56a5('0xb')]);router[_0x56a5('0x4')](_0x56a5('0xc'),auth[_0x56a5('0x5')](),controller['getTeams']);router['get'](_0x56a5('0xd'),auth[_0x56a5('0x5')](),controller[_0x56a5('0xe')]);router[_0x56a5('0xf')]('/',auth[_0x56a5('0x5')](),controller[_0x56a5('0x10')]);router['post']('/:id/teams',auth[_0x56a5('0x5')](),controller[_0x56a5('0x11')]);router[_0x56a5('0xf')](_0x56a5('0xd'),auth[_0x56a5('0x5')](),controller[_0x56a5('0x12')]);router[_0x56a5('0x13')]('/:id',auth[_0x56a5('0x5')](),controller['update']);router[_0x56a5('0x14')]('/:id',auth[_0x56a5('0x5')](),controller[_0x56a5('0x15')]);router[_0x56a5('0x14')](_0x56a5('0xc'),auth[_0x56a5('0x5')](),controller[_0x56a5('0x16')]);router[_0x56a5('0x14')]('/:id/users',auth[_0x56a5('0x5')](),controller[_0x56a5('0x17')]);module[_0x56a5('0x18')]=router;
\ No newline at end of file
+var _0x2aa3=['put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents'];(function(_0x339f67,_0x3eef63){var _0x9d6b2=function(_0x260f5c){while(--_0x260f5c){_0x339f67['push'](_0x339f67['shift']());}};_0x9d6b2(++_0x3eef63);}(_0x2aa3,0x83));var _0x32aa=function(_0x40acf6,_0x306420){_0x40acf6=_0x40acf6-0x0;var _0xa91bad=_0x2aa3[_0x40acf6];return _0xa91bad;};'use strict';var multer=require(_0x32aa('0x0'));var util=require(_0x32aa('0x1'));var path=require(_0x32aa('0x2'));var timeout=require(_0x32aa('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x32aa('0x4'));var auth=require(_0x32aa('0x5'));var interaction=require(_0x32aa('0x6'));var config=require(_0x32aa('0x7'));var controller=require(_0x32aa('0x8'));router[_0x32aa('0x9')]('/',auth['isAuthenticated'](),controller[_0x32aa('0xa')]);router[_0x32aa('0x9')](_0x32aa('0xb'),auth[_0x32aa('0xc')](),controller[_0x32aa('0xd')]);router[_0x32aa('0x9')](_0x32aa('0xe'),auth[_0x32aa('0xc')](),controller['show']);router[_0x32aa('0x9')]('/:id/members',auth[_0x32aa('0xc')](),controller[_0x32aa('0xf')]);router[_0x32aa('0x9')](_0x32aa('0x10'),auth['isAuthenticated'](),controller[_0x32aa('0x11')]);router[_0x32aa('0x9')](_0x32aa('0x12'),auth['isAuthenticated'](),controller[_0x32aa('0x13')]);router[_0x32aa('0x14')]('/',auth[_0x32aa('0xc')](),controller[_0x32aa('0x15')]);router[_0x32aa('0x14')](_0x32aa('0x10'),auth[_0x32aa('0xc')](),controller[_0x32aa('0x16')]);router['post'](_0x32aa('0x12'),auth[_0x32aa('0xc')](),controller[_0x32aa('0x17')]);router[_0x32aa('0x18')](_0x32aa('0xe'),auth['isAuthenticated'](),controller[_0x32aa('0x19')]);router[_0x32aa('0x1a')](_0x32aa('0xe'),auth[_0x32aa('0xc')](),controller[_0x32aa('0x1b')]);router['delete']('/:id/teams',auth[_0x32aa('0xc')](),controller[_0x32aa('0x1c')]);router[_0x32aa('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0x32aa('0x1d')]);module[_0x32aa('0x1e')]=router;
\ No newline at end of file
index 20c7d87..146c417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8c3=['DATE','moment','exports','STRING'];(function(_0x3559c6,_0x50b3aa){var _0x28299e=function(_0x3d035b){while(--_0x3d035b){_0x3559c6['push'](_0x3559c6['shift']());}};_0x28299e(++_0x50b3aa);}(_0xe8c3,0x19d));var _0x3e8c=function(_0x211087,_0x354fdd){_0x211087=_0x211087-0x0;var _0x2a581f=_0xe8c3[_0x211087];return _0x2a581f;};'use strict';var moment=require(_0x3e8c('0x0'));var Sequelize=require('sequelize');module[_0x3e8c('0x1')]={'uniqueid':{'type':Sequelize[_0x3e8c('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3e8c('0x2')]},'joinAt':{'type':Sequelize[_0x3e8c('0x3')]},'leaveAt':{'type':Sequelize[_0x3e8c('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x3e8c('0x3')]},'reason':{'type':Sequelize[_0x3e8c('0x2')]}};
\ No newline at end of file
+var _0xe2ac=['STRING','DATE','moment','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe2ac,0xfc));var _0xce2a=function(_0x5e2152,_0x172f3d){_0x5e2152=_0x5e2152-0x0;var _0x5ddcf6=_0xe2ac[_0x5e2152];return _0x5ddcf6;};'use strict';var moment=require(_0xce2a('0x0'));var Sequelize=require(_0xce2a('0x1'));module[_0xce2a('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xce2a('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xce2a('0x4')]},'acceptAt':{'type':Sequelize[_0xce2a('0x4')]},'exitAt':{'type':Sequelize[_0xce2a('0x4')]},'reason':{'type':Sequelize[_0xce2a('0x3')]}};
\ No newline at end of file
index 42da5dd..3706bad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3164=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','FaxQueueReport','include','rows','catch','show','params','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0xaa181,_0x57068f){var _0x32f309=function(_0x59ac2c){while(--_0x59ac2c){_0xaa181['push'](_0xaa181['shift']());}};_0x32f309(++_0x57068f);}(_0x3164,0x182));var _0x4316=function(_0x466e6b,_0x4053fd){_0x466e6b=_0x466e6b-0x0;var _0x118deb=_0x3164[_0x466e6b];return _0x118deb;};'use strict';var emlformat=require(_0x4316('0x0'));var rimraf=require(_0x4316('0x1'));var zipdir=require(_0x4316('0x2'));var jsonpatch=require(_0x4316('0x3'));var rp=require(_0x4316('0x4'));var moment=require('moment');var BPromise=require(_0x4316('0x5'));var Mustache=require(_0x4316('0x6'));var util=require(_0x4316('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4316('0x8'));var ejs=require(_0x4316('0x9'));var fs=require('fs');var fs_extra=require(_0x4316('0xa'));var _=require(_0x4316('0xb'));var squel=require(_0x4316('0xc'));var crypto=require(_0x4316('0xd'));var jsforce=require(_0x4316('0xe'));var deskjs=require(_0x4316('0xf'));var toCsv=require(_0x4316('0x8'));var querystring=require(_0x4316('0x10'));var Papa=require(_0x4316('0x11'));var Redis=require(_0x4316('0x12'));var authService=require(_0x4316('0x13'));var qs=require(_0x4316('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4316('0x15'));var logger=require(_0x4316('0x16'))(_0x4316('0x17'));var utils=require(_0x4316('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x4316('0x19'));var db=require(_0x4316('0x1a'))['db'];function respondWithStatusCode(_0x1e8f1a,_0x2a1f2c){_0x2a1f2c=_0x2a1f2c||0xcc;return function(_0x5cf490){if(_0x5cf490){return _0x1e8f1a[_0x4316('0x1b')](_0x2a1f2c);}return _0x1e8f1a['status'](_0x2a1f2c)['end']();};}function respondWithResult(_0x524c3c,_0x266777){_0x266777=_0x266777||0xc8;return function(_0x3bb6cf){if(_0x3bb6cf){return _0x524c3c['status'](_0x266777)[_0x4316('0x1c')](_0x3bb6cf);}};}function respondWithFilteredResult(_0x486a64,_0x133121){return function(_0x3e9ab8){if(_0x3e9ab8){var _0x211d87=typeof _0x133121[_0x4316('0x1d')]===_0x4316('0x1e')&&typeof _0x133121[_0x4316('0x1f')]===_0x4316('0x1e');var _0x38e68c=_0x3e9ab8[_0x4316('0x20')];var _0x3bf044=_0x211d87?0x0:_0x133121['offset'];var _0x43069f=_0x211d87?_0x3e9ab8[_0x4316('0x20')]:_0x133121['offset']+_0x133121['limit'];var _0x40f660;if(_0x43069f>=_0x38e68c){_0x43069f=_0x38e68c;_0x40f660=0xc8;}else{_0x40f660=0xce;}_0x486a64[_0x4316('0x21')](_0x40f660);return _0x486a64[_0x4316('0x22')](_0x4316('0x23'),_0x3bf044+'-'+_0x43069f+'/'+_0x38e68c)[_0x4316('0x1c')](_0x3e9ab8);}return null;};}function patchUpdates(_0x5865a3){return function(_0x888097){try{jsonpatch[_0x4316('0x24')](_0x888097,_0x5865a3,!![]);}catch(_0x599c48){return BPromise[_0x4316('0x25')](_0x599c48);}return _0x888097[_0x4316('0x26')]();};}function saveUpdates(_0x38195f,_0x494f82){return function(_0x1736d0){if(_0x1736d0){return _0x1736d0[_0x4316('0x27')](_0x38195f)[_0x4316('0x28')](function(_0x4f42aa){return _0x4f42aa;});}return null;};}function removeEntity(_0x3b994a,_0x3388ae){return function(_0x37043c){if(_0x37043c){return _0x37043c[_0x4316('0x29')]()[_0x4316('0x28')](function(){_0x3b994a[_0x4316('0x21')](0xcc)[_0x4316('0x2a')]();});}};}function handleEntityNotFound(_0x46bd61,_0x184624){return function(_0x43c015){if(!_0x43c015){_0x46bd61[_0x4316('0x1b')](0x194);}return _0x43c015;};}function handleError(_0x40ca68,_0x89e0d7){_0x89e0d7=_0x89e0d7||0x1f4;return function(_0x1f7391){logger[_0x4316('0x2b')](_0x1f7391[_0x4316('0x2c')]);if(_0x1f7391[_0x4316('0x2d')]){delete _0x1f7391['name'];}_0x40ca68['status'](_0x89e0d7)[_0x4316('0x2e')](_0x1f7391);};}exports[_0x4316('0x2f')]=function(_0xa8dd01,_0x334f61){var _0xa1cb87={},_0x55cfb2={},_0xf66a01={'count':0x0,'rows':[]};var _0x4b13aa=_[_0x4316('0x30')](db['FaxQueueReport'][_0x4316('0x31')],function(_0x50e099){return{'name':_0x50e099[_0x4316('0x32')],'type':_0x50e099[_0x4316('0x33')]['key']};});_0x55cfb2[_0x4316('0x34')]=_['map'](_0x4b13aa,_0x4316('0x2d'));_0x55cfb2[_0x4316('0x35')]=_[_0x4316('0x36')](_0xa8dd01[_0x4316('0x35')]);_0x55cfb2[_0x4316('0x37')]=_[_0x4316('0x38')](_0x55cfb2[_0x4316('0x34')],_0x55cfb2[_0x4316('0x35')]);_0xa1cb87['attributes']=_[_0x4316('0x38')](_0x55cfb2[_0x4316('0x34')],qs['fields'](_0xa8dd01['query'][_0x4316('0x39')]));_0xa1cb87[_0x4316('0x3a')]=_0xa1cb87[_0x4316('0x3a')][_0x4316('0x3b')]?_0xa1cb87[_0x4316('0x3a')]:_0x55cfb2['model'];if(!_0xa8dd01[_0x4316('0x35')][_0x4316('0x3c')](_0x4316('0x3d'))){_0xa1cb87[_0x4316('0x1f')]=qs[_0x4316('0x1f')](_0xa8dd01[_0x4316('0x35')]['limit']);_0xa1cb87[_0x4316('0x1d')]=qs['offset'](_0xa8dd01[_0x4316('0x35')]['offset']);}_0xa1cb87[_0x4316('0x3e')]=qs[_0x4316('0x3f')](_0xa8dd01[_0x4316('0x35')][_0x4316('0x3f')]);_0xa1cb87['where']=qs[_0x4316('0x37')](_[_0x4316('0x40')](_0xa8dd01['query'],_0x55cfb2[_0x4316('0x37')]),_0x4b13aa);if(_0xa8dd01[_0x4316('0x35')][_0x4316('0x41')]){_0xa1cb87['where']=_[_0x4316('0x42')](_0xa1cb87[_0x4316('0x43')],{'$or':_[_0x4316('0x30')](_0x4b13aa,function(_0x14994b){if(_0x14994b[_0x4316('0x33')]!==_0x4316('0x44')){var _0xb05f2={};_0xb05f2[_0x14994b[_0x4316('0x2d')]]={'$like':'%'+_0xa8dd01[_0x4316('0x35')][_0x4316('0x41')]+'%'};return _0xb05f2;}})});}_0xa1cb87=_[_0x4316('0x42')]({},_0xa1cb87,_0xa8dd01[_0x4316('0x45')]);var _0x12402c={'where':_0xa1cb87[_0x4316('0x43')]};return db[_0x4316('0x46')][_0x4316('0x20')](_0x12402c)[_0x4316('0x28')](function(_0x1ff4bc){_0xf66a01[_0x4316('0x20')]=_0x1ff4bc;if(_0xa8dd01[_0x4316('0x35')]['includeAll']){_0xa1cb87[_0x4316('0x47')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0xa1cb87);})[_0x4316('0x28')](function(_0xf98933){_0xf66a01[_0x4316('0x48')]=_0xf98933;return _0xf66a01;})['then'](respondWithFilteredResult(_0x334f61,_0xa1cb87))[_0x4316('0x49')](handleError(_0x334f61,null));};exports[_0x4316('0x4a')]=function(_0x51c34a,_0x421fd3){var _0x5a0ba6={'raw':!![],'where':{'id':_0x51c34a[_0x4316('0x4b')]['id']}},_0x410532={};_0x410532[_0x4316('0x34')]=_[_0x4316('0x36')](db['FaxQueueReport'][_0x4316('0x31')]);_0x410532[_0x4316('0x35')]=_[_0x4316('0x36')](_0x51c34a[_0x4316('0x35')]);_0x410532['filters']=_[_0x4316('0x38')](_0x410532[_0x4316('0x34')],_0x410532[_0x4316('0x35')]);_0x5a0ba6[_0x4316('0x3a')]=_['intersection'](_0x410532['model'],qs['fields'](_0x51c34a[_0x4316('0x35')][_0x4316('0x39')]));_0x5a0ba6['attributes']=_0x5a0ba6[_0x4316('0x3a')][_0x4316('0x3b')]?_0x5a0ba6[_0x4316('0x3a')]:_0x410532['model'];if(_0x51c34a['query'][_0x4316('0x4c')]){_0x5a0ba6[_0x4316('0x47')]=[{'all':!![]}];}_0x5a0ba6=_['merge']({},_0x5a0ba6,_0x51c34a['options']);return db['FaxQueueReport'][_0x4316('0x4d')](_0x5a0ba6)[_0x4316('0x28')](handleEntityNotFound(_0x421fd3,null))[_0x4316('0x28')](respondWithResult(_0x421fd3,null))[_0x4316('0x49')](handleError(_0x421fd3,null));};exports[_0x4316('0x4e')]=function(_0x34b967,_0x5c7c86){return db[_0x4316('0x46')][_0x4316('0x4e')](_0x34b967[_0x4316('0x4f')],{})['then'](respondWithResult(_0x5c7c86,0xc9))[_0x4316('0x49')](handleError(_0x5c7c86,null));};exports[_0x4316('0x27')]=function(_0x3ceb88,_0x5e6155){if(_0x3ceb88[_0x4316('0x4f')]['id']){delete _0x3ceb88[_0x4316('0x4f')]['id'];}return db[_0x4316('0x46')][_0x4316('0x4d')]({'where':{'id':_0x3ceb88[_0x4316('0x4b')]['id']}})[_0x4316('0x28')](handleEntityNotFound(_0x5e6155,null))['then'](saveUpdates(_0x3ceb88[_0x4316('0x4f')],null))[_0x4316('0x28')](respondWithResult(_0x5e6155,null))[_0x4316('0x49')](handleError(_0x5e6155,null));};exports[_0x4316('0x29')]=function(_0x56d541,_0x2205f3){return db['FaxQueueReport']['find']({'where':{'id':_0x56d541['params']['id']}})[_0x4316('0x28')](handleEntityNotFound(_0x2205f3,null))['then'](removeEntity(_0x2205f3,null))[_0x4316('0x49')](handleError(_0x2205f3,null));};exports[_0x4316('0x50')]=function(_0x3395dd,_0x1ba86f){return db[_0x4316('0x46')][_0x4316('0x50')]()[_0x4316('0x28')](respondWithResult(_0x1ba86f,null))[_0x4316('0x49')](handleError(_0x1ba86f,null));};
\ No newline at end of file
+var _0x6be1=['rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','update','then','destroy','error','stack','name','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','order','pick','filter','where','merge','VIRTUAL','FaxQueueReport','includeAll','include','findAll','rows','show','rawAttributes','options','find','catch','create','body','params','describe','eml-format'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6be1,0x12f));var _0x16be=function(_0x35dd90,_0x50b06a){_0x35dd90=_0x35dd90-0x0;var _0x1d4dc0=_0x6be1[_0x35dd90];return _0x1d4dc0;};'use strict';var emlformat=require(_0x16be('0x0'));var rimraf=require(_0x16be('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x16be('0x2'));var Mustache=require(_0x16be('0x3'));var util=require(_0x16be('0x4'));var path=require(_0x16be('0x5'));var sox=require(_0x16be('0x6'));var csv=require(_0x16be('0x7'));var ejs=require(_0x16be('0x8'));var fs=require('fs');var fs_extra=require(_0x16be('0x9'));var _=require(_0x16be('0xa'));var squel=require(_0x16be('0xb'));var crypto=require('crypto');var jsforce=require(_0x16be('0xc'));var deskjs=require(_0x16be('0xd'));var toCsv=require(_0x16be('0x7'));var querystring=require(_0x16be('0xe'));var Papa=require(_0x16be('0xf'));var Redis=require(_0x16be('0x10'));var authService=require(_0x16be('0x11'));var qs=require(_0x16be('0x12'));var as=require(_0x16be('0x13'));var hardwareService=require(_0x16be('0x14'));var logger=require(_0x16be('0x15'))(_0x16be('0x16'));var utils=require(_0x16be('0x17'));var config=require(_0x16be('0x18'));var licenseUtil=require(_0x16be('0x19'));var db=require(_0x16be('0x1a'))['db'];function respondWithStatusCode(_0x597c4d,_0x13aa8c){_0x13aa8c=_0x13aa8c||0xcc;return function(_0xb321f1){if(_0xb321f1){return _0x597c4d[_0x16be('0x1b')](_0x13aa8c);}return _0x597c4d[_0x16be('0x1c')](_0x13aa8c)[_0x16be('0x1d')]();};}function respondWithResult(_0x5b40b5,_0x16e9f1){_0x16e9f1=_0x16e9f1||0xc8;return function(_0xcf91fc){if(_0xcf91fc){return _0x5b40b5['status'](_0x16e9f1)[_0x16be('0x1e')](_0xcf91fc);}};}function respondWithFilteredResult(_0x5a00e6,_0x557de5){return function(_0x5f3095){if(_0x5f3095){var _0x74e610=typeof _0x557de5[_0x16be('0x1f')]===_0x16be('0x20')&&typeof _0x557de5['limit']===_0x16be('0x20');var _0x4e8072=_0x5f3095[_0x16be('0x21')];var _0x173da3=_0x74e610?0x0:_0x557de5[_0x16be('0x1f')];var _0x26d381=_0x74e610?_0x5f3095['count']:_0x557de5[_0x16be('0x1f')]+_0x557de5[_0x16be('0x22')];var _0x57fcaf;if(_0x26d381>=_0x4e8072){_0x26d381=_0x4e8072;_0x57fcaf=0xc8;}else{_0x57fcaf=0xce;}_0x5a00e6[_0x16be('0x1c')](_0x57fcaf);return _0x5a00e6[_0x16be('0x23')]('Content-Range',_0x173da3+'-'+_0x26d381+'/'+_0x4e8072)[_0x16be('0x1e')](_0x5f3095);}return null;};}function patchUpdates(_0xac15db){return function(_0x5944cc){try{jsonpatch[_0x16be('0x24')](_0x5944cc,_0xac15db,!![]);}catch(_0x2ade6d){return BPromise['reject'](_0x2ade6d);}return _0x5944cc['save']();};}function saveUpdates(_0x2975cc,_0xd99f60){return function(_0x57f0fe){if(_0x57f0fe){return _0x57f0fe[_0x16be('0x25')](_0x2975cc)[_0x16be('0x26')](function(_0x410dcd){return _0x410dcd;});}return null;};}function removeEntity(_0x110caa,_0x4a966b){return function(_0x71a798){if(_0x71a798){return _0x71a798[_0x16be('0x27')]()['then'](function(){_0x110caa[_0x16be('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e16dc,_0x2c5f97){return function(_0x2feb94){if(!_0x2feb94){_0x4e16dc['sendStatus'](0x194);}return _0x2feb94;};}function handleError(_0x23182c,_0x334bc6){_0x334bc6=_0x334bc6||0x1f4;return function(_0x3cd6cb){logger[_0x16be('0x28')](_0x3cd6cb[_0x16be('0x29')]);if(_0x3cd6cb[_0x16be('0x2a')]){delete _0x3cd6cb[_0x16be('0x2a')];}_0x23182c[_0x16be('0x1c')](_0x334bc6)['send'](_0x3cd6cb);};}exports[_0x16be('0x2b')]=function(_0x5b0921,_0x8f8394){var _0x37d1dd={},_0x132848={},_0x94f5d={'count':0x0,'rows':[]};var _0x19be4f=_[_0x16be('0x2c')](db['FaxQueueReport']['rawAttributes'],function(_0x4545bc){return{'name':_0x4545bc[_0x16be('0x2d')],'type':_0x4545bc[_0x16be('0x2e')][_0x16be('0x2f')]};});_0x132848['model']=_[_0x16be('0x2c')](_0x19be4f,'name');_0x132848[_0x16be('0x30')]=_[_0x16be('0x31')](_0x5b0921[_0x16be('0x30')]);_0x132848[_0x16be('0x32')]=_[_0x16be('0x33')](_0x132848[_0x16be('0x34')],_0x132848['query']);_0x37d1dd[_0x16be('0x35')]=_[_0x16be('0x33')](_0x132848[_0x16be('0x34')],qs['fields'](_0x5b0921['query'][_0x16be('0x36')]));_0x37d1dd[_0x16be('0x35')]=_0x37d1dd[_0x16be('0x35')][_0x16be('0x37')]?_0x37d1dd[_0x16be('0x35')]:_0x132848[_0x16be('0x34')];if(!_0x5b0921[_0x16be('0x30')]['hasOwnProperty']('nolimit')){_0x37d1dd[_0x16be('0x22')]=qs[_0x16be('0x22')](_0x5b0921[_0x16be('0x30')][_0x16be('0x22')]);_0x37d1dd['offset']=qs[_0x16be('0x1f')](_0x5b0921[_0x16be('0x30')][_0x16be('0x1f')]);}_0x37d1dd[_0x16be('0x38')]=qs['sort'](_0x5b0921[_0x16be('0x30')]['sort']);_0x37d1dd['where']=qs[_0x16be('0x32')](_[_0x16be('0x39')](_0x5b0921['query'],_0x132848[_0x16be('0x32')]),_0x19be4f);if(_0x5b0921[_0x16be('0x30')][_0x16be('0x3a')]){_0x37d1dd[_0x16be('0x3b')]=_[_0x16be('0x3c')](_0x37d1dd['where'],{'$or':_[_0x16be('0x2c')](_0x19be4f,function(_0x4bfe0c){if(_0x4bfe0c['type']!==_0x16be('0x3d')){var _0x1fb847={};_0x1fb847[_0x4bfe0c[_0x16be('0x2a')]]={'$like':'%'+_0x5b0921['query'][_0x16be('0x3a')]+'%'};return _0x1fb847;}})});}_0x37d1dd=_[_0x16be('0x3c')]({},_0x37d1dd,_0x5b0921['options']);var _0x8e52f9={'where':_0x37d1dd['where']};return db[_0x16be('0x3e')][_0x16be('0x21')](_0x8e52f9)[_0x16be('0x26')](function(_0x3b05e0){_0x94f5d[_0x16be('0x21')]=_0x3b05e0;if(_0x5b0921[_0x16be('0x30')][_0x16be('0x3f')]){_0x37d1dd[_0x16be('0x40')]=[{'all':!![]}];}return db[_0x16be('0x3e')][_0x16be('0x41')](_0x37d1dd);})['then'](function(_0x3865eb){_0x94f5d[_0x16be('0x42')]=_0x3865eb;return _0x94f5d;})[_0x16be('0x26')](respondWithFilteredResult(_0x8f8394,_0x37d1dd))['catch'](handleError(_0x8f8394,null));};exports[_0x16be('0x43')]=function(_0x2a99cd,_0x1e9e4f){var _0x47b61e={'raw':!![],'where':{'id':_0x2a99cd['params']['id']}},_0x2814c3={};_0x2814c3[_0x16be('0x34')]=_[_0x16be('0x31')](db['FaxQueueReport'][_0x16be('0x44')]);_0x2814c3['query']=_[_0x16be('0x31')](_0x2a99cd['query']);_0x2814c3[_0x16be('0x32')]=_[_0x16be('0x33')](_0x2814c3[_0x16be('0x34')],_0x2814c3['query']);_0x47b61e[_0x16be('0x35')]=_['intersection'](_0x2814c3[_0x16be('0x34')],qs[_0x16be('0x36')](_0x2a99cd['query'][_0x16be('0x36')]));_0x47b61e[_0x16be('0x35')]=_0x47b61e[_0x16be('0x35')][_0x16be('0x37')]?_0x47b61e[_0x16be('0x35')]:_0x2814c3[_0x16be('0x34')];if(_0x2a99cd[_0x16be('0x30')]['includeAll']){_0x47b61e[_0x16be('0x40')]=[{'all':!![]}];}_0x47b61e=_[_0x16be('0x3c')]({},_0x47b61e,_0x2a99cd[_0x16be('0x45')]);return db[_0x16be('0x3e')][_0x16be('0x46')](_0x47b61e)['then'](handleEntityNotFound(_0x1e9e4f,null))[_0x16be('0x26')](respondWithResult(_0x1e9e4f,null))[_0x16be('0x47')](handleError(_0x1e9e4f,null));};exports[_0x16be('0x48')]=function(_0x3561cf,_0x5ce6e9){return db['FaxQueueReport'][_0x16be('0x48')](_0x3561cf[_0x16be('0x49')],{})['then'](respondWithResult(_0x5ce6e9,0xc9))['catch'](handleError(_0x5ce6e9,null));};exports[_0x16be('0x25')]=function(_0x469229,_0x84f107){if(_0x469229[_0x16be('0x49')]['id']){delete _0x469229[_0x16be('0x49')]['id'];}return db[_0x16be('0x3e')][_0x16be('0x46')]({'where':{'id':_0x469229[_0x16be('0x4a')]['id']}})[_0x16be('0x26')](handleEntityNotFound(_0x84f107,null))[_0x16be('0x26')](saveUpdates(_0x469229[_0x16be('0x49')],null))['then'](respondWithResult(_0x84f107,null))[_0x16be('0x47')](handleError(_0x84f107,null));};exports[_0x16be('0x27')]=function(_0x28add6,_0x297aad){return db[_0x16be('0x3e')][_0x16be('0x46')]({'where':{'id':_0x28add6[_0x16be('0x4a')]['id']}})[_0x16be('0x26')](handleEntityNotFound(_0x297aad,null))[_0x16be('0x26')](removeEntity(_0x297aad,null))[_0x16be('0x47')](handleError(_0x297aad,null));};exports['describe']=function(_0x3c70d6,_0x448316){return db[_0x16be('0x3e')][_0x16be('0x4b')]()['then'](respondWithResult(_0x448316,null))[_0x16be('0x47')](handleError(_0x448316,null));};
\ No newline at end of file
index 9eb1233..e353246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x45fb9a,_0x35dfff){var _0x31d7cb=function(_0x57d532){while(--_0x57d532){_0x45fb9a['push'](_0x45fb9a['shift']());}};_0x31d7cb(++_0x35dfff);}(_0xe14b,0x93));var _0xbe14=function(_0x5358cd,_0x293fd6){_0x5358cd=_0x5358cd-0x0;var _0xc144e2=_0xe14b[_0x5358cd];return _0xc144e2;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fab=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport','report_fax_queue','uniqueid','lodash','util','api'];(function(_0x4a2507,_0x5b7a47){var _0x1e964d=function(_0x1de2c3){while(--_0x1de2c3){_0x4a2507['push'](_0x4a2507['shift']());}};_0x1e964d(++_0x5b7a47);}(_0x5fab,0x177));var _0xb5fa=function(_0x251fa4,_0x3d5860){_0x251fa4=_0x251fa4-0x0;var _0x453047=_0x5fab[_0x251fa4];return _0x453047;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[{'name':_0xb5fa('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index af541f8..a840f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab14=['raw','UpdateFaxQueueReport','update','where','attributes','limit','then','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options'];(function(_0x1feec7,_0x4e8577){var _0xb69fad=function(_0x161535){while(--_0x161535){_0x1feec7['push'](_0x1feec7['shift']());}};_0xb69fad(++_0x4e8577);}(_0xab14,0x14b));var _0x4ab1=function(_0x39d2dc,_0x3fd4b0){_0x39d2dc=_0x39d2dc-0x0;var _0x27ac3b=_0xab14[_0x39d2dc];return _0x27ac3b;};'use strict';var _=require(_0x4ab1('0x0'));var util=require(_0x4ab1('0x1'));var moment=require(_0x4ab1('0x2'));var BPromise=require(_0x4ab1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ab1('0x4'));var db=require(_0x4ab1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4ab1('0x6'))(_0x4ab1('0x7'));var config=require(_0x4ab1('0x8'));var jayson=require(_0x4ab1('0x9'));var client=jayson[_0x4ab1('0xa')][_0x4ab1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4719cd,_0x3a715d,_0x1e4e29){return new BPromise(function(_0x81775f,_0x57298d){return client[_0x4ab1('0xc')](_0x4719cd,_0x1e4e29)['then'](function(_0x17775f){logger[_0x4ab1('0xd')](_0x4ab1('0xe'),_0x3a715d,_0x4ab1('0xf'));logger[_0x4ab1('0x10')](_0x4ab1('0x11'),_0x3a715d,'request\x20sent',JSON[_0x4ab1('0x12')](_0x17775f));if(_0x17775f['error']){if(_0x17775f['error'][_0x4ab1('0x13')]===0x1f4){logger[_0x4ab1('0x14')]('FaxQueueReport,\x20%s,\x20%s',_0x3a715d,_0x17775f[_0x4ab1('0x14')][_0x4ab1('0x15')]);return _0x57298d(_0x17775f[_0x4ab1('0x14')][_0x4ab1('0x15')]);}logger[_0x4ab1('0x14')]('FaxQueueReport,\x20%s,\x20%s',_0x3a715d,_0x17775f[_0x4ab1('0x14')][_0x4ab1('0x15')]);return _0x81775f(_0x17775f[_0x4ab1('0x14')]['message']);}else{logger[_0x4ab1('0xd')](_0x4ab1('0xe'),_0x3a715d,_0x4ab1('0xf'));_0x81775f(_0x17775f[_0x4ab1('0x16')][_0x4ab1('0x15')]);}})[_0x4ab1('0x17')](function(_0x304799){logger[_0x4ab1('0x14')](_0x4ab1('0xe'),_0x3a715d,_0x304799);_0x57298d(_0x304799);});});}exports[_0x4ab1('0x18')]=function(_0x52bfd6){var _0x509528=this;return new Promise(function(_0x1b45cd,_0x5368ad){return db[_0x4ab1('0x19')][_0x4ab1('0x1a')](_0x52bfd6[_0x4ab1('0x1b')],{'raw':_0x52bfd6[_0x4ab1('0x1c')]?_0x52bfd6[_0x4ab1('0x1c')][_0x4ab1('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x1fca7f){logger[_0x4ab1('0xd')](_0x4ab1('0x18'),_0x52bfd6);logger[_0x4ab1('0x10')]('CreateFaxQueueReport',_0x52bfd6,JSON[_0x4ab1('0x12')](_0x1fca7f));_0x1b45cd(_0x1fca7f);})['catch'](function(_0x920bd4){logger[_0x4ab1('0x14')]('CreateFaxQueueReport',_0x920bd4[_0x4ab1('0x15')],_0x52bfd6);_0x5368ad(_0x509528[_0x4ab1('0x14')](0x1f4,_0x920bd4['message']));});});};exports[_0x4ab1('0x1e')]=function(_0x1c0b3f){var _0x465b36=this;return new Promise(function(_0x222f27,_0x4c2dfd){return db['FaxQueueReport'][_0x4ab1('0x1f')](_0x1c0b3f[_0x4ab1('0x1b')],{'raw':_0x1c0b3f[_0x4ab1('0x1c')]?_0x1c0b3f[_0x4ab1('0x1c')][_0x4ab1('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c0b3f['options']?_0x1c0b3f[_0x4ab1('0x1c')][_0x4ab1('0x20')]||null:null,'attributes':_0x1c0b3f[_0x4ab1('0x1c')]?_0x1c0b3f[_0x4ab1('0x1c')][_0x4ab1('0x21')]||null:null,'limit':_0x1c0b3f[_0x4ab1('0x1c')]?_0x1c0b3f[_0x4ab1('0x1c')][_0x4ab1('0x22')]||null:null})[_0x4ab1('0x23')](function(_0x26771c){logger['info'](_0x4ab1('0x1e'),_0x1c0b3f);logger[_0x4ab1('0x10')]('UpdateFaxQueueReport',_0x1c0b3f,JSON[_0x4ab1('0x12')](_0x26771c));_0x222f27(_0x26771c);})[_0x4ab1('0x17')](function(_0x4310f6){logger[_0x4ab1('0x14')](_0x4ab1('0x1e'),_0x4310f6[_0x4ab1('0x15')],_0x1c0b3f);_0x4c2dfd(_0x465b36['error'](0x1f4,_0x4310f6[_0x4ab1('0x15')]));});});};
\ No newline at end of file
+var _0xa0bf=['options','raw','limit','UpdateFaxQueueReport','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateFaxQueueReport','FaxQueueReport','create','body','then','debug','update'];(function(_0x1614aa,_0x15f8c6){var _0x11e4bf=function(_0x2dab9f){while(--_0x2dab9f){_0x1614aa['push'](_0x1614aa['shift']());}};_0x11e4bf(++_0x15f8c6);}(_0xa0bf,0xc4));var _0xfa0b=function(_0x5e4541,_0x1c94dc){_0x5e4541=_0x5e4541-0x0;var _0x2ab573=_0xa0bf[_0x5e4541];return _0x2ab573;};'use strict';var _=require('lodash');var util=require(_0xfa0b('0x0'));var moment=require('moment');var BPromise=require(_0xfa0b('0x1'));var rs=require(_0xfa0b('0x2'));var fs=require('fs');var Redis=require(_0xfa0b('0x3'));var db=require(_0xfa0b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xfa0b('0x5'))(_0xfa0b('0x6'));var config=require(_0xfa0b('0x7'));var jayson=require(_0xfa0b('0x8'));var client=jayson[_0xfa0b('0x9')][_0xfa0b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xdfe217,_0x41725c,_0x23bc3f){return new BPromise(function(_0x29254d,_0x4d389a){return client[_0xfa0b('0xb')](_0xdfe217,_0x23bc3f)['then'](function(_0x1366e0){logger[_0xfa0b('0xc')](_0xfa0b('0xd'),_0x41725c,_0xfa0b('0xe'));logger['debug'](_0xfa0b('0xf'),_0x41725c,_0xfa0b('0xe'),JSON[_0xfa0b('0x10')](_0x1366e0));if(_0x1366e0['error']){if(_0x1366e0[_0xfa0b('0x11')][_0xfa0b('0x12')]===0x1f4){logger[_0xfa0b('0x11')](_0xfa0b('0xd'),_0x41725c,_0x1366e0[_0xfa0b('0x11')][_0xfa0b('0x13')]);return _0x4d389a(_0x1366e0[_0xfa0b('0x11')][_0xfa0b('0x13')]);}logger[_0xfa0b('0x11')](_0xfa0b('0xd'),_0x41725c,_0x1366e0['error'][_0xfa0b('0x13')]);return _0x29254d(_0x1366e0['error'][_0xfa0b('0x13')]);}else{logger[_0xfa0b('0xc')](_0xfa0b('0xd'),_0x41725c,_0xfa0b('0xe'));_0x29254d(_0x1366e0['result']['message']);}})[_0xfa0b('0x14')](function(_0x162f24){logger[_0xfa0b('0x11')](_0xfa0b('0xd'),_0x41725c,_0x162f24);_0x4d389a(_0x162f24);});});}exports[_0xfa0b('0x15')]=function(_0x3e652a){var _0x23298b=this;return new Promise(function(_0x96aa93,_0xeb34d2){return db[_0xfa0b('0x16')][_0xfa0b('0x17')](_0x3e652a[_0xfa0b('0x18')],{'raw':_0x3e652a['options']?_0x3e652a['options']['raw']===undefined?!![]:![]:!![]})[_0xfa0b('0x19')](function(_0x5eaec8){logger[_0xfa0b('0xc')](_0xfa0b('0x15'),_0x3e652a);logger[_0xfa0b('0x1a')]('CreateFaxQueueReport',_0x3e652a,JSON['stringify'](_0x5eaec8));_0x96aa93(_0x5eaec8);})[_0xfa0b('0x14')](function(_0x25ceaf){logger['error'](_0xfa0b('0x15'),_0x25ceaf[_0xfa0b('0x13')],_0x3e652a);_0xeb34d2(_0x23298b[_0xfa0b('0x11')](0x1f4,_0x25ceaf['message']));});});};exports['UpdateFaxQueueReport']=function(_0x1ae9c6){var _0x2c3bc9=this;return new Promise(function(_0x218f0a,_0xa6aba0){return db[_0xfa0b('0x16')][_0xfa0b('0x1b')](_0x1ae9c6[_0xfa0b('0x18')],{'raw':_0x1ae9c6[_0xfa0b('0x1c')]?_0x1ae9c6[_0xfa0b('0x1c')][_0xfa0b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ae9c6[_0xfa0b('0x1c')]?_0x1ae9c6[_0xfa0b('0x1c')]['where']||null:null,'attributes':_0x1ae9c6[_0xfa0b('0x1c')]?_0x1ae9c6[_0xfa0b('0x1c')]['attributes']||null:null,'limit':_0x1ae9c6[_0xfa0b('0x1c')]?_0x1ae9c6[_0xfa0b('0x1c')][_0xfa0b('0x1e')]||null:null})[_0xfa0b('0x19')](function(_0x218d27){logger[_0xfa0b('0xc')](_0xfa0b('0x1f'),_0x1ae9c6);logger['debug'](_0xfa0b('0x1f'),_0x1ae9c6,JSON[_0xfa0b('0x10')](_0x218d27));_0x218f0a(_0x218d27);})[_0xfa0b('0x14')](function(_0x2fe26c){logger[_0xfa0b('0x11')](_0xfa0b('0x1f'),_0x2fe26c[_0xfa0b('0x13')],_0x1ae9c6);_0xa6aba0(_0x2c3bc9[_0xfa0b('0x11')](0x1f4,_0x2fe26c[_0xfa0b('0x13')]));});});};
\ No newline at end of file
index 405891c..465375a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x606b=['../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','index','/describe','isAuthenticated','describe','show','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x606b,0x125));var _0xb606=function(_0x139c5b,_0x2d1d19){_0x139c5b=_0x139c5b-0x0;var _0x526892=_0x606b[_0x139c5b];return _0x526892;};'use strict';var multer=require(_0xb606('0x0'));var util=require(_0xb606('0x1'));var path=require(_0xb606('0x2'));var timeout=require(_0xb606('0x3'));var express=require(_0xb606('0x4'));var router=express[_0xb606('0x5')]();var fs_extra=require(_0xb606('0x6'));var auth=require(_0xb606('0x7'));var interaction=require(_0xb606('0x8'));var config=require(_0xb606('0x9'));var controller=require(_0xb606('0xa'));router[_0xb606('0xb')]('/',auth['isAuthenticated'](),controller[_0xb606('0xc')]);router['get'](_0xb606('0xd'),auth[_0xb606('0xe')](),controller[_0xb606('0xf')]);router[_0xb606('0xb')]('/:id',auth[_0xb606('0xe')](),controller[_0xb606('0x10')]);router[_0xb606('0x11')]('/',auth[_0xb606('0xe')](),controller[_0xb606('0x12')]);router[_0xb606('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xb606('0x14')]);router[_0xb606('0x15')](_0xb606('0x16'),auth[_0xb606('0xe')](),controller[_0xb606('0x17')]);module[_0xb606('0x18')]=router;
\ No newline at end of file
+var _0xbc76=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4a0b15,_0x54818b){var _0x54f515=function(_0x1338f2){while(--_0x1338f2){_0x4a0b15['push'](_0x4a0b15['shift']());}};_0x54f515(++_0x54818b);}(_0xbc76,0x15b));var _0x6bc7=function(_0x2481ac,_0xd8bae8){_0x2481ac=_0x2481ac-0x0;var _0x29734d=_0xbc76[_0x2481ac];return _0x29734d;};'use strict';var multer=require(_0x6bc7('0x0'));var util=require(_0x6bc7('0x1'));var path=require(_0x6bc7('0x2'));var timeout=require(_0x6bc7('0x3'));var express=require(_0x6bc7('0x4'));var router=express[_0x6bc7('0x5')]();var fs_extra=require(_0x6bc7('0x6'));var auth=require(_0x6bc7('0x7'));var interaction=require(_0x6bc7('0x8'));var config=require(_0x6bc7('0x9'));var controller=require(_0x6bc7('0xa'));router[_0x6bc7('0xb')]('/',auth[_0x6bc7('0xc')](),controller[_0x6bc7('0xd')]);router['get'](_0x6bc7('0xe'),auth[_0x6bc7('0xc')](),controller['describe']);router[_0x6bc7('0xb')](_0x6bc7('0xf'),auth[_0x6bc7('0xc')](),controller[_0x6bc7('0x10')]);router[_0x6bc7('0x11')]('/',auth[_0x6bc7('0xc')](),controller[_0x6bc7('0x12')]);router['put']('/:id',auth[_0x6bc7('0xc')](),controller['update']);router[_0x6bc7('0x13')](_0x6bc7('0xf'),auth[_0x6bc7('0xc')](),controller[_0x6bc7('0x14')]);module[_0x6bc7('0x15')]=router;
\ No newline at end of file
index 20f620a..c83e113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x3cec8c,_0x3f6c1d){var _0x38032e=function(_0x4ef75b){while(--_0x4ef75b){_0x3cec8c['push'](_0x3cec8c['shift']());}};_0x38032e(++_0x3f6c1d);}(_0x9bde,0xe1));var _0xe9bd=function(_0x567aea,_0x74934){_0x567aea=_0x567aea-0x0;var _0x438313=_0x9bde[_0x567aea];return _0x438313;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x5de214,_0x107e9d){var _0x4df627=function(_0x4199e1){while(--_0x4199e1){_0x5de214['push'](_0x5de214['shift']());}};_0x4df627(++_0x107e9d);}(_0x9c44,0x178));var _0x49c4=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x9c44[_0x422905];return _0x33dc6c;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 0d35c1f..7fc0527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5372=['findAll','rows','catch','show','include','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','stack','send','index','map','rawAttributes','fieldName','type','model','name','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','FaxTransferReport'];(function(_0x44a64f,_0x38475c){var _0x52024b=function(_0x2cd055){while(--_0x2cd055){_0x44a64f['push'](_0x44a64f['shift']());}};_0x52024b(++_0x38475c);}(_0x5372,0x1f4));var _0x2537=function(_0xce1284,_0x4ed591){_0xce1284=_0xce1284-0x0;var _0x5d177c=_0x5372[_0xce1284];return _0x5d177c;};'use strict';var emlformat=require(_0x2537('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2537('0x1'));var jsonpatch=require(_0x2537('0x2'));var rp=require(_0x2537('0x3'));var moment=require(_0x2537('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2537('0x5'));var util=require(_0x2537('0x6'));var path=require(_0x2537('0x7'));var sox=require(_0x2537('0x8'));var csv=require(_0x2537('0x9'));var ejs=require(_0x2537('0xa'));var fs=require('fs');var fs_extra=require(_0x2537('0xb'));var _=require('lodash');var squel=require(_0x2537('0xc'));var crypto=require(_0x2537('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2537('0xe'));var toCsv=require(_0x2537('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2537('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2537('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x2537('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0x2537('0x12'))['db'];function respondWithStatusCode(_0x5c6eae,_0x11cfd4){_0x11cfd4=_0x11cfd4||0xcc;return function(_0x5bb15e){if(_0x5bb15e){return _0x5c6eae[_0x2537('0x13')](_0x11cfd4);}return _0x5c6eae[_0x2537('0x14')](_0x11cfd4)['end']();};}function respondWithResult(_0x2866ee,_0x201b1b){_0x201b1b=_0x201b1b||0xc8;return function(_0x5bdb93){if(_0x5bdb93){return _0x2866ee['status'](_0x201b1b)[_0x2537('0x15')](_0x5bdb93);}};}function respondWithFilteredResult(_0x5339dd,_0x4f073c){return function(_0x43858e){if(_0x43858e){var _0x3074e4=typeof _0x4f073c[_0x2537('0x16')]===_0x2537('0x17')&&typeof _0x4f073c[_0x2537('0x18')]===_0x2537('0x17');var _0x59a989=_0x43858e[_0x2537('0x19')];var _0x356fef=_0x3074e4?0x0:_0x4f073c['offset'];var _0x1d370e=_0x3074e4?_0x43858e[_0x2537('0x19')]:_0x4f073c[_0x2537('0x16')]+_0x4f073c[_0x2537('0x18')];var _0x6c3db5;if(_0x1d370e>=_0x59a989){_0x1d370e=_0x59a989;_0x6c3db5=0xc8;}else{_0x6c3db5=0xce;}_0x5339dd[_0x2537('0x14')](_0x6c3db5);return _0x5339dd['set'](_0x2537('0x1a'),_0x356fef+'-'+_0x1d370e+'/'+_0x59a989)[_0x2537('0x15')](_0x43858e);}return null;};}function patchUpdates(_0x40eb8e){return function(_0x5245d9){try{jsonpatch[_0x2537('0x1b')](_0x5245d9,_0x40eb8e,!![]);}catch(_0x31da21){return BPromise[_0x2537('0x1c')](_0x31da21);}return _0x5245d9[_0x2537('0x1d')]();};}function saveUpdates(_0x3c36d7,_0x5953a5){return function(_0xd1129){if(_0xd1129){return _0xd1129[_0x2537('0x1e')](_0x3c36d7)[_0x2537('0x1f')](function(_0x3cab19){return _0x3cab19;});}return null;};}function removeEntity(_0x1943f7,_0x550628){return function(_0x40d95f){if(_0x40d95f){return _0x40d95f[_0x2537('0x20')]()[_0x2537('0x1f')](function(){_0x1943f7[_0x2537('0x14')](0xcc)[_0x2537('0x21')]();});}};}function handleEntityNotFound(_0x297121,_0x24b9d7){return function(_0x2fde42){if(!_0x2fde42){_0x297121[_0x2537('0x13')](0x194);}return _0x2fde42;};}function handleError(_0x4d2898,_0x347556){_0x347556=_0x347556||0x1f4;return function(_0x5638bb){logger['error'](_0x5638bb[_0x2537('0x22')]);if(_0x5638bb['name']){delete _0x5638bb['name'];}_0x4d2898[_0x2537('0x14')](_0x347556)[_0x2537('0x23')](_0x5638bb);};}exports[_0x2537('0x24')]=function(_0x42139d,_0x5d6096){var _0x3434fa={},_0x118c73={},_0x403ae2={'count':0x0,'rows':[]};var _0x16332e=_[_0x2537('0x25')](db['FaxTransferReport'][_0x2537('0x26')],function(_0x2853fc){return{'name':_0x2853fc[_0x2537('0x27')],'type':_0x2853fc[_0x2537('0x28')]['key']};});_0x118c73[_0x2537('0x29')]=_[_0x2537('0x25')](_0x16332e,_0x2537('0x2a'));_0x118c73[_0x2537('0x2b')]=_[_0x2537('0x2c')](_0x42139d[_0x2537('0x2b')]);_0x118c73[_0x2537('0x2d')]=_[_0x2537('0x2e')](_0x118c73[_0x2537('0x29')],_0x118c73[_0x2537('0x2b')]);_0x3434fa['attributes']=_[_0x2537('0x2e')](_0x118c73[_0x2537('0x29')],qs[_0x2537('0x2f')](_0x42139d['query'][_0x2537('0x2f')]));_0x3434fa['attributes']=_0x3434fa[_0x2537('0x30')]['length']?_0x3434fa[_0x2537('0x30')]:_0x118c73[_0x2537('0x29')];if(!_0x42139d[_0x2537('0x2b')][_0x2537('0x31')](_0x2537('0x32'))){_0x3434fa[_0x2537('0x18')]=qs[_0x2537('0x18')](_0x42139d[_0x2537('0x2b')][_0x2537('0x18')]);_0x3434fa['offset']=qs[_0x2537('0x16')](_0x42139d[_0x2537('0x2b')]['offset']);}_0x3434fa[_0x2537('0x33')]=qs[_0x2537('0x34')](_0x42139d['query'][_0x2537('0x34')]);_0x3434fa['where']=qs[_0x2537('0x2d')](_['pick'](_0x42139d[_0x2537('0x2b')],_0x118c73[_0x2537('0x2d')]),_0x16332e);if(_0x42139d['query'][_0x2537('0x35')]){_0x3434fa[_0x2537('0x36')]=_[_0x2537('0x37')](_0x3434fa[_0x2537('0x36')],{'$or':_[_0x2537('0x25')](_0x16332e,function(_0x1e01da){if(_0x1e01da['type']!==_0x2537('0x38')){var _0x21f357={};_0x21f357[_0x1e01da[_0x2537('0x2a')]]={'$like':'%'+_0x42139d[_0x2537('0x2b')][_0x2537('0x35')]+'%'};return _0x21f357;}})});}_0x3434fa=_[_0x2537('0x37')]({},_0x3434fa,_0x42139d[_0x2537('0x39')]);var _0x473b4d={'where':_0x3434fa[_0x2537('0x36')]};return db['FaxTransferReport'][_0x2537('0x19')](_0x473b4d)['then'](function(_0x33c66f){_0x403ae2[_0x2537('0x19')]=_0x33c66f;if(_0x42139d[_0x2537('0x2b')][_0x2537('0x3a')]){_0x3434fa['include']=[{'all':!![]}];}return db[_0x2537('0x3b')][_0x2537('0x3c')](_0x3434fa);})['then'](function(_0x242525){_0x403ae2[_0x2537('0x3d')]=_0x242525;return _0x403ae2;})[_0x2537('0x1f')](respondWithFilteredResult(_0x5d6096,_0x3434fa))[_0x2537('0x3e')](handleError(_0x5d6096,null));};exports[_0x2537('0x3f')]=function(_0x2bc72e,_0x339cae){var _0x23deef={'raw':!![],'where':{'id':_0x2bc72e['params']['id']}},_0x517e0d={};_0x517e0d['model']=_[_0x2537('0x2c')](db['FaxTransferReport'][_0x2537('0x26')]);_0x517e0d[_0x2537('0x2b')]=_[_0x2537('0x2c')](_0x2bc72e['query']);_0x517e0d['filters']=_[_0x2537('0x2e')](_0x517e0d[_0x2537('0x29')],_0x517e0d[_0x2537('0x2b')]);_0x23deef['attributes']=_['intersection'](_0x517e0d[_0x2537('0x29')],qs['fields'](_0x2bc72e['query'][_0x2537('0x2f')]));_0x23deef[_0x2537('0x30')]=_0x23deef[_0x2537('0x30')]['length']?_0x23deef[_0x2537('0x30')]:_0x517e0d[_0x2537('0x29')];if(_0x2bc72e[_0x2537('0x2b')][_0x2537('0x3a')]){_0x23deef[_0x2537('0x40')]=[{'all':!![]}];}_0x23deef=_[_0x2537('0x37')]({},_0x23deef,_0x2bc72e[_0x2537('0x39')]);return db[_0x2537('0x3b')][_0x2537('0x41')](_0x23deef)[_0x2537('0x1f')](handleEntityNotFound(_0x339cae,null))[_0x2537('0x1f')](respondWithResult(_0x339cae,null))[_0x2537('0x3e')](handleError(_0x339cae,null));};exports[_0x2537('0x42')]=function(_0x32ddd4,_0x35bfce){return db[_0x2537('0x3b')]['create'](_0x32ddd4['body'],{})['then'](respondWithResult(_0x35bfce,0xc9))[_0x2537('0x3e')](handleError(_0x35bfce,null));};exports[_0x2537('0x1e')]=function(_0x1442ce,_0x328b38){if(_0x1442ce[_0x2537('0x43')]['id']){delete _0x1442ce['body']['id'];}return db[_0x2537('0x3b')]['find']({'where':{'id':_0x1442ce['params']['id']}})[_0x2537('0x1f')](handleEntityNotFound(_0x328b38,null))[_0x2537('0x1f')](saveUpdates(_0x1442ce[_0x2537('0x43')],null))[_0x2537('0x1f')](respondWithResult(_0x328b38,null))[_0x2537('0x3e')](handleError(_0x328b38,null));};exports[_0x2537('0x20')]=function(_0x13ac07,_0x2ed4ca){return db[_0x2537('0x3b')][_0x2537('0x41')]({'where':{'id':_0x13ac07[_0x2537('0x44')]['id']}})[_0x2537('0x1f')](handleEntityNotFound(_0x2ed4ca,null))[_0x2537('0x1f')](removeEntity(_0x2ed4ca,null))['catch'](handleError(_0x2ed4ca,null));};exports[_0x2537('0x45')]=function(_0x573ddf,_0xed555b){return db[_0x2537('0x3b')][_0x2537('0x45')]()[_0x2537('0x1f')](respondWithResult(_0xed555b,null))[_0x2537('0x3e')](handleError(_0xed555b,null));};
\ No newline at end of file
+var _0xd2a4=['offset','count','set','Content-Range','reject','save','update','destroy','then','status','sendStatus','error','name','index','FaxTransferReport','type','key','model','map','keys','filters','intersection','attributes','fields','length','query','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','undefined','limit'];(function(_0x64390a,_0x1ce939){var _0x2225b8=function(_0xdd5eb3){while(--_0xdd5eb3){_0x64390a['push'](_0x64390a['shift']());}};_0x2225b8(++_0x1ce939);}(_0xd2a4,0x118));var _0x4d2a=function(_0x3db160,_0x37d985){_0x3db160=_0x3db160-0x0;var _0x3bf24e=_0xd2a4[_0x3db160];return _0x3bf24e;};'use strict';var emlformat=require(_0x4d2a('0x0'));var rimraf=require(_0x4d2a('0x1'));var zipdir=require(_0x4d2a('0x2'));var jsonpatch=require(_0x4d2a('0x3'));var rp=require(_0x4d2a('0x4'));var moment=require(_0x4d2a('0x5'));var BPromise=require(_0x4d2a('0x6'));var Mustache=require(_0x4d2a('0x7'));var util=require(_0x4d2a('0x8'));var path=require(_0x4d2a('0x9'));var sox=require(_0x4d2a('0xa'));var csv=require(_0x4d2a('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4d2a('0xc'));var _=require('lodash');var squel=require(_0x4d2a('0xd'));var crypto=require(_0x4d2a('0xe'));var jsforce=require(_0x4d2a('0xf'));var deskjs=require(_0x4d2a('0x10'));var toCsv=require(_0x4d2a('0xb'));var querystring=require(_0x4d2a('0x11'));var Papa=require(_0x4d2a('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4d2a('0x13'));var as=require(_0x4d2a('0x14'));var hardwareService=require(_0x4d2a('0x15'));var logger=require(_0x4d2a('0x16'))(_0x4d2a('0x17'));var utils=require(_0x4d2a('0x18'));var config=require(_0x4d2a('0x19'));var licenseUtil=require(_0x4d2a('0x1a'));var db=require(_0x4d2a('0x1b'))['db'];function respondWithStatusCode(_0x19a463,_0x559f9f){_0x559f9f=_0x559f9f||0xcc;return function(_0x59d76e){if(_0x59d76e){return _0x19a463['sendStatus'](_0x559f9f);}return _0x19a463['status'](_0x559f9f)[_0x4d2a('0x1c')]();};}function respondWithResult(_0x3554a4,_0x4c1c3d){_0x4c1c3d=_0x4c1c3d||0xc8;return function(_0x51e69e){if(_0x51e69e){return _0x3554a4['status'](_0x4c1c3d)[_0x4d2a('0x1d')](_0x51e69e);}};}function respondWithFilteredResult(_0x11e343,_0x415b03){return function(_0x1fadec){if(_0x1fadec){var _0xf4cae5=typeof _0x415b03['offset']===_0x4d2a('0x1e')&&typeof _0x415b03[_0x4d2a('0x1f')]===_0x4d2a('0x1e');var _0x35706c=_0x1fadec['count'];var _0xb3b70d=_0xf4cae5?0x0:_0x415b03[_0x4d2a('0x20')];var _0x35858a=_0xf4cae5?_0x1fadec[_0x4d2a('0x21')]:_0x415b03['offset']+_0x415b03['limit'];var _0x218d47;if(_0x35858a>=_0x35706c){_0x35858a=_0x35706c;_0x218d47=0xc8;}else{_0x218d47=0xce;}_0x11e343['status'](_0x218d47);return _0x11e343[_0x4d2a('0x22')](_0x4d2a('0x23'),_0xb3b70d+'-'+_0x35858a+'/'+_0x35706c)[_0x4d2a('0x1d')](_0x1fadec);}return null;};}function patchUpdates(_0x213e96){return function(_0x4a1025){try{jsonpatch['apply'](_0x4a1025,_0x213e96,!![]);}catch(_0x6856a5){return BPromise[_0x4d2a('0x24')](_0x6856a5);}return _0x4a1025[_0x4d2a('0x25')]();};}function saveUpdates(_0x17954d,_0x2be864){return function(_0x18e4a6){if(_0x18e4a6){return _0x18e4a6[_0x4d2a('0x26')](_0x17954d)['then'](function(_0x484680){return _0x484680;});}return null;};}function removeEntity(_0x2e1066,_0x38311f){return function(_0x764042){if(_0x764042){return _0x764042[_0x4d2a('0x27')]()[_0x4d2a('0x28')](function(){_0x2e1066[_0x4d2a('0x29')](0xcc)[_0x4d2a('0x1c')]();});}};}function handleEntityNotFound(_0x1b0736,_0x23d870){return function(_0x2f59f7){if(!_0x2f59f7){_0x1b0736[_0x4d2a('0x2a')](0x194);}return _0x2f59f7;};}function handleError(_0xb48c69,_0x382073){_0x382073=_0x382073||0x1f4;return function(_0x1c557b){logger[_0x4d2a('0x2b')](_0x1c557b['stack']);if(_0x1c557b[_0x4d2a('0x2c')]){delete _0x1c557b[_0x4d2a('0x2c')];}_0xb48c69[_0x4d2a('0x29')](_0x382073)['send'](_0x1c557b);};}exports[_0x4d2a('0x2d')]=function(_0x547762,_0xf1187d){var _0x506481={},_0x4d7c93={},_0x50bfdd={'count':0x0,'rows':[]};var _0x166168=_['map'](db[_0x4d2a('0x2e')]['rawAttributes'],function(_0x4af7ac){return{'name':_0x4af7ac['fieldName'],'type':_0x4af7ac[_0x4d2a('0x2f')][_0x4d2a('0x30')]};});_0x4d7c93[_0x4d2a('0x31')]=_[_0x4d2a('0x32')](_0x166168,_0x4d2a('0x2c'));_0x4d7c93['query']=_[_0x4d2a('0x33')](_0x547762['query']);_0x4d7c93[_0x4d2a('0x34')]=_[_0x4d2a('0x35')](_0x4d7c93[_0x4d2a('0x31')],_0x4d7c93['query']);_0x506481[_0x4d2a('0x36')]=_['intersection'](_0x4d7c93['model'],qs[_0x4d2a('0x37')](_0x547762['query']['fields']));_0x506481['attributes']=_0x506481[_0x4d2a('0x36')][_0x4d2a('0x38')]?_0x506481[_0x4d2a('0x36')]:_0x4d7c93['model'];if(!_0x547762[_0x4d2a('0x39')]['hasOwnProperty'](_0x4d2a('0x3a'))){_0x506481[_0x4d2a('0x1f')]=qs[_0x4d2a('0x1f')](_0x547762[_0x4d2a('0x39')][_0x4d2a('0x1f')]);_0x506481[_0x4d2a('0x20')]=qs[_0x4d2a('0x20')](_0x547762[_0x4d2a('0x39')][_0x4d2a('0x20')]);}_0x506481[_0x4d2a('0x3b')]=qs['sort'](_0x547762['query'][_0x4d2a('0x3c')]);_0x506481[_0x4d2a('0x3d')]=qs[_0x4d2a('0x34')](_[_0x4d2a('0x3e')](_0x547762[_0x4d2a('0x39')],_0x4d7c93[_0x4d2a('0x34')]),_0x166168);if(_0x547762[_0x4d2a('0x39')]['filter']){_0x506481[_0x4d2a('0x3d')]=_[_0x4d2a('0x3f')](_0x506481['where'],{'$or':_[_0x4d2a('0x32')](_0x166168,function(_0x193f30){if(_0x193f30[_0x4d2a('0x2f')]!==_0x4d2a('0x40')){var _0x50dcbc={};_0x50dcbc[_0x193f30['name']]={'$like':'%'+_0x547762['query']['filter']+'%'};return _0x50dcbc;}})});}_0x506481=_[_0x4d2a('0x3f')]({},_0x506481,_0x547762[_0x4d2a('0x41')]);var _0x168388={'where':_0x506481[_0x4d2a('0x3d')]};return db[_0x4d2a('0x2e')][_0x4d2a('0x21')](_0x168388)[_0x4d2a('0x28')](function(_0x4f714d){_0x50bfdd['count']=_0x4f714d;if(_0x547762[_0x4d2a('0x39')][_0x4d2a('0x42')]){_0x506481[_0x4d2a('0x43')]=[{'all':!![]}];}return db[_0x4d2a('0x2e')][_0x4d2a('0x44')](_0x506481);})['then'](function(_0x12fee4){_0x50bfdd[_0x4d2a('0x45')]=_0x12fee4;return _0x50bfdd;})[_0x4d2a('0x28')](respondWithFilteredResult(_0xf1187d,_0x506481))[_0x4d2a('0x46')](handleError(_0xf1187d,null));};exports[_0x4d2a('0x47')]=function(_0x5ac97a,_0x540f87){var _0x47f73e={'raw':!![],'where':{'id':_0x5ac97a['params']['id']}},_0x5c470={};_0x5c470['model']=_[_0x4d2a('0x33')](db[_0x4d2a('0x2e')][_0x4d2a('0x48')]);_0x5c470[_0x4d2a('0x39')]=_[_0x4d2a('0x33')](_0x5ac97a[_0x4d2a('0x39')]);_0x5c470['filters']=_[_0x4d2a('0x35')](_0x5c470['model'],_0x5c470['query']);_0x47f73e[_0x4d2a('0x36')]=_[_0x4d2a('0x35')](_0x5c470[_0x4d2a('0x31')],qs['fields'](_0x5ac97a['query'][_0x4d2a('0x37')]));_0x47f73e[_0x4d2a('0x36')]=_0x47f73e[_0x4d2a('0x36')]['length']?_0x47f73e['attributes']:_0x5c470['model'];if(_0x5ac97a[_0x4d2a('0x39')][_0x4d2a('0x42')]){_0x47f73e[_0x4d2a('0x43')]=[{'all':!![]}];}_0x47f73e=_['merge']({},_0x47f73e,_0x5ac97a[_0x4d2a('0x41')]);return db[_0x4d2a('0x2e')][_0x4d2a('0x49')](_0x47f73e)['then'](handleEntityNotFound(_0x540f87,null))[_0x4d2a('0x28')](respondWithResult(_0x540f87,null))[_0x4d2a('0x46')](handleError(_0x540f87,null));};exports[_0x4d2a('0x4a')]=function(_0x36ac24,_0x2db62d){return db['FaxTransferReport']['create'](_0x36ac24['body'],{})[_0x4d2a('0x28')](respondWithResult(_0x2db62d,0xc9))['catch'](handleError(_0x2db62d,null));};exports['update']=function(_0x3c5803,_0x2d2d39){if(_0x3c5803[_0x4d2a('0x4b')]['id']){delete _0x3c5803[_0x4d2a('0x4b')]['id'];}return db['FaxTransferReport'][_0x4d2a('0x49')]({'where':{'id':_0x3c5803[_0x4d2a('0x4c')]['id']}})[_0x4d2a('0x28')](handleEntityNotFound(_0x2d2d39,null))[_0x4d2a('0x28')](saveUpdates(_0x3c5803[_0x4d2a('0x4b')],null))[_0x4d2a('0x28')](respondWithResult(_0x2d2d39,null))['catch'](handleError(_0x2d2d39,null));};exports[_0x4d2a('0x27')]=function(_0x4db211,_0x1f173a){return db[_0x4d2a('0x2e')]['find']({'where':{'id':_0x4db211[_0x4d2a('0x4c')]['id']}})[_0x4d2a('0x28')](handleEntityNotFound(_0x1f173a,null))['then'](removeEntity(_0x1f173a,null))['catch'](handleError(_0x1f173a,null));};exports[_0x4d2a('0x4d')]=function(_0x1eb391,_0x2da210){return db[_0x4d2a('0x2e')][_0x4d2a('0x4d')]()[_0x4d2a('0x28')](respondWithResult(_0x2da210,null))[_0x4d2a('0x46')](handleError(_0x2da210,null));};
\ No newline at end of file
index 5a22c40..8aed3bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47cb=['request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','util','../../config/logger','api','moment','bluebird'];(function(_0x3246a6,_0x2a685a){var _0x1df64d=function(_0x4868ad){while(--_0x4868ad){_0x3246a6['push'](_0x3246a6['shift']());}};_0x1df64d(++_0x2a685a);}(_0x47cb,0x10c));var _0xb47c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x47cb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xb47c('0x0'));var logger=require(_0xb47c('0x1'))(_0xb47c('0x2'));var moment=require(_0xb47c('0x3'));var BPromise=require(_0xb47c('0x4'));var rp=require(_0xb47c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb47c('0x6'));var config=require(_0xb47c('0x7'));var attributes=require(_0xb47c('0x8'));module[_0xb47c('0x9')]=function(_0x25cdca,_0x872cf4){return _0x25cdca[_0xb47c('0xa')](_0xb47c('0xb'),attributes,{'tableName':_0xb47c('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ccd=['path','../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x56a020,_0x3065c6){var _0xc4220c=function(_0x2c15d6){while(--_0x2c15d6){_0x56a020['push'](_0x56a020['shift']());}};_0xc4220c(++_0x3065c6);}(_0x8ccd,0x118));var _0xd8cc=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x8ccd[_0x4b7b62];return _0x2280df;};'use strict';var _=require('lodash');var util=require(_0xd8cc('0x0'));var logger=require(_0xd8cc('0x1'))(_0xd8cc('0x2'));var moment=require(_0xd8cc('0x3'));var BPromise=require(_0xd8cc('0x4'));var rp=require(_0xd8cc('0x5'));var fs=require('fs');var path=require(_0xd8cc('0x6'));var rimraf=require('rimraf');var config=require(_0xd8cc('0x7'));var attributes=require(_0xd8cc('0x8'));module['exports']=function(_0x21cc03,_0x29e4e1){return _0x21cc03[_0xd8cc('0x9')](_0xd8cc('0xa'),attributes,{'tableName':_0xd8cc('0xb'),'paranoid':![],'indexes':[{'name':_0xd8cc('0xc'),'fields':[_0xd8cc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 3830da0..3828804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b13=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9b13,0x11c));var _0x39b1=function(_0x3b813b,_0x2cafba){_0x3b813b=_0x3b813b-0x0;var _0x257088=_0x9b13[_0x3b813b];return _0x257088;};'use strict';var _=require(_0x39b1('0x0'));var util=require('util');var moment=require(_0x39b1('0x1'));var BPromise=require(_0x39b1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x39b1('0x3'));var db=require(_0x39b1('0x4'))['db'];var utils=require(_0x39b1('0x5'));var logger=require(_0x39b1('0x6'))(_0x39b1('0x7'));var config=require(_0x39b1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x39b1('0x9')][_0x39b1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9c6c15,_0x3bbfa3,_0x5e2fd8){return new BPromise(function(_0x5432ee,_0x5e8d20){return client['request'](_0x9c6c15,_0x5e2fd8)['then'](function(_0x4a7a5e){logger['info'](_0x39b1('0xb'),_0x3bbfa3,_0x39b1('0xc'));logger[_0x39b1('0xd')](_0x39b1('0xe'),_0x3bbfa3,'request\x20sent',JSON[_0x39b1('0xf')](_0x4a7a5e));if(_0x4a7a5e[_0x39b1('0x10')]){if(_0x4a7a5e[_0x39b1('0x10')][_0x39b1('0x11')]===0x1f4){logger['error'](_0x39b1('0xb'),_0x3bbfa3,_0x4a7a5e[_0x39b1('0x10')]['message']);return _0x5e8d20(_0x4a7a5e[_0x39b1('0x10')][_0x39b1('0x12')]);}logger[_0x39b1('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x3bbfa3,_0x4a7a5e[_0x39b1('0x10')][_0x39b1('0x12')]);return _0x5432ee(_0x4a7a5e[_0x39b1('0x10')]['message']);}else{logger[_0x39b1('0x13')]('FaxTransferReport,\x20%s,\x20%s',_0x3bbfa3,_0x39b1('0xc'));_0x5432ee(_0x4a7a5e[_0x39b1('0x14')][_0x39b1('0x12')]);}})[_0x39b1('0x15')](function(_0x41fe5a){logger['error'](_0x39b1('0xb'),_0x3bbfa3,_0x41fe5a);_0x5e8d20(_0x41fe5a);});});}
\ No newline at end of file
+var _0x3508=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','bluebird','ioredis','../../mysqldb'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3508,0x19e));var _0x8350=function(_0x55dda9,_0x249753){_0x55dda9=_0x55dda9-0x0;var _0x42dc29=_0x3508[_0x55dda9];return _0x42dc29;};'use strict';var _=require(_0x8350('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8350('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8350('0x2'));var db=require(_0x8350('0x3'))['db'];var utils=require(_0x8350('0x4'));var logger=require(_0x8350('0x5'))(_0x8350('0x6'));var config=require(_0x8350('0x7'));var jayson=require(_0x8350('0x8'));var client=jayson['client'][_0x8350('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x38c3dc,_0xcaa520,_0x35a21a){return new BPromise(function(_0x383469,_0x2bb68a){return client[_0x8350('0xa')](_0x38c3dc,_0x35a21a)[_0x8350('0xb')](function(_0x334ff8){logger[_0x8350('0xc')](_0x8350('0xd'),_0xcaa520,_0x8350('0xe'));logger[_0x8350('0xf')](_0x8350('0x10'),_0xcaa520,'request\x20sent',JSON['stringify'](_0x334ff8));if(_0x334ff8[_0x8350('0x11')]){if(_0x334ff8[_0x8350('0x11')][_0x8350('0x12')]===0x1f4){logger['error'](_0x8350('0xd'),_0xcaa520,_0x334ff8['error'][_0x8350('0x13')]);return _0x2bb68a(_0x334ff8['error'][_0x8350('0x13')]);}logger[_0x8350('0x11')](_0x8350('0xd'),_0xcaa520,_0x334ff8[_0x8350('0x11')][_0x8350('0x13')]);return _0x383469(_0x334ff8['error'][_0x8350('0x13')]);}else{logger[_0x8350('0xc')](_0x8350('0xd'),_0xcaa520,_0x8350('0xe'));_0x383469(_0x334ff8[_0x8350('0x14')][_0x8350('0x13')]);}})[_0x8350('0x15')](function(_0x41ee73){logger[_0x8350('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0xcaa520,_0x41ee73);_0x2bb68a(_0x41ee73);});});}
\ No newline at end of file
index a91f639..44d9d92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe91=['post','create','put','/:id','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x8af43a,_0x2398c5){var _0x2ab58c=function(_0x28bfe6){while(--_0x28bfe6){_0x8af43a['push'](_0x8af43a['shift']());}};_0x2ab58c(++_0x2398c5);}(_0xfe91,0xe2));var _0x1fe9=function(_0xfb42e6,_0x5f5d4b){_0xfb42e6=_0xfb42e6-0x0;var _0x27265b=_0xfe91[_0xfb42e6];return _0x27265b;};'use strict';var multer=require(_0x1fe9('0x0'));var util=require(_0x1fe9('0x1'));var path=require(_0x1fe9('0x2'));var timeout=require('connect-timeout');var express=require(_0x1fe9('0x3'));var router=express[_0x1fe9('0x4')]();var fs_extra=require(_0x1fe9('0x5'));var auth=require(_0x1fe9('0x6'));var interaction=require(_0x1fe9('0x7'));var config=require(_0x1fe9('0x8'));var controller=require(_0x1fe9('0x9'));router[_0x1fe9('0xa')]('/',auth[_0x1fe9('0xb')](),controller[_0x1fe9('0xc')]);router[_0x1fe9('0xa')](_0x1fe9('0xd'),auth[_0x1fe9('0xb')](),controller[_0x1fe9('0xe')]);router[_0x1fe9('0xa')]('/:id',auth[_0x1fe9('0xb')](),controller[_0x1fe9('0xf')]);router[_0x1fe9('0x10')]('/',auth[_0x1fe9('0xb')](),controller[_0x1fe9('0x11')]);router[_0x1fe9('0x12')](_0x1fe9('0x13'),auth[_0x1fe9('0xb')](),controller['update']);router[_0x1fe9('0x14')]('/:id',auth[_0x1fe9('0xb')](),controller['destroy']);module[_0x1fe9('0x15')]=router;
\ No newline at end of file
+var _0x9838=['get','index','/describe','describe','isAuthenticated','show','post','create','put','update','/:id','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller'];(function(_0x32475a,_0x3f8a4a){var _0x54f151=function(_0x56100d){while(--_0x56100d){_0x32475a['push'](_0x32475a['shift']());}};_0x54f151(++_0x3f8a4a);}(_0x9838,0x70));var _0x8983=function(_0x37c096,_0x3abf0f){_0x37c096=_0x37c096-0x0;var _0x29c4f3=_0x9838[_0x37c096];return _0x29c4f3;};'use strict';var multer=require('multer');var util=require(_0x8983('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8983('0x1'));var router=express[_0x8983('0x2')]();var fs_extra=require(_0x8983('0x3'));var auth=require(_0x8983('0x4'));var interaction=require(_0x8983('0x5'));var config=require(_0x8983('0x6'));var controller=require(_0x8983('0x7'));router[_0x8983('0x8')]('/',auth['isAuthenticated'](),controller[_0x8983('0x9')]);router[_0x8983('0x8')](_0x8983('0xa'),auth['isAuthenticated'](),controller[_0x8983('0xb')]);router['get']('/:id',auth[_0x8983('0xc')](),controller[_0x8983('0xd')]);router[_0x8983('0xe')]('/',auth[_0x8983('0xc')](),controller[_0x8983('0xf')]);router[_0x8983('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x8983('0x11')]);router['delete'](_0x8983('0x12'),auth[_0x8983('0xc')](),controller[_0x8983('0x13')]);module['exports']=router;
\ No newline at end of file
index 1f7ad37..1ec2e90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7590=['/:id/configurations','getConfigurations','getFields','post','addConfiguration','put','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','./intDeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0x198a5f,_0x2ad4ff){var _0xfd2f50=function(_0x93b452){while(--_0x93b452){_0x198a5f['push'](_0x198a5f['shift']());}};_0xfd2f50(++_0x2ad4ff);}(_0x7590,0xf8));var _0x0759=function(_0xc3ba31,_0x34c038){_0xc3ba31=_0xc3ba31-0x0;var _0x207709=_0x7590[_0xc3ba31];return _0x207709;};'use strict';var multer=require(_0x0759('0x0'));var util=require(_0x0759('0x1'));var path=require(_0x0759('0x2'));var timeout=require('connect-timeout');var express=require(_0x0759('0x3'));var router=express[_0x0759('0x4')]();var fs_extra=require(_0x0759('0x5'));var auth=require(_0x0759('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0759('0x7'));router[_0x0759('0x8')]('/',auth[_0x0759('0x9')](),controller[_0x0759('0xa')]);router['get'](_0x0759('0xb'),auth[_0x0759('0x9')](),controller['show']);router[_0x0759('0x8')](_0x0759('0xc'),auth[_0x0759('0x9')](),controller[_0x0759('0xd')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller[_0x0759('0xe')]);router['post']('/',auth[_0x0759('0x9')](),controller['create']);router[_0x0759('0xf')](_0x0759('0xc'),auth[_0x0759('0x9')](),controller[_0x0759('0x10')]);router[_0x0759('0x11')](_0x0759('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x0759('0x12')](_0x0759('0xb'),auth[_0x0759('0x9')](),controller['destroy']);module[_0x0759('0x13')]=router;
\ No newline at end of file
+var _0x4ead=['/:id','isAuthenticated','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get'];(function(_0x8f3742,_0xe24d13){var _0x54a935=function(_0x380615){while(--_0x380615){_0x8f3742['push'](_0x8f3742['shift']());}};_0x54a935(++_0xe24d13);}(_0x4ead,0x6d));var _0xd4ea=function(_0xdd0313,_0x251c2b){_0xdd0313=_0xdd0313-0x0;var _0x2bd7e8=_0x4ead[_0xdd0313];return _0x2bd7e8;};'use strict';var multer=require('multer');var util=require(_0xd4ea('0x0'));var path=require(_0xd4ea('0x1'));var timeout=require(_0xd4ea('0x2'));var express=require(_0xd4ea('0x3'));var router=express[_0xd4ea('0x4')]();var fs_extra=require(_0xd4ea('0x5'));var auth=require(_0xd4ea('0x6'));var interaction=require(_0xd4ea('0x7'));var config=require(_0xd4ea('0x8'));var controller=require(_0xd4ea('0x9'));router[_0xd4ea('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd4ea('0xa')](_0xd4ea('0xb'),auth[_0xd4ea('0xc')](),controller['show']);router[_0xd4ea('0xa')](_0xd4ea('0xd'),auth[_0xd4ea('0xc')](),controller[_0xd4ea('0xe')]);router[_0xd4ea('0xa')](_0xd4ea('0xf'),auth[_0xd4ea('0xc')](),controller[_0xd4ea('0x10')]);router['post']('/',auth[_0xd4ea('0xc')](),controller[_0xd4ea('0x11')]);router[_0xd4ea('0x12')]('/:id/configurations',auth[_0xd4ea('0xc')](),controller['addConfiguration']);router[_0xd4ea('0x13')](_0xd4ea('0xb'),auth[_0xd4ea('0xc')](),controller[_0xd4ea('0x14')]);router[_0xd4ea('0x15')](_0xd4ea('0xb'),auth['isAuthenticated'](),controller[_0xd4ea('0x16')]);module[_0xd4ea('0x17')]=router;
\ No newline at end of file
index 0a9b29a..b76d890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e4=['basic','integrationTab','sequelize','exports','STRING','ENUM'];(function(_0x4c3ac3,_0x7177d8){var _0xd7ff02=function(_0x5b9ac8){while(--_0x5b9ac8){_0x4c3ac3['push'](_0x4c3ac3['shift']());}};_0xd7ff02(++_0x7177d8);}(_0xb7e4,0xb0));var _0x4b7e=function(_0x336122,_0x4a84a4){_0x336122=_0x336122-0x0;var _0x1319d6=_0xb7e4[_0x336122];return _0x1319d6;};'use strict';var Sequelize=require(_0x4b7e('0x0'));module[_0x4b7e('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4b7e('0x2')]},'username':{'type':Sequelize[_0x4b7e('0x2')]},'remoteUri':{'type':Sequelize[_0x4b7e('0x2')]},'authType':{'type':Sequelize[_0x4b7e('0x3')]('basic'),'defaultValue':_0x4b7e('0x4')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x4b7e('0x2')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x4b7e('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x4b7e('0x5'),'newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x9c1d=['ENUM','basic','integrationTab','sequelize','STRING'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x9c1d,0xc6));var _0xd9c1=function(_0x53f65f,_0x52921d){_0x53f65f=_0x53f65f-0x0;var _0x219f75=_0x9c1d[_0x53f65f];return _0x219f75;};'use strict';var Sequelize=require(_0xd9c1('0x0'));module['exports']={'name':{'type':Sequelize[_0xd9c1('0x1')]},'description':{'type':Sequelize[_0xd9c1('0x1')]},'username':{'type':Sequelize[_0xd9c1('0x1')]},'remoteUri':{'type':Sequelize[_0xd9c1('0x1')]},'authType':{'type':Sequelize[_0xd9c1('0x2')](_0xd9c1('0x3')),'defaultValue':_0xd9c1('0x3')},'password':{'type':Sequelize[_0xd9c1('0x1')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0xd9c1('0x1')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xd9c1('0x1')]},'serverUrl':{'type':Sequelize[_0xd9c1('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xd9c1('0x2')]('integrationTab','newTab'),'defaultValue':_0xd9c1('0x4')}};
\ No newline at end of file
index f965da6..3209397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a52=['substring','format','%s/custom_fields','application/json','headers','%s:%s','toString','base64','_embedded','active','label','test','statusCode','getFields','stringify','Wrong\x20credentials','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','length','create','body','find','params','getConfigurations','pick','AccountId','getSubjects','channel','Descriptions','DeskConfiguration','DeskField','Subjects','priority','findOne','authType','username','password','consumerKey','token','remoteUri','slice'];(function(_0x3704c3,_0x36ab27){var _0x18b94e=function(_0x1289b1){while(--_0x1289b1){_0x3704c3['push'](_0x3704c3['shift']());}};_0x18b94e(++_0x36ab27);}(_0x1a52,0xee));var _0x21a5=function(_0x5c8f37,_0x22f187){_0x5c8f37=_0x5c8f37-0x0;var _0x4171b4=_0x1a52[_0x5c8f37];return _0x4171b4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x21a5('0x0'));var zipdir=require(_0x21a5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x21a5('0x2'));var moment=require(_0x21a5('0x3'));var BPromise=require(_0x21a5('0x4'));var Mustache=require(_0x21a5('0x5'));var util=require(_0x21a5('0x6'));var path=require(_0x21a5('0x7'));var sox=require(_0x21a5('0x8'));var csv=require(_0x21a5('0x9'));var ejs=require(_0x21a5('0xa'));var fs=require('fs');var fs_extra=require(_0x21a5('0xb'));var _=require(_0x21a5('0xc'));var squel=require(_0x21a5('0xd'));var crypto=require(_0x21a5('0xe'));var jsforce=require(_0x21a5('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x21a5('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x21a5('0x10'));var authService=require(_0x21a5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x21a5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x21a5('0x13'))(_0x21a5('0x14'));var utils=require(_0x21a5('0x15'));var config=require(_0x21a5('0x16'));var licenseUtil=require(_0x21a5('0x17'));var db=require(_0x21a5('0x18'))['db'];var integrations=require(_0x21a5('0x19'));function respondWithStatusCode(_0x71bdb,_0x6128fa){_0x6128fa=_0x6128fa||0xcc;return function(_0x105743){if(_0x105743){return _0x71bdb[_0x21a5('0x1a')](_0x6128fa);}return _0x71bdb[_0x21a5('0x1b')](_0x6128fa)[_0x21a5('0x1c')]();};}function respondWithResult(_0x231364,_0x3777b1){_0x3777b1=_0x3777b1||0xc8;return function(_0x48672a){if(_0x48672a){return _0x231364[_0x21a5('0x1b')](_0x3777b1)[_0x21a5('0x1d')](_0x48672a);}};}function respondWithFilteredResult(_0x1e8ee7,_0x492e39){return function(_0x35b30d){if(_0x35b30d){var _0x45a103=typeof _0x492e39[_0x21a5('0x1e')]===_0x21a5('0x1f')&&typeof _0x492e39['limit']===_0x21a5('0x1f');var _0x4c5895=_0x35b30d[_0x21a5('0x20')];var _0x142e10=_0x45a103?0x0:_0x492e39[_0x21a5('0x1e')];var _0x1798bc=_0x45a103?_0x35b30d[_0x21a5('0x20')]:_0x492e39[_0x21a5('0x1e')]+_0x492e39['limit'];var _0x2a41f9;if(_0x1798bc>=_0x4c5895){_0x1798bc=_0x4c5895;_0x2a41f9=0xc8;}else{_0x2a41f9=0xce;}_0x1e8ee7[_0x21a5('0x1b')](_0x2a41f9);return _0x1e8ee7[_0x21a5('0x21')]('Content-Range',_0x142e10+'-'+_0x1798bc+'/'+_0x4c5895)[_0x21a5('0x1d')](_0x35b30d);}return null;};}function patchUpdates(_0x47d35a){return function(_0x3cb266){try{jsonpatch[_0x21a5('0x22')](_0x3cb266,_0x47d35a,!![]);}catch(_0x2fdef3){return BPromise[_0x21a5('0x23')](_0x2fdef3);}return _0x3cb266[_0x21a5('0x24')]();};}function saveUpdates(_0x43faf0,_0x46d219){return function(_0x46c60b){if(_0x46c60b){return _0x46c60b['update'](_0x43faf0)[_0x21a5('0x25')](function(_0x36bb12){return _0x36bb12;});}return null;};}function removeEntity(_0x559164,_0x5180da){return function(_0x1cc668){if(_0x1cc668){return _0x1cc668[_0x21a5('0x26')]()[_0x21a5('0x25')](function(){_0x559164['status'](0xcc)[_0x21a5('0x1c')]();});}};}function handleEntityNotFound(_0x12b455,_0x548c4b){return function(_0x18ce9e){if(!_0x18ce9e){_0x12b455['sendStatus'](0x194);}return _0x18ce9e;};}function handleError(_0x30cce8,_0xb126a4){_0xb126a4=_0xb126a4||0x1f4;return function(_0x1a2e59){logger[_0x21a5('0x27')](_0x1a2e59[_0x21a5('0x28')]);if(_0x1a2e59[_0x21a5('0x29')]){delete _0x1a2e59[_0x21a5('0x29')];}_0x30cce8[_0x21a5('0x1b')](_0xb126a4)[_0x21a5('0x2a')](_0x1a2e59);};}exports[_0x21a5('0x2b')]=function(_0x1e20dc,_0x2d4e9c){var _0x47cc4c={},_0x4ab8d4={},_0x25c9d4={'count':0x0,'rows':[]};var _0x9ea44e=_[_0x21a5('0x2c')](db[_0x21a5('0x2d')][_0x21a5('0x2e')],function(_0x1b7048){return{'name':_0x1b7048[_0x21a5('0x2f')],'type':_0x1b7048[_0x21a5('0x30')][_0x21a5('0x31')]};});_0x4ab8d4[_0x21a5('0x32')]=_[_0x21a5('0x2c')](_0x9ea44e,_0x21a5('0x29'));_0x4ab8d4[_0x21a5('0x33')]=_[_0x21a5('0x34')](_0x1e20dc['query']);_0x4ab8d4['filters']=_[_0x21a5('0x35')](_0x4ab8d4['model'],_0x4ab8d4[_0x21a5('0x33')]);_0x47cc4c[_0x21a5('0x36')]=_[_0x21a5('0x35')](_0x4ab8d4[_0x21a5('0x32')],qs[_0x21a5('0x37')](_0x1e20dc['query']['fields']));_0x47cc4c['attributes']=_0x47cc4c[_0x21a5('0x36')]['length']?_0x47cc4c['attributes']:_0x4ab8d4[_0x21a5('0x32')];if(!_0x1e20dc[_0x21a5('0x33')][_0x21a5('0x38')](_0x21a5('0x39'))){_0x47cc4c['limit']=qs['limit'](_0x1e20dc[_0x21a5('0x33')][_0x21a5('0x3a')]);_0x47cc4c[_0x21a5('0x1e')]=qs['offset'](_0x1e20dc[_0x21a5('0x33')][_0x21a5('0x1e')]);}_0x47cc4c[_0x21a5('0x3b')]=qs[_0x21a5('0x3c')](_0x1e20dc[_0x21a5('0x33')]['sort']);_0x47cc4c[_0x21a5('0x3d')]=qs[_0x21a5('0x3e')](_['pick'](_0x1e20dc[_0x21a5('0x33')],_0x4ab8d4['filters']),_0x9ea44e);if(_0x1e20dc[_0x21a5('0x33')][_0x21a5('0x3f')]){_0x47cc4c['where']=_['merge'](_0x47cc4c['where'],{'$or':_[_0x21a5('0x2c')](_0x9ea44e,function(_0x36ba71){if(_0x36ba71[_0x21a5('0x30')]!==_0x21a5('0x40')){var _0x25e894={};_0x25e894[_0x36ba71[_0x21a5('0x29')]]={'$like':'%'+_0x1e20dc['query']['filter']+'%'};return _0x25e894;}})});}_0x47cc4c=_[_0x21a5('0x41')]({},_0x47cc4c,_0x1e20dc[_0x21a5('0x42')]);var _0x125cd8={'where':_0x47cc4c[_0x21a5('0x3d')]};return db['DeskAccount'][_0x21a5('0x20')](_0x125cd8)[_0x21a5('0x25')](function(_0x5c6efd){_0x25c9d4[_0x21a5('0x20')]=_0x5c6efd;if(_0x1e20dc[_0x21a5('0x33')][_0x21a5('0x43')]){_0x47cc4c[_0x21a5('0x44')]=[{'all':!![]}];}return db[_0x21a5('0x2d')][_0x21a5('0x45')](_0x47cc4c);})['then'](function(_0xd6adbc){_0x25c9d4['rows']=_0xd6adbc;return _0x25c9d4;})[_0x21a5('0x25')](respondWithFilteredResult(_0x2d4e9c,_0x47cc4c))[_0x21a5('0x46')](handleError(_0x2d4e9c,null));};exports[_0x21a5('0x47')]=function(_0x232444,_0x1e4e7f){var _0x2cd12f={'raw':![],'where':{'id':_0x232444['params']['id']}},_0x33ea2e={};_0x33ea2e[_0x21a5('0x32')]=_[_0x21a5('0x34')](db['DeskAccount'][_0x21a5('0x2e')]);_0x33ea2e[_0x21a5('0x33')]=_[_0x21a5('0x34')](_0x232444['query']);_0x33ea2e[_0x21a5('0x3e')]=_['intersection'](_0x33ea2e[_0x21a5('0x32')],_0x33ea2e[_0x21a5('0x33')]);_0x2cd12f[_0x21a5('0x36')]=_['intersection'](_0x33ea2e[_0x21a5('0x32')],qs[_0x21a5('0x37')](_0x232444[_0x21a5('0x33')][_0x21a5('0x37')]));_0x2cd12f[_0x21a5('0x36')]=_0x2cd12f[_0x21a5('0x36')][_0x21a5('0x48')]?_0x2cd12f[_0x21a5('0x36')]:_0x33ea2e[_0x21a5('0x32')];if(_0x232444[_0x21a5('0x33')][_0x21a5('0x43')]){_0x2cd12f[_0x21a5('0x44')]=[{'all':!![]}];}_0x2cd12f=_[_0x21a5('0x41')]({},_0x2cd12f,_0x232444['options']);return db[_0x21a5('0x2d')]['find'](_0x2cd12f)[_0x21a5('0x25')](handleEntityNotFound(_0x1e4e7f,null))[_0x21a5('0x25')](respondWithResult(_0x1e4e7f,null))[_0x21a5('0x46')](handleError(_0x1e4e7f,null));};exports['create']=function(_0x339440,_0x186fc0){return db[_0x21a5('0x2d')][_0x21a5('0x49')](_0x339440[_0x21a5('0x4a')],{})[_0x21a5('0x25')](respondWithResult(_0x186fc0,0xc9))[_0x21a5('0x46')](handleError(_0x186fc0,null));};exports['update']=function(_0x2302a4,_0x4a8393){if(_0x2302a4['body']['id']){delete _0x2302a4[_0x21a5('0x4a')]['id'];}return db[_0x21a5('0x2d')][_0x21a5('0x4b')]({'where':{'id':_0x2302a4['params']['id']}})[_0x21a5('0x25')](handleEntityNotFound(_0x4a8393,null))['then'](saveUpdates(_0x2302a4[_0x21a5('0x4a')],null))[_0x21a5('0x25')](respondWithResult(_0x4a8393,null))['catch'](handleError(_0x4a8393,null));};exports[_0x21a5('0x26')]=function(_0x48c566,_0x5c93c8){return db[_0x21a5('0x2d')]['find']({'where':{'id':_0x48c566[_0x21a5('0x4c')]['id']}})[_0x21a5('0x25')](handleEntityNotFound(_0x5c93c8,null))[_0x21a5('0x25')](removeEntity(_0x5c93c8,null))[_0x21a5('0x46')](handleError(_0x5c93c8,null));};exports[_0x21a5('0x4d')]=function(_0x4b1453,_0x3eb042,_0x579fe7){var _0x10f4f4={};var _0x1c2848={};var _0x53377a;var _0x28473c;return db[_0x21a5('0x2d')]['findOne']({'where':{'id':_0x4b1453[_0x21a5('0x4c')]['id']}})[_0x21a5('0x25')](handleEntityNotFound(_0x3eb042,null))[_0x21a5('0x25')](function(_0x8c0d0a){if(_0x8c0d0a){_0x53377a=_0x8c0d0a;_0x1c2848[_0x21a5('0x32')]=_[_0x21a5('0x34')](db['DeskConfiguration'][_0x21a5('0x2e')]);_0x1c2848[_0x21a5('0x33')]=_[_0x21a5('0x34')](_0x4b1453[_0x21a5('0x33')]);_0x1c2848[_0x21a5('0x3e')]=_[_0x21a5('0x35')](_0x1c2848[_0x21a5('0x32')],_0x1c2848[_0x21a5('0x33')]);_0x10f4f4['attributes']=_[_0x21a5('0x35')](_0x1c2848[_0x21a5('0x32')],qs['fields'](_0x4b1453['query'][_0x21a5('0x37')]));_0x10f4f4[_0x21a5('0x36')]=_0x10f4f4[_0x21a5('0x36')][_0x21a5('0x48')]?_0x10f4f4[_0x21a5('0x36')]:_0x1c2848[_0x21a5('0x32')];_0x10f4f4[_0x21a5('0x3b')]=qs[_0x21a5('0x3c')](_0x4b1453[_0x21a5('0x33')][_0x21a5('0x3c')]);_0x10f4f4['where']=qs[_0x21a5('0x3e')](_[_0x21a5('0x4e')](_0x4b1453['query'],_0x1c2848[_0x21a5('0x3e')]));if(_0x4b1453[_0x21a5('0x33')][_0x21a5('0x3f')]){_0x10f4f4[_0x21a5('0x3d')]=_[_0x21a5('0x41')](_0x10f4f4[_0x21a5('0x3d')],{'$or':_['map'](_0x10f4f4[_0x21a5('0x36')],function(_0x348375){var _0x5e3fc7={};_0x5e3fc7[_0x348375]={'$like':'%'+_0x4b1453[_0x21a5('0x33')]['filter']+'%'};return _0x5e3fc7;})});}_0x10f4f4=_[_0x21a5('0x41')]({},_0x10f4f4,_0x4b1453[_0x21a5('0x42')]);return _0x53377a['getConfigurations'](_0x10f4f4);}})[_0x21a5('0x25')](function(_0x32f160){if(_0x32f160){_0x28473c=_0x32f160[_0x21a5('0x48')];if(!_0x4b1453[_0x21a5('0x33')]['hasOwnProperty'](_0x21a5('0x39'))){_0x10f4f4[_0x21a5('0x3a')]=qs['limit'](_0x4b1453[_0x21a5('0x33')][_0x21a5('0x3a')]);_0x10f4f4[_0x21a5('0x1e')]=qs[_0x21a5('0x1e')](_0x4b1453[_0x21a5('0x33')]['offset']);}return _0x53377a[_0x21a5('0x4d')](_0x10f4f4);}})[_0x21a5('0x25')](function(_0x487189){if(_0x487189){return _0x487189?{'count':_0x28473c,'rows':_0x487189}:null;}})[_0x21a5('0x25')](respondWithResult(_0x3eb042,null))[_0x21a5('0x46')](handleError(_0x3eb042,null));};exports['addConfiguration']=function(_0x27edbe,_0x2850c5,_0x3c6968){if(_0x27edbe[_0x21a5('0x4a')]['id']){delete _0x27edbe[_0x21a5('0x4a')]['id'];}return db[_0x21a5('0x2d')]['findOne']({'where':{'id':_0x27edbe['params']['id']}})[_0x21a5('0x25')](handleEntityNotFound(_0x2850c5,null))[_0x21a5('0x25')](function(_0x4b3b38){if(_0x4b3b38){_0x27edbe['body'][_0x21a5('0x4f')]=_0x4b3b38['id'];_0x27edbe[_0x21a5('0x4a')]['Subjects']=integrations[_0x21a5('0x50')](_0x27edbe['body'][_0x21a5('0x51')],_0x27edbe[_0x21a5('0x4a')]['type']);_0x27edbe['body'][_0x21a5('0x52')]=integrations['getDescriptions'](_0x27edbe[_0x21a5('0x4a')][_0x21a5('0x51')],_0x27edbe['body']['type']);return db[_0x21a5('0x53')][_0x21a5('0x49')](_0x27edbe[_0x21a5('0x4a')],{'include':[{'model':db[_0x21a5('0x54')],'as':_0x21a5('0x55')},{'model':db['DeskField'],'as':_0x21a5('0x52')}]});}return null;})[_0x21a5('0x25')](respondWithResult(_0x2850c5,null))[_0x21a5('0x46')](handleError(_0x2850c5,null));};exports['getFields']=function(_0x2b658f,_0x4ac679,_0x15fcb6){var _0x472397=[{'name':_0x21a5('0x56'),'label':_0x21a5('0x56'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x45bcf2='';return db['DeskAccount'][_0x21a5('0x57')]({'where':{'id':_0x2b658f[_0x21a5('0x4c')]['id']},'attributes':['id','remoteUri',_0x21a5('0x58'),_0x21a5('0x59'),_0x21a5('0x5a'),_0x21a5('0x5b'),'consumerSecret',_0x21a5('0x5c'),'tokenSecret']})[_0x21a5('0x25')](handleEntityNotFound(_0x4ac679,null))[_0x21a5('0x25')](function(_0xd2a3ac){if(_0xd2a3ac){_0x45bcf2=_0xd2a3ac[_0x21a5('0x5d')];var _0x305015=_0x45bcf2[_0x21a5('0x5e')](-0x1);if(_0x305015==='/'){_0x45bcf2=_0x45bcf2[_0x21a5('0x5f')](0x0,_0x45bcf2['lastIndexOf'](_0x305015));}var _0x276b31={'method':'GET','uri':util[_0x21a5('0x60')](_0x21a5('0x61'),_0x45bcf2),'headers':{'Content-Type':_0x21a5('0x62'),'Accept':_0x21a5('0x62')},'json':!![]};if(_0xd2a3ac[_0x21a5('0x58')]==='basic'){_0x276b31[_0x21a5('0x63')]['Authorization']=util[_0x21a5('0x60')]('Basic\x20%s',new Buffer(util['format'](_0x21a5('0x64'),_0xd2a3ac[_0x21a5('0x59')],_0xd2a3ac[_0x21a5('0x5a')]))[_0x21a5('0x65')](_0x21a5('0x66')));}return rp(_0x276b31)[_0x21a5('0x25')](function(_0x313d44){return _0x472397['concat'](_['map'](_0x313d44[_0x21a5('0x67')]['entries'],function(_0x13d379){return{'id':_0x13d379['name'],'name':_0x13d379[_0x21a5('0x29')],'type':_0x13d379['type'],'active':_0x13d379[_0x21a5('0x68')],'label':_0x13d379[_0x21a5('0x69')],'custom':!![]};}));});}})[_0x21a5('0x25')](function(_0x3250cf){return{'count':_0x3250cf['length'],'rows':_0x3250cf};})['then'](respondWithResult(_0x4ac679,null))[_0x21a5('0x46')](function(_0xffc363){var _0x23d7d1=_0x2b658f[_0x21a5('0x33')][_0x21a5('0x6a')]?0x1f4:_0xffc363[_0x21a5('0x6b')]||0x1f4;logger[_0x21a5('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x21a5('0x6c'),_0x23d7d1,JSON[_0x21a5('0x6d')](_0xffc363));delete _0xffc363[_0x21a5('0x29')];if(_0x23d7d1===0x191){_0x23d7d1=0x190;}_0x4ac679[_0x21a5('0x1b')](_0x23d7d1)['send'](_0x2b658f['query'][_0x21a5('0x6a')]?{'message':_0x21a5('0x6e'),'statusCode':_0xffc363[_0x21a5('0x6b')]}:_0xffc363);});};
\ No newline at end of file
+var _0xaa03=['find','getConfigurations','findOne','DeskConfiguration','addConfiguration','Subjects','getSubjects','getDescriptions','DeskField','getFields','remoteUri','authType','username','consumerKey','consumerSecret','token','tokenSecret','slice','lastIndexOf','GET','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','format','%s:%s','password','toString','base64','concat','_embedded','entries','label','test','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','index','map','DeskAccount','fieldName','key','model','name','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body'];(function(_0xe2ac3e,_0x2e1c1f){var _0x4ba245=function(_0xb3fe9c){while(--_0xb3fe9c){_0xe2ac3e['push'](_0xe2ac3e['shift']());}};_0x4ba245(++_0x2e1c1f);}(_0xaa03,0x9d));var _0x3aa0=function(_0x108063,_0x327c5d){_0x108063=_0x108063-0x0;var _0x37bb4d=_0xaa03[_0x108063];return _0x37bb4d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3aa0('0x0'));var zipdir=require(_0x3aa0('0x1'));var jsonpatch=require(_0x3aa0('0x2'));var rp=require(_0x3aa0('0x3'));var moment=require(_0x3aa0('0x4'));var BPromise=require(_0x3aa0('0x5'));var Mustache=require(_0x3aa0('0x6'));var util=require('util');var path=require(_0x3aa0('0x7'));var sox=require('sox');var csv=require(_0x3aa0('0x8'));var ejs=require(_0x3aa0('0x9'));var fs=require('fs');var fs_extra=require(_0x3aa0('0xa'));var _=require(_0x3aa0('0xb'));var squel=require(_0x3aa0('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3aa0('0xd'));var toCsv=require(_0x3aa0('0x8'));var querystring=require(_0x3aa0('0xe'));var Papa=require(_0x3aa0('0xf'));var Redis=require(_0x3aa0('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x3aa0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3aa0('0x12'));var logger=require('../../config/logger')(_0x3aa0('0x13'));var utils=require(_0x3aa0('0x14'));var config=require(_0x3aa0('0x15'));var licenseUtil=require(_0x3aa0('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x3aa0('0x17'));function respondWithStatusCode(_0x18d36e,_0x3ec28f){_0x3ec28f=_0x3ec28f||0xcc;return function(_0x31b980){if(_0x31b980){return _0x18d36e[_0x3aa0('0x18')](_0x3ec28f);}return _0x18d36e['status'](_0x3ec28f)[_0x3aa0('0x19')]();};}function respondWithResult(_0xb6cc89,_0x530fb6){_0x530fb6=_0x530fb6||0xc8;return function(_0x4a9332){if(_0x4a9332){return _0xb6cc89[_0x3aa0('0x1a')](_0x530fb6)[_0x3aa0('0x1b')](_0x4a9332);}};}function respondWithFilteredResult(_0x4069ea,_0x5570c3){return function(_0x3acdd1){if(_0x3acdd1){var _0x5ba3ab=typeof _0x5570c3[_0x3aa0('0x1c')]==='undefined'&&typeof _0x5570c3['limit']===_0x3aa0('0x1d');var _0x3756a9=_0x3acdd1[_0x3aa0('0x1e')];var _0x465813=_0x5ba3ab?0x0:_0x5570c3['offset'];var _0x3d7e26=_0x5ba3ab?_0x3acdd1[_0x3aa0('0x1e')]:_0x5570c3[_0x3aa0('0x1c')]+_0x5570c3[_0x3aa0('0x1f')];var _0x447123;if(_0x3d7e26>=_0x3756a9){_0x3d7e26=_0x3756a9;_0x447123=0xc8;}else{_0x447123=0xce;}_0x4069ea[_0x3aa0('0x1a')](_0x447123);return _0x4069ea[_0x3aa0('0x20')](_0x3aa0('0x21'),_0x465813+'-'+_0x3d7e26+'/'+_0x3756a9)[_0x3aa0('0x1b')](_0x3acdd1);}return null;};}function patchUpdates(_0x7321c2){return function(_0x661658){try{jsonpatch[_0x3aa0('0x22')](_0x661658,_0x7321c2,!![]);}catch(_0x504a49){return BPromise['reject'](_0x504a49);}return _0x661658[_0x3aa0('0x23')]();};}function saveUpdates(_0x127575,_0x5af797){return function(_0x29bfa1){if(_0x29bfa1){return _0x29bfa1[_0x3aa0('0x24')](_0x127575)[_0x3aa0('0x25')](function(_0x188a7d){return _0x188a7d;});}return null;};}function removeEntity(_0x3f8477,_0x398173){return function(_0x328bb5){if(_0x328bb5){return _0x328bb5[_0x3aa0('0x26')]()['then'](function(){_0x3f8477[_0x3aa0('0x1a')](0xcc)[_0x3aa0('0x19')]();});}};}function handleEntityNotFound(_0x53e430,_0x4a0879){return function(_0x2c5b7b){if(!_0x2c5b7b){_0x53e430[_0x3aa0('0x18')](0x194);}return _0x2c5b7b;};}function handleError(_0x3e2cb0,_0x3dec46){_0x3dec46=_0x3dec46||0x1f4;return function(_0x3f64e4){logger[_0x3aa0('0x27')](_0x3f64e4[_0x3aa0('0x28')]);if(_0x3f64e4['name']){delete _0x3f64e4['name'];}_0x3e2cb0[_0x3aa0('0x1a')](_0x3dec46)['send'](_0x3f64e4);};}exports[_0x3aa0('0x29')]=function(_0x414303,_0x43785a){var _0x1924a9={},_0x20c1e4={},_0xec3b09={'count':0x0,'rows':[]};var _0x5a17e1=_[_0x3aa0('0x2a')](db[_0x3aa0('0x2b')]['rawAttributes'],function(_0x111fb0){return{'name':_0x111fb0[_0x3aa0('0x2c')],'type':_0x111fb0['type'][_0x3aa0('0x2d')]};});_0x20c1e4[_0x3aa0('0x2e')]=_[_0x3aa0('0x2a')](_0x5a17e1,_0x3aa0('0x2f'));_0x20c1e4[_0x3aa0('0x30')]=_[_0x3aa0('0x31')](_0x414303[_0x3aa0('0x30')]);_0x20c1e4[_0x3aa0('0x32')]=_['intersection'](_0x20c1e4[_0x3aa0('0x2e')],_0x20c1e4[_0x3aa0('0x30')]);_0x1924a9[_0x3aa0('0x33')]=_[_0x3aa0('0x34')](_0x20c1e4['model'],qs[_0x3aa0('0x35')](_0x414303[_0x3aa0('0x30')][_0x3aa0('0x35')]));_0x1924a9['attributes']=_0x1924a9[_0x3aa0('0x33')][_0x3aa0('0x36')]?_0x1924a9[_0x3aa0('0x33')]:_0x20c1e4[_0x3aa0('0x2e')];if(!_0x414303[_0x3aa0('0x30')]['hasOwnProperty'](_0x3aa0('0x37'))){_0x1924a9[_0x3aa0('0x1f')]=qs['limit'](_0x414303[_0x3aa0('0x30')]['limit']);_0x1924a9[_0x3aa0('0x1c')]=qs[_0x3aa0('0x1c')](_0x414303[_0x3aa0('0x30')][_0x3aa0('0x1c')]);}_0x1924a9[_0x3aa0('0x38')]=qs['sort'](_0x414303[_0x3aa0('0x30')][_0x3aa0('0x39')]);_0x1924a9[_0x3aa0('0x3a')]=qs[_0x3aa0('0x32')](_[_0x3aa0('0x3b')](_0x414303['query'],_0x20c1e4['filters']),_0x5a17e1);if(_0x414303[_0x3aa0('0x30')][_0x3aa0('0x3c')]){_0x1924a9['where']=_[_0x3aa0('0x3d')](_0x1924a9[_0x3aa0('0x3a')],{'$or':_[_0x3aa0('0x2a')](_0x5a17e1,function(_0x374ce9){if(_0x374ce9[_0x3aa0('0x3e')]!==_0x3aa0('0x3f')){var _0x5d19b7={};_0x5d19b7[_0x374ce9['name']]={'$like':'%'+_0x414303[_0x3aa0('0x30')][_0x3aa0('0x3c')]+'%'};return _0x5d19b7;}})});}_0x1924a9=_[_0x3aa0('0x3d')]({},_0x1924a9,_0x414303[_0x3aa0('0x40')]);var _0x29d4e3={'where':_0x1924a9[_0x3aa0('0x3a')]};return db[_0x3aa0('0x2b')][_0x3aa0('0x1e')](_0x29d4e3)[_0x3aa0('0x25')](function(_0x2f9f45){_0xec3b09['count']=_0x2f9f45;if(_0x414303['query'][_0x3aa0('0x41')]){_0x1924a9[_0x3aa0('0x42')]=[{'all':!![]}];}return db['DeskAccount'][_0x3aa0('0x43')](_0x1924a9);})['then'](function(_0x5e8e2e){_0xec3b09[_0x3aa0('0x44')]=_0x5e8e2e;return _0xec3b09;})[_0x3aa0('0x25')](respondWithFilteredResult(_0x43785a,_0x1924a9))[_0x3aa0('0x45')](handleError(_0x43785a,null));};exports[_0x3aa0('0x46')]=function(_0x5ada3b,_0xfa77a){var _0x59ab53={'raw':![],'where':{'id':_0x5ada3b[_0x3aa0('0x47')]['id']}},_0x490de6={};_0x490de6[_0x3aa0('0x2e')]=_[_0x3aa0('0x31')](db['DeskAccount'][_0x3aa0('0x48')]);_0x490de6[_0x3aa0('0x30')]=_[_0x3aa0('0x31')](_0x5ada3b[_0x3aa0('0x30')]);_0x490de6[_0x3aa0('0x32')]=_[_0x3aa0('0x34')](_0x490de6[_0x3aa0('0x2e')],_0x490de6[_0x3aa0('0x30')]);_0x59ab53[_0x3aa0('0x33')]=_[_0x3aa0('0x34')](_0x490de6[_0x3aa0('0x2e')],qs['fields'](_0x5ada3b[_0x3aa0('0x30')][_0x3aa0('0x35')]));_0x59ab53[_0x3aa0('0x33')]=_0x59ab53[_0x3aa0('0x33')][_0x3aa0('0x36')]?_0x59ab53[_0x3aa0('0x33')]:_0x490de6[_0x3aa0('0x2e')];if(_0x5ada3b['query'][_0x3aa0('0x41')]){_0x59ab53[_0x3aa0('0x42')]=[{'all':!![]}];}_0x59ab53=_[_0x3aa0('0x3d')]({},_0x59ab53,_0x5ada3b[_0x3aa0('0x40')]);return db[_0x3aa0('0x2b')]['find'](_0x59ab53)['then'](handleEntityNotFound(_0xfa77a,null))['then'](respondWithResult(_0xfa77a,null))[_0x3aa0('0x45')](handleError(_0xfa77a,null));};exports[_0x3aa0('0x49')]=function(_0xde8bfd,_0x3ba7b9){return db[_0x3aa0('0x2b')]['create'](_0xde8bfd['body'],{})[_0x3aa0('0x25')](respondWithResult(_0x3ba7b9,0xc9))[_0x3aa0('0x45')](handleError(_0x3ba7b9,null));};exports['update']=function(_0x726c55,_0x1bd3ed){if(_0x726c55[_0x3aa0('0x4a')]['id']){delete _0x726c55[_0x3aa0('0x4a')]['id'];}return db[_0x3aa0('0x2b')][_0x3aa0('0x4b')]({'where':{'id':_0x726c55[_0x3aa0('0x47')]['id']}})['then'](handleEntityNotFound(_0x1bd3ed,null))[_0x3aa0('0x25')](saveUpdates(_0x726c55['body'],null))['then'](respondWithResult(_0x1bd3ed,null))[_0x3aa0('0x45')](handleError(_0x1bd3ed,null));};exports[_0x3aa0('0x26')]=function(_0x5d6597,_0x22b78c){return db[_0x3aa0('0x2b')][_0x3aa0('0x4b')]({'where':{'id':_0x5d6597[_0x3aa0('0x47')]['id']}})['then'](handleEntityNotFound(_0x22b78c,null))[_0x3aa0('0x25')](removeEntity(_0x22b78c,null))[_0x3aa0('0x45')](handleError(_0x22b78c,null));};exports[_0x3aa0('0x4c')]=function(_0x129d51,_0x139533,_0x205445){var _0x36e495={};var _0x464d67={};var _0x136c95;var _0x4381d1;return db[_0x3aa0('0x2b')][_0x3aa0('0x4d')]({'where':{'id':_0x129d51[_0x3aa0('0x47')]['id']}})[_0x3aa0('0x25')](handleEntityNotFound(_0x139533,null))[_0x3aa0('0x25')](function(_0x568f95){if(_0x568f95){_0x136c95=_0x568f95;_0x464d67[_0x3aa0('0x2e')]=_[_0x3aa0('0x31')](db[_0x3aa0('0x4e')]['rawAttributes']);_0x464d67['query']=_['keys'](_0x129d51[_0x3aa0('0x30')]);_0x464d67[_0x3aa0('0x32')]=_[_0x3aa0('0x34')](_0x464d67[_0x3aa0('0x2e')],_0x464d67['query']);_0x36e495[_0x3aa0('0x33')]=_[_0x3aa0('0x34')](_0x464d67[_0x3aa0('0x2e')],qs[_0x3aa0('0x35')](_0x129d51[_0x3aa0('0x30')][_0x3aa0('0x35')]));_0x36e495[_0x3aa0('0x33')]=_0x36e495[_0x3aa0('0x33')][_0x3aa0('0x36')]?_0x36e495['attributes']:_0x464d67['model'];_0x36e495[_0x3aa0('0x38')]=qs[_0x3aa0('0x39')](_0x129d51['query'][_0x3aa0('0x39')]);_0x36e495['where']=qs['filters'](_[_0x3aa0('0x3b')](_0x129d51[_0x3aa0('0x30')],_0x464d67[_0x3aa0('0x32')]));if(_0x129d51[_0x3aa0('0x30')]['filter']){_0x36e495['where']=_[_0x3aa0('0x3d')](_0x36e495[_0x3aa0('0x3a')],{'$or':_[_0x3aa0('0x2a')](_0x36e495[_0x3aa0('0x33')],function(_0x3bc48e){var _0x39eb4c={};_0x39eb4c[_0x3bc48e]={'$like':'%'+_0x129d51[_0x3aa0('0x30')][_0x3aa0('0x3c')]+'%'};return _0x39eb4c;})});}_0x36e495=_[_0x3aa0('0x3d')]({},_0x36e495,_0x129d51[_0x3aa0('0x40')]);return _0x136c95[_0x3aa0('0x4c')](_0x36e495);}})[_0x3aa0('0x25')](function(_0x1180b3){if(_0x1180b3){_0x4381d1=_0x1180b3[_0x3aa0('0x36')];if(!_0x129d51[_0x3aa0('0x30')]['hasOwnProperty']('nolimit')){_0x36e495['limit']=qs[_0x3aa0('0x1f')](_0x129d51[_0x3aa0('0x30')][_0x3aa0('0x1f')]);_0x36e495[_0x3aa0('0x1c')]=qs[_0x3aa0('0x1c')](_0x129d51[_0x3aa0('0x30')][_0x3aa0('0x1c')]);}return _0x136c95[_0x3aa0('0x4c')](_0x36e495);}})['then'](function(_0x264bda){if(_0x264bda){return _0x264bda?{'count':_0x4381d1,'rows':_0x264bda}:null;}})[_0x3aa0('0x25')](respondWithResult(_0x139533,null))['catch'](handleError(_0x139533,null));};exports[_0x3aa0('0x4f')]=function(_0x327de8,_0x2f07fb,_0x41e851){if(_0x327de8[_0x3aa0('0x4a')]['id']){delete _0x327de8[_0x3aa0('0x4a')]['id'];}return db[_0x3aa0('0x2b')][_0x3aa0('0x4d')]({'where':{'id':_0x327de8['params']['id']}})[_0x3aa0('0x25')](handleEntityNotFound(_0x2f07fb,null))[_0x3aa0('0x25')](function(_0x6a35c4){if(_0x6a35c4){_0x327de8[_0x3aa0('0x4a')]['AccountId']=_0x6a35c4['id'];_0x327de8[_0x3aa0('0x4a')][_0x3aa0('0x50')]=integrations[_0x3aa0('0x51')](_0x327de8[_0x3aa0('0x4a')]['channel'],_0x327de8[_0x3aa0('0x4a')][_0x3aa0('0x3e')]);_0x327de8['body']['Descriptions']=integrations[_0x3aa0('0x52')](_0x327de8[_0x3aa0('0x4a')]['channel'],_0x327de8[_0x3aa0('0x4a')]['type']);return db['DeskConfiguration'][_0x3aa0('0x49')](_0x327de8['body'],{'include':[{'model':db['DeskField'],'as':_0x3aa0('0x50')},{'model':db[_0x3aa0('0x53')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x2f07fb,null))[_0x3aa0('0x45')](handleError(_0x2f07fb,null));};exports[_0x3aa0('0x54')]=function(_0x1c44ff,_0x1fcbff,_0x37d67f){var _0x504d72=[{'name':'priority','label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x58feac='';return db[_0x3aa0('0x2b')][_0x3aa0('0x4d')]({'where':{'id':_0x1c44ff[_0x3aa0('0x47')]['id']},'attributes':['id',_0x3aa0('0x55'),_0x3aa0('0x56'),_0x3aa0('0x57'),'password',_0x3aa0('0x58'),_0x3aa0('0x59'),_0x3aa0('0x5a'),_0x3aa0('0x5b')]})[_0x3aa0('0x25')](handleEntityNotFound(_0x1fcbff,null))[_0x3aa0('0x25')](function(_0x5bfb23){if(_0x5bfb23){_0x58feac=_0x5bfb23['remoteUri'];var _0x17e342=_0x58feac[_0x3aa0('0x5c')](-0x1);if(_0x17e342==='/'){_0x58feac=_0x58feac['substring'](0x0,_0x58feac[_0x3aa0('0x5d')](_0x17e342));}var _0x240242={'method':_0x3aa0('0x5e'),'uri':util['format'](_0x3aa0('0x5f'),_0x58feac),'headers':{'Content-Type':'application/json','Accept':_0x3aa0('0x60')},'json':!![]};if(_0x5bfb23[_0x3aa0('0x56')]===_0x3aa0('0x61')){_0x240242[_0x3aa0('0x62')][_0x3aa0('0x63')]=util['format'](_0x3aa0('0x64'),new Buffer(util[_0x3aa0('0x65')](_0x3aa0('0x66'),_0x5bfb23['username'],_0x5bfb23[_0x3aa0('0x67')]))[_0x3aa0('0x68')](_0x3aa0('0x69')));}return rp(_0x240242)['then'](function(_0x4c539f){return _0x504d72[_0x3aa0('0x6a')](_[_0x3aa0('0x2a')](_0x4c539f[_0x3aa0('0x6b')][_0x3aa0('0x6c')],function(_0x22f8cf){return{'id':_0x22f8cf[_0x3aa0('0x2f')],'name':_0x22f8cf[_0x3aa0('0x2f')],'type':_0x22f8cf[_0x3aa0('0x3e')],'active':_0x22f8cf['active'],'label':_0x22f8cf[_0x3aa0('0x6d')],'custom':!![]};}));});}})['then'](function(_0x48f35b){return{'count':_0x48f35b[_0x3aa0('0x36')],'rows':_0x48f35b};})[_0x3aa0('0x25')](respondWithResult(_0x1fcbff,null))[_0x3aa0('0x45')](function(_0x3fa14e){var _0x1a7c9f=_0x1c44ff[_0x3aa0('0x30')][_0x3aa0('0x6e')]?0x1f4:_0x3fa14e['statusCode']||0x1f4;logger[_0x3aa0('0x27')](_0x3aa0('0x6f'),_0x3aa0('0x54'),_0x1a7c9f,JSON[_0x3aa0('0x70')](_0x3fa14e));delete _0x3fa14e['name'];if(_0x1a7c9f===0x191){_0x1a7c9f=0x190;}_0x1fcbff[_0x3aa0('0x1a')](_0x1a7c9f)[_0x3aa0('0x71')](_0x1c44ff[_0x3aa0('0x30')][_0x3aa0('0x6e')]?{'message':_0x3aa0('0x72'),'statusCode':_0x3fa14e[_0x3aa0('0x73')]}:_0x3fa14e);});};
\ No newline at end of file
index b36a9c7..301bee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f56=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash'];(function(_0x4326eb,_0x1801c5){var _0x2735a3=function(_0x4b1f8d){while(--_0x4b1f8d){_0x4326eb['push'](_0x4326eb['shift']());}};_0x2735a3(++_0x1801c5);}(_0x8f56,0x151));var _0x68f5=function(_0x2cad80,_0x2acee2){_0x2cad80=_0x2cad80-0x0;var _0xa416e5=_0x8f56[_0x2cad80];return _0xa416e5;};'use strict';var _=require(_0x68f5('0x0'));var util=require(_0x68f5('0x1'));var logger=require(_0x68f5('0x2'))(_0x68f5('0x3'));var moment=require(_0x68f5('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x68f5('0x5'));var rimraf=require(_0x68f5('0x6'));var config=require(_0x68f5('0x7'));var attributes=require(_0x68f5('0x8'));var integrations=require(_0x68f5('0x9'));module['exports']=function(_0xc2b2c3,_0x42b8cf){return _0xc2b2c3[_0x68f5('0xa')](_0x68f5('0xb'),attributes,{'tableName':_0x68f5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa364=['exports','define','DeskAccount','int_desk_accounts','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration'];(function(_0x1c7b33,_0x381cc5){var _0x154be0=function(_0x3e7baf){while(--_0x3e7baf){_0x1c7b33['push'](_0x1c7b33['shift']());}};_0x154be0(++_0x381cc5);}(_0xa364,0xe8));var _0x4a36=function(_0x25854f,_0x3236d3){_0x25854f=_0x25854f-0x0;var _0x52cdde=_0xa364[_0x25854f];return _0x52cdde;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4a36('0x0'))(_0x4a36('0x1'));var moment=require(_0x4a36('0x2'));var BPromise=require(_0x4a36('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4a36('0x4'));var config=require(_0x4a36('0x5'));var attributes=require(_0x4a36('0x6'));var integrations=require(_0x4a36('0x7'));module[_0x4a36('0x8')]=function(_0x4f4c09,_0x2f896e){return _0x4f4c09[_0x4a36('0x9')](_0x4a36('0xa'),attributes,{'tableName':_0x4a36('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f5e2aaf..1891707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71a0=['DeskAccount','findAll','options','raw','where','attributes','map','model','include','ShowDeskAccount','find','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','DeskAccount,\x20%s,\x20%s','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','GetDeskAccount'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x71a0,0x1d3));var _0x071a=function(_0x4c14fa,_0x40a14e){_0x4c14fa=_0x4c14fa-0x0;var _0x4a97d3=_0x71a0[_0x4c14fa];return _0x4a97d3;};'use strict';var _=require(_0x071a('0x0'));var util=require(_0x071a('0x1'));var moment=require(_0x071a('0x2'));var BPromise=require(_0x071a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x071a('0x4'));var db=require(_0x071a('0x5'))['db'];var utils=require(_0x071a('0x6'));var logger=require(_0x071a('0x7'))('rpc');var config=require(_0x071a('0x8'));var jayson=require(_0x071a('0x9'));var client=jayson[_0x071a('0xa')][_0x071a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x450fda,_0x58f60a,_0x4e900e){return new BPromise(function(_0x304b62,_0xcb5595){return client[_0x071a('0xc')](_0x450fda,_0x4e900e)[_0x071a('0xd')](function(_0x227833){logger['info'](_0x071a('0xe'),_0x58f60a,_0x071a('0xf'));logger['debug'](_0x071a('0x10'),_0x58f60a,_0x071a('0xf'),JSON['stringify'](_0x227833));if(_0x227833[_0x071a('0x11')]){if(_0x227833['error']['code']===0x1f4){logger[_0x071a('0x11')](_0x071a('0xe'),_0x58f60a,_0x227833[_0x071a('0x11')][_0x071a('0x12')]);return _0xcb5595(_0x227833['error']['message']);}logger[_0x071a('0x11')](_0x071a('0xe'),_0x58f60a,_0x227833[_0x071a('0x11')][_0x071a('0x12')]);return _0x304b62(_0x227833['error'][_0x071a('0x12')]);}else{logger[_0x071a('0x13')](_0x071a('0xe'),_0x58f60a,_0x071a('0xf'));_0x304b62(_0x227833[_0x071a('0x14')]['message']);}})[_0x071a('0x15')](function(_0x484338){logger[_0x071a('0x11')](_0x071a('0xe'),_0x58f60a,_0x484338);_0xcb5595(_0x484338);});});}exports[_0x071a('0x16')]=function(_0x11b7de){var _0x5570fb=this;return new Promise(function(_0x389f0d,_0x4d7c24){return db[_0x071a('0x17')][_0x071a('0x18')]({'raw':_0x11b7de[_0x071a('0x19')]?_0x11b7de['options'][_0x071a('0x1a')]===undefined?!![]:![]:!![],'where':_0x11b7de[_0x071a('0x19')]?_0x11b7de['options'][_0x071a('0x1b')]||null:null,'attributes':_0x11b7de['options']?_0x11b7de['options'][_0x071a('0x1c')]||null:null,'limit':_0x11b7de['options']?_0x11b7de['options']['limit']||null:null,'include':_0x11b7de['options']?_0x11b7de[_0x071a('0x19')]['include']?_[_0x071a('0x1d')](_0x11b7de['options']['include'],function(_0x52fd79){return{'model':db[_0x52fd79[_0x071a('0x1e')]],'as':_0x52fd79['as'],'attributes':_0x52fd79['attributes'],'include':_0x52fd79[_0x071a('0x1f')]?_[_0x071a('0x1d')](_0x52fd79[_0x071a('0x1f')],function(_0x522395){return{'model':db[_0x522395[_0x071a('0x1e')]],'as':_0x522395['as'],'attributes':_0x522395[_0x071a('0x1c')],'include':_0x522395['include']?_[_0x071a('0x1d')](_0x522395['include'],function(_0x39dbce){return{'model':db[_0x39dbce[_0x071a('0x1e')]],'as':_0x39dbce['as'],'attributes':_0x39dbce['attributes']};}):[]};}):[]};}):[]:[]})[_0x071a('0xd')](function(_0x1021dd){logger[_0x071a('0x13')](_0x071a('0x16'),_0x11b7de);logger['debug']('GetDeskAccount',_0x11b7de,JSON['stringify'](_0x1021dd));_0x389f0d(_0x1021dd);})[_0x071a('0x15')](function(_0x33a61e){logger[_0x071a('0x11')]('GetDeskAccount',_0x33a61e['message'],_0x11b7de);_0x4d7c24(_0x5570fb['error'](0x1f4,_0x33a61e[_0x071a('0x12')]));});});};exports[_0x071a('0x20')]=function(_0x4f6566){var _0x10914c=this;return new Promise(function(_0x493f13,_0x3ca3ae){return db[_0x071a('0x17')][_0x071a('0x21')]({'raw':_0x4f6566['options']?_0x4f6566[_0x071a('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4f6566[_0x071a('0x19')]?_0x4f6566[_0x071a('0x19')][_0x071a('0x1b')]||null:null,'attributes':_0x4f6566['options']?_0x4f6566[_0x071a('0x19')][_0x071a('0x1c')]||null:null,'include':_0x4f6566[_0x071a('0x19')]?_0x4f6566['options'][_0x071a('0x1f')]?_['map'](_0x4f6566['options']['include'],function(_0x47f0dd){return{'model':db[_0x47f0dd[_0x071a('0x1e')]],'as':_0x47f0dd['as'],'attributes':_0x47f0dd['attributes'],'include':_0x47f0dd['include']?_['map'](_0x47f0dd[_0x071a('0x1f')],function(_0x5a67c3){return{'model':db[_0x5a67c3['model']],'as':_0x5a67c3['as'],'attributes':_0x5a67c3[_0x071a('0x1c')],'include':_0x5a67c3[_0x071a('0x1f')]?_[_0x071a('0x1d')](_0x5a67c3[_0x071a('0x1f')],function(_0xc1d39b){return{'model':db[_0xc1d39b[_0x071a('0x1e')]],'as':_0xc1d39b['as'],'attributes':_0xc1d39b[_0x071a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x071a('0xd')](function(_0x30901f){logger[_0x071a('0x13')](_0x071a('0x20'),_0x4f6566);logger[_0x071a('0x22')](_0x071a('0x20'),_0x4f6566,JSON['stringify'](_0x30901f));_0x493f13(_0x30901f);})[_0x071a('0x15')](function(_0x2d9970){logger['error']('ShowDeskAccount',_0x2d9970[_0x071a('0x12')],_0x4f6566);_0x3ca3ae(_0x10914c[_0x071a('0x11')](0x1f4,_0x2d9970[_0x071a('0x12')]));});});};
\ No newline at end of file
+var _0x7f8a=['client','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','GetDeskAccount','DeskAccount','findAll','options','raw','attributes','include','map','model','ShowDeskAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x5aa060,_0xc19d59){var _0x132a19=function(_0x34fd9a){while(--_0x34fd9a){_0x5aa060['push'](_0x5aa060['shift']());}};_0x132a19(++_0xc19d59);}(_0x7f8a,0x1a2));var _0xa7f8=function(_0x5aa406,_0x1f9faf){_0x5aa406=_0x5aa406-0x0;var _0xe420b0=_0x7f8a[_0x5aa406];return _0xe420b0;};'use strict';var _=require(_0xa7f8('0x0'));var util=require(_0xa7f8('0x1'));var moment=require(_0xa7f8('0x2'));var BPromise=require(_0xa7f8('0x3'));var rs=require(_0xa7f8('0x4'));var fs=require('fs');var Redis=require(_0xa7f8('0x5'));var db=require(_0xa7f8('0x6'))['db'];var utils=require(_0xa7f8('0x7'));var logger=require('../../config/logger')(_0xa7f8('0x8'));var config=require(_0xa7f8('0x9'));var jayson=require(_0xa7f8('0xa'));var client=jayson[_0xa7f8('0xb')][_0xa7f8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1196d1,_0x63c4ea,_0x15da66){return new BPromise(function(_0x47ce0e,_0x1ef38a){return client[_0xa7f8('0xd')](_0x1196d1,_0x15da66)[_0xa7f8('0xe')](function(_0x311e23){logger[_0xa7f8('0xf')](_0xa7f8('0x10'),_0x63c4ea,_0xa7f8('0x11'));logger[_0xa7f8('0x12')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x63c4ea,_0xa7f8('0x11'),JSON[_0xa7f8('0x13')](_0x311e23));if(_0x311e23['error']){if(_0x311e23[_0xa7f8('0x14')]['code']===0x1f4){logger[_0xa7f8('0x14')](_0xa7f8('0x10'),_0x63c4ea,_0x311e23[_0xa7f8('0x14')][_0xa7f8('0x15')]);return _0x1ef38a(_0x311e23[_0xa7f8('0x14')]['message']);}logger[_0xa7f8('0x14')](_0xa7f8('0x10'),_0x63c4ea,_0x311e23[_0xa7f8('0x14')]['message']);return _0x47ce0e(_0x311e23[_0xa7f8('0x14')][_0xa7f8('0x15')]);}else{logger[_0xa7f8('0xf')](_0xa7f8('0x10'),_0x63c4ea,_0xa7f8('0x11'));_0x47ce0e(_0x311e23['result']['message']);}})[_0xa7f8('0x16')](function(_0x34332c){logger[_0xa7f8('0x14')](_0xa7f8('0x10'),_0x63c4ea,_0x34332c);_0x1ef38a(_0x34332c);});});}exports[_0xa7f8('0x17')]=function(_0x3accf1){var _0x264c7f=this;return new Promise(function(_0x4ead25,_0x573d83){return db[_0xa7f8('0x18')][_0xa7f8('0x19')]({'raw':_0x3accf1[_0xa7f8('0x1a')]?_0x3accf1[_0xa7f8('0x1a')][_0xa7f8('0x1b')]===undefined?!![]:![]:!![],'where':_0x3accf1[_0xa7f8('0x1a')]?_0x3accf1[_0xa7f8('0x1a')]['where']||null:null,'attributes':_0x3accf1[_0xa7f8('0x1a')]?_0x3accf1['options'][_0xa7f8('0x1c')]||null:null,'limit':_0x3accf1[_0xa7f8('0x1a')]?_0x3accf1[_0xa7f8('0x1a')]['limit']||null:null,'include':_0x3accf1[_0xa7f8('0x1a')]?_0x3accf1[_0xa7f8('0x1a')][_0xa7f8('0x1d')]?_[_0xa7f8('0x1e')](_0x3accf1[_0xa7f8('0x1a')][_0xa7f8('0x1d')],function(_0x227d09){return{'model':db[_0x227d09[_0xa7f8('0x1f')]],'as':_0x227d09['as'],'attributes':_0x227d09[_0xa7f8('0x1c')],'include':_0x227d09[_0xa7f8('0x1d')]?_[_0xa7f8('0x1e')](_0x227d09[_0xa7f8('0x1d')],function(_0x5e80db){return{'model':db[_0x5e80db['model']],'as':_0x5e80db['as'],'attributes':_0x5e80db['attributes'],'include':_0x5e80db['include']?_[_0xa7f8('0x1e')](_0x5e80db[_0xa7f8('0x1d')],function(_0xc4ef4e){return{'model':db[_0xc4ef4e[_0xa7f8('0x1f')]],'as':_0xc4ef4e['as'],'attributes':_0xc4ef4e[_0xa7f8('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x14cf2b){logger['info'](_0xa7f8('0x17'),_0x3accf1);logger['debug'](_0xa7f8('0x17'),_0x3accf1,JSON[_0xa7f8('0x13')](_0x14cf2b));_0x4ead25(_0x14cf2b);})[_0xa7f8('0x16')](function(_0x4ab5b8){logger['error']('GetDeskAccount',_0x4ab5b8[_0xa7f8('0x15')],_0x3accf1);_0x573d83(_0x264c7f[_0xa7f8('0x14')](0x1f4,_0x4ab5b8['message']));});});};exports[_0xa7f8('0x20')]=function(_0x39f993){var _0x25e603=this;return new Promise(function(_0x20b96b,_0x3e65d5){return db['DeskAccount']['find']({'raw':_0x39f993[_0xa7f8('0x1a')]?_0x39f993[_0xa7f8('0x1a')][_0xa7f8('0x1b')]===undefined?!![]:![]:!![],'where':_0x39f993['options']?_0x39f993[_0xa7f8('0x1a')]['where']||null:null,'attributes':_0x39f993[_0xa7f8('0x1a')]?_0x39f993[_0xa7f8('0x1a')]['attributes']||null:null,'include':_0x39f993[_0xa7f8('0x1a')]?_0x39f993[_0xa7f8('0x1a')][_0xa7f8('0x1d')]?_[_0xa7f8('0x1e')](_0x39f993[_0xa7f8('0x1a')]['include'],function(_0x35dbc2){return{'model':db[_0x35dbc2[_0xa7f8('0x1f')]],'as':_0x35dbc2['as'],'attributes':_0x35dbc2[_0xa7f8('0x1c')],'include':_0x35dbc2[_0xa7f8('0x1d')]?_[_0xa7f8('0x1e')](_0x35dbc2['include'],function(_0x2378ea){return{'model':db[_0x2378ea[_0xa7f8('0x1f')]],'as':_0x2378ea['as'],'attributes':_0x2378ea[_0xa7f8('0x1c')],'include':_0x2378ea[_0xa7f8('0x1d')]?_[_0xa7f8('0x1e')](_0x2378ea[_0xa7f8('0x1d')],function(_0x42fa9a){return{'model':db[_0x42fa9a[_0xa7f8('0x1f')]],'as':_0x42fa9a['as'],'attributes':_0x42fa9a['attributes']};}):[]};}):[]};}):[]:[]})[_0xa7f8('0xe')](function(_0x27295a){logger[_0xa7f8('0xf')](_0xa7f8('0x20'),_0x39f993);logger[_0xa7f8('0x12')](_0xa7f8('0x20'),_0x39f993,JSON[_0xa7f8('0x13')](_0x27295a));_0x20b96b(_0x27295a);})['catch'](function(_0x5aeb36){logger[_0xa7f8('0x14')](_0xa7f8('0x20'),_0x5aeb36[_0xa7f8('0x15')],_0x39f993);_0x3e65d5(_0x25e603[_0xa7f8('0x14')](0x1f4,_0x5aeb36[_0xa7f8('0x15')]));});});};
\ No newline at end of file
index f13c53b..36b773c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../../config/environment','./intDeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x58f732,_0x4a3f48){var _0x40417d=function(_0x1e7e09){while(--_0x1e7e09){_0x58f732['push'](_0x58f732['shift']());}};_0x40417d(++_0x4a3f48);}(_0x34e8,0x12c));var _0x834e=function(_0x10883f,_0x10bb80){_0x10883f=_0x10883f-0x0;var _0x7187ec=_0x34e8[_0x10883f];return _0x7187ec;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xa')](_0x834e('0xf'),auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0xa')](_0x834e('0x13'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);router[_0x834e('0xa')](_0x834e('0x15'),auth['isAuthenticated'](),controller[_0x834e('0x16')]);router[_0x834e('0x17')]('/',auth['isAuthenticated'](),controller[_0x834e('0x18')]);router[_0x834e('0x17')](_0x834e('0x15'),auth[_0x834e('0xd')](),controller['setTags']);router[_0x834e('0x19')](_0x834e('0xc'),auth['isAuthenticated'](),controller[_0x834e('0x1a')]);router['delete'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller['destroy']);module[_0x834e('0x1b')]=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./intDeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2f5391,_0x4ac06d){var _0x493c04=function(_0x145aef){while(--_0x145aef){_0x2f5391['push'](_0x2f5391['shift']());}};_0x493c04(++_0x4ac06d);}(_0x34e8,0x12c));var _0x834e=function(_0x31095e,_0x4edd85){_0x31095e=_0x31095e-0x0;var _0x39bd25=_0x34e8[_0x31095e];return _0x39bd25;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xa')](_0x834e('0xf'),auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0xa')](_0x834e('0x13'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);router[_0x834e('0xa')](_0x834e('0x15'),auth['isAuthenticated'](),controller[_0x834e('0x16')]);router[_0x834e('0x17')]('/',auth['isAuthenticated'](),controller[_0x834e('0x18')]);router[_0x834e('0x17')](_0x834e('0x15'),auth[_0x834e('0xd')](),controller['setTags']);router[_0x834e('0x19')](_0x834e('0xc'),auth['isAuthenticated'](),controller[_0x834e('0x1a')]);router['delete'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller['destroy']);module[_0x834e('0x1b')]=router;
\ No newline at end of file
index dbd434b..2c370d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd992=['exports','STRING','sequelize'];(function(_0x584b81,_0x1298cc){var _0x37f084=function(_0x50c2cf){while(--_0x50c2cf){_0x584b81['push'](_0x584b81['shift']());}};_0x37f084(++_0x1298cc);}(_0xd992,0x9b));var _0x2d99=function(_0x392f82,_0x4dc713){_0x392f82=_0x392f82-0x0;var _0x3ad0b8=_0xd992[_0x392f82];return _0x3ad0b8;};'use strict';var Sequelize=require(_0x2d99('0x0'));module[_0x2d99('0x1')]={'name':{'type':Sequelize[_0x2d99('0x2')]},'description':{'type':Sequelize[_0x2d99('0x2')]}};
\ No newline at end of file
+var _0xdeb4=['STRING','sequelize','exports'];(function(_0x5695a6,_0x17db86){var _0x2c3632=function(_0x2d982d){while(--_0x2d982d){_0x5695a6['push'](_0x5695a6['shift']());}};_0x2c3632(++_0x17db86);}(_0xdeb4,0x118));var _0x4deb=function(_0x5e2ce,_0x205367){_0x5e2ce=_0x5e2ce-0x0;var _0x411192=_0xdeb4[_0x5e2ce];return _0x411192;};'use strict';var Sequelize=require(_0x4deb('0x0'));module[_0x4deb('0x1')]={'name':{'type':Sequelize[_0x4deb('0x2')]},'description':{'type':Sequelize[_0x4deb('0x2')]}};
\ No newline at end of file
index 9c346bc..c5bda85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3199=['getDescriptions','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','update','then','error','name','send','map','DeskConfiguration','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','count','includeAll','include','catch','params','create','body','find','destroy','getFields','DeskField','hasOwnProperty','getSubjects','findOne'];(function(_0x184bbd,_0x5d2cdf){var _0x1dddb1=function(_0x20d0bb){while(--_0x20d0bb){_0x184bbd['push'](_0x184bbd['shift']());}};_0x1dddb1(++_0x5d2cdf);}(_0x3199,0xed));var _0x9319=function(_0x45df4d,_0xdc0431){_0x45df4d=_0x45df4d-0x0;var _0x17caf7=_0x3199[_0x45df4d];return _0x17caf7;};'use strict';var emlformat=require(_0x9319('0x0'));var rimraf=require(_0x9319('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9319('0x2'));var rp=require(_0x9319('0x3'));var moment=require(_0x9319('0x4'));var BPromise=require(_0x9319('0x5'));var Mustache=require(_0x9319('0x6'));var util=require(_0x9319('0x7'));var path=require('path');var sox=require(_0x9319('0x8'));var csv=require(_0x9319('0x9'));var ejs=require(_0x9319('0xa'));var fs=require('fs');var fs_extra=require(_0x9319('0xb'));var _=require(_0x9319('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9319('0xd'));var Papa=require(_0x9319('0xe'));var Redis=require(_0x9319('0xf'));var authService=require(_0x9319('0x10'));var qs=require(_0x9319('0x11'));var as=require(_0x9319('0x12'));var hardwareService=require(_0x9319('0x13'));var logger=require(_0x9319('0x14'))(_0x9319('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9319('0x16'));var db=require(_0x9319('0x17'))['db'];function respondWithStatusCode(_0x4f488c,_0x59449f){_0x59449f=_0x59449f||0xcc;return function(_0x486b1f){if(_0x486b1f){return _0x4f488c[_0x9319('0x18')](_0x59449f);}return _0x4f488c[_0x9319('0x19')](_0x59449f)[_0x9319('0x1a')]();};}function respondWithResult(_0x3e8309,_0x194f52){_0x194f52=_0x194f52||0xc8;return function(_0x35e704){if(_0x35e704){return _0x3e8309[_0x9319('0x19')](_0x194f52)[_0x9319('0x1b')](_0x35e704);}};}function respondWithFilteredResult(_0xcbd75a,_0x44bef6){return function(_0x591b89){if(_0x591b89){var _0x4d94dd=typeof _0x44bef6[_0x9319('0x1c')]===_0x9319('0x1d')&&typeof _0x44bef6[_0x9319('0x1e')]===_0x9319('0x1d');var _0x18ed7d=_0x591b89['count'];var _0x473a62=_0x4d94dd?0x0:_0x44bef6[_0x9319('0x1c')];var _0x2db58e=_0x4d94dd?_0x591b89['count']:_0x44bef6[_0x9319('0x1c')]+_0x44bef6[_0x9319('0x1e')];var _0x7559f7;if(_0x2db58e>=_0x18ed7d){_0x2db58e=_0x18ed7d;_0x7559f7=0xc8;}else{_0x7559f7=0xce;}_0xcbd75a['status'](_0x7559f7);return _0xcbd75a[_0x9319('0x1f')](_0x9319('0x20'),_0x473a62+'-'+_0x2db58e+'/'+_0x18ed7d)['json'](_0x591b89);}return null;};}function patchUpdates(_0x51dd85){return function(_0x53ca8f){try{jsonpatch['apply'](_0x53ca8f,_0x51dd85,!![]);}catch(_0x28a41f){return BPromise[_0x9319('0x21')](_0x28a41f);}return _0x53ca8f[_0x9319('0x22')]();};}function saveUpdates(_0xca2a1f,_0x403b75){return function(_0x556182){if(_0x556182){return _0x556182[_0x9319('0x23')](_0xca2a1f)[_0x9319('0x24')](function(_0x3fee0a){return _0x3fee0a;});}return null;};}function removeEntity(_0x2e23ed,_0x2dc6d9){return function(_0x427f1e){if(_0x427f1e){return _0x427f1e['destroy']()[_0x9319('0x24')](function(){_0x2e23ed[_0x9319('0x19')](0xcc)[_0x9319('0x1a')]();});}};}function handleEntityNotFound(_0x2ab008,_0x5fee26){return function(_0x35f0fb){if(!_0x35f0fb){_0x2ab008[_0x9319('0x18')](0x194);}return _0x35f0fb;};}function handleError(_0x3a4658,_0x4658b6){_0x4658b6=_0x4658b6||0x1f4;return function(_0x46483c){logger[_0x9319('0x25')](_0x46483c['stack']);if(_0x46483c['name']){delete _0x46483c[_0x9319('0x26')];}_0x3a4658['status'](_0x4658b6)[_0x9319('0x27')](_0x46483c);};}exports['index']=function(_0x374f0c,_0x3faa6e){var _0x14b58b={},_0x58b0cd={},_0x1f554d={'count':0x0,'rows':[]};var _0x4350cd=_[_0x9319('0x28')](db[_0x9319('0x29')][_0x9319('0x2a')],function(_0x503540){return{'name':_0x503540['fieldName'],'type':_0x503540[_0x9319('0x2b')][_0x9319('0x2c')]};});_0x58b0cd['model']=_['map'](_0x4350cd,_0x9319('0x26'));_0x58b0cd[_0x9319('0x2d')]=_[_0x9319('0x2e')](_0x374f0c[_0x9319('0x2d')]);_0x58b0cd[_0x9319('0x2f')]=_[_0x9319('0x30')](_0x58b0cd['model'],_0x58b0cd[_0x9319('0x2d')]);_0x14b58b['attributes']=_['intersection'](_0x58b0cd[_0x9319('0x31')],qs[_0x9319('0x32')](_0x374f0c[_0x9319('0x2d')][_0x9319('0x32')]));_0x14b58b[_0x9319('0x33')]=_0x14b58b['attributes'][_0x9319('0x34')]?_0x14b58b[_0x9319('0x33')]:_0x58b0cd['model'];if(!_0x374f0c[_0x9319('0x2d')]['hasOwnProperty'](_0x9319('0x35'))){_0x14b58b['limit']=qs[_0x9319('0x1e')](_0x374f0c[_0x9319('0x2d')][_0x9319('0x1e')]);_0x14b58b[_0x9319('0x1c')]=qs[_0x9319('0x1c')](_0x374f0c[_0x9319('0x2d')][_0x9319('0x1c')]);}_0x14b58b[_0x9319('0x36')]=qs['sort'](_0x374f0c[_0x9319('0x2d')][_0x9319('0x37')]);_0x14b58b[_0x9319('0x38')]=qs['filters'](_[_0x9319('0x39')](_0x374f0c['query'],_0x58b0cd['filters']),_0x4350cd);if(_0x374f0c['query'][_0x9319('0x3a')]){_0x14b58b['where']=_[_0x9319('0x3b')](_0x14b58b[_0x9319('0x38')],{'$or':_[_0x9319('0x28')](_0x4350cd,function(_0x5d57d8){if(_0x5d57d8[_0x9319('0x2b')]!=='VIRTUAL'){var _0x59eff8={};_0x59eff8[_0x5d57d8[_0x9319('0x26')]]={'$like':'%'+_0x374f0c[_0x9319('0x2d')][_0x9319('0x3a')]+'%'};return _0x59eff8;}})});}_0x14b58b=_[_0x9319('0x3b')]({},_0x14b58b,_0x374f0c[_0x9319('0x3c')]);var _0x269c81={'where':_0x14b58b[_0x9319('0x38')]};return db[_0x9319('0x29')][_0x9319('0x3d')](_0x269c81)[_0x9319('0x24')](function(_0x242b97){_0x1f554d[_0x9319('0x3d')]=_0x242b97;if(_0x374f0c[_0x9319('0x2d')][_0x9319('0x3e')]){_0x14b58b[_0x9319('0x3f')]=[{'all':!![]}];}return db['DeskConfiguration']['findAll'](_0x14b58b);})[_0x9319('0x24')](function(_0x1153e9){_0x1f554d['rows']=_0x1153e9;return _0x1f554d;})['then'](respondWithFilteredResult(_0x3faa6e,_0x14b58b))[_0x9319('0x40')](handleError(_0x3faa6e,null));};exports['show']=function(_0x579e32,_0x13506c){var _0x5a0f4b={'raw':![],'where':{'id':_0x579e32[_0x9319('0x41')]['id']}},_0x3fc62a={};_0x3fc62a['model']=_[_0x9319('0x2e')](db[_0x9319('0x29')][_0x9319('0x2a')]);_0x3fc62a[_0x9319('0x2d')]=_[_0x9319('0x2e')](_0x579e32[_0x9319('0x2d')]);_0x3fc62a[_0x9319('0x2f')]=_[_0x9319('0x30')](_0x3fc62a[_0x9319('0x31')],_0x3fc62a[_0x9319('0x2d')]);_0x5a0f4b[_0x9319('0x33')]=_['intersection'](_0x3fc62a[_0x9319('0x31')],qs[_0x9319('0x32')](_0x579e32[_0x9319('0x2d')][_0x9319('0x32')]));_0x5a0f4b[_0x9319('0x33')]=_0x5a0f4b[_0x9319('0x33')][_0x9319('0x34')]?_0x5a0f4b[_0x9319('0x33')]:_0x3fc62a[_0x9319('0x31')];if(_0x579e32[_0x9319('0x2d')][_0x9319('0x3e')]){_0x5a0f4b[_0x9319('0x3f')]=[{'all':!![]}];}_0x5a0f4b=_['merge']({},_0x5a0f4b,_0x579e32[_0x9319('0x3c')]);return db[_0x9319('0x29')]['find'](_0x5a0f4b)['then'](handleEntityNotFound(_0x13506c,null))[_0x9319('0x24')](respondWithResult(_0x13506c,null))[_0x9319('0x40')](handleError(_0x13506c,null));};exports[_0x9319('0x42')]=function(_0x22e7bb,_0x3d5aae){return db[_0x9319('0x29')][_0x9319('0x42')](_0x22e7bb[_0x9319('0x43')],{})[_0x9319('0x24')](respondWithResult(_0x3d5aae,0xc9))[_0x9319('0x40')](handleError(_0x3d5aae,null));};exports[_0x9319('0x23')]=function(_0x3b821c,_0x3c402c){if(_0x3b821c['body']['id']){delete _0x3b821c[_0x9319('0x43')]['id'];}return db[_0x9319('0x29')][_0x9319('0x44')]({'where':{'id':_0x3b821c['params']['id']}})['then'](handleEntityNotFound(_0x3c402c,null))[_0x9319('0x24')](saveUpdates(_0x3b821c['body'],null))[_0x9319('0x24')](respondWithResult(_0x3c402c,null))['catch'](handleError(_0x3c402c,null));};exports[_0x9319('0x45')]=function(_0x48068d,_0x487e2b){return db[_0x9319('0x29')]['find']({'where':{'id':_0x48068d['params']['id']}})[_0x9319('0x24')](handleEntityNotFound(_0x487e2b,null))[_0x9319('0x24')](removeEntity(_0x487e2b,null))['catch'](handleError(_0x487e2b,null));};exports[_0x9319('0x46')]=function(_0x5b245f,_0x4735c3,_0x4250a3){var _0x4dca3={};var _0x107f3b={};var _0xa64ef3;var _0x14a30d;return db[_0x9319('0x29')]['findOne']({'where':{'id':_0x5b245f[_0x9319('0x41')]['id']}})[_0x9319('0x24')](handleEntityNotFound(_0x4735c3,null))['then'](function(_0xa50700){if(_0xa50700){_0xa64ef3=_0xa50700;_0x107f3b[_0x9319('0x31')]=_[_0x9319('0x2e')](db[_0x9319('0x47')][_0x9319('0x2a')]);_0x107f3b['query']=_[_0x9319('0x2e')](_0x5b245f[_0x9319('0x2d')]);_0x107f3b[_0x9319('0x2f')]=_[_0x9319('0x30')](_0x107f3b[_0x9319('0x31')],_0x107f3b[_0x9319('0x2d')]);_0x4dca3[_0x9319('0x33')]=_[_0x9319('0x30')](_0x107f3b[_0x9319('0x31')],qs[_0x9319('0x32')](_0x5b245f[_0x9319('0x2d')]['fields']));_0x4dca3[_0x9319('0x33')]=_0x4dca3['attributes'][_0x9319('0x34')]?_0x4dca3[_0x9319('0x33')]:_0x107f3b[_0x9319('0x31')];_0x4dca3[_0x9319('0x36')]=qs[_0x9319('0x37')](_0x5b245f[_0x9319('0x2d')][_0x9319('0x37')]);_0x4dca3[_0x9319('0x38')]=qs[_0x9319('0x2f')](_[_0x9319('0x39')](_0x5b245f[_0x9319('0x2d')],_0x107f3b[_0x9319('0x2f')]));if(_0x5b245f[_0x9319('0x2d')][_0x9319('0x3a')]){_0x4dca3[_0x9319('0x38')]=_[_0x9319('0x3b')](_0x4dca3[_0x9319('0x38')],{'$or':_['map'](_0x4dca3[_0x9319('0x33')],function(_0x18b217){var _0x14f791={};_0x14f791[_0x18b217]={'$like':'%'+_0x5b245f[_0x9319('0x2d')][_0x9319('0x3a')]+'%'};return _0x14f791;})});}_0x4dca3=_[_0x9319('0x3b')]({},_0x4dca3,_0x5b245f[_0x9319('0x3c')]);return _0xa64ef3['getFields'](_0x4dca3);}})[_0x9319('0x24')](function(_0x14667a){if(_0x14667a){_0x14a30d=_0x14667a[_0x9319('0x34')];if(!_0x5b245f['query'][_0x9319('0x48')](_0x9319('0x35'))){_0x4dca3[_0x9319('0x1e')]=qs[_0x9319('0x1e')](_0x5b245f[_0x9319('0x2d')][_0x9319('0x1e')]);_0x4dca3['offset']=qs[_0x9319('0x1c')](_0x5b245f[_0x9319('0x2d')][_0x9319('0x1c')]);}return _0xa64ef3[_0x9319('0x46')](_0x4dca3);}})[_0x9319('0x24')](function(_0x698a28){if(_0x698a28){return _0x698a28?{'count':_0x14a30d,'rows':_0x698a28}:null;}})['then'](respondWithResult(_0x4735c3,null))[_0x9319('0x40')](handleError(_0x4735c3,null));};exports[_0x9319('0x49')]=function(_0x114a1a,_0x2dbcdb,_0x21319e){var _0x5a2071={};var _0x2c105e={};var _0x3e067f;var _0x53d451;return db[_0x9319('0x29')][_0x9319('0x4a')]({'where':{'id':_0x114a1a[_0x9319('0x41')]['id']}})[_0x9319('0x24')](handleEntityNotFound(_0x2dbcdb,null))['then'](function(_0x2232ec){if(_0x2232ec){_0x3e067f=_0x2232ec;_0x2c105e[_0x9319('0x31')]=_['keys'](db['DeskField'][_0x9319('0x2a')]);_0x2c105e[_0x9319('0x2d')]=_[_0x9319('0x2e')](_0x114a1a[_0x9319('0x2d')]);_0x2c105e['filters']=_[_0x9319('0x30')](_0x2c105e[_0x9319('0x31')],_0x2c105e[_0x9319('0x2d')]);_0x5a2071[_0x9319('0x33')]=_[_0x9319('0x30')](_0x2c105e[_0x9319('0x31')],qs[_0x9319('0x32')](_0x114a1a[_0x9319('0x2d')][_0x9319('0x32')]));_0x5a2071[_0x9319('0x33')]=_0x5a2071[_0x9319('0x33')][_0x9319('0x34')]?_0x5a2071[_0x9319('0x33')]:_0x2c105e[_0x9319('0x31')];_0x5a2071['order']=qs[_0x9319('0x37')](_0x114a1a['query']['sort']);_0x5a2071[_0x9319('0x38')]=qs[_0x9319('0x2f')](_[_0x9319('0x39')](_0x114a1a['query'],_0x2c105e[_0x9319('0x2f')]));if(_0x114a1a[_0x9319('0x2d')][_0x9319('0x3a')]){_0x5a2071[_0x9319('0x38')]=_['merge'](_0x5a2071[_0x9319('0x38')],{'$or':_[_0x9319('0x28')](_0x5a2071['attributes'],function(_0x5464c7){var _0x365b1a={};_0x365b1a[_0x5464c7]={'$like':'%'+_0x114a1a[_0x9319('0x2d')][_0x9319('0x3a')]+'%'};return _0x365b1a;})});}_0x5a2071=_[_0x9319('0x3b')]({},_0x5a2071,_0x114a1a[_0x9319('0x3c')]);return _0x3e067f[_0x9319('0x49')](_0x5a2071);}})[_0x9319('0x24')](function(_0xcbcaae){if(_0xcbcaae){_0x53d451=_0xcbcaae['length'];if(!_0x114a1a[_0x9319('0x2d')][_0x9319('0x48')](_0x9319('0x35'))){_0x5a2071[_0x9319('0x1e')]=qs[_0x9319('0x1e')](_0x114a1a[_0x9319('0x2d')][_0x9319('0x1e')]);_0x5a2071[_0x9319('0x1c')]=qs['offset'](_0x114a1a[_0x9319('0x2d')][_0x9319('0x1c')]);}return _0x3e067f[_0x9319('0x49')](_0x5a2071);}})[_0x9319('0x24')](function(_0x264ab8){if(_0x264ab8){return _0x264ab8?{'count':_0x53d451,'rows':_0x264ab8}:null;}})[_0x9319('0x24')](respondWithResult(_0x2dbcdb,null))[_0x9319('0x40')](handleError(_0x2dbcdb,null));};exports[_0x9319('0x4b')]=function(_0x14a815,_0x1e941e,_0x19c977){var _0x538301={};var _0x192824={};var _0x1d3f63;var _0x8f6e83;return db['DeskConfiguration'][_0x9319('0x4a')]({'where':{'id':_0x14a815[_0x9319('0x41')]['id']}})[_0x9319('0x24')](handleEntityNotFound(_0x1e941e,null))['then'](function(_0x13926e){if(_0x13926e){_0x1d3f63=_0x13926e;_0x192824[_0x9319('0x31')]=_['keys'](db[_0x9319('0x47')][_0x9319('0x2a')]);_0x192824['query']=_[_0x9319('0x2e')](_0x14a815[_0x9319('0x2d')]);_0x192824[_0x9319('0x2f')]=_[_0x9319('0x30')](_0x192824['model'],_0x192824[_0x9319('0x2d')]);_0x538301[_0x9319('0x33')]=_[_0x9319('0x30')](_0x192824[_0x9319('0x31')],qs[_0x9319('0x32')](_0x14a815[_0x9319('0x2d')]['fields']));_0x538301[_0x9319('0x33')]=_0x538301[_0x9319('0x33')]['length']?_0x538301[_0x9319('0x33')]:_0x192824[_0x9319('0x31')];_0x538301[_0x9319('0x36')]=qs[_0x9319('0x37')](_0x14a815[_0x9319('0x2d')][_0x9319('0x37')]);_0x538301[_0x9319('0x38')]=qs[_0x9319('0x2f')](_[_0x9319('0x39')](_0x14a815['query'],_0x192824[_0x9319('0x2f')]));if(_0x14a815[_0x9319('0x2d')]['filter']){_0x538301[_0x9319('0x38')]=_['merge'](_0x538301['where'],{'$or':_['map'](_0x538301[_0x9319('0x33')],function(_0x21b7d8){var _0x7301bb={};_0x7301bb[_0x21b7d8]={'$like':'%'+_0x14a815[_0x9319('0x2d')][_0x9319('0x3a')]+'%'};return _0x7301bb;})});}_0x538301=_[_0x9319('0x3b')]({},_0x538301,_0x14a815[_0x9319('0x3c')]);return _0x1d3f63[_0x9319('0x4b')](_0x538301);}})[_0x9319('0x24')](function(_0x117369){if(_0x117369){_0x8f6e83=_0x117369[_0x9319('0x34')];if(!_0x14a815[_0x9319('0x2d')][_0x9319('0x48')]('nolimit')){_0x538301['limit']=qs[_0x9319('0x1e')](_0x14a815[_0x9319('0x2d')]['limit']);_0x538301[_0x9319('0x1c')]=qs[_0x9319('0x1c')](_0x14a815['query'][_0x9319('0x1c')]);}return _0x1d3f63[_0x9319('0x4b')](_0x538301);}})[_0x9319('0x24')](function(_0x482ce6){if(_0x482ce6){return _0x482ce6?{'count':_0x8f6e83,'rows':_0x482ce6}:null;}})[_0x9319('0x24')](respondWithResult(_0x1e941e,null))[_0x9319('0x40')](handleError(_0x1e941e,null));};exports['getTags']=function(_0x1b86cd,_0x26a438,_0x53b906){var _0xc8478e={};var _0x599908={};var _0x3668b9;var _0x33fbd5;return db[_0x9319('0x29')][_0x9319('0x4a')]({'where':{'id':_0x1b86cd[_0x9319('0x41')]['id']}})[_0x9319('0x24')](handleEntityNotFound(_0x26a438,null))[_0x9319('0x24')](function(_0x25a8c9){if(_0x25a8c9){_0x3668b9=_0x25a8c9;_0x599908[_0x9319('0x31')]=_['keys'](db[_0x9319('0x4c')][_0x9319('0x2a')]);_0x599908[_0x9319('0x2d')]=_[_0x9319('0x2e')](_0x1b86cd[_0x9319('0x2d')]);_0x599908[_0x9319('0x2f')]=_['intersection'](_0x599908['model'],_0x599908[_0x9319('0x2d')]);_0xc8478e[_0x9319('0x33')]=_['intersection'](_0x599908[_0x9319('0x31')],qs['fields'](_0x1b86cd[_0x9319('0x2d')]['fields']));_0xc8478e[_0x9319('0x33')]=_0xc8478e['attributes'][_0x9319('0x34')]?_0xc8478e[_0x9319('0x33')]:_0x599908['model'];_0xc8478e['order']=qs[_0x9319('0x37')](_0x1b86cd[_0x9319('0x2d')][_0x9319('0x37')]);_0xc8478e['where']=qs['filters'](_[_0x9319('0x39')](_0x1b86cd['query'],_0x599908[_0x9319('0x2f')]));if(_0x1b86cd[_0x9319('0x2d')]['filter']){_0xc8478e[_0x9319('0x38')]=_[_0x9319('0x3b')](_0xc8478e[_0x9319('0x38')],{'$or':_[_0x9319('0x28')](_0xc8478e[_0x9319('0x33')],function(_0xf2435){var _0xedcaeb={};_0xedcaeb[_0xf2435]={'$like':'%'+_0x1b86cd[_0x9319('0x2d')]['filter']+'%'};return _0xedcaeb;})});}_0xc8478e=_['merge']({},_0xc8478e,_0x1b86cd['options']);return _0x3668b9['getTags'](_0xc8478e);}})['then'](function(_0x41582e){if(_0x41582e){_0x33fbd5=_0x41582e[_0x9319('0x34')];if(!_0x1b86cd[_0x9319('0x2d')]['hasOwnProperty']('nolimit')){_0xc8478e[_0x9319('0x1e')]=qs['limit'](_0x1b86cd['query'][_0x9319('0x1e')]);_0xc8478e['offset']=qs[_0x9319('0x1c')](_0x1b86cd['query'][_0x9319('0x1c')]);}return _0x3668b9['getTags'](_0xc8478e);}})['then'](function(_0x360b47){if(_0x360b47){return _0x360b47?{'count':_0x33fbd5,'rows':_0x360b47}:null;}})[_0x9319('0x24')](respondWithResult(_0x26a438,null))[_0x9319('0x40')](handleError(_0x26a438,null));};exports[_0x9319('0x4d')]=function(_0x312b8e,_0x53fbb4,_0x537875){if(_0x312b8e[_0x9319('0x43')]['id']){delete _0x312b8e[_0x9319('0x43')]['id'];}return db['DeskConfiguration'][_0x9319('0x4a')]({'where':{'id':_0x312b8e['params']['id']}})['then'](handleEntityNotFound(_0x53fbb4,null))[_0x9319('0x24')](function(_0x33cf89){if(_0x33cf89){return _0x33cf89['setTags'](_0x312b8e[_0x9319('0x43')]['ids']||[]);}return null;})['then'](respondWithResult(_0x53fbb4,null))[_0x9319('0x40')](handleError(_0x53fbb4,null));};
\ No newline at end of file
+var _0x15ce=['json','undefined','offset','count','set','apply','save','update','then','destroy','error','stack','name','index','map','DeskConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','find','create','body','params','getFields','DeskField','getSubjects','findOne','order','getDescriptions','Tag','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','moment','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x1c8ad7,_0x4ba1a6){var _0x31b434=function(_0x40eccb){while(--_0x40eccb){_0x1c8ad7['push'](_0x1c8ad7['shift']());}};_0x31b434(++_0x4ba1a6);}(_0x15ce,0x181));var _0xe15c=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x15ce[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0xe15c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe15c('0x1'));var jsonpatch=require(_0xe15c('0x2'));var rp=require('request-promise');var moment=require(_0xe15c('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xe15c('0x4'));var sox=require('sox');var csv=require(_0xe15c('0x5'));var ejs=require(_0xe15c('0x6'));var fs=require('fs');var fs_extra=require(_0xe15c('0x7'));var _=require(_0xe15c('0x8'));var squel=require('squel');var crypto=require(_0xe15c('0x9'));var jsforce=require(_0xe15c('0xa'));var deskjs=require(_0xe15c('0xb'));var toCsv=require(_0xe15c('0x5'));var querystring=require('querystring');var Papa=require(_0xe15c('0xc'));var Redis=require(_0xe15c('0xd'));var authService=require(_0xe15c('0xe'));var qs=require(_0xe15c('0xf'));var as=require(_0xe15c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe15c('0x11'))('api');var utils=require(_0xe15c('0x12'));var config=require(_0xe15c('0x13'));var licenseUtil=require(_0xe15c('0x14'));var db=require(_0xe15c('0x15'))['db'];function respondWithStatusCode(_0x55de3d,_0x246982){_0x246982=_0x246982||0xcc;return function(_0x3a40c7){if(_0x3a40c7){return _0x55de3d[_0xe15c('0x16')](_0x246982);}return _0x55de3d[_0xe15c('0x17')](_0x246982)[_0xe15c('0x18')]();};}function respondWithResult(_0x8bb7dc,_0xb6ab5b){_0xb6ab5b=_0xb6ab5b||0xc8;return function(_0x4a3633){if(_0x4a3633){return _0x8bb7dc['status'](_0xb6ab5b)[_0xe15c('0x19')](_0x4a3633);}};}function respondWithFilteredResult(_0x48e1fa,_0x4c9295){return function(_0x573028){if(_0x573028){var _0x4b8a05=typeof _0x4c9295['offset']==='undefined'&&typeof _0x4c9295['limit']===_0xe15c('0x1a');var _0x33c01d=_0x573028['count'];var _0x3ef2be=_0x4b8a05?0x0:_0x4c9295[_0xe15c('0x1b')];var _0x58edae=_0x4b8a05?_0x573028[_0xe15c('0x1c')]:_0x4c9295[_0xe15c('0x1b')]+_0x4c9295['limit'];var _0x5a7cbb;if(_0x58edae>=_0x33c01d){_0x58edae=_0x33c01d;_0x5a7cbb=0xc8;}else{_0x5a7cbb=0xce;}_0x48e1fa[_0xe15c('0x17')](_0x5a7cbb);return _0x48e1fa[_0xe15c('0x1d')]('Content-Range',_0x3ef2be+'-'+_0x58edae+'/'+_0x33c01d)['json'](_0x573028);}return null;};}function patchUpdates(_0x5b44fd){return function(_0x2c4402){try{jsonpatch[_0xe15c('0x1e')](_0x2c4402,_0x5b44fd,!![]);}catch(_0x1f8191){return BPromise['reject'](_0x1f8191);}return _0x2c4402[_0xe15c('0x1f')]();};}function saveUpdates(_0x3a7961,_0x24a6dc){return function(_0x3c8292){if(_0x3c8292){return _0x3c8292[_0xe15c('0x20')](_0x3a7961)[_0xe15c('0x21')](function(_0x2c2c56){return _0x2c2c56;});}return null;};}function removeEntity(_0x423410,_0x413f55){return function(_0x2ccea3){if(_0x2ccea3){return _0x2ccea3[_0xe15c('0x22')]()[_0xe15c('0x21')](function(){_0x423410[_0xe15c('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1022be,_0x14270e){return function(_0x2651ad){if(!_0x2651ad){_0x1022be[_0xe15c('0x16')](0x194);}return _0x2651ad;};}function handleError(_0x2dfeac,_0x1687a0){_0x1687a0=_0x1687a0||0x1f4;return function(_0x22f48e){logger[_0xe15c('0x23')](_0x22f48e[_0xe15c('0x24')]);if(_0x22f48e[_0xe15c('0x25')]){delete _0x22f48e[_0xe15c('0x25')];}_0x2dfeac[_0xe15c('0x17')](_0x1687a0)['send'](_0x22f48e);};}exports[_0xe15c('0x26')]=function(_0x35712d,_0x3402a6){var _0x24dd75={},_0x3a7181={},_0x4543e0={'count':0x0,'rows':[]};var _0x384ad5=_[_0xe15c('0x27')](db[_0xe15c('0x28')][_0xe15c('0x29')],function(_0x43add3){return{'name':_0x43add3[_0xe15c('0x2a')],'type':_0x43add3['type'][_0xe15c('0x2b')]};});_0x3a7181[_0xe15c('0x2c')]=_[_0xe15c('0x27')](_0x384ad5,_0xe15c('0x25'));_0x3a7181[_0xe15c('0x2d')]=_[_0xe15c('0x2e')](_0x35712d[_0xe15c('0x2d')]);_0x3a7181[_0xe15c('0x2f')]=_['intersection'](_0x3a7181[_0xe15c('0x2c')],_0x3a7181[_0xe15c('0x2d')]);_0x24dd75[_0xe15c('0x30')]=_[_0xe15c('0x31')](_0x3a7181[_0xe15c('0x2c')],qs[_0xe15c('0x32')](_0x35712d[_0xe15c('0x2d')]['fields']));_0x24dd75['attributes']=_0x24dd75[_0xe15c('0x30')][_0xe15c('0x33')]?_0x24dd75[_0xe15c('0x30')]:_0x3a7181[_0xe15c('0x2c')];if(!_0x35712d[_0xe15c('0x2d')][_0xe15c('0x34')](_0xe15c('0x35'))){_0x24dd75[_0xe15c('0x36')]=qs['limit'](_0x35712d['query'][_0xe15c('0x36')]);_0x24dd75['offset']=qs[_0xe15c('0x1b')](_0x35712d['query']['offset']);}_0x24dd75['order']=qs[_0xe15c('0x37')](_0x35712d[_0xe15c('0x2d')][_0xe15c('0x37')]);_0x24dd75[_0xe15c('0x38')]=qs[_0xe15c('0x2f')](_[_0xe15c('0x39')](_0x35712d[_0xe15c('0x2d')],_0x3a7181[_0xe15c('0x2f')]),_0x384ad5);if(_0x35712d[_0xe15c('0x2d')]['filter']){_0x24dd75[_0xe15c('0x38')]=_[_0xe15c('0x3a')](_0x24dd75[_0xe15c('0x38')],{'$or':_[_0xe15c('0x27')](_0x384ad5,function(_0xb122d1){if(_0xb122d1[_0xe15c('0x3b')]!==_0xe15c('0x3c')){var _0x46228e={};_0x46228e[_0xb122d1[_0xe15c('0x25')]]={'$like':'%'+_0x35712d[_0xe15c('0x2d')][_0xe15c('0x3d')]+'%'};return _0x46228e;}})});}_0x24dd75=_[_0xe15c('0x3a')]({},_0x24dd75,_0x35712d[_0xe15c('0x3e')]);var _0x910d6a={'where':_0x24dd75[_0xe15c('0x38')]};return db[_0xe15c('0x28')][_0xe15c('0x1c')](_0x910d6a)[_0xe15c('0x21')](function(_0x23cef7){_0x4543e0[_0xe15c('0x1c')]=_0x23cef7;if(_0x35712d[_0xe15c('0x2d')][_0xe15c('0x3f')]){_0x24dd75[_0xe15c('0x40')]=[{'all':!![]}];}return db[_0xe15c('0x28')][_0xe15c('0x41')](_0x24dd75);})[_0xe15c('0x21')](function(_0x1292a){_0x4543e0['rows']=_0x1292a;return _0x4543e0;})[_0xe15c('0x21')](respondWithFilteredResult(_0x3402a6,_0x24dd75))[_0xe15c('0x42')](handleError(_0x3402a6,null));};exports[_0xe15c('0x43')]=function(_0xfadea1,_0x22c1c9){var _0x57611f={'raw':![],'where':{'id':_0xfadea1['params']['id']}},_0x14bf34={};_0x14bf34['model']=_['keys'](db[_0xe15c('0x28')][_0xe15c('0x29')]);_0x14bf34[_0xe15c('0x2d')]=_['keys'](_0xfadea1['query']);_0x14bf34[_0xe15c('0x2f')]=_[_0xe15c('0x31')](_0x14bf34['model'],_0x14bf34[_0xe15c('0x2d')]);_0x57611f[_0xe15c('0x30')]=_[_0xe15c('0x31')](_0x14bf34['model'],qs[_0xe15c('0x32')](_0xfadea1['query'][_0xe15c('0x32')]));_0x57611f[_0xe15c('0x30')]=_0x57611f[_0xe15c('0x30')][_0xe15c('0x33')]?_0x57611f[_0xe15c('0x30')]:_0x14bf34[_0xe15c('0x2c')];if(_0xfadea1[_0xe15c('0x2d')][_0xe15c('0x3f')]){_0x57611f['include']=[{'all':!![]}];}_0x57611f=_[_0xe15c('0x3a')]({},_0x57611f,_0xfadea1[_0xe15c('0x3e')]);return db[_0xe15c('0x28')][_0xe15c('0x44')](_0x57611f)[_0xe15c('0x21')](handleEntityNotFound(_0x22c1c9,null))[_0xe15c('0x21')](respondWithResult(_0x22c1c9,null))[_0xe15c('0x42')](handleError(_0x22c1c9,null));};exports[_0xe15c('0x45')]=function(_0x289377,_0x121c98){return db[_0xe15c('0x28')]['create'](_0x289377[_0xe15c('0x46')],{})[_0xe15c('0x21')](respondWithResult(_0x121c98,0xc9))[_0xe15c('0x42')](handleError(_0x121c98,null));};exports[_0xe15c('0x20')]=function(_0x12c968,_0x38871e){if(_0x12c968[_0xe15c('0x46')]['id']){delete _0x12c968[_0xe15c('0x46')]['id'];}return db[_0xe15c('0x28')][_0xe15c('0x44')]({'where':{'id':_0x12c968[_0xe15c('0x47')]['id']}})['then'](handleEntityNotFound(_0x38871e,null))[_0xe15c('0x21')](saveUpdates(_0x12c968['body'],null))['then'](respondWithResult(_0x38871e,null))['catch'](handleError(_0x38871e,null));};exports[_0xe15c('0x22')]=function(_0x5ebb0c,_0x47df25){return db[_0xe15c('0x28')][_0xe15c('0x44')]({'where':{'id':_0x5ebb0c[_0xe15c('0x47')]['id']}})[_0xe15c('0x21')](handleEntityNotFound(_0x47df25,null))[_0xe15c('0x21')](removeEntity(_0x47df25,null))[_0xe15c('0x42')](handleError(_0x47df25,null));};exports[_0xe15c('0x48')]=function(_0x454df4,_0x1eff0b,_0x5bec23){var _0x55e8ae={};var _0x1deb82={};var _0x385d49;var _0x6cf17e;return db[_0xe15c('0x28')]['findOne']({'where':{'id':_0x454df4['params']['id']}})[_0xe15c('0x21')](handleEntityNotFound(_0x1eff0b,null))[_0xe15c('0x21')](function(_0x14ab9b){if(_0x14ab9b){_0x385d49=_0x14ab9b;_0x1deb82['model']=_[_0xe15c('0x2e')](db[_0xe15c('0x49')][_0xe15c('0x29')]);_0x1deb82[_0xe15c('0x2d')]=_['keys'](_0x454df4[_0xe15c('0x2d')]);_0x1deb82['filters']=_[_0xe15c('0x31')](_0x1deb82['model'],_0x1deb82[_0xe15c('0x2d')]);_0x55e8ae['attributes']=_['intersection'](_0x1deb82[_0xe15c('0x2c')],qs[_0xe15c('0x32')](_0x454df4[_0xe15c('0x2d')][_0xe15c('0x32')]));_0x55e8ae[_0xe15c('0x30')]=_0x55e8ae[_0xe15c('0x30')][_0xe15c('0x33')]?_0x55e8ae[_0xe15c('0x30')]:_0x1deb82['model'];_0x55e8ae['order']=qs[_0xe15c('0x37')](_0x454df4[_0xe15c('0x2d')][_0xe15c('0x37')]);_0x55e8ae[_0xe15c('0x38')]=qs[_0xe15c('0x2f')](_[_0xe15c('0x39')](_0x454df4[_0xe15c('0x2d')],_0x1deb82[_0xe15c('0x2f')]));if(_0x454df4[_0xe15c('0x2d')][_0xe15c('0x3d')]){_0x55e8ae['where']=_[_0xe15c('0x3a')](_0x55e8ae['where'],{'$or':_['map'](_0x55e8ae['attributes'],function(_0x49d66f){var _0x586558={};_0x586558[_0x49d66f]={'$like':'%'+_0x454df4[_0xe15c('0x2d')][_0xe15c('0x3d')]+'%'};return _0x586558;})});}_0x55e8ae=_['merge']({},_0x55e8ae,_0x454df4[_0xe15c('0x3e')]);return _0x385d49['getFields'](_0x55e8ae);}})['then'](function(_0x220375){if(_0x220375){_0x6cf17e=_0x220375[_0xe15c('0x33')];if(!_0x454df4[_0xe15c('0x2d')][_0xe15c('0x34')](_0xe15c('0x35'))){_0x55e8ae[_0xe15c('0x36')]=qs['limit'](_0x454df4['query']['limit']);_0x55e8ae[_0xe15c('0x1b')]=qs[_0xe15c('0x1b')](_0x454df4[_0xe15c('0x2d')][_0xe15c('0x1b')]);}return _0x385d49[_0xe15c('0x48')](_0x55e8ae);}})[_0xe15c('0x21')](function(_0x373398){if(_0x373398){return _0x373398?{'count':_0x6cf17e,'rows':_0x373398}:null;}})['then'](respondWithResult(_0x1eff0b,null))['catch'](handleError(_0x1eff0b,null));};exports[_0xe15c('0x4a')]=function(_0x402ea0,_0xf8033b,_0x9d1cbc){var _0x1b4174={};var _0x57a2fa={};var _0xffbc63;var _0x499eec;return db[_0xe15c('0x28')][_0xe15c('0x4b')]({'where':{'id':_0x402ea0[_0xe15c('0x47')]['id']}})[_0xe15c('0x21')](handleEntityNotFound(_0xf8033b,null))[_0xe15c('0x21')](function(_0x227398){if(_0x227398){_0xffbc63=_0x227398;_0x57a2fa['model']=_[_0xe15c('0x2e')](db[_0xe15c('0x49')][_0xe15c('0x29')]);_0x57a2fa[_0xe15c('0x2d')]=_[_0xe15c('0x2e')](_0x402ea0[_0xe15c('0x2d')]);_0x57a2fa[_0xe15c('0x2f')]=_[_0xe15c('0x31')](_0x57a2fa['model'],_0x57a2fa['query']);_0x1b4174['attributes']=_[_0xe15c('0x31')](_0x57a2fa[_0xe15c('0x2c')],qs[_0xe15c('0x32')](_0x402ea0[_0xe15c('0x2d')][_0xe15c('0x32')]));_0x1b4174[_0xe15c('0x30')]=_0x1b4174[_0xe15c('0x30')]['length']?_0x1b4174[_0xe15c('0x30')]:_0x57a2fa[_0xe15c('0x2c')];_0x1b4174[_0xe15c('0x4c')]=qs[_0xe15c('0x37')](_0x402ea0['query'][_0xe15c('0x37')]);_0x1b4174['where']=qs[_0xe15c('0x2f')](_['pick'](_0x402ea0[_0xe15c('0x2d')],_0x57a2fa['filters']));if(_0x402ea0[_0xe15c('0x2d')][_0xe15c('0x3d')]){_0x1b4174[_0xe15c('0x38')]=_[_0xe15c('0x3a')](_0x1b4174['where'],{'$or':_[_0xe15c('0x27')](_0x1b4174['attributes'],function(_0x4421e2){var _0xe0a4a7={};_0xe0a4a7[_0x4421e2]={'$like':'%'+_0x402ea0['query']['filter']+'%'};return _0xe0a4a7;})});}_0x1b4174=_[_0xe15c('0x3a')]({},_0x1b4174,_0x402ea0['options']);return _0xffbc63['getSubjects'](_0x1b4174);}})['then'](function(_0x11e493){if(_0x11e493){_0x499eec=_0x11e493[_0xe15c('0x33')];if(!_0x402ea0[_0xe15c('0x2d')][_0xe15c('0x34')](_0xe15c('0x35'))){_0x1b4174['limit']=qs[_0xe15c('0x36')](_0x402ea0[_0xe15c('0x2d')][_0xe15c('0x36')]);_0x1b4174[_0xe15c('0x1b')]=qs[_0xe15c('0x1b')](_0x402ea0[_0xe15c('0x2d')][_0xe15c('0x1b')]);}return _0xffbc63[_0xe15c('0x4a')](_0x1b4174);}})['then'](function(_0x2b2789){if(_0x2b2789){return _0x2b2789?{'count':_0x499eec,'rows':_0x2b2789}:null;}})[_0xe15c('0x21')](respondWithResult(_0xf8033b,null))[_0xe15c('0x42')](handleError(_0xf8033b,null));};exports[_0xe15c('0x4d')]=function(_0x3cddea,_0x26a00a,_0x4e0b89){var _0x1b9224={};var _0xb55796={};var _0x12b516;var _0x1af93a;return db[_0xe15c('0x28')]['findOne']({'where':{'id':_0x3cddea['params']['id']}})[_0xe15c('0x21')](handleEntityNotFound(_0x26a00a,null))[_0xe15c('0x21')](function(_0xa27463){if(_0xa27463){_0x12b516=_0xa27463;_0xb55796['model']=_[_0xe15c('0x2e')](db['DeskField'][_0xe15c('0x29')]);_0xb55796[_0xe15c('0x2d')]=_[_0xe15c('0x2e')](_0x3cddea[_0xe15c('0x2d')]);_0xb55796['filters']=_[_0xe15c('0x31')](_0xb55796['model'],_0xb55796[_0xe15c('0x2d')]);_0x1b9224[_0xe15c('0x30')]=_['intersection'](_0xb55796[_0xe15c('0x2c')],qs['fields'](_0x3cddea[_0xe15c('0x2d')]['fields']));_0x1b9224[_0xe15c('0x30')]=_0x1b9224[_0xe15c('0x30')][_0xe15c('0x33')]?_0x1b9224['attributes']:_0xb55796[_0xe15c('0x2c')];_0x1b9224[_0xe15c('0x4c')]=qs[_0xe15c('0x37')](_0x3cddea[_0xe15c('0x2d')]['sort']);_0x1b9224[_0xe15c('0x38')]=qs[_0xe15c('0x2f')](_[_0xe15c('0x39')](_0x3cddea['query'],_0xb55796[_0xe15c('0x2f')]));if(_0x3cddea[_0xe15c('0x2d')][_0xe15c('0x3d')]){_0x1b9224[_0xe15c('0x38')]=_[_0xe15c('0x3a')](_0x1b9224[_0xe15c('0x38')],{'$or':_[_0xe15c('0x27')](_0x1b9224[_0xe15c('0x30')],function(_0xc1f627){var _0x32367a={};_0x32367a[_0xc1f627]={'$like':'%'+_0x3cddea['query'][_0xe15c('0x3d')]+'%'};return _0x32367a;})});}_0x1b9224=_[_0xe15c('0x3a')]({},_0x1b9224,_0x3cddea[_0xe15c('0x3e')]);return _0x12b516[_0xe15c('0x4d')](_0x1b9224);}})[_0xe15c('0x21')](function(_0x2c5b49){if(_0x2c5b49){_0x1af93a=_0x2c5b49['length'];if(!_0x3cddea[_0xe15c('0x2d')]['hasOwnProperty']('nolimit')){_0x1b9224[_0xe15c('0x36')]=qs[_0xe15c('0x36')](_0x3cddea[_0xe15c('0x2d')][_0xe15c('0x36')]);_0x1b9224[_0xe15c('0x1b')]=qs['offset'](_0x3cddea['query'][_0xe15c('0x1b')]);}return _0x12b516[_0xe15c('0x4d')](_0x1b9224);}})[_0xe15c('0x21')](function(_0x575dfa){if(_0x575dfa){return _0x575dfa?{'count':_0x1af93a,'rows':_0x575dfa}:null;}})[_0xe15c('0x21')](respondWithResult(_0x26a00a,null))['catch'](handleError(_0x26a00a,null));};exports['getTags']=function(_0x2227da,_0x1f3794,_0x4fd4ae){var _0x37d65e={};var _0x5552de={};var _0x571d13;var _0x41a126;return db[_0xe15c('0x28')][_0xe15c('0x4b')]({'where':{'id':_0x2227da[_0xe15c('0x47')]['id']}})[_0xe15c('0x21')](handleEntityNotFound(_0x1f3794,null))['then'](function(_0x2a9bd4){if(_0x2a9bd4){_0x571d13=_0x2a9bd4;_0x5552de['model']=_[_0xe15c('0x2e')](db[_0xe15c('0x4e')][_0xe15c('0x29')]);_0x5552de[_0xe15c('0x2d')]=_[_0xe15c('0x2e')](_0x2227da[_0xe15c('0x2d')]);_0x5552de['filters']=_[_0xe15c('0x31')](_0x5552de[_0xe15c('0x2c')],_0x5552de[_0xe15c('0x2d')]);_0x37d65e[_0xe15c('0x30')]=_['intersection'](_0x5552de['model'],qs[_0xe15c('0x32')](_0x2227da[_0xe15c('0x2d')]['fields']));_0x37d65e['attributes']=_0x37d65e[_0xe15c('0x30')][_0xe15c('0x33')]?_0x37d65e[_0xe15c('0x30')]:_0x5552de['model'];_0x37d65e[_0xe15c('0x4c')]=qs[_0xe15c('0x37')](_0x2227da[_0xe15c('0x2d')]['sort']);_0x37d65e['where']=qs[_0xe15c('0x2f')](_[_0xe15c('0x39')](_0x2227da[_0xe15c('0x2d')],_0x5552de['filters']));if(_0x2227da[_0xe15c('0x2d')][_0xe15c('0x3d')]){_0x37d65e['where']=_[_0xe15c('0x3a')](_0x37d65e['where'],{'$or':_[_0xe15c('0x27')](_0x37d65e[_0xe15c('0x30')],function(_0x287a4b){var _0x8855d0={};_0x8855d0[_0x287a4b]={'$like':'%'+_0x2227da[_0xe15c('0x2d')][_0xe15c('0x3d')]+'%'};return _0x8855d0;})});}_0x37d65e=_[_0xe15c('0x3a')]({},_0x37d65e,_0x2227da[_0xe15c('0x3e')]);return _0x571d13[_0xe15c('0x4f')](_0x37d65e);}})['then'](function(_0x1a0d42){if(_0x1a0d42){_0x41a126=_0x1a0d42['length'];if(!_0x2227da['query'][_0xe15c('0x34')](_0xe15c('0x35'))){_0x37d65e[_0xe15c('0x36')]=qs['limit'](_0x2227da['query'][_0xe15c('0x36')]);_0x37d65e[_0xe15c('0x1b')]=qs[_0xe15c('0x1b')](_0x2227da[_0xe15c('0x2d')][_0xe15c('0x1b')]);}return _0x571d13[_0xe15c('0x4f')](_0x37d65e);}})[_0xe15c('0x21')](function(_0xfce5fd){if(_0xfce5fd){return _0xfce5fd?{'count':_0x41a126,'rows':_0xfce5fd}:null;}})[_0xe15c('0x21')](respondWithResult(_0x1f3794,null))[_0xe15c('0x42')](handleError(_0x1f3794,null));};exports[_0xe15c('0x50')]=function(_0x3976d8,_0x1315b0,_0x25f43e){if(_0x3976d8[_0xe15c('0x46')]['id']){delete _0x3976d8['body']['id'];}return db[_0xe15c('0x28')]['findOne']({'where':{'id':_0x3976d8[_0xe15c('0x47')]['id']}})[_0xe15c('0x21')](handleEntityNotFound(_0x1315b0,null))[_0xe15c('0x21')](function(_0x245ba3){if(_0x245ba3){return _0x245ba3['setTags'](_0x3976d8[_0xe15c('0x46')][_0xe15c('0x51')]||[]);}return null;})[_0xe15c('0x21')](respondWithResult(_0x1315b0,null))[_0xe15c('0x42')](handleError(_0x1315b0,null));};
\ No newline at end of file
index 30e9a4d..eb0c563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4dd=['rimraf','./intDeskConfiguration.attributes','define','int_desk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x26cec1,_0x594b18){var _0x1a8362=function(_0x39ffc2){while(--_0x39ffc2){_0x26cec1['push'](_0x26cec1['shift']());}};_0x1a8362(++_0x594b18);}(_0xf4dd,0xb4));var _0xdf4d=function(_0x439403,_0x2c9db9){_0x439403=_0x439403-0x0;var _0x5d4cab=_0xf4dd[_0x439403];return _0x5d4cab;};'use strict';var _=require(_0xdf4d('0x0'));var util=require(_0xdf4d('0x1'));var logger=require(_0xdf4d('0x2'))(_0xdf4d('0x3'));var moment=require(_0xdf4d('0x4'));var BPromise=require(_0xdf4d('0x5'));var rp=require(_0xdf4d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf4d('0x7'));var config=require('../../config/environment');var attributes=require(_0xdf4d('0x8'));module['exports']=function(_0x41d806,_0x50ebf6){return _0x41d806[_0xdf4d('0x9')]('DeskConfiguration',attributes,{'tableName':_0xdf4d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8c0c=['define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x8c0c,0x11b));var _0xc8c0=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x8c0c[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xc8c0('0x0'));var util=require(_0xc8c0('0x1'));var logger=require(_0xc8c0('0x2'))(_0xc8c0('0x3'));var moment=require(_0xc8c0('0x4'));var BPromise=require(_0xc8c0('0x5'));var rp=require(_0xc8c0('0x6'));var fs=require('fs');var path=require(_0xc8c0('0x7'));var rimraf=require(_0xc8c0('0x8'));var config=require(_0xc8c0('0x9'));var attributes=require('./intDeskConfiguration.attributes');module[_0xc8c0('0xa')]=function(_0x20d616,_0x3f117e){return _0x20d616[_0xc8c0('0xb')](_0xc8c0('0xc'),attributes,{'tableName':_0xc8c0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e7d68f..f1ae9fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x943d=['error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x25177f,_0x2bdc7a){var _0x50f563=function(_0x364659){while(--_0x364659){_0x25177f['push'](_0x25177f['shift']());}};_0x50f563(++_0x2bdc7a);}(_0x943d,0x155));var _0xd943=function(_0x26d6d9,_0x431cb8){_0x26d6d9=_0x26d6d9-0x0;var _0x1b4875=_0x943d[_0x26d6d9];return _0x1b4875;};'use strict';var _=require('lodash');var util=require(_0xd943('0x0'));var moment=require(_0xd943('0x1'));var BPromise=require(_0xd943('0x2'));var rs=require(_0xd943('0x3'));var fs=require('fs');var Redis=require(_0xd943('0x4'));var db=require(_0xd943('0x5'))['db'];var utils=require(_0xd943('0x6'));var logger=require(_0xd943('0x7'))(_0xd943('0x8'));var config=require(_0xd943('0x9'));var jayson=require(_0xd943('0xa'));var client=jayson[_0xd943('0xb')][_0xd943('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xda86b0,_0x59f1aa,_0xde0f48){return new BPromise(function(_0x22e5f7,_0x2671e6){return client[_0xd943('0xd')](_0xda86b0,_0xde0f48)['then'](function(_0x31c801){logger[_0xd943('0xe')](_0xd943('0xf'),_0x59f1aa,_0xd943('0x10'));logger[_0xd943('0x11')](_0xd943('0x12'),_0x59f1aa,'request\x20sent',JSON['stringify'](_0x31c801));if(_0x31c801[_0xd943('0x13')]){if(_0x31c801['error'][_0xd943('0x14')]===0x1f4){logger[_0xd943('0x13')]('DeskConfiguration,\x20%s,\x20%s',_0x59f1aa,_0x31c801[_0xd943('0x13')][_0xd943('0x15')]);return _0x2671e6(_0x31c801[_0xd943('0x13')][_0xd943('0x15')]);}logger['error'](_0xd943('0xf'),_0x59f1aa,_0x31c801[_0xd943('0x13')]['message']);return _0x22e5f7(_0x31c801[_0xd943('0x13')]['message']);}else{logger[_0xd943('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x59f1aa,'request\x20sent');_0x22e5f7(_0x31c801[_0xd943('0x16')]['message']);}})[_0xd943('0x17')](function(_0x305e45){logger[_0xd943('0x13')]('DeskConfiguration,\x20%s,\x20%s',_0x59f1aa,_0x305e45);_0x2671e6(_0x305e45);});});}
\ No newline at end of file
+var _0x0007=['request','then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','DeskConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0xcd6c4f,_0x312b97){var _0x164611=function(_0x41b717){while(--_0x41b717){_0xcd6c4f['push'](_0xcd6c4f['shift']());}};_0x164611(++_0x312b97);}(_0x0007,0x1ee));var _0x7000=function(_0x547640,_0x579b2a){_0x547640=_0x547640-0x0;var _0x481c2a=_0x0007[_0x547640];return _0x481c2a;};'use strict';var _=require(_0x7000('0x0'));var util=require(_0x7000('0x1'));var moment=require(_0x7000('0x2'));var BPromise=require('bluebird');var rs=require(_0x7000('0x3'));var fs=require('fs');var Redis=require(_0x7000('0x4'));var db=require(_0x7000('0x5'))['db'];var utils=require(_0x7000('0x6'));var logger=require('../../config/logger')(_0x7000('0x7'));var config=require(_0x7000('0x8'));var jayson=require(_0x7000('0x9'));var client=jayson[_0x7000('0xa')][_0x7000('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c8169,_0x2d762c,_0x4cb728){return new BPromise(function(_0x4071df,_0x1b55d5){return client[_0x7000('0xc')](_0x3c8169,_0x4cb728)[_0x7000('0xd')](function(_0x1707f4){logger[_0x7000('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x2d762c,_0x7000('0xf'));logger[_0x7000('0x10')](_0x7000('0x11'),_0x2d762c,_0x7000('0xf'),JSON[_0x7000('0x12')](_0x1707f4));if(_0x1707f4[_0x7000('0x13')]){if(_0x1707f4['error']['code']===0x1f4){logger[_0x7000('0x13')](_0x7000('0x14'),_0x2d762c,_0x1707f4[_0x7000('0x13')]['message']);return _0x1b55d5(_0x1707f4[_0x7000('0x13')][_0x7000('0x15')]);}logger['error'](_0x7000('0x14'),_0x2d762c,_0x1707f4[_0x7000('0x13')]['message']);return _0x4071df(_0x1707f4[_0x7000('0x13')][_0x7000('0x15')]);}else{logger[_0x7000('0xe')](_0x7000('0x14'),_0x2d762c,'request\x20sent');_0x4071df(_0x1707f4[_0x7000('0x16')]['message']);}})['catch'](function(_0x42691f){logger[_0x7000('0x13')]('DeskConfiguration,\x20%s,\x20%s',_0x2d762c,_0x42691f);_0x1b55d5(_0x42691f);});});}
\ No newline at end of file
index 6279f74..728a3a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5732=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','/:id','post','create','put','destroy'];(function(_0x41c78e,_0x3f3bb7){var _0xd71007=function(_0xfce14c){while(--_0xfce14c){_0x41c78e['push'](_0x41c78e['shift']());}};_0xd71007(++_0x3f3bb7);}(_0x5732,0x177));var _0x2573=function(_0x161dff,_0x3a5ce9){_0x161dff=_0x161dff-0x0;var _0x19455c=_0x5732[_0x161dff];return _0x19455c;};'use strict';var multer=require(_0x2573('0x0'));var util=require(_0x2573('0x1'));var path=require(_0x2573('0x2'));var timeout=require(_0x2573('0x3'));var express=require(_0x2573('0x4'));var router=express['Router']();var fs_extra=require(_0x2573('0x5'));var auth=require(_0x2573('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2573('0x7'));var controller=require(_0x2573('0x8'));router[_0x2573('0x9')]('/',auth[_0x2573('0xa')](),controller['index']);router[_0x2573('0x9')](_0x2573('0xb'),auth[_0x2573('0xa')](),controller['show']);router[_0x2573('0xc')]('/',auth['isAuthenticated'](),controller[_0x2573('0xd')]);router[_0x2573('0xe')](_0x2573('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x2573('0xb'),auth[_0x2573('0xa')](),controller[_0x2573('0xf')]);module[_0x2573('0x10')]=router;
\ No newline at end of file
+var _0x980c=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x1a0220,_0x291b08){var _0x1ad9de=function(_0xd88b73){while(--_0xd88b73){_0x1a0220['push'](_0x1a0220['shift']());}};_0x1ad9de(++_0x291b08);}(_0x980c,0x100));var _0xc980=function(_0x2dc6cd,_0x18c50f){_0x2dc6cd=_0x2dc6cd-0x0;var _0x2db92c=_0x980c[_0x2dc6cd];return _0x2db92c;};'use strict';var multer=require(_0xc980('0x0'));var util=require(_0xc980('0x1'));var path=require(_0xc980('0x2'));var timeout=require(_0xc980('0x3'));var express=require(_0xc980('0x4'));var router=express[_0xc980('0x5')]();var fs_extra=require(_0xc980('0x6'));var auth=require(_0xc980('0x7'));var interaction=require(_0xc980('0x8'));var config=require(_0xc980('0x9'));var controller=require(_0xc980('0xa'));router['get']('/',auth[_0xc980('0xb')](),controller[_0xc980('0xc')]);router[_0xc980('0xd')](_0xc980('0xe'),auth[_0xc980('0xb')](),controller[_0xc980('0xf')]);router[_0xc980('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xc980('0xe'),auth['isAuthenticated'](),controller[_0xc980('0x11')]);router[_0xc980('0x12')](_0xc980('0xe'),auth['isAuthenticated'](),controller[_0xc980('0x13')]);module[_0xc980('0x14')]=router;
\ No newline at end of file
index e6adfbc..9278d3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb94=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x965346,_0x386e2c){var _0x4c7e0a=function(_0x25b907){while(--_0x25b907){_0x965346['push'](_0x965346['shift']());}};_0x4c7e0a(++_0x386e2c);}(_0xdb94,0x158));var _0x4db9=function(_0x5e1199,_0x2b42e8){_0x5e1199=_0x5e1199-0x0;var _0x417785=_0xdb94[_0x5e1199];return _0x417785;};'use strict';var Sequelize=require(_0x4db9('0x0'));module[_0x4db9('0x1')]={'type':{'type':Sequelize[_0x4db9('0x2')](_0x4db9('0x3'),_0x4db9('0x4'),_0x4db9('0x5'),_0x4db9('0x6'),_0x4db9('0x7')),'defaultValue':_0x4db9('0x3')},'content':{'type':Sequelize[_0x4db9('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x4db9('0x2')](_0x4db9('0x3'),_0x4db9('0x4'),_0x4db9('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4db9('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x4db9('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4db9('0x8')]}};
\ No newline at end of file
+var _0x745c=['exports','ENUM','string','variable','customVariable','STRING','BOOLEAN','sequelize'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0x745c,0x12f));var _0xc745=function(_0x4db483,_0x5293a9){_0x4db483=_0x4db483-0x0;var _0x401534=_0x745c[_0x4db483];return _0x401534;};'use strict';var Sequelize=require(_0xc745('0x0'));module[_0xc745('0x1')]={'type':{'type':Sequelize[_0xc745('0x2')](_0xc745('0x3'),_0xc745('0x4'),_0xc745('0x5'),'keyValue','picklist'),'defaultValue':_0xc745('0x3')},'content':{'type':Sequelize[_0xc745('0x6')]},'key':{'type':Sequelize[_0xc745('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xc745('0x3'),_0xc745('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xc745('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xc745('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d35f7ce..3bb4f23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa3f=['apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','DeskField','include','rows','show','params','includeAll','catch','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x4b3f3e,_0x47dfcc){var _0x921fc3=function(_0x3e4b3b){while(--_0x3e4b3b){_0x4b3f3e['push'](_0x4b3f3e['shift']());}};_0x921fc3(++_0x47dfcc);}(_0xaa3f,0xbb));var _0xfaa3=function(_0xeb6b36,_0x159863){_0xeb6b36=_0xeb6b36-0x0;var _0xbac1b2=_0xaa3f[_0xeb6b36];return _0xbac1b2;};'use strict';var emlformat=require(_0xfaa3('0x0'));var rimraf=require(_0xfaa3('0x1'));var zipdir=require(_0xfaa3('0x2'));var jsonpatch=require(_0xfaa3('0x3'));var rp=require(_0xfaa3('0x4'));var moment=require(_0xfaa3('0x5'));var BPromise=require(_0xfaa3('0x6'));var Mustache=require(_0xfaa3('0x7'));var util=require(_0xfaa3('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xfaa3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfaa3('0xa'));var _=require(_0xfaa3('0xb'));var squel=require(_0xfaa3('0xc'));var crypto=require(_0xfaa3('0xd'));var jsforce=require(_0xfaa3('0xe'));var deskjs=require(_0xfaa3('0xf'));var toCsv=require(_0xfaa3('0x9'));var querystring=require('querystring');var Papa=require(_0xfaa3('0x10'));var Redis=require(_0xfaa3('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xfaa3('0x12'));var hardwareService=require(_0xfaa3('0x13'));var logger=require(_0xfaa3('0x14'))(_0xfaa3('0x15'));var utils=require(_0xfaa3('0x16'));var config=require(_0xfaa3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xfaa3('0x18'))['db'];function respondWithStatusCode(_0x5be067,_0x1aa8e8){_0x1aa8e8=_0x1aa8e8||0xcc;return function(_0x2b8935){if(_0x2b8935){return _0x5be067[_0xfaa3('0x19')](_0x1aa8e8);}return _0x5be067['status'](_0x1aa8e8)[_0xfaa3('0x1a')]();};}function respondWithResult(_0x5f121b,_0xdf7551){_0xdf7551=_0xdf7551||0xc8;return function(_0x84b465){if(_0x84b465){return _0x5f121b[_0xfaa3('0x1b')](_0xdf7551)[_0xfaa3('0x1c')](_0x84b465);}};}function respondWithFilteredResult(_0x1243ed,_0x40831f){return function(_0x4da250){if(_0x4da250){var _0x5f47dd=typeof _0x40831f[_0xfaa3('0x1d')]===_0xfaa3('0x1e')&&typeof _0x40831f[_0xfaa3('0x1f')]===_0xfaa3('0x1e');var _0x4e54e4=_0x4da250['count'];var _0x50f121=_0x5f47dd?0x0:_0x40831f['offset'];var _0x499148=_0x5f47dd?_0x4da250[_0xfaa3('0x20')]:_0x40831f['offset']+_0x40831f[_0xfaa3('0x1f')];var _0x42846e;if(_0x499148>=_0x4e54e4){_0x499148=_0x4e54e4;_0x42846e=0xc8;}else{_0x42846e=0xce;}_0x1243ed[_0xfaa3('0x1b')](_0x42846e);return _0x1243ed[_0xfaa3('0x21')](_0xfaa3('0x22'),_0x50f121+'-'+_0x499148+'/'+_0x4e54e4)[_0xfaa3('0x1c')](_0x4da250);}return null;};}function patchUpdates(_0x1dd053){return function(_0x1ab9cc){try{jsonpatch[_0xfaa3('0x23')](_0x1ab9cc,_0x1dd053,!![]);}catch(_0x39e91e){return BPromise['reject'](_0x39e91e);}return _0x1ab9cc[_0xfaa3('0x24')]();};}function saveUpdates(_0x755038,_0x26d9ef){return function(_0x42b214){if(_0x42b214){return _0x42b214['update'](_0x755038)[_0xfaa3('0x25')](function(_0x2d4087){return _0x2d4087;});}return null;};}function removeEntity(_0x2f077c,_0x22156a){return function(_0x16a3e3){if(_0x16a3e3){return _0x16a3e3[_0xfaa3('0x26')]()[_0xfaa3('0x25')](function(){_0x2f077c[_0xfaa3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe075fc,_0x2a1ace){return function(_0x699e72){if(!_0x699e72){_0xe075fc[_0xfaa3('0x19')](0x194);}return _0x699e72;};}function handleError(_0x31c5cd,_0xf83bbe){_0xf83bbe=_0xf83bbe||0x1f4;return function(_0x2416fe){logger[_0xfaa3('0x27')](_0x2416fe[_0xfaa3('0x28')]);if(_0x2416fe[_0xfaa3('0x29')]){delete _0x2416fe[_0xfaa3('0x29')];}_0x31c5cd[_0xfaa3('0x1b')](_0xf83bbe)[_0xfaa3('0x2a')](_0x2416fe);};}exports[_0xfaa3('0x2b')]=function(_0x2d7c43,_0x5b84cd){var _0x230430={},_0x104343={},_0xc2e71={'count':0x0,'rows':[]};var _0x54bc09=_[_0xfaa3('0x2c')](db['DeskField'][_0xfaa3('0x2d')],function(_0x5d37bb){return{'name':_0x5d37bb[_0xfaa3('0x2e')],'type':_0x5d37bb[_0xfaa3('0x2f')][_0xfaa3('0x30')]};});_0x104343[_0xfaa3('0x31')]=_[_0xfaa3('0x2c')](_0x54bc09,_0xfaa3('0x29'));_0x104343[_0xfaa3('0x32')]=_[_0xfaa3('0x33')](_0x2d7c43['query']);_0x104343[_0xfaa3('0x34')]=_[_0xfaa3('0x35')](_0x104343[_0xfaa3('0x31')],_0x104343[_0xfaa3('0x32')]);_0x230430[_0xfaa3('0x36')]=_[_0xfaa3('0x35')](_0x104343[_0xfaa3('0x31')],qs[_0xfaa3('0x37')](_0x2d7c43[_0xfaa3('0x32')][_0xfaa3('0x37')]));_0x230430[_0xfaa3('0x36')]=_0x230430[_0xfaa3('0x36')][_0xfaa3('0x38')]?_0x230430[_0xfaa3('0x36')]:_0x104343[_0xfaa3('0x31')];if(!_0x2d7c43[_0xfaa3('0x32')]['hasOwnProperty'](_0xfaa3('0x39'))){_0x230430[_0xfaa3('0x1f')]=qs[_0xfaa3('0x1f')](_0x2d7c43[_0xfaa3('0x32')][_0xfaa3('0x1f')]);_0x230430[_0xfaa3('0x1d')]=qs[_0xfaa3('0x1d')](_0x2d7c43[_0xfaa3('0x32')]['offset']);}_0x230430[_0xfaa3('0x3a')]=qs[_0xfaa3('0x3b')](_0x2d7c43[_0xfaa3('0x32')]['sort']);_0x230430[_0xfaa3('0x3c')]=qs[_0xfaa3('0x34')](_['pick'](_0x2d7c43[_0xfaa3('0x32')],_0x104343[_0xfaa3('0x34')]),_0x54bc09);if(_0x2d7c43[_0xfaa3('0x32')][_0xfaa3('0x3d')]){_0x230430[_0xfaa3('0x3c')]=_[_0xfaa3('0x3e')](_0x230430['where'],{'$or':_['map'](_0x54bc09,function(_0x41498d){if(_0x41498d[_0xfaa3('0x2f')]!=='VIRTUAL'){var _0x4ae1c3={};_0x4ae1c3[_0x41498d[_0xfaa3('0x29')]]={'$like':'%'+_0x2d7c43['query'][_0xfaa3('0x3d')]+'%'};return _0x4ae1c3;}})});}_0x230430=_[_0xfaa3('0x3e')]({},_0x230430,_0x2d7c43[_0xfaa3('0x3f')]);var _0x3fb71d={'where':_0x230430[_0xfaa3('0x3c')]};return db[_0xfaa3('0x40')][_0xfaa3('0x20')](_0x3fb71d)[_0xfaa3('0x25')](function(_0x551cd5){_0xc2e71['count']=_0x551cd5;if(_0x2d7c43['query']['includeAll']){_0x230430[_0xfaa3('0x41')]=[{'all':!![]}];}return db[_0xfaa3('0x40')]['findAll'](_0x230430);})[_0xfaa3('0x25')](function(_0xa83a03){_0xc2e71[_0xfaa3('0x42')]=_0xa83a03;return _0xc2e71;})['then'](respondWithFilteredResult(_0x5b84cd,_0x230430))['catch'](handleError(_0x5b84cd,null));};exports[_0xfaa3('0x43')]=function(_0x4c19fc,_0x1701bc){var _0x57b77c={'raw':!![],'where':{'id':_0x4c19fc[_0xfaa3('0x44')]['id']}},_0x59b4d7={};_0x59b4d7[_0xfaa3('0x31')]=_['keys'](db[_0xfaa3('0x40')]['rawAttributes']);_0x59b4d7[_0xfaa3('0x32')]=_['keys'](_0x4c19fc[_0xfaa3('0x32')]);_0x59b4d7[_0xfaa3('0x34')]=_[_0xfaa3('0x35')](_0x59b4d7['model'],_0x59b4d7[_0xfaa3('0x32')]);_0x57b77c[_0xfaa3('0x36')]=_['intersection'](_0x59b4d7[_0xfaa3('0x31')],qs[_0xfaa3('0x37')](_0x4c19fc[_0xfaa3('0x32')][_0xfaa3('0x37')]));_0x57b77c['attributes']=_0x57b77c[_0xfaa3('0x36')][_0xfaa3('0x38')]?_0x57b77c['attributes']:_0x59b4d7[_0xfaa3('0x31')];if(_0x4c19fc['query'][_0xfaa3('0x45')]){_0x57b77c[_0xfaa3('0x41')]=[{'all':!![]}];}_0x57b77c=_[_0xfaa3('0x3e')]({},_0x57b77c,_0x4c19fc['options']);return db[_0xfaa3('0x40')]['find'](_0x57b77c)['then'](handleEntityNotFound(_0x1701bc,null))[_0xfaa3('0x25')](respondWithResult(_0x1701bc,null))[_0xfaa3('0x46')](handleError(_0x1701bc,null));};exports[_0xfaa3('0x47')]=function(_0x27feb6,_0x1a4fa4){return db[_0xfaa3('0x40')][_0xfaa3('0x47')](_0x27feb6['body'],{})[_0xfaa3('0x25')](respondWithResult(_0x1a4fa4,0xc9))[_0xfaa3('0x46')](handleError(_0x1a4fa4,null));};exports[_0xfaa3('0x48')]=function(_0x72f502,_0x431725){if(_0x72f502[_0xfaa3('0x49')]['id']){delete _0x72f502[_0xfaa3('0x49')]['id'];}return db['DeskField']['find']({'where':{'id':_0x72f502['params']['id']}})[_0xfaa3('0x25')](handleEntityNotFound(_0x431725,null))[_0xfaa3('0x25')](saveUpdates(_0x72f502[_0xfaa3('0x49')],null))[_0xfaa3('0x25')](respondWithResult(_0x431725,null))['catch'](handleError(_0x431725,null));};exports[_0xfaa3('0x26')]=function(_0x50336d,_0x513d3e){return db['DeskField']['find']({'where':{'id':_0x50336d['params']['id']}})[_0xfaa3('0x25')](handleEntityNotFound(_0x513d3e,null))[_0xfaa3('0x25')](removeEntity(_0x513d3e,null))[_0xfaa3('0x46')](handleError(_0x513d3e,null));};
\ No newline at end of file
+var _0x8efc=['find','create','body','zip-dir','request-promise','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','DeskField','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','filters','pick','filter','where','merge','map','VIRTUAL','options','includeAll','include','rows','catch','params','keys'];(function(_0x1bf8f9,_0x38211b){var _0xbbf851=function(_0x38a050){while(--_0x38a050){_0x1bf8f9['push'](_0x1bf8f9['shift']());}};_0xbbf851(++_0x38211b);}(_0x8efc,0x8f));var _0xc8ef=function(_0x2b0f81,_0x3917f0){_0x2b0f81=_0x2b0f81-0x0;var _0x5ce74c=_0x8efc[_0x2b0f81];return _0x5ce74c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc8ef('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc8ef('0x1'));var moment=require('moment');var BPromise=require(_0xc8ef('0x2'));var Mustache=require(_0xc8ef('0x3'));var util=require('util');var path=require('path');var sox=require(_0xc8ef('0x4'));var csv=require('to-csv');var ejs=require(_0xc8ef('0x5'));var fs=require('fs');var fs_extra=require(_0xc8ef('0x6'));var _=require(_0xc8ef('0x7'));var squel=require(_0xc8ef('0x8'));var crypto=require(_0xc8ef('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xc8ef('0xa'));var toCsv=require('to-csv');var querystring=require(_0xc8ef('0xb'));var Papa=require(_0xc8ef('0xc'));var Redis=require(_0xc8ef('0xd'));var authService=require(_0xc8ef('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8ef('0xf'))(_0xc8ef('0x10'));var utils=require(_0xc8ef('0x11'));var config=require(_0xc8ef('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xc8ef('0x13'))['db'];function respondWithStatusCode(_0x99f830,_0x1fe67c){_0x1fe67c=_0x1fe67c||0xcc;return function(_0xacbea6){if(_0xacbea6){return _0x99f830[_0xc8ef('0x14')](_0x1fe67c);}return _0x99f830[_0xc8ef('0x15')](_0x1fe67c)[_0xc8ef('0x16')]();};}function respondWithResult(_0x529a48,_0x5d7d43){_0x5d7d43=_0x5d7d43||0xc8;return function(_0x562685){if(_0x562685){return _0x529a48[_0xc8ef('0x15')](_0x5d7d43)[_0xc8ef('0x17')](_0x562685);}};}function respondWithFilteredResult(_0x3ff131,_0x474ecf){return function(_0x27d098){if(_0x27d098){var _0x19054b=typeof _0x474ecf[_0xc8ef('0x18')]===_0xc8ef('0x19')&&typeof _0x474ecf['limit']==='undefined';var _0x38cad6=_0x27d098[_0xc8ef('0x1a')];var _0x166ec4=_0x19054b?0x0:_0x474ecf[_0xc8ef('0x18')];var _0x5a2815=_0x19054b?_0x27d098['count']:_0x474ecf['offset']+_0x474ecf['limit'];var _0x14f7a0;if(_0x5a2815>=_0x38cad6){_0x5a2815=_0x38cad6;_0x14f7a0=0xc8;}else{_0x14f7a0=0xce;}_0x3ff131['status'](_0x14f7a0);return _0x3ff131[_0xc8ef('0x1b')](_0xc8ef('0x1c'),_0x166ec4+'-'+_0x5a2815+'/'+_0x38cad6)[_0xc8ef('0x17')](_0x27d098);}return null;};}function patchUpdates(_0x5ed093){return function(_0x3a75ed){try{jsonpatch[_0xc8ef('0x1d')](_0x3a75ed,_0x5ed093,!![]);}catch(_0x190ec2){return BPromise[_0xc8ef('0x1e')](_0x190ec2);}return _0x3a75ed[_0xc8ef('0x1f')]();};}function saveUpdates(_0x2dcc21,_0x1db74d){return function(_0x16bf51){if(_0x16bf51){return _0x16bf51[_0xc8ef('0x20')](_0x2dcc21)[_0xc8ef('0x21')](function(_0x1790d1){return _0x1790d1;});}return null;};}function removeEntity(_0x104fbd,_0x52f695){return function(_0x509619){if(_0x509619){return _0x509619[_0xc8ef('0x22')]()[_0xc8ef('0x21')](function(){_0x104fbd[_0xc8ef('0x15')](0xcc)[_0xc8ef('0x16')]();});}};}function handleEntityNotFound(_0x16c6d4,_0x50238c){return function(_0x5093d3){if(!_0x5093d3){_0x16c6d4[_0xc8ef('0x14')](0x194);}return _0x5093d3;};}function handleError(_0xed0afc,_0x158a27){_0x158a27=_0x158a27||0x1f4;return function(_0x50bb55){logger[_0xc8ef('0x23')](_0x50bb55[_0xc8ef('0x24')]);if(_0x50bb55[_0xc8ef('0x25')]){delete _0x50bb55[_0xc8ef('0x25')];}_0xed0afc['status'](_0x158a27)['send'](_0x50bb55);};}exports[_0xc8ef('0x26')]=function(_0xc203df,_0xa257a3){var _0x59ec97={},_0x309985={},_0x118020={'count':0x0,'rows':[]};var _0x199af5=_['map'](db[_0xc8ef('0x27')][_0xc8ef('0x28')],function(_0x30dd95){return{'name':_0x30dd95[_0xc8ef('0x29')],'type':_0x30dd95[_0xc8ef('0x2a')]['key']};});_0x309985[_0xc8ef('0x2b')]=_['map'](_0x199af5,'name');_0x309985[_0xc8ef('0x2c')]=_['keys'](_0xc203df[_0xc8ef('0x2c')]);_0x309985['filters']=_['intersection'](_0x309985[_0xc8ef('0x2b')],_0x309985[_0xc8ef('0x2c')]);_0x59ec97[_0xc8ef('0x2d')]=_[_0xc8ef('0x2e')](_0x309985[_0xc8ef('0x2b')],qs[_0xc8ef('0x2f')](_0xc203df['query'][_0xc8ef('0x2f')]));_0x59ec97[_0xc8ef('0x2d')]=_0x59ec97['attributes'][_0xc8ef('0x30')]?_0x59ec97['attributes']:_0x309985['model'];if(!_0xc203df[_0xc8ef('0x2c')][_0xc8ef('0x31')](_0xc8ef('0x32'))){_0x59ec97[_0xc8ef('0x33')]=qs['limit'](_0xc203df[_0xc8ef('0x2c')][_0xc8ef('0x33')]);_0x59ec97[_0xc8ef('0x18')]=qs[_0xc8ef('0x18')](_0xc203df[_0xc8ef('0x2c')][_0xc8ef('0x18')]);}_0x59ec97[_0xc8ef('0x34')]=qs['sort'](_0xc203df[_0xc8ef('0x2c')]['sort']);_0x59ec97['where']=qs[_0xc8ef('0x35')](_[_0xc8ef('0x36')](_0xc203df[_0xc8ef('0x2c')],_0x309985[_0xc8ef('0x35')]),_0x199af5);if(_0xc203df[_0xc8ef('0x2c')][_0xc8ef('0x37')]){_0x59ec97[_0xc8ef('0x38')]=_[_0xc8ef('0x39')](_0x59ec97[_0xc8ef('0x38')],{'$or':_[_0xc8ef('0x3a')](_0x199af5,function(_0x2f0af0){if(_0x2f0af0[_0xc8ef('0x2a')]!==_0xc8ef('0x3b')){var _0x54060c={};_0x54060c[_0x2f0af0['name']]={'$like':'%'+_0xc203df[_0xc8ef('0x2c')][_0xc8ef('0x37')]+'%'};return _0x54060c;}})});}_0x59ec97=_[_0xc8ef('0x39')]({},_0x59ec97,_0xc203df[_0xc8ef('0x3c')]);var _0xe367e6={'where':_0x59ec97['where']};return db[_0xc8ef('0x27')][_0xc8ef('0x1a')](_0xe367e6)['then'](function(_0x283524){_0x118020[_0xc8ef('0x1a')]=_0x283524;if(_0xc203df[_0xc8ef('0x2c')][_0xc8ef('0x3d')]){_0x59ec97[_0xc8ef('0x3e')]=[{'all':!![]}];}return db[_0xc8ef('0x27')]['findAll'](_0x59ec97);})['then'](function(_0x23d924){_0x118020[_0xc8ef('0x3f')]=_0x23d924;return _0x118020;})[_0xc8ef('0x21')](respondWithFilteredResult(_0xa257a3,_0x59ec97))[_0xc8ef('0x40')](handleError(_0xa257a3,null));};exports['show']=function(_0x1bed68,_0x380218){var _0x56f689={'raw':!![],'where':{'id':_0x1bed68[_0xc8ef('0x41')]['id']}},_0x12c772={};_0x12c772[_0xc8ef('0x2b')]=_[_0xc8ef('0x42')](db['DeskField'][_0xc8ef('0x28')]);_0x12c772[_0xc8ef('0x2c')]=_[_0xc8ef('0x42')](_0x1bed68[_0xc8ef('0x2c')]);_0x12c772[_0xc8ef('0x35')]=_[_0xc8ef('0x2e')](_0x12c772[_0xc8ef('0x2b')],_0x12c772[_0xc8ef('0x2c')]);_0x56f689[_0xc8ef('0x2d')]=_[_0xc8ef('0x2e')](_0x12c772[_0xc8ef('0x2b')],qs[_0xc8ef('0x2f')](_0x1bed68[_0xc8ef('0x2c')][_0xc8ef('0x2f')]));_0x56f689[_0xc8ef('0x2d')]=_0x56f689[_0xc8ef('0x2d')]['length']?_0x56f689[_0xc8ef('0x2d')]:_0x12c772[_0xc8ef('0x2b')];if(_0x1bed68['query'][_0xc8ef('0x3d')]){_0x56f689['include']=[{'all':!![]}];}_0x56f689=_[_0xc8ef('0x39')]({},_0x56f689,_0x1bed68['options']);return db[_0xc8ef('0x27')][_0xc8ef('0x43')](_0x56f689)['then'](handleEntityNotFound(_0x380218,null))['then'](respondWithResult(_0x380218,null))['catch'](handleError(_0x380218,null));};exports['create']=function(_0x3061b7,_0x33e72f){return db[_0xc8ef('0x27')][_0xc8ef('0x44')](_0x3061b7[_0xc8ef('0x45')],{})['then'](respondWithResult(_0x33e72f,0xc9))['catch'](handleError(_0x33e72f,null));};exports['update']=function(_0x1c25f2,_0x3517a8){if(_0x1c25f2[_0xc8ef('0x45')]['id']){delete _0x1c25f2[_0xc8ef('0x45')]['id'];}return db[_0xc8ef('0x27')][_0xc8ef('0x43')]({'where':{'id':_0x1c25f2['params']['id']}})[_0xc8ef('0x21')](handleEntityNotFound(_0x3517a8,null))[_0xc8ef('0x21')](saveUpdates(_0x1c25f2['body'],null))[_0xc8ef('0x21')](respondWithResult(_0x3517a8,null))['catch'](handleError(_0x3517a8,null));};exports[_0xc8ef('0x22')]=function(_0x4ad7ec,_0x4ce944){return db[_0xc8ef('0x27')]['find']({'where':{'id':_0x4ad7ec[_0xc8ef('0x41')]['id']}})[_0xc8ef('0x21')](handleEntityNotFound(_0x4ce944,null))[_0xc8ef('0x21')](removeEntity(_0x4ce944,null))[_0xc8ef('0x40')](handleError(_0x4ce944,null));};
\ No newline at end of file
index d77c9e2..63db53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ae=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','int_desk_fields','desk_unique_index','idField','FieldId','lodash'];(function(_0x419c4a,_0x5d525d){var _0x4dae37=function(_0x95e7cd){while(--_0x95e7cd){_0x419c4a['push'](_0x419c4a['shift']());}};_0x4dae37(++_0x5d525d);}(_0x84ae,0x10d));var _0xe84a=function(_0x4f9e31,_0x19881c){_0x4f9e31=_0x4f9e31-0x0;var _0x2f9fc7=_0x84ae[_0x4f9e31];return _0x2f9fc7;};'use strict';var _=require(_0xe84a('0x0'));var util=require(_0xe84a('0x1'));var logger=require(_0xe84a('0x2'))(_0xe84a('0x3'));var moment=require(_0xe84a('0x4'));var BPromise=require('bluebird');var rp=require(_0xe84a('0x5'));var fs=require('fs');var path=require(_0xe84a('0x6'));var rimraf=require(_0xe84a('0x7'));var config=require(_0xe84a('0x8'));var attributes=require(_0xe84a('0x9'));module[_0xe84a('0xa')]=function(_0x2d7b04,_0x50cf4d){return _0x2d7b04['define']('DeskField',attributes,{'tableName':_0xe84a('0xb'),'paranoid':![],'indexes':[{'name':_0xe84a('0xc'),'fields':[_0xe84a('0xd'),_0xe84a('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x26f9=['desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./intDeskField.attributes','exports','define','DeskField','int_desk_fields'];(function(_0xa7c5de,_0x49fb4d){var _0x4140b3=function(_0x687001){while(--_0x687001){_0xa7c5de['push'](_0xa7c5de['shift']());}};_0x4140b3(++_0x49fb4d);}(_0x26f9,0x113));var _0x926f=function(_0x4235b3,_0x4295b9){_0x4235b3=_0x4235b3-0x0;var _0x5a6cc9=_0x26f9[_0x4235b3];return _0x5a6cc9;};'use strict';var _=require(_0x926f('0x0'));var util=require(_0x926f('0x1'));var logger=require(_0x926f('0x2'))(_0x926f('0x3'));var moment=require(_0x926f('0x4'));var BPromise=require('bluebird');var rp=require(_0x926f('0x5'));var fs=require('fs');var path=require(_0x926f('0x6'));var rimraf=require(_0x926f('0x7'));var config=require('../../config/environment');var attributes=require(_0x926f('0x8'));module[_0x926f('0x9')]=function(_0x6ffa9,_0x2207ee){return _0x6ffa9[_0x926f('0xa')](_0x926f('0xb'),attributes,{'tableName':_0x926f('0xc'),'paranoid':![],'indexes':[{'name':_0x926f('0xd'),'fields':[_0x926f('0xe'),_0x926f('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0cc199b..41c9abc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e5=['stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','jayson/promise','client','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5a75e7,_0x3ad506){var _0x15c695=function(_0x4ba933){while(--_0x4ba933){_0x5a75e7['push'](_0x5a75e7['shift']());}};_0x15c695(++_0x3ad506);}(_0xe1e5,0x1a4));var _0x5e1e=function(_0x388899,_0x17f370){_0x388899=_0x388899-0x0;var _0x3be17d=_0xe1e5[_0x388899];return _0x3be17d;};'use strict';var _=require('lodash');var util=require(_0x5e1e('0x0'));var moment=require('moment');var BPromise=require(_0x5e1e('0x1'));var rs=require(_0x5e1e('0x2'));var fs=require('fs');var Redis=require(_0x5e1e('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x5e1e('0x4'));var client=jayson[_0x5e1e('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e81b1,_0x194ffb,_0x260cc4){return new BPromise(function(_0x3fc97f,_0x1aa8f7){return client[_0x5e1e('0x6')](_0x5e81b1,_0x260cc4)[_0x5e1e('0x7')](function(_0x462eed){logger[_0x5e1e('0x8')](_0x5e1e('0x9'),_0x194ffb,_0x5e1e('0xa'));logger[_0x5e1e('0xb')]('DeskField,\x20%s,\x20%s,\x20%s',_0x194ffb,_0x5e1e('0xa'),JSON[_0x5e1e('0xc')](_0x462eed));if(_0x462eed[_0x5e1e('0xd')]){if(_0x462eed[_0x5e1e('0xd')][_0x5e1e('0xe')]===0x1f4){logger[_0x5e1e('0xd')](_0x5e1e('0x9'),_0x194ffb,_0x462eed[_0x5e1e('0xd')][_0x5e1e('0xf')]);return _0x1aa8f7(_0x462eed[_0x5e1e('0xd')]['message']);}logger['error'](_0x5e1e('0x9'),_0x194ffb,_0x462eed['error'][_0x5e1e('0xf')]);return _0x3fc97f(_0x462eed['error']['message']);}else{logger[_0x5e1e('0x8')](_0x5e1e('0x9'),_0x194ffb,_0x5e1e('0xa'));_0x3fc97f(_0x462eed[_0x5e1e('0x10')][_0x5e1e('0xf')]);}})[_0x5e1e('0x11')](function(_0x1b428a){logger[_0x5e1e('0xd')](_0x5e1e('0x9'),_0x194ffb,_0x1b428a);_0x1aa8f7(_0x1b428a);});});}
\ No newline at end of file
+var _0x446e=['http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x4dd4b9,_0x6cb94a){var _0x57c4c3=function(_0x7998d9){while(--_0x7998d9){_0x4dd4b9['push'](_0x4dd4b9['shift']());}};_0x57c4c3(++_0x6cb94a);}(_0x446e,0x1ad));var _0xe446=function(_0x5cad19,_0x4a74be){_0x5cad19=_0x5cad19-0x0;var _0xf75610=_0x446e[_0x5cad19];return _0xf75610;};'use strict';var _=require(_0xe446('0x0'));var util=require(_0xe446('0x1'));var moment=require(_0xe446('0x2'));var BPromise=require(_0xe446('0x3'));var rs=require(_0xe446('0x4'));var fs=require('fs');var Redis=require(_0xe446('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe446('0x6'));var logger=require('../../config/logger')(_0xe446('0x7'));var config=require(_0xe446('0x8'));var jayson=require(_0xe446('0x9'));var client=jayson[_0xe446('0xa')][_0xe446('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40c624,_0x2f3fb3,_0x31e741){return new BPromise(function(_0xaea555,_0xb1cc03){return client[_0xe446('0xc')](_0x40c624,_0x31e741)[_0xe446('0xd')](function(_0x3b2581){logger[_0xe446('0xe')](_0xe446('0xf'),_0x2f3fb3,_0xe446('0x10'));logger['debug'](_0xe446('0x11'),_0x2f3fb3,_0xe446('0x10'),JSON['stringify'](_0x3b2581));if(_0x3b2581[_0xe446('0x12')]){if(_0x3b2581[_0xe446('0x12')][_0xe446('0x13')]===0x1f4){logger[_0xe446('0x12')]('DeskField,\x20%s,\x20%s',_0x2f3fb3,_0x3b2581[_0xe446('0x12')][_0xe446('0x14')]);return _0xb1cc03(_0x3b2581[_0xe446('0x12')]['message']);}logger['error'](_0xe446('0xf'),_0x2f3fb3,_0x3b2581[_0xe446('0x12')][_0xe446('0x14')]);return _0xaea555(_0x3b2581[_0xe446('0x12')][_0xe446('0x14')]);}else{logger[_0xe446('0xe')](_0xe446('0xf'),_0x2f3fb3,_0xe446('0x10'));_0xaea555(_0x3b2581[_0xe446('0x15')]['message']);}})['catch'](function(_0x402e84){logger[_0xe446('0x12')](_0xe446('0xf'),_0x2f3fb3,_0x402e84);_0xb1cc03(_0x402e84);});});}
\ No newline at end of file
index b54c5c4..1c67228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f2=['getFields','post','addConfiguration','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x5b5ffe,_0xa8bf6e){var _0x4c2fb0=function(_0x48ca31){while(--_0x48ca31){_0x5b5ffe['push'](_0x5b5ffe['shift']());}};_0x4c2fb0(++_0xa8bf6e);}(_0x31f2,0x134));var _0x231f=function(_0x270d5e,_0x4188b6){_0x270d5e=_0x270d5e-0x0;var _0x3ede92=_0x31f2[_0x270d5e];return _0x3ede92;};'use strict';var multer=require(_0x231f('0x0'));var util=require('util');var path=require(_0x231f('0x1'));var timeout=require(_0x231f('0x2'));var express=require(_0x231f('0x3'));var router=express[_0x231f('0x4')]();var fs_extra=require(_0x231f('0x5'));var auth=require(_0x231f('0x6'));var interaction=require(_0x231f('0x7'));var config=require(_0x231f('0x8'));var controller=require(_0x231f('0x9'));router[_0x231f('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x231f('0xa')](_0x231f('0xb'),auth[_0x231f('0xc')](),controller[_0x231f('0xd')]);router[_0x231f('0xa')](_0x231f('0xe'),auth[_0x231f('0xc')](),controller[_0x231f('0xf')]);router['get'](_0x231f('0x10'),auth[_0x231f('0xc')](),controller[_0x231f('0x11')]);router[_0x231f('0x12')]('/',auth[_0x231f('0xc')](),controller['create']);router['post'](_0x231f('0xe'),auth[_0x231f('0xc')](),controller[_0x231f('0x13')]);router[_0x231f('0x14')](_0x231f('0xb'),auth['isAuthenticated'](),controller[_0x231f('0x15')]);router[_0x231f('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x231f('0x17')]);module[_0x231f('0x18')]=router;
\ No newline at end of file
+var _0xcb64=['addConfiguration','put','update','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post'];(function(_0x5f2196,_0x4a2474){var _0x5028b0=function(_0x3df0b2){while(--_0x3df0b2){_0x5f2196['push'](_0x5f2196['shift']());}};_0x5028b0(++_0x4a2474);}(_0xcb64,0x1e8));var _0x4cb6=function(_0x27a56c,_0x2c7165){_0x27a56c=_0x27a56c-0x0;var _0x3dd069=_0xcb64[_0x27a56c];return _0x3dd069;};'use strict';var multer=require(_0x4cb6('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4cb6('0x1'));var router=express[_0x4cb6('0x2')]();var fs_extra=require(_0x4cb6('0x3'));var auth=require(_0x4cb6('0x4'));var interaction=require(_0x4cb6('0x5'));var config=require('../../config/environment');var controller=require(_0x4cb6('0x6'));router[_0x4cb6('0x7')]('/',auth[_0x4cb6('0x8')](),controller[_0x4cb6('0x9')]);router[_0x4cb6('0x7')](_0x4cb6('0xa'),auth[_0x4cb6('0x8')](),controller[_0x4cb6('0xb')]);router[_0x4cb6('0x7')](_0x4cb6('0xc'),auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0x4cb6('0xd'),auth[_0x4cb6('0x8')](),controller[_0x4cb6('0xe')]);router[_0x4cb6('0xf')]('/',auth[_0x4cb6('0x8')](),controller['create']);router['post']('/:id/configurations',auth['isAuthenticated'](),controller[_0x4cb6('0x10')]);router[_0x4cb6('0x11')](_0x4cb6('0xa'),auth[_0x4cb6('0x8')](),controller[_0x4cb6('0x12')]);router['delete'](_0x4cb6('0xa'),auth['isAuthenticated'](),controller[_0x4cb6('0x13')]);module[_0x4cb6('0x14')]=router;
\ No newline at end of file
index fc92984..efe7265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0bd=['exports','STRING','sequelize'];(function(_0x3f993e,_0x2d5757){var _0x39c135=function(_0x39e00b){while(--_0x39e00b){_0x3f993e['push'](_0x3f993e['shift']());}};_0x39c135(++_0x2d5757);}(_0xd0bd,0x191));var _0xdd0b=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xd0bd[_0x433a86];return _0x23000c;};'use strict';var Sequelize=require(_0xdd0b('0x0'));module[_0xdd0b('0x1')]={'name':{'type':Sequelize[_0xdd0b('0x2')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xdd0b('0x2')]},'clientId':{'type':Sequelize[_0xdd0b('0x2')]},'clientSecret':{'type':Sequelize[_0xdd0b('0x2')]},'serverUrl':{'type':Sequelize[_0xdd0b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xdd0b('0x2')]}};
\ No newline at end of file
+var _0x59f2=['STRING','exports'];(function(_0x2a5088,_0x7de10c){var _0x885842=function(_0x523af4){while(--_0x523af4){_0x2a5088['push'](_0x2a5088['shift']());}};_0x885842(++_0x7de10c);}(_0x59f2,0x1a3));var _0x259f=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x59f2[_0xd1d19a];return _0x52a79d;};'use strict';var Sequelize=require('sequelize');module[_0x259f('0x0')]={'name':{'type':Sequelize[_0x259f('0x1')]},'username':{'type':Sequelize[_0x259f('0x1')]},'password':{'type':Sequelize[_0x259f('0x1')]},'remoteUri':{'type':Sequelize[_0x259f('0x1')]},'tenantId':{'type':Sequelize[_0x259f('0x1')]},'clientId':{'type':Sequelize[_0x259f('0x1')]},'clientSecret':{'type':Sequelize[_0x259f('0x1')]},'serverUrl':{'type':Sequelize[_0x259f('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x259f('0x1')]}};
\ No newline at end of file
index 7ffc8a6..f246347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c52=['create','catch','body','params','destroy','getConfigurations','Dynamics365Configuration','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','title','description','customerid','caseorigincode','subject','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyname','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','escalatedon','exchangerate','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','msdyn_incidenttypename','msdyn_iotalertname','owneridname','owneridtype','owneridyominame','parentcaseidname','prioritycodename','productidname','productserialnumber','resolveby','responseby','responsiblecontactidname','sentimentvalue','slainvokedidname','slaname','socialprofileidname','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','concat','findOne','remoteUri','clientId','clientSecret','substring','lastIndexOf','format','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','username','password','GET','4.0','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','all','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Label','TrueOption','UserLocalizedLabel','true','FalseOption','false','DisplayName','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','apply','reject','save','update','then','error','stack','name','send','Dynamics365Account','rawAttributes','fieldName','key','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','offset','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','model','find'];(function(_0x276afc,_0xdd3dfe){var _0xa3a8c8=function(_0x3dd81f){while(--_0x3dd81f){_0x276afc['push'](_0x276afc['shift']());}};_0xa3a8c8(++_0xdd3dfe);}(_0x8c52,0x7e));var _0x28c5=function(_0x5ad0d0,_0x3e145f){_0x5ad0d0=_0x5ad0d0-0x0;var _0x38fc1d=_0x8c52[_0x5ad0d0];return _0x38fc1d;};'use strict';var emlformat=require(_0x28c5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x28c5('0x1'));var jsonpatch=require(_0x28c5('0x2'));var rp=require(_0x28c5('0x3'));var moment=require(_0x28c5('0x4'));var BPromise=require(_0x28c5('0x5'));var Mustache=require(_0x28c5('0x6'));var util=require(_0x28c5('0x7'));var path=require(_0x28c5('0x8'));var sox=require(_0x28c5('0x9'));var csv=require(_0x28c5('0xa'));var ejs=require(_0x28c5('0xb'));var fs=require('fs');var fs_extra=require(_0x28c5('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x28c5('0xd'));var toCsv=require(_0x28c5('0xa'));var querystring=require(_0x28c5('0xe'));var Papa=require('papaparse');var Redis=require(_0x28c5('0xf'));var authService=require(_0x28c5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x28c5('0x11'));var hardwareService=require(_0x28c5('0x12'));var logger=require(_0x28c5('0x13'))(_0x28c5('0x14'));var utils=require(_0x28c5('0x15'));var config=require(_0x28c5('0x16'));var licenseUtil=require(_0x28c5('0x17'));var db=require(_0x28c5('0x18'))['db'];var integrations=require(_0x28c5('0x19'));function respondWithStatusCode(_0x477fe1,_0x55f5af){_0x55f5af=_0x55f5af||0xcc;return function(_0x168f0f){if(_0x168f0f){return _0x477fe1[_0x28c5('0x1a')](_0x55f5af);}return _0x477fe1[_0x28c5('0x1b')](_0x55f5af)[_0x28c5('0x1c')]();};}function respondWithResult(_0x57cfde,_0x4520ea){_0x4520ea=_0x4520ea||0xc8;return function(_0x236732){if(_0x236732){return _0x57cfde[_0x28c5('0x1b')](_0x4520ea)[_0x28c5('0x1d')](_0x236732);}};}function respondWithFilteredResult(_0x477f2e,_0x33cd69){return function(_0x199b0e){if(_0x199b0e){var _0x583349=typeof _0x33cd69['offset']===_0x28c5('0x1e')&&typeof _0x33cd69[_0x28c5('0x1f')]===_0x28c5('0x1e');var _0x5214c6=_0x199b0e[_0x28c5('0x20')];var _0x584d37=_0x583349?0x0:_0x33cd69['offset'];var _0x25df97=_0x583349?_0x199b0e[_0x28c5('0x20')]:_0x33cd69['offset']+_0x33cd69[_0x28c5('0x1f')];var _0x2824ee;if(_0x25df97>=_0x5214c6){_0x25df97=_0x5214c6;_0x2824ee=0xc8;}else{_0x2824ee=0xce;}_0x477f2e['status'](_0x2824ee);return _0x477f2e['set']('Content-Range',_0x584d37+'-'+_0x25df97+'/'+_0x5214c6)[_0x28c5('0x1d')](_0x199b0e);}return null;};}function patchUpdates(_0x21ffab){return function(_0x3a1130){try{jsonpatch[_0x28c5('0x21')](_0x3a1130,_0x21ffab,!![]);}catch(_0x44c597){return BPromise[_0x28c5('0x22')](_0x44c597);}return _0x3a1130[_0x28c5('0x23')]();};}function saveUpdates(_0xd74d86,_0x37a3fe){return function(_0x500fa9){if(_0x500fa9){return _0x500fa9[_0x28c5('0x24')](_0xd74d86)[_0x28c5('0x25')](function(_0x3b1f32){return _0x3b1f32;});}return null;};}function removeEntity(_0x43ecd0,_0x91d866){return function(_0x5a5370){if(_0x5a5370){return _0x5a5370['destroy']()['then'](function(){_0x43ecd0[_0x28c5('0x1b')](0xcc)[_0x28c5('0x1c')]();});}};}function handleEntityNotFound(_0x253625,_0x3486e7){return function(_0xbced9a){if(!_0xbced9a){_0x253625[_0x28c5('0x1a')](0x194);}return _0xbced9a;};}function handleError(_0x477cc2,_0x2e0cd8){_0x2e0cd8=_0x2e0cd8||0x1f4;return function(_0x5979b9){logger[_0x28c5('0x26')](_0x5979b9[_0x28c5('0x27')]);if(_0x5979b9[_0x28c5('0x28')]){delete _0x5979b9['name'];}_0x477cc2[_0x28c5('0x1b')](_0x2e0cd8)[_0x28c5('0x29')](_0x5979b9);};}exports['index']=function(_0x4784c3,_0x1aa359){var _0x87e4d4={},_0x323334={},_0x597420={'count':0x0,'rows':[]};var _0x352a88=_['map'](db[_0x28c5('0x2a')][_0x28c5('0x2b')],function(_0x2d3e8a){return{'name':_0x2d3e8a[_0x28c5('0x2c')],'type':_0x2d3e8a['type'][_0x28c5('0x2d')]};});_0x323334['model']=_[_0x28c5('0x2e')](_0x352a88,_0x28c5('0x28'));_0x323334[_0x28c5('0x2f')]=_[_0x28c5('0x30')](_0x4784c3['query']);_0x323334[_0x28c5('0x31')]=_[_0x28c5('0x32')](_0x323334['model'],_0x323334[_0x28c5('0x2f')]);_0x87e4d4[_0x28c5('0x33')]=_[_0x28c5('0x32')](_0x323334['model'],qs[_0x28c5('0x34')](_0x4784c3['query']['fields']));_0x87e4d4[_0x28c5('0x33')]=_0x87e4d4['attributes'][_0x28c5('0x35')]?_0x87e4d4['attributes']:_0x323334['model'];if(!_0x4784c3['query'][_0x28c5('0x36')]('nolimit')){_0x87e4d4[_0x28c5('0x1f')]=qs[_0x28c5('0x1f')](_0x4784c3[_0x28c5('0x2f')]['limit']);_0x87e4d4[_0x28c5('0x37')]=qs[_0x28c5('0x37')](_0x4784c3[_0x28c5('0x2f')][_0x28c5('0x37')]);}_0x87e4d4[_0x28c5('0x38')]=qs[_0x28c5('0x39')](_0x4784c3[_0x28c5('0x2f')][_0x28c5('0x39')]);_0x87e4d4[_0x28c5('0x3a')]=qs['filters'](_[_0x28c5('0x3b')](_0x4784c3[_0x28c5('0x2f')],_0x323334[_0x28c5('0x31')]),_0x352a88);if(_0x4784c3[_0x28c5('0x2f')]['filter']){_0x87e4d4['where']=_[_0x28c5('0x3c')](_0x87e4d4[_0x28c5('0x3a')],{'$or':_[_0x28c5('0x2e')](_0x352a88,function(_0x315c5f){if(_0x315c5f[_0x28c5('0x3d')]!==_0x28c5('0x3e')){var _0x5db9dd={};_0x5db9dd[_0x315c5f[_0x28c5('0x28')]]={'$like':'%'+_0x4784c3['query'][_0x28c5('0x3f')]+'%'};return _0x5db9dd;}})});}_0x87e4d4=_[_0x28c5('0x3c')]({},_0x87e4d4,_0x4784c3[_0x28c5('0x40')]);var _0x401f82={'where':_0x87e4d4[_0x28c5('0x3a')]};return db[_0x28c5('0x2a')][_0x28c5('0x20')](_0x401f82)[_0x28c5('0x25')](function(_0x5317ed){_0x597420['count']=_0x5317ed;if(_0x4784c3[_0x28c5('0x2f')][_0x28c5('0x41')]){_0x87e4d4[_0x28c5('0x42')]=[{'all':!![]}];}return db[_0x28c5('0x2a')][_0x28c5('0x43')](_0x87e4d4);})[_0x28c5('0x25')](function(_0x16ab57){_0x597420[_0x28c5('0x44')]=_0x16ab57;return _0x597420;})[_0x28c5('0x25')](respondWithFilteredResult(_0x1aa359,_0x87e4d4))['catch'](handleError(_0x1aa359,null));};exports[_0x28c5('0x45')]=function(_0x3448ff,_0x579055){var _0x580998={'raw':![],'where':{'id':_0x3448ff['params']['id']}},_0x1682f2={};_0x1682f2['model']=_['keys'](db['Dynamics365Account'][_0x28c5('0x2b')]);_0x1682f2[_0x28c5('0x2f')]=_[_0x28c5('0x30')](_0x3448ff[_0x28c5('0x2f')]);_0x1682f2[_0x28c5('0x31')]=_[_0x28c5('0x32')](_0x1682f2[_0x28c5('0x46')],_0x1682f2[_0x28c5('0x2f')]);_0x580998['attributes']=_[_0x28c5('0x32')](_0x1682f2['model'],qs[_0x28c5('0x34')](_0x3448ff[_0x28c5('0x2f')][_0x28c5('0x34')]));_0x580998[_0x28c5('0x33')]=_0x580998[_0x28c5('0x33')]['length']?_0x580998[_0x28c5('0x33')]:_0x1682f2[_0x28c5('0x46')];if(_0x3448ff['query'][_0x28c5('0x41')]){_0x580998['include']=[{'all':!![]}];}_0x580998=_[_0x28c5('0x3c')]({},_0x580998,_0x3448ff['options']);return db[_0x28c5('0x2a')][_0x28c5('0x47')](_0x580998)['then'](handleEntityNotFound(_0x579055,null))['then'](respondWithResult(_0x579055,null))['catch'](handleError(_0x579055,null));};exports[_0x28c5('0x48')]=function(_0x4fe58e,_0x174728){return db[_0x28c5('0x2a')][_0x28c5('0x48')](_0x4fe58e['body'],{})[_0x28c5('0x25')](respondWithResult(_0x174728,0xc9))[_0x28c5('0x49')](handleError(_0x174728,null));};exports[_0x28c5('0x24')]=function(_0x51c6b9,_0x22e3e7){if(_0x51c6b9[_0x28c5('0x4a')]['id']){delete _0x51c6b9[_0x28c5('0x4a')]['id'];}return db[_0x28c5('0x2a')][_0x28c5('0x47')]({'where':{'id':_0x51c6b9[_0x28c5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x22e3e7,null))['then'](saveUpdates(_0x51c6b9['body'],null))[_0x28c5('0x25')](respondWithResult(_0x22e3e7,null))[_0x28c5('0x49')](handleError(_0x22e3e7,null));};exports[_0x28c5('0x4c')]=function(_0x3f3237,_0x27d8c0){return db['Dynamics365Account'][_0x28c5('0x47')]({'where':{'id':_0x3f3237[_0x28c5('0x4b')]['id']}})[_0x28c5('0x25')](handleEntityNotFound(_0x27d8c0,null))['then'](removeEntity(_0x27d8c0,null))[_0x28c5('0x49')](handleError(_0x27d8c0,null));};exports[_0x28c5('0x4d')]=function(_0x551978,_0x2b3657,_0x10017b){var _0x14cbb8={};var _0x1ddf91={};var _0x474479;var _0x5f3f3c;return db[_0x28c5('0x2a')]['findOne']({'where':{'id':_0x551978[_0x28c5('0x4b')]['id']}})[_0x28c5('0x25')](handleEntityNotFound(_0x2b3657,null))[_0x28c5('0x25')](function(_0x30c20a){if(_0x30c20a){_0x474479=_0x30c20a;_0x1ddf91[_0x28c5('0x46')]=_[_0x28c5('0x30')](db[_0x28c5('0x4e')][_0x28c5('0x2b')]);_0x1ddf91[_0x28c5('0x2f')]=_['keys'](_0x551978[_0x28c5('0x2f')]);_0x1ddf91[_0x28c5('0x31')]=_['intersection'](_0x1ddf91[_0x28c5('0x46')],_0x1ddf91['query']);_0x14cbb8[_0x28c5('0x33')]=_[_0x28c5('0x32')](_0x1ddf91[_0x28c5('0x46')],qs[_0x28c5('0x34')](_0x551978['query'][_0x28c5('0x34')]));_0x14cbb8[_0x28c5('0x33')]=_0x14cbb8[_0x28c5('0x33')][_0x28c5('0x35')]?_0x14cbb8[_0x28c5('0x33')]:_0x1ddf91[_0x28c5('0x46')];_0x14cbb8[_0x28c5('0x38')]=qs['sort'](_0x551978[_0x28c5('0x2f')][_0x28c5('0x39')]);_0x14cbb8[_0x28c5('0x3a')]=qs[_0x28c5('0x31')](_[_0x28c5('0x3b')](_0x551978['query'],_0x1ddf91[_0x28c5('0x31')]));if(_0x551978['query'][_0x28c5('0x3f')]){_0x14cbb8[_0x28c5('0x3a')]=_['merge'](_0x14cbb8[_0x28c5('0x3a')],{'$or':_['map'](_0x14cbb8[_0x28c5('0x33')],function(_0x226ee3){var _0x1f2cd4={};_0x1f2cd4[_0x226ee3]={'$like':'%'+_0x551978[_0x28c5('0x2f')][_0x28c5('0x3f')]+'%'};return _0x1f2cd4;})});}_0x14cbb8=_[_0x28c5('0x3c')]({},_0x14cbb8,_0x551978[_0x28c5('0x40')]);return _0x474479['getConfigurations'](_0x14cbb8);}})[_0x28c5('0x25')](function(_0x3f0b98){if(_0x3f0b98){_0x5f3f3c=_0x3f0b98[_0x28c5('0x35')];if(!_0x551978['query']['hasOwnProperty'](_0x28c5('0x4f'))){_0x14cbb8[_0x28c5('0x1f')]=qs[_0x28c5('0x1f')](_0x551978['query']['limit']);_0x14cbb8['offset']=qs[_0x28c5('0x37')](_0x551978['query'][_0x28c5('0x37')]);}return _0x474479[_0x28c5('0x4d')](_0x14cbb8);}})[_0x28c5('0x25')](function(_0x500d54){if(_0x500d54){return _0x500d54?{'count':_0x5f3f3c,'rows':_0x500d54}:null;}})[_0x28c5('0x25')](respondWithResult(_0x2b3657,null))[_0x28c5('0x49')](handleError(_0x2b3657,null));};exports[_0x28c5('0x50')]=function(_0x6873b3,_0x5ad497,_0x125a96){if(_0x6873b3[_0x28c5('0x4a')]['id']){delete _0x6873b3[_0x28c5('0x4a')]['id'];}return db[_0x28c5('0x2a')]['findOne']({'where':{'id':_0x6873b3[_0x28c5('0x4b')]['id']}})[_0x28c5('0x25')](handleEntityNotFound(_0x5ad497,null))[_0x28c5('0x25')](function(_0x1b07d1){if(_0x1b07d1){_0x6873b3[_0x28c5('0x4a')][_0x28c5('0x51')]=_0x1b07d1['id'];_0x6873b3[_0x28c5('0x4a')][_0x28c5('0x52')]=integrations[_0x28c5('0x53')](_0x6873b3[_0x28c5('0x4a')][_0x28c5('0x54')],_0x6873b3[_0x28c5('0x4a')][_0x28c5('0x3d')]);_0x6873b3[_0x28c5('0x4a')][_0x28c5('0x55')]=integrations['getDescriptions'](_0x6873b3[_0x28c5('0x4a')][_0x28c5('0x54')],_0x6873b3[_0x28c5('0x4a')]['type']);return db['Dynamics365Configuration'][_0x28c5('0x48')](_0x6873b3[_0x28c5('0x4a')],{'include':[{'model':db[_0x28c5('0x56')],'as':'Subjects'},{'model':db[_0x28c5('0x56')],'as':_0x28c5('0x55')}]});}return null;})[_0x28c5('0x25')](respondWithResult(_0x5ad497,null))[_0x28c5('0x49')](handleError(_0x5ad497,null));};exports[_0x28c5('0x57')]=function(_0x29a229,_0x5a117b,_0x3e80a2){var _0x94c09e=_0x29a229[_0x28c5('0x2f')][_0x28c5('0x58')];var _0x228ad1=_0x94c09e===_0x28c5('0x59')?_0x28c5('0x5a'):_0x28c5('0x5b');var _0x427e20='';var _0x39f7e0='';var _0x1db071='';var _0x46c57f='';var _0xc4722a='';var _0x2fd39f='';var _0x3e02c7='';var _0x2205f6='';var _0x2f7fac=[_0x28c5('0x5c'),_0x28c5('0x5d'),_0x28c5('0x5e'),'ownerid',_0x28c5('0x5f'),_0x28c5('0x60'),'phonenumber','regardingobjectid','directioncode',_0x28c5('0x61')];var _0x560317=[_0x28c5('0x62'),_0x28c5('0x63'),_0x28c5('0x64'),_0x28c5('0x65'),_0x28c5('0x66'),_0x28c5('0x67'),_0x28c5('0x68'),'contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame',_0x28c5('0x69'),_0x28c5('0x6a'),'createdon',_0x28c5('0x6b'),_0x28c5('0x6c'),_0x28c5('0x6d'),_0x28c5('0x6e'),_0x28c5('0x6f'),_0x28c5('0x70'),'entitlementidname',_0x28c5('0x71'),'entityimage_url',_0x28c5('0x72'),_0x28c5('0x73'),'firstresponsebykpiidname','followupby',_0x28c5('0x74'),_0x28c5('0x75'),_0x28c5('0x76'),'lastonholdtime',_0x28c5('0x77'),_0x28c5('0x78'),_0x28c5('0x79'),_0x28c5('0x7a'),'modifiedbyyominame',_0x28c5('0x7b'),'modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0x28c5('0x7c'),_0x28c5('0x7d'),'numberofchildincidents','onholdtime','overriddencreatedon',_0x28c5('0x7e'),_0x28c5('0x7f'),_0x28c5('0x80'),_0x28c5('0x81'),'primarycontactidname','primarycontactidyominame',_0x28c5('0x82'),_0x28c5('0x83'),_0x28c5('0x84'),_0x28c5('0x85'),'resolvebykpiidname',_0x28c5('0x86'),_0x28c5('0x87'),'responsiblecontactidyominame',_0x28c5('0x88'),_0x28c5('0x89'),_0x28c5('0x8a'),_0x28c5('0x8b'),'statecode','statuscode',_0x28c5('0x8c'),_0x28c5('0x8d'),_0x28c5('0x8e'),_0x28c5('0x8f'),_0x28c5('0x90'),_0x28c5('0x91'),'versionnumber'];var _0x40d716=_0x2f7fac[_0x28c5('0x92')](_0x560317);return db[_0x28c5('0x2a')][_0x28c5('0x93')]({'where':{'id':_0x29a229['params']['id']},'attributes':['id','username','password',_0x28c5('0x94'),'tenantId',_0x28c5('0x95'),_0x28c5('0x96')]})[_0x28c5('0x25')](handleEntityNotFound(_0x5a117b,null))[_0x28c5('0x25')](function(_0x5248b1){if(_0x5248b1){_0x2205f6=_0x5248b1[_0x28c5('0x94')];var _0x55c0d2=_0x2205f6['slice'](-0x1);if(_0x55c0d2==='/'){_0x2205f6=_0x2205f6[_0x28c5('0x97')](0x0,_0x2205f6[_0x28c5('0x98')](_0x55c0d2));}_0x3e02c7=util[_0x28c5('0x99')](_0x28c5('0x9a'),_0x2205f6);var _0x2b2eb0={'method':_0x28c5('0x9b'),'uri':_0x28c5('0x9c')+_0x5248b1[_0x28c5('0x9d')]+_0x28c5('0x9e'),'form':{'client_id':_0x5248b1[_0x28c5('0x95')],'resource':_0x2205f6,'username':_0x5248b1[_0x28c5('0x9f')],'password':_0x5248b1[_0x28c5('0xa0')],'grant_type':'password','client_secret':_0x5248b1[_0x28c5('0x96')]},'json':!![]};return rp(_0x2b2eb0);}})[_0x28c5('0x25')](function(_0x1496c5){_0x2fd39f=_0x1496c5['access_token'];var _0x198e15={'method':_0x28c5('0xa1'),'uri':encodeURI(_0x3e02c7+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x228ad1+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x2fd39f,'If-None-Match':null,'OData-Version':_0x28c5('0xa2')},'json':!![]};return rp(_0x198e15);})['then'](function(_0xfa0bdb){var _0x1118cf=_0xfa0bdb['value'][0x0];var _0x4651b3=_0x1118cf[_0x28c5('0xa3')];var _0x1d31b4={'method':_0x28c5('0xa1'),'uri':_0x3e02c7+_0x28c5('0xa4')+_0x4651b3+_0x28c5('0xa5'),'headers':{'Authorization':_0x28c5('0xa6')+_0x2fd39f,'If-None-Match':null,'OData-Version':_0x28c5('0xa2')},'json':!![]};return rp(_0x1d31b4);})['then'](function(_0x1455e5){_0x427e20=_0x1455e5;_0x39f7e0=_0x427e20['Attributes'];_0x39f7e0=_[_0x28c5('0xa7')](_0x39f7e0,function(_0x111a86){return!_0x40d716[_0x28c5('0xa8')](_0x111a86[_0x28c5('0xa9')]);});var _0x1ca00d=[];var _0x1b6ff6=[];_0x39f7e0[_0x28c5('0xaa')](function(_0x358476){if(_0x358476['@odata.type']){var _0x592500=_0x358476[_0x28c5('0xab')][_0x28c5('0x97')](_0x358476[_0x28c5('0xab')][_0x28c5('0x98')]('.')+0x1);if(_0x592500===_0x28c5('0xac')){_0x1ca00d[_0x28c5('0xad')](getSelectList(_0x3e02c7,_0x94c09e,_0x1b6ff6,_0x427e20[_0x28c5('0xa3')],_0x358476['MetadataId'],_0x2fd39f));}}});return Promise[_0x28c5('0xae')](_0x1ca00d);})[_0x28c5('0x25')](function(_0x5aaf73){_0x1db071=_0x5aaf73[0x0];var _0x54f00c=[];var _0x8e8000=[];_0x39f7e0[_0x28c5('0xaa')](function(_0x239fbe){if(!_['isNil'](_0x239fbe[_0x28c5('0xab')])){var _0x336ec8=_0x239fbe[_0x28c5('0xab')][_0x28c5('0x97')](_0x239fbe[_0x28c5('0xab')][_0x28c5('0x98')]('.')+0x1);if(_0x336ec8===_0x28c5('0xaf')){_0x54f00c[_0x28c5('0xad')](getBooleanList(_0x3e02c7,_0x94c09e,_0x8e8000,_0x427e20[_0x28c5('0xa3')],_0x239fbe[_0x28c5('0xa3')],_0x2fd39f));}}});return Promise[_0x28c5('0xae')](_0x54f00c);})[_0x28c5('0x25')](function(_0x3c10f1){_0x46c57f=_0x3c10f1[0x0];var _0x5457ea=[];var _0x185afa=[];_0x39f7e0[_0x28c5('0xaa')](function(_0x32c9ac){if(_0x32c9ac[_0x28c5('0xab')]){var _0x2a8a9b=_0x32c9ac['@odata.type'][_0x28c5('0x97')](_0x32c9ac[_0x28c5('0xab')][_0x28c5('0x98')]('.')+0x1);if(_0x2a8a9b===_0x28c5('0xb0')||_0x2a8a9b===_0x28c5('0xb1')||_0x2a8a9b===_0x28c5('0xb2')||_0x2a8a9b===_0x28c5('0xb3')||_0x2a8a9b==='MemoAttributeMetadata'||_0x2a8a9b===_0x28c5('0xb4')||_0x2a8a9b===_0x28c5('0xb5')||_0x2a8a9b===_0x28c5('0xb6')||_0x2a8a9b===_0x28c5('0xb7')||_0x2a8a9b===_0x28c5('0xb8')){_0x5457ea[_0x28c5('0xad')](getInputList(_0x3e02c7,_0x94c09e,_0x2a8a9b,_0x185afa,_0x427e20[_0x28c5('0xa3')],_0x32c9ac[_0x28c5('0xa3')],_0x2fd39f));}}});return Promise['all'](_0x5457ea);})['then'](function(_0x165de5){_0xc4722a=_0x165de5[0x0];var _0x51b9f3=_0x1db071[_0x28c5('0x92')](_0x46c57f)[_0x28c5('0x92')](_0xc4722a);var _0x12895b={'count':_0x51b9f3[_0x28c5('0x35')],'rows':_0x51b9f3};return _0x12895b;})[_0x28c5('0x25')](respondWithResult(_0x5a117b,null))[_0x28c5('0x49')](function(_0x523a78){var _0x3b66b5=_0x29a229[_0x28c5('0x2f')][_0x28c5('0xb9')]?0x1f4:_0x523a78['statusCode']||0x1f4;logger[_0x28c5('0x26')](_0x523a78[_0x28c5('0x27')]);delete _0x523a78[_0x28c5('0x28')];if(_0x3b66b5===0x191){_0x3b66b5=0x190;}_0x5a117b[_0x28c5('0x1b')](_0x3b66b5)['send'](_0x29a229[_0x28c5('0x2f')][_0x28c5('0xb9')]?{'message':_0x28c5('0xba'),'statusCode':_0x523a78['statusCode']}:_0x523a78);});};function getSelectList(_0x140a9d,_0x36aab8,_0x348e53,_0x245d56,_0x5b958a,_0x50b548){var _0x2e0c2e={'method':_0x28c5('0xa1'),'uri':_0x140a9d+_0x28c5('0xa4')+_0x245d56+_0x28c5('0xbb')+_0x5b958a+_0x28c5('0xbc')+_0x28c5('0xbd'),'headers':{'Authorization':_0x28c5('0xa6')+_0x50b548,'If-None-Match':null,'OData-Version':_0x28c5('0xa2')},'json':!![]};return rp(_0x2e0c2e)['then'](function(_0x127d8f){var _0x6fe08c=[];var _0x235423=_0x127d8f[_0x28c5('0xbe')]['Options'];_0x235423[_0x28c5('0xaa')](function(_0x157960){_0x6fe08c['push']({'name':_0x157960['Label']['UserLocalizedLabel'][_0x28c5('0xbf')],'value':String(_0x157960['Value'])});});var _0x3c3e8b={'id':_0x36aab8+'_'+_0x127d8f['LogicalName'],'name':_0x127d8f['DisplayName']['UserLocalizedLabel'][_0x28c5('0xbf')],'custom':![],'options':_0x6fe08c};_0x348e53[_0x28c5('0xad')](_0x3c3e8b);return _0x348e53;});}function getBooleanList(_0x4e06ad,_0x45ed11,_0x5063f2,_0x45ad26,_0xee62c5,_0x4a15a4){var _0x54204d={'method':_0x28c5('0xa1'),'uri':_0x4e06ad+_0x28c5('0xa4')+_0x45ad26+_0x28c5('0xbb')+_0xee62c5+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x28c5('0xa6')+_0x4a15a4,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x54204d)['then'](function(_0x3a1ca5){var _0x56a07a=[];_0x56a07a[_0x28c5('0xad')]({'name':_0x3a1ca5[_0x28c5('0xbe')][_0x28c5('0xc0')][_0x28c5('0xbf')][_0x28c5('0xc1')][_0x28c5('0xbf')],'value':_0x28c5('0xc2')},{'name':_0x3a1ca5[_0x28c5('0xbe')][_0x28c5('0xc3')]['Label'][_0x28c5('0xc1')][_0x28c5('0xbf')],'value':_0x28c5('0xc4')});var _0xfc8af={'id':_0x45ed11+'_'+_0x3a1ca5['LogicalName'],'name':_0x3a1ca5['DisplayName'][_0x28c5('0xc1')][_0x28c5('0xbf')],'custom':![],'options':_0x56a07a};_0x5063f2[_0x28c5('0xad')](_0xfc8af);return _0x5063f2;});}function getInputList(_0x5f2127,_0x3ff9cb,_0xee924f,_0x5165ba,_0x2eff21,_0x3d2694,_0x194532){var _0x16da31={'method':_0x28c5('0xa1'),'uri':_0x5f2127+_0x28c5('0xa4')+_0x2eff21+_0x28c5('0xbb')+_0x3d2694+')/Microsoft.Dynamics.CRM.'+_0xee924f+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x28c5('0xa6')+_0x194532,'If-None-Match':null,'OData-Version':_0x28c5('0xa2')},'json':!![]};return rp(_0x16da31)[_0x28c5('0x25')](function(_0x5df4a2){var _0x5ef547={'id':_0x3ff9cb+'_'+_0x5df4a2[_0x28c5('0xa9')],'name':_0x5df4a2[_0x28c5('0xc5')][_0x28c5('0xc1')]?_0x5df4a2[_0x28c5('0xc5')][_0x28c5('0xc1')][_0x28c5('0xbf')]:_0x5df4a2[_0x28c5('0xa9')],'custom':![],'options':[]};_0x5165ba['push'](_0x5ef547);return _0x5165ba;});}
\ No newline at end of file
+var _0x9aee=['Dynamics365Field','getFields','incident','Incident','PhoneCall','description','customerid','ownerid','caseorigincode','subject','phonenumber','directioncode','phonecall_activity_parties','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyname','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','exchangerate','firstresponsebykpiidname','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridtype','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productserialnumber','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','concat','username','password','remoteUri','tenantId','clientId','clientSecret','substring','lastIndexOf','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','includes','forEach','@odata.type','PicklistAttributeMetadata','push','all','MetadataId','StringAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','DecimalAttributeMetadata','test','statusCode','error','Wrong\x20credentials','GET',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Options','Label','Value','LogicalName','DisplayName','UserLocalizedLabel',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','FalseOption','false','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','count','set','apply','then','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','merge','VIRTUAL','options','where','Dynamics365Account','includeAll','include','catch','show','params','find','create','body','destroy','getConfigurations','findOne','Dynamics365Configuration','addConfiguration','Subjects','channel','Descriptions','getDescriptions'];(function(_0x2fbcf6,_0x2e7155){var _0x3e7265=function(_0x15a3c3){while(--_0x15a3c3){_0x2fbcf6['push'](_0x2fbcf6['shift']());}};_0x3e7265(++_0x2e7155);}(_0x9aee,0x71));var _0xe9ae=function(_0x2b34c1,_0x837daf){_0x2b34c1=_0x2b34c1-0x0;var _0x2fdc6f=_0x9aee[_0x2b34c1];return _0x2fdc6f;};'use strict';var emlformat=require(_0xe9ae('0x0'));var rimraf=require(_0xe9ae('0x1'));var zipdir=require(_0xe9ae('0x2'));var jsonpatch=require(_0xe9ae('0x3'));var rp=require(_0xe9ae('0x4'));var moment=require(_0xe9ae('0x5'));var BPromise=require(_0xe9ae('0x6'));var Mustache=require(_0xe9ae('0x7'));var util=require(_0xe9ae('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe9ae('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe9ae('0xa'));var crypto=require('crypto');var jsforce=require(_0xe9ae('0xb'));var deskjs=require(_0xe9ae('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe9ae('0xd'));var Papa=require(_0xe9ae('0xe'));var Redis=require(_0xe9ae('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe9ae('0x10'));var as=require(_0xe9ae('0x11'));var hardwareService=require(_0xe9ae('0x12'));var logger=require('../../config/logger')(_0xe9ae('0x13'));var utils=require('../../config/utils');var config=require(_0xe9ae('0x14'));var licenseUtil=require(_0xe9ae('0x15'));var db=require(_0xe9ae('0x16'))['db'];var integrations=require(_0xe9ae('0x17'));function respondWithStatusCode(_0x3f55e5,_0x1be4dd){_0x1be4dd=_0x1be4dd||0xcc;return function(_0x3770c1){if(_0x3770c1){return _0x3f55e5[_0xe9ae('0x18')](_0x1be4dd);}return _0x3f55e5['status'](_0x1be4dd)[_0xe9ae('0x19')]();};}function respondWithResult(_0x38b4af,_0x4e8869){_0x4e8869=_0x4e8869||0xc8;return function(_0x149ca1){if(_0x149ca1){return _0x38b4af[_0xe9ae('0x1a')](_0x4e8869)[_0xe9ae('0x1b')](_0x149ca1);}};}function respondWithFilteredResult(_0x43963c,_0x3ef25b){return function(_0x1fd836){if(_0x1fd836){var _0x2865be=typeof _0x3ef25b[_0xe9ae('0x1c')]===_0xe9ae('0x1d')&&typeof _0x3ef25b['limit']==='undefined';var _0x12dbbe=_0x1fd836['count'];var _0x279f94=_0x2865be?0x0:_0x3ef25b[_0xe9ae('0x1c')];var _0x3a5a02=_0x2865be?_0x1fd836[_0xe9ae('0x1e')]:_0x3ef25b['offset']+_0x3ef25b['limit'];var _0x5a7493;if(_0x3a5a02>=_0x12dbbe){_0x3a5a02=_0x12dbbe;_0x5a7493=0xc8;}else{_0x5a7493=0xce;}_0x43963c[_0xe9ae('0x1a')](_0x5a7493);return _0x43963c[_0xe9ae('0x1f')]('Content-Range',_0x279f94+'-'+_0x3a5a02+'/'+_0x12dbbe)[_0xe9ae('0x1b')](_0x1fd836);}return null;};}function patchUpdates(_0x49fc40){return function(_0x1847ec){try{jsonpatch[_0xe9ae('0x20')](_0x1847ec,_0x49fc40,!![]);}catch(_0x10d14f){return BPromise['reject'](_0x10d14f);}return _0x1847ec['save']();};}function saveUpdates(_0x475b7a,_0x206bd7){return function(_0x310f76){if(_0x310f76){return _0x310f76['update'](_0x475b7a)[_0xe9ae('0x21')](function(_0x29d690){return _0x29d690;});}return null;};}function removeEntity(_0x31e94f,_0x3fd466){return function(_0x394c4b){if(_0x394c4b){return _0x394c4b['destroy']()[_0xe9ae('0x21')](function(){_0x31e94f[_0xe9ae('0x1a')](0xcc)[_0xe9ae('0x19')]();});}};}function handleEntityNotFound(_0x209236,_0x5cec8a){return function(_0xf9c91a){if(!_0xf9c91a){_0x209236['sendStatus'](0x194);}return _0xf9c91a;};}function handleError(_0x3e78ca,_0x18e5b3){_0x18e5b3=_0x18e5b3||0x1f4;return function(_0x187df2){logger['error'](_0x187df2[_0xe9ae('0x22')]);if(_0x187df2[_0xe9ae('0x23')]){delete _0x187df2[_0xe9ae('0x23')];}_0x3e78ca[_0xe9ae('0x1a')](_0x18e5b3)['send'](_0x187df2);};}exports[_0xe9ae('0x24')]=function(_0x3db24e,_0x483df4){var _0x4ac613={},_0x3c3085={},_0x1aa4b0={'count':0x0,'rows':[]};var _0x606dec=_[_0xe9ae('0x25')](db['Dynamics365Account'][_0xe9ae('0x26')],function(_0x503975){return{'name':_0x503975[_0xe9ae('0x27')],'type':_0x503975[_0xe9ae('0x28')][_0xe9ae('0x29')]};});_0x3c3085[_0xe9ae('0x2a')]=_[_0xe9ae('0x25')](_0x606dec,_0xe9ae('0x23'));_0x3c3085['query']=_[_0xe9ae('0x2b')](_0x3db24e[_0xe9ae('0x2c')]);_0x3c3085[_0xe9ae('0x2d')]=_[_0xe9ae('0x2e')](_0x3c3085[_0xe9ae('0x2a')],_0x3c3085[_0xe9ae('0x2c')]);_0x4ac613['attributes']=_[_0xe9ae('0x2e')](_0x3c3085[_0xe9ae('0x2a')],qs[_0xe9ae('0x2f')](_0x3db24e['query'][_0xe9ae('0x2f')]));_0x4ac613['attributes']=_0x4ac613[_0xe9ae('0x30')][_0xe9ae('0x31')]?_0x4ac613[_0xe9ae('0x30')]:_0x3c3085['model'];if(!_0x3db24e[_0xe9ae('0x2c')][_0xe9ae('0x32')](_0xe9ae('0x33'))){_0x4ac613[_0xe9ae('0x34')]=qs[_0xe9ae('0x34')](_0x3db24e[_0xe9ae('0x2c')]['limit']);_0x4ac613[_0xe9ae('0x1c')]=qs[_0xe9ae('0x1c')](_0x3db24e['query'][_0xe9ae('0x1c')]);}_0x4ac613[_0xe9ae('0x35')]=qs[_0xe9ae('0x36')](_0x3db24e['query'][_0xe9ae('0x36')]);_0x4ac613['where']=qs[_0xe9ae('0x2d')](_[_0xe9ae('0x37')](_0x3db24e[_0xe9ae('0x2c')],_0x3c3085[_0xe9ae('0x2d')]),_0x606dec);if(_0x3db24e['query'][_0xe9ae('0x38')]){_0x4ac613['where']=_[_0xe9ae('0x39')](_0x4ac613['where'],{'$or':_['map'](_0x606dec,function(_0x30cc2f){if(_0x30cc2f['type']!==_0xe9ae('0x3a')){var _0x371556={};_0x371556[_0x30cc2f[_0xe9ae('0x23')]]={'$like':'%'+_0x3db24e[_0xe9ae('0x2c')][_0xe9ae('0x38')]+'%'};return _0x371556;}})});}_0x4ac613=_[_0xe9ae('0x39')]({},_0x4ac613,_0x3db24e[_0xe9ae('0x3b')]);var _0x8ef9ef={'where':_0x4ac613[_0xe9ae('0x3c')]};return db[_0xe9ae('0x3d')][_0xe9ae('0x1e')](_0x8ef9ef)[_0xe9ae('0x21')](function(_0x1a95f8){_0x1aa4b0[_0xe9ae('0x1e')]=_0x1a95f8;if(_0x3db24e[_0xe9ae('0x2c')][_0xe9ae('0x3e')]){_0x4ac613[_0xe9ae('0x3f')]=[{'all':!![]}];}return db[_0xe9ae('0x3d')]['findAll'](_0x4ac613);})[_0xe9ae('0x21')](function(_0x5af962){_0x1aa4b0['rows']=_0x5af962;return _0x1aa4b0;})['then'](respondWithFilteredResult(_0x483df4,_0x4ac613))[_0xe9ae('0x40')](handleError(_0x483df4,null));};exports[_0xe9ae('0x41')]=function(_0x157328,_0x3d4a16){var _0x5d74bc={'raw':![],'where':{'id':_0x157328[_0xe9ae('0x42')]['id']}},_0x3f6538={};_0x3f6538[_0xe9ae('0x2a')]=_[_0xe9ae('0x2b')](db[_0xe9ae('0x3d')][_0xe9ae('0x26')]);_0x3f6538[_0xe9ae('0x2c')]=_[_0xe9ae('0x2b')](_0x157328['query']);_0x3f6538[_0xe9ae('0x2d')]=_[_0xe9ae('0x2e')](_0x3f6538[_0xe9ae('0x2a')],_0x3f6538[_0xe9ae('0x2c')]);_0x5d74bc[_0xe9ae('0x30')]=_['intersection'](_0x3f6538[_0xe9ae('0x2a')],qs[_0xe9ae('0x2f')](_0x157328[_0xe9ae('0x2c')][_0xe9ae('0x2f')]));_0x5d74bc['attributes']=_0x5d74bc[_0xe9ae('0x30')][_0xe9ae('0x31')]?_0x5d74bc['attributes']:_0x3f6538['model'];if(_0x157328[_0xe9ae('0x2c')][_0xe9ae('0x3e')]){_0x5d74bc[_0xe9ae('0x3f')]=[{'all':!![]}];}_0x5d74bc=_[_0xe9ae('0x39')]({},_0x5d74bc,_0x157328[_0xe9ae('0x3b')]);return db['Dynamics365Account'][_0xe9ae('0x43')](_0x5d74bc)[_0xe9ae('0x21')](handleEntityNotFound(_0x3d4a16,null))['then'](respondWithResult(_0x3d4a16,null))[_0xe9ae('0x40')](handleError(_0x3d4a16,null));};exports[_0xe9ae('0x44')]=function(_0x5abe7d,_0x56fcc7){return db['Dynamics365Account'][_0xe9ae('0x44')](_0x5abe7d[_0xe9ae('0x45')],{})['then'](respondWithResult(_0x56fcc7,0xc9))[_0xe9ae('0x40')](handleError(_0x56fcc7,null));};exports['update']=function(_0x4e44c6,_0x48aa44){if(_0x4e44c6['body']['id']){delete _0x4e44c6['body']['id'];}return db[_0xe9ae('0x3d')][_0xe9ae('0x43')]({'where':{'id':_0x4e44c6[_0xe9ae('0x42')]['id']}})['then'](handleEntityNotFound(_0x48aa44,null))[_0xe9ae('0x21')](saveUpdates(_0x4e44c6[_0xe9ae('0x45')],null))[_0xe9ae('0x21')](respondWithResult(_0x48aa44,null))[_0xe9ae('0x40')](handleError(_0x48aa44,null));};exports[_0xe9ae('0x46')]=function(_0x3245d1,_0x29e0b7){return db[_0xe9ae('0x3d')]['find']({'where':{'id':_0x3245d1[_0xe9ae('0x42')]['id']}})['then'](handleEntityNotFound(_0x29e0b7,null))[_0xe9ae('0x21')](removeEntity(_0x29e0b7,null))[_0xe9ae('0x40')](handleError(_0x29e0b7,null));};exports[_0xe9ae('0x47')]=function(_0x77b3bc,_0x10db22,_0x160a57){var _0x5b8b16={};var _0x51bdab={};var _0x448d13;var _0x38c104;return db[_0xe9ae('0x3d')][_0xe9ae('0x48')]({'where':{'id':_0x77b3bc[_0xe9ae('0x42')]['id']}})[_0xe9ae('0x21')](handleEntityNotFound(_0x10db22,null))[_0xe9ae('0x21')](function(_0x20b67a){if(_0x20b67a){_0x448d13=_0x20b67a;_0x51bdab['model']=_[_0xe9ae('0x2b')](db[_0xe9ae('0x49')][_0xe9ae('0x26')]);_0x51bdab[_0xe9ae('0x2c')]=_[_0xe9ae('0x2b')](_0x77b3bc[_0xe9ae('0x2c')]);_0x51bdab[_0xe9ae('0x2d')]=_[_0xe9ae('0x2e')](_0x51bdab[_0xe9ae('0x2a')],_0x51bdab[_0xe9ae('0x2c')]);_0x5b8b16['attributes']=_[_0xe9ae('0x2e')](_0x51bdab['model'],qs[_0xe9ae('0x2f')](_0x77b3bc[_0xe9ae('0x2c')][_0xe9ae('0x2f')]));_0x5b8b16[_0xe9ae('0x30')]=_0x5b8b16['attributes'][_0xe9ae('0x31')]?_0x5b8b16[_0xe9ae('0x30')]:_0x51bdab[_0xe9ae('0x2a')];_0x5b8b16[_0xe9ae('0x35')]=qs[_0xe9ae('0x36')](_0x77b3bc[_0xe9ae('0x2c')][_0xe9ae('0x36')]);_0x5b8b16[_0xe9ae('0x3c')]=qs['filters'](_[_0xe9ae('0x37')](_0x77b3bc[_0xe9ae('0x2c')],_0x51bdab['filters']));if(_0x77b3bc['query'][_0xe9ae('0x38')]){_0x5b8b16['where']=_[_0xe9ae('0x39')](_0x5b8b16['where'],{'$or':_[_0xe9ae('0x25')](_0x5b8b16[_0xe9ae('0x30')],function(_0x1b02bd){var _0x36baf3={};_0x36baf3[_0x1b02bd]={'$like':'%'+_0x77b3bc[_0xe9ae('0x2c')][_0xe9ae('0x38')]+'%'};return _0x36baf3;})});}_0x5b8b16=_[_0xe9ae('0x39')]({},_0x5b8b16,_0x77b3bc[_0xe9ae('0x3b')]);return _0x448d13[_0xe9ae('0x47')](_0x5b8b16);}})[_0xe9ae('0x21')](function(_0x2e8d70){if(_0x2e8d70){_0x38c104=_0x2e8d70[_0xe9ae('0x31')];if(!_0x77b3bc[_0xe9ae('0x2c')][_0xe9ae('0x32')](_0xe9ae('0x33'))){_0x5b8b16[_0xe9ae('0x34')]=qs[_0xe9ae('0x34')](_0x77b3bc[_0xe9ae('0x2c')][_0xe9ae('0x34')]);_0x5b8b16[_0xe9ae('0x1c')]=qs[_0xe9ae('0x1c')](_0x77b3bc[_0xe9ae('0x2c')][_0xe9ae('0x1c')]);}return _0x448d13[_0xe9ae('0x47')](_0x5b8b16);}})[_0xe9ae('0x21')](function(_0x550b97){if(_0x550b97){return _0x550b97?{'count':_0x38c104,'rows':_0x550b97}:null;}})['then'](respondWithResult(_0x10db22,null))[_0xe9ae('0x40')](handleError(_0x10db22,null));};exports[_0xe9ae('0x4a')]=function(_0x8958c7,_0x5841b3,_0x51df5d){if(_0x8958c7[_0xe9ae('0x45')]['id']){delete _0x8958c7[_0xe9ae('0x45')]['id'];}return db[_0xe9ae('0x3d')][_0xe9ae('0x48')]({'where':{'id':_0x8958c7[_0xe9ae('0x42')]['id']}})['then'](handleEntityNotFound(_0x5841b3,null))['then'](function(_0x4ff528){if(_0x4ff528){_0x8958c7[_0xe9ae('0x45')]['AccountId']=_0x4ff528['id'];_0x8958c7[_0xe9ae('0x45')][_0xe9ae('0x4b')]=integrations['getSubjects'](_0x8958c7[_0xe9ae('0x45')][_0xe9ae('0x4c')],_0x8958c7['body'][_0xe9ae('0x28')]);_0x8958c7['body'][_0xe9ae('0x4d')]=integrations[_0xe9ae('0x4e')](_0x8958c7['body'][_0xe9ae('0x4c')],_0x8958c7[_0xe9ae('0x45')][_0xe9ae('0x28')]);return db[_0xe9ae('0x49')]['create'](_0x8958c7[_0xe9ae('0x45')],{'include':[{'model':db[_0xe9ae('0x4f')],'as':_0xe9ae('0x4b')},{'model':db[_0xe9ae('0x4f')],'as':_0xe9ae('0x4d')}]});}return null;})[_0xe9ae('0x21')](respondWithResult(_0x5841b3,null))[_0xe9ae('0x40')](handleError(_0x5841b3,null));};exports[_0xe9ae('0x50')]=function(_0xb23492,_0x769c51,_0x4c801d){var _0x3958cb=_0xb23492[_0xe9ae('0x2c')]['ticketType'];var _0x5dd33f=_0x3958cb===_0xe9ae('0x51')?_0xe9ae('0x52'):_0xe9ae('0x53');var _0x576b51='';var _0x1f3438='';var _0x425b4c='';var _0x550bfe='';var _0x193883='';var _0x4376c4='';var _0xe1349e='';var _0x1b4f64='';var _0x296f80=['title',_0xe9ae('0x54'),_0xe9ae('0x55'),_0xe9ae('0x56'),_0xe9ae('0x57'),_0xe9ae('0x58'),_0xe9ae('0x59'),'regardingobjectid',_0xe9ae('0x5a'),_0xe9ae('0x5b')];var _0x5d5e05=['accountidname',_0xe9ae('0x5c'),_0xe9ae('0x5d'),_0xe9ae('0x5e'),_0xe9ae('0x5f'),'contactidyominame',_0xe9ae('0x60'),_0xe9ae('0x61'),_0xe9ae('0x62'),'createdbyexternalpartyyominame',_0xe9ae('0x63'),'createdbyyominame','createdon',_0xe9ae('0x64'),'createdonbehalfbyyominame',_0xe9ae('0x65'),_0xe9ae('0x66'),_0xe9ae('0x67'),_0xe9ae('0x68'),_0xe9ae('0x69'),_0xe9ae('0x6a'),_0xe9ae('0x6b'),'escalatedon',_0xe9ae('0x6c'),_0xe9ae('0x6d'),'followupby',_0xe9ae('0x6e'),_0xe9ae('0x6f'),_0xe9ae('0x70'),'lastonholdtime',_0xe9ae('0x71'),'modifiedbyexternalpartyname',_0xe9ae('0x72'),_0xe9ae('0x73'),'modifiedbyyominame','modifiedon',_0xe9ae('0x74'),_0xe9ae('0x75'),_0xe9ae('0x76'),_0xe9ae('0x77'),_0xe9ae('0x78'),_0xe9ae('0x79'),_0xe9ae('0x7a'),'owneridname',_0xe9ae('0x7b'),'owneridyominame',_0xe9ae('0x7c'),_0xe9ae('0x7d'),_0xe9ae('0x7e'),_0xe9ae('0x7f'),'productidname',_0xe9ae('0x80'),'resolveby',_0xe9ae('0x81'),'responseby',_0xe9ae('0x82'),_0xe9ae('0x83'),_0xe9ae('0x84'),_0xe9ae('0x85'),_0xe9ae('0x86'),_0xe9ae('0x87'),_0xe9ae('0x88'),_0xe9ae('0x89'),_0xe9ae('0x8a'),'ticketnumber','timezoneruleversionnumber',_0xe9ae('0x8b'),_0xe9ae('0x8c'),_0xe9ae('0x8d'),'versionnumber'];var _0x4b35c2=_0x296f80[_0xe9ae('0x8e')](_0x5d5e05);return db[_0xe9ae('0x3d')][_0xe9ae('0x48')]({'where':{'id':_0xb23492[_0xe9ae('0x42')]['id']},'attributes':['id',_0xe9ae('0x8f'),_0xe9ae('0x90'),_0xe9ae('0x91'),_0xe9ae('0x92'),_0xe9ae('0x93'),_0xe9ae('0x94')]})['then'](handleEntityNotFound(_0x769c51,null))[_0xe9ae('0x21')](function(_0x5cb644){if(_0x5cb644){_0x1b4f64=_0x5cb644[_0xe9ae('0x91')];var _0x27e5e4=_0x1b4f64['slice'](-0x1);if(_0x27e5e4==='/'){_0x1b4f64=_0x1b4f64[_0xe9ae('0x95')](0x0,_0x1b4f64[_0xe9ae('0x96')](_0x27e5e4));}_0xe1349e=util['format']('%s/api/data/v9.0/',_0x1b4f64);var _0x3dd779={'method':_0xe9ae('0x97'),'uri':_0xe9ae('0x98')+_0x5cb644['tenantId']+_0xe9ae('0x99'),'form':{'client_id':_0x5cb644['clientId'],'resource':_0x1b4f64,'username':_0x5cb644[_0xe9ae('0x8f')],'password':_0x5cb644[_0xe9ae('0x90')],'grant_type':'password','client_secret':_0x5cb644[_0xe9ae('0x94')]},'json':!![]};return rp(_0x3dd779);}})[_0xe9ae('0x21')](function(_0x38fe20){_0x4376c4=_0x38fe20[_0xe9ae('0x9a')];var _0x4b8f5e={'method':'GET','uri':encodeURI(_0xe1349e+_0xe9ae('0x9b')+_0x5dd33f+'\x27'),'headers':{'Authorization':_0xe9ae('0x9c')+_0x4376c4,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4b8f5e);})[_0xe9ae('0x21')](function(_0x3b44d8){var _0x3b3058=_0x3b44d8['value'][0x0];var _0x5408f5=_0x3b3058['MetadataId'];var _0xee9e67={'method':'GET','uri':_0xe1349e+_0xe9ae('0x9d')+_0x5408f5+_0xe9ae('0x9e'),'headers':{'Authorization':_0xe9ae('0x9c')+_0x4376c4,'If-None-Match':null,'OData-Version':_0xe9ae('0x9f')},'json':!![]};return rp(_0xee9e67);})[_0xe9ae('0x21')](function(_0x279d29){_0x576b51=_0x279d29;_0x1f3438=_0x576b51['Attributes'];_0x1f3438=_['remove'](_0x1f3438,function(_0x18520b){return!_0x4b35c2[_0xe9ae('0xa0')](_0x18520b['LogicalName']);});var _0x4c82b9=[];var _0x535db5=[];_0x1f3438[_0xe9ae('0xa1')](function(_0x5b31ba){if(_0x5b31ba[_0xe9ae('0xa2')]){var _0x54a728=_0x5b31ba[_0xe9ae('0xa2')]['substring'](_0x5b31ba[_0xe9ae('0xa2')]['lastIndexOf']('.')+0x1);if(_0x54a728===_0xe9ae('0xa3')){_0x4c82b9[_0xe9ae('0xa4')](getSelectList(_0xe1349e,_0x3958cb,_0x535db5,_0x576b51['MetadataId'],_0x5b31ba['MetadataId'],_0x4376c4));}}});return Promise[_0xe9ae('0xa5')](_0x4c82b9);})['then'](function(_0x37a463){_0x425b4c=_0x37a463[0x0];var _0x1a9c0e=[];var _0x5da834=[];_0x1f3438[_0xe9ae('0xa1')](function(_0x223c5a){if(!_['isNil'](_0x223c5a['@odata.type'])){var _0x10b4e6=_0x223c5a['@odata.type'][_0xe9ae('0x95')](_0x223c5a['@odata.type'][_0xe9ae('0x96')]('.')+0x1);if(_0x10b4e6==='BooleanAttributeMetadata'){_0x1a9c0e[_0xe9ae('0xa4')](getBooleanList(_0xe1349e,_0x3958cb,_0x5da834,_0x576b51[_0xe9ae('0xa6')],_0x223c5a[_0xe9ae('0xa6')],_0x4376c4));}}});return Promise[_0xe9ae('0xa5')](_0x1a9c0e);})[_0xe9ae('0x21')](function(_0x501abe){_0x550bfe=_0x501abe[0x0];var _0x1498c2=[];var _0x4cab4c=[];_0x1f3438[_0xe9ae('0xa1')](function(_0x38435f){if(_0x38435f[_0xe9ae('0xa2')]){var _0x3e2a0c=_0x38435f['@odata.type'][_0xe9ae('0x95')](_0x38435f[_0xe9ae('0xa2')]['lastIndexOf']('.')+0x1);if(_0x3e2a0c===_0xe9ae('0xa7')||_0x3e2a0c===_0xe9ae('0xa8')||_0x3e2a0c==='BigIntAttributeMetadata'||_0x3e2a0c===_0xe9ae('0xa9')||_0x3e2a0c===_0xe9ae('0xaa')||_0x3e2a0c==='DateTimeAttributeMetadata'||_0x3e2a0c===_0xe9ae('0xab')||_0x3e2a0c==='EntityNameAttributeMetadata'||_0x3e2a0c==='StateAttributeMetadata'||_0x3e2a0c===_0xe9ae('0xac')){_0x1498c2[_0xe9ae('0xa4')](getInputList(_0xe1349e,_0x3958cb,_0x3e2a0c,_0x4cab4c,_0x576b51[_0xe9ae('0xa6')],_0x38435f['MetadataId'],_0x4376c4));}}});return Promise[_0xe9ae('0xa5')](_0x1498c2);})['then'](function(_0x410436){_0x193883=_0x410436[0x0];var _0x9d120b=_0x425b4c[_0xe9ae('0x8e')](_0x550bfe)[_0xe9ae('0x8e')](_0x193883);var _0x17fcec={'count':_0x9d120b[_0xe9ae('0x31')],'rows':_0x9d120b};return _0x17fcec;})[_0xe9ae('0x21')](respondWithResult(_0x769c51,null))[_0xe9ae('0x40')](function(_0xe9fb4c){var _0x493ce7=_0xb23492[_0xe9ae('0x2c')][_0xe9ae('0xad')]?0x1f4:_0xe9fb4c[_0xe9ae('0xae')]||0x1f4;logger[_0xe9ae('0xaf')](_0xe9fb4c[_0xe9ae('0x22')]);delete _0xe9fb4c[_0xe9ae('0x23')];if(_0x493ce7===0x191){_0x493ce7=0x190;}_0x769c51[_0xe9ae('0x1a')](_0x493ce7)['send'](_0xb23492['query'][_0xe9ae('0xad')]?{'message':_0xe9ae('0xb0'),'statusCode':_0xe9fb4c[_0xe9ae('0xae')]}:_0xe9fb4c);});};function getSelectList(_0x587173,_0x322aad,_0x50c4ee,_0x31babd,_0x32e30f,_0xd3f6f6){var _0xc3b744={'method':_0xe9ae('0xb1'),'uri':_0x587173+_0xe9ae('0x9d')+_0x31babd+_0xe9ae('0xb2')+_0x32e30f+_0xe9ae('0xb3')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0xe9ae('0x9c')+_0xd3f6f6,'If-None-Match':null,'OData-Version':_0xe9ae('0x9f')},'json':!![]};return rp(_0xc3b744)['then'](function(_0x11e7c6){var _0xbdb651=[];var _0x5d0eec=_0x11e7c6[_0xe9ae('0xb4')][_0xe9ae('0xb5')];_0x5d0eec[_0xe9ae('0xa1')](function(_0x41458f){_0xbdb651[_0xe9ae('0xa4')]({'name':_0x41458f[_0xe9ae('0xb6')]['UserLocalizedLabel'][_0xe9ae('0xb6')],'value':String(_0x41458f[_0xe9ae('0xb7')])});});var _0x416e96={'id':_0x322aad+'_'+_0x11e7c6[_0xe9ae('0xb8')],'name':_0x11e7c6[_0xe9ae('0xb9')][_0xe9ae('0xba')][_0xe9ae('0xb6')],'custom':![],'options':_0xbdb651};_0x50c4ee[_0xe9ae('0xa4')](_0x416e96);return _0x50c4ee;});}function getBooleanList(_0x1bc86f,_0x5492f7,_0x1b37f7,_0x19b1b8,_0x3dd58b,_0x40ea58){var _0x27616c={'method':'GET','uri':_0x1bc86f+'EntityDefinitions('+_0x19b1b8+_0xe9ae('0xb2')+_0x3dd58b+_0xe9ae('0xbb'),'headers':{'Authorization':_0xe9ae('0x9c')+_0x40ea58,'If-None-Match':null,'OData-Version':_0xe9ae('0x9f')},'json':!![]};return rp(_0x27616c)['then'](function(_0x3b46b7){var _0x231f27=[];_0x231f27[_0xe9ae('0xa4')]({'name':_0x3b46b7[_0xe9ae('0xb4')][_0xe9ae('0xbc')][_0xe9ae('0xb6')][_0xe9ae('0xba')]['Label'],'value':'true'},{'name':_0x3b46b7['OptionSet'][_0xe9ae('0xbd')][_0xe9ae('0xb6')]['UserLocalizedLabel'][_0xe9ae('0xb6')],'value':_0xe9ae('0xbe')});var _0xdf4a78={'id':_0x5492f7+'_'+_0x3b46b7[_0xe9ae('0xb8')],'name':_0x3b46b7[_0xe9ae('0xb9')][_0xe9ae('0xba')][_0xe9ae('0xb6')],'custom':![],'options':_0x231f27};_0x1b37f7['push'](_0xdf4a78);return _0x1b37f7;});}function getInputList(_0x4e82f3,_0xe8d73,_0x591d4b,_0x2fb63b,_0x1175c0,_0x138ce3,_0x30e232){var _0x5aae92={'method':_0xe9ae('0xb1'),'uri':_0x4e82f3+_0xe9ae('0x9d')+_0x1175c0+_0xe9ae('0xb2')+_0x138ce3+')/Microsoft.Dynamics.CRM.'+_0x591d4b+_0xe9ae('0xbf'),'headers':{'Authorization':'Bearer\x20'+_0x30e232,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5aae92)[_0xe9ae('0x21')](function(_0x94da86){var _0x371cc5={'id':_0xe8d73+'_'+_0x94da86[_0xe9ae('0xb8')],'name':_0x94da86[_0xe9ae('0xb9')][_0xe9ae('0xba')]?_0x94da86[_0xe9ae('0xb9')]['UserLocalizedLabel'][_0xe9ae('0xb6')]:_0x94da86[_0xe9ae('0xb8')],'custom':![],'options':[]};_0x2fb63b[_0xe9ae('0xa4')](_0x371cc5);return _0x2fb63b;});}
\ No newline at end of file
index 4f63773..09a42b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x110b9e,_0x1ae1f5){var _0x14dd7e=function(_0x582133){while(--_0x582133){_0x110b9e['push'](_0x110b9e['shift']());}};_0x14dd7e(++_0x1ae1f5);}(_0x757a,0xde));var _0xa757=function(_0x4d947f,_0x59a543){_0x4d947f=_0x4d947f-0x0;var _0x4bf871=_0x757a[_0x4d947f];return _0x4bf871;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x70546c,_0x267818){var _0x591af7=function(_0x4b9b6a){while(--_0x4b9b6a){_0x70546c['push'](_0x70546c['shift']());}};_0x591af7(++_0x267818);}(_0xe706,0xa3));var _0x6e70=function(_0x4a310d,_0x33322d){_0x4a310d=_0x4a310d-0x0;var _0x5eaf36=_0xe706[_0x4a310d];return _0x5eaf36;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 00053b9..695ddd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd3c=['error','code','message','Dynamics365Account,\x20%s,\x20%s','info','catch','Dynamics365Account','findAll','options','raw','where','attributes','limit','map','include','model','then','GetDynamics365Account','ShowDynamics365Account','find','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4d3707,_0x4b5ff7){var _0x5d7015=function(_0x13c6a8){while(--_0x13c6a8){_0x4d3707['push'](_0x4d3707['shift']());}};_0x5d7015(++_0x4b5ff7);}(_0xbd3c,0x1b8));var _0xcbd3=function(_0xca3556,_0x317e9b){_0xca3556=_0xca3556-0x0;var _0xfb2cb2=_0xbd3c[_0xca3556];return _0xfb2cb2;};'use strict';var _=require(_0xcbd3('0x0'));var util=require(_0xcbd3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcbd3('0x2'));var db=require(_0xcbd3('0x3'))['db'];var utils=require(_0xcbd3('0x4'));var logger=require(_0xcbd3('0x5'))(_0xcbd3('0x6'));var config=require(_0xcbd3('0x7'));var jayson=require(_0xcbd3('0x8'));var client=jayson['client'][_0xcbd3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x52228e,_0x3eb432,_0x5483db){return new BPromise(function(_0x400a9e,_0x50c172){return client[_0xcbd3('0xa')](_0x52228e,_0x5483db)['then'](function(_0xe7ab27){logger['info']('Dynamics365Account,\x20%s,\x20%s',_0x3eb432,_0xcbd3('0xb'));logger[_0xcbd3('0xc')](_0xcbd3('0xd'),_0x3eb432,'request\x20sent',JSON[_0xcbd3('0xe')](_0xe7ab27));if(_0xe7ab27[_0xcbd3('0xf')]){if(_0xe7ab27[_0xcbd3('0xf')][_0xcbd3('0x10')]===0x1f4){logger[_0xcbd3('0xf')]('Dynamics365Account,\x20%s,\x20%s',_0x3eb432,_0xe7ab27[_0xcbd3('0xf')][_0xcbd3('0x11')]);return _0x50c172(_0xe7ab27[_0xcbd3('0xf')]['message']);}logger['error'](_0xcbd3('0x12'),_0x3eb432,_0xe7ab27[_0xcbd3('0xf')]['message']);return _0x400a9e(_0xe7ab27[_0xcbd3('0xf')][_0xcbd3('0x11')]);}else{logger[_0xcbd3('0x13')](_0xcbd3('0x12'),_0x3eb432,_0xcbd3('0xb'));_0x400a9e(_0xe7ab27['result'][_0xcbd3('0x11')]);}})[_0xcbd3('0x14')](function(_0x41c417){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x3eb432,_0x41c417);_0x50c172(_0x41c417);});});}exports['GetDynamics365Account']=function(_0x195f46){var _0x5f4b92=this;return new Promise(function(_0x3dae92,_0x4cdb64){return db[_0xcbd3('0x15')][_0xcbd3('0x16')]({'raw':_0x195f46[_0xcbd3('0x17')]?_0x195f46[_0xcbd3('0x17')][_0xcbd3('0x18')]===undefined?!![]:![]:!![],'where':_0x195f46[_0xcbd3('0x17')]?_0x195f46[_0xcbd3('0x17')][_0xcbd3('0x19')]||null:null,'attributes':_0x195f46[_0xcbd3('0x17')]?_0x195f46[_0xcbd3('0x17')][_0xcbd3('0x1a')]||null:null,'limit':_0x195f46[_0xcbd3('0x17')]?_0x195f46[_0xcbd3('0x17')][_0xcbd3('0x1b')]||null:null,'include':_0x195f46[_0xcbd3('0x17')]?_0x195f46[_0xcbd3('0x17')]['include']?_[_0xcbd3('0x1c')](_0x195f46[_0xcbd3('0x17')][_0xcbd3('0x1d')],function(_0x7f87ec){return{'model':db[_0x7f87ec[_0xcbd3('0x1e')]],'as':_0x7f87ec['as'],'attributes':_0x7f87ec[_0xcbd3('0x1a')],'include':_0x7f87ec['include']?_[_0xcbd3('0x1c')](_0x7f87ec['include'],function(_0x2fd328){return{'model':db[_0x2fd328[_0xcbd3('0x1e')]],'as':_0x2fd328['as'],'attributes':_0x2fd328[_0xcbd3('0x1a')],'include':_0x2fd328[_0xcbd3('0x1d')]?_[_0xcbd3('0x1c')](_0x2fd328[_0xcbd3('0x1d')],function(_0x158ede){return{'model':db[_0x158ede[_0xcbd3('0x1e')]],'as':_0x158ede['as'],'attributes':_0x158ede[_0xcbd3('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xcbd3('0x1f')](function(_0x5eaf1f){logger[_0xcbd3('0x13')](_0xcbd3('0x20'),_0x195f46);logger['debug'](_0xcbd3('0x20'),_0x195f46,JSON[_0xcbd3('0xe')](_0x5eaf1f));_0x3dae92(_0x5eaf1f);})['catch'](function(_0x2562ec){logger[_0xcbd3('0xf')](_0xcbd3('0x20'),_0x2562ec['message'],_0x195f46);_0x4cdb64(_0x5f4b92[_0xcbd3('0xf')](0x1f4,_0x2562ec[_0xcbd3('0x11')]));});});};exports[_0xcbd3('0x21')]=function(_0x457847){var _0x50f8e1=this;return new Promise(function(_0x3bc1ab,_0x3cccf4){return db['Dynamics365Account'][_0xcbd3('0x22')]({'raw':_0x457847[_0xcbd3('0x17')]?_0x457847[_0xcbd3('0x17')][_0xcbd3('0x18')]===undefined?!![]:![]:!![],'where':_0x457847['options']?_0x457847[_0xcbd3('0x17')][_0xcbd3('0x19')]||null:null,'attributes':_0x457847[_0xcbd3('0x17')]?_0x457847[_0xcbd3('0x17')][_0xcbd3('0x1a')]||null:null,'include':_0x457847['options']?_0x457847[_0xcbd3('0x17')]['include']?_['map'](_0x457847[_0xcbd3('0x17')][_0xcbd3('0x1d')],function(_0x430742){return{'model':db[_0x430742[_0xcbd3('0x1e')]],'as':_0x430742['as'],'attributes':_0x430742[_0xcbd3('0x1a')],'include':_0x430742[_0xcbd3('0x1d')]?_[_0xcbd3('0x1c')](_0x430742[_0xcbd3('0x1d')],function(_0x3f6721){return{'model':db[_0x3f6721[_0xcbd3('0x1e')]],'as':_0x3f6721['as'],'attributes':_0x3f6721[_0xcbd3('0x1a')],'include':_0x3f6721['include']?_['map'](_0x3f6721[_0xcbd3('0x1d')],function(_0x43001d){return{'model':db[_0x43001d['model']],'as':_0x43001d['as'],'attributes':_0x43001d[_0xcbd3('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x235c24){logger[_0xcbd3('0x13')](_0xcbd3('0x21'),_0x457847);logger['debug'](_0xcbd3('0x21'),_0x457847,JSON[_0xcbd3('0xe')](_0x235c24));_0x3bc1ab(_0x235c24);})['catch'](function(_0x5d6c51){logger[_0xcbd3('0xf')](_0xcbd3('0x21'),_0x5d6c51[_0xcbd3('0x11')],_0x457847);_0x3cccf4(_0x50f8e1[_0xcbd3('0xf')](0x1f4,_0x5d6c51[_0xcbd3('0x11')]));});});};
\ No newline at end of file
+var _0x9675=['debug','ShowDynamics365Account','where','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','attributes','include','map','model'];(function(_0x33fa94,_0x3443b0){var _0x5586=function(_0x41f7c2){while(--_0x41f7c2){_0x33fa94['push'](_0x33fa94['shift']());}};_0x5586(++_0x3443b0);}(_0x9675,0xb3));var _0x5967=function(_0x134e96,_0x41f1cc){_0x134e96=_0x134e96-0x0;var _0x5605a1=_0x9675[_0x134e96];return _0x5605a1;};'use strict';var _=require(_0x5967('0x0'));var util=require(_0x5967('0x1'));var moment=require(_0x5967('0x2'));var BPromise=require(_0x5967('0x3'));var rs=require(_0x5967('0x4'));var fs=require('fs');var Redis=require(_0x5967('0x5'));var db=require(_0x5967('0x6'))['db'];var utils=require(_0x5967('0x7'));var logger=require(_0x5967('0x8'))(_0x5967('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5967('0xa')][_0x5967('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb6702e,_0x2e93bf,_0x410834){return new BPromise(function(_0x579c23,_0x4744ca){return client[_0x5967('0xc')](_0xb6702e,_0x410834)['then'](function(_0x4144e5){logger['info'](_0x5967('0xd'),_0x2e93bf,_0x5967('0xe'));logger['debug'](_0x5967('0xf'),_0x2e93bf,_0x5967('0xe'),JSON[_0x5967('0x10')](_0x4144e5));if(_0x4144e5['error']){if(_0x4144e5['error'][_0x5967('0x11')]===0x1f4){logger[_0x5967('0x12')]('Dynamics365Account,\x20%s,\x20%s',_0x2e93bf,_0x4144e5[_0x5967('0x12')][_0x5967('0x13')]);return _0x4744ca(_0x4144e5[_0x5967('0x12')]['message']);}logger['error'](_0x5967('0xd'),_0x2e93bf,_0x4144e5[_0x5967('0x12')]['message']);return _0x579c23(_0x4144e5[_0x5967('0x12')]['message']);}else{logger[_0x5967('0x14')](_0x5967('0xd'),_0x2e93bf,_0x5967('0xe'));_0x579c23(_0x4144e5['result'][_0x5967('0x13')]);}})[_0x5967('0x15')](function(_0x896c16){logger['error'](_0x5967('0xd'),_0x2e93bf,_0x896c16);_0x4744ca(_0x896c16);});});}exports[_0x5967('0x16')]=function(_0x593723){var _0x57c39b=this;return new Promise(function(_0x1f16a6,_0x5b6280){return db[_0x5967('0x17')][_0x5967('0x18')]({'raw':_0x593723[_0x5967('0x19')]?_0x593723[_0x5967('0x19')][_0x5967('0x1a')]===undefined?!![]:![]:!![],'where':_0x593723[_0x5967('0x19')]?_0x593723[_0x5967('0x19')]['where']||null:null,'attributes':_0x593723[_0x5967('0x19')]?_0x593723[_0x5967('0x19')][_0x5967('0x1b')]||null:null,'limit':_0x593723['options']?_0x593723['options']['limit']||null:null,'include':_0x593723['options']?_0x593723[_0x5967('0x19')][_0x5967('0x1c')]?_[_0x5967('0x1d')](_0x593723[_0x5967('0x19')][_0x5967('0x1c')],function(_0x42f710){return{'model':db[_0x42f710[_0x5967('0x1e')]],'as':_0x42f710['as'],'attributes':_0x42f710['attributes'],'include':_0x42f710[_0x5967('0x1c')]?_[_0x5967('0x1d')](_0x42f710[_0x5967('0x1c')],function(_0x5beac9){return{'model':db[_0x5beac9[_0x5967('0x1e')]],'as':_0x5beac9['as'],'attributes':_0x5beac9[_0x5967('0x1b')],'include':_0x5beac9[_0x5967('0x1c')]?_[_0x5967('0x1d')](_0x5beac9[_0x5967('0x1c')],function(_0x1e2ef5){return{'model':db[_0x1e2ef5[_0x5967('0x1e')]],'as':_0x1e2ef5['as'],'attributes':_0x1e2ef5[_0x5967('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3364e7){logger['info']('GetDynamics365Account',_0x593723);logger[_0x5967('0x1f')]('GetDynamics365Account',_0x593723,JSON[_0x5967('0x10')](_0x3364e7));_0x1f16a6(_0x3364e7);})['catch'](function(_0xd512c1){logger['error']('GetDynamics365Account',_0xd512c1['message'],_0x593723);_0x5b6280(_0x57c39b[_0x5967('0x12')](0x1f4,_0xd512c1[_0x5967('0x13')]));});});};exports[_0x5967('0x20')]=function(_0x55ad51){var _0x593828=this;return new Promise(function(_0x1062c6,_0x1fe093){return db['Dynamics365Account']['find']({'raw':_0x55ad51[_0x5967('0x19')]?_0x55ad51['options'][_0x5967('0x1a')]===undefined?!![]:![]:!![],'where':_0x55ad51['options']?_0x55ad51[_0x5967('0x19')][_0x5967('0x21')]||null:null,'attributes':_0x55ad51[_0x5967('0x19')]?_0x55ad51[_0x5967('0x19')]['attributes']||null:null,'include':_0x55ad51['options']?_0x55ad51[_0x5967('0x19')][_0x5967('0x1c')]?_['map'](_0x55ad51[_0x5967('0x19')][_0x5967('0x1c')],function(_0x605da8){return{'model':db[_0x605da8[_0x5967('0x1e')]],'as':_0x605da8['as'],'attributes':_0x605da8[_0x5967('0x1b')],'include':_0x605da8['include']?_[_0x5967('0x1d')](_0x605da8[_0x5967('0x1c')],function(_0x5cef71){return{'model':db[_0x5cef71[_0x5967('0x1e')]],'as':_0x5cef71['as'],'attributes':_0x5cef71['attributes'],'include':_0x5cef71[_0x5967('0x1c')]?_['map'](_0x5cef71[_0x5967('0x1c')],function(_0x7f1171){return{'model':db[_0x7f1171[_0x5967('0x1e')]],'as':_0x7f1171['as'],'attributes':_0x7f1171[_0x5967('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x5967('0x22')](function(_0x181d9e){logger[_0x5967('0x14')](_0x5967('0x20'),_0x55ad51);logger[_0x5967('0x1f')]('ShowDynamics365Account',_0x55ad51,JSON[_0x5967('0x10')](_0x181d9e));_0x1062c6(_0x181d9e);})[_0x5967('0x15')](function(_0x2c4615){logger[_0x5967('0x12')](_0x5967('0x20'),_0x2c4615[_0x5967('0x13')],_0x55ad51);_0x1fe093(_0x593828[_0x5967('0x12')](0x1f4,_0x2c4615[_0x5967('0x13')]));});});};
\ No newline at end of file
index 65d83e1..57c7b46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e7=['create','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','post'];(function(_0x32abeb,_0x12b094){var _0x57662a=function(_0x3a5265){while(--_0x3a5265){_0x32abeb['push'](_0x32abeb['shift']());}};_0x57662a(++_0x12b094);}(_0x97e7,0x1a1));var _0x797e=function(_0x4cbd49,_0x296d5b){_0x4cbd49=_0x4cbd49-0x0;var _0x1f3a3e=_0x97e7[_0x4cbd49];return _0x1f3a3e;};'use strict';var multer=require(_0x797e('0x0'));var util=require(_0x797e('0x1'));var path=require(_0x797e('0x2'));var timeout=require('connect-timeout');var express=require(_0x797e('0x3'));var router=express[_0x797e('0x4')]();var fs_extra=require(_0x797e('0x5'));var auth=require(_0x797e('0x6'));var interaction=require(_0x797e('0x7'));var config=require(_0x797e('0x8'));var controller=require(_0x797e('0x9'));router[_0x797e('0xa')]('/',auth[_0x797e('0xb')](),controller[_0x797e('0xc')]);router[_0x797e('0xa')](_0x797e('0xd'),auth['isAuthenticated'](),controller[_0x797e('0xe')]);router[_0x797e('0xa')](_0x797e('0xf'),auth[_0x797e('0xb')](),controller['getFields']);router[_0x797e('0xa')](_0x797e('0x10'),auth[_0x797e('0xb')](),controller[_0x797e('0x11')]);router[_0x797e('0xa')](_0x797e('0x12'),auth[_0x797e('0xb')](),controller['getDescriptions']);router[_0x797e('0x13')]('/',auth[_0x797e('0xb')](),controller[_0x797e('0x14')]);router['put'](_0x797e('0xd'),auth['isAuthenticated'](),controller[_0x797e('0x15')]);router['delete'](_0x797e('0xd'),auth[_0x797e('0xb')](),controller['destroy']);module[_0x797e('0x16')]=router;
\ No newline at end of file
+var _0x1e9c=['isAuthenticated','index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get'];(function(_0xad2257,_0x16afaa){var _0xd04c50=function(_0x32aa16){while(--_0x32aa16){_0xad2257['push'](_0xad2257['shift']());}};_0xd04c50(++_0x16afaa);}(_0x1e9c,0x1d9));var _0xc1e9=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0x1e9c[_0x411017];return _0x2adeea;};'use strict';var multer=require(_0xc1e9('0x0'));var util=require(_0xc1e9('0x1'));var path=require(_0xc1e9('0x2'));var timeout=require(_0xc1e9('0x3'));var express=require(_0xc1e9('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc1e9('0x5'));var interaction=require(_0xc1e9('0x6'));var config=require(_0xc1e9('0x7'));var controller=require(_0xc1e9('0x8'));router[_0xc1e9('0x9')]('/',auth[_0xc1e9('0xa')](),controller[_0xc1e9('0xb')]);router[_0xc1e9('0x9')](_0xc1e9('0xc'),auth[_0xc1e9('0xa')](),controller[_0xc1e9('0xd')]);router[_0xc1e9('0x9')]('/:id/fields',auth[_0xc1e9('0xa')](),controller['getFields']);router[_0xc1e9('0x9')](_0xc1e9('0xe'),auth['isAuthenticated'](),controller[_0xc1e9('0xf')]);router[_0xc1e9('0x9')](_0xc1e9('0x10'),auth[_0xc1e9('0xa')](),controller[_0xc1e9('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xc1e9('0xc'),auth[_0xc1e9('0xa')](),controller[_0xc1e9('0x12')]);router[_0xc1e9('0x13')](_0xc1e9('0xc'),auth[_0xc1e9('0xa')](),controller['destroy']);module[_0xc1e9('0x14')]=router;
\ No newline at end of file
index d6bc410..30366f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9af0=['exports','incident','phonecall'];(function(_0x139e35,_0x48d4cb){var _0x4e8a05=function(_0x9a6098){while(--_0x9a6098){_0x139e35['push'](_0x139e35['shift']());}};_0x4e8a05(++_0x48d4cb);}(_0x9af0,0xc6));var _0x09af=function(_0x185a93,_0x3ff65a){_0x185a93=_0x185a93-0x0;var _0x5abbe0=_0x9af0[_0x185a93];return _0x5abbe0;};'use strict';var Sequelize=require('sequelize');module[_0x09af('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM'](_0x09af('0x1'),_0x09af('0x2')),'defaultValue':_0x09af('0x1')}};
\ No newline at end of file
+var _0x4e57=['incident','phonecall','nothing','sequelize','STRING','ENUM'];(function(_0x5396a6,_0x51daf3){var _0x540c20=function(_0x1beffb){while(--_0x1beffb){_0x5396a6['push'](_0x5396a6['shift']());}};_0x540c20(++_0x51daf3);}(_0x4e57,0x1d1));var _0x74e5=function(_0x51d618,_0x56ed0a){_0x51d618=_0x51d618-0x0;var _0x2024ce=_0x4e57[_0x51d618];return _0x2024ce;};'use strict';var Sequelize=require(_0x74e5('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x74e5('0x1')]},'ticketType':{'type':Sequelize[_0x74e5('0x2')](_0x74e5('0x3'),_0x74e5('0x4')),'defaultValue':_0x74e5('0x3')},'moduleCreate':{'type':Sequelize[_0x74e5('0x2')]('contact',_0x74e5('0x5')),'defaultValue':'contact','allowNull':![]}};
\ No newline at end of file
index badb623..f76c5ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73c3=['desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','count','limit','set','Content-Range','reject','update','then','destroy','stack','name','index','Dynamics365Configuration','fieldName','type','key','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','offset','order','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','getFields','findOne','Dynamics365Field','sort','getSubjects','pick','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x3b97b3,_0xe63a1d){var _0x5bcda6=function(_0x52ce40){while(--_0x52ce40){_0x3b97b3['push'](_0x3b97b3['shift']());}};_0x5bcda6(++_0xe63a1d);}(_0x73c3,0x13e));var _0x373c=function(_0x4c55ee,_0x94c701){_0x4c55ee=_0x4c55ee-0x0;var _0x4f066a=_0x73c3[_0x4c55ee];return _0x4f066a;};'use strict';var emlformat=require(_0x373c('0x0'));var rimraf=require(_0x373c('0x1'));var zipdir=require(_0x373c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x373c('0x3'));var moment=require(_0x373c('0x4'));var BPromise=require(_0x373c('0x5'));var Mustache=require('mustache');var util=require(_0x373c('0x6'));var path=require('path');var sox=require(_0x373c('0x7'));var csv=require('to-csv');var ejs=require(_0x373c('0x8'));var fs=require('fs');var fs_extra=require(_0x373c('0x9'));var _=require(_0x373c('0xa'));var squel=require(_0x373c('0xb'));var crypto=require(_0x373c('0xc'));var jsforce=require(_0x373c('0xd'));var deskjs=require(_0x373c('0xe'));var toCsv=require(_0x373c('0xf'));var querystring=require('querystring');var Papa=require(_0x373c('0x10'));var Redis=require(_0x373c('0x11'));var authService=require(_0x373c('0x12'));var qs=require(_0x373c('0x13'));var as=require(_0x373c('0x14'));var hardwareService=require(_0x373c('0x15'));var logger=require(_0x373c('0x16'))(_0x373c('0x17'));var utils=require(_0x373c('0x18'));var config=require(_0x373c('0x19'));var licenseUtil=require(_0x373c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c96dd,_0x5d76a5){_0x5d76a5=_0x5d76a5||0xcc;return function(_0x405700){if(_0x405700){return _0x4c96dd[_0x373c('0x1b')](_0x5d76a5);}return _0x4c96dd['status'](_0x5d76a5)[_0x373c('0x1c')]();};}function respondWithResult(_0xdbcd82,_0x3c954e){_0x3c954e=_0x3c954e||0xc8;return function(_0x159fd2){if(_0x159fd2){return _0xdbcd82[_0x373c('0x1d')](_0x3c954e)[_0x373c('0x1e')](_0x159fd2);}};}function respondWithFilteredResult(_0x1f52ca,_0x2e0ace){return function(_0x1892d5){if(_0x1892d5){var _0x3b8d6a=typeof _0x2e0ace['offset']==='undefined'&&typeof _0x2e0ace['limit']===_0x373c('0x1f');var _0x37564e=_0x1892d5[_0x373c('0x20')];var _0x3d6aac=_0x3b8d6a?0x0:_0x2e0ace['offset'];var _0x17d579=_0x3b8d6a?_0x1892d5[_0x373c('0x20')]:_0x2e0ace['offset']+_0x2e0ace[_0x373c('0x21')];var _0x125884;if(_0x17d579>=_0x37564e){_0x17d579=_0x37564e;_0x125884=0xc8;}else{_0x125884=0xce;}_0x1f52ca['status'](_0x125884);return _0x1f52ca[_0x373c('0x22')](_0x373c('0x23'),_0x3d6aac+'-'+_0x17d579+'/'+_0x37564e)[_0x373c('0x1e')](_0x1892d5);}return null;};}function patchUpdates(_0x9ffd84){return function(_0x281798){try{jsonpatch['apply'](_0x281798,_0x9ffd84,!![]);}catch(_0x4da0ff){return BPromise[_0x373c('0x24')](_0x4da0ff);}return _0x281798['save']();};}function saveUpdates(_0x5097e9,_0x4936da){return function(_0x59c0e3){if(_0x59c0e3){return _0x59c0e3[_0x373c('0x25')](_0x5097e9)[_0x373c('0x26')](function(_0x41f43a){return _0x41f43a;});}return null;};}function removeEntity(_0x2710b3,_0xcc9626){return function(_0x1fefea){if(_0x1fefea){return _0x1fefea[_0x373c('0x27')]()['then'](function(){_0x2710b3[_0x373c('0x1d')](0xcc)[_0x373c('0x1c')]();});}};}function handleEntityNotFound(_0x5eaa42,_0x4a1cbe){return function(_0x68a089){if(!_0x68a089){_0x5eaa42[_0x373c('0x1b')](0x194);}return _0x68a089;};}function handleError(_0x44d30b,_0x4e0bcd){_0x4e0bcd=_0x4e0bcd||0x1f4;return function(_0x3a8b11){logger['error'](_0x3a8b11[_0x373c('0x28')]);if(_0x3a8b11[_0x373c('0x29')]){delete _0x3a8b11[_0x373c('0x29')];}_0x44d30b['status'](_0x4e0bcd)['send'](_0x3a8b11);};}exports[_0x373c('0x2a')]=function(_0x2ba6e9,_0x3e4309){var _0x20fc53={},_0x139725={},_0x530075={'count':0x0,'rows':[]};var _0x3b121f=_['map'](db[_0x373c('0x2b')]['rawAttributes'],function(_0x3631f0){return{'name':_0x3631f0[_0x373c('0x2c')],'type':_0x3631f0[_0x373c('0x2d')][_0x373c('0x2e')]};});_0x139725['model']=_[_0x373c('0x2f')](_0x3b121f,_0x373c('0x29'));_0x139725[_0x373c('0x30')]=_['keys'](_0x2ba6e9[_0x373c('0x30')]);_0x139725[_0x373c('0x31')]=_[_0x373c('0x32')](_0x139725[_0x373c('0x33')],_0x139725['query']);_0x20fc53[_0x373c('0x34')]=_[_0x373c('0x32')](_0x139725['model'],qs[_0x373c('0x35')](_0x2ba6e9[_0x373c('0x30')]['fields']));_0x20fc53[_0x373c('0x34')]=_0x20fc53[_0x373c('0x34')][_0x373c('0x36')]?_0x20fc53[_0x373c('0x34')]:_0x139725[_0x373c('0x33')];if(!_0x2ba6e9[_0x373c('0x30')][_0x373c('0x37')](_0x373c('0x38'))){_0x20fc53[_0x373c('0x21')]=qs['limit'](_0x2ba6e9[_0x373c('0x30')]['limit']);_0x20fc53[_0x373c('0x39')]=qs['offset'](_0x2ba6e9['query'][_0x373c('0x39')]);}_0x20fc53[_0x373c('0x3a')]=qs['sort'](_0x2ba6e9[_0x373c('0x30')]['sort']);_0x20fc53['where']=qs['filters'](_['pick'](_0x2ba6e9[_0x373c('0x30')],_0x139725[_0x373c('0x31')]),_0x3b121f);if(_0x2ba6e9[_0x373c('0x30')][_0x373c('0x3b')]){_0x20fc53['where']=_[_0x373c('0x3c')](_0x20fc53[_0x373c('0x3d')],{'$or':_['map'](_0x3b121f,function(_0x3534a0){if(_0x3534a0[_0x373c('0x2d')]!==_0x373c('0x3e')){var _0xd4d2e1={};_0xd4d2e1[_0x3534a0[_0x373c('0x29')]]={'$like':'%'+_0x2ba6e9['query'][_0x373c('0x3b')]+'%'};return _0xd4d2e1;}})});}_0x20fc53=_[_0x373c('0x3c')]({},_0x20fc53,_0x2ba6e9[_0x373c('0x3f')]);var _0x297b92={'where':_0x20fc53[_0x373c('0x3d')]};return db[_0x373c('0x2b')][_0x373c('0x20')](_0x297b92)[_0x373c('0x26')](function(_0xb0bc07){_0x530075[_0x373c('0x20')]=_0xb0bc07;if(_0x2ba6e9['query'][_0x373c('0x40')]){_0x20fc53['include']=[{'all':!![]}];}return db[_0x373c('0x2b')][_0x373c('0x41')](_0x20fc53);})[_0x373c('0x26')](function(_0x4bc8d7){_0x530075[_0x373c('0x42')]=_0x4bc8d7;return _0x530075;})[_0x373c('0x26')](respondWithFilteredResult(_0x3e4309,_0x20fc53))[_0x373c('0x43')](handleError(_0x3e4309,null));};exports[_0x373c('0x44')]=function(_0x31f595,_0x4c6f83){var _0x2120b7={'raw':![],'where':{'id':_0x31f595[_0x373c('0x45')]['id']}},_0x92e1f7={};_0x92e1f7['model']=_[_0x373c('0x46')](db[_0x373c('0x2b')][_0x373c('0x47')]);_0x92e1f7[_0x373c('0x30')]=_['keys'](_0x31f595[_0x373c('0x30')]);_0x92e1f7[_0x373c('0x31')]=_[_0x373c('0x32')](_0x92e1f7[_0x373c('0x33')],_0x92e1f7[_0x373c('0x30')]);_0x2120b7[_0x373c('0x34')]=_[_0x373c('0x32')](_0x92e1f7['model'],qs[_0x373c('0x35')](_0x31f595['query']['fields']));_0x2120b7[_0x373c('0x34')]=_0x2120b7[_0x373c('0x34')][_0x373c('0x36')]?_0x2120b7[_0x373c('0x34')]:_0x92e1f7[_0x373c('0x33')];if(_0x31f595[_0x373c('0x30')]['includeAll']){_0x2120b7[_0x373c('0x48')]=[{'all':!![]}];}_0x2120b7=_['merge']({},_0x2120b7,_0x31f595['options']);return db['Dynamics365Configuration'][_0x373c('0x49')](_0x2120b7)[_0x373c('0x26')](handleEntityNotFound(_0x4c6f83,null))[_0x373c('0x26')](respondWithResult(_0x4c6f83,null))['catch'](handleError(_0x4c6f83,null));};exports[_0x373c('0x4a')]=function(_0x1f8806,_0x45e236){return db['Dynamics365Configuration'][_0x373c('0x4a')](_0x1f8806['body'],{})[_0x373c('0x26')](respondWithResult(_0x45e236,0xc9))['catch'](handleError(_0x45e236,null));};exports['update']=function(_0x13acdd,_0x53c010){if(_0x13acdd[_0x373c('0x4b')]['id']){delete _0x13acdd[_0x373c('0x4b')]['id'];}return db[_0x373c('0x2b')]['find']({'where':{'id':_0x13acdd[_0x373c('0x45')]['id']}})[_0x373c('0x26')](handleEntityNotFound(_0x53c010,null))['then'](saveUpdates(_0x13acdd['body'],null))[_0x373c('0x26')](respondWithResult(_0x53c010,null))[_0x373c('0x43')](handleError(_0x53c010,null));};exports[_0x373c('0x27')]=function(_0x1f00b0,_0x1269cc){return db[_0x373c('0x2b')][_0x373c('0x49')]({'where':{'id':_0x1f00b0[_0x373c('0x45')]['id']}})[_0x373c('0x26')](handleEntityNotFound(_0x1269cc,null))['then'](removeEntity(_0x1269cc,null))[_0x373c('0x43')](handleError(_0x1269cc,null));};exports[_0x373c('0x4c')]=function(_0x88bc64,_0x4a0af1,_0x5b55c6){var _0x5e3ff3={};var _0x1df0a6={};var _0x3be974;var _0x2364f4;return db[_0x373c('0x2b')][_0x373c('0x4d')]({'where':{'id':_0x88bc64[_0x373c('0x45')]['id']}})[_0x373c('0x26')](handleEntityNotFound(_0x4a0af1,null))[_0x373c('0x26')](function(_0x4e9553){if(_0x4e9553){_0x3be974=_0x4e9553;_0x1df0a6[_0x373c('0x33')]=_[_0x373c('0x46')](db[_0x373c('0x4e')][_0x373c('0x47')]);_0x1df0a6[_0x373c('0x30')]=_[_0x373c('0x46')](_0x88bc64['query']);_0x1df0a6['filters']=_[_0x373c('0x32')](_0x1df0a6[_0x373c('0x33')],_0x1df0a6[_0x373c('0x30')]);_0x5e3ff3[_0x373c('0x34')]=_[_0x373c('0x32')](_0x1df0a6[_0x373c('0x33')],qs['fields'](_0x88bc64['query'][_0x373c('0x35')]));_0x5e3ff3['attributes']=_0x5e3ff3[_0x373c('0x34')][_0x373c('0x36')]?_0x5e3ff3[_0x373c('0x34')]:_0x1df0a6[_0x373c('0x33')];_0x5e3ff3[_0x373c('0x3a')]=qs['sort'](_0x88bc64[_0x373c('0x30')][_0x373c('0x4f')]);_0x5e3ff3['where']=qs[_0x373c('0x31')](_['pick'](_0x88bc64[_0x373c('0x30')],_0x1df0a6['filters']));if(_0x88bc64[_0x373c('0x30')][_0x373c('0x3b')]){_0x5e3ff3[_0x373c('0x3d')]=_[_0x373c('0x3c')](_0x5e3ff3[_0x373c('0x3d')],{'$or':_[_0x373c('0x2f')](_0x5e3ff3[_0x373c('0x34')],function(_0x534cd0){var _0x1ab765={};_0x1ab765[_0x534cd0]={'$like':'%'+_0x88bc64[_0x373c('0x30')][_0x373c('0x3b')]+'%'};return _0x1ab765;})});}_0x5e3ff3=_[_0x373c('0x3c')]({},_0x5e3ff3,_0x88bc64[_0x373c('0x3f')]);return _0x3be974[_0x373c('0x4c')](_0x5e3ff3);}})[_0x373c('0x26')](function(_0x25c4be){if(_0x25c4be){_0x2364f4=_0x25c4be[_0x373c('0x36')];if(!_0x88bc64[_0x373c('0x30')][_0x373c('0x37')](_0x373c('0x38'))){_0x5e3ff3[_0x373c('0x21')]=qs[_0x373c('0x21')](_0x88bc64[_0x373c('0x30')]['limit']);_0x5e3ff3[_0x373c('0x39')]=qs['offset'](_0x88bc64[_0x373c('0x30')]['offset']);}return _0x3be974[_0x373c('0x4c')](_0x5e3ff3);}})['then'](function(_0xf39656){if(_0xf39656){return _0xf39656?{'count':_0x2364f4,'rows':_0xf39656}:null;}})['then'](respondWithResult(_0x4a0af1,null))[_0x373c('0x43')](handleError(_0x4a0af1,null));};exports[_0x373c('0x50')]=function(_0x2ef669,_0x588b45,_0x551a74){var _0x160f0b={};var _0x47df35={};var _0x3c7ad1;var _0x22af5f;return db[_0x373c('0x2b')]['findOne']({'where':{'id':_0x2ef669[_0x373c('0x45')]['id']}})['then'](handleEntityNotFound(_0x588b45,null))['then'](function(_0x23cf55){if(_0x23cf55){_0x3c7ad1=_0x23cf55;_0x47df35[_0x373c('0x33')]=_[_0x373c('0x46')](db['Dynamics365Field'][_0x373c('0x47')]);_0x47df35[_0x373c('0x30')]=_[_0x373c('0x46')](_0x2ef669[_0x373c('0x30')]);_0x47df35[_0x373c('0x31')]=_['intersection'](_0x47df35[_0x373c('0x33')],_0x47df35[_0x373c('0x30')]);_0x160f0b[_0x373c('0x34')]=_[_0x373c('0x32')](_0x47df35[_0x373c('0x33')],qs[_0x373c('0x35')](_0x2ef669[_0x373c('0x30')][_0x373c('0x35')]));_0x160f0b[_0x373c('0x34')]=_0x160f0b[_0x373c('0x34')][_0x373c('0x36')]?_0x160f0b[_0x373c('0x34')]:_0x47df35[_0x373c('0x33')];_0x160f0b[_0x373c('0x3a')]=qs[_0x373c('0x4f')](_0x2ef669[_0x373c('0x30')]['sort']);_0x160f0b['where']=qs['filters'](_[_0x373c('0x51')](_0x2ef669[_0x373c('0x30')],_0x47df35[_0x373c('0x31')]));if(_0x2ef669[_0x373c('0x30')][_0x373c('0x3b')]){_0x160f0b[_0x373c('0x3d')]=_['merge'](_0x160f0b['where'],{'$or':_['map'](_0x160f0b[_0x373c('0x34')],function(_0x2475a9){var _0x51507b={};_0x51507b[_0x2475a9]={'$like':'%'+_0x2ef669[_0x373c('0x30')][_0x373c('0x3b')]+'%'};return _0x51507b;})});}_0x160f0b=_[_0x373c('0x3c')]({},_0x160f0b,_0x2ef669[_0x373c('0x3f')]);return _0x3c7ad1[_0x373c('0x50')](_0x160f0b);}})[_0x373c('0x26')](function(_0x5cdf0b){if(_0x5cdf0b){_0x22af5f=_0x5cdf0b[_0x373c('0x36')];if(!_0x2ef669[_0x373c('0x30')][_0x373c('0x37')](_0x373c('0x38'))){_0x160f0b['limit']=qs['limit'](_0x2ef669[_0x373c('0x30')]['limit']);_0x160f0b[_0x373c('0x39')]=qs[_0x373c('0x39')](_0x2ef669[_0x373c('0x30')][_0x373c('0x39')]);}return _0x3c7ad1[_0x373c('0x50')](_0x160f0b);}})[_0x373c('0x26')](function(_0x2ab0bb){if(_0x2ab0bb){return _0x2ab0bb?{'count':_0x22af5f,'rows':_0x2ab0bb}:null;}})[_0x373c('0x26')](respondWithResult(_0x588b45,null))[_0x373c('0x43')](handleError(_0x588b45,null));};exports[_0x373c('0x52')]=function(_0x100c4a,_0x57e84d,_0x1c06e4){var _0x1b5fab={};var _0x300123={};var _0x4e220d;var _0x54c44c;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x100c4a['params']['id']}})['then'](handleEntityNotFound(_0x57e84d,null))[_0x373c('0x26')](function(_0xc6be20){if(_0xc6be20){_0x4e220d=_0xc6be20;_0x300123[_0x373c('0x33')]=_[_0x373c('0x46')](db[_0x373c('0x4e')][_0x373c('0x47')]);_0x300123[_0x373c('0x30')]=_[_0x373c('0x46')](_0x100c4a[_0x373c('0x30')]);_0x300123[_0x373c('0x31')]=_[_0x373c('0x32')](_0x300123[_0x373c('0x33')],_0x300123[_0x373c('0x30')]);_0x1b5fab[_0x373c('0x34')]=_[_0x373c('0x32')](_0x300123['model'],qs[_0x373c('0x35')](_0x100c4a['query'][_0x373c('0x35')]));_0x1b5fab[_0x373c('0x34')]=_0x1b5fab[_0x373c('0x34')]['length']?_0x1b5fab['attributes']:_0x300123[_0x373c('0x33')];_0x1b5fab[_0x373c('0x3a')]=qs[_0x373c('0x4f')](_0x100c4a[_0x373c('0x30')][_0x373c('0x4f')]);_0x1b5fab[_0x373c('0x3d')]=qs['filters'](_[_0x373c('0x51')](_0x100c4a['query'],_0x300123[_0x373c('0x31')]));if(_0x100c4a[_0x373c('0x30')][_0x373c('0x3b')]){_0x1b5fab['where']=_[_0x373c('0x3c')](_0x1b5fab['where'],{'$or':_['map'](_0x1b5fab[_0x373c('0x34')],function(_0x440ed8){var _0x5d1a22={};_0x5d1a22[_0x440ed8]={'$like':'%'+_0x100c4a['query']['filter']+'%'};return _0x5d1a22;})});}_0x1b5fab=_[_0x373c('0x3c')]({},_0x1b5fab,_0x100c4a[_0x373c('0x3f')]);return _0x4e220d[_0x373c('0x52')](_0x1b5fab);}})['then'](function(_0x3e9b93){if(_0x3e9b93){_0x54c44c=_0x3e9b93[_0x373c('0x36')];if(!_0x100c4a[_0x373c('0x30')][_0x373c('0x37')](_0x373c('0x38'))){_0x1b5fab[_0x373c('0x21')]=qs[_0x373c('0x21')](_0x100c4a[_0x373c('0x30')][_0x373c('0x21')]);_0x1b5fab[_0x373c('0x39')]=qs[_0x373c('0x39')](_0x100c4a['query'][_0x373c('0x39')]);}return _0x4e220d[_0x373c('0x52')](_0x1b5fab);}})[_0x373c('0x26')](function(_0x2f8328){if(_0x2f8328){return _0x2f8328?{'count':_0x54c44c,'rows':_0x2f8328}:null;}})[_0x373c('0x26')](respondWithResult(_0x57e84d,null))[_0x373c('0x43')](handleError(_0x57e84d,null));};
\ No newline at end of file
+var _0x6b55=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','params','find','catch','create','body','getFields','findOne','Dynamics365Field','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0x6b55,0x1a1));var _0x56b5=function(_0x49ed8c,_0x4192e3){_0x49ed8c=_0x49ed8c-0x0;var _0x5dc851=_0x6b55[_0x49ed8c];return _0x5dc851;};'use strict';var emlformat=require(_0x56b5('0x0'));var rimraf=require(_0x56b5('0x1'));var zipdir=require(_0x56b5('0x2'));var jsonpatch=require(_0x56b5('0x3'));var rp=require(_0x56b5('0x4'));var moment=require(_0x56b5('0x5'));var BPromise=require(_0x56b5('0x6'));var Mustache=require(_0x56b5('0x7'));var util=require(_0x56b5('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x56b5('0x9'));var ejs=require(_0x56b5('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x56b5('0xb'));var squel=require('squel');var crypto=require(_0x56b5('0xc'));var jsforce=require(_0x56b5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x56b5('0x9'));var querystring=require(_0x56b5('0xe'));var Papa=require(_0x56b5('0xf'));var Redis=require('ioredis');var authService=require(_0x56b5('0x10'));var qs=require(_0x56b5('0x11'));var as=require(_0x56b5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x56b5('0x13'))(_0x56b5('0x14'));var utils=require('../../config/utils');var config=require(_0x56b5('0x15'));var licenseUtil=require(_0x56b5('0x16'));var db=require(_0x56b5('0x17'))['db'];function respondWithStatusCode(_0x5273e4,_0x2ad285){_0x2ad285=_0x2ad285||0xcc;return function(_0x459ab2){if(_0x459ab2){return _0x5273e4[_0x56b5('0x18')](_0x2ad285);}return _0x5273e4['status'](_0x2ad285)[_0x56b5('0x19')]();};}function respondWithResult(_0x4aba84,_0x262cec){_0x262cec=_0x262cec||0xc8;return function(_0x3cb245){if(_0x3cb245){return _0x4aba84[_0x56b5('0x1a')](_0x262cec)[_0x56b5('0x1b')](_0x3cb245);}};}function respondWithFilteredResult(_0x24a03d,_0x55e9f7){return function(_0x22577f){if(_0x22577f){var _0x429f89=typeof _0x55e9f7[_0x56b5('0x1c')]===_0x56b5('0x1d')&&typeof _0x55e9f7[_0x56b5('0x1e')]==='undefined';var _0x8dc7a4=_0x22577f[_0x56b5('0x1f')];var _0x65b000=_0x429f89?0x0:_0x55e9f7[_0x56b5('0x1c')];var _0x3c05ba=_0x429f89?_0x22577f[_0x56b5('0x1f')]:_0x55e9f7['offset']+_0x55e9f7[_0x56b5('0x1e')];var _0x43ecb1;if(_0x3c05ba>=_0x8dc7a4){_0x3c05ba=_0x8dc7a4;_0x43ecb1=0xc8;}else{_0x43ecb1=0xce;}_0x24a03d['status'](_0x43ecb1);return _0x24a03d[_0x56b5('0x20')](_0x56b5('0x21'),_0x65b000+'-'+_0x3c05ba+'/'+_0x8dc7a4)[_0x56b5('0x1b')](_0x22577f);}return null;};}function patchUpdates(_0x172c7a){return function(_0x24a69b){try{jsonpatch[_0x56b5('0x22')](_0x24a69b,_0x172c7a,!![]);}catch(_0x48b567){return BPromise[_0x56b5('0x23')](_0x48b567);}return _0x24a69b[_0x56b5('0x24')]();};}function saveUpdates(_0x282b53,_0x5424ea){return function(_0x254d9d){if(_0x254d9d){return _0x254d9d[_0x56b5('0x25')](_0x282b53)['then'](function(_0x5561f9){return _0x5561f9;});}return null;};}function removeEntity(_0x66ea08,_0xfe8652){return function(_0x41b8ef){if(_0x41b8ef){return _0x41b8ef[_0x56b5('0x26')]()[_0x56b5('0x27')](function(){_0x66ea08['status'](0xcc)[_0x56b5('0x19')]();});}};}function handleEntityNotFound(_0x30112b,_0x58d0f7){return function(_0x19f4f1){if(!_0x19f4f1){_0x30112b['sendStatus'](0x194);}return _0x19f4f1;};}function handleError(_0x59aaf7,_0x2891ff){_0x2891ff=_0x2891ff||0x1f4;return function(_0x5b51b9){logger['error'](_0x5b51b9['stack']);if(_0x5b51b9[_0x56b5('0x28')]){delete _0x5b51b9[_0x56b5('0x28')];}_0x59aaf7[_0x56b5('0x1a')](_0x2891ff)[_0x56b5('0x29')](_0x5b51b9);};}exports[_0x56b5('0x2a')]=function(_0x75012b,_0x38bfa1){var _0x59aecc={},_0x5bb158={},_0x3dbf38={'count':0x0,'rows':[]};var _0x2bb8f4=_[_0x56b5('0x2b')](db[_0x56b5('0x2c')][_0x56b5('0x2d')],function(_0x8e2ba4){return{'name':_0x8e2ba4[_0x56b5('0x2e')],'type':_0x8e2ba4[_0x56b5('0x2f')][_0x56b5('0x30')]};});_0x5bb158[_0x56b5('0x31')]=_[_0x56b5('0x2b')](_0x2bb8f4,'name');_0x5bb158['query']=_[_0x56b5('0x32')](_0x75012b['query']);_0x5bb158[_0x56b5('0x33')]=_[_0x56b5('0x34')](_0x5bb158[_0x56b5('0x31')],_0x5bb158[_0x56b5('0x35')]);_0x59aecc[_0x56b5('0x36')]=_['intersection'](_0x5bb158[_0x56b5('0x31')],qs['fields'](_0x75012b[_0x56b5('0x35')][_0x56b5('0x37')]));_0x59aecc['attributes']=_0x59aecc[_0x56b5('0x36')][_0x56b5('0x38')]?_0x59aecc[_0x56b5('0x36')]:_0x5bb158[_0x56b5('0x31')];if(!_0x75012b[_0x56b5('0x35')][_0x56b5('0x39')](_0x56b5('0x3a'))){_0x59aecc[_0x56b5('0x1e')]=qs[_0x56b5('0x1e')](_0x75012b[_0x56b5('0x35')][_0x56b5('0x1e')]);_0x59aecc['offset']=qs[_0x56b5('0x1c')](_0x75012b[_0x56b5('0x35')][_0x56b5('0x1c')]);}_0x59aecc[_0x56b5('0x3b')]=qs[_0x56b5('0x3c')](_0x75012b[_0x56b5('0x35')]['sort']);_0x59aecc[_0x56b5('0x3d')]=qs[_0x56b5('0x33')](_[_0x56b5('0x3e')](_0x75012b['query'],_0x5bb158[_0x56b5('0x33')]),_0x2bb8f4);if(_0x75012b[_0x56b5('0x35')]['filter']){_0x59aecc[_0x56b5('0x3d')]=_['merge'](_0x59aecc[_0x56b5('0x3d')],{'$or':_[_0x56b5('0x2b')](_0x2bb8f4,function(_0x58354c){if(_0x58354c[_0x56b5('0x2f')]!=='VIRTUAL'){var _0x48aea7={};_0x48aea7[_0x58354c[_0x56b5('0x28')]]={'$like':'%'+_0x75012b[_0x56b5('0x35')][_0x56b5('0x3f')]+'%'};return _0x48aea7;}})});}_0x59aecc=_[_0x56b5('0x40')]({},_0x59aecc,_0x75012b[_0x56b5('0x41')]);var _0x38abe6={'where':_0x59aecc[_0x56b5('0x3d')]};return db['Dynamics365Configuration']['count'](_0x38abe6)[_0x56b5('0x27')](function(_0x37fb1b){_0x3dbf38[_0x56b5('0x1f')]=_0x37fb1b;if(_0x75012b[_0x56b5('0x35')][_0x56b5('0x42')]){_0x59aecc[_0x56b5('0x43')]=[{'all':!![]}];}return db[_0x56b5('0x2c')][_0x56b5('0x44')](_0x59aecc);})['then'](function(_0x4f25c7){_0x3dbf38['rows']=_0x4f25c7;return _0x3dbf38;})['then'](respondWithFilteredResult(_0x38bfa1,_0x59aecc))['catch'](handleError(_0x38bfa1,null));};exports['show']=function(_0x272313,_0x36d7cd){var _0x53dfc2={'raw':![],'where':{'id':_0x272313[_0x56b5('0x45')]['id']}},_0x2b6de4={};_0x2b6de4[_0x56b5('0x31')]=_['keys'](db[_0x56b5('0x2c')][_0x56b5('0x2d')]);_0x2b6de4['query']=_[_0x56b5('0x32')](_0x272313[_0x56b5('0x35')]);_0x2b6de4[_0x56b5('0x33')]=_[_0x56b5('0x34')](_0x2b6de4[_0x56b5('0x31')],_0x2b6de4[_0x56b5('0x35')]);_0x53dfc2[_0x56b5('0x36')]=_['intersection'](_0x2b6de4['model'],qs['fields'](_0x272313[_0x56b5('0x35')]['fields']));_0x53dfc2[_0x56b5('0x36')]=_0x53dfc2[_0x56b5('0x36')]['length']?_0x53dfc2['attributes']:_0x2b6de4[_0x56b5('0x31')];if(_0x272313[_0x56b5('0x35')][_0x56b5('0x42')]){_0x53dfc2[_0x56b5('0x43')]=[{'all':!![]}];}_0x53dfc2=_[_0x56b5('0x40')]({},_0x53dfc2,_0x272313[_0x56b5('0x41')]);return db[_0x56b5('0x2c')][_0x56b5('0x46')](_0x53dfc2)[_0x56b5('0x27')](handleEntityNotFound(_0x36d7cd,null))['then'](respondWithResult(_0x36d7cd,null))[_0x56b5('0x47')](handleError(_0x36d7cd,null));};exports[_0x56b5('0x48')]=function(_0x4d7536,_0x1870a1){return db[_0x56b5('0x2c')][_0x56b5('0x48')](_0x4d7536['body'],{})['then'](respondWithResult(_0x1870a1,0xc9))['catch'](handleError(_0x1870a1,null));};exports[_0x56b5('0x25')]=function(_0x15a390,_0x2ef848){if(_0x15a390[_0x56b5('0x49')]['id']){delete _0x15a390[_0x56b5('0x49')]['id'];}return db['Dynamics365Configuration'][_0x56b5('0x46')]({'where':{'id':_0x15a390[_0x56b5('0x45')]['id']}})[_0x56b5('0x27')](handleEntityNotFound(_0x2ef848,null))['then'](saveUpdates(_0x15a390[_0x56b5('0x49')],null))[_0x56b5('0x27')](respondWithResult(_0x2ef848,null))[_0x56b5('0x47')](handleError(_0x2ef848,null));};exports[_0x56b5('0x26')]=function(_0x2b8ae6,_0x1adfee){return db[_0x56b5('0x2c')]['find']({'where':{'id':_0x2b8ae6[_0x56b5('0x45')]['id']}})['then'](handleEntityNotFound(_0x1adfee,null))[_0x56b5('0x27')](removeEntity(_0x1adfee,null))[_0x56b5('0x47')](handleError(_0x1adfee,null));};exports[_0x56b5('0x4a')]=function(_0x5dab25,_0x149cd3,_0xa4085){var _0x270925={};var _0xd923be={};var _0x228baa;var _0x4dea0b;return db[_0x56b5('0x2c')][_0x56b5('0x4b')]({'where':{'id':_0x5dab25[_0x56b5('0x45')]['id']}})[_0x56b5('0x27')](handleEntityNotFound(_0x149cd3,null))[_0x56b5('0x27')](function(_0x4b3bcd){if(_0x4b3bcd){_0x228baa=_0x4b3bcd;_0xd923be[_0x56b5('0x31')]=_[_0x56b5('0x32')](db[_0x56b5('0x4c')]['rawAttributes']);_0xd923be[_0x56b5('0x35')]=_[_0x56b5('0x32')](_0x5dab25[_0x56b5('0x35')]);_0xd923be[_0x56b5('0x33')]=_[_0x56b5('0x34')](_0xd923be[_0x56b5('0x31')],_0xd923be[_0x56b5('0x35')]);_0x270925[_0x56b5('0x36')]=_[_0x56b5('0x34')](_0xd923be[_0x56b5('0x31')],qs[_0x56b5('0x37')](_0x5dab25[_0x56b5('0x35')][_0x56b5('0x37')]));_0x270925['attributes']=_0x270925[_0x56b5('0x36')][_0x56b5('0x38')]?_0x270925[_0x56b5('0x36')]:_0xd923be['model'];_0x270925['order']=qs['sort'](_0x5dab25['query']['sort']);_0x270925[_0x56b5('0x3d')]=qs[_0x56b5('0x33')](_['pick'](_0x5dab25[_0x56b5('0x35')],_0xd923be[_0x56b5('0x33')]));if(_0x5dab25['query']['filter']){_0x270925[_0x56b5('0x3d')]=_['merge'](_0x270925['where'],{'$or':_[_0x56b5('0x2b')](_0x270925[_0x56b5('0x36')],function(_0x29d06f){var _0x10b089={};_0x10b089[_0x29d06f]={'$like':'%'+_0x5dab25[_0x56b5('0x35')][_0x56b5('0x3f')]+'%'};return _0x10b089;})});}_0x270925=_['merge']({},_0x270925,_0x5dab25[_0x56b5('0x41')]);return _0x228baa[_0x56b5('0x4a')](_0x270925);}})[_0x56b5('0x27')](function(_0x314d16){if(_0x314d16){_0x4dea0b=_0x314d16[_0x56b5('0x38')];if(!_0x5dab25['query'][_0x56b5('0x39')](_0x56b5('0x3a'))){_0x270925[_0x56b5('0x1e')]=qs[_0x56b5('0x1e')](_0x5dab25[_0x56b5('0x35')][_0x56b5('0x1e')]);_0x270925[_0x56b5('0x1c')]=qs[_0x56b5('0x1c')](_0x5dab25[_0x56b5('0x35')][_0x56b5('0x1c')]);}return _0x228baa['getFields'](_0x270925);}})[_0x56b5('0x27')](function(_0x1cedfc){if(_0x1cedfc){return _0x1cedfc?{'count':_0x4dea0b,'rows':_0x1cedfc}:null;}})[_0x56b5('0x27')](respondWithResult(_0x149cd3,null))[_0x56b5('0x47')](handleError(_0x149cd3,null));};exports['getSubjects']=function(_0x3e52af,_0x3df985,_0x4f91da){var _0x47c616={};var _0x4eb635={};var _0xa0ee9f;var _0x4ce199;return db[_0x56b5('0x2c')][_0x56b5('0x4b')]({'where':{'id':_0x3e52af[_0x56b5('0x45')]['id']}})[_0x56b5('0x27')](handleEntityNotFound(_0x3df985,null))[_0x56b5('0x27')](function(_0x1cc8ff){if(_0x1cc8ff){_0xa0ee9f=_0x1cc8ff;_0x4eb635[_0x56b5('0x31')]=_['keys'](db[_0x56b5('0x4c')][_0x56b5('0x2d')]);_0x4eb635['query']=_[_0x56b5('0x32')](_0x3e52af['query']);_0x4eb635[_0x56b5('0x33')]=_[_0x56b5('0x34')](_0x4eb635[_0x56b5('0x31')],_0x4eb635[_0x56b5('0x35')]);_0x47c616[_0x56b5('0x36')]=_[_0x56b5('0x34')](_0x4eb635['model'],qs[_0x56b5('0x37')](_0x3e52af[_0x56b5('0x35')][_0x56b5('0x37')]));_0x47c616[_0x56b5('0x36')]=_0x47c616[_0x56b5('0x36')]['length']?_0x47c616[_0x56b5('0x36')]:_0x4eb635[_0x56b5('0x31')];_0x47c616[_0x56b5('0x3b')]=qs[_0x56b5('0x3c')](_0x3e52af['query'][_0x56b5('0x3c')]);_0x47c616[_0x56b5('0x3d')]=qs[_0x56b5('0x33')](_[_0x56b5('0x3e')](_0x3e52af[_0x56b5('0x35')],_0x4eb635['filters']));if(_0x3e52af['query'][_0x56b5('0x3f')]){_0x47c616[_0x56b5('0x3d')]=_['merge'](_0x47c616[_0x56b5('0x3d')],{'$or':_[_0x56b5('0x2b')](_0x47c616[_0x56b5('0x36')],function(_0x1b51e4){var _0x5e0552={};_0x5e0552[_0x1b51e4]={'$like':'%'+_0x3e52af[_0x56b5('0x35')]['filter']+'%'};return _0x5e0552;})});}_0x47c616=_[_0x56b5('0x40')]({},_0x47c616,_0x3e52af[_0x56b5('0x41')]);return _0xa0ee9f['getSubjects'](_0x47c616);}})[_0x56b5('0x27')](function(_0x5b1603){if(_0x5b1603){_0x4ce199=_0x5b1603[_0x56b5('0x38')];if(!_0x3e52af[_0x56b5('0x35')][_0x56b5('0x39')]('nolimit')){_0x47c616[_0x56b5('0x1e')]=qs[_0x56b5('0x1e')](_0x3e52af[_0x56b5('0x35')][_0x56b5('0x1e')]);_0x47c616[_0x56b5('0x1c')]=qs[_0x56b5('0x1c')](_0x3e52af['query']['offset']);}return _0xa0ee9f[_0x56b5('0x4d')](_0x47c616);}})[_0x56b5('0x27')](function(_0x42b1ba){if(_0x42b1ba){return _0x42b1ba?{'count':_0x4ce199,'rows':_0x42b1ba}:null;}})[_0x56b5('0x27')](respondWithResult(_0x3df985,null))['catch'](handleError(_0x3df985,null));};exports[_0x56b5('0x4e')]=function(_0x581ed8,_0x3b49f0,_0x4757fc){var _0x2e5b87={};var _0x5c3a04={};var _0x43662c;var _0x146d11;return db[_0x56b5('0x2c')]['findOne']({'where':{'id':_0x581ed8[_0x56b5('0x45')]['id']}})[_0x56b5('0x27')](handleEntityNotFound(_0x3b49f0,null))[_0x56b5('0x27')](function(_0x3e8c7f){if(_0x3e8c7f){_0x43662c=_0x3e8c7f;_0x5c3a04[_0x56b5('0x31')]=_[_0x56b5('0x32')](db[_0x56b5('0x4c')]['rawAttributes']);_0x5c3a04['query']=_[_0x56b5('0x32')](_0x581ed8[_0x56b5('0x35')]);_0x5c3a04[_0x56b5('0x33')]=_['intersection'](_0x5c3a04[_0x56b5('0x31')],_0x5c3a04[_0x56b5('0x35')]);_0x2e5b87[_0x56b5('0x36')]=_[_0x56b5('0x34')](_0x5c3a04[_0x56b5('0x31')],qs[_0x56b5('0x37')](_0x581ed8[_0x56b5('0x35')][_0x56b5('0x37')]));_0x2e5b87[_0x56b5('0x36')]=_0x2e5b87[_0x56b5('0x36')][_0x56b5('0x38')]?_0x2e5b87[_0x56b5('0x36')]:_0x5c3a04[_0x56b5('0x31')];_0x2e5b87[_0x56b5('0x3b')]=qs[_0x56b5('0x3c')](_0x581ed8[_0x56b5('0x35')][_0x56b5('0x3c')]);_0x2e5b87['where']=qs['filters'](_[_0x56b5('0x3e')](_0x581ed8[_0x56b5('0x35')],_0x5c3a04[_0x56b5('0x33')]));if(_0x581ed8[_0x56b5('0x35')][_0x56b5('0x3f')]){_0x2e5b87[_0x56b5('0x3d')]=_[_0x56b5('0x40')](_0x2e5b87[_0x56b5('0x3d')],{'$or':_['map'](_0x2e5b87[_0x56b5('0x36')],function(_0x3054f1){var _0xcec8f5={};_0xcec8f5[_0x3054f1]={'$like':'%'+_0x581ed8['query'][_0x56b5('0x3f')]+'%'};return _0xcec8f5;})});}_0x2e5b87=_['merge']({},_0x2e5b87,_0x581ed8[_0x56b5('0x41')]);return _0x43662c[_0x56b5('0x4e')](_0x2e5b87);}})[_0x56b5('0x27')](function(_0x6db428){if(_0x6db428){_0x146d11=_0x6db428[_0x56b5('0x38')];if(!_0x581ed8['query']['hasOwnProperty'](_0x56b5('0x3a'))){_0x2e5b87[_0x56b5('0x1e')]=qs['limit'](_0x581ed8[_0x56b5('0x35')][_0x56b5('0x1e')]);_0x2e5b87[_0x56b5('0x1c')]=qs['offset'](_0x581ed8[_0x56b5('0x35')][_0x56b5('0x1c')]);}return _0x43662c[_0x56b5('0x4e')](_0x2e5b87);}})[_0x56b5('0x27')](function(_0x29a22c){if(_0x29a22c){return _0x29a22c?{'count':_0x146d11,'rows':_0x29a22c}:null;}})['then'](respondWithResult(_0x3b49f0,null))[_0x56b5('0x47')](handleError(_0x3b49f0,null));};
\ No newline at end of file
index 6c43d65..f681ba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['request-promise','path','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird'];(function(_0x24c9dc,_0x53a4f0){var _0x570a1d=function(_0x501820){while(--_0x501820){_0x24c9dc['push'](_0x24c9dc['shift']());}};_0x570a1d(++_0x53a4f0);}(_0xbec5,0xe5));var _0x5bec=function(_0x12d812,_0x496bb7){_0x12d812=_0x12d812-0x0;var _0x3711ab=_0xbec5[_0x12d812];return _0x3711ab;};'use strict';var _=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var logger=require('../../config/logger')(_0x5bec('0x2'));var moment=require(_0x5bec('0x3'));var BPromise=require(_0x5bec('0x4'));var rp=require(_0x5bec('0x5'));var fs=require('fs');var path=require(_0x5bec('0x6'));var rimraf=require('rimraf');var config=require(_0x5bec('0x7'));var attributes=require(_0x5bec('0x8'));module[_0x5bec('0x9')]=function(_0x4aaac6,_0x3ed67a){return _0x4aaac6[_0x5bec('0xa')](_0x5bec('0xb'),attributes,{'tableName':_0x5bec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','Dynamics365Configuration','int_dynamics365_configurations','lodash','../../config/logger','api','moment','path','../../config/environment','./intDynamics365Configuration.attributes'];(function(_0x277fa3,_0x3b2dde){var _0x2e4520=function(_0x209eab){while(--_0x209eab){_0x277fa3['push'](_0x277fa3['shift']());}};_0x2e4520(++_0x3b2dde);}(_0x3e74,0x175));var _0x43e7=function(_0x41ce8b,_0x43ba7a){_0x41ce8b=_0x41ce8b-0x0;var _0x308861=_0x3e74[_0x41ce8b];return _0x308861;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6abdf21..9cc3bf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2de=['result','catch','util','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x377a6e,_0x59b99d){var _0x37f751=function(_0x2ed25c){while(--_0x2ed25c){_0x377a6e['push'](_0x377a6e['shift']());}};_0x37f751(++_0x59b99d);}(_0xd2de,0x1a4));var _0xed2d=function(_0x3bcdd3,_0x756578){_0x3bcdd3=_0x3bcdd3-0x0;var _0x3ef600=_0xd2de[_0x3bcdd3];return _0x3ef600;};'use strict';var _=require('lodash');var util=require(_0xed2d('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xed2d('0x1'));var fs=require('fs');var Redis=require(_0xed2d('0x2'));var db=require(_0xed2d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xed2d('0x4'))('rpc');var config=require(_0xed2d('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xed2d('0x6')][_0xed2d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x39c082,_0x637eda,_0x21c5a9){return new BPromise(function(_0x42b912,_0x3baaeb){return client[_0xed2d('0x8')](_0x39c082,_0x21c5a9)[_0xed2d('0x9')](function(_0x3def8a){logger['info'](_0xed2d('0xa'),_0x637eda,_0xed2d('0xb'));logger['debug'](_0xed2d('0xc'),_0x637eda,_0xed2d('0xb'),JSON[_0xed2d('0xd')](_0x3def8a));if(_0x3def8a[_0xed2d('0xe')]){if(_0x3def8a[_0xed2d('0xe')]['code']===0x1f4){logger[_0xed2d('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x637eda,_0x3def8a[_0xed2d('0xe')][_0xed2d('0xf')]);return _0x3baaeb(_0x3def8a[_0xed2d('0xe')][_0xed2d('0xf')]);}logger[_0xed2d('0xe')](_0xed2d('0xa'),_0x637eda,_0x3def8a[_0xed2d('0xe')][_0xed2d('0xf')]);return _0x42b912(_0x3def8a[_0xed2d('0xe')][_0xed2d('0xf')]);}else{logger[_0xed2d('0x10')]('Dynamics365Configuration,\x20%s,\x20%s',_0x637eda,_0xed2d('0xb'));_0x42b912(_0x3def8a[_0xed2d('0x11')][_0xed2d('0xf')]);}})[_0xed2d('0x12')](function(_0xb8e632){logger['error'](_0xed2d('0xa'),_0x637eda,_0xb8e632);_0x3baaeb(_0xb8e632);});});}
\ No newline at end of file
+var _0x06e2=['then','info','Dynamics365Configuration,\x20%s,\x20%s','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x7a76fe,_0x5c1f69){var _0x9636bc=function(_0x3811a4){while(--_0x3811a4){_0x7a76fe['push'](_0x7a76fe['shift']());}};_0x9636bc(++_0x5c1f69);}(_0x06e2,0xfa));var _0x206e=function(_0x5d0b80,_0x3f460d){_0x5d0b80=_0x5d0b80-0x0;var _0xa05655=_0x06e2[_0x5d0b80];return _0xa05655;};'use strict';var _=require(_0x206e('0x0'));var util=require(_0x206e('0x1'));var moment=require(_0x206e('0x2'));var BPromise=require(_0x206e('0x3'));var rs=require(_0x206e('0x4'));var fs=require('fs');var Redis=require(_0x206e('0x5'));var db=require(_0x206e('0x6'))['db'];var utils=require(_0x206e('0x7'));var logger=require(_0x206e('0x8'))(_0x206e('0x9'));var config=require(_0x206e('0xa'));var jayson=require(_0x206e('0xb'));var client=jayson[_0x206e('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3ebc49,_0x143300,_0x15a853){return new BPromise(function(_0x2cc8b1,_0x303936){return client[_0x206e('0xd')](_0x3ebc49,_0x15a853)[_0x206e('0xe')](function(_0x369020){logger[_0x206e('0xf')](_0x206e('0x10'),_0x143300,'request\x20sent');logger['debug'](_0x206e('0x11'),_0x143300,_0x206e('0x12'),JSON[_0x206e('0x13')](_0x369020));if(_0x369020['error']){if(_0x369020[_0x206e('0x14')][_0x206e('0x15')]===0x1f4){logger[_0x206e('0x14')]('Dynamics365Configuration,\x20%s,\x20%s',_0x143300,_0x369020[_0x206e('0x14')][_0x206e('0x16')]);return _0x303936(_0x369020[_0x206e('0x14')][_0x206e('0x16')]);}logger[_0x206e('0x14')](_0x206e('0x10'),_0x143300,_0x369020[_0x206e('0x14')]['message']);return _0x2cc8b1(_0x369020[_0x206e('0x14')][_0x206e('0x16')]);}else{logger[_0x206e('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x143300,_0x206e('0x12'));_0x2cc8b1(_0x369020['result'][_0x206e('0x16')]);}})[_0x206e('0x17')](function(_0x43a7ba){logger[_0x206e('0x14')](_0x206e('0x10'),_0x143300,_0x43a7ba);_0x303936(_0x43a7ba);});});}
\ No newline at end of file
index f138b37..ee3f1fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8369=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','index','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x5e020f,_0x263674){var _0x115f9f=function(_0x4d0f3a){while(--_0x4d0f3a){_0x5e020f['push'](_0x5e020f['shift']());}};_0x115f9f(++_0x263674);}(_0x8369,0x1de));var _0x9836=function(_0x4acbbd,_0x3357d0){_0x4acbbd=_0x4acbbd-0x0;var _0x4691b6=_0x8369[_0x4acbbd];return _0x4691b6;};'use strict';var multer=require(_0x9836('0x0'));var util=require(_0x9836('0x1'));var path=require(_0x9836('0x2'));var timeout=require(_0x9836('0x3'));var express=require(_0x9836('0x4'));var router=express[_0x9836('0x5')]();var fs_extra=require(_0x9836('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9836('0x7'));var config=require(_0x9836('0x8'));var controller=require(_0x9836('0x9'));router[_0x9836('0xa')]('/',auth['isAuthenticated'](),controller[_0x9836('0xb')]);router[_0x9836('0xa')](_0x9836('0xc'),auth[_0x9836('0xd')](),controller[_0x9836('0xe')]);router[_0x9836('0xf')]('/',auth[_0x9836('0xd')](),controller[_0x9836('0x10')]);router[_0x9836('0x11')](_0x9836('0xc'),auth[_0x9836('0xd')](),controller['update']);router[_0x9836('0x12')](_0x9836('0xc'),auth[_0x9836('0xd')](),controller[_0x9836('0x13')]);module[_0x9836('0x14')]=router;
\ No newline at end of file
+var _0x1a62=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','express'];(function(_0x45ed5a,_0x2f38c2){var _0x368064=function(_0x370f37){while(--_0x370f37){_0x45ed5a['push'](_0x45ed5a['shift']());}};_0x368064(++_0x2f38c2);}(_0x1a62,0x10c));var _0x21a6=function(_0x11588d,_0x45485d){_0x11588d=_0x11588d-0x0;var _0x2dfc86=_0x1a62[_0x11588d];return _0x2dfc86;};'use strict';var multer=require(_0x21a6('0x0'));var util=require(_0x21a6('0x1'));var path=require(_0x21a6('0x2'));var timeout=require(_0x21a6('0x3'));var express=require(_0x21a6('0x4'));var router=express[_0x21a6('0x5')]();var fs_extra=require(_0x21a6('0x6'));var auth=require(_0x21a6('0x7'));var interaction=require(_0x21a6('0x8'));var config=require(_0x21a6('0x9'));var controller=require(_0x21a6('0xa'));router['get']('/',auth[_0x21a6('0xb')](),controller[_0x21a6('0xc')]);router[_0x21a6('0xd')](_0x21a6('0xe'),auth[_0x21a6('0xb')](),controller[_0x21a6('0xf')]);router[_0x21a6('0x10')]('/',auth[_0x21a6('0xb')](),controller[_0x21a6('0x11')]);router[_0x21a6('0x12')]('/:id',auth[_0x21a6('0xb')](),controller[_0x21a6('0x13')]);router[_0x21a6('0x14')]('/:id',auth[_0x21a6('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 72080a5..a7bc074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x372f=['customVariable','keyValue','picklist','STRING','variable','sequelize','exports','ENUM','string'];(function(_0x22a227,_0x9b904e){var _0x461e83=function(_0x26af2a){while(--_0x26af2a){_0x22a227['push'](_0x22a227['shift']());}};_0x461e83(++_0x9b904e);}(_0x372f,0x164));var _0xf372=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x372f[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0xf372('0x0'));module[_0xf372('0x1')]={'type':{'type':Sequelize[_0xf372('0x2')](_0xf372('0x3'),'variable',_0xf372('0x4'),_0xf372('0x5'),_0xf372('0x6')),'defaultValue':_0xf372('0x3')},'content':{'type':Sequelize[_0xf372('0x7')]},'key':{'type':Sequelize[_0xf372('0x7')]},'keyType':{'type':Sequelize[_0xf372('0x2')](_0xf372('0x3'),_0xf372('0x8'),_0xf372('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xf372('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf372('0x7')]}};
\ No newline at end of file
+var _0x2341=['string','variable','customVariable','keyValue','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x463105,_0x26bac6){var _0x1168e=function(_0x316835){while(--_0x316835){_0x463105['push'](_0x463105['shift']());}};_0x1168e(++_0x26bac6);}(_0x2341,0x7b));var _0x1234=function(_0x4f91c4,_0x36dcce){_0x4f91c4=_0x4f91c4-0x0;var _0x4d8602=_0x2341[_0x4f91c4];return _0x4d8602;};'use strict';var Sequelize=require(_0x1234('0x0'));module[_0x1234('0x1')]={'type':{'type':Sequelize[_0x1234('0x2')](_0x1234('0x3'),_0x1234('0x4'),_0x1234('0x5'),_0x1234('0x6'),'picklist'),'defaultValue':_0x1234('0x3')},'content':{'type':Sequelize[_0x1234('0x7')]},'key':{'type':Sequelize[_0x1234('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0x1234('0x4'),_0x1234('0x5'))},'keyContent':{'type':Sequelize[_0x1234('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x1234('0x7')]},'customField':{'type':Sequelize[_0x1234('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1234('0x7')]}};
\ No newline at end of file
index 4a2361c..abe3a48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6714=['error','stack','name','index','map','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','Dynamics365Field','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','update','destroy','then'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x6714,0x196));var _0x4671=function(_0x4cce65,_0x40021e){_0x4cce65=_0x4cce65-0x0;var _0x4d1b45=_0x6714[_0x4cce65];return _0x4d1b45;};'use strict';var emlformat=require(_0x4671('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4671('0x1'));var jsonpatch=require(_0x4671('0x2'));var rp=require(_0x4671('0x3'));var moment=require(_0x4671('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4671('0x5'));var util=require(_0x4671('0x6'));var path=require('path');var sox=require(_0x4671('0x7'));var csv=require(_0x4671('0x8'));var ejs=require(_0x4671('0x9'));var fs=require('fs');var fs_extra=require(_0x4671('0xa'));var _=require(_0x4671('0xb'));var squel=require(_0x4671('0xc'));var crypto=require(_0x4671('0xd'));var jsforce=require(_0x4671('0xe'));var deskjs=require(_0x4671('0xf'));var toCsv=require(_0x4671('0x8'));var querystring=require(_0x4671('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4671('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4671('0x12'));var hardwareService=require(_0x4671('0x13'));var logger=require(_0x4671('0x14'))('api');var utils=require(_0x4671('0x15'));var config=require(_0x4671('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4671('0x17'))['db'];function respondWithStatusCode(_0x5977d9,_0x173287){_0x173287=_0x173287||0xcc;return function(_0x4a4c44){if(_0x4a4c44){return _0x5977d9[_0x4671('0x18')](_0x173287);}return _0x5977d9[_0x4671('0x19')](_0x173287)[_0x4671('0x1a')]();};}function respondWithResult(_0x179529,_0x25b1c7){_0x25b1c7=_0x25b1c7||0xc8;return function(_0x219986){if(_0x219986){return _0x179529[_0x4671('0x19')](_0x25b1c7)[_0x4671('0x1b')](_0x219986);}};}function respondWithFilteredResult(_0x262c09,_0x5c8d12){return function(_0x392948){if(_0x392948){var _0xd33da7=typeof _0x5c8d12[_0x4671('0x1c')]===_0x4671('0x1d')&&typeof _0x5c8d12['limit']==='undefined';var _0x31cb1d=_0x392948['count'];var _0x560d5b=_0xd33da7?0x0:_0x5c8d12[_0x4671('0x1c')];var _0x4618a0=_0xd33da7?_0x392948[_0x4671('0x1e')]:_0x5c8d12[_0x4671('0x1c')]+_0x5c8d12[_0x4671('0x1f')];var _0x17ba83;if(_0x4618a0>=_0x31cb1d){_0x4618a0=_0x31cb1d;_0x17ba83=0xc8;}else{_0x17ba83=0xce;}_0x262c09[_0x4671('0x19')](_0x17ba83);return _0x262c09[_0x4671('0x20')]('Content-Range',_0x560d5b+'-'+_0x4618a0+'/'+_0x31cb1d)['json'](_0x392948);}return null;};}function patchUpdates(_0x462ad9){return function(_0x3de89b){try{jsonpatch['apply'](_0x3de89b,_0x462ad9,!![]);}catch(_0x2d0582){return BPromise[_0x4671('0x21')](_0x2d0582);}return _0x3de89b[_0x4671('0x22')]();};}function saveUpdates(_0x4e1181,_0x2e722c){return function(_0x526618){if(_0x526618){return _0x526618[_0x4671('0x23')](_0x4e1181)['then'](function(_0x112e3e){return _0x112e3e;});}return null;};}function removeEntity(_0x136435,_0x2d0b18){return function(_0xe4ba0e){if(_0xe4ba0e){return _0xe4ba0e[_0x4671('0x24')]()[_0x4671('0x25')](function(){_0x136435[_0x4671('0x19')](0xcc)[_0x4671('0x1a')]();});}};}function handleEntityNotFound(_0x387062,_0x3464bc){return function(_0x3ccb4a){if(!_0x3ccb4a){_0x387062[_0x4671('0x18')](0x194);}return _0x3ccb4a;};}function handleError(_0x50619b,_0x2140ba){_0x2140ba=_0x2140ba||0x1f4;return function(_0x21b494){logger[_0x4671('0x26')](_0x21b494[_0x4671('0x27')]);if(_0x21b494[_0x4671('0x28')]){delete _0x21b494['name'];}_0x50619b[_0x4671('0x19')](_0x2140ba)['send'](_0x21b494);};}exports[_0x4671('0x29')]=function(_0x559bc8,_0x594ea8){var _0x11279f={},_0x192125={},_0x5ece01={'count':0x0,'rows':[]};var _0x3a8138=_[_0x4671('0x2a')](db['Dynamics365Field'][_0x4671('0x2b')],function(_0x12a74f){return{'name':_0x12a74f['fieldName'],'type':_0x12a74f[_0x4671('0x2c')][_0x4671('0x2d')]};});_0x192125[_0x4671('0x2e')]=_['map'](_0x3a8138,_0x4671('0x28'));_0x192125[_0x4671('0x2f')]=_[_0x4671('0x30')](_0x559bc8[_0x4671('0x2f')]);_0x192125['filters']=_[_0x4671('0x31')](_0x192125[_0x4671('0x2e')],_0x192125['query']);_0x11279f[_0x4671('0x32')]=_[_0x4671('0x31')](_0x192125[_0x4671('0x2e')],qs[_0x4671('0x33')](_0x559bc8[_0x4671('0x2f')]['fields']));_0x11279f['attributes']=_0x11279f[_0x4671('0x32')]['length']?_0x11279f[_0x4671('0x32')]:_0x192125[_0x4671('0x2e')];if(!_0x559bc8['query'][_0x4671('0x34')](_0x4671('0x35'))){_0x11279f[_0x4671('0x1f')]=qs[_0x4671('0x1f')](_0x559bc8[_0x4671('0x2f')][_0x4671('0x1f')]);_0x11279f['offset']=qs[_0x4671('0x1c')](_0x559bc8[_0x4671('0x2f')][_0x4671('0x1c')]);}_0x11279f[_0x4671('0x36')]=qs[_0x4671('0x37')](_0x559bc8['query']['sort']);_0x11279f[_0x4671('0x38')]=qs[_0x4671('0x39')](_[_0x4671('0x3a')](_0x559bc8[_0x4671('0x2f')],_0x192125[_0x4671('0x39')]),_0x3a8138);if(_0x559bc8['query'][_0x4671('0x3b')]){_0x11279f[_0x4671('0x38')]=_[_0x4671('0x3c')](_0x11279f['where'],{'$or':_[_0x4671('0x2a')](_0x3a8138,function(_0x26e350){if(_0x26e350[_0x4671('0x2c')]!=='VIRTUAL'){var _0x207717={};_0x207717[_0x26e350['name']]={'$like':'%'+_0x559bc8[_0x4671('0x2f')][_0x4671('0x3b')]+'%'};return _0x207717;}})});}_0x11279f=_[_0x4671('0x3c')]({},_0x11279f,_0x559bc8['options']);var _0xb4c4a7={'where':_0x11279f[_0x4671('0x38')]};return db[_0x4671('0x3d')][_0x4671('0x1e')](_0xb4c4a7)[_0x4671('0x25')](function(_0x1efe1e){_0x5ece01[_0x4671('0x1e')]=_0x1efe1e;if(_0x559bc8[_0x4671('0x2f')][_0x4671('0x3e')]){_0x11279f[_0x4671('0x3f')]=[{'all':!![]}];}return db['Dynamics365Field'][_0x4671('0x40')](_0x11279f);})['then'](function(_0x4bfd61){_0x5ece01[_0x4671('0x41')]=_0x4bfd61;return _0x5ece01;})[_0x4671('0x25')](respondWithFilteredResult(_0x594ea8,_0x11279f))[_0x4671('0x42')](handleError(_0x594ea8,null));};exports[_0x4671('0x43')]=function(_0x10bf56,_0x2292b1){var _0x171417={'raw':!![],'where':{'id':_0x10bf56[_0x4671('0x44')]['id']}},_0x13dbcd={};_0x13dbcd[_0x4671('0x2e')]=_[_0x4671('0x30')](db[_0x4671('0x3d')]['rawAttributes']);_0x13dbcd['query']=_['keys'](_0x10bf56[_0x4671('0x2f')]);_0x13dbcd[_0x4671('0x39')]=_['intersection'](_0x13dbcd[_0x4671('0x2e')],_0x13dbcd[_0x4671('0x2f')]);_0x171417['attributes']=_[_0x4671('0x31')](_0x13dbcd[_0x4671('0x2e')],qs[_0x4671('0x33')](_0x10bf56[_0x4671('0x2f')]['fields']));_0x171417['attributes']=_0x171417[_0x4671('0x32')][_0x4671('0x45')]?_0x171417['attributes']:_0x13dbcd[_0x4671('0x2e')];if(_0x10bf56[_0x4671('0x2f')][_0x4671('0x3e')]){_0x171417[_0x4671('0x3f')]=[{'all':!![]}];}_0x171417=_[_0x4671('0x3c')]({},_0x171417,_0x10bf56[_0x4671('0x46')]);return db[_0x4671('0x3d')][_0x4671('0x47')](_0x171417)[_0x4671('0x25')](handleEntityNotFound(_0x2292b1,null))[_0x4671('0x25')](respondWithResult(_0x2292b1,null))['catch'](handleError(_0x2292b1,null));};exports['create']=function(_0xbe596b,_0x256f41){return db[_0x4671('0x3d')][_0x4671('0x48')](_0xbe596b[_0x4671('0x49')],{})[_0x4671('0x25')](respondWithResult(_0x256f41,0xc9))[_0x4671('0x42')](handleError(_0x256f41,null));};exports['update']=function(_0x31f561,_0x528e25){if(_0x31f561[_0x4671('0x49')]['id']){delete _0x31f561[_0x4671('0x49')]['id'];}return db['Dynamics365Field']['find']({'where':{'id':_0x31f561['params']['id']}})['then'](handleEntityNotFound(_0x528e25,null))[_0x4671('0x25')](saveUpdates(_0x31f561['body'],null))['then'](respondWithResult(_0x528e25,null))[_0x4671('0x42')](handleError(_0x528e25,null));};exports[_0x4671('0x24')]=function(_0x5de13c,_0xe559a6){return db['Dynamics365Field']['find']({'where':{'id':_0x5de13c[_0x4671('0x44')]['id']}})[_0x4671('0x25')](handleEntityNotFound(_0xe559a6,null))[_0x4671('0x25')](removeEntity(_0xe559a6,null))[_0x4671('0x42')](handleError(_0xe559a6,null));};
\ No newline at end of file
+var _0x71e6=['includeAll','options','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','json','apply','save','update','then','destroy','end','name','index','map','Dynamics365Field','rawAttributes','model','query','keys','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','include','rows','catch','show','params'];(function(_0x54fc1f,_0x1703c2){var _0x53f699=function(_0x3fad74){while(--_0x3fad74){_0x54fc1f['push'](_0x54fc1f['shift']());}};_0x53f699(++_0x1703c2);}(_0x71e6,0xda));var _0x671e=function(_0xcd206,_0x597dab){_0xcd206=_0xcd206-0x0;var _0x5599bc=_0x71e6[_0xcd206];return _0x5599bc;};'use strict';var emlformat=require(_0x671e('0x0'));var rimraf=require(_0x671e('0x1'));var zipdir=require(_0x671e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x671e('0x3'));var moment=require(_0x671e('0x4'));var BPromise=require(_0x671e('0x5'));var Mustache=require('mustache');var util=require(_0x671e('0x6'));var path=require(_0x671e('0x7'));var sox=require(_0x671e('0x8'));var csv=require(_0x671e('0x9'));var ejs=require(_0x671e('0xa'));var fs=require('fs');var fs_extra=require(_0x671e('0xb'));var _=require(_0x671e('0xc'));var squel=require(_0x671e('0xd'));var crypto=require(_0x671e('0xe'));var jsforce=require(_0x671e('0xf'));var deskjs=require(_0x671e('0x10'));var toCsv=require(_0x671e('0x9'));var querystring=require(_0x671e('0x11'));var Papa=require(_0x671e('0x12'));var Redis=require(_0x671e('0x13'));var authService=require(_0x671e('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x671e('0x15'));var hardwareService=require(_0x671e('0x16'));var logger=require(_0x671e('0x17'))('api');var utils=require(_0x671e('0x18'));var config=require(_0x671e('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1c9537,_0x5e6648){_0x5e6648=_0x5e6648||0xcc;return function(_0xa302d){if(_0xa302d){return _0x1c9537[_0x671e('0x1a')](_0x5e6648);}return _0x1c9537[_0x671e('0x1b')](_0x5e6648)['end']();};}function respondWithResult(_0x1395d0,_0x1a2c7b){_0x1a2c7b=_0x1a2c7b||0xc8;return function(_0x1ae399){if(_0x1ae399){return _0x1395d0[_0x671e('0x1b')](_0x1a2c7b)['json'](_0x1ae399);}};}function respondWithFilteredResult(_0x2b7504,_0x8df30e){return function(_0x36ba2){if(_0x36ba2){var _0x38ef70=typeof _0x8df30e[_0x671e('0x1c')]===_0x671e('0x1d')&&typeof _0x8df30e[_0x671e('0x1e')]===_0x671e('0x1d');var _0x441833=_0x36ba2[_0x671e('0x1f')];var _0x553c19=_0x38ef70?0x0:_0x8df30e[_0x671e('0x1c')];var _0xddb089=_0x38ef70?_0x36ba2[_0x671e('0x1f')]:_0x8df30e[_0x671e('0x1c')]+_0x8df30e[_0x671e('0x1e')];var _0x466328;if(_0xddb089>=_0x441833){_0xddb089=_0x441833;_0x466328=0xc8;}else{_0x466328=0xce;}_0x2b7504[_0x671e('0x1b')](_0x466328);return _0x2b7504[_0x671e('0x20')]('Content-Range',_0x553c19+'-'+_0xddb089+'/'+_0x441833)[_0x671e('0x21')](_0x36ba2);}return null;};}function patchUpdates(_0x5c90a3){return function(_0x3e8074){try{jsonpatch[_0x671e('0x22')](_0x3e8074,_0x5c90a3,!![]);}catch(_0x29b859){return BPromise['reject'](_0x29b859);}return _0x3e8074[_0x671e('0x23')]();};}function saveUpdates(_0x1545cd,_0x52d5fe){return function(_0x5ae41c){if(_0x5ae41c){return _0x5ae41c[_0x671e('0x24')](_0x1545cd)[_0x671e('0x25')](function(_0x4250a4){return _0x4250a4;});}return null;};}function removeEntity(_0x50bc19,_0x44ab3f){return function(_0x34d4f1){if(_0x34d4f1){return _0x34d4f1[_0x671e('0x26')]()['then'](function(){_0x50bc19['status'](0xcc)[_0x671e('0x27')]();});}};}function handleEntityNotFound(_0xca65b1,_0x53a2b5){return function(_0x2f0b5a){if(!_0x2f0b5a){_0xca65b1[_0x671e('0x1a')](0x194);}return _0x2f0b5a;};}function handleError(_0x4d8ca6,_0x39be3b){_0x39be3b=_0x39be3b||0x1f4;return function(_0x5d245e){logger['error'](_0x5d245e['stack']);if(_0x5d245e[_0x671e('0x28')]){delete _0x5d245e['name'];}_0x4d8ca6[_0x671e('0x1b')](_0x39be3b)['send'](_0x5d245e);};}exports[_0x671e('0x29')]=function(_0x4a3404,_0xe2ac26){var _0x5db4c7={},_0x373846={},_0x5a6f5f={'count':0x0,'rows':[]};var _0x1f406e=_[_0x671e('0x2a')](db[_0x671e('0x2b')][_0x671e('0x2c')],function(_0x387df1){return{'name':_0x387df1['fieldName'],'type':_0x387df1['type']['key']};});_0x373846[_0x671e('0x2d')]=_[_0x671e('0x2a')](_0x1f406e,'name');_0x373846[_0x671e('0x2e')]=_[_0x671e('0x2f')](_0x4a3404[_0x671e('0x2e')]);_0x373846['filters']=_['intersection'](_0x373846[_0x671e('0x2d')],_0x373846[_0x671e('0x2e')]);_0x5db4c7[_0x671e('0x30')]=_[_0x671e('0x31')](_0x373846[_0x671e('0x2d')],qs[_0x671e('0x32')](_0x4a3404[_0x671e('0x2e')][_0x671e('0x32')]));_0x5db4c7['attributes']=_0x5db4c7[_0x671e('0x30')][_0x671e('0x33')]?_0x5db4c7[_0x671e('0x30')]:_0x373846[_0x671e('0x2d')];if(!_0x4a3404[_0x671e('0x2e')]['hasOwnProperty'](_0x671e('0x34'))){_0x5db4c7[_0x671e('0x1e')]=qs[_0x671e('0x1e')](_0x4a3404['query'][_0x671e('0x1e')]);_0x5db4c7[_0x671e('0x1c')]=qs[_0x671e('0x1c')](_0x4a3404[_0x671e('0x2e')][_0x671e('0x1c')]);}_0x5db4c7['order']=qs[_0x671e('0x35')](_0x4a3404[_0x671e('0x2e')][_0x671e('0x35')]);_0x5db4c7[_0x671e('0x36')]=qs[_0x671e('0x37')](_[_0x671e('0x38')](_0x4a3404[_0x671e('0x2e')],_0x373846['filters']),_0x1f406e);if(_0x4a3404[_0x671e('0x2e')][_0x671e('0x39')]){_0x5db4c7['where']=_[_0x671e('0x3a')](_0x5db4c7[_0x671e('0x36')],{'$or':_['map'](_0x1f406e,function(_0x28b9df){if(_0x28b9df[_0x671e('0x3b')]!==_0x671e('0x3c')){var _0x29b143={};_0x29b143[_0x28b9df['name']]={'$like':'%'+_0x4a3404[_0x671e('0x2e')][_0x671e('0x39')]+'%'};return _0x29b143;}})});}_0x5db4c7=_[_0x671e('0x3a')]({},_0x5db4c7,_0x4a3404['options']);var _0x40507b={'where':_0x5db4c7['where']};return db['Dynamics365Field'][_0x671e('0x1f')](_0x40507b)[_0x671e('0x25')](function(_0x4d6698){_0x5a6f5f['count']=_0x4d6698;if(_0x4a3404['query']['includeAll']){_0x5db4c7[_0x671e('0x3d')]=[{'all':!![]}];}return db[_0x671e('0x2b')]['findAll'](_0x5db4c7);})[_0x671e('0x25')](function(_0x3ee37f){_0x5a6f5f[_0x671e('0x3e')]=_0x3ee37f;return _0x5a6f5f;})[_0x671e('0x25')](respondWithFilteredResult(_0xe2ac26,_0x5db4c7))[_0x671e('0x3f')](handleError(_0xe2ac26,null));};exports[_0x671e('0x40')]=function(_0x3de401,_0x287a80){var _0x441191={'raw':!![],'where':{'id':_0x3de401[_0x671e('0x41')]['id']}},_0xcc2bc4={};_0xcc2bc4[_0x671e('0x2d')]=_[_0x671e('0x2f')](db[_0x671e('0x2b')]['rawAttributes']);_0xcc2bc4[_0x671e('0x2e')]=_[_0x671e('0x2f')](_0x3de401[_0x671e('0x2e')]);_0xcc2bc4[_0x671e('0x37')]=_[_0x671e('0x31')](_0xcc2bc4[_0x671e('0x2d')],_0xcc2bc4[_0x671e('0x2e')]);_0x441191[_0x671e('0x30')]=_[_0x671e('0x31')](_0xcc2bc4[_0x671e('0x2d')],qs[_0x671e('0x32')](_0x3de401[_0x671e('0x2e')][_0x671e('0x32')]));_0x441191[_0x671e('0x30')]=_0x441191['attributes'][_0x671e('0x33')]?_0x441191[_0x671e('0x30')]:_0xcc2bc4['model'];if(_0x3de401[_0x671e('0x2e')][_0x671e('0x42')]){_0x441191[_0x671e('0x3d')]=[{'all':!![]}];}_0x441191=_[_0x671e('0x3a')]({},_0x441191,_0x3de401[_0x671e('0x43')]);return db[_0x671e('0x2b')][_0x671e('0x44')](_0x441191)[_0x671e('0x25')](handleEntityNotFound(_0x287a80,null))['then'](respondWithResult(_0x287a80,null))[_0x671e('0x3f')](handleError(_0x287a80,null));};exports[_0x671e('0x45')]=function(_0x565226,_0x823c1f){return db[_0x671e('0x2b')][_0x671e('0x45')](_0x565226['body'],{})[_0x671e('0x25')](respondWithResult(_0x823c1f,0xc9))[_0x671e('0x3f')](handleError(_0x823c1f,null));};exports[_0x671e('0x24')]=function(_0x2a9b9c,_0x4a47bf){if(_0x2a9b9c[_0x671e('0x46')]['id']){delete _0x2a9b9c[_0x671e('0x46')]['id'];}return db[_0x671e('0x2b')][_0x671e('0x44')]({'where':{'id':_0x2a9b9c[_0x671e('0x41')]['id']}})[_0x671e('0x25')](handleEntityNotFound(_0x4a47bf,null))[_0x671e('0x25')](saveUpdates(_0x2a9b9c[_0x671e('0x46')],null))['then'](respondWithResult(_0x4a47bf,null))['catch'](handleError(_0x4a47bf,null));};exports[_0x671e('0x26')]=function(_0xb89e8e,_0x18b6f2){return db[_0x671e('0x2b')][_0x671e('0x44')]({'where':{'id':_0xb89e8e[_0x671e('0x41')]['id']}})['then'](handleEntityNotFound(_0x18b6f2,null))[_0x671e('0x25')](removeEntity(_0x18b6f2,null))[_0x671e('0x3f')](handleError(_0x18b6f2,null));};
\ No newline at end of file
index 66e73f5..1a06172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a0a=['api','bluebird','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','idField','lodash','util'];(function(_0x5ad22d,_0x24208f){var _0x4390e8=function(_0x3726b9){while(--_0x3726b9){_0x5ad22d['push'](_0x5ad22d['shift']());}};_0x4390e8(++_0x24208f);}(_0x3a0a,0xbe));var _0xa3a0=function(_0x31db0b,_0x55cfb9){_0x31db0b=_0x31db0b-0x0;var _0x3de73b=_0x3a0a[_0x31db0b];return _0x3de73b;};'use strict';var _=require(_0xa3a0('0x0'));var util=require(_0xa3a0('0x1'));var logger=require('../../config/logger')(_0xa3a0('0x2'));var moment=require('moment');var BPromise=require(_0xa3a0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa3a0('0x4'));var rimraf=require('rimraf');var config=require(_0xa3a0('0x5'));var attributes=require(_0xa3a0('0x6'));module[_0xa3a0('0x7')]=function(_0x5629cd,_0x18438b){return _0x5629cd[_0xa3a0('0x8')](_0xa3a0('0x9'),attributes,{'tableName':_0xa3a0('0xa'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0xa3a0('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a98=['dynamics365_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','define','Dynamics365Field','int_dynamics365_fields'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x3a98,0x92));var _0x83a9=function(_0x538c70,_0x35531f){_0x538c70=_0x538c70-0x0;var _0x42ae01=_0x3a98[_0x538c70];return _0x42ae01;};'use strict';var _=require(_0x83a9('0x0'));var util=require(_0x83a9('0x1'));var logger=require(_0x83a9('0x2'))(_0x83a9('0x3'));var moment=require(_0x83a9('0x4'));var BPromise=require(_0x83a9('0x5'));var rp=require(_0x83a9('0x6'));var fs=require('fs');var path=require(_0x83a9('0x7'));var rimraf=require(_0x83a9('0x8'));var config=require(_0x83a9('0x9'));var attributes=require(_0x83a9('0xa'));module['exports']=function(_0x95bbb8,_0x1441a7){return _0x95bbb8[_0x83a9('0xb')](_0x83a9('0xc'),attributes,{'tableName':_0x83a9('0xd'),'paranoid':![],'indexes':[{'name':_0x83a9('0xe'),'fields':[_0x83a9('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6e12b41..1342738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x843f=['../../config/environment','jayson/promise','client','http','request','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','message','info','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2157bb,_0x1779f1){var _0x465a82=function(_0x49a97b){while(--_0x49a97b){_0x2157bb['push'](_0x2157bb['shift']());}};_0x465a82(++_0x1779f1);}(_0x843f,0x1b1));var _0xf843=function(_0x30fc18,_0x4ed002){_0x30fc18=_0x30fc18-0x0;var _0x26f5c9=_0x843f[_0x30fc18];return _0x26f5c9;};'use strict';var _=require(_0xf843('0x0'));var util=require(_0xf843('0x1'));var moment=require(_0xf843('0x2'));var BPromise=require('bluebird');var rs=require(_0xf843('0x3'));var fs=require('fs');var Redis=require(_0xf843('0x4'));var db=require(_0xf843('0x5'))['db'];var utils=require(_0xf843('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xf843('0x7'));var jayson=require(_0xf843('0x8'));var client=jayson[_0xf843('0x9')][_0xf843('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4fa7f4,_0x558e8c,_0x2bff42){return new BPromise(function(_0x423aeb,_0x9a17b4){return client[_0xf843('0xb')](_0x4fa7f4,_0x2bff42)['then'](function(_0x1369e7){logger['info'](_0xf843('0xc'),_0x558e8c,_0xf843('0xd'));logger[_0xf843('0xe')](_0xf843('0xf'),_0x558e8c,_0xf843('0xd'),JSON[_0xf843('0x10')](_0x1369e7));if(_0x1369e7[_0xf843('0x11')]){if(_0x1369e7[_0xf843('0x11')]['code']===0x1f4){logger[_0xf843('0x11')](_0xf843('0xc'),_0x558e8c,_0x1369e7[_0xf843('0x11')]['message']);return _0x9a17b4(_0x1369e7[_0xf843('0x11')][_0xf843('0x12')]);}logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x558e8c,_0x1369e7[_0xf843('0x11')]['message']);return _0x423aeb(_0x1369e7['error'][_0xf843('0x12')]);}else{logger[_0xf843('0x13')](_0xf843('0xc'),_0x558e8c,'request\x20sent');_0x423aeb(_0x1369e7['result'][_0xf843('0x12')]);}})['catch'](function(_0x3610a7){logger[_0xf843('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x558e8c,_0x3610a7);_0x9a17b4(_0x3610a7);});});}
\ No newline at end of file
+var _0x14a8=['error','Dynamics365Field,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','request','request\x20sent','stringify'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x14a8,0x124));var _0x814a=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x14a8[_0x4e6ae6];return _0x23c108;};'use strict';var _=require(_0x814a('0x0'));var util=require(_0x814a('0x1'));var moment=require(_0x814a('0x2'));var BPromise=require(_0x814a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x814a('0x4'));var db=require(_0x814a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x814a('0x6'))('rpc');var config=require(_0x814a('0x7'));var jayson=require(_0x814a('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2562e5,_0x96cbc9,_0x4e9ec1){return new BPromise(function(_0x641469,_0x426db1){return client[_0x814a('0x9')](_0x2562e5,_0x4e9ec1)['then'](function(_0x4c52bb){logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x96cbc9,_0x814a('0xa'));logger['debug']('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x96cbc9,_0x814a('0xa'),JSON[_0x814a('0xb')](_0x4c52bb));if(_0x4c52bb['error']){if(_0x4c52bb[_0x814a('0xc')]['code']===0x1f4){logger[_0x814a('0xc')](_0x814a('0xd'),_0x96cbc9,_0x4c52bb[_0x814a('0xc')][_0x814a('0xe')]);return _0x426db1(_0x4c52bb['error'][_0x814a('0xe')]);}logger[_0x814a('0xc')](_0x814a('0xd'),_0x96cbc9,_0x4c52bb[_0x814a('0xc')]['message']);return _0x641469(_0x4c52bb[_0x814a('0xc')][_0x814a('0xe')]);}else{logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x96cbc9,_0x814a('0xa'));_0x641469(_0x4c52bb[_0x814a('0xf')]['message']);}})['catch'](function(_0x371ef7){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x96cbc9,_0x371ef7);_0x426db1(_0x371ef7);});});}
\ No newline at end of file
index add6f33..2fbc250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7465=['express','Router','fs-extra','../../components/auth/service','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','update','destroy','util','connect-timeout'];(function(_0x3306ff,_0x27fca5){var _0x2ba087=function(_0x47e6da){while(--_0x47e6da){_0x3306ff['push'](_0x3306ff['shift']());}};_0x2ba087(++_0x27fca5);}(_0x7465,0x1cc));var _0x5746=function(_0x3bdb88,_0x36f661){_0x3bdb88=_0x3bdb88-0x0;var _0x25144d=_0x7465[_0x3bdb88];return _0x25144d;};'use strict';var multer=require('multer');var util=require(_0x5746('0x0'));var path=require('path');var timeout=require(_0x5746('0x1'));var express=require(_0x5746('0x2'));var router=express[_0x5746('0x3')]();var fs_extra=require(_0x5746('0x4'));var auth=require(_0x5746('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5746('0x6'));router[_0x5746('0x7')]('/',auth[_0x5746('0x8')](),controller[_0x5746('0x9')]);router['get'](_0x5746('0xa'),auth['isAuthenticated'](),controller[_0x5746('0xb')]);router[_0x5746('0x7')]('/:id/configurations',auth[_0x5746('0x8')](),controller[_0x5746('0xc')]);router[_0x5746('0x7')](_0x5746('0xd'),auth['isAuthenticated'](),controller[_0x5746('0xe')]);router[_0x5746('0xf')]('/',auth[_0x5746('0x8')](),controller[_0x5746('0x10')]);router[_0x5746('0xf')](_0x5746('0x11'),auth['isAuthenticated'](),controller[_0x5746('0x12')]);router[_0x5746('0x13')](_0x5746('0xa'),auth[_0x5746('0x8')](),controller[_0x5746('0x14')]);router['delete'](_0x5746('0xa'),auth[_0x5746('0x8')](),controller[_0x5746('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xfb93=['addConfiguration','put','update','destroy','exports','util','Router','../../components/auth/service','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','create','/:id/configurations'];(function(_0x4d180c,_0x45c68e){var _0x49b57e=function(_0x264741){while(--_0x264741){_0x4d180c['push'](_0x4d180c['shift']());}};_0x49b57e(++_0x45c68e);}(_0xfb93,0x137));var _0x3fb9=function(_0x566d7d,_0x1771c8){_0x566d7d=_0x566d7d-0x0;var _0x459839=_0xfb93[_0x566d7d];return _0x459839;};'use strict';var multer=require('multer');var util=require(_0x3fb9('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3fb9('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x3fb9('0x2'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3fb9('0x3'));router[_0x3fb9('0x4')]('/',auth[_0x3fb9('0x5')](),controller[_0x3fb9('0x6')]);router[_0x3fb9('0x4')](_0x3fb9('0x7'),auth[_0x3fb9('0x5')](),controller[_0x3fb9('0x8')]);router[_0x3fb9('0x4')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x3fb9('0x9')]);router[_0x3fb9('0x4')](_0x3fb9('0xa'),auth[_0x3fb9('0x5')](),controller['getFields']);router['post']('/',auth['isAuthenticated'](),controller[_0x3fb9('0xb')]);router['post'](_0x3fb9('0xc'),auth[_0x3fb9('0x5')](),controller[_0x3fb9('0xd')]);router[_0x3fb9('0xe')]('/:id',auth[_0x3fb9('0x5')](),controller[_0x3fb9('0xf')]);router['delete'](_0x3fb9('0x7'),auth[_0x3fb9('0x5')](),controller[_0x3fb9('0x10')]);module[_0x3fb9('0x11')]=router;
\ No newline at end of file
index 5cd2b49..048431f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['STRING','username','remoteUri','sequelize','exports'];(function(_0x788c1c,_0x225ddf){var _0x2153f7=function(_0x2e9cce){while(--_0x2e9cce){_0x788c1c['push'](_0x788c1c['shift']());}};_0x2153f7(++_0x225ddf);}(_0x4137,0xf8));var _0x7413=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x4137[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require(_0x7413('0x0'));module[_0x7413('0x1')]={'name':{'type':Sequelize[_0x7413('0x2')]},'description':{'type':Sequelize[_0x7413('0x2')]},'username':{'type':Sequelize[_0x7413('0x2')],'unique':_0x7413('0x3')},'apiKey':{'type':Sequelize[_0x7413('0x2')]},'remoteUri':{'type':Sequelize[_0x7413('0x2')],'unique':_0x7413('0x4')},'serverUrl':{'type':Sequelize[_0x7413('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x7916=['sequelize','STRING','username','remoteUri'];(function(_0x446d64,_0x1357d3){var _0x34201b=function(_0x2bc5b7){while(--_0x2bc5b7){_0x446d64['push'](_0x446d64['shift']());}};_0x34201b(++_0x1357d3);}(_0x7916,0x128));var _0x6791=function(_0x38c05f,_0x284723){_0x38c05f=_0x38c05f-0x0;var _0x34e928=_0x7916[_0x38c05f];return _0x34e928;};'use strict';var Sequelize=require(_0x6791('0x0'));module['exports']={'name':{'type':Sequelize[_0x6791('0x1')]},'description':{'type':Sequelize[_0x6791('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x6791('0x2')},'apiKey':{'type':Sequelize[_0x6791('0x1')]},'remoteUri':{'type':Sequelize[_0x6791('0x1')],'unique':_0x6791('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index a949b6a..b9720c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6594=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','undefined','count','apply','reject','save','then','destroy','end','error','stack','name','send','index','map','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','FreshdeskAccount','rawAttributes','options','find','create','body','update','params','findOne','FreshdeskConfiguration','length','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','Basic\x20%s','format','%s:X','requester','subject','ticket_type','group','company','remove','includes','default','custom_dropdown','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x6594,0xcb));var _0x4659=function(_0x3cb7e8,_0xb8f77){_0x3cb7e8=_0x3cb7e8-0x0;var _0x72798f=_0x6594[_0x3cb7e8];return _0x72798f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4659('0x0'));var moment=require(_0x4659('0x1'));var BPromise=require(_0x4659('0x2'));var Mustache=require(_0x4659('0x3'));var util=require(_0x4659('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x4659('0x5'));var ejs=require(_0x4659('0x6'));var fs=require('fs');var fs_extra=require(_0x4659('0x7'));var _=require(_0x4659('0x8'));var squel=require('squel');var crypto=require(_0x4659('0x9'));var jsforce=require(_0x4659('0xa'));var deskjs=require(_0x4659('0xb'));var toCsv=require(_0x4659('0x5'));var querystring=require(_0x4659('0xc'));var Papa=require(_0x4659('0xd'));var Redis=require('ioredis');var authService=require(_0x4659('0xe'));var qs=require(_0x4659('0xf'));var as=require(_0x4659('0x10'));var hardwareService=require(_0x4659('0x11'));var logger=require(_0x4659('0x12'))(_0x4659('0x13'));var utils=require(_0x4659('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4659('0x15'))['db'];var integrations=require(_0x4659('0x16'));function respondWithStatusCode(_0x1f89cf,_0x5389a0){_0x5389a0=_0x5389a0||0xcc;return function(_0x40f043){if(_0x40f043){return _0x1f89cf[_0x4659('0x17')](_0x5389a0);}return _0x1f89cf['status'](_0x5389a0)['end']();};}function respondWithResult(_0x1a9e9c,_0x4c3c05){_0x4c3c05=_0x4c3c05||0xc8;return function(_0x39d8ba){if(_0x39d8ba){return _0x1a9e9c[_0x4659('0x18')](_0x4c3c05)[_0x4659('0x19')](_0x39d8ba);}};}function respondWithFilteredResult(_0x5c099c,_0x3d9a17){return function(_0x429b72){if(_0x429b72){var _0x1d78a5=typeof _0x3d9a17[_0x4659('0x1a')]==='undefined'&&typeof _0x3d9a17[_0x4659('0x1b')]===_0x4659('0x1c');var _0x73f3f5=_0x429b72[_0x4659('0x1d')];var _0x4c8820=_0x1d78a5?0x0:_0x3d9a17[_0x4659('0x1a')];var _0x3049ba=_0x1d78a5?_0x429b72['count']:_0x3d9a17[_0x4659('0x1a')]+_0x3d9a17[_0x4659('0x1b')];var _0x6b8d07;if(_0x3049ba>=_0x73f3f5){_0x3049ba=_0x73f3f5;_0x6b8d07=0xc8;}else{_0x6b8d07=0xce;}_0x5c099c[_0x4659('0x18')](_0x6b8d07);return _0x5c099c['set']('Content-Range',_0x4c8820+'-'+_0x3049ba+'/'+_0x73f3f5)[_0x4659('0x19')](_0x429b72);}return null;};}function patchUpdates(_0x157f1a){return function(_0x1fce1d){try{jsonpatch[_0x4659('0x1e')](_0x1fce1d,_0x157f1a,!![]);}catch(_0x288cdf){return BPromise[_0x4659('0x1f')](_0x288cdf);}return _0x1fce1d[_0x4659('0x20')]();};}function saveUpdates(_0x2e773b,_0x1a016e){return function(_0x494631){if(_0x494631){return _0x494631['update'](_0x2e773b)[_0x4659('0x21')](function(_0x4c40b3){return _0x4c40b3;});}return null;};}function removeEntity(_0x1e9c93,_0x47c73d){return function(_0x1715ba){if(_0x1715ba){return _0x1715ba[_0x4659('0x22')]()[_0x4659('0x21')](function(){_0x1e9c93[_0x4659('0x18')](0xcc)[_0x4659('0x23')]();});}};}function handleEntityNotFound(_0x1fe661,_0x2b4ad8){return function(_0x1d1cba){if(!_0x1d1cba){_0x1fe661[_0x4659('0x17')](0x194);}return _0x1d1cba;};}function handleError(_0x507598,_0x428dd5){_0x428dd5=_0x428dd5||0x1f4;return function(_0x1bd579){logger[_0x4659('0x24')](_0x1bd579[_0x4659('0x25')]);if(_0x1bd579[_0x4659('0x26')]){delete _0x1bd579[_0x4659('0x26')];}_0x507598[_0x4659('0x18')](_0x428dd5)[_0x4659('0x27')](_0x1bd579);};}exports[_0x4659('0x28')]=function(_0x479a2e,_0x5d0c89){var _0xde3c49={},_0x26d67f={},_0x5c5a31={'count':0x0,'rows':[]};var _0x507fc1=_[_0x4659('0x29')](db['FreshdeskAccount']['rawAttributes'],function(_0x34d817){return{'name':_0x34d817[_0x4659('0x2a')],'type':_0x34d817['type'][_0x4659('0x2b')]};});_0x26d67f[_0x4659('0x2c')]=_[_0x4659('0x29')](_0x507fc1,_0x4659('0x26'));_0x26d67f[_0x4659('0x2d')]=_[_0x4659('0x2e')](_0x479a2e[_0x4659('0x2d')]);_0x26d67f['filters']=_[_0x4659('0x2f')](_0x26d67f[_0x4659('0x2c')],_0x26d67f[_0x4659('0x2d')]);_0xde3c49[_0x4659('0x30')]=_['intersection'](_0x26d67f[_0x4659('0x2c')],qs[_0x4659('0x31')](_0x479a2e[_0x4659('0x2d')][_0x4659('0x31')]));_0xde3c49[_0x4659('0x30')]=_0xde3c49[_0x4659('0x30')]['length']?_0xde3c49['attributes']:_0x26d67f['model'];if(!_0x479a2e[_0x4659('0x2d')][_0x4659('0x32')]('nolimit')){_0xde3c49[_0x4659('0x1b')]=qs[_0x4659('0x1b')](_0x479a2e['query'][_0x4659('0x1b')]);_0xde3c49[_0x4659('0x1a')]=qs['offset'](_0x479a2e['query'][_0x4659('0x1a')]);}_0xde3c49[_0x4659('0x33')]=qs[_0x4659('0x34')](_0x479a2e[_0x4659('0x2d')][_0x4659('0x34')]);_0xde3c49[_0x4659('0x35')]=qs[_0x4659('0x36')](_[_0x4659('0x37')](_0x479a2e[_0x4659('0x2d')],_0x26d67f['filters']),_0x507fc1);if(_0x479a2e[_0x4659('0x2d')][_0x4659('0x38')]){_0xde3c49['where']=_['merge'](_0xde3c49['where'],{'$or':_['map'](_0x507fc1,function(_0xb4a62d){if(_0xb4a62d[_0x4659('0x39')]!==_0x4659('0x3a')){var _0x5406ae={};_0x5406ae[_0xb4a62d[_0x4659('0x26')]]={'$like':'%'+_0x479a2e[_0x4659('0x2d')]['filter']+'%'};return _0x5406ae;}})});}_0xde3c49=_[_0x4659('0x3b')]({},_0xde3c49,_0x479a2e['options']);var _0x1f5298={'where':_0xde3c49[_0x4659('0x35')]};return db['FreshdeskAccount']['count'](_0x1f5298)[_0x4659('0x21')](function(_0x391879){_0x5c5a31[_0x4659('0x1d')]=_0x391879;if(_0x479a2e['query'][_0x4659('0x3c')]){_0xde3c49[_0x4659('0x3d')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0x4659('0x3e')](_0xde3c49);})[_0x4659('0x21')](function(_0xd78633){_0x5c5a31[_0x4659('0x3f')]=_0xd78633;return _0x5c5a31;})[_0x4659('0x21')](respondWithFilteredResult(_0x5d0c89,_0xde3c49))[_0x4659('0x40')](handleError(_0x5d0c89,null));};exports['show']=function(_0x11e413,_0x22e2bb){var _0xd38f94={'raw':![],'where':{'id':_0x11e413['params']['id']}},_0x9f120a={};_0x9f120a['model']=_[_0x4659('0x2e')](db[_0x4659('0x41')][_0x4659('0x42')]);_0x9f120a[_0x4659('0x2d')]=_[_0x4659('0x2e')](_0x11e413[_0x4659('0x2d')]);_0x9f120a[_0x4659('0x36')]=_['intersection'](_0x9f120a[_0x4659('0x2c')],_0x9f120a[_0x4659('0x2d')]);_0xd38f94[_0x4659('0x30')]=_[_0x4659('0x2f')](_0x9f120a['model'],qs[_0x4659('0x31')](_0x11e413['query']['fields']));_0xd38f94['attributes']=_0xd38f94['attributes']['length']?_0xd38f94[_0x4659('0x30')]:_0x9f120a[_0x4659('0x2c')];if(_0x11e413[_0x4659('0x2d')][_0x4659('0x3c')]){_0xd38f94[_0x4659('0x3d')]=[{'all':!![]}];}_0xd38f94=_['merge']({},_0xd38f94,_0x11e413[_0x4659('0x43')]);return db[_0x4659('0x41')][_0x4659('0x44')](_0xd38f94)[_0x4659('0x21')](handleEntityNotFound(_0x22e2bb,null))['then'](respondWithResult(_0x22e2bb,null))[_0x4659('0x40')](handleError(_0x22e2bb,null));};exports[_0x4659('0x45')]=function(_0x374df3,_0x1d3876){return db[_0x4659('0x41')]['create'](_0x374df3[_0x4659('0x46')],{})[_0x4659('0x21')](respondWithResult(_0x1d3876,0xc9))['catch'](handleError(_0x1d3876,null));};exports[_0x4659('0x47')]=function(_0x51e4ad,_0x452154){if(_0x51e4ad['body']['id']){delete _0x51e4ad[_0x4659('0x46')]['id'];}return db['FreshdeskAccount'][_0x4659('0x44')]({'where':{'id':_0x51e4ad[_0x4659('0x48')]['id']}})[_0x4659('0x21')](handleEntityNotFound(_0x452154,null))[_0x4659('0x21')](saveUpdates(_0x51e4ad[_0x4659('0x46')],null))[_0x4659('0x21')](respondWithResult(_0x452154,null))[_0x4659('0x40')](handleError(_0x452154,null));};exports[_0x4659('0x22')]=function(_0x722dea,_0x4a39a2){return db[_0x4659('0x41')][_0x4659('0x44')]({'where':{'id':_0x722dea[_0x4659('0x48')]['id']}})[_0x4659('0x21')](handleEntityNotFound(_0x4a39a2,null))['then'](removeEntity(_0x4a39a2,null))[_0x4659('0x40')](handleError(_0x4a39a2,null));};exports['getConfigurations']=function(_0x1d8b61,_0x105369,_0x3dbb46){var _0x42bd7e={};var _0x4f62ac={};var _0xc62155;var _0x225f98;return db[_0x4659('0x41')][_0x4659('0x49')]({'where':{'id':_0x1d8b61['params']['id']}})[_0x4659('0x21')](handleEntityNotFound(_0x105369,null))[_0x4659('0x21')](function(_0x9df1b2){if(_0x9df1b2){_0xc62155=_0x9df1b2;_0x4f62ac[_0x4659('0x2c')]=_[_0x4659('0x2e')](db[_0x4659('0x4a')][_0x4659('0x42')]);_0x4f62ac[_0x4659('0x2d')]=_[_0x4659('0x2e')](_0x1d8b61[_0x4659('0x2d')]);_0x4f62ac[_0x4659('0x36')]=_[_0x4659('0x2f')](_0x4f62ac[_0x4659('0x2c')],_0x4f62ac[_0x4659('0x2d')]);_0x42bd7e['attributes']=_[_0x4659('0x2f')](_0x4f62ac[_0x4659('0x2c')],qs['fields'](_0x1d8b61[_0x4659('0x2d')][_0x4659('0x31')]));_0x42bd7e[_0x4659('0x30')]=_0x42bd7e[_0x4659('0x30')][_0x4659('0x4b')]?_0x42bd7e[_0x4659('0x30')]:_0x4f62ac[_0x4659('0x2c')];_0x42bd7e['order']=qs[_0x4659('0x34')](_0x1d8b61[_0x4659('0x2d')][_0x4659('0x34')]);_0x42bd7e[_0x4659('0x35')]=qs[_0x4659('0x36')](_[_0x4659('0x37')](_0x1d8b61[_0x4659('0x2d')],_0x4f62ac['filters']));if(_0x1d8b61[_0x4659('0x2d')][_0x4659('0x38')]){_0x42bd7e['where']=_[_0x4659('0x3b')](_0x42bd7e[_0x4659('0x35')],{'$or':_[_0x4659('0x29')](_0x42bd7e['attributes'],function(_0x36d2cc){var _0x20f7ec={};_0x20f7ec[_0x36d2cc]={'$like':'%'+_0x1d8b61['query'][_0x4659('0x38')]+'%'};return _0x20f7ec;})});}_0x42bd7e=_['merge']({},_0x42bd7e,_0x1d8b61[_0x4659('0x43')]);return _0xc62155[_0x4659('0x4c')](_0x42bd7e);}})[_0x4659('0x21')](function(_0x517921){if(_0x517921){_0x225f98=_0x517921['length'];if(!_0x1d8b61[_0x4659('0x2d')]['hasOwnProperty'](_0x4659('0x4d'))){_0x42bd7e[_0x4659('0x1b')]=qs[_0x4659('0x1b')](_0x1d8b61['query']['limit']);_0x42bd7e[_0x4659('0x1a')]=qs[_0x4659('0x1a')](_0x1d8b61[_0x4659('0x2d')]['offset']);}return _0xc62155['getConfigurations'](_0x42bd7e);}})[_0x4659('0x21')](function(_0x41785f){if(_0x41785f){return _0x41785f?{'count':_0x225f98,'rows':_0x41785f}:null;}})[_0x4659('0x21')](respondWithResult(_0x105369,null))[_0x4659('0x40')](handleError(_0x105369,null));};exports[_0x4659('0x4e')]=function(_0x2746dc,_0x1b874d,_0x4dd4a8){if(_0x2746dc[_0x4659('0x46')]['id']){delete _0x2746dc['body']['id'];}return db[_0x4659('0x41')]['findOne']({'where':{'id':_0x2746dc[_0x4659('0x48')]['id']}})[_0x4659('0x21')](handleEntityNotFound(_0x1b874d,null))[_0x4659('0x21')](function(_0x57343a){if(_0x57343a){_0x2746dc['body'][_0x4659('0x4f')]=_0x57343a['id'];_0x2746dc[_0x4659('0x46')][_0x4659('0x50')]=integrations[_0x4659('0x51')](_0x2746dc[_0x4659('0x46')][_0x4659('0x52')],_0x2746dc[_0x4659('0x46')][_0x4659('0x39')]);_0x2746dc[_0x4659('0x46')][_0x4659('0x53')]=integrations[_0x4659('0x54')](_0x2746dc[_0x4659('0x46')]['channel'],_0x2746dc[_0x4659('0x46')]['type']);return db[_0x4659('0x4a')][_0x4659('0x45')](_0x2746dc['body'],{'include':[{'model':db[_0x4659('0x55')],'as':_0x4659('0x50')},{'model':db[_0x4659('0x55')],'as':'Descriptions'}]});}return null;})[_0x4659('0x21')](respondWithResult(_0x1b874d,null))[_0x4659('0x40')](handleError(_0x1b874d,null));};exports[_0x4659('0x56')]=function(_0x5e840f,_0x28bb1b,_0x4825a4){var _0x332658='';return db[_0x4659('0x41')]['findOne']({'where':{'id':_0x5e840f[_0x4659('0x48')]['id']},'attributes':['id',_0x4659('0x57'),_0x4659('0x58')]})[_0x4659('0x21')](handleEntityNotFound(_0x28bb1b,null))[_0x4659('0x21')](function(_0x482dc9){if(_0x482dc9){_0x332658=_0x482dc9[_0x4659('0x57')];var _0x249eb1=_0x332658[_0x4659('0x59')](-0x1);if(_0x249eb1==='/'){_0x332658=_0x332658[_0x4659('0x5a')](0x0,_0x332658[_0x4659('0x5b')](_0x249eb1));}return rp({'method':_0x4659('0x5c'),'uri':util['format']('%s/%s',_0x332658,'api/v2/ticket_fields'),'headers':{'Authorization':util['format'](_0x4659('0x5d'),new Buffer(util[_0x4659('0x5e')](_0x4659('0x5f'),_0x482dc9['apiKey']))['toString']('base64'))},'json':!![]});}})[_0x4659('0x21')](function(_0x2cef6b){if(_0x2cef6b){var _0x15d709=[_0x4659('0x60'),_0x4659('0x61'),'agent','description','status','priority','group','source',_0x4659('0x62'),_0x4659('0x63'),_0x4659('0x64')];_[_0x4659('0x65')](_0x2cef6b,function(_0x35ce47){return _0x15d709[_0x4659('0x66')](_0x35ce47['name'])||!_0x35ce47[_0x4659('0x67')]&&_0x35ce47[_0x4659('0x39')]!=='custom_text'&&_0x35ce47[_0x4659('0x39')]!==_0x4659('0x68');});return{'count':_0x2cef6b['length'],'rows':_[_0x4659('0x29')](_0x2cef6b,function(_0x56d500){return{'id':_0x56d500[_0x4659('0x26')],'name':_0x56d500['label'],'custom':!_0x56d500[_0x4659('0x67')],'options':_0x56d500[_0x4659('0x69')]?_[_0x4659('0x29')](_0x56d500[_0x4659('0x69')],function(_0x59d3be){return{'name':_['capitalize'](_0x59d3be),'value':_0x59d3be};}):[]};})};}})[_0x4659('0x21')](respondWithResult(_0x28bb1b,null))[_0x4659('0x40')](function(_0x320028){var _0x95642f=_0x5e840f[_0x4659('0x2d')][_0x4659('0x6a')]?0x1f4:_0x320028[_0x4659('0x6b')]||0x1f4;logger[_0x4659('0x24')](_0x4659('0x6c'),'getFields',_0x95642f,JSON[_0x4659('0x6d')](_0x320028));delete _0x320028[_0x4659('0x26')];if(_0x95642f===0x191){_0x95642f=0x190;}_0x28bb1b['status'](_0x95642f)[_0x4659('0x27')](_0x5e840f[_0x4659('0x2d')][_0x4659('0x6a')]?{'message':'Wrong\x20credentials','statusCode':_0x320028[_0x4659('0x6b')]}:_0x320028);});};
\ No newline at end of file
+var _0x3d7f=['model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','findOne','order','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskConfiguration','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','description','priority','group','source','ticket_type','remove','includes','default','custom_text','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','sendStatus','error','name','send','map','FreshdeskAccount','rawAttributes','fieldName','type','key'];(function(_0x5baff5,_0x5eddf1){var _0x3fa6ee=function(_0x378a53){while(--_0x378a53){_0x5baff5['push'](_0x5baff5['shift']());}};_0x3fa6ee(++_0x5eddf1);}(_0x3d7f,0x1a1));var _0xf3d7=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0x3d7f[_0x50007c];return _0x5c1ec7;};'use strict';var emlformat=require(_0xf3d7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf3d7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf3d7('0x2'));var moment=require(_0xf3d7('0x3'));var BPromise=require(_0xf3d7('0x4'));var Mustache=require(_0xf3d7('0x5'));var util=require('util');var path=require('path');var sox=require(_0xf3d7('0x6'));var csv=require(_0xf3d7('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf3d7('0x8'));var squel=require(_0xf3d7('0x9'));var crypto=require(_0xf3d7('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xf3d7('0xb'));var toCsv=require(_0xf3d7('0x7'));var querystring=require(_0xf3d7('0xc'));var Papa=require(_0xf3d7('0xd'));var Redis=require(_0xf3d7('0xe'));var authService=require(_0xf3d7('0xf'));var qs=require(_0xf3d7('0x10'));var as=require(_0xf3d7('0x11'));var hardwareService=require(_0xf3d7('0x12'));var logger=require(_0xf3d7('0x13'))(_0xf3d7('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf3d7('0x15'));var db=require(_0xf3d7('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x161613,_0xecd54c){_0xecd54c=_0xecd54c||0xcc;return function(_0x42f319){if(_0x42f319){return _0x161613['sendStatus'](_0xecd54c);}return _0x161613[_0xf3d7('0x17')](_0xecd54c)[_0xf3d7('0x18')]();};}function respondWithResult(_0x1a895a,_0x14b5d3){_0x14b5d3=_0x14b5d3||0xc8;return function(_0x1cdb40){if(_0x1cdb40){return _0x1a895a[_0xf3d7('0x17')](_0x14b5d3)['json'](_0x1cdb40);}};}function respondWithFilteredResult(_0x415a3f,_0x24e584){return function(_0x305b5c){if(_0x305b5c){var _0x18e8a2=typeof _0x24e584[_0xf3d7('0x19')]===_0xf3d7('0x1a')&&typeof _0x24e584[_0xf3d7('0x1b')]==='undefined';var _0xcf7523=_0x305b5c[_0xf3d7('0x1c')];var _0x2b4d32=_0x18e8a2?0x0:_0x24e584[_0xf3d7('0x19')];var _0xd3c306=_0x18e8a2?_0x305b5c[_0xf3d7('0x1c')]:_0x24e584['offset']+_0x24e584[_0xf3d7('0x1b')];var _0x3f387c;if(_0xd3c306>=_0xcf7523){_0xd3c306=_0xcf7523;_0x3f387c=0xc8;}else{_0x3f387c=0xce;}_0x415a3f[_0xf3d7('0x17')](_0x3f387c);return _0x415a3f[_0xf3d7('0x1d')](_0xf3d7('0x1e'),_0x2b4d32+'-'+_0xd3c306+'/'+_0xcf7523)[_0xf3d7('0x1f')](_0x305b5c);}return null;};}function patchUpdates(_0x4b4fda){return function(_0x41f70d){try{jsonpatch[_0xf3d7('0x20')](_0x41f70d,_0x4b4fda,!![]);}catch(_0x11ac3d){return BPromise[_0xf3d7('0x21')](_0x11ac3d);}return _0x41f70d['save']();};}function saveUpdates(_0x325ca5,_0x1c2a31){return function(_0x24f50e){if(_0x24f50e){return _0x24f50e[_0xf3d7('0x22')](_0x325ca5)[_0xf3d7('0x23')](function(_0x67ad16){return _0x67ad16;});}return null;};}function removeEntity(_0x573d5e,_0x3943f7){return function(_0x6043a4){if(_0x6043a4){return _0x6043a4[_0xf3d7('0x24')]()[_0xf3d7('0x23')](function(){_0x573d5e[_0xf3d7('0x17')](0xcc)[_0xf3d7('0x18')]();});}};}function handleEntityNotFound(_0x1f3812,_0x4b5b39){return function(_0x3ca4d9){if(!_0x3ca4d9){_0x1f3812[_0xf3d7('0x25')](0x194);}return _0x3ca4d9;};}function handleError(_0x968040,_0x4db9d4){_0x4db9d4=_0x4db9d4||0x1f4;return function(_0x4c107e){logger[_0xf3d7('0x26')](_0x4c107e['stack']);if(_0x4c107e[_0xf3d7('0x27')]){delete _0x4c107e['name'];}_0x968040[_0xf3d7('0x17')](_0x4db9d4)[_0xf3d7('0x28')](_0x4c107e);};}exports['index']=function(_0x1ee67e,_0x255951){var _0x82b242={},_0x42364a={},_0x46613e={'count':0x0,'rows':[]};var _0x35f1d8=_[_0xf3d7('0x29')](db[_0xf3d7('0x2a')][_0xf3d7('0x2b')],function(_0xc05c1){return{'name':_0xc05c1[_0xf3d7('0x2c')],'type':_0xc05c1[_0xf3d7('0x2d')][_0xf3d7('0x2e')]};});_0x42364a[_0xf3d7('0x2f')]=_[_0xf3d7('0x29')](_0x35f1d8,_0xf3d7('0x27'));_0x42364a[_0xf3d7('0x30')]=_[_0xf3d7('0x31')](_0x1ee67e[_0xf3d7('0x30')]);_0x42364a[_0xf3d7('0x32')]=_['intersection'](_0x42364a[_0xf3d7('0x2f')],_0x42364a[_0xf3d7('0x30')]);_0x82b242[_0xf3d7('0x33')]=_[_0xf3d7('0x34')](_0x42364a[_0xf3d7('0x2f')],qs[_0xf3d7('0x35')](_0x1ee67e['query'][_0xf3d7('0x35')]));_0x82b242[_0xf3d7('0x33')]=_0x82b242[_0xf3d7('0x33')][_0xf3d7('0x36')]?_0x82b242['attributes']:_0x42364a[_0xf3d7('0x2f')];if(!_0x1ee67e[_0xf3d7('0x30')][_0xf3d7('0x37')](_0xf3d7('0x38'))){_0x82b242['limit']=qs[_0xf3d7('0x1b')](_0x1ee67e[_0xf3d7('0x30')][_0xf3d7('0x1b')]);_0x82b242[_0xf3d7('0x19')]=qs[_0xf3d7('0x19')](_0x1ee67e[_0xf3d7('0x30')][_0xf3d7('0x19')]);}_0x82b242['order']=qs[_0xf3d7('0x39')](_0x1ee67e[_0xf3d7('0x30')][_0xf3d7('0x39')]);_0x82b242[_0xf3d7('0x3a')]=qs[_0xf3d7('0x32')](_[_0xf3d7('0x3b')](_0x1ee67e['query'],_0x42364a['filters']),_0x35f1d8);if(_0x1ee67e[_0xf3d7('0x30')][_0xf3d7('0x3c')]){_0x82b242[_0xf3d7('0x3a')]=_[_0xf3d7('0x3d')](_0x82b242[_0xf3d7('0x3a')],{'$or':_[_0xf3d7('0x29')](_0x35f1d8,function(_0x420839){if(_0x420839['type']!==_0xf3d7('0x3e')){var _0x2d83d8={};_0x2d83d8[_0x420839[_0xf3d7('0x27')]]={'$like':'%'+_0x1ee67e[_0xf3d7('0x30')][_0xf3d7('0x3c')]+'%'};return _0x2d83d8;}})});}_0x82b242=_['merge']({},_0x82b242,_0x1ee67e[_0xf3d7('0x3f')]);var _0x380a44={'where':_0x82b242[_0xf3d7('0x3a')]};return db['FreshdeskAccount'][_0xf3d7('0x1c')](_0x380a44)[_0xf3d7('0x23')](function(_0x34df7f){_0x46613e['count']=_0x34df7f;if(_0x1ee67e[_0xf3d7('0x30')][_0xf3d7('0x40')]){_0x82b242[_0xf3d7('0x41')]=[{'all':!![]}];}return db[_0xf3d7('0x2a')][_0xf3d7('0x42')](_0x82b242);})[_0xf3d7('0x23')](function(_0x1de9b0){_0x46613e['rows']=_0x1de9b0;return _0x46613e;})['then'](respondWithFilteredResult(_0x255951,_0x82b242))[_0xf3d7('0x43')](handleError(_0x255951,null));};exports[_0xf3d7('0x44')]=function(_0x2763c1,_0x1dc8e8){var _0x5c3b3c={'raw':![],'where':{'id':_0x2763c1[_0xf3d7('0x45')]['id']}},_0x49ef6b={};_0x49ef6b[_0xf3d7('0x2f')]=_[_0xf3d7('0x31')](db[_0xf3d7('0x2a')][_0xf3d7('0x2b')]);_0x49ef6b[_0xf3d7('0x30')]=_[_0xf3d7('0x31')](_0x2763c1[_0xf3d7('0x30')]);_0x49ef6b[_0xf3d7('0x32')]=_[_0xf3d7('0x34')](_0x49ef6b[_0xf3d7('0x2f')],_0x49ef6b[_0xf3d7('0x30')]);_0x5c3b3c[_0xf3d7('0x33')]=_[_0xf3d7('0x34')](_0x49ef6b['model'],qs[_0xf3d7('0x35')](_0x2763c1[_0xf3d7('0x30')][_0xf3d7('0x35')]));_0x5c3b3c[_0xf3d7('0x33')]=_0x5c3b3c[_0xf3d7('0x33')][_0xf3d7('0x36')]?_0x5c3b3c['attributes']:_0x49ef6b[_0xf3d7('0x2f')];if(_0x2763c1[_0xf3d7('0x30')]['includeAll']){_0x5c3b3c[_0xf3d7('0x41')]=[{'all':!![]}];}_0x5c3b3c=_['merge']({},_0x5c3b3c,_0x2763c1[_0xf3d7('0x3f')]);return db[_0xf3d7('0x2a')][_0xf3d7('0x46')](_0x5c3b3c)[_0xf3d7('0x23')](handleEntityNotFound(_0x1dc8e8,null))[_0xf3d7('0x23')](respondWithResult(_0x1dc8e8,null))['catch'](handleError(_0x1dc8e8,null));};exports[_0xf3d7('0x47')]=function(_0x483cc0,_0xf6a443){return db[_0xf3d7('0x2a')][_0xf3d7('0x47')](_0x483cc0[_0xf3d7('0x48')],{})['then'](respondWithResult(_0xf6a443,0xc9))[_0xf3d7('0x43')](handleError(_0xf6a443,null));};exports[_0xf3d7('0x22')]=function(_0x40eae9,_0x1daa8f){if(_0x40eae9[_0xf3d7('0x48')]['id']){delete _0x40eae9[_0xf3d7('0x48')]['id'];}return db[_0xf3d7('0x2a')][_0xf3d7('0x46')]({'where':{'id':_0x40eae9[_0xf3d7('0x45')]['id']}})['then'](handleEntityNotFound(_0x1daa8f,null))[_0xf3d7('0x23')](saveUpdates(_0x40eae9[_0xf3d7('0x48')],null))[_0xf3d7('0x23')](respondWithResult(_0x1daa8f,null))[_0xf3d7('0x43')](handleError(_0x1daa8f,null));};exports[_0xf3d7('0x24')]=function(_0x5ae536,_0x32c7e8){return db['FreshdeskAccount'][_0xf3d7('0x46')]({'where':{'id':_0x5ae536[_0xf3d7('0x45')]['id']}})[_0xf3d7('0x23')](handleEntityNotFound(_0x32c7e8,null))[_0xf3d7('0x23')](removeEntity(_0x32c7e8,null))[_0xf3d7('0x43')](handleError(_0x32c7e8,null));};exports['getConfigurations']=function(_0x3e0deb,_0x3f3835,_0x156f25){var _0x2c0667={};var _0x342de7={};var _0x5a0938;var _0xd564c1;return db[_0xf3d7('0x2a')][_0xf3d7('0x49')]({'where':{'id':_0x3e0deb[_0xf3d7('0x45')]['id']}})[_0xf3d7('0x23')](handleEntityNotFound(_0x3f3835,null))[_0xf3d7('0x23')](function(_0x1c70dc){if(_0x1c70dc){_0x5a0938=_0x1c70dc;_0x342de7[_0xf3d7('0x2f')]=_[_0xf3d7('0x31')](db['FreshdeskConfiguration'][_0xf3d7('0x2b')]);_0x342de7[_0xf3d7('0x30')]=_[_0xf3d7('0x31')](_0x3e0deb['query']);_0x342de7[_0xf3d7('0x32')]=_[_0xf3d7('0x34')](_0x342de7[_0xf3d7('0x2f')],_0x342de7[_0xf3d7('0x30')]);_0x2c0667[_0xf3d7('0x33')]=_[_0xf3d7('0x34')](_0x342de7[_0xf3d7('0x2f')],qs['fields'](_0x3e0deb[_0xf3d7('0x30')][_0xf3d7('0x35')]));_0x2c0667[_0xf3d7('0x33')]=_0x2c0667[_0xf3d7('0x33')][_0xf3d7('0x36')]?_0x2c0667['attributes']:_0x342de7[_0xf3d7('0x2f')];_0x2c0667[_0xf3d7('0x4a')]=qs[_0xf3d7('0x39')](_0x3e0deb[_0xf3d7('0x30')][_0xf3d7('0x39')]);_0x2c0667[_0xf3d7('0x3a')]=qs[_0xf3d7('0x32')](_[_0xf3d7('0x3b')](_0x3e0deb[_0xf3d7('0x30')],_0x342de7[_0xf3d7('0x32')]));if(_0x3e0deb[_0xf3d7('0x30')][_0xf3d7('0x3c')]){_0x2c0667[_0xf3d7('0x3a')]=_['merge'](_0x2c0667[_0xf3d7('0x3a')],{'$or':_[_0xf3d7('0x29')](_0x2c0667[_0xf3d7('0x33')],function(_0x76d0b1){var _0x1404e7={};_0x1404e7[_0x76d0b1]={'$like':'%'+_0x3e0deb[_0xf3d7('0x30')][_0xf3d7('0x3c')]+'%'};return _0x1404e7;})});}_0x2c0667=_[_0xf3d7('0x3d')]({},_0x2c0667,_0x3e0deb[_0xf3d7('0x3f')]);return _0x5a0938[_0xf3d7('0x4b')](_0x2c0667);}})[_0xf3d7('0x23')](function(_0x4312f9){if(_0x4312f9){_0xd564c1=_0x4312f9['length'];if(!_0x3e0deb[_0xf3d7('0x30')][_0xf3d7('0x37')]('nolimit')){_0x2c0667[_0xf3d7('0x1b')]=qs[_0xf3d7('0x1b')](_0x3e0deb[_0xf3d7('0x30')]['limit']);_0x2c0667['offset']=qs[_0xf3d7('0x19')](_0x3e0deb[_0xf3d7('0x30')]['offset']);}return _0x5a0938[_0xf3d7('0x4b')](_0x2c0667);}})[_0xf3d7('0x23')](function(_0x4843eb){if(_0x4843eb){return _0x4843eb?{'count':_0xd564c1,'rows':_0x4843eb}:null;}})[_0xf3d7('0x23')](respondWithResult(_0x3f3835,null))[_0xf3d7('0x43')](handleError(_0x3f3835,null));};exports['addConfiguration']=function(_0x21cc99,_0x25d8fc,_0x22202b){if(_0x21cc99[_0xf3d7('0x48')]['id']){delete _0x21cc99['body']['id'];}return db[_0xf3d7('0x2a')][_0xf3d7('0x49')]({'where':{'id':_0x21cc99[_0xf3d7('0x45')]['id']}})[_0xf3d7('0x23')](handleEntityNotFound(_0x25d8fc,null))['then'](function(_0x4d87a8){if(_0x4d87a8){_0x21cc99[_0xf3d7('0x48')][_0xf3d7('0x4c')]=_0x4d87a8['id'];_0x21cc99[_0xf3d7('0x48')][_0xf3d7('0x4d')]=integrations[_0xf3d7('0x4e')](_0x21cc99[_0xf3d7('0x48')][_0xf3d7('0x4f')],_0x21cc99[_0xf3d7('0x48')][_0xf3d7('0x2d')]);_0x21cc99[_0xf3d7('0x48')][_0xf3d7('0x50')]=integrations[_0xf3d7('0x51')](_0x21cc99['body'][_0xf3d7('0x4f')],_0x21cc99[_0xf3d7('0x48')]['type']);return db[_0xf3d7('0x52')][_0xf3d7('0x47')](_0x21cc99[_0xf3d7('0x48')],{'include':[{'model':db[_0xf3d7('0x53')],'as':_0xf3d7('0x4d')},{'model':db[_0xf3d7('0x53')],'as':_0xf3d7('0x50')}]});}return null;})[_0xf3d7('0x23')](respondWithResult(_0x25d8fc,null))[_0xf3d7('0x43')](handleError(_0x25d8fc,null));};exports[_0xf3d7('0x54')]=function(_0x39bdba,_0x485d8f,_0x21d1aa){var _0x572c18='';return db['FreshdeskAccount'][_0xf3d7('0x49')]({'where':{'id':_0x39bdba[_0xf3d7('0x45')]['id']},'attributes':['id',_0xf3d7('0x55'),_0xf3d7('0x56')]})[_0xf3d7('0x23')](handleEntityNotFound(_0x485d8f,null))[_0xf3d7('0x23')](function(_0x472ba1){if(_0x472ba1){_0x572c18=_0x472ba1[_0xf3d7('0x55')];var _0x496540=_0x572c18[_0xf3d7('0x57')](-0x1);if(_0x496540==='/'){_0x572c18=_0x572c18['substring'](0x0,_0x572c18[_0xf3d7('0x58')](_0x496540));}return rp({'method':_0xf3d7('0x59'),'uri':util[_0xf3d7('0x5a')]('%s/%s',_0x572c18,_0xf3d7('0x5b')),'headers':{'Authorization':util[_0xf3d7('0x5a')](_0xf3d7('0x5c'),new Buffer(util[_0xf3d7('0x5a')](_0xf3d7('0x5d'),_0x472ba1[_0xf3d7('0x56')]))[_0xf3d7('0x5e')](_0xf3d7('0x5f')))},'json':!![]});}})[_0xf3d7('0x23')](function(_0x1132b9){if(_0x1132b9){var _0x1bd1b0=[_0xf3d7('0x60'),_0xf3d7('0x61'),_0xf3d7('0x62'),_0xf3d7('0x63'),_0xf3d7('0x17'),_0xf3d7('0x64'),_0xf3d7('0x65'),_0xf3d7('0x66'),_0xf3d7('0x67'),_0xf3d7('0x65'),'company'];_[_0xf3d7('0x68')](_0x1132b9,function(_0x45284b){return _0x1bd1b0[_0xf3d7('0x69')](_0x45284b[_0xf3d7('0x27')])||!_0x45284b[_0xf3d7('0x6a')]&&_0x45284b[_0xf3d7('0x2d')]!==_0xf3d7('0x6b')&&_0x45284b[_0xf3d7('0x2d')]!=='custom_dropdown';});return{'count':_0x1132b9[_0xf3d7('0x36')],'rows':_['map'](_0x1132b9,function(_0x2be41a){return{'id':_0x2be41a['name'],'name':_0x2be41a[_0xf3d7('0x6c')],'custom':!_0x2be41a[_0xf3d7('0x6a')],'options':_0x2be41a[_0xf3d7('0x6d')]?_[_0xf3d7('0x29')](_0x2be41a[_0xf3d7('0x6d')],function(_0x1ac5a7){return{'name':_[_0xf3d7('0x6e')](_0x1ac5a7),'value':_0x1ac5a7};}):[]};})};}})[_0xf3d7('0x23')](respondWithResult(_0x485d8f,null))[_0xf3d7('0x43')](function(_0x348ed6){var _0x3849f0=_0x39bdba['query'][_0xf3d7('0x6f')]?0x1f4:_0x348ed6[_0xf3d7('0x70')]||0x1f4;logger[_0xf3d7('0x26')](_0xf3d7('0x71'),_0xf3d7('0x54'),_0x3849f0,JSON[_0xf3d7('0x72')](_0x348ed6));delete _0x348ed6['name'];if(_0x3849f0===0x191){_0x3849f0=0x190;}_0x485d8f[_0xf3d7('0x17')](_0x3849f0)['send'](_0x39bdba['query'][_0xf3d7('0x6f')]?{'message':_0xf3d7('0x73'),'statusCode':_0x348ed6['statusCode']}:_0x348ed6);});};
\ No newline at end of file
index 6212aa4..e5997e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4190=['exports','define','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration'];(function(_0x4d7b5a,_0x28e888){var _0x18cf2c=function(_0x1c3cc7){while(--_0x1c3cc7){_0x4d7b5a['push'](_0x4d7b5a['shift']());}};_0x18cf2c(++_0x28e888);}(_0x4190,0xab));var _0x0419=function(_0x2825ae,_0x47550e){_0x2825ae=_0x2825ae-0x0;var _0x4601fe=_0x4190[_0x2825ae];return _0x4601fe;};'use strict';var _=require(_0x0419('0x0'));var util=require(_0x0419('0x1'));var logger=require(_0x0419('0x2'))(_0x0419('0x3'));var moment=require(_0x0419('0x4'));var BPromise=require(_0x0419('0x5'));var rp=require(_0x0419('0x6'));var fs=require('fs');var path=require(_0x0419('0x7'));var rimraf=require(_0x0419('0x8'));var config=require(_0x0419('0x9'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0x0419('0xa'));module[_0x0419('0xb')]=function(_0xe8e32a,_0x1a8e7b){return _0xe8e32a[_0x0419('0xc')]('FreshdeskAccount',attributes,{'tableName':_0x0419('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc29b=['bluebird','request-promise','path','rimraf','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x5d6853,_0x348d7c){var _0x38b61d=function(_0x243353){while(--_0x243353){_0x5d6853['push'](_0x5d6853['shift']());}};_0x38b61d(++_0x348d7c);}(_0xc29b,0xf2));var _0xbc29=function(_0x40c6c0,_0x2d3b07){_0x40c6c0=_0x40c6c0-0x0;var _0x53924c=_0xc29b[_0x40c6c0];return _0x53924c;};'use strict';var _=require(_0xbc29('0x0'));var util=require(_0xbc29('0x1'));var logger=require(_0xbc29('0x2'))(_0xbc29('0x3'));var moment=require(_0xbc29('0x4'));var BPromise=require(_0xbc29('0x5'));var rp=require(_0xbc29('0x6'));var fs=require('fs');var path=require(_0xbc29('0x7'));var rimraf=require(_0xbc29('0x8'));var config=require('../../config/environment');var attributes=require(_0xbc29('0x9'));var integrations=require(_0xbc29('0xa'));module[_0xbc29('0xb')]=function(_0x48a7fe,_0x6dbf9b){return _0x48a7fe['define']('FreshdeskAccount',attributes,{'tableName':_0xbc29('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 55485ca..38f7c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcdf=['error','message','info','catch','GetFreshdeskAccount','options','attributes','include','model','map','debug','ShowFreshdeskAccount','find','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5cdb77,_0x2f6ac4){var _0x23ada6=function(_0x98d692){while(--_0x98d692){_0x5cdb77['push'](_0x5cdb77['shift']());}};_0x23ada6(++_0x2f6ac4);}(_0xbcdf,0x8e));var _0xfbcd=function(_0x5ecbbc,_0x2541f5){_0x5ecbbc=_0x5ecbbc-0x0;var _0x219a19=_0xbcdf[_0x5ecbbc];return _0x219a19;};'use strict';var _=require(_0xfbcd('0x0'));var util=require('util');var moment=require(_0xfbcd('0x1'));var BPromise=require(_0xfbcd('0x2'));var rs=require(_0xfbcd('0x3'));var fs=require('fs');var Redis=require(_0xfbcd('0x4'));var db=require(_0xfbcd('0x5'))['db'];var utils=require(_0xfbcd('0x6'));var logger=require(_0xfbcd('0x7'))(_0xfbcd('0x8'));var config=require(_0xfbcd('0x9'));var jayson=require(_0xfbcd('0xa'));var client=jayson[_0xfbcd('0xb')][_0xfbcd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4211ea,_0x356694,_0x23a358){return new BPromise(function(_0x1e8779,_0x4ff7d2){return client['request'](_0x4211ea,_0x23a358)[_0xfbcd('0xd')](function(_0x131397){logger['info'](_0xfbcd('0xe'),_0x356694,_0xfbcd('0xf'));logger['debug'](_0xfbcd('0x10'),_0x356694,_0xfbcd('0xf'),JSON[_0xfbcd('0x11')](_0x131397));if(_0x131397[_0xfbcd('0x12')]){if(_0x131397['error']['code']===0x1f4){logger[_0xfbcd('0x12')](_0xfbcd('0xe'),_0x356694,_0x131397[_0xfbcd('0x12')]['message']);return _0x4ff7d2(_0x131397[_0xfbcd('0x12')]['message']);}logger['error'](_0xfbcd('0xe'),_0x356694,_0x131397[_0xfbcd('0x12')]['message']);return _0x1e8779(_0x131397[_0xfbcd('0x12')][_0xfbcd('0x13')]);}else{logger[_0xfbcd('0x14')](_0xfbcd('0xe'),_0x356694,_0xfbcd('0xf'));_0x1e8779(_0x131397['result']['message']);}})[_0xfbcd('0x15')](function(_0x38c1ff){logger[_0xfbcd('0x12')]('FreshdeskAccount,\x20%s,\x20%s',_0x356694,_0x38c1ff);_0x4ff7d2(_0x38c1ff);});});}exports[_0xfbcd('0x16')]=function(_0x5904b0){var _0x24949f=this;return new Promise(function(_0x15aedc,_0x51d31b){return db['FreshdeskAccount']['findAll']({'raw':_0x5904b0[_0xfbcd('0x17')]?_0x5904b0[_0xfbcd('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5904b0[_0xfbcd('0x17')]?_0x5904b0[_0xfbcd('0x17')]['where']||null:null,'attributes':_0x5904b0[_0xfbcd('0x17')]?_0x5904b0['options'][_0xfbcd('0x18')]||null:null,'limit':_0x5904b0[_0xfbcd('0x17')]?_0x5904b0['options']['limit']||null:null,'include':_0x5904b0[_0xfbcd('0x17')]?_0x5904b0['options'][_0xfbcd('0x19')]?_['map'](_0x5904b0[_0xfbcd('0x17')][_0xfbcd('0x19')],function(_0x2b91fa){return{'model':db[_0x2b91fa[_0xfbcd('0x1a')]],'as':_0x2b91fa['as'],'attributes':_0x2b91fa['attributes'],'include':_0x2b91fa[_0xfbcd('0x19')]?_[_0xfbcd('0x1b')](_0x2b91fa[_0xfbcd('0x19')],function(_0x538c4d){return{'model':db[_0x538c4d[_0xfbcd('0x1a')]],'as':_0x538c4d['as'],'attributes':_0x538c4d[_0xfbcd('0x18')],'include':_0x538c4d[_0xfbcd('0x19')]?_[_0xfbcd('0x1b')](_0x538c4d[_0xfbcd('0x19')],function(_0x367ed0){return{'model':db[_0x367ed0['model']],'as':_0x367ed0['as'],'attributes':_0x367ed0[_0xfbcd('0x18')]};}):[]};}):[]};}):[]:[]})[_0xfbcd('0xd')](function(_0x9a4826){logger['info'](_0xfbcd('0x16'),_0x5904b0);logger[_0xfbcd('0x1c')](_0xfbcd('0x16'),_0x5904b0,JSON['stringify'](_0x9a4826));_0x15aedc(_0x9a4826);})[_0xfbcd('0x15')](function(_0x29f86f){logger[_0xfbcd('0x12')](_0xfbcd('0x16'),_0x29f86f['message'],_0x5904b0);_0x51d31b(_0x24949f['error'](0x1f4,_0x29f86f[_0xfbcd('0x13')]));});});};exports[_0xfbcd('0x1d')]=function(_0x36808e){var _0xa2fbc9=this;return new Promise(function(_0x5a98fd,_0x58f4d7){return db['FreshdeskAccount'][_0xfbcd('0x1e')]({'raw':_0x36808e[_0xfbcd('0x17')]?_0x36808e[_0xfbcd('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x36808e['options']?_0x36808e[_0xfbcd('0x17')][_0xfbcd('0x1f')]||null:null,'attributes':_0x36808e['options']?_0x36808e[_0xfbcd('0x17')]['attributes']||null:null,'include':_0x36808e[_0xfbcd('0x17')]?_0x36808e[_0xfbcd('0x17')][_0xfbcd('0x19')]?_[_0xfbcd('0x1b')](_0x36808e[_0xfbcd('0x17')][_0xfbcd('0x19')],function(_0x1122f7){return{'model':db[_0x1122f7[_0xfbcd('0x1a')]],'as':_0x1122f7['as'],'attributes':_0x1122f7[_0xfbcd('0x18')],'include':_0x1122f7[_0xfbcd('0x19')]?_[_0xfbcd('0x1b')](_0x1122f7[_0xfbcd('0x19')],function(_0x2017df){return{'model':db[_0x2017df[_0xfbcd('0x1a')]],'as':_0x2017df['as'],'attributes':_0x2017df[_0xfbcd('0x18')],'include':_0x2017df['include']?_['map'](_0x2017df[_0xfbcd('0x19')],function(_0x2eb2ec){return{'model':db[_0x2eb2ec[_0xfbcd('0x1a')]],'as':_0x2eb2ec['as'],'attributes':_0x2eb2ec[_0xfbcd('0x18')]};}):[]};}):[]};}):[]:[]})[_0xfbcd('0xd')](function(_0x66918c){logger['info'](_0xfbcd('0x1d'),_0x36808e);logger[_0xfbcd('0x1c')](_0xfbcd('0x1d'),_0x36808e,JSON[_0xfbcd('0x11')](_0x66918c));_0x5a98fd(_0x66918c);})[_0xfbcd('0x15')](function(_0xddbe34){logger[_0xfbcd('0x12')](_0xfbcd('0x1d'),_0xddbe34[_0xfbcd('0x13')],_0x36808e);_0x58f4d7(_0xa2fbc9[_0xfbcd('0x12')](0x1f4,_0xddbe34[_0xfbcd('0x13')]));});});};
\ No newline at end of file
+var _0x288f=['message','result','catch','GetFreshdeskAccount','options','limit','map','include','attributes','model','stringify','ShowFreshdeskAccount','find','raw','where','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','error','code'];(function(_0x4f2d40,_0x2b76f8){var _0x227027=function(_0x57d2a4){while(--_0x57d2a4){_0x4f2d40['push'](_0x4f2d40['shift']());}};_0x227027(++_0x2b76f8);}(_0x288f,0x130));var _0xf288=function(_0x356107,_0x3bb13c){_0x356107=_0x356107-0x0;var _0x2f9d2b=_0x288f[_0x356107];return _0x2f9d2b;};'use strict';var _=require(_0xf288('0x0'));var util=require(_0xf288('0x1'));var moment=require(_0xf288('0x2'));var BPromise=require(_0xf288('0x3'));var rs=require(_0xf288('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf288('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf288('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf288('0x7'));var client=jayson[_0xf288('0x8')][_0xf288('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24505c,_0x1eaa20,_0x537523){return new BPromise(function(_0x4504fc,_0x679c27){return client[_0xf288('0xa')](_0x24505c,_0x537523)[_0xf288('0xb')](function(_0x54ee83){logger[_0xf288('0xc')](_0xf288('0xd'),_0x1eaa20,'request\x20sent');logger['debug']('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x1eaa20,'request\x20sent',JSON['stringify'](_0x54ee83));if(_0x54ee83[_0xf288('0xe')]){if(_0x54ee83[_0xf288('0xe')][_0xf288('0xf')]===0x1f4){logger[_0xf288('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0x1eaa20,_0x54ee83[_0xf288('0xe')][_0xf288('0x10')]);return _0x679c27(_0x54ee83[_0xf288('0xe')][_0xf288('0x10')]);}logger[_0xf288('0xe')](_0xf288('0xd'),_0x1eaa20,_0x54ee83[_0xf288('0xe')][_0xf288('0x10')]);return _0x4504fc(_0x54ee83['error'][_0xf288('0x10')]);}else{logger[_0xf288('0xc')](_0xf288('0xd'),_0x1eaa20,'request\x20sent');_0x4504fc(_0x54ee83[_0xf288('0x11')][_0xf288('0x10')]);}})[_0xf288('0x12')](function(_0xd67431){logger[_0xf288('0xe')](_0xf288('0xd'),_0x1eaa20,_0xd67431);_0x679c27(_0xd67431);});});}exports[_0xf288('0x13')]=function(_0x58f3c6){var _0x48aea3=this;return new Promise(function(_0x492359,_0x5bfd7e){return db['FreshdeskAccount']['findAll']({'raw':_0x58f3c6[_0xf288('0x14')]?_0x58f3c6[_0xf288('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x58f3c6[_0xf288('0x14')]?_0x58f3c6[_0xf288('0x14')]['where']||null:null,'attributes':_0x58f3c6[_0xf288('0x14')]?_0x58f3c6[_0xf288('0x14')]['attributes']||null:null,'limit':_0x58f3c6[_0xf288('0x14')]?_0x58f3c6[_0xf288('0x14')][_0xf288('0x15')]||null:null,'include':_0x58f3c6['options']?_0x58f3c6[_0xf288('0x14')]['include']?_[_0xf288('0x16')](_0x58f3c6[_0xf288('0x14')][_0xf288('0x17')],function(_0x3abb06){return{'model':db[_0x3abb06['model']],'as':_0x3abb06['as'],'attributes':_0x3abb06[_0xf288('0x18')],'include':_0x3abb06[_0xf288('0x17')]?_[_0xf288('0x16')](_0x3abb06[_0xf288('0x17')],function(_0x290411){return{'model':db[_0x290411[_0xf288('0x19')]],'as':_0x290411['as'],'attributes':_0x290411[_0xf288('0x18')],'include':_0x290411[_0xf288('0x17')]?_[_0xf288('0x16')](_0x290411[_0xf288('0x17')],function(_0x427500){return{'model':db[_0x427500[_0xf288('0x19')]],'as':_0x427500['as'],'attributes':_0x427500[_0xf288('0x18')]};}):[]};}):[]};}):[]:[]})[_0xf288('0xb')](function(_0x425ffc){logger[_0xf288('0xc')](_0xf288('0x13'),_0x58f3c6);logger['debug'](_0xf288('0x13'),_0x58f3c6,JSON[_0xf288('0x1a')](_0x425ffc));_0x492359(_0x425ffc);})[_0xf288('0x12')](function(_0x288b06){logger[_0xf288('0xe')]('GetFreshdeskAccount',_0x288b06[_0xf288('0x10')],_0x58f3c6);_0x5bfd7e(_0x48aea3[_0xf288('0xe')](0x1f4,_0x288b06[_0xf288('0x10')]));});});};exports[_0xf288('0x1b')]=function(_0x861eee){var _0x46451d=this;return new Promise(function(_0x45a8c0,_0x42db39){return db['FreshdeskAccount'][_0xf288('0x1c')]({'raw':_0x861eee['options']?_0x861eee[_0xf288('0x14')][_0xf288('0x1d')]===undefined?!![]:![]:!![],'where':_0x861eee['options']?_0x861eee[_0xf288('0x14')][_0xf288('0x1e')]||null:null,'attributes':_0x861eee[_0xf288('0x14')]?_0x861eee[_0xf288('0x14')][_0xf288('0x18')]||null:null,'include':_0x861eee['options']?_0x861eee['options'][_0xf288('0x17')]?_[_0xf288('0x16')](_0x861eee[_0xf288('0x14')][_0xf288('0x17')],function(_0x5a3890){return{'model':db[_0x5a3890[_0xf288('0x19')]],'as':_0x5a3890['as'],'attributes':_0x5a3890['attributes'],'include':_0x5a3890[_0xf288('0x17')]?_[_0xf288('0x16')](_0x5a3890[_0xf288('0x17')],function(_0x1edd30){return{'model':db[_0x1edd30[_0xf288('0x19')]],'as':_0x1edd30['as'],'attributes':_0x1edd30[_0xf288('0x18')],'include':_0x1edd30['include']?_[_0xf288('0x16')](_0x1edd30[_0xf288('0x17')],function(_0x2421aa){return{'model':db[_0x2421aa[_0xf288('0x19')]],'as':_0x2421aa['as'],'attributes':_0x2421aa[_0xf288('0x18')]};}):[]};}):[]};}):[]:[]})[_0xf288('0xb')](function(_0x170ec2){logger['info']('ShowFreshdeskAccount',_0x861eee);logger[_0xf288('0x1f')](_0xf288('0x1b'),_0x861eee,JSON['stringify'](_0x170ec2));_0x45a8c0(_0x170ec2);})[_0xf288('0x12')](function(_0x323eec){logger[_0xf288('0xe')]('ShowFreshdeskAccount',_0x323eec['message'],_0x861eee);_0x42db39(_0x46451d[_0xf288('0xe')](0x1f4,_0x323eec[_0xf288('0x10')]));});});};
\ No newline at end of file
index 13093f4..165c042 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e9b=['getFields','/:id/subjects','isAuthenticated','getDescriptions','getTags','post','create','/:id/tags','put','delete','destroy','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','index','/:id','show'];(function(_0x1857c6,_0x48840c){var _0x51011c=function(_0x3a4736){while(--_0x3a4736){_0x1857c6['push'](_0x1857c6['shift']());}};_0x51011c(++_0x48840c);}(_0x9e9b,0x11f));var _0xb9e9=function(_0x5a6644,_0x45d612){_0x5a6644=_0x5a6644-0x0;var _0x3a2a5d=_0x9e9b[_0x5a6644];return _0x3a2a5d;};'use strict';var multer=require('multer');var util=require(_0xb9e9('0x0'));var path=require('path');var timeout=require(_0xb9e9('0x1'));var express=require(_0xb9e9('0x2'));var router=express[_0xb9e9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb9e9('0x4'));var interaction=require(_0xb9e9('0x5'));var config=require(_0xb9e9('0x6'));var controller=require(_0xb9e9('0x7'));router[_0xb9e9('0x8')]('/',auth['isAuthenticated'](),controller[_0xb9e9('0x9')]);router[_0xb9e9('0x8')](_0xb9e9('0xa'),auth['isAuthenticated'](),controller[_0xb9e9('0xb')]);router[_0xb9e9('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0xb9e9('0xc')]);router[_0xb9e9('0x8')](_0xb9e9('0xd'),auth[_0xb9e9('0xe')](),controller['getSubjects']);router['get']('/:id/descriptions',auth[_0xb9e9('0xe')](),controller[_0xb9e9('0xf')]);router[_0xb9e9('0x8')]('/:id/tags',auth['isAuthenticated'](),controller[_0xb9e9('0x10')]);router[_0xb9e9('0x11')]('/',auth[_0xb9e9('0xe')](),controller[_0xb9e9('0x12')]);router[_0xb9e9('0x11')](_0xb9e9('0x13'),auth[_0xb9e9('0xe')](),controller['setTags']);router[_0xb9e9('0x14')](_0xb9e9('0xa'),auth[_0xb9e9('0xe')](),controller['update']);router[_0xb9e9('0x15')](_0xb9e9('0xa'),auth['isAuthenticated'](),controller[_0xb9e9('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x0020=['isAuthenticated','get','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','setTags','put','/:id','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intFreshdeskConfiguration.controller'];(function(_0x5b59c2,_0x5b5bd6){var _0x49d5b0=function(_0x355b8b){while(--_0x355b8b){_0x5b59c2['push'](_0x5b59c2['shift']());}};_0x49d5b0(++_0x5b5bd6);}(_0x0020,0x14a));var _0x0002=function(_0x4cce65,_0x40021e){_0x4cce65=_0x4cce65-0x0;var _0x4d1b45=_0x0020[_0x4cce65];return _0x4d1b45;};'use strict';var multer=require('multer');var util=require(_0x0002('0x0'));var path=require(_0x0002('0x1'));var timeout=require(_0x0002('0x2'));var express=require(_0x0002('0x3'));var router=express[_0x0002('0x4')]();var fs_extra=require(_0x0002('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0002('0x6'));var controller=require(_0x0002('0x7'));router['get']('/',auth[_0x0002('0x8')](),controller['index']);router[_0x0002('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x0002('0xa')]);router[_0x0002('0x9')](_0x0002('0xb'),auth['isAuthenticated'](),controller[_0x0002('0xc')]);router[_0x0002('0x9')](_0x0002('0xd'),auth[_0x0002('0x8')](),controller[_0x0002('0xe')]);router[_0x0002('0x9')](_0x0002('0xf'),auth[_0x0002('0x8')](),controller[_0x0002('0x10')]);router[_0x0002('0x9')](_0x0002('0x11'),auth['isAuthenticated'](),controller['getTags']);router[_0x0002('0x12')]('/',auth['isAuthenticated'](),controller[_0x0002('0x13')]);router[_0x0002('0x12')](_0x0002('0x11'),auth[_0x0002('0x8')](),controller[_0x0002('0x14')]);router[_0x0002('0x15')](_0x0002('0x16'),auth[_0x0002('0x8')](),controller[_0x0002('0x17')]);router[_0x0002('0x18')](_0x0002('0x16'),auth[_0x0002('0x8')](),controller[_0x0002('0x19')]);module['exports']=router;
\ No newline at end of file
index 75f94ee..8ab0343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9013=['sequelize','STRING'];(function(_0xa6bb42,_0x28eb07){var _0x2da765=function(_0x578635){while(--_0x578635){_0xa6bb42['push'](_0xa6bb42['shift']());}};_0x2da765(++_0x28eb07);}(_0x9013,0xae));var _0x3901=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x9013[_0x46698a];return _0x356db0;};'use strict';var Sequelize=require(_0x3901('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3901('0x1')]}};
\ No newline at end of file
+var _0xc41c=['STRING','sequelize','exports'];(function(_0x2efa8e,_0x1a2c11){var _0x2e155a=function(_0x1407f3){while(--_0x1407f3){_0x2efa8e['push'](_0x2efa8e['shift']());}};_0x2e155a(++_0x1a2c11);}(_0xc41c,0x1b4));var _0xcc41=function(_0x332264,_0x15ad59){_0x332264=_0x332264-0x0;var _0x214cd2=_0xc41c[_0x332264];return _0x214cd2;};'use strict';var Sequelize=require(_0xcc41('0x0'));module[_0xcc41('0x1')]={'name':{'type':Sequelize[_0xcc41('0x2')]},'description':{'type':Sequelize[_0xcc41('0x2')]}};
\ No newline at end of file
index f59cce7..c7000ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3c5=['pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','params','rawAttributes','fields','find','catch','create','body','getFields','findOne','FreshdeskField','getSubjects','nolimit','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','FreshdeskConfiguration','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where'];(function(_0xd92a00,_0x3cadb5){var _0x22aff5=function(_0x56d6df){while(--_0x56d6df){_0xd92a00['push'](_0xd92a00['shift']());}};_0x22aff5(++_0x3cadb5);}(_0xc3c5,0xc4));var _0x5c3c=function(_0x324dae,_0x57aa69){_0x324dae=_0x324dae-0x0;var _0x4a8d29=_0xc3c5[_0x324dae];return _0x4a8d29;};'use strict';var emlformat=require(_0x5c3c('0x0'));var rimraf=require(_0x5c3c('0x1'));var zipdir=require(_0x5c3c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5c3c('0x3'));var moment=require(_0x5c3c('0x4'));var BPromise=require(_0x5c3c('0x5'));var Mustache=require(_0x5c3c('0x6'));var util=require(_0x5c3c('0x7'));var path=require('path');var sox=require(_0x5c3c('0x8'));var csv=require(_0x5c3c('0x9'));var ejs=require(_0x5c3c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5c3c('0xb'));var squel=require(_0x5c3c('0xc'));var crypto=require(_0x5c3c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5c3c('0xe'));var toCsv=require(_0x5c3c('0x9'));var querystring=require(_0x5c3c('0xf'));var Papa=require(_0x5c3c('0x10'));var Redis=require(_0x5c3c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5c3c('0x12'));var as=require(_0x5c3c('0x13'));var hardwareService=require(_0x5c3c('0x14'));var logger=require('../../config/logger')(_0x5c3c('0x15'));var utils=require('../../config/utils');var config=require(_0x5c3c('0x16'));var licenseUtil=require(_0x5c3c('0x17'));var db=require(_0x5c3c('0x18'))['db'];function respondWithStatusCode(_0x24eb89,_0x33d62f){_0x33d62f=_0x33d62f||0xcc;return function(_0x34a13f){if(_0x34a13f){return _0x24eb89[_0x5c3c('0x19')](_0x33d62f);}return _0x24eb89[_0x5c3c('0x1a')](_0x33d62f)[_0x5c3c('0x1b')]();};}function respondWithResult(_0x5b157a,_0x40f56d){_0x40f56d=_0x40f56d||0xc8;return function(_0x53a512){if(_0x53a512){return _0x5b157a[_0x5c3c('0x1a')](_0x40f56d)[_0x5c3c('0x1c')](_0x53a512);}};}function respondWithFilteredResult(_0x2de9ae,_0x2a20ea){return function(_0x4f46c6){if(_0x4f46c6){var _0x1aea39=typeof _0x2a20ea[_0x5c3c('0x1d')]==='undefined'&&typeof _0x2a20ea[_0x5c3c('0x1e')]===_0x5c3c('0x1f');var _0x46a5dc=_0x4f46c6['count'];var _0x51cd85=_0x1aea39?0x0:_0x2a20ea[_0x5c3c('0x1d')];var _0x12223b=_0x1aea39?_0x4f46c6[_0x5c3c('0x20')]:_0x2a20ea['offset']+_0x2a20ea[_0x5c3c('0x1e')];var _0x303371;if(_0x12223b>=_0x46a5dc){_0x12223b=_0x46a5dc;_0x303371=0xc8;}else{_0x303371=0xce;}_0x2de9ae[_0x5c3c('0x1a')](_0x303371);return _0x2de9ae['set'](_0x5c3c('0x21'),_0x51cd85+'-'+_0x12223b+'/'+_0x46a5dc)['json'](_0x4f46c6);}return null;};}function patchUpdates(_0x27238c){return function(_0x42771f){try{jsonpatch[_0x5c3c('0x22')](_0x42771f,_0x27238c,!![]);}catch(_0x4ed443){return BPromise[_0x5c3c('0x23')](_0x4ed443);}return _0x42771f[_0x5c3c('0x24')]();};}function saveUpdates(_0x4bf773,_0x3cece3){return function(_0x408342){if(_0x408342){return _0x408342[_0x5c3c('0x25')](_0x4bf773)['then'](function(_0x113a94){return _0x113a94;});}return null;};}function removeEntity(_0x30a034,_0x568051){return function(_0x2c0d0e){if(_0x2c0d0e){return _0x2c0d0e[_0x5c3c('0x26')]()[_0x5c3c('0x27')](function(){_0x30a034[_0x5c3c('0x1a')](0xcc)[_0x5c3c('0x1b')]();});}};}function handleEntityNotFound(_0x4893ee,_0x490641){return function(_0x1c39c8){if(!_0x1c39c8){_0x4893ee['sendStatus'](0x194);}return _0x1c39c8;};}function handleError(_0x4dcfbf,_0x25bb17){_0x25bb17=_0x25bb17||0x1f4;return function(_0x2938cb){logger['error'](_0x2938cb[_0x5c3c('0x28')]);if(_0x2938cb['name']){delete _0x2938cb[_0x5c3c('0x29')];}_0x4dcfbf['status'](_0x25bb17)[_0x5c3c('0x2a')](_0x2938cb);};}exports[_0x5c3c('0x2b')]=function(_0xfe4cc4,_0x272121){var _0xcb1830={},_0x2edc81={},_0x4e6ccc={'count':0x0,'rows':[]};var _0x40a041=_[_0x5c3c('0x2c')](db[_0x5c3c('0x2d')]['rawAttributes'],function(_0x22f887){return{'name':_0x22f887[_0x5c3c('0x2e')],'type':_0x22f887['type'][_0x5c3c('0x2f')]};});_0x2edc81[_0x5c3c('0x30')]=_['map'](_0x40a041,_0x5c3c('0x29'));_0x2edc81[_0x5c3c('0x31')]=_[_0x5c3c('0x32')](_0xfe4cc4[_0x5c3c('0x31')]);_0x2edc81[_0x5c3c('0x33')]=_[_0x5c3c('0x34')](_0x2edc81[_0x5c3c('0x30')],_0x2edc81[_0x5c3c('0x31')]);_0xcb1830['attributes']=_[_0x5c3c('0x34')](_0x2edc81['model'],qs['fields'](_0xfe4cc4[_0x5c3c('0x31')]['fields']));_0xcb1830['attributes']=_0xcb1830[_0x5c3c('0x35')][_0x5c3c('0x36')]?_0xcb1830[_0x5c3c('0x35')]:_0x2edc81[_0x5c3c('0x30')];if(!_0xfe4cc4[_0x5c3c('0x31')][_0x5c3c('0x37')]('nolimit')){_0xcb1830[_0x5c3c('0x1e')]=qs[_0x5c3c('0x1e')](_0xfe4cc4['query'][_0x5c3c('0x1e')]);_0xcb1830[_0x5c3c('0x1d')]=qs[_0x5c3c('0x1d')](_0xfe4cc4['query'][_0x5c3c('0x1d')]);}_0xcb1830[_0x5c3c('0x38')]=qs[_0x5c3c('0x39')](_0xfe4cc4[_0x5c3c('0x31')]['sort']);_0xcb1830[_0x5c3c('0x3a')]=qs[_0x5c3c('0x33')](_[_0x5c3c('0x3b')](_0xfe4cc4[_0x5c3c('0x31')],_0x2edc81[_0x5c3c('0x33')]),_0x40a041);if(_0xfe4cc4[_0x5c3c('0x31')][_0x5c3c('0x3c')]){_0xcb1830['where']=_[_0x5c3c('0x3d')](_0xcb1830['where'],{'$or':_['map'](_0x40a041,function(_0x2e8465){if(_0x2e8465[_0x5c3c('0x3e')]!==_0x5c3c('0x3f')){var _0x44ea22={};_0x44ea22[_0x2e8465['name']]={'$like':'%'+_0xfe4cc4[_0x5c3c('0x31')][_0x5c3c('0x3c')]+'%'};return _0x44ea22;}})});}_0xcb1830=_[_0x5c3c('0x3d')]({},_0xcb1830,_0xfe4cc4[_0x5c3c('0x40')]);var _0x2302a9={'where':_0xcb1830['where']};return db[_0x5c3c('0x2d')][_0x5c3c('0x20')](_0x2302a9)[_0x5c3c('0x27')](function(_0xa7d868){_0x4e6ccc[_0x5c3c('0x20')]=_0xa7d868;if(_0xfe4cc4[_0x5c3c('0x31')][_0x5c3c('0x41')]){_0xcb1830[_0x5c3c('0x42')]=[{'all':!![]}];}return db[_0x5c3c('0x2d')][_0x5c3c('0x43')](_0xcb1830);})[_0x5c3c('0x27')](function(_0x140ace){_0x4e6ccc['rows']=_0x140ace;return _0x4e6ccc;})['then'](respondWithFilteredResult(_0x272121,_0xcb1830))['catch'](handleError(_0x272121,null));};exports['show']=function(_0x677407,_0x5da83a){var _0x1fd523={'raw':![],'where':{'id':_0x677407[_0x5c3c('0x44')]['id']}},_0x374490={};_0x374490[_0x5c3c('0x30')]=_[_0x5c3c('0x32')](db['FreshdeskConfiguration'][_0x5c3c('0x45')]);_0x374490[_0x5c3c('0x31')]=_[_0x5c3c('0x32')](_0x677407[_0x5c3c('0x31')]);_0x374490['filters']=_[_0x5c3c('0x34')](_0x374490[_0x5c3c('0x30')],_0x374490[_0x5c3c('0x31')]);_0x1fd523[_0x5c3c('0x35')]=_[_0x5c3c('0x34')](_0x374490[_0x5c3c('0x30')],qs[_0x5c3c('0x46')](_0x677407[_0x5c3c('0x31')][_0x5c3c('0x46')]));_0x1fd523[_0x5c3c('0x35')]=_0x1fd523[_0x5c3c('0x35')][_0x5c3c('0x36')]?_0x1fd523[_0x5c3c('0x35')]:_0x374490['model'];if(_0x677407[_0x5c3c('0x31')][_0x5c3c('0x41')]){_0x1fd523[_0x5c3c('0x42')]=[{'all':!![]}];}_0x1fd523=_[_0x5c3c('0x3d')]({},_0x1fd523,_0x677407['options']);return db[_0x5c3c('0x2d')][_0x5c3c('0x47')](_0x1fd523)[_0x5c3c('0x27')](handleEntityNotFound(_0x5da83a,null))[_0x5c3c('0x27')](respondWithResult(_0x5da83a,null))[_0x5c3c('0x48')](handleError(_0x5da83a,null));};exports[_0x5c3c('0x49')]=function(_0x32f8be,_0x3faec7){return db[_0x5c3c('0x2d')][_0x5c3c('0x49')](_0x32f8be[_0x5c3c('0x4a')],{})['then'](respondWithResult(_0x3faec7,0xc9))['catch'](handleError(_0x3faec7,null));};exports[_0x5c3c('0x25')]=function(_0x3146ec,_0x55764d){if(_0x3146ec['body']['id']){delete _0x3146ec[_0x5c3c('0x4a')]['id'];}return db[_0x5c3c('0x2d')][_0x5c3c('0x47')]({'where':{'id':_0x3146ec[_0x5c3c('0x44')]['id']}})[_0x5c3c('0x27')](handleEntityNotFound(_0x55764d,null))['then'](saveUpdates(_0x3146ec[_0x5c3c('0x4a')],null))['then'](respondWithResult(_0x55764d,null))[_0x5c3c('0x48')](handleError(_0x55764d,null));};exports['destroy']=function(_0xcda7a0,_0xb6cea9){return db[_0x5c3c('0x2d')][_0x5c3c('0x47')]({'where':{'id':_0xcda7a0[_0x5c3c('0x44')]['id']}})[_0x5c3c('0x27')](handleEntityNotFound(_0xb6cea9,null))['then'](removeEntity(_0xb6cea9,null))[_0x5c3c('0x48')](handleError(_0xb6cea9,null));};exports[_0x5c3c('0x4b')]=function(_0x6bca22,_0x3f18c4,_0x164107){var _0x47cf97={};var _0x2f5df3={};var _0x36e6d2;var _0x59e92c;return db['FreshdeskConfiguration'][_0x5c3c('0x4c')]({'where':{'id':_0x6bca22[_0x5c3c('0x44')]['id']}})[_0x5c3c('0x27')](handleEntityNotFound(_0x3f18c4,null))[_0x5c3c('0x27')](function(_0x56195c){if(_0x56195c){_0x36e6d2=_0x56195c;_0x2f5df3['model']=_[_0x5c3c('0x32')](db[_0x5c3c('0x4d')][_0x5c3c('0x45')]);_0x2f5df3[_0x5c3c('0x31')]=_[_0x5c3c('0x32')](_0x6bca22[_0x5c3c('0x31')]);_0x2f5df3[_0x5c3c('0x33')]=_[_0x5c3c('0x34')](_0x2f5df3[_0x5c3c('0x30')],_0x2f5df3[_0x5c3c('0x31')]);_0x47cf97[_0x5c3c('0x35')]=_['intersection'](_0x2f5df3[_0x5c3c('0x30')],qs[_0x5c3c('0x46')](_0x6bca22[_0x5c3c('0x31')][_0x5c3c('0x46')]));_0x47cf97[_0x5c3c('0x35')]=_0x47cf97['attributes'][_0x5c3c('0x36')]?_0x47cf97[_0x5c3c('0x35')]:_0x2f5df3[_0x5c3c('0x30')];_0x47cf97[_0x5c3c('0x38')]=qs['sort'](_0x6bca22[_0x5c3c('0x31')]['sort']);_0x47cf97['where']=qs['filters'](_[_0x5c3c('0x3b')](_0x6bca22['query'],_0x2f5df3[_0x5c3c('0x33')]));if(_0x6bca22[_0x5c3c('0x31')][_0x5c3c('0x3c')]){_0x47cf97[_0x5c3c('0x3a')]=_[_0x5c3c('0x3d')](_0x47cf97[_0x5c3c('0x3a')],{'$or':_[_0x5c3c('0x2c')](_0x47cf97[_0x5c3c('0x35')],function(_0x47492b){var _0x15ebea={};_0x15ebea[_0x47492b]={'$like':'%'+_0x6bca22[_0x5c3c('0x31')][_0x5c3c('0x3c')]+'%'};return _0x15ebea;})});}_0x47cf97=_['merge']({},_0x47cf97,_0x6bca22['options']);return _0x36e6d2['getFields'](_0x47cf97);}})[_0x5c3c('0x27')](function(_0x140bf5){if(_0x140bf5){_0x59e92c=_0x140bf5[_0x5c3c('0x36')];if(!_0x6bca22[_0x5c3c('0x31')][_0x5c3c('0x37')]('nolimit')){_0x47cf97[_0x5c3c('0x1e')]=qs['limit'](_0x6bca22[_0x5c3c('0x31')][_0x5c3c('0x1e')]);_0x47cf97['offset']=qs[_0x5c3c('0x1d')](_0x6bca22['query']['offset']);}return _0x36e6d2[_0x5c3c('0x4b')](_0x47cf97);}})[_0x5c3c('0x27')](function(_0x147ba6){if(_0x147ba6){return _0x147ba6?{'count':_0x59e92c,'rows':_0x147ba6}:null;}})[_0x5c3c('0x27')](respondWithResult(_0x3f18c4,null))['catch'](handleError(_0x3f18c4,null));};exports[_0x5c3c('0x4e')]=function(_0x2d109d,_0x3b9dcd,_0x48300a){var _0x3161f6={};var _0x4241cd={};var _0x16deed;var _0x1d3a3e;return db[_0x5c3c('0x2d')][_0x5c3c('0x4c')]({'where':{'id':_0x2d109d[_0x5c3c('0x44')]['id']}})[_0x5c3c('0x27')](handleEntityNotFound(_0x3b9dcd,null))[_0x5c3c('0x27')](function(_0x172d60){if(_0x172d60){_0x16deed=_0x172d60;_0x4241cd[_0x5c3c('0x30')]=_[_0x5c3c('0x32')](db[_0x5c3c('0x4d')][_0x5c3c('0x45')]);_0x4241cd[_0x5c3c('0x31')]=_[_0x5c3c('0x32')](_0x2d109d[_0x5c3c('0x31')]);_0x4241cd[_0x5c3c('0x33')]=_[_0x5c3c('0x34')](_0x4241cd['model'],_0x4241cd[_0x5c3c('0x31')]);_0x3161f6['attributes']=_[_0x5c3c('0x34')](_0x4241cd[_0x5c3c('0x30')],qs[_0x5c3c('0x46')](_0x2d109d[_0x5c3c('0x31')][_0x5c3c('0x46')]));_0x3161f6['attributes']=_0x3161f6[_0x5c3c('0x35')][_0x5c3c('0x36')]?_0x3161f6[_0x5c3c('0x35')]:_0x4241cd[_0x5c3c('0x30')];_0x3161f6[_0x5c3c('0x38')]=qs[_0x5c3c('0x39')](_0x2d109d['query'][_0x5c3c('0x39')]);_0x3161f6[_0x5c3c('0x3a')]=qs[_0x5c3c('0x33')](_[_0x5c3c('0x3b')](_0x2d109d['query'],_0x4241cd['filters']));if(_0x2d109d[_0x5c3c('0x31')][_0x5c3c('0x3c')]){_0x3161f6[_0x5c3c('0x3a')]=_['merge'](_0x3161f6[_0x5c3c('0x3a')],{'$or':_[_0x5c3c('0x2c')](_0x3161f6[_0x5c3c('0x35')],function(_0x22e261){var _0x5df3fa={};_0x5df3fa[_0x22e261]={'$like':'%'+_0x2d109d[_0x5c3c('0x31')][_0x5c3c('0x3c')]+'%'};return _0x5df3fa;})});}_0x3161f6=_[_0x5c3c('0x3d')]({},_0x3161f6,_0x2d109d[_0x5c3c('0x40')]);return _0x16deed[_0x5c3c('0x4e')](_0x3161f6);}})[_0x5c3c('0x27')](function(_0x468ab9){if(_0x468ab9){_0x1d3a3e=_0x468ab9[_0x5c3c('0x36')];if(!_0x2d109d[_0x5c3c('0x31')]['hasOwnProperty'](_0x5c3c('0x4f'))){_0x3161f6[_0x5c3c('0x1e')]=qs['limit'](_0x2d109d['query'][_0x5c3c('0x1e')]);_0x3161f6['offset']=qs[_0x5c3c('0x1d')](_0x2d109d[_0x5c3c('0x31')]['offset']);}return _0x16deed[_0x5c3c('0x4e')](_0x3161f6);}})[_0x5c3c('0x27')](function(_0xc9ee6c){if(_0xc9ee6c){return _0xc9ee6c?{'count':_0x1d3a3e,'rows':_0xc9ee6c}:null;}})['then'](respondWithResult(_0x3b9dcd,null))[_0x5c3c('0x48')](handleError(_0x3b9dcd,null));};exports[_0x5c3c('0x50')]=function(_0x1d6733,_0x11e39f,_0x254900){var _0x1b9331={};var _0x46aa9b={};var _0x4501fb;var _0x364731;return db['FreshdeskConfiguration'][_0x5c3c('0x4c')]({'where':{'id':_0x1d6733[_0x5c3c('0x44')]['id']}})[_0x5c3c('0x27')](handleEntityNotFound(_0x11e39f,null))[_0x5c3c('0x27')](function(_0x16c174){if(_0x16c174){_0x4501fb=_0x16c174;_0x46aa9b['model']=_['keys'](db['FreshdeskField'][_0x5c3c('0x45')]);_0x46aa9b['query']=_[_0x5c3c('0x32')](_0x1d6733[_0x5c3c('0x31')]);_0x46aa9b[_0x5c3c('0x33')]=_[_0x5c3c('0x34')](_0x46aa9b[_0x5c3c('0x30')],_0x46aa9b[_0x5c3c('0x31')]);_0x1b9331[_0x5c3c('0x35')]=_[_0x5c3c('0x34')](_0x46aa9b['model'],qs[_0x5c3c('0x46')](_0x1d6733[_0x5c3c('0x31')]['fields']));_0x1b9331[_0x5c3c('0x35')]=_0x1b9331[_0x5c3c('0x35')][_0x5c3c('0x36')]?_0x1b9331[_0x5c3c('0x35')]:_0x46aa9b[_0x5c3c('0x30')];_0x1b9331[_0x5c3c('0x38')]=qs[_0x5c3c('0x39')](_0x1d6733[_0x5c3c('0x31')][_0x5c3c('0x39')]);_0x1b9331[_0x5c3c('0x3a')]=qs[_0x5c3c('0x33')](_[_0x5c3c('0x3b')](_0x1d6733[_0x5c3c('0x31')],_0x46aa9b[_0x5c3c('0x33')]));if(_0x1d6733[_0x5c3c('0x31')][_0x5c3c('0x3c')]){_0x1b9331[_0x5c3c('0x3a')]=_[_0x5c3c('0x3d')](_0x1b9331['where'],{'$or':_[_0x5c3c('0x2c')](_0x1b9331['attributes'],function(_0x5b4960){var _0x245b4e={};_0x245b4e[_0x5b4960]={'$like':'%'+_0x1d6733['query'][_0x5c3c('0x3c')]+'%'};return _0x245b4e;})});}_0x1b9331=_['merge']({},_0x1b9331,_0x1d6733[_0x5c3c('0x40')]);return _0x4501fb[_0x5c3c('0x50')](_0x1b9331);}})[_0x5c3c('0x27')](function(_0x2e75f9){if(_0x2e75f9){_0x364731=_0x2e75f9[_0x5c3c('0x36')];if(!_0x1d6733[_0x5c3c('0x31')][_0x5c3c('0x37')]('nolimit')){_0x1b9331['limit']=qs[_0x5c3c('0x1e')](_0x1d6733['query'][_0x5c3c('0x1e')]);_0x1b9331[_0x5c3c('0x1d')]=qs[_0x5c3c('0x1d')](_0x1d6733[_0x5c3c('0x31')][_0x5c3c('0x1d')]);}return _0x4501fb[_0x5c3c('0x50')](_0x1b9331);}})[_0x5c3c('0x27')](function(_0xd8cc0b){if(_0xd8cc0b){return _0xd8cc0b?{'count':_0x364731,'rows':_0xd8cc0b}:null;}})['then'](respondWithResult(_0x11e39f,null))[_0x5c3c('0x48')](handleError(_0x11e39f,null));};exports['getTags']=function(_0x41129e,_0x1599f3,_0x1ee4b9){var _0x381fa7={};var _0xa182b6={};var _0x30b0b7;var _0x33b01d;return db[_0x5c3c('0x2d')][_0x5c3c('0x4c')]({'where':{'id':_0x41129e['params']['id']}})[_0x5c3c('0x27')](handleEntityNotFound(_0x1599f3,null))[_0x5c3c('0x27')](function(_0x21b82a){if(_0x21b82a){_0x30b0b7=_0x21b82a;_0xa182b6[_0x5c3c('0x30')]=_[_0x5c3c('0x32')](db[_0x5c3c('0x51')][_0x5c3c('0x45')]);_0xa182b6['query']=_['keys'](_0x41129e[_0x5c3c('0x31')]);_0xa182b6[_0x5c3c('0x33')]=_[_0x5c3c('0x34')](_0xa182b6['model'],_0xa182b6[_0x5c3c('0x31')]);_0x381fa7['attributes']=_[_0x5c3c('0x34')](_0xa182b6[_0x5c3c('0x30')],qs['fields'](_0x41129e[_0x5c3c('0x31')]['fields']));_0x381fa7[_0x5c3c('0x35')]=_0x381fa7[_0x5c3c('0x35')]['length']?_0x381fa7[_0x5c3c('0x35')]:_0xa182b6[_0x5c3c('0x30')];_0x381fa7[_0x5c3c('0x38')]=qs[_0x5c3c('0x39')](_0x41129e[_0x5c3c('0x31')]['sort']);_0x381fa7[_0x5c3c('0x3a')]=qs[_0x5c3c('0x33')](_[_0x5c3c('0x3b')](_0x41129e[_0x5c3c('0x31')],_0xa182b6[_0x5c3c('0x33')]));if(_0x41129e[_0x5c3c('0x31')][_0x5c3c('0x3c')]){_0x381fa7[_0x5c3c('0x3a')]=_[_0x5c3c('0x3d')](_0x381fa7['where'],{'$or':_[_0x5c3c('0x2c')](_0x381fa7['attributes'],function(_0x4298b9){var _0xe0f5be={};_0xe0f5be[_0x4298b9]={'$like':'%'+_0x41129e[_0x5c3c('0x31')][_0x5c3c('0x3c')]+'%'};return _0xe0f5be;})});}_0x381fa7=_['merge']({},_0x381fa7,_0x41129e[_0x5c3c('0x40')]);return _0x30b0b7[_0x5c3c('0x52')](_0x381fa7);}})[_0x5c3c('0x27')](function(_0x55ee27){if(_0x55ee27){_0x33b01d=_0x55ee27[_0x5c3c('0x36')];if(!_0x41129e[_0x5c3c('0x31')][_0x5c3c('0x37')]('nolimit')){_0x381fa7[_0x5c3c('0x1e')]=qs[_0x5c3c('0x1e')](_0x41129e['query'][_0x5c3c('0x1e')]);_0x381fa7['offset']=qs[_0x5c3c('0x1d')](_0x41129e[_0x5c3c('0x31')]['offset']);}return _0x30b0b7[_0x5c3c('0x52')](_0x381fa7);}})[_0x5c3c('0x27')](function(_0x549f03){if(_0x549f03){return _0x549f03?{'count':_0x33b01d,'rows':_0x549f03}:null;}})[_0x5c3c('0x27')](respondWithResult(_0x1599f3,null))[_0x5c3c('0x48')](handleError(_0x1599f3,null));};exports[_0x5c3c('0x53')]=function(_0x317283,_0x4e3ffd,_0x384a38){if(_0x317283[_0x5c3c('0x4a')]['id']){delete _0x317283['body']['id'];}return db[_0x5c3c('0x2d')][_0x5c3c('0x4c')]({'where':{'id':_0x317283[_0x5c3c('0x44')]['id']}})['then'](handleEntityNotFound(_0x4e3ffd,null))[_0x5c3c('0x27')](function(_0x1757e9){if(_0x1757e9){return _0x1757e9[_0x5c3c('0x53')](_0x317283['body'][_0x5c3c('0x54')]||[]);}return null;})[_0x5c3c('0x27')](respondWithResult(_0x4e3ffd,null))[_0x5c3c('0x48')](handleError(_0x4e3ffd,null));};
\ No newline at end of file
+var _0xde57=['rawAttributes','find','create','body','params','catch','FreshdeskField','sort','filter','getFields','getSubjects','findOne','pick','merge','hasOwnProperty','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','stack','name','send','FreshdeskConfiguration','type','key','map','query','model','attributes','intersection','fields','length','nolimit','order','where','filters','options','includeAll','include','findAll','rows','keys'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xde57,0x18f));var _0x7de5=function(_0x1809c5,_0x46cabc){_0x1809c5=_0x1809c5-0x0;var _0x5254a4=_0xde57[_0x1809c5];return _0x5254a4;};'use strict';var emlformat=require(_0x7de5('0x0'));var rimraf=require(_0x7de5('0x1'));var zipdir=require(_0x7de5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7de5('0x3'));var moment=require(_0x7de5('0x4'));var BPromise=require(_0x7de5('0x5'));var Mustache=require(_0x7de5('0x6'));var util=require(_0x7de5('0x7'));var path=require('path');var sox=require(_0x7de5('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7de5('0x9'));var squel=require(_0x7de5('0xa'));var crypto=require(_0x7de5('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7de5('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7de5('0xd'));var Redis=require(_0x7de5('0xe'));var authService=require(_0x7de5('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7de5('0x10'));var logger=require(_0x7de5('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7de5('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3304d3,_0x5849ee){_0x5849ee=_0x5849ee||0xcc;return function(_0x352bab){if(_0x352bab){return _0x3304d3[_0x7de5('0x13')](_0x5849ee);}return _0x3304d3[_0x7de5('0x14')](_0x5849ee)['end']();};}function respondWithResult(_0x29cbed,_0x5a0c22){_0x5a0c22=_0x5a0c22||0xc8;return function(_0x152bf3){if(_0x152bf3){return _0x29cbed[_0x7de5('0x14')](_0x5a0c22)[_0x7de5('0x15')](_0x152bf3);}};}function respondWithFilteredResult(_0x294a9d,_0x5c035){return function(_0x3336dc){if(_0x3336dc){var _0x4322cd=typeof _0x5c035[_0x7de5('0x16')]===_0x7de5('0x17')&&typeof _0x5c035[_0x7de5('0x18')]===_0x7de5('0x17');var _0x33281a=_0x3336dc['count'];var _0x188dd3=_0x4322cd?0x0:_0x5c035[_0x7de5('0x16')];var _0x12064e=_0x4322cd?_0x3336dc[_0x7de5('0x19')]:_0x5c035['offset']+_0x5c035['limit'];var _0x5bc609;if(_0x12064e>=_0x33281a){_0x12064e=_0x33281a;_0x5bc609=0xc8;}else{_0x5bc609=0xce;}_0x294a9d[_0x7de5('0x14')](_0x5bc609);return _0x294a9d[_0x7de5('0x1a')](_0x7de5('0x1b'),_0x188dd3+'-'+_0x12064e+'/'+_0x33281a)[_0x7de5('0x15')](_0x3336dc);}return null;};}function patchUpdates(_0x57c59e){return function(_0x4d6b1d){try{jsonpatch[_0x7de5('0x1c')](_0x4d6b1d,_0x57c59e,!![]);}catch(_0x25632c){return BPromise['reject'](_0x25632c);}return _0x4d6b1d[_0x7de5('0x1d')]();};}function saveUpdates(_0x2ae359,_0x5aefb6){return function(_0x271e79){if(_0x271e79){return _0x271e79[_0x7de5('0x1e')](_0x2ae359)[_0x7de5('0x1f')](function(_0x58d5bb){return _0x58d5bb;});}return null;};}function removeEntity(_0x3eded7,_0x2eb0e9){return function(_0x243188){if(_0x243188){return _0x243188[_0x7de5('0x20')]()[_0x7de5('0x1f')](function(){_0x3eded7[_0x7de5('0x14')](0xcc)[_0x7de5('0x21')]();});}};}function handleEntityNotFound(_0x361ffb,_0x20b492){return function(_0xa8445f){if(!_0xa8445f){_0x361ffb[_0x7de5('0x13')](0x194);}return _0xa8445f;};}function handleError(_0x323cf6,_0x6d556){_0x6d556=_0x6d556||0x1f4;return function(_0x32999b){logger['error'](_0x32999b[_0x7de5('0x22')]);if(_0x32999b['name']){delete _0x32999b[_0x7de5('0x23')];}_0x323cf6['status'](_0x6d556)[_0x7de5('0x24')](_0x32999b);};}exports['index']=function(_0xe00b1a,_0x30a39c){var _0x5a84f6={},_0x5efc2c={},_0x178cf9={'count':0x0,'rows':[]};var _0x55efaa=_['map'](db[_0x7de5('0x25')]['rawAttributes'],function(_0x552286){return{'name':_0x552286['fieldName'],'type':_0x552286[_0x7de5('0x26')][_0x7de5('0x27')]};});_0x5efc2c['model']=_[_0x7de5('0x28')](_0x55efaa,_0x7de5('0x23'));_0x5efc2c[_0x7de5('0x29')]=_['keys'](_0xe00b1a[_0x7de5('0x29')]);_0x5efc2c['filters']=_['intersection'](_0x5efc2c[_0x7de5('0x2a')],_0x5efc2c[_0x7de5('0x29')]);_0x5a84f6[_0x7de5('0x2b')]=_[_0x7de5('0x2c')](_0x5efc2c[_0x7de5('0x2a')],qs['fields'](_0xe00b1a['query'][_0x7de5('0x2d')]));_0x5a84f6[_0x7de5('0x2b')]=_0x5a84f6['attributes'][_0x7de5('0x2e')]?_0x5a84f6[_0x7de5('0x2b')]:_0x5efc2c[_0x7de5('0x2a')];if(!_0xe00b1a[_0x7de5('0x29')]['hasOwnProperty'](_0x7de5('0x2f'))){_0x5a84f6[_0x7de5('0x18')]=qs[_0x7de5('0x18')](_0xe00b1a['query']['limit']);_0x5a84f6['offset']=qs[_0x7de5('0x16')](_0xe00b1a[_0x7de5('0x29')][_0x7de5('0x16')]);}_0x5a84f6[_0x7de5('0x30')]=qs['sort'](_0xe00b1a[_0x7de5('0x29')]['sort']);_0x5a84f6[_0x7de5('0x31')]=qs['filters'](_['pick'](_0xe00b1a[_0x7de5('0x29')],_0x5efc2c[_0x7de5('0x32')]),_0x55efaa);if(_0xe00b1a[_0x7de5('0x29')]['filter']){_0x5a84f6['where']=_['merge'](_0x5a84f6['where'],{'$or':_[_0x7de5('0x28')](_0x55efaa,function(_0x54f451){if(_0x54f451[_0x7de5('0x26')]!=='VIRTUAL'){var _0x58328a={};_0x58328a[_0x54f451[_0x7de5('0x23')]]={'$like':'%'+_0xe00b1a[_0x7de5('0x29')]['filter']+'%'};return _0x58328a;}})});}_0x5a84f6=_['merge']({},_0x5a84f6,_0xe00b1a[_0x7de5('0x33')]);var _0x10bcd7={'where':_0x5a84f6[_0x7de5('0x31')]};return db[_0x7de5('0x25')]['count'](_0x10bcd7)['then'](function(_0x23e9dd){_0x178cf9['count']=_0x23e9dd;if(_0xe00b1a[_0x7de5('0x29')][_0x7de5('0x34')]){_0x5a84f6[_0x7de5('0x35')]=[{'all':!![]}];}return db[_0x7de5('0x25')][_0x7de5('0x36')](_0x5a84f6);})['then'](function(_0xadc683){_0x178cf9[_0x7de5('0x37')]=_0xadc683;return _0x178cf9;})['then'](respondWithFilteredResult(_0x30a39c,_0x5a84f6))['catch'](handleError(_0x30a39c,null));};exports['show']=function(_0x2e8d11,_0x59e230){var _0x5229ca={'raw':![],'where':{'id':_0x2e8d11['params']['id']}},_0x191930={};_0x191930['model']=_[_0x7de5('0x38')](db[_0x7de5('0x25')][_0x7de5('0x39')]);_0x191930[_0x7de5('0x29')]=_[_0x7de5('0x38')](_0x2e8d11[_0x7de5('0x29')]);_0x191930[_0x7de5('0x32')]=_['intersection'](_0x191930['model'],_0x191930[_0x7de5('0x29')]);_0x5229ca['attributes']=_[_0x7de5('0x2c')](_0x191930['model'],qs[_0x7de5('0x2d')](_0x2e8d11['query'][_0x7de5('0x2d')]));_0x5229ca[_0x7de5('0x2b')]=_0x5229ca[_0x7de5('0x2b')][_0x7de5('0x2e')]?_0x5229ca['attributes']:_0x191930[_0x7de5('0x2a')];if(_0x2e8d11[_0x7de5('0x29')]['includeAll']){_0x5229ca[_0x7de5('0x35')]=[{'all':!![]}];}_0x5229ca=_['merge']({},_0x5229ca,_0x2e8d11[_0x7de5('0x33')]);return db[_0x7de5('0x25')][_0x7de5('0x3a')](_0x5229ca)['then'](handleEntityNotFound(_0x59e230,null))['then'](respondWithResult(_0x59e230,null))['catch'](handleError(_0x59e230,null));};exports[_0x7de5('0x3b')]=function(_0x32d3fc,_0x193720){return db['FreshdeskConfiguration'][_0x7de5('0x3b')](_0x32d3fc['body'],{})[_0x7de5('0x1f')](respondWithResult(_0x193720,0xc9))['catch'](handleError(_0x193720,null));};exports[_0x7de5('0x1e')]=function(_0x5ba47f,_0x4dd502){if(_0x5ba47f[_0x7de5('0x3c')]['id']){delete _0x5ba47f[_0x7de5('0x3c')]['id'];}return db['FreshdeskConfiguration'][_0x7de5('0x3a')]({'where':{'id':_0x5ba47f[_0x7de5('0x3d')]['id']}})[_0x7de5('0x1f')](handleEntityNotFound(_0x4dd502,null))[_0x7de5('0x1f')](saveUpdates(_0x5ba47f['body'],null))[_0x7de5('0x1f')](respondWithResult(_0x4dd502,null))[_0x7de5('0x3e')](handleError(_0x4dd502,null));};exports[_0x7de5('0x20')]=function(_0x2c9f5f,_0x78b213){return db[_0x7de5('0x25')][_0x7de5('0x3a')]({'where':{'id':_0x2c9f5f['params']['id']}})[_0x7de5('0x1f')](handleEntityNotFound(_0x78b213,null))[_0x7de5('0x1f')](removeEntity(_0x78b213,null))[_0x7de5('0x3e')](handleError(_0x78b213,null));};exports['getFields']=function(_0x292e89,_0x524366,_0x30140a){var _0x54c78c={};var _0x4e7ab6={};var _0x58df4b;var _0x49fe6e;return db[_0x7de5('0x25')]['findOne']({'where':{'id':_0x292e89[_0x7de5('0x3d')]['id']}})[_0x7de5('0x1f')](handleEntityNotFound(_0x524366,null))['then'](function(_0x309415){if(_0x309415){_0x58df4b=_0x309415;_0x4e7ab6['model']=_['keys'](db[_0x7de5('0x3f')][_0x7de5('0x39')]);_0x4e7ab6[_0x7de5('0x29')]=_[_0x7de5('0x38')](_0x292e89[_0x7de5('0x29')]);_0x4e7ab6[_0x7de5('0x32')]=_['intersection'](_0x4e7ab6['model'],_0x4e7ab6['query']);_0x54c78c[_0x7de5('0x2b')]=_[_0x7de5('0x2c')](_0x4e7ab6['model'],qs[_0x7de5('0x2d')](_0x292e89['query'][_0x7de5('0x2d')]));_0x54c78c[_0x7de5('0x2b')]=_0x54c78c['attributes'][_0x7de5('0x2e')]?_0x54c78c[_0x7de5('0x2b')]:_0x4e7ab6['model'];_0x54c78c[_0x7de5('0x30')]=qs['sort'](_0x292e89['query'][_0x7de5('0x40')]);_0x54c78c[_0x7de5('0x31')]=qs['filters'](_['pick'](_0x292e89[_0x7de5('0x29')],_0x4e7ab6['filters']));if(_0x292e89[_0x7de5('0x29')][_0x7de5('0x41')]){_0x54c78c[_0x7de5('0x31')]=_['merge'](_0x54c78c[_0x7de5('0x31')],{'$or':_[_0x7de5('0x28')](_0x54c78c[_0x7de5('0x2b')],function(_0x3fb6dc){var _0x39510e={};_0x39510e[_0x3fb6dc]={'$like':'%'+_0x292e89[_0x7de5('0x29')]['filter']+'%'};return _0x39510e;})});}_0x54c78c=_['merge']({},_0x54c78c,_0x292e89['options']);return _0x58df4b[_0x7de5('0x42')](_0x54c78c);}})[_0x7de5('0x1f')](function(_0x2b3a49){if(_0x2b3a49){_0x49fe6e=_0x2b3a49['length'];if(!_0x292e89[_0x7de5('0x29')]['hasOwnProperty'](_0x7de5('0x2f'))){_0x54c78c[_0x7de5('0x18')]=qs[_0x7de5('0x18')](_0x292e89[_0x7de5('0x29')][_0x7de5('0x18')]);_0x54c78c[_0x7de5('0x16')]=qs['offset'](_0x292e89[_0x7de5('0x29')][_0x7de5('0x16')]);}return _0x58df4b[_0x7de5('0x42')](_0x54c78c);}})[_0x7de5('0x1f')](function(_0x4abd91){if(_0x4abd91){return _0x4abd91?{'count':_0x49fe6e,'rows':_0x4abd91}:null;}})[_0x7de5('0x1f')](respondWithResult(_0x524366,null))['catch'](handleError(_0x524366,null));};exports[_0x7de5('0x43')]=function(_0xe8e8f4,_0xc482cf,_0x389ab5){var _0x5570d7={};var _0x45e9db={};var _0x434ff3;var _0x20a2e4;return db[_0x7de5('0x25')][_0x7de5('0x44')]({'where':{'id':_0xe8e8f4[_0x7de5('0x3d')]['id']}})[_0x7de5('0x1f')](handleEntityNotFound(_0xc482cf,null))[_0x7de5('0x1f')](function(_0x3bfba4){if(_0x3bfba4){_0x434ff3=_0x3bfba4;_0x45e9db[_0x7de5('0x2a')]=_['keys'](db['FreshdeskField'][_0x7de5('0x39')]);_0x45e9db[_0x7de5('0x29')]=_[_0x7de5('0x38')](_0xe8e8f4[_0x7de5('0x29')]);_0x45e9db[_0x7de5('0x32')]=_[_0x7de5('0x2c')](_0x45e9db[_0x7de5('0x2a')],_0x45e9db[_0x7de5('0x29')]);_0x5570d7['attributes']=_['intersection'](_0x45e9db[_0x7de5('0x2a')],qs[_0x7de5('0x2d')](_0xe8e8f4[_0x7de5('0x29')][_0x7de5('0x2d')]));_0x5570d7[_0x7de5('0x2b')]=_0x5570d7['attributes'][_0x7de5('0x2e')]?_0x5570d7['attributes']:_0x45e9db[_0x7de5('0x2a')];_0x5570d7[_0x7de5('0x30')]=qs[_0x7de5('0x40')](_0xe8e8f4['query'][_0x7de5('0x40')]);_0x5570d7['where']=qs['filters'](_[_0x7de5('0x45')](_0xe8e8f4[_0x7de5('0x29')],_0x45e9db['filters']));if(_0xe8e8f4['query'][_0x7de5('0x41')]){_0x5570d7[_0x7de5('0x31')]=_[_0x7de5('0x46')](_0x5570d7['where'],{'$or':_[_0x7de5('0x28')](_0x5570d7[_0x7de5('0x2b')],function(_0xe2104){var _0x56e850={};_0x56e850[_0xe2104]={'$like':'%'+_0xe8e8f4[_0x7de5('0x29')][_0x7de5('0x41')]+'%'};return _0x56e850;})});}_0x5570d7=_['merge']({},_0x5570d7,_0xe8e8f4[_0x7de5('0x33')]);return _0x434ff3[_0x7de5('0x43')](_0x5570d7);}})[_0x7de5('0x1f')](function(_0x252a5a){if(_0x252a5a){_0x20a2e4=_0x252a5a[_0x7de5('0x2e')];if(!_0xe8e8f4['query'][_0x7de5('0x47')](_0x7de5('0x2f'))){_0x5570d7['limit']=qs[_0x7de5('0x18')](_0xe8e8f4[_0x7de5('0x29')]['limit']);_0x5570d7['offset']=qs[_0x7de5('0x16')](_0xe8e8f4[_0x7de5('0x29')]['offset']);}return _0x434ff3[_0x7de5('0x43')](_0x5570d7);}})[_0x7de5('0x1f')](function(_0x44c2db){if(_0x44c2db){return _0x44c2db?{'count':_0x20a2e4,'rows':_0x44c2db}:null;}})['then'](respondWithResult(_0xc482cf,null))[_0x7de5('0x3e')](handleError(_0xc482cf,null));};exports[_0x7de5('0x48')]=function(_0x412868,_0x108183,_0x532c2a){var _0x569955={};var _0x162765={};var _0x4234d8;var _0x516f2d;return db[_0x7de5('0x25')][_0x7de5('0x44')]({'where':{'id':_0x412868['params']['id']}})[_0x7de5('0x1f')](handleEntityNotFound(_0x108183,null))[_0x7de5('0x1f')](function(_0x103a6a){if(_0x103a6a){_0x4234d8=_0x103a6a;_0x162765[_0x7de5('0x2a')]=_[_0x7de5('0x38')](db[_0x7de5('0x3f')][_0x7de5('0x39')]);_0x162765[_0x7de5('0x29')]=_[_0x7de5('0x38')](_0x412868['query']);_0x162765[_0x7de5('0x32')]=_[_0x7de5('0x2c')](_0x162765[_0x7de5('0x2a')],_0x162765[_0x7de5('0x29')]);_0x569955['attributes']=_[_0x7de5('0x2c')](_0x162765['model'],qs[_0x7de5('0x2d')](_0x412868[_0x7de5('0x29')][_0x7de5('0x2d')]));_0x569955['attributes']=_0x569955[_0x7de5('0x2b')][_0x7de5('0x2e')]?_0x569955[_0x7de5('0x2b')]:_0x162765[_0x7de5('0x2a')];_0x569955[_0x7de5('0x30')]=qs[_0x7de5('0x40')](_0x412868[_0x7de5('0x29')][_0x7de5('0x40')]);_0x569955[_0x7de5('0x31')]=qs['filters'](_['pick'](_0x412868[_0x7de5('0x29')],_0x162765['filters']));if(_0x412868[_0x7de5('0x29')][_0x7de5('0x41')]){_0x569955['where']=_[_0x7de5('0x46')](_0x569955[_0x7de5('0x31')],{'$or':_[_0x7de5('0x28')](_0x569955[_0x7de5('0x2b')],function(_0x42830a){var _0x4fa969={};_0x4fa969[_0x42830a]={'$like':'%'+_0x412868[_0x7de5('0x29')]['filter']+'%'};return _0x4fa969;})});}_0x569955=_[_0x7de5('0x46')]({},_0x569955,_0x412868[_0x7de5('0x33')]);return _0x4234d8[_0x7de5('0x48')](_0x569955);}})[_0x7de5('0x1f')](function(_0x58d4db){if(_0x58d4db){_0x516f2d=_0x58d4db[_0x7de5('0x2e')];if(!_0x412868[_0x7de5('0x29')][_0x7de5('0x47')](_0x7de5('0x2f'))){_0x569955[_0x7de5('0x18')]=qs['limit'](_0x412868[_0x7de5('0x29')][_0x7de5('0x18')]);_0x569955[_0x7de5('0x16')]=qs[_0x7de5('0x16')](_0x412868[_0x7de5('0x29')][_0x7de5('0x16')]);}return _0x4234d8[_0x7de5('0x48')](_0x569955);}})[_0x7de5('0x1f')](function(_0x2f23a8){if(_0x2f23a8){return _0x2f23a8?{'count':_0x516f2d,'rows':_0x2f23a8}:null;}})[_0x7de5('0x1f')](respondWithResult(_0x108183,null))['catch'](handleError(_0x108183,null));};exports[_0x7de5('0x49')]=function(_0x139555,_0x7fa1ad,_0x3f98c8){var _0x358a09={};var _0x25979a={};var _0x55f7e5;var _0x6cc1;return db[_0x7de5('0x25')]['findOne']({'where':{'id':_0x139555[_0x7de5('0x3d')]['id']}})[_0x7de5('0x1f')](handleEntityNotFound(_0x7fa1ad,null))[_0x7de5('0x1f')](function(_0x209752){if(_0x209752){_0x55f7e5=_0x209752;_0x25979a['model']=_['keys'](db['Tag'][_0x7de5('0x39')]);_0x25979a[_0x7de5('0x29')]=_[_0x7de5('0x38')](_0x139555[_0x7de5('0x29')]);_0x25979a['filters']=_[_0x7de5('0x2c')](_0x25979a['model'],_0x25979a[_0x7de5('0x29')]);_0x358a09[_0x7de5('0x2b')]=_[_0x7de5('0x2c')](_0x25979a[_0x7de5('0x2a')],qs[_0x7de5('0x2d')](_0x139555[_0x7de5('0x29')]['fields']));_0x358a09['attributes']=_0x358a09['attributes']['length']?_0x358a09['attributes']:_0x25979a[_0x7de5('0x2a')];_0x358a09[_0x7de5('0x30')]=qs[_0x7de5('0x40')](_0x139555['query']['sort']);_0x358a09[_0x7de5('0x31')]=qs[_0x7de5('0x32')](_[_0x7de5('0x45')](_0x139555[_0x7de5('0x29')],_0x25979a[_0x7de5('0x32')]));if(_0x139555[_0x7de5('0x29')][_0x7de5('0x41')]){_0x358a09[_0x7de5('0x31')]=_[_0x7de5('0x46')](_0x358a09[_0x7de5('0x31')],{'$or':_[_0x7de5('0x28')](_0x358a09[_0x7de5('0x2b')],function(_0x5e562c){var _0x7575db={};_0x7575db[_0x5e562c]={'$like':'%'+_0x139555['query'][_0x7de5('0x41')]+'%'};return _0x7575db;})});}_0x358a09=_[_0x7de5('0x46')]({},_0x358a09,_0x139555[_0x7de5('0x33')]);return _0x55f7e5['getTags'](_0x358a09);}})[_0x7de5('0x1f')](function(_0x3ef058){if(_0x3ef058){_0x6cc1=_0x3ef058[_0x7de5('0x2e')];if(!_0x139555['query'][_0x7de5('0x47')]('nolimit')){_0x358a09[_0x7de5('0x18')]=qs['limit'](_0x139555[_0x7de5('0x29')][_0x7de5('0x18')]);_0x358a09[_0x7de5('0x16')]=qs['offset'](_0x139555[_0x7de5('0x29')][_0x7de5('0x16')]);}return _0x55f7e5[_0x7de5('0x49')](_0x358a09);}})[_0x7de5('0x1f')](function(_0x5f017a){if(_0x5f017a){return _0x5f017a?{'count':_0x6cc1,'rows':_0x5f017a}:null;}})['then'](respondWithResult(_0x7fa1ad,null))['catch'](handleError(_0x7fa1ad,null));};exports['setTags']=function(_0x4d87c8,_0x45d426,_0x43c7c8){if(_0x4d87c8[_0x7de5('0x3c')]['id']){delete _0x4d87c8[_0x7de5('0x3c')]['id'];}return db[_0x7de5('0x25')]['findOne']({'where':{'id':_0x4d87c8[_0x7de5('0x3d')]['id']}})[_0x7de5('0x1f')](handleEntityNotFound(_0x45d426,null))[_0x7de5('0x1f')](function(_0x1af02b){if(_0x1af02b){return _0x1af02b[_0x7de5('0x4a')](_0x4d87c8['body'][_0x7de5('0x4b')]||[]);}return null;})[_0x7de5('0x1f')](respondWithResult(_0x45d426,null))[_0x7de5('0x3e')](handleError(_0x45d426,null));};
\ No newline at end of file
index c6266c0..5aa1536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe893=['api','bluebird','request-promise','path','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','util'];(function(_0x4d1a95,_0x745550){var _0x4006e2=function(_0x50453b){while(--_0x50453b){_0x4d1a95['push'](_0x4d1a95['shift']());}};_0x4006e2(++_0x745550);}(_0xe893,0x112));var _0x3e89=function(_0x259b25,_0x37fe57){_0x259b25=_0x259b25-0x0;var _0x531cad=_0xe893[_0x259b25];return _0x531cad;};'use strict';var _=require('lodash');var util=require(_0x3e89('0x0'));var logger=require('../../config/logger')(_0x3e89('0x1'));var moment=require('moment');var BPromise=require(_0x3e89('0x2'));var rp=require(_0x3e89('0x3'));var fs=require('fs');var path=require(_0x3e89('0x4'));var rimraf=require('rimraf');var config=require(_0x3e89('0x5'));var attributes=require(_0x3e89('0x6'));module[_0x3e89('0x7')]=function(_0x7f4a80,_0xcc584c){return _0x7f4a80[_0x3e89('0x8')](_0x3e89('0x9'),attributes,{'tableName':_0x3e89('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1691=['request-promise','path','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','api','moment','bluebird'];(function(_0x38803b,_0x5a28a8){var _0x51d637=function(_0x4edc95){while(--_0x4edc95){_0x38803b['push'](_0x38803b['shift']());}};_0x51d637(++_0x5a28a8);}(_0x1691,0x1e8));var _0x1169=function(_0x3b826d,_0x1d0b68){_0x3b826d=_0x3b826d-0x0;var _0x38e1b3=_0x1691[_0x3b826d];return _0x38e1b3;};'use strict';var _=require(_0x1169('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1169('0x1'));var moment=require(_0x1169('0x2'));var BPromise=require(_0x1169('0x3'));var rp=require(_0x1169('0x4'));var fs=require('fs');var path=require(_0x1169('0x5'));var rimraf=require(_0x1169('0x6'));var config=require('../../config/environment');var attributes=require(_0x1169('0x7'));module[_0x1169('0x8')]=function(_0x15820a,_0x3f3633){return _0x15820a[_0x1169('0x9')](_0x1169('0xa'),attributes,{'tableName':_0x1169('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7f2b4d0..1ab9a71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca7=['message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x555f39,_0x504ec2){var _0x55f545=function(_0xc3b5e7){while(--_0xc3b5e7){_0x555f39['push'](_0x555f39['shift']());}};_0x55f545(++_0x504ec2);}(_0x9ca7,0xd3));var _0x79ca=function(_0x5e2d69,_0x55e494){_0x5e2d69=_0x5e2d69-0x0;var _0x36cdea=_0x9ca7[_0x5e2d69];return _0x36cdea;};'use strict';var _=require(_0x79ca('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x79ca('0x1'));var rs=require(_0x79ca('0x2'));var fs=require('fs');var Redis=require(_0x79ca('0x3'));var db=require(_0x79ca('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x79ca('0x5'))(_0x79ca('0x6'));var config=require(_0x79ca('0x7'));var jayson=require(_0x79ca('0x8'));var client=jayson[_0x79ca('0x9')][_0x79ca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2342b8,_0x20782b,_0x2c1aaf){return new BPromise(function(_0x4ed433,_0x16156f){return client['request'](_0x2342b8,_0x2c1aaf)[_0x79ca('0xb')](function(_0x211b81){logger[_0x79ca('0xc')](_0x79ca('0xd'),_0x20782b,_0x79ca('0xe'));logger['debug']('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x20782b,_0x79ca('0xe'),JSON['stringify'](_0x211b81));if(_0x211b81[_0x79ca('0xf')]){if(_0x211b81['error'][_0x79ca('0x10')]===0x1f4){logger[_0x79ca('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x20782b,_0x211b81[_0x79ca('0xf')][_0x79ca('0x11')]);return _0x16156f(_0x211b81[_0x79ca('0xf')][_0x79ca('0x11')]);}logger[_0x79ca('0xf')](_0x79ca('0xd'),_0x20782b,_0x211b81['error'][_0x79ca('0x11')]);return _0x4ed433(_0x211b81[_0x79ca('0xf')]['message']);}else{logger[_0x79ca('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x20782b,_0x79ca('0xe'));_0x4ed433(_0x211b81['result'][_0x79ca('0x11')]);}})[_0x79ca('0x12')](function(_0x4f488f){logger[_0x79ca('0xf')](_0x79ca('0xd'),_0x20782b,_0x4f488f);_0x16156f(_0x4f488f);});});}
\ No newline at end of file
+var _0x9fbc=['message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x9fbc,0xa4));var _0xc9fb=function(_0xc8b400,_0x4ef3e4){_0xc8b400=_0xc8b400-0x0;var _0x135f09=_0x9fbc[_0xc8b400];return _0x135f09;};'use strict';var _=require(_0xc9fb('0x0'));var util=require(_0xc9fb('0x1'));var moment=require(_0xc9fb('0x2'));var BPromise=require(_0xc9fb('0x3'));var rs=require(_0xc9fb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc9fb('0x5'))['db'];var utils=require(_0xc9fb('0x6'));var logger=require(_0xc9fb('0x7'))(_0xc9fb('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc9fb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbd11c,_0x17591c,_0x7fbf99){return new BPromise(function(_0x2ae1f7,_0x24220d){return client[_0xc9fb('0xa')](_0xbd11c,_0x7fbf99)[_0xc9fb('0xb')](function(_0x284ea6){logger['info'](_0xc9fb('0xc'),_0x17591c,_0xc9fb('0xd'));logger[_0xc9fb('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x17591c,_0xc9fb('0xd'),JSON['stringify'](_0x284ea6));if(_0x284ea6['error']){if(_0x284ea6['error']['code']===0x1f4){logger[_0xc9fb('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x17591c,_0x284ea6[_0xc9fb('0xf')][_0xc9fb('0x10')]);return _0x24220d(_0x284ea6[_0xc9fb('0xf')][_0xc9fb('0x10')]);}logger[_0xc9fb('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x17591c,_0x284ea6[_0xc9fb('0xf')][_0xc9fb('0x10')]);return _0x2ae1f7(_0x284ea6[_0xc9fb('0xf')][_0xc9fb('0x10')]);}else{logger[_0xc9fb('0x11')](_0xc9fb('0xc'),_0x17591c,_0xc9fb('0xd'));_0x2ae1f7(_0x284ea6[_0xc9fb('0x12')][_0xc9fb('0x10')]);}})[_0xc9fb('0x13')](function(_0x508591){logger[_0xc9fb('0xf')](_0xc9fb('0xc'),_0x17591c,_0x508591);_0x24220d(_0x508591);});});}
\ No newline at end of file
index da4c947..7b11b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d53=['isAuthenticated','index','get','/:id','show','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller'];(function(_0xa029a,_0x2771d5){var _0x495458=function(_0x5e5e01){while(--_0x5e5e01){_0xa029a['push'](_0xa029a['shift']());}};_0x495458(++_0x2771d5);}(_0x0d53,0x170));var _0x30d5=function(_0x274cc9,_0x5dd636){_0x274cc9=_0x274cc9-0x0;var _0x121661=_0x0d53[_0x274cc9];return _0x121661;};'use strict';var multer=require('multer');var util=require(_0x30d5('0x0'));var path=require(_0x30d5('0x1'));var timeout=require(_0x30d5('0x2'));var express=require(_0x30d5('0x3'));var router=express[_0x30d5('0x4')]();var fs_extra=require(_0x30d5('0x5'));var auth=require(_0x30d5('0x6'));var interaction=require(_0x30d5('0x7'));var config=require(_0x30d5('0x8'));var controller=require(_0x30d5('0x9'));router['get']('/',auth[_0x30d5('0xa')](),controller[_0x30d5('0xb')]);router[_0x30d5('0xc')](_0x30d5('0xd'),auth['isAuthenticated'](),controller[_0x30d5('0xe')]);router[_0x30d5('0xf')]('/',auth[_0x30d5('0xa')](),controller[_0x30d5('0x10')]);router['put']('/:id',auth[_0x30d5('0xa')](),controller[_0x30d5('0x11')]);router[_0x30d5('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x30d5('0x13')]);module[_0x30d5('0x14')]=router;
\ No newline at end of file
+var _0x93c6=['update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../config/environment','get','isAuthenticated','/:id','post','create'];(function(_0x2bd8f7,_0x1a30be){var _0x42b7c2=function(_0x5d9489){while(--_0x5d9489){_0x2bd8f7['push'](_0x2bd8f7['shift']());}};_0x42b7c2(++_0x1a30be);}(_0x93c6,0x7c));var _0x693c=function(_0x21e155,_0x5ecb0f){_0x21e155=_0x21e155-0x0;var _0x4d6c38=_0x93c6[_0x21e155];return _0x4d6c38;};'use strict';var multer=require(_0x693c('0x0'));var util=require(_0x693c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x693c('0x2'));var router=express[_0x693c('0x3')]();var fs_extra=require(_0x693c('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x693c('0x5'));var controller=require('./intFreshdeskField.controller');router[_0x693c('0x6')]('/',auth[_0x693c('0x7')](),controller['index']);router['get'](_0x693c('0x8'),auth[_0x693c('0x7')](),controller['show']);router[_0x693c('0x9')]('/',auth['isAuthenticated'](),controller[_0x693c('0xa')]);router['put'](_0x693c('0x8'),auth[_0x693c('0x7')](),controller[_0x693c('0xb')]);router[_0x693c('0xc')](_0x693c('0x8'),auth[_0x693c('0x7')](),controller[_0x693c('0xd')]);module[_0x693c('0xe')]=router;
\ No newline at end of file
index af84658..f3f2438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa903=['customVariable','BOOLEAN','sequelize','variable','keyValue','picklist','STRING','string'];(function(_0xd816e2,_0x5edac2){var _0x1f5924=function(_0x1bcbf0){while(--_0x1bcbf0){_0xd816e2['push'](_0xd816e2['shift']());}};_0x1f5924(++_0x5edac2);}(_0xa903,0x16a));var _0x3a90=function(_0x95874f,_0x4521e7){_0x95874f=_0x95874f-0x0;var _0x3b46c7=_0xa903[_0x95874f];return _0x3b46c7;};'use strict';var Sequelize=require(_0x3a90('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0x3a90('0x1'),'customVariable',_0x3a90('0x2'),_0x3a90('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3a90('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x3a90('0x5'),_0x3a90('0x1'),_0x3a90('0x6'))},'keyContent':{'type':Sequelize[_0x3a90('0x4')]},'idField':{'type':Sequelize[_0x3a90('0x4')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3a90('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3a90('0x4')]}};
\ No newline at end of file
+var _0x17bc=['variable','customVariable','keyValue','picklist','string','STRING','BOOLEAN','exports','ENUM'];(function(_0x352b44,_0x4a91a1){var _0x3e8baa=function(_0xed4bc3){while(--_0xed4bc3){_0x352b44['push'](_0x352b44['shift']());}};_0x3e8baa(++_0x4a91a1);}(_0x17bc,0xdf));var _0xc17b=function(_0x420036,_0x9ba235){_0x420036=_0x420036-0x0;var _0x446278=_0x17bc[_0x420036];return _0x446278;};'use strict';var Sequelize=require('sequelize');module[_0xc17b('0x0')]={'type':{'type':Sequelize[_0xc17b('0x1')]('string',_0xc17b('0x2'),_0xc17b('0x3'),_0xc17b('0x4'),_0xc17b('0x5')),'defaultValue':_0xc17b('0x6')},'content':{'type':Sequelize[_0xc17b('0x7')]},'key':{'type':Sequelize[_0xc17b('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xc17b('0x6'),_0xc17b('0x2'),_0xc17b('0x3'))},'keyContent':{'type':Sequelize[_0xc17b('0x7')]},'idField':{'type':Sequelize[_0xc17b('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xc17b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc17b('0x7')]}};
\ No newline at end of file
index da858d0..0b62875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['merge','VIRTUAL','options','includeAll','rows','catch','include','find','body','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','index','map','FreshdeskField','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter'];(function(_0x52f2bb,_0x296626){var _0x2c4fb1=function(_0x1fca35){while(--_0x1fca35){_0x52f2bb['push'](_0x52f2bb['shift']());}};_0x2c4fb1(++_0x296626);}(_0xe706,0xa3));var _0x6e70=function(_0x5eeadc,_0x17f42c){_0x5eeadc=_0x5eeadc-0x0;var _0x19781b=_0xe706[_0x5eeadc];return _0x19781b;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={},_0xecf336={},_0x2864a0={'count':0x0,'rows':[]};var _0x396a67=_[_0x6e70('0x2e')](db[_0x6e70('0x2f')][_0x6e70('0x30')],function(_0x3a0821){return{'name':_0x3a0821[_0x6e70('0x31')],'type':_0x3a0821['type'][_0x6e70('0x32')]};});_0xecf336['model']=_[_0x6e70('0x2e')](_0x396a67,'name');_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x5d772a[_0x6e70('0x33')]);_0xecf336['filters']=_[_0x6e70('0x35')](_0xecf336[_0x6e70('0x36')],_0xecf336['query']);_0x406f29[_0x6e70('0x37')]=_[_0x6e70('0x35')](_0xecf336['model'],qs[_0x6e70('0x38')](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x38')]));_0x406f29[_0x6e70('0x37')]=_0x406f29[_0x6e70('0x37')][_0x6e70('0x39')]?_0x406f29[_0x6e70('0x37')]:_0xecf336[_0x6e70('0x36')];if(!_0x5d772a[_0x6e70('0x33')][_0x6e70('0x3a')]('nolimit')){_0x406f29[_0x6e70('0x20')]=qs['limit'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x20')]);_0x406f29[_0x6e70('0x22')]=qs[_0x6e70('0x22')](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x22')]);}_0x406f29[_0x6e70('0x3b')]=qs[_0x6e70('0x3c')](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x3c')]);_0x406f29[_0x6e70('0x3d')]=qs[_0x6e70('0x3e')](_[_0x6e70('0x3f')](_0x5d772a['query'],_0xecf336['filters']),_0x396a67);if(_0x5d772a['query'][_0x6e70('0x40')]){_0x406f29[_0x6e70('0x3d')]=_[_0x6e70('0x41')](_0x406f29[_0x6e70('0x3d')],{'$or':_[_0x6e70('0x2e')](_0x396a67,function(_0x3bdd87){if(_0x3bdd87['type']!==_0x6e70('0x42')){var _0x9e7ad2={};_0x9e7ad2[_0x3bdd87[_0x6e70('0x2b')]]={'$like':'%'+_0x5d772a[_0x6e70('0x33')][_0x6e70('0x40')]+'%'};return _0x9e7ad2;}})});}_0x406f29=_[_0x6e70('0x41')]({},_0x406f29,_0x5d772a[_0x6e70('0x43')]);var _0x16fc7d={'where':_0x406f29['where']};return db[_0x6e70('0x2f')][_0x6e70('0x21')](_0x16fc7d)[_0x6e70('0x29')](function(_0x31cad2){_0x2864a0[_0x6e70('0x21')]=_0x31cad2;if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x44')]){_0x406f29['include']=[{'all':!![]}];}return db['FreshdeskField']['findAll'](_0x406f29);})[_0x6e70('0x29')](function(_0x2b63cc){_0x2864a0[_0x6e70('0x45')]=_0x2b63cc;return _0x2864a0;})[_0x6e70('0x29')](respondWithFilteredResult(_0x1952ea,_0x406f29))[_0x6e70('0x46')](handleError(_0x1952ea,null));};exports['show']=function(_0x225d44,_0x2a58d7){var _0x2a2aca={'raw':!![],'where':{'id':_0x225d44['params']['id']}},_0x52b197={};_0x52b197['model']=_[_0x6e70('0x34')](db['FreshdeskField'][_0x6e70('0x30')]);_0x52b197[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x225d44[_0x6e70('0x33')]);_0x52b197['filters']=_[_0x6e70('0x35')](_0x52b197['model'],_0x52b197[_0x6e70('0x33')]);_0x2a2aca[_0x6e70('0x37')]=_[_0x6e70('0x35')](_0x52b197[_0x6e70('0x36')],qs['fields'](_0x225d44[_0x6e70('0x33')][_0x6e70('0x38')]));_0x2a2aca[_0x6e70('0x37')]=_0x2a2aca[_0x6e70('0x37')][_0x6e70('0x39')]?_0x2a2aca[_0x6e70('0x37')]:_0x52b197[_0x6e70('0x36')];if(_0x225d44['query'][_0x6e70('0x44')]){_0x2a2aca[_0x6e70('0x47')]=[{'all':!![]}];}_0x2a2aca=_[_0x6e70('0x41')]({},_0x2a2aca,_0x225d44[_0x6e70('0x43')]);return db[_0x6e70('0x2f')][_0x6e70('0x48')](_0x2a2aca)[_0x6e70('0x29')](handleEntityNotFound(_0x2a58d7,null))['then'](respondWithResult(_0x2a58d7,null))[_0x6e70('0x46')](handleError(_0x2a58d7,null));};exports['create']=function(_0x11794e,_0x3836e4){return db['FreshdeskField']['create'](_0x11794e[_0x6e70('0x49')],{})[_0x6e70('0x29')](respondWithResult(_0x3836e4,0xc9))[_0x6e70('0x46')](handleError(_0x3836e4,null));};exports['update']=function(_0x4af9b1,_0x238ebb){if(_0x4af9b1[_0x6e70('0x49')]['id']){delete _0x4af9b1[_0x6e70('0x49')]['id'];}return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x4af9b1[_0x6e70('0x4a')]['id']}})['then'](handleEntityNotFound(_0x238ebb,null))[_0x6e70('0x29')](saveUpdates(_0x4af9b1[_0x6e70('0x49')],null))[_0x6e70('0x29')](respondWithResult(_0x238ebb,null))[_0x6e70('0x46')](handleError(_0x238ebb,null));};exports[_0x6e70('0x4b')]=function(_0x4b354e,_0x4ae901){return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x4b354e[_0x6e70('0x4a')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x4ae901,null))[_0x6e70('0x29')](removeEntity(_0x4ae901,null))['catch'](handleError(_0x4ae901,null));};
\ No newline at end of file
+var _0xd691=['include','find','update','body','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','error','stack','name','send','index','map','FreshdeskField','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','keys'];(function(_0x29658f,_0x139f4f){var _0x53eb75=function(_0x4159d4){while(--_0x4159d4){_0x29658f['push'](_0x29658f['shift']());}};_0x53eb75(++_0x139f4f);}(_0xd691,0xe6));var _0x1d69=function(_0x4e5d67,_0x54dffc){_0x4e5d67=_0x4e5d67-0x0;var _0x4acdf3=_0xd691[_0x4e5d67];return _0x4acdf3;};'use strict';var emlformat=require(_0x1d69('0x0'));var rimraf=require(_0x1d69('0x1'));var zipdir=require(_0x1d69('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1d69('0x3'));var moment=require(_0x1d69('0x4'));var BPromise=require(_0x1d69('0x5'));var Mustache=require(_0x1d69('0x6'));var util=require(_0x1d69('0x7'));var path=require(_0x1d69('0x8'));var sox=require(_0x1d69('0x9'));var csv=require(_0x1d69('0xa'));var ejs=require(_0x1d69('0xb'));var fs=require('fs');var fs_extra=require(_0x1d69('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1d69('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1d69('0xe'));var toCsv=require(_0x1d69('0xa'));var querystring=require(_0x1d69('0xf'));var Papa=require(_0x1d69('0x10'));var Redis=require('ioredis');var authService=require(_0x1d69('0x11'));var qs=require(_0x1d69('0x12'));var as=require(_0x1d69('0x13'));var hardwareService=require(_0x1d69('0x14'));var logger=require(_0x1d69('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x1d69('0x16'));var licenseUtil=require(_0x1d69('0x17'));var db=require(_0x1d69('0x18'))['db'];function respondWithStatusCode(_0x36ca70,_0x3f703a){_0x3f703a=_0x3f703a||0xcc;return function(_0x78b25d){if(_0x78b25d){return _0x36ca70[_0x1d69('0x19')](_0x3f703a);}return _0x36ca70[_0x1d69('0x1a')](_0x3f703a)[_0x1d69('0x1b')]();};}function respondWithResult(_0x7121cb,_0x292721){_0x292721=_0x292721||0xc8;return function(_0x1f4271){if(_0x1f4271){return _0x7121cb[_0x1d69('0x1a')](_0x292721)['json'](_0x1f4271);}};}function respondWithFilteredResult(_0x52f53d,_0x12e7cd){return function(_0x3fb5d2){if(_0x3fb5d2){var _0x29dd32=typeof _0x12e7cd[_0x1d69('0x1c')]===_0x1d69('0x1d')&&typeof _0x12e7cd[_0x1d69('0x1e')]==='undefined';var _0xb7f031=_0x3fb5d2[_0x1d69('0x1f')];var _0x34f6d4=_0x29dd32?0x0:_0x12e7cd['offset'];var _0x4cebea=_0x29dd32?_0x3fb5d2[_0x1d69('0x1f')]:_0x12e7cd[_0x1d69('0x1c')]+_0x12e7cd[_0x1d69('0x1e')];var _0x57bb5d;if(_0x4cebea>=_0xb7f031){_0x4cebea=_0xb7f031;_0x57bb5d=0xc8;}else{_0x57bb5d=0xce;}_0x52f53d[_0x1d69('0x1a')](_0x57bb5d);return _0x52f53d[_0x1d69('0x20')](_0x1d69('0x21'),_0x34f6d4+'-'+_0x4cebea+'/'+_0xb7f031)[_0x1d69('0x22')](_0x3fb5d2);}return null;};}function patchUpdates(_0x3ef4dc){return function(_0x24feaa){try{jsonpatch[_0x1d69('0x23')](_0x24feaa,_0x3ef4dc,!![]);}catch(_0x62968f){return BPromise['reject'](_0x62968f);}return _0x24feaa[_0x1d69('0x24')]();};}function saveUpdates(_0x122238,_0x1786e1){return function(_0x228d18){if(_0x228d18){return _0x228d18['update'](_0x122238)[_0x1d69('0x25')](function(_0x411ca0){return _0x411ca0;});}return null;};}function removeEntity(_0x2b9a7a,_0x54783d){return function(_0x5352d3){if(_0x5352d3){return _0x5352d3['destroy']()[_0x1d69('0x25')](function(){_0x2b9a7a[_0x1d69('0x1a')](0xcc)[_0x1d69('0x1b')]();});}};}function handleEntityNotFound(_0x1c91bf,_0x4f4449){return function(_0x3af518){if(!_0x3af518){_0x1c91bf[_0x1d69('0x19')](0x194);}return _0x3af518;};}function handleError(_0x51e91b,_0x377913){_0x377913=_0x377913||0x1f4;return function(_0x2dc73f){logger[_0x1d69('0x26')](_0x2dc73f[_0x1d69('0x27')]);if(_0x2dc73f[_0x1d69('0x28')]){delete _0x2dc73f[_0x1d69('0x28')];}_0x51e91b['status'](_0x377913)[_0x1d69('0x29')](_0x2dc73f);};}exports[_0x1d69('0x2a')]=function(_0x3c6b2b,_0x1d521b){var _0x3c0962={},_0x1e5818={},_0x2fd8d3={'count':0x0,'rows':[]};var _0x215052=_[_0x1d69('0x2b')](db[_0x1d69('0x2c')][_0x1d69('0x2d')],function(_0x5e8e8e){return{'name':_0x5e8e8e[_0x1d69('0x2e')],'type':_0x5e8e8e['type'][_0x1d69('0x2f')]};});_0x1e5818[_0x1d69('0x30')]=_[_0x1d69('0x2b')](_0x215052,_0x1d69('0x28'));_0x1e5818['query']=_['keys'](_0x3c6b2b[_0x1d69('0x31')]);_0x1e5818['filters']=_[_0x1d69('0x32')](_0x1e5818[_0x1d69('0x30')],_0x1e5818[_0x1d69('0x31')]);_0x3c0962[_0x1d69('0x33')]=_[_0x1d69('0x32')](_0x1e5818[_0x1d69('0x30')],qs[_0x1d69('0x34')](_0x3c6b2b[_0x1d69('0x31')][_0x1d69('0x34')]));_0x3c0962[_0x1d69('0x33')]=_0x3c0962[_0x1d69('0x33')][_0x1d69('0x35')]?_0x3c0962[_0x1d69('0x33')]:_0x1e5818[_0x1d69('0x30')];if(!_0x3c6b2b['query'][_0x1d69('0x36')](_0x1d69('0x37'))){_0x3c0962[_0x1d69('0x1e')]=qs[_0x1d69('0x1e')](_0x3c6b2b[_0x1d69('0x31')]['limit']);_0x3c0962[_0x1d69('0x1c')]=qs[_0x1d69('0x1c')](_0x3c6b2b[_0x1d69('0x31')][_0x1d69('0x1c')]);}_0x3c0962['order']=qs[_0x1d69('0x38')](_0x3c6b2b[_0x1d69('0x31')][_0x1d69('0x38')]);_0x3c0962[_0x1d69('0x39')]=qs[_0x1d69('0x3a')](_['pick'](_0x3c6b2b['query'],_0x1e5818['filters']),_0x215052);if(_0x3c6b2b[_0x1d69('0x31')][_0x1d69('0x3b')]){_0x3c0962['where']=_[_0x1d69('0x3c')](_0x3c0962[_0x1d69('0x39')],{'$or':_[_0x1d69('0x2b')](_0x215052,function(_0x497e02){if(_0x497e02[_0x1d69('0x3d')]!==_0x1d69('0x3e')){var _0x1a8ba4={};_0x1a8ba4[_0x497e02[_0x1d69('0x28')]]={'$like':'%'+_0x3c6b2b['query'][_0x1d69('0x3b')]+'%'};return _0x1a8ba4;}})});}_0x3c0962=_[_0x1d69('0x3c')]({},_0x3c0962,_0x3c6b2b[_0x1d69('0x3f')]);var _0x3c09bb={'where':_0x3c0962['where']};return db[_0x1d69('0x2c')][_0x1d69('0x1f')](_0x3c09bb)[_0x1d69('0x25')](function(_0x38306a){_0x2fd8d3[_0x1d69('0x1f')]=_0x38306a;if(_0x3c6b2b[_0x1d69('0x31')][_0x1d69('0x40')]){_0x3c0962['include']=[{'all':!![]}];}return db[_0x1d69('0x2c')][_0x1d69('0x41')](_0x3c0962);})['then'](function(_0x3d68c3){_0x2fd8d3['rows']=_0x3d68c3;return _0x2fd8d3;})[_0x1d69('0x25')](respondWithFilteredResult(_0x1d521b,_0x3c0962))[_0x1d69('0x42')](handleError(_0x1d521b,null));};exports[_0x1d69('0x43')]=function(_0xc052d6,_0x5b0a74){var _0x1d6fee={'raw':!![],'where':{'id':_0xc052d6[_0x1d69('0x44')]['id']}},_0x21dfc2={};_0x21dfc2['model']=_[_0x1d69('0x45')](db['FreshdeskField']['rawAttributes']);_0x21dfc2[_0x1d69('0x31')]=_[_0x1d69('0x45')](_0xc052d6['query']);_0x21dfc2[_0x1d69('0x3a')]=_['intersection'](_0x21dfc2[_0x1d69('0x30')],_0x21dfc2[_0x1d69('0x31')]);_0x1d6fee['attributes']=_[_0x1d69('0x32')](_0x21dfc2[_0x1d69('0x30')],qs[_0x1d69('0x34')](_0xc052d6['query'][_0x1d69('0x34')]));_0x1d6fee[_0x1d69('0x33')]=_0x1d6fee[_0x1d69('0x33')][_0x1d69('0x35')]?_0x1d6fee[_0x1d69('0x33')]:_0x21dfc2[_0x1d69('0x30')];if(_0xc052d6[_0x1d69('0x31')][_0x1d69('0x40')]){_0x1d6fee[_0x1d69('0x46')]=[{'all':!![]}];}_0x1d6fee=_[_0x1d69('0x3c')]({},_0x1d6fee,_0xc052d6[_0x1d69('0x3f')]);return db[_0x1d69('0x2c')][_0x1d69('0x47')](_0x1d6fee)[_0x1d69('0x25')](handleEntityNotFound(_0x5b0a74,null))[_0x1d69('0x25')](respondWithResult(_0x5b0a74,null))[_0x1d69('0x42')](handleError(_0x5b0a74,null));};exports['create']=function(_0x438b3a,_0x11cf7c){return db[_0x1d69('0x2c')]['create'](_0x438b3a['body'],{})[_0x1d69('0x25')](respondWithResult(_0x11cf7c,0xc9))['catch'](handleError(_0x11cf7c,null));};exports[_0x1d69('0x48')]=function(_0x370645,_0x131304){if(_0x370645['body']['id']){delete _0x370645['body']['id'];}return db[_0x1d69('0x2c')]['find']({'where':{'id':_0x370645[_0x1d69('0x44')]['id']}})['then'](handleEntityNotFound(_0x131304,null))['then'](saveUpdates(_0x370645[_0x1d69('0x49')],null))[_0x1d69('0x25')](respondWithResult(_0x131304,null))[_0x1d69('0x42')](handleError(_0x131304,null));};exports[_0x1d69('0x4a')]=function(_0x442041,_0x4e6453){return db[_0x1d69('0x2c')][_0x1d69('0x47')]({'where':{'id':_0x442041['params']['id']}})[_0x1d69('0x25')](handleEntityNotFound(_0x4e6453,null))[_0x1d69('0x25')](removeEntity(_0x4e6453,null))[_0x1d69('0x42')](handleError(_0x4e6453,null));};
\ No newline at end of file
index 4e9876d..5c70de6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ed=['FreshdeskField','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define'];(function(_0x37077b,_0x35790e){var _0x207cd3=function(_0x4d2c44){while(--_0x4d2c44){_0x37077b['push'](_0x37077b['shift']());}};_0x207cd3(++_0x35790e);}(_0xf5ed,0x154));var _0xdf5e=function(_0x537758,_0x4bc335){_0x537758=_0x537758-0x0;var _0x3c4fd1=_0xf5ed[_0x537758];return _0x3c4fd1;};'use strict';var _=require(_0xdf5e('0x0'));var util=require(_0xdf5e('0x1'));var logger=require(_0xdf5e('0x2'))(_0xdf5e('0x3'));var moment=require('moment');var BPromise=require(_0xdf5e('0x4'));var rp=require(_0xdf5e('0x5'));var fs=require('fs');var path=require(_0xdf5e('0x6'));var rimraf=require(_0xdf5e('0x7'));var config=require(_0xdf5e('0x8'));var attributes=require(_0xdf5e('0x9'));module[_0xdf5e('0xa')]=function(_0x1f666b,_0x3eb9fc){return _0x1f666b[_0xdf5e('0xb')](_0xdf5e('0xc'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0xdf5e('0xd'),'fields':[_0xdf5e('0xe'),_0xdf5e('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc04f=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc04f,0x125));var _0xfc04=function(_0x3f619d,_0x4762c5){_0x3f619d=_0x3f619d-0x0;var _0x1eb364=_0xc04f[_0x3f619d];return _0x1eb364;};'use strict';var _=require('lodash');var util=require(_0xfc04('0x0'));var logger=require(_0xfc04('0x1'))('api');var moment=require(_0xfc04('0x2'));var BPromise=require(_0xfc04('0x3'));var rp=require(_0xfc04('0x4'));var fs=require('fs');var path=require(_0xfc04('0x5'));var rimraf=require(_0xfc04('0x6'));var config=require(_0xfc04('0x7'));var attributes=require('./intFreshdeskField.attributes');module[_0xfc04('0x8')]=function(_0x6ac8c0,_0x3107b2){return _0x6ac8c0['define'](_0xfc04('0x9'),attributes,{'tableName':_0xfc04('0xa'),'paranoid':![],'indexes':[{'name':_0xfc04('0xb'),'fields':[_0xfc04('0xc'),_0xfc04('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 81813f7..698d3c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d2=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x341095,_0x4b00e6){var _0x51e224=function(_0x5db840){while(--_0x5db840){_0x341095['push'](_0x341095['shift']());}};_0x51e224(++_0x4b00e6);}(_0x90d2,0x65));var _0x290d=function(_0x164b96,_0x12f735){_0x164b96=_0x164b96-0x0;var _0x5489d9=_0x90d2[_0x164b96];return _0x5489d9;};'use strict';var _=require(_0x290d('0x0'));var util=require(_0x290d('0x1'));var moment=require(_0x290d('0x2'));var BPromise=require('bluebird');var rs=require(_0x290d('0x3'));var fs=require('fs');var Redis=require(_0x290d('0x4'));var db=require(_0x290d('0x5'))['db'];var utils=require(_0x290d('0x6'));var logger=require('../../config/logger')(_0x290d('0x7'));var config=require(_0x290d('0x8'));var jayson=require(_0x290d('0x9'));var client=jayson[_0x290d('0xa')][_0x290d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2c9276,_0x541e4a,_0x4460ef){return new BPromise(function(_0x5577ae,_0x46975e){return client[_0x290d('0xc')](_0x2c9276,_0x4460ef)[_0x290d('0xd')](function(_0x5d7d0b){logger[_0x290d('0xe')](_0x290d('0xf'),_0x541e4a,_0x290d('0x10'));logger[_0x290d('0x11')](_0x290d('0x12'),_0x541e4a,_0x290d('0x10'),JSON[_0x290d('0x13')](_0x5d7d0b));if(_0x5d7d0b[_0x290d('0x14')]){if(_0x5d7d0b['error'][_0x290d('0x15')]===0x1f4){logger[_0x290d('0x14')](_0x290d('0xf'),_0x541e4a,_0x5d7d0b[_0x290d('0x14')][_0x290d('0x16')]);return _0x46975e(_0x5d7d0b[_0x290d('0x14')][_0x290d('0x16')]);}logger[_0x290d('0x14')]('FreshdeskField,\x20%s,\x20%s',_0x541e4a,_0x5d7d0b[_0x290d('0x14')][_0x290d('0x16')]);return _0x5577ae(_0x5d7d0b[_0x290d('0x14')][_0x290d('0x16')]);}else{logger['info'](_0x290d('0xf'),_0x541e4a,_0x290d('0x10'));_0x5577ae(_0x5d7d0b[_0x290d('0x17')][_0x290d('0x16')]);}})[_0x290d('0x18')](function(_0x50482a){logger[_0x290d('0x14')]('FreshdeskField,\x20%s,\x20%s',_0x541e4a,_0x50482a);_0x46975e(_0x50482a);});});}
\ No newline at end of file
+var _0x677e=['util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','debug','request\x20sent','error','code','FreshdeskField,\x20%s,\x20%s','message','catch','lodash'];(function(_0x19f432,_0x32ce04){var _0x1f03de=function(_0x5d3965){while(--_0x5d3965){_0x19f432['push'](_0x19f432['shift']());}};_0x1f03de(++_0x32ce04);}(_0x677e,0x103));var _0xe677=function(_0x407b00,_0x3868c1){_0x407b00=_0x407b00-0x0;var _0x2450aa=_0x677e[_0x407b00];return _0x2450aa;};'use strict';var _=require(_0xe677('0x0'));var util=require(_0xe677('0x1'));var moment=require(_0xe677('0x2'));var BPromise=require(_0xe677('0x3'));var rs=require(_0xe677('0x4'));var fs=require('fs');var Redis=require(_0xe677('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe677('0x6'))(_0xe677('0x7'));var config=require(_0xe677('0x8'));var jayson=require(_0xe677('0x9'));var client=jayson[_0xe677('0xa')][_0xe677('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x30b3eb,_0x1ca075,_0x540163){return new BPromise(function(_0x39ce96,_0x364392){return client['request'](_0x30b3eb,_0x540163)['then'](function(_0x3bc5e6){logger[_0xe677('0xc')]('FreshdeskField,\x20%s,\x20%s',_0x1ca075,'request\x20sent');logger[_0xe677('0xd')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x1ca075,_0xe677('0xe'),JSON['stringify'](_0x3bc5e6));if(_0x3bc5e6['error']){if(_0x3bc5e6[_0xe677('0xf')][_0xe677('0x10')]===0x1f4){logger[_0xe677('0xf')](_0xe677('0x11'),_0x1ca075,_0x3bc5e6[_0xe677('0xf')][_0xe677('0x12')]);return _0x364392(_0x3bc5e6['error'][_0xe677('0x12')]);}logger[_0xe677('0xf')](_0xe677('0x11'),_0x1ca075,_0x3bc5e6[_0xe677('0xf')]['message']);return _0x39ce96(_0x3bc5e6['error'][_0xe677('0x12')]);}else{logger[_0xe677('0xc')](_0xe677('0x11'),_0x1ca075,'request\x20sent');_0x39ce96(_0x3bc5e6['result'][_0xe677('0x12')]);}})[_0xe677('0x13')](function(_0x2250a5){logger['error'](_0xe677('0x11'),_0x1ca075,_0x2250a5);_0x364392(_0x2250a5);});});}
\ No newline at end of file
index 6f18bad..320f826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['addConfiguration','update','delete','/:id','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshsalesAccount.controller','get','index','isAuthenticated','show','/:id/configurations','/:id/fields','getFields','post','create'];(function(_0x27b007,_0x120489){var _0x2473d7=function(_0x2227d2){while(--_0x2227d2){_0x27b007['push'](_0x27b007['shift']());}};_0x2473d7(++_0x120489);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x35e75a,_0x5ed225){_0x35e75a=_0x35e75a-0x0;var _0xb23c7f=_0xcb91[_0x35e75a];return _0xb23c7f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/:id',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x1cb9('0x7')](_0x1cb9('0xc'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xd')]);router[_0x1cb9('0xe')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0xf')]);router[_0x1cb9('0xe')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x12')](_0x1cb9('0x13'),auth[_0x1cb9('0x9')](),controller['destroy']);module[_0x1cb9('0x14')]=router;
\ No newline at end of file
+var _0x4ded=['./intFreshsalesAccount.controller','get','index','/:id','isAuthenticated','show','getFields','post','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2a792e,_0x37117d){var _0x53fa2f=function(_0x558f4e){while(--_0x558f4e){_0x2a792e['push'](_0x2a792e['shift']());}};_0x53fa2f(++_0x37117d);}(_0x4ded,0x116));var _0xd4de=function(_0xabc05f,_0x244661){_0xabc05f=_0xabc05f-0x0;var _0x225573=_0x4ded[_0xabc05f];return _0x225573;};'use strict';var multer=require(_0xd4de('0x0'));var util=require(_0xd4de('0x1'));var path=require(_0xd4de('0x2'));var timeout=require(_0xd4de('0x3'));var express=require(_0xd4de('0x4'));var router=express[_0xd4de('0x5')]();var fs_extra=require(_0xd4de('0x6'));var auth=require(_0xd4de('0x7'));var interaction=require(_0xd4de('0x8'));var config=require(_0xd4de('0x9'));var controller=require(_0xd4de('0xa'));router[_0xd4de('0xb')]('/',auth['isAuthenticated'](),controller[_0xd4de('0xc')]);router[_0xd4de('0xb')](_0xd4de('0xd'),auth[_0xd4de('0xe')](),controller[_0xd4de('0xf')]);router[_0xd4de('0xb')]('/:id/configurations',auth[_0xd4de('0xe')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xd4de('0xe')](),controller[_0xd4de('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xd4de('0x11')]('/:id/configurations',auth[_0xd4de('0xe')](),controller[_0xd4de('0x12')]);router[_0xd4de('0x13')](_0xd4de('0xd'),auth[_0xd4de('0xe')](),controller[_0xd4de('0x14')]);router[_0xd4de('0x15')](_0xd4de('0xd'),auth[_0xd4de('0xe')](),controller[_0xd4de('0x16')]);module[_0xd4de('0x17')]=router;
\ No newline at end of file
index eb2c0e2..5a3b073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['STRING'];(function(_0xba0394,_0x2c6844){var _0x1789dd=function(_0x437c00){while(--_0x437c00){_0xba0394['push'](_0xba0394['shift']());}};_0x1789dd(++_0x2c6844);}(_0xb44a,0x1c2));var _0xab44=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xb44a[_0x49ca18];return _0x145d54;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xab44('0x0')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xab44('0x0')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xab44('0x0')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xab44('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0xd824=['exports','STRING','username','remoteUri','sequelize'];(function(_0x2ee092,_0xa99c53){var _0x3a33b4=function(_0x5ed6ce){while(--_0x5ed6ce){_0x2ee092['push'](_0x2ee092['shift']());}};_0x3a33b4(++_0xa99c53);}(_0xd824,0xc2));var _0x4d82=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xd824[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0x4d82('0x0'));module[_0x4d82('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x3')},'apiKey':{'type':Sequelize[_0x4d82('0x2')]},'remoteUri':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x4')},'serverUrl':{'type':Sequelize[_0x4d82('0x2')],'allowNull':![]}};
\ No newline at end of file
index 49e9ce7..b6979ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8c6=['merge','VIRTUAL','options','rows','show','params','rawAttributes','includeAll','include','find','catch','create','update','body','destroy','findOne','FreshsalesConfiguration','length','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','lastIndexOf','GET','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','error','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','then','send','map','FreshsalesAccount','type','key','model','name','keys','filters','query','intersection','fields','attributes','nolimit','limit','order','sort','where','pick','filter'];(function(_0x3b6fb6,_0x686f66){var _0x4bc42e=function(_0x3624e3){while(--_0x3624e3){_0x3b6fb6['push'](_0x3b6fb6['shift']());}};_0x4bc42e(++_0x686f66);}(_0xb8c6,0x15b));var _0x6b8c=function(_0x1bc989,_0x4130ce){_0x1bc989=_0x1bc989-0x0;var _0x488ead=_0xb8c6[_0x1bc989];return _0x488ead;};'use strict';var emlformat=require(_0x6b8c('0x0'));var rimraf=require(_0x6b8c('0x1'));var zipdir=require(_0x6b8c('0x2'));var jsonpatch=require(_0x6b8c('0x3'));var rp=require(_0x6b8c('0x4'));var moment=require(_0x6b8c('0x5'));var BPromise=require(_0x6b8c('0x6'));var Mustache=require(_0x6b8c('0x7'));var util=require('util');var path=require(_0x6b8c('0x8'));var sox=require(_0x6b8c('0x9'));var csv=require(_0x6b8c('0xa'));var ejs=require(_0x6b8c('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b8c('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6b8c('0xd'));var deskjs=require(_0x6b8c('0xe'));var toCsv=require(_0x6b8c('0xa'));var querystring=require(_0x6b8c('0xf'));var Papa=require(_0x6b8c('0x10'));var Redis=require('ioredis');var authService=require(_0x6b8c('0x11'));var qs=require(_0x6b8c('0x12'));var as=require(_0x6b8c('0x13'));var hardwareService=require(_0x6b8c('0x14'));var logger=require(_0x6b8c('0x15'))(_0x6b8c('0x16'));var utils=require(_0x6b8c('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x6b8c('0x18'));function respondWithStatusCode(_0x48c79b,_0x4a7bbc){_0x4a7bbc=_0x4a7bbc||0xcc;return function(_0x7d9666){if(_0x7d9666){return _0x48c79b[_0x6b8c('0x19')](_0x4a7bbc);}return _0x48c79b[_0x6b8c('0x1a')](_0x4a7bbc)[_0x6b8c('0x1b')]();};}function respondWithResult(_0x5efbb0,_0x387420){_0x387420=_0x387420||0xc8;return function(_0x37f180){if(_0x37f180){return _0x5efbb0[_0x6b8c('0x1a')](_0x387420)[_0x6b8c('0x1c')](_0x37f180);}};}function respondWithFilteredResult(_0x56ab30,_0x1ed8a0){return function(_0x5e6198){if(_0x5e6198){var _0x575ccc=typeof _0x1ed8a0[_0x6b8c('0x1d')]===_0x6b8c('0x1e')&&typeof _0x1ed8a0['limit']===_0x6b8c('0x1e');var _0x2dd97c=_0x5e6198[_0x6b8c('0x1f')];var _0xadb651=_0x575ccc?0x0:_0x1ed8a0[_0x6b8c('0x1d')];var _0xbb1c9f=_0x575ccc?_0x5e6198['count']:_0x1ed8a0[_0x6b8c('0x1d')]+_0x1ed8a0['limit'];var _0x4b701c;if(_0xbb1c9f>=_0x2dd97c){_0xbb1c9f=_0x2dd97c;_0x4b701c=0xc8;}else{_0x4b701c=0xce;}_0x56ab30[_0x6b8c('0x1a')](_0x4b701c);return _0x56ab30[_0x6b8c('0x20')](_0x6b8c('0x21'),_0xadb651+'-'+_0xbb1c9f+'/'+_0x2dd97c)[_0x6b8c('0x1c')](_0x5e6198);}return null;};}function patchUpdates(_0x17eb92){return function(_0x47b317){try{jsonpatch['apply'](_0x47b317,_0x17eb92,!![]);}catch(_0x6b7d3c){return BPromise[_0x6b8c('0x22')](_0x6b7d3c);}return _0x47b317[_0x6b8c('0x23')]();};}function saveUpdates(_0x10713c,_0x4976e6){return function(_0x5d3e74){if(_0x5d3e74){return _0x5d3e74['update'](_0x10713c)[_0x6b8c('0x24')](function(_0x9763fe){return _0x9763fe;});}return null;};}function removeEntity(_0x1f2b34,_0x56b4d3){return function(_0x154fa6){if(_0x154fa6){return _0x154fa6['destroy']()[_0x6b8c('0x24')](function(){_0x1f2b34[_0x6b8c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e2dc2,_0x50d8d3){return function(_0x282619){if(!_0x282619){_0x1e2dc2[_0x6b8c('0x19')](0x194);}return _0x282619;};}function handleError(_0x4113f7,_0x17ced3){_0x17ced3=_0x17ced3||0x1f4;return function(_0xaa2d62){logger['error'](_0xaa2d62['stack']);if(_0xaa2d62['name']){delete _0xaa2d62['name'];}_0x4113f7[_0x6b8c('0x1a')](_0x17ced3)[_0x6b8c('0x25')](_0xaa2d62);};}exports['index']=function(_0x292285,_0x17c2da){var _0x3a5b02={},_0x890d78={},_0x3d1c9f={'count':0x0,'rows':[]};var _0x1ec31c=_[_0x6b8c('0x26')](db[_0x6b8c('0x27')]['rawAttributes'],function(_0x37d625){return{'name':_0x37d625['fieldName'],'type':_0x37d625[_0x6b8c('0x28')][_0x6b8c('0x29')]};});_0x890d78[_0x6b8c('0x2a')]=_[_0x6b8c('0x26')](_0x1ec31c,_0x6b8c('0x2b'));_0x890d78['query']=_[_0x6b8c('0x2c')](_0x292285['query']);_0x890d78[_0x6b8c('0x2d')]=_['intersection'](_0x890d78[_0x6b8c('0x2a')],_0x890d78[_0x6b8c('0x2e')]);_0x3a5b02['attributes']=_[_0x6b8c('0x2f')](_0x890d78[_0x6b8c('0x2a')],qs[_0x6b8c('0x30')](_0x292285[_0x6b8c('0x2e')][_0x6b8c('0x30')]));_0x3a5b02['attributes']=_0x3a5b02[_0x6b8c('0x31')]['length']?_0x3a5b02['attributes']:_0x890d78['model'];if(!_0x292285['query']['hasOwnProperty'](_0x6b8c('0x32'))){_0x3a5b02[_0x6b8c('0x33')]=qs['limit'](_0x292285[_0x6b8c('0x2e')]['limit']);_0x3a5b02[_0x6b8c('0x1d')]=qs[_0x6b8c('0x1d')](_0x292285['query'][_0x6b8c('0x1d')]);}_0x3a5b02[_0x6b8c('0x34')]=qs['sort'](_0x292285[_0x6b8c('0x2e')][_0x6b8c('0x35')]);_0x3a5b02[_0x6b8c('0x36')]=qs[_0x6b8c('0x2d')](_[_0x6b8c('0x37')](_0x292285[_0x6b8c('0x2e')],_0x890d78[_0x6b8c('0x2d')]),_0x1ec31c);if(_0x292285['query'][_0x6b8c('0x38')]){_0x3a5b02[_0x6b8c('0x36')]=_[_0x6b8c('0x39')](_0x3a5b02['where'],{'$or':_[_0x6b8c('0x26')](_0x1ec31c,function(_0x2e6ef4){if(_0x2e6ef4['type']!==_0x6b8c('0x3a')){var _0x1ddc1d={};_0x1ddc1d[_0x2e6ef4[_0x6b8c('0x2b')]]={'$like':'%'+_0x292285[_0x6b8c('0x2e')][_0x6b8c('0x38')]+'%'};return _0x1ddc1d;}})});}_0x3a5b02=_[_0x6b8c('0x39')]({},_0x3a5b02,_0x292285[_0x6b8c('0x3b')]);var _0x1ce0b4={'where':_0x3a5b02[_0x6b8c('0x36')]};return db[_0x6b8c('0x27')]['count'](_0x1ce0b4)[_0x6b8c('0x24')](function(_0x3e6827){_0x3d1c9f['count']=_0x3e6827;if(_0x292285[_0x6b8c('0x2e')]['includeAll']){_0x3a5b02['include']=[{'all':!![]}];}return db[_0x6b8c('0x27')]['findAll'](_0x3a5b02);})[_0x6b8c('0x24')](function(_0x2e9acf){_0x3d1c9f[_0x6b8c('0x3c')]=_0x2e9acf;return _0x3d1c9f;})['then'](respondWithFilteredResult(_0x17c2da,_0x3a5b02))['catch'](handleError(_0x17c2da,null));};exports[_0x6b8c('0x3d')]=function(_0x308daa,_0x14af6a){var _0xbd14d7={'raw':![],'where':{'id':_0x308daa[_0x6b8c('0x3e')]['id']}},_0x2c9e26={};_0x2c9e26[_0x6b8c('0x2a')]=_['keys'](db[_0x6b8c('0x27')][_0x6b8c('0x3f')]);_0x2c9e26[_0x6b8c('0x2e')]=_[_0x6b8c('0x2c')](_0x308daa['query']);_0x2c9e26[_0x6b8c('0x2d')]=_[_0x6b8c('0x2f')](_0x2c9e26[_0x6b8c('0x2a')],_0x2c9e26[_0x6b8c('0x2e')]);_0xbd14d7['attributes']=_[_0x6b8c('0x2f')](_0x2c9e26[_0x6b8c('0x2a')],qs['fields'](_0x308daa[_0x6b8c('0x2e')][_0x6b8c('0x30')]));_0xbd14d7[_0x6b8c('0x31')]=_0xbd14d7[_0x6b8c('0x31')]['length']?_0xbd14d7[_0x6b8c('0x31')]:_0x2c9e26[_0x6b8c('0x2a')];if(_0x308daa[_0x6b8c('0x2e')][_0x6b8c('0x40')]){_0xbd14d7[_0x6b8c('0x41')]=[{'all':!![]}];}_0xbd14d7=_[_0x6b8c('0x39')]({},_0xbd14d7,_0x308daa[_0x6b8c('0x3b')]);return db[_0x6b8c('0x27')][_0x6b8c('0x42')](_0xbd14d7)[_0x6b8c('0x24')](handleEntityNotFound(_0x14af6a,null))[_0x6b8c('0x24')](respondWithResult(_0x14af6a,null))[_0x6b8c('0x43')](handleError(_0x14af6a,null));};exports['create']=function(_0x561199,_0x668bf0){return db[_0x6b8c('0x27')][_0x6b8c('0x44')](_0x561199['body'],{})['then'](respondWithResult(_0x668bf0,0xc9))[_0x6b8c('0x43')](handleError(_0x668bf0,null));};exports[_0x6b8c('0x45')]=function(_0x46ae87,_0x19c925){if(_0x46ae87[_0x6b8c('0x46')]['id']){delete _0x46ae87[_0x6b8c('0x46')]['id'];}return db[_0x6b8c('0x27')][_0x6b8c('0x42')]({'where':{'id':_0x46ae87['params']['id']}})['then'](handleEntityNotFound(_0x19c925,null))[_0x6b8c('0x24')](saveUpdates(_0x46ae87[_0x6b8c('0x46')],null))[_0x6b8c('0x24')](respondWithResult(_0x19c925,null))[_0x6b8c('0x43')](handleError(_0x19c925,null));};exports[_0x6b8c('0x47')]=function(_0x1c58c8,_0x20d2a7){return db[_0x6b8c('0x27')]['find']({'where':{'id':_0x1c58c8[_0x6b8c('0x3e')]['id']}})['then'](handleEntityNotFound(_0x20d2a7,null))[_0x6b8c('0x24')](removeEntity(_0x20d2a7,null))[_0x6b8c('0x43')](handleError(_0x20d2a7,null));};exports['getConfigurations']=function(_0x18a40d,_0x24d00b,_0x368b5a){var _0x5cb7c7={};var _0x56f87c={};var _0x3d5329;var _0x27094e;return db[_0x6b8c('0x27')][_0x6b8c('0x48')]({'where':{'id':_0x18a40d['params']['id']}})['then'](handleEntityNotFound(_0x24d00b,null))['then'](function(_0xe4342d){if(_0xe4342d){_0x3d5329=_0xe4342d;_0x56f87c[_0x6b8c('0x2a')]=_['keys'](db[_0x6b8c('0x49')][_0x6b8c('0x3f')]);_0x56f87c[_0x6b8c('0x2e')]=_['keys'](_0x18a40d['query']);_0x56f87c['filters']=_[_0x6b8c('0x2f')](_0x56f87c[_0x6b8c('0x2a')],_0x56f87c[_0x6b8c('0x2e')]);_0x5cb7c7[_0x6b8c('0x31')]=_[_0x6b8c('0x2f')](_0x56f87c[_0x6b8c('0x2a')],qs[_0x6b8c('0x30')](_0x18a40d[_0x6b8c('0x2e')][_0x6b8c('0x30')]));_0x5cb7c7[_0x6b8c('0x31')]=_0x5cb7c7[_0x6b8c('0x31')][_0x6b8c('0x4a')]?_0x5cb7c7[_0x6b8c('0x31')]:_0x56f87c[_0x6b8c('0x2a')];_0x5cb7c7[_0x6b8c('0x34')]=qs[_0x6b8c('0x35')](_0x18a40d[_0x6b8c('0x2e')][_0x6b8c('0x35')]);_0x5cb7c7['where']=qs[_0x6b8c('0x2d')](_['pick'](_0x18a40d[_0x6b8c('0x2e')],_0x56f87c[_0x6b8c('0x2d')]));if(_0x18a40d[_0x6b8c('0x2e')][_0x6b8c('0x38')]){_0x5cb7c7[_0x6b8c('0x36')]=_[_0x6b8c('0x39')](_0x5cb7c7[_0x6b8c('0x36')],{'$or':_['map'](_0x5cb7c7[_0x6b8c('0x31')],function(_0x370185){var _0x59b3d7={};_0x59b3d7[_0x370185]={'$like':'%'+_0x18a40d[_0x6b8c('0x2e')][_0x6b8c('0x38')]+'%'};return _0x59b3d7;})});}_0x5cb7c7=_[_0x6b8c('0x39')]({},_0x5cb7c7,_0x18a40d[_0x6b8c('0x3b')]);return _0x3d5329[_0x6b8c('0x4b')](_0x5cb7c7);}})[_0x6b8c('0x24')](function(_0x558200){if(_0x558200){_0x27094e=_0x558200[_0x6b8c('0x4a')];if(!_0x18a40d[_0x6b8c('0x2e')]['hasOwnProperty'](_0x6b8c('0x32'))){_0x5cb7c7['limit']=qs[_0x6b8c('0x33')](_0x18a40d[_0x6b8c('0x2e')][_0x6b8c('0x33')]);_0x5cb7c7['offset']=qs[_0x6b8c('0x1d')](_0x18a40d[_0x6b8c('0x2e')][_0x6b8c('0x1d')]);}return _0x3d5329['getConfigurations'](_0x5cb7c7);}})[_0x6b8c('0x24')](function(_0x4143ad){if(_0x4143ad){return _0x4143ad?{'count':_0x27094e,'rows':_0x4143ad}:null;}})[_0x6b8c('0x24')](respondWithResult(_0x24d00b,null))[_0x6b8c('0x43')](handleError(_0x24d00b,null));};exports[_0x6b8c('0x4c')]=function(_0x5cd9b5,_0x3a4833,_0x20b215){if(_0x5cd9b5[_0x6b8c('0x46')]['id']){delete _0x5cd9b5[_0x6b8c('0x46')]['id'];}return db[_0x6b8c('0x27')][_0x6b8c('0x48')]({'where':{'id':_0x5cd9b5[_0x6b8c('0x3e')]['id']}})[_0x6b8c('0x24')](handleEntityNotFound(_0x3a4833,null))[_0x6b8c('0x24')](function(_0x32274e){if(_0x32274e){_0x5cd9b5[_0x6b8c('0x46')][_0x6b8c('0x4d')]=_0x32274e['id'];_0x5cd9b5[_0x6b8c('0x46')][_0x6b8c('0x4e')]=integrations[_0x6b8c('0x4f')](_0x5cd9b5[_0x6b8c('0x46')][_0x6b8c('0x50')],_0x5cd9b5[_0x6b8c('0x46')]['type']);_0x5cd9b5[_0x6b8c('0x46')][_0x6b8c('0x51')]=integrations[_0x6b8c('0x52')](_0x5cd9b5[_0x6b8c('0x46')][_0x6b8c('0x50')],_0x5cd9b5[_0x6b8c('0x46')][_0x6b8c('0x28')]);return db[_0x6b8c('0x49')]['create'](_0x5cd9b5[_0x6b8c('0x46')],{'include':[{'model':db[_0x6b8c('0x53')],'as':_0x6b8c('0x4e')},{'model':db['FreshsalesField'],'as':_0x6b8c('0x51')}]});}return null;})[_0x6b8c('0x24')](respondWithResult(_0x3a4833,null))[_0x6b8c('0x43')](handleError(_0x3a4833,null));};exports[_0x6b8c('0x54')]=function(_0x42d67f,_0x31dff1,_0x4ea599){var _0x5429d8='';var _0x5dcd70='';return db[_0x6b8c('0x27')][_0x6b8c('0x48')]({'where':{'id':_0x42d67f[_0x6b8c('0x3e')]['id']},'attributes':['id',_0x6b8c('0x55'),_0x6b8c('0x56'),_0x6b8c('0x57')]})[_0x6b8c('0x24')](handleEntityNotFound(_0x31dff1,null))['then'](function(_0x1c9112){if(_0x1c9112){_0x5dcd70=_0x1c9112[_0x6b8c('0x55')];_0x5429d8=_0x1c9112[_0x6b8c('0x56')];var _0x10ca9f=_0x1c9112[_0x6b8c('0x56')][_0x6b8c('0x58')](-0x1);if(_0x10ca9f==='/'){_0x5429d8=_0x5429d8['substring'](0x0,_0x5429d8[_0x6b8c('0x59')](_0x10ca9f));}return rp({'method':_0x6b8c('0x5a'),'uri':util['format'](_0x6b8c('0x5b'),_0x5429d8,_0x6b8c('0x5c')),'headers':{'Authorization':_0x6b8c('0x5d')+_0x1c9112[_0x6b8c('0x57')]},'json':!![]});}})['then'](function(_0x1bc2b4){if(_0x1bc2b4){var _0x149d3b=_0x1bc2b4[_0x6b8c('0x5e')];var _0x4ebd32=![];var _0x5305b5=null;for(_0x5305b5=0x0;_0x5305b5<_0x149d3b[_0x6b8c('0x4a')];_0x5305b5++){if(_0x149d3b[_0x5305b5][_0x6b8c('0x5f')]===_0x5dcd70){_0x4ebd32=!![];}}if(_0x4ebd32){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x6b8c('0x60')});}}})[_0x6b8c('0x24')](respondWithResult(_0x31dff1,null))['catch'](function(_0x9de2c1){var _0x350e61=_0x42d67f[_0x6b8c('0x2e')][_0x6b8c('0x61')]?0x1f4:_0x9de2c1[_0x6b8c('0x62')]||0x1f4;logger[_0x6b8c('0x63')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x350e61,JSON[_0x6b8c('0x64')](_0x9de2c1));delete _0x9de2c1[_0x6b8c('0x2b')];if(_0x350e61===0x191){_0x350e61=0x190;}_0x31dff1[_0x6b8c('0x1a')](_0x350e61)[_0x6b8c('0x25')](_0x42d67f['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x9de2c1[_0x6b8c('0x62')]}:_0x9de2c1);});};
\ No newline at end of file
+var _0xb090=['getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','remoteUri','apiKey','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','send','index','map','FreshsalesAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','params','includeAll','options','find','create','body'];(function(_0x9edfd5,_0x286486){var _0x330738=function(_0x4aceb3){while(--_0x4aceb3){_0x9edfd5['push'](_0x9edfd5['shift']());}};_0x330738(++_0x286486);}(_0xb090,0x86));var _0x0b09=function(_0x199a85,_0x460e4d){_0x199a85=_0x199a85-0x0;var _0x3f1acc=_0xb090[_0x199a85];return _0x3f1acc;};'use strict';var emlformat=require(_0x0b09('0x0'));var rimraf=require(_0x0b09('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0b09('0x2'));var moment=require(_0x0b09('0x3'));var BPromise=require(_0x0b09('0x4'));var Mustache=require(_0x0b09('0x5'));var util=require(_0x0b09('0x6'));var path=require(_0x0b09('0x7'));var sox=require(_0x0b09('0x8'));var csv=require(_0x0b09('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0b09('0xa'));var _=require(_0x0b09('0xb'));var squel=require(_0x0b09('0xc'));var crypto=require(_0x0b09('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0b09('0xe'));var toCsv=require(_0x0b09('0x9'));var querystring=require(_0x0b09('0xf'));var Papa=require(_0x0b09('0x10'));var Redis=require(_0x0b09('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0b09('0x12'));var as=require(_0x0b09('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0b09('0x14'))(_0x0b09('0x15'));var utils=require(_0x0b09('0x16'));var config=require(_0x0b09('0x17'));var licenseUtil=require(_0x0b09('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0b09('0x19'));function respondWithStatusCode(_0x24cb61,_0x3ef746){_0x3ef746=_0x3ef746||0xcc;return function(_0x458b31){if(_0x458b31){return _0x24cb61[_0x0b09('0x1a')](_0x3ef746);}return _0x24cb61['status'](_0x3ef746)['end']();};}function respondWithResult(_0x366a15,_0x44acab){_0x44acab=_0x44acab||0xc8;return function(_0x43ad48){if(_0x43ad48){return _0x366a15[_0x0b09('0x1b')](_0x44acab)[_0x0b09('0x1c')](_0x43ad48);}};}function respondWithFilteredResult(_0x566311,_0x43c1fa){return function(_0x5ac6d7){if(_0x5ac6d7){var _0x4d77bf=typeof _0x43c1fa['offset']===_0x0b09('0x1d')&&typeof _0x43c1fa[_0x0b09('0x1e')]===_0x0b09('0x1d');var _0xaf157d=_0x5ac6d7[_0x0b09('0x1f')];var _0xc8199d=_0x4d77bf?0x0:_0x43c1fa[_0x0b09('0x20')];var _0x2198bd=_0x4d77bf?_0x5ac6d7[_0x0b09('0x1f')]:_0x43c1fa['offset']+_0x43c1fa[_0x0b09('0x1e')];var _0x32ff7d;if(_0x2198bd>=_0xaf157d){_0x2198bd=_0xaf157d;_0x32ff7d=0xc8;}else{_0x32ff7d=0xce;}_0x566311['status'](_0x32ff7d);return _0x566311[_0x0b09('0x21')](_0x0b09('0x22'),_0xc8199d+'-'+_0x2198bd+'/'+_0xaf157d)[_0x0b09('0x1c')](_0x5ac6d7);}return null;};}function patchUpdates(_0x8a8289){return function(_0x507a7a){try{jsonpatch[_0x0b09('0x23')](_0x507a7a,_0x8a8289,!![]);}catch(_0x24e291){return BPromise[_0x0b09('0x24')](_0x24e291);}return _0x507a7a[_0x0b09('0x25')]();};}function saveUpdates(_0xeea2d3,_0x4a87d2){return function(_0x15f78e){if(_0x15f78e){return _0x15f78e['update'](_0xeea2d3)[_0x0b09('0x26')](function(_0x5ab211){return _0x5ab211;});}return null;};}function removeEntity(_0x154ec5,_0x2ff701){return function(_0x1a17d9){if(_0x1a17d9){return _0x1a17d9[_0x0b09('0x27')]()['then'](function(){_0x154ec5[_0x0b09('0x1b')](0xcc)[_0x0b09('0x28')]();});}};}function handleEntityNotFound(_0x19d0b5,_0x384bc8){return function(_0x475dc3){if(!_0x475dc3){_0x19d0b5['sendStatus'](0x194);}return _0x475dc3;};}function handleError(_0x526f90,_0xf17390){_0xf17390=_0xf17390||0x1f4;return function(_0x5f4112){logger[_0x0b09('0x29')](_0x5f4112[_0x0b09('0x2a')]);if(_0x5f4112['name']){delete _0x5f4112['name'];}_0x526f90[_0x0b09('0x1b')](_0xf17390)[_0x0b09('0x2b')](_0x5f4112);};}exports[_0x0b09('0x2c')]=function(_0x3d4de6,_0x2e95ae){var _0x3b4ec1={},_0x637b2b={},_0x23d2c9={'count':0x0,'rows':[]};var _0x7a1d61=_[_0x0b09('0x2d')](db[_0x0b09('0x2e')][_0x0b09('0x2f')],function(_0x315549){return{'name':_0x315549['fieldName'],'type':_0x315549[_0x0b09('0x30')]['key']};});_0x637b2b[_0x0b09('0x31')]=_[_0x0b09('0x2d')](_0x7a1d61,'name');_0x637b2b[_0x0b09('0x32')]=_[_0x0b09('0x33')](_0x3d4de6[_0x0b09('0x32')]);_0x637b2b[_0x0b09('0x34')]=_[_0x0b09('0x35')](_0x637b2b['model'],_0x637b2b[_0x0b09('0x32')]);_0x3b4ec1[_0x0b09('0x36')]=_[_0x0b09('0x35')](_0x637b2b[_0x0b09('0x31')],qs['fields'](_0x3d4de6[_0x0b09('0x32')][_0x0b09('0x37')]));_0x3b4ec1['attributes']=_0x3b4ec1[_0x0b09('0x36')][_0x0b09('0x38')]?_0x3b4ec1[_0x0b09('0x36')]:_0x637b2b[_0x0b09('0x31')];if(!_0x3d4de6['query'][_0x0b09('0x39')](_0x0b09('0x3a'))){_0x3b4ec1[_0x0b09('0x1e')]=qs[_0x0b09('0x1e')](_0x3d4de6[_0x0b09('0x32')][_0x0b09('0x1e')]);_0x3b4ec1[_0x0b09('0x20')]=qs[_0x0b09('0x20')](_0x3d4de6[_0x0b09('0x32')]['offset']);}_0x3b4ec1[_0x0b09('0x3b')]=qs['sort'](_0x3d4de6[_0x0b09('0x32')][_0x0b09('0x3c')]);_0x3b4ec1[_0x0b09('0x3d')]=qs[_0x0b09('0x34')](_[_0x0b09('0x3e')](_0x3d4de6[_0x0b09('0x32')],_0x637b2b[_0x0b09('0x34')]),_0x7a1d61);if(_0x3d4de6['query'][_0x0b09('0x3f')]){_0x3b4ec1[_0x0b09('0x3d')]=_[_0x0b09('0x40')](_0x3b4ec1[_0x0b09('0x3d')],{'$or':_[_0x0b09('0x2d')](_0x7a1d61,function(_0x176002){if(_0x176002[_0x0b09('0x30')]!=='VIRTUAL'){var _0x1abf81={};_0x1abf81[_0x176002['name']]={'$like':'%'+_0x3d4de6[_0x0b09('0x32')]['filter']+'%'};return _0x1abf81;}})});}_0x3b4ec1=_[_0x0b09('0x40')]({},_0x3b4ec1,_0x3d4de6['options']);var _0x521fd8={'where':_0x3b4ec1[_0x0b09('0x3d')]};return db[_0x0b09('0x2e')][_0x0b09('0x1f')](_0x521fd8)[_0x0b09('0x26')](function(_0x15da47){_0x23d2c9[_0x0b09('0x1f')]=_0x15da47;if(_0x3d4de6['query']['includeAll']){_0x3b4ec1[_0x0b09('0x41')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x0b09('0x42')](_0x3b4ec1);})[_0x0b09('0x26')](function(_0x6d481a){_0x23d2c9[_0x0b09('0x43')]=_0x6d481a;return _0x23d2c9;})[_0x0b09('0x26')](respondWithFilteredResult(_0x2e95ae,_0x3b4ec1))[_0x0b09('0x44')](handleError(_0x2e95ae,null));};exports[_0x0b09('0x45')]=function(_0x16f751,_0x40354a){var _0x22894d={'raw':![],'where':{'id':_0x16f751[_0x0b09('0x46')]['id']}},_0x372fa6={};_0x372fa6['model']=_['keys'](db[_0x0b09('0x2e')]['rawAttributes']);_0x372fa6[_0x0b09('0x32')]=_[_0x0b09('0x33')](_0x16f751[_0x0b09('0x32')]);_0x372fa6['filters']=_[_0x0b09('0x35')](_0x372fa6[_0x0b09('0x31')],_0x372fa6[_0x0b09('0x32')]);_0x22894d['attributes']=_[_0x0b09('0x35')](_0x372fa6[_0x0b09('0x31')],qs[_0x0b09('0x37')](_0x16f751[_0x0b09('0x32')][_0x0b09('0x37')]));_0x22894d[_0x0b09('0x36')]=_0x22894d[_0x0b09('0x36')]['length']?_0x22894d[_0x0b09('0x36')]:_0x372fa6[_0x0b09('0x31')];if(_0x16f751[_0x0b09('0x32')][_0x0b09('0x47')]){_0x22894d[_0x0b09('0x41')]=[{'all':!![]}];}_0x22894d=_['merge']({},_0x22894d,_0x16f751[_0x0b09('0x48')]);return db[_0x0b09('0x2e')][_0x0b09('0x49')](_0x22894d)[_0x0b09('0x26')](handleEntityNotFound(_0x40354a,null))[_0x0b09('0x26')](respondWithResult(_0x40354a,null))[_0x0b09('0x44')](handleError(_0x40354a,null));};exports[_0x0b09('0x4a')]=function(_0x3714ae,_0x261e64){return db['FreshsalesAccount'][_0x0b09('0x4a')](_0x3714ae[_0x0b09('0x4b')],{})[_0x0b09('0x26')](respondWithResult(_0x261e64,0xc9))[_0x0b09('0x44')](handleError(_0x261e64,null));};exports['update']=function(_0x1e6c50,_0x11a9b5){if(_0x1e6c50[_0x0b09('0x4b')]['id']){delete _0x1e6c50[_0x0b09('0x4b')]['id'];}return db[_0x0b09('0x2e')][_0x0b09('0x49')]({'where':{'id':_0x1e6c50['params']['id']}})['then'](handleEntityNotFound(_0x11a9b5,null))[_0x0b09('0x26')](saveUpdates(_0x1e6c50['body'],null))['then'](respondWithResult(_0x11a9b5,null))[_0x0b09('0x44')](handleError(_0x11a9b5,null));};exports[_0x0b09('0x27')]=function(_0x2d317b,_0x91d53f){return db[_0x0b09('0x2e')][_0x0b09('0x49')]({'where':{'id':_0x2d317b[_0x0b09('0x46')]['id']}})['then'](handleEntityNotFound(_0x91d53f,null))['then'](removeEntity(_0x91d53f,null))[_0x0b09('0x44')](handleError(_0x91d53f,null));};exports[_0x0b09('0x4c')]=function(_0x46c127,_0x2d661f,_0x59458c){var _0x250944={};var _0x205a31={};var _0x5b3524;var _0x4bc292;return db['FreshsalesAccount']['findOne']({'where':{'id':_0x46c127[_0x0b09('0x46')]['id']}})[_0x0b09('0x26')](handleEntityNotFound(_0x2d661f,null))[_0x0b09('0x26')](function(_0x2d93d4){if(_0x2d93d4){_0x5b3524=_0x2d93d4;_0x205a31[_0x0b09('0x31')]=_['keys'](db['FreshsalesConfiguration'][_0x0b09('0x2f')]);_0x205a31[_0x0b09('0x32')]=_[_0x0b09('0x33')](_0x46c127[_0x0b09('0x32')]);_0x205a31[_0x0b09('0x34')]=_[_0x0b09('0x35')](_0x205a31['model'],_0x205a31[_0x0b09('0x32')]);_0x250944[_0x0b09('0x36')]=_['intersection'](_0x205a31['model'],qs[_0x0b09('0x37')](_0x46c127[_0x0b09('0x32')]['fields']));_0x250944['attributes']=_0x250944[_0x0b09('0x36')][_0x0b09('0x38')]?_0x250944[_0x0b09('0x36')]:_0x205a31[_0x0b09('0x31')];_0x250944[_0x0b09('0x3b')]=qs['sort'](_0x46c127[_0x0b09('0x32')][_0x0b09('0x3c')]);_0x250944['where']=qs['filters'](_['pick'](_0x46c127[_0x0b09('0x32')],_0x205a31['filters']));if(_0x46c127['query'][_0x0b09('0x3f')]){_0x250944[_0x0b09('0x3d')]=_[_0x0b09('0x40')](_0x250944[_0x0b09('0x3d')],{'$or':_[_0x0b09('0x2d')](_0x250944[_0x0b09('0x36')],function(_0x39b990){var _0x551e1a={};_0x551e1a[_0x39b990]={'$like':'%'+_0x46c127[_0x0b09('0x32')][_0x0b09('0x3f')]+'%'};return _0x551e1a;})});}_0x250944=_[_0x0b09('0x40')]({},_0x250944,_0x46c127[_0x0b09('0x48')]);return _0x5b3524[_0x0b09('0x4c')](_0x250944);}})[_0x0b09('0x26')](function(_0x5771f1){if(_0x5771f1){_0x4bc292=_0x5771f1[_0x0b09('0x38')];if(!_0x46c127[_0x0b09('0x32')]['hasOwnProperty'](_0x0b09('0x3a'))){_0x250944[_0x0b09('0x1e')]=qs[_0x0b09('0x1e')](_0x46c127[_0x0b09('0x32')][_0x0b09('0x1e')]);_0x250944[_0x0b09('0x20')]=qs[_0x0b09('0x20')](_0x46c127['query'][_0x0b09('0x20')]);}return _0x5b3524[_0x0b09('0x4c')](_0x250944);}})[_0x0b09('0x26')](function(_0x168af2){if(_0x168af2){return _0x168af2?{'count':_0x4bc292,'rows':_0x168af2}:null;}})[_0x0b09('0x26')](respondWithResult(_0x2d661f,null))[_0x0b09('0x44')](handleError(_0x2d661f,null));};exports[_0x0b09('0x4d')]=function(_0x448185,_0x1fa833,_0x2e87f4){if(_0x448185['body']['id']){delete _0x448185['body']['id'];}return db['FreshsalesAccount'][_0x0b09('0x4e')]({'where':{'id':_0x448185[_0x0b09('0x46')]['id']}})[_0x0b09('0x26')](handleEntityNotFound(_0x1fa833,null))[_0x0b09('0x26')](function(_0x287f44){if(_0x287f44){_0x448185[_0x0b09('0x4b')][_0x0b09('0x4f')]=_0x287f44['id'];_0x448185[_0x0b09('0x4b')][_0x0b09('0x50')]=integrations[_0x0b09('0x51')](_0x448185[_0x0b09('0x4b')][_0x0b09('0x52')],_0x448185[_0x0b09('0x4b')][_0x0b09('0x30')]);_0x448185['body'][_0x0b09('0x53')]=integrations[_0x0b09('0x54')](_0x448185[_0x0b09('0x4b')][_0x0b09('0x52')],_0x448185['body'][_0x0b09('0x30')]);return db[_0x0b09('0x55')][_0x0b09('0x4a')](_0x448185[_0x0b09('0x4b')],{'include':[{'model':db[_0x0b09('0x56')],'as':'Subjects'},{'model':db[_0x0b09('0x56')],'as':_0x0b09('0x53')}]});}return null;})[_0x0b09('0x26')](respondWithResult(_0x1fa833,null))[_0x0b09('0x44')](handleError(_0x1fa833,null));};exports[_0x0b09('0x57')]=function(_0x515c74,_0x48cbd5,_0x57b628){var _0x2af4e4='';var _0x1301ff='';return db[_0x0b09('0x2e')][_0x0b09('0x4e')]({'where':{'id':_0x515c74[_0x0b09('0x46')]['id']},'attributes':['id',_0x0b09('0x58'),_0x0b09('0x59'),_0x0b09('0x5a')]})[_0x0b09('0x26')](handleEntityNotFound(_0x48cbd5,null))[_0x0b09('0x26')](function(_0x1647e1){if(_0x1647e1){_0x1301ff=_0x1647e1['username'];_0x2af4e4=_0x1647e1['remoteUri'];var _0x219188=_0x1647e1['remoteUri']['slice'](-0x1);if(_0x219188==='/'){_0x2af4e4=_0x2af4e4[_0x0b09('0x5b')](0x0,_0x2af4e4[_0x0b09('0x5c')](_0x219188));}return rp({'method':_0x0b09('0x5d'),'uri':util[_0x0b09('0x5e')](_0x0b09('0x5f'),_0x2af4e4,_0x0b09('0x60')),'headers':{'Authorization':_0x0b09('0x61')+_0x1647e1[_0x0b09('0x5a')]},'json':!![]});}})[_0x0b09('0x26')](function(_0x2ab554){if(_0x2ab554){var _0x58f209=_0x2ab554[_0x0b09('0x62')];var _0x4b2f06=![];var _0x7e135a=null;for(_0x7e135a=0x0;_0x7e135a<_0x58f209[_0x0b09('0x38')];_0x7e135a++){if(_0x58f209[_0x7e135a][_0x0b09('0x63')]===_0x1301ff){_0x4b2f06=!![];}}if(_0x4b2f06){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x0b09('0x64')});}}})[_0x0b09('0x26')](respondWithResult(_0x48cbd5,null))[_0x0b09('0x44')](function(_0x164a87){var _0xdf882d=_0x515c74[_0x0b09('0x32')]['test']?0x1f4:_0x164a87[_0x0b09('0x65')]||0x1f4;logger[_0x0b09('0x29')](_0x0b09('0x66'),_0x0b09('0x57'),_0xdf882d,JSON[_0x0b09('0x67')](_0x164a87));delete _0x164a87['name'];if(_0xdf882d===0x191){_0xdf882d=0x190;}_0x48cbd5[_0x0b09('0x1b')](_0xdf882d)[_0x0b09('0x2b')](_0x515c74['query']['test']?{'message':_0x0b09('0x68'),'statusCode':_0x164a87['statusCode']}:_0x164a87);});};
\ No newline at end of file
index 4e628b9..817611d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['request-promise','path','rimraf','./intFreshsalesAccount.attributes','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','moment'];(function(_0x57d232,_0x1eb10c){var _0x4c7e6d=function(_0x1080cd){while(--_0x1080cd){_0x57d232['push'](_0x57d232['shift']());}};_0x4c7e6d(++_0x1eb10c);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x14790f,_0x432b5f){_0x14790f=_0x14790f-0x0;var _0x5acc1f=_0x0a6b[_0x14790f];return _0x5acc1f;};'use strict';var _=require(_0xb0a6('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb0a6('0x1'));var BPromise=require('bluebird');var rp=require(_0xb0a6('0x2'));var fs=require('fs');var path=require(_0xb0a6('0x3'));var rimraf=require(_0xb0a6('0x4'));var config=require('../../config/environment');var attributes=require(_0xb0a6('0x5'));var integrations=require('../../components/integrations/configuration');module[_0xb0a6('0x6')]=function(_0x415e9e,_0x5e2d2d){return _0x415e9e[_0xb0a6('0x7')](_0xb0a6('0x8'),attributes,{'tableName':_0xb0a6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a37=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','define','FreshsalesAccount','lodash','util'];(function(_0x5a42d9,_0x2d397e){var _0x190cf2=function(_0x57430a){while(--_0x57430a){_0x5a42d9['push'](_0x5a42d9['shift']());}};_0x190cf2(++_0x2d397e);}(_0x1a37,0xb4));var _0x71a3=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x1a37[_0x6cf19c];return _0xce14f3;};'use strict';var _=require(_0x71a3('0x0'));var util=require(_0x71a3('0x1'));var logger=require(_0x71a3('0x2'))(_0x71a3('0x3'));var moment=require(_0x71a3('0x4'));var BPromise=require(_0x71a3('0x5'));var rp=require(_0x71a3('0x6'));var fs=require('fs');var path=require(_0x71a3('0x7'));var rimraf=require(_0x71a3('0x8'));var config=require(_0x71a3('0x9'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x71a3('0xa'));module['exports']=function(_0xd09f7,_0x45050a){return _0xd09f7[_0x71a3('0xb')](_0x71a3('0xc'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d487088..e5b70e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowFreshsalesAccount'];(function(_0x54b96d,_0xd4e8ed){var _0x63d2d5=function(_0x2d69e8){while(--_0x2d69e8){_0x54b96d['push'](_0x54b96d['shift']());}};_0x63d2d5(++_0xd4e8ed);}(_0xacf4,0xe7));var _0x4acf=function(_0x12755a,_0x4fb1a6){_0x12755a=_0x12755a-0x0;var _0x3ced44=_0xacf4[_0x12755a];return _0x3ced44;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}exports[_0x4acf('0x13')]=function(_0x240c00){var _0x4b1d93=this;return new Promise(function(_0x2a678b,_0x137302){return db[_0x4acf('0x14')][_0x4acf('0x15')]({'raw':_0x240c00[_0x4acf('0x16')]?_0x240c00[_0x4acf('0x16')][_0x4acf('0x17')]===undefined?!![]:![]:!![],'where':_0x240c00[_0x4acf('0x16')]?_0x240c00[_0x4acf('0x16')][_0x4acf('0x18')]||null:null,'attributes':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x19')]||null:null,'limit':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x1a')]||null:null,'include':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x240c00[_0x4acf('0x16')][_0x4acf('0x1b')],function(_0x53885f){return{'model':db[_0x53885f[_0x4acf('0x1d')]],'as':_0x53885f['as'],'attributes':_0x53885f[_0x4acf('0x19')],'include':_0x53885f['include']?_[_0x4acf('0x1c')](_0x53885f[_0x4acf('0x1b')],function(_0x52a84a){return{'model':db[_0x52a84a[_0x4acf('0x1d')]],'as':_0x52a84a['as'],'attributes':_0x52a84a[_0x4acf('0x19')],'include':_0x52a84a[_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x52a84a['include'],function(_0x50236d){return{'model':db[_0x50236d[_0x4acf('0x1d')]],'as':_0x50236d['as'],'attributes':_0x50236d[_0x4acf('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4acf('0xa')](function(_0x42c90c){logger[_0x4acf('0xb')](_0x4acf('0x13'),_0x240c00);logger[_0x4acf('0x1e')](_0x4acf('0x13'),_0x240c00,JSON[_0x4acf('0x1f')](_0x42c90c));_0x2a678b(_0x42c90c);})[_0x4acf('0x12')](function(_0x57989e){logger[_0x4acf('0xf')](_0x4acf('0x13'),_0x57989e[_0x4acf('0x10')],_0x240c00);_0x137302(_0x4b1d93[_0x4acf('0xf')](0x1f4,_0x57989e[_0x4acf('0x10')]));});});};exports[_0x4acf('0x20')]=function(_0x27384c){var _0x5d862f=this;return new Promise(function(_0x337b3c,_0x1d221b){return db[_0x4acf('0x14')]['find']({'raw':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')][_0x4acf('0x17')]===undefined?!![]:![]:!![],'where':_0x27384c[_0x4acf('0x16')]?_0x27384c['options'][_0x4acf('0x18')]||null:null,'attributes':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')]['attributes']||null:null,'include':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')][_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x27384c[_0x4acf('0x16')][_0x4acf('0x1b')],function(_0x490880){return{'model':db[_0x490880[_0x4acf('0x1d')]],'as':_0x490880['as'],'attributes':_0x490880[_0x4acf('0x19')],'include':_0x490880['include']?_[_0x4acf('0x1c')](_0x490880['include'],function(_0x4cd020){return{'model':db[_0x4cd020['model']],'as':_0x4cd020['as'],'attributes':_0x4cd020['attributes'],'include':_0x4cd020['include']?_['map'](_0x4cd020['include'],function(_0x3364dd){return{'model':db[_0x3364dd[_0x4acf('0x1d')]],'as':_0x3364dd['as'],'attributes':_0x3364dd['attributes']};}):[]};}):[]};}):[]:[]})[_0x4acf('0xa')](function(_0xbd0f92){logger[_0x4acf('0xb')](_0x4acf('0x20'),_0x27384c);logger[_0x4acf('0x1e')](_0x4acf('0x20'),_0x27384c,JSON[_0x4acf('0x1f')](_0xbd0f92));_0x337b3c(_0xbd0f92);})[_0x4acf('0x12')](function(_0x24465b){logger[_0x4acf('0xf')]('ShowFreshsalesAccount',_0x24465b['message'],_0x27384c);_0x1d221b(_0x5d862f[_0x4acf('0xf')](0x1f4,_0x24465b[_0x4acf('0x10')]));});});};
\ No newline at end of file
+var _0x3a6d=['client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','attributes','limit','include','model','map','debug','ShowFreshsalesAccount','find','raw','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x1f4666,_0x2e1f63){var _0x1e01d6=function(_0x231842){while(--_0x231842){_0x1f4666['push'](_0x1f4666['shift']());}};_0x1e01d6(++_0x2e1f63);}(_0x3a6d,0x143));var _0xd3a6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3a6d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd3a6('0x0'));var util=require(_0xd3a6('0x1'));var moment=require('moment');var BPromise=require(_0xd3a6('0x2'));var rs=require(_0xd3a6('0x3'));var fs=require('fs');var Redis=require(_0xd3a6('0x4'));var db=require(_0xd3a6('0x5'))['db'];var utils=require(_0xd3a6('0x6'));var logger=require('../../config/logger')(_0xd3a6('0x7'));var config=require(_0xd3a6('0x8'));var jayson=require(_0xd3a6('0x9'));var client=jayson[_0xd3a6('0xa')][_0xd3a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x282cb1,_0x58d83a,_0x121bd2){return new BPromise(function(_0x134dd3,_0x16858){return client[_0xd3a6('0xc')](_0x282cb1,_0x121bd2)[_0xd3a6('0xd')](function(_0xa67661){logger[_0xd3a6('0xe')](_0xd3a6('0xf'),_0x58d83a,_0xd3a6('0x10'));logger['debug'](_0xd3a6('0x11'),_0x58d83a,_0xd3a6('0x10'),JSON[_0xd3a6('0x12')](_0xa67661));if(_0xa67661[_0xd3a6('0x13')]){if(_0xa67661[_0xd3a6('0x13')]['code']===0x1f4){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);return _0x16858(_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);}logger[_0xd3a6('0x13')](_0xd3a6('0xf'),_0x58d83a,_0xa67661[_0xd3a6('0x13')]['message']);return _0x134dd3(_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);}else{logger[_0xd3a6('0xe')]('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0xd3a6('0x10'));_0x134dd3(_0xa67661[_0xd3a6('0x15')][_0xd3a6('0x14')]);}})['catch'](function(_0x3498d5){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0x3498d5);_0x16858(_0x3498d5);});});}exports[_0xd3a6('0x16')]=function(_0x8d1286){var _0x32683f=this;return new Promise(function(_0xbe58b4,_0x22fb05){return db[_0xd3a6('0x17')][_0xd3a6('0x18')]({'raw':_0x8d1286['options']?_0x8d1286[_0xd3a6('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x8d1286[_0xd3a6('0x19')]?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1a')]||null:null,'attributes':_0x8d1286[_0xd3a6('0x19')]?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1b')]||null:null,'limit':_0x8d1286['options']?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1c')]||null:null,'include':_0x8d1286['options']?_0x8d1286['options']['include']?_['map'](_0x8d1286['options'][_0xd3a6('0x1d')],function(_0x400982){return{'model':db[_0x400982[_0xd3a6('0x1e')]],'as':_0x400982['as'],'attributes':_0x400982['attributes'],'include':_0x400982[_0xd3a6('0x1d')]?_['map'](_0x400982[_0xd3a6('0x1d')],function(_0x16afc8){return{'model':db[_0x16afc8[_0xd3a6('0x1e')]],'as':_0x16afc8['as'],'attributes':_0x16afc8['attributes'],'include':_0x16afc8[_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0x16afc8[_0xd3a6('0x1d')],function(_0x219e32){return{'model':db[_0x219e32[_0xd3a6('0x1e')]],'as':_0x219e32['as'],'attributes':_0x219e32[_0xd3a6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x30df90){logger[_0xd3a6('0xe')](_0xd3a6('0x16'),_0x8d1286);logger[_0xd3a6('0x20')](_0xd3a6('0x16'),_0x8d1286,JSON[_0xd3a6('0x12')](_0x30df90));_0xbe58b4(_0x30df90);})['catch'](function(_0x535bd4){logger[_0xd3a6('0x13')](_0xd3a6('0x16'),_0x535bd4[_0xd3a6('0x14')],_0x8d1286);_0x22fb05(_0x32683f[_0xd3a6('0x13')](0x1f4,_0x535bd4['message']));});});};exports[_0xd3a6('0x21')]=function(_0xa4efd){var _0x4d322a=this;return new Promise(function(_0x14381c,_0x5d9867){return db[_0xd3a6('0x17')][_0xd3a6('0x22')]({'raw':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x23')]===undefined?!![]:![]:!![],'where':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd[_0xd3a6('0x19')]['where']||null:null,'attributes':_0xa4efd['options']?_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x1b')]||null:null,'include':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd['options'][_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x1d')],function(_0x3ebd0d){return{'model':db[_0x3ebd0d[_0xd3a6('0x1e')]],'as':_0x3ebd0d['as'],'attributes':_0x3ebd0d[_0xd3a6('0x1b')],'include':_0x3ebd0d[_0xd3a6('0x1d')]?_['map'](_0x3ebd0d[_0xd3a6('0x1d')],function(_0x41981c){return{'model':db[_0x41981c[_0xd3a6('0x1e')]],'as':_0x41981c['as'],'attributes':_0x41981c[_0xd3a6('0x1b')],'include':_0x41981c[_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0x41981c['include'],function(_0x16a30a){return{'model':db[_0x16a30a['model']],'as':_0x16a30a['as'],'attributes':_0x16a30a[_0xd3a6('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd3a6('0xd')](function(_0x180bb9){logger[_0xd3a6('0xe')]('ShowFreshsalesAccount',_0xa4efd);logger['debug'](_0xd3a6('0x21'),_0xa4efd,JSON[_0xd3a6('0x12')](_0x180bb9));_0x14381c(_0x180bb9);})[_0xd3a6('0x24')](function(_0x5188e1){logger[_0xd3a6('0x13')](_0xd3a6('0x21'),_0x5188e1['message'],_0xa4efd);_0x5d9867(_0x4d322a[_0xd3a6('0x13')](0x1f4,_0x5188e1['message']));});});};
\ No newline at end of file
index b542e37..a1bffcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b62=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','show','/:id/subjects','/:id/descriptions','getDescriptions','/:id/fields','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x1f2f64,_0x55ce4c){var _0x33b479=function(_0x3ad1fa){while(--_0x3ad1fa){_0x1f2f64['push'](_0x1f2f64['shift']());}};_0x33b479(++_0x55ce4c);}(_0x6b62,0xcc));var _0x26b6=function(_0xb3070e,_0x1fb7b0){_0xb3070e=_0xb3070e-0x0;var _0x468eb3=_0x6b62[_0xb3070e];return _0x468eb3;};'use strict';var multer=require(_0x26b6('0x0'));var util=require(_0x26b6('0x1'));var path=require(_0x26b6('0x2'));var timeout=require(_0x26b6('0x3'));var express=require(_0x26b6('0x4'));var router=express['Router']();var fs_extra=require(_0x26b6('0x5'));var auth=require(_0x26b6('0x6'));var interaction=require(_0x26b6('0x7'));var config=require(_0x26b6('0x8'));var controller=require(_0x26b6('0x9'));router[_0x26b6('0xa')]('/',auth[_0x26b6('0xb')](),controller[_0x26b6('0xc')]);router['get']('/:id',auth[_0x26b6('0xb')](),controller[_0x26b6('0xd')]);router['get'](_0x26b6('0xe'),auth[_0x26b6('0xb')](),controller['getSubjects']);router[_0x26b6('0xa')](_0x26b6('0xf'),auth[_0x26b6('0xb')](),controller[_0x26b6('0x10')]);router[_0x26b6('0xa')](_0x26b6('0x11'),auth[_0x26b6('0xb')](),controller['getFields']);router[_0x26b6('0x12')]('/',auth[_0x26b6('0xb')](),controller[_0x26b6('0x13')]);router[_0x26b6('0x14')](_0x26b6('0x15'),auth['isAuthenticated'](),controller[_0x26b6('0x16')]);router[_0x26b6('0x17')]('/:id',auth[_0x26b6('0xb')](),controller[_0x26b6('0x18')]);module[_0x26b6('0x19')]=router;
\ No newline at end of file
+var _0x3f63=['/:id','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getFields','post','delete','destroy','exports','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','index'];(function(_0xa14ad9,_0x2475c0){var _0x318a53=function(_0x26f5f5){while(--_0x26f5f5){_0xa14ad9['push'](_0xa14ad9['shift']());}};_0x318a53(++_0x2475c0);}(_0x3f63,0x11d));var _0x33f6=function(_0x2894f7,_0x37782d){_0x2894f7=_0x2894f7-0x0;var _0xd946bf=_0x3f63[_0x2894f7];return _0xd946bf;};'use strict';var multer=require(_0x33f6('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x33f6('0x1'));var router=express[_0x33f6('0x2')]();var fs_extra=require(_0x33f6('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x33f6('0x4'));var config=require(_0x33f6('0x5'));var controller=require(_0x33f6('0x6'));router[_0x33f6('0x7')]('/',auth['isAuthenticated'](),controller[_0x33f6('0x8')]);router[_0x33f6('0x7')](_0x33f6('0x9'),auth[_0x33f6('0xa')](),controller[_0x33f6('0xb')]);router[_0x33f6('0x7')](_0x33f6('0xc'),auth[_0x33f6('0xa')](),controller[_0x33f6('0xd')]);router[_0x33f6('0x7')](_0x33f6('0xe'),auth[_0x33f6('0xa')](),controller[_0x33f6('0xf')]);router[_0x33f6('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0x33f6('0x10')]);router[_0x33f6('0x11')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x33f6('0x9'),auth[_0x33f6('0xa')](),controller['update']);router[_0x33f6('0x12')](_0x33f6('0x9'),auth[_0x33f6('0xa')](),controller[_0x33f6('0x13')]);module[_0x33f6('0x14')]=router;
\ No newline at end of file
index 16532fa..f8fc5f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0357=['exports','STRING','sequelize'];(function(_0x4135a9,_0x6ae774){var _0x450d5e=function(_0x10df5e){while(--_0x10df5e){_0x4135a9['push'](_0x4135a9['shift']());}};_0x450d5e(++_0x6ae774);}(_0x0357,0xbf));var _0x7035=function(_0x1ac898,_0x19253b){_0x1ac898=_0x1ac898-0x0;var _0x681940=_0x0357[_0x1ac898];return _0x681940;};'use strict';var Sequelize=require(_0x7035('0x0'));module[_0x7035('0x1')]={'name':{'type':Sequelize[_0x7035('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xaa92=['exports','STRING','sequelize'];(function(_0x3d7d4f,_0x16f052){var _0x4a59ff=function(_0x444fdd){while(--_0x444fdd){_0x3d7d4f['push'](_0x3d7d4f['shift']());}};_0x4a59ff(++_0x16f052);}(_0xaa92,0xb0));var _0x2aa9=function(_0x4aac5a,_0x15b04c){_0x4aac5a=_0x4aac5a-0x0;var _0x42e7bc=_0xaa92[_0x4aac5a];return _0x42e7bc;};'use strict';var Sequelize=require(_0x2aa9('0x0'));module[_0x2aa9('0x1')]={'name':{'type':Sequelize[_0x2aa9('0x2')]},'description':{'type':Sequelize[_0x2aa9('0x2')]}};
\ No newline at end of file
index c50b768..1dd3524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5f=['FreshsalesField','rawAttributes','getDescriptions','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','end','error','name','index','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','FreshsalesConfiguration','includeAll','include','findAll','rows','show','create','body','catch','update','find','params','getSubjects','findOne'];(function(_0x2cc28a,_0x193b32){var _0x3aca97=function(_0x436ff7){while(--_0x436ff7){_0x2cc28a['push'](_0x2cc28a['shift']());}};_0x3aca97(++_0x193b32);}(_0xad5f,0x1a8));var _0xfad5=function(_0x3ab353,_0x5d5283){_0x3ab353=_0x3ab353-0x0;var _0x1e2285=_0xad5f[_0x3ab353];return _0x1e2285;};'use strict';var emlformat=require(_0xfad5('0x0'));var rimraf=require(_0xfad5('0x1'));var zipdir=require(_0xfad5('0x2'));var jsonpatch=require(_0xfad5('0x3'));var rp=require(_0xfad5('0x4'));var moment=require(_0xfad5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xfad5('0x6'));var util=require(_0xfad5('0x7'));var path=require(_0xfad5('0x8'));var sox=require(_0xfad5('0x9'));var csv=require(_0xfad5('0xa'));var ejs=require(_0xfad5('0xb'));var fs=require('fs');var fs_extra=require(_0xfad5('0xc'));var _=require('lodash');var squel=require(_0xfad5('0xd'));var crypto=require(_0xfad5('0xe'));var jsforce=require(_0xfad5('0xf'));var deskjs=require(_0xfad5('0x10'));var toCsv=require('to-csv');var querystring=require(_0xfad5('0x11'));var Papa=require(_0xfad5('0x12'));var Redis=require(_0xfad5('0x13'));var authService=require(_0xfad5('0x14'));var qs=require(_0xfad5('0x15'));var as=require(_0xfad5('0x16'));var hardwareService=require(_0xfad5('0x17'));var logger=require('../../config/logger')(_0xfad5('0x18'));var utils=require(_0xfad5('0x19'));var config=require(_0xfad5('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x28ac32,_0x665534){_0x665534=_0x665534||0xcc;return function(_0xb1a9f6){if(_0xb1a9f6){return _0x28ac32[_0xfad5('0x1b')](_0x665534);}return _0x28ac32[_0xfad5('0x1c')](_0x665534)['end']();};}function respondWithResult(_0x35911d,_0x8491fa){_0x8491fa=_0x8491fa||0xc8;return function(_0x162d27){if(_0x162d27){return _0x35911d[_0xfad5('0x1c')](_0x8491fa)[_0xfad5('0x1d')](_0x162d27);}};}function respondWithFilteredResult(_0x1cc46a,_0x446f3c){return function(_0x4df22a){if(_0x4df22a){var _0x5bc9f6=typeof _0x446f3c[_0xfad5('0x1e')]===_0xfad5('0x1f')&&typeof _0x446f3c[_0xfad5('0x20')]===_0xfad5('0x1f');var _0x3a5b8a=_0x4df22a[_0xfad5('0x21')];var _0x10ae77=_0x5bc9f6?0x0:_0x446f3c[_0xfad5('0x1e')];var _0x259766=_0x5bc9f6?_0x4df22a['count']:_0x446f3c['offset']+_0x446f3c[_0xfad5('0x20')];var _0x40f087;if(_0x259766>=_0x3a5b8a){_0x259766=_0x3a5b8a;_0x40f087=0xc8;}else{_0x40f087=0xce;}_0x1cc46a['status'](_0x40f087);return _0x1cc46a['set'](_0xfad5('0x22'),_0x10ae77+'-'+_0x259766+'/'+_0x3a5b8a)[_0xfad5('0x1d')](_0x4df22a);}return null;};}function patchUpdates(_0x5a8857){return function(_0x4d97fa){try{jsonpatch[_0xfad5('0x23')](_0x4d97fa,_0x5a8857,!![]);}catch(_0x58c3ae){return BPromise[_0xfad5('0x24')](_0x58c3ae);}return _0x4d97fa[_0xfad5('0x25')]();};}function saveUpdates(_0x46f4e7,_0x58e43d){return function(_0x354a31){if(_0x354a31){return _0x354a31['update'](_0x46f4e7)[_0xfad5('0x26')](function(_0x75dab5){return _0x75dab5;});}return null;};}function removeEntity(_0xb5395e,_0x16e903){return function(_0x1205fd){if(_0x1205fd){return _0x1205fd[_0xfad5('0x27')]()[_0xfad5('0x26')](function(){_0xb5395e[_0xfad5('0x1c')](0xcc)[_0xfad5('0x28')]();});}};}function handleEntityNotFound(_0x45c149,_0x3ea0d8){return function(_0x503b98){if(!_0x503b98){_0x45c149[_0xfad5('0x1b')](0x194);}return _0x503b98;};}function handleError(_0x295b71,_0xb0f462){_0xb0f462=_0xb0f462||0x1f4;return function(_0xc772e6){logger[_0xfad5('0x29')](_0xc772e6['stack']);if(_0xc772e6[_0xfad5('0x2a')]){delete _0xc772e6[_0xfad5('0x2a')];}_0x295b71[_0xfad5('0x1c')](_0xb0f462)['send'](_0xc772e6);};}exports[_0xfad5('0x2b')]=function(_0x504ae6,_0x24fe92){var _0x1ccdb0={},_0x30ce5b={},_0x4fddf5={'count':0x0,'rows':[]};var _0x24ccdd=_['map'](db['FreshsalesConfiguration']['rawAttributes'],function(_0x3fa9b6){return{'name':_0x3fa9b6[_0xfad5('0x2c')],'type':_0x3fa9b6[_0xfad5('0x2d')][_0xfad5('0x2e')]};});_0x30ce5b[_0xfad5('0x2f')]=_[_0xfad5('0x30')](_0x24ccdd,_0xfad5('0x2a'));_0x30ce5b[_0xfad5('0x31')]=_[_0xfad5('0x32')](_0x504ae6[_0xfad5('0x31')]);_0x30ce5b['filters']=_[_0xfad5('0x33')](_0x30ce5b[_0xfad5('0x2f')],_0x30ce5b[_0xfad5('0x31')]);_0x1ccdb0['attributes']=_[_0xfad5('0x33')](_0x30ce5b[_0xfad5('0x2f')],qs[_0xfad5('0x34')](_0x504ae6[_0xfad5('0x31')]['fields']));_0x1ccdb0[_0xfad5('0x35')]=_0x1ccdb0[_0xfad5('0x35')][_0xfad5('0x36')]?_0x1ccdb0[_0xfad5('0x35')]:_0x30ce5b[_0xfad5('0x2f')];if(!_0x504ae6['query'][_0xfad5('0x37')](_0xfad5('0x38'))){_0x1ccdb0[_0xfad5('0x20')]=qs['limit'](_0x504ae6[_0xfad5('0x31')][_0xfad5('0x20')]);_0x1ccdb0['offset']=qs['offset'](_0x504ae6[_0xfad5('0x31')][_0xfad5('0x1e')]);}_0x1ccdb0[_0xfad5('0x39')]=qs[_0xfad5('0x3a')](_0x504ae6[_0xfad5('0x31')][_0xfad5('0x3a')]);_0x1ccdb0[_0xfad5('0x3b')]=qs['filters'](_[_0xfad5('0x3c')](_0x504ae6[_0xfad5('0x31')],_0x30ce5b[_0xfad5('0x3d')]),_0x24ccdd);if(_0x504ae6[_0xfad5('0x31')][_0xfad5('0x3e')]){_0x1ccdb0['where']=_[_0xfad5('0x3f')](_0x1ccdb0[_0xfad5('0x3b')],{'$or':_['map'](_0x24ccdd,function(_0x365eb1){if(_0x365eb1[_0xfad5('0x2d')]!==_0xfad5('0x40')){var _0x59d4e4={};_0x59d4e4[_0x365eb1['name']]={'$like':'%'+_0x504ae6[_0xfad5('0x31')][_0xfad5('0x3e')]+'%'};return _0x59d4e4;}})});}_0x1ccdb0=_[_0xfad5('0x3f')]({},_0x1ccdb0,_0x504ae6[_0xfad5('0x41')]);var _0x3daddf={'where':_0x1ccdb0[_0xfad5('0x3b')]};return db[_0xfad5('0x42')][_0xfad5('0x21')](_0x3daddf)[_0xfad5('0x26')](function(_0x322bd9){_0x4fddf5[_0xfad5('0x21')]=_0x322bd9;if(_0x504ae6[_0xfad5('0x31')][_0xfad5('0x43')]){_0x1ccdb0[_0xfad5('0x44')]=[{'all':!![]}];}return db[_0xfad5('0x42')][_0xfad5('0x45')](_0x1ccdb0);})[_0xfad5('0x26')](function(_0x92e225){_0x4fddf5[_0xfad5('0x46')]=_0x92e225;return _0x4fddf5;})[_0xfad5('0x26')](respondWithFilteredResult(_0x24fe92,_0x1ccdb0))['catch'](handleError(_0x24fe92,null));};exports[_0xfad5('0x47')]=function(_0x425707,_0x598028){var _0x501ae6={'raw':![],'where':{'id':_0x425707['params']['id']}},_0x4dbb02={};_0x4dbb02[_0xfad5('0x2f')]=_['keys'](db[_0xfad5('0x42')]['rawAttributes']);_0x4dbb02[_0xfad5('0x31')]=_[_0xfad5('0x32')](_0x425707['query']);_0x4dbb02[_0xfad5('0x3d')]=_[_0xfad5('0x33')](_0x4dbb02['model'],_0x4dbb02['query']);_0x501ae6[_0xfad5('0x35')]=_['intersection'](_0x4dbb02['model'],qs[_0xfad5('0x34')](_0x425707['query'][_0xfad5('0x34')]));_0x501ae6[_0xfad5('0x35')]=_0x501ae6[_0xfad5('0x35')][_0xfad5('0x36')]?_0x501ae6[_0xfad5('0x35')]:_0x4dbb02['model'];if(_0x425707[_0xfad5('0x31')][_0xfad5('0x43')]){_0x501ae6[_0xfad5('0x44')]=[{'all':!![]}];}_0x501ae6=_['merge']({},_0x501ae6,_0x425707[_0xfad5('0x41')]);return db[_0xfad5('0x42')]['find'](_0x501ae6)[_0xfad5('0x26')](handleEntityNotFound(_0x598028,null))[_0xfad5('0x26')](respondWithResult(_0x598028,null))['catch'](handleError(_0x598028,null));};exports['create']=function(_0x48ec83,_0x3bebc5){return db[_0xfad5('0x42')][_0xfad5('0x48')](_0x48ec83[_0xfad5('0x49')],{})['then'](respondWithResult(_0x3bebc5,0xc9))[_0xfad5('0x4a')](handleError(_0x3bebc5,null));};exports[_0xfad5('0x4b')]=function(_0x1629d0,_0x24ab26){if(_0x1629d0[_0xfad5('0x49')]['id']){delete _0x1629d0[_0xfad5('0x49')]['id'];}return db[_0xfad5('0x42')][_0xfad5('0x4c')]({'where':{'id':_0x1629d0[_0xfad5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x24ab26,null))[_0xfad5('0x26')](saveUpdates(_0x1629d0[_0xfad5('0x49')],null))['then'](respondWithResult(_0x24ab26,null))[_0xfad5('0x4a')](handleError(_0x24ab26,null));};exports[_0xfad5('0x27')]=function(_0x408ba2,_0x3a1962){return db[_0xfad5('0x42')][_0xfad5('0x4c')]({'where':{'id':_0x408ba2['params']['id']}})[_0xfad5('0x26')](handleEntityNotFound(_0x3a1962,null))[_0xfad5('0x26')](removeEntity(_0x3a1962,null))[_0xfad5('0x4a')](handleError(_0x3a1962,null));};exports[_0xfad5('0x4e')]=function(_0xae387,_0x234371,_0x5b051b){var _0x490dd4={};var _0x1942d4={};var _0x408a52;var _0x1afe2c;return db['FreshsalesConfiguration'][_0xfad5('0x4f')]({'where':{'id':_0xae387['params']['id']}})['then'](handleEntityNotFound(_0x234371,null))[_0xfad5('0x26')](function(_0x1301cb){if(_0x1301cb){_0x408a52=_0x1301cb;_0x1942d4[_0xfad5('0x2f')]=_[_0xfad5('0x32')](db[_0xfad5('0x50')][_0xfad5('0x51')]);_0x1942d4[_0xfad5('0x31')]=_['keys'](_0xae387[_0xfad5('0x31')]);_0x1942d4[_0xfad5('0x3d')]=_[_0xfad5('0x33')](_0x1942d4[_0xfad5('0x2f')],_0x1942d4['query']);_0x490dd4['attributes']=_[_0xfad5('0x33')](_0x1942d4[_0xfad5('0x2f')],qs[_0xfad5('0x34')](_0xae387[_0xfad5('0x31')][_0xfad5('0x34')]));_0x490dd4['attributes']=_0x490dd4['attributes'][_0xfad5('0x36')]?_0x490dd4['attributes']:_0x1942d4[_0xfad5('0x2f')];_0x490dd4[_0xfad5('0x39')]=qs[_0xfad5('0x3a')](_0xae387[_0xfad5('0x31')][_0xfad5('0x3a')]);_0x490dd4['where']=qs[_0xfad5('0x3d')](_[_0xfad5('0x3c')](_0xae387[_0xfad5('0x31')],_0x1942d4[_0xfad5('0x3d')]));if(_0xae387[_0xfad5('0x31')]['filter']){_0x490dd4[_0xfad5('0x3b')]=_['merge'](_0x490dd4['where'],{'$or':_[_0xfad5('0x30')](_0x490dd4[_0xfad5('0x35')],function(_0x9b7584){var _0x5100bf={};_0x5100bf[_0x9b7584]={'$like':'%'+_0xae387[_0xfad5('0x31')][_0xfad5('0x3e')]+'%'};return _0x5100bf;})});}_0x490dd4=_[_0xfad5('0x3f')]({},_0x490dd4,_0xae387['options']);return _0x408a52[_0xfad5('0x4e')](_0x490dd4);}})[_0xfad5('0x26')](function(_0x1a7f8f){if(_0x1a7f8f){_0x1afe2c=_0x1a7f8f[_0xfad5('0x36')];if(!_0xae387[_0xfad5('0x31')][_0xfad5('0x37')](_0xfad5('0x38'))){_0x490dd4[_0xfad5('0x20')]=qs[_0xfad5('0x20')](_0xae387[_0xfad5('0x31')][_0xfad5('0x20')]);_0x490dd4['offset']=qs[_0xfad5('0x1e')](_0xae387[_0xfad5('0x31')][_0xfad5('0x1e')]);}return _0x408a52[_0xfad5('0x4e')](_0x490dd4);}})['then'](function(_0x257118){if(_0x257118){return _0x257118?{'count':_0x1afe2c,'rows':_0x257118}:null;}})['then'](respondWithResult(_0x234371,null))[_0xfad5('0x4a')](handleError(_0x234371,null));};exports[_0xfad5('0x52')]=function(_0x13a60d,_0x221f56,_0x1bcfe9){var _0x5d3135={};var _0xe2ddbc={};var _0x2055b4;var _0x4bcf0a;return db['FreshsalesConfiguration'][_0xfad5('0x4f')]({'where':{'id':_0x13a60d[_0xfad5('0x4d')]['id']}})[_0xfad5('0x26')](handleEntityNotFound(_0x221f56,null))['then'](function(_0x43e4ee){if(_0x43e4ee){_0x2055b4=_0x43e4ee;_0xe2ddbc[_0xfad5('0x2f')]=_[_0xfad5('0x32')](db[_0xfad5('0x50')][_0xfad5('0x51')]);_0xe2ddbc[_0xfad5('0x31')]=_['keys'](_0x13a60d[_0xfad5('0x31')]);_0xe2ddbc[_0xfad5('0x3d')]=_[_0xfad5('0x33')](_0xe2ddbc[_0xfad5('0x2f')],_0xe2ddbc[_0xfad5('0x31')]);_0x5d3135['attributes']=_[_0xfad5('0x33')](_0xe2ddbc['model'],qs[_0xfad5('0x34')](_0x13a60d[_0xfad5('0x31')][_0xfad5('0x34')]));_0x5d3135[_0xfad5('0x35')]=_0x5d3135[_0xfad5('0x35')][_0xfad5('0x36')]?_0x5d3135[_0xfad5('0x35')]:_0xe2ddbc['model'];_0x5d3135[_0xfad5('0x39')]=qs[_0xfad5('0x3a')](_0x13a60d[_0xfad5('0x31')][_0xfad5('0x3a')]);_0x5d3135[_0xfad5('0x3b')]=qs[_0xfad5('0x3d')](_['pick'](_0x13a60d[_0xfad5('0x31')],_0xe2ddbc['filters']));if(_0x13a60d[_0xfad5('0x31')]['filter']){_0x5d3135['where']=_[_0xfad5('0x3f')](_0x5d3135['where'],{'$or':_[_0xfad5('0x30')](_0x5d3135[_0xfad5('0x35')],function(_0x2534b5){var _0x315c99={};_0x315c99[_0x2534b5]={'$like':'%'+_0x13a60d[_0xfad5('0x31')][_0xfad5('0x3e')]+'%'};return _0x315c99;})});}_0x5d3135=_[_0xfad5('0x3f')]({},_0x5d3135,_0x13a60d[_0xfad5('0x41')]);return _0x2055b4[_0xfad5('0x52')](_0x5d3135);}})[_0xfad5('0x26')](function(_0xe93014){if(_0xe93014){_0x4bcf0a=_0xe93014[_0xfad5('0x36')];if(!_0x13a60d[_0xfad5('0x31')][_0xfad5('0x37')]('nolimit')){_0x5d3135[_0xfad5('0x20')]=qs[_0xfad5('0x20')](_0x13a60d['query'][_0xfad5('0x20')]);_0x5d3135['offset']=qs['offset'](_0x13a60d[_0xfad5('0x31')][_0xfad5('0x1e')]);}return _0x2055b4[_0xfad5('0x52')](_0x5d3135);}})[_0xfad5('0x26')](function(_0x10ba19){if(_0x10ba19){return _0x10ba19?{'count':_0x4bcf0a,'rows':_0x10ba19}:null;}})[_0xfad5('0x26')](respondWithResult(_0x221f56,null))[_0xfad5('0x4a')](handleError(_0x221f56,null));};exports['getFields']=function(_0x43cef2,_0x14fe15,_0x37f0ff){var _0x880ac8={};var _0xe1f7fe={};var _0x2bb09e;var _0x19c809;return db[_0xfad5('0x42')][_0xfad5('0x4f')]({'where':{'id':_0x43cef2['params']['id']}})[_0xfad5('0x26')](handleEntityNotFound(_0x14fe15,null))[_0xfad5('0x26')](function(_0x561fe2){if(_0x561fe2){_0x2bb09e=_0x561fe2;_0xe1f7fe['model']=_[_0xfad5('0x32')](db[_0xfad5('0x50')][_0xfad5('0x51')]);_0xe1f7fe[_0xfad5('0x31')]=_['keys'](_0x43cef2[_0xfad5('0x31')]);_0xe1f7fe[_0xfad5('0x3d')]=_[_0xfad5('0x33')](_0xe1f7fe['model'],_0xe1f7fe['query']);_0x880ac8['attributes']=_[_0xfad5('0x33')](_0xe1f7fe[_0xfad5('0x2f')],qs[_0xfad5('0x34')](_0x43cef2['query'][_0xfad5('0x34')]));_0x880ac8[_0xfad5('0x35')]=_0x880ac8[_0xfad5('0x35')][_0xfad5('0x36')]?_0x880ac8[_0xfad5('0x35')]:_0xe1f7fe[_0xfad5('0x2f')];_0x880ac8[_0xfad5('0x39')]=qs[_0xfad5('0x3a')](_0x43cef2[_0xfad5('0x31')][_0xfad5('0x3a')]);_0x880ac8[_0xfad5('0x3b')]=qs['filters'](_[_0xfad5('0x3c')](_0x43cef2[_0xfad5('0x31')],_0xe1f7fe[_0xfad5('0x3d')]));if(_0x43cef2[_0xfad5('0x31')][_0xfad5('0x3e')]){_0x880ac8['where']=_['merge'](_0x880ac8['where'],{'$or':_[_0xfad5('0x30')](_0x880ac8[_0xfad5('0x35')],function(_0x54c34a){var _0x2f552c={};_0x2f552c[_0x54c34a]={'$like':'%'+_0x43cef2[_0xfad5('0x31')][_0xfad5('0x3e')]+'%'};return _0x2f552c;})});}_0x880ac8=_['merge']({},_0x880ac8,_0x43cef2[_0xfad5('0x41')]);return _0x2bb09e[_0xfad5('0x53')](_0x880ac8);}})[_0xfad5('0x26')](function(_0x3758a2){if(_0x3758a2){_0x19c809=_0x3758a2[_0xfad5('0x36')];if(!_0x43cef2[_0xfad5('0x31')]['hasOwnProperty'](_0xfad5('0x38'))){_0x880ac8['limit']=qs[_0xfad5('0x20')](_0x43cef2[_0xfad5('0x31')][_0xfad5('0x20')]);_0x880ac8[_0xfad5('0x1e')]=qs[_0xfad5('0x1e')](_0x43cef2[_0xfad5('0x31')]['offset']);}return _0x2bb09e[_0xfad5('0x53')](_0x880ac8);}})[_0xfad5('0x26')](function(_0x1fef29){if(_0x1fef29){return _0x1fef29?{'count':_0x19c809,'rows':_0x1fef29}:null;}})[_0xfad5('0x26')](respondWithResult(_0x14fe15,null))[_0xfad5('0x4a')](handleError(_0x14fe15,null));};
\ No newline at end of file
+var _0x0a7d=['update','getSubjects','findOne','FreshsalesField','getDescriptions','hasOwnProperty','getFields','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','offset','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','params','find','catch','create','body'];(function(_0x56d7f1,_0x4d270a){var _0x48b4d7=function(_0x271daf){while(--_0x271daf){_0x56d7f1['push'](_0x56d7f1['shift']());}};_0x48b4d7(++_0x4d270a);}(_0x0a7d,0x143));var _0xd0a7=function(_0x4e6eb2,_0x16a451){_0x4e6eb2=_0x4e6eb2-0x0;var _0x4e0c1c=_0x0a7d[_0x4e6eb2];return _0x4e0c1c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd0a7('0x0'));var zipdir=require(_0xd0a7('0x1'));var jsonpatch=require(_0xd0a7('0x2'));var rp=require(_0xd0a7('0x3'));var moment=require(_0xd0a7('0x4'));var BPromise=require(_0xd0a7('0x5'));var Mustache=require('mustache');var util=require(_0xd0a7('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd0a7('0x7'));var fs=require('fs');var fs_extra=require(_0xd0a7('0x8'));var _=require(_0xd0a7('0x9'));var squel=require(_0xd0a7('0xa'));var crypto=require(_0xd0a7('0xb'));var jsforce=require(_0xd0a7('0xc'));var deskjs=require(_0xd0a7('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd0a7('0xe'));var Redis=require(_0xd0a7('0xf'));var authService=require(_0xd0a7('0x10'));var qs=require(_0xd0a7('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd0a7('0x12'));var logger=require('../../config/logger')(_0xd0a7('0x13'));var utils=require(_0xd0a7('0x14'));var config=require(_0xd0a7('0x15'));var licenseUtil=require(_0xd0a7('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a6526,_0x5ca47b){_0x5ca47b=_0x5ca47b||0xcc;return function(_0x557903){if(_0x557903){return _0x1a6526[_0xd0a7('0x17')](_0x5ca47b);}return _0x1a6526[_0xd0a7('0x18')](_0x5ca47b)[_0xd0a7('0x19')]();};}function respondWithResult(_0x398486,_0x5b6293){_0x5b6293=_0x5b6293||0xc8;return function(_0x252e34){if(_0x252e34){return _0x398486[_0xd0a7('0x18')](_0x5b6293)['json'](_0x252e34);}};}function respondWithFilteredResult(_0x29089d,_0x3f83e4){return function(_0x11ffd8){if(_0x11ffd8){var _0x2ff617=typeof _0x3f83e4['offset']==='undefined'&&typeof _0x3f83e4[_0xd0a7('0x1a')]===_0xd0a7('0x1b');var _0x3ebe54=_0x11ffd8[_0xd0a7('0x1c')];var _0x606955=_0x2ff617?0x0:_0x3f83e4['offset'];var _0x32f853=_0x2ff617?_0x11ffd8[_0xd0a7('0x1c')]:_0x3f83e4['offset']+_0x3f83e4[_0xd0a7('0x1a')];var _0x54f4d2;if(_0x32f853>=_0x3ebe54){_0x32f853=_0x3ebe54;_0x54f4d2=0xc8;}else{_0x54f4d2=0xce;}_0x29089d[_0xd0a7('0x18')](_0x54f4d2);return _0x29089d[_0xd0a7('0x1d')](_0xd0a7('0x1e'),_0x606955+'-'+_0x32f853+'/'+_0x3ebe54)[_0xd0a7('0x1f')](_0x11ffd8);}return null;};}function patchUpdates(_0x14f91c){return function(_0x385749){try{jsonpatch[_0xd0a7('0x20')](_0x385749,_0x14f91c,!![]);}catch(_0x4ee172){return BPromise[_0xd0a7('0x21')](_0x4ee172);}return _0x385749[_0xd0a7('0x22')]();};}function saveUpdates(_0x4cabbe,_0x3cd23c){return function(_0x115ed9){if(_0x115ed9){return _0x115ed9['update'](_0x4cabbe)[_0xd0a7('0x23')](function(_0x473510){return _0x473510;});}return null;};}function removeEntity(_0x285776,_0x3a1dfe){return function(_0x3a9c2f){if(_0x3a9c2f){return _0x3a9c2f[_0xd0a7('0x24')]()['then'](function(){_0x285776[_0xd0a7('0x18')](0xcc)[_0xd0a7('0x19')]();});}};}function handleEntityNotFound(_0x565974,_0x57c90b){return function(_0x2aa0c6){if(!_0x2aa0c6){_0x565974['sendStatus'](0x194);}return _0x2aa0c6;};}function handleError(_0xe79d52,_0x5c837e){_0x5c837e=_0x5c837e||0x1f4;return function(_0x1a204f){logger[_0xd0a7('0x25')](_0x1a204f[_0xd0a7('0x26')]);if(_0x1a204f[_0xd0a7('0x27')]){delete _0x1a204f[_0xd0a7('0x27')];}_0xe79d52[_0xd0a7('0x18')](_0x5c837e)[_0xd0a7('0x28')](_0x1a204f);};}exports[_0xd0a7('0x29')]=function(_0x2f6d43,_0x51806c){var _0x264604={},_0x52295d={},_0x325258={'count':0x0,'rows':[]};var _0x42bc30=_[_0xd0a7('0x2a')](db[_0xd0a7('0x2b')][_0xd0a7('0x2c')],function(_0x4bf38b){return{'name':_0x4bf38b['fieldName'],'type':_0x4bf38b[_0xd0a7('0x2d')][_0xd0a7('0x2e')]};});_0x52295d['model']=_[_0xd0a7('0x2a')](_0x42bc30,_0xd0a7('0x27'));_0x52295d[_0xd0a7('0x2f')]=_[_0xd0a7('0x30')](_0x2f6d43['query']);_0x52295d[_0xd0a7('0x31')]=_[_0xd0a7('0x32')](_0x52295d[_0xd0a7('0x33')],_0x52295d[_0xd0a7('0x2f')]);_0x264604['attributes']=_[_0xd0a7('0x32')](_0x52295d['model'],qs[_0xd0a7('0x34')](_0x2f6d43[_0xd0a7('0x2f')][_0xd0a7('0x34')]));_0x264604[_0xd0a7('0x35')]=_0x264604[_0xd0a7('0x35')][_0xd0a7('0x36')]?_0x264604[_0xd0a7('0x35')]:_0x52295d[_0xd0a7('0x33')];if(!_0x2f6d43[_0xd0a7('0x2f')]['hasOwnProperty'](_0xd0a7('0x37'))){_0x264604['limit']=qs[_0xd0a7('0x1a')](_0x2f6d43[_0xd0a7('0x2f')][_0xd0a7('0x1a')]);_0x264604[_0xd0a7('0x38')]=qs['offset'](_0x2f6d43[_0xd0a7('0x2f')][_0xd0a7('0x38')]);}_0x264604[_0xd0a7('0x39')]=qs[_0xd0a7('0x3a')](_0x2f6d43[_0xd0a7('0x2f')][_0xd0a7('0x3a')]);_0x264604[_0xd0a7('0x3b')]=qs[_0xd0a7('0x31')](_[_0xd0a7('0x3c')](_0x2f6d43[_0xd0a7('0x2f')],_0x52295d['filters']),_0x42bc30);if(_0x2f6d43[_0xd0a7('0x2f')]['filter']){_0x264604[_0xd0a7('0x3b')]=_[_0xd0a7('0x3d')](_0x264604['where'],{'$or':_[_0xd0a7('0x2a')](_0x42bc30,function(_0x49d6b5){if(_0x49d6b5[_0xd0a7('0x2d')]!==_0xd0a7('0x3e')){var _0x318c45={};_0x318c45[_0x49d6b5[_0xd0a7('0x27')]]={'$like':'%'+_0x2f6d43[_0xd0a7('0x2f')][_0xd0a7('0x3f')]+'%'};return _0x318c45;}})});}_0x264604=_[_0xd0a7('0x3d')]({},_0x264604,_0x2f6d43[_0xd0a7('0x40')]);var _0x1dadf6={'where':_0x264604[_0xd0a7('0x3b')]};return db[_0xd0a7('0x2b')][_0xd0a7('0x1c')](_0x1dadf6)[_0xd0a7('0x23')](function(_0x3a6434){_0x325258['count']=_0x3a6434;if(_0x2f6d43[_0xd0a7('0x2f')][_0xd0a7('0x41')]){_0x264604['include']=[{'all':!![]}];}return db[_0xd0a7('0x2b')]['findAll'](_0x264604);})[_0xd0a7('0x23')](function(_0x2c2898){_0x325258['rows']=_0x2c2898;return _0x325258;})['then'](respondWithFilteredResult(_0x51806c,_0x264604))['catch'](handleError(_0x51806c,null));};exports[_0xd0a7('0x42')]=function(_0x1cf292,_0x286379){var _0x34d025={'raw':![],'where':{'id':_0x1cf292[_0xd0a7('0x43')]['id']}},_0x73f85={};_0x73f85[_0xd0a7('0x33')]=_[_0xd0a7('0x30')](db[_0xd0a7('0x2b')][_0xd0a7('0x2c')]);_0x73f85['query']=_[_0xd0a7('0x30')](_0x1cf292[_0xd0a7('0x2f')]);_0x73f85[_0xd0a7('0x31')]=_[_0xd0a7('0x32')](_0x73f85[_0xd0a7('0x33')],_0x73f85['query']);_0x34d025['attributes']=_[_0xd0a7('0x32')](_0x73f85[_0xd0a7('0x33')],qs['fields'](_0x1cf292[_0xd0a7('0x2f')]['fields']));_0x34d025[_0xd0a7('0x35')]=_0x34d025[_0xd0a7('0x35')]['length']?_0x34d025[_0xd0a7('0x35')]:_0x73f85['model'];if(_0x1cf292[_0xd0a7('0x2f')][_0xd0a7('0x41')]){_0x34d025['include']=[{'all':!![]}];}_0x34d025=_[_0xd0a7('0x3d')]({},_0x34d025,_0x1cf292['options']);return db[_0xd0a7('0x2b')][_0xd0a7('0x44')](_0x34d025)[_0xd0a7('0x23')](handleEntityNotFound(_0x286379,null))[_0xd0a7('0x23')](respondWithResult(_0x286379,null))[_0xd0a7('0x45')](handleError(_0x286379,null));};exports[_0xd0a7('0x46')]=function(_0x4b633a,_0x4bce63){return db['FreshsalesConfiguration'][_0xd0a7('0x46')](_0x4b633a[_0xd0a7('0x47')],{})[_0xd0a7('0x23')](respondWithResult(_0x4bce63,0xc9))[_0xd0a7('0x45')](handleError(_0x4bce63,null));};exports[_0xd0a7('0x48')]=function(_0x368265,_0x3cc28d){if(_0x368265[_0xd0a7('0x47')]['id']){delete _0x368265[_0xd0a7('0x47')]['id'];}return db['FreshsalesConfiguration'][_0xd0a7('0x44')]({'where':{'id':_0x368265['params']['id']}})[_0xd0a7('0x23')](handleEntityNotFound(_0x3cc28d,null))[_0xd0a7('0x23')](saveUpdates(_0x368265['body'],null))[_0xd0a7('0x23')](respondWithResult(_0x3cc28d,null))[_0xd0a7('0x45')](handleError(_0x3cc28d,null));};exports[_0xd0a7('0x24')]=function(_0x2e921e,_0x3b6894){return db[_0xd0a7('0x2b')]['find']({'where':{'id':_0x2e921e[_0xd0a7('0x43')]['id']}})[_0xd0a7('0x23')](handleEntityNotFound(_0x3b6894,null))['then'](removeEntity(_0x3b6894,null))[_0xd0a7('0x45')](handleError(_0x3b6894,null));};exports[_0xd0a7('0x49')]=function(_0x35fd41,_0x307bc2,_0x3bf8f8){var _0x4b54cc={};var _0x14a919={};var _0x4abbfa;var _0x1d7a38;return db[_0xd0a7('0x2b')][_0xd0a7('0x4a')]({'where':{'id':_0x35fd41[_0xd0a7('0x43')]['id']}})['then'](handleEntityNotFound(_0x307bc2,null))[_0xd0a7('0x23')](function(_0x10f4fe){if(_0x10f4fe){_0x4abbfa=_0x10f4fe;_0x14a919[_0xd0a7('0x33')]=_[_0xd0a7('0x30')](db[_0xd0a7('0x4b')][_0xd0a7('0x2c')]);_0x14a919[_0xd0a7('0x2f')]=_[_0xd0a7('0x30')](_0x35fd41['query']);_0x14a919[_0xd0a7('0x31')]=_[_0xd0a7('0x32')](_0x14a919[_0xd0a7('0x33')],_0x14a919[_0xd0a7('0x2f')]);_0x4b54cc['attributes']=_['intersection'](_0x14a919[_0xd0a7('0x33')],qs[_0xd0a7('0x34')](_0x35fd41[_0xd0a7('0x2f')]['fields']));_0x4b54cc[_0xd0a7('0x35')]=_0x4b54cc[_0xd0a7('0x35')][_0xd0a7('0x36')]?_0x4b54cc[_0xd0a7('0x35')]:_0x14a919[_0xd0a7('0x33')];_0x4b54cc[_0xd0a7('0x39')]=qs[_0xd0a7('0x3a')](_0x35fd41[_0xd0a7('0x2f')][_0xd0a7('0x3a')]);_0x4b54cc[_0xd0a7('0x3b')]=qs[_0xd0a7('0x31')](_[_0xd0a7('0x3c')](_0x35fd41[_0xd0a7('0x2f')],_0x14a919['filters']));if(_0x35fd41[_0xd0a7('0x2f')][_0xd0a7('0x3f')]){_0x4b54cc['where']=_[_0xd0a7('0x3d')](_0x4b54cc[_0xd0a7('0x3b')],{'$or':_[_0xd0a7('0x2a')](_0x4b54cc[_0xd0a7('0x35')],function(_0x1636ba){var _0x1db822={};_0x1db822[_0x1636ba]={'$like':'%'+_0x35fd41['query'][_0xd0a7('0x3f')]+'%'};return _0x1db822;})});}_0x4b54cc=_[_0xd0a7('0x3d')]({},_0x4b54cc,_0x35fd41['options']);return _0x4abbfa[_0xd0a7('0x49')](_0x4b54cc);}})[_0xd0a7('0x23')](function(_0x388750){if(_0x388750){_0x1d7a38=_0x388750[_0xd0a7('0x36')];if(!_0x35fd41[_0xd0a7('0x2f')]['hasOwnProperty'](_0xd0a7('0x37'))){_0x4b54cc[_0xd0a7('0x1a')]=qs[_0xd0a7('0x1a')](_0x35fd41[_0xd0a7('0x2f')][_0xd0a7('0x1a')]);_0x4b54cc[_0xd0a7('0x38')]=qs[_0xd0a7('0x38')](_0x35fd41[_0xd0a7('0x2f')][_0xd0a7('0x38')]);}return _0x4abbfa[_0xd0a7('0x49')](_0x4b54cc);}})[_0xd0a7('0x23')](function(_0x139f91){if(_0x139f91){return _0x139f91?{'count':_0x1d7a38,'rows':_0x139f91}:null;}})[_0xd0a7('0x23')](respondWithResult(_0x307bc2,null))[_0xd0a7('0x45')](handleError(_0x307bc2,null));};exports[_0xd0a7('0x4c')]=function(_0x48fc06,_0x2bae91,_0x151b36){var _0x198479={};var _0x4d077e={};var _0x379606;var _0x1573c2;return db[_0xd0a7('0x2b')][_0xd0a7('0x4a')]({'where':{'id':_0x48fc06[_0xd0a7('0x43')]['id']}})['then'](handleEntityNotFound(_0x2bae91,null))[_0xd0a7('0x23')](function(_0x2b1694){if(_0x2b1694){_0x379606=_0x2b1694;_0x4d077e['model']=_[_0xd0a7('0x30')](db['FreshsalesField'][_0xd0a7('0x2c')]);_0x4d077e[_0xd0a7('0x2f')]=_[_0xd0a7('0x30')](_0x48fc06[_0xd0a7('0x2f')]);_0x4d077e[_0xd0a7('0x31')]=_[_0xd0a7('0x32')](_0x4d077e['model'],_0x4d077e[_0xd0a7('0x2f')]);_0x198479[_0xd0a7('0x35')]=_[_0xd0a7('0x32')](_0x4d077e[_0xd0a7('0x33')],qs[_0xd0a7('0x34')](_0x48fc06['query'][_0xd0a7('0x34')]));_0x198479[_0xd0a7('0x35')]=_0x198479[_0xd0a7('0x35')][_0xd0a7('0x36')]?_0x198479['attributes']:_0x4d077e[_0xd0a7('0x33')];_0x198479[_0xd0a7('0x39')]=qs['sort'](_0x48fc06[_0xd0a7('0x2f')][_0xd0a7('0x3a')]);_0x198479[_0xd0a7('0x3b')]=qs['filters'](_[_0xd0a7('0x3c')](_0x48fc06[_0xd0a7('0x2f')],_0x4d077e[_0xd0a7('0x31')]));if(_0x48fc06[_0xd0a7('0x2f')][_0xd0a7('0x3f')]){_0x198479[_0xd0a7('0x3b')]=_[_0xd0a7('0x3d')](_0x198479['where'],{'$or':_['map'](_0x198479[_0xd0a7('0x35')],function(_0x45e1bb){var _0x4518cc={};_0x4518cc[_0x45e1bb]={'$like':'%'+_0x48fc06['query'][_0xd0a7('0x3f')]+'%'};return _0x4518cc;})});}_0x198479=_['merge']({},_0x198479,_0x48fc06[_0xd0a7('0x40')]);return _0x379606[_0xd0a7('0x4c')](_0x198479);}})[_0xd0a7('0x23')](function(_0x4a59ff){if(_0x4a59ff){_0x1573c2=_0x4a59ff[_0xd0a7('0x36')];if(!_0x48fc06[_0xd0a7('0x2f')][_0xd0a7('0x4d')](_0xd0a7('0x37'))){_0x198479[_0xd0a7('0x1a')]=qs[_0xd0a7('0x1a')](_0x48fc06[_0xd0a7('0x2f')]['limit']);_0x198479[_0xd0a7('0x38')]=qs['offset'](_0x48fc06[_0xd0a7('0x2f')]['offset']);}return _0x379606[_0xd0a7('0x4c')](_0x198479);}})['then'](function(_0x1abe41){if(_0x1abe41){return _0x1abe41?{'count':_0x1573c2,'rows':_0x1abe41}:null;}})[_0xd0a7('0x23')](respondWithResult(_0x2bae91,null))[_0xd0a7('0x45')](handleError(_0x2bae91,null));};exports['getFields']=function(_0x216b23,_0x5812fe,_0x550666){var _0x5e5650={};var _0x535b5e={};var _0x31fc1c;var _0x482eea;return db['FreshsalesConfiguration'][_0xd0a7('0x4a')]({'where':{'id':_0x216b23[_0xd0a7('0x43')]['id']}})[_0xd0a7('0x23')](handleEntityNotFound(_0x5812fe,null))['then'](function(_0xb18750){if(_0xb18750){_0x31fc1c=_0xb18750;_0x535b5e[_0xd0a7('0x33')]=_[_0xd0a7('0x30')](db[_0xd0a7('0x4b')][_0xd0a7('0x2c')]);_0x535b5e['query']=_['keys'](_0x216b23[_0xd0a7('0x2f')]);_0x535b5e[_0xd0a7('0x31')]=_[_0xd0a7('0x32')](_0x535b5e[_0xd0a7('0x33')],_0x535b5e[_0xd0a7('0x2f')]);_0x5e5650[_0xd0a7('0x35')]=_[_0xd0a7('0x32')](_0x535b5e[_0xd0a7('0x33')],qs[_0xd0a7('0x34')](_0x216b23[_0xd0a7('0x2f')]['fields']));_0x5e5650['attributes']=_0x5e5650[_0xd0a7('0x35')][_0xd0a7('0x36')]?_0x5e5650[_0xd0a7('0x35')]:_0x535b5e[_0xd0a7('0x33')];_0x5e5650[_0xd0a7('0x39')]=qs[_0xd0a7('0x3a')](_0x216b23['query'][_0xd0a7('0x3a')]);_0x5e5650['where']=qs[_0xd0a7('0x31')](_[_0xd0a7('0x3c')](_0x216b23['query'],_0x535b5e[_0xd0a7('0x31')]));if(_0x216b23[_0xd0a7('0x2f')][_0xd0a7('0x3f')]){_0x5e5650[_0xd0a7('0x3b')]=_['merge'](_0x5e5650[_0xd0a7('0x3b')],{'$or':_[_0xd0a7('0x2a')](_0x5e5650[_0xd0a7('0x35')],function(_0x38ef7b){var _0x779b0a={};_0x779b0a[_0x38ef7b]={'$like':'%'+_0x216b23[_0xd0a7('0x2f')][_0xd0a7('0x3f')]+'%'};return _0x779b0a;})});}_0x5e5650=_[_0xd0a7('0x3d')]({},_0x5e5650,_0x216b23[_0xd0a7('0x40')]);return _0x31fc1c[_0xd0a7('0x4e')](_0x5e5650);}})[_0xd0a7('0x23')](function(_0x231789){if(_0x231789){_0x482eea=_0x231789['length'];if(!_0x216b23['query'][_0xd0a7('0x4d')]('nolimit')){_0x5e5650[_0xd0a7('0x1a')]=qs[_0xd0a7('0x1a')](_0x216b23[_0xd0a7('0x2f')]['limit']);_0x5e5650[_0xd0a7('0x38')]=qs['offset'](_0x216b23[_0xd0a7('0x2f')][_0xd0a7('0x38')]);}return _0x31fc1c[_0xd0a7('0x4e')](_0x5e5650);}})[_0xd0a7('0x23')](function(_0x4e8faa){if(_0x4e8faa){return _0x4e8faa?{'count':_0x482eea,'rows':_0x4e8faa}:null;}})[_0xd0a7('0x23')](respondWithResult(_0x5812fe,null))[_0xd0a7('0x45')](handleError(_0x5812fe,null));};
\ No newline at end of file
index cfd8f70..82ae23a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e97=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations','lodash'];(function(_0x15ea9f,_0x318add){var _0x50cb70=function(_0x20139c){while(--_0x20139c){_0x15ea9f['push'](_0x15ea9f['shift']());}};_0x50cb70(++_0x318add);}(_0x2e97,0x125));var _0x72e9=function(_0x5b84ff,_0x47e637){_0x5b84ff=_0x5b84ff-0x0;var _0xf145d9=_0x2e97[_0x5b84ff];return _0xf145d9;};'use strict';var _=require(_0x72e9('0x0'));var util=require(_0x72e9('0x1'));var logger=require(_0x72e9('0x2'))(_0x72e9('0x3'));var moment=require(_0x72e9('0x4'));var BPromise=require(_0x72e9('0x5'));var rp=require(_0x72e9('0x6'));var fs=require('fs');var path=require(_0x72e9('0x7'));var rimraf=require(_0x72e9('0x8'));var config=require(_0x72e9('0x9'));var attributes=require(_0x72e9('0xa'));module[_0x72e9('0xb')]=function(_0x394956,_0x38e671){return _0x394956['define'](_0x72e9('0xc'),attributes,{'tableName':_0x72e9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8970=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','int_freshsales_configurations'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8970,0xa8));var _0x0897=function(_0x2dae40,_0xb29b40){_0x2dae40=_0x2dae40-0x0;var _0x2b6e57=_0x8970[_0x2dae40];return _0x2b6e57;};'use strict';var _=require(_0x0897('0x0'));var util=require('util');var logger=require(_0x0897('0x1'))(_0x0897('0x2'));var moment=require(_0x0897('0x3'));var BPromise=require(_0x0897('0x4'));var rp=require(_0x0897('0x5'));var fs=require('fs');var path=require(_0x0897('0x6'));var rimraf=require(_0x0897('0x7'));var config=require(_0x0897('0x8'));var attributes=require(_0x0897('0x9'));module['exports']=function(_0x4b3ad5,_0x4a3a1d){return _0x4b3ad5[_0x0897('0xa')]('FreshsalesConfiguration',attributes,{'tableName':_0x0897('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 853ff76..f9bc8e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8e6=['rpc','../../config/environment','request','then','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe8e6,0x15f));var _0x6e8e=function(_0x3d058b,_0x40719d){_0x3d058b=_0x3d058b-0x0;var _0x2f1db8=_0xe8e6[_0x3d058b];return _0x2f1db8;};'use strict';var _=require(_0x6e8e('0x0'));var util=require(_0x6e8e('0x1'));var moment=require(_0x6e8e('0x2'));var BPromise=require(_0x6e8e('0x3'));var rs=require(_0x6e8e('0x4'));var fs=require('fs');var Redis=require(_0x6e8e('0x5'));var db=require(_0x6e8e('0x6'))['db'];var utils=require(_0x6e8e('0x7'));var logger=require(_0x6e8e('0x8'))(_0x6e8e('0x9'));var config=require(_0x6e8e('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1789f7,_0x3fe13d,_0x392794){return new BPromise(function(_0x2bfb60,_0x116972){return client[_0x6e8e('0xb')](_0x1789f7,_0x392794)[_0x6e8e('0xc')](function(_0x35d392){logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x3fe13d,_0x6e8e('0xd'));logger[_0x6e8e('0xe')](_0x6e8e('0xf'),_0x3fe13d,'request\x20sent',JSON[_0x6e8e('0x10')](_0x35d392));if(_0x35d392[_0x6e8e('0x11')]){if(_0x35d392[_0x6e8e('0x11')][_0x6e8e('0x12')]===0x1f4){logger[_0x6e8e('0x11')](_0x6e8e('0x13'),_0x3fe13d,_0x35d392[_0x6e8e('0x11')][_0x6e8e('0x14')]);return _0x116972(_0x35d392['error'][_0x6e8e('0x14')]);}logger['error'](_0x6e8e('0x13'),_0x3fe13d,_0x35d392['error'][_0x6e8e('0x14')]);return _0x2bfb60(_0x35d392[_0x6e8e('0x11')]['message']);}else{logger[_0x6e8e('0x15')](_0x6e8e('0x13'),_0x3fe13d,_0x6e8e('0xd'));_0x2bfb60(_0x35d392[_0x6e8e('0x16')][_0x6e8e('0x14')]);}})[_0x6e8e('0x17')](function(_0x287548){logger['error'](_0x6e8e('0x13'),_0x3fe13d,_0x287548);_0x116972(_0x287548);});});}
\ No newline at end of file
+var _0x4a99=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x3ad765,_0x2a4349){var _0x2124d4=function(_0x404763){while(--_0x404763){_0x3ad765['push'](_0x3ad765['shift']());}};_0x2124d4(++_0x2a4349);}(_0x4a99,0xe8));var _0x94a9=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x4a99[_0x24237f];return _0x48298e;};'use strict';var _=require(_0x94a9('0x0'));var util=require(_0x94a9('0x1'));var moment=require(_0x94a9('0x2'));var BPromise=require(_0x94a9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x94a9('0x4'));var db=require(_0x94a9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x94a9('0x6'))(_0x94a9('0x7'));var config=require(_0x94a9('0x8'));var jayson=require(_0x94a9('0x9'));var client=jayson['client'][_0x94a9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f76a4,_0x5d00ee,_0x1d1361){return new BPromise(function(_0x5533a8,_0x5c1ccb){return client[_0x94a9('0xb')](_0x1f76a4,_0x1d1361)[_0x94a9('0xc')](function(_0x989da1){logger['info'](_0x94a9('0xd'),_0x5d00ee,_0x94a9('0xe'));logger['debug'](_0x94a9('0xf'),_0x5d00ee,_0x94a9('0xe'),JSON[_0x94a9('0x10')](_0x989da1));if(_0x989da1[_0x94a9('0x11')]){if(_0x989da1['error'][_0x94a9('0x12')]===0x1f4){logger['error'](_0x94a9('0xd'),_0x5d00ee,_0x989da1['error'][_0x94a9('0x13')]);return _0x5c1ccb(_0x989da1['error'][_0x94a9('0x13')]);}logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x5d00ee,_0x989da1[_0x94a9('0x11')][_0x94a9('0x13')]);return _0x5533a8(_0x989da1['error'][_0x94a9('0x13')]);}else{logger[_0x94a9('0x14')](_0x94a9('0xd'),_0x5d00ee,_0x94a9('0xe'));_0x5533a8(_0x989da1[_0x94a9('0x15')]['message']);}})[_0x94a9('0x16')](function(_0x938e87){logger[_0x94a9('0x11')](_0x94a9('0xd'),_0x5d00ee,_0x938e87);_0x5c1ccb(_0x938e87);});});}
\ No newline at end of file
index 836a64d..e73d295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8388=['/:id','post','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x30a377,_0x4c86b8){var _0x2f8f3f=function(_0x223a1e){while(--_0x223a1e){_0x30a377['push'](_0x30a377['shift']());}};_0x2f8f3f(++_0x4c86b8);}(_0x8388,0x18d));var _0x8838=function(_0x1cd674,_0x8d3638){_0x1cd674=_0x1cd674-0x0;var _0x27928f=_0x8388[_0x1cd674];return _0x27928f;};'use strict';var multer=require(_0x8838('0x0'));var util=require(_0x8838('0x1'));var path=require(_0x8838('0x2'));var timeout=require(_0x8838('0x3'));var express=require('express');var router=express[_0x8838('0x4')]();var fs_extra=require(_0x8838('0x5'));var auth=require(_0x8838('0x6'));var interaction=require(_0x8838('0x7'));var config=require(_0x8838('0x8'));var controller=require('./intFreshsalesField.controller');router[_0x8838('0x9')]('/',auth[_0x8838('0xa')](),controller['index']);router[_0x8838('0x9')](_0x8838('0xb'),auth[_0x8838('0xa')](),controller['show']);router[_0x8838('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8838('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x8838('0xe')]);router[_0x8838('0xf')](_0x8838('0xb'),auth[_0x8838('0xa')](),controller['destroy']);module[_0x8838('0x10')]=router;
\ No newline at end of file
+var _0x5c12=['./intFreshsalesField.controller','isAuthenticated','index','get','show','post','create','put','update','delete','/:id','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xc1bc9,_0x33c932){var _0x3973f2=function(_0x386a24){while(--_0x386a24){_0xc1bc9['push'](_0xc1bc9['shift']());}};_0x3973f2(++_0x33c932);}(_0x5c12,0x188));var _0x25c1=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x5c12[_0x39e283];return _0x7de89f;};'use strict';var multer=require('multer');var util=require(_0x25c1('0x0'));var path=require(_0x25c1('0x1'));var timeout=require('connect-timeout');var express=require(_0x25c1('0x2'));var router=express[_0x25c1('0x3')]();var fs_extra=require(_0x25c1('0x4'));var auth=require(_0x25c1('0x5'));var interaction=require(_0x25c1('0x6'));var config=require(_0x25c1('0x7'));var controller=require(_0x25c1('0x8'));router['get']('/',auth[_0x25c1('0x9')](),controller[_0x25c1('0xa')]);router[_0x25c1('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x25c1('0xc')]);router[_0x25c1('0xd')]('/',auth[_0x25c1('0x9')](),controller[_0x25c1('0xe')]);router[_0x25c1('0xf')]('/:id',auth[_0x25c1('0x9')](),controller[_0x25c1('0x10')]);router[_0x25c1('0x11')](_0x25c1('0x12'),auth[_0x25c1('0x9')](),controller['destroy']);module[_0x25c1('0x13')]=router;
\ No newline at end of file
index 7b46927..c3dd511 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c6=['exports','ENUM','string','variable','customVariable','STRING','BOOLEAN'];(function(_0x1c73ee,_0x49a9c9){var _0x154f05=function(_0x3987f1){while(--_0x3987f1){_0x1c73ee['push'](_0x1c73ee['shift']());}};_0x154f05(++_0x49a9c9);}(_0x37c6,0x69));var _0x637c=function(_0xf1a05d,_0x1230f7){_0xf1a05d=_0xf1a05d-0x0;var _0x410273=_0x37c6[_0xf1a05d];return _0x410273;};'use strict';var Sequelize=require('sequelize');module[_0x637c('0x0')]={'type':{'type':Sequelize[_0x637c('0x1')](_0x637c('0x2'),_0x637c('0x3'),_0x637c('0x4'),'keyValue','picklist'),'defaultValue':_0x637c('0x2')},'content':{'type':Sequelize[_0x637c('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x637c('0x1')]('string',_0x637c('0x3'),_0x637c('0x4'))},'keyContent':{'type':Sequelize[_0x637c('0x5')]},'idField':{'type':Sequelize[_0x637c('0x5')]},'nameField':{'type':Sequelize[_0x637c('0x5')]},'customField':{'type':Sequelize[_0x637c('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4322=['customVariable','keyValue','STRING','BOOLEAN','ENUM','string','variable'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x4322,0x1bd));var _0x2432=function(_0x1a38d0,_0x23e18e){_0x1a38d0=_0x1a38d0-0x0;var _0x25d82f=_0x4322[_0x1a38d0];return _0x25d82f;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x2432('0x0')](_0x2432('0x1'),_0x2432('0x2'),_0x2432('0x3'),_0x2432('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x2432('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x2432('0x1'),_0x2432('0x2'),_0x2432('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x2432('0x5')]},'nameField':{'type':Sequelize[_0x2432('0x5')]},'customField':{'type':Sequelize[_0x2432('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9f455de..18f84e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeacc=['intersection','model','attributes','fields','nolimit','sort','filters','where','VIRTUAL','filter','merge','options','FreshsalesField','includeAll','include','rows','show','params','keys','length','catch','create','body','eml-format','rimraf','request-promise','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','name','send','index','map','rawAttributes','fieldName','type','key','query'];(function(_0x572243,_0x56a6f0){var _0x245c81=function(_0x2d0e63){while(--_0x2d0e63){_0x572243['push'](_0x572243['shift']());}};_0x245c81(++_0x56a6f0);}(_0xeacc,0x189));var _0xceac=function(_0x574f08,_0x4f59e0){_0x574f08=_0x574f08-0x0;var _0x445f53=_0xeacc[_0x574f08];return _0x445f53;};'use strict';var emlformat=require(_0xceac('0x0'));var rimraf=require(_0xceac('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xceac('0x2'));var moment=require('moment');var BPromise=require(_0xceac('0x3'));var Mustache=require(_0xceac('0x4'));var util=require(_0xceac('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xceac('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xceac('0x7'));var _=require(_0xceac('0x8'));var squel=require(_0xceac('0x9'));var crypto=require(_0xceac('0xa'));var jsforce=require(_0xceac('0xb'));var deskjs=require(_0xceac('0xc'));var toCsv=require('to-csv');var querystring=require(_0xceac('0xd'));var Papa=require(_0xceac('0xe'));var Redis=require(_0xceac('0xf'));var authService=require(_0xceac('0x10'));var qs=require(_0xceac('0x11'));var as=require(_0xceac('0x12'));var hardwareService=require(_0xceac('0x13'));var logger=require(_0xceac('0x14'))(_0xceac('0x15'));var utils=require(_0xceac('0x16'));var config=require(_0xceac('0x17'));var licenseUtil=require(_0xceac('0x18'));var db=require(_0xceac('0x19'))['db'];function respondWithStatusCode(_0x12acd5,_0x44fc28){_0x44fc28=_0x44fc28||0xcc;return function(_0x421509){if(_0x421509){return _0x12acd5['sendStatus'](_0x44fc28);}return _0x12acd5['status'](_0x44fc28)['end']();};}function respondWithResult(_0x11d58f,_0x47f1b2){_0x47f1b2=_0x47f1b2||0xc8;return function(_0x40379c){if(_0x40379c){return _0x11d58f[_0xceac('0x1a')](_0x47f1b2)['json'](_0x40379c);}};}function respondWithFilteredResult(_0x1d5019,_0x4b6a3f){return function(_0x22a693){if(_0x22a693){var _0x2c08ac=typeof _0x4b6a3f['offset']===_0xceac('0x1b')&&typeof _0x4b6a3f[_0xceac('0x1c')]===_0xceac('0x1b');var _0xed6e5=_0x22a693[_0xceac('0x1d')];var _0x593761=_0x2c08ac?0x0:_0x4b6a3f[_0xceac('0x1e')];var _0x3eb8f4=_0x2c08ac?_0x22a693[_0xceac('0x1d')]:_0x4b6a3f[_0xceac('0x1e')]+_0x4b6a3f['limit'];var _0x247e81;if(_0x3eb8f4>=_0xed6e5){_0x3eb8f4=_0xed6e5;_0x247e81=0xc8;}else{_0x247e81=0xce;}_0x1d5019['status'](_0x247e81);return _0x1d5019[_0xceac('0x1f')](_0xceac('0x20'),_0x593761+'-'+_0x3eb8f4+'/'+_0xed6e5)[_0xceac('0x21')](_0x22a693);}return null;};}function patchUpdates(_0x18c9da){return function(_0x30b77f){try{jsonpatch[_0xceac('0x22')](_0x30b77f,_0x18c9da,!![]);}catch(_0x1d4d0d){return BPromise[_0xceac('0x23')](_0x1d4d0d);}return _0x30b77f[_0xceac('0x24')]();};}function saveUpdates(_0x15f277,_0x36fb6f){return function(_0x4ca33b){if(_0x4ca33b){return _0x4ca33b[_0xceac('0x25')](_0x15f277)[_0xceac('0x26')](function(_0x562898){return _0x562898;});}return null;};}function removeEntity(_0x49832f,_0x355952){return function(_0x140e33){if(_0x140e33){return _0x140e33[_0xceac('0x27')]()[_0xceac('0x26')](function(){_0x49832f[_0xceac('0x1a')](0xcc)[_0xceac('0x28')]();});}};}function handleEntityNotFound(_0x126ec1,_0x517d4f){return function(_0x6cfad3){if(!_0x6cfad3){_0x126ec1[_0xceac('0x29')](0x194);}return _0x6cfad3;};}function handleError(_0x1289ac,_0x195470){_0x195470=_0x195470||0x1f4;return function(_0x2592e0){logger['error'](_0x2592e0['stack']);if(_0x2592e0[_0xceac('0x2a')]){delete _0x2592e0[_0xceac('0x2a')];}_0x1289ac[_0xceac('0x1a')](_0x195470)[_0xceac('0x2b')](_0x2592e0);};}exports[_0xceac('0x2c')]=function(_0x5d706c,_0x64e8b1){var _0x41ba30={},_0x510432={},_0x3cdf71={'count':0x0,'rows':[]};var _0x242058=_[_0xceac('0x2d')](db['FreshsalesField'][_0xceac('0x2e')],function(_0x11bde0){return{'name':_0x11bde0[_0xceac('0x2f')],'type':_0x11bde0[_0xceac('0x30')][_0xceac('0x31')]};});_0x510432['model']=_['map'](_0x242058,_0xceac('0x2a'));_0x510432[_0xceac('0x32')]=_['keys'](_0x5d706c['query']);_0x510432['filters']=_[_0xceac('0x33')](_0x510432[_0xceac('0x34')],_0x510432['query']);_0x41ba30[_0xceac('0x35')]=_[_0xceac('0x33')](_0x510432[_0xceac('0x34')],qs[_0xceac('0x36')](_0x5d706c[_0xceac('0x32')][_0xceac('0x36')]));_0x41ba30[_0xceac('0x35')]=_0x41ba30[_0xceac('0x35')]['length']?_0x41ba30[_0xceac('0x35')]:_0x510432[_0xceac('0x34')];if(!_0x5d706c[_0xceac('0x32')]['hasOwnProperty'](_0xceac('0x37'))){_0x41ba30['limit']=qs['limit'](_0x5d706c[_0xceac('0x32')][_0xceac('0x1c')]);_0x41ba30[_0xceac('0x1e')]=qs[_0xceac('0x1e')](_0x5d706c['query'][_0xceac('0x1e')]);}_0x41ba30['order']=qs[_0xceac('0x38')](_0x5d706c[_0xceac('0x32')]['sort']);_0x41ba30['where']=qs[_0xceac('0x39')](_['pick'](_0x5d706c['query'],_0x510432[_0xceac('0x39')]),_0x242058);if(_0x5d706c[_0xceac('0x32')]['filter']){_0x41ba30[_0xceac('0x3a')]=_['merge'](_0x41ba30[_0xceac('0x3a')],{'$or':_[_0xceac('0x2d')](_0x242058,function(_0x535fce){if(_0x535fce[_0xceac('0x30')]!==_0xceac('0x3b')){var _0xc503d4={};_0xc503d4[_0x535fce[_0xceac('0x2a')]]={'$like':'%'+_0x5d706c[_0xceac('0x32')][_0xceac('0x3c')]+'%'};return _0xc503d4;}})});}_0x41ba30=_[_0xceac('0x3d')]({},_0x41ba30,_0x5d706c[_0xceac('0x3e')]);var _0x34fb24={'where':_0x41ba30['where']};return db[_0xceac('0x3f')][_0xceac('0x1d')](_0x34fb24)[_0xceac('0x26')](function(_0x233a24){_0x3cdf71[_0xceac('0x1d')]=_0x233a24;if(_0x5d706c['query'][_0xceac('0x40')]){_0x41ba30[_0xceac('0x41')]=[{'all':!![]}];}return db[_0xceac('0x3f')]['findAll'](_0x41ba30);})[_0xceac('0x26')](function(_0x26b800){_0x3cdf71[_0xceac('0x42')]=_0x26b800;return _0x3cdf71;})['then'](respondWithFilteredResult(_0x64e8b1,_0x41ba30))['catch'](handleError(_0x64e8b1,null));};exports[_0xceac('0x43')]=function(_0x17c3f3,_0x3214c0){var _0x164280={'raw':!![],'where':{'id':_0x17c3f3[_0xceac('0x44')]['id']}},_0x5016cb={};_0x5016cb[_0xceac('0x34')]=_[_0xceac('0x45')](db[_0xceac('0x3f')][_0xceac('0x2e')]);_0x5016cb[_0xceac('0x32')]=_[_0xceac('0x45')](_0x17c3f3[_0xceac('0x32')]);_0x5016cb['filters']=_[_0xceac('0x33')](_0x5016cb[_0xceac('0x34')],_0x5016cb['query']);_0x164280[_0xceac('0x35')]=_[_0xceac('0x33')](_0x5016cb[_0xceac('0x34')],qs[_0xceac('0x36')](_0x17c3f3[_0xceac('0x32')][_0xceac('0x36')]));_0x164280[_0xceac('0x35')]=_0x164280[_0xceac('0x35')][_0xceac('0x46')]?_0x164280[_0xceac('0x35')]:_0x5016cb[_0xceac('0x34')];if(_0x17c3f3['query'][_0xceac('0x40')]){_0x164280[_0xceac('0x41')]=[{'all':!![]}];}_0x164280=_[_0xceac('0x3d')]({},_0x164280,_0x17c3f3['options']);return db['FreshsalesField']['find'](_0x164280)['then'](handleEntityNotFound(_0x3214c0,null))[_0xceac('0x26')](respondWithResult(_0x3214c0,null))[_0xceac('0x47')](handleError(_0x3214c0,null));};exports[_0xceac('0x48')]=function(_0xaddd6d,_0x45453d){return db[_0xceac('0x3f')][_0xceac('0x48')](_0xaddd6d['body'],{})[_0xceac('0x26')](respondWithResult(_0x45453d,0xc9))[_0xceac('0x47')](handleError(_0x45453d,null));};exports[_0xceac('0x25')]=function(_0x3bb6fd,_0x3262b3){if(_0x3bb6fd[_0xceac('0x49')]['id']){delete _0x3bb6fd[_0xceac('0x49')]['id'];}return db[_0xceac('0x3f')]['find']({'where':{'id':_0x3bb6fd[_0xceac('0x44')]['id']}})['then'](handleEntityNotFound(_0x3262b3,null))[_0xceac('0x26')](saveUpdates(_0x3bb6fd[_0xceac('0x49')],null))[_0xceac('0x26')](respondWithResult(_0x3262b3,null))[_0xceac('0x47')](handleError(_0x3262b3,null));};exports[_0xceac('0x27')]=function(_0x375da9,_0x579889){return db[_0xceac('0x3f')]['find']({'where':{'id':_0x375da9[_0xceac('0x44')]['id']}})['then'](handleEntityNotFound(_0x579889,null))[_0xceac('0x26')](removeEntity(_0x579889,null))[_0xceac('0x47')](handleError(_0x579889,null));};
\ No newline at end of file
+var _0x8b2d=['zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','FreshsalesField','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','create','body','find','eml-format'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x8b2d,0x97));var _0xd8b2=function(_0x455bbf,_0x487eb1){_0x455bbf=_0x455bbf-0x0;var _0x31cc6a=_0x8b2d[_0x455bbf];return _0x31cc6a;};'use strict';var emlformat=require(_0xd8b2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd8b2('0x1'));var jsonpatch=require(_0xd8b2('0x2'));var rp=require(_0xd8b2('0x3'));var moment=require(_0xd8b2('0x4'));var BPromise=require(_0xd8b2('0x5'));var Mustache=require('mustache');var util=require(_0xd8b2('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xd8b2('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd8b2('0x8'));var _=require(_0xd8b2('0x9'));var squel=require(_0xd8b2('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd8b2('0xb'));var toCsv=require(_0xd8b2('0x7'));var querystring=require(_0xd8b2('0xc'));var Papa=require(_0xd8b2('0xd'));var Redis=require(_0xd8b2('0xe'));var authService=require(_0xd8b2('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xd8b2('0x10'));var hardwareService=require(_0xd8b2('0x11'));var logger=require(_0xd8b2('0x12'))(_0xd8b2('0x13'));var utils=require(_0xd8b2('0x14'));var config=require(_0xd8b2('0x15'));var licenseUtil=require(_0xd8b2('0x16'));var db=require(_0xd8b2('0x17'))['db'];function respondWithStatusCode(_0x4b26b4,_0x39d52e){_0x39d52e=_0x39d52e||0xcc;return function(_0x33159a){if(_0x33159a){return _0x4b26b4[_0xd8b2('0x18')](_0x39d52e);}return _0x4b26b4[_0xd8b2('0x19')](_0x39d52e)[_0xd8b2('0x1a')]();};}function respondWithResult(_0x499701,_0x145fc5){_0x145fc5=_0x145fc5||0xc8;return function(_0x2972b7){if(_0x2972b7){return _0x499701[_0xd8b2('0x19')](_0x145fc5)[_0xd8b2('0x1b')](_0x2972b7);}};}function respondWithFilteredResult(_0x1b92df,_0x3b0b01){return function(_0x1a3645){if(_0x1a3645){var _0x3f3166=typeof _0x3b0b01[_0xd8b2('0x1c')]===_0xd8b2('0x1d')&&typeof _0x3b0b01[_0xd8b2('0x1e')]==='undefined';var _0x2c348a=_0x1a3645[_0xd8b2('0x1f')];var _0x197c93=_0x3f3166?0x0:_0x3b0b01[_0xd8b2('0x1c')];var _0x504343=_0x3f3166?_0x1a3645['count']:_0x3b0b01[_0xd8b2('0x1c')]+_0x3b0b01[_0xd8b2('0x1e')];var _0x1c6b1c;if(_0x504343>=_0x2c348a){_0x504343=_0x2c348a;_0x1c6b1c=0xc8;}else{_0x1c6b1c=0xce;}_0x1b92df[_0xd8b2('0x19')](_0x1c6b1c);return _0x1b92df['set'](_0xd8b2('0x20'),_0x197c93+'-'+_0x504343+'/'+_0x2c348a)[_0xd8b2('0x1b')](_0x1a3645);}return null;};}function patchUpdates(_0x4de1f7){return function(_0x11c172){try{jsonpatch[_0xd8b2('0x21')](_0x11c172,_0x4de1f7,!![]);}catch(_0x52b0e5){return BPromise[_0xd8b2('0x22')](_0x52b0e5);}return _0x11c172[_0xd8b2('0x23')]();};}function saveUpdates(_0x512055,_0x11c8b0){return function(_0x1b73fa){if(_0x1b73fa){return _0x1b73fa[_0xd8b2('0x24')](_0x512055)[_0xd8b2('0x25')](function(_0x35f220){return _0x35f220;});}return null;};}function removeEntity(_0x389416,_0x4c2272){return function(_0x1786ee){if(_0x1786ee){return _0x1786ee[_0xd8b2('0x26')]()['then'](function(){_0x389416['status'](0xcc)[_0xd8b2('0x1a')]();});}};}function handleEntityNotFound(_0xe037de,_0xc5c489){return function(_0x24e92c){if(!_0x24e92c){_0xe037de[_0xd8b2('0x18')](0x194);}return _0x24e92c;};}function handleError(_0x39e321,_0x2fc19c){_0x2fc19c=_0x2fc19c||0x1f4;return function(_0x26f785){logger[_0xd8b2('0x27')](_0x26f785[_0xd8b2('0x28')]);if(_0x26f785[_0xd8b2('0x29')]){delete _0x26f785[_0xd8b2('0x29')];}_0x39e321[_0xd8b2('0x19')](_0x2fc19c)[_0xd8b2('0x2a')](_0x26f785);};}exports['index']=function(_0x55ac87,_0x171651){var _0x3f30cd={},_0x1098a6={},_0x34fdfa={'count':0x0,'rows':[]};var _0x2e3aad=_[_0xd8b2('0x2b')](db[_0xd8b2('0x2c')][_0xd8b2('0x2d')],function(_0x2a4614){return{'name':_0x2a4614[_0xd8b2('0x2e')],'type':_0x2a4614[_0xd8b2('0x2f')][_0xd8b2('0x30')]};});_0x1098a6['model']=_['map'](_0x2e3aad,_0xd8b2('0x29'));_0x1098a6[_0xd8b2('0x31')]=_[_0xd8b2('0x32')](_0x55ac87['query']);_0x1098a6[_0xd8b2('0x33')]=_[_0xd8b2('0x34')](_0x1098a6[_0xd8b2('0x35')],_0x1098a6[_0xd8b2('0x31')]);_0x3f30cd[_0xd8b2('0x36')]=_[_0xd8b2('0x34')](_0x1098a6[_0xd8b2('0x35')],qs[_0xd8b2('0x37')](_0x55ac87['query'][_0xd8b2('0x37')]));_0x3f30cd[_0xd8b2('0x36')]=_0x3f30cd[_0xd8b2('0x36')][_0xd8b2('0x38')]?_0x3f30cd[_0xd8b2('0x36')]:_0x1098a6['model'];if(!_0x55ac87['query'][_0xd8b2('0x39')](_0xd8b2('0x3a'))){_0x3f30cd['limit']=qs[_0xd8b2('0x1e')](_0x55ac87[_0xd8b2('0x31')][_0xd8b2('0x1e')]);_0x3f30cd[_0xd8b2('0x1c')]=qs[_0xd8b2('0x1c')](_0x55ac87[_0xd8b2('0x31')][_0xd8b2('0x1c')]);}_0x3f30cd[_0xd8b2('0x3b')]=qs[_0xd8b2('0x3c')](_0x55ac87[_0xd8b2('0x31')][_0xd8b2('0x3c')]);_0x3f30cd['where']=qs[_0xd8b2('0x33')](_['pick'](_0x55ac87[_0xd8b2('0x31')],_0x1098a6[_0xd8b2('0x33')]),_0x2e3aad);if(_0x55ac87[_0xd8b2('0x31')][_0xd8b2('0x3d')]){_0x3f30cd['where']=_[_0xd8b2('0x3e')](_0x3f30cd[_0xd8b2('0x3f')],{'$or':_['map'](_0x2e3aad,function(_0x733581){if(_0x733581[_0xd8b2('0x2f')]!==_0xd8b2('0x40')){var _0xb77246={};_0xb77246[_0x733581[_0xd8b2('0x29')]]={'$like':'%'+_0x55ac87['query']['filter']+'%'};return _0xb77246;}})});}_0x3f30cd=_[_0xd8b2('0x3e')]({},_0x3f30cd,_0x55ac87[_0xd8b2('0x41')]);var _0x538e6a={'where':_0x3f30cd[_0xd8b2('0x3f')]};return db[_0xd8b2('0x2c')][_0xd8b2('0x1f')](_0x538e6a)['then'](function(_0xfe37f2){_0x34fdfa[_0xd8b2('0x1f')]=_0xfe37f2;if(_0x55ac87[_0xd8b2('0x31')]['includeAll']){_0x3f30cd['include']=[{'all':!![]}];}return db['FreshsalesField'][_0xd8b2('0x42')](_0x3f30cd);})['then'](function(_0xa869a3){_0x34fdfa[_0xd8b2('0x43')]=_0xa869a3;return _0x34fdfa;})[_0xd8b2('0x25')](respondWithFilteredResult(_0x171651,_0x3f30cd))[_0xd8b2('0x44')](handleError(_0x171651,null));};exports[_0xd8b2('0x45')]=function(_0x57306f,_0x5ecc59){var _0x48193e={'raw':!![],'where':{'id':_0x57306f[_0xd8b2('0x46')]['id']}},_0x45217c={};_0x45217c[_0xd8b2('0x35')]=_['keys'](db[_0xd8b2('0x2c')][_0xd8b2('0x2d')]);_0x45217c['query']=_['keys'](_0x57306f[_0xd8b2('0x31')]);_0x45217c['filters']=_[_0xd8b2('0x34')](_0x45217c[_0xd8b2('0x35')],_0x45217c[_0xd8b2('0x31')]);_0x48193e[_0xd8b2('0x36')]=_['intersection'](_0x45217c[_0xd8b2('0x35')],qs['fields'](_0x57306f[_0xd8b2('0x31')][_0xd8b2('0x37')]));_0x48193e[_0xd8b2('0x36')]=_0x48193e[_0xd8b2('0x36')][_0xd8b2('0x38')]?_0x48193e[_0xd8b2('0x36')]:_0x45217c[_0xd8b2('0x35')];if(_0x57306f[_0xd8b2('0x31')][_0xd8b2('0x47')]){_0x48193e[_0xd8b2('0x48')]=[{'all':!![]}];}_0x48193e=_[_0xd8b2('0x3e')]({},_0x48193e,_0x57306f[_0xd8b2('0x41')]);return db[_0xd8b2('0x2c')]['find'](_0x48193e)['then'](handleEntityNotFound(_0x5ecc59,null))['then'](respondWithResult(_0x5ecc59,null))['catch'](handleError(_0x5ecc59,null));};exports[_0xd8b2('0x49')]=function(_0xf62a70,_0x186508){return db[_0xd8b2('0x2c')][_0xd8b2('0x49')](_0xf62a70['body'],{})['then'](respondWithResult(_0x186508,0xc9))['catch'](handleError(_0x186508,null));};exports['update']=function(_0x41e07f,_0x2742fb){if(_0x41e07f[_0xd8b2('0x4a')]['id']){delete _0x41e07f[_0xd8b2('0x4a')]['id'];}return db['FreshsalesField'][_0xd8b2('0x4b')]({'where':{'id':_0x41e07f['params']['id']}})[_0xd8b2('0x25')](handleEntityNotFound(_0x2742fb,null))[_0xd8b2('0x25')](saveUpdates(_0x41e07f[_0xd8b2('0x4a')],null))[_0xd8b2('0x25')](respondWithResult(_0x2742fb,null))[_0xd8b2('0x44')](handleError(_0x2742fb,null));};exports['destroy']=function(_0x5818bf,_0x1eb84b){return db[_0xd8b2('0x2c')]['find']({'where':{'id':_0x5818bf['params']['id']}})['then'](handleEntityNotFound(_0x1eb84b,null))[_0xd8b2('0x25')](removeEntity(_0x1eb84b,null))[_0xd8b2('0x44')](handleError(_0x1eb84b,null));};
\ No newline at end of file
index 20a7c70..2767495 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f83=['idField','FieldId','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index'];(function(_0x8c83cc,_0x1bdfab){var _0xb2b8ec=function(_0x4dd39a){while(--_0x4dd39a){_0x8c83cc['push'](_0x8c83cc['shift']());}};_0xb2b8ec(++_0x1bdfab);}(_0x6f83,0x72));var _0x36f8=function(_0x36596f,_0x31f802){_0x36596f=_0x36596f-0x0;var _0x2a6aa4=_0x6f83[_0x36596f];return _0x2a6aa4;};'use strict';var _=require('lodash');var util=require(_0x36f8('0x0'));var logger=require(_0x36f8('0x1'))('api');var moment=require(_0x36f8('0x2'));var BPromise=require(_0x36f8('0x3'));var rp=require(_0x36f8('0x4'));var fs=require('fs');var path=require(_0x36f8('0x5'));var rimraf=require(_0x36f8('0x6'));var config=require(_0x36f8('0x7'));var attributes=require(_0x36f8('0x8'));module[_0x36f8('0x9')]=function(_0x31ff95,_0x3b9620){return _0x31ff95[_0x36f8('0xa')](_0x36f8('0xb'),attributes,{'tableName':_0x36f8('0xc'),'paranoid':![],'indexes':[{'name':_0x36f8('0xd'),'fields':[_0x36f8('0xe'),_0x36f8('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xba37=['idField','FieldId','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','FreshsalesField','int_freshsales_fields'];(function(_0x15b6e6,_0xa95b6f){var _0x3cc6cd=function(_0x1c8b76){while(--_0x1c8b76){_0x15b6e6['push'](_0x15b6e6['shift']());}};_0x3cc6cd(++_0xa95b6f);}(_0xba37,0xb6));var _0x7ba3=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0xba37[_0x565ed7];return _0x183ad7;};'use strict';var _=require(_0x7ba3('0x0'));var util=require('util');var logger=require(_0x7ba3('0x1'))('api');var moment=require(_0x7ba3('0x2'));var BPromise=require('bluebird');var rp=require(_0x7ba3('0x3'));var fs=require('fs');var path=require(_0x7ba3('0x4'));var rimraf=require(_0x7ba3('0x5'));var config=require(_0x7ba3('0x6'));var attributes=require(_0x7ba3('0x7'));module['exports']=function(_0x401c33,_0x47b38c){return _0x401c33['define'](_0x7ba3('0x8'),attributes,{'tableName':_0x7ba3('0x9'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x7ba3('0xa'),_0x7ba3('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 87f025d..0b4009d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['FreshsalesField,\x20%s,\x20%s','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x46ed,0x168));var _0xd46e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x46ed[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var moment=require('moment');var BPromise=require(_0xd46e('0x2'));var rs=require(_0xd46e('0x3'));var fs=require('fs');var Redis=require(_0xd46e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd46e('0x5'));var logger=require(_0xd46e('0x6'))('rpc');var config=require(_0xd46e('0x7'));var jayson=require(_0xd46e('0x8'));var client=jayson[_0xd46e('0x9')][_0xd46e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45e680,_0x855f24,_0x437ea0){return new BPromise(function(_0x144687,_0x31259b){return client[_0xd46e('0xb')](_0x45e680,_0x437ea0)[_0xd46e('0xc')](function(_0x59c88d){logger[_0xd46e('0xd')](_0xd46e('0xe'),_0x855f24,'request\x20sent');logger[_0xd46e('0xf')](_0xd46e('0x10'),_0x855f24,_0xd46e('0x11'),JSON[_0xd46e('0x12')](_0x59c88d));if(_0x59c88d[_0xd46e('0x13')]){if(_0x59c88d[_0xd46e('0x13')]['code']===0x1f4){logger[_0xd46e('0x13')]('FreshsalesField,\x20%s,\x20%s',_0x855f24,_0x59c88d['error'][_0xd46e('0x14')]);return _0x31259b(_0x59c88d[_0xd46e('0x13')]['message']);}logger['error'](_0xd46e('0xe'),_0x855f24,_0x59c88d[_0xd46e('0x13')][_0xd46e('0x14')]);return _0x144687(_0x59c88d[_0xd46e('0x13')]['message']);}else{logger[_0xd46e('0xd')](_0xd46e('0xe'),_0x855f24,_0xd46e('0x11'));_0x144687(_0x59c88d[_0xd46e('0x15')][_0xd46e('0x14')]);}})['catch'](function(_0x1d50a5){logger[_0xd46e('0x13')](_0xd46e('0xe'),_0x855f24,_0x1d50a5);_0x31259b(_0x1d50a5);});});}
\ No newline at end of file
+var _0x1623=['../../config/utils','../../config/environment','client','http','request','then','info','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshsalesField,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x29832b,_0x474807){var _0xa0fd6f=function(_0x40e9cc){while(--_0x40e9cc){_0x29832b['push'](_0x29832b['shift']());}};_0xa0fd6f(++_0x474807);}(_0x1623,0xab));var _0x3162=function(_0x3effa4,_0x116b51){_0x3effa4=_0x3effa4-0x0;var _0x4db843=_0x1623[_0x3effa4];return _0x4db843;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3162('0x1'));var rs=require(_0x3162('0x2'));var fs=require('fs');var Redis=require(_0x3162('0x3'));var db=require(_0x3162('0x4'))['db'];var utils=require(_0x3162('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x3162('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3162('0x7')][_0x3162('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x53260d,_0xffe9b6,_0x2dc07e){return new BPromise(function(_0x26ee32,_0x36609e){return client[_0x3162('0x9')](_0x53260d,_0x2dc07e)[_0x3162('0xa')](function(_0xe43099){logger[_0x3162('0xb')]('FreshsalesField,\x20%s,\x20%s',_0xffe9b6,'request\x20sent');logger[_0x3162('0xc')](_0x3162('0xd'),_0xffe9b6,_0x3162('0xe'),JSON[_0x3162('0xf')](_0xe43099));if(_0xe43099[_0x3162('0x10')]){if(_0xe43099[_0x3162('0x10')][_0x3162('0x11')]===0x1f4){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x36609e(_0xe43099['error'][_0x3162('0x13')]);}logger[_0x3162('0x10')]('FreshsalesField,\x20%s,\x20%s',_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x26ee32(_0xe43099[_0x3162('0x10')][_0x3162('0x13')]);}else{logger['info'](_0x3162('0x12'),_0xffe9b6,_0x3162('0xe'));_0x26ee32(_0xe43099[_0x3162('0x14')]['message']);}})[_0x3162('0x15')](function(_0x42cf7d){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0x42cf7d);_0x36609e(_0x42cf7d);});});}
\ No newline at end of file
index 2c20f0a..b76ec19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x24361b,_0x4208e5){var _0x200f1a=function(_0x4cc140){while(--_0x4cc140){_0x24361b['push'](_0x24361b['shift']());}};_0x200f1a(++_0x4208e5);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x53caee,_0x46e035){var _0x101b1a=function(_0x360712){while(--_0x360712){_0x53caee['push'](_0x53caee['shift']());}};_0x101b1a(++_0x46e035);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index e7705ed..a532fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d11=['exports','STRING','ENUM','integrationTab','newTab','sequelize'];(function(_0x1f14b6,_0x2f9685){var _0x2d5045=function(_0x14067b){while(--_0x14067b){_0x1f14b6['push'](_0x1f14b6['shift']());}};_0x2d5045(++_0x2f9685);}(_0x6d11,0xbf));var _0x16d1=function(_0x4882a7,_0x235bc4){_0x4882a7=_0x4882a7-0x0;var _0x31a22c=_0x6d11[_0x4882a7];return _0x31a22c;};'use strict';var Sequelize=require(_0x16d1('0x0'));module[_0x16d1('0x1')]={'name':{'type':Sequelize[_0x16d1('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x16d1('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0x16d1('0x2')]},'password':{'type':Sequelize[_0x16d1('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0x16d1('0x2')]},'serverUrl':{'type':Sequelize[_0x16d1('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x16d1('0x3')](_0x16d1('0x4'),_0x16d1('0x5')),'defaultValue':_0x16d1('0x4')}};
\ No newline at end of file
+var _0xe98f=['username','integrationTab','sequelize','STRING'];(function(_0x40aa7d,_0x25f003){var _0x33e58d=function(_0x15457f){while(--_0x15457f){_0x40aa7d['push'](_0x40aa7d['shift']());}};_0x33e58d(++_0x25f003);}(_0xe98f,0xde));var _0xfe98=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xe98f[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0xfe98('0x0'));module['exports']={'name':{'type':Sequelize[_0xfe98('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfe98('0x1')],'unique':_0xfe98('0x2')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xfe98('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0xfe98('0x1')]},'serverUrl':{'type':Sequelize[_0xfe98('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xfe98('0x3'),'newTab'),'defaultValue':_0xfe98('0x3')}};
\ No newline at end of file
index 9e2286c..2d56867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c45=['securityToken','remoteUri','slice','lastIndexOf','login','username','concat','isNil','ticketType','sobject','describe','OwnerId','IsRecurrence','Subject','int','boolean','email','textarea','phone','remove','includes','map','label','custom','picklistValues','value','true','false','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','end','error','stack','name','send','index','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','type','VIRTUAL','filter','options','SalesforceAccount','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','getConfigurations','findOne','SalesforceConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','SalesforceField','getFields','Task','clientId','clientSecret','password'];(function(_0x8ba4a6,_0x4105da){var _0x196937=function(_0x5832f6){while(--_0x5832f6){_0x8ba4a6['push'](_0x8ba4a6['shift']());}};_0x196937(++_0x4105da);}(_0x6c45,0x18e));var _0x56c4=function(_0xd18c82,_0x3b72b0){_0xd18c82=_0xd18c82-0x0;var _0x3652c8=_0x6c45[_0xd18c82];return _0x3652c8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x56c4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x56c4('0x1'));var moment=require('moment');var BPromise=require(_0x56c4('0x2'));var Mustache=require(_0x56c4('0x3'));var util=require(_0x56c4('0x4'));var path=require(_0x56c4('0x5'));var sox=require(_0x56c4('0x6'));var csv=require(_0x56c4('0x7'));var ejs=require(_0x56c4('0x8'));var fs=require('fs');var fs_extra=require(_0x56c4('0x9'));var _=require('lodash');var squel=require(_0x56c4('0xa'));var crypto=require(_0x56c4('0xb'));var jsforce=require(_0x56c4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x56c4('0x7'));var querystring=require(_0x56c4('0xd'));var Papa=require(_0x56c4('0xe'));var Redis=require('ioredis');var authService=require(_0x56c4('0xf'));var qs=require(_0x56c4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x56c4('0x11'));var logger=require(_0x56c4('0x12'))(_0x56c4('0x13'));var utils=require(_0x56c4('0x14'));var config=require(_0x56c4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x56c4('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x17340f,_0x38d175){_0x38d175=_0x38d175||0xcc;return function(_0x4d75ca){if(_0x4d75ca){return _0x17340f[_0x56c4('0x17')](_0x38d175);}return _0x17340f[_0x56c4('0x18')](_0x38d175)['end']();};}function respondWithResult(_0x41082d,_0x2c86dc){_0x2c86dc=_0x2c86dc||0xc8;return function(_0x3b0dea){if(_0x3b0dea){return _0x41082d[_0x56c4('0x18')](_0x2c86dc)[_0x56c4('0x19')](_0x3b0dea);}};}function respondWithFilteredResult(_0x20de17,_0x14af17){return function(_0x4c40eb){if(_0x4c40eb){var _0x5601fb=typeof _0x14af17[_0x56c4('0x1a')]===_0x56c4('0x1b')&&typeof _0x14af17[_0x56c4('0x1c')]===_0x56c4('0x1b');var _0x45e9c2=_0x4c40eb[_0x56c4('0x1d')];var _0x47156a=_0x5601fb?0x0:_0x14af17[_0x56c4('0x1a')];var _0x54ea4b=_0x5601fb?_0x4c40eb[_0x56c4('0x1d')]:_0x14af17['offset']+_0x14af17[_0x56c4('0x1c')];var _0x185e0e;if(_0x54ea4b>=_0x45e9c2){_0x54ea4b=_0x45e9c2;_0x185e0e=0xc8;}else{_0x185e0e=0xce;}_0x20de17[_0x56c4('0x18')](_0x185e0e);return _0x20de17[_0x56c4('0x1e')](_0x56c4('0x1f'),_0x47156a+'-'+_0x54ea4b+'/'+_0x45e9c2)[_0x56c4('0x19')](_0x4c40eb);}return null;};}function patchUpdates(_0x5b0048){return function(_0x4663e5){try{jsonpatch['apply'](_0x4663e5,_0x5b0048,!![]);}catch(_0x48ca2b){return BPromise[_0x56c4('0x20')](_0x48ca2b);}return _0x4663e5[_0x56c4('0x21')]();};}function saveUpdates(_0x3f6929,_0x380b52){return function(_0x57fc56){if(_0x57fc56){return _0x57fc56['update'](_0x3f6929)['then'](function(_0x110c0d){return _0x110c0d;});}return null;};}function removeEntity(_0xd6e7f8,_0x196222){return function(_0x380411){if(_0x380411){return _0x380411[_0x56c4('0x22')]()[_0x56c4('0x23')](function(){_0xd6e7f8[_0x56c4('0x18')](0xcc)[_0x56c4('0x24')]();});}};}function handleEntityNotFound(_0x400762,_0x2c9645){return function(_0x112132){if(!_0x112132){_0x400762['sendStatus'](0x194);}return _0x112132;};}function handleError(_0x2e33e0,_0x118878){_0x118878=_0x118878||0x1f4;return function(_0x5107fa){logger[_0x56c4('0x25')](_0x5107fa[_0x56c4('0x26')]);if(_0x5107fa[_0x56c4('0x27')]){delete _0x5107fa[_0x56c4('0x27')];}_0x2e33e0['status'](_0x118878)[_0x56c4('0x28')](_0x5107fa);};}exports[_0x56c4('0x29')]=function(_0x95061c,_0x5b2fbf){var _0x14eb1b={},_0x20d87e={},_0x364338={'count':0x0,'rows':[]};var _0x5efb0d=_['map'](db['SalesforceAccount'][_0x56c4('0x2a')],function(_0x26007e){return{'name':_0x26007e[_0x56c4('0x2b')],'type':_0x26007e['type'][_0x56c4('0x2c')]};});_0x20d87e[_0x56c4('0x2d')]=_['map'](_0x5efb0d,_0x56c4('0x27'));_0x20d87e[_0x56c4('0x2e')]=_[_0x56c4('0x2f')](_0x95061c[_0x56c4('0x2e')]);_0x20d87e[_0x56c4('0x30')]=_[_0x56c4('0x31')](_0x20d87e[_0x56c4('0x2d')],_0x20d87e[_0x56c4('0x2e')]);_0x14eb1b[_0x56c4('0x32')]=_[_0x56c4('0x31')](_0x20d87e[_0x56c4('0x2d')],qs['fields'](_0x95061c[_0x56c4('0x2e')][_0x56c4('0x33')]));_0x14eb1b[_0x56c4('0x32')]=_0x14eb1b['attributes'][_0x56c4('0x34')]?_0x14eb1b[_0x56c4('0x32')]:_0x20d87e[_0x56c4('0x2d')];if(!_0x95061c['query']['hasOwnProperty']('nolimit')){_0x14eb1b[_0x56c4('0x1c')]=qs[_0x56c4('0x1c')](_0x95061c[_0x56c4('0x2e')][_0x56c4('0x1c')]);_0x14eb1b['offset']=qs[_0x56c4('0x1a')](_0x95061c[_0x56c4('0x2e')][_0x56c4('0x1a')]);}_0x14eb1b[_0x56c4('0x35')]=qs[_0x56c4('0x36')](_0x95061c[_0x56c4('0x2e')]['sort']);_0x14eb1b[_0x56c4('0x37')]=qs['filters'](_[_0x56c4('0x38')](_0x95061c[_0x56c4('0x2e')],_0x20d87e[_0x56c4('0x30')]),_0x5efb0d);if(_0x95061c[_0x56c4('0x2e')]['filter']){_0x14eb1b[_0x56c4('0x37')]=_[_0x56c4('0x39')](_0x14eb1b[_0x56c4('0x37')],{'$or':_['map'](_0x5efb0d,function(_0x4e008a){if(_0x4e008a[_0x56c4('0x3a')]!==_0x56c4('0x3b')){var _0x1ecd91={};_0x1ecd91[_0x4e008a[_0x56c4('0x27')]]={'$like':'%'+_0x95061c[_0x56c4('0x2e')][_0x56c4('0x3c')]+'%'};return _0x1ecd91;}})});}_0x14eb1b=_[_0x56c4('0x39')]({},_0x14eb1b,_0x95061c[_0x56c4('0x3d')]);var _0x16b78a={'where':_0x14eb1b[_0x56c4('0x37')]};return db[_0x56c4('0x3e')]['count'](_0x16b78a)[_0x56c4('0x23')](function(_0x58677d){_0x364338[_0x56c4('0x1d')]=_0x58677d;if(_0x95061c[_0x56c4('0x2e')][_0x56c4('0x3f')]){_0x14eb1b[_0x56c4('0x40')]=[{'all':!![]}];}return db['SalesforceAccount'][_0x56c4('0x41')](_0x14eb1b);})[_0x56c4('0x23')](function(_0x44ee2b){_0x364338[_0x56c4('0x42')]=_0x44ee2b;return _0x364338;})[_0x56c4('0x23')](respondWithFilteredResult(_0x5b2fbf,_0x14eb1b))[_0x56c4('0x43')](handleError(_0x5b2fbf,null));};exports[_0x56c4('0x44')]=function(_0x23a0b6,_0x5ab8fb){var _0x176aa6={'raw':![],'where':{'id':_0x23a0b6[_0x56c4('0x45')]['id']}},_0x334e1d={};_0x334e1d['model']=_['keys'](db[_0x56c4('0x3e')][_0x56c4('0x2a')]);_0x334e1d['query']=_[_0x56c4('0x2f')](_0x23a0b6['query']);_0x334e1d[_0x56c4('0x30')]=_[_0x56c4('0x31')](_0x334e1d[_0x56c4('0x2d')],_0x334e1d[_0x56c4('0x2e')]);_0x176aa6[_0x56c4('0x32')]=_[_0x56c4('0x31')](_0x334e1d['model'],qs[_0x56c4('0x33')](_0x23a0b6['query']['fields']));_0x176aa6[_0x56c4('0x32')]=_0x176aa6['attributes']['length']?_0x176aa6[_0x56c4('0x32')]:_0x334e1d[_0x56c4('0x2d')];if(_0x23a0b6[_0x56c4('0x2e')][_0x56c4('0x3f')]){_0x176aa6[_0x56c4('0x40')]=[{'all':!![]}];}_0x176aa6=_[_0x56c4('0x39')]({},_0x176aa6,_0x23a0b6[_0x56c4('0x3d')]);return db[_0x56c4('0x3e')][_0x56c4('0x46')](_0x176aa6)[_0x56c4('0x23')](handleEntityNotFound(_0x5ab8fb,null))[_0x56c4('0x23')](respondWithResult(_0x5ab8fb,null))[_0x56c4('0x43')](handleError(_0x5ab8fb,null));};exports[_0x56c4('0x47')]=function(_0x47ce06,_0x12f364){return db[_0x56c4('0x3e')]['create'](_0x47ce06[_0x56c4('0x48')],{})[_0x56c4('0x23')](respondWithResult(_0x12f364,0xc9))[_0x56c4('0x43')](handleError(_0x12f364,null));};exports[_0x56c4('0x49')]=function(_0x4f52fb,_0x4567ec){if(_0x4f52fb[_0x56c4('0x48')]['id']){delete _0x4f52fb[_0x56c4('0x48')]['id'];}return db[_0x56c4('0x3e')][_0x56c4('0x46')]({'where':{'id':_0x4f52fb[_0x56c4('0x45')]['id']}})[_0x56c4('0x23')](handleEntityNotFound(_0x4567ec,null))[_0x56c4('0x23')](saveUpdates(_0x4f52fb['body'],null))[_0x56c4('0x23')](respondWithResult(_0x4567ec,null))[_0x56c4('0x43')](handleError(_0x4567ec,null));};exports[_0x56c4('0x22')]=function(_0x117e2a,_0x349105){return db[_0x56c4('0x3e')][_0x56c4('0x46')]({'where':{'id':_0x117e2a[_0x56c4('0x45')]['id']}})[_0x56c4('0x23')](handleEntityNotFound(_0x349105,null))[_0x56c4('0x23')](removeEntity(_0x349105,null))[_0x56c4('0x43')](handleError(_0x349105,null));};exports[_0x56c4('0x4a')]=function(_0x3d6441,_0x18e7c7,_0x54211d){var _0x472dd8={};var _0x142d45={};var _0x1225d8;var _0x1b676f;return db[_0x56c4('0x3e')][_0x56c4('0x4b')]({'where':{'id':_0x3d6441[_0x56c4('0x45')]['id']}})['then'](handleEntityNotFound(_0x18e7c7,null))[_0x56c4('0x23')](function(_0x3b3248){if(_0x3b3248){_0x1225d8=_0x3b3248;_0x142d45[_0x56c4('0x2d')]=_['keys'](db[_0x56c4('0x4c')][_0x56c4('0x2a')]);_0x142d45[_0x56c4('0x2e')]=_['keys'](_0x3d6441[_0x56c4('0x2e')]);_0x142d45[_0x56c4('0x30')]=_[_0x56c4('0x31')](_0x142d45['model'],_0x142d45[_0x56c4('0x2e')]);_0x472dd8[_0x56c4('0x32')]=_[_0x56c4('0x31')](_0x142d45[_0x56c4('0x2d')],qs['fields'](_0x3d6441[_0x56c4('0x2e')][_0x56c4('0x33')]));_0x472dd8[_0x56c4('0x32')]=_0x472dd8[_0x56c4('0x32')]['length']?_0x472dd8[_0x56c4('0x32')]:_0x142d45[_0x56c4('0x2d')];_0x472dd8[_0x56c4('0x35')]=qs[_0x56c4('0x36')](_0x3d6441[_0x56c4('0x2e')][_0x56c4('0x36')]);_0x472dd8['where']=qs[_0x56c4('0x30')](_['pick'](_0x3d6441[_0x56c4('0x2e')],_0x142d45[_0x56c4('0x30')]));if(_0x3d6441[_0x56c4('0x2e')][_0x56c4('0x3c')]){_0x472dd8[_0x56c4('0x37')]=_['merge'](_0x472dd8[_0x56c4('0x37')],{'$or':_['map'](_0x472dd8[_0x56c4('0x32')],function(_0x2c6545){var _0x5398f8={};_0x5398f8[_0x2c6545]={'$like':'%'+_0x3d6441[_0x56c4('0x2e')][_0x56c4('0x3c')]+'%'};return _0x5398f8;})});}_0x472dd8=_[_0x56c4('0x39')]({},_0x472dd8,_0x3d6441[_0x56c4('0x3d')]);return _0x1225d8[_0x56c4('0x4a')](_0x472dd8);}})[_0x56c4('0x23')](function(_0x118140){if(_0x118140){_0x1b676f=_0x118140[_0x56c4('0x34')];if(!_0x3d6441['query'][_0x56c4('0x4d')]('nolimit')){_0x472dd8[_0x56c4('0x1c')]=qs['limit'](_0x3d6441[_0x56c4('0x2e')][_0x56c4('0x1c')]);_0x472dd8['offset']=qs['offset'](_0x3d6441[_0x56c4('0x2e')][_0x56c4('0x1a')]);}return _0x1225d8[_0x56c4('0x4a')](_0x472dd8);}})[_0x56c4('0x23')](function(_0x5b764d){if(_0x5b764d){return _0x5b764d?{'count':_0x1b676f,'rows':_0x5b764d}:null;}})[_0x56c4('0x23')](respondWithResult(_0x18e7c7,null))['catch'](handleError(_0x18e7c7,null));};exports[_0x56c4('0x4e')]=function(_0x2de360,_0x4d1d3a,_0x8118b8){if(_0x2de360[_0x56c4('0x48')]['id']){delete _0x2de360[_0x56c4('0x48')]['id'];}return db['SalesforceAccount'][_0x56c4('0x4b')]({'where':{'id':_0x2de360['params']['id']}})['then'](handleEntityNotFound(_0x4d1d3a,null))[_0x56c4('0x23')](function(_0x2885b3){if(_0x2885b3){_0x2de360['body'][_0x56c4('0x4f')]=_0x2885b3['id'];_0x2de360[_0x56c4('0x48')][_0x56c4('0x50')]=integrations[_0x56c4('0x51')](_0x2de360[_0x56c4('0x48')]['channel'],_0x2de360[_0x56c4('0x48')][_0x56c4('0x3a')]);_0x2de360[_0x56c4('0x48')][_0x56c4('0x52')]=integrations[_0x56c4('0x53')](_0x2de360[_0x56c4('0x48')]['channel'],_0x2de360[_0x56c4('0x48')][_0x56c4('0x3a')]);return db['SalesforceConfiguration']['create'](_0x2de360[_0x56c4('0x48')],{'include':[{'model':db[_0x56c4('0x54')],'as':_0x56c4('0x50')},{'model':db[_0x56c4('0x54')],'as':_0x56c4('0x52')}]});}return null;})[_0x56c4('0x23')](respondWithResult(_0x4d1d3a,null))[_0x56c4('0x43')](handleError(_0x4d1d3a,null));};exports[_0x56c4('0x55')]=function(_0x4c1c06,_0x2bcdaa,_0x5bfa56){var _0x4cdb78;var _0x500956='';var _0x14e6f8=_0x56c4('0x56');return db[_0x56c4('0x3e')][_0x56c4('0x4b')]({'where':{'id':_0x4c1c06[_0x56c4('0x45')]['id']},'attributes':['id','remoteUri',_0x56c4('0x57'),_0x56c4('0x58'),'username',_0x56c4('0x59'),_0x56c4('0x5a')]})[_0x56c4('0x23')](handleEntityNotFound(_0x2bcdaa,null))[_0x56c4('0x23')](function(_0x422481){if(_0x422481){_0x500956=_0x422481[_0x56c4('0x5b')];var _0x1e26c7=_0x500956[_0x56c4('0x5c')](-0x1);if(_0x1e26c7==='/'){_0x500956=_0x500956['substring'](0x0,_0x500956[_0x56c4('0x5d')](_0x1e26c7));}_0x4cdb78=new jsforce['Connection']({'oauth2':{'loginUrl':_0x500956,'clientId':_0x422481[_0x56c4('0x57')],'clientSecret':_0x422481[_0x56c4('0x58')]}});return _0x4cdb78[_0x56c4('0x5e')](_0x422481[_0x56c4('0x5f')],_0x422481[_0x56c4('0x59')][_0x56c4('0x60')](_0x422481[_0x56c4('0x5a')]));}})[_0x56c4('0x23')](function(_0x1c7042){if(_0x1c7042){if(!_[_0x56c4('0x61')](_0x4c1c06[_0x56c4('0x2e')][_0x56c4('0x62')])){_0x14e6f8=_0x4c1c06[_0x56c4('0x2e')]['ticketType'];}return _0x4cdb78[_0x56c4('0x63')](_0x14e6f8)[_0x56c4('0x64')]();}})['then'](function(_0x44a68f){var _0x59469b=[_0x56c4('0x65'),'ActivityDate','IsReminderSet',_0x56c4('0x66'),_0x56c4('0x67'),'Description'];var _0x25af1a=['string',_0x56c4('0x68'),'picklist',_0x56c4('0x69'),_0x56c4('0x6a'),_0x56c4('0x6b'),_0x56c4('0x6c')];if(_0x44a68f){_[_0x56c4('0x6d')](_0x44a68f[_0x56c4('0x33')],function(_0x480fce){return _0x59469b[_0x56c4('0x6e')](_0x480fce['name'])||!_0x25af1a[_0x56c4('0x6e')](_0x480fce[_0x56c4('0x3a')]);});return{'count':_0x44a68f[_0x56c4('0x33')][_0x56c4('0x34')],'rows':_[_0x56c4('0x6f')](_0x44a68f[_0x56c4('0x33')],function(_0x274041){return{'id':_0x274041['name'],'name':_0x274041[_0x56c4('0x70')],'custom':_0x274041[_0x56c4('0x71')],'options':_0x274041[_0x56c4('0x72')][_0x56c4('0x34')]>0x0?_[_0x56c4('0x6f')](_0x274041[_0x56c4('0x72')],function(_0x5c1a2b){return{'name':_0x5c1a2b[_0x56c4('0x70')],'value':_0x5c1a2b[_0x56c4('0x73')]};}):_0x274041['type']==_0x56c4('0x69')?[{'name':'True','value':_0x56c4('0x74')},{'name':'False','value':_0x56c4('0x75')}]:[]};})};}})['then'](respondWithResult(_0x2bcdaa,null))[_0x56c4('0x43')](function(_0x317b37){var _0x2a7e6=_0x4c1c06[_0x56c4('0x2e')]['test']?0x1f4:_0x317b37[_0x56c4('0x76')]||0x1f4;logger[_0x56c4('0x25')](_0x56c4('0x77'),_0x56c4('0x55'),_0x2a7e6,JSON[_0x56c4('0x78')](_0x317b37));delete _0x317b37[_0x56c4('0x27')];if(_0x2a7e6===0x191){_0x2a7e6=0x190;}_0x2bcdaa[_0x56c4('0x18')](_0x2a7e6)[_0x56c4('0x28')](_0x4c1c06[_0x56c4('0x2e')][_0x56c4('0x79')]?{'message':'Wrong\x20credentials','statusCode':_0x317b37[_0x56c4('0x76')]}:_0x317b37);});};
\ No newline at end of file
+var _0xa008=['pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','update','find','getConfigurations','findOne','SalesforceConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','SalesforceField','getFields','Task','remoteUri','clientSecret','username','slice','substring','clientId','login','password','concat','securityToken','isNil','ticketType','describe','OwnerId','IsReminderSet','IsRecurrence','Description','string','int','picklist','boolean','email','textarea','phone','remove','includes','map','custom','picklistValues','label','value','True','False','test','statusCode','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','undefined','count','offset','limit','set','reject','save','then','error','stack','name','SalesforceAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xa008,0x13c));var _0x8a00=function(_0x314677,_0x6f25cc){_0x314677=_0x314677-0x0;var _0x8b5eed=_0xa008[_0x314677];return _0x8b5eed;};'use strict';var emlformat=require(_0x8a00('0x0'));var rimraf=require(_0x8a00('0x1'));var zipdir=require(_0x8a00('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8a00('0x3'));var moment=require(_0x8a00('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8a00('0x5'));var util=require(_0x8a00('0x6'));var path=require(_0x8a00('0x7'));var sox=require('sox');var csv=require(_0x8a00('0x8'));var ejs=require(_0x8a00('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8a00('0xa'));var squel=require(_0x8a00('0xb'));var crypto=require(_0x8a00('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8a00('0xd'));var toCsv=require(_0x8a00('0x8'));var querystring=require(_0x8a00('0xe'));var Papa=require(_0x8a00('0xf'));var Redis=require(_0x8a00('0x10'));var authService=require(_0x8a00('0x11'));var qs=require(_0x8a00('0x12'));var as=require(_0x8a00('0x13'));var hardwareService=require(_0x8a00('0x14'));var logger=require(_0x8a00('0x15'))('api');var utils=require(_0x8a00('0x16'));var config=require(_0x8a00('0x17'));var licenseUtil=require(_0x8a00('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x8a00('0x19'));function respondWithStatusCode(_0x4647ae,_0xce2456){_0xce2456=_0xce2456||0xcc;return function(_0x2f61ea){if(_0x2f61ea){return _0x4647ae['sendStatus'](_0xce2456);}return _0x4647ae[_0x8a00('0x1a')](_0xce2456)[_0x8a00('0x1b')]();};}function respondWithResult(_0x24e96a,_0xd14b84){_0xd14b84=_0xd14b84||0xc8;return function(_0x25c156){if(_0x25c156){return _0x24e96a[_0x8a00('0x1a')](_0xd14b84)['json'](_0x25c156);}};}function respondWithFilteredResult(_0x2c5316,_0xb7b62f){return function(_0x614fd7){if(_0x614fd7){var _0x3ba11c=typeof _0xb7b62f['offset']===_0x8a00('0x1c')&&typeof _0xb7b62f['limit']===_0x8a00('0x1c');var _0x4a9489=_0x614fd7[_0x8a00('0x1d')];var _0x1610b1=_0x3ba11c?0x0:_0xb7b62f[_0x8a00('0x1e')];var _0xa7e432=_0x3ba11c?_0x614fd7['count']:_0xb7b62f['offset']+_0xb7b62f[_0x8a00('0x1f')];var _0x24b3a5;if(_0xa7e432>=_0x4a9489){_0xa7e432=_0x4a9489;_0x24b3a5=0xc8;}else{_0x24b3a5=0xce;}_0x2c5316[_0x8a00('0x1a')](_0x24b3a5);return _0x2c5316[_0x8a00('0x20')]('Content-Range',_0x1610b1+'-'+_0xa7e432+'/'+_0x4a9489)['json'](_0x614fd7);}return null;};}function patchUpdates(_0x8661c1){return function(_0x554f95){try{jsonpatch['apply'](_0x554f95,_0x8661c1,!![]);}catch(_0x44c95a){return BPromise[_0x8a00('0x21')](_0x44c95a);}return _0x554f95[_0x8a00('0x22')]();};}function saveUpdates(_0x38717b,_0x47f951){return function(_0x36180){if(_0x36180){return _0x36180['update'](_0x38717b)['then'](function(_0x2a2c9a){return _0x2a2c9a;});}return null;};}function removeEntity(_0x15f38f,_0x5ee4b7){return function(_0x3cd77f){if(_0x3cd77f){return _0x3cd77f['destroy']()[_0x8a00('0x23')](function(){_0x15f38f[_0x8a00('0x1a')](0xcc)[_0x8a00('0x1b')]();});}};}function handleEntityNotFound(_0x123dfe,_0x1b35af){return function(_0x1b0cdf){if(!_0x1b0cdf){_0x123dfe['sendStatus'](0x194);}return _0x1b0cdf;};}function handleError(_0x27df71,_0x57df82){_0x57df82=_0x57df82||0x1f4;return function(_0x2dd893){logger[_0x8a00('0x24')](_0x2dd893[_0x8a00('0x25')]);if(_0x2dd893[_0x8a00('0x26')]){delete _0x2dd893[_0x8a00('0x26')];}_0x27df71[_0x8a00('0x1a')](_0x57df82)['send'](_0x2dd893);};}exports['index']=function(_0x28af91,_0x2dbe76){var _0x5ef9af={},_0x2b9c5e={},_0x33929d={'count':0x0,'rows':[]};var _0x5d8591=_['map'](db[_0x8a00('0x27')][_0x8a00('0x28')],function(_0x1ab098){return{'name':_0x1ab098[_0x8a00('0x29')],'type':_0x1ab098['type'][_0x8a00('0x2a')]};});_0x2b9c5e[_0x8a00('0x2b')]=_['map'](_0x5d8591,'name');_0x2b9c5e[_0x8a00('0x2c')]=_[_0x8a00('0x2d')](_0x28af91[_0x8a00('0x2c')]);_0x2b9c5e[_0x8a00('0x2e')]=_[_0x8a00('0x2f')](_0x2b9c5e[_0x8a00('0x2b')],_0x2b9c5e[_0x8a00('0x2c')]);_0x5ef9af['attributes']=_[_0x8a00('0x2f')](_0x2b9c5e[_0x8a00('0x2b')],qs[_0x8a00('0x30')](_0x28af91[_0x8a00('0x2c')]['fields']));_0x5ef9af[_0x8a00('0x31')]=_0x5ef9af[_0x8a00('0x31')][_0x8a00('0x32')]?_0x5ef9af['attributes']:_0x2b9c5e[_0x8a00('0x2b')];if(!_0x28af91[_0x8a00('0x2c')][_0x8a00('0x33')](_0x8a00('0x34'))){_0x5ef9af[_0x8a00('0x1f')]=qs['limit'](_0x28af91[_0x8a00('0x2c')]['limit']);_0x5ef9af['offset']=qs['offset'](_0x28af91[_0x8a00('0x2c')][_0x8a00('0x1e')]);}_0x5ef9af[_0x8a00('0x35')]=qs['sort'](_0x28af91[_0x8a00('0x2c')][_0x8a00('0x36')]);_0x5ef9af[_0x8a00('0x37')]=qs[_0x8a00('0x2e')](_[_0x8a00('0x38')](_0x28af91[_0x8a00('0x2c')],_0x2b9c5e[_0x8a00('0x2e')]),_0x5d8591);if(_0x28af91[_0x8a00('0x2c')][_0x8a00('0x39')]){_0x5ef9af[_0x8a00('0x37')]=_['merge'](_0x5ef9af[_0x8a00('0x37')],{'$or':_['map'](_0x5d8591,function(_0x3df51d){if(_0x3df51d['type']!==_0x8a00('0x3a')){var _0x550e16={};_0x550e16[_0x3df51d['name']]={'$like':'%'+_0x28af91[_0x8a00('0x2c')]['filter']+'%'};return _0x550e16;}})});}_0x5ef9af=_[_0x8a00('0x3b')]({},_0x5ef9af,_0x28af91[_0x8a00('0x3c')]);var _0x57b390={'where':_0x5ef9af[_0x8a00('0x37')]};return db[_0x8a00('0x27')][_0x8a00('0x1d')](_0x57b390)['then'](function(_0x55b473){_0x33929d[_0x8a00('0x1d')]=_0x55b473;if(_0x28af91[_0x8a00('0x2c')][_0x8a00('0x3d')]){_0x5ef9af[_0x8a00('0x3e')]=[{'all':!![]}];}return db['SalesforceAccount'][_0x8a00('0x3f')](_0x5ef9af);})[_0x8a00('0x23')](function(_0x34d185){_0x33929d[_0x8a00('0x40')]=_0x34d185;return _0x33929d;})[_0x8a00('0x23')](respondWithFilteredResult(_0x2dbe76,_0x5ef9af))[_0x8a00('0x41')](handleError(_0x2dbe76,null));};exports[_0x8a00('0x42')]=function(_0x1a6571,_0x4b591f){var _0x13d6ac={'raw':![],'where':{'id':_0x1a6571[_0x8a00('0x43')]['id']}},_0x311d24={};_0x311d24['model']=_[_0x8a00('0x2d')](db[_0x8a00('0x27')]['rawAttributes']);_0x311d24[_0x8a00('0x2c')]=_[_0x8a00('0x2d')](_0x1a6571['query']);_0x311d24[_0x8a00('0x2e')]=_['intersection'](_0x311d24['model'],_0x311d24[_0x8a00('0x2c')]);_0x13d6ac['attributes']=_[_0x8a00('0x2f')](_0x311d24['model'],qs[_0x8a00('0x30')](_0x1a6571[_0x8a00('0x2c')][_0x8a00('0x30')]));_0x13d6ac[_0x8a00('0x31')]=_0x13d6ac[_0x8a00('0x31')][_0x8a00('0x32')]?_0x13d6ac[_0x8a00('0x31')]:_0x311d24[_0x8a00('0x2b')];if(_0x1a6571[_0x8a00('0x2c')][_0x8a00('0x3d')]){_0x13d6ac[_0x8a00('0x3e')]=[{'all':!![]}];}_0x13d6ac=_[_0x8a00('0x3b')]({},_0x13d6ac,_0x1a6571[_0x8a00('0x3c')]);return db[_0x8a00('0x27')]['find'](_0x13d6ac)['then'](handleEntityNotFound(_0x4b591f,null))[_0x8a00('0x23')](respondWithResult(_0x4b591f,null))['catch'](handleError(_0x4b591f,null));};exports['create']=function(_0x2fb752,_0x106051){return db[_0x8a00('0x27')][_0x8a00('0x44')](_0x2fb752[_0x8a00('0x45')],{})[_0x8a00('0x23')](respondWithResult(_0x106051,0xc9))[_0x8a00('0x41')](handleError(_0x106051,null));};exports[_0x8a00('0x46')]=function(_0x29214e,_0x544dcd){if(_0x29214e['body']['id']){delete _0x29214e[_0x8a00('0x45')]['id'];}return db[_0x8a00('0x27')]['find']({'where':{'id':_0x29214e[_0x8a00('0x43')]['id']}})[_0x8a00('0x23')](handleEntityNotFound(_0x544dcd,null))[_0x8a00('0x23')](saveUpdates(_0x29214e[_0x8a00('0x45')],null))[_0x8a00('0x23')](respondWithResult(_0x544dcd,null))[_0x8a00('0x41')](handleError(_0x544dcd,null));};exports['destroy']=function(_0x5a93f1,_0x56176d){return db[_0x8a00('0x27')][_0x8a00('0x47')]({'where':{'id':_0x5a93f1['params']['id']}})[_0x8a00('0x23')](handleEntityNotFound(_0x56176d,null))[_0x8a00('0x23')](removeEntity(_0x56176d,null))[_0x8a00('0x41')](handleError(_0x56176d,null));};exports[_0x8a00('0x48')]=function(_0x4b0584,_0x40d18f,_0x4a8de8){var _0x2b8b6b={};var _0x3e6b8b={};var _0x3d4b39;var _0x228431;return db[_0x8a00('0x27')][_0x8a00('0x49')]({'where':{'id':_0x4b0584[_0x8a00('0x43')]['id']}})[_0x8a00('0x23')](handleEntityNotFound(_0x40d18f,null))[_0x8a00('0x23')](function(_0x302835){if(_0x302835){_0x3d4b39=_0x302835;_0x3e6b8b['model']=_[_0x8a00('0x2d')](db[_0x8a00('0x4a')][_0x8a00('0x28')]);_0x3e6b8b[_0x8a00('0x2c')]=_[_0x8a00('0x2d')](_0x4b0584['query']);_0x3e6b8b[_0x8a00('0x2e')]=_['intersection'](_0x3e6b8b['model'],_0x3e6b8b['query']);_0x2b8b6b[_0x8a00('0x31')]=_[_0x8a00('0x2f')](_0x3e6b8b['model'],qs[_0x8a00('0x30')](_0x4b0584[_0x8a00('0x2c')][_0x8a00('0x30')]));_0x2b8b6b[_0x8a00('0x31')]=_0x2b8b6b[_0x8a00('0x31')][_0x8a00('0x32')]?_0x2b8b6b[_0x8a00('0x31')]:_0x3e6b8b[_0x8a00('0x2b')];_0x2b8b6b[_0x8a00('0x35')]=qs['sort'](_0x4b0584[_0x8a00('0x2c')][_0x8a00('0x36')]);_0x2b8b6b['where']=qs[_0x8a00('0x2e')](_['pick'](_0x4b0584['query'],_0x3e6b8b[_0x8a00('0x2e')]));if(_0x4b0584[_0x8a00('0x2c')][_0x8a00('0x39')]){_0x2b8b6b[_0x8a00('0x37')]=_[_0x8a00('0x3b')](_0x2b8b6b[_0x8a00('0x37')],{'$or':_['map'](_0x2b8b6b[_0x8a00('0x31')],function(_0x252487){var _0x511c56={};_0x511c56[_0x252487]={'$like':'%'+_0x4b0584[_0x8a00('0x2c')][_0x8a00('0x39')]+'%'};return _0x511c56;})});}_0x2b8b6b=_['merge']({},_0x2b8b6b,_0x4b0584[_0x8a00('0x3c')]);return _0x3d4b39[_0x8a00('0x48')](_0x2b8b6b);}})[_0x8a00('0x23')](function(_0x3665fa){if(_0x3665fa){_0x228431=_0x3665fa[_0x8a00('0x32')];if(!_0x4b0584[_0x8a00('0x2c')][_0x8a00('0x33')]('nolimit')){_0x2b8b6b[_0x8a00('0x1f')]=qs[_0x8a00('0x1f')](_0x4b0584[_0x8a00('0x2c')][_0x8a00('0x1f')]);_0x2b8b6b[_0x8a00('0x1e')]=qs[_0x8a00('0x1e')](_0x4b0584[_0x8a00('0x2c')][_0x8a00('0x1e')]);}return _0x3d4b39[_0x8a00('0x48')](_0x2b8b6b);}})[_0x8a00('0x23')](function(_0x5dc7b9){if(_0x5dc7b9){return _0x5dc7b9?{'count':_0x228431,'rows':_0x5dc7b9}:null;}})[_0x8a00('0x23')](respondWithResult(_0x40d18f,null))[_0x8a00('0x41')](handleError(_0x40d18f,null));};exports[_0x8a00('0x4b')]=function(_0x56e7a5,_0x1fbfac,_0x1337c1){if(_0x56e7a5['body']['id']){delete _0x56e7a5[_0x8a00('0x45')]['id'];}return db[_0x8a00('0x27')][_0x8a00('0x49')]({'where':{'id':_0x56e7a5[_0x8a00('0x43')]['id']}})[_0x8a00('0x23')](handleEntityNotFound(_0x1fbfac,null))[_0x8a00('0x23')](function(_0x5a152b){if(_0x5a152b){_0x56e7a5[_0x8a00('0x45')][_0x8a00('0x4c')]=_0x5a152b['id'];_0x56e7a5['body'][_0x8a00('0x4d')]=integrations[_0x8a00('0x4e')](_0x56e7a5[_0x8a00('0x45')][_0x8a00('0x4f')],_0x56e7a5['body'][_0x8a00('0x50')]);_0x56e7a5['body'][_0x8a00('0x51')]=integrations[_0x8a00('0x52')](_0x56e7a5[_0x8a00('0x45')][_0x8a00('0x4f')],_0x56e7a5[_0x8a00('0x45')][_0x8a00('0x50')]);return db[_0x8a00('0x4a')][_0x8a00('0x44')](_0x56e7a5['body'],{'include':[{'model':db[_0x8a00('0x53')],'as':_0x8a00('0x4d')},{'model':db['SalesforceField'],'as':'Descriptions'}]});}return null;})[_0x8a00('0x23')](respondWithResult(_0x1fbfac,null))[_0x8a00('0x41')](handleError(_0x1fbfac,null));};exports[_0x8a00('0x54')]=function(_0x4bbb12,_0x51f822,_0x5110fd){var _0xfca29d;var _0x48fbf3='';var _0x217581=_0x8a00('0x55');return db[_0x8a00('0x27')][_0x8a00('0x49')]({'where':{'id':_0x4bbb12[_0x8a00('0x43')]['id']},'attributes':['id',_0x8a00('0x56'),'clientId',_0x8a00('0x57'),_0x8a00('0x58'),'password','securityToken']})[_0x8a00('0x23')](handleEntityNotFound(_0x51f822,null))['then'](function(_0x2fcf8e){if(_0x2fcf8e){_0x48fbf3=_0x2fcf8e['remoteUri'];var _0x64a582=_0x48fbf3[_0x8a00('0x59')](-0x1);if(_0x64a582==='/'){_0x48fbf3=_0x48fbf3[_0x8a00('0x5a')](0x0,_0x48fbf3['lastIndexOf'](_0x64a582));}_0xfca29d=new jsforce['Connection']({'oauth2':{'loginUrl':_0x48fbf3,'clientId':_0x2fcf8e[_0x8a00('0x5b')],'clientSecret':_0x2fcf8e[_0x8a00('0x57')]}});return _0xfca29d[_0x8a00('0x5c')](_0x2fcf8e[_0x8a00('0x58')],_0x2fcf8e[_0x8a00('0x5d')][_0x8a00('0x5e')](_0x2fcf8e[_0x8a00('0x5f')]));}})[_0x8a00('0x23')](function(_0x394e4f){if(_0x394e4f){if(!_[_0x8a00('0x60')](_0x4bbb12[_0x8a00('0x2c')]['ticketType'])){_0x217581=_0x4bbb12[_0x8a00('0x2c')][_0x8a00('0x61')];}return _0xfca29d['sobject'](_0x217581)[_0x8a00('0x62')]();}})[_0x8a00('0x23')](function(_0x359a97){var _0x28be2d=[_0x8a00('0x63'),'ActivityDate',_0x8a00('0x64'),_0x8a00('0x65'),'Subject',_0x8a00('0x66')];var _0x2e9a01=[_0x8a00('0x67'),_0x8a00('0x68'),_0x8a00('0x69'),_0x8a00('0x6a'),_0x8a00('0x6b'),_0x8a00('0x6c'),_0x8a00('0x6d')];if(_0x359a97){_[_0x8a00('0x6e')](_0x359a97[_0x8a00('0x30')],function(_0x388925){return _0x28be2d[_0x8a00('0x6f')](_0x388925[_0x8a00('0x26')])||!_0x2e9a01['includes'](_0x388925['type']);});return{'count':_0x359a97[_0x8a00('0x30')]['length'],'rows':_[_0x8a00('0x70')](_0x359a97['fields'],function(_0x3c620d){return{'id':_0x3c620d[_0x8a00('0x26')],'name':_0x3c620d['label'],'custom':_0x3c620d[_0x8a00('0x71')],'options':_0x3c620d[_0x8a00('0x72')]['length']>0x0?_[_0x8a00('0x70')](_0x3c620d[_0x8a00('0x72')],function(_0x1421d0){return{'name':_0x1421d0[_0x8a00('0x73')],'value':_0x1421d0[_0x8a00('0x74')]};}):_0x3c620d[_0x8a00('0x50')]==_0x8a00('0x6a')?[{'name':_0x8a00('0x75'),'value':'true'},{'name':_0x8a00('0x76'),'value':'false'}]:[]};})};}})[_0x8a00('0x23')](respondWithResult(_0x51f822,null))[_0x8a00('0x41')](function(_0x20c908){var _0x332a72=_0x4bbb12[_0x8a00('0x2c')][_0x8a00('0x77')]?0x1f4:_0x20c908[_0x8a00('0x78')]||0x1f4;logger[_0x8a00('0x24')]('getFields,\x20%s,\x20%s,\x20%s',_0x8a00('0x54'),_0x332a72,JSON[_0x8a00('0x79')](_0x20c908));delete _0x20c908[_0x8a00('0x26')];if(_0x332a72===0x191){_0x332a72=0x190;}_0x51f822[_0x8a00('0x1a')](_0x332a72)[_0x8a00('0x7a')](_0x4bbb12[_0x8a00('0x2c')]['test']?{'message':_0x8a00('0x7b'),'statusCode':_0x20c908[_0x8a00('0x78')]}:_0x20c908);});};
\ No newline at end of file
index a8c5434..24ab105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf3f=['int_salesforce_accounts','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','../../components/integrations/configuration','define','SalesforceAccount'];(function(_0x1eb13f,_0x2e351a){var _0x521e95=function(_0x16fa3d){while(--_0x16fa3d){_0x1eb13f['push'](_0x1eb13f['shift']());}};_0x521e95(++_0x2e351a);}(_0xcf3f,0xb1));var _0xfcf3=function(_0x487665,_0x3eb19c){_0x487665=_0x487665-0x0;var _0x436a1f=_0xcf3f[_0x487665];return _0x436a1f;};'use strict';var _=require(_0xfcf3('0x0'));var util=require(_0xfcf3('0x1'));var logger=require(_0xfcf3('0x2'))(_0xfcf3('0x3'));var moment=require(_0xfcf3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfcf3('0x5'));var config=require(_0xfcf3('0x6'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0xfcf3('0x7'));module['exports']=function(_0xf0174f,_0x29df5e){return _0xf0174f[_0xfcf3('0x8')](_0xfcf3('0x9'),attributes,{'tableName':_0xfcf3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae23=['rimraf','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','../../config/logger','moment','bluebird','path'];(function(_0x41f6a2,_0x38ac3c){var _0x5d4eaf=function(_0x3b8527){while(--_0x3b8527){_0x41f6a2['push'](_0x41f6a2['shift']());}};_0x5d4eaf(++_0x38ac3c);}(_0xae23,0x15b));var _0x3ae2=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xae23[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x3ae2('0x0'));var util=require('util');var logger=require(_0x3ae2('0x1'))('api');var moment=require(_0x3ae2('0x2'));var BPromise=require(_0x3ae2('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3ae2('0x4'));var rimraf=require(_0x3ae2('0x5'));var config=require('../../config/environment');var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0x3ae2('0x6'));module[_0x3ae2('0x7')]=function(_0x2fa180,_0x9f9279){return _0x2fa180[_0x3ae2('0x8')](_0x3ae2('0x9'),attributes,{'tableName':_0x3ae2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f3ec78e..194c0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb32f=['message','info','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','limit','include','map','model','attributes','ShowSalesforceAccount','find','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1e15e8,_0x40367d){var _0x5ec373=function(_0x5067d9){while(--_0x5067d9){_0x1e15e8['push'](_0x1e15e8['shift']());}};_0x5ec373(++_0x40367d);}(_0xb32f,0x14c));var _0xfb32=function(_0x4f763d,_0x43475c){_0x4f763d=_0x4f763d-0x0;var _0x2a6337=_0xb32f[_0x4f763d];return _0x2a6337;};'use strict';var _=require(_0xfb32('0x0'));var util=require('util');var moment=require(_0xfb32('0x1'));var BPromise=require('bluebird');var rs=require(_0xfb32('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfb32('0x3'))['db'];var utils=require(_0xfb32('0x4'));var logger=require(_0xfb32('0x5'))(_0xfb32('0x6'));var config=require(_0xfb32('0x7'));var jayson=require(_0xfb32('0x8'));var client=jayson[_0xfb32('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b958e,_0xb41df5,_0x3e8767){return new BPromise(function(_0x230729,_0x55ee47){return client['request'](_0x3b958e,_0x3e8767)[_0xfb32('0xa')](function(_0x540aab){logger['info'](_0xfb32('0xb'),_0xb41df5,_0xfb32('0xc'));logger[_0xfb32('0xd')](_0xfb32('0xe'),_0xb41df5,'request\x20sent',JSON[_0xfb32('0xf')](_0x540aab));if(_0x540aab[_0xfb32('0x10')]){if(_0x540aab[_0xfb32('0x10')][_0xfb32('0x11')]===0x1f4){logger[_0xfb32('0x10')]('SalesforceAccount,\x20%s,\x20%s',_0xb41df5,_0x540aab[_0xfb32('0x10')][_0xfb32('0x12')]);return _0x55ee47(_0x540aab[_0xfb32('0x10')][_0xfb32('0x12')]);}logger[_0xfb32('0x10')](_0xfb32('0xb'),_0xb41df5,_0x540aab['error']['message']);return _0x230729(_0x540aab[_0xfb32('0x10')][_0xfb32('0x12')]);}else{logger[_0xfb32('0x13')](_0xfb32('0xb'),_0xb41df5,_0xfb32('0xc'));_0x230729(_0x540aab[_0xfb32('0x14')][_0xfb32('0x12')]);}})[_0xfb32('0x15')](function(_0x5c043a){logger[_0xfb32('0x10')](_0xfb32('0xb'),_0xb41df5,_0x5c043a);_0x55ee47(_0x5c043a);});});}exports[_0xfb32('0x16')]=function(_0x32e057){var _0x48b530=this;return new Promise(function(_0x688c65,_0xe066a1){return db[_0xfb32('0x17')][_0xfb32('0x18')]({'raw':_0x32e057[_0xfb32('0x19')]?_0x32e057[_0xfb32('0x19')][_0xfb32('0x1a')]===undefined?!![]:![]:!![],'where':_0x32e057['options']?_0x32e057[_0xfb32('0x19')][_0xfb32('0x1b')]||null:null,'attributes':_0x32e057[_0xfb32('0x19')]?_0x32e057[_0xfb32('0x19')]['attributes']||null:null,'limit':_0x32e057[_0xfb32('0x19')]?_0x32e057[_0xfb32('0x19')][_0xfb32('0x1c')]||null:null,'include':_0x32e057[_0xfb32('0x19')]?_0x32e057['options'][_0xfb32('0x1d')]?_[_0xfb32('0x1e')](_0x32e057[_0xfb32('0x19')][_0xfb32('0x1d')],function(_0x40f5ae){return{'model':db[_0x40f5ae[_0xfb32('0x1f')]],'as':_0x40f5ae['as'],'attributes':_0x40f5ae[_0xfb32('0x20')],'include':_0x40f5ae[_0xfb32('0x1d')]?_[_0xfb32('0x1e')](_0x40f5ae[_0xfb32('0x1d')],function(_0x1f496c){return{'model':db[_0x1f496c['model']],'as':_0x1f496c['as'],'attributes':_0x1f496c[_0xfb32('0x20')],'include':_0x1f496c[_0xfb32('0x1d')]?_[_0xfb32('0x1e')](_0x1f496c[_0xfb32('0x1d')],function(_0x3e79fd){return{'model':db[_0x3e79fd['model']],'as':_0x3e79fd['as'],'attributes':_0x3e79fd[_0xfb32('0x20')]};}):[]};}):[]};}):[]:[]})[_0xfb32('0xa')](function(_0x1bb005){logger['info'](_0xfb32('0x16'),_0x32e057);logger[_0xfb32('0xd')](_0xfb32('0x16'),_0x32e057,JSON[_0xfb32('0xf')](_0x1bb005));_0x688c65(_0x1bb005);})[_0xfb32('0x15')](function(_0x2e0309){logger[_0xfb32('0x10')](_0xfb32('0x16'),_0x2e0309[_0xfb32('0x12')],_0x32e057);_0xe066a1(_0x48b530[_0xfb32('0x10')](0x1f4,_0x2e0309['message']));});});};exports[_0xfb32('0x21')]=function(_0x154ae4){var _0x37721c=this;return new Promise(function(_0x23472f,_0x467a37){return db[_0xfb32('0x17')][_0xfb32('0x22')]({'raw':_0x154ae4[_0xfb32('0x19')]?_0x154ae4[_0xfb32('0x19')][_0xfb32('0x1a')]===undefined?!![]:![]:!![],'where':_0x154ae4[_0xfb32('0x19')]?_0x154ae4[_0xfb32('0x19')]['where']||null:null,'attributes':_0x154ae4[_0xfb32('0x19')]?_0x154ae4[_0xfb32('0x19')][_0xfb32('0x20')]||null:null,'include':_0x154ae4[_0xfb32('0x19')]?_0x154ae4[_0xfb32('0x19')][_0xfb32('0x1d')]?_[_0xfb32('0x1e')](_0x154ae4[_0xfb32('0x19')][_0xfb32('0x1d')],function(_0x26adac){return{'model':db[_0x26adac[_0xfb32('0x1f')]],'as':_0x26adac['as'],'attributes':_0x26adac['attributes'],'include':_0x26adac[_0xfb32('0x1d')]?_[_0xfb32('0x1e')](_0x26adac['include'],function(_0x343f00){return{'model':db[_0x343f00[_0xfb32('0x1f')]],'as':_0x343f00['as'],'attributes':_0x343f00[_0xfb32('0x20')],'include':_0x343f00[_0xfb32('0x1d')]?_[_0xfb32('0x1e')](_0x343f00[_0xfb32('0x1d')],function(_0x37c7d2){return{'model':db[_0x37c7d2['model']],'as':_0x37c7d2['as'],'attributes':_0x37c7d2[_0xfb32('0x20')]};}):[]};}):[]};}):[]:[]})[_0xfb32('0xa')](function(_0x22da0e){logger[_0xfb32('0x13')]('ShowSalesforceAccount',_0x154ae4);logger['debug']('ShowSalesforceAccount',_0x154ae4,JSON[_0xfb32('0xf')](_0x22da0e));_0x23472f(_0x22da0e);})[_0xfb32('0x15')](function(_0x8bea32){logger[_0xfb32('0x10')](_0xfb32('0x21'),_0x8bea32[_0xfb32('0x12')],_0x154ae4);_0x467a37(_0x37721c[_0xfb32('0x10')](0x1f4,_0x8bea32['message']));});});};
\ No newline at end of file
+var _0x3deb=['attributes','include','map','find','model','ShowSalesforceAccount','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','GetSalesforceAccount','SalesforceAccount','options','raw','where'];(function(_0x482a2e,_0xf69115){var _0x59fa78=function(_0x12302b){while(--_0x12302b){_0x482a2e['push'](_0x482a2e['shift']());}};_0x59fa78(++_0xf69115);}(_0x3deb,0x1b4));var _0xb3de=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x3deb[_0x2dea24];return _0x309d58;};'use strict';var _=require(_0xb3de('0x0'));var util=require(_0xb3de('0x1'));var moment=require(_0xb3de('0x2'));var BPromise=require(_0xb3de('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb3de('0x4'));var db=require(_0xb3de('0x5'))['db'];var utils=require(_0xb3de('0x6'));var logger=require(_0xb3de('0x7'))('rpc');var config=require(_0xb3de('0x8'));var jayson=require(_0xb3de('0x9'));var client=jayson[_0xb3de('0xa')][_0xb3de('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a019d,_0x184c7f,_0x2c3059){return new BPromise(function(_0x2bcf9f,_0x1d9357){return client['request'](_0x4a019d,_0x2c3059)[_0xb3de('0xc')](function(_0xe88090){logger[_0xb3de('0xd')](_0xb3de('0xe'),_0x184c7f,_0xb3de('0xf'));logger[_0xb3de('0x10')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x184c7f,_0xb3de('0xf'),JSON['stringify'](_0xe88090));if(_0xe88090['error']){if(_0xe88090[_0xb3de('0x11')]['code']===0x1f4){logger['error'](_0xb3de('0xe'),_0x184c7f,_0xe88090[_0xb3de('0x11')][_0xb3de('0x12')]);return _0x1d9357(_0xe88090[_0xb3de('0x11')][_0xb3de('0x12')]);}logger['error'](_0xb3de('0xe'),_0x184c7f,_0xe88090[_0xb3de('0x11')][_0xb3de('0x12')]);return _0x2bcf9f(_0xe88090[_0xb3de('0x11')][_0xb3de('0x12')]);}else{logger[_0xb3de('0xd')](_0xb3de('0xe'),_0x184c7f,_0xb3de('0xf'));_0x2bcf9f(_0xe88090[_0xb3de('0x13')][_0xb3de('0x12')]);}})[_0xb3de('0x14')](function(_0x4db09d){logger['error'](_0xb3de('0xe'),_0x184c7f,_0x4db09d);_0x1d9357(_0x4db09d);});});}exports[_0xb3de('0x15')]=function(_0x56466a){var _0x6c4daf=this;return new Promise(function(_0xc0f589,_0x27786c){return db[_0xb3de('0x16')]['findAll']({'raw':_0x56466a[_0xb3de('0x17')]?_0x56466a[_0xb3de('0x17')][_0xb3de('0x18')]===undefined?!![]:![]:!![],'where':_0x56466a['options']?_0x56466a[_0xb3de('0x17')][_0xb3de('0x19')]||null:null,'attributes':_0x56466a[_0xb3de('0x17')]?_0x56466a[_0xb3de('0x17')][_0xb3de('0x1a')]||null:null,'limit':_0x56466a[_0xb3de('0x17')]?_0x56466a[_0xb3de('0x17')]['limit']||null:null,'include':_0x56466a[_0xb3de('0x17')]?_0x56466a['options'][_0xb3de('0x1b')]?_['map'](_0x56466a[_0xb3de('0x17')]['include'],function(_0x537b13){return{'model':db[_0x537b13['model']],'as':_0x537b13['as'],'attributes':_0x537b13['attributes'],'include':_0x537b13[_0xb3de('0x1b')]?_[_0xb3de('0x1c')](_0x537b13['include'],function(_0x64179c){return{'model':db[_0x64179c['model']],'as':_0x64179c['as'],'attributes':_0x64179c['attributes'],'include':_0x64179c[_0xb3de('0x1b')]?_['map'](_0x64179c[_0xb3de('0x1b')],function(_0x50e63d){return{'model':db[_0x50e63d['model']],'as':_0x50e63d['as'],'attributes':_0x50e63d[_0xb3de('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xefab75){logger[_0xb3de('0xd')](_0xb3de('0x15'),_0x56466a);logger['debug'](_0xb3de('0x15'),_0x56466a,JSON['stringify'](_0xefab75));_0xc0f589(_0xefab75);})[_0xb3de('0x14')](function(_0x4082c4){logger[_0xb3de('0x11')](_0xb3de('0x15'),_0x4082c4[_0xb3de('0x12')],_0x56466a);_0x27786c(_0x6c4daf[_0xb3de('0x11')](0x1f4,_0x4082c4[_0xb3de('0x12')]));});});};exports['ShowSalesforceAccount']=function(_0x19ab15){var _0x283fba=this;return new Promise(function(_0x1fd5f0,_0x22d3e4){return db['SalesforceAccount'][_0xb3de('0x1d')]({'raw':_0x19ab15[_0xb3de('0x17')]?_0x19ab15['options'][_0xb3de('0x18')]===undefined?!![]:![]:!![],'where':_0x19ab15['options']?_0x19ab15[_0xb3de('0x17')][_0xb3de('0x19')]||null:null,'attributes':_0x19ab15[_0xb3de('0x17')]?_0x19ab15[_0xb3de('0x17')][_0xb3de('0x1a')]||null:null,'include':_0x19ab15[_0xb3de('0x17')]?_0x19ab15['options'][_0xb3de('0x1b')]?_[_0xb3de('0x1c')](_0x19ab15[_0xb3de('0x17')][_0xb3de('0x1b')],function(_0x17b464){return{'model':db[_0x17b464[_0xb3de('0x1e')]],'as':_0x17b464['as'],'attributes':_0x17b464[_0xb3de('0x1a')],'include':_0x17b464[_0xb3de('0x1b')]?_[_0xb3de('0x1c')](_0x17b464['include'],function(_0x430734){return{'model':db[_0x430734[_0xb3de('0x1e')]],'as':_0x430734['as'],'attributes':_0x430734[_0xb3de('0x1a')],'include':_0x430734[_0xb3de('0x1b')]?_[_0xb3de('0x1c')](_0x430734['include'],function(_0x350d26){return{'model':db[_0x350d26[_0xb3de('0x1e')]],'as':_0x350d26['as'],'attributes':_0x350d26['attributes']};}):[]};}):[]};}):[]:[]})[_0xb3de('0xc')](function(_0x15dfbb){logger[_0xb3de('0xd')](_0xb3de('0x1f'),_0x19ab15);logger['debug'](_0xb3de('0x1f'),_0x19ab15,JSON[_0xb3de('0x20')](_0x15dfbb));_0x1fd5f0(_0x15dfbb);})[_0xb3de('0x14')](function(_0x3cad12){logger[_0xb3de('0x11')](_0xb3de('0x1f'),_0x3cad12['message'],_0x19ab15);_0x22d3e4(_0x283fba[_0xb3de('0x11')](0x1f4,_0x3cad12[_0xb3de('0x12')]));});});};
\ No newline at end of file
index 020ea16..683c3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x4a162e,_0x4a0746){var _0x517bcf=function(_0x120da5){while(--_0x120da5){_0x4a162e['push'](_0x4a162e['shift']());}};_0x517bcf(++_0x4a0746);}(_0x2ef3,0xba));var _0x32ef=function(_0xbe7eec,_0x3e3994){_0xbe7eec=_0xbe7eec-0x0;var _0x3efb86=_0x2ef3[_0xbe7eec];return _0x3efb86;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
+var _0xadb5=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x37b688,_0x3d7cf4){var _0x3a98ec=function(_0x504147){while(--_0x504147){_0x37b688['push'](_0x37b688['shift']());}};_0x3a98ec(++_0x3d7cf4);}(_0xadb5,0xad));var _0x5adb=function(_0x55a495,_0x5f12e4){_0x55a495=_0x55a495-0x0;var _0xf96f2a=_0xadb5[_0x55a495];return _0xf96f2a;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0x7')](_0x5adb('0xe'),auth[_0x5adb('0x8')](),controller['getSubjects']);router['get'](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router['post']('/',auth[_0x5adb('0x8')](),controller['create']);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x12')]);router[_0x5adb('0x13')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x14')]);module[_0x5adb('0x15')]=router;
\ No newline at end of file
index 30ae38f..818653f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e2=['contact','lead','account_contact_lead','account','sequelize','exports','STRING','ENUM','Task','Case','contact_lead'];(function(_0x4c2623,_0x4838bb){var _0x2be431=function(_0x55829d){while(--_0x55829d){_0x4c2623['push'](_0x4c2623['shift']());}};_0x2be431(++_0x4838bb);}(_0x05e2,0xe0));var _0x205e=function(_0x25a45a,_0x156e4b){_0x25a45a=_0x25a45a-0x0;var _0x237f87=_0x05e2[_0x25a45a];return _0x237f87;};'use strict';var Sequelize=require(_0x205e('0x0'));module[_0x205e('0x1')]={'name':{'type':Sequelize[_0x205e('0x2')]},'description':{'type':Sequelize[_0x205e('0x2')]},'ticketType':{'type':Sequelize[_0x205e('0x3')](_0x205e('0x4'),_0x205e('0x5')),'defaultValue':_0x205e('0x4')},'moduleSearch':{'type':Sequelize[_0x205e('0x3')](_0x205e('0x6'),_0x205e('0x7'),_0x205e('0x8'),_0x205e('0x9'),_0x205e('0xa')),'defaultValue':_0x205e('0x6')},'moduleCreate':{'type':Sequelize[_0x205e('0x3')]('nothing',_0x205e('0x7'),'lead',_0x205e('0xa')),'defaultValue':_0x205e('0x8')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x205e('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x205e('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x205e('0x2')]}};
\ No newline at end of file
+var _0x4d05=['STRING','ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead','nothing','account','sequelize','exports'];(function(_0x4d9940,_0x33cf28){var _0x484586=function(_0x40a883){while(--_0x40a883){_0x4d9940['push'](_0x4d9940['shift']());}};_0x484586(++_0x33cf28);}(_0x4d05,0xee));var _0x54d0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x4d05[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x54d0('0x0'));module[_0x54d0('0x1')]={'name':{'type':Sequelize[_0x54d0('0x2')]},'description':{'type':Sequelize[_0x54d0('0x2')]},'ticketType':{'type':Sequelize[_0x54d0('0x3')](_0x54d0('0x4'),_0x54d0('0x5')),'defaultValue':_0x54d0('0x4')},'moduleSearch':{'type':Sequelize[_0x54d0('0x3')](_0x54d0('0x6'),_0x54d0('0x7'),_0x54d0('0x8'),_0x54d0('0x9'),'account'),'defaultValue':_0x54d0('0x6')},'moduleCreate':{'type':Sequelize[_0x54d0('0x3')](_0x54d0('0xa'),_0x54d0('0x7'),_0x54d0('0x8'),_0x54d0('0xb')),'defaultValue':_0x54d0('0x8')},'leadId':{'type':Sequelize[_0x54d0('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x54d0('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x54d0('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x54d0('0x2')]}};
\ No newline at end of file
index 0c51577..887144e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdec1=['model','query','keys','attributes','intersection','fields','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','findAll','catch','show','params','length','include','find','create','body','destroy','getFields','findOne','SalesforceField','pick','hasOwnProperty','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','error','stack','name','send','map','SalesforceConfiguration','rawAttributes','fieldName','type','key'];(function(_0x631577,_0x38e35d){var _0x517397=function(_0x4f9228){while(--_0x4f9228){_0x631577['push'](_0x631577['shift']());}};_0x517397(++_0x38e35d);}(_0xdec1,0x11d));var _0x1dec=function(_0x4dfb65,_0x111a45){_0x4dfb65=_0x4dfb65-0x0;var _0x522907=_0xdec1[_0x4dfb65];return _0x522907;};'use strict';var emlformat=require(_0x1dec('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1dec('0x1'));var jsonpatch=require(_0x1dec('0x2'));var rp=require(_0x1dec('0x3'));var moment=require(_0x1dec('0x4'));var BPromise=require(_0x1dec('0x5'));var Mustache=require(_0x1dec('0x6'));var util=require(_0x1dec('0x7'));var path=require(_0x1dec('0x8'));var sox=require(_0x1dec('0x9'));var csv=require(_0x1dec('0xa'));var ejs=require(_0x1dec('0xb'));var fs=require('fs');var fs_extra=require(_0x1dec('0xc'));var _=require(_0x1dec('0xd'));var squel=require(_0x1dec('0xe'));var crypto=require(_0x1dec('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x1dec('0x10'));var toCsv=require(_0x1dec('0xa'));var querystring=require('querystring');var Papa=require(_0x1dec('0x11'));var Redis=require(_0x1dec('0x12'));var authService=require(_0x1dec('0x13'));var qs=require(_0x1dec('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1dec('0x15'));var logger=require(_0x1dec('0x16'))(_0x1dec('0x17'));var utils=require(_0x1dec('0x18'));var config=require(_0x1dec('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x1dec('0x1a'))['db'];function respondWithStatusCode(_0x2b9434,_0x1339e5){_0x1339e5=_0x1339e5||0xcc;return function(_0x21eba3){if(_0x21eba3){return _0x2b9434[_0x1dec('0x1b')](_0x1339e5);}return _0x2b9434[_0x1dec('0x1c')](_0x1339e5)['end']();};}function respondWithResult(_0x3c1fa5,_0x509274){_0x509274=_0x509274||0xc8;return function(_0x58ede3){if(_0x58ede3){return _0x3c1fa5[_0x1dec('0x1c')](_0x509274)[_0x1dec('0x1d')](_0x58ede3);}};}function respondWithFilteredResult(_0xb747ef,_0x22656d){return function(_0x3734de){if(_0x3734de){var _0x14869f=typeof _0x22656d[_0x1dec('0x1e')]===_0x1dec('0x1f')&&typeof _0x22656d[_0x1dec('0x20')]===_0x1dec('0x1f');var _0x329dee=_0x3734de[_0x1dec('0x21')];var _0xf31e35=_0x14869f?0x0:_0x22656d[_0x1dec('0x1e')];var _0x306fe2=_0x14869f?_0x3734de[_0x1dec('0x21')]:_0x22656d[_0x1dec('0x1e')]+_0x22656d[_0x1dec('0x20')];var _0x3c87c9;if(_0x306fe2>=_0x329dee){_0x306fe2=_0x329dee;_0x3c87c9=0xc8;}else{_0x3c87c9=0xce;}_0xb747ef[_0x1dec('0x1c')](_0x3c87c9);return _0xb747ef[_0x1dec('0x22')](_0x1dec('0x23'),_0xf31e35+'-'+_0x306fe2+'/'+_0x329dee)[_0x1dec('0x1d')](_0x3734de);}return null;};}function patchUpdates(_0x24f1a1){return function(_0x576a5b){try{jsonpatch[_0x1dec('0x24')](_0x576a5b,_0x24f1a1,!![]);}catch(_0x5d3a2e){return BPromise[_0x1dec('0x25')](_0x5d3a2e);}return _0x576a5b['save']();};}function saveUpdates(_0x2b9ec1,_0x4bf948){return function(_0x216499){if(_0x216499){return _0x216499[_0x1dec('0x26')](_0x2b9ec1)[_0x1dec('0x27')](function(_0x5433d2){return _0x5433d2;});}return null;};}function removeEntity(_0x48bf9a,_0x4828e7){return function(_0x531369){if(_0x531369){return _0x531369['destroy']()['then'](function(){_0x48bf9a['status'](0xcc)[_0x1dec('0x28')]();});}};}function handleEntityNotFound(_0x2159a8,_0x27d444){return function(_0xd3d8ed){if(!_0xd3d8ed){_0x2159a8[_0x1dec('0x1b')](0x194);}return _0xd3d8ed;};}function handleError(_0x368a80,_0x7f1443){_0x7f1443=_0x7f1443||0x1f4;return function(_0x2ad709){logger[_0x1dec('0x29')](_0x2ad709[_0x1dec('0x2a')]);if(_0x2ad709['name']){delete _0x2ad709[_0x1dec('0x2b')];}_0x368a80[_0x1dec('0x1c')](_0x7f1443)[_0x1dec('0x2c')](_0x2ad709);};}exports['index']=function(_0x27f44e,_0x13c0b2){var _0x53cf17={},_0x3889b5={},_0x51f1db={'count':0x0,'rows':[]};var _0x297d40=_[_0x1dec('0x2d')](db[_0x1dec('0x2e')][_0x1dec('0x2f')],function(_0x2ca546){return{'name':_0x2ca546[_0x1dec('0x30')],'type':_0x2ca546[_0x1dec('0x31')][_0x1dec('0x32')]};});_0x3889b5[_0x1dec('0x33')]=_[_0x1dec('0x2d')](_0x297d40,_0x1dec('0x2b'));_0x3889b5[_0x1dec('0x34')]=_[_0x1dec('0x35')](_0x27f44e[_0x1dec('0x34')]);_0x3889b5['filters']=_['intersection'](_0x3889b5[_0x1dec('0x33')],_0x3889b5['query']);_0x53cf17[_0x1dec('0x36')]=_[_0x1dec('0x37')](_0x3889b5[_0x1dec('0x33')],qs[_0x1dec('0x38')](_0x27f44e[_0x1dec('0x34')][_0x1dec('0x38')]));_0x53cf17[_0x1dec('0x36')]=_0x53cf17['attributes']['length']?_0x53cf17[_0x1dec('0x36')]:_0x3889b5[_0x1dec('0x33')];if(!_0x27f44e[_0x1dec('0x34')]['hasOwnProperty'](_0x1dec('0x39'))){_0x53cf17[_0x1dec('0x20')]=qs[_0x1dec('0x20')](_0x27f44e['query']['limit']);_0x53cf17[_0x1dec('0x1e')]=qs[_0x1dec('0x1e')](_0x27f44e[_0x1dec('0x34')][_0x1dec('0x1e')]);}_0x53cf17[_0x1dec('0x3a')]=qs[_0x1dec('0x3b')](_0x27f44e[_0x1dec('0x34')]['sort']);_0x53cf17[_0x1dec('0x3c')]=qs[_0x1dec('0x3d')](_['pick'](_0x27f44e[_0x1dec('0x34')],_0x3889b5[_0x1dec('0x3d')]),_0x297d40);if(_0x27f44e[_0x1dec('0x34')]['filter']){_0x53cf17['where']=_[_0x1dec('0x3e')](_0x53cf17[_0x1dec('0x3c')],{'$or':_[_0x1dec('0x2d')](_0x297d40,function(_0x12d9b2){if(_0x12d9b2['type']!==_0x1dec('0x3f')){var _0x161472={};_0x161472[_0x12d9b2['name']]={'$like':'%'+_0x27f44e['query'][_0x1dec('0x40')]+'%'};return _0x161472;}})});}_0x53cf17=_[_0x1dec('0x3e')]({},_0x53cf17,_0x27f44e[_0x1dec('0x41')]);var _0x502ae7={'where':_0x53cf17[_0x1dec('0x3c')]};return db[_0x1dec('0x2e')][_0x1dec('0x21')](_0x502ae7)[_0x1dec('0x27')](function(_0x36b1d2){_0x51f1db[_0x1dec('0x21')]=_0x36b1d2;if(_0x27f44e[_0x1dec('0x34')][_0x1dec('0x42')]){_0x53cf17['include']=[{'all':!![]}];}return db[_0x1dec('0x2e')][_0x1dec('0x43')](_0x53cf17);})[_0x1dec('0x27')](function(_0x3e17cf){_0x51f1db['rows']=_0x3e17cf;return _0x51f1db;})[_0x1dec('0x27')](respondWithFilteredResult(_0x13c0b2,_0x53cf17))[_0x1dec('0x44')](handleError(_0x13c0b2,null));};exports[_0x1dec('0x45')]=function(_0x14a846,_0xe3cea9){var _0x5e353e={'raw':![],'where':{'id':_0x14a846[_0x1dec('0x46')]['id']}},_0x1d6c45={};_0x1d6c45['model']=_[_0x1dec('0x35')](db[_0x1dec('0x2e')][_0x1dec('0x2f')]);_0x1d6c45[_0x1dec('0x34')]=_['keys'](_0x14a846[_0x1dec('0x34')]);_0x1d6c45[_0x1dec('0x3d')]=_[_0x1dec('0x37')](_0x1d6c45['model'],_0x1d6c45[_0x1dec('0x34')]);_0x5e353e['attributes']=_[_0x1dec('0x37')](_0x1d6c45[_0x1dec('0x33')],qs[_0x1dec('0x38')](_0x14a846[_0x1dec('0x34')][_0x1dec('0x38')]));_0x5e353e[_0x1dec('0x36')]=_0x5e353e[_0x1dec('0x36')][_0x1dec('0x47')]?_0x5e353e[_0x1dec('0x36')]:_0x1d6c45[_0x1dec('0x33')];if(_0x14a846[_0x1dec('0x34')][_0x1dec('0x42')]){_0x5e353e[_0x1dec('0x48')]=[{'all':!![]}];}_0x5e353e=_[_0x1dec('0x3e')]({},_0x5e353e,_0x14a846['options']);return db['SalesforceConfiguration'][_0x1dec('0x49')](_0x5e353e)[_0x1dec('0x27')](handleEntityNotFound(_0xe3cea9,null))['then'](respondWithResult(_0xe3cea9,null))[_0x1dec('0x44')](handleError(_0xe3cea9,null));};exports[_0x1dec('0x4a')]=function(_0xa27e97,_0x324ffc){return db[_0x1dec('0x2e')][_0x1dec('0x4a')](_0xa27e97[_0x1dec('0x4b')],{})[_0x1dec('0x27')](respondWithResult(_0x324ffc,0xc9))['catch'](handleError(_0x324ffc,null));};exports['update']=function(_0x325988,_0x248002){if(_0x325988['body']['id']){delete _0x325988[_0x1dec('0x4b')]['id'];}return db['SalesforceConfiguration'][_0x1dec('0x49')]({'where':{'id':_0x325988[_0x1dec('0x46')]['id']}})['then'](handleEntityNotFound(_0x248002,null))[_0x1dec('0x27')](saveUpdates(_0x325988[_0x1dec('0x4b')],null))['then'](respondWithResult(_0x248002,null))[_0x1dec('0x44')](handleError(_0x248002,null));};exports[_0x1dec('0x4c')]=function(_0x4b42ab,_0x29c2c8){return db[_0x1dec('0x2e')][_0x1dec('0x49')]({'where':{'id':_0x4b42ab[_0x1dec('0x46')]['id']}})[_0x1dec('0x27')](handleEntityNotFound(_0x29c2c8,null))[_0x1dec('0x27')](removeEntity(_0x29c2c8,null))[_0x1dec('0x44')](handleError(_0x29c2c8,null));};exports[_0x1dec('0x4d')]=function(_0x353a52,_0x59c075,_0x5e5962){var _0x175ab1={};var _0x61bf49={};var _0x40efe0;var _0x5aa963;return db[_0x1dec('0x2e')][_0x1dec('0x4e')]({'where':{'id':_0x353a52[_0x1dec('0x46')]['id']}})[_0x1dec('0x27')](handleEntityNotFound(_0x59c075,null))[_0x1dec('0x27')](function(_0x34a38e){if(_0x34a38e){_0x40efe0=_0x34a38e;_0x61bf49[_0x1dec('0x33')]=_[_0x1dec('0x35')](db[_0x1dec('0x4f')][_0x1dec('0x2f')]);_0x61bf49[_0x1dec('0x34')]=_[_0x1dec('0x35')](_0x353a52[_0x1dec('0x34')]);_0x61bf49[_0x1dec('0x3d')]=_['intersection'](_0x61bf49[_0x1dec('0x33')],_0x61bf49[_0x1dec('0x34')]);_0x175ab1[_0x1dec('0x36')]=_['intersection'](_0x61bf49['model'],qs[_0x1dec('0x38')](_0x353a52['query'][_0x1dec('0x38')]));_0x175ab1['attributes']=_0x175ab1[_0x1dec('0x36')]['length']?_0x175ab1[_0x1dec('0x36')]:_0x61bf49[_0x1dec('0x33')];_0x175ab1[_0x1dec('0x3a')]=qs[_0x1dec('0x3b')](_0x353a52['query'][_0x1dec('0x3b')]);_0x175ab1[_0x1dec('0x3c')]=qs[_0x1dec('0x3d')](_[_0x1dec('0x50')](_0x353a52[_0x1dec('0x34')],_0x61bf49[_0x1dec('0x3d')]));if(_0x353a52[_0x1dec('0x34')][_0x1dec('0x40')]){_0x175ab1['where']=_[_0x1dec('0x3e')](_0x175ab1[_0x1dec('0x3c')],{'$or':_['map'](_0x175ab1['attributes'],function(_0x224439){var _0x513aea={};_0x513aea[_0x224439]={'$like':'%'+_0x353a52[_0x1dec('0x34')][_0x1dec('0x40')]+'%'};return _0x513aea;})});}_0x175ab1=_[_0x1dec('0x3e')]({},_0x175ab1,_0x353a52[_0x1dec('0x41')]);return _0x40efe0['getFields'](_0x175ab1);}})[_0x1dec('0x27')](function(_0x57480f){if(_0x57480f){_0x5aa963=_0x57480f[_0x1dec('0x47')];if(!_0x353a52[_0x1dec('0x34')][_0x1dec('0x51')](_0x1dec('0x39'))){_0x175ab1[_0x1dec('0x20')]=qs[_0x1dec('0x20')](_0x353a52[_0x1dec('0x34')][_0x1dec('0x20')]);_0x175ab1['offset']=qs[_0x1dec('0x1e')](_0x353a52[_0x1dec('0x34')][_0x1dec('0x1e')]);}return _0x40efe0[_0x1dec('0x4d')](_0x175ab1);}})[_0x1dec('0x27')](function(_0x37ef0f){if(_0x37ef0f){return _0x37ef0f?{'count':_0x5aa963,'rows':_0x37ef0f}:null;}})[_0x1dec('0x27')](respondWithResult(_0x59c075,null))['catch'](handleError(_0x59c075,null));};exports[_0x1dec('0x52')]=function(_0x23e201,_0x402dc7,_0x2b9eb0){var _0x48c344={};var _0x35df59={};var _0x2d176e;var _0x3fa46e;return db['SalesforceConfiguration'][_0x1dec('0x4e')]({'where':{'id':_0x23e201[_0x1dec('0x46')]['id']}})[_0x1dec('0x27')](handleEntityNotFound(_0x402dc7,null))[_0x1dec('0x27')](function(_0x1ac646){if(_0x1ac646){_0x2d176e=_0x1ac646;_0x35df59[_0x1dec('0x33')]=_['keys'](db[_0x1dec('0x4f')][_0x1dec('0x2f')]);_0x35df59[_0x1dec('0x34')]=_[_0x1dec('0x35')](_0x23e201[_0x1dec('0x34')]);_0x35df59[_0x1dec('0x3d')]=_[_0x1dec('0x37')](_0x35df59[_0x1dec('0x33')],_0x35df59[_0x1dec('0x34')]);_0x48c344[_0x1dec('0x36')]=_[_0x1dec('0x37')](_0x35df59[_0x1dec('0x33')],qs[_0x1dec('0x38')](_0x23e201[_0x1dec('0x34')][_0x1dec('0x38')]));_0x48c344[_0x1dec('0x36')]=_0x48c344['attributes'][_0x1dec('0x47')]?_0x48c344['attributes']:_0x35df59['model'];_0x48c344[_0x1dec('0x3a')]=qs['sort'](_0x23e201[_0x1dec('0x34')][_0x1dec('0x3b')]);_0x48c344[_0x1dec('0x3c')]=qs[_0x1dec('0x3d')](_[_0x1dec('0x50')](_0x23e201['query'],_0x35df59[_0x1dec('0x3d')]));if(_0x23e201[_0x1dec('0x34')]['filter']){_0x48c344[_0x1dec('0x3c')]=_[_0x1dec('0x3e')](_0x48c344[_0x1dec('0x3c')],{'$or':_[_0x1dec('0x2d')](_0x48c344[_0x1dec('0x36')],function(_0x239e02){var _0x5d19e0={};_0x5d19e0[_0x239e02]={'$like':'%'+_0x23e201[_0x1dec('0x34')]['filter']+'%'};return _0x5d19e0;})});}_0x48c344=_[_0x1dec('0x3e')]({},_0x48c344,_0x23e201['options']);return _0x2d176e[_0x1dec('0x52')](_0x48c344);}})[_0x1dec('0x27')](function(_0x7f7110){if(_0x7f7110){_0x3fa46e=_0x7f7110['length'];if(!_0x23e201[_0x1dec('0x34')][_0x1dec('0x51')](_0x1dec('0x39'))){_0x48c344[_0x1dec('0x20')]=qs[_0x1dec('0x20')](_0x23e201[_0x1dec('0x34')][_0x1dec('0x20')]);_0x48c344[_0x1dec('0x1e')]=qs[_0x1dec('0x1e')](_0x23e201[_0x1dec('0x34')][_0x1dec('0x1e')]);}return _0x2d176e[_0x1dec('0x52')](_0x48c344);}})[_0x1dec('0x27')](function(_0x5e4b34){if(_0x5e4b34){return _0x5e4b34?{'count':_0x3fa46e,'rows':_0x5e4b34}:null;}})[_0x1dec('0x27')](respondWithResult(_0x402dc7,null))['catch'](handleError(_0x402dc7,null));};exports[_0x1dec('0x53')]=function(_0xb73191,_0x2c39c1,_0x5a92cf){var _0x596c19={};var _0x52401e={};var _0x892076;var _0x268858;return db['SalesforceConfiguration'][_0x1dec('0x4e')]({'where':{'id':_0xb73191['params']['id']}})['then'](handleEntityNotFound(_0x2c39c1,null))[_0x1dec('0x27')](function(_0x17f345){if(_0x17f345){_0x892076=_0x17f345;_0x52401e[_0x1dec('0x33')]=_['keys'](db[_0x1dec('0x4f')][_0x1dec('0x2f')]);_0x52401e['query']=_[_0x1dec('0x35')](_0xb73191[_0x1dec('0x34')]);_0x52401e[_0x1dec('0x3d')]=_[_0x1dec('0x37')](_0x52401e['model'],_0x52401e[_0x1dec('0x34')]);_0x596c19['attributes']=_[_0x1dec('0x37')](_0x52401e[_0x1dec('0x33')],qs[_0x1dec('0x38')](_0xb73191[_0x1dec('0x34')][_0x1dec('0x38')]));_0x596c19[_0x1dec('0x36')]=_0x596c19[_0x1dec('0x36')][_0x1dec('0x47')]?_0x596c19[_0x1dec('0x36')]:_0x52401e[_0x1dec('0x33')];_0x596c19[_0x1dec('0x3a')]=qs[_0x1dec('0x3b')](_0xb73191[_0x1dec('0x34')]['sort']);_0x596c19[_0x1dec('0x3c')]=qs[_0x1dec('0x3d')](_[_0x1dec('0x50')](_0xb73191[_0x1dec('0x34')],_0x52401e['filters']));if(_0xb73191[_0x1dec('0x34')][_0x1dec('0x40')]){_0x596c19[_0x1dec('0x3c')]=_[_0x1dec('0x3e')](_0x596c19[_0x1dec('0x3c')],{'$or':_[_0x1dec('0x2d')](_0x596c19[_0x1dec('0x36')],function(_0x16c7ce){var _0x1c493d={};_0x1c493d[_0x16c7ce]={'$like':'%'+_0xb73191[_0x1dec('0x34')]['filter']+'%'};return _0x1c493d;})});}_0x596c19=_['merge']({},_0x596c19,_0xb73191[_0x1dec('0x41')]);return _0x892076[_0x1dec('0x53')](_0x596c19);}})[_0x1dec('0x27')](function(_0xaf4980){if(_0xaf4980){_0x268858=_0xaf4980[_0x1dec('0x47')];if(!_0xb73191[_0x1dec('0x34')][_0x1dec('0x51')](_0x1dec('0x39'))){_0x596c19[_0x1dec('0x20')]=qs[_0x1dec('0x20')](_0xb73191[_0x1dec('0x34')][_0x1dec('0x20')]);_0x596c19['offset']=qs[_0x1dec('0x1e')](_0xb73191[_0x1dec('0x34')][_0x1dec('0x1e')]);}return _0x892076[_0x1dec('0x53')](_0x596c19);}})[_0x1dec('0x27')](function(_0x38c8b8){if(_0x38c8b8){return _0x38c8b8?{'count':_0x268858,'rows':_0x38c8b8}:null;}})[_0x1dec('0x27')](respondWithResult(_0x2c39c1,null))[_0x1dec('0x44')](handleError(_0x2c39c1,null));};
\ No newline at end of file
+var _0xf9f4=['destroy','error','stack','name','send','index','map','SalesforceConfiguration','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','getFields','findOne','SalesforceField','order','options','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then'];(function(_0x11a45,_0x1e40c3){var _0x48d1e6=function(_0x1bd617){while(--_0x1bd617){_0x11a45['push'](_0x11a45['shift']());}};_0x48d1e6(++_0x1e40c3);}(_0xf9f4,0x1be));var _0x4f9f=function(_0xe9f6e3,_0x44a22e){_0xe9f6e3=_0xe9f6e3-0x0;var _0x10f74f=_0xf9f4[_0xe9f6e3];return _0x10f74f;};'use strict';var emlformat=require(_0x4f9f('0x0'));var rimraf=require(_0x4f9f('0x1'));var zipdir=require(_0x4f9f('0x2'));var jsonpatch=require(_0x4f9f('0x3'));var rp=require('request-promise');var moment=require(_0x4f9f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4f9f('0x5'));var util=require(_0x4f9f('0x6'));var path=require('path');var sox=require(_0x4f9f('0x7'));var csv=require(_0x4f9f('0x8'));var ejs=require(_0x4f9f('0x9'));var fs=require('fs');var fs_extra=require(_0x4f9f('0xa'));var _=require(_0x4f9f('0xb'));var squel=require(_0x4f9f('0xc'));var crypto=require(_0x4f9f('0xd'));var jsforce=require(_0x4f9f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4f9f('0x8'));var querystring=require(_0x4f9f('0xf'));var Papa=require(_0x4f9f('0x10'));var Redis=require(_0x4f9f('0x11'));var authService=require(_0x4f9f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x4f9f('0x13'));var hardwareService=require(_0x4f9f('0x14'));var logger=require(_0x4f9f('0x15'))('api');var utils=require(_0x4f9f('0x16'));var config=require(_0x4f9f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4f9f('0x18'))['db'];function respondWithStatusCode(_0x4ed772,_0x434f29){_0x434f29=_0x434f29||0xcc;return function(_0x6b3c70){if(_0x6b3c70){return _0x4ed772[_0x4f9f('0x19')](_0x434f29);}return _0x4ed772[_0x4f9f('0x1a')](_0x434f29)[_0x4f9f('0x1b')]();};}function respondWithResult(_0x1382d4,_0x4aba73){_0x4aba73=_0x4aba73||0xc8;return function(_0x27cd30){if(_0x27cd30){return _0x1382d4[_0x4f9f('0x1a')](_0x4aba73)[_0x4f9f('0x1c')](_0x27cd30);}};}function respondWithFilteredResult(_0x28458f,_0x2541cf){return function(_0x95739e){if(_0x95739e){var _0x24b9e9=typeof _0x2541cf[_0x4f9f('0x1d')]===_0x4f9f('0x1e')&&typeof _0x2541cf['limit']===_0x4f9f('0x1e');var _0x1854c5=_0x95739e[_0x4f9f('0x1f')];var _0x537097=_0x24b9e9?0x0:_0x2541cf[_0x4f9f('0x1d')];var _0x5b1f43=_0x24b9e9?_0x95739e['count']:_0x2541cf[_0x4f9f('0x1d')]+_0x2541cf[_0x4f9f('0x20')];var _0x33fff5;if(_0x5b1f43>=_0x1854c5){_0x5b1f43=_0x1854c5;_0x33fff5=0xc8;}else{_0x33fff5=0xce;}_0x28458f[_0x4f9f('0x1a')](_0x33fff5);return _0x28458f[_0x4f9f('0x21')](_0x4f9f('0x22'),_0x537097+'-'+_0x5b1f43+'/'+_0x1854c5)['json'](_0x95739e);}return null;};}function patchUpdates(_0x38637b){return function(_0x36fc63){try{jsonpatch[_0x4f9f('0x23')](_0x36fc63,_0x38637b,!![]);}catch(_0x84c032){return BPromise[_0x4f9f('0x24')](_0x84c032);}return _0x36fc63[_0x4f9f('0x25')]();};}function saveUpdates(_0x21ceb6,_0xc14a77){return function(_0x269fb8){if(_0x269fb8){return _0x269fb8[_0x4f9f('0x26')](_0x21ceb6)[_0x4f9f('0x27')](function(_0x2b4b49){return _0x2b4b49;});}return null;};}function removeEntity(_0x4bdc60,_0x306be1){return function(_0x3c54fa){if(_0x3c54fa){return _0x3c54fa[_0x4f9f('0x28')]()[_0x4f9f('0x27')](function(){_0x4bdc60[_0x4f9f('0x1a')](0xcc)[_0x4f9f('0x1b')]();});}};}function handleEntityNotFound(_0x1ffc8d,_0x74650c){return function(_0x5c3c76){if(!_0x5c3c76){_0x1ffc8d[_0x4f9f('0x19')](0x194);}return _0x5c3c76;};}function handleError(_0x4549db,_0x144f10){_0x144f10=_0x144f10||0x1f4;return function(_0x144390){logger[_0x4f9f('0x29')](_0x144390[_0x4f9f('0x2a')]);if(_0x144390[_0x4f9f('0x2b')]){delete _0x144390[_0x4f9f('0x2b')];}_0x4549db[_0x4f9f('0x1a')](_0x144f10)[_0x4f9f('0x2c')](_0x144390);};}exports[_0x4f9f('0x2d')]=function(_0xe9b1a4,_0x32bdb6){var _0x121a67={},_0x111a16={},_0x5753d5={'count':0x0,'rows':[]};var _0x52a5e2=_[_0x4f9f('0x2e')](db[_0x4f9f('0x2f')]['rawAttributes'],function(_0x532481){return{'name':_0x532481['fieldName'],'type':_0x532481[_0x4f9f('0x30')]['key']};});_0x111a16[_0x4f9f('0x31')]=_[_0x4f9f('0x2e')](_0x52a5e2,'name');_0x111a16[_0x4f9f('0x32')]=_[_0x4f9f('0x33')](_0xe9b1a4[_0x4f9f('0x32')]);_0x111a16[_0x4f9f('0x34')]=_['intersection'](_0x111a16[_0x4f9f('0x31')],_0x111a16['query']);_0x121a67[_0x4f9f('0x35')]=_[_0x4f9f('0x36')](_0x111a16[_0x4f9f('0x31')],qs[_0x4f9f('0x37')](_0xe9b1a4[_0x4f9f('0x32')][_0x4f9f('0x37')]));_0x121a67['attributes']=_0x121a67[_0x4f9f('0x35')][_0x4f9f('0x38')]?_0x121a67[_0x4f9f('0x35')]:_0x111a16[_0x4f9f('0x31')];if(!_0xe9b1a4['query'][_0x4f9f('0x39')](_0x4f9f('0x3a'))){_0x121a67[_0x4f9f('0x20')]=qs[_0x4f9f('0x20')](_0xe9b1a4['query'][_0x4f9f('0x20')]);_0x121a67[_0x4f9f('0x1d')]=qs[_0x4f9f('0x1d')](_0xe9b1a4['query']['offset']);}_0x121a67['order']=qs[_0x4f9f('0x3b')](_0xe9b1a4[_0x4f9f('0x32')][_0x4f9f('0x3b')]);_0x121a67['where']=qs[_0x4f9f('0x34')](_[_0x4f9f('0x3c')](_0xe9b1a4[_0x4f9f('0x32')],_0x111a16[_0x4f9f('0x34')]),_0x52a5e2);if(_0xe9b1a4[_0x4f9f('0x32')]['filter']){_0x121a67[_0x4f9f('0x3d')]=_[_0x4f9f('0x3e')](_0x121a67[_0x4f9f('0x3d')],{'$or':_[_0x4f9f('0x2e')](_0x52a5e2,function(_0x28095e){if(_0x28095e['type']!==_0x4f9f('0x3f')){var _0x217aad={};_0x217aad[_0x28095e['name']]={'$like':'%'+_0xe9b1a4[_0x4f9f('0x32')][_0x4f9f('0x40')]+'%'};return _0x217aad;}})});}_0x121a67=_[_0x4f9f('0x3e')]({},_0x121a67,_0xe9b1a4['options']);var _0x177a48={'where':_0x121a67['where']};return db[_0x4f9f('0x2f')][_0x4f9f('0x1f')](_0x177a48)[_0x4f9f('0x27')](function(_0x526366){_0x5753d5[_0x4f9f('0x1f')]=_0x526366;if(_0xe9b1a4['query'][_0x4f9f('0x41')]){_0x121a67[_0x4f9f('0x42')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x4f9f('0x43')](_0x121a67);})[_0x4f9f('0x27')](function(_0x2c3d96){_0x5753d5['rows']=_0x2c3d96;return _0x5753d5;})[_0x4f9f('0x27')](respondWithFilteredResult(_0x32bdb6,_0x121a67))[_0x4f9f('0x44')](handleError(_0x32bdb6,null));};exports[_0x4f9f('0x45')]=function(_0x257aba,_0x5b4cdd){var _0x5c0b6a={'raw':![],'where':{'id':_0x257aba[_0x4f9f('0x46')]['id']}},_0x4b8bfb={};_0x4b8bfb[_0x4f9f('0x31')]=_[_0x4f9f('0x33')](db[_0x4f9f('0x2f')][_0x4f9f('0x47')]);_0x4b8bfb['query']=_[_0x4f9f('0x33')](_0x257aba[_0x4f9f('0x32')]);_0x4b8bfb[_0x4f9f('0x34')]=_[_0x4f9f('0x36')](_0x4b8bfb['model'],_0x4b8bfb[_0x4f9f('0x32')]);_0x5c0b6a[_0x4f9f('0x35')]=_[_0x4f9f('0x36')](_0x4b8bfb[_0x4f9f('0x31')],qs[_0x4f9f('0x37')](_0x257aba[_0x4f9f('0x32')][_0x4f9f('0x37')]));_0x5c0b6a[_0x4f9f('0x35')]=_0x5c0b6a[_0x4f9f('0x35')][_0x4f9f('0x38')]?_0x5c0b6a[_0x4f9f('0x35')]:_0x4b8bfb[_0x4f9f('0x31')];if(_0x257aba['query'][_0x4f9f('0x41')]){_0x5c0b6a['include']=[{'all':!![]}];}_0x5c0b6a=_[_0x4f9f('0x3e')]({},_0x5c0b6a,_0x257aba['options']);return db['SalesforceConfiguration'][_0x4f9f('0x48')](_0x5c0b6a)['then'](handleEntityNotFound(_0x5b4cdd,null))[_0x4f9f('0x27')](respondWithResult(_0x5b4cdd,null))[_0x4f9f('0x44')](handleError(_0x5b4cdd,null));};exports[_0x4f9f('0x49')]=function(_0x9a6da0,_0x39d23b){return db[_0x4f9f('0x2f')][_0x4f9f('0x49')](_0x9a6da0[_0x4f9f('0x4a')],{})[_0x4f9f('0x27')](respondWithResult(_0x39d23b,0xc9))[_0x4f9f('0x44')](handleError(_0x39d23b,null));};exports[_0x4f9f('0x26')]=function(_0x1cd43a,_0x556e7c){if(_0x1cd43a['body']['id']){delete _0x1cd43a[_0x4f9f('0x4a')]['id'];}return db[_0x4f9f('0x2f')][_0x4f9f('0x48')]({'where':{'id':_0x1cd43a[_0x4f9f('0x46')]['id']}})[_0x4f9f('0x27')](handleEntityNotFound(_0x556e7c,null))['then'](saveUpdates(_0x1cd43a[_0x4f9f('0x4a')],null))[_0x4f9f('0x27')](respondWithResult(_0x556e7c,null))[_0x4f9f('0x44')](handleError(_0x556e7c,null));};exports['destroy']=function(_0x328a44,_0x17bd69){return db['SalesforceConfiguration'][_0x4f9f('0x48')]({'where':{'id':_0x328a44['params']['id']}})[_0x4f9f('0x27')](handleEntityNotFound(_0x17bd69,null))[_0x4f9f('0x27')](removeEntity(_0x17bd69,null))[_0x4f9f('0x44')](handleError(_0x17bd69,null));};exports[_0x4f9f('0x4b')]=function(_0x4dcaa9,_0x573617,_0x1546e1){var _0x220960={};var _0x4b7eea={};var _0x30b787;var _0x90dee2;return db[_0x4f9f('0x2f')][_0x4f9f('0x4c')]({'where':{'id':_0x4dcaa9['params']['id']}})[_0x4f9f('0x27')](handleEntityNotFound(_0x573617,null))[_0x4f9f('0x27')](function(_0x38b4d1){if(_0x38b4d1){_0x30b787=_0x38b4d1;_0x4b7eea[_0x4f9f('0x31')]=_[_0x4f9f('0x33')](db[_0x4f9f('0x4d')][_0x4f9f('0x47')]);_0x4b7eea[_0x4f9f('0x32')]=_['keys'](_0x4dcaa9['query']);_0x4b7eea[_0x4f9f('0x34')]=_[_0x4f9f('0x36')](_0x4b7eea[_0x4f9f('0x31')],_0x4b7eea[_0x4f9f('0x32')]);_0x220960[_0x4f9f('0x35')]=_[_0x4f9f('0x36')](_0x4b7eea[_0x4f9f('0x31')],qs[_0x4f9f('0x37')](_0x4dcaa9[_0x4f9f('0x32')][_0x4f9f('0x37')]));_0x220960[_0x4f9f('0x35')]=_0x220960[_0x4f9f('0x35')][_0x4f9f('0x38')]?_0x220960['attributes']:_0x4b7eea['model'];_0x220960[_0x4f9f('0x4e')]=qs[_0x4f9f('0x3b')](_0x4dcaa9[_0x4f9f('0x32')][_0x4f9f('0x3b')]);_0x220960[_0x4f9f('0x3d')]=qs[_0x4f9f('0x34')](_[_0x4f9f('0x3c')](_0x4dcaa9[_0x4f9f('0x32')],_0x4b7eea['filters']));if(_0x4dcaa9[_0x4f9f('0x32')][_0x4f9f('0x40')]){_0x220960['where']=_[_0x4f9f('0x3e')](_0x220960['where'],{'$or':_[_0x4f9f('0x2e')](_0x220960[_0x4f9f('0x35')],function(_0x5a1669){var _0x294e40={};_0x294e40[_0x5a1669]={'$like':'%'+_0x4dcaa9[_0x4f9f('0x32')][_0x4f9f('0x40')]+'%'};return _0x294e40;})});}_0x220960=_[_0x4f9f('0x3e')]({},_0x220960,_0x4dcaa9[_0x4f9f('0x4f')]);return _0x30b787['getFields'](_0x220960);}})[_0x4f9f('0x27')](function(_0xea8e91){if(_0xea8e91){_0x90dee2=_0xea8e91[_0x4f9f('0x38')];if(!_0x4dcaa9[_0x4f9f('0x32')][_0x4f9f('0x39')](_0x4f9f('0x3a'))){_0x220960[_0x4f9f('0x20')]=qs['limit'](_0x4dcaa9['query'][_0x4f9f('0x20')]);_0x220960['offset']=qs[_0x4f9f('0x1d')](_0x4dcaa9[_0x4f9f('0x32')][_0x4f9f('0x1d')]);}return _0x30b787['getFields'](_0x220960);}})[_0x4f9f('0x27')](function(_0x310938){if(_0x310938){return _0x310938?{'count':_0x90dee2,'rows':_0x310938}:null;}})[_0x4f9f('0x27')](respondWithResult(_0x573617,null))['catch'](handleError(_0x573617,null));};exports['getSubjects']=function(_0x104daa,_0x1daa91,_0x3924f7){var _0x38b4c0={};var _0x6fdffb={};var _0x3af14a;var _0x50047c;return db[_0x4f9f('0x2f')][_0x4f9f('0x4c')]({'where':{'id':_0x104daa[_0x4f9f('0x46')]['id']}})['then'](handleEntityNotFound(_0x1daa91,null))[_0x4f9f('0x27')](function(_0x4d219f){if(_0x4d219f){_0x3af14a=_0x4d219f;_0x6fdffb['model']=_[_0x4f9f('0x33')](db[_0x4f9f('0x4d')][_0x4f9f('0x47')]);_0x6fdffb[_0x4f9f('0x32')]=_[_0x4f9f('0x33')](_0x104daa[_0x4f9f('0x32')]);_0x6fdffb[_0x4f9f('0x34')]=_[_0x4f9f('0x36')](_0x6fdffb['model'],_0x6fdffb[_0x4f9f('0x32')]);_0x38b4c0[_0x4f9f('0x35')]=_['intersection'](_0x6fdffb['model'],qs['fields'](_0x104daa['query'][_0x4f9f('0x37')]));_0x38b4c0['attributes']=_0x38b4c0[_0x4f9f('0x35')][_0x4f9f('0x38')]?_0x38b4c0['attributes']:_0x6fdffb[_0x4f9f('0x31')];_0x38b4c0[_0x4f9f('0x4e')]=qs[_0x4f9f('0x3b')](_0x104daa[_0x4f9f('0x32')]['sort']);_0x38b4c0['where']=qs[_0x4f9f('0x34')](_[_0x4f9f('0x3c')](_0x104daa[_0x4f9f('0x32')],_0x6fdffb[_0x4f9f('0x34')]));if(_0x104daa[_0x4f9f('0x32')][_0x4f9f('0x40')]){_0x38b4c0[_0x4f9f('0x3d')]=_['merge'](_0x38b4c0[_0x4f9f('0x3d')],{'$or':_['map'](_0x38b4c0[_0x4f9f('0x35')],function(_0x78404d){var _0x49f218={};_0x49f218[_0x78404d]={'$like':'%'+_0x104daa[_0x4f9f('0x32')][_0x4f9f('0x40')]+'%'};return _0x49f218;})});}_0x38b4c0=_[_0x4f9f('0x3e')]({},_0x38b4c0,_0x104daa['options']);return _0x3af14a['getSubjects'](_0x38b4c0);}})[_0x4f9f('0x27')](function(_0x5cc157){if(_0x5cc157){_0x50047c=_0x5cc157['length'];if(!_0x104daa[_0x4f9f('0x32')][_0x4f9f('0x39')](_0x4f9f('0x3a'))){_0x38b4c0[_0x4f9f('0x20')]=qs[_0x4f9f('0x20')](_0x104daa[_0x4f9f('0x32')][_0x4f9f('0x20')]);_0x38b4c0[_0x4f9f('0x1d')]=qs[_0x4f9f('0x1d')](_0x104daa[_0x4f9f('0x32')][_0x4f9f('0x1d')]);}return _0x3af14a['getSubjects'](_0x38b4c0);}})[_0x4f9f('0x27')](function(_0xa2611a){if(_0xa2611a){return _0xa2611a?{'count':_0x50047c,'rows':_0xa2611a}:null;}})[_0x4f9f('0x27')](respondWithResult(_0x1daa91,null))[_0x4f9f('0x44')](handleError(_0x1daa91,null));};exports[_0x4f9f('0x50')]=function(_0x133c5e,_0x46ddad,_0x3256f4){var _0x336f5b={};var _0x47d54a={};var _0x2ef673;var _0x852da1;return db[_0x4f9f('0x2f')][_0x4f9f('0x4c')]({'where':{'id':_0x133c5e[_0x4f9f('0x46')]['id']}})['then'](handleEntityNotFound(_0x46ddad,null))[_0x4f9f('0x27')](function(_0x2e5357){if(_0x2e5357){_0x2ef673=_0x2e5357;_0x47d54a[_0x4f9f('0x31')]=_[_0x4f9f('0x33')](db[_0x4f9f('0x4d')][_0x4f9f('0x47')]);_0x47d54a[_0x4f9f('0x32')]=_['keys'](_0x133c5e[_0x4f9f('0x32')]);_0x47d54a[_0x4f9f('0x34')]=_[_0x4f9f('0x36')](_0x47d54a[_0x4f9f('0x31')],_0x47d54a[_0x4f9f('0x32')]);_0x336f5b['attributes']=_[_0x4f9f('0x36')](_0x47d54a[_0x4f9f('0x31')],qs[_0x4f9f('0x37')](_0x133c5e[_0x4f9f('0x32')]['fields']));_0x336f5b[_0x4f9f('0x35')]=_0x336f5b[_0x4f9f('0x35')][_0x4f9f('0x38')]?_0x336f5b[_0x4f9f('0x35')]:_0x47d54a[_0x4f9f('0x31')];_0x336f5b['order']=qs[_0x4f9f('0x3b')](_0x133c5e[_0x4f9f('0x32')]['sort']);_0x336f5b[_0x4f9f('0x3d')]=qs[_0x4f9f('0x34')](_[_0x4f9f('0x3c')](_0x133c5e['query'],_0x47d54a[_0x4f9f('0x34')]));if(_0x133c5e['query']['filter']){_0x336f5b[_0x4f9f('0x3d')]=_[_0x4f9f('0x3e')](_0x336f5b[_0x4f9f('0x3d')],{'$or':_[_0x4f9f('0x2e')](_0x336f5b[_0x4f9f('0x35')],function(_0x13764b){var _0x3bead0={};_0x3bead0[_0x13764b]={'$like':'%'+_0x133c5e[_0x4f9f('0x32')][_0x4f9f('0x40')]+'%'};return _0x3bead0;})});}_0x336f5b=_['merge']({},_0x336f5b,_0x133c5e['options']);return _0x2ef673[_0x4f9f('0x50')](_0x336f5b);}})[_0x4f9f('0x27')](function(_0x2d2cca){if(_0x2d2cca){_0x852da1=_0x2d2cca[_0x4f9f('0x38')];if(!_0x133c5e[_0x4f9f('0x32')]['hasOwnProperty'](_0x4f9f('0x3a'))){_0x336f5b[_0x4f9f('0x20')]=qs[_0x4f9f('0x20')](_0x133c5e[_0x4f9f('0x32')][_0x4f9f('0x20')]);_0x336f5b[_0x4f9f('0x1d')]=qs[_0x4f9f('0x1d')](_0x133c5e[_0x4f9f('0x32')][_0x4f9f('0x1d')]);}return _0x2ef673[_0x4f9f('0x50')](_0x336f5b);}})[_0x4f9f('0x27')](function(_0x225c05){if(_0x225c05){return _0x225c05?{'count':_0x852da1,'rows':_0x225c05}:null;}})[_0x4f9f('0x27')](respondWithResult(_0x46ddad,null))[_0x4f9f('0x44')](handleError(_0x46ddad,null));};
\ No newline at end of file
index d303849..bae2068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6e8=['moment','request-promise','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','util','api'];(function(_0xc03229,_0x445da4){var _0x335a27=function(_0x28f8b2){while(--_0x28f8b2){_0xc03229['push'](_0xc03229['shift']());}};_0x335a27(++_0x445da4);}(_0xe6e8,0xf1));var _0x8e6e=function(_0x423089,_0x504adb){_0x423089=_0x423089-0x0;var _0x38b638=_0xe6e8[_0x423089];return _0x38b638;};'use strict';var _=require('lodash');var util=require(_0x8e6e('0x0'));var logger=require('../../config/logger')(_0x8e6e('0x1'));var moment=require(_0x8e6e('0x2'));var BPromise=require('bluebird');var rp=require(_0x8e6e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8e6e('0x4'));module[_0x8e6e('0x5')]=function(_0x533f58,_0x64c9fd){return _0x533f58[_0x8e6e('0x6')](_0x8e6e('0x7'),attributes,{'tableName':_0x8e6e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbb1=['exports','define','SalesforceConfiguration','int_salesforce_configurations','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes'];(function(_0x397904,_0x10d2f2){var _0xea48e=function(_0x536c83){while(--_0x536c83){_0x397904['push'](_0x397904['shift']());}};_0xea48e(++_0x10d2f2);}(_0xbbb1,0x163));var _0x1bbb=function(_0x33d70e,_0x5d5cde){_0x33d70e=_0x33d70e-0x0;var _0x3968ee=_0xbbb1[_0x33d70e];return _0x3968ee;};'use strict';var _=require('lodash');var util=require(_0x1bbb('0x0'));var logger=require(_0x1bbb('0x1'))('api');var moment=require(_0x1bbb('0x2'));var BPromise=require(_0x1bbb('0x3'));var rp=require(_0x1bbb('0x4'));var fs=require('fs');var path=require(_0x1bbb('0x5'));var rimraf=require(_0x1bbb('0x6'));var config=require(_0x1bbb('0x7'));var attributes=require(_0x1bbb('0x8'));module[_0x1bbb('0x9')]=function(_0x1c4396,_0x18642f){return _0x1c4396[_0x1bbb('0xa')](_0x1bbb('0xb'),attributes,{'tableName':_0x1bbb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd1eb03..b6475c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7f0=['request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','client','http'];(function(_0x2498d3,_0x50dc19){var _0x37c19c=function(_0x5460cb){while(--_0x5460cb){_0x2498d3['push'](_0x2498d3['shift']());}};_0x37c19c(++_0x50dc19);}(_0xb7f0,0x147));var _0x0b7f=function(_0x233aa1,_0x37af6d){_0x233aa1=_0x233aa1-0x0;var _0x4e670d=_0xb7f0[_0x233aa1];return _0x4e670d;};'use strict';var _=require('lodash');var util=require(_0x0b7f('0x0'));var moment=require(_0x0b7f('0x1'));var BPromise=require(_0x0b7f('0x2'));var rs=require(_0x0b7f('0x3'));var fs=require('fs');var Redis=require(_0x0b7f('0x4'));var db=require(_0x0b7f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0b7f('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0b7f('0x7')][_0x0b7f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3a28dc,_0x232301,_0x5724cc){return new BPromise(function(_0xf18613,_0x2d0929){return client[_0x0b7f('0x9')](_0x3a28dc,_0x5724cc)[_0x0b7f('0xa')](function(_0x3da177){logger[_0x0b7f('0xb')](_0x0b7f('0xc'),_0x232301,'request\x20sent');logger[_0x0b7f('0xd')](_0x0b7f('0xe'),_0x232301,_0x0b7f('0xf'),JSON[_0x0b7f('0x10')](_0x3da177));if(_0x3da177[_0x0b7f('0x11')]){if(_0x3da177[_0x0b7f('0x11')][_0x0b7f('0x12')]===0x1f4){logger['error'](_0x0b7f('0xc'),_0x232301,_0x3da177[_0x0b7f('0x11')][_0x0b7f('0x13')]);return _0x2d0929(_0x3da177['error'][_0x0b7f('0x13')]);}logger['error'](_0x0b7f('0xc'),_0x232301,_0x3da177[_0x0b7f('0x11')]['message']);return _0xf18613(_0x3da177['error']['message']);}else{logger[_0x0b7f('0xb')](_0x0b7f('0xc'),_0x232301,'request\x20sent');_0xf18613(_0x3da177['result'][_0x0b7f('0x13')]);}})[_0x0b7f('0x14')](function(_0x31ef91){logger[_0x0b7f('0x11')](_0x0b7f('0xc'),_0x232301,_0x31ef91);_0x2d0929(_0x31ef91);});});}
\ No newline at end of file
+var _0xab70=['info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then'];(function(_0x29cf35,_0x34a69d){var _0x46d133=function(_0x11d440){while(--_0x11d440){_0x29cf35['push'](_0x29cf35['shift']());}};_0x46d133(++_0x34a69d);}(_0xab70,0x1ad));var _0x0ab7=function(_0x5a12ad,_0x57b50e){_0x5a12ad=_0x5a12ad-0x0;var _0x193abd=_0xab70[_0x5a12ad];return _0x193abd;};'use strict';var _=require(_0x0ab7('0x0'));var util=require('util');var moment=require(_0x0ab7('0x1'));var BPromise=require(_0x0ab7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0ab7('0x3'));var db=require(_0x0ab7('0x4'))['db'];var utils=require(_0x0ab7('0x5'));var logger=require(_0x0ab7('0x6'))(_0x0ab7('0x7'));var config=require('../../config/environment');var jayson=require(_0x0ab7('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x45ce7c,_0x1c14d8,_0x26261c){return new BPromise(function(_0x18ff5f,_0x40a7a4){return client[_0x0ab7('0x9')](_0x45ce7c,_0x26261c)[_0x0ab7('0xa')](function(_0x55672c){logger[_0x0ab7('0xb')](_0x0ab7('0xc'),_0x1c14d8,_0x0ab7('0xd'));logger[_0x0ab7('0xe')](_0x0ab7('0xf'),_0x1c14d8,_0x0ab7('0xd'),JSON['stringify'](_0x55672c));if(_0x55672c['error']){if(_0x55672c[_0x0ab7('0x10')]['code']===0x1f4){logger[_0x0ab7('0x10')](_0x0ab7('0xc'),_0x1c14d8,_0x55672c[_0x0ab7('0x10')]['message']);return _0x40a7a4(_0x55672c[_0x0ab7('0x10')][_0x0ab7('0x11')]);}logger[_0x0ab7('0x10')](_0x0ab7('0xc'),_0x1c14d8,_0x55672c[_0x0ab7('0x10')][_0x0ab7('0x11')]);return _0x18ff5f(_0x55672c[_0x0ab7('0x10')][_0x0ab7('0x11')]);}else{logger[_0x0ab7('0xb')](_0x0ab7('0xc'),_0x1c14d8,'request\x20sent');_0x18ff5f(_0x55672c[_0x0ab7('0x12')][_0x0ab7('0x11')]);}})[_0x0ab7('0x13')](function(_0x14c8bc){logger['error'](_0x0ab7('0xc'),_0x1c14d8,_0x14c8bc);_0x40a7a4(_0x14c8bc);});});}
\ No newline at end of file
index 80ada05..e9d467c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5857=['get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSalesforceField.controller'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x5857,0x172));var _0x7585=function(_0x429c34,_0x20b674){_0x429c34=_0x429c34-0x0;var _0x383f37=_0x5857[_0x429c34];return _0x383f37;};'use strict';var multer=require(_0x7585('0x0'));var util=require('util');var path=require(_0x7585('0x1'));var timeout=require('connect-timeout');var express=require(_0x7585('0x2'));var router=express[_0x7585('0x3')]();var fs_extra=require(_0x7585('0x4'));var auth=require(_0x7585('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7585('0x6'));var controller=require(_0x7585('0x7'));router[_0x7585('0x8')]('/',auth[_0x7585('0x9')](),controller[_0x7585('0xa')]);router[_0x7585('0x8')](_0x7585('0xb'),auth[_0x7585('0x9')](),controller[_0x7585('0xc')]);router[_0x7585('0xd')]('/',auth[_0x7585('0x9')](),controller['create']);router[_0x7585('0xe')]('/:id',auth[_0x7585('0x9')](),controller[_0x7585('0xf')]);router[_0x7585('0x10')](_0x7585('0xb'),auth[_0x7585('0x9')](),controller[_0x7585('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xd2a7=['create','put','delete','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','get','/:id','show'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xd2a7,0xa7));var _0x7d2a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2a7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x7d2a('0x0'));var path=require(_0x7d2a('0x1'));var timeout=require('connect-timeout');var express=require(_0x7d2a('0x2'));var router=express['Router']();var fs_extra=require(_0x7d2a('0x3'));var auth=require(_0x7d2a('0x4'));var interaction=require(_0x7d2a('0x5'));var config=require(_0x7d2a('0x6'));var controller=require(_0x7d2a('0x7'));router['get']('/',auth[_0x7d2a('0x8')](),controller[_0x7d2a('0x9')]);router[_0x7d2a('0xa')](_0x7d2a('0xb'),auth[_0x7d2a('0x8')](),controller[_0x7d2a('0xc')]);router['post']('/',auth[_0x7d2a('0x8')](),controller[_0x7d2a('0xd')]);router[_0x7d2a('0xe')](_0x7d2a('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x7d2a('0xf')](_0x7d2a('0xb'),auth[_0x7d2a('0x8')](),controller[_0x7d2a('0x10')]);module[_0x7d2a('0x11')]=router;
\ No newline at end of file
index 4669ce1..e1b83dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ee3=['exports','string','picklist','STRING','ENUM','customVariable'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x9ee3,0x1da));var _0x39ee=function(_0x30efe5,_0x15c83c){_0x30efe5=_0x30efe5-0x0;var _0x384c32=_0x9ee3[_0x30efe5];return _0x384c32;};'use strict';var Sequelize=require('sequelize');module[_0x39ee('0x0')]={'type':{'type':Sequelize['ENUM'](_0x39ee('0x1'),'variable','customVariable','keyValue',_0x39ee('0x2')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x39ee('0x3')]},'keyType':{'type':Sequelize[_0x39ee('0x4')](_0x39ee('0x1'),'variable',_0x39ee('0x5'))},'keyContent':{'type':Sequelize[_0x39ee('0x3')]},'idField':{'type':Sequelize[_0x39ee('0x3')]},'variableName':{'type':Sequelize[_0x39ee('0x3')]}};
\ No newline at end of file
+var _0xd76d=['customVariable','sequelize','exports','ENUM','string','STRING'];(function(_0x524540,_0x35e14f){var _0x358d11=function(_0x3b46ce){while(--_0x3b46ce){_0x524540['push'](_0x524540['shift']());}};_0x358d11(++_0x35e14f);}(_0xd76d,0x13f));var _0xdd76=function(_0x350f77,_0x12a9b8){_0x350f77=_0x350f77-0x0;var _0x1305b6=_0xd76d[_0x350f77];return _0x1305b6;};'use strict';var Sequelize=require(_0xdd76('0x0'));module[_0xdd76('0x1')]={'type':{'type':Sequelize[_0xdd76('0x2')](_0xdd76('0x3'),'variable','customVariable','keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xdd76('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xdd76('0x2')](_0xdd76('0x3'),'variable',_0xdd76('0x5'))},'keyContent':{'type':Sequelize[_0xdd76('0x4')]},'idField':{'type':Sequelize[_0xdd76('0x4')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7dcdaae..4cc1089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e52=['request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','SalesforceField','fieldName','type','key','model','keys','query','attributes','length','nolimit','sort','filters','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','rawAttributes','intersection','includeAll','find','create','body','update','params','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0xcf5436,_0x4632c3){var _0xc4f5c8=function(_0x567528){while(--_0x567528){_0xcf5436['push'](_0xcf5436['shift']());}};_0xc4f5c8(++_0x4632c3);}(_0x8e52,0x173));var _0x28e5=function(_0xce93c,_0x555be5){_0xce93c=_0xce93c-0x0;var _0x230720=_0x8e52[_0xce93c];return _0x230720;};'use strict';var emlformat=require(_0x28e5('0x0'));var rimraf=require(_0x28e5('0x1'));var zipdir=require(_0x28e5('0x2'));var jsonpatch=require(_0x28e5('0x3'));var rp=require(_0x28e5('0x4'));var moment=require(_0x28e5('0x5'));var BPromise=require(_0x28e5('0x6'));var Mustache=require(_0x28e5('0x7'));var util=require(_0x28e5('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x28e5('0x9'));var ejs=require(_0x28e5('0xa'));var fs=require('fs');var fs_extra=require(_0x28e5('0xb'));var _=require(_0x28e5('0xc'));var squel=require('squel');var crypto=require(_0x28e5('0xd'));var jsforce=require(_0x28e5('0xe'));var deskjs=require(_0x28e5('0xf'));var toCsv=require(_0x28e5('0x9'));var querystring=require(_0x28e5('0x10'));var Papa=require(_0x28e5('0x11'));var Redis=require(_0x28e5('0x12'));var authService=require(_0x28e5('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x28e5('0x14'));var hardwareService=require(_0x28e5('0x15'));var logger=require(_0x28e5('0x16'))(_0x28e5('0x17'));var utils=require('../../config/utils');var config=require(_0x28e5('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x28e5('0x19'))['db'];function respondWithStatusCode(_0xa53089,_0x242526){_0x242526=_0x242526||0xcc;return function(_0x43f6a9){if(_0x43f6a9){return _0xa53089[_0x28e5('0x1a')](_0x242526);}return _0xa53089[_0x28e5('0x1b')](_0x242526)[_0x28e5('0x1c')]();};}function respondWithResult(_0x3cdcf9,_0x1b1a9c){_0x1b1a9c=_0x1b1a9c||0xc8;return function(_0x21a9e9){if(_0x21a9e9){return _0x3cdcf9[_0x28e5('0x1b')](_0x1b1a9c)[_0x28e5('0x1d')](_0x21a9e9);}};}function respondWithFilteredResult(_0x4f3dec,_0x31e4ce){return function(_0x5d00de){if(_0x5d00de){var _0x3b3646=typeof _0x31e4ce[_0x28e5('0x1e')]==='undefined'&&typeof _0x31e4ce[_0x28e5('0x1f')]===_0x28e5('0x20');var _0x41fe9b=_0x5d00de[_0x28e5('0x21')];var _0x2da967=_0x3b3646?0x0:_0x31e4ce[_0x28e5('0x1e')];var _0x274d2d=_0x3b3646?_0x5d00de[_0x28e5('0x21')]:_0x31e4ce[_0x28e5('0x1e')]+_0x31e4ce[_0x28e5('0x1f')];var _0x5b3c19;if(_0x274d2d>=_0x41fe9b){_0x274d2d=_0x41fe9b;_0x5b3c19=0xc8;}else{_0x5b3c19=0xce;}_0x4f3dec['status'](_0x5b3c19);return _0x4f3dec[_0x28e5('0x22')](_0x28e5('0x23'),_0x2da967+'-'+_0x274d2d+'/'+_0x41fe9b)[_0x28e5('0x1d')](_0x5d00de);}return null;};}function patchUpdates(_0x1cf7d1){return function(_0x48cda2){try{jsonpatch[_0x28e5('0x24')](_0x48cda2,_0x1cf7d1,!![]);}catch(_0x1663fa){return BPromise[_0x28e5('0x25')](_0x1663fa);}return _0x48cda2[_0x28e5('0x26')]();};}function saveUpdates(_0x57769e,_0x34337e){return function(_0x4a2fc6){if(_0x4a2fc6){return _0x4a2fc6['update'](_0x57769e)[_0x28e5('0x27')](function(_0x51be0c){return _0x51be0c;});}return null;};}function removeEntity(_0x1a325f,_0x37c5ba){return function(_0x4f3236){if(_0x4f3236){return _0x4f3236[_0x28e5('0x28')]()[_0x28e5('0x27')](function(){_0x1a325f[_0x28e5('0x1b')](0xcc)[_0x28e5('0x1c')]();});}};}function handleEntityNotFound(_0x15de3f,_0x240cb8){return function(_0x8e0d67){if(!_0x8e0d67){_0x15de3f['sendStatus'](0x194);}return _0x8e0d67;};}function handleError(_0x56ef39,_0x4de96e){_0x4de96e=_0x4de96e||0x1f4;return function(_0x128a4a){logger[_0x28e5('0x29')](_0x128a4a[_0x28e5('0x2a')]);if(_0x128a4a['name']){delete _0x128a4a[_0x28e5('0x2b')];}_0x56ef39[_0x28e5('0x1b')](_0x4de96e)[_0x28e5('0x2c')](_0x128a4a);};}exports['index']=function(_0x4f00e9,_0x551a68){var _0x22e089={},_0x717e40={},_0x307a08={'count':0x0,'rows':[]};var _0x150e31=_[_0x28e5('0x2d')](db[_0x28e5('0x2e')]['rawAttributes'],function(_0x380bdf){return{'name':_0x380bdf[_0x28e5('0x2f')],'type':_0x380bdf[_0x28e5('0x30')][_0x28e5('0x31')]};});_0x717e40[_0x28e5('0x32')]=_[_0x28e5('0x2d')](_0x150e31,_0x28e5('0x2b'));_0x717e40['query']=_[_0x28e5('0x33')](_0x4f00e9[_0x28e5('0x34')]);_0x717e40['filters']=_['intersection'](_0x717e40[_0x28e5('0x32')],_0x717e40[_0x28e5('0x34')]);_0x22e089[_0x28e5('0x35')]=_['intersection'](_0x717e40[_0x28e5('0x32')],qs['fields'](_0x4f00e9[_0x28e5('0x34')]['fields']));_0x22e089[_0x28e5('0x35')]=_0x22e089['attributes'][_0x28e5('0x36')]?_0x22e089['attributes']:_0x717e40['model'];if(!_0x4f00e9[_0x28e5('0x34')]['hasOwnProperty'](_0x28e5('0x37'))){_0x22e089[_0x28e5('0x1f')]=qs['limit'](_0x4f00e9['query'][_0x28e5('0x1f')]);_0x22e089['offset']=qs[_0x28e5('0x1e')](_0x4f00e9['query'][_0x28e5('0x1e')]);}_0x22e089['order']=qs[_0x28e5('0x38')](_0x4f00e9[_0x28e5('0x34')][_0x28e5('0x38')]);_0x22e089['where']=qs[_0x28e5('0x39')](_['pick'](_0x4f00e9[_0x28e5('0x34')],_0x717e40[_0x28e5('0x39')]),_0x150e31);if(_0x4f00e9[_0x28e5('0x34')][_0x28e5('0x3a')]){_0x22e089['where']=_[_0x28e5('0x3b')](_0x22e089[_0x28e5('0x3c')],{'$or':_[_0x28e5('0x2d')](_0x150e31,function(_0x2fd3da){if(_0x2fd3da[_0x28e5('0x30')]!==_0x28e5('0x3d')){var _0x3cbda8={};_0x3cbda8[_0x2fd3da[_0x28e5('0x2b')]]={'$like':'%'+_0x4f00e9[_0x28e5('0x34')][_0x28e5('0x3a')]+'%'};return _0x3cbda8;}})});}_0x22e089=_[_0x28e5('0x3b')]({},_0x22e089,_0x4f00e9[_0x28e5('0x3e')]);var _0x4366f7={'where':_0x22e089[_0x28e5('0x3c')]};return db[_0x28e5('0x2e')]['count'](_0x4366f7)[_0x28e5('0x27')](function(_0x2974a7){_0x307a08['count']=_0x2974a7;if(_0x4f00e9[_0x28e5('0x34')]['includeAll']){_0x22e089[_0x28e5('0x3f')]=[{'all':!![]}];}return db[_0x28e5('0x2e')][_0x28e5('0x40')](_0x22e089);})[_0x28e5('0x27')](function(_0x586a0a){_0x307a08[_0x28e5('0x41')]=_0x586a0a;return _0x307a08;})['then'](respondWithFilteredResult(_0x551a68,_0x22e089))[_0x28e5('0x42')](handleError(_0x551a68,null));};exports['show']=function(_0x45e825,_0x4ba03e){var _0x3ceeba={'raw':!![],'where':{'id':_0x45e825['params']['id']}},_0x67198f={};_0x67198f[_0x28e5('0x32')]=_['keys'](db[_0x28e5('0x2e')][_0x28e5('0x43')]);_0x67198f[_0x28e5('0x34')]=_[_0x28e5('0x33')](_0x45e825[_0x28e5('0x34')]);_0x67198f[_0x28e5('0x39')]=_['intersection'](_0x67198f[_0x28e5('0x32')],_0x67198f[_0x28e5('0x34')]);_0x3ceeba[_0x28e5('0x35')]=_[_0x28e5('0x44')](_0x67198f[_0x28e5('0x32')],qs['fields'](_0x45e825['query']['fields']));_0x3ceeba[_0x28e5('0x35')]=_0x3ceeba[_0x28e5('0x35')][_0x28e5('0x36')]?_0x3ceeba[_0x28e5('0x35')]:_0x67198f[_0x28e5('0x32')];if(_0x45e825[_0x28e5('0x34')][_0x28e5('0x45')]){_0x3ceeba[_0x28e5('0x3f')]=[{'all':!![]}];}_0x3ceeba=_['merge']({},_0x3ceeba,_0x45e825[_0x28e5('0x3e')]);return db[_0x28e5('0x2e')][_0x28e5('0x46')](_0x3ceeba)['then'](handleEntityNotFound(_0x4ba03e,null))[_0x28e5('0x27')](respondWithResult(_0x4ba03e,null))['catch'](handleError(_0x4ba03e,null));};exports[_0x28e5('0x47')]=function(_0x15dd62,_0x4be5ea){return db['SalesforceField'][_0x28e5('0x47')](_0x15dd62[_0x28e5('0x48')],{})[_0x28e5('0x27')](respondWithResult(_0x4be5ea,0xc9))['catch'](handleError(_0x4be5ea,null));};exports[_0x28e5('0x49')]=function(_0x2015b9,_0xce0be3){if(_0x2015b9[_0x28e5('0x48')]['id']){delete _0x2015b9['body']['id'];}return db[_0x28e5('0x2e')][_0x28e5('0x46')]({'where':{'id':_0x2015b9[_0x28e5('0x4a')]['id']}})[_0x28e5('0x27')](handleEntityNotFound(_0xce0be3,null))[_0x28e5('0x27')](saveUpdates(_0x2015b9[_0x28e5('0x48')],null))[_0x28e5('0x27')](respondWithResult(_0xce0be3,null))['catch'](handleError(_0xce0be3,null));};exports['destroy']=function(_0x360942,_0x3dae75){return db['SalesforceField'][_0x28e5('0x46')]({'where':{'id':_0x360942[_0x28e5('0x4a')]['id']}})[_0x28e5('0x27')](handleEntityNotFound(_0x3dae75,null))[_0x28e5('0x27')](removeEntity(_0x3dae75,null))['catch'](handleError(_0x3dae75,null));};
\ No newline at end of file
+var _0x637a=['stack','name','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','SalesforceField','findAll','catch','show','params','includeAll','include','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','destroy','then','error'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0x637a,0x186));var _0xa637=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x637a[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa637('0x0'));var zipdir=require(_0xa637('0x1'));var jsonpatch=require(_0xa637('0x2'));var rp=require('request-promise');var moment=require(_0xa637('0x3'));var BPromise=require(_0xa637('0x4'));var Mustache=require(_0xa637('0x5'));var util=require(_0xa637('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xa637('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa637('0x8'));var squel=require(_0xa637('0x9'));var crypto=require('crypto');var jsforce=require(_0xa637('0xa'));var deskjs=require(_0xa637('0xb'));var toCsv=require(_0xa637('0x7'));var querystring=require(_0xa637('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa637('0xd'));var qs=require(_0xa637('0xe'));var as=require(_0xa637('0xf'));var hardwareService=require(_0xa637('0x10'));var logger=require(_0xa637('0x11'))(_0xa637('0x12'));var utils=require(_0xa637('0x13'));var config=require(_0xa637('0x14'));var licenseUtil=require(_0xa637('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x514019,_0x2c64df){_0x2c64df=_0x2c64df||0xcc;return function(_0x5d70d5){if(_0x5d70d5){return _0x514019[_0xa637('0x16')](_0x2c64df);}return _0x514019[_0xa637('0x17')](_0x2c64df)['end']();};}function respondWithResult(_0x254f75,_0x1b1128){_0x1b1128=_0x1b1128||0xc8;return function(_0x3b344a){if(_0x3b344a){return _0x254f75[_0xa637('0x17')](_0x1b1128)[_0xa637('0x18')](_0x3b344a);}};}function respondWithFilteredResult(_0x53c88f,_0xdc293f){return function(_0x48f2df){if(_0x48f2df){var _0x5a2bc4=typeof _0xdc293f[_0xa637('0x19')]==='undefined'&&typeof _0xdc293f[_0xa637('0x1a')]===_0xa637('0x1b');var _0x3645a3=_0x48f2df[_0xa637('0x1c')];var _0x1496b3=_0x5a2bc4?0x0:_0xdc293f[_0xa637('0x19')];var _0x1b572d=_0x5a2bc4?_0x48f2df[_0xa637('0x1c')]:_0xdc293f[_0xa637('0x19')]+_0xdc293f[_0xa637('0x1a')];var _0x25b954;if(_0x1b572d>=_0x3645a3){_0x1b572d=_0x3645a3;_0x25b954=0xc8;}else{_0x25b954=0xce;}_0x53c88f[_0xa637('0x17')](_0x25b954);return _0x53c88f['set'](_0xa637('0x1d'),_0x1496b3+'-'+_0x1b572d+'/'+_0x3645a3)[_0xa637('0x18')](_0x48f2df);}return null;};}function patchUpdates(_0x59ef30){return function(_0x1237e7){try{jsonpatch[_0xa637('0x1e')](_0x1237e7,_0x59ef30,!![]);}catch(_0x44b6f8){return BPromise[_0xa637('0x1f')](_0x44b6f8);}return _0x1237e7[_0xa637('0x20')]();};}function saveUpdates(_0x33ee34,_0xd59198){return function(_0x5643a2){if(_0x5643a2){return _0x5643a2['update'](_0x33ee34)['then'](function(_0x2479e4){return _0x2479e4;});}return null;};}function removeEntity(_0x3723cb,_0x2964de){return function(_0x29fc31){if(_0x29fc31){return _0x29fc31[_0xa637('0x21')]()[_0xa637('0x22')](function(){_0x3723cb[_0xa637('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1385fa,_0x1b2aa8){return function(_0xeccb30){if(!_0xeccb30){_0x1385fa[_0xa637('0x16')](0x194);}return _0xeccb30;};}function handleError(_0x19c0d3,_0x1aa499){_0x1aa499=_0x1aa499||0x1f4;return function(_0x5ebbf7){logger[_0xa637('0x23')](_0x5ebbf7[_0xa637('0x24')]);if(_0x5ebbf7[_0xa637('0x25')]){delete _0x5ebbf7['name'];}_0x19c0d3[_0xa637('0x17')](_0x1aa499)['send'](_0x5ebbf7);};}exports[_0xa637('0x26')]=function(_0x4fe7ab,_0x435cfe){var _0x4f2091={},_0x4a0c54={},_0x3938ca={'count':0x0,'rows':[]};var _0x43c2b3=_['map'](db['SalesforceField'][_0xa637('0x27')],function(_0x3f512c){return{'name':_0x3f512c[_0xa637('0x28')],'type':_0x3f512c[_0xa637('0x29')][_0xa637('0x2a')]};});_0x4a0c54['model']=_[_0xa637('0x2b')](_0x43c2b3,_0xa637('0x25'));_0x4a0c54[_0xa637('0x2c')]=_[_0xa637('0x2d')](_0x4fe7ab[_0xa637('0x2c')]);_0x4a0c54[_0xa637('0x2e')]=_[_0xa637('0x2f')](_0x4a0c54['model'],_0x4a0c54[_0xa637('0x2c')]);_0x4f2091[_0xa637('0x30')]=_[_0xa637('0x2f')](_0x4a0c54['model'],qs[_0xa637('0x31')](_0x4fe7ab[_0xa637('0x2c')]['fields']));_0x4f2091[_0xa637('0x30')]=_0x4f2091['attributes'][_0xa637('0x32')]?_0x4f2091['attributes']:_0x4a0c54[_0xa637('0x33')];if(!_0x4fe7ab[_0xa637('0x2c')][_0xa637('0x34')](_0xa637('0x35'))){_0x4f2091[_0xa637('0x1a')]=qs[_0xa637('0x1a')](_0x4fe7ab['query']['limit']);_0x4f2091[_0xa637('0x19')]=qs[_0xa637('0x19')](_0x4fe7ab[_0xa637('0x2c')][_0xa637('0x19')]);}_0x4f2091[_0xa637('0x36')]=qs['sort'](_0x4fe7ab[_0xa637('0x2c')]['sort']);_0x4f2091[_0xa637('0x37')]=qs['filters'](_[_0xa637('0x38')](_0x4fe7ab['query'],_0x4a0c54[_0xa637('0x2e')]),_0x43c2b3);if(_0x4fe7ab[_0xa637('0x2c')][_0xa637('0x39')]){_0x4f2091[_0xa637('0x37')]=_[_0xa637('0x3a')](_0x4f2091['where'],{'$or':_['map'](_0x43c2b3,function(_0x2f360){if(_0x2f360[_0xa637('0x29')]!==_0xa637('0x3b')){var _0x49b0f6={};_0x49b0f6[_0x2f360[_0xa637('0x25')]]={'$like':'%'+_0x4fe7ab[_0xa637('0x2c')]['filter']+'%'};return _0x49b0f6;}})});}_0x4f2091=_[_0xa637('0x3a')]({},_0x4f2091,_0x4fe7ab[_0xa637('0x3c')]);var _0x13b4f9={'where':_0x4f2091['where']};return db[_0xa637('0x3d')][_0xa637('0x1c')](_0x13b4f9)[_0xa637('0x22')](function(_0xe1bfda){_0x3938ca[_0xa637('0x1c')]=_0xe1bfda;if(_0x4fe7ab[_0xa637('0x2c')]['includeAll']){_0x4f2091['include']=[{'all':!![]}];}return db[_0xa637('0x3d')][_0xa637('0x3e')](_0x4f2091);})['then'](function(_0x30d7bb){_0x3938ca['rows']=_0x30d7bb;return _0x3938ca;})[_0xa637('0x22')](respondWithFilteredResult(_0x435cfe,_0x4f2091))[_0xa637('0x3f')](handleError(_0x435cfe,null));};exports[_0xa637('0x40')]=function(_0x389277,_0xf1d15d){var _0x10ddd6={'raw':!![],'where':{'id':_0x389277[_0xa637('0x41')]['id']}},_0x45257d={};_0x45257d[_0xa637('0x33')]=_[_0xa637('0x2d')](db[_0xa637('0x3d')]['rawAttributes']);_0x45257d['query']=_[_0xa637('0x2d')](_0x389277['query']);_0x45257d[_0xa637('0x2e')]=_['intersection'](_0x45257d[_0xa637('0x33')],_0x45257d['query']);_0x10ddd6[_0xa637('0x30')]=_['intersection'](_0x45257d['model'],qs['fields'](_0x389277[_0xa637('0x2c')][_0xa637('0x31')]));_0x10ddd6[_0xa637('0x30')]=_0x10ddd6[_0xa637('0x30')][_0xa637('0x32')]?_0x10ddd6[_0xa637('0x30')]:_0x45257d[_0xa637('0x33')];if(_0x389277[_0xa637('0x2c')][_0xa637('0x42')]){_0x10ddd6[_0xa637('0x43')]=[{'all':!![]}];}_0x10ddd6=_[_0xa637('0x3a')]({},_0x10ddd6,_0x389277['options']);return db[_0xa637('0x3d')][_0xa637('0x44')](_0x10ddd6)[_0xa637('0x22')](handleEntityNotFound(_0xf1d15d,null))[_0xa637('0x22')](respondWithResult(_0xf1d15d,null))[_0xa637('0x3f')](handleError(_0xf1d15d,null));};exports[_0xa637('0x45')]=function(_0xb1e212,_0x5f240){return db[_0xa637('0x3d')]['create'](_0xb1e212[_0xa637('0x46')],{})[_0xa637('0x22')](respondWithResult(_0x5f240,0xc9))[_0xa637('0x3f')](handleError(_0x5f240,null));};exports['update']=function(_0x13918c,_0x2aaf37){if(_0x13918c[_0xa637('0x46')]['id']){delete _0x13918c[_0xa637('0x46')]['id'];}return db[_0xa637('0x3d')][_0xa637('0x44')]({'where':{'id':_0x13918c[_0xa637('0x41')]['id']}})[_0xa637('0x22')](handleEntityNotFound(_0x2aaf37,null))['then'](saveUpdates(_0x13918c['body'],null))[_0xa637('0x22')](respondWithResult(_0x2aaf37,null))['catch'](handleError(_0x2aaf37,null));};exports['destroy']=function(_0x24e925,_0x5cf279){return db[_0xa637('0x3d')][_0xa637('0x44')]({'where':{'id':_0x24e925['params']['id']}})['then'](handleEntityNotFound(_0x5cf279,null))['then'](removeEntity(_0x5cf279,null))[_0xa637('0x3f')](handleError(_0x5cf279,null));};
\ No newline at end of file
index 2f6eabb..3ed4ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fce=['salesforce_unique_index','FieldId','lodash','util','moment','bluebird','request-promise','path','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields'];(function(_0x3ed213,_0x451c47){var _0x241c5c=function(_0x10ef19){while(--_0x10ef19){_0x3ed213['push'](_0x3ed213['shift']());}};_0x241c5c(++_0x451c47);}(_0x1fce,0x91));var _0xe1fc=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0x1fce[_0x17928f];return _0x500b63;};'use strict';var _=require(_0xe1fc('0x0'));var util=require(_0xe1fc('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe1fc('0x2'));var BPromise=require(_0xe1fc('0x3'));var rp=require(_0xe1fc('0x4'));var fs=require('fs');var path=require(_0xe1fc('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe1fc('0x6'));module[_0xe1fc('0x7')]=function(_0x46077d,_0x58dd21){return _0x46077d[_0xe1fc('0x8')](_0xe1fc('0x9'),attributes,{'tableName':_0xe1fc('0xa'),'paranoid':![],'indexes':[{'name':_0xe1fc('0xb'),'fields':['idField',_0xe1fc('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf851=['salesforce_unique_index','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','SalesforceField','int_salesforce_fields'];(function(_0x1fb976,_0x5b410b){var _0x5e7f24=function(_0x2d45ab){while(--_0x2d45ab){_0x1fb976['push'](_0x1fb976['shift']());}};_0x5e7f24(++_0x5b410b);}(_0xf851,0x101));var _0x1f85=function(_0x4557dc,_0x3687b2){_0x4557dc=_0x4557dc-0x0;var _0x1377aa=_0xf851[_0x4557dc];return _0x1377aa;};'use strict';var _=require(_0x1f85('0x0'));var util=require(_0x1f85('0x1'));var logger=require(_0x1f85('0x2'))(_0x1f85('0x3'));var moment=require(_0x1f85('0x4'));var BPromise=require('bluebird');var rp=require(_0x1f85('0x5'));var fs=require('fs');var path=require(_0x1f85('0x6'));var rimraf=require(_0x1f85('0x7'));var config=require(_0x1f85('0x8'));var attributes=require('./intSalesforceField.attributes');module[_0x1f85('0x9')]=function(_0x287633,_0x127caf){return _0x287633[_0x1f85('0xa')](_0x1f85('0xb'),attributes,{'tableName':_0x1f85('0xc'),'paranoid':![],'indexes':[{'name':_0x1f85('0xd'),'fields':['idField',_0x1f85('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3939c8a..a688404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0506=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash'];(function(_0x137815,_0x78dd4b){var _0x29ded1=function(_0x32d620){while(--_0x32d620){_0x137815['push'](_0x137815['shift']());}};_0x29ded1(++_0x78dd4b);}(_0x0506,0xa7));var _0x6050=function(_0x218433,_0x3bf481){_0x218433=_0x218433-0x0;var _0x230495=_0x0506[_0x218433];return _0x230495;};'use strict';var _=require(_0x6050('0x0'));var util=require(_0x6050('0x1'));var moment=require(_0x6050('0x2'));var BPromise=require(_0x6050('0x3'));var rs=require(_0x6050('0x4'));var fs=require('fs');var Redis=require(_0x6050('0x5'));var db=require(_0x6050('0x6'))['db'];var utils=require(_0x6050('0x7'));var logger=require(_0x6050('0x8'))(_0x6050('0x9'));var config=require(_0x6050('0xa'));var jayson=require(_0x6050('0xb'));var client=jayson[_0x6050('0xc')][_0x6050('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x551b19,_0x31ece2,_0x31552){return new BPromise(function(_0x1a3f99,_0x5e57b7){return client['request'](_0x551b19,_0x31552)['then'](function(_0x2306b7){logger['info'](_0x6050('0xe'),_0x31ece2,_0x6050('0xf'));logger[_0x6050('0x10')](_0x6050('0x11'),_0x31ece2,_0x6050('0xf'),JSON[_0x6050('0x12')](_0x2306b7));if(_0x2306b7[_0x6050('0x13')]){if(_0x2306b7[_0x6050('0x13')]['code']===0x1f4){logger[_0x6050('0x13')](_0x6050('0xe'),_0x31ece2,_0x2306b7['error']['message']);return _0x5e57b7(_0x2306b7[_0x6050('0x13')][_0x6050('0x14')]);}logger['error'](_0x6050('0xe'),_0x31ece2,_0x2306b7[_0x6050('0x13')][_0x6050('0x14')]);return _0x1a3f99(_0x2306b7[_0x6050('0x13')][_0x6050('0x14')]);}else{logger[_0x6050('0x15')]('SalesforceField,\x20%s,\x20%s',_0x31ece2,'request\x20sent');_0x1a3f99(_0x2306b7[_0x6050('0x16')][_0x6050('0x14')]);}})[_0x6050('0x17')](function(_0x214f46){logger['error'](_0x6050('0xe'),_0x31ece2,_0x214f46);_0x5e57b7(_0x214f46);});});}
\ No newline at end of file
+var _0xe386=['error','code','SalesforceField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s'];(function(_0x4d934b,_0x52f8e9){var _0xc0338b=function(_0x1a356c){while(--_0x1a356c){_0x4d934b['push'](_0x4d934b['shift']());}};_0xc0338b(++_0x52f8e9);}(_0xe386,0xe2));var _0x6e38=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe386[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x6e38('0x0'));var util=require(_0x6e38('0x1'));var moment=require(_0x6e38('0x2'));var BPromise=require(_0x6e38('0x3'));var rs=require(_0x6e38('0x4'));var fs=require('fs');var Redis=require(_0x6e38('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6e38('0x6'));var logger=require(_0x6e38('0x7'))(_0x6e38('0x8'));var config=require(_0x6e38('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6e38('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8550ad,_0x5cfdea,_0x4b6fb2){return new BPromise(function(_0x3dfabd,_0x283ad2){return client[_0x6e38('0xb')](_0x8550ad,_0x4b6fb2)['then'](function(_0x4e7060){logger[_0x6e38('0xc')]('SalesforceField,\x20%s,\x20%s',_0x5cfdea,_0x6e38('0xd'));logger[_0x6e38('0xe')](_0x6e38('0xf'),_0x5cfdea,_0x6e38('0xd'),JSON['stringify'](_0x4e7060));if(_0x4e7060[_0x6e38('0x10')]){if(_0x4e7060[_0x6e38('0x10')][_0x6e38('0x11')]===0x1f4){logger[_0x6e38('0x10')](_0x6e38('0x12'),_0x5cfdea,_0x4e7060['error'][_0x6e38('0x13')]);return _0x283ad2(_0x4e7060[_0x6e38('0x10')][_0x6e38('0x13')]);}logger[_0x6e38('0x10')]('SalesforceField,\x20%s,\x20%s',_0x5cfdea,_0x4e7060['error'][_0x6e38('0x13')]);return _0x3dfabd(_0x4e7060[_0x6e38('0x10')]['message']);}else{logger[_0x6e38('0xc')](_0x6e38('0x12'),_0x5cfdea,'request\x20sent');_0x3dfabd(_0x4e7060[_0x6e38('0x14')]['message']);}})[_0x6e38('0x15')](function(_0xca3aaf){logger[_0x6e38('0x10')]('SalesforceField,\x20%s,\x20%s',_0x5cfdea,_0xca3aaf);_0x283ad2(_0xca3aaf);});});}
\ No newline at end of file
index d12112b..cc4c5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdab2=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','create','post','addConfiguration','delete','exports','multer','util','connect-timeout','express'];(function(_0x5915ba,_0x1be128){var _0x4da37e=function(_0x4c7b17){while(--_0x4c7b17){_0x5915ba['push'](_0x5915ba['shift']());}};_0x4da37e(++_0x1be128);}(_0xdab2,0x130));var _0x2dab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdab2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2dab('0x0'));var util=require(_0x2dab('0x1'));var path=require('path');var timeout=require(_0x2dab('0x2'));var express=require(_0x2dab('0x3'));var router=express[_0x2dab('0x4')]();var fs_extra=require(_0x2dab('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2dab('0x6'));var config=require(_0x2dab('0x7'));var controller=require(_0x2dab('0x8'));router[_0x2dab('0x9')]('/',auth[_0x2dab('0xa')](),controller[_0x2dab('0xb')]);router[_0x2dab('0x9')](_0x2dab('0xc'),auth[_0x2dab('0xa')](),controller[_0x2dab('0xd')]);router[_0x2dab('0x9')](_0x2dab('0xe'),auth[_0x2dab('0xa')](),controller['getConfigurations']);router['get'](_0x2dab('0xf'),auth[_0x2dab('0xa')](),controller[_0x2dab('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2dab('0x11')]);router[_0x2dab('0x12')](_0x2dab('0xe'),auth[_0x2dab('0xa')](),controller[_0x2dab('0x13')]);router['put'](_0x2dab('0xc'),auth[_0x2dab('0xa')](),controller['update']);router[_0x2dab('0x14')](_0x2dab('0xc'),auth[_0x2dab('0xa')](),controller['destroy']);module[_0x2dab('0x15')]=router;
\ No newline at end of file
+var _0x7aa2=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields'];(function(_0x1d83db,_0x89d115){var _0x2dc1d1=function(_0x13fdc3){while(--_0x13fdc3){_0x1d83db['push'](_0x1d83db['shift']());}};_0x2dc1d1(++_0x89d115);}(_0x7aa2,0x132));var _0x27aa=function(_0x140010,_0x4d7233){_0x140010=_0x140010-0x0;var _0x373bb8=_0x7aa2[_0x140010];return _0x373bb8;};'use strict';var multer=require(_0x27aa('0x0'));var util=require(_0x27aa('0x1'));var path=require(_0x27aa('0x2'));var timeout=require(_0x27aa('0x3'));var express=require(_0x27aa('0x4'));var router=express[_0x27aa('0x5')]();var fs_extra=require(_0x27aa('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x27aa('0x7'));var config=require(_0x27aa('0x8'));var controller=require(_0x27aa('0x9'));router['get']('/',auth[_0x27aa('0xa')](),controller[_0x27aa('0xb')]);router[_0x27aa('0xc')](_0x27aa('0xd'),auth[_0x27aa('0xa')](),controller[_0x27aa('0xe')]);router['get'](_0x27aa('0xf'),auth[_0x27aa('0xa')](),controller[_0x27aa('0x10')]);router[_0x27aa('0xc')](_0x27aa('0x11'),auth[_0x27aa('0xa')](),controller[_0x27aa('0x12')]);router['post']('/',auth[_0x27aa('0xa')](),controller[_0x27aa('0x13')]);router['post'](_0x27aa('0xf'),auth[_0x27aa('0xa')](),controller['addConfiguration']);router[_0x27aa('0x14')](_0x27aa('0xd'),auth[_0x27aa('0xa')](),controller[_0x27aa('0x15')]);router[_0x27aa('0x16')](_0x27aa('0xd'),auth[_0x27aa('0xa')](),controller[_0x27aa('0x17')]);module[_0x27aa('0x18')]=router;
\ No newline at end of file
index 8f14a1d..c2646f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b69=['remoteUri','sequelize','STRING','username'];(function(_0x26d4ca,_0x4347e6){var _0x4324f6=function(_0x295898){while(--_0x295898){_0x26d4ca['push'](_0x26d4ca['shift']());}};_0x4324f6(++_0x4347e6);}(_0x2b69,0x111));var _0x92b6=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x2b69[_0x15bc81];return _0x59440e;};'use strict';var Sequelize=require(_0x92b6('0x0'));module['exports']={'name':{'type':Sequelize[_0x92b6('0x1')]},'description':{'type':Sequelize[_0x92b6('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x92b6('0x2')},'password':{'type':Sequelize[_0x92b6('0x1')]},'email':{'type':Sequelize[_0x92b6('0x1')]},'remoteUri':{'type':Sequelize[_0x92b6('0x1')],'unique':_0x92b6('0x3')},'serverUrl':{'type':Sequelize[_0x92b6('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x55c4=['exports','STRING','username','remoteUri','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x55c4,0x1d5));var _0x455c=function(_0x35af87,_0x47c533){_0x35af87=_0x35af87-0x0;var _0x56120d=_0x55c4[_0x35af87];return _0x56120d;};'use strict';var Sequelize=require(_0x455c('0x0'));module[_0x455c('0x1')]={'name':{'type':Sequelize[_0x455c('0x2')]},'description':{'type':Sequelize[_0x455c('0x2')]},'username':{'type':Sequelize[_0x455c('0x2')],'unique':_0x455c('0x3')},'password':{'type':Sequelize[_0x455c('0x2')]},'email':{'type':Sequelize[_0x455c('0x2')]},'remoteUri':{'type':Sequelize[_0x455c('0x2')],'unique':_0x455c('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index a4af42a..2c100b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3fe=['%s/api/now/doc/table/schema/','GET','incident?sysparm_display_value=all','result','log','assign','remove','forEach','internalType','label','push','all','TCL:\x20_object','includes','concat','ServiceNow\x20error:\x20','statusCode','error','test','Wrong\x20credentials','boolean','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','then','destroy','stack','send','index','ServicenowAccount','fieldName','key','model','map','name','query','filters','intersection','fields','attributes','length','nolimit','order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','getConfigurations','findOne','ServicenowConfiguration','rawAttributes','hasOwnProperty','AccountId','Subjects','Descriptions','getDescriptions','channel','type','ServicenowField','getFields','made_sla','knowledge','close_code','notify','severity','category','parent','caused_by','watch_list','upon_reject','child_incidents','hold_reason','resolved_by','sys_updated_by','sys_created_on','sys_domain','state','sys_created_by','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','group_list','reopened_time','resolved_at','caller_id','approval_set','subcategory','short_description','delivery_task','work_start','assignment_group','additional_assignee_list','calendar_duration','sys_class_name','close_notes','closed_by','parent_incident','sys_id','contact_type','reopened_by','incident_state','urgency','problem_id','company','reassignment_count','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','email','remoteUri','serverUrl','substring','lastIndexOf','format'];(function(_0x351509,_0x54725c){var _0x4e9861=function(_0x54f92c){while(--_0x54f92c){_0x351509['push'](_0x351509['shift']());}};_0x4e9861(++_0x54725c);}(_0xd3fe,0x198));var _0xed3f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd3fe[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xed3f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xed3f('0x1'));var jsonpatch=require(_0xed3f('0x2'));var rp=require(_0xed3f('0x3'));var moment=require(_0xed3f('0x4'));var BPromise=require(_0xed3f('0x5'));var Mustache=require('mustache');var util=require(_0xed3f('0x6'));var path=require(_0xed3f('0x7'));var sox=require(_0xed3f('0x8'));var csv=require(_0xed3f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xed3f('0xa'));var _=require(_0xed3f('0xb'));var squel=require('squel');var crypto=require(_0xed3f('0xc'));var jsforce=require(_0xed3f('0xd'));var deskjs=require(_0xed3f('0xe'));var toCsv=require(_0xed3f('0x9'));var querystring=require(_0xed3f('0xf'));var Papa=require(_0xed3f('0x10'));var Redis=require(_0xed3f('0x11'));var authService=require(_0xed3f('0x12'));var qs=require(_0xed3f('0x13'));var as=require(_0xed3f('0x14'));var hardwareService=require(_0xed3f('0x15'));var logger=require(_0xed3f('0x16'))(_0xed3f('0x17'));var utils=require(_0xed3f('0x18'));var config=require(_0xed3f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xed3f('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3cd0d5,_0x1938cb){_0x1938cb=_0x1938cb||0xcc;return function(_0x249fa0){if(_0x249fa0){return _0x3cd0d5[_0xed3f('0x1b')](_0x1938cb);}return _0x3cd0d5['status'](_0x1938cb)[_0xed3f('0x1c')]();};}function respondWithResult(_0x3eaef4,_0x397758){_0x397758=_0x397758||0xc8;return function(_0x4ad7b6){if(_0x4ad7b6){return _0x3eaef4['status'](_0x397758)[_0xed3f('0x1d')](_0x4ad7b6);}};}function respondWithFilteredResult(_0x325d9f,_0x598e33){return function(_0x454819){if(_0x454819){var _0x5ec843=typeof _0x598e33[_0xed3f('0x1e')]===_0xed3f('0x1f')&&typeof _0x598e33['limit']===_0xed3f('0x1f');var _0x4f2102=_0x454819[_0xed3f('0x20')];var _0x2825d8=_0x5ec843?0x0:_0x598e33['offset'];var _0x570343=_0x5ec843?_0x454819[_0xed3f('0x20')]:_0x598e33[_0xed3f('0x1e')]+_0x598e33[_0xed3f('0x21')];var _0x770dde;if(_0x570343>=_0x4f2102){_0x570343=_0x4f2102;_0x770dde=0xc8;}else{_0x770dde=0xce;}_0x325d9f[_0xed3f('0x22')](_0x770dde);return _0x325d9f[_0xed3f('0x23')](_0xed3f('0x24'),_0x2825d8+'-'+_0x570343+'/'+_0x4f2102)[_0xed3f('0x1d')](_0x454819);}return null;};}function patchUpdates(_0x3c1feb){return function(_0x275a26){try{jsonpatch[_0xed3f('0x25')](_0x275a26,_0x3c1feb,!![]);}catch(_0x460776){return BPromise[_0xed3f('0x26')](_0x460776);}return _0x275a26[_0xed3f('0x27')]();};}function saveUpdates(_0x1b98f2,_0x348f09){return function(_0x26692d){if(_0x26692d){return _0x26692d[_0xed3f('0x28')](_0x1b98f2)[_0xed3f('0x29')](function(_0x528d2b){return _0x528d2b;});}return null;};}function removeEntity(_0x2b6b4c,_0xbcf505){return function(_0x115271){if(_0x115271){return _0x115271[_0xed3f('0x2a')]()[_0xed3f('0x29')](function(){_0x2b6b4c[_0xed3f('0x22')](0xcc)[_0xed3f('0x1c')]();});}};}function handleEntityNotFound(_0x3e2a4a,_0x5402fd){return function(_0x131ff6){if(!_0x131ff6){_0x3e2a4a[_0xed3f('0x1b')](0x194);}return _0x131ff6;};}function handleError(_0x1937b7,_0x10ea41){_0x10ea41=_0x10ea41||0x1f4;return function(_0x1162a4){logger['error'](_0x1162a4[_0xed3f('0x2b')]);if(_0x1162a4['name']){delete _0x1162a4['name'];}_0x1937b7[_0xed3f('0x22')](_0x10ea41)[_0xed3f('0x2c')](_0x1162a4);};}exports[_0xed3f('0x2d')]=function(_0x3dda12,_0x29f207){var _0x2b34be={},_0x421e1a={},_0xd03700={'count':0x0,'rows':[]};var _0x326f3a=_['map'](db[_0xed3f('0x2e')]['rawAttributes'],function(_0x4c3b80){return{'name':_0x4c3b80[_0xed3f('0x2f')],'type':_0x4c3b80['type'][_0xed3f('0x30')]};});_0x421e1a[_0xed3f('0x31')]=_[_0xed3f('0x32')](_0x326f3a,_0xed3f('0x33'));_0x421e1a[_0xed3f('0x34')]=_['keys'](_0x3dda12[_0xed3f('0x34')]);_0x421e1a[_0xed3f('0x35')]=_[_0xed3f('0x36')](_0x421e1a['model'],_0x421e1a[_0xed3f('0x34')]);_0x2b34be['attributes']=_[_0xed3f('0x36')](_0x421e1a[_0xed3f('0x31')],qs[_0xed3f('0x37')](_0x3dda12[_0xed3f('0x34')][_0xed3f('0x37')]));_0x2b34be[_0xed3f('0x38')]=_0x2b34be[_0xed3f('0x38')][_0xed3f('0x39')]?_0x2b34be[_0xed3f('0x38')]:_0x421e1a[_0xed3f('0x31')];if(!_0x3dda12[_0xed3f('0x34')]['hasOwnProperty'](_0xed3f('0x3a'))){_0x2b34be['limit']=qs['limit'](_0x3dda12[_0xed3f('0x34')]['limit']);_0x2b34be[_0xed3f('0x1e')]=qs[_0xed3f('0x1e')](_0x3dda12[_0xed3f('0x34')][_0xed3f('0x1e')]);}_0x2b34be[_0xed3f('0x3b')]=qs['sort'](_0x3dda12['query']['sort']);_0x2b34be[_0xed3f('0x3c')]=qs[_0xed3f('0x35')](_[_0xed3f('0x3d')](_0x3dda12['query'],_0x421e1a[_0xed3f('0x35')]),_0x326f3a);if(_0x3dda12['query'][_0xed3f('0x3e')]){_0x2b34be[_0xed3f('0x3c')]=_[_0xed3f('0x3f')](_0x2b34be['where'],{'$or':_[_0xed3f('0x32')](_0x326f3a,function(_0x48e033){if(_0x48e033['type']!==_0xed3f('0x40')){var _0x138558={};_0x138558[_0x48e033[_0xed3f('0x33')]]={'$like':'%'+_0x3dda12[_0xed3f('0x34')]['filter']+'%'};return _0x138558;}})});}_0x2b34be=_[_0xed3f('0x3f')]({},_0x2b34be,_0x3dda12['options']);var _0x8e88e={'where':_0x2b34be[_0xed3f('0x3c')]};return db[_0xed3f('0x2e')]['count'](_0x8e88e)['then'](function(_0x197ceb){_0xd03700['count']=_0x197ceb;if(_0x3dda12[_0xed3f('0x34')][_0xed3f('0x41')]){_0x2b34be[_0xed3f('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0xed3f('0x43')](_0x2b34be);})[_0xed3f('0x29')](function(_0x12a032){_0xd03700[_0xed3f('0x44')]=_0x12a032;return _0xd03700;})[_0xed3f('0x29')](respondWithFilteredResult(_0x29f207,_0x2b34be))[_0xed3f('0x45')](handleError(_0x29f207,null));};exports[_0xed3f('0x46')]=function(_0x1e5b24,_0x5853e8){var _0x257299={'raw':![],'where':{'id':_0x1e5b24[_0xed3f('0x47')]['id']}},_0x5e937c={};_0x5e937c[_0xed3f('0x31')]=_[_0xed3f('0x48')](db[_0xed3f('0x2e')]['rawAttributes']);_0x5e937c['query']=_[_0xed3f('0x48')](_0x1e5b24[_0xed3f('0x34')]);_0x5e937c[_0xed3f('0x35')]=_[_0xed3f('0x36')](_0x5e937c[_0xed3f('0x31')],_0x5e937c['query']);_0x257299[_0xed3f('0x38')]=_[_0xed3f('0x36')](_0x5e937c[_0xed3f('0x31')],qs['fields'](_0x1e5b24[_0xed3f('0x34')][_0xed3f('0x37')]));_0x257299[_0xed3f('0x38')]=_0x257299[_0xed3f('0x38')][_0xed3f('0x39')]?_0x257299['attributes']:_0x5e937c[_0xed3f('0x31')];if(_0x1e5b24[_0xed3f('0x34')]['includeAll']){_0x257299[_0xed3f('0x42')]=[{'all':!![]}];}_0x257299=_[_0xed3f('0x3f')]({},_0x257299,_0x1e5b24[_0xed3f('0x49')]);return db[_0xed3f('0x2e')][_0xed3f('0x4a')](_0x257299)[_0xed3f('0x29')](handleEntityNotFound(_0x5853e8,null))[_0xed3f('0x29')](respondWithResult(_0x5853e8,null))[_0xed3f('0x45')](handleError(_0x5853e8,null));};exports[_0xed3f('0x4b')]=function(_0x56ab2c,_0x33b997){return db[_0xed3f('0x2e')]['create'](_0x56ab2c[_0xed3f('0x4c')],{})[_0xed3f('0x29')](respondWithResult(_0x33b997,0xc9))['catch'](handleError(_0x33b997,null));};exports['update']=function(_0xa4306e,_0x3b8f6c){if(_0xa4306e['body']['id']){delete _0xa4306e[_0xed3f('0x4c')]['id'];}return db[_0xed3f('0x2e')]['find']({'where':{'id':_0xa4306e[_0xed3f('0x47')]['id']}})[_0xed3f('0x29')](handleEntityNotFound(_0x3b8f6c,null))['then'](saveUpdates(_0xa4306e[_0xed3f('0x4c')],null))[_0xed3f('0x29')](respondWithResult(_0x3b8f6c,null))['catch'](handleError(_0x3b8f6c,null));};exports[_0xed3f('0x2a')]=function(_0x1d7cae,_0x1ceacb){return db[_0xed3f('0x2e')][_0xed3f('0x4a')]({'where':{'id':_0x1d7cae[_0xed3f('0x47')]['id']}})[_0xed3f('0x29')](handleEntityNotFound(_0x1ceacb,null))[_0xed3f('0x29')](removeEntity(_0x1ceacb,null))[_0xed3f('0x45')](handleError(_0x1ceacb,null));};exports[_0xed3f('0x4d')]=function(_0x3aee66,_0x41e48e,_0x3c7bbf){var _0x17ee5b={};var _0x708228={};var _0x553542;var _0x5959ad;return db[_0xed3f('0x2e')][_0xed3f('0x4e')]({'where':{'id':_0x3aee66[_0xed3f('0x47')]['id']}})[_0xed3f('0x29')](handleEntityNotFound(_0x41e48e,null))[_0xed3f('0x29')](function(_0x315f52){if(_0x315f52){_0x553542=_0x315f52;_0x708228[_0xed3f('0x31')]=_[_0xed3f('0x48')](db[_0xed3f('0x4f')][_0xed3f('0x50')]);_0x708228['query']=_[_0xed3f('0x48')](_0x3aee66[_0xed3f('0x34')]);_0x708228[_0xed3f('0x35')]=_[_0xed3f('0x36')](_0x708228['model'],_0x708228[_0xed3f('0x34')]);_0x17ee5b[_0xed3f('0x38')]=_[_0xed3f('0x36')](_0x708228[_0xed3f('0x31')],qs[_0xed3f('0x37')](_0x3aee66[_0xed3f('0x34')][_0xed3f('0x37')]));_0x17ee5b[_0xed3f('0x38')]=_0x17ee5b[_0xed3f('0x38')][_0xed3f('0x39')]?_0x17ee5b[_0xed3f('0x38')]:_0x708228['model'];_0x17ee5b[_0xed3f('0x3b')]=qs['sort'](_0x3aee66[_0xed3f('0x34')]['sort']);_0x17ee5b[_0xed3f('0x3c')]=qs[_0xed3f('0x35')](_[_0xed3f('0x3d')](_0x3aee66['query'],_0x708228['filters']));if(_0x3aee66[_0xed3f('0x34')][_0xed3f('0x3e')]){_0x17ee5b['where']=_['merge'](_0x17ee5b[_0xed3f('0x3c')],{'$or':_[_0xed3f('0x32')](_0x17ee5b[_0xed3f('0x38')],function(_0x2706e5){var _0x1dee1c={};_0x1dee1c[_0x2706e5]={'$like':'%'+_0x3aee66['query'][_0xed3f('0x3e')]+'%'};return _0x1dee1c;})});}_0x17ee5b=_[_0xed3f('0x3f')]({},_0x17ee5b,_0x3aee66[_0xed3f('0x49')]);return _0x553542[_0xed3f('0x4d')](_0x17ee5b);}})['then'](function(_0x14ee36){if(_0x14ee36){_0x5959ad=_0x14ee36['length'];if(!_0x3aee66[_0xed3f('0x34')][_0xed3f('0x51')](_0xed3f('0x3a'))){_0x17ee5b['limit']=qs[_0xed3f('0x21')](_0x3aee66[_0xed3f('0x34')][_0xed3f('0x21')]);_0x17ee5b[_0xed3f('0x1e')]=qs[_0xed3f('0x1e')](_0x3aee66['query'][_0xed3f('0x1e')]);}return _0x553542['getConfigurations'](_0x17ee5b);}})[_0xed3f('0x29')](function(_0x583104){if(_0x583104){return _0x583104?{'count':_0x5959ad,'rows':_0x583104}:null;}})[_0xed3f('0x29')](respondWithResult(_0x41e48e,null))[_0xed3f('0x45')](handleError(_0x41e48e,null));};exports['addConfiguration']=function(_0x459182,_0x1560e7,_0x555114){if(_0x459182[_0xed3f('0x4c')]['id']){delete _0x459182[_0xed3f('0x4c')]['id'];}return db[_0xed3f('0x2e')][_0xed3f('0x4e')]({'where':{'id':_0x459182[_0xed3f('0x47')]['id']}})[_0xed3f('0x29')](handleEntityNotFound(_0x1560e7,null))[_0xed3f('0x29')](function(_0xc462eb){if(_0xc462eb){_0x459182[_0xed3f('0x4c')][_0xed3f('0x52')]=_0xc462eb['id'];_0x459182[_0xed3f('0x4c')][_0xed3f('0x53')]=integrations['getSubjects'](_0x459182[_0xed3f('0x4c')]['channel'],_0x459182[_0xed3f('0x4c')]['type']);_0x459182['body'][_0xed3f('0x54')]=integrations[_0xed3f('0x55')](_0x459182[_0xed3f('0x4c')][_0xed3f('0x56')],_0x459182[_0xed3f('0x4c')][_0xed3f('0x57')]);return db[_0xed3f('0x4f')][_0xed3f('0x4b')](_0x459182[_0xed3f('0x4c')],{'include':[{'model':db[_0xed3f('0x58')],'as':_0xed3f('0x53')},{'model':db[_0xed3f('0x58')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x1560e7,null))[_0xed3f('0x45')](handleError(_0x1560e7,null));};exports[_0xed3f('0x59')]=function(_0x169780,_0x4dad4e,_0x513bfc){var _0x89b4b7=[_0xed3f('0x5a'),'hold_reason',_0xed3f('0x5b'),'subcategory',_0xed3f('0x5c'),_0xed3f('0x5d'),'incident_state',_0xed3f('0x5e'),_0xed3f('0x5f')];var _0x165642=[_0xed3f('0x60'),_0xed3f('0x5a'),_0xed3f('0x61'),_0xed3f('0x62'),_0xed3f('0x63'),'sys_updated_on',_0xed3f('0x64'),_0xed3f('0x65'),'approval_history','number',_0xed3f('0x66'),_0xed3f('0x67'),'opened_by','user_input',_0xed3f('0x68'),_0xed3f('0x69'),_0xed3f('0x6a'),_0xed3f('0x6b'),_0xed3f('0x5b'),_0xed3f('0x3b'),'calendar_stc',_0xed3f('0x6c'),_0xed3f('0x6d'),_0xed3f('0x6e'),_0xed3f('0x6f'),_0xed3f('0x70'),_0xed3f('0x71'),_0xed3f('0x72'),_0xed3f('0x73'),_0xed3f('0x74'),_0xed3f('0x75'),_0xed3f('0x76'),_0xed3f('0x77'),_0xed3f('0x78'),'business_duration',_0xed3f('0x79'),'work_end',_0xed3f('0x7a'),_0xed3f('0x7b'),_0xed3f('0x7c'),_0xed3f('0x7d'),_0xed3f('0x7e'),'work_notes',_0xed3f('0x7f'),_0xed3f('0x5c'),'correlation_display',_0xed3f('0x80'),_0xed3f('0x81'),_0xed3f('0x82'),'business_stc',_0xed3f('0x83'),'description',_0xed3f('0x84'),_0xed3f('0x5d'),_0xed3f('0x85'),_0xed3f('0x86'),_0xed3f('0x87'),'follow_up',_0xed3f('0x88'),_0xed3f('0x89'),_0xed3f('0x8a'),_0xed3f('0x8b'),_0xed3f('0x8c'),_0xed3f('0x8d'),_0xed3f('0x8e'),_0xed3f('0x8f'),_0xed3f('0x90'),'activity_due',_0xed3f('0x91'),'severity',_0xed3f('0x92'),_0xed3f('0x93'),_0xed3f('0x94'),_0xed3f('0x95'),_0xed3f('0x96'),_0xed3f('0x97'),_0xed3f('0x98'),_0xed3f('0x99'),_0xed3f('0x9a'),_0xed3f('0x9b'),_0xed3f('0x9c'),_0xed3f('0x9d'),_0xed3f('0x5f')];var _0x505225='';var _0x3b0a70='';var _0x313759=[];var _0x220a10='';var _0x4cca49='';var _0x53bec0=[];var _0x1be74d='';var _0x1abf79='';var _0x14f8e7={};var _0x2189d0='';return db[_0xed3f('0x2e')][_0xed3f('0x4e')]({'where':{'id':_0x169780['params']['id']},'attributes':['id',_0xed3f('0x9e'),'password',_0xed3f('0x9f'),_0xed3f('0xa0'),_0xed3f('0xa1')]})[_0xed3f('0x29')](handleEntityNotFound(_0x4dad4e,null))['then'](function(_0x1cad4b){if(_0x1cad4b){_0x2189d0=_0x1cad4b['remoteUri'];var _0x48a42e=_0x2189d0['slice'](-0x1);if(_0x48a42e==='/'){_0x2189d0=_0x2189d0[_0xed3f('0xa2')](0x0,_0x2189d0[_0xed3f('0xa3')](_0x48a42e));}_0x1abf79=util[_0xed3f('0xa4')](_0xed3f('0xa5'),_0x2189d0);_0x1be74d=util['format']('%s/api/now/table/',_0x2189d0);_0x14f8e7={'user':_0x1cad4b[_0xed3f('0x9e')],'pass':_0x1cad4b['password']};var _0xacf90c={'method':_0xed3f('0xa6'),'uri':_0x1abf79+_0xed3f('0xa7'),'auth':_0x14f8e7,'json':!![]};return rp(_0xacf90c);}})[_0xed3f('0x29')](function(_0x24843e){if(_0x24843e['result'][_0xed3f('0x39')]>0x0){_0x505225=_0x24843e[_0xed3f('0xa8')];}console[_0xed3f('0xa9')]('incident\x20table\x20objects',_0x505225);_0x53bec0=[];_0x3b0a70=Object[_0xed3f('0xaa')]([],_0x505225);_[_0xed3f('0xab')](_0x3b0a70,function(_0x28d68d){return!_0x89b4b7['includes'](_0x28d68d[_0xed3f('0x33')]);});_0x3b0a70[_0xed3f('0xac')](function(_0x40da20){var _0x34cf3c=createFieldObject(_0x1be74d,_0x14f8e7,_0x40da20[_0xed3f('0xad')],_0x40da20['name'],_0x40da20[_0xed3f('0xae')],![]);_0x53bec0[_0xed3f('0xaf')](_0x34cf3c);});return Promise[_0xed3f('0xb0')](_0x53bec0);})[_0xed3f('0x29')](function(_0x2c0d63){_0x313759=_0x2c0d63;_0x220a10=Object[_0xed3f('0xaa')]([],_0x505225);console[_0xed3f('0xa9')](_0xed3f('0xb1'),_0x505225);_[_0xed3f('0xab')](_0x220a10,function(_0x3fdd34){return _0x165642[_0xed3f('0xb2')](_0x3fdd34[_0xed3f('0x33')]);});console[_0xed3f('0xa9')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x220a10);_0x53bec0=[];_0x220a10[_0xed3f('0xac')](function(_0x3e7243){var _0x495618=createFieldObject(_0x1be74d,_0x14f8e7,_0x3e7243[_0xed3f('0xad')],_0x3e7243[_0xed3f('0x33')],_0x3e7243[_0xed3f('0xae')],!![]);_0x53bec0['push'](_0x495618);});return Promise[_0xed3f('0xb0')](_0x53bec0);})['then'](function(_0x4f9c8a){_0x4cca49=_0x4f9c8a;var _0x109bdc=_0x313759[_0xed3f('0xb3')](_0x4cca49);return{'count':_0x109bdc[_0xed3f('0x39')],'rows':_0x109bdc};})[_0xed3f('0x29')](respondWithResult(_0x4dad4e,null))[_0xed3f('0x45')](function(_0x4c0d23){console[_0xed3f('0xa9')](_0xed3f('0xb4')+_0x4c0d23);var _0x5652c6=_0x169780[_0xed3f('0x34')]['test']?0x1f4:_0x4c0d23[_0xed3f('0xb5')]||0x1f4;logger[_0xed3f('0xb6')](_0x4c0d23[_0xed3f('0x2b')]);delete _0x4c0d23[_0xed3f('0x33')];if(_0x5652c6===0x191){_0x5652c6=0x190;}_0x4dad4e[_0xed3f('0x22')](_0x5652c6)[_0xed3f('0x2c')](_0x169780[_0xed3f('0x34')][_0xed3f('0xb7')]?{'message':_0xed3f('0xb8'),'statusCode':_0x4c0d23['statusCode']}:_0x4c0d23);});};function createFieldObject(_0x245293,_0x1b0134,_0x1a86dd,_0x50c6fa,_0x410813,_0x5334e8){return new Promise(function(_0x2a0436,_0x539081){var _0x43401a={'id':_0x50c6fa,'name':_0x410813,'custom':_0x5334e8};if(_0x1a86dd===_0xed3f('0xb9')){_0x43401a['options']=[{'name':'True','value':'true'},{'name':_0xed3f('0xba'),'value':_0xed3f('0xbb')}];_0x2a0436(_0x43401a);}else{var _0x59b375={'method':_0xed3f('0xa6'),'uri':_0x245293+_0xed3f('0xbc')+_0x50c6fa,'auth':_0x1b0134,'json':!![]};return rp(_0x59b375)[_0xed3f('0x29')](function(_0x566898){var _0x4a5a09=[];if(_0x566898[_0xed3f('0xa8')][_0xed3f('0x39')]>0x0){_0x566898['result']['forEach'](function(_0x4e2bb8){if(_0x4e2bb8[_0xed3f('0xbd')]===_0xed3f('0xbb')){var _0x459b50={'name':_0x4e2bb8['label'],'value':_0x4e2bb8[_0xed3f('0xbe')]};_0x4a5a09['push'](_0x459b50);}});}_0x43401a[_0xed3f('0x49')]=_0x4a5a09;if(_0x43401a[_0xed3f('0x49')][_0xed3f('0x39')]>0x0){_0x2a0436(_0x43401a);}else{if(_0x5334e8==![]){_0x2a0436();}else{_0x2a0436(_0x43401a);}}});}});}
\ No newline at end of file
+var _0x9822=['includeAll','findAll','rows','catch','params','length','include','create','body','find','getConfigurations','ServicenowConfiguration','hasOwnProperty','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','getFields','made_sla','hold_reason','subcategory','close_code','severity','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','sys_domain','state','sys_created_by','knowledge','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','priority','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','short_description','work_start','assignment_group','business_stc','description','calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','reopened_by','incident_state','urgency','problem_id','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','location','password','remoteUri','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','username','GET','incident?sysparm_display_value=all','result','incident\x20table\x20objects','assign','remove','forEach','internalType','label','push','all','log','TCL:\x20_object','includes','concat','ServiceNow\x20error:\x20','test','statusCode','error','stack','send','Wrong\x20credentials','boolean','True','true','sys_choice?sysparm_query=name=incident^element=','false','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','destroy','name','index','map','rawAttributes','type','key','model','query','keys','intersection','fields','attributes','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','ServicenowAccount'];(function(_0x3cdbed,_0x134330){var _0x3a6dd6=function(_0x15ffce){while(--_0x15ffce){_0x3cdbed['push'](_0x3cdbed['shift']());}};_0x3a6dd6(++_0x134330);}(_0x9822,0x137));var _0x2982=function(_0x1b2baf,_0x5e2a94){_0x1b2baf=_0x1b2baf-0x0;var _0x3d25a4=_0x9822[_0x1b2baf];return _0x3d25a4;};'use strict';var emlformat=require(_0x2982('0x0'));var rimraf=require(_0x2982('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x2982('0x2'));var moment=require(_0x2982('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2982('0x4'));var util=require(_0x2982('0x5'));var path=require(_0x2982('0x6'));var sox=require(_0x2982('0x7'));var csv=require(_0x2982('0x8'));var ejs=require(_0x2982('0x9'));var fs=require('fs');var fs_extra=require(_0x2982('0xa'));var _=require(_0x2982('0xb'));var squel=require('squel');var crypto=require(_0x2982('0xc'));var jsforce=require(_0x2982('0xd'));var deskjs=require(_0x2982('0xe'));var toCsv=require(_0x2982('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2982('0xf'));var qs=require(_0x2982('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2982('0x11'));var logger=require(_0x2982('0x12'))(_0x2982('0x13'));var utils=require(_0x2982('0x14'));var config=require(_0x2982('0x15'));var licenseUtil=require(_0x2982('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x2982('0x17'));function respondWithStatusCode(_0x2cf0e8,_0x888434){_0x888434=_0x888434||0xcc;return function(_0x4806d3){if(_0x4806d3){return _0x2cf0e8[_0x2982('0x18')](_0x888434);}return _0x2cf0e8['status'](_0x888434)[_0x2982('0x19')]();};}function respondWithResult(_0x2a52ca,_0x1aee0b){_0x1aee0b=_0x1aee0b||0xc8;return function(_0x28d95b){if(_0x28d95b){return _0x2a52ca[_0x2982('0x1a')](_0x1aee0b)[_0x2982('0x1b')](_0x28d95b);}};}function respondWithFilteredResult(_0x174956,_0x6c6f5d){return function(_0x21a0ef){if(_0x21a0ef){var _0x29d824=typeof _0x6c6f5d['offset']===_0x2982('0x1c')&&typeof _0x6c6f5d[_0x2982('0x1d')]===_0x2982('0x1c');var _0x44c7d8=_0x21a0ef['count'];var _0x46a002=_0x29d824?0x0:_0x6c6f5d[_0x2982('0x1e')];var _0x22291c=_0x29d824?_0x21a0ef[_0x2982('0x1f')]:_0x6c6f5d[_0x2982('0x1e')]+_0x6c6f5d[_0x2982('0x1d')];var _0x347c80;if(_0x22291c>=_0x44c7d8){_0x22291c=_0x44c7d8;_0x347c80=0xc8;}else{_0x347c80=0xce;}_0x174956[_0x2982('0x1a')](_0x347c80);return _0x174956['set'](_0x2982('0x20'),_0x46a002+'-'+_0x22291c+'/'+_0x44c7d8)['json'](_0x21a0ef);}return null;};}function patchUpdates(_0x3bc779){return function(_0x449ac8){try{jsonpatch[_0x2982('0x21')](_0x449ac8,_0x3bc779,!![]);}catch(_0x44c183){return BPromise[_0x2982('0x22')](_0x44c183);}return _0x449ac8[_0x2982('0x23')]();};}function saveUpdates(_0x199fc0,_0x167eba){return function(_0x5a7067){if(_0x5a7067){return _0x5a7067[_0x2982('0x24')](_0x199fc0)[_0x2982('0x25')](function(_0x33d0f5){return _0x33d0f5;});}return null;};}function removeEntity(_0x2d72b5,_0x2a2226){return function(_0x2835e7){if(_0x2835e7){return _0x2835e7[_0x2982('0x26')]()[_0x2982('0x25')](function(){_0x2d72b5[_0x2982('0x1a')](0xcc)[_0x2982('0x19')]();});}};}function handleEntityNotFound(_0x173177,_0x9c9e3a){return function(_0x21fca1){if(!_0x21fca1){_0x173177[_0x2982('0x18')](0x194);}return _0x21fca1;};}function handleError(_0x39e3ee,_0x1bb191){_0x1bb191=_0x1bb191||0x1f4;return function(_0x2a86dd){logger['error'](_0x2a86dd['stack']);if(_0x2a86dd[_0x2982('0x27')]){delete _0x2a86dd[_0x2982('0x27')];}_0x39e3ee['status'](_0x1bb191)['send'](_0x2a86dd);};}exports[_0x2982('0x28')]=function(_0x4c2516,_0x502abf){var _0x51375d={},_0x4a103f={},_0x5649fe={'count':0x0,'rows':[]};var _0xd10a4d=_[_0x2982('0x29')](db['ServicenowAccount'][_0x2982('0x2a')],function(_0x99e02){return{'name':_0x99e02['fieldName'],'type':_0x99e02[_0x2982('0x2b')][_0x2982('0x2c')]};});_0x4a103f[_0x2982('0x2d')]=_['map'](_0xd10a4d,_0x2982('0x27'));_0x4a103f[_0x2982('0x2e')]=_[_0x2982('0x2f')](_0x4c2516[_0x2982('0x2e')]);_0x4a103f['filters']=_[_0x2982('0x30')](_0x4a103f[_0x2982('0x2d')],_0x4a103f['query']);_0x51375d['attributes']=_[_0x2982('0x30')](_0x4a103f[_0x2982('0x2d')],qs['fields'](_0x4c2516['query'][_0x2982('0x31')]));_0x51375d[_0x2982('0x32')]=_0x51375d[_0x2982('0x32')]['length']?_0x51375d[_0x2982('0x32')]:_0x4a103f[_0x2982('0x2d')];if(!_0x4c2516[_0x2982('0x2e')]['hasOwnProperty']('nolimit')){_0x51375d['limit']=qs['limit'](_0x4c2516['query'][_0x2982('0x1d')]);_0x51375d[_0x2982('0x1e')]=qs[_0x2982('0x1e')](_0x4c2516[_0x2982('0x2e')][_0x2982('0x1e')]);}_0x51375d[_0x2982('0x33')]=qs[_0x2982('0x34')](_0x4c2516['query']['sort']);_0x51375d[_0x2982('0x35')]=qs[_0x2982('0x36')](_[_0x2982('0x37')](_0x4c2516['query'],_0x4a103f[_0x2982('0x36')]),_0xd10a4d);if(_0x4c2516[_0x2982('0x2e')]['filter']){_0x51375d[_0x2982('0x35')]=_[_0x2982('0x38')](_0x51375d[_0x2982('0x35')],{'$or':_[_0x2982('0x29')](_0xd10a4d,function(_0x5f4189){if(_0x5f4189['type']!==_0x2982('0x39')){var _0x117201={};_0x117201[_0x5f4189['name']]={'$like':'%'+_0x4c2516['query'][_0x2982('0x3a')]+'%'};return _0x117201;}})});}_0x51375d=_[_0x2982('0x38')]({},_0x51375d,_0x4c2516[_0x2982('0x3b')]);var _0x57ed46={'where':_0x51375d[_0x2982('0x35')]};return db[_0x2982('0x3c')][_0x2982('0x1f')](_0x57ed46)[_0x2982('0x25')](function(_0x5bce31){_0x5649fe['count']=_0x5bce31;if(_0x4c2516[_0x2982('0x2e')][_0x2982('0x3d')]){_0x51375d['include']=[{'all':!![]}];}return db[_0x2982('0x3c')][_0x2982('0x3e')](_0x51375d);})['then'](function(_0x27d223){_0x5649fe[_0x2982('0x3f')]=_0x27d223;return _0x5649fe;})[_0x2982('0x25')](respondWithFilteredResult(_0x502abf,_0x51375d))[_0x2982('0x40')](handleError(_0x502abf,null));};exports['show']=function(_0x27c856,_0x3ea5ee){var _0x460250={'raw':![],'where':{'id':_0x27c856[_0x2982('0x41')]['id']}},_0x38e22c={};_0x38e22c[_0x2982('0x2d')]=_[_0x2982('0x2f')](db[_0x2982('0x3c')]['rawAttributes']);_0x38e22c[_0x2982('0x2e')]=_[_0x2982('0x2f')](_0x27c856['query']);_0x38e22c[_0x2982('0x36')]=_['intersection'](_0x38e22c[_0x2982('0x2d')],_0x38e22c['query']);_0x460250[_0x2982('0x32')]=_[_0x2982('0x30')](_0x38e22c[_0x2982('0x2d')],qs['fields'](_0x27c856['query'][_0x2982('0x31')]));_0x460250[_0x2982('0x32')]=_0x460250['attributes'][_0x2982('0x42')]?_0x460250['attributes']:_0x38e22c[_0x2982('0x2d')];if(_0x27c856[_0x2982('0x2e')][_0x2982('0x3d')]){_0x460250[_0x2982('0x43')]=[{'all':!![]}];}_0x460250=_[_0x2982('0x38')]({},_0x460250,_0x27c856[_0x2982('0x3b')]);return db[_0x2982('0x3c')]['find'](_0x460250)[_0x2982('0x25')](handleEntityNotFound(_0x3ea5ee,null))[_0x2982('0x25')](respondWithResult(_0x3ea5ee,null))['catch'](handleError(_0x3ea5ee,null));};exports['create']=function(_0x489aa5,_0x2cb965){return db[_0x2982('0x3c')][_0x2982('0x44')](_0x489aa5[_0x2982('0x45')],{})['then'](respondWithResult(_0x2cb965,0xc9))[_0x2982('0x40')](handleError(_0x2cb965,null));};exports['update']=function(_0x2b1012,_0x4e3ffa){if(_0x2b1012[_0x2982('0x45')]['id']){delete _0x2b1012[_0x2982('0x45')]['id'];}return db['ServicenowAccount'][_0x2982('0x46')]({'where':{'id':_0x2b1012[_0x2982('0x41')]['id']}})['then'](handleEntityNotFound(_0x4e3ffa,null))[_0x2982('0x25')](saveUpdates(_0x2b1012[_0x2982('0x45')],null))['then'](respondWithResult(_0x4e3ffa,null))['catch'](handleError(_0x4e3ffa,null));};exports[_0x2982('0x26')]=function(_0xb3f553,_0x1c0e95){return db[_0x2982('0x3c')][_0x2982('0x46')]({'where':{'id':_0xb3f553[_0x2982('0x41')]['id']}})[_0x2982('0x25')](handleEntityNotFound(_0x1c0e95,null))[_0x2982('0x25')](removeEntity(_0x1c0e95,null))[_0x2982('0x40')](handleError(_0x1c0e95,null));};exports[_0x2982('0x47')]=function(_0x2bbd3d,_0x5c5171,_0x19a67f){var _0x5800c9={};var _0x2dca12={};var _0xb5162a;var _0x12c945;return db[_0x2982('0x3c')]['findOne']({'where':{'id':_0x2bbd3d[_0x2982('0x41')]['id']}})[_0x2982('0x25')](handleEntityNotFound(_0x5c5171,null))['then'](function(_0x569ef3){if(_0x569ef3){_0xb5162a=_0x569ef3;_0x2dca12['model']=_[_0x2982('0x2f')](db[_0x2982('0x48')][_0x2982('0x2a')]);_0x2dca12[_0x2982('0x2e')]=_[_0x2982('0x2f')](_0x2bbd3d['query']);_0x2dca12[_0x2982('0x36')]=_[_0x2982('0x30')](_0x2dca12[_0x2982('0x2d')],_0x2dca12[_0x2982('0x2e')]);_0x5800c9[_0x2982('0x32')]=_[_0x2982('0x30')](_0x2dca12[_0x2982('0x2d')],qs[_0x2982('0x31')](_0x2bbd3d[_0x2982('0x2e')]['fields']));_0x5800c9[_0x2982('0x32')]=_0x5800c9[_0x2982('0x32')][_0x2982('0x42')]?_0x5800c9['attributes']:_0x2dca12[_0x2982('0x2d')];_0x5800c9[_0x2982('0x33')]=qs['sort'](_0x2bbd3d[_0x2982('0x2e')]['sort']);_0x5800c9[_0x2982('0x35')]=qs[_0x2982('0x36')](_[_0x2982('0x37')](_0x2bbd3d['query'],_0x2dca12[_0x2982('0x36')]));if(_0x2bbd3d['query']['filter']){_0x5800c9[_0x2982('0x35')]=_[_0x2982('0x38')](_0x5800c9[_0x2982('0x35')],{'$or':_['map'](_0x5800c9[_0x2982('0x32')],function(_0x5a745d){var _0x315892={};_0x315892[_0x5a745d]={'$like':'%'+_0x2bbd3d['query'][_0x2982('0x3a')]+'%'};return _0x315892;})});}_0x5800c9=_[_0x2982('0x38')]({},_0x5800c9,_0x2bbd3d[_0x2982('0x3b')]);return _0xb5162a['getConfigurations'](_0x5800c9);}})[_0x2982('0x25')](function(_0x141d2f){if(_0x141d2f){_0x12c945=_0x141d2f['length'];if(!_0x2bbd3d['query'][_0x2982('0x49')]('nolimit')){_0x5800c9[_0x2982('0x1d')]=qs[_0x2982('0x1d')](_0x2bbd3d[_0x2982('0x2e')]['limit']);_0x5800c9['offset']=qs[_0x2982('0x1e')](_0x2bbd3d[_0x2982('0x2e')][_0x2982('0x1e')]);}return _0xb5162a[_0x2982('0x47')](_0x5800c9);}})[_0x2982('0x25')](function(_0x50f390){if(_0x50f390){return _0x50f390?{'count':_0x12c945,'rows':_0x50f390}:null;}})['then'](respondWithResult(_0x5c5171,null))[_0x2982('0x40')](handleError(_0x5c5171,null));};exports[_0x2982('0x4a')]=function(_0x693d6b,_0x302175,_0x565e6e){if(_0x693d6b[_0x2982('0x45')]['id']){delete _0x693d6b[_0x2982('0x45')]['id'];}return db[_0x2982('0x3c')][_0x2982('0x4b')]({'where':{'id':_0x693d6b[_0x2982('0x41')]['id']}})[_0x2982('0x25')](handleEntityNotFound(_0x302175,null))[_0x2982('0x25')](function(_0x4ee8ef){if(_0x4ee8ef){_0x693d6b[_0x2982('0x45')]['AccountId']=_0x4ee8ef['id'];_0x693d6b['body'][_0x2982('0x4c')]=integrations[_0x2982('0x4d')](_0x693d6b['body'][_0x2982('0x4e')],_0x693d6b[_0x2982('0x45')]['type']);_0x693d6b[_0x2982('0x45')][_0x2982('0x4f')]=integrations[_0x2982('0x50')](_0x693d6b[_0x2982('0x45')][_0x2982('0x4e')],_0x693d6b[_0x2982('0x45')][_0x2982('0x2b')]);return db[_0x2982('0x48')][_0x2982('0x44')](_0x693d6b['body'],{'include':[{'model':db[_0x2982('0x51')],'as':_0x2982('0x4c')},{'model':db[_0x2982('0x51')],'as':_0x2982('0x4f')}]});}return null;})[_0x2982('0x25')](respondWithResult(_0x302175,null))['catch'](handleError(_0x302175,null));};exports[_0x2982('0x52')]=function(_0x24869d,_0x42e281,_0x1b809d){var _0x447f1f=[_0x2982('0x53'),_0x2982('0x54'),'knowledge',_0x2982('0x55'),_0x2982('0x56'),'notify','incident_state',_0x2982('0x57'),_0x2982('0x58')];var _0x22af4b=[_0x2982('0x59'),_0x2982('0x53'),_0x2982('0x5a'),_0x2982('0x5b'),_0x2982('0x5c'),_0x2982('0x5d'),_0x2982('0x5e'),_0x2982('0x54'),_0x2982('0x5f'),_0x2982('0x60'),_0x2982('0x61'),_0x2982('0x62'),_0x2982('0x63'),'user_input','sys_created_on',_0x2982('0x64'),_0x2982('0x65'),_0x2982('0x66'),_0x2982('0x67'),_0x2982('0x33'),_0x2982('0x68'),_0x2982('0x69'),_0x2982('0x6a'),_0x2982('0x6b'),_0x2982('0x6c'),_0x2982('0x6d'),_0x2982('0x6e'),'business_service',_0x2982('0x6f'),'sys_domain_path',_0x2982('0x70'),_0x2982('0x71'),_0x2982('0x72'),_0x2982('0x73'),_0x2982('0x74'),_0x2982('0x75'),_0x2982('0x76'),_0x2982('0x77'),_0x2982('0x78'),_0x2982('0x79'),_0x2982('0x7a'),_0x2982('0x55'),'work_notes',_0x2982('0x7b'),_0x2982('0x56'),'correlation_display','delivery_task',_0x2982('0x7c'),_0x2982('0x7d'),_0x2982('0x7e'),'additional_assignee_list',_0x2982('0x7f'),_0x2982('0x80'),_0x2982('0x81'),_0x2982('0x82'),_0x2982('0x83'),_0x2982('0x84'),_0x2982('0x85'),'parent_incident','sys_id','contact_type',_0x2982('0x86'),_0x2982('0x87'),_0x2982('0x88'),_0x2982('0x89'),'company',_0x2982('0x8a'),_0x2982('0x8b'),_0x2982('0x8c'),'severity',_0x2982('0x8d'),_0x2982('0x8e'),_0x2982('0x8f'),_0x2982('0x90'),_0x2982('0x91'),_0x2982('0x92'),_0x2982('0x93'),_0x2982('0x94'),_0x2982('0x95'),_0x2982('0x96'),'correlation_id',_0x2982('0x97'),_0x2982('0x58')];var _0x2e74fe='';var _0x2b2eda='';var _0xe6dea0=[];var _0x372526='';var _0x1cff4a='';var _0x5d87dd=[];var _0x30ed95='';var _0x1a6591='';var _0x13afc5={};var _0xaaa888='';return db[_0x2982('0x3c')][_0x2982('0x4b')]({'where':{'id':_0x24869d[_0x2982('0x41')]['id']},'attributes':['id','username',_0x2982('0x98'),'email',_0x2982('0x99'),'serverUrl']})[_0x2982('0x25')](handleEntityNotFound(_0x42e281,null))[_0x2982('0x25')](function(_0x30fb9b){if(_0x30fb9b){_0xaaa888=_0x30fb9b[_0x2982('0x99')];var _0x54dd54=_0xaaa888['slice'](-0x1);if(_0x54dd54==='/'){_0xaaa888=_0xaaa888['substring'](0x0,_0xaaa888[_0x2982('0x9a')](_0x54dd54));}_0x1a6591=util[_0x2982('0x9b')](_0x2982('0x9c'),_0xaaa888);_0x30ed95=util['format'](_0x2982('0x9d'),_0xaaa888);_0x13afc5={'user':_0x30fb9b[_0x2982('0x9e')],'pass':_0x30fb9b[_0x2982('0x98')]};var _0x15dbcf={'method':_0x2982('0x9f'),'uri':_0x1a6591+_0x2982('0xa0'),'auth':_0x13afc5,'json':!![]};return rp(_0x15dbcf);}})[_0x2982('0x25')](function(_0x59e422){if(_0x59e422[_0x2982('0xa1')][_0x2982('0x42')]>0x0){_0x2e74fe=_0x59e422['result'];}console['log'](_0x2982('0xa2'),_0x2e74fe);_0x5d87dd=[];_0x2b2eda=Object[_0x2982('0xa3')]([],_0x2e74fe);_[_0x2982('0xa4')](_0x2b2eda,function(_0x45bec2){return!_0x447f1f['includes'](_0x45bec2[_0x2982('0x27')]);});_0x2b2eda[_0x2982('0xa5')](function(_0x2d44f8){var _0x1892f5=createFieldObject(_0x30ed95,_0x13afc5,_0x2d44f8[_0x2982('0xa6')],_0x2d44f8['name'],_0x2d44f8[_0x2982('0xa7')],![]);_0x5d87dd[_0x2982('0xa8')](_0x1892f5);});return Promise[_0x2982('0xa9')](_0x5d87dd);})[_0x2982('0x25')](function(_0x1c6379){_0xe6dea0=_0x1c6379;_0x372526=Object[_0x2982('0xa3')]([],_0x2e74fe);console[_0x2982('0xaa')](_0x2982('0xab'),_0x2e74fe);_[_0x2982('0xa4')](_0x372526,function(_0x26d0cd){return _0x22af4b[_0x2982('0xac')](_0x26d0cd['name']);});console[_0x2982('0xaa')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x372526);_0x5d87dd=[];_0x372526[_0x2982('0xa5')](function(_0x29eca6){var _0x35c174=createFieldObject(_0x30ed95,_0x13afc5,_0x29eca6[_0x2982('0xa6')],_0x29eca6['name'],_0x29eca6['label'],!![]);_0x5d87dd[_0x2982('0xa8')](_0x35c174);});return Promise[_0x2982('0xa9')](_0x5d87dd);})['then'](function(_0x14d2cd){_0x1cff4a=_0x14d2cd;var _0x8b334d=_0xe6dea0[_0x2982('0xad')](_0x1cff4a);return{'count':_0x8b334d[_0x2982('0x42')],'rows':_0x8b334d};})[_0x2982('0x25')](respondWithResult(_0x42e281,null))['catch'](function(_0x3ec2bd){console[_0x2982('0xaa')](_0x2982('0xae')+_0x3ec2bd);var _0x47727c=_0x24869d['query'][_0x2982('0xaf')]?0x1f4:_0x3ec2bd[_0x2982('0xb0')]||0x1f4;logger[_0x2982('0xb1')](_0x3ec2bd[_0x2982('0xb2')]);delete _0x3ec2bd[_0x2982('0x27')];if(_0x47727c===0x191){_0x47727c=0x190;}_0x42e281[_0x2982('0x1a')](_0x47727c)[_0x2982('0xb3')](_0x24869d[_0x2982('0x2e')][_0x2982('0xaf')]?{'message':_0x2982('0xb4'),'statusCode':_0x3ec2bd[_0x2982('0xb0')]}:_0x3ec2bd);});};function createFieldObject(_0x2b8171,_0x17a526,_0x1baa97,_0xba43de,_0x3849a8,_0x114b3f){return new Promise(function(_0x25ebcb,_0x347925){var _0x5abcbb={'id':_0xba43de,'name':_0x3849a8,'custom':_0x114b3f};if(_0x1baa97===_0x2982('0xb5')){_0x5abcbb[_0x2982('0x3b')]=[{'name':_0x2982('0xb6'),'value':_0x2982('0xb7')},{'name':'False','value':'false'}];_0x25ebcb(_0x5abcbb);}else{var _0x27bb87={'method':_0x2982('0x9f'),'uri':_0x2b8171+_0x2982('0xb8')+_0xba43de,'auth':_0x17a526,'json':!![]};return rp(_0x27bb87)[_0x2982('0x25')](function(_0x432eb0){var _0x1495f8=[];if(_0x432eb0[_0x2982('0xa1')][_0x2982('0x42')]>0x0){_0x432eb0['result'][_0x2982('0xa5')](function(_0x13bbb0){if(_0x13bbb0['inactive']===_0x2982('0xb9')){var _0xda3f9={'name':_0x13bbb0[_0x2982('0xa7')],'value':_0x13bbb0['value']};_0x1495f8[_0x2982('0xa8')](_0xda3f9);}});}_0x5abcbb[_0x2982('0x3b')]=_0x1495f8;if(_0x5abcbb['options'][_0x2982('0x42')]>0x0){_0x25ebcb(_0x5abcbb);}else{if(_0x114b3f==![]){_0x25ebcb();}else{_0x25ebcb(_0x5abcbb);}}});}});}
\ No newline at end of file
index 0ae06d4..8650430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdbd=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intServicenowAccount.attributes','exports','int_servicenow_accounts'];(function(_0x889295,_0x162418){var _0x407bbb=function(_0x264623){while(--_0x264623){_0x889295['push'](_0x889295['shift']());}};_0x407bbb(++_0x162418);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x48b5e0,_0xb3826){_0x48b5e0=_0x48b5e0-0x0;var _0x4287ea=_0xfdbd[_0x48b5e0];return _0x4287ea;};'use strict';var _=require(_0xdfdb('0x0'));var util=require(_0xdfdb('0x1'));var logger=require(_0xdfdb('0x2'))(_0xdfdb('0x3'));var moment=require(_0xdfdb('0x4'));var BPromise=require(_0xdfdb('0x5'));var rp=require(_0xdfdb('0x6'));var fs=require('fs');var path=require(_0xdfdb('0x7'));var rimraf=require(_0xdfdb('0x8'));var config=require('../../config/environment');var attributes=require(_0xdfdb('0x9'));var integrations=require('../../components/integrations/configuration');module[_0xdfdb('0xa')]=function(_0x41bd5e,_0x489f19){return _0x41bd5e['define']('ServicenowAccount',attributes,{'tableName':_0xdfdb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','int_servicenow_accounts','lodash'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0xf494,0x1c6));var _0x4f49=function(_0x5bcbca,_0x58d8b0){_0x5bcbca=_0x5bcbca-0x0;var _0x1f119b=_0xf494[_0x5bcbca];return _0x1f119b;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));var integrations=require(_0x4f49('0xa'));module[_0x4f49('0xb')]=function(_0x413530,_0x42b0e8){return _0x413530['define']('ServicenowAccount',attributes,{'tableName':_0x4f49('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3eeb546..ec8387f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf6=['jayson/promise','client','http','then','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowServicenowAccount','find','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x507360,_0x5e4738){var _0x2d8283=function(_0x38e1b8){while(--_0x38e1b8){_0x507360['push'](_0x507360['shift']());}};_0x2d8283(++_0x5e4738);}(_0xbaf6,0x13b));var _0x6baf=function(_0x36a469,_0x59d84c){_0x36a469=_0x36a469-0x0;var _0x3347fc=_0xbaf6[_0x36a469];return _0x3347fc;};'use strict';var _=require('lodash');var util=require(_0x6baf('0x0'));var moment=require('moment');var BPromise=require(_0x6baf('0x1'));var rs=require(_0x6baf('0x2'));var fs=require('fs');var Redis=require(_0x6baf('0x3'));var db=require(_0x6baf('0x4'))['db'];var utils=require(_0x6baf('0x5'));var logger=require(_0x6baf('0x6'))(_0x6baf('0x7'));var config=require(_0x6baf('0x8'));var jayson=require(_0x6baf('0x9'));var client=jayson[_0x6baf('0xa')][_0x6baf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d91e6,_0x57b0c4,_0x25993f){return new BPromise(function(_0x131fcb,_0x4e56b8){return client['request'](_0x4d91e6,_0x25993f)[_0x6baf('0xc')](function(_0x55d3e4){logger['info'](_0x6baf('0xd'),_0x57b0c4,_0x6baf('0xe'));logger[_0x6baf('0xf')](_0x6baf('0x10'),_0x57b0c4,'request\x20sent',JSON['stringify'](_0x55d3e4));if(_0x55d3e4[_0x6baf('0x11')]){if(_0x55d3e4[_0x6baf('0x11')]['code']===0x1f4){logger[_0x6baf('0x11')](_0x6baf('0xd'),_0x57b0c4,_0x55d3e4[_0x6baf('0x11')]['message']);return _0x4e56b8(_0x55d3e4['error'][_0x6baf('0x12')]);}logger[_0x6baf('0x11')](_0x6baf('0xd'),_0x57b0c4,_0x55d3e4[_0x6baf('0x11')][_0x6baf('0x12')]);return _0x131fcb(_0x55d3e4[_0x6baf('0x11')][_0x6baf('0x12')]);}else{logger[_0x6baf('0x13')](_0x6baf('0xd'),_0x57b0c4,_0x6baf('0xe'));_0x131fcb(_0x55d3e4[_0x6baf('0x14')]['message']);}})[_0x6baf('0x15')](function(_0x2546a0){logger['error'](_0x6baf('0xd'),_0x57b0c4,_0x2546a0);_0x4e56b8(_0x2546a0);});});}exports[_0x6baf('0x16')]=function(_0x35c255){var _0x46183d=this;return new Promise(function(_0x89cf75,_0x355bf4){return db[_0x6baf('0x17')][_0x6baf('0x18')]({'raw':_0x35c255[_0x6baf('0x19')]?_0x35c255[_0x6baf('0x19')][_0x6baf('0x1a')]===undefined?!![]:![]:!![],'where':_0x35c255[_0x6baf('0x19')]?_0x35c255['options'][_0x6baf('0x1b')]||null:null,'attributes':_0x35c255[_0x6baf('0x19')]?_0x35c255['options'][_0x6baf('0x1c')]||null:null,'limit':_0x35c255[_0x6baf('0x19')]?_0x35c255[_0x6baf('0x19')][_0x6baf('0x1d')]||null:null,'include':_0x35c255[_0x6baf('0x19')]?_0x35c255[_0x6baf('0x19')][_0x6baf('0x1e')]?_[_0x6baf('0x1f')](_0x35c255['options'][_0x6baf('0x1e')],function(_0x4410a5){return{'model':db[_0x4410a5[_0x6baf('0x20')]],'as':_0x4410a5['as'],'attributes':_0x4410a5[_0x6baf('0x1c')],'include':_0x4410a5[_0x6baf('0x1e')]?_[_0x6baf('0x1f')](_0x4410a5['include'],function(_0x253936){return{'model':db[_0x253936[_0x6baf('0x20')]],'as':_0x253936['as'],'attributes':_0x253936[_0x6baf('0x1c')],'include':_0x253936[_0x6baf('0x1e')]?_[_0x6baf('0x1f')](_0x253936[_0x6baf('0x1e')],function(_0x48b3fe){return{'model':db[_0x48b3fe[_0x6baf('0x20')]],'as':_0x48b3fe['as'],'attributes':_0x48b3fe[_0x6baf('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2bcf08){logger[_0x6baf('0x13')](_0x6baf('0x16'),_0x35c255);logger[_0x6baf('0xf')](_0x6baf('0x16'),_0x35c255,JSON[_0x6baf('0x21')](_0x2bcf08));_0x89cf75(_0x2bcf08);})[_0x6baf('0x15')](function(_0x12ba4f){logger[_0x6baf('0x11')]('GetServicenowAccount',_0x12ba4f['message'],_0x35c255);_0x355bf4(_0x46183d[_0x6baf('0x11')](0x1f4,_0x12ba4f[_0x6baf('0x12')]));});});};exports[_0x6baf('0x22')]=function(_0x5a06cd){var _0x7ad9f2=this;return new Promise(function(_0x55f8d7,_0x3f433c){return db['ServicenowAccount'][_0x6baf('0x23')]({'raw':_0x5a06cd[_0x6baf('0x19')]?_0x5a06cd[_0x6baf('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5a06cd[_0x6baf('0x19')]?_0x5a06cd[_0x6baf('0x19')][_0x6baf('0x1b')]||null:null,'attributes':_0x5a06cd[_0x6baf('0x19')]?_0x5a06cd[_0x6baf('0x19')]['attributes']||null:null,'include':_0x5a06cd[_0x6baf('0x19')]?_0x5a06cd[_0x6baf('0x19')][_0x6baf('0x1e')]?_[_0x6baf('0x1f')](_0x5a06cd[_0x6baf('0x19')]['include'],function(_0x5ef166){return{'model':db[_0x5ef166[_0x6baf('0x20')]],'as':_0x5ef166['as'],'attributes':_0x5ef166[_0x6baf('0x1c')],'include':_0x5ef166[_0x6baf('0x1e')]?_[_0x6baf('0x1f')](_0x5ef166[_0x6baf('0x1e')],function(_0x4e6639){return{'model':db[_0x4e6639[_0x6baf('0x20')]],'as':_0x4e6639['as'],'attributes':_0x4e6639['attributes'],'include':_0x4e6639[_0x6baf('0x1e')]?_[_0x6baf('0x1f')](_0x4e6639[_0x6baf('0x1e')],function(_0x259edc){return{'model':db[_0x259edc[_0x6baf('0x20')]],'as':_0x259edc['as'],'attributes':_0x259edc[_0x6baf('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b4e1e){logger[_0x6baf('0x13')](_0x6baf('0x22'),_0x5a06cd);logger[_0x6baf('0xf')](_0x6baf('0x22'),_0x5a06cd,JSON[_0x6baf('0x21')](_0x5b4e1e));_0x55f8d7(_0x5b4e1e);})['catch'](function(_0x1243b4){logger[_0x6baf('0x11')]('ShowServicenowAccount',_0x1243b4[_0x6baf('0x12')],_0x5a06cd);_0x3f433c(_0x7ad9f2['error'](0x1f4,_0x1243b4[_0x6baf('0x12')]));});});};
\ No newline at end of file
+var _0xe3c3=['../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','raw','options','where','attributes','include','map','model','ShowServicenowAccount','find','then','lodash','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe3c3,0xa3));var _0x3e3c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe3c3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3e3c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3e3c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e3c('0x2'))['db'];var utils=require(_0x3e3c('0x3'));var logger=require('../../config/logger')(_0x3e3c('0x4'));var config=require(_0x3e3c('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x3e3c('0x6')][_0x3e3c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2427a0,_0x15a8d1,_0x53a093){return new BPromise(function(_0x3d1ae2,_0xcfde99){return client[_0x3e3c('0x8')](_0x2427a0,_0x53a093)['then'](function(_0x176f49){logger[_0x3e3c('0x9')](_0x3e3c('0xa'),_0x15a8d1,_0x3e3c('0xb'));logger[_0x3e3c('0xc')](_0x3e3c('0xd'),_0x15a8d1,_0x3e3c('0xb'),JSON[_0x3e3c('0xe')](_0x176f49));if(_0x176f49[_0x3e3c('0xf')]){if(_0x176f49['error'][_0x3e3c('0x10')]===0x1f4){logger['error'](_0x3e3c('0xa'),_0x15a8d1,_0x176f49[_0x3e3c('0xf')]['message']);return _0xcfde99(_0x176f49[_0x3e3c('0xf')]['message']);}logger[_0x3e3c('0xf')](_0x3e3c('0xa'),_0x15a8d1,_0x176f49['error'][_0x3e3c('0x11')]);return _0x3d1ae2(_0x176f49[_0x3e3c('0xf')][_0x3e3c('0x11')]);}else{logger[_0x3e3c('0x9')](_0x3e3c('0xa'),_0x15a8d1,'request\x20sent');_0x3d1ae2(_0x176f49[_0x3e3c('0x12')][_0x3e3c('0x11')]);}})[_0x3e3c('0x13')](function(_0x59a41a){logger[_0x3e3c('0xf')](_0x3e3c('0xa'),_0x15a8d1,_0x59a41a);_0xcfde99(_0x59a41a);});});}exports[_0x3e3c('0x14')]=function(_0x257f2b){var _0x39d230=this;return new Promise(function(_0x64a81a,_0x572d12){return db[_0x3e3c('0x15')][_0x3e3c('0x16')]({'raw':_0x257f2b['options']?_0x257f2b['options'][_0x3e3c('0x17')]===undefined?!![]:![]:!![],'where':_0x257f2b[_0x3e3c('0x18')]?_0x257f2b['options'][_0x3e3c('0x19')]||null:null,'attributes':_0x257f2b[_0x3e3c('0x18')]?_0x257f2b['options'][_0x3e3c('0x1a')]||null:null,'limit':_0x257f2b['options']?_0x257f2b[_0x3e3c('0x18')]['limit']||null:null,'include':_0x257f2b['options']?_0x257f2b[_0x3e3c('0x18')][_0x3e3c('0x1b')]?_[_0x3e3c('0x1c')](_0x257f2b[_0x3e3c('0x18')]['include'],function(_0x3fb012){return{'model':db[_0x3fb012[_0x3e3c('0x1d')]],'as':_0x3fb012['as'],'attributes':_0x3fb012[_0x3e3c('0x1a')],'include':_0x3fb012[_0x3e3c('0x1b')]?_['map'](_0x3fb012[_0x3e3c('0x1b')],function(_0x580126){return{'model':db[_0x580126[_0x3e3c('0x1d')]],'as':_0x580126['as'],'attributes':_0x580126[_0x3e3c('0x1a')],'include':_0x580126['include']?_['map'](_0x580126['include'],function(_0x20e958){return{'model':db[_0x20e958[_0x3e3c('0x1d')]],'as':_0x20e958['as'],'attributes':_0x20e958['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x133fb4){logger['info'](_0x3e3c('0x14'),_0x257f2b);logger[_0x3e3c('0xc')]('GetServicenowAccount',_0x257f2b,JSON[_0x3e3c('0xe')](_0x133fb4));_0x64a81a(_0x133fb4);})[_0x3e3c('0x13')](function(_0x254f12){logger[_0x3e3c('0xf')]('GetServicenowAccount',_0x254f12[_0x3e3c('0x11')],_0x257f2b);_0x572d12(_0x39d230[_0x3e3c('0xf')](0x1f4,_0x254f12['message']));});});};exports[_0x3e3c('0x1e')]=function(_0x1c7a95){var _0xca7262=this;return new Promise(function(_0x17ff13,_0x40b6fa){return db[_0x3e3c('0x15')][_0x3e3c('0x1f')]({'raw':_0x1c7a95[_0x3e3c('0x18')]?_0x1c7a95[_0x3e3c('0x18')][_0x3e3c('0x17')]===undefined?!![]:![]:!![],'where':_0x1c7a95[_0x3e3c('0x18')]?_0x1c7a95[_0x3e3c('0x18')][_0x3e3c('0x19')]||null:null,'attributes':_0x1c7a95[_0x3e3c('0x18')]?_0x1c7a95[_0x3e3c('0x18')][_0x3e3c('0x1a')]||null:null,'include':_0x1c7a95[_0x3e3c('0x18')]?_0x1c7a95[_0x3e3c('0x18')][_0x3e3c('0x1b')]?_[_0x3e3c('0x1c')](_0x1c7a95[_0x3e3c('0x18')][_0x3e3c('0x1b')],function(_0x1f8527){return{'model':db[_0x1f8527[_0x3e3c('0x1d')]],'as':_0x1f8527['as'],'attributes':_0x1f8527[_0x3e3c('0x1a')],'include':_0x1f8527['include']?_['map'](_0x1f8527['include'],function(_0x51b7af){return{'model':db[_0x51b7af[_0x3e3c('0x1d')]],'as':_0x51b7af['as'],'attributes':_0x51b7af[_0x3e3c('0x1a')],'include':_0x51b7af[_0x3e3c('0x1b')]?_['map'](_0x51b7af[_0x3e3c('0x1b')],function(_0x2b1c73){return{'model':db[_0x2b1c73[_0x3e3c('0x1d')]],'as':_0x2b1c73['as'],'attributes':_0x2b1c73['attributes']};}):[]};}):[]};}):[]:[]})[_0x3e3c('0x20')](function(_0x68d206){logger[_0x3e3c('0x9')]('ShowServicenowAccount',_0x1c7a95);logger[_0x3e3c('0xc')]('ShowServicenowAccount',_0x1c7a95,JSON[_0x3e3c('0xe')](_0x68d206));_0x17ff13(_0x68d206);})[_0x3e3c('0x13')](function(_0x10541f){logger[_0x3e3c('0xf')]('ShowServicenowAccount',_0x10541f['message'],_0x1c7a95);_0x40b6fa(_0xca7262[_0x3e3c('0xf')](0x1f4,_0x10541f['message']));});});};
\ No newline at end of file
index 92bb0aa..21a521d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43e5=['/:id','show','isAuthenticated','getFields','/:id/subjects','/:id/descriptions','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index'];(function(_0x53c4f8,_0x44ccaf){var _0x416458=function(_0x2632aa){while(--_0x2632aa){_0x53c4f8['push'](_0x53c4f8['shift']());}};_0x416458(++_0x44ccaf);}(_0x43e5,0xfc));var _0x543e=function(_0xf8b5c7,_0x19b9b8){_0xf8b5c7=_0xf8b5c7-0x0;var _0x25d8d5=_0x43e5[_0xf8b5c7];return _0x25d8d5;};'use strict';var multer=require(_0x543e('0x0'));var util=require(_0x543e('0x1'));var path=require(_0x543e('0x2'));var timeout=require(_0x543e('0x3'));var express=require(_0x543e('0x4'));var router=express[_0x543e('0x5')]();var fs_extra=require(_0x543e('0x6'));var auth=require(_0x543e('0x7'));var interaction=require(_0x543e('0x8'));var config=require(_0x543e('0x9'));var controller=require('./intServicenowConfiguration.controller');router[_0x543e('0xa')]('/',auth['isAuthenticated'](),controller[_0x543e('0xb')]);router[_0x543e('0xa')](_0x543e('0xc'),auth['isAuthenticated'](),controller[_0x543e('0xd')]);router[_0x543e('0xa')]('/:id/fields',auth[_0x543e('0xe')](),controller[_0x543e('0xf')]);router[_0x543e('0xa')](_0x543e('0x10'),auth[_0x543e('0xe')](),controller['getSubjects']);router['get'](_0x543e('0x11'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x543e('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x543e('0x13')](_0x543e('0xc'),auth[_0x543e('0xe')](),controller[_0x543e('0x14')]);router[_0x543e('0x15')](_0x543e('0xc'),auth[_0x543e('0xe')](),controller[_0x543e('0x16')]);module[_0x543e('0x17')]=router;
\ No newline at end of file
+var _0xfa8e=['Router','fs-extra','../../components/auth/service','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','post','put','update','delete','exports','multer','util','connect-timeout','express'];(function(_0x16197c,_0x54f90a){var _0x3136f1=function(_0x25288){while(--_0x25288){_0x16197c['push'](_0x16197c['shift']());}};_0x3136f1(++_0x54f90a);}(_0xfa8e,0x7a));var _0xefa8=function(_0x33114c,_0x18cb5b){_0x33114c=_0x33114c-0x0;var _0x5b886b=_0xfa8e[_0x33114c];return _0x5b886b;};'use strict';var multer=require(_0xefa8('0x0'));var util=require(_0xefa8('0x1'));var path=require('path');var timeout=require(_0xefa8('0x2'));var express=require(_0xefa8('0x3'));var router=express[_0xefa8('0x4')]();var fs_extra=require(_0xefa8('0x5'));var auth=require(_0xefa8('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xefa8('0x7'));router[_0xefa8('0x8')]('/',auth[_0xefa8('0x9')](),controller[_0xefa8('0xa')]);router[_0xefa8('0x8')](_0xefa8('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xefa8('0xc'),auth['isAuthenticated'](),controller[_0xefa8('0xd')]);router[_0xefa8('0x8')](_0xefa8('0xe'),auth['isAuthenticated'](),controller[_0xefa8('0xf')]);router[_0xefa8('0x8')]('/:id/descriptions',auth['isAuthenticated'](),controller['getDescriptions']);router[_0xefa8('0x10')]('/',auth[_0xefa8('0x9')](),controller['create']);router[_0xefa8('0x11')](_0xefa8('0xb'),auth[_0xefa8('0x9')](),controller[_0xefa8('0x12')]);router[_0xefa8('0x13')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xefa8('0x14')]=router;
\ No newline at end of file
index 35917f2..15d13b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8008=['sequelize','exports','STRING'];(function(_0x376550,_0x3199c9){var _0x203bbb=function(_0xe8be9f){while(--_0xe8be9f){_0x376550['push'](_0x376550['shift']());}};_0x203bbb(++_0x3199c9);}(_0x8008,0x8d));var _0x8800=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8008[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x8800('0x0'));module[_0x8800('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8800('0x2')]}};
\ No newline at end of file
+var _0xbaf6=['sequelize','exports','STRING'];(function(_0x5b3066,_0x2995f5){var _0x224ffc=function(_0x1973d7){while(--_0x1973d7){_0x5b3066['push'](_0x5b3066['shift']());}};_0x224ffc(++_0x2995f5);}(_0xbaf6,0x111));var _0x6baf=function(_0x3abe6a,_0xdd7b1a){_0x3abe6a=_0x3abe6a-0x0;var _0x2fc39e=_0xbaf6[_0x3abe6a];return _0x2fc39e;};'use strict';var Sequelize=require(_0x6baf('0x0'));module[_0x6baf('0x1')]={'name':{'type':Sequelize[_0x6baf('0x2')]},'description':{'type':Sequelize[_0x6baf('0x2')]}};
\ No newline at end of file
index b66c2e3..81593cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe88=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','ServicenowConfiguration','includeAll','rows','catch','show','find','create','body','update','params','getFields','findOne','nolimit','getSubjects','getDescriptions','ServicenowField','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','papaparse','ioredis'];(function(_0x1b1621,_0x400c65){var _0xab8b9=function(_0x4eb012){while(--_0x4eb012){_0x1b1621['push'](_0x1b1621['shift']());}};_0xab8b9(++_0x400c65);}(_0xfe88,0x189));var _0x8fe8=function(_0x59cf8a,_0x163bb9){_0x59cf8a=_0x59cf8a-0x0;var _0x22dde8=_0xfe88[_0x59cf8a];return _0x22dde8;};'use strict';var emlformat=require(_0x8fe8('0x0'));var rimraf=require(_0x8fe8('0x1'));var zipdir=require(_0x8fe8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8fe8('0x3'));var moment=require(_0x8fe8('0x4'));var BPromise=require(_0x8fe8('0x5'));var Mustache=require(_0x8fe8('0x6'));var util=require('util');var path=require(_0x8fe8('0x7'));var sox=require(_0x8fe8('0x8'));var csv=require('to-csv');var ejs=require(_0x8fe8('0x9'));var fs=require('fs');var fs_extra=require(_0x8fe8('0xa'));var _=require('lodash');var squel=require(_0x8fe8('0xb'));var crypto=require('crypto');var jsforce=require(_0x8fe8('0xc'));var deskjs=require(_0x8fe8('0xd'));var toCsv=require(_0x8fe8('0xe'));var querystring=require('querystring');var Papa=require(_0x8fe8('0xf'));var Redis=require(_0x8fe8('0x10'));var authService=require(_0x8fe8('0x11'));var qs=require(_0x8fe8('0x12'));var as=require(_0x8fe8('0x13'));var hardwareService=require(_0x8fe8('0x14'));var logger=require(_0x8fe8('0x15'))(_0x8fe8('0x16'));var utils=require(_0x8fe8('0x17'));var config=require(_0x8fe8('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8fe8('0x19'))['db'];function respondWithStatusCode(_0x3e8414,_0x504584){_0x504584=_0x504584||0xcc;return function(_0x45cc1c){if(_0x45cc1c){return _0x3e8414[_0x8fe8('0x1a')](_0x504584);}return _0x3e8414['status'](_0x504584)['end']();};}function respondWithResult(_0x53a388,_0x1ff93d){_0x1ff93d=_0x1ff93d||0xc8;return function(_0x2c6a02){if(_0x2c6a02){return _0x53a388['status'](_0x1ff93d)[_0x8fe8('0x1b')](_0x2c6a02);}};}function respondWithFilteredResult(_0x17da57,_0xac952a){return function(_0x7e90cf){if(_0x7e90cf){var _0x331823=typeof _0xac952a[_0x8fe8('0x1c')]===_0x8fe8('0x1d')&&typeof _0xac952a[_0x8fe8('0x1e')]===_0x8fe8('0x1d');var _0x5e5441=_0x7e90cf[_0x8fe8('0x1f')];var _0x40e337=_0x331823?0x0:_0xac952a['offset'];var _0x3726d3=_0x331823?_0x7e90cf[_0x8fe8('0x1f')]:_0xac952a[_0x8fe8('0x1c')]+_0xac952a[_0x8fe8('0x1e')];var _0x397017;if(_0x3726d3>=_0x5e5441){_0x3726d3=_0x5e5441;_0x397017=0xc8;}else{_0x397017=0xce;}_0x17da57[_0x8fe8('0x20')](_0x397017);return _0x17da57['set'](_0x8fe8('0x21'),_0x40e337+'-'+_0x3726d3+'/'+_0x5e5441)[_0x8fe8('0x1b')](_0x7e90cf);}return null;};}function patchUpdates(_0x51e5f6){return function(_0x2a2d6f){try{jsonpatch[_0x8fe8('0x22')](_0x2a2d6f,_0x51e5f6,!![]);}catch(_0x163c86){return BPromise[_0x8fe8('0x23')](_0x163c86);}return _0x2a2d6f[_0x8fe8('0x24')]();};}function saveUpdates(_0x373968,_0x3b3bbe){return function(_0x2c4f65){if(_0x2c4f65){return _0x2c4f65['update'](_0x373968)[_0x8fe8('0x25')](function(_0x585ea5){return _0x585ea5;});}return null;};}function removeEntity(_0xaa8826,_0x5f41fb){return function(_0x1e8f78){if(_0x1e8f78){return _0x1e8f78[_0x8fe8('0x26')]()[_0x8fe8('0x25')](function(){_0xaa8826['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x26f525,_0x388f3){return function(_0x436b60){if(!_0x436b60){_0x26f525['sendStatus'](0x194);}return _0x436b60;};}function handleError(_0x31dd40,_0x3fc375){_0x3fc375=_0x3fc375||0x1f4;return function(_0x249b6b){logger[_0x8fe8('0x27')](_0x249b6b[_0x8fe8('0x28')]);if(_0x249b6b[_0x8fe8('0x29')]){delete _0x249b6b[_0x8fe8('0x29')];}_0x31dd40[_0x8fe8('0x20')](_0x3fc375)[_0x8fe8('0x2a')](_0x249b6b);};}exports[_0x8fe8('0x2b')]=function(_0x5504ce,_0x5d329f){var _0x173bd9={},_0x33c2c3={},_0xee94a1={'count':0x0,'rows':[]};var _0x1d5562=_[_0x8fe8('0x2c')](db['ServicenowConfiguration'][_0x8fe8('0x2d')],function(_0x2abe6a){return{'name':_0x2abe6a[_0x8fe8('0x2e')],'type':_0x2abe6a[_0x8fe8('0x2f')][_0x8fe8('0x30')]};});_0x33c2c3['model']=_[_0x8fe8('0x2c')](_0x1d5562,_0x8fe8('0x29'));_0x33c2c3[_0x8fe8('0x31')]=_[_0x8fe8('0x32')](_0x5504ce[_0x8fe8('0x31')]);_0x33c2c3[_0x8fe8('0x33')]=_[_0x8fe8('0x34')](_0x33c2c3[_0x8fe8('0x35')],_0x33c2c3[_0x8fe8('0x31')]);_0x173bd9[_0x8fe8('0x36')]=_[_0x8fe8('0x34')](_0x33c2c3[_0x8fe8('0x35')],qs[_0x8fe8('0x37')](_0x5504ce[_0x8fe8('0x31')][_0x8fe8('0x37')]));_0x173bd9['attributes']=_0x173bd9[_0x8fe8('0x36')][_0x8fe8('0x38')]?_0x173bd9['attributes']:_0x33c2c3[_0x8fe8('0x35')];if(!_0x5504ce[_0x8fe8('0x31')][_0x8fe8('0x39')]('nolimit')){_0x173bd9[_0x8fe8('0x1e')]=qs[_0x8fe8('0x1e')](_0x5504ce[_0x8fe8('0x31')][_0x8fe8('0x1e')]);_0x173bd9['offset']=qs[_0x8fe8('0x1c')](_0x5504ce['query']['offset']);}_0x173bd9[_0x8fe8('0x3a')]=qs[_0x8fe8('0x3b')](_0x5504ce[_0x8fe8('0x31')]['sort']);_0x173bd9[_0x8fe8('0x3c')]=qs[_0x8fe8('0x33')](_[_0x8fe8('0x3d')](_0x5504ce['query'],_0x33c2c3['filters']),_0x1d5562);if(_0x5504ce[_0x8fe8('0x31')][_0x8fe8('0x3e')]){_0x173bd9['where']=_['merge'](_0x173bd9[_0x8fe8('0x3c')],{'$or':_[_0x8fe8('0x2c')](_0x1d5562,function(_0x458941){if(_0x458941[_0x8fe8('0x2f')]!==_0x8fe8('0x3f')){var _0x4bf0f2={};_0x4bf0f2[_0x458941['name']]={'$like':'%'+_0x5504ce['query'][_0x8fe8('0x3e')]+'%'};return _0x4bf0f2;}})});}_0x173bd9=_[_0x8fe8('0x40')]({},_0x173bd9,_0x5504ce[_0x8fe8('0x41')]);var _0x5f3dc1={'where':_0x173bd9[_0x8fe8('0x3c')]};return db[_0x8fe8('0x42')]['count'](_0x5f3dc1)[_0x8fe8('0x25')](function(_0x38e624){_0xee94a1[_0x8fe8('0x1f')]=_0x38e624;if(_0x5504ce[_0x8fe8('0x31')][_0x8fe8('0x43')]){_0x173bd9['include']=[{'all':!![]}];}return db[_0x8fe8('0x42')]['findAll'](_0x173bd9);})[_0x8fe8('0x25')](function(_0x4a3d7e){_0xee94a1[_0x8fe8('0x44')]=_0x4a3d7e;return _0xee94a1;})[_0x8fe8('0x25')](respondWithFilteredResult(_0x5d329f,_0x173bd9))[_0x8fe8('0x45')](handleError(_0x5d329f,null));};exports[_0x8fe8('0x46')]=function(_0x35f61d,_0x2d617e){var _0x1ab317={'raw':![],'where':{'id':_0x35f61d['params']['id']}},_0xa2ba6c={};_0xa2ba6c[_0x8fe8('0x35')]=_['keys'](db[_0x8fe8('0x42')][_0x8fe8('0x2d')]);_0xa2ba6c[_0x8fe8('0x31')]=_[_0x8fe8('0x32')](_0x35f61d['query']);_0xa2ba6c[_0x8fe8('0x33')]=_[_0x8fe8('0x34')](_0xa2ba6c['model'],_0xa2ba6c[_0x8fe8('0x31')]);_0x1ab317['attributes']=_[_0x8fe8('0x34')](_0xa2ba6c[_0x8fe8('0x35')],qs[_0x8fe8('0x37')](_0x35f61d[_0x8fe8('0x31')][_0x8fe8('0x37')]));_0x1ab317[_0x8fe8('0x36')]=_0x1ab317[_0x8fe8('0x36')]['length']?_0x1ab317[_0x8fe8('0x36')]:_0xa2ba6c[_0x8fe8('0x35')];if(_0x35f61d[_0x8fe8('0x31')][_0x8fe8('0x43')]){_0x1ab317['include']=[{'all':!![]}];}_0x1ab317=_[_0x8fe8('0x40')]({},_0x1ab317,_0x35f61d[_0x8fe8('0x41')]);return db[_0x8fe8('0x42')][_0x8fe8('0x47')](_0x1ab317)[_0x8fe8('0x25')](handleEntityNotFound(_0x2d617e,null))[_0x8fe8('0x25')](respondWithResult(_0x2d617e,null))['catch'](handleError(_0x2d617e,null));};exports[_0x8fe8('0x48')]=function(_0x45b8a9,_0x432ea7){return db['ServicenowConfiguration'][_0x8fe8('0x48')](_0x45b8a9[_0x8fe8('0x49')],{})[_0x8fe8('0x25')](respondWithResult(_0x432ea7,0xc9))[_0x8fe8('0x45')](handleError(_0x432ea7,null));};exports[_0x8fe8('0x4a')]=function(_0x298d87,_0x1c4747){if(_0x298d87[_0x8fe8('0x49')]['id']){delete _0x298d87['body']['id'];}return db[_0x8fe8('0x42')][_0x8fe8('0x47')]({'where':{'id':_0x298d87[_0x8fe8('0x4b')]['id']}})[_0x8fe8('0x25')](handleEntityNotFound(_0x1c4747,null))[_0x8fe8('0x25')](saveUpdates(_0x298d87['body'],null))[_0x8fe8('0x25')](respondWithResult(_0x1c4747,null))[_0x8fe8('0x45')](handleError(_0x1c4747,null));};exports[_0x8fe8('0x26')]=function(_0x25b1fe,_0x4ffcdc){return db[_0x8fe8('0x42')][_0x8fe8('0x47')]({'where':{'id':_0x25b1fe['params']['id']}})['then'](handleEntityNotFound(_0x4ffcdc,null))[_0x8fe8('0x25')](removeEntity(_0x4ffcdc,null))[_0x8fe8('0x45')](handleError(_0x4ffcdc,null));};exports[_0x8fe8('0x4c')]=function(_0x7ca3e6,_0x141e71,_0x420561){var _0x42c8a3={};var _0x101163={};var _0x4b772b;var _0x3c21fe;return db[_0x8fe8('0x42')][_0x8fe8('0x4d')]({'where':{'id':_0x7ca3e6['params']['id']}})[_0x8fe8('0x25')](handleEntityNotFound(_0x141e71,null))[_0x8fe8('0x25')](function(_0x59b215){if(_0x59b215){_0x4b772b=_0x59b215;_0x101163[_0x8fe8('0x35')]=_[_0x8fe8('0x32')](db['ServicenowField'][_0x8fe8('0x2d')]);_0x101163[_0x8fe8('0x31')]=_[_0x8fe8('0x32')](_0x7ca3e6[_0x8fe8('0x31')]);_0x101163[_0x8fe8('0x33')]=_[_0x8fe8('0x34')](_0x101163[_0x8fe8('0x35')],_0x101163[_0x8fe8('0x31')]);_0x42c8a3['attributes']=_[_0x8fe8('0x34')](_0x101163[_0x8fe8('0x35')],qs[_0x8fe8('0x37')](_0x7ca3e6[_0x8fe8('0x31')][_0x8fe8('0x37')]));_0x42c8a3['attributes']=_0x42c8a3[_0x8fe8('0x36')][_0x8fe8('0x38')]?_0x42c8a3[_0x8fe8('0x36')]:_0x101163[_0x8fe8('0x35')];_0x42c8a3[_0x8fe8('0x3a')]=qs[_0x8fe8('0x3b')](_0x7ca3e6['query'][_0x8fe8('0x3b')]);_0x42c8a3[_0x8fe8('0x3c')]=qs[_0x8fe8('0x33')](_[_0x8fe8('0x3d')](_0x7ca3e6[_0x8fe8('0x31')],_0x101163['filters']));if(_0x7ca3e6[_0x8fe8('0x31')][_0x8fe8('0x3e')]){_0x42c8a3[_0x8fe8('0x3c')]=_[_0x8fe8('0x40')](_0x42c8a3[_0x8fe8('0x3c')],{'$or':_[_0x8fe8('0x2c')](_0x42c8a3['attributes'],function(_0x2ac83e){var _0x3dd53c={};_0x3dd53c[_0x2ac83e]={'$like':'%'+_0x7ca3e6[_0x8fe8('0x31')]['filter']+'%'};return _0x3dd53c;})});}_0x42c8a3=_[_0x8fe8('0x40')]({},_0x42c8a3,_0x7ca3e6['options']);return _0x4b772b[_0x8fe8('0x4c')](_0x42c8a3);}})['then'](function(_0x3dd2e9){if(_0x3dd2e9){_0x3c21fe=_0x3dd2e9[_0x8fe8('0x38')];if(!_0x7ca3e6[_0x8fe8('0x31')][_0x8fe8('0x39')]('nolimit')){_0x42c8a3['limit']=qs[_0x8fe8('0x1e')](_0x7ca3e6[_0x8fe8('0x31')]['limit']);_0x42c8a3[_0x8fe8('0x1c')]=qs[_0x8fe8('0x1c')](_0x7ca3e6[_0x8fe8('0x31')]['offset']);}return _0x4b772b[_0x8fe8('0x4c')](_0x42c8a3);}})['then'](function(_0x5b1d22){if(_0x5b1d22){return _0x5b1d22?{'count':_0x3c21fe,'rows':_0x5b1d22}:null;}})[_0x8fe8('0x25')](respondWithResult(_0x141e71,null))[_0x8fe8('0x45')](handleError(_0x141e71,null));};exports['getSubjects']=function(_0x55775f,_0x1bdfc8,_0x372a70){var _0x4e5e76={};var _0x584fd2={};var _0x10e38b;var _0x3728ad;return db[_0x8fe8('0x42')][_0x8fe8('0x4d')]({'where':{'id':_0x55775f[_0x8fe8('0x4b')]['id']}})[_0x8fe8('0x25')](handleEntityNotFound(_0x1bdfc8,null))[_0x8fe8('0x25')](function(_0x5eb03a){if(_0x5eb03a){_0x10e38b=_0x5eb03a;_0x584fd2[_0x8fe8('0x35')]=_[_0x8fe8('0x32')](db['ServicenowField']['rawAttributes']);_0x584fd2[_0x8fe8('0x31')]=_[_0x8fe8('0x32')](_0x55775f[_0x8fe8('0x31')]);_0x584fd2[_0x8fe8('0x33')]=_['intersection'](_0x584fd2[_0x8fe8('0x35')],_0x584fd2[_0x8fe8('0x31')]);_0x4e5e76[_0x8fe8('0x36')]=_[_0x8fe8('0x34')](_0x584fd2[_0x8fe8('0x35')],qs[_0x8fe8('0x37')](_0x55775f[_0x8fe8('0x31')][_0x8fe8('0x37')]));_0x4e5e76[_0x8fe8('0x36')]=_0x4e5e76['attributes'][_0x8fe8('0x38')]?_0x4e5e76[_0x8fe8('0x36')]:_0x584fd2[_0x8fe8('0x35')];_0x4e5e76['order']=qs[_0x8fe8('0x3b')](_0x55775f['query']['sort']);_0x4e5e76[_0x8fe8('0x3c')]=qs[_0x8fe8('0x33')](_[_0x8fe8('0x3d')](_0x55775f[_0x8fe8('0x31')],_0x584fd2[_0x8fe8('0x33')]));if(_0x55775f['query'][_0x8fe8('0x3e')]){_0x4e5e76[_0x8fe8('0x3c')]=_[_0x8fe8('0x40')](_0x4e5e76[_0x8fe8('0x3c')],{'$or':_[_0x8fe8('0x2c')](_0x4e5e76[_0x8fe8('0x36')],function(_0x2e33ec){var _0x16ce00={};_0x16ce00[_0x2e33ec]={'$like':'%'+_0x55775f['query'][_0x8fe8('0x3e')]+'%'};return _0x16ce00;})});}_0x4e5e76=_[_0x8fe8('0x40')]({},_0x4e5e76,_0x55775f[_0x8fe8('0x41')]);return _0x10e38b['getSubjects'](_0x4e5e76);}})[_0x8fe8('0x25')](function(_0x100f9a){if(_0x100f9a){_0x3728ad=_0x100f9a['length'];if(!_0x55775f[_0x8fe8('0x31')]['hasOwnProperty'](_0x8fe8('0x4e'))){_0x4e5e76[_0x8fe8('0x1e')]=qs[_0x8fe8('0x1e')](_0x55775f[_0x8fe8('0x31')][_0x8fe8('0x1e')]);_0x4e5e76[_0x8fe8('0x1c')]=qs[_0x8fe8('0x1c')](_0x55775f[_0x8fe8('0x31')][_0x8fe8('0x1c')]);}return _0x10e38b[_0x8fe8('0x4f')](_0x4e5e76);}})[_0x8fe8('0x25')](function(_0x38e905){if(_0x38e905){return _0x38e905?{'count':_0x3728ad,'rows':_0x38e905}:null;}})[_0x8fe8('0x25')](respondWithResult(_0x1bdfc8,null))['catch'](handleError(_0x1bdfc8,null));};exports[_0x8fe8('0x50')]=function(_0x30a9cc,_0x295053,_0x40965c){var _0x5a00e8={};var _0x24e216={};var _0x1b1caa;var _0x67316;return db[_0x8fe8('0x42')][_0x8fe8('0x4d')]({'where':{'id':_0x30a9cc[_0x8fe8('0x4b')]['id']}})[_0x8fe8('0x25')](handleEntityNotFound(_0x295053,null))[_0x8fe8('0x25')](function(_0x19ed73){if(_0x19ed73){_0x1b1caa=_0x19ed73;_0x24e216[_0x8fe8('0x35')]=_['keys'](db[_0x8fe8('0x51')][_0x8fe8('0x2d')]);_0x24e216['query']=_['keys'](_0x30a9cc[_0x8fe8('0x31')]);_0x24e216[_0x8fe8('0x33')]=_[_0x8fe8('0x34')](_0x24e216[_0x8fe8('0x35')],_0x24e216[_0x8fe8('0x31')]);_0x5a00e8[_0x8fe8('0x36')]=_['intersection'](_0x24e216['model'],qs[_0x8fe8('0x37')](_0x30a9cc[_0x8fe8('0x31')][_0x8fe8('0x37')]));_0x5a00e8[_0x8fe8('0x36')]=_0x5a00e8['attributes'][_0x8fe8('0x38')]?_0x5a00e8[_0x8fe8('0x36')]:_0x24e216[_0x8fe8('0x35')];_0x5a00e8['order']=qs[_0x8fe8('0x3b')](_0x30a9cc[_0x8fe8('0x31')]['sort']);_0x5a00e8[_0x8fe8('0x3c')]=qs[_0x8fe8('0x33')](_['pick'](_0x30a9cc[_0x8fe8('0x31')],_0x24e216[_0x8fe8('0x33')]));if(_0x30a9cc['query'][_0x8fe8('0x3e')]){_0x5a00e8[_0x8fe8('0x3c')]=_[_0x8fe8('0x40')](_0x5a00e8[_0x8fe8('0x3c')],{'$or':_[_0x8fe8('0x2c')](_0x5a00e8['attributes'],function(_0xf25af8){var _0x198e8e={};_0x198e8e[_0xf25af8]={'$like':'%'+_0x30a9cc[_0x8fe8('0x31')][_0x8fe8('0x3e')]+'%'};return _0x198e8e;})});}_0x5a00e8=_[_0x8fe8('0x40')]({},_0x5a00e8,_0x30a9cc['options']);return _0x1b1caa['getDescriptions'](_0x5a00e8);}})[_0x8fe8('0x25')](function(_0x2557b9){if(_0x2557b9){_0x67316=_0x2557b9[_0x8fe8('0x38')];if(!_0x30a9cc['query'][_0x8fe8('0x39')](_0x8fe8('0x4e'))){_0x5a00e8['limit']=qs['limit'](_0x30a9cc[_0x8fe8('0x31')]['limit']);_0x5a00e8['offset']=qs[_0x8fe8('0x1c')](_0x30a9cc[_0x8fe8('0x31')][_0x8fe8('0x1c')]);}return _0x1b1caa[_0x8fe8('0x50')](_0x5a00e8);}})['then'](function(_0x297003){if(_0x297003){return _0x297003?{'count':_0x67316,'rows':_0x297003}:null;}})[_0x8fe8('0x25')](respondWithResult(_0x295053,null))[_0x8fe8('0x45')](handleError(_0x295053,null));};
\ No newline at end of file
+var _0xb5bf=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','send','map','ServicenowConfiguration','fieldName','key','model','name','filters','intersection','query','attributes','fields','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','show','keys','length','include','find','catch','create','body','params','destroy','getFields','findOne','pick','hasOwnProperty','getSubjects','ServicenowField','rawAttributes','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xb5bf,0xa7));var _0xfb5b=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0xb5bf[_0x42bdad];return _0x122626;};'use strict';var emlformat=require(_0xfb5b('0x0'));var rimraf=require(_0xfb5b('0x1'));var zipdir=require(_0xfb5b('0x2'));var jsonpatch=require(_0xfb5b('0x3'));var rp=require('request-promise');var moment=require(_0xfb5b('0x4'));var BPromise=require(_0xfb5b('0x5'));var Mustache=require(_0xfb5b('0x6'));var util=require(_0xfb5b('0x7'));var path=require(_0xfb5b('0x8'));var sox=require(_0xfb5b('0x9'));var csv=require(_0xfb5b('0xa'));var ejs=require(_0xfb5b('0xb'));var fs=require('fs');var fs_extra=require(_0xfb5b('0xc'));var _=require(_0xfb5b('0xd'));var squel=require(_0xfb5b('0xe'));var crypto=require(_0xfb5b('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xfb5b('0x10'));var toCsv=require(_0xfb5b('0xa'));var querystring=require(_0xfb5b('0x11'));var Papa=require(_0xfb5b('0x12'));var Redis=require(_0xfb5b('0x13'));var authService=require(_0xfb5b('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xfb5b('0x15'));var hardwareService=require(_0xfb5b('0x16'));var logger=require(_0xfb5b('0x17'))(_0xfb5b('0x18'));var utils=require(_0xfb5b('0x19'));var config=require(_0xfb5b('0x1a'));var licenseUtil=require(_0xfb5b('0x1b'));var db=require(_0xfb5b('0x1c'))['db'];function respondWithStatusCode(_0x3fec76,_0x4023a1){_0x4023a1=_0x4023a1||0xcc;return function(_0x50b330){if(_0x50b330){return _0x3fec76[_0xfb5b('0x1d')](_0x4023a1);}return _0x3fec76[_0xfb5b('0x1e')](_0x4023a1)[_0xfb5b('0x1f')]();};}function respondWithResult(_0xbed351,_0x311797){_0x311797=_0x311797||0xc8;return function(_0x503900){if(_0x503900){return _0xbed351[_0xfb5b('0x1e')](_0x311797)[_0xfb5b('0x20')](_0x503900);}};}function respondWithFilteredResult(_0x308a20,_0x33c0b9){return function(_0x49d387){if(_0x49d387){var _0x5ddc71=typeof _0x33c0b9[_0xfb5b('0x21')]===_0xfb5b('0x22')&&typeof _0x33c0b9[_0xfb5b('0x23')]===_0xfb5b('0x22');var _0x4e9c54=_0x49d387[_0xfb5b('0x24')];var _0x351af8=_0x5ddc71?0x0:_0x33c0b9[_0xfb5b('0x21')];var _0x339e1a=_0x5ddc71?_0x49d387[_0xfb5b('0x24')]:_0x33c0b9[_0xfb5b('0x21')]+_0x33c0b9[_0xfb5b('0x23')];var _0x342e72;if(_0x339e1a>=_0x4e9c54){_0x339e1a=_0x4e9c54;_0x342e72=0xc8;}else{_0x342e72=0xce;}_0x308a20['status'](_0x342e72);return _0x308a20[_0xfb5b('0x25')](_0xfb5b('0x26'),_0x351af8+'-'+_0x339e1a+'/'+_0x4e9c54)['json'](_0x49d387);}return null;};}function patchUpdates(_0x14dd42){return function(_0x26de3b){try{jsonpatch[_0xfb5b('0x27')](_0x26de3b,_0x14dd42,!![]);}catch(_0x562ed7){return BPromise[_0xfb5b('0x28')](_0x562ed7);}return _0x26de3b[_0xfb5b('0x29')]();};}function saveUpdates(_0x719a9c,_0x48e084){return function(_0x19909c){if(_0x19909c){return _0x19909c[_0xfb5b('0x2a')](_0x719a9c)[_0xfb5b('0x2b')](function(_0x579c38){return _0x579c38;});}return null;};}function removeEntity(_0x230416,_0x59d56b){return function(_0x400a30){if(_0x400a30){return _0x400a30['destroy']()[_0xfb5b('0x2b')](function(){_0x230416['status'](0xcc)[_0xfb5b('0x1f')]();});}};}function handleEntityNotFound(_0x1a9771,_0xc7e746){return function(_0x39b1bd){if(!_0x39b1bd){_0x1a9771[_0xfb5b('0x1d')](0x194);}return _0x39b1bd;};}function handleError(_0x9fc8b5,_0x17e055){_0x17e055=_0x17e055||0x1f4;return function(_0x5b7b20){logger[_0xfb5b('0x2c')](_0x5b7b20[_0xfb5b('0x2d')]);if(_0x5b7b20['name']){delete _0x5b7b20['name'];}_0x9fc8b5[_0xfb5b('0x1e')](_0x17e055)[_0xfb5b('0x2e')](_0x5b7b20);};}exports['index']=function(_0x46f0f0,_0x1fabb1){var _0x878ec={},_0x8546fc={},_0x3f2f30={'count':0x0,'rows':[]};var _0x4462f3=_[_0xfb5b('0x2f')](db[_0xfb5b('0x30')]['rawAttributes'],function(_0xa6a2){return{'name':_0xa6a2[_0xfb5b('0x31')],'type':_0xa6a2['type'][_0xfb5b('0x32')]};});_0x8546fc[_0xfb5b('0x33')]=_['map'](_0x4462f3,_0xfb5b('0x34'));_0x8546fc['query']=_['keys'](_0x46f0f0['query']);_0x8546fc[_0xfb5b('0x35')]=_[_0xfb5b('0x36')](_0x8546fc[_0xfb5b('0x33')],_0x8546fc[_0xfb5b('0x37')]);_0x878ec[_0xfb5b('0x38')]=_[_0xfb5b('0x36')](_0x8546fc[_0xfb5b('0x33')],qs[_0xfb5b('0x39')](_0x46f0f0['query'][_0xfb5b('0x39')]));_0x878ec[_0xfb5b('0x38')]=_0x878ec[_0xfb5b('0x38')]['length']?_0x878ec[_0xfb5b('0x38')]:_0x8546fc[_0xfb5b('0x33')];if(!_0x46f0f0[_0xfb5b('0x37')]['hasOwnProperty'](_0xfb5b('0x3a'))){_0x878ec[_0xfb5b('0x23')]=qs[_0xfb5b('0x23')](_0x46f0f0['query'][_0xfb5b('0x23')]);_0x878ec['offset']=qs[_0xfb5b('0x21')](_0x46f0f0[_0xfb5b('0x37')][_0xfb5b('0x21')]);}_0x878ec[_0xfb5b('0x3b')]=qs[_0xfb5b('0x3c')](_0x46f0f0[_0xfb5b('0x37')][_0xfb5b('0x3c')]);_0x878ec[_0xfb5b('0x3d')]=qs['filters'](_['pick'](_0x46f0f0[_0xfb5b('0x37')],_0x8546fc[_0xfb5b('0x35')]),_0x4462f3);if(_0x46f0f0[_0xfb5b('0x37')][_0xfb5b('0x3e')]){_0x878ec[_0xfb5b('0x3d')]=_[_0xfb5b('0x3f')](_0x878ec[_0xfb5b('0x3d')],{'$or':_[_0xfb5b('0x2f')](_0x4462f3,function(_0x2d1efd){if(_0x2d1efd[_0xfb5b('0x40')]!==_0xfb5b('0x41')){var _0xaceaad={};_0xaceaad[_0x2d1efd[_0xfb5b('0x34')]]={'$like':'%'+_0x46f0f0[_0xfb5b('0x37')][_0xfb5b('0x3e')]+'%'};return _0xaceaad;}})});}_0x878ec=_['merge']({},_0x878ec,_0x46f0f0[_0xfb5b('0x42')]);var _0x35d950={'where':_0x878ec['where']};return db[_0xfb5b('0x30')][_0xfb5b('0x24')](_0x35d950)[_0xfb5b('0x2b')](function(_0x21f245){_0x3f2f30[_0xfb5b('0x24')]=_0x21f245;if(_0x46f0f0[_0xfb5b('0x37')][_0xfb5b('0x43')]){_0x878ec['include']=[{'all':!![]}];}return db[_0xfb5b('0x30')][_0xfb5b('0x44')](_0x878ec);})[_0xfb5b('0x2b')](function(_0x531db3){_0x3f2f30[_0xfb5b('0x45')]=_0x531db3;return _0x3f2f30;})[_0xfb5b('0x2b')](respondWithFilteredResult(_0x1fabb1,_0x878ec))['catch'](handleError(_0x1fabb1,null));};exports[_0xfb5b('0x46')]=function(_0x372eed,_0x3de86c){var _0x7442d3={'raw':![],'where':{'id':_0x372eed['params']['id']}},_0x173312={};_0x173312['model']=_[_0xfb5b('0x47')](db['ServicenowConfiguration']['rawAttributes']);_0x173312[_0xfb5b('0x37')]=_['keys'](_0x372eed[_0xfb5b('0x37')]);_0x173312['filters']=_[_0xfb5b('0x36')](_0x173312[_0xfb5b('0x33')],_0x173312[_0xfb5b('0x37')]);_0x7442d3['attributes']=_['intersection'](_0x173312['model'],qs[_0xfb5b('0x39')](_0x372eed[_0xfb5b('0x37')][_0xfb5b('0x39')]));_0x7442d3[_0xfb5b('0x38')]=_0x7442d3[_0xfb5b('0x38')][_0xfb5b('0x48')]?_0x7442d3['attributes']:_0x173312[_0xfb5b('0x33')];if(_0x372eed[_0xfb5b('0x37')][_0xfb5b('0x43')]){_0x7442d3[_0xfb5b('0x49')]=[{'all':!![]}];}_0x7442d3=_[_0xfb5b('0x3f')]({},_0x7442d3,_0x372eed[_0xfb5b('0x42')]);return db['ServicenowConfiguration'][_0xfb5b('0x4a')](_0x7442d3)['then'](handleEntityNotFound(_0x3de86c,null))[_0xfb5b('0x2b')](respondWithResult(_0x3de86c,null))[_0xfb5b('0x4b')](handleError(_0x3de86c,null));};exports[_0xfb5b('0x4c')]=function(_0x516bf3,_0x34c03c){return db[_0xfb5b('0x30')][_0xfb5b('0x4c')](_0x516bf3[_0xfb5b('0x4d')],{})[_0xfb5b('0x2b')](respondWithResult(_0x34c03c,0xc9))[_0xfb5b('0x4b')](handleError(_0x34c03c,null));};exports[_0xfb5b('0x2a')]=function(_0x132ef,_0x44f781){if(_0x132ef[_0xfb5b('0x4d')]['id']){delete _0x132ef[_0xfb5b('0x4d')]['id'];}return db[_0xfb5b('0x30')][_0xfb5b('0x4a')]({'where':{'id':_0x132ef[_0xfb5b('0x4e')]['id']}})['then'](handleEntityNotFound(_0x44f781,null))[_0xfb5b('0x2b')](saveUpdates(_0x132ef[_0xfb5b('0x4d')],null))[_0xfb5b('0x2b')](respondWithResult(_0x44f781,null))['catch'](handleError(_0x44f781,null));};exports[_0xfb5b('0x4f')]=function(_0x3d256e,_0x485ffe){return db[_0xfb5b('0x30')][_0xfb5b('0x4a')]({'where':{'id':_0x3d256e['params']['id']}})[_0xfb5b('0x2b')](handleEntityNotFound(_0x485ffe,null))[_0xfb5b('0x2b')](removeEntity(_0x485ffe,null))['catch'](handleError(_0x485ffe,null));};exports[_0xfb5b('0x50')]=function(_0x2ad947,_0x279b5f,_0x133d54){var _0x32e926={};var _0x1d9265={};var _0x1a64fd;var _0x3141fd;return db[_0xfb5b('0x30')][_0xfb5b('0x51')]({'where':{'id':_0x2ad947['params']['id']}})[_0xfb5b('0x2b')](handleEntityNotFound(_0x279b5f,null))[_0xfb5b('0x2b')](function(_0x28b23e){if(_0x28b23e){_0x1a64fd=_0x28b23e;_0x1d9265['model']=_[_0xfb5b('0x47')](db['ServicenowField']['rawAttributes']);_0x1d9265[_0xfb5b('0x37')]=_[_0xfb5b('0x47')](_0x2ad947[_0xfb5b('0x37')]);_0x1d9265[_0xfb5b('0x35')]=_[_0xfb5b('0x36')](_0x1d9265[_0xfb5b('0x33')],_0x1d9265[_0xfb5b('0x37')]);_0x32e926[_0xfb5b('0x38')]=_['intersection'](_0x1d9265[_0xfb5b('0x33')],qs[_0xfb5b('0x39')](_0x2ad947[_0xfb5b('0x37')][_0xfb5b('0x39')]));_0x32e926[_0xfb5b('0x38')]=_0x32e926[_0xfb5b('0x38')][_0xfb5b('0x48')]?_0x32e926[_0xfb5b('0x38')]:_0x1d9265['model'];_0x32e926[_0xfb5b('0x3b')]=qs[_0xfb5b('0x3c')](_0x2ad947[_0xfb5b('0x37')]['sort']);_0x32e926[_0xfb5b('0x3d')]=qs[_0xfb5b('0x35')](_[_0xfb5b('0x52')](_0x2ad947[_0xfb5b('0x37')],_0x1d9265['filters']));if(_0x2ad947[_0xfb5b('0x37')][_0xfb5b('0x3e')]){_0x32e926[_0xfb5b('0x3d')]=_['merge'](_0x32e926[_0xfb5b('0x3d')],{'$or':_[_0xfb5b('0x2f')](_0x32e926[_0xfb5b('0x38')],function(_0x4c8357){var _0xf1f67d={};_0xf1f67d[_0x4c8357]={'$like':'%'+_0x2ad947['query'][_0xfb5b('0x3e')]+'%'};return _0xf1f67d;})});}_0x32e926=_[_0xfb5b('0x3f')]({},_0x32e926,_0x2ad947[_0xfb5b('0x42')]);return _0x1a64fd[_0xfb5b('0x50')](_0x32e926);}})['then'](function(_0x3934e1){if(_0x3934e1){_0x3141fd=_0x3934e1[_0xfb5b('0x48')];if(!_0x2ad947[_0xfb5b('0x37')][_0xfb5b('0x53')](_0xfb5b('0x3a'))){_0x32e926[_0xfb5b('0x23')]=qs[_0xfb5b('0x23')](_0x2ad947['query'][_0xfb5b('0x23')]);_0x32e926[_0xfb5b('0x21')]=qs[_0xfb5b('0x21')](_0x2ad947['query'][_0xfb5b('0x21')]);}return _0x1a64fd[_0xfb5b('0x50')](_0x32e926);}})[_0xfb5b('0x2b')](function(_0x2bb710){if(_0x2bb710){return _0x2bb710?{'count':_0x3141fd,'rows':_0x2bb710}:null;}})[_0xfb5b('0x2b')](respondWithResult(_0x279b5f,null))['catch'](handleError(_0x279b5f,null));};exports[_0xfb5b('0x54')]=function(_0x5c6a6f,_0x1bb723,_0x2b2551){var _0x39859c={};var _0x4ea015={};var _0x46b744;var _0x4d7f04;return db[_0xfb5b('0x30')][_0xfb5b('0x51')]({'where':{'id':_0x5c6a6f[_0xfb5b('0x4e')]['id']}})[_0xfb5b('0x2b')](handleEntityNotFound(_0x1bb723,null))[_0xfb5b('0x2b')](function(_0x3dc44d){if(_0x3dc44d){_0x46b744=_0x3dc44d;_0x4ea015['model']=_['keys'](db['ServicenowField']['rawAttributes']);_0x4ea015[_0xfb5b('0x37')]=_[_0xfb5b('0x47')](_0x5c6a6f[_0xfb5b('0x37')]);_0x4ea015[_0xfb5b('0x35')]=_[_0xfb5b('0x36')](_0x4ea015[_0xfb5b('0x33')],_0x4ea015[_0xfb5b('0x37')]);_0x39859c[_0xfb5b('0x38')]=_['intersection'](_0x4ea015[_0xfb5b('0x33')],qs[_0xfb5b('0x39')](_0x5c6a6f[_0xfb5b('0x37')]['fields']));_0x39859c[_0xfb5b('0x38')]=_0x39859c[_0xfb5b('0x38')]['length']?_0x39859c[_0xfb5b('0x38')]:_0x4ea015['model'];_0x39859c[_0xfb5b('0x3b')]=qs[_0xfb5b('0x3c')](_0x5c6a6f[_0xfb5b('0x37')][_0xfb5b('0x3c')]);_0x39859c[_0xfb5b('0x3d')]=qs['filters'](_['pick'](_0x5c6a6f['query'],_0x4ea015['filters']));if(_0x5c6a6f[_0xfb5b('0x37')]['filter']){_0x39859c[_0xfb5b('0x3d')]=_['merge'](_0x39859c['where'],{'$or':_[_0xfb5b('0x2f')](_0x39859c[_0xfb5b('0x38')],function(_0x1e1b90){var _0x48d7c9={};_0x48d7c9[_0x1e1b90]={'$like':'%'+_0x5c6a6f[_0xfb5b('0x37')][_0xfb5b('0x3e')]+'%'};return _0x48d7c9;})});}_0x39859c=_[_0xfb5b('0x3f')]({},_0x39859c,_0x5c6a6f[_0xfb5b('0x42')]);return _0x46b744[_0xfb5b('0x54')](_0x39859c);}})['then'](function(_0x4bb88f){if(_0x4bb88f){_0x4d7f04=_0x4bb88f[_0xfb5b('0x48')];if(!_0x5c6a6f[_0xfb5b('0x37')][_0xfb5b('0x53')](_0xfb5b('0x3a'))){_0x39859c[_0xfb5b('0x23')]=qs[_0xfb5b('0x23')](_0x5c6a6f[_0xfb5b('0x37')]['limit']);_0x39859c['offset']=qs[_0xfb5b('0x21')](_0x5c6a6f[_0xfb5b('0x37')][_0xfb5b('0x21')]);}return _0x46b744[_0xfb5b('0x54')](_0x39859c);}})[_0xfb5b('0x2b')](function(_0xa27fe6){if(_0xa27fe6){return _0xa27fe6?{'count':_0x4d7f04,'rows':_0xa27fe6}:null;}})[_0xfb5b('0x2b')](respondWithResult(_0x1bb723,null))[_0xfb5b('0x4b')](handleError(_0x1bb723,null));};exports['getDescriptions']=function(_0xc6756d,_0x93800e,_0x56012d){var _0x57ba54={};var _0x480bf5={};var _0x1ec6cc;var _0x37f7b0;return db[_0xfb5b('0x30')][_0xfb5b('0x51')]({'where':{'id':_0xc6756d['params']['id']}})['then'](handleEntityNotFound(_0x93800e,null))['then'](function(_0x53f42d){if(_0x53f42d){_0x1ec6cc=_0x53f42d;_0x480bf5[_0xfb5b('0x33')]=_[_0xfb5b('0x47')](db[_0xfb5b('0x55')][_0xfb5b('0x56')]);_0x480bf5[_0xfb5b('0x37')]=_[_0xfb5b('0x47')](_0xc6756d['query']);_0x480bf5[_0xfb5b('0x35')]=_['intersection'](_0x480bf5[_0xfb5b('0x33')],_0x480bf5[_0xfb5b('0x37')]);_0x57ba54[_0xfb5b('0x38')]=_[_0xfb5b('0x36')](_0x480bf5[_0xfb5b('0x33')],qs['fields'](_0xc6756d[_0xfb5b('0x37')][_0xfb5b('0x39')]));_0x57ba54[_0xfb5b('0x38')]=_0x57ba54['attributes'][_0xfb5b('0x48')]?_0x57ba54[_0xfb5b('0x38')]:_0x480bf5[_0xfb5b('0x33')];_0x57ba54[_0xfb5b('0x3b')]=qs[_0xfb5b('0x3c')](_0xc6756d['query']['sort']);_0x57ba54[_0xfb5b('0x3d')]=qs['filters'](_[_0xfb5b('0x52')](_0xc6756d[_0xfb5b('0x37')],_0x480bf5[_0xfb5b('0x35')]));if(_0xc6756d[_0xfb5b('0x37')][_0xfb5b('0x3e')]){_0x57ba54['where']=_['merge'](_0x57ba54[_0xfb5b('0x3d')],{'$or':_[_0xfb5b('0x2f')](_0x57ba54[_0xfb5b('0x38')],function(_0x5a98e7){var _0x1b4886={};_0x1b4886[_0x5a98e7]={'$like':'%'+_0xc6756d[_0xfb5b('0x37')][_0xfb5b('0x3e')]+'%'};return _0x1b4886;})});}_0x57ba54=_['merge']({},_0x57ba54,_0xc6756d[_0xfb5b('0x42')]);return _0x1ec6cc[_0xfb5b('0x57')](_0x57ba54);}})[_0xfb5b('0x2b')](function(_0xfa47c7){if(_0xfa47c7){_0x37f7b0=_0xfa47c7[_0xfb5b('0x48')];if(!_0xc6756d[_0xfb5b('0x37')][_0xfb5b('0x53')](_0xfb5b('0x3a'))){_0x57ba54['limit']=qs[_0xfb5b('0x23')](_0xc6756d['query'][_0xfb5b('0x23')]);_0x57ba54['offset']=qs[_0xfb5b('0x21')](_0xc6756d[_0xfb5b('0x37')][_0xfb5b('0x21')]);}return _0x1ec6cc[_0xfb5b('0x57')](_0x57ba54);}})[_0xfb5b('0x2b')](function(_0x197e21){if(_0x197e21){return _0x197e21?{'count':_0x37f7b0,'rows':_0x197e21}:null;}})[_0xfb5b('0x2b')](respondWithResult(_0x93800e,null))[_0xfb5b('0x4b')](handleError(_0x93800e,null));};
\ No newline at end of file
index 8460122..f12e230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x500c=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','int_servicenow_configurations'];(function(_0x44fea0,_0x4f73bc){var _0x1756b6=function(_0x2d9ddf){while(--_0x2d9ddf){_0x44fea0['push'](_0x44fea0['shift']());}};_0x1756b6(++_0x4f73bc);}(_0x500c,0x188));var _0xc500=function(_0x43e8b2,_0x8d187c){_0x43e8b2=_0x43e8b2-0x0;var _0x316321=_0x500c[_0x43e8b2];return _0x316321;};'use strict';var _=require(_0xc500('0x0'));var util=require(_0xc500('0x1'));var logger=require(_0xc500('0x2'))(_0xc500('0x3'));var moment=require(_0xc500('0x4'));var BPromise=require(_0xc500('0x5'));var rp=require(_0xc500('0x6'));var fs=require('fs');var path=require(_0xc500('0x7'));var rimraf=require(_0xc500('0x8'));var config=require(_0xc500('0x9'));var attributes=require(_0xc500('0xa'));module[_0xc500('0xb')]=function(_0x39a572,_0x1390ec){return _0x39a572[_0xc500('0xc')]('ServicenowConfiguration',attributes,{'tableName':_0xc500('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf6e=['request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','int_servicenow_configurations','lodash','api','moment','bluebird'];(function(_0x55d829,_0x43f06c){var _0x52163b=function(_0x493cd8){while(--_0x493cd8){_0x55d829['push'](_0x55d829['shift']());}};_0x52163b(++_0x43f06c);}(_0xaf6e,0x16e));var _0xeaf6=function(_0x16c663,_0x17d004){_0x16c663=_0x16c663-0x0;var _0x12d8d8=_0xaf6e[_0x16c663];return _0x12d8d8;};'use strict';var _=require(_0xeaf6('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeaf6('0x1'));var moment=require(_0xeaf6('0x2'));var BPromise=require(_0xeaf6('0x3'));var rp=require(_0xeaf6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeaf6('0x5'));var config=require(_0xeaf6('0x6'));var attributes=require(_0xeaf6('0x7'));module[_0xeaf6('0x8')]=function(_0x284ffc,_0x4c8814){return _0x284ffc['define']('ServicenowConfiguration',attributes,{'tableName':_0xeaf6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf2d6cf..d60b05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6aa=['request\x20sent','stringify','error','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','ServicenowConfiguration,\x20%s,\x20%s'];(function(_0x464f87,_0x420b3d){var _0x2b47f0=function(_0x2237c7){while(--_0x2237c7){_0x464f87['push'](_0x464f87['shift']());}};_0x2b47f0(++_0x420b3d);}(_0xc6aa,0x1f4));var _0xac6a=function(_0x29a59d,_0x427fb1){_0x29a59d=_0x29a59d-0x0;var _0x1842dc=_0xc6aa[_0x29a59d];return _0x1842dc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xac6a('0x0'));var BPromise=require(_0xac6a('0x1'));var rs=require(_0xac6a('0x2'));var fs=require('fs');var Redis=require(_0xac6a('0x3'));var db=require(_0xac6a('0x4'))['db'];var utils=require(_0xac6a('0x5'));var logger=require('../../config/logger')(_0xac6a('0x6'));var config=require('../../config/environment');var jayson=require(_0xac6a('0x7'));var client=jayson[_0xac6a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x590c90,_0x402a47,_0x3adc06){return new BPromise(function(_0x4d2109,_0x2506d0){return client[_0xac6a('0x9')](_0x590c90,_0x3adc06)[_0xac6a('0xa')](function(_0x3e4bab){logger[_0xac6a('0xb')](_0xac6a('0xc'),_0x402a47,'request\x20sent');logger['debug']('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x402a47,_0xac6a('0xd'),JSON[_0xac6a('0xe')](_0x3e4bab));if(_0x3e4bab[_0xac6a('0xf')]){if(_0x3e4bab['error']['code']===0x1f4){logger[_0xac6a('0xf')]('ServicenowConfiguration,\x20%s,\x20%s',_0x402a47,_0x3e4bab[_0xac6a('0xf')][_0xac6a('0x10')]);return _0x2506d0(_0x3e4bab[_0xac6a('0xf')]['message']);}logger[_0xac6a('0xf')](_0xac6a('0xc'),_0x402a47,_0x3e4bab[_0xac6a('0xf')]['message']);return _0x4d2109(_0x3e4bab[_0xac6a('0xf')][_0xac6a('0x10')]);}else{logger[_0xac6a('0xb')](_0xac6a('0xc'),_0x402a47,'request\x20sent');_0x4d2109(_0x3e4bab[_0xac6a('0x11')][_0xac6a('0x10')]);}})[_0xac6a('0x12')](function(_0x4f923d){logger['error'](_0xac6a('0xc'),_0x402a47,_0x4f923d);_0x2506d0(_0x4f923d);});});}
\ No newline at end of file
+var _0x44d6=['request\x20sent','stringify','error','code','message','info','result','catch','lodash','bluebird','ioredis','jayson/promise','client','then','ServicenowConfiguration,\x20%s,\x20%s','debug'];(function(_0x119e39,_0x4a45de){var _0xf2c979=function(_0x9e0a3e){while(--_0x9e0a3e){_0x119e39['push'](_0x119e39['shift']());}};_0xf2c979(++_0x4a45de);}(_0x44d6,0xb8));var _0x644d=function(_0x1031e6,_0x3e5b64){_0x1031e6=_0x1031e6-0x0;var _0x224542=_0x44d6[_0x1031e6];return _0x224542;};'use strict';var _=require(_0x644d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x644d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x644d('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x644d('0x3'));var client=jayson[_0x644d('0x4')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2adff6,_0x3f88b0,_0x3decd5){return new BPromise(function(_0x539994,_0x2354de){return client['request'](_0x2adff6,_0x3decd5)[_0x644d('0x5')](function(_0x9ac947){logger['info'](_0x644d('0x6'),_0x3f88b0,'request\x20sent');logger[_0x644d('0x7')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x3f88b0,_0x644d('0x8'),JSON[_0x644d('0x9')](_0x9ac947));if(_0x9ac947[_0x644d('0xa')]){if(_0x9ac947[_0x644d('0xa')][_0x644d('0xb')]===0x1f4){logger[_0x644d('0xa')](_0x644d('0x6'),_0x3f88b0,_0x9ac947['error'][_0x644d('0xc')]);return _0x2354de(_0x9ac947[_0x644d('0xa')][_0x644d('0xc')]);}logger['error'](_0x644d('0x6'),_0x3f88b0,_0x9ac947[_0x644d('0xa')]['message']);return _0x539994(_0x9ac947['error'][_0x644d('0xc')]);}else{logger[_0x644d('0xd')](_0x644d('0x6'),_0x3f88b0,_0x644d('0x8'));_0x539994(_0x9ac947[_0x644d('0xe')][_0x644d('0xc')]);}})[_0x644d('0xf')](function(_0x35829f){logger[_0x644d('0xa')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3f88b0,_0x35829f);_0x2354de(_0x35829f);});});}
\ No newline at end of file
index e6cb006..a57dce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x868b=['/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0xe8129c,_0x2fb03c){var _0x709fc5=function(_0xb8e0c6){while(--_0xb8e0c6){_0xe8129c['push'](_0xe8129c['shift']());}};_0x709fc5(++_0x2fb03c);}(_0x868b,0x75));var _0xb868=function(_0x57e2db,_0x19abb0){_0x57e2db=_0x57e2db-0x0;var _0x2020fd=_0x868b[_0x57e2db];return _0x2020fd;};'use strict';var multer=require(_0xb868('0x0'));var util=require(_0xb868('0x1'));var path=require(_0xb868('0x2'));var timeout=require('connect-timeout');var express=require(_0xb868('0x3'));var router=express['Router']();var fs_extra=require(_0xb868('0x4'));var auth=require(_0xb868('0x5'));var interaction=require(_0xb868('0x6'));var config=require(_0xb868('0x7'));var controller=require('./intServicenowField.controller');router[_0xb868('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb868('0x8')](_0xb868('0x9'),auth[_0xb868('0xa')](),controller[_0xb868('0xb')]);router[_0xb868('0xc')]('/',auth[_0xb868('0xa')](),controller[_0xb868('0xd')]);router[_0xb868('0xe')](_0xb868('0x9'),auth[_0xb868('0xa')](),controller[_0xb868('0xf')]);router['delete'](_0xb868('0x9'),auth['isAuthenticated'](),controller[_0xb868('0x10')]);module[_0xb868('0x11')]=router;
\ No newline at end of file
+var _0x39bd=['../../config/environment','isAuthenticated','index','get','/:id','show','post','create','update','delete','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x57ae29,_0x43032d){var _0x218868=function(_0x291aad){while(--_0x291aad){_0x57ae29['push'](_0x57ae29['shift']());}};_0x218868(++_0x43032d);}(_0x39bd,0x19a));var _0xd39b=function(_0xe47165,_0x167a03){_0xe47165=_0xe47165-0x0;var _0x30b557=_0x39bd[_0xe47165];return _0x30b557;};'use strict';var multer=require('multer');var util=require(_0xd39b('0x0'));var path=require('path');var timeout=require(_0xd39b('0x1'));var express=require(_0xd39b('0x2'));var router=express[_0xd39b('0x3')]();var fs_extra=require(_0xd39b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd39b('0x5'));var config=require(_0xd39b('0x6'));var controller=require('./intServicenowField.controller');router['get']('/',auth[_0xd39b('0x7')](),controller[_0xd39b('0x8')]);router[_0xd39b('0x9')](_0xd39b('0xa'),auth[_0xd39b('0x7')](),controller[_0xd39b('0xb')]);router[_0xd39b('0xc')]('/',auth[_0xd39b('0x7')](),controller[_0xd39b('0xd')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xd39b('0xe')]);router[_0xd39b('0xf')]('/:id',auth[_0xd39b('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1fd8ceb..cbb641b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbad9=['keyValue','picklist','STRING','exports','string','variable','customVariable'];(function(_0x2dc53c,_0x4a29ce){var _0x32ea88=function(_0x159135){while(--_0x159135){_0x2dc53c['push'](_0x2dc53c['shift']());}};_0x32ea88(++_0x4a29ce);}(_0xbad9,0x184));var _0x9bad=function(_0x4d84a8,_0x5764ae){_0x4d84a8=_0x4d84a8-0x0;var _0x30f2d5=_0xbad9[_0x4d84a8];return _0x30f2d5;};'use strict';var Sequelize=require('sequelize');module[_0x9bad('0x0')]={'type':{'type':Sequelize['ENUM'](_0x9bad('0x1'),_0x9bad('0x2'),_0x9bad('0x3'),_0x9bad('0x4'),_0x9bad('0x5')),'defaultValue':_0x9bad('0x1')},'content':{'type':Sequelize[_0x9bad('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string',_0x9bad('0x2'),_0x9bad('0x3'))},'keyContent':{'type':Sequelize[_0x9bad('0x6')]},'idField':{'type':Sequelize[_0x9bad('0x6')]},'nameField':{'type':Sequelize[_0x9bad('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9bad('0x6')]}};
\ No newline at end of file
+var _0x54a5=['exports','customVariable','keyValue','picklist','string','STRING','ENUM','variable','BOOLEAN','sequelize'];(function(_0x1428d3,_0x925d43){var _0x103810=function(_0xfb0767){while(--_0xfb0767){_0x1428d3['push'](_0x1428d3['shift']());}};_0x103810(++_0x925d43);}(_0x54a5,0x77));var _0x554a=function(_0x5d3e58,_0x1b6419){_0x5d3e58=_0x5d3e58-0x0;var _0x1e93c3=_0x54a5[_0x5d3e58];return _0x1e93c3;};'use strict';var Sequelize=require(_0x554a('0x0'));module[_0x554a('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x554a('0x2'),_0x554a('0x3'),_0x554a('0x4')),'defaultValue':_0x554a('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x554a('0x6')]},'keyType':{'type':Sequelize[_0x554a('0x7')](_0x554a('0x5'),_0x554a('0x8'),_0x554a('0x2'))},'keyContent':{'type':Sequelize[_0x554a('0x6')]},'idField':{'type':Sequelize[_0x554a('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x554a('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x554a('0x6')]}};
\ No newline at end of file
index af46f33..01298f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb304=['filters','pick','filter','merge','options','includeAll','findAll','catch','show','params','include','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb304,0x190));var _0x4b30=function(_0x5df963,_0x10d8d1){_0x5df963=_0x5df963-0x0;var _0x21ebef=_0xb304[_0x5df963];return _0x21ebef;};'use strict';var emlformat=require(_0x4b30('0x0'));var rimraf=require(_0x4b30('0x1'));var zipdir=require(_0x4b30('0x2'));var jsonpatch=require(_0x4b30('0x3'));var rp=require(_0x4b30('0x4'));var moment=require(_0x4b30('0x5'));var BPromise=require(_0x4b30('0x6'));var Mustache=require(_0x4b30('0x7'));var util=require(_0x4b30('0x8'));var path=require(_0x4b30('0x9'));var sox=require(_0x4b30('0xa'));var csv=require(_0x4b30('0xb'));var ejs=require(_0x4b30('0xc'));var fs=require('fs');var fs_extra=require(_0x4b30('0xd'));var _=require(_0x4b30('0xe'));var squel=require(_0x4b30('0xf'));var crypto=require('crypto');var jsforce=require(_0x4b30('0x10'));var deskjs=require(_0x4b30('0x11'));var toCsv=require(_0x4b30('0xb'));var querystring=require(_0x4b30('0x12'));var Papa=require(_0x4b30('0x13'));var Redis=require(_0x4b30('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x4b30('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4b30('0x16'));var logger=require(_0x4b30('0x17'))(_0x4b30('0x18'));var utils=require('../../config/utils');var config=require(_0x4b30('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x4b30('0x1a'))['db'];function respondWithStatusCode(_0x2a1e96,_0xccaaa9){_0xccaaa9=_0xccaaa9||0xcc;return function(_0x3db65c){if(_0x3db65c){return _0x2a1e96[_0x4b30('0x1b')](_0xccaaa9);}return _0x2a1e96[_0x4b30('0x1c')](_0xccaaa9)[_0x4b30('0x1d')]();};}function respondWithResult(_0x3a6d19,_0x313720){_0x313720=_0x313720||0xc8;return function(_0x27c496){if(_0x27c496){return _0x3a6d19[_0x4b30('0x1c')](_0x313720)[_0x4b30('0x1e')](_0x27c496);}};}function respondWithFilteredResult(_0x1c7599,_0x4d04e1){return function(_0xf91501){if(_0xf91501){var _0x217bb6=typeof _0x4d04e1[_0x4b30('0x1f')]===_0x4b30('0x20')&&typeof _0x4d04e1['limit']===_0x4b30('0x20');var _0x49f943=_0xf91501['count'];var _0x14d555=_0x217bb6?0x0:_0x4d04e1[_0x4b30('0x1f')];var _0x33deb5=_0x217bb6?_0xf91501[_0x4b30('0x21')]:_0x4d04e1[_0x4b30('0x1f')]+_0x4d04e1[_0x4b30('0x22')];var _0x4790a2;if(_0x33deb5>=_0x49f943){_0x33deb5=_0x49f943;_0x4790a2=0xc8;}else{_0x4790a2=0xce;}_0x1c7599['status'](_0x4790a2);return _0x1c7599[_0x4b30('0x23')](_0x4b30('0x24'),_0x14d555+'-'+_0x33deb5+'/'+_0x49f943)[_0x4b30('0x1e')](_0xf91501);}return null;};}function patchUpdates(_0x51c764){return function(_0x42aaef){try{jsonpatch[_0x4b30('0x25')](_0x42aaef,_0x51c764,!![]);}catch(_0x3a74b1){return BPromise[_0x4b30('0x26')](_0x3a74b1);}return _0x42aaef['save']();};}function saveUpdates(_0x10e539,_0x4f1989){return function(_0x12c257){if(_0x12c257){return _0x12c257['update'](_0x10e539)[_0x4b30('0x27')](function(_0x2305ec){return _0x2305ec;});}return null;};}function removeEntity(_0x90b1a5,_0xa5b2fb){return function(_0x3cd3c5){if(_0x3cd3c5){return _0x3cd3c5[_0x4b30('0x28')]()[_0x4b30('0x27')](function(){_0x90b1a5[_0x4b30('0x1c')](0xcc)[_0x4b30('0x1d')]();});}};}function handleEntityNotFound(_0x5cd145,_0x2a2f76){return function(_0x2e014c){if(!_0x2e014c){_0x5cd145[_0x4b30('0x1b')](0x194);}return _0x2e014c;};}function handleError(_0x4c012d,_0x30c1e6){_0x30c1e6=_0x30c1e6||0x1f4;return function(_0x311c46){logger[_0x4b30('0x29')](_0x311c46[_0x4b30('0x2a')]);if(_0x311c46[_0x4b30('0x2b')]){delete _0x311c46[_0x4b30('0x2b')];}_0x4c012d[_0x4b30('0x1c')](_0x30c1e6)['send'](_0x311c46);};}exports[_0x4b30('0x2c')]=function(_0x5689b3,_0xf4af6e){var _0x1d9461={},_0x38908c={},_0x389cfa={'count':0x0,'rows':[]};var _0x2c2ef1=_[_0x4b30('0x2d')](db[_0x4b30('0x2e')][_0x4b30('0x2f')],function(_0x5752ea){return{'name':_0x5752ea[_0x4b30('0x30')],'type':_0x5752ea[_0x4b30('0x31')][_0x4b30('0x32')]};});_0x38908c[_0x4b30('0x33')]=_['map'](_0x2c2ef1,'name');_0x38908c['query']=_[_0x4b30('0x34')](_0x5689b3[_0x4b30('0x35')]);_0x38908c['filters']=_[_0x4b30('0x36')](_0x38908c[_0x4b30('0x33')],_0x38908c[_0x4b30('0x35')]);_0x1d9461[_0x4b30('0x37')]=_['intersection'](_0x38908c[_0x4b30('0x33')],qs[_0x4b30('0x38')](_0x5689b3[_0x4b30('0x35')][_0x4b30('0x38')]));_0x1d9461[_0x4b30('0x37')]=_0x1d9461[_0x4b30('0x37')][_0x4b30('0x39')]?_0x1d9461['attributes']:_0x38908c[_0x4b30('0x33')];if(!_0x5689b3['query'][_0x4b30('0x3a')](_0x4b30('0x3b'))){_0x1d9461[_0x4b30('0x22')]=qs['limit'](_0x5689b3[_0x4b30('0x35')][_0x4b30('0x22')]);_0x1d9461[_0x4b30('0x1f')]=qs[_0x4b30('0x1f')](_0x5689b3[_0x4b30('0x35')][_0x4b30('0x1f')]);}_0x1d9461['order']=qs['sort'](_0x5689b3[_0x4b30('0x35')][_0x4b30('0x3c')]);_0x1d9461[_0x4b30('0x3d')]=qs[_0x4b30('0x3e')](_[_0x4b30('0x3f')](_0x5689b3[_0x4b30('0x35')],_0x38908c['filters']),_0x2c2ef1);if(_0x5689b3[_0x4b30('0x35')][_0x4b30('0x40')]){_0x1d9461[_0x4b30('0x3d')]=_[_0x4b30('0x41')](_0x1d9461[_0x4b30('0x3d')],{'$or':_[_0x4b30('0x2d')](_0x2c2ef1,function(_0x426135){if(_0x426135['type']!=='VIRTUAL'){var _0x121545={};_0x121545[_0x426135[_0x4b30('0x2b')]]={'$like':'%'+_0x5689b3[_0x4b30('0x35')][_0x4b30('0x40')]+'%'};return _0x121545;}})});}_0x1d9461=_['merge']({},_0x1d9461,_0x5689b3[_0x4b30('0x42')]);var _0x198c6e={'where':_0x1d9461[_0x4b30('0x3d')]};return db[_0x4b30('0x2e')]['count'](_0x198c6e)[_0x4b30('0x27')](function(_0x366fad){_0x389cfa[_0x4b30('0x21')]=_0x366fad;if(_0x5689b3[_0x4b30('0x35')][_0x4b30('0x43')]){_0x1d9461['include']=[{'all':!![]}];}return db[_0x4b30('0x2e')][_0x4b30('0x44')](_0x1d9461);})[_0x4b30('0x27')](function(_0x2f742d){_0x389cfa['rows']=_0x2f742d;return _0x389cfa;})[_0x4b30('0x27')](respondWithFilteredResult(_0xf4af6e,_0x1d9461))[_0x4b30('0x45')](handleError(_0xf4af6e,null));};exports[_0x4b30('0x46')]=function(_0x7a0468,_0x58a7fe){var _0x5f57e2={'raw':!![],'where':{'id':_0x7a0468[_0x4b30('0x47')]['id']}},_0x4de433={};_0x4de433[_0x4b30('0x33')]=_[_0x4b30('0x34')](db[_0x4b30('0x2e')][_0x4b30('0x2f')]);_0x4de433[_0x4b30('0x35')]=_[_0x4b30('0x34')](_0x7a0468[_0x4b30('0x35')]);_0x4de433[_0x4b30('0x3e')]=_[_0x4b30('0x36')](_0x4de433[_0x4b30('0x33')],_0x4de433['query']);_0x5f57e2[_0x4b30('0x37')]=_['intersection'](_0x4de433['model'],qs[_0x4b30('0x38')](_0x7a0468[_0x4b30('0x35')][_0x4b30('0x38')]));_0x5f57e2[_0x4b30('0x37')]=_0x5f57e2[_0x4b30('0x37')][_0x4b30('0x39')]?_0x5f57e2[_0x4b30('0x37')]:_0x4de433['model'];if(_0x7a0468[_0x4b30('0x35')][_0x4b30('0x43')]){_0x5f57e2[_0x4b30('0x48')]=[{'all':!![]}];}_0x5f57e2=_['merge']({},_0x5f57e2,_0x7a0468[_0x4b30('0x42')]);return db['ServicenowField'][_0x4b30('0x49')](_0x5f57e2)[_0x4b30('0x27')](handleEntityNotFound(_0x58a7fe,null))['then'](respondWithResult(_0x58a7fe,null))[_0x4b30('0x45')](handleError(_0x58a7fe,null));};exports['create']=function(_0x293ac2,_0x56d01a){return db['ServicenowField'][_0x4b30('0x4a')](_0x293ac2['body'],{})[_0x4b30('0x27')](respondWithResult(_0x56d01a,0xc9))[_0x4b30('0x45')](handleError(_0x56d01a,null));};exports[_0x4b30('0x4b')]=function(_0x3b529c,_0x2ad8fa){if(_0x3b529c[_0x4b30('0x4c')]['id']){delete _0x3b529c[_0x4b30('0x4c')]['id'];}return db['ServicenowField'][_0x4b30('0x49')]({'where':{'id':_0x3b529c[_0x4b30('0x47')]['id']}})['then'](handleEntityNotFound(_0x2ad8fa,null))['then'](saveUpdates(_0x3b529c[_0x4b30('0x4c')],null))[_0x4b30('0x27')](respondWithResult(_0x2ad8fa,null))[_0x4b30('0x45')](handleError(_0x2ad8fa,null));};exports[_0x4b30('0x28')]=function(_0x5a4876,_0x38cbb0){return db[_0x4b30('0x2e')][_0x4b30('0x49')]({'where':{'id':_0x5a4876[_0x4b30('0x47')]['id']}})[_0x4b30('0x27')](handleEntityNotFound(_0x38cbb0,null))[_0x4b30('0x27')](removeEntity(_0x38cbb0,null))[_0x4b30('0x45')](handleError(_0x38cbb0,null));};
\ No newline at end of file
+var _0x09e1=['fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','ServicenowField','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','fields','includeAll','find','create','body','destroy','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs'];(function(_0xf2f332,_0x299fbf){var _0x56cce3=function(_0x5f37e0){while(--_0x5f37e0){_0xf2f332['push'](_0xf2f332['shift']());}};_0x56cce3(++_0x299fbf);}(_0x09e1,0x136));var _0x109e=function(_0x36fe14,_0x5cad5f){_0x36fe14=_0x36fe14-0x0;var _0x2fd254=_0x09e1[_0x36fe14];return _0x2fd254;};'use strict';var emlformat=require(_0x109e('0x0'));var rimraf=require(_0x109e('0x1'));var zipdir=require(_0x109e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x109e('0x3'));var moment=require(_0x109e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x109e('0x5'));var util=require(_0x109e('0x6'));var path=require('path');var sox=require(_0x109e('0x7'));var csv=require(_0x109e('0x8'));var ejs=require(_0x109e('0x9'));var fs=require('fs');var fs_extra=require(_0x109e('0xa'));var _=require(_0x109e('0xb'));var squel=require(_0x109e('0xc'));var crypto=require(_0x109e('0xd'));var jsforce=require(_0x109e('0xe'));var deskjs=require(_0x109e('0xf'));var toCsv=require(_0x109e('0x8'));var querystring=require('querystring');var Papa=require(_0x109e('0x10'));var Redis=require(_0x109e('0x11'));var authService=require(_0x109e('0x12'));var qs=require(_0x109e('0x13'));var as=require(_0x109e('0x14'));var hardwareService=require(_0x109e('0x15'));var logger=require(_0x109e('0x16'))('api');var utils=require(_0x109e('0x17'));var config=require(_0x109e('0x18'));var licenseUtil=require(_0x109e('0x19'));var db=require(_0x109e('0x1a'))['db'];function respondWithStatusCode(_0x2dfa10,_0x171024){_0x171024=_0x171024||0xcc;return function(_0x2d7f25){if(_0x2d7f25){return _0x2dfa10[_0x109e('0x1b')](_0x171024);}return _0x2dfa10[_0x109e('0x1c')](_0x171024)[_0x109e('0x1d')]();};}function respondWithResult(_0x2521d5,_0x187702){_0x187702=_0x187702||0xc8;return function(_0x14288a){if(_0x14288a){return _0x2521d5['status'](_0x187702)[_0x109e('0x1e')](_0x14288a);}};}function respondWithFilteredResult(_0x1596db,_0x3c85be){return function(_0x48e382){if(_0x48e382){var _0x18b3d7=typeof _0x3c85be[_0x109e('0x1f')]===_0x109e('0x20')&&typeof _0x3c85be[_0x109e('0x21')]===_0x109e('0x20');var _0x100550=_0x48e382[_0x109e('0x22')];var _0x11ca70=_0x18b3d7?0x0:_0x3c85be[_0x109e('0x1f')];var _0x2b6cdc=_0x18b3d7?_0x48e382['count']:_0x3c85be['offset']+_0x3c85be[_0x109e('0x21')];var _0x322de5;if(_0x2b6cdc>=_0x100550){_0x2b6cdc=_0x100550;_0x322de5=0xc8;}else{_0x322de5=0xce;}_0x1596db[_0x109e('0x1c')](_0x322de5);return _0x1596db[_0x109e('0x23')](_0x109e('0x24'),_0x11ca70+'-'+_0x2b6cdc+'/'+_0x100550)[_0x109e('0x1e')](_0x48e382);}return null;};}function patchUpdates(_0x3e42aa){return function(_0xfbef31){try{jsonpatch[_0x109e('0x25')](_0xfbef31,_0x3e42aa,!![]);}catch(_0x3fa3c9){return BPromise[_0x109e('0x26')](_0x3fa3c9);}return _0xfbef31['save']();};}function saveUpdates(_0xa10ead,_0x475027){return function(_0x4b73ac){if(_0x4b73ac){return _0x4b73ac[_0x109e('0x27')](_0xa10ead)[_0x109e('0x28')](function(_0x962648){return _0x962648;});}return null;};}function removeEntity(_0x45da6d,_0x9f634){return function(_0x3da286){if(_0x3da286){return _0x3da286['destroy']()['then'](function(){_0x45da6d[_0x109e('0x1c')](0xcc)[_0x109e('0x1d')]();});}};}function handleEntityNotFound(_0x527ee1,_0x552105){return function(_0x2087bf){if(!_0x2087bf){_0x527ee1[_0x109e('0x1b')](0x194);}return _0x2087bf;};}function handleError(_0x351eb7,_0x3ebfd4){_0x3ebfd4=_0x3ebfd4||0x1f4;return function(_0xc4a49f){logger[_0x109e('0x29')](_0xc4a49f[_0x109e('0x2a')]);if(_0xc4a49f['name']){delete _0xc4a49f[_0x109e('0x2b')];}_0x351eb7[_0x109e('0x1c')](_0x3ebfd4)[_0x109e('0x2c')](_0xc4a49f);};}exports[_0x109e('0x2d')]=function(_0x547586,_0x14dee3){var _0x13398e={},_0x4b3ca6={},_0x540f39={'count':0x0,'rows':[]};var _0x58ddd2=_['map'](db[_0x109e('0x2e')][_0x109e('0x2f')],function(_0x388547){return{'name':_0x388547[_0x109e('0x30')],'type':_0x388547['type'][_0x109e('0x31')]};});_0x4b3ca6[_0x109e('0x32')]=_[_0x109e('0x33')](_0x58ddd2,_0x109e('0x2b'));_0x4b3ca6[_0x109e('0x34')]=_[_0x109e('0x35')](_0x547586[_0x109e('0x34')]);_0x4b3ca6[_0x109e('0x36')]=_[_0x109e('0x37')](_0x4b3ca6[_0x109e('0x32')],_0x4b3ca6[_0x109e('0x34')]);_0x13398e[_0x109e('0x38')]=_[_0x109e('0x37')](_0x4b3ca6[_0x109e('0x32')],qs['fields'](_0x547586['query']['fields']));_0x13398e[_0x109e('0x38')]=_0x13398e[_0x109e('0x38')][_0x109e('0x39')]?_0x13398e['attributes']:_0x4b3ca6[_0x109e('0x32')];if(!_0x547586['query'][_0x109e('0x3a')](_0x109e('0x3b'))){_0x13398e['limit']=qs[_0x109e('0x21')](_0x547586['query'][_0x109e('0x21')]);_0x13398e[_0x109e('0x1f')]=qs[_0x109e('0x1f')](_0x547586[_0x109e('0x34')][_0x109e('0x1f')]);}_0x13398e['order']=qs[_0x109e('0x3c')](_0x547586[_0x109e('0x34')][_0x109e('0x3c')]);_0x13398e[_0x109e('0x3d')]=qs[_0x109e('0x36')](_[_0x109e('0x3e')](_0x547586[_0x109e('0x34')],_0x4b3ca6[_0x109e('0x36')]),_0x58ddd2);if(_0x547586['query'][_0x109e('0x3f')]){_0x13398e['where']=_['merge'](_0x13398e[_0x109e('0x3d')],{'$or':_[_0x109e('0x33')](_0x58ddd2,function(_0x39d515){if(_0x39d515[_0x109e('0x40')]!==_0x109e('0x41')){var _0x4f40c7={};_0x4f40c7[_0x39d515['name']]={'$like':'%'+_0x547586[_0x109e('0x34')]['filter']+'%'};return _0x4f40c7;}})});}_0x13398e=_[_0x109e('0x42')]({},_0x13398e,_0x547586[_0x109e('0x43')]);var _0x1c4b00={'where':_0x13398e[_0x109e('0x3d')]};return db[_0x109e('0x2e')][_0x109e('0x22')](_0x1c4b00)['then'](function(_0x59a505){_0x540f39[_0x109e('0x22')]=_0x59a505;if(_0x547586[_0x109e('0x34')]['includeAll']){_0x13398e[_0x109e('0x44')]=[{'all':!![]}];}return db[_0x109e('0x2e')][_0x109e('0x45')](_0x13398e);})[_0x109e('0x28')](function(_0x4a4dac){_0x540f39[_0x109e('0x46')]=_0x4a4dac;return _0x540f39;})[_0x109e('0x28')](respondWithFilteredResult(_0x14dee3,_0x13398e))[_0x109e('0x47')](handleError(_0x14dee3,null));};exports[_0x109e('0x48')]=function(_0x18628a,_0x29107e){var _0x783c0e={'raw':!![],'where':{'id':_0x18628a[_0x109e('0x49')]['id']}},_0xdefa37={};_0xdefa37[_0x109e('0x32')]=_['keys'](db[_0x109e('0x2e')][_0x109e('0x2f')]);_0xdefa37[_0x109e('0x34')]=_['keys'](_0x18628a[_0x109e('0x34')]);_0xdefa37[_0x109e('0x36')]=_[_0x109e('0x37')](_0xdefa37[_0x109e('0x32')],_0xdefa37[_0x109e('0x34')]);_0x783c0e['attributes']=_[_0x109e('0x37')](_0xdefa37['model'],qs[_0x109e('0x4a')](_0x18628a[_0x109e('0x34')]['fields']));_0x783c0e[_0x109e('0x38')]=_0x783c0e['attributes']['length']?_0x783c0e['attributes']:_0xdefa37[_0x109e('0x32')];if(_0x18628a[_0x109e('0x34')][_0x109e('0x4b')]){_0x783c0e['include']=[{'all':!![]}];}_0x783c0e=_[_0x109e('0x42')]({},_0x783c0e,_0x18628a[_0x109e('0x43')]);return db[_0x109e('0x2e')][_0x109e('0x4c')](_0x783c0e)[_0x109e('0x28')](handleEntityNotFound(_0x29107e,null))[_0x109e('0x28')](respondWithResult(_0x29107e,null))['catch'](handleError(_0x29107e,null));};exports[_0x109e('0x4d')]=function(_0x626806,_0x25cbc4){return db[_0x109e('0x2e')][_0x109e('0x4d')](_0x626806['body'],{})[_0x109e('0x28')](respondWithResult(_0x25cbc4,0xc9))[_0x109e('0x47')](handleError(_0x25cbc4,null));};exports[_0x109e('0x27')]=function(_0x5a2083,_0xfe4cb5){if(_0x5a2083[_0x109e('0x4e')]['id']){delete _0x5a2083[_0x109e('0x4e')]['id'];}return db[_0x109e('0x2e')]['find']({'where':{'id':_0x5a2083[_0x109e('0x49')]['id']}})[_0x109e('0x28')](handleEntityNotFound(_0xfe4cb5,null))[_0x109e('0x28')](saveUpdates(_0x5a2083['body'],null))[_0x109e('0x28')](respondWithResult(_0xfe4cb5,null))[_0x109e('0x47')](handleError(_0xfe4cb5,null));};exports[_0x109e('0x4f')]=function(_0x1a8468,_0x142d0f){return db[_0x109e('0x2e')][_0x109e('0x4c')]({'where':{'id':_0x1a8468[_0x109e('0x49')]['id']}})['then'](handleEntityNotFound(_0x142d0f,null))['then'](removeEntity(_0x142d0f,null))['catch'](handleError(_0x142d0f,null));};
\ No newline at end of file
index 7e89282..443f7cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919c=['define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0x919c,0x1c7));var _0xc919=function(_0x18e602,_0x368f9a){_0x18e602=_0x18e602-0x0;var _0x866210=_0x919c[_0x18e602];return _0x866210;};'use strict';var _=require(_0xc919('0x0'));var util=require(_0xc919('0x1'));var logger=require(_0xc919('0x2'))(_0xc919('0x3'));var moment=require(_0xc919('0x4'));var BPromise=require('bluebird');var rp=require(_0xc919('0x5'));var fs=require('fs');var path=require(_0xc919('0x6'));var rimraf=require(_0xc919('0x7'));var config=require(_0xc919('0x8'));var attributes=require('./intServicenowField.attributes');module[_0xc919('0x9')]=function(_0x1873b1,_0x47dc4e){return _0x1873b1[_0xc919('0xa')](_0xc919('0xb'),attributes,{'tableName':_0xc919('0xc'),'paranoid':![],'indexes':[{'name':_0xc919('0xd'),'fields':[_0xc919('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb47b=['bluebird','request-promise','rimraf','./intServicenowField.attributes','exports','define','ServicenowField','idField','FieldId','../../config/logger','moment'];(function(_0x4c3c63,_0x54bddb){var _0x1aa184=function(_0x344641){while(--_0x344641){_0x4c3c63['push'](_0x4c3c63['shift']());}};_0x1aa184(++_0x54bddb);}(_0xb47b,0x1ed));var _0xbb47=function(_0xa854ff,_0x37c12b){_0xa854ff=_0xa854ff-0x0;var _0x2a9410=_0xb47b[_0xa854ff];return _0x2a9410;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbb47('0x0'))('api');var moment=require(_0xbb47('0x1'));var BPromise=require(_0xbb47('0x2'));var rp=require(_0xbb47('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbb47('0x4'));var config=require('../../config/environment');var attributes=require(_0xbb47('0x5'));module[_0xbb47('0x6')]=function(_0x24a358,_0xe6b80f){return _0x24a358[_0xbb47('0x7')](_0xbb47('0x8'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0xbb47('0x9'),_0xbb47('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 4558839..cc08459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x16a5ee,_0x45cbdd){var _0x1edd92=function(_0x45c36c){while(--_0x45c36c){_0x16a5ee['push'](_0x16a5ee['shift']());}};_0x1edd92(++_0x45cbdd);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2fee96,_0x2f735d){_0x2fee96=_0x2fee96-0x0;var _0x2e6ad1=_0xcb91[_0x2fee96];return _0x2e6ad1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('ServicenowField,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x5f584a,_0x47f064){var _0x3788d9=function(_0x29c10b){while(--_0x29c10b){_0x5f584a['push'](_0x5f584a['shift']());}};_0x3788d9(++_0x47f064);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}
\ No newline at end of file
index 88fbc65..a6de1ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x272014,_0x109cd4){var _0x22b5ab=function(_0x16059c){while(--_0x16059c){_0x272014['push'](_0x272014['shift']());}};_0x22b5ab(++_0x109cd4);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x442a05,_0x19b1a3){var _0x4f2de2=function(_0x56c2c4){while(--_0x56c2c4){_0x442a05['push'](_0x442a05['shift']());}};_0x4f2de2(++_0x19b1a3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 43d2dff..2b35d55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x4acf1,_0x38871b){var _0x50a8c3=function(_0x1851f8){while(--_0x1851f8){_0x4acf1['push'](_0x4acf1['shift']());}};_0x50a8c3(++_0x38871b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x568cd8,_0x194dbe){var _0x54e219=function(_0x55740a){while(--_0x55740a){_0x568cd8['push'](_0x568cd8['shift']());}};_0x54e219(++_0x194dbe);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
index cfb97c8..cf8e2dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2264=['create','body','getConfigurations','findOne','SugarcrmConfiguration','order','hasOwnProperty','addConfiguration','AccountId','Subjects','Descriptions','getFields','assigned_user_id','description','date_start','duration_hours','parent_id','parent_type','parent_name','direction','password','remoteUri','slice','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','username','PLAIN','Invalid\x20Login','Password\x20Expired','get_module_fields','values','module_fields','includes','endsWith','value','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','SugarcrmAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','offset','sort','where','pick','merge','map','filter','options','include','findAll','rows','show','params','rawAttributes','includeAll','find','catch'];(function(_0x48043a,_0x2b99c1){var _0x7d92d2=function(_0xe18174){while(--_0xe18174){_0x48043a['push'](_0x48043a['shift']());}};_0x7d92d2(++_0x2b99c1);}(_0x2264,0x188));var _0x4226=function(_0x31b95e,_0x1b1652){_0x31b95e=_0x31b95e-0x0;var _0x24d7e2=_0x2264[_0x31b95e];return _0x24d7e2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4226('0x0'));var zipdir=require(_0x4226('0x1'));var jsonpatch=require(_0x4226('0x2'));var rp=require(_0x4226('0x3'));var moment=require(_0x4226('0x4'));var BPromise=require(_0x4226('0x5'));var Mustache=require(_0x4226('0x6'));var util=require('util');var path=require(_0x4226('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4226('0x8'));var _=require(_0x4226('0x9'));var squel=require(_0x4226('0xa'));var crypto=require(_0x4226('0xb'));var jsforce=require(_0x4226('0xc'));var deskjs=require(_0x4226('0xd'));var toCsv=require(_0x4226('0xe'));var querystring=require(_0x4226('0xf'));var Papa=require(_0x4226('0x10'));var Redis=require(_0x4226('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4226('0x12'));var logger=require(_0x4226('0x13'))(_0x4226('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4226('0x15'))['db'];var integrations=require(_0x4226('0x16'));function respondWithStatusCode(_0x56f278,_0x12b880){_0x12b880=_0x12b880||0xcc;return function(_0x585f92){if(_0x585f92){return _0x56f278[_0x4226('0x17')](_0x12b880);}return _0x56f278[_0x4226('0x18')](_0x12b880)[_0x4226('0x19')]();};}function respondWithResult(_0x314b1a,_0x1c6030){_0x1c6030=_0x1c6030||0xc8;return function(_0x57b821){if(_0x57b821){return _0x314b1a[_0x4226('0x18')](_0x1c6030)[_0x4226('0x1a')](_0x57b821);}};}function respondWithFilteredResult(_0x450254,_0x56904e){return function(_0x245da8){if(_0x245da8){var _0x733a80=typeof _0x56904e['offset']===_0x4226('0x1b')&&typeof _0x56904e[_0x4226('0x1c')]===_0x4226('0x1b');var _0x32704a=_0x245da8[_0x4226('0x1d')];var _0x50d3c3=_0x733a80?0x0:_0x56904e['offset'];var _0x64e44c=_0x733a80?_0x245da8[_0x4226('0x1d')]:_0x56904e['offset']+_0x56904e[_0x4226('0x1c')];var _0x564408;if(_0x64e44c>=_0x32704a){_0x64e44c=_0x32704a;_0x564408=0xc8;}else{_0x564408=0xce;}_0x450254[_0x4226('0x18')](_0x564408);return _0x450254[_0x4226('0x1e')](_0x4226('0x1f'),_0x50d3c3+'-'+_0x64e44c+'/'+_0x32704a)[_0x4226('0x1a')](_0x245da8);}return null;};}function patchUpdates(_0x318560){return function(_0x31942a){try{jsonpatch[_0x4226('0x20')](_0x31942a,_0x318560,!![]);}catch(_0x15c161){return BPromise['reject'](_0x15c161);}return _0x31942a[_0x4226('0x21')]();};}function saveUpdates(_0x2667b6,_0x2e7bad){return function(_0x48024f){if(_0x48024f){return _0x48024f[_0x4226('0x22')](_0x2667b6)[_0x4226('0x23')](function(_0x379c77){return _0x379c77;});}return null;};}function removeEntity(_0x178048,_0x5bf0f9){return function(_0x2c7e99){if(_0x2c7e99){return _0x2c7e99[_0x4226('0x24')]()[_0x4226('0x23')](function(){_0x178048[_0x4226('0x18')](0xcc)[_0x4226('0x19')]();});}};}function handleEntityNotFound(_0x231d27,_0x197027){return function(_0x141a9d){if(!_0x141a9d){_0x231d27[_0x4226('0x17')](0x194);}return _0x141a9d;};}function handleError(_0x20d510,_0x1527ca){_0x1527ca=_0x1527ca||0x1f4;return function(_0x341c6a){logger[_0x4226('0x25')](_0x341c6a[_0x4226('0x26')]);if(_0x341c6a[_0x4226('0x27')]){delete _0x341c6a[_0x4226('0x27')];}_0x20d510[_0x4226('0x18')](_0x1527ca)[_0x4226('0x28')](_0x341c6a);};}exports[_0x4226('0x29')]=function(_0x72657c,_0x3385af){var _0x43cb21={},_0x4a887b={},_0x3517c8={'count':0x0,'rows':[]};var _0x2fe04d=_['map'](db[_0x4226('0x2a')]['rawAttributes'],function(_0x24fb8d){return{'name':_0x24fb8d[_0x4226('0x2b')],'type':_0x24fb8d[_0x4226('0x2c')][_0x4226('0x2d')]};});_0x4a887b[_0x4226('0x2e')]=_['map'](_0x2fe04d,_0x4226('0x27'));_0x4a887b[_0x4226('0x2f')]=_[_0x4226('0x30')](_0x72657c[_0x4226('0x2f')]);_0x4a887b[_0x4226('0x31')]=_[_0x4226('0x32')](_0x4a887b[_0x4226('0x2e')],_0x4a887b[_0x4226('0x2f')]);_0x43cb21[_0x4226('0x33')]=_['intersection'](_0x4a887b['model'],qs[_0x4226('0x34')](_0x72657c[_0x4226('0x2f')][_0x4226('0x34')]));_0x43cb21['attributes']=_0x43cb21['attributes'][_0x4226('0x35')]?_0x43cb21[_0x4226('0x33')]:_0x4a887b[_0x4226('0x2e')];if(!_0x72657c[_0x4226('0x2f')]['hasOwnProperty'](_0x4226('0x36'))){_0x43cb21['limit']=qs['limit'](_0x72657c[_0x4226('0x2f')][_0x4226('0x1c')]);_0x43cb21[_0x4226('0x37')]=qs[_0x4226('0x37')](_0x72657c[_0x4226('0x2f')]['offset']);}_0x43cb21['order']=qs[_0x4226('0x38')](_0x72657c[_0x4226('0x2f')]['sort']);_0x43cb21[_0x4226('0x39')]=qs[_0x4226('0x31')](_[_0x4226('0x3a')](_0x72657c[_0x4226('0x2f')],_0x4a887b[_0x4226('0x31')]),_0x2fe04d);if(_0x72657c[_0x4226('0x2f')]['filter']){_0x43cb21[_0x4226('0x39')]=_[_0x4226('0x3b')](_0x43cb21['where'],{'$or':_[_0x4226('0x3c')](_0x2fe04d,function(_0x4da6d3){if(_0x4da6d3[_0x4226('0x2c')]!=='VIRTUAL'){var _0x5aa95d={};_0x5aa95d[_0x4da6d3[_0x4226('0x27')]]={'$like':'%'+_0x72657c[_0x4226('0x2f')][_0x4226('0x3d')]+'%'};return _0x5aa95d;}})});}_0x43cb21=_[_0x4226('0x3b')]({},_0x43cb21,_0x72657c[_0x4226('0x3e')]);var _0x357e56={'where':_0x43cb21['where']};return db[_0x4226('0x2a')][_0x4226('0x1d')](_0x357e56)['then'](function(_0x348fa2){_0x3517c8['count']=_0x348fa2;if(_0x72657c[_0x4226('0x2f')]['includeAll']){_0x43cb21[_0x4226('0x3f')]=[{'all':!![]}];}return db[_0x4226('0x2a')][_0x4226('0x40')](_0x43cb21);})[_0x4226('0x23')](function(_0x941d75){_0x3517c8[_0x4226('0x41')]=_0x941d75;return _0x3517c8;})[_0x4226('0x23')](respondWithFilteredResult(_0x3385af,_0x43cb21))['catch'](handleError(_0x3385af,null));};exports[_0x4226('0x42')]=function(_0x416ac1,_0x1ba214){var _0x4a4e9a={'raw':![],'where':{'id':_0x416ac1[_0x4226('0x43')]['id']}},_0x4d94e9={};_0x4d94e9[_0x4226('0x2e')]=_[_0x4226('0x30')](db[_0x4226('0x2a')][_0x4226('0x44')]);_0x4d94e9[_0x4226('0x2f')]=_[_0x4226('0x30')](_0x416ac1[_0x4226('0x2f')]);_0x4d94e9['filters']=_[_0x4226('0x32')](_0x4d94e9['model'],_0x4d94e9[_0x4226('0x2f')]);_0x4a4e9a['attributes']=_[_0x4226('0x32')](_0x4d94e9['model'],qs['fields'](_0x416ac1[_0x4226('0x2f')][_0x4226('0x34')]));_0x4a4e9a[_0x4226('0x33')]=_0x4a4e9a[_0x4226('0x33')][_0x4226('0x35')]?_0x4a4e9a['attributes']:_0x4d94e9[_0x4226('0x2e')];if(_0x416ac1[_0x4226('0x2f')][_0x4226('0x45')]){_0x4a4e9a[_0x4226('0x3f')]=[{'all':!![]}];}_0x4a4e9a=_[_0x4226('0x3b')]({},_0x4a4e9a,_0x416ac1[_0x4226('0x3e')]);return db[_0x4226('0x2a')][_0x4226('0x46')](_0x4a4e9a)[_0x4226('0x23')](handleEntityNotFound(_0x1ba214,null))[_0x4226('0x23')](respondWithResult(_0x1ba214,null))[_0x4226('0x47')](handleError(_0x1ba214,null));};exports[_0x4226('0x48')]=function(_0x43357d,_0x2fe45b){return db[_0x4226('0x2a')]['create'](_0x43357d[_0x4226('0x49')],{})[_0x4226('0x23')](respondWithResult(_0x2fe45b,0xc9))[_0x4226('0x47')](handleError(_0x2fe45b,null));};exports[_0x4226('0x22')]=function(_0x25a1f5,_0x3202d4){if(_0x25a1f5[_0x4226('0x49')]['id']){delete _0x25a1f5['body']['id'];}return db['SugarcrmAccount'][_0x4226('0x46')]({'where':{'id':_0x25a1f5['params']['id']}})['then'](handleEntityNotFound(_0x3202d4,null))['then'](saveUpdates(_0x25a1f5[_0x4226('0x49')],null))[_0x4226('0x23')](respondWithResult(_0x3202d4,null))[_0x4226('0x47')](handleError(_0x3202d4,null));};exports[_0x4226('0x24')]=function(_0x426b22,_0x204b7a){return db[_0x4226('0x2a')][_0x4226('0x46')]({'where':{'id':_0x426b22[_0x4226('0x43')]['id']}})[_0x4226('0x23')](handleEntityNotFound(_0x204b7a,null))[_0x4226('0x23')](removeEntity(_0x204b7a,null))['catch'](handleError(_0x204b7a,null));};exports[_0x4226('0x4a')]=function(_0x5e6ec6,_0x173278,_0x7f17d5){var _0x4619cf={};var _0x36f417={};var _0xd7c3ae;var _0x3005de;return db[_0x4226('0x2a')][_0x4226('0x4b')]({'where':{'id':_0x5e6ec6['params']['id']}})[_0x4226('0x23')](handleEntityNotFound(_0x173278,null))['then'](function(_0x163623){if(_0x163623){_0xd7c3ae=_0x163623;_0x36f417[_0x4226('0x2e')]=_[_0x4226('0x30')](db[_0x4226('0x4c')][_0x4226('0x44')]);_0x36f417['query']=_[_0x4226('0x30')](_0x5e6ec6[_0x4226('0x2f')]);_0x36f417['filters']=_[_0x4226('0x32')](_0x36f417[_0x4226('0x2e')],_0x36f417[_0x4226('0x2f')]);_0x4619cf['attributes']=_[_0x4226('0x32')](_0x36f417['model'],qs['fields'](_0x5e6ec6[_0x4226('0x2f')][_0x4226('0x34')]));_0x4619cf[_0x4226('0x33')]=_0x4619cf['attributes'][_0x4226('0x35')]?_0x4619cf[_0x4226('0x33')]:_0x36f417[_0x4226('0x2e')];_0x4619cf[_0x4226('0x4d')]=qs[_0x4226('0x38')](_0x5e6ec6['query']['sort']);_0x4619cf[_0x4226('0x39')]=qs[_0x4226('0x31')](_[_0x4226('0x3a')](_0x5e6ec6[_0x4226('0x2f')],_0x36f417[_0x4226('0x31')]));if(_0x5e6ec6[_0x4226('0x2f')][_0x4226('0x3d')]){_0x4619cf[_0x4226('0x39')]=_[_0x4226('0x3b')](_0x4619cf['where'],{'$or':_['map'](_0x4619cf['attributes'],function(_0x261b39){var _0xe60ad5={};_0xe60ad5[_0x261b39]={'$like':'%'+_0x5e6ec6[_0x4226('0x2f')][_0x4226('0x3d')]+'%'};return _0xe60ad5;})});}_0x4619cf=_['merge']({},_0x4619cf,_0x5e6ec6[_0x4226('0x3e')]);return _0xd7c3ae[_0x4226('0x4a')](_0x4619cf);}})[_0x4226('0x23')](function(_0x29f539){if(_0x29f539){_0x3005de=_0x29f539[_0x4226('0x35')];if(!_0x5e6ec6['query'][_0x4226('0x4e')](_0x4226('0x36'))){_0x4619cf[_0x4226('0x1c')]=qs[_0x4226('0x1c')](_0x5e6ec6[_0x4226('0x2f')][_0x4226('0x1c')]);_0x4619cf[_0x4226('0x37')]=qs[_0x4226('0x37')](_0x5e6ec6[_0x4226('0x2f')][_0x4226('0x37')]);}return _0xd7c3ae[_0x4226('0x4a')](_0x4619cf);}})['then'](function(_0x30364e){if(_0x30364e){return _0x30364e?{'count':_0x3005de,'rows':_0x30364e}:null;}})[_0x4226('0x23')](respondWithResult(_0x173278,null))[_0x4226('0x47')](handleError(_0x173278,null));};exports[_0x4226('0x4f')]=function(_0x554188,_0x1c20b4,_0x12ae94){if(_0x554188[_0x4226('0x49')]['id']){delete _0x554188['body']['id'];}return db[_0x4226('0x2a')][_0x4226('0x4b')]({'where':{'id':_0x554188[_0x4226('0x43')]['id']}})['then'](handleEntityNotFound(_0x1c20b4,null))['then'](function(_0x2c3a9b){if(_0x2c3a9b){_0x554188[_0x4226('0x49')][_0x4226('0x50')]=_0x2c3a9b['id'];_0x554188[_0x4226('0x49')][_0x4226('0x51')]=integrations['getSubjects'](_0x554188['body']['channel'],_0x554188[_0x4226('0x49')][_0x4226('0x2c')]);_0x554188['body'][_0x4226('0x52')]=integrations['getDescriptions'](_0x554188[_0x4226('0x49')]['channel'],_0x554188[_0x4226('0x49')][_0x4226('0x2c')]);return db['SugarcrmConfiguration'][_0x4226('0x48')](_0x554188[_0x4226('0x49')],{'include':[{'model':db['SugarcrmField'],'as':'Subjects'},{'model':db['SugarcrmField'],'as':_0x4226('0x52')}]});}return null;})[_0x4226('0x23')](respondWithResult(_0x1c20b4,null))[_0x4226('0x47')](handleError(_0x1c20b4,null));};exports[_0x4226('0x53')]=function(_0x2dc02c,_0xb8e975,_0x4bf91a){var _0x41fb14='';var _0x5bd3ab=['id',_0x4226('0x27'),_0x4226('0x54'),'created_by',_0x4226('0x55'),_0x4226('0x56'),_0x4226('0x57'),'duration_minutes',_0x4226('0x58'),_0x4226('0x59'),_0x4226('0x5a'),_0x4226('0x5b')];return db[_0x4226('0x2a')][_0x4226('0x4b')]({'where':{'id':_0x2dc02c[_0x4226('0x43')]['id']},'attributes':['id','username',_0x4226('0x5c'),_0x4226('0x5d')]})[_0x4226('0x23')](handleEntityNotFound(_0xb8e975,null))[_0x4226('0x23')](function(_0x3c2a50){if(_0x3c2a50){_0x41fb14=_0x3c2a50[_0x4226('0x5d')];var _0x6bd9a1=_0x41fb14[_0x4226('0x5e')](-0x1);if(_0x6bd9a1==='/'){_0x41fb14=_0x41fb14['substring'](0x0,_0x41fb14[_0x4226('0x5f')](_0x6bd9a1));}return rp({'method':_0x4226('0x60'),'uri':util[_0x4226('0x61')](_0x4226('0x62'),_0x41fb14,_0x4226('0x63')),'json':!![],'form':{'method':_0x4226('0x64'),'input_type':_0x4226('0x65'),'response_type':'JSON','rest_data':JSON[_0x4226('0x66')]({'user_auth':{'user_name':_0x3c2a50[_0x4226('0x67')],'password':_0x3c2a50[_0x4226('0x5c')],'encryption':_0x4226('0x68')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0x4226('0x23')](function(_0x31311a){if(_0x31311a&&_0x31311a['name']!==_0x4226('0x69')&&_0x31311a[_0x4226('0x27')]!==_0x4226('0x6a')){return rp({'method':_0x4226('0x60'),'uri':util[_0x4226('0x61')](_0x4226('0x62'),_0x41fb14,_0x4226('0x63')),'json':!![],'form':{'method':_0x4226('0x6b'),'input_type':_0x4226('0x65'),'response_type':_0x4226('0x65'),'rest_data':JSON[_0x4226('0x66')]({'session':_0x31311a['id'],'module_name':'Calls'})}})[_0x4226('0x23')](function(_0x2674bb){if(_0x2674bb){var _0x34a6cc=_[_0x4226('0x6c')](_0x2674bb[_0x4226('0x6d')]);_['remove'](_0x34a6cc,function(_0x5a2186){return _0x5bd3ab[_0x4226('0x6e')](_0x5a2186[_0x4226('0x27')]);});return{'count':_0x34a6cc[_0x4226('0x35')],'rows':_['map'](_0x34a6cc,function(_0x3868ad){return{'id':_0x3868ad[_0x4226('0x27')],'name':_0x3868ad['label'],'custom':_[_0x4226('0x6f')](_0x3868ad['name'],'_c')?!![]:![],'options':_0x3868ad['options']?_[_0x4226('0x3c')](_['values'](_0x3868ad['options']),function(_0xad77f8){return{'name':_0xad77f8[_0x4226('0x70')],'value':_0xad77f8[_0x4226('0x27')]};}):[]};})};}})['then'](respondWithResult(_0xb8e975,null))[_0x4226('0x47')](function(_0x39cf27){var _0x57bf8e=_0x2dc02c[_0x4226('0x2f')]['test']?0x1f4:_0x39cf27[_0x4226('0x71')]||0x1f4;logger[_0x4226('0x25')](_0x4226('0x72'),_0x4226('0x53'),_0x57bf8e,JSON['stringify'](_0x39cf27));delete _0x39cf27[_0x4226('0x27')];if(_0x57bf8e===0x191){_0x57bf8e=0x190;}_0xb8e975[_0x4226('0x18')](_0x57bf8e)[_0x4226('0x28')](_0x2dc02c[_0x4226('0x2f')]['test']?{'message':_0x4226('0x73'),'statusCode':_0x39cf27[_0x4226('0x71')]}:_0x39cf27);});}else{var _0x21dd45=0x1f4;_0xb8e975[_0x4226('0x18')](_0x21dd45)[_0x4226('0x28')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0xab1e=['format','/service/v4_1/rest.php','login','JSON','username','PLAIN','xCALLY\x20Motion\x20Integration','Password\x20Expired','%s%s','get_module_fields','stringify','values','module_fields','remove','includes','label','endsWith','value','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','map','SugarcrmAccount','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','include','show','params','rawAttributes','includeAll','options','find','catch','create','body','getConfigurations','findOne','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmConfiguration','SugarcrmField','getFields','created_by','date_start','duration_minutes','parent_id','parent_type','direction','password','remoteUri','slice','substring','POST'];(function(_0x593941,_0x54b080){var _0x292692=function(_0x9eaf6c){while(--_0x9eaf6c){_0x593941['push'](_0x593941['shift']());}};_0x292692(++_0x54b080);}(_0xab1e,0x17b));var _0xeab1=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xab1e[_0x47aa64];return _0x549c7a;};'use strict';var emlformat=require(_0xeab1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xeab1('0x1'));var moment=require(_0xeab1('0x2'));var BPromise=require(_0xeab1('0x3'));var Mustache=require(_0xeab1('0x4'));var util=require('util');var path=require(_0xeab1('0x5'));var sox=require(_0xeab1('0x6'));var csv=require(_0xeab1('0x7'));var ejs=require(_0xeab1('0x8'));var fs=require('fs');var fs_extra=require(_0xeab1('0x9'));var _=require(_0xeab1('0xa'));var squel=require('squel');var crypto=require(_0xeab1('0xb'));var jsforce=require(_0xeab1('0xc'));var deskjs=require(_0xeab1('0xd'));var toCsv=require(_0xeab1('0x7'));var querystring=require('querystring');var Papa=require(_0xeab1('0xe'));var Redis=require(_0xeab1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xeab1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeab1('0x11'));var logger=require(_0xeab1('0x12'))(_0xeab1('0x13'));var utils=require('../../config/utils');var config=require(_0xeab1('0x14'));var licenseUtil=require(_0xeab1('0x15'));var db=require(_0xeab1('0x16'))['db'];var integrations=require(_0xeab1('0x17'));function respondWithStatusCode(_0x4e3846,_0x8beadc){_0x8beadc=_0x8beadc||0xcc;return function(_0x4cc1f9){if(_0x4cc1f9){return _0x4e3846[_0xeab1('0x18')](_0x8beadc);}return _0x4e3846[_0xeab1('0x19')](_0x8beadc)[_0xeab1('0x1a')]();};}function respondWithResult(_0xb2520b,_0x49ecbe){_0x49ecbe=_0x49ecbe||0xc8;return function(_0x578813){if(_0x578813){return _0xb2520b[_0xeab1('0x19')](_0x49ecbe)[_0xeab1('0x1b')](_0x578813);}};}function respondWithFilteredResult(_0x4bf374,_0x1a1951){return function(_0x406e98){if(_0x406e98){var _0x46cbae=typeof _0x1a1951['offset']===_0xeab1('0x1c')&&typeof _0x1a1951['limit']===_0xeab1('0x1c');var _0xb66273=_0x406e98[_0xeab1('0x1d')];var _0x5d73e9=_0x46cbae?0x0:_0x1a1951['offset'];var _0x444a84=_0x46cbae?_0x406e98[_0xeab1('0x1d')]:_0x1a1951[_0xeab1('0x1e')]+_0x1a1951[_0xeab1('0x1f')];var _0x5f1eb5;if(_0x444a84>=_0xb66273){_0x444a84=_0xb66273;_0x5f1eb5=0xc8;}else{_0x5f1eb5=0xce;}_0x4bf374[_0xeab1('0x19')](_0x5f1eb5);return _0x4bf374[_0xeab1('0x20')](_0xeab1('0x21'),_0x5d73e9+'-'+_0x444a84+'/'+_0xb66273)[_0xeab1('0x1b')](_0x406e98);}return null;};}function patchUpdates(_0x14cabb){return function(_0xc0081f){try{jsonpatch[_0xeab1('0x22')](_0xc0081f,_0x14cabb,!![]);}catch(_0x554c2f){return BPromise[_0xeab1('0x23')](_0x554c2f);}return _0xc0081f['save']();};}function saveUpdates(_0x269441,_0x58b8b9){return function(_0x1a2216){if(_0x1a2216){return _0x1a2216['update'](_0x269441)[_0xeab1('0x24')](function(_0x206a70){return _0x206a70;});}return null;};}function removeEntity(_0x1fcba2,_0x156d5b){return function(_0x4d0978){if(_0x4d0978){return _0x4d0978[_0xeab1('0x25')]()[_0xeab1('0x24')](function(){_0x1fcba2[_0xeab1('0x19')](0xcc)[_0xeab1('0x1a')]();});}};}function handleEntityNotFound(_0xa36706,_0x56131d){return function(_0xd2c137){if(!_0xd2c137){_0xa36706[_0xeab1('0x18')](0x194);}return _0xd2c137;};}function handleError(_0x46f0a2,_0x4cf617){_0x4cf617=_0x4cf617||0x1f4;return function(_0x476700){logger[_0xeab1('0x26')](_0x476700[_0xeab1('0x27')]);if(_0x476700[_0xeab1('0x28')]){delete _0x476700[_0xeab1('0x28')];}_0x46f0a2[_0xeab1('0x19')](_0x4cf617)[_0xeab1('0x29')](_0x476700);};}exports[_0xeab1('0x2a')]=function(_0x52954c,_0x1069fa){var _0x155ccc={},_0x41938f={},_0x34178f={'count':0x0,'rows':[]};var _0x301ab9=_[_0xeab1('0x2b')](db[_0xeab1('0x2c')]['rawAttributes'],function(_0x32cd85){return{'name':_0x32cd85[_0xeab1('0x2d')],'type':_0x32cd85[_0xeab1('0x2e')][_0xeab1('0x2f')]};});_0x41938f['model']=_[_0xeab1('0x2b')](_0x301ab9,_0xeab1('0x28'));_0x41938f[_0xeab1('0x30')]=_[_0xeab1('0x31')](_0x52954c['query']);_0x41938f[_0xeab1('0x32')]=_['intersection'](_0x41938f[_0xeab1('0x33')],_0x41938f['query']);_0x155ccc[_0xeab1('0x34')]=_[_0xeab1('0x35')](_0x41938f['model'],qs[_0xeab1('0x36')](_0x52954c[_0xeab1('0x30')]['fields']));_0x155ccc[_0xeab1('0x34')]=_0x155ccc['attributes'][_0xeab1('0x37')]?_0x155ccc['attributes']:_0x41938f[_0xeab1('0x33')];if(!_0x52954c[_0xeab1('0x30')][_0xeab1('0x38')](_0xeab1('0x39'))){_0x155ccc['limit']=qs[_0xeab1('0x1f')](_0x52954c[_0xeab1('0x30')]['limit']);_0x155ccc[_0xeab1('0x1e')]=qs[_0xeab1('0x1e')](_0x52954c['query'][_0xeab1('0x1e')]);}_0x155ccc['order']=qs[_0xeab1('0x3a')](_0x52954c['query'][_0xeab1('0x3a')]);_0x155ccc[_0xeab1('0x3b')]=qs['filters'](_['pick'](_0x52954c[_0xeab1('0x30')],_0x41938f[_0xeab1('0x32')]),_0x301ab9);if(_0x52954c[_0xeab1('0x30')][_0xeab1('0x3c')]){_0x155ccc[_0xeab1('0x3b')]=_[_0xeab1('0x3d')](_0x155ccc[_0xeab1('0x3b')],{'$or':_[_0xeab1('0x2b')](_0x301ab9,function(_0x4ad412){if(_0x4ad412[_0xeab1('0x2e')]!==_0xeab1('0x3e')){var _0x4c015a={};_0x4c015a[_0x4ad412['name']]={'$like':'%'+_0x52954c[_0xeab1('0x30')][_0xeab1('0x3c')]+'%'};return _0x4c015a;}})});}_0x155ccc=_[_0xeab1('0x3d')]({},_0x155ccc,_0x52954c['options']);var _0x5cc268={'where':_0x155ccc[_0xeab1('0x3b')]};return db[_0xeab1('0x2c')][_0xeab1('0x1d')](_0x5cc268)[_0xeab1('0x24')](function(_0x603fa3){_0x34178f[_0xeab1('0x1d')]=_0x603fa3;if(_0x52954c['query']['includeAll']){_0x155ccc[_0xeab1('0x3f')]=[{'all':!![]}];}return db[_0xeab1('0x2c')]['findAll'](_0x155ccc);})[_0xeab1('0x24')](function(_0x286f23){_0x34178f['rows']=_0x286f23;return _0x34178f;})[_0xeab1('0x24')](respondWithFilteredResult(_0x1069fa,_0x155ccc))['catch'](handleError(_0x1069fa,null));};exports[_0xeab1('0x40')]=function(_0x31c604,_0x1bbf73){var _0x221b63={'raw':![],'where':{'id':_0x31c604[_0xeab1('0x41')]['id']}},_0x5700e8={};_0x5700e8[_0xeab1('0x33')]=_['keys'](db[_0xeab1('0x2c')][_0xeab1('0x42')]);_0x5700e8[_0xeab1('0x30')]=_[_0xeab1('0x31')](_0x31c604[_0xeab1('0x30')]);_0x5700e8[_0xeab1('0x32')]=_[_0xeab1('0x35')](_0x5700e8[_0xeab1('0x33')],_0x5700e8[_0xeab1('0x30')]);_0x221b63['attributes']=_[_0xeab1('0x35')](_0x5700e8['model'],qs[_0xeab1('0x36')](_0x31c604[_0xeab1('0x30')][_0xeab1('0x36')]));_0x221b63[_0xeab1('0x34')]=_0x221b63[_0xeab1('0x34')]['length']?_0x221b63[_0xeab1('0x34')]:_0x5700e8['model'];if(_0x31c604['query'][_0xeab1('0x43')]){_0x221b63[_0xeab1('0x3f')]=[{'all':!![]}];}_0x221b63=_[_0xeab1('0x3d')]({},_0x221b63,_0x31c604[_0xeab1('0x44')]);return db[_0xeab1('0x2c')][_0xeab1('0x45')](_0x221b63)[_0xeab1('0x24')](handleEntityNotFound(_0x1bbf73,null))[_0xeab1('0x24')](respondWithResult(_0x1bbf73,null))[_0xeab1('0x46')](handleError(_0x1bbf73,null));};exports[_0xeab1('0x47')]=function(_0x3f8224,_0x242d51){return db['SugarcrmAccount'][_0xeab1('0x47')](_0x3f8224[_0xeab1('0x48')],{})[_0xeab1('0x24')](respondWithResult(_0x242d51,0xc9))[_0xeab1('0x46')](handleError(_0x242d51,null));};exports['update']=function(_0x3d0961,_0x32dfc9){if(_0x3d0961[_0xeab1('0x48')]['id']){delete _0x3d0961[_0xeab1('0x48')]['id'];}return db[_0xeab1('0x2c')][_0xeab1('0x45')]({'where':{'id':_0x3d0961[_0xeab1('0x41')]['id']}})['then'](handleEntityNotFound(_0x32dfc9,null))[_0xeab1('0x24')](saveUpdates(_0x3d0961[_0xeab1('0x48')],null))[_0xeab1('0x24')](respondWithResult(_0x32dfc9,null))['catch'](handleError(_0x32dfc9,null));};exports[_0xeab1('0x25')]=function(_0x442f1f,_0x2831e2){return db[_0xeab1('0x2c')][_0xeab1('0x45')]({'where':{'id':_0x442f1f['params']['id']}})[_0xeab1('0x24')](handleEntityNotFound(_0x2831e2,null))['then'](removeEntity(_0x2831e2,null))[_0xeab1('0x46')](handleError(_0x2831e2,null));};exports[_0xeab1('0x49')]=function(_0x26768d,_0x495f99,_0x390c05){var _0x4ceaa9={};var _0x1ad02e={};var _0x3f9927;var _0x2f6f73;return db['SugarcrmAccount'][_0xeab1('0x4a')]({'where':{'id':_0x26768d[_0xeab1('0x41')]['id']}})[_0xeab1('0x24')](handleEntityNotFound(_0x495f99,null))[_0xeab1('0x24')](function(_0x37f353){if(_0x37f353){_0x3f9927=_0x37f353;_0x1ad02e[_0xeab1('0x33')]=_[_0xeab1('0x31')](db['SugarcrmConfiguration'][_0xeab1('0x42')]);_0x1ad02e[_0xeab1('0x30')]=_['keys'](_0x26768d[_0xeab1('0x30')]);_0x1ad02e[_0xeab1('0x32')]=_['intersection'](_0x1ad02e[_0xeab1('0x33')],_0x1ad02e[_0xeab1('0x30')]);_0x4ceaa9[_0xeab1('0x34')]=_[_0xeab1('0x35')](_0x1ad02e[_0xeab1('0x33')],qs[_0xeab1('0x36')](_0x26768d[_0xeab1('0x30')][_0xeab1('0x36')]));_0x4ceaa9[_0xeab1('0x34')]=_0x4ceaa9['attributes'][_0xeab1('0x37')]?_0x4ceaa9[_0xeab1('0x34')]:_0x1ad02e['model'];_0x4ceaa9['order']=qs[_0xeab1('0x3a')](_0x26768d[_0xeab1('0x30')][_0xeab1('0x3a')]);_0x4ceaa9[_0xeab1('0x3b')]=qs[_0xeab1('0x32')](_[_0xeab1('0x4b')](_0x26768d[_0xeab1('0x30')],_0x1ad02e['filters']));if(_0x26768d[_0xeab1('0x30')][_0xeab1('0x3c')]){_0x4ceaa9[_0xeab1('0x3b')]=_[_0xeab1('0x3d')](_0x4ceaa9[_0xeab1('0x3b')],{'$or':_['map'](_0x4ceaa9[_0xeab1('0x34')],function(_0x3f0b3b){var _0x5ae581={};_0x5ae581[_0x3f0b3b]={'$like':'%'+_0x26768d[_0xeab1('0x30')][_0xeab1('0x3c')]+'%'};return _0x5ae581;})});}_0x4ceaa9=_[_0xeab1('0x3d')]({},_0x4ceaa9,_0x26768d[_0xeab1('0x44')]);return _0x3f9927['getConfigurations'](_0x4ceaa9);}})['then'](function(_0x499fed){if(_0x499fed){_0x2f6f73=_0x499fed[_0xeab1('0x37')];if(!_0x26768d[_0xeab1('0x30')][_0xeab1('0x38')](_0xeab1('0x39'))){_0x4ceaa9[_0xeab1('0x1f')]=qs[_0xeab1('0x1f')](_0x26768d[_0xeab1('0x30')][_0xeab1('0x1f')]);_0x4ceaa9['offset']=qs[_0xeab1('0x1e')](_0x26768d[_0xeab1('0x30')]['offset']);}return _0x3f9927['getConfigurations'](_0x4ceaa9);}})[_0xeab1('0x24')](function(_0x2db897){if(_0x2db897){return _0x2db897?{'count':_0x2f6f73,'rows':_0x2db897}:null;}})['then'](respondWithResult(_0x495f99,null))[_0xeab1('0x46')](handleError(_0x495f99,null));};exports[_0xeab1('0x4c')]=function(_0x918b9d,_0x4af0d1,_0x21840b){if(_0x918b9d[_0xeab1('0x48')]['id']){delete _0x918b9d[_0xeab1('0x48')]['id'];}return db[_0xeab1('0x2c')][_0xeab1('0x4a')]({'where':{'id':_0x918b9d[_0xeab1('0x41')]['id']}})[_0xeab1('0x24')](handleEntityNotFound(_0x4af0d1,null))[_0xeab1('0x24')](function(_0x1dc2a0){if(_0x1dc2a0){_0x918b9d['body'][_0xeab1('0x4d')]=_0x1dc2a0['id'];_0x918b9d[_0xeab1('0x48')][_0xeab1('0x4e')]=integrations[_0xeab1('0x4f')](_0x918b9d[_0xeab1('0x48')][_0xeab1('0x50')],_0x918b9d[_0xeab1('0x48')][_0xeab1('0x2e')]);_0x918b9d[_0xeab1('0x48')][_0xeab1('0x51')]=integrations[_0xeab1('0x52')](_0x918b9d['body'][_0xeab1('0x50')],_0x918b9d[_0xeab1('0x48')][_0xeab1('0x2e')]);return db[_0xeab1('0x53')][_0xeab1('0x47')](_0x918b9d['body'],{'include':[{'model':db[_0xeab1('0x54')],'as':_0xeab1('0x4e')},{'model':db[_0xeab1('0x54')],'as':_0xeab1('0x51')}]});}return null;})['then'](respondWithResult(_0x4af0d1,null))[_0xeab1('0x46')](handleError(_0x4af0d1,null));};exports[_0xeab1('0x55')]=function(_0x1a6cf9,_0x4f7f8d,_0x211864){var _0x488665='';var _0x57776c=['id','name','assigned_user_id',_0xeab1('0x56'),'description',_0xeab1('0x57'),'duration_hours',_0xeab1('0x58'),_0xeab1('0x59'),_0xeab1('0x5a'),'parent_name',_0xeab1('0x5b')];return db[_0xeab1('0x2c')][_0xeab1('0x4a')]({'where':{'id':_0x1a6cf9[_0xeab1('0x41')]['id']},'attributes':['id','username',_0xeab1('0x5c'),_0xeab1('0x5d')]})[_0xeab1('0x24')](handleEntityNotFound(_0x4f7f8d,null))[_0xeab1('0x24')](function(_0x16a802){if(_0x16a802){_0x488665=_0x16a802[_0xeab1('0x5d')];var _0x44c916=_0x488665[_0xeab1('0x5e')](-0x1);if(_0x44c916==='/'){_0x488665=_0x488665[_0xeab1('0x5f')](0x0,_0x488665['lastIndexOf'](_0x44c916));}return rp({'method':_0xeab1('0x60'),'uri':util[_0xeab1('0x61')]('%s%s',_0x488665,_0xeab1('0x62')),'json':!![],'form':{'method':_0xeab1('0x63'),'input_type':_0xeab1('0x64'),'response_type':_0xeab1('0x64'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x16a802[_0xeab1('0x65')],'password':_0x16a802[_0xeab1('0x5c')],'encryption':_0xeab1('0x66')},'application':_0xeab1('0x67')})}});}})[_0xeab1('0x24')](function(_0x47b181){if(_0x47b181&&_0x47b181[_0xeab1('0x28')]!=='Invalid\x20Login'&&_0x47b181[_0xeab1('0x28')]!==_0xeab1('0x68')){return rp({'method':_0xeab1('0x60'),'uri':util[_0xeab1('0x61')](_0xeab1('0x69'),_0x488665,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xeab1('0x6a'),'input_type':_0xeab1('0x64'),'response_type':_0xeab1('0x64'),'rest_data':JSON[_0xeab1('0x6b')]({'session':_0x47b181['id'],'module_name':'Calls'})}})['then'](function(_0x168557){if(_0x168557){var _0x52d0d4=_[_0xeab1('0x6c')](_0x168557[_0xeab1('0x6d')]);_[_0xeab1('0x6e')](_0x52d0d4,function(_0xc37fd3){return _0x57776c[_0xeab1('0x6f')](_0xc37fd3['name']);});return{'count':_0x52d0d4[_0xeab1('0x37')],'rows':_[_0xeab1('0x2b')](_0x52d0d4,function(_0x3a76b4){return{'id':_0x3a76b4[_0xeab1('0x28')],'name':_0x3a76b4[_0xeab1('0x70')],'custom':_[_0xeab1('0x71')](_0x3a76b4[_0xeab1('0x28')],'_c')?!![]:![],'options':_0x3a76b4[_0xeab1('0x44')]?_[_0xeab1('0x2b')](_[_0xeab1('0x6c')](_0x3a76b4[_0xeab1('0x44')]),function(_0x1d52a8){return{'name':_0x1d52a8[_0xeab1('0x72')],'value':_0x1d52a8[_0xeab1('0x28')]};}):[]};})};}})[_0xeab1('0x24')](respondWithResult(_0x4f7f8d,null))[_0xeab1('0x46')](function(_0xa7b91b){var _0x106f0c=_0x1a6cf9[_0xeab1('0x30')]['test']?0x1f4:_0xa7b91b[_0xeab1('0x73')]||0x1f4;logger['error'](_0xeab1('0x74'),_0xeab1('0x55'),_0x106f0c,JSON[_0xeab1('0x6b')](_0xa7b91b));delete _0xa7b91b[_0xeab1('0x28')];if(_0x106f0c===0x191){_0x106f0c=0x190;}_0x4f7f8d['status'](_0x106f0c)['send'](_0x1a6cf9['query'][_0xeab1('0x75')]?{'message':_0xeab1('0x76'),'statusCode':_0xa7b91b[_0xeab1('0x73')]}:_0xa7b91b);});}else{var _0x340786=0x1f4;_0x4f7f8d[_0xeab1('0x19')](_0x340786)[_0xeab1('0x29')]({'message':_0xeab1('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
index b27fdc4..ae0fa49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd2c=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','SugarcrmAccount','lodash'];(function(_0x11bc9e,_0x251d62){var _0x226e2b=function(_0x5be635){while(--_0x5be635){_0x11bc9e['push'](_0x11bc9e['shift']());}};_0x226e2b(++_0x251d62);}(_0xbd2c,0x173));var _0xcbd2=function(_0x221875,_0x36553e){_0x221875=_0x221875-0x0;var _0x43aeb0=_0xbd2c[_0x221875];return _0x43aeb0;};'use strict';var _=require(_0xcbd2('0x0'));var util=require(_0xcbd2('0x1'));var logger=require(_0xcbd2('0x2'))('api');var moment=require(_0xcbd2('0x3'));var BPromise=require(_0xcbd2('0x4'));var rp=require(_0xcbd2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcbd2('0x6'));var config=require(_0xcbd2('0x7'));var attributes=require(_0xcbd2('0x8'));var integrations=require(_0xcbd2('0x9'));module[_0xcbd2('0xa')]=function(_0x4e94cb,_0x4f4d62){return _0x4e94cb['define'](_0xcbd2('0xb'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2700=['define','SugarcrmAccount','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x39593b,_0x2b9239){var _0x5c4409=function(_0x6addd){while(--_0x6addd){_0x39593b['push'](_0x39593b['shift']());}};_0x5c4409(++_0x2b9239);}(_0x2700,0xc0));var _0x0270=function(_0x32da04,_0x255b7b){_0x32da04=_0x32da04-0x0;var _0x468bac=_0x2700[_0x32da04];return _0x468bac;};'use strict';var _=require(_0x0270('0x0'));var util=require(_0x0270('0x1'));var logger=require('../../config/logger')(_0x0270('0x2'));var moment=require(_0x0270('0x3'));var BPromise=require(_0x0270('0x4'));var rp=require(_0x0270('0x5'));var fs=require('fs');var path=require(_0x0270('0x6'));var rimraf=require('rimraf');var config=require(_0x0270('0x7'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x3404cf,_0xfd990){return _0x3404cf[_0x0270('0x8')](_0x0270('0x9'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0554ff1..99f67ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c8f=['stringify','error','code','message','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','attributes','limit','include','map','model','catch','ShowSugarcrmAccount','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s'];(function(_0x26394d,_0x547eea){var _0x5c7861=function(_0x252805){while(--_0x252805){_0x26394d['push'](_0x26394d['shift']());}};_0x5c7861(++_0x547eea);}(_0x8c8f,0x185));var _0xf8c8=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0x8c8f[_0x45783c];return _0x1161da;};'use strict';var _=require('lodash');var util=require(_0xf8c8('0x0'));var moment=require(_0xf8c8('0x1'));var BPromise=require('bluebird');var rs=require(_0xf8c8('0x2'));var fs=require('fs');var Redis=require(_0xf8c8('0x3'));var db=require(_0xf8c8('0x4'))['db'];var utils=require(_0xf8c8('0x5'));var logger=require(_0xf8c8('0x6'))(_0xf8c8('0x7'));var config=require('../../config/environment');var jayson=require(_0xf8c8('0x8'));var client=jayson[_0xf8c8('0x9')][_0xf8c8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x560c73,_0x2f9418,_0x7b5abc){return new BPromise(function(_0x4ddfb9,_0x2356c0){return client[_0xf8c8('0xb')](_0x560c73,_0x7b5abc)[_0xf8c8('0xc')](function(_0x423857){logger[_0xf8c8('0xd')](_0xf8c8('0xe'),_0x2f9418,_0xf8c8('0xf'));logger[_0xf8c8('0x10')](_0xf8c8('0x11'),_0x2f9418,_0xf8c8('0xf'),JSON[_0xf8c8('0x12')](_0x423857));if(_0x423857[_0xf8c8('0x13')]){if(_0x423857[_0xf8c8('0x13')][_0xf8c8('0x14')]===0x1f4){logger[_0xf8c8('0x13')](_0xf8c8('0xe'),_0x2f9418,_0x423857[_0xf8c8('0x13')][_0xf8c8('0x15')]);return _0x2356c0(_0x423857[_0xf8c8('0x13')][_0xf8c8('0x15')]);}logger['error'](_0xf8c8('0xe'),_0x2f9418,_0x423857[_0xf8c8('0x13')][_0xf8c8('0x15')]);return _0x4ddfb9(_0x423857[_0xf8c8('0x13')][_0xf8c8('0x15')]);}else{logger['info'](_0xf8c8('0xe'),_0x2f9418,'request\x20sent');_0x4ddfb9(_0x423857[_0xf8c8('0x16')][_0xf8c8('0x15')]);}})['catch'](function(_0x2f2630){logger[_0xf8c8('0x13')](_0xf8c8('0xe'),_0x2f9418,_0x2f2630);_0x2356c0(_0x2f2630);});});}exports[_0xf8c8('0x17')]=function(_0x51d18d){var _0x4ebee8=this;return new Promise(function(_0x479e87,_0x7d0743){return db[_0xf8c8('0x18')][_0xf8c8('0x19')]({'raw':_0x51d18d[_0xf8c8('0x1a')]?_0x51d18d[_0xf8c8('0x1a')][_0xf8c8('0x1b')]===undefined?!![]:![]:!![],'where':_0x51d18d[_0xf8c8('0x1a')]?_0x51d18d[_0xf8c8('0x1a')][_0xf8c8('0x1c')]||null:null,'attributes':_0x51d18d[_0xf8c8('0x1a')]?_0x51d18d[_0xf8c8('0x1a')][_0xf8c8('0x1d')]||null:null,'limit':_0x51d18d[_0xf8c8('0x1a')]?_0x51d18d['options'][_0xf8c8('0x1e')]||null:null,'include':_0x51d18d[_0xf8c8('0x1a')]?_0x51d18d[_0xf8c8('0x1a')][_0xf8c8('0x1f')]?_[_0xf8c8('0x20')](_0x51d18d[_0xf8c8('0x1a')][_0xf8c8('0x1f')],function(_0x309ffa){return{'model':db[_0x309ffa['model']],'as':_0x309ffa['as'],'attributes':_0x309ffa[_0xf8c8('0x1d')],'include':_0x309ffa[_0xf8c8('0x1f')]?_[_0xf8c8('0x20')](_0x309ffa[_0xf8c8('0x1f')],function(_0x142552){return{'model':db[_0x142552[_0xf8c8('0x21')]],'as':_0x142552['as'],'attributes':_0x142552[_0xf8c8('0x1d')],'include':_0x142552[_0xf8c8('0x1f')]?_[_0xf8c8('0x20')](_0x142552[_0xf8c8('0x1f')],function(_0x8bc0e2){return{'model':db[_0x8bc0e2[_0xf8c8('0x21')]],'as':_0x8bc0e2['as'],'attributes':_0x8bc0e2['attributes']};}):[]};}):[]};}):[]:[]})[_0xf8c8('0xc')](function(_0x5f6c21){logger[_0xf8c8('0xd')]('GetSugarcrmAccount',_0x51d18d);logger[_0xf8c8('0x10')](_0xf8c8('0x17'),_0x51d18d,JSON['stringify'](_0x5f6c21));_0x479e87(_0x5f6c21);})[_0xf8c8('0x22')](function(_0x27e0c2){logger['error'](_0xf8c8('0x17'),_0x27e0c2['message'],_0x51d18d);_0x7d0743(_0x4ebee8[_0xf8c8('0x13')](0x1f4,_0x27e0c2['message']));});});};exports[_0xf8c8('0x23')]=function(_0x320d9c){var _0x1b4acd=this;return new Promise(function(_0x110d86,_0x910990){return db[_0xf8c8('0x18')][_0xf8c8('0x24')]({'raw':_0x320d9c['options']?_0x320d9c[_0xf8c8('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x320d9c['options']?_0x320d9c[_0xf8c8('0x1a')][_0xf8c8('0x1c')]||null:null,'attributes':_0x320d9c[_0xf8c8('0x1a')]?_0x320d9c[_0xf8c8('0x1a')][_0xf8c8('0x1d')]||null:null,'include':_0x320d9c[_0xf8c8('0x1a')]?_0x320d9c[_0xf8c8('0x1a')]['include']?_['map'](_0x320d9c[_0xf8c8('0x1a')][_0xf8c8('0x1f')],function(_0x5a69e6){return{'model':db[_0x5a69e6[_0xf8c8('0x21')]],'as':_0x5a69e6['as'],'attributes':_0x5a69e6[_0xf8c8('0x1d')],'include':_0x5a69e6['include']?_[_0xf8c8('0x20')](_0x5a69e6['include'],function(_0x39334c){return{'model':db[_0x39334c['model']],'as':_0x39334c['as'],'attributes':_0x39334c[_0xf8c8('0x1d')],'include':_0x39334c[_0xf8c8('0x1f')]?_[_0xf8c8('0x20')](_0x39334c['include'],function(_0x49c98b){return{'model':db[_0x49c98b[_0xf8c8('0x21')]],'as':_0x49c98b['as'],'attributes':_0x49c98b[_0xf8c8('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf8c8('0xc')](function(_0x140c53){logger['info'](_0xf8c8('0x23'),_0x320d9c);logger[_0xf8c8('0x10')](_0xf8c8('0x23'),_0x320d9c,JSON[_0xf8c8('0x12')](_0x140c53));_0x110d86(_0x140c53);})[_0xf8c8('0x22')](function(_0x21f740){logger['error'](_0xf8c8('0x23'),_0x21f740[_0xf8c8('0x15')],_0x320d9c);_0x910990(_0x1b4acd[_0xf8c8('0x13')](0x1f4,_0x21f740[_0xf8c8('0x15')]));});});};
\ No newline at end of file
+var _0xed98=['SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','ShowSugarcrmAccount','find','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info'];(function(_0x1b967b,_0x184b01){var _0x269299=function(_0x53bb93){while(--_0x53bb93){_0x1b967b['push'](_0x1b967b['shift']());}};_0x269299(++_0x184b01);}(_0xed98,0x1af));var _0x8ed9=function(_0x150a05,_0x202df2){_0x150a05=_0x150a05-0x0;var _0x670fd3=_0xed98[_0x150a05];return _0x670fd3;};'use strict';var _=require(_0x8ed9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8ed9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8ed9('0x2'));var db=require(_0x8ed9('0x3'))['db'];var utils=require(_0x8ed9('0x4'));var logger=require(_0x8ed9('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8ed9('0x6'));var client=jayson[_0x8ed9('0x7')][_0x8ed9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xb1d13f,_0x44bbc9,_0x30df80){return new BPromise(function(_0x23f66d,_0x3c5323){return client[_0x8ed9('0x9')](_0xb1d13f,_0x30df80)['then'](function(_0x1d9809){logger[_0x8ed9('0xa')](_0x8ed9('0xb'),_0x44bbc9,_0x8ed9('0xc'));logger[_0x8ed9('0xd')](_0x8ed9('0xe'),_0x44bbc9,'request\x20sent',JSON[_0x8ed9('0xf')](_0x1d9809));if(_0x1d9809['error']){if(_0x1d9809['error'][_0x8ed9('0x10')]===0x1f4){logger[_0x8ed9('0x11')](_0x8ed9('0xb'),_0x44bbc9,_0x1d9809[_0x8ed9('0x11')][_0x8ed9('0x12')]);return _0x3c5323(_0x1d9809['error'][_0x8ed9('0x12')]);}logger[_0x8ed9('0x11')](_0x8ed9('0xb'),_0x44bbc9,_0x1d9809[_0x8ed9('0x11')][_0x8ed9('0x12')]);return _0x23f66d(_0x1d9809[_0x8ed9('0x11')][_0x8ed9('0x12')]);}else{logger[_0x8ed9('0xa')](_0x8ed9('0xb'),_0x44bbc9,'request\x20sent');_0x23f66d(_0x1d9809['result']['message']);}})[_0x8ed9('0x13')](function(_0x2fcf64){logger[_0x8ed9('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x44bbc9,_0x2fcf64);_0x3c5323(_0x2fcf64);});});}exports[_0x8ed9('0x14')]=function(_0x5d4f8c){var _0x19a796=this;return new Promise(function(_0x55fa27,_0xdc43d6){return db[_0x8ed9('0x15')][_0x8ed9('0x16')]({'raw':_0x5d4f8c[_0x8ed9('0x17')]?_0x5d4f8c['options'][_0x8ed9('0x18')]===undefined?!![]:![]:!![],'where':_0x5d4f8c['options']?_0x5d4f8c[_0x8ed9('0x17')][_0x8ed9('0x19')]||null:null,'attributes':_0x5d4f8c[_0x8ed9('0x17')]?_0x5d4f8c[_0x8ed9('0x17')][_0x8ed9('0x1a')]||null:null,'limit':_0x5d4f8c[_0x8ed9('0x17')]?_0x5d4f8c[_0x8ed9('0x17')][_0x8ed9('0x1b')]||null:null,'include':_0x5d4f8c[_0x8ed9('0x17')]?_0x5d4f8c[_0x8ed9('0x17')]['include']?_[_0x8ed9('0x1c')](_0x5d4f8c[_0x8ed9('0x17')][_0x8ed9('0x1d')],function(_0x537096){return{'model':db[_0x537096[_0x8ed9('0x1e')]],'as':_0x537096['as'],'attributes':_0x537096[_0x8ed9('0x1a')],'include':_0x537096[_0x8ed9('0x1d')]?_[_0x8ed9('0x1c')](_0x537096[_0x8ed9('0x1d')],function(_0x67158d){return{'model':db[_0x67158d[_0x8ed9('0x1e')]],'as':_0x67158d['as'],'attributes':_0x67158d[_0x8ed9('0x1a')],'include':_0x67158d[_0x8ed9('0x1d')]?_[_0x8ed9('0x1c')](_0x67158d[_0x8ed9('0x1d')],function(_0x10bea8){return{'model':db[_0x10bea8['model']],'as':_0x10bea8['as'],'attributes':_0x10bea8[_0x8ed9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8ed9('0x1f')](function(_0x3c737b){logger[_0x8ed9('0xa')](_0x8ed9('0x14'),_0x5d4f8c);logger[_0x8ed9('0xd')](_0x8ed9('0x14'),_0x5d4f8c,JSON[_0x8ed9('0xf')](_0x3c737b));_0x55fa27(_0x3c737b);})['catch'](function(_0x184a66){logger[_0x8ed9('0x11')](_0x8ed9('0x14'),_0x184a66['message'],_0x5d4f8c);_0xdc43d6(_0x19a796[_0x8ed9('0x11')](0x1f4,_0x184a66[_0x8ed9('0x12')]));});});};exports[_0x8ed9('0x20')]=function(_0x5005f8){var _0x5189d5=this;return new Promise(function(_0x80d854,_0x10f6da){return db[_0x8ed9('0x15')][_0x8ed9('0x21')]({'raw':_0x5005f8[_0x8ed9('0x17')]?_0x5005f8[_0x8ed9('0x17')][_0x8ed9('0x18')]===undefined?!![]:![]:!![],'where':_0x5005f8[_0x8ed9('0x17')]?_0x5005f8[_0x8ed9('0x17')][_0x8ed9('0x19')]||null:null,'attributes':_0x5005f8[_0x8ed9('0x17')]?_0x5005f8['options'][_0x8ed9('0x1a')]||null:null,'include':_0x5005f8[_0x8ed9('0x17')]?_0x5005f8[_0x8ed9('0x17')][_0x8ed9('0x1d')]?_[_0x8ed9('0x1c')](_0x5005f8[_0x8ed9('0x17')][_0x8ed9('0x1d')],function(_0x54cf00){return{'model':db[_0x54cf00[_0x8ed9('0x1e')]],'as':_0x54cf00['as'],'attributes':_0x54cf00[_0x8ed9('0x1a')],'include':_0x54cf00[_0x8ed9('0x1d')]?_[_0x8ed9('0x1c')](_0x54cf00[_0x8ed9('0x1d')],function(_0x394bf9){return{'model':db[_0x394bf9['model']],'as':_0x394bf9['as'],'attributes':_0x394bf9['attributes'],'include':_0x394bf9[_0x8ed9('0x1d')]?_[_0x8ed9('0x1c')](_0x394bf9[_0x8ed9('0x1d')],function(_0xfb339e){return{'model':db[_0xfb339e[_0x8ed9('0x1e')]],'as':_0xfb339e['as'],'attributes':_0xfb339e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c4f36){logger[_0x8ed9('0xa')](_0x8ed9('0x20'),_0x5005f8);logger[_0x8ed9('0xd')](_0x8ed9('0x20'),_0x5005f8,JSON['stringify'](_0x3c4f36));_0x80d854(_0x3c4f36);})[_0x8ed9('0x13')](function(_0x54bc3f){logger[_0x8ed9('0x11')]('ShowSugarcrmAccount',_0x54bc3f[_0x8ed9('0x12')],_0x5005f8);_0x10f6da(_0x5189d5[_0x8ed9('0x11')](0x1f4,_0x54bc3f[_0x8ed9('0x12')]));});});};
\ No newline at end of file
index 78a9b5b..0346533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90a4=['update','delete','destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x90a4,0x18f));var _0x490a=function(_0x3dcbfe,_0x2758fd){_0x3dcbfe=_0x3dcbfe-0x0;var _0x28b601=_0x90a4[_0x3dcbfe];return _0x28b601;};'use strict';var multer=require('multer');var util=require(_0x490a('0x0'));var path=require('path');var timeout=require(_0x490a('0x1'));var express=require(_0x490a('0x2'));var router=express[_0x490a('0x3')]();var fs_extra=require(_0x490a('0x4'));var auth=require(_0x490a('0x5'));var interaction=require(_0x490a('0x6'));var config=require('../../config/environment');var controller=require('./intSugarcrmConfiguration.controller');router[_0x490a('0x7')]('/',auth[_0x490a('0x8')](),controller[_0x490a('0x9')]);router['get'](_0x490a('0xa'),auth[_0x490a('0x8')](),controller[_0x490a('0xb')]);router['get']('/:id/fields',auth[_0x490a('0x8')](),controller[_0x490a('0xc')]);router[_0x490a('0x7')](_0x490a('0xd'),auth[_0x490a('0x8')](),controller[_0x490a('0xe')]);router[_0x490a('0x7')]('/:id/descriptions',auth[_0x490a('0x8')](),controller[_0x490a('0xf')]);router[_0x490a('0x10')]('/',auth[_0x490a('0x8')](),controller[_0x490a('0x11')]);router[_0x490a('0x12')](_0x490a('0xa'),auth[_0x490a('0x8')](),controller[_0x490a('0x13')]);router[_0x490a('0x14')]('/:id',auth[_0x490a('0x8')](),controller[_0x490a('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xc36d=['./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x55fe37,_0x2c8597){var _0x11e0ae=function(_0x39e114){while(--_0x39e114){_0x55fe37['push'](_0x55fe37['shift']());}};_0x11e0ae(++_0x2c8597);}(_0xc36d,0x125));var _0xdc36=function(_0x8afdd0,_0x548ad1){_0x8afdd0=_0x8afdd0-0x0;var _0x3de7ac=_0xc36d[_0x8afdd0];return _0x3de7ac;};'use strict';var multer=require(_0xdc36('0x0'));var util=require(_0xdc36('0x1'));var path=require('path');var timeout=require(_0xdc36('0x2'));var express=require(_0xdc36('0x3'));var router=express[_0xdc36('0x4')]();var fs_extra=require(_0xdc36('0x5'));var auth=require(_0xdc36('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdc36('0x7'));router[_0xdc36('0x8')]('/',auth[_0xdc36('0x9')](),controller[_0xdc36('0xa')]);router['get'](_0xdc36('0xb'),auth[_0xdc36('0x9')](),controller[_0xdc36('0xc')]);router[_0xdc36('0x8')](_0xdc36('0xd'),auth['isAuthenticated'](),controller[_0xdc36('0xe')]);router[_0xdc36('0x8')](_0xdc36('0xf'),auth[_0xdc36('0x9')](),controller[_0xdc36('0x10')]);router[_0xdc36('0x8')](_0xdc36('0x11'),auth[_0xdc36('0x9')](),controller[_0xdc36('0x12')]);router[_0xdc36('0x13')]('/',auth[_0xdc36('0x9')](),controller[_0xdc36('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xdc36('0x15')]);router[_0xdc36('0x16')](_0xdc36('0xb'),auth[_0xdc36('0x9')](),controller[_0xdc36('0x17')]);module[_0xdc36('0x18')]=router;
\ No newline at end of file
index a88a98f..f7ee6a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d8a=['exports','STRING','sequelize'];(function(_0x7538c5,_0xa5d8ac){var _0x8b56be=function(_0x2036c0){while(--_0x2036c0){_0x7538c5['push'](_0x7538c5['shift']());}};_0x8b56be(++_0xa5d8ac);}(_0x3d8a,0x1b5));var _0xa3d8=function(_0x396079,_0x40590b){_0x396079=_0x396079-0x0;var _0xf99c64=_0x3d8a[_0x396079];return _0xf99c64;};'use strict';var Sequelize=require(_0xa3d8('0x0'));module[_0xa3d8('0x1')]={'name':{'type':Sequelize[_0xa3d8('0x2')]},'description':{'type':Sequelize[_0xa3d8('0x2')]}};
\ No newline at end of file
+var _0x0a24=['sequelize','exports','STRING'];(function(_0x3bc9eb,_0x5a73f5){var _0x80d1a2=function(_0x1ebf2f){while(--_0x1ebf2f){_0x3bc9eb['push'](_0x3bc9eb['shift']());}};_0x80d1a2(++_0x5a73f5);}(_0x0a24,0x1c2));var _0x40a2=function(_0x148aa9,_0x421ae3){_0x148aa9=_0x148aa9-0x0;var _0x530a22=_0x0a24[_0x148aa9];return _0x530a22;};'use strict';var Sequelize=require(_0x40a2('0x0'));module[_0x40a2('0x1')]={'name':{'type':Sequelize[_0x40a2('0x2')]},'description':{'type':Sequelize[_0x40a2('0x2')]}};
\ No newline at end of file
index 53feee7..e0c5ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xded1=['create','body','getFields','findOne','SugarcrmField','order','getSubjects','nolimit','getDescriptions','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','end','stack','name','send','index','SugarcrmConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','pick','filter','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch'];(function(_0x11efa2,_0x5895b7){var _0x56a4e5=function(_0x2d303c){while(--_0x2d303c){_0x11efa2['push'](_0x11efa2['shift']());}};_0x56a4e5(++_0x5895b7);}(_0xded1,0x159));var _0x1ded=function(_0x1e55d9,_0x5ce14a){_0x1e55d9=_0x1e55d9-0x0;var _0x6dc799=_0xded1[_0x1e55d9];return _0x6dc799;};'use strict';var emlformat=require(_0x1ded('0x0'));var rimraf=require(_0x1ded('0x1'));var zipdir=require(_0x1ded('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1ded('0x3'));var BPromise=require(_0x1ded('0x4'));var Mustache=require(_0x1ded('0x5'));var util=require(_0x1ded('0x6'));var path=require(_0x1ded('0x7'));var sox=require(_0x1ded('0x8'));var csv=require(_0x1ded('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1ded('0xa'));var _=require('lodash');var squel=require(_0x1ded('0xb'));var crypto=require(_0x1ded('0xc'));var jsforce=require(_0x1ded('0xd'));var deskjs=require(_0x1ded('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1ded('0xf'));var Redis=require(_0x1ded('0x10'));var authService=require(_0x1ded('0x11'));var qs=require(_0x1ded('0x12'));var as=require(_0x1ded('0x13'));var hardwareService=require(_0x1ded('0x14'));var logger=require(_0x1ded('0x15'))(_0x1ded('0x16'));var utils=require('../../config/utils');var config=require(_0x1ded('0x17'));var licenseUtil=require(_0x1ded('0x18'));var db=require(_0x1ded('0x19'))['db'];function respondWithStatusCode(_0x3989f8,_0x4e5f01){_0x4e5f01=_0x4e5f01||0xcc;return function(_0x41601b){if(_0x41601b){return _0x3989f8[_0x1ded('0x1a')](_0x4e5f01);}return _0x3989f8[_0x1ded('0x1b')](_0x4e5f01)['end']();};}function respondWithResult(_0x210825,_0x266803){_0x266803=_0x266803||0xc8;return function(_0x34a2e3){if(_0x34a2e3){return _0x210825[_0x1ded('0x1b')](_0x266803)[_0x1ded('0x1c')](_0x34a2e3);}};}function respondWithFilteredResult(_0x1d1db5,_0x3f4579){return function(_0x115ec6){if(_0x115ec6){var _0x376942=typeof _0x3f4579[_0x1ded('0x1d')]==='undefined'&&typeof _0x3f4579['limit']===_0x1ded('0x1e');var _0x1aa22f=_0x115ec6[_0x1ded('0x1f')];var _0x43cef8=_0x376942?0x0:_0x3f4579[_0x1ded('0x1d')];var _0x1014c3=_0x376942?_0x115ec6[_0x1ded('0x1f')]:_0x3f4579[_0x1ded('0x1d')]+_0x3f4579['limit'];var _0x244295;if(_0x1014c3>=_0x1aa22f){_0x1014c3=_0x1aa22f;_0x244295=0xc8;}else{_0x244295=0xce;}_0x1d1db5[_0x1ded('0x1b')](_0x244295);return _0x1d1db5[_0x1ded('0x20')](_0x1ded('0x21'),_0x43cef8+'-'+_0x1014c3+'/'+_0x1aa22f)[_0x1ded('0x1c')](_0x115ec6);}return null;};}function patchUpdates(_0x16219e){return function(_0x475e76){try{jsonpatch[_0x1ded('0x22')](_0x475e76,_0x16219e,!![]);}catch(_0x36e811){return BPromise['reject'](_0x36e811);}return _0x475e76[_0x1ded('0x23')]();};}function saveUpdates(_0x3fa40f,_0x4ac4d8){return function(_0x19248a){if(_0x19248a){return _0x19248a[_0x1ded('0x24')](_0x3fa40f)[_0x1ded('0x25')](function(_0x57dc19){return _0x57dc19;});}return null;};}function removeEntity(_0x4d61eb,_0x2345a5){return function(_0xc33dd7){if(_0xc33dd7){return _0xc33dd7[_0x1ded('0x26')]()[_0x1ded('0x25')](function(){_0x4d61eb[_0x1ded('0x1b')](0xcc)[_0x1ded('0x27')]();});}};}function handleEntityNotFound(_0xaf3625,_0x304a7b){return function(_0x1c145c){if(!_0x1c145c){_0xaf3625['sendStatus'](0x194);}return _0x1c145c;};}function handleError(_0x4363c9,_0x4afe6d){_0x4afe6d=_0x4afe6d||0x1f4;return function(_0x31065e){logger['error'](_0x31065e[_0x1ded('0x28')]);if(_0x31065e['name']){delete _0x31065e[_0x1ded('0x29')];}_0x4363c9['status'](_0x4afe6d)[_0x1ded('0x2a')](_0x31065e);};}exports[_0x1ded('0x2b')]=function(_0x3474b6,_0x5daae1){var _0x27a2f7={},_0xef9382={},_0x23d333={'count':0x0,'rows':[]};var _0x36a695=_['map'](db[_0x1ded('0x2c')][_0x1ded('0x2d')],function(_0x563b04){return{'name':_0x563b04[_0x1ded('0x2e')],'type':_0x563b04['type'][_0x1ded('0x2f')]};});_0xef9382[_0x1ded('0x30')]=_['map'](_0x36a695,_0x1ded('0x29'));_0xef9382[_0x1ded('0x31')]=_[_0x1ded('0x32')](_0x3474b6[_0x1ded('0x31')]);_0xef9382[_0x1ded('0x33')]=_[_0x1ded('0x34')](_0xef9382[_0x1ded('0x30')],_0xef9382['query']);_0x27a2f7[_0x1ded('0x35')]=_[_0x1ded('0x34')](_0xef9382[_0x1ded('0x30')],qs[_0x1ded('0x36')](_0x3474b6[_0x1ded('0x31')][_0x1ded('0x36')]));_0x27a2f7[_0x1ded('0x35')]=_0x27a2f7[_0x1ded('0x35')][_0x1ded('0x37')]?_0x27a2f7[_0x1ded('0x35')]:_0xef9382['model'];if(!_0x3474b6[_0x1ded('0x31')][_0x1ded('0x38')]('nolimit')){_0x27a2f7['limit']=qs[_0x1ded('0x39')](_0x3474b6['query'][_0x1ded('0x39')]);_0x27a2f7[_0x1ded('0x1d')]=qs[_0x1ded('0x1d')](_0x3474b6[_0x1ded('0x31')][_0x1ded('0x1d')]);}_0x27a2f7['order']=qs['sort'](_0x3474b6[_0x1ded('0x31')][_0x1ded('0x3a')]);_0x27a2f7[_0x1ded('0x3b')]=qs['filters'](_[_0x1ded('0x3c')](_0x3474b6[_0x1ded('0x31')],_0xef9382[_0x1ded('0x33')]),_0x36a695);if(_0x3474b6[_0x1ded('0x31')][_0x1ded('0x3d')]){_0x27a2f7[_0x1ded('0x3b')]=_[_0x1ded('0x3e')](_0x27a2f7[_0x1ded('0x3b')],{'$or':_[_0x1ded('0x3f')](_0x36a695,function(_0x9fdc8b){if(_0x9fdc8b[_0x1ded('0x40')]!==_0x1ded('0x41')){var _0x2aca6a={};_0x2aca6a[_0x9fdc8b[_0x1ded('0x29')]]={'$like':'%'+_0x3474b6[_0x1ded('0x31')][_0x1ded('0x3d')]+'%'};return _0x2aca6a;}})});}_0x27a2f7=_['merge']({},_0x27a2f7,_0x3474b6[_0x1ded('0x42')]);var _0x5f5c23={'where':_0x27a2f7[_0x1ded('0x3b')]};return db[_0x1ded('0x2c')][_0x1ded('0x1f')](_0x5f5c23)[_0x1ded('0x25')](function(_0x5286ed){_0x23d333[_0x1ded('0x1f')]=_0x5286ed;if(_0x3474b6[_0x1ded('0x31')][_0x1ded('0x43')]){_0x27a2f7[_0x1ded('0x44')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x1ded('0x45')](_0x27a2f7);})['then'](function(_0x50a003){_0x23d333[_0x1ded('0x46')]=_0x50a003;return _0x23d333;})[_0x1ded('0x25')](respondWithFilteredResult(_0x5daae1,_0x27a2f7))['catch'](handleError(_0x5daae1,null));};exports[_0x1ded('0x47')]=function(_0x3ba5aa,_0x5be8d6){var _0x4c9e9a={'raw':![],'where':{'id':_0x3ba5aa[_0x1ded('0x48')]['id']}},_0x4e1548={};_0x4e1548['model']=_[_0x1ded('0x32')](db[_0x1ded('0x2c')][_0x1ded('0x2d')]);_0x4e1548[_0x1ded('0x31')]=_['keys'](_0x3ba5aa['query']);_0x4e1548[_0x1ded('0x33')]=_[_0x1ded('0x34')](_0x4e1548[_0x1ded('0x30')],_0x4e1548[_0x1ded('0x31')]);_0x4c9e9a['attributes']=_['intersection'](_0x4e1548[_0x1ded('0x30')],qs[_0x1ded('0x36')](_0x3ba5aa[_0x1ded('0x31')][_0x1ded('0x36')]));_0x4c9e9a['attributes']=_0x4c9e9a['attributes'][_0x1ded('0x37')]?_0x4c9e9a[_0x1ded('0x35')]:_0x4e1548[_0x1ded('0x30')];if(_0x3ba5aa[_0x1ded('0x31')][_0x1ded('0x43')]){_0x4c9e9a['include']=[{'all':!![]}];}_0x4c9e9a=_[_0x1ded('0x3e')]({},_0x4c9e9a,_0x3ba5aa[_0x1ded('0x42')]);return db['SugarcrmConfiguration'][_0x1ded('0x49')](_0x4c9e9a)['then'](handleEntityNotFound(_0x5be8d6,null))[_0x1ded('0x25')](respondWithResult(_0x5be8d6,null))[_0x1ded('0x4a')](handleError(_0x5be8d6,null));};exports[_0x1ded('0x4b')]=function(_0x5d6066,_0x63df69){return db['SugarcrmConfiguration'][_0x1ded('0x4b')](_0x5d6066['body'],{})[_0x1ded('0x25')](respondWithResult(_0x63df69,0xc9))[_0x1ded('0x4a')](handleError(_0x63df69,null));};exports['update']=function(_0x2639f8,_0x139de5){if(_0x2639f8[_0x1ded('0x4c')]['id']){delete _0x2639f8[_0x1ded('0x4c')]['id'];}return db[_0x1ded('0x2c')][_0x1ded('0x49')]({'where':{'id':_0x2639f8[_0x1ded('0x48')]['id']}})[_0x1ded('0x25')](handleEntityNotFound(_0x139de5,null))[_0x1ded('0x25')](saveUpdates(_0x2639f8[_0x1ded('0x4c')],null))[_0x1ded('0x25')](respondWithResult(_0x139de5,null))[_0x1ded('0x4a')](handleError(_0x139de5,null));};exports['destroy']=function(_0x57f7c7,_0x1d96b5){return db[_0x1ded('0x2c')][_0x1ded('0x49')]({'where':{'id':_0x57f7c7['params']['id']}})[_0x1ded('0x25')](handleEntityNotFound(_0x1d96b5,null))[_0x1ded('0x25')](removeEntity(_0x1d96b5,null))[_0x1ded('0x4a')](handleError(_0x1d96b5,null));};exports[_0x1ded('0x4d')]=function(_0x1a2b50,_0x4d5f8c,_0x305d01){var _0x48463c={};var _0x405cd0={};var _0x29953a;var _0x33296f;return db[_0x1ded('0x2c')][_0x1ded('0x4e')]({'where':{'id':_0x1a2b50[_0x1ded('0x48')]['id']}})[_0x1ded('0x25')](handleEntityNotFound(_0x4d5f8c,null))[_0x1ded('0x25')](function(_0x47a919){if(_0x47a919){_0x29953a=_0x47a919;_0x405cd0[_0x1ded('0x30')]=_[_0x1ded('0x32')](db[_0x1ded('0x4f')][_0x1ded('0x2d')]);_0x405cd0[_0x1ded('0x31')]=_['keys'](_0x1a2b50[_0x1ded('0x31')]);_0x405cd0['filters']=_[_0x1ded('0x34')](_0x405cd0['model'],_0x405cd0[_0x1ded('0x31')]);_0x48463c[_0x1ded('0x35')]=_[_0x1ded('0x34')](_0x405cd0[_0x1ded('0x30')],qs[_0x1ded('0x36')](_0x1a2b50[_0x1ded('0x31')][_0x1ded('0x36')]));_0x48463c[_0x1ded('0x35')]=_0x48463c[_0x1ded('0x35')][_0x1ded('0x37')]?_0x48463c[_0x1ded('0x35')]:_0x405cd0[_0x1ded('0x30')];_0x48463c[_0x1ded('0x50')]=qs[_0x1ded('0x3a')](_0x1a2b50['query']['sort']);_0x48463c['where']=qs['filters'](_[_0x1ded('0x3c')](_0x1a2b50[_0x1ded('0x31')],_0x405cd0['filters']));if(_0x1a2b50[_0x1ded('0x31')][_0x1ded('0x3d')]){_0x48463c[_0x1ded('0x3b')]=_[_0x1ded('0x3e')](_0x48463c[_0x1ded('0x3b')],{'$or':_[_0x1ded('0x3f')](_0x48463c[_0x1ded('0x35')],function(_0x2cd688){var _0x2ec5b0={};_0x2ec5b0[_0x2cd688]={'$like':'%'+_0x1a2b50[_0x1ded('0x31')][_0x1ded('0x3d')]+'%'};return _0x2ec5b0;})});}_0x48463c=_[_0x1ded('0x3e')]({},_0x48463c,_0x1a2b50[_0x1ded('0x42')]);return _0x29953a['getFields'](_0x48463c);}})[_0x1ded('0x25')](function(_0x162936){if(_0x162936){_0x33296f=_0x162936['length'];if(!_0x1a2b50[_0x1ded('0x31')][_0x1ded('0x38')]('nolimit')){_0x48463c[_0x1ded('0x39')]=qs['limit'](_0x1a2b50['query'][_0x1ded('0x39')]);_0x48463c[_0x1ded('0x1d')]=qs[_0x1ded('0x1d')](_0x1a2b50[_0x1ded('0x31')][_0x1ded('0x1d')]);}return _0x29953a['getFields'](_0x48463c);}})[_0x1ded('0x25')](function(_0x182737){if(_0x182737){return _0x182737?{'count':_0x33296f,'rows':_0x182737}:null;}})[_0x1ded('0x25')](respondWithResult(_0x4d5f8c,null))[_0x1ded('0x4a')](handleError(_0x4d5f8c,null));};exports[_0x1ded('0x51')]=function(_0x224478,_0x370f73,_0x32c624){var _0x21a12={};var _0x19f59c={};var _0xd264eb;var _0x4371d4;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x224478[_0x1ded('0x48')]['id']}})[_0x1ded('0x25')](handleEntityNotFound(_0x370f73,null))[_0x1ded('0x25')](function(_0x49fcc0){if(_0x49fcc0){_0xd264eb=_0x49fcc0;_0x19f59c['model']=_[_0x1ded('0x32')](db['SugarcrmField']['rawAttributes']);_0x19f59c[_0x1ded('0x31')]=_['keys'](_0x224478[_0x1ded('0x31')]);_0x19f59c[_0x1ded('0x33')]=_[_0x1ded('0x34')](_0x19f59c[_0x1ded('0x30')],_0x19f59c[_0x1ded('0x31')]);_0x21a12['attributes']=_['intersection'](_0x19f59c[_0x1ded('0x30')],qs[_0x1ded('0x36')](_0x224478[_0x1ded('0x31')][_0x1ded('0x36')]));_0x21a12['attributes']=_0x21a12[_0x1ded('0x35')][_0x1ded('0x37')]?_0x21a12[_0x1ded('0x35')]:_0x19f59c[_0x1ded('0x30')];_0x21a12[_0x1ded('0x50')]=qs['sort'](_0x224478[_0x1ded('0x31')][_0x1ded('0x3a')]);_0x21a12['where']=qs['filters'](_['pick'](_0x224478[_0x1ded('0x31')],_0x19f59c[_0x1ded('0x33')]));if(_0x224478['query'][_0x1ded('0x3d')]){_0x21a12['where']=_[_0x1ded('0x3e')](_0x21a12['where'],{'$or':_[_0x1ded('0x3f')](_0x21a12[_0x1ded('0x35')],function(_0x4acfa4){var _0x2c9917={};_0x2c9917[_0x4acfa4]={'$like':'%'+_0x224478[_0x1ded('0x31')]['filter']+'%'};return _0x2c9917;})});}_0x21a12=_[_0x1ded('0x3e')]({},_0x21a12,_0x224478[_0x1ded('0x42')]);return _0xd264eb['getSubjects'](_0x21a12);}})[_0x1ded('0x25')](function(_0x304300){if(_0x304300){_0x4371d4=_0x304300[_0x1ded('0x37')];if(!_0x224478[_0x1ded('0x31')][_0x1ded('0x38')](_0x1ded('0x52'))){_0x21a12[_0x1ded('0x39')]=qs[_0x1ded('0x39')](_0x224478['query'][_0x1ded('0x39')]);_0x21a12[_0x1ded('0x1d')]=qs[_0x1ded('0x1d')](_0x224478[_0x1ded('0x31')]['offset']);}return _0xd264eb['getSubjects'](_0x21a12);}})[_0x1ded('0x25')](function(_0x5f28ae){if(_0x5f28ae){return _0x5f28ae?{'count':_0x4371d4,'rows':_0x5f28ae}:null;}})[_0x1ded('0x25')](respondWithResult(_0x370f73,null))[_0x1ded('0x4a')](handleError(_0x370f73,null));};exports['getDescriptions']=function(_0x2696a8,_0xc03b6f,_0x18e70a){var _0x3977db={};var _0x31f05b={};var _0x2443de;var _0x59a12d;return db['SugarcrmConfiguration'][_0x1ded('0x4e')]({'where':{'id':_0x2696a8['params']['id']}})['then'](handleEntityNotFound(_0xc03b6f,null))[_0x1ded('0x25')](function(_0x705cb2){if(_0x705cb2){_0x2443de=_0x705cb2;_0x31f05b[_0x1ded('0x30')]=_[_0x1ded('0x32')](db[_0x1ded('0x4f')][_0x1ded('0x2d')]);_0x31f05b[_0x1ded('0x31')]=_['keys'](_0x2696a8[_0x1ded('0x31')]);_0x31f05b[_0x1ded('0x33')]=_[_0x1ded('0x34')](_0x31f05b[_0x1ded('0x30')],_0x31f05b['query']);_0x3977db[_0x1ded('0x35')]=_[_0x1ded('0x34')](_0x31f05b['model'],qs[_0x1ded('0x36')](_0x2696a8[_0x1ded('0x31')][_0x1ded('0x36')]));_0x3977db[_0x1ded('0x35')]=_0x3977db[_0x1ded('0x35')][_0x1ded('0x37')]?_0x3977db[_0x1ded('0x35')]:_0x31f05b[_0x1ded('0x30')];_0x3977db[_0x1ded('0x50')]=qs[_0x1ded('0x3a')](_0x2696a8['query']['sort']);_0x3977db[_0x1ded('0x3b')]=qs[_0x1ded('0x33')](_[_0x1ded('0x3c')](_0x2696a8[_0x1ded('0x31')],_0x31f05b['filters']));if(_0x2696a8['query'][_0x1ded('0x3d')]){_0x3977db[_0x1ded('0x3b')]=_[_0x1ded('0x3e')](_0x3977db['where'],{'$or':_[_0x1ded('0x3f')](_0x3977db[_0x1ded('0x35')],function(_0x1a9990){var _0x181405={};_0x181405[_0x1a9990]={'$like':'%'+_0x2696a8[_0x1ded('0x31')]['filter']+'%'};return _0x181405;})});}_0x3977db=_[_0x1ded('0x3e')]({},_0x3977db,_0x2696a8[_0x1ded('0x42')]);return _0x2443de['getDescriptions'](_0x3977db);}})['then'](function(_0x18f827){if(_0x18f827){_0x59a12d=_0x18f827[_0x1ded('0x37')];if(!_0x2696a8['query'][_0x1ded('0x38')](_0x1ded('0x52'))){_0x3977db[_0x1ded('0x39')]=qs[_0x1ded('0x39')](_0x2696a8[_0x1ded('0x31')][_0x1ded('0x39')]);_0x3977db[_0x1ded('0x1d')]=qs['offset'](_0x2696a8['query'][_0x1ded('0x1d')]);}return _0x2443de[_0x1ded('0x53')](_0x3977db);}})[_0x1ded('0x25')](function(_0x211a9d){if(_0x211a9d){return _0x211a9d?{'count':_0x59a12d,'rows':_0x211a9d}:null;}})['then'](respondWithResult(_0xc03b6f,null))['catch'](handleError(_0xc03b6f,null));};
\ No newline at end of file
+var _0x13b6=['rows','catch','show','params','find','body','update','getFields','findOne','SugarcrmField','nolimit','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','destroy','then','error','stack','name','send','index','SugarcrmConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll'];(function(_0x35dd69,_0x334968){var _0x4485ee=function(_0xac345b){while(--_0xac345b){_0x35dd69['push'](_0x35dd69['shift']());}};_0x4485ee(++_0x334968);}(_0x13b6,0xfa));var _0x613b=function(_0x2313ff,_0x33949e){_0x2313ff=_0x2313ff-0x0;var _0x1661e7=_0x13b6[_0x2313ff];return _0x1661e7;};'use strict';var emlformat=require(_0x613b('0x0'));var rimraf=require(_0x613b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x613b('0x2'));var rp=require(_0x613b('0x3'));var moment=require(_0x613b('0x4'));var BPromise=require(_0x613b('0x5'));var Mustache=require(_0x613b('0x6'));var util=require(_0x613b('0x7'));var path=require('path');var sox=require(_0x613b('0x8'));var csv=require(_0x613b('0x9'));var ejs=require(_0x613b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x613b('0xb'));var jsforce=require(_0x613b('0xc'));var deskjs=require(_0x613b('0xd'));var toCsv=require(_0x613b('0x9'));var querystring=require(_0x613b('0xe'));var Papa=require(_0x613b('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x613b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x613b('0x11'))(_0x613b('0x12'));var utils=require(_0x613b('0x13'));var config=require(_0x613b('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x613b('0x15'))['db'];function respondWithStatusCode(_0x274e60,_0xe0629d){_0xe0629d=_0xe0629d||0xcc;return function(_0x2b479d){if(_0x2b479d){return _0x274e60[_0x613b('0x16')](_0xe0629d);}return _0x274e60['status'](_0xe0629d)[_0x613b('0x17')]();};}function respondWithResult(_0x5c6e5c,_0x2d4b9b){_0x2d4b9b=_0x2d4b9b||0xc8;return function(_0x531e0f){if(_0x531e0f){return _0x5c6e5c[_0x613b('0x18')](_0x2d4b9b)[_0x613b('0x19')](_0x531e0f);}};}function respondWithFilteredResult(_0x49f200,_0x4be48d){return function(_0x4b125a){if(_0x4b125a){var _0x540d09=typeof _0x4be48d[_0x613b('0x1a')]===_0x613b('0x1b')&&typeof _0x4be48d[_0x613b('0x1c')]===_0x613b('0x1b');var _0x11d1d9=_0x4b125a[_0x613b('0x1d')];var _0x44b6b6=_0x540d09?0x0:_0x4be48d[_0x613b('0x1a')];var _0x4e0ceb=_0x540d09?_0x4b125a['count']:_0x4be48d[_0x613b('0x1a')]+_0x4be48d[_0x613b('0x1c')];var _0x11fa64;if(_0x4e0ceb>=_0x11d1d9){_0x4e0ceb=_0x11d1d9;_0x11fa64=0xc8;}else{_0x11fa64=0xce;}_0x49f200['status'](_0x11fa64);return _0x49f200[_0x613b('0x1e')]('Content-Range',_0x44b6b6+'-'+_0x4e0ceb+'/'+_0x11d1d9)[_0x613b('0x19')](_0x4b125a);}return null;};}function patchUpdates(_0x432966){return function(_0x11140e){try{jsonpatch[_0x613b('0x1f')](_0x11140e,_0x432966,!![]);}catch(_0x3b9cbb){return BPromise[_0x613b('0x20')](_0x3b9cbb);}return _0x11140e['save']();};}function saveUpdates(_0x1c755a,_0x1e4b1c){return function(_0x232661){if(_0x232661){return _0x232661['update'](_0x1c755a)['then'](function(_0x53a3){return _0x53a3;});}return null;};}function removeEntity(_0x1da950,_0x41df98){return function(_0x10139d){if(_0x10139d){return _0x10139d[_0x613b('0x21')]()[_0x613b('0x22')](function(){_0x1da950['status'](0xcc)[_0x613b('0x17')]();});}};}function handleEntityNotFound(_0x2a1e85,_0x395a18){return function(_0x5b87dc){if(!_0x5b87dc){_0x2a1e85['sendStatus'](0x194);}return _0x5b87dc;};}function handleError(_0x4e02d0,_0x24950c){_0x24950c=_0x24950c||0x1f4;return function(_0x3773ef){logger[_0x613b('0x23')](_0x3773ef[_0x613b('0x24')]);if(_0x3773ef[_0x613b('0x25')]){delete _0x3773ef['name'];}_0x4e02d0[_0x613b('0x18')](_0x24950c)[_0x613b('0x26')](_0x3773ef);};}exports[_0x613b('0x27')]=function(_0x14a3da,_0x39d304){var _0x219842={},_0x457360={},_0x36df60={'count':0x0,'rows':[]};var _0x4764f9=_['map'](db[_0x613b('0x28')][_0x613b('0x29')],function(_0x30a7a2){return{'name':_0x30a7a2[_0x613b('0x2a')],'type':_0x30a7a2[_0x613b('0x2b')][_0x613b('0x2c')]};});_0x457360[_0x613b('0x2d')]=_[_0x613b('0x2e')](_0x4764f9,_0x613b('0x25'));_0x457360[_0x613b('0x2f')]=_[_0x613b('0x30')](_0x14a3da[_0x613b('0x2f')]);_0x457360[_0x613b('0x31')]=_['intersection'](_0x457360['model'],_0x457360[_0x613b('0x2f')]);_0x219842[_0x613b('0x32')]=_[_0x613b('0x33')](_0x457360[_0x613b('0x2d')],qs[_0x613b('0x34')](_0x14a3da[_0x613b('0x2f')][_0x613b('0x34')]));_0x219842[_0x613b('0x32')]=_0x219842[_0x613b('0x32')][_0x613b('0x35')]?_0x219842[_0x613b('0x32')]:_0x457360['model'];if(!_0x14a3da[_0x613b('0x2f')][_0x613b('0x36')]('nolimit')){_0x219842['limit']=qs[_0x613b('0x1c')](_0x14a3da[_0x613b('0x2f')][_0x613b('0x1c')]);_0x219842[_0x613b('0x1a')]=qs[_0x613b('0x1a')](_0x14a3da[_0x613b('0x2f')][_0x613b('0x1a')]);}_0x219842[_0x613b('0x37')]=qs[_0x613b('0x38')](_0x14a3da[_0x613b('0x2f')][_0x613b('0x38')]);_0x219842[_0x613b('0x39')]=qs['filters'](_[_0x613b('0x3a')](_0x14a3da[_0x613b('0x2f')],_0x457360[_0x613b('0x31')]),_0x4764f9);if(_0x14a3da[_0x613b('0x2f')]['filter']){_0x219842[_0x613b('0x39')]=_[_0x613b('0x3b')](_0x219842['where'],{'$or':_[_0x613b('0x2e')](_0x4764f9,function(_0x310058){if(_0x310058[_0x613b('0x2b')]!==_0x613b('0x3c')){var _0x19f94f={};_0x19f94f[_0x310058[_0x613b('0x25')]]={'$like':'%'+_0x14a3da[_0x613b('0x2f')][_0x613b('0x3d')]+'%'};return _0x19f94f;}})});}_0x219842=_['merge']({},_0x219842,_0x14a3da[_0x613b('0x3e')]);var _0x3a7e41={'where':_0x219842['where']};return db[_0x613b('0x28')]['count'](_0x3a7e41)['then'](function(_0x2909f3){_0x36df60[_0x613b('0x1d')]=_0x2909f3;if(_0x14a3da['query'][_0x613b('0x3f')]){_0x219842[_0x613b('0x40')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x613b('0x41')](_0x219842);})[_0x613b('0x22')](function(_0x115f97){_0x36df60[_0x613b('0x42')]=_0x115f97;return _0x36df60;})[_0x613b('0x22')](respondWithFilteredResult(_0x39d304,_0x219842))[_0x613b('0x43')](handleError(_0x39d304,null));};exports[_0x613b('0x44')]=function(_0x154d0e,_0x2b3237){var _0x520217={'raw':![],'where':{'id':_0x154d0e[_0x613b('0x45')]['id']}},_0x5182c6={};_0x5182c6[_0x613b('0x2d')]=_['keys'](db[_0x613b('0x28')]['rawAttributes']);_0x5182c6['query']=_[_0x613b('0x30')](_0x154d0e[_0x613b('0x2f')]);_0x5182c6['filters']=_[_0x613b('0x33')](_0x5182c6['model'],_0x5182c6[_0x613b('0x2f')]);_0x520217[_0x613b('0x32')]=_['intersection'](_0x5182c6['model'],qs['fields'](_0x154d0e[_0x613b('0x2f')][_0x613b('0x34')]));_0x520217[_0x613b('0x32')]=_0x520217[_0x613b('0x32')]['length']?_0x520217['attributes']:_0x5182c6[_0x613b('0x2d')];if(_0x154d0e[_0x613b('0x2f')][_0x613b('0x3f')]){_0x520217['include']=[{'all':!![]}];}_0x520217=_[_0x613b('0x3b')]({},_0x520217,_0x154d0e[_0x613b('0x3e')]);return db[_0x613b('0x28')][_0x613b('0x46')](_0x520217)[_0x613b('0x22')](handleEntityNotFound(_0x2b3237,null))[_0x613b('0x22')](respondWithResult(_0x2b3237,null))['catch'](handleError(_0x2b3237,null));};exports['create']=function(_0x474e4d,_0x1554bd){return db[_0x613b('0x28')]['create'](_0x474e4d[_0x613b('0x47')],{})[_0x613b('0x22')](respondWithResult(_0x1554bd,0xc9))[_0x613b('0x43')](handleError(_0x1554bd,null));};exports[_0x613b('0x48')]=function(_0x2b3042,_0x3b2d5e){if(_0x2b3042[_0x613b('0x47')]['id']){delete _0x2b3042[_0x613b('0x47')]['id'];}return db[_0x613b('0x28')][_0x613b('0x46')]({'where':{'id':_0x2b3042[_0x613b('0x45')]['id']}})['then'](handleEntityNotFound(_0x3b2d5e,null))[_0x613b('0x22')](saveUpdates(_0x2b3042[_0x613b('0x47')],null))[_0x613b('0x22')](respondWithResult(_0x3b2d5e,null))['catch'](handleError(_0x3b2d5e,null));};exports[_0x613b('0x21')]=function(_0x52245a,_0x3e5660){return db[_0x613b('0x28')][_0x613b('0x46')]({'where':{'id':_0x52245a[_0x613b('0x45')]['id']}})['then'](handleEntityNotFound(_0x3e5660,null))[_0x613b('0x22')](removeEntity(_0x3e5660,null))[_0x613b('0x43')](handleError(_0x3e5660,null));};exports[_0x613b('0x49')]=function(_0x1c8f57,_0xbcb91e,_0x5d4729){var _0x455f8b={};var _0x40a4c5={};var _0x4930c9;var _0x541079;return db[_0x613b('0x28')][_0x613b('0x4a')]({'where':{'id':_0x1c8f57[_0x613b('0x45')]['id']}})['then'](handleEntityNotFound(_0xbcb91e,null))[_0x613b('0x22')](function(_0x29d57c){if(_0x29d57c){_0x4930c9=_0x29d57c;_0x40a4c5[_0x613b('0x2d')]=_[_0x613b('0x30')](db[_0x613b('0x4b')]['rawAttributes']);_0x40a4c5['query']=_['keys'](_0x1c8f57[_0x613b('0x2f')]);_0x40a4c5[_0x613b('0x31')]=_[_0x613b('0x33')](_0x40a4c5[_0x613b('0x2d')],_0x40a4c5['query']);_0x455f8b['attributes']=_['intersection'](_0x40a4c5[_0x613b('0x2d')],qs[_0x613b('0x34')](_0x1c8f57[_0x613b('0x2f')][_0x613b('0x34')]));_0x455f8b[_0x613b('0x32')]=_0x455f8b['attributes'][_0x613b('0x35')]?_0x455f8b['attributes']:_0x40a4c5[_0x613b('0x2d')];_0x455f8b[_0x613b('0x37')]=qs[_0x613b('0x38')](_0x1c8f57[_0x613b('0x2f')][_0x613b('0x38')]);_0x455f8b[_0x613b('0x39')]=qs['filters'](_[_0x613b('0x3a')](_0x1c8f57[_0x613b('0x2f')],_0x40a4c5[_0x613b('0x31')]));if(_0x1c8f57[_0x613b('0x2f')][_0x613b('0x3d')]){_0x455f8b[_0x613b('0x39')]=_['merge'](_0x455f8b[_0x613b('0x39')],{'$or':_[_0x613b('0x2e')](_0x455f8b['attributes'],function(_0x159bc9){var _0x42acad={};_0x42acad[_0x159bc9]={'$like':'%'+_0x1c8f57[_0x613b('0x2f')][_0x613b('0x3d')]+'%'};return _0x42acad;})});}_0x455f8b=_['merge']({},_0x455f8b,_0x1c8f57[_0x613b('0x3e')]);return _0x4930c9['getFields'](_0x455f8b);}})[_0x613b('0x22')](function(_0x2949f5){if(_0x2949f5){_0x541079=_0x2949f5[_0x613b('0x35')];if(!_0x1c8f57['query'][_0x613b('0x36')](_0x613b('0x4c'))){_0x455f8b[_0x613b('0x1c')]=qs[_0x613b('0x1c')](_0x1c8f57[_0x613b('0x2f')][_0x613b('0x1c')]);_0x455f8b[_0x613b('0x1a')]=qs[_0x613b('0x1a')](_0x1c8f57['query'][_0x613b('0x1a')]);}return _0x4930c9[_0x613b('0x49')](_0x455f8b);}})['then'](function(_0x266cdd){if(_0x266cdd){return _0x266cdd?{'count':_0x541079,'rows':_0x266cdd}:null;}})['then'](respondWithResult(_0xbcb91e,null))[_0x613b('0x43')](handleError(_0xbcb91e,null));};exports['getSubjects']=function(_0x306bee,_0x3dc45b,_0x72b517){var _0x596ac3={};var _0x8ca0f3={};var _0xe12d96;var _0x2afcba;return db[_0x613b('0x28')][_0x613b('0x4a')]({'where':{'id':_0x306bee[_0x613b('0x45')]['id']}})[_0x613b('0x22')](handleEntityNotFound(_0x3dc45b,null))['then'](function(_0x490210){if(_0x490210){_0xe12d96=_0x490210;_0x8ca0f3['model']=_[_0x613b('0x30')](db[_0x613b('0x4b')][_0x613b('0x29')]);_0x8ca0f3[_0x613b('0x2f')]=_[_0x613b('0x30')](_0x306bee[_0x613b('0x2f')]);_0x8ca0f3[_0x613b('0x31')]=_['intersection'](_0x8ca0f3[_0x613b('0x2d')],_0x8ca0f3[_0x613b('0x2f')]);_0x596ac3[_0x613b('0x32')]=_[_0x613b('0x33')](_0x8ca0f3[_0x613b('0x2d')],qs[_0x613b('0x34')](_0x306bee[_0x613b('0x2f')][_0x613b('0x34')]));_0x596ac3[_0x613b('0x32')]=_0x596ac3[_0x613b('0x32')][_0x613b('0x35')]?_0x596ac3[_0x613b('0x32')]:_0x8ca0f3[_0x613b('0x2d')];_0x596ac3[_0x613b('0x37')]=qs[_0x613b('0x38')](_0x306bee[_0x613b('0x2f')][_0x613b('0x38')]);_0x596ac3[_0x613b('0x39')]=qs[_0x613b('0x31')](_[_0x613b('0x3a')](_0x306bee[_0x613b('0x2f')],_0x8ca0f3['filters']));if(_0x306bee[_0x613b('0x2f')][_0x613b('0x3d')]){_0x596ac3[_0x613b('0x39')]=_[_0x613b('0x3b')](_0x596ac3[_0x613b('0x39')],{'$or':_['map'](_0x596ac3['attributes'],function(_0x5e10e2){var _0x4265b1={};_0x4265b1[_0x5e10e2]={'$like':'%'+_0x306bee[_0x613b('0x2f')][_0x613b('0x3d')]+'%'};return _0x4265b1;})});}_0x596ac3=_['merge']({},_0x596ac3,_0x306bee[_0x613b('0x3e')]);return _0xe12d96[_0x613b('0x4d')](_0x596ac3);}})[_0x613b('0x22')](function(_0x16416b){if(_0x16416b){_0x2afcba=_0x16416b[_0x613b('0x35')];if(!_0x306bee[_0x613b('0x2f')]['hasOwnProperty']('nolimit')){_0x596ac3['limit']=qs[_0x613b('0x1c')](_0x306bee['query'][_0x613b('0x1c')]);_0x596ac3['offset']=qs[_0x613b('0x1a')](_0x306bee['query'][_0x613b('0x1a')]);}return _0xe12d96['getSubjects'](_0x596ac3);}})[_0x613b('0x22')](function(_0x116079){if(_0x116079){return _0x116079?{'count':_0x2afcba,'rows':_0x116079}:null;}})['then'](respondWithResult(_0x3dc45b,null))['catch'](handleError(_0x3dc45b,null));};exports[_0x613b('0x4e')]=function(_0x499879,_0x4e1423,_0x52bcb4){var _0xee9173={};var _0x1a9849={};var _0x15ffb5;var _0x170f1e;return db['SugarcrmConfiguration'][_0x613b('0x4a')]({'where':{'id':_0x499879[_0x613b('0x45')]['id']}})[_0x613b('0x22')](handleEntityNotFound(_0x4e1423,null))[_0x613b('0x22')](function(_0x1a47c0){if(_0x1a47c0){_0x15ffb5=_0x1a47c0;_0x1a9849[_0x613b('0x2d')]=_[_0x613b('0x30')](db['SugarcrmField'][_0x613b('0x29')]);_0x1a9849['query']=_['keys'](_0x499879['query']);_0x1a9849['filters']=_[_0x613b('0x33')](_0x1a9849[_0x613b('0x2d')],_0x1a9849[_0x613b('0x2f')]);_0xee9173[_0x613b('0x32')]=_[_0x613b('0x33')](_0x1a9849[_0x613b('0x2d')],qs[_0x613b('0x34')](_0x499879['query']['fields']));_0xee9173[_0x613b('0x32')]=_0xee9173['attributes'][_0x613b('0x35')]?_0xee9173[_0x613b('0x32')]:_0x1a9849['model'];_0xee9173[_0x613b('0x37')]=qs[_0x613b('0x38')](_0x499879[_0x613b('0x2f')][_0x613b('0x38')]);_0xee9173['where']=qs[_0x613b('0x31')](_[_0x613b('0x3a')](_0x499879[_0x613b('0x2f')],_0x1a9849[_0x613b('0x31')]));if(_0x499879[_0x613b('0x2f')][_0x613b('0x3d')]){_0xee9173[_0x613b('0x39')]=_[_0x613b('0x3b')](_0xee9173['where'],{'$or':_[_0x613b('0x2e')](_0xee9173[_0x613b('0x32')],function(_0x41d205){var _0x27886f={};_0x27886f[_0x41d205]={'$like':'%'+_0x499879['query'][_0x613b('0x3d')]+'%'};return _0x27886f;})});}_0xee9173=_[_0x613b('0x3b')]({},_0xee9173,_0x499879[_0x613b('0x3e')]);return _0x15ffb5[_0x613b('0x4e')](_0xee9173);}})['then'](function(_0x3f65c1){if(_0x3f65c1){_0x170f1e=_0x3f65c1['length'];if(!_0x499879[_0x613b('0x2f')][_0x613b('0x36')](_0x613b('0x4c'))){_0xee9173[_0x613b('0x1c')]=qs[_0x613b('0x1c')](_0x499879[_0x613b('0x2f')][_0x613b('0x1c')]);_0xee9173[_0x613b('0x1a')]=qs[_0x613b('0x1a')](_0x499879[_0x613b('0x2f')][_0x613b('0x1a')]);}return _0x15ffb5['getDescriptions'](_0xee9173);}})[_0x613b('0x22')](function(_0x29df0d){if(_0x29df0d){return _0x29df0d?{'count':_0x170f1e,'rows':_0x29df0d}:null;}})[_0x613b('0x22')](respondWithResult(_0x4e1423,null))['catch'](handleError(_0x4e1423,null));};
\ No newline at end of file
index 6a6eb36..432d9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bd2=['path','rimraf','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','lodash','util','../../config/logger','api','moment'];(function(_0x41487e,_0x17b795){var _0x396d53=function(_0x3f7a72){while(--_0x3f7a72){_0x41487e['push'](_0x41487e['shift']());}};_0x396d53(++_0x17b795);}(_0x8bd2,0xc1));var _0x28bd=function(_0x3de4f8,_0x336c7d){_0x3de4f8=_0x3de4f8-0x0;var _0x3d81fc=_0x8bd2[_0x3de4f8];return _0x3d81fc;};'use strict';var _=require(_0x28bd('0x0'));var util=require(_0x28bd('0x1'));var logger=require(_0x28bd('0x2'))(_0x28bd('0x3'));var moment=require(_0x28bd('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x28bd('0x5'));var rimraf=require(_0x28bd('0x6'));var config=require('../../config/environment');var attributes=require(_0x28bd('0x7'));module[_0x28bd('0x8')]=function(_0x47957c,_0x12017c){return _0x47957c[_0x28bd('0x9')](_0x28bd('0xa'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb872=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','lodash','util','../../config/logger','moment'];(function(_0x40bad6,_0x1a5dc8){var _0xdfd3f2=function(_0x20f7ee){while(--_0x20f7ee){_0x40bad6['push'](_0x40bad6['shift']());}};_0xdfd3f2(++_0x1a5dc8);}(_0xb872,0x74));var _0x2b87=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb872[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2b87('0x0'));var util=require(_0x2b87('0x1'));var logger=require(_0x2b87('0x2'))('api');var moment=require(_0x2b87('0x3'));var BPromise=require(_0x2b87('0x4'));var rp=require(_0x2b87('0x5'));var fs=require('fs');var path=require(_0x2b87('0x6'));var rimraf=require(_0x2b87('0x7'));var config=require(_0x2b87('0x8'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x2b87('0x9')]=function(_0x36a857,_0x45f55c){return _0x36a857[_0x2b87('0xa')](_0x2b87('0xb'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a271d93..f94ddd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d15=['rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xc71130,_0x2df525){var _0x89ce1=function(_0x35ddd8){while(--_0x35ddd8){_0xc71130['push'](_0xc71130['shift']());}};_0x89ce1(++_0x2df525);}(_0x8d15,0x160));var _0x58d1=function(_0x41d70d,_0xf25b42){_0x41d70d=_0x41d70d-0x0;var _0x2eb24c=_0x8d15[_0x41d70d];return _0x2eb24c;};'use strict';var _=require(_0x58d1('0x0'));var util=require(_0x58d1('0x1'));var moment=require('moment');var BPromise=require(_0x58d1('0x2'));var rs=require(_0x58d1('0x3'));var fs=require('fs');var Redis=require(_0x58d1('0x4'));var db=require(_0x58d1('0x5'))['db'];var utils=require(_0x58d1('0x6'));var logger=require(_0x58d1('0x7'))(_0x58d1('0x8'));var config=require(_0x58d1('0x9'));var jayson=require(_0x58d1('0xa'));var client=jayson[_0x58d1('0xb')][_0x58d1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xbb4b6b,_0x542a75,_0x1243d4){return new BPromise(function(_0x48fd07,_0x15eec5){return client[_0x58d1('0xd')](_0xbb4b6b,_0x1243d4)[_0x58d1('0xe')](function(_0x32c47d){logger['info'](_0x58d1('0xf'),_0x542a75,_0x58d1('0x10'));logger['debug'](_0x58d1('0x11'),_0x542a75,_0x58d1('0x10'),JSON[_0x58d1('0x12')](_0x32c47d));if(_0x32c47d[_0x58d1('0x13')]){if(_0x32c47d[_0x58d1('0x13')][_0x58d1('0x14')]===0x1f4){logger[_0x58d1('0x13')](_0x58d1('0xf'),_0x542a75,_0x32c47d[_0x58d1('0x13')]['message']);return _0x15eec5(_0x32c47d[_0x58d1('0x13')][_0x58d1('0x15')]);}logger[_0x58d1('0x13')](_0x58d1('0xf'),_0x542a75,_0x32c47d[_0x58d1('0x13')]['message']);return _0x48fd07(_0x32c47d[_0x58d1('0x13')][_0x58d1('0x15')]);}else{logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x542a75,_0x58d1('0x10'));_0x48fd07(_0x32c47d[_0x58d1('0x16')][_0x58d1('0x15')]);}})[_0x58d1('0x17')](function(_0xfaa3a0){logger[_0x58d1('0x13')](_0x58d1('0xf'),_0x542a75,_0xfaa3a0);_0x15eec5(_0xfaa3a0);});});}
\ No newline at end of file
+var _0xc8f5=['lodash','util','moment','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SugarcrmConfiguration,\x20%s,\x20%s','result','catch'];(function(_0x32f26d,_0x2c0b5d){var _0x5d9ddc=function(_0x1f0e26){while(--_0x1f0e26){_0x32f26d['push'](_0x32f26d['shift']());}};_0x5d9ddc(++_0x2c0b5d);}(_0xc8f5,0x93));var _0x5c8f=function(_0x5d6c3e,_0x409a3e){_0x5d6c3e=_0x5d6c3e-0x0;var _0x44ecb7=_0xc8f5[_0x5d6c3e];return _0x44ecb7;};'use strict';var _=require(_0x5c8f('0x0'));var util=require(_0x5c8f('0x1'));var moment=require(_0x5c8f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5c8f('0x3'));var db=require(_0x5c8f('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5c8f('0x5'));var config=require(_0x5c8f('0x6'));var jayson=require(_0x5c8f('0x7'));var client=jayson[_0x5c8f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50f033,_0xe4eed,_0x267492){return new BPromise(function(_0xdd9afa,_0x131b6a){return client[_0x5c8f('0x9')](_0x50f033,_0x267492)[_0x5c8f('0xa')](function(_0xc801){logger[_0x5c8f('0xb')]('SugarcrmConfiguration,\x20%s,\x20%s',_0xe4eed,_0x5c8f('0xc'));logger['debug'](_0x5c8f('0xd'),_0xe4eed,_0x5c8f('0xc'),JSON[_0x5c8f('0xe')](_0xc801));if(_0xc801[_0x5c8f('0xf')]){if(_0xc801[_0x5c8f('0xf')][_0x5c8f('0x10')]===0x1f4){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0xe4eed,_0xc801[_0x5c8f('0xf')][_0x5c8f('0x11')]);return _0x131b6a(_0xc801[_0x5c8f('0xf')][_0x5c8f('0x11')]);}logger[_0x5c8f('0xf')](_0x5c8f('0x12'),_0xe4eed,_0xc801['error'][_0x5c8f('0x11')]);return _0xdd9afa(_0xc801[_0x5c8f('0xf')][_0x5c8f('0x11')]);}else{logger[_0x5c8f('0xb')](_0x5c8f('0x12'),_0xe4eed,'request\x20sent');_0xdd9afa(_0xc801[_0x5c8f('0x13')][_0x5c8f('0x11')]);}})[_0x5c8f('0x14')](function(_0x2cca9e){logger[_0x5c8f('0xf')](_0x5c8f('0x12'),_0xe4eed,_0x2cca9e);_0x131b6a(_0x2cca9e);});});}
\ No newline at end of file
index 622b665..795bf61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe244=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','post','create','put','delete','destroy','exports','multer','util'];(function(_0x34b146,_0x2e6d53){var _0xac3728=function(_0x517345){while(--_0x517345){_0x34b146['push'](_0x34b146['shift']());}};_0xac3728(++_0x2e6d53);}(_0xe244,0x1ec));var _0x4e24=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xe244[_0x160c73];return _0xd9302;};'use strict';var multer=require(_0x4e24('0x0'));var util=require(_0x4e24('0x1'));var path=require(_0x4e24('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4e24('0x3')]();var fs_extra=require(_0x4e24('0x4'));var auth=require(_0x4e24('0x5'));var interaction=require(_0x4e24('0x6'));var config=require(_0x4e24('0x7'));var controller=require(_0x4e24('0x8'));router[_0x4e24('0x9')]('/',auth[_0x4e24('0xa')](),controller[_0x4e24('0xb')]);router[_0x4e24('0x9')](_0x4e24('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x4e24('0xd')]('/',auth[_0x4e24('0xa')](),controller[_0x4e24('0xe')]);router[_0x4e24('0xf')]('/:id',auth[_0x4e24('0xa')](),controller['update']);router[_0x4e24('0x10')](_0x4e24('0xc'),auth[_0x4e24('0xa')](),controller[_0x4e24('0x11')]);module[_0x4e24('0x12')]=router;
\ No newline at end of file
+var _0x31c3=['isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get'];(function(_0x275f3b,_0x55b741){var _0x5a4faa=function(_0xbfb2d8){while(--_0xbfb2d8){_0x275f3b['push'](_0x275f3b['shift']());}};_0x5a4faa(++_0x55b741);}(_0x31c3,0xb5));var _0x331c=function(_0x56b390,_0x59cc83){_0x56b390=_0x56b390-0x0;var _0x51c4c7=_0x31c3[_0x56b390];return _0x51c4c7;};'use strict';var multer=require(_0x331c('0x0'));var util=require('util');var path=require(_0x331c('0x1'));var timeout=require(_0x331c('0x2'));var express=require('express');var router=express[_0x331c('0x3')]();var fs_extra=require(_0x331c('0x4'));var auth=require(_0x331c('0x5'));var interaction=require(_0x331c('0x6'));var config=require('../../config/environment');var controller=require(_0x331c('0x7'));router[_0x331c('0x8')]('/',auth[_0x331c('0x9')](),controller[_0x331c('0xa')]);router[_0x331c('0x8')](_0x331c('0xb'),auth[_0x331c('0x9')](),controller[_0x331c('0xc')]);router[_0x331c('0xd')]('/',auth['isAuthenticated'](),controller[_0x331c('0xe')]);router[_0x331c('0xf')](_0x331c('0xb'),auth[_0x331c('0x9')](),controller[_0x331c('0x10')]);router[_0x331c('0x11')](_0x331c('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x331c('0x12')]=router;
\ No newline at end of file
index d44eebe..757d4eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b13=['BOOLEAN','ENUM','variable','customVariable','keyValue','picklist','string','STRING'];(function(_0xb473a5,_0x5078bf){var _0x313f29=function(_0x588510){while(--_0x588510){_0xb473a5['push'](_0xb473a5['shift']());}};_0x313f29(++_0x5078bf);}(_0x8b13,0x159));var _0x38b1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8b13[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x38b1('0x0')]('string',_0x38b1('0x1'),_0x38b1('0x2'),_0x38b1('0x3'),_0x38b1('0x4')),'defaultValue':_0x38b1('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x38b1('0x0')]('string',_0x38b1('0x1'),_0x38b1('0x2'))},'keyContent':{'type':Sequelize[_0x38b1('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x38b1('0x6')]},'customField':{'type':Sequelize[_0x38b1('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x38b1('0x6')]}};
\ No newline at end of file
+var _0xeb8e=['sequelize','exports','ENUM','variable','keyValue','picklist','STRING','string','customVariable','BOOLEAN'];(function(_0x1471ec,_0x4e4fa8){var _0x40b7dc=function(_0xffeae5){while(--_0xffeae5){_0x1471ec['push'](_0x1471ec['shift']());}};_0x40b7dc(++_0x4e4fa8);}(_0xeb8e,0xc8));var _0xeeb8=function(_0x3f1b16,_0xa3941b){_0x3f1b16=_0x3f1b16-0x0;var _0x2fe254=_0xeb8e[_0x3f1b16];return _0x2fe254;};'use strict';var Sequelize=require(_0xeeb8('0x0'));module[_0xeeb8('0x1')]={'type':{'type':Sequelize[_0xeeb8('0x2')]('string',_0xeeb8('0x3'),'customVariable',_0xeeb8('0x4'),_0xeeb8('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xeeb8('0x6')]},'key':{'type':Sequelize[_0xeeb8('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xeeb8('0x7'),_0xeeb8('0x3'),_0xeeb8('0x8'))},'keyContent':{'type':Sequelize[_0xeeb8('0x6')]},'idField':{'type':Sequelize[_0xeeb8('0x6')]},'nameField':{'type':Sequelize[_0xeeb8('0x6')]},'customField':{'type':Sequelize[_0xeeb8('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xeeb8('0x6')]}};
\ No newline at end of file
index 0fc88d8..ef2bdca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aed=['ioredis','../../components/auth/service','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','name','send','index','SugarcrmField','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','include','create','body','find','params','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x6aed,0x1e8));var _0xd6ae=function(_0x1dffed,_0x1c5d6a){_0x1dffed=_0x1dffed-0x0;var _0x488590=_0x6aed[_0x1dffed];return _0x488590;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd6ae('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd6ae('0x1'));var rp=require(_0xd6ae('0x2'));var moment=require(_0xd6ae('0x3'));var BPromise=require(_0xd6ae('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd6ae('0x5'));var sox=require(_0xd6ae('0x6'));var csv=require(_0xd6ae('0x7'));var ejs=require(_0xd6ae('0x8'));var fs=require('fs');var fs_extra=require(_0xd6ae('0x9'));var _=require(_0xd6ae('0xa'));var squel=require(_0xd6ae('0xb'));var crypto=require(_0xd6ae('0xc'));var jsforce=require(_0xd6ae('0xd'));var deskjs=require(_0xd6ae('0xe'));var toCsv=require(_0xd6ae('0x7'));var querystring=require(_0xd6ae('0xf'));var Papa=require('papaparse');var Redis=require(_0xd6ae('0x10'));var authService=require(_0xd6ae('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd6ae('0x12'))(_0xd6ae('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd6ae('0x14'));var db=require(_0xd6ae('0x15'))['db'];function respondWithStatusCode(_0x52c097,_0x2da35c){_0x2da35c=_0x2da35c||0xcc;return function(_0x316ed3){if(_0x316ed3){return _0x52c097[_0xd6ae('0x16')](_0x2da35c);}return _0x52c097[_0xd6ae('0x17')](_0x2da35c)[_0xd6ae('0x18')]();};}function respondWithResult(_0x5d755f,_0x1c2cb4){_0x1c2cb4=_0x1c2cb4||0xc8;return function(_0x704c5e){if(_0x704c5e){return _0x5d755f[_0xd6ae('0x17')](_0x1c2cb4)[_0xd6ae('0x19')](_0x704c5e);}};}function respondWithFilteredResult(_0xd8d425,_0x169959){return function(_0x568e34){if(_0x568e34){var _0x34073c=typeof _0x169959['offset']===_0xd6ae('0x1a')&&typeof _0x169959[_0xd6ae('0x1b')]===_0xd6ae('0x1a');var _0x2863b3=_0x568e34[_0xd6ae('0x1c')];var _0x119bc9=_0x34073c?0x0:_0x169959['offset'];var _0xa1b58c=_0x34073c?_0x568e34[_0xd6ae('0x1c')]:_0x169959[_0xd6ae('0x1d')]+_0x169959[_0xd6ae('0x1b')];var _0x1f5cb3;if(_0xa1b58c>=_0x2863b3){_0xa1b58c=_0x2863b3;_0x1f5cb3=0xc8;}else{_0x1f5cb3=0xce;}_0xd8d425['status'](_0x1f5cb3);return _0xd8d425[_0xd6ae('0x1e')](_0xd6ae('0x1f'),_0x119bc9+'-'+_0xa1b58c+'/'+_0x2863b3)[_0xd6ae('0x19')](_0x568e34);}return null;};}function patchUpdates(_0xf1b70d){return function(_0x5304c2){try{jsonpatch[_0xd6ae('0x20')](_0x5304c2,_0xf1b70d,!![]);}catch(_0x341eb6){return BPromise[_0xd6ae('0x21')](_0x341eb6);}return _0x5304c2[_0xd6ae('0x22')]();};}function saveUpdates(_0x40df19,_0x43c25c){return function(_0x34359d){if(_0x34359d){return _0x34359d[_0xd6ae('0x23')](_0x40df19)[_0xd6ae('0x24')](function(_0x39b8f3){return _0x39b8f3;});}return null;};}function removeEntity(_0x1a03e7,_0x565618){return function(_0x2d77fd){if(_0x2d77fd){return _0x2d77fd['destroy']()[_0xd6ae('0x24')](function(){_0x1a03e7[_0xd6ae('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x544434,_0x509c24){return function(_0xed832c){if(!_0xed832c){_0x544434[_0xd6ae('0x16')](0x194);}return _0xed832c;};}function handleError(_0x12fade,_0x38e079){_0x38e079=_0x38e079||0x1f4;return function(_0x589721){logger[_0xd6ae('0x25')](_0x589721['stack']);if(_0x589721[_0xd6ae('0x26')]){delete _0x589721[_0xd6ae('0x26')];}_0x12fade[_0xd6ae('0x17')](_0x38e079)[_0xd6ae('0x27')](_0x589721);};}exports[_0xd6ae('0x28')]=function(_0x44652a,_0x2ebbb9){var _0x3ce718={},_0x59723e={},_0xc09d79={'count':0x0,'rows':[]};var _0x5b98f0=_['map'](db[_0xd6ae('0x29')][_0xd6ae('0x2a')],function(_0x293444){return{'name':_0x293444['fieldName'],'type':_0x293444[_0xd6ae('0x2b')][_0xd6ae('0x2c')]};});_0x59723e[_0xd6ae('0x2d')]=_[_0xd6ae('0x2e')](_0x5b98f0,_0xd6ae('0x26'));_0x59723e[_0xd6ae('0x2f')]=_[_0xd6ae('0x30')](_0x44652a[_0xd6ae('0x2f')]);_0x59723e[_0xd6ae('0x31')]=_['intersection'](_0x59723e[_0xd6ae('0x2d')],_0x59723e[_0xd6ae('0x2f')]);_0x3ce718[_0xd6ae('0x32')]=_[_0xd6ae('0x33')](_0x59723e['model'],qs[_0xd6ae('0x34')](_0x44652a[_0xd6ae('0x2f')]['fields']));_0x3ce718['attributes']=_0x3ce718[_0xd6ae('0x32')]['length']?_0x3ce718[_0xd6ae('0x32')]:_0x59723e[_0xd6ae('0x2d')];if(!_0x44652a['query'][_0xd6ae('0x35')]('nolimit')){_0x3ce718[_0xd6ae('0x1b')]=qs[_0xd6ae('0x1b')](_0x44652a[_0xd6ae('0x2f')][_0xd6ae('0x1b')]);_0x3ce718[_0xd6ae('0x1d')]=qs[_0xd6ae('0x1d')](_0x44652a['query'][_0xd6ae('0x1d')]);}_0x3ce718[_0xd6ae('0x36')]=qs[_0xd6ae('0x37')](_0x44652a[_0xd6ae('0x2f')][_0xd6ae('0x37')]);_0x3ce718[_0xd6ae('0x38')]=qs[_0xd6ae('0x31')](_[_0xd6ae('0x39')](_0x44652a['query'],_0x59723e[_0xd6ae('0x31')]),_0x5b98f0);if(_0x44652a[_0xd6ae('0x2f')][_0xd6ae('0x3a')]){_0x3ce718[_0xd6ae('0x38')]=_['merge'](_0x3ce718[_0xd6ae('0x38')],{'$or':_[_0xd6ae('0x2e')](_0x5b98f0,function(_0xc3681e){if(_0xc3681e[_0xd6ae('0x2b')]!==_0xd6ae('0x3b')){var _0x2ee537={};_0x2ee537[_0xc3681e[_0xd6ae('0x26')]]={'$like':'%'+_0x44652a['query'][_0xd6ae('0x3a')]+'%'};return _0x2ee537;}})});}_0x3ce718=_[_0xd6ae('0x3c')]({},_0x3ce718,_0x44652a[_0xd6ae('0x3d')]);var _0x3b93ae={'where':_0x3ce718[_0xd6ae('0x38')]};return db['SugarcrmField']['count'](_0x3b93ae)['then'](function(_0x45b11b){_0xc09d79[_0xd6ae('0x1c')]=_0x45b11b;if(_0x44652a[_0xd6ae('0x2f')][_0xd6ae('0x3e')]){_0x3ce718['include']=[{'all':!![]}];}return db[_0xd6ae('0x29')][_0xd6ae('0x3f')](_0x3ce718);})['then'](function(_0x2e4a13){_0xc09d79[_0xd6ae('0x40')]=_0x2e4a13;return _0xc09d79;})[_0xd6ae('0x24')](respondWithFilteredResult(_0x2ebbb9,_0x3ce718))[_0xd6ae('0x41')](handleError(_0x2ebbb9,null));};exports[_0xd6ae('0x42')]=function(_0x36104e,_0x5195f1){var _0x5b1be5={'raw':!![],'where':{'id':_0x36104e['params']['id']}},_0x543432={};_0x543432['model']=_['keys'](db['SugarcrmField']['rawAttributes']);_0x543432[_0xd6ae('0x2f')]=_[_0xd6ae('0x30')](_0x36104e[_0xd6ae('0x2f')]);_0x543432[_0xd6ae('0x31')]=_[_0xd6ae('0x33')](_0x543432['model'],_0x543432[_0xd6ae('0x2f')]);_0x5b1be5[_0xd6ae('0x32')]=_[_0xd6ae('0x33')](_0x543432['model'],qs[_0xd6ae('0x34')](_0x36104e[_0xd6ae('0x2f')]['fields']));_0x5b1be5['attributes']=_0x5b1be5[_0xd6ae('0x32')]['length']?_0x5b1be5[_0xd6ae('0x32')]:_0x543432[_0xd6ae('0x2d')];if(_0x36104e[_0xd6ae('0x2f')]['includeAll']){_0x5b1be5[_0xd6ae('0x43')]=[{'all':!![]}];}_0x5b1be5=_[_0xd6ae('0x3c')]({},_0x5b1be5,_0x36104e['options']);return db['SugarcrmField']['find'](_0x5b1be5)[_0xd6ae('0x24')](handleEntityNotFound(_0x5195f1,null))[_0xd6ae('0x24')](respondWithResult(_0x5195f1,null))['catch'](handleError(_0x5195f1,null));};exports['create']=function(_0x36ecf3,_0x5d7d45){return db[_0xd6ae('0x29')][_0xd6ae('0x44')](_0x36ecf3['body'],{})[_0xd6ae('0x24')](respondWithResult(_0x5d7d45,0xc9))['catch'](handleError(_0x5d7d45,null));};exports[_0xd6ae('0x23')]=function(_0x22c97d,_0x345a20){if(_0x22c97d['body']['id']){delete _0x22c97d[_0xd6ae('0x45')]['id'];}return db[_0xd6ae('0x29')][_0xd6ae('0x46')]({'where':{'id':_0x22c97d[_0xd6ae('0x47')]['id']}})['then'](handleEntityNotFound(_0x345a20,null))[_0xd6ae('0x24')](saveUpdates(_0x22c97d['body'],null))[_0xd6ae('0x24')](respondWithResult(_0x345a20,null))['catch'](handleError(_0x345a20,null));};exports['destroy']=function(_0x5172b3,_0x3e8a91){return db[_0xd6ae('0x29')]['find']({'where':{'id':_0x5172b3[_0xd6ae('0x47')]['id']}})[_0xd6ae('0x24')](handleEntityNotFound(_0x3e8a91,null))[_0xd6ae('0x24')](removeEntity(_0x3e8a91,null))['catch'](handleError(_0x3e8a91,null));};
\ No newline at end of file
+var _0xac51=['zip-dir','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','update','destroy','then','stack','name','send','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','type','VIRTUAL','options','SugarcrmField','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','rimraf'];(function(_0x512661,_0x4b4012){var _0x1debde=function(_0x1ed401){while(--_0x1ed401){_0x512661['push'](_0x512661['shift']());}};_0x1debde(++_0x4b4012);}(_0xac51,0x8b));var _0x1ac5=function(_0xd94bbc,_0x30094f){_0xd94bbc=_0xd94bbc-0x0;var _0x196f9a=_0xac51[_0xd94bbc];return _0x196f9a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1ac5('0x0'));var zipdir=require(_0x1ac5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1ac5('0x2'));var Mustache=require(_0x1ac5('0x3'));var util=require(_0x1ac5('0x4'));var path=require(_0x1ac5('0x5'));var sox=require(_0x1ac5('0x6'));var csv=require(_0x1ac5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1ac5('0x8'));var _=require(_0x1ac5('0x9'));var squel=require('squel');var crypto=require(_0x1ac5('0xa'));var jsforce=require(_0x1ac5('0xb'));var deskjs=require(_0x1ac5('0xc'));var toCsv=require(_0x1ac5('0x7'));var querystring=require(_0x1ac5('0xd'));var Papa=require('papaparse');var Redis=require(_0x1ac5('0xe'));var authService=require(_0x1ac5('0xf'));var qs=require(_0x1ac5('0x10'));var as=require(_0x1ac5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1ac5('0x12'));var config=require(_0x1ac5('0x13'));var licenseUtil=require(_0x1ac5('0x14'));var db=require(_0x1ac5('0x15'))['db'];function respondWithStatusCode(_0x259bb2,_0x257348){_0x257348=_0x257348||0xcc;return function(_0x1d0633){if(_0x1d0633){return _0x259bb2[_0x1ac5('0x16')](_0x257348);}return _0x259bb2['status'](_0x257348)[_0x1ac5('0x17')]();};}function respondWithResult(_0x15475c,_0x2b16a4){_0x2b16a4=_0x2b16a4||0xc8;return function(_0x2039d6){if(_0x2039d6){return _0x15475c[_0x1ac5('0x18')](_0x2b16a4)[_0x1ac5('0x19')](_0x2039d6);}};}function respondWithFilteredResult(_0x3e5e3f,_0x19e7b4){return function(_0x2c83f8){if(_0x2c83f8){var _0x1998b3=typeof _0x19e7b4[_0x1ac5('0x1a')]==='undefined'&&typeof _0x19e7b4['limit']===_0x1ac5('0x1b');var _0x57c610=_0x2c83f8['count'];var _0x335bec=_0x1998b3?0x0:_0x19e7b4[_0x1ac5('0x1a')];var _0x70fd8d=_0x1998b3?_0x2c83f8[_0x1ac5('0x1c')]:_0x19e7b4[_0x1ac5('0x1a')]+_0x19e7b4[_0x1ac5('0x1d')];var _0x3327cc;if(_0x70fd8d>=_0x57c610){_0x70fd8d=_0x57c610;_0x3327cc=0xc8;}else{_0x3327cc=0xce;}_0x3e5e3f[_0x1ac5('0x18')](_0x3327cc);return _0x3e5e3f['set'](_0x1ac5('0x1e'),_0x335bec+'-'+_0x70fd8d+'/'+_0x57c610)[_0x1ac5('0x19')](_0x2c83f8);}return null;};}function patchUpdates(_0x1a2d1e){return function(_0x4f819b){try{jsonpatch[_0x1ac5('0x1f')](_0x4f819b,_0x1a2d1e,!![]);}catch(_0x5c9e45){return BPromise[_0x1ac5('0x20')](_0x5c9e45);}return _0x4f819b['save']();};}function saveUpdates(_0x4653d2,_0x3c62c9){return function(_0x41fef4){if(_0x41fef4){return _0x41fef4[_0x1ac5('0x21')](_0x4653d2)['then'](function(_0x515f42){return _0x515f42;});}return null;};}function removeEntity(_0x5187f4,_0x5fa78b){return function(_0x41715a){if(_0x41715a){return _0x41715a[_0x1ac5('0x22')]()[_0x1ac5('0x23')](function(){_0x5187f4[_0x1ac5('0x18')](0xcc)[_0x1ac5('0x17')]();});}};}function handleEntityNotFound(_0x1dec39,_0xb67826){return function(_0x329624){if(!_0x329624){_0x1dec39[_0x1ac5('0x16')](0x194);}return _0x329624;};}function handleError(_0x356f98,_0x2475d7){_0x2475d7=_0x2475d7||0x1f4;return function(_0x45215f){logger['error'](_0x45215f[_0x1ac5('0x24')]);if(_0x45215f[_0x1ac5('0x25')]){delete _0x45215f[_0x1ac5('0x25')];}_0x356f98[_0x1ac5('0x18')](_0x2475d7)[_0x1ac5('0x26')](_0x45215f);};}exports['index']=function(_0x515523,_0x1e7830){var _0x2532d0={},_0x5d9e8e={},_0x14b415={'count':0x0,'rows':[]};var _0x2a58db=_[_0x1ac5('0x27')](db['SugarcrmField'][_0x1ac5('0x28')],function(_0x517699){return{'name':_0x517699[_0x1ac5('0x29')],'type':_0x517699['type'][_0x1ac5('0x2a')]};});_0x5d9e8e[_0x1ac5('0x2b')]=_['map'](_0x2a58db,'name');_0x5d9e8e[_0x1ac5('0x2c')]=_['keys'](_0x515523[_0x1ac5('0x2c')]);_0x5d9e8e[_0x1ac5('0x2d')]=_[_0x1ac5('0x2e')](_0x5d9e8e[_0x1ac5('0x2b')],_0x5d9e8e[_0x1ac5('0x2c')]);_0x2532d0[_0x1ac5('0x2f')]=_['intersection'](_0x5d9e8e[_0x1ac5('0x2b')],qs[_0x1ac5('0x30')](_0x515523[_0x1ac5('0x2c')]['fields']));_0x2532d0[_0x1ac5('0x2f')]=_0x2532d0['attributes'][_0x1ac5('0x31')]?_0x2532d0[_0x1ac5('0x2f')]:_0x5d9e8e[_0x1ac5('0x2b')];if(!_0x515523[_0x1ac5('0x2c')][_0x1ac5('0x32')]('nolimit')){_0x2532d0[_0x1ac5('0x1d')]=qs[_0x1ac5('0x1d')](_0x515523[_0x1ac5('0x2c')][_0x1ac5('0x1d')]);_0x2532d0[_0x1ac5('0x1a')]=qs[_0x1ac5('0x1a')](_0x515523['query'][_0x1ac5('0x1a')]);}_0x2532d0[_0x1ac5('0x33')]=qs['sort'](_0x515523[_0x1ac5('0x2c')][_0x1ac5('0x34')]);_0x2532d0[_0x1ac5('0x35')]=qs[_0x1ac5('0x2d')](_['pick'](_0x515523[_0x1ac5('0x2c')],_0x5d9e8e[_0x1ac5('0x2d')]),_0x2a58db);if(_0x515523[_0x1ac5('0x2c')]['filter']){_0x2532d0[_0x1ac5('0x35')]=_[_0x1ac5('0x36')](_0x2532d0['where'],{'$or':_['map'](_0x2a58db,function(_0xfff3df){if(_0xfff3df[_0x1ac5('0x37')]!==_0x1ac5('0x38')){var _0x1a1640={};_0x1a1640[_0xfff3df[_0x1ac5('0x25')]]={'$like':'%'+_0x515523[_0x1ac5('0x2c')]['filter']+'%'};return _0x1a1640;}})});}_0x2532d0=_['merge']({},_0x2532d0,_0x515523[_0x1ac5('0x39')]);var _0x205ec1={'where':_0x2532d0[_0x1ac5('0x35')]};return db[_0x1ac5('0x3a')]['count'](_0x205ec1)[_0x1ac5('0x23')](function(_0x20a550){_0x14b415['count']=_0x20a550;if(_0x515523['query'][_0x1ac5('0x3b')]){_0x2532d0[_0x1ac5('0x3c')]=[{'all':!![]}];}return db[_0x1ac5('0x3a')][_0x1ac5('0x3d')](_0x2532d0);})[_0x1ac5('0x23')](function(_0x311cdf){_0x14b415[_0x1ac5('0x3e')]=_0x311cdf;return _0x14b415;})[_0x1ac5('0x23')](respondWithFilteredResult(_0x1e7830,_0x2532d0))[_0x1ac5('0x3f')](handleError(_0x1e7830,null));};exports[_0x1ac5('0x40')]=function(_0x58a59a,_0x4412ed){var _0x158b9d={'raw':!![],'where':{'id':_0x58a59a[_0x1ac5('0x41')]['id']}},_0x543ea7={};_0x543ea7[_0x1ac5('0x2b')]=_['keys'](db[_0x1ac5('0x3a')]['rawAttributes']);_0x543ea7[_0x1ac5('0x2c')]=_[_0x1ac5('0x42')](_0x58a59a[_0x1ac5('0x2c')]);_0x543ea7['filters']=_[_0x1ac5('0x2e')](_0x543ea7[_0x1ac5('0x2b')],_0x543ea7['query']);_0x158b9d[_0x1ac5('0x2f')]=_[_0x1ac5('0x2e')](_0x543ea7[_0x1ac5('0x2b')],qs[_0x1ac5('0x30')](_0x58a59a[_0x1ac5('0x2c')][_0x1ac5('0x30')]));_0x158b9d[_0x1ac5('0x2f')]=_0x158b9d['attributes']['length']?_0x158b9d[_0x1ac5('0x2f')]:_0x543ea7['model'];if(_0x58a59a[_0x1ac5('0x2c')][_0x1ac5('0x3b')]){_0x158b9d[_0x1ac5('0x3c')]=[{'all':!![]}];}_0x158b9d=_[_0x1ac5('0x36')]({},_0x158b9d,_0x58a59a[_0x1ac5('0x39')]);return db[_0x1ac5('0x3a')][_0x1ac5('0x43')](_0x158b9d)[_0x1ac5('0x23')](handleEntityNotFound(_0x4412ed,null))[_0x1ac5('0x23')](respondWithResult(_0x4412ed,null))[_0x1ac5('0x3f')](handleError(_0x4412ed,null));};exports[_0x1ac5('0x44')]=function(_0x3985c7,_0x6f71){return db[_0x1ac5('0x3a')]['create'](_0x3985c7[_0x1ac5('0x45')],{})[_0x1ac5('0x23')](respondWithResult(_0x6f71,0xc9))[_0x1ac5('0x3f')](handleError(_0x6f71,null));};exports[_0x1ac5('0x21')]=function(_0x3ef742,_0xa668a4){if(_0x3ef742[_0x1ac5('0x45')]['id']){delete _0x3ef742['body']['id'];}return db[_0x1ac5('0x3a')][_0x1ac5('0x43')]({'where':{'id':_0x3ef742[_0x1ac5('0x41')]['id']}})[_0x1ac5('0x23')](handleEntityNotFound(_0xa668a4,null))[_0x1ac5('0x23')](saveUpdates(_0x3ef742['body'],null))['then'](respondWithResult(_0xa668a4,null))[_0x1ac5('0x3f')](handleError(_0xa668a4,null));};exports['destroy']=function(_0x128059,_0x350ee1){return db['SugarcrmField'][_0x1ac5('0x43')]({'where':{'id':_0x128059['params']['id']}})[_0x1ac5('0x23')](handleEntityNotFound(_0x350ee1,null))[_0x1ac5('0x23')](removeEntity(_0x350ee1,null))[_0x1ac5('0x3f')](handleError(_0x350ee1,null));};
\ No newline at end of file
index c198ec8..a913569 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fa3=['FieldId','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','sugarcrm_unique_index','idField'];(function(_0x4346a8,_0x2dd8e2){var _0x287ceb=function(_0x49974e){while(--_0x49974e){_0x4346a8['push'](_0x4346a8['shift']());}};_0x287ceb(++_0x2dd8e2);}(_0x5fa3,0x196));var _0x35fa=function(_0x55aa15,_0x203620){_0x55aa15=_0x55aa15-0x0;var _0x3d7314=_0x5fa3[_0x55aa15];return _0x3d7314;};'use strict';var _=require(_0x35fa('0x0'));var util=require('util');var logger=require(_0x35fa('0x1'))(_0x35fa('0x2'));var moment=require(_0x35fa('0x3'));var BPromise=require(_0x35fa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x35fa('0x5'));var rimraf=require(_0x35fa('0x6'));var config=require(_0x35fa('0x7'));var attributes=require(_0x35fa('0x8'));module[_0x35fa('0x9')]=function(_0x55ea37,_0x41bef4){return _0x55ea37[_0x35fa('0xa')](_0x35fa('0xb'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x35fa('0xc'),'fields':[_0x35fa('0xd'),_0x35fa('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x719a=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','SugarcrmField','idField','lodash','util'];(function(_0x241614,_0xbb93a0){var _0xa4e7ac=function(_0x503986){while(--_0x503986){_0x241614['push'](_0x241614['shift']());}};_0xa4e7ac(++_0xbb93a0);}(_0x719a,0xc4));var _0xa719=function(_0x522c18,_0x3b384c){_0x522c18=_0x522c18-0x0;var _0x313f52=_0x719a[_0x522c18];return _0x313f52;};'use strict';var _=require(_0xa719('0x0'));var util=require(_0xa719('0x1'));var logger=require(_0xa719('0x2'))(_0xa719('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa719('0x4'));var fs=require('fs');var path=require(_0xa719('0x5'));var rimraf=require(_0xa719('0x6'));var config=require(_0xa719('0x7'));var attributes=require(_0xa719('0x8'));module['exports']=function(_0x352755,_0x515e66){return _0x352755['define'](_0xa719('0x9'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0xa719('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6b00f28..2bed5ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5117=['../../config/environment','jayson/promise','client','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','rpc'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x5117,0x163));var _0x7511=function(_0xa4f636,_0xaca1b6){_0xa4f636=_0xa4f636-0x0;var _0x37e02a=_0x5117[_0xa4f636];return _0x37e02a;};'use strict';var _=require(_0x7511('0x0'));var util=require('util');var moment=require(_0x7511('0x1'));var BPromise=require(_0x7511('0x2'));var rs=require(_0x7511('0x3'));var fs=require('fs');var Redis=require(_0x7511('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7511('0x5'));var config=require(_0x7511('0x6'));var jayson=require(_0x7511('0x7'));var client=jayson[_0x7511('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f812f,_0x593f4c,_0xec531f){return new BPromise(function(_0x4dc013,_0x3c166b){return client['request'](_0x2f812f,_0xec531f)[_0x7511('0x9')](function(_0x4ac918){logger['info'](_0x7511('0xa'),_0x593f4c,_0x7511('0xb'));logger['debug'](_0x7511('0xc'),_0x593f4c,_0x7511('0xb'),JSON['stringify'](_0x4ac918));if(_0x4ac918['error']){if(_0x4ac918[_0x7511('0xd')][_0x7511('0xe')]===0x1f4){logger[_0x7511('0xd')](_0x7511('0xa'),_0x593f4c,_0x4ac918[_0x7511('0xd')][_0x7511('0xf')]);return _0x3c166b(_0x4ac918[_0x7511('0xd')][_0x7511('0xf')]);}logger[_0x7511('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x593f4c,_0x4ac918[_0x7511('0xd')][_0x7511('0xf')]);return _0x4dc013(_0x4ac918['error'][_0x7511('0xf')]);}else{logger[_0x7511('0x10')](_0x7511('0xa'),_0x593f4c,_0x7511('0xb'));_0x4dc013(_0x4ac918[_0x7511('0x11')][_0x7511('0xf')]);}})[_0x7511('0x12')](function(_0x205b09){logger[_0x7511('0xd')](_0x7511('0xa'),_0x593f4c,_0x205b09);_0x3c166b(_0x205b09);});});}
\ No newline at end of file
+var _0x052e=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x520cad,_0x310b73){var _0x8f99f5=function(_0x37c132){while(--_0x37c132){_0x520cad['push'](_0x520cad['shift']());}};_0x8f99f5(++_0x310b73);}(_0x052e,0x13b));var _0xe052=function(_0x58e2a5,_0x4e822c){_0x58e2a5=_0x58e2a5-0x0;var _0x440ba0=_0x052e[_0x58e2a5];return _0x440ba0;};'use strict';var _=require(_0xe052('0x0'));var util=require(_0xe052('0x1'));var moment=require(_0xe052('0x2'));var BPromise=require(_0xe052('0x3'));var rs=require(_0xe052('0x4'));var fs=require('fs');var Redis=require(_0xe052('0x5'));var db=require(_0xe052('0x6'))['db'];var utils=require(_0xe052('0x7'));var logger=require(_0xe052('0x8'))(_0xe052('0x9'));var config=require(_0xe052('0xa'));var jayson=require(_0xe052('0xb'));var client=jayson['client'][_0xe052('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x214220,_0x4e530d,_0x212c6e){return new BPromise(function(_0x181d8e,_0x360330){return client[_0xe052('0xd')](_0x214220,_0x212c6e)[_0xe052('0xe')](function(_0x2bd615){logger[_0xe052('0xf')](_0xe052('0x10'),_0x4e530d,_0xe052('0x11'));logger['debug'](_0xe052('0x12'),_0x4e530d,_0xe052('0x11'),JSON[_0xe052('0x13')](_0x2bd615));if(_0x2bd615['error']){if(_0x2bd615[_0xe052('0x14')]['code']===0x1f4){logger[_0xe052('0x14')](_0xe052('0x10'),_0x4e530d,_0x2bd615['error'][_0xe052('0x15')]);return _0x360330(_0x2bd615[_0xe052('0x14')]['message']);}logger['error'](_0xe052('0x10'),_0x4e530d,_0x2bd615[_0xe052('0x14')]['message']);return _0x181d8e(_0x2bd615[_0xe052('0x14')][_0xe052('0x15')]);}else{logger[_0xe052('0xf')](_0xe052('0x10'),_0x4e530d,_0xe052('0x11'));_0x181d8e(_0x2bd615[_0xe052('0x16')]['message']);}})['catch'](function(_0xa5a7a4){logger[_0xe052('0x14')]('SugarcrmField,\x20%s,\x20%s',_0x4e530d,_0xa5a7a4);_0x360330(_0xa5a7a4);});});}
\ No newline at end of file
index ddd81f6..9d1d089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d3e=['show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','/:id','isAuthenticated'];(function(_0x26c85d,_0x5de0f3){var _0x2ce1e9=function(_0x5f2e85){while(--_0x5f2e85){_0x26c85d['push'](_0x26c85d['shift']());}};_0x2ce1e9(++_0x5de0f3);}(_0x9d3e,0xd5));var _0xe9d3=function(_0x18776a,_0x4fecab){_0x18776a=_0x18776a-0x0;var _0x484e4a=_0x9d3e[_0x18776a];return _0x484e4a;};'use strict';var multer=require(_0xe9d3('0x0'));var util=require('util');var path=require(_0xe9d3('0x1'));var timeout=require('connect-timeout');var express=require(_0xe9d3('0x2'));var router=express[_0xe9d3('0x3')]();var fs_extra=require(_0xe9d3('0x4'));var auth=require(_0xe9d3('0x5'));var interaction=require(_0xe9d3('0x6'));var config=require(_0xe9d3('0x7'));var controller=require(_0xe9d3('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xe9d3('0x9')](_0xe9d3('0xa'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0xc')]);router[_0xe9d3('0x9')](_0xe9d3('0xd'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0xe')]);router[_0xe9d3('0x9')](_0xe9d3('0xf'),auth['isAuthenticated'](),controller[_0xe9d3('0x10')]);router['post']('/',auth[_0xe9d3('0xb')](),controller[_0xe9d3('0x11')]);router[_0xe9d3('0x12')](_0xe9d3('0xd'),auth['isAuthenticated'](),controller[_0xe9d3('0x13')]);router[_0xe9d3('0x14')](_0xe9d3('0xa'),auth['isAuthenticated'](),controller[_0xe9d3('0x15')]);router[_0xe9d3('0x16')](_0xe9d3('0xa'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0x17')]);module[_0xe9d3('0x18')]=router;
\ No newline at end of file
+var _0x257e=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','delete','destroy','exports','util','path','express','fs-extra'];(function(_0xe6e5c0,_0x147112){var _0x44f559=function(_0x4f7ded){while(--_0x4f7ded){_0xe6e5c0['push'](_0xe6e5c0['shift']());}};_0x44f559(++_0x147112);}(_0x257e,0x1dc));var _0xe257=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0x257e[_0x47568e];return _0x33815b;};'use strict';var multer=require('multer');var util=require(_0xe257('0x0'));var path=require(_0xe257('0x1'));var timeout=require('connect-timeout');var express=require(_0xe257('0x2'));var router=express['Router']();var fs_extra=require(_0xe257('0x3'));var auth=require(_0xe257('0x4'));var interaction=require(_0xe257('0x5'));var config=require(_0xe257('0x6'));var controller=require('./intVtigerAccount.controller');router[_0xe257('0x7')]('/',auth[_0xe257('0x8')](),controller['index']);router[_0xe257('0x7')](_0xe257('0x9'),auth[_0xe257('0x8')](),controller['show']);router[_0xe257('0x7')](_0xe257('0xa'),auth[_0xe257('0x8')](),controller[_0xe257('0xb')]);router[_0xe257('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0xe257('0xc')]);router[_0xe257('0xd')]('/',auth['isAuthenticated'](),controller[_0xe257('0xe')]);router[_0xe257('0xd')]('/:id/configurations',auth[_0xe257('0x8')](),controller[_0xe257('0xf')]);router[_0xe257('0x10')](_0xe257('0x9'),auth[_0xe257('0x8')](),controller['update']);router[_0xe257('0x11')](_0xe257('0x9'),auth['isAuthenticated'](),controller[_0xe257('0x12')]);module[_0xe257('0x13')]=router;
\ No newline at end of file
index 9d89678..0c532eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7983=['HelpDesk','sequelize','exports','STRING'];(function(_0x18e232,_0x172b0a){var _0x85a3f9=function(_0xfcb271){while(--_0xfcb271){_0x18e232['push'](_0x18e232['shift']());}};_0x85a3f9(++_0x172b0a);}(_0x7983,0x135));var _0x3798=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x7983[_0x1d1779];return _0x2377e9;};'use strict';var Sequelize=require(_0x3798('0x0'));module[_0x3798('0x1')]={'name':{'type':Sequelize[_0x3798('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x3798('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x3798('0x2')],'allowNull':![],'defaultValue':_0x3798('0x3')},'remoteUri':{'type':Sequelize[_0x3798('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x3798('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x3798('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xd5d2=['STRING','HelpDesk'];(function(_0x33a48c,_0x4676f1){var _0x512897=function(_0x3423af){while(--_0x3423af){_0x33a48c['push'](_0x33a48c['shift']());}};_0x512897(++_0x4676f1);}(_0xd5d2,0xd4));var _0x2d5d=function(_0x54f1ba,_0x9156cb){_0x54f1ba=_0x54f1ba-0x0;var _0x540fb3=_0xd5d2[_0x54f1ba];return _0x540fb3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2d5d('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x2d5d('0x0')]},'username':{'type':Sequelize[_0x2d5d('0x0')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2d5d('0x1')},'remoteUri':{'type':Sequelize[_0x2d5d('0x0')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x2d5d('0x0')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x2d5d('0x0')],'allowNull':![]}};
\ No newline at end of file
index faf5eda..d365de0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fa0=['VtigerConfiguration','order','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','username','moduleName','serverUrl','accessKey','remoteUri','slice','%s/webservice.php','GET','getchallenge','POST','token','success','describe','result','sessionName','autogenerated','reference','owner','remove','includes','editable','false','startsWith','cf_','picklistValues','label','value','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','undefined','limit','count','offset','Content-Range','json','reject','update','then','destroy','error','name','index','map','VtigerAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','findAll','catch','show','params','include','merge','find','create','body'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8fa0,0x1dd));var _0x08fa=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x8fa0[_0x3e5086];return _0xfeb102;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x08fa('0x0'));var rp=require('request-promise');var moment=require(_0x08fa('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x08fa('0x2'));var util=require('util');var path=require(_0x08fa('0x3'));var sox=require(_0x08fa('0x4'));var csv=require(_0x08fa('0x5'));var ejs=require(_0x08fa('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x08fa('0x7'));var jsforce=require(_0x08fa('0x8'));var deskjs=require(_0x08fa('0x9'));var toCsv=require(_0x08fa('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x08fa('0xa'));var authService=require('../../components/auth/service');var qs=require(_0x08fa('0xb'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x08fa('0xc'));var logger=require(_0x08fa('0xd'))(_0x08fa('0xe'));var utils=require(_0x08fa('0xf'));var config=require('../../config/environment');var licenseUtil=require(_0x08fa('0x10'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x34ab4a,_0x5bc50e){_0x5bc50e=_0x5bc50e||0xcc;return function(_0x14351f){if(_0x14351f){return _0x34ab4a[_0x08fa('0x11')](_0x5bc50e);}return _0x34ab4a[_0x08fa('0x12')](_0x5bc50e)['end']();};}function respondWithResult(_0x4797fe,_0x3500af){_0x3500af=_0x3500af||0xc8;return function(_0x2a03e3){if(_0x2a03e3){return _0x4797fe[_0x08fa('0x12')](_0x3500af)['json'](_0x2a03e3);}};}function respondWithFilteredResult(_0x32e29c,_0x4dc54b){return function(_0x1d942c){if(_0x1d942c){var _0x5c3647=typeof _0x4dc54b['offset']===_0x08fa('0x13')&&typeof _0x4dc54b[_0x08fa('0x14')]===_0x08fa('0x13');var _0x283f85=_0x1d942c[_0x08fa('0x15')];var _0x1cb9d5=_0x5c3647?0x0:_0x4dc54b[_0x08fa('0x16')];var _0x147d23=_0x5c3647?_0x1d942c[_0x08fa('0x15')]:_0x4dc54b[_0x08fa('0x16')]+_0x4dc54b[_0x08fa('0x14')];var _0x49542d;if(_0x147d23>=_0x283f85){_0x147d23=_0x283f85;_0x49542d=0xc8;}else{_0x49542d=0xce;}_0x32e29c['status'](_0x49542d);return _0x32e29c['set'](_0x08fa('0x17'),_0x1cb9d5+'-'+_0x147d23+'/'+_0x283f85)[_0x08fa('0x18')](_0x1d942c);}return null;};}function patchUpdates(_0x298bb0){return function(_0x4ee605){try{jsonpatch['apply'](_0x4ee605,_0x298bb0,!![]);}catch(_0x133e2d){return BPromise[_0x08fa('0x19')](_0x133e2d);}return _0x4ee605['save']();};}function saveUpdates(_0x58eeec,_0x291d2a){return function(_0xd0654d){if(_0xd0654d){return _0xd0654d[_0x08fa('0x1a')](_0x58eeec)[_0x08fa('0x1b')](function(_0x3ae44a){return _0x3ae44a;});}return null;};}function removeEntity(_0x4a2a1a,_0xb56245){return function(_0x43037a){if(_0x43037a){return _0x43037a[_0x08fa('0x1c')]()[_0x08fa('0x1b')](function(){_0x4a2a1a[_0x08fa('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c6507,_0x412f8a){return function(_0x4006f3){if(!_0x4006f3){_0x1c6507[_0x08fa('0x11')](0x194);}return _0x4006f3;};}function handleError(_0xca2ea,_0x2f9218){_0x2f9218=_0x2f9218||0x1f4;return function(_0x30b14b){logger[_0x08fa('0x1d')](_0x30b14b['stack']);if(_0x30b14b[_0x08fa('0x1e')]){delete _0x30b14b[_0x08fa('0x1e')];}_0xca2ea[_0x08fa('0x12')](_0x2f9218)['send'](_0x30b14b);};}exports[_0x08fa('0x1f')]=function(_0x3fa8ea,_0x4e577f){var _0x3ae73b={},_0x4ecb0a={},_0x5c0675={'count':0x0,'rows':[]};var _0x144bd9=_[_0x08fa('0x20')](db[_0x08fa('0x21')][_0x08fa('0x22')],function(_0x1578ad){return{'name':_0x1578ad[_0x08fa('0x23')],'type':_0x1578ad[_0x08fa('0x24')][_0x08fa('0x25')]};});_0x4ecb0a['model']=_[_0x08fa('0x20')](_0x144bd9,'name');_0x4ecb0a[_0x08fa('0x26')]=_[_0x08fa('0x27')](_0x3fa8ea[_0x08fa('0x26')]);_0x4ecb0a[_0x08fa('0x28')]=_[_0x08fa('0x29')](_0x4ecb0a[_0x08fa('0x2a')],_0x4ecb0a[_0x08fa('0x26')]);_0x3ae73b['attributes']=_[_0x08fa('0x29')](_0x4ecb0a[_0x08fa('0x2a')],qs['fields'](_0x3fa8ea[_0x08fa('0x26')][_0x08fa('0x2b')]));_0x3ae73b[_0x08fa('0x2c')]=_0x3ae73b[_0x08fa('0x2c')][_0x08fa('0x2d')]?_0x3ae73b[_0x08fa('0x2c')]:_0x4ecb0a[_0x08fa('0x2a')];if(!_0x3fa8ea['query'][_0x08fa('0x2e')](_0x08fa('0x2f'))){_0x3ae73b[_0x08fa('0x14')]=qs[_0x08fa('0x14')](_0x3fa8ea[_0x08fa('0x26')][_0x08fa('0x14')]);_0x3ae73b[_0x08fa('0x16')]=qs['offset'](_0x3fa8ea['query'][_0x08fa('0x16')]);}_0x3ae73b['order']=qs[_0x08fa('0x30')](_0x3fa8ea['query'][_0x08fa('0x30')]);_0x3ae73b[_0x08fa('0x31')]=qs[_0x08fa('0x28')](_[_0x08fa('0x32')](_0x3fa8ea[_0x08fa('0x26')],_0x4ecb0a['filters']),_0x144bd9);if(_0x3fa8ea[_0x08fa('0x26')][_0x08fa('0x33')]){_0x3ae73b[_0x08fa('0x31')]=_['merge'](_0x3ae73b[_0x08fa('0x31')],{'$or':_[_0x08fa('0x20')](_0x144bd9,function(_0x2c2503){if(_0x2c2503[_0x08fa('0x24')]!==_0x08fa('0x34')){var _0x52e50a={};_0x52e50a[_0x2c2503[_0x08fa('0x1e')]]={'$like':'%'+_0x3fa8ea['query'][_0x08fa('0x33')]+'%'};return _0x52e50a;}})});}_0x3ae73b=_['merge']({},_0x3ae73b,_0x3fa8ea[_0x08fa('0x35')]);var _0x2917ab={'where':_0x3ae73b[_0x08fa('0x31')]};return db[_0x08fa('0x21')][_0x08fa('0x15')](_0x2917ab)[_0x08fa('0x1b')](function(_0x1dd966){_0x5c0675[_0x08fa('0x15')]=_0x1dd966;if(_0x3fa8ea[_0x08fa('0x26')]['includeAll']){_0x3ae73b['include']=[{'all':!![]}];}return db[_0x08fa('0x21')][_0x08fa('0x36')](_0x3ae73b);})[_0x08fa('0x1b')](function(_0x5ce90f){_0x5c0675['rows']=_0x5ce90f;return _0x5c0675;})[_0x08fa('0x1b')](respondWithFilteredResult(_0x4e577f,_0x3ae73b))[_0x08fa('0x37')](handleError(_0x4e577f,null));};exports[_0x08fa('0x38')]=function(_0xab297d,_0x4bfa4e){var _0x7a8e8f={'raw':![],'where':{'id':_0xab297d[_0x08fa('0x39')]['id']}},_0x50449b={};_0x50449b['model']=_[_0x08fa('0x27')](db[_0x08fa('0x21')]['rawAttributes']);_0x50449b[_0x08fa('0x26')]=_['keys'](_0xab297d[_0x08fa('0x26')]);_0x50449b['filters']=_[_0x08fa('0x29')](_0x50449b[_0x08fa('0x2a')],_0x50449b['query']);_0x7a8e8f[_0x08fa('0x2c')]=_[_0x08fa('0x29')](_0x50449b[_0x08fa('0x2a')],qs[_0x08fa('0x2b')](_0xab297d[_0x08fa('0x26')][_0x08fa('0x2b')]));_0x7a8e8f[_0x08fa('0x2c')]=_0x7a8e8f[_0x08fa('0x2c')][_0x08fa('0x2d')]?_0x7a8e8f['attributes']:_0x50449b['model'];if(_0xab297d[_0x08fa('0x26')]['includeAll']){_0x7a8e8f[_0x08fa('0x3a')]=[{'all':!![]}];}_0x7a8e8f=_[_0x08fa('0x3b')]({},_0x7a8e8f,_0xab297d['options']);return db[_0x08fa('0x21')][_0x08fa('0x3c')](_0x7a8e8f)[_0x08fa('0x1b')](handleEntityNotFound(_0x4bfa4e,null))[_0x08fa('0x1b')](respondWithResult(_0x4bfa4e,null))[_0x08fa('0x37')](handleError(_0x4bfa4e,null));};exports[_0x08fa('0x3d')]=function(_0x2bd988,_0x29b70f){return db['VtigerAccount'][_0x08fa('0x3d')](_0x2bd988[_0x08fa('0x3e')],{})[_0x08fa('0x1b')](respondWithResult(_0x29b70f,0xc9))['catch'](handleError(_0x29b70f,null));};exports[_0x08fa('0x1a')]=function(_0x5c8189,_0x1367d4){if(_0x5c8189[_0x08fa('0x3e')]['id']){delete _0x5c8189['body']['id'];}return db['VtigerAccount'][_0x08fa('0x3c')]({'where':{'id':_0x5c8189[_0x08fa('0x39')]['id']}})[_0x08fa('0x1b')](handleEntityNotFound(_0x1367d4,null))[_0x08fa('0x1b')](saveUpdates(_0x5c8189[_0x08fa('0x3e')],null))[_0x08fa('0x1b')](respondWithResult(_0x1367d4,null))[_0x08fa('0x37')](handleError(_0x1367d4,null));};exports[_0x08fa('0x1c')]=function(_0x18d3aa,_0x20dad8){return db[_0x08fa('0x21')][_0x08fa('0x3c')]({'where':{'id':_0x18d3aa[_0x08fa('0x39')]['id']}})[_0x08fa('0x1b')](handleEntityNotFound(_0x20dad8,null))[_0x08fa('0x1b')](removeEntity(_0x20dad8,null))[_0x08fa('0x37')](handleError(_0x20dad8,null));};exports['getConfigurations']=function(_0x553a3a,_0x12f19b,_0x4cca6d){var _0x58a75f={};var _0x48521a={};var _0x5e880b;var _0x36b9c3;return db['VtigerAccount']['findOne']({'where':{'id':_0x553a3a[_0x08fa('0x39')]['id']}})[_0x08fa('0x1b')](handleEntityNotFound(_0x12f19b,null))[_0x08fa('0x1b')](function(_0x24f387){if(_0x24f387){_0x5e880b=_0x24f387;_0x48521a[_0x08fa('0x2a')]=_[_0x08fa('0x27')](db[_0x08fa('0x3f')]['rawAttributes']);_0x48521a[_0x08fa('0x26')]=_[_0x08fa('0x27')](_0x553a3a['query']);_0x48521a[_0x08fa('0x28')]=_[_0x08fa('0x29')](_0x48521a[_0x08fa('0x2a')],_0x48521a['query']);_0x58a75f['attributes']=_['intersection'](_0x48521a[_0x08fa('0x2a')],qs[_0x08fa('0x2b')](_0x553a3a[_0x08fa('0x26')][_0x08fa('0x2b')]));_0x58a75f[_0x08fa('0x2c')]=_0x58a75f[_0x08fa('0x2c')][_0x08fa('0x2d')]?_0x58a75f[_0x08fa('0x2c')]:_0x48521a['model'];_0x58a75f[_0x08fa('0x40')]=qs[_0x08fa('0x30')](_0x553a3a[_0x08fa('0x26')][_0x08fa('0x30')]);_0x58a75f[_0x08fa('0x31')]=qs[_0x08fa('0x28')](_[_0x08fa('0x32')](_0x553a3a['query'],_0x48521a[_0x08fa('0x28')]));if(_0x553a3a[_0x08fa('0x26')][_0x08fa('0x33')]){_0x58a75f[_0x08fa('0x31')]=_['merge'](_0x58a75f[_0x08fa('0x31')],{'$or':_['map'](_0x58a75f[_0x08fa('0x2c')],function(_0x355929){var _0x47bcc3={};_0x47bcc3[_0x355929]={'$like':'%'+_0x553a3a[_0x08fa('0x26')][_0x08fa('0x33')]+'%'};return _0x47bcc3;})});}_0x58a75f=_[_0x08fa('0x3b')]({},_0x58a75f,_0x553a3a[_0x08fa('0x35')]);return _0x5e880b[_0x08fa('0x41')](_0x58a75f);}})[_0x08fa('0x1b')](function(_0x553867){if(_0x553867){_0x36b9c3=_0x553867[_0x08fa('0x2d')];if(!_0x553a3a[_0x08fa('0x26')]['hasOwnProperty'](_0x08fa('0x2f'))){_0x58a75f['limit']=qs[_0x08fa('0x14')](_0x553a3a[_0x08fa('0x26')][_0x08fa('0x14')]);_0x58a75f[_0x08fa('0x16')]=qs[_0x08fa('0x16')](_0x553a3a['query'][_0x08fa('0x16')]);}return _0x5e880b[_0x08fa('0x41')](_0x58a75f);}})[_0x08fa('0x1b')](function(_0x5b99b9){if(_0x5b99b9){return _0x5b99b9?{'count':_0x36b9c3,'rows':_0x5b99b9}:null;}})['then'](respondWithResult(_0x12f19b,null))['catch'](handleError(_0x12f19b,null));};exports[_0x08fa('0x42')]=function(_0xde918,_0x81877a,_0x1f69e9){if(_0xde918[_0x08fa('0x3e')]['id']){delete _0xde918[_0x08fa('0x3e')]['id'];}return db[_0x08fa('0x21')][_0x08fa('0x43')]({'where':{'id':_0xde918[_0x08fa('0x39')]['id']}})['then'](handleEntityNotFound(_0x81877a,null))[_0x08fa('0x1b')](function(_0x4598b5){if(_0x4598b5){_0xde918[_0x08fa('0x3e')][_0x08fa('0x44')]=_0x4598b5['id'];_0xde918[_0x08fa('0x3e')][_0x08fa('0x45')]=integrations[_0x08fa('0x46')](_0xde918[_0x08fa('0x3e')][_0x08fa('0x47')],_0xde918[_0x08fa('0x3e')]['type']);_0xde918[_0x08fa('0x3e')][_0x08fa('0x48')]=integrations[_0x08fa('0x49')](_0xde918['body'][_0x08fa('0x47')],_0xde918[_0x08fa('0x3e')][_0x08fa('0x24')]);return db[_0x08fa('0x3f')]['create'](_0xde918['body'],{'include':[{'model':db[_0x08fa('0x4a')],'as':_0x08fa('0x45')},{'model':db['VtigerField'],'as':_0x08fa('0x48')}]});}return null;})[_0x08fa('0x1b')](respondWithResult(_0x81877a,null))[_0x08fa('0x37')](handleError(_0x81877a,null));};var md5=require(_0x08fa('0x4b'));exports['getFields']=function(_0x1cbfdd,_0x3c4c0c,_0x32f892){var _0x29cefb=null;var _0x517ae7=null;var _0x498ef1=null;var _0x1e4ec1=null;var _0x15bd80='';return db[_0x08fa('0x21')]['findOne']({'where':{'id':_0x1cbfdd['params']['id']},'attributes':['id',_0x08fa('0x1e'),_0x08fa('0x4c'),'description',_0x08fa('0x4d'),'remoteUri',_0x08fa('0x4e'),_0x08fa('0x4f')]})[_0x08fa('0x1b')](handleEntityNotFound(_0x3c4c0c,null))['then'](function(_0x7b42ec){if(_0x7b42ec){_0x29cefb=_0x7b42ec[_0x08fa('0x4c')];_0x517ae7=_0x7b42ec[_0x08fa('0x4f')];_0x498ef1=_0x7b42ec[_0x08fa('0x4d')];_0x15bd80=_0x7b42ec[_0x08fa('0x50')];var _0x490c7b=_0x15bd80[_0x08fa('0x51')](-0x1);if(_0x490c7b==='/'){_0x15bd80=_0x15bd80['substring'](0x0,_0x15bd80['lastIndexOf'](_0x490c7b));}_0x1e4ec1=util['format'](_0x08fa('0x52'),_0x15bd80);var _0xf5964a={'method':_0x08fa('0x53'),'uri':_0x1e4ec1,'qs':{'operation':_0x08fa('0x54'),'username':_0x7b42ec['username']},'json':!![]};return rp(_0xf5964a);}})[_0x08fa('0x1b')](function(_0x3d80c9){if(_0x3d80c9['success']){var _0x390266={'method':_0x08fa('0x55'),'uri':_0x1e4ec1,'form':{'operation':'login','username':_0x29cefb,'accessKey':md5(_0x3d80c9['result'][_0x08fa('0x56')]+_0x517ae7)},'json':!![]};return rp(_0x390266);}})[_0x08fa('0x1b')](function(_0x403773){if(_0x403773[_0x08fa('0x57')]){var _0x219e15={'method':_0x08fa('0x53'),'uri':_0x1e4ec1,'qs':{'operation':_0x08fa('0x58'),'username':_0x29cefb,'sessionName':_0x403773[_0x08fa('0x59')][_0x08fa('0x5a')],'elementType':_0x498ef1},'json':!![]};return rp(_0x219e15);}})[_0x08fa('0x1b')](function(_0x40f837){if(_0x40f837[_0x08fa('0x57')]){var _0x50cee2=[_0x08fa('0x5b'),_0x08fa('0x5c'),_0x08fa('0x5d')];_[_0x08fa('0x5e')](_0x40f837[_0x08fa('0x59')]['fields'],function(_0x38e0b9){return _0x50cee2[_0x08fa('0x5f')](_0x38e0b9[_0x08fa('0x24')][_0x08fa('0x1e')]);});_[_0x08fa('0x5e')](_0x40f837[_0x08fa('0x59')][_0x08fa('0x2b')],function(_0x3f0895){return _0x3f0895[_0x08fa('0x60')]===_0x08fa('0x61');});return{'count':_0x40f837['result'][_0x08fa('0x2b')][_0x08fa('0x2d')],'rows':_[_0x08fa('0x20')](_0x40f837[_0x08fa('0x59')]['fields'],function(_0x1187b5){return{'id':_0x1187b5[_0x08fa('0x1e')],'name':_0x1187b5['label'],'custom':_[_0x08fa('0x62')](_0x1187b5['name'],_0x08fa('0x63'))?!![]:![],'options':_0x1187b5[_0x08fa('0x24')][_0x08fa('0x1e')]==='picklist'&&_0x1187b5['type'][_0x08fa('0x64')][_0x08fa('0x2d')]>0x0?_[_0x08fa('0x20')](_0x1187b5[_0x08fa('0x24')][_0x08fa('0x64')],function(_0x3127d9){return{'name':_0x3127d9[_0x08fa('0x65')],'value':_0x3127d9[_0x08fa('0x66')]};}):[]};})};}})[_0x08fa('0x1b')](respondWithResult(_0x3c4c0c,null))[_0x08fa('0x37')](function(_0x44421b){console['log'](_0x08fa('0x67')+_0x44421b);var _0x2dc9e3=_0x1cbfdd[_0x08fa('0x26')][_0x08fa('0x68')]?0x1f4:_0x44421b[_0x08fa('0x69')]||0x1f4;logger['error'](_0x08fa('0x6a'),_0x08fa('0x6b'),_0x2dc9e3,JSON['stringify'](_0x44421b));delete _0x44421b['name'];if(_0x2dc9e3===0x191){_0x2dc9e3=0x190;}_0x3c4c0c[_0x08fa('0x12')](_0x2dc9e3)['send'](_0x1cbfdd[_0x08fa('0x26')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x44421b[_0x08fa('0x69')]}:_0x44421b);});};
\ No newline at end of file
+var _0x9d86=['remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','getchallenge','login','result','token','success','describe','sessionName','autogenerated','reference','owner','remove','editable','false','label','startsWith','cf_','picklistValues','value','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','then','error','name','index','VtigerAccount','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','find','create','body','getConfigurations','VtigerConfiguration','options','nolimit','addConfiguration','AccountId','Subjects','getSubjects','type','Descriptions','channel','VtigerField','md5','getFields','findOne','username','description','moduleName'];(function(_0x2894d0,_0x127378){var _0x471b35=function(_0x92ca1b){while(--_0x92ca1b){_0x2894d0['push'](_0x2894d0['shift']());}};_0x471b35(++_0x127378);}(_0x9d86,0x123));var _0x69d8=function(_0x431e32,_0x1fb7dd){_0x431e32=_0x431e32-0x0;var _0x290898=_0x9d86[_0x431e32];return _0x290898;};'use strict';var emlformat=require(_0x69d8('0x0'));var rimraf=require(_0x69d8('0x1'));var zipdir=require(_0x69d8('0x2'));var jsonpatch=require(_0x69d8('0x3'));var rp=require(_0x69d8('0x4'));var moment=require(_0x69d8('0x5'));var BPromise=require(_0x69d8('0x6'));var Mustache=require('mustache');var util=require(_0x69d8('0x7'));var path=require(_0x69d8('0x8'));var sox=require(_0x69d8('0x9'));var csv=require(_0x69d8('0xa'));var ejs=require(_0x69d8('0xb'));var fs=require('fs');var fs_extra=require(_0x69d8('0xc'));var _=require(_0x69d8('0xd'));var squel=require(_0x69d8('0xe'));var crypto=require('crypto');var jsforce=require(_0x69d8('0xf'));var deskjs=require(_0x69d8('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x69d8('0x11'));var Redis=require(_0x69d8('0x12'));var authService=require(_0x69d8('0x13'));var qs=require(_0x69d8('0x14'));var as=require(_0x69d8('0x15'));var hardwareService=require(_0x69d8('0x16'));var logger=require('../../config/logger')(_0x69d8('0x17'));var utils=require(_0x69d8('0x18'));var config=require(_0x69d8('0x19'));var licenseUtil=require(_0x69d8('0x1a'));var db=require(_0x69d8('0x1b'))['db'];var integrations=require(_0x69d8('0x1c'));function respondWithStatusCode(_0xc63bd8,_0x1cf7d6){_0x1cf7d6=_0x1cf7d6||0xcc;return function(_0x1a8ff6){if(_0x1a8ff6){return _0xc63bd8[_0x69d8('0x1d')](_0x1cf7d6);}return _0xc63bd8[_0x69d8('0x1e')](_0x1cf7d6)[_0x69d8('0x1f')]();};}function respondWithResult(_0x17d508,_0x61eb7e){_0x61eb7e=_0x61eb7e||0xc8;return function(_0x307ab2){if(_0x307ab2){return _0x17d508[_0x69d8('0x1e')](_0x61eb7e)['json'](_0x307ab2);}};}function respondWithFilteredResult(_0x5c42a9,_0x257ff4){return function(_0x336da3){if(_0x336da3){var _0xbf2faf=typeof _0x257ff4[_0x69d8('0x20')]===_0x69d8('0x21')&&typeof _0x257ff4[_0x69d8('0x22')]===_0x69d8('0x21');var _0x59148f=_0x336da3[_0x69d8('0x23')];var _0x3270cf=_0xbf2faf?0x0:_0x257ff4['offset'];var _0x11fdc6=_0xbf2faf?_0x336da3['count']:_0x257ff4[_0x69d8('0x20')]+_0x257ff4[_0x69d8('0x22')];var _0x51964d;if(_0x11fdc6>=_0x59148f){_0x11fdc6=_0x59148f;_0x51964d=0xc8;}else{_0x51964d=0xce;}_0x5c42a9[_0x69d8('0x1e')](_0x51964d);return _0x5c42a9['set'](_0x69d8('0x24'),_0x3270cf+'-'+_0x11fdc6+'/'+_0x59148f)[_0x69d8('0x25')](_0x336da3);}return null;};}function patchUpdates(_0x558b6a){return function(_0x4bb9e8){try{jsonpatch[_0x69d8('0x26')](_0x4bb9e8,_0x558b6a,!![]);}catch(_0x348248){return BPromise[_0x69d8('0x27')](_0x348248);}return _0x4bb9e8[_0x69d8('0x28')]();};}function saveUpdates(_0x23290a,_0x1ceb82){return function(_0x3b595b){if(_0x3b595b){return _0x3b595b[_0x69d8('0x29')](_0x23290a)['then'](function(_0x8be638){return _0x8be638;});}return null;};}function removeEntity(_0xc43184,_0x47e850){return function(_0x814d1e){if(_0x814d1e){return _0x814d1e[_0x69d8('0x2a')]()[_0x69d8('0x2b')](function(){_0xc43184[_0x69d8('0x1e')](0xcc)[_0x69d8('0x1f')]();});}};}function handleEntityNotFound(_0x38128f,_0x515479){return function(_0xc5d155){if(!_0xc5d155){_0x38128f[_0x69d8('0x1d')](0x194);}return _0xc5d155;};}function handleError(_0x2a012e,_0x8e96a6){_0x8e96a6=_0x8e96a6||0x1f4;return function(_0x1edb95){logger[_0x69d8('0x2c')](_0x1edb95['stack']);if(_0x1edb95[_0x69d8('0x2d')]){delete _0x1edb95[_0x69d8('0x2d')];}_0x2a012e[_0x69d8('0x1e')](_0x8e96a6)['send'](_0x1edb95);};}exports[_0x69d8('0x2e')]=function(_0x57cf87,_0x56c7ca){var _0x1ec82c={},_0xa81605={},_0x50caf5={'count':0x0,'rows':[]};var _0x2d72a0=_['map'](db[_0x69d8('0x2f')][_0x69d8('0x30')],function(_0xd5edba){return{'name':_0xd5edba[_0x69d8('0x31')],'type':_0xd5edba['type'][_0x69d8('0x32')]};});_0xa81605['model']=_[_0x69d8('0x33')](_0x2d72a0,_0x69d8('0x2d'));_0xa81605[_0x69d8('0x34')]=_[_0x69d8('0x35')](_0x57cf87[_0x69d8('0x34')]);_0xa81605[_0x69d8('0x36')]=_[_0x69d8('0x37')](_0xa81605[_0x69d8('0x38')],_0xa81605[_0x69d8('0x34')]);_0x1ec82c[_0x69d8('0x39')]=_[_0x69d8('0x37')](_0xa81605[_0x69d8('0x38')],qs[_0x69d8('0x3a')](_0x57cf87[_0x69d8('0x34')][_0x69d8('0x3a')]));_0x1ec82c[_0x69d8('0x39')]=_0x1ec82c[_0x69d8('0x39')][_0x69d8('0x3b')]?_0x1ec82c[_0x69d8('0x39')]:_0xa81605['model'];if(!_0x57cf87[_0x69d8('0x34')][_0x69d8('0x3c')]('nolimit')){_0x1ec82c[_0x69d8('0x22')]=qs[_0x69d8('0x22')](_0x57cf87[_0x69d8('0x34')]['limit']);_0x1ec82c[_0x69d8('0x20')]=qs[_0x69d8('0x20')](_0x57cf87[_0x69d8('0x34')][_0x69d8('0x20')]);}_0x1ec82c[_0x69d8('0x3d')]=qs[_0x69d8('0x3e')](_0x57cf87[_0x69d8('0x34')][_0x69d8('0x3e')]);_0x1ec82c['where']=qs['filters'](_[_0x69d8('0x3f')](_0x57cf87[_0x69d8('0x34')],_0xa81605[_0x69d8('0x36')]),_0x2d72a0);if(_0x57cf87['query'][_0x69d8('0x40')]){_0x1ec82c[_0x69d8('0x41')]=_[_0x69d8('0x42')](_0x1ec82c[_0x69d8('0x41')],{'$or':_[_0x69d8('0x33')](_0x2d72a0,function(_0x5d9b26){if(_0x5d9b26['type']!==_0x69d8('0x43')){var _0x462c51={};_0x462c51[_0x5d9b26['name']]={'$like':'%'+_0x57cf87[_0x69d8('0x34')][_0x69d8('0x40')]+'%'};return _0x462c51;}})});}_0x1ec82c=_[_0x69d8('0x42')]({},_0x1ec82c,_0x57cf87['options']);var _0x21d1ac={'where':_0x1ec82c['where']};return db['VtigerAccount'][_0x69d8('0x23')](_0x21d1ac)[_0x69d8('0x2b')](function(_0x50f6ff){_0x50caf5[_0x69d8('0x23')]=_0x50f6ff;if(_0x57cf87['query']['includeAll']){_0x1ec82c[_0x69d8('0x44')]=[{'all':!![]}];}return db['VtigerAccount'][_0x69d8('0x45')](_0x1ec82c);})[_0x69d8('0x2b')](function(_0x45b725){_0x50caf5[_0x69d8('0x46')]=_0x45b725;return _0x50caf5;})['then'](respondWithFilteredResult(_0x56c7ca,_0x1ec82c))[_0x69d8('0x47')](handleError(_0x56c7ca,null));};exports[_0x69d8('0x48')]=function(_0x1cf6b4,_0x486e3c){var _0x380a74={'raw':![],'where':{'id':_0x1cf6b4[_0x69d8('0x49')]['id']}},_0x255286={};_0x255286[_0x69d8('0x38')]=_[_0x69d8('0x35')](db['VtigerAccount']['rawAttributes']);_0x255286[_0x69d8('0x34')]=_['keys'](_0x1cf6b4[_0x69d8('0x34')]);_0x255286[_0x69d8('0x36')]=_[_0x69d8('0x37')](_0x255286[_0x69d8('0x38')],_0x255286['query']);_0x380a74[_0x69d8('0x39')]=_['intersection'](_0x255286[_0x69d8('0x38')],qs[_0x69d8('0x3a')](_0x1cf6b4['query'][_0x69d8('0x3a')]));_0x380a74[_0x69d8('0x39')]=_0x380a74[_0x69d8('0x39')][_0x69d8('0x3b')]?_0x380a74[_0x69d8('0x39')]:_0x255286['model'];if(_0x1cf6b4[_0x69d8('0x34')][_0x69d8('0x4a')]){_0x380a74[_0x69d8('0x44')]=[{'all':!![]}];}_0x380a74=_['merge']({},_0x380a74,_0x1cf6b4['options']);return db[_0x69d8('0x2f')][_0x69d8('0x4b')](_0x380a74)[_0x69d8('0x2b')](handleEntityNotFound(_0x486e3c,null))['then'](respondWithResult(_0x486e3c,null))[_0x69d8('0x47')](handleError(_0x486e3c,null));};exports[_0x69d8('0x4c')]=function(_0x2ee212,_0x1b3cab){return db[_0x69d8('0x2f')][_0x69d8('0x4c')](_0x2ee212[_0x69d8('0x4d')],{})[_0x69d8('0x2b')](respondWithResult(_0x1b3cab,0xc9))[_0x69d8('0x47')](handleError(_0x1b3cab,null));};exports[_0x69d8('0x29')]=function(_0x46dbe3,_0x53e118){if(_0x46dbe3[_0x69d8('0x4d')]['id']){delete _0x46dbe3[_0x69d8('0x4d')]['id'];}return db[_0x69d8('0x2f')][_0x69d8('0x4b')]({'where':{'id':_0x46dbe3['params']['id']}})[_0x69d8('0x2b')](handleEntityNotFound(_0x53e118,null))[_0x69d8('0x2b')](saveUpdates(_0x46dbe3['body'],null))[_0x69d8('0x2b')](respondWithResult(_0x53e118,null))[_0x69d8('0x47')](handleError(_0x53e118,null));};exports[_0x69d8('0x2a')]=function(_0x251d4c,_0x1cd5ad){return db[_0x69d8('0x2f')]['find']({'where':{'id':_0x251d4c[_0x69d8('0x49')]['id']}})[_0x69d8('0x2b')](handleEntityNotFound(_0x1cd5ad,null))['then'](removeEntity(_0x1cd5ad,null))['catch'](handleError(_0x1cd5ad,null));};exports[_0x69d8('0x4e')]=function(_0xf97dd0,_0x55830b,_0x5cd8aa){var _0x35bbde={};var _0x3ecbe0={};var _0x5d0984;var _0x5dfbd2;return db[_0x69d8('0x2f')]['findOne']({'where':{'id':_0xf97dd0[_0x69d8('0x49')]['id']}})[_0x69d8('0x2b')](handleEntityNotFound(_0x55830b,null))[_0x69d8('0x2b')](function(_0x81a143){if(_0x81a143){_0x5d0984=_0x81a143;_0x3ecbe0[_0x69d8('0x38')]=_[_0x69d8('0x35')](db[_0x69d8('0x4f')]['rawAttributes']);_0x3ecbe0[_0x69d8('0x34')]=_[_0x69d8('0x35')](_0xf97dd0['query']);_0x3ecbe0[_0x69d8('0x36')]=_[_0x69d8('0x37')](_0x3ecbe0[_0x69d8('0x38')],_0x3ecbe0[_0x69d8('0x34')]);_0x35bbde[_0x69d8('0x39')]=_[_0x69d8('0x37')](_0x3ecbe0['model'],qs[_0x69d8('0x3a')](_0xf97dd0[_0x69d8('0x34')][_0x69d8('0x3a')]));_0x35bbde[_0x69d8('0x39')]=_0x35bbde['attributes'][_0x69d8('0x3b')]?_0x35bbde[_0x69d8('0x39')]:_0x3ecbe0['model'];_0x35bbde[_0x69d8('0x3d')]=qs[_0x69d8('0x3e')](_0xf97dd0[_0x69d8('0x34')][_0x69d8('0x3e')]);_0x35bbde[_0x69d8('0x41')]=qs[_0x69d8('0x36')](_[_0x69d8('0x3f')](_0xf97dd0['query'],_0x3ecbe0[_0x69d8('0x36')]));if(_0xf97dd0['query']['filter']){_0x35bbde[_0x69d8('0x41')]=_['merge'](_0x35bbde[_0x69d8('0x41')],{'$or':_[_0x69d8('0x33')](_0x35bbde['attributes'],function(_0x2400d7){var _0x36acab={};_0x36acab[_0x2400d7]={'$like':'%'+_0xf97dd0[_0x69d8('0x34')][_0x69d8('0x40')]+'%'};return _0x36acab;})});}_0x35bbde=_[_0x69d8('0x42')]({},_0x35bbde,_0xf97dd0[_0x69d8('0x50')]);return _0x5d0984[_0x69d8('0x4e')](_0x35bbde);}})[_0x69d8('0x2b')](function(_0x492c59){if(_0x492c59){_0x5dfbd2=_0x492c59[_0x69d8('0x3b')];if(!_0xf97dd0[_0x69d8('0x34')][_0x69d8('0x3c')](_0x69d8('0x51'))){_0x35bbde[_0x69d8('0x22')]=qs[_0x69d8('0x22')](_0xf97dd0[_0x69d8('0x34')][_0x69d8('0x22')]);_0x35bbde[_0x69d8('0x20')]=qs[_0x69d8('0x20')](_0xf97dd0[_0x69d8('0x34')][_0x69d8('0x20')]);}return _0x5d0984[_0x69d8('0x4e')](_0x35bbde);}})[_0x69d8('0x2b')](function(_0x182651){if(_0x182651){return _0x182651?{'count':_0x5dfbd2,'rows':_0x182651}:null;}})['then'](respondWithResult(_0x55830b,null))[_0x69d8('0x47')](handleError(_0x55830b,null));};exports[_0x69d8('0x52')]=function(_0x29a7da,_0x13eec4,_0x28bed6){if(_0x29a7da[_0x69d8('0x4d')]['id']){delete _0x29a7da[_0x69d8('0x4d')]['id'];}return db[_0x69d8('0x2f')]['findOne']({'where':{'id':_0x29a7da[_0x69d8('0x49')]['id']}})[_0x69d8('0x2b')](handleEntityNotFound(_0x13eec4,null))[_0x69d8('0x2b')](function(_0x56fad0){if(_0x56fad0){_0x29a7da[_0x69d8('0x4d')][_0x69d8('0x53')]=_0x56fad0['id'];_0x29a7da[_0x69d8('0x4d')][_0x69d8('0x54')]=integrations[_0x69d8('0x55')](_0x29a7da[_0x69d8('0x4d')]['channel'],_0x29a7da[_0x69d8('0x4d')][_0x69d8('0x56')]);_0x29a7da['body'][_0x69d8('0x57')]=integrations['getDescriptions'](_0x29a7da[_0x69d8('0x4d')][_0x69d8('0x58')],_0x29a7da['body'][_0x69d8('0x56')]);return db[_0x69d8('0x4f')][_0x69d8('0x4c')](_0x29a7da[_0x69d8('0x4d')],{'include':[{'model':db[_0x69d8('0x59')],'as':_0x69d8('0x54')},{'model':db[_0x69d8('0x59')],'as':_0x69d8('0x57')}]});}return null;})[_0x69d8('0x2b')](respondWithResult(_0x13eec4,null))[_0x69d8('0x47')](handleError(_0x13eec4,null));};var md5=require(_0x69d8('0x5a'));exports[_0x69d8('0x5b')]=function(_0x5774d4,_0x5578c8,_0x4b0224){var _0x25b5b4=null;var _0x119281=null;var _0x4acbca=null;var _0x2bf514=null;var _0x2b2b6f='';return db[_0x69d8('0x2f')][_0x69d8('0x5c')]({'where':{'id':_0x5774d4[_0x69d8('0x49')]['id']},'attributes':['id',_0x69d8('0x2d'),_0x69d8('0x5d'),_0x69d8('0x5e'),_0x69d8('0x5f'),_0x69d8('0x60'),_0x69d8('0x61'),_0x69d8('0x62')]})[_0x69d8('0x2b')](handleEntityNotFound(_0x5578c8,null))[_0x69d8('0x2b')](function(_0x4add92){if(_0x4add92){_0x25b5b4=_0x4add92[_0x69d8('0x5d')];_0x119281=_0x4add92['accessKey'];_0x4acbca=_0x4add92['moduleName'];_0x2b2b6f=_0x4add92[_0x69d8('0x60')];var _0x1f07d7=_0x2b2b6f[_0x69d8('0x63')](-0x1);if(_0x1f07d7==='/'){_0x2b2b6f=_0x2b2b6f[_0x69d8('0x64')](0x0,_0x2b2b6f[_0x69d8('0x65')](_0x1f07d7));}_0x2bf514=util[_0x69d8('0x66')](_0x69d8('0x67'),_0x2b2b6f);var _0x324367={'method':'GET','uri':_0x2bf514,'qs':{'operation':_0x69d8('0x68'),'username':_0x4add92[_0x69d8('0x5d')]},'json':!![]};return rp(_0x324367);}})[_0x69d8('0x2b')](function(_0x5425f5){if(_0x5425f5['success']){var _0x6854e2={'method':'POST','uri':_0x2bf514,'form':{'operation':_0x69d8('0x69'),'username':_0x25b5b4,'accessKey':md5(_0x5425f5[_0x69d8('0x6a')][_0x69d8('0x6b')]+_0x119281)},'json':!![]};return rp(_0x6854e2);}})['then'](function(_0x5451f0){if(_0x5451f0[_0x69d8('0x6c')]){var _0x1bbb63={'method':'GET','uri':_0x2bf514,'qs':{'operation':_0x69d8('0x6d'),'username':_0x25b5b4,'sessionName':_0x5451f0[_0x69d8('0x6a')][_0x69d8('0x6e')],'elementType':_0x4acbca},'json':!![]};return rp(_0x1bbb63);}})['then'](function(_0x4f844c){if(_0x4f844c[_0x69d8('0x6c')]){var _0x20de8c=[_0x69d8('0x6f'),_0x69d8('0x70'),_0x69d8('0x71')];_[_0x69d8('0x72')](_0x4f844c[_0x69d8('0x6a')][_0x69d8('0x3a')],function(_0x3b3955){return _0x20de8c['includes'](_0x3b3955[_0x69d8('0x56')][_0x69d8('0x2d')]);});_[_0x69d8('0x72')](_0x4f844c[_0x69d8('0x6a')][_0x69d8('0x3a')],function(_0x3b33d9){return _0x3b33d9[_0x69d8('0x73')]===_0x69d8('0x74');});return{'count':_0x4f844c[_0x69d8('0x6a')][_0x69d8('0x3a')][_0x69d8('0x3b')],'rows':_['map'](_0x4f844c[_0x69d8('0x6a')][_0x69d8('0x3a')],function(_0x3aaa35){return{'id':_0x3aaa35[_0x69d8('0x2d')],'name':_0x3aaa35[_0x69d8('0x75')],'custom':_[_0x69d8('0x76')](_0x3aaa35[_0x69d8('0x2d')],_0x69d8('0x77'))?!![]:![],'options':_0x3aaa35[_0x69d8('0x56')][_0x69d8('0x2d')]==='picklist'&&_0x3aaa35['type'][_0x69d8('0x78')][_0x69d8('0x3b')]>0x0?_['map'](_0x3aaa35['type'][_0x69d8('0x78')],function(_0x5e7764){return{'name':_0x5e7764[_0x69d8('0x75')],'value':_0x5e7764[_0x69d8('0x79')]};}):[]};})};}})['then'](respondWithResult(_0x5578c8,null))['catch'](function(_0x43e9b6){console['log'](_0x69d8('0x7a')+_0x43e9b6);var _0x3cfe03=_0x5774d4[_0x69d8('0x34')][_0x69d8('0x7b')]?0x1f4:_0x43e9b6[_0x69d8('0x7c')]||0x1f4;logger[_0x69d8('0x2c')](_0x69d8('0x7d'),'getFields',_0x3cfe03,JSON[_0x69d8('0x7e')](_0x43e9b6));delete _0x43e9b6[_0x69d8('0x2d')];if(_0x3cfe03===0x191){_0x3cfe03=0x190;}_0x5578c8['status'](_0x3cfe03)[_0x69d8('0x7f')](_0x5774d4[_0x69d8('0x34')][_0x69d8('0x7b')]?{'message':_0x69d8('0x80'),'statusCode':_0x43e9b6['statusCode']}:_0x43e9b6);});};
\ No newline at end of file
index 98d16d8..04b5c2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb88=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','lodash','util','../../config/logger','api'];(function(_0xdcafe7,_0x3cb34d){var _0x1d7fb5=function(_0x283de3){while(--_0x283de3){_0xdcafe7['push'](_0xdcafe7['shift']());}};_0x1d7fb5(++_0x3cb34d);}(_0xeb88,0x1d8));var _0x8eb8=function(_0x441a4e,_0x412d6a){_0x441a4e=_0x441a4e-0x0;var _0x135f29=_0xeb88[_0x441a4e];return _0x135f29;};'use strict';var _=require(_0x8eb8('0x0'));var util=require(_0x8eb8('0x1'));var logger=require(_0x8eb8('0x2'))(_0x8eb8('0x3'));var moment=require(_0x8eb8('0x4'));var BPromise=require(_0x8eb8('0x5'));var rp=require(_0x8eb8('0x6'));var fs=require('fs');var path=require(_0x8eb8('0x7'));var rimraf=require(_0x8eb8('0x8'));var config=require(_0x8eb8('0x9'));var attributes=require(_0x8eb8('0xa'));var integrations=require(_0x8eb8('0xb'));module[_0x8eb8('0xc')]=function(_0x171519,_0x28d031){return _0x171519[_0x8eb8('0xd')]('VtigerAccount',attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf82b=['path','rimraf','../../config/environment','define','VtigerAccount','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4df1f5,_0x39c6d2){var _0x56585b=function(_0x287b6e){while(--_0x287b6e){_0x4df1f5['push'](_0x4df1f5['shift']());}};_0x56585b(++_0x39c6d2);}(_0xf82b,0x89));var _0xbf82=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf82b[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0xbf82('0x0'));var logger=require(_0xbf82('0x1'))(_0xbf82('0x2'));var moment=require(_0xbf82('0x3'));var BPromise=require(_0xbf82('0x4'));var rp=require(_0xbf82('0x5'));var fs=require('fs');var path=require(_0xbf82('0x6'));var rimraf=require(_0xbf82('0x7'));var config=require(_0xbf82('0x8'));var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x45bd0d,_0x2fb7e2){return _0x45bd0d[_0xbf82('0x9')](_0xbf82('0xa'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7374de3..73af611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236c=['jayson/promise','client','http','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVtigerAccount','options','raw','where','attributes','include','map','model','VtigerAccount','find','ShowVtigerAccount','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x29d232,_0x2be6cb){var _0x1d6921=function(_0x2bf2b8){while(--_0x2bf2b8){_0x29d232['push'](_0x29d232['shift']());}};_0x1d6921(++_0x2be6cb);}(_0x236c,0x155));var _0xc236=function(_0x198b65,_0x14c9e6){_0x198b65=_0x198b65-0x0;var _0x33cc20=_0x236c[_0x198b65];return _0x33cc20;};'use strict';var _=require(_0xc236('0x0'));var util=require('util');var moment=require(_0xc236('0x1'));var BPromise=require(_0xc236('0x2'));var rs=require(_0xc236('0x3'));var fs=require('fs');var Redis=require(_0xc236('0x4'));var db=require(_0xc236('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc236('0x6'))(_0xc236('0x7'));var config=require(_0xc236('0x8'));var jayson=require(_0xc236('0x9'));var client=jayson[_0xc236('0xa')][_0xc236('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5abd65,_0xd612c6,_0x4d349b){return new BPromise(function(_0x51a13b,_0x5bc6a2){return client['request'](_0x5abd65,_0x4d349b)[_0xc236('0xc')](function(_0x4b8dc6){logger[_0xc236('0xd')](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));logger[_0xc236('0x10')](_0xc236('0x11'),_0xd612c6,'request\x20sent',JSON[_0xc236('0x12')](_0x4b8dc6));if(_0x4b8dc6[_0xc236('0x13')]){if(_0x4b8dc6['error'][_0xc236('0x14')]===0x1f4){logger[_0xc236('0x13')]('VtigerAccount,\x20%s,\x20%s',_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x5bc6a2(_0x4b8dc6['error'][_0xc236('0x15')]);}logger[_0xc236('0x13')](_0xc236('0xe'),_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x51a13b(_0x4b8dc6[_0xc236('0x13')]['message']);}else{logger['info'](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));_0x51a13b(_0x4b8dc6[_0xc236('0x16')][_0xc236('0x15')]);}})[_0xc236('0x17')](function(_0x5ac3ed){logger['error']('VtigerAccount,\x20%s,\x20%s',_0xd612c6,_0x5ac3ed);_0x5bc6a2(_0x5ac3ed);});});}exports[_0xc236('0x18')]=function(_0x76f45){var _0x11ec65=this;return new Promise(function(_0x541a20,_0x13b432){return db['VtigerAccount']['findAll']({'raw':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1a')]===undefined?!![]:![]:!![],'where':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1b')]||null:null,'attributes':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1c')]||null:null,'limit':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')]['limit']||null:null,'include':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1d')]?_[_0xc236('0x1e')](_0x76f45[_0xc236('0x19')][_0xc236('0x1d')],function(_0x3a315b){return{'model':db[_0x3a315b[_0xc236('0x1f')]],'as':_0x3a315b['as'],'attributes':_0x3a315b[_0xc236('0x1c')],'include':_0x3a315b[_0xc236('0x1d')]?_[_0xc236('0x1e')](_0x3a315b['include'],function(_0x308cd6){return{'model':db[_0x308cd6[_0xc236('0x1f')]],'as':_0x308cd6['as'],'attributes':_0x308cd6[_0xc236('0x1c')],'include':_0x308cd6[_0xc236('0x1d')]?_['map'](_0x308cd6[_0xc236('0x1d')],function(_0x5da4b2){return{'model':db[_0x5da4b2['model']],'as':_0x5da4b2['as'],'attributes':_0x5da4b2[_0xc236('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x36e578){logger['info'](_0xc236('0x18'),_0x76f45);logger['debug'](_0xc236('0x18'),_0x76f45,JSON[_0xc236('0x12')](_0x36e578));_0x541a20(_0x36e578);})['catch'](function(_0x5a61b5){logger[_0xc236('0x13')](_0xc236('0x18'),_0x5a61b5[_0xc236('0x15')],_0x76f45);_0x13b432(_0x11ec65[_0xc236('0x13')](0x1f4,_0x5a61b5['message']));});});};exports['ShowVtigerAccount']=function(_0x28ffa5){var _0x53b767=this;return new Promise(function(_0x2c756f,_0x4ddc87){return db[_0xc236('0x20')][_0xc236('0x21')]({'raw':_0x28ffa5['options']?_0x28ffa5['options'][_0xc236('0x1a')]===undefined?!![]:![]:!![],'where':_0x28ffa5[_0xc236('0x19')]?_0x28ffa5[_0xc236('0x19')][_0xc236('0x1b')]||null:null,'attributes':_0x28ffa5[_0xc236('0x19')]?_0x28ffa5[_0xc236('0x19')][_0xc236('0x1c')]||null:null,'include':_0x28ffa5[_0xc236('0x19')]?_0x28ffa5[_0xc236('0x19')]['include']?_['map'](_0x28ffa5['options'][_0xc236('0x1d')],function(_0xfda1f9){return{'model':db[_0xfda1f9[_0xc236('0x1f')]],'as':_0xfda1f9['as'],'attributes':_0xfda1f9[_0xc236('0x1c')],'include':_0xfda1f9[_0xc236('0x1d')]?_[_0xc236('0x1e')](_0xfda1f9[_0xc236('0x1d')],function(_0x5761de){return{'model':db[_0x5761de[_0xc236('0x1f')]],'as':_0x5761de['as'],'attributes':_0x5761de[_0xc236('0x1c')],'include':_0x5761de[_0xc236('0x1d')]?_['map'](_0x5761de[_0xc236('0x1d')],function(_0x2a8f33){return{'model':db[_0x2a8f33[_0xc236('0x1f')]],'as':_0x2a8f33['as'],'attributes':_0x2a8f33[_0xc236('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x12348b){logger[_0xc236('0xd')](_0xc236('0x22'),_0x28ffa5);logger[_0xc236('0x10')](_0xc236('0x22'),_0x28ffa5,JSON[_0xc236('0x12')](_0x12348b));_0x2c756f(_0x12348b);})[_0xc236('0x17')](function(_0x11ca1c){logger[_0xc236('0x13')](_0xc236('0x22'),_0x11ca1c[_0xc236('0x15')],_0x28ffa5);_0x4ddc87(_0x53b767[_0xc236('0x13')](0x1f4,_0x11ca1c[_0xc236('0x15')]));});});};
\ No newline at end of file
+var _0x1c7c=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','where','limit','include','map','model','attributes','ShowVtigerAccount','raw','lodash','util','moment','bluebird'];(function(_0x38f6ee,_0xf06a6c){var _0x49aeef=function(_0x1f1262){while(--_0x1f1262){_0x38f6ee['push'](_0x38f6ee['shift']());}};_0x49aeef(++_0xf06a6c);}(_0x1c7c,0x164));var _0xc1c7=function(_0x43f466,_0xd15dc3){_0x43f466=_0x43f466-0x0;var _0x3e4a92=_0x1c7c[_0x43f466];return _0x3e4a92;};'use strict';var _=require(_0xc1c7('0x0'));var util=require(_0xc1c7('0x1'));var moment=require(_0xc1c7('0x2'));var BPromise=require(_0xc1c7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc1c7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc1c7('0x5'));var logger=require(_0xc1c7('0x6'))(_0xc1c7('0x7'));var config=require(_0xc1c7('0x8'));var jayson=require(_0xc1c7('0x9'));var client=jayson[_0xc1c7('0xa')][_0xc1c7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x419138,_0xce5bcd,_0x3b3e9c){return new BPromise(function(_0x434a35,_0x11c7ef){return client[_0xc1c7('0xc')](_0x419138,_0x3b3e9c)[_0xc1c7('0xd')](function(_0x339649){logger[_0xc1c7('0xe')](_0xc1c7('0xf'),_0xce5bcd,'request\x20sent');logger[_0xc1c7('0x10')](_0xc1c7('0x11'),_0xce5bcd,'request\x20sent',JSON[_0xc1c7('0x12')](_0x339649));if(_0x339649[_0xc1c7('0x13')]){if(_0x339649[_0xc1c7('0x13')]['code']===0x1f4){logger[_0xc1c7('0x13')](_0xc1c7('0xf'),_0xce5bcd,_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);return _0x11c7ef(_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);}logger[_0xc1c7('0x13')](_0xc1c7('0xf'),_0xce5bcd,_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);return _0x434a35(_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);}else{logger['info'](_0xc1c7('0xf'),_0xce5bcd,_0xc1c7('0x15'));_0x434a35(_0x339649[_0xc1c7('0x16')]['message']);}})[_0xc1c7('0x17')](function(_0x3939c1){logger[_0xc1c7('0x13')](_0xc1c7('0xf'),_0xce5bcd,_0x3939c1);_0x11c7ef(_0x3939c1);});});}exports[_0xc1c7('0x18')]=function(_0xb42702){var _0x21758a=this;return new Promise(function(_0x2e93e5,_0x5d44e9){return db[_0xc1c7('0x19')][_0xc1c7('0x1a')]({'raw':_0xb42702[_0xc1c7('0x1b')]?_0xb42702[_0xc1c7('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0xb42702[_0xc1c7('0x1b')]?_0xb42702['options'][_0xc1c7('0x1c')]||null:null,'attributes':_0xb42702[_0xc1c7('0x1b')]?_0xb42702['options']['attributes']||null:null,'limit':_0xb42702[_0xc1c7('0x1b')]?_0xb42702[_0xc1c7('0x1b')][_0xc1c7('0x1d')]||null:null,'include':_0xb42702['options']?_0xb42702[_0xc1c7('0x1b')][_0xc1c7('0x1e')]?_[_0xc1c7('0x1f')](_0xb42702[_0xc1c7('0x1b')][_0xc1c7('0x1e')],function(_0x3a2483){return{'model':db[_0x3a2483[_0xc1c7('0x20')]],'as':_0x3a2483['as'],'attributes':_0x3a2483[_0xc1c7('0x21')],'include':_0x3a2483[_0xc1c7('0x1e')]?_[_0xc1c7('0x1f')](_0x3a2483[_0xc1c7('0x1e')],function(_0x363fbc){return{'model':db[_0x363fbc[_0xc1c7('0x20')]],'as':_0x363fbc['as'],'attributes':_0x363fbc[_0xc1c7('0x21')],'include':_0x363fbc[_0xc1c7('0x1e')]?_[_0xc1c7('0x1f')](_0x363fbc['include'],function(_0xf0ab9c){return{'model':db[_0xf0ab9c[_0xc1c7('0x20')]],'as':_0xf0ab9c['as'],'attributes':_0xf0ab9c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x352f24){logger['info']('GetVtigerAccount',_0xb42702);logger[_0xc1c7('0x10')](_0xc1c7('0x18'),_0xb42702,JSON[_0xc1c7('0x12')](_0x352f24));_0x2e93e5(_0x352f24);})[_0xc1c7('0x17')](function(_0x461360){logger['error']('GetVtigerAccount',_0x461360[_0xc1c7('0x14')],_0xb42702);_0x5d44e9(_0x21758a[_0xc1c7('0x13')](0x1f4,_0x461360[_0xc1c7('0x14')]));});});};exports[_0xc1c7('0x22')]=function(_0x2e35f1){var _0x4968b0=this;return new Promise(function(_0x50042f,_0x125920){return db[_0xc1c7('0x19')]['find']({'raw':_0x2e35f1[_0xc1c7('0x1b')]?_0x2e35f1[_0xc1c7('0x1b')][_0xc1c7('0x23')]===undefined?!![]:![]:!![],'where':_0x2e35f1[_0xc1c7('0x1b')]?_0x2e35f1[_0xc1c7('0x1b')][_0xc1c7('0x1c')]||null:null,'attributes':_0x2e35f1[_0xc1c7('0x1b')]?_0x2e35f1['options'][_0xc1c7('0x21')]||null:null,'include':_0x2e35f1[_0xc1c7('0x1b')]?_0x2e35f1[_0xc1c7('0x1b')][_0xc1c7('0x1e')]?_[_0xc1c7('0x1f')](_0x2e35f1[_0xc1c7('0x1b')][_0xc1c7('0x1e')],function(_0xef703f){return{'model':db[_0xef703f[_0xc1c7('0x20')]],'as':_0xef703f['as'],'attributes':_0xef703f['attributes'],'include':_0xef703f['include']?_[_0xc1c7('0x1f')](_0xef703f[_0xc1c7('0x1e')],function(_0x263900){return{'model':db[_0x263900[_0xc1c7('0x20')]],'as':_0x263900['as'],'attributes':_0x263900[_0xc1c7('0x21')],'include':_0x263900[_0xc1c7('0x1e')]?_[_0xc1c7('0x1f')](_0x263900[_0xc1c7('0x1e')],function(_0x3bd3b0){return{'model':db[_0x3bd3b0[_0xc1c7('0x20')]],'as':_0x3bd3b0['as'],'attributes':_0x3bd3b0[_0xc1c7('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc1c7('0xd')](function(_0x154476){logger[_0xc1c7('0xe')](_0xc1c7('0x22'),_0x2e35f1);logger[_0xc1c7('0x10')](_0xc1c7('0x22'),_0x2e35f1,JSON[_0xc1c7('0x12')](_0x154476));_0x50042f(_0x154476);})[_0xc1c7('0x17')](function(_0x239a91){logger[_0xc1c7('0x13')]('ShowVtigerAccount',_0x239a91['message'],_0x2e35f1);_0x125920(_0x4968b0['error'](0x1f4,_0x239a91[_0xc1c7('0x14')]));});});};
\ No newline at end of file
index a187625..7167c79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25df=['getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','exports','multer','path','express','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','index','/:id','get','/:id/fields','isAuthenticated','getFields','/:id/subjects'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x25df,0x77));var _0xf25d=function(_0x564f4c,_0x3e7055){_0x564f4c=_0x564f4c-0x0;var _0x31c172=_0x25df[_0x564f4c];return _0x31c172;};'use strict';var multer=require(_0xf25d('0x0'));var util=require('util');var path=require(_0xf25d('0x1'));var timeout=require('connect-timeout');var express=require(_0xf25d('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf25d('0x3'));var config=require(_0xf25d('0x4'));var controller=require(_0xf25d('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xf25d('0x6')]);router['get'](_0xf25d('0x7'),auth['isAuthenticated'](),controller['show']);router[_0xf25d('0x8')](_0xf25d('0x9'),auth[_0xf25d('0xa')](),controller[_0xf25d('0xb')]);router[_0xf25d('0x8')](_0xf25d('0xc'),auth['isAuthenticated'](),controller[_0xf25d('0xd')]);router[_0xf25d('0x8')](_0xf25d('0xe'),auth[_0xf25d('0xa')](),controller[_0xf25d('0xf')]);router[_0xf25d('0x10')]('/',auth[_0xf25d('0xa')](),controller[_0xf25d('0x11')]);router[_0xf25d('0x12')](_0xf25d('0x7'),auth['isAuthenticated'](),controller[_0xf25d('0x13')]);router[_0xf25d('0x14')](_0xf25d('0x7'),auth['isAuthenticated'](),controller['destroy']);module[_0xf25d('0x15')]=router;
\ No newline at end of file
+var _0x45d0=['/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put'];(function(_0x357454,_0x24b2ab){var _0xd60f28=function(_0x57e31f){while(--_0x57e31f){_0x357454['push'](_0x357454['shift']());}};_0xd60f28(++_0x24b2ab);}(_0x45d0,0x93));var _0x045d=function(_0x50d4ba,_0x2c21e7){_0x50d4ba=_0x50d4ba-0x0;var _0x414a26=_0x45d0[_0x50d4ba];return _0x414a26;};'use strict';var multer=require(_0x045d('0x0'));var util=require(_0x045d('0x1'));var path=require(_0x045d('0x2'));var timeout=require(_0x045d('0x3'));var express=require(_0x045d('0x4'));var router=express[_0x045d('0x5')]();var fs_extra=require(_0x045d('0x6'));var auth=require(_0x045d('0x7'));var interaction=require(_0x045d('0x8'));var config=require(_0x045d('0x9'));var controller=require(_0x045d('0xa'));router[_0x045d('0xb')]('/',auth[_0x045d('0xc')](),controller['index']);router[_0x045d('0xb')]('/:id',auth[_0x045d('0xc')](),controller[_0x045d('0xd')]);router[_0x045d('0xb')]('/:id/fields',auth[_0x045d('0xc')](),controller[_0x045d('0xe')]);router[_0x045d('0xb')](_0x045d('0xf'),auth['isAuthenticated'](),controller[_0x045d('0x10')]);router[_0x045d('0xb')](_0x045d('0x11'),auth[_0x045d('0xc')](),controller[_0x045d('0x12')]);router[_0x045d('0x13')]('/',auth[_0x045d('0xc')](),controller['create']);router[_0x045d('0x14')](_0x045d('0x15'),auth[_0x045d('0xc')](),controller['update']);router['delete'](_0x045d('0x15'),auth['isAuthenticated'](),controller[_0x045d('0x16')]);module[_0x045d('0x17')]=router;
\ No newline at end of file
index c4a603a..0be2ab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ff8=['exports','STRING'];(function(_0x5384e6,_0x3fa2a5){var _0x10e470=function(_0x58121f){while(--_0x58121f){_0x5384e6['push'](_0x5384e6['shift']());}};_0x10e470(++_0x3fa2a5);}(_0x4ff8,0x19c));var _0x84ff=function(_0xeb017a,_0x51b8c8){_0xeb017a=_0xeb017a-0x0;var _0x26fe47=_0x4ff8[_0xeb017a];return _0x26fe47;};'use strict';var Sequelize=require('sequelize');module[_0x84ff('0x0')]={'name':{'type':Sequelize[_0x84ff('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9699=['STRING','sequelize'];(function(_0x1bcfe9,_0xc9816){var _0x104545=function(_0x361ca5){while(--_0x361ca5){_0x1bcfe9['push'](_0x1bcfe9['shift']());}};_0x104545(++_0xc9816);}(_0x9699,0xb5));var _0x9969=function(_0x4aa848,_0x1b4514){_0x4aa848=_0x4aa848-0x0;var _0x358bbe=_0x9699[_0x4aa848];return _0x358bbe;};'use strict';var Sequelize=require(_0x9969('0x0'));module['exports']={'name':{'type':Sequelize[_0x9969('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 37b9f16..6e373ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc47=['send','index','VtigerConfiguration','rawAttributes','type','key','map','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','includeAll','include','catch','params','find','create','body','update','getFields','VtigerField','pick','getSubjects','findOne','options','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','destroy','then','end','error','stack','name'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xbc47,0x7a));var _0x7bc4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xbc47[_0x334841];return _0x5beb4b;};'use strict';var emlformat=require(_0x7bc4('0x0'));var rimraf=require(_0x7bc4('0x1'));var zipdir=require(_0x7bc4('0x2'));var jsonpatch=require(_0x7bc4('0x3'));var rp=require(_0x7bc4('0x4'));var moment=require(_0x7bc4('0x5'));var BPromise=require(_0x7bc4('0x6'));var Mustache=require(_0x7bc4('0x7'));var util=require(_0x7bc4('0x8'));var path=require(_0x7bc4('0x9'));var sox=require(_0x7bc4('0xa'));var csv=require(_0x7bc4('0xb'));var ejs=require(_0x7bc4('0xc'));var fs=require('fs');var fs_extra=require(_0x7bc4('0xd'));var _=require(_0x7bc4('0xe'));var squel=require(_0x7bc4('0xf'));var crypto=require(_0x7bc4('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x7bc4('0x11'));var toCsv=require(_0x7bc4('0xb'));var querystring=require(_0x7bc4('0x12'));var Papa=require('papaparse');var Redis=require(_0x7bc4('0x13'));var authService=require(_0x7bc4('0x14'));var qs=require(_0x7bc4('0x15'));var as=require(_0x7bc4('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7bc4('0x17'))(_0x7bc4('0x18'));var utils=require(_0x7bc4('0x19'));var config=require(_0x7bc4('0x1a'));var licenseUtil=require(_0x7bc4('0x1b'));var db=require(_0x7bc4('0x1c'))['db'];function respondWithStatusCode(_0x375b80,_0x3a7cfc){_0x3a7cfc=_0x3a7cfc||0xcc;return function(_0x22bbe1){if(_0x22bbe1){return _0x375b80[_0x7bc4('0x1d')](_0x3a7cfc);}return _0x375b80['status'](_0x3a7cfc)['end']();};}function respondWithResult(_0x569da5,_0x444fe5){_0x444fe5=_0x444fe5||0xc8;return function(_0x2bfe85){if(_0x2bfe85){return _0x569da5['status'](_0x444fe5)[_0x7bc4('0x1e')](_0x2bfe85);}};}function respondWithFilteredResult(_0x4bb80b,_0x438ea0){return function(_0x1be95e){if(_0x1be95e){var _0x533731=typeof _0x438ea0[_0x7bc4('0x1f')]===_0x7bc4('0x20')&&typeof _0x438ea0[_0x7bc4('0x21')]===_0x7bc4('0x20');var _0x4fa4c3=_0x1be95e[_0x7bc4('0x22')];var _0x193be2=_0x533731?0x0:_0x438ea0['offset'];var _0x418510=_0x533731?_0x1be95e[_0x7bc4('0x22')]:_0x438ea0[_0x7bc4('0x1f')]+_0x438ea0[_0x7bc4('0x21')];var _0x2ca50a;if(_0x418510>=_0x4fa4c3){_0x418510=_0x4fa4c3;_0x2ca50a=0xc8;}else{_0x2ca50a=0xce;}_0x4bb80b[_0x7bc4('0x23')](_0x2ca50a);return _0x4bb80b['set'](_0x7bc4('0x24'),_0x193be2+'-'+_0x418510+'/'+_0x4fa4c3)['json'](_0x1be95e);}return null;};}function patchUpdates(_0x284b46){return function(_0x566636){try{jsonpatch[_0x7bc4('0x25')](_0x566636,_0x284b46,!![]);}catch(_0x36fcf1){return BPromise[_0x7bc4('0x26')](_0x36fcf1);}return _0x566636[_0x7bc4('0x27')]();};}function saveUpdates(_0x1b3f07,_0x1ddd6c){return function(_0x177d8e){if(_0x177d8e){return _0x177d8e['update'](_0x1b3f07)['then'](function(_0x455a50){return _0x455a50;});}return null;};}function removeEntity(_0x423808,_0x173686){return function(_0x45394b){if(_0x45394b){return _0x45394b[_0x7bc4('0x28')]()[_0x7bc4('0x29')](function(){_0x423808['status'](0xcc)[_0x7bc4('0x2a')]();});}};}function handleEntityNotFound(_0xf9deeb,_0x5ca23c){return function(_0x5f320d){if(!_0x5f320d){_0xf9deeb[_0x7bc4('0x1d')](0x194);}return _0x5f320d;};}function handleError(_0x46e08f,_0x40bb47){_0x40bb47=_0x40bb47||0x1f4;return function(_0x18381f){logger[_0x7bc4('0x2b')](_0x18381f[_0x7bc4('0x2c')]);if(_0x18381f[_0x7bc4('0x2d')]){delete _0x18381f[_0x7bc4('0x2d')];}_0x46e08f[_0x7bc4('0x23')](_0x40bb47)[_0x7bc4('0x2e')](_0x18381f);};}exports[_0x7bc4('0x2f')]=function(_0x19cf1a,_0x221fbd){var _0x4421cf={},_0x41a044={},_0x140f0c={'count':0x0,'rows':[]};var _0x252026=_['map'](db[_0x7bc4('0x30')][_0x7bc4('0x31')],function(_0x1e032e){return{'name':_0x1e032e['fieldName'],'type':_0x1e032e[_0x7bc4('0x32')][_0x7bc4('0x33')]};});_0x41a044['model']=_[_0x7bc4('0x34')](_0x252026,_0x7bc4('0x2d'));_0x41a044['query']=_[_0x7bc4('0x35')](_0x19cf1a[_0x7bc4('0x36')]);_0x41a044[_0x7bc4('0x37')]=_['intersection'](_0x41a044[_0x7bc4('0x38')],_0x41a044[_0x7bc4('0x36')]);_0x4421cf[_0x7bc4('0x39')]=_[_0x7bc4('0x3a')](_0x41a044['model'],qs['fields'](_0x19cf1a[_0x7bc4('0x36')][_0x7bc4('0x3b')]));_0x4421cf['attributes']=_0x4421cf[_0x7bc4('0x39')][_0x7bc4('0x3c')]?_0x4421cf['attributes']:_0x41a044[_0x7bc4('0x38')];if(!_0x19cf1a[_0x7bc4('0x36')][_0x7bc4('0x3d')](_0x7bc4('0x3e'))){_0x4421cf[_0x7bc4('0x21')]=qs[_0x7bc4('0x21')](_0x19cf1a[_0x7bc4('0x36')][_0x7bc4('0x21')]);_0x4421cf['offset']=qs[_0x7bc4('0x1f')](_0x19cf1a[_0x7bc4('0x36')][_0x7bc4('0x1f')]);}_0x4421cf[_0x7bc4('0x3f')]=qs['sort'](_0x19cf1a[_0x7bc4('0x36')][_0x7bc4('0x40')]);_0x4421cf[_0x7bc4('0x41')]=qs['filters'](_['pick'](_0x19cf1a[_0x7bc4('0x36')],_0x41a044[_0x7bc4('0x37')]),_0x252026);if(_0x19cf1a['query']['filter']){_0x4421cf[_0x7bc4('0x41')]=_[_0x7bc4('0x42')](_0x4421cf[_0x7bc4('0x41')],{'$or':_[_0x7bc4('0x34')](_0x252026,function(_0x529a2b){if(_0x529a2b[_0x7bc4('0x32')]!==_0x7bc4('0x43')){var _0x2947ae={};_0x2947ae[_0x529a2b[_0x7bc4('0x2d')]]={'$like':'%'+_0x19cf1a['query'][_0x7bc4('0x44')]+'%'};return _0x2947ae;}})});}_0x4421cf=_[_0x7bc4('0x42')]({},_0x4421cf,_0x19cf1a['options']);var _0x2c737b={'where':_0x4421cf[_0x7bc4('0x41')]};return db[_0x7bc4('0x30')][_0x7bc4('0x22')](_0x2c737b)['then'](function(_0x546077){_0x140f0c[_0x7bc4('0x22')]=_0x546077;if(_0x19cf1a[_0x7bc4('0x36')][_0x7bc4('0x45')]){_0x4421cf[_0x7bc4('0x46')]=[{'all':!![]}];}return db[_0x7bc4('0x30')]['findAll'](_0x4421cf);})[_0x7bc4('0x29')](function(_0x20ea98){_0x140f0c['rows']=_0x20ea98;return _0x140f0c;})['then'](respondWithFilteredResult(_0x221fbd,_0x4421cf))[_0x7bc4('0x47')](handleError(_0x221fbd,null));};exports['show']=function(_0x1b4ebc,_0x27742f){var _0xa8d64b={'raw':![],'where':{'id':_0x1b4ebc[_0x7bc4('0x48')]['id']}},_0x15bb7f={};_0x15bb7f[_0x7bc4('0x38')]=_[_0x7bc4('0x35')](db[_0x7bc4('0x30')][_0x7bc4('0x31')]);_0x15bb7f[_0x7bc4('0x36')]=_[_0x7bc4('0x35')](_0x1b4ebc[_0x7bc4('0x36')]);_0x15bb7f[_0x7bc4('0x37')]=_[_0x7bc4('0x3a')](_0x15bb7f[_0x7bc4('0x38')],_0x15bb7f[_0x7bc4('0x36')]);_0xa8d64b[_0x7bc4('0x39')]=_['intersection'](_0x15bb7f[_0x7bc4('0x38')],qs[_0x7bc4('0x3b')](_0x1b4ebc['query'][_0x7bc4('0x3b')]));_0xa8d64b[_0x7bc4('0x39')]=_0xa8d64b['attributes']['length']?_0xa8d64b[_0x7bc4('0x39')]:_0x15bb7f[_0x7bc4('0x38')];if(_0x1b4ebc['query']['includeAll']){_0xa8d64b['include']=[{'all':!![]}];}_0xa8d64b=_[_0x7bc4('0x42')]({},_0xa8d64b,_0x1b4ebc['options']);return db[_0x7bc4('0x30')][_0x7bc4('0x49')](_0xa8d64b)['then'](handleEntityNotFound(_0x27742f,null))[_0x7bc4('0x29')](respondWithResult(_0x27742f,null))[_0x7bc4('0x47')](handleError(_0x27742f,null));};exports[_0x7bc4('0x4a')]=function(_0x12036e,_0x2bb554){return db[_0x7bc4('0x30')][_0x7bc4('0x4a')](_0x12036e[_0x7bc4('0x4b')],{})[_0x7bc4('0x29')](respondWithResult(_0x2bb554,0xc9))[_0x7bc4('0x47')](handleError(_0x2bb554,null));};exports[_0x7bc4('0x4c')]=function(_0x17d33,_0x45046f){if(_0x17d33[_0x7bc4('0x4b')]['id']){delete _0x17d33[_0x7bc4('0x4b')]['id'];}return db[_0x7bc4('0x30')][_0x7bc4('0x49')]({'where':{'id':_0x17d33[_0x7bc4('0x48')]['id']}})[_0x7bc4('0x29')](handleEntityNotFound(_0x45046f,null))[_0x7bc4('0x29')](saveUpdates(_0x17d33[_0x7bc4('0x4b')],null))[_0x7bc4('0x29')](respondWithResult(_0x45046f,null))[_0x7bc4('0x47')](handleError(_0x45046f,null));};exports[_0x7bc4('0x28')]=function(_0x4db04e,_0x52de44){return db[_0x7bc4('0x30')][_0x7bc4('0x49')]({'where':{'id':_0x4db04e[_0x7bc4('0x48')]['id']}})['then'](handleEntityNotFound(_0x52de44,null))['then'](removeEntity(_0x52de44,null))['catch'](handleError(_0x52de44,null));};exports[_0x7bc4('0x4d')]=function(_0x18587b,_0x350649,_0x4beebc){var _0x561a21={};var _0x4d076c={};var _0x1dec21;var _0x39d100;return db[_0x7bc4('0x30')]['findOne']({'where':{'id':_0x18587b[_0x7bc4('0x48')]['id']}})[_0x7bc4('0x29')](handleEntityNotFound(_0x350649,null))[_0x7bc4('0x29')](function(_0x198b1a){if(_0x198b1a){_0x1dec21=_0x198b1a;_0x4d076c['model']=_['keys'](db[_0x7bc4('0x4e')][_0x7bc4('0x31')]);_0x4d076c[_0x7bc4('0x36')]=_[_0x7bc4('0x35')](_0x18587b[_0x7bc4('0x36')]);_0x4d076c[_0x7bc4('0x37')]=_[_0x7bc4('0x3a')](_0x4d076c[_0x7bc4('0x38')],_0x4d076c[_0x7bc4('0x36')]);_0x561a21[_0x7bc4('0x39')]=_['intersection'](_0x4d076c[_0x7bc4('0x38')],qs[_0x7bc4('0x3b')](_0x18587b[_0x7bc4('0x36')][_0x7bc4('0x3b')]));_0x561a21[_0x7bc4('0x39')]=_0x561a21[_0x7bc4('0x39')][_0x7bc4('0x3c')]?_0x561a21[_0x7bc4('0x39')]:_0x4d076c[_0x7bc4('0x38')];_0x561a21[_0x7bc4('0x3f')]=qs[_0x7bc4('0x40')](_0x18587b['query']['sort']);_0x561a21[_0x7bc4('0x41')]=qs[_0x7bc4('0x37')](_[_0x7bc4('0x4f')](_0x18587b[_0x7bc4('0x36')],_0x4d076c[_0x7bc4('0x37')]));if(_0x18587b[_0x7bc4('0x36')]['filter']){_0x561a21[_0x7bc4('0x41')]=_[_0x7bc4('0x42')](_0x561a21[_0x7bc4('0x41')],{'$or':_[_0x7bc4('0x34')](_0x561a21[_0x7bc4('0x39')],function(_0x3afef9){var _0x5a9e00={};_0x5a9e00[_0x3afef9]={'$like':'%'+_0x18587b[_0x7bc4('0x36')][_0x7bc4('0x44')]+'%'};return _0x5a9e00;})});}_0x561a21=_[_0x7bc4('0x42')]({},_0x561a21,_0x18587b['options']);return _0x1dec21['getFields'](_0x561a21);}})['then'](function(_0x595451){if(_0x595451){_0x39d100=_0x595451[_0x7bc4('0x3c')];if(!_0x18587b[_0x7bc4('0x36')][_0x7bc4('0x3d')](_0x7bc4('0x3e'))){_0x561a21[_0x7bc4('0x21')]=qs['limit'](_0x18587b[_0x7bc4('0x36')][_0x7bc4('0x21')]);_0x561a21[_0x7bc4('0x1f')]=qs[_0x7bc4('0x1f')](_0x18587b[_0x7bc4('0x36')]['offset']);}return _0x1dec21['getFields'](_0x561a21);}})[_0x7bc4('0x29')](function(_0x2ce604){if(_0x2ce604){return _0x2ce604?{'count':_0x39d100,'rows':_0x2ce604}:null;}})['then'](respondWithResult(_0x350649,null))['catch'](handleError(_0x350649,null));};exports[_0x7bc4('0x50')]=function(_0x45ee12,_0x378ea1,_0x331524){var _0x3afe15={};var _0x48b43b={};var _0x277390;var _0x46fe95;return db[_0x7bc4('0x30')][_0x7bc4('0x51')]({'where':{'id':_0x45ee12[_0x7bc4('0x48')]['id']}})['then'](handleEntityNotFound(_0x378ea1,null))[_0x7bc4('0x29')](function(_0x20cb71){if(_0x20cb71){_0x277390=_0x20cb71;_0x48b43b[_0x7bc4('0x38')]=_[_0x7bc4('0x35')](db[_0x7bc4('0x4e')]['rawAttributes']);_0x48b43b[_0x7bc4('0x36')]=_[_0x7bc4('0x35')](_0x45ee12['query']);_0x48b43b['filters']=_[_0x7bc4('0x3a')](_0x48b43b[_0x7bc4('0x38')],_0x48b43b['query']);_0x3afe15['attributes']=_[_0x7bc4('0x3a')](_0x48b43b[_0x7bc4('0x38')],qs[_0x7bc4('0x3b')](_0x45ee12['query']['fields']));_0x3afe15[_0x7bc4('0x39')]=_0x3afe15[_0x7bc4('0x39')][_0x7bc4('0x3c')]?_0x3afe15[_0x7bc4('0x39')]:_0x48b43b[_0x7bc4('0x38')];_0x3afe15[_0x7bc4('0x3f')]=qs['sort'](_0x45ee12[_0x7bc4('0x36')][_0x7bc4('0x40')]);_0x3afe15[_0x7bc4('0x41')]=qs[_0x7bc4('0x37')](_['pick'](_0x45ee12[_0x7bc4('0x36')],_0x48b43b[_0x7bc4('0x37')]));if(_0x45ee12['query'][_0x7bc4('0x44')]){_0x3afe15[_0x7bc4('0x41')]=_[_0x7bc4('0x42')](_0x3afe15['where'],{'$or':_[_0x7bc4('0x34')](_0x3afe15[_0x7bc4('0x39')],function(_0xd57958){var _0x3349d4={};_0x3349d4[_0xd57958]={'$like':'%'+_0x45ee12['query'][_0x7bc4('0x44')]+'%'};return _0x3349d4;})});}_0x3afe15=_['merge']({},_0x3afe15,_0x45ee12[_0x7bc4('0x52')]);return _0x277390[_0x7bc4('0x50')](_0x3afe15);}})[_0x7bc4('0x29')](function(_0x43b76e){if(_0x43b76e){_0x46fe95=_0x43b76e[_0x7bc4('0x3c')];if(!_0x45ee12[_0x7bc4('0x36')][_0x7bc4('0x3d')]('nolimit')){_0x3afe15[_0x7bc4('0x21')]=qs['limit'](_0x45ee12['query']['limit']);_0x3afe15[_0x7bc4('0x1f')]=qs[_0x7bc4('0x1f')](_0x45ee12['query'][_0x7bc4('0x1f')]);}return _0x277390[_0x7bc4('0x50')](_0x3afe15);}})['then'](function(_0x50e306){if(_0x50e306){return _0x50e306?{'count':_0x46fe95,'rows':_0x50e306}:null;}})[_0x7bc4('0x29')](respondWithResult(_0x378ea1,null))[_0x7bc4('0x47')](handleError(_0x378ea1,null));};exports[_0x7bc4('0x53')]=function(_0xb709bd,_0xbfab51,_0x5d872e){var _0x8145d9={};var _0x105b70={};var _0x43048c;var _0x59b1c4;return db[_0x7bc4('0x30')][_0x7bc4('0x51')]({'where':{'id':_0xb709bd[_0x7bc4('0x48')]['id']}})[_0x7bc4('0x29')](handleEntityNotFound(_0xbfab51,null))[_0x7bc4('0x29')](function(_0x15e8c3){if(_0x15e8c3){_0x43048c=_0x15e8c3;_0x105b70['model']=_['keys'](db[_0x7bc4('0x4e')][_0x7bc4('0x31')]);_0x105b70[_0x7bc4('0x36')]=_['keys'](_0xb709bd[_0x7bc4('0x36')]);_0x105b70[_0x7bc4('0x37')]=_[_0x7bc4('0x3a')](_0x105b70[_0x7bc4('0x38')],_0x105b70[_0x7bc4('0x36')]);_0x8145d9[_0x7bc4('0x39')]=_[_0x7bc4('0x3a')](_0x105b70[_0x7bc4('0x38')],qs['fields'](_0xb709bd[_0x7bc4('0x36')][_0x7bc4('0x3b')]));_0x8145d9[_0x7bc4('0x39')]=_0x8145d9[_0x7bc4('0x39')][_0x7bc4('0x3c')]?_0x8145d9[_0x7bc4('0x39')]:_0x105b70[_0x7bc4('0x38')];_0x8145d9[_0x7bc4('0x3f')]=qs[_0x7bc4('0x40')](_0xb709bd[_0x7bc4('0x36')][_0x7bc4('0x40')]);_0x8145d9[_0x7bc4('0x41')]=qs[_0x7bc4('0x37')](_[_0x7bc4('0x4f')](_0xb709bd[_0x7bc4('0x36')],_0x105b70[_0x7bc4('0x37')]));if(_0xb709bd[_0x7bc4('0x36')][_0x7bc4('0x44')]){_0x8145d9['where']=_[_0x7bc4('0x42')](_0x8145d9['where'],{'$or':_[_0x7bc4('0x34')](_0x8145d9[_0x7bc4('0x39')],function(_0x1678e9){var _0x200e5b={};_0x200e5b[_0x1678e9]={'$like':'%'+_0xb709bd[_0x7bc4('0x36')]['filter']+'%'};return _0x200e5b;})});}_0x8145d9=_['merge']({},_0x8145d9,_0xb709bd[_0x7bc4('0x52')]);return _0x43048c[_0x7bc4('0x53')](_0x8145d9);}})[_0x7bc4('0x29')](function(_0x1fcca0){if(_0x1fcca0){_0x59b1c4=_0x1fcca0[_0x7bc4('0x3c')];if(!_0xb709bd[_0x7bc4('0x36')]['hasOwnProperty'](_0x7bc4('0x3e'))){_0x8145d9[_0x7bc4('0x21')]=qs[_0x7bc4('0x21')](_0xb709bd[_0x7bc4('0x36')][_0x7bc4('0x21')]);_0x8145d9[_0x7bc4('0x1f')]=qs[_0x7bc4('0x1f')](_0xb709bd[_0x7bc4('0x36')][_0x7bc4('0x1f')]);}return _0x43048c[_0x7bc4('0x53')](_0x8145d9);}})[_0x7bc4('0x29')](function(_0xc5405){if(_0xc5405){return _0xc5405?{'count':_0x59b1c4,'rows':_0xc5405}:null;}})[_0x7bc4('0x29')](respondWithResult(_0xbfab51,null))['catch'](handleError(_0xbfab51,null));};
\ No newline at end of file
+var _0xeeb1=['merge','type','VIRTUAL','VtigerConfiguration','include','then','rows','show','params','includeAll','options','find','catch','create','body','getFields','findOne','order','getSubjects','VtigerField','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','update','destroy','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter'];(function(_0x89bddd,_0x5c50e8){var _0x3a10e6=function(_0x2c887f){while(--_0x2c887f){_0x89bddd['push'](_0x89bddd['shift']());}};_0x3a10e6(++_0x5c50e8);}(_0xeeb1,0xb5));var _0x1eeb=function(_0x174e6d,_0x45f4d1){_0x174e6d=_0x174e6d-0x0;var _0x27a7eb=_0xeeb1[_0x174e6d];return _0x27a7eb;};'use strict';var emlformat=require(_0x1eeb('0x0'));var rimraf=require(_0x1eeb('0x1'));var zipdir=require(_0x1eeb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1eeb('0x3'));var moment=require(_0x1eeb('0x4'));var BPromise=require(_0x1eeb('0x5'));var Mustache=require('mustache');var util=require(_0x1eeb('0x6'));var path=require('path');var sox=require(_0x1eeb('0x7'));var csv=require(_0x1eeb('0x8'));var ejs=require(_0x1eeb('0x9'));var fs=require('fs');var fs_extra=require(_0x1eeb('0xa'));var _=require(_0x1eeb('0xb'));var squel=require(_0x1eeb('0xc'));var crypto=require(_0x1eeb('0xd'));var jsforce=require(_0x1eeb('0xe'));var deskjs=require(_0x1eeb('0xf'));var toCsv=require(_0x1eeb('0x8'));var querystring=require(_0x1eeb('0x10'));var Papa=require(_0x1eeb('0x11'));var Redis=require(_0x1eeb('0x12'));var authService=require(_0x1eeb('0x13'));var qs=require(_0x1eeb('0x14'));var as=require(_0x1eeb('0x15'));var hardwareService=require(_0x1eeb('0x16'));var logger=require('../../config/logger')(_0x1eeb('0x17'));var utils=require(_0x1eeb('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x1eeb('0x19'));var db=require(_0x1eeb('0x1a'))['db'];function respondWithStatusCode(_0x46c217,_0xe67cd5){_0xe67cd5=_0xe67cd5||0xcc;return function(_0x3d81fe){if(_0x3d81fe){return _0x46c217[_0x1eeb('0x1b')](_0xe67cd5);}return _0x46c217[_0x1eeb('0x1c')](_0xe67cd5)[_0x1eeb('0x1d')]();};}function respondWithResult(_0x3a63da,_0x36bcbd){_0x36bcbd=_0x36bcbd||0xc8;return function(_0x484d0f){if(_0x484d0f){return _0x3a63da[_0x1eeb('0x1c')](_0x36bcbd)['json'](_0x484d0f);}};}function respondWithFilteredResult(_0xf76456,_0x106b73){return function(_0x39fd8c){if(_0x39fd8c){var _0x1bdf28=typeof _0x106b73[_0x1eeb('0x1e')]===_0x1eeb('0x1f')&&typeof _0x106b73['limit']===_0x1eeb('0x1f');var _0xb379b0=_0x39fd8c[_0x1eeb('0x20')];var _0x402f26=_0x1bdf28?0x0:_0x106b73['offset'];var _0x923785=_0x1bdf28?_0x39fd8c['count']:_0x106b73[_0x1eeb('0x1e')]+_0x106b73[_0x1eeb('0x21')];var _0x44e051;if(_0x923785>=_0xb379b0){_0x923785=_0xb379b0;_0x44e051=0xc8;}else{_0x44e051=0xce;}_0xf76456[_0x1eeb('0x1c')](_0x44e051);return _0xf76456[_0x1eeb('0x22')](_0x1eeb('0x23'),_0x402f26+'-'+_0x923785+'/'+_0xb379b0)['json'](_0x39fd8c);}return null;};}function patchUpdates(_0x34c053){return function(_0x521da4){try{jsonpatch[_0x1eeb('0x24')](_0x521da4,_0x34c053,!![]);}catch(_0x523101){return BPromise['reject'](_0x523101);}return _0x521da4['save']();};}function saveUpdates(_0x3e8f4b,_0x2c387a){return function(_0x1cf616){if(_0x1cf616){return _0x1cf616[_0x1eeb('0x25')](_0x3e8f4b)['then'](function(_0x26c702){return _0x26c702;});}return null;};}function removeEntity(_0x59b495,_0x298594){return function(_0x34f0a5){if(_0x34f0a5){return _0x34f0a5[_0x1eeb('0x26')]()['then'](function(){_0x59b495[_0x1eeb('0x1c')](0xcc)[_0x1eeb('0x1d')]();});}};}function handleEntityNotFound(_0x38788a,_0x46ff16){return function(_0x5f24dc){if(!_0x5f24dc){_0x38788a[_0x1eeb('0x1b')](0x194);}return _0x5f24dc;};}function handleError(_0x5d4050,_0x38f37d){_0x38f37d=_0x38f37d||0x1f4;return function(_0x361c3a){logger['error'](_0x361c3a['stack']);if(_0x361c3a['name']){delete _0x361c3a[_0x1eeb('0x27')];}_0x5d4050[_0x1eeb('0x1c')](_0x38f37d)[_0x1eeb('0x28')](_0x361c3a);};}exports[_0x1eeb('0x29')]=function(_0x11ea5b,_0xb31206){var _0x5117c5={},_0x369a13={},_0x1bda1f={'count':0x0,'rows':[]};var _0x12f9ef=_[_0x1eeb('0x2a')](db['VtigerConfiguration'][_0x1eeb('0x2b')],function(_0x229e19){return{'name':_0x229e19['fieldName'],'type':_0x229e19['type'][_0x1eeb('0x2c')]};});_0x369a13[_0x1eeb('0x2d')]=_['map'](_0x12f9ef,_0x1eeb('0x27'));_0x369a13[_0x1eeb('0x2e')]=_[_0x1eeb('0x2f')](_0x11ea5b['query']);_0x369a13[_0x1eeb('0x30')]=_[_0x1eeb('0x31')](_0x369a13[_0x1eeb('0x2d')],_0x369a13[_0x1eeb('0x2e')]);_0x5117c5['attributes']=_[_0x1eeb('0x31')](_0x369a13['model'],qs[_0x1eeb('0x32')](_0x11ea5b[_0x1eeb('0x2e')][_0x1eeb('0x32')]));_0x5117c5[_0x1eeb('0x33')]=_0x5117c5[_0x1eeb('0x33')][_0x1eeb('0x34')]?_0x5117c5[_0x1eeb('0x33')]:_0x369a13['model'];if(!_0x11ea5b[_0x1eeb('0x2e')][_0x1eeb('0x35')](_0x1eeb('0x36'))){_0x5117c5[_0x1eeb('0x21')]=qs[_0x1eeb('0x21')](_0x11ea5b['query'][_0x1eeb('0x21')]);_0x5117c5['offset']=qs[_0x1eeb('0x1e')](_0x11ea5b[_0x1eeb('0x2e')][_0x1eeb('0x1e')]);}_0x5117c5['order']=qs['sort'](_0x11ea5b[_0x1eeb('0x2e')][_0x1eeb('0x37')]);_0x5117c5[_0x1eeb('0x38')]=qs[_0x1eeb('0x30')](_[_0x1eeb('0x39')](_0x11ea5b[_0x1eeb('0x2e')],_0x369a13['filters']),_0x12f9ef);if(_0x11ea5b['query'][_0x1eeb('0x3a')]){_0x5117c5[_0x1eeb('0x38')]=_[_0x1eeb('0x3b')](_0x5117c5[_0x1eeb('0x38')],{'$or':_['map'](_0x12f9ef,function(_0x5ee543){if(_0x5ee543[_0x1eeb('0x3c')]!==_0x1eeb('0x3d')){var _0x28de23={};_0x28de23[_0x5ee543[_0x1eeb('0x27')]]={'$like':'%'+_0x11ea5b[_0x1eeb('0x2e')][_0x1eeb('0x3a')]+'%'};return _0x28de23;}})});}_0x5117c5=_[_0x1eeb('0x3b')]({},_0x5117c5,_0x11ea5b['options']);var _0x3cc4f8={'where':_0x5117c5['where']};return db[_0x1eeb('0x3e')][_0x1eeb('0x20')](_0x3cc4f8)['then'](function(_0x22bfe2){_0x1bda1f[_0x1eeb('0x20')]=_0x22bfe2;if(_0x11ea5b[_0x1eeb('0x2e')]['includeAll']){_0x5117c5[_0x1eeb('0x3f')]=[{'all':!![]}];}return db['VtigerConfiguration']['findAll'](_0x5117c5);})[_0x1eeb('0x40')](function(_0xd83aac){_0x1bda1f[_0x1eeb('0x41')]=_0xd83aac;return _0x1bda1f;})['then'](respondWithFilteredResult(_0xb31206,_0x5117c5))['catch'](handleError(_0xb31206,null));};exports[_0x1eeb('0x42')]=function(_0x4ddb3b,_0x1ae2b1){var _0x5d3f45={'raw':![],'where':{'id':_0x4ddb3b[_0x1eeb('0x43')]['id']}},_0x24aaf9={};_0x24aaf9[_0x1eeb('0x2d')]=_['keys'](db[_0x1eeb('0x3e')][_0x1eeb('0x2b')]);_0x24aaf9[_0x1eeb('0x2e')]=_[_0x1eeb('0x2f')](_0x4ddb3b[_0x1eeb('0x2e')]);_0x24aaf9['filters']=_[_0x1eeb('0x31')](_0x24aaf9[_0x1eeb('0x2d')],_0x24aaf9['query']);_0x5d3f45[_0x1eeb('0x33')]=_[_0x1eeb('0x31')](_0x24aaf9[_0x1eeb('0x2d')],qs[_0x1eeb('0x32')](_0x4ddb3b[_0x1eeb('0x2e')][_0x1eeb('0x32')]));_0x5d3f45[_0x1eeb('0x33')]=_0x5d3f45[_0x1eeb('0x33')][_0x1eeb('0x34')]?_0x5d3f45[_0x1eeb('0x33')]:_0x24aaf9[_0x1eeb('0x2d')];if(_0x4ddb3b[_0x1eeb('0x2e')][_0x1eeb('0x44')]){_0x5d3f45[_0x1eeb('0x3f')]=[{'all':!![]}];}_0x5d3f45=_[_0x1eeb('0x3b')]({},_0x5d3f45,_0x4ddb3b[_0x1eeb('0x45')]);return db[_0x1eeb('0x3e')][_0x1eeb('0x46')](_0x5d3f45)[_0x1eeb('0x40')](handleEntityNotFound(_0x1ae2b1,null))[_0x1eeb('0x40')](respondWithResult(_0x1ae2b1,null))[_0x1eeb('0x47')](handleError(_0x1ae2b1,null));};exports[_0x1eeb('0x48')]=function(_0x312416,_0x1fe975){return db['VtigerConfiguration'][_0x1eeb('0x48')](_0x312416['body'],{})[_0x1eeb('0x40')](respondWithResult(_0x1fe975,0xc9))[_0x1eeb('0x47')](handleError(_0x1fe975,null));};exports[_0x1eeb('0x25')]=function(_0x7401ab,_0x7d2a62){if(_0x7401ab[_0x1eeb('0x49')]['id']){delete _0x7401ab['body']['id'];}return db['VtigerConfiguration'][_0x1eeb('0x46')]({'where':{'id':_0x7401ab['params']['id']}})[_0x1eeb('0x40')](handleEntityNotFound(_0x7d2a62,null))[_0x1eeb('0x40')](saveUpdates(_0x7401ab[_0x1eeb('0x49')],null))[_0x1eeb('0x40')](respondWithResult(_0x7d2a62,null))[_0x1eeb('0x47')](handleError(_0x7d2a62,null));};exports['destroy']=function(_0x7945d7,_0x30b591){return db[_0x1eeb('0x3e')][_0x1eeb('0x46')]({'where':{'id':_0x7945d7[_0x1eeb('0x43')]['id']}})[_0x1eeb('0x40')](handleEntityNotFound(_0x30b591,null))[_0x1eeb('0x40')](removeEntity(_0x30b591,null))['catch'](handleError(_0x30b591,null));};exports[_0x1eeb('0x4a')]=function(_0x160303,_0x558063,_0x3616cc){var _0x4b74ca={};var _0x1e4bf9={};var _0x548ccb;var _0x540419;return db['VtigerConfiguration'][_0x1eeb('0x4b')]({'where':{'id':_0x160303[_0x1eeb('0x43')]['id']}})[_0x1eeb('0x40')](handleEntityNotFound(_0x558063,null))[_0x1eeb('0x40')](function(_0x400e37){if(_0x400e37){_0x548ccb=_0x400e37;_0x1e4bf9[_0x1eeb('0x2d')]=_[_0x1eeb('0x2f')](db['VtigerField'][_0x1eeb('0x2b')]);_0x1e4bf9[_0x1eeb('0x2e')]=_[_0x1eeb('0x2f')](_0x160303['query']);_0x1e4bf9['filters']=_[_0x1eeb('0x31')](_0x1e4bf9[_0x1eeb('0x2d')],_0x1e4bf9[_0x1eeb('0x2e')]);_0x4b74ca[_0x1eeb('0x33')]=_[_0x1eeb('0x31')](_0x1e4bf9[_0x1eeb('0x2d')],qs[_0x1eeb('0x32')](_0x160303[_0x1eeb('0x2e')][_0x1eeb('0x32')]));_0x4b74ca[_0x1eeb('0x33')]=_0x4b74ca[_0x1eeb('0x33')][_0x1eeb('0x34')]?_0x4b74ca[_0x1eeb('0x33')]:_0x1e4bf9[_0x1eeb('0x2d')];_0x4b74ca[_0x1eeb('0x4c')]=qs[_0x1eeb('0x37')](_0x160303['query']['sort']);_0x4b74ca[_0x1eeb('0x38')]=qs[_0x1eeb('0x30')](_[_0x1eeb('0x39')](_0x160303[_0x1eeb('0x2e')],_0x1e4bf9[_0x1eeb('0x30')]));if(_0x160303[_0x1eeb('0x2e')][_0x1eeb('0x3a')]){_0x4b74ca[_0x1eeb('0x38')]=_[_0x1eeb('0x3b')](_0x4b74ca[_0x1eeb('0x38')],{'$or':_['map'](_0x4b74ca[_0x1eeb('0x33')],function(_0x14a758){var _0x116b46={};_0x116b46[_0x14a758]={'$like':'%'+_0x160303['query'][_0x1eeb('0x3a')]+'%'};return _0x116b46;})});}_0x4b74ca=_['merge']({},_0x4b74ca,_0x160303[_0x1eeb('0x45')]);return _0x548ccb['getFields'](_0x4b74ca);}})[_0x1eeb('0x40')](function(_0x368b4c){if(_0x368b4c){_0x540419=_0x368b4c[_0x1eeb('0x34')];if(!_0x160303[_0x1eeb('0x2e')][_0x1eeb('0x35')]('nolimit')){_0x4b74ca[_0x1eeb('0x21')]=qs['limit'](_0x160303[_0x1eeb('0x2e')][_0x1eeb('0x21')]);_0x4b74ca[_0x1eeb('0x1e')]=qs['offset'](_0x160303[_0x1eeb('0x2e')][_0x1eeb('0x1e')]);}return _0x548ccb[_0x1eeb('0x4a')](_0x4b74ca);}})[_0x1eeb('0x40')](function(_0x1bc3b4){if(_0x1bc3b4){return _0x1bc3b4?{'count':_0x540419,'rows':_0x1bc3b4}:null;}})[_0x1eeb('0x40')](respondWithResult(_0x558063,null))[_0x1eeb('0x47')](handleError(_0x558063,null));};exports[_0x1eeb('0x4d')]=function(_0x4c9c58,_0x279788,_0x3a4f24){var _0x3dc851={};var _0x23fde0={};var _0x47f6b2;var _0x5eacf7;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x4c9c58['params']['id']}})['then'](handleEntityNotFound(_0x279788,null))[_0x1eeb('0x40')](function(_0xaae679){if(_0xaae679){_0x47f6b2=_0xaae679;_0x23fde0[_0x1eeb('0x2d')]=_['keys'](db[_0x1eeb('0x4e')][_0x1eeb('0x2b')]);_0x23fde0['query']=_[_0x1eeb('0x2f')](_0x4c9c58[_0x1eeb('0x2e')]);_0x23fde0[_0x1eeb('0x30')]=_[_0x1eeb('0x31')](_0x23fde0[_0x1eeb('0x2d')],_0x23fde0[_0x1eeb('0x2e')]);_0x3dc851[_0x1eeb('0x33')]=_[_0x1eeb('0x31')](_0x23fde0[_0x1eeb('0x2d')],qs[_0x1eeb('0x32')](_0x4c9c58['query'][_0x1eeb('0x32')]));_0x3dc851[_0x1eeb('0x33')]=_0x3dc851[_0x1eeb('0x33')]['length']?_0x3dc851[_0x1eeb('0x33')]:_0x23fde0[_0x1eeb('0x2d')];_0x3dc851['order']=qs[_0x1eeb('0x37')](_0x4c9c58[_0x1eeb('0x2e')][_0x1eeb('0x37')]);_0x3dc851[_0x1eeb('0x38')]=qs['filters'](_[_0x1eeb('0x39')](_0x4c9c58[_0x1eeb('0x2e')],_0x23fde0['filters']));if(_0x4c9c58[_0x1eeb('0x2e')]['filter']){_0x3dc851[_0x1eeb('0x38')]=_[_0x1eeb('0x3b')](_0x3dc851['where'],{'$or':_[_0x1eeb('0x2a')](_0x3dc851[_0x1eeb('0x33')],function(_0x2406a8){var _0x333f27={};_0x333f27[_0x2406a8]={'$like':'%'+_0x4c9c58[_0x1eeb('0x2e')][_0x1eeb('0x3a')]+'%'};return _0x333f27;})});}_0x3dc851=_['merge']({},_0x3dc851,_0x4c9c58[_0x1eeb('0x45')]);return _0x47f6b2[_0x1eeb('0x4d')](_0x3dc851);}})[_0x1eeb('0x40')](function(_0x256d59){if(_0x256d59){_0x5eacf7=_0x256d59[_0x1eeb('0x34')];if(!_0x4c9c58[_0x1eeb('0x2e')][_0x1eeb('0x35')](_0x1eeb('0x36'))){_0x3dc851[_0x1eeb('0x21')]=qs[_0x1eeb('0x21')](_0x4c9c58[_0x1eeb('0x2e')][_0x1eeb('0x21')]);_0x3dc851[_0x1eeb('0x1e')]=qs['offset'](_0x4c9c58[_0x1eeb('0x2e')]['offset']);}return _0x47f6b2[_0x1eeb('0x4d')](_0x3dc851);}})['then'](function(_0x2cb5be){if(_0x2cb5be){return _0x2cb5be?{'count':_0x5eacf7,'rows':_0x2cb5be}:null;}})[_0x1eeb('0x40')](respondWithResult(_0x279788,null))[_0x1eeb('0x47')](handleError(_0x279788,null));};exports[_0x1eeb('0x4f')]=function(_0x4f89d4,_0x50612e,_0x1baf3a){var _0x500d85={};var _0x1fbcfa={};var _0x515e8a;var _0x5982a7;return db['VtigerConfiguration'][_0x1eeb('0x4b')]({'where':{'id':_0x4f89d4[_0x1eeb('0x43')]['id']}})[_0x1eeb('0x40')](handleEntityNotFound(_0x50612e,null))[_0x1eeb('0x40')](function(_0x6fed7){if(_0x6fed7){_0x515e8a=_0x6fed7;_0x1fbcfa['model']=_[_0x1eeb('0x2f')](db['VtigerField'][_0x1eeb('0x2b')]);_0x1fbcfa[_0x1eeb('0x2e')]=_[_0x1eeb('0x2f')](_0x4f89d4['query']);_0x1fbcfa[_0x1eeb('0x30')]=_[_0x1eeb('0x31')](_0x1fbcfa[_0x1eeb('0x2d')],_0x1fbcfa[_0x1eeb('0x2e')]);_0x500d85[_0x1eeb('0x33')]=_[_0x1eeb('0x31')](_0x1fbcfa[_0x1eeb('0x2d')],qs[_0x1eeb('0x32')](_0x4f89d4[_0x1eeb('0x2e')]['fields']));_0x500d85['attributes']=_0x500d85[_0x1eeb('0x33')][_0x1eeb('0x34')]?_0x500d85[_0x1eeb('0x33')]:_0x1fbcfa[_0x1eeb('0x2d')];_0x500d85['order']=qs[_0x1eeb('0x37')](_0x4f89d4[_0x1eeb('0x2e')][_0x1eeb('0x37')]);_0x500d85[_0x1eeb('0x38')]=qs[_0x1eeb('0x30')](_[_0x1eeb('0x39')](_0x4f89d4[_0x1eeb('0x2e')],_0x1fbcfa['filters']));if(_0x4f89d4[_0x1eeb('0x2e')][_0x1eeb('0x3a')]){_0x500d85[_0x1eeb('0x38')]=_[_0x1eeb('0x3b')](_0x500d85[_0x1eeb('0x38')],{'$or':_[_0x1eeb('0x2a')](_0x500d85[_0x1eeb('0x33')],function(_0xcee4dc){var _0x46f4e6={};_0x46f4e6[_0xcee4dc]={'$like':'%'+_0x4f89d4[_0x1eeb('0x2e')][_0x1eeb('0x3a')]+'%'};return _0x46f4e6;})});}_0x500d85=_[_0x1eeb('0x3b')]({},_0x500d85,_0x4f89d4[_0x1eeb('0x45')]);return _0x515e8a['getDescriptions'](_0x500d85);}})[_0x1eeb('0x40')](function(_0x2de07c){if(_0x2de07c){_0x5982a7=_0x2de07c[_0x1eeb('0x34')];if(!_0x4f89d4[_0x1eeb('0x2e')][_0x1eeb('0x35')](_0x1eeb('0x36'))){_0x500d85[_0x1eeb('0x21')]=qs[_0x1eeb('0x21')](_0x4f89d4[_0x1eeb('0x2e')][_0x1eeb('0x21')]);_0x500d85[_0x1eeb('0x1e')]=qs[_0x1eeb('0x1e')](_0x4f89d4[_0x1eeb('0x2e')][_0x1eeb('0x1e')]);}return _0x515e8a[_0x1eeb('0x4f')](_0x500d85);}})[_0x1eeb('0x40')](function(_0x5e5ca0){if(_0x5e5ca0){return _0x5e5ca0?{'count':_0x5982a7,'rows':_0x5e5ca0}:null;}})['then'](respondWithResult(_0x50612e,null))[_0x1eeb('0x47')](handleError(_0x50612e,null));};
\ No newline at end of file
index cd4b940..98d1b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa02a=['define','VtigerConfiguration','lodash','../../config/logger','api','bluebird','request-promise','../../config/environment','./intVtigerConfiguration.attributes'];(function(_0x5256aa,_0x484e8f){var _0x137e79=function(_0x325020){while(--_0x325020){_0x5256aa['push'](_0x5256aa['shift']());}};_0x137e79(++_0x484e8f);}(_0xa02a,0x13d));var _0xaa02=function(_0x3f0d65,_0x182a58){_0x3f0d65=_0x3f0d65-0x0;var _0x3b9032=_0xa02a[_0x3f0d65];return _0x3b9032;};'use strict';var _=require(_0xaa02('0x0'));var util=require('util');var logger=require(_0xaa02('0x1'))(_0xaa02('0x2'));var moment=require('moment');var BPromise=require(_0xaa02('0x3'));var rp=require(_0xaa02('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaa02('0x5'));var attributes=require(_0xaa02('0x6'));module['exports']=function(_0x32ed37,_0x2f8b6f){return _0x32ed37[_0xaa02('0x7')](_0xaa02('0x8'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8fcd=['exports','VtigerConfiguration','int_vtiger_configurations','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2630b0,_0x4fc97f){var _0x2f4889=function(_0x32e6bd){while(--_0x32e6bd){_0x2630b0['push'](_0x2630b0['shift']());}};_0x2f4889(++_0x4fc97f);}(_0x8fcd,0x71));var _0xd8fc=function(_0x346e72,_0x117c31){_0x346e72=_0x346e72-0x0;var _0x4923cd=_0x8fcd[_0x346e72];return _0x4923cd;};'use strict';var _=require(_0xd8fc('0x0'));var util=require(_0xd8fc('0x1'));var logger=require('../../config/logger')(_0xd8fc('0x2'));var moment=require(_0xd8fc('0x3'));var BPromise=require(_0xd8fc('0x4'));var rp=require(_0xd8fc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd8fc('0x6'));var config=require(_0xd8fc('0x7'));var attributes=require('./intVtigerConfiguration.attributes');module[_0xd8fc('0x8')]=function(_0x4b19ff,_0x2c3369){return _0x4b19ff['define'](_0xd8fc('0x9'),attributes,{'tableName':_0xd8fc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6aaa880..58202c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13bd=['error','message','catch','lodash','util','moment','randomstring','ioredis','rpc','../../config/environment','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x594e1d,_0x4432fe){var _0x427b34=function(_0x21324d){while(--_0x21324d){_0x594e1d['push'](_0x594e1d['shift']());}};_0x427b34(++_0x4432fe);}(_0x13bd,0x1e9));var _0xd13b=function(_0x3fea84,_0x3e832f){_0x3fea84=_0x3fea84-0x0;var _0x20778a=_0x13bd[_0x3fea84];return _0x20778a;};'use strict';var _=require(_0xd13b('0x0'));var util=require(_0xd13b('0x1'));var moment=require(_0xd13b('0x2'));var BPromise=require('bluebird');var rs=require(_0xd13b('0x3'));var fs=require('fs');var Redis=require(_0xd13b('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd13b('0x5'));var config=require(_0xd13b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd13b('0x7')][_0xd13b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d86b9,_0x4d39b5,_0x581bb8){return new BPromise(function(_0x4ba40b,_0xfc3caf){return client[_0xd13b('0x9')](_0x3d86b9,_0x581bb8)[_0xd13b('0xa')](function(_0x69b04d){logger[_0xd13b('0xb')](_0xd13b('0xc'),_0x4d39b5,_0xd13b('0xd'));logger['debug'](_0xd13b('0xe'),_0x4d39b5,_0xd13b('0xd'),JSON['stringify'](_0x69b04d));if(_0x69b04d['error']){if(_0x69b04d['error']['code']===0x1f4){logger[_0xd13b('0xf')](_0xd13b('0xc'),_0x4d39b5,_0x69b04d[_0xd13b('0xf')][_0xd13b('0x10')]);return _0xfc3caf(_0x69b04d[_0xd13b('0xf')]['message']);}logger[_0xd13b('0xf')](_0xd13b('0xc'),_0x4d39b5,_0x69b04d[_0xd13b('0xf')][_0xd13b('0x10')]);return _0x4ba40b(_0x69b04d[_0xd13b('0xf')]['message']);}else{logger[_0xd13b('0xb')](_0xd13b('0xc'),_0x4d39b5,_0xd13b('0xd'));_0x4ba40b(_0x69b04d['result']['message']);}})[_0xd13b('0x11')](function(_0x2e27ab){logger['error'](_0xd13b('0xc'),_0x4d39b5,_0x2e27ab);_0xfc3caf(_0x2e27ab);});});}
\ No newline at end of file
+var _0xb54f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x1a5270,_0x4c52ad){var _0x12e0f1=function(_0x5e2fa7){while(--_0x5e2fa7){_0x1a5270['push'](_0x1a5270['shift']());}};_0x12e0f1(++_0x4c52ad);}(_0xb54f,0x142));var _0xfb54=function(_0x1a2bb2,_0x52da38){_0x1a2bb2=_0x1a2bb2-0x0;var _0x926478=_0xb54f[_0x1a2bb2];return _0x926478;};'use strict';var _=require(_0xfb54('0x0'));var util=require(_0xfb54('0x1'));var moment=require(_0xfb54('0x2'));var BPromise=require(_0xfb54('0x3'));var rs=require(_0xfb54('0x4'));var fs=require('fs');var Redis=require(_0xfb54('0x5'));var db=require(_0xfb54('0x6'))['db'];var utils=require(_0xfb54('0x7'));var logger=require(_0xfb54('0x8'))('rpc');var config=require(_0xfb54('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfb54('0xa')][_0xfb54('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d6dcc,_0x16cb88,_0x280373){return new BPromise(function(_0x5dded9,_0x449dba){return client[_0xfb54('0xc')](_0x4d6dcc,_0x280373)['then'](function(_0x625cec){logger[_0xfb54('0xd')](_0xfb54('0xe'),_0x16cb88,_0xfb54('0xf'));logger['debug'](_0xfb54('0x10'),_0x16cb88,'request\x20sent',JSON[_0xfb54('0x11')](_0x625cec));if(_0x625cec['error']){if(_0x625cec[_0xfb54('0x12')][_0xfb54('0x13')]===0x1f4){logger[_0xfb54('0x12')](_0xfb54('0xe'),_0x16cb88,_0x625cec[_0xfb54('0x12')][_0xfb54('0x14')]);return _0x449dba(_0x625cec[_0xfb54('0x12')][_0xfb54('0x14')]);}logger[_0xfb54('0x12')](_0xfb54('0xe'),_0x16cb88,_0x625cec[_0xfb54('0x12')][_0xfb54('0x14')]);return _0x5dded9(_0x625cec[_0xfb54('0x12')]['message']);}else{logger[_0xfb54('0xd')](_0xfb54('0xe'),_0x16cb88,'request\x20sent');_0x5dded9(_0x625cec[_0xfb54('0x15')][_0xfb54('0x14')]);}})[_0xfb54('0x16')](function(_0x33c503){logger[_0xfb54('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x16cb88,_0x33c503);_0x449dba(_0x33c503);});});}
\ No newline at end of file
index 67ddefe..280340c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd547=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','post','create','isAuthenticated','update','delete','exports','multer','util','connect-timeout'];(function(_0x5b2e3d,_0x2d7f7b){var _0x35a13c=function(_0x831acc){while(--_0x831acc){_0x5b2e3d['push'](_0x5b2e3d['shift']());}};_0x35a13c(++_0x2d7f7b);}(_0xd547,0x8d));var _0x7d54=function(_0x1d7599,_0x49929f){_0x1d7599=_0x1d7599-0x0;var _0x55da12=_0xd547[_0x1d7599];return _0x55da12;};'use strict';var multer=require(_0x7d54('0x0'));var util=require(_0x7d54('0x1'));var path=require('path');var timeout=require(_0x7d54('0x2'));var express=require('express');var router=express[_0x7d54('0x3')]();var fs_extra=require(_0x7d54('0x4'));var auth=require(_0x7d54('0x5'));var interaction=require(_0x7d54('0x6'));var config=require(_0x7d54('0x7'));var controller=require('./intVtigerField.controller');router[_0x7d54('0x8')]('/',auth['isAuthenticated'](),controller[_0x7d54('0x9')]);router[_0x7d54('0x8')](_0x7d54('0xa'),auth['isAuthenticated'](),controller[_0x7d54('0xb')]);router[_0x7d54('0xc')]('/',auth['isAuthenticated'](),controller[_0x7d54('0xd')]);router['put'](_0x7d54('0xa'),auth[_0x7d54('0xe')](),controller[_0x7d54('0xf')]);router[_0x7d54('0x10')](_0x7d54('0xa'),auth[_0x7d54('0xe')](),controller['destroy']);module[_0x7d54('0x11')]=router;
\ No newline at end of file
+var _0xd646=['../../components/auth/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id','show','post','create','destroy','exports','util','path','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd646,0x138));var _0x6d64=function(_0x1786b7,_0x25bfc1){_0x1786b7=_0x1786b7-0x0;var _0x415e7c=_0xd646[_0x1786b7];return _0x415e7c;};'use strict';var multer=require('multer');var util=require(_0x6d64('0x0'));var path=require(_0x6d64('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6d64('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x6d64('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x6d64('0x4'));var controller=require(_0x6d64('0x5'));router[_0x6d64('0x6')]('/',auth[_0x6d64('0x7')](),controller[_0x6d64('0x8')]);router[_0x6d64('0x6')](_0x6d64('0x9'),auth[_0x6d64('0x7')](),controller[_0x6d64('0xa')]);router[_0x6d64('0xb')]('/',auth['isAuthenticated'](),controller[_0x6d64('0xc')]);router['put'](_0x6d64('0x9'),auth[_0x6d64('0x7')](),controller['update']);router['delete'](_0x6d64('0x9'),auth[_0x6d64('0x7')](),controller[_0x6d64('0xd')]);module[_0x6d64('0xe')]=router;
\ No newline at end of file
index 37e1c26..9f4c461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['ENUM','string','variable','picklist','STRING','customVariable','BOOLEAN','sequelize','exports'];(function(_0xa000c2,_0x4bf85e){var _0x1fee06=function(_0x21f66b){while(--_0x21f66b){_0xa000c2['push'](_0xa000c2['shift']());}};_0x1fee06(++_0x4bf85e);}(_0x049e,0xdf));var _0xe049=function(_0x31b31b,_0x5f044e){_0x31b31b=_0x31b31b-0x0;var _0x2c8fc2=_0x049e[_0x31b31b];return _0x2c8fc2;};'use strict';var Sequelize=require(_0xe049('0x0'));module[_0xe049('0x1')]={'type':{'type':Sequelize[_0xe049('0x2')](_0xe049('0x3'),_0xe049('0x4'),'customVariable','keyValue',_0xe049('0x5')),'defaultValue':_0xe049('0x3')},'content':{'type':Sequelize[_0xe049('0x6')]},'key':{'type':Sequelize[_0xe049('0x6')]},'keyType':{'type':Sequelize[_0xe049('0x2')](_0xe049('0x3'),'variable',_0xe049('0x7'))},'keyContent':{'type':Sequelize[_0xe049('0x6')]},'idField':{'type':Sequelize[_0xe049('0x6')]},'nameField':{'type':Sequelize[_0xe049('0x6')]},'customField':{'type':Sequelize[_0xe049('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe049('0x6')]}};
\ No newline at end of file
+var _0xc30b=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string'];(function(_0x2e035f,_0x54eed9){var _0x1a9b72=function(_0xaa4de){while(--_0xaa4de){_0x2e035f['push'](_0x2e035f['shift']());}};_0x1a9b72(++_0x54eed9);}(_0xc30b,0x12f));var _0xbc30=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xc30b[_0x2070da];return _0x4f9fe1;};'use strict';var Sequelize=require('sequelize');module[_0xbc30('0x0')]={'type':{'type':Sequelize[_0xbc30('0x1')](_0xbc30('0x2'),_0xbc30('0x3'),_0xbc30('0x4'),_0xbc30('0x5'),_0xbc30('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xbc30('0x7')]},'key':{'type':Sequelize[_0xbc30('0x7')]},'keyType':{'type':Sequelize[_0xbc30('0x1')](_0xbc30('0x2'),_0xbc30('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xbc30('0x7')]},'customField':{'type':Sequelize[_0xbc30('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbc30('0x7')]}};
\ No newline at end of file
index 95b2351..e27b121 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e15=['hasOwnProperty','nolimit','order','sort','where','filter','options','includeAll','include','show','params','keys','rawAttributes','find','catch','create','body','update','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','reject','then','destroy','error','name','send','index','VtigerField','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','length'];(function(_0x1b8bb8,_0x5280ef){var _0x2b3683=function(_0x5cc6f1){while(--_0x5cc6f1){_0x1b8bb8['push'](_0x1b8bb8['shift']());}};_0x2b3683(++_0x5280ef);}(_0x8e15,0x94));var _0x58e1=function(_0x1e41ba,_0x455a21){_0x1e41ba=_0x1e41ba-0x0;var _0x201d61=_0x8e15[_0x1e41ba];return _0x201d61;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x58e1('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x58e1('0x1'));var rp=require('request-promise');var moment=require(_0x58e1('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x58e1('0x3'));var path=require(_0x58e1('0x4'));var sox=require(_0x58e1('0x5'));var csv=require(_0x58e1('0x6'));var ejs=require(_0x58e1('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x58e1('0x8'));var squel=require(_0x58e1('0x9'));var crypto=require(_0x58e1('0xa'));var jsforce=require(_0x58e1('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x58e1('0x6'));var querystring=require('querystring');var Papa=require(_0x58e1('0xc'));var Redis=require(_0x58e1('0xd'));var authService=require(_0x58e1('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x58e1('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x58e1('0x10'));var utils=require('../../config/utils');var config=require(_0x58e1('0x11'));var licenseUtil=require(_0x58e1('0x12'));var db=require(_0x58e1('0x13'))['db'];function respondWithStatusCode(_0x1c17ab,_0x4d582c){_0x4d582c=_0x4d582c||0xcc;return function(_0x5ce658){if(_0x5ce658){return _0x1c17ab[_0x58e1('0x14')](_0x4d582c);}return _0x1c17ab['status'](_0x4d582c)[_0x58e1('0x15')]();};}function respondWithResult(_0x1411c5,_0x46bb03){_0x46bb03=_0x46bb03||0xc8;return function(_0x17cf5b){if(_0x17cf5b){return _0x1411c5[_0x58e1('0x16')](_0x46bb03)['json'](_0x17cf5b);}};}function respondWithFilteredResult(_0x331559,_0xf31338){return function(_0x12c7ed){if(_0x12c7ed){var _0x18a90c=typeof _0xf31338[_0x58e1('0x17')]===_0x58e1('0x18')&&typeof _0xf31338[_0x58e1('0x19')]===_0x58e1('0x18');var _0xd2a64d=_0x12c7ed[_0x58e1('0x1a')];var _0x5c3c1c=_0x18a90c?0x0:_0xf31338[_0x58e1('0x17')];var _0xaf62a2=_0x18a90c?_0x12c7ed[_0x58e1('0x1a')]:_0xf31338['offset']+_0xf31338[_0x58e1('0x19')];var _0xf712a7;if(_0xaf62a2>=_0xd2a64d){_0xaf62a2=_0xd2a64d;_0xf712a7=0xc8;}else{_0xf712a7=0xce;}_0x331559[_0x58e1('0x16')](_0xf712a7);return _0x331559['set'](_0x58e1('0x1b'),_0x5c3c1c+'-'+_0xaf62a2+'/'+_0xd2a64d)['json'](_0x12c7ed);}return null;};}function patchUpdates(_0x4e3fe9){return function(_0x3c9901){try{jsonpatch['apply'](_0x3c9901,_0x4e3fe9,!![]);}catch(_0x7bd6dc){return BPromise[_0x58e1('0x1c')](_0x7bd6dc);}return _0x3c9901['save']();};}function saveUpdates(_0x30a4ca,_0x3f458e){return function(_0x1b8f32){if(_0x1b8f32){return _0x1b8f32['update'](_0x30a4ca)[_0x58e1('0x1d')](function(_0x282840){return _0x282840;});}return null;};}function removeEntity(_0x3556de,_0x1567d7){return function(_0x20f494){if(_0x20f494){return _0x20f494[_0x58e1('0x1e')]()[_0x58e1('0x1d')](function(){_0x3556de[_0x58e1('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22d63d,_0x5d39c3){return function(_0x51fd38){if(!_0x51fd38){_0x22d63d[_0x58e1('0x14')](0x194);}return _0x51fd38;};}function handleError(_0x4a839e,_0x739a50){_0x739a50=_0x739a50||0x1f4;return function(_0x2ca6ff){logger[_0x58e1('0x1f')](_0x2ca6ff['stack']);if(_0x2ca6ff[_0x58e1('0x20')]){delete _0x2ca6ff['name'];}_0x4a839e[_0x58e1('0x16')](_0x739a50)[_0x58e1('0x21')](_0x2ca6ff);};}exports[_0x58e1('0x22')]=function(_0x1d0f3d,_0x4e43ba){var _0x1eaeb7={},_0x2af1e1={},_0x5dab4b={'count':0x0,'rows':[]};var _0x593e29=_['map'](db[_0x58e1('0x23')]['rawAttributes'],function(_0x2bff36){return{'name':_0x2bff36[_0x58e1('0x24')],'type':_0x2bff36[_0x58e1('0x25')][_0x58e1('0x26')]};});_0x2af1e1['model']=_[_0x58e1('0x27')](_0x593e29,_0x58e1('0x20'));_0x2af1e1[_0x58e1('0x28')]=_['keys'](_0x1d0f3d[_0x58e1('0x28')]);_0x2af1e1[_0x58e1('0x29')]=_['intersection'](_0x2af1e1[_0x58e1('0x2a')],_0x2af1e1['query']);_0x1eaeb7[_0x58e1('0x2b')]=_[_0x58e1('0x2c')](_0x2af1e1[_0x58e1('0x2a')],qs[_0x58e1('0x2d')](_0x1d0f3d[_0x58e1('0x28')][_0x58e1('0x2d')]));_0x1eaeb7['attributes']=_0x1eaeb7[_0x58e1('0x2b')][_0x58e1('0x2e')]?_0x1eaeb7[_0x58e1('0x2b')]:_0x2af1e1['model'];if(!_0x1d0f3d[_0x58e1('0x28')][_0x58e1('0x2f')](_0x58e1('0x30'))){_0x1eaeb7[_0x58e1('0x19')]=qs[_0x58e1('0x19')](_0x1d0f3d['query'][_0x58e1('0x19')]);_0x1eaeb7[_0x58e1('0x17')]=qs[_0x58e1('0x17')](_0x1d0f3d[_0x58e1('0x28')][_0x58e1('0x17')]);}_0x1eaeb7[_0x58e1('0x31')]=qs[_0x58e1('0x32')](_0x1d0f3d[_0x58e1('0x28')]['sort']);_0x1eaeb7[_0x58e1('0x33')]=qs[_0x58e1('0x29')](_['pick'](_0x1d0f3d[_0x58e1('0x28')],_0x2af1e1[_0x58e1('0x29')]),_0x593e29);if(_0x1d0f3d[_0x58e1('0x28')][_0x58e1('0x34')]){_0x1eaeb7[_0x58e1('0x33')]=_['merge'](_0x1eaeb7[_0x58e1('0x33')],{'$or':_[_0x58e1('0x27')](_0x593e29,function(_0x557b0c){if(_0x557b0c[_0x58e1('0x25')]!=='VIRTUAL'){var _0x52a44c={};_0x52a44c[_0x557b0c[_0x58e1('0x20')]]={'$like':'%'+_0x1d0f3d['query'][_0x58e1('0x34')]+'%'};return _0x52a44c;}})});}_0x1eaeb7=_['merge']({},_0x1eaeb7,_0x1d0f3d[_0x58e1('0x35')]);var _0x321a37={'where':_0x1eaeb7[_0x58e1('0x33')]};return db[_0x58e1('0x23')]['count'](_0x321a37)[_0x58e1('0x1d')](function(_0x13cb54){_0x5dab4b[_0x58e1('0x1a')]=_0x13cb54;if(_0x1d0f3d['query'][_0x58e1('0x36')]){_0x1eaeb7[_0x58e1('0x37')]=[{'all':!![]}];}return db[_0x58e1('0x23')]['findAll'](_0x1eaeb7);})['then'](function(_0x1808c4){_0x5dab4b['rows']=_0x1808c4;return _0x5dab4b;})[_0x58e1('0x1d')](respondWithFilteredResult(_0x4e43ba,_0x1eaeb7))['catch'](handleError(_0x4e43ba,null));};exports[_0x58e1('0x38')]=function(_0xe94544,_0x1eda27){var _0x3109e9={'raw':!![],'where':{'id':_0xe94544[_0x58e1('0x39')]['id']}},_0x19e818={};_0x19e818['model']=_[_0x58e1('0x3a')](db[_0x58e1('0x23')][_0x58e1('0x3b')]);_0x19e818[_0x58e1('0x28')]=_['keys'](_0xe94544[_0x58e1('0x28')]);_0x19e818[_0x58e1('0x29')]=_[_0x58e1('0x2c')](_0x19e818[_0x58e1('0x2a')],_0x19e818['query']);_0x3109e9[_0x58e1('0x2b')]=_[_0x58e1('0x2c')](_0x19e818['model'],qs['fields'](_0xe94544[_0x58e1('0x28')][_0x58e1('0x2d')]));_0x3109e9[_0x58e1('0x2b')]=_0x3109e9[_0x58e1('0x2b')][_0x58e1('0x2e')]?_0x3109e9[_0x58e1('0x2b')]:_0x19e818['model'];if(_0xe94544['query'][_0x58e1('0x36')]){_0x3109e9[_0x58e1('0x37')]=[{'all':!![]}];}_0x3109e9=_['merge']({},_0x3109e9,_0xe94544[_0x58e1('0x35')]);return db[_0x58e1('0x23')][_0x58e1('0x3c')](_0x3109e9)['then'](handleEntityNotFound(_0x1eda27,null))[_0x58e1('0x1d')](respondWithResult(_0x1eda27,null))[_0x58e1('0x3d')](handleError(_0x1eda27,null));};exports[_0x58e1('0x3e')]=function(_0x56aabc,_0x1c03cf){return db[_0x58e1('0x23')]['create'](_0x56aabc[_0x58e1('0x3f')],{})[_0x58e1('0x1d')](respondWithResult(_0x1c03cf,0xc9))[_0x58e1('0x3d')](handleError(_0x1c03cf,null));};exports[_0x58e1('0x40')]=function(_0x46c24e,_0x454af1){if(_0x46c24e[_0x58e1('0x3f')]['id']){delete _0x46c24e[_0x58e1('0x3f')]['id'];}return db[_0x58e1('0x23')]['find']({'where':{'id':_0x46c24e['params']['id']}})['then'](handleEntityNotFound(_0x454af1,null))[_0x58e1('0x1d')](saveUpdates(_0x46c24e[_0x58e1('0x3f')],null))['then'](respondWithResult(_0x454af1,null))[_0x58e1('0x3d')](handleError(_0x454af1,null));};exports[_0x58e1('0x1e')]=function(_0x429a00,_0x1fffdb){return db[_0x58e1('0x23')][_0x58e1('0x3c')]({'where':{'id':_0x429a00[_0x58e1('0x39')]['id']}})['then'](handleEntityNotFound(_0x1fffdb,null))[_0x58e1('0x1d')](removeEntity(_0x1fffdb,null))[_0x58e1('0x3d')](handleError(_0x1fffdb,null));};
\ No newline at end of file
+var _0x2812=['includeAll','update','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','sendStatus','error','name','send','index','map','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VtigerField','include','findAll','catch','show','rawAttributes'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0x2812,0x168));var _0x2281=function(_0x398294,_0x5ceb9d){_0x398294=_0x398294-0x0;var _0x2a872d=_0x2812[_0x398294];return _0x2a872d;};'use strict';var emlformat=require(_0x2281('0x0'));var rimraf=require(_0x2281('0x1'));var zipdir=require(_0x2281('0x2'));var jsonpatch=require(_0x2281('0x3'));var rp=require(_0x2281('0x4'));var moment=require(_0x2281('0x5'));var BPromise=require(_0x2281('0x6'));var Mustache=require('mustache');var util=require(_0x2281('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2281('0x8'));var fs=require('fs');var fs_extra=require(_0x2281('0x9'));var _=require('lodash');var squel=require(_0x2281('0xa'));var crypto=require('crypto');var jsforce=require(_0x2281('0xb'));var deskjs=require(_0x2281('0xc'));var toCsv=require(_0x2281('0xd'));var querystring=require(_0x2281('0xe'));var Papa=require(_0x2281('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2281('0x10'));var as=require(_0x2281('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2281('0x12'))(_0x2281('0x13'));var utils=require(_0x2281('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x2281('0x15'));var db=require(_0x2281('0x16'))['db'];function respondWithStatusCode(_0x1c89df,_0x1c007e){_0x1c007e=_0x1c007e||0xcc;return function(_0x520f0b){if(_0x520f0b){return _0x1c89df['sendStatus'](_0x1c007e);}return _0x1c89df[_0x2281('0x17')](_0x1c007e)[_0x2281('0x18')]();};}function respondWithResult(_0x1af1f8,_0x33e3c7){_0x33e3c7=_0x33e3c7||0xc8;return function(_0x53c46b){if(_0x53c46b){return _0x1af1f8['status'](_0x33e3c7)[_0x2281('0x19')](_0x53c46b);}};}function respondWithFilteredResult(_0x18f6a5,_0x1c7571){return function(_0xa88771){if(_0xa88771){var _0x2cb2a9=typeof _0x1c7571[_0x2281('0x1a')]===_0x2281('0x1b')&&typeof _0x1c7571[_0x2281('0x1c')]===_0x2281('0x1b');var _0x535248=_0xa88771[_0x2281('0x1d')];var _0x4fc31f=_0x2cb2a9?0x0:_0x1c7571[_0x2281('0x1a')];var _0x23e9ad=_0x2cb2a9?_0xa88771['count']:_0x1c7571[_0x2281('0x1a')]+_0x1c7571[_0x2281('0x1c')];var _0x6ab00d;if(_0x23e9ad>=_0x535248){_0x23e9ad=_0x535248;_0x6ab00d=0xc8;}else{_0x6ab00d=0xce;}_0x18f6a5['status'](_0x6ab00d);return _0x18f6a5[_0x2281('0x1e')](_0x2281('0x1f'),_0x4fc31f+'-'+_0x23e9ad+'/'+_0x535248)[_0x2281('0x19')](_0xa88771);}return null;};}function patchUpdates(_0x36788a){return function(_0x4e35ae){try{jsonpatch[_0x2281('0x20')](_0x4e35ae,_0x36788a,!![]);}catch(_0x12ad0d){return BPromise['reject'](_0x12ad0d);}return _0x4e35ae['save']();};}function saveUpdates(_0x220209,_0x2d2f44){return function(_0x28ffdf){if(_0x28ffdf){return _0x28ffdf['update'](_0x220209)['then'](function(_0x3c636b){return _0x3c636b;});}return null;};}function removeEntity(_0x3bab09,_0x31a30e){return function(_0x3d0ad1){if(_0x3d0ad1){return _0x3d0ad1['destroy']()[_0x2281('0x21')](function(){_0x3bab09[_0x2281('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x263129,_0x17db55){return function(_0x18f136){if(!_0x18f136){_0x263129[_0x2281('0x22')](0x194);}return _0x18f136;};}function handleError(_0x12cec7,_0x24b5ae){_0x24b5ae=_0x24b5ae||0x1f4;return function(_0x29d24d){logger[_0x2281('0x23')](_0x29d24d['stack']);if(_0x29d24d['name']){delete _0x29d24d[_0x2281('0x24')];}_0x12cec7['status'](_0x24b5ae)[_0x2281('0x25')](_0x29d24d);};}exports[_0x2281('0x26')]=function(_0x11d5c5,_0x5c396a){var _0xf04d1a={},_0x23b5a1={},_0x68e1ef={'count':0x0,'rows':[]};var _0x12ea9b=_[_0x2281('0x27')](db['VtigerField']['rawAttributes'],function(_0x5dbaa8){return{'name':_0x5dbaa8[_0x2281('0x28')],'type':_0x5dbaa8['type'][_0x2281('0x29')]};});_0x23b5a1['model']=_[_0x2281('0x27')](_0x12ea9b,_0x2281('0x24'));_0x23b5a1[_0x2281('0x2a')]=_[_0x2281('0x2b')](_0x11d5c5[_0x2281('0x2a')]);_0x23b5a1[_0x2281('0x2c')]=_[_0x2281('0x2d')](_0x23b5a1[_0x2281('0x2e')],_0x23b5a1['query']);_0xf04d1a[_0x2281('0x2f')]=_[_0x2281('0x2d')](_0x23b5a1[_0x2281('0x2e')],qs[_0x2281('0x30')](_0x11d5c5[_0x2281('0x2a')][_0x2281('0x30')]));_0xf04d1a['attributes']=_0xf04d1a[_0x2281('0x2f')][_0x2281('0x31')]?_0xf04d1a['attributes']:_0x23b5a1[_0x2281('0x2e')];if(!_0x11d5c5[_0x2281('0x2a')][_0x2281('0x32')]('nolimit')){_0xf04d1a[_0x2281('0x1c')]=qs['limit'](_0x11d5c5[_0x2281('0x2a')][_0x2281('0x1c')]);_0xf04d1a['offset']=qs[_0x2281('0x1a')](_0x11d5c5[_0x2281('0x2a')][_0x2281('0x1a')]);}_0xf04d1a[_0x2281('0x33')]=qs['sort'](_0x11d5c5['query'][_0x2281('0x34')]);_0xf04d1a[_0x2281('0x35')]=qs['filters'](_[_0x2281('0x36')](_0x11d5c5[_0x2281('0x2a')],_0x23b5a1[_0x2281('0x2c')]),_0x12ea9b);if(_0x11d5c5[_0x2281('0x2a')][_0x2281('0x37')]){_0xf04d1a[_0x2281('0x35')]=_[_0x2281('0x38')](_0xf04d1a[_0x2281('0x35')],{'$or':_['map'](_0x12ea9b,function(_0x6bd17f){if(_0x6bd17f[_0x2281('0x39')]!==_0x2281('0x3a')){var _0x2ee47a={};_0x2ee47a[_0x6bd17f[_0x2281('0x24')]]={'$like':'%'+_0x11d5c5[_0x2281('0x2a')][_0x2281('0x37')]+'%'};return _0x2ee47a;}})});}_0xf04d1a=_[_0x2281('0x38')]({},_0xf04d1a,_0x11d5c5[_0x2281('0x3b')]);var _0x20a3ff={'where':_0xf04d1a[_0x2281('0x35')]};return db[_0x2281('0x3c')][_0x2281('0x1d')](_0x20a3ff)[_0x2281('0x21')](function(_0x1b4935){_0x68e1ef[_0x2281('0x1d')]=_0x1b4935;if(_0x11d5c5['query']['includeAll']){_0xf04d1a[_0x2281('0x3d')]=[{'all':!![]}];}return db['VtigerField'][_0x2281('0x3e')](_0xf04d1a);})[_0x2281('0x21')](function(_0x58d037){_0x68e1ef['rows']=_0x58d037;return _0x68e1ef;})['then'](respondWithFilteredResult(_0x5c396a,_0xf04d1a))[_0x2281('0x3f')](handleError(_0x5c396a,null));};exports[_0x2281('0x40')]=function(_0x275a87,_0x10e4b3){var _0x32e308={'raw':!![],'where':{'id':_0x275a87['params']['id']}},_0x2e0aa6={};_0x2e0aa6[_0x2281('0x2e')]=_[_0x2281('0x2b')](db['VtigerField'][_0x2281('0x41')]);_0x2e0aa6['query']=_[_0x2281('0x2b')](_0x275a87['query']);_0x2e0aa6['filters']=_[_0x2281('0x2d')](_0x2e0aa6[_0x2281('0x2e')],_0x2e0aa6[_0x2281('0x2a')]);_0x32e308[_0x2281('0x2f')]=_[_0x2281('0x2d')](_0x2e0aa6['model'],qs['fields'](_0x275a87[_0x2281('0x2a')][_0x2281('0x30')]));_0x32e308[_0x2281('0x2f')]=_0x32e308['attributes'][_0x2281('0x31')]?_0x32e308[_0x2281('0x2f')]:_0x2e0aa6[_0x2281('0x2e')];if(_0x275a87[_0x2281('0x2a')][_0x2281('0x42')]){_0x32e308[_0x2281('0x3d')]=[{'all':!![]}];}_0x32e308=_['merge']({},_0x32e308,_0x275a87[_0x2281('0x3b')]);return db[_0x2281('0x3c')]['find'](_0x32e308)[_0x2281('0x21')](handleEntityNotFound(_0x10e4b3,null))[_0x2281('0x21')](respondWithResult(_0x10e4b3,null))['catch'](handleError(_0x10e4b3,null));};exports['create']=function(_0x72841e,_0x2a28d3){return db['VtigerField']['create'](_0x72841e['body'],{})['then'](respondWithResult(_0x2a28d3,0xc9))['catch'](handleError(_0x2a28d3,null));};exports[_0x2281('0x43')]=function(_0x1fa08d,_0x4d79f5){if(_0x1fa08d[_0x2281('0x44')]['id']){delete _0x1fa08d[_0x2281('0x44')]['id'];}return db[_0x2281('0x3c')][_0x2281('0x45')]({'where':{'id':_0x1fa08d['params']['id']}})[_0x2281('0x21')](handleEntityNotFound(_0x4d79f5,null))[_0x2281('0x21')](saveUpdates(_0x1fa08d[_0x2281('0x44')],null))[_0x2281('0x21')](respondWithResult(_0x4d79f5,null))[_0x2281('0x3f')](handleError(_0x4d79f5,null));};exports['destroy']=function(_0x4cf7f4,_0xcc70ab){return db[_0x2281('0x3c')][_0x2281('0x45')]({'where':{'id':_0x4cf7f4[_0x2281('0x46')]['id']}})[_0x2281('0x21')](handleEntityNotFound(_0xcc70ab,null))[_0x2281('0x21')](removeEntity(_0xcc70ab,null))[_0x2281('0x3f')](handleError(_0xcc70ab,null));};
\ No newline at end of file
index ed74380..f968ee5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa374=['./intVtigerField.attributes','exports','define','int_vtiger_fields','vtiger_unique_index','FieldId','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x52b19b,_0xbfd61b){var _0x4787c5=function(_0x351a76){while(--_0x351a76){_0x52b19b['push'](_0x52b19b['shift']());}};_0x4787c5(++_0xbfd61b);}(_0xa374,0x68));var _0x4a37=function(_0x370ce6,_0x1e5809){_0x370ce6=_0x370ce6-0x0;var _0x54d546=_0xa374[_0x370ce6];return _0x54d546;};'use strict';var _=require(_0x4a37('0x0'));var util=require(_0x4a37('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4a37('0x2'));var BPromise=require(_0x4a37('0x3'));var rp=require(_0x4a37('0x4'));var fs=require('fs');var path=require(_0x4a37('0x5'));var rimraf=require(_0x4a37('0x6'));var config=require(_0x4a37('0x7'));var attributes=require(_0x4a37('0x8'));module[_0x4a37('0x9')]=function(_0x35515f,_0x1ddfa0){return _0x35515f[_0x4a37('0xa')]('VtigerField',attributes,{'tableName':_0x4a37('0xb'),'paranoid':![],'indexes':[{'name':_0x4a37('0xc'),'fields':['idField',_0x4a37('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb96=['define','VtigerField','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports'];(function(_0x5bca34,_0x34625c){var _0x3f3581=function(_0x38e50e){while(--_0x38e50e){_0x5bca34['push'](_0x5bca34['shift']());}};_0x3f3581(++_0x34625c);}(_0xfb96,0x122));var _0x6fb9=function(_0x1d8e01,_0x482d5b){_0x1d8e01=_0x1d8e01-0x0;var _0x2753ea=_0xfb96[_0x1d8e01];return _0x2753ea;};'use strict';var _=require(_0x6fb9('0x0'));var util=require(_0x6fb9('0x1'));var logger=require(_0x6fb9('0x2'))(_0x6fb9('0x3'));var moment=require(_0x6fb9('0x4'));var BPromise=require(_0x6fb9('0x5'));var rp=require(_0x6fb9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6fb9('0x7'));var attributes=require('./intVtigerField.attributes');module[_0x6fb9('0x8')]=function(_0xbc07a7,_0x3060bc){return _0xbc07a7[_0x6fb9('0x9')](_0x6fb9('0xa'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0x6fb9('0xb'),_0x6fb9('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5ee3f46..0aa1242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe674=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch'];(function(_0xbb14db,_0x3ee8c6){var _0x36bed7=function(_0x16c478){while(--_0x16c478){_0xbb14db['push'](_0xbb14db['shift']());}};_0x36bed7(++_0x3ee8c6);}(_0xe674,0x84));var _0x4e67=function(_0xe1d7ad,_0x4f687d){_0xe1d7ad=_0xe1d7ad-0x0;var _0x359eef=_0xe674[_0xe1d7ad];return _0x359eef;};'use strict';var _=require('lodash');var util=require(_0x4e67('0x0'));var moment=require(_0x4e67('0x1'));var BPromise=require(_0x4e67('0x2'));var rs=require(_0x4e67('0x3'));var fs=require('fs');var Redis=require(_0x4e67('0x4'));var db=require(_0x4e67('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4e67('0x6'))('rpc');var config=require(_0x4e67('0x7'));var jayson=require(_0x4e67('0x8'));var client=jayson[_0x4e67('0x9')][_0x4e67('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x175d8a,_0x10b372,_0x2765b4){return new BPromise(function(_0x43ad60,_0x4c294e){return client[_0x4e67('0xb')](_0x175d8a,_0x2765b4)[_0x4e67('0xc')](function(_0x3207ff){logger[_0x4e67('0xd')](_0x4e67('0xe'),_0x10b372,'request\x20sent');logger[_0x4e67('0xf')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x10b372,_0x4e67('0x10'),JSON[_0x4e67('0x11')](_0x3207ff));if(_0x3207ff[_0x4e67('0x12')]){if(_0x3207ff[_0x4e67('0x12')][_0x4e67('0x13')]===0x1f4){logger[_0x4e67('0x12')](_0x4e67('0xe'),_0x10b372,_0x3207ff[_0x4e67('0x12')][_0x4e67('0x14')]);return _0x4c294e(_0x3207ff[_0x4e67('0x12')][_0x4e67('0x14')]);}logger['error'](_0x4e67('0xe'),_0x10b372,_0x3207ff[_0x4e67('0x12')][_0x4e67('0x14')]);return _0x43ad60(_0x3207ff['error'][_0x4e67('0x14')]);}else{logger[_0x4e67('0xd')]('VtigerField,\x20%s,\x20%s',_0x10b372,_0x4e67('0x10'));_0x43ad60(_0x3207ff['result'][_0x4e67('0x14')]);}})[_0x4e67('0x15')](function(_0x58fd6c){logger[_0x4e67('0x12')]('VtigerField,\x20%s,\x20%s',_0x10b372,_0x58fd6c);_0x4c294e(_0x58fd6c);});});}
\ No newline at end of file
+var _0xe94e=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VtigerField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe94e,0x1c0));var _0xee94=function(_0x112b2d,_0x2935dd){_0x112b2d=_0x112b2d-0x0;var _0x3da73f=_0xe94e[_0x112b2d];return _0x3da73f;};'use strict';var _=require(_0xee94('0x0'));var util=require(_0xee94('0x1'));var moment=require(_0xee94('0x2'));var BPromise=require(_0xee94('0x3'));var rs=require(_0xee94('0x4'));var fs=require('fs');var Redis=require(_0xee94('0x5'));var db=require(_0xee94('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xee94('0x7'))(_0xee94('0x8'));var config=require(_0xee94('0x9'));var jayson=require(_0xee94('0xa'));var client=jayson[_0xee94('0xb')][_0xee94('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x164204,_0x1d4529,_0x36bfad){return new BPromise(function(_0x57605c,_0x333de4){return client[_0xee94('0xd')](_0x164204,_0x36bfad)[_0xee94('0xe')](function(_0x5503ff){logger['info'](_0xee94('0xf'),_0x1d4529,'request\x20sent');logger[_0xee94('0x10')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x1d4529,_0xee94('0x11'),JSON[_0xee94('0x12')](_0x5503ff));if(_0x5503ff['error']){if(_0x5503ff[_0xee94('0x13')][_0xee94('0x14')]===0x1f4){logger[_0xee94('0x13')](_0xee94('0xf'),_0x1d4529,_0x5503ff['error'][_0xee94('0x15')]);return _0x333de4(_0x5503ff[_0xee94('0x13')][_0xee94('0x15')]);}logger['error'](_0xee94('0xf'),_0x1d4529,_0x5503ff[_0xee94('0x13')][_0xee94('0x15')]);return _0x57605c(_0x5503ff[_0xee94('0x13')][_0xee94('0x15')]);}else{logger[_0xee94('0x16')](_0xee94('0xf'),_0x1d4529,_0xee94('0x11'));_0x57605c(_0x5503ff[_0xee94('0x17')]['message']);}})[_0xee94('0x18')](function(_0x5abb15){logger[_0xee94('0x13')](_0xee94('0xf'),_0x1d4529,_0x5abb15);_0x333de4(_0x5abb15);});});}
\ No newline at end of file
index fc57082..21093c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8604=['addConfiguration','put','update','delete','/:id','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','index','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','create','post'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0x8604,0x100));var _0x4860=function(_0x570449,_0x111b90){_0x570449=_0x570449-0x0;var _0x47c496=_0x8604[_0x570449];return _0x47c496;};'use strict';var multer=require(_0x4860('0x0'));var util=require(_0x4860('0x1'));var path=require(_0x4860('0x2'));var timeout=require(_0x4860('0x3'));var express=require(_0x4860('0x4'));var router=express[_0x4860('0x5')]();var fs_extra=require(_0x4860('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4860('0x7'));var config=require(_0x4860('0x8'));var controller=require(_0x4860('0x9'));router[_0x4860('0xa')]('/',auth['isAuthenticated'](),controller[_0x4860('0xb')]);router[_0x4860('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x4860('0xc')]);router['get'](_0x4860('0xd'),auth[_0x4860('0xe')](),controller[_0x4860('0xf')]);router['get'](_0x4860('0x10'),auth['isAuthenticated'](),controller['getFields']);router['post']('/',auth['isAuthenticated'](),controller[_0x4860('0x11')]);router[_0x4860('0x12')](_0x4860('0xd'),auth[_0x4860('0xe')](),controller[_0x4860('0x13')]);router[_0x4860('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x4860('0x15')]);router[_0x4860('0x16')](_0x4860('0x17'),auth[_0x4860('0xe')](),controller[_0x4860('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x56b7=['create','post','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getFields'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0x56b7,0x193));var _0x756b=function(_0x345de7,_0x1de531){_0x345de7=_0x345de7-0x0;var _0x26ffc7=_0x56b7[_0x345de7];return _0x26ffc7;};'use strict';var multer=require(_0x756b('0x0'));var util=require(_0x756b('0x1'));var path=require(_0x756b('0x2'));var timeout=require('connect-timeout');var express=require(_0x756b('0x3'));var router=express[_0x756b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x756b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x756b('0x6'));var controller=require(_0x756b('0x7'));router[_0x756b('0x8')]('/',auth[_0x756b('0x9')](),controller[_0x756b('0xa')]);router[_0x756b('0x8')](_0x756b('0xb'),auth['isAuthenticated'](),controller[_0x756b('0xc')]);router['get'](_0x756b('0xd'),auth[_0x756b('0x9')](),controller['getConfigurations']);router[_0x756b('0x8')]('/:id/fields',auth[_0x756b('0x9')](),controller[_0x756b('0xe')]);router['post']('/',auth[_0x756b('0x9')](),controller[_0x756b('0xf')]);router[_0x756b('0x10')]('/:id/configurations',auth['isAuthenticated'](),controller['addConfiguration']);router[_0x756b('0x11')](_0x756b('0xb'),auth[_0x756b('0x9')](),controller[_0x756b('0x12')]);router[_0x756b('0x13')]('/:id',auth[_0x756b('0x9')](),controller[_0x756b('0x14')]);module[_0x756b('0x15')]=router;
\ No newline at end of file
index ba1460e..dc7fbc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75dd=['username','remoteUri','ENUM','password','token','integrationTab','newTab','sequelize','exports','STRING'];(function(_0x4d36e4,_0x37d4ef){var _0x3d9be9=function(_0xeab1f7){while(--_0xeab1f7){_0x4d36e4['push'](_0x4d36e4['shift']());}};_0x3d9be9(++_0x37d4ef);}(_0x75dd,0x1c9));var _0xd75d=function(_0x3e129a,_0x35f3c4){_0x3e129a=_0x3e129a-0x0;var _0x1dc561=_0x75dd[_0x3e129a];return _0x1dc561;};'use strict';var Sequelize=require(_0xd75d('0x0'));module[_0xd75d('0x1')]={'name':{'type':Sequelize[_0xd75d('0x2')]},'description':{'type':Sequelize[_0xd75d('0x2')]},'username':{'type':Sequelize[_0xd75d('0x2')],'unique':_0xd75d('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xd75d('0x2')]},'remoteUri':{'type':Sequelize[_0xd75d('0x2')],'unique':_0xd75d('0x4')},'authType':{'type':Sequelize[_0xd75d('0x5')](_0xd75d('0x6'),_0xd75d('0x7')),'defaultValue':_0xd75d('0x6')},'serverUrl':{'type':Sequelize[_0xd75d('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xd75d('0x8'),_0xd75d('0x9')),'defaultValue':_0xd75d('0x8')}};
\ No newline at end of file
+var _0x398a=['integrationTab','newTab','sequelize','exports','STRING','username','remoteUri','ENUM','password','token'];(function(_0x5d069b,_0xb8fb87){var _0x3aa6db=function(_0x183dc9){while(--_0x183dc9){_0x5d069b['push'](_0x5d069b['shift']());}};_0x3aa6db(++_0xb8fb87);}(_0x398a,0x11a));var _0xa398=function(_0xd6297,_0x4c1d8b){_0xd6297=_0xd6297-0x0;var _0x100a28=_0x398a[_0xd6297];return _0x100a28;};'use strict';var Sequelize=require(_0xa398('0x0'));module[_0xa398('0x1')]={'name':{'type':Sequelize[_0xa398('0x2')]},'description':{'type':Sequelize[_0xa398('0x2')]},'username':{'type':Sequelize[_0xa398('0x2')],'unique':_0xa398('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xa398('0x4')},'authType':{'type':Sequelize[_0xa398('0x5')](_0xa398('0x6'),_0xa398('0x7')),'defaultValue':_0xa398('0x6')},'serverUrl':{'type':Sequelize[_0xa398('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xa398('0x5')](_0xa398('0x8'),_0xa398('0x9')),'defaultValue':_0xa398('0x8')}};
\ No newline at end of file
index 6919f3f..77c746e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['rawAttributes','fieldName','type','key','query','keys','model','attributes','fields','order','sort','where','filters','pick','filter','merge','VIRTUAL','ZendeskAccount','include','findAll','rows','intersection','length','includeAll','options','catch','create','body','update','find','params','destroy','getConfigurations','hasOwnProperty','nolimit','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskConfiguration','ZendeskField','getFields','password','authType','remoteUri','substring','GET','format','headers','%s:%s','username','toString','base64','Basic\x20%s','%s/token:%s','token','Unknown\x20authentication\x20type','subject','group','assignee','ticket_fields','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','sendStatus','error','name','send','index','map'];(function(_0x49960a,_0x285063){var _0x4c1291=function(_0x2759fb){while(--_0x2759fb){_0x49960a['push'](_0x49960a['shift']());}};_0x4c1291(++_0x285063);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x1f22e0,_0x32e6a1){_0x1f22e0=_0x1f22e0-0x0;var _0x31d7ee=_0xbdb7[_0x1f22e0];return _0x31d7ee;};'use strict';var emlformat=require(_0x7bdb('0x0'));var rimraf=require(_0x7bdb('0x1'));var zipdir=require(_0x7bdb('0x2'));var jsonpatch=require(_0x7bdb('0x3'));var rp=require(_0x7bdb('0x4'));var moment=require(_0x7bdb('0x5'));var BPromise=require(_0x7bdb('0x6'));var Mustache=require(_0x7bdb('0x7'));var util=require(_0x7bdb('0x8'));var path=require('path');var sox=require(_0x7bdb('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7bdb('0xa'));var _=require(_0x7bdb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7bdb('0xc'));var deskjs=require(_0x7bdb('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7bdb('0xe'));var Redis=require(_0x7bdb('0xf'));var authService=require(_0x7bdb('0x10'));var qs=require(_0x7bdb('0x11'));var as=require(_0x7bdb('0x12'));var hardwareService=require(_0x7bdb('0x13'));var logger=require(_0x7bdb('0x14'))(_0x7bdb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7bdb('0x16'))['db'];var integrations=require(_0x7bdb('0x17'));function respondWithStatusCode(_0x496613,_0x8d74ff){_0x8d74ff=_0x8d74ff||0xcc;return function(_0x53021d){if(_0x53021d){return _0x496613['sendStatus'](_0x8d74ff);}return _0x496613[_0x7bdb('0x18')](_0x8d74ff)[_0x7bdb('0x19')]();};}function respondWithResult(_0x4fd91a,_0x50eeca){_0x50eeca=_0x50eeca||0xc8;return function(_0x4e98f7){if(_0x4e98f7){return _0x4fd91a[_0x7bdb('0x18')](_0x50eeca)[_0x7bdb('0x1a')](_0x4e98f7);}};}function respondWithFilteredResult(_0xe9919f,_0x25d417){return function(_0x31c909){if(_0x31c909){var _0xbde12a=typeof _0x25d417[_0x7bdb('0x1b')]===_0x7bdb('0x1c')&&typeof _0x25d417['limit']===_0x7bdb('0x1c');var _0x43f352=_0x31c909[_0x7bdb('0x1d')];var _0x2aff6a=_0xbde12a?0x0:_0x25d417['offset'];var _0x41f540=_0xbde12a?_0x31c909[_0x7bdb('0x1d')]:_0x25d417['offset']+_0x25d417[_0x7bdb('0x1e')];var _0x31f78e;if(_0x41f540>=_0x43f352){_0x41f540=_0x43f352;_0x31f78e=0xc8;}else{_0x31f78e=0xce;}_0xe9919f[_0x7bdb('0x18')](_0x31f78e);return _0xe9919f[_0x7bdb('0x1f')](_0x7bdb('0x20'),_0x2aff6a+'-'+_0x41f540+'/'+_0x43f352)['json'](_0x31c909);}return null;};}function patchUpdates(_0x49f353){return function(_0x677825){try{jsonpatch[_0x7bdb('0x21')](_0x677825,_0x49f353,!![]);}catch(_0x5daea4){return BPromise[_0x7bdb('0x22')](_0x5daea4);}return _0x677825[_0x7bdb('0x23')]();};}function saveUpdates(_0x346c72,_0x3f53e7){return function(_0x3a1d0f){if(_0x3a1d0f){return _0x3a1d0f['update'](_0x346c72)[_0x7bdb('0x24')](function(_0xdad53d){return _0xdad53d;});}return null;};}function removeEntity(_0x40c447,_0x3a456f){return function(_0x481f4b){if(_0x481f4b){return _0x481f4b['destroy']()[_0x7bdb('0x24')](function(){_0x40c447['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a9e02,_0x2abef6){return function(_0x51ab04){if(!_0x51ab04){_0x4a9e02[_0x7bdb('0x25')](0x194);}return _0x51ab04;};}function handleError(_0x72ba69,_0x3ec129){_0x3ec129=_0x3ec129||0x1f4;return function(_0x7c09cf){logger[_0x7bdb('0x26')](_0x7c09cf['stack']);if(_0x7c09cf[_0x7bdb('0x27')]){delete _0x7c09cf[_0x7bdb('0x27')];}_0x72ba69[_0x7bdb('0x18')](_0x3ec129)[_0x7bdb('0x28')](_0x7c09cf);};}exports[_0x7bdb('0x29')]=function(_0x2e8e65,_0x1e9996){var _0xd2d7be={},_0x25a1fe={},_0x365c02={'count':0x0,'rows':[]};var _0x9ec48d=_[_0x7bdb('0x2a')](db['ZendeskAccount'][_0x7bdb('0x2b')],function(_0x23fc3a){return{'name':_0x23fc3a[_0x7bdb('0x2c')],'type':_0x23fc3a[_0x7bdb('0x2d')][_0x7bdb('0x2e')]};});_0x25a1fe['model']=_[_0x7bdb('0x2a')](_0x9ec48d,_0x7bdb('0x27'));_0x25a1fe[_0x7bdb('0x2f')]=_[_0x7bdb('0x30')](_0x2e8e65['query']);_0x25a1fe['filters']=_['intersection'](_0x25a1fe[_0x7bdb('0x31')],_0x25a1fe['query']);_0xd2d7be[_0x7bdb('0x32')]=_['intersection'](_0x25a1fe[_0x7bdb('0x31')],qs[_0x7bdb('0x33')](_0x2e8e65[_0x7bdb('0x2f')]['fields']));_0xd2d7be[_0x7bdb('0x32')]=_0xd2d7be['attributes']['length']?_0xd2d7be[_0x7bdb('0x32')]:_0x25a1fe['model'];if(!_0x2e8e65[_0x7bdb('0x2f')]['hasOwnProperty']('nolimit')){_0xd2d7be[_0x7bdb('0x1e')]=qs[_0x7bdb('0x1e')](_0x2e8e65[_0x7bdb('0x2f')][_0x7bdb('0x1e')]);_0xd2d7be[_0x7bdb('0x1b')]=qs[_0x7bdb('0x1b')](_0x2e8e65['query'][_0x7bdb('0x1b')]);}_0xd2d7be[_0x7bdb('0x34')]=qs[_0x7bdb('0x35')](_0x2e8e65[_0x7bdb('0x2f')][_0x7bdb('0x35')]);_0xd2d7be[_0x7bdb('0x36')]=qs[_0x7bdb('0x37')](_[_0x7bdb('0x38')](_0x2e8e65[_0x7bdb('0x2f')],_0x25a1fe['filters']),_0x9ec48d);if(_0x2e8e65['query'][_0x7bdb('0x39')]){_0xd2d7be[_0x7bdb('0x36')]=_[_0x7bdb('0x3a')](_0xd2d7be[_0x7bdb('0x36')],{'$or':_[_0x7bdb('0x2a')](_0x9ec48d,function(_0x509e90){if(_0x509e90['type']!==_0x7bdb('0x3b')){var _0x5d7c1f={};_0x5d7c1f[_0x509e90[_0x7bdb('0x27')]]={'$like':'%'+_0x2e8e65['query'][_0x7bdb('0x39')]+'%'};return _0x5d7c1f;}})});}_0xd2d7be=_['merge']({},_0xd2d7be,_0x2e8e65['options']);var _0x21dae7={'where':_0xd2d7be[_0x7bdb('0x36')]};return db[_0x7bdb('0x3c')][_0x7bdb('0x1d')](_0x21dae7)[_0x7bdb('0x24')](function(_0x2b4829){_0x365c02[_0x7bdb('0x1d')]=_0x2b4829;if(_0x2e8e65['query']['includeAll']){_0xd2d7be[_0x7bdb('0x3d')]=[{'all':!![]}];}return db[_0x7bdb('0x3c')][_0x7bdb('0x3e')](_0xd2d7be);})[_0x7bdb('0x24')](function(_0x39fbca){_0x365c02[_0x7bdb('0x3f')]=_0x39fbca;return _0x365c02;})[_0x7bdb('0x24')](respondWithFilteredResult(_0x1e9996,_0xd2d7be))['catch'](handleError(_0x1e9996,null));};exports['show']=function(_0x1bcbcd,_0x8e893e){var _0x4636f8={'raw':![],'where':{'id':_0x1bcbcd['params']['id']}},_0x72a81c={};_0x72a81c[_0x7bdb('0x31')]=_['keys'](db[_0x7bdb('0x3c')][_0x7bdb('0x2b')]);_0x72a81c[_0x7bdb('0x2f')]=_[_0x7bdb('0x30')](_0x1bcbcd[_0x7bdb('0x2f')]);_0x72a81c[_0x7bdb('0x37')]=_[_0x7bdb('0x40')](_0x72a81c[_0x7bdb('0x31')],_0x72a81c[_0x7bdb('0x2f')]);_0x4636f8['attributes']=_[_0x7bdb('0x40')](_0x72a81c[_0x7bdb('0x31')],qs['fields'](_0x1bcbcd[_0x7bdb('0x2f')]['fields']));_0x4636f8[_0x7bdb('0x32')]=_0x4636f8[_0x7bdb('0x32')][_0x7bdb('0x41')]?_0x4636f8[_0x7bdb('0x32')]:_0x72a81c[_0x7bdb('0x31')];if(_0x1bcbcd['query'][_0x7bdb('0x42')]){_0x4636f8[_0x7bdb('0x3d')]=[{'all':!![]}];}_0x4636f8=_[_0x7bdb('0x3a')]({},_0x4636f8,_0x1bcbcd[_0x7bdb('0x43')]);return db[_0x7bdb('0x3c')]['find'](_0x4636f8)[_0x7bdb('0x24')](handleEntityNotFound(_0x8e893e,null))[_0x7bdb('0x24')](respondWithResult(_0x8e893e,null))[_0x7bdb('0x44')](handleError(_0x8e893e,null));};exports[_0x7bdb('0x45')]=function(_0x259007,_0x25c534){return db[_0x7bdb('0x3c')][_0x7bdb('0x45')](_0x259007[_0x7bdb('0x46')],{})[_0x7bdb('0x24')](respondWithResult(_0x25c534,0xc9))['catch'](handleError(_0x25c534,null));};exports[_0x7bdb('0x47')]=function(_0x58c4bc,_0x47cccd){if(_0x58c4bc[_0x7bdb('0x46')]['id']){delete _0x58c4bc[_0x7bdb('0x46')]['id'];}return db['ZendeskAccount'][_0x7bdb('0x48')]({'where':{'id':_0x58c4bc[_0x7bdb('0x49')]['id']}})['then'](handleEntityNotFound(_0x47cccd,null))['then'](saveUpdates(_0x58c4bc['body'],null))[_0x7bdb('0x24')](respondWithResult(_0x47cccd,null))[_0x7bdb('0x44')](handleError(_0x47cccd,null));};exports[_0x7bdb('0x4a')]=function(_0x46410c,_0x33687b){return db[_0x7bdb('0x3c')][_0x7bdb('0x48')]({'where':{'id':_0x46410c[_0x7bdb('0x49')]['id']}})[_0x7bdb('0x24')](handleEntityNotFound(_0x33687b,null))[_0x7bdb('0x24')](removeEntity(_0x33687b,null))['catch'](handleError(_0x33687b,null));};exports[_0x7bdb('0x4b')]=function(_0x4806e0,_0x240425,_0x27358d){var _0x5d564d={};var _0x457886={};var _0x493d23;var _0x258f29;return db['ZendeskAccount']['findOne']({'where':{'id':_0x4806e0[_0x7bdb('0x49')]['id']}})[_0x7bdb('0x24')](handleEntityNotFound(_0x240425,null))['then'](function(_0x4e17f3){if(_0x4e17f3){_0x493d23=_0x4e17f3;_0x457886['model']=_[_0x7bdb('0x30')](db['ZendeskConfiguration']['rawAttributes']);_0x457886[_0x7bdb('0x2f')]=_[_0x7bdb('0x30')](_0x4806e0[_0x7bdb('0x2f')]);_0x457886[_0x7bdb('0x37')]=_['intersection'](_0x457886[_0x7bdb('0x31')],_0x457886['query']);_0x5d564d[_0x7bdb('0x32')]=_[_0x7bdb('0x40')](_0x457886[_0x7bdb('0x31')],qs[_0x7bdb('0x33')](_0x4806e0[_0x7bdb('0x2f')][_0x7bdb('0x33')]));_0x5d564d['attributes']=_0x5d564d[_0x7bdb('0x32')][_0x7bdb('0x41')]?_0x5d564d[_0x7bdb('0x32')]:_0x457886['model'];_0x5d564d[_0x7bdb('0x34')]=qs[_0x7bdb('0x35')](_0x4806e0['query'][_0x7bdb('0x35')]);_0x5d564d['where']=qs[_0x7bdb('0x37')](_[_0x7bdb('0x38')](_0x4806e0['query'],_0x457886['filters']));if(_0x4806e0[_0x7bdb('0x2f')][_0x7bdb('0x39')]){_0x5d564d['where']=_[_0x7bdb('0x3a')](_0x5d564d['where'],{'$or':_[_0x7bdb('0x2a')](_0x5d564d['attributes'],function(_0x496cc3){var _0x22ef9c={};_0x22ef9c[_0x496cc3]={'$like':'%'+_0x4806e0[_0x7bdb('0x2f')][_0x7bdb('0x39')]+'%'};return _0x22ef9c;})});}_0x5d564d=_[_0x7bdb('0x3a')]({},_0x5d564d,_0x4806e0[_0x7bdb('0x43')]);return _0x493d23[_0x7bdb('0x4b')](_0x5d564d);}})[_0x7bdb('0x24')](function(_0x8cf13a){if(_0x8cf13a){_0x258f29=_0x8cf13a[_0x7bdb('0x41')];if(!_0x4806e0[_0x7bdb('0x2f')][_0x7bdb('0x4c')](_0x7bdb('0x4d'))){_0x5d564d['limit']=qs[_0x7bdb('0x1e')](_0x4806e0[_0x7bdb('0x2f')]['limit']);_0x5d564d[_0x7bdb('0x1b')]=qs[_0x7bdb('0x1b')](_0x4806e0[_0x7bdb('0x2f')][_0x7bdb('0x1b')]);}return _0x493d23[_0x7bdb('0x4b')](_0x5d564d);}})['then'](function(_0xa5624f){if(_0xa5624f){return _0xa5624f?{'count':_0x258f29,'rows':_0xa5624f}:null;}})[_0x7bdb('0x24')](respondWithResult(_0x240425,null))[_0x7bdb('0x44')](handleError(_0x240425,null));};exports['addConfiguration']=function(_0x3dbcf,_0x2c2fb7,_0x33b93a){if(_0x3dbcf[_0x7bdb('0x46')]['id']){delete _0x3dbcf[_0x7bdb('0x46')]['id'];}return db[_0x7bdb('0x3c')][_0x7bdb('0x4e')]({'where':{'id':_0x3dbcf[_0x7bdb('0x49')]['id']}})[_0x7bdb('0x24')](handleEntityNotFound(_0x2c2fb7,null))['then'](function(_0x7a7c4a){if(_0x7a7c4a){_0x3dbcf[_0x7bdb('0x46')][_0x7bdb('0x4f')]=_0x7a7c4a['id'];_0x3dbcf[_0x7bdb('0x46')][_0x7bdb('0x50')]=integrations[_0x7bdb('0x51')](_0x3dbcf[_0x7bdb('0x46')][_0x7bdb('0x52')],_0x3dbcf[_0x7bdb('0x46')][_0x7bdb('0x2d')]);_0x3dbcf[_0x7bdb('0x46')][_0x7bdb('0x53')]=integrations[_0x7bdb('0x54')](_0x3dbcf['body'][_0x7bdb('0x52')],_0x3dbcf['body'][_0x7bdb('0x2d')]);return db[_0x7bdb('0x55')][_0x7bdb('0x45')](_0x3dbcf['body'],{'include':[{'model':db[_0x7bdb('0x56')],'as':_0x7bdb('0x50')},{'model':db['ZendeskField'],'as':_0x7bdb('0x53')}]});}return null;})[_0x7bdb('0x24')](respondWithResult(_0x2c2fb7,null))['catch'](handleError(_0x2c2fb7,null));};exports[_0x7bdb('0x57')]=function(_0x1a706b,_0x579caa,_0x291fd3){var _0x237688='';return db['ZendeskAccount'][_0x7bdb('0x4e')]({'where':{'id':_0x1a706b[_0x7bdb('0x49')]['id']},'attributes':['id','username',_0x7bdb('0x58'),'token',_0x7bdb('0x59'),_0x7bdb('0x5a')]})[_0x7bdb('0x24')](handleEntityNotFound(_0x579caa,null))[_0x7bdb('0x24')](function(_0x1e5063){if(_0x1e5063){_0x237688=_0x1e5063['remoteUri'];var _0x590818=_0x237688['slice'](-0x1);if(_0x590818==='/'){_0x237688=_0x237688[_0x7bdb('0x5b')](0x0,_0x237688['lastIndexOf'](_0x590818));}var _0x242a35={'method':_0x7bdb('0x5c'),'uri':util[_0x7bdb('0x5d')]('%s/%s',_0x237688,'ticket_fields'),'json':!![]};switch(_0x1e5063[_0x7bdb('0x59')]){case _0x7bdb('0x58'):_0x242a35[_0x7bdb('0x5e')]={'Authorization':util[_0x7bdb('0x5d')]('Basic\x20%s',new Buffer(util[_0x7bdb('0x5d')](_0x7bdb('0x5f'),_0x1e5063[_0x7bdb('0x60')],_0x1e5063[_0x7bdb('0x58')]))[_0x7bdb('0x61')](_0x7bdb('0x62')))};break;case'token':_0x242a35[_0x7bdb('0x5e')]={'Authorization':util['format'](_0x7bdb('0x63'),new Buffer(util['format'](_0x7bdb('0x64'),_0x1e5063[_0x7bdb('0x60')],_0x1e5063[_0x7bdb('0x65')]))[_0x7bdb('0x61')](_0x7bdb('0x62')))};break;default:throw new db['Sequelize']['ValidationError'](_0x7bdb('0x66'));}return rp(_0x242a35);}})[_0x7bdb('0x24')](function(_0x51fec5){if(_0x51fec5){var _0x415ec5=[_0x7bdb('0x67'),'description',_0x7bdb('0x68'),_0x7bdb('0x69')];_['remove'](_0x51fec5[_0x7bdb('0x6a')],function(_0x493c69){return _0x415ec5['includes'](_0x493c69[_0x7bdb('0x2d')]);});return{'count':_0x51fec5[_0x7bdb('0x6a')]['length'],'rows':_['map'](_0x51fec5[_0x7bdb('0x6a')],function(_0x566a9e){return{'id':_0x566a9e['id'],'name':_0x566a9e[_0x7bdb('0x6b')]>0x7?_0x566a9e['title']:_0x566a9e[_0x7bdb('0x2d')],'custom':_0x566a9e[_0x7bdb('0x6b')]>0x7?!![]:![],'options':_0x566a9e[_0x7bdb('0x6c')]?_0x566a9e[_0x7bdb('0x6c')]:_0x566a9e['custom_field_options']?_0x566a9e[_0x7bdb('0x6d')]:[]};})};}})[_0x7bdb('0x24')](respondWithResult(_0x579caa,null))['catch'](function(_0x2be441){var _0x3096e0=_0x1a706b['query'][_0x7bdb('0x6e')]?0x1f4:_0x2be441[_0x7bdb('0x6f')]||0x1f4;logger[_0x7bdb('0x26')](_0x7bdb('0x70'),'getFields',_0x3096e0,JSON[_0x7bdb('0x71')](_0x2be441));delete _0x2be441['name'];if(_0x3096e0===0x191){_0x3096e0=0x190;}_0x579caa[_0x7bdb('0x18')](_0x3096e0)[_0x7bdb('0x28')](_0x1a706b[_0x7bdb('0x2f')]['test']?{'message':_0x7bdb('0x72'),'statusCode':_0x2be441[_0x7bdb('0x6f')]}:_0x2be441);});};
\ No newline at end of file
+var _0x3f8c=['%s/%s','headers','Basic\x20%s','%s:%s','toString','base64','token','%s/token:%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','remove','ticket_fields','includes','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','zip-dir','fast-json-patch','request-promise','moment','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','ZendeskAccount','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','find','create','body','getConfigurations','findOne','ZendeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','Descriptions','getFields','username','password','authType','remoteUri','substring','lastIndexOf','format'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3f8c,0x104));var _0xc3f8=function(_0x4b4d2c,_0x2943bc){_0x4b4d2c=_0x4b4d2c-0x0;var _0x242998=_0x3f8c[_0x4b4d2c];return _0x242998;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc3f8('0x0'));var jsonpatch=require(_0xc3f8('0x1'));var rp=require(_0xc3f8('0x2'));var moment=require(_0xc3f8('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xc3f8('0x4'));var ejs=require(_0xc3f8('0x5'));var fs=require('fs');var fs_extra=require(_0xc3f8('0x6'));var _=require(_0xc3f8('0x7'));var squel=require(_0xc3f8('0x8'));var crypto=require(_0xc3f8('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xc3f8('0xa'));var toCsv=require(_0xc3f8('0x4'));var querystring=require(_0xc3f8('0xb'));var Papa=require(_0xc3f8('0xc'));var Redis=require(_0xc3f8('0xd'));var authService=require(_0xc3f8('0xe'));var qs=require(_0xc3f8('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3f8('0x10'));var logger=require(_0xc3f8('0x11'))(_0xc3f8('0x12'));var utils=require(_0xc3f8('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xc3f8('0x14'));var db=require(_0xc3f8('0x15'))['db'];var integrations=require(_0xc3f8('0x16'));function respondWithStatusCode(_0x155c80,_0x511763){_0x511763=_0x511763||0xcc;return function(_0x84f489){if(_0x84f489){return _0x155c80[_0xc3f8('0x17')](_0x511763);}return _0x155c80[_0xc3f8('0x18')](_0x511763)[_0xc3f8('0x19')]();};}function respondWithResult(_0x6155e9,_0x47754c){_0x47754c=_0x47754c||0xc8;return function(_0x29e2b6){if(_0x29e2b6){return _0x6155e9[_0xc3f8('0x18')](_0x47754c)[_0xc3f8('0x1a')](_0x29e2b6);}};}function respondWithFilteredResult(_0x2fd8e8,_0x3cb28a){return function(_0x2a9f64){if(_0x2a9f64){var _0x29d031=typeof _0x3cb28a['offset']===_0xc3f8('0x1b')&&typeof _0x3cb28a['limit']==='undefined';var _0x3df137=_0x2a9f64[_0xc3f8('0x1c')];var _0x35500f=_0x29d031?0x0:_0x3cb28a[_0xc3f8('0x1d')];var _0x47a185=_0x29d031?_0x2a9f64[_0xc3f8('0x1c')]:_0x3cb28a[_0xc3f8('0x1d')]+_0x3cb28a['limit'];var _0xe14074;if(_0x47a185>=_0x3df137){_0x47a185=_0x3df137;_0xe14074=0xc8;}else{_0xe14074=0xce;}_0x2fd8e8['status'](_0xe14074);return _0x2fd8e8[_0xc3f8('0x1e')](_0xc3f8('0x1f'),_0x35500f+'-'+_0x47a185+'/'+_0x3df137)[_0xc3f8('0x1a')](_0x2a9f64);}return null;};}function patchUpdates(_0x53ada5){return function(_0x543dca){try{jsonpatch[_0xc3f8('0x20')](_0x543dca,_0x53ada5,!![]);}catch(_0x2a7096){return BPromise[_0xc3f8('0x21')](_0x2a7096);}return _0x543dca[_0xc3f8('0x22')]();};}function saveUpdates(_0x6522e9,_0x251bf7){return function(_0x43b2b4){if(_0x43b2b4){return _0x43b2b4[_0xc3f8('0x23')](_0x6522e9)['then'](function(_0x571f92){return _0x571f92;});}return null;};}function removeEntity(_0x4b83f0,_0x2559a4){return function(_0x5e1d14){if(_0x5e1d14){return _0x5e1d14[_0xc3f8('0x24')]()[_0xc3f8('0x25')](function(){_0x4b83f0['status'](0xcc)[_0xc3f8('0x19')]();});}};}function handleEntityNotFound(_0x327b2d,_0x2d237e){return function(_0xb883b5){if(!_0xb883b5){_0x327b2d[_0xc3f8('0x17')](0x194);}return _0xb883b5;};}function handleError(_0x9d43b4,_0xf1d460){_0xf1d460=_0xf1d460||0x1f4;return function(_0x7f14ad){logger[_0xc3f8('0x26')](_0x7f14ad[_0xc3f8('0x27')]);if(_0x7f14ad[_0xc3f8('0x28')]){delete _0x7f14ad[_0xc3f8('0x28')];}_0x9d43b4[_0xc3f8('0x18')](_0xf1d460)[_0xc3f8('0x29')](_0x7f14ad);};}exports['index']=function(_0x58b303,_0x2909f8){var _0x218029={},_0x5bf6e2={},_0x151bba={'count':0x0,'rows':[]};var _0x4d39a0=_[_0xc3f8('0x2a')](db[_0xc3f8('0x2b')]['rawAttributes'],function(_0x48b32e){return{'name':_0x48b32e[_0xc3f8('0x2c')],'type':_0x48b32e[_0xc3f8('0x2d')][_0xc3f8('0x2e')]};});_0x5bf6e2[_0xc3f8('0x2f')]=_[_0xc3f8('0x2a')](_0x4d39a0,_0xc3f8('0x28'));_0x5bf6e2[_0xc3f8('0x30')]=_[_0xc3f8('0x31')](_0x58b303[_0xc3f8('0x30')]);_0x5bf6e2[_0xc3f8('0x32')]=_['intersection'](_0x5bf6e2[_0xc3f8('0x2f')],_0x5bf6e2[_0xc3f8('0x30')]);_0x218029[_0xc3f8('0x33')]=_[_0xc3f8('0x34')](_0x5bf6e2[_0xc3f8('0x2f')],qs['fields'](_0x58b303['query'][_0xc3f8('0x35')]));_0x218029[_0xc3f8('0x33')]=_0x218029[_0xc3f8('0x33')][_0xc3f8('0x36')]?_0x218029[_0xc3f8('0x33')]:_0x5bf6e2['model'];if(!_0x58b303[_0xc3f8('0x30')][_0xc3f8('0x37')](_0xc3f8('0x38'))){_0x218029['limit']=qs[_0xc3f8('0x39')](_0x58b303[_0xc3f8('0x30')][_0xc3f8('0x39')]);_0x218029['offset']=qs[_0xc3f8('0x1d')](_0x58b303[_0xc3f8('0x30')]['offset']);}_0x218029[_0xc3f8('0x3a')]=qs[_0xc3f8('0x3b')](_0x58b303[_0xc3f8('0x30')][_0xc3f8('0x3b')]);_0x218029[_0xc3f8('0x3c')]=qs[_0xc3f8('0x32')](_['pick'](_0x58b303[_0xc3f8('0x30')],_0x5bf6e2[_0xc3f8('0x32')]),_0x4d39a0);if(_0x58b303[_0xc3f8('0x30')][_0xc3f8('0x3d')]){_0x218029[_0xc3f8('0x3c')]=_['merge'](_0x218029[_0xc3f8('0x3c')],{'$or':_[_0xc3f8('0x2a')](_0x4d39a0,function(_0xaa4c98){if(_0xaa4c98['type']!==_0xc3f8('0x3e')){var _0x83b7ab={};_0x83b7ab[_0xaa4c98[_0xc3f8('0x28')]]={'$like':'%'+_0x58b303[_0xc3f8('0x30')]['filter']+'%'};return _0x83b7ab;}})});}_0x218029=_[_0xc3f8('0x3f')]({},_0x218029,_0x58b303[_0xc3f8('0x40')]);var _0x2df096={'where':_0x218029[_0xc3f8('0x3c')]};return db['ZendeskAccount'][_0xc3f8('0x1c')](_0x2df096)['then'](function(_0x5d144b){_0x151bba[_0xc3f8('0x1c')]=_0x5d144b;if(_0x58b303[_0xc3f8('0x30')][_0xc3f8('0x41')]){_0x218029[_0xc3f8('0x42')]=[{'all':!![]}];}return db['ZendeskAccount']['findAll'](_0x218029);})[_0xc3f8('0x25')](function(_0x16805c){_0x151bba[_0xc3f8('0x43')]=_0x16805c;return _0x151bba;})[_0xc3f8('0x25')](respondWithFilteredResult(_0x2909f8,_0x218029))[_0xc3f8('0x44')](handleError(_0x2909f8,null));};exports[_0xc3f8('0x45')]=function(_0x3113b4,_0x45e6ea){var _0x13d8dc={'raw':![],'where':{'id':_0x3113b4[_0xc3f8('0x46')]['id']}},_0x34bccd={};_0x34bccd['model']=_[_0xc3f8('0x31')](db[_0xc3f8('0x2b')]['rawAttributes']);_0x34bccd[_0xc3f8('0x30')]=_[_0xc3f8('0x31')](_0x3113b4['query']);_0x34bccd[_0xc3f8('0x32')]=_[_0xc3f8('0x34')](_0x34bccd[_0xc3f8('0x2f')],_0x34bccd[_0xc3f8('0x30')]);_0x13d8dc[_0xc3f8('0x33')]=_[_0xc3f8('0x34')](_0x34bccd[_0xc3f8('0x2f')],qs[_0xc3f8('0x35')](_0x3113b4[_0xc3f8('0x30')][_0xc3f8('0x35')]));_0x13d8dc[_0xc3f8('0x33')]=_0x13d8dc['attributes'][_0xc3f8('0x36')]?_0x13d8dc[_0xc3f8('0x33')]:_0x34bccd['model'];if(_0x3113b4[_0xc3f8('0x30')][_0xc3f8('0x41')]){_0x13d8dc[_0xc3f8('0x42')]=[{'all':!![]}];}_0x13d8dc=_[_0xc3f8('0x3f')]({},_0x13d8dc,_0x3113b4['options']);return db['ZendeskAccount'][_0xc3f8('0x47')](_0x13d8dc)[_0xc3f8('0x25')](handleEntityNotFound(_0x45e6ea,null))[_0xc3f8('0x25')](respondWithResult(_0x45e6ea,null))['catch'](handleError(_0x45e6ea,null));};exports[_0xc3f8('0x48')]=function(_0x3a665e,_0x418961){return db[_0xc3f8('0x2b')][_0xc3f8('0x48')](_0x3a665e['body'],{})[_0xc3f8('0x25')](respondWithResult(_0x418961,0xc9))[_0xc3f8('0x44')](handleError(_0x418961,null));};exports['update']=function(_0x1becae,_0x3fcb6a){if(_0x1becae[_0xc3f8('0x49')]['id']){delete _0x1becae[_0xc3f8('0x49')]['id'];}return db[_0xc3f8('0x2b')][_0xc3f8('0x47')]({'where':{'id':_0x1becae[_0xc3f8('0x46')]['id']}})['then'](handleEntityNotFound(_0x3fcb6a,null))[_0xc3f8('0x25')](saveUpdates(_0x1becae[_0xc3f8('0x49')],null))['then'](respondWithResult(_0x3fcb6a,null))[_0xc3f8('0x44')](handleError(_0x3fcb6a,null));};exports[_0xc3f8('0x24')]=function(_0x2448bf,_0x33e5c5){return db[_0xc3f8('0x2b')][_0xc3f8('0x47')]({'where':{'id':_0x2448bf[_0xc3f8('0x46')]['id']}})['then'](handleEntityNotFound(_0x33e5c5,null))[_0xc3f8('0x25')](removeEntity(_0x33e5c5,null))[_0xc3f8('0x44')](handleError(_0x33e5c5,null));};exports[_0xc3f8('0x4a')]=function(_0x267c95,_0x3e6c1d,_0x3d752a){var _0x97a88e={};var _0x920f4b={};var _0x4fc02c;var _0x51249a;return db[_0xc3f8('0x2b')][_0xc3f8('0x4b')]({'where':{'id':_0x267c95['params']['id']}})['then'](handleEntityNotFound(_0x3e6c1d,null))[_0xc3f8('0x25')](function(_0x4b4adb){if(_0x4b4adb){_0x4fc02c=_0x4b4adb;_0x920f4b[_0xc3f8('0x2f')]=_[_0xc3f8('0x31')](db[_0xc3f8('0x4c')]['rawAttributes']);_0x920f4b[_0xc3f8('0x30')]=_['keys'](_0x267c95['query']);_0x920f4b[_0xc3f8('0x32')]=_['intersection'](_0x920f4b[_0xc3f8('0x2f')],_0x920f4b[_0xc3f8('0x30')]);_0x97a88e[_0xc3f8('0x33')]=_['intersection'](_0x920f4b[_0xc3f8('0x2f')],qs[_0xc3f8('0x35')](_0x267c95[_0xc3f8('0x30')][_0xc3f8('0x35')]));_0x97a88e[_0xc3f8('0x33')]=_0x97a88e['attributes']['length']?_0x97a88e[_0xc3f8('0x33')]:_0x920f4b[_0xc3f8('0x2f')];_0x97a88e[_0xc3f8('0x3a')]=qs[_0xc3f8('0x3b')](_0x267c95[_0xc3f8('0x30')]['sort']);_0x97a88e[_0xc3f8('0x3c')]=qs['filters'](_[_0xc3f8('0x4d')](_0x267c95[_0xc3f8('0x30')],_0x920f4b[_0xc3f8('0x32')]));if(_0x267c95[_0xc3f8('0x30')]['filter']){_0x97a88e[_0xc3f8('0x3c')]=_['merge'](_0x97a88e['where'],{'$or':_['map'](_0x97a88e['attributes'],function(_0x12df02){var _0x143d50={};_0x143d50[_0x12df02]={'$like':'%'+_0x267c95[_0xc3f8('0x30')][_0xc3f8('0x3d')]+'%'};return _0x143d50;})});}_0x97a88e=_[_0xc3f8('0x3f')]({},_0x97a88e,_0x267c95[_0xc3f8('0x40')]);return _0x4fc02c[_0xc3f8('0x4a')](_0x97a88e);}})[_0xc3f8('0x25')](function(_0x5250df){if(_0x5250df){_0x51249a=_0x5250df[_0xc3f8('0x36')];if(!_0x267c95[_0xc3f8('0x30')][_0xc3f8('0x37')](_0xc3f8('0x38'))){_0x97a88e[_0xc3f8('0x39')]=qs['limit'](_0x267c95[_0xc3f8('0x30')][_0xc3f8('0x39')]);_0x97a88e[_0xc3f8('0x1d')]=qs[_0xc3f8('0x1d')](_0x267c95[_0xc3f8('0x30')]['offset']);}return _0x4fc02c[_0xc3f8('0x4a')](_0x97a88e);}})[_0xc3f8('0x25')](function(_0x42b255){if(_0x42b255){return _0x42b255?{'count':_0x51249a,'rows':_0x42b255}:null;}})[_0xc3f8('0x25')](respondWithResult(_0x3e6c1d,null))[_0xc3f8('0x44')](handleError(_0x3e6c1d,null));};exports[_0xc3f8('0x4e')]=function(_0x56fd61,_0x2f199d,_0x4ca426){if(_0x56fd61[_0xc3f8('0x49')]['id']){delete _0x56fd61['body']['id'];}return db[_0xc3f8('0x2b')][_0xc3f8('0x4b')]({'where':{'id':_0x56fd61['params']['id']}})['then'](handleEntityNotFound(_0x2f199d,null))[_0xc3f8('0x25')](function(_0x2c7ab9){if(_0x2c7ab9){_0x56fd61['body'][_0xc3f8('0x4f')]=_0x2c7ab9['id'];_0x56fd61[_0xc3f8('0x49')][_0xc3f8('0x50')]=integrations[_0xc3f8('0x51')](_0x56fd61[_0xc3f8('0x49')][_0xc3f8('0x52')],_0x56fd61[_0xc3f8('0x49')][_0xc3f8('0x2d')]);_0x56fd61['body']['Descriptions']=integrations[_0xc3f8('0x53')](_0x56fd61['body']['channel'],_0x56fd61['body']['type']);return db['ZendeskConfiguration'][_0xc3f8('0x48')](_0x56fd61[_0xc3f8('0x49')],{'include':[{'model':db[_0xc3f8('0x54')],'as':_0xc3f8('0x50')},{'model':db['ZendeskField'],'as':_0xc3f8('0x55')}]});}return null;})[_0xc3f8('0x25')](respondWithResult(_0x2f199d,null))['catch'](handleError(_0x2f199d,null));};exports[_0xc3f8('0x56')]=function(_0x273faf,_0x104eec,_0x531de8){var _0xaedf89='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x273faf['params']['id']},'attributes':['id',_0xc3f8('0x57'),_0xc3f8('0x58'),'token',_0xc3f8('0x59'),_0xc3f8('0x5a')]})['then'](handleEntityNotFound(_0x104eec,null))[_0xc3f8('0x25')](function(_0x2f957a){if(_0x2f957a){_0xaedf89=_0x2f957a['remoteUri'];var _0x34edb9=_0xaedf89['slice'](-0x1);if(_0x34edb9==='/'){_0xaedf89=_0xaedf89[_0xc3f8('0x5b')](0x0,_0xaedf89[_0xc3f8('0x5c')](_0x34edb9));}var _0x4cc654={'method':'GET','uri':util[_0xc3f8('0x5d')](_0xc3f8('0x5e'),_0xaedf89,'ticket_fields'),'json':!![]};switch(_0x2f957a[_0xc3f8('0x59')]){case'password':_0x4cc654[_0xc3f8('0x5f')]={'Authorization':util['format'](_0xc3f8('0x60'),new Buffer(util[_0xc3f8('0x5d')](_0xc3f8('0x61'),_0x2f957a[_0xc3f8('0x57')],_0x2f957a[_0xc3f8('0x58')]))[_0xc3f8('0x62')](_0xc3f8('0x63')))};break;case _0xc3f8('0x64'):_0x4cc654[_0xc3f8('0x5f')]={'Authorization':util['format'](_0xc3f8('0x60'),new Buffer(util[_0xc3f8('0x5d')](_0xc3f8('0x65'),_0x2f957a[_0xc3f8('0x57')],_0x2f957a[_0xc3f8('0x64')]))['toString'](_0xc3f8('0x63')))};break;default:throw new db[(_0xc3f8('0x66'))][(_0xc3f8('0x67'))](_0xc3f8('0x68'));}return rp(_0x4cc654);}})[_0xc3f8('0x25')](function(_0x53c815){if(_0x53c815){var _0x2f69f7=[_0xc3f8('0x69'),_0xc3f8('0x6a'),'group','assignee'];_[_0xc3f8('0x6b')](_0x53c815[_0xc3f8('0x6c')],function(_0x1a9c33){return _0x2f69f7[_0xc3f8('0x6d')](_0x1a9c33['type']);});return{'count':_0x53c815[_0xc3f8('0x6c')][_0xc3f8('0x36')],'rows':_[_0xc3f8('0x2a')](_0x53c815['ticket_fields'],function(_0x2a29fa){return{'id':_0x2a29fa['id'],'name':_0x2a29fa[_0xc3f8('0x6e')]>0x7?_0x2a29fa['title']:_0x2a29fa['type'],'custom':_0x2a29fa[_0xc3f8('0x6e')]>0x7?!![]:![],'options':_0x2a29fa[_0xc3f8('0x6f')]?_0x2a29fa['system_field_options']:_0x2a29fa[_0xc3f8('0x70')]?_0x2a29fa[_0xc3f8('0x70')]:[]};})};}})['then'](respondWithResult(_0x104eec,null))[_0xc3f8('0x44')](function(_0x5f2d86){var _0x3d080a=_0x273faf['query'][_0xc3f8('0x71')]?0x1f4:_0x5f2d86[_0xc3f8('0x72')]||0x1f4;logger[_0xc3f8('0x26')](_0xc3f8('0x73'),_0xc3f8('0x56'),_0x3d080a,JSON[_0xc3f8('0x74')](_0x5f2d86));delete _0x5f2d86[_0xc3f8('0x28')];if(_0x3d080a===0x191){_0x3d080a=0x190;}_0x104eec[_0xc3f8('0x18')](_0x3d080a)[_0xc3f8('0x29')](_0x273faf['query']['test']?{'message':_0xc3f8('0x75'),'statusCode':_0x5f2d86['statusCode']}:_0x5f2d86);});};
\ No newline at end of file
index 83f2cdd..a84c56e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb02=['bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','define','ZendeskAccount','util','../../config/logger','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdb02,0xf3));var _0x2db0=function(_0x2cff4f,_0x21e344){_0x2cff4f=_0x2cff4f-0x0;var _0x3df848=_0xdb02[_0x2cff4f];return _0x3df848;};'use strict';var _=require('lodash');var util=require(_0x2db0('0x0'));var logger=require(_0x2db0('0x1'))(_0x2db0('0x2'));var moment=require(_0x2db0('0x3'));var BPromise=require(_0x2db0('0x4'));var rp=require(_0x2db0('0x5'));var fs=require('fs');var path=require(_0x2db0('0x6'));var rimraf=require(_0x2db0('0x7'));var config=require(_0x2db0('0x8'));var attributes=require(_0x2db0('0x9'));var integrations=require(_0x2db0('0xa'));module['exports']=function(_0x1e220c,_0x17543f){return _0x1e220c[_0x2db0('0xb')](_0x2db0('0xc'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae5e=['exports','define','ZendeskAccount','int_zendesk_accounts','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0xae5e,0x117));var _0xeae5=function(_0x3a4c54,_0x17d12a){_0x3a4c54=_0x3a4c54-0x0;var _0x103455=_0xae5e[_0x3a4c54];return _0x103455;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xeae5('0x0'))('api');var moment=require(_0xeae5('0x1'));var BPromise=require('bluebird');var rp=require(_0xeae5('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeae5('0x3'));var config=require(_0xeae5('0x4'));var attributes=require(_0xeae5('0x5'));var integrations=require(_0xeae5('0x6'));module[_0xeae5('0x7')]=function(_0x4356bf,_0x3abf43){return _0x4356bf[_0xeae5('0x8')](_0xeae5('0x9'),attributes,{'tableName':_0xeae5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d8ff65..c78eec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca99=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZendeskAccount','ZendeskAccount','options','raw','where','attributes','limit','include','model','map','ShowZendeskAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x1ff101,_0x5bf569){var _0x49288b=function(_0x3a2bb0){while(--_0x3a2bb0){_0x1ff101['push'](_0x1ff101['shift']());}};_0x49288b(++_0x5bf569);}(_0xca99,0x1aa));var _0x9ca9=function(_0x551016,_0xe420f7){_0x551016=_0x551016-0x0;var _0x53dc6e=_0xca99[_0x551016];return _0x53dc6e;};'use strict';var _=require(_0x9ca9('0x0'));var util=require(_0x9ca9('0x1'));var moment=require(_0x9ca9('0x2'));var BPromise=require(_0x9ca9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ca9('0x4'));var db=require(_0x9ca9('0x5'))['db'];var utils=require(_0x9ca9('0x6'));var logger=require(_0x9ca9('0x7'))(_0x9ca9('0x8'));var config=require(_0x9ca9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9ca9('0xa')][_0x9ca9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe940db,_0x12cd9e,_0x975675){return new BPromise(function(_0x34408a,_0x266da7){return client[_0x9ca9('0xc')](_0xe940db,_0x975675)[_0x9ca9('0xd')](function(_0x1d7aad){logger[_0x9ca9('0xe')](_0x9ca9('0xf'),_0x12cd9e,_0x9ca9('0x10'));logger[_0x9ca9('0x11')](_0x9ca9('0x12'),_0x12cd9e,'request\x20sent',JSON[_0x9ca9('0x13')](_0x1d7aad));if(_0x1d7aad[_0x9ca9('0x14')]){if(_0x1d7aad[_0x9ca9('0x14')][_0x9ca9('0x15')]===0x1f4){logger[_0x9ca9('0x14')](_0x9ca9('0xf'),_0x12cd9e,_0x1d7aad['error']['message']);return _0x266da7(_0x1d7aad[_0x9ca9('0x14')][_0x9ca9('0x16')]);}logger[_0x9ca9('0x14')]('ZendeskAccount,\x20%s,\x20%s',_0x12cd9e,_0x1d7aad[_0x9ca9('0x14')][_0x9ca9('0x16')]);return _0x34408a(_0x1d7aad[_0x9ca9('0x14')][_0x9ca9('0x16')]);}else{logger[_0x9ca9('0xe')](_0x9ca9('0xf'),_0x12cd9e,_0x9ca9('0x10'));_0x34408a(_0x1d7aad[_0x9ca9('0x17')][_0x9ca9('0x16')]);}})[_0x9ca9('0x18')](function(_0x412a47){logger[_0x9ca9('0x14')](_0x9ca9('0xf'),_0x12cd9e,_0x412a47);_0x266da7(_0x412a47);});});}exports[_0x9ca9('0x19')]=function(_0x20b29a){var _0x3834d0=this;return new Promise(function(_0x118da2,_0x4d0905){return db[_0x9ca9('0x1a')]['findAll']({'raw':_0x20b29a[_0x9ca9('0x1b')]?_0x20b29a['options'][_0x9ca9('0x1c')]===undefined?!![]:![]:!![],'where':_0x20b29a['options']?_0x20b29a[_0x9ca9('0x1b')][_0x9ca9('0x1d')]||null:null,'attributes':_0x20b29a[_0x9ca9('0x1b')]?_0x20b29a[_0x9ca9('0x1b')][_0x9ca9('0x1e')]||null:null,'limit':_0x20b29a[_0x9ca9('0x1b')]?_0x20b29a[_0x9ca9('0x1b')][_0x9ca9('0x1f')]||null:null,'include':_0x20b29a[_0x9ca9('0x1b')]?_0x20b29a['options'][_0x9ca9('0x20')]?_['map'](_0x20b29a[_0x9ca9('0x1b')][_0x9ca9('0x20')],function(_0x4f193d){return{'model':db[_0x4f193d[_0x9ca9('0x21')]],'as':_0x4f193d['as'],'attributes':_0x4f193d['attributes'],'include':_0x4f193d[_0x9ca9('0x20')]?_[_0x9ca9('0x22')](_0x4f193d[_0x9ca9('0x20')],function(_0x4ac7e7){return{'model':db[_0x4ac7e7[_0x9ca9('0x21')]],'as':_0x4ac7e7['as'],'attributes':_0x4ac7e7[_0x9ca9('0x1e')],'include':_0x4ac7e7[_0x9ca9('0x20')]?_['map'](_0x4ac7e7[_0x9ca9('0x20')],function(_0x240abe){return{'model':db[_0x240abe[_0x9ca9('0x21')]],'as':_0x240abe['as'],'attributes':_0x240abe[_0x9ca9('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9ca9('0xd')](function(_0x1325ca){logger[_0x9ca9('0xe')](_0x9ca9('0x19'),_0x20b29a);logger[_0x9ca9('0x11')]('GetZendeskAccount',_0x20b29a,JSON['stringify'](_0x1325ca));_0x118da2(_0x1325ca);})[_0x9ca9('0x18')](function(_0x53d805){logger[_0x9ca9('0x14')](_0x9ca9('0x19'),_0x53d805[_0x9ca9('0x16')],_0x20b29a);_0x4d0905(_0x3834d0[_0x9ca9('0x14')](0x1f4,_0x53d805[_0x9ca9('0x16')]));});});};exports[_0x9ca9('0x23')]=function(_0x17672a){var _0x50cf9d=this;return new Promise(function(_0x146e6b,_0x34babf){return db[_0x9ca9('0x1a')]['find']({'raw':_0x17672a['options']?_0x17672a[_0x9ca9('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x17672a[_0x9ca9('0x1b')]?_0x17672a[_0x9ca9('0x1b')][_0x9ca9('0x1d')]||null:null,'attributes':_0x17672a['options']?_0x17672a[_0x9ca9('0x1b')]['attributes']||null:null,'include':_0x17672a[_0x9ca9('0x1b')]?_0x17672a[_0x9ca9('0x1b')][_0x9ca9('0x20')]?_['map'](_0x17672a[_0x9ca9('0x1b')][_0x9ca9('0x20')],function(_0x38a001){return{'model':db[_0x38a001['model']],'as':_0x38a001['as'],'attributes':_0x38a001[_0x9ca9('0x1e')],'include':_0x38a001[_0x9ca9('0x20')]?_['map'](_0x38a001[_0x9ca9('0x20')],function(_0x4d320e){return{'model':db[_0x4d320e['model']],'as':_0x4d320e['as'],'attributes':_0x4d320e[_0x9ca9('0x1e')],'include':_0x4d320e[_0x9ca9('0x20')]?_['map'](_0x4d320e[_0x9ca9('0x20')],function(_0x17adbc){return{'model':db[_0x17adbc['model']],'as':_0x17adbc['as'],'attributes':_0x17adbc['attributes']};}):[]};}):[]};}):[]:[]})[_0x9ca9('0xd')](function(_0x5071b1){logger[_0x9ca9('0xe')](_0x9ca9('0x23'),_0x17672a);logger['debug'](_0x9ca9('0x23'),_0x17672a,JSON[_0x9ca9('0x13')](_0x5071b1));_0x146e6b(_0x5071b1);})[_0x9ca9('0x18')](function(_0x45763f){logger[_0x9ca9('0x14')](_0x9ca9('0x23'),_0x45763f[_0x9ca9('0x16')],_0x17672a);_0x34babf(_0x50cf9d[_0x9ca9('0x14')](0x1f4,_0x45763f['message']));});});};
\ No newline at end of file
+var _0x25fa=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','include','map','model','attributes','ShowZendeskAccount','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x7ad123,_0xeeeef3){var _0x37d073=function(_0x51367b){while(--_0x51367b){_0x7ad123['push'](_0x7ad123['shift']());}};_0x37d073(++_0xeeeef3);}(_0x25fa,0xa0));var _0xa25f=function(_0x127309,_0x58f7b5){_0x127309=_0x127309-0x0;var _0x32637c=_0x25fa[_0x127309];return _0x32637c;};'use strict';var _=require(_0xa25f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa25f('0x1'));var rs=require(_0xa25f('0x2'));var fs=require('fs');var Redis=require(_0xa25f('0x3'));var db=require(_0xa25f('0x4'))['db'];var utils=require(_0xa25f('0x5'));var logger=require('../../config/logger')(_0xa25f('0x6'));var config=require(_0xa25f('0x7'));var jayson=require(_0xa25f('0x8'));var client=jayson[_0xa25f('0x9')][_0xa25f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41cf1c,_0x50a449,_0x2dcd1f){return new BPromise(function(_0x20d672,_0x519983){return client['request'](_0x41cf1c,_0x2dcd1f)[_0xa25f('0xb')](function(_0x41b8d8){logger['info'](_0xa25f('0xc'),_0x50a449,_0xa25f('0xd'));logger[_0xa25f('0xe')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x50a449,_0xa25f('0xd'),JSON[_0xa25f('0xf')](_0x41b8d8));if(_0x41b8d8['error']){if(_0x41b8d8[_0xa25f('0x10')][_0xa25f('0x11')]===0x1f4){logger[_0xa25f('0x10')](_0xa25f('0xc'),_0x50a449,_0x41b8d8[_0xa25f('0x10')][_0xa25f('0x12')]);return _0x519983(_0x41b8d8[_0xa25f('0x10')][_0xa25f('0x12')]);}logger[_0xa25f('0x10')](_0xa25f('0xc'),_0x50a449,_0x41b8d8['error'][_0xa25f('0x12')]);return _0x20d672(_0x41b8d8[_0xa25f('0x10')][_0xa25f('0x12')]);}else{logger[_0xa25f('0x13')](_0xa25f('0xc'),_0x50a449,_0xa25f('0xd'));_0x20d672(_0x41b8d8[_0xa25f('0x14')][_0xa25f('0x12')]);}})[_0xa25f('0x15')](function(_0x1fba10){logger[_0xa25f('0x10')](_0xa25f('0xc'),_0x50a449,_0x1fba10);_0x519983(_0x1fba10);});});}exports[_0xa25f('0x16')]=function(_0x45a943){var _0x18bbaa=this;return new Promise(function(_0x136d0d,_0xd8cd83){return db[_0xa25f('0x17')][_0xa25f('0x18')]({'raw':_0x45a943['options']?_0x45a943[_0xa25f('0x19')][_0xa25f('0x1a')]===undefined?!![]:![]:!![],'where':_0x45a943[_0xa25f('0x19')]?_0x45a943['options'][_0xa25f('0x1b')]||null:null,'attributes':_0x45a943[_0xa25f('0x19')]?_0x45a943['options']['attributes']||null:null,'limit':_0x45a943[_0xa25f('0x19')]?_0x45a943[_0xa25f('0x19')]['limit']||null:null,'include':_0x45a943['options']?_0x45a943[_0xa25f('0x19')][_0xa25f('0x1c')]?_[_0xa25f('0x1d')](_0x45a943[_0xa25f('0x19')][_0xa25f('0x1c')],function(_0x1f03b7){return{'model':db[_0x1f03b7[_0xa25f('0x1e')]],'as':_0x1f03b7['as'],'attributes':_0x1f03b7[_0xa25f('0x1f')],'include':_0x1f03b7[_0xa25f('0x1c')]?_['map'](_0x1f03b7[_0xa25f('0x1c')],function(_0x1438fd){return{'model':db[_0x1438fd[_0xa25f('0x1e')]],'as':_0x1438fd['as'],'attributes':_0x1438fd['attributes'],'include':_0x1438fd[_0xa25f('0x1c')]?_['map'](_0x1438fd[_0xa25f('0x1c')],function(_0x1f4458){return{'model':db[_0x1f4458['model']],'as':_0x1f4458['as'],'attributes':_0x1f4458[_0xa25f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xa25f('0xb')](function(_0x561eda){logger[_0xa25f('0x13')]('GetZendeskAccount',_0x45a943);logger[_0xa25f('0xe')](_0xa25f('0x16'),_0x45a943,JSON[_0xa25f('0xf')](_0x561eda));_0x136d0d(_0x561eda);})[_0xa25f('0x15')](function(_0x82c9f2){logger[_0xa25f('0x10')](_0xa25f('0x16'),_0x82c9f2[_0xa25f('0x12')],_0x45a943);_0xd8cd83(_0x18bbaa[_0xa25f('0x10')](0x1f4,_0x82c9f2[_0xa25f('0x12')]));});});};exports[_0xa25f('0x20')]=function(_0x109171){var _0x53e858=this;return new Promise(function(_0x55999f,_0x1170c8){return db[_0xa25f('0x17')]['find']({'raw':_0x109171[_0xa25f('0x19')]?_0x109171[_0xa25f('0x19')][_0xa25f('0x1a')]===undefined?!![]:![]:!![],'where':_0x109171['options']?_0x109171[_0xa25f('0x19')][_0xa25f('0x1b')]||null:null,'attributes':_0x109171['options']?_0x109171[_0xa25f('0x19')][_0xa25f('0x1f')]||null:null,'include':_0x109171[_0xa25f('0x19')]?_0x109171[_0xa25f('0x19')]['include']?_['map'](_0x109171[_0xa25f('0x19')][_0xa25f('0x1c')],function(_0x54673f){return{'model':db[_0x54673f[_0xa25f('0x1e')]],'as':_0x54673f['as'],'attributes':_0x54673f['attributes'],'include':_0x54673f[_0xa25f('0x1c')]?_['map'](_0x54673f[_0xa25f('0x1c')],function(_0x505b08){return{'model':db[_0x505b08[_0xa25f('0x1e')]],'as':_0x505b08['as'],'attributes':_0x505b08[_0xa25f('0x1f')],'include':_0x505b08['include']?_[_0xa25f('0x1d')](_0x505b08[_0xa25f('0x1c')],function(_0x46b0dc){return{'model':db[_0x46b0dc[_0xa25f('0x1e')]],'as':_0x46b0dc['as'],'attributes':_0x46b0dc[_0xa25f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xa25f('0xb')](function(_0x1f4a6f){logger['info']('ShowZendeskAccount',_0x109171);logger[_0xa25f('0xe')](_0xa25f('0x20'),_0x109171,JSON['stringify'](_0x1f4a6f));_0x55999f(_0x1f4a6f);})[_0xa25f('0x15')](function(_0x3bd4ad){logger[_0xa25f('0x10')](_0xa25f('0x20'),_0x3bd4ad[_0xa25f('0x12')],_0x109171);_0x1170c8(_0x53e858[_0xa25f('0x10')](0x1f4,_0x3bd4ad['message']));});});};
\ No newline at end of file
index 335a5b1..6e1dd50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','/:id/fields','/:id/subjects','isAuthenticated','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3e69ae,_0x366e8d){var _0x3d7f42=function(_0x5df093){while(--_0x5df093){_0x3e69ae['push'](_0x3e69ae['shift']());}};_0x3d7f42(++_0x366e8d);}(_0x878f,0x173));var _0xf878=function(_0x3eedec,_0xa586cf){_0x3eedec=_0x3eedec-0x0;var _0x48457d=_0x878f[_0x3eedec];return _0x48457d;};'use strict';var multer=require('multer');var util=require(_0xf878('0x0'));var path=require(_0xf878('0x1'));var timeout=require(_0xf878('0x2'));var express=require(_0xf878('0x3'));var router=express[_0xf878('0x4')]();var fs_extra=require(_0xf878('0x5'));var auth=require(_0xf878('0x6'));var interaction=require(_0xf878('0x7'));var config=require(_0xf878('0x8'));var controller=require(_0xf878('0x9'));router[_0xf878('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf878('0xa')](_0xf878('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xf878('0xc'),auth['isAuthenticated'](),controller['getFields']);router[_0xf878('0xa')](_0xf878('0xd'),auth[_0xf878('0xe')](),controller['getSubjects']);router[_0xf878('0xa')](_0xf878('0xf'),auth['isAuthenticated'](),controller[_0xf878('0x10')]);router['get'](_0xf878('0x11'),auth[_0xf878('0xe')](),controller[_0xf878('0x12')]);router['post']('/',auth[_0xf878('0xe')](),controller[_0xf878('0x13')]);router[_0xf878('0x14')]('/:id/tags',auth[_0xf878('0xe')](),controller[_0xf878('0x15')]);router[_0xf878('0x16')]('/:id',auth['isAuthenticated'](),controller[_0xf878('0x17')]);router[_0xf878('0x18')](_0xf878('0xb'),auth[_0xf878('0xe')](),controller[_0xf878('0x19')]);module[_0xf878('0x1a')]=router;
\ No newline at end of file
+var _0x91a7=['util','path','connect-timeout','Router','../../components/auth/service','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','create','put','update','destroy','exports'];(function(_0x3562be,_0x213657){var _0x28169c=function(_0x4b42ad){while(--_0x4b42ad){_0x3562be['push'](_0x3562be['shift']());}};_0x28169c(++_0x213657);}(_0x91a7,0xe7));var _0x791a=function(_0x1f38d3,_0xbad240){_0x1f38d3=_0x1f38d3-0x0;var _0x4691e2=_0x91a7[_0x1f38d3];return _0x4691e2;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['show']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0x6')]('/:id/subjects',auth[_0x791a('0x9')](),controller[_0x791a('0xc')]);router['get'](_0x791a('0xd'),auth[_0x791a('0x9')](),controller[_0x791a('0xe')]);router[_0x791a('0x6')](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['getTags']);router['post']('/',auth[_0x791a('0x9')](),controller[_0x791a('0x10')]);router['post'](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['setTags']);router[_0x791a('0x11')](_0x791a('0x8'),auth[_0x791a('0x9')](),controller[_0x791a('0x12')]);router['delete'](_0x791a('0x8'),auth['isAuthenticated'](),controller[_0x791a('0x13')]);module[_0x791a('0x14')]=router;
\ No newline at end of file
index e393fe2..d74f151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x460a=['exports','STRING','sequelize'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0x460a,0x1ca));var _0xa460=function(_0x58d5ac,_0x11c4bc){_0x58d5ac=_0x58d5ac-0x0;var _0x37985c=_0x460a[_0x58d5ac];return _0x37985c;};'use strict';var Sequelize=require(_0xa460('0x0'));module[_0xa460('0x1')]={'name':{'type':Sequelize[_0xa460('0x2')]},'description':{'type':Sequelize[_0xa460('0x2')]}};
\ No newline at end of file
+var _0xfb79=['STRING','exports'];(function(_0x86d043,_0x51ab89){var _0x2feec8=function(_0x5aa3e5){while(--_0x5aa3e5){_0x86d043['push'](_0x86d043['shift']());}};_0x2feec8(++_0x51ab89);}(_0xfb79,0x73));var _0x9fb7=function(_0x43ceb7,_0x20ed3c){_0x43ceb7=_0x43ceb7-0x0;var _0x4bfee7=_0xfb79[_0x43ceb7];return _0x4bfee7;};'use strict';var Sequelize=require('sequelize');module[_0x9fb7('0x0')]={'name':{'type':Sequelize[_0x9fb7('0x1')]},'description':{'type':Sequelize[_0x9fb7('0x1')]}};
\ No newline at end of file
index 78fe160..30d7976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x546c=['apply','reject','save','update','destroy','then','end','stack','name','send','ZendeskConfiguration','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','rows','show','find','catch','create','body','params','getFields','findOne','ZendeskField','length','getSubjects','getDescriptions','getTags','Tag','setTags','ids','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','count','limit','set'];(function(_0x32dc00,_0x33e2e7){var _0x278e8f=function(_0x3e6580){while(--_0x3e6580){_0x32dc00['push'](_0x32dc00['shift']());}};_0x278e8f(++_0x33e2e7);}(_0x546c,0x83));var _0xc546=function(_0x34dd03,_0x2752f4){_0x34dd03=_0x34dd03-0x0;var _0x3e9011=_0x546c[_0x34dd03];return _0x3e9011;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc546('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc546('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xc546('0x2'));var util=require(_0xc546('0x3'));var path=require(_0xc546('0x4'));var sox=require(_0xc546('0x5'));var csv=require(_0xc546('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc546('0x7'));var _=require(_0xc546('0x8'));var squel=require(_0xc546('0x9'));var crypto=require(_0xc546('0xa'));var jsforce=require(_0xc546('0xb'));var deskjs=require(_0xc546('0xc'));var toCsv=require(_0xc546('0x6'));var querystring=require('querystring');var Papa=require(_0xc546('0xd'));var Redis=require(_0xc546('0xe'));var authService=require(_0xc546('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xc546('0x10'));var hardwareService=require(_0xc546('0x11'));var logger=require(_0xc546('0x12'))(_0xc546('0x13'));var utils=require('../../config/utils');var config=require(_0xc546('0x14'));var licenseUtil=require(_0xc546('0x15'));var db=require(_0xc546('0x16'))['db'];function respondWithStatusCode(_0x26aa3b,_0x31cf99){_0x31cf99=_0x31cf99||0xcc;return function(_0x45c3e0){if(_0x45c3e0){return _0x26aa3b[_0xc546('0x17')](_0x31cf99);}return _0x26aa3b['status'](_0x31cf99)['end']();};}function respondWithResult(_0x15ea0f,_0x3cf3bb){_0x3cf3bb=_0x3cf3bb||0xc8;return function(_0x4775c9){if(_0x4775c9){return _0x15ea0f[_0xc546('0x18')](_0x3cf3bb)[_0xc546('0x19')](_0x4775c9);}};}function respondWithFilteredResult(_0x41bbe0,_0x130a77){return function(_0x3760c8){if(_0x3760c8){var _0x45350e=typeof _0x130a77['offset']===_0xc546('0x1a')&&typeof _0x130a77['limit']===_0xc546('0x1a');var _0x235fe7=_0x3760c8['count'];var _0x21acb2=_0x45350e?0x0:_0x130a77[_0xc546('0x1b')];var _0x56a9db=_0x45350e?_0x3760c8[_0xc546('0x1c')]:_0x130a77[_0xc546('0x1b')]+_0x130a77[_0xc546('0x1d')];var _0x447de4;if(_0x56a9db>=_0x235fe7){_0x56a9db=_0x235fe7;_0x447de4=0xc8;}else{_0x447de4=0xce;}_0x41bbe0['status'](_0x447de4);return _0x41bbe0[_0xc546('0x1e')]('Content-Range',_0x21acb2+'-'+_0x56a9db+'/'+_0x235fe7)[_0xc546('0x19')](_0x3760c8);}return null;};}function patchUpdates(_0x425975){return function(_0x5e0abb){try{jsonpatch[_0xc546('0x1f')](_0x5e0abb,_0x425975,!![]);}catch(_0x5478d8){return BPromise[_0xc546('0x20')](_0x5478d8);}return _0x5e0abb[_0xc546('0x21')]();};}function saveUpdates(_0x127811,_0x576be9){return function(_0xd3bd47){if(_0xd3bd47){return _0xd3bd47[_0xc546('0x22')](_0x127811)['then'](function(_0xeedb7f){return _0xeedb7f;});}return null;};}function removeEntity(_0x3c19bc,_0x96a8b){return function(_0x49bd61){if(_0x49bd61){return _0x49bd61[_0xc546('0x23')]()[_0xc546('0x24')](function(){_0x3c19bc[_0xc546('0x18')](0xcc)[_0xc546('0x25')]();});}};}function handleEntityNotFound(_0x93659e,_0x351874){return function(_0x573713){if(!_0x573713){_0x93659e[_0xc546('0x17')](0x194);}return _0x573713;};}function handleError(_0x5038cd,_0x14c951){_0x14c951=_0x14c951||0x1f4;return function(_0x5b3f40){logger['error'](_0x5b3f40[_0xc546('0x26')]);if(_0x5b3f40[_0xc546('0x27')]){delete _0x5b3f40[_0xc546('0x27')];}_0x5038cd[_0xc546('0x18')](_0x14c951)[_0xc546('0x28')](_0x5b3f40);};}exports['index']=function(_0x544f65,_0x281289){var _0x5606dc={},_0x2a51e8={},_0xa0bca1={'count':0x0,'rows':[]};var _0x3dbe25=_['map'](db[_0xc546('0x29')][_0xc546('0x2a')],function(_0x5e08b6){return{'name':_0x5e08b6['fieldName'],'type':_0x5e08b6[_0xc546('0x2b')][_0xc546('0x2c')]};});_0x2a51e8[_0xc546('0x2d')]=_[_0xc546('0x2e')](_0x3dbe25,_0xc546('0x27'));_0x2a51e8[_0xc546('0x2f')]=_[_0xc546('0x30')](_0x544f65['query']);_0x2a51e8[_0xc546('0x31')]=_[_0xc546('0x32')](_0x2a51e8[_0xc546('0x2d')],_0x2a51e8['query']);_0x5606dc[_0xc546('0x33')]=_[_0xc546('0x32')](_0x2a51e8[_0xc546('0x2d')],qs[_0xc546('0x34')](_0x544f65[_0xc546('0x2f')]['fields']));_0x5606dc['attributes']=_0x5606dc[_0xc546('0x33')]['length']?_0x5606dc[_0xc546('0x33')]:_0x2a51e8[_0xc546('0x2d')];if(!_0x544f65[_0xc546('0x2f')][_0xc546('0x35')](_0xc546('0x36'))){_0x5606dc['limit']=qs[_0xc546('0x1d')](_0x544f65[_0xc546('0x2f')][_0xc546('0x1d')]);_0x5606dc[_0xc546('0x1b')]=qs[_0xc546('0x1b')](_0x544f65['query'][_0xc546('0x1b')]);}_0x5606dc[_0xc546('0x37')]=qs[_0xc546('0x38')](_0x544f65[_0xc546('0x2f')][_0xc546('0x38')]);_0x5606dc[_0xc546('0x39')]=qs[_0xc546('0x31')](_[_0xc546('0x3a')](_0x544f65[_0xc546('0x2f')],_0x2a51e8['filters']),_0x3dbe25);if(_0x544f65['query']['filter']){_0x5606dc[_0xc546('0x39')]=_['merge'](_0x5606dc[_0xc546('0x39')],{'$or':_[_0xc546('0x2e')](_0x3dbe25,function(_0x33bbb3){if(_0x33bbb3[_0xc546('0x2b')]!==_0xc546('0x3b')){var _0x20da8c={};_0x20da8c[_0x33bbb3[_0xc546('0x27')]]={'$like':'%'+_0x544f65[_0xc546('0x2f')][_0xc546('0x3c')]+'%'};return _0x20da8c;}})});}_0x5606dc=_[_0xc546('0x3d')]({},_0x5606dc,_0x544f65[_0xc546('0x3e')]);var _0x2eee6f={'where':_0x5606dc['where']};return db[_0xc546('0x29')][_0xc546('0x1c')](_0x2eee6f)['then'](function(_0x4e957e){_0xa0bca1['count']=_0x4e957e;if(_0x544f65[_0xc546('0x2f')][_0xc546('0x3f')]){_0x5606dc['include']=[{'all':!![]}];}return db[_0xc546('0x29')]['findAll'](_0x5606dc);})[_0xc546('0x24')](function(_0x2a6a1d){_0xa0bca1[_0xc546('0x40')]=_0x2a6a1d;return _0xa0bca1;})[_0xc546('0x24')](respondWithFilteredResult(_0x281289,_0x5606dc))['catch'](handleError(_0x281289,null));};exports[_0xc546('0x41')]=function(_0x426413,_0x3f0153){var _0x47c17d={'raw':![],'where':{'id':_0x426413['params']['id']}},_0x6e7284={};_0x6e7284['model']=_['keys'](db[_0xc546('0x29')][_0xc546('0x2a')]);_0x6e7284['query']=_['keys'](_0x426413['query']);_0x6e7284[_0xc546('0x31')]=_['intersection'](_0x6e7284[_0xc546('0x2d')],_0x6e7284['query']);_0x47c17d[_0xc546('0x33')]=_[_0xc546('0x32')](_0x6e7284['model'],qs[_0xc546('0x34')](_0x426413[_0xc546('0x2f')]['fields']));_0x47c17d[_0xc546('0x33')]=_0x47c17d[_0xc546('0x33')]['length']?_0x47c17d[_0xc546('0x33')]:_0x6e7284['model'];if(_0x426413[_0xc546('0x2f')][_0xc546('0x3f')]){_0x47c17d['include']=[{'all':!![]}];}_0x47c17d=_['merge']({},_0x47c17d,_0x426413['options']);return db[_0xc546('0x29')][_0xc546('0x42')](_0x47c17d)[_0xc546('0x24')](handleEntityNotFound(_0x3f0153,null))[_0xc546('0x24')](respondWithResult(_0x3f0153,null))[_0xc546('0x43')](handleError(_0x3f0153,null));};exports['create']=function(_0x54de47,_0x5daed3){return db[_0xc546('0x29')][_0xc546('0x44')](_0x54de47[_0xc546('0x45')],{})[_0xc546('0x24')](respondWithResult(_0x5daed3,0xc9))[_0xc546('0x43')](handleError(_0x5daed3,null));};exports['update']=function(_0x410e72,_0x18f5c3){if(_0x410e72[_0xc546('0x45')]['id']){delete _0x410e72[_0xc546('0x45')]['id'];}return db[_0xc546('0x29')]['find']({'where':{'id':_0x410e72['params']['id']}})[_0xc546('0x24')](handleEntityNotFound(_0x18f5c3,null))[_0xc546('0x24')](saveUpdates(_0x410e72[_0xc546('0x45')],null))[_0xc546('0x24')](respondWithResult(_0x18f5c3,null))[_0xc546('0x43')](handleError(_0x18f5c3,null));};exports[_0xc546('0x23')]=function(_0x52ab79,_0xc0ac4c){return db['ZendeskConfiguration'][_0xc546('0x42')]({'where':{'id':_0x52ab79[_0xc546('0x46')]['id']}})[_0xc546('0x24')](handleEntityNotFound(_0xc0ac4c,null))['then'](removeEntity(_0xc0ac4c,null))[_0xc546('0x43')](handleError(_0xc0ac4c,null));};exports[_0xc546('0x47')]=function(_0x29b504,_0x120cd3,_0x3637ad){var _0x444d66={};var _0x27d992={};var _0x165234;var _0x4cbd8f;return db[_0xc546('0x29')][_0xc546('0x48')]({'where':{'id':_0x29b504[_0xc546('0x46')]['id']}})[_0xc546('0x24')](handleEntityNotFound(_0x120cd3,null))[_0xc546('0x24')](function(_0x4af4fe){if(_0x4af4fe){_0x165234=_0x4af4fe;_0x27d992['model']=_[_0xc546('0x30')](db[_0xc546('0x49')]['rawAttributes']);_0x27d992[_0xc546('0x2f')]=_['keys'](_0x29b504[_0xc546('0x2f')]);_0x27d992['filters']=_[_0xc546('0x32')](_0x27d992[_0xc546('0x2d')],_0x27d992[_0xc546('0x2f')]);_0x444d66[_0xc546('0x33')]=_[_0xc546('0x32')](_0x27d992[_0xc546('0x2d')],qs[_0xc546('0x34')](_0x29b504[_0xc546('0x2f')][_0xc546('0x34')]));_0x444d66['attributes']=_0x444d66['attributes'][_0xc546('0x4a')]?_0x444d66['attributes']:_0x27d992[_0xc546('0x2d')];_0x444d66[_0xc546('0x37')]=qs[_0xc546('0x38')](_0x29b504[_0xc546('0x2f')][_0xc546('0x38')]);_0x444d66[_0xc546('0x39')]=qs[_0xc546('0x31')](_[_0xc546('0x3a')](_0x29b504[_0xc546('0x2f')],_0x27d992[_0xc546('0x31')]));if(_0x29b504[_0xc546('0x2f')]['filter']){_0x444d66[_0xc546('0x39')]=_['merge'](_0x444d66[_0xc546('0x39')],{'$or':_[_0xc546('0x2e')](_0x444d66[_0xc546('0x33')],function(_0x5a8df9){var _0x285428={};_0x285428[_0x5a8df9]={'$like':'%'+_0x29b504[_0xc546('0x2f')][_0xc546('0x3c')]+'%'};return _0x285428;})});}_0x444d66=_[_0xc546('0x3d')]({},_0x444d66,_0x29b504[_0xc546('0x3e')]);return _0x165234[_0xc546('0x47')](_0x444d66);}})['then'](function(_0x5c3e9e){if(_0x5c3e9e){_0x4cbd8f=_0x5c3e9e['length'];if(!_0x29b504[_0xc546('0x2f')][_0xc546('0x35')](_0xc546('0x36'))){_0x444d66['limit']=qs[_0xc546('0x1d')](_0x29b504[_0xc546('0x2f')][_0xc546('0x1d')]);_0x444d66['offset']=qs[_0xc546('0x1b')](_0x29b504[_0xc546('0x2f')]['offset']);}return _0x165234[_0xc546('0x47')](_0x444d66);}})[_0xc546('0x24')](function(_0x38beaa){if(_0x38beaa){return _0x38beaa?{'count':_0x4cbd8f,'rows':_0x38beaa}:null;}})[_0xc546('0x24')](respondWithResult(_0x120cd3,null))[_0xc546('0x43')](handleError(_0x120cd3,null));};exports['getSubjects']=function(_0x5e5bfe,_0x359918,_0x105caf){var _0x13440c={};var _0x2ef211={};var _0x2561df;var _0x232687;return db[_0xc546('0x29')][_0xc546('0x48')]({'where':{'id':_0x5e5bfe['params']['id']}})[_0xc546('0x24')](handleEntityNotFound(_0x359918,null))[_0xc546('0x24')](function(_0x485c41){if(_0x485c41){_0x2561df=_0x485c41;_0x2ef211[_0xc546('0x2d')]=_[_0xc546('0x30')](db['ZendeskField'][_0xc546('0x2a')]);_0x2ef211['query']=_[_0xc546('0x30')](_0x5e5bfe['query']);_0x2ef211['filters']=_['intersection'](_0x2ef211[_0xc546('0x2d')],_0x2ef211['query']);_0x13440c[_0xc546('0x33')]=_['intersection'](_0x2ef211['model'],qs[_0xc546('0x34')](_0x5e5bfe[_0xc546('0x2f')][_0xc546('0x34')]));_0x13440c[_0xc546('0x33')]=_0x13440c[_0xc546('0x33')]['length']?_0x13440c[_0xc546('0x33')]:_0x2ef211[_0xc546('0x2d')];_0x13440c[_0xc546('0x37')]=qs[_0xc546('0x38')](_0x5e5bfe['query']['sort']);_0x13440c[_0xc546('0x39')]=qs['filters'](_[_0xc546('0x3a')](_0x5e5bfe[_0xc546('0x2f')],_0x2ef211[_0xc546('0x31')]));if(_0x5e5bfe[_0xc546('0x2f')]['filter']){_0x13440c[_0xc546('0x39')]=_['merge'](_0x13440c[_0xc546('0x39')],{'$or':_['map'](_0x13440c[_0xc546('0x33')],function(_0x4fc19f){var _0xc6d62={};_0xc6d62[_0x4fc19f]={'$like':'%'+_0x5e5bfe[_0xc546('0x2f')][_0xc546('0x3c')]+'%'};return _0xc6d62;})});}_0x13440c=_[_0xc546('0x3d')]({},_0x13440c,_0x5e5bfe[_0xc546('0x3e')]);return _0x2561df[_0xc546('0x4b')](_0x13440c);}})[_0xc546('0x24')](function(_0x57d5f7){if(_0x57d5f7){_0x232687=_0x57d5f7['length'];if(!_0x5e5bfe['query'][_0xc546('0x35')](_0xc546('0x36'))){_0x13440c['limit']=qs[_0xc546('0x1d')](_0x5e5bfe[_0xc546('0x2f')][_0xc546('0x1d')]);_0x13440c[_0xc546('0x1b')]=qs['offset'](_0x5e5bfe[_0xc546('0x2f')][_0xc546('0x1b')]);}return _0x2561df[_0xc546('0x4b')](_0x13440c);}})[_0xc546('0x24')](function(_0x464fd7){if(_0x464fd7){return _0x464fd7?{'count':_0x232687,'rows':_0x464fd7}:null;}})[_0xc546('0x24')](respondWithResult(_0x359918,null))['catch'](handleError(_0x359918,null));};exports[_0xc546('0x4c')]=function(_0x214446,_0x5f3eda,_0x1c215a){var _0x4836f3={};var _0xc44bde={};var _0x4ee87c;var _0x3a0470;return db[_0xc546('0x29')][_0xc546('0x48')]({'where':{'id':_0x214446[_0xc546('0x46')]['id']}})[_0xc546('0x24')](handleEntityNotFound(_0x5f3eda,null))[_0xc546('0x24')](function(_0x822955){if(_0x822955){_0x4ee87c=_0x822955;_0xc44bde[_0xc546('0x2d')]=_['keys'](db[_0xc546('0x49')][_0xc546('0x2a')]);_0xc44bde[_0xc546('0x2f')]=_[_0xc546('0x30')](_0x214446[_0xc546('0x2f')]);_0xc44bde[_0xc546('0x31')]=_[_0xc546('0x32')](_0xc44bde[_0xc546('0x2d')],_0xc44bde[_0xc546('0x2f')]);_0x4836f3[_0xc546('0x33')]=_[_0xc546('0x32')](_0xc44bde[_0xc546('0x2d')],qs['fields'](_0x214446['query']['fields']));_0x4836f3[_0xc546('0x33')]=_0x4836f3[_0xc546('0x33')][_0xc546('0x4a')]?_0x4836f3[_0xc546('0x33')]:_0xc44bde[_0xc546('0x2d')];_0x4836f3['order']=qs[_0xc546('0x38')](_0x214446[_0xc546('0x2f')]['sort']);_0x4836f3['where']=qs[_0xc546('0x31')](_[_0xc546('0x3a')](_0x214446[_0xc546('0x2f')],_0xc44bde[_0xc546('0x31')]));if(_0x214446[_0xc546('0x2f')]['filter']){_0x4836f3[_0xc546('0x39')]=_[_0xc546('0x3d')](_0x4836f3[_0xc546('0x39')],{'$or':_[_0xc546('0x2e')](_0x4836f3[_0xc546('0x33')],function(_0x3b48c9){var _0x4b97fe={};_0x4b97fe[_0x3b48c9]={'$like':'%'+_0x214446[_0xc546('0x2f')][_0xc546('0x3c')]+'%'};return _0x4b97fe;})});}_0x4836f3=_['merge']({},_0x4836f3,_0x214446[_0xc546('0x3e')]);return _0x4ee87c[_0xc546('0x4c')](_0x4836f3);}})[_0xc546('0x24')](function(_0x4fec4c){if(_0x4fec4c){_0x3a0470=_0x4fec4c[_0xc546('0x4a')];if(!_0x214446[_0xc546('0x2f')][_0xc546('0x35')](_0xc546('0x36'))){_0x4836f3['limit']=qs[_0xc546('0x1d')](_0x214446[_0xc546('0x2f')][_0xc546('0x1d')]);_0x4836f3[_0xc546('0x1b')]=qs[_0xc546('0x1b')](_0x214446[_0xc546('0x2f')][_0xc546('0x1b')]);}return _0x4ee87c['getDescriptions'](_0x4836f3);}})[_0xc546('0x24')](function(_0x49f2d8){if(_0x49f2d8){return _0x49f2d8?{'count':_0x3a0470,'rows':_0x49f2d8}:null;}})[_0xc546('0x24')](respondWithResult(_0x5f3eda,null))['catch'](handleError(_0x5f3eda,null));};exports[_0xc546('0x4d')]=function(_0x1fb277,_0x3e5550,_0x44fa1b){var _0x1b1177={};var _0x55f8fb={};var _0x4baf09;var _0x1e0f8c;return db[_0xc546('0x29')][_0xc546('0x48')]({'where':{'id':_0x1fb277[_0xc546('0x46')]['id']}})[_0xc546('0x24')](handleEntityNotFound(_0x3e5550,null))[_0xc546('0x24')](function(_0x468da7){if(_0x468da7){_0x4baf09=_0x468da7;_0x55f8fb[_0xc546('0x2d')]=_['keys'](db[_0xc546('0x4e')][_0xc546('0x2a')]);_0x55f8fb[_0xc546('0x2f')]=_['keys'](_0x1fb277[_0xc546('0x2f')]);_0x55f8fb['filters']=_[_0xc546('0x32')](_0x55f8fb[_0xc546('0x2d')],_0x55f8fb['query']);_0x1b1177['attributes']=_[_0xc546('0x32')](_0x55f8fb[_0xc546('0x2d')],qs[_0xc546('0x34')](_0x1fb277['query'][_0xc546('0x34')]));_0x1b1177[_0xc546('0x33')]=_0x1b1177[_0xc546('0x33')]['length']?_0x1b1177['attributes']:_0x55f8fb[_0xc546('0x2d')];_0x1b1177[_0xc546('0x37')]=qs[_0xc546('0x38')](_0x1fb277['query'][_0xc546('0x38')]);_0x1b1177[_0xc546('0x39')]=qs[_0xc546('0x31')](_[_0xc546('0x3a')](_0x1fb277['query'],_0x55f8fb['filters']));if(_0x1fb277[_0xc546('0x2f')][_0xc546('0x3c')]){_0x1b1177['where']=_[_0xc546('0x3d')](_0x1b1177[_0xc546('0x39')],{'$or':_[_0xc546('0x2e')](_0x1b1177[_0xc546('0x33')],function(_0x419ae4){var _0x5cdc15={};_0x5cdc15[_0x419ae4]={'$like':'%'+_0x1fb277['query'][_0xc546('0x3c')]+'%'};return _0x5cdc15;})});}_0x1b1177=_['merge']({},_0x1b1177,_0x1fb277[_0xc546('0x3e')]);return _0x4baf09[_0xc546('0x4d')](_0x1b1177);}})[_0xc546('0x24')](function(_0x37b130){if(_0x37b130){_0x1e0f8c=_0x37b130['length'];if(!_0x1fb277[_0xc546('0x2f')][_0xc546('0x35')](_0xc546('0x36'))){_0x1b1177['limit']=qs['limit'](_0x1fb277['query'][_0xc546('0x1d')]);_0x1b1177[_0xc546('0x1b')]=qs[_0xc546('0x1b')](_0x1fb277[_0xc546('0x2f')]['offset']);}return _0x4baf09[_0xc546('0x4d')](_0x1b1177);}})[_0xc546('0x24')](function(_0x3fc802){if(_0x3fc802){return _0x3fc802?{'count':_0x1e0f8c,'rows':_0x3fc802}:null;}})[_0xc546('0x24')](respondWithResult(_0x3e5550,null))[_0xc546('0x43')](handleError(_0x3e5550,null));};exports[_0xc546('0x4f')]=function(_0x345a8c,_0xac0b59,_0x4b6ff9){if(_0x345a8c[_0xc546('0x45')]['id']){delete _0x345a8c[_0xc546('0x45')]['id'];}return db[_0xc546('0x29')][_0xc546('0x48')]({'where':{'id':_0x345a8c[_0xc546('0x46')]['id']}})['then'](handleEntityNotFound(_0xac0b59,null))[_0xc546('0x24')](function(_0x5e2396){if(_0x5e2396){return _0x5e2396[_0xc546('0x4f')](_0x345a8c[_0xc546('0x45')][_0xc546('0x50')]||[]);}return null;})[_0xc546('0x24')](respondWithResult(_0xac0b59,null))[_0xc546('0x43')](handleError(_0xac0b59,null));};
\ No newline at end of file
+var _0x1995=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','type','options','ZendeskConfiguration','findAll','rows','catch','includeAll','include','merge','create','body','params','getFields','findOne','ZendeskField','length','order','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x308b9d,_0x11db54){var _0x301d31=function(_0x51cb03){while(--_0x51cb03){_0x308b9d['push'](_0x308b9d['shift']());}};_0x301d31(++_0x11db54);}(_0x1995,0x13b));var _0x5199=function(_0xe39b56,_0x11d05d){_0xe39b56=_0xe39b56-0x0;var _0x88ab69=_0x1995[_0xe39b56];return _0x88ab69;};'use strict';var emlformat=require(_0x5199('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5199('0x1'));var jsonpatch=require(_0x5199('0x2'));var rp=require(_0x5199('0x3'));var moment=require(_0x5199('0x4'));var BPromise=require(_0x5199('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5199('0x6'));var sox=require(_0x5199('0x7'));var csv=require('to-csv');var ejs=require(_0x5199('0x8'));var fs=require('fs');var fs_extra=require(_0x5199('0x9'));var _=require(_0x5199('0xa'));var squel=require(_0x5199('0xb'));var crypto=require(_0x5199('0xc'));var jsforce=require(_0x5199('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5199('0xe'));var Redis=require(_0x5199('0xf'));var authService=require(_0x5199('0x10'));var qs=require(_0x5199('0x11'));var as=require(_0x5199('0x12'));var hardwareService=require(_0x5199('0x13'));var logger=require(_0x5199('0x14'))('api');var utils=require(_0x5199('0x15'));var config=require(_0x5199('0x16'));var licenseUtil=require(_0x5199('0x17'));var db=require(_0x5199('0x18'))['db'];function respondWithStatusCode(_0x22143a,_0x15bcdc){_0x15bcdc=_0x15bcdc||0xcc;return function(_0x373537){if(_0x373537){return _0x22143a[_0x5199('0x19')](_0x15bcdc);}return _0x22143a[_0x5199('0x1a')](_0x15bcdc)[_0x5199('0x1b')]();};}function respondWithResult(_0x33ab62,_0x54efbf){_0x54efbf=_0x54efbf||0xc8;return function(_0x5472de){if(_0x5472de){return _0x33ab62[_0x5199('0x1a')](_0x54efbf)[_0x5199('0x1c')](_0x5472de);}};}function respondWithFilteredResult(_0x7af26f,_0x31f94e){return function(_0x4cd497){if(_0x4cd497){var _0x41514b=typeof _0x31f94e['offset']===_0x5199('0x1d')&&typeof _0x31f94e[_0x5199('0x1e')]===_0x5199('0x1d');var _0x299d55=_0x4cd497[_0x5199('0x1f')];var _0x2359cd=_0x41514b?0x0:_0x31f94e[_0x5199('0x20')];var _0x29b88b=_0x41514b?_0x4cd497[_0x5199('0x1f')]:_0x31f94e[_0x5199('0x20')]+_0x31f94e[_0x5199('0x1e')];var _0x56c35b;if(_0x29b88b>=_0x299d55){_0x29b88b=_0x299d55;_0x56c35b=0xc8;}else{_0x56c35b=0xce;}_0x7af26f['status'](_0x56c35b);return _0x7af26f[_0x5199('0x21')]('Content-Range',_0x2359cd+'-'+_0x29b88b+'/'+_0x299d55)['json'](_0x4cd497);}return null;};}function patchUpdates(_0x538607){return function(_0x2a4106){try{jsonpatch[_0x5199('0x22')](_0x2a4106,_0x538607,!![]);}catch(_0x2e83b6){return BPromise[_0x5199('0x23')](_0x2e83b6);}return _0x2a4106[_0x5199('0x24')]();};}function saveUpdates(_0x8b527c,_0x4cc57e){return function(_0x2a8301){if(_0x2a8301){return _0x2a8301[_0x5199('0x25')](_0x8b527c)[_0x5199('0x26')](function(_0x29919d){return _0x29919d;});}return null;};}function removeEntity(_0x501c11,_0x5d097d){return function(_0x5033bc){if(_0x5033bc){return _0x5033bc[_0x5199('0x27')]()[_0x5199('0x26')](function(){_0x501c11[_0x5199('0x1a')](0xcc)[_0x5199('0x1b')]();});}};}function handleEntityNotFound(_0x121f66,_0x5bbe39){return function(_0x340a18){if(!_0x340a18){_0x121f66[_0x5199('0x19')](0x194);}return _0x340a18;};}function handleError(_0x114c9c,_0x18b561){_0x18b561=_0x18b561||0x1f4;return function(_0x41780e){logger[_0x5199('0x28')](_0x41780e[_0x5199('0x29')]);if(_0x41780e[_0x5199('0x2a')]){delete _0x41780e[_0x5199('0x2a')];}_0x114c9c['status'](_0x18b561)[_0x5199('0x2b')](_0x41780e);};}exports[_0x5199('0x2c')]=function(_0x45ab57,_0x5f4a19){var _0x3888bf={},_0x57d8e0={},_0x5fb583={'count':0x0,'rows':[]};var _0x47ea45=_[_0x5199('0x2d')](db['ZendeskConfiguration'][_0x5199('0x2e')],function(_0x4cf6ae){return{'name':_0x4cf6ae['fieldName'],'type':_0x4cf6ae['type'][_0x5199('0x2f')]};});_0x57d8e0['model']=_['map'](_0x47ea45,'name');_0x57d8e0[_0x5199('0x30')]=_[_0x5199('0x31')](_0x45ab57[_0x5199('0x30')]);_0x57d8e0[_0x5199('0x32')]=_[_0x5199('0x33')](_0x57d8e0[_0x5199('0x34')],_0x57d8e0[_0x5199('0x30')]);_0x3888bf['attributes']=_[_0x5199('0x33')](_0x57d8e0['model'],qs[_0x5199('0x35')](_0x45ab57[_0x5199('0x30')][_0x5199('0x35')]));_0x3888bf[_0x5199('0x36')]=_0x3888bf[_0x5199('0x36')]['length']?_0x3888bf[_0x5199('0x36')]:_0x57d8e0[_0x5199('0x34')];if(!_0x45ab57['query'][_0x5199('0x37')](_0x5199('0x38'))){_0x3888bf['limit']=qs[_0x5199('0x1e')](_0x45ab57['query']['limit']);_0x3888bf[_0x5199('0x20')]=qs[_0x5199('0x20')](_0x45ab57[_0x5199('0x30')]['offset']);}_0x3888bf['order']=qs[_0x5199('0x39')](_0x45ab57[_0x5199('0x30')][_0x5199('0x39')]);_0x3888bf[_0x5199('0x3a')]=qs[_0x5199('0x32')](_[_0x5199('0x3b')](_0x45ab57[_0x5199('0x30')],_0x57d8e0[_0x5199('0x32')]),_0x47ea45);if(_0x45ab57[_0x5199('0x30')][_0x5199('0x3c')]){_0x3888bf[_0x5199('0x3a')]=_['merge'](_0x3888bf[_0x5199('0x3a')],{'$or':_[_0x5199('0x2d')](_0x47ea45,function(_0x5b7a16){if(_0x5b7a16[_0x5199('0x3d')]!=='VIRTUAL'){var _0x893040={};_0x893040[_0x5b7a16[_0x5199('0x2a')]]={'$like':'%'+_0x45ab57[_0x5199('0x30')][_0x5199('0x3c')]+'%'};return _0x893040;}})});}_0x3888bf=_['merge']({},_0x3888bf,_0x45ab57[_0x5199('0x3e')]);var _0x52d38f={'where':_0x3888bf[_0x5199('0x3a')]};return db['ZendeskConfiguration'][_0x5199('0x1f')](_0x52d38f)[_0x5199('0x26')](function(_0xa68815){_0x5fb583['count']=_0xa68815;if(_0x45ab57[_0x5199('0x30')]['includeAll']){_0x3888bf['include']=[{'all':!![]}];}return db[_0x5199('0x3f')][_0x5199('0x40')](_0x3888bf);})['then'](function(_0x2e7f77){_0x5fb583[_0x5199('0x41')]=_0x2e7f77;return _0x5fb583;})[_0x5199('0x26')](respondWithFilteredResult(_0x5f4a19,_0x3888bf))[_0x5199('0x42')](handleError(_0x5f4a19,null));};exports['show']=function(_0x5d1b65,_0x49fe0d){var _0x8b0d5c={'raw':![],'where':{'id':_0x5d1b65['params']['id']}},_0x5c6a47={};_0x5c6a47[_0x5199('0x34')]=_['keys'](db['ZendeskConfiguration'][_0x5199('0x2e')]);_0x5c6a47['query']=_[_0x5199('0x31')](_0x5d1b65[_0x5199('0x30')]);_0x5c6a47[_0x5199('0x32')]=_[_0x5199('0x33')](_0x5c6a47[_0x5199('0x34')],_0x5c6a47['query']);_0x8b0d5c[_0x5199('0x36')]=_['intersection'](_0x5c6a47[_0x5199('0x34')],qs[_0x5199('0x35')](_0x5d1b65[_0x5199('0x30')]['fields']));_0x8b0d5c[_0x5199('0x36')]=_0x8b0d5c[_0x5199('0x36')]['length']?_0x8b0d5c[_0x5199('0x36')]:_0x5c6a47[_0x5199('0x34')];if(_0x5d1b65[_0x5199('0x30')][_0x5199('0x43')]){_0x8b0d5c[_0x5199('0x44')]=[{'all':!![]}];}_0x8b0d5c=_[_0x5199('0x45')]({},_0x8b0d5c,_0x5d1b65[_0x5199('0x3e')]);return db[_0x5199('0x3f')]['find'](_0x8b0d5c)[_0x5199('0x26')](handleEntityNotFound(_0x49fe0d,null))[_0x5199('0x26')](respondWithResult(_0x49fe0d,null))[_0x5199('0x42')](handleError(_0x49fe0d,null));};exports['create']=function(_0x940ff6,_0x2f5ced){return db[_0x5199('0x3f')][_0x5199('0x46')](_0x940ff6[_0x5199('0x47')],{})[_0x5199('0x26')](respondWithResult(_0x2f5ced,0xc9))['catch'](handleError(_0x2f5ced,null));};exports[_0x5199('0x25')]=function(_0x36e7f1,_0x289909){if(_0x36e7f1[_0x5199('0x47')]['id']){delete _0x36e7f1[_0x5199('0x47')]['id'];}return db[_0x5199('0x3f')]['find']({'where':{'id':_0x36e7f1[_0x5199('0x48')]['id']}})[_0x5199('0x26')](handleEntityNotFound(_0x289909,null))[_0x5199('0x26')](saveUpdates(_0x36e7f1['body'],null))[_0x5199('0x26')](respondWithResult(_0x289909,null))[_0x5199('0x42')](handleError(_0x289909,null));};exports[_0x5199('0x27')]=function(_0x497150,_0x348c98){return db[_0x5199('0x3f')]['find']({'where':{'id':_0x497150['params']['id']}})[_0x5199('0x26')](handleEntityNotFound(_0x348c98,null))['then'](removeEntity(_0x348c98,null))[_0x5199('0x42')](handleError(_0x348c98,null));};exports[_0x5199('0x49')]=function(_0x45d8e4,_0x3874e9,_0x14a6b3){var _0x3f6151={};var _0x1fea14={};var _0x35270e;var _0x26783b;return db[_0x5199('0x3f')][_0x5199('0x4a')]({'where':{'id':_0x45d8e4['params']['id']}})[_0x5199('0x26')](handleEntityNotFound(_0x3874e9,null))[_0x5199('0x26')](function(_0x54ffa9){if(_0x54ffa9){_0x35270e=_0x54ffa9;_0x1fea14[_0x5199('0x34')]=_[_0x5199('0x31')](db[_0x5199('0x4b')][_0x5199('0x2e')]);_0x1fea14[_0x5199('0x30')]=_[_0x5199('0x31')](_0x45d8e4[_0x5199('0x30')]);_0x1fea14[_0x5199('0x32')]=_[_0x5199('0x33')](_0x1fea14[_0x5199('0x34')],_0x1fea14[_0x5199('0x30')]);_0x3f6151[_0x5199('0x36')]=_['intersection'](_0x1fea14['model'],qs[_0x5199('0x35')](_0x45d8e4[_0x5199('0x30')]['fields']));_0x3f6151[_0x5199('0x36')]=_0x3f6151[_0x5199('0x36')][_0x5199('0x4c')]?_0x3f6151['attributes']:_0x1fea14[_0x5199('0x34')];_0x3f6151[_0x5199('0x4d')]=qs['sort'](_0x45d8e4[_0x5199('0x30')][_0x5199('0x39')]);_0x3f6151[_0x5199('0x3a')]=qs['filters'](_[_0x5199('0x3b')](_0x45d8e4[_0x5199('0x30')],_0x1fea14[_0x5199('0x32')]));if(_0x45d8e4['query'][_0x5199('0x3c')]){_0x3f6151['where']=_['merge'](_0x3f6151[_0x5199('0x3a')],{'$or':_[_0x5199('0x2d')](_0x3f6151[_0x5199('0x36')],function(_0x14140f){var _0x224ec3={};_0x224ec3[_0x14140f]={'$like':'%'+_0x45d8e4[_0x5199('0x30')][_0x5199('0x3c')]+'%'};return _0x224ec3;})});}_0x3f6151=_[_0x5199('0x45')]({},_0x3f6151,_0x45d8e4[_0x5199('0x3e')]);return _0x35270e[_0x5199('0x49')](_0x3f6151);}})[_0x5199('0x26')](function(_0x4f5fe){if(_0x4f5fe){_0x26783b=_0x4f5fe['length'];if(!_0x45d8e4['query'][_0x5199('0x37')](_0x5199('0x38'))){_0x3f6151[_0x5199('0x1e')]=qs['limit'](_0x45d8e4[_0x5199('0x30')][_0x5199('0x1e')]);_0x3f6151[_0x5199('0x20')]=qs['offset'](_0x45d8e4['query']['offset']);}return _0x35270e[_0x5199('0x49')](_0x3f6151);}})[_0x5199('0x26')](function(_0x207e61){if(_0x207e61){return _0x207e61?{'count':_0x26783b,'rows':_0x207e61}:null;}})[_0x5199('0x26')](respondWithResult(_0x3874e9,null))[_0x5199('0x42')](handleError(_0x3874e9,null));};exports[_0x5199('0x4e')]=function(_0xe65b1c,_0x4e8a4d,_0x2d3853){var _0xfbaf5b={};var _0x48aa19={};var _0x5837f1;var _0x40c5b0;return db[_0x5199('0x3f')][_0x5199('0x4a')]({'where':{'id':_0xe65b1c[_0x5199('0x48')]['id']}})[_0x5199('0x26')](handleEntityNotFound(_0x4e8a4d,null))[_0x5199('0x26')](function(_0x125aaf){if(_0x125aaf){_0x5837f1=_0x125aaf;_0x48aa19[_0x5199('0x34')]=_[_0x5199('0x31')](db[_0x5199('0x4b')][_0x5199('0x2e')]);_0x48aa19[_0x5199('0x30')]=_[_0x5199('0x31')](_0xe65b1c[_0x5199('0x30')]);_0x48aa19['filters']=_[_0x5199('0x33')](_0x48aa19['model'],_0x48aa19[_0x5199('0x30')]);_0xfbaf5b[_0x5199('0x36')]=_['intersection'](_0x48aa19[_0x5199('0x34')],qs[_0x5199('0x35')](_0xe65b1c[_0x5199('0x30')][_0x5199('0x35')]));_0xfbaf5b[_0x5199('0x36')]=_0xfbaf5b[_0x5199('0x36')][_0x5199('0x4c')]?_0xfbaf5b['attributes']:_0x48aa19['model'];_0xfbaf5b[_0x5199('0x4d')]=qs[_0x5199('0x39')](_0xe65b1c[_0x5199('0x30')][_0x5199('0x39')]);_0xfbaf5b['where']=qs[_0x5199('0x32')](_[_0x5199('0x3b')](_0xe65b1c['query'],_0x48aa19[_0x5199('0x32')]));if(_0xe65b1c[_0x5199('0x30')][_0x5199('0x3c')]){_0xfbaf5b[_0x5199('0x3a')]=_['merge'](_0xfbaf5b[_0x5199('0x3a')],{'$or':_[_0x5199('0x2d')](_0xfbaf5b[_0x5199('0x36')],function(_0x194b77){var _0x2b3646={};_0x2b3646[_0x194b77]={'$like':'%'+_0xe65b1c[_0x5199('0x30')][_0x5199('0x3c')]+'%'};return _0x2b3646;})});}_0xfbaf5b=_[_0x5199('0x45')]({},_0xfbaf5b,_0xe65b1c[_0x5199('0x3e')]);return _0x5837f1['getSubjects'](_0xfbaf5b);}})['then'](function(_0x4d5464){if(_0x4d5464){_0x40c5b0=_0x4d5464[_0x5199('0x4c')];if(!_0xe65b1c['query'][_0x5199('0x37')]('nolimit')){_0xfbaf5b[_0x5199('0x1e')]=qs[_0x5199('0x1e')](_0xe65b1c[_0x5199('0x30')][_0x5199('0x1e')]);_0xfbaf5b['offset']=qs['offset'](_0xe65b1c['query']['offset']);}return _0x5837f1[_0x5199('0x4e')](_0xfbaf5b);}})[_0x5199('0x26')](function(_0x44975b){if(_0x44975b){return _0x44975b?{'count':_0x40c5b0,'rows':_0x44975b}:null;}})[_0x5199('0x26')](respondWithResult(_0x4e8a4d,null))[_0x5199('0x42')](handleError(_0x4e8a4d,null));};exports[_0x5199('0x4f')]=function(_0x59931f,_0x5e9738,_0x5cff37){var _0x879db3={};var _0x35174e={};var _0x52122a;var _0x29b344;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x59931f[_0x5199('0x48')]['id']}})[_0x5199('0x26')](handleEntityNotFound(_0x5e9738,null))[_0x5199('0x26')](function(_0x1d2e57){if(_0x1d2e57){_0x52122a=_0x1d2e57;_0x35174e['model']=_[_0x5199('0x31')](db[_0x5199('0x4b')][_0x5199('0x2e')]);_0x35174e['query']=_[_0x5199('0x31')](_0x59931f['query']);_0x35174e[_0x5199('0x32')]=_[_0x5199('0x33')](_0x35174e[_0x5199('0x34')],_0x35174e[_0x5199('0x30')]);_0x879db3[_0x5199('0x36')]=_[_0x5199('0x33')](_0x35174e['model'],qs[_0x5199('0x35')](_0x59931f[_0x5199('0x30')]['fields']));_0x879db3['attributes']=_0x879db3[_0x5199('0x36')][_0x5199('0x4c')]?_0x879db3['attributes']:_0x35174e['model'];_0x879db3[_0x5199('0x4d')]=qs['sort'](_0x59931f[_0x5199('0x30')]['sort']);_0x879db3[_0x5199('0x3a')]=qs[_0x5199('0x32')](_[_0x5199('0x3b')](_0x59931f[_0x5199('0x30')],_0x35174e['filters']));if(_0x59931f[_0x5199('0x30')][_0x5199('0x3c')]){_0x879db3['where']=_[_0x5199('0x45')](_0x879db3[_0x5199('0x3a')],{'$or':_[_0x5199('0x2d')](_0x879db3[_0x5199('0x36')],function(_0x3f432a){var _0x4f42a5={};_0x4f42a5[_0x3f432a]={'$like':'%'+_0x59931f[_0x5199('0x30')][_0x5199('0x3c')]+'%'};return _0x4f42a5;})});}_0x879db3=_[_0x5199('0x45')]({},_0x879db3,_0x59931f[_0x5199('0x3e')]);return _0x52122a[_0x5199('0x4f')](_0x879db3);}})[_0x5199('0x26')](function(_0x1b2ea4){if(_0x1b2ea4){_0x29b344=_0x1b2ea4[_0x5199('0x4c')];if(!_0x59931f[_0x5199('0x30')][_0x5199('0x37')](_0x5199('0x38'))){_0x879db3[_0x5199('0x1e')]=qs[_0x5199('0x1e')](_0x59931f[_0x5199('0x30')][_0x5199('0x1e')]);_0x879db3[_0x5199('0x20')]=qs[_0x5199('0x20')](_0x59931f[_0x5199('0x30')][_0x5199('0x20')]);}return _0x52122a[_0x5199('0x4f')](_0x879db3);}})['then'](function(_0x5933e0){if(_0x5933e0){return _0x5933e0?{'count':_0x29b344,'rows':_0x5933e0}:null;}})['then'](respondWithResult(_0x5e9738,null))[_0x5199('0x42')](handleError(_0x5e9738,null));};exports[_0x5199('0x50')]=function(_0x1933da,_0x1b2e5a,_0x503e01){var _0x4432e2={};var _0x5e2fb5={};var _0x42ed57;var _0xafe98e;return db[_0x5199('0x3f')][_0x5199('0x4a')]({'where':{'id':_0x1933da['params']['id']}})['then'](handleEntityNotFound(_0x1b2e5a,null))[_0x5199('0x26')](function(_0x3c93cf){if(_0x3c93cf){_0x42ed57=_0x3c93cf;_0x5e2fb5[_0x5199('0x34')]=_[_0x5199('0x31')](db[_0x5199('0x51')][_0x5199('0x2e')]);_0x5e2fb5[_0x5199('0x30')]=_[_0x5199('0x31')](_0x1933da['query']);_0x5e2fb5[_0x5199('0x32')]=_[_0x5199('0x33')](_0x5e2fb5[_0x5199('0x34')],_0x5e2fb5['query']);_0x4432e2['attributes']=_[_0x5199('0x33')](_0x5e2fb5[_0x5199('0x34')],qs['fields'](_0x1933da['query']['fields']));_0x4432e2[_0x5199('0x36')]=_0x4432e2[_0x5199('0x36')]['length']?_0x4432e2[_0x5199('0x36')]:_0x5e2fb5[_0x5199('0x34')];_0x4432e2[_0x5199('0x4d')]=qs[_0x5199('0x39')](_0x1933da[_0x5199('0x30')]['sort']);_0x4432e2[_0x5199('0x3a')]=qs[_0x5199('0x32')](_[_0x5199('0x3b')](_0x1933da[_0x5199('0x30')],_0x5e2fb5[_0x5199('0x32')]));if(_0x1933da[_0x5199('0x30')]['filter']){_0x4432e2['where']=_[_0x5199('0x45')](_0x4432e2[_0x5199('0x3a')],{'$or':_[_0x5199('0x2d')](_0x4432e2[_0x5199('0x36')],function(_0x156e97){var _0x39bb66={};_0x39bb66[_0x156e97]={'$like':'%'+_0x1933da['query'][_0x5199('0x3c')]+'%'};return _0x39bb66;})});}_0x4432e2=_[_0x5199('0x45')]({},_0x4432e2,_0x1933da[_0x5199('0x3e')]);return _0x42ed57[_0x5199('0x50')](_0x4432e2);}})[_0x5199('0x26')](function(_0x1ba2cb){if(_0x1ba2cb){_0xafe98e=_0x1ba2cb['length'];if(!_0x1933da['query'][_0x5199('0x37')]('nolimit')){_0x4432e2[_0x5199('0x1e')]=qs['limit'](_0x1933da['query'][_0x5199('0x1e')]);_0x4432e2[_0x5199('0x20')]=qs[_0x5199('0x20')](_0x1933da['query'][_0x5199('0x20')]);}return _0x42ed57[_0x5199('0x50')](_0x4432e2);}})[_0x5199('0x26')](function(_0x4e0cf6){if(_0x4e0cf6){return _0x4e0cf6?{'count':_0xafe98e,'rows':_0x4e0cf6}:null;}})[_0x5199('0x26')](respondWithResult(_0x1b2e5a,null))[_0x5199('0x42')](handleError(_0x1b2e5a,null));};exports[_0x5199('0x52')]=function(_0x2f3b52,_0x4826b2,_0x386735){if(_0x2f3b52[_0x5199('0x47')]['id']){delete _0x2f3b52[_0x5199('0x47')]['id'];}return db[_0x5199('0x3f')]['findOne']({'where':{'id':_0x2f3b52['params']['id']}})[_0x5199('0x26')](handleEntityNotFound(_0x4826b2,null))['then'](function(_0x3877d3){if(_0x3877d3){return _0x3877d3[_0x5199('0x52')](_0x2f3b52[_0x5199('0x47')][_0x5199('0x53')]||[]);}return null;})['then'](respondWithResult(_0x4826b2,null))[_0x5199('0x42')](handleError(_0x4826b2,null));};
\ No newline at end of file
index 9f5204c..eb03b3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['rimraf','../../config/environment','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x361f35,_0x4ddfae){var _0x15bb57=function(_0x3d523c){while(--_0x3d523c){_0x361f35['push'](_0x361f35['shift']());}};_0x15bb57(++_0x4ddfae);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x322680,_0x3d594c){_0x322680=_0x322680-0x0;var _0xdf93c2=_0xfcbb[_0x322680];return _0xdf93c2;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var logger=require(_0xbfcb('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbfcb('0x3'));var rp=require(_0xbfcb('0x4'));var fs=require('fs');var path=require(_0xbfcb('0x5'));var rimraf=require(_0xbfcb('0x6'));var config=require(_0xbfcb('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x32c2aa,_0x4990c){return _0x32c2aa[_0xbfcb('0x8')](_0xbfcb('0x9'),attributes,{'tableName':_0xbfcb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcbb=['rimraf','../../config/environment','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x4db557,_0x3a047f){var _0x2c6b6d=function(_0x3d4547){while(--_0x3d4547){_0x4db557['push'](_0x4db557['shift']());}};_0x2c6b6d(++_0x3a047f);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x3bc053,_0x2a7b11){_0x3bc053=_0x3bc053-0x0;var _0xf7033a=_0xfcbb[_0x3bc053];return _0xf7033a;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var logger=require(_0xbfcb('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbfcb('0x3'));var rp=require(_0xbfcb('0x4'));var fs=require('fs');var path=require(_0xbfcb('0x5'));var rimraf=require(_0xbfcb('0x6'));var config=require(_0xbfcb('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x32c2aa,_0x4990c){return _0x32c2aa[_0xbfcb('0x8')](_0xbfcb('0x9'),attributes,{'tableName':_0xbfcb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9f41dbe..0f57ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bfd=['../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x17ba7d,_0x1adc96){var _0x246a2c=function(_0x3313bf){while(--_0x3313bf){_0x17ba7d['push'](_0x17ba7d['shift']());}};_0x246a2c(++_0x1adc96);}(_0x6bfd,0xc1));var _0xd6bf=function(_0x307904,_0x2b2649){_0x307904=_0x307904-0x0;var _0x4921de=_0x6bfd[_0x307904];return _0x4921de;};'use strict';var _=require('lodash');var util=require(_0xd6bf('0x0'));var moment=require(_0xd6bf('0x1'));var BPromise=require(_0xd6bf('0x2'));var rs=require(_0xd6bf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd6bf('0x4'));var logger=require(_0xd6bf('0x5'))(_0xd6bf('0x6'));var config=require(_0xd6bf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd6bf('0x8')][_0xd6bf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5abad4,_0x3d0746,_0x1ab4b5){return new BPromise(function(_0x2df702,_0x23a839){return client[_0xd6bf('0xa')](_0x5abad4,_0x1ab4b5)[_0xd6bf('0xb')](function(_0x2de88f){logger[_0xd6bf('0xc')](_0xd6bf('0xd'),_0x3d0746,'request\x20sent');logger[_0xd6bf('0xe')](_0xd6bf('0xf'),_0x3d0746,_0xd6bf('0x10'),JSON[_0xd6bf('0x11')](_0x2de88f));if(_0x2de88f['error']){if(_0x2de88f['error'][_0xd6bf('0x12')]===0x1f4){logger['error'](_0xd6bf('0xd'),_0x3d0746,_0x2de88f[_0xd6bf('0x13')][_0xd6bf('0x14')]);return _0x23a839(_0x2de88f[_0xd6bf('0x13')][_0xd6bf('0x14')]);}logger['error'](_0xd6bf('0xd'),_0x3d0746,_0x2de88f[_0xd6bf('0x13')][_0xd6bf('0x14')]);return _0x2df702(_0x2de88f[_0xd6bf('0x13')][_0xd6bf('0x14')]);}else{logger['info'](_0xd6bf('0xd'),_0x3d0746,'request\x20sent');_0x2df702(_0x2de88f[_0xd6bf('0x15')][_0xd6bf('0x14')]);}})['catch'](function(_0x3677c5){logger[_0xd6bf('0x13')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3d0746,_0x3677c5);_0x23a839(_0x3677c5);});});}
\ No newline at end of file
+var _0x7bbf=['then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7bbf,0xd4));var _0xf7bb=function(_0x263eb6,_0x28d436){_0x263eb6=_0x263eb6-0x0;var _0x14aed9=_0x7bbf[_0x263eb6];return _0x14aed9;};'use strict';var _=require(_0xf7bb('0x0'));var util=require('util');var moment=require(_0xf7bb('0x1'));var BPromise=require('bluebird');var rs=require(_0xf7bb('0x2'));var fs=require('fs');var Redis=require(_0xf7bb('0x3'));var db=require(_0xf7bb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf7bb('0x5'))(_0xf7bb('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf7bb('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x559713,_0x1b1cd8,_0x5b1efb){return new BPromise(function(_0x154d5f,_0x148d7e){return client['request'](_0x559713,_0x5b1efb)[_0xf7bb('0x8')](function(_0xd2c442){logger[_0xf7bb('0x9')](_0xf7bb('0xa'),_0x1b1cd8,_0xf7bb('0xb'));logger[_0xf7bb('0xc')](_0xf7bb('0xd'),_0x1b1cd8,_0xf7bb('0xb'),JSON[_0xf7bb('0xe')](_0xd2c442));if(_0xd2c442['error']){if(_0xd2c442['error'][_0xf7bb('0xf')]===0x1f4){logger[_0xf7bb('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1b1cd8,_0xd2c442[_0xf7bb('0x10')][_0xf7bb('0x11')]);return _0x148d7e(_0xd2c442['error'][_0xf7bb('0x11')]);}logger[_0xf7bb('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1b1cd8,_0xd2c442['error'][_0xf7bb('0x11')]);return _0x154d5f(_0xd2c442[_0xf7bb('0x10')][_0xf7bb('0x11')]);}else{logger['info'](_0xf7bb('0xa'),_0x1b1cd8,_0xf7bb('0xb'));_0x154d5f(_0xd2c442[_0xf7bb('0x12')]['message']);}})[_0xf7bb('0x13')](function(_0x43cb61){logger[_0xf7bb('0x10')](_0xf7bb('0xa'),_0x1b1cd8,_0x43cb61);_0x148d7e(_0x43cb61);});});}
\ No newline at end of file
index bd28af3..138cd0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6b9=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','/:id','show','post','create','update','delete','exports','multer'];(function(_0x82c38d,_0x515489){var _0x497b25=function(_0x28cf5b){while(--_0x28cf5b){_0x82c38d['push'](_0x82c38d['shift']());}};_0x497b25(++_0x515489);}(_0xe6b9,0xa1));var _0x9e6b=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xe6b9[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x9e6b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9e6b('0x1'));var express=require(_0x9e6b('0x2'));var router=express[_0x9e6b('0x3')]();var fs_extra=require(_0x9e6b('0x4'));var auth=require(_0x9e6b('0x5'));var interaction=require(_0x9e6b('0x6'));var config=require(_0x9e6b('0x7'));var controller=require(_0x9e6b('0x8'));router[_0x9e6b('0x9')]('/',auth[_0x9e6b('0xa')](),controller['index']);router[_0x9e6b('0x9')](_0x9e6b('0xb'),auth[_0x9e6b('0xa')](),controller[_0x9e6b('0xc')]);router[_0x9e6b('0xd')]('/',auth[_0x9e6b('0xa')](),controller[_0x9e6b('0xe')]);router['put'](_0x9e6b('0xb'),auth['isAuthenticated'](),controller[_0x9e6b('0xf')]);router[_0x9e6b('0x10')]('/:id',auth[_0x9e6b('0xa')](),controller['destroy']);module[_0x9e6b('0x11')]=router;
\ No newline at end of file
+var _0x259c=['path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','/:id','isAuthenticated','create','put','delete','destroy','exports','multer','util'];(function(_0x40bcb3,_0x30f758){var _0x1a60ca=function(_0x133e34){while(--_0x133e34){_0x40bcb3['push'](_0x40bcb3['shift']());}};_0x1a60ca(++_0x30f758);}(_0x259c,0xb9));var _0xc259=function(_0x193a2f,_0x50a1cf){_0x193a2f=_0x193a2f-0x0;var _0x14c1f1=_0x259c[_0x193a2f];return _0x14c1f1;};'use strict';var multer=require(_0xc259('0x0'));var util=require(_0xc259('0x1'));var path=require(_0xc259('0x2'));var timeout=require('connect-timeout');var express=require(_0xc259('0x3'));var router=express[_0xc259('0x4')]();var fs_extra=require(_0xc259('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc259('0x6'));var config=require(_0xc259('0x7'));var controller=require(_0xc259('0x8'));router[_0xc259('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc259('0x9')](_0xc259('0xa'),auth[_0xc259('0xb')](),controller['show']);router['post']('/',auth[_0xc259('0xb')](),controller[_0xc259('0xc')]);router[_0xc259('0xd')](_0xc259('0xa'),auth[_0xc259('0xb')](),controller['update']);router[_0xc259('0xe')](_0xc259('0xa'),auth[_0xc259('0xb')](),controller[_0xc259('0xf')]);module[_0xc259('0x10')]=router;
\ No newline at end of file
index aa8178e..d64e3e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf426=['sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN'];(function(_0x46cef2,_0x4bd1b5){var _0x1c9060=function(_0x3d6784){while(--_0x3d6784){_0x46cef2['push'](_0x46cef2['shift']());}};_0x1c9060(++_0x4bd1b5);}(_0xf426,0x154));var _0x6f42=function(_0x1ed406,_0x3b3184){_0x1ed406=_0x1ed406-0x0;var _0x359b38=_0xf426[_0x1ed406];return _0x359b38;};'use strict';var Sequelize=require(_0x6f42('0x0'));module[_0x6f42('0x1')]={'type':{'type':Sequelize[_0x6f42('0x2')](_0x6f42('0x3'),_0x6f42('0x4'),'customVariable',_0x6f42('0x5'),_0x6f42('0x6')),'defaultValue':_0x6f42('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x6f42('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x6f42('0x3'),'variable',_0x6f42('0x8'))},'keyContent':{'type':Sequelize[_0x6f42('0x7')]},'idField':{'type':Sequelize[_0x6f42('0x7')]},'nameField':{'type':Sequelize[_0x6f42('0x7')]},'customField':{'type':Sequelize[_0x6f42('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6f42('0x7')]}};
\ No newline at end of file
+var _0x4f01=['ENUM','BOOLEAN','exports','string','variable','customVariable','keyValue','STRING'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x4f01,0x72));var _0x14f0=function(_0x2bbb40,_0x3b70c8){_0x2bbb40=_0x2bbb40-0x0;var _0x108088=_0x4f01[_0x2bbb40];return _0x108088;};'use strict';var Sequelize=require('sequelize');module[_0x14f0('0x0')]={'type':{'type':Sequelize['ENUM'](_0x14f0('0x1'),_0x14f0('0x2'),_0x14f0('0x3'),_0x14f0('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x14f0('0x5')]},'key':{'type':Sequelize[_0x14f0('0x5')]},'keyType':{'type':Sequelize[_0x14f0('0x6')]('string',_0x14f0('0x2'),_0x14f0('0x3'))},'keyContent':{'type':Sequelize[_0x14f0('0x5')]},'idField':{'type':Sequelize[_0x14f0('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x14f0('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x14f0('0x5')]}};
\ No newline at end of file
index 566de90..1c32f29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8146=['rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','catch','show','params','ZendeskField','find','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','send','index','map'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x8146,0x194));var _0x6814=function(_0x547160,_0x537a78){_0x547160=_0x547160-0x0;var _0x3f7b71=_0x8146[_0x547160];return _0x3f7b71;};'use strict';var emlformat=require(_0x6814('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6814('0x1'));var jsonpatch=require(_0x6814('0x2'));var rp=require(_0x6814('0x3'));var moment=require(_0x6814('0x4'));var BPromise=require(_0x6814('0x5'));var Mustache=require('mustache');var util=require(_0x6814('0x6'));var path=require(_0x6814('0x7'));var sox=require(_0x6814('0x8'));var csv=require(_0x6814('0x9'));var ejs=require(_0x6814('0xa'));var fs=require('fs');var fs_extra=require(_0x6814('0xb'));var _=require(_0x6814('0xc'));var squel=require(_0x6814('0xd'));var crypto=require('crypto');var jsforce=require(_0x6814('0xe'));var deskjs=require(_0x6814('0xf'));var toCsv=require(_0x6814('0x9'));var querystring=require('querystring');var Papa=require(_0x6814('0x10'));var Redis=require('ioredis');var authService=require(_0x6814('0x11'));var qs=require(_0x6814('0x12'));var as=require(_0x6814('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6814('0x14'))('api');var utils=require(_0x6814('0x15'));var config=require(_0x6814('0x16'));var licenseUtil=require(_0x6814('0x17'));var db=require(_0x6814('0x18'))['db'];function respondWithStatusCode(_0x274c30,_0x10335d){_0x10335d=_0x10335d||0xcc;return function(_0x170a95){if(_0x170a95){return _0x274c30[_0x6814('0x19')](_0x10335d);}return _0x274c30[_0x6814('0x1a')](_0x10335d)['end']();};}function respondWithResult(_0x545ab8,_0x23f5c2){_0x23f5c2=_0x23f5c2||0xc8;return function(_0x34bd11){if(_0x34bd11){return _0x545ab8[_0x6814('0x1a')](_0x23f5c2)[_0x6814('0x1b')](_0x34bd11);}};}function respondWithFilteredResult(_0x45dd01,_0x5ea8a1){return function(_0x222bc1){if(_0x222bc1){var _0x53f4ad=typeof _0x5ea8a1['offset']===_0x6814('0x1c')&&typeof _0x5ea8a1[_0x6814('0x1d')]==='undefined';var _0xb24a9a=_0x222bc1['count'];var _0x33f82c=_0x53f4ad?0x0:_0x5ea8a1['offset'];var _0x2da349=_0x53f4ad?_0x222bc1[_0x6814('0x1e')]:_0x5ea8a1[_0x6814('0x1f')]+_0x5ea8a1[_0x6814('0x1d')];var _0x4b0825;if(_0x2da349>=_0xb24a9a){_0x2da349=_0xb24a9a;_0x4b0825=0xc8;}else{_0x4b0825=0xce;}_0x45dd01['status'](_0x4b0825);return _0x45dd01[_0x6814('0x20')](_0x6814('0x21'),_0x33f82c+'-'+_0x2da349+'/'+_0xb24a9a)[_0x6814('0x1b')](_0x222bc1);}return null;};}function patchUpdates(_0x2f5208){return function(_0x395cda){try{jsonpatch[_0x6814('0x22')](_0x395cda,_0x2f5208,!![]);}catch(_0x13ecd8){return BPromise[_0x6814('0x23')](_0x13ecd8);}return _0x395cda['save']();};}function saveUpdates(_0x121fae,_0x44a8a1){return function(_0x1bfb6d){if(_0x1bfb6d){return _0x1bfb6d[_0x6814('0x24')](_0x121fae)[_0x6814('0x25')](function(_0x594c27){return _0x594c27;});}return null;};}function removeEntity(_0x5817e8,_0xe1a2ae){return function(_0x1aa89f){if(_0x1aa89f){return _0x1aa89f[_0x6814('0x26')]()['then'](function(){_0x5817e8[_0x6814('0x1a')](0xcc)[_0x6814('0x27')]();});}};}function handleEntityNotFound(_0x287563,_0x444a2f){return function(_0x2c1198){if(!_0x2c1198){_0x287563[_0x6814('0x19')](0x194);}return _0x2c1198;};}function handleError(_0x473ca0,_0x12c18d){_0x12c18d=_0x12c18d||0x1f4;return function(_0x56f586){logger[_0x6814('0x28')](_0x56f586[_0x6814('0x29')]);if(_0x56f586[_0x6814('0x2a')]){delete _0x56f586[_0x6814('0x2a')];}_0x473ca0[_0x6814('0x1a')](_0x12c18d)[_0x6814('0x2b')](_0x56f586);};}exports[_0x6814('0x2c')]=function(_0x1f6156,_0x554c4c){var _0x9575cc={},_0x267dc0={},_0x90195a={'count':0x0,'rows':[]};var _0x3a1f78=_[_0x6814('0x2d')](db['ZendeskField'][_0x6814('0x2e')],function(_0x5ddf33){return{'name':_0x5ddf33[_0x6814('0x2f')],'type':_0x5ddf33[_0x6814('0x30')][_0x6814('0x31')]};});_0x267dc0[_0x6814('0x32')]=_[_0x6814('0x2d')](_0x3a1f78,'name');_0x267dc0[_0x6814('0x33')]=_[_0x6814('0x34')](_0x1f6156[_0x6814('0x33')]);_0x267dc0[_0x6814('0x35')]=_[_0x6814('0x36')](_0x267dc0['model'],_0x267dc0[_0x6814('0x33')]);_0x9575cc[_0x6814('0x37')]=_[_0x6814('0x36')](_0x267dc0[_0x6814('0x32')],qs[_0x6814('0x38')](_0x1f6156[_0x6814('0x33')][_0x6814('0x38')]));_0x9575cc[_0x6814('0x37')]=_0x9575cc[_0x6814('0x37')][_0x6814('0x39')]?_0x9575cc['attributes']:_0x267dc0['model'];if(!_0x1f6156[_0x6814('0x33')][_0x6814('0x3a')](_0x6814('0x3b'))){_0x9575cc[_0x6814('0x1d')]=qs[_0x6814('0x1d')](_0x1f6156[_0x6814('0x33')][_0x6814('0x1d')]);_0x9575cc['offset']=qs['offset'](_0x1f6156[_0x6814('0x33')]['offset']);}_0x9575cc['order']=qs[_0x6814('0x3c')](_0x1f6156[_0x6814('0x33')][_0x6814('0x3c')]);_0x9575cc['where']=qs[_0x6814('0x35')](_[_0x6814('0x3d')](_0x1f6156[_0x6814('0x33')],_0x267dc0[_0x6814('0x35')]),_0x3a1f78);if(_0x1f6156[_0x6814('0x33')][_0x6814('0x3e')]){_0x9575cc[_0x6814('0x3f')]=_['merge'](_0x9575cc['where'],{'$or':_[_0x6814('0x2d')](_0x3a1f78,function(_0x465c4a){if(_0x465c4a[_0x6814('0x30')]!==_0x6814('0x40')){var _0x29d409={};_0x29d409[_0x465c4a[_0x6814('0x2a')]]={'$like':'%'+_0x1f6156[_0x6814('0x33')][_0x6814('0x3e')]+'%'};return _0x29d409;}})});}_0x9575cc=_[_0x6814('0x41')]({},_0x9575cc,_0x1f6156[_0x6814('0x42')]);var _0x14695c={'where':_0x9575cc['where']};return db['ZendeskField']['count'](_0x14695c)[_0x6814('0x25')](function(_0x7b37d4){_0x90195a['count']=_0x7b37d4;if(_0x1f6156[_0x6814('0x33')][_0x6814('0x43')]){_0x9575cc['include']=[{'all':!![]}];}return db['ZendeskField'][_0x6814('0x44')](_0x9575cc);})['then'](function(_0x290f52){_0x90195a['rows']=_0x290f52;return _0x90195a;})[_0x6814('0x25')](respondWithFilteredResult(_0x554c4c,_0x9575cc))[_0x6814('0x45')](handleError(_0x554c4c,null));};exports[_0x6814('0x46')]=function(_0x4e58c9,_0x2d729c){var _0x2056cd={'raw':!![],'where':{'id':_0x4e58c9[_0x6814('0x47')]['id']}},_0x1f344d={};_0x1f344d[_0x6814('0x32')]=_['keys'](db['ZendeskField'][_0x6814('0x2e')]);_0x1f344d[_0x6814('0x33')]=_[_0x6814('0x34')](_0x4e58c9[_0x6814('0x33')]);_0x1f344d[_0x6814('0x35')]=_[_0x6814('0x36')](_0x1f344d[_0x6814('0x32')],_0x1f344d['query']);_0x2056cd[_0x6814('0x37')]=_[_0x6814('0x36')](_0x1f344d[_0x6814('0x32')],qs[_0x6814('0x38')](_0x4e58c9[_0x6814('0x33')]['fields']));_0x2056cd[_0x6814('0x37')]=_0x2056cd[_0x6814('0x37')]['length']?_0x2056cd[_0x6814('0x37')]:_0x1f344d[_0x6814('0x32')];if(_0x4e58c9[_0x6814('0x33')][_0x6814('0x43')]){_0x2056cd['include']=[{'all':!![]}];}_0x2056cd=_[_0x6814('0x41')]({},_0x2056cd,_0x4e58c9[_0x6814('0x42')]);return db[_0x6814('0x48')][_0x6814('0x49')](_0x2056cd)[_0x6814('0x25')](handleEntityNotFound(_0x2d729c,null))['then'](respondWithResult(_0x2d729c,null))[_0x6814('0x45')](handleError(_0x2d729c,null));};exports['create']=function(_0x3161f2,_0x4d0cf6){return db[_0x6814('0x48')]['create'](_0x3161f2['body'],{})[_0x6814('0x25')](respondWithResult(_0x4d0cf6,0xc9))['catch'](handleError(_0x4d0cf6,null));};exports['update']=function(_0x35d21e,_0x3c3132){if(_0x35d21e[_0x6814('0x4a')]['id']){delete _0x35d21e['body']['id'];}return db[_0x6814('0x48')][_0x6814('0x49')]({'where':{'id':_0x35d21e[_0x6814('0x47')]['id']}})[_0x6814('0x25')](handleEntityNotFound(_0x3c3132,null))[_0x6814('0x25')](saveUpdates(_0x35d21e[_0x6814('0x4a')],null))[_0x6814('0x25')](respondWithResult(_0x3c3132,null))['catch'](handleError(_0x3c3132,null));};exports[_0x6814('0x26')]=function(_0x1803ce,_0x48235c){return db[_0x6814('0x48')]['find']({'where':{'id':_0x1803ce[_0x6814('0x47')]['id']}})[_0x6814('0x25')](handleEntityNotFound(_0x48235c,null))[_0x6814('0x25')](removeEntity(_0x48235c,null))[_0x6814('0x45')](handleError(_0x48235c,null));};
\ No newline at end of file
+var _0x72a9=['query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','crypto','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','error','name','send','index','ZendeskField','fieldName','type','key','model','map'];(function(_0x10291b,_0x518773){var _0x1d5fbe=function(_0x24df58){while(--_0x24df58){_0x10291b['push'](_0x10291b['shift']());}};_0x1d5fbe(++_0x518773);}(_0x72a9,0x12a));var _0x972a=function(_0x345433,_0x1d56af){_0x345433=_0x345433-0x0;var _0x35f4a0=_0x72a9[_0x345433];return _0x35f4a0;};'use strict';var emlformat=require(_0x972a('0x0'));var rimraf=require(_0x972a('0x1'));var zipdir=require(_0x972a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x972a('0x3'));var moment=require(_0x972a('0x4'));var BPromise=require(_0x972a('0x5'));var Mustache=require(_0x972a('0x6'));var util=require(_0x972a('0x7'));var path=require('path');var sox=require(_0x972a('0x8'));var csv=require(_0x972a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x972a('0xa'));var squel=require('squel');var crypto=require(_0x972a('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x972a('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x972a('0xc'));var qs=require(_0x972a('0xd'));var as=require(_0x972a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x972a('0xf'));var utils=require('../../config/utils');var config=require(_0x972a('0x10'));var licenseUtil=require(_0x972a('0x11'));var db=require(_0x972a('0x12'))['db'];function respondWithStatusCode(_0x553e99,_0x2447e5){_0x2447e5=_0x2447e5||0xcc;return function(_0x199693){if(_0x199693){return _0x553e99[_0x972a('0x13')](_0x2447e5);}return _0x553e99['status'](_0x2447e5)[_0x972a('0x14')]();};}function respondWithResult(_0x113bdf,_0x17cc61){_0x17cc61=_0x17cc61||0xc8;return function(_0xe07f6e){if(_0xe07f6e){return _0x113bdf[_0x972a('0x15')](_0x17cc61)[_0x972a('0x16')](_0xe07f6e);}};}function respondWithFilteredResult(_0x3ff301,_0x24532d){return function(_0x3b49d5){if(_0x3b49d5){var _0x38f945=typeof _0x24532d[_0x972a('0x17')]===_0x972a('0x18')&&typeof _0x24532d[_0x972a('0x19')]===_0x972a('0x18');var _0xe733f8=_0x3b49d5[_0x972a('0x1a')];var _0x12aec3=_0x38f945?0x0:_0x24532d[_0x972a('0x17')];var _0x5ba0a4=_0x38f945?_0x3b49d5[_0x972a('0x1a')]:_0x24532d['offset']+_0x24532d[_0x972a('0x19')];var _0x2e5dc4;if(_0x5ba0a4>=_0xe733f8){_0x5ba0a4=_0xe733f8;_0x2e5dc4=0xc8;}else{_0x2e5dc4=0xce;}_0x3ff301[_0x972a('0x15')](_0x2e5dc4);return _0x3ff301[_0x972a('0x1b')](_0x972a('0x1c'),_0x12aec3+'-'+_0x5ba0a4+'/'+_0xe733f8)['json'](_0x3b49d5);}return null;};}function patchUpdates(_0x284650){return function(_0x413933){try{jsonpatch['apply'](_0x413933,_0x284650,!![]);}catch(_0x4d4414){return BPromise['reject'](_0x4d4414);}return _0x413933[_0x972a('0x1d')]();};}function saveUpdates(_0x3ceaca,_0xd642dd){return function(_0x1e9951){if(_0x1e9951){return _0x1e9951[_0x972a('0x1e')](_0x3ceaca)[_0x972a('0x1f')](function(_0x2457aa){return _0x2457aa;});}return null;};}function removeEntity(_0x5c9b2b,_0x1f58b3){return function(_0x5824d1){if(_0x5824d1){return _0x5824d1['destroy']()['then'](function(){_0x5c9b2b[_0x972a('0x15')](0xcc)[_0x972a('0x14')]();});}};}function handleEntityNotFound(_0x19b57e,_0x5b3f08){return function(_0x42f263){if(!_0x42f263){_0x19b57e[_0x972a('0x13')](0x194);}return _0x42f263;};}function handleError(_0x4935cf,_0x189edb){_0x189edb=_0x189edb||0x1f4;return function(_0x13df16){logger[_0x972a('0x20')](_0x13df16['stack']);if(_0x13df16[_0x972a('0x21')]){delete _0x13df16[_0x972a('0x21')];}_0x4935cf[_0x972a('0x15')](_0x189edb)[_0x972a('0x22')](_0x13df16);};}exports[_0x972a('0x23')]=function(_0x4c5cff,_0x57fe38){var _0x42c99f={},_0x6b4b30={},_0x106364={'count':0x0,'rows':[]};var _0x29fb5e=_['map'](db[_0x972a('0x24')]['rawAttributes'],function(_0x558eed){return{'name':_0x558eed[_0x972a('0x25')],'type':_0x558eed[_0x972a('0x26')][_0x972a('0x27')]};});_0x6b4b30[_0x972a('0x28')]=_[_0x972a('0x29')](_0x29fb5e,'name');_0x6b4b30[_0x972a('0x2a')]=_[_0x972a('0x2b')](_0x4c5cff[_0x972a('0x2a')]);_0x6b4b30['filters']=_['intersection'](_0x6b4b30['model'],_0x6b4b30['query']);_0x42c99f[_0x972a('0x2c')]=_[_0x972a('0x2d')](_0x6b4b30[_0x972a('0x28')],qs[_0x972a('0x2e')](_0x4c5cff[_0x972a('0x2a')]['fields']));_0x42c99f['attributes']=_0x42c99f[_0x972a('0x2c')][_0x972a('0x2f')]?_0x42c99f[_0x972a('0x2c')]:_0x6b4b30[_0x972a('0x28')];if(!_0x4c5cff[_0x972a('0x2a')][_0x972a('0x30')](_0x972a('0x31'))){_0x42c99f['limit']=qs[_0x972a('0x19')](_0x4c5cff['query'][_0x972a('0x19')]);_0x42c99f[_0x972a('0x17')]=qs[_0x972a('0x17')](_0x4c5cff[_0x972a('0x2a')][_0x972a('0x17')]);}_0x42c99f['order']=qs[_0x972a('0x32')](_0x4c5cff['query'][_0x972a('0x32')]);_0x42c99f[_0x972a('0x33')]=qs[_0x972a('0x34')](_['pick'](_0x4c5cff['query'],_0x6b4b30[_0x972a('0x34')]),_0x29fb5e);if(_0x4c5cff[_0x972a('0x2a')][_0x972a('0x35')]){_0x42c99f[_0x972a('0x33')]=_[_0x972a('0x36')](_0x42c99f['where'],{'$or':_[_0x972a('0x29')](_0x29fb5e,function(_0x17e53f){if(_0x17e53f[_0x972a('0x26')]!==_0x972a('0x37')){var _0x11a43e={};_0x11a43e[_0x17e53f[_0x972a('0x21')]]={'$like':'%'+_0x4c5cff[_0x972a('0x2a')][_0x972a('0x35')]+'%'};return _0x11a43e;}})});}_0x42c99f=_[_0x972a('0x36')]({},_0x42c99f,_0x4c5cff[_0x972a('0x38')]);var _0x1271d7={'where':_0x42c99f[_0x972a('0x33')]};return db[_0x972a('0x24')]['count'](_0x1271d7)[_0x972a('0x1f')](function(_0x74e793){_0x106364['count']=_0x74e793;if(_0x4c5cff[_0x972a('0x2a')][_0x972a('0x39')]){_0x42c99f[_0x972a('0x3a')]=[{'all':!![]}];}return db[_0x972a('0x24')][_0x972a('0x3b')](_0x42c99f);})[_0x972a('0x1f')](function(_0x22cb63){_0x106364[_0x972a('0x3c')]=_0x22cb63;return _0x106364;})['then'](respondWithFilteredResult(_0x57fe38,_0x42c99f))[_0x972a('0x3d')](handleError(_0x57fe38,null));};exports[_0x972a('0x3e')]=function(_0x8a3d58,_0x3a8f71){var _0x45f8b3={'raw':!![],'where':{'id':_0x8a3d58[_0x972a('0x3f')]['id']}},_0x290a71={};_0x290a71['model']=_[_0x972a('0x2b')](db[_0x972a('0x24')][_0x972a('0x40')]);_0x290a71['query']=_['keys'](_0x8a3d58[_0x972a('0x2a')]);_0x290a71[_0x972a('0x34')]=_[_0x972a('0x2d')](_0x290a71[_0x972a('0x28')],_0x290a71[_0x972a('0x2a')]);_0x45f8b3['attributes']=_['intersection'](_0x290a71[_0x972a('0x28')],qs[_0x972a('0x2e')](_0x8a3d58['query'][_0x972a('0x2e')]));_0x45f8b3[_0x972a('0x2c')]=_0x45f8b3[_0x972a('0x2c')][_0x972a('0x2f')]?_0x45f8b3['attributes']:_0x290a71[_0x972a('0x28')];if(_0x8a3d58['query'][_0x972a('0x39')]){_0x45f8b3[_0x972a('0x3a')]=[{'all':!![]}];}_0x45f8b3=_[_0x972a('0x36')]({},_0x45f8b3,_0x8a3d58[_0x972a('0x38')]);return db[_0x972a('0x24')][_0x972a('0x41')](_0x45f8b3)[_0x972a('0x1f')](handleEntityNotFound(_0x3a8f71,null))[_0x972a('0x1f')](respondWithResult(_0x3a8f71,null))[_0x972a('0x3d')](handleError(_0x3a8f71,null));};exports[_0x972a('0x42')]=function(_0x1f999b,_0x386f9b){return db[_0x972a('0x24')][_0x972a('0x42')](_0x1f999b[_0x972a('0x43')],{})['then'](respondWithResult(_0x386f9b,0xc9))[_0x972a('0x3d')](handleError(_0x386f9b,null));};exports[_0x972a('0x1e')]=function(_0xb0d5a5,_0xce09b6){if(_0xb0d5a5[_0x972a('0x43')]['id']){delete _0xb0d5a5[_0x972a('0x43')]['id'];}return db['ZendeskField'][_0x972a('0x41')]({'where':{'id':_0xb0d5a5[_0x972a('0x3f')]['id']}})[_0x972a('0x1f')](handleEntityNotFound(_0xce09b6,null))[_0x972a('0x1f')](saveUpdates(_0xb0d5a5[_0x972a('0x43')],null))[_0x972a('0x1f')](respondWithResult(_0xce09b6,null))[_0x972a('0x3d')](handleError(_0xce09b6,null));};exports['destroy']=function(_0x49786f,_0x3bf89f){return db[_0x972a('0x24')]['find']({'where':{'id':_0x49786f[_0x972a('0x3f')]['id']}})[_0x972a('0x1f')](handleEntityNotFound(_0x3bf89f,null))['then'](removeEntity(_0x3bf89f,null))[_0x972a('0x3d')](handleError(_0x3bf89f,null));};
\ No newline at end of file
index 2fe139b..607e304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d31=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId'];(function(_0x21e9f6,_0x3ddb6b){var _0x389d8d=function(_0x3710a0){while(--_0x3710a0){_0x21e9f6['push'](_0x21e9f6['shift']());}};_0x389d8d(++_0x3ddb6b);}(_0x1d31,0xee));var _0x11d3=function(_0x1bc013,_0x7771c6){_0x1bc013=_0x1bc013-0x0;var _0x55df36=_0x1d31[_0x1bc013];return _0x55df36;};'use strict';var _=require(_0x11d3('0x0'));var util=require(_0x11d3('0x1'));var logger=require(_0x11d3('0x2'))(_0x11d3('0x3'));var moment=require(_0x11d3('0x4'));var BPromise=require(_0x11d3('0x5'));var rp=require(_0x11d3('0x6'));var fs=require('fs');var path=require(_0x11d3('0x7'));var rimraf=require(_0x11d3('0x8'));var config=require('../../config/environment');var attributes=require(_0x11d3('0x9'));module[_0x11d3('0xa')]=function(_0x49bdda,_0x265a4f){return _0x49bdda[_0x11d3('0xb')](_0x11d3('0xc'),attributes,{'tableName':_0x11d3('0xd'),'paranoid':![],'indexes':[{'name':_0x11d3('0xe'),'fields':[_0x11d3('0xf'),_0x11d3('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c79=['zendesk_unique_index','idField','FieldId','util','../../config/logger','api','moment','bluebird','rimraf','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1c79,0x145));var _0x91c7=function(_0x1037e0,_0x477568){_0x1037e0=_0x1037e0-0x0;var _0xe65b5e=_0x1c79[_0x1037e0];return _0xe65b5e;};'use strict';var _=require('lodash');var util=require(_0x91c7('0x0'));var logger=require(_0x91c7('0x1'))(_0x91c7('0x2'));var moment=require(_0x91c7('0x3'));var BPromise=require(_0x91c7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x91c7('0x5'));var config=require('../../config/environment');var attributes=require(_0x91c7('0x6'));module[_0x91c7('0x7')]=function(_0x10d462,_0x125976){return _0x10d462[_0x91c7('0x8')](_0x91c7('0x9'),attributes,{'tableName':_0x91c7('0xa'),'paranoid':![],'indexes':[{'name':_0x91c7('0xb'),'fields':[_0x91c7('0xc'),_0x91c7('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fc50596..ec0df3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323c=['code','message','info','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1d94d1,_0x347bb8){var _0x23c397=function(_0x489441){while(--_0x489441){_0x1d94d1['push'](_0x1d94d1['shift']());}};_0x23c397(++_0x347bb8);}(_0x323c,0xc5));var _0xc323=function(_0x1f3890,_0x2f9aad){_0x1f3890=_0x1f3890-0x0;var _0x4af351=_0x323c[_0x1f3890];return _0x4af351;};'use strict';var _=require(_0xc323('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc323('0x1'));var rs=require(_0xc323('0x2'));var fs=require('fs');var Redis=require(_0xc323('0x3'));var db=require(_0xc323('0x4'))['db'];var utils=require(_0xc323('0x5'));var logger=require(_0xc323('0x6'))(_0xc323('0x7'));var config=require(_0xc323('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc323('0x9')][_0xc323('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x490d97,_0x1f80d8,_0x20fbfe){return new BPromise(function(_0x3b014b,_0x347b56){return client[_0xc323('0xb')](_0x490d97,_0x20fbfe)[_0xc323('0xc')](function(_0x348127){logger['info'](_0xc323('0xd'),_0x1f80d8,_0xc323('0xe'));logger[_0xc323('0xf')](_0xc323('0x10'),_0x1f80d8,_0xc323('0xe'),JSON[_0xc323('0x11')](_0x348127));if(_0x348127[_0xc323('0x12')]){if(_0x348127[_0xc323('0x12')][_0xc323('0x13')]===0x1f4){logger[_0xc323('0x12')](_0xc323('0xd'),_0x1f80d8,_0x348127[_0xc323('0x12')][_0xc323('0x14')]);return _0x347b56(_0x348127['error'][_0xc323('0x14')]);}logger[_0xc323('0x12')]('ZendeskField,\x20%s,\x20%s',_0x1f80d8,_0x348127[_0xc323('0x12')][_0xc323('0x14')]);return _0x3b014b(_0x348127[_0xc323('0x12')]['message']);}else{logger[_0xc323('0x15')](_0xc323('0xd'),_0x1f80d8,_0xc323('0xe'));_0x3b014b(_0x348127[_0xc323('0x16')][_0xc323('0x14')]);}})[_0xc323('0x17')](function(_0x1c4d04){logger[_0xc323('0x12')]('ZendeskField,\x20%s,\x20%s',_0x1f80d8,_0x1c4d04);_0x347b56(_0x1c4d04);});});}
\ No newline at end of file
+var _0x2303=['then','info','ZendeskField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x492958,_0xf868f7){var _0x20aba4=function(_0x219c13){while(--_0x219c13){_0x492958['push'](_0x492958['shift']());}};_0x20aba4(++_0xf868f7);}(_0x2303,0x107));var _0x3230=function(_0x19a040,_0x2b1801){_0x19a040=_0x19a040-0x0;var _0x17974b=_0x2303[_0x19a040];return _0x17974b;};'use strict';var _=require(_0x3230('0x0'));var util=require(_0x3230('0x1'));var moment=require(_0x3230('0x2'));var BPromise=require(_0x3230('0x3'));var rs=require(_0x3230('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3230('0x5'))['db'];var utils=require(_0x3230('0x6'));var logger=require(_0x3230('0x7'))('rpc');var config=require(_0x3230('0x8'));var jayson=require(_0x3230('0x9'));var client=jayson[_0x3230('0xa')][_0x3230('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ebbf7,_0x59e71d,_0x4aa135){return new BPromise(function(_0x26bcd0,_0x2ebf2f){return client[_0x3230('0xc')](_0x1ebbf7,_0x4aa135)[_0x3230('0xd')](function(_0x49f106){logger[_0x3230('0xe')](_0x3230('0xf'),_0x59e71d,'request\x20sent');logger[_0x3230('0x10')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x59e71d,_0x3230('0x11'),JSON[_0x3230('0x12')](_0x49f106));if(_0x49f106['error']){if(_0x49f106[_0x3230('0x13')][_0x3230('0x14')]===0x1f4){logger['error'](_0x3230('0xf'),_0x59e71d,_0x49f106[_0x3230('0x13')][_0x3230('0x15')]);return _0x2ebf2f(_0x49f106[_0x3230('0x13')]['message']);}logger[_0x3230('0x13')](_0x3230('0xf'),_0x59e71d,_0x49f106[_0x3230('0x13')]['message']);return _0x26bcd0(_0x49f106[_0x3230('0x13')][_0x3230('0x15')]);}else{logger[_0x3230('0xe')](_0x3230('0xf'),_0x59e71d,_0x3230('0x11'));_0x26bcd0(_0x49f106[_0x3230('0x16')][_0x3230('0x15')]);}})['catch'](function(_0x168a1b){logger['error'](_0x3230('0xf'),_0x59e71d,_0x168a1b);_0x2ebf2f(_0x168a1b);});});}
\ No newline at end of file
index 09df234..f538f93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8757=['/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller','get','isAuthenticated','index'];(function(_0x1550db,_0x1e0b4e){var _0x32b188=function(_0x43b3ce){while(--_0x43b3ce){_0x1550db['push'](_0x1550db['shift']());}};_0x32b188(++_0x1e0b4e);}(_0x8757,0xfe));var _0x7875=function(_0x38414e,_0x1ef507){_0x38414e=_0x38414e-0x0;var _0x1cd9d1=_0x8757[_0x38414e];return _0x1cd9d1;};'use strict';var multer=require('multer');var util=require(_0x7875('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7875('0x1'));var router=express[_0x7875('0x2')]();var fs_extra=require(_0x7875('0x3'));var auth=require(_0x7875('0x4'));var interaction=require(_0x7875('0x5'));var config=require('../../config/environment');var controller=require(_0x7875('0x6'));router[_0x7875('0x7')]('/',auth[_0x7875('0x8')](),controller[_0x7875('0x9')]);router['get'](_0x7875('0xa'),auth[_0x7875('0x8')](),controller[_0x7875('0xb')]);router[_0x7875('0x7')](_0x7875('0xc'),auth['isAuthenticated'](),controller[_0x7875('0xd')]);router[_0x7875('0x7')](_0x7875('0xe'),auth[_0x7875('0x8')](),controller[_0x7875('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x7875('0x10')]);router[_0x7875('0x11')]('/:id/configurations',auth[_0x7875('0x8')](),controller[_0x7875('0x12')]);router[_0x7875('0x13')](_0x7875('0xa'),auth[_0x7875('0x8')](),controller['update']);router['delete'](_0x7875('0xa'),auth['isAuthenticated'](),controller[_0x7875('0x14')]);module[_0x7875('0x15')]=router;
\ No newline at end of file
+var _0x9269=['show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intZohoAccount.controller','isAuthenticated','get','/:id'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9269,0xc6));var _0x9926=function(_0x37a3f3,_0x663b49){_0x37a3f3=_0x37a3f3-0x0;var _0x4da923=_0x9269[_0x37a3f3];return _0x4da923;};'use strict';var multer=require(_0x9926('0x0'));var util=require(_0x9926('0x1'));var path=require(_0x9926('0x2'));var timeout=require(_0x9926('0x3'));var express=require(_0x9926('0x4'));var router=express[_0x9926('0x5')]();var fs_extra=require(_0x9926('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9926('0x7'));var config=require('../../config/environment');var controller=require(_0x9926('0x8'));router['get']('/',auth[_0x9926('0x9')](),controller['index']);router[_0x9926('0xa')](_0x9926('0xb'),auth[_0x9926('0x9')](),controller[_0x9926('0xc')]);router[_0x9926('0xa')](_0x9926('0xd'),auth[_0x9926('0x9')](),controller[_0x9926('0xe')]);router[_0x9926('0xa')](_0x9926('0xf'),auth['isAuthenticated'](),controller[_0x9926('0x10')]);router['post']('/',auth[_0x9926('0x9')](),controller[_0x9926('0x11')]);router[_0x9926('0x12')](_0x9926('0xd'),auth[_0x9926('0x9')](),controller['addConfiguration']);router['put'](_0x9926('0xb'),auth[_0x9926('0x9')](),controller[_0x9926('0x13')]);router['delete'](_0x9926('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x9926('0x14')]=router;
\ No newline at end of file
index d77e733..043aa82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dae=['STRING','sequelize'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2dae,0xc3));var _0xe2da=function(_0x3a3b9e,_0xc59037){_0x3a3b9e=_0x3a3b9e-0x0;var _0x148103=_0x2dae[_0x3a3b9e];return _0x148103;};'use strict';var Sequelize=require(_0xe2da('0x0'));module['exports']={'name':{'type':Sequelize[_0xe2da('0x1')]},'description':{'type':Sequelize[_0xe2da('0x1')]},'host':{'type':Sequelize[_0xe2da('0x1')]},'zone':{'type':Sequelize[_0xe2da('0x1')]},'clientId':{'type':Sequelize[_0xe2da('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xe2da('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0xe2da('0x1')]},'refreshToken':{'type':Sequelize[_0xe2da('0x1')]}};
\ No newline at end of file
+var _0x6c76=['STRING','sequelize','exports'];(function(_0x32d9e6,_0x27021f){var _0x4be812=function(_0x108ac9){while(--_0x108ac9){_0x32d9e6['push'](_0x32d9e6['shift']());}};_0x4be812(++_0x27021f);}(_0x6c76,0x184));var _0x66c7=function(_0xd7b45a,_0x4fe0f0){_0xd7b45a=_0xd7b45a-0x0;var _0x16c83e=_0x6c76[_0xd7b45a];return _0x16c83e;};'use strict';var Sequelize=require(_0x66c7('0x0'));module[_0x66c7('0x1')]={'name':{'type':Sequelize[_0x66c7('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x66c7('0x2')]},'zone':{'type':Sequelize[_0x66c7('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x66c7('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x66c7('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4d1f8b8..d4ee05c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8886=['query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','VIRTUAL','options','then','include','findAll','rows','catch','show','params','create','body','find','getConfigurations','findOne','ZohoConfiguration','length','addConfiguration','AccountId','Subjects','channel','getDescriptions','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','clientId','refresh_token','access_token','host','clientSecret','serverUrl','code','refreshToken','zoho.eu','com','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','WhoId','Call_Result','Call_Start_Time','Call_Type','remove','push','display_label','custom_field','data_type','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','fs-extra','lodash','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','save','update','destroy','stack','name','send','map','ZohoAccount','rawAttributes','type','key','model','keys','intersection'];(function(_0xc77819,_0x139fdc){var _0x1c9434=function(_0x11d15d){while(--_0x11d15d){_0xc77819['push'](_0xc77819['shift']());}};_0x1c9434(++_0x139fdc);}(_0x8886,0xcb));var _0x6888=function(_0x4bced2,_0x48b96c){_0x4bced2=_0x4bced2-0x0;var _0x447e84=_0x8886[_0x4bced2];return _0x447e84;};'use strict';var emlformat=require(_0x6888('0x0'));var rimraf=require(_0x6888('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6888('0x2'));var rp=require(_0x6888('0x3'));var moment=require(_0x6888('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6888('0x5'));var util=require(_0x6888('0x6'));var path=require(_0x6888('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6888('0x8'));var _=require(_0x6888('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6888('0xa'));var deskjs=require(_0x6888('0xb'));var toCsv=require(_0x6888('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6888('0xd'));var authService=require(_0x6888('0xe'));var qs=require(_0x6888('0xf'));var as=require(_0x6888('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6888('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6888('0x12'));var db=require(_0x6888('0x13'))['db'];var integrations=require(_0x6888('0x14'));function respondWithStatusCode(_0x50accd,_0x597990){_0x597990=_0x597990||0xcc;return function(_0x5dafcb){if(_0x5dafcb){return _0x50accd[_0x6888('0x15')](_0x597990);}return _0x50accd[_0x6888('0x16')](_0x597990)[_0x6888('0x17')]();};}function respondWithResult(_0xc04584,_0x2be6f7){_0x2be6f7=_0x2be6f7||0xc8;return function(_0x1d8038){if(_0x1d8038){return _0xc04584['status'](_0x2be6f7)[_0x6888('0x18')](_0x1d8038);}};}function respondWithFilteredResult(_0x172588,_0x30a0d1){return function(_0x1c421e){if(_0x1c421e){var _0x768821=typeof _0x30a0d1[_0x6888('0x19')]==='undefined'&&typeof _0x30a0d1[_0x6888('0x1a')]===_0x6888('0x1b');var _0x228d45=_0x1c421e[_0x6888('0x1c')];var _0x96c693=_0x768821?0x0:_0x30a0d1[_0x6888('0x19')];var _0x59ebec=_0x768821?_0x1c421e[_0x6888('0x1c')]:_0x30a0d1[_0x6888('0x19')]+_0x30a0d1[_0x6888('0x1a')];var _0x2a5307;if(_0x59ebec>=_0x228d45){_0x59ebec=_0x228d45;_0x2a5307=0xc8;}else{_0x2a5307=0xce;}_0x172588[_0x6888('0x16')](_0x2a5307);return _0x172588['set']('Content-Range',_0x96c693+'-'+_0x59ebec+'/'+_0x228d45)[_0x6888('0x18')](_0x1c421e);}return null;};}function patchUpdates(_0x462d06){return function(_0x2d609e){try{jsonpatch[_0x6888('0x1d')](_0x2d609e,_0x462d06,!![]);}catch(_0x46a610){return BPromise[_0x6888('0x1e')](_0x46a610);}return _0x2d609e[_0x6888('0x1f')]();};}function saveUpdates(_0x2113ed,_0x568964){return function(_0x3746a3){if(_0x3746a3){return _0x3746a3[_0x6888('0x20')](_0x2113ed)['then'](function(_0x5ba9ba){return _0x5ba9ba;});}return null;};}function removeEntity(_0x4d13eb,_0x22beeb){return function(_0x3e39fa){if(_0x3e39fa){return _0x3e39fa[_0x6888('0x21')]()['then'](function(){_0x4d13eb[_0x6888('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2525de,_0x462852){return function(_0x3a3f8c){if(!_0x3a3f8c){_0x2525de[_0x6888('0x15')](0x194);}return _0x3a3f8c;};}function handleError(_0x1b1688,_0x132c5a){_0x132c5a=_0x132c5a||0x1f4;return function(_0x518970){logger['error'](_0x518970[_0x6888('0x22')]);if(_0x518970['name']){delete _0x518970[_0x6888('0x23')];}_0x1b1688['status'](_0x132c5a)[_0x6888('0x24')](_0x518970);};}exports['index']=function(_0x1ef01f,_0x236cbd){var _0x221463={},_0x45b979={},_0x19e23a={'count':0x0,'rows':[]};var _0x4fdfc4=_[_0x6888('0x25')](db[_0x6888('0x26')][_0x6888('0x27')],function(_0x2644f1){return{'name':_0x2644f1['fieldName'],'type':_0x2644f1[_0x6888('0x28')][_0x6888('0x29')]};});_0x45b979[_0x6888('0x2a')]=_[_0x6888('0x25')](_0x4fdfc4,_0x6888('0x23'));_0x45b979['query']=_[_0x6888('0x2b')](_0x1ef01f['query']);_0x45b979['filters']=_[_0x6888('0x2c')](_0x45b979[_0x6888('0x2a')],_0x45b979[_0x6888('0x2d')]);_0x221463[_0x6888('0x2e')]=_[_0x6888('0x2c')](_0x45b979[_0x6888('0x2a')],qs[_0x6888('0x2f')](_0x1ef01f[_0x6888('0x2d')][_0x6888('0x2f')]));_0x221463['attributes']=_0x221463[_0x6888('0x2e')]['length']?_0x221463[_0x6888('0x2e')]:_0x45b979[_0x6888('0x2a')];if(!_0x1ef01f[_0x6888('0x2d')][_0x6888('0x30')](_0x6888('0x31'))){_0x221463[_0x6888('0x1a')]=qs['limit'](_0x1ef01f[_0x6888('0x2d')][_0x6888('0x1a')]);_0x221463['offset']=qs[_0x6888('0x19')](_0x1ef01f['query'][_0x6888('0x19')]);}_0x221463[_0x6888('0x32')]=qs[_0x6888('0x33')](_0x1ef01f[_0x6888('0x2d')][_0x6888('0x33')]);_0x221463['where']=qs['filters'](_[_0x6888('0x34')](_0x1ef01f['query'],_0x45b979[_0x6888('0x35')]),_0x4fdfc4);if(_0x1ef01f[_0x6888('0x2d')][_0x6888('0x36')]){_0x221463[_0x6888('0x37')]=_[_0x6888('0x38')](_0x221463[_0x6888('0x37')],{'$or':_[_0x6888('0x25')](_0x4fdfc4,function(_0x34e4a6){if(_0x34e4a6[_0x6888('0x28')]!==_0x6888('0x39')){var _0x2e2f37={};_0x2e2f37[_0x34e4a6[_0x6888('0x23')]]={'$like':'%'+_0x1ef01f[_0x6888('0x2d')][_0x6888('0x36')]+'%'};return _0x2e2f37;}})});}_0x221463=_[_0x6888('0x38')]({},_0x221463,_0x1ef01f[_0x6888('0x3a')]);var _0x3b0499={'where':_0x221463[_0x6888('0x37')]};return db[_0x6888('0x26')][_0x6888('0x1c')](_0x3b0499)[_0x6888('0x3b')](function(_0x39d3b5){_0x19e23a[_0x6888('0x1c')]=_0x39d3b5;if(_0x1ef01f[_0x6888('0x2d')]['includeAll']){_0x221463[_0x6888('0x3c')]=[{'all':!![]}];}return db[_0x6888('0x26')][_0x6888('0x3d')](_0x221463);})[_0x6888('0x3b')](function(_0x4b92d7){_0x19e23a[_0x6888('0x3e')]=_0x4b92d7;return _0x19e23a;})[_0x6888('0x3b')](respondWithFilteredResult(_0x236cbd,_0x221463))[_0x6888('0x3f')](handleError(_0x236cbd,null));};exports[_0x6888('0x40')]=function(_0x103519,_0x4baed9){var _0x47b6f4={'raw':![],'where':{'id':_0x103519[_0x6888('0x41')]['id']}},_0x30f80b={};_0x30f80b['model']=_['keys'](db[_0x6888('0x26')][_0x6888('0x27')]);_0x30f80b[_0x6888('0x2d')]=_[_0x6888('0x2b')](_0x103519['query']);_0x30f80b[_0x6888('0x35')]=_[_0x6888('0x2c')](_0x30f80b[_0x6888('0x2a')],_0x30f80b[_0x6888('0x2d')]);_0x47b6f4[_0x6888('0x2e')]=_[_0x6888('0x2c')](_0x30f80b[_0x6888('0x2a')],qs[_0x6888('0x2f')](_0x103519[_0x6888('0x2d')]['fields']));_0x47b6f4[_0x6888('0x2e')]=_0x47b6f4[_0x6888('0x2e')]['length']?_0x47b6f4[_0x6888('0x2e')]:_0x30f80b[_0x6888('0x2a')];if(_0x103519[_0x6888('0x2d')]['includeAll']){_0x47b6f4[_0x6888('0x3c')]=[{'all':!![]}];}_0x47b6f4=_[_0x6888('0x38')]({},_0x47b6f4,_0x103519[_0x6888('0x3a')]);return db[_0x6888('0x26')]['find'](_0x47b6f4)[_0x6888('0x3b')](handleEntityNotFound(_0x4baed9,null))[_0x6888('0x3b')](respondWithResult(_0x4baed9,null))[_0x6888('0x3f')](handleError(_0x4baed9,null));};exports[_0x6888('0x42')]=function(_0xcb50ff,_0x2dcc16){return db[_0x6888('0x26')]['create'](_0xcb50ff[_0x6888('0x43')],{})[_0x6888('0x3b')](respondWithResult(_0x2dcc16,0xc9))[_0x6888('0x3f')](handleError(_0x2dcc16,null));};exports[_0x6888('0x20')]=function(_0x5a4428,_0x2aeefb){if(_0x5a4428[_0x6888('0x43')]['id']){delete _0x5a4428[_0x6888('0x43')]['id'];}return db[_0x6888('0x26')][_0x6888('0x44')]({'where':{'id':_0x5a4428['params']['id']}})['then'](handleEntityNotFound(_0x2aeefb,null))['then'](saveUpdates(_0x5a4428['body'],null))[_0x6888('0x3b')](respondWithResult(_0x2aeefb,null))[_0x6888('0x3f')](handleError(_0x2aeefb,null));};exports['destroy']=function(_0x580285,_0xdb90c6){return db[_0x6888('0x26')][_0x6888('0x44')]({'where':{'id':_0x580285[_0x6888('0x41')]['id']}})[_0x6888('0x3b')](handleEntityNotFound(_0xdb90c6,null))[_0x6888('0x3b')](removeEntity(_0xdb90c6,null))[_0x6888('0x3f')](handleError(_0xdb90c6,null));};exports[_0x6888('0x45')]=function(_0x475485,_0x36c8fc,_0x31fd9e){var _0x2d15cf={};var _0x3811a2={};var _0x1135f8;var _0x358fe4;return db[_0x6888('0x26')][_0x6888('0x46')]({'where':{'id':_0x475485['params']['id']}})[_0x6888('0x3b')](handleEntityNotFound(_0x36c8fc,null))[_0x6888('0x3b')](function(_0x1d12b9){if(_0x1d12b9){_0x1135f8=_0x1d12b9;_0x3811a2['model']=_[_0x6888('0x2b')](db[_0x6888('0x47')][_0x6888('0x27')]);_0x3811a2[_0x6888('0x2d')]=_[_0x6888('0x2b')](_0x475485[_0x6888('0x2d')]);_0x3811a2[_0x6888('0x35')]=_['intersection'](_0x3811a2['model'],_0x3811a2[_0x6888('0x2d')]);_0x2d15cf['attributes']=_[_0x6888('0x2c')](_0x3811a2[_0x6888('0x2a')],qs[_0x6888('0x2f')](_0x475485['query']['fields']));_0x2d15cf['attributes']=_0x2d15cf[_0x6888('0x2e')][_0x6888('0x48')]?_0x2d15cf['attributes']:_0x3811a2[_0x6888('0x2a')];_0x2d15cf[_0x6888('0x32')]=qs['sort'](_0x475485[_0x6888('0x2d')][_0x6888('0x33')]);_0x2d15cf['where']=qs[_0x6888('0x35')](_['pick'](_0x475485[_0x6888('0x2d')],_0x3811a2[_0x6888('0x35')]));if(_0x475485[_0x6888('0x2d')][_0x6888('0x36')]){_0x2d15cf[_0x6888('0x37')]=_['merge'](_0x2d15cf[_0x6888('0x37')],{'$or':_['map'](_0x2d15cf[_0x6888('0x2e')],function(_0x120434){var _0x3279a5={};_0x3279a5[_0x120434]={'$like':'%'+_0x475485[_0x6888('0x2d')][_0x6888('0x36')]+'%'};return _0x3279a5;})});}_0x2d15cf=_[_0x6888('0x38')]({},_0x2d15cf,_0x475485['options']);return _0x1135f8[_0x6888('0x45')](_0x2d15cf);}})[_0x6888('0x3b')](function(_0x25871d){if(_0x25871d){_0x358fe4=_0x25871d['length'];if(!_0x475485[_0x6888('0x2d')]['hasOwnProperty']('nolimit')){_0x2d15cf[_0x6888('0x1a')]=qs[_0x6888('0x1a')](_0x475485['query'][_0x6888('0x1a')]);_0x2d15cf[_0x6888('0x19')]=qs[_0x6888('0x19')](_0x475485['query'][_0x6888('0x19')]);}return _0x1135f8['getConfigurations'](_0x2d15cf);}})['then'](function(_0x168625){if(_0x168625){return _0x168625?{'count':_0x358fe4,'rows':_0x168625}:null;}})[_0x6888('0x3b')](respondWithResult(_0x36c8fc,null))['catch'](handleError(_0x36c8fc,null));};exports[_0x6888('0x49')]=function(_0x80f803,_0x5608f7,_0x4392d2){if(_0x80f803[_0x6888('0x43')]['id']){delete _0x80f803[_0x6888('0x43')]['id'];}return db[_0x6888('0x26')][_0x6888('0x46')]({'where':{'id':_0x80f803['params']['id']}})[_0x6888('0x3b')](handleEntityNotFound(_0x5608f7,null))[_0x6888('0x3b')](function(_0x2717b8){if(_0x2717b8){_0x80f803[_0x6888('0x43')][_0x6888('0x4a')]=_0x2717b8['id'];_0x80f803['body'][_0x6888('0x4b')]=integrations['getSubjects'](_0x80f803['body'][_0x6888('0x4c')],_0x80f803['body']['type']);_0x80f803[_0x6888('0x43')]['Descriptions']=integrations[_0x6888('0x4d')](_0x80f803[_0x6888('0x43')][_0x6888('0x4c')],_0x80f803['body']['type']);return db[_0x6888('0x47')][_0x6888('0x42')](_0x80f803[_0x6888('0x43')],{'include':[{'model':db[_0x6888('0x4e')],'as':_0x6888('0x4b')},{'model':db[_0x6888('0x4e')],'as':_0x6888('0x4f')}]});}return null;})['then'](respondWithResult(_0x5608f7,null))[_0x6888('0x3f')](handleError(_0x5608f7,null));};function getAccessToken(_0x539582){return new Promise(function(_0x50969e,_0x21df2b){var _0x45d0eb;switch(_0x539582[_0x6888('0x50')]){case'US':_0x45d0eb=_0x6888('0x51');break;case'AU':_0x45d0eb=_0x6888('0x52');break;case'EU':_0x45d0eb=_0x6888('0x53');break;case'IN':_0x45d0eb=_0x6888('0x54');break;case'CN':_0x45d0eb=_0x6888('0x55');break;default:_0x45d0eb=_0x6888('0x53');break;}var _0x26e4c4={'method':_0x6888('0x56'),'uri':_0x45d0eb+'/oauth/v2/token','qs':{'refresh_token':_0x539582['refreshToken'],'client_id':_0x539582[_0x6888('0x57')],'client_secret':_0x539582['clientSecret'],'grant_type':_0x6888('0x58')},'json':!![]};return rp(_0x26e4c4)[_0x6888('0x3b')](function(_0x45ef6c){if(_0x45ef6c[_0x6888('0x59')]){_0x50969e(_0x45ef6c['access_token']);}else{_0x21df2b('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x6888('0x3f')](function(_0x1bfd30){_0x21df2b(_0x1bfd30);});});}exports['getFields']=function(_0x8493f4,_0x12767d,_0x566a81){var _0x1bbdb4,_0xf69142,_0x5b0f15,_0x579e4e,_0x5d51c2;return db[_0x6888('0x26')]['findOne']({'where':{'id':_0x8493f4[_0x6888('0x41')]['id']},'attributes':['id',_0x6888('0x5a'),_0x6888('0x50'),'clientId',_0x6888('0x5b'),_0x6888('0x5c'),_0x6888('0x5d'),_0x6888('0x5e')]})[_0x6888('0x3b')](handleEntityNotFound(_0x12767d,null))[_0x6888('0x3b')](function(_0x2f69bf){_0x5d51c2=_0x2f69bf;_0x1bbdb4=_0x5d51c2[_0x6888('0x5a')];_0xf69142=_0x1bbdb4===_0x6888('0x5f')?'eu':_0x6888('0x60');_0x5b0f15=_0x5d51c2['serverUrl'];var _0x34a516=_0x5b0f15['slice'](-0x1);if(_0x34a516==='/'||_0x34a516==='\x5c'||_0x34a516===':'){_0x5b0f15=_0x5b0f15[_0x6888('0x61')](0x0,_0x5b0f15['lastIndexOf'](_0x34a516));}if(!_0x5d51c2[_0x6888('0x5e')]){throw new Error(_0x6888('0x62'));}return getAccessToken(_0x5d51c2);})[_0x6888('0x3b')](function(_0x53448e){if(_0x53448e){return rp({'method':_0x6888('0x63'),'uri':util[_0x6888('0x64')](_0x6888('0x65'),_0xf69142),'qs':{'module':'Calls'},'headers':{'Authorization':_0x6888('0x66')+_0x53448e},'json':!![]});}})[_0x6888('0x3b')](function(_0x405ded){if(_0x405ded){if(_0x405ded['response']&&_0x405ded[_0x6888('0x67')][_0x6888('0x68')]){throw new Error(_0x405ded[_0x6888('0x67')][_0x6888('0x68')][_0x6888('0x69')]);}var _0x202347=[];var _0x5d0b4a=[];var _0x43e682=[_0x6888('0x6a'),_0x6888('0x6b'),'Description',_0x6888('0x6c'),'Call_Duration',_0x6888('0x6d'),_0x6888('0x6e'),_0x6888('0x6f')];_0x5d0b4a=_[_0x6888('0x70')](_0x405ded[_0x6888('0x2f')],function(_0x23e987){return _0x43e682['includes'](_0x23e987['api_name']);});for(var _0x4ad70c=0x0;_0x4ad70c<_0x5d0b4a['length'];_0x4ad70c++){if(_0x5d0b4a[_0x4ad70c]['system_mandatory']===![]){_0x202347[_0x6888('0x71')]({'id':_0x5d0b4a[_0x4ad70c]['id'],'name':_0x5d0b4a[_0x4ad70c][_0x6888('0x72')],'custom':_0x5d0b4a[_0x4ad70c][_0x6888('0x73')],'options':_0x5d0b4a[_0x4ad70c][_0x6888('0x74')]==='picklist'&&_0x5d0b4a[_0x4ad70c][_0x6888('0x75')][_0x6888('0x48')]>-0x1?_['map'](_0x5d0b4a[_0x4ad70c][_0x6888('0x75')],function(_0x520fa5){return{'name':_0x520fa5,'value':_0x520fa5};}):[]});}}return{'count':_0x202347['length'],'rows':_0x202347};}else{return{'count':0x0,'rows':[]};}})[_0x6888('0x3b')](respondWithResult(_0x12767d,null))[_0x6888('0x3f')](function(_0x21d64d){var _0x5cef82=_0x8493f4[_0x6888('0x2d')][_0x6888('0x76')]?0x1f4:_0x21d64d[_0x6888('0x77')]||0x1f4;logger['error'](_0x6888('0x78'),_0x6888('0x79'),_0x5cef82,JSON[_0x6888('0x7a')](_0x21d64d));delete _0x21d64d[_0x6888('0x23')];if(_0x5cef82===0x191){_0x5cef82=0x190;}_0x12767d[_0x6888('0x16')](_0x5cef82)[_0x6888('0x24')](_0x8493f4['query'][_0x6888('0x76')]?{'message':_0x6888('0x7b'),'statusCode':_0x21d64d[_0x6888('0x77')]}:_0x21d64d);});};
\ No newline at end of file
+var _0xafea=['create','body','getConfigurations','findOne','ZohoConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','serverUrl','code','zoho.eu','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','Zoho-oauthtoken\x20','response','message','Subject','Description','WhoId','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','display_label','custom_field','data_type','pick_list_values','test','statusCode','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','error','stack','name','send','index','ZohoAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','map','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','find'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0xafea,0x138));var _0xaafe=function(_0x2ab0c8,_0x30e85c){_0x2ab0c8=_0x2ab0c8-0x0;var _0x505d0e=_0xafea[_0x2ab0c8];return _0x505d0e;};'use strict';var emlformat=require(_0xaafe('0x0'));var rimraf=require(_0xaafe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaafe('0x2'));var rp=require(_0xaafe('0x3'));var moment=require(_0xaafe('0x4'));var BPromise=require(_0xaafe('0x5'));var Mustache=require(_0xaafe('0x6'));var util=require(_0xaafe('0x7'));var path=require('path');var sox=require(_0xaafe('0x8'));var csv=require(_0xaafe('0x9'));var ejs=require(_0xaafe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaafe('0xb'));var squel=require(_0xaafe('0xc'));var crypto=require(_0xaafe('0xd'));var jsforce=require(_0xaafe('0xe'));var deskjs=require(_0xaafe('0xf'));var toCsv=require(_0xaafe('0x9'));var querystring=require(_0xaafe('0x10'));var Papa=require(_0xaafe('0x11'));var Redis=require(_0xaafe('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xaafe('0x13'));var as=require(_0xaafe('0x14'));var hardwareService=require(_0xaafe('0x15'));var logger=require('../../config/logger')(_0xaafe('0x16'));var utils=require(_0xaafe('0x17'));var config=require(_0xaafe('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xaafe('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3fdbb8,_0x521bdb){_0x521bdb=_0x521bdb||0xcc;return function(_0x297e05){if(_0x297e05){return _0x3fdbb8[_0xaafe('0x1a')](_0x521bdb);}return _0x3fdbb8[_0xaafe('0x1b')](_0x521bdb)[_0xaafe('0x1c')]();};}function respondWithResult(_0x1d9ad2,_0x1601c7){_0x1601c7=_0x1601c7||0xc8;return function(_0x3d8ca9){if(_0x3d8ca9){return _0x1d9ad2['status'](_0x1601c7)[_0xaafe('0x1d')](_0x3d8ca9);}};}function respondWithFilteredResult(_0x10012b,_0x5c8a0e){return function(_0x271f76){if(_0x271f76){var _0x5d0c7c=typeof _0x5c8a0e['offset']===_0xaafe('0x1e')&&typeof _0x5c8a0e[_0xaafe('0x1f')]==='undefined';var _0x3cc0b9=_0x271f76[_0xaafe('0x20')];var _0x360c6c=_0x5d0c7c?0x0:_0x5c8a0e['offset'];var _0x1e3acb=_0x5d0c7c?_0x271f76[_0xaafe('0x20')]:_0x5c8a0e[_0xaafe('0x21')]+_0x5c8a0e[_0xaafe('0x1f')];var _0x2d3f3d;if(_0x1e3acb>=_0x3cc0b9){_0x1e3acb=_0x3cc0b9;_0x2d3f3d=0xc8;}else{_0x2d3f3d=0xce;}_0x10012b['status'](_0x2d3f3d);return _0x10012b[_0xaafe('0x22')](_0xaafe('0x23'),_0x360c6c+'-'+_0x1e3acb+'/'+_0x3cc0b9)['json'](_0x271f76);}return null;};}function patchUpdates(_0x5034df){return function(_0x358059){try{jsonpatch['apply'](_0x358059,_0x5034df,!![]);}catch(_0x16d663){return BPromise['reject'](_0x16d663);}return _0x358059[_0xaafe('0x24')]();};}function saveUpdates(_0x12c613,_0x34a0f1){return function(_0x46cc6a){if(_0x46cc6a){return _0x46cc6a[_0xaafe('0x25')](_0x12c613)[_0xaafe('0x26')](function(_0x3d992f){return _0x3d992f;});}return null;};}function removeEntity(_0xb3ff4d,_0x172606){return function(_0x155c73){if(_0x155c73){return _0x155c73[_0xaafe('0x27')]()[_0xaafe('0x26')](function(){_0xb3ff4d[_0xaafe('0x1b')](0xcc)[_0xaafe('0x1c')]();});}};}function handleEntityNotFound(_0x336606,_0x38cf6c){return function(_0x22132c){if(!_0x22132c){_0x336606[_0xaafe('0x1a')](0x194);}return _0x22132c;};}function handleError(_0x30d958,_0x33fc1a){_0x33fc1a=_0x33fc1a||0x1f4;return function(_0x10aa98){logger[_0xaafe('0x28')](_0x10aa98[_0xaafe('0x29')]);if(_0x10aa98[_0xaafe('0x2a')]){delete _0x10aa98[_0xaafe('0x2a')];}_0x30d958[_0xaafe('0x1b')](_0x33fc1a)[_0xaafe('0x2b')](_0x10aa98);};}exports[_0xaafe('0x2c')]=function(_0x29e65c,_0x3c4df){var _0x42b1af={},_0x3663c8={},_0x3df6ec={'count':0x0,'rows':[]};var _0x56324c=_['map'](db[_0xaafe('0x2d')][_0xaafe('0x2e')],function(_0x421d83){return{'name':_0x421d83[_0xaafe('0x2f')],'type':_0x421d83['type'][_0xaafe('0x30')]};});_0x3663c8[_0xaafe('0x31')]=_['map'](_0x56324c,_0xaafe('0x2a'));_0x3663c8[_0xaafe('0x32')]=_[_0xaafe('0x33')](_0x29e65c[_0xaafe('0x32')]);_0x3663c8[_0xaafe('0x34')]=_[_0xaafe('0x35')](_0x3663c8['model'],_0x3663c8['query']);_0x42b1af['attributes']=_[_0xaafe('0x35')](_0x3663c8[_0xaafe('0x31')],qs[_0xaafe('0x36')](_0x29e65c[_0xaafe('0x32')][_0xaafe('0x36')]));_0x42b1af[_0xaafe('0x37')]=_0x42b1af[_0xaafe('0x37')][_0xaafe('0x38')]?_0x42b1af[_0xaafe('0x37')]:_0x3663c8['model'];if(!_0x29e65c[_0xaafe('0x32')]['hasOwnProperty'](_0xaafe('0x39'))){_0x42b1af['limit']=qs['limit'](_0x29e65c[_0xaafe('0x32')][_0xaafe('0x1f')]);_0x42b1af[_0xaafe('0x21')]=qs[_0xaafe('0x21')](_0x29e65c[_0xaafe('0x32')][_0xaafe('0x21')]);}_0x42b1af[_0xaafe('0x3a')]=qs[_0xaafe('0x3b')](_0x29e65c[_0xaafe('0x32')]['sort']);_0x42b1af[_0xaafe('0x3c')]=qs[_0xaafe('0x34')](_[_0xaafe('0x3d')](_0x29e65c['query'],_0x3663c8[_0xaafe('0x34')]),_0x56324c);if(_0x29e65c[_0xaafe('0x32')]['filter']){_0x42b1af[_0xaafe('0x3c')]=_[_0xaafe('0x3e')](_0x42b1af[_0xaafe('0x3c')],{'$or':_[_0xaafe('0x3f')](_0x56324c,function(_0x2a7bd5){if(_0x2a7bd5[_0xaafe('0x40')]!==_0xaafe('0x41')){var _0x3bed90={};_0x3bed90[_0x2a7bd5[_0xaafe('0x2a')]]={'$like':'%'+_0x29e65c[_0xaafe('0x32')][_0xaafe('0x42')]+'%'};return _0x3bed90;}})});}_0x42b1af=_[_0xaafe('0x3e')]({},_0x42b1af,_0x29e65c[_0xaafe('0x43')]);var _0x41e02a={'where':_0x42b1af[_0xaafe('0x3c')]};return db[_0xaafe('0x2d')][_0xaafe('0x20')](_0x41e02a)[_0xaafe('0x26')](function(_0x5f1d9b){_0x3df6ec[_0xaafe('0x20')]=_0x5f1d9b;if(_0x29e65c['query'][_0xaafe('0x44')]){_0x42b1af[_0xaafe('0x45')]=[{'all':!![]}];}return db[_0xaafe('0x2d')][_0xaafe('0x46')](_0x42b1af);})[_0xaafe('0x26')](function(_0x6b541a){_0x3df6ec[_0xaafe('0x47')]=_0x6b541a;return _0x3df6ec;})[_0xaafe('0x26')](respondWithFilteredResult(_0x3c4df,_0x42b1af))[_0xaafe('0x48')](handleError(_0x3c4df,null));};exports['show']=function(_0x1f8642,_0x164039){var _0x4da64a={'raw':![],'where':{'id':_0x1f8642[_0xaafe('0x49')]['id']}},_0xb142a4={};_0xb142a4[_0xaafe('0x31')]=_[_0xaafe('0x33')](db[_0xaafe('0x2d')][_0xaafe('0x2e')]);_0xb142a4['query']=_[_0xaafe('0x33')](_0x1f8642[_0xaafe('0x32')]);_0xb142a4[_0xaafe('0x34')]=_[_0xaafe('0x35')](_0xb142a4[_0xaafe('0x31')],_0xb142a4[_0xaafe('0x32')]);_0x4da64a[_0xaafe('0x37')]=_[_0xaafe('0x35')](_0xb142a4[_0xaafe('0x31')],qs[_0xaafe('0x36')](_0x1f8642[_0xaafe('0x32')][_0xaafe('0x36')]));_0x4da64a[_0xaafe('0x37')]=_0x4da64a[_0xaafe('0x37')][_0xaafe('0x38')]?_0x4da64a['attributes']:_0xb142a4[_0xaafe('0x31')];if(_0x1f8642['query'][_0xaafe('0x44')]){_0x4da64a['include']=[{'all':!![]}];}_0x4da64a=_[_0xaafe('0x3e')]({},_0x4da64a,_0x1f8642[_0xaafe('0x43')]);return db[_0xaafe('0x2d')][_0xaafe('0x4a')](_0x4da64a)[_0xaafe('0x26')](handleEntityNotFound(_0x164039,null))[_0xaafe('0x26')](respondWithResult(_0x164039,null))[_0xaafe('0x48')](handleError(_0x164039,null));};exports['create']=function(_0x131974,_0xddfa1a){return db[_0xaafe('0x2d')][_0xaafe('0x4b')](_0x131974[_0xaafe('0x4c')],{})['then'](respondWithResult(_0xddfa1a,0xc9))[_0xaafe('0x48')](handleError(_0xddfa1a,null));};exports[_0xaafe('0x25')]=function(_0x3a7ca2,_0x2f10ee){if(_0x3a7ca2[_0xaafe('0x4c')]['id']){delete _0x3a7ca2[_0xaafe('0x4c')]['id'];}return db[_0xaafe('0x2d')]['find']({'where':{'id':_0x3a7ca2[_0xaafe('0x49')]['id']}})[_0xaafe('0x26')](handleEntityNotFound(_0x2f10ee,null))[_0xaafe('0x26')](saveUpdates(_0x3a7ca2[_0xaafe('0x4c')],null))[_0xaafe('0x26')](respondWithResult(_0x2f10ee,null))[_0xaafe('0x48')](handleError(_0x2f10ee,null));};exports[_0xaafe('0x27')]=function(_0xb24931,_0x13b8f7){return db[_0xaafe('0x2d')]['find']({'where':{'id':_0xb24931[_0xaafe('0x49')]['id']}})['then'](handleEntityNotFound(_0x13b8f7,null))[_0xaafe('0x26')](removeEntity(_0x13b8f7,null))[_0xaafe('0x48')](handleError(_0x13b8f7,null));};exports[_0xaafe('0x4d')]=function(_0x3b49b4,_0x1e0458,_0x323fb8){var _0x31d69e={};var _0x48c5d8={};var _0x58eb8b;var _0x3a1226;return db['ZohoAccount'][_0xaafe('0x4e')]({'where':{'id':_0x3b49b4[_0xaafe('0x49')]['id']}})[_0xaafe('0x26')](handleEntityNotFound(_0x1e0458,null))[_0xaafe('0x26')](function(_0x3be946){if(_0x3be946){_0x58eb8b=_0x3be946;_0x48c5d8[_0xaafe('0x31')]=_['keys'](db[_0xaafe('0x4f')][_0xaafe('0x2e')]);_0x48c5d8[_0xaafe('0x32')]=_[_0xaafe('0x33')](_0x3b49b4['query']);_0x48c5d8['filters']=_['intersection'](_0x48c5d8[_0xaafe('0x31')],_0x48c5d8[_0xaafe('0x32')]);_0x31d69e['attributes']=_[_0xaafe('0x35')](_0x48c5d8[_0xaafe('0x31')],qs['fields'](_0x3b49b4[_0xaafe('0x32')]['fields']));_0x31d69e[_0xaafe('0x37')]=_0x31d69e['attributes']['length']?_0x31d69e[_0xaafe('0x37')]:_0x48c5d8[_0xaafe('0x31')];_0x31d69e[_0xaafe('0x3a')]=qs[_0xaafe('0x3b')](_0x3b49b4[_0xaafe('0x32')][_0xaafe('0x3b')]);_0x31d69e['where']=qs[_0xaafe('0x34')](_[_0xaafe('0x3d')](_0x3b49b4[_0xaafe('0x32')],_0x48c5d8[_0xaafe('0x34')]));if(_0x3b49b4[_0xaafe('0x32')][_0xaafe('0x42')]){_0x31d69e[_0xaafe('0x3c')]=_['merge'](_0x31d69e[_0xaafe('0x3c')],{'$or':_[_0xaafe('0x3f')](_0x31d69e['attributes'],function(_0x32cb31){var _0x491f23={};_0x491f23[_0x32cb31]={'$like':'%'+_0x3b49b4['query'][_0xaafe('0x42')]+'%'};return _0x491f23;})});}_0x31d69e=_[_0xaafe('0x3e')]({},_0x31d69e,_0x3b49b4[_0xaafe('0x43')]);return _0x58eb8b['getConfigurations'](_0x31d69e);}})['then'](function(_0x4d0ad9){if(_0x4d0ad9){_0x3a1226=_0x4d0ad9['length'];if(!_0x3b49b4[_0xaafe('0x32')][_0xaafe('0x50')](_0xaafe('0x39'))){_0x31d69e[_0xaafe('0x1f')]=qs[_0xaafe('0x1f')](_0x3b49b4[_0xaafe('0x32')][_0xaafe('0x1f')]);_0x31d69e[_0xaafe('0x21')]=qs[_0xaafe('0x21')](_0x3b49b4[_0xaafe('0x32')]['offset']);}return _0x58eb8b[_0xaafe('0x4d')](_0x31d69e);}})['then'](function(_0x6f5171){if(_0x6f5171){return _0x6f5171?{'count':_0x3a1226,'rows':_0x6f5171}:null;}})[_0xaafe('0x26')](respondWithResult(_0x1e0458,null))['catch'](handleError(_0x1e0458,null));};exports[_0xaafe('0x51')]=function(_0x595d1f,_0x3dcd33,_0x45a81e){if(_0x595d1f[_0xaafe('0x4c')]['id']){delete _0x595d1f[_0xaafe('0x4c')]['id'];}return db[_0xaafe('0x2d')][_0xaafe('0x4e')]({'where':{'id':_0x595d1f['params']['id']}})[_0xaafe('0x26')](handleEntityNotFound(_0x3dcd33,null))[_0xaafe('0x26')](function(_0x682251){if(_0x682251){_0x595d1f[_0xaafe('0x4c')][_0xaafe('0x52')]=_0x682251['id'];_0x595d1f[_0xaafe('0x4c')][_0xaafe('0x53')]=integrations[_0xaafe('0x54')](_0x595d1f[_0xaafe('0x4c')][_0xaafe('0x55')],_0x595d1f[_0xaafe('0x4c')][_0xaafe('0x40')]);_0x595d1f['body'][_0xaafe('0x56')]=integrations[_0xaafe('0x57')](_0x595d1f[_0xaafe('0x4c')][_0xaafe('0x55')],_0x595d1f[_0xaafe('0x4c')][_0xaafe('0x40')]);return db[_0xaafe('0x4f')]['create'](_0x595d1f['body'],{'include':[{'model':db['ZohoField'],'as':_0xaafe('0x53')},{'model':db[_0xaafe('0x58')],'as':'Descriptions'}]});}return null;})[_0xaafe('0x26')](respondWithResult(_0x3dcd33,null))[_0xaafe('0x48')](handleError(_0x3dcd33,null));};function getAccessToken(_0x227a78){return new Promise(function(_0x619c5f,_0x386e87){var _0x220538;switch(_0x227a78[_0xaafe('0x59')]){case'US':_0x220538='https://accounts.zoho.com';break;case'AU':_0x220538=_0xaafe('0x5a');break;case'EU':_0x220538=_0xaafe('0x5b');break;case'IN':_0x220538=_0xaafe('0x5c');break;case'CN':_0x220538=_0xaafe('0x5d');break;default:_0x220538=_0xaafe('0x5b');break;}var _0x6f9ea2={'method':'POST','uri':_0x220538+'/oauth/v2/token','qs':{'refresh_token':_0x227a78[_0xaafe('0x5e')],'client_id':_0x227a78['clientId'],'client_secret':_0x227a78[_0xaafe('0x5f')],'grant_type':_0xaafe('0x60')},'json':!![]};return rp(_0x6f9ea2)[_0xaafe('0x26')](function(_0x245b4d){if(_0x245b4d[_0xaafe('0x61')]){_0x619c5f(_0x245b4d['access_token']);}else{_0x386e87(_0xaafe('0x62'));}})[_0xaafe('0x48')](function(_0x697bcd){_0x386e87(_0x697bcd);});});}exports[_0xaafe('0x63')]=function(_0x290067,_0x27c3cd,_0x33ae68){var _0x24d5f9,_0x201a14,_0x5963a2,_0x2dd1f7,_0x598472;return db['ZohoAccount'][_0xaafe('0x4e')]({'where':{'id':_0x290067['params']['id']},'attributes':['id',_0xaafe('0x64'),_0xaafe('0x59'),_0xaafe('0x65'),'clientSecret',_0xaafe('0x66'),_0xaafe('0x67'),_0xaafe('0x5e')]})[_0xaafe('0x26')](handleEntityNotFound(_0x27c3cd,null))[_0xaafe('0x26')](function(_0x4e408d){_0x598472=_0x4e408d;_0x24d5f9=_0x598472[_0xaafe('0x64')];_0x201a14=_0x24d5f9===_0xaafe('0x68')?'eu':'com';_0x5963a2=_0x598472[_0xaafe('0x66')];var _0x3029ec=_0x5963a2[_0xaafe('0x69')](-0x1);if(_0x3029ec==='/'||_0x3029ec==='\x5c'||_0x3029ec===':'){_0x5963a2=_0x5963a2[_0xaafe('0x6a')](0x0,_0x5963a2[_0xaafe('0x6b')](_0x3029ec));}if(!_0x598472[_0xaafe('0x5e')]){throw new Error(_0xaafe('0x6c'));}return getAccessToken(_0x598472);})[_0xaafe('0x26')](function(_0x3efa0d){if(_0x3efa0d){return rp({'method':'GET','uri':util[_0xaafe('0x6d')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x201a14),'qs':{'module':'Calls'},'headers':{'Authorization':_0xaafe('0x6e')+_0x3efa0d},'json':!![]});}})['then'](function(_0x45d59a){if(_0x45d59a){if(_0x45d59a[_0xaafe('0x6f')]&&_0x45d59a[_0xaafe('0x6f')][_0xaafe('0x28')]){throw new Error(_0x45d59a[_0xaafe('0x6f')]['error'][_0xaafe('0x70')]);}var _0x514d2c=[];var _0x3737cf=[];var _0x45d515=['Owner',_0xaafe('0x71'),_0xaafe('0x72'),_0xaafe('0x73'),'Call_Duration',_0xaafe('0x74'),_0xaafe('0x75'),_0xaafe('0x76')];_0x3737cf=_[_0xaafe('0x77')](_0x45d59a['fields'],function(_0x55c1e5){return _0x45d515[_0xaafe('0x78')](_0x55c1e5[_0xaafe('0x79')]);});for(var _0x492a8c=0x0;_0x492a8c<_0x3737cf[_0xaafe('0x38')];_0x492a8c++){if(_0x3737cf[_0x492a8c]['system_mandatory']===![]){_0x514d2c['push']({'id':_0x3737cf[_0x492a8c]['id'],'name':_0x3737cf[_0x492a8c][_0xaafe('0x7a')],'custom':_0x3737cf[_0x492a8c][_0xaafe('0x7b')],'options':_0x3737cf[_0x492a8c][_0xaafe('0x7c')]==='picklist'&&_0x3737cf[_0x492a8c]['pick_list_values'][_0xaafe('0x38')]>-0x1?_['map'](_0x3737cf[_0x492a8c][_0xaafe('0x7d')],function(_0x222603){return{'name':_0x222603,'value':_0x222603};}):[]});}}return{'count':_0x514d2c[_0xaafe('0x38')],'rows':_0x514d2c};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x27c3cd,null))[_0xaafe('0x48')](function(_0x4496dd){var _0x1571cf=_0x290067['query'][_0xaafe('0x7e')]?0x1f4:_0x4496dd[_0xaafe('0x7f')]||0x1f4;logger[_0xaafe('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0xaafe('0x63'),_0x1571cf,JSON['stringify'](_0x4496dd));delete _0x4496dd['name'];if(_0x1571cf===0x191){_0x1571cf=0x190;}_0x27c3cd[_0xaafe('0x1b')](_0x1571cf)['send'](_0x290067[_0xaafe('0x32')][_0xaafe('0x7e')]?{'message':_0xaafe('0x80'),'statusCode':_0x4496dd[_0xaafe('0x7f')]}:_0x4496dd);});};
\ No newline at end of file
index a7b70b8..e2457f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe50d=['application/x-www-form-urlencoded','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intZohoAccount.attributes','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','then','parse','refresh_token','format','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch'];(function(_0x48ad0a,_0x4bfc8c){var _0x5befe5=function(_0x29c533){while(--_0x29c533){_0x48ad0a['push'](_0x48ad0a['shift']());}};_0x5befe5(++_0x4bfc8c);}(_0xe50d,0x191));var _0xde50=function(_0x47d2c8,_0x38d72d){_0x47d2c8=_0x47d2c8-0x0;var _0x139cb8=_0xe50d[_0x47d2c8];return _0x139cb8;};'use strict';var _=require('lodash');var util=require(_0xde50('0x0'));var logger=require(_0xde50('0x1'))(_0xde50('0x2'));var moment=require(_0xde50('0x3'));var BPromise=require(_0xde50('0x4'));var rp=require(_0xde50('0x5'));var fs=require('fs');var path=require(_0xde50('0x6'));var rimraf=require('rimraf');var config=require(_0xde50('0x7'));var attributes=require(_0xde50('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xde50('0x9')]=function(_0x324341,_0x5a8319){return _0x324341[_0xde50('0xa')](_0xde50('0xb'),attributes,{'tableName':_0xde50('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x547b70,_0x3f1dfd,_0x4e87f3){if(_0x547b70[_0xde50('0xd')](_0xde50('0xe'))||_0x547b70[_0xde50('0xd')](_0xde50('0xf'))||_0x547b70[_0xde50('0xd')](_0xde50('0x10'))||_0x547b70[_0xde50('0xd')](_0xde50('0x11'))||_0x547b70[_0xde50('0xd')](_0xde50('0x12'))||_0x547b70['changed'](_0xde50('0x13'))){var _0x47737e,_0x44f526;_0x47737e=_0x547b70[_0xde50('0xf')];var _0x2409fe=_0x47737e[_0xde50('0x14')](-0x1);if(_0x2409fe==='/'||_0x2409fe==='\x5c'||_0x2409fe===':'){_0x47737e=_0x47737e[_0xde50('0x15')](0x0,_0x47737e[_0xde50('0x16')](_0x2409fe));}switch(_0x547b70[_0xde50('0xe')]){case'US':_0x44f526=_0xde50('0x17');break;case'AU':_0x44f526=_0xde50('0x18');break;case'IN':_0x44f526=_0xde50('0x19');break;case'CN':_0x44f526=_0xde50('0x1a');break;default:_0x44f526=_0xde50('0x1b');break;}var _0x2421dc={'method':_0xde50('0x1c'),'uri':_0x44f526+_0xde50('0x1d'),'form':{'grant_type':_0xde50('0x1e'),'client_id':_0x547b70['clientId'],'client_secret':_0x547b70[_0xde50('0x11')],'redirect_uri':_0x547b70[_0xde50('0xf')],'code':_0x547b70['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x2421dc)[_0xde50('0x1f')](function(_0x24ada4){var _0x3ba2df=JSON[_0xde50('0x20')](_0x24ada4);if(_0x3ba2df[_0xde50('0x21')]){_0x547b70['refreshToken']=_0x3ba2df[_0xde50('0x21')];logger['info'](util[_0xde50('0x22')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x547b70[_0xde50('0x23')],_0x547b70['id']));}else{logger[_0xde50('0x24')](util[_0xde50('0x22')](_0xde50('0x25'),_0x547b70[_0xde50('0x23')],_0x547b70['id']),util['inspect'](_0x3ba2df,{'showHidden':![],'depth':null}));}return _0x4e87f3(null,_0x3f1dfd);})[_0xde50('0x26')](function(_0x58a352){logger['error'](util['format'](_0xde50('0x25'),_0x547b70[_0xde50('0x23')],_0x547b70['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x4e87f3(_0x58a352);});}else{return _0x4e87f3(null,_0x3f1dfd);}},'beforeUpdate':function(_0xe5070,_0x191562,_0x58f76a){if(_0xe5070[_0xde50('0xd')](_0xde50('0xe'))||_0xe5070[_0xde50('0xd')](_0xde50('0xf'))||_0xe5070[_0xde50('0xd')](_0xde50('0x10'))||_0xe5070['changed'](_0xde50('0x11'))||_0xe5070[_0xde50('0xd')](_0xde50('0x12'))||_0xe5070['changed'](_0xde50('0x13'))){var _0x1b790e,_0x4c0024;_0x1b790e=_0xe5070[_0xde50('0xf')];var _0x22f272=_0x1b790e[_0xde50('0x14')](-0x1);if(_0x22f272==='/'||_0x22f272==='\x5c'||_0x22f272===':'){_0x1b790e=_0x1b790e['substring'](0x0,_0x1b790e[_0xde50('0x16')](_0x22f272));}switch(_0xe5070[_0xde50('0xe')]){case'US':_0x4c0024='https://accounts.zoho.com';break;case'AU':_0x4c0024=_0xde50('0x18');break;case'IN':_0x4c0024='https://accounts.zoho.in';break;case'CN':_0x4c0024=_0xde50('0x1a');break;default:_0x4c0024=_0xde50('0x1b');break;}var _0x4f7ba6={'method':_0xde50('0x1c'),'uri':_0x4c0024+_0xde50('0x1d'),'form':{'grant_type':_0xde50('0x1e'),'client_id':_0xe5070['clientId'],'client_secret':_0xe5070['clientSecret'],'redirect_uri':_0xe5070[_0xde50('0xf')],'code':_0xe5070[_0xde50('0x12')]},'headers':{'Content-Type':_0xde50('0x27')}};return rp(_0x4f7ba6)['then'](function(_0x49b924){var _0x265f20=JSON[_0xde50('0x20')](_0x49b924);if(_0x265f20['refresh_token']){_0xe5070[_0xde50('0x28')]=_0x265f20[_0xde50('0x21')];logger[_0xde50('0x29')](util[_0xde50('0x22')](_0xde50('0x2a'),_0xe5070['name'],_0xe5070['id']));}else{logger['error'](util['format'](_0xde50('0x25'),_0xe5070[_0xde50('0x23')],_0xe5070['id']),util[_0xde50('0x2b')](_0x265f20,{'showHidden':![],'depth':null}));}return _0x58f76a(null,_0x191562);})[_0xde50('0x26')](function(_0x4dcbd6){logger[_0xde50('0x24')](util[_0xde50('0x22')](_0xde50('0x25'),_0xe5070['name'],_0xe5070['id']),util[_0xde50('0x2b')](parsedResult,{'showHidden':![],'depth':null}));return _0x58f76a(_0x4dcbd6);});}else{return _0x58f76a(null,_0x191562);}}}});};
\ No newline at end of file
+var _0x27a8=['rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','clientId','clientSecret','code','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info','format','name','inspect','catch','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','host','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.in','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x37bf85,_0x18de06){var _0xf4dd50=function(_0x490bdf){while(--_0x490bdf){_0x37bf85['push'](_0x37bf85['shift']());}};_0xf4dd50(++_0x18de06);}(_0x27a8,0x133));var _0x827a=function(_0x16060f,_0x8435e3){_0x16060f=_0x16060f-0x0;var _0x4409ab=_0x27a8[_0x16060f];return _0x4409ab;};'use strict';var _=require(_0x827a('0x0'));var util=require(_0x827a('0x1'));var logger=require(_0x827a('0x2'))(_0x827a('0x3'));var moment=require(_0x827a('0x4'));var BPromise=require(_0x827a('0x5'));var rp=require(_0x827a('0x6'));var fs=require('fs');var path=require(_0x827a('0x7'));var rimraf=require(_0x827a('0x8'));var config=require('../../config/environment');var attributes=require(_0x827a('0x9'));var integrations=require(_0x827a('0xa'));module[_0x827a('0xb')]=function(_0x461692,_0x481016){return _0x461692[_0x827a('0xc')](_0x827a('0xd'),attributes,{'tableName':_0x827a('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2b18c8,_0x22529e,_0xd9548){if(_0x2b18c8[_0x827a('0xf')]('zone')||_0x2b18c8[_0x827a('0xf')](_0x827a('0x10'))||_0x2b18c8[_0x827a('0xf')](_0x827a('0x11'))||_0x2b18c8['changed'](_0x827a('0x12'))||_0x2b18c8[_0x827a('0xf')](_0x827a('0x13'))||_0x2b18c8[_0x827a('0xf')]('host')){var _0x28a921,_0x317520;_0x28a921=_0x2b18c8[_0x827a('0x10')];var _0x30a5ed=_0x28a921[_0x827a('0x14')](-0x1);if(_0x30a5ed==='/'||_0x30a5ed==='\x5c'||_0x30a5ed===':'){_0x28a921=_0x28a921[_0x827a('0x15')](0x0,_0x28a921['lastIndexOf'](_0x30a5ed));}switch(_0x2b18c8['zone']){case'US':_0x317520=_0x827a('0x16');break;case'AU':_0x317520='https://accounts.zoho.com.au';break;case'IN':_0x317520='https://accounts.zoho.in';break;case'CN':_0x317520=_0x827a('0x17');break;default:_0x317520=_0x827a('0x18');break;}var _0x571407={'method':_0x827a('0x19'),'uri':_0x317520+_0x827a('0x1a'),'form':{'grant_type':_0x827a('0x1b'),'client_id':_0x2b18c8[_0x827a('0x11')],'client_secret':_0x2b18c8[_0x827a('0x12')],'redirect_uri':_0x2b18c8['serverUrl'],'code':_0x2b18c8[_0x827a('0x13')]},'headers':{'Content-Type':_0x827a('0x1c')}};return rp(_0x571407)[_0x827a('0x1d')](function(_0x5457db){var _0x2980b6=JSON[_0x827a('0x1e')](_0x5457db);if(_0x2980b6[_0x827a('0x1f')]){_0x2b18c8[_0x827a('0x20')]=_0x2980b6[_0x827a('0x1f')];logger[_0x827a('0x21')](util[_0x827a('0x22')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2b18c8[_0x827a('0x23')],_0x2b18c8['id']));}else{logger['error'](util[_0x827a('0x22')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2b18c8[_0x827a('0x23')],_0x2b18c8['id']),util[_0x827a('0x24')](_0x2980b6,{'showHidden':![],'depth':null}));}return _0xd9548(null,_0x22529e);})[_0x827a('0x25')](function(_0x110cce){logger[_0x827a('0x26')](util[_0x827a('0x22')](_0x827a('0x27'),_0x2b18c8['name'],_0x2b18c8['id']),util[_0x827a('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0xd9548(_0x110cce);});}else{return _0xd9548(null,_0x22529e);}},'beforeUpdate':function(_0x42c231,_0x363b44,_0x3a1d2b){if(_0x42c231[_0x827a('0xf')]('zone')||_0x42c231[_0x827a('0xf')](_0x827a('0x10'))||_0x42c231[_0x827a('0xf')](_0x827a('0x11'))||_0x42c231[_0x827a('0xf')]('clientSecret')||_0x42c231[_0x827a('0xf')](_0x827a('0x13'))||_0x42c231[_0x827a('0xf')](_0x827a('0x28'))){var _0x308b66,_0x2124c3;_0x308b66=_0x42c231[_0x827a('0x10')];var _0x52785e=_0x308b66[_0x827a('0x14')](-0x1);if(_0x52785e==='/'||_0x52785e==='\x5c'||_0x52785e===':'){_0x308b66=_0x308b66[_0x827a('0x15')](0x0,_0x308b66[_0x827a('0x29')](_0x52785e));}switch(_0x42c231['zone']){case'US':_0x2124c3=_0x827a('0x16');break;case'AU':_0x2124c3=_0x827a('0x2a');break;case'IN':_0x2124c3=_0x827a('0x2b');break;case'CN':_0x2124c3=_0x827a('0x17');break;default:_0x2124c3=_0x827a('0x18');break;}var _0x342582={'method':_0x827a('0x19'),'uri':_0x2124c3+_0x827a('0x1a'),'form':{'grant_type':_0x827a('0x1b'),'client_id':_0x42c231[_0x827a('0x11')],'client_secret':_0x42c231[_0x827a('0x12')],'redirect_uri':_0x42c231[_0x827a('0x10')],'code':_0x42c231[_0x827a('0x13')]},'headers':{'Content-Type':_0x827a('0x1c')}};return rp(_0x342582)[_0x827a('0x1d')](function(_0x4b6c12){var _0x3a0efe=JSON[_0x827a('0x1e')](_0x4b6c12);if(_0x3a0efe['refresh_token']){_0x42c231['refreshToken']=_0x3a0efe[_0x827a('0x1f')];logger['info'](util['format'](_0x827a('0x2c'),_0x42c231[_0x827a('0x23')],_0x42c231['id']));}else{logger[_0x827a('0x26')](util[_0x827a('0x22')](_0x827a('0x27'),_0x42c231['name'],_0x42c231['id']),util[_0x827a('0x24')](_0x3a0efe,{'showHidden':![],'depth':null}));}return _0x3a1d2b(null,_0x363b44);})[_0x827a('0x25')](function(_0x2b0c56){logger[_0x827a('0x26')](util[_0x827a('0x22')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x42c231[_0x827a('0x23')],_0x42c231['id']),util[_0x827a('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x3a1d2b(_0x2b0c56);});}else{return _0x3a1d2b(null,_0x363b44);}}}});};
\ No newline at end of file
index 2c124b9..7ac6c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['model','ShowZohoAccount','find','debug','lodash','util','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoAccount,\x20%s,\x20%s','catch','GetZohoAccount','ZohoAccount','options','raw','where','attributes','include','map'];(function(_0x1d95da,_0x41da5f){var _0x520789=function(_0x464f91){while(--_0x464f91){_0x1d95da['push'](_0x1d95da['shift']());}};_0x520789(++_0x41da5f);}(_0xed1c,0xe4));var _0xced1=function(_0x5e897d,_0x408f10){_0x5e897d=_0x5e897d-0x0;var _0x2079d2=_0xed1c[_0x5e897d];return _0x2079d2;};'use strict';var _=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xced1('0x2'))['db'];var utils=require(_0xced1('0x3'));var logger=require(_0xced1('0x4'))('rpc');var config=require(_0xced1('0x5'));var jayson=require(_0xced1('0x6'));var client=jayson[_0xced1('0x7')][_0xced1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x59399e,_0x2bcf42,_0x38bca8){return new BPromise(function(_0x39d5df,_0x1fb40b){return client[_0xced1('0x9')](_0x59399e,_0x38bca8)[_0xced1('0xa')](function(_0x325dd2){logger[_0xced1('0xb')]('ZohoAccount,\x20%s,\x20%s',_0x2bcf42,_0xced1('0xc'));logger['debug'](_0xced1('0xd'),_0x2bcf42,_0xced1('0xc'),JSON[_0xced1('0xe')](_0x325dd2));if(_0x325dd2[_0xced1('0xf')]){if(_0x325dd2[_0xced1('0xf')][_0xced1('0x10')]===0x1f4){logger[_0xced1('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x2bcf42,_0x325dd2[_0xced1('0xf')][_0xced1('0x11')]);return _0x1fb40b(_0x325dd2[_0xced1('0xf')][_0xced1('0x11')]);}logger['error'](_0xced1('0x12'),_0x2bcf42,_0x325dd2[_0xced1('0xf')]['message']);return _0x39d5df(_0x325dd2[_0xced1('0xf')][_0xced1('0x11')]);}else{logger[_0xced1('0xb')](_0xced1('0x12'),_0x2bcf42,'request\x20sent');_0x39d5df(_0x325dd2['result'][_0xced1('0x11')]);}})[_0xced1('0x13')](function(_0x236473){logger[_0xced1('0xf')](_0xced1('0x12'),_0x2bcf42,_0x236473);_0x1fb40b(_0x236473);});});}exports[_0xced1('0x14')]=function(_0x5a563a){var _0x56fc50=this;return new Promise(function(_0x2a92c8,_0x111fb0){return db[_0xced1('0x15')]['findAll']({'raw':_0x5a563a[_0xced1('0x16')]?_0x5a563a[_0xced1('0x16')][_0xced1('0x17')]===undefined?!![]:![]:!![],'where':_0x5a563a['options']?_0x5a563a[_0xced1('0x16')][_0xced1('0x18')]||null:null,'attributes':_0x5a563a[_0xced1('0x16')]?_0x5a563a['options'][_0xced1('0x19')]||null:null,'limit':_0x5a563a[_0xced1('0x16')]?_0x5a563a[_0xced1('0x16')]['limit']||null:null,'include':_0x5a563a['options']?_0x5a563a[_0xced1('0x16')][_0xced1('0x1a')]?_[_0xced1('0x1b')](_0x5a563a[_0xced1('0x16')][_0xced1('0x1a')],function(_0x49c8b9){return{'model':db[_0x49c8b9[_0xced1('0x1c')]],'as':_0x49c8b9['as'],'attributes':_0x49c8b9[_0xced1('0x19')],'include':_0x49c8b9['include']?_['map'](_0x49c8b9[_0xced1('0x1a')],function(_0x258c9a){return{'model':db[_0x258c9a[_0xced1('0x1c')]],'as':_0x258c9a['as'],'attributes':_0x258c9a[_0xced1('0x19')],'include':_0x258c9a[_0xced1('0x1a')]?_[_0xced1('0x1b')](_0x258c9a['include'],function(_0x181f6e){return{'model':db[_0x181f6e[_0xced1('0x1c')]],'as':_0x181f6e['as'],'attributes':_0x181f6e[_0xced1('0x19')]};}):[]};}):[]};}):[]:[]})[_0xced1('0xa')](function(_0x34dd2e){logger[_0xced1('0xb')](_0xced1('0x14'),_0x5a563a);logger['debug'](_0xced1('0x14'),_0x5a563a,JSON['stringify'](_0x34dd2e));_0x2a92c8(_0x34dd2e);})[_0xced1('0x13')](function(_0x2c2269){logger[_0xced1('0xf')](_0xced1('0x14'),_0x2c2269['message'],_0x5a563a);_0x111fb0(_0x56fc50['error'](0x1f4,_0x2c2269[_0xced1('0x11')]));});});};exports[_0xced1('0x1d')]=function(_0x2bc785){var _0x4ea07e=this;return new Promise(function(_0x573146,_0x543c47){return db[_0xced1('0x15')][_0xced1('0x1e')]({'raw':_0x2bc785[_0xced1('0x16')]?_0x2bc785[_0xced1('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x2bc785[_0xced1('0x16')]?_0x2bc785[_0xced1('0x16')][_0xced1('0x18')]||null:null,'attributes':_0x2bc785[_0xced1('0x16')]?_0x2bc785[_0xced1('0x16')][_0xced1('0x19')]||null:null,'include':_0x2bc785[_0xced1('0x16')]?_0x2bc785['options']['include']?_[_0xced1('0x1b')](_0x2bc785[_0xced1('0x16')][_0xced1('0x1a')],function(_0x7ebeb3){return{'model':db[_0x7ebeb3[_0xced1('0x1c')]],'as':_0x7ebeb3['as'],'attributes':_0x7ebeb3[_0xced1('0x19')],'include':_0x7ebeb3['include']?_['map'](_0x7ebeb3['include'],function(_0x4d305c){return{'model':db[_0x4d305c[_0xced1('0x1c')]],'as':_0x4d305c['as'],'attributes':_0x4d305c[_0xced1('0x19')],'include':_0x4d305c[_0xced1('0x1a')]?_[_0xced1('0x1b')](_0x4d305c[_0xced1('0x1a')],function(_0x1c36fa){return{'model':db[_0x1c36fa[_0xced1('0x1c')]],'as':_0x1c36fa['as'],'attributes':_0x1c36fa[_0xced1('0x19')]};}):[]};}):[]};}):[]:[]})[_0xced1('0xa')](function(_0x3dfd2f){logger[_0xced1('0xb')](_0xced1('0x1d'),_0x2bc785);logger[_0xced1('0x1f')]('ShowZohoAccount',_0x2bc785,JSON[_0xced1('0xe')](_0x3dfd2f));_0x573146(_0x3dfd2f);})[_0xced1('0x13')](function(_0x1116de){logger[_0xced1('0xf')](_0xced1('0x1d'),_0x1116de[_0xced1('0x11')],_0x2bc785);_0x543c47(_0x4ea07e['error'](0x1f4,_0x1116de[_0xced1('0x11')]));});});};
\ No newline at end of file
+var _0xba37=['stringify','error','code','message','result','GetZohoAccount','ZohoAccount','options','raw','limit','include','map','model','attributes','catch','ShowZohoAccount','where','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s'];(function(_0x31372c,_0x34c32e){var _0x117a32=function(_0xaf306){while(--_0xaf306){_0x31372c['push'](_0x31372c['shift']());}};_0x117a32(++_0x34c32e);}(_0xba37,0xb6));var _0x7ba3=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xba37[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0x7ba3('0x0'));var util=require('util');var moment=require(_0x7ba3('0x1'));var BPromise=require('bluebird');var rs=require(_0x7ba3('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7ba3('0x3'))['db'];var utils=require(_0x7ba3('0x4'));var logger=require(_0x7ba3('0x5'))(_0x7ba3('0x6'));var config=require(_0x7ba3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7ba3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b4052,_0x1cac44,_0x39d42a){return new BPromise(function(_0x539743,_0x3388e9){return client[_0x7ba3('0x9')](_0x4b4052,_0x39d42a)[_0x7ba3('0xa')](function(_0x108326){logger[_0x7ba3('0xb')](_0x7ba3('0xc'),_0x1cac44,_0x7ba3('0xd'));logger[_0x7ba3('0xe')](_0x7ba3('0xf'),_0x1cac44,'request\x20sent',JSON[_0x7ba3('0x10')](_0x108326));if(_0x108326[_0x7ba3('0x11')]){if(_0x108326[_0x7ba3('0x11')][_0x7ba3('0x12')]===0x1f4){logger['error'](_0x7ba3('0xc'),_0x1cac44,_0x108326[_0x7ba3('0x11')][_0x7ba3('0x13')]);return _0x3388e9(_0x108326[_0x7ba3('0x11')][_0x7ba3('0x13')]);}logger[_0x7ba3('0x11')](_0x7ba3('0xc'),_0x1cac44,_0x108326['error'][_0x7ba3('0x13')]);return _0x539743(_0x108326[_0x7ba3('0x11')][_0x7ba3('0x13')]);}else{logger[_0x7ba3('0xb')](_0x7ba3('0xc'),_0x1cac44,_0x7ba3('0xd'));_0x539743(_0x108326[_0x7ba3('0x14')][_0x7ba3('0x13')]);}})['catch'](function(_0x5e5e72){logger[_0x7ba3('0x11')](_0x7ba3('0xc'),_0x1cac44,_0x5e5e72);_0x3388e9(_0x5e5e72);});});}exports[_0x7ba3('0x15')]=function(_0x1ec30e){var _0x21a74b=this;return new Promise(function(_0x5e41f0,_0x3e8a79){return db[_0x7ba3('0x16')]['findAll']({'raw':_0x1ec30e[_0x7ba3('0x17')]?_0x1ec30e['options'][_0x7ba3('0x18')]===undefined?!![]:![]:!![],'where':_0x1ec30e[_0x7ba3('0x17')]?_0x1ec30e[_0x7ba3('0x17')]['where']||null:null,'attributes':_0x1ec30e['options']?_0x1ec30e[_0x7ba3('0x17')]['attributes']||null:null,'limit':_0x1ec30e[_0x7ba3('0x17')]?_0x1ec30e['options'][_0x7ba3('0x19')]||null:null,'include':_0x1ec30e['options']?_0x1ec30e[_0x7ba3('0x17')][_0x7ba3('0x1a')]?_[_0x7ba3('0x1b')](_0x1ec30e[_0x7ba3('0x17')][_0x7ba3('0x1a')],function(_0x949e6b){return{'model':db[_0x949e6b[_0x7ba3('0x1c')]],'as':_0x949e6b['as'],'attributes':_0x949e6b[_0x7ba3('0x1d')],'include':_0x949e6b['include']?_[_0x7ba3('0x1b')](_0x949e6b[_0x7ba3('0x1a')],function(_0x285951){return{'model':db[_0x285951[_0x7ba3('0x1c')]],'as':_0x285951['as'],'attributes':_0x285951['attributes'],'include':_0x285951['include']?_['map'](_0x285951['include'],function(_0x4d7bc7){return{'model':db[_0x4d7bc7[_0x7ba3('0x1c')]],'as':_0x4d7bc7['as'],'attributes':_0x4d7bc7[_0x7ba3('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x50bed9){logger[_0x7ba3('0xb')]('GetZohoAccount',_0x1ec30e);logger['debug'](_0x7ba3('0x15'),_0x1ec30e,JSON[_0x7ba3('0x10')](_0x50bed9));_0x5e41f0(_0x50bed9);})[_0x7ba3('0x1e')](function(_0x2ba832){logger[_0x7ba3('0x11')](_0x7ba3('0x15'),_0x2ba832[_0x7ba3('0x13')],_0x1ec30e);_0x3e8a79(_0x21a74b[_0x7ba3('0x11')](0x1f4,_0x2ba832[_0x7ba3('0x13')]));});});};exports[_0x7ba3('0x1f')]=function(_0x5702cb){var _0x258f3c=this;return new Promise(function(_0x4dd0b3,_0x407c42){return db['ZohoAccount']['find']({'raw':_0x5702cb['options']?_0x5702cb[_0x7ba3('0x17')][_0x7ba3('0x18')]===undefined?!![]:![]:!![],'where':_0x5702cb['options']?_0x5702cb['options'][_0x7ba3('0x20')]||null:null,'attributes':_0x5702cb['options']?_0x5702cb[_0x7ba3('0x17')]['attributes']||null:null,'include':_0x5702cb[_0x7ba3('0x17')]?_0x5702cb[_0x7ba3('0x17')][_0x7ba3('0x1a')]?_[_0x7ba3('0x1b')](_0x5702cb[_0x7ba3('0x17')][_0x7ba3('0x1a')],function(_0x178c19){return{'model':db[_0x178c19[_0x7ba3('0x1c')]],'as':_0x178c19['as'],'attributes':_0x178c19[_0x7ba3('0x1d')],'include':_0x178c19[_0x7ba3('0x1a')]?_['map'](_0x178c19['include'],function(_0x93d028){return{'model':db[_0x93d028['model']],'as':_0x93d028['as'],'attributes':_0x93d028['attributes'],'include':_0x93d028[_0x7ba3('0x1a')]?_[_0x7ba3('0x1b')](_0x93d028[_0x7ba3('0x1a')],function(_0xf66ca1){return{'model':db[_0xf66ca1[_0x7ba3('0x1c')]],'as':_0xf66ca1['as'],'attributes':_0xf66ca1['attributes']};}):[]};}):[]};}):[]:[]})[_0x7ba3('0xa')](function(_0x4d6202){logger[_0x7ba3('0xb')](_0x7ba3('0x1f'),_0x5702cb);logger[_0x7ba3('0xe')](_0x7ba3('0x1f'),_0x5702cb,JSON[_0x7ba3('0x10')](_0x4d6202));_0x4dd0b3(_0x4d6202);})[_0x7ba3('0x1e')](function(_0x5b9f34){logger[_0x7ba3('0x11')](_0x7ba3('0x1f'),_0x5b9f34[_0x7ba3('0x13')],_0x5702cb);_0x407c42(_0x258f3c[_0x7ba3('0x11')](0x1f4,_0x5b9f34[_0x7ba3('0x13')]));});});};
\ No newline at end of file
index 732c261..96aad9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ec=['/:id','show','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated'];(function(_0xf7b07a,_0x4a7c43){var _0x60dc0e=function(_0x1494db){while(--_0x1494db){_0xf7b07a['push'](_0xf7b07a['shift']());}};_0x60dc0e(++_0x4a7c43);}(_0xf6ec,0xcb));var _0xcf6e=function(_0x3029f9,_0x1c0d87){_0x3029f9=_0x3029f9-0x0;var _0x4f6bfc=_0xf6ec[_0x3029f9];return _0x4f6bfc;};'use strict';var multer=require(_0xcf6e('0x0'));var util=require(_0xcf6e('0x1'));var path=require(_0xcf6e('0x2'));var timeout=require(_0xcf6e('0x3'));var express=require(_0xcf6e('0x4'));var router=express[_0xcf6e('0x5')]();var fs_extra=require(_0xcf6e('0x6'));var auth=require(_0xcf6e('0x7'));var interaction=require(_0xcf6e('0x8'));var config=require(_0xcf6e('0x9'));var controller=require(_0xcf6e('0xa'));router[_0xcf6e('0xb')]('/',auth[_0xcf6e('0xc')](),controller['index']);router['get'](_0xcf6e('0xd'),auth[_0xcf6e('0xc')](),controller[_0xcf6e('0xe')]);router['get']('/:id/fields',auth[_0xcf6e('0xc')](),controller['getFields']);router[_0xcf6e('0xb')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xcf6e('0xf')]);router['get'](_0xcf6e('0x10'),auth['isAuthenticated'](),controller[_0xcf6e('0x11')]);router[_0xcf6e('0x12')]('/',auth[_0xcf6e('0xc')](),controller[_0xcf6e('0x13')]);router['put']('/:id',auth[_0xcf6e('0xc')](),controller[_0xcf6e('0x14')]);router[_0xcf6e('0x15')](_0xcf6e('0xd'),auth[_0xcf6e('0xc')](),controller[_0xcf6e('0x16')]);module[_0xcf6e('0x17')]=router;
\ No newline at end of file
+var _0xd686=['show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','create','delete','exports','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x124298,_0x542004){var _0x35ac24=function(_0x49afe8){while(--_0x49afe8){_0x124298['push'](_0x124298['shift']());}};_0x35ac24(++_0x542004);}(_0xd686,0x199));var _0x6d68=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xd686[_0x32f7d7];return _0x133d09;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6d68('0x0'));var timeout=require(_0x6d68('0x1'));var express=require(_0x6d68('0x2'));var router=express[_0x6d68('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6d68('0x4'));var config=require(_0x6d68('0x5'));var controller=require(_0x6d68('0x6'));router[_0x6d68('0x7')]('/',auth[_0x6d68('0x8')](),controller[_0x6d68('0x9')]);router[_0x6d68('0x7')](_0x6d68('0xa'),auth[_0x6d68('0x8')](),controller[_0x6d68('0xb')]);router['get'](_0x6d68('0xc'),auth['isAuthenticated'](),controller[_0x6d68('0xd')]);router[_0x6d68('0x7')](_0x6d68('0xe'),auth[_0x6d68('0x8')](),controller[_0x6d68('0xf')]);router[_0x6d68('0x7')](_0x6d68('0x10'),auth['isAuthenticated'](),controller['getDescriptions']);router['post']('/',auth[_0x6d68('0x8')](),controller[_0x6d68('0x11')]);router['put'](_0x6d68('0xa'),auth[_0x6d68('0x8')](),controller['update']);router[_0x6d68('0x12')]('/:id',auth[_0x6d68('0x8')](),controller['destroy']);module[_0x6d68('0x13')]=router;
\ No newline at end of file
index ce83f6f..aecb1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8781=['sequelize','exports','STRING','ENUM','lead','contact','nothing','contact_lead'];(function(_0x2ce498,_0x1f0736){var _0x253951=function(_0x432d31){while(--_0x432d31){_0x2ce498['push'](_0x2ce498['shift']());}};_0x253951(++_0x1f0736);}(_0x8781,0x1c8));var _0x1878=function(_0x3268fe,_0x6f831c){_0x3268fe=_0x3268fe-0x0;var _0xbee04d=_0x8781[_0x3268fe];return _0xbee04d;};'use strict';var Sequelize=require(_0x1878('0x0'));module[_0x1878('0x1')]={'name':{'type':Sequelize[_0x1878('0x2')]},'moduleCreate':{'type':Sequelize[_0x1878('0x3')](_0x1878('0x4'),_0x1878('0x5'),_0x1878('0x6')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x1878('0x3')](_0x1878('0x7'),_0x1878('0x5'),_0x1878('0x4')),'defaultValue':_0x1878('0x7')},'description':{'type':Sequelize[_0x1878('0x2')]}};
\ No newline at end of file
+var _0x5a4d=['ENUM','contact','lead','contact_lead','exports','STRING'];(function(_0x553035,_0xff028d){var _0x3241d0=function(_0x2f20fe){while(--_0x2f20fe){_0x553035['push'](_0x553035['shift']());}};_0x3241d0(++_0xff028d);}(_0x5a4d,0x1ea));var _0xd5a4=function(_0xcb690f,_0x7eabf3){_0xcb690f=_0xcb690f-0x0;var _0x1bc29a=_0x5a4d[_0xcb690f];return _0x1bc29a;};'use strict';var Sequelize=require('sequelize');module[_0xd5a4('0x0')]={'name':{'type':Sequelize[_0xd5a4('0x1')]},'moduleCreate':{'type':Sequelize[_0xd5a4('0x2')]('lead',_0xd5a4('0x3'),'nothing'),'defaultValue':_0xd5a4('0x4')},'moduleSearch':{'type':Sequelize[_0xd5a4('0x2')](_0xd5a4('0x5'),_0xd5a4('0x3'),_0xd5a4('0x4')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0xd5a4('0x1')]}};
\ No newline at end of file
index b3af6d5..3a696d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc188=['stack','send','map','rawAttributes','type','model','name','query','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','ZohoConfiguration','includeAll','include','findAll','rows','catch','keys','find','create','body','update','destroy','params','getFields','findOne','ZohoField','fields','getSubjects','order','getDescriptions','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error'];(function(_0x592cbc,_0x5ec030){var _0x39b8d9=function(_0x39055c){while(--_0x39055c){_0x592cbc['push'](_0x592cbc['shift']());}};_0x39b8d9(++_0x5ec030);}(_0xc188,0x1b4));var _0x8c18=function(_0x444547,_0x1431fd){_0x444547=_0x444547-0x0;var _0x19515f=_0xc188[_0x444547];return _0x19515f;};'use strict';var emlformat=require(_0x8c18('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8c18('0x1'));var rp=require(_0x8c18('0x2'));var moment=require(_0x8c18('0x3'));var BPromise=require(_0x8c18('0x4'));var Mustache=require(_0x8c18('0x5'));var util=require('util');var path=require(_0x8c18('0x6'));var sox=require(_0x8c18('0x7'));var csv=require(_0x8c18('0x8'));var ejs=require(_0x8c18('0x9'));var fs=require('fs');var fs_extra=require(_0x8c18('0xa'));var _=require(_0x8c18('0xb'));var squel=require('squel');var crypto=require(_0x8c18('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8c18('0xd'));var toCsv=require(_0x8c18('0x8'));var querystring=require(_0x8c18('0xe'));var Papa=require(_0x8c18('0xf'));var Redis=require(_0x8c18('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8c18('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8c18('0x12'))(_0x8c18('0x13'));var utils=require(_0x8c18('0x14'));var config=require(_0x8c18('0x15'));var licenseUtil=require(_0x8c18('0x16'));var db=require(_0x8c18('0x17'))['db'];function respondWithStatusCode(_0x3ee736,_0x46264f){_0x46264f=_0x46264f||0xcc;return function(_0x20b384){if(_0x20b384){return _0x3ee736[_0x8c18('0x18')](_0x46264f);}return _0x3ee736[_0x8c18('0x19')](_0x46264f)['end']();};}function respondWithResult(_0x2fcd55,_0x11c15f){_0x11c15f=_0x11c15f||0xc8;return function(_0xa12202){if(_0xa12202){return _0x2fcd55['status'](_0x11c15f)[_0x8c18('0x1a')](_0xa12202);}};}function respondWithFilteredResult(_0x2cc2c9,_0x22ebdb){return function(_0x16a63f){if(_0x16a63f){var _0x2a8f3b=typeof _0x22ebdb[_0x8c18('0x1b')]===_0x8c18('0x1c')&&typeof _0x22ebdb[_0x8c18('0x1d')]===_0x8c18('0x1c');var _0x1099b7=_0x16a63f[_0x8c18('0x1e')];var _0x1c8e18=_0x2a8f3b?0x0:_0x22ebdb[_0x8c18('0x1b')];var _0x268d84=_0x2a8f3b?_0x16a63f[_0x8c18('0x1e')]:_0x22ebdb['offset']+_0x22ebdb[_0x8c18('0x1d')];var _0x320f59;if(_0x268d84>=_0x1099b7){_0x268d84=_0x1099b7;_0x320f59=0xc8;}else{_0x320f59=0xce;}_0x2cc2c9[_0x8c18('0x19')](_0x320f59);return _0x2cc2c9[_0x8c18('0x1f')](_0x8c18('0x20'),_0x1c8e18+'-'+_0x268d84+'/'+_0x1099b7)[_0x8c18('0x1a')](_0x16a63f);}return null;};}function patchUpdates(_0x139dc4){return function(_0x42c4dd){try{jsonpatch[_0x8c18('0x21')](_0x42c4dd,_0x139dc4,!![]);}catch(_0x3fa9a7){return BPromise[_0x8c18('0x22')](_0x3fa9a7);}return _0x42c4dd[_0x8c18('0x23')]();};}function saveUpdates(_0x78f2e0,_0x2a0d03){return function(_0xc06e24){if(_0xc06e24){return _0xc06e24['update'](_0x78f2e0)[_0x8c18('0x24')](function(_0x28038c){return _0x28038c;});}return null;};}function removeEntity(_0x240f40,_0x2f00ea){return function(_0x13123f){if(_0x13123f){return _0x13123f['destroy']()[_0x8c18('0x24')](function(){_0x240f40[_0x8c18('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b5f62,_0x3148d4){return function(_0x19e703){if(!_0x19e703){_0x2b5f62[_0x8c18('0x18')](0x194);}return _0x19e703;};}function handleError(_0x2c94bd,_0x2d4c3d){_0x2d4c3d=_0x2d4c3d||0x1f4;return function(_0x34b398){logger[_0x8c18('0x25')](_0x34b398[_0x8c18('0x26')]);if(_0x34b398['name']){delete _0x34b398['name'];}_0x2c94bd[_0x8c18('0x19')](_0x2d4c3d)[_0x8c18('0x27')](_0x34b398);};}exports['index']=function(_0x59715b,_0x2ce9ed){var _0x1ee1bf={},_0x5132dd={},_0x4fef48={'count':0x0,'rows':[]};var _0x869f4d=_[_0x8c18('0x28')](db['ZohoConfiguration'][_0x8c18('0x29')],function(_0x3daf3c){return{'name':_0x3daf3c['fieldName'],'type':_0x3daf3c[_0x8c18('0x2a')]['key']};});_0x5132dd[_0x8c18('0x2b')]=_[_0x8c18('0x28')](_0x869f4d,_0x8c18('0x2c'));_0x5132dd['query']=_['keys'](_0x59715b[_0x8c18('0x2d')]);_0x5132dd['filters']=_[_0x8c18('0x2e')](_0x5132dd['model'],_0x5132dd[_0x8c18('0x2d')]);_0x1ee1bf[_0x8c18('0x2f')]=_[_0x8c18('0x2e')](_0x5132dd[_0x8c18('0x2b')],qs['fields'](_0x59715b['query']['fields']));_0x1ee1bf[_0x8c18('0x2f')]=_0x1ee1bf['attributes'][_0x8c18('0x30')]?_0x1ee1bf[_0x8c18('0x2f')]:_0x5132dd[_0x8c18('0x2b')];if(!_0x59715b[_0x8c18('0x2d')][_0x8c18('0x31')](_0x8c18('0x32'))){_0x1ee1bf['limit']=qs[_0x8c18('0x1d')](_0x59715b[_0x8c18('0x2d')][_0x8c18('0x1d')]);_0x1ee1bf['offset']=qs[_0x8c18('0x1b')](_0x59715b['query'][_0x8c18('0x1b')]);}_0x1ee1bf['order']=qs[_0x8c18('0x33')](_0x59715b['query']['sort']);_0x1ee1bf[_0x8c18('0x34')]=qs[_0x8c18('0x35')](_[_0x8c18('0x36')](_0x59715b[_0x8c18('0x2d')],_0x5132dd['filters']),_0x869f4d);if(_0x59715b[_0x8c18('0x2d')][_0x8c18('0x37')]){_0x1ee1bf[_0x8c18('0x34')]=_[_0x8c18('0x38')](_0x1ee1bf[_0x8c18('0x34')],{'$or':_[_0x8c18('0x28')](_0x869f4d,function(_0x2c2ce0){if(_0x2c2ce0[_0x8c18('0x2a')]!==_0x8c18('0x39')){var _0x2ac8e4={};_0x2ac8e4[_0x2c2ce0[_0x8c18('0x2c')]]={'$like':'%'+_0x59715b[_0x8c18('0x2d')][_0x8c18('0x37')]+'%'};return _0x2ac8e4;}})});}_0x1ee1bf=_['merge']({},_0x1ee1bf,_0x59715b[_0x8c18('0x3a')]);var _0x4718c1={'where':_0x1ee1bf[_0x8c18('0x34')]};return db[_0x8c18('0x3b')]['count'](_0x4718c1)[_0x8c18('0x24')](function(_0x219e85){_0x4fef48[_0x8c18('0x1e')]=_0x219e85;if(_0x59715b['query'][_0x8c18('0x3c')]){_0x1ee1bf[_0x8c18('0x3d')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0x8c18('0x3e')](_0x1ee1bf);})[_0x8c18('0x24')](function(_0x45a6dd){_0x4fef48[_0x8c18('0x3f')]=_0x45a6dd;return _0x4fef48;})[_0x8c18('0x24')](respondWithFilteredResult(_0x2ce9ed,_0x1ee1bf))[_0x8c18('0x40')](handleError(_0x2ce9ed,null));};exports['show']=function(_0x30162d,_0x5ae134){var _0x3af895={'raw':![],'where':{'id':_0x30162d['params']['id']}},_0x5163ee={};_0x5163ee[_0x8c18('0x2b')]=_[_0x8c18('0x41')](db['ZohoConfiguration']['rawAttributes']);_0x5163ee[_0x8c18('0x2d')]=_['keys'](_0x30162d[_0x8c18('0x2d')]);_0x5163ee[_0x8c18('0x35')]=_['intersection'](_0x5163ee[_0x8c18('0x2b')],_0x5163ee[_0x8c18('0x2d')]);_0x3af895['attributes']=_[_0x8c18('0x2e')](_0x5163ee[_0x8c18('0x2b')],qs['fields'](_0x30162d[_0x8c18('0x2d')]['fields']));_0x3af895[_0x8c18('0x2f')]=_0x3af895[_0x8c18('0x2f')][_0x8c18('0x30')]?_0x3af895[_0x8c18('0x2f')]:_0x5163ee[_0x8c18('0x2b')];if(_0x30162d['query']['includeAll']){_0x3af895[_0x8c18('0x3d')]=[{'all':!![]}];}_0x3af895=_['merge']({},_0x3af895,_0x30162d[_0x8c18('0x3a')]);return db[_0x8c18('0x3b')][_0x8c18('0x42')](_0x3af895)[_0x8c18('0x24')](handleEntityNotFound(_0x5ae134,null))[_0x8c18('0x24')](respondWithResult(_0x5ae134,null))[_0x8c18('0x40')](handleError(_0x5ae134,null));};exports[_0x8c18('0x43')]=function(_0x571a99,_0x390f5d){return db['ZohoConfiguration']['create'](_0x571a99[_0x8c18('0x44')],{})[_0x8c18('0x24')](respondWithResult(_0x390f5d,0xc9))[_0x8c18('0x40')](handleError(_0x390f5d,null));};exports[_0x8c18('0x45')]=function(_0x42fe34,_0x52d36c){if(_0x42fe34[_0x8c18('0x44')]['id']){delete _0x42fe34['body']['id'];}return db[_0x8c18('0x3b')][_0x8c18('0x42')]({'where':{'id':_0x42fe34['params']['id']}})[_0x8c18('0x24')](handleEntityNotFound(_0x52d36c,null))[_0x8c18('0x24')](saveUpdates(_0x42fe34[_0x8c18('0x44')],null))['then'](respondWithResult(_0x52d36c,null))[_0x8c18('0x40')](handleError(_0x52d36c,null));};exports[_0x8c18('0x46')]=function(_0x447c32,_0x17f1a0){return db['ZohoConfiguration'][_0x8c18('0x42')]({'where':{'id':_0x447c32[_0x8c18('0x47')]['id']}})[_0x8c18('0x24')](handleEntityNotFound(_0x17f1a0,null))[_0x8c18('0x24')](removeEntity(_0x17f1a0,null))[_0x8c18('0x40')](handleError(_0x17f1a0,null));};exports[_0x8c18('0x48')]=function(_0x1acddb,_0x793cc8,_0x233390){var _0x349371={};var _0x2db882={};var _0x341623;var _0x54c7fe;return db[_0x8c18('0x3b')][_0x8c18('0x49')]({'where':{'id':_0x1acddb[_0x8c18('0x47')]['id']}})[_0x8c18('0x24')](handleEntityNotFound(_0x793cc8,null))[_0x8c18('0x24')](function(_0x58024a){if(_0x58024a){_0x341623=_0x58024a;_0x2db882[_0x8c18('0x2b')]=_['keys'](db[_0x8c18('0x4a')]['rawAttributes']);_0x2db882[_0x8c18('0x2d')]=_[_0x8c18('0x41')](_0x1acddb['query']);_0x2db882[_0x8c18('0x35')]=_[_0x8c18('0x2e')](_0x2db882[_0x8c18('0x2b')],_0x2db882[_0x8c18('0x2d')]);_0x349371[_0x8c18('0x2f')]=_[_0x8c18('0x2e')](_0x2db882[_0x8c18('0x2b')],qs[_0x8c18('0x4b')](_0x1acddb[_0x8c18('0x2d')][_0x8c18('0x4b')]));_0x349371['attributes']=_0x349371[_0x8c18('0x2f')][_0x8c18('0x30')]?_0x349371[_0x8c18('0x2f')]:_0x2db882[_0x8c18('0x2b')];_0x349371['order']=qs[_0x8c18('0x33')](_0x1acddb['query'][_0x8c18('0x33')]);_0x349371['where']=qs[_0x8c18('0x35')](_['pick'](_0x1acddb[_0x8c18('0x2d')],_0x2db882[_0x8c18('0x35')]));if(_0x1acddb[_0x8c18('0x2d')][_0x8c18('0x37')]){_0x349371[_0x8c18('0x34')]=_[_0x8c18('0x38')](_0x349371[_0x8c18('0x34')],{'$or':_[_0x8c18('0x28')](_0x349371[_0x8c18('0x2f')],function(_0x154098){var _0x2befc0={};_0x2befc0[_0x154098]={'$like':'%'+_0x1acddb['query'][_0x8c18('0x37')]+'%'};return _0x2befc0;})});}_0x349371=_['merge']({},_0x349371,_0x1acddb[_0x8c18('0x3a')]);return _0x341623[_0x8c18('0x48')](_0x349371);}})[_0x8c18('0x24')](function(_0x481644){if(_0x481644){_0x54c7fe=_0x481644[_0x8c18('0x30')];if(!_0x1acddb[_0x8c18('0x2d')]['hasOwnProperty'](_0x8c18('0x32'))){_0x349371[_0x8c18('0x1d')]=qs[_0x8c18('0x1d')](_0x1acddb[_0x8c18('0x2d')][_0x8c18('0x1d')]);_0x349371[_0x8c18('0x1b')]=qs['offset'](_0x1acddb[_0x8c18('0x2d')]['offset']);}return _0x341623[_0x8c18('0x48')](_0x349371);}})[_0x8c18('0x24')](function(_0x53cd1e){if(_0x53cd1e){return _0x53cd1e?{'count':_0x54c7fe,'rows':_0x53cd1e}:null;}})['then'](respondWithResult(_0x793cc8,null))[_0x8c18('0x40')](handleError(_0x793cc8,null));};exports[_0x8c18('0x4c')]=function(_0x88da9,_0x3ca5d7,_0x3c2877){var _0x5e17e0={};var _0x1e0942={};var _0xe950e0;var _0x4c3b40;return db[_0x8c18('0x3b')][_0x8c18('0x49')]({'where':{'id':_0x88da9['params']['id']}})['then'](handleEntityNotFound(_0x3ca5d7,null))[_0x8c18('0x24')](function(_0xf5fdb1){if(_0xf5fdb1){_0xe950e0=_0xf5fdb1;_0x1e0942[_0x8c18('0x2b')]=_[_0x8c18('0x41')](db[_0x8c18('0x4a')][_0x8c18('0x29')]);_0x1e0942[_0x8c18('0x2d')]=_[_0x8c18('0x41')](_0x88da9['query']);_0x1e0942[_0x8c18('0x35')]=_[_0x8c18('0x2e')](_0x1e0942['model'],_0x1e0942[_0x8c18('0x2d')]);_0x5e17e0['attributes']=_[_0x8c18('0x2e')](_0x1e0942[_0x8c18('0x2b')],qs[_0x8c18('0x4b')](_0x88da9[_0x8c18('0x2d')][_0x8c18('0x4b')]));_0x5e17e0[_0x8c18('0x2f')]=_0x5e17e0[_0x8c18('0x2f')][_0x8c18('0x30')]?_0x5e17e0[_0x8c18('0x2f')]:_0x1e0942[_0x8c18('0x2b')];_0x5e17e0[_0x8c18('0x4d')]=qs['sort'](_0x88da9['query'][_0x8c18('0x33')]);_0x5e17e0[_0x8c18('0x34')]=qs[_0x8c18('0x35')](_[_0x8c18('0x36')](_0x88da9[_0x8c18('0x2d')],_0x1e0942[_0x8c18('0x35')]));if(_0x88da9[_0x8c18('0x2d')][_0x8c18('0x37')]){_0x5e17e0[_0x8c18('0x34')]=_[_0x8c18('0x38')](_0x5e17e0[_0x8c18('0x34')],{'$or':_[_0x8c18('0x28')](_0x5e17e0[_0x8c18('0x2f')],function(_0x104cae){var _0x24fb0b={};_0x24fb0b[_0x104cae]={'$like':'%'+_0x88da9[_0x8c18('0x2d')][_0x8c18('0x37')]+'%'};return _0x24fb0b;})});}_0x5e17e0=_[_0x8c18('0x38')]({},_0x5e17e0,_0x88da9[_0x8c18('0x3a')]);return _0xe950e0['getSubjects'](_0x5e17e0);}})[_0x8c18('0x24')](function(_0x26b925){if(_0x26b925){_0x4c3b40=_0x26b925[_0x8c18('0x30')];if(!_0x88da9[_0x8c18('0x2d')][_0x8c18('0x31')](_0x8c18('0x32'))){_0x5e17e0['limit']=qs[_0x8c18('0x1d')](_0x88da9['query'][_0x8c18('0x1d')]);_0x5e17e0[_0x8c18('0x1b')]=qs[_0x8c18('0x1b')](_0x88da9[_0x8c18('0x2d')][_0x8c18('0x1b')]);}return _0xe950e0['getSubjects'](_0x5e17e0);}})[_0x8c18('0x24')](function(_0x11976a){if(_0x11976a){return _0x11976a?{'count':_0x4c3b40,'rows':_0x11976a}:null;}})[_0x8c18('0x24')](respondWithResult(_0x3ca5d7,null))[_0x8c18('0x40')](handleError(_0x3ca5d7,null));};exports[_0x8c18('0x4e')]=function(_0x4ca896,_0x16cd5f,_0x2fd82c){var _0x165e7b={};var _0x1d02c4={};var _0x2472a1;var _0x556f5a;return db[_0x8c18('0x3b')][_0x8c18('0x49')]({'where':{'id':_0x4ca896[_0x8c18('0x47')]['id']}})[_0x8c18('0x24')](handleEntityNotFound(_0x16cd5f,null))[_0x8c18('0x24')](function(_0xd274c2){if(_0xd274c2){_0x2472a1=_0xd274c2;_0x1d02c4[_0x8c18('0x2b')]=_[_0x8c18('0x41')](db[_0x8c18('0x4a')][_0x8c18('0x29')]);_0x1d02c4[_0x8c18('0x2d')]=_[_0x8c18('0x41')](_0x4ca896[_0x8c18('0x2d')]);_0x1d02c4['filters']=_[_0x8c18('0x2e')](_0x1d02c4[_0x8c18('0x2b')],_0x1d02c4[_0x8c18('0x2d')]);_0x165e7b[_0x8c18('0x2f')]=_[_0x8c18('0x2e')](_0x1d02c4[_0x8c18('0x2b')],qs[_0x8c18('0x4b')](_0x4ca896[_0x8c18('0x2d')][_0x8c18('0x4b')]));_0x165e7b['attributes']=_0x165e7b['attributes'][_0x8c18('0x30')]?_0x165e7b[_0x8c18('0x2f')]:_0x1d02c4[_0x8c18('0x2b')];_0x165e7b[_0x8c18('0x4d')]=qs['sort'](_0x4ca896[_0x8c18('0x2d')]['sort']);_0x165e7b[_0x8c18('0x34')]=qs[_0x8c18('0x35')](_[_0x8c18('0x36')](_0x4ca896[_0x8c18('0x2d')],_0x1d02c4['filters']));if(_0x4ca896[_0x8c18('0x2d')]['filter']){_0x165e7b[_0x8c18('0x34')]=_[_0x8c18('0x38')](_0x165e7b['where'],{'$or':_[_0x8c18('0x28')](_0x165e7b[_0x8c18('0x2f')],function(_0x17b3ce){var _0x8fabfd={};_0x8fabfd[_0x17b3ce]={'$like':'%'+_0x4ca896[_0x8c18('0x2d')][_0x8c18('0x37')]+'%'};return _0x8fabfd;})});}_0x165e7b=_[_0x8c18('0x38')]({},_0x165e7b,_0x4ca896['options']);return _0x2472a1[_0x8c18('0x4e')](_0x165e7b);}})[_0x8c18('0x24')](function(_0x4eccda){if(_0x4eccda){_0x556f5a=_0x4eccda[_0x8c18('0x30')];if(!_0x4ca896['query'][_0x8c18('0x31')](_0x8c18('0x32'))){_0x165e7b[_0x8c18('0x1d')]=qs[_0x8c18('0x1d')](_0x4ca896[_0x8c18('0x2d')][_0x8c18('0x1d')]);_0x165e7b[_0x8c18('0x1b')]=qs[_0x8c18('0x1b')](_0x4ca896[_0x8c18('0x2d')]['offset']);}return _0x2472a1[_0x8c18('0x4e')](_0x165e7b);}})[_0x8c18('0x24')](function(_0x444b86){if(_0x444b86){return _0x444b86?{'count':_0x556f5a,'rows':_0x444b86}:null;}})[_0x8c18('0x24')](respondWithResult(_0x16cd5f,null))[_0x8c18('0x40')](handleError(_0x16cd5f,null));};
\ No newline at end of file
+var _0x93e8=['request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','status','end','json','offset','undefined','count','limit','set','reject','save','destroy','sendStatus','error','stack','name','index','map','ZohoConfiguration','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','params','length','find','catch','create','body','update','ZohoField','getFields','getSubjects','order','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x93e8,0x18c));var _0x893e=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x93e8[_0x5c9307];return _0x373e29;};'use strict';var emlformat=require(_0x893e('0x0'));var rimraf=require(_0x893e('0x1'));var zipdir=require(_0x893e('0x2'));var jsonpatch=require(_0x893e('0x3'));var rp=require(_0x893e('0x4'));var moment=require(_0x893e('0x5'));var BPromise=require(_0x893e('0x6'));var Mustache=require(_0x893e('0x7'));var util=require(_0x893e('0x8'));var path=require(_0x893e('0x9'));var sox=require(_0x893e('0xa'));var csv=require('to-csv');var ejs=require(_0x893e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x893e('0xc'));var crypto=require(_0x893e('0xd'));var jsforce=require(_0x893e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x893e('0xf'));var querystring=require(_0x893e('0x10'));var Papa=require(_0x893e('0x11'));var Redis=require(_0x893e('0x12'));var authService=require(_0x893e('0x13'));var qs=require(_0x893e('0x14'));var as=require(_0x893e('0x15'));var hardwareService=require(_0x893e('0x16'));var logger=require(_0x893e('0x17'))(_0x893e('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x893e('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1db37b,_0x408ed2){_0x408ed2=_0x408ed2||0xcc;return function(_0x445ae9){if(_0x445ae9){return _0x1db37b['sendStatus'](_0x408ed2);}return _0x1db37b[_0x893e('0x1a')](_0x408ed2)[_0x893e('0x1b')]();};}function respondWithResult(_0x478623,_0x4f1be9){_0x4f1be9=_0x4f1be9||0xc8;return function(_0x3e7f7d){if(_0x3e7f7d){return _0x478623[_0x893e('0x1a')](_0x4f1be9)[_0x893e('0x1c')](_0x3e7f7d);}};}function respondWithFilteredResult(_0x464312,_0x38ead9){return function(_0x15b0db){if(_0x15b0db){var _0x3effce=typeof _0x38ead9[_0x893e('0x1d')]==='undefined'&&typeof _0x38ead9['limit']===_0x893e('0x1e');var _0x50c124=_0x15b0db[_0x893e('0x1f')];var _0x48f27b=_0x3effce?0x0:_0x38ead9[_0x893e('0x1d')];var _0x4c40ee=_0x3effce?_0x15b0db['count']:_0x38ead9[_0x893e('0x1d')]+_0x38ead9[_0x893e('0x20')];var _0x35ba01;if(_0x4c40ee>=_0x50c124){_0x4c40ee=_0x50c124;_0x35ba01=0xc8;}else{_0x35ba01=0xce;}_0x464312['status'](_0x35ba01);return _0x464312[_0x893e('0x21')]('Content-Range',_0x48f27b+'-'+_0x4c40ee+'/'+_0x50c124)['json'](_0x15b0db);}return null;};}function patchUpdates(_0xb57c9c){return function(_0x4a33a9){try{jsonpatch['apply'](_0x4a33a9,_0xb57c9c,!![]);}catch(_0x54c5dc){return BPromise[_0x893e('0x22')](_0x54c5dc);}return _0x4a33a9[_0x893e('0x23')]();};}function saveUpdates(_0x4b0a31,_0x50f119){return function(_0x3d360f){if(_0x3d360f){return _0x3d360f['update'](_0x4b0a31)['then'](function(_0x30b5af){return _0x30b5af;});}return null;};}function removeEntity(_0x2f771f,_0x2d4572){return function(_0x13ed3c){if(_0x13ed3c){return _0x13ed3c[_0x893e('0x24')]()['then'](function(){_0x2f771f[_0x893e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f0954,_0x10adc2){return function(_0x421090){if(!_0x421090){_0x5f0954[_0x893e('0x25')](0x194);}return _0x421090;};}function handleError(_0x3989f0,_0x32010d){_0x32010d=_0x32010d||0x1f4;return function(_0x19c1f5){logger[_0x893e('0x26')](_0x19c1f5[_0x893e('0x27')]);if(_0x19c1f5[_0x893e('0x28')]){delete _0x19c1f5['name'];}_0x3989f0[_0x893e('0x1a')](_0x32010d)['send'](_0x19c1f5);};}exports[_0x893e('0x29')]=function(_0x5be5e5,_0x13d9ea){var _0x5b416e={},_0x37828e={},_0x1a1a0d={'count':0x0,'rows':[]};var _0xb9e804=_[_0x893e('0x2a')](db[_0x893e('0x2b')][_0x893e('0x2c')],function(_0x51bcdb){return{'name':_0x51bcdb['fieldName'],'type':_0x51bcdb[_0x893e('0x2d')][_0x893e('0x2e')]};});_0x37828e[_0x893e('0x2f')]=_[_0x893e('0x2a')](_0xb9e804,_0x893e('0x28'));_0x37828e[_0x893e('0x30')]=_[_0x893e('0x31')](_0x5be5e5[_0x893e('0x30')]);_0x37828e['filters']=_[_0x893e('0x32')](_0x37828e[_0x893e('0x2f')],_0x37828e[_0x893e('0x30')]);_0x5b416e[_0x893e('0x33')]=_[_0x893e('0x32')](_0x37828e['model'],qs[_0x893e('0x34')](_0x5be5e5['query'][_0x893e('0x34')]));_0x5b416e[_0x893e('0x33')]=_0x5b416e[_0x893e('0x33')]['length']?_0x5b416e[_0x893e('0x33')]:_0x37828e[_0x893e('0x2f')];if(!_0x5be5e5[_0x893e('0x30')][_0x893e('0x35')](_0x893e('0x36'))){_0x5b416e[_0x893e('0x20')]=qs[_0x893e('0x20')](_0x5be5e5[_0x893e('0x30')]['limit']);_0x5b416e[_0x893e('0x1d')]=qs[_0x893e('0x1d')](_0x5be5e5['query'][_0x893e('0x1d')]);}_0x5b416e['order']=qs[_0x893e('0x37')](_0x5be5e5[_0x893e('0x30')][_0x893e('0x37')]);_0x5b416e[_0x893e('0x38')]=qs[_0x893e('0x39')](_[_0x893e('0x3a')](_0x5be5e5[_0x893e('0x30')],_0x37828e[_0x893e('0x39')]),_0xb9e804);if(_0x5be5e5[_0x893e('0x30')]['filter']){_0x5b416e[_0x893e('0x38')]=_[_0x893e('0x3b')](_0x5b416e['where'],{'$or':_['map'](_0xb9e804,function(_0x4d20e0){if(_0x4d20e0[_0x893e('0x2d')]!==_0x893e('0x3c')){var _0x59d756={};_0x59d756[_0x4d20e0[_0x893e('0x28')]]={'$like':'%'+_0x5be5e5[_0x893e('0x30')][_0x893e('0x3d')]+'%'};return _0x59d756;}})});}_0x5b416e=_['merge']({},_0x5b416e,_0x5be5e5[_0x893e('0x3e')]);var _0x119f4e={'where':_0x5b416e[_0x893e('0x38')]};return db[_0x893e('0x2b')]['count'](_0x119f4e)[_0x893e('0x3f')](function(_0x23d4d4){_0x1a1a0d['count']=_0x23d4d4;if(_0x5be5e5['query'][_0x893e('0x40')]){_0x5b416e[_0x893e('0x41')]=[{'all':!![]}];}return db[_0x893e('0x2b')][_0x893e('0x42')](_0x5b416e);})[_0x893e('0x3f')](function(_0x17f643){_0x1a1a0d[_0x893e('0x43')]=_0x17f643;return _0x1a1a0d;})['then'](respondWithFilteredResult(_0x13d9ea,_0x5b416e))['catch'](handleError(_0x13d9ea,null));};exports['show']=function(_0x421ee9,_0x54db8c){var _0x5a0507={'raw':![],'where':{'id':_0x421ee9[_0x893e('0x44')]['id']}},_0x4aa78f={};_0x4aa78f['model']=_[_0x893e('0x31')](db['ZohoConfiguration'][_0x893e('0x2c')]);_0x4aa78f[_0x893e('0x30')]=_[_0x893e('0x31')](_0x421ee9['query']);_0x4aa78f[_0x893e('0x39')]=_[_0x893e('0x32')](_0x4aa78f[_0x893e('0x2f')],_0x4aa78f[_0x893e('0x30')]);_0x5a0507[_0x893e('0x33')]=_[_0x893e('0x32')](_0x4aa78f[_0x893e('0x2f')],qs[_0x893e('0x34')](_0x421ee9['query']['fields']));_0x5a0507[_0x893e('0x33')]=_0x5a0507[_0x893e('0x33')][_0x893e('0x45')]?_0x5a0507[_0x893e('0x33')]:_0x4aa78f['model'];if(_0x421ee9['query'][_0x893e('0x40')]){_0x5a0507[_0x893e('0x41')]=[{'all':!![]}];}_0x5a0507=_[_0x893e('0x3b')]({},_0x5a0507,_0x421ee9['options']);return db[_0x893e('0x2b')][_0x893e('0x46')](_0x5a0507)[_0x893e('0x3f')](handleEntityNotFound(_0x54db8c,null))[_0x893e('0x3f')](respondWithResult(_0x54db8c,null))[_0x893e('0x47')](handleError(_0x54db8c,null));};exports[_0x893e('0x48')]=function(_0x3b3805,_0x495b8b){return db[_0x893e('0x2b')][_0x893e('0x48')](_0x3b3805[_0x893e('0x49')],{})[_0x893e('0x3f')](respondWithResult(_0x495b8b,0xc9))[_0x893e('0x47')](handleError(_0x495b8b,null));};exports[_0x893e('0x4a')]=function(_0x306d83,_0x12436d){if(_0x306d83[_0x893e('0x49')]['id']){delete _0x306d83[_0x893e('0x49')]['id'];}return db[_0x893e('0x2b')][_0x893e('0x46')]({'where':{'id':_0x306d83['params']['id']}})['then'](handleEntityNotFound(_0x12436d,null))['then'](saveUpdates(_0x306d83[_0x893e('0x49')],null))['then'](respondWithResult(_0x12436d,null))[_0x893e('0x47')](handleError(_0x12436d,null));};exports[_0x893e('0x24')]=function(_0x2bbe38,_0x5951f9){return db[_0x893e('0x2b')][_0x893e('0x46')]({'where':{'id':_0x2bbe38[_0x893e('0x44')]['id']}})[_0x893e('0x3f')](handleEntityNotFound(_0x5951f9,null))[_0x893e('0x3f')](removeEntity(_0x5951f9,null))[_0x893e('0x47')](handleError(_0x5951f9,null));};exports['getFields']=function(_0x117d51,_0x37c38f,_0x75314c){var _0x1c8e63={};var _0x40da30={};var _0x41cce9;var _0x18714b;return db[_0x893e('0x2b')]['findOne']({'where':{'id':_0x117d51[_0x893e('0x44')]['id']}})[_0x893e('0x3f')](handleEntityNotFound(_0x37c38f,null))[_0x893e('0x3f')](function(_0x42ca60){if(_0x42ca60){_0x41cce9=_0x42ca60;_0x40da30['model']=_['keys'](db[_0x893e('0x4b')][_0x893e('0x2c')]);_0x40da30[_0x893e('0x30')]=_['keys'](_0x117d51[_0x893e('0x30')]);_0x40da30[_0x893e('0x39')]=_[_0x893e('0x32')](_0x40da30[_0x893e('0x2f')],_0x40da30[_0x893e('0x30')]);_0x1c8e63['attributes']=_[_0x893e('0x32')](_0x40da30[_0x893e('0x2f')],qs[_0x893e('0x34')](_0x117d51[_0x893e('0x30')]['fields']));_0x1c8e63[_0x893e('0x33')]=_0x1c8e63[_0x893e('0x33')]['length']?_0x1c8e63[_0x893e('0x33')]:_0x40da30[_0x893e('0x2f')];_0x1c8e63['order']=qs['sort'](_0x117d51[_0x893e('0x30')][_0x893e('0x37')]);_0x1c8e63['where']=qs[_0x893e('0x39')](_['pick'](_0x117d51[_0x893e('0x30')],_0x40da30[_0x893e('0x39')]));if(_0x117d51[_0x893e('0x30')][_0x893e('0x3d')]){_0x1c8e63[_0x893e('0x38')]=_[_0x893e('0x3b')](_0x1c8e63['where'],{'$or':_[_0x893e('0x2a')](_0x1c8e63['attributes'],function(_0x50b173){var _0x2be608={};_0x2be608[_0x50b173]={'$like':'%'+_0x117d51['query'][_0x893e('0x3d')]+'%'};return _0x2be608;})});}_0x1c8e63=_['merge']({},_0x1c8e63,_0x117d51[_0x893e('0x3e')]);return _0x41cce9[_0x893e('0x4c')](_0x1c8e63);}})[_0x893e('0x3f')](function(_0x1a8f96){if(_0x1a8f96){_0x18714b=_0x1a8f96['length'];if(!_0x117d51[_0x893e('0x30')][_0x893e('0x35')](_0x893e('0x36'))){_0x1c8e63[_0x893e('0x20')]=qs[_0x893e('0x20')](_0x117d51[_0x893e('0x30')][_0x893e('0x20')]);_0x1c8e63['offset']=qs[_0x893e('0x1d')](_0x117d51['query'][_0x893e('0x1d')]);}return _0x41cce9[_0x893e('0x4c')](_0x1c8e63);}})[_0x893e('0x3f')](function(_0x337cf4){if(_0x337cf4){return _0x337cf4?{'count':_0x18714b,'rows':_0x337cf4}:null;}})['then'](respondWithResult(_0x37c38f,null))[_0x893e('0x47')](handleError(_0x37c38f,null));};exports[_0x893e('0x4d')]=function(_0x4dfc92,_0x5e8b89,_0x435473){var _0x10a8cf={};var _0x3172b7={};var _0x475ab4;var _0x3c4e7a;return db[_0x893e('0x2b')]['findOne']({'where':{'id':_0x4dfc92[_0x893e('0x44')]['id']}})[_0x893e('0x3f')](handleEntityNotFound(_0x5e8b89,null))[_0x893e('0x3f')](function(_0x54b3a4){if(_0x54b3a4){_0x475ab4=_0x54b3a4;_0x3172b7['model']=_[_0x893e('0x31')](db[_0x893e('0x4b')]['rawAttributes']);_0x3172b7['query']=_['keys'](_0x4dfc92[_0x893e('0x30')]);_0x3172b7[_0x893e('0x39')]=_[_0x893e('0x32')](_0x3172b7[_0x893e('0x2f')],_0x3172b7['query']);_0x10a8cf[_0x893e('0x33')]=_[_0x893e('0x32')](_0x3172b7[_0x893e('0x2f')],qs['fields'](_0x4dfc92[_0x893e('0x30')][_0x893e('0x34')]));_0x10a8cf[_0x893e('0x33')]=_0x10a8cf[_0x893e('0x33')][_0x893e('0x45')]?_0x10a8cf[_0x893e('0x33')]:_0x3172b7[_0x893e('0x2f')];_0x10a8cf[_0x893e('0x4e')]=qs[_0x893e('0x37')](_0x4dfc92[_0x893e('0x30')][_0x893e('0x37')]);_0x10a8cf['where']=qs[_0x893e('0x39')](_[_0x893e('0x3a')](_0x4dfc92['query'],_0x3172b7[_0x893e('0x39')]));if(_0x4dfc92[_0x893e('0x30')]['filter']){_0x10a8cf[_0x893e('0x38')]=_[_0x893e('0x3b')](_0x10a8cf[_0x893e('0x38')],{'$or':_[_0x893e('0x2a')](_0x10a8cf[_0x893e('0x33')],function(_0x4312a9){var _0x5e2f92={};_0x5e2f92[_0x4312a9]={'$like':'%'+_0x4dfc92[_0x893e('0x30')][_0x893e('0x3d')]+'%'};return _0x5e2f92;})});}_0x10a8cf=_['merge']({},_0x10a8cf,_0x4dfc92['options']);return _0x475ab4[_0x893e('0x4d')](_0x10a8cf);}})[_0x893e('0x3f')](function(_0x5adcd3){if(_0x5adcd3){_0x3c4e7a=_0x5adcd3[_0x893e('0x45')];if(!_0x4dfc92[_0x893e('0x30')][_0x893e('0x35')](_0x893e('0x36'))){_0x10a8cf[_0x893e('0x20')]=qs['limit'](_0x4dfc92[_0x893e('0x30')][_0x893e('0x20')]);_0x10a8cf[_0x893e('0x1d')]=qs['offset'](_0x4dfc92[_0x893e('0x30')][_0x893e('0x1d')]);}return _0x475ab4[_0x893e('0x4d')](_0x10a8cf);}})[_0x893e('0x3f')](function(_0x57bc2e){if(_0x57bc2e){return _0x57bc2e?{'count':_0x3c4e7a,'rows':_0x57bc2e}:null;}})[_0x893e('0x3f')](respondWithResult(_0x5e8b89,null))[_0x893e('0x47')](handleError(_0x5e8b89,null));};exports[_0x893e('0x4f')]=function(_0x1e4380,_0x148fae,_0x24091b){var _0x3e0768={};var _0x29f6e1={};var _0x5bac49;var _0x21714d;return db[_0x893e('0x2b')]['findOne']({'where':{'id':_0x1e4380[_0x893e('0x44')]['id']}})[_0x893e('0x3f')](handleEntityNotFound(_0x148fae,null))[_0x893e('0x3f')](function(_0x12671b){if(_0x12671b){_0x5bac49=_0x12671b;_0x29f6e1[_0x893e('0x2f')]=_[_0x893e('0x31')](db[_0x893e('0x4b')][_0x893e('0x2c')]);_0x29f6e1[_0x893e('0x30')]=_[_0x893e('0x31')](_0x1e4380['query']);_0x29f6e1[_0x893e('0x39')]=_[_0x893e('0x32')](_0x29f6e1[_0x893e('0x2f')],_0x29f6e1['query']);_0x3e0768[_0x893e('0x33')]=_[_0x893e('0x32')](_0x29f6e1['model'],qs[_0x893e('0x34')](_0x1e4380['query'][_0x893e('0x34')]));_0x3e0768[_0x893e('0x33')]=_0x3e0768[_0x893e('0x33')]['length']?_0x3e0768[_0x893e('0x33')]:_0x29f6e1['model'];_0x3e0768[_0x893e('0x4e')]=qs[_0x893e('0x37')](_0x1e4380[_0x893e('0x30')]['sort']);_0x3e0768['where']=qs['filters'](_[_0x893e('0x3a')](_0x1e4380['query'],_0x29f6e1['filters']));if(_0x1e4380[_0x893e('0x30')]['filter']){_0x3e0768['where']=_[_0x893e('0x3b')](_0x3e0768[_0x893e('0x38')],{'$or':_[_0x893e('0x2a')](_0x3e0768['attributes'],function(_0x4a65ca){var _0xd84ebd={};_0xd84ebd[_0x4a65ca]={'$like':'%'+_0x1e4380[_0x893e('0x30')][_0x893e('0x3d')]+'%'};return _0xd84ebd;})});}_0x3e0768=_['merge']({},_0x3e0768,_0x1e4380[_0x893e('0x3e')]);return _0x5bac49[_0x893e('0x4f')](_0x3e0768);}})[_0x893e('0x3f')](function(_0x5c3df6){if(_0x5c3df6){_0x21714d=_0x5c3df6[_0x893e('0x45')];if(!_0x1e4380[_0x893e('0x30')][_0x893e('0x35')](_0x893e('0x36'))){_0x3e0768[_0x893e('0x20')]=qs['limit'](_0x1e4380[_0x893e('0x30')][_0x893e('0x20')]);_0x3e0768[_0x893e('0x1d')]=qs[_0x893e('0x1d')](_0x1e4380['query'][_0x893e('0x1d')]);}return _0x5bac49[_0x893e('0x4f')](_0x3e0768);}})[_0x893e('0x3f')](function(_0x52429e){if(_0x52429e){return _0x52429e?{'count':_0x21714d,'rows':_0x52429e}:null;}})[_0x893e('0x3f')](respondWithResult(_0x148fae,null))[_0x893e('0x47')](handleError(_0x148fae,null));};
\ No newline at end of file
index fc7218f..e90e2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3801=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','ZohoConfiguration','int_zoho_configurations'];(function(_0x2d7f49,_0x4a8b80){var _0x597ae3=function(_0x2cc3c6){while(--_0x2cc3c6){_0x2d7f49['push'](_0x2d7f49['shift']());}};_0x597ae3(++_0x4a8b80);}(_0x3801,0x15c));var _0x1380=function(_0x3df685,_0x4439dd){_0x3df685=_0x3df685-0x0;var _0x219d6d=_0x3801[_0x3df685];return _0x219d6d;};'use strict';var _=require(_0x1380('0x0'));var util=require(_0x1380('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1380('0x2'));var BPromise=require(_0x1380('0x3'));var rp=require(_0x1380('0x4'));var fs=require('fs');var path=require(_0x1380('0x5'));var rimraf=require(_0x1380('0x6'));var config=require(_0x1380('0x7'));var attributes=require(_0x1380('0x8'));module[_0x1380('0x9')]=function(_0x103ac7,_0x2dc8cf){return _0x103ac7['define'](_0x1380('0xa'),attributes,{'tableName':_0x1380('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x876e=['bluebird','request-promise','path','rimraf','./intZohoConfiguration.attributes','exports','ZohoConfiguration','int_zoho_configurations','util','../../config/logger','api','moment'];(function(_0x37f701,_0x822563){var _0x435177=function(_0x22bc68){while(--_0x22bc68){_0x37f701['push'](_0x37f701['shift']());}};_0x435177(++_0x822563);}(_0x876e,0x134));var _0xe876=function(_0x1a69d3,_0x3ecf5c){_0x1a69d3=_0x1a69d3-0x0;var _0x4ae981=_0x876e[_0x1a69d3];return _0x4ae981;};'use strict';var _=require('lodash');var util=require(_0xe876('0x0'));var logger=require(_0xe876('0x1'))(_0xe876('0x2'));var moment=require(_0xe876('0x3'));var BPromise=require(_0xe876('0x4'));var rp=require(_0xe876('0x5'));var fs=require('fs');var path=require(_0xe876('0x6'));var rimraf=require(_0xe876('0x7'));var config=require('../../config/environment');var attributes=require(_0xe876('0x8'));module[_0xe876('0x9')]=function(_0x53f0ee,_0xa4adaa){return _0x53f0ee['define'](_0xe876('0xa'),attributes,{'tableName':_0xe876('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4e5440..a9379a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x995b=['rpc','../../config/environment','client','http','then','info','request\x20sent','debug','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x49abaa,_0x10d6a9){var _0x48a986=function(_0x4b0e75){while(--_0x4b0e75){_0x49abaa['push'](_0x49abaa['shift']());}};_0x48a986(++_0x10d6a9);}(_0x995b,0xe0));var _0xb995=function(_0x67bff,_0x12607c){_0x67bff=_0x67bff-0x0;var _0x502a97=_0x995b[_0x67bff];return _0x502a97;};'use strict';var _=require('lodash');var util=require(_0xb995('0x0'));var moment=require(_0xb995('0x1'));var BPromise=require('bluebird');var rs=require(_0xb995('0x2'));var fs=require('fs');var Redis=require(_0xb995('0x3'));var db=require(_0xb995('0x4'))['db'];var utils=require(_0xb995('0x5'));var logger=require(_0xb995('0x6'))(_0xb995('0x7'));var config=require(_0xb995('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb995('0x9')][_0xb995('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5adbe4,_0x2f85c7,_0x277919){return new BPromise(function(_0x4f4d95,_0xe4fbf0){return client['request'](_0x5adbe4,_0x277919)[_0xb995('0xb')](function(_0x14a8bc){logger[_0xb995('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x2f85c7,_0xb995('0xd'));logger[_0xb995('0xe')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x2f85c7,_0xb995('0xd'),JSON['stringify'](_0x14a8bc));if(_0x14a8bc['error']){if(_0x14a8bc[_0xb995('0xf')][_0xb995('0x10')]===0x1f4){logger[_0xb995('0xf')](_0xb995('0x11'),_0x2f85c7,_0x14a8bc[_0xb995('0xf')][_0xb995('0x12')]);return _0xe4fbf0(_0x14a8bc[_0xb995('0xf')][_0xb995('0x12')]);}logger[_0xb995('0xf')](_0xb995('0x11'),_0x2f85c7,_0x14a8bc[_0xb995('0xf')]['message']);return _0x4f4d95(_0x14a8bc[_0xb995('0xf')][_0xb995('0x12')]);}else{logger[_0xb995('0xc')](_0xb995('0x11'),_0x2f85c7,'request\x20sent');_0x4f4d95(_0x14a8bc[_0xb995('0x13')][_0xb995('0x12')]);}})[_0xb995('0x14')](function(_0x22059d){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x2f85c7,_0x22059d);_0xe4fbf0(_0x22059d);});});}
\ No newline at end of file
+var _0x733b=['then','info','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoConfiguration,\x20%s,\x20%s','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request'];(function(_0x748013,_0xe55550){var _0x136716=function(_0x31325f){while(--_0x31325f){_0x748013['push'](_0x748013['shift']());}};_0x136716(++_0xe55550);}(_0x733b,0xdd));var _0xb733=function(_0x14f30c,_0x5aaf93){_0x14f30c=_0x14f30c-0x0;var _0x3995f3=_0x733b[_0x14f30c];return _0x3995f3;};'use strict';var _=require(_0xb733('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb733('0x1'));var rs=require(_0xb733('0x2'));var fs=require('fs');var Redis=require(_0xb733('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb733('0x4'));var logger=require(_0xb733('0x5'))('rpc');var config=require(_0xb733('0x6'));var jayson=require(_0xb733('0x7'));var client=jayson[_0xb733('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26fd44,_0x40c634,_0x95fe6e){return new BPromise(function(_0x22b77f,_0x3a7d47){return client[_0xb733('0x9')](_0x26fd44,_0x95fe6e)[_0xb733('0xa')](function(_0x55fb18){logger[_0xb733('0xb')]('ZohoConfiguration,\x20%s,\x20%s',_0x40c634,_0xb733('0xc'));logger['debug'](_0xb733('0xd'),_0x40c634,_0xb733('0xc'),JSON[_0xb733('0xe')](_0x55fb18));if(_0x55fb18[_0xb733('0xf')]){if(_0x55fb18['error'][_0xb733('0x10')]===0x1f4){logger[_0xb733('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x40c634,_0x55fb18[_0xb733('0xf')][_0xb733('0x11')]);return _0x3a7d47(_0x55fb18['error'][_0xb733('0x11')]);}logger[_0xb733('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x40c634,_0x55fb18['error'][_0xb733('0x11')]);return _0x22b77f(_0x55fb18[_0xb733('0xf')][_0xb733('0x11')]);}else{logger[_0xb733('0xb')](_0xb733('0x12'),_0x40c634,_0xb733('0xc'));_0x22b77f(_0x55fb18[_0xb733('0x13')][_0xb733('0x11')]);}})[_0xb733('0x14')](function(_0x5c8483){logger[_0xb733('0xf')](_0xb733('0x12'),_0x40c634,_0x5c8483);_0x3a7d47(_0x5c8483);});});}
\ No newline at end of file
index 29aacde..1633747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ba6=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x51e874,_0x4dae9a){var _0x1a571a=function(_0x59c87d){while(--_0x59c87d){_0x51e874['push'](_0x51e874['shift']());}};_0x1a571a(++_0x4dae9a);}(_0x4ba6,0x100));var _0x64ba=function(_0x433650,_0x2780ed){_0x433650=_0x433650-0x0;var _0x13ce1d=_0x4ba6[_0x433650];return _0x13ce1d;};'use strict';var multer=require(_0x64ba('0x0'));var util=require(_0x64ba('0x1'));var path=require(_0x64ba('0x2'));var timeout=require(_0x64ba('0x3'));var express=require(_0x64ba('0x4'));var router=express[_0x64ba('0x5')]();var fs_extra=require(_0x64ba('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x64ba('0x7'));var config=require(_0x64ba('0x8'));var controller=require(_0x64ba('0x9'));router[_0x64ba('0xa')]('/',auth[_0x64ba('0xb')](),controller[_0x64ba('0xc')]);router['get'](_0x64ba('0xd'),auth[_0x64ba('0xb')](),controller['show']);router[_0x64ba('0xe')]('/',auth['isAuthenticated'](),controller[_0x64ba('0xf')]);router['put'](_0x64ba('0xd'),auth[_0x64ba('0xb')](),controller[_0x64ba('0x10')]);router[_0x64ba('0x11')](_0x64ba('0xd'),auth['isAuthenticated'](),controller[_0x64ba('0x12')]);module[_0x64ba('0x13')]=router;
\ No newline at end of file
+var _0xe687=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','post','create','/:id','update','delete'];(function(_0x37f004,_0x62b34f){var _0x26e286=function(_0x39d65a){while(--_0x39d65a){_0x37f004['push'](_0x37f004['shift']());}};_0x26e286(++_0x62b34f);}(_0xe687,0x8e));var _0x7e68=function(_0x29331a,_0x16c26d){_0x29331a=_0x29331a-0x0;var _0x4a9b3f=_0xe687[_0x29331a];return _0x4a9b3f;};'use strict';var multer=require(_0x7e68('0x0'));var util=require(_0x7e68('0x1'));var path=require(_0x7e68('0x2'));var timeout=require(_0x7e68('0x3'));var express=require(_0x7e68('0x4'));var router=express['Router']();var fs_extra=require(_0x7e68('0x5'));var auth=require(_0x7e68('0x6'));var interaction=require(_0x7e68('0x7'));var config=require(_0x7e68('0x8'));var controller=require('./intZohoField.controller');router['get']('/',auth[_0x7e68('0x9')](),controller[_0x7e68('0xa')]);router[_0x7e68('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x7e68('0xc')]);router[_0x7e68('0xd')]('/',auth[_0x7e68('0x9')](),controller[_0x7e68('0xe')]);router['put'](_0x7e68('0xf'),auth[_0x7e68('0x9')](),controller[_0x7e68('0x10')]);router[_0x7e68('0x11')](_0x7e68('0xf'),auth['isAuthenticated'](),controller[_0x7e68('0x12')]);module[_0x7e68('0x13')]=router;
\ No newline at end of file
index 35aa3f0..e169bff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe88e=['STRING','string','customVariable','BOOLEAN','ENUM','variable','keyValue','picklist'];(function(_0x2fef6c,_0x3f19c0){var _0x1b856b=function(_0x2bfeac){while(--_0x2bfeac){_0x2fef6c['push'](_0x2fef6c['shift']());}};_0x1b856b(++_0x3f19c0);}(_0xe88e,0x84));var _0xee88=function(_0x262ee7,_0x52ee92){_0x262ee7=_0x262ee7-0x0;var _0x1dc842=_0xe88e[_0x262ee7];return _0x1dc842;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xee88('0x0')]('string',_0xee88('0x1'),'customVariable',_0xee88('0x2'),_0xee88('0x3')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xee88('0x4')]},'keyType':{'type':Sequelize[_0xee88('0x0')](_0xee88('0x5'),_0xee88('0x1'),_0xee88('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xee88('0x4')]},'nameField':{'type':Sequelize[_0xee88('0x4')]},'customField':{'type':Sequelize[_0xee88('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x21ce=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string'];(function(_0x2bb0d9,_0x1fa51c){var _0x43fe14=function(_0x3c7111){while(--_0x3c7111){_0x2bb0d9['push'](_0x2bb0d9['shift']());}};_0x43fe14(++_0x1fa51c);}(_0x21ce,0x11d));var _0xe21c=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x21ce[_0x1e4360];return _0x31e6b4;};'use strict';var Sequelize=require('sequelize');module[_0xe21c('0x0')]={'type':{'type':Sequelize[_0xe21c('0x1')](_0xe21c('0x2'),_0xe21c('0x3'),_0xe21c('0x4'),_0xe21c('0x5'),_0xe21c('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xe21c('0x7')]},'key':{'type':Sequelize[_0xe21c('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0xe21c('0x3'),_0xe21c('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xe21c('0x7')]},'customField':{'type':Sequelize[_0xe21c('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe21c('0x7')]}};
\ No newline at end of file
index 9f9192d..b001836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc4=['index','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','nolimit','order','sort','filters','pick','filter','where','merge','options','ZohoField','includeAll','include','findAll','rows','catch','show','params','keys','length','create','body','destroy','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','error','stack','name'];(function(_0x2301be,_0x2d7c2c){var _0x4b24f6=function(_0x31df04){while(--_0x31df04){_0x2301be['push'](_0x2301be['shift']());}};_0x4b24f6(++_0x2d7c2c);}(_0x2cc4,0x1f0));var _0x42cc=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x2cc4[_0x565c49];return _0x20ca34;};'use strict';var emlformat=require(_0x42cc('0x0'));var rimraf=require(_0x42cc('0x1'));var zipdir=require(_0x42cc('0x2'));var jsonpatch=require(_0x42cc('0x3'));var rp=require('request-promise');var moment=require(_0x42cc('0x4'));var BPromise=require(_0x42cc('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x42cc('0x6'));var csv=require(_0x42cc('0x7'));var ejs=require(_0x42cc('0x8'));var fs=require('fs');var fs_extra=require(_0x42cc('0x9'));var _=require(_0x42cc('0xa'));var squel=require('squel');var crypto=require(_0x42cc('0xb'));var jsforce=require(_0x42cc('0xc'));var deskjs=require(_0x42cc('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x42cc('0xe'));var Redis=require(_0x42cc('0xf'));var authService=require(_0x42cc('0x10'));var qs=require(_0x42cc('0x11'));var as=require(_0x42cc('0x12'));var hardwareService=require(_0x42cc('0x13'));var logger=require(_0x42cc('0x14'))(_0x42cc('0x15'));var utils=require(_0x42cc('0x16'));var config=require(_0x42cc('0x17'));var licenseUtil=require(_0x42cc('0x18'));var db=require(_0x42cc('0x19'))['db'];function respondWithStatusCode(_0x5a21eb,_0x5d4911){_0x5d4911=_0x5d4911||0xcc;return function(_0x52ed54){if(_0x52ed54){return _0x5a21eb[_0x42cc('0x1a')](_0x5d4911);}return _0x5a21eb[_0x42cc('0x1b')](_0x5d4911)[_0x42cc('0x1c')]();};}function respondWithResult(_0x561a8d,_0x45ebd6){_0x45ebd6=_0x45ebd6||0xc8;return function(_0x4feb57){if(_0x4feb57){return _0x561a8d[_0x42cc('0x1b')](_0x45ebd6)['json'](_0x4feb57);}};}function respondWithFilteredResult(_0x3287a2,_0x21a34e){return function(_0x3e2fdf){if(_0x3e2fdf){var _0x394b8b=typeof _0x21a34e[_0x42cc('0x1d')]===_0x42cc('0x1e')&&typeof _0x21a34e[_0x42cc('0x1f')]===_0x42cc('0x1e');var _0x2ecb4e=_0x3e2fdf[_0x42cc('0x20')];var _0x50ccdb=_0x394b8b?0x0:_0x21a34e[_0x42cc('0x1d')];var _0x354b8f=_0x394b8b?_0x3e2fdf['count']:_0x21a34e['offset']+_0x21a34e[_0x42cc('0x1f')];var _0x4e0cc9;if(_0x354b8f>=_0x2ecb4e){_0x354b8f=_0x2ecb4e;_0x4e0cc9=0xc8;}else{_0x4e0cc9=0xce;}_0x3287a2[_0x42cc('0x1b')](_0x4e0cc9);return _0x3287a2[_0x42cc('0x21')](_0x42cc('0x22'),_0x50ccdb+'-'+_0x354b8f+'/'+_0x2ecb4e)[_0x42cc('0x23')](_0x3e2fdf);}return null;};}function patchUpdates(_0x197c32){return function(_0x31e781){try{jsonpatch[_0x42cc('0x24')](_0x31e781,_0x197c32,!![]);}catch(_0x4dc736){return BPromise[_0x42cc('0x25')](_0x4dc736);}return _0x31e781['save']();};}function saveUpdates(_0xbcd566,_0x26ea99){return function(_0x58c348){if(_0x58c348){return _0x58c348[_0x42cc('0x26')](_0xbcd566)[_0x42cc('0x27')](function(_0x4d6eee){return _0x4d6eee;});}return null;};}function removeEntity(_0x293aad,_0x4c9bcb){return function(_0x136e2b){if(_0x136e2b){return _0x136e2b['destroy']()[_0x42cc('0x27')](function(){_0x293aad[_0x42cc('0x1b')](0xcc)[_0x42cc('0x1c')]();});}};}function handleEntityNotFound(_0x58d4d6,_0x37c46b){return function(_0x5e1476){if(!_0x5e1476){_0x58d4d6[_0x42cc('0x1a')](0x194);}return _0x5e1476;};}function handleError(_0x39a076,_0x3d1d2f){_0x3d1d2f=_0x3d1d2f||0x1f4;return function(_0x326d40){logger[_0x42cc('0x28')](_0x326d40[_0x42cc('0x29')]);if(_0x326d40[_0x42cc('0x2a')]){delete _0x326d40['name'];}_0x39a076[_0x42cc('0x1b')](_0x3d1d2f)['send'](_0x326d40);};}exports[_0x42cc('0x2b')]=function(_0xd06eb7,_0x1f33c4){var _0x5682c3={},_0x906283={},_0x3bc2e3={'count':0x0,'rows':[]};var _0x190b35=_['map'](db['ZohoField'][_0x42cc('0x2c')],function(_0x557042){return{'name':_0x557042[_0x42cc('0x2d')],'type':_0x557042[_0x42cc('0x2e')][_0x42cc('0x2f')]};});_0x906283[_0x42cc('0x30')]=_[_0x42cc('0x31')](_0x190b35,'name');_0x906283[_0x42cc('0x32')]=_['keys'](_0xd06eb7[_0x42cc('0x32')]);_0x906283['filters']=_[_0x42cc('0x33')](_0x906283[_0x42cc('0x30')],_0x906283[_0x42cc('0x32')]);_0x5682c3[_0x42cc('0x34')]=_[_0x42cc('0x33')](_0x906283[_0x42cc('0x30')],qs['fields'](_0xd06eb7[_0x42cc('0x32')][_0x42cc('0x35')]));_0x5682c3[_0x42cc('0x34')]=_0x5682c3['attributes']['length']?_0x5682c3['attributes']:_0x906283[_0x42cc('0x30')];if(!_0xd06eb7[_0x42cc('0x32')]['hasOwnProperty'](_0x42cc('0x36'))){_0x5682c3['limit']=qs[_0x42cc('0x1f')](_0xd06eb7[_0x42cc('0x32')][_0x42cc('0x1f')]);_0x5682c3['offset']=qs[_0x42cc('0x1d')](_0xd06eb7['query'][_0x42cc('0x1d')]);}_0x5682c3[_0x42cc('0x37')]=qs[_0x42cc('0x38')](_0xd06eb7[_0x42cc('0x32')][_0x42cc('0x38')]);_0x5682c3['where']=qs[_0x42cc('0x39')](_[_0x42cc('0x3a')](_0xd06eb7[_0x42cc('0x32')],_0x906283['filters']),_0x190b35);if(_0xd06eb7[_0x42cc('0x32')][_0x42cc('0x3b')]){_0x5682c3[_0x42cc('0x3c')]=_[_0x42cc('0x3d')](_0x5682c3['where'],{'$or':_['map'](_0x190b35,function(_0x964d73){if(_0x964d73[_0x42cc('0x2e')]!=='VIRTUAL'){var _0x550670={};_0x550670[_0x964d73[_0x42cc('0x2a')]]={'$like':'%'+_0xd06eb7[_0x42cc('0x32')][_0x42cc('0x3b')]+'%'};return _0x550670;}})});}_0x5682c3=_[_0x42cc('0x3d')]({},_0x5682c3,_0xd06eb7[_0x42cc('0x3e')]);var _0x4ea784={'where':_0x5682c3['where']};return db[_0x42cc('0x3f')][_0x42cc('0x20')](_0x4ea784)[_0x42cc('0x27')](function(_0x3be090){_0x3bc2e3[_0x42cc('0x20')]=_0x3be090;if(_0xd06eb7['query'][_0x42cc('0x40')]){_0x5682c3[_0x42cc('0x41')]=[{'all':!![]}];}return db[_0x42cc('0x3f')][_0x42cc('0x42')](_0x5682c3);})[_0x42cc('0x27')](function(_0x17688b){_0x3bc2e3[_0x42cc('0x43')]=_0x17688b;return _0x3bc2e3;})[_0x42cc('0x27')](respondWithFilteredResult(_0x1f33c4,_0x5682c3))[_0x42cc('0x44')](handleError(_0x1f33c4,null));};exports[_0x42cc('0x45')]=function(_0x3da228,_0xbb9462){var _0x117c1a={'raw':!![],'where':{'id':_0x3da228[_0x42cc('0x46')]['id']}},_0x27c543={};_0x27c543['model']=_['keys'](db[_0x42cc('0x3f')][_0x42cc('0x2c')]);_0x27c543[_0x42cc('0x32')]=_[_0x42cc('0x47')](_0x3da228[_0x42cc('0x32')]);_0x27c543[_0x42cc('0x39')]=_['intersection'](_0x27c543[_0x42cc('0x30')],_0x27c543[_0x42cc('0x32')]);_0x117c1a[_0x42cc('0x34')]=_[_0x42cc('0x33')](_0x27c543[_0x42cc('0x30')],qs[_0x42cc('0x35')](_0x3da228[_0x42cc('0x32')][_0x42cc('0x35')]));_0x117c1a[_0x42cc('0x34')]=_0x117c1a[_0x42cc('0x34')][_0x42cc('0x48')]?_0x117c1a['attributes']:_0x27c543['model'];if(_0x3da228[_0x42cc('0x32')][_0x42cc('0x40')]){_0x117c1a[_0x42cc('0x41')]=[{'all':!![]}];}_0x117c1a=_[_0x42cc('0x3d')]({},_0x117c1a,_0x3da228['options']);return db[_0x42cc('0x3f')]['find'](_0x117c1a)[_0x42cc('0x27')](handleEntityNotFound(_0xbb9462,null))['then'](respondWithResult(_0xbb9462,null))['catch'](handleError(_0xbb9462,null));};exports[_0x42cc('0x49')]=function(_0x5a964f,_0xab51d0){return db[_0x42cc('0x3f')][_0x42cc('0x49')](_0x5a964f[_0x42cc('0x4a')],{})[_0x42cc('0x27')](respondWithResult(_0xab51d0,0xc9))['catch'](handleError(_0xab51d0,null));};exports[_0x42cc('0x26')]=function(_0x43c414,_0xe1c4b9){if(_0x43c414[_0x42cc('0x4a')]['id']){delete _0x43c414[_0x42cc('0x4a')]['id'];}return db[_0x42cc('0x3f')]['find']({'where':{'id':_0x43c414[_0x42cc('0x46')]['id']}})[_0x42cc('0x27')](handleEntityNotFound(_0xe1c4b9,null))[_0x42cc('0x27')](saveUpdates(_0x43c414[_0x42cc('0x4a')],null))[_0x42cc('0x27')](respondWithResult(_0xe1c4b9,null))[_0x42cc('0x44')](handleError(_0xe1c4b9,null));};exports[_0x42cc('0x4b')]=function(_0x19c1ac,_0x475e58){return db['ZohoField'][_0x42cc('0x4c')]({'where':{'id':_0x19c1ac[_0x42cc('0x46')]['id']}})['then'](handleEntityNotFound(_0x475e58,null))['then'](removeEntity(_0x475e58,null))[_0x42cc('0x44')](handleError(_0x475e58,null));};
\ No newline at end of file
+var _0x8d7d=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','name','send','index','map','ZohoField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','find','create','update','body','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x8d7d,0x18b));var _0xd8d7=function(_0x1abcb7,_0x1a7f3e){_0x1abcb7=_0x1abcb7-0x0;var _0x3cc24e=_0x8d7d[_0x1abcb7];return _0x3cc24e;};'use strict';var emlformat=require(_0xd8d7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd8d7('0x1'));var jsonpatch=require(_0xd8d7('0x2'));var rp=require(_0xd8d7('0x3'));var moment=require(_0xd8d7('0x4'));var BPromise=require(_0xd8d7('0x5'));var Mustache=require(_0xd8d7('0x6'));var util=require(_0xd8d7('0x7'));var path=require(_0xd8d7('0x8'));var sox=require(_0xd8d7('0x9'));var csv=require(_0xd8d7('0xa'));var ejs=require(_0xd8d7('0xb'));var fs=require('fs');var fs_extra=require(_0xd8d7('0xc'));var _=require('lodash');var squel=require(_0xd8d7('0xd'));var crypto=require(_0xd8d7('0xe'));var jsforce=require(_0xd8d7('0xf'));var deskjs=require(_0xd8d7('0x10'));var toCsv=require(_0xd8d7('0xa'));var querystring=require(_0xd8d7('0x11'));var Papa=require(_0xd8d7('0x12'));var Redis=require(_0xd8d7('0x13'));var authService=require(_0xd8d7('0x14'));var qs=require(_0xd8d7('0x15'));var as=require(_0xd8d7('0x16'));var hardwareService=require(_0xd8d7('0x17'));var logger=require(_0xd8d7('0x18'))(_0xd8d7('0x19'));var utils=require(_0xd8d7('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xd8d7('0x1b'));var db=require(_0xd8d7('0x1c'))['db'];function respondWithStatusCode(_0x436075,_0x143255){_0x143255=_0x143255||0xcc;return function(_0x3585a2){if(_0x3585a2){return _0x436075[_0xd8d7('0x1d')](_0x143255);}return _0x436075[_0xd8d7('0x1e')](_0x143255)[_0xd8d7('0x1f')]();};}function respondWithResult(_0xe889f3,_0x5336ff){_0x5336ff=_0x5336ff||0xc8;return function(_0x314fec){if(_0x314fec){return _0xe889f3[_0xd8d7('0x1e')](_0x5336ff)[_0xd8d7('0x20')](_0x314fec);}};}function respondWithFilteredResult(_0x146dd2,_0x29d09d){return function(_0x11c489){if(_0x11c489){var _0x13f85a=typeof _0x29d09d['offset']===_0xd8d7('0x21')&&typeof _0x29d09d[_0xd8d7('0x22')]===_0xd8d7('0x21');var _0x3532f3=_0x11c489[_0xd8d7('0x23')];var _0x3622e7=_0x13f85a?0x0:_0x29d09d[_0xd8d7('0x24')];var _0xa0b6f=_0x13f85a?_0x11c489[_0xd8d7('0x23')]:_0x29d09d[_0xd8d7('0x24')]+_0x29d09d['limit'];var _0x393408;if(_0xa0b6f>=_0x3532f3){_0xa0b6f=_0x3532f3;_0x393408=0xc8;}else{_0x393408=0xce;}_0x146dd2[_0xd8d7('0x1e')](_0x393408);return _0x146dd2[_0xd8d7('0x25')](_0xd8d7('0x26'),_0x3622e7+'-'+_0xa0b6f+'/'+_0x3532f3)['json'](_0x11c489);}return null;};}function patchUpdates(_0x56b71a){return function(_0x2622e2){try{jsonpatch[_0xd8d7('0x27')](_0x2622e2,_0x56b71a,!![]);}catch(_0x2d3ad5){return BPromise['reject'](_0x2d3ad5);}return _0x2622e2[_0xd8d7('0x28')]();};}function saveUpdates(_0x218533,_0x595d90){return function(_0xf12a79){if(_0xf12a79){return _0xf12a79['update'](_0x218533)[_0xd8d7('0x29')](function(_0x3e4194){return _0x3e4194;});}return null;};}function removeEntity(_0x4515c6,_0xc4447a){return function(_0x1bff8d){if(_0x1bff8d){return _0x1bff8d[_0xd8d7('0x2a')]()['then'](function(){_0x4515c6['status'](0xcc)[_0xd8d7('0x1f')]();});}};}function handleEntityNotFound(_0x4e62b5,_0x5293ac){return function(_0x444af4){if(!_0x444af4){_0x4e62b5['sendStatus'](0x194);}return _0x444af4;};}function handleError(_0xec53cb,_0x3ca896){_0x3ca896=_0x3ca896||0x1f4;return function(_0x23a247){logger[_0xd8d7('0x2b')](_0x23a247['stack']);if(_0x23a247[_0xd8d7('0x2c')]){delete _0x23a247['name'];}_0xec53cb[_0xd8d7('0x1e')](_0x3ca896)[_0xd8d7('0x2d')](_0x23a247);};}exports[_0xd8d7('0x2e')]=function(_0x16819d,_0x5f0b97){var _0x21baa7={},_0x438132={},_0x511cff={'count':0x0,'rows':[]};var _0x1d87e7=_[_0xd8d7('0x2f')](db[_0xd8d7('0x30')][_0xd8d7('0x31')],function(_0x1ea43b){return{'name':_0x1ea43b[_0xd8d7('0x32')],'type':_0x1ea43b[_0xd8d7('0x33')][_0xd8d7('0x34')]};});_0x438132[_0xd8d7('0x35')]=_[_0xd8d7('0x2f')](_0x1d87e7,_0xd8d7('0x2c'));_0x438132[_0xd8d7('0x36')]=_[_0xd8d7('0x37')](_0x16819d[_0xd8d7('0x36')]);_0x438132[_0xd8d7('0x38')]=_[_0xd8d7('0x39')](_0x438132[_0xd8d7('0x35')],_0x438132[_0xd8d7('0x36')]);_0x21baa7[_0xd8d7('0x3a')]=_[_0xd8d7('0x39')](_0x438132[_0xd8d7('0x35')],qs[_0xd8d7('0x3b')](_0x16819d['query'][_0xd8d7('0x3b')]));_0x21baa7[_0xd8d7('0x3a')]=_0x21baa7[_0xd8d7('0x3a')]['length']?_0x21baa7[_0xd8d7('0x3a')]:_0x438132[_0xd8d7('0x35')];if(!_0x16819d['query']['hasOwnProperty'](_0xd8d7('0x3c'))){_0x21baa7[_0xd8d7('0x22')]=qs[_0xd8d7('0x22')](_0x16819d['query'][_0xd8d7('0x22')]);_0x21baa7[_0xd8d7('0x24')]=qs['offset'](_0x16819d[_0xd8d7('0x36')][_0xd8d7('0x24')]);}_0x21baa7[_0xd8d7('0x3d')]=qs[_0xd8d7('0x3e')](_0x16819d[_0xd8d7('0x36')][_0xd8d7('0x3e')]);_0x21baa7['where']=qs[_0xd8d7('0x38')](_[_0xd8d7('0x3f')](_0x16819d[_0xd8d7('0x36')],_0x438132['filters']),_0x1d87e7);if(_0x16819d['query'][_0xd8d7('0x40')]){_0x21baa7[_0xd8d7('0x41')]=_[_0xd8d7('0x42')](_0x21baa7[_0xd8d7('0x41')],{'$or':_[_0xd8d7('0x2f')](_0x1d87e7,function(_0xb28473){if(_0xb28473[_0xd8d7('0x33')]!==_0xd8d7('0x43')){var _0x46447e={};_0x46447e[_0xb28473[_0xd8d7('0x2c')]]={'$like':'%'+_0x16819d[_0xd8d7('0x36')]['filter']+'%'};return _0x46447e;}})});}_0x21baa7=_[_0xd8d7('0x42')]({},_0x21baa7,_0x16819d[_0xd8d7('0x44')]);var _0x1a3e8b={'where':_0x21baa7[_0xd8d7('0x41')]};return db[_0xd8d7('0x30')][_0xd8d7('0x23')](_0x1a3e8b)[_0xd8d7('0x29')](function(_0x1a53c9){_0x511cff['count']=_0x1a53c9;if(_0x16819d[_0xd8d7('0x36')][_0xd8d7('0x45')]){_0x21baa7[_0xd8d7('0x46')]=[{'all':!![]}];}return db[_0xd8d7('0x30')][_0xd8d7('0x47')](_0x21baa7);})[_0xd8d7('0x29')](function(_0x414440){_0x511cff['rows']=_0x414440;return _0x511cff;})[_0xd8d7('0x29')](respondWithFilteredResult(_0x5f0b97,_0x21baa7))[_0xd8d7('0x48')](handleError(_0x5f0b97,null));};exports[_0xd8d7('0x49')]=function(_0x454ed0,_0x331371){var _0xedeab5={'raw':!![],'where':{'id':_0x454ed0[_0xd8d7('0x4a')]['id']}},_0x2102d1={};_0x2102d1['model']=_[_0xd8d7('0x37')](db['ZohoField']['rawAttributes']);_0x2102d1[_0xd8d7('0x36')]=_[_0xd8d7('0x37')](_0x454ed0['query']);_0x2102d1[_0xd8d7('0x38')]=_[_0xd8d7('0x39')](_0x2102d1['model'],_0x2102d1[_0xd8d7('0x36')]);_0xedeab5[_0xd8d7('0x3a')]=_[_0xd8d7('0x39')](_0x2102d1[_0xd8d7('0x35')],qs[_0xd8d7('0x3b')](_0x454ed0[_0xd8d7('0x36')][_0xd8d7('0x3b')]));_0xedeab5[_0xd8d7('0x3a')]=_0xedeab5['attributes'][_0xd8d7('0x4b')]?_0xedeab5['attributes']:_0x2102d1[_0xd8d7('0x35')];if(_0x454ed0[_0xd8d7('0x36')][_0xd8d7('0x45')]){_0xedeab5[_0xd8d7('0x46')]=[{'all':!![]}];}_0xedeab5=_[_0xd8d7('0x42')]({},_0xedeab5,_0x454ed0[_0xd8d7('0x44')]);return db['ZohoField'][_0xd8d7('0x4c')](_0xedeab5)[_0xd8d7('0x29')](handleEntityNotFound(_0x331371,null))[_0xd8d7('0x29')](respondWithResult(_0x331371,null))[_0xd8d7('0x48')](handleError(_0x331371,null));};exports[_0xd8d7('0x4d')]=function(_0x3f224a,_0x54d0f6){return db[_0xd8d7('0x30')][_0xd8d7('0x4d')](_0x3f224a['body'],{})[_0xd8d7('0x29')](respondWithResult(_0x54d0f6,0xc9))[_0xd8d7('0x48')](handleError(_0x54d0f6,null));};exports[_0xd8d7('0x4e')]=function(_0x3db397,_0xca31b7){if(_0x3db397[_0xd8d7('0x4f')]['id']){delete _0x3db397[_0xd8d7('0x4f')]['id'];}return db[_0xd8d7('0x30')][_0xd8d7('0x4c')]({'where':{'id':_0x3db397[_0xd8d7('0x4a')]['id']}})[_0xd8d7('0x29')](handleEntityNotFound(_0xca31b7,null))[_0xd8d7('0x29')](saveUpdates(_0x3db397[_0xd8d7('0x4f')],null))[_0xd8d7('0x29')](respondWithResult(_0xca31b7,null))['catch'](handleError(_0xca31b7,null));};exports['destroy']=function(_0xb428d,_0x8c21a){return db[_0xd8d7('0x30')][_0xd8d7('0x4c')]({'where':{'id':_0xb428d['params']['id']}})['then'](handleEntityNotFound(_0x8c21a,null))[_0xd8d7('0x29')](removeEntity(_0x8c21a,null))[_0xd8d7('0x48')](handleError(_0x8c21a,null));};
\ No newline at end of file
index f1b9579..102e474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','moment','bluebird','request-promise'];(function(_0x1d2741,_0x7d7589){var _0x5d6672=function(_0x53d60c){while(--_0x53d60c){_0x1d2741['push'](_0x1d2741['shift']());}};_0x5d6672(++_0x7d7589);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x365c74,_0x356b80){_0x365c74=_0x365c74-0x0;var _0x3d2dad=_0xa6b0[_0x365c74];return _0x3d2dad;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0a6b('0x2'));var BPromise=require(_0x0a6b('0x3'));var rp=require(_0x0a6b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0a6b('0x5'));var config=require(_0x0a6b('0x6'));var attributes=require(_0x0a6b('0x7'));module[_0x0a6b('0x8')]=function(_0x3dc2b0,_0x3b6967){return _0x3dc2b0[_0x0a6b('0x9')](_0x0a6b('0xa'),attributes,{'tableName':_0x0a6b('0xb'),'paranoid':![],'indexes':[{'name':_0x0a6b('0xc'),'fields':[_0x0a6b('0xd'),_0x0a6b('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1623=['zoho_unique_index','idField','FieldId','lodash','api','moment','bluebird','request-promise','path','./intZohoField.attributes','ZohoField','int_zoho_fields'];(function(_0x4837ae,_0x3aa591){var _0xb3b20c=function(_0x51a2f3){while(--_0x51a2f3){_0x4837ae['push'](_0x4837ae['shift']());}};_0xb3b20c(++_0x3aa591);}(_0x1623,0xab));var _0x3162=function(_0x40860f,_0x3b0824){_0x40860f=_0x40860f-0x0;var _0x16ce67=_0x1623[_0x40860f];return _0x16ce67;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3162('0x1'));var moment=require(_0x3162('0x2'));var BPromise=require(_0x3162('0x3'));var rp=require(_0x3162('0x4'));var fs=require('fs');var path=require(_0x3162('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3162('0x6'));module['exports']=function(_0x1b55f2,_0x428de6){return _0x1b55f2['define'](_0x3162('0x7'),attributes,{'tableName':_0x3162('0x8'),'paranoid':![],'indexes':[{'name':_0x3162('0x9'),'fields':[_0x3162('0xa'),_0x3162('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9691ceb..250e183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ab=['../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x12699c,_0xf9dd49){var _0x54360e=function(_0xa4d495){while(--_0xa4d495){_0x12699c['push'](_0x12699c['shift']());}};_0x54360e(++_0xf9dd49);}(_0xf2ab,0x14f));var _0xbf2a=function(_0x366865,_0xeb499d){_0x366865=_0x366865-0x0;var _0x271b9c=_0xf2ab[_0x366865];return _0x271b9c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbf2a('0x0'));var BPromise=require(_0xbf2a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf2a('0x2'));var db=require(_0xbf2a('0x3'))['db'];var utils=require(_0xbf2a('0x4'));var logger=require(_0xbf2a('0x5'))(_0xbf2a('0x6'));var config=require(_0xbf2a('0x7'));var jayson=require(_0xbf2a('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x732002,_0x3e92fb,_0x2f1899){return new BPromise(function(_0x23de98,_0x1ada64){return client[_0xbf2a('0x9')](_0x732002,_0x2f1899)[_0xbf2a('0xa')](function(_0x2c27e5){logger[_0xbf2a('0xb')](_0xbf2a('0xc'),_0x3e92fb,_0xbf2a('0xd'));logger[_0xbf2a('0xe')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x3e92fb,'request\x20sent',JSON[_0xbf2a('0xf')](_0x2c27e5));if(_0x2c27e5[_0xbf2a('0x10')]){if(_0x2c27e5[_0xbf2a('0x10')]['code']===0x1f4){logger[_0xbf2a('0x10')](_0xbf2a('0xc'),_0x3e92fb,_0x2c27e5[_0xbf2a('0x10')][_0xbf2a('0x11')]);return _0x1ada64(_0x2c27e5[_0xbf2a('0x10')][_0xbf2a('0x11')]);}logger[_0xbf2a('0x10')](_0xbf2a('0xc'),_0x3e92fb,_0x2c27e5['error']['message']);return _0x23de98(_0x2c27e5[_0xbf2a('0x10')][_0xbf2a('0x11')]);}else{logger[_0xbf2a('0xb')](_0xbf2a('0xc'),_0x3e92fb,_0xbf2a('0xd'));_0x23de98(_0x2c27e5[_0xbf2a('0x12')][_0xbf2a('0x11')]);}})[_0xbf2a('0x13')](function(_0x5e8606){logger[_0xbf2a('0x10')](_0xbf2a('0xc'),_0x3e92fb,_0x5e8606);_0x1ada64(_0x5e8606);});});}
\ No newline at end of file
+var _0x02c8=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','error','code','message','info','lodash','util','moment','bluebird','ioredis'];(function(_0x5afcb0,_0x2f05c5){var _0x54987e=function(_0x1068d4){while(--_0x1068d4){_0x5afcb0['push'](_0x5afcb0['shift']());}};_0x54987e(++_0x2f05c5);}(_0x02c8,0xd7));var _0x802c=function(_0x26aadb,_0x3b4b48){_0x26aadb=_0x26aadb-0x0;var _0x84e0a5=_0x02c8[_0x26aadb];return _0x84e0a5;};'use strict';var _=require(_0x802c('0x0'));var util=require(_0x802c('0x1'));var moment=require(_0x802c('0x2'));var BPromise=require(_0x802c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x802c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x802c('0x5'));var logger=require(_0x802c('0x6'))(_0x802c('0x7'));var config=require(_0x802c('0x8'));var jayson=require(_0x802c('0x9'));var client=jayson[_0x802c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x933dc9,_0x1f824d,_0x5be9a6){return new BPromise(function(_0x1ca0d0,_0x2ab58e){return client[_0x802c('0xb')](_0x933dc9,_0x5be9a6)['then'](function(_0x2e0fff){logger['info'](_0x802c('0xc'),_0x1f824d,_0x802c('0xd'));logger[_0x802c('0xe')](_0x802c('0xf'),_0x1f824d,_0x802c('0xd'),JSON['stringify'](_0x2e0fff));if(_0x2e0fff[_0x802c('0x10')]){if(_0x2e0fff['error'][_0x802c('0x11')]===0x1f4){logger[_0x802c('0x10')](_0x802c('0xc'),_0x1f824d,_0x2e0fff['error'][_0x802c('0x12')]);return _0x2ab58e(_0x2e0fff[_0x802c('0x10')]['message']);}logger[_0x802c('0x10')](_0x802c('0xc'),_0x1f824d,_0x2e0fff[_0x802c('0x10')][_0x802c('0x12')]);return _0x1ca0d0(_0x2e0fff[_0x802c('0x10')][_0x802c('0x12')]);}else{logger[_0x802c('0x13')]('ZohoField,\x20%s,\x20%s',_0x1f824d,_0x802c('0xd'));_0x1ca0d0(_0x2e0fff['result'][_0x802c('0x12')]);}})['catch'](function(_0x40709a){logger['error'](_0x802c('0xc'),_0x1f824d,_0x40709a);_0x2ab58e(_0x40709a);});});}
\ No newline at end of file
index 0c3f310..469d194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x23c57c,_0x9ed706){var _0x1e9755=function(_0x50cfc5){while(--_0x50cfc5){_0x23c57c['push'](_0x23c57c['shift']());}};_0x1e9755(++_0x9ed706);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x18ac3f,_0x386630){var _0x4c6563=function(_0xcc161f){while(--_0xcc161f){_0x18ac3f['push'](_0x18ac3f['shift']());}};_0x4c6563(++_0x386630);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 406d6d6..d2ec4a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2c9=['app.js','state','sequelize','exports','STRING','unique_name_and_version'];(function(_0x41d58c,_0x112c18){var _0x58ea45=function(_0x10ae6b){while(--_0x10ae6b){_0x41d58c['push'](_0x41d58c['shift']());}};_0x58ea45(++_0x112c18);}(_0xf2c9,0xa4));var _0x9f2c=function(_0x524d24,_0x20b81e){_0x524d24=_0x524d24-0x0;var _0x17e372=_0xf2c9[_0x524d24];return _0x17e372;};'use strict';var Sequelize=require(_0x9f2c('0x0'));module[_0x9f2c('0x1')]={'name':{'type':Sequelize[_0x9f2c('0x2')],'allowNull':![],'unique':_0x9f2c('0x3')},'version':{'type':Sequelize[_0x9f2c('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x9f2c('0x2')],'defaultValue':_0x9f2c('0x4')},'filename':{'type':Sequelize[_0x9f2c('0x2')]},'path':{'type':Sequelize[_0x9f2c('0x2')]},'type':{'type':Sequelize[_0x9f2c('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x9f2c('0x2')]},'logo':{'type':Sequelize[_0x9f2c('0x2')]},'state':{'type':Sequelize['STRING'],'unique':_0x9f2c('0x5')},'description':{'type':Sequelize[_0x9f2c('0x2')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x9f2c('0x2')]},'link':{'type':Sequelize[_0x9f2c('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x4c48=['STRING','unique_name_and_version','INTEGER','BOOLEAN'];(function(_0x5ad64b,_0x383cd2){var _0x2d13eb=function(_0x548020){while(--_0x548020){_0x5ad64b['push'](_0x5ad64b['shift']());}};_0x2d13eb(++_0x383cd2);}(_0x4c48,0x1e4));var _0x84c4=function(_0x122e9b,_0x391bf4){_0x122e9b=_0x122e9b-0x0;var _0x22c247=_0x4c48[_0x122e9b];return _0x22c247;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x84c4('0x0')],'allowNull':![],'unique':_0x84c4('0x1')},'version':{'type':Sequelize[_0x84c4('0x0')],'allowNull':![],'unique':_0x84c4('0x1')},'main':{'type':Sequelize[_0x84c4('0x0')],'defaultValue':'app.js'},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x84c4('0x0')]},'type':{'type':Sequelize[_0x84c4('0x0')]},'size':{'type':Sequelize[_0x84c4('0x2')]},'active':{'type':Sequelize[_0x84c4('0x3')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0x84c4('0x0')]},'state':{'type':Sequelize[_0x84c4('0x0')],'unique':'state'},'description':{'type':Sequelize[_0x84c4('0x0')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x84c4('0x0')],'defaultValue':'#'}};
\ No newline at end of file
index f59d559..ff2405e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['reject','save','update','destroy','then','stack','name','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','Integration','includeAll','catch','show','params','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x1673e7,_0x4baee6){var _0x1928fb=function(_0x5a922c){while(--_0x5a922c){_0x1673e7['push'](_0x1673e7['shift']());}};_0x1928fb(++_0x4baee6);}(_0xafc4,0x69));var _0x4afc=function(_0x2b1a8f,_0xc4e445){_0x2b1a8f=_0x2b1a8f-0x0;var _0x180aac=_0xafc4[_0x2b1a8f];return _0x180aac;};'use strict';var emlformat=require(_0x4afc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4afc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4afc('0x2'));var moment=require(_0x4afc('0x3'));var BPromise=require(_0x4afc('0x4'));var Mustache=require(_0x4afc('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4afc('0x6'));var ejs=require(_0x4afc('0x7'));var fs=require('fs');var fs_extra=require(_0x4afc('0x8'));var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x6'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var authService=require(_0x4afc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4afc('0x11'));var logger=require('../../config/logger')(_0x4afc('0x12'));var utils=require(_0x4afc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4afc('0x14'));var db=require(_0x4afc('0x15'))['db'];function respondWithStatusCode(_0x2b191c,_0x2768bf){_0x2768bf=_0x2768bf||0xcc;return function(_0x1d8f98){if(_0x1d8f98){return _0x2b191c[_0x4afc('0x16')](_0x2768bf);}return _0x2b191c[_0x4afc('0x17')](_0x2768bf)[_0x4afc('0x18')]();};}function respondWithResult(_0x5effb4,_0x26f3f1){_0x26f3f1=_0x26f3f1||0xc8;return function(_0x429fd8){if(_0x429fd8){return _0x5effb4[_0x4afc('0x17')](_0x26f3f1)[_0x4afc('0x19')](_0x429fd8);}};}function respondWithFilteredResult(_0x5f2dc9,_0x4e32e8){return function(_0x2452ae){if(_0x2452ae){var _0x4f3127=typeof _0x4e32e8[_0x4afc('0x1a')]===_0x4afc('0x1b')&&typeof _0x4e32e8[_0x4afc('0x1c')]===_0x4afc('0x1b');var _0x3a306f=_0x2452ae[_0x4afc('0x1d')];var _0x22f809=_0x4f3127?0x0:_0x4e32e8[_0x4afc('0x1a')];var _0x16365f=_0x4f3127?_0x2452ae[_0x4afc('0x1d')]:_0x4e32e8[_0x4afc('0x1a')]+_0x4e32e8['limit'];var _0x1a8f49;if(_0x16365f>=_0x3a306f){_0x16365f=_0x3a306f;_0x1a8f49=0xc8;}else{_0x1a8f49=0xce;}_0x5f2dc9[_0x4afc('0x17')](_0x1a8f49);return _0x5f2dc9[_0x4afc('0x1e')](_0x4afc('0x1f'),_0x22f809+'-'+_0x16365f+'/'+_0x3a306f)['json'](_0x2452ae);}return null;};}function patchUpdates(_0x3bddc0){return function(_0x30eda3){try{jsonpatch[_0x4afc('0x20')](_0x30eda3,_0x3bddc0,!![]);}catch(_0x280587){return BPromise[_0x4afc('0x21')](_0x280587);}return _0x30eda3[_0x4afc('0x22')]();};}function saveUpdates(_0x3ad7a5,_0x573a75){return function(_0x5403e4){if(_0x5403e4){return _0x5403e4[_0x4afc('0x23')](_0x3ad7a5)['then'](function(_0x37debf){return _0x37debf;});}return null;};}function removeEntity(_0x4e9a48,_0x1aa676){return function(_0x2a0314){if(_0x2a0314){return _0x2a0314[_0x4afc('0x24')]()[_0x4afc('0x25')](function(){_0x4e9a48[_0x4afc('0x17')](0xcc)[_0x4afc('0x18')]();});}};}function handleEntityNotFound(_0x40a0db,_0x383a71){return function(_0x2bb837){if(!_0x2bb837){_0x40a0db[_0x4afc('0x16')](0x194);}return _0x2bb837;};}function handleError(_0x4e8273,_0x359c07){_0x359c07=_0x359c07||0x1f4;return function(_0x35f5b3){logger['error'](_0x35f5b3[_0x4afc('0x26')]);if(_0x35f5b3[_0x4afc('0x27')]){delete _0x35f5b3[_0x4afc('0x27')];}_0x4e8273['status'](_0x359c07)['send'](_0x35f5b3);};}exports['index']=function(_0x426e9d,_0x5db47e){var _0x5e4747={},_0xd26d2f={},_0x628e42={'count':0x0,'rows':[]};var _0x494fe7=_['map'](db['Integration'][_0x4afc('0x28')],function(_0x34434a){return{'name':_0x34434a[_0x4afc('0x29')],'type':_0x34434a[_0x4afc('0x2a')][_0x4afc('0x2b')]};});_0xd26d2f[_0x4afc('0x2c')]=_['map'](_0x494fe7,_0x4afc('0x27'));_0xd26d2f[_0x4afc('0x2d')]=_[_0x4afc('0x2e')](_0x426e9d[_0x4afc('0x2d')]);_0xd26d2f[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0xd26d2f[_0x4afc('0x2c')],_0xd26d2f[_0x4afc('0x2d')]);_0x5e4747['attributes']=_[_0x4afc('0x30')](_0xd26d2f['model'],qs['fields'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x5e4747[_0x4afc('0x32')]=_0x5e4747[_0x4afc('0x32')][_0x4afc('0x33')]?_0x5e4747[_0x4afc('0x32')]:_0xd26d2f['model'];if(!_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x34')](_0x4afc('0x35'))){_0x5e4747[_0x4afc('0x1c')]=qs[_0x4afc('0x1c')](_0x426e9d[_0x4afc('0x2d')]['limit']);_0x5e4747[_0x4afc('0x1a')]=qs[_0x4afc('0x1a')](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x1a')]);}_0x5e4747['order']=qs['sort'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x36')]);_0x5e4747[_0x4afc('0x37')]=qs['filters'](_['pick'](_0x426e9d[_0x4afc('0x2d')],_0xd26d2f['filters']),_0x494fe7);if(_0x426e9d['query'][_0x4afc('0x38')]){_0x5e4747[_0x4afc('0x37')]=_[_0x4afc('0x39')](_0x5e4747[_0x4afc('0x37')],{'$or':_[_0x4afc('0x3a')](_0x494fe7,function(_0x4420fb){if(_0x4420fb[_0x4afc('0x2a')]!==_0x4afc('0x3b')){var _0x3ccc5a={};_0x3ccc5a[_0x4420fb[_0x4afc('0x27')]]={'$like':'%'+_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x38')]+'%'};return _0x3ccc5a;}})});}_0x5e4747=_[_0x4afc('0x39')]({},_0x5e4747,_0x426e9d[_0x4afc('0x3c')]);var _0x46dd2a={'where':_0x5e4747['where']};return db[_0x4afc('0x3d')][_0x4afc('0x1d')](_0x46dd2a)[_0x4afc('0x25')](function(_0xe6db12){_0x628e42[_0x4afc('0x1d')]=_0xe6db12;if(_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x3e')]){_0x5e4747['include']=[{'all':!![]}];}return db['Integration']['findAll'](_0x5e4747);})[_0x4afc('0x25')](function(_0x105c03){_0x628e42['rows']=_0x105c03;return _0x628e42;})[_0x4afc('0x25')](respondWithFilteredResult(_0x5db47e,_0x5e4747))[_0x4afc('0x3f')](handleError(_0x5db47e,null));};exports[_0x4afc('0x40')]=function(_0x397996,_0x545109){var _0x12b5db={'raw':![],'where':{'id':_0x397996[_0x4afc('0x41')]['id']}},_0x45c9c3={};_0x45c9c3[_0x4afc('0x2c')]=_[_0x4afc('0x2e')](db[_0x4afc('0x3d')]['rawAttributes']);_0x45c9c3[_0x4afc('0x2d')]=_['keys'](_0x397996[_0x4afc('0x2d')]);_0x45c9c3[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0x45c9c3['model'],_0x45c9c3['query']);_0x12b5db[_0x4afc('0x32')]=_[_0x4afc('0x30')](_0x45c9c3[_0x4afc('0x2c')],qs[_0x4afc('0x31')](_0x397996[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x12b5db[_0x4afc('0x32')]=_0x12b5db[_0x4afc('0x32')]['length']?_0x12b5db[_0x4afc('0x32')]:_0x45c9c3[_0x4afc('0x2c')];if(_0x397996['query'][_0x4afc('0x3e')]){_0x12b5db['include']=[{'all':!![]}];}_0x12b5db=_[_0x4afc('0x39')]({},_0x12b5db,_0x397996[_0x4afc('0x3c')]);return db[_0x4afc('0x3d')]['find'](_0x12b5db)[_0x4afc('0x25')](handleEntityNotFound(_0x545109,null))[_0x4afc('0x25')](respondWithResult(_0x545109,null))[_0x4afc('0x3f')](handleError(_0x545109,null));};exports[_0x4afc('0x42')]=function(_0x4772db,_0x19a0ac){return db['Integration']['create'](_0x4772db['body'],{})[_0x4afc('0x25')](respondWithResult(_0x19a0ac,0xc9))[_0x4afc('0x3f')](handleError(_0x19a0ac,null));};exports[_0x4afc('0x23')]=function(_0x269c24,_0xb5cca9){if(_0x269c24[_0x4afc('0x43')]['id']){delete _0x269c24[_0x4afc('0x43')]['id'];}return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x269c24[_0x4afc('0x41')]['id']}})['then'](handleEntityNotFound(_0xb5cca9,null))[_0x4afc('0x25')](saveUpdates(_0x269c24['body'],null))['then'](respondWithResult(_0xb5cca9,null))[_0x4afc('0x3f')](handleError(_0xb5cca9,null));};exports['destroy']=function(_0x428d78,_0x355198){return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x428d78['params']['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x355198,null))['then'](removeEntity(_0x355198,null))[_0x4afc('0x3f')](handleError(_0x355198,null));};
\ No newline at end of file
+var _0x7880=['set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','Integration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','keys','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit'];(function(_0x32fd68,_0x1715ce){var _0x29ce8e=function(_0x5ea7eb){while(--_0x5ea7eb){_0x32fd68['push'](_0x32fd68['shift']());}};_0x29ce8e(++_0x1715ce);}(_0x7880,0x1f4));var _0x0788=function(_0x42ecb5,_0x20b4d2){_0x42ecb5=_0x42ecb5-0x0;var _0x487442=_0x7880[_0x42ecb5];return _0x487442;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0788('0x0'));var zipdir=require(_0x0788('0x1'));var jsonpatch=require(_0x0788('0x2'));var rp=require(_0x0788('0x3'));var moment=require(_0x0788('0x4'));var BPromise=require(_0x0788('0x5'));var Mustache=require('mustache');var util=require(_0x0788('0x6'));var path=require(_0x0788('0x7'));var sox=require(_0x0788('0x8'));var csv=require(_0x0788('0x9'));var ejs=require(_0x0788('0xa'));var fs=require('fs');var fs_extra=require(_0x0788('0xb'));var _=require(_0x0788('0xc'));var squel=require(_0x0788('0xd'));var crypto=require(_0x0788('0xe'));var jsforce=require(_0x0788('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0788('0x9'));var querystring=require('querystring');var Papa=require(_0x0788('0x10'));var Redis=require('ioredis');var authService=require(_0x0788('0x11'));var qs=require(_0x0788('0x12'));var as=require(_0x0788('0x13'));var hardwareService=require(_0x0788('0x14'));var logger=require(_0x0788('0x15'))('api');var utils=require(_0x0788('0x16'));var config=require(_0x0788('0x17'));var licenseUtil=require(_0x0788('0x18'));var db=require(_0x0788('0x19'))['db'];function respondWithStatusCode(_0x311729,_0xce4342){_0xce4342=_0xce4342||0xcc;return function(_0x261ebc){if(_0x261ebc){return _0x311729['sendStatus'](_0xce4342);}return _0x311729[_0x0788('0x1a')](_0xce4342)[_0x0788('0x1b')]();};}function respondWithResult(_0x3bdcdf,_0x13cf07){_0x13cf07=_0x13cf07||0xc8;return function(_0x51e5d3){if(_0x51e5d3){return _0x3bdcdf[_0x0788('0x1a')](_0x13cf07)['json'](_0x51e5d3);}};}function respondWithFilteredResult(_0x195f14,_0x170d56){return function(_0x3fd1e4){if(_0x3fd1e4){var _0xb406fb=typeof _0x170d56[_0x0788('0x1c')]===_0x0788('0x1d')&&typeof _0x170d56['limit']==='undefined';var _0x17d805=_0x3fd1e4[_0x0788('0x1e')];var _0x5b2bdc=_0xb406fb?0x0:_0x170d56[_0x0788('0x1c')];var _0x415f19=_0xb406fb?_0x3fd1e4[_0x0788('0x1e')]:_0x170d56['offset']+_0x170d56[_0x0788('0x1f')];var _0x3fb723;if(_0x415f19>=_0x17d805){_0x415f19=_0x17d805;_0x3fb723=0xc8;}else{_0x3fb723=0xce;}_0x195f14['status'](_0x3fb723);return _0x195f14[_0x0788('0x20')]('Content-Range',_0x5b2bdc+'-'+_0x415f19+'/'+_0x17d805)[_0x0788('0x21')](_0x3fd1e4);}return null;};}function patchUpdates(_0x48bc5f){return function(_0x17cca3){try{jsonpatch[_0x0788('0x22')](_0x17cca3,_0x48bc5f,!![]);}catch(_0x18ff22){return BPromise[_0x0788('0x23')](_0x18ff22);}return _0x17cca3[_0x0788('0x24')]();};}function saveUpdates(_0x4f0005,_0x48ec43){return function(_0x2270d4){if(_0x2270d4){return _0x2270d4[_0x0788('0x25')](_0x4f0005)[_0x0788('0x26')](function(_0x7a99a1){return _0x7a99a1;});}return null;};}function removeEntity(_0x5ba1da,_0x4d5c93){return function(_0x79204e){if(_0x79204e){return _0x79204e[_0x0788('0x27')]()[_0x0788('0x26')](function(){_0x5ba1da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x240459,_0xa1f7dc){return function(_0x5f2dda){if(!_0x5f2dda){_0x240459['sendStatus'](0x194);}return _0x5f2dda;};}function handleError(_0x5a54a5,_0x44798c){_0x44798c=_0x44798c||0x1f4;return function(_0x57fda1){logger[_0x0788('0x28')](_0x57fda1[_0x0788('0x29')]);if(_0x57fda1[_0x0788('0x2a')]){delete _0x57fda1[_0x0788('0x2a')];}_0x5a54a5[_0x0788('0x1a')](_0x44798c)[_0x0788('0x2b')](_0x57fda1);};}exports[_0x0788('0x2c')]=function(_0x3ffe4f,_0x5b7594){var _0x5a5178={},_0x3c5246={},_0x40d345={'count':0x0,'rows':[]};var _0x54979a=_['map'](db[_0x0788('0x2d')][_0x0788('0x2e')],function(_0x20fcd8){return{'name':_0x20fcd8[_0x0788('0x2f')],'type':_0x20fcd8[_0x0788('0x30')][_0x0788('0x31')]};});_0x3c5246[_0x0788('0x32')]=_[_0x0788('0x33')](_0x54979a,_0x0788('0x2a'));_0x3c5246[_0x0788('0x34')]=_['keys'](_0x3ffe4f[_0x0788('0x34')]);_0x3c5246[_0x0788('0x35')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],_0x3c5246[_0x0788('0x34')]);_0x5a5178[_0x0788('0x37')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],qs[_0x0788('0x38')](_0x3ffe4f[_0x0788('0x34')]['fields']));_0x5a5178['attributes']=_0x5a5178['attributes']['length']?_0x5a5178['attributes']:_0x3c5246['model'];if(!_0x3ffe4f[_0x0788('0x34')][_0x0788('0x39')](_0x0788('0x3a'))){_0x5a5178['limit']=qs[_0x0788('0x1f')](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x1f')]);_0x5a5178[_0x0788('0x1c')]=qs['offset'](_0x3ffe4f[_0x0788('0x34')]['offset']);}_0x5a5178[_0x0788('0x3b')]=qs['sort'](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3c')]);_0x5a5178['where']=qs[_0x0788('0x35')](_[_0x0788('0x3d')](_0x3ffe4f['query'],_0x3c5246[_0x0788('0x35')]),_0x54979a);if(_0x3ffe4f['query'][_0x0788('0x3e')]){_0x5a5178['where']=_[_0x0788('0x3f')](_0x5a5178['where'],{'$or':_[_0x0788('0x33')](_0x54979a,function(_0x57fec9){if(_0x57fec9['type']!==_0x0788('0x40')){var _0x68d9d4={};_0x68d9d4[_0x57fec9[_0x0788('0x2a')]]={'$like':'%'+_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3e')]+'%'};return _0x68d9d4;}})});}_0x5a5178=_['merge']({},_0x5a5178,_0x3ffe4f['options']);var _0x530d83={'where':_0x5a5178['where']};return db[_0x0788('0x2d')][_0x0788('0x1e')](_0x530d83)[_0x0788('0x26')](function(_0x358a22){_0x40d345[_0x0788('0x1e')]=_0x358a22;if(_0x3ffe4f['query']['includeAll']){_0x5a5178[_0x0788('0x41')]=[{'all':!![]}];}return db[_0x0788('0x2d')][_0x0788('0x42')](_0x5a5178);})[_0x0788('0x26')](function(_0x236b63){_0x40d345[_0x0788('0x43')]=_0x236b63;return _0x40d345;})[_0x0788('0x26')](respondWithFilteredResult(_0x5b7594,_0x5a5178))[_0x0788('0x44')](handleError(_0x5b7594,null));};exports[_0x0788('0x45')]=function(_0x50e8f5,_0x5581e6){var _0x441aec={'raw':![],'where':{'id':_0x50e8f5[_0x0788('0x46')]['id']}},_0x1d579d={};_0x1d579d['model']=_['keys'](db['Integration'][_0x0788('0x2e')]);_0x1d579d[_0x0788('0x34')]=_[_0x0788('0x47')](_0x50e8f5[_0x0788('0x34')]);_0x1d579d[_0x0788('0x35')]=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],_0x1d579d[_0x0788('0x34')]);_0x441aec['attributes']=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],qs[_0x0788('0x38')](_0x50e8f5[_0x0788('0x34')]['fields']));_0x441aec[_0x0788('0x37')]=_0x441aec[_0x0788('0x37')]['length']?_0x441aec['attributes']:_0x1d579d['model'];if(_0x50e8f5[_0x0788('0x34')]['includeAll']){_0x441aec[_0x0788('0x41')]=[{'all':!![]}];}_0x441aec=_[_0x0788('0x3f')]({},_0x441aec,_0x50e8f5[_0x0788('0x48')]);return db[_0x0788('0x2d')][_0x0788('0x49')](_0x441aec)[_0x0788('0x26')](handleEntityNotFound(_0x5581e6,null))[_0x0788('0x26')](respondWithResult(_0x5581e6,null))[_0x0788('0x44')](handleError(_0x5581e6,null));};exports['create']=function(_0x4c6366,_0x39c3cc){return db[_0x0788('0x2d')][_0x0788('0x4a')](_0x4c6366['body'],{})[_0x0788('0x26')](respondWithResult(_0x39c3cc,0xc9))[_0x0788('0x44')](handleError(_0x39c3cc,null));};exports[_0x0788('0x25')]=function(_0x4563cd,_0x2395ad){if(_0x4563cd['body']['id']){delete _0x4563cd['body']['id'];}return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x4563cd['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x2395ad,null))['then'](saveUpdates(_0x4563cd[_0x0788('0x4b')],null))[_0x0788('0x26')](respondWithResult(_0x2395ad,null))[_0x0788('0x44')](handleError(_0x2395ad,null));};exports[_0x0788('0x27')]=function(_0x3c757a,_0x379928){return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x3c757a['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x379928,null))[_0x0788('0x26')](removeEntity(_0x379928,null))[_0x0788('0x44')](handleError(_0x379928,null));};
\ No newline at end of file
index 40f91f5..654765b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x583a=['bluebird','request-promise','path','rimraf','./integration.attributes','exports','define','Integration','integrations','lodash','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x583a,0xd9));var _0xa583=function(_0x25fa5c,_0x421141){_0x25fa5c=_0x25fa5c-0x0;var _0x1bade2=_0x583a[_0x25fa5c];return _0x1bade2;};'use strict';var _=require(_0xa583('0x0'));var util=require(_0xa583('0x1'));var logger=require(_0xa583('0x2'))(_0xa583('0x3'));var moment=require('moment');var BPromise=require(_0xa583('0x4'));var rp=require(_0xa583('0x5'));var fs=require('fs');var path=require(_0xa583('0x6'));var rimraf=require(_0xa583('0x7'));var config=require('../../config/environment');var attributes=require(_0xa583('0x8'));module[_0xa583('0x9')]=function(_0x148563,_0x3daa38){return _0x148563[_0xa583('0xa')](_0xa583('0xb'),attributes,{'tableName':_0xa583('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd9b9=['exports','Integration','integrations','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x572dac,_0x3d2461){var _0x4e5d20=function(_0x1fd146){while(--_0x1fd146){_0x572dac['push'](_0x572dac['shift']());}};_0x4e5d20(++_0x3d2461);}(_0xd9b9,0x10b));var _0x9d9b=function(_0x436b71,_0x52c543){_0x436b71=_0x436b71-0x0;var _0x5b4101=_0xd9b9[_0x436b71];return _0x5b4101;};'use strict';var _=require('lodash');var util=require(_0x9d9b('0x0'));var logger=require(_0x9d9b('0x1'))(_0x9d9b('0x2'));var moment=require(_0x9d9b('0x3'));var BPromise=require('bluebird');var rp=require(_0x9d9b('0x4'));var fs=require('fs');var path=require(_0x9d9b('0x5'));var rimraf=require(_0x9d9b('0x6'));var config=require(_0x9d9b('0x7'));var attributes=require('./integration.attributes');module[_0x9d9b('0x8')]=function(_0x70b0,_0x1be074){return _0x70b0['define'](_0x9d9b('0x9'),attributes,{'tableName':_0x9d9b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b8fc3d..f42db5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x4975,0x86));var _0x5497=function(_0x26b0d7,_0x41f32c){_0x26b0d7=_0x26b0d7-0x0;var _0x4237c8=_0x4975[_0x26b0d7];return _0x4237c8;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('Integration,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
+var _0x896e=['Integration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x1e384d,_0xf98b3e){var _0x19654d=function(_0x33cd2c){while(--_0x33cd2c){_0x1e384d['push'](_0x1e384d['shift']());}};_0x19654d(++_0xf98b3e);}(_0x896e,0x1e9));var _0xe896=function(_0x75a658,_0x3d5d62){_0x75a658=_0x75a658-0x0;var _0x1ca97a=_0x896e[_0x75a658];return _0x1ca97a;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('Integration,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('Integration,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}
\ No newline at end of file
index fc0c8ee..1734511 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x5f2f,0x73));var _0xf5f2=function(_0x374b9f,_0x35d296){_0x374b9f=_0x374b9f-0x0;var _0x4e6423=_0x5f2f[_0x374b9f];return _0x4e6423;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')]('/',auth[_0xf5f2('0xa')](),controller['create']);router[_0xf5f2('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);router[_0xf5f2('0x13')]('/:id',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x14')]);module[_0xf5f2('0x15')]=router;
\ No newline at end of file
+var _0xef0f=['update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x105243,_0x24455f){var _0x3591ac=function(_0x39fb7c){while(--_0x39fb7c){_0x105243['push'](_0x105243['shift']());}};_0x3591ac(++_0x24455f);}(_0xef0f,0x168));var _0xfef0=function(_0x128c8d,_0x5420b4){_0x128c8d=_0x128c8d-0x0;var _0xab3422=_0xef0f[_0x128c8d];return _0xab3422;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0xf')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x11')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x13')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x14')]);module['exports']=router;
\ No newline at end of file
index 30e261f..69c54cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ff=['DATE','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xb2ff,0xee));var _0xfb2f=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb2ff[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0xfb2f('0x0'));module[_0xfb2f('0x1')]={'integration':{'type':Sequelize[_0xfb2f('0x2')]},'eventChannel':{'type':Sequelize[_0xfb2f('0x2')]},'exitStatus':{'type':Sequelize[_0xfb2f('0x2')]},'ticketId':{'type':Sequelize[_0xfb2f('0x2')]},'integrationId':{'type':Sequelize[_0xfb2f('0x3')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xfb2f('0x2')]},'calleridnum':{'type':Sequelize[_0xfb2f('0x2')]},'calleridname':{'type':Sequelize[_0xfb2f('0x2')]},'queue':{'type':Sequelize[_0xfb2f('0x2')]},'interface':{'type':Sequelize[_0xfb2f('0x2')]},'membername':{'type':Sequelize[_0xfb2f('0x2')]},'agentcalledAt':{'type':Sequelize[_0xfb2f('0x4')]},'agentconnectAt':{'type':Sequelize[_0xfb2f('0x4')]},'holdtime':{'type':Sequelize[_0xfb2f('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xfb2f('0x4')]},'talktime':{'type':Sequelize[_0xfb2f('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xfb2f('0x3')]},'reason':{'type':Sequelize[_0xfb2f('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xfb2f('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xfb2f('0x4')]},'agentdump':{'type':Sequelize[_0xfb2f('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xfb2f('0x2')]},'channel':{'type':Sequelize[_0xfb2f('0x2')]},'channelstate':{'type':Sequelize[_0xfb2f('0x3')]},'channelstatedesc':{'type':Sequelize[_0xfb2f('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xfb2f('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xfb2f('0x2')]},'exten':{'type':Sequelize[_0xfb2f('0x2')]},'priority':{'type':Sequelize[_0xfb2f('0x2')]},'destchannel':{'type':Sequelize[_0xfb2f('0x2')]},'destchannelstate':{'type':Sequelize[_0xfb2f('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xfb2f('0x2')]},'destcalleridnum':{'type':Sequelize[_0xfb2f('0x2')]},'destcalleridname':{'type':Sequelize[_0xfb2f('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xfb2f('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xfb2f('0x2')]},'destlanguage':{'type':Sequelize[_0xfb2f('0x2')]},'destaccountcode':{'type':Sequelize[_0xfb2f('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xfb2f('0x2')]},'destpriority':{'type':Sequelize[_0xfb2f('0x2')]},'destuniqueid':{'type':Sequelize[_0xfb2f('0x2')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0xfb2f('0x2')]},'to':{'type':Sequelize[_0xfb2f('0x2')]},'cc':{'type':Sequelize[_0xfb2f('0x2')]},'attachment':{'type':Sequelize[_0xfb2f('0x6')]},'html':{'type':Sequelize[_0xfb2f('0x6')]},'text':{'type':Sequelize[_0xfb2f('0x6')]},'status':{'type':Sequelize[_0xfb2f('0x7')]('SENT',_0xfb2f('0x8'),_0xfb2f('0x9'),_0xfb2f('0xa'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0xfb2f('0x2')]},'appdata':{'type':Sequelize[_0xfb2f('0x2')]},'projectId':{'type':Sequelize[_0xfb2f('0x3')]}};
\ No newline at end of file
+var _0x2142=['INTEGER','DATE','BOOLEAN','TEXT','SENT','SENDING','RECEIVED','FAILED','sequelize','STRING'];(function(_0x561785,_0x38c5a6){var _0x3e43d2=function(_0x58094e){while(--_0x58094e){_0x561785['push'](_0x561785['shift']());}};_0x3e43d2(++_0x38c5a6);}(_0x2142,0xbc));var _0x2214=function(_0x139a23,_0x184a3f){_0x139a23=_0x139a23-0x0;var _0x4da424=_0x2142[_0x139a23];return _0x4da424;};'use strict';var Sequelize=require(_0x2214('0x0'));module['exports']={'integration':{'type':Sequelize[_0x2214('0x1')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x2214('0x1')]},'ticketId':{'type':Sequelize[_0x2214('0x1')]},'integrationId':{'type':Sequelize[_0x2214('0x2')]},'contacts':{'type':Sequelize[_0x2214('0x1')]},'uniqueid':{'type':Sequelize[_0x2214('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x2214('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x2214('0x1')]},'membername':{'type':Sequelize[_0x2214('0x1')]},'agentcalledAt':{'type':Sequelize[_0x2214('0x3')]},'agentconnectAt':{'type':Sequelize[_0x2214('0x3')]},'holdtime':{'type':Sequelize[_0x2214('0x2')]},'agentcomplete':{'type':Sequelize[_0x2214('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x2214('0x3')]},'talktime':{'type':Sequelize[_0x2214('0x2')]},'agentacw':{'type':Sequelize[_0x2214('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2214('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x2214('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x2214('0x3')]},'agentdump':{'type':Sequelize[_0x2214('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x2214('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x2214('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x2214('0x1')]},'connectedlinenum':{'type':Sequelize[_0x2214('0x1')]},'connectedlinename':{'type':Sequelize[_0x2214('0x1')]},'language':{'type':Sequelize[_0x2214('0x1')]},'accountcode':{'type':Sequelize[_0x2214('0x1')]},'context':{'type':Sequelize[_0x2214('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x2214('0x1')]},'destchannel':{'type':Sequelize[_0x2214('0x1')]},'destchannelstate':{'type':Sequelize[_0x2214('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x2214('0x1')]},'destcalleridnum':{'type':Sequelize[_0x2214('0x1')]},'destcalleridname':{'type':Sequelize[_0x2214('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x2214('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x2214('0x1')]},'destlanguage':{'type':Sequelize[_0x2214('0x1')]},'destaccountcode':{'type':Sequelize[_0x2214('0x1')]},'destcontext':{'type':Sequelize[_0x2214('0x1')]},'destexten':{'type':Sequelize[_0x2214('0x1')]},'destpriority':{'type':Sequelize[_0x2214('0x1')]},'destuniqueid':{'type':Sequelize[_0x2214('0x1')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0x2214('0x1')]},'from':{'type':Sequelize[_0x2214('0x1')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x2214('0x1')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0x2214('0x5')]},'text':{'type':Sequelize[_0x2214('0x5')]},'status':{'type':Sequelize['ENUM'](_0x2214('0x6'),_0x2214('0x7'),_0x2214('0x8'),_0x2214('0x9'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x2214('0x2')]}};
\ No newline at end of file
index 7f0260d..242b916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7585=['merge','filter','options','includeAll','include','findAll','show','length','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','IntegrationReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','offset','order','sort','where'];(function(_0x351af1,_0x2770f7){var _0x2aaafd=function(_0x149d25){while(--_0x149d25){_0x351af1['push'](_0x351af1['shift']());}};_0x2aaafd(++_0x2770f7);}(_0x7585,0x19e));var _0x5758=function(_0x29f310,_0x1548ad){_0x29f310=_0x29f310-0x0;var _0x466331=_0x7585[_0x29f310];return _0x466331;};'use strict';var emlformat=require(_0x5758('0x0'));var rimraf=require(_0x5758('0x1'));var zipdir=require(_0x5758('0x2'));var jsonpatch=require(_0x5758('0x3'));var rp=require(_0x5758('0x4'));var moment=require(_0x5758('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5758('0x6'));var util=require(_0x5758('0x7'));var path=require(_0x5758('0x8'));var sox=require(_0x5758('0x9'));var csv=require(_0x5758('0xa'));var ejs=require(_0x5758('0xb'));var fs=require('fs');var fs_extra=require(_0x5758('0xc'));var _=require(_0x5758('0xd'));var squel=require(_0x5758('0xe'));var crypto=require('crypto');var jsforce=require(_0x5758('0xf'));var deskjs=require(_0x5758('0x10'));var toCsv=require(_0x5758('0xa'));var querystring=require(_0x5758('0x11'));var Papa=require(_0x5758('0x12'));var Redis=require(_0x5758('0x13'));var authService=require(_0x5758('0x14'));var qs=require(_0x5758('0x15'));var as=require(_0x5758('0x16'));var hardwareService=require(_0x5758('0x17'));var logger=require(_0x5758('0x18'))(_0x5758('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5758('0x1a'));var db=require(_0x5758('0x1b'))['db'];function respondWithStatusCode(_0x234616,_0x1a53e3){_0x1a53e3=_0x1a53e3||0xcc;return function(_0xc50a58){if(_0xc50a58){return _0x234616[_0x5758('0x1c')](_0x1a53e3);}return _0x234616['status'](_0x1a53e3)[_0x5758('0x1d')]();};}function respondWithResult(_0x42314b,_0x2f7a9e){_0x2f7a9e=_0x2f7a9e||0xc8;return function(_0x4c687f){if(_0x4c687f){return _0x42314b[_0x5758('0x1e')](_0x2f7a9e)[_0x5758('0x1f')](_0x4c687f);}};}function respondWithFilteredResult(_0x2cf9eb,_0x572e36){return function(_0x24ad35){if(_0x24ad35){var _0x3d7638=typeof _0x572e36['offset']===_0x5758('0x20')&&typeof _0x572e36[_0x5758('0x21')]==='undefined';var _0x529a67=_0x24ad35[_0x5758('0x22')];var _0x5909d1=_0x3d7638?0x0:_0x572e36['offset'];var _0x2a5828=_0x3d7638?_0x24ad35[_0x5758('0x22')]:_0x572e36['offset']+_0x572e36[_0x5758('0x21')];var _0x1e7355;if(_0x2a5828>=_0x529a67){_0x2a5828=_0x529a67;_0x1e7355=0xc8;}else{_0x1e7355=0xce;}_0x2cf9eb[_0x5758('0x1e')](_0x1e7355);return _0x2cf9eb[_0x5758('0x23')](_0x5758('0x24'),_0x5909d1+'-'+_0x2a5828+'/'+_0x529a67)[_0x5758('0x1f')](_0x24ad35);}return null;};}function patchUpdates(_0x3f4b28){return function(_0x437dbe){try{jsonpatch[_0x5758('0x25')](_0x437dbe,_0x3f4b28,!![]);}catch(_0x3e1216){return BPromise[_0x5758('0x26')](_0x3e1216);}return _0x437dbe[_0x5758('0x27')]();};}function saveUpdates(_0x122bdc,_0x1fb210){return function(_0x58ab17){if(_0x58ab17){return _0x58ab17[_0x5758('0x28')](_0x122bdc)[_0x5758('0x29')](function(_0x5e1b99){return _0x5e1b99;});}return null;};}function removeEntity(_0x4c8b05,_0x3fa508){return function(_0x332a0c){if(_0x332a0c){return _0x332a0c[_0x5758('0x2a')]()[_0x5758('0x29')](function(){_0x4c8b05[_0x5758('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e567c,_0x1be9e9){return function(_0x2baa7e){if(!_0x2baa7e){_0x3e567c[_0x5758('0x1c')](0x194);}return _0x2baa7e;};}function handleError(_0xaa1244,_0x55dd83){_0x55dd83=_0x55dd83||0x1f4;return function(_0x19009a){logger[_0x5758('0x2b')](_0x19009a[_0x5758('0x2c')]);if(_0x19009a[_0x5758('0x2d')]){delete _0x19009a[_0x5758('0x2d')];}_0xaa1244[_0x5758('0x1e')](_0x55dd83)[_0x5758('0x2e')](_0x19009a);};}exports['index']=function(_0x5c65e5,_0x25e044){var _0x13ac2f={},_0x4a3457={},_0x4a980e={'count':0x0,'rows':[]};var _0x282e82=_[_0x5758('0x2f')](db[_0x5758('0x30')][_0x5758('0x31')],function(_0x13085e){return{'name':_0x13085e[_0x5758('0x32')],'type':_0x13085e[_0x5758('0x33')][_0x5758('0x34')]};});_0x4a3457['model']=_['map'](_0x282e82,'name');_0x4a3457[_0x5758('0x35')]=_[_0x5758('0x36')](_0x5c65e5[_0x5758('0x35')]);_0x4a3457[_0x5758('0x37')]=_[_0x5758('0x38')](_0x4a3457['model'],_0x4a3457[_0x5758('0x35')]);_0x13ac2f[_0x5758('0x39')]=_[_0x5758('0x38')](_0x4a3457[_0x5758('0x3a')],qs[_0x5758('0x3b')](_0x5c65e5[_0x5758('0x35')]['fields']));_0x13ac2f[_0x5758('0x39')]=_0x13ac2f['attributes']['length']?_0x13ac2f[_0x5758('0x39')]:_0x4a3457[_0x5758('0x3a')];if(!_0x5c65e5[_0x5758('0x35')][_0x5758('0x3c')](_0x5758('0x3d'))){_0x13ac2f[_0x5758('0x21')]=qs[_0x5758('0x21')](_0x5c65e5[_0x5758('0x35')][_0x5758('0x21')]);_0x13ac2f['offset']=qs[_0x5758('0x3e')](_0x5c65e5[_0x5758('0x35')]['offset']);}_0x13ac2f[_0x5758('0x3f')]=qs[_0x5758('0x40')](_0x5c65e5['query']['sort']);_0x13ac2f[_0x5758('0x41')]=qs['filters'](_['pick'](_0x5c65e5['query'],_0x4a3457[_0x5758('0x37')]),_0x282e82);if(_0x5c65e5[_0x5758('0x35')]['filter']){_0x13ac2f[_0x5758('0x41')]=_[_0x5758('0x42')](_0x13ac2f[_0x5758('0x41')],{'$or':_[_0x5758('0x2f')](_0x282e82,function(_0x5db55b){if(_0x5db55b[_0x5758('0x33')]!=='VIRTUAL'){var _0x544de2={};_0x544de2[_0x5db55b[_0x5758('0x2d')]]={'$like':'%'+_0x5c65e5[_0x5758('0x35')][_0x5758('0x43')]+'%'};return _0x544de2;}})});}_0x13ac2f=_[_0x5758('0x42')]({},_0x13ac2f,_0x5c65e5[_0x5758('0x44')]);var _0x301aa8={'where':_0x13ac2f['where']};return db[_0x5758('0x30')][_0x5758('0x22')](_0x301aa8)['then'](function(_0x5bf446){_0x4a980e[_0x5758('0x22')]=_0x5bf446;if(_0x5c65e5[_0x5758('0x35')][_0x5758('0x45')]){_0x13ac2f[_0x5758('0x46')]=[{'all':!![]}];}return db[_0x5758('0x30')][_0x5758('0x47')](_0x13ac2f);})[_0x5758('0x29')](function(_0x2f8f51){_0x4a980e['rows']=_0x2f8f51;return _0x4a980e;})['then'](respondWithFilteredResult(_0x25e044,_0x13ac2f))['catch'](handleError(_0x25e044,null));};exports[_0x5758('0x48')]=function(_0x47c8db,_0x32a0dd){var _0x2183a9={'raw':![],'where':{'id':_0x47c8db['params']['id']}},_0x5d9ea1={};_0x5d9ea1[_0x5758('0x3a')]=_[_0x5758('0x36')](db[_0x5758('0x30')][_0x5758('0x31')]);_0x5d9ea1[_0x5758('0x35')]=_[_0x5758('0x36')](_0x47c8db['query']);_0x5d9ea1[_0x5758('0x37')]=_[_0x5758('0x38')](_0x5d9ea1[_0x5758('0x3a')],_0x5d9ea1[_0x5758('0x35')]);_0x2183a9[_0x5758('0x39')]=_[_0x5758('0x38')](_0x5d9ea1[_0x5758('0x3a')],qs[_0x5758('0x3b')](_0x47c8db[_0x5758('0x35')]['fields']));_0x2183a9[_0x5758('0x39')]=_0x2183a9['attributes'][_0x5758('0x49')]?_0x2183a9[_0x5758('0x39')]:_0x5d9ea1[_0x5758('0x3a')];if(_0x47c8db[_0x5758('0x35')][_0x5758('0x45')]){_0x2183a9[_0x5758('0x46')]=[{'all':!![]}];}_0x2183a9=_['merge']({},_0x2183a9,_0x47c8db[_0x5758('0x44')]);return db[_0x5758('0x30')][_0x5758('0x4a')](_0x2183a9)['then'](handleEntityNotFound(_0x32a0dd,null))[_0x5758('0x29')](respondWithResult(_0x32a0dd,null))[_0x5758('0x4b')](handleError(_0x32a0dd,null));};exports[_0x5758('0x4c')]=function(_0x4f0dfb,_0x4ffe16){return db[_0x5758('0x30')][_0x5758('0x4c')](_0x4f0dfb['body'],{})['then'](respondWithResult(_0x4ffe16,0xc9))[_0x5758('0x4b')](handleError(_0x4ffe16,null));};exports['update']=function(_0x25ac76,_0x38c90e){if(_0x25ac76[_0x5758('0x4d')]['id']){delete _0x25ac76[_0x5758('0x4d')]['id'];}return db[_0x5758('0x30')]['find']({'where':{'id':_0x25ac76[_0x5758('0x4e')]['id']}})['then'](handleEntityNotFound(_0x38c90e,null))['then'](saveUpdates(_0x25ac76['body'],null))[_0x5758('0x29')](respondWithResult(_0x38c90e,null))[_0x5758('0x4b')](handleError(_0x38c90e,null));};exports['destroy']=function(_0x1dff7f,_0x5b5211){return db[_0x5758('0x30')]['find']({'where':{'id':_0x1dff7f[_0x5758('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5b5211,null))[_0x5758('0x29')](removeEntity(_0x5b5211,null))[_0x5758('0x4b')](handleError(_0x5b5211,null));};exports['describe']=function(_0x5f28a4,_0x1f1b8){return db['IntegrationReport'][_0x5758('0x4f')]()[_0x5758('0x29')](respondWithResult(_0x1f1b8,null))['catch'](handleError(_0x1f1b8,null));};
\ No newline at end of file
+var _0xb7ed=['order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','options','create','body','find','params','destroy','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','IntegrationReport','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x59b816,_0x45ee31){var _0x76fd06=function(_0x5520dc){while(--_0x5520dc){_0x59b816['push'](_0x59b816['shift']());}};_0x76fd06(++_0x45ee31);}(_0xb7ed,0x1e7));var _0xdb7e=function(_0x5ca644,_0x3d2165){_0x5ca644=_0x5ca644-0x0;var _0x5c87a2=_0xb7ed[_0x5ca644];return _0x5c87a2;};'use strict';var emlformat=require(_0xdb7e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdb7e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdb7e('0x2'));var moment=require(_0xdb7e('0x3'));var BPromise=require(_0xdb7e('0x4'));var Mustache=require(_0xdb7e('0x5'));var util=require('util');var path=require(_0xdb7e('0x6'));var sox=require(_0xdb7e('0x7'));var csv=require('to-csv');var ejs=require(_0xdb7e('0x8'));var fs=require('fs');var fs_extra=require(_0xdb7e('0x9'));var _=require(_0xdb7e('0xa'));var squel=require('squel');var crypto=require(_0xdb7e('0xb'));var jsforce=require(_0xdb7e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xdb7e('0xd'));var querystring=require(_0xdb7e('0xe'));var Papa=require(_0xdb7e('0xf'));var Redis=require('ioredis');var authService=require(_0xdb7e('0x10'));var qs=require(_0xdb7e('0x11'));var as=require(_0xdb7e('0x12'));var hardwareService=require(_0xdb7e('0x13'));var logger=require('../../config/logger')(_0xdb7e('0x14'));var utils=require(_0xdb7e('0x15'));var config=require(_0xdb7e('0x16'));var licenseUtil=require(_0xdb7e('0x17'));var db=require(_0xdb7e('0x18'))['db'];function respondWithStatusCode(_0x1f9e34,_0x17dc60){_0x17dc60=_0x17dc60||0xcc;return function(_0x134351){if(_0x134351){return _0x1f9e34[_0xdb7e('0x19')](_0x17dc60);}return _0x1f9e34['status'](_0x17dc60)[_0xdb7e('0x1a')]();};}function respondWithResult(_0x10be98,_0x487df5){_0x487df5=_0x487df5||0xc8;return function(_0xf00a7e){if(_0xf00a7e){return _0x10be98[_0xdb7e('0x1b')](_0x487df5)[_0xdb7e('0x1c')](_0xf00a7e);}};}function respondWithFilteredResult(_0x43d241,_0x12e52e){return function(_0x28cd0f){if(_0x28cd0f){var _0x5d49b6=typeof _0x12e52e[_0xdb7e('0x1d')]===_0xdb7e('0x1e')&&typeof _0x12e52e['limit']===_0xdb7e('0x1e');var _0xce31df=_0x28cd0f[_0xdb7e('0x1f')];var _0x5c5b29=_0x5d49b6?0x0:_0x12e52e[_0xdb7e('0x1d')];var _0x3fe70c=_0x5d49b6?_0x28cd0f['count']:_0x12e52e['offset']+_0x12e52e[_0xdb7e('0x20')];var _0x55d0f7;if(_0x3fe70c>=_0xce31df){_0x3fe70c=_0xce31df;_0x55d0f7=0xc8;}else{_0x55d0f7=0xce;}_0x43d241['status'](_0x55d0f7);return _0x43d241['set'](_0xdb7e('0x21'),_0x5c5b29+'-'+_0x3fe70c+'/'+_0xce31df)[_0xdb7e('0x1c')](_0x28cd0f);}return null;};}function patchUpdates(_0x2baa21){return function(_0xd10a62){try{jsonpatch[_0xdb7e('0x22')](_0xd10a62,_0x2baa21,!![]);}catch(_0x2f8933){return BPromise[_0xdb7e('0x23')](_0x2f8933);}return _0xd10a62[_0xdb7e('0x24')]();};}function saveUpdates(_0x1af02d,_0x498d31){return function(_0x1b0584){if(_0x1b0584){return _0x1b0584[_0xdb7e('0x25')](_0x1af02d)[_0xdb7e('0x26')](function(_0x38a190){return _0x38a190;});}return null;};}function removeEntity(_0x123844,_0x1f8a2d){return function(_0x261bba){if(_0x261bba){return _0x261bba['destroy']()[_0xdb7e('0x26')](function(){_0x123844[_0xdb7e('0x1b')](0xcc)[_0xdb7e('0x1a')]();});}};}function handleEntityNotFound(_0x3a1c4c,_0x503985){return function(_0x2cd63){if(!_0x2cd63){_0x3a1c4c[_0xdb7e('0x19')](0x194);}return _0x2cd63;};}function handleError(_0xd3ca13,_0x30627c){_0x30627c=_0x30627c||0x1f4;return function(_0x3e1de9){logger[_0xdb7e('0x27')](_0x3e1de9[_0xdb7e('0x28')]);if(_0x3e1de9[_0xdb7e('0x29')]){delete _0x3e1de9[_0xdb7e('0x29')];}_0xd3ca13[_0xdb7e('0x1b')](_0x30627c)[_0xdb7e('0x2a')](_0x3e1de9);};}exports['index']=function(_0x430aff,_0x3351fe){var _0x404dad={},_0xead5f3={},_0x536a87={'count':0x0,'rows':[]};var _0x4d69a1=_[_0xdb7e('0x2b')](db[_0xdb7e('0x2c')][_0xdb7e('0x2d')],function(_0x23992c){return{'name':_0x23992c[_0xdb7e('0x2e')],'type':_0x23992c[_0xdb7e('0x2f')][_0xdb7e('0x30')]};});_0xead5f3[_0xdb7e('0x31')]=_[_0xdb7e('0x2b')](_0x4d69a1,'name');_0xead5f3['query']=_[_0xdb7e('0x32')](_0x430aff['query']);_0xead5f3[_0xdb7e('0x33')]=_[_0xdb7e('0x34')](_0xead5f3[_0xdb7e('0x31')],_0xead5f3[_0xdb7e('0x35')]);_0x404dad[_0xdb7e('0x36')]=_[_0xdb7e('0x34')](_0xead5f3[_0xdb7e('0x31')],qs[_0xdb7e('0x37')](_0x430aff[_0xdb7e('0x35')][_0xdb7e('0x37')]));_0x404dad[_0xdb7e('0x36')]=_0x404dad[_0xdb7e('0x36')][_0xdb7e('0x38')]?_0x404dad[_0xdb7e('0x36')]:_0xead5f3[_0xdb7e('0x31')];if(!_0x430aff['query'][_0xdb7e('0x39')](_0xdb7e('0x3a'))){_0x404dad[_0xdb7e('0x20')]=qs[_0xdb7e('0x20')](_0x430aff[_0xdb7e('0x35')][_0xdb7e('0x20')]);_0x404dad[_0xdb7e('0x1d')]=qs[_0xdb7e('0x1d')](_0x430aff['query'][_0xdb7e('0x1d')]);}_0x404dad[_0xdb7e('0x3b')]=qs['sort'](_0x430aff[_0xdb7e('0x35')][_0xdb7e('0x3c')]);_0x404dad[_0xdb7e('0x3d')]=qs[_0xdb7e('0x33')](_[_0xdb7e('0x3e')](_0x430aff[_0xdb7e('0x35')],_0xead5f3[_0xdb7e('0x33')]),_0x4d69a1);if(_0x430aff['query'][_0xdb7e('0x3f')]){_0x404dad[_0xdb7e('0x3d')]=_['merge'](_0x404dad[_0xdb7e('0x3d')],{'$or':_[_0xdb7e('0x2b')](_0x4d69a1,function(_0x138024){if(_0x138024[_0xdb7e('0x2f')]!==_0xdb7e('0x40')){var _0x29225a={};_0x29225a[_0x138024['name']]={'$like':'%'+_0x430aff[_0xdb7e('0x35')][_0xdb7e('0x3f')]+'%'};return _0x29225a;}})});}_0x404dad=_[_0xdb7e('0x41')]({},_0x404dad,_0x430aff['options']);var _0x2f6847={'where':_0x404dad['where']};return db[_0xdb7e('0x2c')][_0xdb7e('0x1f')](_0x2f6847)['then'](function(_0x45441f){_0x536a87[_0xdb7e('0x1f')]=_0x45441f;if(_0x430aff['query'][_0xdb7e('0x42')]){_0x404dad[_0xdb7e('0x43')]=[{'all':!![]}];}return db[_0xdb7e('0x2c')][_0xdb7e('0x44')](_0x404dad);})[_0xdb7e('0x26')](function(_0x4b5f63){_0x536a87['rows']=_0x4b5f63;return _0x536a87;})[_0xdb7e('0x26')](respondWithFilteredResult(_0x3351fe,_0x404dad))[_0xdb7e('0x45')](handleError(_0x3351fe,null));};exports[_0xdb7e('0x46')]=function(_0x283fda,_0x295d5a){var _0x420f56={'raw':![],'where':{'id':_0x283fda['params']['id']}},_0xc25dc0={};_0xc25dc0[_0xdb7e('0x31')]=_[_0xdb7e('0x32')](db[_0xdb7e('0x2c')][_0xdb7e('0x2d')]);_0xc25dc0[_0xdb7e('0x35')]=_['keys'](_0x283fda['query']);_0xc25dc0[_0xdb7e('0x33')]=_[_0xdb7e('0x34')](_0xc25dc0['model'],_0xc25dc0[_0xdb7e('0x35')]);_0x420f56['attributes']=_['intersection'](_0xc25dc0[_0xdb7e('0x31')],qs[_0xdb7e('0x37')](_0x283fda[_0xdb7e('0x35')][_0xdb7e('0x37')]));_0x420f56[_0xdb7e('0x36')]=_0x420f56['attributes'][_0xdb7e('0x38')]?_0x420f56['attributes']:_0xc25dc0[_0xdb7e('0x31')];if(_0x283fda[_0xdb7e('0x35')][_0xdb7e('0x42')]){_0x420f56[_0xdb7e('0x43')]=[{'all':!![]}];}_0x420f56=_['merge']({},_0x420f56,_0x283fda[_0xdb7e('0x47')]);return db[_0xdb7e('0x2c')]['find'](_0x420f56)[_0xdb7e('0x26')](handleEntityNotFound(_0x295d5a,null))[_0xdb7e('0x26')](respondWithResult(_0x295d5a,null))['catch'](handleError(_0x295d5a,null));};exports[_0xdb7e('0x48')]=function(_0x309af7,_0xacd744){return db['IntegrationReport'][_0xdb7e('0x48')](_0x309af7[_0xdb7e('0x49')],{})[_0xdb7e('0x26')](respondWithResult(_0xacd744,0xc9))[_0xdb7e('0x45')](handleError(_0xacd744,null));};exports[_0xdb7e('0x25')]=function(_0x4c3725,_0x586223){if(_0x4c3725[_0xdb7e('0x49')]['id']){delete _0x4c3725[_0xdb7e('0x49')]['id'];}return db['IntegrationReport'][_0xdb7e('0x4a')]({'where':{'id':_0x4c3725[_0xdb7e('0x4b')]['id']}})[_0xdb7e('0x26')](handleEntityNotFound(_0x586223,null))[_0xdb7e('0x26')](saveUpdates(_0x4c3725[_0xdb7e('0x49')],null))[_0xdb7e('0x26')](respondWithResult(_0x586223,null))[_0xdb7e('0x45')](handleError(_0x586223,null));};exports[_0xdb7e('0x4c')]=function(_0x5c685b,_0xc5af92){return db[_0xdb7e('0x2c')][_0xdb7e('0x4a')]({'where':{'id':_0x5c685b[_0xdb7e('0x4b')]['id']}})[_0xdb7e('0x26')](handleEntityNotFound(_0xc5af92,null))['then'](removeEntity(_0xc5af92,null))[_0xdb7e('0x45')](handleError(_0xc5af92,null));};exports[_0xdb7e('0x4d')]=function(_0x39fd2a,_0xd8ab1e){return db[_0xdb7e('0x2c')][_0xdb7e('0x4d')]()['then'](respondWithResult(_0xd8ab1e,null))['catch'](handleError(_0xd8ab1e,null));};
\ No newline at end of file
index 12fd309..abf9a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff5d=['exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','moment','path','./integrationReport.attributes'];(function(_0x4ae89d,_0x5af74b){var _0x411fd7=function(_0x14079d){while(--_0x14079d){_0x4ae89d['push'](_0x4ae89d['shift']());}};_0x411fd7(++_0x5af74b);}(_0xff5d,0xb4));var _0xdff5=function(_0x5d41f7,_0x4034d8){_0x5d41f7=_0x5d41f7-0x0;var _0x1e3713=_0xff5d[_0x5d41f7];return _0x1e3713;};'use strict';var _=require(_0xdff5('0x0'));var util=require(_0xdff5('0x1'));var logger=require(_0xdff5('0x2'))(_0xdff5('0x3'));var moment=require(_0xdff5('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xdff5('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdff5('0x6'));module[_0xdff5('0x7')]=function(_0x44a1a9,_0x21f9c4){return _0x44a1a9[_0xdff5('0x8')](_0xdff5('0x9'),attributes,{'tableName':_0xdff5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x66f4=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','exports','define','IntegrationReport','report_integration'];(function(_0x3d773f,_0x3462b3){var _0x22bf3a=function(_0x2d295e){while(--_0x2d295e){_0x3d773f['push'](_0x3d773f['shift']());}};_0x22bf3a(++_0x3462b3);}(_0x66f4,0x1a4));var _0x466f=function(_0x56e884,_0x539219){_0x56e884=_0x56e884-0x0;var _0x234826=_0x66f4[_0x56e884];return _0x234826;};'use strict';var _=require(_0x466f('0x0'));var util=require(_0x466f('0x1'));var logger=require(_0x466f('0x2'))(_0x466f('0x3'));var moment=require(_0x466f('0x4'));var BPromise=require(_0x466f('0x5'));var rp=require(_0x466f('0x6'));var fs=require('fs');var path=require(_0x466f('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./integrationReport.attributes');module[_0x466f('0x8')]=function(_0x4c239e,_0x5821ec){return _0x4c239e[_0x466f('0x9')](_0x466f('0xa'),attributes,{'tableName':_0x466f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 16e3acd..d5ac324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['client','http','then','info','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','IntegrationReport,\x20%s,\x20%s','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2cf226,_0x32ed){var _0x3b65fd=function(_0x5a0035){while(--_0x5a0035){_0x2cf226['push'](_0x2cf226['shift']());}};_0x3b65fd(++_0x32ed);}(_0x0295,0x1f0));var _0x5029=function(_0x3665b9,_0x3b5d4f){_0x3665b9=_0x3665b9-0x0;var _0x524099=_0x0295[_0x3665b9];return _0x524099;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('IntegrationReport,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}
\ No newline at end of file
+var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x4975,0x86));var _0x5497=function(_0x4a68a5,_0x5795ee){_0x4a68a5=_0x4a68a5-0x0;var _0x38f471=_0x4975[_0x4a68a5];return _0x38f471;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
index c24577d..1436b42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9f=['addIntervals','put','delete','destroy','exports','util','path','Router','../../components/auth/service','isAuthenticated','index','/:id','show','get','getIntervals','post','create','/:id/sub_intervals','addInterval'];(function(_0x33f4b5,_0x67e65a){var _0x2a21dc=function(_0x6622aa){while(--_0x6622aa){_0x33f4b5['push'](_0x33f4b5['shift']());}};_0x2a21dc(++_0x67e65a);}(_0x0a9f,0x64));var _0xf0a9=function(_0x2577d9,_0x8f2f28){_0x2577d9=_0x2577d9-0x0;var _0x36fe58=_0x0a9f[_0x2577d9];return _0x36fe58;};'use strict';var multer=require('multer');var util=require(_0xf0a9('0x0'));var path=require(_0xf0a9('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf0a9('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xf0a9('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./interval.controller');router['get']('/',auth[_0xf0a9('0x4')](),controller[_0xf0a9('0x5')]);router['get'](_0xf0a9('0x6'),auth['isAuthenticated'](),controller[_0xf0a9('0x7')]);router[_0xf0a9('0x8')]('/:id/sub_intervals',auth[_0xf0a9('0x4')](),controller[_0xf0a9('0x9')]);router[_0xf0a9('0xa')]('/',auth['isAuthenticated'](),controller[_0xf0a9('0xb')]);router['post'](_0xf0a9('0xc'),auth[_0xf0a9('0x4')](),controller[_0xf0a9('0xd')]);router[_0xf0a9('0xa')]('/:id/sub_intervals/create_many',auth[_0xf0a9('0x4')](),controller[_0xf0a9('0xe')]);router[_0xf0a9('0xf')](_0xf0a9('0x6'),auth['isAuthenticated'](),controller['update']);router[_0xf0a9('0x10')](_0xf0a9('0x6'),auth[_0xf0a9('0x4')](),controller[_0xf0a9('0x11')]);module[_0xf0a9('0x12')]=router;
\ No newline at end of file
+var _0x5565=['util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./interval.controller','get','isAuthenticated','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','/:id','update','delete'];(function(_0x27c1ab,_0x3734be){var _0x5087a3=function(_0x471a6a){while(--_0x471a6a){_0x27c1ab['push'](_0x27c1ab['shift']());}};_0x5087a3(++_0x3734be);}(_0x5565,0x104));var _0x5556=function(_0x4d4d53,_0x35085d){_0x4d4d53=_0x4d4d53-0x0;var _0x22c392=_0x5565[_0x4d4d53];return _0x22c392;};'use strict';var multer=require('multer');var util=require(_0x5556('0x0'));var path=require('path');var timeout=require(_0x5556('0x1'));var express=require('express');var router=express[_0x5556('0x2')]();var fs_extra=require(_0x5556('0x3'));var auth=require(_0x5556('0x4'));var interaction=require(_0x5556('0x5'));var config=require('../../config/environment');var controller=require(_0x5556('0x6'));router[_0x5556('0x7')]('/',auth[_0x5556('0x8')](),controller['index']);router[_0x5556('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x5556('0x9')]);router[_0x5556('0x7')](_0x5556('0xa'),auth[_0x5556('0x8')](),controller[_0x5556('0xb')]);router[_0x5556('0xc')]('/',auth[_0x5556('0x8')](),controller[_0x5556('0xd')]);router[_0x5556('0xc')](_0x5556('0xa'),auth[_0x5556('0x8')](),controller[_0x5556('0xe')]);router[_0x5556('0xc')](_0x5556('0xf'),auth[_0x5556('0x8')](),controller[_0x5556('0x10')]);router['put'](_0x5556('0x11'),auth[_0x5556('0x8')](),controller[_0x5556('0x12')]);router[_0x5556('0x13')](_0x5556('0x11'),auth[_0x5556('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ae249cc..6b418bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03c1=['sequelize','exports','STRING'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x03c1,0x96));var _0x103c=function(_0x2650e9,_0xb91cc){_0x2650e9=_0x2650e9-0x0;var _0x3511c8=_0x03c1[_0x2650e9];return _0x3511c8;};'use strict';var Sequelize=require(_0x103c('0x0'));module[_0x103c('0x1')]={'name':{'type':Sequelize[_0x103c('0x2')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xe508=['STRING','sequelize','exports'];(function(_0x2ca6c6,_0x1fbd9a){var _0x492da7=function(_0x40c53d){while(--_0x40c53d){_0x2ca6c6['push'](_0x2ca6c6['shift']());}};_0x492da7(++_0x1fbd9a);}(_0xe508,0x79));var _0x8e50=function(_0x30bfd5,_0x2819c0){_0x30bfd5=_0x30bfd5-0x0;var _0x5626be=_0xe508[_0x30bfd5];return _0x5626be;};'use strict';var Sequelize=require(_0x8e50('0x0'));module[_0x8e50('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8e50('0x2')]},'interval':{'type':Sequelize[_0x8e50('0x2')],'allowNull':!![]}};
\ No newline at end of file
index a239181..aef1804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae0f=['error','body','find','addInterval','getIntervals','addIntervals','findOne','sequelize','transaction','bulkCreate','findAll','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','destroy','get','Intervals','UserProfileResource','stack','send','map','Interval','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','rows','catch','show','params','keys','fields','include','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection'];(function(_0xee122e,_0x58ef2e){var _0x34f98a=function(_0x18163e){while(--_0x18163e){_0xee122e['push'](_0xee122e['shift']());}};_0x34f98a(++_0x58ef2e);}(_0xae0f,0x65));var _0xfae0=function(_0x180861,_0x427574){_0x180861=_0x180861-0x0;var _0x2dee81=_0xae0f[_0x180861];return _0x2dee81;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfae0('0x0'));var jsonpatch=require(_0xfae0('0x1'));var rp=require('request-promise');var moment=require(_0xfae0('0x2'));var BPromise=require(_0xfae0('0x3'));var Mustache=require(_0xfae0('0x4'));var util=require(_0xfae0('0x5'));var path=require(_0xfae0('0x6'));var sox=require(_0xfae0('0x7'));var csv=require(_0xfae0('0x8'));var ejs=require(_0xfae0('0x9'));var fs=require('fs');var fs_extra=require(_0xfae0('0xa'));var _=require(_0xfae0('0xb'));var squel=require(_0xfae0('0xc'));var crypto=require('crypto');var jsforce=require(_0xfae0('0xd'));var deskjs=require(_0xfae0('0xe'));var toCsv=require(_0xfae0('0x8'));var querystring=require(_0xfae0('0xf'));var Papa=require(_0xfae0('0x10'));var Redis=require(_0xfae0('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xfae0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfae0('0x13'))(_0xfae0('0x14'));var utils=require(_0xfae0('0x15'));var config=require(_0xfae0('0x16'));var licenseUtil=require(_0xfae0('0x17'));var db=require(_0xfae0('0x18'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x169245,_0x100799){_0x100799=_0x100799||0xcc;return function(_0x505eb6){if(_0x505eb6){return _0x169245[_0xfae0('0x19')](_0x100799);}return _0x169245[_0xfae0('0x1a')](_0x100799)[_0xfae0('0x1b')]();};}function respondWithResult(_0x3f0b34,_0x42fac4){_0x42fac4=_0x42fac4||0xc8;return function(_0x48da35){if(_0x48da35){return _0x3f0b34[_0xfae0('0x1a')](_0x42fac4)[_0xfae0('0x1c')](_0x48da35);}};}function respondWithFilteredResult(_0x34be7e,_0x9bd86e){return function(_0x3410e5){if(_0x3410e5){var _0x4084c1=typeof _0x9bd86e[_0xfae0('0x1d')]==='undefined'&&typeof _0x9bd86e[_0xfae0('0x1e')]===_0xfae0('0x1f');var _0xa952c5=_0x3410e5[_0xfae0('0x20')];var _0x45d08d=_0x4084c1?0x0:_0x9bd86e[_0xfae0('0x1d')];var _0x2275a6=_0x4084c1?_0x3410e5[_0xfae0('0x20')]:_0x9bd86e[_0xfae0('0x1d')]+_0x9bd86e[_0xfae0('0x1e')];var _0x297cc2;if(_0x2275a6>=_0xa952c5){_0x2275a6=_0xa952c5;_0x297cc2=0xc8;}else{_0x297cc2=0xce;}_0x34be7e[_0xfae0('0x1a')](_0x297cc2);return _0x34be7e['set'](_0xfae0('0x21'),_0x45d08d+'-'+_0x2275a6+'/'+_0xa952c5)[_0xfae0('0x1c')](_0x3410e5);}return null;};}function patchUpdates(_0xc99af5){return function(_0x176a44){try{jsonpatch[_0xfae0('0x22')](_0x176a44,_0xc99af5,!![]);}catch(_0x45ddfa){return BPromise['reject'](_0x45ddfa);}return _0x176a44[_0xfae0('0x23')]();};}function saveUpdates(_0x3bfc83,_0x3dfc3d){return function(_0x5e6263){if(_0x5e6263){return _0x5e6263[_0xfae0('0x24')](_0x3bfc83)[_0xfae0('0x25')](function(_0x28a38b){return _0x28a38b;});}return null;};}function removeEntity(_0x32f268,_0x5137e4){return function(_0x4a0e47){if(_0x4a0e47){return _0x4a0e47[_0xfae0('0x26')]()[_0xfae0('0x25')](function(){var _0x59050c=_0x4a0e47[_0xfae0('0x27')]({'plain':!![]});var _0xdff506=_0xfae0('0x28');return db[_0xfae0('0x29')]['destroy']({'where':{'type':_0xdff506,'resourceId':_0x59050c['id']}})[_0xfae0('0x25')](function(){return _0x4a0e47;});})[_0xfae0('0x25')](function(){_0x32f268[_0xfae0('0x1a')](0xcc)[_0xfae0('0x1b')]();});}};}function handleEntityNotFound(_0x50730a,_0x319738){return function(_0x44ee55){if(!_0x44ee55){_0x50730a['sendStatus'](0x194);}return _0x44ee55;};}function handleError(_0x55592e,_0x305a97){_0x305a97=_0x305a97||0x1f4;return function(_0x24504f){logger['error'](_0x24504f[_0xfae0('0x2a')]);if(_0x24504f['name']){delete _0x24504f['name'];}_0x55592e[_0xfae0('0x1a')](_0x305a97)[_0xfae0('0x2b')](_0x24504f);};}exports['index']=function(_0x37cbfb,_0x340be8){var _0x11f1a8={},_0x126ffb={},_0x33ed6a={'count':0x0,'rows':[]};var _0x4ad203=_[_0xfae0('0x2c')](db[_0xfae0('0x2d')][_0xfae0('0x2e')],function(_0x3e9b73){return{'name':_0x3e9b73[_0xfae0('0x2f')],'type':_0x3e9b73[_0xfae0('0x30')][_0xfae0('0x31')]};});_0x126ffb[_0xfae0('0x32')]=_[_0xfae0('0x2c')](_0x4ad203,_0xfae0('0x33'));_0x126ffb[_0xfae0('0x34')]=_['keys'](_0x37cbfb[_0xfae0('0x34')]);_0x126ffb[_0xfae0('0x35')]=_[_0xfae0('0x36')](_0x126ffb[_0xfae0('0x32')],_0x126ffb[_0xfae0('0x34')]);_0x11f1a8['attributes']=_[_0xfae0('0x36')](_0x126ffb[_0xfae0('0x32')],qs['fields'](_0x37cbfb[_0xfae0('0x34')]['fields']));_0x11f1a8[_0xfae0('0x37')]=_0x11f1a8['attributes'][_0xfae0('0x38')]?_0x11f1a8['attributes']:_0x126ffb[_0xfae0('0x32')];if(!_0x37cbfb['query'][_0xfae0('0x39')](_0xfae0('0x3a'))){_0x11f1a8[_0xfae0('0x1e')]=qs[_0xfae0('0x1e')](_0x37cbfb[_0xfae0('0x34')]['limit']);_0x11f1a8[_0xfae0('0x1d')]=qs[_0xfae0('0x1d')](_0x37cbfb['query'][_0xfae0('0x1d')]);}_0x11f1a8[_0xfae0('0x3b')]=qs[_0xfae0('0x3c')](_0x37cbfb['query'][_0xfae0('0x3c')]);_0x11f1a8['where']=qs['filters'](_[_0xfae0('0x3d')](_0x37cbfb[_0xfae0('0x34')],_0x126ffb[_0xfae0('0x35')]),_0x4ad203);if(_0x37cbfb[_0xfae0('0x34')][_0xfae0('0x3e')]){_0x11f1a8[_0xfae0('0x3f')]=_['merge'](_0x11f1a8[_0xfae0('0x3f')],{'$or':_[_0xfae0('0x2c')](_0x4ad203,function(_0x1b0bdb){if(_0x1b0bdb[_0xfae0('0x30')]!=='VIRTUAL'){var _0x1c481f={};_0x1c481f[_0x1b0bdb[_0xfae0('0x33')]]={'$like':'%'+_0x37cbfb[_0xfae0('0x34')][_0xfae0('0x3e')]+'%'};return _0x1c481f;}})});}_0x11f1a8=_[_0xfae0('0x40')]({},_0x11f1a8,_0x37cbfb[_0xfae0('0x41')]);var _0x2e5e5a={'where':_0x11f1a8[_0xfae0('0x3f')]};return db[_0xfae0('0x2d')][_0xfae0('0x20')](_0x2e5e5a)[_0xfae0('0x25')](function(_0x307541){_0x33ed6a[_0xfae0('0x20')]=_0x307541;if(_0x37cbfb[_0xfae0('0x34')][_0xfae0('0x42')]){_0x11f1a8['include']=[{'all':!![]}];}return db[_0xfae0('0x2d')]['findAll'](_0x11f1a8);})[_0xfae0('0x25')](function(_0x2080de){_0x33ed6a[_0xfae0('0x43')]=_0x2080de;return _0x33ed6a;})[_0xfae0('0x25')](respondWithFilteredResult(_0x340be8,_0x11f1a8))[_0xfae0('0x44')](handleError(_0x340be8,null));};exports[_0xfae0('0x45')]=function(_0x2247e8,_0x47496a){var _0x2f5670={'raw':!![],'where':{'id':_0x2247e8[_0xfae0('0x46')]['id']}},_0x24c2f6={};_0x24c2f6['model']=_[_0xfae0('0x47')](db[_0xfae0('0x2d')][_0xfae0('0x2e')]);_0x24c2f6['query']=_[_0xfae0('0x47')](_0x2247e8['query']);_0x24c2f6[_0xfae0('0x35')]=_['intersection'](_0x24c2f6[_0xfae0('0x32')],_0x24c2f6[_0xfae0('0x34')]);_0x2f5670[_0xfae0('0x37')]=_['intersection'](_0x24c2f6[_0xfae0('0x32')],qs[_0xfae0('0x48')](_0x2247e8[_0xfae0('0x34')][_0xfae0('0x48')]));_0x2f5670[_0xfae0('0x37')]=_0x2f5670[_0xfae0('0x37')][_0xfae0('0x38')]?_0x2f5670[_0xfae0('0x37')]:_0x24c2f6['model'];if(_0x2247e8[_0xfae0('0x34')][_0xfae0('0x42')]){_0x2f5670[_0xfae0('0x49')]=[{'all':!![]}];}_0x2f5670=_[_0xfae0('0x40')]({},_0x2f5670,_0x2247e8['options']);return db[_0xfae0('0x2d')]['find'](_0x2f5670)[_0xfae0('0x25')](handleEntityNotFound(_0x47496a,null))[_0xfae0('0x25')](respondWithResult(_0x47496a,null))[_0xfae0('0x44')](handleError(_0x47496a,null));};exports[_0xfae0('0x4a')]=function(_0x27643a,_0x2cbb4d){return db[_0xfae0('0x2d')][_0xfae0('0x4a')](_0x27643a['body'],{})[_0xfae0('0x25')](function(_0x5d7679){var _0x25e4f5=_0x27643a[_0xfae0('0x4b')]['get']({'plain':!![]});if(!_0x25e4f5)throw new Error(_0xfae0('0x4c'));if(_0x25e4f5[_0xfae0('0x4d')]==='user'){var _0x34ad7e=_0x5d7679[_0xfae0('0x27')]({'plain':!![]});var _0x13ba9e=_0xfae0('0x28');return db[_0xfae0('0x4e')]['find']({'where':{'name':_0x13ba9e,'userProfileId':_0x25e4f5['userProfileId']},'raw':!![]})[_0xfae0('0x25')](function(_0x32a975){if(_0x32a975&&_0x32a975['autoAssociation']===0x0){return db[_0xfae0('0x29')][_0xfae0('0x4a')]({'name':_0x34ad7e[_0xfae0('0x33')],'resourceId':_0x34ad7e['id'],'type':_0x32a975[_0xfae0('0x33')],'sectionId':_0x32a975['id']},{})['then'](function(){return _0x5d7679;});}else{return _0x5d7679;}})[_0xfae0('0x44')](function(_0x34e407){logger[_0xfae0('0x4f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x34e407);throw _0x34e407;});}return _0x5d7679;})[_0xfae0('0x25')](respondWithResult(_0x2cbb4d,0xc9))[_0xfae0('0x44')](handleError(_0x2cbb4d,null));};exports[_0xfae0('0x24')]=function(_0x4a632b,_0x168f92){if(_0x4a632b[_0xfae0('0x50')]['id']){delete _0x4a632b[_0xfae0('0x50')]['id'];}return db['Interval'][_0xfae0('0x51')]({'where':{'id':_0x4a632b[_0xfae0('0x46')]['id']}})[_0xfae0('0x25')](handleEntityNotFound(_0x168f92,null))[_0xfae0('0x25')](saveUpdates(_0x4a632b[_0xfae0('0x50')],null))[_0xfae0('0x25')](respondWithResult(_0x168f92,null))[_0xfae0('0x44')](handleError(_0x168f92,null));};exports[_0xfae0('0x26')]=function(_0x2f01cd,_0x15f9ff){return db[_0xfae0('0x2d')]['find']({'where':{'id':_0x2f01cd['params']['id']}})[_0xfae0('0x25')](handleEntityNotFound(_0x15f9ff,null))['then'](removeEntity(_0x15f9ff,null))[_0xfae0('0x44')](handleError(_0x15f9ff,null));};exports[_0xfae0('0x52')]=function(_0x3c0bf4,_0x4ef317,_0x4cfc38){if(_0x3c0bf4['body']['id']){delete _0x3c0bf4[_0xfae0('0x50')]['id'];}return db[_0xfae0('0x2d')][_0xfae0('0x51')]({'where':{'id':_0x3c0bf4['params']['id']}})[_0xfae0('0x25')](handleEntityNotFound(_0x4ef317,null))[_0xfae0('0x25')](function(_0x1d21e9){if(_0x1d21e9){_0x3c0bf4[_0xfae0('0x50')]['IntervalId']=_0x1d21e9['id'];return db[_0xfae0('0x2d')][_0xfae0('0x4a')](_0x3c0bf4['body']);}})['then'](respondWithResult(_0x4ef317,null))[_0xfae0('0x44')](handleError(_0x4ef317,null));};exports[_0xfae0('0x53')]=function(_0x58a5fd,_0xb288b5,_0x24df05){var _0x1279c6={};var _0x100918={};var _0x231ee5;var _0x585b44;return db['Interval']['findOne']({'where':{'id':_0x58a5fd[_0xfae0('0x46')]['id']}})[_0xfae0('0x25')](handleEntityNotFound(_0xb288b5,null))['then'](function(_0x4dec2a){if(_0x4dec2a){_0x231ee5=_0x4dec2a;_0x100918[_0xfae0('0x32')]=_[_0xfae0('0x47')](db['Interval'][_0xfae0('0x2e')]);_0x100918[_0xfae0('0x34')]=_[_0xfae0('0x47')](_0x58a5fd[_0xfae0('0x34')]);_0x100918[_0xfae0('0x35')]=_['intersection'](_0x100918[_0xfae0('0x32')],_0x100918[_0xfae0('0x34')]);_0x1279c6[_0xfae0('0x37')]=_['intersection'](_0x100918[_0xfae0('0x32')],qs[_0xfae0('0x48')](_0x58a5fd[_0xfae0('0x34')][_0xfae0('0x48')]));_0x1279c6['attributes']=_0x1279c6[_0xfae0('0x37')]['length']?_0x1279c6[_0xfae0('0x37')]:_0x100918['model'];_0x1279c6[_0xfae0('0x3b')]=qs[_0xfae0('0x3c')](_0x58a5fd[_0xfae0('0x34')][_0xfae0('0x3c')]);_0x1279c6['where']=qs['filters'](_[_0xfae0('0x3d')](_0x58a5fd[_0xfae0('0x34')],_0x100918['filters']));if(_0x58a5fd[_0xfae0('0x34')][_0xfae0('0x3e')]){_0x1279c6[_0xfae0('0x3f')]=_['merge'](_0x1279c6[_0xfae0('0x3f')],{'$or':_['map'](_0x1279c6['attributes'],function(_0x522869){var _0x80f7ae={};_0x80f7ae[_0x522869]={'$like':'%'+_0x58a5fd[_0xfae0('0x34')][_0xfae0('0x3e')]+'%'};return _0x80f7ae;})});}_0x1279c6=_[_0xfae0('0x40')]({},_0x1279c6,_0x58a5fd[_0xfae0('0x41')]);return _0x231ee5[_0xfae0('0x53')](_0x1279c6);}})[_0xfae0('0x25')](function(_0x320ba6){if(_0x320ba6){_0x585b44=_0x320ba6[_0xfae0('0x38')];if(!_0x58a5fd['query'][_0xfae0('0x39')]('nolimit')){_0x1279c6[_0xfae0('0x1e')]=qs[_0xfae0('0x1e')](_0x58a5fd[_0xfae0('0x34')][_0xfae0('0x1e')]);_0x1279c6['offset']=qs[_0xfae0('0x1d')](_0x58a5fd['query'][_0xfae0('0x1d')]);}return _0x231ee5[_0xfae0('0x53')](_0x1279c6);}})[_0xfae0('0x25')](function(_0x3d1125){if(_0x3d1125){return _0x3d1125?{'count':_0x585b44,'rows':_0x3d1125}:null;}})[_0xfae0('0x25')](respondWithResult(_0xb288b5,null))['catch'](handleError(_0xb288b5,null));};exports[_0xfae0('0x54')]=function(_0x425440,_0x108d60,_0x3fca0a){return db['Interval'][_0xfae0('0x55')]({'where':{'id':_0x425440[_0xfae0('0x46')]['id']}})[_0xfae0('0x25')](handleEntityNotFound(_0x108d60,null))['then'](function(_0x39f0ec){if(_0x39f0ec){return db[_0xfae0('0x56')][_0xfae0('0x57')](function(_0x56863b){return db['Interval']['destroy']({'where':{'IntervalId':_0x425440['params']['id']},'transaction':_0x56863b})['then'](function(_0x230e3c){var _0x431c7e=_[_0xfae0('0x2c')](_0x425440[_0xfae0('0x50')],function(_0xde7007){delete _0xde7007['id'];_0xde7007['IntervalId']=_0x425440[_0xfae0('0x46')]['id'];return _0xde7007;});return db[_0xfae0('0x2d')][_0xfae0('0x58')](_0x431c7e,{'transaction':_0x56863b});});})['then'](function(){return db['Interval'][_0xfae0('0x59')]({'where':{'IntervalId':_0x425440[_0xfae0('0x46')]['id']}});});}})[_0xfae0('0x25')](respondWithResult(_0x108d60,null))[_0xfae0('0x44')](handleError(_0x108d60,null));};
\ No newline at end of file
+var _0x6c95=['get','Intervals','UserProfileResource','error','name','send','index','map','Interval','rawAttributes','key','model','query','keys','filters','attributes','intersection','hasOwnProperty','sort','where','filter','merge','type','VIRTUAL','options','includeAll','catch','params','length','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','IntervalId','getIntervals','findOne','fields','order','pick','nolimit','transaction','bulkCreate','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy'];(function(_0x292b20,_0x4c10ce){var _0xf049c7=function(_0x46811d){while(--_0x46811d){_0x292b20['push'](_0x292b20['shift']());}};_0xf049c7(++_0x4c10ce);}(_0x6c95,0x19c));var _0x56c9=function(_0x3d26c0,_0x4479cb){_0x3d26c0=_0x3d26c0-0x0;var _0x2fe519=_0x6c95[_0x3d26c0];return _0x2fe519;};'use strict';var emlformat=require(_0x56c9('0x0'));var rimraf=require(_0x56c9('0x1'));var zipdir=require(_0x56c9('0x2'));var jsonpatch=require(_0x56c9('0x3'));var rp=require(_0x56c9('0x4'));var moment=require(_0x56c9('0x5'));var BPromise=require(_0x56c9('0x6'));var Mustache=require('mustache');var util=require(_0x56c9('0x7'));var path=require(_0x56c9('0x8'));var sox=require(_0x56c9('0x9'));var csv=require(_0x56c9('0xa'));var ejs=require(_0x56c9('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x56c9('0xc'));var squel=require(_0x56c9('0xd'));var crypto=require(_0x56c9('0xe'));var jsforce=require(_0x56c9('0xf'));var deskjs=require(_0x56c9('0x10'));var toCsv=require('to-csv');var querystring=require(_0x56c9('0x11'));var Papa=require(_0x56c9('0x12'));var Redis=require(_0x56c9('0x13'));var authService=require(_0x56c9('0x14'));var qs=require(_0x56c9('0x15'));var as=require(_0x56c9('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x56c9('0x17'));var utils=require(_0x56c9('0x18'));var config=require(_0x56c9('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x56c9('0x1a'))['db'];var extensions=require(_0x56c9('0x1b'));function respondWithStatusCode(_0x5390d7,_0x204fa0){_0x204fa0=_0x204fa0||0xcc;return function(_0x48bb11){if(_0x48bb11){return _0x5390d7[_0x56c9('0x1c')](_0x204fa0);}return _0x5390d7[_0x56c9('0x1d')](_0x204fa0)[_0x56c9('0x1e')]();};}function respondWithResult(_0x232e68,_0x282675){_0x282675=_0x282675||0xc8;return function(_0x3911fd){if(_0x3911fd){return _0x232e68['status'](_0x282675)['json'](_0x3911fd);}};}function respondWithFilteredResult(_0x378d3c,_0x144d17){return function(_0xb59917){if(_0xb59917){var _0x5dba19=typeof _0x144d17[_0x56c9('0x1f')]==='undefined'&&typeof _0x144d17[_0x56c9('0x20')]==='undefined';var _0xe1564c=_0xb59917[_0x56c9('0x21')];var _0x31e5c0=_0x5dba19?0x0:_0x144d17[_0x56c9('0x1f')];var _0xd3b733=_0x5dba19?_0xb59917['count']:_0x144d17[_0x56c9('0x1f')]+_0x144d17[_0x56c9('0x20')];var _0x4460e9;if(_0xd3b733>=_0xe1564c){_0xd3b733=_0xe1564c;_0x4460e9=0xc8;}else{_0x4460e9=0xce;}_0x378d3c[_0x56c9('0x1d')](_0x4460e9);return _0x378d3c[_0x56c9('0x22')](_0x56c9('0x23'),_0x31e5c0+'-'+_0xd3b733+'/'+_0xe1564c)[_0x56c9('0x24')](_0xb59917);}return null;};}function patchUpdates(_0x496b94){return function(_0x1edcb5){try{jsonpatch[_0x56c9('0x25')](_0x1edcb5,_0x496b94,!![]);}catch(_0x4838f5){return BPromise[_0x56c9('0x26')](_0x4838f5);}return _0x1edcb5[_0x56c9('0x27')]();};}function saveUpdates(_0x2399c9,_0x2cd39e){return function(_0x53a8fa){if(_0x53a8fa){return _0x53a8fa[_0x56c9('0x28')](_0x2399c9)[_0x56c9('0x29')](function(_0x2f47d0){return _0x2f47d0;});}return null;};}function removeEntity(_0x35830d,_0x504eb1){return function(_0x568249){if(_0x568249){return _0x568249[_0x56c9('0x2a')]()[_0x56c9('0x29')](function(){var _0x142b94=_0x568249[_0x56c9('0x2b')]({'plain':!![]});var _0x2af47a=_0x56c9('0x2c');return db[_0x56c9('0x2d')]['destroy']({'where':{'type':_0x2af47a,'resourceId':_0x142b94['id']}})[_0x56c9('0x29')](function(){return _0x568249;});})[_0x56c9('0x29')](function(){_0x35830d['status'](0xcc)[_0x56c9('0x1e')]();});}};}function handleEntityNotFound(_0x29b8fb,_0x4c122d){return function(_0x1fdfbd){if(!_0x1fdfbd){_0x29b8fb[_0x56c9('0x1c')](0x194);}return _0x1fdfbd;};}function handleError(_0x1cf232,_0x439a79){_0x439a79=_0x439a79||0x1f4;return function(_0x59e112){logger[_0x56c9('0x2e')](_0x59e112['stack']);if(_0x59e112[_0x56c9('0x2f')]){delete _0x59e112['name'];}_0x1cf232['status'](_0x439a79)[_0x56c9('0x30')](_0x59e112);};}exports[_0x56c9('0x31')]=function(_0x51c304,_0x1f7432){var _0x9b479a={},_0x3de0af={},_0x201eb8={'count':0x0,'rows':[]};var _0x51feec=_[_0x56c9('0x32')](db[_0x56c9('0x33')][_0x56c9('0x34')],function(_0x484af1){return{'name':_0x484af1['fieldName'],'type':_0x484af1['type'][_0x56c9('0x35')]};});_0x3de0af[_0x56c9('0x36')]=_[_0x56c9('0x32')](_0x51feec,_0x56c9('0x2f'));_0x3de0af[_0x56c9('0x37')]=_[_0x56c9('0x38')](_0x51c304[_0x56c9('0x37')]);_0x3de0af[_0x56c9('0x39')]=_['intersection'](_0x3de0af[_0x56c9('0x36')],_0x3de0af[_0x56c9('0x37')]);_0x9b479a[_0x56c9('0x3a')]=_[_0x56c9('0x3b')](_0x3de0af['model'],qs['fields'](_0x51c304[_0x56c9('0x37')]['fields']));_0x9b479a[_0x56c9('0x3a')]=_0x9b479a[_0x56c9('0x3a')]['length']?_0x9b479a[_0x56c9('0x3a')]:_0x3de0af[_0x56c9('0x36')];if(!_0x51c304[_0x56c9('0x37')][_0x56c9('0x3c')]('nolimit')){_0x9b479a[_0x56c9('0x20')]=qs[_0x56c9('0x20')](_0x51c304[_0x56c9('0x37')][_0x56c9('0x20')]);_0x9b479a['offset']=qs[_0x56c9('0x1f')](_0x51c304[_0x56c9('0x37')][_0x56c9('0x1f')]);}_0x9b479a['order']=qs[_0x56c9('0x3d')](_0x51c304[_0x56c9('0x37')]['sort']);_0x9b479a[_0x56c9('0x3e')]=qs[_0x56c9('0x39')](_['pick'](_0x51c304[_0x56c9('0x37')],_0x3de0af['filters']),_0x51feec);if(_0x51c304['query'][_0x56c9('0x3f')]){_0x9b479a['where']=_[_0x56c9('0x40')](_0x9b479a['where'],{'$or':_[_0x56c9('0x32')](_0x51feec,function(_0x111b22){if(_0x111b22[_0x56c9('0x41')]!==_0x56c9('0x42')){var _0x3fa7ef={};_0x3fa7ef[_0x111b22['name']]={'$like':'%'+_0x51c304[_0x56c9('0x37')][_0x56c9('0x3f')]+'%'};return _0x3fa7ef;}})});}_0x9b479a=_[_0x56c9('0x40')]({},_0x9b479a,_0x51c304[_0x56c9('0x43')]);var _0x25ed6e={'where':_0x9b479a[_0x56c9('0x3e')]};return db['Interval'][_0x56c9('0x21')](_0x25ed6e)[_0x56c9('0x29')](function(_0x22f7ba){_0x201eb8[_0x56c9('0x21')]=_0x22f7ba;if(_0x51c304[_0x56c9('0x37')][_0x56c9('0x44')]){_0x9b479a['include']=[{'all':!![]}];}return db[_0x56c9('0x33')]['findAll'](_0x9b479a);})['then'](function(_0x2673a2){_0x201eb8['rows']=_0x2673a2;return _0x201eb8;})['then'](respondWithFilteredResult(_0x1f7432,_0x9b479a))[_0x56c9('0x45')](handleError(_0x1f7432,null));};exports['show']=function(_0x3508af,_0x2b8dcc){var _0x3109e3={'raw':!![],'where':{'id':_0x3508af[_0x56c9('0x46')]['id']}},_0x1fcbf8={};_0x1fcbf8[_0x56c9('0x36')]=_[_0x56c9('0x38')](db[_0x56c9('0x33')][_0x56c9('0x34')]);_0x1fcbf8[_0x56c9('0x37')]=_[_0x56c9('0x38')](_0x3508af['query']);_0x1fcbf8[_0x56c9('0x39')]=_['intersection'](_0x1fcbf8['model'],_0x1fcbf8[_0x56c9('0x37')]);_0x3109e3[_0x56c9('0x3a')]=_[_0x56c9('0x3b')](_0x1fcbf8[_0x56c9('0x36')],qs['fields'](_0x3508af['query']['fields']));_0x3109e3[_0x56c9('0x3a')]=_0x3109e3['attributes'][_0x56c9('0x47')]?_0x3109e3[_0x56c9('0x3a')]:_0x1fcbf8[_0x56c9('0x36')];if(_0x3508af[_0x56c9('0x37')]['includeAll']){_0x3109e3[_0x56c9('0x48')]=[{'all':!![]}];}_0x3109e3=_[_0x56c9('0x40')]({},_0x3109e3,_0x3508af[_0x56c9('0x43')]);return db['Interval'][_0x56c9('0x49')](_0x3109e3)[_0x56c9('0x29')](handleEntityNotFound(_0x2b8dcc,null))['then'](respondWithResult(_0x2b8dcc,null))[_0x56c9('0x45')](handleError(_0x2b8dcc,null));};exports[_0x56c9('0x4a')]=function(_0x33cac9,_0x596f73){return db[_0x56c9('0x33')][_0x56c9('0x4a')](_0x33cac9['body'],{})[_0x56c9('0x29')](function(_0x1494d0){var _0x40dbb2=_0x33cac9[_0x56c9('0x4b')]['get']({'plain':!![]});if(!_0x40dbb2)throw new Error(_0x56c9('0x4c'));if(_0x40dbb2[_0x56c9('0x4d')]===_0x56c9('0x4b')){var _0x2d4b43=_0x1494d0['get']({'plain':!![]});var _0x238b12=_0x56c9('0x2c');return db['UserProfileSection'][_0x56c9('0x49')]({'where':{'name':_0x238b12,'userProfileId':_0x40dbb2[_0x56c9('0x4e')]},'raw':!![]})[_0x56c9('0x29')](function(_0x12d2b1){if(_0x12d2b1&&_0x12d2b1['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x2d4b43['name'],'resourceId':_0x2d4b43['id'],'type':_0x12d2b1[_0x56c9('0x2f')],'sectionId':_0x12d2b1['id']},{})[_0x56c9('0x29')](function(){return _0x1494d0;});}else{return _0x1494d0;}})[_0x56c9('0x45')](function(_0x44d442){logger['error'](_0x56c9('0x4f'),_0x44d442);throw _0x44d442;});}return _0x1494d0;})['then'](respondWithResult(_0x596f73,0xc9))[_0x56c9('0x45')](handleError(_0x596f73,null));};exports[_0x56c9('0x28')]=function(_0x56f9b3,_0x2876c0){if(_0x56f9b3['body']['id']){delete _0x56f9b3['body']['id'];}return db[_0x56c9('0x33')][_0x56c9('0x49')]({'where':{'id':_0x56f9b3[_0x56c9('0x46')]['id']}})[_0x56c9('0x29')](handleEntityNotFound(_0x2876c0,null))[_0x56c9('0x29')](saveUpdates(_0x56f9b3[_0x56c9('0x50')],null))[_0x56c9('0x29')](respondWithResult(_0x2876c0,null))[_0x56c9('0x45')](handleError(_0x2876c0,null));};exports['destroy']=function(_0x570dc1,_0x32d447){return db[_0x56c9('0x33')][_0x56c9('0x49')]({'where':{'id':_0x570dc1[_0x56c9('0x46')]['id']}})['then'](handleEntityNotFound(_0x32d447,null))[_0x56c9('0x29')](removeEntity(_0x32d447,null))[_0x56c9('0x45')](handleError(_0x32d447,null));};exports['addInterval']=function(_0x1a18ba,_0x117f05,_0x56c6c1){if(_0x1a18ba['body']['id']){delete _0x1a18ba[_0x56c9('0x50')]['id'];}return db[_0x56c9('0x33')][_0x56c9('0x49')]({'where':{'id':_0x1a18ba['params']['id']}})[_0x56c9('0x29')](handleEntityNotFound(_0x117f05,null))[_0x56c9('0x29')](function(_0x4eceb2){if(_0x4eceb2){_0x1a18ba[_0x56c9('0x50')][_0x56c9('0x51')]=_0x4eceb2['id'];return db[_0x56c9('0x33')]['create'](_0x1a18ba['body']);}})['then'](respondWithResult(_0x117f05,null))[_0x56c9('0x45')](handleError(_0x117f05,null));};exports[_0x56c9('0x52')]=function(_0x2b6c9e,_0x133ace,_0x932c74){var _0xc6699c={};var _0x1177f0={};var _0x2013e3;var _0x128211;return db[_0x56c9('0x33')][_0x56c9('0x53')]({'where':{'id':_0x2b6c9e[_0x56c9('0x46')]['id']}})['then'](handleEntityNotFound(_0x133ace,null))[_0x56c9('0x29')](function(_0x3ae276){if(_0x3ae276){_0x2013e3=_0x3ae276;_0x1177f0['model']=_[_0x56c9('0x38')](db[_0x56c9('0x33')]['rawAttributes']);_0x1177f0[_0x56c9('0x37')]=_[_0x56c9('0x38')](_0x2b6c9e[_0x56c9('0x37')]);_0x1177f0[_0x56c9('0x39')]=_['intersection'](_0x1177f0[_0x56c9('0x36')],_0x1177f0[_0x56c9('0x37')]);_0xc6699c['attributes']=_[_0x56c9('0x3b')](_0x1177f0[_0x56c9('0x36')],qs[_0x56c9('0x54')](_0x2b6c9e[_0x56c9('0x37')][_0x56c9('0x54')]));_0xc6699c[_0x56c9('0x3a')]=_0xc6699c['attributes'][_0x56c9('0x47')]?_0xc6699c['attributes']:_0x1177f0[_0x56c9('0x36')];_0xc6699c[_0x56c9('0x55')]=qs[_0x56c9('0x3d')](_0x2b6c9e[_0x56c9('0x37')][_0x56c9('0x3d')]);_0xc6699c['where']=qs['filters'](_[_0x56c9('0x56')](_0x2b6c9e['query'],_0x1177f0[_0x56c9('0x39')]));if(_0x2b6c9e[_0x56c9('0x37')][_0x56c9('0x3f')]){_0xc6699c[_0x56c9('0x3e')]=_[_0x56c9('0x40')](_0xc6699c[_0x56c9('0x3e')],{'$or':_[_0x56c9('0x32')](_0xc6699c[_0x56c9('0x3a')],function(_0x20354b){var _0x447643={};_0x447643[_0x20354b]={'$like':'%'+_0x2b6c9e['query'][_0x56c9('0x3f')]+'%'};return _0x447643;})});}_0xc6699c=_[_0x56c9('0x40')]({},_0xc6699c,_0x2b6c9e[_0x56c9('0x43')]);return _0x2013e3[_0x56c9('0x52')](_0xc6699c);}})[_0x56c9('0x29')](function(_0x148982){if(_0x148982){_0x128211=_0x148982['length'];if(!_0x2b6c9e[_0x56c9('0x37')][_0x56c9('0x3c')](_0x56c9('0x57'))){_0xc6699c['limit']=qs[_0x56c9('0x20')](_0x2b6c9e[_0x56c9('0x37')][_0x56c9('0x20')]);_0xc6699c[_0x56c9('0x1f')]=qs[_0x56c9('0x1f')](_0x2b6c9e['query']['offset']);}return _0x2013e3['getIntervals'](_0xc6699c);}})['then'](function(_0x452eae){if(_0x452eae){return _0x452eae?{'count':_0x128211,'rows':_0x452eae}:null;}})[_0x56c9('0x29')](respondWithResult(_0x133ace,null))['catch'](handleError(_0x133ace,null));};exports['addIntervals']=function(_0x24442f,_0x160d70,_0x23d2b0){return db[_0x56c9('0x33')]['findOne']({'where':{'id':_0x24442f[_0x56c9('0x46')]['id']}})[_0x56c9('0x29')](handleEntityNotFound(_0x160d70,null))[_0x56c9('0x29')](function(_0xa1092a){if(_0xa1092a){return db['sequelize'][_0x56c9('0x58')](function(_0x11ab94){return db[_0x56c9('0x33')][_0x56c9('0x2a')]({'where':{'IntervalId':_0x24442f['params']['id']},'transaction':_0x11ab94})['then'](function(_0x215f8e){var _0x1866f4=_[_0x56c9('0x32')](_0x24442f[_0x56c9('0x50')],function(_0x458456){delete _0x458456['id'];_0x458456[_0x56c9('0x51')]=_0x24442f[_0x56c9('0x46')]['id'];return _0x458456;});return db[_0x56c9('0x33')][_0x56c9('0x59')](_0x1866f4,{'transaction':_0x11ab94});});})[_0x56c9('0x29')](function(){return db[_0x56c9('0x33')][_0x56c9('0x5a')]({'where':{'IntervalId':_0x24442f[_0x56c9('0x46')]['id']}});});}})[_0x56c9('0x29')](respondWithResult(_0x160d70,null))[_0x56c9('0x45')](handleError(_0x160d70,null));};
\ No newline at end of file
index 9999f6e..da643d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf82b=['define','Interval','rewrite','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./interval.attributes','../../components/extensions/rewrite'];(function(_0x7923da,_0xc3f80f){var _0x5f0fbf=function(_0x27df1a){while(--_0x27df1a){_0x7923da['push'](_0x7923da['shift']());}};_0x5f0fbf(++_0xc3f80f);}(_0xf82b,0xe3));var _0xbf82=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf82b[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xbf82('0x0'));var util=require(_0xbf82('0x1'));var logger=require(_0xbf82('0x2'))(_0xbf82('0x3'));var moment=require(_0xbf82('0x4'));var BPromise=require(_0xbf82('0x5'));var rp=require(_0xbf82('0x6'));var fs=require('fs');var path=require(_0xbf82('0x7'));var rimraf=require('rimraf');var config=require(_0xbf82('0x8'));var attributes=require(_0xbf82('0x9'));var extensions=require(_0xbf82('0xa'));module['exports']=function(_0x26d9ea,_0x13bbc6){return _0x26d9ea[_0xbf82('0xb')](_0xbf82('0xc'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4c56fd,_0x4fd5c4){extensions[_0xbf82('0xd')](_0x26d9ea,_0x4c56fd);},'afterBulkCreate':function(_0x4ec406,_0x4e93d0,_0x4bfa39){_0x4bfa39();extensions['rewrite'](_0x26d9ea,_0x4ec406[0x0]);},'afterUpdate':function(_0x3ae33f,_0x31c4ab){extensions[_0xbf82('0xd')](_0x26d9ea,_0x3ae33f);},'afterDestroy':function(_0x409ef6,_0x325f3b){extensions['rewrite'](_0x26d9ea,_0x409ef6);}}});};
\ No newline at end of file
+var _0x6006=['request-promise','rimraf','../../config/environment','../../components/extensions/rewrite','define','Interval','tools_intervals','rewrite','lodash','util','moment'];(function(_0xc1c8b8,_0x492853){var _0x2f8b15=function(_0x57d314){while(--_0x57d314){_0xc1c8b8['push'](_0xc1c8b8['shift']());}};_0x2f8b15(++_0x492853);}(_0x6006,0x173));var _0x6600=function(_0x407ed9,_0x49b5a7){_0x407ed9=_0x407ed9-0x0;var _0x4dfd7c=_0x6006[_0x407ed9];return _0x4dfd7c;};'use strict';var _=require(_0x6600('0x0'));var util=require(_0x6600('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6600('0x2'));var BPromise=require('bluebird');var rp=require(_0x6600('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6600('0x4'));var config=require(_0x6600('0x5'));var attributes=require('./interval.attributes');var extensions=require(_0x6600('0x6'));module['exports']=function(_0xb8e216,_0x3fb422){return _0xb8e216[_0x6600('0x7')](_0x6600('0x8'),attributes,{'tableName':_0x6600('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x27ad62,_0x29ec19){extensions[_0x6600('0xa')](_0xb8e216,_0x27ad62);},'afterBulkCreate':function(_0x27b503,_0x554fcf,_0x4dd43e){_0x4dd43e();extensions[_0x6600('0xa')](_0xb8e216,_0x27b503[0x0]);},'afterUpdate':function(_0x120081,_0x2ba7a2){extensions[_0x6600('0xa')](_0xb8e216,_0x120081);},'afterDestroy':function(_0x4bf6b9,_0x3a867a){extensions[_0x6600('0xa')](_0xb8e216,_0x4bf6b9);}}});};
\ No newline at end of file
index 39ea8b1..9f198cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x3a8db5,_0x31cff7){var _0x2c03cd=function(_0x47dba0){while(--_0x47dba0){_0x3a8db5['push'](_0x3a8db5['shift']());}};_0x2c03cd(++_0x31cff7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index bf5a711..5be45c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x435105,_0x57c6c4){var _0x1f9bf4=function(_0x253de5){while(--_0x253de5){_0x435105['push'](_0x435105['shift']());}};_0x1f9bf4(++_0x57c6c4);}(_0x2ef3,0xba));var _0x32ef=function(_0xc55362,_0x33b236){_0xc55362=_0xc55362-0x0;var _0x159ed2=_0x2ef3[_0xc55362];return _0x159ed2;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
+var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x1727a2,_0x5edc76){var _0x18f7e2=function(_0x2347d5){while(--_0x2347d5){_0x1727a2['push'](_0x1727a2['shift']());}};_0x18f7e2(++_0x5edc76);}(_0xdb28,0x106));var _0x8db2=function(_0x18c10c,_0x2c9a15){_0x18c10c=_0x18c10c-0x0;var _0xb52483=_0xdb28[_0x18c10c];return _0xb52483;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
index ab42915..bf0c422 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6801=['3eAmWpBVP0','key','MOTGUI','Report','\x20from\x20','description','issuetype','fields','email','customfield_11501','oldToken','customfield_11502','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','toString','base64','stringify','request','setEncoding','utf8','data','end','status','statusCode','json','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','body','x-forwarded-for','remoteAddress','socket','connection','bluebird','https','../../config/logger','support'];(function(_0x57a8fa,_0x454f43){var _0x350713=function(_0x525c78){while(--_0x525c78){_0x57a8fa['push'](_0x57a8fa['shift']());}};_0x350713(++_0x454f43);}(_0x6801,0x15c));var _0x1680=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6801[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x1680('0x0'));var https=require(_0x1680('0x1'));var logger=require(_0x1680('0x2'))('api');var USERNAME=_0x1680('0x3');var PASSWORD=_0x1680('0x4');function openIssue(_0xd8800b,_0x3fd8eb){var _0x4d55e1={'fields':{'project':{'key':_0xd8800b[_0x1680('0x5')]||_0x1680('0x6')},'summary':(_0xd8800b['summary']||_0x1680('0x7'))+_0x1680('0x8')+_0xd8800b['ip'],'description':_0xd8800b[_0x1680('0x9')]||JSON['stringify'](_0xd8800b),'issuetype':{'name':_0xd8800b[_0x1680('0xa')]||'Bug'}}};_0x4d55e1[_0x1680('0xb')]['customfield_11500']=_0xd8800b[_0x1680('0xc')];_0x4d55e1[_0x1680('0xb')][_0x1680('0xd')]=_0xd8800b[_0x1680('0xe')];_0x4d55e1[_0x1680('0xb')][_0x1680('0xf')]=_0xd8800b['newToken'];_0x4d55e1[_0x1680('0xb')][_0x1680('0x10')]=_0xd8800b[_0x1680('0x11')];_0x4d55e1[_0x1680('0xb')][_0x1680('0x12')]=_0xd8800b[_0x1680('0x13')];_0x4d55e1[_0x1680('0xb')][_0x1680('0x14')]=_0xd8800b['ip'];var _0x131765={'host':_0x1680('0x15'),'port':0x1bb,'path':_0x1680('0x16'),'method':_0x1680('0x17'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0x1680('0x18')+new Buffer(USERNAME+':'+PASSWORD)[_0x1680('0x19')](_0x1680('0x1a'))}};var _0x3160ef=JSON[_0x1680('0x1b')](_0x4d55e1);var _0x3ae697=https[_0x1680('0x1c')](_0x131765,function(_0x3b1e35){_0x3b1e35[_0x1680('0x1d')](_0x1680('0x1e'));var _0x211cfe='';_0x3b1e35['on'](_0x1680('0x1f'),function(_0x35bfe9){_0x211cfe+=_0x35bfe9;});_0x3b1e35['on'](_0x1680('0x20'),function(){if(_0x3fd8eb){return _0x3fd8eb[_0x1680('0x21')](_0x3b1e35[_0x1680('0x22')])[_0x1680('0x23')](JSON['parse'](_0x211cfe));}});});_0x3ae697['on'](_0x1680('0x24'),function(_0x3e253e){if(_0x3fd8eb){return _0x3fd8eb[_0x1680('0x21')](0x1f4)[_0x1680('0x23')]({'errors':[{'message':_0x1680('0x25'),'type':'api.jira'}]});}});_0x3ae697[_0x1680('0x26')](_0x3160ef);_0x3ae697[_0x1680('0x20')]();}exports['openIssue']=openIssue;exports['send']=function(_0x161a0a,_0x54b012){_0x161a0a[_0x1680('0x27')]['ip']=_0x161a0a['headers'][_0x1680('0x28')]||_0x161a0a['connection'][_0x1680('0x29')]||_0x161a0a[_0x1680('0x2a')][_0x1680('0x29')]||_0x161a0a[_0x1680('0x2b')]['socket'][_0x1680('0x29')];return openIssue(_0x161a0a[_0x1680('0x27')],_0x54b012);};
\ No newline at end of file
+var _0xbce5=['x-forwarded-for','connection','remoteAddress','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','customfield_11502','newToken','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','toString','base64','request','setEncoding','end','statusCode','parse','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers'];(function(_0x4df5b9,_0x3c4844){var _0x4538e2=function(_0xa1f35a){while(--_0xa1f35a){_0x4df5b9['push'](_0x4df5b9['shift']());}};_0x4538e2(++_0x3c4844);}(_0xbce5,0x173));var _0x5bce=function(_0x2932cf,_0x362fd9){_0x2932cf=_0x2932cf-0x0;var _0x1711dd=_0xbce5[_0x2932cf];return _0x1711dd;};'use strict';var BPromise=require(_0x5bce('0x0'));var https=require(_0x5bce('0x1'));var logger=require(_0x5bce('0x2'))(_0x5bce('0x3'));var USERNAME=_0x5bce('0x4');var PASSWORD=_0x5bce('0x5');function openIssue(_0x2c6aed,_0x158ef1){var _0xd54170={'fields':{'project':{'key':_0x2c6aed[_0x5bce('0x6')]||'MOTGUI'},'summary':(_0x2c6aed[_0x5bce('0x7')]||_0x5bce('0x8'))+_0x5bce('0x9')+_0x2c6aed['ip'],'description':_0x2c6aed[_0x5bce('0xa')]||JSON[_0x5bce('0xb')](_0x2c6aed),'issuetype':{'name':_0x2c6aed[_0x5bce('0xc')]||_0x5bce('0xd')}}};_0xd54170[_0x5bce('0xe')][_0x5bce('0xf')]=_0x2c6aed[_0x5bce('0x10')];_0xd54170[_0x5bce('0xe')][_0x5bce('0x11')]=_0x2c6aed['oldToken'];_0xd54170[_0x5bce('0xe')][_0x5bce('0x12')]=_0x2c6aed[_0x5bce('0x13')];_0xd54170['fields']['customfield_11503']=_0x2c6aed[_0x5bce('0x14')];_0xd54170['fields'][_0x5bce('0x15')]=_0x2c6aed[_0x5bce('0x16')];_0xd54170[_0x5bce('0xe')][_0x5bce('0x17')]=_0x2c6aed['ip'];var _0x17312d={'host':_0x5bce('0x18'),'port':0x1bb,'path':_0x5bce('0x19'),'method':_0x5bce('0x1a'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x5bce('0x1b')](_0x5bce('0x1c'))}};var _0x117f66=JSON[_0x5bce('0xb')](_0xd54170);var _0x41e877=https[_0x5bce('0x1d')](_0x17312d,function(_0x59a181){_0x59a181[_0x5bce('0x1e')]('utf8');var _0x4188d3='';_0x59a181['on']('data',function(_0x1c2d19){_0x4188d3+=_0x1c2d19;});_0x59a181['on'](_0x5bce('0x1f'),function(){if(_0x158ef1){return _0x158ef1['status'](_0x59a181[_0x5bce('0x20')])['json'](JSON[_0x5bce('0x21')](_0x4188d3));}});});_0x41e877['on'](_0x5bce('0x22'),function(_0x3d9f68){if(_0x158ef1){return _0x158ef1[_0x5bce('0x23')](0x1f4)['json']({'errors':[{'message':_0x5bce('0x24'),'type':_0x5bce('0x25')}]});}});_0x41e877[_0x5bce('0x26')](_0x117f66);_0x41e877['end']();}exports[_0x5bce('0x27')]=openIssue;exports[_0x5bce('0x28')]=function(_0x495709,_0x1170eb){_0x495709[_0x5bce('0x29')]['ip']=_0x495709[_0x5bce('0x2a')][_0x5bce('0x2b')]||_0x495709[_0x5bce('0x2c')]['remoteAddress']||_0x495709['socket'][_0x5bce('0x2d')]||_0x495709[_0x5bce('0x2c')]['socket'][_0x5bce('0x2d')];return openIssue(_0x495709[_0x5bce('0x29')],_0x1170eb);};
\ No newline at end of file
index 9fd68ab..d61b236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['./jscriptyAnswerReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','multer','Router','../../components/interaction/service','../../config/environment'];(function(_0xdbf88,_0x35e021){var _0x18a8d9=function(_0x58417a){while(--_0x58417a){_0xdbf88['push'](_0xdbf88['shift']());}};_0x18a8d9(++_0x35e021);}(_0xf4eb,0xec));var _0xbf4e=function(_0x359fb9,_0x17cc03){_0x359fb9=_0x359fb9-0x0;var _0x5b59fc=_0xf4eb[_0x359fb9];return _0x5b59fc;};'use strict';var multer=require(_0xbf4e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbf4e('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var controller=require(_0xbf4e('0x4'));router[_0xbf4e('0x5')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x5')]('/describe',auth[_0xbf4e('0x6')](),controller['describe']);router['get'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0xa')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xb')]);router[_0xbf4e('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xbf4e('0xd')]);router['delete'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller['destroy']);module[_0xbf4e('0xe')]=router;
\ No newline at end of file
+var _0xcb91=['get','index','isAuthenticated','describe','/:id','post','create','put','update','delete','destroy','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller'];(function(_0x3f5ad4,_0x3c3245){var _0x537060=function(_0x52f04c){while(--_0x52f04c){_0x3f5ad4['push'](_0x3f5ad4['shift']());}};_0x537060(++_0x3c3245);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x358806,_0x322b66){_0x358806=_0x358806-0x0;var _0x19fdcb=_0xcb91[_0x358806];return _0x19fdcb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xd')]);router[_0x1cb9('0xe')](_0x1cb9('0xb'),auth['isAuthenticated'](),controller[_0x1cb9('0xf')]);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);module['exports']=router;
\ No newline at end of file
index 3eed868..ec9ea64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x7a54,0x106));var _0x47a5=function(_0x2745b5,_0x2b7d64){_0x2745b5=_0x2745b5-0x0;var _0x16baf5=_0x7a54[_0x2745b5];return _0x16baf5;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7a54,0x106));var _0x47a5=function(_0x294da1,_0x1d542b){_0x294da1=_0x294da1-0x0;var _0x2caf52=_0x7a54[_0x294da1];return _0x2caf52;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index 9098689..82d6d5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea81=['end','json','offset','undefined','count','limit','set','apply','reject','save','then','error','stack','name','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','findAll','catch','params','length','includeAll','include','options','create','body','update','destroy','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status'];(function(_0x3f2ccb,_0x1a85f5){var _0x4d40b9=function(_0x36a055){while(--_0x36a055){_0x3f2ccb['push'](_0x3f2ccb['shift']());}};_0x4d40b9(++_0x1a85f5);}(_0xea81,0x1ed));var _0x1ea8=function(_0x5d9249,_0x2e12e8){_0x5d9249=_0x5d9249-0x0;var _0x188ed4=_0xea81[_0x5d9249];return _0x188ed4;};'use strict';var emlformat=require(_0x1ea8('0x0'));var rimraf=require(_0x1ea8('0x1'));var zipdir=require(_0x1ea8('0x2'));var jsonpatch=require(_0x1ea8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1ea8('0x4'));var Mustache=require(_0x1ea8('0x5'));var util=require(_0x1ea8('0x6'));var path=require(_0x1ea8('0x7'));var sox=require(_0x1ea8('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1ea8('0x9'));var squel=require(_0x1ea8('0xa'));var crypto=require(_0x1ea8('0xb'));var jsforce=require(_0x1ea8('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1ea8('0xd'));var querystring=require(_0x1ea8('0xe'));var Papa=require(_0x1ea8('0xf'));var Redis=require(_0x1ea8('0x10'));var authService=require(_0x1ea8('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x1ea8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1ea8('0x13'))(_0x1ea8('0x14'));var utils=require(_0x1ea8('0x15'));var config=require(_0x1ea8('0x16'));var licenseUtil=require(_0x1ea8('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a1f3e,_0x2e2c66){_0x2e2c66=_0x2e2c66||0xcc;return function(_0x2b94da){if(_0x2b94da){return _0x5a1f3e['sendStatus'](_0x2e2c66);}return _0x5a1f3e[_0x1ea8('0x18')](_0x2e2c66)[_0x1ea8('0x19')]();};}function respondWithResult(_0x97d328,_0x184601){_0x184601=_0x184601||0xc8;return function(_0x122406){if(_0x122406){return _0x97d328['status'](_0x184601)[_0x1ea8('0x1a')](_0x122406);}};}function respondWithFilteredResult(_0x3f9156,_0x3e072d){return function(_0x4f1197){if(_0x4f1197){var _0x2d5b07=typeof _0x3e072d[_0x1ea8('0x1b')]==='undefined'&&typeof _0x3e072d['limit']===_0x1ea8('0x1c');var _0x4b80f9=_0x4f1197[_0x1ea8('0x1d')];var _0x4cf432=_0x2d5b07?0x0:_0x3e072d[_0x1ea8('0x1b')];var _0x228391=_0x2d5b07?_0x4f1197[_0x1ea8('0x1d')]:_0x3e072d[_0x1ea8('0x1b')]+_0x3e072d[_0x1ea8('0x1e')];var _0x8db288;if(_0x228391>=_0x4b80f9){_0x228391=_0x4b80f9;_0x8db288=0xc8;}else{_0x8db288=0xce;}_0x3f9156[_0x1ea8('0x18')](_0x8db288);return _0x3f9156[_0x1ea8('0x1f')]('Content-Range',_0x4cf432+'-'+_0x228391+'/'+_0x4b80f9)[_0x1ea8('0x1a')](_0x4f1197);}return null;};}function patchUpdates(_0x2a3b4c){return function(_0x1b0148){try{jsonpatch[_0x1ea8('0x20')](_0x1b0148,_0x2a3b4c,!![]);}catch(_0x106f33){return BPromise[_0x1ea8('0x21')](_0x106f33);}return _0x1b0148[_0x1ea8('0x22')]();};}function saveUpdates(_0x13f554,_0xad7ad3){return function(_0x247a47){if(_0x247a47){return _0x247a47['update'](_0x13f554)[_0x1ea8('0x23')](function(_0x489180){return _0x489180;});}return null;};}function removeEntity(_0x4276f0,_0x4e03ee){return function(_0x311e2e){if(_0x311e2e){return _0x311e2e['destroy']()[_0x1ea8('0x23')](function(){_0x4276f0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d7b5c,_0x5ea18e){return function(_0x415bc1){if(!_0x415bc1){_0x2d7b5c['sendStatus'](0x194);}return _0x415bc1;};}function handleError(_0x5b3d5c,_0x3a79bf){_0x3a79bf=_0x3a79bf||0x1f4;return function(_0x386dce){logger[_0x1ea8('0x24')](_0x386dce[_0x1ea8('0x25')]);if(_0x386dce[_0x1ea8('0x26')]){delete _0x386dce[_0x1ea8('0x26')];}_0x5b3d5c[_0x1ea8('0x18')](_0x3a79bf)['send'](_0x386dce);};}exports[_0x1ea8('0x27')]=function(_0x4b293f,_0x6129d4){var _0x4e1b56={},_0x28a7e0={},_0x1f605c={'count':0x0,'rows':[]};var _0x57ca09=_[_0x1ea8('0x28')](db[_0x1ea8('0x29')][_0x1ea8('0x2a')],function(_0x3831c4){return{'name':_0x3831c4[_0x1ea8('0x2b')],'type':_0x3831c4[_0x1ea8('0x2c')][_0x1ea8('0x2d')]};});_0x28a7e0[_0x1ea8('0x2e')]=_[_0x1ea8('0x28')](_0x57ca09,_0x1ea8('0x26'));_0x28a7e0[_0x1ea8('0x2f')]=_[_0x1ea8('0x30')](_0x4b293f[_0x1ea8('0x2f')]);_0x28a7e0[_0x1ea8('0x31')]=_[_0x1ea8('0x32')](_0x28a7e0['model'],_0x28a7e0['query']);_0x4e1b56[_0x1ea8('0x33')]=_['intersection'](_0x28a7e0[_0x1ea8('0x2e')],qs[_0x1ea8('0x34')](_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x34')]));_0x4e1b56['attributes']=_0x4e1b56[_0x1ea8('0x33')]['length']?_0x4e1b56['attributes']:_0x28a7e0[_0x1ea8('0x2e')];if(!_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x35')](_0x1ea8('0x36'))){_0x4e1b56[_0x1ea8('0x1e')]=qs[_0x1ea8('0x1e')](_0x4b293f[_0x1ea8('0x2f')]['limit']);_0x4e1b56[_0x1ea8('0x1b')]=qs[_0x1ea8('0x1b')](_0x4b293f[_0x1ea8('0x2f')]['offset']);}_0x4e1b56['order']=qs[_0x1ea8('0x37')](_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x37')]);_0x4e1b56['where']=qs[_0x1ea8('0x31')](_[_0x1ea8('0x38')](_0x4b293f[_0x1ea8('0x2f')],_0x28a7e0[_0x1ea8('0x31')]),_0x57ca09);if(_0x4b293f[_0x1ea8('0x2f')]['filter']){_0x4e1b56[_0x1ea8('0x39')]=_[_0x1ea8('0x3a')](_0x4e1b56['where'],{'$or':_[_0x1ea8('0x28')](_0x57ca09,function(_0x7e102b){if(_0x7e102b['type']!==_0x1ea8('0x3b')){var _0x266818={};_0x266818[_0x7e102b['name']]={'$like':'%'+_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x3c')]+'%'};return _0x266818;}})});}_0x4e1b56=_[_0x1ea8('0x3a')]({},_0x4e1b56,_0x4b293f['options']);var _0x22aae6={'where':_0x4e1b56[_0x1ea8('0x39')]};return db[_0x1ea8('0x29')]['count'](_0x22aae6)[_0x1ea8('0x23')](function(_0x551d86){_0x1f605c[_0x1ea8('0x1d')]=_0x551d86;if(_0x4b293f[_0x1ea8('0x2f')]['includeAll']){_0x4e1b56['include']=[{'all':!![]}];}return db[_0x1ea8('0x29')][_0x1ea8('0x3d')](_0x4e1b56);})[_0x1ea8('0x23')](function(_0x19d130){_0x1f605c['rows']=_0x19d130;return _0x1f605c;})['then'](respondWithFilteredResult(_0x6129d4,_0x4e1b56))[_0x1ea8('0x3e')](handleError(_0x6129d4,null));};exports['show']=function(_0x12b70e,_0x19b36f){var _0x5378fd={'raw':!![],'where':{'id':_0x12b70e[_0x1ea8('0x3f')]['id']}},_0x11fab9={};_0x11fab9[_0x1ea8('0x2e')]=_['keys'](db[_0x1ea8('0x29')][_0x1ea8('0x2a')]);_0x11fab9[_0x1ea8('0x2f')]=_[_0x1ea8('0x30')](_0x12b70e[_0x1ea8('0x2f')]);_0x11fab9[_0x1ea8('0x31')]=_[_0x1ea8('0x32')](_0x11fab9[_0x1ea8('0x2e')],_0x11fab9[_0x1ea8('0x2f')]);_0x5378fd[_0x1ea8('0x33')]=_['intersection'](_0x11fab9[_0x1ea8('0x2e')],qs[_0x1ea8('0x34')](_0x12b70e[_0x1ea8('0x2f')]['fields']));_0x5378fd[_0x1ea8('0x33')]=_0x5378fd['attributes'][_0x1ea8('0x40')]?_0x5378fd[_0x1ea8('0x33')]:_0x11fab9[_0x1ea8('0x2e')];if(_0x12b70e[_0x1ea8('0x2f')][_0x1ea8('0x41')]){_0x5378fd[_0x1ea8('0x42')]=[{'all':!![]}];}_0x5378fd=_[_0x1ea8('0x3a')]({},_0x5378fd,_0x12b70e[_0x1ea8('0x43')]);return db[_0x1ea8('0x29')]['find'](_0x5378fd)['then'](handleEntityNotFound(_0x19b36f,null))[_0x1ea8('0x23')](respondWithResult(_0x19b36f,null))[_0x1ea8('0x3e')](handleError(_0x19b36f,null));};exports[_0x1ea8('0x44')]=function(_0x3c53ca,_0x30284c){return db['JscriptyAnswerReport'][_0x1ea8('0x44')](_0x3c53ca[_0x1ea8('0x45')],{})[_0x1ea8('0x23')](respondWithResult(_0x30284c,0xc9))[_0x1ea8('0x3e')](handleError(_0x30284c,null));};exports[_0x1ea8('0x46')]=function(_0x1d4e1e,_0x1d1f66){if(_0x1d4e1e[_0x1ea8('0x45')]['id']){delete _0x1d4e1e['body']['id'];}return db[_0x1ea8('0x29')]['find']({'where':{'id':_0x1d4e1e[_0x1ea8('0x3f')]['id']}})[_0x1ea8('0x23')](handleEntityNotFound(_0x1d1f66,null))[_0x1ea8('0x23')](saveUpdates(_0x1d4e1e['body'],null))['then'](respondWithResult(_0x1d1f66,null))['catch'](handleError(_0x1d1f66,null));};exports[_0x1ea8('0x47')]=function(_0x2a8bd7,_0x3bb40c){return db['JscriptyAnswerReport'][_0x1ea8('0x48')]({'where':{'id':_0x2a8bd7[_0x1ea8('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3bb40c,null))[_0x1ea8('0x23')](removeEntity(_0x3bb40c,null))[_0x1ea8('0x3e')](handleError(_0x3bb40c,null));};exports[_0x1ea8('0x49')]=function(_0xed1cd5,_0x2df89b){return db[_0x1ea8('0x29')][_0x1ea8('0x49')]()[_0x1ea8('0x23')](respondWithResult(_0x2df89b,null))[_0x1ea8('0x3e')](handleError(_0x2df89b,null));};
\ No newline at end of file
+var _0x80c3=['bluebird','mustache','to-csv','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','JscriptyAnswerReport','type','model','query','keys','filters','attributes','intersection','fields','nolimit','order','pick','filter','merge','options','where','count','includeAll','include','findAll','rows','catch','params','length','find','create','body','describe','eml-format','fast-json-patch','moment'];(function(_0x531cb8,_0x8ef36f){var _0x5cf297=function(_0x45acb4){while(--_0x45acb4){_0x531cb8['push'](_0x531cb8['shift']());}};_0x5cf297(++_0x8ef36f);}(_0x80c3,0x18f));var _0x380c=function(_0x545b71,_0x4f44eb){_0x545b71=_0x545b71-0x0;var _0x26e587=_0x80c3[_0x545b71];return _0x26e587;};'use strict';var emlformat=require(_0x380c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x380c('0x1'));var rp=require('request-promise');var moment=require(_0x380c('0x2'));var BPromise=require(_0x380c('0x3'));var Mustache=require(_0x380c('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x380c('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x380c('0x6'));var squel=require(_0x380c('0x7'));var crypto=require(_0x380c('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x380c('0x9'));var toCsv=require(_0x380c('0x5'));var querystring=require('querystring');var Papa=require(_0x380c('0xa'));var Redis=require(_0x380c('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x380c('0xc'));var as=require(_0x380c('0xd'));var hardwareService=require(_0x380c('0xe'));var logger=require('../../config/logger')(_0x380c('0xf'));var utils=require(_0x380c('0x10'));var config=require(_0x380c('0x11'));var licenseUtil=require(_0x380c('0x12'));var db=require(_0x380c('0x13'))['db'];function respondWithStatusCode(_0x475148,_0x39bd46){_0x39bd46=_0x39bd46||0xcc;return function(_0x14793b){if(_0x14793b){return _0x475148[_0x380c('0x14')](_0x39bd46);}return _0x475148[_0x380c('0x15')](_0x39bd46)['end']();};}function respondWithResult(_0x485a05,_0x12cdac){_0x12cdac=_0x12cdac||0xc8;return function(_0x5b59af){if(_0x5b59af){return _0x485a05[_0x380c('0x15')](_0x12cdac)[_0x380c('0x16')](_0x5b59af);}};}function respondWithFilteredResult(_0x8add18,_0x1aa44b){return function(_0x3704b3){if(_0x3704b3){var _0x1b902d=typeof _0x1aa44b[_0x380c('0x17')]===_0x380c('0x18')&&typeof _0x1aa44b[_0x380c('0x19')]==='undefined';var _0x31edee=_0x3704b3['count'];var _0x5b2c5c=_0x1b902d?0x0:_0x1aa44b[_0x380c('0x17')];var _0x4fa7a1=_0x1b902d?_0x3704b3['count']:_0x1aa44b['offset']+_0x1aa44b['limit'];var _0x14443e;if(_0x4fa7a1>=_0x31edee){_0x4fa7a1=_0x31edee;_0x14443e=0xc8;}else{_0x14443e=0xce;}_0x8add18[_0x380c('0x15')](_0x14443e);return _0x8add18[_0x380c('0x1a')](_0x380c('0x1b'),_0x5b2c5c+'-'+_0x4fa7a1+'/'+_0x31edee)[_0x380c('0x16')](_0x3704b3);}return null;};}function patchUpdates(_0x4086c2){return function(_0x271e4e){try{jsonpatch[_0x380c('0x1c')](_0x271e4e,_0x4086c2,!![]);}catch(_0x16d06a){return BPromise[_0x380c('0x1d')](_0x16d06a);}return _0x271e4e[_0x380c('0x1e')]();};}function saveUpdates(_0x16b9ac,_0x374e50){return function(_0x3aeff4){if(_0x3aeff4){return _0x3aeff4[_0x380c('0x1f')](_0x16b9ac)[_0x380c('0x20')](function(_0x38427b){return _0x38427b;});}return null;};}function removeEntity(_0x286564,_0x19d0ef){return function(_0x394119){if(_0x394119){return _0x394119[_0x380c('0x21')]()['then'](function(){_0x286564[_0x380c('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0xcb2d3,_0x5cb022){return function(_0x2f2e98){if(!_0x2f2e98){_0xcb2d3['sendStatus'](0x194);}return _0x2f2e98;};}function handleError(_0x551940,_0x2456ab){_0x2456ab=_0x2456ab||0x1f4;return function(_0x290f1c){logger['error'](_0x290f1c[_0x380c('0x22')]);if(_0x290f1c[_0x380c('0x23')]){delete _0x290f1c[_0x380c('0x23')];}_0x551940[_0x380c('0x15')](_0x2456ab)[_0x380c('0x24')](_0x290f1c);};}exports[_0x380c('0x25')]=function(_0x229840,_0x5ac3c2){var _0x575010={},_0x460d35={},_0x3a32f9={'count':0x0,'rows':[]};var _0x20e3db=_[_0x380c('0x26')](db[_0x380c('0x27')]['rawAttributes'],function(_0x5a2e17){return{'name':_0x5a2e17['fieldName'],'type':_0x5a2e17[_0x380c('0x28')]['key']};});_0x460d35[_0x380c('0x29')]=_[_0x380c('0x26')](_0x20e3db,'name');_0x460d35[_0x380c('0x2a')]=_[_0x380c('0x2b')](_0x229840[_0x380c('0x2a')]);_0x460d35[_0x380c('0x2c')]=_['intersection'](_0x460d35[_0x380c('0x29')],_0x460d35[_0x380c('0x2a')]);_0x575010[_0x380c('0x2d')]=_[_0x380c('0x2e')](_0x460d35[_0x380c('0x29')],qs[_0x380c('0x2f')](_0x229840[_0x380c('0x2a')][_0x380c('0x2f')]));_0x575010['attributes']=_0x575010['attributes']['length']?_0x575010[_0x380c('0x2d')]:_0x460d35['model'];if(!_0x229840[_0x380c('0x2a')]['hasOwnProperty'](_0x380c('0x30'))){_0x575010[_0x380c('0x19')]=qs[_0x380c('0x19')](_0x229840['query'][_0x380c('0x19')]);_0x575010[_0x380c('0x17')]=qs[_0x380c('0x17')](_0x229840[_0x380c('0x2a')]['offset']);}_0x575010[_0x380c('0x31')]=qs['sort'](_0x229840[_0x380c('0x2a')]['sort']);_0x575010['where']=qs[_0x380c('0x2c')](_[_0x380c('0x32')](_0x229840[_0x380c('0x2a')],_0x460d35[_0x380c('0x2c')]),_0x20e3db);if(_0x229840[_0x380c('0x2a')][_0x380c('0x33')]){_0x575010['where']=_[_0x380c('0x34')](_0x575010['where'],{'$or':_[_0x380c('0x26')](_0x20e3db,function(_0x1b5769){if(_0x1b5769[_0x380c('0x28')]!=='VIRTUAL'){var _0x306c61={};_0x306c61[_0x1b5769[_0x380c('0x23')]]={'$like':'%'+_0x229840[_0x380c('0x2a')][_0x380c('0x33')]+'%'};return _0x306c61;}})});}_0x575010=_['merge']({},_0x575010,_0x229840[_0x380c('0x35')]);var _0x561772={'where':_0x575010[_0x380c('0x36')]};return db['JscriptyAnswerReport'][_0x380c('0x37')](_0x561772)[_0x380c('0x20')](function(_0x1c30bf){_0x3a32f9[_0x380c('0x37')]=_0x1c30bf;if(_0x229840['query'][_0x380c('0x38')]){_0x575010[_0x380c('0x39')]=[{'all':!![]}];}return db[_0x380c('0x27')][_0x380c('0x3a')](_0x575010);})['then'](function(_0x1b06ac){_0x3a32f9[_0x380c('0x3b')]=_0x1b06ac;return _0x3a32f9;})[_0x380c('0x20')](respondWithFilteredResult(_0x5ac3c2,_0x575010))[_0x380c('0x3c')](handleError(_0x5ac3c2,null));};exports['show']=function(_0x2ea3c4,_0x4019fe){var _0x39cbdb={'raw':!![],'where':{'id':_0x2ea3c4[_0x380c('0x3d')]['id']}},_0x2eac8d={};_0x2eac8d[_0x380c('0x29')]=_[_0x380c('0x2b')](db['JscriptyAnswerReport']['rawAttributes']);_0x2eac8d[_0x380c('0x2a')]=_['keys'](_0x2ea3c4[_0x380c('0x2a')]);_0x2eac8d[_0x380c('0x2c')]=_[_0x380c('0x2e')](_0x2eac8d['model'],_0x2eac8d['query']);_0x39cbdb['attributes']=_[_0x380c('0x2e')](_0x2eac8d['model'],qs[_0x380c('0x2f')](_0x2ea3c4[_0x380c('0x2a')]['fields']));_0x39cbdb[_0x380c('0x2d')]=_0x39cbdb[_0x380c('0x2d')][_0x380c('0x3e')]?_0x39cbdb[_0x380c('0x2d')]:_0x2eac8d['model'];if(_0x2ea3c4[_0x380c('0x2a')][_0x380c('0x38')]){_0x39cbdb['include']=[{'all':!![]}];}_0x39cbdb=_[_0x380c('0x34')]({},_0x39cbdb,_0x2ea3c4['options']);return db['JscriptyAnswerReport'][_0x380c('0x3f')](_0x39cbdb)[_0x380c('0x20')](handleEntityNotFound(_0x4019fe,null))[_0x380c('0x20')](respondWithResult(_0x4019fe,null))[_0x380c('0x3c')](handleError(_0x4019fe,null));};exports['create']=function(_0x6b9c8f,_0x2cf774){return db[_0x380c('0x27')][_0x380c('0x40')](_0x6b9c8f['body'],{})['then'](respondWithResult(_0x2cf774,0xc9))[_0x380c('0x3c')](handleError(_0x2cf774,null));};exports['update']=function(_0xdf44b0,_0x20c47e){if(_0xdf44b0[_0x380c('0x41')]['id']){delete _0xdf44b0[_0x380c('0x41')]['id'];}return db[_0x380c('0x27')][_0x380c('0x3f')]({'where':{'id':_0xdf44b0[_0x380c('0x3d')]['id']}})[_0x380c('0x20')](handleEntityNotFound(_0x20c47e,null))['then'](saveUpdates(_0xdf44b0[_0x380c('0x41')],null))['then'](respondWithResult(_0x20c47e,null))[_0x380c('0x3c')](handleError(_0x20c47e,null));};exports['destroy']=function(_0x5bf2dc,_0x3292cc){return db[_0x380c('0x27')]['find']({'where':{'id':_0x5bf2dc[_0x380c('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3292cc,null))[_0x380c('0x20')](removeEntity(_0x3292cc,null))[_0x380c('0x3c')](handleError(_0x3292cc,null));};exports['describe']=function(_0x4e503d,_0x5488e4){return db[_0x380c('0x27')][_0x380c('0x42')]()['then'](respondWithResult(_0x5488e4,null))[_0x380c('0x3c')](handleError(_0x5488e4,null));};
\ No newline at end of file
index 93e9caa..aae406b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc88c=['util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','define','JscriptyAnswerReport'];(function(_0x45c7c6,_0x389c09){var _0x44c218=function(_0x179739){while(--_0x179739){_0x45c7c6['push'](_0x45c7c6['shift']());}};_0x44c218(++_0x389c09);}(_0xc88c,0xb4));var _0xcc88=function(_0x8c3129,_0x4ec1a9){_0x8c3129=_0x8c3129-0x0;var _0x59a6a1=_0xc88c[_0x8c3129];return _0x59a6a1;};'use strict';var _=require('lodash');var util=require(_0xcc88('0x0'));var logger=require(_0xcc88('0x1'))('api');var moment=require('moment');var BPromise=require(_0xcc88('0x2'));var rp=require(_0xcc88('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcc88('0x4'));var config=require(_0xcc88('0x5'));var attributes=require(_0xcc88('0x6'));module['exports']=function(_0xe11af6,_0x23a401){return _0xe11af6[_0xcc88('0x7')](_0xcc88('0x8'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x736c=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','report_jscripty_answers','lodash','util'];(function(_0x298515,_0x2a4f2c){var _0x117afa=function(_0x25e57e){while(--_0x25e57e){_0x298515['push'](_0x298515['shift']());}};_0x117afa(++_0x2a4f2c);}(_0x736c,0x8d));var _0xc736=function(_0x2447d7,_0x3466fe){_0x2447d7=_0x2447d7-0x0;var _0x262442=_0x736c[_0x2447d7];return _0x262442;};'use strict';var _=require(_0xc736('0x0'));var util=require(_0xc736('0x1'));var logger=require(_0xc736('0x2'))(_0xc736('0x3'));var moment=require(_0xc736('0x4'));var BPromise=require(_0xc736('0x5'));var rp=require(_0xc736('0x6'));var fs=require('fs');var path=require(_0xc736('0x7'));var rimraf=require(_0xc736('0x8'));var config=require('../../config/environment');var attributes=require('./jscriptyAnswerReport.attributes');module['exports']=function(_0x43a573,_0x4b60a2){return _0x43a573[_0xc736('0x9')]('JscriptyAnswerReport',attributes,{'tableName':_0xc736('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bee38f4..025965e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6437=['error','JscriptyAnswerReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','stringify'];(function(_0x539143,_0x476a19){var _0x21c88e=function(_0x3131ff){while(--_0x3131ff){_0x539143['push'](_0x539143['shift']());}};_0x21c88e(++_0x476a19);}(_0x6437,0x123));var _0x7643=function(_0xe34b18,_0x55a956){_0xe34b18=_0xe34b18-0x0;var _0x3c6114=_0x6437[_0xe34b18];return _0x3c6114;};'use strict';var _=require(_0x7643('0x0'));var util=require(_0x7643('0x1'));var moment=require('moment');var BPromise=require(_0x7643('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7643('0x3'));var db=require(_0x7643('0x4'))['db'];var utils=require(_0x7643('0x5'));var logger=require(_0x7643('0x6'))(_0x7643('0x7'));var config=require(_0x7643('0x8'));var jayson=require(_0x7643('0x9'));var client=jayson[_0x7643('0xa')][_0x7643('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x53b3d7,_0x1b5149,_0x379803){return new BPromise(function(_0x2f0aee,_0x55930d){return client['request'](_0x53b3d7,_0x379803)[_0x7643('0xc')](function(_0x25cc57){logger[_0x7643('0xd')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x1b5149,_0x7643('0xe'));logger[_0x7643('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x1b5149,_0x7643('0xe'),JSON[_0x7643('0x10')](_0x25cc57));if(_0x25cc57[_0x7643('0x11')]){if(_0x25cc57['error']['code']===0x1f4){logger[_0x7643('0x11')](_0x7643('0x12'),_0x1b5149,_0x25cc57[_0x7643('0x11')][_0x7643('0x13')]);return _0x55930d(_0x25cc57[_0x7643('0x11')][_0x7643('0x13')]);}logger['error'](_0x7643('0x12'),_0x1b5149,_0x25cc57[_0x7643('0x11')][_0x7643('0x13')]);return _0x2f0aee(_0x25cc57[_0x7643('0x11')][_0x7643('0x13')]);}else{logger[_0x7643('0xd')](_0x7643('0x12'),_0x1b5149,'request\x20sent');_0x2f0aee(_0x25cc57[_0x7643('0x14')][_0x7643('0x13')]);}})[_0x7643('0x15')](function(_0x24eeaf){logger[_0x7643('0x11')](_0x7643('0x12'),_0x1b5149,_0x24eeaf);_0x55930d(_0x24eeaf);});});}
\ No newline at end of file
+var _0x9c87=['message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0xa69733,_0x2aa122){var _0xca5645=function(_0x3a2729){while(--_0x3a2729){_0xa69733['push'](_0xa69733['shift']());}};_0xca5645(++_0x2aa122);}(_0x9c87,0x1e3));var _0x79c8=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x9c87[_0x52684f];return _0x4a55f0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x79c8('0x0'));var BPromise=require(_0x79c8('0x1'));var rs=require(_0x79c8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x79c8('0x3'))['db'];var utils=require(_0x79c8('0x4'));var logger=require(_0x79c8('0x5'))(_0x79c8('0x6'));var config=require('../../config/environment');var jayson=require(_0x79c8('0x7'));var client=jayson[_0x79c8('0x8')][_0x79c8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d362c,_0x23b379,_0xb74c86){return new BPromise(function(_0x13f23a,_0x4d91c8){return client['request'](_0x5d362c,_0xb74c86)[_0x79c8('0xa')](function(_0x500a68){logger[_0x79c8('0xb')](_0x79c8('0xc'),_0x23b379,_0x79c8('0xd'));logger['debug'](_0x79c8('0xe'),_0x23b379,_0x79c8('0xd'),JSON['stringify'](_0x500a68));if(_0x500a68[_0x79c8('0xf')]){if(_0x500a68[_0x79c8('0xf')][_0x79c8('0x10')]===0x1f4){logger[_0x79c8('0xf')](_0x79c8('0xc'),_0x23b379,_0x500a68[_0x79c8('0xf')][_0x79c8('0x11')]);return _0x4d91c8(_0x500a68[_0x79c8('0xf')][_0x79c8('0x11')]);}logger[_0x79c8('0xf')](_0x79c8('0xc'),_0x23b379,_0x500a68[_0x79c8('0xf')][_0x79c8('0x11')]);return _0x13f23a(_0x500a68[_0x79c8('0xf')][_0x79c8('0x11')]);}else{logger['info'](_0x79c8('0xc'),_0x23b379,'request\x20sent');_0x13f23a(_0x500a68[_0x79c8('0x12')][_0x79c8('0x11')]);}})[_0x79c8('0x13')](function(_0x2bafa1){logger['error'](_0x79c8('0xc'),_0x23b379,_0x2bafa1);_0x4d91c8(_0x2bafa1);});});}
\ No newline at end of file
index bbfb66c..896066f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x717b=['/:id/clone','clone','put','delete','destroy','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','/:id/answers','/:id/summary','30s','getSummary','post','create'];(function(_0x19e7e2,_0x21590e){var _0x472ed9=function(_0x5850a4){while(--_0x5850a4){_0x19e7e2['push'](_0x19e7e2['shift']());}};_0x472ed9(++_0x21590e);}(_0x717b,0x7d));var _0xb717=function(_0x3d1ab4,_0x4a1ce5){_0x3d1ab4=_0x3d1ab4-0x0;var _0x18f7c1=_0x717b[_0x3d1ab4];return _0x18f7c1;};'use strict';var multer=require(_0xb717('0x0'));var util=require(_0xb717('0x1'));var path=require(_0xb717('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xb717('0x3'));var auth=require(_0xb717('0x4'));var interaction=require(_0xb717('0x5'));var config=require('../../config/environment');var controller=require(_0xb717('0x6'));router[_0xb717('0x7')]('/',auth[_0xb717('0x8')](),controller[_0xb717('0x9')]);router['get'](_0xb717('0xa'),auth[_0xb717('0x8')](),controller[_0xb717('0xb')]);router[_0xb717('0x7')](_0xb717('0xc'),auth[_0xb717('0x8')](),controller['getSessions']);router[_0xb717('0x7')](_0xb717('0xd'),auth[_0xb717('0x8')](),controller['getAnswers']);router[_0xb717('0x7')](_0xb717('0xe'),auth[_0xb717('0x8')](),timeout(_0xb717('0xf')),controller[_0xb717('0x10')]);router[_0xb717('0x11')]('/',auth[_0xb717('0x8')](),controller[_0xb717('0x12')]);router[_0xb717('0x11')](_0xb717('0x13'),auth['isAuthenticated'](),controller[_0xb717('0x14')]);router[_0xb717('0x15')](_0xb717('0xa'),auth[_0xb717('0x8')](),controller['update']);router[_0xb717('0x16')](_0xb717('0xa'),auth[_0xb717('0x8')](),controller[_0xb717('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x3d4e=['clone','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','isAuthenticated','index','get','getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','/:id/clone'];(function(_0x1ee8cb,_0x2d2cff){var _0x58dbf4=function(_0x532ff7){while(--_0x532ff7){_0x1ee8cb['push'](_0x1ee8cb['shift']());}};_0x58dbf4(++_0x2d2cff);}(_0x3d4e,0x84));var _0xe3d4=function(_0x299983,_0x552e4c){_0x299983=_0x299983-0x0;var _0x261b69=_0x3d4e[_0x299983];return _0x261b69;};'use strict';var multer=require(_0xe3d4('0x0'));var util=require('util');var path=require(_0xe3d4('0x1'));var timeout=require(_0xe3d4('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe3d4('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xe3d4('0x4'));var config=require(_0xe3d4('0x5'));var controller=require(_0xe3d4('0x6'));router['get']('/',auth[_0xe3d4('0x7')](),controller[_0xe3d4('0x8')]);router['get']('/:id',auth[_0xe3d4('0x7')](),controller['show']);router[_0xe3d4('0x9')]('/:id/sessions',auth[_0xe3d4('0x7')](),controller[_0xe3d4('0xa')]);router[_0xe3d4('0x9')](_0xe3d4('0xb'),auth[_0xe3d4('0x7')](),controller[_0xe3d4('0xc')]);router[_0xe3d4('0x9')](_0xe3d4('0xd'),auth[_0xe3d4('0x7')](),timeout(_0xe3d4('0xe')),controller[_0xe3d4('0xf')]);router[_0xe3d4('0x10')]('/',auth[_0xe3d4('0x7')](),controller['create']);router[_0xe3d4('0x10')](_0xe3d4('0x11'),auth[_0xe3d4('0x7')](),controller[_0xe3d4('0x12')]);router[_0xe3d4('0x13')](_0xe3d4('0x14'),auth[_0xe3d4('0x7')](),controller[_0xe3d4('0x15')]);router[_0xe3d4('0x16')](_0xe3d4('0x14'),auth['isAuthenticated'](),controller[_0xe3d4('0x17')]);module[_0xe3d4('0x18')]=router;
\ No newline at end of file
index 0b43248..a22521b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6985=['TEXT','isObjectLike','setDataValue','stringify','isString','formData','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','util','exports','STRING','name'];(function(_0x4ed520,_0x21be63){var _0x4415a6=function(_0x14b151){while(--_0x14b151){_0x4ed520['push'](_0x4ed520['shift']());}};_0x4415a6(++_0x21be63);}(_0x6985,0xcd));var _0x5698=function(_0x44b4d4,_0x50098e){_0x44b4d4=_0x44b4d4-0x0;var _0x5d1307=_0x6985[_0x44b4d4];return _0x5d1307;};'use strict';var Sequelize=require(_0x5698('0x0'));var _=require('lodash');var util=require(_0x5698('0x1'));module[_0x5698('0x2')]={'name':{'type':Sequelize[_0x5698('0x3')],'unique':_0x5698('0x4')},'description':{'type':Sequelize[_0x5698('0x3')]},'formData':{'type':Sequelize[_0x5698('0x5')]('long'),'set':function(_0xf7da6c){if(_[_0x5698('0x6')](_0xf7da6c)){this[_0x5698('0x7')]('formData',JSON[_0x5698('0x8')](_0xf7da6c));}else if(_[_0x5698('0x9')](_0xf7da6c)){this['setDataValue'](_0x5698('0xa'),_0xf7da6c);}else{this[_0x5698('0x7')](_0x5698('0xa'),util['format'](_0x5698('0xb'),this[_0x5698('0xc')]('name')||'',this[_0x5698('0xc')](_0x5698('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x5698('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8836=['isString','setDataValue','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','util','exports','STRING','name','TEXT','isObjectLike','formData','stringify'];(function(_0x390741,_0x29f02b){var _0x1db745=function(_0x2b3b15){while(--_0x2b3b15){_0x390741['push'](_0x390741['shift']());}};_0x1db745(++_0x29f02b);}(_0x8836,0x122));var _0x6883=function(_0x490e25,_0x167d21){_0x490e25=_0x490e25-0x0;var _0x15ff21=_0x8836[_0x490e25];return _0x15ff21;};'use strict';var Sequelize=require(_0x6883('0x0'));var _=require(_0x6883('0x1'));var util=require(_0x6883('0x2'));module[_0x6883('0x3')]={'name':{'type':Sequelize[_0x6883('0x4')],'unique':_0x6883('0x5')},'description':{'type':Sequelize[_0x6883('0x4')]},'formData':{'type':Sequelize[_0x6883('0x6')]('long'),'set':function(_0x340758){if(_[_0x6883('0x7')](_0x340758)){this['setDataValue'](_0x6883('0x8'),JSON[_0x6883('0x9')](_0x340758));}else if(_[_0x6883('0xa')](_0x340758)){this['setDataValue'](_0x6883('0x8'),_0x340758);}else{this[_0x6883('0xb')](_0x6883('0x8'),util['format'](_0x6883('0xc'),this[_0x6883('0xd')](_0x6883('0x5'))||'',this[_0x6883('0xd')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x6883('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x6883('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 689460b..d79415a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5795=['../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','UserProfileResource','error','name','index','JscriptyProject','rawAttributes','fieldName','type','key','map','keys','intersection','query','attributes','fields','length','model','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Projects','UserProfileSection','userProfileId','clone','omit','createdAt','updatedAt','get','autoAssociation','getSessions','findOne','hasOwnProperty','JscriptySessionReport','getAnswers','JscriptyAnswerReport','ProjectId','toString','indexOf','replace','startTime','starttime','parse','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','now','format','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','text/csv','download','/tmp/Jscripty_Project_%d_Summary_%s.csv','sendStatus','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util'];(function(_0x5e29a7,_0x2e33fa){var _0x22cbfe=function(_0x1baa94){while(--_0x1baa94){_0x5e29a7['push'](_0x5e29a7['shift']());}};_0x22cbfe(++_0x2e33fa);}(_0x5795,0xd1));var _0x5579=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x5795[_0x2dea24];return _0x309d58;};'use strict';var emlformat=require(_0x5579('0x0'));var rimraf=require(_0x5579('0x1'));var zipdir=require(_0x5579('0x2'));var jsonpatch=require(_0x5579('0x3'));var rp=require(_0x5579('0x4'));var moment=require(_0x5579('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x5579('0x6'));var sox=require(_0x5579('0x7'));var csv=require('to-csv');var ejs=require(_0x5579('0x8'));var fs=require('fs');var fs_extra=require(_0x5579('0x9'));var _=require(_0x5579('0xa'));var squel=require(_0x5579('0xb'));var crypto=require(_0x5579('0xc'));var jsforce=require(_0x5579('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x5579('0xe'));var querystring=require(_0x5579('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5579('0x10'));var qs=require(_0x5579('0x11'));var as=require(_0x5579('0x12'));var hardwareService=require(_0x5579('0x13'));var logger=require('../../config/logger')(_0x5579('0x14'));var utils=require('../../config/utils');var config=require(_0x5579('0x15'));var licenseUtil=require(_0x5579('0x16'));var db=require(_0x5579('0x17'))['db'];function respondWithStatusCode(_0x575439,_0x43628b){_0x43628b=_0x43628b||0xcc;return function(_0x255e30){if(_0x255e30){return _0x575439['sendStatus'](_0x43628b);}return _0x575439['status'](_0x43628b)[_0x5579('0x18')]();};}function respondWithResult(_0x13b4c0,_0x17325a){_0x17325a=_0x17325a||0xc8;return function(_0x3fe5e3){if(_0x3fe5e3){return _0x13b4c0[_0x5579('0x19')](_0x17325a)[_0x5579('0x1a')](_0x3fe5e3);}};}function respondWithFilteredResult(_0x284f9d,_0x945bdc){return function(_0x406bf9){if(_0x406bf9){var _0x202344=typeof _0x945bdc[_0x5579('0x1b')]===_0x5579('0x1c')&&typeof _0x945bdc[_0x5579('0x1d')]==='undefined';var _0x5ae20a=_0x406bf9[_0x5579('0x1e')];var _0x2cd2ba=_0x202344?0x0:_0x945bdc[_0x5579('0x1b')];var _0x2a9699=_0x202344?_0x406bf9[_0x5579('0x1e')]:_0x945bdc['offset']+_0x945bdc[_0x5579('0x1d')];var _0x1cd996;if(_0x2a9699>=_0x5ae20a){_0x2a9699=_0x5ae20a;_0x1cd996=0xc8;}else{_0x1cd996=0xce;}_0x284f9d[_0x5579('0x19')](_0x1cd996);return _0x284f9d[_0x5579('0x1f')]('Content-Range',_0x2cd2ba+'-'+_0x2a9699+'/'+_0x5ae20a)[_0x5579('0x1a')](_0x406bf9);}return null;};}function patchUpdates(_0x4151d7){return function(_0x5124a7){try{jsonpatch[_0x5579('0x20')](_0x5124a7,_0x4151d7,!![]);}catch(_0x4e185f){return BPromise[_0x5579('0x21')](_0x4e185f);}return _0x5124a7[_0x5579('0x22')]();};}function saveUpdates(_0x28126d,_0x31578e){return function(_0x3a3f50){if(_0x3a3f50){return _0x3a3f50[_0x5579('0x23')](_0x28126d)[_0x5579('0x24')](function(_0x5a8367){return _0x5a8367;});}return null;};}function removeEntity(_0x36a725,_0x5827b9){return function(_0x304c50){if(_0x304c50){return _0x304c50[_0x5579('0x25')]()['then'](function(){var _0x4dab56=_0x304c50['get']({'plain':!![]});var _0x4eb0cf='Projects';return db[_0x5579('0x26')]['destroy']({'where':{'type':_0x4eb0cf,'resourceId':_0x4dab56['id']}})['then'](function(){return _0x304c50;});})[_0x5579('0x24')](function(){_0x36a725['status'](0xcc)[_0x5579('0x18')]();});}};}function handleEntityNotFound(_0x11f8bc,_0x96da9a){return function(_0x103e0c){if(!_0x103e0c){_0x11f8bc['sendStatus'](0x194);}return _0x103e0c;};}function handleError(_0x3701a6,_0x25465b){_0x25465b=_0x25465b||0x1f4;return function(_0x4377f7){logger[_0x5579('0x27')](_0x4377f7['stack']);if(_0x4377f7[_0x5579('0x28')]){delete _0x4377f7[_0x5579('0x28')];}_0x3701a6[_0x5579('0x19')](_0x25465b)['send'](_0x4377f7);};}exports[_0x5579('0x29')]=function(_0x3c4bb5,_0x16a9c5){var _0x51b206={},_0x34b988={},_0x4ffea6={'count':0x0,'rows':[]};var _0x264c44=_['map'](db[_0x5579('0x2a')][_0x5579('0x2b')],function(_0x5900b9){return{'name':_0x5900b9[_0x5579('0x2c')],'type':_0x5900b9[_0x5579('0x2d')][_0x5579('0x2e')]};});_0x34b988['model']=_[_0x5579('0x2f')](_0x264c44,_0x5579('0x28'));_0x34b988['query']=_[_0x5579('0x30')](_0x3c4bb5['query']);_0x34b988['filters']=_[_0x5579('0x31')](_0x34b988['model'],_0x34b988[_0x5579('0x32')]);_0x51b206[_0x5579('0x33')]=_[_0x5579('0x31')](_0x34b988['model'],qs[_0x5579('0x34')](_0x3c4bb5[_0x5579('0x32')]['fields']));_0x51b206[_0x5579('0x33')]=_0x51b206[_0x5579('0x33')][_0x5579('0x35')]?_0x51b206['attributes']:_0x34b988[_0x5579('0x36')];if(!_0x3c4bb5[_0x5579('0x32')]['hasOwnProperty'](_0x5579('0x37'))){_0x51b206[_0x5579('0x1d')]=qs[_0x5579('0x1d')](_0x3c4bb5[_0x5579('0x32')][_0x5579('0x1d')]);_0x51b206[_0x5579('0x1b')]=qs['offset'](_0x3c4bb5[_0x5579('0x32')][_0x5579('0x1b')]);}_0x51b206[_0x5579('0x38')]=qs['sort'](_0x3c4bb5[_0x5579('0x32')][_0x5579('0x39')]);_0x51b206[_0x5579('0x3a')]=qs[_0x5579('0x3b')](_[_0x5579('0x3c')](_0x3c4bb5[_0x5579('0x32')],_0x34b988[_0x5579('0x3b')]),_0x264c44);if(_0x3c4bb5[_0x5579('0x32')][_0x5579('0x3d')]){_0x51b206[_0x5579('0x3a')]=_['merge'](_0x51b206['where'],{'$or':_[_0x5579('0x2f')](_0x264c44,function(_0x28f081){if(_0x28f081[_0x5579('0x2d')]!==_0x5579('0x3e')){var _0x52a810={};_0x52a810[_0x28f081[_0x5579('0x28')]]={'$like':'%'+_0x3c4bb5[_0x5579('0x32')][_0x5579('0x3d')]+'%'};return _0x52a810;}})});}_0x51b206=_['merge']({},_0x51b206,_0x3c4bb5[_0x5579('0x3f')]);var _0x23d598={'where':_0x51b206[_0x5579('0x3a')]};return db[_0x5579('0x2a')][_0x5579('0x1e')](_0x23d598)['then'](function(_0xe15f11){_0x4ffea6[_0x5579('0x1e')]=_0xe15f11;if(_0x3c4bb5[_0x5579('0x32')]['includeAll']){_0x51b206[_0x5579('0x40')]=[{'all':!![]}];}return db[_0x5579('0x2a')][_0x5579('0x41')](_0x51b206);})[_0x5579('0x24')](function(_0x203008){_0x4ffea6[_0x5579('0x42')]=_0x203008;return _0x4ffea6;})['then'](respondWithFilteredResult(_0x16a9c5,_0x51b206))[_0x5579('0x43')](handleError(_0x16a9c5,null));};exports[_0x5579('0x44')]=function(_0x582236,_0x324bf7){var _0x41339f={'raw':![],'where':{'id':_0x582236[_0x5579('0x45')]['id']}},_0x931d20={};_0x931d20[_0x5579('0x36')]=_[_0x5579('0x30')](db['JscriptyProject'][_0x5579('0x2b')]);_0x931d20['query']=_['keys'](_0x582236[_0x5579('0x32')]);_0x931d20[_0x5579('0x3b')]=_[_0x5579('0x31')](_0x931d20[_0x5579('0x36')],_0x931d20[_0x5579('0x32')]);_0x41339f[_0x5579('0x33')]=_[_0x5579('0x31')](_0x931d20[_0x5579('0x36')],qs['fields'](_0x582236['query'][_0x5579('0x34')]));_0x41339f['attributes']=_0x41339f['attributes'][_0x5579('0x35')]?_0x41339f[_0x5579('0x33')]:_0x931d20[_0x5579('0x36')];if(_0x582236['query'][_0x5579('0x46')]){_0x41339f['include']=[{'all':!![]}];}_0x41339f=_[_0x5579('0x47')]({},_0x41339f,_0x582236[_0x5579('0x3f')]);return db[_0x5579('0x2a')][_0x5579('0x48')](_0x41339f)[_0x5579('0x24')](handleEntityNotFound(_0x324bf7,null))[_0x5579('0x24')](respondWithResult(_0x324bf7,null))['catch'](handleError(_0x324bf7,null));};exports[_0x5579('0x49')]=function(_0x121149,_0x33c7cf){return db['JscriptyProject'][_0x5579('0x49')](_0x121149[_0x5579('0x4a')],{})[_0x5579('0x24')](function(_0x5885c4){var _0x149b23=_0x121149[_0x5579('0x4b')]['get']({'plain':!![]});if(!_0x149b23)throw new Error(_0x5579('0x4c'));if(_0x149b23[_0x5579('0x4d')]===_0x5579('0x4b')){var _0x5787c1=_0x5885c4['get']({'plain':!![]});var _0x44d675=_0x5579('0x4e');return db[_0x5579('0x4f')][_0x5579('0x48')]({'where':{'name':_0x44d675,'userProfileId':_0x149b23[_0x5579('0x50')]},'raw':!![]})[_0x5579('0x24')](function(_0x3f078c){if(_0x3f078c&&_0x3f078c['autoAssociation']===0x0){return db['UserProfileResource'][_0x5579('0x49')]({'name':_0x5787c1['name'],'resourceId':_0x5787c1['id'],'type':_0x3f078c[_0x5579('0x28')],'sectionId':_0x3f078c['id']},{})[_0x5579('0x24')](function(){return _0x5885c4;});}else{return _0x5885c4;}})[_0x5579('0x43')](function(_0x9f7b4f){logger[_0x5579('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x9f7b4f);throw _0x9f7b4f;});}return _0x5885c4;})[_0x5579('0x24')](respondWithResult(_0x33c7cf,0xc9))[_0x5579('0x43')](handleError(_0x33c7cf,null));};exports[_0x5579('0x51')]=function(_0x112e79,_0x526c66){var _0x144c81={'where':{'id':_0x112e79[_0x5579('0x45')]['id']}},_0xe60845={};_0xe60845[_0x5579('0x36')]=_[_0x5579('0x30')](db['JscriptyProject']['rawAttributes']);_0x144c81['attributes']=_[_0x5579('0x31')](_0xe60845[_0x5579('0x36')],qs[_0x5579('0x34')](_0x112e79[_0x5579('0x32')]['fields']));_0x144c81[_0x5579('0x33')]=_0x144c81['attributes'][_0x5579('0x35')]?_0x144c81[_0x5579('0x33')]:_0xe60845[_0x5579('0x36')];if(_0x112e79[_0x5579('0x32')]['includeAll']){_0x144c81['include']=[{'all':!![]}];}_0x144c81=_['merge']({},_0x144c81,_0x112e79['options']);return db['JscriptyProject'][_0x5579('0x48')](_0x144c81)['then'](handleEntityNotFound(_0x526c66,null))[_0x5579('0x24')](function(_0x35d7b8){if(_0x35d7b8){var _0x41899c=_0x35d7b8['get']({'plain':!![]});_0x41899c=qs[_0x5579('0x52')](_0x41899c,['id',_0x5579('0x53'),_0x5579('0x54')]);_0x112e79[_0x5579('0x4a')]=_[_0x5579('0x52')](_0x112e79['body'],['id',_0x5579('0x53'),_0x5579('0x54')]);return db[_0x5579('0x2a')][_0x5579('0x49')](_[_0x5579('0x47')](_0x41899c,_0x112e79[_0x5579('0x4a')]),{'include':_0x112e79[_0x5579('0x32')][_0x5579('0x46')]?[{'all':!![]}]:undefined})[_0x5579('0x24')](function(_0x35d3bd){var _0x2a90f4=_0x112e79[_0x5579('0x4b')][_0x5579('0x55')]({'plain':!![]});if(!_0x2a90f4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2a90f4[_0x5579('0x4d')]===_0x5579('0x4b')){var _0x4a0af7=_0x35d3bd['get']({'plain':!![]});var _0x58a265=_0x5579('0x4e');return db['UserProfileSection']['find']({'where':{'name':_0x58a265,'userProfileId':_0x2a90f4[_0x5579('0x50')]},'raw':!![]})['then'](function(_0x59b860){if(_0x59b860&&_0x59b860[_0x5579('0x56')]===0x0){return db[_0x5579('0x26')][_0x5579('0x49')]({'name':_0x4a0af7[_0x5579('0x28')],'resourceId':_0x4a0af7['id'],'type':_0x59b860[_0x5579('0x28')],'sectionId':_0x59b860['id']},{})[_0x5579('0x24')](function(){return _0x35d3bd;});}else{return _0x35d3bd;}})['catch'](function(_0x139c4d){logger[_0x5579('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x139c4d);throw _0x139c4d;});}return _0x35d3bd;});}})[_0x5579('0x24')](respondWithResult(_0x526c66,0xc9))[_0x5579('0x43')](handleError(_0x526c66,null));};exports[_0x5579('0x23')]=function(_0x18f5f5,_0x1185c6){if(_0x18f5f5['body']['id']){delete _0x18f5f5[_0x5579('0x4a')]['id'];}return db['JscriptyProject'][_0x5579('0x48')]({'where':{'id':_0x18f5f5[_0x5579('0x45')]['id']}})['then'](handleEntityNotFound(_0x1185c6,null))['then'](saveUpdates(_0x18f5f5[_0x5579('0x4a')],null))[_0x5579('0x24')](respondWithResult(_0x1185c6,null))[_0x5579('0x43')](handleError(_0x1185c6,null));};exports[_0x5579('0x25')]=function(_0x2de043,_0x4342d2){return db[_0x5579('0x2a')]['find']({'where':{'id':_0x2de043[_0x5579('0x45')]['id']}})[_0x5579('0x24')](handleEntityNotFound(_0x4342d2,null))[_0x5579('0x24')](removeEntity(_0x4342d2,null))[_0x5579('0x43')](handleError(_0x4342d2,null));};exports[_0x5579('0x57')]=function(_0x56c200,_0x22abf9,_0x20ddea){var _0x1e01b9={'raw':!![],'where':{}};var _0x4a3f36={};var _0x2f1e3a={'count':0x0,'rows':[]};return db[_0x5579('0x2a')][_0x5579('0x58')]({'where':{'id':_0x56c200[_0x5579('0x45')]['id']}})[_0x5579('0x24')](handleEntityNotFound(_0x22abf9,null))[_0x5579('0x24')](function(_0x222d5c){if(_0x222d5c){_0x4a3f36[_0x5579('0x36')]=_[_0x5579('0x30')](db['JscriptySessionReport'][_0x5579('0x2b')]);_0x4a3f36[_0x5579('0x32')]=_['keys'](_0x56c200[_0x5579('0x32')]);_0x4a3f36[_0x5579('0x3b')]=_[_0x5579('0x31')](_0x4a3f36[_0x5579('0x36')],_0x4a3f36[_0x5579('0x32')]);_0x1e01b9['attributes']=_[_0x5579('0x31')](_0x4a3f36[_0x5579('0x36')],qs[_0x5579('0x34')](_0x56c200[_0x5579('0x32')][_0x5579('0x34')]));_0x1e01b9['attributes']=_0x1e01b9[_0x5579('0x33')][_0x5579('0x35')]?_0x1e01b9[_0x5579('0x33')]:_0x4a3f36['model'];if(!_0x56c200[_0x5579('0x32')][_0x5579('0x59')]('nolimit')){_0x1e01b9[_0x5579('0x1d')]=qs['limit'](_0x56c200[_0x5579('0x32')][_0x5579('0x1d')]);_0x1e01b9[_0x5579('0x1b')]=qs['offset'](_0x56c200[_0x5579('0x32')]['offset']);}_0x1e01b9[_0x5579('0x38')]=qs['sort'](_0x56c200[_0x5579('0x32')]['sort']);_0x1e01b9[_0x5579('0x3a')]=qs[_0x5579('0x3b')](_[_0x5579('0x3c')](_0x56c200['query'],_0x4a3f36['filters']));_0x1e01b9['where']['ProjectId']=_0x222d5c['id'];if(_0x56c200[_0x5579('0x32')][_0x5579('0x3d')]){_0x1e01b9[_0x5579('0x3a')]=_[_0x5579('0x47')](_0x1e01b9[_0x5579('0x3a')],{'$or':_[_0x5579('0x2f')](_0x1e01b9[_0x5579('0x33')],function(_0x40fd3a){var _0xe3dfd={};_0xe3dfd[_0x40fd3a]={'$like':'%'+_0x56c200[_0x5579('0x32')]['filter']+'%'};return _0xe3dfd;})});}_0x1e01b9=_['merge']({},_0x1e01b9,_0x56c200[_0x5579('0x3f')]);return db[_0x5579('0x5a')]['count']({'where':_0x1e01b9['where']})[_0x5579('0x24')](function(_0x49769b){_0x2f1e3a['count']=_0x49769b;if(_0x56c200[_0x5579('0x32')]['includeAll']){_0x1e01b9[_0x5579('0x40')]=[{'all':!![]}];}return db[_0x5579('0x5a')][_0x5579('0x41')](_0x1e01b9);})['then'](function(_0x5ee210){_0x2f1e3a[_0x5579('0x42')]=_0x5ee210;return _0x2f1e3a;});}})[_0x5579('0x24')](respondWithFilteredResult(_0x22abf9,_0x1e01b9))[_0x5579('0x43')](handleError(_0x22abf9,null));};exports[_0x5579('0x5b')]=function(_0x423221,_0xb5dc22,_0x5f09a0){var _0x4423a7={'raw':!![],'where':{}};var _0x44b0d8={};var _0x38e6f9={'count':0x0,'rows':[]};return db[_0x5579('0x2a')]['findOne']({'where':{'id':_0x423221[_0x5579('0x45')]['id']}})[_0x5579('0x24')](handleEntityNotFound(_0xb5dc22,null))[_0x5579('0x24')](function(_0x4aa3e2){if(_0x4aa3e2){_0x44b0d8[_0x5579('0x36')]=_[_0x5579('0x30')](db[_0x5579('0x5c')]['rawAttributes']);_0x44b0d8[_0x5579('0x32')]=_[_0x5579('0x30')](_0x423221[_0x5579('0x32')]);_0x44b0d8['filters']=_['intersection'](_0x44b0d8[_0x5579('0x36')],_0x44b0d8[_0x5579('0x32')]);_0x4423a7[_0x5579('0x33')]=_[_0x5579('0x31')](_0x44b0d8[_0x5579('0x36')],qs[_0x5579('0x34')](_0x423221[_0x5579('0x32')][_0x5579('0x34')]));_0x4423a7['attributes']=_0x4423a7['attributes'][_0x5579('0x35')]?_0x4423a7[_0x5579('0x33')]:_0x44b0d8[_0x5579('0x36')];if(!_0x423221[_0x5579('0x32')][_0x5579('0x59')](_0x5579('0x37'))){_0x4423a7[_0x5579('0x1d')]=qs[_0x5579('0x1d')](_0x423221[_0x5579('0x32')][_0x5579('0x1d')]);_0x4423a7[_0x5579('0x1b')]=qs['offset'](_0x423221[_0x5579('0x32')][_0x5579('0x1b')]);}_0x4423a7['order']=qs[_0x5579('0x39')](_0x423221[_0x5579('0x32')][_0x5579('0x39')]);_0x4423a7[_0x5579('0x3a')]=qs[_0x5579('0x3b')](_[_0x5579('0x3c')](_0x423221[_0x5579('0x32')],_0x44b0d8[_0x5579('0x3b')]));_0x4423a7['where'][_0x5579('0x5d')]=_0x4aa3e2['id'];if(_0x423221[_0x5579('0x32')][_0x5579('0x3d')]){_0x4423a7[_0x5579('0x3a')]=_[_0x5579('0x47')](_0x4423a7[_0x5579('0x3a')],{'$or':_[_0x5579('0x2f')](_0x4423a7[_0x5579('0x33')],function(_0x1145d3){var _0xb542e4={};_0xb542e4[_0x1145d3]={'$like':'%'+_0x423221[_0x5579('0x32')][_0x5579('0x3d')]+'%'};return _0xb542e4;})});}_0x4423a7=_['merge']({},_0x4423a7,_0x423221[_0x5579('0x3f')]);return db[_0x5579('0x5c')][_0x5579('0x1e')]({'where':_0x4423a7[_0x5579('0x3a')]})[_0x5579('0x24')](function(_0x4eeda6){_0x38e6f9[_0x5579('0x1e')]=_0x4eeda6;if(_0x423221[_0x5579('0x32')]['includeAll']){_0x4423a7[_0x5579('0x40')]=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x4423a7);})[_0x5579('0x24')](function(_0x188783){_0x38e6f9[_0x5579('0x42')]=_0x188783;return _0x38e6f9;});}})['then'](respondWithFilteredResult(_0xb5dc22,_0x4423a7))[_0x5579('0x43')](handleError(_0xb5dc22,null));};function char(_0x41a9c9){return'number'===typeof _0x41a9c9?String['fromCharCode'][_0x5579('0x20')](null,arguments):_0x41a9c9;}function needsEncapsulation(_0x3030cb){return!!_0x3030cb&&(_0x3030cb[_0x5579('0x5e')]()[_0x5579('0x5f')](char(0xd))>=0x0||_0x3030cb['toString']()[_0x5579('0x5f')](char(0xa))>=0x0||_0x3030cb[_0x5579('0x5e')]()[_0x5579('0x5f')](char(0x2c))>=0x0||_0x3030cb[_0x5579('0x5e')]()[_0x5579('0x5f')](char(0x22))>=0x0);}function encapsulate(_0x3f8a80){var _0x374378=char(0x22),_0x2a17e1='\x5c'+char(0x22),_0xb35b8f=_0x3f8a80[_0x5579('0x5e')]()[_0x5579('0x60')](new RegExp(_0x374378,'g'),_0x2a17e1);return _0x374378+_0xb35b8f+_0x374378;}exports['getSummary']=function(_0x42167a,_0x96dde7,_0x58d898){var _0x4a3560,_0x20b0f0;var _0x1cfa66={'where':{'ProjectId':_0x42167a[_0x5579('0x45')]['id']}};if(_0x42167a['query'][_0x5579('0x61')]){_0x1cfa66[_0x5579('0x3a')][_0x5579('0x62')]=JSON[_0x5579('0x63')](_0x42167a['query'][_0x5579('0x61')]);}return db['JscriptySessionReport']['findAll'](_0x1cfa66)[_0x5579('0x24')](handleEntityNotFound(_0x96dde7,null))[_0x5579('0x24')](function(_0x3fabec){if(_0x3fabec){_0x4a3560=_0x3fabec;return db['JscriptyQuestionReport'][_0x5579('0x41')]({'where':{'SessionId':{'$in':_[_0x5579('0x2f')](_0x4a3560,'id')},'ProjectId':_0x42167a[_0x5579('0x45')]['id']},'order':_0x5579('0x64')});}})[_0x5579('0x24')](handleEntityNotFound(_0x96dde7,null))['then'](function(_0x3f6cde){if(_0x3f6cde){_0x20b0f0=_0x3f6cde;var _0x157bc7={};for(var _0x14d088=0x0,_0x12d83b=_0x20b0f0[_0x5579('0x35')];_0x14d088<_0x12d83b;_0x14d088++){if(!_0x157bc7[_0x5579('0x59')](_0x20b0f0[_0x14d088][_0x5579('0x65')])){_0x157bc7[_0x20b0f0[_0x14d088][_0x5579('0x65')]]=needsEncapsulation(_0x20b0f0[_0x14d088]['question'])?encapsulate(_0x20b0f0[_0x14d088]['question']):_0x20b0f0[_0x14d088][_0x5579('0x66')];}}var _0x5036eb=[],_0x194e40={};for(var _0x1cb369=0x0,_0x4bd419=_0x4a3560['length'];_0x1cb369<_0x4bd419;_0x1cb369++){_0x194e40={'ProjectId':_0x42167a[_0x5579('0x45')]['id'],'SessionId':_0x4a3560[_0x1cb369]['id'],'StartTime':moment(_0x4a3560[_0x1cb369][_0x5579('0x62')])['format'](_0x5579('0x67'))};for(var _0x3e6ed6=0x0,_0x395f90=_0x20b0f0[_0x5579('0x35')];_0x3e6ed6<_0x395f90;_0x3e6ed6++){if(_0x20b0f0[_0x3e6ed6][_0x5579('0x68')]==_0x4a3560[_0x1cb369]['id']&&_0x157bc7[_0x5579('0x59')](_0x20b0f0[_0x3e6ed6][_0x5579('0x65')])){_0x194e40[_0x157bc7[_0x20b0f0[_0x3e6ed6][_0x5579('0x65')]]]=_0x20b0f0[_0x3e6ed6][_0x5579('0x69')];}}for(var _0x5a0887 in _0x157bc7){if(!_0x194e40[_0x5579('0x59')](_0x157bc7[_0x5a0887])){_0x194e40[_0x157bc7[_0x5a0887]]=null;}}_0x5036eb['push'](_0x194e40);}return _0x5036eb;}})['then'](function(_0x3d0cfa){if(!_[_0x5579('0x6a')](_0x3d0cfa)){var _0x501b50=toCsv(_0x3d0cfa);var _0x305369=Date[_0x5579('0x6b')]();fs['writeFileSync'](util[_0x5579('0x6c')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x42167a[_0x5579('0x45')]['id'],_0x305369),_0x501b50);_0x96dde7[_0x5579('0x6d')]('Content-disposition',_0x5579('0x6e')+util['format'](_0x5579('0x6f'),_0x42167a['params']['id'],_0x305369));_0x96dde7[_0x5579('0x6d')]('Content-type',_0x5579('0x70'));return _0x96dde7[_0x5579('0x71')](util['format'](_0x5579('0x72'),_0x42167a[_0x5579('0x45')]['id'],_0x305369));}else{return _0x96dde7[_0x5579('0x73')](0xcc);}})[_0x5579('0x43')](handleError(_0x96dde7,null));};
\ No newline at end of file
+var _0x8107=['JscriptySessionReport','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','startTime','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','text/csv','download','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','Projects','UserProfileResource','destroy','name','send','index','JscriptyProject','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','findAll','rows','include','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','params','omit','createdAt','updatedAt','body','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','findOne','pick','ProjectId'];(function(_0x4513df,_0x389801){var _0x1c8eae=function(_0x4b8a9e){while(--_0x4b8a9e){_0x4513df['push'](_0x4513df['shift']());}};_0x1c8eae(++_0x389801);}(_0x8107,0x109));var _0x7810=function(_0x3d8eb2,_0x5e58a3){_0x3d8eb2=_0x3d8eb2-0x0;var _0x1bb6bb=_0x8107[_0x3d8eb2];return _0x1bb6bb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7810('0x0'));var jsonpatch=require(_0x7810('0x1'));var rp=require(_0x7810('0x2'));var moment=require(_0x7810('0x3'));var BPromise=require(_0x7810('0x4'));var Mustache=require('mustache');var util=require(_0x7810('0x5'));var path=require(_0x7810('0x6'));var sox=require(_0x7810('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7810('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x7810('0x9'));var jsforce=require(_0x7810('0xa'));var deskjs=require(_0x7810('0xb'));var toCsv=require('to-csv');var querystring=require(_0x7810('0xc'));var Papa=require(_0x7810('0xd'));var Redis=require(_0x7810('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x7810('0xf'));var as=require(_0x7810('0x10'));var hardwareService=require(_0x7810('0x11'));var logger=require(_0x7810('0x12'))(_0x7810('0x13'));var utils=require(_0x7810('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7810('0x15'));var db=require(_0x7810('0x16'))['db'];function respondWithStatusCode(_0x2112c0,_0x3b7067){_0x3b7067=_0x3b7067||0xcc;return function(_0x3cca1b){if(_0x3cca1b){return _0x2112c0[_0x7810('0x17')](_0x3b7067);}return _0x2112c0[_0x7810('0x18')](_0x3b7067)['end']();};}function respondWithResult(_0x1fd34a,_0x5be21f){_0x5be21f=_0x5be21f||0xc8;return function(_0x1bf6e0){if(_0x1bf6e0){return _0x1fd34a['status'](_0x5be21f)[_0x7810('0x19')](_0x1bf6e0);}};}function respondWithFilteredResult(_0x28d6e2,_0xce358){return function(_0x70bb4f){if(_0x70bb4f){var _0x68af0a=typeof _0xce358[_0x7810('0x1a')]===_0x7810('0x1b')&&typeof _0xce358[_0x7810('0x1c')]==='undefined';var _0x13795b=_0x70bb4f['count'];var _0xd55eed=_0x68af0a?0x0:_0xce358[_0x7810('0x1a')];var _0x1fbeed=_0x68af0a?_0x70bb4f[_0x7810('0x1d')]:_0xce358[_0x7810('0x1a')]+_0xce358['limit'];var _0x26f235;if(_0x1fbeed>=_0x13795b){_0x1fbeed=_0x13795b;_0x26f235=0xc8;}else{_0x26f235=0xce;}_0x28d6e2['status'](_0x26f235);return _0x28d6e2[_0x7810('0x1e')](_0x7810('0x1f'),_0xd55eed+'-'+_0x1fbeed+'/'+_0x13795b)[_0x7810('0x19')](_0x70bb4f);}return null;};}function patchUpdates(_0x4290bf){return function(_0x3e5c47){try{jsonpatch[_0x7810('0x20')](_0x3e5c47,_0x4290bf,!![]);}catch(_0x45dd0e){return BPromise['reject'](_0x45dd0e);}return _0x3e5c47[_0x7810('0x21')]();};}function saveUpdates(_0x317dae,_0xd1655d){return function(_0x3233db){if(_0x3233db){return _0x3233db[_0x7810('0x22')](_0x317dae)[_0x7810('0x23')](function(_0x56a6a6){return _0x56a6a6;});}return null;};}function removeEntity(_0x7d74a2,_0x5e1abd){return function(_0x44487f){if(_0x44487f){return _0x44487f['destroy']()[_0x7810('0x23')](function(){var _0x385507=_0x44487f[_0x7810('0x24')]({'plain':!![]});var _0x295ed5=_0x7810('0x25');return db[_0x7810('0x26')][_0x7810('0x27')]({'where':{'type':_0x295ed5,'resourceId':_0x385507['id']}})['then'](function(){return _0x44487f;});})[_0x7810('0x23')](function(){_0x7d74a2[_0x7810('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1eef42,_0xe5c5d9){return function(_0x180c10){if(!_0x180c10){_0x1eef42[_0x7810('0x17')](0x194);}return _0x180c10;};}function handleError(_0xd00cf6,_0x26425a){_0x26425a=_0x26425a||0x1f4;return function(_0x35edd5){logger['error'](_0x35edd5['stack']);if(_0x35edd5[_0x7810('0x28')]){delete _0x35edd5[_0x7810('0x28')];}_0xd00cf6[_0x7810('0x18')](_0x26425a)[_0x7810('0x29')](_0x35edd5);};}exports[_0x7810('0x2a')]=function(_0x171496,_0x243f58){var _0x4562ff={},_0x3c4a3f={},_0xabf51d={'count':0x0,'rows':[]};var _0x219af2=_['map'](db[_0x7810('0x2b')][_0x7810('0x2c')],function(_0x509ba7){return{'name':_0x509ba7[_0x7810('0x2d')],'type':_0x509ba7[_0x7810('0x2e')]['key']};});_0x3c4a3f[_0x7810('0x2f')]=_[_0x7810('0x30')](_0x219af2,_0x7810('0x28'));_0x3c4a3f['query']=_[_0x7810('0x31')](_0x171496[_0x7810('0x32')]);_0x3c4a3f[_0x7810('0x33')]=_[_0x7810('0x34')](_0x3c4a3f[_0x7810('0x2f')],_0x3c4a3f[_0x7810('0x32')]);_0x4562ff['attributes']=_[_0x7810('0x34')](_0x3c4a3f[_0x7810('0x2f')],qs['fields'](_0x171496[_0x7810('0x32')][_0x7810('0x35')]));_0x4562ff[_0x7810('0x36')]=_0x4562ff['attributes'][_0x7810('0x37')]?_0x4562ff[_0x7810('0x36')]:_0x3c4a3f[_0x7810('0x2f')];if(!_0x171496[_0x7810('0x32')][_0x7810('0x38')](_0x7810('0x39'))){_0x4562ff[_0x7810('0x1c')]=qs['limit'](_0x171496['query'][_0x7810('0x1c')]);_0x4562ff[_0x7810('0x1a')]=qs[_0x7810('0x1a')](_0x171496[_0x7810('0x32')][_0x7810('0x1a')]);}_0x4562ff[_0x7810('0x3a')]=qs[_0x7810('0x3b')](_0x171496['query'][_0x7810('0x3b')]);_0x4562ff['where']=qs[_0x7810('0x33')](_['pick'](_0x171496[_0x7810('0x32')],_0x3c4a3f['filters']),_0x219af2);if(_0x171496[_0x7810('0x32')][_0x7810('0x3c')]){_0x4562ff[_0x7810('0x3d')]=_[_0x7810('0x3e')](_0x4562ff[_0x7810('0x3d')],{'$or':_[_0x7810('0x30')](_0x219af2,function(_0x151231){if(_0x151231[_0x7810('0x2e')]!==_0x7810('0x3f')){var _0x547dfb={};_0x547dfb[_0x151231[_0x7810('0x28')]]={'$like':'%'+_0x171496[_0x7810('0x32')]['filter']+'%'};return _0x547dfb;}})});}_0x4562ff=_[_0x7810('0x3e')]({},_0x4562ff,_0x171496['options']);var _0x5bc8fd={'where':_0x4562ff[_0x7810('0x3d')]};return db['JscriptyProject'][_0x7810('0x1d')](_0x5bc8fd)[_0x7810('0x23')](function(_0x735dbf){_0xabf51d[_0x7810('0x1d')]=_0x735dbf;if(_0x171496[_0x7810('0x32')][_0x7810('0x40')]){_0x4562ff['include']=[{'all':!![]}];}return db['JscriptyProject'][_0x7810('0x41')](_0x4562ff);})[_0x7810('0x23')](function(_0x1c9649){_0xabf51d[_0x7810('0x42')]=_0x1c9649;return _0xabf51d;})['then'](respondWithFilteredResult(_0x243f58,_0x4562ff))['catch'](handleError(_0x243f58,null));};exports['show']=function(_0x458d72,_0x2176c9){var _0x48334c={'raw':![],'where':{'id':_0x458d72['params']['id']}},_0x5b83b9={};_0x5b83b9[_0x7810('0x2f')]=_[_0x7810('0x31')](db['JscriptyProject'][_0x7810('0x2c')]);_0x5b83b9[_0x7810('0x32')]=_[_0x7810('0x31')](_0x458d72[_0x7810('0x32')]);_0x5b83b9[_0x7810('0x33')]=_['intersection'](_0x5b83b9[_0x7810('0x2f')],_0x5b83b9[_0x7810('0x32')]);_0x48334c[_0x7810('0x36')]=_[_0x7810('0x34')](_0x5b83b9[_0x7810('0x2f')],qs[_0x7810('0x35')](_0x458d72[_0x7810('0x32')]['fields']));_0x48334c[_0x7810('0x36')]=_0x48334c[_0x7810('0x36')][_0x7810('0x37')]?_0x48334c[_0x7810('0x36')]:_0x5b83b9[_0x7810('0x2f')];if(_0x458d72[_0x7810('0x32')][_0x7810('0x40')]){_0x48334c[_0x7810('0x43')]=[{'all':!![]}];}_0x48334c=_[_0x7810('0x3e')]({},_0x48334c,_0x458d72[_0x7810('0x44')]);return db[_0x7810('0x2b')][_0x7810('0x45')](_0x48334c)[_0x7810('0x23')](handleEntityNotFound(_0x2176c9,null))['then'](respondWithResult(_0x2176c9,null))[_0x7810('0x46')](handleError(_0x2176c9,null));};exports[_0x7810('0x47')]=function(_0x559098,_0x23f702){return db[_0x7810('0x2b')]['create'](_0x559098['body'],{})['then'](function(_0x229ab4){var _0x57d841=_0x559098['user'][_0x7810('0x24')]({'plain':!![]});if(!_0x57d841)throw new Error(_0x7810('0x48'));if(_0x57d841[_0x7810('0x49')]===_0x7810('0x4a')){var _0x5d8065=_0x229ab4['get']({'plain':!![]});var _0x1ea605=_0x7810('0x25');return db[_0x7810('0x4b')]['find']({'where':{'name':_0x1ea605,'userProfileId':_0x57d841[_0x7810('0x4c')]},'raw':!![]})['then'](function(_0x44acec){if(_0x44acec&&_0x44acec[_0x7810('0x4d')]===0x0){return db[_0x7810('0x26')][_0x7810('0x47')]({'name':_0x5d8065[_0x7810('0x28')],'resourceId':_0x5d8065['id'],'type':_0x44acec[_0x7810('0x28')],'sectionId':_0x44acec['id']},{})[_0x7810('0x23')](function(){return _0x229ab4;});}else{return _0x229ab4;}})[_0x7810('0x46')](function(_0x10a74d){logger[_0x7810('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x10a74d);throw _0x10a74d;});}return _0x229ab4;})[_0x7810('0x23')](respondWithResult(_0x23f702,0xc9))[_0x7810('0x46')](handleError(_0x23f702,null));};exports['clone']=function(_0x195238,_0xbce904){var _0x48169f={'where':{'id':_0x195238[_0x7810('0x4f')]['id']}},_0x2bf85e={};_0x2bf85e['model']=_[_0x7810('0x31')](db[_0x7810('0x2b')][_0x7810('0x2c')]);_0x48169f[_0x7810('0x36')]=_[_0x7810('0x34')](_0x2bf85e[_0x7810('0x2f')],qs[_0x7810('0x35')](_0x195238[_0x7810('0x32')]['fields']));_0x48169f[_0x7810('0x36')]=_0x48169f[_0x7810('0x36')][_0x7810('0x37')]?_0x48169f['attributes']:_0x2bf85e['model'];if(_0x195238[_0x7810('0x32')][_0x7810('0x40')]){_0x48169f[_0x7810('0x43')]=[{'all':!![]}];}_0x48169f=_['merge']({},_0x48169f,_0x195238['options']);return db[_0x7810('0x2b')][_0x7810('0x45')](_0x48169f)[_0x7810('0x23')](handleEntityNotFound(_0xbce904,null))[_0x7810('0x23')](function(_0x16b198){if(_0x16b198){var _0x5590d9=_0x16b198[_0x7810('0x24')]({'plain':!![]});_0x5590d9=qs[_0x7810('0x50')](_0x5590d9,['id',_0x7810('0x51'),_0x7810('0x52')]);_0x195238[_0x7810('0x53')]=_[_0x7810('0x50')](_0x195238[_0x7810('0x53')],['id','createdAt',_0x7810('0x52')]);return db[_0x7810('0x2b')][_0x7810('0x47')](_['merge'](_0x5590d9,_0x195238[_0x7810('0x53')]),{'include':_0x195238['query'][_0x7810('0x40')]?[{'all':!![]}]:undefined})[_0x7810('0x23')](function(_0x3c890a){var _0x37fd17=_0x195238[_0x7810('0x4a')][_0x7810('0x24')]({'plain':!![]});if(!_0x37fd17)throw new Error(_0x7810('0x48'));if(_0x37fd17['role']==='user'){var _0x4b635b=_0x3c890a['get']({'plain':!![]});var _0x59ddad=_0x7810('0x25');return db[_0x7810('0x4b')]['find']({'where':{'name':_0x59ddad,'userProfileId':_0x37fd17[_0x7810('0x4c')]},'raw':!![]})[_0x7810('0x23')](function(_0x6dfeed){if(_0x6dfeed&&_0x6dfeed[_0x7810('0x4d')]===0x0){return db[_0x7810('0x26')][_0x7810('0x47')]({'name':_0x4b635b[_0x7810('0x28')],'resourceId':_0x4b635b['id'],'type':_0x6dfeed[_0x7810('0x28')],'sectionId':_0x6dfeed['id']},{})[_0x7810('0x23')](function(){return _0x3c890a;});}else{return _0x3c890a;}})[_0x7810('0x46')](function(_0xd9cc17){logger[_0x7810('0x4e')](_0x7810('0x54'),_0xd9cc17);throw _0xd9cc17;});}return _0x3c890a;});}})[_0x7810('0x23')](respondWithResult(_0xbce904,0xc9))[_0x7810('0x46')](handleError(_0xbce904,null));};exports[_0x7810('0x22')]=function(_0xcf1655,_0x282162){if(_0xcf1655['body']['id']){delete _0xcf1655[_0x7810('0x53')]['id'];}return db[_0x7810('0x2b')][_0x7810('0x45')]({'where':{'id':_0xcf1655[_0x7810('0x4f')]['id']}})[_0x7810('0x23')](handleEntityNotFound(_0x282162,null))['then'](saveUpdates(_0xcf1655['body'],null))[_0x7810('0x23')](respondWithResult(_0x282162,null))[_0x7810('0x46')](handleError(_0x282162,null));};exports[_0x7810('0x27')]=function(_0x69b7e9,_0x6a1a98){return db[_0x7810('0x2b')]['find']({'where':{'id':_0x69b7e9[_0x7810('0x4f')]['id']}})[_0x7810('0x23')](handleEntityNotFound(_0x6a1a98,null))[_0x7810('0x23')](removeEntity(_0x6a1a98,null))[_0x7810('0x46')](handleError(_0x6a1a98,null));};exports[_0x7810('0x55')]=function(_0x52c398,_0x49d417,_0x22dedb){var _0x1be696={'raw':!![],'where':{}};var _0xd65335={};var _0x11a144={'count':0x0,'rows':[]};return db[_0x7810('0x2b')][_0x7810('0x56')]({'where':{'id':_0x52c398['params']['id']}})['then'](handleEntityNotFound(_0x49d417,null))[_0x7810('0x23')](function(_0xb17f35){if(_0xb17f35){_0xd65335[_0x7810('0x2f')]=_['keys'](db['JscriptySessionReport'][_0x7810('0x2c')]);_0xd65335[_0x7810('0x32')]=_[_0x7810('0x31')](_0x52c398['query']);_0xd65335[_0x7810('0x33')]=_[_0x7810('0x34')](_0xd65335[_0x7810('0x2f')],_0xd65335[_0x7810('0x32')]);_0x1be696[_0x7810('0x36')]=_[_0x7810('0x34')](_0xd65335[_0x7810('0x2f')],qs['fields'](_0x52c398['query'][_0x7810('0x35')]));_0x1be696['attributes']=_0x1be696[_0x7810('0x36')]['length']?_0x1be696[_0x7810('0x36')]:_0xd65335[_0x7810('0x2f')];if(!_0x52c398[_0x7810('0x32')]['hasOwnProperty'](_0x7810('0x39'))){_0x1be696[_0x7810('0x1c')]=qs[_0x7810('0x1c')](_0x52c398[_0x7810('0x32')][_0x7810('0x1c')]);_0x1be696[_0x7810('0x1a')]=qs[_0x7810('0x1a')](_0x52c398[_0x7810('0x32')][_0x7810('0x1a')]);}_0x1be696['order']=qs['sort'](_0x52c398[_0x7810('0x32')][_0x7810('0x3b')]);_0x1be696[_0x7810('0x3d')]=qs[_0x7810('0x33')](_[_0x7810('0x57')](_0x52c398['query'],_0xd65335[_0x7810('0x33')]));_0x1be696[_0x7810('0x3d')][_0x7810('0x58')]=_0xb17f35['id'];if(_0x52c398['query'][_0x7810('0x3c')]){_0x1be696[_0x7810('0x3d')]=_[_0x7810('0x3e')](_0x1be696[_0x7810('0x3d')],{'$or':_[_0x7810('0x30')](_0x1be696[_0x7810('0x36')],function(_0x1c2964){var _0x341317={};_0x341317[_0x1c2964]={'$like':'%'+_0x52c398['query'][_0x7810('0x3c')]+'%'};return _0x341317;})});}_0x1be696=_[_0x7810('0x3e')]({},_0x1be696,_0x52c398[_0x7810('0x44')]);return db[_0x7810('0x59')][_0x7810('0x1d')]({'where':_0x1be696[_0x7810('0x3d')]})[_0x7810('0x23')](function(_0x34cac3){_0x11a144[_0x7810('0x1d')]=_0x34cac3;if(_0x52c398[_0x7810('0x32')]['includeAll']){_0x1be696[_0x7810('0x43')]=[{'all':!![]}];}return db[_0x7810('0x59')][_0x7810('0x41')](_0x1be696);})[_0x7810('0x23')](function(_0x5d1c37){_0x11a144[_0x7810('0x42')]=_0x5d1c37;return _0x11a144;});}})['then'](respondWithFilteredResult(_0x49d417,_0x1be696))[_0x7810('0x46')](handleError(_0x49d417,null));};exports['getAnswers']=function(_0x2ccb09,_0xbadf04,_0x47d4fd){var _0x59b55e={'raw':!![],'where':{}};var _0x26c8c2={};var _0x3d45b5={'count':0x0,'rows':[]};return db[_0x7810('0x2b')]['findOne']({'where':{'id':_0x2ccb09[_0x7810('0x4f')]['id']}})['then'](handleEntityNotFound(_0xbadf04,null))[_0x7810('0x23')](function(_0x1e4444){if(_0x1e4444){_0x26c8c2[_0x7810('0x2f')]=_[_0x7810('0x31')](db[_0x7810('0x5a')][_0x7810('0x2c')]);_0x26c8c2['query']=_['keys'](_0x2ccb09[_0x7810('0x32')]);_0x26c8c2[_0x7810('0x33')]=_[_0x7810('0x34')](_0x26c8c2[_0x7810('0x2f')],_0x26c8c2[_0x7810('0x32')]);_0x59b55e[_0x7810('0x36')]=_[_0x7810('0x34')](_0x26c8c2['model'],qs[_0x7810('0x35')](_0x2ccb09[_0x7810('0x32')][_0x7810('0x35')]));_0x59b55e['attributes']=_0x59b55e[_0x7810('0x36')]['length']?_0x59b55e[_0x7810('0x36')]:_0x26c8c2[_0x7810('0x2f')];if(!_0x2ccb09[_0x7810('0x32')][_0x7810('0x38')]('nolimit')){_0x59b55e[_0x7810('0x1c')]=qs[_0x7810('0x1c')](_0x2ccb09['query'][_0x7810('0x1c')]);_0x59b55e[_0x7810('0x1a')]=qs[_0x7810('0x1a')](_0x2ccb09[_0x7810('0x32')][_0x7810('0x1a')]);}_0x59b55e[_0x7810('0x3a')]=qs[_0x7810('0x3b')](_0x2ccb09['query'][_0x7810('0x3b')]);_0x59b55e['where']=qs[_0x7810('0x33')](_[_0x7810('0x57')](_0x2ccb09['query'],_0x26c8c2[_0x7810('0x33')]));_0x59b55e[_0x7810('0x3d')][_0x7810('0x58')]=_0x1e4444['id'];if(_0x2ccb09['query'][_0x7810('0x3c')]){_0x59b55e[_0x7810('0x3d')]=_[_0x7810('0x3e')](_0x59b55e[_0x7810('0x3d')],{'$or':_['map'](_0x59b55e[_0x7810('0x36')],function(_0x4f2a3b){var _0x31453b={};_0x31453b[_0x4f2a3b]={'$like':'%'+_0x2ccb09[_0x7810('0x32')][_0x7810('0x3c')]+'%'};return _0x31453b;})});}_0x59b55e=_[_0x7810('0x3e')]({},_0x59b55e,_0x2ccb09[_0x7810('0x44')]);return db[_0x7810('0x5a')][_0x7810('0x1d')]({'where':_0x59b55e['where']})[_0x7810('0x23')](function(_0x35ad73){_0x3d45b5[_0x7810('0x1d')]=_0x35ad73;if(_0x2ccb09[_0x7810('0x32')][_0x7810('0x40')]){_0x59b55e[_0x7810('0x43')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x7810('0x41')](_0x59b55e);})[_0x7810('0x23')](function(_0x4b2dcc){_0x3d45b5['rows']=_0x4b2dcc;return _0x3d45b5;});}})[_0x7810('0x23')](respondWithFilteredResult(_0xbadf04,_0x59b55e))[_0x7810('0x46')](handleError(_0xbadf04,null));};function char(_0x10ee0b){return _0x7810('0x5b')===typeof _0x10ee0b?String[_0x7810('0x5c')][_0x7810('0x20')](null,arguments):_0x10ee0b;}function needsEncapsulation(_0x8bc1fc){return!!_0x8bc1fc&&(_0x8bc1fc[_0x7810('0x5d')]()['indexOf'](char(0xd))>=0x0||_0x8bc1fc[_0x7810('0x5d')]()[_0x7810('0x5e')](char(0xa))>=0x0||_0x8bc1fc['toString']()[_0x7810('0x5e')](char(0x2c))>=0x0||_0x8bc1fc[_0x7810('0x5d')]()[_0x7810('0x5e')](char(0x22))>=0x0);}function encapsulate(_0xbd3251){var _0x2aa948=char(0x22),_0x1f88fe='\x5c'+char(0x22),_0x21c0d8=_0xbd3251[_0x7810('0x5d')]()[_0x7810('0x5f')](new RegExp(_0x2aa948,'g'),_0x1f88fe);return _0x2aa948+_0x21c0d8+_0x2aa948;}exports[_0x7810('0x60')]=function(_0x631dd8,_0x280082,_0x11ca35){var _0x24dd5e,_0x23f51d;var _0x2e36bd={'where':{'ProjectId':_0x631dd8['params']['id']}};if(_0x631dd8[_0x7810('0x32')][_0x7810('0x61')]){_0x2e36bd['where']['starttime']=JSON['parse'](_0x631dd8[_0x7810('0x32')][_0x7810('0x61')]);}return db[_0x7810('0x59')][_0x7810('0x41')](_0x2e36bd)['then'](handleEntityNotFound(_0x280082,null))['then'](function(_0x4509c4){if(_0x4509c4){_0x24dd5e=_0x4509c4;return db[_0x7810('0x62')][_0x7810('0x41')]({'where':{'SessionId':{'$in':_['map'](_0x24dd5e,'id')},'ProjectId':_0x631dd8[_0x7810('0x4f')]['id']},'order':_0x7810('0x63')});}})[_0x7810('0x23')](handleEntityNotFound(_0x280082,null))[_0x7810('0x23')](function(_0x106a8a){if(_0x106a8a){_0x23f51d=_0x106a8a;var _0x344d20={};for(var _0xed0410=0x0,_0x582774=_0x23f51d[_0x7810('0x37')];_0xed0410<_0x582774;_0xed0410++){if(!_0x344d20[_0x7810('0x38')](_0x23f51d[_0xed0410][_0x7810('0x64')])){_0x344d20[_0x23f51d[_0xed0410][_0x7810('0x64')]]=needsEncapsulation(_0x23f51d[_0xed0410][_0x7810('0x65')])?encapsulate(_0x23f51d[_0xed0410][_0x7810('0x65')]):_0x23f51d[_0xed0410][_0x7810('0x65')];}}var _0x226b7e=[],_0x37c49d={};for(var _0x563090=0x0,_0x18121f=_0x24dd5e[_0x7810('0x37')];_0x563090<_0x18121f;_0x563090++){_0x37c49d={'ProjectId':_0x631dd8[_0x7810('0x4f')]['id'],'SessionId':_0x24dd5e[_0x563090]['id'],'StartTime':moment(_0x24dd5e[_0x563090][_0x7810('0x66')])[_0x7810('0x67')](_0x7810('0x68'))};for(var _0x4fb04c=0x0,_0x2ea032=_0x23f51d['length'];_0x4fb04c<_0x2ea032;_0x4fb04c++){if(_0x23f51d[_0x4fb04c][_0x7810('0x69')]==_0x24dd5e[_0x563090]['id']&&_0x344d20[_0x7810('0x38')](_0x23f51d[_0x4fb04c][_0x7810('0x64')])){_0x37c49d[_0x344d20[_0x23f51d[_0x4fb04c][_0x7810('0x64')]]]=_0x23f51d[_0x4fb04c][_0x7810('0x6a')];}}for(var _0x56a1b7 in _0x344d20){if(!_0x37c49d['hasOwnProperty'](_0x344d20[_0x56a1b7])){_0x37c49d[_0x344d20[_0x56a1b7]]=null;}}_0x226b7e[_0x7810('0x6b')](_0x37c49d);}return _0x226b7e;}})[_0x7810('0x23')](function(_0x2fad36){if(!_['isEmpty'](_0x2fad36)){var _0x282c5d=toCsv(_0x2fad36);var _0x16dc8f=Date[_0x7810('0x6c')]();fs[_0x7810('0x6d')](util['format'](_0x7810('0x6e'),_0x631dd8[_0x7810('0x4f')]['id'],_0x16dc8f),_0x282c5d);_0x280082['setHeader'](_0x7810('0x6f'),_0x7810('0x70')+util[_0x7810('0x67')](_0x7810('0x71'),_0x631dd8[_0x7810('0x4f')]['id'],_0x16dc8f));_0x280082[_0x7810('0x72')](_0x7810('0x73'),_0x7810('0x74'));return _0x280082[_0x7810('0x75')](util[_0x7810('0x67')](_0x7810('0x6e'),_0x631dd8['params']['id'],_0x16dc8f));}else{return _0x280082[_0x7810('0x17')](0xcc);}})[_0x7810('0x46')](handleError(_0x280082,null));};
\ No newline at end of file
index 619534b..bfc1452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','define','jscripty_projects','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0xb277a1,_0x211420){_0xb277a1=_0xb277a1-0x0;var _0x23c76a=_0xb4c7[_0xb277a1];return _0x23c76a;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));module['exports']=function(_0x1b0f57,_0x10e197){return _0x1b0f57[_0x7b4c('0xa')]('JscriptyProject',attributes,{'tableName':_0x7b4c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a01=['JscriptyProject','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./jscriptyProject.attributes','define'];(function(_0x2786ea,_0x16c3c3){var _0x5c38e5=function(_0x5a53c5){while(--_0x5a53c5){_0x2786ea['push'](_0x2786ea['shift']());}};_0x5c38e5(++_0x16c3c3);}(_0x5a01,0x1af));var _0x15a0=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x5a01[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0x15a0('0x0'));var util=require(_0x15a0('0x1'));var logger=require(_0x15a0('0x2'))('api');var moment=require('moment');var BPromise=require(_0x15a0('0x3'));var rp=require(_0x15a0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x15a0('0x5'));var config=require(_0x15a0('0x6'));var attributes=require(_0x15a0('0x7'));module['exports']=function(_0x5cc5bd,_0x2e15f2){return _0x5cc5bd[_0x15a0('0x8')](_0x15a0('0x9'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 226f034..bed55eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','error','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x451e96,_0x2c8989){var _0x227c95=function(_0x36376c){while(--_0x36376c){_0x451e96['push'](_0x451e96['shift']());}};_0x227c95(++_0x2c8989);}(_0xaa88,0x137));var _0x8aa8=function(_0x36d203,_0x3653f3){_0x36d203=_0x36d203-0x0;var _0x2f9e62=_0xaa88[_0x36d203];return _0x2f9e62;};'use strict';var _=require(_0x8aa8('0x0'));var util=require(_0x8aa8('0x1'));var moment=require(_0x8aa8('0x2'));var BPromise=require(_0x8aa8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8aa8('0x4'));var db=require(_0x8aa8('0x5'))['db'];var utils=require(_0x8aa8('0x6'));var logger=require(_0x8aa8('0x7'))(_0x8aa8('0x8'));var config=require(_0x8aa8('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8aa8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5264ff,_0x449d2d,_0x1ed84d){return new BPromise(function(_0x27c08d,_0x40826f){return client['request'](_0x5264ff,_0x1ed84d)[_0x8aa8('0xb')](function(_0x2d974c){logger[_0x8aa8('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x8aa8('0xd'));logger[_0x8aa8('0xe')](_0x8aa8('0xf'),_0x449d2d,_0x8aa8('0xd'),JSON['stringify'](_0x2d974c));if(_0x2d974c[_0x8aa8('0x10')]){if(_0x2d974c[_0x8aa8('0x10')]['code']===0x1f4){logger[_0x8aa8('0x10')](_0x8aa8('0x11'),_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x40826f(_0x2d974c[_0x8aa8('0x10')][_0x8aa8('0x12')]);}logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x27c08d(_0x2d974c['error'][_0x8aa8('0x12')]);}else{logger[_0x8aa8('0xc')](_0x8aa8('0x11'),_0x449d2d,_0x8aa8('0xd'));_0x27c08d(_0x2d974c[_0x8aa8('0x13')][_0x8aa8('0x12')]);}})[_0x8aa8('0x14')](function(_0xd59fb8){logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0xd59fb8);_0x40826f(_0xd59fb8);});});}
\ No newline at end of file
+var _0xe706=['http','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x265d78,_0x3d7444){var _0x77d503=function(_0x5150b8){while(--_0x5150b8){_0x265d78['push'](_0x265d78['shift']());}};_0x77d503(++_0x3d7444);}(_0xe706,0xa3));var _0x6e70=function(_0x46a634,_0x439b70){_0x46a634=_0x46a634-0x0;var _0x42007a=_0xe706[_0x46a634];return _0x42007a;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('JscriptyProject,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('JscriptyProject,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
index b62e1af..b36f71e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafcb=['isAuthenticated','describe','show','post','put','/:id','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','index','/describe'];(function(_0x458190,_0x5b7fbc){var _0x488ffa=function(_0x473827){while(--_0x473827){_0x458190['push'](_0x458190['shift']());}};_0x488ffa(++_0x5b7fbc);}(_0xafcb,0xa3));var _0xbafc=function(_0x6175c6,_0x39bd46){_0x6175c6=_0x6175c6-0x0;var _0x548598=_0xafcb[_0x6175c6];return _0x548598;};'use strict';var multer=require(_0xbafc('0x0'));var util=require(_0xbafc('0x1'));var path=require(_0xbafc('0x2'));var timeout=require('connect-timeout');var express=require(_0xbafc('0x3'));var router=express[_0xbafc('0x4')]();var fs_extra=require(_0xbafc('0x5'));var auth=require(_0xbafc('0x6'));var interaction=require(_0xbafc('0x7'));var config=require(_0xbafc('0x8'));var controller=require(_0xbafc('0x9'));router[_0xbafc('0xa')]('/',auth['isAuthenticated'](),controller[_0xbafc('0xb')]);router[_0xbafc('0xa')](_0xbafc('0xc'),auth[_0xbafc('0xd')](),controller[_0xbafc('0xe')]);router[_0xbafc('0xa')]('/:id',auth[_0xbafc('0xd')](),controller[_0xbafc('0xf')]);router[_0xbafc('0x10')]('/',auth[_0xbafc('0xd')](),controller['create']);router[_0xbafc('0x11')](_0xbafc('0x12'),auth['isAuthenticated'](),controller[_0xbafc('0x13')]);router[_0xbafc('0x14')](_0xbafc('0x12'),auth[_0xbafc('0xd')](),controller['destroy']);module[_0xbafc('0x15')]=router;
\ No newline at end of file
+var _0xd63a=['./jscriptyQuestionReport.controller','get','isAuthenticated','describe','/:id','show','create','put','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd63a,0x13b));var _0xad63=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd63a[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xad63('0x0'));var util=require(_0xad63('0x1'));var path=require('path');var timeout=require(_0xad63('0x2'));var express=require(_0xad63('0x3'));var router=express[_0xad63('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xad63('0x5'));var interaction=require(_0xad63('0x6'));var config=require(_0xad63('0x7'));var controller=require(_0xad63('0x8'));router[_0xad63('0x9')]('/',auth[_0xad63('0xa')](),controller['index']);router[_0xad63('0x9')]('/describe',auth[_0xad63('0xa')](),controller[_0xad63('0xb')]);router['get'](_0xad63('0xc'),auth[_0xad63('0xa')](),controller[_0xad63('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xad63('0xe')]);router[_0xad63('0xf')](_0xad63('0xc'),auth[_0xad63('0xa')](),controller[_0xad63('0x10')]);router[_0xad63('0x11')](_0xad63('0xc'),auth[_0xad63('0xa')](),controller['destroy']);module[_0xad63('0x12')]=router;
\ No newline at end of file
index a1584e8..ab169bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7a54,0x106));var _0x47a5=function(_0x3adc55,_0xb88498){_0x3adc55=_0x3adc55-0x0;var _0x272e41=_0x7a54[_0x3adc55];return _0x272e41;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x7a54,0x106));var _0x47a5=function(_0x29b827,_0x4180aa){_0x29b827=_0x29b827-0x0;var _0x4b21ea=_0x7a54[_0x29b827];return _0x4b21ea;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index ca50914..5df886d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86cb=['body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','path','to-csv','ejs','lodash','squel','desk.js','querystring','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','send','JscriptyQuestionReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','merge','map','type','filter','options','includeAll','include','findAll','catch','length','find','create','update'];(function(_0x16d555,_0x3d5a24){var _0x348956=function(_0x55bc4a){while(--_0x55bc4a){_0x16d555['push'](_0x16d555['shift']());}};_0x348956(++_0x3d5a24);}(_0x86cb,0x8b));var _0xb86c=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x86cb[_0x5c2e3e];return _0x53f64a;};'use strict';var emlformat=require(_0xb86c('0x0'));var rimraf=require(_0xb86c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb86c('0x2'));var moment=require(_0xb86c('0x3'));var BPromise=require(_0xb86c('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb86c('0x5'));var sox=require('sox');var csv=require(_0xb86c('0x6'));var ejs=require(_0xb86c('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb86c('0x8'));var squel=require(_0xb86c('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb86c('0xa'));var toCsv=require(_0xb86c('0x6'));var querystring=require(_0xb86c('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb86c('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb86c('0xd'))(_0xb86c('0xe'));var utils=require(_0xb86c('0xf'));var config=require(_0xb86c('0x10'));var licenseUtil=require(_0xb86c('0x11'));var db=require(_0xb86c('0x12'))['db'];function respondWithStatusCode(_0x33ca87,_0x4f3e74){_0x4f3e74=_0x4f3e74||0xcc;return function(_0x16abcb){if(_0x16abcb){return _0x33ca87[_0xb86c('0x13')](_0x4f3e74);}return _0x33ca87[_0xb86c('0x14')](_0x4f3e74)[_0xb86c('0x15')]();};}function respondWithResult(_0x5b846b,_0x17fe9f){_0x17fe9f=_0x17fe9f||0xc8;return function(_0x3239bd){if(_0x3239bd){return _0x5b846b[_0xb86c('0x14')](_0x17fe9f)['json'](_0x3239bd);}};}function respondWithFilteredResult(_0x520ec7,_0x50990d){return function(_0x45b608){if(_0x45b608){var _0x4b48b4=typeof _0x50990d[_0xb86c('0x16')]===_0xb86c('0x17')&&typeof _0x50990d[_0xb86c('0x18')]==='undefined';var _0x25532a=_0x45b608[_0xb86c('0x19')];var _0x36f8f6=_0x4b48b4?0x0:_0x50990d['offset'];var _0x4d2db8=_0x4b48b4?_0x45b608[_0xb86c('0x19')]:_0x50990d['offset']+_0x50990d[_0xb86c('0x18')];var _0x59778c;if(_0x4d2db8>=_0x25532a){_0x4d2db8=_0x25532a;_0x59778c=0xc8;}else{_0x59778c=0xce;}_0x520ec7[_0xb86c('0x14')](_0x59778c);return _0x520ec7[_0xb86c('0x1a')](_0xb86c('0x1b'),_0x36f8f6+'-'+_0x4d2db8+'/'+_0x25532a)[_0xb86c('0x1c')](_0x45b608);}return null;};}function patchUpdates(_0x585428){return function(_0x27136d){try{jsonpatch[_0xb86c('0x1d')](_0x27136d,_0x585428,!![]);}catch(_0x769cd8){return BPromise[_0xb86c('0x1e')](_0x769cd8);}return _0x27136d[_0xb86c('0x1f')]();};}function saveUpdates(_0x3015a9,_0x3981c7){return function(_0x5c1170){if(_0x5c1170){return _0x5c1170['update'](_0x3015a9)[_0xb86c('0x20')](function(_0x147299){return _0x147299;});}return null;};}function removeEntity(_0x286927,_0x19f23e){return function(_0x523482){if(_0x523482){return _0x523482[_0xb86c('0x21')]()['then'](function(){_0x286927[_0xb86c('0x14')](0xcc)[_0xb86c('0x15')]();});}};}function handleEntityNotFound(_0x403c0f,_0x574dba){return function(_0x571e1d){if(!_0x571e1d){_0x403c0f[_0xb86c('0x13')](0x194);}return _0x571e1d;};}function handleError(_0x2ad854,_0x3ad0ee){_0x3ad0ee=_0x3ad0ee||0x1f4;return function(_0x336360){logger[_0xb86c('0x22')](_0x336360[_0xb86c('0x23')]);if(_0x336360[_0xb86c('0x24')]){delete _0x336360[_0xb86c('0x24')];}_0x2ad854[_0xb86c('0x14')](_0x3ad0ee)[_0xb86c('0x25')](_0x336360);};}exports['index']=function(_0x5acbbb,_0x29febb){var _0x2626ba={},_0x2abc91={},_0x5ceef3={'count':0x0,'rows':[]};var _0x4a6388=_['map'](db[_0xb86c('0x26')][_0xb86c('0x27')],function(_0x18ce1c){return{'name':_0x18ce1c['fieldName'],'type':_0x18ce1c['type'][_0xb86c('0x28')]};});_0x2abc91[_0xb86c('0x29')]=_['map'](_0x4a6388,_0xb86c('0x24'));_0x2abc91[_0xb86c('0x2a')]=_[_0xb86c('0x2b')](_0x5acbbb[_0xb86c('0x2a')]);_0x2abc91[_0xb86c('0x2c')]=_[_0xb86c('0x2d')](_0x2abc91[_0xb86c('0x29')],_0x2abc91[_0xb86c('0x2a')]);_0x2626ba[_0xb86c('0x2e')]=_[_0xb86c('0x2d')](_0x2abc91[_0xb86c('0x29')],qs[_0xb86c('0x2f')](_0x5acbbb[_0xb86c('0x2a')][_0xb86c('0x2f')]));_0x2626ba[_0xb86c('0x2e')]=_0x2626ba[_0xb86c('0x2e')]['length']?_0x2626ba[_0xb86c('0x2e')]:_0x2abc91[_0xb86c('0x29')];if(!_0x5acbbb[_0xb86c('0x2a')][_0xb86c('0x30')](_0xb86c('0x31'))){_0x2626ba[_0xb86c('0x18')]=qs[_0xb86c('0x18')](_0x5acbbb[_0xb86c('0x2a')][_0xb86c('0x18')]);_0x2626ba[_0xb86c('0x16')]=qs['offset'](_0x5acbbb[_0xb86c('0x2a')][_0xb86c('0x16')]);}_0x2626ba['order']=qs[_0xb86c('0x32')](_0x5acbbb[_0xb86c('0x2a')][_0xb86c('0x32')]);_0x2626ba[_0xb86c('0x33')]=qs[_0xb86c('0x2c')](_['pick'](_0x5acbbb[_0xb86c('0x2a')],_0x2abc91[_0xb86c('0x2c')]),_0x4a6388);if(_0x5acbbb['query']['filter']){_0x2626ba[_0xb86c('0x33')]=_[_0xb86c('0x34')](_0x2626ba['where'],{'$or':_[_0xb86c('0x35')](_0x4a6388,function(_0x1f9108){if(_0x1f9108[_0xb86c('0x36')]!=='VIRTUAL'){var _0x4209d6={};_0x4209d6[_0x1f9108['name']]={'$like':'%'+_0x5acbbb[_0xb86c('0x2a')][_0xb86c('0x37')]+'%'};return _0x4209d6;}})});}_0x2626ba=_[_0xb86c('0x34')]({},_0x2626ba,_0x5acbbb[_0xb86c('0x38')]);var _0x129c5d={'where':_0x2626ba[_0xb86c('0x33')]};return db['JscriptyQuestionReport']['count'](_0x129c5d)[_0xb86c('0x20')](function(_0x29c47c){_0x5ceef3[_0xb86c('0x19')]=_0x29c47c;if(_0x5acbbb[_0xb86c('0x2a')][_0xb86c('0x39')]){_0x2626ba[_0xb86c('0x3a')]=[{'all':!![]}];}return db[_0xb86c('0x26')][_0xb86c('0x3b')](_0x2626ba);})[_0xb86c('0x20')](function(_0x44a78b){_0x5ceef3['rows']=_0x44a78b;return _0x5ceef3;})[_0xb86c('0x20')](respondWithFilteredResult(_0x29febb,_0x2626ba))[_0xb86c('0x3c')](handleError(_0x29febb,null));};exports['show']=function(_0x1d43dd,_0x5fd50e){var _0x56f8cd={'raw':!![],'where':{'id':_0x1d43dd['params']['id']}},_0x5cd068={};_0x5cd068[_0xb86c('0x29')]=_['keys'](db[_0xb86c('0x26')][_0xb86c('0x27')]);_0x5cd068[_0xb86c('0x2a')]=_[_0xb86c('0x2b')](_0x1d43dd[_0xb86c('0x2a')]);_0x5cd068['filters']=_[_0xb86c('0x2d')](_0x5cd068[_0xb86c('0x29')],_0x5cd068['query']);_0x56f8cd[_0xb86c('0x2e')]=_[_0xb86c('0x2d')](_0x5cd068[_0xb86c('0x29')],qs[_0xb86c('0x2f')](_0x1d43dd[_0xb86c('0x2a')][_0xb86c('0x2f')]));_0x56f8cd[_0xb86c('0x2e')]=_0x56f8cd['attributes'][_0xb86c('0x3d')]?_0x56f8cd[_0xb86c('0x2e')]:_0x5cd068[_0xb86c('0x29')];if(_0x1d43dd[_0xb86c('0x2a')][_0xb86c('0x39')]){_0x56f8cd[_0xb86c('0x3a')]=[{'all':!![]}];}_0x56f8cd=_[_0xb86c('0x34')]({},_0x56f8cd,_0x1d43dd[_0xb86c('0x38')]);return db[_0xb86c('0x26')][_0xb86c('0x3e')](_0x56f8cd)[_0xb86c('0x20')](handleEntityNotFound(_0x5fd50e,null))[_0xb86c('0x20')](respondWithResult(_0x5fd50e,null))['catch'](handleError(_0x5fd50e,null));};exports[_0xb86c('0x3f')]=function(_0x1025cd,_0x2dbde0){return db[_0xb86c('0x26')][_0xb86c('0x3f')](_0x1025cd['body'],{})[_0xb86c('0x20')](respondWithResult(_0x2dbde0,0xc9))[_0xb86c('0x3c')](handleError(_0x2dbde0,null));};exports[_0xb86c('0x40')]=function(_0x3045e2,_0x3018a0){if(_0x3045e2[_0xb86c('0x41')]['id']){delete _0x3045e2[_0xb86c('0x41')]['id'];}return db[_0xb86c('0x26')][_0xb86c('0x3e')]({'where':{'id':_0x3045e2[_0xb86c('0x42')]['id']}})[_0xb86c('0x20')](handleEntityNotFound(_0x3018a0,null))[_0xb86c('0x20')](saveUpdates(_0x3045e2[_0xb86c('0x41')],null))[_0xb86c('0x20')](respondWithResult(_0x3018a0,null))['catch'](handleError(_0x3018a0,null));};exports[_0xb86c('0x21')]=function(_0x57729c,_0x8822f0){return db[_0xb86c('0x26')][_0xb86c('0x3e')]({'where':{'id':_0x57729c['params']['id']}})[_0xb86c('0x20')](handleEntityNotFound(_0x8822f0,null))[_0xb86c('0x20')](removeEntity(_0x8822f0,null))[_0xb86c('0x3c')](handleError(_0x8822f0,null));};exports[_0xb86c('0x43')]=function(_0x18a54d,_0x59bc88){return db[_0xb86c('0x26')]['describe']()[_0xb86c('0x20')](respondWithResult(_0x59bc88,null))['catch'](handleError(_0x59bc88,null));};
\ No newline at end of file
+var _0x7487=['keys','filters','intersection','attributes','length','query','hasOwnProperty','nolimit','order','sort','filter','merge','where','JscriptyQuestionReport','includeAll','findAll','then','rows','show','fields','include','options','find','catch','create','body','update','params','rimraf','request-promise','mustache','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','reject','save','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model'];(function(_0x328534,_0x33b41e){var _0x2796c0=function(_0x1ba8ad){while(--_0x1ba8ad){_0x328534['push'](_0x328534['shift']());}};_0x2796c0(++_0x33b41e);}(_0x7487,0x65));var _0x7748=function(_0x261e29,_0x10fffd){_0x261e29=_0x261e29-0x0;var _0x25ef43=_0x7487[_0x261e29];return _0x25ef43;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7748('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7748('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7748('0x2'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7748('0x3'));var fs=require('fs');var fs_extra=require(_0x7748('0x4'));var _=require(_0x7748('0x5'));var squel=require(_0x7748('0x6'));var crypto=require(_0x7748('0x7'));var jsforce=require(_0x7748('0x8'));var deskjs=require(_0x7748('0x9'));var toCsv=require('to-csv');var querystring=require(_0x7748('0xa'));var Papa=require(_0x7748('0xb'));var Redis=require(_0x7748('0xc'));var authService=require(_0x7748('0xd'));var qs=require(_0x7748('0xe'));var as=require(_0x7748('0xf'));var hardwareService=require(_0x7748('0x10'));var logger=require(_0x7748('0x11'))(_0x7748('0x12'));var utils=require(_0x7748('0x13'));var config=require(_0x7748('0x14'));var licenseUtil=require(_0x7748('0x15'));var db=require(_0x7748('0x16'))['db'];function respondWithStatusCode(_0xeb6b03,_0x1b5f3){_0x1b5f3=_0x1b5f3||0xcc;return function(_0x5eef63){if(_0x5eef63){return _0xeb6b03[_0x7748('0x17')](_0x1b5f3);}return _0xeb6b03[_0x7748('0x18')](_0x1b5f3)[_0x7748('0x19')]();};}function respondWithResult(_0x50ef0f,_0x29e5f8){_0x29e5f8=_0x29e5f8||0xc8;return function(_0x1be093){if(_0x1be093){return _0x50ef0f[_0x7748('0x18')](_0x29e5f8)[_0x7748('0x1a')](_0x1be093);}};}function respondWithFilteredResult(_0x20847a,_0x3db909){return function(_0x1c04c0){if(_0x1c04c0){var _0x5a9cea=typeof _0x3db909['offset']===_0x7748('0x1b')&&typeof _0x3db909[_0x7748('0x1c')]===_0x7748('0x1b');var _0x267650=_0x1c04c0[_0x7748('0x1d')];var _0x5a3433=_0x5a9cea?0x0:_0x3db909['offset'];var _0x2b646c=_0x5a9cea?_0x1c04c0[_0x7748('0x1d')]:_0x3db909[_0x7748('0x1e')]+_0x3db909['limit'];var _0x1afd97;if(_0x2b646c>=_0x267650){_0x2b646c=_0x267650;_0x1afd97=0xc8;}else{_0x1afd97=0xce;}_0x20847a[_0x7748('0x18')](_0x1afd97);return _0x20847a['set']('Content-Range',_0x5a3433+'-'+_0x2b646c+'/'+_0x267650)['json'](_0x1c04c0);}return null;};}function patchUpdates(_0xb1f564){return function(_0x1eb374){try{jsonpatch['apply'](_0x1eb374,_0xb1f564,!![]);}catch(_0x232a9e){return BPromise[_0x7748('0x1f')](_0x232a9e);}return _0x1eb374[_0x7748('0x20')]();};}function saveUpdates(_0x16ecfd,_0xa3c717){return function(_0x5d4dd4){if(_0x5d4dd4){return _0x5d4dd4['update'](_0x16ecfd)['then'](function(_0x49210b){return _0x49210b;});}return null;};}function removeEntity(_0x5a88f8,_0x1b79b1){return function(_0x13d608){if(_0x13d608){return _0x13d608[_0x7748('0x21')]()['then'](function(){_0x5a88f8['status'](0xcc)[_0x7748('0x19')]();});}};}function handleEntityNotFound(_0xb7f56d,_0x447667){return function(_0x3768e3){if(!_0x3768e3){_0xb7f56d[_0x7748('0x17')](0x194);}return _0x3768e3;};}function handleError(_0x2eba89,_0x20ebb4){_0x20ebb4=_0x20ebb4||0x1f4;return function(_0x4d2419){logger[_0x7748('0x22')](_0x4d2419[_0x7748('0x23')]);if(_0x4d2419[_0x7748('0x24')]){delete _0x4d2419['name'];}_0x2eba89[_0x7748('0x18')](_0x20ebb4)[_0x7748('0x25')](_0x4d2419);};}exports[_0x7748('0x26')]=function(_0x1c83a7,_0x5e15eb){var _0x20f511={},_0x3b85aa={},_0x1f172f={'count':0x0,'rows':[]};var _0x4935f6=_[_0x7748('0x27')](db['JscriptyQuestionReport'][_0x7748('0x28')],function(_0x2e14e8){return{'name':_0x2e14e8[_0x7748('0x29')],'type':_0x2e14e8[_0x7748('0x2a')][_0x7748('0x2b')]};});_0x3b85aa[_0x7748('0x2c')]=_[_0x7748('0x27')](_0x4935f6,_0x7748('0x24'));_0x3b85aa['query']=_[_0x7748('0x2d')](_0x1c83a7['query']);_0x3b85aa[_0x7748('0x2e')]=_['intersection'](_0x3b85aa[_0x7748('0x2c')],_0x3b85aa['query']);_0x20f511['attributes']=_[_0x7748('0x2f')](_0x3b85aa[_0x7748('0x2c')],qs['fields'](_0x1c83a7['query']['fields']));_0x20f511[_0x7748('0x30')]=_0x20f511[_0x7748('0x30')][_0x7748('0x31')]?_0x20f511[_0x7748('0x30')]:_0x3b85aa[_0x7748('0x2c')];if(!_0x1c83a7[_0x7748('0x32')][_0x7748('0x33')](_0x7748('0x34'))){_0x20f511[_0x7748('0x1c')]=qs[_0x7748('0x1c')](_0x1c83a7[_0x7748('0x32')][_0x7748('0x1c')]);_0x20f511[_0x7748('0x1e')]=qs[_0x7748('0x1e')](_0x1c83a7['query'][_0x7748('0x1e')]);}_0x20f511[_0x7748('0x35')]=qs[_0x7748('0x36')](_0x1c83a7['query']['sort']);_0x20f511['where']=qs['filters'](_['pick'](_0x1c83a7[_0x7748('0x32')],_0x3b85aa[_0x7748('0x2e')]),_0x4935f6);if(_0x1c83a7[_0x7748('0x32')][_0x7748('0x37')]){_0x20f511['where']=_[_0x7748('0x38')](_0x20f511[_0x7748('0x39')],{'$or':_[_0x7748('0x27')](_0x4935f6,function(_0x2aaf0b){if(_0x2aaf0b[_0x7748('0x2a')]!=='VIRTUAL'){var _0xc872cc={};_0xc872cc[_0x2aaf0b[_0x7748('0x24')]]={'$like':'%'+_0x1c83a7[_0x7748('0x32')]['filter']+'%'};return _0xc872cc;}})});}_0x20f511=_['merge']({},_0x20f511,_0x1c83a7['options']);var _0x4d3109={'where':_0x20f511['where']};return db[_0x7748('0x3a')][_0x7748('0x1d')](_0x4d3109)['then'](function(_0x43164a){_0x1f172f[_0x7748('0x1d')]=_0x43164a;if(_0x1c83a7['query'][_0x7748('0x3b')]){_0x20f511['include']=[{'all':!![]}];}return db[_0x7748('0x3a')][_0x7748('0x3c')](_0x20f511);})[_0x7748('0x3d')](function(_0x1ca972){_0x1f172f[_0x7748('0x3e')]=_0x1ca972;return _0x1f172f;})[_0x7748('0x3d')](respondWithFilteredResult(_0x5e15eb,_0x20f511))['catch'](handleError(_0x5e15eb,null));};exports[_0x7748('0x3f')]=function(_0x3b98ce,_0x2dbd6c){var _0x1498f2={'raw':!![],'where':{'id':_0x3b98ce['params']['id']}},_0x2caa39={};_0x2caa39[_0x7748('0x2c')]=_['keys'](db['JscriptyQuestionReport']['rawAttributes']);_0x2caa39['query']=_['keys'](_0x3b98ce[_0x7748('0x32')]);_0x2caa39[_0x7748('0x2e')]=_[_0x7748('0x2f')](_0x2caa39['model'],_0x2caa39[_0x7748('0x32')]);_0x1498f2[_0x7748('0x30')]=_[_0x7748('0x2f')](_0x2caa39[_0x7748('0x2c')],qs[_0x7748('0x40')](_0x3b98ce[_0x7748('0x32')][_0x7748('0x40')]));_0x1498f2[_0x7748('0x30')]=_0x1498f2[_0x7748('0x30')][_0x7748('0x31')]?_0x1498f2['attributes']:_0x2caa39[_0x7748('0x2c')];if(_0x3b98ce[_0x7748('0x32')][_0x7748('0x3b')]){_0x1498f2[_0x7748('0x41')]=[{'all':!![]}];}_0x1498f2=_['merge']({},_0x1498f2,_0x3b98ce[_0x7748('0x42')]);return db[_0x7748('0x3a')][_0x7748('0x43')](_0x1498f2)[_0x7748('0x3d')](handleEntityNotFound(_0x2dbd6c,null))[_0x7748('0x3d')](respondWithResult(_0x2dbd6c,null))[_0x7748('0x44')](handleError(_0x2dbd6c,null));};exports[_0x7748('0x45')]=function(_0x56480c,_0x52ee68){return db[_0x7748('0x3a')][_0x7748('0x45')](_0x56480c[_0x7748('0x46')],{})[_0x7748('0x3d')](respondWithResult(_0x52ee68,0xc9))[_0x7748('0x44')](handleError(_0x52ee68,null));};exports[_0x7748('0x47')]=function(_0x4455df,_0x392f4d){if(_0x4455df['body']['id']){delete _0x4455df[_0x7748('0x46')]['id'];}return db[_0x7748('0x3a')]['find']({'where':{'id':_0x4455df[_0x7748('0x48')]['id']}})['then'](handleEntityNotFound(_0x392f4d,null))['then'](saveUpdates(_0x4455df[_0x7748('0x46')],null))['then'](respondWithResult(_0x392f4d,null))[_0x7748('0x44')](handleError(_0x392f4d,null));};exports[_0x7748('0x21')]=function(_0x38aa18,_0x305c45){return db[_0x7748('0x3a')][_0x7748('0x43')]({'where':{'id':_0x38aa18[_0x7748('0x48')]['id']}})[_0x7748('0x3d')](handleEntityNotFound(_0x305c45,null))[_0x7748('0x3d')](removeEntity(_0x305c45,null))[_0x7748('0x44')](handleError(_0x305c45,null));};exports['describe']=function(_0x552137,_0x30cd6b){return db['JscriptyQuestionReport']['describe']()[_0x7748('0x3d')](respondWithResult(_0x30cd6b,null))[_0x7748('0x44')](handleError(_0x30cd6b,null));};
\ No newline at end of file
index 7ff7345..d941392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83d7=['api','moment','bluebird','request-promise','rimraf','exports','define','JscriptyQuestionReport','report_jscripty_questions','lodash','util'];(function(_0x503bc0,_0x12aeee){var _0x383246=function(_0x298a3d){while(--_0x298a3d){_0x503bc0['push'](_0x503bc0['shift']());}};_0x383246(++_0x12aeee);}(_0x83d7,0x148));var _0x783d=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x83d7[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x783d('0x0'));var util=require(_0x783d('0x1'));var logger=require('../../config/logger')(_0x783d('0x2'));var moment=require(_0x783d('0x3'));var BPromise=require(_0x783d('0x4'));var rp=require(_0x783d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x783d('0x6'));var config=require('../../config/environment');var attributes=require('./jscriptyQuestionReport.attributes');module[_0x783d('0x7')]=function(_0xaab3a6,_0xb736e8){return _0xaab3a6[_0x783d('0x8')](_0x783d('0x9'),attributes,{'tableName':_0x783d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf797=['path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0xf797,0xbe));var _0x7f79=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0xf797[_0x58e469];return _0x4c01c5;};'use strict';var _=require('lodash');var util=require(_0x7f79('0x0'));var logger=require(_0x7f79('0x1'))('api');var moment=require(_0x7f79('0x2'));var BPromise=require(_0x7f79('0x3'));var rp=require(_0x7f79('0x4'));var fs=require('fs');var path=require(_0x7f79('0x5'));var rimraf=require(_0x7f79('0x6'));var config=require(_0x7f79('0x7'));var attributes=require(_0x7f79('0x8'));module[_0x7f79('0x9')]=function(_0x1a08ae,_0x2ab028){return _0x1a08ae[_0x7f79('0xa')](_0x7f79('0xb'),attributes,{'tableName':_0x7f79('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9f5695b..e50651f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x001c=['ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x9d14e3,_0x5a6072){var _0x19bf32=function(_0x19da07){while(--_0x19da07){_0x9d14e3['push'](_0x9d14e3['shift']());}};_0x19bf32(++_0x5a6072);}(_0x001c,0x10e));var _0xc001=function(_0x14a7b0,_0x286d52){_0x14a7b0=_0x14a7b0-0x0;var _0x486c9b=_0x001c[_0x14a7b0];return _0x486c9b;};'use strict';var _=require(_0xc001('0x0'));var util=require(_0xc001('0x1'));var moment=require(_0xc001('0x2'));var BPromise=require(_0xc001('0x3'));var rs=require(_0xc001('0x4'));var fs=require('fs');var Redis=require(_0xc001('0x5'));var db=require(_0xc001('0x6'))['db'];var utils=require(_0xc001('0x7'));var logger=require(_0xc001('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc001('0x9'));var client=jayson[_0xc001('0xa')][_0xc001('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x401920,_0xb93a02,_0x55ab73){return new BPromise(function(_0x25b6e3,_0x3f4d7d){return client[_0xc001('0xc')](_0x401920,_0x55ab73)[_0xc001('0xd')](function(_0x3f90fd){logger[_0xc001('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0xb93a02,_0xc001('0xf'));logger[_0xc001('0x10')](_0xc001('0x11'),_0xb93a02,_0xc001('0xf'),JSON[_0xc001('0x12')](_0x3f90fd));if(_0x3f90fd['error']){if(_0x3f90fd[_0xc001('0x13')][_0xc001('0x14')]===0x1f4){logger['error'](_0xc001('0x15'),_0xb93a02,_0x3f90fd[_0xc001('0x13')][_0xc001('0x16')]);return _0x3f4d7d(_0x3f90fd['error']['message']);}logger[_0xc001('0x13')](_0xc001('0x15'),_0xb93a02,_0x3f90fd['error'][_0xc001('0x16')]);return _0x25b6e3(_0x3f90fd['error'][_0xc001('0x16')]);}else{logger['info'](_0xc001('0x15'),_0xb93a02,_0xc001('0xf'));_0x25b6e3(_0x3f90fd[_0xc001('0x17')][_0xc001('0x16')]);}})[_0xc001('0x18')](function(_0x31348f){logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0xb93a02,_0x31348f);_0x3f4d7d(_0x31348f);});});}
\ No newline at end of file
+var _0x8f8a=['jayson/promise','client','http','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x323808,_0x34773b){var _0x38fe5c=function(_0x4b62fe){while(--_0x4b62fe){_0x323808['push'](_0x323808['shift']());}};_0x38fe5c(++_0x34773b);}(_0x8f8a,0x19b));var _0xa8f8=function(_0x16f270,_0x428737){_0x16f270=_0x16f270-0x0;var _0x524e3a=_0x8f8a[_0x16f270];return _0x524e3a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa8f8('0x0'));var BPromise=require(_0xa8f8('0x1'));var rs=require(_0xa8f8('0x2'));var fs=require('fs');var Redis=require(_0xa8f8('0x3'));var db=require(_0xa8f8('0x4'))['db'];var utils=require(_0xa8f8('0x5'));var logger=require('../../config/logger')(_0xa8f8('0x6'));var config=require('../../config/environment');var jayson=require(_0xa8f8('0x7'));var client=jayson[_0xa8f8('0x8')][_0xa8f8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x6cfc15,_0x50f22a,_0x38b184){return new BPromise(function(_0x587165,_0x41c1dd){return client['request'](_0x6cfc15,_0x38b184)[_0xa8f8('0xa')](function(_0x3ae03a){logger[_0xa8f8('0xb')](_0xa8f8('0xc'),_0x50f22a,_0xa8f8('0xd'));logger[_0xa8f8('0xe')](_0xa8f8('0xf'),_0x50f22a,'request\x20sent',JSON[_0xa8f8('0x10')](_0x3ae03a));if(_0x3ae03a[_0xa8f8('0x11')]){if(_0x3ae03a[_0xa8f8('0x11')][_0xa8f8('0x12')]===0x1f4){logger['error'](_0xa8f8('0xc'),_0x50f22a,_0x3ae03a['error']['message']);return _0x41c1dd(_0x3ae03a['error'][_0xa8f8('0x13')]);}logger[_0xa8f8('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x50f22a,_0x3ae03a[_0xa8f8('0x11')][_0xa8f8('0x13')]);return _0x587165(_0x3ae03a[_0xa8f8('0x11')]['message']);}else{logger[_0xa8f8('0xb')](_0xa8f8('0xc'),_0x50f22a,'request\x20sent');_0x587165(_0x3ae03a[_0xa8f8('0x14')][_0xa8f8('0x13')]);}})[_0xa8f8('0x15')](function(_0x4f4c3e){logger[_0xa8f8('0x11')](_0xa8f8('0xc'),_0x50f22a,_0x4f4c3e);_0x41c1dd(_0x4f4c3e);});});}
\ No newline at end of file
index 67d22fb..fb38774 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6780=['/:id','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','/:id/questions','getQuestions','create'];(function(_0x5ef3d1,_0x5acf74){var _0x65a92f=function(_0x428ed6){while(--_0x428ed6){_0x5ef3d1['push'](_0x5ef3d1['shift']());}};_0x65a92f(++_0x5acf74);}(_0x6780,0x121));var _0x0678=function(_0x32d718,_0x1c18ad){_0x32d718=_0x32d718-0x0;var _0x586618=_0x6780[_0x32d718];return _0x586618;};'use strict';var multer=require(_0x0678('0x0'));var util=require('util');var path=require(_0x0678('0x1'));var timeout=require(_0x0678('0x2'));var express=require(_0x0678('0x3'));var router=express[_0x0678('0x4')]();var fs_extra=require(_0x0678('0x5'));var auth=require(_0x0678('0x6'));var interaction=require(_0x0678('0x7'));var config=require(_0x0678('0x8'));var controller=require('./jscriptySessionReport.controller');router[_0x0678('0x9')]('/',auth[_0x0678('0xa')](),controller['index']);router[_0x0678('0x9')]('/describe',auth[_0x0678('0xa')](),controller['describe']);router[_0x0678('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x0678('0xb')]);router[_0x0678('0x9')](_0x0678('0xc'),auth[_0x0678('0xa')](),controller[_0x0678('0xd')]);router['post']('/',auth[_0x0678('0xa')](),controller[_0x0678('0xe')]);router['put'](_0x0678('0xf'),auth[_0x0678('0xa')](),controller[_0x0678('0x10')]);router['delete']('/:id',auth[_0x0678('0xa')](),controller[_0x0678('0x11')]);module[_0x0678('0x12')]=router;
\ No newline at end of file
+var _0x44a9=['post','create','put','/:id','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','index','/describe','describe','isAuthenticated','/:id/questions','getQuestions'];(function(_0xc2b0ce,_0xe149ba){var _0x70b4df=function(_0xa95c9c){while(--_0xa95c9c){_0xc2b0ce['push'](_0xc2b0ce['shift']());}};_0x70b4df(++_0xe149ba);}(_0x44a9,0xae));var _0x944a=function(_0x2eb8e9,_0x585954){_0x2eb8e9=_0x2eb8e9-0x0;var _0x4b5b12=_0x44a9[_0x2eb8e9];return _0x4b5b12;};'use strict';var multer=require(_0x944a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x944a('0x1'));var express=require('express');var router=express[_0x944a('0x2')]();var fs_extra=require(_0x944a('0x3'));var auth=require(_0x944a('0x4'));var interaction=require(_0x944a('0x5'));var config=require(_0x944a('0x6'));var controller=require(_0x944a('0x7'));router[_0x944a('0x8')]('/',auth['isAuthenticated'](),controller[_0x944a('0x9')]);router['get'](_0x944a('0xa'),auth['isAuthenticated'](),controller[_0x944a('0xb')]);router['get']('/:id',auth[_0x944a('0xc')](),controller['show']);router[_0x944a('0x8')](_0x944a('0xd'),auth[_0x944a('0xc')](),controller[_0x944a('0xe')]);router[_0x944a('0xf')]('/',auth[_0x944a('0xc')](),controller[_0x944a('0x10')]);router[_0x944a('0x11')](_0x944a('0x12'),auth[_0x944a('0xc')](),controller['update']);router['delete'](_0x944a('0x12'),auth['isAuthenticated'](),controller[_0x944a('0x13')]);module[_0x944a('0x14')]=router;
\ No newline at end of file
index 5df10f8..386aca9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd947=['exports','DATE','starttime','endtime','format','STRING','BOOLEAN','moment','sequelize'];(function(_0x123754,_0x8bd643){var _0xe124f3=function(_0x571296){while(--_0x571296){_0x123754['push'](_0x123754['shift']());}};_0xe124f3(++_0x8bd643);}(_0xd947,0x130));var _0x7d94=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xd947[_0x3947c9];return _0x2e7871;};'use strict';var moment=require(_0x7d94('0x0'));var Sequelize=require(_0x7d94('0x1'));module[_0x7d94('0x2')]={'starttime':{'type':Sequelize[_0x7d94('0x3')],'set':function(_0x5a7b66){this['setDataValue'](_0x7d94('0x4'),_0x5a7b66);this['setDataValue'](_0x7d94('0x5'),moment()[_0x7d94('0x6')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x7d94('0x3')]},'membername':{'type':Sequelize[_0x7d94('0x7')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x7d94('0x7')]},'uniqueid':{'type':Sequelize[_0x7d94('0x7')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x7d94('0x7')]},'completed':{'type':Sequelize[_0x7d94('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3933=['setDataValue','starttime','format','STRING','BOOLEAN','moment','sequelize','exports','DATE'];(function(_0x4c1b49,_0x54e547){var _0x259ca=function(_0x196a5a){while(--_0x196a5a){_0x4c1b49['push'](_0x4c1b49['shift']());}};_0x259ca(++_0x54e547);}(_0x3933,0x83));var _0x3393=function(_0x49dec7,_0x38206f){_0x49dec7=_0x49dec7-0x0;var _0x301123=_0x3933[_0x49dec7];return _0x301123;};'use strict';var moment=require(_0x3393('0x0'));var Sequelize=require(_0x3393('0x1'));module[_0x3393('0x2')]={'starttime':{'type':Sequelize[_0x3393('0x3')],'set':function(_0x26b68e){this[_0x3393('0x4')](_0x3393('0x5'),_0x26b68e);this[_0x3393('0x4')]('endtime',moment()[_0x3393('0x6')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x3393('0x7')]},'queue':{'type':Sequelize[_0x3393('0x7')]},'uniqueid':{'type':Sequelize[_0x3393('0x7')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x3393('0x7')]},'completed':{'type':Sequelize[_0x3393('0x8')],'defaultValue':![]}};
\ No newline at end of file
index c2147fe..e79d70d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73f8=['create','body','describe','getQuestions','findOne','JscriptyQuestionReport','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','set','Content-Range','apply','reject','save','update','then','stack','send','index','map','JscriptySessionReport','rawAttributes','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','rows','show','params','include','find','catch'];(function(_0x4b33ff,_0x34193c){var _0x24c2f7=function(_0x2e4e49){while(--_0x2e4e49){_0x4b33ff['push'](_0x4b33ff['shift']());}};_0x24c2f7(++_0x34193c);}(_0x73f8,0x1e0));var _0x873f=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x73f8[_0x55f8b4];return _0x2475f9;};'use strict';var emlformat=require(_0x873f('0x0'));var rimraf=require(_0x873f('0x1'));var zipdir=require(_0x873f('0x2'));var jsonpatch=require(_0x873f('0x3'));var rp=require('request-promise');var moment=require(_0x873f('0x4'));var BPromise=require(_0x873f('0x5'));var Mustache=require(_0x873f('0x6'));var util=require(_0x873f('0x7'));var path=require('path');var sox=require(_0x873f('0x8'));var csv=require('to-csv');var ejs=require(_0x873f('0x9'));var fs=require('fs');var fs_extra=require(_0x873f('0xa'));var _=require(_0x873f('0xb'));var squel=require(_0x873f('0xc'));var crypto=require(_0x873f('0xd'));var jsforce=require(_0x873f('0xe'));var deskjs=require(_0x873f('0xf'));var toCsv=require(_0x873f('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x873f('0x11'));var authService=require(_0x873f('0x12'));var qs=require(_0x873f('0x13'));var as=require(_0x873f('0x14'));var hardwareService=require(_0x873f('0x15'));var logger=require('../../config/logger')(_0x873f('0x16'));var utils=require(_0x873f('0x17'));var config=require(_0x873f('0x18'));var licenseUtil=require(_0x873f('0x19'));var db=require(_0x873f('0x1a'))['db'];function respondWithStatusCode(_0x5d7f3e,_0x5569cf){_0x5569cf=_0x5569cf||0xcc;return function(_0x22378e){if(_0x22378e){return _0x5d7f3e[_0x873f('0x1b')](_0x5569cf);}return _0x5d7f3e['status'](_0x5569cf)['end']();};}function respondWithResult(_0x5b8dac,_0x2334d2){_0x2334d2=_0x2334d2||0xc8;return function(_0x223e56){if(_0x223e56){return _0x5b8dac[_0x873f('0x1c')](_0x2334d2)[_0x873f('0x1d')](_0x223e56);}};}function respondWithFilteredResult(_0x2bb113,_0x5e8ee3){return function(_0x21bceb){if(_0x21bceb){var _0x1f75b5=typeof _0x5e8ee3[_0x873f('0x1e')]===_0x873f('0x1f')&&typeof _0x5e8ee3['limit']==='undefined';var _0x158c37=_0x21bceb['count'];var _0x1780a6=_0x1f75b5?0x0:_0x5e8ee3[_0x873f('0x1e')];var _0x4e749b=_0x1f75b5?_0x21bceb['count']:_0x5e8ee3['offset']+_0x5e8ee3['limit'];var _0x2c6f4f;if(_0x4e749b>=_0x158c37){_0x4e749b=_0x158c37;_0x2c6f4f=0xc8;}else{_0x2c6f4f=0xce;}_0x2bb113[_0x873f('0x1c')](_0x2c6f4f);return _0x2bb113[_0x873f('0x20')](_0x873f('0x21'),_0x1780a6+'-'+_0x4e749b+'/'+_0x158c37)['json'](_0x21bceb);}return null;};}function patchUpdates(_0x264d7c){return function(_0x7b7a40){try{jsonpatch[_0x873f('0x22')](_0x7b7a40,_0x264d7c,!![]);}catch(_0x13f6e5){return BPromise[_0x873f('0x23')](_0x13f6e5);}return _0x7b7a40[_0x873f('0x24')]();};}function saveUpdates(_0xd70b27,_0x4e2826){return function(_0x229a17){if(_0x229a17){return _0x229a17[_0x873f('0x25')](_0xd70b27)[_0x873f('0x26')](function(_0x57e73){return _0x57e73;});}return null;};}function removeEntity(_0x35ab1b,_0x55d40e){return function(_0x23d750){if(_0x23d750){return _0x23d750['destroy']()[_0x873f('0x26')](function(){_0x35ab1b[_0x873f('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbe1815,_0x234b57){return function(_0x55f300){if(!_0x55f300){_0xbe1815[_0x873f('0x1b')](0x194);}return _0x55f300;};}function handleError(_0x182f1d,_0x90a3a2){_0x90a3a2=_0x90a3a2||0x1f4;return function(_0x36fd18){logger['error'](_0x36fd18[_0x873f('0x27')]);if(_0x36fd18['name']){delete _0x36fd18['name'];}_0x182f1d[_0x873f('0x1c')](_0x90a3a2)[_0x873f('0x28')](_0x36fd18);};}exports[_0x873f('0x29')]=function(_0xc6e3b1,_0x46d2f6){var _0x259dbc={},_0x2ba96a={},_0x4fbf09={'count':0x0,'rows':[]};var _0x289a0e=_[_0x873f('0x2a')](db[_0x873f('0x2b')][_0x873f('0x2c')],function(_0x51cecb){return{'name':_0x51cecb['fieldName'],'type':_0x51cecb['type'][_0x873f('0x2d')]};});_0x2ba96a[_0x873f('0x2e')]=_[_0x873f('0x2a')](_0x289a0e,_0x873f('0x2f'));_0x2ba96a[_0x873f('0x30')]=_[_0x873f('0x31')](_0xc6e3b1['query']);_0x2ba96a[_0x873f('0x32')]=_[_0x873f('0x33')](_0x2ba96a[_0x873f('0x2e')],_0x2ba96a[_0x873f('0x30')]);_0x259dbc['attributes']=_[_0x873f('0x33')](_0x2ba96a[_0x873f('0x2e')],qs[_0x873f('0x34')](_0xc6e3b1[_0x873f('0x30')][_0x873f('0x34')]));_0x259dbc[_0x873f('0x35')]=_0x259dbc[_0x873f('0x35')][_0x873f('0x36')]?_0x259dbc[_0x873f('0x35')]:_0x2ba96a[_0x873f('0x2e')];if(!_0xc6e3b1['query'][_0x873f('0x37')](_0x873f('0x38'))){_0x259dbc['limit']=qs[_0x873f('0x39')](_0xc6e3b1[_0x873f('0x30')][_0x873f('0x39')]);_0x259dbc['offset']=qs[_0x873f('0x1e')](_0xc6e3b1[_0x873f('0x30')][_0x873f('0x1e')]);}_0x259dbc[_0x873f('0x3a')]=qs[_0x873f('0x3b')](_0xc6e3b1[_0x873f('0x30')]['sort']);_0x259dbc[_0x873f('0x3c')]=qs[_0x873f('0x32')](_[_0x873f('0x3d')](_0xc6e3b1['query'],_0x2ba96a[_0x873f('0x32')]),_0x289a0e);if(_0xc6e3b1[_0x873f('0x30')][_0x873f('0x3e')]){_0x259dbc[_0x873f('0x3c')]=_[_0x873f('0x3f')](_0x259dbc[_0x873f('0x3c')],{'$or':_['map'](_0x289a0e,function(_0x37e0ad){if(_0x37e0ad['type']!==_0x873f('0x40')){var _0x30e03b={};_0x30e03b[_0x37e0ad[_0x873f('0x2f')]]={'$like':'%'+_0xc6e3b1[_0x873f('0x30')][_0x873f('0x3e')]+'%'};return _0x30e03b;}})});}_0x259dbc=_[_0x873f('0x3f')]({},_0x259dbc,_0xc6e3b1['options']);var _0x32a0f0={'where':_0x259dbc[_0x873f('0x3c')]};return db[_0x873f('0x2b')][_0x873f('0x41')](_0x32a0f0)['then'](function(_0x484a1e){_0x4fbf09[_0x873f('0x41')]=_0x484a1e;if(_0xc6e3b1[_0x873f('0x30')][_0x873f('0x42')]){_0x259dbc['include']=[{'all':!![]}];}return db[_0x873f('0x2b')]['findAll'](_0x259dbc);})[_0x873f('0x26')](function(_0x2cab8c){_0x4fbf09[_0x873f('0x43')]=_0x2cab8c;return _0x4fbf09;})[_0x873f('0x26')](respondWithFilteredResult(_0x46d2f6,_0x259dbc))['catch'](handleError(_0x46d2f6,null));};exports[_0x873f('0x44')]=function(_0x5410c3,_0xb34040){var _0x496ef3={'raw':!![],'where':{'id':_0x5410c3[_0x873f('0x45')]['id']}},_0x1c6b68={};_0x1c6b68[_0x873f('0x2e')]=_['keys'](db[_0x873f('0x2b')][_0x873f('0x2c')]);_0x1c6b68[_0x873f('0x30')]=_[_0x873f('0x31')](_0x5410c3[_0x873f('0x30')]);_0x1c6b68[_0x873f('0x32')]=_[_0x873f('0x33')](_0x1c6b68[_0x873f('0x2e')],_0x1c6b68[_0x873f('0x30')]);_0x496ef3[_0x873f('0x35')]=_[_0x873f('0x33')](_0x1c6b68[_0x873f('0x2e')],qs[_0x873f('0x34')](_0x5410c3[_0x873f('0x30')][_0x873f('0x34')]));_0x496ef3['attributes']=_0x496ef3['attributes'][_0x873f('0x36')]?_0x496ef3[_0x873f('0x35')]:_0x1c6b68[_0x873f('0x2e')];if(_0x5410c3['query'][_0x873f('0x42')]){_0x496ef3[_0x873f('0x46')]=[{'all':!![]}];}_0x496ef3=_[_0x873f('0x3f')]({},_0x496ef3,_0x5410c3['options']);return db['JscriptySessionReport'][_0x873f('0x47')](_0x496ef3)[_0x873f('0x26')](handleEntityNotFound(_0xb34040,null))[_0x873f('0x26')](respondWithResult(_0xb34040,null))[_0x873f('0x48')](handleError(_0xb34040,null));};exports[_0x873f('0x49')]=function(_0x167c1e,_0xb04fa1){return db['JscriptySessionReport']['create'](_0x167c1e[_0x873f('0x4a')],{})['then'](respondWithResult(_0xb04fa1,0xc9))[_0x873f('0x48')](handleError(_0xb04fa1,null));};exports[_0x873f('0x25')]=function(_0x17d7a7,_0x3e9797){if(_0x17d7a7['body']['id']){delete _0x17d7a7[_0x873f('0x4a')]['id'];}return db[_0x873f('0x2b')][_0x873f('0x47')]({'where':{'id':_0x17d7a7[_0x873f('0x45')]['id']}})['then'](handleEntityNotFound(_0x3e9797,null))['then'](saveUpdates(_0x17d7a7[_0x873f('0x4a')],null))['then'](respondWithResult(_0x3e9797,null))[_0x873f('0x48')](handleError(_0x3e9797,null));};exports['destroy']=function(_0x212cb3,_0x44e7aa){return db[_0x873f('0x2b')][_0x873f('0x47')]({'where':{'id':_0x212cb3[_0x873f('0x45')]['id']}})[_0x873f('0x26')](handleEntityNotFound(_0x44e7aa,null))[_0x873f('0x26')](removeEntity(_0x44e7aa,null))[_0x873f('0x48')](handleError(_0x44e7aa,null));};exports[_0x873f('0x4b')]=function(_0x2be6bc,_0x4bc9b2){return db[_0x873f('0x2b')]['describe']()[_0x873f('0x26')](respondWithResult(_0x4bc9b2,null))['catch'](handleError(_0x4bc9b2,null));};exports[_0x873f('0x4c')]=function(_0x163198,_0x139cbd,_0x16dd92){var _0x3411a1={'raw':!![],'where':{}};var _0x59e63d={};var _0x491dff={'count':0x0,'rows':[]};return db[_0x873f('0x2b')][_0x873f('0x4d')]({'where':{'id':_0x163198['params']['id']}})[_0x873f('0x26')](handleEntityNotFound(_0x139cbd,null))[_0x873f('0x26')](function(_0x1e43f3){if(_0x1e43f3){_0x59e63d['model']=_[_0x873f('0x31')](db[_0x873f('0x4e')][_0x873f('0x2c')]);_0x59e63d[_0x873f('0x30')]=_[_0x873f('0x31')](_0x163198[_0x873f('0x30')]);_0x59e63d[_0x873f('0x32')]=_[_0x873f('0x33')](_0x59e63d[_0x873f('0x2e')],_0x59e63d[_0x873f('0x30')]);_0x3411a1['attributes']=_[_0x873f('0x33')](_0x59e63d[_0x873f('0x2e')],qs[_0x873f('0x34')](_0x163198[_0x873f('0x30')][_0x873f('0x34')]));_0x3411a1['attributes']=_0x3411a1[_0x873f('0x35')][_0x873f('0x36')]?_0x3411a1[_0x873f('0x35')]:_0x59e63d[_0x873f('0x2e')];if(!_0x163198[_0x873f('0x30')][_0x873f('0x37')]('nolimit')){_0x3411a1[_0x873f('0x39')]=qs[_0x873f('0x39')](_0x163198['query'][_0x873f('0x39')]);_0x3411a1[_0x873f('0x1e')]=qs[_0x873f('0x1e')](_0x163198[_0x873f('0x30')][_0x873f('0x1e')]);}_0x3411a1[_0x873f('0x3a')]=qs[_0x873f('0x3b')](_0x163198['query']['sort']);_0x3411a1['where']=qs['filters'](_[_0x873f('0x3d')](_0x163198[_0x873f('0x30')],_0x59e63d[_0x873f('0x32')]));_0x3411a1[_0x873f('0x3c')]['SessionId']=_0x1e43f3['id'];if(_0x163198[_0x873f('0x30')][_0x873f('0x3e')]){_0x3411a1[_0x873f('0x3c')]=_['merge'](_0x3411a1[_0x873f('0x3c')],{'$or':_['map'](_0x3411a1['attributes'],function(_0x195367){var _0x23c176={};_0x23c176[_0x195367]={'$like':'%'+_0x163198[_0x873f('0x30')]['filter']+'%'};return _0x23c176;})});}_0x3411a1=_[_0x873f('0x3f')]({},_0x3411a1,_0x163198['options']);return db['JscriptyQuestionReport'][_0x873f('0x41')]({'where':_0x3411a1[_0x873f('0x3c')]})[_0x873f('0x26')](function(_0x2a47bf){_0x491dff[_0x873f('0x41')]=_0x2a47bf;if(_0x163198[_0x873f('0x30')][_0x873f('0x42')]){_0x3411a1[_0x873f('0x46')]=[{'all':!![]}];}return db[_0x873f('0x4e')]['findAll'](_0x3411a1);})[_0x873f('0x26')](function(_0x3805d4){_0x491dff[_0x873f('0x43')]=_0x3805d4;return _0x491dff;});}})[_0x873f('0x26')](respondWithFilteredResult(_0x139cbd,_0x3411a1))[_0x873f('0x48')](handleError(_0x139cbd,null));};
\ No newline at end of file
+var _0xd06c=['describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','SessionId','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','options','JscriptySessionReport','includeAll','include','rows','catch','show','find','create','body','params'];(function(_0x22a39d,_0x53ceaa){var _0x28943c=function(_0x1114b1){while(--_0x1114b1){_0x22a39d['push'](_0x22a39d['shift']());}};_0x28943c(++_0x53ceaa);}(_0xd06c,0xa4));var _0xcd06=function(_0xf25735,_0xf40faf){_0xf25735=_0xf25735-0x0;var _0x1e348a=_0xd06c[_0xf25735];return _0x1e348a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcd06('0x0'));var zipdir=require(_0xcd06('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcd06('0x2'));var moment=require(_0xcd06('0x3'));var BPromise=require(_0xcd06('0x4'));var Mustache=require(_0xcd06('0x5'));var util=require(_0xcd06('0x6'));var path=require(_0xcd06('0x7'));var sox=require(_0xcd06('0x8'));var csv=require(_0xcd06('0x9'));var ejs=require(_0xcd06('0xa'));var fs=require('fs');var fs_extra=require(_0xcd06('0xb'));var _=require(_0xcd06('0xc'));var squel=require(_0xcd06('0xd'));var crypto=require('crypto');var jsforce=require(_0xcd06('0xe'));var deskjs=require(_0xcd06('0xf'));var toCsv=require(_0xcd06('0x9'));var querystring=require('querystring');var Papa=require(_0xcd06('0x10'));var Redis=require(_0xcd06('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xcd06('0x12'));var hardwareService=require(_0xcd06('0x13'));var logger=require('../../config/logger')(_0xcd06('0x14'));var utils=require(_0xcd06('0x15'));var config=require(_0xcd06('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x136d72,_0x39fe6a){_0x39fe6a=_0x39fe6a||0xcc;return function(_0x52d41b){if(_0x52d41b){return _0x136d72[_0xcd06('0x17')](_0x39fe6a);}return _0x136d72[_0xcd06('0x18')](_0x39fe6a)[_0xcd06('0x19')]();};}function respondWithResult(_0x34d8f2,_0x580114){_0x580114=_0x580114||0xc8;return function(_0x47a719){if(_0x47a719){return _0x34d8f2[_0xcd06('0x18')](_0x580114)[_0xcd06('0x1a')](_0x47a719);}};}function respondWithFilteredResult(_0x171418,_0xac196d){return function(_0x5b0932){if(_0x5b0932){var _0x539491=typeof _0xac196d['offset']===_0xcd06('0x1b')&&typeof _0xac196d['limit']===_0xcd06('0x1b');var _0x34b034=_0x5b0932[_0xcd06('0x1c')];var _0x24d0ca=_0x539491?0x0:_0xac196d[_0xcd06('0x1d')];var _0x545b09=_0x539491?_0x5b0932[_0xcd06('0x1c')]:_0xac196d[_0xcd06('0x1d')]+_0xac196d[_0xcd06('0x1e')];var _0x43a8e2;if(_0x545b09>=_0x34b034){_0x545b09=_0x34b034;_0x43a8e2=0xc8;}else{_0x43a8e2=0xce;}_0x171418[_0xcd06('0x18')](_0x43a8e2);return _0x171418[_0xcd06('0x1f')](_0xcd06('0x20'),_0x24d0ca+'-'+_0x545b09+'/'+_0x34b034)[_0xcd06('0x1a')](_0x5b0932);}return null;};}function patchUpdates(_0x56877b){return function(_0x2514bd){try{jsonpatch[_0xcd06('0x21')](_0x2514bd,_0x56877b,!![]);}catch(_0x4f1847){return BPromise[_0xcd06('0x22')](_0x4f1847);}return _0x2514bd[_0xcd06('0x23')]();};}function saveUpdates(_0x46f11f,_0x305ec2){return function(_0x27e2c0){if(_0x27e2c0){return _0x27e2c0[_0xcd06('0x24')](_0x46f11f)[_0xcd06('0x25')](function(_0x469d40){return _0x469d40;});}return null;};}function removeEntity(_0x299bcd,_0x3ea8f1){return function(_0x44ace3){if(_0x44ace3){return _0x44ace3[_0xcd06('0x26')]()[_0xcd06('0x25')](function(){_0x299bcd[_0xcd06('0x18')](0xcc)[_0xcd06('0x19')]();});}};}function handleEntityNotFound(_0x51dc6c,_0x4bf47c){return function(_0x41c037){if(!_0x41c037){_0x51dc6c['sendStatus'](0x194);}return _0x41c037;};}function handleError(_0x225cf1,_0x385bd4){_0x385bd4=_0x385bd4||0x1f4;return function(_0x5c1b49){logger['error'](_0x5c1b49[_0xcd06('0x27')]);if(_0x5c1b49[_0xcd06('0x28')]){delete _0x5c1b49['name'];}_0x225cf1[_0xcd06('0x18')](_0x385bd4)[_0xcd06('0x29')](_0x5c1b49);};}exports[_0xcd06('0x2a')]=function(_0x5b899d,_0x4177c7){var _0x37ad20={},_0x4fc2bb={},_0x560080={'count':0x0,'rows':[]};var _0x2997a0=_[_0xcd06('0x2b')](db['JscriptySessionReport'][_0xcd06('0x2c')],function(_0x2f273e){return{'name':_0x2f273e[_0xcd06('0x2d')],'type':_0x2f273e[_0xcd06('0x2e')]['key']};});_0x4fc2bb[_0xcd06('0x2f')]=_[_0xcd06('0x2b')](_0x2997a0,'name');_0x4fc2bb[_0xcd06('0x30')]=_[_0xcd06('0x31')](_0x5b899d[_0xcd06('0x30')]);_0x4fc2bb[_0xcd06('0x32')]=_[_0xcd06('0x33')](_0x4fc2bb['model'],_0x4fc2bb[_0xcd06('0x30')]);_0x37ad20[_0xcd06('0x34')]=_['intersection'](_0x4fc2bb[_0xcd06('0x2f')],qs[_0xcd06('0x35')](_0x5b899d[_0xcd06('0x30')][_0xcd06('0x35')]));_0x37ad20[_0xcd06('0x34')]=_0x37ad20[_0xcd06('0x34')][_0xcd06('0x36')]?_0x37ad20[_0xcd06('0x34')]:_0x4fc2bb[_0xcd06('0x2f')];if(!_0x5b899d[_0xcd06('0x30')]['hasOwnProperty'](_0xcd06('0x37'))){_0x37ad20[_0xcd06('0x1e')]=qs[_0xcd06('0x1e')](_0x5b899d[_0xcd06('0x30')][_0xcd06('0x1e')]);_0x37ad20['offset']=qs[_0xcd06('0x1d')](_0x5b899d[_0xcd06('0x30')][_0xcd06('0x1d')]);}_0x37ad20[_0xcd06('0x38')]=qs[_0xcd06('0x39')](_0x5b899d['query']['sort']);_0x37ad20['where']=qs['filters'](_[_0xcd06('0x3a')](_0x5b899d['query'],_0x4fc2bb[_0xcd06('0x32')]),_0x2997a0);if(_0x5b899d[_0xcd06('0x30')][_0xcd06('0x3b')]){_0x37ad20[_0xcd06('0x3c')]=_[_0xcd06('0x3d')](_0x37ad20[_0xcd06('0x3c')],{'$or':_[_0xcd06('0x2b')](_0x2997a0,function(_0x2287e9){if(_0x2287e9[_0xcd06('0x2e')]!=='VIRTUAL'){var _0xb97451={};_0xb97451[_0x2287e9[_0xcd06('0x28')]]={'$like':'%'+_0x5b899d[_0xcd06('0x30')][_0xcd06('0x3b')]+'%'};return _0xb97451;}})});}_0x37ad20=_['merge']({},_0x37ad20,_0x5b899d[_0xcd06('0x3e')]);var _0x2c25f1={'where':_0x37ad20[_0xcd06('0x3c')]};return db[_0xcd06('0x3f')]['count'](_0x2c25f1)[_0xcd06('0x25')](function(_0x2c18b1){_0x560080[_0xcd06('0x1c')]=_0x2c18b1;if(_0x5b899d[_0xcd06('0x30')][_0xcd06('0x40')]){_0x37ad20[_0xcd06('0x41')]=[{'all':!![]}];}return db[_0xcd06('0x3f')]['findAll'](_0x37ad20);})['then'](function(_0x533845){_0x560080[_0xcd06('0x42')]=_0x533845;return _0x560080;})[_0xcd06('0x25')](respondWithFilteredResult(_0x4177c7,_0x37ad20))[_0xcd06('0x43')](handleError(_0x4177c7,null));};exports[_0xcd06('0x44')]=function(_0x1716e1,_0x5280a7){var _0x30189f={'raw':!![],'where':{'id':_0x1716e1['params']['id']}},_0x2bf68f={};_0x2bf68f[_0xcd06('0x2f')]=_['keys'](db[_0xcd06('0x3f')][_0xcd06('0x2c')]);_0x2bf68f[_0xcd06('0x30')]=_[_0xcd06('0x31')](_0x1716e1[_0xcd06('0x30')]);_0x2bf68f['filters']=_[_0xcd06('0x33')](_0x2bf68f[_0xcd06('0x2f')],_0x2bf68f['query']);_0x30189f[_0xcd06('0x34')]=_[_0xcd06('0x33')](_0x2bf68f[_0xcd06('0x2f')],qs[_0xcd06('0x35')](_0x1716e1[_0xcd06('0x30')][_0xcd06('0x35')]));_0x30189f[_0xcd06('0x34')]=_0x30189f[_0xcd06('0x34')]['length']?_0x30189f[_0xcd06('0x34')]:_0x2bf68f[_0xcd06('0x2f')];if(_0x1716e1[_0xcd06('0x30')][_0xcd06('0x40')]){_0x30189f[_0xcd06('0x41')]=[{'all':!![]}];}_0x30189f=_[_0xcd06('0x3d')]({},_0x30189f,_0x1716e1[_0xcd06('0x3e')]);return db['JscriptySessionReport'][_0xcd06('0x45')](_0x30189f)[_0xcd06('0x25')](handleEntityNotFound(_0x5280a7,null))[_0xcd06('0x25')](respondWithResult(_0x5280a7,null))[_0xcd06('0x43')](handleError(_0x5280a7,null));};exports[_0xcd06('0x46')]=function(_0x45a022,_0x50c760){return db[_0xcd06('0x3f')][_0xcd06('0x46')](_0x45a022[_0xcd06('0x47')],{})[_0xcd06('0x25')](respondWithResult(_0x50c760,0xc9))['catch'](handleError(_0x50c760,null));};exports[_0xcd06('0x24')]=function(_0xc51a9b,_0x3927d9){if(_0xc51a9b[_0xcd06('0x47')]['id']){delete _0xc51a9b[_0xcd06('0x47')]['id'];}return db[_0xcd06('0x3f')]['find']({'where':{'id':_0xc51a9b['params']['id']}})['then'](handleEntityNotFound(_0x3927d9,null))['then'](saveUpdates(_0xc51a9b['body'],null))[_0xcd06('0x25')](respondWithResult(_0x3927d9,null))[_0xcd06('0x43')](handleError(_0x3927d9,null));};exports[_0xcd06('0x26')]=function(_0xcf5106,_0x55292f){return db[_0xcd06('0x3f')][_0xcd06('0x45')]({'where':{'id':_0xcf5106[_0xcd06('0x48')]['id']}})[_0xcd06('0x25')](handleEntityNotFound(_0x55292f,null))[_0xcd06('0x25')](removeEntity(_0x55292f,null))['catch'](handleError(_0x55292f,null));};exports[_0xcd06('0x49')]=function(_0x590832,_0x1a58c0){return db[_0xcd06('0x3f')]['describe']()[_0xcd06('0x25')](respondWithResult(_0x1a58c0,null))['catch'](handleError(_0x1a58c0,null));};exports[_0xcd06('0x4a')]=function(_0x2574df,_0x3bd751,_0x3079c5){var _0x1eb9b2={'raw':!![],'where':{}};var _0x3b55b6={};var _0x4c552b={'count':0x0,'rows':[]};return db[_0xcd06('0x3f')][_0xcd06('0x4b')]({'where':{'id':_0x2574df[_0xcd06('0x48')]['id']}})[_0xcd06('0x25')](handleEntityNotFound(_0x3bd751,null))[_0xcd06('0x25')](function(_0x436e55){if(_0x436e55){_0x3b55b6[_0xcd06('0x2f')]=_[_0xcd06('0x31')](db[_0xcd06('0x4c')][_0xcd06('0x2c')]);_0x3b55b6[_0xcd06('0x30')]=_[_0xcd06('0x31')](_0x2574df[_0xcd06('0x30')]);_0x3b55b6[_0xcd06('0x32')]=_['intersection'](_0x3b55b6[_0xcd06('0x2f')],_0x3b55b6[_0xcd06('0x30')]);_0x1eb9b2['attributes']=_['intersection'](_0x3b55b6[_0xcd06('0x2f')],qs['fields'](_0x2574df['query']['fields']));_0x1eb9b2['attributes']=_0x1eb9b2[_0xcd06('0x34')][_0xcd06('0x36')]?_0x1eb9b2[_0xcd06('0x34')]:_0x3b55b6[_0xcd06('0x2f')];if(!_0x2574df['query'][_0xcd06('0x4d')]('nolimit')){_0x1eb9b2['limit']=qs['limit'](_0x2574df[_0xcd06('0x30')][_0xcd06('0x1e')]);_0x1eb9b2[_0xcd06('0x1d')]=qs['offset'](_0x2574df[_0xcd06('0x30')]['offset']);}_0x1eb9b2['order']=qs['sort'](_0x2574df[_0xcd06('0x30')]['sort']);_0x1eb9b2[_0xcd06('0x3c')]=qs[_0xcd06('0x32')](_[_0xcd06('0x3a')](_0x2574df['query'],_0x3b55b6['filters']));_0x1eb9b2['where'][_0xcd06('0x4e')]=_0x436e55['id'];if(_0x2574df['query'][_0xcd06('0x3b')]){_0x1eb9b2[_0xcd06('0x3c')]=_[_0xcd06('0x3d')](_0x1eb9b2[_0xcd06('0x3c')],{'$or':_[_0xcd06('0x2b')](_0x1eb9b2['attributes'],function(_0x1c2f1f){var _0x227f7a={};_0x227f7a[_0x1c2f1f]={'$like':'%'+_0x2574df[_0xcd06('0x30')]['filter']+'%'};return _0x227f7a;})});}_0x1eb9b2=_[_0xcd06('0x3d')]({},_0x1eb9b2,_0x2574df['options']);return db[_0xcd06('0x4c')][_0xcd06('0x1c')]({'where':_0x1eb9b2['where']})[_0xcd06('0x25')](function(_0x15242d){_0x4c552b[_0xcd06('0x1c')]=_0x15242d;if(_0x2574df[_0xcd06('0x30')][_0xcd06('0x40')]){_0x1eb9b2[_0xcd06('0x41')]=[{'all':!![]}];}return db[_0xcd06('0x4c')]['findAll'](_0x1eb9b2);})[_0xcd06('0x25')](function(_0x80abe4){_0x4c552b[_0xcd06('0x42')]=_0x80abe4;return _0x4c552b;});}})[_0xcd06('0x25')](respondWithFilteredResult(_0x3bd751,_0x1eb9b2))['catch'](handleError(_0x3bd751,null));};
\ No newline at end of file
index 25d72a9..b360777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5ed082,_0x12c0ef){var _0x1423a9=function(_0x39c976){while(--_0x39c976){_0x5ed082['push'](_0x5ed082['shift']());}};_0x1423a9(++_0x12c0ef);}(_0x1883,0xab));var _0x3188=function(_0x2ed95a,_0x42d3ab){_0x2ed95a=_0x2ed95a-0x0;var _0x36dc98=_0x1883[_0x2ed95a];return _0x36dc98;};'use strict';var _=require(_0x3188('0x0'));var util=require(_0x3188('0x1'));var logger=require(_0x3188('0x2'))(_0x3188('0x3'));var moment=require(_0x3188('0x4'));var BPromise=require(_0x3188('0x5'));var rp=require(_0x3188('0x6'));var fs=require('fs');var path=require(_0x3188('0x7'));var rimraf=require(_0x3188('0x8'));var config=require(_0x3188('0x9'));var attributes=require(_0x3188('0xa'));module[_0x3188('0xb')]=function(_0x408ae0,_0x33b62d){return _0x408ae0[_0x3188('0xc')](_0x3188('0xd'),attributes,{'tableName':_0x3188('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4fb4=['./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x4fb4,0x190));var _0x44fb=function(_0x1e4790,_0x4df44a){_0x1e4790=_0x1e4790-0x0;var _0x5aa021=_0x4fb4[_0x1e4790];return _0x5aa021;};'use strict';var _=require('lodash');var util=require(_0x44fb('0x0'));var logger=require(_0x44fb('0x1'))(_0x44fb('0x2'));var moment=require(_0x44fb('0x3'));var BPromise=require(_0x44fb('0x4'));var rp=require(_0x44fb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x44fb('0x6'));var config=require(_0x44fb('0x7'));var attributes=require(_0x44fb('0x8'));module[_0x44fb('0x9')]=function(_0x375d33,_0x173e70){return _0x375d33[_0x44fb('0xa')](_0x44fb('0xb'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a05f9a1..f238f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x583c=['../../config/environment','client','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0x583c,0x12b));var _0xc583=function(_0x5a4400,_0xfae3b6){_0x5a4400=_0x5a4400-0x0;var _0xf9b532=_0x583c[_0x5a4400];return _0xf9b532;};'use strict';var _=require(_0xc583('0x0'));var util=require(_0xc583('0x1'));var moment=require(_0xc583('0x2'));var BPromise=require(_0xc583('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc583('0x4'));var db=require(_0xc583('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc583('0x6'));var config=require(_0xc583('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc583('0x8')][_0xc583('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2719df,_0x1dd37c,_0x48a8d4){return new BPromise(function(_0x21ed88,_0x26cec0){return client['request'](_0x2719df,_0x48a8d4)[_0xc583('0xa')](function(_0x24ab4f){logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,_0xc583('0xd'));logger['debug'](_0xc583('0xe'),_0x1dd37c,_0xc583('0xd'),JSON['stringify'](_0x24ab4f));if(_0x24ab4f[_0xc583('0xf')]){if(_0x24ab4f[_0xc583('0xf')]['code']===0x1f4){logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);return _0x26cec0(_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);}logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')]['message']);return _0x21ed88(_0x24ab4f[_0xc583('0xf')]['message']);}else{logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,'request\x20sent');_0x21ed88(_0x24ab4f[_0xc583('0x11')][_0xc583('0x10')]);}})['catch'](function(_0x7d1690){logger[_0xc583('0xf')]('JscriptySessionReport,\x20%s,\x20%s',_0x1dd37c,_0x7d1690);_0x26cec0(_0x7d1690);});});}
\ No newline at end of file
+var _0x1967=['then','info','JscriptySessionReport,\x20%s,\x20%s','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0x1967,0x173));var _0x7196=function(_0x4e1017,_0x4c4e23){_0x4e1017=_0x4e1017-0x0;var _0x29bce6=_0x1967[_0x4e1017];return _0x29bce6;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));var BPromise=require(_0x7196('0x2'));var rs=require(_0x7196('0x3'));var fs=require('fs');var Redis=require(_0x7196('0x4'));var db=require(_0x7196('0x5'))['db'];var utils=require(_0x7196('0x6'));var logger=require(_0x7196('0x7'))(_0x7196('0x8'));var config=require(_0x7196('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7196('0xa')][_0x7196('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x194746,_0x40e0af,_0x266a6e){return new BPromise(function(_0xad78a,_0x510c72){return client[_0x7196('0xc')](_0x194746,_0x266a6e)[_0x7196('0xd')](function(_0x3f846e){logger[_0x7196('0xe')](_0x7196('0xf'),_0x40e0af,'request\x20sent');logger['debug'](_0x7196('0x10'),_0x40e0af,_0x7196('0x11'),JSON[_0x7196('0x12')](_0x3f846e));if(_0x3f846e[_0x7196('0x13')]){if(_0x3f846e[_0x7196('0x13')][_0x7196('0x14')]===0x1f4){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0x510c72(_0x3f846e[_0x7196('0x13')]['message']);}logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0xad78a(_0x3f846e['error'][_0x7196('0x15')]);}else{logger['info'](_0x7196('0xf'),_0x40e0af,_0x7196('0x11'));_0xad78a(_0x3f846e[_0x7196('0x16')][_0x7196('0x15')]);}})[_0x7196('0x17')](function(_0x2e3e0e){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x2e3e0e);_0x510c72(_0x2e3e0e);});});}
\ No newline at end of file
index cb2b6ec..30d98a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac21=['update','exports','util','path','express','fs-extra','../../components/auth/service','../../config/environment','get','index','put','/:id','isAuthenticated'];(function(_0x4ceef0,_0x443a94){var _0x31e493=function(_0x3104e5){while(--_0x3104e5){_0x4ceef0['push'](_0x4ceef0['shift']());}};_0x31e493(++_0x443a94);}(_0xac21,0x1af));var _0x1ac2=function(_0x1b0f81,_0x2ad076){_0x1b0f81=_0x1b0f81-0x0;var _0x30feb1=_0xac21[_0x1b0f81];return _0x30feb1;};'use strict';var multer=require('multer');var util=require(_0x1ac2('0x0'));var path=require(_0x1ac2('0x1'));var timeout=require('connect-timeout');var express=require(_0x1ac2('0x2'));var router=express['Router']();var fs_extra=require(_0x1ac2('0x3'));var auth=require(_0x1ac2('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1ac2('0x5'));var controller=require('./license.controller');router[_0x1ac2('0x6')]('/',controller[_0x1ac2('0x7')]);router[_0x1ac2('0x8')](_0x1ac2('0x9'),auth[_0x1ac2('0xa')](),controller[_0x1ac2('0xb')]);module[_0x1ac2('0xc')]=router;
\ No newline at end of file
+var _0xc492=['../../config/environment','get','put','/:id','update','exports','multer','util','path','Router','../../components/interaction/service'];(function(_0x35823a,_0x53e5ce){var _0x2b7474=function(_0x3ee752){while(--_0x3ee752){_0x35823a['push'](_0x35823a['shift']());}};_0x2b7474(++_0x53e5ce);}(_0xc492,0xd7));var _0x2c49=function(_0x133406,_0x9470f7){_0x133406=_0x133406-0x0;var _0x513ac2=_0xc492[_0x133406];return _0x513ac2;};'use strict';var multer=require(_0x2c49('0x0'));var util=require(_0x2c49('0x1'));var path=require(_0x2c49('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2c49('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2c49('0x4'));var config=require(_0x2c49('0x5'));var controller=require('./license.controller');router[_0x2c49('0x6')]('/',controller['index']);router[_0x2c49('0x7')](_0x2c49('0x8'),auth['isAuthenticated'](),controller[_0x2c49('0x9')]);module[_0x2c49('0xa')]=router;
\ No newline at end of file
index 749426b..a6043f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9f9=['exports','TEXT','STRING','INTEGER'];(function(_0x59c181,_0x325c6a){var _0xfc2111=function(_0xfb1543){while(--_0xfb1543){_0x59c181['push'](_0x59c181['shift']());}};_0xfc2111(++_0x325c6a);}(_0xf9f9,0x1d8));var _0x9f9f=function(_0x444f33,_0x3c0ce6){_0x444f33=_0x444f33-0x0;var _0x30d063=_0xf9f9[_0x444f33];return _0x30d063;};'use strict';var Sequelize=require('sequelize');module[_0x9f9f('0x0')]={'license':{'type':Sequelize[_0x9f9f('0x1')]},'data1':{'type':Sequelize[_0x9f9f('0x2')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0x9f9f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x17ca=['INTEGER','sequelize','exports','TEXT','STRING'];(function(_0x334622,_0x582651){var _0x29a2a9=function(_0x1324c0){while(--_0x1324c0){_0x334622['push'](_0x334622['shift']());}};_0x29a2a9(++_0x582651);}(_0x17ca,0x1d7));var _0xa17c=function(_0x57c632,_0xb53151){_0x57c632=_0x57c632-0x0;var _0x51ba12=_0x17ca[_0x57c632];return _0x51ba12;};'use strict';var Sequelize=require(_0xa17c('0x0'));module[_0xa17c('0x1')]={'license':{'type':Sequelize[_0xa17c('0x2')]},'data1':{'type':Sequelize[_0xa17c('0x3')]},'data2':{'type':Sequelize[_0xa17c('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xa17c('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 7d5e39b..e583e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['length','options','then','catch','body','params','get','checkLicense','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','index','model','keys','rawAttributes','query','filters','intersection','attributes','fields'];(function(_0x396310,_0x2e2c0a){var _0x3dfd1e=function(_0x546c3a){while(--_0x546c3a){_0x396310['push'](_0x396310['shift']());}};_0x3dfd1e(++_0x2e2c0a);}(_0x2ef3,0xba));var _0x32ef=function(_0xf00690,_0x256ff8){_0xf00690=_0xf00690-0x0;var _0x2f8f20=_0x2ef3[_0xf00690];return _0x2f8f20;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}var utilLicense=require('../../config/license/util');exports[_0x32ef('0x29')]=function(_0x2f5d06,_0x5a04cd){var _0x12de1a={'raw':!![],'where':{'id':0x1}},_0x3c569d={};_0x3c569d[_0x32ef('0x2a')]=_[_0x32ef('0x2b')](db['License'][_0x32ef('0x2c')]);_0x3c569d[_0x32ef('0x2d')]=_[_0x32ef('0x2b')](_0x2f5d06[_0x32ef('0x2d')]);_0x3c569d[_0x32ef('0x2e')]=_[_0x32ef('0x2f')](_0x3c569d[_0x32ef('0x2a')],_0x3c569d['query']);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x3c569d[_0x32ef('0x2a')],qs[_0x32ef('0x31')](_0x2f5d06['query'][_0x32ef('0x31')]));_0x12de1a[_0x32ef('0x30')]=_0x12de1a[_0x32ef('0x30')][_0x32ef('0x32')]?_0x12de1a[_0x32ef('0x30')]:_0x3c569d['model'];_0x12de1a=_['merge']({},_0x12de1a,_0x2f5d06[_0x32ef('0x33')]);return utilLicense['getLicense'](_0x12de1a)[_0x32ef('0x34')](respondWithResult(_0x5a04cd,null))[_0x32ef('0x35')](handleError(_0x5a04cd,null));};exports[_0x32ef('0x24')]=function(_0x390670,_0x389583){if(_0x390670[_0x32ef('0x36')]['id']){delete _0x390670['body']['id'];}return db['License']['find']({'where':{'id':_0x390670[_0x32ef('0x37')]['id']}})[_0x32ef('0x34')](handleEntityNotFound(_0x389583,null))[_0x32ef('0x34')](function(_0x5f2443){var _0x4fb402=_0x5f2443[_0x32ef('0x38')]({'plain':!![]});return utilLicense[_0x32ef('0x39')](_0x4fb402,_0x390670[_0x32ef('0x36')]['key']);})['then'](function(_0xcbdec8){if(!_0xcbdec8[_0x32ef('0x3a')]){return saveUpdates(_0x390670[_0x32ef('0x36')],null);}return _0xcbdec8;})[_0x32ef('0x34')](respondWithResult(_0x389583,null))[_0x32ef('0x35')](handleError(_0x389583,null));};
\ No newline at end of file
+var _0xabce=['status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','model','keys','License','rawAttributes','query','intersection','attributes','fields','merge','getLicense','catch','find','get','body','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x9f3654,_0x4e8d82){var _0x20cbef=function(_0x5ec00a){while(--_0x5ec00a){_0x9f3654['push'](_0x9f3654['shift']());}};_0x20cbef(++_0x4e8d82);}(_0xabce,0x103));var _0xeabc=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xabce[_0x47b58b];return _0x46bebe;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}var utilLicense=require(_0xeabc('0x18'));exports['index']=function(_0x2163e6,_0x38572d){var _0x2b568f={'raw':!![],'where':{'id':0x1}},_0x2f8633={};_0x2f8633[_0xeabc('0x2a')]=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x2f8633[_0xeabc('0x2e')]=_['keys'](_0x2163e6[_0xeabc('0x2e')]);_0x2f8633['filters']=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],_0x2f8633[_0xeabc('0x2e')]);_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],qs[_0xeabc('0x31')](_0x2163e6['query'][_0xeabc('0x31')]));_0x2b568f[_0xeabc('0x30')]=_0x2b568f[_0xeabc('0x30')]['length']?_0x2b568f[_0xeabc('0x30')]:_0x2f8633[_0xeabc('0x2a')];_0x2b568f=_[_0xeabc('0x32')]({},_0x2b568f,_0x2163e6['options']);return utilLicense[_0xeabc('0x33')](_0x2b568f)[_0xeabc('0x25')](respondWithResult(_0x38572d,null))[_0xeabc('0x34')](handleError(_0x38572d,null));};exports['update']=function(_0xf98c7c,_0x286203){if(_0xf98c7c['body']['id']){delete _0xf98c7c['body']['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x35')]({'where':{'id':_0xf98c7c['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x286203,null))[_0xeabc('0x25')](function(_0x3edee7){var _0x10434e=_0x3edee7[_0xeabc('0x36')]({'plain':!![]});return utilLicense['checkLicense'](_0x10434e,_0xf98c7c[_0xeabc('0x37')]['key']);})[_0xeabc('0x25')](function(_0x2bda29){if(!_0x2bda29[_0xeabc('0x38')]){return saveUpdates(_0xf98c7c['body'],null);}return _0x2bda29;})['then'](respondWithResult(_0x286203,null))[_0xeabc('0x34')](handleError(_0x286203,null));};
\ No newline at end of file
index 1e3cab9..be6e8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7deb=['moment','bluebird','request-promise','rimraf','../../config/environment','License','license','lodash','util'];(function(_0x4877f1,_0x3a2e73){var _0x46f1ac=function(_0x35ee0a){while(--_0x35ee0a){_0x4877f1['push'](_0x4877f1['shift']());}};_0x46f1ac(++_0x3a2e73);}(_0x7deb,0x97));var _0xb7de=function(_0x1f5887,_0x2fa1f1){_0x1f5887=_0x1f5887-0x0;var _0x21774b=_0x7deb[_0x1f5887];return _0x21774b;};'use strict';var _=require(_0xb7de('0x0'));var util=require(_0xb7de('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xb7de('0x2'));var BPromise=require(_0xb7de('0x3'));var rp=require(_0xb7de('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb7de('0x5'));var config=require(_0xb7de('0x6'));var attributes=require('./license.attributes');module['exports']=function(_0x337d70,_0x51190d){return _0x337d70['define'](_0xb7de('0x7'),attributes,{'tableName':_0xb7de('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf96b=['bluebird','request-promise','path','rimraf','../../config/environment','./license.attributes','exports','define','License','license','lodash','util','../../config/logger','api','moment'];(function(_0x28e2cd,_0x153b42){var _0x11fd46=function(_0x50df13){while(--_0x50df13){_0x28e2cd['push'](_0x28e2cd['shift']());}};_0x11fd46(++_0x153b42);}(_0xf96b,0x109));var _0xbf96=function(_0x544069,_0x46977c){_0x544069=_0x544069-0x0;var _0x3830b9=_0xf96b[_0x544069];return _0x3830b9;};'use strict';var _=require(_0xbf96('0x0'));var util=require(_0xbf96('0x1'));var logger=require(_0xbf96('0x2'))(_0xbf96('0x3'));var moment=require(_0xbf96('0x4'));var BPromise=require(_0xbf96('0x5'));var rp=require(_0xbf96('0x6'));var fs=require('fs');var path=require(_0xbf96('0x7'));var rimraf=require(_0xbf96('0x8'));var config=require(_0xbf96('0x9'));var attributes=require(_0xbf96('0xa'));module[_0xbf96('0xb')]=function(_0x162c19,_0x4de1c3){return _0x162c19[_0xbf96('0xc')](_0xbf96('0xd'),attributes,{'tableName':_0xbf96('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 075fb52..100c71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd751=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','request\x20sent','License,\x20%s,\x20%s,\x20%s','stringify','error','code','License,\x20%s,\x20%s','message','result','catch','lodash','util'];(function(_0x15797a,_0x16274f){var _0x3e2618=function(_0x2b6e99){while(--_0x2b6e99){_0x15797a['push'](_0x15797a['shift']());}};_0x3e2618(++_0x16274f);}(_0xd751,0x140));var _0x1d75=function(_0x3e308c,_0x4691cb){_0x3e308c=_0x3e308c-0x0;var _0x651441=_0xd751[_0x3e308c];return _0x651441;};'use strict';var _=require(_0x1d75('0x0'));var util=require(_0x1d75('0x1'));var moment=require(_0x1d75('0x2'));var BPromise=require(_0x1d75('0x3'));var rs=require(_0x1d75('0x4'));var fs=require('fs');var Redis=require(_0x1d75('0x5'));var db=require(_0x1d75('0x6'))['db'];var utils=require(_0x1d75('0x7'));var logger=require('../../config/logger')(_0x1d75('0x8'));var config=require('../../config/environment');var jayson=require(_0x1d75('0x9'));var client=jayson['client'][_0x1d75('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3793a8,_0x526658,_0x10e16d){return new BPromise(function(_0x324454,_0x2c8dfd){return client[_0x1d75('0xb')](_0x3793a8,_0x10e16d)[_0x1d75('0xc')](function(_0xd4c5c0){logger[_0x1d75('0xd')]('License,\x20%s,\x20%s',_0x526658,_0x1d75('0xe'));logger['debug'](_0x1d75('0xf'),_0x526658,_0x1d75('0xe'),JSON[_0x1d75('0x10')](_0xd4c5c0));if(_0xd4c5c0[_0x1d75('0x11')]){if(_0xd4c5c0[_0x1d75('0x11')][_0x1d75('0x12')]===0x1f4){logger['error'](_0x1d75('0x13'),_0x526658,_0xd4c5c0[_0x1d75('0x11')][_0x1d75('0x14')]);return _0x2c8dfd(_0xd4c5c0[_0x1d75('0x11')][_0x1d75('0x14')]);}logger[_0x1d75('0x11')](_0x1d75('0x13'),_0x526658,_0xd4c5c0[_0x1d75('0x11')][_0x1d75('0x14')]);return _0x324454(_0xd4c5c0[_0x1d75('0x11')]['message']);}else{logger[_0x1d75('0xd')](_0x1d75('0x13'),_0x526658,_0x1d75('0xe'));_0x324454(_0xd4c5c0[_0x1d75('0x15')][_0x1d75('0x14')]);}})[_0x1d75('0x16')](function(_0x1038a4){logger[_0x1d75('0x11')](_0x1d75('0x13'),_0x526658,_0x1038a4);_0x2c8dfd(_0x1038a4);});});}
\ No newline at end of file
+var _0xa49d=['error','code','message','License,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1577d5,_0x459e81){var _0x45c557=function(_0x2d5a55){while(--_0x2d5a55){_0x1577d5['push'](_0x1577d5['shift']());}};_0x45c557(++_0x459e81);}(_0xa49d,0x164));var _0xda49=function(_0x455e65,_0xbd023f){_0x455e65=_0x455e65-0x0;var _0x57947a=_0xa49d[_0x455e65];return _0x57947a;};'use strict';var _=require(_0xda49('0x0'));var util=require('util');var moment=require(_0xda49('0x1'));var BPromise=require(_0xda49('0x2'));var rs=require(_0xda49('0x3'));var fs=require('fs');var Redis=require(_0xda49('0x4'));var db=require(_0xda49('0x5'))['db'];var utils=require(_0xda49('0x6'));var logger=require(_0xda49('0x7'))(_0xda49('0x8'));var config=require(_0xda49('0x9'));var jayson=require(_0xda49('0xa'));var client=jayson[_0xda49('0xb')][_0xda49('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5eff42,_0x219683,_0x28fff4){return new BPromise(function(_0xfbf003,_0x3d35f0){return client[_0xda49('0xd')](_0x5eff42,_0x28fff4)['then'](function(_0x499bc4){logger[_0xda49('0xe')]('License,\x20%s,\x20%s',_0x219683,_0xda49('0xf'));logger[_0xda49('0x10')](_0xda49('0x11'),_0x219683,'request\x20sent',JSON[_0xda49('0x12')](_0x499bc4));if(_0x499bc4[_0xda49('0x13')]){if(_0x499bc4[_0xda49('0x13')][_0xda49('0x14')]===0x1f4){logger[_0xda49('0x13')]('License,\x20%s,\x20%s',_0x219683,_0x499bc4[_0xda49('0x13')][_0xda49('0x15')]);return _0x3d35f0(_0x499bc4[_0xda49('0x13')][_0xda49('0x15')]);}logger[_0xda49('0x13')](_0xda49('0x16'),_0x219683,_0x499bc4[_0xda49('0x13')][_0xda49('0x15')]);return _0xfbf003(_0x499bc4[_0xda49('0x13')][_0xda49('0x15')]);}else{logger[_0xda49('0xe')](_0xda49('0x16'),_0x219683,_0xda49('0xf'));_0xfbf003(_0x499bc4[_0xda49('0x17')]['message']);}})[_0xda49('0x18')](function(_0x1d9c45){logger['error'](_0xda49('0x16'),_0x219683,_0x1d9c45);_0x3d35f0(_0x1d9c45);});});}
\ No newline at end of file
index c6b1602..4a201c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7351=['/:id/verify','/:id/users','getAgents','addDisposition','post','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeAnswers','/:id/in_servers','removeImap','removeSmtp','destroy','removeAgents','util','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','isAuthenticated','index','get','/describe','describe','show','/:id/dispositions','/:id/canned_answers','getAnswers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages'];(function(_0x3699b8,_0x1b8855){var _0x3c7502=function(_0x441367){while(--_0x441367){_0x3699b8['push'](_0x3699b8['shift']());}};_0x3c7502(++_0x1b8855);}(_0x7351,0x1ab));var _0x1735=function(_0x4e272a,_0x4af758){_0x4e272a=_0x4e272a-0x0;var _0x103570=_0x7351[_0x4e272a];return _0x103570;};'use strict';var multer=require('multer');var util=require(_0x1735('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1735('0x1'));var auth=require(_0x1735('0x2'));var interaction=require(_0x1735('0x3'));var config=require(_0x1735('0x4'));var controller=require(_0x1735('0x5'));router['get']('/',auth[_0x1735('0x6')](),controller[_0x1735('0x7')]);router[_0x1735('0x8')](_0x1735('0x9'),auth[_0x1735('0x6')](),controller[_0x1735('0xa')]);router[_0x1735('0x8')]('/:id',auth[_0x1735('0x6')](),controller[_0x1735('0xb')]);router[_0x1735('0x8')](_0x1735('0xc'),auth[_0x1735('0x6')](),controller['getDispositions']);router[_0x1735('0x8')](_0x1735('0xd'),auth[_0x1735('0x6')](),controller[_0x1735('0xe')]);router[_0x1735('0x8')]('/:id/in_servers',auth['isAuthenticated'](),controller[_0x1735('0xf')]);router[_0x1735('0x8')](_0x1735('0x10'),auth[_0x1735('0x6')](),controller[_0x1735('0x11')]);router[_0x1735('0x8')](_0x1735('0x12'),auth['isAuthenticated'](),controller[_0x1735('0x13')]);router[_0x1735('0x8')](_0x1735('0x14'),auth[_0x1735('0x6')](),controller[_0x1735('0x15')]);router['get'](_0x1735('0x16'),auth['isAuthenticated'](),controller['getMessages']);router[_0x1735('0x8')](_0x1735('0x17'),auth[_0x1735('0x6')](),controller['verifySmtp']);router[_0x1735('0x8')](_0x1735('0x18'),auth[_0x1735('0x6')](),controller[_0x1735('0x19')]);router['post'](_0x1735('0xc'),auth['isAuthenticated'](),controller[_0x1735('0x1a')]);router[_0x1735('0x1b')](_0x1735('0xd'),auth[_0x1735('0x6')](),controller['addAnswer']);router[_0x1735('0x1b')]('/',auth[_0x1735('0x6')](),controller['create']);router[_0x1735('0x1b')]('/:id/in_servers',auth[_0x1735('0x6')](),controller[_0x1735('0x1c')]);router['post'](_0x1735('0x10'),auth['isAuthenticated'](),controller[_0x1735('0x1d')]);router[_0x1735('0x1b')](_0x1735('0x12'),auth[_0x1735('0x6')](),controller[_0x1735('0x1e')]);router[_0x1735('0x1b')](_0x1735('0x14'),auth[_0x1735('0x6')](),controller[_0x1735('0x1f')]);router[_0x1735('0x1b')](_0x1735('0x20'),auth['isAuthenticated'](),controller[_0x1735('0x21')]);router[_0x1735('0x1b')](_0x1735('0x18'),auth['isAuthenticated'](),controller[_0x1735('0x22')]);router[_0x1735('0x23')]('/:id',auth[_0x1735('0x6')](),controller[_0x1735('0x24')]);router[_0x1735('0x25')]('/:id/dispositions',auth[_0x1735('0x6')](),controller[_0x1735('0x26')]);router[_0x1735('0x25')](_0x1735('0xd'),auth['isAuthenticated'](),controller[_0x1735('0x27')]);router[_0x1735('0x25')](_0x1735('0x28'),auth[_0x1735('0x6')](),controller[_0x1735('0x29')]);router['delete'](_0x1735('0x10'),auth[_0x1735('0x6')](),controller[_0x1735('0x2a')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x1735('0x2b')]);router[_0x1735('0x25')](_0x1735('0x18'),auth[_0x1735('0x6')](),controller[_0x1735('0x2c')]);module['exports']=router;
\ No newline at end of file
+var _0x7ada=['getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','/:id/dispositions','addDisposition','addAnswer','post','addImap','addInteraction','addApplications','/:id/send','send','addAgents','put','delete','removeAnswers','removeImap','removeSmtp','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x4ba355,_0x5a94ed){var _0x3fd49a=function(_0x11bccf){while(--_0x11bccf){_0x4ba355['push'](_0x4ba355['shift']());}};_0x3fd49a(++_0x5a94ed);}(_0x7ada,0x139));var _0xa7ad=function(_0x15cefe,_0x38746b){_0x15cefe=_0x15cefe-0x0;var _0x1cbfa3=_0x7ada[_0x15cefe];return _0x1cbfa3;};'use strict';var multer=require(_0xa7ad('0x0'));var util=require(_0xa7ad('0x1'));var path=require(_0xa7ad('0x2'));var timeout=require('connect-timeout');var express=require(_0xa7ad('0x3'));var router=express[_0xa7ad('0x4')]();var fs_extra=require(_0xa7ad('0x5'));var auth=require(_0xa7ad('0x6'));var interaction=require(_0xa7ad('0x7'));var config=require(_0xa7ad('0x8'));var controller=require(_0xa7ad('0x9'));router[_0xa7ad('0xa')]('/',auth[_0xa7ad('0xb')](),controller[_0xa7ad('0xc')]);router[_0xa7ad('0xa')](_0xa7ad('0xd'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0xe')]);router['get'](_0xa7ad('0xf'),auth[_0xa7ad('0xb')](),controller['show']);router[_0xa7ad('0xa')]('/:id/dispositions',auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x10')]);router[_0xa7ad('0xa')](_0xa7ad('0x11'),auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0xa7ad('0x12'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x13')]);router[_0xa7ad('0xa')](_0xa7ad('0x14'),auth[_0xa7ad('0xb')](),controller['getSmtp']);router['get'](_0xa7ad('0x15'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x16')]);router[_0xa7ad('0xa')](_0xa7ad('0x17'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x18')]);router['get'](_0xa7ad('0x19'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x1a')]);router[_0xa7ad('0xa')](_0xa7ad('0x1b'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x1c')]);router[_0xa7ad('0xa')](_0xa7ad('0x1d'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x1e')]);router['post'](_0xa7ad('0x1f'),auth['isAuthenticated'](),controller[_0xa7ad('0x20')]);router['post'](_0xa7ad('0x11'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x21')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa7ad('0x22')](_0xa7ad('0x12'),auth['isAuthenticated'](),controller[_0xa7ad('0x23')]);router['post']('/:id/out_servers',auth['isAuthenticated'](),controller['addSmtp']);router[_0xa7ad('0x22')](_0xa7ad('0x15'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x24')]);router[_0xa7ad('0x22')](_0xa7ad('0x17'),auth['isAuthenticated'](),controller[_0xa7ad('0x25')]);router[_0xa7ad('0x22')](_0xa7ad('0x26'),auth['isAuthenticated'](),controller[_0xa7ad('0x27')]);router[_0xa7ad('0x22')](_0xa7ad('0x1d'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x28')]);router[_0xa7ad('0x29')](_0xa7ad('0xf'),auth[_0xa7ad('0xb')](),controller['update']);router[_0xa7ad('0x2a')](_0xa7ad('0x1f'),auth[_0xa7ad('0xb')](),controller['removeDispositions']);router['delete']('/:id/canned_answers',auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x2b')]);router[_0xa7ad('0x2a')](_0xa7ad('0x12'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x2c')]);router[_0xa7ad('0x2a')](_0xa7ad('0x14'),auth[_0xa7ad('0xb')](),controller[_0xa7ad('0x2d')]);router[_0xa7ad('0x2a')](_0xa7ad('0xf'),auth[_0xa7ad('0xb')](),controller['destroy']);router[_0xa7ad('0x2a')](_0xa7ad('0x1d'),auth[_0xa7ad('0xb')](),controller['removeAgents']);module[_0xa7ad('0x2e')]=router;
\ No newline at end of file
index e611164..a11e6f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7c=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue'];(function(_0x2890cf,_0x2e4ac6){var _0x314cc9=function(_0x1ab006){while(--_0x1ab006){_0x2890cf['push'](_0x2890cf['shift']());}};_0x314cc9(++_0x2e4ac6);}(_0xaa7c,0x1ec));var _0xcaa7=function(_0x5b3d7b,_0x173d13){_0x5b3d7b=_0x5b3d7b-0x0;var _0x55bb00=_0xaa7c[_0x5b3d7b];return _0x55bb00;};'use strict';var Sequelize=require(_0xcaa7('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xcaa7('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xcaa7('0x3')]},'markAsUnread':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xcaa7('0x1')],'allowNull':![],'defaultValue':_0xcaa7('0x4')},'fontSize':{'type':Sequelize[_0xcaa7('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xcaa7('0x3')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xcaa7('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcaa7('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xcaa7('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xcaa7('0x6')},'mandatoryDisposition':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2e037c){if(!_0x2e037c)this[_0xcaa7('0x7')](_0xcaa7('0x8'),null);this[_0xcaa7('0x7')](_0xcaa7('0x9'),_0x2e037c);}}};
\ No newline at end of file
+var _0xb7fc=['STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize'];(function(_0x28ef76,_0x47ddcd){var _0x481862=function(_0x1f9ee1){while(--_0x1f9ee1){_0x28ef76['push'](_0x28ef76['shift']());}};_0x481862(++_0x47ddcd);}(_0xb7fc,0x1e3));var _0xcb7f=function(_0x31d707,_0x733c2b){_0x31d707=_0x31d707-0x0;var _0x3ff20d=_0xb7fc[_0x31d707];return _0x3ff20d;};'use strict';var Sequelize=require(_0xcb7f('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xcb7f('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0xcb7f('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xcb7f('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xcb7f('0x3')]},'markAsUnread':{'type':Sequelize[_0xcb7f('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xcb7f('0x1')],'allowNull':![],'defaultValue':_0xcb7f('0x4')},'fontSize':{'type':Sequelize[_0xcb7f('0x5')](0x2)[_0xcb7f('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xcb7f('0x7');}},'notificationSound':{'type':Sequelize[_0xcb7f('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xcb7f('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xcb7f('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xcb7f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcb7f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xcb7f('0x5')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xcb7f('0x2')],'defaultValue':![],'comment':_0xcb7f('0x8'),'set':function(_0x3853c9){if(!_0x3853c9)this[_0xcb7f('0x9')](_0xcb7f('0xa'),null);this['setDataValue']('mandatoryDisposition',_0x3853c9);}}};
\ No newline at end of file
index 06df1b2..2081f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa042=['../../mysqldb','redis','defaults','./mailAccount.socket','register','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','MailAccounts','sendStatus','stack','name','MailServerIn','MailServerOut','Smtp','mandatoryDispositionPause','map','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','filter','merge','where','VIRTUAL','options','MailAccount','include','show','params','Imap','rawAttributes','keys','find','body','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','nolimit','order','pick','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','email','ListId','isNil','active','cauthentication','user','password','pass','authentication','host','port','service','cservice','cuser','cpassword','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','ids','omit','getInteractions','MailInteraction','includeAll','CmContact','Contact','User','Owner','Tags','color','tag','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','priority','finally','send','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','updatedAt','DESC','from','%s\x20<%s>','attachments','root','auth','secure','Contacts','List\x20not\x20found','messageId','attach','out','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','html-to-text','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x1cf290,_0x4a89e2){var _0x51b278=function(_0x5a96ca){while(--_0x5a96ca){_0x1cf290['push'](_0x1cf290['shift']());}};_0x51b278(++_0x4a89e2);}(_0xa042,0xaa));var _0x2a04=function(_0x539000,_0x3f443e){_0x539000=_0x539000-0x0;var _0x168877=_0xa042[_0x539000];return _0x168877;};'use strict';var emlformat=require(_0x2a04('0x0'));var rimraf=require(_0x2a04('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2a04('0x2'));var rp=require(_0x2a04('0x3'));var moment=require('moment');var BPromise=require(_0x2a04('0x4'));var Mustache=require(_0x2a04('0x5'));var util=require(_0x2a04('0x6'));var path=require(_0x2a04('0x7'));var sox=require('sox');var csv=require(_0x2a04('0x8'));var ejs=require(_0x2a04('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2a04('0xa'));var squel=require(_0x2a04('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2a04('0xc'));var toCsv=require(_0x2a04('0x8'));var querystring=require(_0x2a04('0xd'));var Papa=require(_0x2a04('0xe'));var htmlToText=require(_0x2a04('0xf'));var juice=require('juice');var Redis=require(_0x2a04('0x10'));var authService=require(_0x2a04('0x11'));var qs=require(_0x2a04('0x12'));var as=require(_0x2a04('0x13'));var hardwareService=require(_0x2a04('0x14'));var logger=require('../../config/logger')(_0x2a04('0x15'));var utils=require(_0x2a04('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2a04('0x17'))['db'];config[_0x2a04('0x18')]=_[_0x2a04('0x19')](config[_0x2a04('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2a04('0x18')]));require(_0x2a04('0x1a'))[_0x2a04('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x2a04('0x1c')][_0x2a04('0x1d')]({'port':0x232b});function respondWithRpcPromise(_0x1bc504,_0x2a5442,_0x15988a,_0x2a637e){return new BPromise(function(_0x490847,_0x2171fc){var _0x3417fd=_0x2a637e||client;return _0x3417fd[_0x2a04('0x1e')](_0x1bc504,_0x15988a)[_0x2a04('0x1f')](function(_0x45af68){logger[_0x2a04('0x20')](_0x2a04('0x21'),_0x2a5442,_0x2a04('0x22'));logger[_0x2a04('0x23')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x2a5442,_0x2a04('0x22'),JSON['stringify'](_0x45af68));if(_0x45af68[_0x2a04('0x24')]){if(_0x45af68[_0x2a04('0x24')][_0x2a04('0x25')]===0x1f4){logger[_0x2a04('0x24')](_0x2a04('0x21'),_0x2a5442,_0x45af68[_0x2a04('0x24')]['message']);return _0x2171fc(_0x45af68['error']['message']);}logger[_0x2a04('0x24')]('MailAccount,\x20%s,\x20%s',_0x2a5442,_0x45af68[_0x2a04('0x24')][_0x2a04('0x26')]);return _0x490847(_0x45af68[_0x2a04('0x24')][_0x2a04('0x26')]);}else{logger[_0x2a04('0x20')](_0x2a04('0x21'),_0x2a5442,_0x2a04('0x22'));_0x490847(_0x45af68[_0x2a04('0x27')][_0x2a04('0x26')]);}})[_0x2a04('0x28')](function(_0x297478){logger[_0x2a04('0x24')](_0x2a04('0x21'),_0x2a5442,_0x297478);_0x2171fc(_0x297478);});});}function respondWithStatusCode(_0x55672b,_0x5e67ab){_0x5e67ab=_0x5e67ab||0xcc;return function(_0x24ae43){if(_0x24ae43){return _0x55672b['sendStatus'](_0x5e67ab);}return _0x55672b['status'](_0x5e67ab)[_0x2a04('0x29')]();};}function respondWithResult(_0x30fda1,_0x21f970){_0x21f970=_0x21f970||0xc8;return function(_0x4d9aa3){if(_0x4d9aa3){return _0x30fda1[_0x2a04('0x2a')](_0x21f970)['json'](_0x4d9aa3);}};}function respondWithFilteredResult(_0x4323c4,_0x274e2c){return function(_0x1befd5){if(_0x1befd5){var _0x3d2915=typeof _0x274e2c[_0x2a04('0x2b')]===_0x2a04('0x2c')&&typeof _0x274e2c[_0x2a04('0x2d')]==='undefined';var _0x3af522=_0x1befd5[_0x2a04('0x2e')];var _0x58607c=_0x3d2915?0x0:_0x274e2c[_0x2a04('0x2b')];var _0x4c7a82=_0x3d2915?_0x1befd5[_0x2a04('0x2e')]:_0x274e2c[_0x2a04('0x2b')]+_0x274e2c['limit'];var _0x25055d;if(_0x4c7a82>=_0x3af522){_0x4c7a82=_0x3af522;_0x25055d=0xc8;}else{_0x25055d=0xce;}_0x4323c4['status'](_0x25055d);return _0x4323c4[_0x2a04('0x2f')](_0x2a04('0x30'),_0x58607c+'-'+_0x4c7a82+'/'+_0x3af522)['json'](_0x1befd5);}return null;};}function patchUpdates(_0x4b03f5){return function(_0x946e8a){try{jsonpatch[_0x2a04('0x31')](_0x946e8a,_0x4b03f5,!![]);}catch(_0x44c19e){return BPromise[_0x2a04('0x32')](_0x44c19e);}return _0x946e8a[_0x2a04('0x33')]();};}function saveUpdates(_0x34d6ac,_0xab729f){return function(_0x2c8cca){if(_0x2c8cca){return _0x2c8cca[_0x2a04('0x34')](_0x34d6ac)['then'](function(_0x3f72d1){return _0x3f72d1;});}return null;};}function removeEntity(_0x4b329d,_0x452543){return function(_0x5f1d89){if(_0x5f1d89){return _0x5f1d89[_0x2a04('0x35')]()[_0x2a04('0x1f')](function(){var _0x1e2693=_0x5f1d89[_0x2a04('0x36')]({'plain':!![]});var _0x51bffe=_0x2a04('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x51bffe,'resourceId':_0x1e2693['id']}})[_0x2a04('0x1f')](function(){return _0x5f1d89;});})[_0x2a04('0x1f')](function(){_0x4b329d[_0x2a04('0x2a')](0xcc)[_0x2a04('0x29')]();});}};}function handleEntityNotFound(_0x233941,_0x2fb909){return function(_0x3c49f6){if(!_0x3c49f6){_0x233941[_0x2a04('0x38')](0x194);}return _0x3c49f6;};}function handleError(_0x371864,_0x43f6f7){_0x43f6f7=_0x43f6f7||0x1f4;return function(_0x2fa23b){logger[_0x2a04('0x24')](_0x2fa23b[_0x2a04('0x39')]);if(_0x2fa23b[_0x2a04('0x3a')]){delete _0x2fa23b['name'];}_0x371864[_0x2a04('0x2a')](_0x43f6f7)['send'](_0x2fa23b);};}exports['index']=function(_0x5768ce,_0x2daa4d){var _0x374db9={'include':[{'model':db[_0x2a04('0x3b')],'as':'Imap'},{'model':db[_0x2a04('0x3c')],'as':_0x2a04('0x3d')},{'model':db['Pause'],'as':_0x2a04('0x3e')}]},_0x1e02e8={},_0x5237b6={'count':0x0,'rows':[]};var _0x1f9ab5=_[_0x2a04('0x3f')](db['MailAccount']['rawAttributes'],function(_0x545ea8){return{'name':_0x545ea8['fieldName'],'type':_0x545ea8[_0x2a04('0x40')][_0x2a04('0x41')]};});_0x1e02e8[_0x2a04('0x42')]=_['map'](_0x1f9ab5,'name');_0x1e02e8[_0x2a04('0x43')]=_['keys'](_0x5768ce['query']);_0x1e02e8[_0x2a04('0x44')]=_[_0x2a04('0x45')](_0x1e02e8[_0x2a04('0x42')],_0x1e02e8[_0x2a04('0x43')]);_0x374db9[_0x2a04('0x46')]=_['intersection'](_0x1e02e8[_0x2a04('0x42')],qs[_0x2a04('0x47')](_0x5768ce[_0x2a04('0x43')][_0x2a04('0x47')]));_0x374db9[_0x2a04('0x46')]=_0x374db9[_0x2a04('0x46')][_0x2a04('0x48')]?_0x374db9[_0x2a04('0x46')]:_0x1e02e8['model'];if(!_0x5768ce[_0x2a04('0x43')][_0x2a04('0x49')]('nolimit')){_0x374db9[_0x2a04('0x2d')]=qs[_0x2a04('0x2d')](_0x5768ce['query'][_0x2a04('0x2d')]);_0x374db9[_0x2a04('0x2b')]=qs[_0x2a04('0x2b')](_0x5768ce['query']['offset']);}_0x374db9['order']=qs[_0x2a04('0x4a')](_0x5768ce[_0x2a04('0x43')]['sort']);_0x374db9['where']=qs[_0x2a04('0x44')](_['pick'](_0x5768ce[_0x2a04('0x43')],_0x1e02e8[_0x2a04('0x44')]),_0x1f9ab5);if(_0x5768ce['query'][_0x2a04('0x4b')]){_0x374db9['where']=_[_0x2a04('0x4c')](_0x374db9[_0x2a04('0x4d')],{'$or':_[_0x2a04('0x3f')](_0x1f9ab5,function(_0x288895){if(_0x288895[_0x2a04('0x40')]!==_0x2a04('0x4e')){var _0x106d0f={};_0x106d0f[_0x288895[_0x2a04('0x3a')]]={'$like':'%'+_0x5768ce['query'][_0x2a04('0x4b')]+'%'};return _0x106d0f;}})});}_0x374db9=_[_0x2a04('0x4c')]({},_0x374db9,_0x5768ce[_0x2a04('0x4f')]);var _0x49a4cc={'where':_0x374db9[_0x2a04('0x4d')]};return db[_0x2a04('0x50')][_0x2a04('0x2e')](_0x49a4cc)[_0x2a04('0x1f')](function(_0x35cce0){_0x5237b6[_0x2a04('0x2e')]=_0x35cce0;if(_0x5768ce[_0x2a04('0x43')]['includeAll']){_0x374db9[_0x2a04('0x51')]=[{'all':!![]}];}return db[_0x2a04('0x50')]['findAll'](_0x374db9);})[_0x2a04('0x1f')](function(_0x1128f9){_0x5237b6['rows']=_0x1128f9;return _0x5237b6;})['then'](respondWithFilteredResult(_0x2daa4d,_0x374db9))['catch'](handleError(_0x2daa4d,null));};exports[_0x2a04('0x52')]=function(_0x333f49,_0x259221){var _0xe57e34={'raw':![],'where':{'id':_0x333f49[_0x2a04('0x53')]['id']},'include':[{'model':db[_0x2a04('0x3b')],'as':_0x2a04('0x54')},{'model':db[_0x2a04('0x3c')],'as':_0x2a04('0x3d')},{'model':db['Pause'],'as':_0x2a04('0x3e')}]},_0x4ee13d={};_0x4ee13d[_0x2a04('0x42')]=_['keys'](db[_0x2a04('0x50')][_0x2a04('0x55')]);_0x4ee13d[_0x2a04('0x43')]=_[_0x2a04('0x56')](_0x333f49[_0x2a04('0x43')]);_0x4ee13d[_0x2a04('0x44')]=_[_0x2a04('0x45')](_0x4ee13d[_0x2a04('0x42')],_0x4ee13d['query']);_0xe57e34[_0x2a04('0x46')]=_[_0x2a04('0x45')](_0x4ee13d[_0x2a04('0x42')],qs['fields'](_0x333f49[_0x2a04('0x43')]['fields']));_0xe57e34[_0x2a04('0x46')]=_0xe57e34[_0x2a04('0x46')][_0x2a04('0x48')]?_0xe57e34[_0x2a04('0x46')]:_0x4ee13d[_0x2a04('0x42')];if(_0x333f49['query']['includeAll']){_0xe57e34[_0x2a04('0x51')]=[{'all':!![]}];}_0xe57e34=_[_0x2a04('0x4c')]({},_0xe57e34,_0x333f49['options']);return db[_0x2a04('0x50')][_0x2a04('0x57')](_0xe57e34)[_0x2a04('0x1f')](handleEntityNotFound(_0x259221,null))['then'](respondWithResult(_0x259221,null))[_0x2a04('0x28')](handleError(_0x259221,null));};exports[_0x2a04('0x34')]=function(_0x58dd54,_0x553ac0){if(_0x58dd54[_0x2a04('0x58')]['id']){delete _0x58dd54[_0x2a04('0x58')]['id'];}return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0x58dd54[_0x2a04('0x53')]['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0x2a04('0x3c')],'as':'Smtp'},{'model':db['Pause'],'as':_0x2a04('0x3e')}]})[_0x2a04('0x1f')](handleEntityNotFound(_0x553ac0,null))[_0x2a04('0x1f')](saveUpdates(_0x58dd54[_0x2a04('0x58')],null))['then'](function(_0x3afed9){if(_0x3afed9&&_0x58dd54[_0x2a04('0x58')][_0x2a04('0x54')]){return db['MailServerIn'][_0x2a04('0x34')](_0x58dd54[_0x2a04('0x58')][_0x2a04('0x54')],{'where':{'MailAccountId':_0x3afed9['id']}})['then'](function(){return _0x3afed9;});}return _0x3afed9;})[_0x2a04('0x1f')](function(_0x56e4b1){if(_0x56e4b1&&_0x58dd54['body'][_0x2a04('0x3d')]){return db['MailServerOut'][_0x2a04('0x34')](_0x58dd54['body'][_0x2a04('0x3d')],{'where':{'MailAccountId':_0x56e4b1['id']}})[_0x2a04('0x1f')](function(){return _0x56e4b1;});}return _0x56e4b1;})[_0x2a04('0x1f')](respondWithResult(_0x553ac0,null))[_0x2a04('0x28')](handleError(_0x553ac0,null));};exports['describe']=function(_0x35f093,_0x500cea){return db[_0x2a04('0x50')][_0x2a04('0x59')]()[_0x2a04('0x1f')](respondWithResult(_0x500cea,null))[_0x2a04('0x28')](handleError(_0x500cea,null));};exports[_0x2a04('0x5a')]=function(_0xa310e7,_0x2149d3,_0x5a9bcc){if(_0xa310e7['body']['id']){delete _0xa310e7['body']['id'];}return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0xa310e7['params']['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x2149d3,null))[_0x2a04('0x1f')](function(_0x2e946f){if(_0x2e946f){_0xa310e7[_0x2a04('0x58')][_0x2a04('0x5b')]=_0x2e946f['id'];return db[_0x2a04('0x5c')][_0x2a04('0x5d')](_0xa310e7[_0x2a04('0x58')]);}})[_0x2a04('0x1f')](respondWithResult(_0x2149d3,null))[_0x2a04('0x28')](handleError(_0x2149d3,null));};exports[_0x2a04('0x5e')]=function(_0x242031,_0x37d263,_0x3766d1){var _0x30da41={'raw':![],'where':{}};var _0x319b6e={};var _0x3a7337={'count':0x0,'rows':[]};return db[_0x2a04('0x50')][_0x2a04('0x5f')]({'where':{'id':_0x242031[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x37d263,null))[_0x2a04('0x1f')](function(_0x1fa199){if(_0x1fa199){_0x319b6e[_0x2a04('0x42')]=_[_0x2a04('0x56')](db['Disposition']['rawAttributes']);_0x319b6e[_0x2a04('0x43')]=_[_0x2a04('0x56')](_0x242031[_0x2a04('0x43')]);_0x319b6e[_0x2a04('0x44')]=_['intersection'](_0x319b6e[_0x2a04('0x42')],_0x319b6e[_0x2a04('0x43')]);_0x30da41[_0x2a04('0x46')]=_['intersection'](_0x319b6e[_0x2a04('0x42')],qs[_0x2a04('0x47')](_0x242031[_0x2a04('0x43')][_0x2a04('0x47')]));_0x30da41[_0x2a04('0x46')]=_0x30da41[_0x2a04('0x46')]['length']?_0x30da41[_0x2a04('0x46')]:_0x319b6e[_0x2a04('0x42')];if(!_0x242031[_0x2a04('0x43')][_0x2a04('0x49')](_0x2a04('0x60'))){_0x30da41[_0x2a04('0x2d')]=qs['limit'](_0x242031[_0x2a04('0x43')][_0x2a04('0x2d')]);_0x30da41['offset']=qs[_0x2a04('0x2b')](_0x242031[_0x2a04('0x43')]['offset']);}_0x30da41[_0x2a04('0x61')]=qs[_0x2a04('0x4a')](_0x242031[_0x2a04('0x43')]['sort']);_0x30da41[_0x2a04('0x4d')]=qs[_0x2a04('0x44')](_[_0x2a04('0x62')](_0x242031[_0x2a04('0x43')],_0x319b6e['filters']));_0x30da41[_0x2a04('0x4d')][_0x2a04('0x5b')]=_0x1fa199['id'];if(_0x242031['query']['filter']){_0x30da41[_0x2a04('0x4d')]=_['merge'](_0x30da41[_0x2a04('0x4d')],{'$or':_['map'](_0x30da41[_0x2a04('0x46')],function(_0xed46){var _0x2dc84e={};_0x2dc84e[_0xed46]={'$like':'%'+_0x242031[_0x2a04('0x43')][_0x2a04('0x4b')]+'%'};return _0x2dc84e;})});}_0x30da41=_['merge']({},_0x30da41,_0x242031[_0x2a04('0x4f')]);return db['Disposition'][_0x2a04('0x2e')]({'where':_0x30da41[_0x2a04('0x4d')]})[_0x2a04('0x1f')](function(_0x5ae6bc){_0x3a7337['count']=_0x5ae6bc;if(_0x242031[_0x2a04('0x43')]['includeAll']){_0x30da41[_0x2a04('0x51')]=[{'all':!![]}];}return db[_0x2a04('0x5c')]['findAll'](_0x30da41);})[_0x2a04('0x1f')](function(_0x4660df){_0x3a7337[_0x2a04('0x63')]=_0x4660df;return _0x3a7337;});}})['then'](respondWithFilteredResult(_0x37d263,_0x30da41))[_0x2a04('0x28')](handleError(_0x37d263,null));};exports[_0x2a04('0x64')]=function(_0x4aef2c,_0x52b61c,_0x1842eb){return db['MailAccount'][_0x2a04('0x57')]({'where':{'id':_0x4aef2c[_0x2a04('0x53')]['id']}})['then'](handleEntityNotFound(_0x52b61c,null))['then'](function(_0x5132e2){if(_0x5132e2){return _0x5132e2[_0x2a04('0x64')](_0x4aef2c[_0x2a04('0x43')]['ids']);}})[_0x2a04('0x1f')](respondWithStatusCode(_0x52b61c,null))[_0x2a04('0x28')](handleError(_0x52b61c,null));};exports[_0x2a04('0x65')]=function(_0x18ba43,_0xabe1db,_0x583c86){if(_0x18ba43[_0x2a04('0x58')]['id']){delete _0x18ba43[_0x2a04('0x58')]['id'];}return db['MailAccount'][_0x2a04('0x57')]({'where':{'id':_0x18ba43['params']['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0xabe1db,null))[_0x2a04('0x1f')](function(_0x4ba68a){if(_0x4ba68a){_0x18ba43[_0x2a04('0x58')][_0x2a04('0x5b')]=_0x4ba68a['id'];return db[_0x2a04('0x66')][_0x2a04('0x5d')](_0x18ba43[_0x2a04('0x58')]);}})['then'](respondWithResult(_0xabe1db,null))[_0x2a04('0x28')](handleError(_0xabe1db,null));};exports[_0x2a04('0x67')]=function(_0x33bbc0,_0x27df81,_0x107e3f){var _0x248374={'raw':![],'where':{}};var _0x4e396d={};var _0x2bdd30={'count':0x0,'rows':[]};return db[_0x2a04('0x50')]['findOne']({'where':{'id':_0x33bbc0[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x27df81,null))[_0x2a04('0x1f')](function(_0x22bd20){if(_0x22bd20){_0x4e396d['model']=_['keys'](db[_0x2a04('0x66')][_0x2a04('0x55')]);_0x4e396d['query']=_[_0x2a04('0x56')](_0x33bbc0[_0x2a04('0x43')]);_0x4e396d['filters']=_[_0x2a04('0x45')](_0x4e396d[_0x2a04('0x42')],_0x4e396d['query']);_0x248374[_0x2a04('0x46')]=_['intersection'](_0x4e396d[_0x2a04('0x42')],qs['fields'](_0x33bbc0[_0x2a04('0x43')][_0x2a04('0x47')]));_0x248374[_0x2a04('0x46')]=_0x248374[_0x2a04('0x46')][_0x2a04('0x48')]?_0x248374[_0x2a04('0x46')]:_0x4e396d['model'];if(!_0x33bbc0[_0x2a04('0x43')]['hasOwnProperty'](_0x2a04('0x60'))){_0x248374['limit']=qs[_0x2a04('0x2d')](_0x33bbc0[_0x2a04('0x43')][_0x2a04('0x2d')]);_0x248374[_0x2a04('0x2b')]=qs['offset'](_0x33bbc0[_0x2a04('0x43')][_0x2a04('0x2b')]);}_0x248374[_0x2a04('0x61')]=qs[_0x2a04('0x4a')](_0x33bbc0[_0x2a04('0x43')][_0x2a04('0x4a')]);_0x248374['where']=qs[_0x2a04('0x44')](_[_0x2a04('0x62')](_0x33bbc0['query'],_0x4e396d[_0x2a04('0x44')]));_0x248374[_0x2a04('0x4d')][_0x2a04('0x5b')]=_0x22bd20['id'];if(_0x33bbc0[_0x2a04('0x43')][_0x2a04('0x4b')]){_0x248374['where']=_[_0x2a04('0x4c')](_0x248374['where'],{'$or':_[_0x2a04('0x3f')](_0x248374['attributes'],function(_0x375d82){var _0x44dcfd={};_0x44dcfd[_0x375d82]={'$like':'%'+_0x33bbc0['query'][_0x2a04('0x4b')]+'%'};return _0x44dcfd;})});}_0x248374=_['merge']({},_0x248374,_0x33bbc0['options']);return db[_0x2a04('0x66')][_0x2a04('0x2e')]({'where':_0x248374['where']})['then'](function(_0x52c312){_0x2bdd30['count']=_0x52c312;if(_0x33bbc0[_0x2a04('0x43')]['includeAll']){_0x248374['include']=[{'all':!![]}];}return db[_0x2a04('0x66')][_0x2a04('0x68')](_0x248374);})[_0x2a04('0x1f')](function(_0x309118){_0x2bdd30[_0x2a04('0x63')]=_0x309118;return _0x2bdd30;});}})['then'](respondWithFilteredResult(_0x27df81,_0x248374))[_0x2a04('0x28')](handleError(_0x27df81,null));};exports['removeAnswers']=function(_0x328712,_0x11a031,_0x31e40c){return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0x328712[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x11a031,null))[_0x2a04('0x1f')](function(_0x535d32){if(_0x535d32){return _0x535d32[_0x2a04('0x69')](_0x328712['query']['ids']);}})[_0x2a04('0x1f')](respondWithStatusCode(_0x11a031,null))[_0x2a04('0x28')](handleError(_0x11a031,null));};exports['create']=function(_0x2099e3,_0x2ffc5b){var _0x140f57={'name':_0x2099e3[_0x2a04('0x58')][_0x2a04('0x3a')],'key':_0x2099e3['body'][_0x2a04('0x41')],'email':_0x2099e3['body'][_0x2a04('0x6a')],'ListId':_0x2099e3[_0x2a04('0x58')][_0x2a04('0x6b')],'active':!_[_0x2a04('0x6c')](_0x2099e3[_0x2a04('0x58')][_0x2a04('0x6d')])?_0x2099e3['body'][_0x2a04('0x6d')]:!![],'description':_0x2099e3[_0x2a04('0x58')]['description']||null,'Imap':{},'Smtp':{}};if(_['isNil'](_0x2099e3[_0x2a04('0x58')]['cservice'])){if(_0x2099e3[_0x2a04('0x58')][_0x2a04('0x6e')]){_0x140f57[_0x2a04('0x54')]['user']=_0x140f57['Smtp'][_0x2a04('0x6f')]=_0x2099e3['body']['cuser'];_0x140f57['Imap'][_0x2a04('0x70')]=_0x140f57[_0x2a04('0x3d')][_0x2a04('0x71')]=_0x2099e3[_0x2a04('0x58')]['cpassword'];}else{_0x140f57['Imap'][_0x2a04('0x72')]=_0x140f57['Smtp'][_0x2a04('0x72')]=![];}_0x140f57[_0x2a04('0x54')]['host']=_0x2099e3['body'][_0x2a04('0x54')][_0x2a04('0x73')];_0x140f57[_0x2a04('0x54')][_0x2a04('0x74')]=_0x2099e3['body'][_0x2a04('0x54')][_0x2a04('0x74')];_0x140f57['Smtp'][_0x2a04('0x73')]=_0x2099e3[_0x2a04('0x58')][_0x2a04('0x3d')][_0x2a04('0x73')];_0x140f57['Smtp'][_0x2a04('0x74')]=_0x2099e3[_0x2a04('0x58')][_0x2a04('0x3d')][_0x2a04('0x74')];}else{_0x140f57['Imap'][_0x2a04('0x75')]=_0x140f57[_0x2a04('0x3d')][_0x2a04('0x75')]=_0x2099e3[_0x2a04('0x58')][_0x2a04('0x76')];_0x140f57[_0x2a04('0x54')][_0x2a04('0x6f')]=_0x140f57['Smtp']['user']=_0x2099e3[_0x2a04('0x58')][_0x2a04('0x77')];_0x140f57['Imap']['password']=_0x140f57[_0x2a04('0x3d')][_0x2a04('0x71')]=_0x2099e3[_0x2a04('0x58')][_0x2a04('0x78')];}return db[_0x2a04('0x50')][_0x2a04('0x5d')](_0x140f57,{'include':[{'model':db[_0x2a04('0x3c')],'as':_0x2a04('0x3d')},{'model':db['MailServerIn'],'as':_0x2a04('0x54')}]})['then'](function(_0x4dc99d){var _0x5bd3a9=_0x2099e3['user'][_0x2a04('0x36')]({'plain':!![]});if(!_0x5bd3a9)throw new Error(_0x2a04('0x79'));if(_0x5bd3a9[_0x2a04('0x7a')]===_0x2a04('0x6f')){var _0x2366e0=_0x4dc99d[_0x2a04('0x36')]({'plain':!![]});return db[_0x2a04('0x7b')]['find']({'where':{'name':_0x2a04('0x37'),'userProfileId':_0x5bd3a9[_0x2a04('0x7c')]},'raw':!![]})[_0x2a04('0x1f')](function(_0x277ea0){if(_0x277ea0&&_0x277ea0[_0x2a04('0x7d')]===0x0){return db[_0x2a04('0x7e')][_0x2a04('0x5d')]({'name':_0x2366e0[_0x2a04('0x3a')],'resourceId':_0x2366e0['id'],'type':_0x277ea0[_0x2a04('0x3a')],'sectionId':_0x277ea0['id']},{})[_0x2a04('0x1f')](function(){return _0x4dc99d;});}else{return _0x4dc99d;}})['catch'](function(_0x24381f){logger[_0x2a04('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x24381f);throw _0x24381f;});}return _0x4dc99d;})[_0x2a04('0x1f')](respondWithResult(_0x2ffc5b,0xc9))[_0x2a04('0x28')](handleError(_0x2ffc5b,null));};exports[_0x2a04('0x7f')]=function(_0x22ac0f,_0x22ce10,_0xb18b90){return db[_0x2a04('0x50')][_0x2a04('0x5f')]({'where':{'id':_0x22ac0f['params']['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x22ce10,null))[_0x2a04('0x1f')](function(_0x2e22b){if(_0x2e22b){return _0x2e22b['getImap']();}return null;})[_0x2a04('0x1f')](respondWithResult(_0x22ce10,null))[_0x2a04('0x28')](handleError(_0x22ce10,null));};exports[_0x2a04('0x80')]=function(_0x4babbd,_0x20188a,_0x17b836){if(_0x4babbd[_0x2a04('0x58')]['id']){delete _0x4babbd[_0x2a04('0x58')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x4babbd[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x20188a,null))['then'](function(_0x2c0832){if(_0x2c0832){_0x4babbd[_0x2a04('0x58')][_0x2a04('0x5b')]=_0x2c0832['id'];return db[_0x2a04('0x3b')]['create'](_0x4babbd[_0x2a04('0x58')]);}})[_0x2a04('0x1f')](respondWithResult(_0x20188a,null))[_0x2a04('0x28')](handleError(_0x20188a,null));};exports[_0x2a04('0x81')]=function(_0x232d0c,_0x4b7383,_0x3af133){return db[_0x2a04('0x50')]['findOne']({'where':{'id':_0x232d0c[_0x2a04('0x53')]['id']}})['then'](handleEntityNotFound(_0x4b7383,null))[_0x2a04('0x1f')](function(_0x19cd6a){if(_0x19cd6a){return _0x19cd6a['setImap'](null);}return null;})[_0x2a04('0x1f')](respondWithStatusCode(_0x4b7383,null))[_0x2a04('0x28')](handleError(_0x4b7383,null));};exports[_0x2a04('0x82')]=function(_0xe73c3b,_0x162925,_0x1c08de){return db['MailAccount'][_0x2a04('0x5f')]({'where':{'id':_0xe73c3b[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x162925,null))['then'](function(_0x1bbb2f){if(_0x1bbb2f){return _0x1bbb2f['getSmtp']();}return null;})[_0x2a04('0x1f')](respondWithResult(_0x162925,null))[_0x2a04('0x28')](handleError(_0x162925,null));};exports[_0x2a04('0x83')]=function(_0x4e250a,_0x4e35ba,_0x22ca6a){if(_0x4e250a['body']['id']){delete _0x4e250a[_0x2a04('0x58')]['id'];}return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0x4e250a[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x4e35ba,null))[_0x2a04('0x1f')](function(_0x4b541d){if(_0x4b541d){_0x4e250a[_0x2a04('0x58')][_0x2a04('0x5b')]=_0x4b541d['id'];return db['MailServerOut'][_0x2a04('0x5d')](_0x4e250a[_0x2a04('0x58')]);}})[_0x2a04('0x1f')](respondWithResult(_0x4e35ba,null))['catch'](handleError(_0x4e35ba,null));};exports[_0x2a04('0x84')]=function(_0x2c6b5e,_0x5ca425,_0x28600d){return db[_0x2a04('0x50')][_0x2a04('0x5f')]({'where':{'id':_0x2c6b5e[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x5ca425,null))['then'](function(_0x41dae6){if(_0x41dae6){return _0x41dae6[_0x2a04('0x85')](null);}return null;})[_0x2a04('0x1f')](respondWithStatusCode(_0x5ca425,null))['catch'](handleError(_0x5ca425,null));};exports[_0x2a04('0x86')]=function(_0x5b6047,_0x1dcfbe,_0x518e14){return db['MailInteraction'][_0x2a04('0x57')]({'where':{'id':_0x5b6047[_0x2a04('0x53')]['id']}})['then'](handleEntityNotFound(_0x1dcfbe,null))[_0x2a04('0x1f')](function(_0x3237e3){if(_0x3237e3){return _0x3237e3[_0x2a04('0x86')](_0x5b6047[_0x2a04('0x58')][_0x2a04('0x87')],_[_0x2a04('0x88')](_0x5b6047[_0x2a04('0x58')],[_0x2a04('0x87'),'id'])||{});}})['then'](respondWithResult(_0x1dcfbe,null))[_0x2a04('0x28')](handleError(_0x1dcfbe,null));};exports[_0x2a04('0x89')]=function(_0x36c669,_0x27b924,_0x66a98e){var _0x28522e={'raw':![],'where':{}};var _0x7e3423={};var _0x5ab59e={'count':0x0,'rows':[]};return db[_0x2a04('0x50')]['findOne']({'where':{'id':_0x36c669['params']['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x27b924,null))[_0x2a04('0x1f')](function(_0x554a5a){if(_0x554a5a){_0x7e3423['model']=_[_0x2a04('0x56')](db[_0x2a04('0x8a')][_0x2a04('0x55')]);_0x7e3423[_0x2a04('0x43')]=_[_0x2a04('0x56')](_0x36c669[_0x2a04('0x43')]);_0x7e3423[_0x2a04('0x44')]=_[_0x2a04('0x45')](_0x7e3423[_0x2a04('0x42')],_0x7e3423[_0x2a04('0x43')]);_0x28522e['attributes']=_[_0x2a04('0x45')](_0x7e3423[_0x2a04('0x42')],qs[_0x2a04('0x47')](_0x36c669[_0x2a04('0x43')]['fields']));_0x28522e[_0x2a04('0x46')]=_0x28522e[_0x2a04('0x46')][_0x2a04('0x48')]?_0x28522e[_0x2a04('0x46')]:_0x7e3423[_0x2a04('0x42')];if(!_0x36c669[_0x2a04('0x43')]['hasOwnProperty'](_0x2a04('0x60'))){_0x28522e[_0x2a04('0x2d')]=qs[_0x2a04('0x2d')](_0x36c669[_0x2a04('0x43')]['limit']);_0x28522e[_0x2a04('0x2b')]=qs[_0x2a04('0x2b')](_0x36c669[_0x2a04('0x43')][_0x2a04('0x2b')]);}_0x28522e[_0x2a04('0x61')]=qs['sort'](_0x36c669[_0x2a04('0x43')][_0x2a04('0x4a')]);_0x28522e[_0x2a04('0x4d')]=qs[_0x2a04('0x44')](_['pick'](_0x36c669[_0x2a04('0x43')],_0x7e3423[_0x2a04('0x44')]));_0x28522e[_0x2a04('0x4d')][_0x2a04('0x5b')]=_0x554a5a['id'];if(_0x36c669[_0x2a04('0x43')]['filter']){_0x28522e[_0x2a04('0x4d')]=_[_0x2a04('0x4c')](_0x28522e[_0x2a04('0x4d')],{'$or':_['map'](_0x28522e['attributes'],function(_0x265114){var _0x12db83={};_0x12db83[_0x265114]={'$like':'%'+_0x36c669[_0x2a04('0x43')][_0x2a04('0x4b')]+'%'};return _0x12db83;})});}_0x28522e=_[_0x2a04('0x4c')]({},_0x28522e,_0x36c669[_0x2a04('0x4f')]);return db[_0x2a04('0x8a')][_0x2a04('0x2e')]({'where':_0x28522e['where']})[_0x2a04('0x1f')](function(_0x50e57c){_0x5ab59e[_0x2a04('0x2e')]=_0x50e57c;if(_0x36c669['query'][_0x2a04('0x8b')]){_0x28522e[_0x2a04('0x51')]=[{'model':db[_0x2a04('0x8c')],'as':_0x2a04('0x8d'),'required':![]},{'model':db[_0x2a04('0x8e')],'as':_0x2a04('0x8f'),'attributes':[_0x2a04('0x3a'),'fullname','internal'],'required':![]},{'model':db['Tag'],'as':_0x2a04('0x90'),'attributes':['id',_0x2a04('0x3a'),_0x2a04('0x91')],'where':_0x36c669['query'][_0x2a04('0x92')]?{'id':_0x36c669[_0x2a04('0x43')][_0x2a04('0x92')]}:undefined,'required':_0x36c669[_0x2a04('0x43')][_0x2a04('0x92')]?!![]:![]}];}return db[_0x2a04('0x8a')][_0x2a04('0x68')](_0x28522e);})[_0x2a04('0x1f')](function(_0x44f140){_0x5ab59e[_0x2a04('0x63')]=_0x44f140;return _0x5ab59e;});}})[_0x2a04('0x1f')](respondWithFilteredResult(_0x27b924,_0x28522e))[_0x2a04('0x28')](handleError(_0x27b924,null));};exports['addApplications']=function addApplications(_0x3e26ef,_0x3a289a){var _0x493785=_0x3e26ef['params']['id'];var _0x64214b=_0x3e26ef[_0x2a04('0x58')];var _0x68e100=0xc8;var _0x232b55=null;return db[_0x2a04('0x93')]['transaction']({'isolationLevel':db[_0x2a04('0x93')][_0x2a04('0x94')][_0x2a04('0x95')][_0x2a04('0x96')]},function(_0x1f3cba){return db['MailAccount'][_0x2a04('0x5f')]({'where':{'id':_0x493785},'transaction':_0x1f3cba})[_0x2a04('0x1f')](function(_0x57e6c7){if(_0x57e6c7){return db[_0x2a04('0x97')][_0x2a04('0x35')]({'where':{'MailAccountId':_0x493785},'transaction':_0x1f3cba})['then'](function(){var _0x5e686c=_[_0x2a04('0x3f')](_0x64214b,function(_0x5e6a56){_0x5e6a56['MailAccountId']=_0x493785;return _0x5e6a56;});return db['MailApplication'][_0x2a04('0x98')](_0x5e686c,{'transaction':_0x1f3cba});});}else{_0x68e100=0x194;_0x232b55=[];}});})[_0x2a04('0x1f')](function(){if(_0x68e100!==0x194){return db[_0x2a04('0x97')]['findAndCountAll']({'where':{'MailAccountId':_0x493785},'order':_0x2a04('0x99')})[_0x2a04('0x1f')](function(_0x238a13){_0x232b55=_0x238a13;});}})[_0x2a04('0x28')](function(_0x5ee47b){_0x68e100=0x1f4;logger['error'](_0x5ee47b[_0x2a04('0x39')]);if(_0x5ee47b[_0x2a04('0x3a')]){delete _0x5ee47b[_0x2a04('0x3a')];}_0x232b55=_0x5ee47b;})[_0x2a04('0x9a')](function(){if(_0x232b55===null){_0x3a289a[_0x2a04('0x38')](_0x68e100);}else{if(_0x68e100===0x1f4){_0x3a289a[_0x2a04('0x2a')](_0x68e100)[_0x2a04('0x9b')](_0x232b55);}else{_0x3a289a['status'](_0x68e100)['json'](_0x232b55);}}});};exports[_0x2a04('0x9c')]=function(_0x56e8c4,_0x341701,_0x1dea72){var _0x26cf77={};var _0x33bc7b={};var _0x24980f;var _0x182429;return db[_0x2a04('0x50')][_0x2a04('0x5f')]({'where':{'id':_0x56e8c4[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x341701,null))[_0x2a04('0x1f')](function(_0x518127){if(_0x518127){_0x24980f=_0x518127;_0x33bc7b[_0x2a04('0x42')]=_[_0x2a04('0x56')](db[_0x2a04('0x97')]['rawAttributes']);_0x33bc7b['query']=_['keys'](_0x56e8c4[_0x2a04('0x43')]);_0x33bc7b['filters']=_[_0x2a04('0x45')](_0x33bc7b[_0x2a04('0x42')],_0x33bc7b[_0x2a04('0x43')]);_0x26cf77[_0x2a04('0x46')]=_['intersection'](_0x33bc7b[_0x2a04('0x42')],qs[_0x2a04('0x47')](_0x56e8c4[_0x2a04('0x43')][_0x2a04('0x47')]));_0x26cf77['attributes']=_0x26cf77['attributes']['length']?_0x26cf77[_0x2a04('0x46')]:_0x33bc7b[_0x2a04('0x42')];_0x26cf77[_0x2a04('0x61')]=qs[_0x2a04('0x4a')](_0x56e8c4[_0x2a04('0x43')]['sort']);_0x26cf77[_0x2a04('0x4d')]=qs['filters'](_['pick'](_0x56e8c4[_0x2a04('0x43')],_0x33bc7b[_0x2a04('0x44')]));if(_0x56e8c4[_0x2a04('0x43')]['filter']){_0x26cf77[_0x2a04('0x4d')]=_['merge'](_0x26cf77[_0x2a04('0x4d')],{'$or':_['map'](_0x26cf77[_0x2a04('0x46')],function(_0x385d35){var _0x110e95={};_0x110e95[_0x385d35]={'$like':'%'+_0x56e8c4[_0x2a04('0x43')]['filter']+'%'};return _0x110e95;})});}_0x26cf77=_[_0x2a04('0x4c')]({},_0x26cf77,_0x56e8c4[_0x2a04('0x4f')]);return _0x24980f[_0x2a04('0x9c')](_0x26cf77);}})[_0x2a04('0x1f')](function(_0x4e85db){if(_0x4e85db){_0x182429=_0x4e85db[_0x2a04('0x48')];if(!_0x56e8c4[_0x2a04('0x43')]['hasOwnProperty'](_0x2a04('0x60'))){_0x26cf77[_0x2a04('0x2d')]=qs[_0x2a04('0x2d')](_0x56e8c4[_0x2a04('0x43')][_0x2a04('0x2d')]);_0x26cf77[_0x2a04('0x2b')]=qs[_0x2a04('0x2b')](_0x56e8c4['query'][_0x2a04('0x2b')]);}return _0x24980f['getApplications'](_0x26cf77);}})['then'](function(_0x446ec4){if(_0x446ec4){return _0x446ec4?{'count':_0x182429,'rows':_0x446ec4}:null;}})[_0x2a04('0x1f')](respondWithResult(_0x341701,null))[_0x2a04('0x28')](handleError(_0x341701,null));};exports[_0x2a04('0x9d')]=function(_0x52cd52,_0x580a86,_0x317b12){var _0x1e2c3a={'raw':!![],'where':{}};var _0x31b7be={};var _0x2dd967={'count':0x0,'rows':[]};return db[_0x2a04('0x50')][_0x2a04('0x5f')]({'where':{'id':_0x52cd52[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x580a86,null))[_0x2a04('0x1f')](function(_0x4d332c){if(_0x4d332c){_0x31b7be[_0x2a04('0x42')]=_[_0x2a04('0x56')](db[_0x2a04('0x9e')][_0x2a04('0x55')]);_0x31b7be['query']=_[_0x2a04('0x56')](_0x52cd52[_0x2a04('0x43')]);_0x31b7be['filters']=_[_0x2a04('0x45')](_0x31b7be['model'],_0x31b7be[_0x2a04('0x43')]);_0x1e2c3a[_0x2a04('0x46')]=_['intersection'](_0x31b7be[_0x2a04('0x42')],qs['fields'](_0x52cd52[_0x2a04('0x43')][_0x2a04('0x47')]));_0x1e2c3a[_0x2a04('0x46')]=_0x1e2c3a['attributes'][_0x2a04('0x48')]?_0x1e2c3a[_0x2a04('0x46')]:_0x31b7be[_0x2a04('0x42')];if(!_0x52cd52[_0x2a04('0x43')]['hasOwnProperty'](_0x2a04('0x60'))){_0x1e2c3a[_0x2a04('0x2d')]=qs[_0x2a04('0x2d')](_0x52cd52[_0x2a04('0x43')]['limit']);_0x1e2c3a[_0x2a04('0x2b')]=qs['offset'](_0x52cd52[_0x2a04('0x43')][_0x2a04('0x2b')]);}_0x1e2c3a[_0x2a04('0x61')]=qs[_0x2a04('0x4a')](_0x52cd52['query']['sort']);_0x1e2c3a['where']=qs[_0x2a04('0x44')](_[_0x2a04('0x62')](_0x52cd52['query'],_0x31b7be[_0x2a04('0x44')]));_0x1e2c3a[_0x2a04('0x4d')][_0x2a04('0x5b')]=_0x4d332c['id'];if(_0x52cd52[_0x2a04('0x43')][_0x2a04('0x4b')]){_0x1e2c3a['where']=_['merge'](_0x1e2c3a[_0x2a04('0x4d')],{'$or':_[_0x2a04('0x3f')](_0x1e2c3a[_0x2a04('0x46')],function(_0x4fe368){var _0x5b0f6b={};_0x5b0f6b[_0x4fe368]={'$like':'%'+_0x52cd52[_0x2a04('0x43')][_0x2a04('0x4b')]+'%'};return _0x5b0f6b;})});}if(_0x52cd52[_0x2a04('0x43')][_0x2a04('0x9f')]){var _0xe0f8bd=_0x52cd52['query'][_0x2a04('0x9f')][_0x2a04('0xa0')](',');var _0x243f23={};_0x243f23[_0xe0f8bd[0x0]]={'$gte':moment(_0xe0f8bd[0x1])[_0x2a04('0xa1')](_0x2a04('0xa2'))};_0x1e2c3a[_0x2a04('0x4d')]=_['merge'](_0x1e2c3a['where'],_0x243f23);}_0x1e2c3a=_['merge']({},_0x1e2c3a,_0x52cd52[_0x2a04('0x4f')]);return db[_0x2a04('0x9e')][_0x2a04('0x2e')]({'where':_0x1e2c3a[_0x2a04('0x4d')]})['then'](function(_0x368a93){_0x2dd967['count']=_0x368a93;if(_0x52cd52['query'][_0x2a04('0x8b')]){_0x1e2c3a[_0x2a04('0x51')]=[{'all':!![]}];}return db['MailMessage'][_0x2a04('0x68')](_0x1e2c3a);})[_0x2a04('0x1f')](function(_0x173ec5){if(_0x52cd52[_0x2a04('0x43')][_0x2a04('0xa3')]===_0x2a04('0xa4')){for(var _0x23126c=0x0;_0x23126c<_0x173ec5[_0x2a04('0x48')];_0x23126c++){_0x173ec5[_0x23126c][_0x2a04('0x58')]=juice(_0x173ec5[_0x23126c]['body']);}}_0x2dd967['rows']=_0x173ec5;return _0x2dd967;});}})[_0x2a04('0x1f')](respondWithFilteredResult(_0x580a86,_0x1e2c3a))['catch'](handleError(_0x580a86,null));};exports[_0x2a04('0x9b')]=function(_0x51ece0,_0x5c352f,_0x3c469d){var _0x5384e3,_0x4d76a6={},_0x4005a6;if(_0x51ece0[_0x2a04('0x58')]['to']){_0x4005a6=_0x51ece0['body']['to'][_0x2a04('0xa0')](',')[0x0];}return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0x51ece0[_0x2a04('0x53')]['id']},'include':[{'model':db[_0x2a04('0xa5')],'as':_0x2a04('0xa6'),'include':[{'model':db[_0x2a04('0x8c')],'as':'Contacts','where':{'email':_0x4005a6},'limit':0x1,'order':[[_0x2a04('0xa7'),_0x2a04('0xa8')]]}]},{'model':db[_0x2a04('0x3c')],'as':_0x2a04('0x3d'),'raw':!![]}]})[_0x2a04('0x1f')](handleEntityNotFound(_0x5c352f,null))['then'](function(_0x2d7fa2){if(_0x2d7fa2){_0x5384e3=_0x2d7fa2;if(_0x2d7fa2[_0x2a04('0x3d')]){if(_[_0x2a04('0x6c')](_0x51ece0[_0x2a04('0x58')][_0x2a04('0xa9')])){_0x51ece0[_0x2a04('0x58')][_0x2a04('0xa9')]=util[_0x2a04('0xa1')](_0x2a04('0xaa'),_0x2d7fa2[_0x2a04('0x3a')],_0x2d7fa2['email']||_0x2d7fa2[_0x2a04('0x3d')][_0x2a04('0x6f')]);}if(_0x51ece0[_0x2a04('0x58')][_0x2a04('0xab')]&&_0x51ece0[_0x2a04('0x58')][_0x2a04('0xab')]['length']){for(var _0x4be7a7=0x0;_0x4be7a7<_0x51ece0[_0x2a04('0x58')][_0x2a04('0xab')][_0x2a04('0x48')];_0x4be7a7+=0x1){_0x51ece0[_0x2a04('0x58')][_0x2a04('0xab')][_0x4be7a7]={'filename':_0x51ece0[_0x2a04('0x58')][_0x2a04('0xab')][_0x4be7a7]['name'],'path':path['join'](config[_0x2a04('0xac')],'server/files/attachments',_0x51ece0[_0x2a04('0x58')][_0x2a04('0xab')][_0x4be7a7]['basename'])};}}var _0x163072={'tls':{'rejectUnauthorized':![]}};if(_[_0x2a04('0x6c')](_0x2d7fa2[_0x2a04('0x3d')][_0x2a04('0x75')])){if(_0x2d7fa2[_0x2a04('0x3d')]['authentication']){_0x163072[_0x2a04('0xad')]={'user':_0x2d7fa2['Smtp'][_0x2a04('0x6f')],'pass':_0x2d7fa2[_0x2a04('0x3d')]['pass']};}_0x163072[_0x2a04('0x73')]=_0x2d7fa2[_0x2a04('0x3d')][_0x2a04('0x73')];_0x163072[_0x2a04('0x74')]=_0x2d7fa2[_0x2a04('0x3d')][_0x2a04('0x74')];_0x163072[_0x2a04('0xae')]=_0x2d7fa2['Smtp']['secure'];}else{_0x163072[_0x2a04('0x75')]=_0x2d7fa2['Smtp'][_0x2a04('0x75')];_0x163072[_0x2a04('0xad')]={'user':_0x2d7fa2[_0x2a04('0x3d')][_0x2a04('0x6f')],'pass':_0x2d7fa2['Smtp'][_0x2a04('0x71')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x163072,'message':_0x51ece0[_0x2a04('0x58')]});}else{throw new Error('List\x20not\x20found');}}})[_0x2a04('0x1f')](function(_0x3d71f7){if(_0x3d71f7){_0x4d76a6=_0x3d71f7;if(_0x5384e3['List']){if(_0x5384e3[_0x2a04('0xa6')][_0x2a04('0xaf')]['length']){return _0x5384e3[_0x2a04('0xa6')][_0x2a04('0xaf')][0x0];}else{return db['CmContact'][_0x2a04('0x5d')](_[_0x2a04('0x19')](_0x51ece0['body'],{'firstName':_0x51ece0[_0x2a04('0x58')]['to'],'email':_0x51ece0[_0x2a04('0x58')]['to'],'phone':_0x51ece0['body']['to'],'ListId':_0x5384e3[_0x2a04('0x6b')]}));}}else{throw new Error(_0x2a04('0xb0'));}}})[_0x2a04('0x1f')](function(_0x258603){if(_0x258603){var _0x11a825={'UserId':_0x51ece0['user']['id'],'ContactId':_0x258603['id'],'MailAccountId':_0x5384e3['id'],'inReplyTo':_0x4d76a6[_0x2a04('0xb1')],'to':_0x51ece0[_0x2a04('0x58')][_0x2a04('0xa9')],'cc':_0x51ece0[_0x2a04('0x58')]['cc'],'subject':_0x51ece0[_0x2a04('0x58')]['subject'],'attach':_0x51ece0[_0x2a04('0x58')][_0x2a04('0xb2')],'firstMsgDirection':_0x2a04('0xb3'),'lastMsgAt':moment()[_0x2a04('0xa1')](_0x2a04('0xa2')),'lastMsgDirection':_0x2a04('0xb3'),'Messages':[_[_0x2a04('0x4c')](_0x51ece0[_0x2a04('0x58')],{'messageId':_0x4d76a6[_0x2a04('0xb1')],'sentAt':moment()[_0x2a04('0xa1')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x5384e3['id'],'UserId':_0x51ece0[_0x2a04('0x6f')]['id'],'ContactId':_0x258603['id']})]};if(_0x51ece0[_0x2a04('0x58')][_0x2a04('0xb4')]){_0x11a825=_['merge'](_0x11a825,_0x51ece0[_0x2a04('0x58')]['Interaction']);}return db[_0x2a04('0x8a')]['create'](_0x11a825,{'include':[{'model':db[_0x2a04('0x9e')],'as':'Messages'}]});}})[_0x2a04('0x1f')](respondWithResult(_0x5c352f,null))[_0x2a04('0x28')](handleError(_0x5c352f,null));};exports[_0x2a04('0xb5')]=function(_0x162d0d,_0x42e03a,_0x30a922){return db['MailAccount'][_0x2a04('0x57')]({'where':{'id':_0x162d0d[_0x2a04('0x53')]['id']},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0x2a04('0x1f')](handleEntityNotFound(_0x42e03a,null))[_0x2a04('0x1f')](function(_0x335f26){if(_0x335f26&&_0x335f26[_0x2a04('0x3d')]){var _0x12de2a={'id':_0x335f26['id'],'tls':{'rejectUnauthorized':![]}};if(_0x335f26[_0x2a04('0x3d')]['service']){_0x12de2a[_0x2a04('0x75')]=_0x335f26['Smtp'][_0x2a04('0x75')];}else{_0x12de2a[_0x2a04('0x73')]=_0x335f26['Smtp']['host'];_0x12de2a[_0x2a04('0x74')]=_0x335f26[_0x2a04('0x3d')]['port'];_0x12de2a[_0x2a04('0xae')]=_0x335f26[_0x2a04('0x3d')][_0x2a04('0xae')];}if(_0x335f26[_0x2a04('0x3d')][_0x2a04('0x72')]){_0x12de2a[_0x2a04('0xad')]={'user':_0x335f26[_0x2a04('0x3d')][_0x2a04('0x6f')],'pass':_0x335f26[_0x2a04('0x3d')]['pass']};}return respondWithRpcPromise(_0x2a04('0xb6'),'verifySmtp',{'account':_0x12de2a});}})['then'](respondWithResult(_0x42e03a,null))[_0x2a04('0x28')](handleError(_0x42e03a,null));};exports[_0x2a04('0x35')]=function(_0x4389af,_0x3cd692){return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0x4389af[_0x2a04('0x53')]['id']}})['then'](handleEntityNotFound(_0x3cd692,null))[_0x2a04('0x1f')](function(_0x1d321d){if(_0x1d321d&&_0x1d321d[_0x2a04('0x75')]){throw new db[(_0x2a04('0xb7'))][(_0x2a04('0xb8'))](_0x2a04('0xb9'));}return _0x1d321d;})['then'](removeEntity(_0x3cd692,null))[_0x2a04('0x28')](handleError(_0x3cd692,null));};exports[_0x2a04('0xba')]=function(_0x10e719,_0x288f9e,_0x408fbd){return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0x10e719['params']['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x288f9e,null))[_0x2a04('0x1f')](function(_0x1ed224){if(_0x1ed224){return _0x1ed224[_0x2a04('0xba')](_0x10e719['body'][_0x2a04('0x87')],_['omit'](_0x10e719[_0x2a04('0x58')],[_0x2a04('0x87'),'id'])||{})['spread'](function(_0x18995e){for(var _0x5eec00=0x0;_0x5eec00<_0x10e719['body'][_0x2a04('0x87')][_0x2a04('0x48')];_0x5eec00+=0x1){socket[_0x2a04('0xbb')](_0x2a04('0xbc'),{'UserId':Number(_0x10e719['body']['ids'][_0x5eec00]),'MailAccountId':Number(_0x10e719[_0x2a04('0x53')]['id'])});}return _0x18995e;});}})['then'](respondWithResult(_0x288f9e,null))[_0x2a04('0x28')](handleError(_0x288f9e,null));};exports[_0x2a04('0xbd')]=function(_0x183517,_0x14bfc8,_0x4f96c5){return db[_0x2a04('0x50')][_0x2a04('0x57')]({'where':{'id':_0x183517[_0x2a04('0x53')]['id']}})[_0x2a04('0x1f')](handleEntityNotFound(_0x14bfc8,null))['then'](function(_0x3eaa9c){if(_0x3eaa9c){return _0x3eaa9c[_0x2a04('0xbd')](_0x183517[_0x2a04('0x43')][_0x2a04('0x87')])['then'](function(){if(_[_0x2a04('0xbe')](_0x183517[_0x2a04('0x43')]['ids'])){for(var _0x2a1659=0x0;_0x2a1659<_0x183517[_0x2a04('0x43')][_0x2a04('0x87')][_0x2a04('0x48')];_0x2a1659+=0x1){socket[_0x2a04('0xbb')](_0x2a04('0xbf'),{'UserId':Number(_0x183517[_0x2a04('0x43')][_0x2a04('0x87')][_0x2a1659]),'MailAccountId':Number(_0x183517[_0x2a04('0x53')]['id'])});}}else{socket[_0x2a04('0xbb')](_0x2a04('0xbf'),{'UserId':Number(_0x183517[_0x2a04('0x43')]['ids']),'MailAccountId':Number(_0x183517[_0x2a04('0x53')]['id'])});}});}})[_0x2a04('0x1f')](respondWithStatusCode(_0x14bfc8,null))[_0x2a04('0x28')](handleError(_0x14bfc8,null));};exports['getAgents']=function(_0x1c25d7,_0x2b2dd3,_0x1f5e42){var _0x3f8897={};var _0x1a2fdc={};var _0x5ca8bf;var _0x545172;return db[_0x2a04('0x50')][_0x2a04('0x5f')]({'where':{'id':_0x1c25d7[_0x2a04('0x53')]['id']}})['then'](handleEntityNotFound(_0x2b2dd3,null))['then'](function(_0x1cc773){if(_0x1cc773){_0x5ca8bf=_0x1cc773;_0x1a2fdc[_0x2a04('0x42')]=_[_0x2a04('0x56')](db['User']['rawAttributes']);_0x1a2fdc[_0x2a04('0x43')]=_[_0x2a04('0x56')](_0x1c25d7[_0x2a04('0x43')]);_0x1a2fdc['filters']=_[_0x2a04('0x45')](_0x1a2fdc[_0x2a04('0x42')],_0x1a2fdc['query']);_0x3f8897[_0x2a04('0x46')]=_['intersection'](_0x1a2fdc['model'],qs['fields'](_0x1c25d7[_0x2a04('0x43')][_0x2a04('0x47')]));_0x3f8897[_0x2a04('0x46')]=_0x3f8897[_0x2a04('0x46')][_0x2a04('0x48')]?_0x3f8897['attributes']:_0x1a2fdc['model'];_0x3f8897[_0x2a04('0x61')]=qs[_0x2a04('0x4a')](_0x1c25d7['query'][_0x2a04('0x4a')]);_0x3f8897[_0x2a04('0x4d')]=qs['filters'](_[_0x2a04('0x62')](_0x1c25d7[_0x2a04('0x43')],_0x1a2fdc[_0x2a04('0x44')]));if(_0x1c25d7['query'][_0x2a04('0x4b')]){_0x3f8897[_0x2a04('0x4d')]=_[_0x2a04('0x4c')](_0x3f8897['where'],{'$or':_['map'](_0x3f8897[_0x2a04('0x46')],function(_0x2d8c47){var _0x43b4e8={};_0x43b4e8[_0x2d8c47]={'$like':'%'+_0x1c25d7[_0x2a04('0x43')][_0x2a04('0x4b')]+'%'};return _0x43b4e8;})});}_0x3f8897=_['merge']({},_0x3f8897,_0x1c25d7['options']);return _0x5ca8bf[_0x2a04('0xc0')](_0x3f8897);}})[_0x2a04('0x1f')](function(_0x484846){if(_0x484846){_0x545172=_0x484846[_0x2a04('0x48')];if(!_0x1c25d7['query'][_0x2a04('0x49')]('nolimit')){_0x3f8897[_0x2a04('0x2d')]=qs[_0x2a04('0x2d')](_0x1c25d7[_0x2a04('0x43')][_0x2a04('0x2d')]);_0x3f8897[_0x2a04('0x2b')]=qs['offset'](_0x1c25d7[_0x2a04('0x43')][_0x2a04('0x2b')]);}return _0x5ca8bf['getAgents'](_0x3f8897);}})[_0x2a04('0x1f')](function(_0x53d66a){if(_0x53d66a){return _0x53d66a?{'count':_0x545172,'rows':_0x53d66a}:null;}})[_0x2a04('0x1f')](respondWithResult(_0x2b2dd3,null))[_0x2a04('0x28')](handleError(_0x2b2dd3,null));};
\ No newline at end of file
+var _0x087b=['password','pass','cpassword','authentication','host','port','cservice','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','MailInteraction','addInteraction','omit','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','getMessages','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','split','CmList','List','Contacts','from','attachments','join','root','secure','service','auth','SendMail','List\x20not\x20found','messageId','subject','attach','out','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','userMailAccount:save','removeAgents','isArray','emit','userMailAccount:remove','getAgents','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','get','MailAccounts','stack','name','send','index','Imap','MailServerOut','Pause','MailAccount','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filters','map','VIRTUAL','filter','options','rows','catch','show','params','MailServerIn','Smtp','length','includeAll','include','merge','find','update','body','describe','MailAccountId','create','getDispositions','Disposition','findAll','removeDispositions','ids','CannedAnswer','getAnswers','findOne','removeAnswers','email','ListId','active','description','isNil','cauthentication','user','cuser'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x087b,0x11a));var _0xb087=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x087b[_0x4ae6ef];return _0x3cbb4e;};'use strict';var emlformat=require(_0xb087('0x0'));var rimraf=require(_0xb087('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb087('0x2'));var moment=require('moment');var BPromise=require(_0xb087('0x3'));var Mustache=require(_0xb087('0x4'));var util=require(_0xb087('0x5'));var path=require(_0xb087('0x6'));var sox=require(_0xb087('0x7'));var csv=require(_0xb087('0x8'));var ejs=require(_0xb087('0x9'));var fs=require('fs');var fs_extra=require(_0xb087('0xa'));var _=require(_0xb087('0xb'));var squel=require(_0xb087('0xc'));var crypto=require(_0xb087('0xd'));var jsforce=require(_0xb087('0xe'));var deskjs=require(_0xb087('0xf'));var toCsv=require(_0xb087('0x8'));var querystring=require(_0xb087('0x10'));var Papa=require(_0xb087('0x11'));var htmlToText=require(_0xb087('0x12'));var juice=require('juice');var Redis=require(_0xb087('0x13'));var authService=require(_0xb087('0x14'));var qs=require(_0xb087('0x15'));var as=require(_0xb087('0x16'));var hardwareService=require(_0xb087('0x17'));var logger=require(_0xb087('0x18'))(_0xb087('0x19'));var utils=require('../../config/utils');var config=require(_0xb087('0x1a'));var licenseUtil=require(_0xb087('0x1b'));var db=require(_0xb087('0x1c'))['db'];config['redis']=_[_0xb087('0x1d')](config[_0xb087('0x1e')],{'host':_0xb087('0x1f'),'port':0x18eb});var socket=require(_0xb087('0x20'))(new Redis(config[_0xb087('0x1e')]));require(_0xb087('0x21'))[_0xb087('0x22')](socket);var jayson=require(_0xb087('0x23'));var client=jayson[_0xb087('0x24')][_0xb087('0x25')]({'port':0x232b});function respondWithRpcPromise(_0x5193a4,_0x43e576,_0x412b48,_0x597478){return new BPromise(function(_0xcc4426,_0x2b83b7){var _0x2e9e74=_0x597478||client;return _0x2e9e74['request'](_0x5193a4,_0x412b48)[_0xb087('0x26')](function(_0x3c680f){logger[_0xb087('0x27')](_0xb087('0x28'),_0x43e576,'request\x20sent');logger[_0xb087('0x29')](_0xb087('0x2a'),_0x43e576,_0xb087('0x2b'),JSON[_0xb087('0x2c')](_0x3c680f));if(_0x3c680f['error']){if(_0x3c680f['error']['code']===0x1f4){logger['error'](_0xb087('0x28'),_0x43e576,_0x3c680f[_0xb087('0x2d')][_0xb087('0x2e')]);return _0x2b83b7(_0x3c680f[_0xb087('0x2d')][_0xb087('0x2e')]);}logger[_0xb087('0x2d')](_0xb087('0x28'),_0x43e576,_0x3c680f['error'][_0xb087('0x2e')]);return _0xcc4426(_0x3c680f[_0xb087('0x2d')][_0xb087('0x2e')]);}else{logger[_0xb087('0x27')](_0xb087('0x28'),_0x43e576,'request\x20sent');_0xcc4426(_0x3c680f[_0xb087('0x2f')][_0xb087('0x2e')]);}})['catch'](function(_0x5a2dc6){logger['error']('MailAccount,\x20%s,\x20%s',_0x43e576,_0x5a2dc6);_0x2b83b7(_0x5a2dc6);});});}function respondWithStatusCode(_0x5a4ee0,_0x304840){_0x304840=_0x304840||0xcc;return function(_0x45685d){if(_0x45685d){return _0x5a4ee0[_0xb087('0x30')](_0x304840);}return _0x5a4ee0[_0xb087('0x31')](_0x304840)[_0xb087('0x32')]();};}function respondWithResult(_0xb72173,_0xf3f41f){_0xf3f41f=_0xf3f41f||0xc8;return function(_0x35a52c){if(_0x35a52c){return _0xb72173[_0xb087('0x31')](_0xf3f41f)[_0xb087('0x33')](_0x35a52c);}};}function respondWithFilteredResult(_0x18058c,_0x31e3e6){return function(_0xb0baf6){if(_0xb0baf6){var _0x263259=typeof _0x31e3e6['offset']===_0xb087('0x34')&&typeof _0x31e3e6[_0xb087('0x35')]===_0xb087('0x34');var _0x15c9ac=_0xb0baf6[_0xb087('0x36')];var _0xa6d90c=_0x263259?0x0:_0x31e3e6[_0xb087('0x37')];var _0x13fb2f=_0x263259?_0xb0baf6['count']:_0x31e3e6['offset']+_0x31e3e6[_0xb087('0x35')];var _0xedd164;if(_0x13fb2f>=_0x15c9ac){_0x13fb2f=_0x15c9ac;_0xedd164=0xc8;}else{_0xedd164=0xce;}_0x18058c['status'](_0xedd164);return _0x18058c[_0xb087('0x38')](_0xb087('0x39'),_0xa6d90c+'-'+_0x13fb2f+'/'+_0x15c9ac)[_0xb087('0x33')](_0xb0baf6);}return null;};}function patchUpdates(_0x32b20d){return function(_0x3c61c4){try{jsonpatch[_0xb087('0x3a')](_0x3c61c4,_0x32b20d,!![]);}catch(_0xa2ac06){return BPromise[_0xb087('0x3b')](_0xa2ac06);}return _0x3c61c4[_0xb087('0x3c')]();};}function saveUpdates(_0xdc7033,_0x442a5e){return function(_0x3069b5){if(_0x3069b5){return _0x3069b5['update'](_0xdc7033)[_0xb087('0x26')](function(_0x501ebe){return _0x501ebe;});}return null;};}function removeEntity(_0x906987,_0x296e9b){return function(_0x738e68){if(_0x738e68){return _0x738e68[_0xb087('0x3d')]()[_0xb087('0x26')](function(){var _0x1a4b17=_0x738e68[_0xb087('0x3e')]({'plain':!![]});var _0x29df58=_0xb087('0x3f');return db['UserProfileResource']['destroy']({'where':{'type':_0x29df58,'resourceId':_0x1a4b17['id']}})[_0xb087('0x26')](function(){return _0x738e68;});})[_0xb087('0x26')](function(){_0x906987[_0xb087('0x31')](0xcc)[_0xb087('0x32')]();});}};}function handleEntityNotFound(_0x1982a8,_0x5ca9b6){return function(_0x1f24f4){if(!_0x1f24f4){_0x1982a8[_0xb087('0x30')](0x194);}return _0x1f24f4;};}function handleError(_0x48524e,_0x480e22){_0x480e22=_0x480e22||0x1f4;return function(_0x1726c2){logger[_0xb087('0x2d')](_0x1726c2[_0xb087('0x40')]);if(_0x1726c2['name']){delete _0x1726c2[_0xb087('0x41')];}_0x48524e[_0xb087('0x31')](_0x480e22)[_0xb087('0x42')](_0x1726c2);};}exports[_0xb087('0x43')]=function(_0x3c8f51,_0x5db6b9){var _0x7e1315={'include':[{'model':db['MailServerIn'],'as':_0xb087('0x44')},{'model':db[_0xb087('0x45')],'as':'Smtp'},{'model':db[_0xb087('0x46')],'as':'mandatoryDispositionPause'}]},_0x5bb6bc={},_0x18e23f={'count':0x0,'rows':[]};var _0x46d12a=_['map'](db[_0xb087('0x47')][_0xb087('0x48')],function(_0x364b1d){return{'name':_0x364b1d[_0xb087('0x49')],'type':_0x364b1d[_0xb087('0x4a')][_0xb087('0x4b')]};});_0x5bb6bc[_0xb087('0x4c')]=_['map'](_0x46d12a,_0xb087('0x41'));_0x5bb6bc['query']=_[_0xb087('0x4d')](_0x3c8f51[_0xb087('0x4e')]);_0x5bb6bc['filters']=_[_0xb087('0x4f')](_0x5bb6bc[_0xb087('0x4c')],_0x5bb6bc[_0xb087('0x4e')]);_0x7e1315['attributes']=_[_0xb087('0x4f')](_0x5bb6bc['model'],qs[_0xb087('0x50')](_0x3c8f51[_0xb087('0x4e')]['fields']));_0x7e1315[_0xb087('0x51')]=_0x7e1315[_0xb087('0x51')]['length']?_0x7e1315[_0xb087('0x51')]:_0x5bb6bc[_0xb087('0x4c')];if(!_0x3c8f51['query'][_0xb087('0x52')](_0xb087('0x53'))){_0x7e1315[_0xb087('0x35')]=qs[_0xb087('0x35')](_0x3c8f51['query']['limit']);_0x7e1315[_0xb087('0x37')]=qs[_0xb087('0x37')](_0x3c8f51[_0xb087('0x4e')][_0xb087('0x37')]);}_0x7e1315[_0xb087('0x54')]=qs[_0xb087('0x55')](_0x3c8f51['query']['sort']);_0x7e1315[_0xb087('0x56')]=qs['filters'](_[_0xb087('0x57')](_0x3c8f51[_0xb087('0x4e')],_0x5bb6bc[_0xb087('0x58')]),_0x46d12a);if(_0x3c8f51[_0xb087('0x4e')]['filter']){_0x7e1315[_0xb087('0x56')]=_['merge'](_0x7e1315[_0xb087('0x56')],{'$or':_[_0xb087('0x59')](_0x46d12a,function(_0xcb56c7){if(_0xcb56c7[_0xb087('0x4a')]!==_0xb087('0x5a')){var _0x5d7abd={};_0x5d7abd[_0xcb56c7[_0xb087('0x41')]]={'$like':'%'+_0x3c8f51[_0xb087('0x4e')][_0xb087('0x5b')]+'%'};return _0x5d7abd;}})});}_0x7e1315=_['merge']({},_0x7e1315,_0x3c8f51[_0xb087('0x5c')]);var _0x4f0bc3={'where':_0x7e1315['where']};return db[_0xb087('0x47')][_0xb087('0x36')](_0x4f0bc3)['then'](function(_0x4362d4){_0x18e23f[_0xb087('0x36')]=_0x4362d4;if(_0x3c8f51[_0xb087('0x4e')]['includeAll']){_0x7e1315['include']=[{'all':!![]}];}return db[_0xb087('0x47')]['findAll'](_0x7e1315);})['then'](function(_0x1e52e4){_0x18e23f[_0xb087('0x5d')]=_0x1e52e4;return _0x18e23f;})[_0xb087('0x26')](respondWithFilteredResult(_0x5db6b9,_0x7e1315))[_0xb087('0x5e')](handleError(_0x5db6b9,null));};exports[_0xb087('0x5f')]=function(_0x148642,_0xbd849d){var _0xfb8827={'raw':![],'where':{'id':_0x148642[_0xb087('0x60')]['id']},'include':[{'model':db[_0xb087('0x61')],'as':_0xb087('0x44')},{'model':db['MailServerOut'],'as':_0xb087('0x62')},{'model':db[_0xb087('0x46')],'as':'mandatoryDispositionPause'}]},_0x1fe178={};_0x1fe178[_0xb087('0x4c')]=_[_0xb087('0x4d')](db[_0xb087('0x47')][_0xb087('0x48')]);_0x1fe178[_0xb087('0x4e')]=_[_0xb087('0x4d')](_0x148642[_0xb087('0x4e')]);_0x1fe178[_0xb087('0x58')]=_[_0xb087('0x4f')](_0x1fe178[_0xb087('0x4c')],_0x1fe178[_0xb087('0x4e')]);_0xfb8827['attributes']=_[_0xb087('0x4f')](_0x1fe178['model'],qs[_0xb087('0x50')](_0x148642['query'][_0xb087('0x50')]));_0xfb8827[_0xb087('0x51')]=_0xfb8827[_0xb087('0x51')][_0xb087('0x63')]?_0xfb8827[_0xb087('0x51')]:_0x1fe178[_0xb087('0x4c')];if(_0x148642[_0xb087('0x4e')][_0xb087('0x64')]){_0xfb8827[_0xb087('0x65')]=[{'all':!![]}];}_0xfb8827=_[_0xb087('0x66')]({},_0xfb8827,_0x148642[_0xb087('0x5c')]);return db[_0xb087('0x47')][_0xb087('0x67')](_0xfb8827)[_0xb087('0x26')](handleEntityNotFound(_0xbd849d,null))[_0xb087('0x26')](respondWithResult(_0xbd849d,null))[_0xb087('0x5e')](handleError(_0xbd849d,null));};exports[_0xb087('0x68')]=function(_0x3185c4,_0x40ff74){if(_0x3185c4[_0xb087('0x69')]['id']){delete _0x3185c4[_0xb087('0x69')]['id'];}return db[_0xb087('0x47')]['find']({'where':{'id':_0x3185c4[_0xb087('0x60')]['id']},'include':[{'model':db[_0xb087('0x61')],'as':_0xb087('0x44')},{'model':db['MailServerOut'],'as':_0xb087('0x62')},{'model':db[_0xb087('0x46')],'as':'mandatoryDispositionPause'}]})[_0xb087('0x26')](handleEntityNotFound(_0x40ff74,null))[_0xb087('0x26')](saveUpdates(_0x3185c4[_0xb087('0x69')],null))['then'](function(_0x133c58){if(_0x133c58&&_0x3185c4[_0xb087('0x69')][_0xb087('0x44')]){return db[_0xb087('0x61')][_0xb087('0x68')](_0x3185c4[_0xb087('0x69')][_0xb087('0x44')],{'where':{'MailAccountId':_0x133c58['id']}})[_0xb087('0x26')](function(){return _0x133c58;});}return _0x133c58;})['then'](function(_0x3cad9b){if(_0x3cad9b&&_0x3185c4[_0xb087('0x69')][_0xb087('0x62')]){return db['MailServerOut'][_0xb087('0x68')](_0x3185c4['body']['Smtp'],{'where':{'MailAccountId':_0x3cad9b['id']}})[_0xb087('0x26')](function(){return _0x3cad9b;});}return _0x3cad9b;})[_0xb087('0x26')](respondWithResult(_0x40ff74,null))['catch'](handleError(_0x40ff74,null));};exports[_0xb087('0x6a')]=function(_0x524d18,_0x52a263){return db[_0xb087('0x47')]['describe']()['then'](respondWithResult(_0x52a263,null))[_0xb087('0x5e')](handleError(_0x52a263,null));};exports['addDisposition']=function(_0x5ede2e,_0x3c97ab,_0x52d72a){if(_0x5ede2e[_0xb087('0x69')]['id']){delete _0x5ede2e['body']['id'];}return db[_0xb087('0x47')][_0xb087('0x67')]({'where':{'id':_0x5ede2e[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x3c97ab,null))[_0xb087('0x26')](function(_0x3174bb){if(_0x3174bb){_0x5ede2e['body'][_0xb087('0x6b')]=_0x3174bb['id'];return db['Disposition'][_0xb087('0x6c')](_0x5ede2e[_0xb087('0x69')]);}})[_0xb087('0x26')](respondWithResult(_0x3c97ab,null))['catch'](handleError(_0x3c97ab,null));};exports[_0xb087('0x6d')]=function(_0x5d935c,_0xae3ff,_0x3784f7){var _0x66f15b={'raw':![],'where':{}};var _0x2ee63f={};var _0x16cb87={'count':0x0,'rows':[]};return db[_0xb087('0x47')]['findOne']({'where':{'id':_0x5d935c[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0xae3ff,null))['then'](function(_0x25a45f){if(_0x25a45f){_0x2ee63f['model']=_[_0xb087('0x4d')](db[_0xb087('0x6e')][_0xb087('0x48')]);_0x2ee63f[_0xb087('0x4e')]=_[_0xb087('0x4d')](_0x5d935c[_0xb087('0x4e')]);_0x2ee63f[_0xb087('0x58')]=_[_0xb087('0x4f')](_0x2ee63f['model'],_0x2ee63f['query']);_0x66f15b['attributes']=_[_0xb087('0x4f')](_0x2ee63f['model'],qs[_0xb087('0x50')](_0x5d935c['query'][_0xb087('0x50')]));_0x66f15b[_0xb087('0x51')]=_0x66f15b[_0xb087('0x51')][_0xb087('0x63')]?_0x66f15b['attributes']:_0x2ee63f[_0xb087('0x4c')];if(!_0x5d935c['query'][_0xb087('0x52')](_0xb087('0x53'))){_0x66f15b[_0xb087('0x35')]=qs[_0xb087('0x35')](_0x5d935c['query']['limit']);_0x66f15b[_0xb087('0x37')]=qs['offset'](_0x5d935c[_0xb087('0x4e')][_0xb087('0x37')]);}_0x66f15b[_0xb087('0x54')]=qs[_0xb087('0x55')](_0x5d935c['query']['sort']);_0x66f15b[_0xb087('0x56')]=qs['filters'](_[_0xb087('0x57')](_0x5d935c[_0xb087('0x4e')],_0x2ee63f[_0xb087('0x58')]));_0x66f15b[_0xb087('0x56')][_0xb087('0x6b')]=_0x25a45f['id'];if(_0x5d935c['query'][_0xb087('0x5b')]){_0x66f15b[_0xb087('0x56')]=_['merge'](_0x66f15b['where'],{'$or':_['map'](_0x66f15b[_0xb087('0x51')],function(_0x193bbc){var _0x1a4337={};_0x1a4337[_0x193bbc]={'$like':'%'+_0x5d935c[_0xb087('0x4e')][_0xb087('0x5b')]+'%'};return _0x1a4337;})});}_0x66f15b=_[_0xb087('0x66')]({},_0x66f15b,_0x5d935c['options']);return db[_0xb087('0x6e')][_0xb087('0x36')]({'where':_0x66f15b[_0xb087('0x56')]})[_0xb087('0x26')](function(_0x42f6bd){_0x16cb87[_0xb087('0x36')]=_0x42f6bd;if(_0x5d935c[_0xb087('0x4e')]['includeAll']){_0x66f15b[_0xb087('0x65')]=[{'all':!![]}];}return db[_0xb087('0x6e')][_0xb087('0x6f')](_0x66f15b);})['then'](function(_0x14a7f1){_0x16cb87['rows']=_0x14a7f1;return _0x16cb87;});}})[_0xb087('0x26')](respondWithFilteredResult(_0xae3ff,_0x66f15b))[_0xb087('0x5e')](handleError(_0xae3ff,null));};exports[_0xb087('0x70')]=function(_0x267dea,_0x463791,_0x451768){return db['MailAccount']['find']({'where':{'id':_0x267dea[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x463791,null))['then'](function(_0x1e91a1){if(_0x1e91a1){return _0x1e91a1[_0xb087('0x70')](_0x267dea[_0xb087('0x4e')][_0xb087('0x71')]);}})[_0xb087('0x26')](respondWithStatusCode(_0x463791,null))[_0xb087('0x5e')](handleError(_0x463791,null));};exports['addAnswer']=function(_0x15ff29,_0x141859,_0x2c92f6){if(_0x15ff29[_0xb087('0x69')]['id']){delete _0x15ff29[_0xb087('0x69')]['id'];}return db[_0xb087('0x47')][_0xb087('0x67')]({'where':{'id':_0x15ff29[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x141859,null))['then'](function(_0x2dc3ef){if(_0x2dc3ef){_0x15ff29['body'][_0xb087('0x6b')]=_0x2dc3ef['id'];return db[_0xb087('0x72')]['create'](_0x15ff29[_0xb087('0x69')]);}})[_0xb087('0x26')](respondWithResult(_0x141859,null))[_0xb087('0x5e')](handleError(_0x141859,null));};exports[_0xb087('0x73')]=function(_0x3f48b6,_0x472b44,_0x573ba1){var _0xacc1f4={'raw':![],'where':{}};var _0x28dcea={};var _0x3a2b4c={'count':0x0,'rows':[]};return db[_0xb087('0x47')][_0xb087('0x74')]({'where':{'id':_0x3f48b6['params']['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x472b44,null))[_0xb087('0x26')](function(_0x401430){if(_0x401430){_0x28dcea[_0xb087('0x4c')]=_[_0xb087('0x4d')](db[_0xb087('0x72')][_0xb087('0x48')]);_0x28dcea[_0xb087('0x4e')]=_[_0xb087('0x4d')](_0x3f48b6[_0xb087('0x4e')]);_0x28dcea[_0xb087('0x58')]=_['intersection'](_0x28dcea['model'],_0x28dcea[_0xb087('0x4e')]);_0xacc1f4[_0xb087('0x51')]=_[_0xb087('0x4f')](_0x28dcea[_0xb087('0x4c')],qs[_0xb087('0x50')](_0x3f48b6['query'][_0xb087('0x50')]));_0xacc1f4[_0xb087('0x51')]=_0xacc1f4[_0xb087('0x51')][_0xb087('0x63')]?_0xacc1f4[_0xb087('0x51')]:_0x28dcea[_0xb087('0x4c')];if(!_0x3f48b6['query'][_0xb087('0x52')]('nolimit')){_0xacc1f4['limit']=qs[_0xb087('0x35')](_0x3f48b6[_0xb087('0x4e')][_0xb087('0x35')]);_0xacc1f4[_0xb087('0x37')]=qs['offset'](_0x3f48b6[_0xb087('0x4e')][_0xb087('0x37')]);}_0xacc1f4['order']=qs[_0xb087('0x55')](_0x3f48b6['query']['sort']);_0xacc1f4[_0xb087('0x56')]=qs[_0xb087('0x58')](_[_0xb087('0x57')](_0x3f48b6[_0xb087('0x4e')],_0x28dcea[_0xb087('0x58')]));_0xacc1f4['where'][_0xb087('0x6b')]=_0x401430['id'];if(_0x3f48b6[_0xb087('0x4e')][_0xb087('0x5b')]){_0xacc1f4[_0xb087('0x56')]=_['merge'](_0xacc1f4['where'],{'$or':_['map'](_0xacc1f4['attributes'],function(_0x17f0af){var _0x3296c9={};_0x3296c9[_0x17f0af]={'$like':'%'+_0x3f48b6[_0xb087('0x4e')][_0xb087('0x5b')]+'%'};return _0x3296c9;})});}_0xacc1f4=_[_0xb087('0x66')]({},_0xacc1f4,_0x3f48b6[_0xb087('0x5c')]);return db[_0xb087('0x72')]['count']({'where':_0xacc1f4['where']})[_0xb087('0x26')](function(_0x13d558){_0x3a2b4c[_0xb087('0x36')]=_0x13d558;if(_0x3f48b6[_0xb087('0x4e')]['includeAll']){_0xacc1f4[_0xb087('0x65')]=[{'all':!![]}];}return db['CannedAnswer'][_0xb087('0x6f')](_0xacc1f4);})['then'](function(_0xf1c76e){_0x3a2b4c[_0xb087('0x5d')]=_0xf1c76e;return _0x3a2b4c;});}})[_0xb087('0x26')](respondWithFilteredResult(_0x472b44,_0xacc1f4))[_0xb087('0x5e')](handleError(_0x472b44,null));};exports['removeAnswers']=function(_0x2c7013,_0x4b396b,_0x51a443){return db['MailAccount'][_0xb087('0x67')]({'where':{'id':_0x2c7013['params']['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x4b396b,null))[_0xb087('0x26')](function(_0x3e0c31){if(_0x3e0c31){return _0x3e0c31[_0xb087('0x75')](_0x2c7013[_0xb087('0x4e')][_0xb087('0x71')]);}})[_0xb087('0x26')](respondWithStatusCode(_0x4b396b,null))[_0xb087('0x5e')](handleError(_0x4b396b,null));};exports[_0xb087('0x6c')]=function(_0x13b3da,_0x2d2524){var _0x455751={'name':_0x13b3da[_0xb087('0x69')][_0xb087('0x41')],'key':_0x13b3da[_0xb087('0x69')][_0xb087('0x4b')],'email':_0x13b3da[_0xb087('0x69')][_0xb087('0x76')],'ListId':_0x13b3da['body'][_0xb087('0x77')],'active':!_['isNil'](_0x13b3da[_0xb087('0x69')][_0xb087('0x78')])?_0x13b3da[_0xb087('0x69')][_0xb087('0x78')]:!![],'description':_0x13b3da[_0xb087('0x69')][_0xb087('0x79')]||null,'Imap':{},'Smtp':{}};if(_[_0xb087('0x7a')](_0x13b3da['body']['cservice'])){if(_0x13b3da['body'][_0xb087('0x7b')]){_0x455751[_0xb087('0x44')][_0xb087('0x7c')]=_0x455751[_0xb087('0x62')][_0xb087('0x7c')]=_0x13b3da[_0xb087('0x69')][_0xb087('0x7d')];_0x455751[_0xb087('0x44')][_0xb087('0x7e')]=_0x455751['Smtp'][_0xb087('0x7f')]=_0x13b3da['body'][_0xb087('0x80')];}else{_0x455751[_0xb087('0x44')]['authentication']=_0x455751['Smtp'][_0xb087('0x81')]=![];}_0x455751[_0xb087('0x44')][_0xb087('0x82')]=_0x13b3da[_0xb087('0x69')]['Imap'][_0xb087('0x82')];_0x455751[_0xb087('0x44')]['port']=_0x13b3da['body'][_0xb087('0x44')]['port'];_0x455751['Smtp'][_0xb087('0x82')]=_0x13b3da['body'][_0xb087('0x62')][_0xb087('0x82')];_0x455751[_0xb087('0x62')][_0xb087('0x83')]=_0x13b3da[_0xb087('0x69')][_0xb087('0x62')][_0xb087('0x83')];}else{_0x455751[_0xb087('0x44')]['service']=_0x455751[_0xb087('0x62')]['service']=_0x13b3da['body'][_0xb087('0x84')];_0x455751[_0xb087('0x44')][_0xb087('0x7c')]=_0x455751['Smtp'][_0xb087('0x7c')]=_0x13b3da[_0xb087('0x69')][_0xb087('0x7d')];_0x455751[_0xb087('0x44')]['password']=_0x455751[_0xb087('0x62')][_0xb087('0x7f')]=_0x13b3da[_0xb087('0x69')][_0xb087('0x80')];}return db[_0xb087('0x47')][_0xb087('0x6c')](_0x455751,{'include':[{'model':db[_0xb087('0x45')],'as':'Smtp'},{'model':db[_0xb087('0x61')],'as':_0xb087('0x44')}]})[_0xb087('0x26')](function(_0x29a36d){var _0xb16aed=_0x13b3da[_0xb087('0x7c')]['get']({'plain':!![]});if(!_0xb16aed)throw new Error(_0xb087('0x85'));if(_0xb16aed[_0xb087('0x86')]===_0xb087('0x7c')){var _0x5c2abd=_0x29a36d['get']({'plain':!![]});return db[_0xb087('0x87')][_0xb087('0x67')]({'where':{'name':_0xb087('0x3f'),'userProfileId':_0xb16aed[_0xb087('0x88')]},'raw':!![]})[_0xb087('0x26')](function(_0x18ff20){if(_0x18ff20&&_0x18ff20[_0xb087('0x89')]===0x0){return db[_0xb087('0x8a')][_0xb087('0x6c')]({'name':_0x5c2abd[_0xb087('0x41')],'resourceId':_0x5c2abd['id'],'type':_0x18ff20['name'],'sectionId':_0x18ff20['id']},{})[_0xb087('0x26')](function(){return _0x29a36d;});}else{return _0x29a36d;}})[_0xb087('0x5e')](function(_0x19fa47){logger[_0xb087('0x2d')](_0xb087('0x8b'),_0x19fa47);throw _0x19fa47;});}return _0x29a36d;})['then'](respondWithResult(_0x2d2524,0xc9))[_0xb087('0x5e')](handleError(_0x2d2524,null));};exports[_0xb087('0x8c')]=function(_0x189e0a,_0x2843f1,_0x52268a){return db[_0xb087('0x47')]['findOne']({'where':{'id':_0x189e0a[_0xb087('0x60')]['id']}})['then'](handleEntityNotFound(_0x2843f1,null))['then'](function(_0x321da9){if(_0x321da9){return _0x321da9[_0xb087('0x8c')]();}return null;})[_0xb087('0x26')](respondWithResult(_0x2843f1,null))['catch'](handleError(_0x2843f1,null));};exports['addImap']=function(_0x2dfe13,_0x2a9c59,_0x169e2b){if(_0x2dfe13[_0xb087('0x69')]['id']){delete _0x2dfe13[_0xb087('0x69')]['id'];}return db['MailAccount'][_0xb087('0x67')]({'where':{'id':_0x2dfe13[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x2a9c59,null))[_0xb087('0x26')](function(_0x7e5672){if(_0x7e5672){_0x2dfe13[_0xb087('0x69')]['MailAccountId']=_0x7e5672['id'];return db['MailServerIn'][_0xb087('0x6c')](_0x2dfe13[_0xb087('0x69')]);}})['then'](respondWithResult(_0x2a9c59,null))[_0xb087('0x5e')](handleError(_0x2a9c59,null));};exports['removeImap']=function(_0x5984d9,_0x471c54,_0x3193c8){return db[_0xb087('0x47')][_0xb087('0x74')]({'where':{'id':_0x5984d9[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x471c54,null))[_0xb087('0x26')](function(_0x163e43){if(_0x163e43){return _0x163e43[_0xb087('0x8d')](null);}return null;})[_0xb087('0x26')](respondWithStatusCode(_0x471c54,null))['catch'](handleError(_0x471c54,null));};exports['getSmtp']=function(_0x5e704a,_0x2ebe58,_0x5947e7){return db[_0xb087('0x47')]['findOne']({'where':{'id':_0x5e704a['params']['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x2ebe58,null))[_0xb087('0x26')](function(_0x1c8bad){if(_0x1c8bad){return _0x1c8bad[_0xb087('0x8e')]();}return null;})[_0xb087('0x26')](respondWithResult(_0x2ebe58,null))[_0xb087('0x5e')](handleError(_0x2ebe58,null));};exports[_0xb087('0x8f')]=function(_0x778002,_0x28ebe4,_0x2fdcee){if(_0x778002['body']['id']){delete _0x778002[_0xb087('0x69')]['id'];}return db['MailAccount'][_0xb087('0x67')]({'where':{'id':_0x778002[_0xb087('0x60')]['id']}})['then'](handleEntityNotFound(_0x28ebe4,null))[_0xb087('0x26')](function(_0x3ff329){if(_0x3ff329){_0x778002['body']['MailAccountId']=_0x3ff329['id'];return db[_0xb087('0x45')]['create'](_0x778002[_0xb087('0x69')]);}})['then'](respondWithResult(_0x28ebe4,null))[_0xb087('0x5e')](handleError(_0x28ebe4,null));};exports[_0xb087('0x90')]=function(_0x153a64,_0x59f732,_0x140eb0){return db[_0xb087('0x47')][_0xb087('0x74')]({'where':{'id':_0x153a64[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x59f732,null))[_0xb087('0x26')](function(_0x309f5e){if(_0x309f5e){return _0x309f5e[_0xb087('0x91')](null);}return null;})[_0xb087('0x26')](respondWithStatusCode(_0x59f732,null))[_0xb087('0x5e')](handleError(_0x59f732,null));};exports['addInteraction']=function(_0x3a5432,_0x520aa9,_0x31d03d){return db[_0xb087('0x92')][_0xb087('0x67')]({'where':{'id':_0x3a5432['params']['id']}})['then'](handleEntityNotFound(_0x520aa9,null))['then'](function(_0x45b670){if(_0x45b670){return _0x45b670[_0xb087('0x93')](_0x3a5432[_0xb087('0x69')][_0xb087('0x71')],_[_0xb087('0x94')](_0x3a5432[_0xb087('0x69')],[_0xb087('0x71'),'id'])||{});}})['then'](respondWithResult(_0x520aa9,null))[_0xb087('0x5e')](handleError(_0x520aa9,null));};exports['getInteractions']=function(_0x485301,_0x4fc063,_0x4cde01){var _0x2b301e={'raw':![],'where':{}};var _0x368cb8={};var _0x5d42dc={'count':0x0,'rows':[]};return db[_0xb087('0x47')][_0xb087('0x74')]({'where':{'id':_0x485301[_0xb087('0x60')]['id']}})['then'](handleEntityNotFound(_0x4fc063,null))[_0xb087('0x26')](function(_0x11a1a5){if(_0x11a1a5){_0x368cb8['model']=_[_0xb087('0x4d')](db[_0xb087('0x92')][_0xb087('0x48')]);_0x368cb8[_0xb087('0x4e')]=_['keys'](_0x485301[_0xb087('0x4e')]);_0x368cb8[_0xb087('0x58')]=_[_0xb087('0x4f')](_0x368cb8[_0xb087('0x4c')],_0x368cb8[_0xb087('0x4e')]);_0x2b301e[_0xb087('0x51')]=_['intersection'](_0x368cb8[_0xb087('0x4c')],qs['fields'](_0x485301[_0xb087('0x4e')][_0xb087('0x50')]));_0x2b301e['attributes']=_0x2b301e[_0xb087('0x51')]['length']?_0x2b301e['attributes']:_0x368cb8['model'];if(!_0x485301[_0xb087('0x4e')][_0xb087('0x52')](_0xb087('0x53'))){_0x2b301e[_0xb087('0x35')]=qs[_0xb087('0x35')](_0x485301[_0xb087('0x4e')][_0xb087('0x35')]);_0x2b301e[_0xb087('0x37')]=qs['offset'](_0x485301[_0xb087('0x4e')]['offset']);}_0x2b301e['order']=qs[_0xb087('0x55')](_0x485301[_0xb087('0x4e')][_0xb087('0x55')]);_0x2b301e['where']=qs['filters'](_[_0xb087('0x57')](_0x485301[_0xb087('0x4e')],_0x368cb8[_0xb087('0x58')]));_0x2b301e[_0xb087('0x56')][_0xb087('0x6b')]=_0x11a1a5['id'];if(_0x485301[_0xb087('0x4e')]['filter']){_0x2b301e['where']=_['merge'](_0x2b301e[_0xb087('0x56')],{'$or':_[_0xb087('0x59')](_0x2b301e[_0xb087('0x51')],function(_0xb0d87b){var _0x507d30={};_0x507d30[_0xb0d87b]={'$like':'%'+_0x485301[_0xb087('0x4e')][_0xb087('0x5b')]+'%'};return _0x507d30;})});}_0x2b301e=_[_0xb087('0x66')]({},_0x2b301e,_0x485301[_0xb087('0x5c')]);return db[_0xb087('0x92')][_0xb087('0x36')]({'where':_0x2b301e[_0xb087('0x56')]})[_0xb087('0x26')](function(_0x120012){_0x5d42dc[_0xb087('0x36')]=_0x120012;if(_0x485301['query']['includeAll']){_0x2b301e[_0xb087('0x65')]=[{'model':db[_0xb087('0x95')],'as':_0xb087('0x96'),'required':![]},{'model':db[_0xb087('0x97')],'as':_0xb087('0x98'),'attributes':[_0xb087('0x41'),_0xb087('0x99'),_0xb087('0x9a')],'required':![]},{'model':db[_0xb087('0x9b')],'as':_0xb087('0x9c'),'attributes':['id',_0xb087('0x41'),_0xb087('0x9d')],'where':_0x485301[_0xb087('0x4e')][_0xb087('0x9e')]?{'id':_0x485301[_0xb087('0x4e')][_0xb087('0x9e')]}:undefined,'required':_0x485301[_0xb087('0x4e')][_0xb087('0x9e')]?!![]:![]}];}return db[_0xb087('0x92')][_0xb087('0x6f')](_0x2b301e);})[_0xb087('0x26')](function(_0x321da5){_0x5d42dc[_0xb087('0x5d')]=_0x321da5;return _0x5d42dc;});}})[_0xb087('0x26')](respondWithFilteredResult(_0x4fc063,_0x2b301e))[_0xb087('0x5e')](handleError(_0x4fc063,null));};exports[_0xb087('0x9f')]=function addApplications(_0x44b10a,_0x35f9fe){var _0x328c81=_0x44b10a[_0xb087('0x60')]['id'];var _0x159082=_0x44b10a[_0xb087('0x69')];var _0x1e6fe5=0xc8;var _0x30dbee=null;return db[_0xb087('0xa0')][_0xb087('0xa1')]({'isolationLevel':db['sequelize']['Transaction']['ISOLATION_LEVELS'][_0xb087('0xa2')]},function(_0x185dbe){return db['MailAccount'][_0xb087('0x74')]({'where':{'id':_0x328c81},'transaction':_0x185dbe})['then'](function(_0x1d0f86){if(_0x1d0f86){return db[_0xb087('0xa3')][_0xb087('0x3d')]({'where':{'MailAccountId':_0x328c81},'transaction':_0x185dbe})[_0xb087('0x26')](function(){var _0x39f701=_[_0xb087('0x59')](_0x159082,function(_0x4eb557){_0x4eb557[_0xb087('0x6b')]=_0x328c81;return _0x4eb557;});return db[_0xb087('0xa3')][_0xb087('0xa4')](_0x39f701,{'transaction':_0x185dbe});});}else{_0x1e6fe5=0x194;_0x30dbee=[];}});})[_0xb087('0x26')](function(){if(_0x1e6fe5!==0x194){return db['MailApplication'][_0xb087('0xa5')]({'where':{'MailAccountId':_0x328c81},'order':_0xb087('0xa6')})[_0xb087('0x26')](function(_0x2b2488){_0x30dbee=_0x2b2488;});}})['catch'](function(_0x2445ae){_0x1e6fe5=0x1f4;logger[_0xb087('0x2d')](_0x2445ae[_0xb087('0x40')]);if(_0x2445ae[_0xb087('0x41')]){delete _0x2445ae[_0xb087('0x41')];}_0x30dbee=_0x2445ae;})[_0xb087('0xa7')](function(){if(_0x30dbee===null){_0x35f9fe[_0xb087('0x30')](_0x1e6fe5);}else{if(_0x1e6fe5===0x1f4){_0x35f9fe[_0xb087('0x31')](_0x1e6fe5)[_0xb087('0x42')](_0x30dbee);}else{_0x35f9fe[_0xb087('0x31')](_0x1e6fe5)[_0xb087('0x33')](_0x30dbee);}}});};exports[_0xb087('0xa8')]=function(_0x157df6,_0x1964f3,_0x1e6d6a){var _0x293490={};var _0x37a398={};var _0x98b866;var _0x5bc402;return db[_0xb087('0x47')][_0xb087('0x74')]({'where':{'id':_0x157df6[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x1964f3,null))['then'](function(_0x27ef1f){if(_0x27ef1f){_0x98b866=_0x27ef1f;_0x37a398[_0xb087('0x4c')]=_[_0xb087('0x4d')](db[_0xb087('0xa3')][_0xb087('0x48')]);_0x37a398['query']=_[_0xb087('0x4d')](_0x157df6[_0xb087('0x4e')]);_0x37a398[_0xb087('0x58')]=_[_0xb087('0x4f')](_0x37a398[_0xb087('0x4c')],_0x37a398[_0xb087('0x4e')]);_0x293490[_0xb087('0x51')]=_[_0xb087('0x4f')](_0x37a398['model'],qs[_0xb087('0x50')](_0x157df6[_0xb087('0x4e')]['fields']));_0x293490[_0xb087('0x51')]=_0x293490[_0xb087('0x51')]['length']?_0x293490[_0xb087('0x51')]:_0x37a398[_0xb087('0x4c')];_0x293490[_0xb087('0x54')]=qs[_0xb087('0x55')](_0x157df6[_0xb087('0x4e')][_0xb087('0x55')]);_0x293490[_0xb087('0x56')]=qs['filters'](_[_0xb087('0x57')](_0x157df6[_0xb087('0x4e')],_0x37a398[_0xb087('0x58')]));if(_0x157df6[_0xb087('0x4e')][_0xb087('0x5b')]){_0x293490[_0xb087('0x56')]=_['merge'](_0x293490[_0xb087('0x56')],{'$or':_[_0xb087('0x59')](_0x293490[_0xb087('0x51')],function(_0x3a3835){var _0x1b2e76={};_0x1b2e76[_0x3a3835]={'$like':'%'+_0x157df6['query'][_0xb087('0x5b')]+'%'};return _0x1b2e76;})});}_0x293490=_[_0xb087('0x66')]({},_0x293490,_0x157df6[_0xb087('0x5c')]);return _0x98b866['getApplications'](_0x293490);}})[_0xb087('0x26')](function(_0x56e01a){if(_0x56e01a){_0x5bc402=_0x56e01a[_0xb087('0x63')];if(!_0x157df6['query'][_0xb087('0x52')]('nolimit')){_0x293490[_0xb087('0x35')]=qs[_0xb087('0x35')](_0x157df6['query'][_0xb087('0x35')]);_0x293490['offset']=qs['offset'](_0x157df6['query'][_0xb087('0x37')]);}return _0x98b866['getApplications'](_0x293490);}})[_0xb087('0x26')](function(_0x4f3881){if(_0x4f3881){return _0x4f3881?{'count':_0x5bc402,'rows':_0x4f3881}:null;}})['then'](respondWithResult(_0x1964f3,null))[_0xb087('0x5e')](handleError(_0x1964f3,null));};exports[_0xb087('0xa9')]=function(_0x371655,_0x150873,_0x2358de){var _0x546272={'raw':!![],'where':{}};var _0x2b7645={};var _0x1d3759={'count':0x0,'rows':[]};return db[_0xb087('0x47')][_0xb087('0x74')]({'where':{'id':_0x371655[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x150873,null))[_0xb087('0x26')](function(_0x2ec638){if(_0x2ec638){_0x2b7645['model']=_[_0xb087('0x4d')](db[_0xb087('0xaa')][_0xb087('0x48')]);_0x2b7645['query']=_[_0xb087('0x4d')](_0x371655[_0xb087('0x4e')]);_0x2b7645[_0xb087('0x58')]=_['intersection'](_0x2b7645['model'],_0x2b7645[_0xb087('0x4e')]);_0x546272[_0xb087('0x51')]=_[_0xb087('0x4f')](_0x2b7645[_0xb087('0x4c')],qs['fields'](_0x371655[_0xb087('0x4e')][_0xb087('0x50')]));_0x546272[_0xb087('0x51')]=_0x546272[_0xb087('0x51')][_0xb087('0x63')]?_0x546272['attributes']:_0x2b7645['model'];if(!_0x371655[_0xb087('0x4e')][_0xb087('0x52')]('nolimit')){_0x546272[_0xb087('0x35')]=qs[_0xb087('0x35')](_0x371655[_0xb087('0x4e')][_0xb087('0x35')]);_0x546272[_0xb087('0x37')]=qs[_0xb087('0x37')](_0x371655[_0xb087('0x4e')]['offset']);}_0x546272[_0xb087('0x54')]=qs[_0xb087('0x55')](_0x371655[_0xb087('0x4e')]['sort']);_0x546272['where']=qs[_0xb087('0x58')](_[_0xb087('0x57')](_0x371655[_0xb087('0x4e')],_0x2b7645[_0xb087('0x58')]));_0x546272['where'][_0xb087('0x6b')]=_0x2ec638['id'];if(_0x371655[_0xb087('0x4e')][_0xb087('0x5b')]){_0x546272['where']=_['merge'](_0x546272[_0xb087('0x56')],{'$or':_['map'](_0x546272[_0xb087('0x51')],function(_0x377dae){var _0x4a6a6e={};_0x4a6a6e[_0x377dae]={'$like':'%'+_0x371655['query'][_0xb087('0x5b')]+'%'};return _0x4a6a6e;})});}if(_0x371655[_0xb087('0x4e')][_0xb087('0xab')]){var _0x3ba7ff=_0x371655['query'][_0xb087('0xab')]['split'](',');var _0x52cc1a={};_0x52cc1a[_0x3ba7ff[0x0]]={'$gte':moment(_0x3ba7ff[0x1])[_0xb087('0xac')](_0xb087('0xad'))};_0x546272[_0xb087('0x56')]=_[_0xb087('0x66')](_0x546272[_0xb087('0x56')],_0x52cc1a);}_0x546272=_['merge']({},_0x546272,_0x371655[_0xb087('0x5c')]);return db['MailMessage']['count']({'where':_0x546272[_0xb087('0x56')]})[_0xb087('0x26')](function(_0x5eb46a){_0x1d3759[_0xb087('0x36')]=_0x5eb46a;if(_0x371655[_0xb087('0x4e')][_0xb087('0x64')]){_0x546272[_0xb087('0x65')]=[{'all':!![]}];}return db['MailMessage'][_0xb087('0x6f')](_0x546272);})[_0xb087('0x26')](function(_0x2e97fc){if(_0x371655[_0xb087('0x4e')][_0xb087('0xae')]==='true'){for(var _0x57bd9c=0x0;_0x57bd9c<_0x2e97fc['length'];_0x57bd9c++){_0x2e97fc[_0x57bd9c][_0xb087('0x69')]=juice(_0x2e97fc[_0x57bd9c]['body']);}}_0x1d3759[_0xb087('0x5d')]=_0x2e97fc;return _0x1d3759;});}})[_0xb087('0x26')](respondWithFilteredResult(_0x150873,_0x546272))['catch'](handleError(_0x150873,null));};exports[_0xb087('0x42')]=function(_0x2ab831,_0x1c2dc4,_0x38bbf9){var _0xad3eae,_0xb6682a={},_0x1dbeb1;if(_0x2ab831[_0xb087('0x69')]['to']){_0x1dbeb1=_0x2ab831['body']['to'][_0xb087('0xaf')](',')[0x0];}return db[_0xb087('0x47')][_0xb087('0x67')]({'where':{'id':_0x2ab831['params']['id']},'include':[{'model':db[_0xb087('0xb0')],'as':_0xb087('0xb1'),'include':[{'model':db[_0xb087('0x95')],'as':_0xb087('0xb2'),'where':{'email':_0x1dbeb1},'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xb087('0x45')],'as':_0xb087('0x62'),'raw':!![]}]})[_0xb087('0x26')](handleEntityNotFound(_0x1c2dc4,null))[_0xb087('0x26')](function(_0x44407b){if(_0x44407b){_0xad3eae=_0x44407b;if(_0x44407b[_0xb087('0x62')]){if(_['isNil'](_0x2ab831['body'][_0xb087('0xb3')])){_0x2ab831[_0xb087('0x69')][_0xb087('0xb3')]=util[_0xb087('0xac')]('%s\x20<%s>',_0x44407b[_0xb087('0x41')],_0x44407b[_0xb087('0x76')]||_0x44407b[_0xb087('0x62')][_0xb087('0x7c')]);}if(_0x2ab831[_0xb087('0x69')][_0xb087('0xb4')]&&_0x2ab831[_0xb087('0x69')][_0xb087('0xb4')][_0xb087('0x63')]){for(var _0x1b9d1f=0x0;_0x1b9d1f<_0x2ab831[_0xb087('0x69')][_0xb087('0xb4')][_0xb087('0x63')];_0x1b9d1f+=0x1){_0x2ab831[_0xb087('0x69')][_0xb087('0xb4')][_0x1b9d1f]={'filename':_0x2ab831[_0xb087('0x69')][_0xb087('0xb4')][_0x1b9d1f][_0xb087('0x41')],'path':path[_0xb087('0xb5')](config[_0xb087('0xb6')],'server/files/attachments',_0x2ab831[_0xb087('0x69')][_0xb087('0xb4')][_0x1b9d1f]['basename'])};}}var _0x114872={'tls':{'rejectUnauthorized':![]}};if(_[_0xb087('0x7a')](_0x44407b[_0xb087('0x62')]['service'])){if(_0x44407b[_0xb087('0x62')]['authentication']){_0x114872['auth']={'user':_0x44407b[_0xb087('0x62')][_0xb087('0x7c')],'pass':_0x44407b[_0xb087('0x62')][_0xb087('0x7f')]};}_0x114872['host']=_0x44407b[_0xb087('0x62')]['host'];_0x114872[_0xb087('0x83')]=_0x44407b[_0xb087('0x62')][_0xb087('0x83')];_0x114872['secure']=_0x44407b['Smtp'][_0xb087('0xb7')];}else{_0x114872['service']=_0x44407b['Smtp'][_0xb087('0xb8')];_0x114872[_0xb087('0xb9')]={'user':_0x44407b['Smtp'][_0xb087('0x7c')],'pass':_0x44407b[_0xb087('0x62')][_0xb087('0x7f')]};}return respondWithRpcPromise(_0xb087('0xba'),'sendMail',{'account':_0x114872,'message':_0x2ab831['body']});}else{throw new Error(_0xb087('0xbb'));}}})[_0xb087('0x26')](function(_0xbcd18f){if(_0xbcd18f){_0xb6682a=_0xbcd18f;if(_0xad3eae[_0xb087('0xb1')]){if(_0xad3eae['List'][_0xb087('0xb2')][_0xb087('0x63')]){return _0xad3eae[_0xb087('0xb1')][_0xb087('0xb2')][0x0];}else{return db[_0xb087('0x95')][_0xb087('0x6c')](_[_0xb087('0x1d')](_0x2ab831[_0xb087('0x69')],{'firstName':_0x2ab831['body']['to'],'email':_0x2ab831[_0xb087('0x69')]['to'],'phone':_0x2ab831[_0xb087('0x69')]['to'],'ListId':_0xad3eae[_0xb087('0x77')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0xb087('0x26')](function(_0x13acd8){if(_0x13acd8){var _0x37a7dd={'UserId':_0x2ab831[_0xb087('0x7c')]['id'],'ContactId':_0x13acd8['id'],'MailAccountId':_0xad3eae['id'],'inReplyTo':_0xb6682a[_0xb087('0xbc')],'to':_0x2ab831[_0xb087('0x69')]['from'],'cc':_0x2ab831['body']['cc'],'subject':_0x2ab831[_0xb087('0x69')][_0xb087('0xbd')],'attach':_0x2ab831[_0xb087('0x69')][_0xb087('0xbe')],'firstMsgDirection':_0xb087('0xbf'),'lastMsgAt':moment()[_0xb087('0xac')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'out','Messages':[_[_0xb087('0x66')](_0x2ab831[_0xb087('0x69')],{'messageId':_0xb6682a['messageId'],'sentAt':moment()['format'](_0xb087('0xad')),'read':!![],'MailAccountId':_0xad3eae['id'],'UserId':_0x2ab831[_0xb087('0x7c')]['id'],'ContactId':_0x13acd8['id']})]};if(_0x2ab831[_0xb087('0x69')]['Interaction']){_0x37a7dd=_[_0xb087('0x66')](_0x37a7dd,_0x2ab831[_0xb087('0x69')]['Interaction']);}return db[_0xb087('0x92')]['create'](_0x37a7dd,{'include':[{'model':db['MailMessage'],'as':'Messages'}]});}})['then'](respondWithResult(_0x1c2dc4,null))['catch'](handleError(_0x1c2dc4,null));};exports[_0xb087('0xc0')]=function(_0x4979c3,_0x2e39e2,_0x30e254){return db['MailAccount'][_0xb087('0x67')]({'where':{'id':_0x4979c3[_0xb087('0x60')]['id']},'include':[{'model':db[_0xb087('0x45')],'as':_0xb087('0x62'),'raw':!![]}]})['then'](handleEntityNotFound(_0x2e39e2,null))[_0xb087('0x26')](function(_0x19da7c){if(_0x19da7c&&_0x19da7c[_0xb087('0x62')]){var _0x5df18d={'id':_0x19da7c['id'],'tls':{'rejectUnauthorized':![]}};if(_0x19da7c['Smtp'][_0xb087('0xb8')]){_0x5df18d[_0xb087('0xb8')]=_0x19da7c[_0xb087('0x62')][_0xb087('0xb8')];}else{_0x5df18d[_0xb087('0x82')]=_0x19da7c['Smtp'][_0xb087('0x82')];_0x5df18d['port']=_0x19da7c[_0xb087('0x62')][_0xb087('0x83')];_0x5df18d['secure']=_0x19da7c[_0xb087('0x62')]['secure'];}if(_0x19da7c[_0xb087('0x62')][_0xb087('0x81')]){_0x5df18d[_0xb087('0xb9')]={'user':_0x19da7c[_0xb087('0x62')][_0xb087('0x7c')],'pass':_0x19da7c[_0xb087('0x62')][_0xb087('0x7f')]};}return respondWithRpcPromise(_0xb087('0xc1'),'verifySmtp',{'account':_0x5df18d});}})[_0xb087('0x26')](respondWithResult(_0x2e39e2,null))[_0xb087('0x5e')](handleError(_0x2e39e2,null));};exports[_0xb087('0x3d')]=function(_0x3cd37b,_0x389f27){return db[_0xb087('0x47')][_0xb087('0x67')]({'where':{'id':_0x3cd37b[_0xb087('0x60')]['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x389f27,null))['then'](function(_0x3d1098){if(_0x3d1098&&_0x3d1098[_0xb087('0xb8')]){throw new db[(_0xb087('0xc2'))][(_0xb087('0xc3'))](_0xb087('0xc4'));}return _0x3d1098;})[_0xb087('0x26')](removeEntity(_0x389f27,null))['catch'](handleError(_0x389f27,null));};exports[_0xb087('0xc5')]=function(_0x8d057b,_0x43fc39,_0x49ca06){return db[_0xb087('0x47')][_0xb087('0x67')]({'where':{'id':_0x8d057b[_0xb087('0x60')]['id']}})['then'](handleEntityNotFound(_0x43fc39,null))[_0xb087('0x26')](function(_0x297604){if(_0x297604){return _0x297604['addAgents'](_0x8d057b[_0xb087('0x69')][_0xb087('0x71')],_[_0xb087('0x94')](_0x8d057b[_0xb087('0x69')],[_0xb087('0x71'),'id'])||{})['spread'](function(_0x435b3e){for(var _0x32aac9=0x0;_0x32aac9<_0x8d057b[_0xb087('0x69')][_0xb087('0x71')]['length'];_0x32aac9+=0x1){socket['emit'](_0xb087('0xc6'),{'UserId':Number(_0x8d057b['body'][_0xb087('0x71')][_0x32aac9]),'MailAccountId':Number(_0x8d057b[_0xb087('0x60')]['id'])});}return _0x435b3e;});}})['then'](respondWithResult(_0x43fc39,null))[_0xb087('0x5e')](handleError(_0x43fc39,null));};exports[_0xb087('0xc7')]=function(_0x508d48,_0x4b0bec,_0x444d3d){return db[_0xb087('0x47')][_0xb087('0x67')]({'where':{'id':_0x508d48['params']['id']}})['then'](handleEntityNotFound(_0x4b0bec,null))['then'](function(_0xcd18e0){if(_0xcd18e0){return _0xcd18e0[_0xb087('0xc7')](_0x508d48[_0xb087('0x4e')]['ids'])['then'](function(){if(_[_0xb087('0xc8')](_0x508d48[_0xb087('0x4e')][_0xb087('0x71')])){for(var _0x28e3bf=0x0;_0x28e3bf<_0x508d48[_0xb087('0x4e')][_0xb087('0x71')][_0xb087('0x63')];_0x28e3bf+=0x1){socket[_0xb087('0xc9')](_0xb087('0xca'),{'UserId':Number(_0x508d48[_0xb087('0x4e')][_0xb087('0x71')][_0x28e3bf]),'MailAccountId':Number(_0x508d48[_0xb087('0x60')]['id'])});}}else{socket[_0xb087('0xc9')](_0xb087('0xca'),{'UserId':Number(_0x508d48[_0xb087('0x4e')][_0xb087('0x71')]),'MailAccountId':Number(_0x508d48['params']['id'])});}});}})[_0xb087('0x26')](respondWithStatusCode(_0x4b0bec,null))[_0xb087('0x5e')](handleError(_0x4b0bec,null));};exports['getAgents']=function(_0x541a85,_0x98b953,_0x453438){var _0x45c246={};var _0xf1bfca={};var _0x540848;var _0x2c7b82;return db[_0xb087('0x47')]['findOne']({'where':{'id':_0x541a85['params']['id']}})[_0xb087('0x26')](handleEntityNotFound(_0x98b953,null))[_0xb087('0x26')](function(_0x2a30f5){if(_0x2a30f5){_0x540848=_0x2a30f5;_0xf1bfca['model']=_[_0xb087('0x4d')](db[_0xb087('0x97')][_0xb087('0x48')]);_0xf1bfca[_0xb087('0x4e')]=_[_0xb087('0x4d')](_0x541a85[_0xb087('0x4e')]);_0xf1bfca[_0xb087('0x58')]=_['intersection'](_0xf1bfca[_0xb087('0x4c')],_0xf1bfca[_0xb087('0x4e')]);_0x45c246[_0xb087('0x51')]=_[_0xb087('0x4f')](_0xf1bfca[_0xb087('0x4c')],qs['fields'](_0x541a85['query'][_0xb087('0x50')]));_0x45c246[_0xb087('0x51')]=_0x45c246[_0xb087('0x51')]['length']?_0x45c246[_0xb087('0x51')]:_0xf1bfca[_0xb087('0x4c')];_0x45c246[_0xb087('0x54')]=qs['sort'](_0x541a85[_0xb087('0x4e')][_0xb087('0x55')]);_0x45c246[_0xb087('0x56')]=qs['filters'](_['pick'](_0x541a85['query'],_0xf1bfca[_0xb087('0x58')]));if(_0x541a85[_0xb087('0x4e')][_0xb087('0x5b')]){_0x45c246[_0xb087('0x56')]=_[_0xb087('0x66')](_0x45c246[_0xb087('0x56')],{'$or':_[_0xb087('0x59')](_0x45c246[_0xb087('0x51')],function(_0x348c92){var _0x3d7c9d={};_0x3d7c9d[_0x348c92]={'$like':'%'+_0x541a85[_0xb087('0x4e')][_0xb087('0x5b')]+'%'};return _0x3d7c9d;})});}_0x45c246=_[_0xb087('0x66')]({},_0x45c246,_0x541a85[_0xb087('0x5c')]);return _0x540848[_0xb087('0xcb')](_0x45c246);}})[_0xb087('0x26')](function(_0x5b57e8){if(_0x5b57e8){_0x2c7b82=_0x5b57e8[_0xb087('0x63')];if(!_0x541a85[_0xb087('0x4e')][_0xb087('0x52')](_0xb087('0x53'))){_0x45c246[_0xb087('0x35')]=qs[_0xb087('0x35')](_0x541a85[_0xb087('0x4e')][_0xb087('0x35')]);_0x45c246['offset']=qs[_0xb087('0x37')](_0x541a85[_0xb087('0x4e')]['offset']);}return _0x540848['getAgents'](_0x45c246);}})[_0xb087('0x26')](function(_0x3d4e7a){if(_0x3d4e7a){return _0x3d4e7a?{'count':_0x2c7b82,'rows':_0x3d4e7a}:null;}})[_0xb087('0x26')](respondWithResult(_0x98b953,null))['catch'](handleError(_0x98b953,null));};
\ No newline at end of file
index d64a7eb..ea0b7c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac41=['exports','events','../../mysqldb','MailAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x18f27e,_0x4cee11){var _0x59a719=function(_0x304fd7){while(--_0x304fd7){_0x18f27e['push'](_0x18f27e['shift']());}};_0x59a719(++_0x4cee11);}(_0xac41,0xdd));var _0x1ac4=function(_0x17bbb6,_0x5aa0aa){_0x17bbb6=_0x17bbb6-0x0;var _0x186c1e=_0xac41[_0x17bbb6];return _0x186c1e;};'use strict';var EventEmitter=require(_0x1ac4('0x0'));var MailAccount=require(_0x1ac4('0x1'))['db'][_0x1ac4('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x1ac4('0x3')](0x0);var events={'afterCreate':_0x1ac4('0x4'),'afterUpdate':_0x1ac4('0x5'),'afterDestroy':_0x1ac4('0x6')};function emitEvent(_0x3a1763){return function(_0x54386c,_0x2c33d6,_0x216c0d){MailAccountEvents[_0x1ac4('0x7')](_0x3a1763+':'+_0x54386c['id'],_0x54386c);MailAccountEvents[_0x1ac4('0x7')](_0x3a1763,_0x54386c);_0x216c0d(null);};}for(var e in events){if(events[_0x1ac4('0x8')](e)){var event=events[e];MailAccount[_0x1ac4('0x9')](e,emitEvent(event));}}module[_0x1ac4('0xa')]=MailAccountEvents;
\ No newline at end of file
+var _0x4b38=['events','MailAccount','save','update','emit','hasOwnProperty','exports'];(function(_0x2d959a,_0x4d8b26){var _0x2fa8d6=function(_0x500312){while(--_0x500312){_0x2d959a['push'](_0x2d959a['shift']());}};_0x2fa8d6(++_0x4d8b26);}(_0x4b38,0x157));var _0x84b3=function(_0x512604,_0x2d8f62){_0x512604=_0x512604-0x0;var _0x51d81d=_0x4b38[_0x512604];return _0x51d81d;};'use strict';var EventEmitter=require(_0x84b3('0x0'));var MailAccount=require('../../mysqldb')['db'][_0x84b3('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x84b3('0x2'),'afterUpdate':_0x84b3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3edec0){return function(_0x35b038,_0x5f4e5b,_0x1d9ea8){MailAccountEvents[_0x84b3('0x4')](_0x3edec0+':'+_0x35b038['id'],_0x35b038);MailAccountEvents['emit'](_0x3edec0,_0x35b038);_0x1d9ea8(null);};}for(var e in events){if(events[_0x84b3('0x5')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0x84b3('0x6')]=MailAccountEvents;
\ No newline at end of file
index 090e795..827702b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e01=['bluebird','request-promise','rimraf','../../config/environment','./mailAccount.attributes','exports','define','mail_accounts','../../config/logger','api','moment'];(function(_0x8a565b,_0x49df9f){var _0x231c1d=function(_0x1e51c8){while(--_0x1e51c8){_0x8a565b['push'](_0x8a565b['shift']());}};_0x231c1d(++_0x49df9f);}(_0x5e01,0x1e1));var _0x15e0=function(_0x3b5049,_0x495a94){_0x3b5049=_0x3b5049-0x0;var _0x12454e=_0x5e01[_0x3b5049];return _0x12454e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x15e0('0x0'))(_0x15e0('0x1'));var moment=require(_0x15e0('0x2'));var BPromise=require(_0x15e0('0x3'));var rp=require(_0x15e0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x15e0('0x5'));var config=require(_0x15e0('0x6'));var attributes=require(_0x15e0('0x7'));module[_0x15e0('0x8')]=function(_0x102c7d,_0x3e0a5a){return _0x102c7d[_0x15e0('0x9')]('MailAccount',attributes,{'tableName':_0x15e0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x950a=['exports','define','MailAccount','mail_accounts','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x1e03df,_0x1a8bbf){var _0x28ac8b=function(_0x4412c0){while(--_0x4412c0){_0x1e03df['push'](_0x1e03df['shift']());}};_0x28ac8b(++_0x1a8bbf);}(_0x950a,0xa9));var _0xa950=function(_0x561f49,_0x1ccfd8){_0x561f49=_0x561f49-0x0;var _0x1c8a47=_0x950a[_0x561f49];return _0x1c8a47;};'use strict';var _=require(_0xa950('0x0'));var util=require(_0xa950('0x1'));var logger=require(_0xa950('0x2'))('api');var moment=require(_0xa950('0x3'));var BPromise=require(_0xa950('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa950('0x5'));var rimraf=require(_0xa950('0x6'));var config=require('../../config/environment');var attributes=require('./mailAccount.attributes');module[_0xa950('0x7')]=function(_0x132b38,_0x427c40){return _0x132b38[_0xa950('0x8')](_0xa950('0x9'),attributes,{'tableName':_0xa950('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88de761..c2c4658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eb3=['contact','attachments','originTo','originCc','originChannel','Email','ChatOfflineMessageId','Attachments','UserId','name','agent','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','options','raw','attributes','limit','include','map','model','GetMailAccount','ShowMailAccount','MailAccount','find','where','NotifyMailAccount','body','mail','difference','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','List','Contacts','DESC','MailServerOut','Smtp','get','Applications','applications','list','priority','asc','autoclose','length','close','*,*,*,*','ListId','create','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','inReplyTo','Contact\x20not\x20found','spread','interaction','created'];(function(_0xf3a73,_0x2b3d10){var _0x3ddfd5=function(_0x55dd6f){while(--_0x55dd6f){_0xf3a73['push'](_0xf3a73['shift']());}};_0x3ddfd5(++_0x2b3d10);}(_0x4eb3,0x73));var _0x34eb=function(_0x5c9008,_0x4bb3a6){_0x5c9008=_0x5c9008-0x0;var _0x31a5e0=_0x4eb3[_0x5c9008];return _0x31a5e0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x34eb('0x0'));var BPromise=require(_0x34eb('0x1'));var rs=require(_0x34eb('0x2'));var fs=require('fs');var Redis=require(_0x34eb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x34eb('0x4'));var logger=require('../../config/logger')(_0x34eb('0x5'));var config=require(_0x34eb('0x6'));var jayson=require(_0x34eb('0x7'));var client=jayson['client'][_0x34eb('0x8')]({'port':0x232c});config[_0x34eb('0x9')]=_[_0x34eb('0xa')](config[_0x34eb('0x9')],{'host':_0x34eb('0xb'),'port':0x18eb});var socket=require(_0x34eb('0xc'))(new Redis(config[_0x34eb('0x9')]));require(_0x34eb('0xd'))[_0x34eb('0xe')](socket);function respondWithRpcPromise(_0x4cae14,_0x40752a,_0xd6b84a){return new BPromise(function(_0xffe734,_0x11c4c0){return client[_0x34eb('0xf')](_0x4cae14,_0xd6b84a)[_0x34eb('0x10')](function(_0x518a86){logger[_0x34eb('0x11')](_0x34eb('0x12'),_0x40752a,_0x34eb('0x13'));logger[_0x34eb('0x14')](_0x34eb('0x15'),_0x40752a,'request\x20sent',JSON[_0x34eb('0x16')](_0x518a86));if(_0x518a86[_0x34eb('0x17')]){if(_0x518a86['error'][_0x34eb('0x18')]===0x1f4){logger[_0x34eb('0x17')](_0x34eb('0x12'),_0x40752a,_0x518a86[_0x34eb('0x17')][_0x34eb('0x19')]);return _0x11c4c0(_0x518a86['error'][_0x34eb('0x19')]);}logger[_0x34eb('0x17')](_0x34eb('0x12'),_0x40752a,_0x518a86['error'][_0x34eb('0x19')]);return _0xffe734(_0x518a86['error']['message']);}else{logger[_0x34eb('0x11')](_0x34eb('0x12'),_0x40752a,_0x34eb('0x13'));_0xffe734(_0x518a86[_0x34eb('0x1a')][_0x34eb('0x19')]);}})[_0x34eb('0x1b')](function(_0x34da25){logger[_0x34eb('0x17')](_0x34eb('0x12'),_0x40752a,_0x34da25);_0x11c4c0(_0x34da25);});});}exports['GetMailAccount']=function(_0x50d5e9){var _0x274a6d=this;return new Promise(function(_0x4d9e22,_0x37552a){return db['MailAccount']['findAll']({'raw':_0x50d5e9[_0x34eb('0x1c')]?_0x50d5e9[_0x34eb('0x1c')][_0x34eb('0x1d')]===undefined?!![]:![]:!![],'where':_0x50d5e9[_0x34eb('0x1c')]?_0x50d5e9['options']['where']||null:null,'attributes':_0x50d5e9[_0x34eb('0x1c')]?_0x50d5e9[_0x34eb('0x1c')][_0x34eb('0x1e')]||null:null,'limit':_0x50d5e9[_0x34eb('0x1c')]?_0x50d5e9[_0x34eb('0x1c')][_0x34eb('0x1f')]||null:null,'include':_0x50d5e9[_0x34eb('0x1c')]?_0x50d5e9[_0x34eb('0x1c')][_0x34eb('0x20')]?_[_0x34eb('0x21')](_0x50d5e9[_0x34eb('0x1c')][_0x34eb('0x20')],function(_0x47c686){return{'model':db[_0x47c686[_0x34eb('0x22')]],'as':_0x47c686['as'],'attributes':_0x47c686[_0x34eb('0x1e')],'include':_0x47c686['include']?_[_0x34eb('0x21')](_0x47c686[_0x34eb('0x20')],function(_0x160592){return{'model':db[_0x160592[_0x34eb('0x22')]],'as':_0x160592['as'],'attributes':_0x160592[_0x34eb('0x1e')],'include':_0x160592[_0x34eb('0x20')]?_[_0x34eb('0x21')](_0x160592[_0x34eb('0x20')],function(_0x322eba){return{'model':db[_0x322eba[_0x34eb('0x22')]],'as':_0x322eba['as'],'attributes':_0x322eba[_0x34eb('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x34eb('0x10')](function(_0x1d0d09){logger['info']('GetMailAccount',_0x50d5e9);logger['debug']('GetMailAccount',_0x50d5e9,JSON['stringify'](_0x1d0d09));_0x4d9e22(_0x1d0d09);})[_0x34eb('0x1b')](function(_0x2e887f){logger[_0x34eb('0x17')](_0x34eb('0x23'),_0x2e887f['message'],_0x50d5e9);_0x37552a(_0x274a6d[_0x34eb('0x17')](0x1f4,_0x2e887f[_0x34eb('0x19')]));});});};exports[_0x34eb('0x24')]=function(_0x56e789){var _0x2420ef=this;return new Promise(function(_0x261ba0,_0x4ac2f0){return db[_0x34eb('0x25')][_0x34eb('0x26')]({'raw':_0x56e789[_0x34eb('0x1c')]?_0x56e789[_0x34eb('0x1c')][_0x34eb('0x1d')]===undefined?!![]:![]:!![],'where':_0x56e789[_0x34eb('0x1c')]?_0x56e789['options'][_0x34eb('0x27')]||null:null,'attributes':_0x56e789[_0x34eb('0x1c')]?_0x56e789['options']['attributes']||null:null,'include':_0x56e789[_0x34eb('0x1c')]?_0x56e789[_0x34eb('0x1c')]['include']?_['map'](_0x56e789[_0x34eb('0x1c')][_0x34eb('0x20')],function(_0x464e2d){return{'model':db[_0x464e2d[_0x34eb('0x22')]],'as':_0x464e2d['as'],'attributes':_0x464e2d['attributes'],'include':_0x464e2d[_0x34eb('0x20')]?_[_0x34eb('0x21')](_0x464e2d['include'],function(_0xa62dcd){return{'model':db[_0xa62dcd['model']],'as':_0xa62dcd['as'],'attributes':_0xa62dcd[_0x34eb('0x1e')],'include':_0xa62dcd[_0x34eb('0x20')]?_[_0x34eb('0x21')](_0xa62dcd[_0x34eb('0x20')],function(_0x5073ec){return{'model':db[_0x5073ec[_0x34eb('0x22')]],'as':_0x5073ec['as'],'attributes':_0x5073ec['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2df925){logger[_0x34eb('0x11')]('ShowMailAccount',_0x56e789);logger[_0x34eb('0x14')](_0x34eb('0x24'),_0x56e789,JSON[_0x34eb('0x16')](_0x2df925));_0x261ba0(_0x2df925);})['catch'](function(_0x428d70){logger[_0x34eb('0x17')]('ShowMailAccount',_0x428d70[_0x34eb('0x19')],_0x56e789);_0x4ac2f0(_0x2420ef['error'](0x1f4,_0x428d70[_0x34eb('0x19')]));});});};exports[_0x34eb('0x28')]=function(_0x120038){var _0x32be1d=this;return new Promise(function(_0x279d81,_0x13fd7c){var _0x4f8e9d={'body':_0x120038[_0x34eb('0x29')],'channel':_0x34eb('0x2a')};var _0x555eef=_[_0x34eb('0x2b')](_['keys'](db['CmContact']['rawAttributes']),[_0x34eb('0x2c'),_0x34eb('0x2d'),_0x34eb('0x2e'),'ListId']);var _0x17e143=![];if(_0x120038[_0x34eb('0x29')]['id']){delete _0x120038[_0x34eb('0x29')]['id'];}if(_[_0x34eb('0x2f')](_0x120038['body'][_0x34eb('0x30')])){return _0x13fd7c(_0x32be1d[_0x34eb('0x17')](0x1f4,_0x34eb('0x31')));}if(_['isNil'](_0x120038[_0x34eb('0x29')][_0x34eb('0x29')])||_0x120038[_0x34eb('0x29')][_0x34eb('0x29')]===''){return _0x13fd7c(_0x32be1d[_0x34eb('0x17')](0x1f4,_0x34eb('0x32')));}if(_[_0x34eb('0x2f')](_0x120038[_0x34eb('0x29')][_0x34eb('0x33')])){return _0x13fd7c(_0x32be1d[_0x34eb('0x17')](0x1f4,_0x34eb('0x34')+_0x555eef));}if(!_[_0x34eb('0x35')](_0x555eef,_0x120038[_0x34eb('0x29')][_0x34eb('0x33')])){return _0x13fd7c(_0x32be1d[_0x34eb('0x17')](0x1f4,_0x34eb('0x36')+_0x555eef));}var _0x481482={};_0x481482[_0x120038['body'][_0x34eb('0x33')]]=_0x120038['body'][_0x34eb('0x30')];return db[_0x34eb('0x25')][_0x34eb('0x26')]({'where':{'id':_0x120038[_0x34eb('0x37')]['id']},'include':[{'model':db['CmList'],'as':_0x34eb('0x38'),'include':[{'model':db['CmContact'],'as':_0x34eb('0x39'),'where':_0x481482,'limit':0x1,'order':[[_0x34eb('0x2d'),_0x34eb('0x3a')]]}]},{'model':db['MailApplication'],'as':'Applications'},{'model':db[_0x34eb('0x3b')],'as':_0x34eb('0x3c')}]})['then'](function(_0x1b0e2d){if(_0x1b0e2d&&_0x1b0e2d[_0x34eb('0x38')]){var _0x37780e=_0x1b0e2d[_0x34eb('0x3d')]({'plain':!![]});_0x4f8e9d['account']=_['omit'](_0x37780e,[_0x34eb('0x3e'),_0x34eb('0x38')]);_0x4f8e9d[_0x34eb('0x3f')]=_0x37780e[_0x34eb('0x3e')];_0x4f8e9d[_0x34eb('0x40')]=_0x37780e[_0x34eb('0x38')];_0x4f8e9d[_0x34eb('0x3f')]=_['orderBy'](_0x4f8e9d[_0x34eb('0x3f')],[_0x34eb('0x41')],[_0x34eb('0x42')]);if(_0x4f8e9d[_0x34eb('0x37')]&&_0x4f8e9d[_0x34eb('0x37')][_0x34eb('0x43')]){_0x4f8e9d['applications']['push']({'id':0x0,'priority':_0x4f8e9d[_0x34eb('0x3f')][_0x34eb('0x44')]+0x1,'app':_0x34eb('0x45'),'appdata':_0x34eb('0x43'),'interval':_0x34eb('0x46')});}if(_0x4f8e9d[_0x34eb('0x37')][_0x34eb('0x3e')]){delete _0x4f8e9d[_0x34eb('0x37')]['Applications'];}if(_0x4f8e9d['account'][_0x34eb('0x38')]){delete _0x4f8e9d['account']['List'];}if(_0x37780e[_0x34eb('0x38')][_0x34eb('0x39')][_0x34eb('0x44')]){return _0x37780e[_0x34eb('0x38')][_0x34eb('0x39')][0x0];}var _0x1e5136=_[_0x34eb('0xa')](_0x120038[_0x34eb('0x29')],{'firstName':_0x120038[_0x34eb('0x29')][_0x34eb('0x30')],'ListId':_0x37780e[_0x34eb('0x47')]});_0x1e5136[_0x120038[_0x34eb('0x29')][_0x34eb('0x33')]]=_0x120038[_0x34eb('0x29')][_0x34eb('0x30')];return db['CmContact'][_0x34eb('0x48')](_0x1e5136);}else{throw new Error(_0x34eb('0x49'));}})[_0x34eb('0x10')](function(_0x17aa66){_0x4f8e9d['contact']=_0x17aa66;if(_0x17aa66){if(!_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['messageId']){_0x120038['body'][_0x34eb('0x19')][_0x34eb('0x4a')]=rs[_0x34eb('0x4b')]()+'\x20'+_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x30')];}var _0x2ff5aa={'ContactId':_0x17aa66['id'],'MailAccountId':_0x120038[_0x34eb('0x37')]['id'],'inReplyTo':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['messageId'],'to':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['from'],'cc':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['cc'],'subject':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x4c')],'attach':_0x120038[_0x34eb('0x29')]['message'][_0x34eb('0x4d')],'lastMsgAt':moment()[_0x34eb('0x4e')](_0x34eb('0x4f')),'lastMsgDirection':'in'};return db[_0x34eb('0x50')][_0x34eb('0x26')]({'where':{'closed':![],'MailAccountId':_0x120038['account']['id']},'include':[{'model':db[_0x34eb('0x51')],'as':'Messages','attributes':['messageId'],'where':{'messageId':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x52')]}}]})[_0x34eb('0x10')](function(_0x524063){if(_0x524063){return[_0x524063,![]];}return db[_0x34eb('0x50')]['create'](_0x2ff5aa)[_0x34eb('0x10')](function(_0x3092e4){return[_0x3092e4,!![]];});});}else{throw new Error(_0x34eb('0x53'));}})[_0x34eb('0x54')](function(_0x5b0790,_0x30e95f){if(_0x5b0790){_0x17e143=_0x30e95f;if(!_0x30e95f){return _0x5b0790['update']({'inReplyTo':_0x120038['body']['message'][_0x34eb('0x4a')],'to':_0x120038['body'][_0x34eb('0x19')][_0x34eb('0x30')],'cc':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['cc'],'subject':_0x120038[_0x34eb('0x29')]['message'][_0x34eb('0x4c')],'attach':_0x5b0790[_0x34eb('0x4d')]?_0x5b0790[_0x34eb('0x4d')]:_0x120038[_0x34eb('0x29')]['message'][_0x34eb('0x4d')],'substatus':null,'substatusAt':moment()[_0x34eb('0x4e')](_0x34eb('0x4f')),'lastMsgAt':moment()[_0x34eb('0x4e')](_0x34eb('0x4f')),'lastMsgDirection':'in'});}else{return _0x5b0790;}}})[_0x34eb('0x10')](function(_0x2fa0a5){_0x4f8e9d[_0x34eb('0x55')]=_0x2fa0a5['get']({'plain':!![]});_0x4f8e9d[_0x34eb('0x55')][_0x34eb('0x56')]=_0x17e143;return db[_0x34eb('0x51')][_0x34eb('0x48')]({'body':_0x120038[_0x34eb('0x29')]['body'],'MailAccountId':_0x120038[_0x34eb('0x37')]['id'],'MailInteractionId':_0x2fa0a5['id'],'direction':'in','ContactId':_0x4f8e9d[_0x34eb('0x57')]['id'],'messageId':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x4a')],'from':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x30')],'to':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['to'],'cc':_0x120038[_0x34eb('0x29')]['message']['cc'],'subject':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x4c')],'attach':_0x120038['body'][_0x34eb('0x19')][_0x34eb('0x4d')],'Attachments':_0x120038['body']['message'][_0x34eb('0x58')],'originTo':_0x120038['body'][_0x34eb('0x19')][_0x34eb('0x59')],'originCc':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x5a')],'bcc':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['bcc'],'ChatWebsiteId':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')]['ChatWebsiteId']||null,'originChannel':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x5b')]||_0x34eb('0x5c'),'ChatOfflineMessageId':_0x120038[_0x34eb('0x29')][_0x34eb('0x19')][_0x34eb('0x5d')]||null},{'include':[{'model':db['Attachment'],'as':_0x34eb('0x5e')}]});})[_0x34eb('0x10')](function(_0x962612){_0x4f8e9d[_0x34eb('0x19')]=_0x962612;if(_0x4f8e9d[_0x34eb('0x55')][_0x34eb('0x5f')]){return db['User'][_0x34eb('0x26')]({'attributes':['id',_0x34eb('0x60')],'where':{'id':_0x4f8e9d[_0x34eb('0x55')]['UserId']}})[_0x34eb('0x10')](function(_0x40bb10){if(_0x40bb10){_0x4f8e9d['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x34eb('0x61'),'appdata':_0x40bb10[_0x34eb('0x60')]+','+(_0x4f8e9d['account'][_0x34eb('0x62')]||0xa),'interval':_0x34eb('0x46')});}return respondWithRpcPromise(_0x34eb('0x63'),'startRouting',_0x4f8e9d);});}return respondWithRpcPromise(_0x34eb('0x63'),_0x34eb('0x64'),_0x4f8e9d);})[_0x34eb('0x10')](function(_0x1e52b1){_0x279d81(_0x1e52b1);})[_0x34eb('0x1b')](function(_0x23c289){_0x13fd7c(_0x32be1d['error'](0x1f4,_0x23c289[_0x34eb('0x19')]));});});};
\ No newline at end of file
+var _0x60f5=['MailAccount','findAll','options','raw','attributes','limit','include','model','map','then','GetMailAccount','find','where','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','Contacts','updatedAt','DESC','MailApplication','Applications','MailServerOut','Smtp','account','omit','applications','orderBy','priority','asc','autoclose','push','*,*,*,*','contact','messageId','generate','subject','attach','format','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','update','YYYY-MM-DD\x20HH:mm:ss','interaction','created','create','attachments','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','Start','startRouting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','info','debug','error','MailAccount,\x20%s,\x20%s','message','request\x20sent','catch'];(function(_0x3d66a8,_0x4cdbbb){var _0x5b1467=function(_0x11be13){while(--_0x11be13){_0x3d66a8['push'](_0x3d66a8['shift']());}};_0x5b1467(++_0x4cdbbb);}(_0x60f5,0x18a));var _0x560f=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x60f5[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var util=require(_0x560f('0x0'));var moment=require(_0x560f('0x1'));var BPromise=require(_0x560f('0x2'));var rs=require(_0x560f('0x3'));var fs=require('fs');var Redis=require(_0x560f('0x4'));var db=require(_0x560f('0x5'))['db'];var utils=require(_0x560f('0x6'));var logger=require(_0x560f('0x7'))(_0x560f('0x8'));var config=require('../../config/environment');var jayson=require(_0x560f('0x9'));var client=jayson[_0x560f('0xa')][_0x560f('0xb')]({'port':0x232c});config[_0x560f('0xc')]=_[_0x560f('0xd')](config[_0x560f('0xc')],{'host':_0x560f('0xe'),'port':0x18eb});var socket=require(_0x560f('0xf'))(new Redis(config[_0x560f('0xc')]));require(_0x560f('0x10'))[_0x560f('0x11')](socket);function respondWithRpcPromise(_0xc44f96,_0x340850,_0x39bde9){return new BPromise(function(_0x483bb1,_0x18c61d){return client[_0x560f('0x12')](_0xc44f96,_0x39bde9)['then'](function(_0x2c945d){logger[_0x560f('0x13')]('MailAccount,\x20%s,\x20%s',_0x340850,'request\x20sent');logger[_0x560f('0x14')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x340850,'request\x20sent',JSON['stringify'](_0x2c945d));if(_0x2c945d[_0x560f('0x15')]){if(_0x2c945d[_0x560f('0x15')]['code']===0x1f4){logger[_0x560f('0x15')](_0x560f('0x16'),_0x340850,_0x2c945d[_0x560f('0x15')]['message']);return _0x18c61d(_0x2c945d[_0x560f('0x15')][_0x560f('0x17')]);}logger[_0x560f('0x15')](_0x560f('0x16'),_0x340850,_0x2c945d[_0x560f('0x15')][_0x560f('0x17')]);return _0x483bb1(_0x2c945d[_0x560f('0x15')][_0x560f('0x17')]);}else{logger[_0x560f('0x13')](_0x560f('0x16'),_0x340850,_0x560f('0x18'));_0x483bb1(_0x2c945d['result'][_0x560f('0x17')]);}})[_0x560f('0x19')](function(_0x4cdc73){logger['error'](_0x560f('0x16'),_0x340850,_0x4cdc73);_0x18c61d(_0x4cdc73);});});}exports['GetMailAccount']=function(_0x454d1e){var _0x2ed499=this;return new Promise(function(_0x29aabe,_0x59f1f9){return db[_0x560f('0x1a')][_0x560f('0x1b')]({'raw':_0x454d1e[_0x560f('0x1c')]?_0x454d1e[_0x560f('0x1c')][_0x560f('0x1d')]===undefined?!![]:![]:!![],'where':_0x454d1e[_0x560f('0x1c')]?_0x454d1e[_0x560f('0x1c')]['where']||null:null,'attributes':_0x454d1e[_0x560f('0x1c')]?_0x454d1e['options'][_0x560f('0x1e')]||null:null,'limit':_0x454d1e[_0x560f('0x1c')]?_0x454d1e[_0x560f('0x1c')][_0x560f('0x1f')]||null:null,'include':_0x454d1e[_0x560f('0x1c')]?_0x454d1e[_0x560f('0x1c')][_0x560f('0x20')]?_['map'](_0x454d1e[_0x560f('0x1c')]['include'],function(_0x489756){return{'model':db[_0x489756[_0x560f('0x21')]],'as':_0x489756['as'],'attributes':_0x489756['attributes'],'include':_0x489756[_0x560f('0x20')]?_[_0x560f('0x22')](_0x489756[_0x560f('0x20')],function(_0x34f5e8){return{'model':db[_0x34f5e8[_0x560f('0x21')]],'as':_0x34f5e8['as'],'attributes':_0x34f5e8[_0x560f('0x1e')],'include':_0x34f5e8[_0x560f('0x20')]?_[_0x560f('0x22')](_0x34f5e8[_0x560f('0x20')],function(_0x17157b){return{'model':db[_0x17157b[_0x560f('0x21')]],'as':_0x17157b['as'],'attributes':_0x17157b[_0x560f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x560f('0x23')](function(_0x342ea5){logger[_0x560f('0x13')](_0x560f('0x24'),_0x454d1e);logger[_0x560f('0x14')](_0x560f('0x24'),_0x454d1e,JSON['stringify'](_0x342ea5));_0x29aabe(_0x342ea5);})[_0x560f('0x19')](function(_0x5813a8){logger[_0x560f('0x15')]('GetMailAccount',_0x5813a8[_0x560f('0x17')],_0x454d1e);_0x59f1f9(_0x2ed499['error'](0x1f4,_0x5813a8['message']));});});};exports['ShowMailAccount']=function(_0x35d0f8){var _0x14f9de=this;return new Promise(function(_0x319952,_0x5f7d28){return db['MailAccount'][_0x560f('0x25')]({'raw':_0x35d0f8[_0x560f('0x1c')]?_0x35d0f8[_0x560f('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x35d0f8['options']?_0x35d0f8['options'][_0x560f('0x26')]||null:null,'attributes':_0x35d0f8[_0x560f('0x1c')]?_0x35d0f8[_0x560f('0x1c')]['attributes']||null:null,'include':_0x35d0f8[_0x560f('0x1c')]?_0x35d0f8['options'][_0x560f('0x20')]?_[_0x560f('0x22')](_0x35d0f8[_0x560f('0x1c')][_0x560f('0x20')],function(_0x1334d3){return{'model':db[_0x1334d3[_0x560f('0x21')]],'as':_0x1334d3['as'],'attributes':_0x1334d3[_0x560f('0x1e')],'include':_0x1334d3[_0x560f('0x20')]?_['map'](_0x1334d3[_0x560f('0x20')],function(_0xc75110){return{'model':db[_0xc75110[_0x560f('0x21')]],'as':_0xc75110['as'],'attributes':_0xc75110['attributes'],'include':_0xc75110[_0x560f('0x20')]?_[_0x560f('0x22')](_0xc75110[_0x560f('0x20')],function(_0x22f485){return{'model':db[_0x22f485['model']],'as':_0x22f485['as'],'attributes':_0x22f485[_0x560f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x560f('0x23')](function(_0x4a3c9d){logger[_0x560f('0x13')](_0x560f('0x27'),_0x35d0f8);logger['debug']('ShowMailAccount',_0x35d0f8,JSON['stringify'](_0x4a3c9d));_0x319952(_0x4a3c9d);})['catch'](function(_0x510443){logger[_0x560f('0x15')](_0x560f('0x27'),_0x510443[_0x560f('0x17')],_0x35d0f8);_0x5f7d28(_0x14f9de[_0x560f('0x15')](0x1f4,_0x510443[_0x560f('0x17')]));});});};exports[_0x560f('0x28')]=function(_0x51f5db){var _0x269a48=this;return new Promise(function(_0x3d173c,_0x1c5ca7){var _0x5a2132={'body':_0x51f5db[_0x560f('0x29')],'channel':_0x560f('0x2a')};var _0x49b3df=_[_0x560f('0x2b')](_[_0x560f('0x2c')](db[_0x560f('0x2d')][_0x560f('0x2e')]),[_0x560f('0x2f'),'updatedAt',_0x560f('0x30'),_0x560f('0x31')]);var _0x3ef491=![];if(_0x51f5db['body']['id']){delete _0x51f5db[_0x560f('0x29')]['id'];}if(_[_0x560f('0x32')](_0x51f5db[_0x560f('0x29')]['from'])){return _0x1c5ca7(_0x269a48[_0x560f('0x15')](0x1f4,_0x560f('0x33')));}if(_[_0x560f('0x32')](_0x51f5db[_0x560f('0x29')][_0x560f('0x29')])||_0x51f5db[_0x560f('0x29')][_0x560f('0x29')]===''){return _0x1c5ca7(_0x269a48[_0x560f('0x15')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x51f5db['body'][_0x560f('0x34')])){return _0x1c5ca7(_0x269a48[_0x560f('0x15')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49b3df));}if(!_[_0x560f('0x35')](_0x49b3df,_0x51f5db[_0x560f('0x29')][_0x560f('0x34')])){return _0x1c5ca7(_0x269a48[_0x560f('0x15')](0x1f4,_0x560f('0x36')+_0x49b3df));}var _0x16783c={};_0x16783c[_0x51f5db['body'][_0x560f('0x34')]]=_0x51f5db[_0x560f('0x29')][_0x560f('0x37')];return db[_0x560f('0x1a')][_0x560f('0x25')]({'where':{'id':_0x51f5db['account']['id']},'include':[{'model':db[_0x560f('0x38')],'as':_0x560f('0x39'),'include':[{'model':db[_0x560f('0x2d')],'as':_0x560f('0x3a'),'where':_0x16783c,'limit':0x1,'order':[[_0x560f('0x3b'),_0x560f('0x3c')]]}]},{'model':db[_0x560f('0x3d')],'as':_0x560f('0x3e')},{'model':db[_0x560f('0x3f')],'as':_0x560f('0x40')}]})[_0x560f('0x23')](function(_0x21e5d4){if(_0x21e5d4&&_0x21e5d4[_0x560f('0x39')]){var _0x3fbf70=_0x21e5d4['get']({'plain':!![]});_0x5a2132[_0x560f('0x41')]=_[_0x560f('0x42')](_0x3fbf70,['Applications',_0x560f('0x39')]);_0x5a2132[_0x560f('0x43')]=_0x3fbf70[_0x560f('0x3e')];_0x5a2132['list']=_0x3fbf70[_0x560f('0x39')];_0x5a2132['applications']=_[_0x560f('0x44')](_0x5a2132[_0x560f('0x43')],[_0x560f('0x45')],[_0x560f('0x46')]);if(_0x5a2132[_0x560f('0x41')]&&_0x5a2132[_0x560f('0x41')][_0x560f('0x47')]){_0x5a2132[_0x560f('0x43')][_0x560f('0x48')]({'id':0x0,'priority':_0x5a2132[_0x560f('0x43')]['length']+0x1,'app':'close','appdata':_0x560f('0x47'),'interval':_0x560f('0x49')});}if(_0x5a2132[_0x560f('0x41')]['Applications']){delete _0x5a2132[_0x560f('0x41')][_0x560f('0x3e')];}if(_0x5a2132['account'][_0x560f('0x39')]){delete _0x5a2132[_0x560f('0x41')][_0x560f('0x39')];}if(_0x3fbf70[_0x560f('0x39')][_0x560f('0x3a')]['length']){return _0x3fbf70[_0x560f('0x39')][_0x560f('0x3a')][0x0];}var _0x2f9f40=_[_0x560f('0xd')](_0x51f5db[_0x560f('0x29')],{'firstName':_0x51f5db[_0x560f('0x29')][_0x560f('0x37')],'ListId':_0x3fbf70[_0x560f('0x31')]});_0x2f9f40[_0x51f5db[_0x560f('0x29')]['mapKey']]=_0x51f5db[_0x560f('0x29')][_0x560f('0x37')];return db[_0x560f('0x2d')]['create'](_0x2f9f40);}else{throw new Error('List\x20not\x20found');}})[_0x560f('0x23')](function(_0x4a4962){_0x5a2132[_0x560f('0x4a')]=_0x4a4962;if(_0x4a4962){if(!_0x51f5db[_0x560f('0x29')][_0x560f('0x17')]['messageId']){_0x51f5db['body'][_0x560f('0x17')][_0x560f('0x4b')]=rs[_0x560f('0x4c')]()+'\x20'+_0x51f5db['body'][_0x560f('0x17')]['from'];}var _0x44470d={'ContactId':_0x4a4962['id'],'MailAccountId':_0x51f5db[_0x560f('0x41')]['id'],'inReplyTo':_0x51f5db[_0x560f('0x29')]['message'][_0x560f('0x4b')],'to':_0x51f5db[_0x560f('0x29')]['message'][_0x560f('0x37')],'cc':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')]['cc'],'subject':_0x51f5db['body'][_0x560f('0x17')][_0x560f('0x4d')],'attach':_0x51f5db['body'][_0x560f('0x17')][_0x560f('0x4e')],'lastMsgAt':moment()[_0x560f('0x4f')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x560f('0x50')][_0x560f('0x25')]({'where':{'closed':![],'MailAccountId':_0x51f5db['account']['id']},'include':[{'model':db[_0x560f('0x51')],'as':_0x560f('0x52'),'attributes':[_0x560f('0x4b')],'where':{'messageId':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')][_0x560f('0x53')]}}]})[_0x560f('0x23')](function(_0x13585e){if(_0x13585e){return[_0x13585e,![]];}return db[_0x560f('0x50')]['create'](_0x44470d)[_0x560f('0x23')](function(_0x31258f){return[_0x31258f,!![]];});});}else{throw new Error(_0x560f('0x54'));}})['spread'](function(_0x571fb2,_0x17f3af){if(_0x571fb2){_0x3ef491=_0x17f3af;if(!_0x17f3af){return _0x571fb2[_0x560f('0x55')]({'inReplyTo':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')]['messageId'],'to':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')][_0x560f('0x37')],'cc':_0x51f5db['body']['message']['cc'],'subject':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')][_0x560f('0x4d')],'attach':_0x571fb2[_0x560f('0x4e')]?_0x571fb2['attach']:_0x51f5db[_0x560f('0x29')]['message'][_0x560f('0x4e')],'substatus':null,'substatusAt':moment()[_0x560f('0x4f')](_0x560f('0x56')),'lastMsgAt':moment()[_0x560f('0x4f')](_0x560f('0x56')),'lastMsgDirection':'in'});}else{return _0x571fb2;}}})['then'](function(_0x45b181){_0x5a2132[_0x560f('0x57')]=_0x45b181['get']({'plain':!![]});_0x5a2132[_0x560f('0x57')][_0x560f('0x58')]=_0x3ef491;return db[_0x560f('0x51')][_0x560f('0x59')]({'body':_0x51f5db['body']['body'],'MailAccountId':_0x51f5db[_0x560f('0x41')]['id'],'MailInteractionId':_0x45b181['id'],'direction':'in','ContactId':_0x5a2132['contact']['id'],'messageId':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')][_0x560f('0x4b')],'from':_0x51f5db['body']['message'][_0x560f('0x37')],'to':_0x51f5db['body'][_0x560f('0x17')]['to'],'cc':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')]['cc'],'subject':_0x51f5db[_0x560f('0x29')]['message'][_0x560f('0x4d')],'attach':_0x51f5db[_0x560f('0x29')]['message'][_0x560f('0x4e')],'Attachments':_0x51f5db['body']['message'][_0x560f('0x5a')],'originTo':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')]['originTo'],'originCc':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')]['originCc'],'bcc':_0x51f5db['body']['message'][_0x560f('0x5b')],'ChatWebsiteId':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')][_0x560f('0x5c')]||null,'originChannel':_0x51f5db['body'][_0x560f('0x17')][_0x560f('0x5d')]||_0x560f('0x5e'),'ChatOfflineMessageId':_0x51f5db[_0x560f('0x29')][_0x560f('0x17')][_0x560f('0x5f')]||null},{'include':[{'model':db[_0x560f('0x60')],'as':_0x560f('0x61')}]});})[_0x560f('0x23')](function(_0x8824b1){_0x5a2132[_0x560f('0x17')]=_0x8824b1;if(_0x5a2132['interaction'][_0x560f('0x62')]){return db[_0x560f('0x63')][_0x560f('0x25')]({'attributes':['id',_0x560f('0x64')],'where':{'id':_0x5a2132['interaction']['UserId']}})['then'](function(_0xeb3123){if(_0xeb3123){_0x5a2132['applications'][_0x560f('0x65')]({'id':0x0,'priority':0x0,'app':_0x560f('0x66'),'appdata':_0xeb3123['name']+','+(_0x5a2132[_0x560f('0x41')]['waitForTheAssignedAgent']||0xa),'interval':_0x560f('0x49')});}return respondWithRpcPromise(_0x560f('0x67'),_0x560f('0x68'),_0x5a2132);});}return respondWithRpcPromise(_0x560f('0x67'),_0x560f('0x68'),_0x5a2132);})['then'](function(_0x18cb21){_0x3d173c(_0x18cb21);})['catch'](function(_0x4a32dd){_0x1c5ca7(_0x269a48['error'](0x1f4,_0x4a32dd[_0x560f('0x17')]));});});};
\ No newline at end of file
index c2b1144..b153e82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc808=['emit','removeListener','register','mailAccount:','./mailAccount.events','save','remove'];(function(_0x4651a5,_0x58db2f){var _0x26326c=function(_0x290151){while(--_0x290151){_0x4651a5['push'](_0x4651a5['shift']());}};_0x26326c(++_0x58db2f);}(_0xc808,0x97));var _0x8c80=function(_0x37eca7,_0x3e016e){_0x37eca7=_0x37eca7-0x0;var _0x222bce=_0xc808[_0x37eca7];return _0x222bce;};'use strict';var MailAccountEvents=require(_0x8c80('0x0'));var events=[_0x8c80('0x1'),_0x8c80('0x2'),'update'];function createListener(_0xbd6121,_0x1dd73c){return function(_0x139a4e){_0x1dd73c[_0x8c80('0x3')](_0xbd6121,_0x139a4e);};}function removeListener(_0x27f9f5,_0x3e6da3){return function(){MailAccountEvents[_0x8c80('0x4')](_0x27f9f5,_0x3e6da3);};}exports[_0x8c80('0x5')]=function(_0x198d66){for(var _0x44d226=0x0,_0x532fd8=events['length'];_0x44d226<_0x532fd8;_0x44d226++){var _0xf929ab=events[_0x44d226];var _0x5468a3=createListener(_0x8c80('0x6')+_0xf929ab,_0x198d66);MailAccountEvents['on'](_0xf929ab,_0x5468a3);}};
\ No newline at end of file
+var _0x315c=['emit','removeListener','register','length','mailAccount:','./mailAccount.events','save','remove'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x315c,0xd5));var _0xc315=function(_0x1b7ee4,_0x3755ee){_0x1b7ee4=_0x1b7ee4-0x0;var _0x176dfe=_0x315c[_0x1b7ee4];return _0x176dfe;};'use strict';var MailAccountEvents=require(_0xc315('0x0'));var events=[_0xc315('0x1'),_0xc315('0x2'),'update'];function createListener(_0x136d7f,_0x13e791){return function(_0x3af869){_0x13e791[_0xc315('0x3')](_0x136d7f,_0x3af869);};}function removeListener(_0x5801c1,_0xbb7983){return function(){MailAccountEvents[_0xc315('0x4')](_0x5801c1,_0xbb7983);};}exports[_0xc315('0x5')]=function(_0xa41732){for(var _0xcd6b96=0x0,_0x14fb12=events[_0xc315('0x6')];_0xcd6b96<_0x14fb12;_0xcd6b96++){var _0x2acf02=events[_0xcd6b96];var _0x334f48=createListener(_0xc315('0x7')+_0x2acf02,_0xa41732);MailAccountEvents['on'](_0x2acf02,_0x334f48);}};
\ No newline at end of file
index 91c69d8..28fc361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4172=['./mailApplication.controller','get','/:id','isAuthenticated','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x4172,0x168));var _0x2417=function(_0x46a8a5,_0x14a69e){_0x46a8a5=_0x46a8a5-0x0;var _0x5e5e02=_0x4172[_0x46a8a5];return _0x5e5e02;};'use strict';var multer=require('multer');var util=require(_0x2417('0x0'));var path=require(_0x2417('0x1'));var timeout=require(_0x2417('0x2'));var express=require(_0x2417('0x3'));var router=express[_0x2417('0x4')]();var fs_extra=require(_0x2417('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2417('0x6'));var config=require(_0x2417('0x7'));var controller=require(_0x2417('0x8'));router[_0x2417('0x9')](_0x2417('0xa'),auth[_0x2417('0xb')](),controller['show']);router[_0x2417('0xc')]('/:id',auth[_0x2417('0xb')](),controller['update']);router[_0x2417('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x2417('0xe')]);module[_0x2417('0xf')]=router;
\ No newline at end of file
+var _0x217d=['../../components/interaction/service','./mailApplication.controller','get','/:id','isAuthenticated','show','update','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x217d,0xcc));var _0xd217=function(_0x494932,_0x14c0a2){_0x494932=_0x494932-0x0;var _0x129405=_0x217d[_0x494932];return _0x129405;};'use strict';var multer=require('multer');var util=require(_0xd217('0x0'));var path=require(_0xd217('0x1'));var timeout=require(_0xd217('0x2'));var express=require('express');var router=express[_0xd217('0x3')]();var fs_extra=require(_0xd217('0x4'));var auth=require(_0xd217('0x5'));var interaction=require(_0xd217('0x6'));var config=require('../../config/environment');var controller=require(_0xd217('0x7'));router[_0xd217('0x8')](_0xd217('0x9'),auth[_0xd217('0xa')](),controller[_0xd217('0xb')]);router['put']('/:id',auth[_0xd217('0xa')](),controller[_0xd217('0xc')]);router['delete'](_0xd217('0x9'),auth[_0xd217('0xa')](),controller['destroy']);module[_0xd217('0xd')]=router;
\ No newline at end of file
index ab4ae8a..67a2fd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd58=['STRING','noop','TEXT','sequelize','INTEGER'];(function(_0x3ab73c,_0x5be5e3){var _0x5afe7e=function(_0x7cd03d){while(--_0x7cd03d){_0x3ab73c['push'](_0x3ab73c['shift']());}};_0x5afe7e(++_0x5be5e3);}(_0xdd58,0x8f));var _0x8dd5=function(_0x584488,_0x499cd8){_0x584488=_0x584488-0x0;var _0x495b45=_0xdd58[_0x584488];return _0x495b45;};'use strict';var Sequelize=require(_0x8dd5('0x0'));module['exports']={'priority':{'type':Sequelize[_0x8dd5('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x8dd5('0x2')],'allowNull':![],'defaultValue':_0x8dd5('0x3')},'appdata':{'type':Sequelize[_0x8dd5('0x4')]()},'description':{'type':Sequelize[_0x8dd5('0x2')]},'interval':{'type':Sequelize[_0x8dd5('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x39b2=['STRING','sequelize','noop'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x39b2,0x11b));var _0x239b=function(_0x3122f6,_0x324f6e){_0x3122f6=_0x3122f6-0x0;var _0xe6238b=_0x39b2[_0x3122f6];return _0xe6238b;};'use strict';var Sequelize=require(_0x239b('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x239b('0x1')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x239b('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 30e7029..30ffa01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['includeAll','merge','options','find','catch','body','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','show','params','model','MailApplication','rawAttributes','query','keys','filters','intersection','attributes','fields','length'];(function(_0x346b98,_0x57f33c){var _0x491a43=function(_0xc603c0){while(--_0xc603c0){_0x346b98['push'](_0x346b98['shift']());}};_0x491a43(++_0x57f33c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={'raw':!![],'where':{'id':_0x25fba9[_0x0a9e('0x28')]['id']}},_0x1538a4={};_0x1538a4[_0x0a9e('0x29')]=_['keys'](db[_0x0a9e('0x2a')][_0x0a9e('0x2b')]);_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x25fba9['query']);_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],_0x1538a4[_0x0a9e('0x2c')]);_0x140511[_0x0a9e('0x30')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],qs[_0x0a9e('0x31')](_0x25fba9[_0x0a9e('0x2c')]['fields']));_0x140511[_0x0a9e('0x30')]=_0x140511['attributes'][_0x0a9e('0x32')]?_0x140511[_0x0a9e('0x30')]:_0x1538a4[_0x0a9e('0x29')];if(_0x25fba9[_0x0a9e('0x2c')][_0x0a9e('0x33')]){_0x140511['include']=[{'all':!![]}];}_0x140511=_[_0x0a9e('0x34')]({},_0x140511,_0x25fba9[_0x0a9e('0x35')]);return db[_0x0a9e('0x2a')][_0x0a9e('0x36')](_0x140511)[_0x0a9e('0x22')](handleEntityNotFound(_0x14433c,null))[_0x0a9e('0x22')](respondWithResult(_0x14433c,null))[_0x0a9e('0x37')](handleError(_0x14433c,null));};exports[_0x0a9e('0x21')]=function(_0x5583a4,_0x44295a){if(_0x5583a4['body']['id']){delete _0x5583a4[_0x0a9e('0x38')]['id'];}return db[_0x0a9e('0x2a')][_0x0a9e('0x36')]({'where':{'id':_0x5583a4[_0x0a9e('0x28')]['id']}})['then'](handleEntityNotFound(_0x44295a,null))[_0x0a9e('0x22')](saveUpdates(_0x5583a4[_0x0a9e('0x38')],null))[_0x0a9e('0x22')](respondWithResult(_0x44295a,null))[_0x0a9e('0x37')](handleError(_0x44295a,null));};exports['destroy']=function(_0x54135e,_0x1e8694){return db['MailApplication'][_0x0a9e('0x36')]({'where':{'id':_0x54135e[_0x0a9e('0x28')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x1e8694,null))[_0x0a9e('0x22')](removeEntity(_0x1e8694,null))['catch'](handleError(_0x1e8694,null));};
\ No newline at end of file
+var _0xda3f=['includeAll','include','merge','find','catch','body','MailApplication','destroy','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','stack','name','send','params','model','keys','query','filters','intersection','attributes','fields','length'];(function(_0x288086,_0x1d80d3){var _0xf10918=function(_0x18a70f){while(--_0x18a70f){_0x288086['push'](_0x288086['shift']());}};_0xf10918(++_0x1d80d3);}(_0xda3f,0xec));var _0xfda3=function(_0x21a9d8,_0x47f55b){_0x21a9d8=_0x21a9d8-0x0;var _0x112f06=_0xda3f[_0x21a9d8];return _0x112f06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)[_0xfda3('0x24')]();});}};}function handleEntityNotFound(_0x4ae9b9,_0x45a977){return function(_0x39e246){if(!_0x39e246){_0x4ae9b9[_0xfda3('0x17')](0x194);}return _0x39e246;};}function handleError(_0x38946d,_0x1cb831){_0x1cb831=_0x1cb831||0x1f4;return function(_0xad9f7b){logger['error'](_0xad9f7b[_0xfda3('0x25')]);if(_0xad9f7b[_0xfda3('0x26')]){delete _0xad9f7b[_0xfda3('0x26')];}_0x38946d[_0xfda3('0x18')](_0x1cb831)[_0xfda3('0x27')](_0xad9f7b);};}exports['show']=function(_0x3c1549,_0x4101b1){var _0x301509={'raw':!![],'where':{'id':_0x3c1549[_0xfda3('0x28')]['id']}},_0x474992={};_0x474992[_0xfda3('0x29')]=_[_0xfda3('0x2a')](db['MailApplication']['rawAttributes']);_0x474992[_0xfda3('0x2b')]=_['keys'](_0x3c1549['query']);_0x474992[_0xfda3('0x2c')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2e')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],qs[_0xfda3('0x2f')](_0x3c1549[_0xfda3('0x2b')]['fields']));_0x301509[_0xfda3('0x2e')]=_0x301509[_0xfda3('0x2e')][_0xfda3('0x30')]?_0x301509[_0xfda3('0x2e')]:_0x474992[_0xfda3('0x29')];if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x31')]){_0x301509[_0xfda3('0x32')]=[{'all':!![]}];}_0x301509=_[_0xfda3('0x33')]({},_0x301509,_0x3c1549['options']);return db['MailApplication'][_0xfda3('0x34')](_0x301509)[_0xfda3('0x23')](handleEntityNotFound(_0x4101b1,null))['then'](respondWithResult(_0x4101b1,null))[_0xfda3('0x35')](handleError(_0x4101b1,null));};exports[_0xfda3('0x22')]=function(_0x28ca96,_0x52ee98){if(_0x28ca96[_0xfda3('0x36')]['id']){delete _0x28ca96[_0xfda3('0x36')]['id'];}return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x28ca96[_0xfda3('0x28')]['id']}})['then'](handleEntityNotFound(_0x52ee98,null))[_0xfda3('0x23')](saveUpdates(_0x28ca96[_0xfda3('0x36')],null))[_0xfda3('0x23')](respondWithResult(_0x52ee98,null))['catch'](handleError(_0x52ee98,null));};exports[_0xfda3('0x38')]=function(_0x4854b1,_0x2d9a3f){return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x4854b1[_0xfda3('0x28')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2d9a3f,null))[_0xfda3('0x23')](removeEntity(_0x2d9a3f,null))[_0xfda3('0x35')](handleError(_0x2d9a3f,null));};
\ No newline at end of file
index 6635e29..fc8f0b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa054=['define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports'];(function(_0x3f41a9,_0x1e2b2c){var _0x3281a7=function(_0x2fc9c1){while(--_0x2fc9c1){_0x3f41a9['push'](_0x3f41a9['shift']());}};_0x3281a7(++_0x1e2b2c);}(_0xa054,0x9f));var _0x4a05=function(_0x4e697a,_0x56a14b){_0x4e697a=_0x4e697a-0x0;var _0x88850c=_0xa054[_0x4e697a];return _0x88850c;};'use strict';var _=require(_0x4a05('0x0'));var util=require(_0x4a05('0x1'));var logger=require(_0x4a05('0x2'))(_0x4a05('0x3'));var moment=require(_0x4a05('0x4'));var BPromise=require(_0x4a05('0x5'));var rp=require(_0x4a05('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4a05('0x7'));var attributes=require('./mailApplication.attributes');module[_0x4a05('0x8')]=function(_0x4de9c6,_0x3ea7c9){return _0x4de9c6[_0x4a05('0x9')](_0x4a05('0xa'),attributes,{'tableName':_0x4a05('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4a05('0xc'),'collate':_0x4a05('0xd')});};
\ No newline at end of file
+var _0xc13f=['utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','utf8mb4'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0xc13f,0x9b));var _0xfc13=function(_0x3bffc4,_0x51a8f1){_0x3bffc4=_0x3bffc4-0x0;var _0x4b24d8=_0xc13f[_0x3bffc4];return _0x4b24d8;};'use strict';var _=require(_0xfc13('0x0'));var util=require('util');var logger=require(_0xfc13('0x1'))(_0xfc13('0x2'));var moment=require(_0xfc13('0x3'));var BPromise=require(_0xfc13('0x4'));var rp=require(_0xfc13('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfc13('0x6'));var config=require(_0xfc13('0x7'));var attributes=require(_0xfc13('0x8'));module[_0xfc13('0x9')]=function(_0x4626a6,_0x21049f){return _0x4626a6[_0xfc13('0xa')](_0xfc13('0xb'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfc13('0xc'),'collate':_0xfc13('0xd')});};
\ No newline at end of file
index a7077cf..9de2af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd073=['limit','info','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateMailApplication','MailApplication','update','body','options','raw'];(function(_0x4adfb8,_0x33fc77){var _0x1300df=function(_0x34e572){while(--_0x34e572){_0x4adfb8['push'](_0x4adfb8['shift']());}};_0x1300df(++_0x33fc77);}(_0xd073,0x103));var _0x3d07=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd073[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0x3d07('0x0'));var moment=require(_0x3d07('0x1'));var BPromise=require(_0x3d07('0x2'));var rs=require(_0x3d07('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3d07('0x4'))['db'];var utils=require(_0x3d07('0x5'));var logger=require(_0x3d07('0x6'))(_0x3d07('0x7'));var config=require(_0x3d07('0x8'));var jayson=require(_0x3d07('0x9'));var client=jayson[_0x3d07('0xa')][_0x3d07('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26c0f1,_0x4c2698,_0x1f2951){return new BPromise(function(_0x32a9b5,_0x15fd61){return client[_0x3d07('0xc')](_0x26c0f1,_0x1f2951)[_0x3d07('0xd')](function(_0xb492c3){logger['info'](_0x3d07('0xe'),_0x4c2698,_0x3d07('0xf'));logger[_0x3d07('0x10')](_0x3d07('0x11'),_0x4c2698,_0x3d07('0xf'),JSON[_0x3d07('0x12')](_0xb492c3));if(_0xb492c3[_0x3d07('0x13')]){if(_0xb492c3[_0x3d07('0x13')][_0x3d07('0x14')]===0x1f4){logger[_0x3d07('0x13')](_0x3d07('0xe'),_0x4c2698,_0xb492c3[_0x3d07('0x13')]['message']);return _0x15fd61(_0xb492c3[_0x3d07('0x13')][_0x3d07('0x15')]);}logger[_0x3d07('0x13')](_0x3d07('0xe'),_0x4c2698,_0xb492c3[_0x3d07('0x13')]['message']);return _0x32a9b5(_0xb492c3['error'][_0x3d07('0x15')]);}else{logger['info'](_0x3d07('0xe'),_0x4c2698,_0x3d07('0xf'));_0x32a9b5(_0xb492c3[_0x3d07('0x16')][_0x3d07('0x15')]);}})['catch'](function(_0x27f8f2){logger['error']('MailApplication,\x20%s,\x20%s',_0x4c2698,_0x27f8f2);_0x15fd61(_0x27f8f2);});});}exports[_0x3d07('0x17')]=function(_0x6854ab){var _0x5445a8=this;return new Promise(function(_0x3cff60,_0x50093a){return db[_0x3d07('0x18')][_0x3d07('0x19')](_0x6854ab[_0x3d07('0x1a')],{'raw':_0x6854ab[_0x3d07('0x1b')]?_0x6854ab[_0x3d07('0x1b')][_0x3d07('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6854ab['options']?_0x6854ab[_0x3d07('0x1b')]['where']||null:null,'attributes':_0x6854ab['options']?_0x6854ab['options']['attributes']||null:null,'limit':_0x6854ab['options']?_0x6854ab[_0x3d07('0x1b')][_0x3d07('0x1d')]||null:null})['then'](function(_0x2a031f){logger[_0x3d07('0x1e')](_0x3d07('0x17'),_0x6854ab);logger[_0x3d07('0x10')](_0x3d07('0x17'),_0x6854ab,JSON[_0x3d07('0x12')](_0x2a031f));_0x3cff60(_0x2a031f);})[_0x3d07('0x1f')](function(_0x29409e){logger[_0x3d07('0x13')]('UpdateMailApplication',_0x29409e[_0x3d07('0x15')],_0x6854ab);_0x50093a(_0x5445a8[_0x3d07('0x13')](0x1f4,_0x29409e['message']));});});};
\ No newline at end of file
+var _0x86a3=['rpc','http','then','info','request\x20sent','debug','stringify','error','code','message','MailApplication,\x20%s,\x20%s','result','catch','UpdateMailApplication','MailApplication','update','body','options','raw','where','attributes','limit','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger'];(function(_0x55cc6a,_0x59e58a){var _0x4391e8=function(_0x5e0d16){while(--_0x5e0d16){_0x55cc6a['push'](_0x55cc6a['shift']());}};_0x4391e8(++_0x59e58a);}(_0x86a3,0xf6));var _0x386a=function(_0x343e44,_0x519af9){_0x343e44=_0x343e44-0x0;var _0xa5130e=_0x86a3[_0x343e44];return _0xa5130e;};'use strict';var _=require(_0x386a('0x0'));var util=require(_0x386a('0x1'));var moment=require('moment');var BPromise=require(_0x386a('0x2'));var rs=require(_0x386a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x386a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x386a('0x5'))(_0x386a('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x386a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3d91bf,_0x3c160a,_0x2e53b1){return new BPromise(function(_0x1aeefc,_0xd10405){return client['request'](_0x3d91bf,_0x2e53b1)[_0x386a('0x8')](function(_0x13f135){logger[_0x386a('0x9')]('MailApplication,\x20%s,\x20%s',_0x3c160a,_0x386a('0xa'));logger[_0x386a('0xb')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x3c160a,_0x386a('0xa'),JSON[_0x386a('0xc')](_0x13f135));if(_0x13f135[_0x386a('0xd')]){if(_0x13f135['error'][_0x386a('0xe')]===0x1f4){logger[_0x386a('0xd')]('MailApplication,\x20%s,\x20%s',_0x3c160a,_0x13f135['error'][_0x386a('0xf')]);return _0xd10405(_0x13f135[_0x386a('0xd')][_0x386a('0xf')]);}logger['error'](_0x386a('0x10'),_0x3c160a,_0x13f135[_0x386a('0xd')]['message']);return _0x1aeefc(_0x13f135[_0x386a('0xd')]['message']);}else{logger[_0x386a('0x9')](_0x386a('0x10'),_0x3c160a,_0x386a('0xa'));_0x1aeefc(_0x13f135[_0x386a('0x11')][_0x386a('0xf')]);}})[_0x386a('0x12')](function(_0xcc61d){logger[_0x386a('0xd')](_0x386a('0x10'),_0x3c160a,_0xcc61d);_0xd10405(_0xcc61d);});});}exports[_0x386a('0x13')]=function(_0xef9c71){var _0x3d40a2=this;return new Promise(function(_0x9473ce,_0x3a12cf){return db[_0x386a('0x14')][_0x386a('0x15')](_0xef9c71[_0x386a('0x16')],{'raw':_0xef9c71[_0x386a('0x17')]?_0xef9c71[_0x386a('0x17')][_0x386a('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xef9c71[_0x386a('0x17')]?_0xef9c71['options'][_0x386a('0x19')]||null:null,'attributes':_0xef9c71['options']?_0xef9c71['options'][_0x386a('0x1a')]||null:null,'limit':_0xef9c71[_0x386a('0x17')]?_0xef9c71[_0x386a('0x17')][_0x386a('0x1b')]||null:null})[_0x386a('0x8')](function(_0x48a5b0){logger[_0x386a('0x9')](_0x386a('0x13'),_0xef9c71);logger['debug'](_0x386a('0x13'),_0xef9c71,JSON[_0x386a('0xc')](_0x48a5b0));_0x9473ce(_0x48a5b0);})[_0x386a('0x12')](function(_0x1727b3){logger['error'](_0x386a('0x13'),_0x1727b3['message'],_0xef9c71);_0x3a12cf(_0x3d40a2[_0x386a('0xd')](0x1f4,_0x1727b3[_0x386a('0xf')]));});});};
\ No newline at end of file
index 0fe4f13..0da4e83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x004d=['/:id/download','download','create','/:id/messages','post','/:id/tags','tracked','mail','mailinteraction:addtags','update','delete','removeTags','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','index','describe','/:id','isAuthenticated','show','getMessages'];(function(_0x3d7dc8,_0x180ed7){var _0x42ec6b=function(_0x2ffa92){while(--_0x2ffa92){_0x3d7dc8['push'](_0x3d7dc8['shift']());}};_0x42ec6b(++_0x180ed7);}(_0x004d,0x120));var _0xd004=function(_0x150ac4,_0x2a9a14){_0x150ac4=_0x150ac4-0x0;var _0x2e2342=_0x004d[_0x150ac4];return _0x2e2342;};'use strict';var express=require('express');var router=express[_0xd004('0x0')]();var auth=require(_0xd004('0x1'));var interaction=require(_0xd004('0x2'));var controller=require(_0xd004('0x3'));router[_0xd004('0x4')]('/',auth['isAuthenticated'](),controller[_0xd004('0x5')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xd004('0x6')]);router['get'](_0xd004('0x7'),auth[_0xd004('0x8')](),controller[_0xd004('0x9')]);router[_0xd004('0x4')]('/:id/messages',auth[_0xd004('0x8')](),controller[_0xd004('0xa')]);router['get'](_0xd004('0xb'),auth[_0xd004('0x8')](),controller[_0xd004('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd004('0xd')]);router['post'](_0xd004('0xe'),auth[_0xd004('0x8')](),controller['addMessage']);router[_0xd004('0xf')](_0xd004('0x10'),auth['isAuthenticated'](),interaction[_0xd004('0x11')](_0xd004('0x12'),_0xd004('0x13')),controller['addTags']);router['put'](_0xd004('0x7'),auth[_0xd004('0x8')](),interaction['tracked'](_0xd004('0x12'),'mailinteraction:update'),controller[_0xd004('0x14')]);router['delete']('/:id',auth[_0xd004('0x8')](),interaction[_0xd004('0x11')]('mail','mailinteraction:destroy'),controller['destroy']);router[_0xd004('0x15')](_0xd004('0x10'),auth['isAuthenticated'](),controller[_0xd004('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xdfb1=['./mailInteraction.controller','get','index','/describe','describe','/:id','isAuthenticated','show','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','mail','addTags','put','mailinteraction:destroy','destroy','removeTags','express','Router'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xdfb1,0xd6));var _0x1dfb=function(_0x2a9b84,_0x16510f){_0x2a9b84=_0x2a9b84-0x0;var _0x48a211=_0xdfb1[_0x2a9b84];return _0x48a211;};'use strict';var express=require(_0x1dfb('0x0'));var router=express[_0x1dfb('0x1')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var controller=require(_0x1dfb('0x2'));router[_0x1dfb('0x3')]('/',auth['isAuthenticated'](),controller[_0x1dfb('0x4')]);router['get'](_0x1dfb('0x5'),auth['isAuthenticated'](),controller[_0x1dfb('0x6')]);router[_0x1dfb('0x3')](_0x1dfb('0x7'),auth[_0x1dfb('0x8')](),controller[_0x1dfb('0x9')]);router[_0x1dfb('0x3')](_0x1dfb('0xa'),auth['isAuthenticated'](),controller['getMessages']);router[_0x1dfb('0x3')](_0x1dfb('0xb'),auth[_0x1dfb('0x8')](),controller[_0x1dfb('0xc')]);router[_0x1dfb('0xd')]('/',auth['isAuthenticated'](),controller[_0x1dfb('0xe')]);router[_0x1dfb('0xd')](_0x1dfb('0xa'),auth['isAuthenticated'](),controller[_0x1dfb('0xf')]);router[_0x1dfb('0xd')](_0x1dfb('0x10'),auth[_0x1dfb('0x8')](),interaction[_0x1dfb('0x11')](_0x1dfb('0x12'),'mailinteraction:addtags'),controller[_0x1dfb('0x13')]);router[_0x1dfb('0x14')]('/:id',auth['isAuthenticated'](),interaction[_0x1dfb('0x11')](_0x1dfb('0x12'),'mailinteraction:update'),controller['update']);router['delete'](_0x1dfb('0x7'),auth[_0x1dfb('0x8')](),interaction[_0x1dfb('0x11')](_0x1dfb('0x12'),_0x1dfb('0x15')),controller[_0x1dfb('0x16')]);router['delete']('/:id/tags',auth[_0x1dfb('0x8')](),controller[_0x1dfb('0x17')]);module['exports']=router;
\ No newline at end of file
index 588cd5a..a25ee5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cd=['sequelize','iconv','exports','BOOLEAN','DATE','STRING','TEXT','long','ENUM','out'];(function(_0x4ab05a,_0x1a3b2d){var _0x26412e=function(_0xcab5cf){while(--_0xcab5cf){_0x4ab05a['push'](_0x4ab05a['shift']());}};_0x26412e(++_0x1a3b2d);}(_0xe2cd,0x64));var _0xde2c=function(_0x31ba8c,_0x1e30f2){_0x31ba8c=_0x31ba8c-0x0;var _0x3c64d3=_0xe2cd[_0x31ba8c];return _0x3c64d3;};'use strict';var Sequelize=require(_0xde2c('0x0'));var iconv=require(_0xde2c('0x1'));module[_0xde2c('0x2')]={'closed':{'type':Sequelize[_0xde2c('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xde2c('0x4')]},'disposition':{'type':Sequelize[_0xde2c('0x5')]},'secondDisposition':{'type':Sequelize[_0xde2c('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xde2c('0x5')]},'inReplyTo':{'type':Sequelize[_0xde2c('0x5')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xde2c('0x6')](_0xde2c('0x7'))},'subject':{'type':Sequelize[_0xde2c('0x6')]()},'attach':{'type':Sequelize[_0xde2c('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0xde2c('0x5')](0x3c)},'substatusAt':{'type':Sequelize[_0xde2c('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xde2c('0x8')]('in',_0xde2c('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xde2c('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xde2c('0x8')]('in',_0xde2c('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x16d0=['STRING','long','TEXT','out','ENUM','sequelize','iconv','BOOLEAN','DATE'];(function(_0x197cab,_0x2b3c45){var _0x3044c1=function(_0x1621f7){while(--_0x1621f7){_0x197cab['push'](_0x197cab['shift']());}};_0x3044c1(++_0x2b3c45);}(_0x16d0,0xe6));var _0x016d=function(_0x1483df,_0x1519a3){_0x1483df=_0x1483df-0x0;var _0x564203=_0x16d0[_0x1483df];return _0x564203;};'use strict';var Sequelize=require(_0x016d('0x0'));var iconv=require(_0x016d('0x1'));module['exports']={'closed':{'type':Sequelize[_0x016d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x016d('0x3')]},'disposition':{'type':Sequelize[_0x016d('0x4')]},'secondDisposition':{'type':Sequelize[_0x016d('0x4')]},'thirdDisposition':{'type':Sequelize[_0x016d('0x4')]},'note':{'type':Sequelize[_0x016d('0x4')]},'inReplyTo':{'type':Sequelize[_0x016d('0x4')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT'](_0x016d('0x5'))},'subject':{'type':Sequelize[_0x016d('0x6')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x016d('0x3')]},'substatus':{'type':Sequelize[_0x016d('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x016d('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x016d('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x016d('0x8')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x016d('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 51bd2e8..6331b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0804=['createdAt','parse','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','i.id\x20LIKE\x20?','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','i.MailAccountId\x20IN\x20?','agent','sequelize','toString','keyBy','merge','fields','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.id','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.ContactId','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.phone','Contact.phone','c.mobile','Contact.mobile','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','Setting','findOne','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','destroy','describe','addMessage','ids','omit','hasOwnProperty','sort','MailInteractionId','$gte','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','spread','emit','removeTags','download','unix','server','files','root','join','transcript-%d-%s.zip','attachments','Messages','get','mkdirSync','subject','decode','format','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','Attachments','basename','existsSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','lodash','squel','juice','ioredis','../../components/parsers/qs','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','error','stack','name','send','Users','map','TagIds','Tags','split','push','MailMessage','out','plainBody','lastMsgText','trimStart','catch','MailInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.MailInteractionId','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','search','parseSearch','conditions','having','`\x20>\x200','Contact','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','text','some','compact','isEmpty','forEach','MailAccountId','concat'];(function(_0x27530d,_0x46480a){var _0x59e561=function(_0x395fe9){while(--_0x395fe9){_0x27530d['push'](_0x27530d['shift']());}};_0x59e561(++_0x46480a);}(_0x0804,0x162));var _0x4080=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x0804[_0x2064e5];return _0x21a233;};'use strict';var emlformat=require(_0x4080('0x0'));var rimraf=require(_0x4080('0x1'));var zipdir=require(_0x4080('0x2'));var moment=require(_0x4080('0x3'));var BPromise=require(_0x4080('0x4'));var util=require(_0x4080('0x5'));var path=require(_0x4080('0x6'));var fs=require('fs');var _=require(_0x4080('0x7'));var squel=require(_0x4080('0x8'));var juice=require(_0x4080('0x9'));var Redis=require(_0x4080('0xa'));var qs=require(_0x4080('0xb'));var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')(_0x4080('0xc'));var config=require(_0x4080('0xd'));var db=require('../../mysqldb')['db'];var htmlEntities=require('html-entities');config['redis']=_[_0x4080('0xe')](config[_0x4080('0xf')],{'host':_0x4080('0x10'),'port':0x18eb});var socket=require(_0x4080('0x11'))(new Redis(config[_0x4080('0xf')]));require(_0x4080('0x12'))[_0x4080('0x13')](socket);function respondWithStatusCode(_0x1a16a5,_0x5bb48d){_0x5bb48d=_0x5bb48d||0xcc;return function(_0x5c7fd0){if(_0x5c7fd0){return _0x1a16a5[_0x4080('0x14')](_0x5bb48d);}return _0x1a16a5[_0x4080('0x15')](_0x5bb48d)[_0x4080('0x16')]();};}function respondWithResult(_0x273475,_0x352a65){_0x352a65=_0x352a65||0xc8;return function(_0x4c57fc){if(_0x4c57fc){return _0x273475[_0x4080('0x15')](_0x352a65)[_0x4080('0x17')](_0x4c57fc);}};}function respondWithFilteredResult(_0x2d21ef,_0x5f2029){return function(_0x1fe6d7){if(_0x1fe6d7){var _0x3da441=typeof _0x5f2029[_0x4080('0x18')]===_0x4080('0x19')&&typeof _0x5f2029[_0x4080('0x1a')]===_0x4080('0x19');var _0x17b326=_0x1fe6d7[_0x4080('0x1b')];var _0x1fea54=_0x3da441?0x0:_0x5f2029[_0x4080('0x18')];var _0x55becd=_0x3da441?_0x1fe6d7[_0x4080('0x1b')]:_0x5f2029[_0x4080('0x18')]+_0x5f2029[_0x4080('0x1a')];var _0x4fa97c;if(_0x55becd>=_0x17b326){_0x55becd=_0x17b326;_0x4fa97c=0xc8;}else{_0x4fa97c=0xce;}_0x2d21ef['status'](_0x4fa97c);return _0x2d21ef[_0x4080('0x1c')](_0x4080('0x1d'),_0x1fea54+'-'+_0x55becd+'/'+_0x17b326)[_0x4080('0x17')](_0x1fe6d7);}return null;};}function saveUpdates(_0x1b6704){return function(_0x2d38db){if(_0x2d38db){return _0x2d38db[_0x4080('0x1e')](_0x1b6704)[_0x4080('0x1f')](function(_0x1d9dc1){return _0x1d9dc1;});}return null;};}function removeEntity(_0xdfb6a7){return function(_0x18c097){if(_0x18c097){return _0x18c097['destroy']()[_0x4080('0x1f')](function(){_0xdfb6a7['status'](0xcc)[_0x4080('0x16')]();});}};}function handleEntityNotFound(_0x4ee027){return function(_0x4f116d){if(!_0x4f116d){_0x4ee027[_0x4080('0x14')](0x194);}return _0x4f116d;};}function handleError(_0x25e237,_0x3222b5){_0x3222b5=_0x3222b5||0x1f4;return function(_0x1ce11d){logger[_0x4080('0x20')](_0x1ce11d[_0x4080('0x21')]);if(_0x1ce11d[_0x4080('0x22')]){delete _0x1ce11d[_0x4080('0x22')];}_0x25e237[_0x4080('0x15')](_0x3222b5)[_0x4080('0x23')](_0x1ce11d);};}function getInteractionUsers(_0x5ba691,_0x80e7d){return new BPromise(function(_0x35d0d9,_0x1cad91){try{if(_0x80e7d[_0x5ba691['id']]){_0x5ba691[_0x4080('0x24')]=_[_0x4080('0x25')](_0x80e7d[_0x5ba691['id']],function(_0x31c79e){return{'id':_0x31c79e['id'],'fullname':_0x31c79e['fullname']};});}}catch(_0x1de987){_0x1cad91(_0x1de987);}_0x35d0d9(_0x5ba691);});}function getInteractionTags(_0x179923,_0x5056a8){return new BPromise(function(_0x42042f,_0x19f470){try{if(_0x179923[_0x4080('0x26')]){_0x179923[_0x4080('0x27')]=[];_0x179923[_0x4080('0x26')][_0x4080('0x28')](',')['forEach'](function(_0x45a63a){_0x179923[_0x4080('0x27')][_0x4080('0x29')](_0x5056a8[_0x45a63a]);});}delete _0x179923[_0x4080('0x26')];}catch(_0x1b5dca){_0x19f470(_0x1b5dca);}_0x42042f(_0x179923);});}function getLastMessageText(_0x6531e2){return new BPromise(function(_0x31030a,_0x25e951){return db[_0x4080('0x2a')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x6531e2['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x4080('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x4080('0x2c')],'order':'-id','raw':!![]})['then'](function(_0x38deff){if(_0x38deff&&_0x38deff[_0x4080('0x2c')]){_0x6531e2[_0x4080('0x2d')]=_[_0x4080('0x2e')](_0x38deff[_0x4080('0x2c')]);}_0x31030a(_0x6531e2);})['catch'](function(_0x5cf394){_0x25e951(_0x5cf394);});});}function updateMailInteraction(_0x1297ad,_0x1f9b54,_0x2fa828,_0x4e3625){return new BPromise(function(_0x4c5874,_0x3a1b3a){return getInteractionUsers(_0x1297ad,_0x2fa828)[_0x4080('0x1f')](function(_0x34623e){return getInteractionTags(_0x34623e,_0x1f9b54);})[_0x4080('0x1f')](function(_0x58b03f){if(_0x4e3625){_0x4c5874(getLastMessageText(_0x58b03f));}else{_0x4c5874(_0x58b03f);}})[_0x4080('0x2f')](function(_0x38d908){_0x3a1b3a(_0x38d908);});});}exports['index']=function(_0x1160ec,_0x2c3ee1){var _0x489b85={},_0x3a5cf7={},_0x2bacac={'count':0x0,'rows':[]};var _0x1aca9d=_[_0x4080('0x25')](db[_0x4080('0x30')][_0x4080('0x31')],function(_0x173f84){return{'name':_0x173f84[_0x4080('0x32')],'type':_0x173f84[_0x4080('0x33')][_0x4080('0x34')]};});_0x3a5cf7[_0x4080('0x35')]=_[_0x4080('0x25')](_0x1aca9d,_0x4080('0x22'));_0x3a5cf7[_0x4080('0x36')]=_[_0x4080('0x37')](_0x1160ec['query']);_0x3a5cf7[_0x4080('0x38')]=_[_0x4080('0x39')](_0x3a5cf7[_0x4080('0x35')],_0x3a5cf7[_0x4080('0x36')]);_0x489b85[_0x4080('0x3a')]=_[_0x4080('0x39')](_0x3a5cf7[_0x4080('0x35')],qs['fields'](_0x1160ec['query']['fields']));_0x489b85['attributes']=_0x489b85[_0x4080('0x3a')][_0x4080('0x3b')]?_0x489b85['attributes']:_0x3a5cf7[_0x4080('0x35')];if(!_0x1160ec[_0x4080('0x36')]['hasOwnProperty'](_0x4080('0x3c'))){_0x489b85[_0x4080('0x1a')]=qs[_0x4080('0x1a')](_0x1160ec[_0x4080('0x36')]['limit']);_0x489b85[_0x4080('0x18')]=qs[_0x4080('0x18')](_0x1160ec[_0x4080('0x36')]['offset']);}_0x489b85['order']=qs['sort'](_0x1160ec['query']['sort']);_0x489b85[_0x4080('0x3d')]=qs[_0x4080('0x38')](_[_0x4080('0x3e')](_0x1160ec[_0x4080('0x36')],_0x3a5cf7[_0x4080('0x38')]),_0x1aca9d);var _0x2cc631=[];var _0x112719=squel[_0x4080('0x3f')]()[_0x4080('0x40')]('id')[_0x4080('0x40')](_0x4080('0x22'))[_0x4080('0x40')](_0x4080('0x41'))['from'](_0x4080('0x42'));var _0x4cc66e=squel[_0x4080('0x3f')]()[_0x4080('0x40')](_0x4080('0x43'))[_0x4080('0x40')](_0x4080('0x44'))[_0x4080('0x40')](_0x4080('0x45'))[_0x4080('0x46')](_0x4080('0x47'),'ui')[_0x4080('0x48')](_0x4080('0x49'),'u',_0x4080('0x4a'));var _0x44b313=squel[_0x4080('0x3f')]()['from'](_0x4080('0x4b'),'i')[_0x4080('0x48')](_0x4080('0x4c'),'c',_0x4080('0x4d'))[_0x4080('0x48')](_0x4080('0x49'),'o',_0x4080('0x4e'))['left_join'](_0x4080('0x4f'),'a',_0x4080('0x50'))[_0x4080('0x48')](_0x4080('0x51'),'me','me.MailInteractionId\x20=\x20i.id')[_0x4080('0x48')]('mail_interaction_has_tags','it',_0x4080('0x52'))[_0x4080('0x48')](_0x4080('0x42'),'t',_0x4080('0x53'));var _0x3e8e61=squel['expr']();var _0x370bd4=[];var _0xfe6fa2=squel['expr']();var _0xd578e6;if(_0x1160ec[_0x4080('0x36')][_0x4080('0x54')]){_0xd578e6=as[_0x4080('0x55')](_0x1160ec[_0x4080('0x36')][_0x4080('0x54')]);var _0x4b2c10=_0xd578e6['sqlOperator'];for(var _0x594c7b=0x0;_0x594c7b<_0xd578e6[_0x4080('0x56')]['length'];_0x594c7b++){var _0x452e5f=_0xd578e6[_0x4080('0x56')][_0x594c7b];var _0x5e75c3='i';var _0x310cb4=_['find'](_0x1aca9d,['name',_0x452e5f[_0x4080('0x40')]]);if(!_0x310cb4){switch(_0x452e5f[_0x4080('0x40')]){case'unreadMessages':if(_0x452e5f['value']==0x1){_0x44b313[_0x4080('0x57')]('`'+_0x452e5f[_0x4080('0x40')]+'`\x20=\x200');}else{_0x44b313['having']('`'+_0x452e5f[_0x4080('0x40')]+_0x4080('0x58'));}break;case _0x4080('0x59'):if(_0x452e5f['operator']===_0x4080('0x5a')){if(_0x452e5f[_0x4080('0x5b')][_0x4080('0x28')]('\x20')[_0x4080('0x3b')]>0x1){_0x3e8e61[_0x4b2c10](_0x4080('0x5c'),qs[_0x4080('0x5d')](_0x452e5f[_0x4080('0x5b')]),null);}else{var _0x221eca='%'+_0x452e5f[_0x4080('0x5b')]+'%';_0x3e8e61[_0x4b2c10](_0x4080('0x5e'),_0x221eca,_0x221eca,_0x221eca);}}else{_0x310cb4=_[_0x4080('0x5f')](_0x1aca9d,[_0x4080('0x22'),'ContactId']);_0x452e5f[_0x4080('0x40')]=_0x4080('0x60');_0x2726cd=as['buildExpression'](_0x5e75c3,_0x310cb4[_0x4080('0x33')],_0x452e5f);_0x3e8e61[_0x4b2c10](_0x2726cd['text'],_0x2726cd[_0x4080('0x5b')][_0x4080('0x61')],_0x2726cd[_0x4080('0x5b')]['end']);}break;case _0x4080('0x62'):var _0x4ce0c4=_0x452e5f[_0x4080('0x5b')][_0x4080('0x28')](',')[_0x4080('0x25')](function(_0x5391b9){return Number(_0x5391b9);});_0x4ce0c4['forEach'](function(_0x4deb32){_0xfe6fa2['or'](_0x4080('0x63'),'%,'+_0x4deb32+',%');});_0x370bd4=_[_0x4080('0x64')](_0x370bd4,_0x4ce0c4);break;case'User':if(_0x452e5f[_0x4080('0x65')]==='$substring'){_0x3e8e61[_0x4b2c10](_0x4080('0x66'),'%'+_0x452e5f[_0x4080('0x5b')]+'%',null);}else{_0x310cb4=_[_0x4080('0x5f')](_0x1aca9d,[_0x4080('0x22'),'UserId']);_0x452e5f[_0x4080('0x40')]=_0x4080('0x67');_0x2726cd=as[_0x4080('0x68')](_0x5e75c3,_0x310cb4['type'],_0x452e5f);_0x3e8e61[_0x4b2c10](_0x2726cd[_0x4080('0x69')],_0x2726cd[_0x4080('0x5b')][_0x4080('0x61')],_0x2726cd[_0x4080('0x5b')]['end']);}break;case _0x4080('0x2c'):_0x2726cd=as[_0x4080('0x68')]('me',null,_0x452e5f);_0x3e8e61[_0x4b2c10](_0x2726cd[_0x4080('0x69')],_0x2726cd['value'][_0x4080('0x61')],_0x2726cd[_0x4080('0x5b')][_0x4080('0x16')]);break;}}else{var _0x2726cd=as['buildExpression'](_0x5e75c3,_0x310cb4['type'],_0x452e5f);_0x3e8e61[_0x4b2c10](_0x2726cd[_0x4080('0x69')],_0x2726cd['value'][_0x4080('0x61')],_0x2726cd[_0x4080('0x5b')][_0x4080('0x16')]);}}}else{var _0x4fced2=_(_0x1160ec[_0x4080('0x36')])[_0x4080('0x37')]()[_0x4080('0x25')](function(_0x2d6efd){return _[_0x4080('0x6a')](_0x1aca9d,[_0x4080('0x22'),_0x2d6efd])?_0x2d6efd:undefined;})[_0x4080('0x6b')]()['value']();if(!_[_0x4080('0x6c')](_0x4fced2)){_0x4fced2[_0x4080('0x6d')](function(_0x1de92f){if(_0x1de92f===_0x4080('0x6e')){_0x44b313[_0x4080('0x3d')]('i.MailAccountId\x20IN\x20?',[][_0x4080('0x6f')](_0x1160ec[_0x4080('0x36')][_0x1de92f]));}else if(_0x1de92f===_0x4080('0x70')){var _0x19d9c0=JSON[_0x4080('0x71')](_0x1160ec[_0x4080('0x36')][_0x1de92f])['$gte'];var _0x3f4575=JSON['parse'](_0x1160ec['query'][_0x1de92f])[_0x4080('0x72')];_0x44b313[_0x4080('0x3d')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x19d9c0,_0x3f4575);}else{if(_0x1160ec[_0x4080('0x36')][_0x1de92f]===_0x4080('0x73')){_0x44b313['where']('i.'+_0x1de92f+_0x4080('0x74'));}else{_0x44b313['where']('i.'+_0x1de92f+_0x4080('0x75'),_0x1160ec[_0x4080('0x36')][_0x1de92f]);}}});}if(_0x1160ec[_0x4080('0x36')][_0x4080('0x76')]){if(_0x1160ec[_0x4080('0x36')][_0x4080('0x76')]==0x1){_0x44b313[_0x4080('0x57')]('`unreadMessages`\x20=\x200');}else{_0x44b313['having'](_0x4080('0x77'));}}if(_0x1160ec[_0x4080('0x36')]['tag']){_0x370bd4=_[_0x4080('0x78')](_0x1160ec[_0x4080('0x36')][_0x4080('0x79')])?_0x1160ec[_0x4080('0x36')][_0x4080('0x79')]:new Array(_0x1160ec[_0x4080('0x36')][_0x4080('0x79')]);_0x370bd4[_0x4080('0x6d')](function(_0x8de9a2){_0xfe6fa2['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x8de9a2+',%');});}if(_0x1160ec[_0x4080('0x36')]['filter']){var _0x159301=_0x1160ec[_0x4080('0x36')][_0x4080('0x7a')][_0x4080('0x7b')]('\x5c','\x5c\x5c')[_0x4080('0x7b')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x159301)){_0x3e8e61['or'](_0x4080('0x7c'),_0x159301+'%');}else if(qs[_0x4080('0x7d')](_0x159301)){_0x3e8e61['or']('c.email\x20LIKE\x20?',_0x159301+'%');}else{_0x3e8e61['or'](_0x4080('0x7e'),qs[_0x4080('0x5d')](_0x159301))['or'](_0x4080('0x7f'),qs['getFullTextValue'](_0x159301));}}}_0x44b313[_0x4080('0x3d')](_0x3e8e61);_0x44b313['group']('i.id');var _0x174a4d={'type':db[_0x4080('0x80')]['QueryTypes'][_0x4080('0x81')],'raw':!![]};var _0x12fde9=_0x44b313[_0x4080('0x82')]();_0x12fde9[_0x4080('0x40')]('i.id');_0x12fde9['field'](_0x4080('0x83'),_0x4080('0x84'));if(_0x489b85[_0x4080('0x85')]){_0x489b85[_0x4080('0x85')][_0x4080('0x6d')](function(_0x587817){var _0x2da158=_0x587817[0x0]===_0x4080('0x86')?_0x587817[0x0]:'i.'+_0x587817[0x0];_0x44b313['order'](_0x2da158,_0x587817[0x1]===_0x4080('0x87')?![]:!![]);});}if(!_[_0x4080('0x6c')](_0x370bd4)){_0x44b313[_0x4080('0x57')](_0xfe6fa2);_0x12fde9['where'](_0x4080('0x88'),_0x370bd4);}BPromise[_0x4080('0x89')]()[_0x4080('0x1f')](function(){if(!_0xd578e6){if(_0x1160ec[_0x4080('0x36')]['MailAccountId'])return;_0x12fde9['where'](_0x4080('0x8a'));_0x44b313[_0x4080('0x3d')](_0x4080('0x8a'));return;}if(_0x1160ec[_0x4080('0x8b')][_0x4080('0x8c')]!=='agent')return;return _0x1160ec[_0x4080('0x8b')][_0x4080('0x8d')]({'attributes':['id'],'raw':!![]})[_0x4080('0x1f')](function(_0x21f475){if(_['isEmpty'](_0x21f475)){_0x12fde9['where'](_0x4080('0x8e'));_0x44b313[_0x4080('0x3d')](_0x4080('0x8e'));}else{_0x12fde9[_0x4080('0x3d')](_0x4080('0x8f'),_[_0x4080('0x25')](_0x21f475,'id'));_0x44b313[_0x4080('0x3d')](_0x4080('0x8f'),_[_0x4080('0x25')](_0x21f475,'id'));}});})[_0x4080('0x1f')](function(){if(_0x1160ec[_0x4080('0x8b')][_0x4080('0x8c')]===_0x4080('0x90')&&!_0xd578e6&&!_0x1160ec[_0x4080('0x36')][_0x4080('0x6e')])return[];return db[_0x4080('0x91')]['query'](_0x12fde9[_0x4080('0x92')](),_0x174a4d);})['then'](function(_0x5b82b9){_0x2bacac[_0x4080('0x1b')]=_0x5b82b9['length'];if(_0x2bacac[_0x4080('0x1b')]===0x0)return[];return db['sequelize'][_0x4080('0x36')](_0x112719[_0x4080('0x92')](),_0x174a4d)[_0x4080('0x1f')](function(_0x544b85){_0x2cc631=_[_0x4080('0x93')](_0x544b85,'id');_0x174a4d=_[_0x4080('0x94')](_0x174a4d,{'model':db[_0x4080('0x30')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1160ec['query'][_0x4080('0x95')]){_0x489b85[_0x4080('0x3a')][_0x4080('0x6d')](function(_0x110f49){_0x44b313[_0x4080('0x40')]('i.'+_0x110f49);});}else{_0x44b313[_0x4080('0x40')](_0x4080('0x83'),'unreadMessages');_0x44b313['field']('a.key',_0x4080('0x96'));_0x44b313[_0x4080('0x40')](_0x4080('0x97'),'Account.mandatoryDisposition');_0x44b313[_0x4080('0x40')](_0x4080('0x98'),'contactName');_0x44b313[_0x4080('0x40')](_0x4080('0x99'));_0x44b313[_0x4080('0x40')](_0x4080('0x9a'));_0x44b313[_0x4080('0x40')](_0x4080('0x9b'));_0x44b313['field'](_0x4080('0x9c'));_0x44b313['field']('i.closedAt');_0x44b313[_0x4080('0x40')](_0x4080('0x9d'));_0x44b313[_0x4080('0x40')](_0x4080('0x9e'));_0x44b313[_0x4080('0x40')]('i.lastMsgDirection');_0x44b313[_0x4080('0x40')](_0x4080('0x9f'));_0x44b313['field'](_0x4080('0xa0'));_0x44b313[_0x4080('0x40')](_0x4080('0xa1'));_0x44b313[_0x4080('0x40')](_0x4080('0xa2'));_0x44b313[_0x4080('0x40')](_0x4080('0xa3'));_0x44b313[_0x4080('0x40')]('i.to');_0x44b313[_0x4080('0x40')](_0x4080('0xa4'));_0x44b313['field'](_0x4080('0xa5'));_0x44b313['field']('i.UserId');_0x44b313[_0x4080('0x40')]('c.firstName',_0x4080('0xa6'));_0x44b313[_0x4080('0x40')](_0x4080('0xa7'),_0x4080('0xa8'));_0x44b313[_0x4080('0x40')]('c.email','Contact.email');_0x44b313[_0x4080('0x40')](_0x4080('0xa9'),_0x4080('0xaa'));_0x44b313['field'](_0x4080('0xab'),_0x4080('0xac'));_0x44b313[_0x4080('0x40')]('c.fax','Contact.fax');_0x44b313[_0x4080('0x40')]('o.fullname',_0x4080('0xad'));_0x44b313[_0x4080('0x40')](_0x4080('0xae'),_0x4080('0xaf'));_0x44b313[_0x4080('0x40')](_0x4080('0xb0'),_0x4080('0x26'));}if(_0x489b85[_0x4080('0x1a')])_0x44b313[_0x4080('0x1a')](_0x489b85[_0x4080('0x1a')]);if(_0x489b85[_0x4080('0x18')])_0x44b313[_0x4080('0x18')](_0x489b85[_0x4080('0x18')]);return db[_0x4080('0x91')]['query'](_0x44b313[_0x4080('0x92')](),_0x174a4d);})['then'](function(_0x5a7ea9){if(_0x5a7ea9['length']>0x0)_0x4cc66e['where'](_0x4080('0xb1'),_['map'](_0x5a7ea9,'id'));return db[_0x4080('0x91')][_0x4080('0x36')](_0x4cc66e[_0x4080('0x92')](),_0x174a4d)[_0x4080('0x1f')](function(_0x586db4){var _0x19010b=_[_0x4080('0xb2')](_0x586db4,'MailInteractionId');var _0x5f363e=[];return db[_0x4080('0xb3')][_0x4080('0xb4')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0x4080('0x1f')](function(_0x470194){var _0x45603d=_0x470194[_0x4080('0xb5')];_0x5a7ea9['forEach'](function(_0x11263f){_0x5f363e[_0x4080('0x29')](updateMailInteraction(_0x11263f,_0x2cc631,_0x19010b,_0x45603d));});return BPromise[_0x4080('0xb6')](_0x5f363e);});});});})[_0x4080('0x1f')](function(_0x2ac74d){_0x2bacac[_0x4080('0xb7')]=_0x2ac74d;return _0x2bacac;})['then'](respondWithFilteredResult(_0x2c3ee1,_0x489b85))['catch'](handleError(_0x2c3ee1,null));};exports[_0x4080('0xb8')]=function(_0xd47641,_0x3e0de9){var _0x246483={'raw':![],'where':{'id':_0xd47641[_0x4080('0xb9')]['id']}},_0x10c5b1={};_0x10c5b1[_0x4080('0x35')]=_[_0x4080('0x37')](db[_0x4080('0x30')]['rawAttributes']);_0x10c5b1[_0x4080('0x36')]=_[_0x4080('0x37')](_0xd47641[_0x4080('0x36')]);_0x10c5b1[_0x4080('0x38')]=_['intersection'](_0x10c5b1[_0x4080('0x35')],_0x10c5b1[_0x4080('0x36')]);_0x246483[_0x4080('0x3a')]=_[_0x4080('0x39')](_0x10c5b1[_0x4080('0x35')],qs[_0x4080('0x95')](_0xd47641[_0x4080('0x36')][_0x4080('0x95')]));_0x246483[_0x4080('0x3a')]=_0x246483[_0x4080('0x3a')][_0x4080('0x3b')]?_0x246483[_0x4080('0x3a')]:_0x10c5b1[_0x4080('0x35')];if(_0xd47641[_0x4080('0x36')][_0x4080('0xba')]){_0x246483[_0x4080('0xbb')]=[{'all':!![]}];}_0x246483=_[_0x4080('0x94')]({},_0x246483,_0xd47641[_0x4080('0xbc')]);return db['MailInteraction'][_0x4080('0x5f')](_0x246483)[_0x4080('0x1f')](handleEntityNotFound(_0x3e0de9,null))['then'](respondWithResult(_0x3e0de9,null))[_0x4080('0x2f')](handleError(_0x3e0de9,null));};exports[_0x4080('0xbd')]=function(_0x5e466a,_0x567d39){return db['MailInteraction'][_0x4080('0xbd')](_0x5e466a[_0x4080('0xbe')],{})[_0x4080('0x1f')](respondWithResult(_0x567d39,0xc9))['catch'](handleError(_0x567d39,null));};exports[_0x4080('0x1e')]=function(_0x5ca919,_0x29ab0a){if(_0x5ca919[_0x4080('0xbe')]['id']){delete _0x5ca919[_0x4080('0xbe')]['id'];}return db['MailInteraction'][_0x4080('0x5f')]({'where':{'id':_0x5ca919[_0x4080('0xb9')]['id']}})[_0x4080('0x1f')](handleEntityNotFound(_0x29ab0a,null))[_0x4080('0x1f')](saveUpdates(_0x5ca919[_0x4080('0xbe')],null))[_0x4080('0x1f')](respondWithResult(_0x29ab0a,null))[_0x4080('0x2f')](handleError(_0x29ab0a,null));};exports[_0x4080('0xbf')]=function(_0x48a3b2,_0x322e52){return db[_0x4080('0x30')][_0x4080('0x5f')]({'where':{'id':_0x48a3b2[_0x4080('0xb9')]['id']}})['then'](handleEntityNotFound(_0x322e52,null))[_0x4080('0x1f')](removeEntity(_0x322e52,null))[_0x4080('0x2f')](handleError(_0x322e52,null));};exports[_0x4080('0xc0')]=function(_0x49f7ff,_0x565539){return db[_0x4080('0x30')][_0x4080('0xc0')]()[_0x4080('0x1f')](respondWithResult(_0x565539,null))[_0x4080('0x2f')](handleError(_0x565539,null));};exports[_0x4080('0xc1')]=function(_0xb80379,_0x1d79a0){return db[_0x4080('0x2a')][_0x4080('0x5f')]({'where':{'id':_0xb80379[_0x4080('0xb9')]['id']}})[_0x4080('0x1f')](handleEntityNotFound(_0x1d79a0,null))[_0x4080('0x1f')](function(_0x2152e3){if(_0x2152e3){return _0x2152e3[_0x4080('0xc1')](_0xb80379['body'][_0x4080('0xc2')],_[_0x4080('0xc3')](_0xb80379[_0x4080('0xbe')],['ids','id'])||{});}})[_0x4080('0x1f')](respondWithResult(_0x1d79a0,null))['catch'](handleError(_0x1d79a0,null));};exports['getMessages']=function(_0x30a1b8,_0x51af29){var _0x4d4c7d={'raw':![],'where':{}};var _0x4a7620={};var _0x1268e8={'count':0x0,'rows':[]};return db[_0x4080('0x30')]['findOne']({'where':{'id':_0x30a1b8[_0x4080('0xb9')]['id']}})[_0x4080('0x1f')](handleEntityNotFound(_0x51af29,null))[_0x4080('0x1f')](function(_0x19db3f){if(_0x19db3f){_0x4a7620[_0x4080('0x35')]=_[_0x4080('0x37')](db['MailMessage'][_0x4080('0x31')]);_0x4a7620['query']=_[_0x4080('0x37')](_0x30a1b8[_0x4080('0x36')]);_0x4a7620[_0x4080('0x38')]=_[_0x4080('0x39')](_0x4a7620['model'],_0x4a7620[_0x4080('0x36')]);_0x4d4c7d[_0x4080('0x3a')]=_['intersection'](_0x4a7620[_0x4080('0x35')],qs[_0x4080('0x95')](_0x30a1b8[_0x4080('0x36')][_0x4080('0x95')]));_0x4d4c7d[_0x4080('0x3a')]=_0x4d4c7d[_0x4080('0x3a')][_0x4080('0x3b')]?_0x4d4c7d[_0x4080('0x3a')]:_0x4a7620[_0x4080('0x35')];if(!_0x30a1b8[_0x4080('0x36')][_0x4080('0xc4')](_0x4080('0x3c'))){_0x4d4c7d[_0x4080('0x1a')]=qs[_0x4080('0x1a')](_0x30a1b8[_0x4080('0x36')][_0x4080('0x1a')]);_0x4d4c7d[_0x4080('0x18')]=qs['offset'](_0x30a1b8[_0x4080('0x36')][_0x4080('0x18')]);}_0x4d4c7d['order']=qs[_0x4080('0xc5')](_0x30a1b8[_0x4080('0x36')][_0x4080('0xc5')]);_0x4d4c7d[_0x4080('0x3d')]=qs['filters'](_[_0x4080('0x3e')](_0x30a1b8[_0x4080('0x36')],_0x4a7620[_0x4080('0x38')]));_0x4d4c7d[_0x4080('0x3d')][_0x4080('0xc6')]=_0x19db3f['id'];if(_0x30a1b8['query'][_0x4080('0x7a')]){_0x4d4c7d['where']=_[_0x4080('0x94')](_0x4d4c7d['where'],{'$or':_[_0x4080('0x25')](_0x4d4c7d[_0x4080('0x3a')],function(_0x38cef8){var _0x3de7e9={};_0x3de7e9[_0x38cef8]={'$like':'%'+_0x30a1b8[_0x4080('0x36')][_0x4080('0x7a')]+'%'};return _0x3de7e9;})});}if(_0x30a1b8['query'][_0x4080('0xc7')]){var _0x54fc41=_0x30a1b8[_0x4080('0x36')][_0x4080('0xc7')][_0x4080('0x28')](',');var _0x5c88c7={};_0x5c88c7[_0x54fc41[0x0]]={'$gte':moment(_0x54fc41[0x1])['format'](_0x4080('0xc8'))};_0x4d4c7d[_0x4080('0x3d')]=_[_0x4080('0x94')](_0x4d4c7d[_0x4080('0x3d')],_0x5c88c7);}_0x4d4c7d=_[_0x4080('0x94')]({},_0x4d4c7d,_0x30a1b8['options']);return db[_0x4080('0x2a')]['count']({'where':_0x4d4c7d[_0x4080('0x3d')]})['then'](function(_0x3427f1){_0x1268e8['count']=_0x3427f1;if(_0x30a1b8[_0x4080('0x36')]['includeAll']){_0x4d4c7d[_0x4080('0xbb')]=[{'all':!![]}];}return db[_0x4080('0x2a')][_0x4080('0xc9')](_0x4d4c7d);})[_0x4080('0x1f')](function(_0x537288){if(_0x30a1b8['query'][_0x4080('0xca')]===_0x4080('0xcb')){for(var _0x2547a8=0x0;_0x2547a8<_0x537288[_0x4080('0x3b')];_0x2547a8++){_0x537288[_0x2547a8][_0x4080('0xbe')]=juice(_0x537288[_0x2547a8][_0x4080('0xbe')]);}}_0x1268e8[_0x4080('0xb7')]=_0x537288;return _0x1268e8;});}})[_0x4080('0x1f')](respondWithFilteredResult(_0x51af29,_0x4d4c7d))['catch'](handleError(_0x51af29,null));};exports[_0x4080('0xcc')]=function(_0x176707,_0x10cf47){return db[_0x4080('0x30')][_0x4080('0x5f')]({'where':{'id':_0x176707[_0x4080('0xb9')]['id']}})['then'](handleEntityNotFound(_0x10cf47,null))[_0x4080('0x1f')](function(_0x1ab318){if(_0x1ab318){return _0x1ab318[_0x4080('0xcd')](_0x176707[_0x4080('0xbe')][_0x4080('0xc2')],_['omit'](_0x176707[_0x4080('0xbe')],[_0x4080('0xc2'),'id'])||{})[_0x4080('0xce')](function(){return db[_0x4080('0x62')][_0x4080('0xc9')]({'attributes':['id',_0x4080('0x22'),_0x4080('0x41')],'where':{'id':_0x176707['body'][_0x4080('0xc2')]}});})['then'](function(_0x2e506f){socket[_0x4080('0xcf')]('mailInteractionTags:save',{'id':Number(_0x176707[_0x4080('0xb9')]['id']),'tags':_0x2e506f||[]});return{'id':Number(_0x176707[_0x4080('0xb9')]['id']),'tags':_0x2e506f||[]};});}})[_0x4080('0x1f')](respondWithResult(_0x10cf47,null))[_0x4080('0x2f')](handleError(_0x10cf47,null));};exports['removeTags']=function(_0x739027,_0x385be5){return db[_0x4080('0x30')][_0x4080('0x5f')]({'where':{'id':_0x739027[_0x4080('0xb9')]['id']}})[_0x4080('0x1f')](handleEntityNotFound(_0x385be5,null))['then'](function(_0x4be8f8){if(_0x4be8f8){return _0x4be8f8[_0x4080('0xd0')](_0x739027[_0x4080('0x36')][_0x4080('0xc2')]);}})[_0x4080('0x1f')](respondWithStatusCode(_0x385be5,null))[_0x4080('0x2f')](handleError(_0x385be5,null));};exports[_0x4080('0xd1')]=function(_0x3b1968,_0x20da6d){var _0x4084d5=moment()[_0x4080('0xd2')]()[_0x4080('0x92')]();var _0x150d26=path['join'](config['root'],_0x4080('0xd3'),_0x4080('0xd4'),'tmp');var _0x5e2938=path['join'](config[_0x4080('0xd5')],_0x4080('0xd3'),_0x4080('0xd4'),'attachments');var _0x55ab0d=path[_0x4080('0xd6')](_0x150d26,_0x4084d5);var _0x19d1a6=util['format'](_0x4080('0xd7'),_0x3b1968['params']['id'],_0x4084d5);var _0x572a9a=path[_0x4080('0xd6')](_0x150d26,_0x19d1a6);var _0x177807=[];if(_0x3b1968[_0x4080('0x36')][_0x4080('0xd8')]){_0x177807[_0x4080('0x29')]({'model':db['Attachment'],'as':'Attachments','raw':!![]});}var _0x340a48=[{'model':db[_0x4080('0x2a')],'as':_0x4080('0xd9'),'attributes':['id',_0x4080('0xbe'),'from','to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs[_0x4080('0xc5')]('id'),'include':_0x177807}];return db['MailInteraction'][_0x4080('0x5f')]({'where':{'id':_0x3b1968[_0x4080('0xb9')]['id']},'include':_0x340a48})['then'](handleEntityNotFound(_0x20da6d,null))[_0x4080('0x1f')](function(_0x582fe4){if(_0x582fe4&&_0x582fe4['Messages']){var _0x19a959=_0x582fe4[_0x4080('0xda')]({'plain':!![]});fs[_0x4080('0xdb')](_0x55ab0d);return BPromise['each'](_0x19a959[_0x4080('0xd9')],function(_0x6e8402,_0x9cf1bc){var _0x103ef3={'from':_0x6e8402[_0x4080('0x46')],'to':_0x6e8402['to'],'subject':_0x6e8402[_0x4080('0xdc')],'html':htmlEntities[_0x4080('0xdd')](_0x6e8402[_0x4080('0xbe')]),'headers':{'Date':moment(_0x6e8402[_0x4080('0x70')])[_0x4080('0xde')](_0x4080('0xdf'))},'attachments':[]};if(_0x6e8402['cc']){_0x103ef3[_0x4080('0xe0')]['Cc']=_0x6e8402['cc'];}if(_0x6e8402[_0x4080('0xe1')]){_0x103ef3[_0x4080('0xe0')][_0x4080('0xe2')]=_0x6e8402[_0x4080('0xe1')];}return new BPromise(function(_0x4f6abd,_0x1cfd69){if(_0x6e8402[_0x4080('0xe3')]){for(var _0x48237b=0x0;_0x48237b<_0x6e8402[_0x4080('0xe3')][_0x4080('0x3b')];_0x48237b++){var _0x3f1e24=_0x6e8402[_0x4080('0xe3')][_0x48237b];var _0x2ef74c=path['join'](_0x5e2938,_0x3f1e24[_0x4080('0xe4')]);if(fs[_0x4080('0xe5')](_0x2ef74c)){_0x103ef3[_0x4080('0xd8')][_0x4080('0x29')]({'name':_0x3f1e24[_0x4080('0x22')],'contentType':_0x3f1e24[_0x4080('0x33')],'data':fs['readFileSync'](_0x2ef74c)});}}}emlformat['build'](_0x103ef3,function(_0x4c5087,_0x189b99){if(_0x4c5087)return _0x1cfd69(_0x4c5087);fs[_0x4080('0xe6')](path[_0x4080('0xd6')](_0x55ab0d,util[_0x4080('0xde')](_0x4080('0xe7'),_0x9cf1bc)),_0x189b99);return _0x4f6abd(_0x189b99);});});})[_0x4080('0x1f')](function(){return new BPromise(function(_0x46db87,_0x509a27){zipdir(_0x55ab0d,{'saveTo':_0x572a9a},function(_0x4473a7,_0x4f1e06){if(_0x4473a7)return _0x509a27(_0x4473a7);return _0x46db87(_0x4f1e06);});})[_0x4080('0x1f')](function(){return new BPromise(function(_0x1dec1f,_0x84138a){rimraf(_0x55ab0d,function(_0x3dc7a4){if(_0x3dc7a4)_0x84138a(_0x3dc7a4);return _0x1dec1f();});});})['then'](function(){return _0x20da6d['download'](_0x572a9a,_0x19d1a6,function(_0x2134b2){if(!_0x2134b2)fs[_0x4080('0xe8')](_0x572a9a);});});});}else{return _0x20da6d['sendStatus'](0xc8);}})[_0x4080('0x2f')](handleError(_0x20da6d,null));};
\ No newline at end of file
+var _0x6b07=['getMessages','$gte','inlineCss','true','addTags','setTags','ids','spread','findAll','emit','mailInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','build','writeFileSync','message%d.eml','eml-format','rimraf','zip-dir','moment','bluebird','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','html-entities','redis','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','status','json','undefined','limit','offset','count','Content-Range','update','then','destroy','end','stack','name','send','map','fullname','Tags','TagIds','MailMessage','findOne','out','plainBody','-id','lastMsgText','trimStart','catch','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','select','field','color','from','tools_tags','u.fullname','ui.MailInteractionId','user_has_mail_interactions','users','mail_interactions','cm_contacts','left_join','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','value','ContactId','buildExpression','start','Tag','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','compact','isEmpty','MailAccountId','concat','createdAt','parse','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','Sequelize','SELECT','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','i.MailAccountId\x20IN\x20?','toString','sequelize','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.createdAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.to','i.ContactId','i.UserId','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','enableEmailPreview','push','rows','show','params','includeAll','include','options','create','MailInteraction','body','describe','addMessage','omit'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0x6b07,0x111));var _0x76b0=function(_0x43bbfa,_0x1131b7){_0x43bbfa=_0x43bbfa-0x0;var _0xa4361d=_0x6b07[_0x43bbfa];return _0xa4361d;};'use strict';var emlformat=require(_0x76b0('0x0'));var rimraf=require(_0x76b0('0x1'));var zipdir=require(_0x76b0('0x2'));var moment=require(_0x76b0('0x3'));var BPromise=require(_0x76b0('0x4'));var util=require('util');var path=require(_0x76b0('0x5'));var fs=require('fs');var _=require(_0x76b0('0x6'));var squel=require('squel');var juice=require(_0x76b0('0x7'));var Redis=require(_0x76b0('0x8'));var qs=require(_0x76b0('0x9'));var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')('api');var config=require(_0x76b0('0xa'));var db=require(_0x76b0('0xb'))['db'];var htmlEntities=require(_0x76b0('0xc'));config[_0x76b0('0xd')]=_['defaults'](config[_0x76b0('0xd')],{'host':_0x76b0('0xe'),'port':0x18eb});var socket=require(_0x76b0('0xf'))(new Redis(config[_0x76b0('0xd')]));require(_0x76b0('0x10'))['register'](socket);function respondWithStatusCode(_0x4ddbec,_0x49ab2a){_0x49ab2a=_0x49ab2a||0xcc;return function(_0xeec17b){if(_0xeec17b){return _0x4ddbec[_0x76b0('0x11')](_0x49ab2a);}return _0x4ddbec[_0x76b0('0x12')](_0x49ab2a)['end']();};}function respondWithResult(_0x30fdf3,_0x43cfa5){_0x43cfa5=_0x43cfa5||0xc8;return function(_0x4d0a50){if(_0x4d0a50){return _0x30fdf3['status'](_0x43cfa5)[_0x76b0('0x13')](_0x4d0a50);}};}function respondWithFilteredResult(_0x17db68,_0x2078d2){return function(_0x5c71f3){if(_0x5c71f3){var _0x5b7a86=typeof _0x2078d2['offset']===_0x76b0('0x14')&&typeof _0x2078d2[_0x76b0('0x15')]===_0x76b0('0x14');var _0x4389b5=_0x5c71f3['count'];var _0x2e1468=_0x5b7a86?0x0:_0x2078d2[_0x76b0('0x16')];var _0x23a05c=_0x5b7a86?_0x5c71f3[_0x76b0('0x17')]:_0x2078d2[_0x76b0('0x16')]+_0x2078d2['limit'];var _0x24c963;if(_0x23a05c>=_0x4389b5){_0x23a05c=_0x4389b5;_0x24c963=0xc8;}else{_0x24c963=0xce;}_0x17db68[_0x76b0('0x12')](_0x24c963);return _0x17db68['set'](_0x76b0('0x18'),_0x2e1468+'-'+_0x23a05c+'/'+_0x4389b5)[_0x76b0('0x13')](_0x5c71f3);}return null;};}function saveUpdates(_0xcbd8dc){return function(_0x33a3a8){if(_0x33a3a8){return _0x33a3a8[_0x76b0('0x19')](_0xcbd8dc)[_0x76b0('0x1a')](function(_0x56c9fe){return _0x56c9fe;});}return null;};}function removeEntity(_0x510a03){return function(_0x1a5a74){if(_0x1a5a74){return _0x1a5a74[_0x76b0('0x1b')]()[_0x76b0('0x1a')](function(){_0x510a03[_0x76b0('0x12')](0xcc)[_0x76b0('0x1c')]();});}};}function handleEntityNotFound(_0x51d8ac){return function(_0x147293){if(!_0x147293){_0x51d8ac['sendStatus'](0x194);}return _0x147293;};}function handleError(_0x1b88f8,_0x4fb044){_0x4fb044=_0x4fb044||0x1f4;return function(_0x29a85c){logger['error'](_0x29a85c[_0x76b0('0x1d')]);if(_0x29a85c[_0x76b0('0x1e')]){delete _0x29a85c[_0x76b0('0x1e')];}_0x1b88f8[_0x76b0('0x12')](_0x4fb044)[_0x76b0('0x1f')](_0x29a85c);};}function getInteractionUsers(_0x58b521,_0x29f560){return new BPromise(function(_0x48dd8f,_0x8b3237){try{if(_0x29f560[_0x58b521['id']]){_0x58b521['Users']=_[_0x76b0('0x20')](_0x29f560[_0x58b521['id']],function(_0x5be1f1){return{'id':_0x5be1f1['id'],'fullname':_0x5be1f1[_0x76b0('0x21')]};});}}catch(_0x4ea8c5){_0x8b3237(_0x4ea8c5);}_0x48dd8f(_0x58b521);});}function getInteractionTags(_0xfb6d7,_0xc62494){return new BPromise(function(_0x494cdc,_0x5e0c9f){try{if(_0xfb6d7['TagIds']){_0xfb6d7['Tags']=[];_0xfb6d7['TagIds']['split'](',')['forEach'](function(_0x34e7de){_0xfb6d7[_0x76b0('0x22')]['push'](_0xc62494[_0x34e7de]);});}delete _0xfb6d7[_0x76b0('0x23')];}catch(_0x5657c4){_0x5e0c9f(_0x5657c4);}_0x494cdc(_0xfb6d7);});}function getLastMessageText(_0xb4c343){return new BPromise(function(_0x370db9,_0x38df51){return db[_0x76b0('0x24')][_0x76b0('0x25')]({'where':{'$and':[{'MailInteractionId':_0xb4c343['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x76b0('0x26')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x76b0('0x27')],'order':_0x76b0('0x28'),'raw':!![]})[_0x76b0('0x1a')](function(_0x4c23ff){if(_0x4c23ff&&_0x4c23ff[_0x76b0('0x27')]){_0xb4c343[_0x76b0('0x29')]=_[_0x76b0('0x2a')](_0x4c23ff[_0x76b0('0x27')]);}_0x370db9(_0xb4c343);})[_0x76b0('0x2b')](function(_0x44bd3d){_0x38df51(_0x44bd3d);});});}function updateMailInteraction(_0x18dc90,_0x264601,_0x1016a4,_0x2571b1){return new BPromise(function(_0x1f736f,_0x4f391b){return getInteractionUsers(_0x18dc90,_0x1016a4)[_0x76b0('0x1a')](function(_0x4817f6){return getInteractionTags(_0x4817f6,_0x264601);})['then'](function(_0x4d3722){if(_0x2571b1){_0x1f736f(getLastMessageText(_0x4d3722));}else{_0x1f736f(_0x4d3722);}})[_0x76b0('0x2b')](function(_0x580251){_0x4f391b(_0x580251);});});}exports[_0x76b0('0x2c')]=function(_0x48cb38,_0x1be5cb){var _0x5020d9={},_0x345bd8={},_0x35e7d7={'count':0x0,'rows':[]};var _0x5c8c5d=_[_0x76b0('0x20')](db['MailInteraction'][_0x76b0('0x2d')],function(_0x35e8d2){return{'name':_0x35e8d2[_0x76b0('0x2e')],'type':_0x35e8d2[_0x76b0('0x2f')][_0x76b0('0x30')]};});_0x345bd8[_0x76b0('0x31')]=_[_0x76b0('0x20')](_0x5c8c5d,'name');_0x345bd8[_0x76b0('0x32')]=_[_0x76b0('0x33')](_0x48cb38[_0x76b0('0x32')]);_0x345bd8[_0x76b0('0x34')]=_[_0x76b0('0x35')](_0x345bd8[_0x76b0('0x31')],_0x345bd8[_0x76b0('0x32')]);_0x5020d9[_0x76b0('0x36')]=_[_0x76b0('0x35')](_0x345bd8['model'],qs[_0x76b0('0x37')](_0x48cb38[_0x76b0('0x32')][_0x76b0('0x37')]));_0x5020d9[_0x76b0('0x36')]=_0x5020d9['attributes'][_0x76b0('0x38')]?_0x5020d9[_0x76b0('0x36')]:_0x345bd8[_0x76b0('0x31')];if(!_0x48cb38['query'][_0x76b0('0x39')](_0x76b0('0x3a'))){_0x5020d9[_0x76b0('0x15')]=qs[_0x76b0('0x15')](_0x48cb38['query'][_0x76b0('0x15')]);_0x5020d9[_0x76b0('0x16')]=qs[_0x76b0('0x16')](_0x48cb38['query'][_0x76b0('0x16')]);}_0x5020d9['order']=qs[_0x76b0('0x3b')](_0x48cb38[_0x76b0('0x32')][_0x76b0('0x3b')]);_0x5020d9['where']=qs[_0x76b0('0x34')](_[_0x76b0('0x3c')](_0x48cb38[_0x76b0('0x32')],_0x345bd8['filters']),_0x5c8c5d);var _0x2a0ba5=[];var _0x106159=squel[_0x76b0('0x3d')]()['field']('id')[_0x76b0('0x3e')](_0x76b0('0x1e'))['field'](_0x76b0('0x3f'))[_0x76b0('0x40')](_0x76b0('0x41'));var _0x556311=squel[_0x76b0('0x3d')]()[_0x76b0('0x3e')]('u.id')[_0x76b0('0x3e')](_0x76b0('0x42'))[_0x76b0('0x3e')](_0x76b0('0x43'))[_0x76b0('0x40')](_0x76b0('0x44'),'ui')['left_join'](_0x76b0('0x45'),'u','u.id\x20=\x20ui.UserId');var _0x35152f=squel[_0x76b0('0x3d')]()['from'](_0x76b0('0x46'),'i')['left_join'](_0x76b0('0x47'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x76b0('0x48')](_0x76b0('0x45'),'o',_0x76b0('0x49'))['left_join'](_0x76b0('0x4a'),'a',_0x76b0('0x4b'))[_0x76b0('0x48')](_0x76b0('0x4c'),'me',_0x76b0('0x4d'))[_0x76b0('0x48')]('mail_interaction_has_tags','it',_0x76b0('0x4e'))[_0x76b0('0x48')]('tools_tags','t',_0x76b0('0x4f'));var _0x581756=squel[_0x76b0('0x50')]();var _0x32f9e1=[];var _0x55bff4=squel[_0x76b0('0x50')]();var _0x5ce9ff;if(_0x48cb38[_0x76b0('0x32')]['search']){_0x5ce9ff=as[_0x76b0('0x51')](_0x48cb38[_0x76b0('0x32')][_0x76b0('0x52')]);var _0x419b53=_0x5ce9ff[_0x76b0('0x53')];for(var _0x35d83a=0x0;_0x35d83a<_0x5ce9ff[_0x76b0('0x54')]['length'];_0x35d83a++){var _0x34e220=_0x5ce9ff[_0x76b0('0x54')][_0x35d83a];var _0x175789='i';var _0x16716d=_[_0x76b0('0x55')](_0x5c8c5d,['name',_0x34e220[_0x76b0('0x3e')]]);if(!_0x16716d){switch(_0x34e220['field']){case _0x76b0('0x56'):if(_0x34e220['value']==0x1){_0x35152f[_0x76b0('0x57')]('`'+_0x34e220[_0x76b0('0x3e')]+_0x76b0('0x58'));}else{_0x35152f[_0x76b0('0x57')]('`'+_0x34e220['field']+_0x76b0('0x59'));}break;case _0x76b0('0x5a'):if(_0x34e220['operator']===_0x76b0('0x5b')){if(_0x34e220['value']['split']('\x20')[_0x76b0('0x38')]>0x1){_0x581756[_0x419b53](_0x76b0('0x5c'),qs['getFullTextValue'](_0x34e220[_0x76b0('0x5d')]),null);}else{var _0x43430f='%'+_0x34e220[_0x76b0('0x5d')]+'%';_0x581756[_0x419b53]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x43430f,_0x43430f,_0x43430f);}}else{_0x16716d=_[_0x76b0('0x55')](_0x5c8c5d,[_0x76b0('0x1e'),_0x76b0('0x5e')]);_0x34e220[_0x76b0('0x3e')]=_0x76b0('0x5e');_0x5c5c9a=as[_0x76b0('0x5f')](_0x175789,_0x16716d[_0x76b0('0x2f')],_0x34e220);_0x581756[_0x419b53](_0x5c5c9a['text'],_0x5c5c9a[_0x76b0('0x5d')][_0x76b0('0x60')],_0x5c5c9a['value'][_0x76b0('0x1c')]);}break;case _0x76b0('0x61'):var _0x3e869b=_0x34e220[_0x76b0('0x5d')][_0x76b0('0x62')](',')[_0x76b0('0x20')](function(_0x4d9c3d){return Number(_0x4d9c3d);});_0x3e869b[_0x76b0('0x63')](function(_0x107431){_0x55bff4['or'](_0x76b0('0x64'),'%,'+_0x107431+',%');});_0x32f9e1=_[_0x76b0('0x65')](_0x32f9e1,_0x3e869b);break;case _0x76b0('0x66'):if(_0x34e220[_0x76b0('0x67')]===_0x76b0('0x5b')){_0x581756[_0x419b53](_0x76b0('0x68'),'%'+_0x34e220[_0x76b0('0x5d')]+'%',null);}else{_0x16716d=_[_0x76b0('0x55')](_0x5c8c5d,[_0x76b0('0x1e'),_0x76b0('0x69')]);_0x34e220[_0x76b0('0x3e')]=_0x76b0('0x69');_0x5c5c9a=as[_0x76b0('0x5f')](_0x175789,_0x16716d[_0x76b0('0x2f')],_0x34e220);_0x581756[_0x419b53](_0x5c5c9a[_0x76b0('0x6a')],_0x5c5c9a[_0x76b0('0x5d')][_0x76b0('0x60')],_0x5c5c9a[_0x76b0('0x5d')][_0x76b0('0x1c')]);}break;case'plainBody':_0x5c5c9a=as[_0x76b0('0x5f')]('me',null,_0x34e220);_0x581756[_0x419b53](_0x5c5c9a[_0x76b0('0x6a')],_0x5c5c9a[_0x76b0('0x5d')][_0x76b0('0x60')],_0x5c5c9a[_0x76b0('0x5d')]['end']);break;}}else{var _0x5c5c9a=as[_0x76b0('0x5f')](_0x175789,_0x16716d['type'],_0x34e220);_0x581756[_0x419b53](_0x5c5c9a[_0x76b0('0x6a')],_0x5c5c9a[_0x76b0('0x5d')][_0x76b0('0x60')],_0x5c5c9a['value'][_0x76b0('0x1c')]);}}}else{var _0x83931b=_(_0x48cb38['query'])[_0x76b0('0x33')]()[_0x76b0('0x20')](function(_0x162a6f){return _[_0x76b0('0x6b')](_0x5c8c5d,[_0x76b0('0x1e'),_0x162a6f])?_0x162a6f:undefined;})[_0x76b0('0x6c')]()['value']();if(!_[_0x76b0('0x6d')](_0x83931b)){_0x83931b[_0x76b0('0x63')](function(_0x1dd186){if(_0x1dd186===_0x76b0('0x6e')){_0x35152f['where']('i.MailAccountId\x20IN\x20?',[][_0x76b0('0x6f')](_0x48cb38['query'][_0x1dd186]));}else if(_0x1dd186===_0x76b0('0x70')){var _0x3c2b2f=JSON[_0x76b0('0x71')](_0x48cb38[_0x76b0('0x32')][_0x1dd186])['$gte'];var _0x211f41=JSON[_0x76b0('0x71')](_0x48cb38['query'][_0x1dd186])[_0x76b0('0x72')];_0x35152f[_0x76b0('0x73')](_0x76b0('0x74'),_0x3c2b2f,_0x211f41);}else{if(_0x48cb38[_0x76b0('0x32')][_0x1dd186]===_0x76b0('0x75')){_0x35152f[_0x76b0('0x73')]('i.'+_0x1dd186+_0x76b0('0x76'));}else{_0x35152f[_0x76b0('0x73')]('i.'+_0x1dd186+_0x76b0('0x77'),_0x48cb38[_0x76b0('0x32')][_0x1dd186]);}}});}if(_0x48cb38['query'][_0x76b0('0x78')]){if(_0x48cb38[_0x76b0('0x32')][_0x76b0('0x78')]==0x1){_0x35152f[_0x76b0('0x57')](_0x76b0('0x79'));}else{_0x35152f[_0x76b0('0x57')](_0x76b0('0x7a'));}}if(_0x48cb38[_0x76b0('0x32')][_0x76b0('0x7b')]){_0x32f9e1=_[_0x76b0('0x7c')](_0x48cb38[_0x76b0('0x32')][_0x76b0('0x7b')])?_0x48cb38['query'][_0x76b0('0x7b')]:new Array(_0x48cb38[_0x76b0('0x32')][_0x76b0('0x7b')]);_0x32f9e1[_0x76b0('0x63')](function(_0x1bea96){_0x55bff4['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1bea96+',%');});}if(_0x48cb38[_0x76b0('0x32')][_0x76b0('0x7d')]){var _0x39ccd3=_0x48cb38[_0x76b0('0x32')]['filter'][_0x76b0('0x7e')]('\x5c','\x5c\x5c')[_0x76b0('0x7e')](/'/g,'\x27\x27');if(qs[_0x76b0('0x7f')](_0x39ccd3)){_0x581756['or']('i.id\x20LIKE\x20?',_0x39ccd3+'%');}else if(qs[_0x76b0('0x80')](_0x39ccd3)){_0x581756['or'](_0x76b0('0x81'),_0x39ccd3+'%');}else{_0x581756['or'](_0x76b0('0x82'),qs[_0x76b0('0x83')](_0x39ccd3))['or'](_0x76b0('0x84'),qs['getFullTextValue'](_0x39ccd3));}}}_0x35152f['where'](_0x581756);_0x35152f['group']('i.id');var _0x13103a={'type':db[_0x76b0('0x85')]['QueryTypes'][_0x76b0('0x86')],'raw':!![]};var _0x143615=_0x35152f['clone']();_0x143615['field'](_0x76b0('0x87'));_0x143615[_0x76b0('0x3e')](_0x76b0('0x88'),_0x76b0('0x56'));if(_0x5020d9[_0x76b0('0x89')]){_0x5020d9[_0x76b0('0x89')]['forEach'](function(_0x301555){var _0x2b70d1=_0x301555[0x0]===_0x76b0('0x8a')?_0x301555[0x0]:'i.'+_0x301555[0x0];_0x35152f['order'](_0x2b70d1,_0x301555[0x1]===_0x76b0('0x8b')?![]:!![]);});}if(!_[_0x76b0('0x6d')](_0x32f9e1)){_0x35152f[_0x76b0('0x57')](_0x55bff4);_0x143615[_0x76b0('0x73')]('t.id\x20IN\x20?',_0x32f9e1);}BPromise[_0x76b0('0x8c')]()[_0x76b0('0x1a')](function(){if(!_0x5ce9ff){if(_0x48cb38[_0x76b0('0x32')][_0x76b0('0x6e')])return;_0x143615[_0x76b0('0x73')]('i.MailAccountId\x20IS\x20NOT\x20NULL');_0x35152f['where'](_0x76b0('0x8d'));return;}if(_0x48cb38[_0x76b0('0x8e')][_0x76b0('0x8f')]!==_0x76b0('0x90'))return;return _0x48cb38[_0x76b0('0x8e')][_0x76b0('0x91')]({'attributes':['id'],'raw':!![]})[_0x76b0('0x1a')](function(_0x595a1d){if(_[_0x76b0('0x6d')](_0x595a1d)){_0x143615['where'](_0x76b0('0x92'));_0x35152f[_0x76b0('0x73')]('i.MailAccountId\x20IS\x20NULL');}else{_0x143615[_0x76b0('0x73')](_0x76b0('0x93'),_['map'](_0x595a1d,'id'));_0x35152f[_0x76b0('0x73')]('i.MailAccountId\x20IN\x20?',_[_0x76b0('0x20')](_0x595a1d,'id'));}});})['then'](function(){if(_0x48cb38[_0x76b0('0x8e')][_0x76b0('0x8f')]===_0x76b0('0x90')&&!_0x5ce9ff&&!_0x48cb38[_0x76b0('0x32')][_0x76b0('0x6e')])return[];return db['sequelize'][_0x76b0('0x32')](_0x143615[_0x76b0('0x94')](),_0x13103a);})['then'](function(_0x59892e){_0x35e7d7[_0x76b0('0x17')]=_0x59892e['length'];if(_0x35e7d7[_0x76b0('0x17')]===0x0)return[];return db[_0x76b0('0x95')][_0x76b0('0x32')](_0x106159[_0x76b0('0x94')](),_0x13103a)['then'](function(_0xfd3f97){_0x2a0ba5=_[_0x76b0('0x96')](_0xfd3f97,'id');_0x13103a=_[_0x76b0('0x97')](_0x13103a,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x48cb38[_0x76b0('0x32')]['fields']){_0x5020d9[_0x76b0('0x36')][_0x76b0('0x63')](function(_0x37394a){_0x35152f[_0x76b0('0x3e')]('i.'+_0x37394a);});}else{_0x35152f[_0x76b0('0x3e')](_0x76b0('0x88'),_0x76b0('0x56'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0x98'),_0x76b0('0x99'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0x9a'),_0x76b0('0x9b'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0x9c'),'contactName');_0x35152f[_0x76b0('0x3e')](_0x76b0('0x87'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0x9d'));_0x35152f[_0x76b0('0x3e')]('i.updatedAt');_0x35152f['field'](_0x76b0('0x9e'));_0x35152f['field']('i.closedAt');_0x35152f['field'](_0x76b0('0x9f'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa0'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa1'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa2'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa3'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa4'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa5'));_0x35152f[_0x76b0('0x3e')]('i.substatus');_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa6'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa7'));_0x35152f[_0x76b0('0x3e')]('i.MailAccountId');_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa8'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xa9'),_0x76b0('0xaa'));_0x35152f['field'](_0x76b0('0xab'),'Contact.lastName');_0x35152f[_0x76b0('0x3e')](_0x76b0('0xac'),_0x76b0('0xad'));_0x35152f['field']('c.phone',_0x76b0('0xae'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xaf'),_0x76b0('0xb0'));_0x35152f['field'](_0x76b0('0xb1'),_0x76b0('0xb2'));_0x35152f[_0x76b0('0x3e')]('o.fullname',_0x76b0('0xb3'));_0x35152f[_0x76b0('0x3e')](_0x76b0('0xb4'),'Owner.internal');_0x35152f[_0x76b0('0x3e')](_0x76b0('0xb5'),_0x76b0('0x23'));}if(_0x5020d9['limit'])_0x35152f[_0x76b0('0x15')](_0x5020d9['limit']);if(_0x5020d9[_0x76b0('0x16')])_0x35152f[_0x76b0('0x16')](_0x5020d9['offset']);return db[_0x76b0('0x95')][_0x76b0('0x32')](_0x35152f[_0x76b0('0x94')](),_0x13103a);})[_0x76b0('0x1a')](function(_0x43ce8f){if(_0x43ce8f[_0x76b0('0x38')]>0x0)_0x556311[_0x76b0('0x73')](_0x76b0('0xb6'),_['map'](_0x43ce8f,'id'));return db[_0x76b0('0x95')][_0x76b0('0x32')](_0x556311['toString'](),_0x13103a)[_0x76b0('0x1a')](function(_0x38d0b8){var _0x518df0=_[_0x76b0('0xb7')](_0x38d0b8,_0x76b0('0xb8'));var _0x5584dd=[];return db['Setting'][_0x76b0('0x25')]({'attributes':[_0x76b0('0xb9')],'raw':!![]})[_0x76b0('0x1a')](function(_0x19a6cd){var _0x44c673=_0x19a6cd[_0x76b0('0xb9')];_0x43ce8f[_0x76b0('0x63')](function(_0x275c54){_0x5584dd[_0x76b0('0xba')](updateMailInteraction(_0x275c54,_0x2a0ba5,_0x518df0,_0x44c673));});return BPromise['all'](_0x5584dd);});});});})['then'](function(_0x4d8e65){_0x35e7d7[_0x76b0('0xbb')]=_0x4d8e65;return _0x35e7d7;})['then'](respondWithFilteredResult(_0x1be5cb,_0x5020d9))['catch'](handleError(_0x1be5cb,null));};exports[_0x76b0('0xbc')]=function(_0x3f67ae,_0x1853e0){var _0x538d06={'raw':![],'where':{'id':_0x3f67ae[_0x76b0('0xbd')]['id']}},_0x2735a2={};_0x2735a2['model']=_[_0x76b0('0x33')](db['MailInteraction'][_0x76b0('0x2d')]);_0x2735a2[_0x76b0('0x32')]=_[_0x76b0('0x33')](_0x3f67ae['query']);_0x2735a2['filters']=_['intersection'](_0x2735a2[_0x76b0('0x31')],_0x2735a2[_0x76b0('0x32')]);_0x538d06[_0x76b0('0x36')]=_[_0x76b0('0x35')](_0x2735a2[_0x76b0('0x31')],qs[_0x76b0('0x37')](_0x3f67ae['query'][_0x76b0('0x37')]));_0x538d06[_0x76b0('0x36')]=_0x538d06[_0x76b0('0x36')][_0x76b0('0x38')]?_0x538d06[_0x76b0('0x36')]:_0x2735a2['model'];if(_0x3f67ae[_0x76b0('0x32')][_0x76b0('0xbe')]){_0x538d06[_0x76b0('0xbf')]=[{'all':!![]}];}_0x538d06=_[_0x76b0('0x97')]({},_0x538d06,_0x3f67ae[_0x76b0('0xc0')]);return db['MailInteraction']['find'](_0x538d06)[_0x76b0('0x1a')](handleEntityNotFound(_0x1853e0,null))['then'](respondWithResult(_0x1853e0,null))[_0x76b0('0x2b')](handleError(_0x1853e0,null));};exports[_0x76b0('0xc1')]=function(_0x2e21a8,_0x120254){return db[_0x76b0('0xc2')][_0x76b0('0xc1')](_0x2e21a8[_0x76b0('0xc3')],{})[_0x76b0('0x1a')](respondWithResult(_0x120254,0xc9))['catch'](handleError(_0x120254,null));};exports[_0x76b0('0x19')]=function(_0x517a90,_0x4a2ba4){if(_0x517a90['body']['id']){delete _0x517a90[_0x76b0('0xc3')]['id'];}return db[_0x76b0('0xc2')][_0x76b0('0x55')]({'where':{'id':_0x517a90[_0x76b0('0xbd')]['id']}})['then'](handleEntityNotFound(_0x4a2ba4,null))['then'](saveUpdates(_0x517a90[_0x76b0('0xc3')],null))[_0x76b0('0x1a')](respondWithResult(_0x4a2ba4,null))[_0x76b0('0x2b')](handleError(_0x4a2ba4,null));};exports['destroy']=function(_0x3686e1,_0x493455){return db[_0x76b0('0xc2')][_0x76b0('0x55')]({'where':{'id':_0x3686e1[_0x76b0('0xbd')]['id']}})[_0x76b0('0x1a')](handleEntityNotFound(_0x493455,null))['then'](removeEntity(_0x493455,null))[_0x76b0('0x2b')](handleError(_0x493455,null));};exports[_0x76b0('0xc4')]=function(_0x405144,_0x3f191f){return db[_0x76b0('0xc2')][_0x76b0('0xc4')]()[_0x76b0('0x1a')](respondWithResult(_0x3f191f,null))[_0x76b0('0x2b')](handleError(_0x3f191f,null));};exports['addMessage']=function(_0x3c3ab8,_0x409036){return db[_0x76b0('0x24')][_0x76b0('0x55')]({'where':{'id':_0x3c3ab8[_0x76b0('0xbd')]['id']}})[_0x76b0('0x1a')](handleEntityNotFound(_0x409036,null))['then'](function(_0x2e5a0c){if(_0x2e5a0c){return _0x2e5a0c[_0x76b0('0xc5')](_0x3c3ab8[_0x76b0('0xc3')]['ids'],_[_0x76b0('0xc6')](_0x3c3ab8[_0x76b0('0xc3')],['ids','id'])||{});}})['then'](respondWithResult(_0x409036,null))[_0x76b0('0x2b')](handleError(_0x409036,null));};exports[_0x76b0('0xc7')]=function(_0xd229fb,_0x14b71c){var _0x18ad2e={'raw':![],'where':{}};var _0x582476={};var _0x694485={'count':0x0,'rows':[]};return db[_0x76b0('0xc2')][_0x76b0('0x25')]({'where':{'id':_0xd229fb[_0x76b0('0xbd')]['id']}})['then'](handleEntityNotFound(_0x14b71c,null))[_0x76b0('0x1a')](function(_0x532119){if(_0x532119){_0x582476[_0x76b0('0x31')]=_[_0x76b0('0x33')](db['MailMessage'][_0x76b0('0x2d')]);_0x582476[_0x76b0('0x32')]=_[_0x76b0('0x33')](_0xd229fb[_0x76b0('0x32')]);_0x582476[_0x76b0('0x34')]=_[_0x76b0('0x35')](_0x582476['model'],_0x582476[_0x76b0('0x32')]);_0x18ad2e['attributes']=_[_0x76b0('0x35')](_0x582476[_0x76b0('0x31')],qs[_0x76b0('0x37')](_0xd229fb[_0x76b0('0x32')][_0x76b0('0x37')]));_0x18ad2e[_0x76b0('0x36')]=_0x18ad2e[_0x76b0('0x36')][_0x76b0('0x38')]?_0x18ad2e[_0x76b0('0x36')]:_0x582476[_0x76b0('0x31')];if(!_0xd229fb[_0x76b0('0x32')][_0x76b0('0x39')](_0x76b0('0x3a'))){_0x18ad2e[_0x76b0('0x15')]=qs[_0x76b0('0x15')](_0xd229fb[_0x76b0('0x32')][_0x76b0('0x15')]);_0x18ad2e[_0x76b0('0x16')]=qs['offset'](_0xd229fb[_0x76b0('0x32')][_0x76b0('0x16')]);}_0x18ad2e['order']=qs['sort'](_0xd229fb['query'][_0x76b0('0x3b')]);_0x18ad2e['where']=qs[_0x76b0('0x34')](_[_0x76b0('0x3c')](_0xd229fb[_0x76b0('0x32')],_0x582476[_0x76b0('0x34')]));_0x18ad2e['where'][_0x76b0('0xb8')]=_0x532119['id'];if(_0xd229fb[_0x76b0('0x32')][_0x76b0('0x7d')]){_0x18ad2e[_0x76b0('0x73')]=_[_0x76b0('0x97')](_0x18ad2e['where'],{'$or':_['map'](_0x18ad2e[_0x76b0('0x36')],function(_0xec2cf0){var _0xc7f429={};_0xc7f429[_0xec2cf0]={'$like':'%'+_0xd229fb[_0x76b0('0x32')][_0x76b0('0x7d')]+'%'};return _0xc7f429;})});}if(_0xd229fb[_0x76b0('0x32')][_0x76b0('0xc8')]){var _0x5e1bb2=_0xd229fb[_0x76b0('0x32')]['$gte'][_0x76b0('0x62')](',');var _0x26bcdd={};_0x26bcdd[_0x5e1bb2[0x0]]={'$gte':moment(_0x5e1bb2[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x18ad2e[_0x76b0('0x73')]=_[_0x76b0('0x97')](_0x18ad2e[_0x76b0('0x73')],_0x26bcdd);}_0x18ad2e=_['merge']({},_0x18ad2e,_0xd229fb['options']);return db[_0x76b0('0x24')][_0x76b0('0x17')]({'where':_0x18ad2e['where']})[_0x76b0('0x1a')](function(_0x3e12b6){_0x694485[_0x76b0('0x17')]=_0x3e12b6;if(_0xd229fb[_0x76b0('0x32')][_0x76b0('0xbe')]){_0x18ad2e[_0x76b0('0xbf')]=[{'all':!![]}];}return db[_0x76b0('0x24')]['findAll'](_0x18ad2e);})['then'](function(_0x53a756){if(_0xd229fb[_0x76b0('0x32')][_0x76b0('0xc9')]===_0x76b0('0xca')){for(var _0x190eea=0x0;_0x190eea<_0x53a756[_0x76b0('0x38')];_0x190eea++){_0x53a756[_0x190eea][_0x76b0('0xc3')]=juice(_0x53a756[_0x190eea]['body']);}}_0x694485['rows']=_0x53a756;return _0x694485;});}})[_0x76b0('0x1a')](respondWithFilteredResult(_0x14b71c,_0x18ad2e))[_0x76b0('0x2b')](handleError(_0x14b71c,null));};exports[_0x76b0('0xcb')]=function(_0x199833,_0x5bd49f){return db[_0x76b0('0xc2')][_0x76b0('0x55')]({'where':{'id':_0x199833[_0x76b0('0xbd')]['id']}})['then'](handleEntityNotFound(_0x5bd49f,null))[_0x76b0('0x1a')](function(_0x4193f6){if(_0x4193f6){return _0x4193f6[_0x76b0('0xcc')](_0x199833[_0x76b0('0xc3')][_0x76b0('0xcd')],_[_0x76b0('0xc6')](_0x199833[_0x76b0('0xc3')],[_0x76b0('0xcd'),'id'])||{})[_0x76b0('0xce')](function(){return db[_0x76b0('0x61')][_0x76b0('0xcf')]({'attributes':['id',_0x76b0('0x1e'),'color'],'where':{'id':_0x199833[_0x76b0('0xc3')][_0x76b0('0xcd')]}});})[_0x76b0('0x1a')](function(_0x14669a){socket[_0x76b0('0xd0')](_0x76b0('0xd1'),{'id':Number(_0x199833[_0x76b0('0xbd')]['id']),'tags':_0x14669a||[]});return{'id':Number(_0x199833[_0x76b0('0xbd')]['id']),'tags':_0x14669a||[]};});}})[_0x76b0('0x1a')](respondWithResult(_0x5bd49f,null))[_0x76b0('0x2b')](handleError(_0x5bd49f,null));};exports[_0x76b0('0xd2')]=function(_0x44992b,_0x54d706){return db[_0x76b0('0xc2')][_0x76b0('0x55')]({'where':{'id':_0x44992b[_0x76b0('0xbd')]['id']}})[_0x76b0('0x1a')](handleEntityNotFound(_0x54d706,null))[_0x76b0('0x1a')](function(_0x2e0d8d){if(_0x2e0d8d){return _0x2e0d8d['removeTags'](_0x44992b[_0x76b0('0x32')][_0x76b0('0xcd')]);}})['then'](respondWithStatusCode(_0x54d706,null))[_0x76b0('0x2b')](handleError(_0x54d706,null));};exports[_0x76b0('0xd3')]=function(_0x10bfd5,_0x504dd8){var _0x451852=moment()[_0x76b0('0xd4')]()[_0x76b0('0x94')]();var _0xfad5e8=path[_0x76b0('0xd5')](config[_0x76b0('0xd6')],_0x76b0('0xd7'),_0x76b0('0xd8'),_0x76b0('0xd9'));var _0x34a9e5=path[_0x76b0('0xd5')](config[_0x76b0('0xd6')],_0x76b0('0xd7'),_0x76b0('0xd8'),_0x76b0('0xda'));var _0xd5ee33=path[_0x76b0('0xd5')](_0xfad5e8,_0x451852);var _0x51fe50=util[_0x76b0('0xdb')](_0x76b0('0xdc'),_0x10bfd5[_0x76b0('0xbd')]['id'],_0x451852);var _0x591a31=path[_0x76b0('0xd5')](_0xfad5e8,_0x51fe50);var _0x434e07=[];if(_0x10bfd5[_0x76b0('0x32')][_0x76b0('0xda')]){_0x434e07[_0x76b0('0xba')]({'model':db[_0x76b0('0xdd')],'as':_0x76b0('0xde'),'raw':!![]});}var _0xf2dc99=[{'model':db[_0x76b0('0x24')],'as':_0x76b0('0xdf'),'attributes':['id',_0x76b0('0xc3'),'from','to','cc','bcc',_0x76b0('0xe0'),_0x76b0('0x70')],'where':{'secret':![]},'order':qs[_0x76b0('0x3b')]('id'),'include':_0x434e07}];return db['MailInteraction']['find']({'where':{'id':_0x10bfd5[_0x76b0('0xbd')]['id']},'include':_0xf2dc99})[_0x76b0('0x1a')](handleEntityNotFound(_0x504dd8,null))['then'](function(_0x5e8aa4){if(_0x5e8aa4&&_0x5e8aa4[_0x76b0('0xdf')]){var _0x2fe880=_0x5e8aa4[_0x76b0('0xe1')]({'plain':!![]});fs[_0x76b0('0xe2')](_0xd5ee33);return BPromise[_0x76b0('0xe3')](_0x2fe880['Messages'],function(_0x4cc200,_0x1a3114){var _0x4cac71={'from':_0x4cc200[_0x76b0('0x40')],'to':_0x4cc200['to'],'subject':_0x4cc200[_0x76b0('0xe0')],'html':htmlEntities['decode'](_0x4cc200[_0x76b0('0xc3')]),'headers':{'Date':moment(_0x4cc200['createdAt'])[_0x76b0('0xdb')](_0x76b0('0xe4'))},'attachments':[]};if(_0x4cc200['cc']){_0x4cac71[_0x76b0('0xe5')]['Cc']=_0x4cc200['cc'];}if(_0x4cc200[_0x76b0('0xe6')]){_0x4cac71[_0x76b0('0xe5')][_0x76b0('0xe7')]=_0x4cc200[_0x76b0('0xe6')];}return new BPromise(function(_0x5b0e78,_0x10b4db){if(_0x4cc200[_0x76b0('0xde')]){for(var _0x88a488=0x0;_0x88a488<_0x4cc200[_0x76b0('0xde')][_0x76b0('0x38')];_0x88a488++){var _0x487908=_0x4cc200[_0x76b0('0xde')][_0x88a488];var _0x59de3f=path[_0x76b0('0xd5')](_0x34a9e5,_0x487908[_0x76b0('0xe8')]);if(fs['existsSync'](_0x59de3f)){_0x4cac71[_0x76b0('0xda')]['push']({'name':_0x487908[_0x76b0('0x1e')],'contentType':_0x487908[_0x76b0('0x2f')],'data':fs['readFileSync'](_0x59de3f)});}}}emlformat[_0x76b0('0xe9')](_0x4cac71,function(_0x59bf71,_0x2e0e38){if(_0x59bf71)return _0x10b4db(_0x59bf71);fs[_0x76b0('0xea')](path[_0x76b0('0xd5')](_0xd5ee33,util[_0x76b0('0xdb')](_0x76b0('0xeb'),_0x1a3114)),_0x2e0e38);return _0x5b0e78(_0x2e0e38);});});})[_0x76b0('0x1a')](function(){return new BPromise(function(_0x5b3e9b,_0xa42d26){zipdir(_0xd5ee33,{'saveTo':_0x591a31},function(_0x162c5f,_0x5d8e9c){if(_0x162c5f)return _0xa42d26(_0x162c5f);return _0x5b3e9b(_0x5d8e9c);});})[_0x76b0('0x1a')](function(){return new BPromise(function(_0x2e3d9d,_0x8d7678){rimraf(_0xd5ee33,function(_0x10cbd4){if(_0x10cbd4)_0x8d7678(_0x10cbd4);return _0x2e3d9d();});});})[_0x76b0('0x1a')](function(){return _0x504dd8['download'](_0x591a31,_0x51fe50,function(_0x3b5d8c){if(!_0x3b5d8c)fs['unlinkSync'](_0x591a31);});});});}else{return _0x504dd8['sendStatus'](0xc8);}})[_0x76b0('0x2b')](handleError(_0x504dd8,null));};
\ No newline at end of file
index 4ea735d..9bcbe6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe370=['map','findAll','setDataValue','length','catch','hook','exports','../../mysqldb','MailInteraction','setMaxListeners','update','remove','getUsers','then','Users'];(function(_0x4035d4,_0x259c5b){var _0x2e34bb=function(_0x228e94){while(--_0x228e94){_0x4035d4['push'](_0x4035d4['shift']());}};_0x2e34bb(++_0x259c5b);}(_0xe370,0x9d));var _0x0e37=function(_0x55b037,_0x2d9392){_0x55b037=_0x55b037-0x0;var _0x5f1053=_0xe370[_0x55b037];return _0x5f1053;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0x0e37('0x0'))['db'][_0x0e37('0x1')];var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x0e37('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0e37('0x3'),'afterDestroy':_0x0e37('0x4')};function emitEvent(_0x41f267){return function(_0x573dfd,_0x1a0808,_0x46787e){_0x573dfd[_0x0e37('0x5')]({'attributes':['id'],'raw':!![]})[_0x0e37('0x6')](function(_0x3a753f){_0x573dfd['setDataValue'](_0x0e37('0x7'),_0x3a753f[_0x0e37('0x8')](function(_0x4e00c6){return{'id':_0x4e00c6['id']};}));return MailMessage[_0x0e37('0x9')]({'where':{'MailInteractionId':_0x573dfd['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0e37('0x6')](function(_0x23985b){_0x573dfd[_0x0e37('0xa')]('unreadMessages',_0x23985b[_0x0e37('0xb')]);MailInteractionEvents['emit'](_0x41f267+':'+_0x573dfd['id'],_0x573dfd);MailInteractionEvents['emit'](_0x41f267,_0x573dfd);_0x46787e(null);})[_0x0e37('0xc')](_0x46787e(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x0e37('0xd')](e,emitEvent(event));}}module[_0x0e37('0xe')]=MailInteractionEvents;
\ No newline at end of file
+var _0x719b=['remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save'];(function(_0x52740f,_0x343961){var _0x1cbe11=function(_0x376976){while(--_0x376976){_0x52740f['push'](_0x52740f['shift']());}};_0x1cbe11(++_0x343961);}(_0x719b,0x9c));var _0xb719=function(_0x3ca30b,_0x416e7c){_0x3ca30b=_0x3ca30b-0x0;var _0xabe3d5=_0x719b[_0x3ca30b];return _0xabe3d5;};'use strict';var EventEmitter=require(_0xb719('0x0'));var MailInteraction=require(_0xb719('0x1'))['db'][_0xb719('0x2')];var MailMessage=require(_0xb719('0x1'))['db'][_0xb719('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xb719('0x4')](0x0);var events={'afterCreate':_0xb719('0x5'),'afterUpdate':'update','afterDestroy':_0xb719('0x6')};function emitEvent(_0x2d8b74){return function(_0x1eaf5,_0x2fcaee,_0x2607e7){_0x1eaf5[_0xb719('0x7')]({'attributes':['id'],'raw':!![]})[_0xb719('0x8')](function(_0x4d5f0c){_0x1eaf5[_0xb719('0x9')](_0xb719('0xa'),_0x4d5f0c[_0xb719('0xb')](function(_0x3e6cb3){return{'id':_0x3e6cb3['id']};}));return MailMessage[_0xb719('0xc')]({'where':{'MailInteractionId':_0x1eaf5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xb719('0x8')](function(_0xfea5c3){_0x1eaf5['setDataValue'](_0xb719('0xd'),_0xfea5c3[_0xb719('0xe')]);MailInteractionEvents[_0xb719('0xf')](_0x2d8b74+':'+_0x1eaf5['id'],_0x1eaf5);MailInteractionEvents[_0xb719('0xf')](_0x2d8b74,_0x1eaf5);_0x2607e7(null);})['catch'](_0x2607e7(null));};}for(var e in events){if(events[_0xb719('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0xb719('0x11')]=MailInteractionEvents;
\ No newline at end of file
index 0534dac..f049306 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5568=['closedAt','changed','models','get','MailMessage','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x5568,0x15b));var _0x8556=function(_0x474130,_0x16ea11){_0x474130=_0x474130-0x0;var _0x168e6e=_0x5568[_0x474130];return _0x168e6e;};'use strict';var _=require(_0x8556('0x0'));var util=require('util');var logger=require(_0x8556('0x1'))(_0x8556('0x2'));var moment=require(_0x8556('0x3'));var BPromise=require('bluebird');var rp=require(_0x8556('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8556('0x5'));module[_0x8556('0x6')]=function(_0x36456b,_0x75a930){return _0x36456b[_0x8556('0x7')]('MailInteraction',attributes,{'tableName':_0x8556('0x8'),'paranoid':![],'indexes':[{'name':_0x8556('0x9'),'fields':[_0x8556('0xa'),'to'],'type':_0x8556('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5ebd00,_0x3620c2,_0x1d71f7){if(_0x5ebd00[_0x8556('0xc')]){_0x5ebd00[_0x8556('0xd')]=moment()[_0x8556('0xe')](_0x8556('0xf'));}if(_0x5ebd00[_0x8556('0x10')]){_0x5ebd00[_0x8556('0x11')]=moment()[_0x8556('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1d71f7(null,_0x3620c2);},'beforeUpdate':function(_0x4aab7f,_0x37c3fb,_0x26c581){if(_0x4aab7f[_0x8556('0x12')](_0x8556('0xc'))){_0x4aab7f['substatusAt']=_0x4aab7f[_0x8556('0xc')]?moment()[_0x8556('0xe')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x4aab7f[_0x8556('0x12')]('closed')){_0x4aab7f['closedAt']=moment()[_0x8556('0xe')](_0x8556('0xf'));_0x4aab7f[_0x8556('0xc')]=null;_0x4aab7f['substatusAt']=null;}_0x26c581(null,_0x4aab7f);},'afterUpdate':function(_0x231e65,_0x5e0d21,_0x4755e1){var _0x3e8094=_0x36456b[_0x8556('0x13')];var _0x4fda9c=_0x231e65[_0x8556('0x14')]({'plain':!![]});if(_0x4fda9c[_0x8556('0x10')]){return _0x3e8094[_0x8556('0x15')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x4fda9c['id']}})[_0x8556('0x16')](function(){_0x4755e1();})[_0x8556('0x17')](function(_0x41f8ae){_0x4755e1(_0x41f8ae);});}else{_0x4755e1();}}},'charset':_0x8556('0x18'),'collate':_0x8556('0x19')});};
\ No newline at end of file
+var _0x3f87=['rimraf','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','models','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x5486aa,_0x53be28){var _0x4a82b1=function(_0x5813f6){while(--_0x5813f6){_0x5486aa['push'](_0x5486aa['shift']());}};_0x4a82b1(++_0x53be28);}(_0x3f87,0x182));var _0x73f8=function(_0xd38068,_0x3b3fc5){_0xd38068=_0xd38068-0x0;var _0x1ade3f=_0x3f87[_0xd38068];return _0x1ade3f;};'use strict';var _=require(_0x73f8('0x0'));var util=require('util');var logger=require(_0x73f8('0x1'))(_0x73f8('0x2'));var moment=require('moment');var BPromise=require(_0x73f8('0x3'));var rp=require(_0x73f8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x73f8('0x5'));var config=require('../../config/environment');var attributes=require(_0x73f8('0x6'));module[_0x73f8('0x7')]=function(_0x58e31f,_0x52fb9a){return _0x58e31f[_0x73f8('0x8')](_0x73f8('0x9'),attributes,{'tableName':_0x73f8('0xa'),'paranoid':![],'indexes':[{'name':_0x73f8('0xb'),'fields':[_0x73f8('0xc'),'to'],'type':_0x73f8('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x910748,_0x2c582a,_0x1a01f2){if(_0x910748[_0x73f8('0xe')]){_0x910748[_0x73f8('0xf')]=moment()[_0x73f8('0x10')](_0x73f8('0x11'));}if(_0x910748[_0x73f8('0x12')]){_0x910748[_0x73f8('0x13')]=moment()[_0x73f8('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1a01f2(null,_0x2c582a);},'beforeUpdate':function(_0x8a106f,_0x5d8e30,_0x13fb48){if(_0x8a106f[_0x73f8('0x14')](_0x73f8('0xe'))){_0x8a106f['substatusAt']=_0x8a106f[_0x73f8('0xe')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x8a106f[_0x73f8('0x14')]('closed')){_0x8a106f[_0x73f8('0x13')]=moment()[_0x73f8('0x10')](_0x73f8('0x11'));_0x8a106f[_0x73f8('0xe')]=null;_0x8a106f[_0x73f8('0xf')]=null;}_0x13fb48(null,_0x8a106f);},'afterUpdate':function(_0x591ed8,_0x8bac19,_0x478f31){var _0x37937c=_0x58e31f[_0x73f8('0x15')];var _0x594112=_0x591ed8['get']({'plain':!![]});if(_0x594112['closed']){return _0x37937c['MailMessage']['update']({'read':!![]},{'where':{'MailInteractionId':_0x594112['id']}})['then'](function(){_0x478f31();})['catch'](function(_0x219d5a){_0x478f31(_0x219d5a);});}else{_0x478f31();}}},'charset':'utf8mb4','collate':_0x73f8('0x16')});};
\ No newline at end of file
index ce10c3d..dd5d364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc712=['MailInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','UpdateMailInteraction','update','body','options','raw','where','attributes','limit','AddTagsToMailInteraction','MailInteraction','find','addTags','ids','omit','spread','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','then','info','MailInteraction,\x20%s,\x20%s','debug'];(function(_0x5317b5,_0x4dfd6e){var _0x3b7ce2=function(_0xc146d6){while(--_0xc146d6){_0x5317b5['push'](_0x5317b5['shift']());}};_0x3b7ce2(++_0x4dfd6e);}(_0xc712,0x91));var _0x2c71=function(_0x263b14,_0x2391ad){_0x263b14=_0x263b14-0x0;var _0x434143=_0xc712[_0x263b14];return _0x434143;};'use strict';var _=require(_0x2c71('0x0'));var util=require(_0x2c71('0x1'));var moment=require(_0x2c71('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2c71('0x3'))['db'];var utils=require(_0x2c71('0x4'));var logger=require(_0x2c71('0x5'))('rpc');var config=require(_0x2c71('0x6'));var jayson=require(_0x2c71('0x7'));var client=jayson['client'][_0x2c71('0x8')]({'port':0x232a});config[_0x2c71('0x9')]=_[_0x2c71('0xa')](config[_0x2c71('0x9')],{'host':_0x2c71('0xb'),'port':0x18eb});var socket=require(_0x2c71('0xc'))(new Redis(config[_0x2c71('0x9')]));require(_0x2c71('0xd'))[_0x2c71('0xe')](socket);function respondWithRpcPromise(_0x39f286,_0x55a1fa,_0x33ea78){return new BPromise(function(_0x192b66,_0x38cd44){return client['request'](_0x39f286,_0x33ea78)[_0x2c71('0xf')](function(_0x5c0984){logger[_0x2c71('0x10')](_0x2c71('0x11'),_0x55a1fa,'request\x20sent');logger[_0x2c71('0x12')](_0x2c71('0x13'),_0x55a1fa,_0x2c71('0x14'),JSON[_0x2c71('0x15')](_0x5c0984));if(_0x5c0984[_0x2c71('0x16')]){if(_0x5c0984[_0x2c71('0x16')][_0x2c71('0x17')]===0x1f4){logger[_0x2c71('0x16')](_0x2c71('0x11'),_0x55a1fa,_0x5c0984[_0x2c71('0x16')][_0x2c71('0x18')]);return _0x38cd44(_0x5c0984[_0x2c71('0x16')][_0x2c71('0x18')]);}logger['error'](_0x2c71('0x11'),_0x55a1fa,_0x5c0984['error'][_0x2c71('0x18')]);return _0x192b66(_0x5c0984[_0x2c71('0x16')]['message']);}else{logger[_0x2c71('0x10')](_0x2c71('0x11'),_0x55a1fa,'request\x20sent');_0x192b66(_0x5c0984['result'][_0x2c71('0x18')]);}})[_0x2c71('0x19')](function(_0x5bfb5a){logger['error'](_0x2c71('0x11'),_0x55a1fa,_0x5bfb5a);_0x38cd44(_0x5bfb5a);});});}exports[_0x2c71('0x1a')]=function(_0x25f26b){var _0x4c87be=this;return new Promise(function(_0xe93a29,_0x46dded){return db['MailInteraction'][_0x2c71('0x1b')](_0x25f26b[_0x2c71('0x1c')],{'raw':_0x25f26b['options']?_0x25f26b[_0x2c71('0x1d')][_0x2c71('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25f26b[_0x2c71('0x1d')]?_0x25f26b[_0x2c71('0x1d')][_0x2c71('0x1f')]||null:null,'attributes':_0x25f26b['options']?_0x25f26b[_0x2c71('0x1d')][_0x2c71('0x20')]||null:null,'limit':_0x25f26b[_0x2c71('0x1d')]?_0x25f26b[_0x2c71('0x1d')][_0x2c71('0x21')]||null:null})[_0x2c71('0xf')](function(_0x43f086){logger[_0x2c71('0x10')](_0x2c71('0x1a'),_0x25f26b);logger['debug'](_0x2c71('0x1a'),_0x25f26b,JSON[_0x2c71('0x15')](_0x43f086));_0xe93a29(_0x43f086);})[_0x2c71('0x19')](function(_0x560618){logger[_0x2c71('0x16')]('UpdateMailInteraction',_0x560618[_0x2c71('0x18')],_0x25f26b);_0x46dded(_0x4c87be[_0x2c71('0x16')](0x1f4,_0x560618[_0x2c71('0x18')]));});});};exports[_0x2c71('0x22')]=function(_0x1037ab){return new Promise(function(_0x270bf3,_0xe13b01){return db[_0x2c71('0x23')][_0x2c71('0x24')]({'where':_0x1037ab[_0x2c71('0x1d')]?_0x1037ab[_0x2c71('0x1d')]['where']||null:null})[_0x2c71('0xf')](function(_0x3b152c){if(_0x3b152c){return _0x3b152c[_0x2c71('0x25')](_0x1037ab[_0x2c71('0x1c')][_0x2c71('0x26')],_[_0x2c71('0x27')](_0x1037ab[_0x2c71('0x1c')],[_0x2c71('0x26'),'id'])||{});}})[_0x2c71('0x28')](function(_0x471837){logger[_0x2c71('0x10')]('AddTags',_0x1037ab);logger[_0x2c71('0x12')]('AddTags',_0x1037ab,JSON['stringify'](_0x471837));_0x270bf3(_0x471837);})['catch'](function(_0x4e2884){logger['error']('AddTags',_0x4e2884['message'],_0x1037ab);_0xe13b01(_this[_0x2c71('0x16')](0x1f4,_0x4e2884[_0x2c71('0x18')]));});});};
\ No newline at end of file
+var _0xf230=['./mailInteraction.socket','register','info','MailInteraction,\x20%s,\x20%s','request\x20sent','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','update','body','options','raw','where','attributes','limit','then','UpdateMailInteraction','debug','AddTagsToMailInteraction','MailInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','socket.io-emitter'];(function(_0xda3bbb,_0x5ef74f){var _0x1b97e6=function(_0x460486){while(--_0x460486){_0xda3bbb['push'](_0xda3bbb['shift']());}};_0x1b97e6(++_0x5ef74f);}(_0xf230,0xea));var _0x0f23=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xf230[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x0f23('0x0'));var util=require(_0x0f23('0x1'));var moment=require(_0x0f23('0x2'));var BPromise=require(_0x0f23('0x3'));var rs=require(_0x0f23('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0f23('0x5'));var logger=require(_0x0f23('0x6'))(_0x0f23('0x7'));var config=require('../../config/environment');var jayson=require(_0x0f23('0x8'));var client=jayson[_0x0f23('0x9')]['http']({'port':0x232a});config[_0x0f23('0xa')]=_['defaults'](config[_0x0f23('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x0f23('0xb'))(new Redis(config[_0x0f23('0xa')]));require(_0x0f23('0xc'))[_0x0f23('0xd')](socket);function respondWithRpcPromise(_0x578b8a,_0x372040,_0x4af274){return new BPromise(function(_0x35e8c3,_0x474b8f){return client['request'](_0x578b8a,_0x4af274)['then'](function(_0xf22a67){logger[_0x0f23('0xe')](_0x0f23('0xf'),_0x372040,_0x0f23('0x10'));logger['debug'](_0x0f23('0x11'),_0x372040,_0x0f23('0x10'),JSON[_0x0f23('0x12')](_0xf22a67));if(_0xf22a67[_0x0f23('0x13')]){if(_0xf22a67[_0x0f23('0x13')][_0x0f23('0x14')]===0x1f4){logger[_0x0f23('0x13')](_0x0f23('0xf'),_0x372040,_0xf22a67[_0x0f23('0x13')][_0x0f23('0x15')]);return _0x474b8f(_0xf22a67[_0x0f23('0x13')][_0x0f23('0x15')]);}logger['error'](_0x0f23('0xf'),_0x372040,_0xf22a67[_0x0f23('0x13')]['message']);return _0x35e8c3(_0xf22a67[_0x0f23('0x13')][_0x0f23('0x15')]);}else{logger[_0x0f23('0xe')](_0x0f23('0xf'),_0x372040,'request\x20sent');_0x35e8c3(_0xf22a67[_0x0f23('0x16')][_0x0f23('0x15')]);}})[_0x0f23('0x17')](function(_0x1e6cb5){logger[_0x0f23('0x13')](_0x0f23('0xf'),_0x372040,_0x1e6cb5);_0x474b8f(_0x1e6cb5);});});}exports['UpdateMailInteraction']=function(_0x33c58e){var _0x26be47=this;return new Promise(function(_0x38a50a,_0x56e664){return db['MailInteraction'][_0x0f23('0x18')](_0x33c58e[_0x0f23('0x19')],{'raw':_0x33c58e[_0x0f23('0x1a')]?_0x33c58e[_0x0f23('0x1a')][_0x0f23('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33c58e[_0x0f23('0x1a')]?_0x33c58e[_0x0f23('0x1a')][_0x0f23('0x1c')]||null:null,'attributes':_0x33c58e['options']?_0x33c58e['options'][_0x0f23('0x1d')]||null:null,'limit':_0x33c58e[_0x0f23('0x1a')]?_0x33c58e[_0x0f23('0x1a')][_0x0f23('0x1e')]||null:null})[_0x0f23('0x1f')](function(_0x1ad2cb){logger[_0x0f23('0xe')](_0x0f23('0x20'),_0x33c58e);logger[_0x0f23('0x21')](_0x0f23('0x20'),_0x33c58e,JSON[_0x0f23('0x12')](_0x1ad2cb));_0x38a50a(_0x1ad2cb);})[_0x0f23('0x17')](function(_0x23961e){logger[_0x0f23('0x13')](_0x0f23('0x20'),_0x23961e[_0x0f23('0x15')],_0x33c58e);_0x56e664(_0x26be47[_0x0f23('0x13')](0x1f4,_0x23961e['message']));});});};exports[_0x0f23('0x22')]=function(_0x56d55b){return new Promise(function(_0x924573,_0x470d36){return db[_0x0f23('0x23')][_0x0f23('0x24')]({'where':_0x56d55b[_0x0f23('0x1a')]?_0x56d55b[_0x0f23('0x1a')][_0x0f23('0x1c')]||null:null})[_0x0f23('0x1f')](function(_0xb759cb){if(_0xb759cb){return _0xb759cb[_0x0f23('0x25')](_0x56d55b['body'][_0x0f23('0x26')],_[_0x0f23('0x27')](_0x56d55b[_0x0f23('0x19')],[_0x0f23('0x26'),'id'])||{});}})['spread'](function(_0x48b8dc){logger[_0x0f23('0xe')](_0x0f23('0x28'),_0x56d55b);logger[_0x0f23('0x21')](_0x0f23('0x28'),_0x56d55b,JSON['stringify'](_0x48b8dc));_0x924573(_0x48b8dc);})['catch'](function(_0x57ead3){logger['error'](_0x0f23('0x28'),_0x57ead3[_0x0f23('0x15')],_0x56d55b);_0x470d36(_this['error'](0x1f4,_0x57ead3[_0x0f23('0x15')]));});});};
\ No newline at end of file
index 579e015..67e5c3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55b4=['emit','removeListener','length','mailInteraction:','./mailInteraction.events','save','remove','update'];(function(_0x58aae3,_0x3fbc1b){var _0x5c1c8a=function(_0x251f05){while(--_0x251f05){_0x58aae3['push'](_0x58aae3['shift']());}};_0x5c1c8a(++_0x3fbc1b);}(_0x55b4,0x6c));var _0x455b=function(_0x1e62e5,_0x5971e0){_0x1e62e5=_0x1e62e5-0x0;var _0x4244f0=_0x55b4[_0x1e62e5];return _0x4244f0;};'use strict';var MailInteractionEvents=require(_0x455b('0x0'));var events=[_0x455b('0x1'),_0x455b('0x2'),_0x455b('0x3')];function createListener(_0x5586f6,_0x283196){return function(_0x5926b9){_0x283196[_0x455b('0x4')](_0x5586f6,_0x5926b9);};}function removeListener(_0x203ba0,_0x189533){return function(){MailInteractionEvents[_0x455b('0x5')](_0x203ba0,_0x189533);};}exports['register']=function(_0x566b18){for(var _0x1c37d2=0x0,_0x37c38c=events[_0x455b('0x6')];_0x1c37d2<_0x37c38c;_0x1c37d2++){var _0x17d302=events[_0x1c37d2];var _0x41a794=createListener(_0x455b('0x7')+_0x17d302,_0x566b18);MailInteractionEvents['on'](_0x17d302,_0x41a794);}};
\ No newline at end of file
+var _0x1530=['length','./mailInteraction.events','save','emit','removeListener'];(function(_0x2b9025,_0x48a8a4){var _0x10451d=function(_0x386b9d){while(--_0x386b9d){_0x2b9025['push'](_0x2b9025['shift']());}};_0x10451d(++_0x48a8a4);}(_0x1530,0x191));var _0x0153=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x1530[_0x1e7b16];return _0x37fadc;};'use strict';var MailInteractionEvents=require(_0x0153('0x0'));var events=[_0x0153('0x1'),'remove','update'];function createListener(_0x4405eb,_0x312078){return function(_0xaef432){_0x312078[_0x0153('0x2')](_0x4405eb,_0xaef432);};}function removeListener(_0x3e685f,_0x3b4d5c){return function(){MailInteractionEvents[_0x0153('0x3')](_0x3e685f,_0x3b4d5c);};}exports['register']=function(_0x19c444){for(var _0x2c71d5=0x0,_0x2816dc=events[_0x0153('0x4')];_0x2c71d5<_0x2816dc;_0x2c71d5++){var _0x1edfe0=events[_0x2c71d5];var _0x4609d8=createListener('mailInteraction:'+_0x1edfe0,_0x19c444);MailInteractionEvents['on'](_0x1edfe0,_0x4609d8);}};
\ No newline at end of file
index 60728e8..acd9cd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a1=['show','/:id/download','post','tracked','mail','mailmessage:create','create','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x5d32ea,_0x2a9b4e){var _0x5de719=function(_0x559463){while(--_0x559463){_0x5d32ea['push'](_0x5d32ea['shift']());}};_0x5de719(++_0x2a9b4e);}(_0x28a1,0x145));var _0x128a=function(_0x8abd64,_0x539570){_0x8abd64=_0x8abd64-0x0;var _0xd2511e=_0x28a1[_0x8abd64];return _0xd2511e;};'use strict';var multer=require(_0x128a('0x0'));var util=require(_0x128a('0x1'));var path=require('path');var timeout=require(_0x128a('0x2'));var express=require(_0x128a('0x3'));var router=express[_0x128a('0x4')]();var fs_extra=require(_0x128a('0x5'));var auth=require(_0x128a('0x6'));var interaction=require(_0x128a('0x7'));var config=require(_0x128a('0x8'));var controller=require(_0x128a('0x9'));router[_0x128a('0xa')]('/',auth['isAuthenticated'](),controller[_0x128a('0xb')]);router[_0x128a('0xa')](_0x128a('0xc'),auth[_0x128a('0xd')](),controller[_0x128a('0xe')]);router[_0x128a('0xa')](_0x128a('0xf'),auth['isAuthenticated'](),controller[_0x128a('0x10')]);router[_0x128a('0xa')](_0x128a('0x11'),auth['isAuthenticated'](),controller['download']);router[_0x128a('0x12')]('/',auth[_0x128a('0xd')](),interaction[_0x128a('0x13')](_0x128a('0x14'),_0x128a('0x15')),controller[_0x128a('0x16')]);router[_0x128a('0x17')](_0x128a('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x128a('0x17')](_0x128a('0x18'),auth[_0x128a('0xd')](),controller[_0x128a('0x19')]);router[_0x128a('0x17')](_0x128a('0x1a'),auth[_0x128a('0xd')](),controller[_0x128a('0x1b')]);router[_0x128a('0x1c')](_0x128a('0xf'),auth[_0x128a('0xd')](),controller[_0x128a('0x1d')]);module[_0x128a('0x1e')]=router;
\ No newline at end of file
+var _0x122a=['../../config/environment','./mailMessage.controller','get','isAuthenticated','describe','/:id','show','post','tracked','mail','create','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x5d5cee,_0x37bad8){var _0x54cfe9=function(_0x1d0c78){while(--_0x1d0c78){_0x5d5cee['push'](_0x5d5cee['shift']());}};_0x54cfe9(++_0x37bad8);}(_0x122a,0xba));var _0xa122=function(_0x425193,_0x346159){_0x425193=_0x425193-0x0;var _0x2d6052=_0x122a[_0x425193];return _0x2d6052;};'use strict';var multer=require(_0xa122('0x0'));var util=require(_0xa122('0x1'));var path=require(_0xa122('0x2'));var timeout=require(_0xa122('0x3'));var express=require(_0xa122('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa122('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa122('0x6'));var controller=require(_0xa122('0x7'));router[_0xa122('0x8')]('/',auth[_0xa122('0x9')](),controller['index']);router['get']('/describe',auth[_0xa122('0x9')](),controller[_0xa122('0xa')]);router['get'](_0xa122('0xb'),auth[_0xa122('0x9')](),controller[_0xa122('0xc')]);router[_0xa122('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0xa122('0xd')]('/',auth['isAuthenticated'](),interaction[_0xa122('0xe')](_0xa122('0xf'),'mailmessage:create'),controller[_0xa122('0x10')]);router['put']('/:id',auth[_0xa122('0x9')](),controller[_0xa122('0x11')]);router['put'](_0xa122('0x12'),auth[_0xa122('0x9')](),controller[_0xa122('0x13')]);router['put'](_0xa122('0x14'),auth[_0xa122('0x9')](),controller[_0xa122('0x15')]);router[_0xa122('0x16')](_0xa122('0xb'),auth[_0xa122('0x9')](),controller['destroy']);module[_0xa122('0x17')]=router;
\ No newline at end of file
index e4cc6ac..ce669ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3756=['out','STRING','DATE','Chat','sequelize','lodash','TEXT','long','BOOLEAN','ENUM'];(function(_0x24a88e,_0x22a0b8){var _0x232cbb=function(_0x50b7a4){while(--_0x50b7a4){_0x24a88e['push'](_0x24a88e['shift']());}};_0x232cbb(++_0x22a0b8);}(_0x3756,0x112));var _0x6375=function(_0x1c37f3,_0x19bde2){_0x1c37f3=_0x1c37f3-0x0;var _0x1d27b4=_0x3756[_0x1c37f3];return _0x1d27b4;};'use strict';var Sequelize=require(_0x6375('0x0'));var _=require(_0x6375('0x1'));module['exports']={'body':{'type':Sequelize[_0x6375('0x2')](_0x6375('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x6375('0x2')]('medium')},'read':{'type':Sequelize[_0x6375('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6375('0x5')]('in',_0x6375('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x6375('0x7')](0x1fe)},'from':{'type':Sequelize[_0x6375('0x7')]},'to':{'type':Sequelize['TEXT'](_0x6375('0x3'))},'cc':{'type':Sequelize['TEXT'](_0x6375('0x3'))},'bcc':{'type':Sequelize[_0x6375('0x2')](_0x6375('0x3'))},'subject':{'type':Sequelize[_0x6375('0x2')]},'sentAt':{'type':Sequelize[_0x6375('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x6375('0x2')](_0x6375('0x3'))},'originCc':{'type':Sequelize['TEXT']('long')},'originChannel':{'type':Sequelize[_0x6375('0x5')]('Email',_0x6375('0x9')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0x662b=['BOOLEAN','ENUM','out','STRING','long','DATE','Email','Chat','lodash','exports','TEXT','medium'];(function(_0xb99027,_0x1556c5){var _0x313b8e=function(_0xc3023a){while(--_0xc3023a){_0xb99027['push'](_0xb99027['shift']());}};_0x313b8e(++_0x1556c5);}(_0x662b,0xbc));var _0xb662=function(_0x3c88b1,_0x2b4dad){_0x3c88b1=_0x3c88b1-0x0;var _0x61d7b3=_0x662b[_0x3c88b1];return _0x61d7b3;};'use strict';var Sequelize=require('sequelize');var _=require(_0xb662('0x0'));module[_0xb662('0x1')]={'body':{'type':Sequelize[_0xb662('0x2')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xb662('0x2')](_0xb662('0x3'))},'read':{'type':Sequelize[_0xb662('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb662('0x5')]('in',_0xb662('0x6')),'defaultValue':_0xb662('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xb662('0x7')]},'to':{'type':Sequelize['TEXT'](_0xb662('0x8'))},'cc':{'type':Sequelize[_0xb662('0x2')](_0xb662('0x8'))},'bcc':{'type':Sequelize[_0xb662('0x2')]('long')},'subject':{'type':Sequelize[_0xb662('0x2')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xb662('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xb662('0x9')]},'originTo':{'type':Sequelize[_0xb662('0x2')](_0xb662('0x8'))},'originCc':{'type':Sequelize[_0xb662('0x2')]('long')},'originChannel':{'type':Sequelize[_0xb662('0x5')](_0xb662('0xa'),_0xb662('0xb')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index f9bc342..655e882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda7c=['reject','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','QueryTypes','SELECT','email','SIP/%s','event','rejectmessage','download','unix','toString','join','root','files','tmp','server','message-%s.eml','from','bcc','subject','createdAt','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','html-entities','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','MailMessage,\x20%s,\x20%s','message','catch','json','undefined','limit','count','status','Content-Range','update','destroy','sendStatus','stack','name','send','index','map','MailMessage','rawAttributes','type','key','keys','filters','model','query','attributes','intersection','fields','length','hasOwnProperty','offset','sort','pick','where','merge','includeAll','include','findAll','params','options','find','body','create','direction','out','secret','MailAccount','findOne','List','CmContact','updatedAt','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','server/files/attachments','basename','Contacts','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','get','MailInteractionId','read1stAt','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','contact','agent','fullname','internal','manual','interface','channel','motionChannel','fromString','EventManager','acceptmessage'];(function(_0x1f3da1,_0x4173dc){var _0x1a5fdd=function(_0x1cc41d){while(--_0x1cc41d){_0x1f3da1['push'](_0x1f3da1['shift']());}};_0x1a5fdd(++_0x4173dc);}(_0xda7c,0xc5));var _0xcda7=function(_0xebb3a1,_0x266133){_0xebb3a1=_0xebb3a1-0x0;var _0x268c3e=_0xda7c[_0xebb3a1];return _0x268c3e;};'use strict';var emlformat=require(_0xcda7('0x0'));var moment=require(_0xcda7('0x1'));var BPromise=require(_0xcda7('0x2'));var util=require(_0xcda7('0x3'));var path=require(_0xcda7('0x4'));var fs=require('fs');var _=require(_0xcda7('0x5'));var Redis=require(_0xcda7('0x6'));var htmlToText=require(_0xcda7('0x7'));var qs=require(_0xcda7('0x8'));var logger=require(_0xcda7('0x9'))(_0xcda7('0xa'));var interaction_log=require(_0xcda7('0x9'))('mail-interactions');var config=require(_0xcda7('0xb'));var db=require(_0xcda7('0xc'))['db'];config[_0xcda7('0xd')]=_[_0xcda7('0xe')](config[_0xcda7('0xd')],{'host':_0xcda7('0xf'),'port':0x18eb});var socket=require(_0xcda7('0x10'))(new Redis(config[_0xcda7('0xd')]));var htmlEntities=require(_0xcda7('0x11'));require('./mailMessage.socket')[_0xcda7('0x12')](socket);var jayson=require(_0xcda7('0x13'));var client=jayson[_0xcda7('0x14')][_0xcda7('0x15')]({'port':0x232c});var client9003=jayson[_0xcda7('0x14')][_0xcda7('0x15')]({'port':0x232b});var client9002=jayson[_0xcda7('0x14')][_0xcda7('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x572980,_0x2f295a,_0x3a72ae,_0x2685fc){return new BPromise(function(_0x22011a,_0x260ee3){var _0x83f01c=_0x2685fc||client;return _0x83f01c[_0xcda7('0x16')](_0x572980,_0x3a72ae)[_0xcda7('0x17')](function(_0x3a62b7){logger[_0xcda7('0x18')]('MailMessage,\x20%s,\x20%s',_0x2f295a,_0xcda7('0x19'));logger[_0xcda7('0x1a')](_0xcda7('0x1b'),_0x2f295a,'request\x20sent',JSON[_0xcda7('0x1c')](_0x3a62b7));if(_0x3a62b7[_0xcda7('0x1d')]){if(_0x3a62b7[_0xcda7('0x1d')]['code']===0x1f4){logger[_0xcda7('0x1d')](_0xcda7('0x1e'),_0x2f295a,_0x3a62b7[_0xcda7('0x1d')][_0xcda7('0x1f')]);return _0x260ee3(_0x3a62b7[_0xcda7('0x1d')]['message']);}logger[_0xcda7('0x1d')]('MailMessage,\x20%s,\x20%s',_0x2f295a,_0x3a62b7[_0xcda7('0x1d')][_0xcda7('0x1f')]);return _0x22011a(_0x3a62b7[_0xcda7('0x1d')][_0xcda7('0x1f')]);}else{logger['info'](_0xcda7('0x1e'),_0x2f295a,'request\x20sent');_0x22011a(_0x3a62b7['result']['message']);}})[_0xcda7('0x20')](function(_0x16f881){logger[_0xcda7('0x1d')](_0xcda7('0x1e'),_0x2f295a,_0x16f881);_0x260ee3(_0x16f881);});});}function respondWithResult(_0x15ce11,_0x1f7435){_0x1f7435=_0x1f7435||0xc8;return function(_0x505b76){if(_0x505b76){return _0x15ce11['status'](_0x1f7435)[_0xcda7('0x21')](_0x505b76);}};}function respondWithFilteredResult(_0x60ada5,_0x53b911){return function(_0x122fae){if(_0x122fae){var _0x514fd2=typeof _0x53b911['offset']===_0xcda7('0x22')&&typeof _0x53b911[_0xcda7('0x23')]===_0xcda7('0x22');var _0x339bb3=_0x122fae[_0xcda7('0x24')];var _0x8110dd=_0x514fd2?0x0:_0x53b911['offset'];var _0x5c7f59=_0x514fd2?_0x122fae[_0xcda7('0x24')]:_0x53b911['offset']+_0x53b911['limit'];var _0x77f82;if(_0x5c7f59>=_0x339bb3){_0x5c7f59=_0x339bb3;_0x77f82=0xc8;}else{_0x77f82=0xce;}_0x60ada5[_0xcda7('0x25')](_0x77f82);return _0x60ada5['set'](_0xcda7('0x26'),_0x8110dd+'-'+_0x5c7f59+'/'+_0x339bb3)[_0xcda7('0x21')](_0x122fae);}return null;};}function saveUpdates(_0x51d940){return function(_0x495e09){if(_0x495e09){return _0x495e09[_0xcda7('0x27')](_0x51d940)['then'](function(_0x14805e){return _0x14805e;});}return null;};}function removeEntity(_0x1f7e2b){return function(_0x1a37c6){if(_0x1a37c6){return _0x1a37c6[_0xcda7('0x28')]()[_0xcda7('0x17')](function(){_0x1f7e2b[_0xcda7('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x249572){return function(_0x2d7c72){if(!_0x2d7c72){_0x249572[_0xcda7('0x29')](0x194);}return _0x2d7c72;};}function handleError(_0xf9763e,_0x520421){_0x520421=_0x520421||0x1f4;return function(_0x4826a0){logger['error'](_0x4826a0[_0xcda7('0x2a')]);if(_0x4826a0[_0xcda7('0x2b')]){delete _0x4826a0['name'];}_0xf9763e['status'](_0x520421)[_0xcda7('0x2c')](_0x4826a0);};}exports[_0xcda7('0x2d')]=function(_0x4d5010,_0xe60100){var _0x26029d={},_0x45ebce={},_0x3a8251={'count':0x0,'rows':[]};var _0x10841f=_[_0xcda7('0x2e')](db[_0xcda7('0x2f')][_0xcda7('0x30')],function(_0x565ae1){return{'name':_0x565ae1['fieldName'],'type':_0x565ae1[_0xcda7('0x31')][_0xcda7('0x32')]};});_0x45ebce['model']=_[_0xcda7('0x2e')](_0x10841f,_0xcda7('0x2b'));_0x45ebce['query']=_[_0xcda7('0x33')](_0x4d5010['query']);_0x45ebce[_0xcda7('0x34')]=_['intersection'](_0x45ebce[_0xcda7('0x35')],_0x45ebce[_0xcda7('0x36')]);_0x26029d[_0xcda7('0x37')]=_[_0xcda7('0x38')](_0x45ebce[_0xcda7('0x35')],qs['fields'](_0x4d5010[_0xcda7('0x36')][_0xcda7('0x39')]));_0x26029d[_0xcda7('0x37')]=_0x26029d[_0xcda7('0x37')][_0xcda7('0x3a')]?_0x26029d['attributes']:_0x45ebce[_0xcda7('0x35')];if(!_0x4d5010[_0xcda7('0x36')][_0xcda7('0x3b')]('nolimit')){_0x26029d[_0xcda7('0x23')]=qs['limit'](_0x4d5010[_0xcda7('0x36')][_0xcda7('0x23')]);_0x26029d['offset']=qs[_0xcda7('0x3c')](_0x4d5010[_0xcda7('0x36')]['offset']);}_0x26029d['order']=qs['sort'](_0x4d5010['query'][_0xcda7('0x3d')]);_0x26029d['where']=qs[_0xcda7('0x34')](_[_0xcda7('0x3e')](_0x4d5010[_0xcda7('0x36')],_0x45ebce['filters']),_0x10841f);if(_0x4d5010[_0xcda7('0x36')]['filter']){_0x26029d[_0xcda7('0x3f')]=_[_0xcda7('0x40')](_0x26029d[_0xcda7('0x3f')],{'$or':_[_0xcda7('0x2e')](_0x10841f,function(_0x534fc6){if(_0x534fc6['type']!=='VIRTUAL'){var _0x8907ff={};_0x8907ff[_0x534fc6[_0xcda7('0x2b')]]={'$like':'%'+_0x4d5010[_0xcda7('0x36')]['filter']+'%'};return _0x8907ff;}})});}_0x26029d=_[_0xcda7('0x40')]({},_0x26029d,_0x4d5010['options']);var _0x3453b6={'where':_0x26029d[_0xcda7('0x3f')]};return db[_0xcda7('0x2f')][_0xcda7('0x24')](_0x3453b6)['then'](function(_0x137027){_0x3a8251[_0xcda7('0x24')]=_0x137027;if(_0x4d5010['query'][_0xcda7('0x41')]){_0x26029d[_0xcda7('0x42')]=[{'all':!![]}];}return db['MailMessage'][_0xcda7('0x43')](_0x26029d);})[_0xcda7('0x17')](function(_0x14aef){_0x3a8251['rows']=_0x14aef;return _0x3a8251;})['then'](respondWithFilteredResult(_0xe60100,_0x26029d))[_0xcda7('0x20')](handleError(_0xe60100,null));};exports['show']=function(_0x5dbff1,_0x1e9a2b){var _0x316d51={'raw':!![],'where':{'id':_0x5dbff1[_0xcda7('0x44')]['id']}},_0x1453df={};_0x1453df[_0xcda7('0x35')]=_[_0xcda7('0x33')](db['MailMessage'][_0xcda7('0x30')]);_0x1453df['query']=_['keys'](_0x5dbff1[_0xcda7('0x36')]);_0x1453df[_0xcda7('0x34')]=_[_0xcda7('0x38')](_0x1453df[_0xcda7('0x35')],_0x1453df[_0xcda7('0x36')]);_0x316d51[_0xcda7('0x37')]=_['intersection'](_0x1453df[_0xcda7('0x35')],qs['fields'](_0x5dbff1[_0xcda7('0x36')][_0xcda7('0x39')]));_0x316d51[_0xcda7('0x37')]=_0x316d51[_0xcda7('0x37')][_0xcda7('0x3a')]?_0x316d51[_0xcda7('0x37')]:_0x1453df['model'];if(_0x5dbff1[_0xcda7('0x36')]['includeAll']){_0x316d51['include']=[{'all':!![]}];}_0x316d51=_[_0xcda7('0x40')]({},_0x316d51,_0x5dbff1[_0xcda7('0x45')]);return db[_0xcda7('0x2f')][_0xcda7('0x46')](_0x316d51)[_0xcda7('0x17')](handleEntityNotFound(_0x1e9a2b,null))[_0xcda7('0x17')](respondWithResult(_0x1e9a2b,null))['catch'](handleError(_0x1e9a2b,null));};exports['update']=function(_0x381dc5,_0x507838){if(_0x381dc5[_0xcda7('0x47')]['id']){delete _0x381dc5[_0xcda7('0x47')]['id'];}return db[_0xcda7('0x2f')][_0xcda7('0x46')]({'where':{'id':_0x381dc5[_0xcda7('0x44')]['id']}})[_0xcda7('0x17')](handleEntityNotFound(_0x507838,null))[_0xcda7('0x17')](saveUpdates(_0x381dc5[_0xcda7('0x47')],null))[_0xcda7('0x17')](respondWithResult(_0x507838,null))[_0xcda7('0x20')](handleError(_0x507838,null));};exports['destroy']=function(_0x49eb23,_0x11d9d4){return db[_0xcda7('0x2f')][_0xcda7('0x46')]({'where':{'id':_0x49eb23[_0xcda7('0x44')]['id']}})[_0xcda7('0x17')](handleEntityNotFound(_0x11d9d4,null))['then'](removeEntity(_0x11d9d4,null))[_0xcda7('0x20')](handleError(_0x11d9d4,null));};exports['describe']=function(_0x42e29c,_0x4e0611){return db[_0xcda7('0x2f')]['describe']()['then'](respondWithResult(_0x4e0611,null))[_0xcda7('0x20')](handleError(_0x4e0611,null));};exports[_0xcda7('0x48')]=function(_0x2d7eaa,_0x52ab97){return db[_0xcda7('0x2f')]['create'](_0x2d7eaa[_0xcda7('0x47')])['then'](function(_0xf8d56a){if(_0xf8d56a){if(_0xf8d56a[_0xcda7('0x49')]===_0xcda7('0x4a')&&!_0xf8d56a[_0xcda7('0x4b')]){var _0x3acec7,_0x5a87ab,_0x479db3;if(_0x2d7eaa[_0xcda7('0x47')]['to']){_0x5a87ab=_0x2d7eaa[_0xcda7('0x47')]['to']['split'](',')[0x0];}return db[_0xcda7('0x4c')][_0xcda7('0x4d')]({'where':{'id':_0xf8d56a['MailAccountId']},'include':[{'model':db['CmList'],'as':_0xcda7('0x4e'),'include':[{'model':db[_0xcda7('0x4f')],'as':'Contacts','where':{'email':_0x5a87ab},'limit':0x1,'order':[[_0xcda7('0x50'),'DESC']]}]},{'model':db[_0xcda7('0x51')],'as':'Smtp','raw':!![]}]})[_0xcda7('0x17')](function(_0x53ed8a){_0x3acec7=_0x53ed8a;if(_0x3acec7&&_0x3acec7[_0xcda7('0x52')]){var _0x1a5531={'tls':{'rejectUnauthorized':![]}};if(_[_0xcda7('0x53')](_0x3acec7['Smtp'][_0xcda7('0x54')])){_0x1a5531[_0xcda7('0x55')]=_0x3acec7['Smtp'][_0xcda7('0x55')];_0x1a5531[_0xcda7('0x56')]=_0x3acec7[_0xcda7('0x52')][_0xcda7('0x56')];_0x1a5531[_0xcda7('0x57')]=_0x3acec7[_0xcda7('0x52')]['secure'];if(_0x3acec7['Smtp'][_0xcda7('0x58')]){_0x1a5531[_0xcda7('0x59')]={'user':_0x3acec7[_0xcda7('0x52')][_0xcda7('0x5a')],'pass':_0x3acec7[_0xcda7('0x52')][_0xcda7('0x5b')]};}}else{_0x1a5531[_0xcda7('0x54')]=_0x3acec7[_0xcda7('0x52')][_0xcda7('0x54')];_0x1a5531[_0xcda7('0x59')]={'user':_0x3acec7[_0xcda7('0x52')][_0xcda7('0x5a')],'pass':_0x3acec7[_0xcda7('0x52')][_0xcda7('0x5b')]};_0x1a5531[_0xcda7('0x57')]=_0x3acec7[_0xcda7('0x52')][_0xcda7('0x57')];}if(_0x2d7eaa[_0xcda7('0x47')][_0xcda7('0x5c')]&&_0x2d7eaa['body'][_0xcda7('0x5c')][_0xcda7('0x3a')]){for(var _0x3602bd=0x0;_0x3602bd<_0x2d7eaa[_0xcda7('0x47')][_0xcda7('0x5c')][_0xcda7('0x3a')];_0x3602bd+=0x1){_0x2d7eaa[_0xcda7('0x47')][_0xcda7('0x5c')][_0x3602bd]={'filename':_0x2d7eaa[_0xcda7('0x47')][_0xcda7('0x5c')][_0x3602bd][_0xcda7('0x2b')],'path':path['join'](config['root'],_0xcda7('0x5d'),_0x2d7eaa[_0xcda7('0x47')][_0xcda7('0x5c')][_0x3602bd][_0xcda7('0x5e')])};}}_0x479db3={'account':_0x1a5531,'message':_0x2d7eaa[_0xcda7('0x47')]};return;}})[_0xcda7('0x17')](function(){if(_0x3acec7['List']){if(_0x3acec7[_0xcda7('0x4e')]['Contacts'][_0xcda7('0x3a')]){return _0x3acec7[_0xcda7('0x4e')][_0xcda7('0x5f')][0x0];}else{return db[_0xcda7('0x4f')][_0xcda7('0x48')](_['defaults'](_0x2d7eaa[_0xcda7('0x47')],{'firstName':_0x2d7eaa[_0xcda7('0x47')]['to'],'email':_0x2d7eaa['body']['to'],'phone':_0x2d7eaa['body']['to'],'ListId':_0x3acec7['ListId']}));}}else{throw new Error(_0xcda7('0x60'));}})[_0xcda7('0x17')](function(){if(_0x479db3){return respondWithRpcPromise('SendMail',_0xcda7('0x61'),_0x479db3,client9003)[_0xcda7('0x17')](function(_0x10de05){return _0xf8d56a[_0xcda7('0x27')]({'read':!![],'messageId':_0x10de05[_0xcda7('0x62')],'sentAt':moment()[_0xcda7('0x63')](_0xcda7('0x64'))});})['catch'](function(_0x55c615){logger['error']('%s',JSON[_0xcda7('0x1c')](_0x55c615));return _0xf8d56a;});}return _0xf8d56a;});}return _0xf8d56a;}})[_0xcda7('0x17')](respondWithResult(_0x52ab97,0xc9))['catch'](handleError(_0x52ab97,null));};exports[_0xcda7('0x65')]=function(_0x3ec58b,_0x4d52d9){var _0x5e56f6={'agent':{},'channel':_0xcda7('0x66')};if(_0x3ec58b['body']['id']){delete _0x3ec58b[_0xcda7('0x47')]['id'];}_0x3ec58b[_0xcda7('0x47')][_0xcda7('0x67')]=!![];_0x3ec58b[_0xcda7('0x47')][_0xcda7('0x68')]=moment()[_0xcda7('0x63')]('YYYY-MM-DD\x20HH:mm:ss');_0x3ec58b[_0xcda7('0x47')][_0xcda7('0x69')]=_0x3ec58b['body'][_0xcda7('0x69')]||_0x3ec58b[_0xcda7('0x5a')]['id'];_0x5e56f6['agent']['id']=_0x3ec58b['body'][_0xcda7('0x69')];return db[_0xcda7('0x2f')]['find']({'where':{'id':_0x3ec58b[_0xcda7('0x44')]['id'],'UserId':null}})[_0xcda7('0x17')](handleEntityNotFound(_0x4d52d9,null))['then'](saveUpdates(_0x3ec58b[_0xcda7('0x47')],null))[_0xcda7('0x17')](function(_0x27f39f){if(_0x27f39f){_0x5e56f6[_0xcda7('0x1f')]=_0x27f39f[_0xcda7('0x6a')]({'plain':!![]});return db['MailInteraction'][_0xcda7('0x46')]({'where':{'id':_0x27f39f[_0xcda7('0x6b')]}});}return null;})['then'](handleEntityNotFound(_0x4d52d9,null))[_0xcda7('0x17')](function(_0x238db6){if(_0x238db6){return _0x238db6[_0xcda7('0x27')]({'UserId':_0x3ec58b[_0xcda7('0x47')]['UserId'],'read1stAt':_[_0xcda7('0x53')](_0x238db6[_0xcda7('0x6c')])?moment()['format'](_0xcda7('0x64')):undefined});}return null;})[_0xcda7('0x17')](function(_0x1e9c76){if(_0x1e9c76){_0x5e56f6[_0xcda7('0x6d')]=_0x1e9c76[_0xcda7('0x6a')]({'plain':!![]});interaction_log[_0xcda7('0x18')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3ec58b['user']['id'],_0x3ec58b[_0xcda7('0x5a')][_0xcda7('0x2b')],_0x3ec58b[_0xcda7('0x5a')][_0xcda7('0x6e')],_0x5e56f6['interaction']['id'],_0x3ec58b[_0xcda7('0x47')]?JSON[_0xcda7('0x1c')](_0x3ec58b[_0xcda7('0x47')]):_0xcda7('0x6f'));return respondWithRpcPromise(_0xcda7('0x70'),_0xcda7('0x71'),_0x5e56f6);}return null;})[_0xcda7('0x17')](function(_0x3156e0){var _0x308c29=_0xcda7('0x72')+_0x3156e0[_0xcda7('0x1f')][_0xcda7('0x73')];return db[_0xcda7('0x74')][_0xcda7('0x36')](_0x308c29,{'type':db[_0xcda7('0x75')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x492e68){return _0x492e68;});})[_0xcda7('0x17')](function(_0x218fae){if(_0x218fae){_0x5e56f6['message'][_0xcda7('0x76')]=_0x218fae[0x0];if(!_0x3ec58b[_0xcda7('0x47')][_0xcda7('0x69')])return;return db['User']['find']({'where':{'id':_0x3ec58b[_0xcda7('0x47')]['UserId'],'role':_0xcda7('0x77')},'attributes':['id',_0xcda7('0x2b'),_0xcda7('0x78'),'email',_0xcda7('0x79')],'raw':!![]});}return null;})[_0xcda7('0x17')](function(_0x22eefa){if(!_0x22eefa)return null;_0x5e56f6['message']['agent']=_0x22eefa;return _0x5e56f6;})[_0xcda7('0x17')](function(_0x25d370){if(_0x25d370){if(_0x3ec58b[_0xcda7('0x47')][_0xcda7('0x7a')]){_0x5e56f6[_0xcda7('0x1f')][_0xcda7('0x7b')]=util[_0xcda7('0x63')]('SIP/%s',_0x3ec58b['user'][_0xcda7('0x2b')]);_0x5e56f6[_0xcda7('0x1f')][_0xcda7('0x7c')]=_0x5e56f6[_0xcda7('0x7c')];_0x5e56f6[_0xcda7('0x1f')][_0xcda7('0x7d')]=_0x5e56f6[_0xcda7('0x7c')];_0x5e56f6['message']['event']=_0xcda7('0x65');_0x5e56f6['message'][_0xcda7('0x47')]=htmlToText[_0xcda7('0x7e')](_0x5e56f6[_0xcda7('0x1f')][_0xcda7('0x47')]);return respondWithRpcPromise('EventManager',_0xcda7('0x7f'),{'event':_0xcda7('0x80'),'message':_0x5e56f6[_0xcda7('0x1f')]},client9002)[_0xcda7('0x17')](function(){return _0x5e56f6;});}return _0x5e56f6;}return null;})[_0xcda7('0x17')](respondWithResult(_0x4d52d9,null))[_0xcda7('0x20')](handleError(_0x4d52d9,null));};exports[_0xcda7('0x81')]=function(_0x513a7d,_0x1d3fc8){var _0x5347ac={'agent':{},'channel':_0xcda7('0x66')};if(_0x513a7d['body']['id']){delete _0x513a7d[_0xcda7('0x47')]['id'];}_0x513a7d[_0xcda7('0x47')][_0xcda7('0x69')]=_0x513a7d[_0xcda7('0x47')][_0xcda7('0x69')]||_0x513a7d[_0xcda7('0x5a')]['id'];_0x5347ac[_0xcda7('0x77')]['id']=_0x513a7d[_0xcda7('0x47')][_0xcda7('0x69')];return db[_0xcda7('0x2f')][_0xcda7('0x46')]({'where':{'id':_0x513a7d[_0xcda7('0x44')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1d3fc8,null))[_0xcda7('0x17')](function(_0x500f25){if(_0x500f25){_0x5347ac[_0xcda7('0x1f')]=_0x500f25['get']({'plain':!![]});return db[_0xcda7('0x82')]['find']({'where':{'id':_0x500f25['MailInteractionId']}});}return null;})[_0xcda7('0x17')](handleEntityNotFound(_0x1d3fc8,null))['then'](function(_0x3034f0){if(_0x3034f0){_0x5347ac['interaction']=_0x3034f0[_0xcda7('0x6a')]({'plain':!![]});interaction_log[_0xcda7('0x18')](_0xcda7('0x83'),_0x513a7d['user']['id'],_0x513a7d[_0xcda7('0x5a')]['name'],_0x513a7d[_0xcda7('0x5a')][_0xcda7('0x6e')],_0x5347ac['interaction']['id'],_0x513a7d[_0xcda7('0x47')]?JSON[_0xcda7('0x1c')](_0x513a7d[_0xcda7('0x47')]):'null');return respondWithRpcPromise(_0xcda7('0x84'),_0xcda7('0x85'),_0x5347ac);}return null;})['then'](function(_0x3161ab){var _0x5630e2=_0xcda7('0x72')+_0x3161ab[_0xcda7('0x1f')]['ContactId'];return db['sequelize']['query'](_0x5630e2,{'type':db[_0xcda7('0x75')][_0xcda7('0x86')][_0xcda7('0x87')],'raw':!![]})['then'](function(_0x1847ef){return _0x1847ef;});})[_0xcda7('0x17')](function(_0x558e77){if(_0x558e77){_0x5347ac[_0xcda7('0x1f')][_0xcda7('0x76')]=_0x558e77[0x0];if(!_0x513a7d['body']['UserId'])return;return db['User']['find']({'where':{'id':_0x513a7d[_0xcda7('0x47')][_0xcda7('0x69')],'role':_0xcda7('0x77')},'attributes':['id',_0xcda7('0x2b'),'fullname',_0xcda7('0x88'),_0xcda7('0x79')],'raw':!![]});}return null;})[_0xcda7('0x17')](function(_0x4439ca){if(!_0x4439ca)return null;_0x5347ac[_0xcda7('0x1f')]['agent']=_0x4439ca;return _0x5347ac;})[_0xcda7('0x17')](function(_0x3fae28){if(_0x3fae28){_0x3fae28['message']['interface']=util[_0xcda7('0x63')](_0xcda7('0x89'),_0x513a7d[_0xcda7('0x5a')]['name']);_0x3fae28[_0xcda7('0x1f')][_0xcda7('0x7c')]=_0x5347ac[_0xcda7('0x7c')];_0x3fae28['message']['motionChannel']=_0x5347ac[_0xcda7('0x7c')];_0x3fae28['message'][_0xcda7('0x8a')]='reject';_0x3fae28['message'][_0xcda7('0x47')]=htmlToText[_0xcda7('0x7e')](_0x5347ac[_0xcda7('0x1f')]['body']);respondWithRpcPromise(_0xcda7('0x7f'),_0xcda7('0x7f'),{'event':_0xcda7('0x8b'),'message':_0x3fae28['message']},client9002);return _0x5347ac;}return null;})[_0xcda7('0x17')](respondWithResult(_0x1d3fc8,null))[_0xcda7('0x20')](handleError(_0x1d3fc8,null));};exports[_0xcda7('0x8c')]=function(_0x4bd947,_0x1ff60e){var _0x491c77=moment()[_0xcda7('0x8d')]()[_0xcda7('0x8e')]();var _0xf8b648=path[_0xcda7('0x8f')](config[_0xcda7('0x90')],'server',_0xcda7('0x91'),_0xcda7('0x92'));var _0x1be044=path['join'](config['root'],_0xcda7('0x93'),_0xcda7('0x91'),_0xcda7('0x5c'));var _0x65ea72=util[_0xcda7('0x63')](_0xcda7('0x94'),_0x491c77);return db[_0xcda7('0x2f')][_0xcda7('0x46')]({'where':{'id':_0x4bd947[_0xcda7('0x44')]['id']},'attributes':['id',_0xcda7('0x47'),_0xcda7('0x95'),'to','cc',_0xcda7('0x96'),_0xcda7('0x97'),_0xcda7('0x98')],'include':_0x4bd947['query'][_0xcda7('0x5c')]?[{'model':db['Attachment'],'as':_0xcda7('0x99')}]:undefined})[_0xcda7('0x17')](handleEntityNotFound(_0x1ff60e,null))['then'](function(_0x33d0c0){if(_0x33d0c0){var _0x5ea0c9=_0x33d0c0;var _0x29f4c2={'from':_0x5ea0c9['from'],'to':_0x5ea0c9['to'],'subject':_0x5ea0c9['subject'],'html':htmlEntities[_0xcda7('0x9a')](_0x5ea0c9[_0xcda7('0x47')]),'headers':{'Date':moment(_0x5ea0c9[_0xcda7('0x98')])[_0xcda7('0x63')](_0xcda7('0x9b'))},'attachments':[]};if(_0x33d0c0['cc']){_0x29f4c2[_0xcda7('0x9c')]['Cc']=_0x33d0c0['cc'];}if(_0x33d0c0[_0xcda7('0x96')]){_0x29f4c2[_0xcda7('0x9c')][_0xcda7('0x9d')]=_0x33d0c0[_0xcda7('0x96')];}return new BPromise(function(_0x146461,_0x5a5484){if(_0x33d0c0[_0xcda7('0x99')]){for(var _0x5c4623=0x0;_0x5c4623<_0x33d0c0[_0xcda7('0x99')]['length'];_0x5c4623++){var _0x6bf2b3=_0x33d0c0['Attachments'][_0x5c4623];var _0x251dc6=path[_0xcda7('0x8f')](_0x1be044,_0x6bf2b3[_0xcda7('0x5e')]);if(fs['existsSync'](_0x251dc6)){_0x29f4c2[_0xcda7('0x5c')][_0xcda7('0x9e')]({'name':_0x6bf2b3[_0xcda7('0x2b')],'contentType':_0x6bf2b3[_0xcda7('0x31')],'data':fs[_0xcda7('0x9f')](_0x251dc6)});}}}emlformat[_0xcda7('0xa0')](_0x29f4c2,function(_0x1888ff,_0xa7a039){if(_0x1888ff)return _0x5a5484(_0x1888ff);fs[_0xcda7('0xa1')](path[_0xcda7('0x8f')](_0xf8b648,_0x65ea72),_0xa7a039);return _0x146461(_0xa7a039);});});}})[_0xcda7('0x17')](function(_0x2d02b3){if(_0x2d02b3){return _0x1ff60e['download'](path[_0xcda7('0x8f')](_0xf8b648,_0x65ea72),_0x65ea72,function(_0x233213){if(!_0x233213)fs[_0xcda7('0xa2')](path[_0xcda7('0x8f')](_0xf8b648,_0x65ea72));});}})['catch'](handleError(_0x1ff60e,null));};
\ No newline at end of file
+var _0x6800=['body','find','params','describe','create','direction','secret','split','MailAccount','findOne','MailAccountId','CmList','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','server/files/attachments','basename','List','CmContact','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','UserId','agent','get','MailInteractionId','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','User','fullname','internal','manual','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','Sequelize','QueryTypes','SELECT','interface','reject','download','toString','files','tmp','server','from','bcc','subject','createdAt','Attachment','Attachments','decode','headers','Bcc','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','html-entities','client','http','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','json','undefined','limit','count','status','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','offset','order','sort','pick','filter','type','VIRTUAL','options','where','MailMessage','includeAll','rows','catch','show','keys','length','include','merge'];(function(_0xe17b9,_0x1c2303){var _0x4670de=function(_0x25eaa2){while(--_0x25eaa2){_0xe17b9['push'](_0xe17b9['shift']());}};_0x4670de(++_0x1c2303);}(_0x6800,0x104));var _0x0680=function(_0x3a2368,_0x412b84){_0x3a2368=_0x3a2368-0x0;var _0x1ab62a=_0x6800[_0x3a2368];return _0x1ab62a;};'use strict';var emlformat=require(_0x0680('0x0'));var moment=require(_0x0680('0x1'));var BPromise=require('bluebird');var util=require(_0x0680('0x2'));var path=require(_0x0680('0x3'));var fs=require('fs');var _=require(_0x0680('0x4'));var Redis=require(_0x0680('0x5'));var htmlToText=require(_0x0680('0x6'));var qs=require(_0x0680('0x7'));var logger=require(_0x0680('0x8'))('api');var interaction_log=require(_0x0680('0x8'))(_0x0680('0x9'));var config=require(_0x0680('0xa'));var db=require(_0x0680('0xb'))['db'];config[_0x0680('0xc')]=_[_0x0680('0xd')](config[_0x0680('0xc')],{'host':_0x0680('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0680('0xc')]));var htmlEntities=require(_0x0680('0xf'));require('./mailMessage.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x0680('0x10')][_0x0680('0x11')]({'port':0x232c});var client9003=jayson[_0x0680('0x10')][_0x0680('0x11')]({'port':0x232b});var client9002=jayson[_0x0680('0x10')][_0x0680('0x11')]({'port':0x232a});function respondWithRpcPromise(_0x10b76f,_0x16002c,_0x5eb18c,_0x3a6cc6){return new BPromise(function(_0x46258e,_0xcee19b){var _0x430e36=_0x3a6cc6||client;return _0x430e36['request'](_0x10b76f,_0x5eb18c)[_0x0680('0x12')](function(_0x56c008){logger[_0x0680('0x13')](_0x0680('0x14'),_0x16002c,'request\x20sent');logger[_0x0680('0x15')](_0x0680('0x16'),_0x16002c,_0x0680('0x17'),JSON[_0x0680('0x18')](_0x56c008));if(_0x56c008[_0x0680('0x19')]){if(_0x56c008['error']['code']===0x1f4){logger[_0x0680('0x19')](_0x0680('0x14'),_0x16002c,_0x56c008[_0x0680('0x19')]['message']);return _0xcee19b(_0x56c008['error'][_0x0680('0x1a')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x16002c,_0x56c008[_0x0680('0x19')][_0x0680('0x1a')]);return _0x46258e(_0x56c008[_0x0680('0x19')][_0x0680('0x1a')]);}else{logger[_0x0680('0x13')](_0x0680('0x14'),_0x16002c,_0x0680('0x17'));_0x46258e(_0x56c008[_0x0680('0x1b')][_0x0680('0x1a')]);}})['catch'](function(_0x2d1536){logger[_0x0680('0x19')](_0x0680('0x14'),_0x16002c,_0x2d1536);_0xcee19b(_0x2d1536);});});}function respondWithResult(_0x145623,_0x3e75b9){_0x3e75b9=_0x3e75b9||0xc8;return function(_0x4c18f9){if(_0x4c18f9){return _0x145623['status'](_0x3e75b9)[_0x0680('0x1c')](_0x4c18f9);}};}function respondWithFilteredResult(_0x580003,_0x13165d){return function(_0xade50a){if(_0xade50a){var _0x2d6321=typeof _0x13165d['offset']===_0x0680('0x1d')&&typeof _0x13165d[_0x0680('0x1e')]===_0x0680('0x1d');var _0x4b8523=_0xade50a['count'];var _0x4cef51=_0x2d6321?0x0:_0x13165d['offset'];var _0x5d32bf=_0x2d6321?_0xade50a[_0x0680('0x1f')]:_0x13165d['offset']+_0x13165d['limit'];var _0x3a537e;if(_0x5d32bf>=_0x4b8523){_0x5d32bf=_0x4b8523;_0x3a537e=0xc8;}else{_0x3a537e=0xce;}_0x580003[_0x0680('0x20')](_0x3a537e);return _0x580003[_0x0680('0x21')](_0x0680('0x22'),_0x4cef51+'-'+_0x5d32bf+'/'+_0x4b8523)[_0x0680('0x1c')](_0xade50a);}return null;};}function saveUpdates(_0x1409ab){return function(_0x3e7fd0){if(_0x3e7fd0){return _0x3e7fd0[_0x0680('0x23')](_0x1409ab)['then'](function(_0x4770cc){return _0x4770cc;});}return null;};}function removeEntity(_0x19355a){return function(_0x33bae6){if(_0x33bae6){return _0x33bae6[_0x0680('0x24')]()[_0x0680('0x12')](function(){_0x19355a[_0x0680('0x20')](0xcc)[_0x0680('0x25')]();});}};}function handleEntityNotFound(_0xf709aa){return function(_0x2f2598){if(!_0x2f2598){_0xf709aa[_0x0680('0x26')](0x194);}return _0x2f2598;};}function handleError(_0x38eb3f,_0x44d096){_0x44d096=_0x44d096||0x1f4;return function(_0x3b1cd5){logger[_0x0680('0x19')](_0x3b1cd5[_0x0680('0x27')]);if(_0x3b1cd5[_0x0680('0x28')]){delete _0x3b1cd5[_0x0680('0x28')];}_0x38eb3f[_0x0680('0x20')](_0x44d096)[_0x0680('0x29')](_0x3b1cd5);};}exports[_0x0680('0x2a')]=function(_0x59c496,_0x5d0031){var _0x5ec9e7={},_0x550b5b={},_0xb90ab2={'count':0x0,'rows':[]};var _0x180797=_[_0x0680('0x2b')](db['MailMessage'][_0x0680('0x2c')],function(_0x298962){return{'name':_0x298962[_0x0680('0x2d')],'type':_0x298962['type']['key']};});_0x550b5b[_0x0680('0x2e')]=_[_0x0680('0x2b')](_0x180797,_0x0680('0x28'));_0x550b5b[_0x0680('0x2f')]=_['keys'](_0x59c496[_0x0680('0x2f')]);_0x550b5b[_0x0680('0x30')]=_['intersection'](_0x550b5b[_0x0680('0x2e')],_0x550b5b[_0x0680('0x2f')]);_0x5ec9e7[_0x0680('0x31')]=_[_0x0680('0x32')](_0x550b5b[_0x0680('0x2e')],qs[_0x0680('0x33')](_0x59c496[_0x0680('0x2f')][_0x0680('0x33')]));_0x5ec9e7['attributes']=_0x5ec9e7[_0x0680('0x31')]['length']?_0x5ec9e7['attributes']:_0x550b5b['model'];if(!_0x59c496[_0x0680('0x2f')][_0x0680('0x34')](_0x0680('0x35'))){_0x5ec9e7['limit']=qs['limit'](_0x59c496[_0x0680('0x2f')][_0x0680('0x1e')]);_0x5ec9e7[_0x0680('0x36')]=qs[_0x0680('0x36')](_0x59c496[_0x0680('0x2f')][_0x0680('0x36')]);}_0x5ec9e7[_0x0680('0x37')]=qs['sort'](_0x59c496['query'][_0x0680('0x38')]);_0x5ec9e7['where']=qs[_0x0680('0x30')](_[_0x0680('0x39')](_0x59c496['query'],_0x550b5b[_0x0680('0x30')]),_0x180797);if(_0x59c496['query'][_0x0680('0x3a')]){_0x5ec9e7['where']=_['merge'](_0x5ec9e7['where'],{'$or':_[_0x0680('0x2b')](_0x180797,function(_0x57433e){if(_0x57433e[_0x0680('0x3b')]!==_0x0680('0x3c')){var _0x3df27d={};_0x3df27d[_0x57433e[_0x0680('0x28')]]={'$like':'%'+_0x59c496[_0x0680('0x2f')][_0x0680('0x3a')]+'%'};return _0x3df27d;}})});}_0x5ec9e7=_['merge']({},_0x5ec9e7,_0x59c496[_0x0680('0x3d')]);var _0x2d1ed1={'where':_0x5ec9e7[_0x0680('0x3e')]};return db[_0x0680('0x3f')][_0x0680('0x1f')](_0x2d1ed1)[_0x0680('0x12')](function(_0xf49f2d){_0xb90ab2['count']=_0xf49f2d;if(_0x59c496['query'][_0x0680('0x40')]){_0x5ec9e7['include']=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x5ec9e7);})['then'](function(_0x4b167b){_0xb90ab2[_0x0680('0x41')]=_0x4b167b;return _0xb90ab2;})['then'](respondWithFilteredResult(_0x5d0031,_0x5ec9e7))[_0x0680('0x42')](handleError(_0x5d0031,null));};exports[_0x0680('0x43')]=function(_0x2d5eca,_0x44b7a4){var _0x457ee8={'raw':!![],'where':{'id':_0x2d5eca['params']['id']}},_0x428835={};_0x428835[_0x0680('0x2e')]=_[_0x0680('0x44')](db[_0x0680('0x3f')]['rawAttributes']);_0x428835[_0x0680('0x2f')]=_[_0x0680('0x44')](_0x2d5eca['query']);_0x428835[_0x0680('0x30')]=_['intersection'](_0x428835[_0x0680('0x2e')],_0x428835['query']);_0x457ee8[_0x0680('0x31')]=_[_0x0680('0x32')](_0x428835['model'],qs[_0x0680('0x33')](_0x2d5eca[_0x0680('0x2f')][_0x0680('0x33')]));_0x457ee8['attributes']=_0x457ee8[_0x0680('0x31')][_0x0680('0x45')]?_0x457ee8[_0x0680('0x31')]:_0x428835[_0x0680('0x2e')];if(_0x2d5eca[_0x0680('0x2f')][_0x0680('0x40')]){_0x457ee8[_0x0680('0x46')]=[{'all':!![]}];}_0x457ee8=_[_0x0680('0x47')]({},_0x457ee8,_0x2d5eca[_0x0680('0x3d')]);return db['MailMessage']['find'](_0x457ee8)[_0x0680('0x12')](handleEntityNotFound(_0x44b7a4,null))['then'](respondWithResult(_0x44b7a4,null))[_0x0680('0x42')](handleError(_0x44b7a4,null));};exports[_0x0680('0x23')]=function(_0xa12221,_0x2053e1){if(_0xa12221[_0x0680('0x48')]['id']){delete _0xa12221[_0x0680('0x48')]['id'];}return db[_0x0680('0x3f')][_0x0680('0x49')]({'where':{'id':_0xa12221[_0x0680('0x4a')]['id']}})[_0x0680('0x12')](handleEntityNotFound(_0x2053e1,null))[_0x0680('0x12')](saveUpdates(_0xa12221[_0x0680('0x48')],null))['then'](respondWithResult(_0x2053e1,null))['catch'](handleError(_0x2053e1,null));};exports['destroy']=function(_0x578a1d,_0x39dc0b){return db['MailMessage'][_0x0680('0x49')]({'where':{'id':_0x578a1d[_0x0680('0x4a')]['id']}})[_0x0680('0x12')](handleEntityNotFound(_0x39dc0b,null))[_0x0680('0x12')](removeEntity(_0x39dc0b,null))[_0x0680('0x42')](handleError(_0x39dc0b,null));};exports[_0x0680('0x4b')]=function(_0x131745,_0x1cd07c){return db['MailMessage'][_0x0680('0x4b')]()[_0x0680('0x12')](respondWithResult(_0x1cd07c,null))['catch'](handleError(_0x1cd07c,null));};exports[_0x0680('0x4c')]=function(_0xad3f31,_0x2de714){return db[_0x0680('0x3f')][_0x0680('0x4c')](_0xad3f31[_0x0680('0x48')])[_0x0680('0x12')](function(_0x204b7d){if(_0x204b7d){if(_0x204b7d[_0x0680('0x4d')]==='out'&&!_0x204b7d[_0x0680('0x4e')]){var _0x370757,_0x597ccb,_0x366ea5;if(_0xad3f31['body']['to']){_0x597ccb=_0xad3f31['body']['to'][_0x0680('0x4f')](',')[0x0];}return db[_0x0680('0x50')][_0x0680('0x51')]({'where':{'id':_0x204b7d[_0x0680('0x52')]},'include':[{'model':db[_0x0680('0x53')],'as':'List','include':[{'model':db['CmContact'],'as':_0x0680('0x54'),'where':{'email':_0x597ccb},'limit':0x1,'order':[[_0x0680('0x55'),_0x0680('0x56')]]}]},{'model':db[_0x0680('0x57')],'as':_0x0680('0x58'),'raw':!![]}]})[_0x0680('0x12')](function(_0x84ff8a){_0x370757=_0x84ff8a;if(_0x370757&&_0x370757[_0x0680('0x58')]){var _0x2f72ae={'tls':{'rejectUnauthorized':![]}};if(_[_0x0680('0x59')](_0x370757['Smtp'][_0x0680('0x5a')])){_0x2f72ae['host']=_0x370757[_0x0680('0x58')][_0x0680('0x5b')];_0x2f72ae[_0x0680('0x5c')]=_0x370757[_0x0680('0x58')][_0x0680('0x5c')];_0x2f72ae[_0x0680('0x5d')]=_0x370757[_0x0680('0x58')][_0x0680('0x5d')];if(_0x370757['Smtp'][_0x0680('0x5e')]){_0x2f72ae[_0x0680('0x5f')]={'user':_0x370757[_0x0680('0x58')]['user'],'pass':_0x370757[_0x0680('0x58')]['pass']};}}else{_0x2f72ae[_0x0680('0x5a')]=_0x370757[_0x0680('0x58')][_0x0680('0x5a')];_0x2f72ae['auth']={'user':_0x370757[_0x0680('0x58')][_0x0680('0x60')],'pass':_0x370757['Smtp'][_0x0680('0x61')]};_0x2f72ae[_0x0680('0x5d')]=_0x370757['Smtp'][_0x0680('0x5d')];}if(_0xad3f31[_0x0680('0x48')]['attachments']&&_0xad3f31[_0x0680('0x48')][_0x0680('0x62')][_0x0680('0x45')]){for(var _0x133ab9=0x0;_0x133ab9<_0xad3f31['body']['attachments'][_0x0680('0x45')];_0x133ab9+=0x1){_0xad3f31[_0x0680('0x48')][_0x0680('0x62')][_0x133ab9]={'filename':_0xad3f31[_0x0680('0x48')][_0x0680('0x62')][_0x133ab9][_0x0680('0x28')],'path':path[_0x0680('0x63')](config[_0x0680('0x64')],_0x0680('0x65'),_0xad3f31[_0x0680('0x48')][_0x0680('0x62')][_0x133ab9][_0x0680('0x66')])};}}_0x366ea5={'account':_0x2f72ae,'message':_0xad3f31['body']};return;}})[_0x0680('0x12')](function(){if(_0x370757[_0x0680('0x67')]){if(_0x370757[_0x0680('0x67')]['Contacts']['length']){return _0x370757[_0x0680('0x67')][_0x0680('0x54')][0x0];}else{return db[_0x0680('0x68')]['create'](_[_0x0680('0xd')](_0xad3f31['body'],{'firstName':_0xad3f31[_0x0680('0x48')]['to'],'email':_0xad3f31[_0x0680('0x48')]['to'],'phone':_0xad3f31[_0x0680('0x48')]['to'],'ListId':_0x370757[_0x0680('0x69')]}));}}else{throw new Error(_0x0680('0x6a'));}})['then'](function(){if(_0x366ea5){return respondWithRpcPromise(_0x0680('0x6b'),_0x0680('0x6c'),_0x366ea5,client9003)[_0x0680('0x12')](function(_0x300827){return _0x204b7d[_0x0680('0x23')]({'read':!![],'messageId':_0x300827[_0x0680('0x6d')],'sentAt':moment()[_0x0680('0x6e')](_0x0680('0x6f'))});})[_0x0680('0x42')](function(_0x43ddb5){logger[_0x0680('0x19')]('%s',JSON[_0x0680('0x18')](_0x43ddb5));return _0x204b7d;});}return _0x204b7d;});}return _0x204b7d;}})[_0x0680('0x12')](respondWithResult(_0x2de714,0xc9))[_0x0680('0x42')](handleError(_0x2de714,null));};exports[_0x0680('0x70')]=function(_0x1d007d,_0x375a6b){var _0x1c31c2={'agent':{},'channel':_0x0680('0x71')};if(_0x1d007d[_0x0680('0x48')]['id']){delete _0x1d007d['body']['id'];}_0x1d007d['body']['read']=!![];_0x1d007d['body']['readAt']=moment()[_0x0680('0x6e')]('YYYY-MM-DD\x20HH:mm:ss');_0x1d007d[_0x0680('0x48')][_0x0680('0x72')]=_0x1d007d[_0x0680('0x48')]['UserId']||_0x1d007d[_0x0680('0x60')]['id'];_0x1c31c2[_0x0680('0x73')]['id']=_0x1d007d[_0x0680('0x48')][_0x0680('0x72')];return db['MailMessage'][_0x0680('0x49')]({'where':{'id':_0x1d007d[_0x0680('0x4a')]['id'],'UserId':null}})[_0x0680('0x12')](handleEntityNotFound(_0x375a6b,null))['then'](saveUpdates(_0x1d007d[_0x0680('0x48')],null))['then'](function(_0x57687a){if(_0x57687a){_0x1c31c2[_0x0680('0x1a')]=_0x57687a[_0x0680('0x74')]({'plain':!![]});return db['MailInteraction'][_0x0680('0x49')]({'where':{'id':_0x57687a[_0x0680('0x75')]}});}return null;})[_0x0680('0x12')](handleEntityNotFound(_0x375a6b,null))[_0x0680('0x12')](function(_0x4bff70){if(_0x4bff70){return _0x4bff70[_0x0680('0x23')]({'UserId':_0x1d007d[_0x0680('0x48')]['UserId'],'read1stAt':_[_0x0680('0x59')](_0x4bff70['read1stAt'])?moment()['format'](_0x0680('0x6f')):undefined});}return null;})['then'](function(_0x3d1858){if(_0x3d1858){_0x1c31c2[_0x0680('0x76')]=_0x3d1858[_0x0680('0x74')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1d007d[_0x0680('0x60')]['id'],_0x1d007d[_0x0680('0x60')]['name'],_0x1d007d['user'][_0x0680('0x77')],_0x1c31c2[_0x0680('0x76')]['id'],_0x1d007d['body']?JSON[_0x0680('0x18')](_0x1d007d[_0x0680('0x48')]):_0x0680('0x78'));return respondWithRpcPromise(_0x0680('0x79'),_0x0680('0x7a'),_0x1c31c2);}return null;})[_0x0680('0x12')](function(_0xe2bf5e){var _0x445d05=_0x0680('0x7b')+_0xe2bf5e[_0x0680('0x1a')][_0x0680('0x7c')];return db[_0x0680('0x7d')]['query'](_0x445d05,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0680('0x12')](function(_0x34daea){return _0x34daea;});})[_0x0680('0x12')](function(_0x5c18d7){if(_0x5c18d7){_0x1c31c2[_0x0680('0x1a')][_0x0680('0x7e')]=_0x5c18d7[0x0];if(!_0x1d007d['body']['UserId'])return;return db[_0x0680('0x7f')][_0x0680('0x49')]({'where':{'id':_0x1d007d[_0x0680('0x48')][_0x0680('0x72')],'role':_0x0680('0x73')},'attributes':['id',_0x0680('0x28'),_0x0680('0x80'),'email',_0x0680('0x81')],'raw':!![]});}return null;})[_0x0680('0x12')](function(_0x184787){if(!_0x184787)return null;_0x1c31c2['message'][_0x0680('0x73')]=_0x184787;return _0x1c31c2;})[_0x0680('0x12')](function(_0x421cf5){if(_0x421cf5){if(_0x1d007d[_0x0680('0x48')][_0x0680('0x82')]){_0x1c31c2[_0x0680('0x1a')]['interface']=util[_0x0680('0x6e')](_0x0680('0x83'),_0x1d007d['user'][_0x0680('0x28')]);_0x1c31c2[_0x0680('0x1a')][_0x0680('0x84')]=_0x1c31c2[_0x0680('0x84')];_0x1c31c2[_0x0680('0x1a')][_0x0680('0x85')]=_0x1c31c2[_0x0680('0x84')];_0x1c31c2[_0x0680('0x1a')][_0x0680('0x86')]=_0x0680('0x70');_0x1c31c2['message'][_0x0680('0x48')]=htmlToText[_0x0680('0x87')](_0x1c31c2['message'][_0x0680('0x48')]);return respondWithRpcPromise(_0x0680('0x88'),_0x0680('0x88'),{'event':_0x0680('0x89'),'message':_0x1c31c2[_0x0680('0x1a')]},client9002)[_0x0680('0x12')](function(){return _0x1c31c2;});}return _0x1c31c2;}return null;})[_0x0680('0x12')](respondWithResult(_0x375a6b,null))[_0x0680('0x42')](handleError(_0x375a6b,null));};exports['reject']=function(_0x4337d5,_0x57416e){var _0x204f37={'agent':{},'channel':'mail'};if(_0x4337d5[_0x0680('0x48')]['id']){delete _0x4337d5[_0x0680('0x48')]['id'];}_0x4337d5[_0x0680('0x48')]['UserId']=_0x4337d5[_0x0680('0x48')][_0x0680('0x72')]||_0x4337d5[_0x0680('0x60')]['id'];_0x204f37[_0x0680('0x73')]['id']=_0x4337d5[_0x0680('0x48')][_0x0680('0x72')];return db[_0x0680('0x3f')][_0x0680('0x49')]({'where':{'id':_0x4337d5[_0x0680('0x4a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x57416e,null))[_0x0680('0x12')](function(_0x410f47){if(_0x410f47){_0x204f37[_0x0680('0x1a')]=_0x410f47[_0x0680('0x74')]({'plain':!![]});return db[_0x0680('0x8a')][_0x0680('0x49')]({'where':{'id':_0x410f47[_0x0680('0x75')]}});}return null;})[_0x0680('0x12')](handleEntityNotFound(_0x57416e,null))['then'](function(_0x20cf3c){if(_0x20cf3c){_0x204f37[_0x0680('0x76')]=_0x20cf3c[_0x0680('0x74')]({'plain':!![]});interaction_log[_0x0680('0x13')](_0x0680('0x8b'),_0x4337d5['user']['id'],_0x4337d5[_0x0680('0x60')][_0x0680('0x28')],_0x4337d5[_0x0680('0x60')]['role'],_0x204f37['interaction']['id'],_0x4337d5['body']?JSON[_0x0680('0x18')](_0x4337d5[_0x0680('0x48')]):_0x0680('0x78'));return respondWithRpcPromise(_0x0680('0x8c'),'rejectMessage',_0x204f37);}return null;})['then'](function(_0x533283){var _0x3c1d46=_0x0680('0x7b')+_0x533283[_0x0680('0x1a')][_0x0680('0x7c')];return db[_0x0680('0x7d')]['query'](_0x3c1d46,{'type':db[_0x0680('0x8d')][_0x0680('0x8e')][_0x0680('0x8f')],'raw':!![]})[_0x0680('0x12')](function(_0x2b491f){return _0x2b491f;});})['then'](function(_0x1087e6){if(_0x1087e6){_0x204f37['message'][_0x0680('0x7e')]=_0x1087e6[0x0];if(!_0x4337d5[_0x0680('0x48')][_0x0680('0x72')])return;return db[_0x0680('0x7f')]['find']({'where':{'id':_0x4337d5['body'][_0x0680('0x72')],'role':_0x0680('0x73')},'attributes':['id','name',_0x0680('0x80'),'email',_0x0680('0x81')],'raw':!![]});}return null;})[_0x0680('0x12')](function(_0x4d1402){if(!_0x4d1402)return null;_0x204f37[_0x0680('0x1a')][_0x0680('0x73')]=_0x4d1402;return _0x204f37;})[_0x0680('0x12')](function(_0x4cf48e){if(_0x4cf48e){_0x4cf48e['message'][_0x0680('0x90')]=util['format'](_0x0680('0x83'),_0x4337d5['user']['name']);_0x4cf48e[_0x0680('0x1a')]['channel']=_0x204f37[_0x0680('0x84')];_0x4cf48e[_0x0680('0x1a')][_0x0680('0x85')]=_0x204f37[_0x0680('0x84')];_0x4cf48e[_0x0680('0x1a')][_0x0680('0x86')]=_0x0680('0x91');_0x4cf48e['message'][_0x0680('0x48')]=htmlToText[_0x0680('0x87')](_0x204f37[_0x0680('0x1a')]['body']);respondWithRpcPromise('EventManager','EventManager',{'event':'rejectmessage','message':_0x4cf48e[_0x0680('0x1a')]},client9002);return _0x204f37;}return null;})[_0x0680('0x12')](respondWithResult(_0x57416e,null))[_0x0680('0x42')](handleError(_0x57416e,null));};exports[_0x0680('0x92')]=function(_0x8f0805,_0x167511){var _0x439382=moment()['unix']()[_0x0680('0x93')]();var _0x76822b=path[_0x0680('0x63')](config[_0x0680('0x64')],'server',_0x0680('0x94'),_0x0680('0x95'));var _0x593f1c=path[_0x0680('0x63')](config[_0x0680('0x64')],_0x0680('0x96'),_0x0680('0x94'),_0x0680('0x62'));var _0x5d2765=util[_0x0680('0x6e')]('message-%s.eml',_0x439382);return db['MailMessage'][_0x0680('0x49')]({'where':{'id':_0x8f0805['params']['id']},'attributes':['id',_0x0680('0x48'),_0x0680('0x97'),'to','cc',_0x0680('0x98'),_0x0680('0x99'),_0x0680('0x9a')],'include':_0x8f0805[_0x0680('0x2f')][_0x0680('0x62')]?[{'model':db[_0x0680('0x9b')],'as':_0x0680('0x9c')}]:undefined})[_0x0680('0x12')](handleEntityNotFound(_0x167511,null))[_0x0680('0x12')](function(_0x4cc05c){if(_0x4cc05c){var _0xfec456=_0x4cc05c;var _0x39c413={'from':_0xfec456[_0x0680('0x97')],'to':_0xfec456['to'],'subject':_0xfec456[_0x0680('0x99')],'html':htmlEntities[_0x0680('0x9d')](_0xfec456[_0x0680('0x48')]),'headers':{'Date':moment(_0xfec456[_0x0680('0x9a')])[_0x0680('0x6e')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x4cc05c['cc']){_0x39c413[_0x0680('0x9e')]['Cc']=_0x4cc05c['cc'];}if(_0x4cc05c['bcc']){_0x39c413[_0x0680('0x9e')][_0x0680('0x9f')]=_0x4cc05c[_0x0680('0x98')];}return new BPromise(function(_0x53c2ea,_0x430adb){if(_0x4cc05c[_0x0680('0x9c')]){for(var _0x15e6ff=0x0;_0x15e6ff<_0x4cc05c['Attachments'][_0x0680('0x45')];_0x15e6ff++){var _0x32119b=_0x4cc05c['Attachments'][_0x15e6ff];var _0x447c61=path[_0x0680('0x63')](_0x593f1c,_0x32119b[_0x0680('0x66')]);if(fs[_0x0680('0xa0')](_0x447c61)){_0x39c413['attachments'][_0x0680('0xa1')]({'name':_0x32119b['name'],'contentType':_0x32119b[_0x0680('0x3b')],'data':fs[_0x0680('0xa2')](_0x447c61)});}}}emlformat[_0x0680('0xa3')](_0x39c413,function(_0x20889c,_0x368d7a){if(_0x20889c)return _0x430adb(_0x20889c);fs[_0x0680('0xa4')](path[_0x0680('0x63')](_0x76822b,_0x5d2765),_0x368d7a);return _0x53c2ea(_0x368d7a);});});}})['then'](function(_0x54bd9e){if(_0x54bd9e){return _0x167511[_0x0680('0x92')](path['join'](_0x76822b,_0x5d2765),_0x5d2765,function(_0x431c8b){if(!_0x431c8b)fs[_0x0680('0xa5')](path[_0x0680('0x63')](_0x76822b,_0x5d2765));});}})[_0x0680('0x42')](handleError(_0x167511,null));};
\ No newline at end of file
index 476efe0..1209c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d9=['emit','hasOwnProperty','hook','exports','MailMessage','setMaxListeners','save','update'];(function(_0x3f0785,_0x83f75){var _0x583173=function(_0x54da21){while(--_0x54da21){_0x3f0785['push'](_0x3f0785['shift']());}};_0x583173(++_0x83f75);}(_0x86d9,0x1a4));var _0x986d=function(_0x1d5219,_0x45fe08){_0x1d5219=_0x1d5219-0x0;var _0x1395c5=_0x86d9[_0x1d5219];return _0x1395c5;};'use strict';var EventEmitter=require('events');var MailMessage=require('../../mysqldb')['db'][_0x986d('0x0')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x986d('0x1')](0x0);var events={'afterCreate':_0x986d('0x2'),'afterUpdate':_0x986d('0x3'),'afterDestroy':'remove'};function emitEvent(_0x531535){return function(_0x32e1a4,_0x5c2df8,_0x1f2c0e){MailMessageEvents[_0x986d('0x4')](_0x531535+':'+_0x32e1a4['id'],_0x32e1a4);MailMessageEvents[_0x986d('0x4')](_0x531535,_0x32e1a4);_0x1f2c0e(null);};}for(var e in events){if(events[_0x986d('0x5')](e)){var event=events[e];MailMessage[_0x986d('0x6')](e,emitEvent(event));}}module[_0x986d('0x7')]=MailMessageEvents;
\ No newline at end of file
+var _0x91b3=['../../mysqldb','MailMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x89a1df,_0x23096d){var _0x5ee671=function(_0x29339e){while(--_0x29339e){_0x89a1df['push'](_0x89a1df['shift']());}};_0x5ee671(++_0x23096d);}(_0x91b3,0x1f3));var _0x391b=function(_0x5ab9f0,_0x3ea478){_0x5ab9f0=_0x5ab9f0-0x0;var _0xcccd04=_0x91b3[_0x5ab9f0];return _0xcccd04;};'use strict';var EventEmitter=require(_0x391b('0x0'));var MailMessage=require(_0x391b('0x1'))['db'][_0x391b('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x391b('0x3')](0x0);var events={'afterCreate':_0x391b('0x4'),'afterUpdate':_0x391b('0x5'),'afterDestroy':_0x391b('0x6')};function emitEvent(_0x5704c0){return function(_0x151ba9,_0x75bfe,_0x3b1b1b){MailMessageEvents[_0x391b('0x7')](_0x5704c0+':'+_0x151ba9['id'],_0x151ba9);MailMessageEvents[_0x391b('0x7')](_0x5704c0,_0x151ba9);_0x3b1b1b(null);};}for(var e in events){if(events[_0x391b('0x8')](e)){var event=events[e];MailMessage[_0x391b('0x9')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index a915e88..d2e1687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b5d=['out','secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','path','../../config/environment','./mailMessage.attributes','define','MailMessage','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','direction','toLowerCase'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1b5d,0xfc));var _0xd1b5=function(_0x3509d8,_0x5074b5){_0x3509d8=_0x3509d8-0x0;var _0x4dcedb=_0x1b5d[_0x3509d8];return _0x4dcedb;};'use strict';var _=require(_0xd1b5('0x0'));var util=require(_0xd1b5('0x1'));var logger=require(_0xd1b5('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd1b5('0x3'));var rp=require(_0xd1b5('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0xd1b5('0x5'));var rimraf=require('rimraf');var config=require(_0xd1b5('0x6'));var attributes=require(_0xd1b5('0x7'));module['exports']=function(_0x3c6606,_0x56c1ea){return _0x3c6606[_0xd1b5('0x8')](_0xd1b5('0x9'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0xd1b5('0xa'),'fields':[_0xd1b5('0xb'),_0xd1b5('0xc')],'type':_0xd1b5('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4904b9,_0x45e052,_0x4ae902){if(_0x4904b9[_0xd1b5('0xe')]){_0x4904b9['plainBody']=htmlToText[_0xd1b5('0xf')](_0x4904b9[_0xd1b5('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x4ae902(null,_0x45e052);},'afterCreate':function(_0x2de919,_0xa3b45a,_0x4e0bde){var _0xd2a1b9=_0x3c6606['models'];var _0x582bae=_0x2de919['get']({'plain':!![]});if(_0x582bae[_0xd1b5('0x10')][_0xd1b5('0x11')]()==='in'||_0x582bae[_0xd1b5('0x10')][_0xd1b5('0x11')]()===_0xd1b5('0x12')&&!_0x582bae[_0xd1b5('0x13')]&&!_[_0xd1b5('0x14')](_0x582bae[_0xd1b5('0x15')])){_0xd2a1b9[_0xd1b5('0x16')][_0xd1b5('0x17')]({'where':{'id':_0x582bae[_0xd1b5('0x18')]}})[_0xd1b5('0x19')](function(_0x30bcb9){if(_0x30bcb9){_0x30bcb9[_0xd1b5('0x1a')]({'lastMsgAt':_0x582bae['createdAt'],'lastMsgDirection':_0x582bae['direction']['toLowerCase']()});}})[_0xd1b5('0x1b')](function(_0x3c215f){console['error'](_0x3c215f);});}_0x4e0bde();}},'charset':_0xd1b5('0x1c'),'collate':_0xd1b5('0x1d')});};
\ No newline at end of file
+var _0x2e02=['../../config/environment','exports','define','MailMessage','messageId','fti_mail_messages','plainBody','FULLTEXT','body','fromString','models','get','direction','toLowerCase','isNil','UserId','findOne','MailInteractionId','then','update','createdAt','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','rimraf'];(function(_0x2b9613,_0x24f5de){var _0x1a08f7=function(_0x571ac4){while(--_0x571ac4){_0x2b9613['push'](_0x2b9613['shift']());}};_0x1a08f7(++_0x24f5de);}(_0x2e02,0x19e));var _0x22e0=function(_0x234f7f,_0x27402b){_0x234f7f=_0x234f7f-0x0;var _0x27d4d9=_0x2e02[_0x234f7f];return _0x27d4d9;};'use strict';var _=require(_0x22e0('0x0'));var util=require(_0x22e0('0x1'));var logger=require('../../config/logger')(_0x22e0('0x2'));var moment=require(_0x22e0('0x3'));var BPromise=require('bluebird');var rp=require(_0x22e0('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require('path');var rimraf=require(_0x22e0('0x5'));var config=require(_0x22e0('0x6'));var attributes=require('./mailMessage.attributes');module[_0x22e0('0x7')]=function(_0x4cad91,_0xdb0d7b){return _0x4cad91[_0x22e0('0x8')](_0x22e0('0x9'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x22e0('0xa'),'fields':[_0x22e0('0xa')]},{'name':_0x22e0('0xb'),'fields':[_0x22e0('0xc'),'subject'],'type':_0x22e0('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x56867f,_0x908843,_0x3e1324){if(_0x56867f[_0x22e0('0xe')]){_0x56867f['plainBody']=htmlToText[_0x22e0('0xf')](_0x56867f[_0x22e0('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3e1324(null,_0x908843);},'afterCreate':function(_0x5a9bb5,_0x180f3f,_0x47a920){var _0x8a1d92=_0x4cad91[_0x22e0('0x10')];var _0x2d033e=_0x5a9bb5[_0x22e0('0x11')]({'plain':!![]});if(_0x2d033e[_0x22e0('0x12')]['toLowerCase']()==='in'||_0x2d033e[_0x22e0('0x12')][_0x22e0('0x13')]()==='out'&&!_0x2d033e['secret']&&!_[_0x22e0('0x14')](_0x2d033e[_0x22e0('0x15')])){_0x8a1d92['MailInteraction'][_0x22e0('0x16')]({'where':{'id':_0x2d033e[_0x22e0('0x17')]}})[_0x22e0('0x18')](function(_0x3a4147){if(_0x3a4147){_0x3a4147[_0x22e0('0x19')]({'lastMsgAt':_0x2d033e[_0x22e0('0x1a')],'lastMsgDirection':_0x2d033e[_0x22e0('0x12')][_0x22e0('0x13')]()});}})[_0x22e0('0x1b')](function(_0x27fce1){console['error'](_0x27fce1);});}_0x47a920();}},'charset':_0x22e0('0x1c'),'collate':_0x22e0('0x1d')});};
\ No newline at end of file
index 5182628..7170ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['redis','localhost','socket.io-emitter','./mailMessage.socket','register','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateMailMessage','MailMessage','create','options','raw','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults'];(function(_0x22dac7,_0x45d32a){var _0x3e6cfa=function(_0x4c2e9d){while(--_0x4c2e9d){_0x22dac7['push'](_0x22dac7['shift']());}};_0x3e6cfa(++_0x45d32a);}(_0xb9be,0xc5));var _0xeb9b=function(_0x4b6830,_0x2bf6fb){_0x4b6830=_0x4b6830-0x0;var _0x239e4a=_0xb9be[_0x4b6830];return _0x239e4a;};'use strict';var _=require(_0xeb9b('0x0'));var util=require(_0xeb9b('0x1'));var moment=require(_0xeb9b('0x2'));var BPromise=require(_0xeb9b('0x3'));var rs=require(_0xeb9b('0x4'));var fs=require('fs');var Redis=require(_0xeb9b('0x5'));var db=require(_0xeb9b('0x6'))['db'];var utils=require(_0xeb9b('0x7'));var logger=require(_0xeb9b('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xeb9b('0x9'));var client=jayson[_0xeb9b('0xa')][_0xeb9b('0xb')]({'port':0x232a});config['redis']=_[_0xeb9b('0xc')](config[_0xeb9b('0xd')],{'host':_0xeb9b('0xe'),'port':0x18eb});var socket=require(_0xeb9b('0xf'))(new Redis(config[_0xeb9b('0xd')]));require(_0xeb9b('0x10'))[_0xeb9b('0x11')](socket);function respondWithRpcPromise(_0x16761a,_0x32f0c4,_0x4f4952){return new BPromise(function(_0x20c855,_0x58d6a4){return client['request'](_0x16761a,_0x4f4952)[_0xeb9b('0x12')](function(_0x4236c0){logger['info'](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));logger[_0xeb9b('0x15')](_0xeb9b('0x16'),_0x32f0c4,'request\x20sent',JSON['stringify'](_0x4236c0));if(_0x4236c0['error']){if(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x18')]===0x1f4){logger[_0xeb9b('0x17')]('MailMessage,\x20%s,\x20%s',_0x32f0c4,_0x4236c0['error']['message']);return _0x58d6a4(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);}logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);return _0x20c855(_0x4236c0[_0xeb9b('0x17')]['message']);}else{logger[_0xeb9b('0x1a')](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));_0x20c855(_0x4236c0[_0xeb9b('0x1b')][_0xeb9b('0x19')]);}})[_0xeb9b('0x1c')](function(_0x21010e){logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x21010e);_0x58d6a4(_0x21010e);});});}exports[_0xeb9b('0x1d')]=function(_0x4f436e){var _0x43dc48=this;return new Promise(function(_0x5a7ffd,_0x5d5f54){return db[_0xeb9b('0x1e')][_0xeb9b('0x1f')](_0x4f436e['body'],{'raw':_0x4f436e[_0xeb9b('0x20')]?_0x4f436e[_0xeb9b('0x20')][_0xeb9b('0x21')]===undefined?!![]:![]:!![]})[_0xeb9b('0x12')](function(_0x3c8be7){logger[_0xeb9b('0x1a')](_0xeb9b('0x1d'),_0x4f436e);logger[_0xeb9b('0x15')](_0xeb9b('0x1d'),_0x4f436e,JSON[_0xeb9b('0x22')](_0x3c8be7));_0x5a7ffd(_0x3c8be7);})[_0xeb9b('0x1c')](function(_0x296f95){logger[_0xeb9b('0x17')](_0xeb9b('0x1d'),_0x296f95[_0xeb9b('0x19')],_0x4f436e);_0x5d5f54(_0x43dc48[_0xeb9b('0x17')](0x1f4,_0x296f95['message']));});});};
\ No newline at end of file
+var _0xcf2f=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','MailMessage,\x20%s,\x20%s','message','info','result','catch','CreateMailMessage','MailMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x34a574,_0x4d8798){var _0x1eef95=function(_0x23b037){while(--_0x23b037){_0x34a574['push'](_0x34a574['shift']());}};_0x1eef95(++_0x4d8798);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x369e09,_0xef3b8c){_0x369e09=_0x369e09-0x0;var _0x4a185e=_0xcf2f[_0x369e09];return _0x4a185e;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var moment=require(_0xfcf2('0x2'));var BPromise=require(_0xfcf2('0x3'));var rs=require(_0xfcf2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcf2('0x5'))['db'];var utils=require(_0xfcf2('0x6'));var logger=require(_0xfcf2('0x7'))(_0xfcf2('0x8'));var config=require(_0xfcf2('0x9'));var jayson=require(_0xfcf2('0xa'));var client=jayson[_0xfcf2('0xb')][_0xfcf2('0xc')]({'port':0x232a});config[_0xfcf2('0xd')]=_[_0xfcf2('0xe')](config[_0xfcf2('0xd')],{'host':_0xfcf2('0xf'),'port':0x18eb});var socket=require(_0xfcf2('0x10'))(new Redis(config[_0xfcf2('0xd')]));require('./mailMessage.socket')['register'](socket);function respondWithRpcPromise(_0x4d6fc9,_0x91b579,_0x2a9ecb){return new BPromise(function(_0x481e38,_0xf38eab){return client[_0xfcf2('0x11')](_0x4d6fc9,_0x2a9ecb)[_0xfcf2('0x12')](function(_0x29e649){logger['info']('MailMessage,\x20%s,\x20%s',_0x91b579,_0xfcf2('0x13'));logger[_0xfcf2('0x14')](_0xfcf2('0x15'),_0x91b579,_0xfcf2('0x13'),JSON['stringify'](_0x29e649));if(_0x29e649[_0xfcf2('0x16')]){if(_0x29e649['error']['code']===0x1f4){logger['error'](_0xfcf2('0x17'),_0x91b579,_0x29e649['error'][_0xfcf2('0x18')]);return _0xf38eab(_0x29e649[_0xfcf2('0x16')][_0xfcf2('0x18')]);}logger[_0xfcf2('0x16')](_0xfcf2('0x17'),_0x91b579,_0x29e649[_0xfcf2('0x16')][_0xfcf2('0x18')]);return _0x481e38(_0x29e649['error'][_0xfcf2('0x18')]);}else{logger[_0xfcf2('0x19')](_0xfcf2('0x17'),_0x91b579,'request\x20sent');_0x481e38(_0x29e649[_0xfcf2('0x1a')][_0xfcf2('0x18')]);}})[_0xfcf2('0x1b')](function(_0x1cc67e){logger[_0xfcf2('0x16')]('MailMessage,\x20%s,\x20%s',_0x91b579,_0x1cc67e);_0xf38eab(_0x1cc67e);});});}exports[_0xfcf2('0x1c')]=function(_0x11c34f){var _0x4939e4=this;return new Promise(function(_0x9a1d9f,_0x23c079){return db[_0xfcf2('0x1d')][_0xfcf2('0x1e')](_0x11c34f[_0xfcf2('0x1f')],{'raw':_0x11c34f[_0xfcf2('0x20')]?_0x11c34f[_0xfcf2('0x20')][_0xfcf2('0x21')]===undefined?!![]:![]:!![]})[_0xfcf2('0x12')](function(_0x5afab5){logger[_0xfcf2('0x19')](_0xfcf2('0x1c'),_0x11c34f);logger[_0xfcf2('0x14')]('CreateMailMessage',_0x11c34f,JSON[_0xfcf2('0x22')](_0x5afab5));_0x9a1d9f(_0x5afab5);})[_0xfcf2('0x1b')](function(_0x5ddea1){logger[_0xfcf2('0x16')](_0xfcf2('0x1c'),_0x5ddea1['message'],_0x11c34f);_0x23c079(_0x4939e4[_0xfcf2('0x16')](0x1f4,_0x5ddea1[_0xfcf2('0x18')]));});});};
\ No newline at end of file
index 90e5005..671115e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf1c=['mailMessage:','./mailMessage.events','save','update','removeListener','length'];(function(_0x3792d4,_0x13e5d9){var _0x343c82=function(_0x13bdf0){while(--_0x13bdf0){_0x3792d4['push'](_0x3792d4['shift']());}};_0x343c82(++_0x13e5d9);}(_0xcf1c,0x18d));var _0xccf1=function(_0x1598fb,_0x29645f){_0x1598fb=_0x1598fb-0x0;var _0x4fae38=_0xcf1c[_0x1598fb];return _0x4fae38;};'use strict';var MailMessageEvents=require(_0xccf1('0x0'));var events=[_0xccf1('0x1'),'remove',_0xccf1('0x2')];function createListener(_0x3b9acb,_0x1d0b09){return function(_0x2800a8){_0x1d0b09['emit'](_0x3b9acb,_0x2800a8);};}function removeListener(_0x5d3e85,_0x509c8d){return function(){MailMessageEvents[_0xccf1('0x3')](_0x5d3e85,_0x509c8d);};}exports['register']=function(_0x17e358){for(var _0x2ee316=0x0,_0x2c381f=events[_0xccf1('0x4')];_0x2ee316<_0x2c381f;_0x2ee316++){var _0x1ee241=events[_0x2ee316];var _0x12ca5d=createListener(_0xccf1('0x5')+_0x1ee241,_0x17e358);MailMessageEvents['on'](_0x1ee241,_0x12ca5d);}};
\ No newline at end of file
+var _0xdc3d=['register','length','./mailMessage.events','save','remove','update','removeListener'];(function(_0x2c4efb,_0x375d19){var _0x133f11=function(_0x42de45){while(--_0x42de45){_0x2c4efb['push'](_0x2c4efb['shift']());}};_0x133f11(++_0x375d19);}(_0xdc3d,0x1ad));var _0xddc3=function(_0x48d51a,_0x3cd8f0){_0x48d51a=_0x48d51a-0x0;var _0x959195=_0xdc3d[_0x48d51a];return _0x959195;};'use strict';var MailMessageEvents=require(_0xddc3('0x0'));var events=[_0xddc3('0x1'),_0xddc3('0x2'),_0xddc3('0x3')];function createListener(_0x2b9a73,_0x483f65){return function(_0x3bcda1){_0x483f65['emit'](_0x2b9a73,_0x3bcda1);};}function removeListener(_0x8eb10,_0x5e824c){return function(){MailMessageEvents[_0xddc3('0x4')](_0x8eb10,_0x5e824c);};}exports[_0xddc3('0x5')]=function(_0x5c39e1){for(var _0xf0f73f=0x0,_0x6167cd=events[_0xddc3('0x6')];_0xf0f73f<_0x6167cd;_0xf0f73f++){var _0x451e28=events[_0xf0f73f];var _0x5aaef3=createListener('mailMessage:'+_0x451e28,_0x5c39e1);MailMessageEvents['on'](_0x451e28,_0x5aaef3);}};
\ No newline at end of file
index 436c7a7..3e3efe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b3=['../../config/environment','./mailQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xe5c0ae,_0x3173d2){var _0x23f9d9=function(_0xa5b56d){while(--_0xa5b56d){_0xe5c0ae['push'](_0xe5c0ae['shift']());}};_0x23f9d9(++_0x3173d2);}(_0xb8b3,0x19a));var _0x3b8b=function(_0x515283,_0x813dea){_0x515283=_0x515283-0x0;var _0x38f836=_0xb8b3[_0x515283];return _0x38f836;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3b8b('0x0'));var timeout=require(_0x3b8b('0x1'));var express=require('express');var router=express[_0x3b8b('0x2')]();var fs_extra=require(_0x3b8b('0x3'));var auth=require(_0x3b8b('0x4'));var interaction=require(_0x3b8b('0x5'));var config=require(_0x3b8b('0x6'));var controller=require(_0x3b8b('0x7'));router['get']('/',auth[_0x3b8b('0x8')](),controller[_0x3b8b('0x9')]);router[_0x3b8b('0xa')](_0x3b8b('0xb'),auth[_0x3b8b('0x8')](),controller[_0x3b8b('0xc')]);router['get'](_0x3b8b('0xd'),auth[_0x3b8b('0x8')](),controller[_0x3b8b('0xe')]);router[_0x3b8b('0xa')](_0x3b8b('0xf'),auth['isAuthenticated'](),controller[_0x3b8b('0x10')]);router['get']('/:id/teams',auth['isAuthenticated'](),controller[_0x3b8b('0x11')]);router['get'](_0x3b8b('0x12'),auth[_0x3b8b('0x8')](),controller[_0x3b8b('0x13')]);router[_0x3b8b('0x14')]('/',auth['isAuthenticated'](),controller[_0x3b8b('0x15')]);router[_0x3b8b('0x14')](_0x3b8b('0x16'),auth['isAuthenticated'](),controller[_0x3b8b('0x17')]);router[_0x3b8b('0x14')](_0x3b8b('0x12'),auth['isAuthenticated'](),controller[_0x3b8b('0x18')]);router[_0x3b8b('0x19')](_0x3b8b('0xd'),auth[_0x3b8b('0x8')](),controller[_0x3b8b('0x1a')]);router[_0x3b8b('0x1b')](_0x3b8b('0xd'),auth[_0x3b8b('0x8')](),controller[_0x3b8b('0x1c')]);router['delete']('/:id/teams',auth[_0x3b8b('0x8')](),controller[_0x3b8b('0x1d')]);router['delete'](_0x3b8b('0x12'),auth['isAuthenticated'](),controller[_0x3b8b('0x1e')]);module[_0x3b8b('0x1f')]=router;
\ No newline at end of file
+var _0xf9cb=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id/teams','getTeams','/:id/users','getAgents','addTeams','post','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports','multer'];(function(_0xfcf737,_0x132075){var _0x5eccbe=function(_0x2dc482){while(--_0x2dc482){_0xfcf737['push'](_0xfcf737['shift']());}};_0x5eccbe(++_0x132075);}(_0xf9cb,0xa1));var _0xbf9c=function(_0x587dd0,_0x273922){_0x587dd0=_0x587dd0-0x0;var _0x56f153=_0xf9cb[_0x587dd0];return _0x56f153;};'use strict';var multer=require(_0xbf9c('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbf9c('0x1'));var router=express[_0xbf9c('0x2')]();var fs_extra=require(_0xbf9c('0x3'));var auth=require(_0xbf9c('0x4'));var interaction=require(_0xbf9c('0x5'));var config=require(_0xbf9c('0x6'));var controller=require('./mailQueue.controller');router['get']('/',auth[_0xbf9c('0x7')](),controller[_0xbf9c('0x8')]);router[_0xbf9c('0x9')](_0xbf9c('0xa'),auth[_0xbf9c('0x7')](),controller[_0xbf9c('0xb')]);router[_0xbf9c('0x9')]('/:id',auth[_0xbf9c('0x7')](),controller['show']);router[_0xbf9c('0x9')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xbf9c('0x9')](_0xbf9c('0xc'),auth[_0xbf9c('0x7')](),controller[_0xbf9c('0xd')]);router[_0xbf9c('0x9')](_0xbf9c('0xe'),auth[_0xbf9c('0x7')](),controller[_0xbf9c('0xf')]);router['post']('/',auth[_0xbf9c('0x7')](),controller['create']);router['post']('/:id/teams',auth[_0xbf9c('0x7')](),controller[_0xbf9c('0x10')]);router[_0xbf9c('0x11')](_0xbf9c('0xe'),auth[_0xbf9c('0x7')](),controller[_0xbf9c('0x12')]);router[_0xbf9c('0x13')](_0xbf9c('0x14'),auth[_0xbf9c('0x7')](),controller[_0xbf9c('0x15')]);router[_0xbf9c('0x16')](_0xbf9c('0x14'),auth['isAuthenticated'](),controller[_0xbf9c('0x17')]);router[_0xbf9c('0x16')](_0xbf9c('0xc'),auth[_0xbf9c('0x7')](),controller[_0xbf9c('0x18')]);router[_0xbf9c('0x16')]('/:id/users',auth[_0xbf9c('0x7')](),controller[_0xbf9c('0x19')]);module[_0xbf9c('0x1a')]=router;
\ No newline at end of file
index 11510c7..6a0e656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3899=['beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x49c371,_0x31ef80){var _0x256587=function(_0x1aa16e){while(--_0x1aa16e){_0x49c371['push'](_0x49c371['shift']());}};_0x256587(++_0x31ef80);}(_0x3899,0x102));var _0x9389=function(_0x28c02b,_0x16c6be){_0x28c02b=_0x28c02b-0x0;var _0xf00deb=_0x3899[_0x28c02b];return _0xf00deb;};'use strict';var Sequelize=require(_0x9389('0x0'));module[_0x9389('0x1')]={'name':{'type':Sequelize[_0x9389('0x2')],'unique':_0x9389('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9389('0x2')]},'timeout':{'type':Sequelize[_0x9389('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9389('0x5')]('rrmemory',_0x9389('0x6'),_0x9389('0x7'))}};
\ No newline at end of file
+var _0x6d94=['roundrobin','exports','STRING','name','beepall'];(function(_0x3ef31f,_0x22afbb){var _0x5a72e4=function(_0x2244a1){while(--_0x2244a1){_0x3ef31f['push'](_0x3ef31f['shift']());}};_0x5a72e4(++_0x22afbb);}(_0x6d94,0x18c));var _0x46d9=function(_0x556bb3,_0x5efdad){_0x556bb3=_0x556bb3-0x0;var _0x449343=_0x6d94[_0x556bb3];return _0x449343;};'use strict';var Sequelize=require('sequelize');module[_0x46d9('0x0')]={'name':{'type':Sequelize[_0x46d9('0x1')],'unique':_0x46d9('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x46d9('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x46d9('0x3'),_0x46d9('0x4'))}};
\ No newline at end of file
index 092e6fb..53beca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca5a=['to-csv','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','get','UserProfileResource','destroy','error','name','send','index','map','MailQueue','fieldName','type','key','query','keys','filters','attributes','intersection','model','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','fields','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','UserMailQueue','order','User','findAndCountAll','UserId','agent','mailPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','getAgents','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0xaeab25,_0x4ef61f){var _0x52ad50=function(_0x56e4bf){while(--_0x56e4bf){_0xaeab25['push'](_0xaeab25['shift']());}};_0x52ad50(++_0x4ef61f);}(_0xca5a,0x82));var _0xaca5=function(_0x465a00,_0x1f2055){_0x465a00=_0x465a00-0x0;var _0x4e5e63=_0xca5a[_0x465a00];return _0x4e5e63;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaca5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaca5('0x1'));var rp=require(_0xaca5('0x2'));var moment=require(_0xaca5('0x3'));var BPromise=require(_0xaca5('0x4'));var Mustache=require('mustache');var util=require(_0xaca5('0x5'));var path=require(_0xaca5('0x6'));var sox=require(_0xaca5('0x7'));var csv=require('to-csv');var ejs=require(_0xaca5('0x8'));var fs=require('fs');var fs_extra=require(_0xaca5('0x9'));var _=require(_0xaca5('0xa'));var squel=require(_0xaca5('0xb'));var crypto=require(_0xaca5('0xc'));var jsforce=require(_0xaca5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaca5('0xe'));var querystring=require('querystring');var Papa=require(_0xaca5('0xf'));var Redis=require(_0xaca5('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xaca5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaca5('0x12'));var utils=require(_0xaca5('0x13'));var config=require(_0xaca5('0x14'));var licenseUtil=require(_0xaca5('0x15'));var db=require(_0xaca5('0x16'))['db'];config[_0xaca5('0x17')]=_[_0xaca5('0x18')](config[_0xaca5('0x17')],{'host':_0xaca5('0x19'),'port':0x18eb});var socket=require(_0xaca5('0x1a'))(new Redis(config['redis']));require(_0xaca5('0x1b'))['register'](socket);function respondWithStatusCode(_0x31a020,_0xbdfe1d){_0xbdfe1d=_0xbdfe1d||0xcc;return function(_0xe4a650){if(_0xe4a650){return _0x31a020[_0xaca5('0x1c')](_0xbdfe1d);}return _0x31a020[_0xaca5('0x1d')](_0xbdfe1d)[_0xaca5('0x1e')]();};}function respondWithResult(_0x24fe81,_0xd11a5c){_0xd11a5c=_0xd11a5c||0xc8;return function(_0x2a2684){if(_0x2a2684){return _0x24fe81[_0xaca5('0x1d')](_0xd11a5c)[_0xaca5('0x1f')](_0x2a2684);}};}function respondWithFilteredResult(_0x3c17a3,_0x11ba56){return function(_0x45d396){if(_0x45d396){var _0x3a5767=typeof _0x11ba56[_0xaca5('0x20')]===_0xaca5('0x21')&&typeof _0x11ba56[_0xaca5('0x22')]===_0xaca5('0x21');var _0x364ff3=_0x45d396[_0xaca5('0x23')];var _0x17fcc0=_0x3a5767?0x0:_0x11ba56[_0xaca5('0x20')];var _0x5db7c9=_0x3a5767?_0x45d396['count']:_0x11ba56[_0xaca5('0x20')]+_0x11ba56['limit'];var _0x41efbb;if(_0x5db7c9>=_0x364ff3){_0x5db7c9=_0x364ff3;_0x41efbb=0xc8;}else{_0x41efbb=0xce;}_0x3c17a3[_0xaca5('0x1d')](_0x41efbb);return _0x3c17a3[_0xaca5('0x24')](_0xaca5('0x25'),_0x17fcc0+'-'+_0x5db7c9+'/'+_0x364ff3)[_0xaca5('0x1f')](_0x45d396);}return null;};}function patchUpdates(_0xb63081){return function(_0x159cc8){try{jsonpatch['apply'](_0x159cc8,_0xb63081,!![]);}catch(_0x2b019f){return BPromise[_0xaca5('0x26')](_0x2b019f);}return _0x159cc8[_0xaca5('0x27')]();};}function saveUpdates(_0xf72c6f,_0x154c6a){return function(_0x6dacdc){if(_0x6dacdc){return _0x6dacdc['update'](_0xf72c6f)[_0xaca5('0x28')](function(_0x157b4b){return _0x157b4b;});}return null;};}function removeEntity(_0x46a014,_0x452f4e){return function(_0x295706){if(_0x295706){return _0x295706['destroy']()[_0xaca5('0x28')](function(){var _0x3984a3=_0x295706[_0xaca5('0x29')]({'plain':!![]});var _0x865c='MailQueues';return db[_0xaca5('0x2a')][_0xaca5('0x2b')]({'where':{'type':_0x865c,'resourceId':_0x3984a3['id']}})[_0xaca5('0x28')](function(){return _0x295706;});})[_0xaca5('0x28')](function(){_0x46a014[_0xaca5('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f2960,_0xb518da){return function(_0x3bc67e){if(!_0x3bc67e){_0x1f2960[_0xaca5('0x1c')](0x194);}return _0x3bc67e;};}function handleError(_0x92ae55,_0x516347){_0x516347=_0x516347||0x1f4;return function(_0xb339b3){logger[_0xaca5('0x2c')](_0xb339b3['stack']);if(_0xb339b3[_0xaca5('0x2d')]){delete _0xb339b3[_0xaca5('0x2d')];}_0x92ae55['status'](_0x516347)[_0xaca5('0x2e')](_0xb339b3);};}exports[_0xaca5('0x2f')]=function(_0x4918a0,_0x4cdb7d){var _0xbaf0d={},_0x31ec48={},_0x1cf6cf={'count':0x0,'rows':[]};var _0x290f93=_[_0xaca5('0x30')](db[_0xaca5('0x31')]['rawAttributes'],function(_0x1d0109){return{'name':_0x1d0109[_0xaca5('0x32')],'type':_0x1d0109[_0xaca5('0x33')][_0xaca5('0x34')]};});_0x31ec48['model']=_['map'](_0x290f93,_0xaca5('0x2d'));_0x31ec48[_0xaca5('0x35')]=_[_0xaca5('0x36')](_0x4918a0['query']);_0x31ec48[_0xaca5('0x37')]=_['intersection'](_0x31ec48['model'],_0x31ec48[_0xaca5('0x35')]);_0xbaf0d[_0xaca5('0x38')]=_[_0xaca5('0x39')](_0x31ec48[_0xaca5('0x3a')],qs['fields'](_0x4918a0['query']['fields']));_0xbaf0d['attributes']=_0xbaf0d[_0xaca5('0x38')][_0xaca5('0x3b')]?_0xbaf0d[_0xaca5('0x38')]:_0x31ec48[_0xaca5('0x3a')];if(!_0x4918a0['query'][_0xaca5('0x3c')](_0xaca5('0x3d'))){_0xbaf0d[_0xaca5('0x22')]=qs[_0xaca5('0x22')](_0x4918a0[_0xaca5('0x35')]['limit']);_0xbaf0d[_0xaca5('0x20')]=qs['offset'](_0x4918a0[_0xaca5('0x35')][_0xaca5('0x20')]);}_0xbaf0d['order']=qs['sort'](_0x4918a0['query'][_0xaca5('0x3e')]);_0xbaf0d[_0xaca5('0x3f')]=qs[_0xaca5('0x37')](_[_0xaca5('0x40')](_0x4918a0[_0xaca5('0x35')],_0x31ec48[_0xaca5('0x37')]),_0x290f93);if(_0x4918a0[_0xaca5('0x35')]['filter']){_0xbaf0d[_0xaca5('0x3f')]=_['merge'](_0xbaf0d[_0xaca5('0x3f')],{'$or':_['map'](_0x290f93,function(_0x1059fb){if(_0x1059fb[_0xaca5('0x33')]!==_0xaca5('0x41')){var _0x34b4da={};_0x34b4da[_0x1059fb[_0xaca5('0x2d')]]={'$like':'%'+_0x4918a0['query'][_0xaca5('0x42')]+'%'};return _0x34b4da;}})});}_0xbaf0d=_[_0xaca5('0x43')]({},_0xbaf0d,_0x4918a0[_0xaca5('0x44')]);var _0x9503f1={'where':_0xbaf0d[_0xaca5('0x3f')]};return db[_0xaca5('0x31')][_0xaca5('0x23')](_0x9503f1)['then'](function(_0x52c469){_0x1cf6cf[_0xaca5('0x23')]=_0x52c469;if(_0x4918a0[_0xaca5('0x35')][_0xaca5('0x45')]){_0xbaf0d['include']=[{'all':!![]}];}return db[_0xaca5('0x31')][_0xaca5('0x46')](_0xbaf0d);})[_0xaca5('0x28')](function(_0x378975){_0x1cf6cf[_0xaca5('0x47')]=_0x378975;return _0x1cf6cf;})[_0xaca5('0x28')](respondWithFilteredResult(_0x4cdb7d,_0xbaf0d))[_0xaca5('0x48')](handleError(_0x4cdb7d,null));};exports[_0xaca5('0x49')]=function(_0x2d5193,_0x3ad72d){var _0x33cb3c={'raw':!![],'where':{'id':_0x2d5193[_0xaca5('0x4a')]['id']}},_0x3e868e={};_0x3e868e[_0xaca5('0x3a')]=_[_0xaca5('0x36')](db[_0xaca5('0x31')][_0xaca5('0x4b')]);_0x3e868e['query']=_[_0xaca5('0x36')](_0x2d5193[_0xaca5('0x35')]);_0x3e868e[_0xaca5('0x37')]=_[_0xaca5('0x39')](_0x3e868e[_0xaca5('0x3a')],_0x3e868e['query']);_0x33cb3c[_0xaca5('0x38')]=_[_0xaca5('0x39')](_0x3e868e[_0xaca5('0x3a')],qs[_0xaca5('0x4c')](_0x2d5193[_0xaca5('0x35')][_0xaca5('0x4c')]));_0x33cb3c[_0xaca5('0x38')]=_0x33cb3c[_0xaca5('0x38')][_0xaca5('0x3b')]?_0x33cb3c[_0xaca5('0x38')]:_0x3e868e[_0xaca5('0x3a')];if(_0x2d5193[_0xaca5('0x35')][_0xaca5('0x45')]){_0x33cb3c[_0xaca5('0x4d')]=[{'all':!![]}];}_0x33cb3c=_[_0xaca5('0x43')]({},_0x33cb3c,_0x2d5193['options']);return db[_0xaca5('0x31')][_0xaca5('0x4e')](_0x33cb3c)[_0xaca5('0x28')](handleEntityNotFound(_0x3ad72d,null))['then'](respondWithResult(_0x3ad72d,null))['catch'](handleError(_0x3ad72d,null));};exports[_0xaca5('0x4f')]=function(_0x380678,_0x3b0f3a){return db[_0xaca5('0x31')][_0xaca5('0x4f')](_0x380678[_0xaca5('0x50')],{})[_0xaca5('0x28')](function(_0x3945d2){var _0x3b4615=_0x380678[_0xaca5('0x51')][_0xaca5('0x29')]({'plain':!![]});if(!_0x3b4615)throw new Error(_0xaca5('0x52'));if(_0x3b4615[_0xaca5('0x53')]==='user'){var _0x52522c=_0x3945d2[_0xaca5('0x29')]({'plain':!![]});var _0x33d9c5='MailQueues';return db[_0xaca5('0x54')][_0xaca5('0x4e')]({'where':{'name':_0x33d9c5,'userProfileId':_0x3b4615[_0xaca5('0x55')]},'raw':!![]})['then'](function(_0xd0694d){if(_0xd0694d&&_0xd0694d[_0xaca5('0x56')]===0x0){return db['UserProfileResource'][_0xaca5('0x4f')]({'name':_0x52522c[_0xaca5('0x2d')],'resourceId':_0x52522c['id'],'type':_0xd0694d['name'],'sectionId':_0xd0694d['id']},{})[_0xaca5('0x28')](function(){return _0x3945d2;});}else{return _0x3945d2;}})['catch'](function(_0x178a81){logger[_0xaca5('0x2c')](_0xaca5('0x57'),_0x178a81);throw _0x178a81;});}return _0x3945d2;})[_0xaca5('0x28')](respondWithResult(_0x3b0f3a,0xc9))[_0xaca5('0x48')](handleError(_0x3b0f3a,null));};exports[_0xaca5('0x58')]=function(_0x12d6b3,_0x2f388a){if(_0x12d6b3[_0xaca5('0x50')]['id']){delete _0x12d6b3[_0xaca5('0x50')]['id'];}return db[_0xaca5('0x31')][_0xaca5('0x4e')]({'where':{'id':_0x12d6b3[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](handleEntityNotFound(_0x2f388a,null))[_0xaca5('0x28')](saveUpdates(_0x12d6b3[_0xaca5('0x50')],null))[_0xaca5('0x28')](respondWithResult(_0x2f388a,null))[_0xaca5('0x48')](handleError(_0x2f388a,null));};exports[_0xaca5('0x2b')]=function(_0x405c37,_0x59311f){return db['MailQueue'][_0xaca5('0x4e')]({'where':{'id':_0x405c37['params']['id']}})['then'](handleEntityNotFound(_0x59311f,null))[_0xaca5('0x28')](removeEntity(_0x59311f,null))[_0xaca5('0x48')](handleError(_0x59311f,null));};exports[_0xaca5('0x59')]=function(_0x182a86,_0x1fffbc){return db[_0xaca5('0x31')][_0xaca5('0x59')]()['then'](respondWithResult(_0x1fffbc,null))['catch'](handleError(_0x1fffbc,null));};exports['getMembers']=function(_0x44b468,_0x27ea06,_0x2a6c2e){var _0x5f5b4a={'raw':!![],'where':{}},_0x2d6b36={},_0x2de37f;return db[_0xaca5('0x31')][_0xaca5('0x5a')]({'where':{'id':_0x44b468[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](handleEntityNotFound(_0x27ea06,null))[_0xaca5('0x28')](function(_0x11fa91){if(_0x11fa91){_0x2de37f=_0x11fa91[_0xaca5('0x29')]({'plain':!![]});_0x2d6b36[_0xaca5('0x3a')]=_[_0xaca5('0x36')](db[_0xaca5('0x5b')][_0xaca5('0x4b')]);_0x2d6b36['query']=_[_0xaca5('0x36')](_0x44b468[_0xaca5('0x35')]);_0x2d6b36[_0xaca5('0x37')]=_[_0xaca5('0x39')](_0x2d6b36[_0xaca5('0x3a')],_0x2d6b36[_0xaca5('0x35')]);_0x5f5b4a[_0xaca5('0x38')]=_[_0xaca5('0x39')](_0x2d6b36['model'],qs[_0xaca5('0x4c')](_0x44b468[_0xaca5('0x35')][_0xaca5('0x4c')]));_0x5f5b4a['attributes']=_0x5f5b4a[_0xaca5('0x38')][_0xaca5('0x3b')]?_0x5f5b4a[_0xaca5('0x38')]:_0x2d6b36[_0xaca5('0x3a')];if(!_0x44b468[_0xaca5('0x35')][_0xaca5('0x3c')](_0xaca5('0x3d'))){_0x5f5b4a[_0xaca5('0x22')]=qs[_0xaca5('0x22')](_0x44b468[_0xaca5('0x35')][_0xaca5('0x22')]);_0x5f5b4a['offset']=qs[_0xaca5('0x20')](_0x44b468[_0xaca5('0x35')][_0xaca5('0x20')]);}_0x5f5b4a[_0xaca5('0x5c')]=qs[_0xaca5('0x3e')](_0x44b468[_0xaca5('0x35')][_0xaca5('0x3e')]);_0x5f5b4a[_0xaca5('0x3f')]=qs['filters'](_[_0xaca5('0x40')](_0x44b468['query'],_0x2d6b36[_0xaca5('0x37')]));_0x5f5b4a[_0xaca5('0x3f')]['MailQueueId']=_0x11fa91['id'];if(_0x44b468[_0xaca5('0x35')]['filter']){_0x5f5b4a[_0xaca5('0x3f')]=_[_0xaca5('0x43')](_0x5f5b4a[_0xaca5('0x3f')],{'$or':_['map'](_0x5f5b4a[_0xaca5('0x38')],function(_0x3daabe){var _0x4aec98={};_0x4aec98[_0x3daabe]={'$like':'%'+_0x44b468['query'][_0xaca5('0x42')]+'%'};return _0x4aec98;})});}_0x5f5b4a=_[_0xaca5('0x43')]({},_0x5f5b4a,_0x44b468[_0xaca5('0x44')]);return db[_0xaca5('0x5b')][_0xaca5('0x46')](_0x5f5b4a);}})['then'](function(_0x19a316){if(_0x19a316){return db[_0xaca5('0x5d')][_0xaca5('0x5e')]({'where':{'id':_[_0xaca5('0x30')](_0x19a316,_0xaca5('0x5f')),'role':_0xaca5('0x60')},'attributes':['id',_0xaca5('0x2d'),_0xaca5('0x61'),'updatedAt',_0xaca5('0x62')]});}})['then'](function(_0x306bfb){if(_0x306bfb){return{'count':_0x306bfb[_0xaca5('0x23')],'rows':_['map'](_0x306bfb[_0xaca5('0x47')],function(_0x4780dd){return{'membername':_0x4780dd[_0xaca5('0x2d')],'UserId':_0x4780dd['id'],'queue_name':_0x2de37f['name'],'MailQueueId':_0x2de37f['id'],'interface':util[_0xaca5('0x63')](_0xaca5('0x64'),_0xaca5('0x65'),_0x4780dd[_0xaca5('0x2d')]),'penalty':0x0,'paused':_0x4780dd['mailPause'],'createdAt':_0x4780dd['createdAt'],'updatedAt':_0x4780dd[_0xaca5('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xaca5('0x28')](respondWithFilteredResult(_0x27ea06,_0x5f5b4a))['catch'](handleError(_0x27ea06,null));};exports[_0xaca5('0x67')]=function(_0x36ea7b,_0x2e9e08,_0x51c368){var _0x55afa8={};var _0x57d8bf={};var _0x443d5a;var _0x3abf57;return db[_0xaca5('0x31')][_0xaca5('0x5a')]({'where':{'id':_0x36ea7b[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](handleEntityNotFound(_0x2e9e08,null))[_0xaca5('0x28')](function(_0x5aaca3){if(_0x5aaca3){_0x443d5a=_0x5aaca3;_0x57d8bf['model']=_['keys'](db['Team'][_0xaca5('0x4b')]);_0x57d8bf['query']=_[_0xaca5('0x36')](_0x36ea7b[_0xaca5('0x35')]);_0x57d8bf[_0xaca5('0x37')]=_[_0xaca5('0x39')](_0x57d8bf['model'],_0x57d8bf['query']);_0x55afa8[_0xaca5('0x38')]=_['intersection'](_0x57d8bf[_0xaca5('0x3a')],qs[_0xaca5('0x4c')](_0x36ea7b[_0xaca5('0x35')][_0xaca5('0x4c')]));_0x55afa8[_0xaca5('0x38')]=_0x55afa8[_0xaca5('0x38')][_0xaca5('0x3b')]?_0x55afa8[_0xaca5('0x38')]:_0x57d8bf[_0xaca5('0x3a')];_0x55afa8['order']=qs[_0xaca5('0x3e')](_0x36ea7b[_0xaca5('0x35')][_0xaca5('0x3e')]);_0x55afa8[_0xaca5('0x3f')]=qs[_0xaca5('0x37')](_[_0xaca5('0x40')](_0x36ea7b[_0xaca5('0x35')],_0x57d8bf[_0xaca5('0x37')]));if(_0x36ea7b[_0xaca5('0x35')][_0xaca5('0x42')]){_0x55afa8['where']=_[_0xaca5('0x43')](_0x55afa8['where'],{'$or':_['map'](_0x55afa8[_0xaca5('0x38')],function(_0x2cd752){var _0x4e9595={};_0x4e9595[_0x2cd752]={'$like':'%'+_0x36ea7b[_0xaca5('0x35')]['filter']+'%'};return _0x4e9595;})});}_0x55afa8=_[_0xaca5('0x43')]({},_0x55afa8,_0x36ea7b[_0xaca5('0x44')]);return _0x443d5a[_0xaca5('0x67')](_0x55afa8);}})[_0xaca5('0x28')](function(_0x438812){if(_0x438812){_0x3abf57=_0x438812[_0xaca5('0x3b')];if(!_0x36ea7b[_0xaca5('0x35')][_0xaca5('0x3c')](_0xaca5('0x3d'))){_0x55afa8['limit']=qs[_0xaca5('0x22')](_0x36ea7b[_0xaca5('0x35')][_0xaca5('0x22')]);_0x55afa8[_0xaca5('0x20')]=qs['offset'](_0x36ea7b['query']['offset']);}return _0x443d5a['getTeams'](_0x55afa8);}})[_0xaca5('0x28')](function(_0x1d4c98){if(_0x1d4c98){return _0x1d4c98?{'count':_0x3abf57,'rows':_0x1d4c98}:null;}})[_0xaca5('0x28')](respondWithResult(_0x2e9e08,null))['catch'](handleError(_0x2e9e08,null));};exports[_0xaca5('0x68')]=function(_0x407372,_0x3c9a84,_0x44a222){var _0x373627=_0x407372[_0xaca5('0x50')][_0xaca5('0x69')];return db[_0xaca5('0x6a')][_0xaca5('0x46')]({'where':{'id':_0x373627},'attributes':['id'],'include':[{'model':db[_0xaca5('0x5d')],'as':_0xaca5('0x6b'),'attributes':['id',_0xaca5('0x2d'),_0xaca5('0x6c'),_0xaca5('0x6d'),_0xaca5('0x6e')],'raw':!![]}]})[_0xaca5('0x28')](function(_0x2703cd){if(_0x2703cd){var _0x1e1880=_[_0xaca5('0x6f')](_0x2703cd,function(_0x49cf58){var _0x27dc1d=_0x49cf58[_0xaca5('0x29')]({'plain':!![]});return _0x27dc1d[_0xaca5('0x6b')];});return db['MailQueue'][_0xaca5('0x4e')]({'where':{'id':_0x407372[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](function(_0x2801ac){return db[_0xaca5('0x70')][_0xaca5('0x71')](function(_0x9def6f){return _0x2801ac[_0xaca5('0x68')](_0x373627,{'transaction':_0x9def6f})[_0xaca5('0x28')](function(){return BPromise[_0xaca5('0x72')](_0x1e1880,function(_0x5d20af){return db[_0xaca5('0x5b')][_0xaca5('0x73')]({'where':{'UserId':_0x5d20af['id'],'MailQueueId':_0x407372[_0xaca5('0x4a')]['id']},'transaction':_0x9def6f});});})[_0xaca5('0x28')](function(){_0x1e1880[_0xaca5('0x74')](function(_0x51ed65){socket[_0xaca5('0x75')](_0xaca5('0x76'),{'UserId':_0x51ed65['id'],'MailQueueId':_0x2801ac['id']});});});});});}})['then'](respondWithStatusCode(_0x3c9a84,null))[_0xaca5('0x48')](handleError(_0x3c9a84,null));};exports[_0xaca5('0x77')]=function(_0x4ecc9a,_0x55e4dc,_0x2efe42){return db[_0xaca5('0x6a')]['findAll']({'where':{'id':_0x4ecc9a[_0xaca5('0x35')]['ids']},'attributes':['id'],'include':[{'model':db[_0xaca5('0x5d')],'as':_0xaca5('0x6b'),'attributes':['id'],'raw':!![]}]})[_0xaca5('0x28')](handleEntityNotFound(_0x55e4dc,null))[_0xaca5('0x28')](function(_0xcd200b){var _0x577a4d=_[_0xaca5('0x30')](_0xcd200b,'id');var _0xc10713=[];var _0xfe08f2=[];var _0x1c0c00=squel['select']();_0x1c0c00[_0xaca5('0x78')]('tq.TeamId')[_0xaca5('0x79')](_0xaca5('0x7a'),'tq')[_0xaca5('0x7b')](_0xaca5('0x7c'),'ut',_0xaca5('0x7d'))['where'](_0xaca5('0x7e'),_0x4ecc9a[_0xaca5('0x4a')]['id']);for(var _0x4407a1=0x0;_0x4407a1<_0xcd200b[_0xaca5('0x3b')];_0x4407a1+=0x1){let _0x350477=_0xcd200b[_0x4407a1];for(var _0x4a4503=0x0;_0x4a4503<_0x350477['Agents']['length'];_0x4a4503+=0x1){let _0x5f48bf=_0x350477[_0xaca5('0x6b')][_0x4a4503];var _0x1455c4=_0x1c0c00[_0xaca5('0x7f')]();_0x1455c4['where'](_0xaca5('0x80'),_0x5f48bf['id']);_0xfe08f2['push'](db[_0xaca5('0x70')][_0xaca5('0x35')](_0x1455c4[_0xaca5('0x81')](),{'type':db[_0xaca5('0x70')][_0xaca5('0x82')]['SELECT']})['then'](function(_0x1be06a){if(_0x1be06a[_0xaca5('0x3b')]===0x1){return _0x5f48bf['id'];}else{var _0x11c04a=_[_0xaca5('0x83')](_[_0xaca5('0x30')](_0x1be06a,_0xaca5('0x84')),function(_0x26df6a){return _[_0xaca5('0x85')](_0x577a4d,_0x26df6a);});if(_0x11c04a){return _0x5f48bf['id'];}}}));}}return BPromise['all'](_0xfe08f2)[_0xaca5('0x28')](function(_0x4f71c2){_0xc10713=_(_0xc10713)[_0xaca5('0x86')](_0x4f71c2)[_0xaca5('0x87')]()[_0xaca5('0x88')]();return db[_0xaca5('0x31')][_0xaca5('0x4e')]({'where':{'id':_0x4ecc9a[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](function(_0x57e476){return db[_0xaca5('0x70')][_0xaca5('0x71')](function(_0x3b8591){return _0x57e476['removeTeams'](_0x4ecc9a[_0xaca5('0x35')][_0xaca5('0x69')],{'transaction':_0x3b8591})['then'](function(){if(!_[_0xaca5('0x89')](_0xc10713)){return _0x57e476[_0xaca5('0x8a')](_0xc10713,{'transaction':_0x3b8591});}})[_0xaca5('0x28')](function(){_0xc10713[_0xaca5('0x74')](function(_0x3e9d08){socket[_0xaca5('0x75')](_0xaca5('0x8b'),{'UserId':_0x3e9d08,'MailQueueId':_0x57e476['id']});});});});});});})[_0xaca5('0x28')](respondWithStatusCode(_0x55e4dc,null))[_0xaca5('0x48')](handleError(_0x55e4dc,null));};exports[_0xaca5('0x8c')]=function(_0x21e899,_0x217afc,_0x5cdbfc){return db[_0xaca5('0x31')][_0xaca5('0x4e')]({'where':{'id':_0x21e899[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](handleEntityNotFound(_0x217afc,null))['then'](function(_0x2ef7c6){if(_0x2ef7c6){return _0x2ef7c6[_0xaca5('0x8c')](_0x21e899[_0xaca5('0x50')]['ids'],_[_0xaca5('0x8d')](_0x21e899[_0xaca5('0x50')],['ids','id'])||{})[_0xaca5('0x8e')](function(_0x1c6bc2){for(var _0x10f8fe=0x0;_0x10f8fe<_0x21e899[_0xaca5('0x50')][_0xaca5('0x69')][_0xaca5('0x3b')];_0x10f8fe+=0x1){socket['emit'](_0xaca5('0x76'),{'UserId':Number(_0x21e899[_0xaca5('0x50')][_0xaca5('0x69')][_0x10f8fe]),'MailQueueId':Number(_0x21e899[_0xaca5('0x4a')]['id'])});}return _0x1c6bc2;});}})['then'](respondWithResult(_0x217afc,null))[_0xaca5('0x48')](handleError(_0x217afc,null));};exports[_0xaca5('0x8a')]=function(_0xc624f3,_0x36c700,_0xc25007){return db[_0xaca5('0x31')][_0xaca5('0x4e')]({'where':{'id':_0xc624f3[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](handleEntityNotFound(_0x36c700,null))[_0xaca5('0x28')](function(_0x2b0d3d){if(_0x2b0d3d){return _0x2b0d3d[_0xaca5('0x8a')](_0xc624f3[_0xaca5('0x35')][_0xaca5('0x69')])[_0xaca5('0x28')](function(){if(_['isArray'](_0xc624f3['query']['ids'])){for(var _0x1deb26=0x0;_0x1deb26<_0xc624f3[_0xaca5('0x35')][_0xaca5('0x69')][_0xaca5('0x3b')];_0x1deb26+=0x1){socket[_0xaca5('0x75')]('userMailQueue:remove',{'UserId':Number(_0xc624f3[_0xaca5('0x35')][_0xaca5('0x69')][_0x1deb26]),'MailQueueId':Number(_0xc624f3['params']['id'])});}}else{socket['emit'](_0xaca5('0x8b'),{'UserId':Number(_0xc624f3[_0xaca5('0x35')][_0xaca5('0x69')]),'MailQueueId':Number(_0xc624f3['params']['id'])});}});}})[_0xaca5('0x28')](respondWithStatusCode(_0x36c700,null))[_0xaca5('0x48')](handleError(_0x36c700,null));};exports['getAgents']=function(_0x1be090,_0xaba6b9,_0x519aa2){var _0x57b241={};var _0x57fe4d={};var _0x2f53db;var _0x8d48a9;return db[_0xaca5('0x31')]['findOne']({'where':{'id':_0x1be090[_0xaca5('0x4a')]['id']}})[_0xaca5('0x28')](handleEntityNotFound(_0xaba6b9,null))[_0xaca5('0x28')](function(_0xbab2ec){if(_0xbab2ec){_0x2f53db=_0xbab2ec;_0x57fe4d[_0xaca5('0x3a')]=_[_0xaca5('0x36')](db['User'][_0xaca5('0x4b')]);_0x57fe4d[_0xaca5('0x35')]=_[_0xaca5('0x36')](_0x1be090[_0xaca5('0x35')]);_0x57fe4d[_0xaca5('0x37')]=_[_0xaca5('0x39')](_0x57fe4d[_0xaca5('0x3a')],_0x57fe4d[_0xaca5('0x35')]);_0x57b241['attributes']=_[_0xaca5('0x39')](_0x57fe4d[_0xaca5('0x3a')],qs['fields'](_0x1be090[_0xaca5('0x35')][_0xaca5('0x4c')]));_0x57b241['attributes']=_0x57b241['attributes'][_0xaca5('0x3b')]?_0x57b241['attributes']:_0x57fe4d['model'];_0x57b241['order']=qs[_0xaca5('0x3e')](_0x1be090[_0xaca5('0x35')][_0xaca5('0x3e')]);_0x57b241[_0xaca5('0x3f')]=qs[_0xaca5('0x37')](_[_0xaca5('0x40')](_0x1be090[_0xaca5('0x35')],_0x57fe4d['filters']));if(_0x1be090[_0xaca5('0x35')]['filter']){_0x57b241[_0xaca5('0x3f')]=_[_0xaca5('0x43')](_0x57b241['where'],{'$or':_[_0xaca5('0x30')](_0x57b241[_0xaca5('0x38')],function(_0x596bcd){var _0x48e83c={};_0x48e83c[_0x596bcd]={'$like':'%'+_0x1be090[_0xaca5('0x35')][_0xaca5('0x42')]+'%'};return _0x48e83c;})});}_0x57b241=_[_0xaca5('0x43')]({},_0x57b241,_0x1be090[_0xaca5('0x44')]);return _0x2f53db['getAgents'](_0x57b241);}})[_0xaca5('0x28')](function(_0x5729d1){if(_0x5729d1){_0x8d48a9=_0x5729d1[_0xaca5('0x3b')];if(!_0x1be090['query'][_0xaca5('0x3c')](_0xaca5('0x3d'))){_0x57b241[_0xaca5('0x22')]=qs[_0xaca5('0x22')](_0x1be090[_0xaca5('0x35')]['limit']);_0x57b241[_0xaca5('0x20')]=qs[_0xaca5('0x20')](_0x1be090[_0xaca5('0x35')][_0xaca5('0x20')]);}return _0x2f53db[_0xaca5('0x8f')](_0x57b241);}})['then'](function(_0x4d1248){if(_0x4d1248){return _0x4d1248?{'count':_0x8d48a9,'rows':_0x4d1248}:null;}})[_0xaca5('0x28')](respondWithResult(_0xaba6b9,null))[_0xaca5('0x48')](handleError(_0xaba6b9,null));};
\ No newline at end of file
+var _0x7d56=['findAll','rows','catch','show','params','keys','find','create','body','user','get','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','order','MailQueueId','User','findAndCountAll','mailPause','updatedAt','createdAt','%s/%s','SIP','Team','pick','Agents','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','MailQueues','UserProfileResource','error','stack','name','index','MailQueue','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filter','merge','where','map','VIRTUAL','options','includeAll'];(function(_0x56322f,_0x52c1e4){var _0x135743=function(_0x38dea3){while(--_0x38dea3){_0x56322f['push'](_0x56322f['shift']());}};_0x135743(++_0x52c1e4);}(_0x7d56,0x156));var _0x67d5=function(_0x404d04,_0x14f3fd){_0x404d04=_0x404d04-0x0;var _0x4d80c5=_0x7d56[_0x404d04];return _0x4d80c5;};'use strict';var emlformat=require(_0x67d5('0x0'));var rimraf=require(_0x67d5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x67d5('0x2'));var BPromise=require(_0x67d5('0x3'));var Mustache=require(_0x67d5('0x4'));var util=require(_0x67d5('0x5'));var path=require(_0x67d5('0x6'));var sox=require(_0x67d5('0x7'));var csv=require(_0x67d5('0x8'));var ejs=require(_0x67d5('0x9'));var fs=require('fs');var fs_extra=require(_0x67d5('0xa'));var _=require('lodash');var squel=require(_0x67d5('0xb'));var crypto=require('crypto');var jsforce=require(_0x67d5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x67d5('0x8'));var querystring=require('querystring');var Papa=require(_0x67d5('0xd'));var Redis=require(_0x67d5('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x67d5('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x67d5('0x10'))(_0x67d5('0x11'));var utils=require(_0x67d5('0x12'));var config=require(_0x67d5('0x13'));var licenseUtil=require(_0x67d5('0x14'));var db=require('../../mysqldb')['db'];config[_0x67d5('0x15')]=_[_0x67d5('0x16')](config['redis'],{'host':_0x67d5('0x17'),'port':0x18eb});var socket=require(_0x67d5('0x18'))(new Redis(config[_0x67d5('0x15')]));require(_0x67d5('0x19'))[_0x67d5('0x1a')](socket);function respondWithStatusCode(_0x4f8921,_0x554d6d){_0x554d6d=_0x554d6d||0xcc;return function(_0x37003){if(_0x37003){return _0x4f8921[_0x67d5('0x1b')](_0x554d6d);}return _0x4f8921[_0x67d5('0x1c')](_0x554d6d)[_0x67d5('0x1d')]();};}function respondWithResult(_0x1104fa,_0x1287cb){_0x1287cb=_0x1287cb||0xc8;return function(_0x51e198){if(_0x51e198){return _0x1104fa[_0x67d5('0x1c')](_0x1287cb)[_0x67d5('0x1e')](_0x51e198);}};}function respondWithFilteredResult(_0x21c7e3,_0x478a35){return function(_0x3c7da5){if(_0x3c7da5){var _0xc8e44d=typeof _0x478a35[_0x67d5('0x1f')]===_0x67d5('0x20')&&typeof _0x478a35[_0x67d5('0x21')]==='undefined';var _0x119dac=_0x3c7da5[_0x67d5('0x22')];var _0x9ffc68=_0xc8e44d?0x0:_0x478a35[_0x67d5('0x1f')];var _0x2d7796=_0xc8e44d?_0x3c7da5[_0x67d5('0x22')]:_0x478a35['offset']+_0x478a35['limit'];var _0x5eabd5;if(_0x2d7796>=_0x119dac){_0x2d7796=_0x119dac;_0x5eabd5=0xc8;}else{_0x5eabd5=0xce;}_0x21c7e3['status'](_0x5eabd5);return _0x21c7e3[_0x67d5('0x23')](_0x67d5('0x24'),_0x9ffc68+'-'+_0x2d7796+'/'+_0x119dac)['json'](_0x3c7da5);}return null;};}function patchUpdates(_0x4878ae){return function(_0x3e3d8c){try{jsonpatch[_0x67d5('0x25')](_0x3e3d8c,_0x4878ae,!![]);}catch(_0x93d522){return BPromise[_0x67d5('0x26')](_0x93d522);}return _0x3e3d8c[_0x67d5('0x27')]();};}function saveUpdates(_0x4b7178,_0x304833){return function(_0x2be9ec){if(_0x2be9ec){return _0x2be9ec['update'](_0x4b7178)[_0x67d5('0x28')](function(_0x27657b){return _0x27657b;});}return null;};}function removeEntity(_0x31b477,_0xe90183){return function(_0x576168){if(_0x576168){return _0x576168[_0x67d5('0x29')]()[_0x67d5('0x28')](function(){var _0x1f77b0=_0x576168['get']({'plain':!![]});var _0x1cb923=_0x67d5('0x2a');return db[_0x67d5('0x2b')]['destroy']({'where':{'type':_0x1cb923,'resourceId':_0x1f77b0['id']}})[_0x67d5('0x28')](function(){return _0x576168;});})[_0x67d5('0x28')](function(){_0x31b477[_0x67d5('0x1c')](0xcc)[_0x67d5('0x1d')]();});}};}function handleEntityNotFound(_0x21598c,_0x1a37c0){return function(_0x42d078){if(!_0x42d078){_0x21598c[_0x67d5('0x1b')](0x194);}return _0x42d078;};}function handleError(_0xf926f7,_0x27b3d7){_0x27b3d7=_0x27b3d7||0x1f4;return function(_0x339f07){logger[_0x67d5('0x2c')](_0x339f07[_0x67d5('0x2d')]);if(_0x339f07[_0x67d5('0x2e')]){delete _0x339f07[_0x67d5('0x2e')];}_0xf926f7[_0x67d5('0x1c')](_0x27b3d7)['send'](_0x339f07);};}exports[_0x67d5('0x2f')]=function(_0x36f0ae,_0x3c3a12){var _0x23e429={},_0x5b57cd={},_0x1e5bee={'count':0x0,'rows':[]};var _0xa4edc3=_['map'](db[_0x67d5('0x30')][_0x67d5('0x31')],function(_0xfcd762){return{'name':_0xfcd762[_0x67d5('0x32')],'type':_0xfcd762[_0x67d5('0x33')]['key']};});_0x5b57cd[_0x67d5('0x34')]=_['map'](_0xa4edc3,_0x67d5('0x2e'));_0x5b57cd[_0x67d5('0x35')]=_['keys'](_0x36f0ae[_0x67d5('0x35')]);_0x5b57cd[_0x67d5('0x36')]=_[_0x67d5('0x37')](_0x5b57cd['model'],_0x5b57cd[_0x67d5('0x35')]);_0x23e429['attributes']=_['intersection'](_0x5b57cd[_0x67d5('0x34')],qs['fields'](_0x36f0ae['query'][_0x67d5('0x38')]));_0x23e429['attributes']=_0x23e429[_0x67d5('0x39')][_0x67d5('0x3a')]?_0x23e429[_0x67d5('0x39')]:_0x5b57cd[_0x67d5('0x34')];if(!_0x36f0ae[_0x67d5('0x35')][_0x67d5('0x3b')](_0x67d5('0x3c'))){_0x23e429[_0x67d5('0x21')]=qs[_0x67d5('0x21')](_0x36f0ae[_0x67d5('0x35')][_0x67d5('0x21')]);_0x23e429[_0x67d5('0x1f')]=qs[_0x67d5('0x1f')](_0x36f0ae[_0x67d5('0x35')]['offset']);}_0x23e429['order']=qs['sort'](_0x36f0ae['query'][_0x67d5('0x3d')]);_0x23e429['where']=qs['filters'](_['pick'](_0x36f0ae[_0x67d5('0x35')],_0x5b57cd[_0x67d5('0x36')]),_0xa4edc3);if(_0x36f0ae[_0x67d5('0x35')][_0x67d5('0x3e')]){_0x23e429['where']=_[_0x67d5('0x3f')](_0x23e429[_0x67d5('0x40')],{'$or':_[_0x67d5('0x41')](_0xa4edc3,function(_0x2d2bb3){if(_0x2d2bb3[_0x67d5('0x33')]!==_0x67d5('0x42')){var _0x4f3efe={};_0x4f3efe[_0x2d2bb3[_0x67d5('0x2e')]]={'$like':'%'+_0x36f0ae[_0x67d5('0x35')]['filter']+'%'};return _0x4f3efe;}})});}_0x23e429=_[_0x67d5('0x3f')]({},_0x23e429,_0x36f0ae[_0x67d5('0x43')]);var _0x43a5b5={'where':_0x23e429[_0x67d5('0x40')]};return db['MailQueue']['count'](_0x43a5b5)[_0x67d5('0x28')](function(_0x4def1e){_0x1e5bee[_0x67d5('0x22')]=_0x4def1e;if(_0x36f0ae[_0x67d5('0x35')][_0x67d5('0x44')]){_0x23e429['include']=[{'all':!![]}];}return db[_0x67d5('0x30')][_0x67d5('0x45')](_0x23e429);})[_0x67d5('0x28')](function(_0x334766){_0x1e5bee[_0x67d5('0x46')]=_0x334766;return _0x1e5bee;})[_0x67d5('0x28')](respondWithFilteredResult(_0x3c3a12,_0x23e429))[_0x67d5('0x47')](handleError(_0x3c3a12,null));};exports[_0x67d5('0x48')]=function(_0x5c035d,_0x19654b){var _0x2f0fc2={'raw':!![],'where':{'id':_0x5c035d[_0x67d5('0x49')]['id']}},_0x31ecc4={};_0x31ecc4[_0x67d5('0x34')]=_['keys'](db[_0x67d5('0x30')][_0x67d5('0x31')]);_0x31ecc4[_0x67d5('0x35')]=_[_0x67d5('0x4a')](_0x5c035d[_0x67d5('0x35')]);_0x31ecc4[_0x67d5('0x36')]=_['intersection'](_0x31ecc4[_0x67d5('0x34')],_0x31ecc4['query']);_0x2f0fc2[_0x67d5('0x39')]=_['intersection'](_0x31ecc4['model'],qs[_0x67d5('0x38')](_0x5c035d['query']['fields']));_0x2f0fc2['attributes']=_0x2f0fc2['attributes'][_0x67d5('0x3a')]?_0x2f0fc2['attributes']:_0x31ecc4[_0x67d5('0x34')];if(_0x5c035d[_0x67d5('0x35')][_0x67d5('0x44')]){_0x2f0fc2['include']=[{'all':!![]}];}_0x2f0fc2=_['merge']({},_0x2f0fc2,_0x5c035d[_0x67d5('0x43')]);return db[_0x67d5('0x30')][_0x67d5('0x4b')](_0x2f0fc2)['then'](handleEntityNotFound(_0x19654b,null))[_0x67d5('0x28')](respondWithResult(_0x19654b,null))[_0x67d5('0x47')](handleError(_0x19654b,null));};exports[_0x67d5('0x4c')]=function(_0x1147ba,_0x220373){return db[_0x67d5('0x30')][_0x67d5('0x4c')](_0x1147ba[_0x67d5('0x4d')],{})['then'](function(_0x29b128){var _0x56268d=_0x1147ba[_0x67d5('0x4e')][_0x67d5('0x4f')]({'plain':!![]});if(!_0x56268d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x56268d[_0x67d5('0x50')]===_0x67d5('0x4e')){var _0x2c50d7=_0x29b128['get']({'plain':!![]});var _0x346754=_0x67d5('0x2a');return db[_0x67d5('0x51')][_0x67d5('0x4b')]({'where':{'name':_0x346754,'userProfileId':_0x56268d['userProfileId']},'raw':!![]})[_0x67d5('0x28')](function(_0x3831da){if(_0x3831da&&_0x3831da[_0x67d5('0x52')]===0x0){return db[_0x67d5('0x2b')]['create']({'name':_0x2c50d7[_0x67d5('0x2e')],'resourceId':_0x2c50d7['id'],'type':_0x3831da[_0x67d5('0x2e')],'sectionId':_0x3831da['id']},{})[_0x67d5('0x28')](function(){return _0x29b128;});}else{return _0x29b128;}})[_0x67d5('0x47')](function(_0x5924a1){logger[_0x67d5('0x2c')](_0x67d5('0x53'),_0x5924a1);throw _0x5924a1;});}return _0x29b128;})[_0x67d5('0x28')](respondWithResult(_0x220373,0xc9))[_0x67d5('0x47')](handleError(_0x220373,null));};exports[_0x67d5('0x54')]=function(_0x46529e,_0x716e24){if(_0x46529e[_0x67d5('0x4d')]['id']){delete _0x46529e['body']['id'];}return db[_0x67d5('0x30')][_0x67d5('0x4b')]({'where':{'id':_0x46529e[_0x67d5('0x49')]['id']}})[_0x67d5('0x28')](handleEntityNotFound(_0x716e24,null))[_0x67d5('0x28')](saveUpdates(_0x46529e['body'],null))[_0x67d5('0x28')](respondWithResult(_0x716e24,null))[_0x67d5('0x47')](handleError(_0x716e24,null));};exports[_0x67d5('0x29')]=function(_0x4cd3dd,_0x1b863d){return db[_0x67d5('0x30')][_0x67d5('0x4b')]({'where':{'id':_0x4cd3dd[_0x67d5('0x49')]['id']}})['then'](handleEntityNotFound(_0x1b863d,null))[_0x67d5('0x28')](removeEntity(_0x1b863d,null))[_0x67d5('0x47')](handleError(_0x1b863d,null));};exports[_0x67d5('0x55')]=function(_0x346c6c,_0x10a73b){return db[_0x67d5('0x30')][_0x67d5('0x55')]()[_0x67d5('0x28')](respondWithResult(_0x10a73b,null))[_0x67d5('0x47')](handleError(_0x10a73b,null));};exports[_0x67d5('0x56')]=function(_0x28ab34,_0x3f442e,_0x4dc312){var _0x3517a6={'raw':!![],'where':{}},_0x2b2f9b={},_0x299b50;return db['MailQueue'][_0x67d5('0x57')]({'where':{'id':_0x28ab34[_0x67d5('0x49')]['id']}})[_0x67d5('0x28')](handleEntityNotFound(_0x3f442e,null))[_0x67d5('0x28')](function(_0x5849d7){if(_0x5849d7){_0x299b50=_0x5849d7[_0x67d5('0x4f')]({'plain':!![]});_0x2b2f9b[_0x67d5('0x34')]=_[_0x67d5('0x4a')](db['UserMailQueue'][_0x67d5('0x31')]);_0x2b2f9b[_0x67d5('0x35')]=_['keys'](_0x28ab34[_0x67d5('0x35')]);_0x2b2f9b[_0x67d5('0x36')]=_[_0x67d5('0x37')](_0x2b2f9b[_0x67d5('0x34')],_0x2b2f9b[_0x67d5('0x35')]);_0x3517a6[_0x67d5('0x39')]=_[_0x67d5('0x37')](_0x2b2f9b[_0x67d5('0x34')],qs['fields'](_0x28ab34[_0x67d5('0x35')]['fields']));_0x3517a6[_0x67d5('0x39')]=_0x3517a6[_0x67d5('0x39')][_0x67d5('0x3a')]?_0x3517a6['attributes']:_0x2b2f9b[_0x67d5('0x34')];if(!_0x28ab34['query'][_0x67d5('0x3b')]('nolimit')){_0x3517a6[_0x67d5('0x21')]=qs[_0x67d5('0x21')](_0x28ab34[_0x67d5('0x35')][_0x67d5('0x21')]);_0x3517a6[_0x67d5('0x1f')]=qs[_0x67d5('0x1f')](_0x28ab34['query'][_0x67d5('0x1f')]);}_0x3517a6[_0x67d5('0x58')]=qs[_0x67d5('0x3d')](_0x28ab34[_0x67d5('0x35')][_0x67d5('0x3d')]);_0x3517a6['where']=qs[_0x67d5('0x36')](_['pick'](_0x28ab34[_0x67d5('0x35')],_0x2b2f9b[_0x67d5('0x36')]));_0x3517a6[_0x67d5('0x40')][_0x67d5('0x59')]=_0x5849d7['id'];if(_0x28ab34['query'][_0x67d5('0x3e')]){_0x3517a6['where']=_['merge'](_0x3517a6['where'],{'$or':_[_0x67d5('0x41')](_0x3517a6[_0x67d5('0x39')],function(_0x56daa9){var _0x13a830={};_0x13a830[_0x56daa9]={'$like':'%'+_0x28ab34['query']['filter']+'%'};return _0x13a830;})});}_0x3517a6=_[_0x67d5('0x3f')]({},_0x3517a6,_0x28ab34[_0x67d5('0x43')]);return db['UserMailQueue'][_0x67d5('0x45')](_0x3517a6);}})[_0x67d5('0x28')](function(_0x376d54){if(_0x376d54){return db[_0x67d5('0x5a')][_0x67d5('0x5b')]({'where':{'id':_[_0x67d5('0x41')](_0x376d54,'UserId'),'role':'agent'},'attributes':['id',_0x67d5('0x2e'),_0x67d5('0x5c'),_0x67d5('0x5d'),_0x67d5('0x5e')]});}})[_0x67d5('0x28')](function(_0x40be97){if(_0x40be97){return{'count':_0x40be97[_0x67d5('0x22')],'rows':_['map'](_0x40be97['rows'],function(_0x4a29f1){return{'membername':_0x4a29f1[_0x67d5('0x2e')],'UserId':_0x4a29f1['id'],'queue_name':_0x299b50['name'],'MailQueueId':_0x299b50['id'],'interface':util['format'](_0x67d5('0x5f'),_0x67d5('0x60'),_0x4a29f1[_0x67d5('0x2e')]),'penalty':0x0,'paused':_0x4a29f1[_0x67d5('0x5c')],'createdAt':_0x4a29f1['createdAt'],'updatedAt':_0x4a29f1[_0x67d5('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x67d5('0x28')](respondWithFilteredResult(_0x3f442e,_0x3517a6))[_0x67d5('0x47')](handleError(_0x3f442e,null));};exports['getTeams']=function(_0x39f23e,_0x206b45,_0x19a321){var _0x3405ed={};var _0xc54d0a={};var _0xe3567a;var _0x4b70e5;return db[_0x67d5('0x30')]['findOne']({'where':{'id':_0x39f23e['params']['id']}})[_0x67d5('0x28')](handleEntityNotFound(_0x206b45,null))[_0x67d5('0x28')](function(_0x3bbb50){if(_0x3bbb50){_0xe3567a=_0x3bbb50;_0xc54d0a[_0x67d5('0x34')]=_[_0x67d5('0x4a')](db[_0x67d5('0x61')]['rawAttributes']);_0xc54d0a[_0x67d5('0x35')]=_['keys'](_0x39f23e['query']);_0xc54d0a[_0x67d5('0x36')]=_[_0x67d5('0x37')](_0xc54d0a['model'],_0xc54d0a[_0x67d5('0x35')]);_0x3405ed[_0x67d5('0x39')]=_['intersection'](_0xc54d0a['model'],qs[_0x67d5('0x38')](_0x39f23e[_0x67d5('0x35')][_0x67d5('0x38')]));_0x3405ed[_0x67d5('0x39')]=_0x3405ed[_0x67d5('0x39')][_0x67d5('0x3a')]?_0x3405ed[_0x67d5('0x39')]:_0xc54d0a[_0x67d5('0x34')];_0x3405ed[_0x67d5('0x58')]=qs['sort'](_0x39f23e[_0x67d5('0x35')][_0x67d5('0x3d')]);_0x3405ed[_0x67d5('0x40')]=qs['filters'](_[_0x67d5('0x62')](_0x39f23e[_0x67d5('0x35')],_0xc54d0a[_0x67d5('0x36')]));if(_0x39f23e[_0x67d5('0x35')][_0x67d5('0x3e')]){_0x3405ed['where']=_['merge'](_0x3405ed[_0x67d5('0x40')],{'$or':_[_0x67d5('0x41')](_0x3405ed[_0x67d5('0x39')],function(_0x5721fa){var _0x546b16={};_0x546b16[_0x5721fa]={'$like':'%'+_0x39f23e['query']['filter']+'%'};return _0x546b16;})});}_0x3405ed=_[_0x67d5('0x3f')]({},_0x3405ed,_0x39f23e[_0x67d5('0x43')]);return _0xe3567a['getTeams'](_0x3405ed);}})['then'](function(_0x3634c2){if(_0x3634c2){_0x4b70e5=_0x3634c2[_0x67d5('0x3a')];if(!_0x39f23e[_0x67d5('0x35')]['hasOwnProperty'](_0x67d5('0x3c'))){_0x3405ed[_0x67d5('0x21')]=qs[_0x67d5('0x21')](_0x39f23e[_0x67d5('0x35')][_0x67d5('0x21')]);_0x3405ed['offset']=qs['offset'](_0x39f23e[_0x67d5('0x35')][_0x67d5('0x1f')]);}return _0xe3567a['getTeams'](_0x3405ed);}})['then'](function(_0x4b143d){if(_0x4b143d){return _0x4b143d?{'count':_0x4b70e5,'rows':_0x4b143d}:null;}})[_0x67d5('0x28')](respondWithResult(_0x206b45,null))['catch'](handleError(_0x206b45,null));};exports['addTeams']=function(_0x3d9e6e,_0x3b472c,_0x10a1d0){var _0x246cdf=_0x3d9e6e[_0x67d5('0x4d')]['ids'];return db['Team'][_0x67d5('0x45')]({'where':{'id':_0x246cdf},'attributes':['id'],'include':[{'model':db['User'],'as':_0x67d5('0x63'),'attributes':['id',_0x67d5('0x2e'),'online',_0x67d5('0x64'),_0x67d5('0x65')],'raw':!![]}]})['then'](function(_0x4864e6){if(_0x4864e6){var _0x1c6a82=_[_0x67d5('0x66')](_0x4864e6,function(_0x41ffae){var _0x5bcfd7=_0x41ffae['get']({'plain':!![]});return _0x5bcfd7[_0x67d5('0x63')];});return db[_0x67d5('0x30')][_0x67d5('0x4b')]({'where':{'id':_0x3d9e6e[_0x67d5('0x49')]['id']}})['then'](function(_0x538c56){return db[_0x67d5('0x67')][_0x67d5('0x68')](function(_0x3a32e7){return _0x538c56['addTeams'](_0x246cdf,{'transaction':_0x3a32e7})[_0x67d5('0x28')](function(){return BPromise['each'](_0x1c6a82,function(_0x545437){return db['UserMailQueue'][_0x67d5('0x69')]({'where':{'UserId':_0x545437['id'],'MailQueueId':_0x3d9e6e[_0x67d5('0x49')]['id']},'transaction':_0x3a32e7});});})[_0x67d5('0x28')](function(){_0x1c6a82[_0x67d5('0x6a')](function(_0x4914ad){socket[_0x67d5('0x6b')](_0x67d5('0x6c'),{'UserId':_0x4914ad['id'],'MailQueueId':_0x538c56['id']});});});});});}})[_0x67d5('0x28')](respondWithStatusCode(_0x3b472c,null))[_0x67d5('0x47')](handleError(_0x3b472c,null));};exports[_0x67d5('0x6d')]=function(_0x34ea91,_0x1066c2,_0x1c2b96){return db[_0x67d5('0x61')][_0x67d5('0x45')]({'where':{'id':_0x34ea91[_0x67d5('0x35')][_0x67d5('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x67d5('0x5a')],'as':_0x67d5('0x63'),'attributes':['id'],'raw':!![]}]})[_0x67d5('0x28')](handleEntityNotFound(_0x1066c2,null))[_0x67d5('0x28')](function(_0x22d9e5){var _0x43a59c=_[_0x67d5('0x41')](_0x22d9e5,'id');var _0x163094=[];var _0x35308c=[];var _0x166bf1=squel[_0x67d5('0x6f')]();_0x166bf1[_0x67d5('0x70')](_0x67d5('0x71'))[_0x67d5('0x72')](_0x67d5('0x73'),'tq')[_0x67d5('0x74')](_0x67d5('0x75'),'ut',_0x67d5('0x76'))['where'](_0x67d5('0x77'),_0x34ea91[_0x67d5('0x49')]['id']);for(var _0x3c7637=0x0;_0x3c7637<_0x22d9e5[_0x67d5('0x3a')];_0x3c7637+=0x1){let _0x1e74e6=_0x22d9e5[_0x3c7637];for(var _0x17950c=0x0;_0x17950c<_0x1e74e6[_0x67d5('0x63')][_0x67d5('0x3a')];_0x17950c+=0x1){let _0x530785=_0x1e74e6['Agents'][_0x17950c];var _0x3268c5=_0x166bf1['clone']();_0x3268c5['where']('ut.UserId\x20=\x20?',_0x530785['id']);_0x35308c[_0x67d5('0x78')](db[_0x67d5('0x67')][_0x67d5('0x35')](_0x3268c5['toString'](),{'type':db[_0x67d5('0x67')][_0x67d5('0x79')][_0x67d5('0x7a')]})['then'](function(_0x39c6a2){if(_0x39c6a2[_0x67d5('0x3a')]===0x1){return _0x530785['id'];}else{var _0x1c76b1=_[_0x67d5('0x7b')](_['map'](_0x39c6a2,_0x67d5('0x7c')),function(_0x2d8ae8){return _[_0x67d5('0x7d')](_0x43a59c,_0x2d8ae8);});if(_0x1c76b1){return _0x530785['id'];}}}));}}return BPromise[_0x67d5('0x7e')](_0x35308c)[_0x67d5('0x28')](function(_0xdf3a66){_0x163094=_(_0x163094)['union'](_0xdf3a66)[_0x67d5('0x7f')]()[_0x67d5('0x80')]();return db['MailQueue'][_0x67d5('0x4b')]({'where':{'id':_0x34ea91[_0x67d5('0x49')]['id']}})['then'](function(_0x1b3467){return db['sequelize'][_0x67d5('0x68')](function(_0x10db2d){return _0x1b3467[_0x67d5('0x6d')](_0x34ea91[_0x67d5('0x35')]['ids'],{'transaction':_0x10db2d})[_0x67d5('0x28')](function(){if(!_[_0x67d5('0x81')](_0x163094)){return _0x1b3467[_0x67d5('0x82')](_0x163094,{'transaction':_0x10db2d});}})['then'](function(){_0x163094[_0x67d5('0x6a')](function(_0x2e7d51){socket[_0x67d5('0x6b')](_0x67d5('0x83'),{'UserId':_0x2e7d51,'MailQueueId':_0x1b3467['id']});});});});});});})[_0x67d5('0x28')](respondWithStatusCode(_0x1066c2,null))[_0x67d5('0x47')](handleError(_0x1066c2,null));};exports[_0x67d5('0x84')]=function(_0x218d4a,_0x4939cb,_0x3819a5){return db[_0x67d5('0x30')]['find']({'where':{'id':_0x218d4a['params']['id']}})[_0x67d5('0x28')](handleEntityNotFound(_0x4939cb,null))[_0x67d5('0x28')](function(_0x376b30){if(_0x376b30){return _0x376b30['addAgents'](_0x218d4a[_0x67d5('0x4d')]['ids'],_[_0x67d5('0x85')](_0x218d4a[_0x67d5('0x4d')],[_0x67d5('0x6e'),'id'])||{})[_0x67d5('0x86')](function(_0x3e7ac8){for(var _0x56e0fc=0x0;_0x56e0fc<_0x218d4a[_0x67d5('0x4d')][_0x67d5('0x6e')][_0x67d5('0x3a')];_0x56e0fc+=0x1){socket[_0x67d5('0x6b')](_0x67d5('0x6c'),{'UserId':Number(_0x218d4a[_0x67d5('0x4d')]['ids'][_0x56e0fc]),'MailQueueId':Number(_0x218d4a[_0x67d5('0x49')]['id'])});}return _0x3e7ac8;});}})[_0x67d5('0x28')](respondWithResult(_0x4939cb,null))['catch'](handleError(_0x4939cb,null));};exports[_0x67d5('0x82')]=function(_0x19fb83,_0x1870c4,_0x17fefd){return db[_0x67d5('0x30')][_0x67d5('0x4b')]({'where':{'id':_0x19fb83['params']['id']}})['then'](handleEntityNotFound(_0x1870c4,null))[_0x67d5('0x28')](function(_0x1e1c2a){if(_0x1e1c2a){return _0x1e1c2a['removeAgents'](_0x19fb83[_0x67d5('0x35')]['ids'])[_0x67d5('0x28')](function(){if(_[_0x67d5('0x87')](_0x19fb83[_0x67d5('0x35')][_0x67d5('0x6e')])){for(var _0x23bdf1=0x0;_0x23bdf1<_0x19fb83[_0x67d5('0x35')][_0x67d5('0x6e')][_0x67d5('0x3a')];_0x23bdf1+=0x1){socket[_0x67d5('0x6b')](_0x67d5('0x83'),{'UserId':Number(_0x19fb83[_0x67d5('0x35')]['ids'][_0x23bdf1]),'MailQueueId':Number(_0x19fb83[_0x67d5('0x49')]['id'])});}}else{socket[_0x67d5('0x6b')](_0x67d5('0x83'),{'UserId':Number(_0x19fb83['query'][_0x67d5('0x6e')]),'MailQueueId':Number(_0x19fb83[_0x67d5('0x49')]['id'])});}});}})[_0x67d5('0x28')](respondWithStatusCode(_0x1870c4,null))[_0x67d5('0x47')](handleError(_0x1870c4,null));};exports[_0x67d5('0x88')]=function(_0x57b2e0,_0x9a55df,_0x2d2da1){var _0x881710={};var _0x36afbd={};var _0x21b901;var _0x1db426;return db[_0x67d5('0x30')]['findOne']({'where':{'id':_0x57b2e0[_0x67d5('0x49')]['id']}})[_0x67d5('0x28')](handleEntityNotFound(_0x9a55df,null))[_0x67d5('0x28')](function(_0x2eb0e5){if(_0x2eb0e5){_0x21b901=_0x2eb0e5;_0x36afbd[_0x67d5('0x34')]=_['keys'](db['User'][_0x67d5('0x31')]);_0x36afbd[_0x67d5('0x35')]=_[_0x67d5('0x4a')](_0x57b2e0[_0x67d5('0x35')]);_0x36afbd[_0x67d5('0x36')]=_[_0x67d5('0x37')](_0x36afbd[_0x67d5('0x34')],_0x36afbd[_0x67d5('0x35')]);_0x881710[_0x67d5('0x39')]=_[_0x67d5('0x37')](_0x36afbd[_0x67d5('0x34')],qs['fields'](_0x57b2e0[_0x67d5('0x35')][_0x67d5('0x38')]));_0x881710[_0x67d5('0x39')]=_0x881710[_0x67d5('0x39')]['length']?_0x881710['attributes']:_0x36afbd[_0x67d5('0x34')];_0x881710[_0x67d5('0x58')]=qs[_0x67d5('0x3d')](_0x57b2e0[_0x67d5('0x35')][_0x67d5('0x3d')]);_0x881710[_0x67d5('0x40')]=qs[_0x67d5('0x36')](_[_0x67d5('0x62')](_0x57b2e0[_0x67d5('0x35')],_0x36afbd['filters']));if(_0x57b2e0[_0x67d5('0x35')][_0x67d5('0x3e')]){_0x881710[_0x67d5('0x40')]=_[_0x67d5('0x3f')](_0x881710['where'],{'$or':_[_0x67d5('0x41')](_0x881710[_0x67d5('0x39')],function(_0x51a0ce){var _0x2a1ac9={};_0x2a1ac9[_0x51a0ce]={'$like':'%'+_0x57b2e0[_0x67d5('0x35')][_0x67d5('0x3e')]+'%'};return _0x2a1ac9;})});}_0x881710=_['merge']({},_0x881710,_0x57b2e0[_0x67d5('0x43')]);return _0x21b901[_0x67d5('0x88')](_0x881710);}})[_0x67d5('0x28')](function(_0x4c3948){if(_0x4c3948){_0x1db426=_0x4c3948[_0x67d5('0x3a')];if(!_0x57b2e0[_0x67d5('0x35')][_0x67d5('0x3b')]('nolimit')){_0x881710['limit']=qs['limit'](_0x57b2e0[_0x67d5('0x35')]['limit']);_0x881710[_0x67d5('0x1f')]=qs[_0x67d5('0x1f')](_0x57b2e0['query'][_0x67d5('0x1f')]);}return _0x21b901[_0x67d5('0x88')](_0x881710);}})[_0x67d5('0x28')](function(_0x38a65d){if(_0x38a65d){return _0x38a65d?{'count':_0x1db426,'rows':_0x38a65d}:null;}})['then'](respondWithResult(_0x9a55df,null))[_0x67d5('0x47')](handleError(_0x9a55df,null));};
\ No newline at end of file
index 6407dae..b48abac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b32=['setMaxListeners','save','update','remove','emit','hook','events','../../mysqldb','MailQueue'];(function(_0x3f2133,_0x32baf0){var _0x4754ab=function(_0x3b5fb8){while(--_0x3b5fb8){_0x3f2133['push'](_0x3f2133['shift']());}};_0x4754ab(++_0x32baf0);}(_0x6b32,0x15c));var _0x26b3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6b32[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x26b3('0x0'));var MailQueue=require(_0x26b3('0x1'))['db'][_0x26b3('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x26b3('0x3')](0x0);var events={'afterCreate':_0x26b3('0x4'),'afterUpdate':_0x26b3('0x5'),'afterDestroy':_0x26b3('0x6')};function emitEvent(_0xb26eaf){return function(_0x40eeac,_0x304713,_0x1bdf71){MailQueueEvents[_0x26b3('0x7')](_0xb26eaf+':'+_0x40eeac['id'],_0x40eeac);MailQueueEvents[_0x26b3('0x7')](_0xb26eaf,_0x40eeac);_0x1bdf71(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x26b3('0x8')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0x3189=['events','setMaxListeners','save','emit','hook','exports'];(function(_0x4b2036,_0x579834){var _0x509afb=function(_0x2e218d){while(--_0x2e218d){_0x4b2036['push'](_0x4b2036['shift']());}};_0x509afb(++_0x579834);}(_0x3189,0x7e));var _0x9318=function(_0x255461,_0x408dd6){_0x255461=_0x255461-0x0;var _0x418d43=_0x3189[_0x255461];return _0x418d43;};'use strict';var EventEmitter=require(_0x9318('0x0'));var MailQueue=require('../../mysqldb')['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x9318('0x1')](0x0);var events={'afterCreate':_0x9318('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1bfeed){return function(_0x22c044,_0x25029e,_0x600483){MailQueueEvents[_0x9318('0x3')](_0x1bfeed+':'+_0x22c044['id'],_0x22c044);MailQueueEvents[_0x9318('0x3')](_0x1bfeed,_0x22c044);_0x600483(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x9318('0x4')](e,emitEvent(event));}}module[_0x9318('0x5')]=MailQueueEvents;
\ No newline at end of file
index a0c9e14..f85d7bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c09=['moment','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','define','MailQueue','mail_queues','lodash','util','../../config/logger','api'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2c09,0x127));var _0x92c0=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x2c09[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x92c0('0x0'));var util=require(_0x92c0('0x1'));var logger=require(_0x92c0('0x2'))(_0x92c0('0x3'));var moment=require(_0x92c0('0x4'));var BPromise=require('bluebird');var rp=require(_0x92c0('0x5'));var fs=require('fs');var path=require(_0x92c0('0x6'));var rimraf=require(_0x92c0('0x7'));var config=require(_0x92c0('0x8'));var attributes=require(_0x92c0('0x9'));module['exports']=function(_0x30ad3a,_0x55acc3){return _0x30ad3a[_0x92c0('0xa')](_0x92c0('0xb'),attributes,{'tableName':_0x92c0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd077=['moment','request-promise','path','rimraf','./mailQueue.attributes','exports','define','mail_queues','lodash','util','../../config/logger'];(function(_0x135caf,_0x2fcc90){var _0x25f41f=function(_0x2c089b){while(--_0x2c089b){_0x135caf['push'](_0x135caf['shift']());}};_0x25f41f(++_0x2fcc90);}(_0xd077,0xb8));var _0x7d07=function(_0xfdbc0,_0x3d360d){_0xfdbc0=_0xfdbc0-0x0;var _0x2e8d80=_0xd077[_0xfdbc0];return _0x2e8d80;};'use strict';var _=require(_0x7d07('0x0'));var util=require(_0x7d07('0x1'));var logger=require(_0x7d07('0x2'))('api');var moment=require(_0x7d07('0x3'));var BPromise=require('bluebird');var rp=require(_0x7d07('0x4'));var fs=require('fs');var path=require(_0x7d07('0x5'));var rimraf=require(_0x7d07('0x6'));var config=require('../../config/environment');var attributes=require(_0x7d07('0x7'));module[_0x7d07('0x8')]=function(_0x33add9,_0x277c3a){return _0x33add9[_0x7d07('0x9')]('MailQueue',attributes,{'tableName':_0x7d07('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4beb9a3..d415162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d99=['defaults','localhost','socket.io-emitter','./mailQueue.socket','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetMailQueue','options','raw','attributes','limit','map','include','model','catch','ShowMailQueue','MailQueue','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','redis'];(function(_0x4e9d3c,_0x1f4b98){var _0x2d0825=function(_0x384676){while(--_0x384676){_0x4e9d3c['push'](_0x4e9d3c['shift']());}};_0x2d0825(++_0x1f4b98);}(_0x0d99,0x1d4));var _0x90d9=function(_0x30dea6,_0x45559f){_0x30dea6=_0x30dea6-0x0;var _0x1a70bd=_0x0d99[_0x30dea6];return _0x1a70bd;};'use strict';var _=require(_0x90d9('0x0'));var util=require(_0x90d9('0x1'));var moment=require(_0x90d9('0x2'));var BPromise=require(_0x90d9('0x3'));var rs=require(_0x90d9('0x4'));var fs=require('fs');var Redis=require(_0x90d9('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x90d9('0x6'));var logger=require(_0x90d9('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x90d9('0x8'));var client=jayson[_0x90d9('0x9')][_0x90d9('0xa')]({'port':0x232a});config[_0x90d9('0xb')]=_[_0x90d9('0xc')](config[_0x90d9('0xb')],{'host':_0x90d9('0xd'),'port':0x18eb});var socket=require(_0x90d9('0xe'))(new Redis(config[_0x90d9('0xb')]));require(_0x90d9('0xf'))['register'](socket);function respondWithRpcPromise(_0x3274ed,_0x46a9c9,_0x31e620){return new BPromise(function(_0x384a30,_0x3ffc2b){return client[_0x90d9('0x10')](_0x3274ed,_0x31e620)[_0x90d9('0x11')](function(_0x4ee4bf){logger[_0x90d9('0x12')](_0x90d9('0x13'),_0x46a9c9,_0x90d9('0x14'));logger[_0x90d9('0x15')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x46a9c9,_0x90d9('0x14'),JSON[_0x90d9('0x16')](_0x4ee4bf));if(_0x4ee4bf[_0x90d9('0x17')]){if(_0x4ee4bf[_0x90d9('0x17')][_0x90d9('0x18')]===0x1f4){logger['error'](_0x90d9('0x13'),_0x46a9c9,_0x4ee4bf[_0x90d9('0x17')]['message']);return _0x3ffc2b(_0x4ee4bf[_0x90d9('0x17')][_0x90d9('0x19')]);}logger[_0x90d9('0x17')](_0x90d9('0x13'),_0x46a9c9,_0x4ee4bf['error'][_0x90d9('0x19')]);return _0x384a30(_0x4ee4bf[_0x90d9('0x17')][_0x90d9('0x19')]);}else{logger[_0x90d9('0x12')](_0x90d9('0x13'),_0x46a9c9,_0x90d9('0x14'));_0x384a30(_0x4ee4bf[_0x90d9('0x1a')]['message']);}})['catch'](function(_0xa46e4c){logger[_0x90d9('0x17')](_0x90d9('0x13'),_0x46a9c9,_0xa46e4c);_0x3ffc2b(_0xa46e4c);});});}exports[_0x90d9('0x1b')]=function(_0x555aa1){var _0x4e1c14=this;return new Promise(function(_0x5654e4,_0x37e0e4){return db['MailQueue']['findAll']({'raw':_0x555aa1[_0x90d9('0x1c')]?_0x555aa1['options'][_0x90d9('0x1d')]===undefined?!![]:![]:!![],'where':_0x555aa1[_0x90d9('0x1c')]?_0x555aa1[_0x90d9('0x1c')]['where']||null:null,'attributes':_0x555aa1[_0x90d9('0x1c')]?_0x555aa1['options'][_0x90d9('0x1e')]||null:null,'limit':_0x555aa1[_0x90d9('0x1c')]?_0x555aa1[_0x90d9('0x1c')][_0x90d9('0x1f')]||null:null,'include':_0x555aa1[_0x90d9('0x1c')]?_0x555aa1[_0x90d9('0x1c')]['include']?_[_0x90d9('0x20')](_0x555aa1[_0x90d9('0x1c')][_0x90d9('0x21')],function(_0x548f5e){return{'model':db[_0x548f5e['model']],'as':_0x548f5e['as'],'attributes':_0x548f5e[_0x90d9('0x1e')],'include':_0x548f5e['include']?_[_0x90d9('0x20')](_0x548f5e[_0x90d9('0x21')],function(_0xaa6731){return{'model':db[_0xaa6731['model']],'as':_0xaa6731['as'],'attributes':_0xaa6731[_0x90d9('0x1e')],'include':_0xaa6731['include']?_['map'](_0xaa6731[_0x90d9('0x21')],function(_0x2c1f8b){return{'model':db[_0x2c1f8b[_0x90d9('0x22')]],'as':_0x2c1f8b['as'],'attributes':_0x2c1f8b[_0x90d9('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x90d9('0x11')](function(_0x41c680){logger[_0x90d9('0x12')](_0x90d9('0x1b'),_0x555aa1);logger[_0x90d9('0x15')](_0x90d9('0x1b'),_0x555aa1,JSON['stringify'](_0x41c680));_0x5654e4(_0x41c680);})[_0x90d9('0x23')](function(_0xe03e7a){logger[_0x90d9('0x17')](_0x90d9('0x1b'),_0xe03e7a[_0x90d9('0x19')],_0x555aa1);_0x37e0e4(_0x4e1c14[_0x90d9('0x17')](0x1f4,_0xe03e7a[_0x90d9('0x19')]));});});};exports[_0x90d9('0x24')]=function(_0x4237eb){var _0x559acf=this;return new Promise(function(_0x38b08e,_0x3e59a4){return db[_0x90d9('0x25')][_0x90d9('0x26')]({'raw':_0x4237eb[_0x90d9('0x1c')]?_0x4237eb[_0x90d9('0x1c')][_0x90d9('0x1d')]===undefined?!![]:![]:!![],'where':_0x4237eb['options']?_0x4237eb[_0x90d9('0x1c')][_0x90d9('0x27')]||null:null,'attributes':_0x4237eb[_0x90d9('0x1c')]?_0x4237eb[_0x90d9('0x1c')][_0x90d9('0x1e')]||null:null,'include':_0x4237eb['options']?_0x4237eb[_0x90d9('0x1c')][_0x90d9('0x21')]?_['map'](_0x4237eb[_0x90d9('0x1c')][_0x90d9('0x21')],function(_0xef66f6){return{'model':db[_0xef66f6['model']],'as':_0xef66f6['as'],'attributes':_0xef66f6[_0x90d9('0x1e')],'include':_0xef66f6['include']?_[_0x90d9('0x20')](_0xef66f6['include'],function(_0x5c3be3){return{'model':db[_0x5c3be3[_0x90d9('0x22')]],'as':_0x5c3be3['as'],'attributes':_0x5c3be3[_0x90d9('0x1e')],'include':_0x5c3be3[_0x90d9('0x21')]?_[_0x90d9('0x20')](_0x5c3be3[_0x90d9('0x21')],function(_0x56b970){return{'model':db[_0x56b970['model']],'as':_0x56b970['as'],'attributes':_0x56b970[_0x90d9('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x90d9('0x11')](function(_0xf7df78){logger['info']('ShowMailQueue',_0x4237eb);logger['debug'](_0x90d9('0x24'),_0x4237eb,JSON[_0x90d9('0x16')](_0xf7df78));_0x38b08e(_0xf7df78);})['catch'](function(_0x2ce8ee){logger[_0x90d9('0x17')]('ShowMailQueue',_0x2ce8ee[_0x90d9('0x19')],_0x4237eb);_0x3e59a4(_0x559acf[_0x90d9('0x17')](0x1f4,_0x2ce8ee[_0x90d9('0x19')]));});});};
\ No newline at end of file
+var _0x2baf=['catch','ShowMailQueue','find','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise','http','defaults','localhost','redis','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','MailQueue','findAll','options','where','attributes','limit','include','map','model','GetMailQueue'];(function(_0x1df7b8,_0x2fe5e5){var _0x29d911=function(_0x340121){while(--_0x340121){_0x1df7b8['push'](_0x1df7b8['shift']());}};_0x29d911(++_0x2fe5e5);}(_0x2baf,0xe7));var _0xf2ba=function(_0x368587,_0x1b6554){_0x368587=_0x368587-0x0;var _0x42d33c=_0x2baf[_0x368587];return _0x42d33c;};'use strict';var _=require(_0xf2ba('0x0'));var util=require(_0xf2ba('0x1'));var moment=require(_0xf2ba('0x2'));var BPromise=require(_0xf2ba('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf2ba('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf2ba('0x5'));var logger=require('../../config/logger')(_0xf2ba('0x6'));var config=require('../../config/environment');var jayson=require(_0xf2ba('0x7'));var client=jayson['client'][_0xf2ba('0x8')]({'port':0x232a});config['redis']=_[_0xf2ba('0x9')](config['redis'],{'host':_0xf2ba('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf2ba('0xb')]));require(_0xf2ba('0xc'))[_0xf2ba('0xd')](socket);function respondWithRpcPromise(_0x552cdc,_0x2f21cd,_0x42c9f3){return new BPromise(function(_0x2847ad,_0x11d333){return client[_0xf2ba('0xe')](_0x552cdc,_0x42c9f3)[_0xf2ba('0xf')](function(_0x1a70f3){logger[_0xf2ba('0x10')](_0xf2ba('0x11'),_0x2f21cd,_0xf2ba('0x12'));logger['debug'](_0xf2ba('0x13'),_0x2f21cd,_0xf2ba('0x12'),JSON[_0xf2ba('0x14')](_0x1a70f3));if(_0x1a70f3[_0xf2ba('0x15')]){if(_0x1a70f3['error'][_0xf2ba('0x16')]===0x1f4){logger[_0xf2ba('0x15')](_0xf2ba('0x11'),_0x2f21cd,_0x1a70f3[_0xf2ba('0x15')][_0xf2ba('0x17')]);return _0x11d333(_0x1a70f3['error'][_0xf2ba('0x17')]);}logger[_0xf2ba('0x15')](_0xf2ba('0x11'),_0x2f21cd,_0x1a70f3['error'][_0xf2ba('0x17')]);return _0x2847ad(_0x1a70f3[_0xf2ba('0x15')][_0xf2ba('0x17')]);}else{logger['info'](_0xf2ba('0x11'),_0x2f21cd,_0xf2ba('0x12'));_0x2847ad(_0x1a70f3[_0xf2ba('0x18')]['message']);}})['catch'](function(_0x330f61){logger[_0xf2ba('0x15')](_0xf2ba('0x11'),_0x2f21cd,_0x330f61);_0x11d333(_0x330f61);});});}exports['GetMailQueue']=function(_0x2e437e){var _0x1b1e78=this;return new Promise(function(_0x28fbf6,_0x56b30a){return db[_0xf2ba('0x19')][_0xf2ba('0x1a')]({'raw':_0x2e437e[_0xf2ba('0x1b')]?_0x2e437e[_0xf2ba('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x2e437e[_0xf2ba('0x1b')]?_0x2e437e[_0xf2ba('0x1b')][_0xf2ba('0x1c')]||null:null,'attributes':_0x2e437e[_0xf2ba('0x1b')]?_0x2e437e[_0xf2ba('0x1b')][_0xf2ba('0x1d')]||null:null,'limit':_0x2e437e[_0xf2ba('0x1b')]?_0x2e437e['options'][_0xf2ba('0x1e')]||null:null,'include':_0x2e437e[_0xf2ba('0x1b')]?_0x2e437e[_0xf2ba('0x1b')][_0xf2ba('0x1f')]?_[_0xf2ba('0x20')](_0x2e437e[_0xf2ba('0x1b')][_0xf2ba('0x1f')],function(_0x5cfbd0){return{'model':db[_0x5cfbd0[_0xf2ba('0x21')]],'as':_0x5cfbd0['as'],'attributes':_0x5cfbd0['attributes'],'include':_0x5cfbd0[_0xf2ba('0x1f')]?_['map'](_0x5cfbd0[_0xf2ba('0x1f')],function(_0xc0e77c){return{'model':db[_0xc0e77c[_0xf2ba('0x21')]],'as':_0xc0e77c['as'],'attributes':_0xc0e77c[_0xf2ba('0x1d')],'include':_0xc0e77c['include']?_['map'](_0xc0e77c[_0xf2ba('0x1f')],function(_0xb71c04){return{'model':db[_0xb71c04[_0xf2ba('0x21')]],'as':_0xb71c04['as'],'attributes':_0xb71c04['attributes']};}):[]};}):[]};}):[]:[]})[_0xf2ba('0xf')](function(_0x1db6dc){logger[_0xf2ba('0x10')](_0xf2ba('0x22'),_0x2e437e);logger['debug'](_0xf2ba('0x22'),_0x2e437e,JSON[_0xf2ba('0x14')](_0x1db6dc));_0x28fbf6(_0x1db6dc);})[_0xf2ba('0x23')](function(_0x131aa2){logger[_0xf2ba('0x15')](_0xf2ba('0x22'),_0x131aa2[_0xf2ba('0x17')],_0x2e437e);_0x56b30a(_0x1b1e78[_0xf2ba('0x15')](0x1f4,_0x131aa2[_0xf2ba('0x17')]));});});};exports[_0xf2ba('0x24')]=function(_0x42fa76){var _0x2da07f=this;return new Promise(function(_0x17d29d,_0x52ae44){return db[_0xf2ba('0x19')][_0xf2ba('0x25')]({'raw':_0x42fa76[_0xf2ba('0x1b')]?_0x42fa76[_0xf2ba('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x42fa76[_0xf2ba('0x1b')]?_0x42fa76[_0xf2ba('0x1b')][_0xf2ba('0x1c')]||null:null,'attributes':_0x42fa76[_0xf2ba('0x1b')]?_0x42fa76[_0xf2ba('0x1b')][_0xf2ba('0x1d')]||null:null,'include':_0x42fa76[_0xf2ba('0x1b')]?_0x42fa76[_0xf2ba('0x1b')]['include']?_[_0xf2ba('0x20')](_0x42fa76[_0xf2ba('0x1b')][_0xf2ba('0x1f')],function(_0x4d9335){return{'model':db[_0x4d9335[_0xf2ba('0x21')]],'as':_0x4d9335['as'],'attributes':_0x4d9335[_0xf2ba('0x1d')],'include':_0x4d9335[_0xf2ba('0x1f')]?_['map'](_0x4d9335[_0xf2ba('0x1f')],function(_0x3b1cd3){return{'model':db[_0x3b1cd3[_0xf2ba('0x21')]],'as':_0x3b1cd3['as'],'attributes':_0x3b1cd3[_0xf2ba('0x1d')],'include':_0x3b1cd3[_0xf2ba('0x1f')]?_[_0xf2ba('0x20')](_0x3b1cd3[_0xf2ba('0x1f')],function(_0x1fd917){return{'model':db[_0x1fd917['model']],'as':_0x1fd917['as'],'attributes':_0x1fd917[_0xf2ba('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf2ba('0xf')](function(_0x3dedd1){logger[_0xf2ba('0x10')]('ShowMailQueue',_0x42fa76);logger['debug'](_0xf2ba('0x24'),_0x42fa76,JSON['stringify'](_0x3dedd1));_0x17d29d(_0x3dedd1);})[_0xf2ba('0x23')](function(_0xc814b4){logger[_0xf2ba('0x15')](_0xf2ba('0x24'),_0xc814b4['message'],_0x42fa76);_0x52ae44(_0x2da07f[_0xf2ba('0x15')](0x1f4,_0xc814b4[_0xf2ba('0x17')]));});});};
\ No newline at end of file
index 5a717e5..78c781f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1cb=['emit','removeListener','register','length','./mailQueue.events','remove','update'];(function(_0x506cbe,_0x818678){var _0x4fdaa7=function(_0x28db18){while(--_0x28db18){_0x506cbe['push'](_0x506cbe['shift']());}};_0x4fdaa7(++_0x818678);}(_0xf1cb,0x6d));var _0xbf1c=function(_0x5b3a3c,_0x4f5d7e){_0x5b3a3c=_0x5b3a3c-0x0;var _0x5b8add=_0xf1cb[_0x5b3a3c];return _0x5b8add;};'use strict';var MailQueueEvents=require(_0xbf1c('0x0'));var events=['save',_0xbf1c('0x1'),_0xbf1c('0x2')];function createListener(_0x3990d1,_0x5ec7d3){return function(_0x2fb889){_0x5ec7d3[_0xbf1c('0x3')](_0x3990d1,_0x2fb889);};}function removeListener(_0x189aec,_0x377fe5){return function(){MailQueueEvents[_0xbf1c('0x4')](_0x189aec,_0x377fe5);};}exports[_0xbf1c('0x5')]=function(_0x1341eb){for(var _0x3897dd=0x0,_0x541778=events[_0xbf1c('0x6')];_0x3897dd<_0x541778;_0x3897dd++){var _0x84839e=events[_0x3897dd];var _0xd6e720=createListener('mailQueue:'+_0x84839e,_0x1341eb);MailQueueEvents['on'](_0x84839e,_0xd6e720);}};
\ No newline at end of file
+var _0xc288=['save','remove','update','emit','removeListener','register','length','mailQueue:','./mailQueue.events'];(function(_0x495123,_0x2bf158){var _0x39e1ee=function(_0x226778){while(--_0x226778){_0x495123['push'](_0x495123['shift']());}};_0x39e1ee(++_0x2bf158);}(_0xc288,0x1d3));var _0x8c28=function(_0x4ce90b,_0x2e0470){_0x4ce90b=_0x4ce90b-0x0;var _0xce5ff7=_0xc288[_0x4ce90b];return _0xce5ff7;};'use strict';var MailQueueEvents=require(_0x8c28('0x0'));var events=[_0x8c28('0x1'),_0x8c28('0x2'),_0x8c28('0x3')];function createListener(_0xa6ecc1,_0x352b1b){return function(_0x2bedb9){_0x352b1b[_0x8c28('0x4')](_0xa6ecc1,_0x2bedb9);};}function removeListener(_0x6c29fd,_0x43c496){return function(){MailQueueEvents[_0x8c28('0x5')](_0x6c29fd,_0x43c496);};}exports[_0x8c28('0x6')]=function(_0x3d124c){for(var _0x2240c7=0x0,_0x2ff095=events[_0x8c28('0x7')];_0x2240c7<_0x2ff095;_0x2240c7++){var _0x6aa073=events[_0x2240c7];var _0x4f2c15=createListener(_0x8c28('0x8')+_0x6aa073,_0x3d124c);MailQueueEvents['on'](_0x6aa073,_0x4f2c15);}};
\ No newline at end of file
index 3bcfb28..5da270a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd22e=['/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index'];(function(_0x468290,_0x1f1de7){var _0x16c3ae=function(_0x2225aa){while(--_0x2225aa){_0x468290['push'](_0x468290['shift']());}};_0x16c3ae(++_0x1f1de7);}(_0xd22e,0x1bf));var _0xed22=function(_0x517474,_0xbc4833){_0x517474=_0x517474-0x0;var _0x29d141=_0xd22e[_0x517474];return _0x29d141;};'use strict';var multer=require(_0xed22('0x0'));var util=require('util');var path=require(_0xed22('0x1'));var timeout=require(_0xed22('0x2'));var express=require(_0xed22('0x3'));var router=express[_0xed22('0x4')]();var fs_extra=require(_0xed22('0x5'));var auth=require(_0xed22('0x6'));var interaction=require(_0xed22('0x7'));var config=require(_0xed22('0x8'));var controller=require(_0xed22('0x9'));router[_0xed22('0xa')]('/',auth[_0xed22('0xb')](),controller[_0xed22('0xc')]);router[_0xed22('0xa')](_0xed22('0xd'),auth[_0xed22('0xb')](),controller[_0xed22('0xe')]);router['get'](_0xed22('0xf'),auth['isAuthenticated'](),controller[_0xed22('0x10')]);router[_0xed22('0x11')]('/',auth[_0xed22('0xb')](),controller[_0xed22('0x12')]);router[_0xed22('0x13')](_0xed22('0xf'),auth[_0xed22('0xb')](),controller[_0xed22('0x14')]);router[_0xed22('0x15')](_0xed22('0xf'),auth['isAuthenticated'](),controller[_0xed22('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x1061=['exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy'];(function(_0x2c6810,_0x23c079){var _0x213881=function(_0x528021){while(--_0x528021){_0x2c6810['push'](_0x2c6810['shift']());}};_0x213881(++_0x23c079);}(_0x1061,0x1a5));var _0x1106=function(_0x19e4e9,_0x4e2630){_0x19e4e9=_0x19e4e9-0x0;var _0x5a4c0f=_0x1061[_0x19e4e9];return _0x5a4c0f;};'use strict';var multer=require('multer');var util=require(_0x1106('0x0'));var path=require(_0x1106('0x1'));var timeout=require('connect-timeout');var express=require(_0x1106('0x2'));var router=express[_0x1106('0x3')]();var fs_extra=require(_0x1106('0x4'));var auth=require(_0x1106('0x5'));var interaction=require(_0x1106('0x6'));var config=require(_0x1106('0x7'));var controller=require(_0x1106('0x8'));router[_0x1106('0x9')]('/',auth[_0x1106('0xa')](),controller[_0x1106('0xb')]);router[_0x1106('0x9')]('/describe',auth[_0x1106('0xa')](),controller['describe']);router['get'](_0x1106('0xc'),auth[_0x1106('0xa')](),controller[_0x1106('0xd')]);router[_0x1106('0xe')]('/',auth['isAuthenticated'](),controller[_0x1106('0xf')]);router['put'](_0x1106('0xc'),auth[_0x1106('0xa')](),controller[_0x1106('0x10')]);router[_0x1106('0x11')](_0x1106('0xc'),auth[_0x1106('0xa')](),controller[_0x1106('0x12')]);module[_0x1106('0x13')]=router;
\ No newline at end of file
index 5560f81..22f3984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1135=['DATE','moment','exports','STRING'];(function(_0x1b98cf,_0x2747fa){var _0x41ec4b=function(_0x10143c){while(--_0x10143c){_0x1b98cf['push'](_0x1b98cf['shift']());}};_0x41ec4b(++_0x2747fa);}(_0x1135,0x119));var _0x5113=function(_0x471f78,_0x425841){_0x471f78=_0x471f78-0x0;var _0x3a2cba=_0x1135[_0x471f78];return _0x3a2cba;};'use strict';var moment=require(_0x5113('0x0'));var Sequelize=require('sequelize');module[_0x5113('0x1')]={'uniqueid':{'type':Sequelize[_0x5113('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x5113('0x2')]},'joinAt':{'type':Sequelize[_0x5113('0x3')]},'leaveAt':{'type':Sequelize[_0x5113('0x3')]},'acceptAt':{'type':Sequelize[_0x5113('0x3')]},'exitAt':{'type':Sequelize[_0x5113('0x3')]},'reason':{'type':Sequelize[_0x5113('0x2')]}};
\ No newline at end of file
+var _0x5482=['exports','STRING','DATE','moment','sequelize'];(function(_0x4e5552,_0x19ec4e){var _0x60a338=function(_0x40c70e){while(--_0x40c70e){_0x4e5552['push'](_0x4e5552['shift']());}};_0x60a338(++_0x19ec4e);}(_0x5482,0xf8));var _0x2548=function(_0x1c4b44,_0x2377de){_0x1c4b44=_0x1c4b44-0x0;var _0x10d72b=_0x5482[_0x1c4b44];return _0x10d72b;};'use strict';var moment=require(_0x2548('0x0'));var Sequelize=require(_0x2548('0x1'));module[_0x2548('0x2')]={'uniqueid':{'type':Sequelize[_0x2548('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x2548('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x2548('0x4')]},'acceptAt':{'type':Sequelize[_0x2548('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index fe07c83..918146d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d4=['save','update','then','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','filter','options','includeAll','findAll','rows','catch','show','params','include','merge','find','create','body','describe','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','json','apply','reject'];(function(_0x330a51,_0x42c33b){var _0x55aa63=function(_0x5ddc09){while(--_0x5ddc09){_0x330a51['push'](_0x330a51['shift']());}};_0x55aa63(++_0x42c33b);}(_0x77d4,0x108));var _0x477d=function(_0x3572b3,_0x593ffe){_0x3572b3=_0x3572b3-0x0;var _0x55e4aa=_0x77d4[_0x3572b3];return _0x55e4aa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x477d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x477d('0x1'));var rp=require('request-promise');var moment=require(_0x477d('0x2'));var BPromise=require(_0x477d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x477d('0x4'));var sox=require(_0x477d('0x5'));var csv=require(_0x477d('0x6'));var ejs=require(_0x477d('0x7'));var fs=require('fs');var fs_extra=require(_0x477d('0x8'));var _=require(_0x477d('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x477d('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x477d('0xb'));var Papa=require(_0x477d('0xc'));var Redis=require(_0x477d('0xd'));var authService=require(_0x477d('0xe'));var qs=require(_0x477d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x477d('0x10'));var logger=require('../../config/logger')(_0x477d('0x11'));var utils=require(_0x477d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x477d('0x13'));var db=require(_0x477d('0x14'))['db'];function respondWithStatusCode(_0x5a190c,_0x5dd33c){_0x5dd33c=_0x5dd33c||0xcc;return function(_0x6ff724){if(_0x6ff724){return _0x5a190c[_0x477d('0x15')](_0x5dd33c);}return _0x5a190c['status'](_0x5dd33c)[_0x477d('0x16')]();};}function respondWithResult(_0x1d5699,_0x48c73a){_0x48c73a=_0x48c73a||0xc8;return function(_0x4b2021){if(_0x4b2021){return _0x1d5699[_0x477d('0x17')](_0x48c73a)['json'](_0x4b2021);}};}function respondWithFilteredResult(_0x30481f,_0x234b99){return function(_0x25fc02){if(_0x25fc02){var _0x5985b5=typeof _0x234b99[_0x477d('0x18')]===_0x477d('0x19')&&typeof _0x234b99[_0x477d('0x1a')]===_0x477d('0x19');var _0x57b38e=_0x25fc02[_0x477d('0x1b')];var _0x5d5553=_0x5985b5?0x0:_0x234b99[_0x477d('0x18')];var _0x1399d7=_0x5985b5?_0x25fc02[_0x477d('0x1b')]:_0x234b99[_0x477d('0x18')]+_0x234b99[_0x477d('0x1a')];var _0x2145ce;if(_0x1399d7>=_0x57b38e){_0x1399d7=_0x57b38e;_0x2145ce=0xc8;}else{_0x2145ce=0xce;}_0x30481f['status'](_0x2145ce);return _0x30481f[_0x477d('0x1c')]('Content-Range',_0x5d5553+'-'+_0x1399d7+'/'+_0x57b38e)[_0x477d('0x1d')](_0x25fc02);}return null;};}function patchUpdates(_0x24a6d5){return function(_0x40256e){try{jsonpatch[_0x477d('0x1e')](_0x40256e,_0x24a6d5,!![]);}catch(_0x27b3aa){return BPromise[_0x477d('0x1f')](_0x27b3aa);}return _0x40256e[_0x477d('0x20')]();};}function saveUpdates(_0x17154d,_0x45a8bd){return function(_0x5981a){if(_0x5981a){return _0x5981a[_0x477d('0x21')](_0x17154d)[_0x477d('0x22')](function(_0x43c845){return _0x43c845;});}return null;};}function removeEntity(_0x1f3868,_0x4e6a44){return function(_0x4481b0){if(_0x4481b0){return _0x4481b0['destroy']()[_0x477d('0x22')](function(){_0x1f3868[_0x477d('0x17')](0xcc)[_0x477d('0x16')]();});}};}function handleEntityNotFound(_0x2287b4,_0x4bb50e){return function(_0xd6dca5){if(!_0xd6dca5){_0x2287b4[_0x477d('0x15')](0x194);}return _0xd6dca5;};}function handleError(_0x1ca4fe,_0x48ee5e){_0x48ee5e=_0x48ee5e||0x1f4;return function(_0x585648){logger[_0x477d('0x23')](_0x585648[_0x477d('0x24')]);if(_0x585648[_0x477d('0x25')]){delete _0x585648['name'];}_0x1ca4fe[_0x477d('0x17')](_0x48ee5e)[_0x477d('0x26')](_0x585648);};}exports[_0x477d('0x27')]=function(_0xe4dd40,_0x37b332){var _0x537fc4={},_0x2fc959={},_0xeb02f5={'count':0x0,'rows':[]};var _0x17dd16=_[_0x477d('0x28')](db[_0x477d('0x29')][_0x477d('0x2a')],function(_0x180046){return{'name':_0x180046[_0x477d('0x2b')],'type':_0x180046[_0x477d('0x2c')][_0x477d('0x2d')]};});_0x2fc959[_0x477d('0x2e')]=_[_0x477d('0x28')](_0x17dd16,_0x477d('0x25'));_0x2fc959[_0x477d('0x2f')]=_[_0x477d('0x30')](_0xe4dd40[_0x477d('0x2f')]);_0x2fc959[_0x477d('0x31')]=_[_0x477d('0x32')](_0x2fc959[_0x477d('0x2e')],_0x2fc959[_0x477d('0x2f')]);_0x537fc4['attributes']=_[_0x477d('0x32')](_0x2fc959['model'],qs[_0x477d('0x33')](_0xe4dd40[_0x477d('0x2f')][_0x477d('0x33')]));_0x537fc4['attributes']=_0x537fc4[_0x477d('0x34')][_0x477d('0x35')]?_0x537fc4[_0x477d('0x34')]:_0x2fc959[_0x477d('0x2e')];if(!_0xe4dd40[_0x477d('0x2f')][_0x477d('0x36')](_0x477d('0x37'))){_0x537fc4[_0x477d('0x1a')]=qs[_0x477d('0x1a')](_0xe4dd40[_0x477d('0x2f')]['limit']);_0x537fc4[_0x477d('0x18')]=qs[_0x477d('0x18')](_0xe4dd40[_0x477d('0x2f')]['offset']);}_0x537fc4[_0x477d('0x38')]=qs[_0x477d('0x39')](_0xe4dd40[_0x477d('0x2f')]['sort']);_0x537fc4['where']=qs[_0x477d('0x31')](_[_0x477d('0x3a')](_0xe4dd40[_0x477d('0x2f')],_0x2fc959[_0x477d('0x31')]),_0x17dd16);if(_0xe4dd40[_0x477d('0x2f')]['filter']){_0x537fc4[_0x477d('0x3b')]=_['merge'](_0x537fc4[_0x477d('0x3b')],{'$or':_[_0x477d('0x28')](_0x17dd16,function(_0x356f41){if(_0x356f41['type']!=='VIRTUAL'){var _0x184d50={};_0x184d50[_0x356f41[_0x477d('0x25')]]={'$like':'%'+_0xe4dd40[_0x477d('0x2f')][_0x477d('0x3c')]+'%'};return _0x184d50;}})});}_0x537fc4=_['merge']({},_0x537fc4,_0xe4dd40[_0x477d('0x3d')]);var _0xc091e={'where':_0x537fc4[_0x477d('0x3b')]};return db[_0x477d('0x29')][_0x477d('0x1b')](_0xc091e)['then'](function(_0x472149){_0xeb02f5[_0x477d('0x1b')]=_0x472149;if(_0xe4dd40['query'][_0x477d('0x3e')]){_0x537fc4['include']=[{'all':!![]}];}return db[_0x477d('0x29')][_0x477d('0x3f')](_0x537fc4);})[_0x477d('0x22')](function(_0x335b2a){_0xeb02f5[_0x477d('0x40')]=_0x335b2a;return _0xeb02f5;})[_0x477d('0x22')](respondWithFilteredResult(_0x37b332,_0x537fc4))[_0x477d('0x41')](handleError(_0x37b332,null));};exports[_0x477d('0x42')]=function(_0x43ffd1,_0x4c22f5){var _0x5759f={'raw':!![],'where':{'id':_0x43ffd1[_0x477d('0x43')]['id']}},_0x31c9a1={};_0x31c9a1[_0x477d('0x2e')]=_['keys'](db['MailQueueReport'][_0x477d('0x2a')]);_0x31c9a1[_0x477d('0x2f')]=_['keys'](_0x43ffd1[_0x477d('0x2f')]);_0x31c9a1['filters']=_['intersection'](_0x31c9a1[_0x477d('0x2e')],_0x31c9a1[_0x477d('0x2f')]);_0x5759f[_0x477d('0x34')]=_[_0x477d('0x32')](_0x31c9a1[_0x477d('0x2e')],qs[_0x477d('0x33')](_0x43ffd1['query'][_0x477d('0x33')]));_0x5759f[_0x477d('0x34')]=_0x5759f[_0x477d('0x34')][_0x477d('0x35')]?_0x5759f[_0x477d('0x34')]:_0x31c9a1['model'];if(_0x43ffd1['query'][_0x477d('0x3e')]){_0x5759f[_0x477d('0x44')]=[{'all':!![]}];}_0x5759f=_[_0x477d('0x45')]({},_0x5759f,_0x43ffd1['options']);return db[_0x477d('0x29')][_0x477d('0x46')](_0x5759f)[_0x477d('0x22')](handleEntityNotFound(_0x4c22f5,null))[_0x477d('0x22')](respondWithResult(_0x4c22f5,null))[_0x477d('0x41')](handleError(_0x4c22f5,null));};exports[_0x477d('0x47')]=function(_0x13f606,_0x4d4e19){return db[_0x477d('0x29')][_0x477d('0x47')](_0x13f606[_0x477d('0x48')],{})[_0x477d('0x22')](respondWithResult(_0x4d4e19,0xc9))[_0x477d('0x41')](handleError(_0x4d4e19,null));};exports[_0x477d('0x21')]=function(_0x2aad84,_0x30e474){if(_0x2aad84[_0x477d('0x48')]['id']){delete _0x2aad84[_0x477d('0x48')]['id'];}return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x2aad84[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x30e474,null))[_0x477d('0x22')](saveUpdates(_0x2aad84['body'],null))[_0x477d('0x22')](respondWithResult(_0x30e474,null))[_0x477d('0x41')](handleError(_0x30e474,null));};exports['destroy']=function(_0x566ba0,_0x5cb3ca){return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x566ba0[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x5cb3ca,null))[_0x477d('0x22')](removeEntity(_0x5cb3ca,null))[_0x477d('0x41')](handleError(_0x5cb3ca,null));};exports[_0x477d('0x49')]=function(_0x342f18,_0x593faf){return db[_0x477d('0x29')][_0x477d('0x49')]()[_0x477d('0x22')](respondWithResult(_0x593faf,null))[_0x477d('0x41')](handleError(_0x593faf,null));};
\ No newline at end of file
+var _0x7a54=['set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','MailQueueReport','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x4642d0,_0x1d5b64){var _0x22197f=function(_0x5b68b9){while(--_0x5b68b9){_0x4642d0['push'](_0x4642d0['shift']());}};_0x22197f(++_0x1d5b64);}(_0x7a54,0x106));var _0x47a5=function(_0x4a1720,_0x40c53d){_0x4a1720=_0x4a1720-0x0;var _0x287bc2=_0x7a54[_0x4a1720];return _0x287bc2;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['MailQueueReport'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['MailQueueReport']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['MailQueueReport']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x48')]=function(_0x1c9a62,_0x5f6a){return db['MailQueueReport'][_0x47a5('0x48')]()['then'](respondWithResult(_0x5f6a,null))[_0x47a5('0x46')](handleError(_0x5f6a,null));};
\ No newline at end of file
index efc7c37..41b3bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0648=['lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','define','report_mail_queue','uniqueid'];(function(_0x171b2f,_0x337677){var _0x4678d8=function(_0x160fce){while(--_0x160fce){_0x171b2f['push'](_0x171b2f['shift']());}};_0x4678d8(++_0x337677);}(_0x0648,0xb4));var _0x8064=function(_0xcb926f,_0x1aae7b){_0xcb926f=_0xcb926f-0x0;var _0x298269=_0x0648[_0xcb926f];return _0x298269;};'use strict';var _=require(_0x8064('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8064('0x1'));var moment=require('moment');var BPromise=require(_0x8064('0x2'));var rp=require(_0x8064('0x3'));var fs=require('fs');var path=require(_0x8064('0x4'));var rimraf=require(_0x8064('0x5'));var config=require(_0x8064('0x6'));var attributes=require(_0x8064('0x7'));module[_0x8064('0x8')]=function(_0xd6bfa,_0x4e31b7){return _0xd6bfa[_0x8064('0x9')]('MailQueueReport',attributes,{'tableName':_0x8064('0xa'),'paranoid':![],'indexes':[{'name':_0x8064('0xb'),'fields':[_0x8064('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a9a=['./mailQueueReport.attributes','define','MailQueueReport','report_mail_queue','uniqueid','lodash','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x187273,_0x42318a){var _0x3e91de=function(_0x2f214a){while(--_0x2f214a){_0x187273['push'](_0x187273['shift']());}};_0x3e91de(++_0x42318a);}(_0x0a9a,0x1a7));var _0xa0a9=function(_0x447188,_0x7fc1db){_0x447188=_0x447188-0x0;var _0x4bcaf2=_0x0a9a[_0x447188];return _0x4bcaf2;};'use strict';var _=require(_0xa0a9('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa0a9('0x1'));var rp=require(_0xa0a9('0x2'));var fs=require('fs');var path=require(_0xa0a9('0x3'));var rimraf=require(_0xa0a9('0x4'));var config=require(_0xa0a9('0x5'));var attributes=require(_0xa0a9('0x6'));module['exports']=function(_0x321752,_0xca31fa){return _0x321752[_0xa0a9('0x7')](_0xa0a9('0x8'),attributes,{'tableName':_0xa0a9('0x9'),'paranoid':![],'indexes':[{'name':_0xa0a9('0xa'),'fields':[_0xa0a9('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 51be29b..2dfe2d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['options','raw','UpdateMailQueueReport','where','attributes','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailQueueReport,\x20%s,\x20%s','MailQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateMailQueueReport','MailQueueReport','body'];(function(_0x46bfdd,_0x342b59){var _0x5e42c5=function(_0x4fe725){while(--_0x4fe725){_0x46bfdd['push'](_0x46bfdd['shift']());}};_0x5e42c5(++_0x342b59);}(_0x2ef3,0xba));var _0x32ef=function(_0x422da2,_0x2941bb){_0x422da2=_0x422da2-0x0;var _0x2d5049=_0x2ef3[_0x422da2];return _0x2d5049;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}exports[_0x32ef('0x15')]=function(_0x1a9476){var _0x286bfb=this;return new Promise(function(_0x57863c,_0xbe37f6){return db[_0x32ef('0x16')]['create'](_0x1a9476[_0x32ef('0x17')],{'raw':_0x1a9476[_0x32ef('0x18')]?_0x1a9476[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![]})[_0x32ef('0xb')](function(_0x3aec05){logger['info'](_0x32ef('0x15'),_0x1a9476);logger['debug'](_0x32ef('0x15'),_0x1a9476,JSON[_0x32ef('0x10')](_0x3aec05));_0x57863c(_0x3aec05);})['catch'](function(_0x1af371){logger[_0x32ef('0x11')](_0x32ef('0x15'),_0x1af371['message'],_0x1a9476);_0xbe37f6(_0x286bfb['error'](0x1f4,_0x1af371[_0x32ef('0x13')]));});});};exports[_0x32ef('0x1a')]=function(_0x225feb){var _0x478bef=this;return new Promise(function(_0x59585f,_0x19ea6){return db['MailQueueReport']['update'](_0x225feb[_0x32ef('0x17')],{'raw':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1b')]||null:null,'attributes':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1c')]||null:null,'limit':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')]['limit']||null:null})[_0x32ef('0xb')](function(_0x2f5d06){logger['info'](_0x32ef('0x1a'),_0x225feb);logger[_0x32ef('0x1d')](_0x32ef('0x1a'),_0x225feb,JSON[_0x32ef('0x10')](_0x2f5d06));_0x59585f(_0x2f5d06);})['catch'](function(_0x10e38c){logger[_0x32ef('0x11')](_0x32ef('0x1a'),_0x10e38c[_0x32ef('0x13')],_0x225feb);_0x19ea6(_0x478bef[_0x32ef('0x11')](0x1f4,_0x10e38c[_0x32ef('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x3ba6f4,_0x6f2e6a){var _0x306c37=function(_0x233d74){while(--_0x233d74){_0x3ba6f4['push'](_0x3ba6f4['shift']());}};_0x306c37(++_0x6f2e6a);}(_0x7a54,0x106));var _0x47a5=function(_0x280354,_0x20e58e){_0x280354=_0x280354-0x0;var _0x47eb44=_0x7a54[_0x280354];return _0x47eb44;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index dee9124..409dbff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x411bc2,_0x23d9d0){var _0x416dad=function(_0x4e2323){while(--_0x4e2323){_0x411bc2['push'](_0x411bc2['shift']());}};_0x416dad(++_0x23d9d0);}(_0x70e0,0x17b));var _0x070e=function(_0x1fbf0a,_0x4c287a){_0x1fbf0a=_0x1fbf0a-0x0;var _0xeeaaf6=_0x70e0[_0x1fbf0a];return _0xeeaaf6;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x454e6d,_0x1e1f38){var _0x4bc294=function(_0x2c803a){while(--_0x2c803a){_0x454e6d['push'](_0x454e6d['shift']());}};_0x4bc294(++_0x1e1f38);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index a15a9e2..e269dbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['INTEGER','BOOLEAN','sequelize','exports','STRING'];(function(_0x1a37df,_0x3ed536){var _0x5a7d5f=function(_0x4dd8a1){while(--_0x4dd8a1){_0x1a37df['push'](_0x1a37df['shift']());}};_0x5a7d5f(++_0x3ed536);}(_0x049e,0x16a));var _0xe049=function(_0x3c04ef,_0x9d110c){_0x3c04ef=_0x3c04ef-0x0;var _0x6a3a69=_0x049e[_0x3c04ef];return _0x6a3a69;};'use strict';var Sequelize=require(_0xe049('0x0'));module[_0xe049('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xe049('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xe049('0x2')]},'password':{'type':Sequelize[_0xe049('0x2')]},'port':{'type':Sequelize[_0xe049('0x3')]},'tls':{'type':Sequelize[_0xe049('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xe049('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xe049('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xe049('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0xe049('0x2')]}};
\ No newline at end of file
+var _0x8cc8=['BOOLEAN','INTEGER','INBOX','sequelize','exports','STRING'];(function(_0x1a0daa,_0x2a4634){var _0x1dbe15=function(_0xa8ab22){while(--_0xa8ab22){_0x1a0daa['push'](_0x1a0daa['shift']());}};_0x1dbe15(++_0x2a4634);}(_0x8cc8,0x177));var _0x88cc=function(_0x56fa4c,_0x3231aa){_0x56fa4c=_0x56fa4c-0x0;var _0x5a8b4f=_0x8cc8[_0x56fa4c];return _0x5a8b4f;};'use strict';var Sequelize=require(_0x88cc('0x0'));module[_0x88cc('0x1')]={'description':{'type':Sequelize[_0x88cc('0x2')]},'host':{'type':Sequelize[_0x88cc('0x2')]},'authentication':{'type':Sequelize[_0x88cc('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x88cc('0x2')]},'password':{'type':Sequelize[_0x88cc('0x2')]},'port':{'type':Sequelize[_0x88cc('0x4')]},'tls':{'type':Sequelize[_0x88cc('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x88cc('0x2')],'defaultValue':_0x88cc('0x5')},'connTimeout':{'type':Sequelize[_0x88cc('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x88cc('0x4')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 72fcb42..41b0834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe904=['rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','api','bluebird','request-promise','path'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0xe904,0x159));var _0x4e90=function(_0x8f592c,_0xeded68){_0x8f592c=_0x8f592c-0x0;var _0x354c1d=_0xe904[_0x8f592c];return _0x354c1d;};'use strict';var _=require(_0x4e90('0x0'));var util=require('util');var logger=require(_0x4e90('0x1'))(_0x4e90('0x2'));var moment=require('moment');var BPromise=require(_0x4e90('0x3'));var rp=require(_0x4e90('0x4'));var fs=require('fs');var path=require(_0x4e90('0x5'));var rimraf=require(_0x4e90('0x6'));var config=require(_0x4e90('0x7'));var attributes=require(_0x4e90('0x8'));module[_0x4e90('0x9')]=function(_0x553d87,_0x2a7b44){return _0x553d87[_0x4e90('0xa')](_0x4e90('0xb'),attributes,{'tableName':_0x4e90('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x486a=['path','rimraf','../../config/environment','./mailServerIn.attributes','exports','MailServerIn','mail_servers_in','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x12aa0e,_0x21794b){var _0x507e5d=function(_0x2e8574){while(--_0x2e8574){_0x12aa0e['push'](_0x12aa0e['shift']());}};_0x507e5d(++_0x21794b);}(_0x486a,0x6f));var _0xa486=function(_0x3a1b90,_0x3c0158){_0x3a1b90=_0x3a1b90-0x0;var _0xf6de77=_0x486a[_0x3a1b90];return _0xf6de77;};'use strict';var _=require(_0xa486('0x0'));var util=require(_0xa486('0x1'));var logger=require(_0xa486('0x2'))(_0xa486('0x3'));var moment=require('moment');var BPromise=require(_0xa486('0x4'));var rp=require(_0xa486('0x5'));var fs=require('fs');var path=require(_0xa486('0x6'));var rimraf=require(_0xa486('0x7'));var config=require(_0xa486('0x8'));var attributes=require(_0xa486('0x9'));module[_0xa486('0xa')]=function(_0x15ff5d,_0x3c307a){return _0x15ff5d['define'](_0xa486('0xb'),attributes,{'tableName':_0xa486('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 077be74..f868f15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa971=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','stringify','error','MailServerIn,\x20%s,\x20%s','message','result','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes','limit','include','map','model','catch','lodash','util'];(function(_0x79c5ca,_0x5f00a3){var _0x3643b5=function(_0x31d36d){while(--_0x31d36d){_0x79c5ca['push'](_0x79c5ca['shift']());}};_0x3643b5(++_0x5f00a3);}(_0xa971,0xc4));var _0x1a97=function(_0x4334aa,_0x44d97e){_0x4334aa=_0x4334aa-0x0;var _0x16f0d4=_0xa971[_0x4334aa];return _0x16f0d4;};'use strict';var _=require(_0x1a97('0x0'));var util=require(_0x1a97('0x1'));var moment=require('moment');var BPromise=require(_0x1a97('0x2'));var rs=require(_0x1a97('0x3'));var fs=require('fs');var Redis=require(_0x1a97('0x4'));var db=require(_0x1a97('0x5'))['db'];var utils=require(_0x1a97('0x6'));var logger=require(_0x1a97('0x7'))(_0x1a97('0x8'));var config=require(_0x1a97('0x9'));var jayson=require(_0x1a97('0xa'));var client=jayson[_0x1a97('0xb')][_0x1a97('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12df23,_0x37b809,_0x5b0698){return new BPromise(function(_0x33df04,_0x4ba263){return client['request'](_0x12df23,_0x5b0698)['then'](function(_0x2d811e){logger[_0x1a97('0xd')]('MailServerIn,\x20%s,\x20%s',_0x37b809,_0x1a97('0xe'));logger[_0x1a97('0xf')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x37b809,_0x1a97('0xe'),JSON[_0x1a97('0x10')](_0x2d811e));if(_0x2d811e['error']){if(_0x2d811e[_0x1a97('0x11')]['code']===0x1f4){logger[_0x1a97('0x11')](_0x1a97('0x12'),_0x37b809,_0x2d811e[_0x1a97('0x11')][_0x1a97('0x13')]);return _0x4ba263(_0x2d811e[_0x1a97('0x11')]['message']);}logger[_0x1a97('0x11')](_0x1a97('0x12'),_0x37b809,_0x2d811e[_0x1a97('0x11')]['message']);return _0x33df04(_0x2d811e[_0x1a97('0x11')][_0x1a97('0x13')]);}else{logger[_0x1a97('0xd')](_0x1a97('0x12'),_0x37b809,_0x1a97('0xe'));_0x33df04(_0x2d811e[_0x1a97('0x14')][_0x1a97('0x13')]);}})['catch'](function(_0x510611){logger[_0x1a97('0x11')](_0x1a97('0x12'),_0x37b809,_0x510611);_0x4ba263(_0x510611);});});}exports[_0x1a97('0x15')]=function(_0x140719){var _0x598795=this;return new Promise(function(_0xc6e164,_0x2dd52c){return db[_0x1a97('0x16')][_0x1a97('0x17')]({'raw':_0x140719[_0x1a97('0x18')]?_0x140719[_0x1a97('0x18')][_0x1a97('0x19')]===undefined?!![]:![]:!![],'where':_0x140719['options']?_0x140719['options'][_0x1a97('0x1a')]||null:null,'attributes':_0x140719[_0x1a97('0x18')]?_0x140719['options'][_0x1a97('0x1b')]||null:null,'limit':_0x140719[_0x1a97('0x18')]?_0x140719['options'][_0x1a97('0x1c')]||null:null,'include':_0x140719['options']?_0x140719[_0x1a97('0x18')][_0x1a97('0x1d')]?_[_0x1a97('0x1e')](_0x140719[_0x1a97('0x18')][_0x1a97('0x1d')],function(_0x160c40){return{'model':db[_0x160c40[_0x1a97('0x1f')]],'as':_0x160c40['as'],'attributes':_0x160c40[_0x1a97('0x1b')],'include':_0x160c40[_0x1a97('0x1d')]?_['map'](_0x160c40[_0x1a97('0x1d')],function(_0x35aeb4){return{'model':db[_0x35aeb4[_0x1a97('0x1f')]],'as':_0x35aeb4['as'],'attributes':_0x35aeb4[_0x1a97('0x1b')],'include':_0x35aeb4['include']?_['map'](_0x35aeb4[_0x1a97('0x1d')],function(_0x2c50e0){return{'model':db[_0x2c50e0['model']],'as':_0x2c50e0['as'],'attributes':_0x2c50e0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x109e8b){logger[_0x1a97('0xd')](_0x1a97('0x15'),_0x140719);logger['debug'](_0x1a97('0x15'),_0x140719,JSON['stringify'](_0x109e8b));_0xc6e164(_0x109e8b);})[_0x1a97('0x20')](function(_0x47e406){logger[_0x1a97('0x11')](_0x1a97('0x15'),_0x47e406['message'],_0x140719);_0x2dd52c(_0x598795['error'](0x1f4,_0x47e406['message']));});});};
\ No newline at end of file
+var _0x7fa6=['MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','GetMailServerIn','MailServerIn','findAll','options','raw','attributes','limit','include','map','model','stringify','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then','MailServerIn,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x18b13b,_0x5180bf){var _0x42b2a1=function(_0x36c36e){while(--_0x36c36e){_0x18b13b['push'](_0x18b13b['shift']());}};_0x42b2a1(++_0x5180bf);}(_0x7fa6,0xb1));var _0x67fa=function(_0x352d0b,_0xb7ac28){_0x352d0b=_0x352d0b-0x0;var _0x2fa466=_0x7fa6[_0x352d0b];return _0x2fa466;};'use strict';var _=require(_0x67fa('0x0'));var util=require(_0x67fa('0x1'));var moment=require('moment');var BPromise=require(_0x67fa('0x2'));var rs=require(_0x67fa('0x3'));var fs=require('fs');var Redis=require(_0x67fa('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x67fa('0x5'))(_0x67fa('0x6'));var config=require('../../config/environment');var jayson=require(_0x67fa('0x7'));var client=jayson[_0x67fa('0x8')][_0x67fa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1cffcd,_0xedd431,_0x8f5ab5){return new BPromise(function(_0x13f28c,_0x4f20a6){return client[_0x67fa('0xa')](_0x1cffcd,_0x8f5ab5)[_0x67fa('0xb')](function(_0x1fa5f0){logger['info'](_0x67fa('0xc'),_0xedd431,_0x67fa('0xd'));logger[_0x67fa('0xe')](_0x67fa('0xf'),_0xedd431,_0x67fa('0xd'),JSON['stringify'](_0x1fa5f0));if(_0x1fa5f0[_0x67fa('0x10')]){if(_0x1fa5f0['error'][_0x67fa('0x11')]===0x1f4){logger[_0x67fa('0x10')]('MailServerIn,\x20%s,\x20%s',_0xedd431,_0x1fa5f0[_0x67fa('0x10')][_0x67fa('0x12')]);return _0x4f20a6(_0x1fa5f0[_0x67fa('0x10')]['message']);}logger[_0x67fa('0x10')](_0x67fa('0xc'),_0xedd431,_0x1fa5f0[_0x67fa('0x10')][_0x67fa('0x12')]);return _0x13f28c(_0x1fa5f0[_0x67fa('0x10')][_0x67fa('0x12')]);}else{logger[_0x67fa('0x13')]('MailServerIn,\x20%s,\x20%s',_0xedd431,_0x67fa('0xd'));_0x13f28c(_0x1fa5f0['result'][_0x67fa('0x12')]);}})[_0x67fa('0x14')](function(_0x3f54c4){logger[_0x67fa('0x10')](_0x67fa('0xc'),_0xedd431,_0x3f54c4);_0x4f20a6(_0x3f54c4);});});}exports[_0x67fa('0x15')]=function(_0x5c42ae){var _0x11797a=this;return new Promise(function(_0x4dd1e3,_0x78ac6c){return db[_0x67fa('0x16')][_0x67fa('0x17')]({'raw':_0x5c42ae[_0x67fa('0x18')]?_0x5c42ae[_0x67fa('0x18')][_0x67fa('0x19')]===undefined?!![]:![]:!![],'where':_0x5c42ae[_0x67fa('0x18')]?_0x5c42ae[_0x67fa('0x18')]['where']||null:null,'attributes':_0x5c42ae[_0x67fa('0x18')]?_0x5c42ae['options'][_0x67fa('0x1a')]||null:null,'limit':_0x5c42ae[_0x67fa('0x18')]?_0x5c42ae[_0x67fa('0x18')][_0x67fa('0x1b')]||null:null,'include':_0x5c42ae['options']?_0x5c42ae[_0x67fa('0x18')][_0x67fa('0x1c')]?_[_0x67fa('0x1d')](_0x5c42ae[_0x67fa('0x18')][_0x67fa('0x1c')],function(_0x54da10){return{'model':db[_0x54da10[_0x67fa('0x1e')]],'as':_0x54da10['as'],'attributes':_0x54da10[_0x67fa('0x1a')],'include':_0x54da10[_0x67fa('0x1c')]?_[_0x67fa('0x1d')](_0x54da10['include'],function(_0x49cb0d){return{'model':db[_0x49cb0d[_0x67fa('0x1e')]],'as':_0x49cb0d['as'],'attributes':_0x49cb0d[_0x67fa('0x1a')],'include':_0x49cb0d[_0x67fa('0x1c')]?_[_0x67fa('0x1d')](_0x49cb0d[_0x67fa('0x1c')],function(_0x1db176){return{'model':db[_0x1db176['model']],'as':_0x1db176['as'],'attributes':_0x1db176['attributes']};}):[]};}):[]};}):[]:[]})[_0x67fa('0xb')](function(_0x181955){logger[_0x67fa('0x13')](_0x67fa('0x15'),_0x5c42ae);logger[_0x67fa('0xe')]('GetMailServerIn',_0x5c42ae,JSON[_0x67fa('0x1f')](_0x181955));_0x4dd1e3(_0x181955);})[_0x67fa('0x14')](function(_0x2aca43){logger['error']('GetMailServerIn',_0x2aca43[_0x67fa('0x12')],_0x5c42ae);_0x78ac6c(_0x11797a['error'](0x1f4,_0x2aca43[_0x67fa('0x12')]));});});};
\ No newline at end of file
index 5751831..a3cf3ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x7a54,0x106));var _0x47a5=function(_0x560b60,_0x573b93){_0x560b60=_0x560b60-0x0;var _0x90a14d=_0x7a54[_0x560b60];return _0x90a14d;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index 89a348b..19c2654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb983=['STRING','INTEGER','BOOLEAN','sequelize'];(function(_0x47b262,_0x45a382){var _0x223475=function(_0x5cce22){while(--_0x5cce22){_0x47b262['push'](_0x47b262['shift']());}};_0x223475(++_0x45a382);}(_0xb983,0x1db));var _0x3b98=function(_0x163040,_0x38a58c){_0x163040=_0x163040-0x0;var _0x364667=_0xb983[_0x163040];return _0x364667;};'use strict';var Sequelize=require(_0x3b98('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x3b98('0x1')]},'port':{'type':Sequelize[_0x3b98('0x2')]},'secure':{'type':Sequelize[_0x3b98('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x3b98('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x49df=['BOOLEAN','sequelize','exports','STRING','INTEGER'];(function(_0x5753f7,_0x4a27bb){var _0x5201ef=function(_0x23aab4){while(--_0x23aab4){_0x5753f7['push'](_0x5753f7['shift']());}};_0x5201ef(++_0x4a27bb);}(_0x49df,0x79));var _0xf49d=function(_0x54336b,_0x48b028){_0x54336b=_0x54336b-0x0;var _0x5b64a3=_0x49df[_0x54336b];return _0x5b64a3;};'use strict';var Sequelize=require(_0xf49d('0x0'));module[_0xf49d('0x1')]={'description':{'type':Sequelize[_0xf49d('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0xf49d('0x2')]},'port':{'type':Sequelize[_0xf49d('0x3')]},'secure':{'type':Sequelize[_0xf49d('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xf49d('0x2')]},'authentication':{'type':Sequelize[_0xf49d('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index f7328b9..803ccd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c7d=['to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','update','destroy','then','name','send','map','MailServerOut','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','order','sort','filter','where','VIRTUAL','merge','options','count','include','findAll','rows','show','fields','length','includeAll','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x4c7d,0x1a8));var _0xd4c7=function(_0x49cb3c,_0x352a9e){_0x49cb3c=_0x49cb3c-0x0;var _0x44ae1d=_0x4c7d[_0x49cb3c];return _0x44ae1d;};'use strict';var emlformat=require(_0xd4c7('0x0'));var rimraf=require(_0xd4c7('0x1'));var zipdir=require(_0xd4c7('0x2'));var jsonpatch=require(_0xd4c7('0x3'));var rp=require('request-promise');var moment=require(_0xd4c7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd4c7('0x5'));var util=require('util');var path=require(_0xd4c7('0x6'));var sox=require(_0xd4c7('0x7'));var csv=require(_0xd4c7('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd4c7('0x9'));var squel=require(_0xd4c7('0xa'));var crypto=require(_0xd4c7('0xb'));var jsforce=require(_0xd4c7('0xc'));var deskjs=require(_0xd4c7('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd4c7('0xe'));var Papa=require(_0xd4c7('0xf'));var Redis=require(_0xd4c7('0x10'));var authService=require(_0xd4c7('0x11'));var qs=require(_0xd4c7('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd4c7('0x13'));var logger=require(_0xd4c7('0x14'))(_0xd4c7('0x15'));var utils=require('../../config/utils');var config=require(_0xd4c7('0x16'));var licenseUtil=require(_0xd4c7('0x17'));var db=require(_0xd4c7('0x18'))['db'];function respondWithStatusCode(_0x79b1b8,_0x33857b){_0x33857b=_0x33857b||0xcc;return function(_0x18d2ac){if(_0x18d2ac){return _0x79b1b8[_0xd4c7('0x19')](_0x33857b);}return _0x79b1b8[_0xd4c7('0x1a')](_0x33857b)[_0xd4c7('0x1b')]();};}function respondWithResult(_0x77b337,_0x13e521){_0x13e521=_0x13e521||0xc8;return function(_0x43fb6f){if(_0x43fb6f){return _0x77b337[_0xd4c7('0x1a')](_0x13e521)[_0xd4c7('0x1c')](_0x43fb6f);}};}function respondWithFilteredResult(_0x3806f1,_0x6ccafb){return function(_0x282748){if(_0x282748){var _0x3d32aa=typeof _0x6ccafb['offset']===_0xd4c7('0x1d')&&typeof _0x6ccafb[_0xd4c7('0x1e')]===_0xd4c7('0x1d');var _0x28f7a1=_0x282748['count'];var _0x58a8d2=_0x3d32aa?0x0:_0x6ccafb[_0xd4c7('0x1f')];var _0x5caa81=_0x3d32aa?_0x282748['count']:_0x6ccafb[_0xd4c7('0x1f')]+_0x6ccafb['limit'];var _0x351e2c;if(_0x5caa81>=_0x28f7a1){_0x5caa81=_0x28f7a1;_0x351e2c=0xc8;}else{_0x351e2c=0xce;}_0x3806f1[_0xd4c7('0x1a')](_0x351e2c);return _0x3806f1[_0xd4c7('0x20')](_0xd4c7('0x21'),_0x58a8d2+'-'+_0x5caa81+'/'+_0x28f7a1)[_0xd4c7('0x1c')](_0x282748);}return null;};}function patchUpdates(_0x575d50){return function(_0x4c590b){try{jsonpatch[_0xd4c7('0x22')](_0x4c590b,_0x575d50,!![]);}catch(_0x4c2b80){return BPromise[_0xd4c7('0x23')](_0x4c2b80);}return _0x4c590b['save']();};}function saveUpdates(_0x55c5be,_0x159381){return function(_0x4291d8){if(_0x4291d8){return _0x4291d8[_0xd4c7('0x24')](_0x55c5be)['then'](function(_0x1e5518){return _0x1e5518;});}return null;};}function removeEntity(_0x380bd6,_0x3a3b0a){return function(_0x34f086){if(_0x34f086){return _0x34f086[_0xd4c7('0x25')]()[_0xd4c7('0x26')](function(){_0x380bd6[_0xd4c7('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18422d,_0xd23606){return function(_0x113050){if(!_0x113050){_0x18422d['sendStatus'](0x194);}return _0x113050;};}function handleError(_0x512092,_0x1b8e28){_0x1b8e28=_0x1b8e28||0x1f4;return function(_0x3a651f){logger['error'](_0x3a651f['stack']);if(_0x3a651f[_0xd4c7('0x27')]){delete _0x3a651f[_0xd4c7('0x27')];}_0x512092['status'](_0x1b8e28)[_0xd4c7('0x28')](_0x3a651f);};}exports['index']=function(_0x377ece,_0x18be65){var _0x19aed4={},_0x31664d={},_0x3af05a={'count':0x0,'rows':[]};var _0xa0686f=_[_0xd4c7('0x29')](db[_0xd4c7('0x2a')][_0xd4c7('0x2b')],function(_0x29d99a){return{'name':_0x29d99a[_0xd4c7('0x2c')],'type':_0x29d99a[_0xd4c7('0x2d')]['key']};});_0x31664d[_0xd4c7('0x2e')]=_[_0xd4c7('0x29')](_0xa0686f,_0xd4c7('0x27'));_0x31664d[_0xd4c7('0x2f')]=_[_0xd4c7('0x30')](_0x377ece[_0xd4c7('0x2f')]);_0x31664d[_0xd4c7('0x31')]=_[_0xd4c7('0x32')](_0x31664d[_0xd4c7('0x2e')],_0x31664d['query']);_0x19aed4['attributes']=_[_0xd4c7('0x32')](_0x31664d[_0xd4c7('0x2e')],qs['fields'](_0x377ece[_0xd4c7('0x2f')]['fields']));_0x19aed4[_0xd4c7('0x33')]=_0x19aed4[_0xd4c7('0x33')]['length']?_0x19aed4[_0xd4c7('0x33')]:_0x31664d['model'];if(!_0x377ece[_0xd4c7('0x2f')]['hasOwnProperty']('nolimit')){_0x19aed4[_0xd4c7('0x1e')]=qs[_0xd4c7('0x1e')](_0x377ece[_0xd4c7('0x2f')][_0xd4c7('0x1e')]);_0x19aed4[_0xd4c7('0x1f')]=qs['offset'](_0x377ece[_0xd4c7('0x2f')][_0xd4c7('0x1f')]);}_0x19aed4[_0xd4c7('0x34')]=qs[_0xd4c7('0x35')](_0x377ece[_0xd4c7('0x2f')][_0xd4c7('0x35')]);_0x19aed4['where']=qs['filters'](_['pick'](_0x377ece['query'],_0x31664d[_0xd4c7('0x31')]),_0xa0686f);if(_0x377ece[_0xd4c7('0x2f')][_0xd4c7('0x36')]){_0x19aed4[_0xd4c7('0x37')]=_['merge'](_0x19aed4[_0xd4c7('0x37')],{'$or':_[_0xd4c7('0x29')](_0xa0686f,function(_0x2862c3){if(_0x2862c3['type']!==_0xd4c7('0x38')){var _0x481fe8={};_0x481fe8[_0x2862c3[_0xd4c7('0x27')]]={'$like':'%'+_0x377ece[_0xd4c7('0x2f')][_0xd4c7('0x36')]+'%'};return _0x481fe8;}})});}_0x19aed4=_[_0xd4c7('0x39')]({},_0x19aed4,_0x377ece[_0xd4c7('0x3a')]);var _0x34bf77={'where':_0x19aed4[_0xd4c7('0x37')]};return db['MailServerOut']['count'](_0x34bf77)['then'](function(_0x13fe1f){_0x3af05a[_0xd4c7('0x3b')]=_0x13fe1f;if(_0x377ece[_0xd4c7('0x2f')]['includeAll']){_0x19aed4[_0xd4c7('0x3c')]=[{'all':!![]}];}return db[_0xd4c7('0x2a')][_0xd4c7('0x3d')](_0x19aed4);})[_0xd4c7('0x26')](function(_0x56ffcb){_0x3af05a[_0xd4c7('0x3e')]=_0x56ffcb;return _0x3af05a;})[_0xd4c7('0x26')](respondWithFilteredResult(_0x18be65,_0x19aed4))['catch'](handleError(_0x18be65,null));};exports[_0xd4c7('0x3f')]=function(_0x2f1127,_0x17c1b8){var _0x13754e={'raw':!![],'where':{'id':_0x2f1127['params']['id']}},_0x24a44d={};_0x24a44d[_0xd4c7('0x2e')]=_[_0xd4c7('0x30')](db['MailServerOut'][_0xd4c7('0x2b')]);_0x24a44d[_0xd4c7('0x2f')]=_[_0xd4c7('0x30')](_0x2f1127[_0xd4c7('0x2f')]);_0x24a44d[_0xd4c7('0x31')]=_[_0xd4c7('0x32')](_0x24a44d[_0xd4c7('0x2e')],_0x24a44d[_0xd4c7('0x2f')]);_0x13754e[_0xd4c7('0x33')]=_[_0xd4c7('0x32')](_0x24a44d[_0xd4c7('0x2e')],qs['fields'](_0x2f1127[_0xd4c7('0x2f')][_0xd4c7('0x40')]));_0x13754e['attributes']=_0x13754e[_0xd4c7('0x33')][_0xd4c7('0x41')]?_0x13754e[_0xd4c7('0x33')]:_0x24a44d['model'];if(_0x2f1127[_0xd4c7('0x2f')][_0xd4c7('0x42')]){_0x13754e[_0xd4c7('0x3c')]=[{'all':!![]}];}_0x13754e=_[_0xd4c7('0x39')]({},_0x13754e,_0x2f1127[_0xd4c7('0x3a')]);return db[_0xd4c7('0x2a')][_0xd4c7('0x43')](_0x13754e)[_0xd4c7('0x26')](handleEntityNotFound(_0x17c1b8,null))[_0xd4c7('0x26')](respondWithResult(_0x17c1b8,null))[_0xd4c7('0x44')](handleError(_0x17c1b8,null));};exports['create']=function(_0x8c1ba1,_0x200734){return db[_0xd4c7('0x2a')][_0xd4c7('0x45')](_0x8c1ba1[_0xd4c7('0x46')],{})['then'](respondWithResult(_0x200734,0xc9))['catch'](handleError(_0x200734,null));};exports[_0xd4c7('0x24')]=function(_0x15ea9b,_0x2d99b3){if(_0x15ea9b[_0xd4c7('0x46')]['id']){delete _0x15ea9b[_0xd4c7('0x46')]['id'];}return db[_0xd4c7('0x2a')][_0xd4c7('0x43')]({'where':{'id':_0x15ea9b['params']['id']}})[_0xd4c7('0x26')](handleEntityNotFound(_0x2d99b3,null))[_0xd4c7('0x26')](saveUpdates(_0x15ea9b[_0xd4c7('0x46')],null))[_0xd4c7('0x26')](respondWithResult(_0x2d99b3,null))[_0xd4c7('0x44')](handleError(_0x2d99b3,null));};exports['destroy']=function(_0x11a505,_0x51328a){return db[_0xd4c7('0x2a')]['find']({'where':{'id':_0x11a505[_0xd4c7('0x47')]['id']}})[_0xd4c7('0x26')](handleEntityNotFound(_0x51328a,null))[_0xd4c7('0x26')](removeEntity(_0x51328a,null))[_0xd4c7('0x44')](handleError(_0x51328a,null));};
\ No newline at end of file
+var _0xd286=['set','apply','reject','save','update','then','error','stack','name','send','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','destroy','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset'];(function(_0x2e02e9,_0x2b54dc){var _0x55a46a=function(_0x122936){while(--_0x122936){_0x2e02e9['push'](_0x2e02e9['shift']());}};_0x55a46a(++_0x2b54dc);}(_0xd286,0x1ee));var _0x6d28=function(_0x348310,_0x462221){_0x348310=_0x348310-0x0;var _0x5122b6=_0xd286[_0x348310];return _0x5122b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d28('0x0'));var zipdir=require(_0x6d28('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6d28('0x2'));var moment=require(_0x6d28('0x3'));var BPromise=require(_0x6d28('0x4'));var Mustache=require(_0x6d28('0x5'));var util=require(_0x6d28('0x6'));var path=require(_0x6d28('0x7'));var sox=require(_0x6d28('0x8'));var csv=require(_0x6d28('0x9'));var ejs=require(_0x6d28('0xa'));var fs=require('fs');var fs_extra=require(_0x6d28('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6d28('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6d28('0x9'));var querystring=require(_0x6d28('0xd'));var Papa=require(_0x6d28('0xe'));var Redis=require(_0x6d28('0xf'));var authService=require(_0x6d28('0x10'));var qs=require(_0x6d28('0x11'));var as=require(_0x6d28('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6d28('0x13'))('api');var utils=require(_0x6d28('0x14'));var config=require(_0x6d28('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6d28('0x16'))['db'];function respondWithStatusCode(_0x304fcd,_0x1bfe81){_0x1bfe81=_0x1bfe81||0xcc;return function(_0x534053){if(_0x534053){return _0x304fcd[_0x6d28('0x17')](_0x1bfe81);}return _0x304fcd[_0x6d28('0x18')](_0x1bfe81)[_0x6d28('0x19')]();};}function respondWithResult(_0x224f23,_0x50b842){_0x50b842=_0x50b842||0xc8;return function(_0x1a08ec){if(_0x1a08ec){return _0x224f23['status'](_0x50b842)[_0x6d28('0x1a')](_0x1a08ec);}};}function respondWithFilteredResult(_0x22f1fb,_0x1279f5){return function(_0x2b4654){if(_0x2b4654){var _0x526ca1=typeof _0x1279f5['offset']==='undefined'&&typeof _0x1279f5[_0x6d28('0x1b')]===_0x6d28('0x1c');var _0x408238=_0x2b4654[_0x6d28('0x1d')];var _0xceb9bc=_0x526ca1?0x0:_0x1279f5['offset'];var _0x3479f0=_0x526ca1?_0x2b4654[_0x6d28('0x1d')]:_0x1279f5[_0x6d28('0x1e')]+_0x1279f5[_0x6d28('0x1b')];var _0x3c8e73;if(_0x3479f0>=_0x408238){_0x3479f0=_0x408238;_0x3c8e73=0xc8;}else{_0x3c8e73=0xce;}_0x22f1fb['status'](_0x3c8e73);return _0x22f1fb[_0x6d28('0x1f')]('Content-Range',_0xceb9bc+'-'+_0x3479f0+'/'+_0x408238)[_0x6d28('0x1a')](_0x2b4654);}return null;};}function patchUpdates(_0x5ed924){return function(_0x5b3fad){try{jsonpatch[_0x6d28('0x20')](_0x5b3fad,_0x5ed924,!![]);}catch(_0x426f7e){return BPromise[_0x6d28('0x21')](_0x426f7e);}return _0x5b3fad[_0x6d28('0x22')]();};}function saveUpdates(_0x5889f3,_0x115586){return function(_0x25ec59){if(_0x25ec59){return _0x25ec59[_0x6d28('0x23')](_0x5889f3)[_0x6d28('0x24')](function(_0x5c4303){return _0x5c4303;});}return null;};}function removeEntity(_0x49c035,_0xf49c9b){return function(_0x3cbc36){if(_0x3cbc36){return _0x3cbc36['destroy']()[_0x6d28('0x24')](function(){_0x49c035[_0x6d28('0x18')](0xcc)[_0x6d28('0x19')]();});}};}function handleEntityNotFound(_0x41988d,_0xbdfde3){return function(_0x5d2ed4){if(!_0x5d2ed4){_0x41988d[_0x6d28('0x17')](0x194);}return _0x5d2ed4;};}function handleError(_0x1068f1,_0x38605d){_0x38605d=_0x38605d||0x1f4;return function(_0x3aab36){logger[_0x6d28('0x25')](_0x3aab36[_0x6d28('0x26')]);if(_0x3aab36[_0x6d28('0x27')]){delete _0x3aab36[_0x6d28('0x27')];}_0x1068f1[_0x6d28('0x18')](_0x38605d)[_0x6d28('0x28')](_0x3aab36);};}exports[_0x6d28('0x29')]=function(_0x2df696,_0x52394e){var _0x1f4b44={},_0x30a39b={},_0x1ada4e={'count':0x0,'rows':[]};var _0x4d9982=_[_0x6d28('0x2a')](db[_0x6d28('0x2b')][_0x6d28('0x2c')],function(_0x5b2f4a){return{'name':_0x5b2f4a[_0x6d28('0x2d')],'type':_0x5b2f4a[_0x6d28('0x2e')][_0x6d28('0x2f')]};});_0x30a39b[_0x6d28('0x30')]=_[_0x6d28('0x2a')](_0x4d9982,_0x6d28('0x27'));_0x30a39b[_0x6d28('0x31')]=_['keys'](_0x2df696['query']);_0x30a39b[_0x6d28('0x32')]=_[_0x6d28('0x33')](_0x30a39b[_0x6d28('0x30')],_0x30a39b[_0x6d28('0x31')]);_0x1f4b44[_0x6d28('0x34')]=_[_0x6d28('0x33')](_0x30a39b[_0x6d28('0x30')],qs[_0x6d28('0x35')](_0x2df696[_0x6d28('0x31')]['fields']));_0x1f4b44[_0x6d28('0x34')]=_0x1f4b44[_0x6d28('0x34')][_0x6d28('0x36')]?_0x1f4b44['attributes']:_0x30a39b['model'];if(!_0x2df696[_0x6d28('0x31')]['hasOwnProperty'](_0x6d28('0x37'))){_0x1f4b44[_0x6d28('0x1b')]=qs[_0x6d28('0x1b')](_0x2df696[_0x6d28('0x31')][_0x6d28('0x1b')]);_0x1f4b44[_0x6d28('0x1e')]=qs[_0x6d28('0x1e')](_0x2df696[_0x6d28('0x31')][_0x6d28('0x1e')]);}_0x1f4b44[_0x6d28('0x38')]=qs[_0x6d28('0x39')](_0x2df696['query'][_0x6d28('0x39')]);_0x1f4b44[_0x6d28('0x3a')]=qs['filters'](_[_0x6d28('0x3b')](_0x2df696[_0x6d28('0x31')],_0x30a39b[_0x6d28('0x32')]),_0x4d9982);if(_0x2df696[_0x6d28('0x31')][_0x6d28('0x3c')]){_0x1f4b44['where']=_[_0x6d28('0x3d')](_0x1f4b44[_0x6d28('0x3a')],{'$or':_[_0x6d28('0x2a')](_0x4d9982,function(_0xdbc7d8){if(_0xdbc7d8[_0x6d28('0x2e')]!==_0x6d28('0x3e')){var _0xd6f90c={};_0xd6f90c[_0xdbc7d8[_0x6d28('0x27')]]={'$like':'%'+_0x2df696[_0x6d28('0x31')][_0x6d28('0x3c')]+'%'};return _0xd6f90c;}})});}_0x1f4b44=_[_0x6d28('0x3d')]({},_0x1f4b44,_0x2df696['options']);var _0x429d13={'where':_0x1f4b44[_0x6d28('0x3a')]};return db['MailServerOut'][_0x6d28('0x1d')](_0x429d13)[_0x6d28('0x24')](function(_0x18c73d){_0x1ada4e['count']=_0x18c73d;if(_0x2df696[_0x6d28('0x31')]['includeAll']){_0x1f4b44['include']=[{'all':!![]}];}return db[_0x6d28('0x2b')][_0x6d28('0x3f')](_0x1f4b44);})[_0x6d28('0x24')](function(_0x91e9d9){_0x1ada4e[_0x6d28('0x40')]=_0x91e9d9;return _0x1ada4e;})[_0x6d28('0x24')](respondWithFilteredResult(_0x52394e,_0x1f4b44))[_0x6d28('0x41')](handleError(_0x52394e,null));};exports[_0x6d28('0x42')]=function(_0x25ad58,_0x36074e){var _0x1ac04b={'raw':!![],'where':{'id':_0x25ad58[_0x6d28('0x43')]['id']}},_0x21da70={};_0x21da70['model']=_[_0x6d28('0x44')](db[_0x6d28('0x2b')][_0x6d28('0x2c')]);_0x21da70['query']=_[_0x6d28('0x44')](_0x25ad58['query']);_0x21da70['filters']=_[_0x6d28('0x33')](_0x21da70['model'],_0x21da70['query']);_0x1ac04b[_0x6d28('0x34')]=_['intersection'](_0x21da70[_0x6d28('0x30')],qs[_0x6d28('0x35')](_0x25ad58[_0x6d28('0x31')][_0x6d28('0x35')]));_0x1ac04b[_0x6d28('0x34')]=_0x1ac04b[_0x6d28('0x34')][_0x6d28('0x36')]?_0x1ac04b[_0x6d28('0x34')]:_0x21da70[_0x6d28('0x30')];if(_0x25ad58[_0x6d28('0x31')][_0x6d28('0x45')]){_0x1ac04b[_0x6d28('0x46')]=[{'all':!![]}];}_0x1ac04b=_[_0x6d28('0x3d')]({},_0x1ac04b,_0x25ad58['options']);return db[_0x6d28('0x2b')][_0x6d28('0x47')](_0x1ac04b)[_0x6d28('0x24')](handleEntityNotFound(_0x36074e,null))[_0x6d28('0x24')](respondWithResult(_0x36074e,null))[_0x6d28('0x41')](handleError(_0x36074e,null));};exports[_0x6d28('0x48')]=function(_0xa337a1,_0x5c925a){return db[_0x6d28('0x2b')][_0x6d28('0x48')](_0xa337a1[_0x6d28('0x49')],{})[_0x6d28('0x24')](respondWithResult(_0x5c925a,0xc9))[_0x6d28('0x41')](handleError(_0x5c925a,null));};exports['update']=function(_0x15ed7b,_0x19b18e){if(_0x15ed7b['body']['id']){delete _0x15ed7b[_0x6d28('0x49')]['id'];}return db[_0x6d28('0x2b')][_0x6d28('0x47')]({'where':{'id':_0x15ed7b[_0x6d28('0x43')]['id']}})[_0x6d28('0x24')](handleEntityNotFound(_0x19b18e,null))[_0x6d28('0x24')](saveUpdates(_0x15ed7b['body'],null))[_0x6d28('0x24')](respondWithResult(_0x19b18e,null))[_0x6d28('0x41')](handleError(_0x19b18e,null));};exports[_0x6d28('0x4a')]=function(_0x219670,_0x10bc08){return db[_0x6d28('0x2b')][_0x6d28('0x47')]({'where':{'id':_0x219670[_0x6d28('0x43')]['id']}})[_0x6d28('0x24')](handleEntityNotFound(_0x10bc08,null))[_0x6d28('0x24')](removeEntity(_0x10bc08,null))['catch'](handleError(_0x10bc08,null));};
\ No newline at end of file
index 31d60ce..e5a71fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9df9=['request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define','MailServerOut','util','moment','bluebird'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x9df9,0x126));var _0x99df=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x9df9[_0x2d2c16];return _0x53f2fb;};'use strict';var _=require('lodash');var util=require(_0x99df('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x99df('0x1'));var BPromise=require(_0x99df('0x2'));var rp=require(_0x99df('0x3'));var fs=require('fs');var path=require(_0x99df('0x4'));var rimraf=require(_0x99df('0x5'));var config=require(_0x99df('0x6'));var attributes=require(_0x99df('0x7'));module[_0x99df('0x8')]=function(_0x58497f,_0x4b5b25){return _0x58497f[_0x99df('0x9')](_0x99df('0xa'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9820=['path','rimraf','../../config/environment','exports','define','MailServerOut','lodash','../../config/logger','api','request-promise'];(function(_0x318c5d,_0x370513){var _0xcc6649=function(_0x541aa3){while(--_0x541aa3){_0x318c5d['push'](_0x318c5d['shift']());}};_0xcc6649(++_0x370513);}(_0x9820,0x15a));var _0x0982=function(_0x2e4aea,_0xc3ca83){_0x2e4aea=_0x2e4aea-0x0;var _0x119069=_0x9820[_0x2e4aea];return _0x119069;};'use strict';var _=require(_0x0982('0x0'));var util=require('util');var logger=require(_0x0982('0x1'))(_0x0982('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0982('0x3'));var fs=require('fs');var path=require(_0x0982('0x4'));var rimraf=require(_0x0982('0x5'));var config=require(_0x0982('0x6'));var attributes=require('./mailServerOut.attributes');module[_0x0982('0x7')]=function(_0x3fce93,_0x3aaa92){return _0x3fce93[_0x0982('0x8')](_0x0982('0x9'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 222137e..893e7d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x2131de,_0x4bc802){var _0x41bef6=function(_0x1161b8){while(--_0x1161b8){_0x2131de['push'](_0x2131de['shift']());}};_0x41bef6(++_0x4bc802);}(_0xdb28,0x106));var _0x8db2=function(_0xb027c9,_0x287d25){_0xb027c9=_0xb027c9-0x0;var _0x58c6d0=_0xdb28[_0xb027c9];return _0x58c6d0;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x1d074f,_0x3cfa35){var _0x3be3fb=function(_0x1ce170){while(--_0x1ce170){_0x1d074f['push'](_0x1d074f['shift']());}};_0x3be3fb(++_0x3cfa35);}(_0xdb28,0x106));var _0x8db2=function(_0xc4487a,_0x25f168){_0xc4487a=_0xc4487a-0x0;var _0x2a1916=_0xdb28[_0xc4487a];return _0x2a1916;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index c5492bc..0af9efd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2612=['../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','/:id','post','create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x42144c,_0x59d6d2){var _0xc23dc3=function(_0x2a2661){while(--_0x2a2661){_0x42144c['push'](_0x42144c['shift']());}};_0xc23dc3(++_0x59d6d2);}(_0x2612,0x72));var _0x2261=function(_0x500097,_0x3e2427){_0x500097=_0x500097-0x0;var _0x2d3b24=_0x2612[_0x500097];return _0x2d3b24;};'use strict';var multer=require(_0x2261('0x0'));var util=require('util');var path=require(_0x2261('0x1'));var timeout=require('connect-timeout');var express=require(_0x2261('0x2'));var router=express[_0x2261('0x3')]();var fs_extra=require(_0x2261('0x4'));var auth=require(_0x2261('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2261('0x6'));var controller=require(_0x2261('0x7'));router[_0x2261('0x8')]('/',auth[_0x2261('0x9')](),controller[_0x2261('0xa')]);router[_0x2261('0x8')](_0x2261('0xb'),auth[_0x2261('0x9')](),controller['describe']);router[_0x2261('0x8')](_0x2261('0xc'),auth[_0x2261('0x9')](),controller['show']);router[_0x2261('0xd')]('/',auth[_0x2261('0x9')](),controller[_0x2261('0xe')]);router[_0x2261('0xf')](_0x2261('0xc'),auth[_0x2261('0x9')](),controller[_0x2261('0x10')]);router[_0x2261('0x11')](_0x2261('0xc'),auth['isAuthenticated'](),controller[_0x2261('0x12')]);module[_0x2261('0x13')]=router;
\ No newline at end of file
+var _0x6eee=['destroy','exports','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','create','update'];(function(_0x34dab1,_0x489550){var _0x29cab0=function(_0x1a60c8){while(--_0x1a60c8){_0x34dab1['push'](_0x34dab1['shift']());}};_0x29cab0(++_0x489550);}(_0x6eee,0x191));var _0xe6ee=function(_0x17d9ee,_0xd61b88){_0x17d9ee=_0x17d9ee-0x0;var _0x340849=_0x6eee[_0x17d9ee];return _0x340849;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe6ee('0x0'));var timeout=require('connect-timeout');var express=require(_0xe6ee('0x1'));var router=express['Router']();var fs_extra=require(_0xe6ee('0x2'));var auth=require(_0xe6ee('0x3'));var interaction=require(_0xe6ee('0x4'));var config=require(_0xe6ee('0x5'));var controller=require(_0xe6ee('0x6'));router['get']('/',auth[_0xe6ee('0x7')](),controller[_0xe6ee('0x8')]);router['get'](_0xe6ee('0x9'),auth[_0xe6ee('0x7')](),controller[_0xe6ee('0xa')]);router[_0xe6ee('0xb')](_0xe6ee('0xc'),auth[_0xe6ee('0x7')](),controller[_0xe6ee('0xd')]);router[_0xe6ee('0xe')]('/',auth[_0xe6ee('0x7')](),controller[_0xe6ee('0xf')]);router['put'](_0xe6ee('0xc'),auth[_0xe6ee('0x7')](),controller[_0xe6ee('0x10')]);router['delete'](_0xe6ee('0xc'),auth[_0xe6ee('0x7')](),controller[_0xe6ee('0x11')]);module[_0xe6ee('0x12')]=router;
\ No newline at end of file
index fad1d0b..f603d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x444e=['sequelize','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x444e,0xe8));var _0xe444=function(_0x5421fb,_0x54017d){_0x5421fb=_0x5421fb-0x0;var _0x2de43c=_0x444e[_0x5421fb];return _0x2de43c;};'use strict';var Sequelize=require(_0xe444('0x0'));module['exports']={'name':{'type':Sequelize[_0xe444('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe444('0x1')]}};
\ No newline at end of file
+var _0x3914=['exports','name','STRING','sequelize'];(function(_0x1af54f,_0x22ebb4){var _0x177a95=function(_0x581c58){while(--_0x581c58){_0x1af54f['push'](_0x1af54f['shift']());}};_0x177a95(++_0x22ebb4);}(_0x3914,0xeb));var _0x4391=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x3914[_0x3899d1];return _0xeb4a7d;};'use strict';var Sequelize=require(_0x4391('0x0'));module[_0x4391('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x4391('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4391('0x3')]}};
\ No newline at end of file
index 89701fb..22cd66c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a4a=['order','sort','filters','filter','where','options','findAll','rows','catch','show','params','includeAll','include','create','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','MailSubstatus','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x15f7de,_0x29d1d0){var _0x494928=function(_0x27018a){while(--_0x27018a){_0x15f7de['push'](_0x15f7de['shift']());}};_0x494928(++_0x29d1d0);}(_0x1a4a,0x145));var _0xa1a4=function(_0x29b2e2,_0x38a94b){_0x29b2e2=_0x29b2e2-0x0;var _0x51a854=_0x1a4a[_0x29b2e2];return _0x51a854;};'use strict';var emlformat=require(_0xa1a4('0x0'));var rimraf=require(_0xa1a4('0x1'));var zipdir=require(_0xa1a4('0x2'));var jsonpatch=require(_0xa1a4('0x3'));var rp=require(_0xa1a4('0x4'));var moment=require('moment');var BPromise=require(_0xa1a4('0x5'));var Mustache=require(_0xa1a4('0x6'));var util=require(_0xa1a4('0x7'));var path=require(_0xa1a4('0x8'));var sox=require('sox');var csv=require(_0xa1a4('0x9'));var ejs=require(_0xa1a4('0xa'));var fs=require('fs');var fs_extra=require(_0xa1a4('0xb'));var _=require('lodash');var squel=require(_0xa1a4('0xc'));var crypto=require('crypto');var jsforce=require(_0xa1a4('0xd'));var deskjs=require(_0xa1a4('0xe'));var toCsv=require(_0xa1a4('0x9'));var querystring=require('querystring');var Papa=require(_0xa1a4('0xf'));var Redis=require(_0xa1a4('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa1a4('0x11'));var as=require(_0xa1a4('0x12'));var hardwareService=require(_0xa1a4('0x13'));var logger=require(_0xa1a4('0x14'))(_0xa1a4('0x15'));var utils=require(_0xa1a4('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa1a4('0x17'));var db=require(_0xa1a4('0x18'))['db'];function respondWithStatusCode(_0x4517e4,_0x499456){_0x499456=_0x499456||0xcc;return function(_0x4a8e88){if(_0x4a8e88){return _0x4517e4[_0xa1a4('0x19')](_0x499456);}return _0x4517e4['status'](_0x499456)[_0xa1a4('0x1a')]();};}function respondWithResult(_0x3e2b61,_0x2575f7){_0x2575f7=_0x2575f7||0xc8;return function(_0x548a9f){if(_0x548a9f){return _0x3e2b61[_0xa1a4('0x1b')](_0x2575f7)[_0xa1a4('0x1c')](_0x548a9f);}};}function respondWithFilteredResult(_0x463e7c,_0x5db72c){return function(_0xfc9c44){if(_0xfc9c44){var _0x147bd5=typeof _0x5db72c['offset']===_0xa1a4('0x1d')&&typeof _0x5db72c['limit']===_0xa1a4('0x1d');var _0x5529c9=_0xfc9c44[_0xa1a4('0x1e')];var _0x49735c=_0x147bd5?0x0:_0x5db72c['offset'];var _0x4f7d8d=_0x147bd5?_0xfc9c44['count']:_0x5db72c[_0xa1a4('0x1f')]+_0x5db72c[_0xa1a4('0x20')];var _0x5e175c;if(_0x4f7d8d>=_0x5529c9){_0x4f7d8d=_0x5529c9;_0x5e175c=0xc8;}else{_0x5e175c=0xce;}_0x463e7c[_0xa1a4('0x1b')](_0x5e175c);return _0x463e7c[_0xa1a4('0x21')](_0xa1a4('0x22'),_0x49735c+'-'+_0x4f7d8d+'/'+_0x5529c9)['json'](_0xfc9c44);}return null;};}function patchUpdates(_0x1ec6cc){return function(_0x641018){try{jsonpatch[_0xa1a4('0x23')](_0x641018,_0x1ec6cc,!![]);}catch(_0x2f270e){return BPromise[_0xa1a4('0x24')](_0x2f270e);}return _0x641018[_0xa1a4('0x25')]();};}function saveUpdates(_0x5993a9,_0x597fc9){return function(_0x6f722d){if(_0x6f722d){return _0x6f722d[_0xa1a4('0x26')](_0x5993a9)[_0xa1a4('0x27')](function(_0x1291c7){return _0x1291c7;});}return null;};}function removeEntity(_0x5814bc,_0x1a2172){return function(_0x15cab9){if(_0x15cab9){return _0x15cab9[_0xa1a4('0x28')]()[_0xa1a4('0x27')](function(){_0x5814bc[_0xa1a4('0x1b')](0xcc)[_0xa1a4('0x1a')]();});}};}function handleEntityNotFound(_0x84cb3a,_0x2c4de4){return function(_0x2c76c5){if(!_0x2c76c5){_0x84cb3a[_0xa1a4('0x19')](0x194);}return _0x2c76c5;};}function handleError(_0x47567f,_0x4cc57a){_0x4cc57a=_0x4cc57a||0x1f4;return function(_0x46a1cb){logger[_0xa1a4('0x29')](_0x46a1cb[_0xa1a4('0x2a')]);if(_0x46a1cb[_0xa1a4('0x2b')]){delete _0x46a1cb['name'];}_0x47567f[_0xa1a4('0x1b')](_0x4cc57a)[_0xa1a4('0x2c')](_0x46a1cb);};}exports[_0xa1a4('0x2d')]=function(_0x2d760c,_0x2cc1fc){var _0x17f685={},_0x1c6e9c={},_0x212530={'count':0x0,'rows':[]};var _0x291f93=_[_0xa1a4('0x2e')](db[_0xa1a4('0x2f')][_0xa1a4('0x30')],function(_0x15a310){return{'name':_0x15a310['fieldName'],'type':_0x15a310[_0xa1a4('0x31')][_0xa1a4('0x32')]};});_0x1c6e9c[_0xa1a4('0x33')]=_[_0xa1a4('0x2e')](_0x291f93,_0xa1a4('0x2b'));_0x1c6e9c[_0xa1a4('0x34')]=_[_0xa1a4('0x35')](_0x2d760c['query']);_0x1c6e9c['filters']=_[_0xa1a4('0x36')](_0x1c6e9c[_0xa1a4('0x33')],_0x1c6e9c['query']);_0x17f685[_0xa1a4('0x37')]=_[_0xa1a4('0x36')](_0x1c6e9c[_0xa1a4('0x33')],qs[_0xa1a4('0x38')](_0x2d760c[_0xa1a4('0x34')]['fields']));_0x17f685[_0xa1a4('0x37')]=_0x17f685[_0xa1a4('0x37')][_0xa1a4('0x39')]?_0x17f685[_0xa1a4('0x37')]:_0x1c6e9c[_0xa1a4('0x33')];if(!_0x2d760c[_0xa1a4('0x34')][_0xa1a4('0x3a')](_0xa1a4('0x3b'))){_0x17f685['limit']=qs['limit'](_0x2d760c[_0xa1a4('0x34')][_0xa1a4('0x20')]);_0x17f685[_0xa1a4('0x1f')]=qs[_0xa1a4('0x1f')](_0x2d760c['query'][_0xa1a4('0x1f')]);}_0x17f685[_0xa1a4('0x3c')]=qs[_0xa1a4('0x3d')](_0x2d760c[_0xa1a4('0x34')][_0xa1a4('0x3d')]);_0x17f685['where']=qs[_0xa1a4('0x3e')](_['pick'](_0x2d760c[_0xa1a4('0x34')],_0x1c6e9c[_0xa1a4('0x3e')]),_0x291f93);if(_0x2d760c['query'][_0xa1a4('0x3f')]){_0x17f685['where']=_['merge'](_0x17f685[_0xa1a4('0x40')],{'$or':_['map'](_0x291f93,function(_0x4e17a6){if(_0x4e17a6[_0xa1a4('0x31')]!=='VIRTUAL'){var _0x450bdc={};_0x450bdc[_0x4e17a6[_0xa1a4('0x2b')]]={'$like':'%'+_0x2d760c['query']['filter']+'%'};return _0x450bdc;}})});}_0x17f685=_['merge']({},_0x17f685,_0x2d760c[_0xa1a4('0x41')]);var _0x57e7af={'where':_0x17f685[_0xa1a4('0x40')]};return db[_0xa1a4('0x2f')][_0xa1a4('0x1e')](_0x57e7af)['then'](function(_0x38414b){_0x212530[_0xa1a4('0x1e')]=_0x38414b;if(_0x2d760c[_0xa1a4('0x34')]['includeAll']){_0x17f685['include']=[{'all':!![]}];}return db['MailSubstatus'][_0xa1a4('0x42')](_0x17f685);})['then'](function(_0x238e5f){_0x212530[_0xa1a4('0x43')]=_0x238e5f;return _0x212530;})[_0xa1a4('0x27')](respondWithFilteredResult(_0x2cc1fc,_0x17f685))[_0xa1a4('0x44')](handleError(_0x2cc1fc,null));};exports[_0xa1a4('0x45')]=function(_0x5c2d3d,_0x4fef88){var _0x1ca300={'raw':!![],'where':{'id':_0x5c2d3d[_0xa1a4('0x46')]['id']}},_0x5619ee={};_0x5619ee['model']=_[_0xa1a4('0x35')](db[_0xa1a4('0x2f')][_0xa1a4('0x30')]);_0x5619ee['query']=_[_0xa1a4('0x35')](_0x5c2d3d[_0xa1a4('0x34')]);_0x5619ee[_0xa1a4('0x3e')]=_[_0xa1a4('0x36')](_0x5619ee[_0xa1a4('0x33')],_0x5619ee[_0xa1a4('0x34')]);_0x1ca300['attributes']=_[_0xa1a4('0x36')](_0x5619ee[_0xa1a4('0x33')],qs['fields'](_0x5c2d3d['query'][_0xa1a4('0x38')]));_0x1ca300[_0xa1a4('0x37')]=_0x1ca300['attributes'][_0xa1a4('0x39')]?_0x1ca300[_0xa1a4('0x37')]:_0x5619ee[_0xa1a4('0x33')];if(_0x5c2d3d['query'][_0xa1a4('0x47')]){_0x1ca300[_0xa1a4('0x48')]=[{'all':!![]}];}_0x1ca300=_['merge']({},_0x1ca300,_0x5c2d3d[_0xa1a4('0x41')]);return db[_0xa1a4('0x2f')]['find'](_0x1ca300)['then'](handleEntityNotFound(_0x4fef88,null))['then'](respondWithResult(_0x4fef88,null))[_0xa1a4('0x44')](handleError(_0x4fef88,null));};exports['create']=function(_0x1250c4,_0x173812){return db['MailSubstatus'][_0xa1a4('0x49')](_0x1250c4['body'],{})[_0xa1a4('0x27')](respondWithResult(_0x173812,0xc9))[_0xa1a4('0x44')](handleError(_0x173812,null));};exports[_0xa1a4('0x26')]=function(_0x3b2957,_0x30bcee){if(_0x3b2957['body']['id']){delete _0x3b2957['body']['id'];}return db[_0xa1a4('0x2f')][_0xa1a4('0x4a')]({'where':{'id':_0x3b2957[_0xa1a4('0x46')]['id']}})['then'](handleEntityNotFound(_0x30bcee,null))[_0xa1a4('0x27')](saveUpdates(_0x3b2957[_0xa1a4('0x4b')],null))[_0xa1a4('0x27')](respondWithResult(_0x30bcee,null))[_0xa1a4('0x44')](handleError(_0x30bcee,null));};exports[_0xa1a4('0x28')]=function(_0x442814,_0x2158f7){return db[_0xa1a4('0x2f')][_0xa1a4('0x4a')]({'where':{'id':_0x442814['params']['id']}})[_0xa1a4('0x27')](handleEntityNotFound(_0x2158f7,null))['then'](removeEntity(_0x2158f7,null))[_0xa1a4('0x44')](handleError(_0x2158f7,null));};exports[_0xa1a4('0x4c')]=function(_0x5e6dc1,_0x431f7b){return db[_0xa1a4('0x2f')]['describe']()['then'](respondWithResult(_0x431f7b,null))['catch'](handleError(_0x431f7b,null));};
\ No newline at end of file
+var _0x0d0f=['where','filter','merge','VIRTUAL','options','then','include','findAll','rows','catch','show','params','intersection','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','error','name','send','index','map','MailSubstatus','rawAttributes','fieldName','type','key','query','keys','filters','model','fields','attributes','length','nolimit','order','sort'];(function(_0x24d633,_0x2af102){var _0x5a9d37=function(_0x417109){while(--_0x417109){_0x24d633['push'](_0x24d633['shift']());}};_0x5a9d37(++_0x2af102);}(_0x0d0f,0x184));var _0xf0d0=function(_0x411b68,_0x52e768){_0x411b68=_0x411b68-0x0;var _0x41ff90=_0x0d0f[_0x411b68];return _0x41ff90;};'use strict';var emlformat=require(_0xf0d0('0x0'));var rimraf=require(_0xf0d0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf0d0('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf0d0('0x3'));var path=require(_0xf0d0('0x4'));var sox=require(_0xf0d0('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf0d0('0x6'));var _=require(_0xf0d0('0x7'));var squel=require(_0xf0d0('0x8'));var crypto=require('crypto');var jsforce=require(_0xf0d0('0x9'));var deskjs=require(_0xf0d0('0xa'));var toCsv=require(_0xf0d0('0xb'));var querystring=require(_0xf0d0('0xc'));var Papa=require(_0xf0d0('0xd'));var Redis=require(_0xf0d0('0xe'));var authService=require(_0xf0d0('0xf'));var qs=require(_0xf0d0('0x10'));var as=require(_0xf0d0('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf0d0('0x12'))(_0xf0d0('0x13'));var utils=require(_0xf0d0('0x14'));var config=require(_0xf0d0('0x15'));var licenseUtil=require(_0xf0d0('0x16'));var db=require(_0xf0d0('0x17'))['db'];function respondWithStatusCode(_0x10cfad,_0x1ea81f){_0x1ea81f=_0x1ea81f||0xcc;return function(_0xfc7647){if(_0xfc7647){return _0x10cfad[_0xf0d0('0x18')](_0x1ea81f);}return _0x10cfad[_0xf0d0('0x19')](_0x1ea81f)['end']();};}function respondWithResult(_0x55f03b,_0xb61ed0){_0xb61ed0=_0xb61ed0||0xc8;return function(_0x26fb55){if(_0x26fb55){return _0x55f03b['status'](_0xb61ed0)[_0xf0d0('0x1a')](_0x26fb55);}};}function respondWithFilteredResult(_0x187663,_0x2f290e){return function(_0x228139){if(_0x228139){var _0x4839ec=typeof _0x2f290e[_0xf0d0('0x1b')]===_0xf0d0('0x1c')&&typeof _0x2f290e[_0xf0d0('0x1d')]===_0xf0d0('0x1c');var _0x42e8d2=_0x228139['count'];var _0x583493=_0x4839ec?0x0:_0x2f290e[_0xf0d0('0x1b')];var _0x1ee6b1=_0x4839ec?_0x228139[_0xf0d0('0x1e')]:_0x2f290e['offset']+_0x2f290e[_0xf0d0('0x1d')];var _0x2f8348;if(_0x1ee6b1>=_0x42e8d2){_0x1ee6b1=_0x42e8d2;_0x2f8348=0xc8;}else{_0x2f8348=0xce;}_0x187663[_0xf0d0('0x19')](_0x2f8348);return _0x187663[_0xf0d0('0x1f')](_0xf0d0('0x20'),_0x583493+'-'+_0x1ee6b1+'/'+_0x42e8d2)[_0xf0d0('0x1a')](_0x228139);}return null;};}function patchUpdates(_0x756c35){return function(_0xc394e0){try{jsonpatch[_0xf0d0('0x21')](_0xc394e0,_0x756c35,!![]);}catch(_0x347a74){return BPromise['reject'](_0x347a74);}return _0xc394e0['save']();};}function saveUpdates(_0x16df7d,_0x4efb0c){return function(_0xeca176){if(_0xeca176){return _0xeca176[_0xf0d0('0x22')](_0x16df7d)['then'](function(_0x228e1e){return _0x228e1e;});}return null;};}function removeEntity(_0xa25465,_0x126566){return function(_0x46b356){if(_0x46b356){return _0x46b356[_0xf0d0('0x23')]()['then'](function(){_0xa25465[_0xf0d0('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41132d,_0x26e8a8){return function(_0x146733){if(!_0x146733){_0x41132d[_0xf0d0('0x18')](0x194);}return _0x146733;};}function handleError(_0x2dc148,_0x18f12a){_0x18f12a=_0x18f12a||0x1f4;return function(_0x431f12){logger[_0xf0d0('0x24')](_0x431f12['stack']);if(_0x431f12['name']){delete _0x431f12[_0xf0d0('0x25')];}_0x2dc148[_0xf0d0('0x19')](_0x18f12a)[_0xf0d0('0x26')](_0x431f12);};}exports[_0xf0d0('0x27')]=function(_0x4c0743,_0xe07964){var _0x146137={},_0x5713f5={},_0x20fa26={'count':0x0,'rows':[]};var _0x20138b=_[_0xf0d0('0x28')](db[_0xf0d0('0x29')][_0xf0d0('0x2a')],function(_0x2070ec){return{'name':_0x2070ec[_0xf0d0('0x2b')],'type':_0x2070ec[_0xf0d0('0x2c')][_0xf0d0('0x2d')]};});_0x5713f5['model']=_[_0xf0d0('0x28')](_0x20138b,_0xf0d0('0x25'));_0x5713f5[_0xf0d0('0x2e')]=_[_0xf0d0('0x2f')](_0x4c0743[_0xf0d0('0x2e')]);_0x5713f5[_0xf0d0('0x30')]=_['intersection'](_0x5713f5[_0xf0d0('0x31')],_0x5713f5['query']);_0x146137['attributes']=_['intersection'](_0x5713f5['model'],qs[_0xf0d0('0x32')](_0x4c0743[_0xf0d0('0x2e')]['fields']));_0x146137[_0xf0d0('0x33')]=_0x146137[_0xf0d0('0x33')][_0xf0d0('0x34')]?_0x146137[_0xf0d0('0x33')]:_0x5713f5[_0xf0d0('0x31')];if(!_0x4c0743[_0xf0d0('0x2e')]['hasOwnProperty'](_0xf0d0('0x35'))){_0x146137[_0xf0d0('0x1d')]=qs[_0xf0d0('0x1d')](_0x4c0743[_0xf0d0('0x2e')][_0xf0d0('0x1d')]);_0x146137[_0xf0d0('0x1b')]=qs['offset'](_0x4c0743[_0xf0d0('0x2e')][_0xf0d0('0x1b')]);}_0x146137[_0xf0d0('0x36')]=qs[_0xf0d0('0x37')](_0x4c0743[_0xf0d0('0x2e')]['sort']);_0x146137[_0xf0d0('0x38')]=qs['filters'](_['pick'](_0x4c0743[_0xf0d0('0x2e')],_0x5713f5[_0xf0d0('0x30')]),_0x20138b);if(_0x4c0743[_0xf0d0('0x2e')][_0xf0d0('0x39')]){_0x146137[_0xf0d0('0x38')]=_[_0xf0d0('0x3a')](_0x146137[_0xf0d0('0x38')],{'$or':_[_0xf0d0('0x28')](_0x20138b,function(_0x51e5de){if(_0x51e5de['type']!==_0xf0d0('0x3b')){var _0x3e108a={};_0x3e108a[_0x51e5de[_0xf0d0('0x25')]]={'$like':'%'+_0x4c0743[_0xf0d0('0x2e')]['filter']+'%'};return _0x3e108a;}})});}_0x146137=_['merge']({},_0x146137,_0x4c0743[_0xf0d0('0x3c')]);var _0x431028={'where':_0x146137['where']};return db['MailSubstatus'][_0xf0d0('0x1e')](_0x431028)[_0xf0d0('0x3d')](function(_0x249001){_0x20fa26[_0xf0d0('0x1e')]=_0x249001;if(_0x4c0743[_0xf0d0('0x2e')]['includeAll']){_0x146137[_0xf0d0('0x3e')]=[{'all':!![]}];}return db[_0xf0d0('0x29')][_0xf0d0('0x3f')](_0x146137);})[_0xf0d0('0x3d')](function(_0x36c466){_0x20fa26[_0xf0d0('0x40')]=_0x36c466;return _0x20fa26;})[_0xf0d0('0x3d')](respondWithFilteredResult(_0xe07964,_0x146137))[_0xf0d0('0x41')](handleError(_0xe07964,null));};exports[_0xf0d0('0x42')]=function(_0x313398,_0x2f7fa9){var _0x15d9fe={'raw':!![],'where':{'id':_0x313398[_0xf0d0('0x43')]['id']}},_0x198d21={};_0x198d21[_0xf0d0('0x31')]=_['keys'](db[_0xf0d0('0x29')][_0xf0d0('0x2a')]);_0x198d21[_0xf0d0('0x2e')]=_[_0xf0d0('0x2f')](_0x313398[_0xf0d0('0x2e')]);_0x198d21['filters']=_[_0xf0d0('0x44')](_0x198d21[_0xf0d0('0x31')],_0x198d21['query']);_0x15d9fe['attributes']=_[_0xf0d0('0x44')](_0x198d21[_0xf0d0('0x31')],qs[_0xf0d0('0x32')](_0x313398['query'][_0xf0d0('0x32')]));_0x15d9fe[_0xf0d0('0x33')]=_0x15d9fe['attributes'][_0xf0d0('0x34')]?_0x15d9fe[_0xf0d0('0x33')]:_0x198d21['model'];if(_0x313398['query'][_0xf0d0('0x45')]){_0x15d9fe[_0xf0d0('0x3e')]=[{'all':!![]}];}_0x15d9fe=_[_0xf0d0('0x3a')]({},_0x15d9fe,_0x313398[_0xf0d0('0x3c')]);return db['MailSubstatus'][_0xf0d0('0x46')](_0x15d9fe)[_0xf0d0('0x3d')](handleEntityNotFound(_0x2f7fa9,null))[_0xf0d0('0x3d')](respondWithResult(_0x2f7fa9,null))[_0xf0d0('0x41')](handleError(_0x2f7fa9,null));};exports['create']=function(_0x5e6cdf,_0xb031b6){return db[_0xf0d0('0x29')][_0xf0d0('0x47')](_0x5e6cdf[_0xf0d0('0x48')],{})['then'](respondWithResult(_0xb031b6,0xc9))[_0xf0d0('0x41')](handleError(_0xb031b6,null));};exports['update']=function(_0x287bcd,_0x1a074a){if(_0x287bcd[_0xf0d0('0x48')]['id']){delete _0x287bcd[_0xf0d0('0x48')]['id'];}return db[_0xf0d0('0x29')][_0xf0d0('0x46')]({'where':{'id':_0x287bcd[_0xf0d0('0x43')]['id']}})[_0xf0d0('0x3d')](handleEntityNotFound(_0x1a074a,null))['then'](saveUpdates(_0x287bcd[_0xf0d0('0x48')],null))[_0xf0d0('0x3d')](respondWithResult(_0x1a074a,null))[_0xf0d0('0x41')](handleError(_0x1a074a,null));};exports[_0xf0d0('0x23')]=function(_0x36d571,_0x3ed4f8){return db[_0xf0d0('0x29')][_0xf0d0('0x46')]({'where':{'id':_0x36d571[_0xf0d0('0x43')]['id']}})[_0xf0d0('0x3d')](handleEntityNotFound(_0x3ed4f8,null))[_0xf0d0('0x3d')](removeEntity(_0x3ed4f8,null))['catch'](handleError(_0x3ed4f8,null));};exports['describe']=function(_0x3b90cb,_0x4faf5f){return db['MailSubstatus'][_0xf0d0('0x49')]()[_0xf0d0('0x3d')](respondWithResult(_0x4faf5f,null))[_0xf0d0('0x41')](handleError(_0x4faf5f,null));};
\ No newline at end of file
index 8c1a5ed..d6b792f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67f7=['events','../../mysqldb','MailSubstatus','setMaxListeners','update','emit','hasOwnProperty','hook','exports'];(function(_0x5dabc0,_0x3c82af){var _0x40120e=function(_0x3ec931){while(--_0x3ec931){_0x5dabc0['push'](_0x5dabc0['shift']());}};_0x40120e(++_0x3c82af);}(_0x67f7,0x156));var _0x767f=function(_0xb08d9e,_0xdd139f){_0xb08d9e=_0xb08d9e-0x0;var _0x5d5d62=_0x67f7[_0xb08d9e];return _0x5d5d62;};'use strict';var EventEmitter=require(_0x767f('0x0'));var MailSubstatus=require(_0x767f('0x1'))['db'][_0x767f('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x767f('0x3')](0x0);var events={'afterUpdate':_0x767f('0x4')};function emitEvent(_0x2e1952){return function(_0x249835,_0x448d33,_0x2369d6){MailSubstatusEvents[_0x767f('0x5')](_0x2e1952+':'+_0x249835['id'],_0x249835);MailSubstatusEvents[_0x767f('0x5')](_0x2e1952,_0x249835);_0x2369d6(null);};}for(var e in events){if(events[_0x767f('0x6')](e)){var event=events[e];MailSubstatus[_0x767f('0x7')](e,emitEvent(event));}}module[_0x767f('0x8')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x8afc=['hook','exports','events','../../mysqldb','setMaxListeners','emit','hasOwnProperty'];(function(_0x26fb14,_0x1541e4){var _0x1ef9df=function(_0x236400){while(--_0x236400){_0x26fb14['push'](_0x26fb14['shift']());}};_0x1ef9df(++_0x1541e4);}(_0x8afc,0x113));var _0xc8af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8afc[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xc8af('0x0'));var MailSubstatus=require(_0xc8af('0x1'))['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xc8af('0x2')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x1041d7){return function(_0x36787f,_0x1ff05c,_0x466e2b){MailSubstatusEvents['emit'](_0x1041d7+':'+_0x36787f['id'],_0x36787f);MailSubstatusEvents[_0xc8af('0x3')](_0x1041d7,_0x36787f);_0x466e2b(null);};}for(var e in events){if(events[_0xc8af('0x4')](e)){var event=events[e];MailSubstatus[_0xc8af('0x5')](e,emitEvent(event));}}module[_0xc8af('0x6')]=MailSubstatusEvents;
\ No newline at end of file
index 21ddd11..6ef0ee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf77=['catch','./mailSubstatus.attributes','exports','models','define','MailSubstatus','mail_substatuses','Condition','update','mailSubstatus','_previousDataValues','name','then'];(function(_0x249a23,_0x15795a){var _0x571f40=function(_0xdcec5){while(--_0xdcec5){_0x249a23['push'](_0x249a23['shift']());}};_0x571f40(++_0x15795a);}(_0xdf77,0x1a1));var _0x7df7=function(_0x4f2b8d,_0x17fe25){_0x4f2b8d=_0x4f2b8d-0x0;var _0x345fc1=_0xdf77[_0x4f2b8d];return _0x345fc1;};'use strict';var attributes=require(_0x7df7('0x0'));module[_0x7df7('0x1')]=function(_0x57ff81){var _0x107822=_0x57ff81[_0x7df7('0x2')];return _0x57ff81[_0x7df7('0x3')](_0x7df7('0x4'),attributes,{'tableName':_0x7df7('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x26c27b,_0x1a913a,_0x6b0c2d){return _0x107822[_0x7df7('0x6')][_0x7df7('0x7')]({'value':_0x26c27b['name']},{'where':{'field':_0x7df7('0x8'),'value':_0x26c27b[_0x7df7('0x9')][_0x7df7('0xa')]}})[_0x7df7('0xb')](function(){_0x6b0c2d();})[_0x7df7('0xc')](function(_0x49ea23){_0x6b0c2d(_0x49ea23);});}}});};
\ No newline at end of file
+var _0x1a3c=['./mailSubstatus.attributes','exports','models','define','MailSubstatus','Condition','update','name','mailSubstatus','_previousDataValues','then','catch'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x1a3c,0x144));var _0xc1a3=function(_0x85512e,_0x2b7c30){_0x85512e=_0x85512e-0x0;var _0x17e78a=_0x1a3c[_0x85512e];return _0x17e78a;};'use strict';var attributes=require(_0xc1a3('0x0'));module[_0xc1a3('0x1')]=function(_0x22634f){var _0x4c0f79=_0x22634f[_0xc1a3('0x2')];return _0x22634f[_0xc1a3('0x3')](_0xc1a3('0x4'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x3841b2,_0x4894d8,_0xb434dd){return _0x4c0f79[_0xc1a3('0x5')][_0xc1a3('0x6')]({'value':_0x3841b2[_0xc1a3('0x7')]},{'where':{'field':_0xc1a3('0x8'),'value':_0x3841b2[_0xc1a3('0x9')][_0xc1a3('0x7')]}})[_0xc1a3('0xa')](function(){_0xb434dd();})[_0xc1a3('0xb')](function(_0x272c74){_0xb434dd(_0x272c74);});}}});};
\ No newline at end of file
index aaaaa2e..25e20c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425e=['randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x425e,0x97));var _0xe425=function(_0x4bd137,_0x561bec){_0x4bd137=_0x4bd137-0x0;var _0x5a5600=_0x425e[_0x4bd137];return _0x5a5600;};'use strict';var _=require(_0xe425('0x0'));var util=require('util');var moment=require(_0xe425('0x1'));var BPromise=require(_0xe425('0x2'));var rs=require(_0xe425('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe425('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe425('0x5'))(_0xe425('0x6'));var config=require(_0xe425('0x7'));var jayson=require(_0xe425('0x8'));var client=jayson[_0xe425('0x9')][_0xe425('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b7e28,_0x2e30ba,_0x321b57){return new BPromise(function(_0x2476f2,_0x3ceab3){return client['request'](_0x5b7e28,_0x321b57)[_0xe425('0xb')](function(_0x4c666c){logger['info'](_0xe425('0xc'),_0x2e30ba,_0xe425('0xd'));logger['debug'](_0xe425('0xe'),_0x2e30ba,'request\x20sent',JSON[_0xe425('0xf')](_0x4c666c));if(_0x4c666c['error']){if(_0x4c666c[_0xe425('0x10')][_0xe425('0x11')]===0x1f4){logger['error'](_0xe425('0xc'),_0x2e30ba,_0x4c666c[_0xe425('0x10')][_0xe425('0x12')]);return _0x3ceab3(_0x4c666c['error']['message']);}logger['error'](_0xe425('0xc'),_0x2e30ba,_0x4c666c[_0xe425('0x10')][_0xe425('0x12')]);return _0x2476f2(_0x4c666c[_0xe425('0x10')]['message']);}else{logger[_0xe425('0x13')](_0xe425('0xc'),_0x2e30ba,_0xe425('0xd'));_0x2476f2(_0x4c666c[_0xe425('0x14')][_0xe425('0x12')]);}})[_0xe425('0x15')](function(_0x4f9691){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x2e30ba,_0x4f9691);_0x3ceab3(_0x4f9691);});});}
\ No newline at end of file
+var _0xa7da=['client','request','then','info','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','error','code','MailSubstatus,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x23d2a0,_0x516174){var _0x409e80=function(_0x432940){while(--_0x432940){_0x23d2a0['push'](_0x23d2a0['shift']());}};_0x409e80(++_0x516174);}(_0xa7da,0x17d));var _0xaa7d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa7da[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaa7d('0x0'));var util=require(_0xaa7d('0x1'));var moment=require(_0xaa7d('0x2'));var BPromise=require(_0xaa7d('0x3'));var rs=require(_0xaa7d('0x4'));var fs=require('fs');var Redis=require(_0xaa7d('0x5'));var db=require(_0xaa7d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xaa7d('0x7'))(_0xaa7d('0x8'));var config=require(_0xaa7d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa7d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21794b,_0x5764b7,_0x19c6a1){return new BPromise(function(_0x1c5fa0,_0x2f29cd){return client[_0xaa7d('0xb')](_0x21794b,_0x19c6a1)[_0xaa7d('0xc')](function(_0x22370a){logger[_0xaa7d('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x5764b7,_0xaa7d('0xe'));logger[_0xaa7d('0xf')](_0xaa7d('0x10'),_0x5764b7,_0xaa7d('0xe'),JSON['stringify'](_0x22370a));if(_0x22370a[_0xaa7d('0x11')]){if(_0x22370a[_0xaa7d('0x11')][_0xaa7d('0x12')]===0x1f4){logger[_0xaa7d('0x11')](_0xaa7d('0x13'),_0x5764b7,_0x22370a[_0xaa7d('0x11')][_0xaa7d('0x14')]);return _0x2f29cd(_0x22370a['error'][_0xaa7d('0x14')]);}logger['error']('MailSubstatus,\x20%s,\x20%s',_0x5764b7,_0x22370a[_0xaa7d('0x11')]['message']);return _0x1c5fa0(_0x22370a[_0xaa7d('0x11')]['message']);}else{logger[_0xaa7d('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x5764b7,'request\x20sent');_0x1c5fa0(_0x22370a[_0xaa7d('0x15')][_0xaa7d('0x14')]);}})[_0xaa7d('0x16')](function(_0x3799dc){logger[_0xaa7d('0x11')](_0xaa7d('0x13'),_0x5764b7,_0x3799dc);_0x2f29cd(_0x3799dc);});});}
\ No newline at end of file
index 0e633cb..e700d2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d59=['post','create','put','update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','/:id','show'];(function(_0x1eb6dc,_0x478ac6){var _0x285927=function(_0x1b211b){while(--_0x1b211b){_0x1eb6dc['push'](_0x1eb6dc['shift']());}};_0x285927(++_0x478ac6);}(_0x4d59,0x1bc));var _0x94d5=function(_0x10c8c7,_0x4ed1ef){_0x10c8c7=_0x10c8c7-0x0;var _0x33acba=_0x4d59[_0x10c8c7];return _0x33acba;};'use strict';var multer=require(_0x94d5('0x0'));var util=require('util');var path=require(_0x94d5('0x1'));var timeout=require('connect-timeout');var express=require(_0x94d5('0x2'));var router=express[_0x94d5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x94d5('0x4'));var interaction=require(_0x94d5('0x5'));var config=require(_0x94d5('0x6'));var controller=require('./mailTransferReport.controller');router[_0x94d5('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x94d5('0x7')](_0x94d5('0x8'),auth[_0x94d5('0x9')](),controller['describe']);router['get'](_0x94d5('0xa'),auth['isAuthenticated'](),controller[_0x94d5('0xb')]);router[_0x94d5('0xc')]('/',auth[_0x94d5('0x9')](),controller[_0x94d5('0xd')]);router[_0x94d5('0xe')](_0x94d5('0xa'),auth[_0x94d5('0x9')](),controller[_0x94d5('0xf')]);router[_0x94d5('0x10')](_0x94d5('0xa'),auth[_0x94d5('0x9')](),controller[_0x94d5('0x11')]);module[_0x94d5('0x12')]=router;
\ No newline at end of file
+var _0x06d3=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','index','/describe','isAuthenticated','/:id','show','post','put','destroy','exports','multer'];(function(_0x413b9d,_0x2ac3a6){var _0x76040f=function(_0x576c2a){while(--_0x576c2a){_0x413b9d['push'](_0x413b9d['shift']());}};_0x76040f(++_0x2ac3a6);}(_0x06d3,0x109));var _0x306d=function(_0x1cb35d,_0x31f983){_0x1cb35d=_0x1cb35d-0x0;var _0x1fa08f=_0x06d3[_0x1cb35d];return _0x1fa08f;};'use strict';var multer=require(_0x306d('0x0'));var util=require(_0x306d('0x1'));var path=require(_0x306d('0x2'));var timeout=require('connect-timeout');var express=require(_0x306d('0x3'));var router=express['Router']();var fs_extra=require(_0x306d('0x4'));var auth=require(_0x306d('0x5'));var interaction=require(_0x306d('0x6'));var config=require(_0x306d('0x7'));var controller=require(_0x306d('0x8'));router[_0x306d('0x9')]('/',auth['isAuthenticated'](),controller[_0x306d('0xa')]);router['get'](_0x306d('0xb'),auth[_0x306d('0xc')](),controller['describe']);router[_0x306d('0x9')](_0x306d('0xd'),auth['isAuthenticated'](),controller[_0x306d('0xe')]);router[_0x306d('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x306d('0x10')]('/:id',auth[_0x306d('0xc')](),controller['update']);router['delete']('/:id',auth[_0x306d('0xc')](),controller[_0x306d('0x11')]);module[_0x306d('0x12')]=router;
\ No newline at end of file
index 376fc0a..72c2e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x4a80de,_0x523470){var _0x3aaea6=function(_0x2e4ec0){while(--_0x2e4ec0){_0x4a80de['push'](_0x4a80de['shift']());}};_0x3aaea6(++_0x523470);}(_0xedd9,0xfc));var _0x9edd=function(_0x58b7c9,_0x2b900c){_0x58b7c9=_0x58b7c9-0x0;var _0x514247=_0xedd9[_0x58b7c9];return _0x514247;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x3433b0,_0x34456a){var _0x5cfa91=function(_0x47ba8d){while(--_0x47ba8d){_0x3433b0['push'](_0x3433b0['shift']());}};_0x5cfa91(++_0x34456a);}(_0x00bb,0x1d8));var _0xb00b=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x00bb[_0x24237f];return _0x48298e;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
index 015af1c..e2c5e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a4=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','offset','limit','set','apply','reject','save','update','then','destroy','sendStatus','error','name','send','map','MailTransferReport','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','catch','create','body','find','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x15a4,0x1bc));var _0x415a=function(_0x48ee29,_0x1d5097){_0x48ee29=_0x48ee29-0x0;var _0x38ffa9=_0x15a4[_0x48ee29];return _0x38ffa9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x415a('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x415a('0x1'));var moment=require('moment');var BPromise=require(_0x415a('0x2'));var Mustache=require(_0x415a('0x3'));var util=require(_0x415a('0x4'));var path=require(_0x415a('0x5'));var sox=require('sox');var csv=require(_0x415a('0x6'));var ejs=require(_0x415a('0x7'));var fs=require('fs');var fs_extra=require(_0x415a('0x8'));var _=require(_0x415a('0x9'));var squel=require(_0x415a('0xa'));var crypto=require(_0x415a('0xb'));var jsforce=require(_0x415a('0xc'));var deskjs=require(_0x415a('0xd'));var toCsv=require(_0x415a('0x6'));var querystring=require(_0x415a('0xe'));var Papa=require(_0x415a('0xf'));var Redis=require(_0x415a('0x10'));var authService=require(_0x415a('0x11'));var qs=require(_0x415a('0x12'));var as=require(_0x415a('0x13'));var hardwareService=require(_0x415a('0x14'));var logger=require(_0x415a('0x15'))(_0x415a('0x16'));var utils=require(_0x415a('0x17'));var config=require(_0x415a('0x18'));var licenseUtil=require(_0x415a('0x19'));var db=require(_0x415a('0x1a'))['db'];function respondWithStatusCode(_0x2a3b84,_0x2de562){_0x2de562=_0x2de562||0xcc;return function(_0x2ea353){if(_0x2ea353){return _0x2a3b84['sendStatus'](_0x2de562);}return _0x2a3b84[_0x415a('0x1b')](_0x2de562)[_0x415a('0x1c')]();};}function respondWithResult(_0xa92c0f,_0xee4bc6){_0xee4bc6=_0xee4bc6||0xc8;return function(_0x35083b){if(_0x35083b){return _0xa92c0f[_0x415a('0x1b')](_0xee4bc6)[_0x415a('0x1d')](_0x35083b);}};}function respondWithFilteredResult(_0x3dba37,_0x1ff25c){return function(_0x63bb10){if(_0x63bb10){var _0x426969=typeof _0x1ff25c['offset']==='undefined'&&typeof _0x1ff25c['limit']===_0x415a('0x1e');var _0x5697ca=_0x63bb10['count'];var _0x130f08=_0x426969?0x0:_0x1ff25c['offset'];var _0x43c4ca=_0x426969?_0x63bb10['count']:_0x1ff25c[_0x415a('0x1f')]+_0x1ff25c[_0x415a('0x20')];var _0x38284c;if(_0x43c4ca>=_0x5697ca){_0x43c4ca=_0x5697ca;_0x38284c=0xc8;}else{_0x38284c=0xce;}_0x3dba37[_0x415a('0x1b')](_0x38284c);return _0x3dba37[_0x415a('0x21')]('Content-Range',_0x130f08+'-'+_0x43c4ca+'/'+_0x5697ca)[_0x415a('0x1d')](_0x63bb10);}return null;};}function patchUpdates(_0x1a9d4d){return function(_0x191689){try{jsonpatch[_0x415a('0x22')](_0x191689,_0x1a9d4d,!![]);}catch(_0x4b45dc){return BPromise[_0x415a('0x23')](_0x4b45dc);}return _0x191689[_0x415a('0x24')]();};}function saveUpdates(_0x1b2905,_0x7d4311){return function(_0x5af0cd){if(_0x5af0cd){return _0x5af0cd[_0x415a('0x25')](_0x1b2905)[_0x415a('0x26')](function(_0x3e662c){return _0x3e662c;});}return null;};}function removeEntity(_0x445f7c,_0x153a5d){return function(_0x44d45c){if(_0x44d45c){return _0x44d45c[_0x415a('0x27')]()[_0x415a('0x26')](function(){_0x445f7c[_0x415a('0x1b')](0xcc)[_0x415a('0x1c')]();});}};}function handleEntityNotFound(_0x2e43f6,_0x5629ba){return function(_0x42429c){if(!_0x42429c){_0x2e43f6[_0x415a('0x28')](0x194);}return _0x42429c;};}function handleError(_0x52c49a,_0x525999){_0x525999=_0x525999||0x1f4;return function(_0x4f40b3){logger[_0x415a('0x29')](_0x4f40b3['stack']);if(_0x4f40b3[_0x415a('0x2a')]){delete _0x4f40b3[_0x415a('0x2a')];}_0x52c49a[_0x415a('0x1b')](_0x525999)[_0x415a('0x2b')](_0x4f40b3);};}exports['index']=function(_0x4fdf0e,_0x56cc5d){var _0x15aaeb={},_0xe6108e={},_0x270c33={'count':0x0,'rows':[]};var _0x474067=_[_0x415a('0x2c')](db[_0x415a('0x2d')][_0x415a('0x2e')],function(_0x2a8276){return{'name':_0x2a8276[_0x415a('0x2f')],'type':_0x2a8276['type']['key']};});_0xe6108e[_0x415a('0x30')]=_[_0x415a('0x2c')](_0x474067,_0x415a('0x2a'));_0xe6108e[_0x415a('0x31')]=_[_0x415a('0x32')](_0x4fdf0e[_0x415a('0x31')]);_0xe6108e[_0x415a('0x33')]=_[_0x415a('0x34')](_0xe6108e[_0x415a('0x30')],_0xe6108e['query']);_0x15aaeb[_0x415a('0x35')]=_[_0x415a('0x34')](_0xe6108e[_0x415a('0x30')],qs[_0x415a('0x36')](_0x4fdf0e['query'][_0x415a('0x36')]));_0x15aaeb[_0x415a('0x35')]=_0x15aaeb[_0x415a('0x35')][_0x415a('0x37')]?_0x15aaeb[_0x415a('0x35')]:_0xe6108e[_0x415a('0x30')];if(!_0x4fdf0e[_0x415a('0x31')][_0x415a('0x38')](_0x415a('0x39'))){_0x15aaeb['limit']=qs[_0x415a('0x20')](_0x4fdf0e['query'][_0x415a('0x20')]);_0x15aaeb[_0x415a('0x1f')]=qs[_0x415a('0x1f')](_0x4fdf0e[_0x415a('0x31')][_0x415a('0x1f')]);}_0x15aaeb[_0x415a('0x3a')]=qs[_0x415a('0x3b')](_0x4fdf0e[_0x415a('0x31')][_0x415a('0x3b')]);_0x15aaeb[_0x415a('0x3c')]=qs[_0x415a('0x33')](_[_0x415a('0x3d')](_0x4fdf0e[_0x415a('0x31')],_0xe6108e[_0x415a('0x33')]),_0x474067);if(_0x4fdf0e[_0x415a('0x31')][_0x415a('0x3e')]){_0x15aaeb[_0x415a('0x3c')]=_[_0x415a('0x3f')](_0x15aaeb[_0x415a('0x3c')],{'$or':_[_0x415a('0x2c')](_0x474067,function(_0x501d62){if(_0x501d62[_0x415a('0x40')]!==_0x415a('0x41')){var _0x4737ac={};_0x4737ac[_0x501d62[_0x415a('0x2a')]]={'$like':'%'+_0x4fdf0e[_0x415a('0x31')][_0x415a('0x3e')]+'%'};return _0x4737ac;}})});}_0x15aaeb=_[_0x415a('0x3f')]({},_0x15aaeb,_0x4fdf0e[_0x415a('0x42')]);var _0x369978={'where':_0x15aaeb[_0x415a('0x3c')]};return db[_0x415a('0x2d')]['count'](_0x369978)[_0x415a('0x26')](function(_0x180945){_0x270c33[_0x415a('0x43')]=_0x180945;if(_0x4fdf0e[_0x415a('0x31')][_0x415a('0x44')]){_0x15aaeb[_0x415a('0x45')]=[{'all':!![]}];}return db[_0x415a('0x2d')][_0x415a('0x46')](_0x15aaeb);})[_0x415a('0x26')](function(_0x206416){_0x270c33[_0x415a('0x47')]=_0x206416;return _0x270c33;})['then'](respondWithFilteredResult(_0x56cc5d,_0x15aaeb))['catch'](handleError(_0x56cc5d,null));};exports[_0x415a('0x48')]=function(_0x4ce0b3,_0x2f447b){var _0x5d88dc={'raw':!![],'where':{'id':_0x4ce0b3[_0x415a('0x49')]['id']}},_0x3f2cbc={};_0x3f2cbc['model']=_['keys'](db[_0x415a('0x2d')][_0x415a('0x2e')]);_0x3f2cbc['query']=_['keys'](_0x4ce0b3[_0x415a('0x31')]);_0x3f2cbc[_0x415a('0x33')]=_[_0x415a('0x34')](_0x3f2cbc['model'],_0x3f2cbc['query']);_0x5d88dc[_0x415a('0x35')]=_[_0x415a('0x34')](_0x3f2cbc[_0x415a('0x30')],qs['fields'](_0x4ce0b3[_0x415a('0x31')][_0x415a('0x36')]));_0x5d88dc['attributes']=_0x5d88dc[_0x415a('0x35')][_0x415a('0x37')]?_0x5d88dc['attributes']:_0x3f2cbc[_0x415a('0x30')];if(_0x4ce0b3[_0x415a('0x31')][_0x415a('0x44')]){_0x5d88dc[_0x415a('0x45')]=[{'all':!![]}];}_0x5d88dc=_[_0x415a('0x3f')]({},_0x5d88dc,_0x4ce0b3[_0x415a('0x42')]);return db[_0x415a('0x2d')]['find'](_0x5d88dc)[_0x415a('0x26')](handleEntityNotFound(_0x2f447b,null))[_0x415a('0x26')](respondWithResult(_0x2f447b,null))[_0x415a('0x4a')](handleError(_0x2f447b,null));};exports[_0x415a('0x4b')]=function(_0x10b8ca,_0x4bfede){return db[_0x415a('0x2d')][_0x415a('0x4b')](_0x10b8ca['body'],{})[_0x415a('0x26')](respondWithResult(_0x4bfede,0xc9))[_0x415a('0x4a')](handleError(_0x4bfede,null));};exports[_0x415a('0x25')]=function(_0x28f2be,_0x4410ca){if(_0x28f2be[_0x415a('0x4c')]['id']){delete _0x28f2be[_0x415a('0x4c')]['id'];}return db[_0x415a('0x2d')][_0x415a('0x4d')]({'where':{'id':_0x28f2be[_0x415a('0x49')]['id']}})[_0x415a('0x26')](handleEntityNotFound(_0x4410ca,null))[_0x415a('0x26')](saveUpdates(_0x28f2be['body'],null))[_0x415a('0x26')](respondWithResult(_0x4410ca,null))[_0x415a('0x4a')](handleError(_0x4410ca,null));};exports[_0x415a('0x27')]=function(_0x4117e1,_0x4f038a){return db[_0x415a('0x2d')][_0x415a('0x4d')]({'where':{'id':_0x4117e1[_0x415a('0x49')]['id']}})[_0x415a('0x26')](handleEntityNotFound(_0x4f038a,null))['then'](removeEntity(_0x4f038a,null))[_0x415a('0x4a')](handleError(_0x4f038a,null));};exports['describe']=function(_0xd82564,_0x11d0e1){return db[_0x415a('0x2d')]['describe']()[_0x415a('0x26')](respondWithResult(_0x11d0e1,null))[_0x415a('0x4a')](handleError(_0x11d0e1,null));};
\ No newline at end of file
+var _0xd994=['json','undefined','count','offset','limit','Content-Range','reject','update','then','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','options','MailTransferReport','includeAll','findAll','catch','show','params','include','merge','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','status','end'];(function(_0x9e4ed9,_0x11b3f5){var _0x470300=function(_0x54ee12){while(--_0x54ee12){_0x9e4ed9['push'](_0x9e4ed9['shift']());}};_0x470300(++_0x11b3f5);}(_0xd994,0x1d3));var _0x4d99=function(_0x21af6f,_0x338121){_0x21af6f=_0x21af6f-0x0;var _0x41420b=_0xd994[_0x21af6f];return _0x41420b;};'use strict';var emlformat=require(_0x4d99('0x0'));var rimraf=require(_0x4d99('0x1'));var zipdir=require(_0x4d99('0x2'));var jsonpatch=require(_0x4d99('0x3'));var rp=require(_0x4d99('0x4'));var moment=require('moment');var BPromise=require(_0x4d99('0x5'));var Mustache=require(_0x4d99('0x6'));var util=require(_0x4d99('0x7'));var path=require(_0x4d99('0x8'));var sox=require(_0x4d99('0x9'));var csv=require(_0x4d99('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d99('0xb'));var squel=require('squel');var crypto=require(_0x4d99('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4d99('0xa'));var querystring=require('querystring');var Papa=require(_0x4d99('0xd'));var Redis=require(_0x4d99('0xe'));var authService=require(_0x4d99('0xf'));var qs=require(_0x4d99('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d99('0x11'));var logger=require(_0x4d99('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x4d99('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d99('0x14'))['db'];function respondWithStatusCode(_0x227649,_0x35e775){_0x35e775=_0x35e775||0xcc;return function(_0x5eb193){if(_0x5eb193){return _0x227649['sendStatus'](_0x35e775);}return _0x227649[_0x4d99('0x15')](_0x35e775)[_0x4d99('0x16')]();};}function respondWithResult(_0x427a7c,_0x286ef1){_0x286ef1=_0x286ef1||0xc8;return function(_0x3b3758){if(_0x3b3758){return _0x427a7c['status'](_0x286ef1)[_0x4d99('0x17')](_0x3b3758);}};}function respondWithFilteredResult(_0x3dea95,_0x4e4f2f){return function(_0x131cc0){if(_0x131cc0){var _0x25d13d=typeof _0x4e4f2f['offset']===_0x4d99('0x18')&&typeof _0x4e4f2f['limit']==='undefined';var _0x299a1a=_0x131cc0[_0x4d99('0x19')];var _0x35f14a=_0x25d13d?0x0:_0x4e4f2f[_0x4d99('0x1a')];var _0x17f5e5=_0x25d13d?_0x131cc0['count']:_0x4e4f2f[_0x4d99('0x1a')]+_0x4e4f2f[_0x4d99('0x1b')];var _0x481199;if(_0x17f5e5>=_0x299a1a){_0x17f5e5=_0x299a1a;_0x481199=0xc8;}else{_0x481199=0xce;}_0x3dea95[_0x4d99('0x15')](_0x481199);return _0x3dea95['set'](_0x4d99('0x1c'),_0x35f14a+'-'+_0x17f5e5+'/'+_0x299a1a)[_0x4d99('0x17')](_0x131cc0);}return null;};}function patchUpdates(_0x391870){return function(_0x5240bf){try{jsonpatch['apply'](_0x5240bf,_0x391870,!![]);}catch(_0xd13e36){return BPromise[_0x4d99('0x1d')](_0xd13e36);}return _0x5240bf['save']();};}function saveUpdates(_0xd89049,_0x2d572e){return function(_0x265fae){if(_0x265fae){return _0x265fae[_0x4d99('0x1e')](_0xd89049)[_0x4d99('0x1f')](function(_0x31a58b){return _0x31a58b;});}return null;};}function removeEntity(_0x21d490,_0x100123){return function(_0x4be5df){if(_0x4be5df){return _0x4be5df['destroy']()[_0x4d99('0x1f')](function(){_0x21d490[_0x4d99('0x15')](0xcc)[_0x4d99('0x16')]();});}};}function handleEntityNotFound(_0x6485fd,_0x10081f){return function(_0x30a3a4){if(!_0x30a3a4){_0x6485fd[_0x4d99('0x20')](0x194);}return _0x30a3a4;};}function handleError(_0x2b6f83,_0x2e3e64){_0x2e3e64=_0x2e3e64||0x1f4;return function(_0x2544fd){logger['error'](_0x2544fd[_0x4d99('0x21')]);if(_0x2544fd[_0x4d99('0x22')]){delete _0x2544fd[_0x4d99('0x22')];}_0x2b6f83[_0x4d99('0x15')](_0x2e3e64)[_0x4d99('0x23')](_0x2544fd);};}exports[_0x4d99('0x24')]=function(_0x253ff9,_0x2774c1){var _0x28fd8e={},_0x1c0194={},_0x309e0d={'count':0x0,'rows':[]};var _0x1ed78d=_[_0x4d99('0x25')](db['MailTransferReport'][_0x4d99('0x26')],function(_0xeebf4b){return{'name':_0xeebf4b[_0x4d99('0x27')],'type':_0xeebf4b[_0x4d99('0x28')][_0x4d99('0x29')]};});_0x1c0194[_0x4d99('0x2a')]=_[_0x4d99('0x25')](_0x1ed78d,_0x4d99('0x22'));_0x1c0194[_0x4d99('0x2b')]=_[_0x4d99('0x2c')](_0x253ff9['query']);_0x1c0194[_0x4d99('0x2d')]=_[_0x4d99('0x2e')](_0x1c0194['model'],_0x1c0194[_0x4d99('0x2b')]);_0x28fd8e[_0x4d99('0x2f')]=_[_0x4d99('0x2e')](_0x1c0194[_0x4d99('0x2a')],qs[_0x4d99('0x30')](_0x253ff9['query'][_0x4d99('0x30')]));_0x28fd8e['attributes']=_0x28fd8e[_0x4d99('0x2f')][_0x4d99('0x31')]?_0x28fd8e['attributes']:_0x1c0194[_0x4d99('0x2a')];if(!_0x253ff9['query'][_0x4d99('0x32')](_0x4d99('0x33'))){_0x28fd8e[_0x4d99('0x1b')]=qs[_0x4d99('0x1b')](_0x253ff9[_0x4d99('0x2b')][_0x4d99('0x1b')]);_0x28fd8e[_0x4d99('0x1a')]=qs['offset'](_0x253ff9[_0x4d99('0x2b')][_0x4d99('0x1a')]);}_0x28fd8e[_0x4d99('0x34')]=qs[_0x4d99('0x35')](_0x253ff9[_0x4d99('0x2b')][_0x4d99('0x35')]);_0x28fd8e[_0x4d99('0x36')]=qs[_0x4d99('0x2d')](_['pick'](_0x253ff9[_0x4d99('0x2b')],_0x1c0194[_0x4d99('0x2d')]),_0x1ed78d);if(_0x253ff9['query'][_0x4d99('0x37')]){_0x28fd8e[_0x4d99('0x36')]=_['merge'](_0x28fd8e[_0x4d99('0x36')],{'$or':_[_0x4d99('0x25')](_0x1ed78d,function(_0x48209d){if(_0x48209d[_0x4d99('0x28')]!=='VIRTUAL'){var _0x49e82a={};_0x49e82a[_0x48209d[_0x4d99('0x22')]]={'$like':'%'+_0x253ff9[_0x4d99('0x2b')][_0x4d99('0x37')]+'%'};return _0x49e82a;}})});}_0x28fd8e=_['merge']({},_0x28fd8e,_0x253ff9[_0x4d99('0x38')]);var _0x9f0589={'where':_0x28fd8e['where']};return db[_0x4d99('0x39')]['count'](_0x9f0589)[_0x4d99('0x1f')](function(_0x3cf82d){_0x309e0d[_0x4d99('0x19')]=_0x3cf82d;if(_0x253ff9[_0x4d99('0x2b')][_0x4d99('0x3a')]){_0x28fd8e['include']=[{'all':!![]}];}return db[_0x4d99('0x39')][_0x4d99('0x3b')](_0x28fd8e);})[_0x4d99('0x1f')](function(_0x290fb8){_0x309e0d['rows']=_0x290fb8;return _0x309e0d;})[_0x4d99('0x1f')](respondWithFilteredResult(_0x2774c1,_0x28fd8e))[_0x4d99('0x3c')](handleError(_0x2774c1,null));};exports[_0x4d99('0x3d')]=function(_0x40522f,_0x11a1aa){var _0x1f6746={'raw':!![],'where':{'id':_0x40522f[_0x4d99('0x3e')]['id']}},_0x5ef5fe={};_0x5ef5fe['model']=_[_0x4d99('0x2c')](db[_0x4d99('0x39')][_0x4d99('0x26')]);_0x5ef5fe[_0x4d99('0x2b')]=_[_0x4d99('0x2c')](_0x40522f[_0x4d99('0x2b')]);_0x5ef5fe[_0x4d99('0x2d')]=_['intersection'](_0x5ef5fe[_0x4d99('0x2a')],_0x5ef5fe[_0x4d99('0x2b')]);_0x1f6746['attributes']=_['intersection'](_0x5ef5fe[_0x4d99('0x2a')],qs[_0x4d99('0x30')](_0x40522f[_0x4d99('0x2b')][_0x4d99('0x30')]));_0x1f6746[_0x4d99('0x2f')]=_0x1f6746[_0x4d99('0x2f')][_0x4d99('0x31')]?_0x1f6746[_0x4d99('0x2f')]:_0x5ef5fe[_0x4d99('0x2a')];if(_0x40522f['query'][_0x4d99('0x3a')]){_0x1f6746[_0x4d99('0x3f')]=[{'all':!![]}];}_0x1f6746=_[_0x4d99('0x40')]({},_0x1f6746,_0x40522f[_0x4d99('0x38')]);return db[_0x4d99('0x39')]['find'](_0x1f6746)[_0x4d99('0x1f')](handleEntityNotFound(_0x11a1aa,null))['then'](respondWithResult(_0x11a1aa,null))['catch'](handleError(_0x11a1aa,null));};exports[_0x4d99('0x41')]=function(_0xa01cc1,_0x544ef6){return db[_0x4d99('0x39')]['create'](_0xa01cc1[_0x4d99('0x42')],{})[_0x4d99('0x1f')](respondWithResult(_0x544ef6,0xc9))[_0x4d99('0x3c')](handleError(_0x544ef6,null));};exports[_0x4d99('0x1e')]=function(_0x552c90,_0x47f2d0){if(_0x552c90[_0x4d99('0x42')]['id']){delete _0x552c90['body']['id'];}return db['MailTransferReport'][_0x4d99('0x43')]({'where':{'id':_0x552c90['params']['id']}})['then'](handleEntityNotFound(_0x47f2d0,null))['then'](saveUpdates(_0x552c90[_0x4d99('0x42')],null))[_0x4d99('0x1f')](respondWithResult(_0x47f2d0,null))[_0x4d99('0x3c')](handleError(_0x47f2d0,null));};exports[_0x4d99('0x44')]=function(_0x219298,_0x2c99bb){return db[_0x4d99('0x39')][_0x4d99('0x43')]({'where':{'id':_0x219298['params']['id']}})['then'](handleEntityNotFound(_0x2c99bb,null))[_0x4d99('0x1f')](removeEntity(_0x2c99bb,null))[_0x4d99('0x3c')](handleError(_0x2c99bb,null));};exports[_0x4d99('0x45')]=function(_0x3f6b44,_0x21a72e){return db[_0x4d99('0x39')][_0x4d99('0x45')]()['then'](respondWithResult(_0x21a72e,null))['catch'](handleError(_0x21a72e,null));};
\ No newline at end of file
index 13153ed..928fc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1b3=['report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport'];(function(_0x2f23c8,_0x1fe897){var _0x75a9c5=function(_0x45628a){while(--_0x45628a){_0x2f23c8['push'](_0x2f23c8['shift']());}};_0x75a9c5(++_0x1fe897);}(_0xd1b3,0xec));var _0x3d1b=function(_0x5e57e0,_0x356d87){_0x5e57e0=_0x5e57e0-0x0;var _0x1be2bd=_0xd1b3[_0x5e57e0];return _0x1be2bd;};'use strict';var _=require(_0x3d1b('0x0'));var util=require(_0x3d1b('0x1'));var logger=require(_0x3d1b('0x2'))(_0x3d1b('0x3'));var moment=require(_0x3d1b('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3d1b('0x5'));var config=require(_0x3d1b('0x6'));var attributes=require(_0x3d1b('0x7'));module[_0x3d1b('0x8')]=function(_0x1c409e,_0x45bd2b){return _0x1c409e[_0x3d1b('0x9')](_0x3d1b('0xa'),attributes,{'tableName':_0x3d1b('0xb'),'paranoid':![],'indexes':[{'name':_0x3d1b('0xc'),'fields':[_0x3d1b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd694=['moment','bluebird','path','../../config/environment','./mailTransferReport.attributes','define','MailTransferReport','uniqueid','lodash','../../config/logger','api'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xd694,0x11b));var _0x4d69=function(_0xb1c60b,_0x385134){_0xb1c60b=_0xb1c60b-0x0;var _0x4c391d=_0xd694[_0xb1c60b];return _0x4c391d;};'use strict';var _=require(_0x4d69('0x0'));var util=require('util');var logger=require(_0x4d69('0x1'))(_0x4d69('0x2'));var moment=require(_0x4d69('0x3'));var BPromise=require(_0x4d69('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d69('0x5'));var rimraf=require('rimraf');var config=require(_0x4d69('0x6'));var attributes=require(_0x4d69('0x7'));module['exports']=function(_0x2b85a8,_0x3e4906){return _0x2b85a8[_0x4d69('0x8')](_0x4d69('0x9'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x4d69('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index d3a9e3b..2f5e96a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MailTransferReport,\x20%s,\x20%s','message','info','catch','lodash','util'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xe14d,0x140));var _0xde14=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0xe14d[_0x3826ad];return _0x17b900;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var moment=require(_0xde14('0x2'));var BPromise=require(_0xde14('0x3'));var rs=require(_0xde14('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xde14('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xde14('0x6'))(_0xde14('0x7'));var config=require(_0xde14('0x8'));var jayson=require(_0xde14('0x9'));var client=jayson[_0xde14('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x539ba6,_0x202141,_0x582313){return new BPromise(function(_0x5df62a,_0x206682){return client[_0xde14('0xb')](_0x539ba6,_0x582313)[_0xde14('0xc')](function(_0x309d9d){logger['info']('MailTransferReport,\x20%s,\x20%s',_0x202141,_0xde14('0xd'));logger[_0xde14('0xe')](_0xde14('0xf'),_0x202141,_0xde14('0xd'),JSON[_0xde14('0x10')](_0x309d9d));if(_0x309d9d[_0xde14('0x11')]){if(_0x309d9d['error'][_0xde14('0x12')]===0x1f4){logger[_0xde14('0x11')](_0xde14('0x13'),_0x202141,_0x309d9d[_0xde14('0x11')]['message']);return _0x206682(_0x309d9d[_0xde14('0x11')][_0xde14('0x14')]);}logger[_0xde14('0x11')](_0xde14('0x13'),_0x202141,_0x309d9d[_0xde14('0x11')]['message']);return _0x5df62a(_0x309d9d['error'][_0xde14('0x14')]);}else{logger[_0xde14('0x15')](_0xde14('0x13'),_0x202141,_0xde14('0xd'));_0x5df62a(_0x309d9d['result'][_0xde14('0x14')]);}})[_0xde14('0x16')](function(_0x54b0f3){logger[_0xde14('0x11')](_0xde14('0x13'),_0x202141,_0x54b0f3);_0x206682(_0x54b0f3);});});}
\ No newline at end of file
+var _0xf615=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','randomstring'];(function(_0x4916ad,_0x19a9c9){var _0x210bd5=function(_0x30fa74){while(--_0x30fa74){_0x4916ad['push'](_0x4916ad['shift']());}};_0x210bd5(++_0x19a9c9);}(_0xf615,0x8d));var _0x5f61=function(_0x4b935a,_0x327ee3){_0x4b935a=_0x4b935a-0x0;var _0xa298f0=_0xf615[_0x4b935a];return _0xa298f0;};'use strict';var _=require(_0x5f61('0x0'));var util=require(_0x5f61('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5f61('0x2'));var fs=require('fs');var Redis=require(_0x5f61('0x3'));var db=require(_0x5f61('0x4'))['db'];var utils=require(_0x5f61('0x5'));var logger=require(_0x5f61('0x6'))(_0x5f61('0x7'));var config=require(_0x5f61('0x8'));var jayson=require(_0x5f61('0x9'));var client=jayson[_0x5f61('0xa')][_0x5f61('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cf7fc,_0x2b233a,_0x1de5d8){return new BPromise(function(_0xc87a07,_0x35711c){return client[_0x5f61('0xc')](_0x1cf7fc,_0x1de5d8)[_0x5f61('0xd')](function(_0x133ef5){logger[_0x5f61('0xe')](_0x5f61('0xf'),_0x2b233a,_0x5f61('0x10'));logger[_0x5f61('0x11')](_0x5f61('0x12'),_0x2b233a,_0x5f61('0x10'),JSON[_0x5f61('0x13')](_0x133ef5));if(_0x133ef5[_0x5f61('0x14')]){if(_0x133ef5[_0x5f61('0x14')][_0x5f61('0x15')]===0x1f4){logger[_0x5f61('0x14')](_0x5f61('0xf'),_0x2b233a,_0x133ef5[_0x5f61('0x14')]['message']);return _0x35711c(_0x133ef5[_0x5f61('0x14')][_0x5f61('0x16')]);}logger[_0x5f61('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x2b233a,_0x133ef5[_0x5f61('0x14')]['message']);return _0xc87a07(_0x133ef5[_0x5f61('0x14')]['message']);}else{logger['info']('MailTransferReport,\x20%s,\x20%s',_0x2b233a,_0x5f61('0x10'));_0xc87a07(_0x133ef5[_0x5f61('0x17')][_0x5f61('0x16')]);}})['catch'](function(_0x435779){logger[_0x5f61('0x14')](_0x5f61('0xf'),_0x2b233a,_0x435779);_0x35711c(_0x435779);});});}
\ No newline at end of file
index f8910d7..003d39c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5260=['put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0xbcfb9a,_0x5aebb4){var _0x38155a=function(_0x1a4ab9){while(--_0x1a4ab9){_0xbcfb9a['push'](_0xbcfb9a['shift']());}};_0x38155a(++_0x5aebb4);}(_0x5260,0x1d1));var _0x0526=function(_0x386c17,_0x528ea8){_0x386c17=_0x386c17-0x0;var _0x19e636=_0x5260[_0x386c17];return _0x19e636;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0526('0x0'));var timeout=require(_0x0526('0x1'));var express=require(_0x0526('0x2'));var router=express[_0x0526('0x3')]();var fs_extra=require(_0x0526('0x4'));var auth=require(_0x0526('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0526('0x6'));router[_0x0526('0x7')]('/',auth[_0x0526('0x8')](),controller[_0x0526('0x9')]);router['get'](_0x0526('0xa'),auth['isAuthenticated'](),controller[_0x0526('0xb')]);router[_0x0526('0x7')](_0x0526('0xc'),auth['isAuthenticated'](),controller[_0x0526('0xd')]);router[_0x0526('0xe')]('/',auth[_0x0526('0x8')](),controller['create']);router[_0x0526('0xf')](_0x0526('0xc'),auth[_0x0526('0x8')](),controller[_0x0526('0x10')]);router[_0x0526('0x11')](_0x0526('0xc'),auth[_0x0526('0x8')](),controller[_0x0526('0x12')]);module[_0x0526('0x13')]=router;
\ No newline at end of file
+var _0xcbde=['post','create','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','isAuthenticated','index','get','/describe','/:id','show'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcbde,0x165));var _0xecbd=function(_0x40ebee,_0x553916){_0x40ebee=_0x40ebee-0x0;var _0x22dbeb=_0xcbde[_0x40ebee];return _0x22dbeb;};'use strict';var multer=require(_0xecbd('0x0'));var util=require(_0xecbd('0x1'));var path=require(_0xecbd('0x2'));var timeout=require(_0xecbd('0x3'));var express=require(_0xecbd('0x4'));var router=express[_0xecbd('0x5')]();var fs_extra=require(_0xecbd('0x6'));var auth=require(_0xecbd('0x7'));var interaction=require(_0xecbd('0x8'));var config=require(_0xecbd('0x9'));var controller=require(_0xecbd('0xa'));router['get']('/',auth[_0xecbd('0xb')](),controller[_0xecbd('0xc')]);router[_0xecbd('0xd')](_0xecbd('0xe'),auth['isAuthenticated'](),controller['describe']);router[_0xecbd('0xd')](_0xecbd('0xf'),auth['isAuthenticated'](),controller[_0xecbd('0x10')]);router[_0xecbd('0x11')]('/',auth['isAuthenticated'](),controller[_0xecbd('0x12')]);router[_0xecbd('0x13')](_0xecbd('0xf'),auth[_0xecbd('0xb')](),controller[_0xecbd('0x14')]);router[_0xecbd('0x15')](_0xecbd('0xf'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d558cd0..34bfd93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d2d=['DATE','getDataValue','enterAt','diff','seconds','setDataValue','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[queue]','INTEGER','sequelize','moment','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING'];(function(_0x48e5c7,_0x164d41){var _0x2787b8=function(_0x407b5e){while(--_0x407b5e){_0x48e5c7['push'](_0x48e5c7['shift']());}};_0x2787b8(++_0x164d41);}(_0x3d2d,0xcd));var _0xd3d2=function(_0x32b993,_0x1c5989){_0x32b993=_0x32b993-0x0;var _0x482780=_0x3d2d[_0x32b993];return _0x482780;};'use strict';var Sequelize=require(_0xd3d2('0x0'));var moment=require(_0xd3d2('0x1'));module['exports']={'channel':{'type':Sequelize[_0xd3d2('0x2')]},'membername':{'type':Sequelize[_0xd3d2('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING'],'defaultValue':_0xd3d2('0x3'),'comment':_0xd3d2('0x4')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xd3d2('0x5')],'set':function(_0xe180d6){var _0x32b66f=moment(_0xe180d6);var _0x3d822c=moment(this[_0xd3d2('0x6')](_0xd3d2('0x7')));var _0x3ec065=_0x32b66f[_0xd3d2('0x8')](_0x3d822c,_0xd3d2('0x9'));this[_0xd3d2('0xa')]('exitAt',_0xe180d6);this['setDataValue']('duration',_0x3ec065>=0x0?_0x3ec065:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0xd3d2('0xb')},'data2':{'type':Sequelize[_0xd3d2('0x2')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xd3d2('0x2')],'comment':_0xd3d2('0xc')},'data4':{'type':Sequelize['STRING'],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0xd3d2('0x2')],'comment':_0xd3d2('0xd')},'role':{'type':Sequelize[_0xd3d2('0x2')]},'internal':{'type':Sequelize[_0xd3d2('0xe')]},'uniqueid':{'type':Sequelize[_0xd3d2('0x2')]}};
\ No newline at end of file
+var _0x6355=['sequelize','moment','exports','STRING','INTEGER','DATE','getDataValue','diff','seconds','exitAt','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]'];(function(_0x4bacb6,_0x2b299d){var _0x58c029=function(_0x2faaf5){while(--_0x2faaf5){_0x4bacb6['push'](_0x4bacb6['shift']());}};_0x58c029(++_0x2b299d);}(_0x6355,0xcc));var _0x5635=function(_0x1ab532,_0x2ca09a){_0x1ab532=_0x1ab532-0x0;var _0x4f87ba=_0x6355[_0x1ab532];return _0x4f87ba;};'use strict';var Sequelize=require(_0x5635('0x0'));var moment=require(_0x5635('0x1'));module[_0x5635('0x2')]={'channel':{'type':Sequelize[_0x5635('0x3')]},'membername':{'type':Sequelize[_0x5635('0x3')]},'interface':{'type':Sequelize[_0x5635('0x3')]},'type':{'type':Sequelize[_0x5635('0x3')],'defaultValue':'DEFAULT\x20PAUSE','comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x5635('0x4')]},'enterAt':{'type':Sequelize[_0x5635('0x5')]},'exitAt':{'type':Sequelize[_0x5635('0x5')],'set':function(_0x49cced){var _0x43f1cf=moment(_0x49cced);var _0x480a26=moment(this[_0x5635('0x6')]('enterAt'));var _0x9996d9=_0x43f1cf[_0x5635('0x7')](_0x480a26,_0x5635('0x8'));this['setDataValue'](_0x5635('0x9'),_0x49cced);this[_0x5635('0xa')](_0x5635('0xb'),_0x9996d9>=0x0?_0x9996d9:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x5635('0xc')},'data2':{'type':Sequelize[_0x5635('0x3')],'comment':_0x5635('0xd')},'data3':{'type':Sequelize[_0x5635('0x3')],'comment':_0x5635('0xe')},'data4':{'type':Sequelize[_0x5635('0x3')],'comment':_0x5635('0xf')},'data5':{'type':Sequelize[_0x5635('0x3')],'comment':_0x5635('0x10')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x5635('0x3')]}};
\ No newline at end of file
index 2509998..5de5885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['catch','params','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x3c6664,_0x148e7d){var _0x557046=function(_0x24eea3){while(--_0x24eea3){_0x3c6664['push'](_0x3c6664['shift']());}};_0x557046(++_0x148e7d);}(_0x9c44,0x178));var _0x49c4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c44[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
+var _0x55ca=['merge','filter','includeAll','include','findAll','rawAttributes','options','create','body','find','params','catch','destroy','describe','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','end','sendStatus','error','stack','name','send','index','map','MemberReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x55ca,0x126));var _0xa55c=function(_0x46cb35,_0x2b92ab){_0x46cb35=_0x46cb35-0x0;var _0x847507=_0x55ca[_0x46cb35];return _0x847507;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){_0x1fc828['status'](0xcc)[_0xa55c('0x21')]();});}};}function handleEntityNotFound(_0x190757,_0x3f64de){return function(_0xf0e574){if(!_0xf0e574){_0x190757[_0xa55c('0x22')](0x194);}return _0xf0e574;};}function handleError(_0x170ba4,_0x1da633){_0x1da633=_0x1da633||0x1f4;return function(_0x11e7f7){logger[_0xa55c('0x23')](_0x11e7f7[_0xa55c('0x24')]);if(_0x11e7f7[_0xa55c('0x25')]){delete _0x11e7f7['name'];}_0x170ba4[_0xa55c('0x18')](_0x1da633)[_0xa55c('0x26')](_0x11e7f7);};}exports[_0xa55c('0x27')]=function(_0x906caa,_0x5d940d){var _0x1377b0={},_0x22f6b6={},_0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x28')](db[_0xa55c('0x29')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x2a')][_0xa55c('0x2b')]};});_0x22f6b6[_0xa55c('0x2c')]=_[_0xa55c('0x28')](_0x201941,'name');_0x22f6b6[_0xa55c('0x2d')]=_[_0xa55c('0x2e')](_0x906caa[_0xa55c('0x2d')]);_0x22f6b6[_0xa55c('0x2f')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],_0x22f6b6[_0xa55c('0x2d')]);_0x1377b0[_0xa55c('0x31')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x906caa['query']['fields']));_0x1377b0[_0xa55c('0x31')]=_0x1377b0[_0xa55c('0x31')]['length']?_0x1377b0[_0xa55c('0x31')]:_0x22f6b6[_0xa55c('0x2c')];if(!_0x906caa[_0xa55c('0x2d')][_0xa55c('0x33')](_0xa55c('0x34'))){_0x1377b0[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x906caa[_0xa55c('0x2d')][_0xa55c('0x1c')]);_0x1377b0['offset']=qs['offset'](_0x906caa['query'][_0xa55c('0x1a')]);}_0x1377b0[_0xa55c('0x35')]=qs[_0xa55c('0x36')](_0x906caa['query'][_0xa55c('0x36')]);_0x1377b0['where']=qs[_0xa55c('0x2f')](_['pick'](_0x906caa[_0xa55c('0x2d')],_0x22f6b6[_0xa55c('0x2f')]),_0x201941);if(_0x906caa[_0xa55c('0x2d')]['filter']){_0x1377b0[_0xa55c('0x37')]=_[_0xa55c('0x38')](_0x1377b0['where'],{'$or':_[_0xa55c('0x28')](_0x201941,function(_0x194e78){if(_0x194e78['type']!=='VIRTUAL'){var _0x235f6b={};_0x235f6b[_0x194e78['name']]={'$like':'%'+_0x906caa[_0xa55c('0x2d')][_0xa55c('0x39')]+'%'};return _0x235f6b;}})});}_0x1377b0=_['merge']({},_0x1377b0,_0x906caa['options']);var _0x5e50b6={'where':_0x1377b0['where']};return db[_0xa55c('0x29')][_0xa55c('0x1d')](_0x5e50b6)[_0xa55c('0x20')](function(_0x99c4f8){_0x1b8388[_0xa55c('0x1d')]=_0x99c4f8;if(_0x906caa['query'][_0xa55c('0x3a')]){_0x1377b0[_0xa55c('0x3b')]=[{'all':!![]}];}return db[_0xa55c('0x29')][_0xa55c('0x3c')](_0x1377b0);})[_0xa55c('0x20')](function(_0x23cef5){_0x1b8388['rows']=_0x23cef5;return _0x1b8388;})[_0xa55c('0x20')](respondWithFilteredResult(_0x5d940d,_0x1377b0))['catch'](handleError(_0x5d940d,null));};exports['show']=function(_0x404e7f,_0x1f63d8){var _0x496920={'raw':!![],'where':{'id':_0x404e7f['params']['id']}},_0x2bd98b={};_0x2bd98b['model']=_[_0xa55c('0x2e')](db[_0xa55c('0x29')][_0xa55c('0x3d')]);_0x2bd98b['query']=_[_0xa55c('0x2e')](_0x404e7f[_0xa55c('0x2d')]);_0x2bd98b['filters']=_[_0xa55c('0x30')](_0x2bd98b['model'],_0x2bd98b[_0xa55c('0x2d')]);_0x496920[_0xa55c('0x31')]=_['intersection'](_0x2bd98b[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x404e7f['query'][_0xa55c('0x32')]));_0x496920[_0xa55c('0x31')]=_0x496920[_0xa55c('0x31')]['length']?_0x496920[_0xa55c('0x31')]:_0x2bd98b['model'];if(_0x404e7f[_0xa55c('0x2d')][_0xa55c('0x3a')]){_0x496920[_0xa55c('0x3b')]=[{'all':!![]}];}_0x496920=_['merge']({},_0x496920,_0x404e7f[_0xa55c('0x3e')]);return db[_0xa55c('0x29')]['find'](_0x496920)[_0xa55c('0x20')](handleEntityNotFound(_0x1f63d8,null))[_0xa55c('0x20')](respondWithResult(_0x1f63d8,null))['catch'](handleError(_0x1f63d8,null));};exports[_0xa55c('0x3f')]=function(_0xd3fe78,_0x52f9a7){return db[_0xa55c('0x29')][_0xa55c('0x3f')](_0xd3fe78[_0xa55c('0x40')],{})[_0xa55c('0x20')](respondWithResult(_0x52f9a7,0xc9))['catch'](handleError(_0x52f9a7,null));};exports[_0xa55c('0x1f')]=function(_0x58a7ea,_0x2157d6){if(_0x58a7ea[_0xa55c('0x40')]['id']){delete _0x58a7ea[_0xa55c('0x40')]['id'];}return db['MemberReport'][_0xa55c('0x41')]({'where':{'id':_0x58a7ea[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x2157d6,null))[_0xa55c('0x20')](saveUpdates(_0x58a7ea[_0xa55c('0x40')],null))[_0xa55c('0x20')](respondWithResult(_0x2157d6,null))[_0xa55c('0x43')](handleError(_0x2157d6,null));};exports[_0xa55c('0x44')]=function(_0x1c84d9,_0x1e1293){return db[_0xa55c('0x29')][_0xa55c('0x41')]({'where':{'id':_0x1c84d9[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x1e1293,null))[_0xa55c('0x20')](removeEntity(_0x1e1293,null))[_0xa55c('0x43')](handleError(_0x1e1293,null));};exports[_0xa55c('0x45')]=function(_0x4f73b6,_0x4c3095){return db[_0xa55c('0x29')]['describe']()[_0xa55c('0x20')](respondWithResult(_0x4c3095,null))['catch'](handleError(_0x4c3095,null));};
\ No newline at end of file
index 3fc9cf2..674e529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a68=['../../config/environment','./memberReport.attributes','exports','report_member','membername_interface','interface','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2a68,0x148));var _0x82a6=function(_0x4bd29a,_0x1b88ff){_0x4bd29a=_0x4bd29a-0x0;var _0xdf0693=_0x2a68[_0x4bd29a];return _0xdf0693;};'use strict';var _=require(_0x82a6('0x0'));var util=require(_0x82a6('0x1'));var logger=require(_0x82a6('0x2'))(_0x82a6('0x3'));var moment=require(_0x82a6('0x4'));var BPromise=require(_0x82a6('0x5'));var rp=require(_0x82a6('0x6'));var fs=require('fs');var path=require(_0x82a6('0x7'));var rimraf=require('rimraf');var config=require(_0x82a6('0x8'));var attributes=require(_0x82a6('0x9'));module[_0x82a6('0xa')]=function(_0x332afc,_0x1d7ad8){return _0x332afc['define']('MemberReport',attributes,{'tableName':_0x82a6('0xb'),'paranoid':![],'indexes':[{'name':_0x82a6('0xc'),'fields':['membername',_0x82a6('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6615=['util','api','moment','bluebird','request-promise','../../config/environment','./memberReport.attributes','define','report_member','membername','interface','lodash'];(function(_0x5e0bfe,_0x747312){var _0x6468b8=function(_0x20e5e0){while(--_0x20e5e0){_0x5e0bfe['push'](_0x5e0bfe['shift']());}};_0x6468b8(++_0x747312);}(_0x6615,0x8f));var _0x5661=function(_0x352b49,_0x16a4ee){_0x352b49=_0x352b49-0x0;var _0x2e314a=_0x6615[_0x352b49];return _0x2e314a;};'use strict';var _=require(_0x5661('0x0'));var util=require(_0x5661('0x1'));var logger=require('../../config/logger')(_0x5661('0x2'));var moment=require(_0x5661('0x3'));var BPromise=require(_0x5661('0x4'));var rp=require(_0x5661('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5661('0x6'));var attributes=require(_0x5661('0x7'));module['exports']=function(_0x3bbfee,_0x2742ea){return _0x3bbfee[_0x5661('0x8')]('MemberReport',attributes,{'tableName':_0x5661('0x9'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0x5661('0xa'),_0x5661('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 95f7e07..d91324f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01db=['../../config/environment','jayson/promise','client','http','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','MemberReport','options','raw','attributes','limit','include','map','model','GetMemberReport','CreateMemberReport','body','UpdateMemberReport','update','where','lodash','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x01db,0x171));var _0xb01d=function(_0x3e8b8e,_0x2e0c35){_0x3e8b8e=_0x3e8b8e-0x0;var _0x4bf399=_0x01db[_0x3e8b8e];return _0x4bf399;};'use strict';var _=require(_0xb01d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb01d('0x1'));var rs=require(_0xb01d('0x2'));var fs=require('fs');var Redis=require(_0xb01d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb01d('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xb01d('0x5'));var jayson=require(_0xb01d('0x6'));var client=jayson[_0xb01d('0x7')][_0xb01d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2622e9,_0x37720d,_0x3c45a3){return new BPromise(function(_0x4429dd,_0x518609){return client['request'](_0x2622e9,_0x3c45a3)[_0xb01d('0x9')](function(_0x28f028){logger[_0xb01d('0xa')](_0xb01d('0xb'),_0x37720d,_0xb01d('0xc'));logger[_0xb01d('0xd')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x37720d,'request\x20sent',JSON[_0xb01d('0xe')](_0x28f028));if(_0x28f028[_0xb01d('0xf')]){if(_0x28f028[_0xb01d('0xf')][_0xb01d('0x10')]===0x1f4){logger[_0xb01d('0xf')](_0xb01d('0xb'),_0x37720d,_0x28f028[_0xb01d('0xf')]['message']);return _0x518609(_0x28f028['error'][_0xb01d('0x11')]);}logger['error'](_0xb01d('0xb'),_0x37720d,_0x28f028[_0xb01d('0xf')]['message']);return _0x4429dd(_0x28f028[_0xb01d('0xf')][_0xb01d('0x11')]);}else{logger[_0xb01d('0xa')](_0xb01d('0xb'),_0x37720d,'request\x20sent');_0x4429dd(_0x28f028[_0xb01d('0x12')]['message']);}})[_0xb01d('0x13')](function(_0x9a96e){logger[_0xb01d('0xf')](_0xb01d('0xb'),_0x37720d,_0x9a96e);_0x518609(_0x9a96e);});});}exports['GetMemberReport']=function(_0xe47874){var _0x45454b=this;return new Promise(function(_0x39eaaf,_0x5c891a){return db[_0xb01d('0x14')]['findAll']({'raw':_0xe47874[_0xb01d('0x15')]?_0xe47874[_0xb01d('0x15')][_0xb01d('0x16')]===undefined?!![]:![]:!![],'where':_0xe47874[_0xb01d('0x15')]?_0xe47874[_0xb01d('0x15')]['where']||null:null,'attributes':_0xe47874[_0xb01d('0x15')]?_0xe47874[_0xb01d('0x15')][_0xb01d('0x17')]||null:null,'limit':_0xe47874[_0xb01d('0x15')]?_0xe47874[_0xb01d('0x15')][_0xb01d('0x18')]||null:null,'include':_0xe47874[_0xb01d('0x15')]?_0xe47874[_0xb01d('0x15')][_0xb01d('0x19')]?_[_0xb01d('0x1a')](_0xe47874[_0xb01d('0x15')][_0xb01d('0x19')],function(_0x515d52){return{'model':db[_0x515d52[_0xb01d('0x1b')]],'as':_0x515d52['as'],'attributes':_0x515d52['attributes'],'include':_0x515d52[_0xb01d('0x19')]?_[_0xb01d('0x1a')](_0x515d52[_0xb01d('0x19')],function(_0x3ce3f8){return{'model':db[_0x3ce3f8[_0xb01d('0x1b')]],'as':_0x3ce3f8['as'],'attributes':_0x3ce3f8[_0xb01d('0x17')],'include':_0x3ce3f8[_0xb01d('0x19')]?_[_0xb01d('0x1a')](_0x3ce3f8[_0xb01d('0x19')],function(_0x1236c2){return{'model':db[_0x1236c2[_0xb01d('0x1b')]],'as':_0x1236c2['as'],'attributes':_0x1236c2['attributes']};}):[]};}):[]};}):[]:[]})[_0xb01d('0x9')](function(_0x37e513){logger[_0xb01d('0xa')]('GetMemberReport',_0xe47874);logger[_0xb01d('0xd')](_0xb01d('0x1c'),_0xe47874,JSON[_0xb01d('0xe')](_0x37e513));_0x39eaaf(_0x37e513);})['catch'](function(_0x29b32c){logger['error'](_0xb01d('0x1c'),_0x29b32c[_0xb01d('0x11')],_0xe47874);_0x5c891a(_0x45454b[_0xb01d('0xf')](0x1f4,_0x29b32c['message']));});});};exports[_0xb01d('0x1d')]=function(_0x2f0f7c){var _0x1666a1=this;return new Promise(function(_0x13ea95,_0x1ba23e){return db[_0xb01d('0x14')]['create'](_0x2f0f7c[_0xb01d('0x1e')],{'raw':_0x2f0f7c[_0xb01d('0x15')]?_0x2f0f7c[_0xb01d('0x15')]['raw']===undefined?!![]:![]:!![]})[_0xb01d('0x9')](function(_0x48e238){logger['info'](_0xb01d('0x1d'),_0x2f0f7c);logger[_0xb01d('0xd')]('CreateMemberReport',_0x2f0f7c,JSON['stringify'](_0x48e238));_0x13ea95(_0x48e238);})[_0xb01d('0x13')](function(_0x16046e){logger[_0xb01d('0xf')](_0xb01d('0x1d'),_0x16046e[_0xb01d('0x11')],_0x2f0f7c);_0x1ba23e(_0x1666a1[_0xb01d('0xf')](0x1f4,_0x16046e[_0xb01d('0x11')]));});});};exports[_0xb01d('0x1f')]=function(_0x186c51){var _0x4a31ea=this;return new Promise(function(_0x314fc5,_0x20bb65){return db[_0xb01d('0x14')][_0xb01d('0x20')](_0x186c51['body'],{'raw':_0x186c51[_0xb01d('0x15')]?_0x186c51['options'][_0xb01d('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x186c51[_0xb01d('0x15')]?_0x186c51[_0xb01d('0x15')][_0xb01d('0x21')]||null:null,'attributes':_0x186c51['options']?_0x186c51[_0xb01d('0x15')][_0xb01d('0x17')]||null:null,'limit':_0x186c51[_0xb01d('0x15')]?_0x186c51[_0xb01d('0x15')][_0xb01d('0x18')]||null:null})['then'](function(_0x76d421){logger[_0xb01d('0xa')](_0xb01d('0x1f'),_0x186c51);logger[_0xb01d('0xd')](_0xb01d('0x1f'),_0x186c51,JSON[_0xb01d('0xe')](_0x76d421));_0x314fc5(_0x76d421);})[_0xb01d('0x13')](function(_0x5d191c){logger['error'](_0xb01d('0x1f'),_0x5d191c['message'],_0x186c51);_0x20bb65(_0x4a31ea[_0xb01d('0xf')](0x1f4,_0x5d191c[_0xb01d('0x11')]));});});};
\ No newline at end of file
+var _0xc962=['body','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','MemberReport,\x20%s,\x20%s','message','catch','GetMemberReport','findAll','options','where','attributes','limit','include','map','model','CreateMemberReport','MemberReport','create','raw','info','UpdateMemberReport'];(function(_0x4d6bfd,_0x8d79ff){var _0x243a46=function(_0x3883b1){while(--_0x3883b1){_0x4d6bfd['push'](_0x4d6bfd['shift']());}};_0x243a46(++_0x8d79ff);}(_0xc962,0x6d));var _0x2c96=function(_0x274a65,_0x11af0c){_0x274a65=_0x274a65-0x0;var _0x19f2af=_0xc962[_0x274a65];return _0x19f2af;};'use strict';var _=require(_0x2c96('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2c96('0x1'));var fs=require('fs');var Redis=require(_0x2c96('0x2'));var db=require(_0x2c96('0x3'))['db'];var utils=require(_0x2c96('0x4'));var logger=require(_0x2c96('0x5'))(_0x2c96('0x6'));var config=require(_0x2c96('0x7'));var jayson=require(_0x2c96('0x8'));var client=jayson['client'][_0x2c96('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2df446,_0x1f9859,_0x17a493){return new BPromise(function(_0x13aee2,_0x36dd95){return client[_0x2c96('0xa')](_0x2df446,_0x17a493)[_0x2c96('0xb')](function(_0x30ffef){logger['info']('MemberReport,\x20%s,\x20%s',_0x1f9859,_0x2c96('0xc'));logger[_0x2c96('0xd')](_0x2c96('0xe'),_0x1f9859,_0x2c96('0xc'),JSON[_0x2c96('0xf')](_0x30ffef));if(_0x30ffef[_0x2c96('0x10')]){if(_0x30ffef['error']['code']===0x1f4){logger[_0x2c96('0x10')](_0x2c96('0x11'),_0x1f9859,_0x30ffef[_0x2c96('0x10')][_0x2c96('0x12')]);return _0x36dd95(_0x30ffef[_0x2c96('0x10')][_0x2c96('0x12')]);}logger[_0x2c96('0x10')]('MemberReport,\x20%s,\x20%s',_0x1f9859,_0x30ffef['error']['message']);return _0x13aee2(_0x30ffef[_0x2c96('0x10')][_0x2c96('0x12')]);}else{logger['info'](_0x2c96('0x11'),_0x1f9859,_0x2c96('0xc'));_0x13aee2(_0x30ffef['result'][_0x2c96('0x12')]);}})[_0x2c96('0x13')](function(_0x2b26b4){logger[_0x2c96('0x10')](_0x2c96('0x11'),_0x1f9859,_0x2b26b4);_0x36dd95(_0x2b26b4);});});}exports[_0x2c96('0x14')]=function(_0x2ccbed){var _0x2529b0=this;return new Promise(function(_0x3fde3e,_0x48b420){return db['MemberReport'][_0x2c96('0x15')]({'raw':_0x2ccbed[_0x2c96('0x16')]?_0x2ccbed[_0x2c96('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x2ccbed[_0x2c96('0x16')]?_0x2ccbed[_0x2c96('0x16')][_0x2c96('0x17')]||null:null,'attributes':_0x2ccbed['options']?_0x2ccbed[_0x2c96('0x16')][_0x2c96('0x18')]||null:null,'limit':_0x2ccbed['options']?_0x2ccbed[_0x2c96('0x16')][_0x2c96('0x19')]||null:null,'include':_0x2ccbed[_0x2c96('0x16')]?_0x2ccbed[_0x2c96('0x16')][_0x2c96('0x1a')]?_[_0x2c96('0x1b')](_0x2ccbed[_0x2c96('0x16')]['include'],function(_0x3d8b21){return{'model':db[_0x3d8b21['model']],'as':_0x3d8b21['as'],'attributes':_0x3d8b21['attributes'],'include':_0x3d8b21[_0x2c96('0x1a')]?_['map'](_0x3d8b21[_0x2c96('0x1a')],function(_0x66cd41){return{'model':db[_0x66cd41[_0x2c96('0x1c')]],'as':_0x66cd41['as'],'attributes':_0x66cd41[_0x2c96('0x18')],'include':_0x66cd41['include']?_[_0x2c96('0x1b')](_0x66cd41[_0x2c96('0x1a')],function(_0x490f14){return{'model':db[_0x490f14[_0x2c96('0x1c')]],'as':_0x490f14['as'],'attributes':_0x490f14[_0x2c96('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2c96('0xb')](function(_0x1abae0){logger['info'](_0x2c96('0x14'),_0x2ccbed);logger[_0x2c96('0xd')](_0x2c96('0x14'),_0x2ccbed,JSON[_0x2c96('0xf')](_0x1abae0));_0x3fde3e(_0x1abae0);})['catch'](function(_0x19ee5d){logger[_0x2c96('0x10')]('GetMemberReport',_0x19ee5d[_0x2c96('0x12')],_0x2ccbed);_0x48b420(_0x2529b0['error'](0x1f4,_0x19ee5d[_0x2c96('0x12')]));});});};exports[_0x2c96('0x1d')]=function(_0x18df4d){var _0x363da9=this;return new Promise(function(_0x303aa3,_0x30799f){return db[_0x2c96('0x1e')][_0x2c96('0x1f')](_0x18df4d['body'],{'raw':_0x18df4d[_0x2c96('0x16')]?_0x18df4d[_0x2c96('0x16')][_0x2c96('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0xc296ca){logger[_0x2c96('0x21')](_0x2c96('0x1d'),_0x18df4d);logger['debug'](_0x2c96('0x1d'),_0x18df4d,JSON[_0x2c96('0xf')](_0xc296ca));_0x303aa3(_0xc296ca);})[_0x2c96('0x13')](function(_0xe39a58){logger[_0x2c96('0x10')]('CreateMemberReport',_0xe39a58[_0x2c96('0x12')],_0x18df4d);_0x30799f(_0x363da9[_0x2c96('0x10')](0x1f4,_0xe39a58[_0x2c96('0x12')]));});});};exports[_0x2c96('0x22')]=function(_0x3d12cf){var _0x2ed3a1=this;return new Promise(function(_0x2c1fbd,_0x171ad7){return db['MemberReport']['update'](_0x3d12cf[_0x2c96('0x23')],{'raw':_0x3d12cf[_0x2c96('0x16')]?_0x3d12cf[_0x2c96('0x16')][_0x2c96('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d12cf['options']?_0x3d12cf[_0x2c96('0x16')]['where']||null:null,'attributes':_0x3d12cf[_0x2c96('0x16')]?_0x3d12cf[_0x2c96('0x16')][_0x2c96('0x18')]||null:null,'limit':_0x3d12cf[_0x2c96('0x16')]?_0x3d12cf[_0x2c96('0x16')]['limit']||null:null})[_0x2c96('0xb')](function(_0x498bbd){logger[_0x2c96('0x21')](_0x2c96('0x22'),_0x3d12cf);logger['debug']('UpdateMemberReport',_0x3d12cf,JSON[_0x2c96('0xf')](_0x498bbd));_0x2c1fbd(_0x498bbd);})[_0x2c96('0x13')](function(_0x1622fd){logger[_0x2c96('0x10')](_0x2c96('0x22'),_0x1622fd[_0x2c96('0x12')],_0x3d12cf);_0x171ad7(_0x2ed3a1['error'](0x1f4,_0x1622fd[_0x2c96('0x12')]));});});};
\ No newline at end of file
index b8bd03a..3c33c26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61de=['multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports'];(function(_0xdb9a0e,_0x5c15a4){var _0x480348=function(_0x1667db){while(--_0x1667db){_0xdb9a0e['push'](_0xdb9a0e['shift']());}};_0x480348(++_0x5c15a4);}(_0x61de,0x18c));var _0xe61d=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x61de[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0xe61d('0x0'));var util=require(_0xe61d('0x1'));var path=require(_0xe61d('0x2'));var timeout=require(_0xe61d('0x3'));var express=require(_0xe61d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe61d('0x5'));var interaction=require(_0xe61d('0x6'));var config=require(_0xe61d('0x7'));var controller=require(_0xe61d('0x8'));router[_0xe61d('0x9')]('/',controller[_0xe61d('0xa')]);module[_0xe61d('0xb')]=router;
\ No newline at end of file
+var _0x30a9=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','util','path'];(function(_0xcdf43e,_0x3a146b){var _0x418490=function(_0x4caff0){while(--_0x4caff0){_0xcdf43e['push'](_0xcdf43e['shift']());}};_0x418490(++_0x3a146b);}(_0x30a9,0x82));var _0x930a=function(_0x5520e6,_0x20c3fa){_0x5520e6=_0x5520e6-0x0;var _0x80519=_0x30a9[_0x5520e6];return _0x80519;};'use strict';var multer=require('multer');var util=require(_0x930a('0x0'));var path=require(_0x930a('0x1'));var timeout=require(_0x930a('0x2'));var express=require(_0x930a('0x3'));var router=express[_0x930a('0x4')]();var fs_extra=require(_0x930a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x930a('0x6'));var config=require(_0x930a('0x7'));var controller=require(_0x930a('0x8'));router[_0x930a('0x9')]('/',controller[_0x930a('0xa')]);module[_0x930a('0xb')]=router;
\ No newline at end of file
index 1ceedb6..bcc9701 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c86=['exports','version','sequelize'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x8c86,0x1be));var _0x68c8=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8c86[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require(_0x68c8('0x0'));module[_0x68c8('0x1')]={'version':{'type':Sequelize['STRING'],'unique':_0x68c8('0x2')}};
\ No newline at end of file
+var _0xa268=['version','sequelize','exports','STRING'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa268,0x19d));var _0x8a26=function(_0x582005,_0x4e406d){_0x582005=_0x582005-0x0;var _0x2b6889=_0xa268[_0x582005];return _0x2b6889;};'use strict';var Sequelize=require(_0x8a26('0x0'));module[_0x8a26('0x1')]={'version':{'type':Sequelize[_0x8a26('0x2')],'unique':_0x8a26('0x3')}};
\ No newline at end of file
index aa1055b..95a3e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee74=['Migration','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','end','error','name','send','index','map'];(function(_0xdff99d,_0x1a7e5c){var _0x34e543=function(_0x524714){while(--_0x524714){_0xdff99d['push'](_0xdff99d['shift']());}};_0x34e543(++_0x1a7e5c);}(_0xee74,0x1eb));var _0x4ee7=function(_0x3952bf,_0x5c8fd7){_0x3952bf=_0x3952bf-0x0;var _0x34e0c2=_0xee74[_0x3952bf];return _0x34e0c2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4ee7('0x0'));var zipdir=require(_0x4ee7('0x1'));var jsonpatch=require(_0x4ee7('0x2'));var rp=require(_0x4ee7('0x3'));var moment=require(_0x4ee7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4ee7('0x5'));var util=require(_0x4ee7('0x6'));var path=require(_0x4ee7('0x7'));var sox=require(_0x4ee7('0x8'));var csv=require('to-csv');var ejs=require(_0x4ee7('0x9'));var fs=require('fs');var fs_extra=require(_0x4ee7('0xa'));var _=require(_0x4ee7('0xb'));var squel=require(_0x4ee7('0xc'));var crypto=require(_0x4ee7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4ee7('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4ee7('0xf'));var Redis=require(_0x4ee7('0x10'));var authService=require(_0x4ee7('0x11'));var qs=require(_0x4ee7('0x12'));var as=require(_0x4ee7('0x13'));var hardwareService=require(_0x4ee7('0x14'));var logger=require(_0x4ee7('0x15'))(_0x4ee7('0x16'));var utils=require('../../config/utils');var config=require(_0x4ee7('0x17'));var licenseUtil=require(_0x4ee7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a55d4,_0x116223){_0x116223=_0x116223||0xcc;return function(_0x429cf1){if(_0x429cf1){return _0x3a55d4[_0x4ee7('0x19')](_0x116223);}return _0x3a55d4['status'](_0x116223)['end']();};}function respondWithResult(_0x4682c0,_0x244e3d){_0x244e3d=_0x244e3d||0xc8;return function(_0x3544d0){if(_0x3544d0){return _0x4682c0[_0x4ee7('0x1a')](_0x244e3d)[_0x4ee7('0x1b')](_0x3544d0);}};}function respondWithFilteredResult(_0x55a347,_0x1fa756){return function(_0x35c300){if(_0x35c300){var _0x1c2a10=typeof _0x1fa756['offset']===_0x4ee7('0x1c')&&typeof _0x1fa756[_0x4ee7('0x1d')]==='undefined';var _0x30e8d8=_0x35c300[_0x4ee7('0x1e')];var _0x439e92=_0x1c2a10?0x0:_0x1fa756[_0x4ee7('0x1f')];var _0x512fcf=_0x1c2a10?_0x35c300['count']:_0x1fa756[_0x4ee7('0x1f')]+_0x1fa756[_0x4ee7('0x1d')];var _0x233ad0;if(_0x512fcf>=_0x30e8d8){_0x512fcf=_0x30e8d8;_0x233ad0=0xc8;}else{_0x233ad0=0xce;}_0x55a347['status'](_0x233ad0);return _0x55a347[_0x4ee7('0x20')](_0x4ee7('0x21'),_0x439e92+'-'+_0x512fcf+'/'+_0x30e8d8)[_0x4ee7('0x1b')](_0x35c300);}return null;};}function patchUpdates(_0x15216a){return function(_0x16995d){try{jsonpatch[_0x4ee7('0x22')](_0x16995d,_0x15216a,!![]);}catch(_0x370a0a){return BPromise['reject'](_0x370a0a);}return _0x16995d[_0x4ee7('0x23')]();};}function saveUpdates(_0x1c22e9,_0x3fee7a){return function(_0x268cf9){if(_0x268cf9){return _0x268cf9[_0x4ee7('0x24')](_0x1c22e9)[_0x4ee7('0x25')](function(_0x36f211){return _0x36f211;});}return null;};}function removeEntity(_0x5d504d,_0x56afeb){return function(_0x3bfcf6){if(_0x3bfcf6){return _0x3bfcf6[_0x4ee7('0x26')]()[_0x4ee7('0x25')](function(){_0x5d504d[_0x4ee7('0x1a')](0xcc)[_0x4ee7('0x27')]();});}};}function handleEntityNotFound(_0x28de8f,_0x4b0fab){return function(_0x2b1025){if(!_0x2b1025){_0x28de8f[_0x4ee7('0x19')](0x194);}return _0x2b1025;};}function handleError(_0x2a72bf,_0x20b34c){_0x20b34c=_0x20b34c||0x1f4;return function(_0x1bbb57){logger[_0x4ee7('0x28')](_0x1bbb57['stack']);if(_0x1bbb57[_0x4ee7('0x29')]){delete _0x1bbb57[_0x4ee7('0x29')];}_0x2a72bf[_0x4ee7('0x1a')](_0x20b34c)[_0x4ee7('0x2a')](_0x1bbb57);};}exports[_0x4ee7('0x2b')]=function(_0xe9658a,_0x592367){var _0x2767f0={},_0x47d22c={},_0x20af62={'count':0x0,'rows':[]};var _0x4aaa80=_[_0x4ee7('0x2c')](db[_0x4ee7('0x2d')]['rawAttributes'],function(_0x18c31c){return{'name':_0x18c31c['fieldName'],'type':_0x18c31c[_0x4ee7('0x2e')][_0x4ee7('0x2f')]};});_0x47d22c[_0x4ee7('0x30')]=_[_0x4ee7('0x2c')](_0x4aaa80,_0x4ee7('0x29'));_0x47d22c[_0x4ee7('0x31')]=_['keys'](_0xe9658a[_0x4ee7('0x31')]);_0x47d22c[_0x4ee7('0x32')]=_['intersection'](_0x47d22c[_0x4ee7('0x30')],_0x47d22c[_0x4ee7('0x31')]);_0x2767f0['attributes']=_[_0x4ee7('0x33')](_0x47d22c[_0x4ee7('0x30')],qs[_0x4ee7('0x34')](_0xe9658a[_0x4ee7('0x31')]['fields']));_0x2767f0['attributes']=_0x2767f0[_0x4ee7('0x35')]['length']?_0x2767f0['attributes']:_0x47d22c['model'];if(!_0xe9658a[_0x4ee7('0x31')][_0x4ee7('0x36')](_0x4ee7('0x37'))){_0x2767f0[_0x4ee7('0x1d')]=qs['limit'](_0xe9658a[_0x4ee7('0x31')][_0x4ee7('0x1d')]);_0x2767f0[_0x4ee7('0x1f')]=qs[_0x4ee7('0x1f')](_0xe9658a[_0x4ee7('0x31')][_0x4ee7('0x1f')]);}_0x2767f0[_0x4ee7('0x38')]=qs[_0x4ee7('0x39')](_0xe9658a[_0x4ee7('0x31')][_0x4ee7('0x39')]);_0x2767f0[_0x4ee7('0x3a')]=qs[_0x4ee7('0x32')](_[_0x4ee7('0x3b')](_0xe9658a['query'],_0x47d22c[_0x4ee7('0x32')]),_0x4aaa80);if(_0xe9658a[_0x4ee7('0x31')][_0x4ee7('0x3c')]){_0x2767f0[_0x4ee7('0x3a')]=_[_0x4ee7('0x3d')](_0x2767f0[_0x4ee7('0x3a')],{'$or':_[_0x4ee7('0x2c')](_0x4aaa80,function(_0x1e74bb){if(_0x1e74bb['type']!==_0x4ee7('0x3e')){var _0x11e072={};_0x11e072[_0x1e74bb[_0x4ee7('0x29')]]={'$like':'%'+_0xe9658a['query'][_0x4ee7('0x3c')]+'%'};return _0x11e072;}})});}_0x2767f0=_[_0x4ee7('0x3d')]({},_0x2767f0,_0xe9658a[_0x4ee7('0x3f')]);var _0x2f2b73={'where':_0x2767f0[_0x4ee7('0x3a')]};return db['Migration'][_0x4ee7('0x1e')](_0x2f2b73)[_0x4ee7('0x25')](function(_0xa619a8){_0x20af62[_0x4ee7('0x1e')]=_0xa619a8;if(_0xe9658a[_0x4ee7('0x31')]['includeAll']){_0x2767f0[_0x4ee7('0x40')]=[{'all':!![]}];}return db['Migration'][_0x4ee7('0x41')](_0x2767f0);})[_0x4ee7('0x25')](function(_0x383ed8){_0x20af62[_0x4ee7('0x42')]=_0x383ed8;return _0x20af62;})['then'](respondWithFilteredResult(_0x592367,_0x2767f0))['catch'](handleError(_0x592367,null));};
\ No newline at end of file
+var _0x40ce=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','name','send','map','Migration','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','count','includeAll','include','rows','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x40ce,0x72));var _0xe40c=function(_0x5f4cf8,_0x2e60ea){_0x5f4cf8=_0x5f4cf8-0x0;var _0x11ef88=_0x40ce[_0x5f4cf8];return _0x11ef88;};'use strict';var emlformat=require(_0xe40c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe40c('0x1'));var jsonpatch=require(_0xe40c('0x2'));var rp=require(_0xe40c('0x3'));var moment=require('moment');var BPromise=require(_0xe40c('0x4'));var Mustache=require('mustache');var util=require(_0xe40c('0x5'));var path=require(_0xe40c('0x6'));var sox=require(_0xe40c('0x7'));var csv=require(_0xe40c('0x8'));var ejs=require(_0xe40c('0x9'));var fs=require('fs');var fs_extra=require(_0xe40c('0xa'));var _=require(_0xe40c('0xb'));var squel=require(_0xe40c('0xc'));var crypto=require('crypto');var jsforce=require(_0xe40c('0xd'));var deskjs=require(_0xe40c('0xe'));var toCsv=require(_0xe40c('0x8'));var querystring=require('querystring');var Papa=require(_0xe40c('0xf'));var Redis=require(_0xe40c('0x10'));var authService=require(_0xe40c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe40c('0x12'));var hardwareService=require(_0xe40c('0x13'));var logger=require(_0xe40c('0x14'))('api');var utils=require(_0xe40c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xe40c('0x16'));var db=require(_0xe40c('0x17'))['db'];function respondWithStatusCode(_0x45c1a6,_0x277b5f){_0x277b5f=_0x277b5f||0xcc;return function(_0x571f14){if(_0x571f14){return _0x45c1a6[_0xe40c('0x18')](_0x277b5f);}return _0x45c1a6[_0xe40c('0x19')](_0x277b5f)[_0xe40c('0x1a')]();};}function respondWithResult(_0x60c5b9,_0x3ad7a8){_0x3ad7a8=_0x3ad7a8||0xc8;return function(_0x2c58ac){if(_0x2c58ac){return _0x60c5b9[_0xe40c('0x19')](_0x3ad7a8)[_0xe40c('0x1b')](_0x2c58ac);}};}function respondWithFilteredResult(_0x5005a4,_0x37ffb1){return function(_0x29b644){if(_0x29b644){var _0x5de8ac=typeof _0x37ffb1[_0xe40c('0x1c')]===_0xe40c('0x1d')&&typeof _0x37ffb1['limit']==='undefined';var _0x2a4a0b=_0x29b644['count'];var _0x5e757d=_0x5de8ac?0x0:_0x37ffb1[_0xe40c('0x1c')];var _0x476ef6=_0x5de8ac?_0x29b644['count']:_0x37ffb1[_0xe40c('0x1c')]+_0x37ffb1[_0xe40c('0x1e')];var _0x2e3c48;if(_0x476ef6>=_0x2a4a0b){_0x476ef6=_0x2a4a0b;_0x2e3c48=0xc8;}else{_0x2e3c48=0xce;}_0x5005a4[_0xe40c('0x19')](_0x2e3c48);return _0x5005a4[_0xe40c('0x1f')](_0xe40c('0x20'),_0x5e757d+'-'+_0x476ef6+'/'+_0x2a4a0b)['json'](_0x29b644);}return null;};}function patchUpdates(_0xcf6e42){return function(_0x50ac84){try{jsonpatch[_0xe40c('0x21')](_0x50ac84,_0xcf6e42,!![]);}catch(_0x47a04e){return BPromise[_0xe40c('0x22')](_0x47a04e);}return _0x50ac84[_0xe40c('0x23')]();};}function saveUpdates(_0xafd0e2,_0x227d7f){return function(_0x45e5ca){if(_0x45e5ca){return _0x45e5ca['update'](_0xafd0e2)[_0xe40c('0x24')](function(_0x3fddd3){return _0x3fddd3;});}return null;};}function removeEntity(_0x20e170,_0x598c0d){return function(_0x58c8c5){if(_0x58c8c5){return _0x58c8c5['destroy']()[_0xe40c('0x24')](function(){_0x20e170[_0xe40c('0x19')](0xcc)[_0xe40c('0x1a')]();});}};}function handleEntityNotFound(_0x11450d,_0x247787){return function(_0x1c6b00){if(!_0x1c6b00){_0x11450d[_0xe40c('0x18')](0x194);}return _0x1c6b00;};}function handleError(_0x341100,_0x18a5bf){_0x18a5bf=_0x18a5bf||0x1f4;return function(_0x7eac4){logger['error'](_0x7eac4['stack']);if(_0x7eac4[_0xe40c('0x25')]){delete _0x7eac4[_0xe40c('0x25')];}_0x341100[_0xe40c('0x19')](_0x18a5bf)[_0xe40c('0x26')](_0x7eac4);};}exports['index']=function(_0x533070,_0x5ea0e2){var _0x4d9777={},_0x4cba2c={},_0x5a30ba={'count':0x0,'rows':[]};var _0x34c560=_[_0xe40c('0x27')](db[_0xe40c('0x28')][_0xe40c('0x29')],function(_0x348da3){return{'name':_0x348da3[_0xe40c('0x2a')],'type':_0x348da3[_0xe40c('0x2b')][_0xe40c('0x2c')]};});_0x4cba2c['model']=_[_0xe40c('0x27')](_0x34c560,_0xe40c('0x25'));_0x4cba2c[_0xe40c('0x2d')]=_[_0xe40c('0x2e')](_0x533070[_0xe40c('0x2d')]);_0x4cba2c['filters']=_[_0xe40c('0x2f')](_0x4cba2c[_0xe40c('0x30')],_0x4cba2c[_0xe40c('0x2d')]);_0x4d9777[_0xe40c('0x31')]=_[_0xe40c('0x2f')](_0x4cba2c['model'],qs[_0xe40c('0x32')](_0x533070[_0xe40c('0x2d')][_0xe40c('0x32')]));_0x4d9777[_0xe40c('0x31')]=_0x4d9777[_0xe40c('0x31')][_0xe40c('0x33')]?_0x4d9777['attributes']:_0x4cba2c[_0xe40c('0x30')];if(!_0x533070[_0xe40c('0x2d')][_0xe40c('0x34')](_0xe40c('0x35'))){_0x4d9777[_0xe40c('0x1e')]=qs[_0xe40c('0x1e')](_0x533070[_0xe40c('0x2d')][_0xe40c('0x1e')]);_0x4d9777[_0xe40c('0x1c')]=qs['offset'](_0x533070[_0xe40c('0x2d')][_0xe40c('0x1c')]);}_0x4d9777[_0xe40c('0x36')]=qs[_0xe40c('0x37')](_0x533070['query'][_0xe40c('0x37')]);_0x4d9777['where']=qs[_0xe40c('0x38')](_[_0xe40c('0x39')](_0x533070[_0xe40c('0x2d')],_0x4cba2c['filters']),_0x34c560);if(_0x533070[_0xe40c('0x2d')][_0xe40c('0x3a')]){_0x4d9777[_0xe40c('0x3b')]=_['merge'](_0x4d9777[_0xe40c('0x3b')],{'$or':_[_0xe40c('0x27')](_0x34c560,function(_0x565213){if(_0x565213[_0xe40c('0x2b')]!=='VIRTUAL'){var _0xdb6f81={};_0xdb6f81[_0x565213['name']]={'$like':'%'+_0x533070['query'][_0xe40c('0x3a')]+'%'};return _0xdb6f81;}})});}_0x4d9777=_[_0xe40c('0x3c')]({},_0x4d9777,_0x533070[_0xe40c('0x3d')]);var _0x425d50={'where':_0x4d9777[_0xe40c('0x3b')]};return db['Migration'][_0xe40c('0x3e')](_0x425d50)[_0xe40c('0x24')](function(_0x43dace){_0x5a30ba['count']=_0x43dace;if(_0x533070[_0xe40c('0x2d')][_0xe40c('0x3f')]){_0x4d9777[_0xe40c('0x40')]=[{'all':!![]}];}return db[_0xe40c('0x28')]['findAll'](_0x4d9777);})[_0xe40c('0x24')](function(_0x4aa6e9){_0x5a30ba[_0xe40c('0x41')]=_0x4aa6e9;return _0x5a30ba;})[_0xe40c('0x24')](respondWithFilteredResult(_0x5ea0e2,_0x4d9777))['catch'](handleError(_0x5ea0e2,null));};
\ No newline at end of file
index 2600a04..7e0fee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57bd=['migrations','lodash','util','../../config/logger','bluebird','path','rimraf','./migration.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x57bd,0xc9));var _0xd57b=function(_0x2a8b55,_0x3cd8d2){_0x2a8b55=_0x2a8b55-0x0;var _0x41274f=_0x57bd[_0x2a8b55];return _0x41274f;};'use strict';var _=require(_0xd57b('0x0'));var util=require(_0xd57b('0x1'));var logger=require(_0xd57b('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd57b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd57b('0x4'));var rimraf=require(_0xd57b('0x5'));var config=require('../../config/environment');var attributes=require(_0xd57b('0x6'));module[_0xd57b('0x7')]=function(_0x11e0fc,_0x287bcf){return _0x11e0fc[_0xd57b('0x8')]('Migration',attributes,{'tableName':_0xd57b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf79f=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./migration.attributes','exports','define','lodash','util'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xf79f,0x172));var _0xff79=function(_0x2a8860,_0x2da926){_0x2a8860=_0x2a8860-0x0;var _0x2f47a4=_0xf79f[_0x2a8860];return _0x2f47a4;};'use strict';var _=require(_0xff79('0x0'));var util=require(_0xff79('0x1'));var logger=require(_0xff79('0x2'))(_0xff79('0x3'));var moment=require(_0xff79('0x4'));var BPromise=require(_0xff79('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xff79('0x6'));var rimraf=require(_0xff79('0x7'));var config=require(_0xff79('0x8'));var attributes=require(_0xff79('0x9'));module[_0xff79('0xa')]=function(_0x28da54,_0x4d02c8){return _0x28da54[_0xff79('0xb')]('Migration',attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b6a2320..2d45937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird'];(function(_0x27d1bd,_0x30448f){var _0x3c2223=function(_0x677328){while(--_0x677328){_0x27d1bd['push'](_0x27d1bd['shift']());}};_0x3c2223(++_0x30448f);}(_0xb58b,0x1f1));var _0xbb58=function(_0x541e36,_0x579fac){_0x541e36=_0x541e36-0x0;var _0x14da8e=_0xb58b[_0x541e36];return _0x14da8e;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var moment=require(_0xbb58('0x1'));var BPromise=require(_0xbb58('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb58('0x3'));var db=require(_0xbb58('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb58('0x5'))('rpc');var config=require(_0xbb58('0x6'));var jayson=require(_0xbb58('0x7'));var client=jayson[_0xbb58('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27cbda,_0x323066,_0xe874f2){return new BPromise(function(_0x5d7fe8,_0xd94f1){return client[_0xbb58('0x9')](_0x27cbda,_0xe874f2)[_0xbb58('0xa')](function(_0x36ca50){logger[_0xbb58('0xb')](_0xbb58('0xc'),_0x323066,_0xbb58('0xd'));logger['debug'](_0xbb58('0xe'),_0x323066,'request\x20sent',JSON[_0xbb58('0xf')](_0x36ca50));if(_0x36ca50[_0xbb58('0x10')]){if(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x11')]===0x1f4){logger['error'](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0xd94f1(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}logger[_0xbb58('0x10')](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0x5d7fe8(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0x323066,_0xbb58('0xd'));_0x5d7fe8(_0x36ca50[_0xbb58('0x13')][_0xbb58('0x12')]);}})['catch'](function(_0x5edc97){logger['error']('Migration,\x20%s,\x20%s',_0x323066,_0x5edc97);_0xd94f1(_0x5edc97);});});}
\ No newline at end of file
+var _0x69e6=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Migration,\x20%s,\x20%s','message','result','util','moment','bluebird'];(function(_0x155924,_0x2a5368){var _0x262e4b=function(_0x1e245a){while(--_0x1e245a){_0x155924['push'](_0x155924['shift']());}};_0x262e4b(++_0x2a5368);}(_0x69e6,0x1e0));var _0x669e=function(_0x41ffa5,_0x2f9281){_0x41ffa5=_0x41ffa5-0x0;var _0x237e6b=_0x69e6[_0x41ffa5];return _0x237e6b;};'use strict';var _=require('lodash');var util=require(_0x669e('0x0'));var moment=require(_0x669e('0x1'));var BPromise=require(_0x669e('0x2'));var rs=require(_0x669e('0x3'));var fs=require('fs');var Redis=require(_0x669e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x669e('0x5'));var logger=require(_0x669e('0x6'))(_0x669e('0x7'));var config=require(_0x669e('0x8'));var jayson=require(_0x669e('0x9'));var client=jayson[_0x669e('0xa')][_0x669e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x132e5e,_0x80e8c6,_0x3cf0cf){return new BPromise(function(_0x17323c,_0x2b3163){return client['request'](_0x132e5e,_0x3cf0cf)[_0x669e('0xc')](function(_0x1f78bd){logger[_0x669e('0xd')]('Migration,\x20%s,\x20%s',_0x80e8c6,'request\x20sent');logger['debug'](_0x669e('0xe'),_0x80e8c6,_0x669e('0xf'),JSON[_0x669e('0x10')](_0x1f78bd));if(_0x1f78bd[_0x669e('0x11')]){if(_0x1f78bd[_0x669e('0x11')]['code']===0x1f4){logger['error'](_0x669e('0x12'),_0x80e8c6,_0x1f78bd[_0x669e('0x11')][_0x669e('0x13')]);return _0x2b3163(_0x1f78bd[_0x669e('0x11')]['message']);}logger['error'](_0x669e('0x12'),_0x80e8c6,_0x1f78bd['error'][_0x669e('0x13')]);return _0x17323c(_0x1f78bd[_0x669e('0x11')][_0x669e('0x13')]);}else{logger['info'](_0x669e('0x12'),_0x80e8c6,_0x669e('0xf'));_0x17323c(_0x1f78bd[_0x669e('0x14')][_0x669e('0x13')]);}})['catch'](function(_0x109d5c){logger['error'](_0x669e('0x12'),_0x80e8c6,_0x109d5c);_0x2b3163(_0x109d5c);});});}
\ No newline at end of file
index 66dd84c..93d9c59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf55d=['show','post','create','update','delete','/:id','destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated'];(function(_0xce2009,_0x1f8cf8){var _0x1c83cb=function(_0x16eaff){while(--_0x16eaff){_0xce2009['push'](_0xce2009['shift']());}};_0x1c83cb(++_0x1f8cf8);}(_0xf55d,0x14b));var _0xdf55=function(_0x36af9a,_0x62101d){_0x36af9a=_0x36af9a-0x0;var _0x4581e4=_0xf55d[_0x36af9a];return _0x4581e4;};'use strict';var multer=require(_0xdf55('0x0'));var util=require(_0xdf55('0x1'));var path=require(_0xdf55('0x2'));var timeout=require('connect-timeout');var express=require(_0xdf55('0x3'));var router=express[_0xdf55('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xdf55('0x5'));var interaction=require(_0xdf55('0x6'));var config=require(_0xdf55('0x7'));var controller=require(_0xdf55('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xdf55('0x9')]('/:id',auth[_0xdf55('0xa')](),controller[_0xdf55('0xb')]);router[_0xdf55('0xc')]('/',auth[_0xdf55('0xa')](),controller[_0xdf55('0xd')]);router['put']('/:id',auth[_0xdf55('0xa')](),controller[_0xdf55('0xe')]);router[_0xdf55('0xf')](_0xdf55('0x10'),auth[_0xdf55('0xa')](),controller[_0xdf55('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x7795=['update','delete','destroy','exports','util','express','Router','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','create','put'];(function(_0x182f78,_0x3519c0){var _0x12affa=function(_0x29a683){while(--_0x29a683){_0x182f78['push'](_0x182f78['shift']());}};_0x12affa(++_0x3519c0);}(_0x7795,0x1a4));var _0x5779=function(_0x2d17b5,_0x24e496){_0x2d17b5=_0x2d17b5-0x0;var _0x1c6e13=_0x7795[_0x2d17b5];return _0x1c6e13;};'use strict';var multer=require('multer');var util=require(_0x5779('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5779('0x1'));var router=express[_0x5779('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5779('0x3'));var config=require(_0x5779('0x4'));var controller=require('./network.controller');router[_0x5779('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5779('0x5')](_0x5779('0x6'),auth[_0x5779('0x7')](),controller[_0x5779('0x8')]);router[_0x5779('0x9')]('/',auth['isAuthenticated'](),controller[_0x5779('0xa')]);router[_0x5779('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x5779('0xc')]);router[_0x5779('0xd')](_0x5779('0x6'),auth[_0x5779('0x7')](),controller[_0x5779('0xe')]);module[_0x5779('0xf')]=router;
\ No newline at end of file
index 44d489a..c3996e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6191=['ENUM','localnet','externip','stun','turn','STRING','sequelize'];(function(_0x9863fb,_0x576757){var _0x4d4ccb=function(_0x46a5ee){while(--_0x46a5ee){_0x9863fb['push'](_0x9863fb['shift']());}};_0x4d4ccb(++_0x576757);}(_0x6191,0x7d));var _0x1619=function(_0x3e7e96,_0x5683ca){_0x3e7e96=_0x3e7e96-0x0;var _0x13f6f0=_0x6191[_0x3e7e96];return _0x13f6f0;};'use strict';var Sequelize=require(_0x1619('0x0'));module['exports']={'type':{'type':Sequelize[_0x1619('0x1')](_0x1619('0x2'),_0x1619('0x3'),_0x1619('0x4'),_0x1619('0x5'))},'value':{'type':Sequelize[_0x1619('0x6')]},'username':{'type':Sequelize[_0x1619('0x6')]},'password':{'type':Sequelize[_0x1619('0x6')]}};
\ No newline at end of file
+var _0x3a0c=['stun','turn','STRING','sequelize','exports','ENUM','localnet','externip'];(function(_0x27168e,_0x3f0bfb){var _0x481aed=function(_0xba0ea2){while(--_0xba0ea2){_0x27168e['push'](_0x27168e['shift']());}};_0x481aed(++_0x3f0bfb);}(_0x3a0c,0x1f3));var _0xc3a0=function(_0x153dd4,_0x45c990){_0x153dd4=_0x153dd4-0x0;var _0x24b6f8=_0x3a0c[_0x153dd4];return _0x24b6f8;};'use strict';var Sequelize=require(_0xc3a0('0x0'));module[_0xc3a0('0x1')]={'type':{'type':Sequelize[_0xc3a0('0x2')](_0xc3a0('0x3'),_0xc3a0('0x4'),_0xc3a0('0x5'),_0xc3a0('0x6'))},'value':{'type':Sequelize[_0xc3a0('0x7')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0c36b8c..7a9896e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffa6=['stringify','error','message','info','result','catch','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','Network','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','merge','find','create','sequelize','transaction','body','STUN','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','readFileSync','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','Reload','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','toUpperCase','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s'];(function(_0x230ebb,_0x1609b2){var _0x4b1e42=function(_0x1cd0fc){while(--_0x1cd0fc){_0x230ebb['push'](_0x230ebb['shift']());}};_0x4b1e42(++_0x1609b2);}(_0xffa6,0x1a5));var _0x6ffa=function(_0x3bb764,_0x41a56b){_0x3bb764=_0x3bb764-0x0;var _0x5dc522=_0xffa6[_0x3bb764];return _0x5dc522;};'use strict';var emlformat=require(_0x6ffa('0x0'));var rimraf=require(_0x6ffa('0x1'));var zipdir=require(_0x6ffa('0x2'));var jsonpatch=require(_0x6ffa('0x3'));var rp=require(_0x6ffa('0x4'));var moment=require(_0x6ffa('0x5'));var BPromise=require(_0x6ffa('0x6'));var Mustache=require(_0x6ffa('0x7'));var util=require(_0x6ffa('0x8'));var path=require(_0x6ffa('0x9'));var sox=require(_0x6ffa('0xa'));var csv=require(_0x6ffa('0xb'));var ejs=require(_0x6ffa('0xc'));var fs=require('fs');var fs_extra=require(_0x6ffa('0xd'));var _=require('lodash');var squel=require(_0x6ffa('0xe'));var crypto=require(_0x6ffa('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x6ffa('0x10'));var toCsv=require(_0x6ffa('0xb'));var querystring=require(_0x6ffa('0x11'));var Papa=require('papaparse');var Redis=require(_0x6ffa('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6ffa('0x13'));var as=require(_0x6ffa('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6ffa('0x15'))('api');var utils=require(_0x6ffa('0x16'));var config=require(_0x6ffa('0x17'));var licenseUtil=require(_0x6ffa('0x18'));var db=require(_0x6ffa('0x19'))['db'];var jayson=require(_0x6ffa('0x1a'));var client=jayson[_0x6ffa('0x1b')][_0x6ffa('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x51fe50,_0x4415cb,_0x9b61b4,_0x26b1c4){return new BPromise(function(_0x157c9c,_0x3a48b4){var _0x5db43f=_0x26b1c4||client;return _0x5db43f[_0x6ffa('0x1d')](_0x51fe50,_0x9b61b4)[_0x6ffa('0x1e')](function(_0x7a2b6a){logger['info'](_0x6ffa('0x1f'),_0x4415cb,_0x6ffa('0x20'));logger[_0x6ffa('0x21')](_0x6ffa('0x22'),_0x4415cb,_0x6ffa('0x20'),JSON[_0x6ffa('0x23')](_0x7a2b6a));if(_0x7a2b6a['error']){if(_0x7a2b6a[_0x6ffa('0x24')]['code']===0x1f4){logger[_0x6ffa('0x24')](_0x6ffa('0x1f'),_0x4415cb,_0x7a2b6a[_0x6ffa('0x24')][_0x6ffa('0x25')]);return _0x3a48b4(_0x7a2b6a[_0x6ffa('0x24')][_0x6ffa('0x25')]);}logger[_0x6ffa('0x24')]('Network,\x20%s,\x20%s',_0x4415cb,_0x7a2b6a['error'][_0x6ffa('0x25')]);return _0x157c9c(_0x7a2b6a[_0x6ffa('0x24')]['message']);}else{logger[_0x6ffa('0x26')](_0x6ffa('0x1f'),_0x4415cb,_0x6ffa('0x20'));_0x157c9c(_0x7a2b6a[_0x6ffa('0x27')]['message']);}})[_0x6ffa('0x28')](function(_0x18211d){logger[_0x6ffa('0x24')]('Network,\x20%s,\x20%s',_0x4415cb,_0x18211d);_0x3a48b4(_0x18211d);});});}function respondWithStatusCode(_0x31e06f,_0x2b0ff5){_0x2b0ff5=_0x2b0ff5||0xcc;return function(_0x35c530){if(_0x35c530){return _0x31e06f['sendStatus'](_0x2b0ff5);}return _0x31e06f[_0x6ffa('0x29')](_0x2b0ff5)[_0x6ffa('0x2a')]();};}function respondWithResult(_0x1563b6,_0x3dd957){_0x3dd957=_0x3dd957||0xc8;return function(_0x568356){if(_0x568356){return _0x1563b6[_0x6ffa('0x29')](_0x3dd957)['json'](_0x568356);}};}function respondWithFilteredResult(_0x1cc133,_0x52c365){return function(_0x21b732){if(_0x21b732){var _0x5fd92e=typeof _0x52c365[_0x6ffa('0x2b')]===_0x6ffa('0x2c')&&typeof _0x52c365[_0x6ffa('0x2d')]===_0x6ffa('0x2c');var _0x1bef76=_0x21b732[_0x6ffa('0x2e')];var _0xd2e1bd=_0x5fd92e?0x0:_0x52c365[_0x6ffa('0x2b')];var _0x5575bd=_0x5fd92e?_0x21b732['count']:_0x52c365[_0x6ffa('0x2b')]+_0x52c365[_0x6ffa('0x2d')];var _0x300ef4;if(_0x5575bd>=_0x1bef76){_0x5575bd=_0x1bef76;_0x300ef4=0xc8;}else{_0x300ef4=0xce;}_0x1cc133[_0x6ffa('0x29')](_0x300ef4);return _0x1cc133['set'](_0x6ffa('0x2f'),_0xd2e1bd+'-'+_0x5575bd+'/'+_0x1bef76)[_0x6ffa('0x30')](_0x21b732);}return null;};}function patchUpdates(_0x525abb){return function(_0x1f9879){try{jsonpatch[_0x6ffa('0x31')](_0x1f9879,_0x525abb,!![]);}catch(_0x33e999){return BPromise[_0x6ffa('0x32')](_0x33e999);}return _0x1f9879[_0x6ffa('0x33')]();};}function saveUpdates(_0x1f8193,_0x742b65){return function(_0x3dfecf){if(_0x3dfecf){return _0x3dfecf[_0x6ffa('0x34')](_0x1f8193)[_0x6ffa('0x1e')](function(_0x195bb3){return _0x195bb3;});}return null;};}function removeEntity(_0x28f874,_0xc2bbfe){return function(_0x1925d3){if(_0x1925d3){return _0x1925d3[_0x6ffa('0x35')]()[_0x6ffa('0x1e')](function(){_0x28f874['status'](0xcc)[_0x6ffa('0x2a')]();});}};}function handleEntityNotFound(_0x4c559f,_0x4c0fe1){return function(_0x31807f){if(!_0x31807f){_0x4c559f[_0x6ffa('0x36')](0x194);}return _0x31807f;};}function handleError(_0x2fb84d,_0x269c91){_0x269c91=_0x269c91||0x1f4;return function(_0x501a46){logger[_0x6ffa('0x24')](_0x501a46[_0x6ffa('0x37')]);if(_0x501a46[_0x6ffa('0x38')]){delete _0x501a46[_0x6ffa('0x38')];}_0x2fb84d[_0x6ffa('0x29')](_0x269c91)[_0x6ffa('0x39')](_0x501a46);};}exports[_0x6ffa('0x3a')]=function(_0xb00d55,_0x5332be){var _0x2c010c={},_0x8e4413={},_0xa56c50={'count':0x0,'rows':[]};var _0x13ce89=_['map'](db[_0x6ffa('0x3b')][_0x6ffa('0x3c')],function(_0x338d3d){return{'name':_0x338d3d[_0x6ffa('0x3d')],'type':_0x338d3d[_0x6ffa('0x3e')][_0x6ffa('0x3f')]};});_0x8e4413[_0x6ffa('0x40')]=_[_0x6ffa('0x41')](_0x13ce89,'name');_0x8e4413['query']=_['keys'](_0xb00d55[_0x6ffa('0x42')]);_0x8e4413['filters']=_['intersection'](_0x8e4413[_0x6ffa('0x40')],_0x8e4413[_0x6ffa('0x42')]);_0x2c010c[_0x6ffa('0x43')]=_[_0x6ffa('0x44')](_0x8e4413['model'],qs[_0x6ffa('0x45')](_0xb00d55['query']['fields']));_0x2c010c[_0x6ffa('0x43')]=_0x2c010c[_0x6ffa('0x43')][_0x6ffa('0x46')]?_0x2c010c[_0x6ffa('0x43')]:_0x8e4413['model'];if(!_0xb00d55[_0x6ffa('0x42')][_0x6ffa('0x47')](_0x6ffa('0x48'))){_0x2c010c[_0x6ffa('0x2d')]=qs[_0x6ffa('0x2d')](_0xb00d55[_0x6ffa('0x42')][_0x6ffa('0x2d')]);_0x2c010c[_0x6ffa('0x2b')]=qs[_0x6ffa('0x2b')](_0xb00d55['query'][_0x6ffa('0x2b')]);}_0x2c010c[_0x6ffa('0x49')]=qs[_0x6ffa('0x4a')](_0xb00d55['query'][_0x6ffa('0x4a')]);_0x2c010c[_0x6ffa('0x4b')]=qs[_0x6ffa('0x4c')](_[_0x6ffa('0x4d')](_0xb00d55[_0x6ffa('0x42')],_0x8e4413[_0x6ffa('0x4c')]),_0x13ce89);if(_0xb00d55[_0x6ffa('0x42')][_0x6ffa('0x4e')]){_0x2c010c[_0x6ffa('0x4b')]=_['merge'](_0x2c010c[_0x6ffa('0x4b')],{'$or':_[_0x6ffa('0x41')](_0x13ce89,function(_0x4b7d39){if(_0x4b7d39['type']!==_0x6ffa('0x4f')){var _0x4db7d5={};_0x4db7d5[_0x4b7d39[_0x6ffa('0x38')]]={'$like':'%'+_0xb00d55[_0x6ffa('0x42')][_0x6ffa('0x4e')]+'%'};return _0x4db7d5;}})});}_0x2c010c=_['merge']({},_0x2c010c,_0xb00d55[_0x6ffa('0x50')]);var _0x2c6e9f={'where':_0x2c010c[_0x6ffa('0x4b')]};return db[_0x6ffa('0x3b')][_0x6ffa('0x2e')](_0x2c6e9f)[_0x6ffa('0x1e')](function(_0x5563e8){_0xa56c50[_0x6ffa('0x2e')]=_0x5563e8;if(_0xb00d55[_0x6ffa('0x42')][_0x6ffa('0x51')]){_0x2c010c[_0x6ffa('0x52')]=[{'all':!![]}];}return db[_0x6ffa('0x3b')][_0x6ffa('0x53')](_0x2c010c);})[_0x6ffa('0x1e')](function(_0x316f89){_0xa56c50[_0x6ffa('0x54')]=_0x316f89;return _0xa56c50;})[_0x6ffa('0x1e')](respondWithFilteredResult(_0x5332be,_0x2c010c))['catch'](handleError(_0x5332be,null));};exports[_0x6ffa('0x55')]=function(_0x596338,_0x511036){var _0x2f4858={'raw':!![],'where':{'id':_0x596338['params']['id']}},_0x1ade03={};_0x1ade03['model']=_[_0x6ffa('0x56')](db[_0x6ffa('0x3b')][_0x6ffa('0x3c')]);_0x1ade03[_0x6ffa('0x42')]=_[_0x6ffa('0x56')](_0x596338[_0x6ffa('0x42')]);_0x1ade03['filters']=_[_0x6ffa('0x44')](_0x1ade03[_0x6ffa('0x40')],_0x1ade03[_0x6ffa('0x42')]);_0x2f4858[_0x6ffa('0x43')]=_[_0x6ffa('0x44')](_0x1ade03['model'],qs[_0x6ffa('0x45')](_0x596338[_0x6ffa('0x42')][_0x6ffa('0x45')]));_0x2f4858['attributes']=_0x2f4858[_0x6ffa('0x43')]['length']?_0x2f4858[_0x6ffa('0x43')]:_0x1ade03['model'];if(_0x596338[_0x6ffa('0x42')][_0x6ffa('0x51')]){_0x2f4858[_0x6ffa('0x52')]=[{'all':!![]}];}_0x2f4858=_[_0x6ffa('0x57')]({},_0x2f4858,_0x596338[_0x6ffa('0x50')]);return db['Network'][_0x6ffa('0x58')](_0x2f4858)[_0x6ffa('0x1e')](handleEntityNotFound(_0x511036,null))[_0x6ffa('0x1e')](respondWithResult(_0x511036,null))[_0x6ffa('0x28')](handleError(_0x511036,null));};exports[_0x6ffa('0x59')]=function(_0x5396d6,_0x174ffd,_0x21b994){var _0x47709b;return db[_0x6ffa('0x5a')][_0x6ffa('0x5b')](function(_0x46b102){return db[_0x6ffa('0x3b')][_0x6ffa('0x59')](_0x5396d6[_0x6ffa('0x5c')],{'raw':!![]})[_0x6ffa('0x1e')](function(_0x19f00d){_0x47709b=_0x19f00d;return db[_0x6ffa('0x3b')][_0x6ffa('0x53')]({'where':{'type':_0x5396d6[_0x6ffa('0x5c')][_0x6ffa('0x3e')]},'raw':!![]});})[_0x6ffa('0x1e')](function(_0x1ccdb3){if(_0x47709b[_0x6ffa('0x3e')]['toUpperCase']()==_0x6ffa('0x5d')){var _0x51a17c=fs['readFileSync'](path[_0x6ffa('0x5e')](config['root'],_0x6ffa('0x5f')),_0x6ffa('0x60'));var _0x2afd96=ejs[_0x6ffa('0x61')](_0x51a17c,{'networks':_0x1ccdb3||[]});fs[_0x6ffa('0x62')](_0x6ffa('0x63'),_0x2afd96);return respondWithRpcPromise('Reload','create',{'module':_0x6ffa('0x64')});}else if(_0x47709b['type']['toUpperCase']()==_0x6ffa('0x65')){var _0x2d6168=fs[_0x6ffa('0x66')](path['join'](config[_0x6ffa('0x67')],_0x6ffa('0x68')),'utf8');var _0xaca212=ejs[_0x6ffa('0x61')](_0x2d6168,{'networks':_0x1ccdb3||[]});fs[_0x6ffa('0x62')](_0x6ffa('0x69'),_0xaca212);return respondWithRpcPromise(_0x6ffa('0x6a'),_0x6ffa('0x59'),{'module':_0x6ffa('0x64')});}else{var _0x4a9488=fs['readFileSync'](path[_0x6ffa('0x5e')](config[_0x6ffa('0x67')],_0x6ffa('0x6b')),'utf8');var _0x5b5e8d=ejs[_0x6ffa('0x61')](_0x4a9488,{'networks':_0x1ccdb3||[]});fs[_0x6ffa('0x62')](util[_0x6ffa('0x6c')](_0x6ffa('0x6d'),_0x5396d6['body'][_0x6ffa('0x3e')][_0x6ffa('0x6e')]()),_0x5b5e8d);return respondWithRpcPromise(_0x6ffa('0x6a'),'create',{'module':_0x6ffa('0x6f')});}return null;})[_0x6ffa('0x1e')](function(){return _0x47709b;});})[_0x6ffa('0x1e')](respondWithResult(_0x174ffd,0xc9))[_0x6ffa('0x28')](handleError(_0x174ffd,null));};exports[_0x6ffa('0x34')]=function(_0x4bfa37,_0x5ce214,_0x58faae){var _0x47d73e;return db[_0x6ffa('0x5a')][_0x6ffa('0x5b')](function(_0x54d83a){return db['Network']['find']({'where':{'id':_0x4bfa37['params']['id']}})[_0x6ffa('0x1e')](handleEntityNotFound(_0x5ce214,null))['then'](saveUpdates(_0x4bfa37[_0x6ffa('0x5c')],null))[_0x6ffa('0x1e')](function(_0x1331a5){if(_0x1331a5){_0x47d73e=_0x1331a5;return db['Network'][_0x6ffa('0x53')]({'where':{'type':_0x47d73e['type']},'raw':!![]});}return null;})[_0x6ffa('0x1e')](function(_0x49e07c){if(_0x47d73e[_0x6ffa('0x3e')][_0x6ffa('0x70')]()=='STUN'){var _0xdb9042=fs[_0x6ffa('0x66')](path['join'](config[_0x6ffa('0x67')],_0x6ffa('0x5f')),'utf8');var _0x347119=ejs[_0x6ffa('0x61')](_0xdb9042,{'networks':_0x49e07c||[]});fs[_0x6ffa('0x62')](_0x6ffa('0x63'),_0x347119);return respondWithRpcPromise(_0x6ffa('0x6a'),_0x6ffa('0x34'),{'module':_0x6ffa('0x64')});}else if(_0x47d73e['type'][_0x6ffa('0x70')]()==_0x6ffa('0x65')){var _0x38cc17=fs[_0x6ffa('0x66')](path[_0x6ffa('0x5e')](config[_0x6ffa('0x67')],_0x6ffa('0x68')),_0x6ffa('0x60'));var _0x5c5ce6=ejs['render'](_0x38cc17,{'networks':_0x49e07c||[]});fs[_0x6ffa('0x62')](_0x6ffa('0x69'),_0x5c5ce6);return respondWithRpcPromise('Reload',_0x6ffa('0x34'),{'module':_0x6ffa('0x64')});}else{var _0x3e0458=fs[_0x6ffa('0x66')](path[_0x6ffa('0x5e')](config[_0x6ffa('0x67')],_0x6ffa('0x6b')),_0x6ffa('0x60'));var _0x4d71de=ejs['render'](_0x3e0458,{'networks':_0x49e07c||[]});fs['writeFileSync'](util[_0x6ffa('0x6c')](_0x6ffa('0x6d'),_0x4bfa37['body'][_0x6ffa('0x3e')][_0x6ffa('0x6e')]()),_0x4d71de);return respondWithRpcPromise(_0x6ffa('0x6a'),_0x6ffa('0x34'),{'module':_0x6ffa('0x6f')});}return null;})[_0x6ffa('0x1e')](function(_0x54d448){if(_0x54d448){return _0x47d73e;}return null;});})['then'](respondWithResult(_0x5ce214,null))[_0x6ffa('0x28')](handleError(_0x5ce214,null));};exports['destroy']=function(_0x451f59,_0x27ebbd,_0x5823f7){var _0x19151a;return db[_0x6ffa('0x3b')][_0x6ffa('0x58')]({'where':{'id':_0x451f59[_0x6ffa('0x71')]['id']}})[_0x6ffa('0x1e')](function(_0x534952){_0x19151a=_0x534952;return _0x534952;})[_0x6ffa('0x1e')](handleEntityNotFound(_0x27ebbd,null))[_0x6ffa('0x1e')](removeEntity(_0x27ebbd,null))['then'](function(){if(_0x19151a){return db[_0x6ffa('0x3b')]['findAll']({'where':{'type':_0x19151a[_0x6ffa('0x3e')]},'raw':!![]});}})['then'](function(_0x451de4){if(_0x19151a[_0x6ffa('0x3e')][_0x6ffa('0x70')]()==_0x6ffa('0x5d')){var _0x5f88b7=fs['readFileSync'](path[_0x6ffa('0x5e')](config[_0x6ffa('0x67')],_0x6ffa('0x5f')),'utf8');var _0x50a07f=ejs[_0x6ffa('0x61')](_0x5f88b7,{'networks':_0x451de4||[]});fs[_0x6ffa('0x62')](_0x6ffa('0x63'),_0x50a07f);return respondWithRpcPromise(_0x6ffa('0x6a'),_0x6ffa('0x35'),{'module':_0x6ffa('0x64')});}else if(_0x19151a['type'][_0x6ffa('0x70')]()==_0x6ffa('0x65')){var _0x53e251=fs[_0x6ffa('0x66')](path[_0x6ffa('0x5e')](config['root'],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x37315b=ejs[_0x6ffa('0x61')](_0x53e251,{'networks':_0x451de4||[]});fs[_0x6ffa('0x62')](_0x6ffa('0x69'),_0x37315b);return respondWithRpcPromise('Reload',_0x6ffa('0x35'),{'module':_0x6ffa('0x64')});}else{var _0x474453=fs[_0x6ffa('0x66')](path[_0x6ffa('0x5e')](config[_0x6ffa('0x67')],_0x6ffa('0x6b')),_0x6ffa('0x60'));var _0x413b61=ejs[_0x6ffa('0x61')](_0x474453,{'networks':_0x451de4||[]});fs['writeFileSync'](util[_0x6ffa('0x6c')](_0x6ffa('0x6d'),_0x451f59[_0x6ffa('0x5c')]['type'][_0x6ffa('0x6e')]()),_0x413b61);return respondWithRpcPromise(_0x6ffa('0x6a'),_0x6ffa('0x35'),{'module':_0x6ffa('0x6f')});}return null;})['catch'](handleError(_0x27ebbd,null));};
\ No newline at end of file
+var _0x23a6=['params','keys','fields','find','create','transaction','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','writeFileSync','server/files/templates/turn_multiple.ejs','render','/etc/asterisk/turn_xcally.conf','Reload','res_stun_monitor.so','server/files/templates/network.ejs','utf8','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','update','sequelize','/etc/asterisk/stun_xcally.conf','TURN','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','apply','save','destroy','stack','name','index','map','Network','rawAttributes','fieldName','type','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','show'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x23a6,0xff));var _0x623a=function(_0x4fdfe9,_0x4ed069){_0x4fdfe9=_0x4fdfe9-0x0;var _0xb6d59c=_0x23a6[_0x4fdfe9];return _0xb6d59c;};'use strict';var emlformat=require(_0x623a('0x0'));var rimraf=require(_0x623a('0x1'));var zipdir=require(_0x623a('0x2'));var jsonpatch=require(_0x623a('0x3'));var rp=require(_0x623a('0x4'));var moment=require(_0x623a('0x5'));var BPromise=require(_0x623a('0x6'));var Mustache=require(_0x623a('0x7'));var util=require(_0x623a('0x8'));var path=require(_0x623a('0x9'));var sox=require(_0x623a('0xa'));var csv=require(_0x623a('0xb'));var ejs=require(_0x623a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x623a('0xd'));var squel=require(_0x623a('0xe'));var crypto=require(_0x623a('0xf'));var jsforce=require(_0x623a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x623a('0xb'));var querystring=require(_0x623a('0x11'));var Papa=require(_0x623a('0x12'));var Redis=require('ioredis');var authService=require(_0x623a('0x13'));var qs=require(_0x623a('0x14'));var as=require(_0x623a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x623a('0x16'));var utils=require(_0x623a('0x17'));var config=require(_0x623a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x623a('0x19'))['db'];var jayson=require(_0x623a('0x1a'));var client=jayson[_0x623a('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c8c4e,_0x3e4266,_0x51d37f,_0x43764a){return new BPromise(function(_0x4c4bda,_0x42506a){var _0x64bb58=_0x43764a||client;return _0x64bb58[_0x623a('0x1c')](_0x1c8c4e,_0x51d37f)[_0x623a('0x1d')](function(_0x30f71e){logger['info'](_0x623a('0x1e'),_0x3e4266,_0x623a('0x1f'));logger[_0x623a('0x20')](_0x623a('0x21'),_0x3e4266,_0x623a('0x1f'),JSON[_0x623a('0x22')](_0x30f71e));if(_0x30f71e[_0x623a('0x23')]){if(_0x30f71e[_0x623a('0x23')][_0x623a('0x24')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0x3e4266,_0x30f71e['error'][_0x623a('0x25')]);return _0x42506a(_0x30f71e['error'][_0x623a('0x25')]);}logger['error'](_0x623a('0x1e'),_0x3e4266,_0x30f71e[_0x623a('0x23')][_0x623a('0x25')]);return _0x4c4bda(_0x30f71e[_0x623a('0x23')][_0x623a('0x25')]);}else{logger[_0x623a('0x26')](_0x623a('0x1e'),_0x3e4266,_0x623a('0x1f'));_0x4c4bda(_0x30f71e[_0x623a('0x27')][_0x623a('0x25')]);}})[_0x623a('0x28')](function(_0x450c6e){logger[_0x623a('0x23')](_0x623a('0x1e'),_0x3e4266,_0x450c6e);_0x42506a(_0x450c6e);});});}function respondWithStatusCode(_0x1471c1,_0x705056){_0x705056=_0x705056||0xcc;return function(_0x3ea41a){if(_0x3ea41a){return _0x1471c1[_0x623a('0x29')](_0x705056);}return _0x1471c1[_0x623a('0x2a')](_0x705056)[_0x623a('0x2b')]();};}function respondWithResult(_0x3e7675,_0x1942ba){_0x1942ba=_0x1942ba||0xc8;return function(_0x38a589){if(_0x38a589){return _0x3e7675['status'](_0x1942ba)[_0x623a('0x2c')](_0x38a589);}};}function respondWithFilteredResult(_0x4e1b3a,_0x44f7b6){return function(_0x3e4715){if(_0x3e4715){var _0x477698=typeof _0x44f7b6[_0x623a('0x2d')]==='undefined'&&typeof _0x44f7b6[_0x623a('0x2e')]===_0x623a('0x2f');var _0x1bce71=_0x3e4715['count'];var _0x1eed79=_0x477698?0x0:_0x44f7b6['offset'];var _0x2b6ed6=_0x477698?_0x3e4715['count']:_0x44f7b6[_0x623a('0x2d')]+_0x44f7b6[_0x623a('0x2e')];var _0x57396f;if(_0x2b6ed6>=_0x1bce71){_0x2b6ed6=_0x1bce71;_0x57396f=0xc8;}else{_0x57396f=0xce;}_0x4e1b3a[_0x623a('0x2a')](_0x57396f);return _0x4e1b3a[_0x623a('0x30')](_0x623a('0x31'),_0x1eed79+'-'+_0x2b6ed6+'/'+_0x1bce71)['json'](_0x3e4715);}return null;};}function patchUpdates(_0x525187){return function(_0x4be20c){try{jsonpatch[_0x623a('0x32')](_0x4be20c,_0x525187,!![]);}catch(_0x32d026){return BPromise['reject'](_0x32d026);}return _0x4be20c[_0x623a('0x33')]();};}function saveUpdates(_0x5ea995,_0x1968a2){return function(_0x274805){if(_0x274805){return _0x274805['update'](_0x5ea995)[_0x623a('0x1d')](function(_0x249a48){return _0x249a48;});}return null;};}function removeEntity(_0x17b8b2,_0x24d367){return function(_0x3e7bab){if(_0x3e7bab){return _0x3e7bab[_0x623a('0x34')]()[_0x623a('0x1d')](function(){_0x17b8b2[_0x623a('0x2a')](0xcc)[_0x623a('0x2b')]();});}};}function handleEntityNotFound(_0x2a2e50,_0x9f485c){return function(_0x43f9cb){if(!_0x43f9cb){_0x2a2e50[_0x623a('0x29')](0x194);}return _0x43f9cb;};}function handleError(_0x507c7c,_0x1722c8){_0x1722c8=_0x1722c8||0x1f4;return function(_0x36a6d8){logger['error'](_0x36a6d8[_0x623a('0x35')]);if(_0x36a6d8[_0x623a('0x36')]){delete _0x36a6d8[_0x623a('0x36')];}_0x507c7c[_0x623a('0x2a')](_0x1722c8)['send'](_0x36a6d8);};}exports[_0x623a('0x37')]=function(_0x55805e,_0x5dab5){var _0x2c1304={},_0x5b6849={},_0x103dc1={'count':0x0,'rows':[]};var _0x690cd5=_[_0x623a('0x38')](db[_0x623a('0x39')][_0x623a('0x3a')],function(_0x204313){return{'name':_0x204313[_0x623a('0x3b')],'type':_0x204313[_0x623a('0x3c')][_0x623a('0x3d')]};});_0x5b6849[_0x623a('0x3e')]=_['map'](_0x690cd5,_0x623a('0x36'));_0x5b6849[_0x623a('0x3f')]=_['keys'](_0x55805e[_0x623a('0x3f')]);_0x5b6849['filters']=_[_0x623a('0x40')](_0x5b6849['model'],_0x5b6849['query']);_0x2c1304['attributes']=_['intersection'](_0x5b6849[_0x623a('0x3e')],qs['fields'](_0x55805e[_0x623a('0x3f')]['fields']));_0x2c1304[_0x623a('0x41')]=_0x2c1304[_0x623a('0x41')][_0x623a('0x42')]?_0x2c1304[_0x623a('0x41')]:_0x5b6849['model'];if(!_0x55805e[_0x623a('0x3f')][_0x623a('0x43')](_0x623a('0x44'))){_0x2c1304[_0x623a('0x2e')]=qs['limit'](_0x55805e['query'][_0x623a('0x2e')]);_0x2c1304[_0x623a('0x2d')]=qs['offset'](_0x55805e[_0x623a('0x3f')][_0x623a('0x2d')]);}_0x2c1304[_0x623a('0x45')]=qs[_0x623a('0x46')](_0x55805e[_0x623a('0x3f')]['sort']);_0x2c1304[_0x623a('0x47')]=qs[_0x623a('0x48')](_[_0x623a('0x49')](_0x55805e['query'],_0x5b6849[_0x623a('0x48')]),_0x690cd5);if(_0x55805e[_0x623a('0x3f')][_0x623a('0x4a')]){_0x2c1304[_0x623a('0x47')]=_[_0x623a('0x4b')](_0x2c1304[_0x623a('0x47')],{'$or':_[_0x623a('0x38')](_0x690cd5,function(_0x4abb8e){if(_0x4abb8e[_0x623a('0x3c')]!==_0x623a('0x4c')){var _0x809417={};_0x809417[_0x4abb8e[_0x623a('0x36')]]={'$like':'%'+_0x55805e['query'][_0x623a('0x4a')]+'%'};return _0x809417;}})});}_0x2c1304=_[_0x623a('0x4b')]({},_0x2c1304,_0x55805e[_0x623a('0x4d')]);var _0x27dff6={'where':_0x2c1304['where']};return db[_0x623a('0x39')][_0x623a('0x4e')](_0x27dff6)['then'](function(_0x32e0dc){_0x103dc1['count']=_0x32e0dc;if(_0x55805e[_0x623a('0x3f')][_0x623a('0x4f')]){_0x2c1304[_0x623a('0x50')]=[{'all':!![]}];}return db['Network'][_0x623a('0x51')](_0x2c1304);})[_0x623a('0x1d')](function(_0x58697f){_0x103dc1[_0x623a('0x52')]=_0x58697f;return _0x103dc1;})[_0x623a('0x1d')](respondWithFilteredResult(_0x5dab5,_0x2c1304))[_0x623a('0x28')](handleError(_0x5dab5,null));};exports[_0x623a('0x53')]=function(_0x157e86,_0x1002d5){var _0x8f9b9b={'raw':!![],'where':{'id':_0x157e86[_0x623a('0x54')]['id']}},_0x22197d={};_0x22197d[_0x623a('0x3e')]=_[_0x623a('0x55')](db[_0x623a('0x39')][_0x623a('0x3a')]);_0x22197d[_0x623a('0x3f')]=_[_0x623a('0x55')](_0x157e86['query']);_0x22197d['filters']=_['intersection'](_0x22197d['model'],_0x22197d['query']);_0x8f9b9b[_0x623a('0x41')]=_['intersection'](_0x22197d['model'],qs['fields'](_0x157e86['query'][_0x623a('0x56')]));_0x8f9b9b[_0x623a('0x41')]=_0x8f9b9b[_0x623a('0x41')][_0x623a('0x42')]?_0x8f9b9b[_0x623a('0x41')]:_0x22197d[_0x623a('0x3e')];if(_0x157e86[_0x623a('0x3f')][_0x623a('0x4f')]){_0x8f9b9b[_0x623a('0x50')]=[{'all':!![]}];}_0x8f9b9b=_[_0x623a('0x4b')]({},_0x8f9b9b,_0x157e86['options']);return db['Network'][_0x623a('0x57')](_0x8f9b9b)[_0x623a('0x1d')](handleEntityNotFound(_0x1002d5,null))['then'](respondWithResult(_0x1002d5,null))[_0x623a('0x28')](handleError(_0x1002d5,null));};exports[_0x623a('0x58')]=function(_0x27b42c,_0xf9b46f,_0x34719f){var _0x2e0207;return db['sequelize'][_0x623a('0x59')](function(_0x37b1be){return db[_0x623a('0x39')]['create'](_0x27b42c['body'],{'raw':!![]})[_0x623a('0x1d')](function(_0x28f17f){_0x2e0207=_0x28f17f;return db['Network'][_0x623a('0x51')]({'where':{'type':_0x27b42c[_0x623a('0x5a')][_0x623a('0x3c')]},'raw':!![]});})['then'](function(_0x29cabd){if(_0x2e0207[_0x623a('0x3c')][_0x623a('0x5b')]()==_0x623a('0x5c')){var _0x179b7b=fs[_0x623a('0x5d')](path[_0x623a('0x5e')](config[_0x623a('0x5f')],_0x623a('0x60')),'utf8');var _0x3ea0eb=ejs['render'](_0x179b7b,{'networks':_0x29cabd||[]});fs[_0x623a('0x61')]('/etc/asterisk/stun_xcally.conf',_0x3ea0eb);return respondWithRpcPromise('Reload',_0x623a('0x58'),{'module':'res_stun_monitor.so'});}else if(_0x2e0207[_0x623a('0x3c')]['toUpperCase']()=='TURN'){var _0x320c50=fs[_0x623a('0x5d')](path[_0x623a('0x5e')](config[_0x623a('0x5f')],_0x623a('0x62')),'utf8');var _0x35e86b=ejs[_0x623a('0x63')](_0x320c50,{'networks':_0x29cabd||[]});fs['writeFileSync'](_0x623a('0x64'),_0x35e86b);return respondWithRpcPromise(_0x623a('0x65'),_0x623a('0x58'),{'module':_0x623a('0x66')});}else{var _0x3e4da5=fs['readFileSync'](path[_0x623a('0x5e')](config[_0x623a('0x5f')],_0x623a('0x67')),_0x623a('0x68'));var _0x411560=ejs['render'](_0x3e4da5,{'networks':_0x29cabd||[]});fs[_0x623a('0x61')](util[_0x623a('0x69')](_0x623a('0x6a'),_0x27b42c[_0x623a('0x5a')][_0x623a('0x3c')][_0x623a('0x6b')]()),_0x411560);return respondWithRpcPromise(_0x623a('0x65'),_0x623a('0x58'),{'module':_0x623a('0x6c')});}return null;})['then'](function(){return _0x2e0207;});})[_0x623a('0x1d')](respondWithResult(_0xf9b46f,0xc9))[_0x623a('0x28')](handleError(_0xf9b46f,null));};exports[_0x623a('0x6d')]=function(_0xfad217,_0x118610,_0x5022a5){var _0x489665;return db[_0x623a('0x6e')][_0x623a('0x59')](function(_0x3c7cbc){return db[_0x623a('0x39')]['find']({'where':{'id':_0xfad217['params']['id']}})[_0x623a('0x1d')](handleEntityNotFound(_0x118610,null))['then'](saveUpdates(_0xfad217['body'],null))[_0x623a('0x1d')](function(_0x40b70c){if(_0x40b70c){_0x489665=_0x40b70c;return db[_0x623a('0x39')][_0x623a('0x51')]({'where':{'type':_0x489665[_0x623a('0x3c')]},'raw':!![]});}return null;})['then'](function(_0xf05338){if(_0x489665['type'][_0x623a('0x5b')]()==_0x623a('0x5c')){var _0x54a150=fs[_0x623a('0x5d')](path[_0x623a('0x5e')](config[_0x623a('0x5f')],_0x623a('0x60')),'utf8');var _0x5a294a=ejs[_0x623a('0x63')](_0x54a150,{'networks':_0xf05338||[]});fs[_0x623a('0x61')](_0x623a('0x6f'),_0x5a294a);return respondWithRpcPromise(_0x623a('0x65'),_0x623a('0x6d'),{'module':_0x623a('0x66')});}else if(_0x489665['type'][_0x623a('0x5b')]()==_0x623a('0x70')){var _0x322d89=fs[_0x623a('0x5d')](path[_0x623a('0x5e')](config['root'],_0x623a('0x62')),_0x623a('0x68'));var _0x40125e=ejs[_0x623a('0x63')](_0x322d89,{'networks':_0xf05338||[]});fs[_0x623a('0x61')](_0x623a('0x64'),_0x40125e);return respondWithRpcPromise('Reload',_0x623a('0x6d'),{'module':'res_stun_monitor.so'});}else{var _0x14d624=fs[_0x623a('0x5d')](path[_0x623a('0x5e')](config[_0x623a('0x5f')],_0x623a('0x67')),_0x623a('0x68'));var _0x319e9c=ejs[_0x623a('0x63')](_0x14d624,{'networks':_0xf05338||[]});fs['writeFileSync'](util[_0x623a('0x69')](_0x623a('0x6a'),_0xfad217['body']['type']['toLowerCase']()),_0x319e9c);return respondWithRpcPromise(_0x623a('0x65'),_0x623a('0x6d'),{'module':_0x623a('0x6c')});}return null;})[_0x623a('0x1d')](function(_0x10f108){if(_0x10f108){return _0x489665;}return null;});})[_0x623a('0x1d')](respondWithResult(_0x118610,null))[_0x623a('0x28')](handleError(_0x118610,null));};exports[_0x623a('0x34')]=function(_0x1221d8,_0x122cc7,_0xe7e4df){var _0x2b4c10;return db[_0x623a('0x39')]['find']({'where':{'id':_0x1221d8[_0x623a('0x54')]['id']}})[_0x623a('0x1d')](function(_0x30ce7e){_0x2b4c10=_0x30ce7e;return _0x30ce7e;})[_0x623a('0x1d')](handleEntityNotFound(_0x122cc7,null))['then'](removeEntity(_0x122cc7,null))['then'](function(){if(_0x2b4c10){return db[_0x623a('0x39')][_0x623a('0x51')]({'where':{'type':_0x2b4c10[_0x623a('0x3c')]},'raw':!![]});}})[_0x623a('0x1d')](function(_0x4a7029){if(_0x2b4c10[_0x623a('0x3c')][_0x623a('0x5b')]()==_0x623a('0x5c')){var _0x379dd5=fs[_0x623a('0x5d')](path[_0x623a('0x5e')](config[_0x623a('0x5f')],_0x623a('0x60')),_0x623a('0x68'));var _0x2c54cd=ejs[_0x623a('0x63')](_0x379dd5,{'networks':_0x4a7029||[]});fs[_0x623a('0x61')](_0x623a('0x6f'),_0x2c54cd);return respondWithRpcPromise('Reload','destroy',{'module':_0x623a('0x66')});}else if(_0x2b4c10[_0x623a('0x3c')][_0x623a('0x5b')]()==_0x623a('0x70')){var _0x300502=fs['readFileSync'](path[_0x623a('0x5e')](config[_0x623a('0x5f')],'server/files/templates/turn_multiple.ejs'),_0x623a('0x68'));var _0xef1b2=ejs[_0x623a('0x63')](_0x300502,{'networks':_0x4a7029||[]});fs[_0x623a('0x61')]('/etc/asterisk/turn_xcally.conf',_0xef1b2);return respondWithRpcPromise(_0x623a('0x65'),'destroy',{'module':_0x623a('0x66')});}else{var _0x45061d=fs[_0x623a('0x5d')](path[_0x623a('0x5e')](config[_0x623a('0x5f')],_0x623a('0x67')),_0x623a('0x68'));var _0x3b315a=ejs[_0x623a('0x63')](_0x45061d,{'networks':_0x4a7029||[]});fs['writeFileSync'](util['format'](_0x623a('0x6a'),_0x1221d8['body'][_0x623a('0x3c')][_0x623a('0x6b')]()),_0x3b315a);return respondWithRpcPromise(_0x623a('0x65'),_0x623a('0x34'),{'module':_0x623a('0x6c')});}return null;})[_0x623a('0x28')](handleError(_0x122cc7,null));};
\ No newline at end of file
index d7831b5..eb0fe60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['./network.attributes','exports','define','network','lodash','bluebird','rimraf','../../config/environment'];(function(_0x2dad55,_0xcd6eca){var _0x5a74ce=function(_0x42ce3f){while(--_0x42ce3f){_0x2dad55['push'](_0x2dad55['shift']());}};_0x5a74ce(++_0xcd6eca);}(_0xf4eb,0xec));var _0xbf4e=function(_0x5c5acb,_0x363c09){_0x5c5acb=_0x5c5acb-0x0;var _0x4021a4=_0xf4eb[_0x5c5acb];return _0x4021a4;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xbf4e('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var attributes=require(_0xbf4e('0x4'));module[_0xbf4e('0x5')]=function(_0xa4dcf5,_0x2fcfed){return _0xa4dcf5[_0xbf4e('0x6')]('Network',attributes,{'tableName':_0xbf4e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1339=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Network','network','../../config/logger','api'];(function(_0x98aa48,_0x293cd2){var _0x491b11=function(_0x129f33){while(--_0x129f33){_0x98aa48['push'](_0x98aa48['shift']());}};_0x491b11(++_0x293cd2);}(_0x1339,0x1ed));var _0x9133=function(_0x5358ba,_0x542d83){_0x5358ba=_0x5358ba-0x0;var _0x4ec11a=_0x1339[_0x5358ba];return _0x4ec11a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9133('0x0'))(_0x9133('0x1'));var moment=require(_0x9133('0x2'));var BPromise=require(_0x9133('0x3'));var rp=require(_0x9133('0x4'));var fs=require('fs');var path=require(_0x9133('0x5'));var rimraf=require(_0x9133('0x6'));var config=require(_0x9133('0x7'));var attributes=require('./network.attributes');module[_0x9133('0x8')]=function(_0x855473,_0x379915){return _0x855473['define'](_0x9133('0x9'),attributes,{'tableName':_0x9133('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf95a0b..8265db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x51416f,_0xd62824){var _0x5436e1=function(_0x46d286){while(--_0x46d286){_0x51416f['push'](_0x51416f['shift']());}};_0x5436e1(++_0xd62824);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7a54,0x106));var _0x47a5=function(_0x3cb8bd,_0x92bbe9){_0x3cb8bd=_0x3cb8bd-0x0;var _0x37a0fb=_0x7a54[_0x3cb8bd];return _0x37a0fb;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index bbfa318..04c78c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe90b=['getDispositions','/:id/canned_answers','/:id/applications','getInteractions','/:id/users','getAgents','create','post','addAnswer','/:id/notify','notify','addApplications','addAgents','send','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','isAuthenticated','index','describe','get','/:id','show'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xe90b,0x13e));var _0xbe90=function(_0x11c0cb,_0x4476aa){_0x11c0cb=_0x11c0cb-0x0;var _0x3dbf20=_0xe90b[_0x11c0cb];return _0x3dbf20;};'use strict';var multer=require(_0xbe90('0x0'));var util=require(_0xbe90('0x1'));var path=require(_0xbe90('0x2'));var timeout=require(_0xbe90('0x3'));var express=require('express');var router=express[_0xbe90('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbe90('0x5'));var interaction=require(_0xbe90('0x6'));var config=require(_0xbe90('0x7'));var controller=require(_0xbe90('0x8'));router['get']('/',auth[_0xbe90('0x9')](),controller[_0xbe90('0xa')]);router['get']('/describe',auth[_0xbe90('0x9')](),controller[_0xbe90('0xb')]);router[_0xbe90('0xc')](_0xbe90('0xd'),auth[_0xbe90('0x9')](),controller[_0xbe90('0xe')]);router[_0xbe90('0xc')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xbe90('0xf')]);router[_0xbe90('0xc')](_0xbe90('0x10'),auth[_0xbe90('0x9')](),controller['getAnswers']);router[_0xbe90('0xc')](_0xbe90('0x11'),auth['isAuthenticated'](),controller['getApplications']);router[_0xbe90('0xc')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xbe90('0x12')]);router['get'](_0xbe90('0x13'),auth[_0xbe90('0x9')](),controller[_0xbe90('0x14')]);router['post']('/',auth['isAuthenticated'](),controller[_0xbe90('0x15')]);router[_0xbe90('0x16')]('/:id/dispositions',auth[_0xbe90('0x9')](),controller['addDisposition']);router['post'](_0xbe90('0x10'),auth[_0xbe90('0x9')](),controller[_0xbe90('0x17')]);router[_0xbe90('0x16')](_0xbe90('0x18'),controller[_0xbe90('0x19')]);router[_0xbe90('0x16')]('/:id/applications',auth[_0xbe90('0x9')](),controller[_0xbe90('0x1a')]);router[_0xbe90('0x16')](_0xbe90('0x13'),auth[_0xbe90('0x9')](),controller[_0xbe90('0x1b')]);router[_0xbe90('0x16')]('/:id/send',auth[_0xbe90('0x9')](),controller[_0xbe90('0x1c')]);router[_0xbe90('0x1d')](_0xbe90('0xd'),auth[_0xbe90('0x9')](),controller[_0xbe90('0x1e')]);router[_0xbe90('0x1f')](_0xbe90('0xd'),auth[_0xbe90('0x9')](),controller[_0xbe90('0x20')]);router['delete']('/:id/dispositions',auth[_0xbe90('0x9')](),controller[_0xbe90('0x21')]);router[_0xbe90('0x1f')](_0xbe90('0x10'),auth[_0xbe90('0x9')](),controller[_0xbe90('0x22')]);router[_0xbe90('0x1f')](_0xbe90('0x13'),auth[_0xbe90('0x9')](),controller[_0xbe90('0x23')]);module[_0xbe90('0x24')]=router;
\ No newline at end of file
+var _0xf861=['fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelAccount.controller','index','/describe','describe','get','isAuthenticated','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/users','create','post','addDisposition','addAnswer','/:id/notify','addApplications','addAgents','/:id/send','send','put','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','connect-timeout','express','Router'];(function(_0x37fc62,_0x5120f9){var _0x58109b=function(_0x2a16a4){while(--_0x2a16a4){_0x37fc62['push'](_0x37fc62['shift']());}};_0x58109b(++_0x5120f9);}(_0xf861,0xba));var _0x1f86=function(_0x33cd40,_0x2084e6){_0x33cd40=_0x33cd40-0x0;var _0x4564e3=_0xf861[_0x33cd40];return _0x4564e3;};'use strict';var multer=require('multer');var util=require(_0x1f86('0x0'));var path=require('path');var timeout=require(_0x1f86('0x1'));var express=require(_0x1f86('0x2'));var router=express[_0x1f86('0x3')]();var fs_extra=require(_0x1f86('0x4'));var auth=require(_0x1f86('0x5'));var interaction=require(_0x1f86('0x6'));var config=require('../../config/environment');var controller=require(_0x1f86('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x1f86('0x8')]);router['get'](_0x1f86('0x9'),auth['isAuthenticated'](),controller[_0x1f86('0xa')]);router[_0x1f86('0xb')]('/:id',auth[_0x1f86('0xc')](),controller['show']);router[_0x1f86('0xb')](_0x1f86('0xd'),auth[_0x1f86('0xc')](),controller['getDispositions']);router[_0x1f86('0xb')](_0x1f86('0xe'),auth[_0x1f86('0xc')](),controller[_0x1f86('0xf')]);router[_0x1f86('0xb')](_0x1f86('0x10'),auth['isAuthenticated'](),controller['getApplications']);router[_0x1f86('0xb')](_0x1f86('0x11'),auth['isAuthenticated'](),controller[_0x1f86('0x12')]);router['get'](_0x1f86('0x13'),auth[_0x1f86('0xc')](),controller['getAgents']);router['post']('/',auth[_0x1f86('0xc')](),controller[_0x1f86('0x14')]);router[_0x1f86('0x15')](_0x1f86('0xd'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x16')]);router[_0x1f86('0x15')](_0x1f86('0xe'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x17')]);router[_0x1f86('0x15')](_0x1f86('0x18'),controller['notify']);router[_0x1f86('0x15')](_0x1f86('0x10'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x19')]);router['post'](_0x1f86('0x13'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x1a')]);router['post'](_0x1f86('0x1b'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x1c')]);router[_0x1f86('0x1d')](_0x1f86('0x1e'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x1f')]);router[_0x1f86('0x20')](_0x1f86('0x1e'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x21')]);router[_0x1f86('0x20')](_0x1f86('0xd'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x22')]);router[_0x1f86('0x20')](_0x1f86('0xe'),auth['isAuthenticated'](),controller[_0x1f86('0x23')]);router[_0x1f86('0x20')](_0x1f86('0x13'),auth[_0x1f86('0xc')](),controller[_0x1f86('0x24')]);module[_0x1f86('0x25')]=router;
\ No newline at end of file
index afaeb05..981a60d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa316=['mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x45e631,_0x4ea165){var _0x15a1c8=function(_0x348556){while(--_0x348556){_0x45e631['push'](_0x45e631['shift']());}};_0x15a1c8(++_0x4ea165);}(_0xa316,0x12c));var _0x6a31=function(_0x5c6c25,_0x4f0f79){_0x5c6c25=_0x5c6c25-0x0;var _0x3c6871=_0xa316[_0x5c6c25];return _0x3c6871;};'use strict';var Sequelize=require(_0x6a31('0x0'));var rs=require(_0x6a31('0x1'));module[_0x6a31('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x6a31('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x6a31('0x4')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x6a31('0x5')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x6a31('0x4')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x6a31('0x6')],'defaultValue':function(){return _0x6a31('0x7');}},'notificationSound':{'type':Sequelize[_0x6a31('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x6a31('0x4')]},'queueTransfer':{'type':Sequelize[_0x6a31('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6a31('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6a31('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6a31('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6a31('0x9')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x6a31('0x8')],'defaultValue':![],'comment':_0x6a31('0xa'),'set':function(_0x493961){if(!_0x493961)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x6a31('0xb')](_0x6a31('0xc'),_0x493961);}}};
\ No newline at end of file
+var _0xa044=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0x410611,_0x476352){var _0x44fddd=function(_0x2e46bb){while(--_0x2e46bb){_0x410611['push'](_0x410611['shift']());}};_0x44fddd(++_0x476352);}(_0xa044,0x72));var _0x4a04=function(_0x1f2795,_0x3f0dec){_0x1f2795=_0x1f2795-0x0;var _0x2d8fea=_0xa044[_0x1f2795];return _0x2d8fea;};'use strict';var Sequelize=require(_0x4a04('0x0'));var rs=require(_0x4a04('0x1'));module[_0x4a04('0x2')]={'name':{'type':Sequelize[_0x4a04('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x4a04('0x3')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x4a04('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x4a04('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x4a04('0x4');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4a04('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4a04('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x4a04('0x3')]},'queueTransfer':{'type':Sequelize[_0x4a04('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4a04('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4a04('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4a04('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4a04('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x4a04('0x7')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x4a04('0x8'),'set':function(_0x17d1f4){if(!_0x17d1f4)this[_0x4a04('0x9')](_0x4a04('0xa'),null);this['setDataValue']('mandatoryDisposition',_0x17d1f4);}}};
\ No newline at end of file
index cc58d4c..d173df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf59e=['where','filters','pick','filter','merge','VIRTUAL','OpenchannelAccount','includeAll','include','findAll','show','mandatoryDispositionPause','keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','addDisposition','OpenchannelAccountId','getDispositions','findOne','Disposition','hasOwnProperty','order','rows','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','notify','openchannel','CmContact','Sequelize','ValidationError','updatedAt','createdAt','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','account','applications','orderBy','asc','ListId','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','spread','contact','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','transaction','Transaction','READ_COMMITTED','bulkCreate','findAndCountAll','priority','json','getApplications','getInteractions','Contact','fullname','internal','Tag','color','tag','omit','userOpenchannelAccount:save','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','out','OpenchannelMessage','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','desk.js','to-csv','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','jayson/promise','http','client','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','get','OpenchannelAccounts','UserProfileResource','stack','name','send','Pause','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','sort'];(function(_0x1da778,_0x39d34c){var _0x87ed15=function(_0xbb966f){while(--_0xbb966f){_0x1da778['push'](_0x1da778['shift']());}};_0x87ed15(++_0x39d34c);}(_0xf59e,0x74));var _0xef59=function(_0xeba74d,_0x470ec1){_0xeba74d=_0xeba74d-0x0;var _0x18619b=_0xf59e[_0xeba74d];return _0x18619b;};'use strict';var emlformat=require(_0xef59('0x0'));var rimraf=require(_0xef59('0x1'));var zipdir=require(_0xef59('0x2'));var jsonpatch=require(_0xef59('0x3'));var rp=require(_0xef59('0x4'));var moment=require(_0xef59('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xef59('0x6'));var util=require(_0xef59('0x7'));var path=require(_0xef59('0x8'));var sox=require(_0xef59('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef59('0xa'));var _=require('lodash');var squel=require(_0xef59('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xef59('0xc'));var toCsv=require(_0xef59('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xef59('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xef59('0xf'));var as=require(_0xef59('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef59('0x11'))(_0xef59('0x12'));var utils=require(_0xef59('0x13'));var config=require(_0xef59('0x14'));var licenseUtil=require(_0xef59('0x15'));var db=require('../../mysqldb')['db'];config[_0xef59('0x16')]=_[_0xef59('0x17')](config[_0xef59('0x16')],{'host':_0xef59('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xef59('0x16')]));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0xef59('0x19'));var client=jayson['client'][_0xef59('0x1a')]({'port':0x232c});var client9002=jayson[_0xef59('0x1b')][_0xef59('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x556a11,_0x255c53,_0x35d98d,_0x238187){return new BPromise(function(_0x3e6c6b,_0x5d0958){var _0x286afe=_0x238187||client;return _0x286afe[_0xef59('0x1c')](_0x556a11,_0x35d98d)[_0xef59('0x1d')](function(_0x57592a){logger[_0xef59('0x1e')](_0xef59('0x1f'),_0x255c53,_0xef59('0x20'));logger[_0xef59('0x21')](_0xef59('0x22'),_0x255c53,_0xef59('0x20'),JSON[_0xef59('0x23')](_0x57592a));if(_0x57592a[_0xef59('0x24')]){if(_0x57592a[_0xef59('0x24')][_0xef59('0x25')]===0x1f4){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x255c53,_0x57592a[_0xef59('0x24')][_0xef59('0x26')]);return _0x5d0958(_0x57592a[_0xef59('0x24')]['message']);}logger[_0xef59('0x24')](_0xef59('0x1f'),_0x255c53,_0x57592a[_0xef59('0x24')]['message']);return _0x3e6c6b(_0x57592a[_0xef59('0x24')][_0xef59('0x26')]);}else{logger['info'](_0xef59('0x1f'),_0x255c53,_0xef59('0x20'));_0x3e6c6b(_0x57592a[_0xef59('0x27')][_0xef59('0x26')]);}})[_0xef59('0x28')](function(_0x1ac30b){logger['error'](_0xef59('0x1f'),_0x255c53,_0x1ac30b);_0x5d0958(_0x1ac30b);});});}function respondWithStatusCode(_0x3c6bfe,_0x2db50f){_0x2db50f=_0x2db50f||0xcc;return function(_0x58a402){if(_0x58a402){return _0x3c6bfe[_0xef59('0x29')](_0x2db50f);}return _0x3c6bfe[_0xef59('0x2a')](_0x2db50f)[_0xef59('0x2b')]();};}function respondWithResult(_0x51a81f,_0x21031c){_0x21031c=_0x21031c||0xc8;return function(_0x5b91ce){if(_0x5b91ce){return _0x51a81f[_0xef59('0x2a')](_0x21031c)['json'](_0x5b91ce);}};}function respondWithFilteredResult(_0x4f8479,_0x55c5a5){return function(_0x2498dd){if(_0x2498dd){var _0x24d14e=typeof _0x55c5a5['offset']===_0xef59('0x2c')&&typeof _0x55c5a5[_0xef59('0x2d')]===_0xef59('0x2c');var _0x458148=_0x2498dd[_0xef59('0x2e')];var _0xd8c97d=_0x24d14e?0x0:_0x55c5a5[_0xef59('0x2f')];var _0x36fd1d=_0x24d14e?_0x2498dd['count']:_0x55c5a5['offset']+_0x55c5a5[_0xef59('0x2d')];var _0x5d8f1e;if(_0x36fd1d>=_0x458148){_0x36fd1d=_0x458148;_0x5d8f1e=0xc8;}else{_0x5d8f1e=0xce;}_0x4f8479[_0xef59('0x2a')](_0x5d8f1e);return _0x4f8479[_0xef59('0x30')](_0xef59('0x31'),_0xd8c97d+'-'+_0x36fd1d+'/'+_0x458148)['json'](_0x2498dd);}return null;};}function patchUpdates(_0x9441fc){return function(_0x5ee212){try{jsonpatch[_0xef59('0x32')](_0x5ee212,_0x9441fc,!![]);}catch(_0xd6ae91){return BPromise['reject'](_0xd6ae91);}return _0x5ee212[_0xef59('0x33')]();};}function saveUpdates(_0x27406a,_0x38a65a){return function(_0x3ec952){if(_0x3ec952){return _0x3ec952['update'](_0x27406a)[_0xef59('0x1d')](function(_0x44a844){return _0x44a844;});}return null;};}function removeEntity(_0x9a32f9,_0x37125b){return function(_0x4b29b){if(_0x4b29b){return _0x4b29b[_0xef59('0x34')]()['then'](function(){var _0x52ecb0=_0x4b29b[_0xef59('0x35')]({'plain':!![]});var _0x45968c=_0xef59('0x36');return db[_0xef59('0x37')]['destroy']({'where':{'type':_0x45968c,'resourceId':_0x52ecb0['id']}})[_0xef59('0x1d')](function(){return _0x4b29b;});})[_0xef59('0x1d')](function(){_0x9a32f9[_0xef59('0x2a')](0xcc)[_0xef59('0x2b')]();});}};}function handleEntityNotFound(_0x447c5e,_0x353047){return function(_0x398ff7){if(!_0x398ff7){_0x447c5e['sendStatus'](0x194);}return _0x398ff7;};}function handleError(_0x314600,_0x318cdf){_0x318cdf=_0x318cdf||0x1f4;return function(_0x8e493b){logger[_0xef59('0x24')](_0x8e493b[_0xef59('0x38')]);if(_0x8e493b[_0xef59('0x39')]){delete _0x8e493b['name'];}_0x314600[_0xef59('0x2a')](_0x318cdf)[_0xef59('0x3a')](_0x8e493b);};}exports['index']=function(_0x5c971d,_0xcbdf1d){var _0x1fe88c={'include':[{'model':db[_0xef59('0x3b')],'as':'mandatoryDispositionPause'}]},_0x1fcbef={},_0x41a0cf={'count':0x0,'rows':[]};var _0x451fcf=_[_0xef59('0x3c')](db['OpenchannelAccount'][_0xef59('0x3d')],function(_0x36a4f1){return{'name':_0x36a4f1[_0xef59('0x3e')],'type':_0x36a4f1[_0xef59('0x3f')][_0xef59('0x40')]};});_0x1fcbef[_0xef59('0x41')]=_[_0xef59('0x3c')](_0x451fcf,_0xef59('0x39'));_0x1fcbef[_0xef59('0x42')]=_['keys'](_0x5c971d[_0xef59('0x42')]);_0x1fcbef['filters']=_[_0xef59('0x43')](_0x1fcbef[_0xef59('0x41')],_0x1fcbef[_0xef59('0x42')]);_0x1fe88c[_0xef59('0x44')]=_['intersection'](_0x1fcbef['model'],qs[_0xef59('0x45')](_0x5c971d[_0xef59('0x42')]['fields']));_0x1fe88c[_0xef59('0x44')]=_0x1fe88c[_0xef59('0x44')][_0xef59('0x46')]?_0x1fe88c['attributes']:_0x1fcbef['model'];if(!_0x5c971d[_0xef59('0x42')]['hasOwnProperty'](_0xef59('0x47'))){_0x1fe88c['limit']=qs[_0xef59('0x2d')](_0x5c971d[_0xef59('0x42')]['limit']);_0x1fe88c[_0xef59('0x2f')]=qs[_0xef59('0x2f')](_0x5c971d[_0xef59('0x42')][_0xef59('0x2f')]);}_0x1fe88c['order']=qs[_0xef59('0x48')](_0x5c971d[_0xef59('0x42')]['sort']);_0x1fe88c[_0xef59('0x49')]=qs[_0xef59('0x4a')](_[_0xef59('0x4b')](_0x5c971d['query'],_0x1fcbef[_0xef59('0x4a')]),_0x451fcf);if(_0x5c971d[_0xef59('0x42')][_0xef59('0x4c')]){_0x1fe88c[_0xef59('0x49')]=_[_0xef59('0x4d')](_0x1fe88c[_0xef59('0x49')],{'$or':_['map'](_0x451fcf,function(_0x245fd0){if(_0x245fd0[_0xef59('0x3f')]!==_0xef59('0x4e')){var _0x313e62={};_0x313e62[_0x245fd0[_0xef59('0x39')]]={'$like':'%'+_0x5c971d['query'][_0xef59('0x4c')]+'%'};return _0x313e62;}})});}_0x1fe88c=_[_0xef59('0x4d')]({},_0x1fe88c,_0x5c971d['options']);var _0x2a5ae4={'where':_0x1fe88c[_0xef59('0x49')]};return db[_0xef59('0x4f')][_0xef59('0x2e')](_0x2a5ae4)[_0xef59('0x1d')](function(_0x249880){_0x41a0cf[_0xef59('0x2e')]=_0x249880;if(_0x5c971d[_0xef59('0x42')][_0xef59('0x50')]){_0x1fe88c[_0xef59('0x51')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0xef59('0x52')](_0x1fe88c);})[_0xef59('0x1d')](function(_0x578863){_0x41a0cf['rows']=_0x578863;return _0x41a0cf;})[_0xef59('0x1d')](respondWithFilteredResult(_0xcbdf1d,_0x1fe88c))[_0xef59('0x28')](handleError(_0xcbdf1d,null));};exports[_0xef59('0x53')]=function(_0x1e0be2,_0x65145d){var _0x39cc56={'raw':![],'where':{'id':_0x1e0be2['params']['id']},'include':[{'model':db[_0xef59('0x3b')],'as':_0xef59('0x54')}]},_0x1c7781={};_0x1c7781['model']=_['keys'](db[_0xef59('0x4f')][_0xef59('0x3d')]);_0x1c7781[_0xef59('0x42')]=_[_0xef59('0x55')](_0x1e0be2[_0xef59('0x42')]);_0x1c7781[_0xef59('0x4a')]=_[_0xef59('0x43')](_0x1c7781['model'],_0x1c7781[_0xef59('0x42')]);_0x39cc56['attributes']=_['intersection'](_0x1c7781[_0xef59('0x41')],qs['fields'](_0x1e0be2[_0xef59('0x42')]['fields']));_0x39cc56[_0xef59('0x44')]=_0x39cc56[_0xef59('0x44')][_0xef59('0x46')]?_0x39cc56['attributes']:_0x1c7781['model'];if(_0x1e0be2[_0xef59('0x42')][_0xef59('0x50')]){_0x39cc56[_0xef59('0x51')]=[{'all':!![]}];}_0x39cc56=_[_0xef59('0x4d')]({},_0x39cc56,_0x1e0be2[_0xef59('0x56')]);return db['OpenchannelAccount'][_0xef59('0x57')](_0x39cc56)[_0xef59('0x1d')](handleEntityNotFound(_0x65145d,null))[_0xef59('0x1d')](respondWithResult(_0x65145d,null))[_0xef59('0x28')](handleError(_0x65145d,null));};exports[_0xef59('0x58')]=function(_0x1ff82f,_0x146f16){return db[_0xef59('0x4f')][_0xef59('0x58')](_0x1ff82f[_0xef59('0x59')],{})[_0xef59('0x1d')](function(_0x2b5358){var _0x4c9a95=_0x1ff82f[_0xef59('0x5a')][_0xef59('0x35')]({'plain':!![]});if(!_0x4c9a95)throw new Error(_0xef59('0x5b'));if(_0x4c9a95[_0xef59('0x5c')]===_0xef59('0x5a')){var _0x3f9df1=_0x2b5358[_0xef59('0x35')]({'plain':!![]});var _0x52b183=_0xef59('0x36');return db[_0xef59('0x5d')][_0xef59('0x57')]({'where':{'name':_0x52b183,'userProfileId':_0x4c9a95[_0xef59('0x5e')]},'raw':!![]})[_0xef59('0x1d')](function(_0x3de2cb){if(_0x3de2cb&&_0x3de2cb[_0xef59('0x5f')]===0x0){return db[_0xef59('0x37')][_0xef59('0x58')]({'name':_0x3f9df1[_0xef59('0x39')],'resourceId':_0x3f9df1['id'],'type':_0x3de2cb[_0xef59('0x39')],'sectionId':_0x3de2cb['id']},{})['then'](function(){return _0x2b5358;});}else{return _0x2b5358;}})[_0xef59('0x28')](function(_0x1c8dd3){logger['error'](_0xef59('0x60'),_0x1c8dd3);throw _0x1c8dd3;});}return _0x2b5358;})[_0xef59('0x1d')](respondWithResult(_0x146f16,0xc9))[_0xef59('0x28')](handleError(_0x146f16,null));};exports[_0xef59('0x61')]=function(_0x4055fd,_0x1118c2){if(_0x4055fd[_0xef59('0x59')]['id']){delete _0x4055fd[_0xef59('0x59')]['id'];}return db[_0xef59('0x4f')][_0xef59('0x57')]({'where':{'id':_0x4055fd['params']['id']},'include':[{'model':db['Pause'],'as':_0xef59('0x54')}]})['then'](handleEntityNotFound(_0x1118c2,null))[_0xef59('0x1d')](saveUpdates(_0x4055fd[_0xef59('0x59')],null))[_0xef59('0x1d')](respondWithResult(_0x1118c2,null))[_0xef59('0x28')](handleError(_0x1118c2,null));};exports['destroy']=function(_0x446094,_0x144b4b){return db[_0xef59('0x4f')][_0xef59('0x57')]({'where':{'id':_0x446094[_0xef59('0x62')]['id']}})['then'](handleEntityNotFound(_0x144b4b,null))[_0xef59('0x1d')](removeEntity(_0x144b4b,null))[_0xef59('0x28')](handleError(_0x144b4b,null));};exports[_0xef59('0x63')]=function(_0x4c62de,_0x37cbde){return db['OpenchannelAccount'][_0xef59('0x63')]()[_0xef59('0x1d')](respondWithResult(_0x37cbde,null))[_0xef59('0x28')](handleError(_0x37cbde,null));};exports[_0xef59('0x64')]=function(_0x1f7d99,_0x50117c,_0x53cc7b){if(_0x1f7d99[_0xef59('0x59')]['id']){delete _0x1f7d99['body']['id'];}return db[_0xef59('0x4f')]['find']({'where':{'id':_0x1f7d99[_0xef59('0x62')]['id']}})['then'](handleEntityNotFound(_0x50117c,null))['then'](function(_0x5d4687){if(_0x5d4687){_0x1f7d99[_0xef59('0x59')][_0xef59('0x65')]=_0x5d4687['id'];return db['Disposition'][_0xef59('0x58')](_0x1f7d99[_0xef59('0x59')]);}})['then'](respondWithResult(_0x50117c,null))[_0xef59('0x28')](handleError(_0x50117c,null));};exports[_0xef59('0x66')]=function(_0x26a57f,_0x5b7323,_0x19e4b5){var _0x22f3a7={'raw':![],'where':{}};var _0x21f9f0={};var _0x2a31c4={'count':0x0,'rows':[]};return db[_0xef59('0x4f')][_0xef59('0x67')]({'where':{'id':_0x26a57f['params']['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x5b7323,null))[_0xef59('0x1d')](function(_0x422965){if(_0x422965){_0x21f9f0[_0xef59('0x41')]=_[_0xef59('0x55')](db[_0xef59('0x68')][_0xef59('0x3d')]);_0x21f9f0[_0xef59('0x42')]=_[_0xef59('0x55')](_0x26a57f['query']);_0x21f9f0[_0xef59('0x4a')]=_[_0xef59('0x43')](_0x21f9f0['model'],_0x21f9f0[_0xef59('0x42')]);_0x22f3a7[_0xef59('0x44')]=_[_0xef59('0x43')](_0x21f9f0[_0xef59('0x41')],qs[_0xef59('0x45')](_0x26a57f[_0xef59('0x42')][_0xef59('0x45')]));_0x22f3a7[_0xef59('0x44')]=_0x22f3a7['attributes'][_0xef59('0x46')]?_0x22f3a7['attributes']:_0x21f9f0[_0xef59('0x41')];if(!_0x26a57f[_0xef59('0x42')][_0xef59('0x69')](_0xef59('0x47'))){_0x22f3a7['limit']=qs['limit'](_0x26a57f[_0xef59('0x42')][_0xef59('0x2d')]);_0x22f3a7[_0xef59('0x2f')]=qs[_0xef59('0x2f')](_0x26a57f[_0xef59('0x42')]['offset']);}_0x22f3a7[_0xef59('0x6a')]=qs['sort'](_0x26a57f[_0xef59('0x42')][_0xef59('0x48')]);_0x22f3a7['where']=qs['filters'](_[_0xef59('0x4b')](_0x26a57f[_0xef59('0x42')],_0x21f9f0[_0xef59('0x4a')]));_0x22f3a7[_0xef59('0x49')][_0xef59('0x65')]=_0x422965['id'];if(_0x26a57f[_0xef59('0x42')][_0xef59('0x4c')]){_0x22f3a7[_0xef59('0x49')]=_[_0xef59('0x4d')](_0x22f3a7[_0xef59('0x49')],{'$or':_[_0xef59('0x3c')](_0x22f3a7[_0xef59('0x44')],function(_0x2fd6bc){var _0x3e6c79={};_0x3e6c79[_0x2fd6bc]={'$like':'%'+_0x26a57f[_0xef59('0x42')][_0xef59('0x4c')]+'%'};return _0x3e6c79;})});}_0x22f3a7=_[_0xef59('0x4d')]({},_0x22f3a7,_0x26a57f[_0xef59('0x56')]);return db[_0xef59('0x68')]['count']({'where':_0x22f3a7['where']})[_0xef59('0x1d')](function(_0xbd14b3){_0x2a31c4['count']=_0xbd14b3;if(_0x26a57f[_0xef59('0x42')][_0xef59('0x50')]){_0x22f3a7[_0xef59('0x51')]=[{'all':!![]}];}return db[_0xef59('0x68')][_0xef59('0x52')](_0x22f3a7);})[_0xef59('0x1d')](function(_0x58b15f){_0x2a31c4[_0xef59('0x6b')]=_0x58b15f;return _0x2a31c4;});}})['then'](respondWithFilteredResult(_0x5b7323,_0x22f3a7))[_0xef59('0x28')](handleError(_0x5b7323,null));};exports[_0xef59('0x6c')]=function(_0x219852,_0x2a780b,_0x21e680){return db[_0xef59('0x4f')][_0xef59('0x57')]({'where':{'id':_0x219852[_0xef59('0x62')]['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x2a780b,null))[_0xef59('0x1d')](function(_0x1705b1){if(_0x1705b1){return _0x1705b1[_0xef59('0x6c')](_0x219852[_0xef59('0x42')][_0xef59('0x6d')]);}})[_0xef59('0x1d')](respondWithStatusCode(_0x2a780b,null))[_0xef59('0x28')](handleError(_0x2a780b,null));};exports[_0xef59('0x6e')]=function(_0x13ae35,_0x12d335,_0x105748){if(_0x13ae35[_0xef59('0x59')]['id']){delete _0x13ae35[_0xef59('0x59')]['id'];}return db[_0xef59('0x4f')][_0xef59('0x57')]({'where':{'id':_0x13ae35[_0xef59('0x62')]['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x12d335,null))[_0xef59('0x1d')](function(_0x34d8af){if(_0x34d8af){_0x13ae35[_0xef59('0x59')][_0xef59('0x65')]=_0x34d8af['id'];return db['CannedAnswer']['create'](_0x13ae35[_0xef59('0x59')]);}})[_0xef59('0x1d')](respondWithResult(_0x12d335,null))[_0xef59('0x28')](handleError(_0x12d335,null));};exports[_0xef59('0x6f')]=function(_0x4edf3d,_0x21b99a,_0x3f92e1){var _0x202151={'raw':![],'where':{}};var _0x5de2d6={};var _0xdbe3d6={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xef59('0x67')]({'where':{'id':_0x4edf3d[_0xef59('0x62')]['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x21b99a,null))[_0xef59('0x1d')](function(_0x305a01){if(_0x305a01){_0x5de2d6['model']=_['keys'](db[_0xef59('0x70')]['rawAttributes']);_0x5de2d6[_0xef59('0x42')]=_['keys'](_0x4edf3d[_0xef59('0x42')]);_0x5de2d6[_0xef59('0x4a')]=_[_0xef59('0x43')](_0x5de2d6[_0xef59('0x41')],_0x5de2d6[_0xef59('0x42')]);_0x202151[_0xef59('0x44')]=_['intersection'](_0x5de2d6[_0xef59('0x41')],qs[_0xef59('0x45')](_0x4edf3d[_0xef59('0x42')]['fields']));_0x202151[_0xef59('0x44')]=_0x202151['attributes'][_0xef59('0x46')]?_0x202151['attributes']:_0x5de2d6[_0xef59('0x41')];if(!_0x4edf3d[_0xef59('0x42')][_0xef59('0x69')](_0xef59('0x47'))){_0x202151[_0xef59('0x2d')]=qs[_0xef59('0x2d')](_0x4edf3d[_0xef59('0x42')]['limit']);_0x202151[_0xef59('0x2f')]=qs[_0xef59('0x2f')](_0x4edf3d['query']['offset']);}_0x202151[_0xef59('0x6a')]=qs[_0xef59('0x48')](_0x4edf3d[_0xef59('0x42')][_0xef59('0x48')]);_0x202151[_0xef59('0x49')]=qs[_0xef59('0x4a')](_[_0xef59('0x4b')](_0x4edf3d[_0xef59('0x42')],_0x5de2d6['filters']));_0x202151[_0xef59('0x49')]['OpenchannelAccountId']=_0x305a01['id'];if(_0x4edf3d[_0xef59('0x42')][_0xef59('0x4c')]){_0x202151[_0xef59('0x49')]=_[_0xef59('0x4d')](_0x202151[_0xef59('0x49')],{'$or':_[_0xef59('0x3c')](_0x202151['attributes'],function(_0x5f58f3){var _0x5d4d8d={};_0x5d4d8d[_0x5f58f3]={'$like':'%'+_0x4edf3d['query'][_0xef59('0x4c')]+'%'};return _0x5d4d8d;})});}_0x202151=_['merge']({},_0x202151,_0x4edf3d[_0xef59('0x56')]);return db[_0xef59('0x70')][_0xef59('0x2e')]({'where':_0x202151[_0xef59('0x49')]})[_0xef59('0x1d')](function(_0x318b56){_0xdbe3d6[_0xef59('0x2e')]=_0x318b56;if(_0x4edf3d[_0xef59('0x42')][_0xef59('0x50')]){_0x202151[_0xef59('0x51')]=[{'all':!![]}];}return db[_0xef59('0x70')]['findAll'](_0x202151);})['then'](function(_0x231d87){_0xdbe3d6['rows']=_0x231d87;return _0xdbe3d6;});}})[_0xef59('0x1d')](respondWithFilteredResult(_0x21b99a,_0x202151))['catch'](handleError(_0x21b99a,null));};exports[_0xef59('0x71')]=function(_0x3fa401,_0x542260,_0xdb3f6){return db[_0xef59('0x4f')]['find']({'where':{'id':_0x3fa401[_0xef59('0x62')]['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x542260,null))[_0xef59('0x1d')](function(_0x570d9e){if(_0x570d9e){return _0x570d9e[_0xef59('0x71')](_0x3fa401[_0xef59('0x42')][_0xef59('0x6d')]);}})['then'](respondWithStatusCode(_0x542260,null))[_0xef59('0x28')](handleError(_0x542260,null));};exports[_0xef59('0x72')]=function(_0x4b0d78,_0x39357a,_0x570976){var _0x2a7ff5={'body':_0x4b0d78[_0xef59('0x59')],'channel':_0xef59('0x73')};var _0x44ccee=[];var _0xd7efde=[];var _0x3f8957={};var _0x1a5a22=![];return db[_0xef59('0x74')]['describe']()[_0xef59('0x1d')](function(_0x46d1a2){if(!_0x46d1a2){throw new db[(_0xef59('0x75'))][(_0xef59('0x76'))]('no\x20available\x20attributes');}_0x44ccee=_['difference'](_['keys'](_0x46d1a2),['createdAt',_0xef59('0x77')]);_0xd7efde=_['difference'](_[_0xef59('0x55')](_0x46d1a2),[_0xef59('0x78'),'updatedAt','CompanyId','ListId']);if(_0x4b0d78[_0xef59('0x59')]['id']){delete _0x4b0d78[_0xef59('0x59')]['id'];}if(_[_0xef59('0x79')](_0x4b0d78['body'][_0xef59('0x7a')])){throw new db['Sequelize'][(_0xef59('0x76'))](_0xef59('0x7b'));}if(_[_0xef59('0x79')](_0x4b0d78['body'][_0xef59('0x59')])||_0x4b0d78[_0xef59('0x59')]['body']===''){throw new db[(_0xef59('0x75'))][(_0xef59('0x76'))](_0xef59('0x7c'));}if(_[_0xef59('0x79')](_0x4b0d78[_0xef59('0x59')][_0xef59('0x7d')])){throw new db[(_0xef59('0x75'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xd7efde);}if(!_[_0xef59('0x7e')](_0xd7efde,_0x4b0d78[_0xef59('0x59')]['mapKey'])){throw new db[(_0xef59('0x75'))][(_0xef59('0x76'))](_0xef59('0x7f')+_0xd7efde);}_0x3f8957[_0x4b0d78[_0xef59('0x59')][_0xef59('0x7d')]]=_0x4b0d78['body'][_0xef59('0x7a')];})['then'](function(){return db[_0xef59('0x4f')][_0xef59('0x57')]({'where':{'id':_0x4b0d78[_0xef59('0x62')]['id']},'include':[{'model':db[_0xef59('0x80')],'as':_0xef59('0x81'),'include':[{'model':db['CmContact'],'as':_0xef59('0x82'),'where':_0x3f8957,'limit':0x1,'order':[['updatedAt',_0xef59('0x83')]]}]},{'model':db[_0xef59('0x84')],'as':_0xef59('0x85')}]});})[_0xef59('0x1d')](handleEntityNotFound(_0x39357a,null))[_0xef59('0x1d')](function(_0x582b24){if(_0x582b24&&_0x582b24['List']){_0x2a7ff5[_0xef59('0x86')]=_0x582b24;_0x2a7ff5[_0xef59('0x87')]=_0x582b24['Applications'];_0x2a7ff5['list']=_0x582b24['List'];_0x2a7ff5['applications']=_[_0xef59('0x88')](_0x2a7ff5['applications'],['priority'],[_0xef59('0x89')]);if(_0x2a7ff5[_0xef59('0x86')][_0xef59('0x85')]){delete _0x2a7ff5[_0xef59('0x86')][_0xef59('0x85')];}if(_0x2a7ff5['account']['List']&&_0x2a7ff5[_0xef59('0x86')][_0xef59('0x81')][_0xef59('0x82')]['length']){return _0x2a7ff5[_0xef59('0x86')][_0xef59('0x81')][_0xef59('0x82')][0x0];}var _0x3f5e3e=_[_0xef59('0x17')](_0x4b0d78['body'],{'firstName':_0x4b0d78[_0xef59('0x59')][_0xef59('0x7a')],'ListId':_0x582b24[_0xef59('0x8a')]});_0x3f5e3e[_0x4b0d78[_0xef59('0x59')]['mapKey']]=_0x4b0d78[_0xef59('0x59')][_0xef59('0x7a')];return db[_0xef59('0x74')][_0xef59('0x58')](_0x3f5e3e,{'fields':_0x44ccee,'raw':!![]});}})[_0xef59('0x1d')](handleEntityNotFound(_0x39357a,null))[_0xef59('0x1d')](function(_0x127f23){_0x2a7ff5['contact']=_0x127f23;if(_0x127f23){var _0x586a1a={'ContactId':_0x127f23['id'],'OpenchannelAccountId':_0x4b0d78[_0xef59('0x62')]['id'],'from':(_0x127f23[_0xef59('0x8b')]||'')+'\x20'+(_0x127f23[_0xef59('0x8c')]||'')};var _0x51ec11={'OpenchannelAccountId':_0x4b0d78[_0xef59('0x62')]['id'],'closed':![]};if(_0x4b0d78[_0xef59('0x59')]['threadId']){_0x51ec11[_0xef59('0x8d')]=_0x4b0d78[_0xef59('0x59')]['threadId'];return db[_0xef59('0x8e')]['find']({'where':_0x51ec11})[_0xef59('0x1d')](function(_0x2dc2f0){if(_0x2dc2f0){return[_0x2dc2f0,![]];}_0x586a1a[_0xef59('0x8d')]=_0x4b0d78['body']['threadId'];_0x586a1a[_0xef59('0x8f')]=_0x4b0d78['body'][_0xef59('0x8f')];return db[_0xef59('0x8e')][_0xef59('0x58')](_0x586a1a)['then'](function(_0x26c8e2){return[_0x26c8e2,!![]];});});}else{_0x51ec11[_0xef59('0x8d')]=null;}_0x51ec11['ContactId']=_0x127f23['id'];return db['OpenchannelInteraction']['find']({'where':_0x51ec11})[_0xef59('0x1d')](function(_0x5b7e71){if(_0x5b7e71){return[_0x5b7e71,![]];}return db['OpenchannelInteraction'][_0xef59('0x58')](_0x586a1a)['then'](function(_0x36970c){return[_0x36970c,!![]];});});}})[_0xef59('0x90')](function(_0x4c4245,_0x3a2398){if(_0x4c4245){_0x1a5a22=_0x3a2398;if(!_0x3a2398){var _0x45cdeb={'from':(_0x2a7ff5[_0xef59('0x91')][_0xef59('0x8b')]||'')+'\x20'+(_0x2a7ff5['contact'][_0xef59('0x8c')]||'')};if(_0x4b0d78['body'][_0xef59('0x8d')]&&_0x4b0d78['body'][_0xef59('0x92')]&&_0x4b0d78[_0xef59('0x59')][_0xef59('0x8d')]!=_0x4b0d78['body'][_0xef59('0x92')]){_0x45cdeb[_0xef59('0x8d')]=_0x4b0d78[_0xef59('0x59')][_0xef59('0x92')];}return _0x4c4245['update'](_0x45cdeb);}else{return _0x4c4245;}}})[_0xef59('0x1d')](function(_0xa0d0af){_0x2a7ff5['interaction']=_0xa0d0af[_0xef59('0x35')]({'plain':!![]});_0x2a7ff5[_0xef59('0x93')][_0xef59('0x94')]=_0x1a5a22;if(_0x2a7ff5[_0xef59('0x93')]['created']){if(_0x2a7ff5[_0xef59('0x86')][_0xef59('0x95')]){_0x2a7ff5['applications'][_0xef59('0x96')]({'id':0x0,'priority':_0x2a7ff5['applications']['length']+0x1,'app':_0xef59('0x97'),'appdata':_0xef59('0x98'),'interval':_0xef59('0x99')});}}return db['OpenchannelMessage']['create']({'body':_0x4b0d78[_0xef59('0x59')][_0xef59('0x59')],'OpenchannelAccountId':_0x4b0d78[_0xef59('0x62')]['id'],'OpenchannelInteractionId':_0xa0d0af['id'],'direction':'in','ContactId':_0x2a7ff5[_0xef59('0x91')]['id'],'AttachmentId':_0x4b0d78[_0xef59('0x59')][_0xef59('0x9a')]});})[_0xef59('0x1d')](function(_0xa006f7){_0x2a7ff5['message']=_0xa006f7;if(_0x2a7ff5[_0xef59('0x93')][_0xef59('0x9b')]){return db[_0xef59('0x9c')][_0xef59('0x57')]({'attributes':['id',_0xef59('0x39')],'where':{'id':_0x2a7ff5['interaction'][_0xef59('0x9b')]}})[_0xef59('0x1d')](function(_0xe6dc44){if(_0xe6dc44){_0x2a7ff5[_0xef59('0x87')][_0xef59('0x9d')]({'id':0x0,'priority':0x0,'app':_0xef59('0x9e'),'appdata':_0xe6dc44[_0xef59('0x39')]+','+(_0x2a7ff5[_0xef59('0x86')][_0xef59('0x9f')]||0xa),'interval':_0xef59('0x99')});_0x2a7ff5['forcedOwnership']=![];}return respondWithRpcPromise('Start','startRouting',_0x2a7ff5);});}return respondWithRpcPromise(_0xef59('0xa0'),_0xef59('0xa1'),_0x2a7ff5);})['then'](function(_0x215aaa){respondWithRpcPromise(_0xef59('0xa2'),_0xef59('0xa2'),{'event':_0xef59('0x72'),'message':_0x215aaa},client9002);return _0x215aaa;})['then'](respondWithResult(_0x39357a,null))[_0xef59('0x28')](handleError(_0x39357a,null));};exports['addApplications']=function(_0x546ba6,_0x1f784a){var _0x509245=_0x546ba6[_0xef59('0x62')]['id'];var _0x26b217=_0x546ba6[_0xef59('0x59')];var _0x16f7a3=0xc8;var _0x16bad8=null;return db['sequelize'][_0xef59('0xa3')]({'isolationLevel':db['sequelize'][_0xef59('0xa4')]['ISOLATION_LEVELS'][_0xef59('0xa5')]},function(_0x3a3a20){return db[_0xef59('0x4f')][_0xef59('0x67')]({'where':{'id':_0x509245},'transaction':_0x3a3a20})[_0xef59('0x1d')](function(_0x40fdea){if(_0x40fdea){return db[_0xef59('0x84')][_0xef59('0x34')]({'where':{'OpenchannelAccountId':_0x509245},'transaction':_0x3a3a20})['then'](function(){var _0x7389a8=_['map'](_0x26b217,function(_0x366f46){_0x366f46[_0xef59('0x65')]=_0x509245;return _0x366f46;});return db['OpenchannelApplication'][_0xef59('0xa6')](_0x7389a8,{'transaction':_0x3a3a20});});}else{_0x16f7a3=0x194;_0x16bad8=[];}});})[_0xef59('0x1d')](function(){if(_0x16f7a3!==0x194){return db[_0xef59('0x84')][_0xef59('0xa7')]({'where':{'OpenchannelAccountId':_0x509245},'order':_0xef59('0xa8')})[_0xef59('0x1d')](function(_0x3f3635){_0x16bad8=_0x3f3635;});}})[_0xef59('0x28')](function(_0x1853bc){_0x16f7a3=0x1f4;logger['error'](_0x1853bc['stack']);if(_0x1853bc['name']){delete _0x1853bc[_0xef59('0x39')];}_0x16bad8=_0x1853bc;})['finally'](function(){if(_0x16bad8===null){_0x1f784a[_0xef59('0x29')](_0x16f7a3);}else{if(_0x16f7a3===0x1f4){_0x1f784a['status'](_0x16f7a3)[_0xef59('0x3a')](_0x16bad8);}else{_0x1f784a[_0xef59('0x2a')](_0x16f7a3)[_0xef59('0xa9')](_0x16bad8);}}});};exports[_0xef59('0xaa')]=function(_0x1eb69a,_0x15cfe8,_0x3911f5){var _0x1c5cb2={};var _0x320ce6={};var _0x17cd51;var _0x230c2e;return db[_0xef59('0x4f')][_0xef59('0x67')]({'where':{'id':_0x1eb69a['params']['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x15cfe8,null))[_0xef59('0x1d')](function(_0x49cd65){if(_0x49cd65){_0x17cd51=_0x49cd65;_0x320ce6['model']=_[_0xef59('0x55')](db['OpenchannelApplication'][_0xef59('0x3d')]);_0x320ce6[_0xef59('0x42')]=_[_0xef59('0x55')](_0x1eb69a[_0xef59('0x42')]);_0x320ce6[_0xef59('0x4a')]=_[_0xef59('0x43')](_0x320ce6[_0xef59('0x41')],_0x320ce6['query']);_0x1c5cb2[_0xef59('0x44')]=_['intersection'](_0x320ce6[_0xef59('0x41')],qs[_0xef59('0x45')](_0x1eb69a['query'][_0xef59('0x45')]));_0x1c5cb2[_0xef59('0x44')]=_0x1c5cb2[_0xef59('0x44')][_0xef59('0x46')]?_0x1c5cb2[_0xef59('0x44')]:_0x320ce6[_0xef59('0x41')];_0x1c5cb2[_0xef59('0x6a')]=qs[_0xef59('0x48')](_0x1eb69a[_0xef59('0x42')]['sort']);_0x1c5cb2[_0xef59('0x49')]=qs[_0xef59('0x4a')](_[_0xef59('0x4b')](_0x1eb69a[_0xef59('0x42')],_0x320ce6[_0xef59('0x4a')]));if(_0x1eb69a[_0xef59('0x42')][_0xef59('0x4c')]){_0x1c5cb2[_0xef59('0x49')]=_[_0xef59('0x4d')](_0x1c5cb2[_0xef59('0x49')],{'$or':_['map'](_0x1c5cb2[_0xef59('0x44')],function(_0xa70026){var _0x2c66d8={};_0x2c66d8[_0xa70026]={'$like':'%'+_0x1eb69a[_0xef59('0x42')]['filter']+'%'};return _0x2c66d8;})});}_0x1c5cb2=_[_0xef59('0x4d')]({},_0x1c5cb2,_0x1eb69a[_0xef59('0x56')]);return _0x17cd51[_0xef59('0xaa')](_0x1c5cb2);}})[_0xef59('0x1d')](function(_0x3efe82){if(_0x3efe82){_0x230c2e=_0x3efe82['length'];if(!_0x1eb69a[_0xef59('0x42')][_0xef59('0x69')](_0xef59('0x47'))){_0x1c5cb2[_0xef59('0x2d')]=qs['limit'](_0x1eb69a['query'][_0xef59('0x2d')]);_0x1c5cb2[_0xef59('0x2f')]=qs[_0xef59('0x2f')](_0x1eb69a[_0xef59('0x42')][_0xef59('0x2f')]);}return _0x17cd51[_0xef59('0xaa')](_0x1c5cb2);}})[_0xef59('0x1d')](function(_0x35dd1f){if(_0x35dd1f){return _0x35dd1f?{'count':_0x230c2e,'rows':_0x35dd1f}:null;}})[_0xef59('0x1d')](respondWithResult(_0x15cfe8,null))['catch'](handleError(_0x15cfe8,null));};exports[_0xef59('0xab')]=function(_0x6b1d4d,_0x59f95c,_0x136a74){var _0x27d229={'raw':![],'where':{}};var _0xc5f104={};var _0x4511ee={'count':0x0,'rows':[]};return db[_0xef59('0x4f')][_0xef59('0x67')]({'where':{'id':_0x6b1d4d[_0xef59('0x62')]['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x59f95c,null))[_0xef59('0x1d')](function(_0x3ce56b){if(_0x3ce56b){_0xc5f104['model']=_[_0xef59('0x55')](db[_0xef59('0x8e')][_0xef59('0x3d')]);_0xc5f104['query']=_['keys'](_0x6b1d4d[_0xef59('0x42')]);_0xc5f104[_0xef59('0x4a')]=_[_0xef59('0x43')](_0xc5f104['model'],_0xc5f104[_0xef59('0x42')]);_0x27d229[_0xef59('0x44')]=_['intersection'](_0xc5f104['model'],qs['fields'](_0x6b1d4d[_0xef59('0x42')][_0xef59('0x45')]));_0x27d229[_0xef59('0x44')]=_0x27d229['attributes'][_0xef59('0x46')]?_0x27d229[_0xef59('0x44')]:_0xc5f104['model'];if(!_0x6b1d4d[_0xef59('0x42')][_0xef59('0x69')](_0xef59('0x47'))){_0x27d229[_0xef59('0x2d')]=qs[_0xef59('0x2d')](_0x6b1d4d['query'][_0xef59('0x2d')]);_0x27d229[_0xef59('0x2f')]=qs[_0xef59('0x2f')](_0x6b1d4d[_0xef59('0x42')]['offset']);}_0x27d229[_0xef59('0x6a')]=qs[_0xef59('0x48')](_0x6b1d4d['query'][_0xef59('0x48')]);_0x27d229[_0xef59('0x49')]=qs[_0xef59('0x4a')](_[_0xef59('0x4b')](_0x6b1d4d[_0xef59('0x42')],_0xc5f104[_0xef59('0x4a')]));_0x27d229['where']['OpenchannelAccountId']=_0x3ce56b['id'];if(_0x6b1d4d['query']['filter']){_0x27d229['where']=_[_0xef59('0x4d')](_0x27d229[_0xef59('0x49')],{'$or':_[_0xef59('0x3c')](_0x27d229['attributes'],function(_0x1b15b2){var _0x627633={};_0x627633[_0x1b15b2]={'$like':'%'+_0x6b1d4d[_0xef59('0x42')][_0xef59('0x4c')]+'%'};return _0x627633;})});}_0x27d229=_[_0xef59('0x4d')]({},_0x27d229,_0x6b1d4d[_0xef59('0x56')]);return db[_0xef59('0x8e')][_0xef59('0x2e')]({'where':_0x27d229[_0xef59('0x49')]})[_0xef59('0x1d')](function(_0x44a547){_0x4511ee['count']=_0x44a547;if(_0x6b1d4d[_0xef59('0x42')][_0xef59('0x50')]){_0x27d229[_0xef59('0x51')]=[{'model':db[_0xef59('0x74')],'as':_0xef59('0xac'),'required':![]},{'model':db[_0xef59('0x9c')],'as':'Owner','attributes':[_0xef59('0x39'),_0xef59('0xad'),_0xef59('0xae')],'required':![]},{'model':db[_0xef59('0xaf')],'as':'Tags','attributes':['id','name',_0xef59('0xb0')],'where':_0x6b1d4d[_0xef59('0x42')][_0xef59('0xb1')]?{'id':_0x6b1d4d[_0xef59('0x42')][_0xef59('0xb1')]}:undefined,'required':_0x6b1d4d[_0xef59('0x42')][_0xef59('0xb1')]?!![]:![]}];}return db[_0xef59('0x8e')][_0xef59('0x52')](_0x27d229);})[_0xef59('0x1d')](function(_0x63a509){_0x4511ee[_0xef59('0x6b')]=_0x63a509;return _0x4511ee;});}})[_0xef59('0x1d')](respondWithFilteredResult(_0x59f95c,_0x27d229))[_0xef59('0x28')](handleError(_0x59f95c,null));};exports['addAgents']=function(_0x1ea419,_0x3b03e8,_0x4bbb14){return db['OpenchannelAccount'][_0xef59('0x57')]({'where':{'id':_0x1ea419[_0xef59('0x62')]['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x3b03e8,null))['then'](function(_0x262273){if(_0x262273){return _0x262273['addAgents'](_0x1ea419[_0xef59('0x59')][_0xef59('0x6d')],_[_0xef59('0xb2')](_0x1ea419[_0xef59('0x59')],['ids','id'])||{})['spread'](function(_0x5d4c2e){for(var _0x4e76b9=0x0;_0x4e76b9<_0x1ea419['body']['ids'][_0xef59('0x46')];_0x4e76b9+=0x1){socket['emit'](_0xef59('0xb3'),{'UserId':Number(_0x1ea419[_0xef59('0x59')][_0xef59('0x6d')][_0x4e76b9]),'OpenchannelAccountId':Number(_0x1ea419[_0xef59('0x62')]['id'])});}return _0x5d4c2e;});}})[_0xef59('0x1d')](respondWithResult(_0x3b03e8,null))[_0xef59('0x28')](handleError(_0x3b03e8,null));};exports[_0xef59('0xb4')]=function(_0x9ff829,_0x4461eb,_0x5535b2){return db[_0xef59('0x4f')][_0xef59('0x57')]({'where':{'id':_0x9ff829['params']['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x4461eb,null))[_0xef59('0x1d')](function(_0x3d9358){if(_0x3d9358){return _0x3d9358[_0xef59('0xb4')](_0x9ff829[_0xef59('0x42')][_0xef59('0x6d')])[_0xef59('0x1d')](function(){if(_[_0xef59('0xb5')](_0x9ff829['query'][_0xef59('0x6d')])){for(var _0x42661d=0x0;_0x42661d<_0x9ff829[_0xef59('0x42')][_0xef59('0x6d')][_0xef59('0x46')];_0x42661d+=0x1){socket[_0xef59('0xb6')](_0xef59('0xb7'),{'UserId':Number(_0x9ff829['query'][_0xef59('0x6d')][_0x42661d]),'OpenchannelAccountId':Number(_0x9ff829[_0xef59('0x62')]['id'])});}}else{socket[_0xef59('0xb6')](_0xef59('0xb7'),{'UserId':Number(_0x9ff829[_0xef59('0x42')][_0xef59('0x6d')]),'OpenchannelAccountId':Number(_0x9ff829[_0xef59('0x62')]['id'])});}});}})[_0xef59('0x1d')](respondWithStatusCode(_0x4461eb,null))[_0xef59('0x28')](handleError(_0x4461eb,null));};exports[_0xef59('0xb8')]=function(_0x2e61bd,_0x3a589e,_0x2ff8a5){var _0x2ec6c1={};var _0x173b5d={};var _0x3cf51d;var _0x44405f;return db[_0xef59('0x4f')][_0xef59('0x67')]({'where':{'id':_0x2e61bd['params']['id']}})[_0xef59('0x1d')](handleEntityNotFound(_0x3a589e,null))['then'](function(_0x2f2295){if(_0x2f2295){_0x3cf51d=_0x2f2295;_0x173b5d['model']=_[_0xef59('0x55')](db['User'][_0xef59('0x3d')]);_0x173b5d['query']=_[_0xef59('0x55')](_0x2e61bd['query']);_0x173b5d['filters']=_[_0xef59('0x43')](_0x173b5d[_0xef59('0x41')],_0x173b5d['query']);_0x2ec6c1[_0xef59('0x44')]=_[_0xef59('0x43')](_0x173b5d[_0xef59('0x41')],qs[_0xef59('0x45')](_0x2e61bd[_0xef59('0x42')][_0xef59('0x45')]));_0x2ec6c1[_0xef59('0x44')]=_0x2ec6c1[_0xef59('0x44')][_0xef59('0x46')]?_0x2ec6c1['attributes']:_0x173b5d[_0xef59('0x41')];_0x2ec6c1[_0xef59('0x6a')]=qs['sort'](_0x2e61bd[_0xef59('0x42')]['sort']);_0x2ec6c1[_0xef59('0x49')]=qs[_0xef59('0x4a')](_['pick'](_0x2e61bd[_0xef59('0x42')],_0x173b5d[_0xef59('0x4a')]));if(_0x2e61bd[_0xef59('0x42')][_0xef59('0x4c')]){_0x2ec6c1['where']=_[_0xef59('0x4d')](_0x2ec6c1['where'],{'$or':_[_0xef59('0x3c')](_0x2ec6c1['attributes'],function(_0x4fb42c){var _0x191e71={};_0x191e71[_0x4fb42c]={'$like':'%'+_0x2e61bd[_0xef59('0x42')]['filter']+'%'};return _0x191e71;})});}_0x2ec6c1=_[_0xef59('0x4d')]({},_0x2ec6c1,_0x2e61bd[_0xef59('0x56')]);return _0x3cf51d['getAgents'](_0x2ec6c1);}})[_0xef59('0x1d')](function(_0x55d0de){if(_0x55d0de){_0x44405f=_0x55d0de[_0xef59('0x46')];if(!_0x2e61bd['query']['hasOwnProperty'](_0xef59('0x47'))){_0x2ec6c1[_0xef59('0x2d')]=qs['limit'](_0x2e61bd['query'][_0xef59('0x2d')]);_0x2ec6c1[_0xef59('0x2f')]=qs['offset'](_0x2e61bd['query'][_0xef59('0x2f')]);}return _0x3cf51d[_0xef59('0xb8')](_0x2ec6c1);}})[_0xef59('0x1d')](function(_0x387ae5){if(_0x387ae5){return _0x387ae5?{'count':_0x44405f,'rows':_0x387ae5}:null;}})['then'](respondWithResult(_0x3a589e,null))[_0xef59('0x28')](handleError(_0x3a589e,null));};exports[_0xef59('0x3a')]=function(_0x899583,_0x3004e8,_0x5b332f){var _0x47c043,_0x1cfe18,_0x5b93d9;if(_[_0xef59('0x79')](_0x899583['body']['body'])||_0x899583['body']['body']===''){throw new db['Sequelize'][(_0xef59('0x76'))](_0xef59('0x7c'));}if(_[_0xef59('0x79')](_0x899583[_0xef59('0x59')]['to'])){}_0x47c043=_0x899583[_0xef59('0x59')]['to'];return db[_0xef59('0x4f')]['findOne']({'where':{'id':_0x899583['params']['id']}})['then'](handleEntityNotFound(_0x3004e8,null))[_0xef59('0x1d')](function(_0x3c831d){if(_0x3c831d){return db[_0xef59('0x4f')][_0xef59('0x57')]({'where':{'id':_0x3c831d['id']},'include':[{'model':db[_0xef59('0x80')],'as':_0xef59('0x81'),'include':[{'model':db[_0xef59('0x74')],'as':_0xef59('0x82'),'where':{[_0x3c831d[_0xef59('0x7d')]]:_0x47c043},'limit':0x1,'order':[[_0xef59('0x77'),_0xef59('0x83')]]}]}]})['then'](handleEntityNotFound(_0x3004e8,null))[_0xef59('0x1d')](function(_0xf42f){if(_0xf42f&&_0xf42f[_0xef59('0x81')]){_0x1cfe18=_0xf42f['get']({'plain':!![]});if(_0x1cfe18[_0xef59('0x81')]&&_0x1cfe18[_0xef59('0x81')][_0xef59('0x82')][_0xef59('0x46')]){return _0x1cfe18[_0xef59('0x81')][_0xef59('0x82')][0x0];}return db[_0xef59('0x74')][_0xef59('0x58')](_['defaults'](_0x899583['body'],{'firstName':_0x47c043,[_0xf42f[_0xef59('0x7d')]]:_0x47c043,'phone':_0x47c043,'ListId':_0x1cfe18[_0xef59('0x8a')]}));}})[_0xef59('0x1d')](handleEntityNotFound(_0x3004e8,null))['then'](function(_0x3ade84){if(_0x3ade84){_0x5b93d9=_0x3ade84;return db[_0xef59('0x8e')][_0xef59('0x57')]({'where':{'ContactId':_0x5b93d9['id'],'closed':![],'OpenchannelAccountId':_0x1cfe18['id']}})[_0xef59('0x1d')](function(_0x57be7d){if(_0x57be7d){return[_0x57be7d,![]];}return db[_0xef59('0x8e')][_0xef59('0x58')]({'UserId':_0x899583[_0xef59('0x5a')]['id'],'ContactId':_0x5b93d9['id'],'OpenchannelAccountId':_0x1cfe18['id'],'lastMsgDirection':_0xef59('0xb9'),'Messages':[_[_0xef59('0x4d')](_0x899583[_0xef59('0x59')],{'read':![],'body':_0x899583[_0xef59('0x59')][_0xef59('0x59')],'OpenchannelAccountId':_0x1cfe18['id'],'UserId':_0x899583['user']['id'],'ContactId':_0x5b93d9['id']})]},{'include':[{'model':db[_0xef59('0xba')],'as':'Messages'}]})[_0xef59('0x1d')](function(_0x481b8d){return[_0x481b8d,!![]];});});}})[_0xef59('0x90')](function(_0x1ea1f9,_0x5c098b){if(_0x5c098b){return _0x1ea1f9;}return db['OpenchannelMessage'][_0xef59('0x58')](_[_0xef59('0x4d')](_0x899583[_0xef59('0x59')],{'read':![],'body':_0x899583[_0xef59('0x59')][_0xef59('0x59')],'OpenchannelAccountId':_0x1cfe18['id'],'OpenchannelInteractionId':_0x1ea1f9['id'],'UserId':_0x899583[_0xef59('0x5a')]['id'],'ContactId':_0x5b93d9['id']}))[_0xef59('0x1d')](function(_0x16fb3b){_0x1ea1f9[_0xef59('0xbb')][_0xef59('0xbc')]=[];_0x1ea1f9['dataValues']['Messages'][_0xef59('0x96')](_0x16fb3b['dataValues']);return _0x1ea1f9;});});}})[_0xef59('0x1d')](respondWithResult(_0x3004e8,null))[_0xef59('0x28')](handleError(_0x3004e8,null));};
\ No newline at end of file
+var _0xebda=['*,*,*,*','OpenchannelMessage','AttachmentId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','spread','userOpenchannelAccount:save','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./openchannelAccount.socket','jayson/promise','client','http','request','then','info','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','catch','sendStatus','end','status','undefined','count','offset','limit','set','json','apply','reject','save','update','destroy','OpenchannelAccounts','stack','name','send','index','map','OpenchannelAccount','rawAttributes','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','Pause','mandatoryDispositionPause','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','Contacts','DESC','OpenchannelApplication','account','Applications','list','applications','orderBy','priority','asc','List','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','interaction','created','autoclose','push','close','unmanaged'];(function(_0x15af8c,_0xc8acb4){var _0x201af7=function(_0x4482a3){while(--_0x4482a3){_0x15af8c['push'](_0x15af8c['shift']());}};_0x201af7(++_0xc8acb4);}(_0xebda,0x1b3));var _0xaebd=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0xebda[_0x28d18d];return _0x470640;};'use strict';var emlformat=require(_0xaebd('0x0'));var rimraf=require(_0xaebd('0x1'));var zipdir=require(_0xaebd('0x2'));var jsonpatch=require(_0xaebd('0x3'));var rp=require('request-promise');var moment=require(_0xaebd('0x4'));var BPromise=require(_0xaebd('0x5'));var Mustache=require(_0xaebd('0x6'));var util=require(_0xaebd('0x7'));var path=require(_0xaebd('0x8'));var sox=require(_0xaebd('0x9'));var csv=require(_0xaebd('0xa'));var ejs=require(_0xaebd('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaebd('0xc'));var squel=require(_0xaebd('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xaebd('0xe'));var toCsv=require(_0xaebd('0xa'));var querystring=require(_0xaebd('0xf'));var Papa=require(_0xaebd('0x10'));var Redis=require(_0xaebd('0x11'));var authService=require(_0xaebd('0x12'));var qs=require(_0xaebd('0x13'));var as=require(_0xaebd('0x14'));var hardwareService=require(_0xaebd('0x15'));var logger=require('../../config/logger')(_0xaebd('0x16'));var utils=require(_0xaebd('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xaebd('0x18'));var db=require('../../mysqldb')['db'];config[_0xaebd('0x19')]=_[_0xaebd('0x1a')](config[_0xaebd('0x19')],{'host':_0xaebd('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xaebd('0x1c'))['register'](socket);var jayson=require(_0xaebd('0x1d'));var client=jayson[_0xaebd('0x1e')][_0xaebd('0x1f')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xded9d4,_0x173cc4,_0x59a98f,_0x1b503a){return new BPromise(function(_0x3f7c98,_0x35f148){var _0x202294=_0x1b503a||client;return _0x202294[_0xaebd('0x20')](_0xded9d4,_0x59a98f)[_0xaebd('0x21')](function(_0x54237a){logger[_0xaebd('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x173cc4,_0xaebd('0x23'));logger['debug'](_0xaebd('0x24'),_0x173cc4,_0xaebd('0x23'),JSON[_0xaebd('0x25')](_0x54237a));if(_0x54237a[_0xaebd('0x26')]){if(_0x54237a['error'][_0xaebd('0x27')]===0x1f4){logger[_0xaebd('0x26')](_0xaebd('0x28'),_0x173cc4,_0x54237a['error']['message']);return _0x35f148(_0x54237a[_0xaebd('0x26')][_0xaebd('0x29')]);}logger['error'](_0xaebd('0x28'),_0x173cc4,_0x54237a['error'][_0xaebd('0x29')]);return _0x3f7c98(_0x54237a[_0xaebd('0x26')][_0xaebd('0x29')]);}else{logger[_0xaebd('0x22')](_0xaebd('0x28'),_0x173cc4,_0xaebd('0x23'));_0x3f7c98(_0x54237a['result']['message']);}})[_0xaebd('0x2a')](function(_0xb9aeea){logger[_0xaebd('0x26')](_0xaebd('0x28'),_0x173cc4,_0xb9aeea);_0x35f148(_0xb9aeea);});});}function respondWithStatusCode(_0x21fbe5,_0x8ad3b8){_0x8ad3b8=_0x8ad3b8||0xcc;return function(_0x5e766d){if(_0x5e766d){return _0x21fbe5[_0xaebd('0x2b')](_0x8ad3b8);}return _0x21fbe5['status'](_0x8ad3b8)[_0xaebd('0x2c')]();};}function respondWithResult(_0x22ec0d,_0x201327){_0x201327=_0x201327||0xc8;return function(_0x17524f){if(_0x17524f){return _0x22ec0d[_0xaebd('0x2d')](_0x201327)['json'](_0x17524f);}};}function respondWithFilteredResult(_0x431cc3,_0x2352ef){return function(_0x3eb6bf){if(_0x3eb6bf){var _0x22e6b6=typeof _0x2352ef['offset']===_0xaebd('0x2e')&&typeof _0x2352ef['limit']===_0xaebd('0x2e');var _0x285094=_0x3eb6bf[_0xaebd('0x2f')];var _0x16ba71=_0x22e6b6?0x0:_0x2352ef[_0xaebd('0x30')];var _0x38349d=_0x22e6b6?_0x3eb6bf[_0xaebd('0x2f')]:_0x2352ef[_0xaebd('0x30')]+_0x2352ef[_0xaebd('0x31')];var _0x1939a1;if(_0x38349d>=_0x285094){_0x38349d=_0x285094;_0x1939a1=0xc8;}else{_0x1939a1=0xce;}_0x431cc3[_0xaebd('0x2d')](_0x1939a1);return _0x431cc3[_0xaebd('0x32')]('Content-Range',_0x16ba71+'-'+_0x38349d+'/'+_0x285094)[_0xaebd('0x33')](_0x3eb6bf);}return null;};}function patchUpdates(_0x151ea1){return function(_0xc865ec){try{jsonpatch[_0xaebd('0x34')](_0xc865ec,_0x151ea1,!![]);}catch(_0x372c12){return BPromise[_0xaebd('0x35')](_0x372c12);}return _0xc865ec[_0xaebd('0x36')]();};}function saveUpdates(_0x2de2fa,_0x119977){return function(_0x446d9b){if(_0x446d9b){return _0x446d9b[_0xaebd('0x37')](_0x2de2fa)[_0xaebd('0x21')](function(_0x12abc9){return _0x12abc9;});}return null;};}function removeEntity(_0x31702f,_0x1e0da1){return function(_0x563791){if(_0x563791){return _0x563791[_0xaebd('0x38')]()[_0xaebd('0x21')](function(){var _0x46a7c7=_0x563791['get']({'plain':!![]});var _0x20dd68=_0xaebd('0x39');return db['UserProfileResource'][_0xaebd('0x38')]({'where':{'type':_0x20dd68,'resourceId':_0x46a7c7['id']}})[_0xaebd('0x21')](function(){return _0x563791;});})[_0xaebd('0x21')](function(){_0x31702f[_0xaebd('0x2d')](0xcc)[_0xaebd('0x2c')]();});}};}function handleEntityNotFound(_0x40d42a,_0x275027){return function(_0x446293){if(!_0x446293){_0x40d42a['sendStatus'](0x194);}return _0x446293;};}function handleError(_0x2f7b13,_0x468797){_0x468797=_0x468797||0x1f4;return function(_0x14cf88){logger[_0xaebd('0x26')](_0x14cf88[_0xaebd('0x3a')]);if(_0x14cf88[_0xaebd('0x3b')]){delete _0x14cf88['name'];}_0x2f7b13[_0xaebd('0x2d')](_0x468797)[_0xaebd('0x3c')](_0x14cf88);};}exports[_0xaebd('0x3d')]=function(_0x11ef20,_0xe0715c){var _0x1415d5={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x3b45d9={},_0x1918db={'count':0x0,'rows':[]};var _0x34b6b4=_[_0xaebd('0x3e')](db[_0xaebd('0x3f')][_0xaebd('0x40')],function(_0x3a5bf8){return{'name':_0x3a5bf8['fieldName'],'type':_0x3a5bf8[_0xaebd('0x41')][_0xaebd('0x42')]};});_0x3b45d9[_0xaebd('0x43')]=_[_0xaebd('0x3e')](_0x34b6b4,_0xaebd('0x3b'));_0x3b45d9['query']=_[_0xaebd('0x44')](_0x11ef20[_0xaebd('0x45')]);_0x3b45d9['filters']=_[_0xaebd('0x46')](_0x3b45d9[_0xaebd('0x43')],_0x3b45d9[_0xaebd('0x45')]);_0x1415d5[_0xaebd('0x47')]=_[_0xaebd('0x46')](_0x3b45d9[_0xaebd('0x43')],qs[_0xaebd('0x48')](_0x11ef20[_0xaebd('0x45')]['fields']));_0x1415d5[_0xaebd('0x47')]=_0x1415d5[_0xaebd('0x47')][_0xaebd('0x49')]?_0x1415d5[_0xaebd('0x47')]:_0x3b45d9['model'];if(!_0x11ef20[_0xaebd('0x45')][_0xaebd('0x4a')](_0xaebd('0x4b'))){_0x1415d5['limit']=qs[_0xaebd('0x31')](_0x11ef20[_0xaebd('0x45')][_0xaebd('0x31')]);_0x1415d5[_0xaebd('0x30')]=qs[_0xaebd('0x30')](_0x11ef20[_0xaebd('0x45')][_0xaebd('0x30')]);}_0x1415d5[_0xaebd('0x4c')]=qs[_0xaebd('0x4d')](_0x11ef20[_0xaebd('0x45')][_0xaebd('0x4d')]);_0x1415d5[_0xaebd('0x4e')]=qs[_0xaebd('0x4f')](_[_0xaebd('0x50')](_0x11ef20['query'],_0x3b45d9[_0xaebd('0x4f')]),_0x34b6b4);if(_0x11ef20['query'][_0xaebd('0x51')]){_0x1415d5[_0xaebd('0x4e')]=_[_0xaebd('0x52')](_0x1415d5['where'],{'$or':_['map'](_0x34b6b4,function(_0x5e4ee9){if(_0x5e4ee9['type']!==_0xaebd('0x53')){var _0x461fcd={};_0x461fcd[_0x5e4ee9[_0xaebd('0x3b')]]={'$like':'%'+_0x11ef20['query'][_0xaebd('0x51')]+'%'};return _0x461fcd;}})});}_0x1415d5=_[_0xaebd('0x52')]({},_0x1415d5,_0x11ef20[_0xaebd('0x54')]);var _0x4ad757={'where':_0x1415d5[_0xaebd('0x4e')]};return db['OpenchannelAccount'][_0xaebd('0x2f')](_0x4ad757)[_0xaebd('0x21')](function(_0x19361e){_0x1918db[_0xaebd('0x2f')]=_0x19361e;if(_0x11ef20[_0xaebd('0x45')][_0xaebd('0x55')]){_0x1415d5['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0xaebd('0x56')](_0x1415d5);})[_0xaebd('0x21')](function(_0x32a049){_0x1918db[_0xaebd('0x57')]=_0x32a049;return _0x1918db;})[_0xaebd('0x21')](respondWithFilteredResult(_0xe0715c,_0x1415d5))['catch'](handleError(_0xe0715c,null));};exports[_0xaebd('0x58')]=function(_0x4b4440,_0xa55119){var _0x5b15ce={'raw':![],'where':{'id':_0x4b4440['params']['id']},'include':[{'model':db[_0xaebd('0x59')],'as':_0xaebd('0x5a')}]},_0x303776={};_0x303776[_0xaebd('0x43')]=_[_0xaebd('0x44')](db['OpenchannelAccount'][_0xaebd('0x40')]);_0x303776[_0xaebd('0x45')]=_['keys'](_0x4b4440['query']);_0x303776[_0xaebd('0x4f')]=_['intersection'](_0x303776[_0xaebd('0x43')],_0x303776[_0xaebd('0x45')]);_0x5b15ce[_0xaebd('0x47')]=_[_0xaebd('0x46')](_0x303776['model'],qs[_0xaebd('0x48')](_0x4b4440[_0xaebd('0x45')][_0xaebd('0x48')]));_0x5b15ce[_0xaebd('0x47')]=_0x5b15ce[_0xaebd('0x47')][_0xaebd('0x49')]?_0x5b15ce['attributes']:_0x303776[_0xaebd('0x43')];if(_0x4b4440['query'][_0xaebd('0x55')]){_0x5b15ce[_0xaebd('0x5b')]=[{'all':!![]}];}_0x5b15ce=_[_0xaebd('0x52')]({},_0x5b15ce,_0x4b4440[_0xaebd('0x54')]);return db['OpenchannelAccount'][_0xaebd('0x5c')](_0x5b15ce)[_0xaebd('0x21')](handleEntityNotFound(_0xa55119,null))[_0xaebd('0x21')](respondWithResult(_0xa55119,null))[_0xaebd('0x2a')](handleError(_0xa55119,null));};exports['create']=function(_0x3aa4c1,_0x4dd1c4){return db['OpenchannelAccount'][_0xaebd('0x5d')](_0x3aa4c1[_0xaebd('0x5e')],{})[_0xaebd('0x21')](function(_0x525964){var _0x2ee52a=_0x3aa4c1[_0xaebd('0x5f')][_0xaebd('0x60')]({'plain':!![]});if(!_0x2ee52a)throw new Error(_0xaebd('0x61'));if(_0x2ee52a[_0xaebd('0x62')]===_0xaebd('0x5f')){var _0x33db99=_0x525964[_0xaebd('0x60')]({'plain':!![]});var _0x33af47=_0xaebd('0x39');return db[_0xaebd('0x63')][_0xaebd('0x5c')]({'where':{'name':_0x33af47,'userProfileId':_0x2ee52a[_0xaebd('0x64')]},'raw':!![]})[_0xaebd('0x21')](function(_0x534dd8){if(_0x534dd8&&_0x534dd8[_0xaebd('0x65')]===0x0){return db[_0xaebd('0x66')][_0xaebd('0x5d')]({'name':_0x33db99[_0xaebd('0x3b')],'resourceId':_0x33db99['id'],'type':_0x534dd8[_0xaebd('0x3b')],'sectionId':_0x534dd8['id']},{})[_0xaebd('0x21')](function(){return _0x525964;});}else{return _0x525964;}})[_0xaebd('0x2a')](function(_0x4debe9){logger['error'](_0xaebd('0x67'),_0x4debe9);throw _0x4debe9;});}return _0x525964;})[_0xaebd('0x21')](respondWithResult(_0x4dd1c4,0xc9))[_0xaebd('0x2a')](handleError(_0x4dd1c4,null));};exports[_0xaebd('0x37')]=function(_0x535b11,_0x154f6e){if(_0x535b11['body']['id']){delete _0x535b11[_0xaebd('0x5e')]['id'];}return db['OpenchannelAccount'][_0xaebd('0x5c')]({'where':{'id':_0x535b11[_0xaebd('0x68')]['id']},'include':[{'model':db[_0xaebd('0x59')],'as':_0xaebd('0x5a')}]})[_0xaebd('0x21')](handleEntityNotFound(_0x154f6e,null))[_0xaebd('0x21')](saveUpdates(_0x535b11['body'],null))['then'](respondWithResult(_0x154f6e,null))[_0xaebd('0x2a')](handleError(_0x154f6e,null));};exports[_0xaebd('0x38')]=function(_0x3541aa,_0x1cd813){return db[_0xaebd('0x3f')]['find']({'where':{'id':_0x3541aa[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x1cd813,null))[_0xaebd('0x21')](removeEntity(_0x1cd813,null))[_0xaebd('0x2a')](handleError(_0x1cd813,null));};exports['describe']=function(_0x5e4013,_0x5ab0cd){return db[_0xaebd('0x3f')][_0xaebd('0x69')]()[_0xaebd('0x21')](respondWithResult(_0x5ab0cd,null))['catch'](handleError(_0x5ab0cd,null));};exports[_0xaebd('0x6a')]=function(_0x95f62,_0x55d00c,_0x33ddcc){if(_0x95f62[_0xaebd('0x5e')]['id']){delete _0x95f62[_0xaebd('0x5e')]['id'];}return db[_0xaebd('0x3f')]['find']({'where':{'id':_0x95f62[_0xaebd('0x68')]['id']}})['then'](handleEntityNotFound(_0x55d00c,null))['then'](function(_0x388e82){if(_0x388e82){_0x95f62[_0xaebd('0x5e')][_0xaebd('0x6b')]=_0x388e82['id'];return db[_0xaebd('0x6c')][_0xaebd('0x5d')](_0x95f62[_0xaebd('0x5e')]);}})[_0xaebd('0x21')](respondWithResult(_0x55d00c,null))['catch'](handleError(_0x55d00c,null));};exports[_0xaebd('0x6d')]=function(_0xfe847a,_0x1c170e,_0x4a0e44){var _0x2c6d70={'raw':![],'where':{}};var _0x1b0216={};var _0x48cac2={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xaebd('0x6e')]({'where':{'id':_0xfe847a[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x1c170e,null))[_0xaebd('0x21')](function(_0x7a2ddd){if(_0x7a2ddd){_0x1b0216[_0xaebd('0x43')]=_[_0xaebd('0x44')](db[_0xaebd('0x6c')][_0xaebd('0x40')]);_0x1b0216[_0xaebd('0x45')]=_[_0xaebd('0x44')](_0xfe847a[_0xaebd('0x45')]);_0x1b0216['filters']=_[_0xaebd('0x46')](_0x1b0216[_0xaebd('0x43')],_0x1b0216[_0xaebd('0x45')]);_0x2c6d70[_0xaebd('0x47')]=_[_0xaebd('0x46')](_0x1b0216[_0xaebd('0x43')],qs['fields'](_0xfe847a[_0xaebd('0x45')]['fields']));_0x2c6d70[_0xaebd('0x47')]=_0x2c6d70[_0xaebd('0x47')][_0xaebd('0x49')]?_0x2c6d70[_0xaebd('0x47')]:_0x1b0216['model'];if(!_0xfe847a[_0xaebd('0x45')][_0xaebd('0x4a')](_0xaebd('0x4b'))){_0x2c6d70[_0xaebd('0x31')]=qs['limit'](_0xfe847a['query'][_0xaebd('0x31')]);_0x2c6d70[_0xaebd('0x30')]=qs['offset'](_0xfe847a['query'][_0xaebd('0x30')]);}_0x2c6d70[_0xaebd('0x4c')]=qs[_0xaebd('0x4d')](_0xfe847a[_0xaebd('0x45')][_0xaebd('0x4d')]);_0x2c6d70[_0xaebd('0x4e')]=qs['filters'](_['pick'](_0xfe847a[_0xaebd('0x45')],_0x1b0216['filters']));_0x2c6d70[_0xaebd('0x4e')][_0xaebd('0x6b')]=_0x7a2ddd['id'];if(_0xfe847a[_0xaebd('0x45')]['filter']){_0x2c6d70[_0xaebd('0x4e')]=_[_0xaebd('0x52')](_0x2c6d70[_0xaebd('0x4e')],{'$or':_[_0xaebd('0x3e')](_0x2c6d70[_0xaebd('0x47')],function(_0xac825f){var _0x3bf4b6={};_0x3bf4b6[_0xac825f]={'$like':'%'+_0xfe847a[_0xaebd('0x45')][_0xaebd('0x51')]+'%'};return _0x3bf4b6;})});}_0x2c6d70=_['merge']({},_0x2c6d70,_0xfe847a[_0xaebd('0x54')]);return db['Disposition'][_0xaebd('0x2f')]({'where':_0x2c6d70['where']})[_0xaebd('0x21')](function(_0x39e579){_0x48cac2[_0xaebd('0x2f')]=_0x39e579;if(_0xfe847a['query']['includeAll']){_0x2c6d70[_0xaebd('0x5b')]=[{'all':!![]}];}return db[_0xaebd('0x6c')][_0xaebd('0x56')](_0x2c6d70);})[_0xaebd('0x21')](function(_0x51d071){_0x48cac2[_0xaebd('0x57')]=_0x51d071;return _0x48cac2;});}})[_0xaebd('0x21')](respondWithFilteredResult(_0x1c170e,_0x2c6d70))[_0xaebd('0x2a')](handleError(_0x1c170e,null));};exports[_0xaebd('0x6f')]=function(_0x32feda,_0x52d209,_0x2a7f89){return db[_0xaebd('0x3f')][_0xaebd('0x5c')]({'where':{'id':_0x32feda[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x52d209,null))[_0xaebd('0x21')](function(_0x568042){if(_0x568042){return _0x568042[_0xaebd('0x6f')](_0x32feda[_0xaebd('0x45')][_0xaebd('0x70')]);}})['then'](respondWithStatusCode(_0x52d209,null))[_0xaebd('0x2a')](handleError(_0x52d209,null));};exports[_0xaebd('0x71')]=function(_0x1b4af3,_0x529e48,_0x99ec28){if(_0x1b4af3[_0xaebd('0x5e')]['id']){delete _0x1b4af3[_0xaebd('0x5e')]['id'];}return db['OpenchannelAccount'][_0xaebd('0x5c')]({'where':{'id':_0x1b4af3['params']['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x529e48,null))[_0xaebd('0x21')](function(_0x23620b){if(_0x23620b){_0x1b4af3[_0xaebd('0x5e')][_0xaebd('0x6b')]=_0x23620b['id'];return db['CannedAnswer'][_0xaebd('0x5d')](_0x1b4af3[_0xaebd('0x5e')]);}})[_0xaebd('0x21')](respondWithResult(_0x529e48,null))[_0xaebd('0x2a')](handleError(_0x529e48,null));};exports[_0xaebd('0x72')]=function(_0x4a4719,_0x3c9676,_0x13da28){var _0x5eea1f={'raw':![],'where':{}};var _0x42d151={};var _0x5e93a1={'count':0x0,'rows':[]};return db[_0xaebd('0x3f')][_0xaebd('0x6e')]({'where':{'id':_0x4a4719[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x3c9676,null))['then'](function(_0x37f184){if(_0x37f184){_0x42d151[_0xaebd('0x43')]=_[_0xaebd('0x44')](db[_0xaebd('0x73')][_0xaebd('0x40')]);_0x42d151['query']=_[_0xaebd('0x44')](_0x4a4719[_0xaebd('0x45')]);_0x42d151['filters']=_[_0xaebd('0x46')](_0x42d151[_0xaebd('0x43')],_0x42d151['query']);_0x5eea1f[_0xaebd('0x47')]=_['intersection'](_0x42d151[_0xaebd('0x43')],qs[_0xaebd('0x48')](_0x4a4719['query'][_0xaebd('0x48')]));_0x5eea1f[_0xaebd('0x47')]=_0x5eea1f[_0xaebd('0x47')][_0xaebd('0x49')]?_0x5eea1f['attributes']:_0x42d151[_0xaebd('0x43')];if(!_0x4a4719[_0xaebd('0x45')]['hasOwnProperty'](_0xaebd('0x4b'))){_0x5eea1f[_0xaebd('0x31')]=qs[_0xaebd('0x31')](_0x4a4719[_0xaebd('0x45')][_0xaebd('0x31')]);_0x5eea1f['offset']=qs['offset'](_0x4a4719[_0xaebd('0x45')][_0xaebd('0x30')]);}_0x5eea1f[_0xaebd('0x4c')]=qs[_0xaebd('0x4d')](_0x4a4719[_0xaebd('0x45')]['sort']);_0x5eea1f[_0xaebd('0x4e')]=qs[_0xaebd('0x4f')](_['pick'](_0x4a4719[_0xaebd('0x45')],_0x42d151[_0xaebd('0x4f')]));_0x5eea1f[_0xaebd('0x4e')][_0xaebd('0x6b')]=_0x37f184['id'];if(_0x4a4719[_0xaebd('0x45')]['filter']){_0x5eea1f['where']=_[_0xaebd('0x52')](_0x5eea1f[_0xaebd('0x4e')],{'$or':_[_0xaebd('0x3e')](_0x5eea1f[_0xaebd('0x47')],function(_0x4d9004){var _0x4af6a4={};_0x4af6a4[_0x4d9004]={'$like':'%'+_0x4a4719[_0xaebd('0x45')][_0xaebd('0x51')]+'%'};return _0x4af6a4;})});}_0x5eea1f=_[_0xaebd('0x52')]({},_0x5eea1f,_0x4a4719[_0xaebd('0x54')]);return db[_0xaebd('0x73')]['count']({'where':_0x5eea1f[_0xaebd('0x4e')]})[_0xaebd('0x21')](function(_0x46cf5a){_0x5e93a1['count']=_0x46cf5a;if(_0x4a4719[_0xaebd('0x45')][_0xaebd('0x55')]){_0x5eea1f[_0xaebd('0x5b')]=[{'all':!![]}];}return db[_0xaebd('0x73')][_0xaebd('0x56')](_0x5eea1f);})['then'](function(_0x326356){_0x5e93a1[_0xaebd('0x57')]=_0x326356;return _0x5e93a1;});}})['then'](respondWithFilteredResult(_0x3c9676,_0x5eea1f))[_0xaebd('0x2a')](handleError(_0x3c9676,null));};exports[_0xaebd('0x74')]=function(_0x122253,_0x1711ba,_0x3d70a6){return db[_0xaebd('0x3f')][_0xaebd('0x5c')]({'where':{'id':_0x122253[_0xaebd('0x68')]['id']}})['then'](handleEntityNotFound(_0x1711ba,null))[_0xaebd('0x21')](function(_0x7c3624){if(_0x7c3624){return _0x7c3624[_0xaebd('0x74')](_0x122253[_0xaebd('0x45')][_0xaebd('0x70')]);}})['then'](respondWithStatusCode(_0x1711ba,null))['catch'](handleError(_0x1711ba,null));};exports[_0xaebd('0x75')]=function(_0x2b2d79,_0x242719,_0x3d9bc9){var _0x364eb5={'body':_0x2b2d79[_0xaebd('0x5e')],'channel':_0xaebd('0x76')};var _0x4a2db6=[];var _0xf15b6e=[];var _0x4ace90={};var _0x250912=![];return db[_0xaebd('0x77')]['describe']()[_0xaebd('0x21')](function(_0x1c0084){if(!_0x1c0084){throw new db[(_0xaebd('0x78'))][(_0xaebd('0x79'))](_0xaebd('0x7a'));}_0x4a2db6=_[_0xaebd('0x7b')](_['keys'](_0x1c0084),[_0xaebd('0x7c'),_0xaebd('0x7d')]);_0xf15b6e=_[_0xaebd('0x7b')](_[_0xaebd('0x44')](_0x1c0084),[_0xaebd('0x7c'),_0xaebd('0x7d'),_0xaebd('0x7e'),_0xaebd('0x7f')]);if(_0x2b2d79[_0xaebd('0x5e')]['id']){delete _0x2b2d79[_0xaebd('0x5e')]['id'];}if(_['isNil'](_0x2b2d79[_0xaebd('0x5e')]['from'])){throw new db['Sequelize'][(_0xaebd('0x79'))](_0xaebd('0x80'));}if(_['isNil'](_0x2b2d79[_0xaebd('0x5e')]['body'])||_0x2b2d79[_0xaebd('0x5e')]['body']===''){throw new db[(_0xaebd('0x78'))]['ValidationError'](_0xaebd('0x81'));}if(_[_0xaebd('0x82')](_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x83')])){throw new db[(_0xaebd('0x78'))][(_0xaebd('0x79'))](_0xaebd('0x84')+_0xf15b6e);}if(!_['includes'](_0xf15b6e,_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x83')])){throw new db[(_0xaebd('0x78'))][(_0xaebd('0x79'))](_0xaebd('0x85')+_0xf15b6e);}_0x4ace90[_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x83')]]=_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x86')];})[_0xaebd('0x21')](function(){return db[_0xaebd('0x3f')][_0xaebd('0x5c')]({'where':{'id':_0x2b2d79['params']['id']},'include':[{'model':db[_0xaebd('0x87')],'as':'List','include':[{'model':db[_0xaebd('0x77')],'as':_0xaebd('0x88'),'where':_0x4ace90,'limit':0x1,'order':[[_0xaebd('0x7d'),_0xaebd('0x89')]]}]},{'model':db[_0xaebd('0x8a')],'as':'Applications'}]});})[_0xaebd('0x21')](handleEntityNotFound(_0x242719,null))[_0xaebd('0x21')](function(_0x55872b){if(_0x55872b&&_0x55872b['List']){_0x364eb5[_0xaebd('0x8b')]=_0x55872b;_0x364eb5['applications']=_0x55872b[_0xaebd('0x8c')];_0x364eb5[_0xaebd('0x8d')]=_0x55872b['List'];_0x364eb5[_0xaebd('0x8e')]=_[_0xaebd('0x8f')](_0x364eb5[_0xaebd('0x8e')],[_0xaebd('0x90')],[_0xaebd('0x91')]);if(_0x364eb5[_0xaebd('0x8b')][_0xaebd('0x8c')]){delete _0x364eb5['account']['Applications'];}if(_0x364eb5['account']['List']&&_0x364eb5[_0xaebd('0x8b')][_0xaebd('0x92')][_0xaebd('0x88')][_0xaebd('0x49')]){return _0x364eb5['account'][_0xaebd('0x92')][_0xaebd('0x88')][0x0];}var _0x2ae21a=_[_0xaebd('0x1a')](_0x2b2d79[_0xaebd('0x5e')],{'firstName':_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x86')],'ListId':_0x55872b[_0xaebd('0x7f')]});_0x2ae21a[_0x2b2d79[_0xaebd('0x5e')]['mapKey']]=_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x86')];return db[_0xaebd('0x77')][_0xaebd('0x5d')](_0x2ae21a,{'fields':_0x4a2db6,'raw':!![]});}})[_0xaebd('0x21')](handleEntityNotFound(_0x242719,null))[_0xaebd('0x21')](function(_0x560a37){_0x364eb5[_0xaebd('0x93')]=_0x560a37;if(_0x560a37){var _0x11841f={'ContactId':_0x560a37['id'],'OpenchannelAccountId':_0x2b2d79[_0xaebd('0x68')]['id'],'from':(_0x560a37[_0xaebd('0x94')]||'')+'\x20'+(_0x560a37[_0xaebd('0x95')]||'')};var _0x535c9d={'OpenchannelAccountId':_0x2b2d79[_0xaebd('0x68')]['id'],'closed':![]};if(_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x96')]){_0x535c9d[_0xaebd('0x96')]=_0x2b2d79[_0xaebd('0x5e')]['threadId'];return db[_0xaebd('0x97')][_0xaebd('0x5c')]({'where':_0x535c9d})[_0xaebd('0x21')](function(_0x5bb933){if(_0x5bb933){return[_0x5bb933,![]];}_0x11841f['threadId']=_0x2b2d79['body'][_0xaebd('0x96')];_0x11841f[_0xaebd('0x98')]=_0x2b2d79[_0xaebd('0x5e')]['externalUrl'];return db[_0xaebd('0x97')]['create'](_0x11841f)[_0xaebd('0x21')](function(_0x3e809e){return[_0x3e809e,!![]];});});}else{_0x535c9d[_0xaebd('0x96')]=null;}_0x535c9d['ContactId']=_0x560a37['id'];return db[_0xaebd('0x97')][_0xaebd('0x5c')]({'where':_0x535c9d})[_0xaebd('0x21')](function(_0x2903c1){if(_0x2903c1){return[_0x2903c1,![]];}return db[_0xaebd('0x97')]['create'](_0x11841f)[_0xaebd('0x21')](function(_0x22d846){return[_0x22d846,!![]];});});}})['spread'](function(_0x2dbe9a,_0x6a13c7){if(_0x2dbe9a){_0x250912=_0x6a13c7;if(!_0x6a13c7){var _0x3fa969={'from':(_0x364eb5['contact'][_0xaebd('0x94')]||'')+'\x20'+(_0x364eb5[_0xaebd('0x93')][_0xaebd('0x95')]||'')};if(_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x96')]&&_0x2b2d79[_0xaebd('0x5e')]['messageId']&&_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0x96')]!=_0x2b2d79[_0xaebd('0x5e')]['messageId']){_0x3fa969[_0xaebd('0x96')]=_0x2b2d79[_0xaebd('0x5e')]['messageId'];}return _0x2dbe9a[_0xaebd('0x37')](_0x3fa969);}else{return _0x2dbe9a;}}})['then'](function(_0x5cb2a5){_0x364eb5[_0xaebd('0x99')]=_0x5cb2a5[_0xaebd('0x60')]({'plain':!![]});_0x364eb5[_0xaebd('0x99')][_0xaebd('0x9a')]=_0x250912;if(_0x364eb5['interaction'][_0xaebd('0x9a')]){if(_0x364eb5[_0xaebd('0x8b')][_0xaebd('0x9b')]){_0x364eb5[_0xaebd('0x8e')][_0xaebd('0x9c')]({'id':0x0,'priority':_0x364eb5[_0xaebd('0x8e')][_0xaebd('0x49')]+0x1,'app':_0xaebd('0x9d'),'appdata':_0xaebd('0x9e'),'interval':_0xaebd('0x9f')});}}return db[_0xaebd('0xa0')][_0xaebd('0x5d')]({'body':_0x2b2d79[_0xaebd('0x5e')]['body'],'OpenchannelAccountId':_0x2b2d79['params']['id'],'OpenchannelInteractionId':_0x5cb2a5['id'],'direction':'in','ContactId':_0x364eb5[_0xaebd('0x93')]['id'],'AttachmentId':_0x2b2d79[_0xaebd('0x5e')][_0xaebd('0xa1')]});})[_0xaebd('0x21')](function(_0x957d89){_0x364eb5[_0xaebd('0x29')]=_0x957d89;if(_0x364eb5['interaction']['UserId']){return db['User'][_0xaebd('0x5c')]({'attributes':['id',_0xaebd('0x3b')],'where':{'id':_0x364eb5['interaction']['UserId']}})['then'](function(_0x5ea8c7){if(_0x5ea8c7){_0x364eb5[_0xaebd('0x8e')][_0xaebd('0xa2')]({'id':0x0,'priority':0x0,'app':_0xaebd('0xa3'),'appdata':_0x5ea8c7[_0xaebd('0x3b')]+','+(_0x364eb5['account'][_0xaebd('0xa4')]||0xa),'interval':_0xaebd('0x9f')});_0x364eb5[_0xaebd('0xa5')]=![];}return respondWithRpcPromise(_0xaebd('0xa6'),_0xaebd('0xa7'),_0x364eb5);});}return respondWithRpcPromise('Start','startRouting',_0x364eb5);})[_0xaebd('0x21')](function(_0x18a2fe){respondWithRpcPromise(_0xaebd('0xa8'),_0xaebd('0xa8'),{'event':'notify','message':_0x18a2fe},client9002);return _0x18a2fe;})[_0xaebd('0x21')](respondWithResult(_0x242719,null))[_0xaebd('0x2a')](handleError(_0x242719,null));};exports['addApplications']=function(_0x614769,_0x43cf63){var _0x4d29fb=_0x614769[_0xaebd('0x68')]['id'];var _0x462391=_0x614769[_0xaebd('0x5e')];var _0x2ca0d2=0xc8;var _0x432df9=null;return db[_0xaebd('0xa9')]['transaction']({'isolationLevel':db[_0xaebd('0xa9')][_0xaebd('0xaa')][_0xaebd('0xab')][_0xaebd('0xac')]},function(_0x1260f7){return db[_0xaebd('0x3f')][_0xaebd('0x6e')]({'where':{'id':_0x4d29fb},'transaction':_0x1260f7})[_0xaebd('0x21')](function(_0x1a8e73){if(_0x1a8e73){return db[_0xaebd('0x8a')]['destroy']({'where':{'OpenchannelAccountId':_0x4d29fb},'transaction':_0x1260f7})[_0xaebd('0x21')](function(){var _0x4bb337=_['map'](_0x462391,function(_0x56a227){_0x56a227['OpenchannelAccountId']=_0x4d29fb;return _0x56a227;});return db['OpenchannelApplication'][_0xaebd('0xad')](_0x4bb337,{'transaction':_0x1260f7});});}else{_0x2ca0d2=0x194;_0x432df9=[];}});})['then'](function(){if(_0x2ca0d2!==0x194){return db['OpenchannelApplication'][_0xaebd('0xae')]({'where':{'OpenchannelAccountId':_0x4d29fb},'order':_0xaebd('0x90')})[_0xaebd('0x21')](function(_0x58db63){_0x432df9=_0x58db63;});}})[_0xaebd('0x2a')](function(_0x819019){_0x2ca0d2=0x1f4;logger[_0xaebd('0x26')](_0x819019[_0xaebd('0x3a')]);if(_0x819019[_0xaebd('0x3b')]){delete _0x819019['name'];}_0x432df9=_0x819019;})['finally'](function(){if(_0x432df9===null){_0x43cf63[_0xaebd('0x2b')](_0x2ca0d2);}else{if(_0x2ca0d2===0x1f4){_0x43cf63[_0xaebd('0x2d')](_0x2ca0d2)[_0xaebd('0x3c')](_0x432df9);}else{_0x43cf63['status'](_0x2ca0d2)[_0xaebd('0x33')](_0x432df9);}}});};exports[_0xaebd('0xaf')]=function(_0x27797d,_0x3272ac,_0x292da8){var _0x251719={};var _0x255378={};var _0x205380;var _0xa68c8f;return db[_0xaebd('0x3f')][_0xaebd('0x6e')]({'where':{'id':_0x27797d[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x3272ac,null))[_0xaebd('0x21')](function(_0x1ed33f){if(_0x1ed33f){_0x205380=_0x1ed33f;_0x255378[_0xaebd('0x43')]=_['keys'](db['OpenchannelApplication']['rawAttributes']);_0x255378[_0xaebd('0x45')]=_[_0xaebd('0x44')](_0x27797d[_0xaebd('0x45')]);_0x255378[_0xaebd('0x4f')]=_[_0xaebd('0x46')](_0x255378[_0xaebd('0x43')],_0x255378[_0xaebd('0x45')]);_0x251719[_0xaebd('0x47')]=_[_0xaebd('0x46')](_0x255378[_0xaebd('0x43')],qs[_0xaebd('0x48')](_0x27797d[_0xaebd('0x45')][_0xaebd('0x48')]));_0x251719[_0xaebd('0x47')]=_0x251719[_0xaebd('0x47')][_0xaebd('0x49')]?_0x251719[_0xaebd('0x47')]:_0x255378[_0xaebd('0x43')];_0x251719[_0xaebd('0x4c')]=qs[_0xaebd('0x4d')](_0x27797d['query'][_0xaebd('0x4d')]);_0x251719[_0xaebd('0x4e')]=qs[_0xaebd('0x4f')](_[_0xaebd('0x50')](_0x27797d[_0xaebd('0x45')],_0x255378['filters']));if(_0x27797d['query'][_0xaebd('0x51')]){_0x251719[_0xaebd('0x4e')]=_[_0xaebd('0x52')](_0x251719[_0xaebd('0x4e')],{'$or':_[_0xaebd('0x3e')](_0x251719[_0xaebd('0x47')],function(_0x384f25){var _0x40dab5={};_0x40dab5[_0x384f25]={'$like':'%'+_0x27797d['query'][_0xaebd('0x51')]+'%'};return _0x40dab5;})});}_0x251719=_[_0xaebd('0x52')]({},_0x251719,_0x27797d[_0xaebd('0x54')]);return _0x205380['getApplications'](_0x251719);}})[_0xaebd('0x21')](function(_0x4ace51){if(_0x4ace51){_0xa68c8f=_0x4ace51[_0xaebd('0x49')];if(!_0x27797d[_0xaebd('0x45')]['hasOwnProperty']('nolimit')){_0x251719[_0xaebd('0x31')]=qs[_0xaebd('0x31')](_0x27797d[_0xaebd('0x45')][_0xaebd('0x31')]);_0x251719[_0xaebd('0x30')]=qs['offset'](_0x27797d[_0xaebd('0x45')]['offset']);}return _0x205380[_0xaebd('0xaf')](_0x251719);}})['then'](function(_0x4e6ff4){if(_0x4e6ff4){return _0x4e6ff4?{'count':_0xa68c8f,'rows':_0x4e6ff4}:null;}})[_0xaebd('0x21')](respondWithResult(_0x3272ac,null))[_0xaebd('0x2a')](handleError(_0x3272ac,null));};exports[_0xaebd('0xb0')]=function(_0x15ddc6,_0x314e84,_0xc4453e){var _0x4d31b9={'raw':![],'where':{}};var _0x18b065={};var _0x18aceb={'count':0x0,'rows':[]};return db[_0xaebd('0x3f')]['findOne']({'where':{'id':_0x15ddc6[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x314e84,null))[_0xaebd('0x21')](function(_0x731e03){if(_0x731e03){_0x18b065[_0xaebd('0x43')]=_[_0xaebd('0x44')](db[_0xaebd('0x97')][_0xaebd('0x40')]);_0x18b065['query']=_[_0xaebd('0x44')](_0x15ddc6[_0xaebd('0x45')]);_0x18b065[_0xaebd('0x4f')]=_[_0xaebd('0x46')](_0x18b065[_0xaebd('0x43')],_0x18b065[_0xaebd('0x45')]);_0x4d31b9[_0xaebd('0x47')]=_['intersection'](_0x18b065[_0xaebd('0x43')],qs[_0xaebd('0x48')](_0x15ddc6[_0xaebd('0x45')][_0xaebd('0x48')]));_0x4d31b9[_0xaebd('0x47')]=_0x4d31b9['attributes'][_0xaebd('0x49')]?_0x4d31b9[_0xaebd('0x47')]:_0x18b065[_0xaebd('0x43')];if(!_0x15ddc6['query']['hasOwnProperty'](_0xaebd('0x4b'))){_0x4d31b9[_0xaebd('0x31')]=qs[_0xaebd('0x31')](_0x15ddc6['query']['limit']);_0x4d31b9[_0xaebd('0x30')]=qs[_0xaebd('0x30')](_0x15ddc6['query'][_0xaebd('0x30')]);}_0x4d31b9[_0xaebd('0x4c')]=qs[_0xaebd('0x4d')](_0x15ddc6[_0xaebd('0x45')][_0xaebd('0x4d')]);_0x4d31b9[_0xaebd('0x4e')]=qs['filters'](_[_0xaebd('0x50')](_0x15ddc6['query'],_0x18b065[_0xaebd('0x4f')]));_0x4d31b9['where'][_0xaebd('0x6b')]=_0x731e03['id'];if(_0x15ddc6['query'][_0xaebd('0x51')]){_0x4d31b9['where']=_[_0xaebd('0x52')](_0x4d31b9['where'],{'$or':_[_0xaebd('0x3e')](_0x4d31b9[_0xaebd('0x47')],function(_0x113789){var _0x526ad5={};_0x526ad5[_0x113789]={'$like':'%'+_0x15ddc6[_0xaebd('0x45')][_0xaebd('0x51')]+'%'};return _0x526ad5;})});}_0x4d31b9=_[_0xaebd('0x52')]({},_0x4d31b9,_0x15ddc6[_0xaebd('0x54')]);return db[_0xaebd('0x97')][_0xaebd('0x2f')]({'where':_0x4d31b9[_0xaebd('0x4e')]})[_0xaebd('0x21')](function(_0x242cfe){_0x18aceb[_0xaebd('0x2f')]=_0x242cfe;if(_0x15ddc6[_0xaebd('0x45')][_0xaebd('0x55')]){_0x4d31b9[_0xaebd('0x5b')]=[{'model':db[_0xaebd('0x77')],'as':_0xaebd('0xb1'),'required':![]},{'model':db[_0xaebd('0xb2')],'as':_0xaebd('0xb3'),'attributes':[_0xaebd('0x3b'),_0xaebd('0xb4'),_0xaebd('0xb5')],'required':![]},{'model':db[_0xaebd('0xb6')],'as':_0xaebd('0xb7'),'attributes':['id',_0xaebd('0x3b'),_0xaebd('0xb8')],'where':_0x15ddc6[_0xaebd('0x45')]['tag']?{'id':_0x15ddc6[_0xaebd('0x45')][_0xaebd('0xb9')]}:undefined,'required':_0x15ddc6[_0xaebd('0x45')][_0xaebd('0xb9')]?!![]:![]}];}return db[_0xaebd('0x97')][_0xaebd('0x56')](_0x4d31b9);})[_0xaebd('0x21')](function(_0x4f2ddb){_0x18aceb[_0xaebd('0x57')]=_0x4f2ddb;return _0x18aceb;});}})['then'](respondWithFilteredResult(_0x314e84,_0x4d31b9))[_0xaebd('0x2a')](handleError(_0x314e84,null));};exports[_0xaebd('0xba')]=function(_0x2a3356,_0x1dacfb,_0x28d421){return db['OpenchannelAccount']['find']({'where':{'id':_0x2a3356[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x1dacfb,null))['then'](function(_0x3c5e54){if(_0x3c5e54){return _0x3c5e54[_0xaebd('0xba')](_0x2a3356[_0xaebd('0x5e')][_0xaebd('0x70')],_[_0xaebd('0xbb')](_0x2a3356[_0xaebd('0x5e')],[_0xaebd('0x70'),'id'])||{})[_0xaebd('0xbc')](function(_0x233051){for(var _0x1ab7ca=0x0;_0x1ab7ca<_0x2a3356[_0xaebd('0x5e')][_0xaebd('0x70')][_0xaebd('0x49')];_0x1ab7ca+=0x1){socket['emit'](_0xaebd('0xbd'),{'UserId':Number(_0x2a3356[_0xaebd('0x5e')][_0xaebd('0x70')][_0x1ab7ca]),'OpenchannelAccountId':Number(_0x2a3356[_0xaebd('0x68')]['id'])});}return _0x233051;});}})['then'](respondWithResult(_0x1dacfb,null))['catch'](handleError(_0x1dacfb,null));};exports[_0xaebd('0xbe')]=function(_0x1c4634,_0x35b534,_0x4273de){return db[_0xaebd('0x3f')][_0xaebd('0x5c')]({'where':{'id':_0x1c4634[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x35b534,null))[_0xaebd('0x21')](function(_0x563704){if(_0x563704){return _0x563704['removeAgents'](_0x1c4634[_0xaebd('0x45')][_0xaebd('0x70')])[_0xaebd('0x21')](function(){if(_[_0xaebd('0xbf')](_0x1c4634[_0xaebd('0x45')][_0xaebd('0x70')])){for(var _0x506c9f=0x0;_0x506c9f<_0x1c4634[_0xaebd('0x45')][_0xaebd('0x70')][_0xaebd('0x49')];_0x506c9f+=0x1){socket[_0xaebd('0xc0')](_0xaebd('0xc1'),{'UserId':Number(_0x1c4634[_0xaebd('0x45')][_0xaebd('0x70')][_0x506c9f]),'OpenchannelAccountId':Number(_0x1c4634['params']['id'])});}}else{socket[_0xaebd('0xc0')](_0xaebd('0xc1'),{'UserId':Number(_0x1c4634[_0xaebd('0x45')][_0xaebd('0x70')]),'OpenchannelAccountId':Number(_0x1c4634[_0xaebd('0x68')]['id'])});}});}})[_0xaebd('0x21')](respondWithStatusCode(_0x35b534,null))[_0xaebd('0x2a')](handleError(_0x35b534,null));};exports[_0xaebd('0xc2')]=function(_0x14f60e,_0x4e6440,_0x1c368e){var _0xf4584a={};var _0x1c376d={};var _0xb72331;var _0x3abbb6;return db[_0xaebd('0x3f')][_0xaebd('0x6e')]({'where':{'id':_0x14f60e['params']['id']}})['then'](handleEntityNotFound(_0x4e6440,null))['then'](function(_0x5411af){if(_0x5411af){_0xb72331=_0x5411af;_0x1c376d[_0xaebd('0x43')]=_['keys'](db[_0xaebd('0xb2')][_0xaebd('0x40')]);_0x1c376d[_0xaebd('0x45')]=_[_0xaebd('0x44')](_0x14f60e[_0xaebd('0x45')]);_0x1c376d[_0xaebd('0x4f')]=_[_0xaebd('0x46')](_0x1c376d['model'],_0x1c376d[_0xaebd('0x45')]);_0xf4584a[_0xaebd('0x47')]=_[_0xaebd('0x46')](_0x1c376d['model'],qs[_0xaebd('0x48')](_0x14f60e[_0xaebd('0x45')][_0xaebd('0x48')]));_0xf4584a['attributes']=_0xf4584a[_0xaebd('0x47')][_0xaebd('0x49')]?_0xf4584a[_0xaebd('0x47')]:_0x1c376d['model'];_0xf4584a['order']=qs['sort'](_0x14f60e[_0xaebd('0x45')][_0xaebd('0x4d')]);_0xf4584a[_0xaebd('0x4e')]=qs['filters'](_[_0xaebd('0x50')](_0x14f60e[_0xaebd('0x45')],_0x1c376d[_0xaebd('0x4f')]));if(_0x14f60e[_0xaebd('0x45')][_0xaebd('0x51')]){_0xf4584a[_0xaebd('0x4e')]=_[_0xaebd('0x52')](_0xf4584a[_0xaebd('0x4e')],{'$or':_['map'](_0xf4584a[_0xaebd('0x47')],function(_0x523e0){var _0x4b4d0c={};_0x4b4d0c[_0x523e0]={'$like':'%'+_0x14f60e[_0xaebd('0x45')][_0xaebd('0x51')]+'%'};return _0x4b4d0c;})});}_0xf4584a=_['merge']({},_0xf4584a,_0x14f60e['options']);return _0xb72331[_0xaebd('0xc2')](_0xf4584a);}})[_0xaebd('0x21')](function(_0x389a51){if(_0x389a51){_0x3abbb6=_0x389a51[_0xaebd('0x49')];if(!_0x14f60e['query'][_0xaebd('0x4a')](_0xaebd('0x4b'))){_0xf4584a['limit']=qs[_0xaebd('0x31')](_0x14f60e['query']['limit']);_0xf4584a['offset']=qs[_0xaebd('0x30')](_0x14f60e[_0xaebd('0x45')]['offset']);}return _0xb72331['getAgents'](_0xf4584a);}})[_0xaebd('0x21')](function(_0xc4a1b2){if(_0xc4a1b2){return _0xc4a1b2?{'count':_0x3abbb6,'rows':_0xc4a1b2}:null;}})[_0xaebd('0x21')](respondWithResult(_0x4e6440,null))[_0xaebd('0x2a')](handleError(_0x4e6440,null));};exports[_0xaebd('0x3c')]=function(_0x4eee02,_0x48c516,_0x4dad76){var _0x9b6942,_0xb0ecf4,_0x327f45;if(_[_0xaebd('0x82')](_0x4eee02['body'][_0xaebd('0x5e')])||_0x4eee02[_0xaebd('0x5e')][_0xaebd('0x5e')]===''){throw new db[(_0xaebd('0x78'))][(_0xaebd('0x79'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x4eee02[_0xaebd('0x5e')]['to'])){}_0x9b6942=_0x4eee02[_0xaebd('0x5e')]['to'];return db[_0xaebd('0x3f')]['findOne']({'where':{'id':_0x4eee02[_0xaebd('0x68')]['id']}})[_0xaebd('0x21')](handleEntityNotFound(_0x48c516,null))[_0xaebd('0x21')](function(_0x1444bd){if(_0x1444bd){return db[_0xaebd('0x3f')][_0xaebd('0x5c')]({'where':{'id':_0x1444bd['id']},'include':[{'model':db[_0xaebd('0x87')],'as':_0xaebd('0x92'),'include':[{'model':db['CmContact'],'as':_0xaebd('0x88'),'where':{[_0x1444bd['mapKey']]:_0x9b6942},'limit':0x1,'order':[[_0xaebd('0x7d'),_0xaebd('0x89')]]}]}]})[_0xaebd('0x21')](handleEntityNotFound(_0x48c516,null))['then'](function(_0x98b295){if(_0x98b295&&_0x98b295['List']){_0xb0ecf4=_0x98b295[_0xaebd('0x60')]({'plain':!![]});if(_0xb0ecf4[_0xaebd('0x92')]&&_0xb0ecf4['List'][_0xaebd('0x88')][_0xaebd('0x49')]){return _0xb0ecf4[_0xaebd('0x92')]['Contacts'][0x0];}return db[_0xaebd('0x77')][_0xaebd('0x5d')](_['defaults'](_0x4eee02[_0xaebd('0x5e')],{'firstName':_0x9b6942,[_0x98b295['mapKey']]:_0x9b6942,'phone':_0x9b6942,'ListId':_0xb0ecf4[_0xaebd('0x7f')]}));}})[_0xaebd('0x21')](handleEntityNotFound(_0x48c516,null))['then'](function(_0x47bb4e){if(_0x47bb4e){_0x327f45=_0x47bb4e;return db[_0xaebd('0x97')]['find']({'where':{'ContactId':_0x327f45['id'],'closed':![],'OpenchannelAccountId':_0xb0ecf4['id']}})[_0xaebd('0x21')](function(_0x2ca1f3){if(_0x2ca1f3){return[_0x2ca1f3,![]];}return db[_0xaebd('0x97')][_0xaebd('0x5d')]({'UserId':_0x4eee02[_0xaebd('0x5f')]['id'],'ContactId':_0x327f45['id'],'OpenchannelAccountId':_0xb0ecf4['id'],'lastMsgDirection':_0xaebd('0xc3'),'Messages':[_[_0xaebd('0x52')](_0x4eee02[_0xaebd('0x5e')],{'read':![],'body':_0x4eee02[_0xaebd('0x5e')][_0xaebd('0x5e')],'OpenchannelAccountId':_0xb0ecf4['id'],'UserId':_0x4eee02[_0xaebd('0x5f')]['id'],'ContactId':_0x327f45['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xaebd('0xc4')}]})[_0xaebd('0x21')](function(_0x4bc539){return[_0x4bc539,!![]];});});}})[_0xaebd('0xbc')](function(_0x1e6169,_0x186b0e){if(_0x186b0e){return _0x1e6169;}return db[_0xaebd('0xa0')][_0xaebd('0x5d')](_[_0xaebd('0x52')](_0x4eee02[_0xaebd('0x5e')],{'read':![],'body':_0x4eee02['body'][_0xaebd('0x5e')],'OpenchannelAccountId':_0xb0ecf4['id'],'OpenchannelInteractionId':_0x1e6169['id'],'UserId':_0x4eee02[_0xaebd('0x5f')]['id'],'ContactId':_0x327f45['id']}))[_0xaebd('0x21')](function(_0x3df6cb){_0x1e6169[_0xaebd('0xc5')][_0xaebd('0xc4')]=[];_0x1e6169[_0xaebd('0xc5')]['Messages'][_0xaebd('0x9c')](_0x3df6cb['dataValues']);return _0x1e6169;});});}})[_0xaebd('0x21')](respondWithResult(_0x48c516,null))[_0xaebd('0x2a')](handleError(_0x48c516,null));};
\ No newline at end of file
index af11729..b0f9bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['save','update','remove','hasOwnProperty','hook','events','../../mysqldb','OpenchannelAccount','setMaxListeners'];(function(_0x483410,_0x4b51fd){var _0x2f7fd4=function(_0x233d97){while(--_0x233d97){_0x483410['push'](_0x483410['shift']());}};_0x2f7fd4(++_0x4b51fd);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x6d0c3e,_0xbc2aed){_0x6d0c3e=_0x6d0c3e-0x0;var _0x2895ce=_0xbdb7[_0x6d0c3e];return _0x2895ce;};'use strict';var EventEmitter=require(_0x7bdb('0x0'));var OpenchannelAccount=require(_0x7bdb('0x1'))['db'][_0x7bdb('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x7bdb('0x3')](0x0);var events={'afterCreate':_0x7bdb('0x4'),'afterUpdate':_0x7bdb('0x5'),'afterDestroy':_0x7bdb('0x6')};function emitEvent(_0x2c7e07){return function(_0x46c068,_0x47aec5,_0x28542c){OpenchannelAccountEvents['emit'](_0x2c7e07+':'+_0x46c068['id'],_0x46c068);OpenchannelAccountEvents['emit'](_0x2c7e07,_0x46c068);_0x28542c(null);};}for(var e in events){if(events[_0x7bdb('0x7')](e)){var event=events[e];OpenchannelAccount[_0x7bdb('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xcb91=['save','update','emit','hasOwnProperty','hook','OpenchannelAccount','setMaxListeners'];(function(_0x5ed383,_0x5283d3){var _0x568115=function(_0xc7f504){while(--_0xc7f504){_0x5ed383['push'](_0x5ed383['shift']());}};_0x568115(++_0x5283d3);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3132e8,_0x499a0e){_0x3132e8=_0x3132e8-0x0;var _0x43eb8c=_0xcb91[_0x3132e8];return _0x43eb8c;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0x1cb9('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x1cb9('0x1')](0x0);var events={'afterCreate':_0x1cb9('0x2'),'afterUpdate':_0x1cb9('0x3'),'afterDestroy':'remove'};function emitEvent(_0x8c392f){return function(_0x2c17b8,_0x545a34,_0x13d5fd){OpenchannelAccountEvents[_0x1cb9('0x4')](_0x8c392f+':'+_0x2c17b8['id'],_0x2c17b8);OpenchannelAccountEvents['emit'](_0x8c392f,_0x2c17b8);_0x13d5fd(null);};}for(var e in events){if(events[_0x1cb9('0x5')](e)){var event=events[e];OpenchannelAccount[_0x1cb9('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index f8db26a..a71096b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x5cb250,_0x530dff){var _0x87cf2=function(_0x28af25){while(--_0x28af25){_0x5cb250['push'](_0x5cb250['shift']());}};_0x87cf2(++_0x530dff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x9271d9,_0x8ddc7d){var _0x383e07=function(_0x20773f){while(--_0x20773f){_0x9271d9['push'](_0x9271d9['shift']());}};_0x383e07(++_0x8ddc7d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 11f94d9..45adc55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc03=['jayson/promise','client','http','redis','socket.io-emitter','./openchannelAccount.socket','register','request','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x9bea18,_0x4cd2bc){var _0xd5c26e=function(_0x19c608){while(--_0x19c608){_0x9bea18['push'](_0x9bea18['shift']());}};_0xd5c26e(++_0x4cd2bc);}(_0xfc03,0x16f));var _0x3fc0=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0xfc03[_0x5627e1];return _0x2f013f;};'use strict';var _=require(_0x3fc0('0x0'));var util=require('util');var moment=require(_0x3fc0('0x1'));var BPromise=require(_0x3fc0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3fc0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3fc0('0x4'));var logger=require(_0x3fc0('0x5'))(_0x3fc0('0x6'));var config=require(_0x3fc0('0x7'));var jayson=require(_0x3fc0('0x8'));var client=jayson[_0x3fc0('0x9')][_0x3fc0('0xa')]({'port':0x232a});config[_0x3fc0('0xb')]=_['defaults'](config[_0x3fc0('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x3fc0('0xc'))(new Redis(config[_0x3fc0('0xb')]));require(_0x3fc0('0xd'))[_0x3fc0('0xe')](socket);function respondWithRpcPromise(_0x5ef417,_0x1ee428,_0x929f8f){return new BPromise(function(_0xe9d431,_0x43faa8){return client[_0x3fc0('0xf')](_0x5ef417,_0x929f8f)['then'](function(_0x1f476c){logger[_0x3fc0('0x10')](_0x3fc0('0x11'),_0x1ee428,'request\x20sent');logger[_0x3fc0('0x12')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x1ee428,_0x3fc0('0x13'),JSON[_0x3fc0('0x14')](_0x1f476c));if(_0x1f476c['error']){if(_0x1f476c[_0x3fc0('0x15')][_0x3fc0('0x16')]===0x1f4){logger[_0x3fc0('0x15')]('OpenchannelAccount,\x20%s,\x20%s',_0x1ee428,_0x1f476c[_0x3fc0('0x15')][_0x3fc0('0x17')]);return _0x43faa8(_0x1f476c[_0x3fc0('0x15')][_0x3fc0('0x17')]);}logger['error'](_0x3fc0('0x11'),_0x1ee428,_0x1f476c[_0x3fc0('0x15')][_0x3fc0('0x17')]);return _0xe9d431(_0x1f476c['error'][_0x3fc0('0x17')]);}else{logger['info'](_0x3fc0('0x11'),_0x1ee428,_0x3fc0('0x13'));_0xe9d431(_0x1f476c['result'][_0x3fc0('0x17')]);}})[_0x3fc0('0x18')](function(_0x1c33c8){logger[_0x3fc0('0x15')](_0x3fc0('0x11'),_0x1ee428,_0x1c33c8);_0x43faa8(_0x1c33c8);});});}
\ No newline at end of file
+var _0xe205=['request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','./openchannelAccount.socket'];(function(_0x5be783,_0x56a72b){var _0xf22dbf=function(_0x344890){while(--_0x344890){_0x5be783['push'](_0x5be783['shift']());}};_0xf22dbf(++_0x56a72b);}(_0xe205,0xa7));var _0x5e20=function(_0x478666,_0x3711e4){_0x478666=_0x478666-0x0;var _0x29fd4=_0xe205[_0x478666];return _0x29fd4;};'use strict';var _=require(_0x5e20('0x0'));var util=require(_0x5e20('0x1'));var moment=require(_0x5e20('0x2'));var BPromise=require(_0x5e20('0x3'));var rs=require(_0x5e20('0x4'));var fs=require('fs');var Redis=require(_0x5e20('0x5'));var db=require(_0x5e20('0x6'))['db'];var utils=require(_0x5e20('0x7'));var logger=require(_0x5e20('0x8'))('rpc');var config=require(_0x5e20('0x9'));var jayson=require(_0x5e20('0xa'));var client=jayson[_0x5e20('0xb')][_0x5e20('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5e20('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5e20('0xd')]));require(_0x5e20('0xe'))['register'](socket);function respondWithRpcPromise(_0x91dca7,_0x3855dd,_0x13e7c2){return new BPromise(function(_0x24c9aa,_0x5cb51d){return client[_0x5e20('0xf')](_0x91dca7,_0x13e7c2)[_0x5e20('0x10')](function(_0x270689){logger[_0x5e20('0x11')](_0x5e20('0x12'),_0x3855dd,_0x5e20('0x13'));logger['debug'](_0x5e20('0x14'),_0x3855dd,_0x5e20('0x13'),JSON[_0x5e20('0x15')](_0x270689));if(_0x270689['error']){if(_0x270689[_0x5e20('0x16')]['code']===0x1f4){logger[_0x5e20('0x16')]('OpenchannelAccount,\x20%s,\x20%s',_0x3855dd,_0x270689[_0x5e20('0x16')][_0x5e20('0x17')]);return _0x5cb51d(_0x270689[_0x5e20('0x16')][_0x5e20('0x17')]);}logger[_0x5e20('0x16')]('OpenchannelAccount,\x20%s,\x20%s',_0x3855dd,_0x270689[_0x5e20('0x16')][_0x5e20('0x17')]);return _0x24c9aa(_0x270689[_0x5e20('0x16')][_0x5e20('0x17')]);}else{logger[_0x5e20('0x11')](_0x5e20('0x12'),_0x3855dd,_0x5e20('0x13'));_0x24c9aa(_0x270689[_0x5e20('0x18')]['message']);}})[_0x5e20('0x19')](function(_0xd38d1f){logger['error'](_0x5e20('0x12'),_0x3855dd,_0xd38d1f);_0x5cb51d(_0xd38d1f);});});}
\ No newline at end of file
index 18112b1..1706d81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd816=['update','emit','removeListener','./openchannelAccount.events','save'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0xd816,0xd5));var _0x6d81=function(_0x2bec3b,_0x4f9e0d){_0x2bec3b=_0x2bec3b-0x0;var _0x26c6b7=_0xd816[_0x2bec3b];return _0x26c6b7;};'use strict';var OpenchannelAccountEvents=require(_0x6d81('0x0'));var events=[_0x6d81('0x1'),'remove',_0x6d81('0x2')];function createListener(_0x538e21,_0x540f68){return function(_0x5d99e4){_0x540f68[_0x6d81('0x3')](_0x538e21,_0x5d99e4);};}function removeListener(_0x39a52f,_0x3511a2){return function(){OpenchannelAccountEvents[_0x6d81('0x4')](_0x39a52f,_0x3511a2);};}exports['register']=function(_0x6c01ef){for(var _0x4ba95f=0x0,_0x10f1a7=events['length'];_0x4ba95f<_0x10f1a7;_0x4ba95f++){var _0x96d1ac=events[_0x4ba95f];var _0x15d634=createListener('openchannelAccount:'+_0x96d1ac,_0x6c01ef);OpenchannelAccountEvents['on'](_0x96d1ac,_0x15d634);}};
\ No newline at end of file
+var _0x049e=['register','length','./openchannelAccount.events','save','update','emit'];(function(_0x111337,_0x57fff4){var _0xae35be=function(_0x104e96){while(--_0x104e96){_0x111337['push'](_0x111337['shift']());}};_0xae35be(++_0x57fff4);}(_0x049e,0x16a));var _0xe049=function(_0x4b6507,_0x5518b5){_0x4b6507=_0x4b6507-0x0;var _0x2001ec=_0x049e[_0x4b6507];return _0x2001ec;};'use strict';var OpenchannelAccountEvents=require(_0xe049('0x0'));var events=[_0xe049('0x1'),'remove',_0xe049('0x2')];function createListener(_0x47aa93,_0x155cb3){return function(_0x13cc6a){_0x155cb3[_0xe049('0x3')](_0x47aa93,_0x13cc6a);};}function removeListener(_0x4001a8,_0x2abd06){return function(){OpenchannelAccountEvents['removeListener'](_0x4001a8,_0x2abd06);};}exports[_0xe049('0x4')]=function(_0x196af2){for(var _0x22e8f5=0x0,_0x221a5f=events[_0xe049('0x5')];_0x22e8f5<_0x221a5f;_0x22e8f5++){var _0x17945b=events[_0x22e8f5];var _0x22abb2=createListener('openchannelAccount:'+_0x17945b,_0x196af2);OpenchannelAccountEvents['on'](_0x17945b,_0x22abb2);}};
\ No newline at end of file
index c69f129..1c80a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc45f=['exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','isAuthenticated','index','/:id','post','put','destroy'];(function(_0x481856,_0x519496){var _0x19379e=function(_0x452ce8){while(--_0x452ce8){_0x481856['push'](_0x481856['shift']());}};_0x19379e(++_0x519496);}(_0xc45f,0x1c1));var _0xfc45=function(_0x459a51,_0x376c0c){_0x459a51=_0x459a51-0x0;var _0x3b497e=_0xc45f[_0x459a51];return _0x3b497e;};'use strict';var multer=require(_0xfc45('0x0'));var util=require(_0xfc45('0x1'));var path=require(_0xfc45('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfc45('0x3')]();var fs_extra=require(_0xfc45('0x4'));var auth=require(_0xfc45('0x5'));var interaction=require(_0xfc45('0x6'));var config=require(_0xfc45('0x7'));var controller=require(_0xfc45('0x8'));router['get']('/',auth[_0xfc45('0x9')](),controller[_0xfc45('0xa')]);router['get'](_0xfc45('0xb'),auth[_0xfc45('0x9')](),controller['show']);router[_0xfc45('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfc45('0xd')]('/:id',auth[_0xfc45('0x9')](),controller['update']);router['delete']('/:id',auth[_0xfc45('0x9')](),controller[_0xfc45('0xe')]);module[_0xfc45('0xf')]=router;
\ No newline at end of file
+var _0x3cb0=['get','isAuthenticated','index','/:id','show','post','put','delete','destroy','exports','multer','connect-timeout','express','../../components/interaction/service','../../config/environment','./openchannelApplication.controller'];(function(_0x5cfbaf,_0x1c38b2){var _0x564786=function(_0x82aaaf){while(--_0x82aaaf){_0x5cfbaf['push'](_0x5cfbaf['shift']());}};_0x564786(++_0x1c38b2);}(_0x3cb0,0x17a));var _0x03cb=function(_0x2eb317,_0x518e67){_0x2eb317=_0x2eb317-0x0;var _0x51b4ed=_0x3cb0[_0x2eb317];return _0x51b4ed;};'use strict';var multer=require(_0x03cb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x03cb('0x1'));var express=require(_0x03cb('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x03cb('0x3'));var config=require(_0x03cb('0x4'));var controller=require(_0x03cb('0x5'));router[_0x03cb('0x6')]('/',auth[_0x03cb('0x7')](),controller[_0x03cb('0x8')]);router[_0x03cb('0x6')](_0x03cb('0x9'),auth[_0x03cb('0x7')](),controller[_0x03cb('0xa')]);router[_0x03cb('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x03cb('0xc')](_0x03cb('0x9'),auth[_0x03cb('0x7')](),controller['update']);router[_0x03cb('0xd')](_0x03cb('0x9'),auth[_0x03cb('0x7')](),controller[_0x03cb('0xe')]);module[_0x03cb('0xf')]=router;
\ No newline at end of file
index cea982f..9d09046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f44=['*,*,*,*','sequelize','exports','INTEGER','noop','TEXT','STRING'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x3f44,0x1dd));var _0x43f4=function(_0x418a21,_0xd06751){_0x418a21=_0x418a21-0x0;var _0xeffcdc=_0x3f44[_0x418a21];return _0xeffcdc;};'use strict';var Sequelize=require(_0x43f4('0x0'));module[_0x43f4('0x1')]={'priority':{'type':Sequelize[_0x43f4('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x43f4('0x3')},'appdata':{'type':Sequelize[_0x43f4('0x4')]()},'description':{'type':Sequelize[_0x43f4('0x5')]},'interval':{'type':Sequelize[_0x43f4('0x5')],'defaultValue':_0x43f4('0x6')}};
\ No newline at end of file
+var _0x4f79=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0x329c95,_0x19f840){var _0x4759bd=function(_0x20e588){while(--_0x20e588){_0x329c95['push'](_0x329c95['shift']());}};_0x4759bd(++_0x19f840);}(_0x4f79,0x17b));var _0x94f7=function(_0x3372a,_0x5e166b){_0x3372a=_0x3372a-0x0;var _0x554c04=_0x4f79[_0x3372a];return _0x554c04;};'use strict';var Sequelize=require(_0x94f7('0x0'));module[_0x94f7('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x94f7('0x2')],'allowNull':![],'defaultValue':_0x94f7('0x3')},'appdata':{'type':Sequelize[_0x94f7('0x4')]()},'description':{'type':Sequelize[_0x94f7('0x2')]},'interval':{'type':Sequelize[_0x94f7('0x2')],'defaultValue':_0x94f7('0x5')}};
\ No newline at end of file
index 17141b3..d537e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd10=['status','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','params','options','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end'];(function(_0x258c9a,_0x1ed54b){var _0x3a34ba=function(_0x1e48d0){while(--_0x1e48d0){_0x258c9a['push'](_0x258c9a['shift']());}};_0x3a34ba(++_0x1ed54b);}(_0xfd10,0x1f3));var _0x0fd1=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xfd10[_0x16d10f];return _0x50c823;};'use strict';var emlformat=require(_0x0fd1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0fd1('0x1'));var jsonpatch=require(_0x0fd1('0x2'));var rp=require('request-promise');var moment=require(_0x0fd1('0x3'));var BPromise=require(_0x0fd1('0x4'));var Mustache=require(_0x0fd1('0x5'));var util=require(_0x0fd1('0x6'));var path=require(_0x0fd1('0x7'));var sox=require(_0x0fd1('0x8'));var csv=require(_0x0fd1('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0fd1('0xa'));var _=require('lodash');var squel=require(_0x0fd1('0xb'));var crypto=require(_0x0fd1('0xc'));var jsforce=require(_0x0fd1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0fd1('0x9'));var querystring=require(_0x0fd1('0xe'));var Papa=require('papaparse');var Redis=require(_0x0fd1('0xf'));var authService=require(_0x0fd1('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x0fd1('0x11'));var hardwareService=require(_0x0fd1('0x12'));var logger=require(_0x0fd1('0x13'))(_0x0fd1('0x14'));var utils=require(_0x0fd1('0x15'));var config=require(_0x0fd1('0x16'));var licenseUtil=require(_0x0fd1('0x17'));var db=require(_0x0fd1('0x18'))['db'];function respondWithStatusCode(_0x2c2828,_0x301fc4){_0x301fc4=_0x301fc4||0xcc;return function(_0x5cf8f6){if(_0x5cf8f6){return _0x2c2828['sendStatus'](_0x301fc4);}return _0x2c2828['status'](_0x301fc4)[_0x0fd1('0x19')]();};}function respondWithResult(_0x2f1929,_0x1a2651){_0x1a2651=_0x1a2651||0xc8;return function(_0x5d30bd){if(_0x5d30bd){return _0x2f1929[_0x0fd1('0x1a')](_0x1a2651)['json'](_0x5d30bd);}};}function respondWithFilteredResult(_0x4835f4,_0x378c51){return function(_0x1d8dfa){if(_0x1d8dfa){var _0x4ccb71=typeof _0x378c51[_0x0fd1('0x1b')]===_0x0fd1('0x1c')&&typeof _0x378c51['limit']===_0x0fd1('0x1c');var _0x1f7364=_0x1d8dfa['count'];var _0x5eff83=_0x4ccb71?0x0:_0x378c51['offset'];var _0xdbc17c=_0x4ccb71?_0x1d8dfa[_0x0fd1('0x1d')]:_0x378c51[_0x0fd1('0x1b')]+_0x378c51[_0x0fd1('0x1e')];var _0x570ebf;if(_0xdbc17c>=_0x1f7364){_0xdbc17c=_0x1f7364;_0x570ebf=0xc8;}else{_0x570ebf=0xce;}_0x4835f4['status'](_0x570ebf);return _0x4835f4[_0x0fd1('0x1f')](_0x0fd1('0x20'),_0x5eff83+'-'+_0xdbc17c+'/'+_0x1f7364)[_0x0fd1('0x21')](_0x1d8dfa);}return null;};}function patchUpdates(_0x36e280){return function(_0x6b89ef){try{jsonpatch[_0x0fd1('0x22')](_0x6b89ef,_0x36e280,!![]);}catch(_0x2a1e29){return BPromise['reject'](_0x2a1e29);}return _0x6b89ef[_0x0fd1('0x23')]();};}function saveUpdates(_0x46068b,_0x4e5453){return function(_0x4fc467){if(_0x4fc467){return _0x4fc467[_0x0fd1('0x24')](_0x46068b)[_0x0fd1('0x25')](function(_0x1375a0){return _0x1375a0;});}return null;};}function removeEntity(_0x6182e7,_0x432b8f){return function(_0x32f002){if(_0x32f002){return _0x32f002[_0x0fd1('0x26')]()[_0x0fd1('0x25')](function(){_0x6182e7[_0x0fd1('0x1a')](0xcc)[_0x0fd1('0x19')]();});}};}function handleEntityNotFound(_0x1f8b91,_0x396840){return function(_0x5797cd){if(!_0x5797cd){_0x1f8b91[_0x0fd1('0x27')](0x194);}return _0x5797cd;};}function handleError(_0x560f59,_0x11a315){_0x11a315=_0x11a315||0x1f4;return function(_0x28a1f4){logger[_0x0fd1('0x28')](_0x28a1f4['stack']);if(_0x28a1f4['name']){delete _0x28a1f4[_0x0fd1('0x29')];}_0x560f59[_0x0fd1('0x1a')](_0x11a315)[_0x0fd1('0x2a')](_0x28a1f4);};}exports[_0x0fd1('0x2b')]=function(_0x394d73,_0x4e9a6d){var _0x41eba7={},_0x1ca489={},_0x5a89a4={'count':0x0,'rows':[]};var _0x8779b3=_[_0x0fd1('0x2c')](db[_0x0fd1('0x2d')][_0x0fd1('0x2e')],function(_0x22c4e0){return{'name':_0x22c4e0[_0x0fd1('0x2f')],'type':_0x22c4e0[_0x0fd1('0x30')][_0x0fd1('0x31')]};});_0x1ca489[_0x0fd1('0x32')]=_[_0x0fd1('0x2c')](_0x8779b3,'name');_0x1ca489[_0x0fd1('0x33')]=_[_0x0fd1('0x34')](_0x394d73['query']);_0x1ca489[_0x0fd1('0x35')]=_[_0x0fd1('0x36')](_0x1ca489['model'],_0x1ca489['query']);_0x41eba7['attributes']=_[_0x0fd1('0x36')](_0x1ca489[_0x0fd1('0x32')],qs[_0x0fd1('0x37')](_0x394d73[_0x0fd1('0x33')][_0x0fd1('0x37')]));_0x41eba7[_0x0fd1('0x38')]=_0x41eba7[_0x0fd1('0x38')][_0x0fd1('0x39')]?_0x41eba7[_0x0fd1('0x38')]:_0x1ca489[_0x0fd1('0x32')];if(!_0x394d73[_0x0fd1('0x33')]['hasOwnProperty'](_0x0fd1('0x3a'))){_0x41eba7[_0x0fd1('0x1e')]=qs[_0x0fd1('0x1e')](_0x394d73[_0x0fd1('0x33')]['limit']);_0x41eba7['offset']=qs[_0x0fd1('0x1b')](_0x394d73[_0x0fd1('0x33')][_0x0fd1('0x1b')]);}_0x41eba7[_0x0fd1('0x3b')]=qs[_0x0fd1('0x3c')](_0x394d73['query'][_0x0fd1('0x3c')]);_0x41eba7[_0x0fd1('0x3d')]=qs[_0x0fd1('0x35')](_[_0x0fd1('0x3e')](_0x394d73[_0x0fd1('0x33')],_0x1ca489[_0x0fd1('0x35')]),_0x8779b3);if(_0x394d73['query']['filter']){_0x41eba7[_0x0fd1('0x3d')]=_[_0x0fd1('0x3f')](_0x41eba7[_0x0fd1('0x3d')],{'$or':_[_0x0fd1('0x2c')](_0x8779b3,function(_0x3e375f){if(_0x3e375f[_0x0fd1('0x30')]!=='VIRTUAL'){var _0x349614={};_0x349614[_0x3e375f['name']]={'$like':'%'+_0x394d73[_0x0fd1('0x33')][_0x0fd1('0x40')]+'%'};return _0x349614;}})});}_0x41eba7=_[_0x0fd1('0x3f')]({},_0x41eba7,_0x394d73['options']);var _0x51be43={'where':_0x41eba7[_0x0fd1('0x3d')]};return db[_0x0fd1('0x2d')][_0x0fd1('0x1d')](_0x51be43)['then'](function(_0x39c9e8){_0x5a89a4[_0x0fd1('0x1d')]=_0x39c9e8;if(_0x394d73[_0x0fd1('0x33')][_0x0fd1('0x41')]){_0x41eba7[_0x0fd1('0x42')]=[{'all':!![]}];}return db[_0x0fd1('0x2d')][_0x0fd1('0x43')](_0x41eba7);})['then'](function(_0x582ce1){_0x5a89a4[_0x0fd1('0x44')]=_0x582ce1;return _0x5a89a4;})[_0x0fd1('0x25')](respondWithFilteredResult(_0x4e9a6d,_0x41eba7))[_0x0fd1('0x45')](handleError(_0x4e9a6d,null));};exports['show']=function(_0x3e06e5,_0x5bd8d8){var _0x19806d={'raw':!![],'where':{'id':_0x3e06e5[_0x0fd1('0x46')]['id']}},_0x381bb8={};_0x381bb8[_0x0fd1('0x32')]=_['keys'](db[_0x0fd1('0x2d')][_0x0fd1('0x2e')]);_0x381bb8[_0x0fd1('0x33')]=_[_0x0fd1('0x34')](_0x3e06e5[_0x0fd1('0x33')]);_0x381bb8['filters']=_[_0x0fd1('0x36')](_0x381bb8[_0x0fd1('0x32')],_0x381bb8[_0x0fd1('0x33')]);_0x19806d[_0x0fd1('0x38')]=_[_0x0fd1('0x36')](_0x381bb8[_0x0fd1('0x32')],qs['fields'](_0x3e06e5['query'][_0x0fd1('0x37')]));_0x19806d[_0x0fd1('0x38')]=_0x19806d['attributes'][_0x0fd1('0x39')]?_0x19806d[_0x0fd1('0x38')]:_0x381bb8[_0x0fd1('0x32')];if(_0x3e06e5[_0x0fd1('0x33')]['includeAll']){_0x19806d[_0x0fd1('0x42')]=[{'all':!![]}];}_0x19806d=_[_0x0fd1('0x3f')]({},_0x19806d,_0x3e06e5[_0x0fd1('0x47')]);return db[_0x0fd1('0x2d')][_0x0fd1('0x48')](_0x19806d)[_0x0fd1('0x25')](handleEntityNotFound(_0x5bd8d8,null))[_0x0fd1('0x25')](respondWithResult(_0x5bd8d8,null))[_0x0fd1('0x45')](handleError(_0x5bd8d8,null));};exports[_0x0fd1('0x49')]=function(_0xdaeb68,_0x2718e9){return db[_0x0fd1('0x2d')]['create'](_0xdaeb68[_0x0fd1('0x4a')],{})[_0x0fd1('0x25')](respondWithResult(_0x2718e9,0xc9))[_0x0fd1('0x45')](handleError(_0x2718e9,null));};exports[_0x0fd1('0x24')]=function(_0x12a550,_0x142d8e){if(_0x12a550[_0x0fd1('0x4a')]['id']){delete _0x12a550[_0x0fd1('0x4a')]['id'];}return db[_0x0fd1('0x2d')]['find']({'where':{'id':_0x12a550[_0x0fd1('0x46')]['id']}})[_0x0fd1('0x25')](handleEntityNotFound(_0x142d8e,null))[_0x0fd1('0x25')](saveUpdates(_0x12a550[_0x0fd1('0x4a')],null))[_0x0fd1('0x25')](respondWithResult(_0x142d8e,null))[_0x0fd1('0x45')](handleError(_0x142d8e,null));};exports[_0x0fd1('0x26')]=function(_0x342311,_0x11e6bf){return db[_0x0fd1('0x2d')][_0x0fd1('0x48')]({'where':{'id':_0x342311[_0x0fd1('0x46')]['id']}})['then'](handleEntityNotFound(_0x11e6bf,null))['then'](removeEntity(_0x11e6bf,null))[_0x0fd1('0x45')](handleError(_0x11e6bf,null));};
\ No newline at end of file
+var _0x1c7e=['OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','fields','length','options','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map'];(function(_0x4f882f,_0x58117f){var _0x44ca7f=function(_0x2c5733){while(--_0x2c5733){_0x4f882f['push'](_0x4f882f['shift']());}};_0x44ca7f(++_0x58117f);}(_0x1c7e,0x6f));var _0xe1c7=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1c7e[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xe1c7('0x0'));var rimraf=require(_0xe1c7('0x1'));var zipdir=require(_0xe1c7('0x2'));var jsonpatch=require(_0xe1c7('0x3'));var rp=require(_0xe1c7('0x4'));var moment=require(_0xe1c7('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe1c7('0x6'));var util=require(_0xe1c7('0x7'));var path=require(_0xe1c7('0x8'));var sox=require(_0xe1c7('0x9'));var csv=require(_0xe1c7('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe1c7('0xb'));var _=require(_0xe1c7('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe1c7('0xd'));var toCsv=require(_0xe1c7('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe1c7('0xe'));var authService=require(_0xe1c7('0xf'));var qs=require(_0xe1c7('0x10'));var as=require(_0xe1c7('0x11'));var hardwareService=require(_0xe1c7('0x12'));var logger=require(_0xe1c7('0x13'))('api');var utils=require(_0xe1c7('0x14'));var config=require(_0xe1c7('0x15'));var licenseUtil=require(_0xe1c7('0x16'));var db=require(_0xe1c7('0x17'))['db'];function respondWithStatusCode(_0x4bd4bb,_0x4f778a){_0x4f778a=_0x4f778a||0xcc;return function(_0x5d4667){if(_0x5d4667){return _0x4bd4bb[_0xe1c7('0x18')](_0x4f778a);}return _0x4bd4bb[_0xe1c7('0x19')](_0x4f778a)[_0xe1c7('0x1a')]();};}function respondWithResult(_0x14bd47,_0x57ff90){_0x57ff90=_0x57ff90||0xc8;return function(_0xd80098){if(_0xd80098){return _0x14bd47[_0xe1c7('0x19')](_0x57ff90)[_0xe1c7('0x1b')](_0xd80098);}};}function respondWithFilteredResult(_0xe95b20,_0x400542){return function(_0x14d00d){if(_0x14d00d){var _0xcd5569=typeof _0x400542[_0xe1c7('0x1c')]===_0xe1c7('0x1d')&&typeof _0x400542['limit']==='undefined';var _0x16e374=_0x14d00d['count'];var _0x32f874=_0xcd5569?0x0:_0x400542['offset'];var _0x16de24=_0xcd5569?_0x14d00d['count']:_0x400542['offset']+_0x400542[_0xe1c7('0x1e')];var _0x161f6e;if(_0x16de24>=_0x16e374){_0x16de24=_0x16e374;_0x161f6e=0xc8;}else{_0x161f6e=0xce;}_0xe95b20['status'](_0x161f6e);return _0xe95b20[_0xe1c7('0x1f')](_0xe1c7('0x20'),_0x32f874+'-'+_0x16de24+'/'+_0x16e374)[_0xe1c7('0x1b')](_0x14d00d);}return null;};}function patchUpdates(_0x48522a){return function(_0x4e731c){try{jsonpatch[_0xe1c7('0x21')](_0x4e731c,_0x48522a,!![]);}catch(_0xf4e50c){return BPromise[_0xe1c7('0x22')](_0xf4e50c);}return _0x4e731c[_0xe1c7('0x23')]();};}function saveUpdates(_0x5a1ae0,_0x32e458){return function(_0x39fec8){if(_0x39fec8){return _0x39fec8['update'](_0x5a1ae0)[_0xe1c7('0x24')](function(_0x9a573c){return _0x9a573c;});}return null;};}function removeEntity(_0x4042a4,_0x15831d){return function(_0x57fb33){if(_0x57fb33){return _0x57fb33[_0xe1c7('0x25')]()[_0xe1c7('0x24')](function(){_0x4042a4[_0xe1c7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x91cc73,_0x54c6f2){return function(_0x4a2330){if(!_0x4a2330){_0x91cc73[_0xe1c7('0x18')](0x194);}return _0x4a2330;};}function handleError(_0x1d69af,_0x105fe2){_0x105fe2=_0x105fe2||0x1f4;return function(_0x450a0d){logger[_0xe1c7('0x26')](_0x450a0d[_0xe1c7('0x27')]);if(_0x450a0d[_0xe1c7('0x28')]){delete _0x450a0d[_0xe1c7('0x28')];}_0x1d69af[_0xe1c7('0x19')](_0x105fe2)[_0xe1c7('0x29')](_0x450a0d);};}exports['index']=function(_0x2f65cc,_0x720f27){var _0x4612e1={},_0x372686={},_0x2c01e7={'count':0x0,'rows':[]};var _0x37e16a=_[_0xe1c7('0x2a')](db[_0xe1c7('0x2b')][_0xe1c7('0x2c')],function(_0xf144f8){return{'name':_0xf144f8[_0xe1c7('0x2d')],'type':_0xf144f8[_0xe1c7('0x2e')][_0xe1c7('0x2f')]};});_0x372686[_0xe1c7('0x30')]=_[_0xe1c7('0x2a')](_0x37e16a,'name');_0x372686[_0xe1c7('0x31')]=_[_0xe1c7('0x32')](_0x2f65cc[_0xe1c7('0x31')]);_0x372686['filters']=_[_0xe1c7('0x33')](_0x372686[_0xe1c7('0x30')],_0x372686[_0xe1c7('0x31')]);_0x4612e1[_0xe1c7('0x34')]=_[_0xe1c7('0x33')](_0x372686[_0xe1c7('0x30')],qs['fields'](_0x2f65cc[_0xe1c7('0x31')]['fields']));_0x4612e1['attributes']=_0x4612e1[_0xe1c7('0x34')]['length']?_0x4612e1[_0xe1c7('0x34')]:_0x372686['model'];if(!_0x2f65cc[_0xe1c7('0x31')][_0xe1c7('0x35')](_0xe1c7('0x36'))){_0x4612e1[_0xe1c7('0x1e')]=qs['limit'](_0x2f65cc[_0xe1c7('0x31')][_0xe1c7('0x1e')]);_0x4612e1[_0xe1c7('0x1c')]=qs[_0xe1c7('0x1c')](_0x2f65cc[_0xe1c7('0x31')][_0xe1c7('0x1c')]);}_0x4612e1['order']=qs[_0xe1c7('0x37')](_0x2f65cc[_0xe1c7('0x31')][_0xe1c7('0x37')]);_0x4612e1['where']=qs[_0xe1c7('0x38')](_[_0xe1c7('0x39')](_0x2f65cc[_0xe1c7('0x31')],_0x372686[_0xe1c7('0x38')]),_0x37e16a);if(_0x2f65cc['query'][_0xe1c7('0x3a')]){_0x4612e1[_0xe1c7('0x3b')]=_[_0xe1c7('0x3c')](_0x4612e1[_0xe1c7('0x3b')],{'$or':_['map'](_0x37e16a,function(_0x32cbc4){if(_0x32cbc4[_0xe1c7('0x2e')]!==_0xe1c7('0x3d')){var _0x27b1e0={};_0x27b1e0[_0x32cbc4[_0xe1c7('0x28')]]={'$like':'%'+_0x2f65cc['query'][_0xe1c7('0x3a')]+'%'};return _0x27b1e0;}})});}_0x4612e1=_[_0xe1c7('0x3c')]({},_0x4612e1,_0x2f65cc['options']);var _0x405cbe={'where':_0x4612e1[_0xe1c7('0x3b')]};return db[_0xe1c7('0x2b')][_0xe1c7('0x3e')](_0x405cbe)[_0xe1c7('0x24')](function(_0x521f76){_0x2c01e7['count']=_0x521f76;if(_0x2f65cc['query'][_0xe1c7('0x3f')]){_0x4612e1[_0xe1c7('0x40')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0xe1c7('0x41')](_0x4612e1);})[_0xe1c7('0x24')](function(_0x4e113d){_0x2c01e7[_0xe1c7('0x42')]=_0x4e113d;return _0x2c01e7;})[_0xe1c7('0x24')](respondWithFilteredResult(_0x720f27,_0x4612e1))[_0xe1c7('0x43')](handleError(_0x720f27,null));};exports[_0xe1c7('0x44')]=function(_0x5118e2,_0x2497bc){var _0x456ae8={'raw':!![],'where':{'id':_0x5118e2[_0xe1c7('0x45')]['id']}},_0x5ae983={};_0x5ae983[_0xe1c7('0x30')]=_['keys'](db[_0xe1c7('0x2b')][_0xe1c7('0x2c')]);_0x5ae983[_0xe1c7('0x31')]=_['keys'](_0x5118e2[_0xe1c7('0x31')]);_0x5ae983[_0xe1c7('0x38')]=_[_0xe1c7('0x33')](_0x5ae983[_0xe1c7('0x30')],_0x5ae983[_0xe1c7('0x31')]);_0x456ae8[_0xe1c7('0x34')]=_['intersection'](_0x5ae983[_0xe1c7('0x30')],qs[_0xe1c7('0x46')](_0x5118e2['query'][_0xe1c7('0x46')]));_0x456ae8[_0xe1c7('0x34')]=_0x456ae8['attributes'][_0xe1c7('0x47')]?_0x456ae8[_0xe1c7('0x34')]:_0x5ae983[_0xe1c7('0x30')];if(_0x5118e2['query'][_0xe1c7('0x3f')]){_0x456ae8[_0xe1c7('0x40')]=[{'all':!![]}];}_0x456ae8=_[_0xe1c7('0x3c')]({},_0x456ae8,_0x5118e2[_0xe1c7('0x48')]);return db[_0xe1c7('0x2b')][_0xe1c7('0x49')](_0x456ae8)[_0xe1c7('0x24')](handleEntityNotFound(_0x2497bc,null))[_0xe1c7('0x24')](respondWithResult(_0x2497bc,null))[_0xe1c7('0x43')](handleError(_0x2497bc,null));};exports[_0xe1c7('0x4a')]=function(_0x27d31b,_0x4c0d16){return db['OpenchannelApplication'][_0xe1c7('0x4a')](_0x27d31b[_0xe1c7('0x4b')],{})[_0xe1c7('0x24')](respondWithResult(_0x4c0d16,0xc9))[_0xe1c7('0x43')](handleError(_0x4c0d16,null));};exports[_0xe1c7('0x4c')]=function(_0x5962f5,_0x55e839){if(_0x5962f5[_0xe1c7('0x4b')]['id']){delete _0x5962f5[_0xe1c7('0x4b')]['id'];}return db[_0xe1c7('0x2b')]['find']({'where':{'id':_0x5962f5['params']['id']}})[_0xe1c7('0x24')](handleEntityNotFound(_0x55e839,null))[_0xe1c7('0x24')](saveUpdates(_0x5962f5[_0xe1c7('0x4b')],null))['then'](respondWithResult(_0x55e839,null))['catch'](handleError(_0x55e839,null));};exports[_0xe1c7('0x25')]=function(_0x3a1d4b,_0x245618){return db[_0xe1c7('0x2b')][_0xe1c7('0x49')]({'where':{'id':_0x3a1d4b['params']['id']}})[_0xe1c7('0x24')](handleEntityNotFound(_0x245618,null))[_0xe1c7('0x24')](removeEntity(_0x245618,null))[_0xe1c7('0x43')](handleError(_0x245618,null));};
\ No newline at end of file
index 9c1e30f..6d9ee8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fc5=['path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','OpenchannelApplication','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','request-promise'];(function(_0xccc505,_0x11d878){var _0x38accb=function(_0x148f92){while(--_0x148f92){_0xccc505['push'](_0xccc505['shift']());}};_0x38accb(++_0x11d878);}(_0x2fc5,0x74));var _0x52fc=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x2fc5[_0x2b5eae];return _0x5f3ac9;};'use strict';var _=require('lodash');var util=require(_0x52fc('0x0'));var logger=require(_0x52fc('0x1'))(_0x52fc('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x52fc('0x3'));var fs=require('fs');var path=require(_0x52fc('0x4'));var rimraf=require(_0x52fc('0x5'));var config=require(_0x52fc('0x6'));var attributes=require(_0x52fc('0x7'));module[_0x52fc('0x8')]=function(_0x2de82e,_0x552c0e){return _0x2de82e['define'](_0x52fc('0x9'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x52fc('0xa'),'collate':_0x52fc('0xb')});};
\ No newline at end of file
+var _0xb9ef=['bluebird','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x48a82c,_0xa5c5a6){var _0x336292=function(_0x5119e5){while(--_0x5119e5){_0x48a82c['push'](_0x48a82c['shift']());}};_0x336292(++_0xa5c5a6);}(_0xb9ef,0x6c));var _0xfb9e=function(_0x38d179,_0x148d10){_0x38d179=_0x38d179-0x0;var _0x167a61=_0xb9ef[_0x38d179];return _0x167a61;};'use strict';var _=require('lodash');var util=require(_0xfb9e('0x0'));var logger=require(_0xfb9e('0x1'))('api');var moment=require('moment');var BPromise=require(_0xfb9e('0x2'));var rp=require(_0xfb9e('0x3'));var fs=require('fs');var path=require(_0xfb9e('0x4'));var rimraf=require(_0xfb9e('0x5'));var config=require(_0xfb9e('0x6'));var attributes=require(_0xfb9e('0x7'));module[_0xfb9e('0x8')]=function(_0x1013c7,_0x410281){return _0x1013c7[_0xfb9e('0x9')]('OpenchannelApplication',attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xfb9e('0xa')});};
\ No newline at end of file
index c6257b5..8df7f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd831=['http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','options','raw','attributes','limit','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x16e5d1,_0x9cf085){var _0x3f72e6=function(_0x26c06a){while(--_0x26c06a){_0x16e5d1['push'](_0x16e5d1['shift']());}};_0x3f72e6(++_0x9cf085);}(_0xd831,0x1c7));var _0x1d83=function(_0x3c01e3,_0x4a2bf4){_0x3c01e3=_0x3c01e3-0x0;var _0x325754=_0xd831[_0x3c01e3];return _0x325754;};'use strict';var _=require(_0x1d83('0x0'));var util=require('util');var moment=require(_0x1d83('0x1'));var BPromise=require(_0x1d83('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1d83('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1d83('0x4'));var logger=require(_0x1d83('0x5'))(_0x1d83('0x6'));var config=require(_0x1d83('0x7'));var jayson=require(_0x1d83('0x8'));var client=jayson[_0x1d83('0x9')][_0x1d83('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x22c1e7,_0x3907b9,_0x1df842){return new BPromise(function(_0x2081a7,_0x2a0cb0){return client[_0x1d83('0xb')](_0x22c1e7,_0x1df842)[_0x1d83('0xc')](function(_0x5ba70f){logger[_0x1d83('0xd')](_0x1d83('0xe'),_0x3907b9,_0x1d83('0xf'));logger[_0x1d83('0x10')](_0x1d83('0x11'),_0x3907b9,'request\x20sent',JSON[_0x1d83('0x12')](_0x5ba70f));if(_0x5ba70f['error']){if(_0x5ba70f['error'][_0x1d83('0x13')]===0x1f4){logger[_0x1d83('0x14')](_0x1d83('0xe'),_0x3907b9,_0x5ba70f[_0x1d83('0x14')][_0x1d83('0x15')]);return _0x2a0cb0(_0x5ba70f['error'][_0x1d83('0x15')]);}logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x3907b9,_0x5ba70f[_0x1d83('0x14')][_0x1d83('0x15')]);return _0x2081a7(_0x5ba70f['error'][_0x1d83('0x15')]);}else{logger[_0x1d83('0xd')](_0x1d83('0xe'),_0x3907b9,_0x1d83('0xf'));_0x2081a7(_0x5ba70f[_0x1d83('0x16')][_0x1d83('0x15')]);}})[_0x1d83('0x17')](function(_0x1ce300){logger[_0x1d83('0x14')]('OpenchannelApplication,\x20%s,\x20%s',_0x3907b9,_0x1ce300);_0x2a0cb0(_0x1ce300);});});}exports[_0x1d83('0x18')]=function(_0x3d711b){var _0x3e809d=this;return new Promise(function(_0xbfcc93,_0x3c75d5){return db[_0x1d83('0x19')][_0x1d83('0x1a')](_0x3d711b['body'],{'raw':_0x3d711b[_0x1d83('0x1b')]?_0x3d711b[_0x1d83('0x1b')][_0x1d83('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d711b[_0x1d83('0x1b')]?_0x3d711b['options']['where']||null:null,'attributes':_0x3d711b[_0x1d83('0x1b')]?_0x3d711b[_0x1d83('0x1b')][_0x1d83('0x1d')]||null:null,'limit':_0x3d711b[_0x1d83('0x1b')]?_0x3d711b[_0x1d83('0x1b')][_0x1d83('0x1e')]||null:null})['then'](function(_0x4abdcc){logger['info'](_0x1d83('0x18'),_0x3d711b);logger[_0x1d83('0x10')](_0x1d83('0x18'),_0x3d711b,JSON['stringify'](_0x4abdcc));_0xbfcc93(_0x4abdcc);})['catch'](function(_0x26da4e){logger[_0x1d83('0x14')](_0x1d83('0x18'),_0x26da4e[_0x1d83('0x15')],_0x3d711b);_0x3c75d5(_0x3e809d[_0x1d83('0x14')](0x1f4,_0x26da4e['message']));});});};
\ No newline at end of file
+var _0x4dcd=['error','message','result','body','options','raw','where','attributes','limit','UpdateOpenchannelApplication','stringify','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s'];(function(_0x384273,_0x56fae7){var _0x43c59f=function(_0x4187df){while(--_0x4187df){_0x384273['push'](_0x384273['shift']());}};_0x43c59f(++_0x56fae7);}(_0x4dcd,0x80));var _0xd4dc=function(_0x3cdce3,_0x3c90c6){_0x3cdce3=_0x3cdce3-0x0;var _0x4d2152=_0x4dcd[_0x3cdce3];return _0x4d2152;};'use strict';var _=require(_0xd4dc('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd4dc('0x1'));var fs=require('fs');var Redis=require(_0xd4dc('0x2'));var db=require(_0xd4dc('0x3'))['db'];var utils=require(_0xd4dc('0x4'));var logger=require(_0xd4dc('0x5'))(_0xd4dc('0x6'));var config=require('../../config/environment');var jayson=require(_0xd4dc('0x7'));var client=jayson[_0xd4dc('0x8')][_0xd4dc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x38beea,_0x5ae651,_0x2165cf){return new BPromise(function(_0x1d14c6,_0x2c579d){return client[_0xd4dc('0xa')](_0x38beea,_0x2165cf)[_0xd4dc('0xb')](function(_0x519b47){logger[_0xd4dc('0xc')](_0xd4dc('0xd'),_0x5ae651,_0xd4dc('0xe'));logger[_0xd4dc('0xf')](_0xd4dc('0x10'),_0x5ae651,_0xd4dc('0xe'),JSON['stringify'](_0x519b47));if(_0x519b47[_0xd4dc('0x11')]){if(_0x519b47[_0xd4dc('0x11')]['code']===0x1f4){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x5ae651,_0x519b47[_0xd4dc('0x11')][_0xd4dc('0x12')]);return _0x2c579d(_0x519b47[_0xd4dc('0x11')]['message']);}logger['error'](_0xd4dc('0xd'),_0x5ae651,_0x519b47[_0xd4dc('0x11')][_0xd4dc('0x12')]);return _0x1d14c6(_0x519b47[_0xd4dc('0x11')][_0xd4dc('0x12')]);}else{logger[_0xd4dc('0xc')](_0xd4dc('0xd'),_0x5ae651,_0xd4dc('0xe'));_0x1d14c6(_0x519b47[_0xd4dc('0x13')][_0xd4dc('0x12')]);}})['catch'](function(_0x314262){logger[_0xd4dc('0x11')](_0xd4dc('0xd'),_0x5ae651,_0x314262);_0x2c579d(_0x314262);});});}exports['UpdateOpenchannelApplication']=function(_0x21e7c0){var _0x3a2a9e=this;return new Promise(function(_0x572450,_0x4c3a68){return db['OpenchannelApplication']['update'](_0x21e7c0[_0xd4dc('0x14')],{'raw':_0x21e7c0[_0xd4dc('0x15')]?_0x21e7c0[_0xd4dc('0x15')][_0xd4dc('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e7c0[_0xd4dc('0x15')]?_0x21e7c0[_0xd4dc('0x15')][_0xd4dc('0x17')]||null:null,'attributes':_0x21e7c0[_0xd4dc('0x15')]?_0x21e7c0['options'][_0xd4dc('0x18')]||null:null,'limit':_0x21e7c0['options']?_0x21e7c0[_0xd4dc('0x15')][_0xd4dc('0x19')]||null:null})[_0xd4dc('0xb')](function(_0x316efc){logger[_0xd4dc('0xc')](_0xd4dc('0x1a'),_0x21e7c0);logger['debug'](_0xd4dc('0x1a'),_0x21e7c0,JSON[_0xd4dc('0x1b')](_0x316efc));_0x572450(_0x316efc);})[_0xd4dc('0x1c')](function(_0x9e79ad){logger[_0xd4dc('0x11')](_0xd4dc('0x1a'),_0x9e79ad[_0xd4dc('0x12')],_0x21e7c0);_0x4c3a68(_0x3a2a9e[_0xd4dc('0x11')](0x1f4,_0x9e79ad['message']));});});};
\ No newline at end of file
index 4a8afb2..db2f138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5851=['/describe','describe','/:id/messages','getMessages','download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','delete','/:id','openchannelinteraction:destroy','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index'];(function(_0x385631,_0x377b9a){var _0x4772c1=function(_0xa41555){while(--_0xa41555){_0x385631['push'](_0x385631['shift']());}};_0x4772c1(++_0x377b9a);}(_0x5851,0x1ad));var _0x1585=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5851[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x1585('0x0'));var path=require(_0x1585('0x1'));var timeout=require(_0x1585('0x2'));var express=require(_0x1585('0x3'));var router=express[_0x1585('0x4')]();var fs_extra=require(_0x1585('0x5'));var auth=require(_0x1585('0x6'));var interaction=require(_0x1585('0x7'));var config=require(_0x1585('0x8'));var controller=require(_0x1585('0x9'));router[_0x1585('0xa')]('/',auth[_0x1585('0xb')](),controller[_0x1585('0xc')]);router[_0x1585('0xa')](_0x1585('0xd'),auth[_0x1585('0xb')](),controller[_0x1585('0xe')]);router[_0x1585('0xa')]('/:id',auth[_0x1585('0xb')](),controller['show']);router[_0x1585('0xa')](_0x1585('0xf'),auth[_0x1585('0xb')](),controller[_0x1585('0x10')]);router[_0x1585('0xa')]('/:id/download',auth[_0x1585('0xb')](),controller[_0x1585('0x11')]);router[_0x1585('0x12')]('/',auth[_0x1585('0xb')](),controller[_0x1585('0x13')]);router[_0x1585('0x12')](_0x1585('0xf'),auth[_0x1585('0xb')](),controller[_0x1585('0x14')]);router[_0x1585('0x12')](_0x1585('0x15'),auth['isAuthenticated'](),interaction[_0x1585('0x16')](_0x1585('0x17'),_0x1585('0x18')),controller[_0x1585('0x19')]);router[_0x1585('0x1a')]('/:id',auth[_0x1585('0xb')](),interaction['tracked'](_0x1585('0x17'),_0x1585('0x1b')),controller[_0x1585('0x1c')]);router[_0x1585('0x1d')](_0x1585('0x1e'),auth[_0x1585('0xb')](),interaction[_0x1585('0x16')](_0x1585('0x17'),_0x1585('0x1f')),controller[_0x1585('0x20')]);router[_0x1585('0x1d')](_0x1585('0x15'),auth[_0x1585('0xb')](),controller['removeTags']);module[_0x1585('0x21')]=router;
\ No newline at end of file
+var _0xee54=['describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','tracked','openchannel','openchannelinteraction:addtags','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','/:id/tags','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe'];(function(_0x31ced5,_0x5d5415){var _0x10d9e5=function(_0x2e51a5){while(--_0x2e51a5){_0x31ced5['push'](_0x31ced5['shift']());}};_0x10d9e5(++_0x5d5415);}(_0xee54,0x121));var _0x4ee5=function(_0x1d265f,_0x455c07){_0x1d265f=_0x1d265f-0x0;var _0x47879f=_0xee54[_0x1d265f];return _0x47879f;};'use strict';var multer=require(_0x4ee5('0x0'));var util=require(_0x4ee5('0x1'));var path=require(_0x4ee5('0x2'));var timeout=require(_0x4ee5('0x3'));var express=require('express');var router=express[_0x4ee5('0x4')]();var fs_extra=require(_0x4ee5('0x5'));var auth=require(_0x4ee5('0x6'));var interaction=require(_0x4ee5('0x7'));var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router[_0x4ee5('0x8')]('/',auth[_0x4ee5('0x9')](),controller['index']);router['get'](_0x4ee5('0xa'),auth[_0x4ee5('0x9')](),controller[_0x4ee5('0xb')]);router[_0x4ee5('0x8')](_0x4ee5('0xc'),auth['isAuthenticated'](),controller[_0x4ee5('0xd')]);router[_0x4ee5('0x8')](_0x4ee5('0xe'),auth['isAuthenticated'](),controller[_0x4ee5('0xf')]);router[_0x4ee5('0x8')](_0x4ee5('0x10'),auth['isAuthenticated'](),controller[_0x4ee5('0x11')]);router['post']('/',auth[_0x4ee5('0x9')](),controller['create']);router[_0x4ee5('0x12')](_0x4ee5('0xe'),auth['isAuthenticated'](),controller[_0x4ee5('0x13')]);router[_0x4ee5('0x12')]('/:id/tags',auth[_0x4ee5('0x9')](),interaction[_0x4ee5('0x14')](_0x4ee5('0x15'),_0x4ee5('0x16')),controller['addTags']);router['put'](_0x4ee5('0xc'),auth[_0x4ee5('0x9')](),interaction[_0x4ee5('0x14')](_0x4ee5('0x15'),_0x4ee5('0x17')),controller[_0x4ee5('0x18')]);router[_0x4ee5('0x19')](_0x4ee5('0xc'),auth[_0x4ee5('0x9')](),interaction[_0x4ee5('0x14')](_0x4ee5('0x15'),_0x4ee5('0x1a')),controller['destroy']);router[_0x4ee5('0x19')](_0x4ee5('0x1b'),auth[_0x4ee5('0x9')](),controller[_0x4ee5('0x1c')]);module[_0x4ee5('0x1d')]=router;
\ No newline at end of file
index 18b381c..3339f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c7=['STRING','out','sequelize','BOOLEAN','DATE'];(function(_0x44f236,_0x4bd601){var _0x28085c=function(_0x31b2c1){while(--_0x31b2c1){_0x44f236['push'](_0x44f236['shift']());}};_0x28085c(++_0x4bd601);}(_0x47c7,0x1ab));var _0x747c=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x47c7[_0x39e283];return _0x7de89f;};'use strict';var Sequelize=require(_0x747c('0x0'));module['exports']={'closed':{'type':Sequelize[_0x747c('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x747c('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x747c('0x3')]},'thirdDisposition':{'type':Sequelize[_0x747c('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x747c('0x2')]},'threadId':{'type':Sequelize[_0x747c('0x3')]},'externalUrl':{'type':Sequelize[_0x747c('0x3')]},'lastMsgAt':{'type':Sequelize[_0x747c('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x747c('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x747c('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9e04=['STRING','ENUM','out','BOOLEAN','sequelize','exports','DATE'];(function(_0x4f4f59,_0x4215c1){var _0x322725=function(_0x4eda03){while(--_0x4eda03){_0x4f4f59['push'](_0x4f4f59['shift']());}};_0x322725(++_0x4215c1);}(_0x9e04,0x9e));var _0x49e0=function(_0x481c0b,_0x49f294){_0x481c0b=_0x481c0b-0x0;var _0x14312a=_0x9e04[_0x481c0b];return _0x14312a;};'use strict';var Sequelize=require(_0x49e0('0x0'));module[_0x49e0('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x49e0('0x2')]},'disposition':{'type':Sequelize[_0x49e0('0x3')]},'secondDisposition':{'type':Sequelize[_0x49e0('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x49e0('0x3')]},'read1stAt':{'type':Sequelize[_0x49e0('0x2')]},'threadId':{'type':Sequelize[_0x49e0('0x3')]},'externalUrl':{'type':Sequelize[_0x49e0('0x3')]},'lastMsgAt':{'type':Sequelize[_0x49e0('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x49e0('0x4')]('in',_0x49e0('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x49e0('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x49e0('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 62d8ffd..38451c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51b2=['groupBy','OpenchannelInteractionId','rows','show','params','includeAll','include','options','create','destroy','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findAll','addTags','setTags','openchannelInteractionTags:save','removeTags','download','files','tmp','server','attachments','join','format','transcript-%d-%s.zip','CmContact','Attachment','Messages','secret','Account','mkdirSync','Openchannel','Owner','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','Public','pipe','createWriteStream','basename','direction','out','System','firstName','lastName','renderFile','root','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','update','then','name','send','Users','map','fullname','TagIds','Tags','forEach','push','catch','index','OpenchannelInteraction','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','field','color','from','tools_tags','select','u.id','ui.OpenchannelInteractionId','user_has_openchannel_interactions','u.id\x20=\x20ui.UserId','openchannel_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','Contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','start','Tag','split','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','$substring','UserId','body','some','isEmpty','OpenchannelAccountId','where','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)'];(function(_0x2bcb75,_0x5789a7){var _0x175345=function(_0x3a7d41){while(--_0x3a7d41){_0x2bcb75['push'](_0x2bcb75['shift']());}};_0x175345(++_0x5789a7);}(_0x51b2,0x128));var _0x251b=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x51b2[_0x1ccdf7];return _0x52a0ae;};'use strict';var emlformat=require(_0x251b('0x0'));var rimraf=require(_0x251b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x251b('0x2'));var rp=require(_0x251b('0x3'));var moment=require(_0x251b('0x4'));var BPromise=require(_0x251b('0x5'));var Mustache=require(_0x251b('0x6'));var util=require(_0x251b('0x7'));var path=require(_0x251b('0x8'));var sox=require(_0x251b('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x251b('0xa'));var _=require(_0x251b('0xb'));var squel=require(_0x251b('0xc'));var crypto=require(_0x251b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x251b('0xe'));var toCsv=require(_0x251b('0xf'));var querystring=require(_0x251b('0x10'));var Papa=require(_0x251b('0x11'));var Redis=require(_0x251b('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x251b('0x13'));var as=require(_0x251b('0x14'));var pdf=require(_0x251b('0x15'));var hardwareService=require(_0x251b('0x16'));var logger=require(_0x251b('0x17'))(_0x251b('0x18'));var utils=require(_0x251b('0x19'));var config=require(_0x251b('0x1a'));var licenseUtil=require(_0x251b('0x1b'));var db=require('../../mysqldb')['db'];config[_0x251b('0x1c')]=_[_0x251b('0x1d')](config[_0x251b('0x1c')],{'host':_0x251b('0x1e'),'port':0x18eb});var socket=require(_0x251b('0x1f'))(new Redis(config[_0x251b('0x1c')]));require(_0x251b('0x20'))[_0x251b('0x21')](socket);function respondWithStatusCode(_0x1e254e,_0xe8eaf5){_0xe8eaf5=_0xe8eaf5||0xcc;return function(_0x3f71e4){if(_0x3f71e4){return _0x1e254e[_0x251b('0x22')](_0xe8eaf5);}return _0x1e254e['status'](_0xe8eaf5)[_0x251b('0x23')]();};}function respondWithResult(_0x12a688,_0x1efb13){_0x1efb13=_0x1efb13||0xc8;return function(_0x11dfec){if(_0x11dfec){return _0x12a688[_0x251b('0x24')](_0x1efb13)[_0x251b('0x25')](_0x11dfec);}};}function respondWithFilteredResult(_0x57f6b5,_0x512ef1){return function(_0x2a49ae){if(_0x2a49ae){var _0x5114c5=typeof _0x512ef1[_0x251b('0x26')]===_0x251b('0x27')&&typeof _0x512ef1[_0x251b('0x28')]===_0x251b('0x27');var _0x20cfdb=_0x2a49ae[_0x251b('0x29')];var _0x42527c=_0x5114c5?0x0:_0x512ef1[_0x251b('0x26')];var _0x2eeea7=_0x5114c5?_0x2a49ae[_0x251b('0x29')]:_0x512ef1[_0x251b('0x26')]+_0x512ef1[_0x251b('0x28')];var _0xd53713;if(_0x2eeea7>=_0x20cfdb){_0x2eeea7=_0x20cfdb;_0xd53713=0xc8;}else{_0xd53713=0xce;}_0x57f6b5[_0x251b('0x24')](_0xd53713);return _0x57f6b5['set']('Content-Range',_0x42527c+'-'+_0x2eeea7+'/'+_0x20cfdb)['json'](_0x2a49ae);}return null;};}function patchUpdates(_0x2f1915){return function(_0x31f42e){try{jsonpatch[_0x251b('0x2a')](_0x31f42e,_0x2f1915,!![]);}catch(_0x520531){return BPromise[_0x251b('0x2b')](_0x520531);}return _0x31f42e[_0x251b('0x2c')]();};}function saveUpdates(_0x3781ee,_0x6550b2){return function(_0x5b2788){if(_0x5b2788){return _0x5b2788[_0x251b('0x2d')](_0x3781ee)['then'](function(_0x16bb5b){return _0x16bb5b;});}return null;};}function removeEntity(_0x21a820,_0xab1972){return function(_0x43d442){if(_0x43d442){return _0x43d442['destroy']()[_0x251b('0x2e')](function(){_0x21a820['status'](0xcc)[_0x251b('0x23')]();});}};}function handleEntityNotFound(_0x1c2711,_0x313dfb){return function(_0x43f57a){if(!_0x43f57a){_0x1c2711[_0x251b('0x22')](0x194);}return _0x43f57a;};}function handleError(_0x59c787,_0xe44507){_0xe44507=_0xe44507||0x1f4;return function(_0x2033d5){logger['error'](_0x2033d5['stack']);if(_0x2033d5['name']){delete _0x2033d5[_0x251b('0x2f')];}_0x59c787[_0x251b('0x24')](_0xe44507)[_0x251b('0x30')](_0x2033d5);};}function getInteractionUsers(_0x1b3a1b,_0x3520f4){return new BPromise(function(_0x2a7107,_0xcb08b7){try{if(_0x3520f4[_0x1b3a1b['id']]){_0x1b3a1b[_0x251b('0x31')]=_[_0x251b('0x32')](_0x3520f4[_0x1b3a1b['id']],function(_0x5eb80d){return{'id':_0x5eb80d['id'],'fullname':_0x5eb80d[_0x251b('0x33')]};});}}catch(_0x2959dc){_0xcb08b7(_0x2959dc);}_0x2a7107(_0x1b3a1b);});}function getInteractionTags(_0x25cb1e,_0x43d0da){return new BPromise(function(_0x3b1fed,_0x8cf94e){try{if(_0x25cb1e[_0x251b('0x34')]){_0x25cb1e[_0x251b('0x35')]=[];_0x25cb1e[_0x251b('0x34')]['split'](',')[_0x251b('0x36')](function(_0x18cb73){_0x25cb1e[_0x251b('0x35')][_0x251b('0x37')](_0x43d0da[_0x18cb73]);});}delete _0x25cb1e[_0x251b('0x34')];}catch(_0x24f4e7){_0x8cf94e(_0x24f4e7);}_0x3b1fed(_0x25cb1e);});}function updateOpenchannelInteraction(_0x478b69,_0x45a17b,_0x17b817){return new BPromise(function(_0x253d12,_0x10b8c5){return getInteractionUsers(_0x478b69,_0x17b817)[_0x251b('0x2e')](function(_0x21b821){return getInteractionTags(_0x21b821,_0x45a17b);})[_0x251b('0x2e')](function(_0x3ee39b){_0x253d12(_0x3ee39b);})[_0x251b('0x38')](function(_0x122e39){_0x10b8c5(_0x122e39);});});}exports[_0x251b('0x39')]=function(_0x1b4266,_0x11fe93){var _0x245bc1={},_0xaacf5d={},_0x5385d2={'count':0x0,'rows':[]};var _0x8c49e1=_[_0x251b('0x32')](db[_0x251b('0x3a')][_0x251b('0x3b')],function(_0x5f58dd){return{'name':_0x5f58dd[_0x251b('0x3c')],'type':_0x5f58dd['type'][_0x251b('0x3d')]};});_0xaacf5d[_0x251b('0x3e')]=_[_0x251b('0x32')](_0x8c49e1,_0x251b('0x2f'));_0xaacf5d['query']=_[_0x251b('0x3f')](_0x1b4266[_0x251b('0x40')]);_0xaacf5d[_0x251b('0x41')]=_[_0x251b('0x42')](_0xaacf5d[_0x251b('0x3e')],_0xaacf5d[_0x251b('0x40')]);_0x245bc1[_0x251b('0x43')]=_[_0x251b('0x42')](_0xaacf5d[_0x251b('0x3e')],qs['fields'](_0x1b4266['query'][_0x251b('0x44')]));_0x245bc1[_0x251b('0x43')]=_0x245bc1[_0x251b('0x43')][_0x251b('0x45')]?_0x245bc1[_0x251b('0x43')]:_0xaacf5d['model'];if(!_0x1b4266[_0x251b('0x40')][_0x251b('0x46')](_0x251b('0x47'))){_0x245bc1[_0x251b('0x28')]=qs[_0x251b('0x28')](_0x1b4266[_0x251b('0x40')]['limit']);_0x245bc1[_0x251b('0x26')]=qs[_0x251b('0x26')](_0x1b4266[_0x251b('0x40')][_0x251b('0x26')]);}_0x245bc1[_0x251b('0x48')]=qs[_0x251b('0x49')](_0x1b4266[_0x251b('0x40')]['sort']);_0x245bc1['where']=qs[_0x251b('0x41')](_[_0x251b('0x4a')](_0x1b4266['query'],_0xaacf5d[_0x251b('0x41')]),_0x8c49e1);var _0x496a40=[];var _0x379b32=squel['select']()[_0x251b('0x4b')]('id')[_0x251b('0x4b')](_0x251b('0x2f'))[_0x251b('0x4b')](_0x251b('0x4c'))[_0x251b('0x4d')](_0x251b('0x4e'));var _0x413671=squel[_0x251b('0x4f')]()[_0x251b('0x4b')](_0x251b('0x50'))[_0x251b('0x4b')]('u.fullname')[_0x251b('0x4b')](_0x251b('0x51'))[_0x251b('0x4d')](_0x251b('0x52'),'ui')['left_join']('users','u',_0x251b('0x53'));var _0x20f8ce=squel['select']()[_0x251b('0x4d')](_0x251b('0x54'),'i')[_0x251b('0x55')](_0x251b('0x56'),'c',_0x251b('0x57'))[_0x251b('0x55')](_0x251b('0x58'),'o',_0x251b('0x59'))[_0x251b('0x55')]('openchannel_accounts','a',_0x251b('0x5a'))[_0x251b('0x55')](_0x251b('0x5b'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x251b('0x55')]('openchannel_interaction_has_tags','it','it.OpenchannelInteractionId\x20=\x20i.id')['left_join'](_0x251b('0x4e'),'t',_0x251b('0x5c'));var _0x4b2dd5=squel[_0x251b('0x5d')]();var _0x9f40e9=[];var _0x58f271=squel['expr']();var _0x318ad4;if(_0x1b4266[_0x251b('0x40')][_0x251b('0x5e')]){_0x318ad4=as['parseSearch'](_0x1b4266[_0x251b('0x40')][_0x251b('0x5e')]);var _0x4cca6a=_0x318ad4[_0x251b('0x5f')];for(var _0x5e5683=0x0;_0x5e5683<_0x318ad4[_0x251b('0x60')][_0x251b('0x45')];_0x5e5683++){var _0x32c728=_0x318ad4[_0x251b('0x60')][_0x5e5683];var _0x52fb47='i';var _0x50bdcb=_[_0x251b('0x61')](_0x8c49e1,[_0x251b('0x2f'),_0x32c728[_0x251b('0x4b')]]);if(!_0x50bdcb){switch(_0x32c728[_0x251b('0x4b')]){case _0x251b('0x62'):if(_0x32c728[_0x251b('0x63')]==0x1){_0x20f8ce[_0x251b('0x64')]('`'+_0x32c728[_0x251b('0x4b')]+_0x251b('0x65'));}else{_0x20f8ce[_0x251b('0x64')]('`'+_0x32c728[_0x251b('0x4b')]+'`\x20>\x200');}break;case _0x251b('0x66'):if(_0x32c728['operator']==='$substring'){if(_0x32c728[_0x251b('0x63')]['split']('\x20')[_0x251b('0x45')]>0x1){_0x4b2dd5[_0x4cca6a](_0x251b('0x67'),qs[_0x251b('0x68')](_0x32c728['value']),null);}else{var _0x202d24='%'+_0x32c728['value']+'%';_0x4b2dd5[_0x4cca6a](_0x251b('0x69'),_0x202d24,_0x202d24,_0x202d24);}}else{_0x50bdcb=_[_0x251b('0x61')](_0x8c49e1,[_0x251b('0x2f'),_0x251b('0x6a')]);_0x32c728[_0x251b('0x4b')]=_0x251b('0x6a');_0x237dcb=as[_0x251b('0x6b')](_0x52fb47,_0x50bdcb[_0x251b('0x6c')],_0x32c728);_0x4b2dd5[_0x4cca6a](_0x237dcb[_0x251b('0x6d')],_0x237dcb['value'][_0x251b('0x6e')],_0x237dcb[_0x251b('0x63')][_0x251b('0x23')]);}break;case _0x251b('0x6f'):var _0x2383f6=_0x32c728['value'][_0x251b('0x70')](',')['map'](function(_0x3fde4f){return Number(_0x3fde4f);});_0x2383f6[_0x251b('0x36')](function(_0x3d0433){_0x58f271['or'](_0x251b('0x71'),'%,'+_0x3d0433+',%');});_0x9f40e9=_['union'](_0x9f40e9,_0x2383f6);break;case _0x251b('0x72'):if(_0x32c728['operator']===_0x251b('0x73')){_0x4b2dd5[_0x4cca6a]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x32c728[_0x251b('0x63')]+'%',null);}else{_0x50bdcb=_['find'](_0x8c49e1,[_0x251b('0x2f'),_0x251b('0x74')]);_0x32c728[_0x251b('0x4b')]=_0x251b('0x74');_0x237dcb=as['buildExpression'](_0x52fb47,_0x50bdcb[_0x251b('0x6c')],_0x32c728);_0x4b2dd5[_0x4cca6a](_0x237dcb[_0x251b('0x6d')],_0x237dcb[_0x251b('0x63')][_0x251b('0x6e')],_0x237dcb[_0x251b('0x63')]['end']);}break;case _0x251b('0x75'):_0x237dcb=as[_0x251b('0x6b')]('me',null,_0x32c728);_0x4b2dd5[_0x4cca6a](_0x237dcb[_0x251b('0x6d')],_0x237dcb[_0x251b('0x63')]['start'],_0x237dcb[_0x251b('0x63')][_0x251b('0x23')]);break;}}else{var _0x237dcb=as[_0x251b('0x6b')](_0x52fb47,_0x50bdcb[_0x251b('0x6c')],_0x32c728);_0x4b2dd5[_0x4cca6a](_0x237dcb[_0x251b('0x6d')],_0x237dcb[_0x251b('0x63')][_0x251b('0x6e')],_0x237dcb['value']['end']);}}}else{var _0x4a3f4c=_(_0x1b4266[_0x251b('0x40')])[_0x251b('0x3f')]()['map'](function(_0x577d3c){return _[_0x251b('0x76')](_0x8c49e1,['name',_0x577d3c])?_0x577d3c:undefined;})['compact']()[_0x251b('0x63')]();if(!_[_0x251b('0x77')](_0x4a3f4c)){_0x4a3f4c['forEach'](function(_0x32e150){if(_0x32e150===_0x251b('0x78')){_0x20f8ce[_0x251b('0x79')](_0x251b('0x7a'),[][_0x251b('0x7b')](_0x1b4266['query'][_0x32e150]));}else if(_0x32e150===_0x251b('0x7c')){var _0x5a149b=JSON[_0x251b('0x7d')](_0x1b4266['query'][_0x32e150])[_0x251b('0x7e')];var _0x10401d=JSON['parse'](_0x1b4266[_0x251b('0x40')][_0x32e150])[_0x251b('0x7f')];_0x20f8ce['where'](_0x251b('0x80'),_0x5a149b,_0x10401d);}else{if(_0x1b4266[_0x251b('0x40')][_0x32e150]===_0x251b('0x81')){_0x20f8ce[_0x251b('0x79')]('i.'+_0x32e150+_0x251b('0x82'));}else{_0x20f8ce[_0x251b('0x79')]('i.'+_0x32e150+_0x251b('0x83'),_0x1b4266[_0x251b('0x40')][_0x32e150]);}}});}if(_0x1b4266['query'][_0x251b('0x84')]){if(_0x1b4266[_0x251b('0x40')][_0x251b('0x84')]==0x1){_0x20f8ce[_0x251b('0x64')](_0x251b('0x85'));}else{_0x20f8ce[_0x251b('0x64')]('`unreadMessages`\x20>\x200');}}if(_0x1b4266[_0x251b('0x40')]['tag']){_0x9f40e9=_['isArray'](_0x1b4266[_0x251b('0x40')][_0x251b('0x86')])?_0x1b4266['query'][_0x251b('0x86')]:new Array(_0x1b4266[_0x251b('0x40')][_0x251b('0x86')]);_0x9f40e9[_0x251b('0x36')](function(_0x2ac76f){_0x58f271['or'](_0x251b('0x71'),'%,'+_0x2ac76f+',%');});}if(_0x1b4266[_0x251b('0x40')][_0x251b('0x87')]){var _0x1a6ed6=_0x1b4266[_0x251b('0x40')][_0x251b('0x87')][_0x251b('0x88')]('\x5c','\x5c\x5c')[_0x251b('0x88')](/'/g,'\x27\x27');if(qs[_0x251b('0x89')](_0x1a6ed6)){_0x4b2dd5['or'](_0x251b('0x8a'),_0x1a6ed6+'%');}else{_0x4b2dd5['or'](_0x251b('0x8b'),qs[_0x251b('0x68')](_0x1a6ed6))['or'](_0x251b('0x8c'),_0x1a6ed6+'%')['or'](_0x251b('0x8d'),_0x1a6ed6+'%');}}}_0x20f8ce[_0x251b('0x79')](_0x4b2dd5);_0x20f8ce[_0x251b('0x8e')]('i.id');var _0x528f2a={'type':db[_0x251b('0x8f')][_0x251b('0x90')]['SELECT'],'raw':!![]};var _0x4bee3f=_0x20f8ce['clone']();_0x4bee3f['field'](_0x251b('0x91'));_0x4bee3f['field'](_0x251b('0x92'),_0x251b('0x62'));if(_0x245bc1['order']){_0x245bc1[_0x251b('0x48')][_0x251b('0x36')](function(_0x4a31c2){var _0x22476c=_0x4a31c2[0x0]===_0x251b('0x93')?_0x4a31c2[0x0]:'i.'+_0x4a31c2[0x0];_0x20f8ce[_0x251b('0x48')](_0x22476c,_0x4a31c2[0x1]===_0x251b('0x94')?![]:!![]);});}if(!_[_0x251b('0x77')](_0x9f40e9)){_0x20f8ce[_0x251b('0x64')](_0x58f271);_0x4bee3f[_0x251b('0x79')](_0x251b('0x95'),_0x9f40e9);}BPromise['resolve']()[_0x251b('0x2e')](function(){if(!_0x318ad4){if(_0x1b4266[_0x251b('0x40')]['OpenchannelAccountId'])return;_0x4bee3f[_0x251b('0x79')](_0x251b('0x96'));_0x20f8ce[_0x251b('0x79')](_0x251b('0x96'));return;}if(_0x1b4266[_0x251b('0x97')][_0x251b('0x98')]!=='agent')return;return _0x1b4266[_0x251b('0x97')][_0x251b('0x99')]({'attributes':['id'],'raw':!![]})[_0x251b('0x2e')](function(_0x7f19c3){if(_[_0x251b('0x77')](_0x7f19c3)){_0x4bee3f[_0x251b('0x79')](_0x251b('0x9a'));_0x20f8ce[_0x251b('0x79')](_0x251b('0x9a'));}else{_0x4bee3f[_0x251b('0x79')](_0x251b('0x7a'),_[_0x251b('0x32')](_0x7f19c3,'id'));_0x20f8ce[_0x251b('0x79')](_0x251b('0x7a'),_[_0x251b('0x32')](_0x7f19c3,'id'));}});})[_0x251b('0x2e')](function(){if(_0x1b4266[_0x251b('0x97')][_0x251b('0x98')]===_0x251b('0x9b')&&!_0x318ad4&&!_0x1b4266['query'][_0x251b('0x78')])return[];return db[_0x251b('0x9c')][_0x251b('0x40')](_0x4bee3f['toString'](),_0x528f2a);})['then'](function(_0x51d303){_0x5385d2[_0x251b('0x29')]=_0x51d303[_0x251b('0x45')];if(_0x5385d2['count']===0x0)return[];return db[_0x251b('0x9c')]['query'](_0x379b32[_0x251b('0x9d')](),_0x528f2a)['then'](function(_0x2b8e06){_0x496a40=_[_0x251b('0x9e')](_0x2b8e06,'id');_0x528f2a=_[_0x251b('0x9f')](_0x528f2a,{'model':db['OpenchannelInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1b4266['query']['fields']){_0x245bc1[_0x251b('0x43')][_0x251b('0x36')](function(_0x4778ea){_0x20f8ce[_0x251b('0x4b')]('i.'+_0x4778ea);});}else{_0x20f8ce[_0x251b('0x4b')](_0x251b('0x92'),'unreadMessages');_0x20f8ce['field'](_0x251b('0xa0'),_0x251b('0xa1'));_0x20f8ce[_0x251b('0x4b')]('a.mandatoryDisposition',_0x251b('0xa2'));_0x20f8ce[_0x251b('0x4b')](_0x251b('0xa3'),_0x251b('0x93'));_0x20f8ce[_0x251b('0x4b')](_0x251b('0xa4'));_0x20f8ce[_0x251b('0x4b')]('c.firstName',_0x251b('0xa5'));_0x20f8ce['field'](_0x251b('0xa6'),_0x251b('0xa7'));_0x20f8ce[_0x251b('0x4b')]('c.email',_0x251b('0xa8'));_0x20f8ce[_0x251b('0x4b')](_0x251b('0xa9'),_0x251b('0xaa'));_0x20f8ce[_0x251b('0x4b')](_0x251b('0xab'),_0x251b('0xac'));_0x20f8ce[_0x251b('0x4b')]('c.fax',_0x251b('0xad'));_0x20f8ce[_0x251b('0x4b')](_0x251b('0xae'),_0x251b('0xaf'));_0x20f8ce[_0x251b('0x4b')](_0x251b('0xb0'),'Owner.internal');_0x20f8ce['field'](_0x251b('0xb1'),_0x251b('0x34'));}if(_0x245bc1[_0x251b('0x28')])_0x20f8ce[_0x251b('0x28')](_0x245bc1['limit']);if(_0x245bc1[_0x251b('0x26')])_0x20f8ce[_0x251b('0x26')](_0x245bc1[_0x251b('0x26')]);return db[_0x251b('0x9c')][_0x251b('0x40')](_0x20f8ce[_0x251b('0x9d')](),_0x528f2a);})[_0x251b('0x2e')](function(_0x531688){if(_0x531688[_0x251b('0x45')]>0x0)_0x413671[_0x251b('0x79')]('ui.OpenchannelInteractionId\x20IN\x20?',_['map'](_0x531688,'id'));return db[_0x251b('0x9c')]['query'](_0x413671[_0x251b('0x9d')](),_0x528f2a)[_0x251b('0x2e')](function(_0xc4c95b){var _0x385212=_[_0x251b('0xb2')](_0xc4c95b,_0x251b('0xb3'));var _0x5e11e1=[];_0x531688[_0x251b('0x36')](function(_0x48ac77){_0x5e11e1[_0x251b('0x37')](updateOpenchannelInteraction(_0x48ac77,_0x496a40,_0x385212));});return BPromise['all'](_0x5e11e1);});});})[_0x251b('0x2e')](function(_0x1e7f35){_0x5385d2[_0x251b('0xb4')]=_0x1e7f35;return _0x5385d2;})[_0x251b('0x2e')](respondWithFilteredResult(_0x11fe93,_0x245bc1))[_0x251b('0x38')](handleError(_0x11fe93,null));};exports[_0x251b('0xb5')]=function(_0xd0a4bd,_0x28de00){var _0x3161fc={};if(_0xd0a4bd[_0x251b('0x40')][_0x251b('0x6c')]&&_0xd0a4bd[_0x251b('0x40')][_0x251b('0x6c')]===_0x251b('0x4d')){_0x3161fc[_0x251b('0x4d')]=_0xd0a4bd[_0x251b('0xb6')]['id'];}else{_0x3161fc['id']=_0xd0a4bd[_0x251b('0xb6')]['id'];}var _0xc6e54f={'raw':![],'where':_0x3161fc},_0x42e205={};_0x42e205[_0x251b('0x3e')]=_[_0x251b('0x3f')](db[_0x251b('0x3a')][_0x251b('0x3b')]);_0x42e205[_0x251b('0x40')]=_['keys'](_0xd0a4bd['query']);_0x42e205[_0x251b('0x41')]=_[_0x251b('0x42')](_0x42e205[_0x251b('0x3e')],_0x42e205[_0x251b('0x40')]);_0xc6e54f[_0x251b('0x43')]=_['intersection'](_0x42e205[_0x251b('0x3e')],qs['fields'](_0xd0a4bd['query'][_0x251b('0x44')]));_0xc6e54f['attributes']=_0xc6e54f[_0x251b('0x43')][_0x251b('0x45')]?_0xc6e54f[_0x251b('0x43')]:_0x42e205['model'];if(_0xd0a4bd[_0x251b('0x40')][_0x251b('0xb7')]){_0xc6e54f[_0x251b('0xb8')]=[{'all':!![]}];}_0xc6e54f=_[_0x251b('0x9f')]({},_0xc6e54f,_0xd0a4bd[_0x251b('0xb9')]);return db[_0x251b('0x3a')][_0x251b('0x61')](_0xc6e54f)[_0x251b('0x2e')](handleEntityNotFound(_0x28de00,null))[_0x251b('0x2e')](respondWithResult(_0x28de00,null))['catch'](handleError(_0x28de00,null));};exports['create']=function(_0x4d8969,_0x3cab09){return db[_0x251b('0x3a')][_0x251b('0xba')](_0x4d8969[_0x251b('0x75')],{})['then'](respondWithResult(_0x3cab09,0xc9))['catch'](handleError(_0x3cab09,null));};exports[_0x251b('0x2d')]=function(_0x9fb32e,_0x43164d){if(_0x9fb32e['body']['id']){delete _0x9fb32e['body']['id'];}return db[_0x251b('0x3a')][_0x251b('0x61')]({'where':{'id':_0x9fb32e[_0x251b('0xb6')]['id']}})[_0x251b('0x2e')](handleEntityNotFound(_0x43164d,null))[_0x251b('0x2e')](saveUpdates(_0x9fb32e[_0x251b('0x75')],null))[_0x251b('0x2e')](respondWithResult(_0x43164d,null))[_0x251b('0x38')](handleError(_0x43164d,null));};exports[_0x251b('0xbb')]=function(_0x5b2ffc,_0x3551f5){return db[_0x251b('0x3a')][_0x251b('0x61')]({'where':{'id':_0x5b2ffc[_0x251b('0xb6')]['id']}})[_0x251b('0x2e')](handleEntityNotFound(_0x3551f5,null))[_0x251b('0x2e')](removeEntity(_0x3551f5,null))['catch'](handleError(_0x3551f5,null));};exports[_0x251b('0xbc')]=function(_0x2335c9,_0x4d7cbb){return db['OpenchannelInteraction'][_0x251b('0xbc')]()[_0x251b('0x2e')](respondWithResult(_0x4d7cbb,null))[_0x251b('0x38')](handleError(_0x4d7cbb,null));};exports[_0x251b('0xbd')]=function(_0x238b12,_0x57f65b,_0x4480f1){return db[_0x251b('0xbe')][_0x251b('0x61')]({'where':{'id':_0x238b12[_0x251b('0xb6')]['id']}})[_0x251b('0x2e')](handleEntityNotFound(_0x57f65b,null))[_0x251b('0x2e')](function(_0x571813){if(_0x571813){return _0x571813['addMessage'](_0x238b12['body'][_0x251b('0xbf')],_[_0x251b('0xc0')](_0x238b12[_0x251b('0x75')],[_0x251b('0xbf'),'id'])||{});}})['then'](respondWithResult(_0x57f65b,null))[_0x251b('0x38')](handleError(_0x57f65b,null));};exports[_0x251b('0xc1')]=function(_0x535631,_0x29bb85,_0x53bccc){var _0x1f161c={'raw':![],'where':{}};var _0x177b94={};var _0x108615={'count':0x0,'rows':[]};return db[_0x251b('0x3a')]['findOne']({'where':{'id':_0x535631[_0x251b('0xb6')]['id']}})['then'](handleEntityNotFound(_0x29bb85,null))[_0x251b('0x2e')](function(_0x45fba9){if(_0x45fba9){_0x177b94['model']=_[_0x251b('0x3f')](db[_0x251b('0xbe')][_0x251b('0x3b')]);_0x177b94[_0x251b('0x40')]=_[_0x251b('0x3f')](_0x535631['query']);_0x177b94[_0x251b('0x41')]=_[_0x251b('0x42')](_0x177b94[_0x251b('0x3e')],_0x177b94[_0x251b('0x40')]);_0x1f161c['attributes']=_['intersection'](_0x177b94['model'],qs[_0x251b('0x44')](_0x535631['query'][_0x251b('0x44')]));_0x1f161c[_0x251b('0x43')]=_0x1f161c['attributes']['length']?_0x1f161c[_0x251b('0x43')]:_0x177b94['model'];if(!_0x535631[_0x251b('0x40')]['hasOwnProperty'](_0x251b('0x47'))){_0x1f161c[_0x251b('0x28')]=qs[_0x251b('0x28')](_0x535631[_0x251b('0x40')]['limit']);_0x1f161c['offset']=qs['offset'](_0x535631[_0x251b('0x40')][_0x251b('0x26')]);}_0x1f161c[_0x251b('0x48')]=qs['sort'](_0x535631[_0x251b('0x40')][_0x251b('0x49')]);_0x1f161c[_0x251b('0x79')]=qs[_0x251b('0x41')](_[_0x251b('0x4a')](_0x535631[_0x251b('0x40')],_0x177b94[_0x251b('0x41')]));_0x1f161c['where'][_0x251b('0xb3')]=_0x45fba9['id'];if(_0x535631[_0x251b('0x40')][_0x251b('0x87')]){_0x1f161c[_0x251b('0x79')]=_[_0x251b('0x9f')](_0x1f161c['where'],{'$or':_['map'](_0x1f161c[_0x251b('0x43')],function(_0x56bf96){var _0x43a395={};_0x43a395[_0x56bf96]={'$like':'%'+_0x535631[_0x251b('0x40')][_0x251b('0x87')]+'%'};return _0x43a395;})});}if(_0x535631[_0x251b('0x40')][_0x251b('0x7e')]){var _0x4d5153=_0x535631['query'][_0x251b('0x7e')][_0x251b('0x70')](',');var _0x45b377={};_0x45b377[_0x4d5153[0x0]]={'$gte':moment(_0x4d5153[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x1f161c[_0x251b('0x79')]=_[_0x251b('0x9f')](_0x1f161c[_0x251b('0x79')],_0x45b377);}_0x1f161c=_[_0x251b('0x9f')]({},_0x1f161c,_0x535631[_0x251b('0xb9')]);return db[_0x251b('0xbe')][_0x251b('0x29')]({'where':_0x1f161c[_0x251b('0x79')]})[_0x251b('0x2e')](function(_0x2c8c92){_0x108615['count']=_0x2c8c92;if(_0x535631[_0x251b('0x40')][_0x251b('0xb7')]){_0x1f161c[_0x251b('0xb8')]=[{'all':!![]}];}return db[_0x251b('0xbe')][_0x251b('0xc2')](_0x1f161c);})[_0x251b('0x2e')](function(_0x3e6ac7){_0x108615[_0x251b('0xb4')]=_0x3e6ac7;return _0x108615;});}})['then'](respondWithFilteredResult(_0x29bb85,_0x1f161c))[_0x251b('0x38')](handleError(_0x29bb85,null));};exports[_0x251b('0xc3')]=function(_0x338bc9,_0x5e7f66,_0x2d8f6a){return db['OpenchannelInteraction'][_0x251b('0x61')]({'where':{'id':_0x338bc9[_0x251b('0xb6')]['id']}})['then'](handleEntityNotFound(_0x5e7f66,null))[_0x251b('0x2e')](function(_0x3f6dfd){if(_0x3f6dfd){return _0x3f6dfd[_0x251b('0xc4')](_0x338bc9[_0x251b('0x75')][_0x251b('0xbf')],_['omit'](_0x338bc9[_0x251b('0x75')],[_0x251b('0xbf'),'id'])||{})['spread'](function(){return db[_0x251b('0x6f')][_0x251b('0xc2')]({'attributes':['id','name',_0x251b('0x4c')],'where':{'id':_0x338bc9[_0x251b('0x75')][_0x251b('0xbf')]}});})[_0x251b('0x2e')](function(_0x142c8f){socket['emit'](_0x251b('0xc5'),{'id':Number(_0x338bc9['params']['id']),'tags':_0x142c8f||[]});return{'id':Number(_0x338bc9[_0x251b('0xb6')]['id']),'tags':_0x142c8f||[]};});}})[_0x251b('0x2e')](respondWithResult(_0x5e7f66,null))[_0x251b('0x38')](handleError(_0x5e7f66,null));};exports[_0x251b('0xc6')]=function(_0x362716,_0x5f5deb,_0x4d988b){return db[_0x251b('0x3a')][_0x251b('0x61')]({'where':{'id':_0x362716['params']['id']}})[_0x251b('0x2e')](handleEntityNotFound(_0x5f5deb,null))[_0x251b('0x2e')](function(_0x30d07f){if(_0x30d07f){return _0x30d07f[_0x251b('0xc6')](_0x362716[_0x251b('0x40')][_0x251b('0xbf')]);}})[_0x251b('0x2e')](respondWithStatusCode(_0x5f5deb,null))[_0x251b('0x38')](handleError(_0x5f5deb,null));};exports[_0x251b('0xc7')]=function(_0x17c7f2,_0x139e26){var _0x5c150e=moment()['unix']()[_0x251b('0x9d')]();var _0x5b7a1f=path['join'](config['root'],'server',_0x251b('0xc8'),_0x251b('0xc9'));var _0x20b211=path['join'](config['root'],_0x251b('0xca'),'files',_0x251b('0xcb'));var _0xe9b24=path[_0x251b('0xcc')](_0x5b7a1f,_0x5c150e);var _0x5b708b=util[_0x251b('0xcd')](_0x251b('0xce'),_0x17c7f2[_0x251b('0xb6')]['id'],_0x5c150e);var _0x1029a4=path['join'](_0x5b7a1f,_0x5b708b);var _0x74842c=[];_0x74842c[_0x251b('0x37')]({'model':db[_0x251b('0x72')],'as':_0x251b('0x72'),'attributes':['id','fullname'],'raw':!![]});_0x74842c['push']({'model':db[_0x251b('0xcf')],'as':_0x251b('0x66'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x17c7f2[_0x251b('0x40')][_0x251b('0xcb')]){_0x74842c[_0x251b('0x37')]({'model':db[_0x251b('0xd0')],'as':_0x251b('0xd0'),'raw':!![]});}var _0x1f0452=[{'model':db[_0x251b('0xbe')],'as':_0x251b('0xd1'),'attributes':['id',_0x251b('0x75'),_0x251b('0x7c'),'direction',_0x251b('0xd2'),'read'],'include':_0x74842c}];_0x1f0452[_0x251b('0x37')]({'model':db['OpenchannelAccount'],'as':_0x251b('0xd3'),'attributes':['id',_0x251b('0x2f')]});_0x1f0452[_0x251b('0x37')]({'model':db['User'],'as':'Owner','attributes':['id',_0x251b('0x33')]});return db[_0x251b('0x3a')][_0x251b('0x61')]({'where':{'id':_0x17c7f2[_0x251b('0xb6')]['id']},'include':_0x1f0452})[_0x251b('0x2e')](handleEntityNotFound(_0x139e26,null))['then'](function(_0xcc9e0b){if(_0xcc9e0b){var _0xe5e320=_0xcc9e0b['get']({'plain':!![]});fs[_0x251b('0xd4')](_0xe9b24);var _0x5cde86={'channel':_0x251b('0xd5'),'account':_0xe5e320[_0x251b('0xd3')][_0x251b('0x2f')],'agent':_0xe5e320['Owner']?_0xe5e320[_0x251b('0xd6')][_0x251b('0x33')]:'N.A.','createdAt':moment(_0xe5e320['createdAt'])[_0x251b('0xcd')](_0x251b('0xd7'))[_0x251b('0x9d')](),'closedAt':_0xe5e320[_0x251b('0xd8')]?moment(_0xe5e320[_0x251b('0xd9')])[_0x251b('0xcd')](_0x251b('0xd7'))['toString']():'','disposition':_0xe5e320[_0x251b('0xda')],'visibility':_0xe5e320['threadId']?_0x251b('0xdb'):'Private','messages':_(_0xe5e320[_0x251b('0xd1')])[_0x251b('0x87')]({'secret':![]})[_0x251b('0x32')](function(_0x2bea0c){if(_0x2bea0c['Attachment']){var _0x4180ef=path[_0x251b('0xcc')](_0x20b211,_0x2bea0c[_0x251b('0xd0')]['basename']);if(fs['existsSync'](_0x4180ef)){fs['createReadStream'](_0x4180ef)[_0x251b('0xdc')](fs[_0x251b('0xdd')](path[_0x251b('0xcc')](_0xe9b24,_0x2bea0c[_0x251b('0xd0')][_0x251b('0xde')])));}}return{'date':moment(_0x2bea0c[_0x251b('0x7c')])['format'](_0x251b('0xd7'))['toString'](),'sender':_0x2bea0c[_0x251b('0xdf')]===_0x251b('0xe0')?_0x2bea0c[_0x251b('0x72')]?_0x2bea0c[_0x251b('0x72')]['fullname']:_0x251b('0xe1'):_0x2bea0c[_0x251b('0x66')][_0x251b('0xe2')]+(_0x2bea0c[_0x251b('0x66')][_0x251b('0xe3')]?'\x20'+_0x2bea0c[_0x251b('0x66')][_0x251b('0xe3')]:''),'body':_0x2bea0c[_0x251b('0xd0')]?_0x2bea0c[_0x251b('0xd0')][_0x251b('0xde')]:_0x2bea0c[_0x251b('0x75')],'direction':_0x2bea0c[_0x251b('0xdf')]==='out'?'A':'C','secret':_0x2bea0c['secret'],'read':_0x2bea0c[_0x251b('0x84')],'attachment':_0x2bea0c['Attachment']};})['value']()};return ejs[_0x251b('0xe4')](path[_0x251b('0xcc')](config[_0x251b('0xe5')],_0x251b('0xca'),_0x251b('0xe6'),_0x251b('0xe7')),{'interaction':_0x5cde86})[_0x251b('0x2e')](function(_0x232364){var _0x255667=path[_0x251b('0xcc')](_0xe9b24,'transcript-'+_0xe5e320['id']+'-'+_0x5c150e+_0x251b('0xe8'));var _0x3eea76={'path':_0x255667,'channel':_0x251b('0xd5'),'interactionId':_0xe5e320['id']};return pdf[_0x251b('0xe9')](_0x232364,_0x3eea76);})['then'](function(){return new BPromise(function(_0x299f7d,_0x458a9b){zipdir(_0xe9b24,{'saveTo':_0x1029a4},function(_0xcde7f5,_0x27727c){if(_0xcde7f5)return _0x458a9b(_0xcde7f5);return _0x299f7d(_0x27727c);});})['then'](function(){return new BPromise(function(_0x51a6a2,_0x33dc81){rimraf(_0xe9b24,function(_0x16cf09){if(_0x16cf09)_0x33dc81(_0x16cf09);return _0x51a6a2();});});})[_0x251b('0x2e')](function(){return _0x139e26['download'](_0x1029a4,_0x5b708b,function(_0x2ccf7b){if(_0x2ccf7b){console[_0x251b('0xea')](_0x251b('0xeb'),_0x2ccf7b);}else{fs[_0x251b('0xec')](_0x1029a4);}});});});}else{return _0x139e26['sendStatus'](0xc8);}})[_0x251b('0x38')](handleError(_0x139e26,null));};
\ No newline at end of file
+var _0xbeef=['../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','end','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','error','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index','OpenchannelInteraction','rawAttributes','fieldName','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','field','color','from','tools_tags','select','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','users','u.id\x20=\x20ui.UserId','openchannel_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','value','`\x20=\x200','having','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','UserId','buildExpression','start','body','keys','some','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','agent','user','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','merge','a.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','include','create','destroy','describe','addMessage','ids','omit','getMessages','findOne','OpenchannelMessage','hasOwnProperty','pick','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','addTags','setTags','spread','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','attachments','format','transcript-%d-%s.zip','User','CmContact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','closed','closedAt','disposition','Public','Private','basename','createReadStream','pipe','createWriteStream','renderFile','downloadInteraction.ejs','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x598fb6,_0x1d3352){var _0x40c263=function(_0x3a6ee1){while(--_0x3a6ee1){_0x598fb6['push'](_0x598fb6['shift']());}};_0x40c263(++_0x1d3352);}(_0xbeef,0x1cc));var _0xfbee=function(_0x335b20,_0x317d09){_0x335b20=_0x335b20-0x0;var _0x3f8ac6=_0xbeef[_0x335b20];return _0x3f8ac6;};'use strict';var emlformat=require(_0xfbee('0x0'));var rimraf=require(_0xfbee('0x1'));var zipdir=require(_0xfbee('0x2'));var jsonpatch=require(_0xfbee('0x3'));var rp=require(_0xfbee('0x4'));var moment=require(_0xfbee('0x5'));var BPromise=require(_0xfbee('0x6'));var Mustache=require(_0xfbee('0x7'));var util=require(_0xfbee('0x8'));var path=require('path');var sox=require(_0xfbee('0x9'));var csv=require(_0xfbee('0xa'));var ejs=require(_0xfbee('0xb'));var fs=require('fs');var fs_extra=require(_0xfbee('0xc'));var _=require(_0xfbee('0xd'));var squel=require(_0xfbee('0xe'));var crypto=require(_0xfbee('0xf'));var jsforce=require(_0xfbee('0x10'));var deskjs=require(_0xfbee('0x11'));var toCsv=require(_0xfbee('0xa'));var querystring=require(_0xfbee('0x12'));var Papa=require(_0xfbee('0x13'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfbee('0x14'));var as=require(_0xfbee('0x15'));var pdf=require(_0xfbee('0x16'));var hardwareService=require(_0xfbee('0x17'));var logger=require(_0xfbee('0x18'))(_0xfbee('0x19'));var utils=require(_0xfbee('0x1a'));var config=require(_0xfbee('0x1b'));var licenseUtil=require(_0xfbee('0x1c'));var db=require(_0xfbee('0x1d'))['db'];config[_0xfbee('0x1e')]=_['defaults'](config[_0xfbee('0x1e')],{'host':_0xfbee('0x1f'),'port':0x18eb});var socket=require(_0xfbee('0x20'))(new Redis(config['redis']));require(_0xfbee('0x21'))['register'](socket);function respondWithStatusCode(_0x3466d6,_0x5dff13){_0x5dff13=_0x5dff13||0xcc;return function(_0x51a5ad){if(_0x51a5ad){return _0x3466d6[_0xfbee('0x22')](_0x5dff13);}return _0x3466d6[_0xfbee('0x23')](_0x5dff13)[_0xfbee('0x24')]();};}function respondWithResult(_0x555ed2,_0x1f0337){_0x1f0337=_0x1f0337||0xc8;return function(_0x1a6f0e){if(_0x1a6f0e){return _0x555ed2[_0xfbee('0x23')](_0x1f0337)['json'](_0x1a6f0e);}};}function respondWithFilteredResult(_0x16445f,_0x4cf74f){return function(_0x47c454){if(_0x47c454){var _0x355079=typeof _0x4cf74f['offset']===_0xfbee('0x25')&&typeof _0x4cf74f[_0xfbee('0x26')]===_0xfbee('0x25');var _0x3541cd=_0x47c454[_0xfbee('0x27')];var _0x358983=_0x355079?0x0:_0x4cf74f['offset'];var _0x3a8a4f=_0x355079?_0x47c454[_0xfbee('0x27')]:_0x4cf74f[_0xfbee('0x28')]+_0x4cf74f[_0xfbee('0x26')];var _0x56bbad;if(_0x3a8a4f>=_0x3541cd){_0x3a8a4f=_0x3541cd;_0x56bbad=0xc8;}else{_0x56bbad=0xce;}_0x16445f['status'](_0x56bbad);return _0x16445f['set'](_0xfbee('0x29'),_0x358983+'-'+_0x3a8a4f+'/'+_0x3541cd)['json'](_0x47c454);}return null;};}function patchUpdates(_0x240db9){return function(_0x3371fc){try{jsonpatch[_0xfbee('0x2a')](_0x3371fc,_0x240db9,!![]);}catch(_0x558cdd){return BPromise[_0xfbee('0x2b')](_0x558cdd);}return _0x3371fc[_0xfbee('0x2c')]();};}function saveUpdates(_0xdbb4fd,_0x5923e1){return function(_0x2cbd84){if(_0x2cbd84){return _0x2cbd84[_0xfbee('0x2d')](_0xdbb4fd)[_0xfbee('0x2e')](function(_0x8f24d6){return _0x8f24d6;});}return null;};}function removeEntity(_0x1f0e0b,_0x589e15){return function(_0x37b25d){if(_0x37b25d){return _0x37b25d['destroy']()['then'](function(){_0x1f0e0b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x30d9b6,_0x30726d){return function(_0xa76245){if(!_0xa76245){_0x30d9b6['sendStatus'](0x194);}return _0xa76245;};}function handleError(_0x1d2723,_0x8e6f77){_0x8e6f77=_0x8e6f77||0x1f4;return function(_0x59444e){logger[_0xfbee('0x2f')](_0x59444e['stack']);if(_0x59444e['name']){delete _0x59444e[_0xfbee('0x30')];}_0x1d2723[_0xfbee('0x23')](_0x8e6f77)[_0xfbee('0x31')](_0x59444e);};}function getInteractionUsers(_0x5d04ea,_0x3c4e55){return new BPromise(function(_0x4e1a8b,_0x4ce35d){try{if(_0x3c4e55[_0x5d04ea['id']]){_0x5d04ea[_0xfbee('0x32')]=_[_0xfbee('0x33')](_0x3c4e55[_0x5d04ea['id']],function(_0x48cf7a){return{'id':_0x48cf7a['id'],'fullname':_0x48cf7a[_0xfbee('0x34')]};});}}catch(_0x2a9beb){_0x4ce35d(_0x2a9beb);}_0x4e1a8b(_0x5d04ea);});}function getInteractionTags(_0x4a8230,_0x59aa51){return new BPromise(function(_0x21c246,_0x154737){try{if(_0x4a8230[_0xfbee('0x35')]){_0x4a8230[_0xfbee('0x36')]=[];_0x4a8230[_0xfbee('0x35')][_0xfbee('0x37')](',')[_0xfbee('0x38')](function(_0xa8d630){_0x4a8230['Tags'][_0xfbee('0x39')](_0x59aa51[_0xa8d630]);});}delete _0x4a8230[_0xfbee('0x35')];}catch(_0x1c27a5){_0x154737(_0x1c27a5);}_0x21c246(_0x4a8230);});}function updateOpenchannelInteraction(_0x2ef620,_0x57e9a6,_0x7f6ba3){return new BPromise(function(_0x2a0e1b,_0x40b236){return getInteractionUsers(_0x2ef620,_0x7f6ba3)[_0xfbee('0x2e')](function(_0x34582f){return getInteractionTags(_0x34582f,_0x57e9a6);})['then'](function(_0x3cb7ca){_0x2a0e1b(_0x3cb7ca);})[_0xfbee('0x3a')](function(_0x275fa7){_0x40b236(_0x275fa7);});});}exports[_0xfbee('0x3b')]=function(_0x7176f5,_0x6cba2f){var _0x371520={},_0x4a0778={},_0x1f49dd={'count':0x0,'rows':[]};var _0x423f65=_[_0xfbee('0x33')](db[_0xfbee('0x3c')][_0xfbee('0x3d')],function(_0x2d4a07){return{'name':_0x2d4a07[_0xfbee('0x3e')],'type':_0x2d4a07['type']['key']};});_0x4a0778['model']=_['map'](_0x423f65,'name');_0x4a0778[_0xfbee('0x3f')]=_['keys'](_0x7176f5[_0xfbee('0x3f')]);_0x4a0778[_0xfbee('0x40')]=_[_0xfbee('0x41')](_0x4a0778[_0xfbee('0x42')],_0x4a0778[_0xfbee('0x3f')]);_0x371520[_0xfbee('0x43')]=_[_0xfbee('0x41')](_0x4a0778[_0xfbee('0x42')],qs['fields'](_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x44')]));_0x371520[_0xfbee('0x43')]=_0x371520[_0xfbee('0x43')][_0xfbee('0x45')]?_0x371520[_0xfbee('0x43')]:_0x4a0778[_0xfbee('0x42')];if(!_0x7176f5[_0xfbee('0x3f')]['hasOwnProperty'](_0xfbee('0x46'))){_0x371520[_0xfbee('0x26')]=qs[_0xfbee('0x26')](_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x26')]);_0x371520[_0xfbee('0x28')]=qs[_0xfbee('0x28')](_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x28')]);}_0x371520[_0xfbee('0x47')]=qs[_0xfbee('0x48')](_0x7176f5['query'][_0xfbee('0x48')]);_0x371520[_0xfbee('0x49')]=qs[_0xfbee('0x40')](_['pick'](_0x7176f5[_0xfbee('0x3f')],_0x4a0778[_0xfbee('0x40')]),_0x423f65);var _0x24be05=[];var _0x278679=squel['select']()['field']('id')[_0xfbee('0x4a')](_0xfbee('0x30'))[_0xfbee('0x4a')](_0xfbee('0x4b'))[_0xfbee('0x4c')](_0xfbee('0x4d'));var _0x3eb4b4=squel[_0xfbee('0x4e')]()[_0xfbee('0x4a')](_0xfbee('0x4f'))[_0xfbee('0x4a')](_0xfbee('0x50'))[_0xfbee('0x4a')](_0xfbee('0x51'))['from'](_0xfbee('0x52'),'ui')['left_join'](_0xfbee('0x53'),'u',_0xfbee('0x54'));var _0x21d863=squel[_0xfbee('0x4e')]()[_0xfbee('0x4c')](_0xfbee('0x55'),'i')[_0xfbee('0x56')](_0xfbee('0x57'),'c',_0xfbee('0x58'))['left_join'](_0xfbee('0x53'),'o',_0xfbee('0x59'))[_0xfbee('0x56')]('openchannel_accounts','a',_0xfbee('0x5a'))[_0xfbee('0x56')](_0xfbee('0x5b'),'me',_0xfbee('0x5c'))[_0xfbee('0x56')](_0xfbee('0x5d'),'it',_0xfbee('0x5e'))['left_join'](_0xfbee('0x4d'),'t',_0xfbee('0x5f'));var _0x11b49e=squel[_0xfbee('0x60')]();var _0x3b1b61=[];var _0x43e94e=squel['expr']();var _0x1b6ba6;if(_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x61')]){_0x1b6ba6=as['parseSearch'](_0x7176f5[_0xfbee('0x3f')]['search']);var _0x43b3a6=_0x1b6ba6[_0xfbee('0x62')];for(var _0xd0c5f3=0x0;_0xd0c5f3<_0x1b6ba6[_0xfbee('0x63')][_0xfbee('0x45')];_0xd0c5f3++){var _0x4cd136=_0x1b6ba6[_0xfbee('0x63')][_0xd0c5f3];var _0x80879a='i';var _0x35b8a4=_['find'](_0x423f65,['name',_0x4cd136['field']]);if(!_0x35b8a4){switch(_0x4cd136[_0xfbee('0x4a')]){case _0xfbee('0x64'):if(_0x4cd136[_0xfbee('0x65')]==0x1){_0x21d863['having']('`'+_0x4cd136['field']+_0xfbee('0x66'));}else{_0x21d863[_0xfbee('0x67')]('`'+_0x4cd136[_0xfbee('0x4a')]+'`\x20>\x200');}break;case _0xfbee('0x68'):if(_0x4cd136[_0xfbee('0x69')]===_0xfbee('0x6a')){if(_0x4cd136[_0xfbee('0x65')][_0xfbee('0x37')]('\x20')[_0xfbee('0x45')]>0x1){_0x11b49e[_0x43b3a6](_0xfbee('0x6b'),qs[_0xfbee('0x6c')](_0x4cd136[_0xfbee('0x65')]),null);}else{var _0x750695='%'+_0x4cd136[_0xfbee('0x65')]+'%';_0x11b49e[_0x43b3a6](_0xfbee('0x6d'),_0x750695,_0x750695,_0x750695);}}else{_0x35b8a4=_[_0xfbee('0x6e')](_0x423f65,[_0xfbee('0x30'),_0xfbee('0x6f')]);_0x4cd136[_0xfbee('0x4a')]='ContactId';_0x24bcab=as['buildExpression'](_0x80879a,_0x35b8a4[_0xfbee('0x70')],_0x4cd136);_0x11b49e[_0x43b3a6](_0x24bcab[_0xfbee('0x71')],_0x24bcab[_0xfbee('0x65')]['start'],_0x24bcab[_0xfbee('0x65')]['end']);}break;case _0xfbee('0x72'):var _0x4e07d2=_0x4cd136[_0xfbee('0x65')][_0xfbee('0x37')](',')[_0xfbee('0x33')](function(_0x359e0a){return Number(_0x359e0a);});_0x4e07d2['forEach'](function(_0x30d633){_0x43e94e['or'](_0xfbee('0x73'),'%,'+_0x30d633+',%');});_0x3b1b61=_[_0xfbee('0x74')](_0x3b1b61,_0x4e07d2);break;case'User':if(_0x4cd136[_0xfbee('0x69')]==='$substring'){_0x11b49e[_0x43b3a6]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x4cd136[_0xfbee('0x65')]+'%',null);}else{_0x35b8a4=_['find'](_0x423f65,[_0xfbee('0x30'),_0xfbee('0x75')]);_0x4cd136[_0xfbee('0x4a')]=_0xfbee('0x75');_0x24bcab=as[_0xfbee('0x76')](_0x80879a,_0x35b8a4[_0xfbee('0x70')],_0x4cd136);_0x11b49e[_0x43b3a6](_0x24bcab[_0xfbee('0x71')],_0x24bcab['value'][_0xfbee('0x77')],_0x24bcab[_0xfbee('0x65')]['end']);}break;case _0xfbee('0x78'):_0x24bcab=as['buildExpression']('me',null,_0x4cd136);_0x11b49e[_0x43b3a6](_0x24bcab[_0xfbee('0x71')],_0x24bcab['value'][_0xfbee('0x77')],_0x24bcab[_0xfbee('0x65')][_0xfbee('0x24')]);break;}}else{var _0x24bcab=as[_0xfbee('0x76')](_0x80879a,_0x35b8a4['type'],_0x4cd136);_0x11b49e[_0x43b3a6](_0x24bcab[_0xfbee('0x71')],_0x24bcab['value'][_0xfbee('0x77')],_0x24bcab['value']['end']);}}}else{var _0x43fea3=_(_0x7176f5[_0xfbee('0x3f')])[_0xfbee('0x79')]()[_0xfbee('0x33')](function(_0xa1ebd4){return _[_0xfbee('0x7a')](_0x423f65,[_0xfbee('0x30'),_0xa1ebd4])?_0xa1ebd4:undefined;})[_0xfbee('0x7b')]()[_0xfbee('0x65')]();if(!_[_0xfbee('0x7c')](_0x43fea3)){_0x43fea3[_0xfbee('0x38')](function(_0x5267f5){if(_0x5267f5===_0xfbee('0x7d')){_0x21d863['where'](_0xfbee('0x7e'),[][_0xfbee('0x7f')](_0x7176f5['query'][_0x5267f5]));}else if(_0x5267f5===_0xfbee('0x80')){var _0x29820e=JSON[_0xfbee('0x81')](_0x7176f5[_0xfbee('0x3f')][_0x5267f5])[_0xfbee('0x82')];var _0x33a5d3=JSON[_0xfbee('0x81')](_0x7176f5[_0xfbee('0x3f')][_0x5267f5])[_0xfbee('0x83')];_0x21d863['where'](_0xfbee('0x84'),_0x29820e,_0x33a5d3);}else{if(_0x7176f5['query'][_0x5267f5]===_0xfbee('0x85')){_0x21d863[_0xfbee('0x49')]('i.'+_0x5267f5+_0xfbee('0x86'));}else{_0x21d863[_0xfbee('0x49')]('i.'+_0x5267f5+'\x20=\x20?',_0x7176f5['query'][_0x5267f5]);}}});}if(_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x87')]){if(_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x87')]==0x1){_0x21d863[_0xfbee('0x67')](_0xfbee('0x88'));}else{_0x21d863[_0xfbee('0x67')](_0xfbee('0x89'));}}if(_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x8a')]){_0x3b1b61=_[_0xfbee('0x8b')](_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x8a')])?_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x8a')]:new Array(_0x7176f5[_0xfbee('0x3f')]['tag']);_0x3b1b61[_0xfbee('0x38')](function(_0x28f741){_0x43e94e['or'](_0xfbee('0x73'),'%,'+_0x28f741+',%');});}if(_0x7176f5[_0xfbee('0x3f')]['filter']){var _0x5710b5=_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x8c')][_0xfbee('0x8d')]('\x5c','\x5c\x5c')[_0xfbee('0x8d')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x5710b5)){_0x11b49e['or']('i.id\x20LIKE\x20?',_0x5710b5+'%');}else{_0x11b49e['or'](_0xfbee('0x8e'),qs[_0xfbee('0x6c')](_0x5710b5))['or'](_0xfbee('0x8f'),_0x5710b5+'%')['or'](_0xfbee('0x90'),_0x5710b5+'%');}}}_0x21d863[_0xfbee('0x49')](_0x11b49e);_0x21d863[_0xfbee('0x91')](_0xfbee('0x92'));var _0x20f6d2={'type':db[_0xfbee('0x93')][_0xfbee('0x94')][_0xfbee('0x95')],'raw':!![]};var _0x12f7ea=_0x21d863[_0xfbee('0x96')]();_0x12f7ea[_0xfbee('0x4a')](_0xfbee('0x92'));_0x12f7ea[_0xfbee('0x4a')](_0xfbee('0x97'),_0xfbee('0x64'));if(_0x371520[_0xfbee('0x47')]){_0x371520[_0xfbee('0x47')][_0xfbee('0x38')](function(_0x2fb2f7){var _0x5728a0=_0x2fb2f7[0x0]===_0xfbee('0x98')?_0x2fb2f7[0x0]:'i.'+_0x2fb2f7[0x0];_0x21d863[_0xfbee('0x47')](_0x5728a0,_0x2fb2f7[0x1]===_0xfbee('0x99')?![]:!![]);});}if(!_[_0xfbee('0x7c')](_0x3b1b61)){_0x21d863[_0xfbee('0x67')](_0x43e94e);_0x12f7ea[_0xfbee('0x49')]('t.id\x20IN\x20?',_0x3b1b61);}BPromise[_0xfbee('0x9a')]()[_0xfbee('0x2e')](function(){if(!_0x1b6ba6){if(_0x7176f5[_0xfbee('0x3f')]['OpenchannelAccountId'])return;_0x12f7ea['where'](_0xfbee('0x9b'));_0x21d863['where'](_0xfbee('0x9b'));return;}if(_0x7176f5['user']['role']!==_0xfbee('0x9c'))return;return _0x7176f5[_0xfbee('0x9d')][_0xfbee('0x9e')]({'attributes':['id'],'raw':!![]})[_0xfbee('0x2e')](function(_0x42dd68){if(_['isEmpty'](_0x42dd68)){_0x12f7ea['where'](_0xfbee('0x9f'));_0x21d863[_0xfbee('0x49')](_0xfbee('0x9f'));}else{_0x12f7ea['where'](_0xfbee('0x7e'),_[_0xfbee('0x33')](_0x42dd68,'id'));_0x21d863[_0xfbee('0x49')](_0xfbee('0x7e'),_[_0xfbee('0x33')](_0x42dd68,'id'));}});})['then'](function(){if(_0x7176f5['user']['role']===_0xfbee('0x9c')&&!_0x1b6ba6&&!_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x7d')])return[];return db[_0xfbee('0xa0')][_0xfbee('0x3f')](_0x12f7ea[_0xfbee('0xa1')](),_0x20f6d2);})['then'](function(_0x2002dc){_0x1f49dd[_0xfbee('0x27')]=_0x2002dc['length'];if(_0x1f49dd[_0xfbee('0x27')]===0x0)return[];return db[_0xfbee('0xa0')][_0xfbee('0x3f')](_0x278679[_0xfbee('0xa1')](),_0x20f6d2)['then'](function(_0x3a9fc5){_0x24be05=_['keyBy'](_0x3a9fc5,'id');_0x20f6d2=_[_0xfbee('0xa2')](_0x20f6d2,{'model':db[_0xfbee('0x3c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x7176f5[_0xfbee('0x3f')][_0xfbee('0x44')]){_0x371520['attributes'][_0xfbee('0x38')](function(_0x467d94){_0x21d863[_0xfbee('0x4a')]('i.'+_0x467d94);});}else{_0x21d863[_0xfbee('0x4a')](_0xfbee('0x97'),_0xfbee('0x64'));_0x21d863['field']('a.key','Account.key');_0x21d863['field'](_0xfbee('0xa3'),'Account.mandatoryDisposition');_0x21d863[_0xfbee('0x4a')](_0xfbee('0xa4'),'contactName');_0x21d863[_0xfbee('0x4a')](_0xfbee('0xa5'));_0x21d863['field']('c.firstName',_0xfbee('0xa6'));_0x21d863['field']('c.lastName',_0xfbee('0xa7'));_0x21d863[_0xfbee('0x4a')](_0xfbee('0xa8'),'Contact.email');_0x21d863[_0xfbee('0x4a')]('c.phone',_0xfbee('0xa9'));_0x21d863[_0xfbee('0x4a')](_0xfbee('0xaa'),_0xfbee('0xab'));_0x21d863[_0xfbee('0x4a')](_0xfbee('0xac'),_0xfbee('0xad'));_0x21d863['field'](_0xfbee('0xae'),_0xfbee('0xaf'));_0x21d863[_0xfbee('0x4a')](_0xfbee('0xb0'),'Owner.internal');_0x21d863[_0xfbee('0x4a')](_0xfbee('0xb1'),_0xfbee('0x35'));}if(_0x371520[_0xfbee('0x26')])_0x21d863[_0xfbee('0x26')](_0x371520[_0xfbee('0x26')]);if(_0x371520[_0xfbee('0x28')])_0x21d863['offset'](_0x371520[_0xfbee('0x28')]);return db['sequelize'][_0xfbee('0x3f')](_0x21d863['toString'](),_0x20f6d2);})[_0xfbee('0x2e')](function(_0x30d92a){if(_0x30d92a['length']>0x0)_0x3eb4b4[_0xfbee('0x49')](_0xfbee('0xb2'),_[_0xfbee('0x33')](_0x30d92a,'id'));return db[_0xfbee('0xa0')][_0xfbee('0x3f')](_0x3eb4b4['toString'](),_0x20f6d2)[_0xfbee('0x2e')](function(_0x2b6be0){var _0x38e901=_[_0xfbee('0xb3')](_0x2b6be0,_0xfbee('0xb4'));var _0x43b490=[];_0x30d92a[_0xfbee('0x38')](function(_0x280909){_0x43b490[_0xfbee('0x39')](updateOpenchannelInteraction(_0x280909,_0x24be05,_0x38e901));});return BPromise[_0xfbee('0xb5')](_0x43b490);});});})[_0xfbee('0x2e')](function(_0x1fc079){_0x1f49dd[_0xfbee('0xb6')]=_0x1fc079;return _0x1f49dd;})[_0xfbee('0x2e')](respondWithFilteredResult(_0x6cba2f,_0x371520))[_0xfbee('0x3a')](handleError(_0x6cba2f,null));};exports[_0xfbee('0xb7')]=function(_0x5c051b,_0x46a713){var _0x2d66e2={};if(_0x5c051b['query']['type']&&_0x5c051b[_0xfbee('0x3f')][_0xfbee('0x70')]==='from'){_0x2d66e2[_0xfbee('0x4c')]=_0x5c051b[_0xfbee('0xb8')]['id'];}else{_0x2d66e2['id']=_0x5c051b[_0xfbee('0xb8')]['id'];}var _0x32960e={'raw':![],'where':_0x2d66e2},_0xdc1ec0={};_0xdc1ec0['model']=_[_0xfbee('0x79')](db[_0xfbee('0x3c')][_0xfbee('0x3d')]);_0xdc1ec0[_0xfbee('0x3f')]=_[_0xfbee('0x79')](_0x5c051b[_0xfbee('0x3f')]);_0xdc1ec0[_0xfbee('0x40')]=_[_0xfbee('0x41')](_0xdc1ec0['model'],_0xdc1ec0['query']);_0x32960e[_0xfbee('0x43')]=_['intersection'](_0xdc1ec0['model'],qs['fields'](_0x5c051b['query'][_0xfbee('0x44')]));_0x32960e[_0xfbee('0x43')]=_0x32960e[_0xfbee('0x43')][_0xfbee('0x45')]?_0x32960e[_0xfbee('0x43')]:_0xdc1ec0[_0xfbee('0x42')];if(_0x5c051b[_0xfbee('0x3f')]['includeAll']){_0x32960e[_0xfbee('0xb9')]=[{'all':!![]}];}_0x32960e=_['merge']({},_0x32960e,_0x5c051b['options']);return db[_0xfbee('0x3c')]['find'](_0x32960e)[_0xfbee('0x2e')](handleEntityNotFound(_0x46a713,null))[_0xfbee('0x2e')](respondWithResult(_0x46a713,null))[_0xfbee('0x3a')](handleError(_0x46a713,null));};exports[_0xfbee('0xba')]=function(_0x5b811f,_0x4e72f1){return db[_0xfbee('0x3c')][_0xfbee('0xba')](_0x5b811f[_0xfbee('0x78')],{})['then'](respondWithResult(_0x4e72f1,0xc9))[_0xfbee('0x3a')](handleError(_0x4e72f1,null));};exports[_0xfbee('0x2d')]=function(_0x4148a9,_0x3ad8c4){if(_0x4148a9[_0xfbee('0x78')]['id']){delete _0x4148a9['body']['id'];}return db['OpenchannelInteraction']['find']({'where':{'id':_0x4148a9[_0xfbee('0xb8')]['id']}})[_0xfbee('0x2e')](handleEntityNotFound(_0x3ad8c4,null))[_0xfbee('0x2e')](saveUpdates(_0x4148a9[_0xfbee('0x78')],null))[_0xfbee('0x2e')](respondWithResult(_0x3ad8c4,null))[_0xfbee('0x3a')](handleError(_0x3ad8c4,null));};exports[_0xfbee('0xbb')]=function(_0x5308b5,_0x9e2436){return db[_0xfbee('0x3c')][_0xfbee('0x6e')]({'where':{'id':_0x5308b5[_0xfbee('0xb8')]['id']}})[_0xfbee('0x2e')](handleEntityNotFound(_0x9e2436,null))[_0xfbee('0x2e')](removeEntity(_0x9e2436,null))['catch'](handleError(_0x9e2436,null));};exports[_0xfbee('0xbc')]=function(_0x17ab24,_0x56de5e){return db[_0xfbee('0x3c')][_0xfbee('0xbc')]()['then'](respondWithResult(_0x56de5e,null))[_0xfbee('0x3a')](handleError(_0x56de5e,null));};exports[_0xfbee('0xbd')]=function(_0x4c1aea,_0x12fdef,_0x4c00ab){return db['OpenchannelMessage'][_0xfbee('0x6e')]({'where':{'id':_0x4c1aea[_0xfbee('0xb8')]['id']}})[_0xfbee('0x2e')](handleEntityNotFound(_0x12fdef,null))['then'](function(_0x3d4911){if(_0x3d4911){return _0x3d4911['addMessage'](_0x4c1aea[_0xfbee('0x78')][_0xfbee('0xbe')],_[_0xfbee('0xbf')](_0x4c1aea['body'],[_0xfbee('0xbe'),'id'])||{});}})['then'](respondWithResult(_0x12fdef,null))[_0xfbee('0x3a')](handleError(_0x12fdef,null));};exports[_0xfbee('0xc0')]=function(_0x21b0c2,_0x3c71cc,_0x3f380b){var _0x40e3c1={'raw':![],'where':{}};var _0x540a0f={};var _0xddb4c6={'count':0x0,'rows':[]};return db[_0xfbee('0x3c')][_0xfbee('0xc1')]({'where':{'id':_0x21b0c2[_0xfbee('0xb8')]['id']}})[_0xfbee('0x2e')](handleEntityNotFound(_0x3c71cc,null))[_0xfbee('0x2e')](function(_0x368461){if(_0x368461){_0x540a0f['model']=_[_0xfbee('0x79')](db[_0xfbee('0xc2')][_0xfbee('0x3d')]);_0x540a0f[_0xfbee('0x3f')]=_['keys'](_0x21b0c2[_0xfbee('0x3f')]);_0x540a0f[_0xfbee('0x40')]=_['intersection'](_0x540a0f[_0xfbee('0x42')],_0x540a0f[_0xfbee('0x3f')]);_0x40e3c1[_0xfbee('0x43')]=_[_0xfbee('0x41')](_0x540a0f[_0xfbee('0x42')],qs[_0xfbee('0x44')](_0x21b0c2['query'][_0xfbee('0x44')]));_0x40e3c1[_0xfbee('0x43')]=_0x40e3c1[_0xfbee('0x43')]['length']?_0x40e3c1[_0xfbee('0x43')]:_0x540a0f[_0xfbee('0x42')];if(!_0x21b0c2[_0xfbee('0x3f')][_0xfbee('0xc3')](_0xfbee('0x46'))){_0x40e3c1[_0xfbee('0x26')]=qs['limit'](_0x21b0c2[_0xfbee('0x3f')][_0xfbee('0x26')]);_0x40e3c1[_0xfbee('0x28')]=qs[_0xfbee('0x28')](_0x21b0c2[_0xfbee('0x3f')][_0xfbee('0x28')]);}_0x40e3c1['order']=qs[_0xfbee('0x48')](_0x21b0c2[_0xfbee('0x3f')][_0xfbee('0x48')]);_0x40e3c1[_0xfbee('0x49')]=qs['filters'](_[_0xfbee('0xc4')](_0x21b0c2[_0xfbee('0x3f')],_0x540a0f[_0xfbee('0x40')]));_0x40e3c1[_0xfbee('0x49')][_0xfbee('0xb4')]=_0x368461['id'];if(_0x21b0c2[_0xfbee('0x3f')]['filter']){_0x40e3c1[_0xfbee('0x49')]=_[_0xfbee('0xa2')](_0x40e3c1[_0xfbee('0x49')],{'$or':_[_0xfbee('0x33')](_0x40e3c1[_0xfbee('0x43')],function(_0x5c78a6){var _0x124c9f={};_0x124c9f[_0x5c78a6]={'$like':'%'+_0x21b0c2[_0xfbee('0x3f')]['filter']+'%'};return _0x124c9f;})});}if(_0x21b0c2['query'][_0xfbee('0x82')]){var _0x41030a=_0x21b0c2[_0xfbee('0x3f')]['$gte'][_0xfbee('0x37')](',');var _0x574a6b={};_0x574a6b[_0x41030a[0x0]]={'$gte':moment(_0x41030a[0x1])['format'](_0xfbee('0xc5'))};_0x40e3c1[_0xfbee('0x49')]=_['merge'](_0x40e3c1[_0xfbee('0x49')],_0x574a6b);}_0x40e3c1=_[_0xfbee('0xa2')]({},_0x40e3c1,_0x21b0c2[_0xfbee('0xc6')]);return db[_0xfbee('0xc2')][_0xfbee('0x27')]({'where':_0x40e3c1[_0xfbee('0x49')]})[_0xfbee('0x2e')](function(_0xe2c650){_0xddb4c6['count']=_0xe2c650;if(_0x21b0c2[_0xfbee('0x3f')][_0xfbee('0xc7')]){_0x40e3c1[_0xfbee('0xb9')]=[{'all':!![]}];}return db[_0xfbee('0xc2')][_0xfbee('0xc8')](_0x40e3c1);})['then'](function(_0x3d0666){_0xddb4c6['rows']=_0x3d0666;return _0xddb4c6;});}})['then'](respondWithFilteredResult(_0x3c71cc,_0x40e3c1))[_0xfbee('0x3a')](handleError(_0x3c71cc,null));};exports[_0xfbee('0xc9')]=function(_0x348f0a,_0x50fff1,_0xb4ce9d){return db['OpenchannelInteraction'][_0xfbee('0x6e')]({'where':{'id':_0x348f0a[_0xfbee('0xb8')]['id']}})[_0xfbee('0x2e')](handleEntityNotFound(_0x50fff1,null))[_0xfbee('0x2e')](function(_0x41f12f){if(_0x41f12f){return _0x41f12f[_0xfbee('0xca')](_0x348f0a[_0xfbee('0x78')]['ids'],_[_0xfbee('0xbf')](_0x348f0a['body'],['ids','id'])||{})[_0xfbee('0xcb')](function(){return db[_0xfbee('0x72')][_0xfbee('0xc8')]({'attributes':['id',_0xfbee('0x30'),_0xfbee('0x4b')],'where':{'id':_0x348f0a[_0xfbee('0x78')][_0xfbee('0xbe')]}});})['then'](function(_0x39dfdf){socket[_0xfbee('0xcc')](_0xfbee('0xcd'),{'id':Number(_0x348f0a[_0xfbee('0xb8')]['id']),'tags':_0x39dfdf||[]});return{'id':Number(_0x348f0a[_0xfbee('0xb8')]['id']),'tags':_0x39dfdf||[]};});}})[_0xfbee('0x2e')](respondWithResult(_0x50fff1,null))[_0xfbee('0x3a')](handleError(_0x50fff1,null));};exports[_0xfbee('0xce')]=function(_0x1156d1,_0x2ebde5,_0x3460e1){return db[_0xfbee('0x3c')][_0xfbee('0x6e')]({'where':{'id':_0x1156d1[_0xfbee('0xb8')]['id']}})['then'](handleEntityNotFound(_0x2ebde5,null))['then'](function(_0x3141cb){if(_0x3141cb){return _0x3141cb[_0xfbee('0xce')](_0x1156d1[_0xfbee('0x3f')][_0xfbee('0xbe')]);}})[_0xfbee('0x2e')](respondWithStatusCode(_0x2ebde5,null))[_0xfbee('0x3a')](handleError(_0x2ebde5,null));};exports[_0xfbee('0xcf')]=function(_0x21ddb1,_0x2d1c3e){var _0x4f24de=moment()[_0xfbee('0xd0')]()[_0xfbee('0xa1')]();var _0x354365=path[_0xfbee('0xd1')](config[_0xfbee('0xd2')],_0xfbee('0xd3'),'files','tmp');var _0x617a6=path['join'](config['root'],_0xfbee('0xd3'),_0xfbee('0xd4'),_0xfbee('0xd5'));var _0x12f45b=path[_0xfbee('0xd1')](_0x354365,_0x4f24de);var _0x194a00=util[_0xfbee('0xd6')](_0xfbee('0xd7'),_0x21ddb1[_0xfbee('0xb8')]['id'],_0x4f24de);var _0x1303aa=path['join'](_0x354365,_0x194a00);var _0x562345=[];_0x562345[_0xfbee('0x39')]({'model':db[_0xfbee('0xd8')],'as':_0xfbee('0xd8'),'attributes':['id',_0xfbee('0x34')],'raw':!![]});_0x562345['push']({'model':db[_0xfbee('0xd9')],'as':_0xfbee('0x68'),'attributes':['id',_0xfbee('0xda'),_0xfbee('0xdb')],'raw':!![]});if(_0x21ddb1[_0xfbee('0x3f')][_0xfbee('0xd5')]){_0x562345[_0xfbee('0x39')]({'model':db['Attachment'],'as':_0xfbee('0xdc'),'raw':!![]});}var _0x14fcb4=[{'model':db[_0xfbee('0xc2')],'as':_0xfbee('0xdd'),'attributes':['id',_0xfbee('0x78'),_0xfbee('0x80'),_0xfbee('0xde'),_0xfbee('0xdf'),_0xfbee('0x87')],'include':_0x562345}];_0x14fcb4[_0xfbee('0x39')]({'model':db[_0xfbee('0xe0')],'as':_0xfbee('0xe1'),'attributes':['id',_0xfbee('0x30')]});_0x14fcb4[_0xfbee('0x39')]({'model':db[_0xfbee('0xd8')],'as':_0xfbee('0xe2'),'attributes':['id','fullname']});return db[_0xfbee('0x3c')][_0xfbee('0x6e')]({'where':{'id':_0x21ddb1[_0xfbee('0xb8')]['id']},'include':_0x14fcb4})[_0xfbee('0x2e')](handleEntityNotFound(_0x2d1c3e,null))['then'](function(_0x3591fb){if(_0x3591fb){var _0x398c5a=_0x3591fb['get']({'plain':!![]});fs['mkdirSync'](_0x12f45b);var _0x5e04a7={'channel':'Openchannel','account':_0x398c5a[_0xfbee('0xe1')][_0xfbee('0x30')],'agent':_0x398c5a[_0xfbee('0xe2')]?_0x398c5a[_0xfbee('0xe2')][_0xfbee('0x34')]:'N.A.','createdAt':moment(_0x398c5a[_0xfbee('0x80')])[_0xfbee('0xd6')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x398c5a[_0xfbee('0xe3')]?moment(_0x398c5a[_0xfbee('0xe4')])[_0xfbee('0xd6')](_0xfbee('0xc5'))[_0xfbee('0xa1')]():'','disposition':_0x398c5a[_0xfbee('0xe5')],'visibility':_0x398c5a['threadId']?_0xfbee('0xe6'):_0xfbee('0xe7'),'messages':_(_0x398c5a[_0xfbee('0xdd')])[_0xfbee('0x8c')]({'secret':![]})['map'](function(_0x4b086a){if(_0x4b086a[_0xfbee('0xdc')]){var _0x306bc9=path[_0xfbee('0xd1')](_0x617a6,_0x4b086a[_0xfbee('0xdc')][_0xfbee('0xe8')]);if(fs['existsSync'](_0x306bc9)){fs[_0xfbee('0xe9')](_0x306bc9)[_0xfbee('0xea')](fs[_0xfbee('0xeb')](path['join'](_0x12f45b,_0x4b086a[_0xfbee('0xdc')][_0xfbee('0xe8')])));}}return{'date':moment(_0x4b086a['createdAt'])[_0xfbee('0xd6')]('YYYY-MM-DD\x20HH:mm:ss')[_0xfbee('0xa1')](),'sender':_0x4b086a[_0xfbee('0xde')]==='out'?_0x4b086a['User']?_0x4b086a['User'][_0xfbee('0x34')]:'System':_0x4b086a[_0xfbee('0x68')][_0xfbee('0xda')]+(_0x4b086a[_0xfbee('0x68')][_0xfbee('0xdb')]?'\x20'+_0x4b086a['Contact'][_0xfbee('0xdb')]:''),'body':_0x4b086a[_0xfbee('0xdc')]?_0x4b086a[_0xfbee('0xdc')][_0xfbee('0xe8')]:_0x4b086a['body'],'direction':_0x4b086a[_0xfbee('0xde')]==='out'?'A':'C','secret':_0x4b086a[_0xfbee('0xdf')],'read':_0x4b086a[_0xfbee('0x87')],'attachment':_0x4b086a[_0xfbee('0xdc')]};})['value']()};return ejs[_0xfbee('0xec')](path['join'](config[_0xfbee('0xd2')],_0xfbee('0xd3'),'views',_0xfbee('0xed')),{'interaction':_0x5e04a7})[_0xfbee('0x2e')](function(_0x44344b){var _0x1b390e=path[_0xfbee('0xd1')](_0x12f45b,'transcript-'+_0x398c5a['id']+'-'+_0x4f24de+'.pdf');var _0x3ce7df={'path':_0x1b390e,'channel':'Openchannel','interactionId':_0x398c5a['id']};return pdf['createPdfFromHTML'](_0x44344b,_0x3ce7df);})[_0xfbee('0x2e')](function(){return new BPromise(function(_0x55dc8c,_0x3ee37d){zipdir(_0x12f45b,{'saveTo':_0x1303aa},function(_0x47c14e,_0x3b82d2){if(_0x47c14e)return _0x3ee37d(_0x47c14e);return _0x55dc8c(_0x3b82d2);});})[_0xfbee('0x2e')](function(){return new BPromise(function(_0x1e2e61,_0x3e0013){rimraf(_0x12f45b,function(_0xcf2dbb){if(_0xcf2dbb)_0x3e0013(_0xcf2dbb);return _0x1e2e61();});});})[_0xfbee('0x2e')](function(){return _0x2d1c3e['download'](_0x1303aa,_0x194a00,function(_0x2b9159){if(_0x2b9159){console[_0xfbee('0xee')](_0xfbee('0xef'),_0x2b9159);}else{fs[_0xfbee('0xf0')](_0x1303aa);}});});});}else{return _0x2d1c3e[_0xfbee('0x22')](0xc8);}})[_0xfbee('0x3a')](handleError(_0x2d1c3e,null));};
\ No newline at end of file
index a6e6b74..0c4917f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955c=['update','remove','getUsers','then','setDataValue','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','OpenchannelMessage','setMaxListeners','save'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x955c,0x1cc));var _0xc955=function(_0x56d3fc,_0x5c0680){_0x56d3fc=_0x56d3fc-0x0;var _0x2e6f0f=_0x955c[_0x56d3fc];return _0x2e6f0f;};'use strict';var EventEmitter=require(_0xc955('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db'][_0xc955('0x1')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xc955('0x2')](0x0);var events={'afterCreate':_0xc955('0x3'),'afterUpdate':_0xc955('0x4'),'afterDestroy':_0xc955('0x5')};function emitEvent(_0x5e1c33){return function(_0x5452ed,_0x323786,_0x52bb32){_0x5452ed[_0xc955('0x6')]({'attributes':['id'],'raw':!![]})[_0xc955('0x7')](function(_0x51319a){_0x5452ed[_0xc955('0x8')]('Users',_0x51319a['map'](function(_0x13adf5){return{'id':_0x13adf5['id']};}));return OpenchannelMessage[_0xc955('0x9')]({'where':{'OpenchannelInteractionId':_0x5452ed['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc955('0x7')](function(_0x18cd79){_0x5452ed['setDataValue'](_0xc955('0xa'),_0x18cd79[_0xc955('0xb')]);OpenchannelInteractionEvents[_0xc955('0xc')](_0x5e1c33+':'+_0x5452ed['id'],_0x5452ed);OpenchannelInteractionEvents[_0xc955('0xc')](_0x5e1c33,_0x5452ed);_0x52bb32(null);})['catch'](_0x52bb32(null));};}for(var e in events){if(events[_0xc955('0xd')](e)){var event=events[e];OpenchannelInteraction[_0xc955('0xe')](e,emitEvent(event));}}module[_0xc955('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xcac1=['OpenchannelMessage','update','getUsers','then','setDataValue','Users','unreadMessages','emit','catch','hook','exports','events','../../mysqldb','OpenchannelInteraction'];(function(_0x5ea79d,_0x2b6657){var _0x3c2b27=function(_0x160aad){while(--_0x160aad){_0x5ea79d['push'](_0x5ea79d['shift']());}};_0x3c2b27(++_0x2b6657);}(_0xcac1,0x97));var _0x1cac=function(_0x6899c7,_0x363413){_0x6899c7=_0x6899c7-0x0;var _0x5186ee=_0xcac1[_0x6899c7];return _0x5186ee;};'use strict';var EventEmitter=require(_0x1cac('0x0'));var OpenchannelInteraction=require(_0x1cac('0x1'))['db'][_0x1cac('0x2')];var OpenchannelMessage=require('../../mysqldb')['db'][_0x1cac('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x1cac('0x4'),'afterDestroy':'remove'};function emitEvent(_0x134660){return function(_0x46f769,_0x3a1586,_0x3b6187){_0x46f769[_0x1cac('0x5')]({'attributes':['id'],'raw':!![]})[_0x1cac('0x6')](function(_0x4de0b0){_0x46f769[_0x1cac('0x7')](_0x1cac('0x8'),_0x4de0b0['map'](function(_0x54fc4f){return{'id':_0x54fc4f['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x46f769['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1cac('0x6')](function(_0x4f95d0){_0x46f769[_0x1cac('0x7')](_0x1cac('0x9'),_0x4f95d0['length']);OpenchannelInteractionEvents[_0x1cac('0xa')](_0x134660+':'+_0x46f769['id'],_0x46f769);OpenchannelInteractionEvents[_0x1cac('0xa')](_0x134660,_0x46f769);_0x3b6187(null);})[_0x1cac('0xb')](_0x3b6187(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x1cac('0xc')](e,emitEvent(event));}}module[_0x1cac('0xd')]=OpenchannelInteractionEvents;
\ No newline at end of file
index cbfff7e..f0e777f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6317=['request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4_unicode_ci','changed','closed','lodash','util','api','bluebird'];(function(_0x500ce3,_0x2c5cce){var _0x5c4c8a=function(_0x22e960){while(--_0x22e960){_0x500ce3['push'](_0x500ce3['shift']());}};_0x5c4c8a(++_0x2c5cce);}(_0x6317,0x12c));var _0x7631=function(_0xc86a48,_0x1b7774){_0xc86a48=_0xc86a48-0x0;var _0x58dd59=_0x6317[_0xc86a48];return _0x58dd59;};'use strict';var _=require(_0x7631('0x0'));var util=require(_0x7631('0x1'));var logger=require('../../config/logger')(_0x7631('0x2'));var moment=require('moment');var BPromise=require(_0x7631('0x3'));var rp=require(_0x7631('0x4'));var fs=require('fs');var path=require(_0x7631('0x5'));var rimraf=require(_0x7631('0x6'));var config=require(_0x7631('0x7'));var attributes=require(_0x7631('0x8'));module[_0x7631('0x9')]=function(_0x59ec4e,_0x5cd9e0){return _0x59ec4e[_0x7631('0xa')](_0x7631('0xb'),attributes,{'tableName':_0x7631('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7631('0xd'),'hooks':{'beforeUpdate':function(_0x5e1db5,_0xb42376,_0x57d1d6){if(_0x5e1db5[_0x7631('0xe')](_0x7631('0xf'))){_0x5e1db5['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x57d1d6(null,_0x5e1db5);}}});};
\ No newline at end of file
+var _0x364f=['./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','utf8mb4','changed','closed','closedAt','format','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x364f,0x16e));var _0xf364=function(_0x131585,_0x1abd33){_0x131585=_0x131585-0x0;var _0x1fcca2=_0x364f[_0x131585];return _0x1fcca2;};'use strict';var _=require(_0xf364('0x0'));var util=require('util');var logger=require(_0xf364('0x1'))(_0xf364('0x2'));var moment=require(_0xf364('0x3'));var BPromise=require('bluebird');var rp=require(_0xf364('0x4'));var fs=require('fs');var path=require(_0xf364('0x5'));var rimraf=require(_0xf364('0x6'));var config=require(_0xf364('0x7'));var attributes=require(_0xf364('0x8'));module[_0xf364('0x9')]=function(_0x2c23b5,_0x132832){return _0x2c23b5[_0xf364('0xa')](_0xf364('0xb'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf364('0xc'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0xbd9e37,_0x6a1fec,_0x1769b7){if(_0xbd9e37[_0xf364('0xd')](_0xf364('0xe'))){_0xbd9e37[_0xf364('0xf')]=moment()[_0xf364('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1769b7(null,_0xbd9e37);}}});};
\ No newline at end of file
index 86c96ae..73bdbd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x018a=['register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','update','body','options','where','attributes','UpdateOpenchannelInteraction','catch','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','omit','spread','AddTags','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelInteraction.socket'];(function(_0x1ba175,_0x459f5f){var _0x1935a4=function(_0x4c57a6){while(--_0x4c57a6){_0x1ba175['push'](_0x1ba175['shift']());}};_0x1935a4(++_0x459f5f);}(_0x018a,0x178));var _0xa018=function(_0x29f31c,_0x46bbdf){_0x29f31c=_0x29f31c-0x0;var _0x3b6b8a=_0x018a[_0x29f31c];return _0x3b6b8a;};'use strict';var _=require(_0xa018('0x0'));var util=require('util');var moment=require(_0xa018('0x1'));var BPromise=require('bluebird');var rs=require(_0xa018('0x2'));var fs=require('fs');var Redis=require(_0xa018('0x3'));var db=require(_0xa018('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa018('0x5'))(_0xa018('0x6'));var config=require('../../config/environment');var jayson=require(_0xa018('0x7'));var client=jayson[_0xa018('0x8')][_0xa018('0x9')]({'port':0x232a});config[_0xa018('0xa')]=_['defaults'](config[_0xa018('0xa')],{'host':_0xa018('0xb'),'port':0x18eb});var socket=require(_0xa018('0xc'))(new Redis(config['redis']));require(_0xa018('0xd'))[_0xa018('0xe')](socket);function respondWithRpcPromise(_0x69b5f8,_0x42d9ea,_0x237c52){return new BPromise(function(_0x516977,_0x16c266){return client[_0xa018('0xf')](_0x69b5f8,_0x237c52)[_0xa018('0x10')](function(_0x24e049){logger[_0xa018('0x11')](_0xa018('0x12'),_0x42d9ea,'request\x20sent');logger[_0xa018('0x13')](_0xa018('0x14'),_0x42d9ea,_0xa018('0x15'),JSON[_0xa018('0x16')](_0x24e049));if(_0x24e049[_0xa018('0x17')]){if(_0x24e049[_0xa018('0x17')][_0xa018('0x18')]===0x1f4){logger[_0xa018('0x17')](_0xa018('0x12'),_0x42d9ea,_0x24e049[_0xa018('0x17')][_0xa018('0x19')]);return _0x16c266(_0x24e049[_0xa018('0x17')]['message']);}logger[_0xa018('0x17')](_0xa018('0x12'),_0x42d9ea,_0x24e049[_0xa018('0x17')][_0xa018('0x19')]);return _0x516977(_0x24e049[_0xa018('0x17')][_0xa018('0x19')]);}else{logger['info'](_0xa018('0x12'),_0x42d9ea,_0xa018('0x15'));_0x516977(_0x24e049['result'][_0xa018('0x19')]);}})['catch'](function(_0x1ff1d7){logger[_0xa018('0x17')](_0xa018('0x12'),_0x42d9ea,_0x1ff1d7);_0x16c266(_0x1ff1d7);});});}exports['UpdateOpenchannelInteraction']=function(_0x61e488){var _0x393c68=this;return new Promise(function(_0x321f8e,_0x35d377){return db['OpenchannelInteraction'][_0xa018('0x1a')](_0x61e488[_0xa018('0x1b')],{'raw':_0x61e488[_0xa018('0x1c')]?_0x61e488[_0xa018('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x61e488[_0xa018('0x1c')]?_0x61e488['options'][_0xa018('0x1d')]||null:null,'attributes':_0x61e488[_0xa018('0x1c')]?_0x61e488[_0xa018('0x1c')][_0xa018('0x1e')]||null:null,'limit':_0x61e488[_0xa018('0x1c')]?_0x61e488[_0xa018('0x1c')]['limit']||null:null})[_0xa018('0x10')](function(_0x3d9b90){logger[_0xa018('0x11')](_0xa018('0x1f'),_0x61e488);logger[_0xa018('0x13')]('UpdateOpenchannelInteraction',_0x61e488,JSON[_0xa018('0x16')](_0x3d9b90));_0x321f8e(_0x3d9b90);})[_0xa018('0x20')](function(_0xa08a57){logger[_0xa018('0x17')]('UpdateOpenchannelInteraction',_0xa08a57[_0xa018('0x19')],_0x61e488);_0x35d377(_0x393c68[_0xa018('0x17')](0x1f4,_0xa08a57[_0xa018('0x19')]));});});};exports[_0xa018('0x21')]=function(_0x3a6962){return new Promise(function(_0x2e9274,_0x495944){return db[_0xa018('0x22')][_0xa018('0x23')]({'where':_0x3a6962[_0xa018('0x1c')]?_0x3a6962['options'][_0xa018('0x1d')]||null:null})[_0xa018('0x10')](function(_0x1c6a08){if(_0x1c6a08){return _0x1c6a08['addTags'](_0x3a6962['body']['ids'],_[_0xa018('0x24')](_0x3a6962[_0xa018('0x1b')],['ids','id'])||{});}})[_0xa018('0x25')](function(_0x3194ad){logger['info'](_0xa018('0x26'),_0x3a6962);logger[_0xa018('0x13')](_0xa018('0x26'),_0x3a6962,JSON[_0xa018('0x16')](_0x3194ad));_0x2e9274(_0x3194ad);})[_0xa018('0x20')](function(_0x4a0ce0){logger['error'](_0xa018('0x26'),_0x4a0ce0[_0xa018('0x19')],_0x3a6962);_0x495944(_this[_0xa018('0x17')](0x1f4,_0x4a0ce0[_0xa018('0x19')]));});});};
\ No newline at end of file
+var _0xb261=['rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','attributes','stringify','where','addTags','ids','omit','AddTags','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x34eb31,_0x8f0f70){var _0x254994=function(_0xbec9a3){while(--_0xbec9a3){_0x34eb31['push'](_0x34eb31['shift']());}};_0x254994(++_0x8f0f70);}(_0xb261,0x1ef));var _0x1b26=function(_0x42e6ce,_0x511000){_0x42e6ce=_0x42e6ce-0x0;var _0xbe41a7=_0xb261[_0x42e6ce];return _0xbe41a7;};'use strict';var _=require(_0x1b26('0x0'));var util=require(_0x1b26('0x1'));var moment=require(_0x1b26('0x2'));var BPromise=require(_0x1b26('0x3'));var rs=require(_0x1b26('0x4'));var fs=require('fs');var Redis=require(_0x1b26('0x5'));var db=require(_0x1b26('0x6'))['db'];var utils=require(_0x1b26('0x7'));var logger=require(_0x1b26('0x8'))(_0x1b26('0x9'));var config=require('../../config/environment');var jayson=require(_0x1b26('0xa'));var client=jayson[_0x1b26('0xb')][_0x1b26('0xc')]({'port':0x232a});config[_0x1b26('0xd')]=_[_0x1b26('0xe')](config[_0x1b26('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x1b26('0xf'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0x1b26('0x10')](socket);function respondWithRpcPromise(_0x54b5fa,_0x2e2b32,_0x4359f6){return new BPromise(function(_0x4d77be,_0x3634e6){return client[_0x1b26('0x11')](_0x54b5fa,_0x4359f6)[_0x1b26('0x12')](function(_0x2f2a9a){logger['info'](_0x1b26('0x13'),_0x2e2b32,'request\x20sent');logger[_0x1b26('0x14')](_0x1b26('0x15'),_0x2e2b32,_0x1b26('0x16'),JSON['stringify'](_0x2f2a9a));if(_0x2f2a9a[_0x1b26('0x17')]){if(_0x2f2a9a[_0x1b26('0x17')][_0x1b26('0x18')]===0x1f4){logger[_0x1b26('0x17')](_0x1b26('0x13'),_0x2e2b32,_0x2f2a9a[_0x1b26('0x17')][_0x1b26('0x19')]);return _0x3634e6(_0x2f2a9a[_0x1b26('0x17')][_0x1b26('0x19')]);}logger[_0x1b26('0x17')](_0x1b26('0x13'),_0x2e2b32,_0x2f2a9a[_0x1b26('0x17')][_0x1b26('0x19')]);return _0x4d77be(_0x2f2a9a['error']['message']);}else{logger[_0x1b26('0x1a')](_0x1b26('0x13'),_0x2e2b32,'request\x20sent');_0x4d77be(_0x2f2a9a[_0x1b26('0x1b')][_0x1b26('0x19')]);}})['catch'](function(_0x139e57){logger['error'](_0x1b26('0x13'),_0x2e2b32,_0x139e57);_0x3634e6(_0x139e57);});});}exports[_0x1b26('0x1c')]=function(_0x35ec8f){var _0x18741b=this;return new Promise(function(_0xda0dae,_0x111744){return db[_0x1b26('0x1d')][_0x1b26('0x1e')](_0x35ec8f[_0x1b26('0x1f')],{'raw':_0x35ec8f[_0x1b26('0x20')]?_0x35ec8f[_0x1b26('0x20')][_0x1b26('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35ec8f['options']?_0x35ec8f[_0x1b26('0x20')]['where']||null:null,'attributes':_0x35ec8f['options']?_0x35ec8f[_0x1b26('0x20')][_0x1b26('0x22')]||null:null,'limit':_0x35ec8f[_0x1b26('0x20')]?_0x35ec8f['options']['limit']||null:null})[_0x1b26('0x12')](function(_0x18ef3d){logger['info']('UpdateOpenchannelInteraction',_0x35ec8f);logger['debug'](_0x1b26('0x1c'),_0x35ec8f,JSON[_0x1b26('0x23')](_0x18ef3d));_0xda0dae(_0x18ef3d);})['catch'](function(_0x336a14){logger[_0x1b26('0x17')]('UpdateOpenchannelInteraction',_0x336a14[_0x1b26('0x19')],_0x35ec8f);_0x111744(_0x18741b['error'](0x1f4,_0x336a14[_0x1b26('0x19')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x357e04){return new Promise(function(_0x33eee5,_0x49b35a){return db[_0x1b26('0x1d')]['find']({'where':_0x357e04[_0x1b26('0x20')]?_0x357e04[_0x1b26('0x20')][_0x1b26('0x24')]||null:null})[_0x1b26('0x12')](function(_0x5950fd){if(_0x5950fd){return _0x5950fd[_0x1b26('0x25')](_0x357e04[_0x1b26('0x1f')][_0x1b26('0x26')],_[_0x1b26('0x27')](_0x357e04[_0x1b26('0x1f')],[_0x1b26('0x26'),'id'])||{});}})['spread'](function(_0x22a061){logger[_0x1b26('0x1a')](_0x1b26('0x28'),_0x357e04);logger[_0x1b26('0x14')](_0x1b26('0x28'),_0x357e04,JSON[_0x1b26('0x23')](_0x22a061));_0x33eee5(_0x22a061);})[_0x1b26('0x29')](function(_0xc0ee55){logger[_0x1b26('0x17')](_0x1b26('0x28'),_0xc0ee55[_0x1b26('0x19')],_0x357e04);_0x49b35a(_this[_0x1b26('0x17')](0x1f4,_0xc0ee55['message']));});});};
\ No newline at end of file
index 66fcb77..b47e1f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bbc=['removeListener','register','length','openchannelInteraction:','./openchannelInteraction.events','save','update','emit'];(function(_0x274725,_0x1598aa){var _0x66adc6=function(_0x179106){while(--_0x179106){_0x274725['push'](_0x274725['shift']());}};_0x66adc6(++_0x1598aa);}(_0x4bbc,0x134));var _0xc4bb=function(_0xb971dc,_0x54ddd9){_0xb971dc=_0xb971dc-0x0;var _0x4a6b3f=_0x4bbc[_0xb971dc];return _0x4a6b3f;};'use strict';var OpenchannelInteractionEvents=require(_0xc4bb('0x0'));var events=[_0xc4bb('0x1'),'remove',_0xc4bb('0x2')];function createListener(_0x48da43,_0x483e54){return function(_0x4ef94e){_0x483e54[_0xc4bb('0x3')](_0x48da43,_0x4ef94e);};}function removeListener(_0x262013,_0x872c01){return function(){OpenchannelInteractionEvents[_0xc4bb('0x4')](_0x262013,_0x872c01);};}exports[_0xc4bb('0x5')]=function(_0xbaeac0){for(var _0x1bb41b=0x0,_0x481167=events[_0xc4bb('0x6')];_0x1bb41b<_0x481167;_0x1bb41b++){var _0x455654=events[_0x1bb41b];var _0x3a9288=createListener(_0xc4bb('0x7')+_0x455654,_0xbaeac0);OpenchannelInteractionEvents['on'](_0x455654,_0x3a9288);}};
\ No newline at end of file
+var _0xceeb=['update','emit','removeListener','length','openchannelInteraction:','save'];(function(_0x9894ff,_0x9256ba){var _0x462988=function(_0x38f4ad){while(--_0x38f4ad){_0x9894ff['push'](_0x9894ff['shift']());}};_0x462988(++_0x9256ba);}(_0xceeb,0x155));var _0xbcee=function(_0x3e586b,_0x3779c4){_0x3e586b=_0x3e586b-0x0;var _0x9cef0e=_0xceeb[_0x3e586b];return _0x9cef0e;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0xbcee('0x0'),'remove',_0xbcee('0x1')];function createListener(_0x15bb48,_0x2d973d){return function(_0x2fd040){_0x2d973d[_0xbcee('0x2')](_0x15bb48,_0x2fd040);};}function removeListener(_0x2442bd,_0x5d646d){return function(){OpenchannelInteractionEvents[_0xbcee('0x3')](_0x2442bd,_0x5d646d);};}exports['register']=function(_0x3e1a3a){for(var _0x45a9f1=0x0,_0x3b33c3=events[_0xbcee('0x4')];_0x45a9f1<_0x3b33c3;_0x45a9f1++){var _0x59d069=events[_0x45a9f1];var _0x1bccce=createListener(_0xbcee('0x5')+_0x59d069,_0x3e1a3a);OpenchannelInteractionEvents['on'](_0x59d069,_0x1bccce);}};
\ No newline at end of file
index d8d17e4..5e1bcfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util'];(function(_0x3b9368,_0x52be6f){var _0x27290d=function(_0x4161b5){while(--_0x4161b5){_0x3b9368['push'](_0x3b9368['shift']());}};_0x27290d(++_0x52be6f);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./openchannelMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x0d8b('0x10')),controller['create']);router[_0x0d8b('0x11')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0x13'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x14')]);router[_0x0d8b('0x11')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x16')]);router[_0x0d8b('0x17')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util'];(function(_0x24c2aa,_0x315eef){var _0x5c6c16=function(_0x4ab5c0){while(--_0x4ab5c0){_0x24c2aa['push'](_0x24c2aa['shift']());}};_0x5c6c16(++_0x315eef);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./openchannelMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x0d8b('0x10')),controller['create']);router[_0x0d8b('0x11')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0x13'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x14')]);router[_0x0d8b('0x11')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x16')]);router[_0x0d8b('0x17')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x18')]);module['exports']=router;
\ No newline at end of file
index 11e957c..640e14c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe9d=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','DATE','STRING'];(function(_0x438fe1,_0x3308d5){var _0x3c8e1b=function(_0x2f8d41){while(--_0x2f8d41){_0x438fe1['push'](_0x438fe1['shift']());}};_0x3c8e1b(++_0x3308d5);}(_0xfe9d,0x10e));var _0xdfe9=function(_0x3c8f35,_0xde2d9d){_0x3c8f35=_0x3c8f35-0x0;var _0x4a226d=_0xfe9d[_0x3c8f35];return _0x4a226d;};'use strict';var Sequelize=require(_0xdfe9('0x0'));module[_0xdfe9('0x1')]={'body':{'type':Sequelize[_0xdfe9('0x2')](_0xdfe9('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xdfe9('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xdfe9('0x5')]('in','out'),'defaultValue':_0xdfe9('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xdfe9('0x7')]},'providerName':{'type':Sequelize[_0xdfe9('0x8')]},'providerResponse':{'type':Sequelize[_0xdfe9('0x2')]}};
\ No newline at end of file
+var _0xc29b=['sequelize','exports','TEXT','BOOLEAN','out','DATE','STRING'];(function(_0x8de113,_0x25c1ec){var _0x5a7194=function(_0x3d0fa3){while(--_0x3d0fa3){_0x8de113['push'](_0x8de113['shift']());}};_0x5a7194(++_0x25c1ec);}(_0xc29b,0x12d));var _0xbc29=function(_0x10a705,_0x55f704){_0x10a705=_0x10a705-0x0;var _0x410a6d=_0xc29b[_0x10a705];return _0x410a6d;};'use strict';var Sequelize=require(_0xbc29('0x0'));module[_0xbc29('0x1')]={'body':{'type':Sequelize[_0xbc29('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xbc29('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xbc29('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xbc29('0x4')),'defaultValue':_0xbc29('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0xbc29('0x5')]},'providerName':{'type':Sequelize[_0xbc29('0x6')]},'providerResponse':{'type':Sequelize[_0xbc29('0x2')]}};
\ No newline at end of file
index a3fe36d..26b5e5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31c2=['reject','save','update','stack','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','show','params','keys','find','create','body','destroy','describe','openchannel-interactions','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','agent','UserId','get','OpenchannelInteraction','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','accept','EventManager','acceptmessage','openchannel','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','apply'];(function(_0x468237,_0xfbb957){var _0x3e67bc=function(_0x1a76e2){while(--_0x1a76e2){_0x468237['push'](_0x468237['shift']());}};_0x3e67bc(++_0xfbb957);}(_0x31c2,0x1e1));var _0x231c=function(_0x54a706,_0x564204){_0x54a706=_0x54a706-0x0;var _0x471156=_0x31c2[_0x54a706];return _0x471156;};'use strict';var emlformat=require(_0x231c('0x0'));var rimraf=require(_0x231c('0x1'));var zipdir=require(_0x231c('0x2'));var jsonpatch=require(_0x231c('0x3'));var rp=require(_0x231c('0x4'));var moment=require(_0x231c('0x5'));var BPromise=require(_0x231c('0x6'));var Mustache=require(_0x231c('0x7'));var util=require('util');var path=require('path');var sox=require(_0x231c('0x8'));var csv=require(_0x231c('0x9'));var ejs=require(_0x231c('0xa'));var fs=require('fs');var fs_extra=require(_0x231c('0xb'));var _=require('lodash');var squel=require(_0x231c('0xc'));var crypto=require('crypto');var jsforce=require(_0x231c('0xd'));var deskjs=require(_0x231c('0xe'));var toCsv=require(_0x231c('0x9'));var querystring=require('querystring');var Papa=require(_0x231c('0xf'));var Redis=require(_0x231c('0x10'));var authService=require(_0x231c('0x11'));var qs=require(_0x231c('0x12'));var as=require(_0x231c('0x13'));var hardwareService=require(_0x231c('0x14'));var logger=require(_0x231c('0x15'))('api');var utils=require(_0x231c('0x16'));var config=require(_0x231c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x231c('0x18'))['db'];config[_0x231c('0x19')]=_[_0x231c('0x1a')](config[_0x231c('0x19')],{'host':_0x231c('0x1b'),'port':0x18eb});var socket=require(_0x231c('0x1c'))(new Redis(config[_0x231c('0x19')]));require(_0x231c('0x1d'))[_0x231c('0x1e')](socket);var jayson=require(_0x231c('0x1f'));var client=jayson[_0x231c('0x20')][_0x231c('0x21')]({'port':0x232c});var client9002=jayson[_0x231c('0x20')][_0x231c('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x12a6ad,_0x210f2e,_0x123f2d,_0x192bac){return new BPromise(function(_0x1852e5,_0x34d540){var _0x51b8ca=_0x192bac||client;return _0x51b8ca[_0x231c('0x22')](_0x12a6ad,_0x123f2d)[_0x231c('0x23')](function(_0x17f9ce){logger[_0x231c('0x24')](_0x231c('0x25'),_0x210f2e,_0x231c('0x26'));logger[_0x231c('0x27')](_0x231c('0x28'),_0x210f2e,_0x231c('0x26'),JSON[_0x231c('0x29')](_0x17f9ce));if(_0x17f9ce['error']){if(_0x17f9ce[_0x231c('0x2a')]['code']===0x1f4){logger[_0x231c('0x2a')]('OpenchannelMessage,\x20%s,\x20%s',_0x210f2e,_0x17f9ce[_0x231c('0x2a')][_0x231c('0x2b')]);return _0x34d540(_0x17f9ce[_0x231c('0x2a')][_0x231c('0x2b')]);}logger[_0x231c('0x2a')](_0x231c('0x25'),_0x210f2e,_0x17f9ce[_0x231c('0x2a')][_0x231c('0x2b')]);return _0x1852e5(_0x17f9ce['error'][_0x231c('0x2b')]);}else{logger[_0x231c('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x210f2e,_0x231c('0x26'));_0x1852e5(_0x17f9ce[_0x231c('0x2c')]['message']);}})[_0x231c('0x2d')](function(_0x564939){logger[_0x231c('0x2a')](_0x231c('0x25'),_0x210f2e,_0x564939);_0x34d540(_0x564939);});});}function respondWithStatusCode(_0x40e8ff,_0x2a673c){_0x2a673c=_0x2a673c||0xcc;return function(_0x449d74){if(_0x449d74){return _0x40e8ff[_0x231c('0x2e')](_0x2a673c);}return _0x40e8ff[_0x231c('0x2f')](_0x2a673c)['end']();};}function respondWithResult(_0x33cc46,_0x1b53bc){_0x1b53bc=_0x1b53bc||0xc8;return function(_0x58f361){if(_0x58f361){return _0x33cc46[_0x231c('0x2f')](_0x1b53bc)[_0x231c('0x30')](_0x58f361);}};}function respondWithFilteredResult(_0x45ced8,_0xeeddfc){return function(_0x271635){if(_0x271635){var _0x15a9bb=typeof _0xeeddfc[_0x231c('0x31')]==='undefined'&&typeof _0xeeddfc[_0x231c('0x32')]===_0x231c('0x33');var _0x578512=_0x271635['count'];var _0x5bfc50=_0x15a9bb?0x0:_0xeeddfc[_0x231c('0x31')];var _0x5d39fa=_0x15a9bb?_0x271635[_0x231c('0x34')]:_0xeeddfc['offset']+_0xeeddfc[_0x231c('0x32')];var _0x35a956;if(_0x5d39fa>=_0x578512){_0x5d39fa=_0x578512;_0x35a956=0xc8;}else{_0x35a956=0xce;}_0x45ced8[_0x231c('0x2f')](_0x35a956);return _0x45ced8[_0x231c('0x35')]('Content-Range',_0x5bfc50+'-'+_0x5d39fa+'/'+_0x578512)[_0x231c('0x30')](_0x271635);}return null;};}function patchUpdates(_0x379017){return function(_0x1ac65b){try{jsonpatch[_0x231c('0x36')](_0x1ac65b,_0x379017,!![]);}catch(_0x43006d){return BPromise[_0x231c('0x37')](_0x43006d);}return _0x1ac65b[_0x231c('0x38')]();};}function saveUpdates(_0xa097e,_0x57f505){return function(_0x5e2d03){if(_0x5e2d03){return _0x5e2d03[_0x231c('0x39')](_0xa097e)[_0x231c('0x23')](function(_0x31d515){return _0x31d515;});}return null;};}function removeEntity(_0x2d0eb0,_0xfdd111){return function(_0x2fd2e2){if(_0x2fd2e2){return _0x2fd2e2['destroy']()[_0x231c('0x23')](function(){_0x2d0eb0[_0x231c('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5df5c9,_0xcbe3d6){return function(_0x4e9ab5){if(!_0x4e9ab5){_0x5df5c9[_0x231c('0x2e')](0x194);}return _0x4e9ab5;};}function handleError(_0x49d72c,_0x1cb35a){_0x1cb35a=_0x1cb35a||0x1f4;return function(_0x2c7c22){logger['error'](_0x2c7c22[_0x231c('0x3a')]);if(_0x2c7c22[_0x231c('0x3b')]){delete _0x2c7c22[_0x231c('0x3b')];}_0x49d72c['status'](_0x1cb35a)[_0x231c('0x3c')](_0x2c7c22);};}exports[_0x231c('0x3d')]=function(_0x705dc4,_0x19e005){var _0x2269b9={},_0x25666b={},_0x2a8379={'count':0x0,'rows':[]};var _0x1fd8ce=_[_0x231c('0x3e')](db[_0x231c('0x3f')][_0x231c('0x40')],function(_0x2c8033){return{'name':_0x2c8033[_0x231c('0x41')],'type':_0x2c8033['type'][_0x231c('0x42')]};});_0x25666b[_0x231c('0x43')]=_[_0x231c('0x3e')](_0x1fd8ce,_0x231c('0x3b'));_0x25666b[_0x231c('0x44')]=_['keys'](_0x705dc4[_0x231c('0x44')]);_0x25666b[_0x231c('0x45')]=_[_0x231c('0x46')](_0x25666b['model'],_0x25666b[_0x231c('0x44')]);_0x2269b9[_0x231c('0x47')]=_[_0x231c('0x46')](_0x25666b[_0x231c('0x43')],qs[_0x231c('0x48')](_0x705dc4[_0x231c('0x44')]['fields']));_0x2269b9[_0x231c('0x47')]=_0x2269b9[_0x231c('0x47')][_0x231c('0x49')]?_0x2269b9[_0x231c('0x47')]:_0x25666b['model'];if(!_0x705dc4[_0x231c('0x44')]['hasOwnProperty'](_0x231c('0x4a'))){_0x2269b9['limit']=qs[_0x231c('0x32')](_0x705dc4[_0x231c('0x44')][_0x231c('0x32')]);_0x2269b9[_0x231c('0x31')]=qs[_0x231c('0x31')](_0x705dc4[_0x231c('0x44')]['offset']);}_0x2269b9[_0x231c('0x4b')]=qs[_0x231c('0x4c')](_0x705dc4[_0x231c('0x44')]['sort']);_0x2269b9[_0x231c('0x4d')]=qs[_0x231c('0x45')](_[_0x231c('0x4e')](_0x705dc4[_0x231c('0x44')],_0x25666b['filters']),_0x1fd8ce);if(_0x705dc4[_0x231c('0x44')]['filter']){_0x2269b9[_0x231c('0x4d')]=_[_0x231c('0x4f')](_0x2269b9[_0x231c('0x4d')],{'$or':_[_0x231c('0x3e')](_0x1fd8ce,function(_0x3d88d3){if(_0x3d88d3[_0x231c('0x50')]!==_0x231c('0x51')){var _0x27ab66={};_0x27ab66[_0x3d88d3[_0x231c('0x3b')]]={'$like':'%'+_0x705dc4[_0x231c('0x44')][_0x231c('0x52')]+'%'};return _0x27ab66;}})});}_0x2269b9=_[_0x231c('0x4f')]({},_0x2269b9,_0x705dc4[_0x231c('0x53')]);var _0x373fc7={'where':_0x2269b9['where']};return db[_0x231c('0x3f')][_0x231c('0x34')](_0x373fc7)[_0x231c('0x23')](function(_0x3a3903){_0x2a8379[_0x231c('0x34')]=_0x3a3903;if(_0x705dc4['query']['includeAll']){_0x2269b9[_0x231c('0x54')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x231c('0x55')](_0x2269b9);})[_0x231c('0x23')](function(_0x1ef2e7){_0x2a8379['rows']=_0x1ef2e7;return _0x2a8379;})[_0x231c('0x23')](respondWithFilteredResult(_0x19e005,_0x2269b9))['catch'](handleError(_0x19e005,null));};exports[_0x231c('0x56')]=function(_0x24f6b6,_0x52ed70){var _0x45427c={'raw':!![],'where':{'id':_0x24f6b6[_0x231c('0x57')]['id']}},_0xae2f07={};_0xae2f07['model']=_['keys'](db['OpenchannelMessage'][_0x231c('0x40')]);_0xae2f07[_0x231c('0x44')]=_[_0x231c('0x58')](_0x24f6b6['query']);_0xae2f07[_0x231c('0x45')]=_[_0x231c('0x46')](_0xae2f07[_0x231c('0x43')],_0xae2f07[_0x231c('0x44')]);_0x45427c[_0x231c('0x47')]=_[_0x231c('0x46')](_0xae2f07[_0x231c('0x43')],qs[_0x231c('0x48')](_0x24f6b6[_0x231c('0x44')][_0x231c('0x48')]));_0x45427c[_0x231c('0x47')]=_0x45427c['attributes'][_0x231c('0x49')]?_0x45427c[_0x231c('0x47')]:_0xae2f07['model'];if(_0x24f6b6[_0x231c('0x44')]['includeAll']){_0x45427c[_0x231c('0x54')]=[{'all':!![]}];}_0x45427c=_[_0x231c('0x4f')]({},_0x45427c,_0x24f6b6[_0x231c('0x53')]);return db[_0x231c('0x3f')][_0x231c('0x59')](_0x45427c)[_0x231c('0x23')](handleEntityNotFound(_0x52ed70,null))[_0x231c('0x23')](respondWithResult(_0x52ed70,null))[_0x231c('0x2d')](handleError(_0x52ed70,null));};exports[_0x231c('0x5a')]=function(_0x340db9,_0x4eed45){return db[_0x231c('0x3f')][_0x231c('0x5a')](_0x340db9[_0x231c('0x5b')],{})['then'](respondWithResult(_0x4eed45,0xc9))[_0x231c('0x2d')](handleError(_0x4eed45,null));};exports[_0x231c('0x39')]=function(_0x4eff58,_0x19b745){if(_0x4eff58['body']['id']){delete _0x4eff58[_0x231c('0x5b')]['id'];}return db[_0x231c('0x3f')][_0x231c('0x59')]({'where':{'id':_0x4eff58[_0x231c('0x57')]['id']}})[_0x231c('0x23')](handleEntityNotFound(_0x19b745,null))['then'](saveUpdates(_0x4eff58[_0x231c('0x5b')],null))[_0x231c('0x23')](respondWithResult(_0x19b745,null))[_0x231c('0x2d')](handleError(_0x19b745,null));};exports[_0x231c('0x5c')]=function(_0x2889fb,_0x29ceda){return db[_0x231c('0x3f')]['find']({'where':{'id':_0x2889fb['params']['id']}})['then'](handleEntityNotFound(_0x29ceda,null))[_0x231c('0x23')](removeEntity(_0x29ceda,null))[_0x231c('0x2d')](handleError(_0x29ceda,null));};exports['describe']=function(_0x28ce15,_0x4d476e){return db[_0x231c('0x3f')][_0x231c('0x5d')]()[_0x231c('0x23')](respondWithResult(_0x4d476e,null))[_0x231c('0x2d')](handleError(_0x4d476e,null));};var interaction_log=require('../../config/logger')(_0x231c('0x5e'));exports['accept']=function(_0x13fd0f,_0x57cb15,_0x55594b){var _0x4296c6={'agent':{},'channel':'openchannel'};if(_0x13fd0f[_0x231c('0x5b')]['id']){delete _0x13fd0f[_0x231c('0x5b')]['id'];}_0x13fd0f['body'][_0x231c('0x5f')]=!![];_0x13fd0f[_0x231c('0x5b')][_0x231c('0x60')]=moment()[_0x231c('0x61')](_0x231c('0x62'));_0x13fd0f[_0x231c('0x5b')]['UserId']=_0x13fd0f['body']['UserId']||_0x13fd0f[_0x231c('0x63')]['id'];_0x4296c6[_0x231c('0x64')]['id']=_0x13fd0f[_0x231c('0x5b')][_0x231c('0x65')];return db[_0x231c('0x3f')]['find']({'where':{'id':_0x13fd0f['params']['id'],'UserId':null}})[_0x231c('0x23')](handleEntityNotFound(_0x57cb15,null))[_0x231c('0x23')](saveUpdates(_0x13fd0f[_0x231c('0x5b')],null))['then'](function(_0x28a07e){if(_0x28a07e){_0x4296c6[_0x231c('0x2b')]=_0x28a07e[_0x231c('0x66')]({'plain':!![]});return db[_0x231c('0x67')]['find']({'where':{'id':_0x28a07e['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x57cb15,null))[_0x231c('0x23')](function(_0x330f0e){if(_0x330f0e){return _0x330f0e['update']({'UserId':_0x13fd0f[_0x231c('0x5b')][_0x231c('0x65')],'read1stAt':_[_0x231c('0x68')](_0x330f0e[_0x231c('0x69')])?moment()[_0x231c('0x61')](_0x231c('0x62')):undefined});}return null;})['then'](function(_0x812d43){if(_0x812d43){_0x4296c6[_0x231c('0x6a')]=_0x812d43[_0x231c('0x66')]({'plain':!![]});interaction_log['info'](_0x231c('0x6b'),_0x13fd0f[_0x231c('0x63')]['id'],_0x13fd0f[_0x231c('0x63')]['name'],_0x13fd0f[_0x231c('0x63')][_0x231c('0x6c')],_0x4296c6['interaction']['id'],_0x13fd0f['body']?JSON[_0x231c('0x29')](_0x13fd0f[_0x231c('0x5b')]):_0x231c('0x6d'));return respondWithRpcPromise(_0x231c('0x6e'),_0x231c('0x6f'),_0x4296c6);}return null;})[_0x231c('0x23')](function(_0x323111){var _0x5eef4d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x323111[_0x231c('0x2b')]['ContactId'];return db[_0x231c('0x70')][_0x231c('0x44')](_0x5eef4d,{'type':db['Sequelize'][_0x231c('0x71')][_0x231c('0x72')],'raw':!![]})['then'](function(_0x21cf53){return _0x21cf53;});})['then'](function(_0xe34033){if(_0xe34033){_0x4296c6[_0x231c('0x2b')]['contact']=_0xe34033[0x0];if(!_0x13fd0f[_0x231c('0x5b')]['UserId'])return;return db[_0x231c('0x73')][_0x231c('0x59')]({'where':{'id':_0x13fd0f['body'][_0x231c('0x65')],'role':'agent'},'attributes':['id',_0x231c('0x3b'),_0x231c('0x74'),_0x231c('0x75'),_0x231c('0x76')],'raw':!![]});}return null;})[_0x231c('0x23')](function(_0x344702){if(!_0x344702)return null;_0x4296c6[_0x231c('0x2b')][_0x231c('0x64')]=_0x344702;return _0x4296c6;})[_0x231c('0x23')](function(_0x46859d){if(_0x46859d){if(_0x13fd0f[_0x231c('0x5b')][_0x231c('0x77')]){_0x4296c6[_0x231c('0x2b')][_0x231c('0x78')]=util[_0x231c('0x61')](_0x231c('0x79'),_0x13fd0f[_0x231c('0x63')][_0x231c('0x3b')]);_0x4296c6[_0x231c('0x2b')][_0x231c('0x7a')]=_0x4296c6[_0x231c('0x7a')];_0x4296c6[_0x231c('0x2b')][_0x231c('0x7b')]=_0x4296c6['channel'];_0x4296c6[_0x231c('0x2b')]['event']=_0x231c('0x7c');return respondWithRpcPromise(_0x231c('0x7d'),_0x231c('0x7d'),{'event':_0x231c('0x7e'),'message':_0x4296c6['message']},client9002)['then'](function(){return _0x4296c6;});}return _0x4296c6;}return null;})['then'](respondWithResult(_0x57cb15,null))[_0x231c('0x2d')](handleError(_0x57cb15,null));};var interaction_log=require(_0x231c('0x15'))('openchannel-interactions');exports[_0x231c('0x37')]=function(_0x2f2f40,_0x5ec9b3,_0x16a8a3){var _0x4b3e84={'agent':{},'channel':_0x231c('0x7f')};if(_0x2f2f40[_0x231c('0x5b')]['id']){delete _0x2f2f40[_0x231c('0x5b')]['id'];}_0x2f2f40[_0x231c('0x5b')][_0x231c('0x65')]=_0x2f2f40['body']['UserId']||_0x2f2f40[_0x231c('0x63')]['id'];_0x4b3e84[_0x231c('0x64')]['id']=_0x2f2f40[_0x231c('0x5b')]['UserId'];return db[_0x231c('0x3f')][_0x231c('0x59')]({'where':{'id':_0x2f2f40['params']['id'],'UserId':null}})[_0x231c('0x23')](handleEntityNotFound(_0x5ec9b3,null))[_0x231c('0x23')](function(_0x4f4b49){if(_0x4f4b49){_0x4b3e84[_0x231c('0x2b')]=_0x4f4b49[_0x231c('0x66')]({'plain':!![]});return db[_0x231c('0x67')][_0x231c('0x59')]({'where':{'id':_0x4f4b49[_0x231c('0x80')]}});}return null;})[_0x231c('0x23')](handleEntityNotFound(_0x5ec9b3,null))[_0x231c('0x23')](function(_0x5bd2f5){if(_0x5bd2f5){_0x4b3e84[_0x231c('0x6a')]=_0x5bd2f5[_0x231c('0x66')]({'plain':!![]});interaction_log[_0x231c('0x24')](_0x231c('0x81'),_0x2f2f40[_0x231c('0x63')]['id'],_0x2f2f40[_0x231c('0x63')][_0x231c('0x3b')],_0x2f2f40['user'][_0x231c('0x6c')],_0x4b3e84[_0x231c('0x6a')]['id'],_0x2f2f40[_0x231c('0x5b')]?JSON[_0x231c('0x29')](_0x2f2f40[_0x231c('0x5b')]):_0x231c('0x6d'));return respondWithRpcPromise(_0x231c('0x82'),_0x231c('0x83'),_0x4b3e84);}return null;})[_0x231c('0x23')](function(_0x46f6f1){var _0x32d698=_0x231c('0x84')+_0x46f6f1[_0x231c('0x2b')]['ContactId'];return db[_0x231c('0x70')][_0x231c('0x44')](_0x32d698,{'type':db['Sequelize']['QueryTypes'][_0x231c('0x72')],'raw':!![]})[_0x231c('0x23')](function(_0x2bc24e){return _0x2bc24e;});})[_0x231c('0x23')](function(_0x5d94fe){if(_0x5d94fe){_0x4b3e84[_0x231c('0x2b')]['contact']=_0x5d94fe[0x0];if(!_0x2f2f40[_0x231c('0x5b')][_0x231c('0x65')])return;return db['User'][_0x231c('0x59')]({'where':{'id':_0x2f2f40['body'][_0x231c('0x65')],'role':'agent'},'attributes':['id',_0x231c('0x3b'),_0x231c('0x74'),_0x231c('0x75'),_0x231c('0x76')],'raw':!![]});}return null;})[_0x231c('0x23')](function(_0x59b622){if(!_0x59b622)return null;_0x4b3e84['message'][_0x231c('0x64')]=_0x59b622;return _0x4b3e84;})[_0x231c('0x23')](function(_0xc2e4a0){if(_0xc2e4a0){_0xc2e4a0['message'][_0x231c('0x78')]=util[_0x231c('0x61')](_0x231c('0x79'),_0x2f2f40[_0x231c('0x63')][_0x231c('0x3b')]);_0xc2e4a0['message'][_0x231c('0x7a')]=_0x4b3e84[_0x231c('0x7a')];_0xc2e4a0[_0x231c('0x2b')][_0x231c('0x7b')]=_0x4b3e84['channel'];_0xc2e4a0[_0x231c('0x2b')]['event']=_0x231c('0x37');respondWithRpcPromise(_0x231c('0x7d'),_0x231c('0x7d'),{'event':_0x231c('0x85'),'message':_0xc2e4a0['message']},client9002);return _0x4b3e84;}return null;})[_0x231c('0x23')](respondWithResult(_0x5ec9b3,null))['catch'](handleError(_0x5ec9b3,null));};
\ No newline at end of file
+var _0x4ca6=['readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','get','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','jayson/promise','http','client','request','then','info','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','name','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','include','findAll','params','length','find','create','body','describe','openchannel-interactions','openchannel','read'];(function(_0x2139b1,_0x1318ad){var _0x13639b=function(_0x5bf590){while(--_0x5bf590){_0x2139b1['push'](_0x2139b1['shift']());}};_0x13639b(++_0x1318ad);}(_0x4ca6,0x1a9));var _0x64ca=function(_0x1f1e31,_0x27b5c3){_0x1f1e31=_0x1f1e31-0x0;var _0x229b56=_0x4ca6[_0x1f1e31];return _0x229b56;};'use strict';var emlformat=require(_0x64ca('0x0'));var rimraf=require(_0x64ca('0x1'));var zipdir=require(_0x64ca('0x2'));var jsonpatch=require(_0x64ca('0x3'));var rp=require(_0x64ca('0x4'));var moment=require(_0x64ca('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x64ca('0x6'));var util=require('util');var path=require(_0x64ca('0x7'));var sox=require(_0x64ca('0x8'));var csv=require('to-csv');var ejs=require(_0x64ca('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64ca('0xa'));var squel=require('squel');var crypto=require(_0x64ca('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x64ca('0xc'));var querystring=require(_0x64ca('0xd'));var Papa=require(_0x64ca('0xe'));var Redis=require(_0x64ca('0xf'));var authService=require(_0x64ca('0x10'));var qs=require(_0x64ca('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x64ca('0x12'))('api');var utils=require(_0x64ca('0x13'));var config=require(_0x64ca('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x64ca('0x15'))['db'];config[_0x64ca('0x16')]=_[_0x64ca('0x17')](config['redis'],{'host':_0x64ca('0x18'),'port':0x18eb});var socket=require(_0x64ca('0x19'))(new Redis(config[_0x64ca('0x16')]));require(_0x64ca('0x1a'))['register'](socket);var jayson=require(_0x64ca('0x1b'));var client=jayson['client'][_0x64ca('0x1c')]({'port':0x232c});var client9002=jayson[_0x64ca('0x1d')][_0x64ca('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x305c64,_0x2d55de,_0x4f1aec,_0x3eba95){return new BPromise(function(_0x163bb2,_0x1c27e5){var _0x284440=_0x3eba95||client;return _0x284440[_0x64ca('0x1e')](_0x305c64,_0x4f1aec)[_0x64ca('0x1f')](function(_0x508a6c){logger[_0x64ca('0x20')](_0x64ca('0x21'),_0x2d55de,'request\x20sent');logger[_0x64ca('0x22')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x2d55de,_0x64ca('0x23'),JSON[_0x64ca('0x24')](_0x508a6c));if(_0x508a6c[_0x64ca('0x25')]){if(_0x508a6c[_0x64ca('0x25')][_0x64ca('0x26')]===0x1f4){logger[_0x64ca('0x25')](_0x64ca('0x21'),_0x2d55de,_0x508a6c[_0x64ca('0x25')][_0x64ca('0x27')]);return _0x1c27e5(_0x508a6c['error'][_0x64ca('0x27')]);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x2d55de,_0x508a6c[_0x64ca('0x25')][_0x64ca('0x27')]);return _0x163bb2(_0x508a6c[_0x64ca('0x25')][_0x64ca('0x27')]);}else{logger[_0x64ca('0x20')](_0x64ca('0x21'),_0x2d55de,'request\x20sent');_0x163bb2(_0x508a6c[_0x64ca('0x28')][_0x64ca('0x27')]);}})[_0x64ca('0x29')](function(_0x4c71a7){logger[_0x64ca('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0x2d55de,_0x4c71a7);_0x1c27e5(_0x4c71a7);});});}function respondWithStatusCode(_0x46e7e3,_0x567759){_0x567759=_0x567759||0xcc;return function(_0x4c2f99){if(_0x4c2f99){return _0x46e7e3[_0x64ca('0x2a')](_0x567759);}return _0x46e7e3['status'](_0x567759)[_0x64ca('0x2b')]();};}function respondWithResult(_0x51c975,_0x550bbd){_0x550bbd=_0x550bbd||0xc8;return function(_0x62a13d){if(_0x62a13d){return _0x51c975[_0x64ca('0x2c')](_0x550bbd)[_0x64ca('0x2d')](_0x62a13d);}};}function respondWithFilteredResult(_0x3295ee,_0x360b06){return function(_0xf7fb91){if(_0xf7fb91){var _0x18f7f4=typeof _0x360b06[_0x64ca('0x2e')]==='undefined'&&typeof _0x360b06[_0x64ca('0x2f')]===_0x64ca('0x30');var _0x2af41a=_0xf7fb91['count'];var _0xc1d008=_0x18f7f4?0x0:_0x360b06[_0x64ca('0x2e')];var _0x3c554f=_0x18f7f4?_0xf7fb91[_0x64ca('0x31')]:_0x360b06[_0x64ca('0x2e')]+_0x360b06[_0x64ca('0x2f')];var _0x3e6ccf;if(_0x3c554f>=_0x2af41a){_0x3c554f=_0x2af41a;_0x3e6ccf=0xc8;}else{_0x3e6ccf=0xce;}_0x3295ee[_0x64ca('0x2c')](_0x3e6ccf);return _0x3295ee['set'](_0x64ca('0x32'),_0xc1d008+'-'+_0x3c554f+'/'+_0x2af41a)[_0x64ca('0x2d')](_0xf7fb91);}return null;};}function patchUpdates(_0x5db7fa){return function(_0x56be4c){try{jsonpatch[_0x64ca('0x33')](_0x56be4c,_0x5db7fa,!![]);}catch(_0x530cf0){return BPromise[_0x64ca('0x34')](_0x530cf0);}return _0x56be4c[_0x64ca('0x35')]();};}function saveUpdates(_0x327684,_0x1865df){return function(_0x1ba0bf){if(_0x1ba0bf){return _0x1ba0bf[_0x64ca('0x36')](_0x327684)[_0x64ca('0x1f')](function(_0x20d7e0){return _0x20d7e0;});}return null;};}function removeEntity(_0x33c067,_0x5b288b){return function(_0x35387a){if(_0x35387a){return _0x35387a[_0x64ca('0x37')]()[_0x64ca('0x1f')](function(){_0x33c067['status'](0xcc)[_0x64ca('0x2b')]();});}};}function handleEntityNotFound(_0xa38043,_0xf576c1){return function(_0x37801a){if(!_0x37801a){_0xa38043['sendStatus'](0x194);}return _0x37801a;};}function handleError(_0x4ec7b2,_0x37467f){_0x37467f=_0x37467f||0x1f4;return function(_0x53289c){logger['error'](_0x53289c['stack']);if(_0x53289c[_0x64ca('0x38')]){delete _0x53289c['name'];}_0x4ec7b2[_0x64ca('0x2c')](_0x37467f)['send'](_0x53289c);};}exports[_0x64ca('0x39')]=function(_0x49d478,_0x43ae23){var _0x4a6187={},_0x4f9100={},_0x84cac7={'count':0x0,'rows':[]};var _0x27d994=_[_0x64ca('0x3a')](db[_0x64ca('0x3b')][_0x64ca('0x3c')],function(_0x6f8879){return{'name':_0x6f8879[_0x64ca('0x3d')],'type':_0x6f8879[_0x64ca('0x3e')][_0x64ca('0x3f')]};});_0x4f9100[_0x64ca('0x40')]=_[_0x64ca('0x3a')](_0x27d994,_0x64ca('0x38'));_0x4f9100[_0x64ca('0x41')]=_[_0x64ca('0x42')](_0x49d478[_0x64ca('0x41')]);_0x4f9100[_0x64ca('0x43')]=_[_0x64ca('0x44')](_0x4f9100[_0x64ca('0x40')],_0x4f9100['query']);_0x4a6187[_0x64ca('0x45')]=_['intersection'](_0x4f9100['model'],qs[_0x64ca('0x46')](_0x49d478[_0x64ca('0x41')][_0x64ca('0x46')]));_0x4a6187[_0x64ca('0x45')]=_0x4a6187['attributes']['length']?_0x4a6187['attributes']:_0x4f9100[_0x64ca('0x40')];if(!_0x49d478[_0x64ca('0x41')][_0x64ca('0x47')](_0x64ca('0x48'))){_0x4a6187[_0x64ca('0x2f')]=qs[_0x64ca('0x2f')](_0x49d478['query'][_0x64ca('0x2f')]);_0x4a6187[_0x64ca('0x2e')]=qs[_0x64ca('0x2e')](_0x49d478[_0x64ca('0x41')][_0x64ca('0x2e')]);}_0x4a6187['order']=qs[_0x64ca('0x49')](_0x49d478[_0x64ca('0x41')][_0x64ca('0x49')]);_0x4a6187['where']=qs[_0x64ca('0x43')](_[_0x64ca('0x4a')](_0x49d478['query'],_0x4f9100[_0x64ca('0x43')]),_0x27d994);if(_0x49d478[_0x64ca('0x41')][_0x64ca('0x4b')]){_0x4a6187[_0x64ca('0x4c')]=_['merge'](_0x4a6187[_0x64ca('0x4c')],{'$or':_['map'](_0x27d994,function(_0x346455){if(_0x346455[_0x64ca('0x3e')]!=='VIRTUAL'){var _0x17af98={};_0x17af98[_0x346455[_0x64ca('0x38')]]={'$like':'%'+_0x49d478[_0x64ca('0x41')]['filter']+'%'};return _0x17af98;}})});}_0x4a6187=_[_0x64ca('0x4d')]({},_0x4a6187,_0x49d478[_0x64ca('0x4e')]);var _0x36e4c8={'where':_0x4a6187[_0x64ca('0x4c')]};return db['OpenchannelMessage']['count'](_0x36e4c8)[_0x64ca('0x1f')](function(_0x12e9dd){_0x84cac7[_0x64ca('0x31')]=_0x12e9dd;if(_0x49d478[_0x64ca('0x41')][_0x64ca('0x4f')]){_0x4a6187[_0x64ca('0x50')]=[{'all':!![]}];}return db[_0x64ca('0x3b')][_0x64ca('0x51')](_0x4a6187);})[_0x64ca('0x1f')](function(_0x49e9e7){_0x84cac7['rows']=_0x49e9e7;return _0x84cac7;})[_0x64ca('0x1f')](respondWithFilteredResult(_0x43ae23,_0x4a6187))['catch'](handleError(_0x43ae23,null));};exports['show']=function(_0x42ef70,_0x303ec3){var _0x2d3fe0={'raw':!![],'where':{'id':_0x42ef70[_0x64ca('0x52')]['id']}},_0x284cf3={};_0x284cf3[_0x64ca('0x40')]=_['keys'](db[_0x64ca('0x3b')]['rawAttributes']);_0x284cf3['query']=_[_0x64ca('0x42')](_0x42ef70[_0x64ca('0x41')]);_0x284cf3[_0x64ca('0x43')]=_[_0x64ca('0x44')](_0x284cf3[_0x64ca('0x40')],_0x284cf3[_0x64ca('0x41')]);_0x2d3fe0[_0x64ca('0x45')]=_['intersection'](_0x284cf3[_0x64ca('0x40')],qs[_0x64ca('0x46')](_0x42ef70[_0x64ca('0x41')][_0x64ca('0x46')]));_0x2d3fe0[_0x64ca('0x45')]=_0x2d3fe0[_0x64ca('0x45')][_0x64ca('0x53')]?_0x2d3fe0[_0x64ca('0x45')]:_0x284cf3[_0x64ca('0x40')];if(_0x42ef70['query'][_0x64ca('0x4f')]){_0x2d3fe0[_0x64ca('0x50')]=[{'all':!![]}];}_0x2d3fe0=_[_0x64ca('0x4d')]({},_0x2d3fe0,_0x42ef70[_0x64ca('0x4e')]);return db['OpenchannelMessage'][_0x64ca('0x54')](_0x2d3fe0)[_0x64ca('0x1f')](handleEntityNotFound(_0x303ec3,null))[_0x64ca('0x1f')](respondWithResult(_0x303ec3,null))[_0x64ca('0x29')](handleError(_0x303ec3,null));};exports[_0x64ca('0x55')]=function(_0x5e1b43,_0x6f44ed){return db[_0x64ca('0x3b')]['create'](_0x5e1b43[_0x64ca('0x56')],{})[_0x64ca('0x1f')](respondWithResult(_0x6f44ed,0xc9))[_0x64ca('0x29')](handleError(_0x6f44ed,null));};exports[_0x64ca('0x36')]=function(_0x2b7b15,_0x2c31f4){if(_0x2b7b15['body']['id']){delete _0x2b7b15['body']['id'];}return db[_0x64ca('0x3b')][_0x64ca('0x54')]({'where':{'id':_0x2b7b15[_0x64ca('0x52')]['id']}})['then'](handleEntityNotFound(_0x2c31f4,null))['then'](saveUpdates(_0x2b7b15[_0x64ca('0x56')],null))[_0x64ca('0x1f')](respondWithResult(_0x2c31f4,null))[_0x64ca('0x29')](handleError(_0x2c31f4,null));};exports[_0x64ca('0x37')]=function(_0x34c3d9,_0x773998){return db[_0x64ca('0x3b')][_0x64ca('0x54')]({'where':{'id':_0x34c3d9[_0x64ca('0x52')]['id']}})['then'](handleEntityNotFound(_0x773998,null))[_0x64ca('0x1f')](removeEntity(_0x773998,null))[_0x64ca('0x29')](handleError(_0x773998,null));};exports[_0x64ca('0x57')]=function(_0x5ef15b,_0x194499){return db['OpenchannelMessage'][_0x64ca('0x57')]()[_0x64ca('0x1f')](respondWithResult(_0x194499,null))['catch'](handleError(_0x194499,null));};var interaction_log=require(_0x64ca('0x12'))(_0x64ca('0x58'));exports['accept']=function(_0x5a2b99,_0x153bcd,_0x3eada7){var _0x3c38b9={'agent':{},'channel':_0x64ca('0x59')};if(_0x5a2b99[_0x64ca('0x56')]['id']){delete _0x5a2b99[_0x64ca('0x56')]['id'];}_0x5a2b99[_0x64ca('0x56')][_0x64ca('0x5a')]=!![];_0x5a2b99[_0x64ca('0x56')][_0x64ca('0x5b')]=moment()[_0x64ca('0x5c')](_0x64ca('0x5d'));_0x5a2b99['body'][_0x64ca('0x5e')]=_0x5a2b99[_0x64ca('0x56')][_0x64ca('0x5e')]||_0x5a2b99[_0x64ca('0x5f')]['id'];_0x3c38b9['agent']['id']=_0x5a2b99[_0x64ca('0x56')][_0x64ca('0x5e')];return db[_0x64ca('0x3b')][_0x64ca('0x54')]({'where':{'id':_0x5a2b99[_0x64ca('0x52')]['id'],'UserId':null}})[_0x64ca('0x1f')](handleEntityNotFound(_0x153bcd,null))[_0x64ca('0x1f')](saveUpdates(_0x5a2b99['body'],null))[_0x64ca('0x1f')](function(_0x119cd1){if(_0x119cd1){_0x3c38b9[_0x64ca('0x27')]=_0x119cd1['get']({'plain':!![]});return db[_0x64ca('0x60')][_0x64ca('0x54')]({'where':{'id':_0x119cd1[_0x64ca('0x61')]}});}return null;})[_0x64ca('0x1f')](handleEntityNotFound(_0x153bcd,null))[_0x64ca('0x1f')](function(_0xe5fbe4){if(_0xe5fbe4){return _0xe5fbe4['update']({'UserId':_0x5a2b99[_0x64ca('0x56')][_0x64ca('0x5e')],'read1stAt':_[_0x64ca('0x62')](_0xe5fbe4[_0x64ca('0x63')])?moment()[_0x64ca('0x5c')](_0x64ca('0x5d')):undefined});}return null;})[_0x64ca('0x1f')](function(_0x2b99e4){if(_0x2b99e4){_0x3c38b9[_0x64ca('0x64')]=_0x2b99e4['get']({'plain':!![]});interaction_log['info'](_0x64ca('0x65'),_0x5a2b99[_0x64ca('0x5f')]['id'],_0x5a2b99['user']['name'],_0x5a2b99[_0x64ca('0x5f')]['role'],_0x3c38b9['interaction']['id'],_0x5a2b99['body']?JSON[_0x64ca('0x24')](_0x5a2b99['body']):_0x64ca('0x66'));return respondWithRpcPromise(_0x64ca('0x67'),'acceptMessage',_0x3c38b9);}return null;})['then'](function(_0x31ccde){var _0x48a770=_0x64ca('0x68')+_0x31ccde[_0x64ca('0x27')][_0x64ca('0x69')];return db[_0x64ca('0x6a')][_0x64ca('0x41')](_0x48a770,{'type':db[_0x64ca('0x6b')][_0x64ca('0x6c')][_0x64ca('0x6d')],'raw':!![]})[_0x64ca('0x1f')](function(_0x563afb){return _0x563afb;});})[_0x64ca('0x1f')](function(_0x554058){if(_0x554058){_0x3c38b9['message'][_0x64ca('0x6e')]=_0x554058[0x0];if(!_0x5a2b99[_0x64ca('0x56')][_0x64ca('0x5e')])return;return db[_0x64ca('0x6f')][_0x64ca('0x54')]({'where':{'id':_0x5a2b99['body']['UserId'],'role':_0x64ca('0x70')},'attributes':['id','name',_0x64ca('0x71'),_0x64ca('0x72'),_0x64ca('0x73')],'raw':!![]});}return null;})[_0x64ca('0x1f')](function(_0x20f20d){if(!_0x20f20d)return null;_0x3c38b9[_0x64ca('0x27')][_0x64ca('0x70')]=_0x20f20d;return _0x3c38b9;})['then'](function(_0x47fddf){if(_0x47fddf){if(_0x5a2b99[_0x64ca('0x56')]['manual']){_0x3c38b9[_0x64ca('0x27')][_0x64ca('0x74')]=util[_0x64ca('0x5c')](_0x64ca('0x75'),_0x5a2b99[_0x64ca('0x5f')][_0x64ca('0x38')]);_0x3c38b9[_0x64ca('0x27')][_0x64ca('0x76')]=_0x3c38b9[_0x64ca('0x76')];_0x3c38b9['message'][_0x64ca('0x77')]=_0x3c38b9[_0x64ca('0x76')];_0x3c38b9[_0x64ca('0x27')][_0x64ca('0x78')]=_0x64ca('0x79');return respondWithRpcPromise('EventManager',_0x64ca('0x7a'),{'event':_0x64ca('0x7b'),'message':_0x3c38b9[_0x64ca('0x27')]},client9002)[_0x64ca('0x1f')](function(){return _0x3c38b9;});}return _0x3c38b9;}return null;})[_0x64ca('0x1f')](respondWithResult(_0x153bcd,null))[_0x64ca('0x29')](handleError(_0x153bcd,null));};var interaction_log=require(_0x64ca('0x12'))(_0x64ca('0x58'));exports[_0x64ca('0x34')]=function(_0x2a5a27,_0x8b1629,_0x2941a7){var _0x2f1bb3={'agent':{},'channel':_0x64ca('0x59')};if(_0x2a5a27[_0x64ca('0x56')]['id']){delete _0x2a5a27[_0x64ca('0x56')]['id'];}_0x2a5a27['body']['UserId']=_0x2a5a27[_0x64ca('0x56')][_0x64ca('0x5e')]||_0x2a5a27['user']['id'];_0x2f1bb3['agent']['id']=_0x2a5a27['body'][_0x64ca('0x5e')];return db[_0x64ca('0x3b')][_0x64ca('0x54')]({'where':{'id':_0x2a5a27['params']['id'],'UserId':null}})[_0x64ca('0x1f')](handleEntityNotFound(_0x8b1629,null))[_0x64ca('0x1f')](function(_0x2f397a){if(_0x2f397a){_0x2f1bb3['message']=_0x2f397a[_0x64ca('0x7c')]({'plain':!![]});return db[_0x64ca('0x60')][_0x64ca('0x54')]({'where':{'id':_0x2f397a[_0x64ca('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x8b1629,null))[_0x64ca('0x1f')](function(_0x10095b){if(_0x10095b){_0x2f1bb3[_0x64ca('0x64')]=_0x10095b[_0x64ca('0x7c')]({'plain':!![]});interaction_log['info'](_0x64ca('0x7d'),_0x2a5a27[_0x64ca('0x5f')]['id'],_0x2a5a27[_0x64ca('0x5f')][_0x64ca('0x38')],_0x2a5a27['user'][_0x64ca('0x7e')],_0x2f1bb3[_0x64ca('0x64')]['id'],_0x2a5a27[_0x64ca('0x56')]?JSON['stringify'](_0x2a5a27[_0x64ca('0x56')]):_0x64ca('0x66'));return respondWithRpcPromise(_0x64ca('0x7f'),_0x64ca('0x80'),_0x2f1bb3);}return null;})[_0x64ca('0x1f')](function(_0x3647ad){var _0x202d26=_0x64ca('0x68')+_0x3647ad[_0x64ca('0x27')][_0x64ca('0x69')];return db[_0x64ca('0x6a')][_0x64ca('0x41')](_0x202d26,{'type':db[_0x64ca('0x6b')][_0x64ca('0x6c')][_0x64ca('0x6d')],'raw':!![]})[_0x64ca('0x1f')](function(_0xe816b4){return _0xe816b4;});})[_0x64ca('0x1f')](function(_0x984a6a){if(_0x984a6a){_0x2f1bb3[_0x64ca('0x27')]['contact']=_0x984a6a[0x0];if(!_0x2a5a27['body'][_0x64ca('0x5e')])return;return db[_0x64ca('0x6f')]['find']({'where':{'id':_0x2a5a27[_0x64ca('0x56')][_0x64ca('0x5e')],'role':_0x64ca('0x70')},'attributes':['id','name',_0x64ca('0x71'),_0x64ca('0x72'),_0x64ca('0x73')],'raw':!![]});}return null;})['then'](function(_0x77ef71){if(!_0x77ef71)return null;_0x2f1bb3[_0x64ca('0x27')][_0x64ca('0x70')]=_0x77ef71;return _0x2f1bb3;})[_0x64ca('0x1f')](function(_0x108e37){if(_0x108e37){_0x108e37['message']['interface']=util['format'](_0x64ca('0x75'),_0x2a5a27[_0x64ca('0x5f')][_0x64ca('0x38')]);_0x108e37[_0x64ca('0x27')][_0x64ca('0x76')]=_0x2f1bb3[_0x64ca('0x76')];_0x108e37[_0x64ca('0x27')][_0x64ca('0x77')]=_0x2f1bb3['channel'];_0x108e37['message'][_0x64ca('0x78')]=_0x64ca('0x34');respondWithRpcPromise(_0x64ca('0x7a'),_0x64ca('0x7a'),{'event':'rejectmessage','message':_0x108e37[_0x64ca('0x27')]},client9002);return _0x2f1bb3;}return null;})[_0x64ca('0x1f')](respondWithResult(_0x8b1629,null))[_0x64ca('0x29')](handleError(_0x8b1629,null));};
\ No newline at end of file
index bb4d649..c33325f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2ae=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x170166,_0x515ade){var _0x554efd=function(_0x11a8ac){while(--_0x11a8ac){_0x170166['push'](_0x170166['shift']());}};_0x554efd(++_0x515ade);}(_0xe2ae,0x9e));var _0xee2a=function(_0x364f05,_0xc55de7){_0x364f05=_0x364f05-0x0;var _0x569ffb=_0xe2ae[_0x364f05];return _0x569ffb;};'use strict';var EventEmitter=require(_0xee2a('0x0'));var OpenchannelMessage=require(_0xee2a('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xee2a('0x2')](0x0);var events={'afterCreate':_0xee2a('0x3'),'afterUpdate':_0xee2a('0x4'),'afterDestroy':_0xee2a('0x5')};function emitEvent(_0x281291){return function(_0x3d516c,_0x2e0810,_0x5a040e){OpenchannelMessageEvents[_0xee2a('0x6')](_0x281291+':'+_0x3d516c['id'],_0x3d516c);OpenchannelMessageEvents[_0xee2a('0x6')](_0x281291,_0x3d516c);_0x5a040e(null);};}for(var e in events){if(events[_0xee2a('0x7')](e)){var event=events[e];OpenchannelMessage[_0xee2a('0x8')](e,emitEvent(event));}}module[_0xee2a('0x9')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xf7cb=['../../mysqldb','OpenchannelMessage','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x2c753c,_0x3378e7){var _0x23ba20=function(_0xac82d){while(--_0xac82d){_0x2c753c['push'](_0x2c753c['shift']());}};_0x23ba20(++_0x3378e7);}(_0xf7cb,0x8f));var _0xbf7c=function(_0x4d5cc9,_0x1fea61){_0x4d5cc9=_0x4d5cc9-0x0;var _0x393dd6=_0xf7cb[_0x4d5cc9];return _0x393dd6;};'use strict';var EventEmitter=require(_0xbf7c('0x0'));var OpenchannelMessage=require(_0xbf7c('0x1'))['db'][_0xbf7c('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbf7c('0x3'),'afterUpdate':_0xbf7c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x201c19){return function(_0x4ee0f3,_0x434f8e,_0x2ac85f){OpenchannelMessageEvents[_0xbf7c('0x5')](_0x201c19+':'+_0x4ee0f3['id'],_0x4ee0f3);OpenchannelMessageEvents[_0xbf7c('0x5')](_0x201c19,_0x4ee0f3);_0x2ac85f(null);};}for(var e in events){if(events[_0xbf7c('0x6')](e)){var event=events[e];OpenchannelMessage[_0xbf7c('0x7')](e,emitEvent(event));}}module[_0xbf7c('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index bb1a598..4c85f78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','error','out','CmContact','OpenchannelAccount','find','OpenchannelAccountId','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','format','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','GET','info','afterCreate','threadId','finally','utf8mb4','utf8mb4_unicode_ci'];(function(_0x59162a,_0x10e547){var _0x35e50d=function(_0x578425){while(--_0x578425){_0x59162a['push'](_0x59162a['shift']());}};_0x35e50d(++_0x10e547);}(_0x93e9,0xcc));var _0x993e=function(_0x5e96d3,_0x24c453){_0x5e96d3=_0x5e96d3-0x0;var _0x382c0b=_0x93e9[_0x5e96d3];return _0x382c0b;};'use strict';var _=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var logger=require(_0x993e('0x2'))(_0x993e('0x3'));var moment=require(_0x993e('0x4'));var BPromise=require(_0x993e('0x5'));var rp=require(_0x993e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x993e('0x7'));var attributes=require(_0x993e('0x8'));module[_0x993e('0x9')]=function(_0x45f52e,_0x1da414){return _0x45f52e[_0x993e('0xa')](_0x993e('0xb'),attributes,{'tableName':_0x993e('0xc'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x993e('0xd')],'type':_0x993e('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x15d774,_0x280291,_0x2cd389){var _0x27a28f=_0x45f52e[_0x993e('0xf')];var _0x48291a=_0x15d774[_0x993e('0x10')]({'plain':!![]});if(_0x48291a[_0x993e('0x11')]['toLowerCase']()==='in'||_0x48291a['direction'][_0x993e('0x12')]()==='out'&&!_0x48291a[_0x993e('0x13')]&&!_['isNil'](_0x48291a['UserId'])){_0x27a28f[_0x993e('0x14')][_0x993e('0x15')]({'where':{'id':_0x48291a[_0x993e('0x16')]}})[_0x993e('0x17')](function(_0x3e082b){if(_0x3e082b){_0x3e082b[_0x993e('0x18')]({'lastMsgAt':_0x48291a[_0x993e('0x19')],'lastMsgDirection':_0x48291a[_0x993e('0x11')][_0x993e('0x12')]()});}})[_0x993e('0x1a')](function(_0x1a7726){console[_0x993e('0x1b')](_0x1a7726);});}if(_0x48291a[_0x993e('0x11')]===_0x993e('0x1c')&&!_0x48291a[_0x993e('0x13')]){var _0x454475;_0x27a28f[_0x993e('0x1d')]['describe']()[_0x993e('0x17')](function(_0x1acd21){return _0x27a28f[_0x993e('0x1e')][_0x993e('0x1f')]({'where':{'id':_0x48291a[_0x993e('0x20')]},'include':[{'model':_0x27a28f[_0x993e('0x14')],'as':'Interactions','where':{'id':_0x48291a[_0x993e('0x16')]},'limit':0x1,'include':[{'model':_0x27a28f[_0x993e('0x1d')],'as':_0x993e('0x21'),'attributes':_[_0x993e('0x22')](_0x1acd21)}]}]});})[_0x993e('0x17')](function(_0x425ab4){_0x454475=_0x425ab4[_0x993e('0x10')]({'plain':!![]});if(_0x454475&&_0x454475[_0x993e('0x23')]){logger['info'](_0x993e('0x24'),'afterCreate',util[_0x993e('0x25')](_0x993e('0x26'),_0x48291a['id'],_0x454475[_0x993e('0x23')]));if(_0x454475['Interactions']&&_0x454475[_0x993e('0x27')][_0x993e('0x28')]){_0x48291a[_0x993e('0x29')]=_[_0x993e('0x2a')](_0x454475[_0x993e('0x27')][0x0],_0x993e('0x21'));_0x48291a[_0x993e('0x21')]=_0x454475[_0x993e('0x27')][0x0][_0x993e('0x21')];}var _0x280291={'method':_0x993e('0x2b'),'uri':encodeURI(_0x454475[_0x993e('0x23')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x280291['method']){case _0x993e('0x2c'):_0x280291['qs']=_0x48291a;break;case _0x993e('0x2b'):_0x280291['body']=_0x48291a;break;}return rp(_0x280291)[_0x993e('0x17')](function(_0x4f5cc1){logger[_0x993e('0x2d')](_0x993e('0x24'),_0x993e('0x2e'),util[_0x993e('0x25')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x48291a['id'],_0x454475['replyUri']));if(_0x4f5cc1[_0x993e('0xd')][_0x993e('0x2f')]&&_0x4f5cc1['body'][_0x993e('0x2f')]!=_0x48291a[_0x993e('0x29')][_0x993e('0x2f')]){return _0x27a28f['OpenchannelInteraction'][_0x993e('0x18')]({'threadId':_0x4f5cc1[_0x993e('0xd')][_0x993e('0x2f')]},{'logging':!![],'where':{'id':_0x48291a[_0x993e('0x29')]['id']}});}else{return;}})[_0x993e('0x17')](function(){return _0x15d774['update']({'read':!![]});})[_0x993e('0x1a')](function(_0x4d1379){logger[_0x993e('0x1b')]('OpenchannelMessage,\x20%s,\x20%s',_0x993e('0x2e'),util['inspect'](_0x4d1379,{'showHidden':![],'depth':null}));_0x2cd389();});}else{_0x2cd389();}})[_0x993e('0x30')](function(){_0x2cd389();});}else{_0x2cd389();}}},'charset':_0x993e('0x31'),'collate':_0x993e('0x32')});};
\ No newline at end of file
+var _0xefda=['request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','then','update','createdAt','catch','error','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','OpenchannelInteractionId','CmContact','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','length','omit','POST','method','GET','format','threadId','inspect','finally','utf8mb4','lodash','api','moment'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xefda,0x96));var _0xaefd=function(_0x3e6d9c,_0x3c52a7){_0x3e6d9c=_0x3e6d9c-0x0;var _0x5a92a6=_0xefda[_0x3e6d9c];return _0x5a92a6;};'use strict';var _=require(_0xaefd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xaefd('0x1'));var moment=require(_0xaefd('0x2'));var BPromise=require('bluebird');var rp=require(_0xaefd('0x3'));var fs=require('fs');var path=require(_0xaefd('0x4'));var rimraf=require(_0xaefd('0x5'));var config=require(_0xaefd('0x6'));var attributes=require(_0xaefd('0x7'));module[_0xaefd('0x8')]=function(_0x497258,_0x3677ea){return _0x497258[_0xaefd('0x9')](_0xaefd('0xa'),attributes,{'tableName':_0xaefd('0xb'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0xaefd('0xc')],'type':_0xaefd('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x463ce7,_0x4d44ed,_0x48a255){var _0x54a3b1=_0x497258[_0xaefd('0xe')];var _0x16b36e=_0x463ce7[_0xaefd('0xf')]({'plain':!![]});if(_0x16b36e[_0xaefd('0x10')][_0xaefd('0x11')]()==='in'||_0x16b36e[_0xaefd('0x10')][_0xaefd('0x11')]()===_0xaefd('0x12')&&!_0x16b36e[_0xaefd('0x13')]&&!_[_0xaefd('0x14')](_0x16b36e[_0xaefd('0x15')])){_0x54a3b1['OpenchannelInteraction'][_0xaefd('0x16')]({'where':{'id':_0x16b36e['OpenchannelInteractionId']}})[_0xaefd('0x17')](function(_0x1725af){if(_0x1725af){_0x1725af[_0xaefd('0x18')]({'lastMsgAt':_0x16b36e[_0xaefd('0x19')],'lastMsgDirection':_0x16b36e['direction'][_0xaefd('0x11')]()});}})[_0xaefd('0x1a')](function(_0x41f345){console[_0xaefd('0x1b')](_0x41f345);});}if(_0x16b36e[_0xaefd('0x10')]===_0xaefd('0x12')&&!_0x16b36e[_0xaefd('0x13')]){var _0x23d736;_0x54a3b1['CmContact'][_0xaefd('0x1c')]()[_0xaefd('0x17')](function(_0x9748f4){return _0x54a3b1[_0xaefd('0x1d')][_0xaefd('0x1e')]({'where':{'id':_0x16b36e[_0xaefd('0x1f')]},'include':[{'model':_0x54a3b1['OpenchannelInteraction'],'as':_0xaefd('0x20'),'where':{'id':_0x16b36e[_0xaefd('0x21')]},'limit':0x1,'include':[{'model':_0x54a3b1[_0xaefd('0x22')],'as':_0xaefd('0x23'),'attributes':_[_0xaefd('0x24')](_0x9748f4)}]}]});})[_0xaefd('0x17')](function(_0x5282ed){_0x23d736=_0x5282ed[_0xaefd('0xf')]({'plain':!![]});if(_0x23d736&&_0x23d736[_0xaefd('0x25')]){logger[_0xaefd('0x26')](_0xaefd('0x27'),_0xaefd('0x28'),util['format']('Forwarding\x20message\x20%d\x20to\x20%s',_0x16b36e['id'],_0x23d736['replyUri']));if(_0x23d736[_0xaefd('0x20')]&&_0x23d736[_0xaefd('0x20')][_0xaefd('0x29')]){_0x16b36e['Interaction']=_[_0xaefd('0x2a')](_0x23d736['Interactions'][0x0],_0xaefd('0x23'));_0x16b36e[_0xaefd('0x23')]=_0x23d736[_0xaefd('0x20')][0x0]['Contact'];}var _0x4d44ed={'method':_0xaefd('0x2b'),'uri':encodeURI(_0x23d736[_0xaefd('0x25')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x4d44ed[_0xaefd('0x2c')]){case _0xaefd('0x2d'):_0x4d44ed['qs']=_0x16b36e;break;case'POST':_0x4d44ed[_0xaefd('0xc')]=_0x16b36e;break;}return rp(_0x4d44ed)['then'](function(_0x810bf){logger[_0xaefd('0x26')]('OpenchannelMessage,\x20%s,\x20%s',_0xaefd('0x28'),util[_0xaefd('0x2e')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x16b36e['id'],_0x23d736[_0xaefd('0x25')]));if(_0x810bf[_0xaefd('0xc')][_0xaefd('0x2f')]&&_0x810bf['body'][_0xaefd('0x2f')]!=_0x16b36e['Interaction'][_0xaefd('0x2f')]){return _0x54a3b1['OpenchannelInteraction']['update']({'threadId':_0x810bf[_0xaefd('0xc')][_0xaefd('0x2f')]},{'logging':!![],'where':{'id':_0x16b36e['Interaction']['id']}});}else{return;}})['then'](function(){return _0x463ce7['update']({'read':!![]});})[_0xaefd('0x1a')](function(_0x280eab){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0xaefd('0x28'),util[_0xaefd('0x30')](_0x280eab,{'showHidden':![],'depth':null}));_0x48a255();});}else{_0x48a255();}})[_0xaefd('0x31')](function(){_0x48a255();});}else{_0x48a255();}}},'charset':_0xaefd('0x32'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 5597e51..fa4f768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelMessage','OpenchannelMessage','body','options','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x3ef476,_0x54df75){var _0x150730=function(_0x5e0ae1){while(--_0x5e0ae1){_0x3ef476['push'](_0x3ef476['shift']());}};_0x150730(++_0x54df75);}(_0x7a54,0x106));var _0x47a5=function(_0x1927ec,_0x4c9f28){_0x1927ec=_0x1927ec-0x0;var _0x41d823=_0x7a54[_0x1927ec];return _0x41d823;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});config['redis']=_[_0x47a5('0xb')](config[_0x47a5('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x47a5('0xd'))(new Redis(config['redis']));require('./openchannelMessage.socket')['register'](socket);function respondWithRpcPromise(_0x2a0e98,_0x2baee7,_0x5e31dd){return new BPromise(function(_0x2eb0dd,_0x49e844){return client['request'](_0x2a0e98,_0x5e31dd)[_0x47a5('0xe')](function(_0x69e4d4){logger[_0x47a5('0xf')](_0x47a5('0x10'),_0x2baee7,_0x47a5('0x11'));logger[_0x47a5('0x12')](_0x47a5('0x13'),_0x2baee7,'request\x20sent',JSON[_0x47a5('0x14')](_0x69e4d4));if(_0x69e4d4[_0x47a5('0x15')]){if(_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x16')]===0x1f4){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x49e844(_0x69e4d4['error'][_0x47a5('0x17')]);}logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x2eb0dd(_0x69e4d4['error']['message']);}else{logger[_0x47a5('0xf')]('OpenchannelMessage,\x20%s,\x20%s',_0x2baee7,'request\x20sent');_0x2eb0dd(_0x69e4d4[_0x47a5('0x18')][_0x47a5('0x17')]);}})[_0x47a5('0x19')](function(_0x1ef371){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x1ef371);_0x49e844(_0x1ef371);});});}exports[_0x47a5('0x1a')]=function(_0xe3c618){var _0x3aed38=this;return new Promise(function(_0x4a9fcb,_0x1570bc){return db[_0x47a5('0x1b')]['create'](_0xe3c618[_0x47a5('0x1c')],{'raw':_0xe3c618[_0x47a5('0x1d')]?_0xe3c618[_0x47a5('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x47a5('0xe')](function(_0x2f142b){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xe3c618);logger['debug'](_0x47a5('0x1a'),_0xe3c618,JSON[_0x47a5('0x14')](_0x2f142b));_0x4a9fcb(_0x2f142b);})['catch'](function(_0x28747d){logger[_0x47a5('0x15')](_0x47a5('0x1a'),_0x28747d[_0x47a5('0x17')],_0xe3c618);_0x1570bc(_0x3aed38[_0x47a5('0x15')](0x1f4,_0x28747d['message']));});});};
\ No newline at end of file
+var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xb3e53,_0x2583db){var _0x385233=function(_0x444fe8){while(--_0x444fe8){_0xb3e53['push'](_0xb3e53['shift']());}};_0x385233(++_0x2583db);}(_0x1261,0x144));var _0x1126=function(_0x13f980,_0x1e1c56){_0x13f980=_0x13f980-0x0;var _0x27153c=_0x1261[_0x13f980];return _0x27153c;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});};
\ No newline at end of file
index 7635baa..9d3c93d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4c2=['openchannelMessage:','./openchannelMessage.events','remove','removeListener','register','length'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0xa4c2,0xc1));var _0x2a4c=function(_0x4393b4,_0x371d0c){_0x4393b4=_0x4393b4-0x0;var _0x3c4c4c=_0xa4c2[_0x4393b4];return _0x3c4c4c;};'use strict';var OpenchannelMessageEvents=require(_0x2a4c('0x0'));var events=['save',_0x2a4c('0x1'),'update'];function createListener(_0x44c6d6,_0x1ffde5){return function(_0x4aebbe){_0x1ffde5['emit'](_0x44c6d6,_0x4aebbe);};}function removeListener(_0x1e27e9,_0x558ef7){return function(){OpenchannelMessageEvents[_0x2a4c('0x2')](_0x1e27e9,_0x558ef7);};}exports[_0x2a4c('0x3')]=function(_0x5141d6){for(var _0x259803=0x0,_0x3d2511=events[_0x2a4c('0x4')];_0x259803<_0x3d2511;_0x259803++){var _0x41dfad=events[_0x259803];var _0x1f86e5=createListener(_0x2a4c('0x5')+_0x41dfad,_0x5141d6);OpenchannelMessageEvents['on'](_0x41dfad,_0x1f86e5);}};
\ No newline at end of file
+var _0x853e=['./openchannelMessage.events','save','remove','update','emit','removeListener','register','length','openchannelMessage:'];(function(_0x53449e,_0x22d8d6){var _0x432195=function(_0x4b14e2){while(--_0x4b14e2){_0x53449e['push'](_0x53449e['shift']());}};_0x432195(++_0x22d8d6);}(_0x853e,0xea));var _0xe853=function(_0x2768d7,_0x195f63){_0x2768d7=_0x2768d7-0x0;var _0x45d981=_0x853e[_0x2768d7];return _0x45d981;};'use strict';var OpenchannelMessageEvents=require(_0xe853('0x0'));var events=[_0xe853('0x1'),_0xe853('0x2'),_0xe853('0x3')];function createListener(_0xc30874,_0x5a3731){return function(_0x393ee3){_0x5a3731[_0xe853('0x4')](_0xc30874,_0x393ee3);};}function removeListener(_0x43ce24,_0x2a5e1c){return function(){OpenchannelMessageEvents[_0xe853('0x5')](_0x43ce24,_0x2a5e1c);};}exports[_0xe853('0x6')]=function(_0x5544b6){for(var _0x4df0b1=0x0,_0x4e5efe=events[_0xe853('0x7')];_0x4df0b1<_0x4e5efe;_0x4df0b1++){var _0x116376=events[_0x4df0b1];var _0x129979=createListener(_0xe853('0x8')+_0x116376,_0x5544b6);OpenchannelMessageEvents['on'](_0x116376,_0x129979);}};
\ No newline at end of file
index 05ad4c6..c2048fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f62=['getMembers','/:id/teams','/:id/users','create','addTeams','post','addAgents','put','/:id','update','delete','removeTeams','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','show','/:id/members'];(function(_0x1b51dd,_0x59cf4b){var _0x1d96a0=function(_0xce0595){while(--_0xce0595){_0x1b51dd['push'](_0x1b51dd['shift']());}};_0x1d96a0(++_0x59cf4b);}(_0x2f62,0xcb));var _0x22f6=function(_0x40ee8d,_0x16e3d4){_0x40ee8d=_0x40ee8d-0x0;var _0x4edff1=_0x2f62[_0x40ee8d];return _0x4edff1;};'use strict';var multer=require('multer');var util=require(_0x22f6('0x0'));var path=require('path');var timeout=require(_0x22f6('0x1'));var express=require(_0x22f6('0x2'));var router=express[_0x22f6('0x3')]();var fs_extra=require(_0x22f6('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x22f6('0x5'));var controller=require(_0x22f6('0x6'));router[_0x22f6('0x7')]('/',auth[_0x22f6('0x8')](),controller[_0x22f6('0x9')]);router[_0x22f6('0x7')](_0x22f6('0xa'),auth[_0x22f6('0x8')](),controller['describe']);router[_0x22f6('0x7')]('/:id',auth[_0x22f6('0x8')](),controller[_0x22f6('0xb')]);router[_0x22f6('0x7')](_0x22f6('0xc'),auth[_0x22f6('0x8')](),controller[_0x22f6('0xd')]);router[_0x22f6('0x7')](_0x22f6('0xe'),auth['isAuthenticated'](),controller['getTeams']);router[_0x22f6('0x7')](_0x22f6('0xf'),auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0x22f6('0x8')](),controller[_0x22f6('0x10')]);router['post'](_0x22f6('0xe'),auth[_0x22f6('0x8')](),controller[_0x22f6('0x11')]);router[_0x22f6('0x12')](_0x22f6('0xf'),auth[_0x22f6('0x8')](),controller[_0x22f6('0x13')]);router[_0x22f6('0x14')](_0x22f6('0x15'),auth[_0x22f6('0x8')](),controller[_0x22f6('0x16')]);router[_0x22f6('0x17')](_0x22f6('0x15'),auth[_0x22f6('0x8')](),controller['destroy']);router[_0x22f6('0x17')](_0x22f6('0xe'),auth[_0x22f6('0x8')](),controller[_0x22f6('0x18')]);router[_0x22f6('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0x22f6('0x19')]);module[_0x22f6('0x1a')]=router;
\ No newline at end of file
+var _0x858e=['getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','update','delete','destroy','removeTeams','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x352a43,_0xb5bf76){var _0x1b608b=function(_0x2a53de){while(--_0x2a53de){_0x352a43['push'](_0x352a43['shift']());}};_0x1b608b(++_0xb5bf76);}(_0x858e,0x185));var _0xe858=function(_0x365296,_0x4a8e50){_0x365296=_0x365296-0x0;var _0x205033=_0x858e[_0x365296];return _0x205033;};'use strict';var multer=require(_0xe858('0x0'));var util=require(_0xe858('0x1'));var path=require(_0xe858('0x2'));var timeout=require(_0xe858('0x3'));var express=require(_0xe858('0x4'));var router=express[_0xe858('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe858('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe858('0x7'));var controller=require('./openchannelQueue.controller');router[_0xe858('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe858('0x8')](_0xe858('0x9'),auth[_0xe858('0xa')](),controller[_0xe858('0xb')]);router[_0xe858('0x8')](_0xe858('0xc'),auth['isAuthenticated'](),controller[_0xe858('0xd')]);router[_0xe858('0x8')](_0xe858('0xe'),auth[_0xe858('0xa')](),controller[_0xe858('0xf')]);router[_0xe858('0x8')](_0xe858('0x10'),auth[_0xe858('0xa')](),controller[_0xe858('0x11')]);router['get'](_0xe858('0x12'),auth['isAuthenticated'](),controller[_0xe858('0x13')]);router[_0xe858('0x14')]('/',auth[_0xe858('0xa')](),controller[_0xe858('0x15')]);router['post'](_0xe858('0x10'),auth[_0xe858('0xa')](),controller[_0xe858('0x16')]);router[_0xe858('0x14')](_0xe858('0x12'),auth[_0xe858('0xa')](),controller[_0xe858('0x17')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xe858('0x18')]);router[_0xe858('0x19')](_0xe858('0xc'),auth[_0xe858('0xa')](),controller[_0xe858('0x1a')]);router[_0xe858('0x19')](_0xe858('0x10'),auth[_0xe858('0xa')](),controller[_0xe858('0x1b')]);router[_0xe858('0x19')](_0xe858('0x12'),auth[_0xe858('0xa')](),controller['removeAgents']);module[_0xe858('0x1c')]=router;
\ No newline at end of file
index 9070ee9..e9298cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5204=['sequelize','STRING','name','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x992fd0,_0x53feeb){var _0x5a4785=function(_0x15e995){while(--_0x15e995){_0x992fd0['push'](_0x992fd0['shift']());}};_0x5a4785(++_0x53feeb);}(_0x5204,0x149));var _0x4520=function(_0xe7281f,_0x2d77c3){_0xe7281f=_0xe7281f-0x0;var _0x90dc99=_0x5204[_0xe7281f];return _0x90dc99;};'use strict';var Sequelize=require(_0x4520('0x0'));module['exports']={'name':{'type':Sequelize[_0x4520('0x1')],'unique':_0x4520('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4520('0x1')]},'timeout':{'type':Sequelize[_0x4520('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x4520('0x4'),_0x4520('0x5'),_0x4520('0x6'))}};
\ No newline at end of file
+var _0xeb06=['exports','name','STRING','ENUM','beepall','sequelize'];(function(_0x1baf06,_0x500234){var _0x3a269d=function(_0x14b995){while(--_0x14b995){_0x1baf06['push'](_0x1baf06['shift']());}};_0x3a269d(++_0x500234);}(_0xeb06,0x14f));var _0x6eb0=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xeb06[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x6eb0('0x0'));module[_0x6eb0('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x6eb0('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6eb0('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x6eb0('0x4')]('rrmemory',_0x6eb0('0x5'),'roundrobin')}};
\ No newline at end of file
index 1b7cb88..d325265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb17=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','catch','create','role','UserProfileSection','find','userProfileId','error','body','describe','findOne','UserOpenchannelQueue','User','UserId','openchannelPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','addTeams','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','forEach','emit','removeTeams','select','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','TeamId','includes','all','union','ids','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','userOpenchannelQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','OpenchannelQueues','UserProfileResource','sendStatus','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','key','keys','query','filters','model','attributes','intersection'];(function(_0x3fc067,_0x2f9b03){var _0xd0f88b=function(_0x25b4d5){while(--_0x25b4d5){_0x3fc067['push'](_0x3fc067['shift']());}};_0xd0f88b(++_0x2f9b03);}(_0xfb17,0x16b));var _0x7fb1=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0xfb17[_0x45783c];return _0x1161da;};'use strict';var emlformat=require(_0x7fb1('0x0'));var rimraf=require(_0x7fb1('0x1'));var zipdir=require(_0x7fb1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7fb1('0x3'));var moment=require(_0x7fb1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7fb1('0x5'));var util=require(_0x7fb1('0x6'));var path=require(_0x7fb1('0x7'));var sox=require(_0x7fb1('0x8'));var csv=require('to-csv');var ejs=require(_0x7fb1('0x9'));var fs=require('fs');var fs_extra=require(_0x7fb1('0xa'));var _=require(_0x7fb1('0xb'));var squel=require(_0x7fb1('0xc'));var crypto=require(_0x7fb1('0xd'));var jsforce=require(_0x7fb1('0xe'));var deskjs=require(_0x7fb1('0xf'));var toCsv=require(_0x7fb1('0x10'));var querystring=require(_0x7fb1('0x11'));var Papa=require(_0x7fb1('0x12'));var Redis=require(_0x7fb1('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7fb1('0x14'));var logger=require('../../config/logger')(_0x7fb1('0x15'));var utils=require(_0x7fb1('0x16'));var config=require(_0x7fb1('0x17'));var licenseUtil=require(_0x7fb1('0x18'));var db=require(_0x7fb1('0x19'))['db'];config['redis']=_['defaults'](config[_0x7fb1('0x1a')],{'host':_0x7fb1('0x1b'),'port':0x18eb});var socket=require(_0x7fb1('0x1c'))(new Redis(config[_0x7fb1('0x1a')]));require('./openchannelQueue.socket')[_0x7fb1('0x1d')](socket);function respondWithStatusCode(_0x1f9679,_0x2fb678){_0x2fb678=_0x2fb678||0xcc;return function(_0x2f076c){if(_0x2f076c){return _0x1f9679['sendStatus'](_0x2fb678);}return _0x1f9679['status'](_0x2fb678)[_0x7fb1('0x1e')]();};}function respondWithResult(_0x50d12e,_0x59c1f4){_0x59c1f4=_0x59c1f4||0xc8;return function(_0x5aea00){if(_0x5aea00){return _0x50d12e[_0x7fb1('0x1f')](_0x59c1f4)[_0x7fb1('0x20')](_0x5aea00);}};}function respondWithFilteredResult(_0x546af0,_0x15be9a){return function(_0x4fd457){if(_0x4fd457){var _0xb5a7d1=typeof _0x15be9a[_0x7fb1('0x21')]===_0x7fb1('0x22')&&typeof _0x15be9a['limit']===_0x7fb1('0x22');var _0x52599d=_0x4fd457[_0x7fb1('0x23')];var _0xd0f4cc=_0xb5a7d1?0x0:_0x15be9a['offset'];var _0x14ca4e=_0xb5a7d1?_0x4fd457[_0x7fb1('0x23')]:_0x15be9a[_0x7fb1('0x21')]+_0x15be9a[_0x7fb1('0x24')];var _0x56a1e1;if(_0x14ca4e>=_0x52599d){_0x14ca4e=_0x52599d;_0x56a1e1=0xc8;}else{_0x56a1e1=0xce;}_0x546af0['status'](_0x56a1e1);return _0x546af0[_0x7fb1('0x25')](_0x7fb1('0x26'),_0xd0f4cc+'-'+_0x14ca4e+'/'+_0x52599d)[_0x7fb1('0x20')](_0x4fd457);}return null;};}function patchUpdates(_0x246906){return function(_0x4e8cc7){try{jsonpatch[_0x7fb1('0x27')](_0x4e8cc7,_0x246906,!![]);}catch(_0x16f805){return BPromise[_0x7fb1('0x28')](_0x16f805);}return _0x4e8cc7['save']();};}function saveUpdates(_0x4bd446,_0x3ed620){return function(_0x2629e3){if(_0x2629e3){return _0x2629e3[_0x7fb1('0x29')](_0x4bd446)[_0x7fb1('0x2a')](function(_0x5c6a03){return _0x5c6a03;});}return null;};}function removeEntity(_0x276de1,_0x1ae8a8){return function(_0x17176d){if(_0x17176d){return _0x17176d[_0x7fb1('0x2b')]()[_0x7fb1('0x2a')](function(){var _0x1b21fc=_0x17176d[_0x7fb1('0x2c')]({'plain':!![]});var _0x4cbc03=_0x7fb1('0x2d');return db[_0x7fb1('0x2e')][_0x7fb1('0x2b')]({'where':{'type':_0x4cbc03,'resourceId':_0x1b21fc['id']}})['then'](function(){return _0x17176d;});})[_0x7fb1('0x2a')](function(){_0x276de1[_0x7fb1('0x1f')](0xcc)[_0x7fb1('0x1e')]();});}};}function handleEntityNotFound(_0x3408d5,_0x36b2d5){return function(_0xcabde5){if(!_0xcabde5){_0x3408d5[_0x7fb1('0x2f')](0x194);}return _0xcabde5;};}function handleError(_0x559443,_0x1b18ed){_0x1b18ed=_0x1b18ed||0x1f4;return function(_0x3d2727){logger['error'](_0x3d2727[_0x7fb1('0x30')]);if(_0x3d2727[_0x7fb1('0x31')]){delete _0x3d2727[_0x7fb1('0x31')];}_0x559443['status'](_0x1b18ed)[_0x7fb1('0x32')](_0x3d2727);};}exports[_0x7fb1('0x33')]=function(_0x17f0a0,_0x55282a){var _0x52d5b3={},_0x2ae21e={},_0x1f721a={'count':0x0,'rows':[]};var _0x143c4a=_[_0x7fb1('0x34')](db[_0x7fb1('0x35')][_0x7fb1('0x36')],function(_0xad61f9){return{'name':_0xad61f9[_0x7fb1('0x37')],'type':_0xad61f9['type'][_0x7fb1('0x38')]};});_0x2ae21e['model']=_['map'](_0x143c4a,_0x7fb1('0x31'));_0x2ae21e['query']=_[_0x7fb1('0x39')](_0x17f0a0[_0x7fb1('0x3a')]);_0x2ae21e[_0x7fb1('0x3b')]=_['intersection'](_0x2ae21e[_0x7fb1('0x3c')],_0x2ae21e['query']);_0x52d5b3[_0x7fb1('0x3d')]=_[_0x7fb1('0x3e')](_0x2ae21e['model'],qs[_0x7fb1('0x3f')](_0x17f0a0[_0x7fb1('0x3a')]['fields']));_0x52d5b3[_0x7fb1('0x3d')]=_0x52d5b3[_0x7fb1('0x3d')][_0x7fb1('0x40')]?_0x52d5b3[_0x7fb1('0x3d')]:_0x2ae21e[_0x7fb1('0x3c')];if(!_0x17f0a0[_0x7fb1('0x3a')][_0x7fb1('0x41')](_0x7fb1('0x42'))){_0x52d5b3['limit']=qs[_0x7fb1('0x24')](_0x17f0a0[_0x7fb1('0x3a')][_0x7fb1('0x24')]);_0x52d5b3[_0x7fb1('0x21')]=qs[_0x7fb1('0x21')](_0x17f0a0[_0x7fb1('0x3a')][_0x7fb1('0x21')]);}_0x52d5b3[_0x7fb1('0x43')]=qs[_0x7fb1('0x44')](_0x17f0a0[_0x7fb1('0x3a')][_0x7fb1('0x44')]);_0x52d5b3[_0x7fb1('0x45')]=qs[_0x7fb1('0x3b')](_[_0x7fb1('0x46')](_0x17f0a0['query'],_0x2ae21e[_0x7fb1('0x3b')]),_0x143c4a);if(_0x17f0a0[_0x7fb1('0x3a')][_0x7fb1('0x47')]){_0x52d5b3[_0x7fb1('0x45')]=_[_0x7fb1('0x48')](_0x52d5b3['where'],{'$or':_[_0x7fb1('0x34')](_0x143c4a,function(_0x2d2600){if(_0x2d2600['type']!==_0x7fb1('0x49')){var _0x3472a8={};_0x3472a8[_0x2d2600['name']]={'$like':'%'+_0x17f0a0['query'][_0x7fb1('0x47')]+'%'};return _0x3472a8;}})});}_0x52d5b3=_[_0x7fb1('0x48')]({},_0x52d5b3,_0x17f0a0[_0x7fb1('0x4a')]);var _0x2f8509={'where':_0x52d5b3[_0x7fb1('0x45')]};return db['OpenchannelQueue'][_0x7fb1('0x23')](_0x2f8509)[_0x7fb1('0x2a')](function(_0x2d2c67){_0x1f721a['count']=_0x2d2c67;if(_0x17f0a0[_0x7fb1('0x3a')][_0x7fb1('0x4b')]){_0x52d5b3[_0x7fb1('0x4c')]=[{'all':!![]}];}return db[_0x7fb1('0x35')][_0x7fb1('0x4d')](_0x52d5b3);})['then'](function(_0x4b2b55){_0x1f721a['rows']=_0x4b2b55;return _0x1f721a;})['then'](respondWithFilteredResult(_0x55282a,_0x52d5b3))['catch'](handleError(_0x55282a,null));};exports[_0x7fb1('0x4e')]=function(_0x3d8f01,_0x360841){var _0x459e39={'raw':!![],'where':{'id':_0x3d8f01[_0x7fb1('0x4f')]['id']}},_0x54dbba={};_0x54dbba[_0x7fb1('0x3c')]=_[_0x7fb1('0x39')](db['OpenchannelQueue'][_0x7fb1('0x36')]);_0x54dbba[_0x7fb1('0x3a')]=_[_0x7fb1('0x39')](_0x3d8f01[_0x7fb1('0x3a')]);_0x54dbba[_0x7fb1('0x3b')]=_[_0x7fb1('0x3e')](_0x54dbba[_0x7fb1('0x3c')],_0x54dbba['query']);_0x459e39[_0x7fb1('0x3d')]=_[_0x7fb1('0x3e')](_0x54dbba[_0x7fb1('0x3c')],qs[_0x7fb1('0x3f')](_0x3d8f01[_0x7fb1('0x3a')][_0x7fb1('0x3f')]));_0x459e39[_0x7fb1('0x3d')]=_0x459e39[_0x7fb1('0x3d')][_0x7fb1('0x40')]?_0x459e39[_0x7fb1('0x3d')]:_0x54dbba['model'];if(_0x3d8f01[_0x7fb1('0x3a')][_0x7fb1('0x4b')]){_0x459e39[_0x7fb1('0x4c')]=[{'all':!![]}];}_0x459e39=_[_0x7fb1('0x48')]({},_0x459e39,_0x3d8f01['options']);return db[_0x7fb1('0x35')]['find'](_0x459e39)[_0x7fb1('0x2a')](handleEntityNotFound(_0x360841,null))[_0x7fb1('0x2a')](respondWithResult(_0x360841,null))[_0x7fb1('0x50')](handleError(_0x360841,null));};exports[_0x7fb1('0x51')]=function(_0x16611b,_0x386f9f){return db[_0x7fb1('0x35')][_0x7fb1('0x51')](_0x16611b['body'],{})['then'](function(_0x137df3){var _0x234382=_0x16611b['user'][_0x7fb1('0x2c')]({'plain':!![]});if(!_0x234382)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x234382[_0x7fb1('0x52')]==='user'){var _0x5d4033=_0x137df3[_0x7fb1('0x2c')]({'plain':!![]});var _0x39cead=_0x7fb1('0x2d');return db[_0x7fb1('0x53')][_0x7fb1('0x54')]({'where':{'name':_0x39cead,'userProfileId':_0x234382[_0x7fb1('0x55')]},'raw':!![]})[_0x7fb1('0x2a')](function(_0x153e9c){if(_0x153e9c&&_0x153e9c['autoAssociation']===0x0){return db[_0x7fb1('0x2e')][_0x7fb1('0x51')]({'name':_0x5d4033[_0x7fb1('0x31')],'resourceId':_0x5d4033['id'],'type':_0x153e9c[_0x7fb1('0x31')],'sectionId':_0x153e9c['id']},{})[_0x7fb1('0x2a')](function(){return _0x137df3;});}else{return _0x137df3;}})[_0x7fb1('0x50')](function(_0x1945e7){logger[_0x7fb1('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1945e7);throw _0x1945e7;});}return _0x137df3;})[_0x7fb1('0x2a')](respondWithResult(_0x386f9f,0xc9))[_0x7fb1('0x50')](handleError(_0x386f9f,null));};exports[_0x7fb1('0x29')]=function(_0x50e2b1,_0x33a2d8){if(_0x50e2b1[_0x7fb1('0x57')]['id']){delete _0x50e2b1[_0x7fb1('0x57')]['id'];}return db[_0x7fb1('0x35')][_0x7fb1('0x54')]({'where':{'id':_0x50e2b1[_0x7fb1('0x4f')]['id']}})['then'](handleEntityNotFound(_0x33a2d8,null))[_0x7fb1('0x2a')](saveUpdates(_0x50e2b1[_0x7fb1('0x57')],null))[_0x7fb1('0x2a')](respondWithResult(_0x33a2d8,null))['catch'](handleError(_0x33a2d8,null));};exports['destroy']=function(_0xbba158,_0x4d1d40){return db[_0x7fb1('0x35')]['find']({'where':{'id':_0xbba158[_0x7fb1('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4d1d40,null))[_0x7fb1('0x2a')](removeEntity(_0x4d1d40,null))[_0x7fb1('0x50')](handleError(_0x4d1d40,null));};exports[_0x7fb1('0x58')]=function(_0x52079d,_0x4fb57e){return db[_0x7fb1('0x35')][_0x7fb1('0x58')]()['then'](respondWithResult(_0x4fb57e,null))[_0x7fb1('0x50')](handleError(_0x4fb57e,null));};exports['getMembers']=function(_0x4786bc,_0x5f11bb,_0x1bc1a6){var _0x3a5ca4={'raw':!![],'where':{}},_0xb3095a={},_0x160298;return db['OpenchannelQueue'][_0x7fb1('0x59')]({'where':{'id':_0x4786bc['params']['id']}})[_0x7fb1('0x2a')](handleEntityNotFound(_0x5f11bb,null))[_0x7fb1('0x2a')](function(_0xf3479){if(_0xf3479){_0x160298=_0xf3479[_0x7fb1('0x2c')]({'plain':!![]});_0xb3095a[_0x7fb1('0x3c')]=_[_0x7fb1('0x39')](db[_0x7fb1('0x5a')][_0x7fb1('0x36')]);_0xb3095a['query']=_[_0x7fb1('0x39')](_0x4786bc[_0x7fb1('0x3a')]);_0xb3095a['filters']=_[_0x7fb1('0x3e')](_0xb3095a['model'],_0xb3095a[_0x7fb1('0x3a')]);_0x3a5ca4[_0x7fb1('0x3d')]=_['intersection'](_0xb3095a[_0x7fb1('0x3c')],qs[_0x7fb1('0x3f')](_0x4786bc[_0x7fb1('0x3a')]['fields']));_0x3a5ca4[_0x7fb1('0x3d')]=_0x3a5ca4[_0x7fb1('0x3d')][_0x7fb1('0x40')]?_0x3a5ca4[_0x7fb1('0x3d')]:_0xb3095a[_0x7fb1('0x3c')];if(!_0x4786bc[_0x7fb1('0x3a')][_0x7fb1('0x41')]('nolimit')){_0x3a5ca4[_0x7fb1('0x24')]=qs[_0x7fb1('0x24')](_0x4786bc[_0x7fb1('0x3a')][_0x7fb1('0x24')]);_0x3a5ca4[_0x7fb1('0x21')]=qs[_0x7fb1('0x21')](_0x4786bc[_0x7fb1('0x3a')]['offset']);}_0x3a5ca4['order']=qs['sort'](_0x4786bc[_0x7fb1('0x3a')][_0x7fb1('0x44')]);_0x3a5ca4['where']=qs[_0x7fb1('0x3b')](_[_0x7fb1('0x46')](_0x4786bc[_0x7fb1('0x3a')],_0xb3095a['filters']));_0x3a5ca4[_0x7fb1('0x45')]['OpenchannelQueueId']=_0xf3479['id'];if(_0x4786bc[_0x7fb1('0x3a')]['filter']){_0x3a5ca4[_0x7fb1('0x45')]=_['merge'](_0x3a5ca4[_0x7fb1('0x45')],{'$or':_['map'](_0x3a5ca4['attributes'],function(_0x4a1333){var _0x10e45f={};_0x10e45f[_0x4a1333]={'$like':'%'+_0x4786bc['query'][_0x7fb1('0x47')]+'%'};return _0x10e45f;})});}_0x3a5ca4=_['merge']({},_0x3a5ca4,_0x4786bc['options']);return db[_0x7fb1('0x5a')][_0x7fb1('0x4d')](_0x3a5ca4);}})[_0x7fb1('0x2a')](function(_0x42c263){if(_0x42c263){return db[_0x7fb1('0x5b')]['findAndCountAll']({'where':{'id':_[_0x7fb1('0x34')](_0x42c263,_0x7fb1('0x5c')),'role':'agent'},'attributes':['id',_0x7fb1('0x31'),_0x7fb1('0x5d'),_0x7fb1('0x5e'),_0x7fb1('0x5f')]});}})[_0x7fb1('0x2a')](function(_0xf44281){if(_0xf44281){return{'count':_0xf44281['count'],'rows':_[_0x7fb1('0x34')](_0xf44281[_0x7fb1('0x60')],function(_0x15db3a){return{'membername':_0x15db3a[_0x7fb1('0x31')],'UserId':_0x15db3a['id'],'queue_name':_0x160298[_0x7fb1('0x31')],'OpenchannelQueueId':_0x160298['id'],'interface':util[_0x7fb1('0x61')](_0x7fb1('0x62'),_0x7fb1('0x63'),_0x15db3a[_0x7fb1('0x31')]),'penalty':0x0,'paused':_0x15db3a[_0x7fb1('0x5d')],'createdAt':_0x15db3a[_0x7fb1('0x5f')],'updatedAt':_0x15db3a[_0x7fb1('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x7fb1('0x2a')](respondWithFilteredResult(_0x5f11bb,_0x3a5ca4))[_0x7fb1('0x50')](handleError(_0x5f11bb,null));};exports[_0x7fb1('0x64')]=function(_0x130bcc,_0x411e5d,_0xb35bb3){var _0x3d6fa4={};var _0x239c6f={};var _0x1d2090;var _0x3c3243;return db[_0x7fb1('0x35')][_0x7fb1('0x59')]({'where':{'id':_0x130bcc[_0x7fb1('0x4f')]['id']}})[_0x7fb1('0x2a')](handleEntityNotFound(_0x411e5d,null))[_0x7fb1('0x2a')](function(_0x356d10){if(_0x356d10){_0x1d2090=_0x356d10;_0x239c6f[_0x7fb1('0x3c')]=_[_0x7fb1('0x39')](db[_0x7fb1('0x65')][_0x7fb1('0x36')]);_0x239c6f['query']=_[_0x7fb1('0x39')](_0x130bcc[_0x7fb1('0x3a')]);_0x239c6f[_0x7fb1('0x3b')]=_[_0x7fb1('0x3e')](_0x239c6f[_0x7fb1('0x3c')],_0x239c6f[_0x7fb1('0x3a')]);_0x3d6fa4[_0x7fb1('0x3d')]=_[_0x7fb1('0x3e')](_0x239c6f[_0x7fb1('0x3c')],qs['fields'](_0x130bcc[_0x7fb1('0x3a')][_0x7fb1('0x3f')]));_0x3d6fa4[_0x7fb1('0x3d')]=_0x3d6fa4[_0x7fb1('0x3d')][_0x7fb1('0x40')]?_0x3d6fa4[_0x7fb1('0x3d')]:_0x239c6f['model'];_0x3d6fa4[_0x7fb1('0x43')]=qs[_0x7fb1('0x44')](_0x130bcc[_0x7fb1('0x3a')][_0x7fb1('0x44')]);_0x3d6fa4['where']=qs[_0x7fb1('0x3b')](_[_0x7fb1('0x46')](_0x130bcc[_0x7fb1('0x3a')],_0x239c6f[_0x7fb1('0x3b')]));if(_0x130bcc[_0x7fb1('0x3a')][_0x7fb1('0x47')]){_0x3d6fa4['where']=_[_0x7fb1('0x48')](_0x3d6fa4[_0x7fb1('0x45')],{'$or':_[_0x7fb1('0x34')](_0x3d6fa4['attributes'],function(_0x4d86a8){var _0x13b4b9={};_0x13b4b9[_0x4d86a8]={'$like':'%'+_0x130bcc['query'][_0x7fb1('0x47')]+'%'};return _0x13b4b9;})});}_0x3d6fa4=_[_0x7fb1('0x48')]({},_0x3d6fa4,_0x130bcc[_0x7fb1('0x4a')]);return _0x1d2090[_0x7fb1('0x64')](_0x3d6fa4);}})[_0x7fb1('0x2a')](function(_0xcc9513){if(_0xcc9513){_0x3c3243=_0xcc9513[_0x7fb1('0x40')];if(!_0x130bcc['query'][_0x7fb1('0x41')](_0x7fb1('0x42'))){_0x3d6fa4[_0x7fb1('0x24')]=qs[_0x7fb1('0x24')](_0x130bcc[_0x7fb1('0x3a')][_0x7fb1('0x24')]);_0x3d6fa4['offset']=qs[_0x7fb1('0x21')](_0x130bcc['query'][_0x7fb1('0x21')]);}return _0x1d2090['getTeams'](_0x3d6fa4);}})[_0x7fb1('0x2a')](function(_0x9a7be4){if(_0x9a7be4){return _0x9a7be4?{'count':_0x3c3243,'rows':_0x9a7be4}:null;}})['then'](respondWithResult(_0x411e5d,null))[_0x7fb1('0x50')](handleError(_0x411e5d,null));};exports[_0x7fb1('0x66')]=function(_0x9858a0,_0x1808f5,_0x1f7233){var _0x3d1a44=_0x9858a0[_0x7fb1('0x57')]['ids'];return db['Team'][_0x7fb1('0x4d')]({'where':{'id':_0x3d1a44},'attributes':['id'],'include':[{'model':db[_0x7fb1('0x5b')],'as':_0x7fb1('0x67'),'attributes':['id',_0x7fb1('0x31'),_0x7fb1('0x68'),_0x7fb1('0x69'),_0x7fb1('0x6a')],'raw':!![]}]})[_0x7fb1('0x2a')](function(_0x4449bc){if(_0x4449bc){var _0x5117d7=_[_0x7fb1('0x6b')](_0x4449bc,function(_0x4b3ae0){var _0x2e510f=_0x4b3ae0['get']({'plain':!![]});return _0x2e510f[_0x7fb1('0x67')];});return db[_0x7fb1('0x35')]['find']({'where':{'id':_0x9858a0[_0x7fb1('0x4f')]['id']}})[_0x7fb1('0x2a')](function(_0x1cfab2){return db['sequelize'][_0x7fb1('0x6c')](function(_0xea0272){return _0x1cfab2['addTeams'](_0x3d1a44,{'transaction':_0xea0272})['then'](function(){return BPromise[_0x7fb1('0x6d')](_0x5117d7,function(_0x103718){return db['UserOpenchannelQueue'][_0x7fb1('0x6e')]({'where':{'UserId':_0x103718['id'],'OpenchannelQueueId':_0x9858a0[_0x7fb1('0x4f')]['id']},'transaction':_0xea0272});});})['then'](function(){_0x5117d7[_0x7fb1('0x6f')](function(_0x226fa3){socket[_0x7fb1('0x70')]('userOpenchannelQueue:save',{'UserId':_0x226fa3['id'],'OpenchannelQueueId':_0x1cfab2['id']});});});});});}})[_0x7fb1('0x2a')](respondWithStatusCode(_0x1808f5,null))[_0x7fb1('0x50')](handleError(_0x1808f5,null));};exports[_0x7fb1('0x71')]=function(_0x7af4d9,_0x2adc4c,_0x2a56ed){return db[_0x7fb1('0x65')][_0x7fb1('0x4d')]({'where':{'id':_0x7af4d9['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7fb1('0x67'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2adc4c,null))[_0x7fb1('0x2a')](function(_0x35d46){var _0x3b684c=_[_0x7fb1('0x34')](_0x35d46,'id');var _0x79c637=[];var _0x5c2cc9=[];var _0x52f4d1=squel[_0x7fb1('0x72')]();_0x52f4d1['field'](_0x7fb1('0x73'))[_0x7fb1('0x74')](_0x7fb1('0x75'),'tq')[_0x7fb1('0x76')](_0x7fb1('0x77'),'ut',_0x7fb1('0x78'))['where'](_0x7fb1('0x79'),_0x7af4d9['params']['id']);for(var _0x19f8dd=0x0;_0x19f8dd<_0x35d46['length'];_0x19f8dd+=0x1){let _0x1840b1=_0x35d46[_0x19f8dd];for(var _0x19b431=0x0;_0x19b431<_0x1840b1['Agents'][_0x7fb1('0x40')];_0x19b431+=0x1){let _0x25a68d=_0x1840b1[_0x7fb1('0x67')][_0x19b431];var _0x4194b9=_0x52f4d1[_0x7fb1('0x7a')]();_0x4194b9[_0x7fb1('0x45')](_0x7fb1('0x7b'),_0x25a68d['id']);_0x5c2cc9[_0x7fb1('0x7c')](db[_0x7fb1('0x7d')][_0x7fb1('0x3a')](_0x4194b9['toString'](),{'type':db[_0x7fb1('0x7d')][_0x7fb1('0x7e')][_0x7fb1('0x7f')]})[_0x7fb1('0x2a')](function(_0xd911e7){if(_0xd911e7['length']===0x1){return _0x25a68d['id'];}else{var _0x3dd1c4=_['every'](_['map'](_0xd911e7,_0x7fb1('0x80')),function(_0x1d0840){return _[_0x7fb1('0x81')](_0x3b684c,_0x1d0840);});if(_0x3dd1c4){return _0x25a68d['id'];}}}));}}return BPromise[_0x7fb1('0x82')](_0x5c2cc9)['then'](function(_0x2b10ad){_0x79c637=_(_0x79c637)[_0x7fb1('0x83')](_0x2b10ad)['compact']()['value']();return db[_0x7fb1('0x35')][_0x7fb1('0x54')]({'where':{'id':_0x7af4d9[_0x7fb1('0x4f')]['id']}})[_0x7fb1('0x2a')](function(_0x24ad39){return db['sequelize']['transaction'](function(_0x1da36b){return _0x24ad39[_0x7fb1('0x71')](_0x7af4d9[_0x7fb1('0x3a')][_0x7fb1('0x84')],{'transaction':_0x1da36b})[_0x7fb1('0x2a')](function(){if(!_[_0x7fb1('0x85')](_0x79c637)){return _0x24ad39[_0x7fb1('0x86')](_0x79c637,{'transaction':_0x1da36b});}})[_0x7fb1('0x2a')](function(){_0x79c637[_0x7fb1('0x6f')](function(_0xbddbee){socket[_0x7fb1('0x70')](_0x7fb1('0x87'),{'UserId':_0xbddbee,'OpenchannelQueueId':_0x24ad39['id']});});});});});});})[_0x7fb1('0x2a')](respondWithStatusCode(_0x2adc4c,null))[_0x7fb1('0x50')](handleError(_0x2adc4c,null));};exports['addAgents']=function(_0x207ba2,_0x25a4af,_0xf0c5f0){return db[_0x7fb1('0x35')][_0x7fb1('0x54')]({'where':{'id':_0x207ba2[_0x7fb1('0x4f')]['id']}})[_0x7fb1('0x2a')](handleEntityNotFound(_0x25a4af,null))[_0x7fb1('0x2a')](function(_0xfefd40){if(_0xfefd40){return _0xfefd40[_0x7fb1('0x88')](_0x207ba2[_0x7fb1('0x57')]['ids'],_[_0x7fb1('0x89')](_0x207ba2[_0x7fb1('0x57')],['ids','id'])||{})[_0x7fb1('0x8a')](function(_0x4d86b0){for(var _0x153f7c=0x0;_0x153f7c<_0x207ba2['body'][_0x7fb1('0x84')]['length'];_0x153f7c+=0x1){socket['emit'](_0x7fb1('0x8b'),{'UserId':Number(_0x207ba2[_0x7fb1('0x57')]['ids'][_0x153f7c]),'OpenchannelQueueId':Number(_0x207ba2['params']['id'])});}return _0x4d86b0;});}})['then'](respondWithResult(_0x25a4af,null))['catch'](handleError(_0x25a4af,null));};exports[_0x7fb1('0x86')]=function(_0x1838ac,_0x47ae44,_0x1f1061){return db[_0x7fb1('0x35')][_0x7fb1('0x54')]({'where':{'id':_0x1838ac[_0x7fb1('0x4f')]['id']}})[_0x7fb1('0x2a')](handleEntityNotFound(_0x47ae44,null))[_0x7fb1('0x2a')](function(_0x1ba162){if(_0x1ba162){return _0x1ba162[_0x7fb1('0x86')](_0x1838ac['query']['ids'])[_0x7fb1('0x2a')](function(){if(_[_0x7fb1('0x8c')](_0x1838ac[_0x7fb1('0x3a')]['ids'])){for(var _0x593ace=0x0;_0x593ace<_0x1838ac['query']['ids'][_0x7fb1('0x40')];_0x593ace+=0x1){socket[_0x7fb1('0x70')](_0x7fb1('0x87'),{'UserId':Number(_0x1838ac[_0x7fb1('0x3a')][_0x7fb1('0x84')][_0x593ace]),'OpenchannelQueueId':Number(_0x1838ac['params']['id'])});}}else{socket[_0x7fb1('0x70')](_0x7fb1('0x87'),{'UserId':Number(_0x1838ac['query'][_0x7fb1('0x84')]),'OpenchannelQueueId':Number(_0x1838ac['params']['id'])});}});}})[_0x7fb1('0x2a')](respondWithStatusCode(_0x47ae44,null))[_0x7fb1('0x50')](handleError(_0x47ae44,null));};exports[_0x7fb1('0x8d')]=function(_0x3e01e9,_0x22a1d9,_0x2fe636){var _0x289b2d={};var _0x48c403={};var _0x3a60bd;var _0x3e5615;return db['OpenchannelQueue'][_0x7fb1('0x59')]({'where':{'id':_0x3e01e9[_0x7fb1('0x4f')]['id']}})[_0x7fb1('0x2a')](handleEntityNotFound(_0x22a1d9,null))[_0x7fb1('0x2a')](function(_0x8c4978){if(_0x8c4978){_0x3a60bd=_0x8c4978;_0x48c403['model']=_[_0x7fb1('0x39')](db[_0x7fb1('0x5b')]['rawAttributes']);_0x48c403[_0x7fb1('0x3a')]=_[_0x7fb1('0x39')](_0x3e01e9['query']);_0x48c403['filters']=_['intersection'](_0x48c403[_0x7fb1('0x3c')],_0x48c403[_0x7fb1('0x3a')]);_0x289b2d[_0x7fb1('0x3d')]=_[_0x7fb1('0x3e')](_0x48c403[_0x7fb1('0x3c')],qs['fields'](_0x3e01e9['query'][_0x7fb1('0x3f')]));_0x289b2d[_0x7fb1('0x3d')]=_0x289b2d[_0x7fb1('0x3d')]['length']?_0x289b2d['attributes']:_0x48c403[_0x7fb1('0x3c')];_0x289b2d[_0x7fb1('0x43')]=qs[_0x7fb1('0x44')](_0x3e01e9[_0x7fb1('0x3a')]['sort']);_0x289b2d[_0x7fb1('0x45')]=qs[_0x7fb1('0x3b')](_[_0x7fb1('0x46')](_0x3e01e9['query'],_0x48c403[_0x7fb1('0x3b')]));if(_0x3e01e9[_0x7fb1('0x3a')][_0x7fb1('0x47')]){_0x289b2d['where']=_[_0x7fb1('0x48')](_0x289b2d['where'],{'$or':_[_0x7fb1('0x34')](_0x289b2d[_0x7fb1('0x3d')],function(_0x503503){var _0x2ba599={};_0x2ba599[_0x503503]={'$like':'%'+_0x3e01e9[_0x7fb1('0x3a')][_0x7fb1('0x47')]+'%'};return _0x2ba599;})});}_0x289b2d=_[_0x7fb1('0x48')]({},_0x289b2d,_0x3e01e9[_0x7fb1('0x4a')]);return _0x3a60bd[_0x7fb1('0x8d')](_0x289b2d);}})[_0x7fb1('0x2a')](function(_0x3dd9a1){if(_0x3dd9a1){_0x3e5615=_0x3dd9a1['length'];if(!_0x3e01e9[_0x7fb1('0x3a')][_0x7fb1('0x41')](_0x7fb1('0x42'))){_0x289b2d[_0x7fb1('0x24')]=qs[_0x7fb1('0x24')](_0x3e01e9[_0x7fb1('0x3a')]['limit']);_0x289b2d[_0x7fb1('0x21')]=qs[_0x7fb1('0x21')](_0x3e01e9['query'][_0x7fb1('0x21')]);}return _0x3a60bd[_0x7fb1('0x8d')](_0x289b2d);}})[_0x7fb1('0x2a')](function(_0x299870){if(_0x299870){return _0x299870?{'count':_0x3e5615,'rows':_0x299870}:null;}})['then'](respondWithResult(_0x22a1d9,null))[_0x7fb1('0x50')](handleError(_0x22a1d9,null));};
\ No newline at end of file
+var _0xc210=['addTeams','Team','User','Agents','voicePause','interface','transaction','each','forEach','emit','userOpenchannelQueue:save','removeTeams','tq.TeamId','from','team_has_openchannel_queues','OpenchannelQueueId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','ids','isEmpty','userOpenchannelQueue:remove','addAgents','omit','removeAgents','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./openchannelQueue.socket','register','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','stack','name','map','fieldName','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','options','OpenchannelQueue','includeAll','include','findAll','rows','catch','rawAttributes','keys','fields','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','describe','findOne','UserOpenchannelQueue','OpenchannelQueueId','findAndCountAll','UserId','agent','updatedAt','format','%s/%s','SIP','createdAt','getTeams'];(function(_0x3145af,_0x53a1d5){var _0x37758a=function(_0x4b1627){while(--_0x4b1627){_0x3145af['push'](_0x3145af['shift']());}};_0x37758a(++_0x53a1d5);}(_0xc210,0xa9));var _0x0c21=function(_0x528497,_0x147e87){_0x528497=_0x528497-0x0;var _0x392d59=_0xc210[_0x528497];return _0x392d59;};'use strict';var emlformat=require(_0x0c21('0x0'));var rimraf=require(_0x0c21('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0c21('0x2'));var rp=require(_0x0c21('0x3'));var moment=require(_0x0c21('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0c21('0x5'));var util=require(_0x0c21('0x6'));var path=require(_0x0c21('0x7'));var sox=require(_0x0c21('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0c21('0x9'));var _=require(_0x0c21('0xa'));var squel=require(_0x0c21('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0c21('0xc'));var toCsv=require('to-csv');var querystring=require(_0x0c21('0xd'));var Papa=require('papaparse');var Redis=require(_0x0c21('0xe'));var authService=require(_0x0c21('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0c21('0x10'));var logger=require(_0x0c21('0x11'))(_0x0c21('0x12'));var utils=require(_0x0c21('0x13'));var config=require(_0x0c21('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c21('0x15'))['db'];config[_0x0c21('0x16')]=_[_0x0c21('0x17')](config[_0x0c21('0x16')],{'host':_0x0c21('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0c21('0x19'))[_0x0c21('0x1a')](socket);function respondWithStatusCode(_0x2abf8f,_0x3242fd){_0x3242fd=_0x3242fd||0xcc;return function(_0x31f8f3){if(_0x31f8f3){return _0x2abf8f[_0x0c21('0x1b')](_0x3242fd);}return _0x2abf8f['status'](_0x3242fd)[_0x0c21('0x1c')]();};}function respondWithResult(_0x51b5f7,_0x519fd9){_0x519fd9=_0x519fd9||0xc8;return function(_0x2b52e7){if(_0x2b52e7){return _0x51b5f7[_0x0c21('0x1d')](_0x519fd9)['json'](_0x2b52e7);}};}function respondWithFilteredResult(_0x1a275a,_0x28e4ad){return function(_0x4dae28){if(_0x4dae28){var _0x5c7d24=typeof _0x28e4ad[_0x0c21('0x1e')]===_0x0c21('0x1f')&&typeof _0x28e4ad['limit']===_0x0c21('0x1f');var _0x295f93=_0x4dae28[_0x0c21('0x20')];var _0x2cffdf=_0x5c7d24?0x0:_0x28e4ad[_0x0c21('0x1e')];var _0x31b62e=_0x5c7d24?_0x4dae28[_0x0c21('0x20')]:_0x28e4ad[_0x0c21('0x1e')]+_0x28e4ad[_0x0c21('0x21')];var _0x1365fb;if(_0x31b62e>=_0x295f93){_0x31b62e=_0x295f93;_0x1365fb=0xc8;}else{_0x1365fb=0xce;}_0x1a275a['status'](_0x1365fb);return _0x1a275a[_0x0c21('0x22')](_0x0c21('0x23'),_0x2cffdf+'-'+_0x31b62e+'/'+_0x295f93)[_0x0c21('0x24')](_0x4dae28);}return null;};}function patchUpdates(_0x2845cf){return function(_0x578093){try{jsonpatch[_0x0c21('0x25')](_0x578093,_0x2845cf,!![]);}catch(_0x30e106){return BPromise[_0x0c21('0x26')](_0x30e106);}return _0x578093[_0x0c21('0x27')]();};}function saveUpdates(_0x12aa79,_0x25ec8f){return function(_0x407b99){if(_0x407b99){return _0x407b99[_0x0c21('0x28')](_0x12aa79)[_0x0c21('0x29')](function(_0x1f4925){return _0x1f4925;});}return null;};}function removeEntity(_0x4684ca,_0x33aa01){return function(_0x3a2a4b){if(_0x3a2a4b){return _0x3a2a4b[_0x0c21('0x2a')]()[_0x0c21('0x29')](function(){var _0x4a02bb=_0x3a2a4b[_0x0c21('0x2b')]({'plain':!![]});var _0x3cb9c5=_0x0c21('0x2c');return db[_0x0c21('0x2d')][_0x0c21('0x2a')]({'where':{'type':_0x3cb9c5,'resourceId':_0x4a02bb['id']}})['then'](function(){return _0x3a2a4b;});})[_0x0c21('0x29')](function(){_0x4684ca['status'](0xcc)[_0x0c21('0x1c')]();});}};}function handleEntityNotFound(_0x14560f,_0x20f628){return function(_0x58b08f){if(!_0x58b08f){_0x14560f[_0x0c21('0x1b')](0x194);}return _0x58b08f;};}function handleError(_0x3c1f77,_0x26427f){_0x26427f=_0x26427f||0x1f4;return function(_0x193f88){logger['error'](_0x193f88[_0x0c21('0x2e')]);if(_0x193f88[_0x0c21('0x2f')]){delete _0x193f88[_0x0c21('0x2f')];}_0x3c1f77['status'](_0x26427f)['send'](_0x193f88);};}exports['index']=function(_0x35e4e2,_0x2f2415){var _0x5e6556={},_0x152209={},_0x5746fc={'count':0x0,'rows':[]};var _0x1888e0=_[_0x0c21('0x30')](db['OpenchannelQueue']['rawAttributes'],function(_0x95e661){return{'name':_0x95e661[_0x0c21('0x31')],'type':_0x95e661['type'][_0x0c21('0x32')]};});_0x152209[_0x0c21('0x33')]=_[_0x0c21('0x30')](_0x1888e0,_0x0c21('0x2f'));_0x152209[_0x0c21('0x34')]=_['keys'](_0x35e4e2[_0x0c21('0x34')]);_0x152209['filters']=_[_0x0c21('0x35')](_0x152209[_0x0c21('0x33')],_0x152209['query']);_0x5e6556[_0x0c21('0x36')]=_[_0x0c21('0x35')](_0x152209[_0x0c21('0x33')],qs['fields'](_0x35e4e2[_0x0c21('0x34')]['fields']));_0x5e6556[_0x0c21('0x36')]=_0x5e6556['attributes'][_0x0c21('0x37')]?_0x5e6556['attributes']:_0x152209[_0x0c21('0x33')];if(!_0x35e4e2[_0x0c21('0x34')][_0x0c21('0x38')](_0x0c21('0x39'))){_0x5e6556['limit']=qs[_0x0c21('0x21')](_0x35e4e2['query'][_0x0c21('0x21')]);_0x5e6556['offset']=qs['offset'](_0x35e4e2['query'][_0x0c21('0x1e')]);}_0x5e6556[_0x0c21('0x3a')]=qs[_0x0c21('0x3b')](_0x35e4e2['query'][_0x0c21('0x3b')]);_0x5e6556[_0x0c21('0x3c')]=qs[_0x0c21('0x3d')](_[_0x0c21('0x3e')](_0x35e4e2[_0x0c21('0x34')],_0x152209[_0x0c21('0x3d')]),_0x1888e0);if(_0x35e4e2[_0x0c21('0x34')]['filter']){_0x5e6556[_0x0c21('0x3c')]=_['merge'](_0x5e6556[_0x0c21('0x3c')],{'$or':_[_0x0c21('0x30')](_0x1888e0,function(_0x210115){if(_0x210115['type']!==_0x0c21('0x3f')){var _0x762e01={};_0x762e01[_0x210115['name']]={'$like':'%'+_0x35e4e2[_0x0c21('0x34')][_0x0c21('0x40')]+'%'};return _0x762e01;}})});}_0x5e6556=_['merge']({},_0x5e6556,_0x35e4e2[_0x0c21('0x41')]);var _0x118433={'where':_0x5e6556['where']};return db[_0x0c21('0x42')]['count'](_0x118433)['then'](function(_0x5d62f3){_0x5746fc[_0x0c21('0x20')]=_0x5d62f3;if(_0x35e4e2[_0x0c21('0x34')][_0x0c21('0x43')]){_0x5e6556[_0x0c21('0x44')]=[{'all':!![]}];}return db[_0x0c21('0x42')][_0x0c21('0x45')](_0x5e6556);})[_0x0c21('0x29')](function(_0x3b2e2e){_0x5746fc[_0x0c21('0x46')]=_0x3b2e2e;return _0x5746fc;})[_0x0c21('0x29')](respondWithFilteredResult(_0x2f2415,_0x5e6556))[_0x0c21('0x47')](handleError(_0x2f2415,null));};exports['show']=function(_0x17f401,_0x2f4bb6){var _0xc4c92e={'raw':!![],'where':{'id':_0x17f401['params']['id']}},_0x22961b={};_0x22961b[_0x0c21('0x33')]=_['keys'](db[_0x0c21('0x42')][_0x0c21('0x48')]);_0x22961b[_0x0c21('0x34')]=_[_0x0c21('0x49')](_0x17f401[_0x0c21('0x34')]);_0x22961b[_0x0c21('0x3d')]=_[_0x0c21('0x35')](_0x22961b[_0x0c21('0x33')],_0x22961b[_0x0c21('0x34')]);_0xc4c92e[_0x0c21('0x36')]=_[_0x0c21('0x35')](_0x22961b[_0x0c21('0x33')],qs[_0x0c21('0x4a')](_0x17f401[_0x0c21('0x34')]['fields']));_0xc4c92e['attributes']=_0xc4c92e[_0x0c21('0x36')]['length']?_0xc4c92e[_0x0c21('0x36')]:_0x22961b[_0x0c21('0x33')];if(_0x17f401[_0x0c21('0x34')][_0x0c21('0x43')]){_0xc4c92e[_0x0c21('0x44')]=[{'all':!![]}];}_0xc4c92e=_[_0x0c21('0x4b')]({},_0xc4c92e,_0x17f401[_0x0c21('0x41')]);return db[_0x0c21('0x42')]['find'](_0xc4c92e)['then'](handleEntityNotFound(_0x2f4bb6,null))[_0x0c21('0x29')](respondWithResult(_0x2f4bb6,null))['catch'](handleError(_0x2f4bb6,null));};exports[_0x0c21('0x4c')]=function(_0x205b47,_0x4ba388){return db[_0x0c21('0x42')][_0x0c21('0x4c')](_0x205b47[_0x0c21('0x4d')],{})[_0x0c21('0x29')](function(_0x3cb5a0){var _0x3c466a=_0x205b47[_0x0c21('0x4e')][_0x0c21('0x2b')]({'plain':!![]});if(!_0x3c466a)throw new Error(_0x0c21('0x4f'));if(_0x3c466a[_0x0c21('0x50')]==='user'){var _0x5b21e8=_0x3cb5a0[_0x0c21('0x2b')]({'plain':!![]});var _0x37d68a='OpenchannelQueues';return db['UserProfileSection']['find']({'where':{'name':_0x37d68a,'userProfileId':_0x3c466a['userProfileId']},'raw':!![]})['then'](function(_0x9d50a7){if(_0x9d50a7&&_0x9d50a7[_0x0c21('0x51')]===0x0){return db[_0x0c21('0x2d')]['create']({'name':_0x5b21e8[_0x0c21('0x2f')],'resourceId':_0x5b21e8['id'],'type':_0x9d50a7['name'],'sectionId':_0x9d50a7['id']},{})[_0x0c21('0x29')](function(){return _0x3cb5a0;});}else{return _0x3cb5a0;}})[_0x0c21('0x47')](function(_0x292d88){logger[_0x0c21('0x52')](_0x0c21('0x53'),_0x292d88);throw _0x292d88;});}return _0x3cb5a0;})[_0x0c21('0x29')](respondWithResult(_0x4ba388,0xc9))[_0x0c21('0x47')](handleError(_0x4ba388,null));};exports[_0x0c21('0x28')]=function(_0x264d3e,_0x3ef307){if(_0x264d3e['body']['id']){delete _0x264d3e[_0x0c21('0x4d')]['id'];}return db[_0x0c21('0x42')][_0x0c21('0x54')]({'where':{'id':_0x264d3e[_0x0c21('0x55')]['id']}})[_0x0c21('0x29')](handleEntityNotFound(_0x3ef307,null))[_0x0c21('0x29')](saveUpdates(_0x264d3e[_0x0c21('0x4d')],null))[_0x0c21('0x29')](respondWithResult(_0x3ef307,null))[_0x0c21('0x47')](handleError(_0x3ef307,null));};exports['destroy']=function(_0x13271f,_0x68fca){return db['OpenchannelQueue']['find']({'where':{'id':_0x13271f['params']['id']}})[_0x0c21('0x29')](handleEntityNotFound(_0x68fca,null))[_0x0c21('0x29')](removeEntity(_0x68fca,null))[_0x0c21('0x47')](handleError(_0x68fca,null));};exports[_0x0c21('0x56')]=function(_0x433379,_0x41b4fb){return db['OpenchannelQueue'][_0x0c21('0x56')]()['then'](respondWithResult(_0x41b4fb,null))[_0x0c21('0x47')](handleError(_0x41b4fb,null));};exports['getMembers']=function(_0xbd3ebf,_0x2c4a77,_0x512fbe){var _0x5428be={'raw':!![],'where':{}},_0x3ec224={},_0x237670;return db[_0x0c21('0x42')][_0x0c21('0x57')]({'where':{'id':_0xbd3ebf[_0x0c21('0x55')]['id']}})[_0x0c21('0x29')](handleEntityNotFound(_0x2c4a77,null))[_0x0c21('0x29')](function(_0x2f1cdb){if(_0x2f1cdb){_0x237670=_0x2f1cdb[_0x0c21('0x2b')]({'plain':!![]});_0x3ec224[_0x0c21('0x33')]=_['keys'](db[_0x0c21('0x58')][_0x0c21('0x48')]);_0x3ec224[_0x0c21('0x34')]=_[_0x0c21('0x49')](_0xbd3ebf[_0x0c21('0x34')]);_0x3ec224[_0x0c21('0x3d')]=_[_0x0c21('0x35')](_0x3ec224[_0x0c21('0x33')],_0x3ec224[_0x0c21('0x34')]);_0x5428be[_0x0c21('0x36')]=_[_0x0c21('0x35')](_0x3ec224[_0x0c21('0x33')],qs[_0x0c21('0x4a')](_0xbd3ebf['query']['fields']));_0x5428be[_0x0c21('0x36')]=_0x5428be['attributes'][_0x0c21('0x37')]?_0x5428be['attributes']:_0x3ec224[_0x0c21('0x33')];if(!_0xbd3ebf[_0x0c21('0x34')]['hasOwnProperty'](_0x0c21('0x39'))){_0x5428be[_0x0c21('0x21')]=qs[_0x0c21('0x21')](_0xbd3ebf[_0x0c21('0x34')][_0x0c21('0x21')]);_0x5428be[_0x0c21('0x1e')]=qs[_0x0c21('0x1e')](_0xbd3ebf[_0x0c21('0x34')][_0x0c21('0x1e')]);}_0x5428be[_0x0c21('0x3a')]=qs[_0x0c21('0x3b')](_0xbd3ebf[_0x0c21('0x34')][_0x0c21('0x3b')]);_0x5428be[_0x0c21('0x3c')]=qs[_0x0c21('0x3d')](_[_0x0c21('0x3e')](_0xbd3ebf[_0x0c21('0x34')],_0x3ec224[_0x0c21('0x3d')]));_0x5428be[_0x0c21('0x3c')][_0x0c21('0x59')]=_0x2f1cdb['id'];if(_0xbd3ebf[_0x0c21('0x34')]['filter']){_0x5428be[_0x0c21('0x3c')]=_[_0x0c21('0x4b')](_0x5428be[_0x0c21('0x3c')],{'$or':_['map'](_0x5428be[_0x0c21('0x36')],function(_0x59ec54){var _0x468696={};_0x468696[_0x59ec54]={'$like':'%'+_0xbd3ebf['query'][_0x0c21('0x40')]+'%'};return _0x468696;})});}_0x5428be=_[_0x0c21('0x4b')]({},_0x5428be,_0xbd3ebf[_0x0c21('0x41')]);return db[_0x0c21('0x58')][_0x0c21('0x45')](_0x5428be);}})[_0x0c21('0x29')](function(_0x1aa833){if(_0x1aa833){return db['User'][_0x0c21('0x5a')]({'where':{'id':_['map'](_0x1aa833,_0x0c21('0x5b')),'role':_0x0c21('0x5c')},'attributes':['id',_0x0c21('0x2f'),'openchannelPause',_0x0c21('0x5d'),'createdAt']});}})['then'](function(_0x5576da){if(_0x5576da){return{'count':_0x5576da[_0x0c21('0x20')],'rows':_[_0x0c21('0x30')](_0x5576da[_0x0c21('0x46')],function(_0x4a9935){return{'membername':_0x4a9935[_0x0c21('0x2f')],'UserId':_0x4a9935['id'],'queue_name':_0x237670[_0x0c21('0x2f')],'OpenchannelQueueId':_0x237670['id'],'interface':util[_0x0c21('0x5e')](_0x0c21('0x5f'),_0x0c21('0x60'),_0x4a9935[_0x0c21('0x2f')]),'penalty':0x0,'paused':_0x4a9935['openchannelPause'],'createdAt':_0x4a9935[_0x0c21('0x61')],'updatedAt':_0x4a9935[_0x0c21('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x0c21('0x29')](respondWithFilteredResult(_0x2c4a77,_0x5428be))['catch'](handleError(_0x2c4a77,null));};exports[_0x0c21('0x62')]=function(_0x291cef,_0x15c750,_0x540c1c){var _0x5926fa={};var _0x46a979={};var _0x3ea7c7;var _0x1b6f41;return db[_0x0c21('0x42')][_0x0c21('0x57')]({'where':{'id':_0x291cef['params']['id']}})['then'](handleEntityNotFound(_0x15c750,null))['then'](function(_0x2dc5da){if(_0x2dc5da){_0x3ea7c7=_0x2dc5da;_0x46a979[_0x0c21('0x33')]=_[_0x0c21('0x49')](db['Team'][_0x0c21('0x48')]);_0x46a979[_0x0c21('0x34')]=_['keys'](_0x291cef['query']);_0x46a979[_0x0c21('0x3d')]=_[_0x0c21('0x35')](_0x46a979[_0x0c21('0x33')],_0x46a979[_0x0c21('0x34')]);_0x5926fa[_0x0c21('0x36')]=_[_0x0c21('0x35')](_0x46a979[_0x0c21('0x33')],qs[_0x0c21('0x4a')](_0x291cef[_0x0c21('0x34')][_0x0c21('0x4a')]));_0x5926fa[_0x0c21('0x36')]=_0x5926fa[_0x0c21('0x36')]['length']?_0x5926fa[_0x0c21('0x36')]:_0x46a979[_0x0c21('0x33')];_0x5926fa[_0x0c21('0x3a')]=qs[_0x0c21('0x3b')](_0x291cef[_0x0c21('0x34')][_0x0c21('0x3b')]);_0x5926fa[_0x0c21('0x3c')]=qs[_0x0c21('0x3d')](_['pick'](_0x291cef[_0x0c21('0x34')],_0x46a979[_0x0c21('0x3d')]));if(_0x291cef['query'][_0x0c21('0x40')]){_0x5926fa[_0x0c21('0x3c')]=_[_0x0c21('0x4b')](_0x5926fa[_0x0c21('0x3c')],{'$or':_['map'](_0x5926fa[_0x0c21('0x36')],function(_0xdc3118){var _0x31bc89={};_0x31bc89[_0xdc3118]={'$like':'%'+_0x291cef['query'][_0x0c21('0x40')]+'%'};return _0x31bc89;})});}_0x5926fa=_[_0x0c21('0x4b')]({},_0x5926fa,_0x291cef[_0x0c21('0x41')]);return _0x3ea7c7[_0x0c21('0x62')](_0x5926fa);}})[_0x0c21('0x29')](function(_0x1dc87b){if(_0x1dc87b){_0x1b6f41=_0x1dc87b[_0x0c21('0x37')];if(!_0x291cef[_0x0c21('0x34')]['hasOwnProperty']('nolimit')){_0x5926fa[_0x0c21('0x21')]=qs[_0x0c21('0x21')](_0x291cef[_0x0c21('0x34')][_0x0c21('0x21')]);_0x5926fa[_0x0c21('0x1e')]=qs[_0x0c21('0x1e')](_0x291cef[_0x0c21('0x34')]['offset']);}return _0x3ea7c7[_0x0c21('0x62')](_0x5926fa);}})[_0x0c21('0x29')](function(_0x594c93){if(_0x594c93){return _0x594c93?{'count':_0x1b6f41,'rows':_0x594c93}:null;}})['then'](respondWithResult(_0x15c750,null))['catch'](handleError(_0x15c750,null));};exports[_0x0c21('0x63')]=function(_0x29640c,_0x1ed86a,_0x2a4f47){var _0x5eaa6b=_0x29640c['body']['ids'];return db[_0x0c21('0x64')][_0x0c21('0x45')]({'where':{'id':_0x5eaa6b},'attributes':['id'],'include':[{'model':db[_0x0c21('0x65')],'as':_0x0c21('0x66'),'attributes':['id',_0x0c21('0x2f'),'online',_0x0c21('0x67'),_0x0c21('0x68')],'raw':!![]}]})[_0x0c21('0x29')](function(_0x4045e6){if(_0x4045e6){var _0x2b48c9=_['flatMap'](_0x4045e6,function(_0x267ae7){var _0x48784b=_0x267ae7[_0x0c21('0x2b')]({'plain':!![]});return _0x48784b['Agents'];});return db[_0x0c21('0x42')][_0x0c21('0x54')]({'where':{'id':_0x29640c[_0x0c21('0x55')]['id']}})[_0x0c21('0x29')](function(_0xf58be2){return db['sequelize'][_0x0c21('0x69')](function(_0x5b50f2){return _0xf58be2[_0x0c21('0x63')](_0x5eaa6b,{'transaction':_0x5b50f2})[_0x0c21('0x29')](function(){return BPromise[_0x0c21('0x6a')](_0x2b48c9,function(_0x13596b){return db[_0x0c21('0x58')]['findOrCreate']({'where':{'UserId':_0x13596b['id'],'OpenchannelQueueId':_0x29640c[_0x0c21('0x55')]['id']},'transaction':_0x5b50f2});});})[_0x0c21('0x29')](function(){_0x2b48c9[_0x0c21('0x6b')](function(_0x3d5640){socket[_0x0c21('0x6c')](_0x0c21('0x6d'),{'UserId':_0x3d5640['id'],'OpenchannelQueueId':_0xf58be2['id']});});});});});}})['then'](respondWithStatusCode(_0x1ed86a,null))[_0x0c21('0x47')](handleError(_0x1ed86a,null));};exports[_0x0c21('0x6e')]=function(_0x1aa2c6,_0xcdcd5c,_0x92d406){return db[_0x0c21('0x64')]['findAll']({'where':{'id':_0x1aa2c6[_0x0c21('0x34')]['ids']},'attributes':['id'],'include':[{'model':db[_0x0c21('0x65')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x0c21('0x29')](handleEntityNotFound(_0xcdcd5c,null))['then'](function(_0x474f4c){var _0x7d68fd=_[_0x0c21('0x30')](_0x474f4c,'id');var _0x49322c=[];var _0x145765=[];var _0xe044d0=squel['select']();_0xe044d0['field'](_0x0c21('0x6f'))[_0x0c21('0x70')](_0x0c21('0x71'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x0c21('0x3c')](_0x0c21('0x72'),_0x1aa2c6[_0x0c21('0x55')]['id']);for(var _0x2d3be7=0x0;_0x2d3be7<_0x474f4c[_0x0c21('0x37')];_0x2d3be7+=0x1){let _0x496961=_0x474f4c[_0x2d3be7];for(var _0x4df333=0x0;_0x4df333<_0x496961[_0x0c21('0x66')][_0x0c21('0x37')];_0x4df333+=0x1){let _0x8e012b=_0x496961[_0x0c21('0x66')][_0x4df333];var _0x1cff9a=_0xe044d0['clone']();_0x1cff9a['where']('ut.UserId\x20=\x20?',_0x8e012b['id']);_0x145765[_0x0c21('0x73')](db[_0x0c21('0x74')][_0x0c21('0x34')](_0x1cff9a[_0x0c21('0x75')](),{'type':db[_0x0c21('0x74')][_0x0c21('0x76')][_0x0c21('0x77')]})['then'](function(_0x43c9d7){if(_0x43c9d7[_0x0c21('0x37')]===0x1){return _0x8e012b['id'];}else{var _0x563c21=_[_0x0c21('0x78')](_[_0x0c21('0x30')](_0x43c9d7,_0x0c21('0x79')),function(_0x4fe5e3){return _['includes'](_0x7d68fd,_0x4fe5e3);});if(_0x563c21){return _0x8e012b['id'];}}}));}}return BPromise[_0x0c21('0x7a')](_0x145765)[_0x0c21('0x29')](function(_0x952c3d){_0x49322c=_(_0x49322c)[_0x0c21('0x7b')](_0x952c3d)[_0x0c21('0x7c')]()[_0x0c21('0x7d')]();return db['OpenchannelQueue'][_0x0c21('0x54')]({'where':{'id':_0x1aa2c6[_0x0c21('0x55')]['id']}})[_0x0c21('0x29')](function(_0x3d30c7){return db['sequelize'][_0x0c21('0x69')](function(_0x1add38){return _0x3d30c7[_0x0c21('0x6e')](_0x1aa2c6[_0x0c21('0x34')][_0x0c21('0x7e')],{'transaction':_0x1add38})[_0x0c21('0x29')](function(){if(!_[_0x0c21('0x7f')](_0x49322c)){return _0x3d30c7['removeAgents'](_0x49322c,{'transaction':_0x1add38});}})[_0x0c21('0x29')](function(){_0x49322c['forEach'](function(_0x491570){socket[_0x0c21('0x6c')](_0x0c21('0x80'),{'UserId':_0x491570,'OpenchannelQueueId':_0x3d30c7['id']});});});});});});})[_0x0c21('0x29')](respondWithStatusCode(_0xcdcd5c,null))['catch'](handleError(_0xcdcd5c,null));};exports[_0x0c21('0x81')]=function(_0x1013e6,_0x22ec4d,_0x120146){return db[_0x0c21('0x42')][_0x0c21('0x54')]({'where':{'id':_0x1013e6[_0x0c21('0x55')]['id']}})['then'](handleEntityNotFound(_0x22ec4d,null))[_0x0c21('0x29')](function(_0x54e54e){if(_0x54e54e){return _0x54e54e['addAgents'](_0x1013e6['body'][_0x0c21('0x7e')],_[_0x0c21('0x82')](_0x1013e6[_0x0c21('0x4d')],[_0x0c21('0x7e'),'id'])||{})['spread'](function(_0x4b6705){for(var _0x3c1c4b=0x0;_0x3c1c4b<_0x1013e6['body'][_0x0c21('0x7e')][_0x0c21('0x37')];_0x3c1c4b+=0x1){socket[_0x0c21('0x6c')](_0x0c21('0x6d'),{'UserId':Number(_0x1013e6['body']['ids'][_0x3c1c4b]),'OpenchannelQueueId':Number(_0x1013e6['params']['id'])});}return _0x4b6705;});}})[_0x0c21('0x29')](respondWithResult(_0x22ec4d,null))['catch'](handleError(_0x22ec4d,null));};exports['removeAgents']=function(_0x49070b,_0x40e6ca,_0x5e6cca){return db['OpenchannelQueue'][_0x0c21('0x54')]({'where':{'id':_0x49070b[_0x0c21('0x55')]['id']}})[_0x0c21('0x29')](handleEntityNotFound(_0x40e6ca,null))[_0x0c21('0x29')](function(_0x299926){if(_0x299926){return _0x299926[_0x0c21('0x83')](_0x49070b[_0x0c21('0x34')][_0x0c21('0x7e')])[_0x0c21('0x29')](function(){if(_[_0x0c21('0x84')](_0x49070b[_0x0c21('0x34')][_0x0c21('0x7e')])){for(var _0x18010d=0x0;_0x18010d<_0x49070b[_0x0c21('0x34')]['ids'][_0x0c21('0x37')];_0x18010d+=0x1){socket[_0x0c21('0x6c')](_0x0c21('0x80'),{'UserId':Number(_0x49070b['query']['ids'][_0x18010d]),'OpenchannelQueueId':Number(_0x49070b[_0x0c21('0x55')]['id'])});}}else{socket[_0x0c21('0x6c')](_0x0c21('0x80'),{'UserId':Number(_0x49070b[_0x0c21('0x34')]['ids']),'OpenchannelQueueId':Number(_0x49070b[_0x0c21('0x55')]['id'])});}});}})[_0x0c21('0x29')](respondWithStatusCode(_0x40e6ca,null))[_0x0c21('0x47')](handleError(_0x40e6ca,null));};exports[_0x0c21('0x85')]=function(_0x109acf,_0x453a3d,_0x4c981a){var _0x241c80={};var _0x26c8ee={};var _0x4a7b30;var _0x2ea575;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x109acf[_0x0c21('0x55')]['id']}})[_0x0c21('0x29')](handleEntityNotFound(_0x453a3d,null))['then'](function(_0x2df38b){if(_0x2df38b){_0x4a7b30=_0x2df38b;_0x26c8ee[_0x0c21('0x33')]=_[_0x0c21('0x49')](db[_0x0c21('0x65')][_0x0c21('0x48')]);_0x26c8ee[_0x0c21('0x34')]=_['keys'](_0x109acf[_0x0c21('0x34')]);_0x26c8ee['filters']=_['intersection'](_0x26c8ee[_0x0c21('0x33')],_0x26c8ee[_0x0c21('0x34')]);_0x241c80[_0x0c21('0x36')]=_[_0x0c21('0x35')](_0x26c8ee['model'],qs[_0x0c21('0x4a')](_0x109acf['query'][_0x0c21('0x4a')]));_0x241c80[_0x0c21('0x36')]=_0x241c80[_0x0c21('0x36')][_0x0c21('0x37')]?_0x241c80[_0x0c21('0x36')]:_0x26c8ee['model'];_0x241c80[_0x0c21('0x3a')]=qs['sort'](_0x109acf[_0x0c21('0x34')][_0x0c21('0x3b')]);_0x241c80[_0x0c21('0x3c')]=qs[_0x0c21('0x3d')](_[_0x0c21('0x3e')](_0x109acf[_0x0c21('0x34')],_0x26c8ee[_0x0c21('0x3d')]));if(_0x109acf[_0x0c21('0x34')][_0x0c21('0x40')]){_0x241c80[_0x0c21('0x3c')]=_['merge'](_0x241c80[_0x0c21('0x3c')],{'$or':_[_0x0c21('0x30')](_0x241c80[_0x0c21('0x36')],function(_0x589b9a){var _0xde30de={};_0xde30de[_0x589b9a]={'$like':'%'+_0x109acf[_0x0c21('0x34')][_0x0c21('0x40')]+'%'};return _0xde30de;})});}_0x241c80=_[_0x0c21('0x4b')]({},_0x241c80,_0x109acf['options']);return _0x4a7b30['getAgents'](_0x241c80);}})[_0x0c21('0x29')](function(_0x41c5d8){if(_0x41c5d8){_0x2ea575=_0x41c5d8['length'];if(!_0x109acf[_0x0c21('0x34')]['hasOwnProperty'](_0x0c21('0x39'))){_0x241c80[_0x0c21('0x21')]=qs[_0x0c21('0x21')](_0x109acf[_0x0c21('0x34')][_0x0c21('0x21')]);_0x241c80['offset']=qs['offset'](_0x109acf[_0x0c21('0x34')][_0x0c21('0x1e')]);}return _0x4a7b30[_0x0c21('0x85')](_0x241c80);}})['then'](function(_0xbc312a){if(_0xbc312a){return _0xbc312a?{'count':_0x2ea575,'rows':_0xbc312a}:null;}})[_0x0c21('0x29')](respondWithResult(_0x453a3d,null))[_0x0c21('0x47')](handleError(_0x453a3d,null));};
\ No newline at end of file
index cc1f4a2..baf517c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7f2=['../../mysqldb','OpenchannelQueue','setMaxListeners','update','remove','emit','events'];(function(_0x21aefe,_0x3bccda){var _0x179cc5=function(_0x1af72e){while(--_0x1af72e){_0x21aefe['push'](_0x21aefe['shift']());}};_0x179cc5(++_0x3bccda);}(_0xd7f2,0x102));var _0x2d7f=function(_0x2ada1d,_0x291f64){_0x2ada1d=_0x2ada1d-0x0;var _0x4ee7eb=_0xd7f2[_0x2ada1d];return _0x4ee7eb;};'use strict';var EventEmitter=require(_0x2d7f('0x0'));var OpenchannelQueue=require(_0x2d7f('0x1'))['db'][_0x2d7f('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x2d7f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2d7f('0x4'),'afterDestroy':_0x2d7f('0x5')};function emitEvent(_0x3c86d2){return function(_0x2a3b38,_0x134efe,_0x1320e8){OpenchannelQueueEvents[_0x2d7f('0x6')](_0x3c86d2+':'+_0x2a3b38['id'],_0x2a3b38);OpenchannelQueueEvents['emit'](_0x3c86d2,_0x2a3b38);_0x1320e8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xfc9a=['hook','exports','save','update','remove','emit','hasOwnProperty'];(function(_0x37becd,_0x35463d){var _0x4824c3=function(_0x3662aa){while(--_0x3662aa){_0x37becd['push'](_0x37becd['shift']());}};_0x4824c3(++_0x35463d);}(_0xfc9a,0x1de));var _0xafc9=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xfc9a[_0x1facfa];return _0x9ec701;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xafc9('0x0'),'afterUpdate':_0xafc9('0x1'),'afterDestroy':_0xafc9('0x2')};function emitEvent(_0x555987){return function(_0x28e3ea,_0x268cb5,_0x357e20){OpenchannelQueueEvents[_0xafc9('0x3')](_0x555987+':'+_0x28e3ea['id'],_0x28e3ea);OpenchannelQueueEvents[_0xafc9('0x3')](_0x555987,_0x28e3ea);_0x357e20(null);};}for(var e in events){if(events[_0xafc9('0x4')](e)){var event=events[e];OpenchannelQueue[_0xafc9('0x5')](e,emitEvent(event));}}module[_0xafc9('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
index 39572e3..be59979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96c2=['exports','define','openchannel_queues','util','../../config/logger','api','moment','request-promise','../../config/environment'];(function(_0x18c23c,_0x5d31df){var _0xa3b55=function(_0x59ce50){while(--_0x59ce50){_0x18c23c['push'](_0x18c23c['shift']());}};_0xa3b55(++_0x5d31df);}(_0x96c2,0xb7));var _0x296c=function(_0x2f3d29,_0x150e7b){_0x2f3d29=_0x2f3d29-0x0;var _0x53d69d=_0x96c2[_0x2f3d29];return _0x53d69d;};'use strict';var _=require('lodash');var util=require(_0x296c('0x0'));var logger=require(_0x296c('0x1'))(_0x296c('0x2'));var moment=require(_0x296c('0x3'));var BPromise=require('bluebird');var rp=require(_0x296c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x296c('0x5'));var attributes=require('./openchannelQueue.attributes');module[_0x296c('0x6')]=function(_0x8f5620,_0x365099){return _0x8f5620[_0x296c('0x7')]('OpenchannelQueue',attributes,{'tableName':_0x296c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a35=['rimraf','./openchannelQueue.attributes','exports','define','lodash','api','moment','bluebird','request-promise','path'];(function(_0x248d54,_0x28321e){var _0x5ace1d=function(_0x273f35){while(--_0x273f35){_0x248d54['push'](_0x248d54['shift']());}};_0x5ace1d(++_0x28321e);}(_0x3a35,0x13a));var _0x53a3=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x3a35[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x53a3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x53a3('0x1'));var moment=require(_0x53a3('0x2'));var BPromise=require(_0x53a3('0x3'));var rp=require(_0x53a3('0x4'));var fs=require('fs');var path=require(_0x53a3('0x5'));var rimraf=require(_0x53a3('0x6'));var config=require('../../config/environment');var attributes=require(_0x53a3('0x7'));module[_0x53a3('0x8')]=function(_0x5b5473,_0x459d33){return _0x5b5473[_0x53a3('0x9')]('OpenchannelQueue',attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58cbda1..7464462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x984c=['result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowOpenchannelQueue','find','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x984c,0x13f));var _0xc984=function(_0x47a5a7,_0x17bf76){_0x47a5a7=_0x47a5a7-0x0;var _0x3b6fd2=_0x984c[_0x47a5a7];return _0x3b6fd2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc984('0x0'));var BPromise=require(_0xc984('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc984('0x2'))['db'];var utils=require(_0xc984('0x3'));var logger=require(_0xc984('0x4'))(_0xc984('0x5'));var config=require('../../config/environment');var jayson=require(_0xc984('0x6'));var client=jayson['client'][_0xc984('0x7')]({'port':0x232a});config[_0xc984('0x8')]=_['defaults'](config[_0xc984('0x8')],{'host':_0xc984('0x9'),'port':0x18eb});var socket=require(_0xc984('0xa'))(new Redis(config[_0xc984('0x8')]));require(_0xc984('0xb'))['register'](socket);function respondWithRpcPromise(_0x5d896d,_0x1e8b60,_0xb3d934){return new BPromise(function(_0x439ba8,_0x148a8d){return client[_0xc984('0xc')](_0x5d896d,_0xb3d934)[_0xc984('0xd')](function(_0x3424bd){logger[_0xc984('0xe')](_0xc984('0xf'),_0x1e8b60,_0xc984('0x10'));logger[_0xc984('0x11')](_0xc984('0x12'),_0x1e8b60,_0xc984('0x10'),JSON[_0xc984('0x13')](_0x3424bd));if(_0x3424bd[_0xc984('0x14')]){if(_0x3424bd[_0xc984('0x14')][_0xc984('0x15')]===0x1f4){logger[_0xc984('0x14')](_0xc984('0xf'),_0x1e8b60,_0x3424bd['error'][_0xc984('0x16')]);return _0x148a8d(_0x3424bd['error'][_0xc984('0x16')]);}logger[_0xc984('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x1e8b60,_0x3424bd[_0xc984('0x14')][_0xc984('0x16')]);return _0x439ba8(_0x3424bd[_0xc984('0x14')]['message']);}else{logger['info'](_0xc984('0xf'),_0x1e8b60,_0xc984('0x10'));_0x439ba8(_0x3424bd[_0xc984('0x17')]['message']);}})[_0xc984('0x18')](function(_0x1eedba){logger[_0xc984('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x1e8b60,_0x1eedba);_0x148a8d(_0x1eedba);});});}exports[_0xc984('0x19')]=function(_0x89edcf){var _0x3fe7a3=this;return new Promise(function(_0x59fe3a,_0x224eb7){return db[_0xc984('0x1a')][_0xc984('0x1b')]({'raw':_0x89edcf[_0xc984('0x1c')]?_0x89edcf[_0xc984('0x1c')][_0xc984('0x1d')]===undefined?!![]:![]:!![],'where':_0x89edcf[_0xc984('0x1c')]?_0x89edcf[_0xc984('0x1c')][_0xc984('0x1e')]||null:null,'attributes':_0x89edcf['options']?_0x89edcf[_0xc984('0x1c')][_0xc984('0x1f')]||null:null,'limit':_0x89edcf[_0xc984('0x1c')]?_0x89edcf[_0xc984('0x1c')][_0xc984('0x20')]||null:null,'include':_0x89edcf[_0xc984('0x1c')]?_0x89edcf[_0xc984('0x1c')][_0xc984('0x21')]?_[_0xc984('0x22')](_0x89edcf[_0xc984('0x1c')][_0xc984('0x21')],function(_0x33c474){return{'model':db[_0x33c474['model']],'as':_0x33c474['as'],'attributes':_0x33c474[_0xc984('0x1f')],'include':_0x33c474['include']?_[_0xc984('0x22')](_0x33c474['include'],function(_0x4b6e95){return{'model':db[_0x4b6e95[_0xc984('0x23')]],'as':_0x4b6e95['as'],'attributes':_0x4b6e95['attributes'],'include':_0x4b6e95[_0xc984('0x21')]?_['map'](_0x4b6e95[_0xc984('0x21')],function(_0x9cc10f){return{'model':db[_0x9cc10f[_0xc984('0x23')]],'as':_0x9cc10f['as'],'attributes':_0x9cc10f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b115f){logger[_0xc984('0xe')](_0xc984('0x19'),_0x89edcf);logger[_0xc984('0x11')](_0xc984('0x19'),_0x89edcf,JSON[_0xc984('0x13')](_0x4b115f));_0x59fe3a(_0x4b115f);})[_0xc984('0x18')](function(_0x10b108){logger['error'](_0xc984('0x19'),_0x10b108[_0xc984('0x16')],_0x89edcf);_0x224eb7(_0x3fe7a3['error'](0x1f4,_0x10b108['message']));});});};exports[_0xc984('0x24')]=function(_0x5d26f2){var _0x1027a5=this;return new Promise(function(_0x29be85,_0x3a0be5){return db['OpenchannelQueue'][_0xc984('0x25')]({'raw':_0x5d26f2['options']?_0x5d26f2['options'][_0xc984('0x1d')]===undefined?!![]:![]:!![],'where':_0x5d26f2['options']?_0x5d26f2[_0xc984('0x1c')][_0xc984('0x1e')]||null:null,'attributes':_0x5d26f2[_0xc984('0x1c')]?_0x5d26f2[_0xc984('0x1c')][_0xc984('0x1f')]||null:null,'include':_0x5d26f2[_0xc984('0x1c')]?_0x5d26f2[_0xc984('0x1c')]['include']?_[_0xc984('0x22')](_0x5d26f2[_0xc984('0x1c')]['include'],function(_0x9d1f53){return{'model':db[_0x9d1f53['model']],'as':_0x9d1f53['as'],'attributes':_0x9d1f53[_0xc984('0x1f')],'include':_0x9d1f53[_0xc984('0x21')]?_['map'](_0x9d1f53[_0xc984('0x21')],function(_0x473749){return{'model':db[_0x473749[_0xc984('0x23')]],'as':_0x473749['as'],'attributes':_0x473749[_0xc984('0x1f')],'include':_0x473749[_0xc984('0x21')]?_[_0xc984('0x22')](_0x473749[_0xc984('0x21')],function(_0x551e3c){return{'model':db[_0x551e3c['model']],'as':_0x551e3c['as'],'attributes':_0x551e3c[_0xc984('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xc984('0xd')](function(_0x2ab047){logger[_0xc984('0xe')]('ShowOpenchannelQueue',_0x5d26f2);logger[_0xc984('0x11')](_0xc984('0x24'),_0x5d26f2,JSON[_0xc984('0x13')](_0x2ab047));_0x29be85(_0x2ab047);})['catch'](function(_0x224a45){logger[_0xc984('0x14')]('ShowOpenchannelQueue',_0x224a45[_0xc984('0x16')],_0x5d26f2);_0x3a0be5(_0x1027a5[_0xc984('0x14')](0x1f4,_0x224a45[_0xc984('0x16')]));});});};
\ No newline at end of file
+var _0x47c8=['request','then','info','OpenchannelQueue,\x20%s,\x20%s','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetOpenchannelQueue','options','raw','limit','map','model','attributes','include','catch','OpenchannelQueue','where','ShowOpenchannelQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x47c8,0xe4));var _0x847c=function(_0x24268f,_0x15b4e5){_0x24268f=_0x24268f-0x0;var _0x32f92a=_0x47c8[_0x24268f];return _0x32f92a;};'use strict';var _=require(_0x847c('0x0'));var util=require(_0x847c('0x1'));var moment=require(_0x847c('0x2'));var BPromise=require(_0x847c('0x3'));var rs=require(_0x847c('0x4'));var fs=require('fs');var Redis=require(_0x847c('0x5'));var db=require(_0x847c('0x6'))['db'];var utils=require(_0x847c('0x7'));var logger=require(_0x847c('0x8'))(_0x847c('0x9'));var config=require(_0x847c('0xa'));var jayson=require(_0x847c('0xb'));var client=jayson['client'][_0x847c('0xc')]({'port':0x232a});config[_0x847c('0xd')]=_[_0x847c('0xe')](config['redis'],{'host':_0x847c('0xf'),'port':0x18eb});var socket=require(_0x847c('0x10'))(new Redis(config['redis']));require('./openchannelQueue.socket')[_0x847c('0x11')](socket);function respondWithRpcPromise(_0x523ea8,_0x1c33a4,_0x5b11e2){return new BPromise(function(_0x46f433,_0x433837){return client[_0x847c('0x12')](_0x523ea8,_0x5b11e2)[_0x847c('0x13')](function(_0x473165){logger[_0x847c('0x14')](_0x847c('0x15'),_0x1c33a4,'request\x20sent');logger['debug'](_0x847c('0x16'),_0x1c33a4,'request\x20sent',JSON[_0x847c('0x17')](_0x473165));if(_0x473165['error']){if(_0x473165[_0x847c('0x18')][_0x847c('0x19')]===0x1f4){logger[_0x847c('0x18')]('OpenchannelQueue,\x20%s,\x20%s',_0x1c33a4,_0x473165[_0x847c('0x18')]['message']);return _0x433837(_0x473165['error'][_0x847c('0x1a')]);}logger[_0x847c('0x18')](_0x847c('0x15'),_0x1c33a4,_0x473165[_0x847c('0x18')][_0x847c('0x1a')]);return _0x46f433(_0x473165['error'][_0x847c('0x1a')]);}else{logger[_0x847c('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x1c33a4,_0x847c('0x1b'));_0x46f433(_0x473165[_0x847c('0x1c')]['message']);}})['catch'](function(_0x3581de){logger[_0x847c('0x18')](_0x847c('0x15'),_0x1c33a4,_0x3581de);_0x433837(_0x3581de);});});}exports[_0x847c('0x1d')]=function(_0x55c7c1){var _0x1a7774=this;return new Promise(function(_0x28810f,_0x27ff12){return db['OpenchannelQueue']['findAll']({'raw':_0x55c7c1[_0x847c('0x1e')]?_0x55c7c1[_0x847c('0x1e')][_0x847c('0x1f')]===undefined?!![]:![]:!![],'where':_0x55c7c1[_0x847c('0x1e')]?_0x55c7c1[_0x847c('0x1e')]['where']||null:null,'attributes':_0x55c7c1[_0x847c('0x1e')]?_0x55c7c1[_0x847c('0x1e')]['attributes']||null:null,'limit':_0x55c7c1[_0x847c('0x1e')]?_0x55c7c1[_0x847c('0x1e')][_0x847c('0x20')]||null:null,'include':_0x55c7c1[_0x847c('0x1e')]?_0x55c7c1[_0x847c('0x1e')]['include']?_[_0x847c('0x21')](_0x55c7c1[_0x847c('0x1e')]['include'],function(_0x5b3a6d){return{'model':db[_0x5b3a6d[_0x847c('0x22')]],'as':_0x5b3a6d['as'],'attributes':_0x5b3a6d[_0x847c('0x23')],'include':_0x5b3a6d['include']?_[_0x847c('0x21')](_0x5b3a6d[_0x847c('0x24')],function(_0x12eac4){return{'model':db[_0x12eac4[_0x847c('0x22')]],'as':_0x12eac4['as'],'attributes':_0x12eac4['attributes'],'include':_0x12eac4[_0x847c('0x24')]?_[_0x847c('0x21')](_0x12eac4[_0x847c('0x24')],function(_0x2d890b){return{'model':db[_0x2d890b[_0x847c('0x22')]],'as':_0x2d890b['as'],'attributes':_0x2d890b[_0x847c('0x23')]};}):[]};}):[]};}):[]:[]})[_0x847c('0x13')](function(_0x5635d5){logger['info'](_0x847c('0x1d'),_0x55c7c1);logger['debug'](_0x847c('0x1d'),_0x55c7c1,JSON[_0x847c('0x17')](_0x5635d5));_0x28810f(_0x5635d5);})[_0x847c('0x25')](function(_0x9832ab){logger[_0x847c('0x18')](_0x847c('0x1d'),_0x9832ab[_0x847c('0x1a')],_0x55c7c1);_0x27ff12(_0x1a7774['error'](0x1f4,_0x9832ab['message']));});});};exports['ShowOpenchannelQueue']=function(_0x12870c){var _0x3e4f6e=this;return new Promise(function(_0xa3dd5d,_0x3011aa){return db[_0x847c('0x26')]['find']({'raw':_0x12870c[_0x847c('0x1e')]?_0x12870c[_0x847c('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x12870c[_0x847c('0x1e')]?_0x12870c[_0x847c('0x1e')][_0x847c('0x27')]||null:null,'attributes':_0x12870c[_0x847c('0x1e')]?_0x12870c['options'][_0x847c('0x23')]||null:null,'include':_0x12870c[_0x847c('0x1e')]?_0x12870c[_0x847c('0x1e')][_0x847c('0x24')]?_[_0x847c('0x21')](_0x12870c[_0x847c('0x1e')]['include'],function(_0x4cf6ae){return{'model':db[_0x4cf6ae['model']],'as':_0x4cf6ae['as'],'attributes':_0x4cf6ae[_0x847c('0x23')],'include':_0x4cf6ae['include']?_[_0x847c('0x21')](_0x4cf6ae[_0x847c('0x24')],function(_0x3ef8cc){return{'model':db[_0x3ef8cc[_0x847c('0x22')]],'as':_0x3ef8cc['as'],'attributes':_0x3ef8cc[_0x847c('0x23')],'include':_0x3ef8cc[_0x847c('0x24')]?_[_0x847c('0x21')](_0x3ef8cc[_0x847c('0x24')],function(_0xc17d9e){return{'model':db[_0xc17d9e[_0x847c('0x22')]],'as':_0xc17d9e['as'],'attributes':_0xc17d9e[_0x847c('0x23')]};}):[]};}):[]};}):[]:[]})[_0x847c('0x13')](function(_0x5406a3){logger[_0x847c('0x14')](_0x847c('0x28'),_0x12870c);logger['debug'](_0x847c('0x28'),_0x12870c,JSON[_0x847c('0x17')](_0x5406a3));_0xa3dd5d(_0x5406a3);})[_0x847c('0x25')](function(_0x1f9784){logger[_0x847c('0x18')](_0x847c('0x28'),_0x1f9784['message'],_0x12870c);_0x3011aa(_0x3e4f6e[_0x847c('0x18')](0x1f4,_0x1f9784['message']));});});};
\ No newline at end of file
index 688ce9a..f2bf257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a2=['emit','removeListener','register','length','openchannelQueue:','save','update'];(function(_0x11bf1b,_0x50581b){var _0x387d1c=function(_0x54e22f){while(--_0x54e22f){_0x11bf1b['push'](_0x11bf1b['shift']());}};_0x387d1c(++_0x50581b);}(_0x29a2,0x18d));var _0x229a=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x29a2[_0x9cd4c3];return _0x4c9025;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0x229a('0x0'),'remove',_0x229a('0x1')];function createListener(_0x30cebd,_0x1dac43){return function(_0x3fa036){_0x1dac43[_0x229a('0x2')](_0x30cebd,_0x3fa036);};}function removeListener(_0xf8973,_0x56aa40){return function(){OpenchannelQueueEvents[_0x229a('0x3')](_0xf8973,_0x56aa40);};}exports[_0x229a('0x4')]=function(_0x1ab0f3){for(var _0x4113a4=0x0,_0x3c8e1a=events[_0x229a('0x5')];_0x4113a4<_0x3c8e1a;_0x4113a4++){var _0x56c9a7=events[_0x4113a4];var _0x535219=createListener(_0x229a('0x6')+_0x56c9a7,_0x1ab0f3);OpenchannelQueueEvents['on'](_0x56c9a7,_0x535219);}};
\ No newline at end of file
+var _0xbcf7=['emit','removeListener','register','length','./openchannelQueue.events','save','update'];(function(_0x42e626,_0x54b39d){var _0x5331d4=function(_0x58043f){while(--_0x58043f){_0x42e626['push'](_0x42e626['shift']());}};_0x5331d4(++_0x54b39d);}(_0xbcf7,0xc1));var _0x7bcf=function(_0x308cc1,_0x38bc17){_0x308cc1=_0x308cc1-0x0;var _0x9f0e15=_0xbcf7[_0x308cc1];return _0x9f0e15;};'use strict';var OpenchannelQueueEvents=require(_0x7bcf('0x0'));var events=[_0x7bcf('0x1'),'remove',_0x7bcf('0x2')];function createListener(_0x23d38a,_0x4409fe){return function(_0x3ba954){_0x4409fe[_0x7bcf('0x3')](_0x23d38a,_0x3ba954);};}function removeListener(_0x20c9f7,_0xc0ec77){return function(){OpenchannelQueueEvents[_0x7bcf('0x4')](_0x20c9f7,_0xc0ec77);};}exports[_0x7bcf('0x5')]=function(_0x12f594){for(var _0xf61b29=0x0,_0x4e2b06=events[_0x7bcf('0x6')];_0xf61b29<_0x4e2b06;_0xf61b29++){var _0x3d7b44=events[_0xf61b29];var _0x236edb=createListener('openchannelQueue:'+_0x3d7b44,_0x12f594);OpenchannelQueueEvents['on'](_0x3d7b44,_0x236edb);}};
\ No newline at end of file
index 1659908..80c168c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6796=['show','post','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','isAuthenticated','index','get','describe','/:id'];(function(_0x399650,_0x26685d){var _0x55621b=function(_0x19ec57){while(--_0x19ec57){_0x399650['push'](_0x399650['shift']());}};_0x55621b(++_0x26685d);}(_0x6796,0xcd));var _0x6679=function(_0x5c6994,_0x19ad9a){_0x5c6994=_0x5c6994-0x0;var _0x1d5c84=_0x6796[_0x5c6994];return _0x1d5c84;};'use strict';var multer=require(_0x6679('0x0'));var util=require(_0x6679('0x1'));var path=require(_0x6679('0x2'));var timeout=require('connect-timeout');var express=require(_0x6679('0x3'));var router=express[_0x6679('0x4')]();var fs_extra=require(_0x6679('0x5'));var auth=require(_0x6679('0x6'));var interaction=require(_0x6679('0x7'));var config=require(_0x6679('0x8'));var controller=require(_0x6679('0x9'));router['get']('/',auth[_0x6679('0xa')](),controller[_0x6679('0xb')]);router[_0x6679('0xc')]('/describe',auth[_0x6679('0xa')](),controller[_0x6679('0xd')]);router[_0x6679('0xc')](_0x6679('0xe'),auth['isAuthenticated'](),controller[_0x6679('0xf')]);router[_0x6679('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6679('0xe'),auth[_0x6679('0xa')](),controller[_0x6679('0x11')]);router[_0x6679('0x12')](_0x6679('0xe'),auth[_0x6679('0xa')](),controller['destroy']);module[_0x6679('0x13')]=router;
\ No newline at end of file
+var _0xe8cd=['get','isAuthenticated','describe','show','post','create','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueueReport.controller'];(function(_0x4619ef,_0x3f1a7d){var _0x234095=function(_0x491d62){while(--_0x491d62){_0x4619ef['push'](_0x4619ef['shift']());}};_0x234095(++_0x3f1a7d);}(_0xe8cd,0x14b));var _0xde8c=function(_0x53e3de,_0x13da7b){_0x53e3de=_0x53e3de-0x0;var _0x7b905b=_0xe8cd[_0x53e3de];return _0x7b905b;};'use strict';var multer=require(_0xde8c('0x0'));var util=require('util');var path=require(_0xde8c('0x1'));var timeout=require(_0xde8c('0x2'));var express=require(_0xde8c('0x3'));var router=express[_0xde8c('0x4')]();var fs_extra=require(_0xde8c('0x5'));var auth=require(_0xde8c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xde8c('0x7'));var controller=require(_0xde8c('0x8'));router[_0xde8c('0x9')]('/',auth[_0xde8c('0xa')](),controller['index']);router[_0xde8c('0x9')]('/describe',auth[_0xde8c('0xa')](),controller[_0xde8c('0xb')]);router['get']('/:id',auth[_0xde8c('0xa')](),controller[_0xde8c('0xc')]);router[_0xde8c('0xd')]('/',auth[_0xde8c('0xa')](),controller[_0xde8c('0xe')]);router['put'](_0xde8c('0xf'),auth['isAuthenticated'](),controller[_0xde8c('0x10')]);router[_0xde8c('0x11')](_0xde8c('0xf'),auth['isAuthenticated'](),controller[_0xde8c('0x12')]);module[_0xde8c('0x13')]=router;
\ No newline at end of file
index 1ffdf11..baf3b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7b4=['moment','STRING','DATE'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe7b4,0x105));var _0x4e7b=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0xe7b4[_0x4a3898];return _0x25ceb0;};'use strict';var moment=require(_0x4e7b('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x4e7b('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x4e7b('0x1')]},'joinAt':{'type':Sequelize[_0x4e7b('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x4e7b('0x2')]},'reason':{'type':Sequelize[_0x4e7b('0x1')]}};
\ No newline at end of file
+var _0x5f2b=['exports','STRING','DATE','moment','sequelize'];(function(_0x2b41a5,_0x4dd18a){var _0x5a0fed=function(_0x42d4dd){while(--_0x42d4dd){_0x2b41a5['push'](_0x2b41a5['shift']());}};_0x5a0fed(++_0x4dd18a);}(_0x5f2b,0x17a));var _0xb5f2=function(_0x4e700e,_0x5b0bad){_0x4e700e=_0x4e700e-0x0;var _0x599d58=_0x5f2b[_0x4e700e];return _0x599d58;};'use strict';var moment=require(_0xb5f2('0x0'));var Sequelize=require(_0xb5f2('0x1'));module[_0xb5f2('0x2')]={'uniqueid':{'type':Sequelize[_0xb5f2('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xb5f2('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xb5f2('0x4')]},'acceptAt':{'type':Sequelize[_0xb5f2('0x4')]},'exitAt':{'type':Sequelize[_0xb5f2('0x4')]},'reason':{'type':Sequelize[_0xb5f2('0x3')]}};
\ No newline at end of file
index efb57b3..ba2f76c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff79=['describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','where','filters','filter','type','merge','options','OpenchannelQueueReport','includeAll','include','rows','show','find','create','catch','update','body','params'];(function(_0x147a7c,_0x154ab7){var _0x47a7d4=function(_0x17f7dc){while(--_0x17f7dc){_0x147a7c['push'](_0x147a7c['shift']());}};_0x47a7d4(++_0x154ab7);}(_0xff79,0xd9));var _0x9ff7=function(_0x225707,_0x3e575d){_0x225707=_0x225707-0x0;var _0x4a74a5=_0xff79[_0x225707];return _0x4a74a5;};'use strict';var emlformat=require(_0x9ff7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9ff7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9ff7('0x2'));var moment=require(_0x9ff7('0x3'));var BPromise=require(_0x9ff7('0x4'));var Mustache=require(_0x9ff7('0x5'));var util=require('util');var path=require(_0x9ff7('0x6'));var sox=require('sox');var csv=require(_0x9ff7('0x7'));var ejs=require(_0x9ff7('0x8'));var fs=require('fs');var fs_extra=require(_0x9ff7('0x9'));var _=require(_0x9ff7('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9ff7('0xb'));var deskjs=require(_0x9ff7('0xc'));var toCsv=require(_0x9ff7('0x7'));var querystring=require(_0x9ff7('0xd'));var Papa=require(_0x9ff7('0xe'));var Redis=require(_0x9ff7('0xf'));var authService=require(_0x9ff7('0x10'));var qs=require(_0x9ff7('0x11'));var as=require(_0x9ff7('0x12'));var hardwareService=require(_0x9ff7('0x13'));var logger=require(_0x9ff7('0x14'))(_0x9ff7('0x15'));var utils=require(_0x9ff7('0x16'));var config=require(_0x9ff7('0x17'));var licenseUtil=require(_0x9ff7('0x18'));var db=require(_0x9ff7('0x19'))['db'];function respondWithStatusCode(_0x3eb315,_0x35bc44){_0x35bc44=_0x35bc44||0xcc;return function(_0x13af36){if(_0x13af36){return _0x3eb315[_0x9ff7('0x1a')](_0x35bc44);}return _0x3eb315[_0x9ff7('0x1b')](_0x35bc44)['end']();};}function respondWithResult(_0x56e227,_0x9bbd2d){_0x9bbd2d=_0x9bbd2d||0xc8;return function(_0xb01971){if(_0xb01971){return _0x56e227[_0x9ff7('0x1b')](_0x9bbd2d)[_0x9ff7('0x1c')](_0xb01971);}};}function respondWithFilteredResult(_0x42a15c,_0x57b49a){return function(_0x5e94fd){if(_0x5e94fd){var _0x436ab1=typeof _0x57b49a[_0x9ff7('0x1d')]===_0x9ff7('0x1e')&&typeof _0x57b49a[_0x9ff7('0x1f')]===_0x9ff7('0x1e');var _0x4850f2=_0x5e94fd[_0x9ff7('0x20')];var _0x24dc5e=_0x436ab1?0x0:_0x57b49a[_0x9ff7('0x1d')];var _0x2b7708=_0x436ab1?_0x5e94fd[_0x9ff7('0x20')]:_0x57b49a[_0x9ff7('0x1d')]+_0x57b49a[_0x9ff7('0x1f')];var _0x5d906c;if(_0x2b7708>=_0x4850f2){_0x2b7708=_0x4850f2;_0x5d906c=0xc8;}else{_0x5d906c=0xce;}_0x42a15c[_0x9ff7('0x1b')](_0x5d906c);return _0x42a15c['set'](_0x9ff7('0x21'),_0x24dc5e+'-'+_0x2b7708+'/'+_0x4850f2)[_0x9ff7('0x1c')](_0x5e94fd);}return null;};}function patchUpdates(_0x1f7956){return function(_0x2e02bf){try{jsonpatch['apply'](_0x2e02bf,_0x1f7956,!![]);}catch(_0x2c445e){return BPromise[_0x9ff7('0x22')](_0x2c445e);}return _0x2e02bf[_0x9ff7('0x23')]();};}function saveUpdates(_0xe83e5d,_0x1849bf){return function(_0x3c87be){if(_0x3c87be){return _0x3c87be['update'](_0xe83e5d)[_0x9ff7('0x24')](function(_0x4bb53d){return _0x4bb53d;});}return null;};}function removeEntity(_0x5c4f98,_0x4fe131){return function(_0xcbb99d){if(_0xcbb99d){return _0xcbb99d[_0x9ff7('0x25')]()['then'](function(){_0x5c4f98[_0x9ff7('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7f0c2b,_0x416068){return function(_0x2d5441){if(!_0x2d5441){_0x7f0c2b[_0x9ff7('0x1a')](0x194);}return _0x2d5441;};}function handleError(_0x1c9233,_0x328b9a){_0x328b9a=_0x328b9a||0x1f4;return function(_0x13e1fb){logger['error'](_0x13e1fb[_0x9ff7('0x26')]);if(_0x13e1fb[_0x9ff7('0x27')]){delete _0x13e1fb[_0x9ff7('0x27')];}_0x1c9233[_0x9ff7('0x1b')](_0x328b9a)[_0x9ff7('0x28')](_0x13e1fb);};}exports[_0x9ff7('0x29')]=function(_0x3c5fb6,_0x306160){var _0x308faf={},_0x347ac6={},_0xf54d30={'count':0x0,'rows':[]};var _0x9dd780=_[_0x9ff7('0x2a')](db['OpenchannelQueueReport'][_0x9ff7('0x2b')],function(_0x470968){return{'name':_0x470968[_0x9ff7('0x2c')],'type':_0x470968['type'][_0x9ff7('0x2d')]};});_0x347ac6[_0x9ff7('0x2e')]=_[_0x9ff7('0x2a')](_0x9dd780,_0x9ff7('0x27'));_0x347ac6[_0x9ff7('0x2f')]=_[_0x9ff7('0x30')](_0x3c5fb6[_0x9ff7('0x2f')]);_0x347ac6['filters']=_[_0x9ff7('0x31')](_0x347ac6[_0x9ff7('0x2e')],_0x347ac6['query']);_0x308faf[_0x9ff7('0x32')]=_[_0x9ff7('0x31')](_0x347ac6[_0x9ff7('0x2e')],qs[_0x9ff7('0x33')](_0x3c5fb6['query']['fields']));_0x308faf[_0x9ff7('0x32')]=_0x308faf['attributes'][_0x9ff7('0x34')]?_0x308faf[_0x9ff7('0x32')]:_0x347ac6['model'];if(!_0x3c5fb6[_0x9ff7('0x2f')][_0x9ff7('0x35')]('nolimit')){_0x308faf['limit']=qs['limit'](_0x3c5fb6[_0x9ff7('0x2f')][_0x9ff7('0x1f')]);_0x308faf[_0x9ff7('0x1d')]=qs[_0x9ff7('0x1d')](_0x3c5fb6[_0x9ff7('0x2f')]['offset']);}_0x308faf['order']=qs['sort'](_0x3c5fb6[_0x9ff7('0x2f')]['sort']);_0x308faf[_0x9ff7('0x36')]=qs[_0x9ff7('0x37')](_['pick'](_0x3c5fb6[_0x9ff7('0x2f')],_0x347ac6[_0x9ff7('0x37')]),_0x9dd780);if(_0x3c5fb6[_0x9ff7('0x2f')][_0x9ff7('0x38')]){_0x308faf[_0x9ff7('0x36')]=_['merge'](_0x308faf[_0x9ff7('0x36')],{'$or':_[_0x9ff7('0x2a')](_0x9dd780,function(_0x5e7c69){if(_0x5e7c69[_0x9ff7('0x39')]!=='VIRTUAL'){var _0x40fa40={};_0x40fa40[_0x5e7c69['name']]={'$like':'%'+_0x3c5fb6['query'][_0x9ff7('0x38')]+'%'};return _0x40fa40;}})});}_0x308faf=_[_0x9ff7('0x3a')]({},_0x308faf,_0x3c5fb6[_0x9ff7('0x3b')]);var _0x537159={'where':_0x308faf[_0x9ff7('0x36')]};return db[_0x9ff7('0x3c')][_0x9ff7('0x20')](_0x537159)['then'](function(_0x14e435){_0xf54d30[_0x9ff7('0x20')]=_0x14e435;if(_0x3c5fb6[_0x9ff7('0x2f')][_0x9ff7('0x3d')]){_0x308faf[_0x9ff7('0x3e')]=[{'all':!![]}];}return db[_0x9ff7('0x3c')]['findAll'](_0x308faf);})['then'](function(_0x13347f){_0xf54d30[_0x9ff7('0x3f')]=_0x13347f;return _0xf54d30;})[_0x9ff7('0x24')](respondWithFilteredResult(_0x306160,_0x308faf))['catch'](handleError(_0x306160,null));};exports[_0x9ff7('0x40')]=function(_0x10948a,_0x5a5ed6){var _0x38cdf7={'raw':!![],'where':{'id':_0x10948a['params']['id']}},_0x474efe={};_0x474efe[_0x9ff7('0x2e')]=_['keys'](db['OpenchannelQueueReport']['rawAttributes']);_0x474efe[_0x9ff7('0x2f')]=_[_0x9ff7('0x30')](_0x10948a['query']);_0x474efe['filters']=_[_0x9ff7('0x31')](_0x474efe[_0x9ff7('0x2e')],_0x474efe['query']);_0x38cdf7[_0x9ff7('0x32')]=_[_0x9ff7('0x31')](_0x474efe[_0x9ff7('0x2e')],qs['fields'](_0x10948a[_0x9ff7('0x2f')][_0x9ff7('0x33')]));_0x38cdf7['attributes']=_0x38cdf7[_0x9ff7('0x32')]['length']?_0x38cdf7[_0x9ff7('0x32')]:_0x474efe[_0x9ff7('0x2e')];if(_0x10948a[_0x9ff7('0x2f')][_0x9ff7('0x3d')]){_0x38cdf7[_0x9ff7('0x3e')]=[{'all':!![]}];}_0x38cdf7=_[_0x9ff7('0x3a')]({},_0x38cdf7,_0x10948a[_0x9ff7('0x3b')]);return db[_0x9ff7('0x3c')][_0x9ff7('0x41')](_0x38cdf7)[_0x9ff7('0x24')](handleEntityNotFound(_0x5a5ed6,null))[_0x9ff7('0x24')](respondWithResult(_0x5a5ed6,null))['catch'](handleError(_0x5a5ed6,null));};exports[_0x9ff7('0x42')]=function(_0x2e2103,_0x192fa3){return db[_0x9ff7('0x3c')][_0x9ff7('0x42')](_0x2e2103['body'],{})['then'](respondWithResult(_0x192fa3,0xc9))[_0x9ff7('0x43')](handleError(_0x192fa3,null));};exports[_0x9ff7('0x44')]=function(_0xa49c80,_0x1eba14){if(_0xa49c80['body']['id']){delete _0xa49c80[_0x9ff7('0x45')]['id'];}return db[_0x9ff7('0x3c')][_0x9ff7('0x41')]({'where':{'id':_0xa49c80['params']['id']}})['then'](handleEntityNotFound(_0x1eba14,null))[_0x9ff7('0x24')](saveUpdates(_0xa49c80[_0x9ff7('0x45')],null))[_0x9ff7('0x24')](respondWithResult(_0x1eba14,null))[_0x9ff7('0x43')](handleError(_0x1eba14,null));};exports[_0x9ff7('0x25')]=function(_0x3509dd,_0x36f5b5){return db[_0x9ff7('0x3c')][_0x9ff7('0x41')]({'where':{'id':_0x3509dd[_0x9ff7('0x46')]['id']}})[_0x9ff7('0x24')](handleEntityNotFound(_0x36f5b5,null))[_0x9ff7('0x24')](removeEntity(_0x36f5b5,null))[_0x9ff7('0x43')](handleError(_0x36f5b5,null));};exports[_0x9ff7('0x47')]=function(_0x2e33e3,_0x349a45){return db[_0x9ff7('0x3c')]['describe']()['then'](respondWithResult(_0x349a45,null))[_0x9ff7('0x43')](handleError(_0x349a45,null));};
\ No newline at end of file
+var _0x3581=['filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','util','to-csv','ejs','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','sendStatus','error','name','send','index','OpenchannelQueueReport','rawAttributes','fieldName','key','map','keys','query','filters','intersection','model','attributes','length','nolimit','order','sort','where','pick'];(function(_0x528372,_0x1bc4c8){var _0x2e2c58=function(_0x188584){while(--_0x188584){_0x528372['push'](_0x528372['shift']());}};_0x2e2c58(++_0x1bc4c8);}(_0x3581,0x1af));var _0x1358=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3581[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x1358('0x0'));var rimraf=require(_0x1358('0x1'));var zipdir=require(_0x1358('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1358('0x3'));var moment=require('moment');var BPromise=require(_0x1358('0x4'));var Mustache=require('mustache');var util=require(_0x1358('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x1358('0x6'));var ejs=require(_0x1358('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1358('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1358('0x9'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1358('0xa'));var Redis=require(_0x1358('0xb'));var authService=require(_0x1358('0xc'));var qs=require(_0x1358('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1358('0xe'));var utils=require(_0x1358('0xf'));var config=require(_0x1358('0x10'));var licenseUtil=require('../../config/license/util');var db=require(_0x1358('0x11'))['db'];function respondWithStatusCode(_0x5ed37e,_0x38ba72){_0x38ba72=_0x38ba72||0xcc;return function(_0x401977){if(_0x401977){return _0x5ed37e['sendStatus'](_0x38ba72);}return _0x5ed37e[_0x1358('0x12')](_0x38ba72)[_0x1358('0x13')]();};}function respondWithResult(_0x33b647,_0x10a61b){_0x10a61b=_0x10a61b||0xc8;return function(_0x59e232){if(_0x59e232){return _0x33b647[_0x1358('0x12')](_0x10a61b)['json'](_0x59e232);}};}function respondWithFilteredResult(_0x8d689c,_0xb45f04){return function(_0x25558a){if(_0x25558a){var _0x44e8c1=typeof _0xb45f04['offset']===_0x1358('0x14')&&typeof _0xb45f04[_0x1358('0x15')]==='undefined';var _0xe7ff81=_0x25558a[_0x1358('0x16')];var _0x2189af=_0x44e8c1?0x0:_0xb45f04[_0x1358('0x17')];var _0x244e70=_0x44e8c1?_0x25558a['count']:_0xb45f04[_0x1358('0x17')]+_0xb45f04[_0x1358('0x15')];var _0x35792c;if(_0x244e70>=_0xe7ff81){_0x244e70=_0xe7ff81;_0x35792c=0xc8;}else{_0x35792c=0xce;}_0x8d689c[_0x1358('0x12')](_0x35792c);return _0x8d689c[_0x1358('0x18')](_0x1358('0x19'),_0x2189af+'-'+_0x244e70+'/'+_0xe7ff81)['json'](_0x25558a);}return null;};}function patchUpdates(_0x318212){return function(_0x46be07){try{jsonpatch[_0x1358('0x1a')](_0x46be07,_0x318212,!![]);}catch(_0x1cc07b){return BPromise[_0x1358('0x1b')](_0x1cc07b);}return _0x46be07['save']();};}function saveUpdates(_0x3bb24f,_0x3f268d){return function(_0x443e9d){if(_0x443e9d){return _0x443e9d[_0x1358('0x1c')](_0x3bb24f)[_0x1358('0x1d')](function(_0x36d654){return _0x36d654;});}return null;};}function removeEntity(_0x58f266,_0x3a3779){return function(_0x155af6){if(_0x155af6){return _0x155af6['destroy']()[_0x1358('0x1d')](function(){_0x58f266[_0x1358('0x12')](0xcc)[_0x1358('0x13')]();});}};}function handleEntityNotFound(_0x54a64d,_0x1dabd9){return function(_0x362177){if(!_0x362177){_0x54a64d[_0x1358('0x1e')](0x194);}return _0x362177;};}function handleError(_0x34e9f7,_0x2f1b64){_0x2f1b64=_0x2f1b64||0x1f4;return function(_0x55997e){logger[_0x1358('0x1f')](_0x55997e['stack']);if(_0x55997e[_0x1358('0x20')]){delete _0x55997e[_0x1358('0x20')];}_0x34e9f7[_0x1358('0x12')](_0x2f1b64)[_0x1358('0x21')](_0x55997e);};}exports[_0x1358('0x22')]=function(_0x25164e,_0x165918){var _0x7e2b5f={},_0x580be4={},_0x43254f={'count':0x0,'rows':[]};var _0x1666ec=_['map'](db[_0x1358('0x23')][_0x1358('0x24')],function(_0x4220cb){return{'name':_0x4220cb[_0x1358('0x25')],'type':_0x4220cb['type'][_0x1358('0x26')]};});_0x580be4['model']=_[_0x1358('0x27')](_0x1666ec,_0x1358('0x20'));_0x580be4['query']=_[_0x1358('0x28')](_0x25164e[_0x1358('0x29')]);_0x580be4[_0x1358('0x2a')]=_[_0x1358('0x2b')](_0x580be4[_0x1358('0x2c')],_0x580be4['query']);_0x7e2b5f[_0x1358('0x2d')]=_[_0x1358('0x2b')](_0x580be4[_0x1358('0x2c')],qs['fields'](_0x25164e['query']['fields']));_0x7e2b5f[_0x1358('0x2d')]=_0x7e2b5f[_0x1358('0x2d')][_0x1358('0x2e')]?_0x7e2b5f[_0x1358('0x2d')]:_0x580be4[_0x1358('0x2c')];if(!_0x25164e[_0x1358('0x29')]['hasOwnProperty'](_0x1358('0x2f'))){_0x7e2b5f['limit']=qs['limit'](_0x25164e[_0x1358('0x29')][_0x1358('0x15')]);_0x7e2b5f['offset']=qs[_0x1358('0x17')](_0x25164e[_0x1358('0x29')][_0x1358('0x17')]);}_0x7e2b5f[_0x1358('0x30')]=qs['sort'](_0x25164e['query'][_0x1358('0x31')]);_0x7e2b5f[_0x1358('0x32')]=qs[_0x1358('0x2a')](_[_0x1358('0x33')](_0x25164e['query'],_0x580be4['filters']),_0x1666ec);if(_0x25164e['query'][_0x1358('0x34')]){_0x7e2b5f['where']=_[_0x1358('0x35')](_0x7e2b5f[_0x1358('0x32')],{'$or':_[_0x1358('0x27')](_0x1666ec,function(_0x31dc04){if(_0x31dc04[_0x1358('0x36')]!==_0x1358('0x37')){var _0x45cb7a={};_0x45cb7a[_0x31dc04[_0x1358('0x20')]]={'$like':'%'+_0x25164e['query']['filter']+'%'};return _0x45cb7a;}})});}_0x7e2b5f=_['merge']({},_0x7e2b5f,_0x25164e[_0x1358('0x38')]);var _0x4a5d0c={'where':_0x7e2b5f[_0x1358('0x32')]};return db['OpenchannelQueueReport'][_0x1358('0x16')](_0x4a5d0c)['then'](function(_0x147ebf){_0x43254f[_0x1358('0x16')]=_0x147ebf;if(_0x25164e['query'][_0x1358('0x39')]){_0x7e2b5f[_0x1358('0x3a')]=[{'all':!![]}];}return db[_0x1358('0x23')]['findAll'](_0x7e2b5f);})[_0x1358('0x1d')](function(_0xe619df){_0x43254f[_0x1358('0x3b')]=_0xe619df;return _0x43254f;})[_0x1358('0x1d')](respondWithFilteredResult(_0x165918,_0x7e2b5f))[_0x1358('0x3c')](handleError(_0x165918,null));};exports[_0x1358('0x3d')]=function(_0x3da8c7,_0x342c4b){var _0x4fd465={'raw':!![],'where':{'id':_0x3da8c7[_0x1358('0x3e')]['id']}},_0x566b44={};_0x566b44[_0x1358('0x2c')]=_[_0x1358('0x28')](db[_0x1358('0x23')][_0x1358('0x24')]);_0x566b44[_0x1358('0x29')]=_[_0x1358('0x28')](_0x3da8c7[_0x1358('0x29')]);_0x566b44['filters']=_[_0x1358('0x2b')](_0x566b44['model'],_0x566b44[_0x1358('0x29')]);_0x4fd465[_0x1358('0x2d')]=_[_0x1358('0x2b')](_0x566b44[_0x1358('0x2c')],qs[_0x1358('0x3f')](_0x3da8c7['query']['fields']));_0x4fd465[_0x1358('0x2d')]=_0x4fd465[_0x1358('0x2d')][_0x1358('0x2e')]?_0x4fd465[_0x1358('0x2d')]:_0x566b44[_0x1358('0x2c')];if(_0x3da8c7['query'][_0x1358('0x39')]){_0x4fd465['include']=[{'all':!![]}];}_0x4fd465=_[_0x1358('0x35')]({},_0x4fd465,_0x3da8c7[_0x1358('0x38')]);return db[_0x1358('0x23')][_0x1358('0x40')](_0x4fd465)[_0x1358('0x1d')](handleEntityNotFound(_0x342c4b,null))['then'](respondWithResult(_0x342c4b,null))[_0x1358('0x3c')](handleError(_0x342c4b,null));};exports[_0x1358('0x41')]=function(_0x1fcd35,_0x40ccdb){return db[_0x1358('0x23')][_0x1358('0x41')](_0x1fcd35[_0x1358('0x42')],{})[_0x1358('0x1d')](respondWithResult(_0x40ccdb,0xc9))[_0x1358('0x3c')](handleError(_0x40ccdb,null));};exports[_0x1358('0x1c')]=function(_0x2e98ca,_0x3ce8a8){if(_0x2e98ca[_0x1358('0x42')]['id']){delete _0x2e98ca['body']['id'];}return db[_0x1358('0x23')][_0x1358('0x40')]({'where':{'id':_0x2e98ca[_0x1358('0x3e')]['id']}})[_0x1358('0x1d')](handleEntityNotFound(_0x3ce8a8,null))[_0x1358('0x1d')](saveUpdates(_0x2e98ca[_0x1358('0x42')],null))[_0x1358('0x1d')](respondWithResult(_0x3ce8a8,null))[_0x1358('0x3c')](handleError(_0x3ce8a8,null));};exports[_0x1358('0x43')]=function(_0xb20608,_0x466882){return db[_0x1358('0x23')][_0x1358('0x40')]({'where':{'id':_0xb20608[_0x1358('0x3e')]['id']}})['then'](handleEntityNotFound(_0x466882,null))[_0x1358('0x1d')](removeEntity(_0x466882,null))[_0x1358('0x3c')](handleError(_0x466882,null));};exports[_0x1358('0x44')]=function(_0x39bab3,_0x5c970e){return db[_0x1358('0x23')]['describe']()[_0x1358('0x1d')](respondWithResult(_0x5c970e,null))['catch'](handleError(_0x5c970e,null));};
\ No newline at end of file
index 8a1630f..b8cf537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueueReport.attributes','exports','define','report_openchannel_queue','uniqueid','lodash'];(function(_0x3d2602,_0x13de25){var _0x209863=function(_0x2cb3e5){while(--_0x2cb3e5){_0x3d2602['push'](_0x3d2602['shift']());}};_0x209863(++_0x13de25);}(_0x5fc3,0xa8));var _0x35fc=function(_0x31b5b2,_0x5ab927){_0x31b5b2=_0x31b5b2-0x0;var _0x364f13=_0x5fc3[_0x31b5b2];return _0x364f13;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x814b,0x1a2));var _0xb814=function(_0x34ecea,_0x3d11ce){_0x34ecea=_0x34ecea-0x0;var _0x44b6a8=_0x814b[_0x34ecea];return _0x44b6a8;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 2b4a18e..121e9c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3495=['attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','stringify','UpdateOpenchannelQueueReport','update','where'];(function(_0x421e36,_0x18776e){var _0x20b3e3=function(_0x767de4){while(--_0x767de4){_0x421e36['push'](_0x421e36['shift']());}};_0x20b3e3(++_0x18776e);}(_0x3495,0x1de));var _0x5349=function(_0x296003,_0x498ace){_0x296003=_0x296003-0x0;var _0x16cf65=_0x3495[_0x296003];return _0x16cf65;};'use strict';var _=require(_0x5349('0x0'));var util=require(_0x5349('0x1'));var moment=require(_0x5349('0x2'));var BPromise=require(_0x5349('0x3'));var rs=require(_0x5349('0x4'));var fs=require('fs');var Redis=require(_0x5349('0x5'));var db=require(_0x5349('0x6'))['db'];var utils=require(_0x5349('0x7'));var logger=require(_0x5349('0x8'))('rpc');var config=require(_0x5349('0x9'));var jayson=require(_0x5349('0xa'));var client=jayson['client'][_0x5349('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x538385,_0x6fb5dc,_0x529323){return new BPromise(function(_0x393873,_0x583cee){return client[_0x5349('0xc')](_0x538385,_0x529323)[_0x5349('0xd')](function(_0x22a3d3){logger[_0x5349('0xe')](_0x5349('0xf'),_0x6fb5dc,_0x5349('0x10'));logger[_0x5349('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x6fb5dc,_0x5349('0x10'),JSON['stringify'](_0x22a3d3));if(_0x22a3d3[_0x5349('0x12')]){if(_0x22a3d3[_0x5349('0x12')][_0x5349('0x13')]===0x1f4){logger[_0x5349('0x12')](_0x5349('0xf'),_0x6fb5dc,_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);return _0x583cee(_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);}logger[_0x5349('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x6fb5dc,_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);return _0x393873(_0x22a3d3['error'][_0x5349('0x14')]);}else{logger[_0x5349('0xe')](_0x5349('0xf'),_0x6fb5dc,'request\x20sent');_0x393873(_0x22a3d3['result']['message']);}})[_0x5349('0x15')](function(_0x5c873d){logger[_0x5349('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x6fb5dc,_0x5c873d);_0x583cee(_0x5c873d);});});}exports[_0x5349('0x16')]=function(_0x2c1f1){var _0x1f5747=this;return new Promise(function(_0x132639,_0x4e128c){return db[_0x5349('0x17')][_0x5349('0x18')](_0x2c1f1[_0x5349('0x19')],{'raw':_0x2c1f1[_0x5349('0x1a')]?_0x2c1f1['options'][_0x5349('0x1b')]===undefined?!![]:![]:!![]})[_0x5349('0xd')](function(_0x4f2cb6){logger['info']('CreateOpenchannelQueueReport',_0x2c1f1);logger[_0x5349('0x11')]('CreateOpenchannelQueueReport',_0x2c1f1,JSON[_0x5349('0x1c')](_0x4f2cb6));_0x132639(_0x4f2cb6);})[_0x5349('0x15')](function(_0x164978){logger[_0x5349('0x12')](_0x5349('0x16'),_0x164978[_0x5349('0x14')],_0x2c1f1);_0x4e128c(_0x1f5747[_0x5349('0x12')](0x1f4,_0x164978[_0x5349('0x14')]));});});};exports[_0x5349('0x1d')]=function(_0x34353f){var _0x1a84ce=this;return new Promise(function(_0x52520,_0x57af6c){return db[_0x5349('0x17')][_0x5349('0x1e')](_0x34353f[_0x5349('0x19')],{'raw':_0x34353f['options']?_0x34353f[_0x5349('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34353f[_0x5349('0x1a')]?_0x34353f[_0x5349('0x1a')][_0x5349('0x1f')]||null:null,'attributes':_0x34353f['options']?_0x34353f[_0x5349('0x1a')][_0x5349('0x20')]||null:null,'limit':_0x34353f[_0x5349('0x1a')]?_0x34353f[_0x5349('0x1a')][_0x5349('0x21')]||null:null})[_0x5349('0xd')](function(_0x3b6faa){logger[_0x5349('0xe')](_0x5349('0x1d'),_0x34353f);logger['debug'](_0x5349('0x1d'),_0x34353f,JSON[_0x5349('0x1c')](_0x3b6faa));_0x52520(_0x3b6faa);})['catch'](function(_0x3cad49){logger['error'](_0x5349('0x1d'),_0x3cad49[_0x5349('0x14')],_0x34353f);_0x57af6c(_0x1a84ce[_0x5349('0x12')](0x1f4,_0x3cad49[_0x5349('0x14')]));});});};
\ No newline at end of file
+var _0x19e1=['where','attributes','limit','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelQueueReport,\x20%s,\x20%s','message','info','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','update'];(function(_0x5c2613,_0x1c5b68){var _0x3bb218=function(_0x416ba7){while(--_0x416ba7){_0x5c2613['push'](_0x5c2613['shift']());}};_0x3bb218(++_0x1c5b68);}(_0x19e1,0x163));var _0x119e=function(_0x52a857,_0xc99fa1){_0x52a857=_0x52a857-0x0;var _0x4e2aae=_0x19e1[_0x52a857];return _0x4e2aae;};'use strict';var _=require(_0x119e('0x0'));var util=require(_0x119e('0x1'));var moment=require(_0x119e('0x2'));var BPromise=require(_0x119e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x119e('0x4'))['db'];var utils=require(_0x119e('0x5'));var logger=require('../../config/logger')(_0x119e('0x6'));var config=require(_0x119e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x119e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b5306,_0x25e166,_0x16a2ee){return new BPromise(function(_0x1b3797,_0x53d5b7){return client[_0x119e('0x9')](_0x1b5306,_0x16a2ee)[_0x119e('0xa')](function(_0x1a6747){logger['info']('OpenchannelQueueReport,\x20%s,\x20%s',_0x25e166,_0x119e('0xb'));logger[_0x119e('0xc')](_0x119e('0xd'),_0x25e166,_0x119e('0xb'),JSON[_0x119e('0xe')](_0x1a6747));if(_0x1a6747[_0x119e('0xf')]){if(_0x1a6747[_0x119e('0xf')]['code']===0x1f4){logger[_0x119e('0xf')](_0x119e('0x10'),_0x25e166,_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);return _0x53d5b7(_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);}logger['error'](_0x119e('0x10'),_0x25e166,_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);return _0x1b3797(_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);}else{logger[_0x119e('0x12')](_0x119e('0x10'),_0x25e166,_0x119e('0xb'));_0x1b3797(_0x1a6747[_0x119e('0x13')][_0x119e('0x11')]);}})[_0x119e('0x14')](function(_0x54c326){logger[_0x119e('0xf')](_0x119e('0x10'),_0x25e166,_0x54c326);_0x53d5b7(_0x54c326);});});}exports[_0x119e('0x15')]=function(_0xb3375c){var _0x348ae3=this;return new Promise(function(_0xedc945,_0x2848fa){return db[_0x119e('0x16')][_0x119e('0x17')](_0xb3375c[_0x119e('0x18')],{'raw':_0xb3375c[_0x119e('0x19')]?_0xb3375c['options'][_0x119e('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0xd4c2d5){logger['info'](_0x119e('0x15'),_0xb3375c);logger[_0x119e('0xc')]('CreateOpenchannelQueueReport',_0xb3375c,JSON['stringify'](_0xd4c2d5));_0xedc945(_0xd4c2d5);})[_0x119e('0x14')](function(_0x29de19){logger[_0x119e('0xf')]('CreateOpenchannelQueueReport',_0x29de19['message'],_0xb3375c);_0x2848fa(_0x348ae3[_0x119e('0xf')](0x1f4,_0x29de19['message']));});});};exports[_0x119e('0x1b')]=function(_0x21fb19){var _0x198f7b=this;return new Promise(function(_0x596dfb,_0x1e4c98){return db['OpenchannelQueueReport'][_0x119e('0x1c')](_0x21fb19['body'],{'raw':_0x21fb19['options']?_0x21fb19[_0x119e('0x19')][_0x119e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21fb19[_0x119e('0x19')]?_0x21fb19[_0x119e('0x19')][_0x119e('0x1d')]||null:null,'attributes':_0x21fb19[_0x119e('0x19')]?_0x21fb19['options'][_0x119e('0x1e')]||null:null,'limit':_0x21fb19[_0x119e('0x19')]?_0x21fb19['options'][_0x119e('0x1f')]||null:null})[_0x119e('0xa')](function(_0x49b965){logger[_0x119e('0x12')]('UpdateOpenchannelQueueReport',_0x21fb19);logger[_0x119e('0xc')](_0x119e('0x1b'),_0x21fb19,JSON[_0x119e('0xe')](_0x49b965));_0x596dfb(_0x49b965);})[_0x119e('0x14')](function(_0x3df7e9){logger['error'](_0x119e('0x1b'),_0x3df7e9[_0x119e('0x11')],_0x21fb19);_0x1e4c98(_0x198f7b[_0x119e('0xf')](0x1f4,_0x3df7e9[_0x119e('0x11')]));});});};
\ No newline at end of file
index ab18df9..8371f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef78=['../../config/environment','./openchannelTransferReport.controller','index','/describe','isAuthenticated','get','/:id','show','post','create','put','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xef78,0xe9));var _0x8ef7=function(_0x1874cf,_0x1adb47){_0x1874cf=_0x1874cf-0x0;var _0x41679a=_0xef78[_0x1874cf];return _0x41679a;};'use strict';var multer=require(_0x8ef7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8ef7('0x1'));var express=require(_0x8ef7('0x2'));var router=express[_0x8ef7('0x3')]();var fs_extra=require(_0x8ef7('0x4'));var auth=require(_0x8ef7('0x5'));var interaction=require(_0x8ef7('0x6'));var config=require(_0x8ef7('0x7'));var controller=require(_0x8ef7('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x8ef7('0x9')]);router['get'](_0x8ef7('0xa'),auth[_0x8ef7('0xb')](),controller['describe']);router[_0x8ef7('0xc')](_0x8ef7('0xd'),auth[_0x8ef7('0xb')](),controller[_0x8ef7('0xe')]);router[_0x8ef7('0xf')]('/',auth[_0x8ef7('0xb')](),controller[_0x8ef7('0x10')]);router[_0x8ef7('0x11')]('/:id',auth[_0x8ef7('0xb')](),controller['update']);router[_0x8ef7('0x12')](_0x8ef7('0xd'),auth[_0x8ef7('0xb')](),controller[_0x8ef7('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xaeb3=['create','put','update','destroy','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','get','/describe','describe','/:id'];(function(_0x1ae238,_0x2cb50f){var _0x55a511=function(_0x28a7e9){while(--_0x28a7e9){_0x1ae238['push'](_0x1ae238['shift']());}};_0x55a511(++_0x2cb50f);}(_0xaeb3,0x83));var _0x3aeb=function(_0x36ca7f,_0x337025){_0x36ca7f=_0x36ca7f-0x0;var _0x1dedcd=_0xaeb3[_0x36ca7f];return _0x1dedcd;};'use strict';var multer=require(_0x3aeb('0x0'));var util=require(_0x3aeb('0x1'));var path=require(_0x3aeb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3aeb('0x3')]();var fs_extra=require(_0x3aeb('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3aeb('0x5'));var config=require(_0x3aeb('0x6'));var controller=require(_0x3aeb('0x7'));router['get']('/',auth[_0x3aeb('0x8')](),controller['index']);router[_0x3aeb('0x9')](_0x3aeb('0xa'),auth[_0x3aeb('0x8')](),controller[_0x3aeb('0xb')]);router['get'](_0x3aeb('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x3aeb('0x8')](),controller[_0x3aeb('0xd')]);router[_0x3aeb('0xe')](_0x3aeb('0xc'),auth[_0x3aeb('0x8')](),controller[_0x3aeb('0xf')]);router['delete']('/:id',auth[_0x3aeb('0x8')](),controller[_0x3aeb('0x10')]);module[_0x3aeb('0x11')]=router;
\ No newline at end of file
index 231036f..7d7ba45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x3f0d2a,_0x538eef){var _0x9800bc=function(_0x41683a){while(--_0x41683a){_0x3f0d2a['push'](_0x3f0d2a['shift']());}};_0x9800bc(++_0x538eef);}(_0xaa88,0x137));var _0x8aa8=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0xaa88[_0x513aa5];return _0x1a1a7c;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x3cf4d3,_0x48065e){var _0x4e547b=function(_0x28f85a){while(--_0x28f85a){_0x3cf4d3['push'](_0x3cf4d3['shift']());}};_0x4e547b(++_0x48065e);}(_0x9bde,0xe1));var _0xe9bd=function(_0xca971d,_0x36bcf8){_0xca971d=_0xca971d-0x0;var _0x574add=_0x9bde[_0xca971d];return _0x574add;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index 5465355..75e918e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80e2=['params','includeAll','find','create','body','destroy','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','OpenchannelTransferReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','findAll','rows','catch','show'];(function(_0x376dd5,_0x2d6108){var _0x160239=function(_0x15992a){while(--_0x15992a){_0x376dd5['push'](_0x376dd5['shift']());}};_0x160239(++_0x2d6108);}(_0x80e2,0x137));var _0x280e=function(_0x1c5950,_0x49e128){_0x1c5950=_0x1c5950-0x0;var _0x2b720a=_0x80e2[_0x1c5950];return _0x2b720a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x280e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x280e('0x1'));var rp=require(_0x280e('0x2'));var moment=require('moment');var BPromise=require(_0x280e('0x3'));var Mustache=require(_0x280e('0x4'));var util=require(_0x280e('0x5'));var path=require(_0x280e('0x6'));var sox=require(_0x280e('0x7'));var csv=require(_0x280e('0x8'));var ejs=require(_0x280e('0x9'));var fs=require('fs');var fs_extra=require(_0x280e('0xa'));var _=require(_0x280e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x280e('0xc'));var toCsv=require(_0x280e('0x8'));var querystring=require('querystring');var Papa=require(_0x280e('0xd'));var Redis=require('ioredis');var authService=require(_0x280e('0xe'));var qs=require(_0x280e('0xf'));var as=require(_0x280e('0x10'));var hardwareService=require(_0x280e('0x11'));var logger=require('../../config/logger')(_0x280e('0x12'));var utils=require(_0x280e('0x13'));var config=require(_0x280e('0x14'));var licenseUtil=require(_0x280e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbb5327,_0x4537ad){_0x4537ad=_0x4537ad||0xcc;return function(_0x2ec512){if(_0x2ec512){return _0xbb5327[_0x280e('0x16')](_0x4537ad);}return _0xbb5327[_0x280e('0x17')](_0x4537ad)[_0x280e('0x18')]();};}function respondWithResult(_0x11680f,_0x2962da){_0x2962da=_0x2962da||0xc8;return function(_0x5970f2){if(_0x5970f2){return _0x11680f[_0x280e('0x17')](_0x2962da)[_0x280e('0x19')](_0x5970f2);}};}function respondWithFilteredResult(_0x519bd5,_0x16a2d3){return function(_0x57a32c){if(_0x57a32c){var _0x22b4dc=typeof _0x16a2d3['offset']===_0x280e('0x1a')&&typeof _0x16a2d3[_0x280e('0x1b')]===_0x280e('0x1a');var _0x16fcef=_0x57a32c[_0x280e('0x1c')];var _0x50fa00=_0x22b4dc?0x0:_0x16a2d3[_0x280e('0x1d')];var _0x1a49a4=_0x22b4dc?_0x57a32c[_0x280e('0x1c')]:_0x16a2d3[_0x280e('0x1d')]+_0x16a2d3['limit'];var _0x1098d8;if(_0x1a49a4>=_0x16fcef){_0x1a49a4=_0x16fcef;_0x1098d8=0xc8;}else{_0x1098d8=0xce;}_0x519bd5[_0x280e('0x17')](_0x1098d8);return _0x519bd5[_0x280e('0x1e')](_0x280e('0x1f'),_0x50fa00+'-'+_0x1a49a4+'/'+_0x16fcef)[_0x280e('0x19')](_0x57a32c);}return null;};}function patchUpdates(_0x28fc5b){return function(_0x34d0b5){try{jsonpatch[_0x280e('0x20')](_0x34d0b5,_0x28fc5b,!![]);}catch(_0x5d79e8){return BPromise[_0x280e('0x21')](_0x5d79e8);}return _0x34d0b5[_0x280e('0x22')]();};}function saveUpdates(_0xb7f3be,_0x496f1c){return function(_0x5afb77){if(_0x5afb77){return _0x5afb77[_0x280e('0x23')](_0xb7f3be)[_0x280e('0x24')](function(_0x7c7384){return _0x7c7384;});}return null;};}function removeEntity(_0xee2aa7,_0x23d843){return function(_0x389189){if(_0x389189){return _0x389189['destroy']()[_0x280e('0x24')](function(){_0xee2aa7[_0x280e('0x17')](0xcc)[_0x280e('0x18')]();});}};}function handleEntityNotFound(_0x4062a5,_0x5be2ca){return function(_0x2a0fe9){if(!_0x2a0fe9){_0x4062a5[_0x280e('0x16')](0x194);}return _0x2a0fe9;};}function handleError(_0xe13164,_0x398a9c){_0x398a9c=_0x398a9c||0x1f4;return function(_0x45d4c9){logger[_0x280e('0x25')](_0x45d4c9[_0x280e('0x26')]);if(_0x45d4c9[_0x280e('0x27')]){delete _0x45d4c9[_0x280e('0x27')];}_0xe13164[_0x280e('0x17')](_0x398a9c)[_0x280e('0x28')](_0x45d4c9);};}exports[_0x280e('0x29')]=function(_0x4221c2,_0x412737){var _0x4772f3={},_0x57020d={},_0x163e89={'count':0x0,'rows':[]};var _0x281675=_['map'](db[_0x280e('0x2a')][_0x280e('0x2b')],function(_0x13a006){return{'name':_0x13a006[_0x280e('0x2c')],'type':_0x13a006['type'][_0x280e('0x2d')]};});_0x57020d[_0x280e('0x2e')]=_[_0x280e('0x2f')](_0x281675,_0x280e('0x27'));_0x57020d[_0x280e('0x30')]=_[_0x280e('0x31')](_0x4221c2['query']);_0x57020d[_0x280e('0x32')]=_[_0x280e('0x33')](_0x57020d[_0x280e('0x2e')],_0x57020d[_0x280e('0x30')]);_0x4772f3[_0x280e('0x34')]=_[_0x280e('0x33')](_0x57020d[_0x280e('0x2e')],qs[_0x280e('0x35')](_0x4221c2['query']['fields']));_0x4772f3[_0x280e('0x34')]=_0x4772f3[_0x280e('0x34')][_0x280e('0x36')]?_0x4772f3[_0x280e('0x34')]:_0x57020d['model'];if(!_0x4221c2[_0x280e('0x30')][_0x280e('0x37')](_0x280e('0x38'))){_0x4772f3[_0x280e('0x1b')]=qs[_0x280e('0x1b')](_0x4221c2[_0x280e('0x30')]['limit']);_0x4772f3[_0x280e('0x1d')]=qs[_0x280e('0x1d')](_0x4221c2[_0x280e('0x30')][_0x280e('0x1d')]);}_0x4772f3[_0x280e('0x39')]=qs[_0x280e('0x3a')](_0x4221c2['query']['sort']);_0x4772f3[_0x280e('0x3b')]=qs[_0x280e('0x32')](_[_0x280e('0x3c')](_0x4221c2[_0x280e('0x30')],_0x57020d[_0x280e('0x32')]),_0x281675);if(_0x4221c2[_0x280e('0x30')][_0x280e('0x3d')]){_0x4772f3['where']=_[_0x280e('0x3e')](_0x4772f3[_0x280e('0x3b')],{'$or':_[_0x280e('0x2f')](_0x281675,function(_0x13945b){if(_0x13945b[_0x280e('0x3f')]!=='VIRTUAL'){var _0xf5a351={};_0xf5a351[_0x13945b['name']]={'$like':'%'+_0x4221c2[_0x280e('0x30')]['filter']+'%'};return _0xf5a351;}})});}_0x4772f3=_[_0x280e('0x3e')]({},_0x4772f3,_0x4221c2[_0x280e('0x40')]);var _0x576284={'where':_0x4772f3['where']};return db['OpenchannelTransferReport'][_0x280e('0x1c')](_0x576284)[_0x280e('0x24')](function(_0xcd9428){_0x163e89[_0x280e('0x1c')]=_0xcd9428;if(_0x4221c2[_0x280e('0x30')]['includeAll']){_0x4772f3['include']=[{'all':!![]}];}return db[_0x280e('0x2a')][_0x280e('0x41')](_0x4772f3);})['then'](function(_0x320865){_0x163e89[_0x280e('0x42')]=_0x320865;return _0x163e89;})[_0x280e('0x24')](respondWithFilteredResult(_0x412737,_0x4772f3))[_0x280e('0x43')](handleError(_0x412737,null));};exports[_0x280e('0x44')]=function(_0x10254f,_0x36cf79){var _0xd704a={'raw':!![],'where':{'id':_0x10254f[_0x280e('0x45')]['id']}},_0x404a87={};_0x404a87[_0x280e('0x2e')]=_[_0x280e('0x31')](db[_0x280e('0x2a')][_0x280e('0x2b')]);_0x404a87[_0x280e('0x30')]=_[_0x280e('0x31')](_0x10254f[_0x280e('0x30')]);_0x404a87[_0x280e('0x32')]=_[_0x280e('0x33')](_0x404a87[_0x280e('0x2e')],_0x404a87['query']);_0xd704a[_0x280e('0x34')]=_[_0x280e('0x33')](_0x404a87['model'],qs['fields'](_0x10254f[_0x280e('0x30')][_0x280e('0x35')]));_0xd704a[_0x280e('0x34')]=_0xd704a[_0x280e('0x34')][_0x280e('0x36')]?_0xd704a[_0x280e('0x34')]:_0x404a87[_0x280e('0x2e')];if(_0x10254f[_0x280e('0x30')][_0x280e('0x46')]){_0xd704a['include']=[{'all':!![]}];}_0xd704a=_[_0x280e('0x3e')]({},_0xd704a,_0x10254f[_0x280e('0x40')]);return db[_0x280e('0x2a')][_0x280e('0x47')](_0xd704a)[_0x280e('0x24')](handleEntityNotFound(_0x36cf79,null))[_0x280e('0x24')](respondWithResult(_0x36cf79,null))[_0x280e('0x43')](handleError(_0x36cf79,null));};exports[_0x280e('0x48')]=function(_0x43425f,_0x3cc61f){return db[_0x280e('0x2a')][_0x280e('0x48')](_0x43425f[_0x280e('0x49')],{})[_0x280e('0x24')](respondWithResult(_0x3cc61f,0xc9))['catch'](handleError(_0x3cc61f,null));};exports[_0x280e('0x23')]=function(_0x1e1750,_0x17e700){if(_0x1e1750[_0x280e('0x49')]['id']){delete _0x1e1750['body']['id'];}return db[_0x280e('0x2a')][_0x280e('0x47')]({'where':{'id':_0x1e1750[_0x280e('0x45')]['id']}})['then'](handleEntityNotFound(_0x17e700,null))[_0x280e('0x24')](saveUpdates(_0x1e1750[_0x280e('0x49')],null))[_0x280e('0x24')](respondWithResult(_0x17e700,null))['catch'](handleError(_0x17e700,null));};exports[_0x280e('0x4a')]=function(_0x45ca90,_0x270fd2){return db[_0x280e('0x2a')][_0x280e('0x47')]({'where':{'id':_0x45ca90['params']['id']}})[_0x280e('0x24')](handleEntityNotFound(_0x270fd2,null))[_0x280e('0x24')](removeEntity(_0x270fd2,null))[_0x280e('0x43')](handleError(_0x270fd2,null));};exports['describe']=function(_0x3ba9e1,_0x2173f9){return db[_0x280e('0x2a')][_0x280e('0x4b')]()[_0x280e('0x24')](respondWithResult(_0x2173f9,null))['catch'](handleError(_0x2173f9,null));};
\ No newline at end of file
+var _0x2d58=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','length','includeAll','find','create','body','describe','catch','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse'];(function(_0x2b22c7,_0x4174f3){var _0x26c1b6=function(_0x21f8e8){while(--_0x21f8e8){_0x2b22c7['push'](_0x2b22c7['shift']());}};_0x26c1b6(++_0x4174f3);}(_0x2d58,0xd3));var _0x82d5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2d58[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x82d5('0x0'));var rimraf=require(_0x82d5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x82d5('0x2'));var rp=require(_0x82d5('0x3'));var moment=require('moment');var BPromise=require(_0x82d5('0x4'));var Mustache=require(_0x82d5('0x5'));var util=require(_0x82d5('0x6'));var path=require(_0x82d5('0x7'));var sox=require(_0x82d5('0x8'));var csv=require(_0x82d5('0x9'));var ejs=require(_0x82d5('0xa'));var fs=require('fs');var fs_extra=require(_0x82d5('0xb'));var _=require(_0x82d5('0xc'));var squel=require(_0x82d5('0xd'));var crypto=require(_0x82d5('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x82d5('0x9'));var querystring=require(_0x82d5('0xf'));var Papa=require(_0x82d5('0x10'));var Redis=require(_0x82d5('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x82d5('0x12'));var as=require(_0x82d5('0x13'));var hardwareService=require(_0x82d5('0x14'));var logger=require(_0x82d5('0x15'))('api');var utils=require(_0x82d5('0x16'));var config=require(_0x82d5('0x17'));var licenseUtil=require(_0x82d5('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x27af4a,_0x18f729){_0x18f729=_0x18f729||0xcc;return function(_0x52d464){if(_0x52d464){return _0x27af4a[_0x82d5('0x19')](_0x18f729);}return _0x27af4a[_0x82d5('0x1a')](_0x18f729)['end']();};}function respondWithResult(_0x4e49ca,_0x7278ca){_0x7278ca=_0x7278ca||0xc8;return function(_0x28d798){if(_0x28d798){return _0x4e49ca['status'](_0x7278ca)[_0x82d5('0x1b')](_0x28d798);}};}function respondWithFilteredResult(_0x4dbbf1,_0x5aea1a){return function(_0x3ce3e3){if(_0x3ce3e3){var _0x4bcf7f=typeof _0x5aea1a[_0x82d5('0x1c')]==='undefined'&&typeof _0x5aea1a['limit']===_0x82d5('0x1d');var _0x2bad3c=_0x3ce3e3[_0x82d5('0x1e')];var _0x3e5be9=_0x4bcf7f?0x0:_0x5aea1a[_0x82d5('0x1c')];var _0x182db9=_0x4bcf7f?_0x3ce3e3['count']:_0x5aea1a[_0x82d5('0x1c')]+_0x5aea1a[_0x82d5('0x1f')];var _0x131788;if(_0x182db9>=_0x2bad3c){_0x182db9=_0x2bad3c;_0x131788=0xc8;}else{_0x131788=0xce;}_0x4dbbf1['status'](_0x131788);return _0x4dbbf1[_0x82d5('0x20')](_0x82d5('0x21'),_0x3e5be9+'-'+_0x182db9+'/'+_0x2bad3c)[_0x82d5('0x1b')](_0x3ce3e3);}return null;};}function patchUpdates(_0x4878b3){return function(_0x591dd1){try{jsonpatch['apply'](_0x591dd1,_0x4878b3,!![]);}catch(_0x3531a2){return BPromise['reject'](_0x3531a2);}return _0x591dd1[_0x82d5('0x22')]();};}function saveUpdates(_0x5f3704,_0x2b1ceb){return function(_0x5e6244){if(_0x5e6244){return _0x5e6244[_0x82d5('0x23')](_0x5f3704)[_0x82d5('0x24')](function(_0x160009){return _0x160009;});}return null;};}function removeEntity(_0x3400b8,_0x5ae201){return function(_0x43e7ca){if(_0x43e7ca){return _0x43e7ca[_0x82d5('0x25')]()['then'](function(){_0x3400b8[_0x82d5('0x1a')](0xcc)[_0x82d5('0x26')]();});}};}function handleEntityNotFound(_0x2a2973,_0x57149b){return function(_0x4eb808){if(!_0x4eb808){_0x2a2973[_0x82d5('0x19')](0x194);}return _0x4eb808;};}function handleError(_0x4dfce3,_0x2fb9b9){_0x2fb9b9=_0x2fb9b9||0x1f4;return function(_0x5acc0a){logger[_0x82d5('0x27')](_0x5acc0a[_0x82d5('0x28')]);if(_0x5acc0a['name']){delete _0x5acc0a[_0x82d5('0x29')];}_0x4dfce3[_0x82d5('0x1a')](_0x2fb9b9)[_0x82d5('0x2a')](_0x5acc0a);};}exports['index']=function(_0x2dff2d,_0xde3490){var _0x3eeedd={},_0x5032b2={},_0x1264eb={'count':0x0,'rows':[]};var _0x32f125=_[_0x82d5('0x2b')](db[_0x82d5('0x2c')][_0x82d5('0x2d')],function(_0x54086b){return{'name':_0x54086b[_0x82d5('0x2e')],'type':_0x54086b['type'][_0x82d5('0x2f')]};});_0x5032b2[_0x82d5('0x30')]=_['map'](_0x32f125,_0x82d5('0x29'));_0x5032b2[_0x82d5('0x31')]=_[_0x82d5('0x32')](_0x2dff2d[_0x82d5('0x31')]);_0x5032b2[_0x82d5('0x33')]=_['intersection'](_0x5032b2[_0x82d5('0x30')],_0x5032b2[_0x82d5('0x31')]);_0x3eeedd[_0x82d5('0x34')]=_[_0x82d5('0x35')](_0x5032b2['model'],qs[_0x82d5('0x36')](_0x2dff2d['query'][_0x82d5('0x36')]));_0x3eeedd['attributes']=_0x3eeedd[_0x82d5('0x34')]['length']?_0x3eeedd['attributes']:_0x5032b2[_0x82d5('0x30')];if(!_0x2dff2d[_0x82d5('0x31')][_0x82d5('0x37')](_0x82d5('0x38'))){_0x3eeedd['limit']=qs[_0x82d5('0x1f')](_0x2dff2d[_0x82d5('0x31')][_0x82d5('0x1f')]);_0x3eeedd[_0x82d5('0x1c')]=qs[_0x82d5('0x1c')](_0x2dff2d['query']['offset']);}_0x3eeedd['order']=qs[_0x82d5('0x39')](_0x2dff2d[_0x82d5('0x31')][_0x82d5('0x39')]);_0x3eeedd['where']=qs[_0x82d5('0x33')](_[_0x82d5('0x3a')](_0x2dff2d['query'],_0x5032b2[_0x82d5('0x33')]),_0x32f125);if(_0x2dff2d[_0x82d5('0x31')][_0x82d5('0x3b')]){_0x3eeedd[_0x82d5('0x3c')]=_[_0x82d5('0x3d')](_0x3eeedd[_0x82d5('0x3c')],{'$or':_[_0x82d5('0x2b')](_0x32f125,function(_0x20ef60){if(_0x20ef60['type']!==_0x82d5('0x3e')){var _0x2d44c1={};_0x2d44c1[_0x20ef60[_0x82d5('0x29')]]={'$like':'%'+_0x2dff2d['query']['filter']+'%'};return _0x2d44c1;}})});}_0x3eeedd=_[_0x82d5('0x3d')]({},_0x3eeedd,_0x2dff2d[_0x82d5('0x3f')]);var _0x3c93df={'where':_0x3eeedd[_0x82d5('0x3c')]};return db[_0x82d5('0x2c')][_0x82d5('0x1e')](_0x3c93df)[_0x82d5('0x24')](function(_0x20a1d8){_0x1264eb[_0x82d5('0x1e')]=_0x20a1d8;if(_0x2dff2d['query']['includeAll']){_0x3eeedd[_0x82d5('0x40')]=[{'all':!![]}];}return db[_0x82d5('0x2c')][_0x82d5('0x41')](_0x3eeedd);})['then'](function(_0x359c77){_0x1264eb[_0x82d5('0x42')]=_0x359c77;return _0x1264eb;})['then'](respondWithFilteredResult(_0xde3490,_0x3eeedd))['catch'](handleError(_0xde3490,null));};exports[_0x82d5('0x43')]=function(_0x468f8e,_0x1d5611){var _0x335c1d={'raw':!![],'where':{'id':_0x468f8e[_0x82d5('0x44')]['id']}},_0x2128ba={};_0x2128ba['model']=_['keys'](db[_0x82d5('0x2c')]['rawAttributes']);_0x2128ba['query']=_[_0x82d5('0x32')](_0x468f8e['query']);_0x2128ba['filters']=_['intersection'](_0x2128ba[_0x82d5('0x30')],_0x2128ba[_0x82d5('0x31')]);_0x335c1d['attributes']=_[_0x82d5('0x35')](_0x2128ba[_0x82d5('0x30')],qs['fields'](_0x468f8e[_0x82d5('0x31')][_0x82d5('0x36')]));_0x335c1d[_0x82d5('0x34')]=_0x335c1d[_0x82d5('0x34')][_0x82d5('0x45')]?_0x335c1d[_0x82d5('0x34')]:_0x2128ba['model'];if(_0x468f8e['query'][_0x82d5('0x46')]){_0x335c1d[_0x82d5('0x40')]=[{'all':!![]}];}_0x335c1d=_[_0x82d5('0x3d')]({},_0x335c1d,_0x468f8e[_0x82d5('0x3f')]);return db[_0x82d5('0x2c')][_0x82d5('0x47')](_0x335c1d)[_0x82d5('0x24')](handleEntityNotFound(_0x1d5611,null))['then'](respondWithResult(_0x1d5611,null))['catch'](handleError(_0x1d5611,null));};exports['create']=function(_0x386b73,_0x192aa1){return db[_0x82d5('0x2c')][_0x82d5('0x48')](_0x386b73['body'],{})[_0x82d5('0x24')](respondWithResult(_0x192aa1,0xc9))['catch'](handleError(_0x192aa1,null));};exports[_0x82d5('0x23')]=function(_0x4eac16,_0x299b74){if(_0x4eac16[_0x82d5('0x49')]['id']){delete _0x4eac16['body']['id'];}return db[_0x82d5('0x2c')][_0x82d5('0x47')]({'where':{'id':_0x4eac16[_0x82d5('0x44')]['id']}})[_0x82d5('0x24')](handleEntityNotFound(_0x299b74,null))[_0x82d5('0x24')](saveUpdates(_0x4eac16[_0x82d5('0x49')],null))[_0x82d5('0x24')](respondWithResult(_0x299b74,null))['catch'](handleError(_0x299b74,null));};exports['destroy']=function(_0x39203c,_0x7ad8f4){return db[_0x82d5('0x2c')][_0x82d5('0x47')]({'where':{'id':_0x39203c[_0x82d5('0x44')]['id']}})[_0x82d5('0x24')](handleEntityNotFound(_0x7ad8f4,null))['then'](removeEntity(_0x7ad8f4,null))['catch'](handleError(_0x7ad8f4,null));};exports[_0x82d5('0x4a')]=function(_0x59f0ec,_0x3c7d96){return db[_0x82d5('0x2c')][_0x82d5('0x4a')]()[_0x82d5('0x24')](respondWithResult(_0x3c7d96,null))[_0x82d5('0x4b')](handleError(_0x3c7d96,null));};
\ No newline at end of file
index 3f3d5b8..637c499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f4=['request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','util','bluebird'];(function(_0x2635be,_0x147be5){var _0x427c8e=function(_0x2a01ba){while(--_0x2a01ba){_0x2635be['push'](_0x2635be['shift']());}};_0x427c8e(++_0x147be5);}(_0xf5f4,0x76));var _0x4f5f=function(_0x417779,_0xca1d2f){_0x417779=_0x417779-0x0;var _0x1fe1f1=_0xf5f4[_0x417779];return _0x1fe1f1;};'use strict';var _=require('lodash');var util=require(_0x4f5f('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4f5f('0x1'));var rp=require(_0x4f5f('0x2'));var fs=require('fs');var path=require(_0x4f5f('0x3'));var rimraf=require(_0x4f5f('0x4'));var config=require(_0x4f5f('0x5'));var attributes=require(_0x4f5f('0x6'));module[_0x4f5f('0x7')]=function(_0x48a019,_0x103cbf){return _0x48a019[_0x4f5f('0x8')](_0x4f5f('0x9'),attributes,{'tableName':_0x4f5f('0xa'),'paranoid':![],'indexes':[{'name':_0x4f5f('0xb'),'fields':[_0x4f5f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb29d=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid'];(function(_0x1dd78b,_0x213fd9){var _0x2d9bf6=function(_0x2c749a){while(--_0x2c749a){_0x1dd78b['push'](_0x1dd78b['shift']());}};_0x2d9bf6(++_0x213fd9);}(_0xb29d,0x11d));var _0xdb29=function(_0x189c34,_0x5d93b7){_0x189c34=_0x189c34-0x0;var _0x2fa563=_0xb29d[_0x189c34];return _0x2fa563;};'use strict';var _=require('lodash');var util=require(_0xdb29('0x0'));var logger=require(_0xdb29('0x1'))(_0xdb29('0x2'));var moment=require(_0xdb29('0x3'));var BPromise=require(_0xdb29('0x4'));var rp=require(_0xdb29('0x5'));var fs=require('fs');var path=require(_0xdb29('0x6'));var rimraf=require(_0xdb29('0x7'));var config=require(_0xdb29('0x8'));var attributes=require(_0xdb29('0x9'));module[_0xdb29('0xa')]=function(_0x2e22aa,_0x1564a3){return _0x2e22aa[_0xdb29('0xb')](_0xdb29('0xc'),attributes,{'tableName':_0xdb29('0xd'),'paranoid':![],'indexes':[{'name':_0xdb29('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 9f97e56..4fd7a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa23f=['code','OpenchannelTransferReport,\x20%s,\x20%s','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','debug','request\x20sent','error'];(function(_0x3a35cc,_0x2f6e27){var _0x20d45e=function(_0x3ac584){while(--_0x3ac584){_0x3a35cc['push'](_0x3a35cc['shift']());}};_0x20d45e(++_0x2f6e27);}(_0xa23f,0x7c));var _0xfa23=function(_0x21a70c,_0x3f6073){_0x21a70c=_0x21a70c-0x0;var _0x132d1c=_0xa23f[_0x21a70c];return _0x132d1c;};'use strict';var _=require(_0xfa23('0x0'));var util=require(_0xfa23('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfa23('0x2'));var fs=require('fs');var Redis=require(_0xfa23('0x3'));var db=require(_0xfa23('0x4'))['db'];var utils=require(_0xfa23('0x5'));var logger=require('../../config/logger')(_0xfa23('0x6'));var config=require('../../config/environment');var jayson=require(_0xfa23('0x7'));var client=jayson[_0xfa23('0x8')][_0xfa23('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3696ef,_0x4fb6e6,_0x5a7882){return new BPromise(function(_0x59d53e,_0x19a1ac){return client[_0xfa23('0xa')](_0x3696ef,_0x5a7882)[_0xfa23('0xb')](function(_0x31bb2c){logger[_0xfa23('0xc')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4fb6e6,'request\x20sent');logger[_0xfa23('0xd')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x4fb6e6,_0xfa23('0xe'),JSON['stringify'](_0x31bb2c));if(_0x31bb2c[_0xfa23('0xf')]){if(_0x31bb2c[_0xfa23('0xf')][_0xfa23('0x10')]===0x1f4){logger['error'](_0xfa23('0x11'),_0x4fb6e6,_0x31bb2c[_0xfa23('0xf')][_0xfa23('0x12')]);return _0x19a1ac(_0x31bb2c['error']['message']);}logger[_0xfa23('0xf')](_0xfa23('0x11'),_0x4fb6e6,_0x31bb2c[_0xfa23('0xf')][_0xfa23('0x12')]);return _0x59d53e(_0x31bb2c['error'][_0xfa23('0x12')]);}else{logger[_0xfa23('0xc')](_0xfa23('0x11'),_0x4fb6e6,_0xfa23('0xe'));_0x59d53e(_0x31bb2c['result'][_0xfa23('0x12')]);}})[_0xfa23('0x13')](function(_0x3ca6be){logger[_0xfa23('0xf')](_0xfa23('0x11'),_0x4fb6e6,_0x3ca6be);_0x19a1ac(_0x3ca6be);});});}
\ No newline at end of file
+var _0xa9b1=['http','request','then','info','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client'];(function(_0x5cdd12,_0x11bcfa){var _0x305d6a=function(_0x389605){while(--_0x389605){_0x5cdd12['push'](_0x5cdd12['shift']());}};_0x305d6a(++_0x11bcfa);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1a9b('0x0'));var BPromise=require(_0x1a9b('0x1'));var rs=require(_0x1a9b('0x2'));var fs=require('fs');var Redis=require(_0x1a9b('0x3'));var db=require(_0x1a9b('0x4'))['db'];var utils=require(_0x1a9b('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x1a9b('0x6'));var client=jayson[_0x1a9b('0x7')][_0x1a9b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xc55657,_0x32cff5,_0x16c344){return new BPromise(function(_0x263b84,_0x16e01a){return client[_0x1a9b('0x9')](_0xc55657,_0x16c344)[_0x1a9b('0xa')](function(_0x162d6a){logger[_0x1a9b('0xb')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x32cff5,'request\x20sent');logger[_0x1a9b('0xc')](_0x1a9b('0xd'),_0x32cff5,_0x1a9b('0xe'),JSON['stringify'](_0x162d6a));if(_0x162d6a['error']){if(_0x162d6a['error'][_0x1a9b('0xf')]===0x1f4){logger[_0x1a9b('0x10')](_0x1a9b('0x11'),_0x32cff5,_0x162d6a[_0x1a9b('0x10')][_0x1a9b('0x12')]);return _0x16e01a(_0x162d6a[_0x1a9b('0x10')]['message']);}logger[_0x1a9b('0x10')](_0x1a9b('0x11'),_0x32cff5,_0x162d6a[_0x1a9b('0x10')]['message']);return _0x263b84(_0x162d6a[_0x1a9b('0x10')][_0x1a9b('0x12')]);}else{logger['info'](_0x1a9b('0x11'),_0x32cff5,'request\x20sent');_0x263b84(_0x162d6a[_0x1a9b('0x13')][_0x1a9b('0x12')]);}})[_0x1a9b('0x14')](function(_0x3903b7){logger[_0x1a9b('0x10')](_0x1a9b('0x11'),_0x32cff5,_0x3903b7);_0x16e01a(_0x3903b7);});});}
\ No newline at end of file
index 63d540b..c7f0a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa65e=['multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','create','put','update','delete','exports'];(function(_0x4c4bf6,_0x23c431){var _0x366457=function(_0x4acce8){while(--_0x4acce8){_0x4c4bf6['push'](_0x4c4bf6['shift']());}};_0x366457(++_0x23c431);}(_0xa65e,0xb4));var _0xea65=function(_0x2ee974,_0x1cceb5){_0x2ee974=_0x2ee974-0x0;var _0x20c5fb=_0xa65e[_0x2ee974];return _0x20c5fb;};'use strict';var multer=require(_0xea65('0x0'));var util=require(_0xea65('0x1'));var path=require(_0xea65('0x2'));var timeout=require(_0xea65('0x3'));var express=require(_0xea65('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xea65('0x5'));var interaction=require(_0xea65('0x6'));var config=require(_0xea65('0x7'));var controller=require('./pause.controller');router[_0xea65('0x8')]('/',auth[_0xea65('0x9')](),controller[_0xea65('0xa')]);router[_0xea65('0x8')](_0xea65('0xb'),auth['isAuthenticated'](),controller[_0xea65('0xc')]);router['post']('/',auth[_0xea65('0x9')](),controller[_0xea65('0xd')]);router[_0xea65('0xe')](_0xea65('0xb'),auth[_0xea65('0x9')](),controller[_0xea65('0xf')]);router[_0xea65('0x10')](_0xea65('0xb'),auth[_0xea65('0x9')](),controller['destroy']);module[_0xea65('0x11')]=router;
\ No newline at end of file
+var _0x6344=['./pause.controller','get','index','/:id','isAuthenticated','post','create','update','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x41e61b,_0x7fceab){var _0x4a88bf=function(_0xecdd34){while(--_0xecdd34){_0x41e61b['push'](_0x41e61b['shift']());}};_0x4a88bf(++_0x7fceab);}(_0x6344,0x196));var _0x4634=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0x6344[_0x3826ad];return _0x17b900;};'use strict';var multer=require(_0x4634('0x0'));var util=require(_0x4634('0x1'));var path=require('path');var timeout=require(_0x4634('0x2'));var express=require('express');var router=express[_0x4634('0x3')]();var fs_extra=require(_0x4634('0x4'));var auth=require(_0x4634('0x5'));var interaction=require(_0x4634('0x6'));var config=require(_0x4634('0x7'));var controller=require(_0x4634('0x8'));router[_0x4634('0x9')]('/',auth['isAuthenticated'](),controller[_0x4634('0xa')]);router[_0x4634('0x9')](_0x4634('0xb'),auth[_0x4634('0xc')](),controller['show']);router[_0x4634('0xd')]('/',auth[_0x4634('0xc')](),controller[_0x4634('0xe')]);router['put'](_0x4634('0xb'),auth[_0x4634('0xc')](),controller[_0x4634('0xf')]);router['delete']('/:id',auth[_0x4634('0xc')](),controller[_0x4634('0x10')]);module[_0x4634('0x11')]=router;
\ No newline at end of file
index fdecc44..33ff766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe266=['STRING','name','exports'];(function(_0x9f295f,_0x59c09c){var _0x3f265a=function(_0x798adc){while(--_0x798adc){_0x9f295f['push'](_0x9f295f['shift']());}};_0x3f265a(++_0x59c09c);}(_0xe266,0x80));var _0x6e26=function(_0x23b9a8,_0xbd35ec){_0x23b9a8=_0x23b9a8-0x0;var _0x38d9bd=_0xe266[_0x23b9a8];return _0x38d9bd;};'use strict';var Sequelize=require('sequelize');module[_0x6e26('0x0')]={'name':{'type':Sequelize[_0x6e26('0x1')],'unique':_0x6e26('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x6e26('0x1')]}};
\ No newline at end of file
+var _0xe3b9=['STRING','exports'];(function(_0x42a09f,_0x50f368){var _0x688217=function(_0x47ea1d){while(--_0x47ea1d){_0x42a09f['push'](_0x42a09f['shift']());}};_0x688217(++_0x50f368);}(_0xe3b9,0x149));var _0x9e3b=function(_0x3ba9d4,_0x183bc1){_0x3ba9d4=_0x3ba9d4-0x0;var _0x302335=_0xe3b9[_0x3ba9d4];return _0x302335;};'use strict';var Sequelize=require('sequelize');module[_0x9e3b('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x9e3b('0x1')]}};
\ No newline at end of file
index 059a78c..41de917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe20d=['../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Pauses','UserProfileResource','stack','name','index','Pause','rawAttributes','key','map','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','model','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/environment'];(function(_0x579aa5,_0x1b3443){var _0x176aeb=function(_0x8f17bc){while(--_0x8f17bc){_0x579aa5['push'](_0x579aa5['shift']());}};_0x176aeb(++_0x1b3443);}(_0xe20d,0x17d));var _0xde20=function(_0x1b3669,_0x22f8ba){_0x1b3669=_0x1b3669-0x0;var _0x3e0c67=_0xe20d[_0x1b3669];return _0x3e0c67;};'use strict';var emlformat=require(_0xde20('0x0'));var rimraf=require(_0xde20('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xde20('0x2'));var rp=require(_0xde20('0x3'));var moment=require(_0xde20('0x4'));var BPromise=require(_0xde20('0x5'));var Mustache=require(_0xde20('0x6'));var util=require(_0xde20('0x7'));var path=require(_0xde20('0x8'));var sox=require('sox');var csv=require(_0xde20('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xde20('0xa'));var squel=require(_0xde20('0xb'));var crypto=require(_0xde20('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xde20('0xd'));var toCsv=require(_0xde20('0x9'));var querystring=require('querystring');var Papa=require(_0xde20('0xe'));var Redis=require(_0xde20('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xde20('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xde20('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xde20('0x12'));var licenseUtil=require(_0xde20('0x13'));var db=require(_0xde20('0x14'))['db'];function respondWithStatusCode(_0x3af1de,_0x2a582e){_0x2a582e=_0x2a582e||0xcc;return function(_0x369e70){if(_0x369e70){return _0x3af1de[_0xde20('0x15')](_0x2a582e);}return _0x3af1de['status'](_0x2a582e)[_0xde20('0x16')]();};}function respondWithResult(_0x17eff1,_0x18e57b){_0x18e57b=_0x18e57b||0xc8;return function(_0x1ef86c){if(_0x1ef86c){return _0x17eff1[_0xde20('0x17')](_0x18e57b)['json'](_0x1ef86c);}};}function respondWithFilteredResult(_0xb3526b,_0x32b25b){return function(_0x4cc0d9){if(_0x4cc0d9){var _0x35e231=typeof _0x32b25b[_0xde20('0x18')]===_0xde20('0x19')&&typeof _0x32b25b[_0xde20('0x1a')]===_0xde20('0x19');var _0x39a659=_0x4cc0d9[_0xde20('0x1b')];var _0x453be5=_0x35e231?0x0:_0x32b25b[_0xde20('0x18')];var _0x497f3a=_0x35e231?_0x4cc0d9[_0xde20('0x1b')]:_0x32b25b[_0xde20('0x18')]+_0x32b25b[_0xde20('0x1a')];var _0x44695c;if(_0x497f3a>=_0x39a659){_0x497f3a=_0x39a659;_0x44695c=0xc8;}else{_0x44695c=0xce;}_0xb3526b[_0xde20('0x17')](_0x44695c);return _0xb3526b[_0xde20('0x1c')](_0xde20('0x1d'),_0x453be5+'-'+_0x497f3a+'/'+_0x39a659)[_0xde20('0x1e')](_0x4cc0d9);}return null;};}function patchUpdates(_0x265c51){return function(_0x38a46){try{jsonpatch[_0xde20('0x1f')](_0x38a46,_0x265c51,!![]);}catch(_0x501cc9){return BPromise[_0xde20('0x20')](_0x501cc9);}return _0x38a46[_0xde20('0x21')]();};}function saveUpdates(_0x5d44b7,_0x257de6){return function(_0x568351){if(_0x568351){return _0x568351[_0xde20('0x22')](_0x5d44b7)[_0xde20('0x23')](function(_0x3533f9){return _0x3533f9;});}return null;};}function removeEntity(_0x272cde,_0x3a4e7b){return function(_0x48a730){if(_0x48a730){return _0x48a730[_0xde20('0x24')]()[_0xde20('0x23')](function(){var _0x168743=_0x48a730[_0xde20('0x25')]({'plain':!![]});var _0x2ebb5a=_0xde20('0x26');return db[_0xde20('0x27')][_0xde20('0x24')]({'where':{'type':_0x2ebb5a,'resourceId':_0x168743['id']}})[_0xde20('0x23')](function(){return _0x48a730;});})[_0xde20('0x23')](function(){_0x272cde['status'](0xcc)[_0xde20('0x16')]();});}};}function handleEntityNotFound(_0x45f377,_0x49f03f){return function(_0x58e2cb){if(!_0x58e2cb){_0x45f377[_0xde20('0x15')](0x194);}return _0x58e2cb;};}function handleError(_0x27828f,_0xae7cdc){_0xae7cdc=_0xae7cdc||0x1f4;return function(_0x2a6f7c){logger['error'](_0x2a6f7c[_0xde20('0x28')]);if(_0x2a6f7c[_0xde20('0x29')]){delete _0x2a6f7c['name'];}_0x27828f[_0xde20('0x17')](_0xae7cdc)['send'](_0x2a6f7c);};}exports[_0xde20('0x2a')]=function(_0x4fec9d,_0x5417f1){var _0x266382={},_0x2ba249={},_0x12c004={'count':0x0,'rows':[]};var _0x1236ce=_['map'](db[_0xde20('0x2b')][_0xde20('0x2c')],function(_0x575caf){return{'name':_0x575caf['fieldName'],'type':_0x575caf['type'][_0xde20('0x2d')]};});_0x2ba249['model']=_[_0xde20('0x2e')](_0x1236ce,_0xde20('0x29'));_0x2ba249['query']=_[_0xde20('0x2f')](_0x4fec9d[_0xde20('0x30')]);_0x2ba249[_0xde20('0x31')]=_[_0xde20('0x32')](_0x2ba249['model'],_0x2ba249[_0xde20('0x30')]);_0x266382[_0xde20('0x33')]=_[_0xde20('0x32')](_0x2ba249['model'],qs[_0xde20('0x34')](_0x4fec9d[_0xde20('0x30')][_0xde20('0x34')]));_0x266382[_0xde20('0x33')]=_0x266382[_0xde20('0x33')][_0xde20('0x35')]?_0x266382['attributes']:_0x2ba249['model'];if(!_0x4fec9d[_0xde20('0x30')]['hasOwnProperty'](_0xde20('0x36'))){_0x266382[_0xde20('0x1a')]=qs['limit'](_0x4fec9d['query'][_0xde20('0x1a')]);_0x266382['offset']=qs[_0xde20('0x18')](_0x4fec9d['query'][_0xde20('0x18')]);}_0x266382[_0xde20('0x37')]=qs[_0xde20('0x38')](_0x4fec9d[_0xde20('0x30')][_0xde20('0x38')]);_0x266382['where']=qs['filters'](_[_0xde20('0x39')](_0x4fec9d[_0xde20('0x30')],_0x2ba249[_0xde20('0x31')]),_0x1236ce);if(_0x4fec9d[_0xde20('0x30')][_0xde20('0x3a')]){_0x266382[_0xde20('0x3b')]=_[_0xde20('0x3c')](_0x266382[_0xde20('0x3b')],{'$or':_[_0xde20('0x2e')](_0x1236ce,function(_0x5339a7){if(_0x5339a7[_0xde20('0x3d')]!==_0xde20('0x3e')){var _0x36c052={};_0x36c052[_0x5339a7[_0xde20('0x29')]]={'$like':'%'+_0x4fec9d[_0xde20('0x30')][_0xde20('0x3a')]+'%'};return _0x36c052;}})});}_0x266382=_['merge']({},_0x266382,_0x4fec9d[_0xde20('0x3f')]);var _0x236e77={'where':_0x266382[_0xde20('0x3b')]};return db[_0xde20('0x2b')][_0xde20('0x1b')](_0x236e77)[_0xde20('0x23')](function(_0x5623a8){_0x12c004[_0xde20('0x1b')]=_0x5623a8;if(_0x4fec9d['query']['includeAll']){_0x266382[_0xde20('0x40')]=[{'all':!![]}];}return db[_0xde20('0x2b')][_0xde20('0x41')](_0x266382);})[_0xde20('0x23')](function(_0x377d10){_0x12c004[_0xde20('0x42')]=_0x377d10;return _0x12c004;})[_0xde20('0x23')](respondWithFilteredResult(_0x5417f1,_0x266382))[_0xde20('0x43')](handleError(_0x5417f1,null));};exports[_0xde20('0x44')]=function(_0x4544f3,_0xfc5614){var _0x39306e={'raw':!![],'where':{'id':_0x4544f3[_0xde20('0x45')]['id']}},_0x23b267={};_0x23b267[_0xde20('0x46')]=_[_0xde20('0x2f')](db[_0xde20('0x2b')]['rawAttributes']);_0x23b267[_0xde20('0x30')]=_[_0xde20('0x2f')](_0x4544f3[_0xde20('0x30')]);_0x23b267[_0xde20('0x31')]=_[_0xde20('0x32')](_0x23b267[_0xde20('0x46')],_0x23b267['query']);_0x39306e[_0xde20('0x33')]=_[_0xde20('0x32')](_0x23b267[_0xde20('0x46')],qs[_0xde20('0x34')](_0x4544f3['query'][_0xde20('0x34')]));_0x39306e[_0xde20('0x33')]=_0x39306e[_0xde20('0x33')]['length']?_0x39306e[_0xde20('0x33')]:_0x23b267['model'];if(_0x4544f3[_0xde20('0x30')][_0xde20('0x47')]){_0x39306e[_0xde20('0x40')]=[{'all':!![]}];}_0x39306e=_[_0xde20('0x3c')]({},_0x39306e,_0x4544f3[_0xde20('0x3f')]);return db[_0xde20('0x2b')][_0xde20('0x48')](_0x39306e)[_0xde20('0x23')](handleEntityNotFound(_0xfc5614,null))[_0xde20('0x23')](respondWithResult(_0xfc5614,null))[_0xde20('0x43')](handleError(_0xfc5614,null));};exports[_0xde20('0x49')]=function(_0x4e47d9,_0x5aa270){return db[_0xde20('0x2b')]['create'](_0x4e47d9[_0xde20('0x4a')],{})[_0xde20('0x23')](function(_0x51ca7f){var _0x4afc8d=_0x4e47d9[_0xde20('0x4b')]['get']({'plain':!![]});if(!_0x4afc8d)throw new Error(_0xde20('0x4c'));if(_0x4afc8d['role']===_0xde20('0x4b')){var _0x50c677=_0x51ca7f[_0xde20('0x25')]({'plain':!![]});var _0x324b70=_0xde20('0x26');return db[_0xde20('0x4d')][_0xde20('0x48')]({'where':{'name':_0x324b70,'userProfileId':_0x4afc8d['userProfileId']},'raw':!![]})[_0xde20('0x23')](function(_0x249554){if(_0x249554&&_0x249554['autoAssociation']===0x0){return db[_0xde20('0x27')]['create']({'name':_0x50c677[_0xde20('0x29')],'resourceId':_0x50c677['id'],'type':_0x249554[_0xde20('0x29')],'sectionId':_0x249554['id']},{})[_0xde20('0x23')](function(){return _0x51ca7f;});}else{return _0x51ca7f;}})[_0xde20('0x43')](function(_0x4ffa98){logger[_0xde20('0x4e')](_0xde20('0x4f'),_0x4ffa98);throw _0x4ffa98;});}return _0x51ca7f;})[_0xde20('0x23')](respondWithResult(_0x5aa270,0xc9))[_0xde20('0x43')](handleError(_0x5aa270,null));};exports[_0xde20('0x22')]=function(_0x566e7f,_0x1cc594){if(_0x566e7f[_0xde20('0x4a')]['id']){delete _0x566e7f[_0xde20('0x4a')]['id'];}return db[_0xde20('0x2b')][_0xde20('0x48')]({'where':{'id':_0x566e7f['params']['id']}})[_0xde20('0x23')](handleEntityNotFound(_0x1cc594,null))[_0xde20('0x23')](saveUpdates(_0x566e7f[_0xde20('0x4a')],null))[_0xde20('0x23')](respondWithResult(_0x1cc594,null))['catch'](handleError(_0x1cc594,null));};exports[_0xde20('0x24')]=function(_0x423fa0,_0x36c9ff){return db['Pause']['find']({'where':{'id':_0x423fa0[_0xde20('0x45')]['id']}})['then'](handleEntityNotFound(_0x36c9ff,null))[_0xde20('0x23')](removeEntity(_0x36c9ff,null))[_0xde20('0x43')](handleError(_0x36c9ff,null));};
\ No newline at end of file
+var _0x374a=['moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','Pauses','UserProfileResource','error','stack','name','index','map','Pause','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','zip-dir','request-promise'];(function(_0xf9431c,_0x4754b5){var _0x53fc33=function(_0x50ac6c){while(--_0x50ac6c){_0xf9431c['push'](_0xf9431c['shift']());}};_0x53fc33(++_0x4754b5);}(_0x374a,0x1a2));var _0xa374=function(_0x1c83ed,_0x2dae60){_0x1c83ed=_0x1c83ed-0x0;var _0x41a8af=_0x374a[_0x1c83ed];return _0x41a8af;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa374('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa374('0x1'));var moment=require(_0xa374('0x2'));var BPromise=require(_0xa374('0x3'));var Mustache=require(_0xa374('0x4'));var util=require(_0xa374('0x5'));var path=require('path');var sox=require(_0xa374('0x6'));var csv=require('to-csv');var ejs=require(_0xa374('0x7'));var fs=require('fs');var fs_extra=require(_0xa374('0x8'));var _=require('lodash');var squel=require(_0xa374('0x9'));var crypto=require(_0xa374('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xa374('0xb'));var toCsv=require(_0xa374('0xc'));var querystring=require(_0xa374('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa374('0xe'));var qs=require(_0xa374('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa374('0x10'));var logger=require(_0xa374('0x11'))(_0xa374('0x12'));var utils=require(_0xa374('0x13'));var config=require(_0xa374('0x14'));var licenseUtil=require(_0xa374('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d80a9,_0x325ac4){_0x325ac4=_0x325ac4||0xcc;return function(_0x12de9c){if(_0x12de9c){return _0x4d80a9[_0xa374('0x16')](_0x325ac4);}return _0x4d80a9[_0xa374('0x17')](_0x325ac4)[_0xa374('0x18')]();};}function respondWithResult(_0x4e098f,_0x29fc2c){_0x29fc2c=_0x29fc2c||0xc8;return function(_0x4d7c40){if(_0x4d7c40){return _0x4e098f['status'](_0x29fc2c)[_0xa374('0x19')](_0x4d7c40);}};}function respondWithFilteredResult(_0x14fc9c,_0xb51cc2){return function(_0x5c1a19){if(_0x5c1a19){var _0x33393e=typeof _0xb51cc2[_0xa374('0x1a')]===_0xa374('0x1b')&&typeof _0xb51cc2[_0xa374('0x1c')]==='undefined';var _0x4f0955=_0x5c1a19[_0xa374('0x1d')];var _0x3cda23=_0x33393e?0x0:_0xb51cc2[_0xa374('0x1a')];var _0x298bcd=_0x33393e?_0x5c1a19['count']:_0xb51cc2[_0xa374('0x1a')]+_0xb51cc2[_0xa374('0x1c')];var _0x91a462;if(_0x298bcd>=_0x4f0955){_0x298bcd=_0x4f0955;_0x91a462=0xc8;}else{_0x91a462=0xce;}_0x14fc9c[_0xa374('0x17')](_0x91a462);return _0x14fc9c[_0xa374('0x1e')]('Content-Range',_0x3cda23+'-'+_0x298bcd+'/'+_0x4f0955)[_0xa374('0x19')](_0x5c1a19);}return null;};}function patchUpdates(_0x2e3871){return function(_0x3f8b24){try{jsonpatch[_0xa374('0x1f')](_0x3f8b24,_0x2e3871,!![]);}catch(_0x44869b){return BPromise[_0xa374('0x20')](_0x44869b);}return _0x3f8b24[_0xa374('0x21')]();};}function saveUpdates(_0x5f4604,_0x46ecbc){return function(_0x627ae6){if(_0x627ae6){return _0x627ae6['update'](_0x5f4604)[_0xa374('0x22')](function(_0x35e442){return _0x35e442;});}return null;};}function removeEntity(_0x179440,_0x7dadaa){return function(_0x1bab93){if(_0x1bab93){return _0x1bab93[_0xa374('0x23')]()[_0xa374('0x22')](function(){var _0x31b0da=_0x1bab93[_0xa374('0x24')]({'plain':!![]});var _0x1e0d23=_0xa374('0x25');return db[_0xa374('0x26')][_0xa374('0x23')]({'where':{'type':_0x1e0d23,'resourceId':_0x31b0da['id']}})[_0xa374('0x22')](function(){return _0x1bab93;});})['then'](function(){_0x179440[_0xa374('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50723c,_0x1e521d){return function(_0x4da9f1){if(!_0x4da9f1){_0x50723c[_0xa374('0x16')](0x194);}return _0x4da9f1;};}function handleError(_0xeac022,_0x1f056f){_0x1f056f=_0x1f056f||0x1f4;return function(_0xff6ef){logger[_0xa374('0x27')](_0xff6ef[_0xa374('0x28')]);if(_0xff6ef[_0xa374('0x29')]){delete _0xff6ef[_0xa374('0x29')];}_0xeac022[_0xa374('0x17')](_0x1f056f)['send'](_0xff6ef);};}exports[_0xa374('0x2a')]=function(_0x2db012,_0x3ed94c){var _0x53dd55={},_0x597b86={},_0x49a373={'count':0x0,'rows':[]};var _0x32de9e=_[_0xa374('0x2b')](db[_0xa374('0x2c')][_0xa374('0x2d')],function(_0x2953a7){return{'name':_0x2953a7[_0xa374('0x2e')],'type':_0x2953a7[_0xa374('0x2f')][_0xa374('0x30')]};});_0x597b86['model']=_[_0xa374('0x2b')](_0x32de9e,'name');_0x597b86[_0xa374('0x31')]=_[_0xa374('0x32')](_0x2db012['query']);_0x597b86[_0xa374('0x33')]=_[_0xa374('0x34')](_0x597b86[_0xa374('0x35')],_0x597b86[_0xa374('0x31')]);_0x53dd55[_0xa374('0x36')]=_[_0xa374('0x34')](_0x597b86['model'],qs[_0xa374('0x37')](_0x2db012[_0xa374('0x31')][_0xa374('0x37')]));_0x53dd55[_0xa374('0x36')]=_0x53dd55['attributes'][_0xa374('0x38')]?_0x53dd55[_0xa374('0x36')]:_0x597b86[_0xa374('0x35')];if(!_0x2db012[_0xa374('0x31')][_0xa374('0x39')](_0xa374('0x3a'))){_0x53dd55[_0xa374('0x1c')]=qs[_0xa374('0x1c')](_0x2db012[_0xa374('0x31')][_0xa374('0x1c')]);_0x53dd55[_0xa374('0x1a')]=qs['offset'](_0x2db012[_0xa374('0x31')][_0xa374('0x1a')]);}_0x53dd55[_0xa374('0x3b')]=qs[_0xa374('0x3c')](_0x2db012[_0xa374('0x31')][_0xa374('0x3c')]);_0x53dd55[_0xa374('0x3d')]=qs[_0xa374('0x33')](_[_0xa374('0x3e')](_0x2db012[_0xa374('0x31')],_0x597b86[_0xa374('0x33')]),_0x32de9e);if(_0x2db012[_0xa374('0x31')][_0xa374('0x3f')]){_0x53dd55['where']=_[_0xa374('0x40')](_0x53dd55[_0xa374('0x3d')],{'$or':_[_0xa374('0x2b')](_0x32de9e,function(_0x28c6fb){if(_0x28c6fb['type']!==_0xa374('0x41')){var _0x1f0244={};_0x1f0244[_0x28c6fb[_0xa374('0x29')]]={'$like':'%'+_0x2db012[_0xa374('0x31')][_0xa374('0x3f')]+'%'};return _0x1f0244;}})});}_0x53dd55=_[_0xa374('0x40')]({},_0x53dd55,_0x2db012[_0xa374('0x42')]);var _0x4c9d33={'where':_0x53dd55['where']};return db[_0xa374('0x2c')][_0xa374('0x1d')](_0x4c9d33)[_0xa374('0x22')](function(_0x1976e4){_0x49a373['count']=_0x1976e4;if(_0x2db012[_0xa374('0x31')][_0xa374('0x43')]){_0x53dd55[_0xa374('0x44')]=[{'all':!![]}];}return db[_0xa374('0x2c')][_0xa374('0x45')](_0x53dd55);})[_0xa374('0x22')](function(_0x5eefbd){_0x49a373['rows']=_0x5eefbd;return _0x49a373;})[_0xa374('0x22')](respondWithFilteredResult(_0x3ed94c,_0x53dd55))[_0xa374('0x46')](handleError(_0x3ed94c,null));};exports[_0xa374('0x47')]=function(_0x4ab04d,_0x7d61b6){var _0x282897={'raw':!![],'where':{'id':_0x4ab04d[_0xa374('0x48')]['id']}},_0x2c4df1={};_0x2c4df1[_0xa374('0x35')]=_[_0xa374('0x32')](db[_0xa374('0x2c')][_0xa374('0x2d')]);_0x2c4df1[_0xa374('0x31')]=_[_0xa374('0x32')](_0x4ab04d[_0xa374('0x31')]);_0x2c4df1[_0xa374('0x33')]=_[_0xa374('0x34')](_0x2c4df1[_0xa374('0x35')],_0x2c4df1[_0xa374('0x31')]);_0x282897[_0xa374('0x36')]=_[_0xa374('0x34')](_0x2c4df1[_0xa374('0x35')],qs[_0xa374('0x37')](_0x4ab04d[_0xa374('0x31')][_0xa374('0x37')]));_0x282897[_0xa374('0x36')]=_0x282897[_0xa374('0x36')][_0xa374('0x38')]?_0x282897['attributes']:_0x2c4df1['model'];if(_0x4ab04d[_0xa374('0x31')][_0xa374('0x43')]){_0x282897[_0xa374('0x44')]=[{'all':!![]}];}_0x282897=_[_0xa374('0x40')]({},_0x282897,_0x4ab04d[_0xa374('0x42')]);return db[_0xa374('0x2c')]['find'](_0x282897)[_0xa374('0x22')](handleEntityNotFound(_0x7d61b6,null))[_0xa374('0x22')](respondWithResult(_0x7d61b6,null))[_0xa374('0x46')](handleError(_0x7d61b6,null));};exports[_0xa374('0x49')]=function(_0x244508,_0x31f157){return db[_0xa374('0x2c')][_0xa374('0x49')](_0x244508[_0xa374('0x4a')],{})['then'](function(_0x42aa1a){var _0x52956c=_0x244508[_0xa374('0x4b')][_0xa374('0x24')]({'plain':!![]});if(!_0x52956c)throw new Error(_0xa374('0x4c'));if(_0x52956c[_0xa374('0x4d')]===_0xa374('0x4b')){var _0x4dfa19=_0x42aa1a[_0xa374('0x24')]({'plain':!![]});var _0x28b2f4=_0xa374('0x25');return db[_0xa374('0x4e')][_0xa374('0x4f')]({'where':{'name':_0x28b2f4,'userProfileId':_0x52956c[_0xa374('0x50')]},'raw':!![]})[_0xa374('0x22')](function(_0x160e80){if(_0x160e80&&_0x160e80[_0xa374('0x51')]===0x0){return db['UserProfileResource'][_0xa374('0x49')]({'name':_0x4dfa19['name'],'resourceId':_0x4dfa19['id'],'type':_0x160e80[_0xa374('0x29')],'sectionId':_0x160e80['id']},{})[_0xa374('0x22')](function(){return _0x42aa1a;});}else{return _0x42aa1a;}})['catch'](function(_0x5eb688){logger[_0xa374('0x27')](_0xa374('0x52'),_0x5eb688);throw _0x5eb688;});}return _0x42aa1a;})[_0xa374('0x22')](respondWithResult(_0x31f157,0xc9))[_0xa374('0x46')](handleError(_0x31f157,null));};exports[_0xa374('0x53')]=function(_0x441143,_0x4ba582){if(_0x441143[_0xa374('0x4a')]['id']){delete _0x441143[_0xa374('0x4a')]['id'];}return db[_0xa374('0x2c')]['find']({'where':{'id':_0x441143['params']['id']}})[_0xa374('0x22')](handleEntityNotFound(_0x4ba582,null))[_0xa374('0x22')](saveUpdates(_0x441143[_0xa374('0x4a')],null))[_0xa374('0x22')](respondWithResult(_0x4ba582,null))[_0xa374('0x46')](handleError(_0x4ba582,null));};exports[_0xa374('0x23')]=function(_0x38dda3,_0xcbac14){return db[_0xa374('0x2c')]['find']({'where':{'id':_0x38dda3['params']['id']}})[_0xa374('0x22')](handleEntityNotFound(_0xcbac14,null))[_0xa374('0x22')](removeEntity(_0xcbac14,null))[_0xa374('0x46')](handleError(_0xcbac14,null));};
\ No newline at end of file
index 69ea0a8..f6ce241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./pause.attributes','exports','define','tools_pauses'];(function(_0x4b717b,_0x1eaeff){var _0x29135b=function(_0x2728be){while(--_0x2728be){_0x4b717b['push'](_0x4b717b['shift']());}};_0x29135b(++_0x1eaeff);}(_0x5fc3,0xa8));var _0x35fc=function(_0x15cbce,_0xda8402){_0x15cbce=_0x15cbce-0x0;var _0x257f29=_0x5fc3[_0x15cbce];return _0x257f29;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('Pause',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x53ec=['bluebird','path','../../config/environment','./pause.attributes','define','Pause','lodash','util','../../config/logger','api','moment'];(function(_0x4cf1b0,_0x5cfd61){var _0x5e239c=function(_0x348d6c){while(--_0x348d6c){_0x4cf1b0['push'](_0x4cf1b0['shift']());}};_0x5e239c(++_0x5cfd61);}(_0x53ec,0x192));var _0xc53e=function(_0x5e8874,_0x134292){_0x5e8874=_0x5e8874-0x0;var _0x4bf1de=_0x53ec[_0x5e8874];return _0x4bf1de;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b3a0342..ae3a2cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x3ee8cc,_0x3b8b1a){var _0x43fd74=function(_0x20585b){while(--_0x20585b){_0x3ee8cc['push'](_0x3ee8cc['shift']());}};_0x43fd74(++_0x3b8b1a);}(_0xb10b,0x12a));var _0xbb10=function(_0x58675f,_0x390355){_0x58675f=_0x58675f-0x0;var _0x1cc7f0=_0xb10b[_0x58675f];return _0x1cc7f0;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x347d82,_0x542561){var _0x7e51a8=function(_0x94a364){while(--_0x94a364){_0x347d82['push'](_0x347d82['shift']());}};_0x7e51a8(++_0x542561);}(_0xb10b,0x12a));var _0xbb10=function(_0x59e174,_0x43a286){_0x59e174=_0x59e174-0x0;var _0x2d581f=_0xb10b[_0x59e174];return _0x2d581f;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 6fbc9bc..b6ec1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','isAuthenticated','index','get','/:id','show','download','diskStorage','join','root','originalname','basename','extname','now','upload','post','put','update','delete','exports'];(function(_0x14e0f7,_0x380499){var _0x4e1dc1=function(_0x4807c5){while(--_0x4807c5){_0x14e0f7['push'](_0x14e0f7['shift']());}};_0x4e1dc1(++_0x380499);}(_0x5c12,0x188));var _0x25c1=function(_0x26f702,_0x3919bf){_0x26f702=_0x26f702-0x0;var _0x11417d=_0x5c12[_0x26f702];return _0x11417d;};'use strict';var multer=require('multer');var util=require(_0x25c1('0x0'));var path=require(_0x25c1('0x1'));var timeout=require('connect-timeout');var express=require(_0x25c1('0x2'));var router=express[_0x25c1('0x3')]();var fs_extra=require(_0x25c1('0x4'));var auth=require(_0x25c1('0x5'));var interaction=require(_0x25c1('0x6'));var config=require(_0x25c1('0x7'));var controller=require(_0x25c1('0x8'));router['get']('/',auth[_0x25c1('0x9')](),controller[_0x25c1('0xa')]);router[_0x25c1('0xb')]('/webhook',controller['webhookGet']);router[_0x25c1('0xb')](_0x25c1('0xc'),auth[_0x25c1('0x9')](),controller[_0x25c1('0xd')]);router[_0x25c1('0xb')]('/:id/download',auth[_0x25c1('0x9')](),controller[_0x25c1('0xe')]);var upload=multer({'storage':multer[_0x25c1('0xf')]({'destination':function(_0x81f0f4,_0x2872b2,_0x5e44e2){_0x5e44e2(null,path[_0x25c1('0x10')](config[_0x25c1('0x11')],'server/files/plugins'));},'filename':function(_0x256ecd,_0x209af5,_0x323d3c){_0x209af5[_0x25c1('0x12')]=_0x209af5['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x323d3c(null,util['format']('%s-%s%s',path[_0x25c1('0x13')](_0x209af5[_0x25c1('0x12')],path[_0x25c1('0x14')](_0x209af5[_0x25c1('0x12')])),Date[_0x25c1('0x15')](),path['extname'](_0x209af5[_0x25c1('0x12')])));}})});router['post']('/',upload['single']('file'),controller[_0x25c1('0x16')]);router[_0x25c1('0x17')]('/webhook',controller['webhookPost']);router[_0x25c1('0x18')]('/:id',auth[_0x25c1('0x9')](),controller[_0x25c1('0x19')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x25c1('0x1a')]);module[_0x25c1('0x1b')]=router;
\ No newline at end of file
+var _0x34e5=['%s-%s%s','basename','extname','now','post','upload','webhookPost','put','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','/:id','/:id/download','download','root','server/files/plugins','originalname','replace','format'];(function(_0x38aeea,_0x57522a){var _0x5e8d2c=function(_0xff08ce){while(--_0xff08ce){_0x38aeea['push'](_0x38aeea['shift']());}};_0x5e8d2c(++_0x57522a);}(_0x34e5,0x172));var _0x534e=function(_0x5d9714,_0x5c4db4){_0x5d9714=_0x5d9714-0x0;var _0x51af9e=_0x34e5[_0x5d9714];return _0x51af9e;};'use strict';var multer=require('multer');var util=require(_0x534e('0x0'));var path=require('path');var timeout=require(_0x534e('0x1'));var express=require(_0x534e('0x2'));var router=express[_0x534e('0x3')]();var fs_extra=require(_0x534e('0x4'));var auth=require(_0x534e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x534e('0x6'));var controller=require(_0x534e('0x7'));router[_0x534e('0x8')]('/',auth[_0x534e('0x9')](),controller[_0x534e('0xa')]);router[_0x534e('0x8')](_0x534e('0xb'),controller['webhookGet']);router[_0x534e('0x8')](_0x534e('0xc'),auth[_0x534e('0x9')](),controller['show']);router['get'](_0x534e('0xd'),auth['isAuthenticated'](),controller[_0x534e('0xe')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xb30dd6,_0x310b6d,_0x27561c){_0x27561c(null,path['join'](config[_0x534e('0xf')],_0x534e('0x10')));},'filename':function(_0x73b135,_0x28b8ff,_0x2c4539){_0x28b8ff['originalname']=_0x28b8ff[_0x534e('0x11')][_0x534e('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2c4539(null,util[_0x534e('0x13')](_0x534e('0x14'),path[_0x534e('0x15')](_0x28b8ff[_0x534e('0x11')],path[_0x534e('0x16')](_0x28b8ff[_0x534e('0x11')])),Date[_0x534e('0x17')](),path['extname'](_0x28b8ff[_0x534e('0x11')])));}})});router[_0x534e('0x18')]('/',upload['single']('file'),controller[_0x534e('0x19')]);router[_0x534e('0x18')](_0x534e('0xb'),controller[_0x534e('0x1a')]);router[_0x534e('0x1b')](_0x534e('0xc'),auth[_0x534e('0x9')](),controller['update']);router[_0x534e('0x1c')](_0x534e('0xc'),auth[_0x534e('0x9')](),controller[_0x534e('0x1c')]);module[_0x534e('0x1d')]=router;
\ No newline at end of file
index 2c61a98..cb03ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86cf=['BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'];(function(_0x28fbbf,_0x11f896){var _0x543af6=function(_0x27fa74){while(--_0x27fa74){_0x28fbbf['push'](_0x28fbbf['shift']());}};_0x543af6(++_0x11f896);}(_0x86cf,0xbc));var _0xf86c=function(_0x260b3f,_0x5574b7){_0x260b3f=_0x260b3f-0x0;var _0x3e1aa9=_0x86cf[_0x260b3f];return _0x3e1aa9;};'use strict';var Sequelize=require(_0xf86c('0x0'));module[_0xf86c('0x1')]={'name':{'type':Sequelize[_0xf86c('0x2')]},'type':{'type':Sequelize[_0xf86c('0x3')](_0xf86c('0x4'),_0xf86c('0x5'))},'description':{'type':Sequelize[_0xf86c('0x6')]},'version':{'type':Sequelize[_0xf86c('0x6')]},'path':{'type':Sequelize[_0xf86c('0x2')],'comment':_0xf86c('0x7')},'active':{'type':Sequelize[_0xf86c('0x8')],'defaultValue':0x0,'comment':_0xf86c('0x9')},'sidebar':{'type':Sequelize[_0xf86c('0x3')](_0xf86c('0xa'),_0xf86c('0xb'),_0xf86c('0xc'),'never'),'defaultValue':_0xf86c('0xc'),'comment':_0xf86c('0xd')},'icon':{'type':Sequelize[_0xf86c('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0xf86c('0x2')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0xf86c('0x2')]}};
\ No newline at end of file
+var _0x4f37=['sequelize','exports','STRING','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','ENUM','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'];(function(_0x3680d4,_0x2ccdc3){var _0x3ecefb=function(_0x41cfae){while(--_0x41cfae){_0x3680d4['push'](_0x3680d4['shift']());}};_0x3ecefb(++_0x2ccdc3);}(_0x4f37,0x15c));var _0x74f3=function(_0x26333b,_0x56470d){_0x26333b=_0x26333b-0x0;var _0x404306=_0x4f37[_0x26333b];return _0x404306;};'use strict';var Sequelize=require(_0x74f3('0x0'));module[_0x74f3('0x1')]={'name':{'type':Sequelize[_0x74f3('0x2')]},'type':{'type':Sequelize['ENUM']('html','script')},'description':{'type':Sequelize[_0x74f3('0x3')]},'version':{'type':Sequelize[_0x74f3('0x3')]},'path':{'type':Sequelize[_0x74f3('0x2')],'comment':_0x74f3('0x4')},'active':{'type':Sequelize[_0x74f3('0x5')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0x74f3('0x6')](_0x74f3('0x7'),_0x74f3('0x8'),_0x74f3('0x9'),_0x74f3('0xa')),'defaultValue':_0x74f3('0x9'),'comment':_0x74f3('0xb')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0x74f3('0x2')]},'agentUrl':{'type':Sequelize[_0x74f3('0x2')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 68cd411..7388b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5136=['finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','extname','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','lstatSync','Invalid\x20plugin\x20structure','isDirectory','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','test','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','scriptPath','plugins','create','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','method','format','eml-format','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','archiver','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Plugins','UserProfileResource','stack','name','send','index','map','Plugin','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','keys','download','find','server/files/plugins','%s.zip','createWriteStream','zip','warning','ENOENT','error','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','join','root','basename'];(function(_0x1e8fa0,_0x366ff7){var _0x1dc72c=function(_0x20799e){while(--_0x20799e){_0x1e8fa0['push'](_0x1e8fa0['shift']());}};_0x1dc72c(++_0x366ff7);}(_0x5136,0xff));var _0x6513=function(_0xb87eb0,_0x181770){_0xb87eb0=_0xb87eb0-0x0;var _0x54b9f4=_0x5136[_0xb87eb0];return _0x54b9f4;};'use strict';var emlformat=require(_0x6513('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6513('0x1'));var rp=require('request-promise');var moment=require(_0x6513('0x2'));var BPromise=require(_0x6513('0x3'));var Mustache=require(_0x6513('0x4'));var util=require('util');var path=require(_0x6513('0x5'));var sox=require('sox');var csv=require(_0x6513('0x6'));var ejs=require(_0x6513('0x7'));var fs=require('fs');var fs_extra=require(_0x6513('0x8'));var _=require(_0x6513('0x9'));var squel=require(_0x6513('0xa'));var crypto=require(_0x6513('0xb'));var jsforce=require(_0x6513('0xc'));var deskjs=require(_0x6513('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6513('0xe'));var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0x6513('0xf'));var Redis=require(_0x6513('0x10'));var authService=require(_0x6513('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6513('0x12'));var logger=require(_0x6513('0x13'))('api');var utils=require(_0x6513('0x14'));var config=require(_0x6513('0x15'));var licenseUtil=require(_0x6513('0x16'));var db=require(_0x6513('0x17'))['db'];config['redis']=_[_0x6513('0x18')](config[_0x6513('0x19')],{'host':_0x6513('0x1a'),'port':0x18eb});var socket=require(_0x6513('0x1b'))(new Redis(config[_0x6513('0x19')]));require(_0x6513('0x1c'))[_0x6513('0x1d')](socket);function respondWithStatusCode(_0x3332b3,_0x32418e){_0x32418e=_0x32418e||0xcc;return function(_0x422c74){if(_0x422c74){return _0x3332b3[_0x6513('0x1e')](_0x32418e);}return _0x3332b3[_0x6513('0x1f')](_0x32418e)[_0x6513('0x20')]();};}function respondWithResult(_0x1c30e2,_0x58025b){_0x58025b=_0x58025b||0xc8;return function(_0xaf6c69){if(_0xaf6c69){return _0x1c30e2[_0x6513('0x1f')](_0x58025b)[_0x6513('0x21')](_0xaf6c69);}};}function respondWithFilteredResult(_0xb2c406,_0x974612){return function(_0x1ac787){if(_0x1ac787){var _0x4e46bb=typeof _0x974612['offset']===_0x6513('0x22')&&typeof _0x974612['limit']===_0x6513('0x22');var _0x393ae3=_0x1ac787['count'];var _0x277d8e=_0x4e46bb?0x0:_0x974612[_0x6513('0x23')];var _0x3b2fbc=_0x4e46bb?_0x1ac787[_0x6513('0x24')]:_0x974612[_0x6513('0x23')]+_0x974612[_0x6513('0x25')];var _0x5e298a;if(_0x3b2fbc>=_0x393ae3){_0x3b2fbc=_0x393ae3;_0x5e298a=0xc8;}else{_0x5e298a=0xce;}_0xb2c406[_0x6513('0x1f')](_0x5e298a);return _0xb2c406[_0x6513('0x26')](_0x6513('0x27'),_0x277d8e+'-'+_0x3b2fbc+'/'+_0x393ae3)[_0x6513('0x21')](_0x1ac787);}return null;};}function patchUpdates(_0x484492){return function(_0x16459e){try{jsonpatch[_0x6513('0x28')](_0x16459e,_0x484492,!![]);}catch(_0x4aaf14){return BPromise[_0x6513('0x29')](_0x4aaf14);}return _0x16459e[_0x6513('0x2a')]();};}function saveUpdates(_0x3f8a83,_0x46160f){return function(_0x2eb2b7){if(_0x2eb2b7){return _0x2eb2b7[_0x6513('0x2b')](_0x3f8a83)[_0x6513('0x2c')](function(_0x91f710){return _0x91f710;});}return null;};}function removeEntity(_0x1ff194,_0x2b5f10){return function(_0x35b0aa){if(_0x35b0aa){return _0x35b0aa[_0x6513('0x2d')]()[_0x6513('0x2c')](function(){var _0x4494d2=_0x35b0aa[_0x6513('0x2e')]({'plain':!![]});var _0x53b004=_0x6513('0x2f');return db[_0x6513('0x30')][_0x6513('0x2d')]({'where':{'type':_0x53b004,'resourceId':_0x4494d2['id']}})[_0x6513('0x2c')](function(){return _0x35b0aa;});})[_0x6513('0x2c')](function(){_0x1ff194['status'](0xcc)[_0x6513('0x20')]();});}};}function handleEntityNotFound(_0x19f82a,_0x3bb95c){return function(_0x11ce31){if(!_0x11ce31){_0x19f82a[_0x6513('0x1e')](0x194);}return _0x11ce31;};}function handleError(_0x283216,_0x522fc0){_0x522fc0=_0x522fc0||0x1f4;return function(_0x2b5827){logger['error'](_0x2b5827[_0x6513('0x31')]);if(_0x2b5827[_0x6513('0x32')]){delete _0x2b5827[_0x6513('0x32')];}_0x283216['status'](_0x522fc0)[_0x6513('0x33')](_0x2b5827);};}exports[_0x6513('0x34')]=function(_0x344f54,_0x232b9f){var _0x2c6c50={},_0x46cdfe={},_0x35efa6={'count':0x0,'rows':[]};var _0x556c8a=_[_0x6513('0x35')](db[_0x6513('0x36')][_0x6513('0x37')],function(_0xcfaec2){return{'name':_0xcfaec2[_0x6513('0x38')],'type':_0xcfaec2[_0x6513('0x39')][_0x6513('0x3a')]};});_0x46cdfe[_0x6513('0x3b')]=_['map'](_0x556c8a,_0x6513('0x32'));_0x46cdfe[_0x6513('0x3c')]=_['keys'](_0x344f54[_0x6513('0x3c')]);_0x46cdfe['filters']=_['intersection'](_0x46cdfe['model'],_0x46cdfe['query']);_0x2c6c50[_0x6513('0x3d')]=_[_0x6513('0x3e')](_0x46cdfe[_0x6513('0x3b')],qs[_0x6513('0x3f')](_0x344f54['query'][_0x6513('0x3f')]));_0x2c6c50['attributes']=_0x2c6c50[_0x6513('0x3d')][_0x6513('0x40')]?_0x2c6c50[_0x6513('0x3d')]:_0x46cdfe[_0x6513('0x3b')];if(!_0x344f54[_0x6513('0x3c')][_0x6513('0x41')](_0x6513('0x42'))){_0x2c6c50['limit']=qs[_0x6513('0x25')](_0x344f54[_0x6513('0x3c')][_0x6513('0x25')]);_0x2c6c50['offset']=qs[_0x6513('0x23')](_0x344f54[_0x6513('0x3c')][_0x6513('0x23')]);}_0x2c6c50['order']=qs['sort'](_0x344f54[_0x6513('0x3c')][_0x6513('0x43')]);_0x2c6c50['where']=qs['filters'](_[_0x6513('0x44')](_0x344f54[_0x6513('0x3c')],_0x46cdfe[_0x6513('0x45')]),_0x556c8a);if(_0x344f54[_0x6513('0x3c')][_0x6513('0x46')]){_0x2c6c50[_0x6513('0x47')]=_[_0x6513('0x48')](_0x2c6c50['where'],{'$or':_[_0x6513('0x35')](_0x556c8a,function(_0x5bf8be){if(_0x5bf8be[_0x6513('0x39')]!==_0x6513('0x49')){var _0x43fbc2={};_0x43fbc2[_0x5bf8be[_0x6513('0x32')]]={'$like':'%'+_0x344f54[_0x6513('0x3c')]['filter']+'%'};return _0x43fbc2;}})});}_0x2c6c50=_[_0x6513('0x48')]({},_0x2c6c50,_0x344f54[_0x6513('0x4a')]);var _0x16ef85={'where':_0x2c6c50[_0x6513('0x47')]};return db['Plugin']['count'](_0x16ef85)[_0x6513('0x2c')](function(_0x5af988){_0x35efa6[_0x6513('0x24')]=_0x5af988;if(_0x344f54[_0x6513('0x3c')]['includeAll']){_0x2c6c50[_0x6513('0x4b')]=[{'all':!![]}];}return db[_0x6513('0x36')][_0x6513('0x4c')](_0x2c6c50);})[_0x6513('0x2c')](function(_0x4bad0d){_0x35efa6['rows']=_0x4bad0d;return _0x35efa6;})[_0x6513('0x2c')](respondWithFilteredResult(_0x232b9f,_0x2c6c50))[_0x6513('0x4d')](handleError(_0x232b9f,null));};exports[_0x6513('0x4e')]=function(_0x3facc7,_0x43b300){var _0x35e1c0={'raw':!![],'where':{'id':_0x3facc7[_0x6513('0x4f')]['id']}},_0x376618={};_0x376618[_0x6513('0x3b')]=_[_0x6513('0x50')](db[_0x6513('0x36')]['rawAttributes']);_0x376618[_0x6513('0x3c')]=_[_0x6513('0x50')](_0x3facc7[_0x6513('0x3c')]);_0x376618[_0x6513('0x45')]=_[_0x6513('0x3e')](_0x376618[_0x6513('0x3b')],_0x376618[_0x6513('0x3c')]);_0x35e1c0['attributes']=_[_0x6513('0x3e')](_0x376618['model'],qs['fields'](_0x3facc7[_0x6513('0x3c')][_0x6513('0x3f')]));_0x35e1c0[_0x6513('0x3d')]=_0x35e1c0['attributes'][_0x6513('0x40')]?_0x35e1c0['attributes']:_0x376618[_0x6513('0x3b')];if(_0x3facc7[_0x6513('0x3c')]['includeAll']){_0x35e1c0[_0x6513('0x4b')]=[{'all':!![]}];}_0x35e1c0=_['merge']({},_0x35e1c0,_0x3facc7[_0x6513('0x4a')]);return db['Plugin']['find'](_0x35e1c0)['then'](handleEntityNotFound(_0x43b300,null))['then'](respondWithResult(_0x43b300,null))['catch'](handleError(_0x43b300,null));};exports[_0x6513('0x51')]=function(_0x13ce36,_0x19c90c,_0x3e0a24){return db[_0x6513('0x36')][_0x6513('0x52')]({'where':{'id':_0x13ce36[_0x6513('0x4f')]['id']},'attributes':[_0x6513('0x32'),'path'],'raw':!![]})['then'](handleEntityNotFound(_0x19c90c,null))[_0x6513('0x2c')](function(_0x455853){if(_0x455853){var _0x153d0c=path['join'](config['root'],_0x6513('0x53'),util['format'](_0x6513('0x54'),path['basename'](_0x455853[_0x6513('0x5')])));var _0x2f8f13=fs[_0x6513('0x55')](_0x153d0c);var _0xf5c813=archiver(_0x6513('0x56'),{'zlib':{'level':0x9}});_0xf5c813['on'](_0x6513('0x57'),function(_0x4f4129){if(_0x4f4129['code']===_0x6513('0x58')){logger[_0x6513('0x59')](_0x4f4129);}else{throw new db[(_0x6513('0x5a'))][(_0x6513('0x5b'))](_0x6513('0x5c'));}});_0xf5c813['on'](_0x6513('0x59'),function(_0x93d521){throw new db[(_0x6513('0x5a'))][(_0x6513('0x5b'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0xf5c813[_0x6513('0x5d')](_0x2f8f13);_0xf5c813[_0x6513('0x5e')](_0x6513('0x5f'),{'cwd':path[_0x6513('0x60')](config[_0x6513('0x61')],_0x6513('0x53'),path['dirname'](_0x455853[_0x6513('0x5')])),'ignore':[path[_0x6513('0x60')](path[_0x6513('0x62')](_0x455853['path']),'node_modules/**/*'),path[_0x6513('0x60')](path['basename'](_0x455853['path']),'attachments/**/*')],'nodir':!![]})[_0x6513('0x63')]();_0x2f8f13['on'](_0x6513('0x64'),function(){if(!fs[_0x6513('0x65')](_0x153d0c)){throw new db['Sequelize'][(_0x6513('0x5b'))](_0x6513('0x66'));}return _0x19c90c[_0x6513('0x51')](_0x153d0c,util['format'](_0x6513('0x54'),path['basename'](_0x455853[_0x6513('0x5')])),function(_0xfc66c1){if(_0xfc66c1){throw new db['Sequelize'][(_0x6513('0x5b'))](_0x6513('0x67'));}fs[_0x6513('0x68')](_0x153d0c);logger[_0x6513('0x69')](_0x6513('0x6a'));logger['info'](_0x6513('0x6b'));});});}return null;})['catch'](handleError(_0x19c90c,null));};exports[_0x6513('0x6c')]=function(_0x396f99,_0xefb23d,_0x5c1efc){var _0x5ea43d=path[_0x6513('0x62')](_0x396f99[_0x6513('0x6d')]['filename'],path[_0x6513('0x6e')](_0x396f99[_0x6513('0x6d')]['filename']));var _0x5d862b=path[_0x6513('0x60')](config['root'],_0x6513('0x53'),_0x396f99[_0x6513('0x6d')][_0x6513('0x6f')]);var _0x18e1c6=path[_0x6513('0x60')](config[_0x6513('0x61')],_0x6513('0x53'),_0x5ea43d);logger[_0x6513('0x69')](_0x6513('0x70'),_0x5d862b);logger[_0x6513('0x69')](_0x6513('0x71'),_0x18e1c6);try{fs[_0x6513('0x72')](_0x5d862b,parseInt('0777',0x8));extract(_0x5d862b,{'dir':_0x18e1c6},function(_0x2c900b){if(_0x2c900b){logger[_0x6513('0x59')](_0x2c900b);handleError(_0x2c900b,!![]);};var _0x561996=fs[_0x6513('0x73')](_0x18e1c6);if(_0x561996[_0x6513('0x40')]>0x1){removeReferences(_0x5d862b,_0x18e1c6);logger[_0x6513('0x59')]('Invalid\x20plugin\x20structure');return _0x5c1efc(new Error('Invalid\x20plugin\x20structure'));}var _0x2e72df=fs[_0x6513('0x74')](path['join'](_0x18e1c6,_0x561996[0x0]));if(_0x2e72df['isFile']()){removeReferences(_0x5d862b,_0x18e1c6);logger[_0x6513('0x59')]('Invalid\x20plugin\x20structure');return _0x5c1efc(new Error(_0x6513('0x75')));}if(_0x2e72df[_0x6513('0x76')]()){var _0x8d83ff=fs[_0x6513('0x73')](path['join'](_0x18e1c6,_0x561996[0x0]));if(_0x8d83ff[_0x6513('0x40')]===0x0){removeReferences(_0x5d862b,_0x18e1c6);logger[_0x6513('0x59')](_0x6513('0x75'));return _0x5c1efc(new Error(_0x6513('0x75')));}var _0x2b5e06=_0x8d83ff['some'](function(_0x569f4f){return _0x569f4f===_0x6513('0x77');});if(!_0x2b5e06){return _0x5c1efc(new Error(_0x6513('0x78')));}var _0x365849=fs[_0x6513('0x79')](path[_0x6513('0x60')](_0x18e1c6,_0x561996[0x0],'manifest.json'));var _0xfffbe5=JSON[_0x6513('0x7a')](_0x365849);if(_0x6513('0x22')==typeof _0xfffbe5[_0x6513('0x32')]){return _0x5c1efc(new Error(_0x6513('0x7b')));}if(_0x6513('0x22')==typeof _0xfffbe5[_0x6513('0x39')]){return _0x5c1efc(new Error(_0x6513('0x7c')));}if('undefined'==typeof _0xfffbe5[_0x6513('0x7d')]){return _0x5c1efc(new Error(_0x6513('0x7e')));}if(_0x6513('0x22')==typeof _0xfffbe5[_0x6513('0x7f')]){return _0x5c1efc(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0xfffbe5[_0x6513('0x39')]===_0x6513('0x80')){if('undefined'==typeof _0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')]){return _0x5c1efc(new Error(_0x6513('0x82')));}if(_0x6513('0x22')==typeof _0xfffbe5['parameters']['views'][_0x6513('0x83')]&&_0x6513('0x22')==typeof _0xfffbe5['parameters'][_0x6513('0x81')][_0x6513('0x84')]){return _0x5c1efc(new Error(_0x6513('0x85')));}}else if(_0xfffbe5['type']===_0x6513('0x86')){if('undefined'==typeof _0xfffbe5[_0x6513('0x7f')][_0x6513('0x87')]){return _0x5c1efc(new Error(_0x6513('0x88')));}if(_0x6513('0x22')==typeof _0xfffbe5['parameters']['scriptPath']){return _0x5c1efc(new Error(_0x6513('0x89')));}}else{return _0x5c1efc(new Error(_0x6513('0x8a')));}var _0x32cb66=_0xfffbe5[_0x6513('0x32')];var _0x14015e=_0xfffbe5['description'];var _0x58f9b5=_0xfffbe5[_0x6513('0x39')];var _0x44fbc7=_0xfffbe5[_0x6513('0x8b')]?_0xfffbe5[_0x6513('0x8b')]:_0x6513('0x8c');var _0x407e4c=_0xfffbe5[_0x6513('0x8d')]?_0xfffbe5['icon']:'icon-apps';var _0x5c680e='';var _0x440110='';var _0x1141b7='';var _0x55d4a9='';var _0x238fb3=_0xfffbe5[_0x6513('0x7d')];if(_0x58f9b5===_0x6513('0x80')){if('undefined'!=typeof _0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')][_0x6513('0x83')]){var _0x3e27c3=_0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')][_0x6513('0x83')];if(!/^(f|ht)tps?:\/\//i[_0x6513('0x8e')](_0x3e27c3)){_0x5c680e=path[_0x6513('0x60')]('plugins',_0x5ea43d,_0x561996[0x0],_0x3e27c3);}else{_0x5c680e=_0x3e27c3;}}else{logger[_0x6513('0x69')](_0x6513('0x8f'));}if('undefined'!=typeof _0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')]['agent']){var _0x3c7be4=_0xfffbe5['parameters']['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0x6513('0x8e')](_0x3c7be4)){_0x440110=path[_0x6513('0x60')]('plugins',_0x5ea43d,_0x561996[0x0],_0x3c7be4);}else{_0x440110=_0x3c7be4;}}else{logger[_0x6513('0x69')](_0x6513('0x90'));}}else if(_0x58f9b5==='script'){_0x1141b7=_0xfffbe5[_0x6513('0x7f')][_0x6513('0x87')];_0x55d4a9=_0xfffbe5[_0x6513('0x7f')][_0x6513('0x91')];if(_0x6513('0x22')!=typeof _0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')]){if('undefined'!=typeof _0xfffbe5['parameters'][_0x6513('0x81')]['admin']){var _0x3e27c3=_0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')][_0x6513('0x83')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3e27c3)){_0x5c680e=path[_0x6513('0x60')](_0x6513('0x92'),_0x5ea43d,_0x561996[0x0],_0x3e27c3);}else{_0x5c680e=_0x3e27c3;}}if(_0x6513('0x22')!=typeof _0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')][_0x6513('0x84')]){var _0x3c7be4=_0xfffbe5[_0x6513('0x7f')][_0x6513('0x81')][_0x6513('0x84')];if(!/^(f|ht)tps?:\/\//i[_0x6513('0x8e')](_0x3c7be4)){_0x440110=path[_0x6513('0x60')](_0x6513('0x92'),_0x5ea43d,_0x561996[0x0],_0x3c7be4);}else{_0x440110=_0x3c7be4;}}}}var _0x5162eb={'name':_0x32cb66,'description':_0x14015e,'path':path[_0x6513('0x60')](_0x5ea43d,_0x561996[0x0]),'type':_0x58f9b5,'sidebar':_0x44fbc7,'icon':_0x407e4c,'adminUrl':_0x5c680e,'agentUrl':_0x440110,'scriptName':_0x1141b7,'scriptPath':_0x55d4a9,'version':_0x238fb3};removeReferences(_0x5d862b,null);return db[_0x6513('0x36')][_0x6513('0x93')](_0x5162eb)[_0x6513('0x2c')](function(_0x3b62fc){var _0xecd289={'role':_0x396f99['body'][_0x6513('0x94')],'userProfileId':_0x396f99[_0x6513('0x95')][_0x6513('0x96')]};if(!_0xecd289)throw new Error(_0x6513('0x97'));if(_0xecd289[_0x6513('0x94')]===_0x6513('0x98')){var _0x1aa5e5=_0x3b62fc['get']({'plain':!![]});return db[_0x6513('0x99')][_0x6513('0x52')]({'where':{'name':_0x6513('0x2f'),'userProfileId':_0xecd289[_0x6513('0x96')]},'raw':!![]})[_0x6513('0x2c')](function(_0x28f95c){if(_0x28f95c&&_0x28f95c[_0x6513('0x9a')]===0x0){return db['UserProfileResource'][_0x6513('0x93')]({'name':_0x1aa5e5[_0x6513('0x32')],'resourceId':_0x1aa5e5['id'],'type':_0x28f95c[_0x6513('0x32')],'sectionId':_0x28f95c['id']},{})[_0x6513('0x2c')](function(){return _0x3b62fc;});}else{return _0x3b62fc;}})[_0x6513('0x4d')](function(_0x16096a){logger[_0x6513('0x59')](_0x6513('0x9b'),_0x16096a);throw _0x16096a;});}return _0x3b62fc;})[_0x6513('0x2c')](respondWithResult(_0xefb23d,null))[_0x6513('0x4d')](handleError(_0xefb23d,null));}});}catch(_0x50590a){_0xefb23d[_0x6513('0x1f')](0x1f4)[_0x6513('0x33')](_0x50590a);}};function removeReferences(_0x2bf69c,_0x1de184){try{if(_0x2bf69c){fs['unlinkSync'](_0x2bf69c);logger[_0x6513('0x69')](_0x6513('0x9c'));}if(_0x1de184){rimraf(_0x1de184,function(){});logger[_0x6513('0x69')](_0x6513('0x9d'));}}catch(_0x5bb3b3){logger['error'](_0x5bb3b3);}}exports[_0x6513('0x2b')]=function(_0x2e4648,_0x54f55a,_0x4c7dcc){return db[_0x6513('0x36')][_0x6513('0x52')]({'where':{'id':_0x2e4648['params']['id']}})[_0x6513('0x2c')](handleEntityNotFound(_0x54f55a,null))[_0x6513('0x2c')](saveUpdates(_0x2e4648[_0x6513('0x95')],null))[_0x6513('0x2c')](respondWithResult(_0x54f55a,null))['catch'](handleError(_0x54f55a,null));};exports[_0x6513('0x9e')]=function(_0x48112d,_0x1d6926,_0x3d8b69){return db[_0x6513('0x36')][_0x6513('0x52')]({'where':{'id':_0x48112d[_0x6513('0x4f')]['id']}})['then'](function(_0x32c74c){if(_0x32c74c){return _0x32c74c[_0x6513('0x2d')]();}})[_0x6513('0x2c')](function(_0x1c638f){rimraf(path[_0x6513('0x60')](config[_0x6513('0x61')],'server/files/plugins',path[_0x6513('0x9f')](_0x1c638f['path'])),function(){});return _0x1c638f;})['then'](handleEntityNotFound(_0x1d6926,null))['then'](respondWithStatusCode(_0x1d6926,null))[_0x6513('0x4d')](handleError(_0x1d6926,null));};exports[_0x6513('0xa0')]=function(_0x9b95f1,_0x5a5cd0,_0x222f98){return BPromise[_0x6513('0xa1')]()[_0x6513('0x2c')](function(){if(!_0x9b95f1['query'][_0x6513('0x5')]){throw new Error(_0x6513('0xa2'));}if(!_0x9b95f1[_0x6513('0x3c')]['port']){throw new Error(_0x6513('0xa3'));}var _0x27662f=_0x9b95f1[_0x6513('0x3c')][_0x6513('0xa4')]?_0x9b95f1['query']['hostname']+':'+_0x9b95f1[_0x6513('0x3c')][_0x6513('0xa5')]:_0x6513('0xa6')+_0x9b95f1[_0x6513('0x3c')][_0x6513('0xa5')];var _0x1e9ea6=_0x9b95f1[_0x6513('0x3c')][_0x6513('0x21')]?_0x9b95f1[_0x6513('0x3c')]['json']:!![];var _0x3fa64d=_0x9b95f1['query'][_0x6513('0xa7')]?_0x9b95f1[_0x6513('0x3c')][_0x6513('0xa7')]:null;var _0x27b1ad={'method':_0x9b95f1['method'],'uri':util['format'](_0x6513('0xa8'),_0x27662f,_0x9b95f1['query'][_0x6513('0x5')]),'json':_0x1e9ea6,'resolveWithFullResponse':!![],'encoding':_0x3fa64d,'qs':_0x9b95f1['query']};if(_0x9b95f1[_0x6513('0xa9')]){_0x27b1ad[_0x6513('0xa9')]=_0x9b95f1[_0x6513('0xa9')];if(_0x27b1ad[_0x6513('0xa9')][_0x6513('0xaa')]){delete _0x27b1ad[_0x6513('0xa9')][_0x6513('0xaa')];}}if(_0x27b1ad[_0x6513('0xa9')][_0x6513('0xab')]){delete _0x27b1ad[_0x6513('0xa9')][_0x6513('0xab')];}return rp(_0x27b1ad);})[_0x6513('0x2c')](function(_0x446e5e){if(_0x446e5e){_0x5a5cd0[_0x6513('0x26')](_0x446e5e[_0x6513('0xa9')]);logger[_0x6513('0x69')](_0x446e5e[_0x6513('0x95')]);if(_[_0x6513('0xac')](_0x9b95f1['query']['path'],_0x6513('0x51'))&&_0x446e5e['statusCode']==0x1f4){return _0x5a5cd0['sendStatus'](_0x446e5e[_0x6513('0xad')]);}else{return _0x5a5cd0[_0x6513('0x1f')](_0x446e5e[_0x6513('0xad')])[_0x6513('0x33')](_0x446e5e[_0x6513('0x95')]);}}else{return _0x5a5cd0[_0x6513('0x1e')](0xc8);}})[_0x6513('0x4d')](handleError(_0x5a5cd0,null));};exports[_0x6513('0xae')]=function(_0x253828,_0x1f33f2,_0x3a8587){return BPromise[_0x6513('0xa1')]()[_0x6513('0x2c')](function(){if(!_0x253828['query']['path']){throw new Error(_0x6513('0xa2'));}if(!_0x253828[_0x6513('0x3c')][_0x6513('0xa5')]){throw new Error(_0x6513('0xa3'));}var _0x577112=_0x253828['query'][_0x6513('0xa4')]?_0x253828[_0x6513('0x3c')][_0x6513('0xa4')]+':'+_0x253828[_0x6513('0x3c')]['port']:'http://localhost:'+_0x253828[_0x6513('0x3c')][_0x6513('0xa5')];var _0x423342=_0x253828['query'][_0x6513('0x21')]?_0x253828[_0x6513('0x3c')][_0x6513('0x21')]:!![];var _0x46d94e=_0x253828[_0x6513('0x3c')][_0x6513('0xa7')]?_0x253828[_0x6513('0x3c')][_0x6513('0xa7')]:null;var _0x54d376={'method':_0x253828[_0x6513('0xaf')],'uri':util[_0x6513('0xb0')](_0x6513('0xa8'),_0x577112,_0x253828['query'][_0x6513('0x5')]),'json':_0x423342,'resolveWithFullResponse':!![],'encoding':_0x46d94e,'body':_0x253828[_0x6513('0x95')]};if(_0x253828[_0x6513('0xa9')]){_0x54d376[_0x6513('0xa9')]=_0x253828['headers'];if(_0x54d376['headers'][_0x6513('0xaa')]){delete _0x54d376[_0x6513('0xa9')][_0x6513('0xaa')];}}if(_0x54d376[_0x6513('0xa9')]['content-type']){delete _0x54d376[_0x6513('0xa9')]['content-type'];}return rp(_0x54d376);})[_0x6513('0x2c')](function(_0x211757){if(_0x211757){_0x1f33f2[_0x6513('0x26')](_0x211757[_0x6513('0xa9')]);logger[_0x6513('0x69')](_0x211757['body']);return _0x1f33f2[_0x6513('0x1f')](_0x211757['statusCode'])['send'](_0x211757[_0x6513('0x95')]);}else{return _0x1f33f2['sendStatus'](0xc8);}})[_0x6513('0x4d')](handleError(_0x1f33f2,null));};
\ No newline at end of file
+var _0xa8ad=['order','sort','where','pick','VIRTUAL','filter','merge','Plugin','includeAll','include','rows','catch','show','params','rawAttributes','options','find','download','root','server/files/plugins','%s.zip','basename','path','warning','ENOENT','error','Sequelize','pipe','glob','dirname','join','finalize','existsSync','Error','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','upload','filename','extname','file','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','Invalid\x20plugin\x20structure','isFile','isDirectory','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20parameters\x20missing','views','Invalid\x20manifest:\x20views\x20missing','parameters','admin','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','always','icon','icon-apps','html','Warning:\x20admin\x20view\x20not\x20specified','agent','test','plugins','Warning:\x20agent\x20view\x20not\x20specified','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','headers','content-type','statusCode','resolve','%s%s','content-length','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','get','Plugins','end','stack','name','send','map','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit'];(function(_0x6a0266,_0x1552d6){var _0x309e00=function(_0x17c1d1){while(--_0x17c1d1){_0x6a0266['push'](_0x6a0266['shift']());}};_0x309e00(++_0x1552d6);}(_0xa8ad,0x1b9));var _0xda8a=function(_0x4336ee,_0x1961d1){_0x4336ee=_0x4336ee-0x0;var _0x3e2da1=_0xa8ad[_0x4336ee];return _0x3e2da1;};'use strict';var emlformat=require(_0xda8a('0x0'));var rimraf=require(_0xda8a('0x1'));var zipdir=require(_0xda8a('0x2'));var jsonpatch=require(_0xda8a('0x3'));var rp=require(_0xda8a('0x4'));var moment=require(_0xda8a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xda8a('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xda8a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda8a('0x8'));var squel=require(_0xda8a('0x9'));var crypto=require(_0xda8a('0xa'));var jsforce=require(_0xda8a('0xb'));var deskjs=require(_0xda8a('0xc'));var toCsv=require(_0xda8a('0xd'));var querystring=require(_0xda8a('0xe'));var Papa=require('papaparse');var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require('archiver');var Redis=require(_0xda8a('0xf'));var authService=require(_0xda8a('0x10'));var qs=require(_0xda8a('0x11'));var as=require(_0xda8a('0x12'));var hardwareService=require(_0xda8a('0x13'));var logger=require(_0xda8a('0x14'))(_0xda8a('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xda8a('0x16'));var db=require('../../mysqldb')['db'];config[_0xda8a('0x17')]=_['defaults'](config[_0xda8a('0x17')],{'host':_0xda8a('0x18'),'port':0x18eb});var socket=require(_0xda8a('0x19'))(new Redis(config['redis']));require(_0xda8a('0x1a'))[_0xda8a('0x1b')](socket);function respondWithStatusCode(_0x1c82be,_0xab75c7){_0xab75c7=_0xab75c7||0xcc;return function(_0x69cd1){if(_0x69cd1){return _0x1c82be[_0xda8a('0x1c')](_0xab75c7);}return _0x1c82be[_0xda8a('0x1d')](_0xab75c7)['end']();};}function respondWithResult(_0x3dcd41,_0x5d1981){_0x5d1981=_0x5d1981||0xc8;return function(_0x30ff15){if(_0x30ff15){return _0x3dcd41[_0xda8a('0x1d')](_0x5d1981)['json'](_0x30ff15);}};}function respondWithFilteredResult(_0x4cc4f9,_0xf5e13e){return function(_0x5abac9){if(_0x5abac9){var _0x25c456=typeof _0xf5e13e[_0xda8a('0x1e')]===_0xda8a('0x1f')&&typeof _0xf5e13e[_0xda8a('0x20')]===_0xda8a('0x1f');var _0xdaf2f9=_0x5abac9['count'];var _0x4e7fc9=_0x25c456?0x0:_0xf5e13e[_0xda8a('0x1e')];var _0x403483=_0x25c456?_0x5abac9[_0xda8a('0x21')]:_0xf5e13e[_0xda8a('0x1e')]+_0xf5e13e['limit'];var _0x54db56;if(_0x403483>=_0xdaf2f9){_0x403483=_0xdaf2f9;_0x54db56=0xc8;}else{_0x54db56=0xce;}_0x4cc4f9[_0xda8a('0x1d')](_0x54db56);return _0x4cc4f9[_0xda8a('0x22')](_0xda8a('0x23'),_0x4e7fc9+'-'+_0x403483+'/'+_0xdaf2f9)[_0xda8a('0x24')](_0x5abac9);}return null;};}function patchUpdates(_0x3d36d6){return function(_0xdfb61){try{jsonpatch[_0xda8a('0x25')](_0xdfb61,_0x3d36d6,!![]);}catch(_0x545806){return BPromise[_0xda8a('0x26')](_0x545806);}return _0xdfb61['save']();};}function saveUpdates(_0xe24a50,_0xdb2ce9){return function(_0xb82cdd){if(_0xb82cdd){return _0xb82cdd['update'](_0xe24a50)[_0xda8a('0x27')](function(_0x17952f){return _0x17952f;});}return null;};}function removeEntity(_0x5d0720,_0x590030){return function(_0x3540a0){if(_0x3540a0){return _0x3540a0[_0xda8a('0x28')]()[_0xda8a('0x27')](function(){var _0x27636d=_0x3540a0[_0xda8a('0x29')]({'plain':!![]});var _0x9920c4=_0xda8a('0x2a');return db['UserProfileResource'][_0xda8a('0x28')]({'where':{'type':_0x9920c4,'resourceId':_0x27636d['id']}})[_0xda8a('0x27')](function(){return _0x3540a0;});})[_0xda8a('0x27')](function(){_0x5d0720[_0xda8a('0x1d')](0xcc)[_0xda8a('0x2b')]();});}};}function handleEntityNotFound(_0x525c2d,_0x2151fc){return function(_0x4c7b21){if(!_0x4c7b21){_0x525c2d['sendStatus'](0x194);}return _0x4c7b21;};}function handleError(_0x2a61e0,_0x203e27){_0x203e27=_0x203e27||0x1f4;return function(_0x4ada3a){logger['error'](_0x4ada3a[_0xda8a('0x2c')]);if(_0x4ada3a[_0xda8a('0x2d')]){delete _0x4ada3a[_0xda8a('0x2d')];}_0x2a61e0['status'](_0x203e27)[_0xda8a('0x2e')](_0x4ada3a);};}exports['index']=function(_0x2af2c6,_0x44ba7d){var _0x3e9fcb={},_0xc475e5={},_0x4d38e3={'count':0x0,'rows':[]};var _0xd19830=_[_0xda8a('0x2f')](db['Plugin']['rawAttributes'],function(_0x30046d){return{'name':_0x30046d[_0xda8a('0x30')],'type':_0x30046d[_0xda8a('0x31')]['key']};});_0xc475e5[_0xda8a('0x32')]=_[_0xda8a('0x2f')](_0xd19830,_0xda8a('0x2d'));_0xc475e5[_0xda8a('0x33')]=_[_0xda8a('0x34')](_0x2af2c6[_0xda8a('0x33')]);_0xc475e5[_0xda8a('0x35')]=_[_0xda8a('0x36')](_0xc475e5[_0xda8a('0x32')],_0xc475e5[_0xda8a('0x33')]);_0x3e9fcb['attributes']=_[_0xda8a('0x36')](_0xc475e5['model'],qs[_0xda8a('0x37')](_0x2af2c6['query'][_0xda8a('0x37')]));_0x3e9fcb[_0xda8a('0x38')]=_0x3e9fcb[_0xda8a('0x38')][_0xda8a('0x39')]?_0x3e9fcb[_0xda8a('0x38')]:_0xc475e5[_0xda8a('0x32')];if(!_0x2af2c6[_0xda8a('0x33')][_0xda8a('0x3a')](_0xda8a('0x3b'))){_0x3e9fcb[_0xda8a('0x20')]=qs['limit'](_0x2af2c6['query']['limit']);_0x3e9fcb['offset']=qs[_0xda8a('0x1e')](_0x2af2c6[_0xda8a('0x33')]['offset']);}_0x3e9fcb[_0xda8a('0x3c')]=qs[_0xda8a('0x3d')](_0x2af2c6[_0xda8a('0x33')][_0xda8a('0x3d')]);_0x3e9fcb[_0xda8a('0x3e')]=qs[_0xda8a('0x35')](_[_0xda8a('0x3f')](_0x2af2c6[_0xda8a('0x33')],_0xc475e5[_0xda8a('0x35')]),_0xd19830);if(_0x2af2c6[_0xda8a('0x33')]['filter']){_0x3e9fcb[_0xda8a('0x3e')]=_['merge'](_0x3e9fcb[_0xda8a('0x3e')],{'$or':_['map'](_0xd19830,function(_0x57cbd7){if(_0x57cbd7[_0xda8a('0x31')]!==_0xda8a('0x40')){var _0x5e0672={};_0x5e0672[_0x57cbd7['name']]={'$like':'%'+_0x2af2c6[_0xda8a('0x33')][_0xda8a('0x41')]+'%'};return _0x5e0672;}})});}_0x3e9fcb=_[_0xda8a('0x42')]({},_0x3e9fcb,_0x2af2c6['options']);var _0x367022={'where':_0x3e9fcb['where']};return db[_0xda8a('0x43')][_0xda8a('0x21')](_0x367022)[_0xda8a('0x27')](function(_0x309c9e){_0x4d38e3[_0xda8a('0x21')]=_0x309c9e;if(_0x2af2c6[_0xda8a('0x33')][_0xda8a('0x44')]){_0x3e9fcb[_0xda8a('0x45')]=[{'all':!![]}];}return db[_0xda8a('0x43')]['findAll'](_0x3e9fcb);})[_0xda8a('0x27')](function(_0x32709a){_0x4d38e3[_0xda8a('0x46')]=_0x32709a;return _0x4d38e3;})[_0xda8a('0x27')](respondWithFilteredResult(_0x44ba7d,_0x3e9fcb))[_0xda8a('0x47')](handleError(_0x44ba7d,null));};exports[_0xda8a('0x48')]=function(_0xc5b07c,_0x18e7b6){var _0x5d3b12={'raw':!![],'where':{'id':_0xc5b07c[_0xda8a('0x49')]['id']}},_0x2b12cf={};_0x2b12cf[_0xda8a('0x32')]=_[_0xda8a('0x34')](db['Plugin'][_0xda8a('0x4a')]);_0x2b12cf[_0xda8a('0x33')]=_[_0xda8a('0x34')](_0xc5b07c['query']);_0x2b12cf['filters']=_[_0xda8a('0x36')](_0x2b12cf[_0xda8a('0x32')],_0x2b12cf[_0xda8a('0x33')]);_0x5d3b12[_0xda8a('0x38')]=_['intersection'](_0x2b12cf[_0xda8a('0x32')],qs[_0xda8a('0x37')](_0xc5b07c[_0xda8a('0x33')][_0xda8a('0x37')]));_0x5d3b12['attributes']=_0x5d3b12['attributes'][_0xda8a('0x39')]?_0x5d3b12[_0xda8a('0x38')]:_0x2b12cf[_0xda8a('0x32')];if(_0xc5b07c[_0xda8a('0x33')][_0xda8a('0x44')]){_0x5d3b12['include']=[{'all':!![]}];}_0x5d3b12=_[_0xda8a('0x42')]({},_0x5d3b12,_0xc5b07c[_0xda8a('0x4b')]);return db[_0xda8a('0x43')][_0xda8a('0x4c')](_0x5d3b12)[_0xda8a('0x27')](handleEntityNotFound(_0x18e7b6,null))[_0xda8a('0x27')](respondWithResult(_0x18e7b6,null))[_0xda8a('0x47')](handleError(_0x18e7b6,null));};exports[_0xda8a('0x4d')]=function(_0x582cd7,_0x527fa0,_0x51423b){return db['Plugin'][_0xda8a('0x4c')]({'where':{'id':_0x582cd7['params']['id']},'attributes':[_0xda8a('0x2d'),'path'],'raw':!![]})[_0xda8a('0x27')](handleEntityNotFound(_0x527fa0,null))[_0xda8a('0x27')](function(_0x3346ec){if(_0x3346ec){var _0x954433=path['join'](config[_0xda8a('0x4e')],_0xda8a('0x4f'),util['format'](_0xda8a('0x50'),path[_0xda8a('0x51')](_0x3346ec[_0xda8a('0x52')])));var _0x37753a=fs['createWriteStream'](_0x954433);var _0x233e80=archiver('zip',{'zlib':{'level':0x9}});_0x233e80['on'](_0xda8a('0x53'),function(_0x2d12a5){if(_0x2d12a5['code']===_0xda8a('0x54')){logger[_0xda8a('0x55')](_0x2d12a5);}else{throw new db[(_0xda8a('0x56'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x233e80['on'](_0xda8a('0x55'),function(_0x4e83c0){throw new db[(_0xda8a('0x56'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x233e80[_0xda8a('0x57')](_0x37753a);_0x233e80[_0xda8a('0x58')]('**/*',{'cwd':path['join'](config['root'],_0xda8a('0x4f'),path[_0xda8a('0x59')](_0x3346ec[_0xda8a('0x52')])),'ignore':[path['join'](path[_0xda8a('0x51')](_0x3346ec[_0xda8a('0x52')]),'node_modules/**/*'),path[_0xda8a('0x5a')](path[_0xda8a('0x51')](_0x3346ec[_0xda8a('0x52')]),'attachments/**/*')],'nodir':!![]})[_0xda8a('0x5b')]();_0x37753a['on']('close',function(){if(!fs[_0xda8a('0x5c')](_0x954433)){throw new db[(_0xda8a('0x56'))][(_0xda8a('0x5d'))](_0xda8a('0x5e'));}return _0x527fa0[_0xda8a('0x4d')](_0x954433,util[_0xda8a('0x5f')](_0xda8a('0x50'),path[_0xda8a('0x51')](_0x3346ec[_0xda8a('0x52')])),function(_0x2ac163){if(_0x2ac163){throw new db['Sequelize'][(_0xda8a('0x5d'))](_0xda8a('0x60'));}fs['unlinkSync'](_0x954433);logger[_0xda8a('0x61')](_0xda8a('0x62'));logger['info']('Temporary\x20file\x20removed');});});}return null;})[_0xda8a('0x47')](handleError(_0x527fa0,null));};exports[_0xda8a('0x63')]=function(_0x39127a,_0x423745,_0x10ad53){var _0x52c672=path[_0xda8a('0x51')](_0x39127a['file'][_0xda8a('0x64')],path[_0xda8a('0x65')](_0x39127a['file']['filename']));var _0x35e8c6=path['join'](config[_0xda8a('0x4e')],_0xda8a('0x4f'),_0x39127a[_0xda8a('0x66')][_0xda8a('0x64')]);var _0x1772ef=path[_0xda8a('0x5a')](config[_0xda8a('0x4e')],'server/files/plugins',_0x52c672);logger[_0xda8a('0x61')](_0xda8a('0x67'),_0x35e8c6);logger[_0xda8a('0x61')](_0xda8a('0x68'),_0x1772ef);try{fs[_0xda8a('0x69')](_0x35e8c6,parseInt('0777',0x8));extract(_0x35e8c6,{'dir':_0x1772ef},function(_0x50580b){if(_0x50580b){logger[_0xda8a('0x55')](_0x50580b);handleError(_0x50580b,!![]);};var _0xde9627=fs[_0xda8a('0x6a')](_0x1772ef);if(_0xde9627['length']>0x1){removeReferences(_0x35e8c6,_0x1772ef);logger[_0xda8a('0x55')](_0xda8a('0x6b'));return _0x10ad53(new Error(_0xda8a('0x6b')));}var _0x4335d7=fs['lstatSync'](path[_0xda8a('0x5a')](_0x1772ef,_0xde9627[0x0]));if(_0x4335d7[_0xda8a('0x6c')]()){removeReferences(_0x35e8c6,_0x1772ef);logger[_0xda8a('0x55')](_0xda8a('0x6b'));return _0x10ad53(new Error(_0xda8a('0x6b')));}if(_0x4335d7[_0xda8a('0x6d')]()){var _0x26bc17=fs[_0xda8a('0x6a')](path[_0xda8a('0x5a')](_0x1772ef,_0xde9627[0x0]));if(_0x26bc17[_0xda8a('0x39')]===0x0){removeReferences(_0x35e8c6,_0x1772ef);logger[_0xda8a('0x55')]('Invalid\x20plugin\x20structure');return _0x10ad53(new Error(_0xda8a('0x6b')));}var _0xee61cc=_0x26bc17['some'](function(_0x27b8ab){return _0x27b8ab===_0xda8a('0x6e');});if(!_0xee61cc){return _0x10ad53(new Error(_0xda8a('0x6f')));}var _0x16ce06=fs[_0xda8a('0x70')](path[_0xda8a('0x5a')](_0x1772ef,_0xde9627[0x0],'manifest.json'));var _0x2b345b=JSON[_0xda8a('0x71')](_0x16ce06);if(_0xda8a('0x1f')==typeof _0x2b345b[_0xda8a('0x2d')]){return _0x10ad53(new Error(_0xda8a('0x72')));}if(_0xda8a('0x1f')==typeof _0x2b345b['type']){return _0x10ad53(new Error(_0xda8a('0x73')));}if(_0xda8a('0x1f')==typeof _0x2b345b[_0xda8a('0x74')]){return _0x10ad53(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0xda8a('0x1f')==typeof _0x2b345b['parameters']){return _0x10ad53(new Error(_0xda8a('0x75')));}if(_0x2b345b[_0xda8a('0x31')]==='html'){if(_0xda8a('0x1f')==typeof _0x2b345b['parameters'][_0xda8a('0x76')]){return _0x10ad53(new Error(_0xda8a('0x77')));}if(_0xda8a('0x1f')==typeof _0x2b345b[_0xda8a('0x78')]['views'][_0xda8a('0x79')]&&'undefined'==typeof _0x2b345b[_0xda8a('0x78')][_0xda8a('0x76')]['agent']){return _0x10ad53(new Error(_0xda8a('0x7a')));}}else if(_0x2b345b[_0xda8a('0x31')]===_0xda8a('0x7b')){if('undefined'==typeof _0x2b345b['parameters'][_0xda8a('0x7c')]){return _0x10ad53(new Error(_0xda8a('0x7d')));}if('undefined'==typeof _0x2b345b[_0xda8a('0x78')][_0xda8a('0x7e')]){return _0x10ad53(new Error(_0xda8a('0x7f')));}}else{return _0x10ad53(new Error(_0xda8a('0x80')));}var _0x435867=_0x2b345b[_0xda8a('0x2d')];var _0x4453e6=_0x2b345b[_0xda8a('0x81')];var _0x255491=_0x2b345b[_0xda8a('0x31')];var _0x3b4eb3=_0x2b345b['sidebar']?_0x2b345b['sidebar']:_0xda8a('0x82');var _0x55ce07=_0x2b345b[_0xda8a('0x83')]?_0x2b345b[_0xda8a('0x83')]:_0xda8a('0x84');var _0x123ec6='';var _0x4ad6ee='';var _0x26cb88='';var _0x55440a='';var _0x30148a=_0x2b345b[_0xda8a('0x74')];if(_0x255491===_0xda8a('0x85')){if('undefined'!=typeof _0x2b345b[_0xda8a('0x78')]['views'][_0xda8a('0x79')]){var _0x5dccf6=_0x2b345b['parameters'][_0xda8a('0x76')][_0xda8a('0x79')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5dccf6)){_0x123ec6=path[_0xda8a('0x5a')]('plugins',_0x52c672,_0xde9627[0x0],_0x5dccf6);}else{_0x123ec6=_0x5dccf6;}}else{logger[_0xda8a('0x61')](_0xda8a('0x86'));}if(_0xda8a('0x1f')!=typeof _0x2b345b[_0xda8a('0x78')]['views'][_0xda8a('0x87')]){var _0x215d28=_0x2b345b[_0xda8a('0x78')][_0xda8a('0x76')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xda8a('0x88')](_0x215d28)){_0x4ad6ee=path[_0xda8a('0x5a')](_0xda8a('0x89'),_0x52c672,_0xde9627[0x0],_0x215d28);}else{_0x4ad6ee=_0x215d28;}}else{logger[_0xda8a('0x61')](_0xda8a('0x8a'));}}else if(_0x255491===_0xda8a('0x7b')){_0x26cb88=_0x2b345b['parameters'][_0xda8a('0x7c')];_0x55440a=_0x2b345b[_0xda8a('0x78')][_0xda8a('0x7e')];if(_0xda8a('0x1f')!=typeof _0x2b345b[_0xda8a('0x78')][_0xda8a('0x76')]){if('undefined'!=typeof _0x2b345b[_0xda8a('0x78')]['views']['admin']){var _0x5dccf6=_0x2b345b['parameters']['views'][_0xda8a('0x79')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5dccf6)){_0x123ec6=path[_0xda8a('0x5a')]('plugins',_0x52c672,_0xde9627[0x0],_0x5dccf6);}else{_0x123ec6=_0x5dccf6;}}if(_0xda8a('0x1f')!=typeof _0x2b345b[_0xda8a('0x78')][_0xda8a('0x76')][_0xda8a('0x87')]){var _0x215d28=_0x2b345b[_0xda8a('0x78')][_0xda8a('0x76')][_0xda8a('0x87')];if(!/^(f|ht)tps?:\/\//i[_0xda8a('0x88')](_0x215d28)){_0x4ad6ee=path[_0xda8a('0x5a')](_0xda8a('0x89'),_0x52c672,_0xde9627[0x0],_0x215d28);}else{_0x4ad6ee=_0x215d28;}}}}var _0x50bea1={'name':_0x435867,'description':_0x4453e6,'path':path[_0xda8a('0x5a')](_0x52c672,_0xde9627[0x0]),'type':_0x255491,'sidebar':_0x3b4eb3,'icon':_0x55ce07,'adminUrl':_0x123ec6,'agentUrl':_0x4ad6ee,'scriptName':_0x26cb88,'scriptPath':_0x55440a,'version':_0x30148a};removeReferences(_0x35e8c6,null);return db[_0xda8a('0x43')]['create'](_0x50bea1)[_0xda8a('0x27')](function(_0x553240){var _0x89e2a9={'role':_0x39127a[_0xda8a('0x8b')][_0xda8a('0x8c')],'userProfileId':_0x39127a[_0xda8a('0x8b')][_0xda8a('0x8d')]};if(!_0x89e2a9)throw new Error(_0xda8a('0x8e'));if(_0x89e2a9[_0xda8a('0x8c')]===_0xda8a('0x8f')){var _0x49e1aa=_0x553240[_0xda8a('0x29')]({'plain':!![]});return db[_0xda8a('0x90')][_0xda8a('0x4c')]({'where':{'name':_0xda8a('0x2a'),'userProfileId':_0x89e2a9['userProfileId']},'raw':!![]})[_0xda8a('0x27')](function(_0x2d9eea){if(_0x2d9eea&&_0x2d9eea[_0xda8a('0x91')]===0x0){return db[_0xda8a('0x92')][_0xda8a('0x93')]({'name':_0x49e1aa[_0xda8a('0x2d')],'resourceId':_0x49e1aa['id'],'type':_0x2d9eea['name'],'sectionId':_0x2d9eea['id']},{})[_0xda8a('0x27')](function(){return _0x553240;});}else{return _0x553240;}})[_0xda8a('0x47')](function(_0x1293fb){logger['error'](_0xda8a('0x94'),_0x1293fb);throw _0x1293fb;});}return _0x553240;})[_0xda8a('0x27')](respondWithResult(_0x423745,null))[_0xda8a('0x47')](handleError(_0x423745,null));}});}catch(_0x3e3309){_0x423745[_0xda8a('0x1d')](0x1f4)[_0xda8a('0x2e')](_0x3e3309);}};function removeReferences(_0x48202a,_0x372e2b){try{if(_0x48202a){fs[_0xda8a('0x95')](_0x48202a);logger[_0xda8a('0x61')](_0xda8a('0x96'));}if(_0x372e2b){rimraf(_0x372e2b,function(){});logger[_0xda8a('0x61')](_0xda8a('0x97'));}}catch(_0x323880){logger[_0xda8a('0x55')](_0x323880);}}exports[_0xda8a('0x98')]=function(_0x4ba170,_0x21b7d6,_0x54f269){return db['Plugin'][_0xda8a('0x4c')]({'where':{'id':_0x4ba170[_0xda8a('0x49')]['id']}})['then'](handleEntityNotFound(_0x21b7d6,null))[_0xda8a('0x27')](saveUpdates(_0x4ba170['body'],null))[_0xda8a('0x27')](respondWithResult(_0x21b7d6,null))[_0xda8a('0x47')](handleError(_0x21b7d6,null));};exports['delete']=function(_0x3865a9,_0x188bfe,_0x47864c){return db['Plugin'][_0xda8a('0x4c')]({'where':{'id':_0x3865a9['params']['id']}})[_0xda8a('0x27')](function(_0x4eb3f1){if(_0x4eb3f1){return _0x4eb3f1[_0xda8a('0x28')]();}})[_0xda8a('0x27')](function(_0x74d43e){rimraf(path[_0xda8a('0x5a')](config['root'],_0xda8a('0x4f'),path[_0xda8a('0x59')](_0x74d43e[_0xda8a('0x52')])),function(){});return _0x74d43e;})[_0xda8a('0x27')](handleEntityNotFound(_0x188bfe,null))[_0xda8a('0x27')](respondWithStatusCode(_0x188bfe,null))['catch'](handleError(_0x188bfe,null));};exports[_0xda8a('0x99')]=function(_0x2b828c,_0x21067b,_0x574d65){return BPromise['resolve']()[_0xda8a('0x27')](function(){if(!_0x2b828c['query']['path']){throw new Error(_0xda8a('0x9a'));}if(!_0x2b828c[_0xda8a('0x33')][_0xda8a('0x9b')]){throw new Error(_0xda8a('0x9c'));}var _0x5775e8=_0x2b828c[_0xda8a('0x33')][_0xda8a('0x9d')]?_0x2b828c[_0xda8a('0x33')]['hostname']+':'+_0x2b828c['query']['port']:_0xda8a('0x9e')+_0x2b828c[_0xda8a('0x33')]['port'];var _0x5b6efa=_0x2b828c[_0xda8a('0x33')][_0xda8a('0x24')]?_0x2b828c[_0xda8a('0x33')]['json']:!![];var _0x388620=_0x2b828c['query']['encoding']?_0x2b828c[_0xda8a('0x33')][_0xda8a('0x9f')]:null;var _0xe2feb={'method':_0x2b828c[_0xda8a('0xa0')],'uri':util[_0xda8a('0x5f')]('%s%s',_0x5775e8,_0x2b828c[_0xda8a('0x33')][_0xda8a('0x52')]),'json':_0x5b6efa,'resolveWithFullResponse':!![],'encoding':_0x388620,'qs':_0x2b828c[_0xda8a('0x33')]};if(_0x2b828c[_0xda8a('0xa1')]){_0xe2feb[_0xda8a('0xa1')]=_0x2b828c['headers'];if(_0xe2feb[_0xda8a('0xa1')]['content-length']){delete _0xe2feb[_0xda8a('0xa1')]['content-length'];}}if(_0xe2feb['headers']['content-type']){delete _0xe2feb[_0xda8a('0xa1')][_0xda8a('0xa2')];}return rp(_0xe2feb);})[_0xda8a('0x27')](function(_0x3091e0){if(_0x3091e0){_0x21067b['set'](_0x3091e0[_0xda8a('0xa1')]);logger[_0xda8a('0x61')](_0x3091e0[_0xda8a('0x8b')]);if(_['endsWith'](_0x2b828c[_0xda8a('0x33')][_0xda8a('0x52')],_0xda8a('0x4d'))&&_0x3091e0['statusCode']==0x1f4){return _0x21067b[_0xda8a('0x1c')](_0x3091e0[_0xda8a('0xa3')]);}else{return _0x21067b[_0xda8a('0x1d')](_0x3091e0[_0xda8a('0xa3')])[_0xda8a('0x2e')](_0x3091e0[_0xda8a('0x8b')]);}}else{return _0x21067b[_0xda8a('0x1c')](0xc8);}})[_0xda8a('0x47')](handleError(_0x21067b,null));};exports['webhookPost']=function(_0x59c84c,_0x1e5c13,_0x292417){return BPromise[_0xda8a('0xa4')]()[_0xda8a('0x27')](function(){if(!_0x59c84c['query'][_0xda8a('0x52')]){throw new Error(_0xda8a('0x9a'));}if(!_0x59c84c[_0xda8a('0x33')][_0xda8a('0x9b')]){throw new Error(_0xda8a('0x9c'));}var _0xb3398b=_0x59c84c[_0xda8a('0x33')][_0xda8a('0x9d')]?_0x59c84c[_0xda8a('0x33')][_0xda8a('0x9d')]+':'+_0x59c84c[_0xda8a('0x33')][_0xda8a('0x9b')]:_0xda8a('0x9e')+_0x59c84c['query']['port'];var _0x43991e=_0x59c84c[_0xda8a('0x33')][_0xda8a('0x24')]?_0x59c84c['query']['json']:!![];var _0x42a830=_0x59c84c[_0xda8a('0x33')]['encoding']?_0x59c84c['query'][_0xda8a('0x9f')]:null;var _0x24c804={'method':_0x59c84c[_0xda8a('0xa0')],'uri':util[_0xda8a('0x5f')](_0xda8a('0xa5'),_0xb3398b,_0x59c84c[_0xda8a('0x33')][_0xda8a('0x52')]),'json':_0x43991e,'resolveWithFullResponse':!![],'encoding':_0x42a830,'body':_0x59c84c[_0xda8a('0x8b')]};if(_0x59c84c[_0xda8a('0xa1')]){_0x24c804['headers']=_0x59c84c[_0xda8a('0xa1')];if(_0x24c804['headers'][_0xda8a('0xa6')]){delete _0x24c804[_0xda8a('0xa1')][_0xda8a('0xa6')];}}if(_0x24c804[_0xda8a('0xa1')][_0xda8a('0xa2')]){delete _0x24c804[_0xda8a('0xa1')]['content-type'];}return rp(_0x24c804);})['then'](function(_0x3edcc4){if(_0x3edcc4){_0x1e5c13[_0xda8a('0x22')](_0x3edcc4['headers']);logger[_0xda8a('0x61')](_0x3edcc4[_0xda8a('0x8b')]);return _0x1e5c13[_0xda8a('0x1d')](_0x3edcc4[_0xda8a('0xa3')])['send'](_0x3edcc4[_0xda8a('0x8b')]);}else{return _0x1e5c13[_0xda8a('0x1c')](0xc8);}})['catch'](handleError(_0x1e5c13,null));};
\ No newline at end of file
index 6eafa7f..b858b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69d=['exports','events','../../mysqldb','Plugin','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x1aa3fe,_0x27c5fa){var _0x163cee=function(_0x2a1505){while(--_0x2a1505){_0x1aa3fe['push'](_0x1aa3fe['shift']());}};_0x163cee(++_0x27c5fa);}(_0xf69d,0xd3));var _0xdf69=function(_0x17fe1b,_0x5b7936){_0x17fe1b=_0x17fe1b-0x0;var _0x49fb3b=_0xf69d[_0x17fe1b];return _0x49fb3b;};'use strict';var EventEmitter=require(_0xdf69('0x0'));var Plugin=require(_0xdf69('0x1'))['db'][_0xdf69('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xdf69('0x3')](0x0);var events={'afterCreate':_0xdf69('0x4'),'afterUpdate':'update','afterDestroy':_0xdf69('0x5')};function emitEvent(_0x342114){return function(_0x5b5eec,_0x13ecb6,_0x177ff7){PluginEvents[_0xdf69('0x6')](_0x342114+':'+_0x5b5eec['id'],_0x5b5eec);PluginEvents[_0xdf69('0x6')](_0x342114,_0x5b5eec);_0x177ff7(null);};}for(var e in events){if(events[_0xdf69('0x7')](e)){var event=events[e];Plugin[_0xdf69('0x8')](e,emitEvent(event));}}module[_0xdf69('0x9')]=PluginEvents;
\ No newline at end of file
+var _0x6c14=['../../mysqldb','Plugin','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x162d0b,_0x2755fa){var _0x27f023=function(_0xf3a3d3){while(--_0xf3a3d3){_0x162d0b['push'](_0x162d0b['shift']());}};_0x27f023(++_0x2755fa);}(_0x6c14,0xd1));var _0x46c1=function(_0x46b805,_0x40ba06){_0x46b805=_0x46b805-0x0;var _0x336b84=_0x6c14[_0x46b805];return _0x336b84;};'use strict';var EventEmitter=require(_0x46c1('0x0'));var Plugin=require(_0x46c1('0x1'))['db'][_0x46c1('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x46c1('0x3')](0x0);var events={'afterCreate':_0x46c1('0x4'),'afterUpdate':'update','afterDestroy':_0x46c1('0x5')};function emitEvent(_0x1aa112){return function(_0x311234,_0x5b4a69,_0x2a884e){PluginEvents[_0x46c1('0x6')](_0x1aa112+':'+_0x311234['id'],_0x311234);PluginEvents[_0x46c1('0x6')](_0x1aa112,_0x311234);_0x2a884e(null);};}for(var e in events){if(events[_0x46c1('0x7')](e)){var event=events[e];Plugin[_0x46c1('0x8')](e,emitEvent(event));}}module[_0x46c1('0x9')]=PluginEvents;
\ No newline at end of file
index 3c2cbc0..bf2f886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d2=['lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0xf4d2,0x120));var _0x2f4d=function(_0x5ec1d9,_0x5c1019){_0x5ec1d9=_0x5ec1d9-0x0;var _0x338477=_0xf4d2[_0x5ec1d9];return _0x338477;};'use strict';var _=require(_0x2f4d('0x0'));var util=require(_0x2f4d('0x1'));var logger=require(_0x2f4d('0x2'))('api');var moment=require('moment');var BPromise=require(_0x2f4d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f4d('0x4'));var rimraf=require(_0x2f4d('0x5'));var config=require(_0x2f4d('0x6'));var attributes=require(_0x2f4d('0x7'));module[_0x2f4d('0x8')]=function(_0x4aead2,_0x316ca2){return _0x4aead2[_0x2f4d('0x9')](_0x2f4d('0xa'),attributes,{'tableName':_0x2f4d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xacd4=['Plugin','plugins','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./plugin.attributes','exports'];(function(_0x55e4d3,_0x441087){var _0x14dad5=function(_0x54f362){while(--_0x54f362){_0x55e4d3['push'](_0x55e4d3['shift']());}};_0x14dad5(++_0x441087);}(_0xacd4,0xe6));var _0x4acd=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xacd4[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x4acd('0x0'));var util=require('util');var logger=require(_0x4acd('0x1'))(_0x4acd('0x2'));var moment=require(_0x4acd('0x3'));var BPromise=require(_0x4acd('0x4'));var rp=require(_0x4acd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4acd('0x6'));var config=require(_0x4acd('0x7'));var attributes=require(_0x4acd('0x8'));module[_0x4acd('0x9')]=function(_0x2bf7b5,_0x100fb9){return _0x2bf7b5['define'](_0x4acd('0xa'),attributes,{'tableName':_0x4acd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5679069..0e4ed4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fe5=['../../mysqldb','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','debug','stringify','error','code','message','result','CreatePlugin','Plugin','create','body','options','raw','catch','lodash','moment','bluebird','ioredis'];(function(_0x581bea,_0x1590d0){var _0x3de07d=function(_0x4862a4){while(--_0x4862a4){_0x581bea['push'](_0x581bea['shift']());}};_0x3de07d(++_0x1590d0);}(_0x4fe5,0xbc));var _0x54fe=function(_0x27088b,_0x147ff7){_0x27088b=_0x27088b-0x0;var _0x2c6a2e=_0x4fe5[_0x27088b];return _0x2c6a2e;};'use strict';var _=require(_0x54fe('0x0'));var util=require('util');var moment=require(_0x54fe('0x1'));var BPromise=require(_0x54fe('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x54fe('0x3'));var db=require(_0x54fe('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x54fe('0x5'));var config=require(_0x54fe('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x54fe('0x7')][_0x54fe('0x8')]({'port':0x232a});config[_0x54fe('0x9')]=_[_0x54fe('0xa')](config['redis'],{'host':_0x54fe('0xb'),'port':0x18eb});var socket=require(_0x54fe('0xc'))(new Redis(config['redis']));require(_0x54fe('0xd'))[_0x54fe('0xe')](socket);function respondWithRpcPromise(_0xf26262,_0x360e24,_0x393ded){return new BPromise(function(_0xe96b1f,_0x33a10d){return client[_0x54fe('0xf')](_0xf26262,_0x393ded)[_0x54fe('0x10')](function(_0x3c1cd3){logger[_0x54fe('0x11')](_0x54fe('0x12'),_0x360e24,'request\x20sent');logger[_0x54fe('0x13')]('Plugin,\x20%s,\x20%s,\x20%s',_0x360e24,'request\x20sent',JSON[_0x54fe('0x14')](_0x3c1cd3));if(_0x3c1cd3[_0x54fe('0x15')]){if(_0x3c1cd3['error'][_0x54fe('0x16')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x360e24,_0x3c1cd3[_0x54fe('0x15')][_0x54fe('0x17')]);return _0x33a10d(_0x3c1cd3[_0x54fe('0x15')][_0x54fe('0x17')]);}logger[_0x54fe('0x15')]('Plugin,\x20%s,\x20%s',_0x360e24,_0x3c1cd3[_0x54fe('0x15')][_0x54fe('0x17')]);return _0xe96b1f(_0x3c1cd3[_0x54fe('0x15')][_0x54fe('0x17')]);}else{logger[_0x54fe('0x11')](_0x54fe('0x12'),_0x360e24,'request\x20sent');_0xe96b1f(_0x3c1cd3[_0x54fe('0x18')][_0x54fe('0x17')]);}})['catch'](function(_0x2c2819){logger[_0x54fe('0x15')]('Plugin,\x20%s,\x20%s',_0x360e24,_0x2c2819);_0x33a10d(_0x2c2819);});});}exports[_0x54fe('0x19')]=function(_0x15fac5){var _0xa223c2=this;return new Promise(function(_0x178c3e,_0x305b26){return db[_0x54fe('0x1a')][_0x54fe('0x1b')](_0x15fac5[_0x54fe('0x1c')],{'raw':_0x15fac5[_0x54fe('0x1d')]?_0x15fac5['options'][_0x54fe('0x1e')]===undefined?!![]:![]:!![]})[_0x54fe('0x10')](function(_0x56df8e){logger[_0x54fe('0x11')](_0x54fe('0x19'),_0x15fac5);logger['debug']('CreatePlugin',_0x15fac5,JSON[_0x54fe('0x14')](_0x56df8e));_0x178c3e(_0x56df8e);})[_0x54fe('0x1f')](function(_0x597323){logger[_0x54fe('0x15')](_0x54fe('0x19'),_0x597323[_0x54fe('0x17')],_0x15fac5);_0x305b26(_0xa223c2[_0x54fe('0x15')](0x1f4,_0x597323['message']));});});};
\ No newline at end of file
+var _0x8c16=['./plugin.socket','register','request','then','Plugin,\x20%s,\x20%s','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','catch','CreatePlugin','Plugin','body','options','raw','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','socket.io-emitter'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x8c16,0xb3));var _0x68c1=function(_0x359e24,_0x3e25b0){_0x359e24=_0x359e24-0x0;var _0x1a9912=_0x8c16[_0x359e24];return _0x1a9912;};'use strict';var _=require(_0x68c1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x68c1('0x1'));var rs=require(_0x68c1('0x2'));var fs=require('fs');var Redis=require(_0x68c1('0x3'));var db=require(_0x68c1('0x4'))['db'];var utils=require(_0x68c1('0x5'));var logger=require(_0x68c1('0x6'))(_0x68c1('0x7'));var config=require(_0x68c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x68c1('0x9')]['http']({'port':0x232a});config[_0x68c1('0xa')]=_[_0x68c1('0xb')](config[_0x68c1('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x68c1('0xc'))(new Redis(config[_0x68c1('0xa')]));require(_0x68c1('0xd'))[_0x68c1('0xe')](socket);function respondWithRpcPromise(_0x105d50,_0x1d99d9,_0x724865){return new BPromise(function(_0x2c0b47,_0xf82b70){return client[_0x68c1('0xf')](_0x105d50,_0x724865)[_0x68c1('0x10')](function(_0x2d3778){logger['info'](_0x68c1('0x11'),_0x1d99d9,'request\x20sent');logger[_0x68c1('0x12')](_0x68c1('0x13'),_0x1d99d9,'request\x20sent',JSON[_0x68c1('0x14')](_0x2d3778));if(_0x2d3778[_0x68c1('0x15')]){if(_0x2d3778[_0x68c1('0x15')][_0x68c1('0x16')]===0x1f4){logger[_0x68c1('0x15')](_0x68c1('0x11'),_0x1d99d9,_0x2d3778[_0x68c1('0x15')][_0x68c1('0x17')]);return _0xf82b70(_0x2d3778[_0x68c1('0x15')]['message']);}logger[_0x68c1('0x15')](_0x68c1('0x11'),_0x1d99d9,_0x2d3778[_0x68c1('0x15')][_0x68c1('0x17')]);return _0x2c0b47(_0x2d3778[_0x68c1('0x15')][_0x68c1('0x17')]);}else{logger[_0x68c1('0x18')]('Plugin,\x20%s,\x20%s',_0x1d99d9,_0x68c1('0x19'));_0x2c0b47(_0x2d3778['result'][_0x68c1('0x17')]);}})[_0x68c1('0x1a')](function(_0x390de9){logger['error'](_0x68c1('0x11'),_0x1d99d9,_0x390de9);_0xf82b70(_0x390de9);});});}exports[_0x68c1('0x1b')]=function(_0x50edc2){var _0x3a1a3f=this;return new Promise(function(_0x292957,_0x2df308){return db[_0x68c1('0x1c')]['create'](_0x50edc2[_0x68c1('0x1d')],{'raw':_0x50edc2[_0x68c1('0x1e')]?_0x50edc2[_0x68c1('0x1e')][_0x68c1('0x1f')]===undefined?!![]:![]:!![]})[_0x68c1('0x10')](function(_0x5cf8e2){logger['info'](_0x68c1('0x1b'),_0x50edc2);logger[_0x68c1('0x12')](_0x68c1('0x1b'),_0x50edc2,JSON[_0x68c1('0x14')](_0x5cf8e2));_0x292957(_0x5cf8e2);})['catch'](function(_0x5393f6){logger[_0x68c1('0x15')](_0x68c1('0x1b'),_0x5393f6[_0x68c1('0x17')],_0x50edc2);_0x2df308(_0x3a1a3f['error'](0x1f4,_0x5393f6[_0x68c1('0x17')]));});});};
\ No newline at end of file
index dca90cf..04e3462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9e=['plugin:','save','emit','removeListener','register'];(function(_0x2d5ef8,_0x3a9e17){var _0x5f8353=function(_0x37f3f4){while(--_0x37f3f4){_0x2d5ef8['push'](_0x2d5ef8['shift']());}};_0x5f8353(++_0x3a9e17);}(_0x9b9e,0x16e));var _0xe9b9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9b9e[_0x4565bf];return _0x5610ba;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xe9b9('0x0'),'remove','update'];function createListener(_0x32d8b3,_0x2c858c){return function(_0x4236cb){_0x2c858c[_0xe9b9('0x1')](_0x32d8b3,_0x4236cb);};}function removeListener(_0x5d431a,_0xd62990){return function(){PluginEvents[_0xe9b9('0x2')](_0x5d431a,_0xd62990);};}exports[_0xe9b9('0x3')]=function(_0x620516){for(var _0x4d2029=0x0,_0x3ad8dc=events['length'];_0x4d2029<_0x3ad8dc;_0x4d2029++){var _0x52742d=events[_0x4d2029];var _0x44dcc2=createListener(_0xe9b9('0x4')+_0x52742d,_0x620516);PluginEvents['on'](_0x52742d,_0x44dcc2);}};
\ No newline at end of file
+var _0xb905=['./plugin.events','save','remove','update','register','length','plugin:'];(function(_0x1ea6b1,_0x19b536){var _0x4e3ea7=function(_0x33b71e){while(--_0x33b71e){_0x1ea6b1['push'](_0x1ea6b1['shift']());}};_0x4e3ea7(++_0x19b536);}(_0xb905,0x8c));var _0x5b90=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xb905[_0x1969a7];return _0x3d665f;};'use strict';var PluginEvents=require(_0x5b90('0x0'));var events=[_0x5b90('0x1'),_0x5b90('0x2'),_0x5b90('0x3')];function createListener(_0x209b11,_0x23eeca){return function(_0x239bfa){_0x23eeca['emit'](_0x209b11,_0x239bfa);};}function removeListener(_0x10e93b,_0x3202d5){return function(){PluginEvents['removeListener'](_0x10e93b,_0x3202d5);};}exports[_0x5b90('0x4')]=function(_0x2af2ec){for(var _0x305f1e=0x0,_0x22f789=events[_0x5b90('0x5')];_0x305f1e<_0x22f789;_0x305f1e++){var _0xd9b8e4=events[_0x305f1e];var _0x25fdf9=createListener(_0x5b90('0x6')+_0xd9b8e4,_0x2af2ec);PluginEvents['on'](_0xd9b8e4,_0x25fdf9);}};
\ No newline at end of file
index 9b8680b..856d6db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x852974,_0x5a9a91){var _0x1314e6=function(_0x32d3ec){while(--_0x32d3ec){_0x852974['push'](_0x852974['shift']());}};_0x1314e6(++_0x5a9a91);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x549d6d,_0x32b1f2){var _0x16e0cd=function(_0x570fe0){while(--_0x570fe0){_0x549d6d['push'](_0x549d6d['shift']());}};_0x16e0cd(++_0x32b1f2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index f4c0fe7..05bc666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fd9=['error','index','list','reject','express','then','catch','describe','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','update','hasOwnProperty','Unknown\x20status','params','Unknown\x20id','../../config/pm2','../../config/logger','api','path','bluebird','sendStatus','status','stack','name','send','npm\x20install','info'];(function(_0xed8374,_0x3b0251){var _0x59339b=function(_0x26adf5){while(--_0x26adf5){_0xed8374['push'](_0xed8374['shift']());}};_0x59339b(++_0x3b0251);}(_0x0fd9,0xa3));var _0x90fd=function(_0x1faaa1,_0x1568dd){_0x1faaa1=_0x1faaa1-0x0;var _0x994ec=_0x0fd9[_0x1faaa1];return _0x994ec;};'use strict';var _=require('lodash');var pm2=require(_0x90fd('0x0'));var logger=require(_0x90fd('0x1'))(_0x90fd('0x2'));var path=require(_0x90fd('0x3'));var exec=require('child_process')['exec'];var BPromise=require(_0x90fd('0x4'));function handleEntityNotFound(_0x2a5f76,_0xb7cf6){return function(_0x37a8be){if(!_0x37a8be){_0x2a5f76[_0x90fd('0x5')](0x194);;}return _0x37a8be;};}function respondWithResult(_0x23e11b,_0x5e2107){_0x5e2107=_0x5e2107||0xc8;return function(_0x4ff2d4){if(_0x4ff2d4){return _0x23e11b[_0x90fd('0x6')](_0x5e2107)['json'](_0x4ff2d4);}return null;};}function handleError(_0x5a604a,_0x2acef7){_0x2acef7=_0x2acef7||0x1f4;return function(_0x1becf2){logger['error'](_0x1becf2[_0x90fd('0x7')]);if(_0x1becf2[_0x90fd('0x8')]){delete _0x1becf2[_0x90fd('0x8')];}_0x5a604a[_0x90fd('0x6')](_0x2acef7)[_0x90fd('0x9')](_0x1becf2);};}function execChildProcess(){return new BPromise(function(_0x3be346,_0x2aae77){exec(_0x90fd('0xa'),function(_0x3c541e,_0x48943e,_0x23c417){logger[_0x90fd('0xb')](_0x48943e);logger['info'](_0x23c417);if(_0x3c541e){logger[_0x90fd('0xc')](_0x3c541e);return _0x2aae77(_0x3c541e);}return _0x3be346(_0x48943e);});});}exports[_0x90fd('0xd')]=function(_0x19a594,_0x5f28ab){return pm2[_0x90fd('0xe')]()['then'](function(_0x1cae40){if(_0x1cae40){var _0xb402d9=_[_0x90fd('0xf')](_0x1cae40,function(_0x1b3f3b){return _0x1b3f3b[_0x90fd('0x8')]===_0x90fd('0x10')||_0x1b3f3b[_0x90fd('0x8')]==='motion2';});return{'rows':_0xb402d9,'count':_0xb402d9['length']};}return null;})[_0x90fd('0x11')](respondWithResult(_0x5f28ab,null))[_0x90fd('0x12')](handleError(_0x5f28ab,null));};exports['show']=function(_0x130489,_0x13a694){return pm2[_0x90fd('0x13')](_0x130489['params']['id'])[_0x90fd('0x11')](respondWithResult(_0x13a694,null))[_0x90fd('0x11')](handleEntityNotFound(_0x13a694,null))[_0x90fd('0x12')](handleError(_0x13a694,null));};exports[_0x90fd('0x14')]=function(_0x251957,_0x58866f){if(_0x251957[_0x90fd('0x15')][_0x90fd('0x8')]&&_0x251957[_0x90fd('0x15')][_0x90fd('0x16')]){var _0x19e79b=path[_0x90fd('0x17')](__dirname,_0x90fd('0x18'),_0x251957[_0x90fd('0x15')][_0x90fd('0x16')]);var _0x493c26=process[_0x90fd('0x19')]();process[_0x90fd('0x1a')](path[_0x90fd('0x1b')](_0x19e79b));return execChildProcess()[_0x90fd('0x11')](function(_0x411a6a){process[_0x90fd('0x1a')](_0x493c26);return pm2[_0x90fd('0x1c')]({'name':_0x251957[_0x90fd('0x15')]['name'],'script':_0x19e79b});})[_0x90fd('0x11')](function(_0x52b066){pm2[_0x90fd('0x1d')]();return _0x52b066[0x0];})[_0x90fd('0x11')](respondWithResult(_0x58866f,0xc9))[_0x90fd('0x12')](handleError(_0x58866f,null));}else{return _0x58866f[_0x90fd('0x6')](0x1f4)[_0x90fd('0x9')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x90fd('0x1e')]=function(_0xe333f0,_0x2fffe6){if(_0xe333f0[_0x90fd('0x15')]['id']){delete _0xe333f0[_0x90fd('0x15')]['id'];}var _0x428bc2={'online':'restart','stopped':'stop'};if(_0x428bc2[_0x90fd('0x1f')](_0xe333f0[_0x90fd('0x15')][_0x90fd('0x6')])){return pm2[_0x428bc2[_0xe333f0[_0x90fd('0x15')][_0x90fd('0x6')]]](_0xe333f0['params']['id'])['then'](respondWithResult(_0x2fffe6,0xc8))[_0x90fd('0x12')](handleError(_0x2fffe6,null));}else{return _0x2fffe6[_0x90fd('0x6')](0x1f4)[_0x90fd('0x9')]({'message':_0x90fd('0x20')});}};exports['destroy']=function(_0x59aede,_0x12dea4){if(_0x59aede[_0x90fd('0x15')]['id']){delete _0x59aede[_0x90fd('0x15')]['id'];}if(_0x59aede[_0x90fd('0x21')]['id']){return pm2['delete'](_0x59aede[_0x90fd('0x21')]['id'])[_0x90fd('0x11')](function(_0x7fb8bc){pm2[_0x90fd('0x1d')]();return _0x7fb8bc[0x0];})[_0x90fd('0x11')](respondWithResult(_0x12dea4,null))[_0x90fd('0x12')](handleError(_0x12dea4,null));}else{return _0x12dea4[_0x90fd('0x6')](0x1f4)[_0x90fd('0x9')]({'message':_0x90fd('0x22')});}};
\ No newline at end of file
+var _0x9aea=['join','../../files/plugins','start','dump','Missing\x20name\x20and/or\x20path','update','hasOwnProperty','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/logger','path','child_process','bluebird','sendStatus','status','error','stack','name','send','info','index','list','then','express','motion2','length','catch','show','params','create','body','script'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x9aea,0xdd));var _0xa9ae=function(_0x219ccb,_0x28d657){_0x219ccb=_0x219ccb-0x0;var _0x1b76e5=_0x9aea[_0x219ccb];return _0x1b76e5;};'use strict';var _=require(_0xa9ae('0x0'));var pm2=require('../../config/pm2');var logger=require(_0xa9ae('0x1'))('api');var path=require(_0xa9ae('0x2'));var exec=require(_0xa9ae('0x3'))['exec'];var BPromise=require(_0xa9ae('0x4'));function handleEntityNotFound(_0x115593,_0x41fb71){return function(_0x10f91d){if(!_0x10f91d){_0x115593[_0xa9ae('0x5')](0x194);;}return _0x10f91d;};}function respondWithResult(_0x56f942,_0x1aa3b9){_0x1aa3b9=_0x1aa3b9||0xc8;return function(_0x22734b){if(_0x22734b){return _0x56f942[_0xa9ae('0x6')](_0x1aa3b9)['json'](_0x22734b);}return null;};}function handleError(_0x1f2e4b,_0x3917f0){_0x3917f0=_0x3917f0||0x1f4;return function(_0x465bd2){logger[_0xa9ae('0x7')](_0x465bd2[_0xa9ae('0x8')]);if(_0x465bd2[_0xa9ae('0x9')]){delete _0x465bd2[_0xa9ae('0x9')];}_0x1f2e4b[_0xa9ae('0x6')](_0x3917f0)[_0xa9ae('0xa')](_0x465bd2);};}function execChildProcess(){return new BPromise(function(_0x5a8178,_0x3d400c){exec('npm\x20install',function(_0x2addd2,_0x226cf7,_0x112ab5){logger[_0xa9ae('0xb')](_0x226cf7);logger[_0xa9ae('0xb')](_0x112ab5);if(_0x2addd2){logger[_0xa9ae('0x7')](_0x2addd2);return _0x3d400c(_0x2addd2);}return _0x5a8178(_0x226cf7);});});}exports[_0xa9ae('0xc')]=function(_0x2b511a,_0x56de45){return pm2[_0xa9ae('0xd')]()[_0xa9ae('0xe')](function(_0x10882e){if(_0x10882e){var _0x3f7f61=_['reject'](_0x10882e,function(_0x28ce2d){return _0x28ce2d[_0xa9ae('0x9')]===_0xa9ae('0xf')||_0x28ce2d[_0xa9ae('0x9')]===_0xa9ae('0x10');});return{'rows':_0x3f7f61,'count':_0x3f7f61[_0xa9ae('0x11')]};}return null;})['then'](respondWithResult(_0x56de45,null))[_0xa9ae('0x12')](handleError(_0x56de45,null));};exports[_0xa9ae('0x13')]=function(_0x3e31d9,_0x4ac5a6){return pm2['describe'](_0x3e31d9[_0xa9ae('0x14')]['id'])['then'](respondWithResult(_0x4ac5a6,null))['then'](handleEntityNotFound(_0x4ac5a6,null))[_0xa9ae('0x12')](handleError(_0x4ac5a6,null));};exports[_0xa9ae('0x15')]=function(_0xbfd2ff,_0x42f961){if(_0xbfd2ff['body'][_0xa9ae('0x9')]&&_0xbfd2ff[_0xa9ae('0x16')][_0xa9ae('0x17')]){var _0x688153=path[_0xa9ae('0x18')](__dirname,_0xa9ae('0x19'),_0xbfd2ff[_0xa9ae('0x16')]['script']);var _0xc021cf=process['cwd']();process['chdir'](path['dirname'](_0x688153));return execChildProcess()['then'](function(_0x1afd07){process['chdir'](_0xc021cf);return pm2[_0xa9ae('0x1a')]({'name':_0xbfd2ff['body'][_0xa9ae('0x9')],'script':_0x688153});})[_0xa9ae('0xe')](function(_0x93d637){pm2[_0xa9ae('0x1b')]();return _0x93d637[0x0];})[_0xa9ae('0xe')](respondWithResult(_0x42f961,0xc9))[_0xa9ae('0x12')](handleError(_0x42f961,null));}else{return _0x42f961[_0xa9ae('0x6')](0x1f4)['send']({'message':_0xa9ae('0x1c')});}};exports[_0xa9ae('0x1d')]=function(_0x2aac9e,_0xfe9ef1){if(_0x2aac9e[_0xa9ae('0x16')]['id']){delete _0x2aac9e[_0xa9ae('0x16')]['id'];}var _0xb12fa8={'online':'restart','stopped':'stop'};if(_0xb12fa8[_0xa9ae('0x1e')](_0x2aac9e[_0xa9ae('0x16')][_0xa9ae('0x6')])){return pm2[_0xb12fa8[_0x2aac9e[_0xa9ae('0x16')][_0xa9ae('0x6')]]](_0x2aac9e['params']['id'])['then'](respondWithResult(_0xfe9ef1,0xc8))[_0xa9ae('0x12')](handleError(_0xfe9ef1,null));}else{return _0xfe9ef1[_0xa9ae('0x6')](0x1f4)[_0xa9ae('0xa')]({'message':_0xa9ae('0x1f')});}};exports[_0xa9ae('0x20')]=function(_0x36bc28,_0x5d0c84){if(_0x36bc28['body']['id']){delete _0x36bc28[_0xa9ae('0x16')]['id'];}if(_0x36bc28[_0xa9ae('0x14')]['id']){return pm2[_0xa9ae('0x21')](_0x36bc28[_0xa9ae('0x14')]['id'])[_0xa9ae('0xe')](function(_0x231152){pm2[_0xa9ae('0x1b')]();return _0x231152[0x0];})[_0xa9ae('0xe')](respondWithResult(_0x5d0c84,null))['catch'](handleError(_0x5d0c84,null));}else{return _0x5d0c84[_0xa9ae('0x6')](0x1f4)['send']({'message':_0xa9ae('0x22')});}};
\ No newline at end of file
index 96e333d..55bfb43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1a3=['./realtime.controller','get','/agents','getAgents','/queues','isAuthenticated','getQueues','exports','express','../../components/auth/service'];(function(_0x18713a,_0x248fae){var _0x35e609=function(_0xd03606){while(--_0xd03606){_0x18713a['push'](_0x18713a['shift']());}};_0x35e609(++_0x248fae);}(_0xe1a3,0x1ac));var _0x3e1a=function(_0x2aafd0,_0x193383){_0x2aafd0=_0x2aafd0-0x0;var _0x2322d9=_0xe1a3[_0x2aafd0];return _0x2322d9;};'use strict';var express=require(_0x3e1a('0x0'));var router=express['Router']();var auth=require(_0x3e1a('0x1'));var controller=require(_0x3e1a('0x2'));router[_0x3e1a('0x3')](_0x3e1a('0x4'),auth['isAuthenticated'](),controller[_0x3e1a('0x5')]);router[_0x3e1a('0x3')](_0x3e1a('0x6'),auth[_0x3e1a('0x7')](),controller[_0x3e1a('0x8')]);module[_0x3e1a('0x9')]=router;
\ No newline at end of file
+var _0xbd12=['exports','express','../../components/auth/service','./realtime.controller','isAuthenticated','getAgents'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xbd12,0xf7));var _0x2bd1=function(_0x28f3c3,_0x4ec5dc){_0x28f3c3=_0x28f3c3-0x0;var _0x268951=_0xbd12[_0x28f3c3];return _0x268951;};'use strict';var express=require(_0x2bd1('0x0'));var router=express['Router']();var auth=require(_0x2bd1('0x1'));var controller=require(_0x2bd1('0x2'));router['get']('/agents',auth[_0x2bd1('0x3')](),controller[_0x2bd1('0x4')]);router['get']('/queues',auth['isAuthenticated'](),controller['getQueues']);module[_0x2bd1('0x5')]=router;
\ No newline at end of file
index 9a58bc0..b158f5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0707=['unknown','ringing','isNil','chatPause','mailPause','openchannelPause','voicePause','whatsappPause','every','filter','idle','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','whatsappStatus','userpic','lastLoginAt','address','smsPause','faxPause','chatCapacity','mailCapacity','smsCapacity','whatsappCapacity','openchannelCurrentCapacity','mailCurrentCapacity','whatsappCurrentCapacity','smsStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','voiceStatusTime','screenrecording','rawAttributes','fieldName','type','key','role','agent','query','getOptions','raw','user','nolimit','sort','UserProfile','getResources','rows','pick','globalStatus','globalStatusFilter','pauseTypeFilter','mail','chat','openchannel','whatsapp','resolve','includes','channel','toLowerCase','Invalid\x20channel','userProfileId','outbound','QueueCampaigns','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','undefined','count','status','set','json','error','stack','name','send','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','voice','startCase','Queues','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','waiting','talking','paused','push','originated','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','map','get','agents','loggedInDb','find','queue','length','busy','some','connectedlinenum','internal','getMembers','UserId','voiceStatus','online','User','Queue','QueueId'];(function(_0x408fbb,_0x348db4){var _0xfb63b6=function(_0x489e06){while(--_0x489e06){_0x408fbb['push'](_0x408fbb['shift']());}};_0xfb63b6(++_0x348db4);}(_0x0707,0xd0));var _0x7070=function(_0x2e6277,_0x3fb6c8){_0x2e6277=_0x2e6277-0x0;var _0x75fa29=_0x0707[_0x2e6277];return _0x75fa29;};'use strict';var util=require(_0x7070('0x0'));var _=require(_0x7070('0x1'));var jayson=require(_0x7070('0x2'));var qs=require(_0x7070('0x3'));var logger=require(_0x7070('0x4'))(_0x7070('0x5'));var db=require(_0x7070('0x6'))['db'];var amiClient=jayson[_0x7070('0x7')][_0x7070('0x8')]({'port':0x232a});var routingClient=jayson[_0x7070('0x7')]['http']({'port':0x232c});function respondWithFilteredResult(_0x414162,_0x3bdd4e){return function(_0x2def30){if(_0x2def30){var _0x518490=typeof _0x3bdd4e[_0x7070('0x9')]===_0x7070('0xa')&&typeof _0x3bdd4e['limit']===_0x7070('0xa');var _0x290465=_0x2def30[_0x7070('0xb')];var _0x3aa5bb=_0x518490?0x0:_0x3bdd4e[_0x7070('0x9')];var _0x1e7d3f=_0x518490?_0x2def30[_0x7070('0xb')]:_0x3bdd4e[_0x7070('0x9')]+_0x3bdd4e['limit'];var _0x445454;if(_0x1e7d3f>=_0x290465){_0x1e7d3f=_0x290465;_0x445454=0xc8;}else{_0x445454=0xce;}_0x414162[_0x7070('0xc')](_0x445454);return _0x414162[_0x7070('0xd')]('Content-Range',_0x3aa5bb+'-'+_0x1e7d3f+'/'+_0x290465)[_0x7070('0xe')](_0x2def30);}return null;};}function handleError(_0x2ae40c,_0x3c4094){_0x3c4094=_0x3c4094||0x1f4;return function(_0x44b61f){logger[_0x7070('0xf')](_0x44b61f[_0x7070('0x10')]);if(_0x44b61f[_0x7070('0x11')]){delete _0x44b61f[_0x7070('0x11')];}_0x2ae40c['status'](_0x3c4094)[_0x7070('0x12')](_0x44b61f);};}function getRealtimeAgents(){return new Promise(function(_0x5b49f9,_0x25a850){return amiClient[_0x7070('0x13')](_0x7070('0x14'),{})[_0x7070('0x15')](function(_0x2a514f){if(_0x2a514f[_0x7070('0xf')])throw new Error(_0x7070('0x16'));var _0x112d28=_0x2a514f[_0x7070('0x17')];return routingClient[_0x7070('0x13')](_0x7070('0x14'),{})[_0x7070('0x15')](function(_0x8e64d2){if(_0x8e64d2[_0x7070('0xf')])throw new Error(_0x7070('0x18'));var _0x115af8=_0x8e64d2[_0x7070('0x17')];return _0x5b49f9(_[_0x7070('0x19')]({},_0x112d28,_0x115af8));});})[_0x7070('0x1a')](function(_0x4e99b5){_0x25a850(_0x4e99b5);});});}function getRealtimeQueues(_0x2e8e37,_0x32b945){return new Promise(function(_0xf2015c,_0x4438b5){var _0x1ad7bc=_0x32b945===_0x7070('0x1b')?amiClient:routingClient;return _0x1ad7bc['request'](_[_0x7070('0x1c')](_0x32b945)+_0x7070('0x1d'),_0x2e8e37)[_0x7070('0x15')](function(_0x323f5a){if(_0x323f5a['error'])throw new Error(util[_0x7070('0x1e')](_0x7070('0x1f'),_0x32b945));return _0xf2015c(_0x323f5a['result']);})['catch'](function(_0x3b9b7d){_0x4438b5(_0x3b9b7d);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x32339e,_0x3af2d1){return amiClient[_0x7070('0x13')](_0x7070('0x20'),{})['then'](function(_0x52a676){if(_0x52a676[_0x7070('0xf')])throw new Error(_0x7070('0x21'));return _0x32339e(_0x52a676[_0x7070('0x17')]);})[_0x7070('0x1a')](function(_0x4f9905){_0x3af2d1(_0x4f9905);});});}function initializeQueues(_0x4c0cfb,_0x5ec3ed,_0x5db955,_0xab337d){var _0x50a11d=[_0x7070('0x22'),_0x7070('0x23'),_0x7070('0x24'),_0x7070('0x25'),_0x7070('0x26')];if(_0x5db955==='voice'&&_0xab337d==='outbound'){_0x50a11d[_0x7070('0x27')]('pTalking',_0x7070('0x28'),_0x7070('0x29'),_0x7070('0x2a'),_0x7070('0x2b'),_0x7070('0x2c'),_0x7070('0x2d'),_0x7070('0x2e'),_0x7070('0x2f'),_0x7070('0x30'),_0x7070('0x31'),'erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold',_0x7070('0x32'),_0x7070('0x33'),_0x7070('0x34'),_0x7070('0x35'),_0x7070('0x36'),'predictiveIntervalDroppedCallsCallersExit',_0x7070('0x37'),'predictiveIntervalAvgTalktime');}return _0x4c0cfb[_0x7070('0x38')](function(_0x3ba727){var _0x26ebcd=_0x3ba727[_0x7070('0x39')]({'plain':!![]});_0x26ebcd[_0x7070('0x3a')]=[];_0x26ebcd[_0x7070('0x26')]=0x0;_0x26ebcd[_0x7070('0x3b')]=0x0;_0x26ebcd[_0x7070('0x22')]=0x0;_0x26ebcd[_0x7070('0x23')]=0x0;_0x26ebcd[_0x7070('0x24')]=0x0;if(_0x5db955==='voice'){_0x26ebcd[_0x7070('0x25')]=0x0;_0x26ebcd['busy']=0x0;if(_0xab337d==='outbound'){_0x26ebcd['pTalking']=0x0;_0x26ebcd['originated']=0x0;}}var _0x6c71c9=_[_0x7070('0x3c')](_0x5ec3ed,['id',_0x26ebcd['id']]);if(_0x6c71c9)_[_0x7070('0x19')](_0x26ebcd,_['pick'](_0x6c71c9,_0x50a11d));return _0x26ebcd;});}function updateAgentVoiceStatus(_0x3b6163,_0x4e9c34,_0x5cfd74){var _0x48759f=_['filter'](_0x5cfd74,[_0x7070('0x3d'),_0x4e9c34['name']]);if(_0x48759f[_0x7070('0x3e')]===0x0)return _0x3b6163[_0x7070('0x3f')]=!![];if(_[_0x7070('0x40')](_0x48759f,[_0x7070('0x41'),_0x3b6163[_0x7070('0x42')]['toString']()]))return _0x3b6163[_0x7070('0x25')]=!![];if(!_0x3b6163[_0x7070('0x25')])return _0x3b6163[_0x7070('0x3f')]=!![];}function getVoiceQueueAgents(_0x459acf,_0x5d0131,_0x52f01f,_0x659927){var _0xdd9ac7=_[_0x7070('0x3c')](_0x5d0131,['id',_0x459acf['id']]);if(!_0xdd9ac7)return _0x459acf;return _0xdd9ac7[_0x7070('0x43')]({'raw':!![]})['then'](function(_0x4dd397){for(var _0x4d1a6d=0x0;_0x4d1a6d<_0x4dd397['length'];_0x4d1a6d++){var _0x4cbe09=_[_0x7070('0x3c')](_0x52f01f,['id',_0x4dd397[_0x4d1a6d]['UserId']]);if(!_0x4cbe09){_0x4cbe09={'id':_0x4dd397[_0x4d1a6d][_0x7070('0x44')],'name':_0x4dd397[_0x4d1a6d][_0x7070('0x44')],'accountcode':'','online':![]};}var _0x4bb270={'id':_0x4cbe09['id'],'name':_0x4cbe09[_0x7070('0x11')],'internal':_0x4cbe09['accountcode'],'online':Boolean(_0x4cbe09['online']),'paused':Boolean(_0x4dd397[_0x4d1a6d][_0x7070('0x26')])};if(_0x4cbe09[_0x7070('0x45')]==='talking')updateAgentVoiceStatus(_0x4bb270,_0x459acf,_0x659927);if(_0x4bb270[_0x7070('0x46')])_0x459acf[_0x7070('0x3b')]++;if(_0x4bb270[_0x7070('0x3f')])_0x459acf[_0x7070('0x3f')]++;if(_0x4bb270[_0x7070('0x26')]&&!_0x4bb270[_0x7070('0x3f')]&&!_0x4bb270[_0x7070('0x25')])_0x459acf[_0x7070('0x26')]++;_0x459acf['agents'][_0x7070('0x27')](_0x4bb270);}return _0x459acf;});}function getQueueAgents(_0x430054,_0x24cfc0,_0x38102d){var _0x4f3a08=_0x7070('0x47')+_['startCase'](_0x38102d)+_0x7070('0x48');var _0x5be399=_0x38102d+'Pause';return db[_0x4f3a08]['findAll']({'where':{[_[_0x7070('0x1c')](_0x38102d)+_0x7070('0x49')]:_0x430054['id']},'raw':!![]})[_0x7070('0x15')](function(_0xe074ae){for(var _0x69a401=0x0;_0x69a401<_0xe074ae[_0x7070('0x3e')];_0x69a401++){var _0x41cb66=_[_0x7070('0x3c')](_0x24cfc0,['id',_0xe074ae[_0x69a401]['UserId']]);if(!_0x41cb66){_0x41cb66={'id':_0xe074ae[_0x69a401][_0x7070('0x44')],'name':_0xe074ae[_0x69a401]['UserId'],'online':![],['pauseField']:![]};}var _0x5530cc={'id':_0x41cb66['id'],'name':_0x41cb66[_0x7070('0x11')],'online':Boolean(_0x41cb66[_0x7070('0x46')]),'paused':Boolean(_0x41cb66[_0x5be399])};if(_0x5530cc[_0x7070('0x46')])_0x430054[_0x7070('0x3b')]++;_0x430054['agents']['push'](_0x5530cc);}return _0x430054;});}function isIdle(_0x83cc49){return _0x83cc49==='idle'||_0x83cc49===_0x7070('0x4a')||_0x83cc49==='unavailable'||_0x83cc49===_0x7070('0x4b')||_[_0x7070('0x4c')](_0x83cc49);}function isAgentPaused(_0x5097fd,_0x4e108b){var _0x38ddb8=[_0x5097fd[_0x7070('0x4d')],_0x5097fd['faxPause'],_0x5097fd[_0x7070('0x4e')],_0x5097fd[_0x7070('0x4f')],_0x5097fd['smsPause'],_0x5097fd[_0x7070('0x50')],_0x5097fd[_0x7070('0x51')]];if(!_0x4e108b)return _[_0x7070('0x52')](_0x38ddb8);var _0xc7c97c=_[_0x7070('0x53')](_0x38ddb8);return _0xc7c97c['length']>0x0&&_0xc7c97c[_0x7070('0x3e')]<_0x38ddb8['length']?!![]:![];}function isAgentIdle(_0x380b71){if(_0x380b71[_0x7070('0x45')]!==_0x7070('0x54')&&_0x380b71[_0x7070('0x50')]){_0x380b71[_0x7070('0x45')]=_0x7070('0x55');return![];}return _[_0x7070('0x52')]([_0x380b71[_0x7070('0x56')],_0x380b71[_0x7070('0x57')],_0x380b71[_0x7070('0x58')],_0x380b71[_0x7070('0x59')],_0x380b71['smsStatus'],_0x380b71[_0x7070('0x45')],_0x380b71[_0x7070('0x5a')]],isIdle);}function getAgentStatus(_0x21c45d){var _0xa577c=_0x7070('0x4a');if(isAgentPaused(_0x21c45d))_0xa577c=_0x7070('0x55');else if(isAgentPaused(_0x21c45d,!![]))_0xa577c='*pause';else if(isAgentIdle(_0x21c45d))_0xa577c=_0x7070('0x54');else _0xa577c='busy';return _0xa577c;}exports['getAgents']=function(_0x44776e,_0x5551fc){var _0x1fc5e9={'count':0x0,'rows':[]},_0x4bd972={},_0x1868f9,_0x1504cd,_0x255203=[_0x7070('0x5b'),_0x7070('0x46'),_0x7070('0x5c'),'lastPauseAt','pauseType','lastPauseAt',_0x7070('0x42'),_0x7070('0x5d'),_0x7070('0x4d'),_0x7070('0x4f'),_0x7070('0x4e'),_0x7070('0x5e'),'whatsappPause',_0x7070('0x5f'),_0x7070('0x50'),_0x7070('0x60'),'openchannelCapacity',_0x7070('0x61'),_0x7070('0x62'),_0x7070('0x63'),'faxCapacity','chatCurrentCapacity',_0x7070('0x64'),_0x7070('0x65'),'smsCurrentCapacity',_0x7070('0x66'),'faxCurrentCapacity',_0x7070('0x56'),'openchannelStatus',_0x7070('0x58'),_0x7070('0x67'),'whatsappStatus','faxStatus',_0x7070('0x45'),_0x7070('0x68'),_0x7070('0x69'),_0x7070('0x6a'),'smsStatusTime',_0x7070('0x6b'),'faxStatusTime',_0x7070('0x6c'),_0x7070('0x3d'),'destconnectedlinenum',_0x7070('0x6d'),'phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias'],_0x5b2038=[_0x7070('0x4d'),_0x7070('0x4f'),_0x7070('0x4e'),'smsPause',_0x7070('0x51'),_0x7070('0x5f'),_0x7070('0x50'),_0x7070('0x46')];Promise['resolve']()[_0x7070('0x15')](function(){var _0x41451c=_[_0x7070('0x38')](db[_0x7070('0x47')][_0x7070('0x6e')],function(_0x8b58e1){return{'name':_0x8b58e1[_0x7070('0x6f')],'type':_0x8b58e1[_0x7070('0x70')][_0x7070('0x71')]};});_0x44776e['query'][_0x7070('0x72')]=_0x7070('0x73');_0x44776e[_0x7070('0x74')][_0x7070('0x46')]=!![];_0x4bd972=qs[_0x7070('0x75')](_0x41451c,_0x44776e);_0x4bd972[_0x7070('0x76')]=!![];if(_0x44776e[_0x7070('0x77')][_0x7070('0x72')]===_0x7070('0x77')){var _0x4f8ff9={'params':{'id':_0x44776e['user']['userProfileId']},'query':{'section':_0x7070('0x14'),'role':'agent','online':!![],'nolimit':_0x44776e['query'][_0x7070('0x78')],'sort':_0x44776e[_0x7070('0x74')][_0x7070('0x79')],'filter':_0x44776e['query']['filter']},'raw':!![]};return db[_0x7070('0x7a')][_0x7070('0x7b')](_0x4f8ff9);}return db[_0x7070('0x47')]['findAndCountAll'](_0x4bd972);})[_0x7070('0x15')](function(_0x15065d){_0x1fc5e9['count']=_0x15065d['count'];_0x1868f9=_0x15065d[_0x7070('0x7c')];return getRealtimeAgents();})[_0x7070('0x15')](function(_0x169197){_0x1504cd=_0x169197[_0x7070('0x7c')];return _0x1868f9['map'](function(_0xb8dc16){var _0x34dff3=_[_0x7070('0x3c')](_0x1504cd,['id',_0xb8dc16['id']]);if(_0x34dff3)_[_0x7070('0x19')](_0xb8dc16,_[_0x7070('0x7d')](_['omit'](_0x34dff3,_0x5b2038),_0x255203));_0xb8dc16[_0x7070('0x7e')]=getAgentStatus(_0xb8dc16);return _0xb8dc16;});})[_0x7070('0x15')](function(_0x1e44ff){if(_0x44776e[_0x7070('0x74')]['globalStatusFilter']){var _0x5a48df=_[_0x7070('0x53')](_0x1e44ff,[_0x7070('0x7e'),_0x44776e[_0x7070('0x74')][_0x7070('0x7f')]]);if(_0x44776e[_0x7070('0x74')][_0x7070('0x80')]){_0x5a48df=_[_0x7070('0x53')](_0x5a48df,['pauseType',_0x44776e[_0x7070('0x74')]['pauseTypeFilter']]);}}_0x1fc5e9[_0x7070('0x7c')]=_0x5a48df||_0x1e44ff;return _0x1fc5e9;})[_0x7070('0x15')](respondWithFilteredResult(_0x5551fc,_0x4bd972))[_0x7070('0x1a')](handleError(_0x5551fc,null));};exports['getQueues']=function(_0x1aef3d,_0x2807af){var _0x1057be=[_0x7070('0x81'),_0x7070('0x82'),'sms',_0x7070('0x83'),'fax',_0x7070('0x84'),_0x7070('0x1b')];var _0x31119e={'count':0x0,'rows':[]},_0x147b79={},_0x5b0714,_0x5523aa,_0x412abe,_0x36e596,_0x52e432;Promise[_0x7070('0x85')]()[_0x7070('0x15')](function(){if(_0x1aef3d['query']['channel']){if(!_[_0x7070('0x86')](_0x1057be,_0x1aef3d['query'][_0x7070('0x87')][_0x7070('0x88')]()))throw new Error(_0x7070('0x89'));_0x5b0714=_0x1aef3d[_0x7070('0x74')]['channel'][_0x7070('0x88')]();}var _0x40ddbc=_[_0x7070('0x1c')](_0x5b0714)+_0x7070('0x48');var _0x4bb538=_[_0x7070('0x38')](db[_0x40ddbc][_0x7070('0x6e')],function(_0x74eb59){return{'name':_0x74eb59[_0x7070('0x6f')],'type':_0x74eb59[_0x7070('0x70')][_0x7070('0x71')]};});_0x147b79=qs[_0x7070('0x75')](_0x4bb538,_0x1aef3d);if(_0x1aef3d[_0x7070('0x77')][_0x7070('0x72')]===_0x7070('0x77')){var _0x53af89={'params':{'id':_0x1aef3d['user'][_0x7070('0x8a')]},'query':{'section':_0x5b0714===_0x7070('0x1b')&&_0x1aef3d['query'][_0x7070('0x70')]===_0x7070('0x8b')?_0x7070('0x8c'):_[_0x7070('0x1c')](_0x5b0714)+'Queues','type':_0x1aef3d['query']['type'],'nolimit':!![],'sort':_0x7070('0x11'),'filter':_0x1aef3d[_0x7070('0x74')][_0x7070('0x53')]}};return db['UserProfile'][_0x7070('0x7b')](_0x53af89);}return db[_0x40ddbc]['findAndCountAll'](_0x147b79);})[_0x7070('0x15')](function(_0x4332a0){_0x31119e['count']=_0x4332a0[_0x7070('0xb')];_0x5523aa=_0x4332a0['rows'];return getRealtimeQueues(_0x1aef3d,_0x5b0714);})[_0x7070('0x15')](function(_0xf87a35){_0x36e596=_0xf87a35[_0x7070('0x7c')];return getRealtimeAgents();})[_0x7070('0x15')](function(_0x46f67d){_0x412abe=_0x46f67d['rows'];if(_0x5b0714!=_0x7070('0x1b'))return;return getRealtimeVoiceQueueChannels();})[_0x7070('0x15')](function(_0x502a7f){_0x52e432=_0x502a7f?_0x502a7f['rows']:[];return initializeQueues(_0x5523aa,_0x36e596,_0x5b0714,_0x1aef3d[_0x7070('0x74')][_0x7070('0x70')]);})[_0x7070('0x15')](function(_0x4ff88f){var _0x32e540=_0x4ff88f[_0x7070('0x38')](function(_0x53f195){if(_0x5b0714==='voice')return getVoiceQueueAgents(_0x53f195,_0x5523aa,_0x412abe,_0x52e432);else return getQueueAgents(_0x53f195,_0x412abe,_0x5b0714);});return Promise['all'](_0x32e540);})[_0x7070('0x15')](function(_0x380e0b){_0x31119e[_0x7070('0x7c')]=_0x380e0b;return _0x31119e;})[_0x7070('0x15')](respondWithFilteredResult(_0x2807af,_0x147b79))['catch'](handleError(_0x2807af,null));};
\ No newline at end of file
+var _0xb447=['online','startCase','Pause','findAll','idle','unknown','ringing','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','voiceStatus','mailStatus','openchannelStatus','lastLoginAt','pauseType','address','whatsappPause','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','smsStatus','whatsappStatus','faxStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','queue','destconnectedlinenum','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','resolve','rawAttributes','fieldName','key','query','role','agent','getOptions','user','nolimit','UserProfile','getResources','User','rows','pick','omit','globalStatus','globalStatusFilter','filter','pauseTypeFilter','getQueues','mail','chat','sms','openchannel','whatsapp','channel','includes','toLowerCase','Invalid\x20channel','Queue','map','type','userProfileId','QueueCampaigns','findAndCountAll','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','count','set','Content-Range','json','error','name','status','request','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','merge','voice','Queues','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','catch','available','talking','push','pTalking','originated','message','startPredictive','startProgressive','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','agents','paused','loggedInDb','loggedIn','waiting','busy','outbound','find','length','some','connectedlinenum','internal','toString','UserId','accountcode'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xb447,0x16e));var _0x7b44=function(_0x13ee71,_0x1ce55a){_0x13ee71=_0x13ee71-0x0;var _0x34b519=_0xb447[_0x13ee71];return _0x34b519;};'use strict';var util=require('util');var _=require('lodash');var jayson=require(_0x7b44('0x0'));var qs=require(_0x7b44('0x1'));var logger=require(_0x7b44('0x2'))(_0x7b44('0x3'));var db=require(_0x7b44('0x4'))['db'];var amiClient=jayson[_0x7b44('0x5')][_0x7b44('0x6')]({'port':0x232a});var routingClient=jayson[_0x7b44('0x5')]['http']({'port':0x232c});function respondWithFilteredResult(_0x429cd1,_0x5485ab){return function(_0x54e973){if(_0x54e973){var _0x734408=typeof _0x5485ab[_0x7b44('0x7')]===_0x7b44('0x8')&&typeof _0x5485ab[_0x7b44('0x9')]===_0x7b44('0x8');var _0x1c094d=_0x54e973[_0x7b44('0xa')];var _0x2dc5a6=_0x734408?0x0:_0x5485ab[_0x7b44('0x7')];var _0x93336c=_0x734408?_0x54e973[_0x7b44('0xa')]:_0x5485ab[_0x7b44('0x7')]+_0x5485ab[_0x7b44('0x9')];var _0x4b7e98;if(_0x93336c>=_0x1c094d){_0x93336c=_0x1c094d;_0x4b7e98=0xc8;}else{_0x4b7e98=0xce;}_0x429cd1['status'](_0x4b7e98);return _0x429cd1[_0x7b44('0xb')](_0x7b44('0xc'),_0x2dc5a6+'-'+_0x93336c+'/'+_0x1c094d)[_0x7b44('0xd')](_0x54e973);}return null;};}function handleError(_0x1d0abe,_0x18f050){_0x18f050=_0x18f050||0x1f4;return function(_0x3172b9){logger[_0x7b44('0xe')](_0x3172b9['stack']);if(_0x3172b9[_0x7b44('0xf')]){delete _0x3172b9[_0x7b44('0xf')];}_0x1d0abe[_0x7b44('0x10')](_0x18f050)['send'](_0x3172b9);};}function getRealtimeAgents(){return new Promise(function(_0x267746,_0x182fcf){return amiClient[_0x7b44('0x11')]('Agents',{})[_0x7b44('0x12')](function(_0x3fa3e6){if(_0x3fa3e6[_0x7b44('0xe')])throw new Error(_0x7b44('0x13'));var _0x608e35=_0x3fa3e6['result'];return routingClient['request'](_0x7b44('0x14'),{})['then'](function(_0xd6d3d1){if(_0xd6d3d1[_0x7b44('0xe')])throw new Error(_0x7b44('0x15'));var _0x25145b=_0xd6d3d1[_0x7b44('0x16')];return _0x267746(_[_0x7b44('0x17')]({},_0x608e35,_0x25145b));});})['catch'](function(_0x2b6916){_0x182fcf(_0x2b6916);});});}function getRealtimeQueues(_0x2051c4,_0x3644bf){return new Promise(function(_0x5bf951,_0x2e8512){var _0x255366=_0x3644bf===_0x7b44('0x18')?amiClient:routingClient;return _0x255366['request'](_['startCase'](_0x3644bf)+_0x7b44('0x19'),_0x2051c4)[_0x7b44('0x12')](function(_0x22b530){if(_0x22b530[_0x7b44('0xe')])throw new Error(util['format'](_0x7b44('0x1a'),_0x3644bf));return _0x5bf951(_0x22b530[_0x7b44('0x16')]);})['catch'](function(_0x3f8189){_0x2e8512(_0x3f8189);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x2fda7e,_0x45cd9d){return amiClient[_0x7b44('0x11')](_0x7b44('0x1b'),{})[_0x7b44('0x12')](function(_0x548c42){if(_0x548c42[_0x7b44('0xe')])throw new Error(_0x7b44('0x1c'));return _0x2fda7e(_0x548c42[_0x7b44('0x16')]);})[_0x7b44('0x1d')](function(_0x322d0c){_0x45cd9d(_0x322d0c);});});}function initializeQueues(_0x48c839,_0x32ab5f,_0x227dca,_0x12f519){var _0x24cbb8=['loggedIn',_0x7b44('0x1e'),'waiting',_0x7b44('0x1f'),'paused'];if(_0x227dca==='voice'&&_0x12f519==='outbound'){_0x24cbb8[_0x7b44('0x20')](_0x7b44('0x21'),_0x7b44('0x22'),_0x7b44('0x23'),'dialActive','dialMethod','Trunk',_0x7b44('0x24'),_0x7b44('0x25'),_0x7b44('0x26'),'erlangCallToSecond',_0x7b44('0x27'),_0x7b44('0x28'),_0x7b44('0x29'),'dialPredictiveIntervalMaxThreshold',_0x7b44('0x2a'),'predictiveIntervalAvailable',_0x7b44('0x2b'),_0x7b44('0x2c'),'predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit',_0x7b44('0x2d'),_0x7b44('0x2e'));}return _0x48c839['map'](function(_0x5e7dbf){var _0x26a271=_0x5e7dbf[_0x7b44('0x2f')]({'plain':!![]});_0x26a271[_0x7b44('0x30')]=[];_0x26a271[_0x7b44('0x31')]=0x0;_0x26a271[_0x7b44('0x32')]=0x0;_0x26a271[_0x7b44('0x33')]=0x0;_0x26a271['available']=0x0;_0x26a271[_0x7b44('0x34')]=0x0;if(_0x227dca===_0x7b44('0x18')){_0x26a271[_0x7b44('0x1f')]=0x0;_0x26a271[_0x7b44('0x35')]=0x0;if(_0x12f519===_0x7b44('0x36')){_0x26a271[_0x7b44('0x21')]=0x0;_0x26a271[_0x7b44('0x22')]=0x0;}}var _0xc49af5=_[_0x7b44('0x37')](_0x32ab5f,['id',_0x26a271['id']]);if(_0xc49af5)_[_0x7b44('0x17')](_0x26a271,_['pick'](_0xc49af5,_0x24cbb8));return _0x26a271;});}function updateAgentVoiceStatus(_0x392e80,_0x66a85e,_0x1faba7){var _0x209405=_['filter'](_0x1faba7,['queue',_0x66a85e[_0x7b44('0xf')]]);if(_0x209405[_0x7b44('0x38')]===0x0)return _0x392e80['busy']=!![];if(_[_0x7b44('0x39')](_0x209405,[_0x7b44('0x3a'),_0x392e80[_0x7b44('0x3b')][_0x7b44('0x3c')]()]))return _0x392e80[_0x7b44('0x1f')]=!![];if(!_0x392e80[_0x7b44('0x1f')])return _0x392e80[_0x7b44('0x35')]=!![];}function getVoiceQueueAgents(_0x170b43,_0x1b4d0c,_0xe8989a,_0x44d617){var _0x462fa2=_[_0x7b44('0x37')](_0x1b4d0c,['id',_0x170b43['id']]);if(!_0x462fa2)return _0x170b43;return _0x462fa2['getMembers']({'raw':!![]})['then'](function(_0x426be1){for(var _0xfa6f2a=0x0;_0xfa6f2a<_0x426be1[_0x7b44('0x38')];_0xfa6f2a++){var _0x123d90=_[_0x7b44('0x37')](_0xe8989a,['id',_0x426be1[_0xfa6f2a]['UserId']]);if(!_0x123d90){_0x123d90={'id':_0x426be1[_0xfa6f2a][_0x7b44('0x3d')],'name':_0x426be1[_0xfa6f2a][_0x7b44('0x3d')],'accountcode':'','online':![]};}var _0x22992e={'id':_0x123d90['id'],'name':_0x123d90['name'],'internal':_0x123d90[_0x7b44('0x3e')],'online':Boolean(_0x123d90[_0x7b44('0x3f')]),'paused':Boolean(_0x426be1[_0xfa6f2a]['paused'])};if(_0x123d90['voiceStatus']===_0x7b44('0x1f'))updateAgentVoiceStatus(_0x22992e,_0x170b43,_0x44d617);if(_0x22992e[_0x7b44('0x3f')])_0x170b43['loggedInDb']++;if(_0x22992e[_0x7b44('0x35')])_0x170b43[_0x7b44('0x35')]++;if(_0x22992e[_0x7b44('0x31')]&&!_0x22992e[_0x7b44('0x35')]&&!_0x22992e[_0x7b44('0x1f')])_0x170b43[_0x7b44('0x31')]++;_0x170b43[_0x7b44('0x30')]['push'](_0x22992e);}return _0x170b43;});}function getQueueAgents(_0x3feabd,_0x47065e,_0xa7662c){var _0xa75578='User'+_[_0x7b44('0x40')](_0xa7662c)+'Queue';var _0x4c607a=_0xa7662c+_0x7b44('0x41');return db[_0xa75578][_0x7b44('0x42')]({'where':{[_[_0x7b44('0x40')](_0xa7662c)+'QueueId']:_0x3feabd['id']},'raw':!![]})[_0x7b44('0x12')](function(_0x32f7e5){for(var _0x43621e=0x0;_0x43621e<_0x32f7e5[_0x7b44('0x38')];_0x43621e++){var _0x22dd2b=_[_0x7b44('0x37')](_0x47065e,['id',_0x32f7e5[_0x43621e][_0x7b44('0x3d')]]);if(!_0x22dd2b){_0x22dd2b={'id':_0x32f7e5[_0x43621e][_0x7b44('0x3d')],'name':_0x32f7e5[_0x43621e][_0x7b44('0x3d')],'online':![],['pauseField']:![]};}var _0x10c940={'id':_0x22dd2b['id'],'name':_0x22dd2b[_0x7b44('0xf')],'online':Boolean(_0x22dd2b[_0x7b44('0x3f')]),'paused':Boolean(_0x22dd2b[_0x4c607a])};if(_0x10c940[_0x7b44('0x3f')])_0x3feabd[_0x7b44('0x32')]++;_0x3feabd[_0x7b44('0x30')]['push'](_0x10c940);}return _0x3feabd;});}function isIdle(_0x302c4c){return _0x302c4c===_0x7b44('0x43')||_0x302c4c===_0x7b44('0x44')||_0x302c4c==='unavailable'||_0x302c4c===_0x7b44('0x45')||_['isNil'](_0x302c4c);}function isAgentPaused(_0x350421,_0x228f12){var _0x44c4fa=[_0x350421[_0x7b44('0x46')],_0x350421[_0x7b44('0x47')],_0x350421[_0x7b44('0x48')],_0x350421[_0x7b44('0x49')],_0x350421[_0x7b44('0x4a')],_0x350421[_0x7b44('0x4b')],_0x350421['whatsappPause']];if(!_0x228f12)return _['every'](_0x44c4fa);var _0x252bcf=_['filter'](_0x44c4fa);return _0x252bcf[_0x7b44('0x38')]>0x0&&_0x252bcf[_0x7b44('0x38')]<_0x44c4fa[_0x7b44('0x38')]?!![]:![];}function isAgentIdle(_0x203fc0){if(_0x203fc0[_0x7b44('0x4c')]!==_0x7b44('0x43')&&_0x203fc0[_0x7b44('0x4b')]){_0x203fc0['voiceStatus']='pause';return![];}return _['every']([_0x203fc0['chatStatus'],_0x203fc0['faxStatus'],_0x203fc0[_0x7b44('0x4d')],_0x203fc0[_0x7b44('0x4e')],_0x203fc0['smsStatus'],_0x203fc0[_0x7b44('0x4c')],_0x203fc0['whatsappStatus']],isIdle);}function getAgentStatus(_0x2e40d9){var _0x3e1322=_0x7b44('0x44');if(isAgentPaused(_0x2e40d9))_0x3e1322='pause';else if(isAgentPaused(_0x2e40d9,!![]))_0x3e1322='*pause';else if(isAgentIdle(_0x2e40d9))_0x3e1322=_0x7b44('0x43');else _0x3e1322=_0x7b44('0x35');return _0x3e1322;}exports['getAgents']=function(_0x22dece,_0x58e06f){var _0xe0787f={'count':0x0,'rows':[]},_0xab4094={},_0x74dbbd,_0x20fd86,_0x424020=['userpic',_0x7b44('0x3f'),_0x7b44('0x4f'),'lastPauseAt',_0x7b44('0x50'),'lastPauseAt',_0x7b44('0x3b'),_0x7b44('0x51'),'chatPause',_0x7b44('0x49'),'mailPause',_0x7b44('0x4a'),_0x7b44('0x52'),_0x7b44('0x47'),'voicePause',_0x7b44('0x53'),_0x7b44('0x54'),_0x7b44('0x55'),_0x7b44('0x56'),'whatsappCapacity','faxCapacity',_0x7b44('0x57'),_0x7b44('0x58'),'mailCurrentCapacity',_0x7b44('0x59'),_0x7b44('0x5a'),_0x7b44('0x5b'),_0x7b44('0x5c'),_0x7b44('0x4e'),_0x7b44('0x4d'),_0x7b44('0x5d'),_0x7b44('0x5e'),_0x7b44('0x5f'),'voiceStatus',_0x7b44('0x60'),_0x7b44('0x61'),_0x7b44('0x62'),_0x7b44('0x63'),_0x7b44('0x64'),'faxStatusTime',_0x7b44('0x65'),_0x7b44('0x66'),_0x7b44('0x67'),'screenrecording',_0x7b44('0x68'),_0x7b44('0x69'),_0x7b44('0x6a')],_0x364a1c=[_0x7b44('0x46'),_0x7b44('0x49'),'mailPause',_0x7b44('0x4a'),_0x7b44('0x52'),_0x7b44('0x47'),_0x7b44('0x4b'),'online'];Promise[_0x7b44('0x6b')]()['then'](function(){var _0x4c81c0=_['map'](db['User'][_0x7b44('0x6c')],function(_0x1b30cc){return{'name':_0x1b30cc[_0x7b44('0x6d')],'type':_0x1b30cc['type'][_0x7b44('0x6e')]};});_0x22dece[_0x7b44('0x6f')][_0x7b44('0x70')]=_0x7b44('0x71');_0x22dece[_0x7b44('0x6f')]['online']=!![];_0xab4094=qs[_0x7b44('0x72')](_0x4c81c0,_0x22dece);_0xab4094['raw']=!![];if(_0x22dece[_0x7b44('0x73')][_0x7b44('0x70')]===_0x7b44('0x73')){var _0x102cfc={'params':{'id':_0x22dece[_0x7b44('0x73')]['userProfileId']},'query':{'section':_0x7b44('0x14'),'role':'agent','online':!![],'nolimit':_0x22dece[_0x7b44('0x6f')][_0x7b44('0x74')],'sort':_0x22dece['query']['sort'],'filter':_0x22dece[_0x7b44('0x6f')]['filter']},'raw':!![]};return db[_0x7b44('0x75')][_0x7b44('0x76')](_0x102cfc);}return db[_0x7b44('0x77')]['findAndCountAll'](_0xab4094);})['then'](function(_0x259bbe){_0xe0787f[_0x7b44('0xa')]=_0x259bbe[_0x7b44('0xa')];_0x74dbbd=_0x259bbe[_0x7b44('0x78')];return getRealtimeAgents();})['then'](function(_0x5a3dd6){_0x20fd86=_0x5a3dd6[_0x7b44('0x78')];return _0x74dbbd['map'](function(_0x4f1e65){var _0x9777a=_['find'](_0x20fd86,['id',_0x4f1e65['id']]);if(_0x9777a)_[_0x7b44('0x17')](_0x4f1e65,_[_0x7b44('0x79')](_[_0x7b44('0x7a')](_0x9777a,_0x364a1c),_0x424020));_0x4f1e65[_0x7b44('0x7b')]=getAgentStatus(_0x4f1e65);return _0x4f1e65;});})[_0x7b44('0x12')](function(_0x5d7c89){if(_0x22dece[_0x7b44('0x6f')][_0x7b44('0x7c')]){var _0x386819=_[_0x7b44('0x7d')](_0x5d7c89,['globalStatus',_0x22dece['query'][_0x7b44('0x7c')]]);if(_0x22dece['query']['pauseTypeFilter']){_0x386819=_[_0x7b44('0x7d')](_0x386819,[_0x7b44('0x50'),_0x22dece[_0x7b44('0x6f')][_0x7b44('0x7e')]]);}}_0xe0787f[_0x7b44('0x78')]=_0x386819||_0x5d7c89;return _0xe0787f;})[_0x7b44('0x12')](respondWithFilteredResult(_0x58e06f,_0xab4094))[_0x7b44('0x1d')](handleError(_0x58e06f,null));};exports[_0x7b44('0x7f')]=function(_0x4311c2,_0x1f227d){var _0x326db7=[_0x7b44('0x80'),_0x7b44('0x81'),_0x7b44('0x82'),_0x7b44('0x83'),'fax',_0x7b44('0x84'),_0x7b44('0x18')];var _0xb913a={'count':0x0,'rows':[]},_0x5b0847={},_0x2b6636,_0x1140bd,_0x2cc25f,_0xcf0a1b,_0x4716fd;Promise[_0x7b44('0x6b')]()[_0x7b44('0x12')](function(){if(_0x4311c2[_0x7b44('0x6f')][_0x7b44('0x85')]){if(!_[_0x7b44('0x86')](_0x326db7,_0x4311c2[_0x7b44('0x6f')][_0x7b44('0x85')][_0x7b44('0x87')]()))throw new Error(_0x7b44('0x88'));_0x2b6636=_0x4311c2[_0x7b44('0x6f')]['channel'][_0x7b44('0x87')]();}var _0x4414ba=_[_0x7b44('0x40')](_0x2b6636)+_0x7b44('0x89');var _0x101d15=_[_0x7b44('0x8a')](db[_0x4414ba][_0x7b44('0x6c')],function(_0x1505f1){return{'name':_0x1505f1[_0x7b44('0x6d')],'type':_0x1505f1[_0x7b44('0x8b')][_0x7b44('0x6e')]};});_0x5b0847=qs[_0x7b44('0x72')](_0x101d15,_0x4311c2);if(_0x4311c2['user'][_0x7b44('0x70')]==='user'){var _0x4903e5={'params':{'id':_0x4311c2['user'][_0x7b44('0x8c')]},'query':{'section':_0x2b6636===_0x7b44('0x18')&&_0x4311c2[_0x7b44('0x6f')][_0x7b44('0x8b')]===_0x7b44('0x36')?_0x7b44('0x8d'):_[_0x7b44('0x40')](_0x2b6636)+_0x7b44('0x19'),'type':_0x4311c2[_0x7b44('0x6f')][_0x7b44('0x8b')],'nolimit':!![],'sort':_0x7b44('0xf'),'filter':_0x4311c2[_0x7b44('0x6f')][_0x7b44('0x7d')]}};return db['UserProfile']['getResources'](_0x4903e5);}return db[_0x4414ba][_0x7b44('0x8e')](_0x5b0847);})[_0x7b44('0x12')](function(_0x249e66){_0xb913a[_0x7b44('0xa')]=_0x249e66[_0x7b44('0xa')];_0x1140bd=_0x249e66[_0x7b44('0x78')];return getRealtimeQueues(_0x4311c2,_0x2b6636);})[_0x7b44('0x12')](function(_0x3b5a32){_0xcf0a1b=_0x3b5a32[_0x7b44('0x78')];return getRealtimeAgents();})[_0x7b44('0x12')](function(_0x22ed2e){_0x2cc25f=_0x22ed2e[_0x7b44('0x78')];if(_0x2b6636!=_0x7b44('0x18'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x324feb){_0x4716fd=_0x324feb?_0x324feb['rows']:[];return initializeQueues(_0x1140bd,_0xcf0a1b,_0x2b6636,_0x4311c2[_0x7b44('0x6f')][_0x7b44('0x8b')]);})['then'](function(_0x437887){var _0x1b3ca1=_0x437887[_0x7b44('0x8a')](function(_0x51efb6){if(_0x2b6636===_0x7b44('0x18'))return getVoiceQueueAgents(_0x51efb6,_0x1140bd,_0x2cc25f,_0x4716fd);else return getQueueAgents(_0x51efb6,_0x2cc25f,_0x2b6636);});return Promise['all'](_0x1b3ca1);})['then'](function(_0x23d9ba){_0xb913a[_0x7b44('0x78')]=_0x23d9ba;return _0xb913a;})[_0x7b44('0x12')](respondWithFilteredResult(_0x1f227d,_0x5b0847))[_0x7b44('0x1d')](handleError(_0x1f227d,null));};
\ No newline at end of file
index e97a5ee..da875bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x25250a,_0x59e01e){var _0x161338=function(_0x232a1a){while(--_0x232a1a){_0x25250a['push'](_0x25250a['shift']());}};_0x161338(++_0x59e01e);}(_0xe706,0xa3));var _0x6e70=function(_0x62c646,_0xa08641){_0x62c646=_0x62c646-0x0;var _0x2385f3=_0xe706[_0x62c646];return _0x2385f3;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x3983ff,_0x27b229){var _0x146863=function(_0x3a9fa2){while(--_0x3a9fa2){_0x3983ff['push'](_0x3983ff['shift']());}};_0x146863(++_0x27b229);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 157f61a..45cc2e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe714=['STRING','DATE','sequelize','INTEGER'];(function(_0x1aa832,_0x93f678){var _0x334378=function(_0x3ccb67){while(--_0x3ccb67){_0x1aa832['push'](_0x1aa832['shift']());}};_0x334378(++_0x93f678);}(_0xe714,0xe2));var _0x4e71=function(_0x57b440,_0x4c7333){_0x57b440=_0x57b440-0x0;var _0x4e513e=_0xe714[_0x57b440];return _0x4e513e;};'use strict';var Sequelize=require(_0x4e71('0x0'));module['exports']={'state':{'type':Sequelize[_0x4e71('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x4e71('0x2')]},'scheduledat':{'type':Sequelize[_0x4e71('0x3')]},'uniqueid':{'type':Sequelize[_0x4e71('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x4e71('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x4e71('0x2')]},'campaigntype':{'type':Sequelize[_0x4e71('0x2')]},'membername':{'type':Sequelize[_0x4e71('0x2')]}};
\ No newline at end of file
+var _0xfdcd=['DATE','exports','INTEGER','STRING'];(function(_0x28fbbf,_0x11f896){var _0x543af6=function(_0x27fa74){while(--_0x27fa74){_0x28fbbf['push'](_0x28fbbf['shift']());}};_0x543af6(++_0x11f896);}(_0xfdcd,0xe9));var _0xdfdc=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xfdcd[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require('sequelize');module[_0xdfdc('0x0')]={'state':{'type':Sequelize[_0xdfdc('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xdfdc('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0xdfdc('0x2')]},'starttime':{'type':Sequelize[_0xdfdc('0x3')]},'responsetime':{'type':Sequelize[_0xdfdc('0x3')]},'ringtime':{'type':Sequelize[_0xdfdc('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xdfdc('0x2')]},'campaigntype':{'type':Sequelize[_0xdfdc('0x2')]},'membername':{'type':Sequelize[_0xdfdc('0x2')]}};
\ No newline at end of file
index cac9558..b4224dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da9=['path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2da9,0x165));var _0x92da=function(_0x2022a9,_0x135d15){_0x2022a9=_0x2022a9-0x0;var _0x42182e=_0x2da9[_0x2022a9];return _0x42182e;};'use strict';var _=require(_0x92da('0x0'));var util=require(_0x92da('0x1'));var logger=require(_0x92da('0x2'))(_0x92da('0x3'));var moment=require(_0x92da('0x4'));var BPromise=require(_0x92da('0x5'));var rp=require(_0x92da('0x6'));var fs=require('fs');var path=require(_0x92da('0x7'));var rimraf=require(_0x92da('0x8'));var config=require(_0x92da('0x9'));var attributes=require(_0x92da('0xa'));module[_0x92da('0xb')]=function(_0x26e540,_0x1adb4b){return _0x26e540[_0x92da('0xc')](_0x92da('0xd'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e69=['../../config/environment','exports','define','ReportAgentPreview','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2a82eb,_0x24c347){var _0x4784a8=function(_0x3888c8){while(--_0x3888c8){_0x2a82eb['push'](_0x2a82eb['shift']());}};_0x4784a8(++_0x24c347);}(_0x0e69,0xbf));var _0x90e6=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0x0e69[_0x4ea69d];return _0x5318e0;};'use strict';var _=require('lodash');var util=require(_0x90e6('0x0'));var logger=require('../../config/logger')(_0x90e6('0x1'));var moment=require(_0x90e6('0x2'));var BPromise=require(_0x90e6('0x3'));var rp=require(_0x90e6('0x4'));var fs=require('fs');var path=require(_0x90e6('0x5'));var rimraf=require(_0x90e6('0x6'));var config=require(_0x90e6('0x7'));var attributes=require('./reportAgentPreview.attributes');module[_0x90e6('0x8')]=function(_0x38564e,_0x467407){return _0x38564e[_0x90e6('0x9')](_0x90e6('0xa'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59db1cf..8c126bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf28b=['request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','create','body','options','CreateReportAgentPreview','stringify','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4fdee1,_0x3f290c){var _0x87826e=function(_0x2cbeaa){while(--_0x2cbeaa){_0x4fdee1['push'](_0x4fdee1['shift']());}};_0x87826e(++_0x3f290c);}(_0xf28b,0x195));var _0xbf28=function(_0x12e264,_0xc4f87d){_0x12e264=_0x12e264-0x0;var _0x49e327=_0xf28b[_0x12e264];return _0x49e327;};'use strict';var _=require('lodash');var util=require(_0xbf28('0x0'));var moment=require(_0xbf28('0x1'));var BPromise=require('bluebird');var rs=require(_0xbf28('0x2'));var fs=require('fs');var Redis=require(_0xbf28('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbf28('0x4'));var logger=require(_0xbf28('0x5'))(_0xbf28('0x6'));var config=require(_0xbf28('0x7'));var jayson=require(_0xbf28('0x8'));var client=jayson[_0xbf28('0x9')][_0xbf28('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5c36cb,_0x10d821,_0x320d4b){return new BPromise(function(_0x7aa91f,_0xb3e556){return client[_0xbf28('0xb')](_0x5c36cb,_0x320d4b)[_0xbf28('0xc')](function(_0x300b47){logger['info'](_0xbf28('0xd'),_0x10d821,_0xbf28('0xe'));logger[_0xbf28('0xf')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x10d821,'request\x20sent',JSON['stringify'](_0x300b47));if(_0x300b47[_0xbf28('0x10')]){if(_0x300b47[_0xbf28('0x10')][_0xbf28('0x11')]===0x1f4){logger[_0xbf28('0x10')](_0xbf28('0xd'),_0x10d821,_0x300b47['error'][_0xbf28('0x12')]);return _0xb3e556(_0x300b47['error'][_0xbf28('0x12')]);}logger['error'](_0xbf28('0xd'),_0x10d821,_0x300b47[_0xbf28('0x10')]['message']);return _0x7aa91f(_0x300b47[_0xbf28('0x10')]['message']);}else{logger[_0xbf28('0x13')](_0xbf28('0xd'),_0x10d821,'request\x20sent');_0x7aa91f(_0x300b47['result'][_0xbf28('0x12')]);}})[_0xbf28('0x14')](function(_0x2fa9b5){logger[_0xbf28('0x10')](_0xbf28('0xd'),_0x10d821,_0x2fa9b5);_0xb3e556(_0x2fa9b5);});});}exports['CreateReportAgentPreview']=function(_0x58537f){var _0x4481c6=this;return new Promise(function(_0x1d78b2,_0x2d42d8){return db['ReportAgentPreview'][_0xbf28('0x15')](_0x58537f[_0xbf28('0x16')],{'raw':_0x58537f[_0xbf28('0x17')]?_0x58537f[_0xbf28('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xbf28('0xc')](function(_0x46a82c){logger[_0xbf28('0x13')](_0xbf28('0x18'),_0x58537f);logger['debug'](_0xbf28('0x18'),_0x58537f,JSON[_0xbf28('0x19')](_0x46a82c));_0x1d78b2(_0x46a82c);})[_0xbf28('0x14')](function(_0x55fed8){logger[_0xbf28('0x10')](_0xbf28('0x18'),_0x55fed8['message'],_0x58537f);_0x2d42d8(_0x4481c6[_0xbf28('0x10')](0x1f4,_0x55fed8[_0xbf28('0x12')]));});});};
\ No newline at end of file
+var _0xdfd4=['error','code','message','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','stringify','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdfd4,0xf3));var _0x4dfd=function(_0x3953fa,_0x4fc5b2){_0x3953fa=_0x3953fa-0x0;var _0xc22824=_0xdfd4[_0x3953fa];return _0xc22824;};'use strict';var _=require(_0x4dfd('0x0'));var util=require(_0x4dfd('0x1'));var moment=require('moment');var BPromise=require(_0x4dfd('0x2'));var rs=require(_0x4dfd('0x3'));var fs=require('fs');var Redis=require(_0x4dfd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4dfd('0x5'));var logger=require(_0x4dfd('0x6'))(_0x4dfd('0x7'));var config=require(_0x4dfd('0x8'));var jayson=require(_0x4dfd('0x9'));var client=jayson[_0x4dfd('0xa')][_0x4dfd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c7c8c,_0x470714,_0x1ae930){return new BPromise(function(_0xa9ef74,_0x5bf41f){return client[_0x4dfd('0xc')](_0x1c7c8c,_0x1ae930)[_0x4dfd('0xd')](function(_0x5a18c5){logger[_0x4dfd('0xe')](_0x4dfd('0xf'),_0x470714,_0x4dfd('0x10'));logger[_0x4dfd('0x11')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x470714,_0x4dfd('0x10'),JSON['stringify'](_0x5a18c5));if(_0x5a18c5[_0x4dfd('0x12')]){if(_0x5a18c5[_0x4dfd('0x12')][_0x4dfd('0x13')]===0x1f4){logger[_0x4dfd('0x12')]('ReportAgentPreview,\x20%s,\x20%s',_0x470714,_0x5a18c5[_0x4dfd('0x12')][_0x4dfd('0x14')]);return _0x5bf41f(_0x5a18c5[_0x4dfd('0x12')][_0x4dfd('0x14')]);}logger[_0x4dfd('0x12')]('ReportAgentPreview,\x20%s,\x20%s',_0x470714,_0x5a18c5[_0x4dfd('0x12')][_0x4dfd('0x14')]);return _0xa9ef74(_0x5a18c5['error'][_0x4dfd('0x14')]);}else{logger[_0x4dfd('0xe')](_0x4dfd('0xf'),_0x470714,_0x4dfd('0x10'));_0xa9ef74(_0x5a18c5['result']['message']);}})[_0x4dfd('0x15')](function(_0x30eab1){logger['error'](_0x4dfd('0xf'),_0x470714,_0x30eab1);_0x5bf41f(_0x30eab1);});});}exports[_0x4dfd('0x16')]=function(_0x4e47c7){var _0x1c6399=this;return new Promise(function(_0x3d7bb7,_0x50c053){return db[_0x4dfd('0x17')][_0x4dfd('0x18')](_0x4e47c7[_0x4dfd('0x19')],{'raw':_0x4e47c7[_0x4dfd('0x1a')]?_0x4e47c7[_0x4dfd('0x1a')][_0x4dfd('0x1b')]===undefined?!![]:![]:!![]})[_0x4dfd('0xd')](function(_0x5731a5){logger['info'](_0x4dfd('0x16'),_0x4e47c7);logger[_0x4dfd('0x11')](_0x4dfd('0x16'),_0x4e47c7,JSON[_0x4dfd('0x1c')](_0x5731a5));_0x3d7bb7(_0x5731a5);})[_0x4dfd('0x15')](function(_0x28ba88){logger[_0x4dfd('0x12')](_0x4dfd('0x16'),_0x28ba88['message'],_0x4e47c7);_0x50c053(_0x1c6399[_0x4dfd('0x12')](0x1f4,_0x28ba88['message']));});});};
\ No newline at end of file
index f1df7a5..0ffb779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96c4=['path','express','Router','../../components/auth/service','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','/chat/queues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','/sms/queues','smsQueues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','outbound','/outbound/channels','outboundChannels','agents','put','/agents/:id/capacity','agentCapacity','/telephones','trunks','/campaigns','campaigns','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer'];(function(_0x15f603,_0x19466a){var _0x26fd2e=function(_0x57f840){while(--_0x57f840){_0x15f603['push'](_0x15f603['shift']());}};_0x26fd2e(++_0x19466a);}(_0x96c4,0xf5));var _0x496c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x96c4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x496c('0x0'));var util=require('util');var path=require(_0x496c('0x1'));var express=require(_0x496c('0x2'));var router=express[_0x496c('0x3')]();var auth=require(_0x496c('0x4'));var controller=require('./rpc.controller');router[_0x496c('0x5')](_0x496c('0x6'),auth[_0x496c('0x7')](),controller[_0x496c('0x8')]);router[_0x496c('0x5')](_0x496c('0x9'),auth[_0x496c('0x7')](),controller[_0x496c('0xa')]);router[_0x496c('0x5')](_0x496c('0xb'),auth[_0x496c('0x7')](),controller[_0x496c('0xc')]);router[_0x496c('0x5')](_0x496c('0xd'),auth[_0x496c('0x7')](),controller['voiceQueues']);router[_0x496c('0x5')](_0x496c('0xe'),auth['isAuthenticated'](),controller['chatQueues']);router['get'](_0x496c('0xf'),auth['isAuthenticated'](),controller[_0x496c('0x10')]);router['get'](_0x496c('0x11'),auth[_0x496c('0x7')](),controller[_0x496c('0x12')]);router[_0x496c('0x5')](_0x496c('0x13'),auth['isAuthenticated'](),controller['openchannelQueues']);router[_0x496c('0x5')](_0x496c('0x14'),auth[_0x496c('0x7')](),controller[_0x496c('0x15')]);router[_0x496c('0x5')]('/whatsapp/queues',auth[_0x496c('0x7')](),controller[_0x496c('0x16')]);router[_0x496c('0x5')](_0x496c('0x17'),auth[_0x496c('0x7')](),controller[_0x496c('0x18')]);router[_0x496c('0x5')](_0x496c('0x19'),auth['isAuthenticated'](),controller[_0x496c('0x1a')]);router[_0x496c('0x5')](_0x496c('0x1b'),auth[_0x496c('0x7')](),controller['voiceQueuesChannels']);router['get'](_0x496c('0x1c'),auth[_0x496c('0x7')](),controller[_0x496c('0x1d')]);router[_0x496c('0x5')](_0x496c('0x1e'),auth[_0x496c('0x7')](),controller[_0x496c('0x1f')]);router[_0x496c('0x5')](_0x496c('0x20'),auth['isAuthenticated'](),controller['voiceQueuesChannelRedirect']);router[_0x496c('0x5')](_0x496c('0x21'),auth[_0x496c('0x7')](),controller[_0x496c('0x22')]);router['put'](_0x496c('0x21'),auth[_0x496c('0x7')](),controller['updateVoiceQueue']);router[_0x496c('0x5')]('/outbound',auth[_0x496c('0x7')](),controller[_0x496c('0x23')]);router['get'](_0x496c('0x24'),auth[_0x496c('0x7')](),controller[_0x496c('0x25')]);router['get']('/agents',auth[_0x496c('0x7')](),controller[_0x496c('0x26')]);router[_0x496c('0x27')](_0x496c('0x28'),auth[_0x496c('0x7')](),controller[_0x496c('0x29')]);router['get'](_0x496c('0x2a'),auth['isAuthenticated'](),controller['telephones']);router[_0x496c('0x5')]('/trunks',auth[_0x496c('0x7')](),controller[_0x496c('0x2b')]);router[_0x496c('0x5')](_0x496c('0x2c'),auth['isAuthenticated'](),controller[_0x496c('0x2d')]);router['get']('/fax/accounts',auth[_0x496c('0x7')](),controller[_0x496c('0x2e')]);router[_0x496c('0x5')](_0x496c('0x2f'),auth['isAuthenticated'](),controller[_0x496c('0x30')]);router[_0x496c('0x5')]('/mail/queues/waitinginteractions',auth[_0x496c('0x7')](),controller[_0x496c('0x31')]);router[_0x496c('0x5')](_0x496c('0x32'),auth[_0x496c('0x7')](),controller[_0x496c('0x33')]);router[_0x496c('0x5')](_0x496c('0x34'),auth[_0x496c('0x7')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0x496c('0x5')]('/sms/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x496c('0x35')]);router[_0x496c('0x5')](_0x496c('0x36'),auth[_0x496c('0x7')](),controller[_0x496c('0x37')]);router[_0x496c('0x5')](_0x496c('0x38'),auth[_0x496c('0x7')](),controller[_0x496c('0x39')]);router[_0x496c('0x3a')](_0x496c('0x3b'),auth[_0x496c('0x7')](),controller[_0x496c('0x3c')](_0x496c('0x3d')));router[_0x496c('0x5')](_0x496c('0x3e'),auth[_0x496c('0x7')](),controller[_0x496c('0x3f')]);router[_0x496c('0x3a')](_0x496c('0x40'),auth[_0x496c('0x7')](),controller[_0x496c('0x3c')](_0x496c('0x41')));router[_0x496c('0x5')]('/chat/queues/:id',auth[_0x496c('0x7')](),controller['showChatQueues']);router['post']('/fax/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0x496c('0x42')));router[_0x496c('0x5')](_0x496c('0x43'),auth['isAuthenticated'](),controller[_0x496c('0x44')]);router[_0x496c('0x3a')](_0x496c('0x45'),auth[_0x496c('0x7')](),controller[_0x496c('0x3c')](_0x496c('0x46')));router[_0x496c('0x5')]('/openchannel/queues/:id',auth[_0x496c('0x7')](),controller[_0x496c('0x47')]);router[_0x496c('0x3a')](_0x496c('0x48'),auth[_0x496c('0x7')](),controller[_0x496c('0x3c')](_0x496c('0x49')));router['post'](_0x496c('0x4a'),auth[_0x496c('0x7')](),controller['queueNotify'](_0x496c('0x4b')));router[_0x496c('0x5')](_0x496c('0x4c'),auth[_0x496c('0x7')](),controller[_0x496c('0x4d')]);router[_0x496c('0x5')](_0x496c('0x4e'),auth[_0x496c('0x7')](),controller[_0x496c('0x4f')]);router[_0x496c('0x3a')](_0x496c('0x50'),auth[_0x496c('0x7')](),controller[_0x496c('0x51')]);module['exports']=router;
\ No newline at end of file
+var _0x24b7=['voiceChannelStopMixMonitor','/voice/queues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','/outbound','outbound','/agents','agents','/agents/:id/capacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','/openchannel/queues/:id','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','/agents/:id/notify','exports','multer','util','path','express','Router','../../components/auth/service','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','/voice/channels/:uniqueid/stopmixmonitor'];(function(_0xb6d873,_0x36f194){var _0x385543=function(_0xfdf236){while(--_0xfdf236){_0xb6d873['push'](_0xb6d873['shift']());}};_0x385543(++_0x36f194);}(_0x24b7,0x140));var _0x724b=function(_0x2879cc,_0x2c62c5){_0x2879cc=_0x2879cc-0x0;var _0x2c321d=_0x24b7[_0x2879cc];return _0x2c321d;};'use strict';var multer=require(_0x724b('0x0'));var util=require(_0x724b('0x1'));var path=require(_0x724b('0x2'));var express=require(_0x724b('0x3'));var router=express[_0x724b('0x4')]();var auth=require(_0x724b('0x5'));var controller=require('./rpc.controller');router[_0x724b('0x6')](_0x724b('0x7'),auth[_0x724b('0x8')](),controller[_0x724b('0x9')]);router[_0x724b('0x6')](_0x724b('0xa'),auth[_0x724b('0x8')](),controller['voiceChannelMixMonitor']);router[_0x724b('0x6')](_0x724b('0xb'),auth[_0x724b('0x8')](),controller[_0x724b('0xc')]);router[_0x724b('0x6')](_0x724b('0xd'),auth[_0x724b('0x8')](),controller['voiceQueues']);router[_0x724b('0x6')](_0x724b('0xe'),auth[_0x724b('0x8')](),controller[_0x724b('0xf')]);router[_0x724b('0x6')](_0x724b('0x10'),auth[_0x724b('0x8')](),controller[_0x724b('0x11')]);router[_0x724b('0x6')](_0x724b('0x12'),auth[_0x724b('0x8')](),controller[_0x724b('0x13')]);router[_0x724b('0x6')](_0x724b('0x14'),auth[_0x724b('0x8')](),controller[_0x724b('0x15')]);router[_0x724b('0x6')](_0x724b('0x16'),auth['isAuthenticated'](),controller[_0x724b('0x17')]);router[_0x724b('0x6')](_0x724b('0x18'),auth[_0x724b('0x8')](),controller[_0x724b('0x19')]);router[_0x724b('0x6')]('/fax/queues',auth[_0x724b('0x8')](),controller[_0x724b('0x1a')]);router[_0x724b('0x6')]('/voice/queues/preview/:id',auth[_0x724b('0x8')](),controller[_0x724b('0x1b')]);router[_0x724b('0x6')](_0x724b('0x1c'),auth[_0x724b('0x8')](),controller[_0x724b('0x1d')]);router[_0x724b('0x6')](_0x724b('0x1e'),auth['isAuthenticated'](),controller['voiceQueuesChannel']);router['get'](_0x724b('0x1f'),auth[_0x724b('0x8')](),controller[_0x724b('0x20')]);router[_0x724b('0x6')](_0x724b('0x21'),auth[_0x724b('0x8')](),controller[_0x724b('0x22')]);router['get']('/voice/queues/:id',auth[_0x724b('0x8')](),controller[_0x724b('0x23')]);router[_0x724b('0x24')](_0x724b('0x25'),auth['isAuthenticated'](),controller['updateVoiceQueue']);router[_0x724b('0x6')](_0x724b('0x26'),auth['isAuthenticated'](),controller[_0x724b('0x27')]);router['get']('/outbound/channels',auth[_0x724b('0x8')](),controller['outboundChannels']);router[_0x724b('0x6')](_0x724b('0x28'),auth[_0x724b('0x8')](),controller[_0x724b('0x29')]);router['put'](_0x724b('0x2a'),auth[_0x724b('0x8')](),controller['agentCapacity']);router['get'](_0x724b('0x2b'),auth[_0x724b('0x8')](),controller[_0x724b('0x2c')]);router[_0x724b('0x6')](_0x724b('0x2d'),auth[_0x724b('0x8')](),controller[_0x724b('0x2e')]);router[_0x724b('0x6')](_0x724b('0x2f'),auth[_0x724b('0x8')](),controller[_0x724b('0x30')]);router[_0x724b('0x6')](_0x724b('0x31'),auth['isAuthenticated'](),controller[_0x724b('0x32')]);router['get'](_0x724b('0x33'),auth['isAuthenticated'](),controller['chatQueuesWaitingInteractions']);router['get'](_0x724b('0x34'),auth[_0x724b('0x8')](),controller[_0x724b('0x35')]);router[_0x724b('0x6')](_0x724b('0x36'),auth[_0x724b('0x8')](),controller[_0x724b('0x37')]);router[_0x724b('0x6')](_0x724b('0x38'),auth[_0x724b('0x8')](),controller[_0x724b('0x39')]);router[_0x724b('0x6')]('/sms/queues/waitinginteractions',auth[_0x724b('0x8')](),controller[_0x724b('0x3a')]);router[_0x724b('0x6')]('/whatsapp/queues/waitinginteractions',auth[_0x724b('0x8')](),controller[_0x724b('0x3b')]);router[_0x724b('0x6')](_0x724b('0x3c'),auth['isAuthenticated'](),controller['faxQueuesWaitingInteractions']);router[_0x724b('0x3d')](_0x724b('0x3e'),auth[_0x724b('0x8')](),controller[_0x724b('0x3f')](_0x724b('0x40')));router[_0x724b('0x6')](_0x724b('0x41'),auth[_0x724b('0x8')](),controller[_0x724b('0x42')]);router[_0x724b('0x3d')](_0x724b('0x43'),auth[_0x724b('0x8')](),controller['queueNotify'](_0x724b('0x44')));router[_0x724b('0x6')](_0x724b('0x45'),auth[_0x724b('0x8')](),controller['showChatQueues']);router[_0x724b('0x3d')](_0x724b('0x46'),auth[_0x724b('0x8')](),controller[_0x724b('0x3f')](_0x724b('0x47')));router['get'](_0x724b('0x48'),auth[_0x724b('0x8')](),controller[_0x724b('0x49')]);router[_0x724b('0x3d')](_0x724b('0x4a'),auth[_0x724b('0x8')](),controller[_0x724b('0x3f')]('openchannel'));router[_0x724b('0x6')](_0x724b('0x4b'),auth[_0x724b('0x8')](),controller['showOpenchannelQueues']);router[_0x724b('0x3d')]('/sms/queues/:id/notify',auth[_0x724b('0x8')](),controller['queueNotify']('sms'));router[_0x724b('0x3d')](_0x724b('0x4c'),auth[_0x724b('0x8')](),controller['queueNotify'](_0x724b('0x4d')));router[_0x724b('0x6')](_0x724b('0x4e'),auth['isAuthenticated'](),controller[_0x724b('0x4f')]);router[_0x724b('0x6')](_0x724b('0x50'),auth[_0x724b('0x8')](),controller['showWhatsappQueues']);router[_0x724b('0x3d')](_0x724b('0x51'),auth['isAuthenticated'](),controller['agentNotify']);module[_0x724b('0x52')]=router;
\ No newline at end of file
index 29d6632..557d4a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd51=['chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','value','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','chat','Website','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','MessageId','InteractionId','From','QueueId','create','Start','queue','*,*,*,*','Channel\x20field\x20is\x20mandatory','channel','capitalize','Agent\x20not\x20found','TransferReport','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','../../config/logger','client','http','request','error','code','message','catch','status','json','stack','send','isNil','rows','find','voiceChannels','VoiceChannels','query','then','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','Agents','interaction','user','name','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','interface','SIP/%s','agent','internal','capacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','showChatQueues','mailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','showOpenchannelQueues','smsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts'];(function(_0x3f0d76,_0x378fed){var _0x12c12e=function(_0x5c7fbc){while(--_0x5c7fbc){_0x3f0d76['push'](_0x3f0d76['shift']());}};_0x12c12e(++_0x378fed);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x232b4a,_0x4a3857){_0x232b4a=_0x232b4a-0x0;var _0xabce11=_0xbd51[_0x232b4a];return _0xabce11;};'use strict';var BPromise=require(_0x1bd5('0x0'));var moment=require('moment');var _=require(_0x1bd5('0x1'));var util=require(_0x1bd5('0x2'));var db=require(_0x1bd5('0x3'))['db'];var logger=require(_0x1bd5('0x4'))('api');var jayson=require('jayson/promise');var amiClient=jayson['client']['http']({'port':0x232a});var mailClient=jayson[_0x1bd5('0x5')][_0x1bd5('0x6')]({'port':0x232b});var routingClient=jayson[_0x1bd5('0x5')]['http']({'port':0x232c});function respondWithRpcPromise(_0x29abea,_0x30a385,_0x19077c){return new BPromise(function(_0x27d58f,_0xd8418f){var _0x4a7f90=_0x19077c?_0x19077c:amiClient;return _0x4a7f90[_0x1bd5('0x7')](_0x29abea,_0x30a385)['then'](function(_0x2bd975){if(_0x2bd975[_0x1bd5('0x8')]){if(_0x2bd975[_0x1bd5('0x8')][_0x1bd5('0x9')]===0x1f4){return _0xd8418f(_0x2bd975[_0x1bd5('0x8')][_0x1bd5('0xa')]);}return _0x27d58f(_0x2bd975['error'][_0x1bd5('0xa')]);}else{_0x27d58f(_0x2bd975['result']);}})[_0x1bd5('0xb')](function(_0x24e38c){_0xd8418f(_0x24e38c);});});}function respondWithResult(_0x37e8e1,_0x14606b){_0x14606b=_0x14606b||0xc8;return function(_0x177be0){if(_0x177be0){return _0x37e8e1[_0x1bd5('0xc')](_0x14606b)[_0x1bd5('0xd')](_0x177be0);}return _0x37e8e1['sendStatus'](0x194);};}function handleError(_0x5650b5,_0x8b2390){_0x8b2390=_0x8b2390||0x1f4;return function(_0x6d2c40){logger[_0x1bd5('0x8')](_0x6d2c40[_0x1bd5('0xe')]);if(_0x6d2c40['name']){delete _0x6d2c40['name'];}_0x5650b5[_0x1bd5('0xc')](_0x8b2390)[_0x1bd5('0xf')](_0x6d2c40);};}function findById(_0x2b2c57){return function(_0x4793dd){if(!_[_0x1bd5('0x10')](_0x2b2c57)&&!_[_0x1bd5('0x10')](_0x4793dd)&&!_[_0x1bd5('0x10')](_0x4793dd[_0x1bd5('0x11')])){return _[_0x1bd5('0x12')](_0x4793dd['rows'],function(_0x53ad5e){return _0x53ad5e['id']==_0x2b2c57;});}return null;};}exports[_0x1bd5('0x13')]=function(_0x260827,_0x476bd1){return respondWithRpcPromise(_0x1bd5('0x14'),_0x260827[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x476bd1,null))[_0x1bd5('0xb')](handleError(_0x476bd1,null));};exports[_0x1bd5('0x17')]=function(_0x456051,_0xb1ac1e){return respondWithRpcPromise(_0x1bd5('0x18'),_[_0x1bd5('0x19')](_0x456051[_0x1bd5('0x15')],_0x456051[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0xb1ac1e,null))[_0x1bd5('0xb')](handleError(_0xb1ac1e,null));};exports[_0x1bd5('0x1b')]=function(_0x29c340,_0x5567c9){return respondWithRpcPromise(_0x1bd5('0x1c'),_['merge'](_0x29c340[_0x1bd5('0x15')],_0x29c340[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x5567c9,null))['catch'](handleError(_0x5567c9,null));};exports[_0x1bd5('0x1d')]=function(_0x4fa37c,_0x2ed551){return respondWithRpcPromise(_0x1bd5('0x1e'),_0x4fa37c[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x2ed551,null))['catch'](handleError(_0x2ed551,null));};exports[_0x1bd5('0x1f')]=function(_0x69bb17,_0x20245c){return respondWithRpcPromise(_0x1bd5('0x1e'),_0x69bb17['query'])[_0x1bd5('0x16')](findById(_0x69bb17[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x20245c,null))[_0x1bd5('0xb')](handleError(_0x20245c,null));};exports[_0x1bd5('0x20')]=function(_0xc73670,_0x4e72b2){return respondWithRpcPromise(_0x1bd5('0x21'),_[_0x1bd5('0x19')](_0xc73670[_0x1bd5('0x22')],_0xc73670['params']))[_0x1bd5('0x16')](respondWithResult(_0x4e72b2,null))[_0x1bd5('0xb')](handleError(_0x4e72b2,null));};exports[_0x1bd5('0x23')]=function(_0x3430bf,_0x1f4456){return respondWithRpcPromise(_0x1bd5('0x24'),_['merge'](_0x3430bf['query'],_0x3430bf[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x1f4456,null))['catch'](handleError(_0x1f4456,null));};exports[_0x1bd5('0x25')]=function(_0x198b88,_0x1efa8c){return respondWithRpcPromise(_0x1bd5('0x26'),_0x198b88['query'])[_0x1bd5('0x16')](respondWithResult(_0x1efa8c,null))[_0x1bd5('0xb')](handleError(_0x1efa8c,null));};exports[_0x1bd5('0x27')]=function(_0x233743,_0x209ce1){return respondWithRpcPromise(_0x1bd5('0x28'),_[_0x1bd5('0x19')](_0x233743[_0x1bd5('0x15')],_0x233743['params']))[_0x1bd5('0x16')](respondWithResult(_0x209ce1,null))[_0x1bd5('0xb')](handleError(_0x209ce1,null));};exports[_0x1bd5('0x29')]=function(_0x24c92e,_0x11a6d2){return respondWithRpcPromise(_0x1bd5('0x2a'),_[_0x1bd5('0x19')](_0x24c92e['query'],_0x24c92e[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x11a6d2,null))[_0x1bd5('0xb')](handleError(_0x11a6d2,null));};exports[_0x1bd5('0x2b')]=function(_0x3cf898,_0x192ca7){return respondWithRpcPromise(_0x1bd5('0x2c'),_['merge'](_0x3cf898['query'],_0x3cf898[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x192ca7,null))[_0x1bd5('0xb')](handleError(_0x192ca7,null));};exports['outbound']=function(_0x4595a0,_0x5af974){return respondWithRpcPromise(_0x1bd5('0x2d'),_0x4595a0[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x5af974,null))[_0x1bd5('0xb')](handleError(_0x5af974,null));};exports[_0x1bd5('0x2e')]=function(_0x2470ec,_0x41096d){return respondWithRpcPromise(_0x1bd5('0x2f'),_0x2470ec['query'])[_0x1bd5('0x16')](respondWithResult(_0x41096d,null))[_0x1bd5('0xb')](handleError(_0x41096d,null));};exports['agents']=function(_0x3b5a0d,_0x77ebcf){var _0x20b25c;return respondWithRpcPromise('Agents',_0x3b5a0d[_0x1bd5('0x15')])[_0x1bd5('0x16')](function(_0x2997a2){_0x20b25c=_0x2997a2;return respondWithRpcPromise(_0x1bd5('0x30'),_0x3b5a0d['query'],routingClient);})[_0x1bd5('0x16')](function(_0x22f437){return _[_0x1bd5('0x19')]({},_0x22f437,_0x20b25c);})[_0x1bd5('0x16')](respondWithResult(_0x77ebcf,null))['catch'](handleError(_0x77ebcf,null));};exports['agentCapacity']=function(_0x40eeff,_0x35afc7){if(_0x40eeff[_0x1bd5('0x22')]&&_0x40eeff['body'][_0x1bd5('0x31')]&&_0x40eeff[_0x1bd5('0x32')]&&_0x40eeff['user'][_0x1bd5('0x33')]){for(var _0x5761b8 in _0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')]){if(_0x40eeff['body'][_0x1bd5('0x31')][_0x1bd5('0x34')](_0x5761b8)){db[_0x1bd5('0x35')][_0x1bd5('0x36')]({'where':{'channel':_0x5761b8,'membername':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')],'type':_0x1bd5('0x37'),'exitAt':null,'uniqueid':_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8]&&_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8][_0x1bd5('0x38')]?{'$notIn':_0x40eeff['body'][_0x1bd5('0x31')][_0x5761b8]}:{'$ne':null}}})[_0x1bd5('0x16')](function(_0x335125){var _0x52ade4=moment()[_0x1bd5('0x39')](_0x1bd5('0x3a'));for(var _0x5bb8a6=0x0,_0x1dbde9=_0x335125['length'];_0x5bb8a6<_0x1dbde9;_0x5bb8a6+=0x1){_0x335125[_0x5bb8a6][_0x1bd5('0x3b')]({'exitAt':_0x52ade4});}});for(var _0x558fec=0x0;_0x558fec<_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8]['length'];_0x558fec+=0x1){db[_0x1bd5('0x35')]['findOrCreate']({'where':{'channel':_0x5761b8,'membername':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')],'type':_0x1bd5('0x37'),'uniqueid':_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8][_0x558fec],'exitAt':null},'defaults':{'channel':_0x5761b8,'membername':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')],'interface':_[_0x1bd5('0x10')](_0x40eeff['user'][_0x1bd5('0x3c')])?util[_0x1bd5('0x39')](_0x1bd5('0x3d'),_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')]):_0x40eeff[_0x1bd5('0x32')]['interface'],'type':_0x1bd5('0x37'),'enterAt':moment()[_0x1bd5('0x39')](_0x1bd5('0x3a')),'role':_0x1bd5('0x3e'),'internal':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x3f')],'uniqueid':_0x40eeff[_0x1bd5('0x22')]['interaction'][_0x5761b8][_0x558fec]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x40eeff[_0x1bd5('0x1a')]['id'],'capacity':_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x40')]},routingClient)['then'](respondWithResult(_0x35afc7,null))[_0x1bd5('0xb')](handleError(_0x35afc7,null));};exports[_0x1bd5('0x41')]=function(_0x1ad2ff,_0x1f2d7e){return respondWithRpcPromise(_0x1bd5('0x42'),_0x1ad2ff[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x1f2d7e,null))['catch'](handleError(_0x1f2d7e,null));};exports[_0x1bd5('0x43')]=function(_0x2bcd23,_0x4f2d91){return respondWithRpcPromise(_0x1bd5('0x44'),_0x2bcd23['query'])[_0x1bd5('0x16')](respondWithResult(_0x4f2d91,null))['catch'](handleError(_0x4f2d91,null));};exports[_0x1bd5('0x45')]=function(_0x555ba1,_0x5a011e){return respondWithRpcPromise(_0x1bd5('0x46'),_0x555ba1[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x5a011e,null))[_0x1bd5('0xb')](handleError(_0x5a011e,null));};exports[_0x1bd5('0x47')]=function(_0x33f011,_0x35c478){return respondWithRpcPromise('ChatQueues',_0x33f011[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x35c478,null))[_0x1bd5('0xb')](handleError(_0x35c478,null));};exports[_0x1bd5('0x48')]=function(_0x2cc5ba,_0x5a8132){return respondWithRpcPromise('ChatQueues',_0x2cc5ba[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0x2cc5ba[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x5a8132,null))[_0x1bd5('0xb')](handleError(_0x5a8132,null));};exports[_0x1bd5('0x49')]=function(_0x46e36c,_0x383a68){return respondWithRpcPromise(_0x1bd5('0x4a'),_0x46e36c[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x383a68,null))[_0x1bd5('0xb')](handleError(_0x383a68,null));};exports['showMailQueues']=function(_0x2fe8f4,_0x34d93b){return respondWithRpcPromise(_0x1bd5('0x4a'),_0x2fe8f4['query'],routingClient)[_0x1bd5('0x16')](findById(_0x2fe8f4[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x34d93b,null))['catch'](handleError(_0x34d93b,null));};exports[_0x1bd5('0x4b')]=function(_0x10103a,_0x39f973){return respondWithRpcPromise(_0x1bd5('0x4c'),_0x10103a['query'],mailClient)['then'](respondWithResult(_0x39f973,null))[_0x1bd5('0xb')](handleError(_0x39f973,null));};exports[_0x1bd5('0x4d')]=function(_0x1790af,_0x54a8c4){return respondWithRpcPromise('OpenchannelQueues',_0x1790af[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x54a8c4,null))[_0x1bd5('0xb')](handleError(_0x54a8c4,null));};exports[_0x1bd5('0x4e')]=function(_0x5068ae,_0x32f646){return respondWithRpcPromise('OpenchannelQueues',_0x5068ae[_0x1bd5('0x15')],routingClient)['then'](findById(_0x5068ae[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x32f646,null))['catch'](handleError(_0x32f646,null));};exports[_0x1bd5('0x4f')]=function(_0x19f765,_0x47ca3f){return respondWithRpcPromise('SmsQueues',_0x19f765[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x47ca3f,null))['catch'](handleError(_0x47ca3f,null));};exports[_0x1bd5('0x50')]=function(_0x40b508,_0x5da595){return respondWithRpcPromise('SmsQueues',_0x40b508[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0x40b508[_0x1bd5('0x1a')]['id']))['then'](respondWithResult(_0x5da595,null))[_0x1bd5('0xb')](handleError(_0x5da595,null));};exports[_0x1bd5('0x51')]=function(_0x5c1db7,_0x4b317d){return respondWithRpcPromise(_0x1bd5('0x52'),_0x5c1db7[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x4b317d,null))[_0x1bd5('0xb')](handleError(_0x4b317d,null));};exports[_0x1bd5('0x53')]=function(_0x53c6de,_0x3827d7){return respondWithRpcPromise('WhatsappQueues',_0x53c6de[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0x53c6de[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x3827d7,null))['catch'](handleError(_0x3827d7,null));};exports['faxQueues']=function(_0x3a7dd6,_0x36d62e){return respondWithRpcPromise(_0x1bd5('0x54'),_0x3a7dd6[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x36d62e,null))[_0x1bd5('0xb')](handleError(_0x36d62e,null));};exports[_0x1bd5('0x55')]=function(_0xc080d5,_0x1a35cf){return respondWithRpcPromise(_0x1bd5('0x54'),_0xc080d5[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0xc080d5[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x1a35cf,null))[_0x1bd5('0xb')](handleError(_0x1a35cf,null));};exports[_0x1bd5('0x56')]=function(_0x1b99ff,_0x195176){return respondWithRpcPromise(_0x1bd5('0x57'),_0x1b99ff[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x195176,null))[_0x1bd5('0xb')](handleError(_0x195176,null));};exports[_0x1bd5('0x58')]=function(_0x3ddf27,_0x56e99c){return respondWithRpcPromise(_0x1bd5('0x59'),_0x3ddf27[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x56e99c,null))[_0x1bd5('0xb')](handleError(_0x56e99c,null));};exports[_0x1bd5('0x5a')]=function(_0x37a6f3,_0x1e282c){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x37a6f3[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x1e282c,null))[_0x1bd5('0xb')](handleError(_0x1e282c,null));};exports[_0x1bd5('0x5b')]=function(_0x590b3d,_0x2ed59d){return respondWithRpcPromise(_0x1bd5('0x5c'),_0x590b3d[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x2ed59d,null))[_0x1bd5('0xb')](handleError(_0x2ed59d,null));};exports[_0x1bd5('0x5d')]=function(_0x32a878,_0x4cc7a5){return respondWithRpcPromise(_0x1bd5('0x5c'),_0x32a878['query'],routingClient)['then'](function(_0x34f98c){if(_0x32a878['query'][_0x1bd5('0x5e')]!==undefined){var _0x1a4ee6=_(_0x34f98c['rows'])[_0x1bd5('0x5f')]([_0x32a878[_0x1bd5('0x15')][_0x1bd5('0x5e')],_0x32a878[_0x1bd5('0x1a')]['id']])[_0x1bd5('0x60')](_0x1bd5('0x61'))['uniq']()[_0x1bd5('0x62')]();return _0x34f98c[_0x1bd5('0x11')][_0x1bd5('0x5f')](function(_0x1c9cec){return _0x1a4ee6['indexOf'](_0x1c9cec['queue_id'])>-0x1;});}else{return _0x34f98c[_0x1bd5('0x11')][_0x1bd5('0x5f')](function(_0x2fe037){return _0x2fe037[_0x1bd5('0x61')]===parseInt(_0x32a878['params']['id']);});}})[_0x1bd5('0x16')](respondWithResult(_0x4cc7a5,null))['catch'](handleError(_0x4cc7a5,null));};exports['smsQueuesWaitingInteractions']=function(_0x3a203f,_0x5045f9){return respondWithRpcPromise(_0x1bd5('0x63'),_0x3a203f[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x5045f9,null))[_0x1bd5('0xb')](handleError(_0x5045f9,null));};exports[_0x1bd5('0x64')]=function(_0xab4ed6,_0x232077){return respondWithRpcPromise(_0x1bd5('0x65'),_0xab4ed6[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x232077,null))[_0x1bd5('0xb')](handleError(_0x232077,null));};exports['faxQueuesWaitingInteractions']=function(_0x58c715,_0x59b491){return respondWithRpcPromise(_0x1bd5('0x66'),_0x58c715['query'],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x59b491,null))[_0x1bd5('0xb')](handleError(_0x59b491,null));};exports[_0x1bd5('0x67')]=function(_0x4a3f74){return function(_0x201968,_0x91bcf8){var _0x3410f8,_0x52cd5f;var _0xfc9282=_['capitalize'](_0x4a3f74);var _0x327eb6=_0x4a3f74===_0x1bd5('0x68')?_0x1bd5('0x69'):'Account';return db[_0xfc9282+'Queue'][_0x1bd5('0x6a')]({'raw':!![],'where':{'id':_0x201968['params']['id']}})[_0x1bd5('0x16')](function(_0x53be05){if(_[_0x1bd5('0x10')](_0x53be05)){throw new Error(_0xfc9282+_0x1bd5('0x6b'));}_0x3410f8=_0x53be05;return db[_0xfc9282+_0x1bd5('0x6c')][_0x1bd5('0x6a')]({'where':{'id':_0x201968[_0x1bd5('0x22')][_0x1bd5('0x6d')]},'include':[{'model':db[_0xfc9282+_0x1bd5('0x6e')],'as':_0x1bd5('0x6e')},{'model':db[_0xfc9282+_0x327eb6],'as':_0x1bd5('0x6f')}]});})[_0x1bd5('0x16')](function(_0x3c90dc){if(_[_0x1bd5('0x10')](_0x3c90dc)){throw new Error(_0xfc9282+_0x1bd5('0x70'));}_0x52cd5f=_0x3c90dc;return _0x3c90dc[_0x1bd5('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x2a1b4a={'uniqueid':_0x4a3f74+'.'+_0x52cd5f['id']+'.'+_0x52cd5f[_0x1bd5('0x6e')]['id'],'FromUserId':_0x201968[_0x1bd5('0x32')]['id'],'type':'queue'};_0x2a1b4a[_0xfc9282+_0x1bd5('0x72')]=_0x52cd5f['id'];_0x2a1b4a[_0xfc9282+_0x1bd5('0x73')]=_0x52cd5f['Interaction']['id'];_0x2a1b4a[_0x1bd5('0x74')+_0xfc9282+_0x327eb6+'Id']=_0x52cd5f[_0x1bd5('0x6f')]['id'];_0x2a1b4a['To'+_0xfc9282+_0x1bd5('0x75')]=_0x3410f8['id'];return db[_0xfc9282+'TransferReport'][_0x1bd5('0x76')](_0x2a1b4a);})[_0x1bd5('0x16')](function(){return respondWithRpcPromise(_0x1bd5('0x77'),{'channel':_0x4a3f74,'interaction':_0x52cd5f[_0x1bd5('0x6e')],'message':_0x52cd5f,'account':_0x52cd5f['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x1bd5('0x78'),'appdata':_0x3410f8[_0x1bd5('0x33')]+','+(_0x52cd5f[_0x1bd5('0x6f')]['queueTransferTimeout']||0x12c),'interval':_0x1bd5('0x79')}]},routingClient);})[_0x1bd5('0x16')](respondWithResult(_0x91bcf8,null))['catch'](handleError(_0x91bcf8,null));};};exports['agentNotify']=function(_0x4230e9,_0x182d75){var _0x5c9098,_0x5d6b17;if(_[_0x1bd5('0x10')](_0x4230e9['body']['channel'])){throw new Error(_0x1bd5('0x7a'));}var _0x5cb13d=_0x4230e9[_0x1bd5('0x22')][_0x1bd5('0x7b')];var _0x5df043=_[_0x1bd5('0x7c')](_0x5cb13d);var _0x254c8d=_0x5cb13d===_0x1bd5('0x68')?'Website':_0x1bd5('0x6f');return db['User'][_0x1bd5('0x6a')]({'raw':!![],'where':{'id':_0x4230e9[_0x1bd5('0x1a')]['id'],'role':_0x1bd5('0x3e')}})[_0x1bd5('0x16')](function(_0x2f9dff){if(_['isNil'](_0x2f9dff)){throw new Error(_0x1bd5('0x7d'));}_0x5c9098=_0x2f9dff;return db[_0x5df043+'Message'][_0x1bd5('0x6a')]({'where':{'id':_0x4230e9['body']['messageId']},'include':[{'model':db[_0x5df043+_0x1bd5('0x6e')],'as':_0x1bd5('0x6e')},{'model':db[_0x5df043+_0x254c8d],'as':_0x1bd5('0x6f')}]});})[_0x1bd5('0x16')](function(_0x4c9931){if(_[_0x1bd5('0x10')](_0x4c9931)){throw new Error(_0x5df043+_0x1bd5('0x70'));}_0x5d6b17=_0x4c9931;return _0x4c9931[_0x1bd5('0x71')]({'read':0x0,'readAt':null,'UserId':null});})[_0x1bd5('0x16')](function(){var _0x15e584={'uniqueid':_0x5cb13d+'.'+_0x5d6b17['id']+'.'+_0x5d6b17[_0x1bd5('0x6e')]['id'],'FromUserId':_0x4230e9[_0x1bd5('0x32')]['id'],'type':_0x1bd5('0x78'),'ToUserId':_0x5c9098['id']};_0x15e584[_0x5df043+_0x1bd5('0x72')]=_0x5d6b17['id'];_0x15e584[_0x5df043+_0x1bd5('0x73')]=_0x5d6b17[_0x1bd5('0x6e')]['id'];_0x15e584[_0x1bd5('0x74')+_0x5df043+_0x254c8d+'Id']=_0x5d6b17[_0x1bd5('0x6f')]['id'];return db[_0x5df043+_0x1bd5('0x7e')]['create'](_0x15e584);})[_0x1bd5('0x16')](function(){return respondWithRpcPromise(_0x1bd5('0x77'),{'channel':_0x5cb13d,'interaction':_0x5d6b17[_0x1bd5('0x6e')],'message':_0x5d6b17,'account':_0x5d6b17[_0x1bd5('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0x1bd5('0x3e'),'appdata':_0x5c9098[_0x1bd5('0x33')]+','+(_0x5d6b17[_0x1bd5('0x6f')][_0x1bd5('0x7f')]||0x12c),'interval':_0x1bd5('0x79')}]},routingClient);})[_0x1bd5('0x16')](respondWithResult(_0x182d75,null))[_0x1bd5('0xb')](handleError(_0x182d75,null));};
\ No newline at end of file
+var _0x814b=['whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','MessageId','From','QueueId','create','Start','queue','queueTransferTimeout','Channel\x20field\x20is\x20mandatory','channel','capitalize','chat','User','Agent\x20not\x20found','InteractionId','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','error','code','message','catch','status','json','sendStatus','stack','name','send','isNil','rows','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','query','params','voiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','agents','Agents','agentCapacity','user','interaction','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','INTERACTION','interface','SIP/%s','agent','internal','AgentCapacity','telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','MailAccounts','openchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues'];(function(_0x392097,_0x2e6204){var _0x22f5ef=function(_0x46eacf){while(--_0x46eacf){_0x392097['push'](_0x392097['shift']());}};_0x22f5ef(++_0x2e6204);}(_0x814b,0x1a2));var _0xb814=function(_0xa60623,_0x2d4e4f){_0xa60623=_0xa60623-0x0;var _0x4a6487=_0x814b[_0xa60623];return _0x4a6487;};'use strict';var BPromise=require(_0xb814('0x0'));var moment=require(_0xb814('0x1'));var _=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var db=require(_0xb814('0x4'))['db'];var logger=require(_0xb814('0x5'))('api');var jayson=require(_0xb814('0x6'));var amiClient=jayson[_0xb814('0x7')][_0xb814('0x8')]({'port':0x232a});var mailClient=jayson[_0xb814('0x7')][_0xb814('0x8')]({'port':0x232b});var routingClient=jayson[_0xb814('0x7')]['http']({'port':0x232c});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){var _0x186d5a=_0x5c8539?_0x5c8539:amiClient;return _0x186d5a[_0xb814('0x9')](_0x3b0829,_0x2e6272)[_0xb814('0xa')](function(_0x21d4a5){if(_0x21d4a5[_0xb814('0xb')]){if(_0x21d4a5[_0xb814('0xb')][_0xb814('0xc')]===0x1f4){return _0x2913a6(_0x21d4a5[_0xb814('0xb')][_0xb814('0xd')]);}return _0x271af9(_0x21d4a5['error'][_0xb814('0xd')]);}else{_0x271af9(_0x21d4a5['result']);}})[_0xb814('0xe')](function(_0x15d6ef){_0x2913a6(_0x15d6ef);});});}function respondWithResult(_0x35b10d,_0x2cc46b){_0x2cc46b=_0x2cc46b||0xc8;return function(_0x2ce718){if(_0x2ce718){return _0x35b10d[_0xb814('0xf')](_0x2cc46b)[_0xb814('0x10')](_0x2ce718);}return _0x35b10d[_0xb814('0x11')](0x194);};}function handleError(_0xa0a2e5,_0x2ab627){_0x2ab627=_0x2ab627||0x1f4;return function(_0x3f4881){logger[_0xb814('0xb')](_0x3f4881[_0xb814('0x12')]);if(_0x3f4881[_0xb814('0x13')]){delete _0x3f4881[_0xb814('0x13')];}_0xa0a2e5[_0xb814('0xf')](_0x2ab627)[_0xb814('0x14')](_0x3f4881);};}function findById(_0x265a83){return function(_0x125ce2){if(!_[_0xb814('0x15')](_0x265a83)&&!_[_0xb814('0x15')](_0x125ce2)&&!_['isNil'](_0x125ce2[_0xb814('0x16')])){return _['find'](_0x125ce2[_0xb814('0x16')],function(_0xfac75b){return _0xfac75b['id']==_0x265a83;});}return null;};}exports['voiceChannels']=function(_0x4b55a7,_0x55d63c){return respondWithRpcPromise(_0xb814('0x17'),_0x4b55a7['query'])['then'](respondWithResult(_0x55d63c,null))[_0xb814('0xe')](handleError(_0x55d63c,null));};exports[_0xb814('0x18')]=function(_0x25b6b6,_0x4e139e){return respondWithRpcPromise(_0xb814('0x19'),_['merge'](_0x25b6b6[_0xb814('0x1a')],_0x25b6b6[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x4e139e,null))[_0xb814('0xe')](handleError(_0x4e139e,null));};exports[_0xb814('0x1c')]=function(_0x2bd039,_0x1f5d40){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0xb814('0x1d')](_0x2bd039['query'],_0x2bd039[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x1f5d40,null))[_0xb814('0xe')](handleError(_0x1f5d40,null));};exports[_0xb814('0x1e')]=function(_0x1c8a2e,_0xb9e57d){return respondWithRpcPromise(_0xb814('0x1f'),_0x1c8a2e['query'])[_0xb814('0xa')](respondWithResult(_0xb9e57d,null))[_0xb814('0xe')](handleError(_0xb9e57d,null));};exports[_0xb814('0x20')]=function(_0x349394,_0x32ed56){return respondWithRpcPromise(_0xb814('0x1f'),_0x349394[_0xb814('0x1a')])[_0xb814('0xa')](findById(_0x349394['params']['id']))[_0xb814('0xa')](respondWithResult(_0x32ed56,null))[_0xb814('0xe')](handleError(_0x32ed56,null));};exports['updateVoiceQueue']=function(_0x9008b2,_0x37d24d){return respondWithRpcPromise(_0xb814('0x21'),_['merge'](_0x9008b2[_0xb814('0x22')],_0x9008b2[_0xb814('0x1b')]))['then'](respondWithResult(_0x37d24d,null))[_0xb814('0xe')](handleError(_0x37d24d,null));};exports['voiceQueuesPreview']=function(_0x6efe9a,_0x5f3e9b){return respondWithRpcPromise('VoiceQueuesPreview',_[_0xb814('0x1d')](_0x6efe9a['query'],_0x6efe9a[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x5f3e9b,null))[_0xb814('0xe')](handleError(_0x5f3e9b,null));};exports['voiceQueuesChannels']=function(_0x51d5ae,_0x26d3a9){return respondWithRpcPromise(_0xb814('0x23'),_0x51d5ae['query'])[_0xb814('0xa')](respondWithResult(_0x26d3a9,null))[_0xb814('0xe')](handleError(_0x26d3a9,null));};exports[_0xb814('0x24')]=function(_0x217b7e,_0x1b78de){return respondWithRpcPromise(_0xb814('0x25'),_[_0xb814('0x1d')](_0x217b7e['query'],_0x217b7e[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x1b78de,null))[_0xb814('0xe')](handleError(_0x1b78de,null));};exports[_0xb814('0x26')]=function(_0x14100d,_0x4ff31a){return respondWithRpcPromise(_0xb814('0x27'),_['merge'](_0x14100d[_0xb814('0x1a')],_0x14100d[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x4ff31a,null))['catch'](handleError(_0x4ff31a,null));};exports[_0xb814('0x28')]=function(_0xbdb3e9,_0x4ea6f8){return respondWithRpcPromise(_0xb814('0x29'),_[_0xb814('0x1d')](_0xbdb3e9[_0xb814('0x1a')],_0xbdb3e9[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x4ea6f8,null))[_0xb814('0xe')](handleError(_0x4ea6f8,null));};exports['outbound']=function(_0xa6ce87,_0x4e4684){return respondWithRpcPromise(_0xb814('0x2a'),_0xa6ce87['query'])[_0xb814('0xa')](respondWithResult(_0x4e4684,null))['catch'](handleError(_0x4e4684,null));};exports[_0xb814('0x2b')]=function(_0x26675a,_0x54a7fb){return respondWithRpcPromise('OutboundChannels',_0x26675a['query'])['then'](respondWithResult(_0x54a7fb,null))[_0xb814('0xe')](handleError(_0x54a7fb,null));};exports[_0xb814('0x2c')]=function(_0x38cdc2,_0x42c2ed){var _0x51cdba;return respondWithRpcPromise('Agents',_0x38cdc2[_0xb814('0x1a')])['then'](function(_0x2a93da){_0x51cdba=_0x2a93da;return respondWithRpcPromise(_0xb814('0x2d'),_0x38cdc2[_0xb814('0x1a')],routingClient);})[_0xb814('0xa')](function(_0x42653f){return _[_0xb814('0x1d')]({},_0x42653f,_0x51cdba);})[_0xb814('0xa')](respondWithResult(_0x42c2ed,null))[_0xb814('0xe')](handleError(_0x42c2ed,null));};exports[_0xb814('0x2e')]=function(_0x4b6ff8,_0x544d36){if(_0x4b6ff8['body']&&_0x4b6ff8[_0xb814('0x22')]['interaction']&&_0x4b6ff8[_0xb814('0x2f')]&&_0x4b6ff8['user'][_0xb814('0x13')]){for(var _0x44ff56 in _0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')]){if(_0x4b6ff8['body'][_0xb814('0x30')][_0xb814('0x31')](_0x44ff56)){db[_0xb814('0x32')][_0xb814('0x33')]({'where':{'channel':_0x44ff56,'membername':_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x13')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56]&&_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56][_0xb814('0x34')]?{'$notIn':_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56]}:{'$ne':null}}})['then'](function(_0x4a5e84){var _0xe751c3=moment()[_0xb814('0x35')](_0xb814('0x36'));for(var _0x2bf906=0x0,_0x43f1b=_0x4a5e84[_0xb814('0x34')];_0x2bf906<_0x43f1b;_0x2bf906+=0x1){_0x4a5e84[_0x2bf906][_0xb814('0x37')]({'exitAt':_0xe751c3});}});for(var _0x40af85=0x0;_0x40af85<_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56][_0xb814('0x34')];_0x40af85+=0x1){db['MemberReport'][_0xb814('0x38')]({'where':{'channel':_0x44ff56,'membername':_0x4b6ff8[_0xb814('0x2f')]['name'],'type':_0xb814('0x39'),'uniqueid':_0x4b6ff8['body'][_0xb814('0x30')][_0x44ff56][_0x40af85],'exitAt':null},'defaults':{'channel':_0x44ff56,'membername':_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x13')],'interface':_[_0xb814('0x15')](_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x3a')])?util[_0xb814('0x35')](_0xb814('0x3b'),_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x13')]):_0x4b6ff8['user']['interface'],'type':_0xb814('0x39'),'enterAt':moment()[_0xb814('0x35')](_0xb814('0x36')),'role':_0xb814('0x3c'),'internal':_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x3d')],'uniqueid':_0x4b6ff8[_0xb814('0x22')]['interaction'][_0x44ff56][_0x40af85]}});}}}}return respondWithRpcPromise(_0xb814('0x3e'),{'id':_0x4b6ff8[_0xb814('0x1b')]['id'],'capacity':_0x4b6ff8[_0xb814('0x22')]['capacity']},routingClient)[_0xb814('0xa')](respondWithResult(_0x544d36,null))['catch'](handleError(_0x544d36,null));};exports[_0xb814('0x3f')]=function(_0x5dc28e,_0x403872){return respondWithRpcPromise(_0xb814('0x40'),_0x5dc28e['query'])[_0xb814('0xa')](respondWithResult(_0x403872,null))[_0xb814('0xe')](handleError(_0x403872,null));};exports[_0xb814('0x41')]=function(_0x5209d1,_0x3da050){return respondWithRpcPromise('Trunks',_0x5209d1[_0xb814('0x1a')])[_0xb814('0xa')](respondWithResult(_0x3da050,null))['catch'](handleError(_0x3da050,null));};exports[_0xb814('0x42')]=function(_0x4a3f84,_0x539be7){return respondWithRpcPromise(_0xb814('0x43'),_0x4a3f84[_0xb814('0x1a')])[_0xb814('0xa')](respondWithResult(_0x539be7,null))['catch'](handleError(_0x539be7,null));};exports[_0xb814('0x44')]=function(_0x538b0f,_0xf88d23){return respondWithRpcPromise(_0xb814('0x45'),_0x538b0f['query'],routingClient)[_0xb814('0xa')](respondWithResult(_0xf88d23,null))['catch'](handleError(_0xf88d23,null));};exports[_0xb814('0x46')]=function(_0x1656ed,_0xb2bd82){return respondWithRpcPromise(_0xb814('0x45'),_0x1656ed[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](findById(_0x1656ed[_0xb814('0x1b')]['id']))[_0xb814('0xa')](respondWithResult(_0xb2bd82,null))['catch'](handleError(_0xb2bd82,null));};exports[_0xb814('0x47')]=function(_0x5441c5,_0x5d71d5){return respondWithRpcPromise(_0xb814('0x48'),_0x5441c5[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x5d71d5,null))[_0xb814('0xe')](handleError(_0x5d71d5,null));};exports['showMailQueues']=function(_0x48362c,_0x2114ca){return respondWithRpcPromise('MailQueues',_0x48362c[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](findById(_0x48362c[_0xb814('0x1b')]['id']))['then'](respondWithResult(_0x2114ca,null))[_0xb814('0xe')](handleError(_0x2114ca,null));};exports['mailAccounts']=function(_0x2ef77d,_0x1e9196){return respondWithRpcPromise(_0xb814('0x49'),_0x2ef77d[_0xb814('0x1a')],mailClient)[_0xb814('0xa')](respondWithResult(_0x1e9196,null))[_0xb814('0xe')](handleError(_0x1e9196,null));};exports[_0xb814('0x4a')]=function(_0x113350,_0x46014f){return respondWithRpcPromise('OpenchannelQueues',_0x113350[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x46014f,null))[_0xb814('0xe')](handleError(_0x46014f,null));};exports[_0xb814('0x4b')]=function(_0x3b35a8,_0x3d4843){return respondWithRpcPromise('OpenchannelQueues',_0x3b35a8[_0xb814('0x1a')],routingClient)['then'](findById(_0x3b35a8[_0xb814('0x1b')]['id']))[_0xb814('0xa')](respondWithResult(_0x3d4843,null))[_0xb814('0xe')](handleError(_0x3d4843,null));};exports['smsQueues']=function(_0x150e73,_0x579351){return respondWithRpcPromise(_0xb814('0x4c'),_0x150e73['query'],routingClient)[_0xb814('0xa')](respondWithResult(_0x579351,null))[_0xb814('0xe')](handleError(_0x579351,null));};exports[_0xb814('0x4d')]=function(_0x1b024f,_0x3377d4){return respondWithRpcPromise(_0xb814('0x4c'),_0x1b024f[_0xb814('0x1a')],routingClient)['then'](findById(_0x1b024f[_0xb814('0x1b')]['id']))['then'](respondWithResult(_0x3377d4,null))[_0xb814('0xe')](handleError(_0x3377d4,null));};exports[_0xb814('0x4e')]=function(_0x1b989d,_0x3dcaeb){return respondWithRpcPromise(_0xb814('0x4f'),_0x1b989d[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x3dcaeb,null))[_0xb814('0xe')](handleError(_0x3dcaeb,null));};exports[_0xb814('0x50')]=function(_0x4a49ba,_0x3bb2b4){return respondWithRpcPromise(_0xb814('0x4f'),_0x4a49ba[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](findById(_0x4a49ba[_0xb814('0x1b')]['id']))['then'](respondWithResult(_0x3bb2b4,null))[_0xb814('0xe')](handleError(_0x3bb2b4,null));};exports['faxQueues']=function(_0x24594a,_0x16f8f2){return respondWithRpcPromise(_0xb814('0x51'),_0x24594a[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x16f8f2,null))[_0xb814('0xe')](handleError(_0x16f8f2,null));};exports['showFaxQueues']=function(_0x506bf2,_0x5d064b){return respondWithRpcPromise(_0xb814('0x51'),_0x506bf2['query'],routingClient)[_0xb814('0xa')](findById(_0x506bf2[_0xb814('0x1b')]['id']))[_0xb814('0xa')](respondWithResult(_0x5d064b,null))['catch'](handleError(_0x5d064b,null));};exports[_0xb814('0x52')]=function(_0x3e5ce8,_0xee204){return respondWithRpcPromise('FaxAccounts',_0x3e5ce8[_0xb814('0x1a')])[_0xb814('0xa')](respondWithResult(_0xee204,null))[_0xb814('0xe')](handleError(_0xee204,null));};exports[_0xb814('0x53')]=function(_0x555be0,_0x5dedd7){return respondWithRpcPromise(_0xb814('0x54'),_0x555be0[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x5dedd7,null))[_0xb814('0xe')](handleError(_0x5dedd7,null));};exports[_0xb814('0x55')]=function(_0xe5fc12,_0x34a0b3){return respondWithRpcPromise(_0xb814('0x56'),_0xe5fc12[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x34a0b3,null))[_0xb814('0xe')](handleError(_0x34a0b3,null));};exports[_0xb814('0x57')]=function(_0x3ef474,_0x21fc41){return respondWithRpcPromise(_0xb814('0x58'),_0x3ef474['query'],routingClient)[_0xb814('0xa')](respondWithResult(_0x21fc41,null))[_0xb814('0xe')](handleError(_0x21fc41,null));};exports[_0xb814('0x59')]=function(_0x357b90,_0xec821a){return respondWithRpcPromise(_0xb814('0x58'),_0x357b90['query'],routingClient)[_0xb814('0xa')](function(_0x52e1fc){if(_0x357b90[_0xb814('0x1a')][_0xb814('0x5a')]!==undefined){var _0x3c5a58=_(_0x52e1fc[_0xb814('0x16')])[_0xb814('0x5b')]([_0x357b90['query']['type'],_0x357b90[_0xb814('0x1b')]['id']])[_0xb814('0x5c')](_0xb814('0x5d'))[_0xb814('0x5e')]()['value']();return _0x52e1fc[_0xb814('0x16')]['filter'](function(_0x39073c){return _0x3c5a58[_0xb814('0x5f')](_0x39073c['queue_id'])>-0x1;});}else{return _0x52e1fc['rows'][_0xb814('0x5b')](function(_0x52e17a){return _0x52e17a[_0xb814('0x5d')]===parseInt(_0x357b90[_0xb814('0x1b')]['id']);});}})[_0xb814('0xa')](respondWithResult(_0xec821a,null))[_0xb814('0xe')](handleError(_0xec821a,null));};exports[_0xb814('0x60')]=function(_0x420bde,_0x40fe4a){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x420bde[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x40fe4a,null))[_0xb814('0xe')](handleError(_0x40fe4a,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x2838cb,_0x43ee60){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x2838cb[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x43ee60,null))[_0xb814('0xe')](handleError(_0x43ee60,null));};exports[_0xb814('0x61')]=function(_0x4e15c2,_0x5a0c4a){return respondWithRpcPromise(_0xb814('0x62'),_0x4e15c2[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x5a0c4a,null))[_0xb814('0xe')](handleError(_0x5a0c4a,null));};exports[_0xb814('0x63')]=function(_0x4394da){return function(_0x2b12a9,_0x314600){var _0x8cb107,_0x34f49c;var _0x53e705=_['capitalize'](_0x4394da);var _0x5bee4d=_0x4394da==='chat'?'Website':_0xb814('0x64');return db[_0x53e705+_0xb814('0x65')][_0xb814('0x66')]({'raw':!![],'where':{'id':_0x2b12a9['params']['id']}})[_0xb814('0xa')](function(_0x1fb1ea){if(_[_0xb814('0x15')](_0x1fb1ea)){throw new Error(_0x53e705+_0xb814('0x67'));}_0x8cb107=_0x1fb1ea;return db[_0x53e705+_0xb814('0x68')][_0xb814('0x66')]({'where':{'id':_0x2b12a9[_0xb814('0x22')][_0xb814('0x69')]},'include':[{'model':db[_0x53e705+'Interaction'],'as':_0xb814('0x6a')},{'model':db[_0x53e705+_0x5bee4d],'as':_0xb814('0x64')}]});})[_0xb814('0xa')](function(_0x30faa0){if(_['isNil'](_0x30faa0)){throw new Error(_0x53e705+_0xb814('0x6b'));}_0x34f49c=_0x30faa0;return _0x30faa0[_0xb814('0x6c')]({'read':0x0,'readAt':null,'UserId':null});})[_0xb814('0xa')](function(){var _0x3037f2={'uniqueid':_0x4394da+'.'+_0x34f49c['id']+'.'+_0x34f49c[_0xb814('0x6a')]['id'],'FromUserId':_0x2b12a9['user']['id'],'type':'queue'};_0x3037f2[_0x53e705+_0xb814('0x6d')]=_0x34f49c['id'];_0x3037f2[_0x53e705+'InteractionId']=_0x34f49c[_0xb814('0x6a')]['id'];_0x3037f2[_0xb814('0x6e')+_0x53e705+_0x5bee4d+'Id']=_0x34f49c['Account']['id'];_0x3037f2['To'+_0x53e705+_0xb814('0x6f')]=_0x8cb107['id'];return db[_0x53e705+'TransferReport'][_0xb814('0x70')](_0x3037f2);})['then'](function(){return respondWithRpcPromise(_0xb814('0x71'),{'channel':_0x4394da,'interaction':_0x34f49c[_0xb814('0x6a')],'message':_0x34f49c,'account':_0x34f49c[_0xb814('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xb814('0x72'),'appdata':_0x8cb107[_0xb814('0x13')]+','+(_0x34f49c[_0xb814('0x64')][_0xb814('0x73')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0x314600,null))[_0xb814('0xe')](handleError(_0x314600,null));};};exports['agentNotify']=function(_0x511e03,_0x2d0061){var _0x8fbda1,_0x25d42d;if(_['isNil'](_0x511e03[_0xb814('0x22')]['channel'])){throw new Error(_0xb814('0x74'));}var _0x19d508=_0x511e03[_0xb814('0x22')][_0xb814('0x75')];var _0x4c8a00=_[_0xb814('0x76')](_0x19d508);var _0xc0ff3c=_0x19d508===_0xb814('0x77')?'Website':_0xb814('0x64');return db[_0xb814('0x78')][_0xb814('0x66')]({'raw':!![],'where':{'id':_0x511e03['params']['id'],'role':_0xb814('0x3c')}})[_0xb814('0xa')](function(_0x9dc06b){if(_[_0xb814('0x15')](_0x9dc06b)){throw new Error(_0xb814('0x79'));}_0x8fbda1=_0x9dc06b;return db[_0x4c8a00+_0xb814('0x68')][_0xb814('0x66')]({'where':{'id':_0x511e03[_0xb814('0x22')][_0xb814('0x69')]},'include':[{'model':db[_0x4c8a00+_0xb814('0x6a')],'as':_0xb814('0x6a')},{'model':db[_0x4c8a00+_0xc0ff3c],'as':_0xb814('0x64')}]});})[_0xb814('0xa')](function(_0x5b8d2e){if(_['isNil'](_0x5b8d2e)){throw new Error(_0x4c8a00+_0xb814('0x6b'));}_0x25d42d=_0x5b8d2e;return _0x5b8d2e['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xb814('0xa')](function(){var _0x3949fd={'uniqueid':_0x19d508+'.'+_0x25d42d['id']+'.'+_0x25d42d[_0xb814('0x6a')]['id'],'FromUserId':_0x511e03[_0xb814('0x2f')]['id'],'type':_0xb814('0x72'),'ToUserId':_0x8fbda1['id']};_0x3949fd[_0x4c8a00+_0xb814('0x6d')]=_0x25d42d['id'];_0x3949fd[_0x4c8a00+_0xb814('0x7a')]=_0x25d42d['Interaction']['id'];_0x3949fd['From'+_0x4c8a00+_0xc0ff3c+'Id']=_0x25d42d[_0xb814('0x64')]['id'];return db[_0x4c8a00+'TransferReport'][_0xb814('0x70')](_0x3949fd);})[_0xb814('0xa')](function(){return respondWithRpcPromise(_0xb814('0x71'),{'channel':_0x19d508,'interaction':_0x25d42d['Interaction'],'message':_0x25d42d,'account':_0x25d42d[_0xb814('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xb814('0x3c'),'appdata':_0x8fbda1[_0xb814('0x13')]+','+(_0x25d42d[_0xb814('0x64')][_0xb814('0x7b')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xb814('0xa')](respondWithResult(_0x2d0061,null))[_0xb814('0xe')](handleError(_0x2d0061,null));};
\ No newline at end of file
index f4b21e1..ec071e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e27=['show','post','create','put','/:id','delete','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./schedule.controller','get','isAuthenticated','index'];(function(_0x2abf07,_0x4f1415){var _0x5d5be6=function(_0x242c1c){while(--_0x242c1c){_0x2abf07['push'](_0x2abf07['shift']());}};_0x5d5be6(++_0x4f1415);}(_0x1e27,0x127));var _0x71e2=function(_0x3794a0,_0x1a9cfc){_0x3794a0=_0x3794a0-0x0;var _0x5bdaba=_0x1e27[_0x3794a0];return _0x5bdaba;};'use strict';var multer=require('multer');var util=require(_0x71e2('0x0'));var path=require(_0x71e2('0x1'));var timeout=require(_0x71e2('0x2'));var express=require(_0x71e2('0x3'));var router=express['Router']();var fs_extra=require(_0x71e2('0x4'));var auth=require(_0x71e2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x71e2('0x6'));var controller=require(_0x71e2('0x7'));router[_0x71e2('0x8')]('/',auth[_0x71e2('0x9')](),controller[_0x71e2('0xa')]);router[_0x71e2('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x71e2('0xb')]);router[_0x71e2('0x8')]('/:id/run',auth[_0x71e2('0x9')](),controller['run']);router[_0x71e2('0xc')]('/',auth['isAuthenticated'](),controller[_0x71e2('0xd')]);router[_0x71e2('0xe')](_0x71e2('0xf'),auth[_0x71e2('0x9')](),controller['update']);router[_0x71e2('0x10')](_0x71e2('0xf'),auth[_0x71e2('0x9')](),controller[_0x71e2('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xdc21=['destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','post','create','put','update','delete'];(function(_0x1cc815,_0x37d62b){var _0xfd8211=function(_0x3bd90e){while(--_0x3bd90e){_0x1cc815['push'](_0x1cc815['shift']());}};_0xfd8211(++_0x37d62b);}(_0xdc21,0x70));var _0x1dc2=function(_0x500cce,_0x1d3aba){_0x500cce=_0x500cce-0x0;var _0x7474cb=_0xdc21[_0x500cce];return _0x7474cb;};'use strict';var multer=require('multer');var util=require(_0x1dc2('0x0'));var path=require(_0x1dc2('0x1'));var timeout=require(_0x1dc2('0x2'));var express=require('express');var router=express[_0x1dc2('0x3')]();var fs_extra=require(_0x1dc2('0x4'));var auth=require(_0x1dc2('0x5'));var interaction=require(_0x1dc2('0x6'));var config=require(_0x1dc2('0x7'));var controller=require(_0x1dc2('0x8'));router[_0x1dc2('0x9')]('/',auth[_0x1dc2('0xa')](),controller[_0x1dc2('0xb')]);router[_0x1dc2('0x9')](_0x1dc2('0xc'),auth[_0x1dc2('0xa')](),controller[_0x1dc2('0xd')]);router[_0x1dc2('0x9')](_0x1dc2('0xe'),auth[_0x1dc2('0xa')](),controller['run']);router[_0x1dc2('0xf')]('/',auth[_0x1dc2('0xa')](),controller[_0x1dc2('0x10')]);router[_0x1dc2('0x11')](_0x1dc2('0xc'),auth[_0x1dc2('0xa')](),controller[_0x1dc2('0x12')]);router[_0x1dc2('0x13')](_0x1dc2('0xc'),auth['isAuthenticated'](),controller[_0x1dc2('0x14')]);module[_0x1dc2('0x15')]=router;
\ No newline at end of file
index 38b17f5..a2c66f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1746=['ENUM','years','quarters','months','weeks','days','hours','minutes','xlsx','csv','custom','default','TEXT','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER'];(function(_0x3f5ed5,_0xb23f2){var _0x4210cd=function(_0x220eff){while(--_0x220eff){_0x3f5ed5['push'](_0x3f5ed5['shift']());}};_0x4210cd(++_0xb23f2);}(_0x1746,0x7f));var _0x6174=function(_0x505e94,_0x4d6c39){_0x505e94=_0x505e94-0x0;var _0xcfb1cd=_0x1746[_0x505e94];return _0xcfb1cd;};'use strict';var Sequelize=require('sequelize');module[_0x6174('0x0')]={'name':{'type':Sequelize[_0x6174('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x6174('0x1')]},'active':{'type':Sequelize[_0x6174('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6174('0x3')},'startAt':{'type':Sequelize[_0x6174('0x4')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x6174('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x6174('0x6')](_0x6174('0x7'),_0x6174('0x8'),_0x6174('0x9'),_0x6174('0xa'),_0x6174('0xb'),_0x6174('0xc'),_0x6174('0xd')),'allowNull':![],'defaultValue':_0x6174('0xb')},'output':{'type':Sequelize[_0x6174('0x6')]('csv','pdf',_0x6174('0xe')),'allowNull':![],'defaultValue':_0x6174('0xf')},'type':{'type':Sequelize[_0x6174('0x6')](_0x6174('0x10'),_0x6174('0x11')),'allowNull':![],'defaultValue':_0x6174('0x10')},'sendMail':{'type':Sequelize[_0x6174('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x6174('0x12')]},'bcc':{'type':Sequelize[_0x6174('0x12')]},'sendIfEmpty':{'type':Sequelize[_0x6174('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7a58=['days','hours','minutes','ENUM','csv','pdf','xlsx','custom','default','TEXT','sequelize','BOOLEAN','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','quarters','months','weeks'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x7a58,0xd2));var _0x87a5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7a58[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x87a5('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x87a5('0x1')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x87a5('0x2')],'allowNull':![],'defaultValue':_0x87a5('0x3')},'startAt':{'type':Sequelize[_0x87a5('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x87a5('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x87a5('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x87a5('0x6'),_0x87a5('0x7'),_0x87a5('0x8'),_0x87a5('0x9'),_0x87a5('0xa'),_0x87a5('0xb'),_0x87a5('0xc')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x87a5('0xd')](_0x87a5('0xe'),_0x87a5('0xf'),_0x87a5('0x10')),'allowNull':![],'defaultValue':_0x87a5('0xe')},'type':{'type':Sequelize[_0x87a5('0xd')](_0x87a5('0x11'),_0x87a5('0x12')),'allowNull':![],'defaultValue':_0x87a5('0x11')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x87a5('0x13')]},'bcc':{'type':Sequelize[_0x87a5('0x13')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 3faaa6e..e1aed8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92b4=['filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','get','Scheduler','UserProfileResource','error','stack','name','send','index','map','Schedule','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick'];(function(_0x54416a,_0x4b1b91){var _0xdc7e4c=function(_0x10f420){while(--_0x10f420){_0x54416a['push'](_0x54416a['shift']());}};_0xdc7e4c(++_0x4b1b91);}(_0x92b4,0x1cf));var _0x492b=function(_0x3f2f14,_0x32859b){_0x3f2f14=_0x3f2f14-0x0;var _0x456ea0=_0x92b4[_0x3f2f14];return _0x456ea0;};'use strict';var emlformat=require(_0x492b('0x0'));var rimraf=require(_0x492b('0x1'));var zipdir=require(_0x492b('0x2'));var jsonpatch=require(_0x492b('0x3'));var rp=require(_0x492b('0x4'));var moment=require(_0x492b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x492b('0x6'));var util=require(_0x492b('0x7'));var path=require(_0x492b('0x8'));var sox=require(_0x492b('0x9'));var csv=require(_0x492b('0xa'));var ejs=require(_0x492b('0xb'));var fs=require('fs');var fs_extra=require(_0x492b('0xc'));var _=require(_0x492b('0xd'));var squel=require(_0x492b('0xe'));var crypto=require(_0x492b('0xf'));var jsforce=require(_0x492b('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x492b('0x11'));var Papa=require('papaparse');var Redis=require(_0x492b('0x12'));var authService=require(_0x492b('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x492b('0x14'));var hardwareService=require(_0x492b('0x15'));var logger=require(_0x492b('0x16'))(_0x492b('0x17'));var utils=require('../../config/utils');var config=require(_0x492b('0x18'));var licenseUtil=require(_0x492b('0x19'));var db=require(_0x492b('0x1a'))['db'];function respondWithStatusCode(_0x21008a,_0x13f09a){_0x13f09a=_0x13f09a||0xcc;return function(_0x322e4e){if(_0x322e4e){return _0x21008a[_0x492b('0x1b')](_0x13f09a);}return _0x21008a[_0x492b('0x1c')](_0x13f09a)['end']();};}function respondWithResult(_0x1ced74,_0x540a4e){_0x540a4e=_0x540a4e||0xc8;return function(_0x841880){if(_0x841880){return _0x1ced74['status'](_0x540a4e)[_0x492b('0x1d')](_0x841880);}};}function respondWithFilteredResult(_0x183d44,_0x3c4959){return function(_0x57962d){if(_0x57962d){var _0x38107d=typeof _0x3c4959[_0x492b('0x1e')]===_0x492b('0x1f')&&typeof _0x3c4959[_0x492b('0x20')]==='undefined';var _0x5a7429=_0x57962d[_0x492b('0x21')];var _0x69f7e3=_0x38107d?0x0:_0x3c4959[_0x492b('0x1e')];var _0x5feaa2=_0x38107d?_0x57962d[_0x492b('0x21')]:_0x3c4959[_0x492b('0x1e')]+_0x3c4959['limit'];var _0xbf96e8;if(_0x5feaa2>=_0x5a7429){_0x5feaa2=_0x5a7429;_0xbf96e8=0xc8;}else{_0xbf96e8=0xce;}_0x183d44['status'](_0xbf96e8);return _0x183d44[_0x492b('0x22')]('Content-Range',_0x69f7e3+'-'+_0x5feaa2+'/'+_0x5a7429)[_0x492b('0x1d')](_0x57962d);}return null;};}function patchUpdates(_0x3833f9){return function(_0x190555){try{jsonpatch[_0x492b('0x23')](_0x190555,_0x3833f9,!![]);}catch(_0x342c9d){return BPromise[_0x492b('0x24')](_0x342c9d);}return _0x190555['save']();};}function saveUpdates(_0x1042af,_0x52d9f1){return function(_0x4c4b78){if(_0x4c4b78){return _0x4c4b78[_0x492b('0x25')](_0x1042af)[_0x492b('0x26')](function(_0x30d7ef){return _0x30d7ef;});}return null;};}function removeEntity(_0x200312,_0x1805cd){return function(_0x5a3798){if(_0x5a3798){return _0x5a3798[_0x492b('0x27')]()['then'](function(){var _0x4d6d6c=_0x5a3798[_0x492b('0x28')]({'plain':!![]});var _0x569d49=_0x492b('0x29');return db[_0x492b('0x2a')]['destroy']({'where':{'type':_0x569d49,'resourceId':_0x4d6d6c['id']}})[_0x492b('0x26')](function(){return _0x5a3798;});})[_0x492b('0x26')](function(){_0x200312['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f9d36,_0x48768e){return function(_0x2f6a3a){if(!_0x2f6a3a){_0x2f9d36[_0x492b('0x1b')](0x194);}return _0x2f6a3a;};}function handleError(_0x4eb3af,_0x3eedf4){_0x3eedf4=_0x3eedf4||0x1f4;return function(_0x502bb6){logger[_0x492b('0x2b')](_0x502bb6[_0x492b('0x2c')]);if(_0x502bb6['name']){delete _0x502bb6[_0x492b('0x2d')];}_0x4eb3af[_0x492b('0x1c')](_0x3eedf4)[_0x492b('0x2e')](_0x502bb6);};}exports[_0x492b('0x2f')]=function(_0x568cab,_0x46582f){var _0x282599={},_0x52e82c={},_0x34d273={'count':0x0,'rows':[]};var _0x1f2b34=_[_0x492b('0x30')](db[_0x492b('0x31')][_0x492b('0x32')],function(_0xcbf86c){return{'name':_0xcbf86c[_0x492b('0x33')],'type':_0xcbf86c['type'][_0x492b('0x34')]};});_0x52e82c[_0x492b('0x35')]=_['map'](_0x1f2b34,_0x492b('0x2d'));_0x52e82c[_0x492b('0x36')]=_['keys'](_0x568cab[_0x492b('0x36')]);_0x52e82c['filters']=_[_0x492b('0x37')](_0x52e82c['model'],_0x52e82c['query']);_0x282599[_0x492b('0x38')]=_[_0x492b('0x37')](_0x52e82c[_0x492b('0x35')],qs[_0x492b('0x39')](_0x568cab[_0x492b('0x36')][_0x492b('0x39')]));_0x282599[_0x492b('0x38')]=_0x282599[_0x492b('0x38')][_0x492b('0x3a')]?_0x282599['attributes']:_0x52e82c['model'];if(!_0x568cab[_0x492b('0x36')][_0x492b('0x3b')](_0x492b('0x3c'))){_0x282599['limit']=qs[_0x492b('0x20')](_0x568cab[_0x492b('0x36')][_0x492b('0x20')]);_0x282599[_0x492b('0x1e')]=qs[_0x492b('0x1e')](_0x568cab[_0x492b('0x36')][_0x492b('0x1e')]);}_0x282599['order']=qs[_0x492b('0x3d')](_0x568cab[_0x492b('0x36')][_0x492b('0x3d')]);_0x282599[_0x492b('0x3e')]=qs[_0x492b('0x3f')](_[_0x492b('0x40')](_0x568cab[_0x492b('0x36')],_0x52e82c[_0x492b('0x3f')]),_0x1f2b34);if(_0x568cab[_0x492b('0x36')][_0x492b('0x41')]){_0x282599[_0x492b('0x3e')]=_[_0x492b('0x42')](_0x282599[_0x492b('0x3e')],{'$or':_[_0x492b('0x30')](_0x1f2b34,function(_0x419268){if(_0x419268[_0x492b('0x43')]!==_0x492b('0x44')){var _0x31211a={};_0x31211a[_0x419268[_0x492b('0x2d')]]={'$like':'%'+_0x568cab['query'][_0x492b('0x41')]+'%'};return _0x31211a;}})});}_0x282599=_['merge']({},_0x282599,_0x568cab[_0x492b('0x45')]);var _0x2e80e3={'where':_0x282599[_0x492b('0x3e')]};return db[_0x492b('0x31')][_0x492b('0x21')](_0x2e80e3)[_0x492b('0x26')](function(_0x5080d4){_0x34d273['count']=_0x5080d4;if(_0x568cab[_0x492b('0x36')][_0x492b('0x46')]){_0x282599[_0x492b('0x47')]=[{'all':!![]}];}return db[_0x492b('0x31')][_0x492b('0x48')](_0x282599);})[_0x492b('0x26')](function(_0x5aba30){_0x34d273[_0x492b('0x49')]=_0x5aba30;return _0x34d273;})['then'](respondWithFilteredResult(_0x46582f,_0x282599))[_0x492b('0x4a')](handleError(_0x46582f,null));};exports[_0x492b('0x4b')]=function(_0x131dee,_0x339325){var _0x55a75a={'raw':![],'where':{'id':_0x131dee[_0x492b('0x4c')]['id']}},_0x579acf={};_0x579acf[_0x492b('0x35')]=_[_0x492b('0x4d')](db[_0x492b('0x31')][_0x492b('0x32')]);_0x579acf['query']=_[_0x492b('0x4d')](_0x131dee[_0x492b('0x36')]);_0x579acf['filters']=_[_0x492b('0x37')](_0x579acf[_0x492b('0x35')],_0x579acf['query']);_0x55a75a['attributes']=_[_0x492b('0x37')](_0x579acf[_0x492b('0x35')],qs[_0x492b('0x39')](_0x131dee[_0x492b('0x36')][_0x492b('0x39')]));_0x55a75a['attributes']=_0x55a75a[_0x492b('0x38')][_0x492b('0x3a')]?_0x55a75a[_0x492b('0x38')]:_0x579acf['model'];if(_0x131dee[_0x492b('0x36')][_0x492b('0x46')]){_0x55a75a[_0x492b('0x47')]=[{'all':!![]}];}_0x55a75a=_[_0x492b('0x42')]({},_0x55a75a,_0x131dee[_0x492b('0x45')]);return db['Schedule'][_0x492b('0x4e')](_0x55a75a)[_0x492b('0x26')](handleEntityNotFound(_0x339325,null))['then'](respondWithResult(_0x339325,null))['catch'](handleError(_0x339325,null));};exports[_0x492b('0x4f')]=function(_0x5146af,_0x2bd56d){return db[_0x492b('0x31')][_0x492b('0x4f')](_0x5146af['body'],{})[_0x492b('0x26')](function(_0x5a8ab9){var _0x2700d6=_0x5146af[_0x492b('0x50')][_0x492b('0x28')]({'plain':!![]});if(!_0x2700d6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2700d6[_0x492b('0x51')]===_0x492b('0x50')){var _0x1bf8e4=_0x5a8ab9[_0x492b('0x28')]({'plain':!![]});var _0x11aad7=_0x492b('0x29');return db['UserProfileSection'][_0x492b('0x4e')]({'where':{'name':_0x11aad7,'userProfileId':_0x2700d6[_0x492b('0x52')]},'raw':!![]})[_0x492b('0x26')](function(_0x24ac1a){if(_0x24ac1a&&_0x24ac1a[_0x492b('0x53')]===0x0){return db[_0x492b('0x2a')][_0x492b('0x4f')]({'name':_0x1bf8e4[_0x492b('0x2d')],'resourceId':_0x1bf8e4['id'],'type':_0x24ac1a['name'],'sectionId':_0x24ac1a['id']},{})[_0x492b('0x26')](function(){return _0x5a8ab9;});}else{return _0x5a8ab9;}})[_0x492b('0x4a')](function(_0x42d806){logger[_0x492b('0x2b')](_0x492b('0x54'),_0x42d806);throw _0x42d806;});}return _0x5a8ab9;})[_0x492b('0x26')](respondWithResult(_0x2bd56d,0xc9))[_0x492b('0x4a')](handleError(_0x2bd56d,null));};exports[_0x492b('0x25')]=function(_0x4e0c12,_0x293f2a){if(_0x4e0c12['body']['id']){delete _0x4e0c12[_0x492b('0x55')]['id'];}return db['Schedule']['find']({'where':{'id':_0x4e0c12[_0x492b('0x4c')]['id']}})[_0x492b('0x26')](handleEntityNotFound(_0x293f2a,null))[_0x492b('0x26')](saveUpdates(_0x4e0c12[_0x492b('0x55')],null))['then'](respondWithResult(_0x293f2a,null))['catch'](handleError(_0x293f2a,null));};exports['destroy']=function(_0x207148,_0x5ec19c){return db['Schedule'][_0x492b('0x4e')]({'where':{'id':_0x207148[_0x492b('0x4c')]['id']}})[_0x492b('0x26')](handleEntityNotFound(_0x5ec19c,null))['then'](removeEntity(_0x5ec19c,null))[_0x492b('0x4a')](handleError(_0x5ec19c,null));};exports[_0x492b('0x56')]=function(_0x441a38,_0x3b4176,_0x1ee989){var _0x3019b3=require(_0x492b('0x57'));return db[_0x492b('0x31')][_0x492b('0x4e')]({'where':{'id':_0x441a38[_0x492b('0x4c')]['id']},'raw':!![]})[_0x492b('0x26')](handleEntityNotFound(_0x3b4176,null))[_0x492b('0x26')](function(){_0x3019b3[_0x492b('0x56')](_0x441a38['params']['id']);})[_0x492b('0x26')](respondWithStatusCode(_0x3b4176,null))['catch'](handleError(_0x3b4176,null));};
\ No newline at end of file
+var _0x659a=['request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','Scheduler','sendStatus','stack','name','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','find','catch','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','UserProfileResource','create','error','params','../../config/schedule','run','eml-format','rimraf','zip-dir'];(function(_0x3ea338,_0xbb539){var _0x14f56c=function(_0x4a29c8){while(--_0x4a29c8){_0x3ea338['push'](_0x3ea338['shift']());}};_0x14f56c(++_0xbb539);}(_0x659a,0xaf));var _0xa659=function(_0x5d1044,_0x18f656){_0x5d1044=_0x5d1044-0x0;var _0x3cd90e=_0x659a[_0x5d1044];return _0x3cd90e;};'use strict';var emlformat=require(_0xa659('0x0'));var rimraf=require(_0xa659('0x1'));var zipdir=require(_0xa659('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa659('0x3'));var moment=require('moment');var BPromise=require(_0xa659('0x4'));var Mustache=require(_0xa659('0x5'));var util=require(_0xa659('0x6'));var path=require(_0xa659('0x7'));var sox=require(_0xa659('0x8'));var csv=require(_0xa659('0x9'));var ejs=require(_0xa659('0xa'));var fs=require('fs');var fs_extra=require(_0xa659('0xb'));var _=require(_0xa659('0xc'));var squel=require(_0xa659('0xd'));var crypto=require(_0xa659('0xe'));var jsforce=require(_0xa659('0xf'));var deskjs=require(_0xa659('0x10'));var toCsv=require(_0xa659('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa659('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa659('0x12'));var as=require(_0xa659('0x13'));var hardwareService=require(_0xa659('0x14'));var logger=require(_0xa659('0x15'))(_0xa659('0x16'));var utils=require(_0xa659('0x17'));var config=require(_0xa659('0x18'));var licenseUtil=require(_0xa659('0x19'));var db=require(_0xa659('0x1a'))['db'];function respondWithStatusCode(_0x2daac2,_0x97328f){_0x97328f=_0x97328f||0xcc;return function(_0x638f1b){if(_0x638f1b){return _0x2daac2['sendStatus'](_0x97328f);}return _0x2daac2[_0xa659('0x1b')](_0x97328f)[_0xa659('0x1c')]();};}function respondWithResult(_0x3d662c,_0x2ea1e7){_0x2ea1e7=_0x2ea1e7||0xc8;return function(_0x140bc4){if(_0x140bc4){return _0x3d662c[_0xa659('0x1b')](_0x2ea1e7)['json'](_0x140bc4);}};}function respondWithFilteredResult(_0x27f8a4,_0x41e3d1){return function(_0x59298f){if(_0x59298f){var _0x4616bc=typeof _0x41e3d1[_0xa659('0x1d')]==='undefined'&&typeof _0x41e3d1[_0xa659('0x1e')]===_0xa659('0x1f');var _0x1416a8=_0x59298f[_0xa659('0x20')];var _0x2ed3f7=_0x4616bc?0x0:_0x41e3d1[_0xa659('0x1d')];var _0x747ed2=_0x4616bc?_0x59298f[_0xa659('0x20')]:_0x41e3d1['offset']+_0x41e3d1[_0xa659('0x1e')];var _0x21cf43;if(_0x747ed2>=_0x1416a8){_0x747ed2=_0x1416a8;_0x21cf43=0xc8;}else{_0x21cf43=0xce;}_0x27f8a4[_0xa659('0x1b')](_0x21cf43);return _0x27f8a4[_0xa659('0x21')](_0xa659('0x22'),_0x2ed3f7+'-'+_0x747ed2+'/'+_0x1416a8)[_0xa659('0x23')](_0x59298f);}return null;};}function patchUpdates(_0x13683d){return function(_0x26ee7f){try{jsonpatch[_0xa659('0x24')](_0x26ee7f,_0x13683d,!![]);}catch(_0xf30399){return BPromise[_0xa659('0x25')](_0xf30399);}return _0x26ee7f[_0xa659('0x26')]();};}function saveUpdates(_0xed4c9c,_0x4d9ca3){return function(_0x2331e7){if(_0x2331e7){return _0x2331e7[_0xa659('0x27')](_0xed4c9c)[_0xa659('0x28')](function(_0x50f4d6){return _0x50f4d6;});}return null;};}function removeEntity(_0x28bc85,_0x184f28){return function(_0x351c68){if(_0x351c68){return _0x351c68[_0xa659('0x29')]()[_0xa659('0x28')](function(){var _0x5332e2=_0x351c68['get']({'plain':!![]});var _0x38b1f3=_0xa659('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0x38b1f3,'resourceId':_0x5332e2['id']}})[_0xa659('0x28')](function(){return _0x351c68;});})[_0xa659('0x28')](function(){_0x28bc85[_0xa659('0x1b')](0xcc)[_0xa659('0x1c')]();});}};}function handleEntityNotFound(_0x4aa6f0,_0xdbdc60){return function(_0x1c2be6){if(!_0x1c2be6){_0x4aa6f0[_0xa659('0x2b')](0x194);}return _0x1c2be6;};}function handleError(_0x31e754,_0x5274aa){_0x5274aa=_0x5274aa||0x1f4;return function(_0x8bbb0e){logger['error'](_0x8bbb0e[_0xa659('0x2c')]);if(_0x8bbb0e[_0xa659('0x2d')]){delete _0x8bbb0e[_0xa659('0x2d')];}_0x31e754[_0xa659('0x1b')](_0x5274aa)[_0xa659('0x2e')](_0x8bbb0e);};}exports[_0xa659('0x2f')]=function(_0x2416ed,_0x209cc6){var _0x272a48={},_0x25497a={},_0x47c889={'count':0x0,'rows':[]};var _0x206327=_[_0xa659('0x30')](db[_0xa659('0x31')][_0xa659('0x32')],function(_0x59ef94){return{'name':_0x59ef94[_0xa659('0x33')],'type':_0x59ef94[_0xa659('0x34')][_0xa659('0x35')]};});_0x25497a[_0xa659('0x36')]=_[_0xa659('0x30')](_0x206327,_0xa659('0x2d'));_0x25497a[_0xa659('0x37')]=_[_0xa659('0x38')](_0x2416ed[_0xa659('0x37')]);_0x25497a[_0xa659('0x39')]=_[_0xa659('0x3a')](_0x25497a['model'],_0x25497a['query']);_0x272a48[_0xa659('0x3b')]=_[_0xa659('0x3a')](_0x25497a[_0xa659('0x36')],qs['fields'](_0x2416ed[_0xa659('0x37')][_0xa659('0x3c')]));_0x272a48[_0xa659('0x3b')]=_0x272a48['attributes'][_0xa659('0x3d')]?_0x272a48['attributes']:_0x25497a[_0xa659('0x36')];if(!_0x2416ed[_0xa659('0x37')][_0xa659('0x3e')]('nolimit')){_0x272a48[_0xa659('0x1e')]=qs[_0xa659('0x1e')](_0x2416ed[_0xa659('0x37')][_0xa659('0x1e')]);_0x272a48['offset']=qs[_0xa659('0x1d')](_0x2416ed['query'][_0xa659('0x1d')]);}_0x272a48[_0xa659('0x3f')]=qs[_0xa659('0x40')](_0x2416ed['query']['sort']);_0x272a48[_0xa659('0x41')]=qs[_0xa659('0x39')](_[_0xa659('0x42')](_0x2416ed[_0xa659('0x37')],_0x25497a[_0xa659('0x39')]),_0x206327);if(_0x2416ed[_0xa659('0x37')]['filter']){_0x272a48[_0xa659('0x41')]=_['merge'](_0x272a48['where'],{'$or':_[_0xa659('0x30')](_0x206327,function(_0x68a4e5){if(_0x68a4e5['type']!==_0xa659('0x43')){var _0x13506f={};_0x13506f[_0x68a4e5[_0xa659('0x2d')]]={'$like':'%'+_0x2416ed[_0xa659('0x37')][_0xa659('0x44')]+'%'};return _0x13506f;}})});}_0x272a48=_[_0xa659('0x45')]({},_0x272a48,_0x2416ed[_0xa659('0x46')]);var _0x384247={'where':_0x272a48['where']};return db[_0xa659('0x31')]['count'](_0x384247)[_0xa659('0x28')](function(_0x37c84c){_0x47c889[_0xa659('0x20')]=_0x37c84c;if(_0x2416ed[_0xa659('0x37')][_0xa659('0x47')]){_0x272a48[_0xa659('0x48')]=[{'all':!![]}];}return db['Schedule'][_0xa659('0x49')](_0x272a48);})[_0xa659('0x28')](function(_0x383cbc){_0x47c889[_0xa659('0x4a')]=_0x383cbc;return _0x47c889;})['then'](respondWithFilteredResult(_0x209cc6,_0x272a48))['catch'](handleError(_0x209cc6,null));};exports[_0xa659('0x4b')]=function(_0xab06a0,_0x21bbd6){var _0x5b5287={'raw':![],'where':{'id':_0xab06a0['params']['id']}},_0x4c9bd3={};_0x4c9bd3[_0xa659('0x36')]=_[_0xa659('0x38')](db['Schedule']['rawAttributes']);_0x4c9bd3[_0xa659('0x37')]=_[_0xa659('0x38')](_0xab06a0[_0xa659('0x37')]);_0x4c9bd3[_0xa659('0x39')]=_[_0xa659('0x3a')](_0x4c9bd3[_0xa659('0x36')],_0x4c9bd3[_0xa659('0x37')]);_0x5b5287[_0xa659('0x3b')]=_[_0xa659('0x3a')](_0x4c9bd3[_0xa659('0x36')],qs[_0xa659('0x3c')](_0xab06a0[_0xa659('0x37')]['fields']));_0x5b5287[_0xa659('0x3b')]=_0x5b5287['attributes'][_0xa659('0x3d')]?_0x5b5287[_0xa659('0x3b')]:_0x4c9bd3[_0xa659('0x36')];if(_0xab06a0[_0xa659('0x37')][_0xa659('0x47')]){_0x5b5287[_0xa659('0x48')]=[{'all':!![]}];}_0x5b5287=_[_0xa659('0x45')]({},_0x5b5287,_0xab06a0[_0xa659('0x46')]);return db[_0xa659('0x31')][_0xa659('0x4c')](_0x5b5287)[_0xa659('0x28')](handleEntityNotFound(_0x21bbd6,null))['then'](respondWithResult(_0x21bbd6,null))[_0xa659('0x4d')](handleError(_0x21bbd6,null));};exports['create']=function(_0x1cfa6a,_0x197e1d){return db['Schedule']['create'](_0x1cfa6a[_0xa659('0x4e')],{})['then'](function(_0x523947){var _0x1b38cd=_0x1cfa6a['user'][_0xa659('0x4f')]({'plain':!![]});if(!_0x1b38cd)throw new Error(_0xa659('0x50'));if(_0x1b38cd['role']===_0xa659('0x51')){var _0x1e1efa=_0x523947[_0xa659('0x4f')]({'plain':!![]});var _0x21ad32=_0xa659('0x2a');return db[_0xa659('0x52')]['find']({'where':{'name':_0x21ad32,'userProfileId':_0x1b38cd['userProfileId']},'raw':!![]})['then'](function(_0x18b595){if(_0x18b595&&_0x18b595['autoAssociation']===0x0){return db[_0xa659('0x53')][_0xa659('0x54')]({'name':_0x1e1efa[_0xa659('0x2d')],'resourceId':_0x1e1efa['id'],'type':_0x18b595[_0xa659('0x2d')],'sectionId':_0x18b595['id']},{})[_0xa659('0x28')](function(){return _0x523947;});}else{return _0x523947;}})['catch'](function(_0x5c5cfe){logger[_0xa659('0x55')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5c5cfe);throw _0x5c5cfe;});}return _0x523947;})[_0xa659('0x28')](respondWithResult(_0x197e1d,0xc9))[_0xa659('0x4d')](handleError(_0x197e1d,null));};exports[_0xa659('0x27')]=function(_0x47ea9e,_0x419ddc){if(_0x47ea9e['body']['id']){delete _0x47ea9e[_0xa659('0x4e')]['id'];}return db[_0xa659('0x31')]['find']({'where':{'id':_0x47ea9e[_0xa659('0x56')]['id']}})[_0xa659('0x28')](handleEntityNotFound(_0x419ddc,null))[_0xa659('0x28')](saveUpdates(_0x47ea9e[_0xa659('0x4e')],null))[_0xa659('0x28')](respondWithResult(_0x419ddc,null))[_0xa659('0x4d')](handleError(_0x419ddc,null));};exports[_0xa659('0x29')]=function(_0x3b32bf,_0x183057){return db[_0xa659('0x31')][_0xa659('0x4c')]({'where':{'id':_0x3b32bf[_0xa659('0x56')]['id']}})[_0xa659('0x28')](handleEntityNotFound(_0x183057,null))[_0xa659('0x28')](removeEntity(_0x183057,null))[_0xa659('0x4d')](handleError(_0x183057,null));};exports['run']=function(_0x569066,_0x213f7c,_0x1019b2){var _0x14a0e2=require(_0xa659('0x57'));return db[_0xa659('0x31')][_0xa659('0x4c')]({'where':{'id':_0x569066['params']['id']},'raw':!![]})[_0xa659('0x28')](handleEntityNotFound(_0x213f7c,null))['then'](function(){_0x14a0e2[_0xa659('0x58')](_0x569066[_0xa659('0x56')]['id']);})[_0xa659('0x28')](respondWithStatusCode(_0x213f7c,null))[_0xa659('0x4d')](handleError(_0x213f7c,null));};
\ No newline at end of file
index ac30749..00f0e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc36f=['moment','bluebird','request-promise','rimraf','./schedule.attributes','exports','define','Schedule','../../config/logger','api'];(function(_0x5bf530,_0x273157){var _0x403b6f=function(_0x219e02){while(--_0x219e02){_0x5bf530['push'](_0x5bf530['shift']());}};_0x403b6f(++_0x273157);}(_0xc36f,0xbc));var _0xfc36=function(_0x153f49,_0x39a840){_0x153f49=_0x153f49-0x0;var _0x53a13b=_0xc36f[_0x153f49];return _0x53a13b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfc36('0x0'))(_0xfc36('0x1'));var moment=require(_0xfc36('0x2'));var BPromise=require(_0xfc36('0x3'));var rp=require(_0xfc36('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfc36('0x5'));var config=require('../../config/environment');var attributes=require(_0xfc36('0x6'));module[_0xfc36('0x7')]=function(_0x5d4ec4,_0x84834d){return _0x5d4ec4[_0xfc36('0x8')](_0xfc36('0x9'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb9d=['Schedule','tools_schedules','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define'];(function(_0x12c3dc,_0x4f1cda){var _0x5818ad=function(_0x3d1e03){while(--_0x3d1e03){_0x12c3dc['push'](_0x12c3dc['shift']());}};_0x5818ad(++_0x4f1cda);}(_0xbb9d,0x1af));var _0xdbb9=function(_0x769abf,_0x582051){_0x769abf=_0x769abf-0x0;var _0x30aa3f=_0xbb9d[_0x769abf];return _0x30aa3f;};'use strict';var _=require(_0xdbb9('0x0'));var util=require(_0xdbb9('0x1'));var logger=require(_0xdbb9('0x2'))(_0xdbb9('0x3'));var moment=require(_0xdbb9('0x4'));var BPromise=require(_0xdbb9('0x5'));var rp=require(_0xdbb9('0x6'));var fs=require('fs');var path=require(_0xdbb9('0x7'));var rimraf=require(_0xdbb9('0x8'));var config=require(_0xdbb9('0x9'));var attributes=require('./schedule.attributes');module['exports']=function(_0x4f6072,_0x2e7dea){return _0x4f6072[_0xdbb9('0xa')](_0xdbb9('0xb'),attributes,{'tableName':_0xdbb9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf083c5..cca9b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a5a=['jayson/promise','request','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x36b037,_0x2b234e){var _0x409194=function(_0xddc9dc){while(--_0xddc9dc){_0x36b037['push'](_0x36b037['shift']());}};_0x409194(++_0x2b234e);}(_0x4a5a,0x15c));var _0xa4a5=function(_0x493280,_0x5e6415){_0x493280=_0x493280-0x0;var _0x117dc2=_0x4a5a[_0x493280];return _0x117dc2;};'use strict';var _=require('lodash');var util=require(_0xa4a5('0x0'));var moment=require(_0xa4a5('0x1'));var BPromise=require(_0xa4a5('0x2'));var rs=require(_0xa4a5('0x3'));var fs=require('fs');var Redis=require(_0xa4a5('0x4'));var db=require(_0xa4a5('0x5'))['db'];var utils=require(_0xa4a5('0x6'));var logger=require(_0xa4a5('0x7'))('rpc');var config=require(_0xa4a5('0x8'));var jayson=require(_0xa4a5('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1db7d2,_0x6e6f19,_0x69333c){return new BPromise(function(_0x307189,_0x16a9d4){return client[_0xa4a5('0xa')](_0x1db7d2,_0x69333c)['then'](function(_0x184d2e){logger['info'](_0xa4a5('0xb'),_0x6e6f19,_0xa4a5('0xc'));logger[_0xa4a5('0xd')](_0xa4a5('0xe'),_0x6e6f19,_0xa4a5('0xc'),JSON[_0xa4a5('0xf')](_0x184d2e));if(_0x184d2e[_0xa4a5('0x10')]){if(_0x184d2e['error'][_0xa4a5('0x11')]===0x1f4){logger[_0xa4a5('0x10')](_0xa4a5('0xb'),_0x6e6f19,_0x184d2e[_0xa4a5('0x10')][_0xa4a5('0x12')]);return _0x16a9d4(_0x184d2e[_0xa4a5('0x10')][_0xa4a5('0x12')]);}logger[_0xa4a5('0x10')](_0xa4a5('0xb'),_0x6e6f19,_0x184d2e[_0xa4a5('0x10')][_0xa4a5('0x12')]);return _0x307189(_0x184d2e[_0xa4a5('0x10')][_0xa4a5('0x12')]);}else{logger[_0xa4a5('0x13')](_0xa4a5('0xb'),_0x6e6f19,'request\x20sent');_0x307189(_0x184d2e['result'][_0xa4a5('0x12')]);}})[_0xa4a5('0x14')](function(_0x522743){logger['error'](_0xa4a5('0xb'),_0x6e6f19,_0x522743);_0x16a9d4(_0x522743);});});}
\ No newline at end of file
+var _0xb857=['info','Schedule,\x20%s,\x20%s','request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xb857,0xaa));var _0x7b85=function(_0x428860,_0x1d19db){_0x428860=_0x428860-0x0;var _0x35a91f=_0xb857[_0x428860];return _0x35a91f;};'use strict';var _=require(_0x7b85('0x0'));var util=require('util');var moment=require(_0x7b85('0x1'));var BPromise=require(_0x7b85('0x2'));var rs=require(_0x7b85('0x3'));var fs=require('fs');var Redis=require(_0x7b85('0x4'));var db=require(_0x7b85('0x5'))['db'];var utils=require(_0x7b85('0x6'));var logger=require(_0x7b85('0x7'))('rpc');var config=require(_0x7b85('0x8'));var jayson=require(_0x7b85('0x9'));var client=jayson[_0x7b85('0xa')][_0x7b85('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x50f289,_0x57917b,_0x160939){return new BPromise(function(_0x4bcd26,_0x4fc3ab){return client[_0x7b85('0xc')](_0x50f289,_0x160939)[_0x7b85('0xd')](function(_0x449e69){logger[_0x7b85('0xe')](_0x7b85('0xf'),_0x57917b,_0x7b85('0x10'));logger['debug'](_0x7b85('0x11'),_0x57917b,'request\x20sent',JSON[_0x7b85('0x12')](_0x449e69));if(_0x449e69[_0x7b85('0x13')]){if(_0x449e69[_0x7b85('0x13')]['code']===0x1f4){logger[_0x7b85('0x13')](_0x7b85('0xf'),_0x57917b,_0x449e69['error'][_0x7b85('0x14')]);return _0x4fc3ab(_0x449e69['error']['message']);}logger[_0x7b85('0x13')](_0x7b85('0xf'),_0x57917b,_0x449e69['error'][_0x7b85('0x14')]);return _0x4bcd26(_0x449e69[_0x7b85('0x13')]['message']);}else{logger[_0x7b85('0xe')](_0x7b85('0xf'),_0x57917b,_0x7b85('0x10'));_0x4bcd26(_0x449e69[_0x7b85('0x15')][_0x7b85('0x14')]);}})[_0x7b85('0x16')](function(_0x3ba361){logger[_0x7b85('0x13')](_0x7b85('0xf'),_0x57917b,_0x3ba361);_0x4fc3ab(_0x3ba361);});});}
\ No newline at end of file
index 2ba57ee..e95396e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8450=['../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','show','/:id/download','download','post','create','put','/:id','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x4d1cc5,_0x5cf765){var _0x5e3fe5=function(_0x1e96ef){while(--_0x1e96ef){_0x4d1cc5['push'](_0x4d1cc5['shift']());}};_0x5e3fe5(++_0x5cf765);}(_0x8450,0xf4));var _0x0845=function(_0x3bd417,_0x415e58){_0x3bd417=_0x3bd417-0x0;var _0x3ef4b8=_0x8450[_0x3bd417];return _0x3ef4b8;};'use strict';var multer=require(_0x0845('0x0'));var util=require('util');var path=require(_0x0845('0x1'));var timeout=require('connect-timeout');var express=require(_0x0845('0x2'));var router=express[_0x0845('0x3')]();var fs_extra=require(_0x0845('0x4'));var auth=require(_0x0845('0x5'));var interaction=require(_0x0845('0x6'));var config=require(_0x0845('0x7'));var controller=require(_0x0845('0x8'));router[_0x0845('0x9')]('/',auth[_0x0845('0xa')](),controller[_0x0845('0xb')]);router[_0x0845('0x9')](_0x0845('0xc'),auth[_0x0845('0xa')](),controller[_0x0845('0xd')]);router[_0x0845('0x9')]('/:id',auth[_0x0845('0xa')](),controller[_0x0845('0xe')]);router[_0x0845('0x9')](_0x0845('0xf'),auth[_0x0845('0xa')](),controller[_0x0845('0x10')]);router[_0x0845('0x11')]('/',auth[_0x0845('0xa')](),controller[_0x0845('0x12')]);router[_0x0845('0x13')](_0x0845('0x14'),auth[_0x0845('0xa')](),controller[_0x0845('0x15')]);router[_0x0845('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x0845('0x17')]);module[_0x0845('0x18')]=router;
\ No newline at end of file
+var _0x7103=['/:id','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id/download','download','post','create'];(function(_0x23adb1,_0x6232ed){var _0x3994eb=function(_0x455694){while(--_0x455694){_0x23adb1['push'](_0x23adb1['shift']());}};_0x3994eb(++_0x6232ed);}(_0x7103,0x1b8));var _0x3710=function(_0x14bf56,_0x5d28c3){_0x14bf56=_0x14bf56-0x0;var _0x472a88=_0x7103[_0x14bf56];return _0x472a88;};'use strict';var multer=require(_0x3710('0x0'));var util=require('util');var path=require(_0x3710('0x1'));var timeout=require('connect-timeout');var express=require(_0x3710('0x2'));var router=express[_0x3710('0x3')]();var fs_extra=require(_0x3710('0x4'));var auth=require(_0x3710('0x5'));var interaction=require(_0x3710('0x6'));var config=require(_0x3710('0x7'));var controller=require('./screenRecording.controller');router[_0x3710('0x8')]('/',auth[_0x3710('0x9')](),controller['index']);router[_0x3710('0x8')](_0x3710('0xa'),auth[_0x3710('0x9')](),controller[_0x3710('0xb')]);router[_0x3710('0x8')]('/:id',auth[_0x3710('0x9')](),controller['show']);router[_0x3710('0x8')](_0x3710('0xc'),auth['isAuthenticated'](),controller[_0x3710('0xd')]);router[_0x3710('0xe')]('/',auth[_0x3710('0x9')](),controller[_0x3710('0xf')]);router['put'](_0x3710('0x10'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x3710('0x10'),auth['isAuthenticated'](),controller[_0x3710('0x11')]);module[_0x3710('0x12')]=router;
\ No newline at end of file
index 4d9d822..19f73d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a0b=['../../config/environment','exports','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','closedAt','duration','DATE','startedAt','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize'];(function(_0x3344a5,_0x54660f){var _0xa61596=function(_0x368518){while(--_0x368518){_0x3344a5['push'](_0x3344a5['shift']());}};_0xa61596(++_0x54660f);}(_0x6a0b,0xf6));var _0xb6a0=function(_0x5bed21,_0x1a1cf8){_0x5bed21=_0x5bed21-0x0;var _0x298311=_0x6a0b[_0x5bed21];return _0x298311;};'use strict';var Sequelize=require(_0xb6a0('0x0'));var moment=require('moment');var path=require('path');var config=require(_0xb6a0('0x1'));module[_0xb6a0('0x2')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xb6a0('0x3')](_0xb6a0('0x4'))?path[_0xb6a0('0x5')](this[_0xb6a0('0x3')](_0xb6a0('0x4'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xb6a0('0x6')]},'value':{'type':Sequelize[_0xb6a0('0x6')],'set':function(_0x41bec1){var _0xef4451=_0x41bec1[_0xb6a0('0x7')](/\\/g,'/');this[_0xb6a0('0x8')](_0xb6a0('0x4'),_0xef4451);}},'rating':{'type':Sequelize[_0xb6a0('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xb6a0('0x9')],'set':function(_0x4e3aaf){this['setDataValue']('startedAt',moment()['subtract'](_0x4e3aaf,'ms'));this['setDataValue'](_0xb6a0('0xa'),moment());this['setDataValue'](_0xb6a0('0xb'),_0x4e3aaf);}},'startedAt':{'type':Sequelize[_0xb6a0('0xc')],'get':function(){return moment(this['getDataValue'](_0xb6a0('0xd')))[_0xb6a0('0xe')](_0xb6a0('0xf'))[_0xb6a0('0x10')]();}},'closedAt':{'type':Sequelize[_0xb6a0('0xc')],'get':function(){return moment(this[_0xb6a0('0x3')](_0xb6a0('0xa')))[_0xb6a0('0xe')](_0xb6a0('0xf'))[_0xb6a0('0x10')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xb6a0('0x3')](_0xb6a0('0x11')))[_0xb6a0('0xe')](_0xb6a0('0xf'))[_0xb6a0('0x10')]();}},'updatedAt':{'type':Sequelize[_0xb6a0('0xc')],'get':function(){return moment(this[_0xb6a0('0x3')](_0xb6a0('0x12')))[_0xb6a0('0xe')]('MM-DD-YYYY\x20HH:mm')[_0xb6a0('0x10')]();}}};
\ No newline at end of file
+var _0xdfb1=['sequelize','moment','path','../../config/environment','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt'];(function(_0x2945d3,_0x92eef8){var _0x2554a3=function(_0x3e5007){while(--_0x3e5007){_0x2945d3['push'](_0x2945d3['shift']());}};_0x2554a3(++_0x92eef8);}(_0xdfb1,0x8c));var _0x1dfb=function(_0x1bab6f,_0x3f27c2){_0x1bab6f=_0x1bab6f-0x0;var _0x8cf49a=_0xdfb1[_0x1bab6f];return _0x8cf49a;};'use strict';var Sequelize=require(_0x1dfb('0x0'));var moment=require(_0x1dfb('0x1'));var path=require(_0x1dfb('0x2'));var config=require(_0x1dfb('0x3'));module['exports']={'format':{'type':Sequelize[_0x1dfb('0x4')],'get':function(){return this[_0x1dfb('0x5')](_0x1dfb('0x6'))?path[_0x1dfb('0x7')](this['getDataValue']('value')):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x1dfb('0x8')]},'value':{'type':Sequelize[_0x1dfb('0x8')],'set':function(_0x1e10d9){var _0x496be7=_0x1e10d9[_0x1dfb('0x9')](/\\/g,'/');this[_0x1dfb('0xa')](_0x1dfb('0x6'),_0x496be7);}},'rating':{'type':Sequelize[_0x1dfb('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x24d8b9){this[_0x1dfb('0xa')](_0x1dfb('0xc'),moment()['subtract'](_0x24d8b9,'ms'));this[_0x1dfb('0xa')](_0x1dfb('0xd'),moment());this[_0x1dfb('0xa')](_0x1dfb('0xe'),_0x24d8b9);}},'startedAt':{'type':Sequelize[_0x1dfb('0xf')],'get':function(){return moment(this[_0x1dfb('0x5')](_0x1dfb('0xc')))[_0x1dfb('0x10')](_0x1dfb('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0x1dfb('0xf')],'get':function(){return moment(this[_0x1dfb('0x5')]('closedAt'))[_0x1dfb('0x10')](_0x1dfb('0x11'))[_0x1dfb('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x1dfb('0x5')](_0x1dfb('0x13')))[_0x1dfb('0x10')]('MM-DD-YYYY\x20HH:mm')[_0x1dfb('0x12')]();}},'updatedAt':{'type':Sequelize[_0x1dfb('0xf')],'get':function(){return moment(this[_0x1dfb('0x5')]('updatedAt'))[_0x1dfb('0x10')](_0x1dfb('0x11'))[_0x1dfb('0x12')]();}}};
\ No newline at end of file
index ad6d0b3..2fb4d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['rawAttributes','fieldName','type','format','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','keys','include','find','create','body','duration','createdAt','closedAt','value','describe','../../components/encryptor','uniqueid','params','join','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','root','ValidationError','download','filename','extname','unlink','message','Not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ScreenRecording'];(function(_0x3b0d12,_0x581b78){var _0x44eb08=function(_0x40632d){while(--_0x40632d){_0x3b0d12['push'](_0x3b0d12['shift']());}};_0x44eb08(++_0x581b78);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x4a21b9,_0x128423){_0x4a21b9=_0x4a21b9-0x0;var _0x3e812f=_0xb4c7[_0x4a21b9];return _0x3e812f;};'use strict';var emlformat=require(_0x7b4c('0x0'));var rimraf=require(_0x7b4c('0x1'));var zipdir=require(_0x7b4c('0x2'));var jsonpatch=require(_0x7b4c('0x3'));var rp=require(_0x7b4c('0x4'));var moment=require('moment');var BPromise=require(_0x7b4c('0x5'));var Mustache=require(_0x7b4c('0x6'));var util=require(_0x7b4c('0x7'));var path=require(_0x7b4c('0x8'));var sox=require(_0x7b4c('0x9'));var csv=require('to-csv');var ejs=require(_0x7b4c('0xa'));var fs=require('fs');var fs_extra=require(_0x7b4c('0xb'));var _=require(_0x7b4c('0xc'));var squel=require('squel');var crypto=require(_0x7b4c('0xd'));var jsforce=require(_0x7b4c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7b4c('0xf'));var querystring=require(_0x7b4c('0x10'));var Papa=require(_0x7b4c('0x11'));var Redis=require(_0x7b4c('0x12'));var authService=require(_0x7b4c('0x13'));var qs=require(_0x7b4c('0x14'));var as=require(_0x7b4c('0x15'));var hardwareService=require(_0x7b4c('0x16'));var logger=require(_0x7b4c('0x17'))(_0x7b4c('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7b4c('0x19'));var db=require(_0x7b4c('0x1a'))['db'];function respondWithStatusCode(_0x38656b,_0x1722ad){_0x1722ad=_0x1722ad||0xcc;return function(_0x3e1558){if(_0x3e1558){return _0x38656b[_0x7b4c('0x1b')](_0x1722ad);}return _0x38656b[_0x7b4c('0x1c')](_0x1722ad)[_0x7b4c('0x1d')]();};}function respondWithResult(_0x25b90b,_0x387488){_0x387488=_0x387488||0xc8;return function(_0x593a19){if(_0x593a19){return _0x25b90b[_0x7b4c('0x1c')](_0x387488)[_0x7b4c('0x1e')](_0x593a19);}};}function respondWithFilteredResult(_0xdc71cd,_0x2a0e2f){return function(_0xa0a812){if(_0xa0a812){var _0x2471b3=typeof _0x2a0e2f[_0x7b4c('0x1f')]===_0x7b4c('0x20')&&typeof _0x2a0e2f['limit']===_0x7b4c('0x20');var _0xe71d88=_0xa0a812[_0x7b4c('0x21')];var _0x36c02a=_0x2471b3?0x0:_0x2a0e2f['offset'];var _0x3ce10c=_0x2471b3?_0xa0a812[_0x7b4c('0x21')]:_0x2a0e2f[_0x7b4c('0x1f')]+_0x2a0e2f[_0x7b4c('0x22')];var _0x2d4c72;if(_0x3ce10c>=_0xe71d88){_0x3ce10c=_0xe71d88;_0x2d4c72=0xc8;}else{_0x2d4c72=0xce;}_0xdc71cd[_0x7b4c('0x1c')](_0x2d4c72);return _0xdc71cd[_0x7b4c('0x23')](_0x7b4c('0x24'),_0x36c02a+'-'+_0x3ce10c+'/'+_0xe71d88)[_0x7b4c('0x1e')](_0xa0a812);}return null;};}function patchUpdates(_0x55e3df){return function(_0x1f06ec){try{jsonpatch[_0x7b4c('0x25')](_0x1f06ec,_0x55e3df,!![]);}catch(_0x11996d){return BPromise[_0x7b4c('0x26')](_0x11996d);}return _0x1f06ec[_0x7b4c('0x27')]();};}function saveUpdates(_0x168ac9,_0x176704){return function(_0x3d4826){if(_0x3d4826){return _0x3d4826[_0x7b4c('0x28')](_0x168ac9)[_0x7b4c('0x29')](function(_0x5eec1e){return _0x5eec1e;});}return null;};}function removeEntity(_0x45438c,_0x4350c9){return function(_0x276271){if(_0x276271){return _0x276271[_0x7b4c('0x2a')]()[_0x7b4c('0x29')](function(){_0x45438c[_0x7b4c('0x1c')](0xcc)[_0x7b4c('0x1d')]();});}};}function handleEntityNotFound(_0x459eb4,_0x1f311e){return function(_0x1a69db){if(!_0x1a69db){_0x459eb4[_0x7b4c('0x1b')](0x194);}return _0x1a69db;};}function handleError(_0x257da2,_0x316e5f){_0x316e5f=_0x316e5f||0x1f4;return function(_0x501f75){logger[_0x7b4c('0x2b')](_0x501f75[_0x7b4c('0x2c')]);if(_0x501f75[_0x7b4c('0x2d')]){delete _0x501f75[_0x7b4c('0x2d')];}_0x257da2[_0x7b4c('0x1c')](_0x316e5f)[_0x7b4c('0x2e')](_0x501f75);};}exports[_0x7b4c('0x2f')]=function(_0x2552f9,_0x3e4a46){var _0x9a799b={},_0x3585cd={},_0x130ace={'count':0x0,'rows':[]};var _0x3544bc=_[_0x7b4c('0x30')](db[_0x7b4c('0x31')][_0x7b4c('0x32')],function(_0x1d0724){return{'name':_0x1d0724[_0x7b4c('0x33')],'type':_0x1d0724[_0x7b4c('0x34')]['key']};});_0x3585cd['model']=_['differenceBy'](_[_0x7b4c('0x30')](_0x3544bc,_0x7b4c('0x2d')),[_0x7b4c('0x35')]);_0x3585cd[_0x7b4c('0x36')]=_['keys'](_0x2552f9[_0x7b4c('0x36')]);_0x3585cd[_0x7b4c('0x37')]=_['intersection'](_0x3585cd[_0x7b4c('0x38')],_0x3585cd['query']);_0x9a799b[_0x7b4c('0x39')]=_[_0x7b4c('0x3a')](_0x3585cd[_0x7b4c('0x38')],qs['fields'](_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x3b')]));_0x9a799b['attributes']=_0x9a799b[_0x7b4c('0x39')][_0x7b4c('0x3c')]?_0x9a799b[_0x7b4c('0x39')]:_0x3585cd[_0x7b4c('0x38')];if(!_0x2552f9['query']['hasOwnProperty'](_0x7b4c('0x3d'))){_0x9a799b[_0x7b4c('0x22')]=qs['limit'](_0x2552f9[_0x7b4c('0x36')]['limit']);_0x9a799b['offset']=qs[_0x7b4c('0x1f')](_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x1f')]);}_0x9a799b[_0x7b4c('0x3e')]=qs['sort'](_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x3f')]);_0x9a799b[_0x7b4c('0x40')]=qs[_0x7b4c('0x37')](_[_0x7b4c('0x41')](_0x2552f9[_0x7b4c('0x36')],_0x3585cd[_0x7b4c('0x37')]),_0x3544bc);if(_0x2552f9['query']['filter']){_0x9a799b[_0x7b4c('0x40')]=_[_0x7b4c('0x42')](_0x9a799b[_0x7b4c('0x40')],{'$or':_[_0x7b4c('0x30')](_0x3544bc,function(_0xb8486d){if(_0xb8486d['type']!==_0x7b4c('0x43')){var _0x902367={};_0x902367[_0xb8486d[_0x7b4c('0x2d')]]={'$like':'%'+_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x44')]+'%'};return _0x902367;}})});}_0x9a799b=_[_0x7b4c('0x42')]({},_0x9a799b,_0x2552f9[_0x7b4c('0x45')]);var _0x1080fc={'where':_0x9a799b[_0x7b4c('0x40')]};return db['ScreenRecording'][_0x7b4c('0x21')](_0x1080fc)['then'](function(_0x2a3a74){_0x130ace['count']=_0x2a3a74;if(_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x46')]){_0x9a799b['include']=[{'all':!![]}];}return db['ScreenRecording'][_0x7b4c('0x47')](_0x9a799b);})[_0x7b4c('0x29')](function(_0x1def44){_0x130ace[_0x7b4c('0x48')]=_0x1def44;return _0x130ace;})['then'](respondWithFilteredResult(_0x3e4a46,_0x9a799b))[_0x7b4c('0x49')](handleError(_0x3e4a46,null));};exports[_0x7b4c('0x4a')]=function(_0x100774,_0x5d4ed8){var _0x45ad59={'raw':![],'where':{'id':_0x100774['params']['id']}},_0x4b4757={};_0x4b4757[_0x7b4c('0x38')]=_['keys'](db[_0x7b4c('0x31')][_0x7b4c('0x32')]);_0x4b4757[_0x7b4c('0x36')]=_[_0x7b4c('0x4b')](_0x100774[_0x7b4c('0x36')]);_0x4b4757[_0x7b4c('0x37')]=_[_0x7b4c('0x3a')](_0x4b4757[_0x7b4c('0x38')],_0x4b4757[_0x7b4c('0x36')]);_0x45ad59['attributes']=_[_0x7b4c('0x3a')](_0x4b4757['model'],qs['fields'](_0x100774[_0x7b4c('0x36')][_0x7b4c('0x3b')]));_0x45ad59['attributes']=_0x45ad59['attributes'][_0x7b4c('0x3c')]?_0x45ad59[_0x7b4c('0x39')]:_0x4b4757[_0x7b4c('0x38')];if(_0x100774[_0x7b4c('0x36')][_0x7b4c('0x46')]){_0x45ad59[_0x7b4c('0x4c')]=[{'all':!![]}];}_0x45ad59=_[_0x7b4c('0x42')]({},_0x45ad59,_0x100774[_0x7b4c('0x45')]);return db['ScreenRecording'][_0x7b4c('0x4d')](_0x45ad59)[_0x7b4c('0x29')](handleEntityNotFound(_0x5d4ed8,null))[_0x7b4c('0x29')](respondWithResult(_0x5d4ed8,null))[_0x7b4c('0x49')](handleError(_0x5d4ed8,null));};exports[_0x7b4c('0x4e')]=function(_0x379f15,_0x11a6f9){return db[_0x7b4c('0x31')][_0x7b4c('0x4e')](_0x379f15['body'],{})['then'](respondWithResult(_0x11a6f9,0xc9))[_0x7b4c('0x49')](handleError(_0x11a6f9,null));};exports[_0x7b4c('0x28')]=function(_0x97eadf,_0x5d4192){if(_0x97eadf[_0x7b4c('0x4f')]['id']){delete _0x97eadf[_0x7b4c('0x4f')]['id'];}delete _0x97eadf['body'][_0x7b4c('0x50')];delete _0x97eadf['body'][_0x7b4c('0x51')];delete _0x97eadf['body'][_0x7b4c('0x52')];delete _0x97eadf['body'][_0x7b4c('0x53')];return db[_0x7b4c('0x31')]['find']({'where':{'id':_0x97eadf['params']['id']}})[_0x7b4c('0x29')](handleEntityNotFound(_0x5d4192,null))[_0x7b4c('0x29')](saveUpdates(_0x97eadf[_0x7b4c('0x4f')],null))['then'](respondWithResult(_0x5d4192,null))['catch'](handleError(_0x5d4192,null));};exports[_0x7b4c('0x54')]=function(_0x1c118a,_0x4cbf1b){return db['ScreenRecording'][_0x7b4c('0x54')]()[_0x7b4c('0x29')](respondWithResult(_0x4cbf1b,null))[_0x7b4c('0x49')](handleError(_0x4cbf1b,null));};exports['download']=function(_0x1d017d,_0x2f009a,_0x4aaf57){var _0x484e80=require(_0x7b4c('0x55'));var _0x4d8491=![];var _0x59db20={};if(_0x1d017d[_0x7b4c('0x36')]['type']&&_0x1d017d['query'][_0x7b4c('0x34')]===_0x7b4c('0x56')){_0x59db20[_0x7b4c('0x56')]=_0x1d017d[_0x7b4c('0x57')]['id'];}else{_0x59db20['id']=_0x1d017d['params']['id'];}return db['ScreenRecording'][_0x7b4c('0x4d')]({'where':_0x59db20,'attributes':['id',_0x7b4c('0x53')],'raw':!![]})[_0x7b4c('0x29')](handleEntityNotFound(_0x2f009a,null))['then'](function(_0x255262){if(_0x255262){var _0x3d81fb=path[_0x7b4c('0x58')](config['root'],_0x7b4c('0x59'),_0x255262[_0x7b4c('0x53')]);var _0x529803=util[_0x7b4c('0x35')](_0x7b4c('0x5a'),_0x3d81fb);if(fs[_0x7b4c('0x5b')](_0x529803)){_0x4d8491=!![];return _0x484e80[_0x7b4c('0x5c')](_0x529803,_0x3d81fb,config[_0x7b4c('0x5d')][_0x7b4c('0x5e')])[_0x7b4c('0x29')](function(){return _0x255262;});}return _0x255262;}})['then'](function(_0x4443d0){if(_0x4443d0){var _0x2dc79a=path['join'](config[_0x7b4c('0x5f')],_0x7b4c('0x59'),_0x4443d0[_0x7b4c('0x53')]);if(!fs[_0x7b4c('0x5b')](_0x2dc79a)){throw new db['Sequelize'][(_0x7b4c('0x60'))]('ScreenRecording\x20not\x20found');}if(_0x4443d0['filename']){return _0x2f009a[_0x7b4c('0x61')](_0x2dc79a,_0x4443d0[_0x7b4c('0x62')]+path[_0x7b4c('0x63')](_0x2dc79a),function(){if(_0x4d8491){fs[_0x7b4c('0x64')](_0x2dc79a);}});}else{return _0x2f009a[_0x7b4c('0x61')](_0x2dc79a,function(_0x5b24f6){if(_0x4d8491){fs['unlink'](_0x2dc79a);}});}}})[_0x7b4c('0x49')](function(_0x3c84af){if(_0x3c84af[_0x7b4c('0x65')]==='ScreenRecording\x20not\x20found'){_0x2f009a[_0x7b4c('0x1c')](0x194)[_0x7b4c('0x2e')](_0x7b4c('0x66'));}else{return handleError(_0x2f009a,null);}});};exports['destroy']=function(_0x222b47,_0x3b2144){return db[_0x7b4c('0x31')]['find']({'where':{'id':_0x222b47[_0x7b4c('0x57')]['id']}})[_0x7b4c('0x29')](function(_0x4ac03e){if(_[_0x7b4c('0x67')](_0x4ac03e)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4ac03e;})[_0x7b4c('0x29')](function(_0x11ae6e){var _0x3a3713=path['join'](config['root'],_0x7b4c('0x59'),_0x11ae6e[_0x7b4c('0x53')]);logger[_0x7b4c('0x68')]('cancellazione\x20fisica\x20documento\x20%s',_0x3a3713);if(!_[_0x7b4c('0x67')](_0x11ae6e['value'])&&fs[_0x7b4c('0x5b')](_0x3a3713)){logger[_0x7b4c('0x68')](_0x7b4c('0x69')+_0x3a3713+_0x7b4c('0x6a'));fs[_0x7b4c('0x6b')](_0x3a3713);}_0x3a3713=_0x3a3713+'.cypher';if(!_[_0x7b4c('0x67')](_0x11ae6e[_0x7b4c('0x53')])&&fs['existsSync'](_0x3a3713)){logger[_0x7b4c('0x68')](_0x7b4c('0x69')+_0x3a3713+_0x7b4c('0x6a'));fs[_0x7b4c('0x6b')](_0x3a3713);}return _0x11ae6e;})[_0x7b4c('0x29')](function(_0x2befd7){if(!_0x2befd7)throw new InternalError();return _0x2befd7[_0x7b4c('0x2a')]();})[_0x7b4c('0x29')](function(){_0x3b2144['status'](0xcc)[_0x7b4c('0x1d')]();})[_0x7b4c('0x49')](handleError(_0x3b2144,null));};
\ No newline at end of file
+var _0x038b=['offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','error','name','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','params','find','create','body','duration','createdAt','closedAt','value','describe','../../components/encryptor','uniqueid','root','%s.cypher','decryptFile','secrets','recording','join','server/files/screen_recordings','existsSync','ValidationError','ScreenRecording\x20not\x20found','filename','download','unlink','message','send','Not\x20found','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x2a35b7,_0x32d1af){var _0x2e65ec=function(_0xcf7ec6){while(--_0xcf7ec6){_0x2a35b7['push'](_0x2a35b7['shift']());}};_0x2e65ec(++_0x32d1af);}(_0x038b,0x114));var _0xb038=function(_0x7efa1d,_0x29e7de){_0x7efa1d=_0x7efa1d-0x0;var _0x304c4e=_0x038b[_0x7efa1d];return _0x304c4e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb038('0x0'));var zipdir=require(_0xb038('0x1'));var jsonpatch=require(_0xb038('0x2'));var rp=require('request-promise');var moment=require(_0xb038('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb038('0x4'));var util=require(_0xb038('0x5'));var path=require('path');var sox=require(_0xb038('0x6'));var csv=require(_0xb038('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb038('0x8'));var squel=require(_0xb038('0x9'));var crypto=require(_0xb038('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb038('0x7'));var querystring=require(_0xb038('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb038('0xc'));var qs=require(_0xb038('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb038('0xe'));var logger=require(_0xb038('0xf'))(_0xb038('0x10'));var utils=require(_0xb038('0x11'));var config=require(_0xb038('0x12'));var licenseUtil=require(_0xb038('0x13'));var db=require(_0xb038('0x14'))['db'];function respondWithStatusCode(_0x439751,_0x16e4a3){_0x16e4a3=_0x16e4a3||0xcc;return function(_0x57acd8){if(_0x57acd8){return _0x439751[_0xb038('0x15')](_0x16e4a3);}return _0x439751[_0xb038('0x16')](_0x16e4a3)[_0xb038('0x17')]();};}function respondWithResult(_0x3cc717,_0x3a71a6){_0x3a71a6=_0x3a71a6||0xc8;return function(_0x13acc7){if(_0x13acc7){return _0x3cc717[_0xb038('0x16')](_0x3a71a6)['json'](_0x13acc7);}};}function respondWithFilteredResult(_0xe8aa7c,_0x26e4f2){return function(_0x183141){if(_0x183141){var _0x39323e=typeof _0x26e4f2[_0xb038('0x18')]===_0xb038('0x19')&&typeof _0x26e4f2['limit']===_0xb038('0x19');var _0x3039b0=_0x183141[_0xb038('0x1a')];var _0x3b095a=_0x39323e?0x0:_0x26e4f2['offset'];var _0x49b237=_0x39323e?_0x183141[_0xb038('0x1a')]:_0x26e4f2[_0xb038('0x18')]+_0x26e4f2[_0xb038('0x1b')];var _0x31c348;if(_0x49b237>=_0x3039b0){_0x49b237=_0x3039b0;_0x31c348=0xc8;}else{_0x31c348=0xce;}_0xe8aa7c['status'](_0x31c348);return _0xe8aa7c[_0xb038('0x1c')](_0xb038('0x1d'),_0x3b095a+'-'+_0x49b237+'/'+_0x3039b0)[_0xb038('0x1e')](_0x183141);}return null;};}function patchUpdates(_0x33a377){return function(_0xc6cd61){try{jsonpatch['apply'](_0xc6cd61,_0x33a377,!![]);}catch(_0x2e0369){return BPromise[_0xb038('0x1f')](_0x2e0369);}return _0xc6cd61[_0xb038('0x20')]();};}function saveUpdates(_0x87b899,_0x5f123d){return function(_0x2812c9){if(_0x2812c9){return _0x2812c9[_0xb038('0x21')](_0x87b899)['then'](function(_0x1eb9cd){return _0x1eb9cd;});}return null;};}function removeEntity(_0x43d403,_0x573f93){return function(_0x241329){if(_0x241329){return _0x241329['destroy']()[_0xb038('0x22')](function(){_0x43d403[_0xb038('0x16')](0xcc)[_0xb038('0x17')]();});}};}function handleEntityNotFound(_0x1df7c4,_0x5d4343){return function(_0xe4ceda){if(!_0xe4ceda){_0x1df7c4[_0xb038('0x15')](0x194);}return _0xe4ceda;};}function handleError(_0x576be5,_0xb6d93f){_0xb6d93f=_0xb6d93f||0x1f4;return function(_0x33cf3c){logger[_0xb038('0x23')](_0x33cf3c['stack']);if(_0x33cf3c[_0xb038('0x24')]){delete _0x33cf3c[_0xb038('0x24')];}_0x576be5[_0xb038('0x16')](_0xb6d93f)['send'](_0x33cf3c);};}exports[_0xb038('0x25')]=function(_0x2855a6,_0x28a6a9){var _0x12b3b6={},_0xc387d={},_0x551b55={'count':0x0,'rows':[]};var _0x1783d4=_[_0xb038('0x26')](db[_0xb038('0x27')][_0xb038('0x28')],function(_0x1abe23){return{'name':_0x1abe23[_0xb038('0x29')],'type':_0x1abe23[_0xb038('0x2a')][_0xb038('0x2b')]};});_0xc387d[_0xb038('0x2c')]=_[_0xb038('0x2d')](_[_0xb038('0x26')](_0x1783d4,_0xb038('0x24')),[_0xb038('0x2e')]);_0xc387d['query']=_[_0xb038('0x2f')](_0x2855a6['query']);_0xc387d[_0xb038('0x30')]=_[_0xb038('0x31')](_0xc387d[_0xb038('0x2c')],_0xc387d[_0xb038('0x32')]);_0x12b3b6[_0xb038('0x33')]=_[_0xb038('0x31')](_0xc387d[_0xb038('0x2c')],qs[_0xb038('0x34')](_0x2855a6[_0xb038('0x32')][_0xb038('0x34')]));_0x12b3b6['attributes']=_0x12b3b6[_0xb038('0x33')][_0xb038('0x35')]?_0x12b3b6[_0xb038('0x33')]:_0xc387d['model'];if(!_0x2855a6['query']['hasOwnProperty'](_0xb038('0x36'))){_0x12b3b6[_0xb038('0x1b')]=qs[_0xb038('0x1b')](_0x2855a6[_0xb038('0x32')][_0xb038('0x1b')]);_0x12b3b6[_0xb038('0x18')]=qs['offset'](_0x2855a6[_0xb038('0x32')][_0xb038('0x18')]);}_0x12b3b6[_0xb038('0x37')]=qs[_0xb038('0x38')](_0x2855a6['query'][_0xb038('0x38')]);_0x12b3b6[_0xb038('0x39')]=qs['filters'](_['pick'](_0x2855a6[_0xb038('0x32')],_0xc387d[_0xb038('0x30')]),_0x1783d4);if(_0x2855a6[_0xb038('0x32')][_0xb038('0x3a')]){_0x12b3b6[_0xb038('0x39')]=_['merge'](_0x12b3b6[_0xb038('0x39')],{'$or':_[_0xb038('0x26')](_0x1783d4,function(_0x26d48c){if(_0x26d48c[_0xb038('0x2a')]!=='VIRTUAL'){var _0x793da9={};_0x793da9[_0x26d48c[_0xb038('0x24')]]={'$like':'%'+_0x2855a6[_0xb038('0x32')]['filter']+'%'};return _0x793da9;}})});}_0x12b3b6=_[_0xb038('0x3b')]({},_0x12b3b6,_0x2855a6['options']);var _0x36f281={'where':_0x12b3b6[_0xb038('0x39')]};return db[_0xb038('0x27')]['count'](_0x36f281)[_0xb038('0x22')](function(_0x357c78){_0x551b55[_0xb038('0x1a')]=_0x357c78;if(_0x2855a6['query'][_0xb038('0x3c')]){_0x12b3b6[_0xb038('0x3d')]=[{'all':!![]}];}return db[_0xb038('0x27')][_0xb038('0x3e')](_0x12b3b6);})['then'](function(_0x28b922){_0x551b55[_0xb038('0x3f')]=_0x28b922;return _0x551b55;})[_0xb038('0x22')](respondWithFilteredResult(_0x28a6a9,_0x12b3b6))[_0xb038('0x40')](handleError(_0x28a6a9,null));};exports['show']=function(_0x19dc7b,_0x269c7d){var _0x57816c={'raw':![],'where':{'id':_0x19dc7b[_0xb038('0x41')]['id']}},_0x207fb5={};_0x207fb5[_0xb038('0x2c')]=_['keys'](db[_0xb038('0x27')][_0xb038('0x28')]);_0x207fb5['query']=_['keys'](_0x19dc7b[_0xb038('0x32')]);_0x207fb5[_0xb038('0x30')]=_[_0xb038('0x31')](_0x207fb5[_0xb038('0x2c')],_0x207fb5[_0xb038('0x32')]);_0x57816c[_0xb038('0x33')]=_[_0xb038('0x31')](_0x207fb5[_0xb038('0x2c')],qs['fields'](_0x19dc7b['query']['fields']));_0x57816c[_0xb038('0x33')]=_0x57816c[_0xb038('0x33')]['length']?_0x57816c[_0xb038('0x33')]:_0x207fb5[_0xb038('0x2c')];if(_0x19dc7b[_0xb038('0x32')]['includeAll']){_0x57816c[_0xb038('0x3d')]=[{'all':!![]}];}_0x57816c=_['merge']({},_0x57816c,_0x19dc7b['options']);return db[_0xb038('0x27')][_0xb038('0x42')](_0x57816c)[_0xb038('0x22')](handleEntityNotFound(_0x269c7d,null))[_0xb038('0x22')](respondWithResult(_0x269c7d,null))[_0xb038('0x40')](handleError(_0x269c7d,null));};exports[_0xb038('0x43')]=function(_0x2f053a,_0x473aae){return db[_0xb038('0x27')][_0xb038('0x43')](_0x2f053a['body'],{})[_0xb038('0x22')](respondWithResult(_0x473aae,0xc9))[_0xb038('0x40')](handleError(_0x473aae,null));};exports['update']=function(_0x906c9c,_0x19ab72){if(_0x906c9c['body']['id']){delete _0x906c9c[_0xb038('0x44')]['id'];}delete _0x906c9c[_0xb038('0x44')][_0xb038('0x45')];delete _0x906c9c[_0xb038('0x44')][_0xb038('0x46')];delete _0x906c9c[_0xb038('0x44')][_0xb038('0x47')];delete _0x906c9c[_0xb038('0x44')][_0xb038('0x48')];return db['ScreenRecording'][_0xb038('0x42')]({'where':{'id':_0x906c9c[_0xb038('0x41')]['id']}})[_0xb038('0x22')](handleEntityNotFound(_0x19ab72,null))[_0xb038('0x22')](saveUpdates(_0x906c9c[_0xb038('0x44')],null))[_0xb038('0x22')](respondWithResult(_0x19ab72,null))['catch'](handleError(_0x19ab72,null));};exports[_0xb038('0x49')]=function(_0x2f3622,_0x2b2b4d){return db[_0xb038('0x27')][_0xb038('0x49')]()[_0xb038('0x22')](respondWithResult(_0x2b2b4d,null))[_0xb038('0x40')](handleError(_0x2b2b4d,null));};exports['download']=function(_0x3abe7a,_0x5c4a79,_0x77f211){var _0x1ea8ad=require(_0xb038('0x4a'));var _0x998fe3=![];var _0x1518c4={};if(_0x3abe7a['query']['type']&&_0x3abe7a['query'][_0xb038('0x2a')]===_0xb038('0x4b')){_0x1518c4[_0xb038('0x4b')]=_0x3abe7a[_0xb038('0x41')]['id'];}else{_0x1518c4['id']=_0x3abe7a[_0xb038('0x41')]['id'];}return db[_0xb038('0x27')]['find']({'where':_0x1518c4,'attributes':['id',_0xb038('0x48')],'raw':!![]})[_0xb038('0x22')](handleEntityNotFound(_0x5c4a79,null))['then'](function(_0x5b27d3){if(_0x5b27d3){var _0xf2907b=path['join'](config[_0xb038('0x4c')],'server/files/screen_recordings',_0x5b27d3[_0xb038('0x48')]);var _0x4677b8=util[_0xb038('0x2e')](_0xb038('0x4d'),_0xf2907b);if(fs['existsSync'](_0x4677b8)){_0x998fe3=!![];return _0x1ea8ad[_0xb038('0x4e')](_0x4677b8,_0xf2907b,config[_0xb038('0x4f')][_0xb038('0x50')])[_0xb038('0x22')](function(){return _0x5b27d3;});}return _0x5b27d3;}})[_0xb038('0x22')](function(_0x1246c8){if(_0x1246c8){var _0x14a553=path[_0xb038('0x51')](config[_0xb038('0x4c')],_0xb038('0x52'),_0x1246c8[_0xb038('0x48')]);if(!fs[_0xb038('0x53')](_0x14a553)){throw new db['Sequelize'][(_0xb038('0x54'))](_0xb038('0x55'));}if(_0x1246c8[_0xb038('0x56')]){return _0x5c4a79[_0xb038('0x57')](_0x14a553,_0x1246c8[_0xb038('0x56')]+path['extname'](_0x14a553),function(){if(_0x998fe3){fs[_0xb038('0x58')](_0x14a553);}});}else{return _0x5c4a79['download'](_0x14a553,function(_0xfb3ce6){if(_0x998fe3){fs[_0xb038('0x58')](_0x14a553);}});}}})['catch'](function(_0x15d61c){if(_0x15d61c[_0xb038('0x59')]===_0xb038('0x55')){_0x5c4a79[_0xb038('0x16')](0x194)[_0xb038('0x5a')](_0xb038('0x5b'));}else{return handleError(_0x5c4a79,null);}});};exports[_0xb038('0x5c')]=function(_0xe275b8,_0x769f1e){return db[_0xb038('0x27')]['find']({'where':{'id':_0xe275b8[_0xb038('0x41')]['id']}})['then'](function(_0x189894){if(_[_0xb038('0x5d')](_0x189894)){throw new ReferenceError(_0xb038('0x5e'));}return _0x189894;})[_0xb038('0x22')](function(_0x1f5f3f){var _0x23fb92=path[_0xb038('0x51')](config['root'],'server/files/screen_recordings',_0x1f5f3f[_0xb038('0x48')]);logger[_0xb038('0x5f')](_0xb038('0x60'),_0x23fb92);if(!_['isNil'](_0x1f5f3f['value'])&&fs[_0xb038('0x53')](_0x23fb92)){logger['info'](_0xb038('0x61')+_0x23fb92+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xb038('0x62')](_0x23fb92);}_0x23fb92=_0x23fb92+'.cypher';if(!_[_0xb038('0x5d')](_0x1f5f3f[_0xb038('0x48')])&&fs[_0xb038('0x53')](_0x23fb92)){logger[_0xb038('0x5f')](_0xb038('0x61')+_0x23fb92+_0xb038('0x63'));fs['unlinkSync'](_0x23fb92);}return _0x1f5f3f;})['then'](function(_0x45e628){if(!_0x45e628)throw new InternalError();return _0x45e628['destroy']();})[_0xb038('0x22')](function(){_0x769f1e[_0xb038('0x16')](0xcc)[_0xb038('0x17')]();})['catch'](handleError(_0x769f1e,null));};
\ No newline at end of file
index f4b890e..57f0706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccbd=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','exports','define','screen_recordings','interactionid','lodash','util'];(function(_0x728a0d,_0x44ca89){var _0xc575ed=function(_0x418c03){while(--_0x418c03){_0x728a0d['push'](_0x728a0d['shift']());}};_0xc575ed(++_0x44ca89);}(_0xccbd,0x132));var _0xdccb=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xccbd[_0x209941];return _0x1e8729;};'use strict';var _=require(_0xdccb('0x0'));var util=require(_0xdccb('0x1'));var logger=require(_0xdccb('0x2'))(_0xdccb('0x3'));var moment=require('moment');var BPromise=require(_0xdccb('0x4'));var rp=require(_0xdccb('0x5'));var fs=require('fs');var path=require(_0xdccb('0x6'));var rimraf=require(_0xdccb('0x7'));var config=require(_0xdccb('0x8'));var attributes=require(_0xdccb('0x9'));module[_0xdccb('0xa')]=function(_0x353f2b,_0x168b71){return _0x353f2b[_0xdccb('0xb')]('ScreenRecording',attributes,{'tableName':_0xdccb('0xc'),'paranoid':![],'indexes':[{'name':_0xdccb('0xd'),'fields':[_0xdccb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4680=['request-promise','rimraf','../../config/environment','./screenRecording.attributes','exports','define','interactionid','util','../../config/logger','api','bluebird'];(function(_0x245760,_0x3e65bc){var _0x5df740=function(_0xaeb7d7){while(--_0xaeb7d7){_0x245760['push'](_0x245760['shift']());}};_0x5df740(++_0x3e65bc);}(_0x4680,0x151));var _0x0468=function(_0x373402,_0x1af506){_0x373402=_0x373402-0x0;var _0x43765b=_0x4680[_0x373402];return _0x43765b;};'use strict';var _=require('lodash');var util=require(_0x0468('0x0'));var logger=require(_0x0468('0x1'))(_0x0468('0x2'));var moment=require('moment');var BPromise=require(_0x0468('0x3'));var rp=require(_0x0468('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0468('0x5'));var config=require(_0x0468('0x6'));var attributes=require(_0x0468('0x7'));module[_0x0468('0x8')]=function(_0x412bf4,_0xca4313){return _0x412bf4[_0x0468('0x9')]('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0x0468('0xa'),'fields':[_0x0468('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 50e6504..d0cb46c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf642=['lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x3ef629,_0x1fcd65){var _0x21d0ed=function(_0x167508){while(--_0x167508){_0x3ef629['push'](_0x3ef629['shift']());}};_0x21d0ed(++_0x1fcd65);}(_0xf642,0x9a));var _0x2f64=function(_0x130705,_0x2d266b){_0x130705=_0x130705-0x0;var _0x1fa991=_0xf642[_0x130705];return _0x1fa991;};'use strict';var _=require(_0x2f64('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2f64('0x1'));var fs=require('fs');var Redis=require(_0x2f64('0x2'));var db=require(_0x2f64('0x3'))['db'];var utils=require(_0x2f64('0x4'));var logger=require(_0x2f64('0x5'))(_0x2f64('0x6'));var config=require(_0x2f64('0x7'));var jayson=require(_0x2f64('0x8'));var client=jayson[_0x2f64('0x9')][_0x2f64('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b6829,_0x3176c8,_0x3766a8){return new BPromise(function(_0xc78e57,_0x3d5208){return client[_0x2f64('0xb')](_0x3b6829,_0x3766a8)[_0x2f64('0xc')](function(_0x4d7c39){logger['info'](_0x2f64('0xd'),_0x3176c8,_0x2f64('0xe'));logger[_0x2f64('0xf')](_0x2f64('0x10'),_0x3176c8,'request\x20sent',JSON[_0x2f64('0x11')](_0x4d7c39));if(_0x4d7c39[_0x2f64('0x12')]){if(_0x4d7c39[_0x2f64('0x12')]['code']===0x1f4){logger[_0x2f64('0x12')]('ScreenRecording,\x20%s,\x20%s',_0x3176c8,_0x4d7c39[_0x2f64('0x12')][_0x2f64('0x13')]);return _0x3d5208(_0x4d7c39[_0x2f64('0x12')][_0x2f64('0x13')]);}logger['error'](_0x2f64('0xd'),_0x3176c8,_0x4d7c39[_0x2f64('0x12')][_0x2f64('0x13')]);return _0xc78e57(_0x4d7c39[_0x2f64('0x12')][_0x2f64('0x13')]);}else{logger['info'](_0x2f64('0xd'),_0x3176c8,_0x2f64('0xe'));_0xc78e57(_0x4d7c39[_0x2f64('0x14')][_0x2f64('0x13')]);}})[_0x2f64('0x15')](function(_0x498579){logger['error'](_0x2f64('0xd'),_0x3176c8,_0x498579);_0x3d5208(_0x498579);});});}
\ No newline at end of file
+var _0x7219=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','debug','request\x20sent','stringify','error','message','ScreenRecording,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird'];(function(_0x30bff0,_0x933a2){var _0x1aa274=function(_0x6b33e8){while(--_0x6b33e8){_0x30bff0['push'](_0x30bff0['shift']());}};_0x1aa274(++_0x933a2);}(_0x7219,0xf9));var _0x9721=function(_0x195fb3,_0x5b509d){_0x195fb3=_0x195fb3-0x0;var _0x1cd5a1=_0x7219[_0x195fb3];return _0x1cd5a1;};'use strict';var _=require(_0x9721('0x0'));var util=require(_0x9721('0x1'));var moment=require(_0x9721('0x2'));var BPromise=require(_0x9721('0x3'));var rs=require(_0x9721('0x4'));var fs=require('fs');var Redis=require(_0x9721('0x5'));var db=require(_0x9721('0x6'))['db'];var utils=require(_0x9721('0x7'));var logger=require(_0x9721('0x8'))('rpc');var config=require(_0x9721('0x9'));var jayson=require(_0x9721('0xa'));var client=jayson[_0x9721('0xb')][_0x9721('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x28dcf6,_0x3c435c,_0x1cca7e){return new BPromise(function(_0x591bb4,_0xe077ea){return client[_0x9721('0xd')](_0x28dcf6,_0x1cca7e)['then'](function(_0x3c0b61){logger[_0x9721('0xe')]('ScreenRecording,\x20%s,\x20%s',_0x3c435c,'request\x20sent');logger[_0x9721('0xf')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x3c435c,_0x9721('0x10'),JSON[_0x9721('0x11')](_0x3c0b61));if(_0x3c0b61[_0x9721('0x12')]){if(_0x3c0b61[_0x9721('0x12')]['code']===0x1f4){logger[_0x9721('0x12')]('ScreenRecording,\x20%s,\x20%s',_0x3c435c,_0x3c0b61[_0x9721('0x12')]['message']);return _0xe077ea(_0x3c0b61[_0x9721('0x12')][_0x9721('0x13')]);}logger[_0x9721('0x12')](_0x9721('0x14'),_0x3c435c,_0x3c0b61[_0x9721('0x12')][_0x9721('0x13')]);return _0x591bb4(_0x3c0b61[_0x9721('0x12')][_0x9721('0x13')]);}else{logger[_0x9721('0xe')](_0x9721('0x14'),_0x3c435c,_0x9721('0x10'));_0x591bb4(_0x3c0b61[_0x9721('0x15')][_0x9721('0x13')]);}})[_0x9721('0x16')](function(_0x10015a){logger[_0x9721('0x12')](_0x9721('0x14'),_0x3c435c,_0x10015a);_0xe077ea(_0x10015a);});});}
\ No newline at end of file
index 07abdd5..932976f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5736=['/:id/logo','getLogo','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','%s%s','logo','extname','originalname','post','single','file','addLogo','format','logologin','/:id/logo_login','addLogoLogin','addPreferred','server/files/images/logos/','addFavicon','put','exports','util','path','Router','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show'];(function(_0x119cd8,_0x556b73){var _0x7072a3=function(_0x5908d1){while(--_0x5908d1){_0x119cd8['push'](_0x119cd8['shift']());}};_0x7072a3(++_0x556b73);}(_0x5736,0x197));var _0x6573=function(_0x55116a,_0x504e49){_0x55116a=_0x55116a-0x0;var _0x3e490e=_0x5736[_0x55116a];return _0x3e490e;};'use strict';var multer=require('multer');var util=require(_0x6573('0x0'));var path=require(_0x6573('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6573('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6573('0x3'));var config=require(_0x6573('0x4'));var controller=require(_0x6573('0x5'));router[_0x6573('0x6')]('/',auth[_0x6573('0x7')](),controller[_0x6573('0x8')]);router[_0x6573('0x6')](_0x6573('0x9'),controller[_0x6573('0xa')]);router['get'](_0x6573('0xb'),controller[_0x6573('0xc')]);router[_0x6573('0x6')](_0x6573('0xd'),controller[_0x6573('0xe')]);router[_0x6573('0x6')]('/:id/logo_login',controller[_0x6573('0xf')]);router['get'](_0x6573('0x10'),controller[_0x6573('0x11')]);router['get'](_0x6573('0x12'),controller[_0x6573('0x13')]);router[_0x6573('0x6')](_0x6573('0x14'),controller[_0x6573('0x15')]);var upload=multer({'storage':multer[_0x6573('0x16')]({'destination':function(_0x247c49,_0x4d850c,_0x147d6d){_0x147d6d(null,path[_0x6573('0x17')](config[_0x6573('0x18')],'server/files/images/logos/'));},'filename':function(_0x121c1,_0x27d0ad,_0x5b0938){_0x5b0938(null,util['format'](_0x6573('0x19'),_0x6573('0x1a'),path[_0x6573('0x1b')](_0x27d0ad[_0x6573('0x1c')])));}})});router[_0x6573('0x1d')](_0x6573('0xd'),upload[_0x6573('0x1e')](_0x6573('0x1f')),controller[_0x6573('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2364a8,_0x13162e,_0x425bb6){_0x425bb6(null,path[_0x6573('0x17')](config[_0x6573('0x18')],'server/files/images/logos/'));},'filename':function(_0x44b251,_0x4d9738,_0x4f2a48){_0x4f2a48(null,util[_0x6573('0x21')](_0x6573('0x19'),_0x6573('0x22'),path[_0x6573('0x1b')](_0x4d9738[_0x6573('0x1c')])));}})});router[_0x6573('0x1d')](_0x6573('0x23'),upload[_0x6573('0x1e')]('file'),controller[_0x6573('0x24')]);var upload=multer({'storage':multer[_0x6573('0x16')]({'destination':function(_0x33ad8d,_0x1b05be,_0x20fd4f){_0x20fd4f(null,path['join'](config['root'],'server/files/images/logos/'));},'filename':function(_0x465376,_0x505216,_0x155192){_0x155192(null,util[_0x6573('0x21')](_0x6573('0x19'),'preferred',path[_0x6573('0x1b')](_0x505216['originalname'])));}})});router[_0x6573('0x1d')]('/:id/preferred',upload[_0x6573('0x1e')]('file'),controller[_0x6573('0x25')]);var upload=multer({'storage':multer[_0x6573('0x16')]({'destination':function(_0x21126d,_0x351c73,_0x186302){_0x186302(null,path['join'](config['root'],_0x6573('0x26')));},'filename':function(_0x2cec0a,_0x3d184e,_0x437f99){_0x437f99(null,util[_0x6573('0x21')]('%s%s','favicon',path['extname'](_0x3d184e['originalname'])));}})});router[_0x6573('0x1d')]('/:id/favicon',upload[_0x6573('0x1e')](_0x6573('0x1f')),controller[_0x6573('0x27')]);router[_0x6573('0x28')](_0x6573('0xb'),auth[_0x6573('0x7')](),controller['update']);module[_0x6573('0x29')]=router;
\ No newline at end of file
+var _0xb956=['addPreferred','addFavicon','put','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','/:id/preferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','post','single','logologin','file','addLogoLogin','preferred'];(function(_0x3ab6b2,_0x316511){var _0x709f06=function(_0x8c7436){while(--_0x8c7436){_0x3ab6b2['push'](_0x3ab6b2['shift']());}};_0x709f06(++_0x316511);}(_0xb956,0xd5));var _0x6b95=function(_0x98e64,_0x216f4d){_0x98e64=_0x98e64-0x0;var _0x48d537=_0xb956[_0x98e64];return _0x48d537;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6b95('0x0'));var timeout=require(_0x6b95('0x1'));var express=require(_0x6b95('0x2'));var router=express[_0x6b95('0x3')]();var fs_extra=require(_0x6b95('0x4'));var auth=require(_0x6b95('0x5'));var interaction=require(_0x6b95('0x6'));var config=require(_0x6b95('0x7'));var controller=require(_0x6b95('0x8'));router[_0x6b95('0x9')]('/',auth[_0x6b95('0xa')](),controller[_0x6b95('0xb')]);router[_0x6b95('0x9')](_0x6b95('0xc'),controller[_0x6b95('0xd')]);router[_0x6b95('0x9')](_0x6b95('0xe'),controller[_0x6b95('0xf')]);router[_0x6b95('0x9')](_0x6b95('0x10'),controller[_0x6b95('0x11')]);router['get'](_0x6b95('0x12'),controller[_0x6b95('0x13')]);router[_0x6b95('0x9')](_0x6b95('0x14'),controller['gdpr']);router[_0x6b95('0x9')](_0x6b95('0x15'),controller['getPreferred']);router[_0x6b95('0x9')](_0x6b95('0x16'),controller[_0x6b95('0x17')]);var upload=multer({'storage':multer[_0x6b95('0x18')]({'destination':function(_0x30cf3d,_0x2c4e72,_0x446646){_0x446646(null,path[_0x6b95('0x19')](config[_0x6b95('0x1a')],_0x6b95('0x1b')));},'filename':function(_0x5721af,_0x58893a,_0x2c0b4c){_0x2c0b4c(null,util[_0x6b95('0x1c')](_0x6b95('0x1d'),_0x6b95('0x1e'),path[_0x6b95('0x1f')](_0x58893a[_0x6b95('0x20')])));}})});router[_0x6b95('0x21')](_0x6b95('0x10'),upload[_0x6b95('0x22')]('file'),controller['addLogo']);var upload=multer({'storage':multer[_0x6b95('0x18')]({'destination':function(_0x1512df,_0x163841,_0x4db12c){_0x4db12c(null,path[_0x6b95('0x19')](config[_0x6b95('0x1a')],'server/files/images/logos/'));},'filename':function(_0xceba79,_0x68b134,_0x7ccceb){_0x7ccceb(null,util[_0x6b95('0x1c')]('%s%s',_0x6b95('0x23'),path[_0x6b95('0x1f')](_0x68b134[_0x6b95('0x20')])));}})});router[_0x6b95('0x21')]('/:id/logo_login',upload[_0x6b95('0x22')](_0x6b95('0x24')),controller[_0x6b95('0x25')]);var upload=multer({'storage':multer[_0x6b95('0x18')]({'destination':function(_0x36def3,_0x16e4c1,_0x5b37c2){_0x5b37c2(null,path[_0x6b95('0x19')](config[_0x6b95('0x1a')],_0x6b95('0x1b')));},'filename':function(_0x28da51,_0x4dbf71,_0x53fa8f){_0x53fa8f(null,util[_0x6b95('0x1c')](_0x6b95('0x1d'),_0x6b95('0x26'),path['extname'](_0x4dbf71[_0x6b95('0x20')])));}})});router[_0x6b95('0x21')](_0x6b95('0x15'),upload[_0x6b95('0x22')]('file'),controller[_0x6b95('0x27')]);var upload=multer({'storage':multer[_0x6b95('0x18')]({'destination':function(_0x510dc8,_0x7dd05c,_0x511ca2){_0x511ca2(null,path[_0x6b95('0x19')](config[_0x6b95('0x1a')],_0x6b95('0x1b')));},'filename':function(_0x5c8c73,_0x157a02,_0x4a005a){_0x4a005a(null,util[_0x6b95('0x1c')]('%s%s','favicon',path[_0x6b95('0x1f')](_0x157a02['originalname'])));}})});router[_0x6b95('0x21')](_0x6b95('0x16'),upload[_0x6b95('0x22')](_0x6b95('0x24')),controller[_0x6b95('0x28')]);router[_0x6b95('0x29')]('/:id',auth[_0x6b95('0xa')](),controller['update']);module['exports']=router;
\ No newline at end of file
index f22fd0c..a0ca153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad8e=['alternate','UNSIGNED','INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml'];(function(_0x3a2561,_0x2033da){var _0x23c61c=function(_0x1836d0){while(--_0x1836d0){_0x3a2561['push'](_0x3a2561['shift']());}};_0x23c61c(++_0x2033da);}(_0xad8e,0x107));var _0xead8=function(_0x2919a6,_0x2b4d65){_0x2919a6=_0x2919a6-0x0;var _0x3c56b9=_0xad8e[_0x2919a6];return _0x3c56b9;};'use strict';var Sequelize=require('sequelize');module['exports']={'min_internal':{'type':Sequelize[_0xead8('0x0')](0xb),'unique':_0xead8('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0xead8('0x0')](0xb),'unique':_0xead8('0x2'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0xead8('0x0')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0xead8('0x3')],'defaultValue':_0xead8('0x4')},'logo':{'type':Sequelize[_0xead8('0x3')]},'defaultLogo':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0xead8('0x3')]},'turnaddr':{'type':Sequelize[_0xead8('0x3')]},'turnusername':{'type':Sequelize[_0xead8('0x3')]},'turnpassword':{'type':Sequelize[_0xead8('0x3')]},'pageTitle':{'type':Sequelize[_0xead8('0x3')]},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0xead8('0x0')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0xead8('0x6')},'enableEmailPreview':{'type':Sequelize[_0xead8('0x5')],'defaultValue':![]},'split':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0xead8('0x3')],'defaultValue':_0xead8('0x7')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0xead8('0x3')]},'defaultPreferred':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0xead8('0x3')]},'allowedLoginAttempts':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0xead8('0x3')]},'defaultFavicon':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0xead8('0x5')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0xead8('0x5')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0xead8('0x0')]},'transcribeRegion':{'type':Sequelize[_0xead8('0x3')]},'sentiment':{'type':Sequelize[_0xead8('0x5')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0xead8('0x5')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0xead8('0x0')]},'sentimentRegion':{'type':Sequelize[_0xead8('0x3')]},'language':{'type':Sequelize[_0xead8('0x3')]},'bucket':{'type':Sequelize[_0xead8('0x3')]},'googleSsoEnabled':{'type':Sequelize[_0xead8('0x5')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0xead8('0x0')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0xead8('0x0')](0x2)[_0xead8('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0xead8('0x0')](0x2)[_0xead8('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0xead8('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0xead8('0x0')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0xead8('0x5')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0xead8('0x5')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc440=['STRING','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','sequelize','exports','INTEGER','min_internal','min_mailbox'];(function(_0xfd7f5e,_0x369fbe){var _0x4c27a0=function(_0x407f58){while(--_0x407f58){_0xfd7f5e['push'](_0xfd7f5e['shift']());}};_0x4c27a0(++_0x369fbe);}(_0xc440,0x94));var _0x0c44=function(_0x84b9a1,_0x489b2a){_0x84b9a1=_0x84b9a1-0x0;var _0x5a0bf2=_0xc440[_0x84b9a1];return _0x5a0bf2;};'use strict';var Sequelize=require(_0x0c44('0x0'));module[_0x0c44('0x1')]={'min_internal':{'type':Sequelize[_0x0c44('0x2')](0xb),'unique':_0x0c44('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0c44('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x0c44('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0c44('0x5')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize[_0x0c44('0x5')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0c44('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0c44('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x0c44('0x5')]},'turnaddr':{'type':Sequelize[_0x0c44('0x5')]},'turnusername':{'type':Sequelize[_0x0c44('0x5')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0c44('0x5')]},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x0c44('0x7')},'enableEmailPreview':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0c44('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0c44('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0x0c44('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0c44('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize['STRING']},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0c44('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x0c44('0x2')]},'transcribeRegion':{'type':Sequelize[_0x0c44('0x5')]},'sentiment':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0c44('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0c44('0x5')]},'bucket':{'type':Sequelize[_0x0c44('0x5')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0c44('0x2')](0x2)[_0x0c44('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0c44('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize['INTEGER'](0x2)[_0x0c44('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0c44('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x0c44('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x0c44('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0c44('0x6')],'defaultValue':!![]}};
\ No newline at end of file
index 0f04d0a..809cd1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b30=['include','options','find','body','params','addLogo','file','logo','filename','loginLogo','getLogo','getLicense','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','join','root','toLower','default_logo.svg','default','upperFirst','custom','existsSync','ValidationError','\x20not\x20found','download','getLogoLogin','server/files/images/logos','default_loginLogo.svg','Sequelize','gdpr','securePassword','addPreferred','preferred','getPreferred','default_preferred.png','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','client','http','request','then','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','Setting,\x20%s,\x20%s','message','info','result','catch','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','Setting','type','key','model','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','includeAll','findAll','rows','show','rawAttributes','fields','length'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x0b30,0x1a7));var _0x00b3=function(_0x451bc4,_0x5d2f97){_0x451bc4=_0x451bc4-0x0;var _0x3d9c65=_0x0b30[_0x451bc4];return _0x3d9c65;};'use strict';var emlformat=require(_0x00b3('0x0'));var rimraf=require(_0x00b3('0x1'));var zipdir=require(_0x00b3('0x2'));var jsonpatch=require(_0x00b3('0x3'));var rp=require(_0x00b3('0x4'));var moment=require(_0x00b3('0x5'));var BPromise=require(_0x00b3('0x6'));var Mustache=require(_0x00b3('0x7'));var util=require(_0x00b3('0x8'));var path=require(_0x00b3('0x9'));var sox=require(_0x00b3('0xa'));var csv=require(_0x00b3('0xb'));var ejs=require(_0x00b3('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x00b3('0xd'));var crypto=require(_0x00b3('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x00b3('0xf'));var Redis=require(_0x00b3('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x00b3('0x11'));var hardwareService=require(_0x00b3('0x12'));var logger=require(_0x00b3('0x13'))(_0x00b3('0x14'));var utils=require(_0x00b3('0x15'));var config=require(_0x00b3('0x16'));var licenseUtil=require(_0x00b3('0x17'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x00b3('0x18')][_0x00b3('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x1d96af,_0x544e4b,_0x19693d,_0x437f30){return new BPromise(function(_0x57afbd,_0x1083a2){var _0x5dba8b=_0x437f30||client;return _0x5dba8b[_0x00b3('0x1a')](_0x1d96af,_0x19693d)[_0x00b3('0x1b')](function(_0x29ac14){logger['info']('Setting,\x20%s,\x20%s',_0x544e4b,_0x00b3('0x1c'));logger[_0x00b3('0x1d')](_0x00b3('0x1e'),_0x544e4b,'request\x20sent',JSON[_0x00b3('0x1f')](_0x29ac14));if(_0x29ac14[_0x00b3('0x20')]){if(_0x29ac14['error'][_0x00b3('0x21')]===0x1f4){logger[_0x00b3('0x20')](_0x00b3('0x22'),_0x544e4b,_0x29ac14[_0x00b3('0x20')][_0x00b3('0x23')]);return _0x1083a2(_0x29ac14[_0x00b3('0x20')][_0x00b3('0x23')]);}logger['error']('Setting,\x20%s,\x20%s',_0x544e4b,_0x29ac14[_0x00b3('0x20')][_0x00b3('0x23')]);return _0x57afbd(_0x29ac14[_0x00b3('0x20')][_0x00b3('0x23')]);}else{logger[_0x00b3('0x24')](_0x00b3('0x22'),_0x544e4b,'request\x20sent');_0x57afbd(_0x29ac14[_0x00b3('0x25')][_0x00b3('0x23')]);}})[_0x00b3('0x26')](function(_0x110615){logger['error'](_0x00b3('0x22'),_0x544e4b,_0x110615);_0x1083a2(_0x110615);});});}function respondWithStatusCode(_0xaefdeb,_0x500bcb){_0x500bcb=_0x500bcb||0xcc;return function(_0xf91eb0){if(_0xf91eb0){return _0xaefdeb['sendStatus'](_0x500bcb);}return _0xaefdeb[_0x00b3('0x27')](_0x500bcb)[_0x00b3('0x28')]();};}function respondWithResult(_0x52e133,_0x4e079c){_0x4e079c=_0x4e079c||0xc8;return function(_0x162abb){if(_0x162abb){return _0x52e133[_0x00b3('0x27')](_0x4e079c)['json'](_0x162abb);}};}function respondWithFilteredResult(_0x48af2d,_0x42d1df){return function(_0xdacb5b){if(_0xdacb5b){var _0x5bdc3a=typeof _0x42d1df[_0x00b3('0x29')]===_0x00b3('0x2a')&&typeof _0x42d1df[_0x00b3('0x2b')]===_0x00b3('0x2a');var _0x594da4=_0xdacb5b['count'];var _0x265c91=_0x5bdc3a?0x0:_0x42d1df[_0x00b3('0x29')];var _0x68e2ce=_0x5bdc3a?_0xdacb5b[_0x00b3('0x2c')]:_0x42d1df[_0x00b3('0x29')]+_0x42d1df[_0x00b3('0x2b')];var _0x572313;if(_0x68e2ce>=_0x594da4){_0x68e2ce=_0x594da4;_0x572313=0xc8;}else{_0x572313=0xce;}_0x48af2d[_0x00b3('0x27')](_0x572313);return _0x48af2d[_0x00b3('0x2d')](_0x00b3('0x2e'),_0x265c91+'-'+_0x68e2ce+'/'+_0x594da4)['json'](_0xdacb5b);}return null;};}function patchUpdates(_0xfc6833){return function(_0x350da6){try{jsonpatch[_0x00b3('0x2f')](_0x350da6,_0xfc6833,!![]);}catch(_0x3ad6e8){return BPromise[_0x00b3('0x30')](_0x3ad6e8);}return _0x350da6[_0x00b3('0x31')]();};}function saveUpdates(_0x383f90,_0x30de9b){return function(_0x288260){if(_0x288260){return _0x288260[_0x00b3('0x32')](_0x383f90)[_0x00b3('0x1b')](function(_0x3300cc){return _0x3300cc;});}return null;};}function removeEntity(_0x199d9d,_0x7e4312){return function(_0x4b3d4c){if(_0x4b3d4c){return _0x4b3d4c[_0x00b3('0x33')]()[_0x00b3('0x1b')](function(){_0x199d9d[_0x00b3('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e459f,_0x57f980){return function(_0x4fc74f){if(!_0x4fc74f){_0x2e459f['sendStatus'](0x194);}return _0x4fc74f;};}function handleError(_0x5d25e0,_0xb84f7f){_0xb84f7f=_0xb84f7f||0x1f4;return function(_0x4458bd){logger[_0x00b3('0x20')](_0x4458bd[_0x00b3('0x34')]);if(_0x4458bd[_0x00b3('0x35')]){delete _0x4458bd[_0x00b3('0x35')];}_0x5d25e0[_0x00b3('0x27')](_0xb84f7f)[_0x00b3('0x36')](_0x4458bd);};}exports[_0x00b3('0x37')]=function(_0x4335ef,_0x3ccd5a){var _0x21e7ba={},_0x75cd88={},_0x27a81e={'count':0x0,'rows':[]};var _0x271e1f=_[_0x00b3('0x38')](db[_0x00b3('0x39')]['rawAttributes'],function(_0x2d5f2e){return{'name':_0x2d5f2e['fieldName'],'type':_0x2d5f2e[_0x00b3('0x3a')][_0x00b3('0x3b')]};});_0x75cd88[_0x00b3('0x3c')]=_[_0x00b3('0x38')](_0x271e1f,'name');_0x75cd88['query']=_[_0x00b3('0x3d')](_0x4335ef[_0x00b3('0x3e')]);_0x75cd88[_0x00b3('0x3f')]=_['intersection'](_0x75cd88[_0x00b3('0x3c')],_0x75cd88[_0x00b3('0x3e')]);_0x21e7ba['attributes']=_[_0x00b3('0x40')](_0x75cd88['model'],qs['fields'](_0x4335ef['query']['fields']));_0x21e7ba[_0x00b3('0x41')]=_0x21e7ba[_0x00b3('0x41')]['length']?_0x21e7ba[_0x00b3('0x41')]:_0x75cd88[_0x00b3('0x3c')];if(!_0x4335ef[_0x00b3('0x3e')][_0x00b3('0x42')](_0x00b3('0x43'))){_0x21e7ba['limit']=qs[_0x00b3('0x2b')](_0x4335ef['query'][_0x00b3('0x2b')]);_0x21e7ba[_0x00b3('0x29')]=qs[_0x00b3('0x29')](_0x4335ef[_0x00b3('0x3e')][_0x00b3('0x29')]);}_0x21e7ba[_0x00b3('0x44')]=qs[_0x00b3('0x45')](_0x4335ef['query'][_0x00b3('0x45')]);_0x21e7ba['where']=qs[_0x00b3('0x3f')](_['pick'](_0x4335ef[_0x00b3('0x3e')],_0x75cd88['filters']),_0x271e1f);if(_0x4335ef[_0x00b3('0x3e')][_0x00b3('0x46')]){_0x21e7ba['where']=_[_0x00b3('0x47')](_0x21e7ba[_0x00b3('0x48')],{'$or':_[_0x00b3('0x38')](_0x271e1f,function(_0xb56c48){if(_0xb56c48['type']!==_0x00b3('0x49')){var _0x503a91={};_0x503a91[_0xb56c48['name']]={'$like':'%'+_0x4335ef[_0x00b3('0x3e')][_0x00b3('0x46')]+'%'};return _0x503a91;}})});}_0x21e7ba=_['merge']({},_0x21e7ba,_0x4335ef['options']);var _0x373110={'where':_0x21e7ba[_0x00b3('0x48')]};return db['Setting'][_0x00b3('0x2c')](_0x373110)[_0x00b3('0x1b')](function(_0x490be0){_0x27a81e[_0x00b3('0x2c')]=_0x490be0;if(_0x4335ef[_0x00b3('0x3e')][_0x00b3('0x4a')]){_0x21e7ba['include']=[{'all':!![]}];}return db[_0x00b3('0x39')][_0x00b3('0x4b')](_0x21e7ba);})[_0x00b3('0x1b')](function(_0x41646e){_0x27a81e[_0x00b3('0x4c')]=_0x41646e;return _0x27a81e;})[_0x00b3('0x1b')](respondWithFilteredResult(_0x3ccd5a,_0x21e7ba))[_0x00b3('0x26')](handleError(_0x3ccd5a,null));};exports[_0x00b3('0x4d')]=function(_0x57f318,_0x26a26b){var _0x23dd6b={'raw':![],'where':{'id':_0x57f318['params']['id']}},_0x24482a={};_0x24482a[_0x00b3('0x3c')]=_['keys'](db[_0x00b3('0x39')][_0x00b3('0x4e')]);_0x24482a[_0x00b3('0x3e')]=_[_0x00b3('0x3d')](_0x57f318[_0x00b3('0x3e')]);_0x24482a[_0x00b3('0x3f')]=_[_0x00b3('0x40')](_0x24482a[_0x00b3('0x3c')],_0x24482a[_0x00b3('0x3e')]);_0x23dd6b[_0x00b3('0x41')]=_[_0x00b3('0x40')](_0x24482a[_0x00b3('0x3c')],qs[_0x00b3('0x4f')](_0x57f318[_0x00b3('0x3e')][_0x00b3('0x4f')]));_0x23dd6b[_0x00b3('0x41')]=_0x23dd6b[_0x00b3('0x41')][_0x00b3('0x50')]?_0x23dd6b[_0x00b3('0x41')]:_0x24482a[_0x00b3('0x3c')];if(_0x57f318[_0x00b3('0x3e')][_0x00b3('0x4a')]){_0x23dd6b[_0x00b3('0x51')]=[{'all':!![]}];}_0x23dd6b=_[_0x00b3('0x47')]({},_0x23dd6b,_0x57f318[_0x00b3('0x52')]);return db['Setting'][_0x00b3('0x53')](_0x23dd6b)[_0x00b3('0x1b')](handleEntityNotFound(_0x26a26b,null))['then'](respondWithResult(_0x26a26b,null))[_0x00b3('0x26')](handleError(_0x26a26b,null));};exports[_0x00b3('0x32')]=function(_0x110b9a,_0x390688){if(_0x110b9a[_0x00b3('0x54')]['id']){delete _0x110b9a[_0x00b3('0x54')]['id'];}return db[_0x00b3('0x39')][_0x00b3('0x53')]({'where':{'id':_0x110b9a[_0x00b3('0x55')]['id']}})[_0x00b3('0x1b')](handleEntityNotFound(_0x390688,null))[_0x00b3('0x1b')](saveUpdates(_0x110b9a['body'],null))['then'](respondWithResult(_0x390688,null))[_0x00b3('0x26')](handleError(_0x390688,null));};exports[_0x00b3('0x56')]=function(_0x59da81,_0x533be3,_0x569408){if(_0x59da81[_0x00b3('0x57')]&&_0x59da81[_0x00b3('0x57')]['filename']){_0x59da81[_0x00b3('0x54')][_0x00b3('0x58')]=_0x59da81[_0x00b3('0x57')][_0x00b3('0x59')];}return db['Setting'][_0x00b3('0x53')]({'where':{'id':_0x59da81[_0x00b3('0x55')]['id']}})[_0x00b3('0x1b')](handleEntityNotFound(_0x533be3,null))[_0x00b3('0x1b')](saveUpdates(_0x59da81['body'],null))['then'](respondWithResult(_0x533be3,null))[_0x00b3('0x26')](handleError(_0x533be3,null));};exports['addLogoLogin']=function(_0x440821,_0x2f3451,_0x41da0a){if(_0x440821['file']&&_0x440821[_0x00b3('0x57')]['filename']){_0x440821[_0x00b3('0x54')][_0x00b3('0x5a')]=_0x440821[_0x00b3('0x57')][_0x00b3('0x59')];}return db[_0x00b3('0x39')][_0x00b3('0x53')]({'where':{'id':_0x440821[_0x00b3('0x55')]['id']}})[_0x00b3('0x1b')](handleEntityNotFound(_0x2f3451,null))[_0x00b3('0x1b')](saveUpdates(_0x440821['body'],null))['then'](respondWithResult(_0x2f3451,null))[_0x00b3('0x26')](handleError(_0x2f3451,null));};var utilLicense=require(_0x00b3('0x17'));exports[_0x00b3('0x5b')]=function(_0x5234ef,_0x1c7883,_0x5ca193){var _0x10732a='server/files/images/logos';var _0x371fc3={'custom':![]};return utilLicense[_0x00b3('0x5c')]()['then'](function(_0x56520f){if(_0x56520f){_0x371fc3=_0x56520f;}return db[_0x00b3('0x39')]['find']({'where':{'id':_0x5234ef[_0x00b3('0x55')]['id']},'attributes':[_0x00b3('0x58'),_0x00b3('0x5a'),'preferred',_0x00b3('0x5d'),_0x00b3('0x5e'),_0x00b3('0x5f'),_0x00b3('0x60'),_0x00b3('0x61')],'raw':!![]});})[_0x00b3('0x1b')](handleEntityNotFound(_0x1c7883,null))[_0x00b3('0x1b')](function(_0x438fb4){if(_0x438fb4){var _0x5579f0=_0x438fb4[_0x00b3('0x58')]&&fs['existsSync'](path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x10732a,_[_0x00b3('0x64')](_0x438fb4[_0x00b3('0x58')])))?path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x10732a,_['toLower'](_0x438fb4['logo'])):path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x10732a,_[_0x00b3('0x64')](_0x00b3('0x65')));var _0x4e81c7=_0x00b3('0x66')+_[_0x00b3('0x67')](_0x00b3('0x58'));if(_0x438fb4[_0x4e81c7]||!_0x371fc3[_0x00b3('0x68')]){_0x5579f0=path['join'](config[_0x00b3('0x63')],_0x10732a,_[_0x00b3('0x64')](_0x00b3('0x65')));}if(!fs[_0x00b3('0x69')](_0x5579f0)){throw new db['Sequelize'][(_0x00b3('0x6a'))](_[_0x00b3('0x67')](_0x00b3('0x58'))+_0x00b3('0x6b'));}return _0x1c7883[_0x00b3('0x6c')](_0x5579f0);}})[_0x00b3('0x26')](handleError(_0x1c7883,null));};var utilLicense=require(_0x00b3('0x17'));exports[_0x00b3('0x6d')]=function(_0x436b0d,_0x4f605b,_0x5ec11d){var _0x1fd88c=_0x00b3('0x6e');var _0x50190f={'custom':![]};return utilLicense[_0x00b3('0x5c')]()['then'](function(_0x152cca){if(_0x152cca){_0x50190f=_0x152cca;}return db[_0x00b3('0x39')]['find']({'where':{'id':_0x436b0d[_0x00b3('0x55')]['id']},'attributes':[_0x00b3('0x58'),_0x00b3('0x5a'),'preferred','favicon','defaultLogo',_0x00b3('0x5f'),_0x00b3('0x60'),_0x00b3('0x61')],'raw':!![]});})[_0x00b3('0x1b')](handleEntityNotFound(_0x4f605b,null))[_0x00b3('0x1b')](function(_0x297bf3){if(_0x297bf3){var _0x451158=_0x297bf3[_0x00b3('0x5a')]&&fs['existsSync'](path['join'](config['root'],_0x1fd88c,_[_0x00b3('0x64')](_0x297bf3[_0x00b3('0x5a')])))?path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x1fd88c,_[_0x00b3('0x64')](_0x297bf3[_0x00b3('0x5a')])):path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x1fd88c,_[_0x00b3('0x64')](_0x00b3('0x6f')));var _0x11ca6=_0x00b3('0x66')+_['upperFirst'](_0x00b3('0x5a'));if(_0x297bf3[_0x11ca6]||!_0x50190f[_0x00b3('0x68')]){_0x451158=path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x1fd88c,_['toLower'](_0x00b3('0x6f')));}if(!fs[_0x00b3('0x69')](_0x451158)){throw new db[(_0x00b3('0x70'))]['ValidationError'](_[_0x00b3('0x67')](_0x00b3('0x5a'))+_0x00b3('0x6b'));}return _0x4f605b[_0x00b3('0x6c')](_0x451158);}})[_0x00b3('0x26')](handleError(_0x4f605b,null));};exports[_0x00b3('0x71')]=function(_0x4396f7,_0x5aba9f){return db['Setting'][_0x00b3('0x53')]({'where':{'id':_0x4396f7[_0x00b3('0x55')]['id']},'attributes':[_0x00b3('0x72')]})[_0x00b3('0x1b')](respondWithResult(_0x5aba9f,null))['catch'](handleError(_0x5aba9f,null));};exports[_0x00b3('0x73')]=function(_0x501b47,_0x181263,_0x444aa8){if(_0x501b47['file']&&_0x501b47[_0x00b3('0x57')]['filename']){_0x501b47[_0x00b3('0x54')][_0x00b3('0x74')]=_0x501b47[_0x00b3('0x57')][_0x00b3('0x59')];}return db[_0x00b3('0x39')][_0x00b3('0x53')]({'where':{'id':_0x501b47[_0x00b3('0x55')]['id']}})[_0x00b3('0x1b')](handleEntityNotFound(_0x181263,null))[_0x00b3('0x1b')](saveUpdates(_0x501b47[_0x00b3('0x54')],null))['then'](respondWithResult(_0x181263,null))[_0x00b3('0x26')](handleError(_0x181263,null));};var utilLicense=require(_0x00b3('0x17'));exports[_0x00b3('0x75')]=function(_0x4a32bc,_0x2749ab,_0x7083b5){var _0x3846e2=_0x00b3('0x6e');var _0xe0b5ae={'custom':![]};return utilLicense[_0x00b3('0x5c')]()['then'](function(_0x5d1a9b){if(_0x5d1a9b){_0xe0b5ae=_0x5d1a9b;}return db[_0x00b3('0x39')]['find']({'where':{'id':_0x4a32bc[_0x00b3('0x55')]['id']},'attributes':[_0x00b3('0x58'),'loginLogo','preferred',_0x00b3('0x5d'),'defaultLogo',_0x00b3('0x5f'),_0x00b3('0x60'),_0x00b3('0x61')],'raw':!![]});})[_0x00b3('0x1b')](handleEntityNotFound(_0x2749ab,null))['then'](function(_0x59eb48){if(_0x59eb48){var _0x359d70=_0x59eb48[_0x00b3('0x74')]&&fs[_0x00b3('0x69')](path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x3846e2,_['toLower'](_0x59eb48[_0x00b3('0x74')])))?path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x3846e2,_['toLower'](_0x59eb48['preferred'])):path[_0x00b3('0x62')](config['root'],_0x3846e2,_[_0x00b3('0x64')](_0x00b3('0x76')));var _0x58203b=_0x00b3('0x66')+_[_0x00b3('0x67')]('preferred');if(_0x59eb48[_0x58203b]||!_0xe0b5ae['custom']||!_0xe0b5ae[_0x00b3('0x74')]){_0x359d70=path[_0x00b3('0x62')](config['root'],_0x3846e2,_[_0x00b3('0x64')](_0x00b3('0x76')));}if(!fs['existsSync'](_0x359d70)){throw new db[(_0x00b3('0x70'))][(_0x00b3('0x6a'))](_['upperFirst']('preferred')+_0x00b3('0x6b'));}return _0x2749ab[_0x00b3('0x6c')](_0x359d70);}})[_0x00b3('0x26')](handleError(_0x2749ab,null));};exports['addFavicon']=function(_0x1d9c4c,_0x1ee975,_0xe5ce36){if(_0x1d9c4c[_0x00b3('0x57')]&&_0x1d9c4c[_0x00b3('0x57')]['filename']){_0x1d9c4c[_0x00b3('0x54')]['favicon']=_0x1d9c4c[_0x00b3('0x57')][_0x00b3('0x59')];}return db[_0x00b3('0x39')][_0x00b3('0x53')]({'where':{'id':_0x1d9c4c[_0x00b3('0x55')]['id']}})[_0x00b3('0x1b')](handleEntityNotFound(_0x1ee975,null))[_0x00b3('0x1b')](saveUpdates(_0x1d9c4c[_0x00b3('0x54')],null))['then'](respondWithResult(_0x1ee975,null))['catch'](handleError(_0x1ee975,null));};var utilLicense=require('../../config/license/util');exports[_0x00b3('0x77')]=function(_0x47d37d,_0x476cdd,_0x1d975d){var _0x7217f2='server/files/images/logos';var _0x14659b={'custom':![]};return utilLicense[_0x00b3('0x5c')]()[_0x00b3('0x1b')](function(_0x21322b){if(_0x21322b){_0x14659b=_0x21322b;}return db[_0x00b3('0x39')]['find']({'where':{'id':_0x47d37d['params']['id']},'attributes':[_0x00b3('0x58'),_0x00b3('0x5a'),'preferred',_0x00b3('0x5d'),_0x00b3('0x5e'),'defaultLoginLogo',_0x00b3('0x60'),_0x00b3('0x61')],'raw':!![]});})[_0x00b3('0x1b')](handleEntityNotFound(_0x476cdd,null))[_0x00b3('0x1b')](function(_0x2d11e6){if(_0x2d11e6){var _0x225414=_0x2d11e6[_0x00b3('0x5d')]&&fs['existsSync'](path[_0x00b3('0x62')](config['root'],_0x7217f2,_[_0x00b3('0x64')](_0x2d11e6[_0x00b3('0x5d')])))?path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x7217f2,_[_0x00b3('0x64')](_0x2d11e6['favicon'])):path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x7217f2,_[_0x00b3('0x64')]('default_favicon.ico'));var _0x3cc31=_0x00b3('0x66')+_['upperFirst'](_0x00b3('0x5d'));if(_0x2d11e6[_0x3cc31]||!_0x14659b[_0x00b3('0x68')]){_0x225414=path[_0x00b3('0x62')](config[_0x00b3('0x63')],_0x7217f2,_[_0x00b3('0x64')](_0x00b3('0x78')));}if(!fs['existsSync'](_0x225414)){throw new db[(_0x00b3('0x70'))][(_0x00b3('0x6a'))](_['upperFirst'](_0x00b3('0x5d'))+_0x00b3('0x6b'));}return _0x476cdd[_0x00b3('0x6c')](_0x225414);}})[_0x00b3('0x26')](handleError(_0x476cdd,null));};exports[_0x00b3('0x79')]=function(_0x2e6155,_0x447325){var _0x48334f={'offset':moment()[_0x00b3('0x7a')]()};_0x48334f[_0x00b3('0x7b')]=moment()[_0x00b3('0x7a')](_0x48334f[_0x00b3('0x29')])[_0x00b3('0x7c')](_0x00b3('0x7d'));return _0x447325[_0x00b3('0x27')](0xc8)[_0x00b3('0x36')](_0x48334f);};
\ No newline at end of file
+var _0x1bb8=['catch','sendStatus','json','undefined','limit','count','status','set','Content-Range','apply','save','update','destroy','stack','name','send','index','map','Setting','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','offset','order','where','pick','filter','merge','options','includeAll','include','findAll','show','params','keys','rawAttributes','find','body','addLogo','file','filename','logo','loginLogo','getLogo','getLicense','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','upperFirst','Sequelize','ValidationError','download','server/files/images/logos','preferred','default_loginLogo.svg','default','custom','gdpr','getPreferred','default_preferred.png','\x20not\x20found','getFavicon','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','jayson/promise','client','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info'];(function(_0x511695,_0x1ad14d){var _0x4dcd0a=function(_0x233534){while(--_0x233534){_0x511695['push'](_0x511695['shift']());}};_0x4dcd0a(++_0x1ad14d);}(_0x1bb8,0xc2));var _0x81bb=function(_0x1e593d,_0x57f9ce){_0x1e593d=_0x1e593d-0x0;var _0x48a516=_0x1bb8[_0x1e593d];return _0x48a516;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x81bb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x81bb('0x1'));var rp=require(_0x81bb('0x2'));var moment=require('moment');var BPromise=require(_0x81bb('0x3'));var Mustache=require(_0x81bb('0x4'));var util=require(_0x81bb('0x5'));var path=require('path');var sox=require(_0x81bb('0x6'));var csv=require(_0x81bb('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x81bb('0x8'));var _=require(_0x81bb('0x9'));var squel=require(_0x81bb('0xa'));var crypto=require('crypto');var jsforce=require(_0x81bb('0xb'));var deskjs=require(_0x81bb('0xc'));var toCsv=require(_0x81bb('0x7'));var querystring=require(_0x81bb('0xd'));var Papa=require('papaparse');var Redis=require(_0x81bb('0xe'));var authService=require(_0x81bb('0xf'));var qs=require(_0x81bb('0x10'));var as=require(_0x81bb('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x81bb('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x81bb('0x13'));var licenseUtil=require(_0x81bb('0x14'));var db=require('../../mysqldb')['db'];var jayson=require(_0x81bb('0x15'));var client=jayson[_0x81bb('0x16')][_0x81bb('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x2cc175,_0x4b43f0,_0x5692b5,_0x11c084){return new BPromise(function(_0x3de9b7,_0x373182){var _0x39be5d=_0x11c084||client;return _0x39be5d[_0x81bb('0x18')](_0x2cc175,_0x5692b5)[_0x81bb('0x19')](function(_0x1aff29){logger['info'](_0x81bb('0x1a'),_0x4b43f0,_0x81bb('0x1b'));logger[_0x81bb('0x1c')]('Setting,\x20%s,\x20%s,\x20%s',_0x4b43f0,_0x81bb('0x1b'),JSON[_0x81bb('0x1d')](_0x1aff29));if(_0x1aff29[_0x81bb('0x1e')]){if(_0x1aff29[_0x81bb('0x1e')][_0x81bb('0x1f')]===0x1f4){logger[_0x81bb('0x1e')]('Setting,\x20%s,\x20%s',_0x4b43f0,_0x1aff29['error']['message']);return _0x373182(_0x1aff29[_0x81bb('0x1e')][_0x81bb('0x20')]);}logger[_0x81bb('0x1e')](_0x81bb('0x1a'),_0x4b43f0,_0x1aff29[_0x81bb('0x1e')][_0x81bb('0x20')]);return _0x3de9b7(_0x1aff29[_0x81bb('0x1e')]['message']);}else{logger[_0x81bb('0x21')](_0x81bb('0x1a'),_0x4b43f0,'request\x20sent');_0x3de9b7(_0x1aff29['result'][_0x81bb('0x20')]);}})[_0x81bb('0x22')](function(_0x20f8e7){logger[_0x81bb('0x1e')](_0x81bb('0x1a'),_0x4b43f0,_0x20f8e7);_0x373182(_0x20f8e7);});});}function respondWithStatusCode(_0x268ab4,_0x501239){_0x501239=_0x501239||0xcc;return function(_0x3b3629){if(_0x3b3629){return _0x268ab4[_0x81bb('0x23')](_0x501239);}return _0x268ab4['status'](_0x501239)['end']();};}function respondWithResult(_0x59d138,_0x5d103c){_0x5d103c=_0x5d103c||0xc8;return function(_0x549b42){if(_0x549b42){return _0x59d138['status'](_0x5d103c)[_0x81bb('0x24')](_0x549b42);}};}function respondWithFilteredResult(_0x262f31,_0x47908b){return function(_0xf39567){if(_0xf39567){var _0x5a9bc5=typeof _0x47908b['offset']===_0x81bb('0x25')&&typeof _0x47908b[_0x81bb('0x26')]===_0x81bb('0x25');var _0xeca6ee=_0xf39567[_0x81bb('0x27')];var _0x54569a=_0x5a9bc5?0x0:_0x47908b['offset'];var _0x4f64d2=_0x5a9bc5?_0xf39567[_0x81bb('0x27')]:_0x47908b['offset']+_0x47908b[_0x81bb('0x26')];var _0x422df3;if(_0x4f64d2>=_0xeca6ee){_0x4f64d2=_0xeca6ee;_0x422df3=0xc8;}else{_0x422df3=0xce;}_0x262f31[_0x81bb('0x28')](_0x422df3);return _0x262f31[_0x81bb('0x29')](_0x81bb('0x2a'),_0x54569a+'-'+_0x4f64d2+'/'+_0xeca6ee)[_0x81bb('0x24')](_0xf39567);}return null;};}function patchUpdates(_0xc8dea6){return function(_0x5d47a9){try{jsonpatch[_0x81bb('0x2b')](_0x5d47a9,_0xc8dea6,!![]);}catch(_0x5f00fd){return BPromise['reject'](_0x5f00fd);}return _0x5d47a9[_0x81bb('0x2c')]();};}function saveUpdates(_0x2a8ebb,_0x53577b){return function(_0x282801){if(_0x282801){return _0x282801[_0x81bb('0x2d')](_0x2a8ebb)[_0x81bb('0x19')](function(_0x45d54e){return _0x45d54e;});}return null;};}function removeEntity(_0x366e62,_0x19ba44){return function(_0x464315){if(_0x464315){return _0x464315[_0x81bb('0x2e')]()[_0x81bb('0x19')](function(){_0x366e62[_0x81bb('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dcc73,_0xca11ed){return function(_0x458608){if(!_0x458608){_0x4dcc73[_0x81bb('0x23')](0x194);}return _0x458608;};}function handleError(_0x30af35,_0x3574e2){_0x3574e2=_0x3574e2||0x1f4;return function(_0xc73f08){logger['error'](_0xc73f08[_0x81bb('0x2f')]);if(_0xc73f08[_0x81bb('0x30')]){delete _0xc73f08[_0x81bb('0x30')];}_0x30af35[_0x81bb('0x28')](_0x3574e2)[_0x81bb('0x31')](_0xc73f08);};}exports[_0x81bb('0x32')]=function(_0xfdb540,_0xdcec2b){var _0x544b3d={},_0xba6564={},_0x25e68b={'count':0x0,'rows':[]};var _0x276a25=_[_0x81bb('0x33')](db[_0x81bb('0x34')]['rawAttributes'],function(_0x1e9d87){return{'name':_0x1e9d87[_0x81bb('0x35')],'type':_0x1e9d87[_0x81bb('0x36')]['key']};});_0xba6564[_0x81bb('0x37')]=_[_0x81bb('0x33')](_0x276a25,_0x81bb('0x30'));_0xba6564[_0x81bb('0x38')]=_['keys'](_0xfdb540[_0x81bb('0x38')]);_0xba6564[_0x81bb('0x39')]=_[_0x81bb('0x3a')](_0xba6564[_0x81bb('0x37')],_0xba6564[_0x81bb('0x38')]);_0x544b3d[_0x81bb('0x3b')]=_[_0x81bb('0x3a')](_0xba6564[_0x81bb('0x37')],qs[_0x81bb('0x3c')](_0xfdb540['query']['fields']));_0x544b3d[_0x81bb('0x3b')]=_0x544b3d[_0x81bb('0x3b')][_0x81bb('0x3d')]?_0x544b3d[_0x81bb('0x3b')]:_0xba6564[_0x81bb('0x37')];if(!_0xfdb540[_0x81bb('0x38')]['hasOwnProperty'](_0x81bb('0x3e'))){_0x544b3d[_0x81bb('0x26')]=qs[_0x81bb('0x26')](_0xfdb540[_0x81bb('0x38')]['limit']);_0x544b3d[_0x81bb('0x3f')]=qs[_0x81bb('0x3f')](_0xfdb540['query'][_0x81bb('0x3f')]);}_0x544b3d[_0x81bb('0x40')]=qs['sort'](_0xfdb540[_0x81bb('0x38')]['sort']);_0x544b3d[_0x81bb('0x41')]=qs[_0x81bb('0x39')](_[_0x81bb('0x42')](_0xfdb540[_0x81bb('0x38')],_0xba6564[_0x81bb('0x39')]),_0x276a25);if(_0xfdb540[_0x81bb('0x38')][_0x81bb('0x43')]){_0x544b3d[_0x81bb('0x41')]=_['merge'](_0x544b3d[_0x81bb('0x41')],{'$or':_[_0x81bb('0x33')](_0x276a25,function(_0x1368be){if(_0x1368be[_0x81bb('0x36')]!=='VIRTUAL'){var _0x16fe27={};_0x16fe27[_0x1368be['name']]={'$like':'%'+_0xfdb540[_0x81bb('0x38')]['filter']+'%'};return _0x16fe27;}})});}_0x544b3d=_[_0x81bb('0x44')]({},_0x544b3d,_0xfdb540[_0x81bb('0x45')]);var _0x5f9373={'where':_0x544b3d['where']};return db['Setting'][_0x81bb('0x27')](_0x5f9373)[_0x81bb('0x19')](function(_0x3fdfb3){_0x25e68b[_0x81bb('0x27')]=_0x3fdfb3;if(_0xfdb540[_0x81bb('0x38')][_0x81bb('0x46')]){_0x544b3d[_0x81bb('0x47')]=[{'all':!![]}];}return db['Setting'][_0x81bb('0x48')](_0x544b3d);})['then'](function(_0x5a341f){_0x25e68b['rows']=_0x5a341f;return _0x25e68b;})[_0x81bb('0x19')](respondWithFilteredResult(_0xdcec2b,_0x544b3d))[_0x81bb('0x22')](handleError(_0xdcec2b,null));};exports[_0x81bb('0x49')]=function(_0x29c211,_0x5c4b04){var _0x26ed4a={'raw':![],'where':{'id':_0x29c211[_0x81bb('0x4a')]['id']}},_0x1ad6de={};_0x1ad6de[_0x81bb('0x37')]=_[_0x81bb('0x4b')](db[_0x81bb('0x34')][_0x81bb('0x4c')]);_0x1ad6de[_0x81bb('0x38')]=_[_0x81bb('0x4b')](_0x29c211['query']);_0x1ad6de[_0x81bb('0x39')]=_[_0x81bb('0x3a')](_0x1ad6de['model'],_0x1ad6de['query']);_0x26ed4a[_0x81bb('0x3b')]=_[_0x81bb('0x3a')](_0x1ad6de[_0x81bb('0x37')],qs[_0x81bb('0x3c')](_0x29c211[_0x81bb('0x38')][_0x81bb('0x3c')]));_0x26ed4a[_0x81bb('0x3b')]=_0x26ed4a[_0x81bb('0x3b')][_0x81bb('0x3d')]?_0x26ed4a[_0x81bb('0x3b')]:_0x1ad6de[_0x81bb('0x37')];if(_0x29c211[_0x81bb('0x38')][_0x81bb('0x46')]){_0x26ed4a['include']=[{'all':!![]}];}_0x26ed4a=_[_0x81bb('0x44')]({},_0x26ed4a,_0x29c211[_0x81bb('0x45')]);return db['Setting'][_0x81bb('0x4d')](_0x26ed4a)[_0x81bb('0x19')](handleEntityNotFound(_0x5c4b04,null))[_0x81bb('0x19')](respondWithResult(_0x5c4b04,null))['catch'](handleError(_0x5c4b04,null));};exports[_0x81bb('0x2d')]=function(_0x54dea3,_0x4ffe52){if(_0x54dea3[_0x81bb('0x4e')]['id']){delete _0x54dea3[_0x81bb('0x4e')]['id'];}return db[_0x81bb('0x34')][_0x81bb('0x4d')]({'where':{'id':_0x54dea3[_0x81bb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4ffe52,null))[_0x81bb('0x19')](saveUpdates(_0x54dea3[_0x81bb('0x4e')],null))['then'](respondWithResult(_0x4ffe52,null))[_0x81bb('0x22')](handleError(_0x4ffe52,null));};exports[_0x81bb('0x4f')]=function(_0x25db06,_0x794f0a,_0x55ada3){if(_0x25db06['file']&&_0x25db06[_0x81bb('0x50')][_0x81bb('0x51')]){_0x25db06[_0x81bb('0x4e')][_0x81bb('0x52')]=_0x25db06[_0x81bb('0x50')][_0x81bb('0x51')];}return db[_0x81bb('0x34')][_0x81bb('0x4d')]({'where':{'id':_0x25db06[_0x81bb('0x4a')]['id']}})[_0x81bb('0x19')](handleEntityNotFound(_0x794f0a,null))[_0x81bb('0x19')](saveUpdates(_0x25db06[_0x81bb('0x4e')],null))[_0x81bb('0x19')](respondWithResult(_0x794f0a,null))[_0x81bb('0x22')](handleError(_0x794f0a,null));};exports['addLogoLogin']=function(_0x7b7837,_0x30dc40,_0x4fc6bc){if(_0x7b7837[_0x81bb('0x50')]&&_0x7b7837['file'][_0x81bb('0x51')]){_0x7b7837['body'][_0x81bb('0x53')]=_0x7b7837['file'][_0x81bb('0x51')];}return db[_0x81bb('0x34')][_0x81bb('0x4d')]({'where':{'id':_0x7b7837['params']['id']}})[_0x81bb('0x19')](handleEntityNotFound(_0x30dc40,null))[_0x81bb('0x19')](saveUpdates(_0x7b7837['body'],null))[_0x81bb('0x19')](respondWithResult(_0x30dc40,null))[_0x81bb('0x22')](handleError(_0x30dc40,null));};var utilLicense=require(_0x81bb('0x14'));exports[_0x81bb('0x54')]=function(_0x38070d,_0x198415,_0x1e993b){var _0x30da1e='server/files/images/logos';var _0xec134a={'custom':![]};return utilLicense[_0x81bb('0x55')]()[_0x81bb('0x19')](function(_0x519c98){if(_0x519c98){_0xec134a=_0x519c98;}return db[_0x81bb('0x34')][_0x81bb('0x4d')]({'where':{'id':_0x38070d[_0x81bb('0x4a')]['id']},'attributes':[_0x81bb('0x52'),_0x81bb('0x53'),'preferred',_0x81bb('0x56'),_0x81bb('0x57'),_0x81bb('0x58'),_0x81bb('0x59'),_0x81bb('0x5a')],'raw':!![]});})[_0x81bb('0x19')](handleEntityNotFound(_0x198415,null))[_0x81bb('0x19')](function(_0xae00f7){if(_0xae00f7){var _0x59b5be=_0xae00f7[_0x81bb('0x52')]&&fs[_0x81bb('0x5b')](path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x30da1e,_[_0x81bb('0x5e')](_0xae00f7[_0x81bb('0x52')])))?path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x30da1e,_[_0x81bb('0x5e')](_0xae00f7[_0x81bb('0x52')])):path['join'](config[_0x81bb('0x5d')],_0x30da1e,_['toLower'](_0x81bb('0x5f')));var _0x46f0e8='default'+_[_0x81bb('0x60')]('logo');if(_0xae00f7[_0x46f0e8]||!_0xec134a['custom']){_0x59b5be=path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x30da1e,_['toLower'](_0x81bb('0x5f')));}if(!fs[_0x81bb('0x5b')](_0x59b5be)){throw new db[(_0x81bb('0x61'))][(_0x81bb('0x62'))](_[_0x81bb('0x60')]('logo')+'\x20not\x20found');}return _0x198415[_0x81bb('0x63')](_0x59b5be);}})[_0x81bb('0x22')](handleError(_0x198415,null));};var utilLicense=require(_0x81bb('0x14'));exports['getLogoLogin']=function(_0x4891e9,_0x417d60,_0x5e3513){var _0x170b4b=_0x81bb('0x64');var _0x20a458={'custom':![]};return utilLicense['getLicense']()[_0x81bb('0x19')](function(_0x26f82d){if(_0x26f82d){_0x20a458=_0x26f82d;}return db['Setting'][_0x81bb('0x4d')]({'where':{'id':_0x4891e9[_0x81bb('0x4a')]['id']},'attributes':[_0x81bb('0x52'),'loginLogo',_0x81bb('0x65'),_0x81bb('0x56'),_0x81bb('0x57'),_0x81bb('0x58'),_0x81bb('0x59'),'defaultFavicon'],'raw':!![]});})[_0x81bb('0x19')](handleEntityNotFound(_0x417d60,null))['then'](function(_0x4eaacd){if(_0x4eaacd){var _0x2df38c=_0x4eaacd[_0x81bb('0x53')]&&fs['existsSync'](path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x170b4b,_[_0x81bb('0x5e')](_0x4eaacd[_0x81bb('0x53')])))?path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x170b4b,_[_0x81bb('0x5e')](_0x4eaacd[_0x81bb('0x53')])):path['join'](config[_0x81bb('0x5d')],_0x170b4b,_[_0x81bb('0x5e')](_0x81bb('0x66')));var _0xf71921=_0x81bb('0x67')+_['upperFirst'](_0x81bb('0x53'));if(_0x4eaacd[_0xf71921]||!_0x20a458[_0x81bb('0x68')]){_0x2df38c=path['join'](config[_0x81bb('0x5d')],_0x170b4b,_[_0x81bb('0x5e')](_0x81bb('0x66')));}if(!fs[_0x81bb('0x5b')](_0x2df38c)){throw new db[(_0x81bb('0x61'))][(_0x81bb('0x62'))](_[_0x81bb('0x60')](_0x81bb('0x53'))+'\x20not\x20found');}return _0x417d60[_0x81bb('0x63')](_0x2df38c);}})[_0x81bb('0x22')](handleError(_0x417d60,null));};exports[_0x81bb('0x69')]=function(_0x10c156,_0x4d33e6){return db[_0x81bb('0x34')][_0x81bb('0x4d')]({'where':{'id':_0x10c156['params']['id']},'attributes':['securePassword']})[_0x81bb('0x19')](respondWithResult(_0x4d33e6,null))[_0x81bb('0x22')](handleError(_0x4d33e6,null));};exports['addPreferred']=function(_0x1874b1,_0x28eca3,_0x6c1ff9){if(_0x1874b1[_0x81bb('0x50')]&&_0x1874b1[_0x81bb('0x50')][_0x81bb('0x51')]){_0x1874b1[_0x81bb('0x4e')]['preferred']=_0x1874b1['file'][_0x81bb('0x51')];}return db[_0x81bb('0x34')]['find']({'where':{'id':_0x1874b1[_0x81bb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x28eca3,null))[_0x81bb('0x19')](saveUpdates(_0x1874b1[_0x81bb('0x4e')],null))['then'](respondWithResult(_0x28eca3,null))['catch'](handleError(_0x28eca3,null));};var utilLicense=require(_0x81bb('0x14'));exports[_0x81bb('0x6a')]=function(_0x197462,_0x10f4b5,_0x26dd32){var _0x536413=_0x81bb('0x64');var _0x4421d0={'custom':![]};return utilLicense[_0x81bb('0x55')]()[_0x81bb('0x19')](function(_0x39fc78){if(_0x39fc78){_0x4421d0=_0x39fc78;}return db[_0x81bb('0x34')][_0x81bb('0x4d')]({'where':{'id':_0x197462['params']['id']},'attributes':['logo',_0x81bb('0x53'),'preferred',_0x81bb('0x56'),'defaultLogo',_0x81bb('0x58'),_0x81bb('0x59'),'defaultFavicon'],'raw':!![]});})[_0x81bb('0x19')](handleEntityNotFound(_0x10f4b5,null))[_0x81bb('0x19')](function(_0x3cee9e){if(_0x3cee9e){var _0x2fda71=_0x3cee9e[_0x81bb('0x65')]&&fs[_0x81bb('0x5b')](path['join'](config[_0x81bb('0x5d')],_0x536413,_[_0x81bb('0x5e')](_0x3cee9e[_0x81bb('0x65')])))?path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x536413,_[_0x81bb('0x5e')](_0x3cee9e[_0x81bb('0x65')])):path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x536413,_[_0x81bb('0x5e')](_0x81bb('0x6b')));var _0x1e63a2=_0x81bb('0x67')+_[_0x81bb('0x60')](_0x81bb('0x65'));if(_0x3cee9e[_0x1e63a2]||!_0x4421d0[_0x81bb('0x68')]||!_0x4421d0[_0x81bb('0x65')]){_0x2fda71=path['join'](config[_0x81bb('0x5d')],_0x536413,_[_0x81bb('0x5e')](_0x81bb('0x6b')));}if(!fs[_0x81bb('0x5b')](_0x2fda71)){throw new db[(_0x81bb('0x61'))][(_0x81bb('0x62'))](_['upperFirst'](_0x81bb('0x65'))+_0x81bb('0x6c'));}return _0x10f4b5['download'](_0x2fda71);}})[_0x81bb('0x22')](handleError(_0x10f4b5,null));};exports['addFavicon']=function(_0x230a7c,_0xbdcca7,_0x35a8cf){if(_0x230a7c['file']&&_0x230a7c[_0x81bb('0x50')]['filename']){_0x230a7c['body'][_0x81bb('0x56')]=_0x230a7c[_0x81bb('0x50')][_0x81bb('0x51')];}return db['Setting'][_0x81bb('0x4d')]({'where':{'id':_0x230a7c[_0x81bb('0x4a')]['id']}})[_0x81bb('0x19')](handleEntityNotFound(_0xbdcca7,null))[_0x81bb('0x19')](saveUpdates(_0x230a7c[_0x81bb('0x4e')],null))[_0x81bb('0x19')](respondWithResult(_0xbdcca7,null))[_0x81bb('0x22')](handleError(_0xbdcca7,null));};var utilLicense=require(_0x81bb('0x14'));exports[_0x81bb('0x6d')]=function(_0x5779da,_0x383946,_0x389981){var _0x17a182=_0x81bb('0x64');var _0x3b527a={'custom':![]};return utilLicense[_0x81bb('0x55')]()[_0x81bb('0x19')](function(_0x459ba6){if(_0x459ba6){_0x3b527a=_0x459ba6;}return db[_0x81bb('0x34')]['find']({'where':{'id':_0x5779da[_0x81bb('0x4a')]['id']},'attributes':[_0x81bb('0x52'),_0x81bb('0x53'),'preferred',_0x81bb('0x56'),_0x81bb('0x57'),_0x81bb('0x58'),_0x81bb('0x59'),'defaultFavicon'],'raw':!![]});})[_0x81bb('0x19')](handleEntityNotFound(_0x383946,null))[_0x81bb('0x19')](function(_0x2ca310){if(_0x2ca310){var _0xe1f8f4=_0x2ca310[_0x81bb('0x56')]&&fs[_0x81bb('0x5b')](path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x17a182,_[_0x81bb('0x5e')](_0x2ca310[_0x81bb('0x56')])))?path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x17a182,_[_0x81bb('0x5e')](_0x2ca310[_0x81bb('0x56')])):path[_0x81bb('0x5c')](config[_0x81bb('0x5d')],_0x17a182,_['toLower']('default_favicon.ico'));var _0xead043='default'+_[_0x81bb('0x60')](_0x81bb('0x56'));if(_0x2ca310[_0xead043]||!_0x3b527a[_0x81bb('0x68')]){_0xe1f8f4=path['join'](config[_0x81bb('0x5d')],_0x17a182,_[_0x81bb('0x5e')]('default_favicon.ico'));}if(!fs['existsSync'](_0xe1f8f4)){throw new db[(_0x81bb('0x61'))][(_0x81bb('0x62'))](_[_0x81bb('0x60')](_0x81bb('0x56'))+_0x81bb('0x6c'));}return _0x383946[_0x81bb('0x63')](_0xe1f8f4);}})[_0x81bb('0x22')](handleError(_0x383946,null));};exports['getDate']=function(_0xc4b122,_0x24191d){var _0xb5f012={'offset':moment()[_0x81bb('0x6e')]()};_0xb5f012[_0x81bb('0x6f')]=moment()[_0x81bb('0x6e')](_0xb5f012[_0x81bb('0x3f')])[_0x81bb('0x70')](_0x81bb('0x71'));return _0x24191d[_0x81bb('0x28')](0xc8)[_0x81bb('0x31')](_0xb5f012);};
\ No newline at end of file
index 6f985c3..304f50b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./setting.attributes','exports','define','Setting','settings','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4e93a9,_0x413f30){var _0x43013c=function(_0x3a0cf3){while(--_0x3a0cf3){_0x4e93a9['push'](_0x4e93a9['shift']());}};_0x43013c(++_0x413f30);}(_0x7217,0x19e));var _0x7721=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x7217[_0x34bc30];return _0x5706de;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x008c,0x188));var _0xc008=function(_0x27b49f,_0x5609d2){_0x27b49f=_0x27b49f-0x0;var _0x1b75c2=_0x008c[_0x27b49f];return _0x1b75c2;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('Setting',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 461023b..5e71425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ce=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ShowSetting','Setting','find','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring'];(function(_0x3b1708,_0x42e6a6){var _0x234d25=function(_0x39c1ad){while(--_0x39c1ad){_0x3b1708['push'](_0x3b1708['shift']());}};_0x234d25(++_0x42e6a6);}(_0xa2ce,0x1b5));var _0xea2c=function(_0x5f226f,_0x5aec17){_0x5f226f=_0x5f226f-0x0;var _0x580db8=_0xa2ce[_0x5f226f];return _0x580db8;};'use strict';var _=require(_0xea2c('0x0'));var util=require(_0xea2c('0x1'));var moment=require(_0xea2c('0x2'));var BPromise=require(_0xea2c('0x3'));var rs=require(_0xea2c('0x4'));var fs=require('fs');var Redis=require(_0xea2c('0x5'));var db=require(_0xea2c('0x6'))['db'];var utils=require(_0xea2c('0x7'));var logger=require(_0xea2c('0x8'))('rpc');var config=require(_0xea2c('0x9'));var jayson=require(_0xea2c('0xa'));var client=jayson[_0xea2c('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56daf7,_0x3ee1b1,_0x39f540){return new BPromise(function(_0xfa29a6,_0x165424){return client[_0xea2c('0xc')](_0x56daf7,_0x39f540)[_0xea2c('0xd')](function(_0x557cf3){logger[_0xea2c('0xe')](_0xea2c('0xf'),_0x3ee1b1,_0xea2c('0x10'));logger[_0xea2c('0x11')](_0xea2c('0x12'),_0x3ee1b1,_0xea2c('0x10'),JSON[_0xea2c('0x13')](_0x557cf3));if(_0x557cf3[_0xea2c('0x14')]){if(_0x557cf3[_0xea2c('0x14')][_0xea2c('0x15')]===0x1f4){logger['error'](_0xea2c('0xf'),_0x3ee1b1,_0x557cf3[_0xea2c('0x14')][_0xea2c('0x16')]);return _0x165424(_0x557cf3[_0xea2c('0x14')][_0xea2c('0x16')]);}logger[_0xea2c('0x14')](_0xea2c('0xf'),_0x3ee1b1,_0x557cf3[_0xea2c('0x14')][_0xea2c('0x16')]);return _0xfa29a6(_0x557cf3[_0xea2c('0x14')][_0xea2c('0x16')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x3ee1b1,_0xea2c('0x10'));_0xfa29a6(_0x557cf3['result'][_0xea2c('0x16')]);}})[_0xea2c('0x17')](function(_0x52e0e8){logger['error'](_0xea2c('0xf'),_0x3ee1b1,_0x52e0e8);_0x165424(_0x52e0e8);});});}exports[_0xea2c('0x18')]=function(_0x8c930c){var _0xe358f9=this;return new Promise(function(_0x282b49,_0x4d3151){return db[_0xea2c('0x19')][_0xea2c('0x1a')]({'raw':_0x8c930c[_0xea2c('0x1b')]?_0x8c930c['options'][_0xea2c('0x1c')]===undefined?!![]:![]:!![],'where':_0x8c930c[_0xea2c('0x1b')]?_0x8c930c[_0xea2c('0x1b')][_0xea2c('0x1d')]||null:null,'attributes':_0x8c930c['options']?_0x8c930c[_0xea2c('0x1b')][_0xea2c('0x1e')]||null:null,'include':_0x8c930c[_0xea2c('0x1b')]?_0x8c930c[_0xea2c('0x1b')][_0xea2c('0x1f')]?_[_0xea2c('0x20')](_0x8c930c[_0xea2c('0x1b')]['include'],function(_0xc13bae){return{'model':db[_0xc13bae['model']],'as':_0xc13bae['as'],'attributes':_0xc13bae['attributes'],'include':_0xc13bae['include']?_[_0xea2c('0x20')](_0xc13bae[_0xea2c('0x1f')],function(_0x117165){return{'model':db[_0x117165[_0xea2c('0x21')]],'as':_0x117165['as'],'attributes':_0x117165[_0xea2c('0x1e')],'include':_0x117165[_0xea2c('0x1f')]?_['map'](_0x117165[_0xea2c('0x1f')],function(_0x2b9385){return{'model':db[_0x2b9385['model']],'as':_0x2b9385['as'],'attributes':_0x2b9385[_0xea2c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xea2c('0xd')](function(_0x20f955){logger[_0xea2c('0xe')](_0xea2c('0x18'),_0x8c930c);logger['debug']('ShowSetting',_0x8c930c,JSON[_0xea2c('0x13')](_0x20f955));_0x282b49(_0x20f955);})[_0xea2c('0x17')](function(_0x30435b){logger['error'](_0xea2c('0x18'),_0x30435b[_0xea2c('0x16')],_0x8c930c);_0x4d3151(_0xe358f9['error'](0x1f4,_0x30435b[_0xea2c('0x16')]));});});};
\ No newline at end of file
+var _0x33ae=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','Setting,\x20%s,\x20%s','debug','request\x20sent','error','message','result','ShowSetting','Setting','find','options','where','attributes','include','map','model','stringify','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x33ae,0x91));var _0xe33a=function(_0x5ad220,_0x27407e){_0x5ad220=_0x5ad220-0x0;var _0xdec77d=_0x33ae[_0x5ad220];return _0xdec77d;};'use strict';var _=require(_0xe33a('0x0'));var util=require(_0xe33a('0x1'));var moment=require(_0xe33a('0x2'));var BPromise=require(_0xe33a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe33a('0x4'));var db=require(_0xe33a('0x5'))['db'];var utils=require(_0xe33a('0x6'));var logger=require(_0xe33a('0x7'))(_0xe33a('0x8'));var config=require(_0xe33a('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe33a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f47ff,_0x3fb437,_0x47ae31){return new BPromise(function(_0x2079fc,_0x2dc59a){return client[_0xe33a('0xb')](_0x5f47ff,_0x47ae31)[_0xe33a('0xc')](function(_0x48ddff){logger['info'](_0xe33a('0xd'),_0x3fb437,'request\x20sent');logger[_0xe33a('0xe')]('Setting,\x20%s,\x20%s,\x20%s',_0x3fb437,_0xe33a('0xf'),JSON['stringify'](_0x48ddff));if(_0x48ddff[_0xe33a('0x10')]){if(_0x48ddff['error']['code']===0x1f4){logger['error'](_0xe33a('0xd'),_0x3fb437,_0x48ddff[_0xe33a('0x10')][_0xe33a('0x11')]);return _0x2dc59a(_0x48ddff[_0xe33a('0x10')][_0xe33a('0x11')]);}logger[_0xe33a('0x10')](_0xe33a('0xd'),_0x3fb437,_0x48ddff[_0xe33a('0x10')][_0xe33a('0x11')]);return _0x2079fc(_0x48ddff[_0xe33a('0x10')]['message']);}else{logger['info'](_0xe33a('0xd'),_0x3fb437,_0xe33a('0xf'));_0x2079fc(_0x48ddff[_0xe33a('0x12')][_0xe33a('0x11')]);}})['catch'](function(_0x30a743){logger['error'](_0xe33a('0xd'),_0x3fb437,_0x30a743);_0x2dc59a(_0x30a743);});});}exports[_0xe33a('0x13')]=function(_0x47d999){var _0x5c6435=this;return new Promise(function(_0x3608e0,_0x4d975b){return db[_0xe33a('0x14')][_0xe33a('0x15')]({'raw':_0x47d999[_0xe33a('0x16')]?_0x47d999[_0xe33a('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x47d999[_0xe33a('0x16')]?_0x47d999[_0xe33a('0x16')][_0xe33a('0x17')]||null:null,'attributes':_0x47d999[_0xe33a('0x16')]?_0x47d999['options'][_0xe33a('0x18')]||null:null,'include':_0x47d999['options']?_0x47d999[_0xe33a('0x16')][_0xe33a('0x19')]?_[_0xe33a('0x1a')](_0x47d999[_0xe33a('0x16')]['include'],function(_0xa2c516){return{'model':db[_0xa2c516[_0xe33a('0x1b')]],'as':_0xa2c516['as'],'attributes':_0xa2c516['attributes'],'include':_0xa2c516[_0xe33a('0x19')]?_['map'](_0xa2c516[_0xe33a('0x19')],function(_0x2d55a3){return{'model':db[_0x2d55a3[_0xe33a('0x1b')]],'as':_0x2d55a3['as'],'attributes':_0x2d55a3['attributes'],'include':_0x2d55a3[_0xe33a('0x19')]?_[_0xe33a('0x1a')](_0x2d55a3[_0xe33a('0x19')],function(_0x3e75fe){return{'model':db[_0x3e75fe[_0xe33a('0x1b')]],'as':_0x3e75fe['as'],'attributes':_0x3e75fe[_0xe33a('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2bbecd){logger['info']('ShowSetting',_0x47d999);logger[_0xe33a('0xe')](_0xe33a('0x13'),_0x47d999,JSON[_0xe33a('0x1c')](_0x2bbecd));_0x3608e0(_0x2bbecd);})[_0xe33a('0x1d')](function(_0x3ece3b){logger[_0xe33a('0x10')]('ShowSetting',_0x3ece3b['message'],_0x47d999);_0x4d975b(_0x5c6435[_0xe33a('0x10')](0x1f4,_0x3ece3b[_0xe33a('0x11')]));});});};
\ No newline at end of file
index 8ed7613..a4c8738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/status','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer'];(function(_0x1d537c,_0x2b834d){var _0x184fb9=function(_0x248647){while(--_0x248647){_0x1d537c['push'](_0x1d537c['shift']());}};_0x184fb9(++_0x2b834d);}(_0x326f,0xd1));var _0xf326=function(_0x2c338b,_0x1e6185){_0x2c338b=_0x2c338b-0x0;var _0x587aca=_0x326f[_0x2c338b];return _0x587aca;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0x9')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router['get'](_0xf326('0x10'),auth['isAuthenticated'](),controller[_0xf326('0x11')]);router['get'](_0xf326('0x12'),auth['isAuthenticated'](),controller[_0xf326('0x13')]);router[_0xf326('0x9')]('/:id/interactions',auth[_0xf326('0xa')](),controller[_0xf326('0x14')]);router[_0xf326('0x9')](_0xf326('0x15'),controller['statusGet']);router[_0xf326('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x16')]);router[_0xf326('0x17')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0x18')]);router[_0xf326('0x17')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0x19')]);router['post'](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x1a')]);router[_0xf326('0x17')](_0xf326('0x1b'),controller[_0xf326('0x1c')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0xf326('0x1d')]);router[_0xf326('0x17')]('/:id/send',auth['isAuthenticated'](),controller[_0xf326('0x1e')]);router['post']('/:id/status',controller[_0xf326('0x1f')]);router[_0xf326('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x20')]);router[_0xf326('0x21')]('/:id',auth[_0xf326('0xa')](),controller[_0xf326('0x22')]);router[_0xf326('0x23')](_0xf326('0x24'),auth[_0xf326('0xa')](),controller[_0xf326('0x25')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf326('0x26')]);router[_0xf326('0x23')](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x27')]);router[_0xf326('0x23')]('/:id/users',auth[_0xf326('0xa')](),controller[_0xf326('0x28')]);module[_0xf326('0x29')]=router;
\ No newline at end of file
+var _0xabce=['/:id/users','getAgents','create','post','addAnswer','/:id/notify','notify','/:id/send','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status'];(function(_0x3b4676,_0x47cace){var _0x1a3046=function(_0x116f3e){while(--_0x116f3e){_0x3b4676['push'](_0x3b4676['shift']());}};_0x1a3046(++_0x47cace);}(_0xabce,0x103));var _0xeabc=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0xabce[_0x494d1f];return _0x457b6e;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/describe',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0x9')](_0xeabc('0xc'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0x9')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xf')]);router[_0xeabc('0x9')](_0xeabc('0x10'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x11')]);router[_0xeabc('0x9')](_0xeabc('0x12'),auth['isAuthenticated'](),controller[_0xeabc('0x13')]);router[_0xeabc('0x9')](_0xeabc('0x14'),controller['statusGet']);router['get'](_0xeabc('0x15'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x16')]);router['post']('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0x17')]);router['post']('/:id/dispositions',auth[_0xeabc('0x8')](),controller['addDisposition']);router[_0xeabc('0x18')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x19')]);router[_0xeabc('0x18')](_0xeabc('0x1a'),controller[_0xeabc('0x1b')]);router[_0xeabc('0x18')]('/:id/applications',auth[_0xeabc('0x8')](),controller['addApplications']);router[_0xeabc('0x18')](_0xeabc('0x1c'),auth['isAuthenticated'](),controller[_0xeabc('0x1d')]);router[_0xeabc('0x18')](_0xeabc('0x14'),controller[_0xeabc('0x1e')]);router[_0xeabc('0x18')]('/:id/users',auth[_0xeabc('0x8')](),controller[_0xeabc('0x1f')]);router[_0xeabc('0x20')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0x21')]);router[_0xeabc('0x22')](_0xeabc('0x23'),auth['isAuthenticated'](),controller[_0xeabc('0x24')]);router['delete'](_0xeabc('0xc'),auth['isAuthenticated'](),controller[_0xeabc('0x25')]);router[_0xeabc('0x22')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x26')]);router[_0xeabc('0x22')](_0xeabc('0x15'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xeabc('0x27')]=router;
\ No newline at end of file
index 386f3d5..eaafbea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4724=['BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','twilio','skebby','connectel','clickatell','csc','intelepeer'];(function(_0x156c68,_0x1275a0){var _0x4e5cdf=function(_0x49dab7){while(--_0x49dab7){_0x156c68['push'](_0x156c68['shift']());}};_0x4e5cdf(++_0x1275a0);}(_0x4724,0x74));var _0x4472=function(_0xa6a23e,_0x8b657a){_0xa6a23e=_0xa6a23e-0x0;var _0x210e65=_0x4724[_0xa6a23e];return _0x210e65;};'use strict';var Sequelize=require(_0x4472('0x0'));var rs=require('randomstring');module[_0x4472('0x1')]={'name':{'type':Sequelize[_0x4472('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x4472('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x4472('0x2')]},'type':{'type':Sequelize[_0x4472('0x3')](_0x4472('0x4'),_0x4472('0x5'),_0x4472('0x6'),'clicksend','plivo',_0x4472('0x7'),'bandwidth',_0x4472('0x8'),'infobip',_0x4472('0x9'))},'accountSid':{'type':Sequelize[_0x4472('0x2')]},'authId':{'type':Sequelize[_0x4472('0x2')]},'authToken':{'type':Sequelize[_0x4472('0x2')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x4472('0x2')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x4472('0x2')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x4472('0x2')]},'deliveryReport':{'type':Sequelize[_0x4472('0xa')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x4472('0xb')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x4472('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4472('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4472('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4472('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4472('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x4472('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4472('0xc')],'comment':_0x4472('0xd')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x4472('0xe'),'set':function(_0x4a9b4f){if(!_0x4a9b4f)this['setDataValue'](_0x4472('0xf'),null);this[_0x4472('0x10')](_0x4472('0x11'),_0x4a9b4f);}}};
\ No newline at end of file
+var _0x2085=['bandwidth','csc','infobip','intelepeer','ENUM','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','randomstring','STRING','generate','twilio','skebby','plivo','clickatell'];(function(_0x33155c,_0x3fdde1){var _0x5becf7=function(_0x2f7a2f){while(--_0x2f7a2f){_0x33155c['push'](_0x33155c['shift']());}};_0x5becf7(++_0x3fdde1);}(_0x2085,0xa1));var _0x5208=function(_0x30861a,_0x337deb){_0x30861a=_0x30861a-0x0;var _0xa37ad6=_0x2085[_0x30861a];return _0xa37ad6;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x5208('0x0'));module['exports']={'name':{'type':Sequelize[_0x5208('0x1')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x5208('0x1')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x5208('0x2')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x5208('0x3'),_0x5208('0x4'),'connectel','clicksend',_0x5208('0x5'),_0x5208('0x6'),_0x5208('0x7'),_0x5208('0x8'),_0x5208('0x9'),_0x5208('0xa'))},'accountSid':{'type':Sequelize[_0x5208('0x1')]},'authId':{'type':Sequelize[_0x5208('0x1')]},'authToken':{'type':Sequelize[_0x5208('0x1')]},'smsMethod':{'type':Sequelize[_0x5208('0xb')]('SI','TI','GP')},'username':{'type':Sequelize[_0x5208('0x1')]},'password':{'type':Sequelize[_0x5208('0x1')]},'apiKey':{'type':Sequelize[_0x5208('0x1')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x5208('0xc')],'defaultValue':function(){return _0x5208('0xd');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5208('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5208('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5208('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5208('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5208('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x5208('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x5208('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x5208('0xe')],'defaultValue':![],'comment':_0x5208('0x11'),'set':function(_0x2907e9){if(!_0x2907e9)this['setDataValue'](_0x5208('0x12'),null);this[_0x5208('0x13')](_0x5208('0x14'),_0x2907e9);}}};
\ No newline at end of file
index c82fae9..3678b2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f5a=['SmsMessage','ContactId','UserId','User','agent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','SmsApplication','bulkCreate','findAndCountAll','stack','getApplications','getInteractions','Owner','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','user','out','Messages','dataValues','inspect','skebby','skebby_dispatch_id','connectel','requestid','statusInt','message_id','infobip','groupName','clickatell','bandwidth','redif','error_code','DELIVERED','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','message-id','state','addAgents','omit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','then','request\x20sent','debug','error','code','SmsAccount,\x20%s,\x20%s','message','info','result','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','get','UserProfileResource','destroy','sendStatus','name','send','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','model','includeAll','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','SmsAccountId','getDispositions','Disposition','pick','include','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','notify','Applications','account','applications','orderBy','priority','asc','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','sender','text','clicksend','plivo','MessageUUID','results','csc','segmentedMessage','fromNumber','replyMessageId','refid','isNil','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','SmsInteraction','spread','interaction','autoclose','*,*,*,*','created'];(function(_0x3ce75d,_0x213251){var _0x27c9f4=function(_0x2f22db){while(--_0x2f22db){_0x3ce75d['push'](_0x3ce75d['shift']());}};_0x27c9f4(++_0x213251);}(_0x7f5a,0x12d));var _0xa7f5=function(_0x1cb18a,_0x33167a){_0x1cb18a=_0x1cb18a-0x0;var _0x22442e=_0x7f5a[_0x1cb18a];return _0x22442e;};'use strict';var emlformat=require(_0xa7f5('0x0'));var rimraf=require(_0xa7f5('0x1'));var zipdir=require(_0xa7f5('0x2'));var jsonpatch=require(_0xa7f5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa7f5('0x4'));var Mustache=require(_0xa7f5('0x5'));var util=require('util');var path=require(_0xa7f5('0x6'));var sox=require(_0xa7f5('0x7'));var csv=require(_0xa7f5('0x8'));var ejs=require(_0xa7f5('0x9'));var fs=require('fs');var fs_extra=require(_0xa7f5('0xa'));var _=require(_0xa7f5('0xb'));var squel=require(_0xa7f5('0xc'));var crypto=require(_0xa7f5('0xd'));var jsforce=require(_0xa7f5('0xe'));var deskjs=require(_0xa7f5('0xf'));var toCsv=require(_0xa7f5('0x8'));var querystring=require(_0xa7f5('0x10'));var Papa=require(_0xa7f5('0x11'));var Redis=require(_0xa7f5('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa7f5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa7f5('0x14'))('api');var utils=require(_0xa7f5('0x15'));var config=require(_0xa7f5('0x16'));var licenseUtil=require(_0xa7f5('0x17'));var db=require(_0xa7f5('0x18'))['db'];config[_0xa7f5('0x19')]=_[_0xa7f5('0x1a')](config['redis'],{'host':_0xa7f5('0x1b'),'port':0x18eb});var socket=require(_0xa7f5('0x1c'))(new Redis(config[_0xa7f5('0x19')]));require('./smsAccount.socket')[_0xa7f5('0x1d')](socket);var jayson=require(_0xa7f5('0x1e'));var client=jayson[_0xa7f5('0x1f')][_0xa7f5('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x2eba33,_0x529278,_0x226e16,_0x509f0b){return new BPromise(function(_0x7dbaa4,_0x24b932){var _0x393428=_0x509f0b||client;return _0x393428['request'](_0x2eba33,_0x226e16)[_0xa7f5('0x21')](function(_0x2804a9){logger['info']('SmsAccount,\x20%s,\x20%s',_0x529278,_0xa7f5('0x22'));logger[_0xa7f5('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x529278,_0xa7f5('0x22'),JSON['stringify'](_0x2804a9));if(_0x2804a9[_0xa7f5('0x24')]){if(_0x2804a9[_0xa7f5('0x24')][_0xa7f5('0x25')]===0x1f4){logger['error'](_0xa7f5('0x26'),_0x529278,_0x2804a9[_0xa7f5('0x24')]['message']);return _0x24b932(_0x2804a9[_0xa7f5('0x24')][_0xa7f5('0x27')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x529278,_0x2804a9[_0xa7f5('0x24')]['message']);return _0x7dbaa4(_0x2804a9[_0xa7f5('0x24')][_0xa7f5('0x27')]);}else{logger[_0xa7f5('0x28')](_0xa7f5('0x26'),_0x529278,'request\x20sent');_0x7dbaa4(_0x2804a9[_0xa7f5('0x29')][_0xa7f5('0x27')]);}})['catch'](function(_0x1c816f){logger['error']('SmsAccount,\x20%s,\x20%s',_0x529278,_0x1c816f);_0x24b932(_0x1c816f);});});}function respondWithStatusCode(_0x7a578,_0x49d6f4){_0x49d6f4=_0x49d6f4||0xcc;return function(_0x3b2c04){if(_0x3b2c04){return _0x7a578['sendStatus'](_0x49d6f4);}return _0x7a578[_0xa7f5('0x2a')](_0x49d6f4)[_0xa7f5('0x2b')]();};}function respondWithResult(_0x2902b0,_0x201dbb){_0x201dbb=_0x201dbb||0xc8;return function(_0x10cb74){if(_0x10cb74){return _0x2902b0[_0xa7f5('0x2a')](_0x201dbb)[_0xa7f5('0x2c')](_0x10cb74);}};}function respondWithFilteredResult(_0x4d8a16,_0x4936d6){return function(_0x11d18c){if(_0x11d18c){var _0x44ea61=typeof _0x4936d6[_0xa7f5('0x2d')]===_0xa7f5('0x2e')&&typeof _0x4936d6[_0xa7f5('0x2f')]==='undefined';var _0x40eef1=_0x11d18c[_0xa7f5('0x30')];var _0x2be43a=_0x44ea61?0x0:_0x4936d6[_0xa7f5('0x2d')];var _0x3eb56a=_0x44ea61?_0x11d18c[_0xa7f5('0x30')]:_0x4936d6[_0xa7f5('0x2d')]+_0x4936d6[_0xa7f5('0x2f')];var _0x5d6afa;if(_0x3eb56a>=_0x40eef1){_0x3eb56a=_0x40eef1;_0x5d6afa=0xc8;}else{_0x5d6afa=0xce;}_0x4d8a16[_0xa7f5('0x2a')](_0x5d6afa);return _0x4d8a16[_0xa7f5('0x31')](_0xa7f5('0x32'),_0x2be43a+'-'+_0x3eb56a+'/'+_0x40eef1)[_0xa7f5('0x2c')](_0x11d18c);}return null;};}function patchUpdates(_0x33c6ca){return function(_0x39ca08){try{jsonpatch[_0xa7f5('0x33')](_0x39ca08,_0x33c6ca,!![]);}catch(_0x3f1d48){return BPromise['reject'](_0x3f1d48);}return _0x39ca08['save']();};}function saveUpdates(_0x13cc34,_0xd0e389){return function(_0x49f057){if(_0x49f057){return _0x49f057[_0xa7f5('0x34')](_0x13cc34)[_0xa7f5('0x21')](function(_0x407916){return _0x407916;});}return null;};}function removeEntity(_0x1c9acc,_0x322e59){return function(_0x957933){if(_0x957933){return _0x957933['destroy']()[_0xa7f5('0x21')](function(){var _0x3c4e60=_0x957933[_0xa7f5('0x35')]({'plain':!![]});var _0x7ceffb='SmsAccounts';return db[_0xa7f5('0x36')][_0xa7f5('0x37')]({'where':{'type':_0x7ceffb,'resourceId':_0x3c4e60['id']}})[_0xa7f5('0x21')](function(){return _0x957933;});})[_0xa7f5('0x21')](function(){_0x1c9acc['status'](0xcc)[_0xa7f5('0x2b')]();});}};}function handleEntityNotFound(_0x2fdd03,_0xecb1f5){return function(_0x190a2c){if(!_0x190a2c){_0x2fdd03[_0xa7f5('0x38')](0x194);}return _0x190a2c;};}function handleError(_0x5eb302,_0x22553f){_0x22553f=_0x22553f||0x1f4;return function(_0x5c1a1){logger[_0xa7f5('0x24')](_0x5c1a1['stack']);if(_0x5c1a1[_0xa7f5('0x39')]){delete _0x5c1a1[_0xa7f5('0x39')];}_0x5eb302[_0xa7f5('0x2a')](_0x22553f)[_0xa7f5('0x3a')](_0x5c1a1);};}exports['index']=function(_0x428004,_0x322a7c){var _0x5a5022={'include':[{'model':db[_0xa7f5('0x3b')],'as':_0xa7f5('0x3c')}]},_0xbf177={},_0xbd66e={'count':0x0,'rows':[]};var _0x5a5164=_[_0xa7f5('0x3d')](db[_0xa7f5('0x3e')][_0xa7f5('0x3f')],function(_0x26d816){return{'name':_0x26d816[_0xa7f5('0x40')],'type':_0x26d816[_0xa7f5('0x41')][_0xa7f5('0x42')]};});_0xbf177['model']=_[_0xa7f5('0x3d')](_0x5a5164,_0xa7f5('0x39'));_0xbf177[_0xa7f5('0x43')]=_[_0xa7f5('0x44')](_0x428004[_0xa7f5('0x43')]);_0xbf177[_0xa7f5('0x45')]=_['intersection'](_0xbf177['model'],_0xbf177[_0xa7f5('0x43')]);_0x5a5022['attributes']=_[_0xa7f5('0x46')](_0xbf177['model'],qs[_0xa7f5('0x47')](_0x428004[_0xa7f5('0x43')][_0xa7f5('0x47')]));_0x5a5022[_0xa7f5('0x48')]=_0x5a5022['attributes'][_0xa7f5('0x49')]?_0x5a5022[_0xa7f5('0x48')]:_0xbf177['model'];if(!_0x428004[_0xa7f5('0x43')][_0xa7f5('0x4a')](_0xa7f5('0x4b'))){_0x5a5022[_0xa7f5('0x2f')]=qs[_0xa7f5('0x2f')](_0x428004['query'][_0xa7f5('0x2f')]);_0x5a5022[_0xa7f5('0x2d')]=qs[_0xa7f5('0x2d')](_0x428004['query'][_0xa7f5('0x2d')]);}_0x5a5022[_0xa7f5('0x4c')]=qs[_0xa7f5('0x4d')](_0x428004[_0xa7f5('0x43')][_0xa7f5('0x4d')]);_0x5a5022[_0xa7f5('0x4e')]=qs[_0xa7f5('0x45')](_['pick'](_0x428004[_0xa7f5('0x43')],_0xbf177[_0xa7f5('0x45')]),_0x5a5164);if(_0x428004['query'][_0xa7f5('0x4f')]){_0x5a5022[_0xa7f5('0x4e')]=_[_0xa7f5('0x50')](_0x5a5022[_0xa7f5('0x4e')],{'$or':_[_0xa7f5('0x3d')](_0x5a5164,function(_0x2d7a9a){if(_0x2d7a9a[_0xa7f5('0x41')]!==_0xa7f5('0x51')){var _0x57b6d7={};_0x57b6d7[_0x2d7a9a[_0xa7f5('0x39')]]={'$like':'%'+_0x428004[_0xa7f5('0x43')][_0xa7f5('0x4f')]+'%'};return _0x57b6d7;}})});}_0x5a5022=_[_0xa7f5('0x50')]({},_0x5a5022,_0x428004[_0xa7f5('0x52')]);var _0x51dd5d={'where':_0x5a5022[_0xa7f5('0x4e')]};return db[_0xa7f5('0x3e')]['count'](_0x51dd5d)['then'](function(_0x49dcb3){_0xbd66e['count']=_0x49dcb3;if(_0x428004[_0xa7f5('0x43')]['includeAll']){_0x5a5022['include']=[{'all':!![]}];}return db[_0xa7f5('0x3e')][_0xa7f5('0x53')](_0x5a5022);})[_0xa7f5('0x21')](function(_0x2eeaaa){_0xbd66e[_0xa7f5('0x54')]=_0x2eeaaa;return _0xbd66e;})[_0xa7f5('0x21')](respondWithFilteredResult(_0x322a7c,_0x5a5022))[_0xa7f5('0x55')](handleError(_0x322a7c,null));};exports[_0xa7f5('0x56')]=function(_0x11b2db,_0x332b23){var _0x31aa68={'raw':![],'where':{'id':_0x11b2db[_0xa7f5('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0xa7f5('0x3c')}]},_0x35495={};_0x35495[_0xa7f5('0x58')]=_[_0xa7f5('0x44')](db[_0xa7f5('0x3e')]['rawAttributes']);_0x35495['query']=_[_0xa7f5('0x44')](_0x11b2db['query']);_0x35495[_0xa7f5('0x45')]=_[_0xa7f5('0x46')](_0x35495[_0xa7f5('0x58')],_0x35495[_0xa7f5('0x43')]);_0x31aa68[_0xa7f5('0x48')]=_[_0xa7f5('0x46')](_0x35495[_0xa7f5('0x58')],qs[_0xa7f5('0x47')](_0x11b2db[_0xa7f5('0x43')][_0xa7f5('0x47')]));_0x31aa68['attributes']=_0x31aa68[_0xa7f5('0x48')][_0xa7f5('0x49')]?_0x31aa68['attributes']:_0x35495[_0xa7f5('0x58')];if(_0x11b2db[_0xa7f5('0x43')][_0xa7f5('0x59')]){_0x31aa68['include']=[{'all':!![]}];}_0x31aa68=_[_0xa7f5('0x50')]({},_0x31aa68,_0x11b2db[_0xa7f5('0x52')]);return db[_0xa7f5('0x3e')][_0xa7f5('0x5a')](_0x31aa68)['then'](handleEntityNotFound(_0x332b23,null))[_0xa7f5('0x21')](respondWithResult(_0x332b23,null))[_0xa7f5('0x55')](handleError(_0x332b23,null));};exports['create']=function(_0x3912b3,_0x4ef0d9){return db['SmsAccount']['create'](_0x3912b3[_0xa7f5('0x5b')],{})[_0xa7f5('0x21')](function(_0x17093c){var _0x4741eb=_0x3912b3['user'][_0xa7f5('0x35')]({'plain':!![]});if(!_0x4741eb)throw new Error(_0xa7f5('0x5c'));if(_0x4741eb[_0xa7f5('0x5d')]==='user'){var _0x2f5c17=_0x17093c[_0xa7f5('0x35')]({'plain':!![]});var _0x5bc2ac=_0xa7f5('0x5e');return db[_0xa7f5('0x5f')]['find']({'where':{'name':_0x5bc2ac,'userProfileId':_0x4741eb[_0xa7f5('0x60')]},'raw':!![]})[_0xa7f5('0x21')](function(_0x19dbaf){if(_0x19dbaf&&_0x19dbaf[_0xa7f5('0x61')]===0x0){return db['UserProfileResource'][_0xa7f5('0x62')]({'name':_0x2f5c17[_0xa7f5('0x39')],'resourceId':_0x2f5c17['id'],'type':_0x19dbaf[_0xa7f5('0x39')],'sectionId':_0x19dbaf['id']},{})[_0xa7f5('0x21')](function(){return _0x17093c;});}else{return _0x17093c;}})[_0xa7f5('0x55')](function(_0x7aae5c){logger[_0xa7f5('0x24')](_0xa7f5('0x63'),_0x7aae5c);throw _0x7aae5c;});}return _0x17093c;})['then'](respondWithResult(_0x4ef0d9,0xc9))[_0xa7f5('0x55')](handleError(_0x4ef0d9,null));};exports[_0xa7f5('0x34')]=function(_0x4ecacf,_0x7b5c0f){if(_0x4ecacf['body']['id']){delete _0x4ecacf[_0xa7f5('0x5b')]['id'];}return db['SmsAccount'][_0xa7f5('0x5a')]({'where':{'id':_0x4ecacf[_0xa7f5('0x57')]['id']},'include':[{'model':db[_0xa7f5('0x3b')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x7b5c0f,null))[_0xa7f5('0x21')](saveUpdates(_0x4ecacf[_0xa7f5('0x5b')],null))[_0xa7f5('0x21')](respondWithResult(_0x7b5c0f,null))[_0xa7f5('0x55')](handleError(_0x7b5c0f,null));};exports['destroy']=function(_0x2a736a,_0x4de94a){return db['SmsAccount']['find']({'where':{'id':_0x2a736a[_0xa7f5('0x57')]['id']}})['then'](handleEntityNotFound(_0x4de94a,null))[_0xa7f5('0x21')](removeEntity(_0x4de94a,null))[_0xa7f5('0x55')](handleError(_0x4de94a,null));};exports[_0xa7f5('0x64')]=function(_0x4e3750,_0x4a87af){return db[_0xa7f5('0x3e')][_0xa7f5('0x64')]()[_0xa7f5('0x21')](respondWithResult(_0x4a87af,null))['catch'](handleError(_0x4a87af,null));};exports['addDisposition']=function(_0x50874f,_0x2da0f8,_0x443349){if(_0x50874f[_0xa7f5('0x5b')]['id']){delete _0x50874f[_0xa7f5('0x5b')]['id'];}return db[_0xa7f5('0x3e')][_0xa7f5('0x5a')]({'where':{'id':_0x50874f[_0xa7f5('0x57')]['id']}})['then'](handleEntityNotFound(_0x2da0f8,null))['then'](function(_0x364678){if(_0x364678){_0x50874f[_0xa7f5('0x5b')][_0xa7f5('0x65')]=_0x364678['id'];return db['Disposition'][_0xa7f5('0x62')](_0x50874f[_0xa7f5('0x5b')]);}})[_0xa7f5('0x21')](respondWithResult(_0x2da0f8,null))[_0xa7f5('0x55')](handleError(_0x2da0f8,null));};exports[_0xa7f5('0x66')]=function(_0x36d87b,_0x3721a1,_0xc67c47){var _0x49d1a7={'raw':![],'where':{}};var _0x434dd3={};var _0x403075={'count':0x0,'rows':[]};return db[_0xa7f5('0x3e')]['findOne']({'where':{'id':_0x36d87b[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0x3721a1,null))['then'](function(_0x1ed7e2){if(_0x1ed7e2){_0x434dd3['model']=_[_0xa7f5('0x44')](db[_0xa7f5('0x67')][_0xa7f5('0x3f')]);_0x434dd3[_0xa7f5('0x43')]=_['keys'](_0x36d87b[_0xa7f5('0x43')]);_0x434dd3['filters']=_[_0xa7f5('0x46')](_0x434dd3[_0xa7f5('0x58')],_0x434dd3[_0xa7f5('0x43')]);_0x49d1a7[_0xa7f5('0x48')]=_[_0xa7f5('0x46')](_0x434dd3[_0xa7f5('0x58')],qs['fields'](_0x36d87b[_0xa7f5('0x43')]['fields']));_0x49d1a7[_0xa7f5('0x48')]=_0x49d1a7[_0xa7f5('0x48')][_0xa7f5('0x49')]?_0x49d1a7[_0xa7f5('0x48')]:_0x434dd3[_0xa7f5('0x58')];if(!_0x36d87b[_0xa7f5('0x43')][_0xa7f5('0x4a')]('nolimit')){_0x49d1a7[_0xa7f5('0x2f')]=qs[_0xa7f5('0x2f')](_0x36d87b[_0xa7f5('0x43')]['limit']);_0x49d1a7['offset']=qs[_0xa7f5('0x2d')](_0x36d87b[_0xa7f5('0x43')]['offset']);}_0x49d1a7[_0xa7f5('0x4c')]=qs[_0xa7f5('0x4d')](_0x36d87b[_0xa7f5('0x43')][_0xa7f5('0x4d')]);_0x49d1a7[_0xa7f5('0x4e')]=qs[_0xa7f5('0x45')](_[_0xa7f5('0x68')](_0x36d87b['query'],_0x434dd3['filters']));_0x49d1a7['where'][_0xa7f5('0x65')]=_0x1ed7e2['id'];if(_0x36d87b[_0xa7f5('0x43')][_0xa7f5('0x4f')]){_0x49d1a7['where']=_[_0xa7f5('0x50')](_0x49d1a7[_0xa7f5('0x4e')],{'$or':_[_0xa7f5('0x3d')](_0x49d1a7[_0xa7f5('0x48')],function(_0x4fb0bc){var _0x1591e1={};_0x1591e1[_0x4fb0bc]={'$like':'%'+_0x36d87b['query'][_0xa7f5('0x4f')]+'%'};return _0x1591e1;})});}_0x49d1a7=_['merge']({},_0x49d1a7,_0x36d87b['options']);return db[_0xa7f5('0x67')][_0xa7f5('0x30')]({'where':_0x49d1a7[_0xa7f5('0x4e')]})[_0xa7f5('0x21')](function(_0x15d733){_0x403075['count']=_0x15d733;if(_0x36d87b[_0xa7f5('0x43')]['includeAll']){_0x49d1a7[_0xa7f5('0x69')]=[{'all':!![]}];}return db['Disposition'][_0xa7f5('0x53')](_0x49d1a7);})[_0xa7f5('0x21')](function(_0x91107d){_0x403075['rows']=_0x91107d;return _0x403075;});}})['then'](respondWithFilteredResult(_0x3721a1,_0x49d1a7))['catch'](handleError(_0x3721a1,null));};exports['removeDispositions']=function(_0xa13e28,_0x5692b9,_0x510ae2){return db['SmsAccount'][_0xa7f5('0x5a')]({'where':{'id':_0xa13e28[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0x5692b9,null))[_0xa7f5('0x21')](function(_0x544db2){if(_0x544db2){return _0x544db2['removeDispositions'](_0xa13e28[_0xa7f5('0x43')][_0xa7f5('0x6a')]);}})[_0xa7f5('0x21')](respondWithStatusCode(_0x5692b9,null))[_0xa7f5('0x55')](handleError(_0x5692b9,null));};exports[_0xa7f5('0x6b')]=function(_0x334d38,_0x521aa7,_0x569e9d){if(_0x334d38[_0xa7f5('0x5b')]['id']){delete _0x334d38['body']['id'];}return db['SmsAccount'][_0xa7f5('0x5a')]({'where':{'id':_0x334d38[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0x521aa7,null))[_0xa7f5('0x21')](function(_0x3b9dd7){if(_0x3b9dd7){_0x334d38[_0xa7f5('0x5b')][_0xa7f5('0x65')]=_0x3b9dd7['id'];return db[_0xa7f5('0x6c')][_0xa7f5('0x62')](_0x334d38[_0xa7f5('0x5b')]);}})[_0xa7f5('0x21')](respondWithResult(_0x521aa7,null))[_0xa7f5('0x55')](handleError(_0x521aa7,null));};exports[_0xa7f5('0x6d')]=function(_0x52e8c8,_0x52baf5,_0x20c8d7){var _0x582a2f={'raw':![],'where':{}};var _0x2c9265={};var _0x38695f={'count':0x0,'rows':[]};return db[_0xa7f5('0x3e')][_0xa7f5('0x6e')]({'where':{'id':_0x52e8c8['params']['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0x52baf5,null))[_0xa7f5('0x21')](function(_0x18248){if(_0x18248){_0x2c9265[_0xa7f5('0x58')]=_['keys'](db[_0xa7f5('0x6c')]['rawAttributes']);_0x2c9265['query']=_[_0xa7f5('0x44')](_0x52e8c8['query']);_0x2c9265[_0xa7f5('0x45')]=_[_0xa7f5('0x46')](_0x2c9265[_0xa7f5('0x58')],_0x2c9265[_0xa7f5('0x43')]);_0x582a2f[_0xa7f5('0x48')]=_[_0xa7f5('0x46')](_0x2c9265[_0xa7f5('0x58')],qs[_0xa7f5('0x47')](_0x52e8c8['query'][_0xa7f5('0x47')]));_0x582a2f['attributes']=_0x582a2f[_0xa7f5('0x48')][_0xa7f5('0x49')]?_0x582a2f[_0xa7f5('0x48')]:_0x2c9265[_0xa7f5('0x58')];if(!_0x52e8c8[_0xa7f5('0x43')][_0xa7f5('0x4a')](_0xa7f5('0x4b'))){_0x582a2f[_0xa7f5('0x2f')]=qs['limit'](_0x52e8c8['query'][_0xa7f5('0x2f')]);_0x582a2f['offset']=qs[_0xa7f5('0x2d')](_0x52e8c8[_0xa7f5('0x43')][_0xa7f5('0x2d')]);}_0x582a2f[_0xa7f5('0x4c')]=qs['sort'](_0x52e8c8[_0xa7f5('0x43')]['sort']);_0x582a2f[_0xa7f5('0x4e')]=qs[_0xa7f5('0x45')](_[_0xa7f5('0x68')](_0x52e8c8[_0xa7f5('0x43')],_0x2c9265[_0xa7f5('0x45')]));_0x582a2f[_0xa7f5('0x4e')][_0xa7f5('0x65')]=_0x18248['id'];if(_0x52e8c8[_0xa7f5('0x43')][_0xa7f5('0x4f')]){_0x582a2f[_0xa7f5('0x4e')]=_[_0xa7f5('0x50')](_0x582a2f[_0xa7f5('0x4e')],{'$or':_[_0xa7f5('0x3d')](_0x582a2f[_0xa7f5('0x48')],function(_0x2cb0e7){var _0x5d5a56={};_0x5d5a56[_0x2cb0e7]={'$like':'%'+_0x52e8c8[_0xa7f5('0x43')][_0xa7f5('0x4f')]+'%'};return _0x5d5a56;})});}_0x582a2f=_[_0xa7f5('0x50')]({},_0x582a2f,_0x52e8c8[_0xa7f5('0x52')]);return db[_0xa7f5('0x6c')][_0xa7f5('0x30')]({'where':_0x582a2f[_0xa7f5('0x4e')]})[_0xa7f5('0x21')](function(_0x2d878a){_0x38695f['count']=_0x2d878a;if(_0x52e8c8['query']['includeAll']){_0x582a2f['include']=[{'all':!![]}];}return db[_0xa7f5('0x6c')][_0xa7f5('0x53')](_0x582a2f);})[_0xa7f5('0x21')](function(_0x13f9fb){_0x38695f[_0xa7f5('0x54')]=_0x13f9fb;return _0x38695f;});}})[_0xa7f5('0x21')](respondWithFilteredResult(_0x52baf5,_0x582a2f))[_0xa7f5('0x55')](handleError(_0x52baf5,null));};exports[_0xa7f5('0x6f')]=function(_0x3d4af4,_0xa7dd5b,_0x3abb52){return db[_0xa7f5('0x3e')][_0xa7f5('0x5a')]({'where':{'id':_0x3d4af4[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0xa7dd5b,null))[_0xa7f5('0x21')](function(_0x2b0df8){if(_0x2b0df8){return _0x2b0df8[_0xa7f5('0x6f')](_0x3d4af4[_0xa7f5('0x43')]['ids']);}})['then'](respondWithStatusCode(_0xa7dd5b,null))[_0xa7f5('0x55')](handleError(_0xa7dd5b,null));};exports[_0xa7f5('0x70')]=function(_0x3fedbb,_0x22720c,_0x4f6d37){var _0x408055={'channel':'sms'};var _0x5c753e=[];var _0x37e7e0=[];var _0x5b5e24={};return db[_0xa7f5('0x3e')][_0xa7f5('0x5a')]({'where':{'id':_0x3fedbb[_0xa7f5('0x57')]['id']},'include':[{'model':db['SmsApplication'],'as':_0xa7f5('0x71')}]})[_0xa7f5('0x21')](handleEntityNotFound(_0x22720c,null))['then'](function(_0x514139){_0x408055[_0xa7f5('0x72')]=_0x514139;_0x408055[_0xa7f5('0x73')]=_[_0xa7f5('0x74')](_0x514139['Applications'],[_0xa7f5('0x75')],[_0xa7f5('0x76')]);if(_0x408055[_0xa7f5('0x72')][_0xa7f5('0x71')]){delete _0x408055[_0xa7f5('0x72')][_0xa7f5('0x71')];}return db[_0xa7f5('0x77')]['describe']();})['then'](function(_0x5400d3){if(!_0x5400d3){throw new db['Sequelize'][(_0xa7f5('0x78'))](_0xa7f5('0x79'));}_0x5c753e=_['difference'](_[_0xa7f5('0x44')](_0x5400d3),[_0xa7f5('0x7a'),_0xa7f5('0x7b')]);_0x37e7e0=_[_0xa7f5('0x7c')](_['keys'](_0x5400d3),['createdAt',_0xa7f5('0x7b'),_0xa7f5('0x7d'),_0xa7f5('0x7e')]);_0x408055[_0xa7f5('0x5b')]={'mapKey':_0xa7f5('0x7f')};if(_0x408055[_0xa7f5('0x72')][_0xa7f5('0x41')]){switch(_0x408055[_0xa7f5('0x72')]['type']){case _0xa7f5('0x80'):_0x408055['body'][_0xa7f5('0x81')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x82')];_0x408055['body'][_0xa7f5('0x5b')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x83')];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x84')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x85')];break;case'skebby':_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x81')]='+'+_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x86')];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x5b')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x87')];break;case'connectel':_0x408055[_0xa7f5('0x5b')]['from']=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x81')];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x5b')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x27')];break;case _0xa7f5('0x88'):_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x81')]=_0x3fedbb['body']['from'];_0x408055['body']['body']=_0x3fedbb['body'][_0xa7f5('0x5b')];_0x408055['body']['messageId']=_0x3fedbb[_0xa7f5('0x5b')]['message_id'];break;case _0xa7f5('0x89'):_0x408055['body']['from']=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x82')];_0x408055['body'][_0xa7f5('0x5b')]=_0x3fedbb[_0xa7f5('0x5b')]['Text'];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x84')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x8a')];break;case'infobip':_0x408055['body'][_0xa7f5('0x81')]='+'+_0x3fedbb['body'][_0xa7f5('0x8b')][0x0]['from'];_0x408055['body']['body']=_0x3fedbb['body'][_0xa7f5('0x8b')][0x0][_0xa7f5('0x87')];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x84')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x8b')][0x0][_0xa7f5('0x84')];break;case _0xa7f5('0x8c'):_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x81')]=_0x3fedbb['body']['originatingAddress'];_0x408055['body'][_0xa7f5('0x5b')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x8d')][_0xa7f5('0x27')];break;case'clickatell':_0x408055['body'][_0xa7f5('0x81')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x8e')];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x5b')]=_0x3fedbb[_0xa7f5('0x5b')]['text'];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x84')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x8f')];break;case'bandwidth':_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x84')]=_0x3fedbb[_0xa7f5('0x5b')][0x0][_0xa7f5('0x27')]['id'];_0x408055[_0xa7f5('0x5b')]['from']=_0x3fedbb[_0xa7f5('0x5b')][0x0][_0xa7f5('0x27')][_0xa7f5('0x81')];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x5b')]=_0x3fedbb[_0xa7f5('0x5b')][0x0][_0xa7f5('0x27')][_0xa7f5('0x87')];break;case'intelepeer':_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x81')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x81')];_0x408055['body']['body']=_0x3fedbb[_0xa7f5('0x5b')]['message'];_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x84')]=_0x3fedbb[_0xa7f5('0x5b')][_0xa7f5('0x90')];break;}}if(_0x408055[_0xa7f5('0x5b')]['id']){delete _0x408055[_0xa7f5('0x5b')]['id'];}if(_[_0xa7f5('0x91')](_0x408055['body'][_0xa7f5('0x81')])){throw new db[(_0xa7f5('0x92'))][(_0xa7f5('0x78'))](_0xa7f5('0x93'));}if(_[_0xa7f5('0x91')](_0x408055['body']['body'])||_0x408055['body'][_0xa7f5('0x5b')]===''){throw new db['Sequelize'][(_0xa7f5('0x78'))](_0xa7f5('0x94'));}if(_[_0xa7f5('0x91')](_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x95')])){throw new db[(_0xa7f5('0x92'))][(_0xa7f5('0x78'))](_0xa7f5('0x96')+_0x37e7e0);}if(!_[_0xa7f5('0x97')](_0x37e7e0,_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x95')])){throw new db[(_0xa7f5('0x92'))]['ValidationError'](_0xa7f5('0x98')+_0x37e7e0);}_0x5b5e24[_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x95')]]=_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x81')];return db[_0xa7f5('0x99')]['find']({'where':{'id':_0x408055['account'][_0xa7f5('0x7e')]},'include':[{'model':db[_0xa7f5('0x77')],'as':_0xa7f5('0x9a'),'where':_0x5b5e24,'limit':0x1,'order':[['updatedAt',_0xa7f5('0x9b')]]}]});})['then'](handleEntityNotFound(_0x22720c,null))[_0xa7f5('0x21')](function(_0x5895ec){if(_0x5895ec){_0x408055[_0xa7f5('0x9c')]=_['omit'](_0x5895ec,[_0xa7f5('0x9a')]);if(_0x5895ec['Contacts'][_0xa7f5('0x49')]){return _0x5895ec[_0xa7f5('0x9a')][0x0];}var _0x52de17=_[_0xa7f5('0x1a')](_0x408055[_0xa7f5('0x5b')],{'firstName':_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x81')],'ListId':_0x5895ec['id']});_0x52de17[_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x95')]]=_0x408055['body'][_0xa7f5('0x81')];return db[_0xa7f5('0x77')]['create'](_0x52de17,{'fields':_0x5c753e,'raw':!![]});}})[_0xa7f5('0x21')](handleEntityNotFound(_0x22720c,null))[_0xa7f5('0x21')](function(_0x5562cf){if(_0x5562cf){_0x408055['contact']=_0x5562cf;var _0x3c01fb={'ContactId':_0x5562cf['id'],'phone':_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x81')],'SmsAccountId':_0x3fedbb[_0xa7f5('0x57')]['id']};var _0x471b3a={'ContactId':_0x5562cf['id'],'SmsAccountId':_0x3fedbb['params']['id'],'closed':![]};return db[_0xa7f5('0x9d')]['find']({'where':_0x471b3a})[_0xa7f5('0x21')](function(_0x1bcb7f){if(_0x1bcb7f){return[_0x1bcb7f,![]];}return db[_0xa7f5('0x9d')][_0xa7f5('0x62')](_0x3c01fb)[_0xa7f5('0x21')](function(_0xd39bfe){return[_0xd39bfe,!![]];});});}})[_0xa7f5('0x9e')](function(_0x20a72b,_0x2f945a){_0x408055[_0xa7f5('0x9f')]=_0x20a72b['get']({'plain':!![]});_0x408055[_0xa7f5('0x9f')]['created']=![];if(_0x2f945a){if(_0x408055[_0xa7f5('0x72')][_0xa7f5('0xa0')]){_0x408055[_0xa7f5('0x73')]['push']({'id':0x0,'priority':_0x408055[_0xa7f5('0x73')][_0xa7f5('0x49')]+0x1,'app':'close','appdata':'unmanaged','interval':_0xa7f5('0xa1')});}_0x408055[_0xa7f5('0x9f')][_0xa7f5('0xa2')]=!![];}return db[_0xa7f5('0xa3')][_0xa7f5('0x62')]({'phone':_0x408055[_0xa7f5('0x5b')]['from'],'messageId':_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x84')],'body':_0x408055[_0xa7f5('0x5b')][_0xa7f5('0x5b')],'SmsAccountId':_0x3fedbb[_0xa7f5('0x57')]['id'],'SmsInteractionId':_0x20a72b['id'],'direction':'in','ContactId':_0x20a72b[_0xa7f5('0xa4')],'AttachmentId':_0x408055[_0xa7f5('0x5b')]['AttachmentId']});})['then'](function(_0x3059a4){_0x408055[_0xa7f5('0x27')]=_0x3059a4;if(_0x408055[_0xa7f5('0x9f')][_0xa7f5('0xa5')]){return db[_0xa7f5('0xa6')][_0xa7f5('0x5a')]({'attributes':['id',_0xa7f5('0x39')],'where':{'id':_0x408055[_0xa7f5('0x9f')]['UserId']}})[_0xa7f5('0x21')](function(_0x40f110){if(_0x40f110){_0x408055[_0xa7f5('0x73')]['unshift']({'id':0x0,'priority':0x0,'app':_0xa7f5('0xa7'),'appdata':_0x40f110[_0xa7f5('0x39')]+','+(_0x408055[_0xa7f5('0x72')]['waitForTheAssignedAgent']||0xa),'interval':_0xa7f5('0xa1')});}return respondWithRpcPromise(_0xa7f5('0xa8'),'startRouting',_0x408055);});}return respondWithRpcPromise(_0xa7f5('0xa8'),_0xa7f5('0xa9'),_0x408055);})[_0xa7f5('0x21')](function(_0x39ea87){if(_0x39ea87){var _0x1a52ab=0xc8;var _0x1e0d35=_0xa7f5('0xaa');logger[_0xa7f5('0x28')](_0xa7f5('0xab'),_0x1e0d35,_0x1a52ab,'entity\x20found');logger[_0xa7f5('0x23')](_0xa7f5('0xac'),_0x1e0d35,_0x1a52ab,_0xa7f5('0xad'),JSON[_0xa7f5('0xae')](_0x39ea87));if(_0x408055[_0xa7f5('0x72')][_0xa7f5('0x41')]===_0xa7f5('0x80')){return _0x22720c[_0xa7f5('0x2a')](_0x1a52ab)['set'](_0xa7f5('0xaf'),_0xa7f5('0xb0'))[_0xa7f5('0x3a')](_0xa7f5('0xb1'));}else{return _0x22720c[_0xa7f5('0x2a')](_0x1a52ab)[_0xa7f5('0x2c')](_0x39ea87);}}})[_0xa7f5('0x55')](handleError(_0x22720c,null));};exports['addApplications']=function(_0xec35df,_0x1e5d56){var _0x5397d7=_0xec35df[_0xa7f5('0x57')]['id'];var _0x565a03=_0xec35df[_0xa7f5('0x5b')];var _0x5a2b69=0xc8;var _0x13a717=null;return db[_0xa7f5('0xb2')][_0xa7f5('0xb3')]({'isolationLevel':db[_0xa7f5('0xb2')][_0xa7f5('0xb4')][_0xa7f5('0xb5')][_0xa7f5('0xb6')]},function(_0x3b0d6d){return db[_0xa7f5('0x3e')][_0xa7f5('0x6e')]({'where':{'id':_0x5397d7},'transaction':_0x3b0d6d})[_0xa7f5('0x21')](function(_0x11d5c7){if(_0x11d5c7){return db[_0xa7f5('0xb7')][_0xa7f5('0x37')]({'where':{'SmsAccountId':_0x5397d7},'transaction':_0x3b0d6d})['then'](function(){var _0x324dfd=_['map'](_0x565a03,function(_0x462e02){_0x462e02[_0xa7f5('0x65')]=_0x5397d7;return _0x462e02;});return db[_0xa7f5('0xb7')][_0xa7f5('0xb8')](_0x324dfd,{'transaction':_0x3b0d6d});});}else{_0x5a2b69=0x194;_0x13a717=[];}});})[_0xa7f5('0x21')](function(){if(_0x5a2b69!==0x194){return db['SmsApplication'][_0xa7f5('0xb9')]({'where':{'SmsAccountId':_0x5397d7},'order':'priority'})[_0xa7f5('0x21')](function(_0x17f0d4){_0x13a717=_0x17f0d4;});}})['catch'](function(_0x2c5691){_0x5a2b69=0x1f4;logger['error'](_0x2c5691[_0xa7f5('0xba')]);if(_0x2c5691[_0xa7f5('0x39')]){delete _0x2c5691[_0xa7f5('0x39')];}_0x13a717=_0x2c5691;})['finally'](function(){if(_0x13a717===null){_0x1e5d56[_0xa7f5('0x38')](_0x5a2b69);}else{if(_0x5a2b69===0x1f4){_0x1e5d56[_0xa7f5('0x2a')](_0x5a2b69)['send'](_0x13a717);}else{_0x1e5d56[_0xa7f5('0x2a')](_0x5a2b69)[_0xa7f5('0x2c')](_0x13a717);}}});};exports[_0xa7f5('0xbb')]=function(_0x2f5f60,_0x24c55e,_0x5f09c4){var _0x2eb2ad={};var _0x38adbf={};var _0x1551c5;var _0x1bf028;return db['SmsAccount'][_0xa7f5('0x6e')]({'where':{'id':_0x2f5f60[_0xa7f5('0x57')]['id']}})['then'](handleEntityNotFound(_0x24c55e,null))[_0xa7f5('0x21')](function(_0x17d4ea){if(_0x17d4ea){_0x1551c5=_0x17d4ea;_0x38adbf[_0xa7f5('0x58')]=_[_0xa7f5('0x44')](db[_0xa7f5('0xb7')]['rawAttributes']);_0x38adbf[_0xa7f5('0x43')]=_[_0xa7f5('0x44')](_0x2f5f60[_0xa7f5('0x43')]);_0x38adbf['filters']=_[_0xa7f5('0x46')](_0x38adbf[_0xa7f5('0x58')],_0x38adbf['query']);_0x2eb2ad[_0xa7f5('0x48')]=_[_0xa7f5('0x46')](_0x38adbf['model'],qs[_0xa7f5('0x47')](_0x2f5f60[_0xa7f5('0x43')]['fields']));_0x2eb2ad[_0xa7f5('0x48')]=_0x2eb2ad['attributes'][_0xa7f5('0x49')]?_0x2eb2ad['attributes']:_0x38adbf[_0xa7f5('0x58')];_0x2eb2ad[_0xa7f5('0x4c')]=qs[_0xa7f5('0x4d')](_0x2f5f60['query'][_0xa7f5('0x4d')]);_0x2eb2ad[_0xa7f5('0x4e')]=qs[_0xa7f5('0x45')](_[_0xa7f5('0x68')](_0x2f5f60[_0xa7f5('0x43')],_0x38adbf[_0xa7f5('0x45')]));if(_0x2f5f60['query']['filter']){_0x2eb2ad[_0xa7f5('0x4e')]=_[_0xa7f5('0x50')](_0x2eb2ad[_0xa7f5('0x4e')],{'$or':_[_0xa7f5('0x3d')](_0x2eb2ad[_0xa7f5('0x48')],function(_0x45ad7b){var _0x5a5078={};_0x5a5078[_0x45ad7b]={'$like':'%'+_0x2f5f60[_0xa7f5('0x43')]['filter']+'%'};return _0x5a5078;})});}_0x2eb2ad=_[_0xa7f5('0x50')]({},_0x2eb2ad,_0x2f5f60[_0xa7f5('0x52')]);return _0x1551c5[_0xa7f5('0xbb')](_0x2eb2ad);}})['then'](function(_0x24f5bf){if(_0x24f5bf){_0x1bf028=_0x24f5bf['length'];if(!_0x2f5f60[_0xa7f5('0x43')]['hasOwnProperty'](_0xa7f5('0x4b'))){_0x2eb2ad[_0xa7f5('0x2f')]=qs[_0xa7f5('0x2f')](_0x2f5f60[_0xa7f5('0x43')][_0xa7f5('0x2f')]);_0x2eb2ad[_0xa7f5('0x2d')]=qs[_0xa7f5('0x2d')](_0x2f5f60[_0xa7f5('0x43')][_0xa7f5('0x2d')]);}return _0x1551c5[_0xa7f5('0xbb')](_0x2eb2ad);}})['then'](function(_0x4d593e){if(_0x4d593e){return _0x4d593e?{'count':_0x1bf028,'rows':_0x4d593e}:null;}})[_0xa7f5('0x21')](respondWithResult(_0x24c55e,null))[_0xa7f5('0x55')](handleError(_0x24c55e,null));};exports[_0xa7f5('0xbc')]=function(_0x35863f,_0xb57cef,_0x508b8c){var _0x3b1be2={'raw':![],'where':{}};var _0x309e3f={};var _0x43ada9={'count':0x0,'rows':[]};return db[_0xa7f5('0x3e')][_0xa7f5('0x6e')]({'where':{'id':_0x35863f[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0xb57cef,null))[_0xa7f5('0x21')](function(_0x484e53){if(_0x484e53){_0x309e3f[_0xa7f5('0x58')]=_[_0xa7f5('0x44')](db['SmsInteraction'][_0xa7f5('0x3f')]);_0x309e3f[_0xa7f5('0x43')]=_[_0xa7f5('0x44')](_0x35863f[_0xa7f5('0x43')]);_0x309e3f[_0xa7f5('0x45')]=_[_0xa7f5('0x46')](_0x309e3f['model'],_0x309e3f[_0xa7f5('0x43')]);_0x3b1be2[_0xa7f5('0x48')]=_[_0xa7f5('0x46')](_0x309e3f['model'],qs['fields'](_0x35863f[_0xa7f5('0x43')]['fields']));_0x3b1be2[_0xa7f5('0x48')]=_0x3b1be2['attributes'][_0xa7f5('0x49')]?_0x3b1be2[_0xa7f5('0x48')]:_0x309e3f[_0xa7f5('0x58')];if(!_0x35863f['query']['hasOwnProperty']('nolimit')){_0x3b1be2[_0xa7f5('0x2f')]=qs[_0xa7f5('0x2f')](_0x35863f['query']['limit']);_0x3b1be2[_0xa7f5('0x2d')]=qs['offset'](_0x35863f[_0xa7f5('0x43')][_0xa7f5('0x2d')]);}_0x3b1be2['order']=qs['sort'](_0x35863f['query'][_0xa7f5('0x4d')]);_0x3b1be2[_0xa7f5('0x4e')]=qs['filters'](_['pick'](_0x35863f[_0xa7f5('0x43')],_0x309e3f[_0xa7f5('0x45')]));_0x3b1be2[_0xa7f5('0x4e')][_0xa7f5('0x65')]=_0x484e53['id'];if(_0x35863f[_0xa7f5('0x43')][_0xa7f5('0x4f')]){_0x3b1be2[_0xa7f5('0x4e')]=_['merge'](_0x3b1be2[_0xa7f5('0x4e')],{'$or':_[_0xa7f5('0x3d')](_0x3b1be2[_0xa7f5('0x48')],function(_0x423df0){var _0x2579bf={};_0x2579bf[_0x423df0]={'$like':'%'+_0x35863f['query'][_0xa7f5('0x4f')]+'%'};return _0x2579bf;})});}_0x3b1be2=_[_0xa7f5('0x50')]({},_0x3b1be2,_0x35863f[_0xa7f5('0x52')]);return db[_0xa7f5('0x9d')][_0xa7f5('0x30')]({'where':_0x3b1be2[_0xa7f5('0x4e')]})[_0xa7f5('0x21')](function(_0x1dfced){_0x43ada9[_0xa7f5('0x30')]=_0x1dfced;if(_0x35863f[_0xa7f5('0x43')][_0xa7f5('0x59')]){_0x3b1be2[_0xa7f5('0x69')]=[{'model':db[_0xa7f5('0x77')],'as':'Contact','required':![]},{'model':db[_0xa7f5('0xa6')],'as':_0xa7f5('0xbd'),'attributes':[_0xa7f5('0x39'),'fullname',_0xa7f5('0xbe')],'required':![]},{'model':db[_0xa7f5('0xbf')],'as':_0xa7f5('0xc0'),'attributes':['id',_0xa7f5('0x39'),_0xa7f5('0xc1')],'where':_0x35863f[_0xa7f5('0x43')][_0xa7f5('0xc2')]?{'id':_0x35863f['query']['tag']}:undefined,'required':_0x35863f['query'][_0xa7f5('0xc2')]?!![]:![]}];}return db[_0xa7f5('0x9d')][_0xa7f5('0x53')](_0x3b1be2);})[_0xa7f5('0x21')](function(_0x545a23){_0x43ada9[_0xa7f5('0x54')]=_0x545a23;return _0x43ada9;});}})['then'](respondWithFilteredResult(_0xb57cef,_0x3b1be2))['catch'](handleError(_0xb57cef,null));};exports['send']=function(_0x5eaaa8,_0x52266b,_0x23ec6a){var _0xca0d64,_0x283913,_0x5bce6f;if(_[_0xa7f5('0x91')](_0x5eaaa8[_0xa7f5('0x5b')]['body'])||_0x5eaaa8[_0xa7f5('0x5b')]['body']===''){throw new db['Sequelize'][(_0xa7f5('0x78'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xa7f5('0x91')](_0x5eaaa8[_0xa7f5('0x5b')]['to'])){throw new db['Sequelize']['ValidationError'](_0xa7f5('0xc3'));}_0xca0d64=_0x5eaaa8[_0xa7f5('0x5b')]['to'];return db[_0xa7f5('0x3e')]['find']({'where':{'id':_0x5eaaa8['params']['id']},'include':[{'model':db[_0xa7f5('0x99')],'as':'List','include':[{'model':db[_0xa7f5('0x77')],'as':_0xa7f5('0x9a'),'where':{'mobile':_0xca0d64},'limit':0x1,'order':[[_0xa7f5('0x7b'),_0xa7f5('0x9b')]]}]}]})[_0xa7f5('0x21')](handleEntityNotFound(_0x52266b,null))[_0xa7f5('0x21')](function(_0xe22622){if(_0xe22622&&_0xe22622[_0xa7f5('0xc4')]){_0x283913=_0xe22622['get']({'plain':!![]});if(_0x283913[_0xa7f5('0xc4')]&&_0x283913[_0xa7f5('0xc4')][_0xa7f5('0x9a')][_0xa7f5('0x49')]){return _0x283913[_0xa7f5('0xc4')][_0xa7f5('0x9a')][0x0];}return db[_0xa7f5('0x77')]['create'](_[_0xa7f5('0x1a')](_0x5eaaa8['body'],{'firstName':_0xca0d64,'mobile':_0xca0d64,'phone':_0xca0d64,'ListId':_0x283913['ListId']}));}})[_0xa7f5('0x21')](handleEntityNotFound(_0x52266b,null))[_0xa7f5('0x21')](function(_0x24e025){if(_0x24e025){_0x5bce6f=_0x24e025;return db['SmsInteraction']['find']({'where':{'ContactId':_0x5bce6f['id'],'closed':![],'SmsAccountId':_0x283913['id']}})['then'](function(_0x3631bb){if(_0x3631bb){return[_0x3631bb,![]];}return db[_0xa7f5('0x9d')][_0xa7f5('0x62')]({'UserId':_0x5eaaa8[_0xa7f5('0xc5')]['id'],'ContactId':_0x5bce6f['id'],'SmsAccountId':_0x283913['id'],'phone':_0xca0d64,'firstMsgDirection':_0xa7f5('0xc6'),'Messages':[_[_0xa7f5('0x50')](_0x5eaaa8[_0xa7f5('0x5b')],{'read':![],'body':_0x5eaaa8[_0xa7f5('0x5b')]['body'],'phone':_0xca0d64,'SmsAccountId':_0x283913['id'],'UserId':_0x5eaaa8[_0xa7f5('0xc5')]['id'],'ContactId':_0x5bce6f['id']})]},{'include':[{'model':db[_0xa7f5('0xa3')],'as':_0xa7f5('0xc7')}]})['then'](function(_0x430141){return[_0x430141,!![]];});});}})[_0xa7f5('0x9e')](function(_0xc348a6,_0x59d033){if(_0x59d033){return _0xc348a6;}return db[_0xa7f5('0xa3')][_0xa7f5('0x62')](_[_0xa7f5('0x50')](_0x5eaaa8['body'],{'read':![],'body':_0x5eaaa8['body'][_0xa7f5('0x5b')],'phone':_0xca0d64,'SmsAccountId':_0x283913['id'],'SmsInteractionId':_0xc348a6['id'],'UserId':_0x5eaaa8[_0xa7f5('0xc5')]['id'],'ContactId':_0x5bce6f['id']}))[_0xa7f5('0x21')](function(_0x14a87c){_0xc348a6['dataValues']['Messages']=[];_0xc348a6[_0xa7f5('0xc8')][_0xa7f5('0xc7')]['push'](_0x14a87c[_0xa7f5('0xc8')]);return _0xc348a6;});})[_0xa7f5('0x21')](respondWithResult(_0x52266b,null))[_0xa7f5('0x55')](handleError(_0x52266b,null));};exports[_0xa7f5('0x2a')]=function(_0x8422e5,_0x1ec632,_0x3f7aaf){if(_0x8422e5['body']['id']){delete _0x8422e5['body']['id'];}var _0x2d0905,_0x1073bd,_0x35ce18;return db['SmsAccount'][_0xa7f5('0x5a')]({'where':{'id':_0x8422e5[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0x1ec632,null))[_0xa7f5('0x21')](function(_0x5f50c2){if(_0x5f50c2){_0x35ce18=_0x5f50c2;logger[_0xa7f5('0x23')](_0xa7f5('0xab'),_0xa7f5('0x2a'),'received\x20delivery\x20report\x20from',_0x5f50c2[_0xa7f5('0x41')],util[_0xa7f5('0xc9')](_0x8422e5[_0xa7f5('0x5b')],{'showHidden':![],'depth':null}));switch(_0x5f50c2[_0xa7f5('0x41')]){case _0xa7f5('0xca'):if(_0x8422e5[_0xa7f5('0x5b')]['skebby_dispatch_id']&&_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x2a')]){_0x1073bd=_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x2a')];return db[_0xa7f5('0xa3')]['find']({'where':{'messageId':_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0xcb')]}});}break;case _0xa7f5('0xcc'):if(_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0xcd')]&&_0x8422e5[_0xa7f5('0x5b')]['statusInt']){_0x1073bd=_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0xce')];return db[_0xa7f5('0xa3')][_0xa7f5('0x5a')]({'where':{'messageId':_0x8422e5[_0xa7f5('0x5b')]['requestid']}});}break;case _0xa7f5('0x88'):if(_0x8422e5['body'][_0xa7f5('0xcf')]&&_0x8422e5[_0xa7f5('0x5b')]['status_code']){_0x1073bd=_0x8422e5[_0xa7f5('0x5b')]['status_code'];return db['SmsMessage'][_0xa7f5('0x5a')]({'where':{'messageId':_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0xcf')]}});}break;case _0xa7f5('0xd0'):var _0x39d549=_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x8b')][0x0];if(_0x39d549[_0xa7f5('0x84')]&&_0x39d549[_0xa7f5('0x2a')][_0xa7f5('0xd1')]==='DELIVERED'){_0x1073bd=_0x39d549['status'][_0xa7f5('0xd1')];return db['SmsMessage'][_0xa7f5('0x5a')]({'where':{'messageId':_0x39d549['messageId']}});}break;case _0xa7f5('0xd2'):if(_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x84')]&&_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x2a')]){_0x1073bd=_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x2a')];return db[_0xa7f5('0xa3')]['find']({'where':{'messageId':_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x84')]}});}break;case _0xa7f5('0xd3'):if(_0x8422e5[_0xa7f5('0x5b')][0x0]['message']['id']){_0x1073bd=_0x8422e5[_0xa7f5('0x5b')][0x0][_0xa7f5('0x41')];return db[_0xa7f5('0xa3')]['find']({'where':{'messageId':_0x8422e5['body'][0x0][_0xa7f5('0x27')]['id']}});}break;case'intelepeer':if(_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0xd4')]&&_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x2a')]){_0x1073bd=_0x8422e5[_0xa7f5('0x5b')]['status'];return db['SmsMessage']['find']({'where':{'messageId':_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0xd4')]}});}break;}}})[_0xa7f5('0x21')](handleEntityNotFound(_0x1ec632,null))['then'](function(_0x5dd73c){if(_0x5dd73c){_0x2d0905=_0x5dd73c;switch(_0x35ce18['type']){case'skebby':if(_0x1073bd==='DELIVERED'){return _0x2d0905['update']({'read':!![]});}else{logger[_0xa7f5('0x24')](_0xa7f5('0xab'),'status','skebby',util[_0xa7f5('0xc9')](_0x8422e5[_0xa7f5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xa7f5('0xcc'):if(_0x1073bd==='1'){return _0x2d0905['update']({'read':!![]});}else{logger[_0xa7f5('0x24')](_0xa7f5('0xab'),_0xa7f5('0x2a'),'skebby',util['inspect'](_0x8422e5[_0xa7f5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xa7f5('0x88'):if(!_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0xd5')]&&_0x1073bd>=0xc8&&_0x1073bd<=0xce){return _0x2d0905[_0xa7f5('0x34')]({'read':!![]});}else{logger[_0xa7f5('0x24')](_0xa7f5('0xab'),'status',_0xa7f5('0x88'),util[_0xa7f5('0xc9')](_0x8422e5['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0xcc9514=_0x8422e5[_0xa7f5('0x5b')][_0xa7f5('0x8b')][0x0];if(_0xcc9514[_0xa7f5('0x2a')][_0xa7f5('0xd1')]===_0xa7f5('0xd6')){return _0x2d0905[_0xa7f5('0x34')]({'read':!![]});}else{logger[_0xa7f5('0x24')](_0xa7f5('0xab'),_0xa7f5('0x2a'),_0xa7f5('0xd0'),util[_0xa7f5('0xc9')](_0x8422e5[_0xa7f5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xa7f5('0xd2'):if(_0x1073bd==_0xa7f5('0xd7')||_0x1073bd==_0xa7f5('0xd8')){return _0x2d0905[_0xa7f5('0x34')]({'read':!![]});}else{logger[_0xa7f5('0x24')](_0xa7f5('0xab'),_0xa7f5('0x2a'),'clickatell',util[_0xa7f5('0xc9')](_0x8422e5[_0xa7f5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xa7f5('0xd3'):if(_0x1073bd==_0xa7f5('0xd9')){return _0x2d0905['update']({'read':!![]});}else{logger['error'](_0xa7f5('0xab'),'status','bandwidth',util[_0xa7f5('0xc9')](_0x8422e5[_0xa7f5('0x5b')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x1073bd===_0xa7f5('0xda')||_0x1073bd===_0xa7f5('0xdb')){return _0x2d0905['update']({'read':!![]});}else{logger[_0xa7f5('0x24')](_0xa7f5('0xab'),_0xa7f5('0x2a'),'intelepeer',util['inspect'](_0x8422e5['body'],{'showHidden':![],'depth':null}));}break;}return _0x2d0905;}})[_0xa7f5('0x21')](respondWithResult(_0x1ec632,null))['catch'](handleError(_0x1ec632,null));};exports[_0xa7f5('0xdc')]=function(_0x59ef27,_0xe8e4aa,_0x166de8){var _0x1bc979,_0x3ed24f,_0x1a2dde;return db[_0xa7f5('0x3e')][_0xa7f5('0x5a')]({'where':{'id':_0x59ef27[_0xa7f5('0x57')]['id']}})['then'](handleEntityNotFound(_0xe8e4aa,null))[_0xa7f5('0x21')](function(_0x1011c0){if(_0x1011c0){_0x1a2dde=_0x1011c0;logger[_0xa7f5('0x23')](_0xa7f5('0xab'),_0xa7f5('0x2a'),_0xa7f5('0xdd'),_0x1011c0['type'],util['inspect'](_0x59ef27[_0xa7f5('0x43')],{'showHidden':![],'depth':null}));switch(_0x1011c0[_0xa7f5('0x41')]){case'csc':if(_0x59ef27['query'][_0xa7f5('0xde')]&&_0x59ef27[_0xa7f5('0x43')][_0xa7f5('0xdf')]){_0x3ed24f=_0x59ef27[_0xa7f5('0x43')][_0xa7f5('0xdf')];return db['SmsMessage'][_0xa7f5('0x5a')]({'where':{'messageId':_0x59ef27['query']['message-id']}});}break;}}})[_0xa7f5('0x21')](handleEntityNotFound(_0xe8e4aa,null))[_0xa7f5('0x21')](function(_0x407c43){if(_0x407c43){_0x1bc979=_0x407c43;switch(_0x1a2dde[_0xa7f5('0x41')]){case'csc':if(_0x3ed24f==='2'||_0x3ed24f==='6'){return _0x1bc979['update']({'read':!![]});}else{logger[_0xa7f5('0x24')](_0xa7f5('0xab'),_0xa7f5('0x2a'),_0xa7f5('0x8c'),util['inspect'](_0x59ef27[_0xa7f5('0x43')],{'showHidden':![],'depth':null}));};break;}return _0x1bc979;}})[_0xa7f5('0x21')](respondWithResult(_0xe8e4aa,null))[_0xa7f5('0x55')](handleError(_0xe8e4aa,null));};exports[_0xa7f5('0xe0')]=function(_0x252dfe,_0x3ac0ff,_0x929af9){return db[_0xa7f5('0x3e')][_0xa7f5('0x5a')]({'where':{'id':_0x252dfe[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0x3ac0ff,null))[_0xa7f5('0x21')](function(_0x217403){if(_0x217403){return _0x217403[_0xa7f5('0xe0')](_0x252dfe['body'][_0xa7f5('0x6a')],_[_0xa7f5('0xe1')](_0x252dfe['body'],[_0xa7f5('0x6a'),'id'])||{})[_0xa7f5('0x9e')](function(_0x50af79){for(var _0xad75d5=0x0;_0xad75d5<_0x252dfe['body']['ids']['length'];_0xad75d5+=0x1){socket['emit'](_0xa7f5('0xe2'),{'UserId':Number(_0x252dfe[_0xa7f5('0x5b')][_0xa7f5('0x6a')][_0xad75d5]),'SmsAccountId':Number(_0x252dfe[_0xa7f5('0x57')]['id'])});}return _0x50af79;});}})[_0xa7f5('0x21')](respondWithResult(_0x3ac0ff,null))[_0xa7f5('0x55')](handleError(_0x3ac0ff,null));};exports['removeAgents']=function(_0x5c9fc0,_0x58f1d9,_0x420d76){return db[_0xa7f5('0x3e')][_0xa7f5('0x5a')]({'where':{'id':_0x5c9fc0[_0xa7f5('0x57')]['id']}})['then'](handleEntityNotFound(_0x58f1d9,null))[_0xa7f5('0x21')](function(_0x5e5d58){if(_0x5e5d58){return _0x5e5d58[_0xa7f5('0xe3')](_0x5c9fc0[_0xa7f5('0x43')][_0xa7f5('0x6a')])[_0xa7f5('0x21')](function(){if(_[_0xa7f5('0xe4')](_0x5c9fc0['query']['ids'])){for(var _0x10340f=0x0;_0x10340f<_0x5c9fc0['query'][_0xa7f5('0x6a')][_0xa7f5('0x49')];_0x10340f+=0x1){socket['emit'](_0xa7f5('0xe5'),{'UserId':Number(_0x5c9fc0[_0xa7f5('0x43')][_0xa7f5('0x6a')][_0x10340f]),'SmsAccountId':Number(_0x5c9fc0[_0xa7f5('0x57')]['id'])});}}else{socket[_0xa7f5('0xe6')](_0xa7f5('0xe5'),{'UserId':Number(_0x5c9fc0[_0xa7f5('0x43')][_0xa7f5('0x6a')]),'SmsAccountId':Number(_0x5c9fc0[_0xa7f5('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x58f1d9,null))['catch'](handleError(_0x58f1d9,null));};exports[_0xa7f5('0xe7')]=function(_0x3eeef1,_0x3fd83e,_0x3b4f82){var _0x430326={};var _0x153066={};var _0xfbb3c9;var _0x534760;return db[_0xa7f5('0x3e')][_0xa7f5('0x6e')]({'where':{'id':_0x3eeef1[_0xa7f5('0x57')]['id']}})[_0xa7f5('0x21')](handleEntityNotFound(_0x3fd83e,null))['then'](function(_0x5ec69e){if(_0x5ec69e){_0xfbb3c9=_0x5ec69e;_0x153066['model']=_[_0xa7f5('0x44')](db['User']['rawAttributes']);_0x153066[_0xa7f5('0x43')]=_[_0xa7f5('0x44')](_0x3eeef1['query']);_0x153066[_0xa7f5('0x45')]=_['intersection'](_0x153066[_0xa7f5('0x58')],_0x153066[_0xa7f5('0x43')]);_0x430326[_0xa7f5('0x48')]=_[_0xa7f5('0x46')](_0x153066[_0xa7f5('0x58')],qs[_0xa7f5('0x47')](_0x3eeef1[_0xa7f5('0x43')][_0xa7f5('0x47')]));_0x430326[_0xa7f5('0x48')]=_0x430326['attributes'][_0xa7f5('0x49')]?_0x430326[_0xa7f5('0x48')]:_0x153066[_0xa7f5('0x58')];_0x430326[_0xa7f5('0x4c')]=qs['sort'](_0x3eeef1[_0xa7f5('0x43')][_0xa7f5('0x4d')]);_0x430326[_0xa7f5('0x4e')]=qs[_0xa7f5('0x45')](_[_0xa7f5('0x68')](_0x3eeef1['query'],_0x153066['filters']));if(_0x3eeef1[_0xa7f5('0x43')]['filter']){_0x430326['where']=_['merge'](_0x430326[_0xa7f5('0x4e')],{'$or':_['map'](_0x430326[_0xa7f5('0x48')],function(_0x1c0c51){var _0x4c684b={};_0x4c684b[_0x1c0c51]={'$like':'%'+_0x3eeef1['query'][_0xa7f5('0x4f')]+'%'};return _0x4c684b;})});}_0x430326=_[_0xa7f5('0x50')]({},_0x430326,_0x3eeef1[_0xa7f5('0x52')]);return _0xfbb3c9['getAgents'](_0x430326);}})['then'](function(_0x1eced7){if(_0x1eced7){_0x534760=_0x1eced7[_0xa7f5('0x49')];if(!_0x3eeef1[_0xa7f5('0x43')][_0xa7f5('0x4a')](_0xa7f5('0x4b'))){_0x430326[_0xa7f5('0x2f')]=qs[_0xa7f5('0x2f')](_0x3eeef1[_0xa7f5('0x43')][_0xa7f5('0x2f')]);_0x430326[_0xa7f5('0x2d')]=qs[_0xa7f5('0x2d')](_0x3eeef1[_0xa7f5('0x43')][_0xa7f5('0x2d')]);}return _0xfbb3c9[_0xa7f5('0xe7')](_0x430326);}})['then'](function(_0x11ec32){if(_0x11ec32){return _0x11ec32?{'count':_0x534760,'rows':_0x11ec32}:null;}})[_0xa7f5('0x21')](respondWithResult(_0x3fd83e,null))[_0xa7f5('0x55')](handleError(_0x3fd83e,null));};
\ No newline at end of file
+var _0x14d0=['asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','mobile','Body','messageId','from','sender','text','connectel','clicksend','message_id','plivo','From','Text','MessageUUID','infobip','results','csc','fromNumber','replyMessageId','bandwidth','intelepeer','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','ListId','Contacts','DESC','list','omit','SmsInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','SmsApplication','bulkCreate','findAndCountAll','sendStatus','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','to\x20is\x20mandatory','CmList','List','SmsMessage','spread','dataValues','Messages','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','requestid','statusInt','status_code','groupName','clickatell','redif','DELIVERED','error_code','message-delivered','DELIVRD','ACCEPTD','statusGet','state','addAgents','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','limit','undefined','count','Content-Range','reject','update','then','get','SmsAccounts','UserProfileResource','destroy','stack','name','index','map','SmsAccount','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','include','rows','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','Pause','mandatoryDispositionPause','describe','addDisposition','SmsAccountId','Disposition','getDispositions','removeDispositions','ids','CannedAnswer','getAnswers','findOne','findAll','removeAnswers','sms','Applications','account','applications','priority'];(function(_0x39e1f1,_0x2a4d05){var _0x507576=function(_0xd48a47){while(--_0xd48a47){_0x39e1f1['push'](_0x39e1f1['shift']());}};_0x507576(++_0x2a4d05);}(_0x14d0,0x70));var _0x014d=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x14d0[_0x255d5b];return _0x3e141a;};'use strict';var emlformat=require(_0x014d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x014d('0x1'));var jsonpatch=require(_0x014d('0x2'));var rp=require('request-promise');var moment=require(_0x014d('0x3'));var BPromise=require(_0x014d('0x4'));var Mustache=require(_0x014d('0x5'));var util=require(_0x014d('0x6'));var path=require(_0x014d('0x7'));var sox=require('sox');var csv=require(_0x014d('0x8'));var ejs=require(_0x014d('0x9'));var fs=require('fs');var fs_extra=require(_0x014d('0xa'));var _=require(_0x014d('0xb'));var squel=require(_0x014d('0xc'));var crypto=require(_0x014d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x014d('0xe'));var toCsv=require(_0x014d('0x8'));var querystring=require(_0x014d('0xf'));var Papa=require(_0x014d('0x10'));var Redis=require(_0x014d('0x11'));var authService=require(_0x014d('0x12'));var qs=require(_0x014d('0x13'));var as=require(_0x014d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x014d('0x15'))(_0x014d('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x014d('0x17'));var db=require(_0x014d('0x18'))['db'];config[_0x014d('0x19')]=_[_0x014d('0x1a')](config[_0x014d('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x014d('0x1b'))(new Redis(config['redis']));require(_0x014d('0x1c'))[_0x014d('0x1d')](socket);var jayson=require(_0x014d('0x1e'));var client=jayson[_0x014d('0x1f')][_0x014d('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x494652,_0x3df6fc,_0x39bf9e,_0x2cf261){return new BPromise(function(_0x1464b4,_0x4dfb40){var _0x414d0d=_0x2cf261||client;return _0x414d0d[_0x014d('0x21')](_0x494652,_0x39bf9e)['then'](function(_0x51b317){logger[_0x014d('0x22')](_0x014d('0x23'),_0x3df6fc,_0x014d('0x24'));logger[_0x014d('0x25')](_0x014d('0x26'),_0x3df6fc,'request\x20sent',JSON[_0x014d('0x27')](_0x51b317));if(_0x51b317[_0x014d('0x28')]){if(_0x51b317['error'][_0x014d('0x29')]===0x1f4){logger[_0x014d('0x28')]('SmsAccount,\x20%s,\x20%s',_0x3df6fc,_0x51b317['error'][_0x014d('0x2a')]);return _0x4dfb40(_0x51b317[_0x014d('0x28')][_0x014d('0x2a')]);}logger[_0x014d('0x28')](_0x014d('0x23'),_0x3df6fc,_0x51b317[_0x014d('0x28')][_0x014d('0x2a')]);return _0x1464b4(_0x51b317['error'][_0x014d('0x2a')]);}else{logger['info'](_0x014d('0x23'),_0x3df6fc,_0x014d('0x24'));_0x1464b4(_0x51b317[_0x014d('0x2b')][_0x014d('0x2a')]);}})[_0x014d('0x2c')](function(_0x505541){logger[_0x014d('0x28')](_0x014d('0x23'),_0x3df6fc,_0x505541);_0x4dfb40(_0x505541);});});}function respondWithStatusCode(_0x33a55f,_0x328bba){_0x328bba=_0x328bba||0xcc;return function(_0x400e0c){if(_0x400e0c){return _0x33a55f['sendStatus'](_0x328bba);}return _0x33a55f[_0x014d('0x2d')](_0x328bba)[_0x014d('0x2e')]();};}function respondWithResult(_0x10ce01,_0x42d671){_0x42d671=_0x42d671||0xc8;return function(_0x533fa5){if(_0x533fa5){return _0x10ce01[_0x014d('0x2d')](_0x42d671)[_0x014d('0x2f')](_0x533fa5);}};}function respondWithFilteredResult(_0x20e749,_0x55bfc1){return function(_0x2288f1){if(_0x2288f1){var _0x1eb5b6=typeof _0x55bfc1[_0x014d('0x30')]==='undefined'&&typeof _0x55bfc1[_0x014d('0x31')]===_0x014d('0x32');var _0x1d96d0=_0x2288f1['count'];var _0x6e7648=_0x1eb5b6?0x0:_0x55bfc1[_0x014d('0x30')];var _0x35239e=_0x1eb5b6?_0x2288f1[_0x014d('0x33')]:_0x55bfc1[_0x014d('0x30')]+_0x55bfc1['limit'];var _0x3a4d85;if(_0x35239e>=_0x1d96d0){_0x35239e=_0x1d96d0;_0x3a4d85=0xc8;}else{_0x3a4d85=0xce;}_0x20e749[_0x014d('0x2d')](_0x3a4d85);return _0x20e749['set'](_0x014d('0x34'),_0x6e7648+'-'+_0x35239e+'/'+_0x1d96d0)['json'](_0x2288f1);}return null;};}function patchUpdates(_0x44cd2d){return function(_0x208c8b){try{jsonpatch['apply'](_0x208c8b,_0x44cd2d,!![]);}catch(_0x4f27f6){return BPromise[_0x014d('0x35')](_0x4f27f6);}return _0x208c8b['save']();};}function saveUpdates(_0x53f5cf,_0x45a69c){return function(_0x51cfb8){if(_0x51cfb8){return _0x51cfb8[_0x014d('0x36')](_0x53f5cf)['then'](function(_0xb98851){return _0xb98851;});}return null;};}function removeEntity(_0x2c5340,_0x2dfb28){return function(_0x15791d){if(_0x15791d){return _0x15791d['destroy']()[_0x014d('0x37')](function(){var _0xe54e1c=_0x15791d[_0x014d('0x38')]({'plain':!![]});var _0x3415ed=_0x014d('0x39');return db[_0x014d('0x3a')][_0x014d('0x3b')]({'where':{'type':_0x3415ed,'resourceId':_0xe54e1c['id']}})[_0x014d('0x37')](function(){return _0x15791d;});})[_0x014d('0x37')](function(){_0x2c5340[_0x014d('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58ce53,_0x22913f){return function(_0x2d9e93){if(!_0x2d9e93){_0x58ce53['sendStatus'](0x194);}return _0x2d9e93;};}function handleError(_0x502241,_0x13849d){_0x13849d=_0x13849d||0x1f4;return function(_0x643a05){logger[_0x014d('0x28')](_0x643a05[_0x014d('0x3c')]);if(_0x643a05[_0x014d('0x3d')]){delete _0x643a05[_0x014d('0x3d')];}_0x502241[_0x014d('0x2d')](_0x13849d)['send'](_0x643a05);};}exports[_0x014d('0x3e')]=function(_0x43a16d,_0x3077dd){var _0x5652ea={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x2fec4c={},_0x137510={'count':0x0,'rows':[]};var _0x23e570=_[_0x014d('0x3f')](db[_0x014d('0x40')][_0x014d('0x41')],function(_0x260b5c){return{'name':_0x260b5c[_0x014d('0x42')],'type':_0x260b5c['type']['key']};});_0x2fec4c[_0x014d('0x43')]=_[_0x014d('0x3f')](_0x23e570,_0x014d('0x3d'));_0x2fec4c[_0x014d('0x44')]=_[_0x014d('0x45')](_0x43a16d[_0x014d('0x44')]);_0x2fec4c[_0x014d('0x46')]=_[_0x014d('0x47')](_0x2fec4c[_0x014d('0x43')],_0x2fec4c[_0x014d('0x44')]);_0x5652ea['attributes']=_[_0x014d('0x47')](_0x2fec4c[_0x014d('0x43')],qs[_0x014d('0x48')](_0x43a16d[_0x014d('0x44')][_0x014d('0x48')]));_0x5652ea[_0x014d('0x49')]=_0x5652ea[_0x014d('0x49')][_0x014d('0x4a')]?_0x5652ea[_0x014d('0x49')]:_0x2fec4c[_0x014d('0x43')];if(!_0x43a16d[_0x014d('0x44')][_0x014d('0x4b')](_0x014d('0x4c'))){_0x5652ea[_0x014d('0x31')]=qs[_0x014d('0x31')](_0x43a16d[_0x014d('0x44')][_0x014d('0x31')]);_0x5652ea[_0x014d('0x30')]=qs[_0x014d('0x30')](_0x43a16d[_0x014d('0x44')][_0x014d('0x30')]);}_0x5652ea[_0x014d('0x4d')]=qs[_0x014d('0x4e')](_0x43a16d[_0x014d('0x44')][_0x014d('0x4e')]);_0x5652ea[_0x014d('0x4f')]=qs[_0x014d('0x46')](_[_0x014d('0x50')](_0x43a16d[_0x014d('0x44')],_0x2fec4c[_0x014d('0x46')]),_0x23e570);if(_0x43a16d[_0x014d('0x44')][_0x014d('0x51')]){_0x5652ea[_0x014d('0x4f')]=_[_0x014d('0x52')](_0x5652ea['where'],{'$or':_[_0x014d('0x3f')](_0x23e570,function(_0x1bdf2f){if(_0x1bdf2f[_0x014d('0x53')]!=='VIRTUAL'){var _0x2bbda3={};_0x2bbda3[_0x1bdf2f[_0x014d('0x3d')]]={'$like':'%'+_0x43a16d[_0x014d('0x44')][_0x014d('0x51')]+'%'};return _0x2bbda3;}})});}_0x5652ea=_[_0x014d('0x52')]({},_0x5652ea,_0x43a16d[_0x014d('0x54')]);var _0xfe8547={'where':_0x5652ea['where']};return db[_0x014d('0x40')][_0x014d('0x33')](_0xfe8547)[_0x014d('0x37')](function(_0x2d7f49){_0x137510[_0x014d('0x33')]=_0x2d7f49;if(_0x43a16d[_0x014d('0x44')]['includeAll']){_0x5652ea[_0x014d('0x55')]=[{'all':!![]}];}return db[_0x014d('0x40')]['findAll'](_0x5652ea);})['then'](function(_0x145525){_0x137510[_0x014d('0x56')]=_0x145525;return _0x137510;})['then'](respondWithFilteredResult(_0x3077dd,_0x5652ea))[_0x014d('0x2c')](handleError(_0x3077dd,null));};exports[_0x014d('0x57')]=function(_0x1371cf,_0x43affe){var _0x45e9e7={'raw':![],'where':{'id':_0x1371cf['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x13c4fd={};_0x13c4fd[_0x014d('0x43')]=_[_0x014d('0x45')](db['SmsAccount'][_0x014d('0x41')]);_0x13c4fd['query']=_[_0x014d('0x45')](_0x1371cf['query']);_0x13c4fd['filters']=_['intersection'](_0x13c4fd[_0x014d('0x43')],_0x13c4fd[_0x014d('0x44')]);_0x45e9e7[_0x014d('0x49')]=_[_0x014d('0x47')](_0x13c4fd[_0x014d('0x43')],qs['fields'](_0x1371cf['query'][_0x014d('0x48')]));_0x45e9e7[_0x014d('0x49')]=_0x45e9e7[_0x014d('0x49')][_0x014d('0x4a')]?_0x45e9e7[_0x014d('0x49')]:_0x13c4fd[_0x014d('0x43')];if(_0x1371cf['query'][_0x014d('0x58')]){_0x45e9e7[_0x014d('0x55')]=[{'all':!![]}];}_0x45e9e7=_[_0x014d('0x52')]({},_0x45e9e7,_0x1371cf[_0x014d('0x54')]);return db['SmsAccount'][_0x014d('0x59')](_0x45e9e7)['then'](handleEntityNotFound(_0x43affe,null))['then'](respondWithResult(_0x43affe,null))['catch'](handleError(_0x43affe,null));};exports['create']=function(_0x16919d,_0x5822f5){return db['SmsAccount'][_0x014d('0x5a')](_0x16919d[_0x014d('0x5b')],{})[_0x014d('0x37')](function(_0x5610d2){var _0x1d2ad4=_0x16919d[_0x014d('0x5c')][_0x014d('0x38')]({'plain':!![]});if(!_0x1d2ad4)throw new Error(_0x014d('0x5d'));if(_0x1d2ad4[_0x014d('0x5e')]===_0x014d('0x5c')){var _0x15faa1=_0x5610d2[_0x014d('0x38')]({'plain':!![]});var _0x321fcd=_0x014d('0x39');return db['UserProfileSection'][_0x014d('0x59')]({'where':{'name':_0x321fcd,'userProfileId':_0x1d2ad4['userProfileId']},'raw':!![]})[_0x014d('0x37')](function(_0x21948b){if(_0x21948b&&_0x21948b[_0x014d('0x5f')]===0x0){return db[_0x014d('0x3a')]['create']({'name':_0x15faa1[_0x014d('0x3d')],'resourceId':_0x15faa1['id'],'type':_0x21948b['name'],'sectionId':_0x21948b['id']},{})['then'](function(){return _0x5610d2;});}else{return _0x5610d2;}})[_0x014d('0x2c')](function(_0x3aebb3){logger[_0x014d('0x28')](_0x014d('0x60'),_0x3aebb3);throw _0x3aebb3;});}return _0x5610d2;})[_0x014d('0x37')](respondWithResult(_0x5822f5,0xc9))[_0x014d('0x2c')](handleError(_0x5822f5,null));};exports['update']=function(_0x252810,_0x55f21d){if(_0x252810[_0x014d('0x5b')]['id']){delete _0x252810[_0x014d('0x5b')]['id'];}return db[_0x014d('0x40')][_0x014d('0x59')]({'where':{'id':_0x252810[_0x014d('0x61')]['id']},'include':[{'model':db[_0x014d('0x62')],'as':_0x014d('0x63')}]})[_0x014d('0x37')](handleEntityNotFound(_0x55f21d,null))[_0x014d('0x37')](saveUpdates(_0x252810[_0x014d('0x5b')],null))[_0x014d('0x37')](respondWithResult(_0x55f21d,null))['catch'](handleError(_0x55f21d,null));};exports[_0x014d('0x3b')]=function(_0x35d17a,_0x5874b9){return db[_0x014d('0x40')][_0x014d('0x59')]({'where':{'id':_0x35d17a[_0x014d('0x61')]['id']}})['then'](handleEntityNotFound(_0x5874b9,null))['then'](removeEntity(_0x5874b9,null))[_0x014d('0x2c')](handleError(_0x5874b9,null));};exports['describe']=function(_0x208e3c,_0x2cd7dc){return db[_0x014d('0x40')][_0x014d('0x64')]()[_0x014d('0x37')](respondWithResult(_0x2cd7dc,null))[_0x014d('0x2c')](handleError(_0x2cd7dc,null));};exports[_0x014d('0x65')]=function(_0x3de464,_0x344009,_0x4a6f52){if(_0x3de464[_0x014d('0x5b')]['id']){delete _0x3de464['body']['id'];}return db[_0x014d('0x40')]['find']({'where':{'id':_0x3de464['params']['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x344009,null))['then'](function(_0x219f44){if(_0x219f44){_0x3de464['body'][_0x014d('0x66')]=_0x219f44['id'];return db[_0x014d('0x67')]['create'](_0x3de464[_0x014d('0x5b')]);}})[_0x014d('0x37')](respondWithResult(_0x344009,null))[_0x014d('0x2c')](handleError(_0x344009,null));};exports[_0x014d('0x68')]=function(_0x4a1d3e,_0x52678b,_0xe6947d){var _0x72e08c={'raw':![],'where':{}};var _0xc33f40={};var _0x5b679a={'count':0x0,'rows':[]};return db[_0x014d('0x40')]['findOne']({'where':{'id':_0x4a1d3e['params']['id']}})['then'](handleEntityNotFound(_0x52678b,null))[_0x014d('0x37')](function(_0x8454ba){if(_0x8454ba){_0xc33f40[_0x014d('0x43')]=_[_0x014d('0x45')](db[_0x014d('0x67')][_0x014d('0x41')]);_0xc33f40[_0x014d('0x44')]=_['keys'](_0x4a1d3e[_0x014d('0x44')]);_0xc33f40[_0x014d('0x46')]=_[_0x014d('0x47')](_0xc33f40['model'],_0xc33f40[_0x014d('0x44')]);_0x72e08c[_0x014d('0x49')]=_[_0x014d('0x47')](_0xc33f40[_0x014d('0x43')],qs[_0x014d('0x48')](_0x4a1d3e[_0x014d('0x44')][_0x014d('0x48')]));_0x72e08c[_0x014d('0x49')]=_0x72e08c[_0x014d('0x49')][_0x014d('0x4a')]?_0x72e08c[_0x014d('0x49')]:_0xc33f40['model'];if(!_0x4a1d3e[_0x014d('0x44')][_0x014d('0x4b')]('nolimit')){_0x72e08c[_0x014d('0x31')]=qs[_0x014d('0x31')](_0x4a1d3e[_0x014d('0x44')][_0x014d('0x31')]);_0x72e08c[_0x014d('0x30')]=qs[_0x014d('0x30')](_0x4a1d3e['query']['offset']);}_0x72e08c[_0x014d('0x4d')]=qs[_0x014d('0x4e')](_0x4a1d3e[_0x014d('0x44')][_0x014d('0x4e')]);_0x72e08c[_0x014d('0x4f')]=qs[_0x014d('0x46')](_[_0x014d('0x50')](_0x4a1d3e[_0x014d('0x44')],_0xc33f40[_0x014d('0x46')]));_0x72e08c[_0x014d('0x4f')][_0x014d('0x66')]=_0x8454ba['id'];if(_0x4a1d3e[_0x014d('0x44')][_0x014d('0x51')]){_0x72e08c[_0x014d('0x4f')]=_[_0x014d('0x52')](_0x72e08c['where'],{'$or':_[_0x014d('0x3f')](_0x72e08c[_0x014d('0x49')],function(_0x5e1b2b){var _0x521231={};_0x521231[_0x5e1b2b]={'$like':'%'+_0x4a1d3e[_0x014d('0x44')]['filter']+'%'};return _0x521231;})});}_0x72e08c=_['merge']({},_0x72e08c,_0x4a1d3e[_0x014d('0x54')]);return db['Disposition'][_0x014d('0x33')]({'where':_0x72e08c[_0x014d('0x4f')]})[_0x014d('0x37')](function(_0x185402){_0x5b679a[_0x014d('0x33')]=_0x185402;if(_0x4a1d3e[_0x014d('0x44')][_0x014d('0x58')]){_0x72e08c[_0x014d('0x55')]=[{'all':!![]}];}return db[_0x014d('0x67')]['findAll'](_0x72e08c);})['then'](function(_0x386302){_0x5b679a[_0x014d('0x56')]=_0x386302;return _0x5b679a;});}})['then'](respondWithFilteredResult(_0x52678b,_0x72e08c))['catch'](handleError(_0x52678b,null));};exports[_0x014d('0x69')]=function(_0x55130d,_0x49e91b,_0x460062){return db['SmsAccount'][_0x014d('0x59')]({'where':{'id':_0x55130d[_0x014d('0x61')]['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x49e91b,null))[_0x014d('0x37')](function(_0x463d8d){if(_0x463d8d){return _0x463d8d['removeDispositions'](_0x55130d[_0x014d('0x44')][_0x014d('0x6a')]);}})[_0x014d('0x37')](respondWithStatusCode(_0x49e91b,null))[_0x014d('0x2c')](handleError(_0x49e91b,null));};exports['addAnswer']=function(_0x36ce03,_0x30e70f,_0x565ef6){if(_0x36ce03['body']['id']){delete _0x36ce03[_0x014d('0x5b')]['id'];}return db['SmsAccount'][_0x014d('0x59')]({'where':{'id':_0x36ce03['params']['id']}})['then'](handleEntityNotFound(_0x30e70f,null))['then'](function(_0x18fd7e){if(_0x18fd7e){_0x36ce03['body']['SmsAccountId']=_0x18fd7e['id'];return db[_0x014d('0x6b')][_0x014d('0x5a')](_0x36ce03[_0x014d('0x5b')]);}})['then'](respondWithResult(_0x30e70f,null))[_0x014d('0x2c')](handleError(_0x30e70f,null));};exports[_0x014d('0x6c')]=function(_0xe6b02,_0x47e195,_0x1a8782){var _0x12961e={'raw':![],'where':{}};var _0x277d29={};var _0xf13de={'count':0x0,'rows':[]};return db['SmsAccount'][_0x014d('0x6d')]({'where':{'id':_0xe6b02[_0x014d('0x61')]['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x47e195,null))['then'](function(_0x1c6c8c){if(_0x1c6c8c){_0x277d29[_0x014d('0x43')]=_[_0x014d('0x45')](db['CannedAnswer'][_0x014d('0x41')]);_0x277d29[_0x014d('0x44')]=_[_0x014d('0x45')](_0xe6b02[_0x014d('0x44')]);_0x277d29[_0x014d('0x46')]=_['intersection'](_0x277d29[_0x014d('0x43')],_0x277d29[_0x014d('0x44')]);_0x12961e[_0x014d('0x49')]=_[_0x014d('0x47')](_0x277d29[_0x014d('0x43')],qs[_0x014d('0x48')](_0xe6b02[_0x014d('0x44')]['fields']));_0x12961e[_0x014d('0x49')]=_0x12961e[_0x014d('0x49')]['length']?_0x12961e[_0x014d('0x49')]:_0x277d29[_0x014d('0x43')];if(!_0xe6b02[_0x014d('0x44')][_0x014d('0x4b')]('nolimit')){_0x12961e[_0x014d('0x31')]=qs[_0x014d('0x31')](_0xe6b02[_0x014d('0x44')]['limit']);_0x12961e['offset']=qs[_0x014d('0x30')](_0xe6b02['query'][_0x014d('0x30')]);}_0x12961e[_0x014d('0x4d')]=qs[_0x014d('0x4e')](_0xe6b02[_0x014d('0x44')][_0x014d('0x4e')]);_0x12961e['where']=qs[_0x014d('0x46')](_[_0x014d('0x50')](_0xe6b02[_0x014d('0x44')],_0x277d29[_0x014d('0x46')]));_0x12961e[_0x014d('0x4f')][_0x014d('0x66')]=_0x1c6c8c['id'];if(_0xe6b02[_0x014d('0x44')][_0x014d('0x51')]){_0x12961e['where']=_[_0x014d('0x52')](_0x12961e[_0x014d('0x4f')],{'$or':_['map'](_0x12961e[_0x014d('0x49')],function(_0x51d855){var _0x109592={};_0x109592[_0x51d855]={'$like':'%'+_0xe6b02[_0x014d('0x44')]['filter']+'%'};return _0x109592;})});}_0x12961e=_[_0x014d('0x52')]({},_0x12961e,_0xe6b02[_0x014d('0x54')]);return db[_0x014d('0x6b')][_0x014d('0x33')]({'where':_0x12961e[_0x014d('0x4f')]})['then'](function(_0x1e6eaf){_0xf13de['count']=_0x1e6eaf;if(_0xe6b02[_0x014d('0x44')][_0x014d('0x58')]){_0x12961e['include']=[{'all':!![]}];}return db[_0x014d('0x6b')][_0x014d('0x6e')](_0x12961e);})['then'](function(_0x4df658){_0xf13de[_0x014d('0x56')]=_0x4df658;return _0xf13de;});}})[_0x014d('0x37')](respondWithFilteredResult(_0x47e195,_0x12961e))[_0x014d('0x2c')](handleError(_0x47e195,null));};exports[_0x014d('0x6f')]=function(_0x1de3fc,_0x6ef0f,_0x5204b9){return db[_0x014d('0x40')][_0x014d('0x59')]({'where':{'id':_0x1de3fc['params']['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x6ef0f,null))['then'](function(_0x2019c1){if(_0x2019c1){return _0x2019c1[_0x014d('0x6f')](_0x1de3fc[_0x014d('0x44')][_0x014d('0x6a')]);}})[_0x014d('0x37')](respondWithStatusCode(_0x6ef0f,null))[_0x014d('0x2c')](handleError(_0x6ef0f,null));};exports['notify']=function(_0x31b014,_0x1179aa,_0x166dd7){var _0x14d910={'channel':_0x014d('0x70')};var _0x2fed22=[];var _0x171523=[];var _0x1bd601={};return db[_0x014d('0x40')]['find']({'where':{'id':_0x31b014[_0x014d('0x61')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x014d('0x71')}]})[_0x014d('0x37')](handleEntityNotFound(_0x1179aa,null))[_0x014d('0x37')](function(_0x14360e){_0x14d910[_0x014d('0x72')]=_0x14360e;_0x14d910[_0x014d('0x73')]=_['orderBy'](_0x14360e[_0x014d('0x71')],[_0x014d('0x74')],[_0x014d('0x75')]);if(_0x14d910[_0x014d('0x72')]['Applications']){delete _0x14d910[_0x014d('0x72')][_0x014d('0x71')];}return db[_0x014d('0x76')][_0x014d('0x64')]();})[_0x014d('0x37')](function(_0x21eaa4){if(!_0x21eaa4){throw new db[(_0x014d('0x77'))][(_0x014d('0x78'))](_0x014d('0x79'));}_0x2fed22=_[_0x014d('0x7a')](_[_0x014d('0x45')](_0x21eaa4),['createdAt','updatedAt']);_0x171523=_['difference'](_[_0x014d('0x45')](_0x21eaa4),[_0x014d('0x7b'),_0x014d('0x7c'),'CompanyId','ListId']);_0x14d910[_0x014d('0x5b')]={'mapKey':_0x014d('0x7d')};if(_0x14d910[_0x014d('0x72')][_0x014d('0x53')]){switch(_0x14d910[_0x014d('0x72')][_0x014d('0x53')]){case'twilio':_0x14d910[_0x014d('0x5b')]['from']=_0x31b014[_0x014d('0x5b')]['From'];_0x14d910[_0x014d('0x5b')][_0x014d('0x5b')]=_0x31b014['body'][_0x014d('0x7e')];_0x14d910[_0x014d('0x5b')][_0x014d('0x7f')]=_0x31b014[_0x014d('0x5b')]['MessageSid'];break;case'skebby':_0x14d910['body'][_0x014d('0x80')]='+'+_0x31b014[_0x014d('0x5b')][_0x014d('0x81')];_0x14d910[_0x014d('0x5b')][_0x014d('0x5b')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x82')];break;case _0x014d('0x83'):_0x14d910[_0x014d('0x5b')][_0x014d('0x80')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x80')];_0x14d910[_0x014d('0x5b')][_0x014d('0x5b')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x2a')];break;case _0x014d('0x84'):_0x14d910[_0x014d('0x5b')]['from']=_0x31b014[_0x014d('0x5b')][_0x014d('0x80')];_0x14d910['body'][_0x014d('0x5b')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x5b')];_0x14d910[_0x014d('0x5b')][_0x014d('0x7f')]=_0x31b014['body'][_0x014d('0x85')];break;case _0x014d('0x86'):_0x14d910[_0x014d('0x5b')][_0x014d('0x80')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x87')];_0x14d910[_0x014d('0x5b')][_0x014d('0x5b')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x88')];_0x14d910['body']['messageId']=_0x31b014[_0x014d('0x5b')][_0x014d('0x89')];break;case _0x014d('0x8a'):_0x14d910[_0x014d('0x5b')]['from']='+'+_0x31b014[_0x014d('0x5b')][_0x014d('0x8b')][0x0][_0x014d('0x80')];_0x14d910[_0x014d('0x5b')][_0x014d('0x5b')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x8b')][0x0]['text'];_0x14d910[_0x014d('0x5b')]['messageId']=_0x31b014['body'][_0x014d('0x8b')][0x0][_0x014d('0x7f')];break;case _0x014d('0x8c'):_0x14d910[_0x014d('0x5b')][_0x014d('0x80')]=_0x31b014[_0x014d('0x5b')]['originatingAddress'];_0x14d910[_0x014d('0x5b')]['body']=_0x31b014['body']['segmentedMessage']['message'];break;case'clickatell':_0x14d910[_0x014d('0x5b')][_0x014d('0x80')]=_0x31b014['body'][_0x014d('0x8d')];_0x14d910[_0x014d('0x5b')][_0x014d('0x5b')]=_0x31b014[_0x014d('0x5b')]['text'];_0x14d910[_0x014d('0x5b')][_0x014d('0x7f')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x8e')];break;case _0x014d('0x8f'):_0x14d910[_0x014d('0x5b')][_0x014d('0x7f')]=_0x31b014[_0x014d('0x5b')][0x0]['message']['id'];_0x14d910[_0x014d('0x5b')][_0x014d('0x80')]=_0x31b014[_0x014d('0x5b')][0x0][_0x014d('0x2a')][_0x014d('0x80')];_0x14d910['body'][_0x014d('0x5b')]=_0x31b014['body'][0x0][_0x014d('0x2a')]['text'];break;case _0x014d('0x90'):_0x14d910[_0x014d('0x5b')][_0x014d('0x80')]=_0x31b014['body']['from'];_0x14d910['body'][_0x014d('0x5b')]=_0x31b014[_0x014d('0x5b')][_0x014d('0x2a')];_0x14d910[_0x014d('0x5b')][_0x014d('0x7f')]=_0x31b014[_0x014d('0x5b')]['refid'];break;}}if(_0x14d910['body']['id']){delete _0x14d910[_0x014d('0x5b')]['id'];}if(_[_0x014d('0x91')](_0x14d910['body'][_0x014d('0x80')])){throw new db[(_0x014d('0x77'))][(_0x014d('0x78'))](_0x014d('0x92'));}if(_[_0x014d('0x91')](_0x14d910['body']['body'])||_0x14d910['body'][_0x014d('0x5b')]===''){throw new db[(_0x014d('0x77'))][(_0x014d('0x78'))](_0x014d('0x93'));}if(_[_0x014d('0x91')](_0x14d910[_0x014d('0x5b')][_0x014d('0x94')])){throw new db[(_0x014d('0x77'))][(_0x014d('0x78'))](_0x014d('0x95')+_0x171523);}if(!_[_0x014d('0x96')](_0x171523,_0x14d910[_0x014d('0x5b')][_0x014d('0x94')])){throw new db['Sequelize'][(_0x014d('0x78'))](_0x014d('0x97')+_0x171523);}_0x1bd601[_0x14d910[_0x014d('0x5b')][_0x014d('0x94')]]=_0x14d910['body']['from'];return db['CmList'][_0x014d('0x59')]({'where':{'id':_0x14d910[_0x014d('0x72')][_0x014d('0x98')]},'include':[{'model':db[_0x014d('0x76')],'as':_0x014d('0x99'),'where':_0x1bd601,'limit':0x1,'order':[[_0x014d('0x7c'),_0x014d('0x9a')]]}]});})[_0x014d('0x37')](handleEntityNotFound(_0x1179aa,null))['then'](function(_0x295edf){if(_0x295edf){_0x14d910[_0x014d('0x9b')]=_[_0x014d('0x9c')](_0x295edf,['Contacts']);if(_0x295edf[_0x014d('0x99')][_0x014d('0x4a')]){return _0x295edf[_0x014d('0x99')][0x0];}var _0x355a30=_['defaults'](_0x14d910[_0x014d('0x5b')],{'firstName':_0x14d910['body']['from'],'ListId':_0x295edf['id']});_0x355a30[_0x14d910[_0x014d('0x5b')][_0x014d('0x94')]]=_0x14d910[_0x014d('0x5b')]['from'];return db[_0x014d('0x76')][_0x014d('0x5a')](_0x355a30,{'fields':_0x2fed22,'raw':!![]});}})[_0x014d('0x37')](handleEntityNotFound(_0x1179aa,null))[_0x014d('0x37')](function(_0x2d26c3){if(_0x2d26c3){_0x14d910['contact']=_0x2d26c3;var _0x201710={'ContactId':_0x2d26c3['id'],'phone':_0x14d910['body']['from'],'SmsAccountId':_0x31b014[_0x014d('0x61')]['id']};var _0xcb70f9={'ContactId':_0x2d26c3['id'],'SmsAccountId':_0x31b014[_0x014d('0x61')]['id'],'closed':![]};return db[_0x014d('0x9d')][_0x014d('0x59')]({'where':_0xcb70f9})[_0x014d('0x37')](function(_0x3199af){if(_0x3199af){return[_0x3199af,![]];}return db['SmsInteraction'][_0x014d('0x5a')](_0x201710)['then'](function(_0x310cd5){return[_0x310cd5,!![]];});});}})['spread'](function(_0xbb714b,_0x56deee){_0x14d910[_0x014d('0x9e')]=_0xbb714b[_0x014d('0x38')]({'plain':!![]});_0x14d910[_0x014d('0x9e')][_0x014d('0x9f')]=![];if(_0x56deee){if(_0x14d910[_0x014d('0x72')][_0x014d('0xa0')]){_0x14d910[_0x014d('0x73')][_0x014d('0xa1')]({'id':0x0,'priority':_0x14d910[_0x014d('0x73')][_0x014d('0x4a')]+0x1,'app':_0x014d('0xa2'),'appdata':_0x014d('0xa3'),'interval':_0x014d('0xa4')});}_0x14d910['interaction'][_0x014d('0x9f')]=!![];}return db['SmsMessage'][_0x014d('0x5a')]({'phone':_0x14d910[_0x014d('0x5b')][_0x014d('0x80')],'messageId':_0x14d910[_0x014d('0x5b')]['messageId'],'body':_0x14d910['body'][_0x014d('0x5b')],'SmsAccountId':_0x31b014[_0x014d('0x61')]['id'],'SmsInteractionId':_0xbb714b['id'],'direction':'in','ContactId':_0xbb714b[_0x014d('0xa5')],'AttachmentId':_0x14d910[_0x014d('0x5b')][_0x014d('0xa6')]});})['then'](function(_0x3bf3db){_0x14d910[_0x014d('0x2a')]=_0x3bf3db;if(_0x14d910[_0x014d('0x9e')][_0x014d('0xa7')]){return db[_0x014d('0xa8')]['find']({'attributes':['id','name'],'where':{'id':_0x14d910[_0x014d('0x9e')]['UserId']}})['then'](function(_0x34fccc){if(_0x34fccc){_0x14d910[_0x014d('0x73')][_0x014d('0xa9')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x34fccc[_0x014d('0x3d')]+','+(_0x14d910['account'][_0x014d('0xaa')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x014d('0xab'),_0x014d('0xac'),_0x14d910);});}return respondWithRpcPromise('Start',_0x014d('0xac'),_0x14d910);})[_0x014d('0x37')](function(_0x340a94){if(_0x340a94){var _0x2d3565=0xc8;var _0x190c84=_0x014d('0xad');logger[_0x014d('0x22')](_0x014d('0x26'),_0x190c84,_0x2d3565,_0x014d('0xae'));logger['debug'](_0x014d('0xaf'),_0x190c84,_0x2d3565,'entity\x20found',JSON['stringify'](_0x340a94));if(_0x14d910[_0x014d('0x72')][_0x014d('0x53')]==='twilio'){return _0x1179aa['status'](_0x2d3565)['set'](_0x014d('0xb0'),_0x014d('0xb1'))[_0x014d('0xb2')](_0x014d('0xb3'));}else{return _0x1179aa[_0x014d('0x2d')](_0x2d3565)['json'](_0x340a94);}}})[_0x014d('0x2c')](handleError(_0x1179aa,null));};exports[_0x014d('0xb4')]=function(_0x209cc3,_0x873c5a){var _0x2ed357=_0x209cc3[_0x014d('0x61')]['id'];var _0x7e1662=_0x209cc3[_0x014d('0x5b')];var _0x247963=0xc8;var _0x2a00ce=null;return db[_0x014d('0xb5')][_0x014d('0xb6')]({'isolationLevel':db[_0x014d('0xb5')][_0x014d('0xb7')][_0x014d('0xb8')][_0x014d('0xb9')]},function(_0x13d845){return db[_0x014d('0x40')][_0x014d('0x6d')]({'where':{'id':_0x2ed357},'transaction':_0x13d845})['then'](function(_0x13dc7b){if(_0x13dc7b){return db[_0x014d('0xba')][_0x014d('0x3b')]({'where':{'SmsAccountId':_0x2ed357},'transaction':_0x13d845})['then'](function(){var _0x29f4f1=_['map'](_0x7e1662,function(_0x1e0dff){_0x1e0dff['SmsAccountId']=_0x2ed357;return _0x1e0dff;});return db['SmsApplication'][_0x014d('0xbb')](_0x29f4f1,{'transaction':_0x13d845});});}else{_0x247963=0x194;_0x2a00ce=[];}});})['then'](function(){if(_0x247963!==0x194){return db[_0x014d('0xba')][_0x014d('0xbc')]({'where':{'SmsAccountId':_0x2ed357},'order':_0x014d('0x74')})[_0x014d('0x37')](function(_0x4339fe){_0x2a00ce=_0x4339fe;});}})[_0x014d('0x2c')](function(_0xe6e1ef){_0x247963=0x1f4;logger[_0x014d('0x28')](_0xe6e1ef[_0x014d('0x3c')]);if(_0xe6e1ef[_0x014d('0x3d')]){delete _0xe6e1ef[_0x014d('0x3d')];}_0x2a00ce=_0xe6e1ef;})['finally'](function(){if(_0x2a00ce===null){_0x873c5a[_0x014d('0xbd')](_0x247963);}else{if(_0x247963===0x1f4){_0x873c5a[_0x014d('0x2d')](_0x247963)['send'](_0x2a00ce);}else{_0x873c5a[_0x014d('0x2d')](_0x247963)[_0x014d('0x2f')](_0x2a00ce);}}});};exports[_0x014d('0xbe')]=function(_0x3e9070,_0x390454,_0x1462d9){var _0x25b2b2={};var _0x177c2d={};var _0x1422d2;var _0x154f83;return db['SmsAccount'][_0x014d('0x6d')]({'where':{'id':_0x3e9070['params']['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x390454,null))[_0x014d('0x37')](function(_0x41c7d3){if(_0x41c7d3){_0x1422d2=_0x41c7d3;_0x177c2d[_0x014d('0x43')]=_[_0x014d('0x45')](db[_0x014d('0xba')][_0x014d('0x41')]);_0x177c2d[_0x014d('0x44')]=_[_0x014d('0x45')](_0x3e9070[_0x014d('0x44')]);_0x177c2d[_0x014d('0x46')]=_['intersection'](_0x177c2d[_0x014d('0x43')],_0x177c2d[_0x014d('0x44')]);_0x25b2b2[_0x014d('0x49')]=_['intersection'](_0x177c2d[_0x014d('0x43')],qs['fields'](_0x3e9070[_0x014d('0x44')][_0x014d('0x48')]));_0x25b2b2[_0x014d('0x49')]=_0x25b2b2[_0x014d('0x49')][_0x014d('0x4a')]?_0x25b2b2['attributes']:_0x177c2d['model'];_0x25b2b2[_0x014d('0x4d')]=qs[_0x014d('0x4e')](_0x3e9070[_0x014d('0x44')][_0x014d('0x4e')]);_0x25b2b2[_0x014d('0x4f')]=qs[_0x014d('0x46')](_[_0x014d('0x50')](_0x3e9070[_0x014d('0x44')],_0x177c2d[_0x014d('0x46')]));if(_0x3e9070['query'][_0x014d('0x51')]){_0x25b2b2[_0x014d('0x4f')]=_[_0x014d('0x52')](_0x25b2b2[_0x014d('0x4f')],{'$or':_['map'](_0x25b2b2[_0x014d('0x49')],function(_0x2e4c9a){var _0x4b773c={};_0x4b773c[_0x2e4c9a]={'$like':'%'+_0x3e9070[_0x014d('0x44')][_0x014d('0x51')]+'%'};return _0x4b773c;})});}_0x25b2b2=_['merge']({},_0x25b2b2,_0x3e9070[_0x014d('0x54')]);return _0x1422d2[_0x014d('0xbe')](_0x25b2b2);}})[_0x014d('0x37')](function(_0x303134){if(_0x303134){_0x154f83=_0x303134['length'];if(!_0x3e9070['query']['hasOwnProperty'](_0x014d('0x4c'))){_0x25b2b2[_0x014d('0x31')]=qs[_0x014d('0x31')](_0x3e9070[_0x014d('0x44')][_0x014d('0x31')]);_0x25b2b2[_0x014d('0x30')]=qs['offset'](_0x3e9070['query'][_0x014d('0x30')]);}return _0x1422d2[_0x014d('0xbe')](_0x25b2b2);}})['then'](function(_0x2a4df2){if(_0x2a4df2){return _0x2a4df2?{'count':_0x154f83,'rows':_0x2a4df2}:null;}})['then'](respondWithResult(_0x390454,null))[_0x014d('0x2c')](handleError(_0x390454,null));};exports[_0x014d('0xbf')]=function(_0x340ea3,_0x1f9fe0,_0x4e80da){var _0xf6c9d3={'raw':![],'where':{}};var _0x12055f={};var _0x5ac771={'count':0x0,'rows':[]};return db[_0x014d('0x40')][_0x014d('0x6d')]({'where':{'id':_0x340ea3[_0x014d('0x61')]['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x1f9fe0,null))[_0x014d('0x37')](function(_0x139dbe){if(_0x139dbe){_0x12055f[_0x014d('0x43')]=_[_0x014d('0x45')](db[_0x014d('0x9d')][_0x014d('0x41')]);_0x12055f[_0x014d('0x44')]=_[_0x014d('0x45')](_0x340ea3[_0x014d('0x44')]);_0x12055f['filters']=_[_0x014d('0x47')](_0x12055f[_0x014d('0x43')],_0x12055f[_0x014d('0x44')]);_0xf6c9d3[_0x014d('0x49')]=_['intersection'](_0x12055f[_0x014d('0x43')],qs['fields'](_0x340ea3[_0x014d('0x44')][_0x014d('0x48')]));_0xf6c9d3['attributes']=_0xf6c9d3['attributes'][_0x014d('0x4a')]?_0xf6c9d3[_0x014d('0x49')]:_0x12055f[_0x014d('0x43')];if(!_0x340ea3[_0x014d('0x44')]['hasOwnProperty'](_0x014d('0x4c'))){_0xf6c9d3[_0x014d('0x31')]=qs['limit'](_0x340ea3['query']['limit']);_0xf6c9d3[_0x014d('0x30')]=qs['offset'](_0x340ea3[_0x014d('0x44')][_0x014d('0x30')]);}_0xf6c9d3[_0x014d('0x4d')]=qs[_0x014d('0x4e')](_0x340ea3[_0x014d('0x44')][_0x014d('0x4e')]);_0xf6c9d3['where']=qs[_0x014d('0x46')](_[_0x014d('0x50')](_0x340ea3[_0x014d('0x44')],_0x12055f['filters']));_0xf6c9d3[_0x014d('0x4f')][_0x014d('0x66')]=_0x139dbe['id'];if(_0x340ea3[_0x014d('0x44')][_0x014d('0x51')]){_0xf6c9d3[_0x014d('0x4f')]=_[_0x014d('0x52')](_0xf6c9d3[_0x014d('0x4f')],{'$or':_[_0x014d('0x3f')](_0xf6c9d3[_0x014d('0x49')],function(_0x450086){var _0x8a31c7={};_0x8a31c7[_0x450086]={'$like':'%'+_0x340ea3[_0x014d('0x44')][_0x014d('0x51')]+'%'};return _0x8a31c7;})});}_0xf6c9d3=_[_0x014d('0x52')]({},_0xf6c9d3,_0x340ea3[_0x014d('0x54')]);return db[_0x014d('0x9d')][_0x014d('0x33')]({'where':_0xf6c9d3[_0x014d('0x4f')]})[_0x014d('0x37')](function(_0xa963fb){_0x5ac771[_0x014d('0x33')]=_0xa963fb;if(_0x340ea3['query'][_0x014d('0x58')]){_0xf6c9d3[_0x014d('0x55')]=[{'model':db[_0x014d('0x76')],'as':_0x014d('0xc0'),'required':![]},{'model':db[_0x014d('0xa8')],'as':_0x014d('0xc1'),'attributes':[_0x014d('0x3d'),_0x014d('0xc2'),_0x014d('0xc3')],'required':![]},{'model':db[_0x014d('0xc4')],'as':_0x014d('0xc5'),'attributes':['id',_0x014d('0x3d'),'color'],'where':_0x340ea3[_0x014d('0x44')]['tag']?{'id':_0x340ea3['query'][_0x014d('0xc6')]}:undefined,'required':_0x340ea3[_0x014d('0x44')][_0x014d('0xc6')]?!![]:![]}];}return db[_0x014d('0x9d')][_0x014d('0x6e')](_0xf6c9d3);})['then'](function(_0x5c1f7a){_0x5ac771[_0x014d('0x56')]=_0x5c1f7a;return _0x5ac771;});}})[_0x014d('0x37')](respondWithFilteredResult(_0x1f9fe0,_0xf6c9d3))[_0x014d('0x2c')](handleError(_0x1f9fe0,null));};exports[_0x014d('0xb2')]=function(_0x52dd7a,_0x120688,_0xa6d2fe){var _0x1a8f70,_0x458544,_0x12cedf;if(_[_0x014d('0x91')](_0x52dd7a[_0x014d('0x5b')][_0x014d('0x5b')])||_0x52dd7a[_0x014d('0x5b')]['body']===''){throw new db['Sequelize']['ValidationError'](_0x014d('0x93'));}if(_[_0x014d('0x91')](_0x52dd7a['body']['to'])){throw new db[(_0x014d('0x77'))][(_0x014d('0x78'))](_0x014d('0xc7'));}_0x1a8f70=_0x52dd7a[_0x014d('0x5b')]['to'];return db[_0x014d('0x40')][_0x014d('0x59')]({'where':{'id':_0x52dd7a[_0x014d('0x61')]['id']},'include':[{'model':db[_0x014d('0xc8')],'as':_0x014d('0xc9'),'include':[{'model':db[_0x014d('0x76')],'as':'Contacts','where':{'mobile':_0x1a8f70},'limit':0x1,'order':[[_0x014d('0x7c'),_0x014d('0x9a')]]}]}]})[_0x014d('0x37')](handleEntityNotFound(_0x120688,null))['then'](function(_0x250be7){if(_0x250be7&&_0x250be7[_0x014d('0xc9')]){_0x458544=_0x250be7[_0x014d('0x38')]({'plain':!![]});if(_0x458544['List']&&_0x458544[_0x014d('0xc9')]['Contacts']['length']){return _0x458544[_0x014d('0xc9')][_0x014d('0x99')][0x0];}return db[_0x014d('0x76')][_0x014d('0x5a')](_[_0x014d('0x1a')](_0x52dd7a[_0x014d('0x5b')],{'firstName':_0x1a8f70,'mobile':_0x1a8f70,'phone':_0x1a8f70,'ListId':_0x458544[_0x014d('0x98')]}));}})[_0x014d('0x37')](handleEntityNotFound(_0x120688,null))[_0x014d('0x37')](function(_0x14d34d){if(_0x14d34d){_0x12cedf=_0x14d34d;return db[_0x014d('0x9d')]['find']({'where':{'ContactId':_0x12cedf['id'],'closed':![],'SmsAccountId':_0x458544['id']}})['then'](function(_0x58c015){if(_0x58c015){return[_0x58c015,![]];}return db[_0x014d('0x9d')][_0x014d('0x5a')]({'UserId':_0x52dd7a[_0x014d('0x5c')]['id'],'ContactId':_0x12cedf['id'],'SmsAccountId':_0x458544['id'],'phone':_0x1a8f70,'firstMsgDirection':'out','Messages':[_[_0x014d('0x52')](_0x52dd7a[_0x014d('0x5b')],{'read':![],'body':_0x52dd7a[_0x014d('0x5b')][_0x014d('0x5b')],'phone':_0x1a8f70,'SmsAccountId':_0x458544['id'],'UserId':_0x52dd7a[_0x014d('0x5c')]['id'],'ContactId':_0x12cedf['id']})]},{'include':[{'model':db[_0x014d('0xca')],'as':'Messages'}]})[_0x014d('0x37')](function(_0x8d96db){return[_0x8d96db,!![]];});});}})[_0x014d('0xcb')](function(_0x5035db,_0x36ef96){if(_0x36ef96){return _0x5035db;}return db[_0x014d('0xca')][_0x014d('0x5a')](_[_0x014d('0x52')](_0x52dd7a['body'],{'read':![],'body':_0x52dd7a['body'][_0x014d('0x5b')],'phone':_0x1a8f70,'SmsAccountId':_0x458544['id'],'SmsInteractionId':_0x5035db['id'],'UserId':_0x52dd7a[_0x014d('0x5c')]['id'],'ContactId':_0x12cedf['id']}))[_0x014d('0x37')](function(_0x51f331){_0x5035db[_0x014d('0xcc')][_0x014d('0xcd')]=[];_0x5035db[_0x014d('0xcc')][_0x014d('0xcd')][_0x014d('0xa1')](_0x51f331[_0x014d('0xcc')]);return _0x5035db;});})[_0x014d('0x37')](respondWithResult(_0x120688,null))['catch'](handleError(_0x120688,null));};exports[_0x014d('0x2d')]=function(_0x5b3851,_0x385360,_0x100d89){if(_0x5b3851[_0x014d('0x5b')]['id']){delete _0x5b3851['body']['id'];}var _0x35c9b3,_0x308538,_0x3bee6f;return db[_0x014d('0x40')][_0x014d('0x59')]({'where':{'id':_0x5b3851['params']['id']}})['then'](handleEntityNotFound(_0x385360,null))[_0x014d('0x37')](function(_0x30606e){if(_0x30606e){_0x3bee6f=_0x30606e;logger[_0x014d('0x25')](_0x014d('0x26'),_0x014d('0x2d'),_0x014d('0xce'),_0x30606e[_0x014d('0x53')],util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));switch(_0x30606e[_0x014d('0x53')]){case _0x014d('0xd0'):if(_0x5b3851[_0x014d('0x5b')]['skebby_dispatch_id']&&_0x5b3851[_0x014d('0x5b')][_0x014d('0x2d')]){_0x308538=_0x5b3851[_0x014d('0x5b')][_0x014d('0x2d')];return db[_0x014d('0xca')]['find']({'where':{'messageId':_0x5b3851[_0x014d('0x5b')][_0x014d('0xd1')]}});}break;case _0x014d('0x83'):if(_0x5b3851[_0x014d('0x5b')][_0x014d('0xd2')]&&_0x5b3851[_0x014d('0x5b')]['statusInt']){_0x308538=_0x5b3851[_0x014d('0x5b')][_0x014d('0xd3')];return db['SmsMessage']['find']({'where':{'messageId':_0x5b3851[_0x014d('0x5b')][_0x014d('0xd2')]}});}break;case _0x014d('0x84'):if(_0x5b3851[_0x014d('0x5b')]['message_id']&&_0x5b3851[_0x014d('0x5b')]['status_code']){_0x308538=_0x5b3851['body'][_0x014d('0xd4')];return db[_0x014d('0xca')]['find']({'where':{'messageId':_0x5b3851['body'][_0x014d('0x85')]}});}break;case _0x014d('0x8a'):var _0x1cab83=_0x5b3851[_0x014d('0x5b')][_0x014d('0x8b')][0x0];if(_0x1cab83[_0x014d('0x7f')]&&_0x1cab83[_0x014d('0x2d')][_0x014d('0xd5')]==='DELIVERED'){_0x308538=_0x1cab83[_0x014d('0x2d')][_0x014d('0xd5')];return db[_0x014d('0xca')][_0x014d('0x59')]({'where':{'messageId':_0x1cab83[_0x014d('0x7f')]}});}break;case _0x014d('0xd6'):if(_0x5b3851['body'][_0x014d('0x7f')]&&_0x5b3851[_0x014d('0x5b')][_0x014d('0x2d')]){_0x308538=_0x5b3851[_0x014d('0x5b')][_0x014d('0x2d')];return db[_0x014d('0xca')][_0x014d('0x59')]({'where':{'messageId':_0x5b3851[_0x014d('0x5b')][_0x014d('0x7f')]}});}break;case'bandwidth':if(_0x5b3851[_0x014d('0x5b')][0x0][_0x014d('0x2a')]['id']){_0x308538=_0x5b3851[_0x014d('0x5b')][0x0][_0x014d('0x53')];return db['SmsMessage'][_0x014d('0x59')]({'where':{'messageId':_0x5b3851[_0x014d('0x5b')][0x0][_0x014d('0x2a')]['id']}});}break;case _0x014d('0x90'):if(_0x5b3851['body']['redif']&&_0x5b3851[_0x014d('0x5b')][_0x014d('0x2d')]){_0x308538=_0x5b3851[_0x014d('0x5b')][_0x014d('0x2d')];return db['SmsMessage'][_0x014d('0x59')]({'where':{'messageId':_0x5b3851[_0x014d('0x5b')][_0x014d('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x385360,null))[_0x014d('0x37')](function(_0x304c3f){if(_0x304c3f){_0x35c9b3=_0x304c3f;switch(_0x3bee6f[_0x014d('0x53')]){case'skebby':if(_0x308538===_0x014d('0xd8')){return _0x35c9b3[_0x014d('0x36')]({'read':!![]});}else{logger[_0x014d('0x28')](_0x014d('0x26'),_0x014d('0x2d'),_0x014d('0xd0'),util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x308538==='1'){return _0x35c9b3[_0x014d('0x36')]({'read':!![]});}else{logger[_0x014d('0x28')](_0x014d('0x26'),_0x014d('0x2d'),_0x014d('0xd0'),util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x014d('0x84'):if(!_0x5b3851[_0x014d('0x5b')][_0x014d('0xd9')]&&_0x308538>=0xc8&&_0x308538<=0xce){return _0x35c9b3[_0x014d('0x36')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x014d('0x2d'),_0x014d('0x84'),util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x014d('0x8a'):var _0x11dd83=_0x5b3851['body'][_0x014d('0x8b')][0x0];if(_0x11dd83[_0x014d('0x2d')]['groupName']===_0x014d('0xd8')){return _0x35c9b3[_0x014d('0x36')]({'read':!![]});}else{logger[_0x014d('0x28')](_0x014d('0x26'),_0x014d('0x2d'),_0x014d('0x8a'),util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x308538=='DELIVERED_TO_GATEWAY'||_0x308538=='RECEIVED_BY_RECIPIENT'){return _0x35c9b3[_0x014d('0x36')]({'read':!![]});}else{logger['error'](_0x014d('0x26'),'status','clickatell',util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x014d('0x8f'):if(_0x308538==_0x014d('0xda')){return _0x35c9b3['update']({'read':!![]});}else{logger[_0x014d('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x014d('0x8f'),util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x014d('0x90'):if(_0x308538===_0x014d('0xdb')||_0x308538===_0x014d('0xdc')){return _0x35c9b3[_0x014d('0x36')]({'read':!![]});}else{logger['error'](_0x014d('0x26'),'status',_0x014d('0x90'),util[_0x014d('0xcf')](_0x5b3851[_0x014d('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x35c9b3;}})[_0x014d('0x37')](respondWithResult(_0x385360,null))[_0x014d('0x2c')](handleError(_0x385360,null));};exports[_0x014d('0xdd')]=function(_0x4881e3,_0x44cf8c,_0x104033){var _0x43ee36,_0x37196f,_0x10b69a;return db[_0x014d('0x40')]['find']({'where':{'id':_0x4881e3[_0x014d('0x61')]['id']}})['then'](handleEntityNotFound(_0x44cf8c,null))[_0x014d('0x37')](function(_0x113578){if(_0x113578){_0x10b69a=_0x113578;logger['debug'](_0x014d('0x26'),_0x014d('0x2d'),_0x014d('0xce'),_0x113578['type'],util['inspect'](_0x4881e3[_0x014d('0x44')],{'showHidden':![],'depth':null}));switch(_0x113578['type']){case _0x014d('0x8c'):if(_0x4881e3['query']['message-id']&&_0x4881e3[_0x014d('0x44')][_0x014d('0xde')]){_0x37196f=_0x4881e3[_0x014d('0x44')][_0x014d('0xde')];return db['SmsMessage']['find']({'where':{'messageId':_0x4881e3['query']['message-id']}});}break;}}})[_0x014d('0x37')](handleEntityNotFound(_0x44cf8c,null))[_0x014d('0x37')](function(_0x2fcb4e){if(_0x2fcb4e){_0x43ee36=_0x2fcb4e;switch(_0x10b69a[_0x014d('0x53')]){case _0x014d('0x8c'):if(_0x37196f==='2'||_0x37196f==='6'){return _0x43ee36[_0x014d('0x36')]({'read':!![]});}else{logger['error'](_0x014d('0x26'),_0x014d('0x2d'),_0x014d('0x8c'),util[_0x014d('0xcf')](_0x4881e3[_0x014d('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x43ee36;}})['then'](respondWithResult(_0x44cf8c,null))[_0x014d('0x2c')](handleError(_0x44cf8c,null));};exports['addAgents']=function(_0x1eb418,_0x178ddc,_0x3d343d){return db['SmsAccount'][_0x014d('0x59')]({'where':{'id':_0x1eb418[_0x014d('0x61')]['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x178ddc,null))['then'](function(_0x465d83){if(_0x465d83){return _0x465d83[_0x014d('0xdf')](_0x1eb418[_0x014d('0x5b')]['ids'],_[_0x014d('0x9c')](_0x1eb418[_0x014d('0x5b')],[_0x014d('0x6a'),'id'])||{})[_0x014d('0xcb')](function(_0x47a2dc){for(var _0x492efb=0x0;_0x492efb<_0x1eb418['body'][_0x014d('0x6a')][_0x014d('0x4a')];_0x492efb+=0x1){socket[_0x014d('0xe0')]('userSmsAccount:save',{'UserId':Number(_0x1eb418[_0x014d('0x5b')][_0x014d('0x6a')][_0x492efb]),'SmsAccountId':Number(_0x1eb418[_0x014d('0x61')]['id'])});}return _0x47a2dc;});}})[_0x014d('0x37')](respondWithResult(_0x178ddc,null))[_0x014d('0x2c')](handleError(_0x178ddc,null));};exports[_0x014d('0xe1')]=function(_0x34c87c,_0x198ae6,_0x56ad27){return db[_0x014d('0x40')][_0x014d('0x59')]({'where':{'id':_0x34c87c[_0x014d('0x61')]['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x198ae6,null))[_0x014d('0x37')](function(_0x357d1a){if(_0x357d1a){return _0x357d1a['removeAgents'](_0x34c87c[_0x014d('0x44')]['ids'])['then'](function(){if(_[_0x014d('0xe2')](_0x34c87c['query'][_0x014d('0x6a')])){for(var _0x11355f=0x0;_0x11355f<_0x34c87c[_0x014d('0x44')]['ids']['length'];_0x11355f+=0x1){socket[_0x014d('0xe0')](_0x014d('0xe3'),{'UserId':Number(_0x34c87c[_0x014d('0x44')][_0x014d('0x6a')][_0x11355f]),'SmsAccountId':Number(_0x34c87c[_0x014d('0x61')]['id'])});}}else{socket[_0x014d('0xe0')](_0x014d('0xe3'),{'UserId':Number(_0x34c87c['query']['ids']),'SmsAccountId':Number(_0x34c87c[_0x014d('0x61')]['id'])});}});}})[_0x014d('0x37')](respondWithStatusCode(_0x198ae6,null))['catch'](handleError(_0x198ae6,null));};exports[_0x014d('0xe4')]=function(_0x87d740,_0x49e1bd,_0x13322b){var _0x4ae637={};var _0x4a40bd={};var _0x22539b;var _0x5a842d;return db[_0x014d('0x40')][_0x014d('0x6d')]({'where':{'id':_0x87d740[_0x014d('0x61')]['id']}})[_0x014d('0x37')](handleEntityNotFound(_0x49e1bd,null))['then'](function(_0x16be22){if(_0x16be22){_0x22539b=_0x16be22;_0x4a40bd[_0x014d('0x43')]=_['keys'](db['User']['rawAttributes']);_0x4a40bd[_0x014d('0x44')]=_[_0x014d('0x45')](_0x87d740[_0x014d('0x44')]);_0x4a40bd[_0x014d('0x46')]=_[_0x014d('0x47')](_0x4a40bd[_0x014d('0x43')],_0x4a40bd[_0x014d('0x44')]);_0x4ae637[_0x014d('0x49')]=_[_0x014d('0x47')](_0x4a40bd['model'],qs[_0x014d('0x48')](_0x87d740[_0x014d('0x44')][_0x014d('0x48')]));_0x4ae637['attributes']=_0x4ae637[_0x014d('0x49')]['length']?_0x4ae637['attributes']:_0x4a40bd[_0x014d('0x43')];_0x4ae637['order']=qs[_0x014d('0x4e')](_0x87d740[_0x014d('0x44')][_0x014d('0x4e')]);_0x4ae637[_0x014d('0x4f')]=qs['filters'](_[_0x014d('0x50')](_0x87d740[_0x014d('0x44')],_0x4a40bd[_0x014d('0x46')]));if(_0x87d740['query'][_0x014d('0x51')]){_0x4ae637[_0x014d('0x4f')]=_[_0x014d('0x52')](_0x4ae637[_0x014d('0x4f')],{'$or':_['map'](_0x4ae637['attributes'],function(_0xbdc5d2){var _0x38ce11={};_0x38ce11[_0xbdc5d2]={'$like':'%'+_0x87d740[_0x014d('0x44')][_0x014d('0x51')]+'%'};return _0x38ce11;})});}_0x4ae637=_[_0x014d('0x52')]({},_0x4ae637,_0x87d740[_0x014d('0x54')]);return _0x22539b[_0x014d('0xe4')](_0x4ae637);}})[_0x014d('0x37')](function(_0x23aa28){if(_0x23aa28){_0x5a842d=_0x23aa28[_0x014d('0x4a')];if(!_0x87d740[_0x014d('0x44')][_0x014d('0x4b')](_0x014d('0x4c'))){_0x4ae637[_0x014d('0x31')]=qs[_0x014d('0x31')](_0x87d740[_0x014d('0x44')][_0x014d('0x31')]);_0x4ae637[_0x014d('0x30')]=qs['offset'](_0x87d740[_0x014d('0x44')][_0x014d('0x30')]);}return _0x22539b[_0x014d('0xe4')](_0x4ae637);}})['then'](function(_0x4e1e1a){if(_0x4e1e1a){return _0x4e1e1a?{'count':_0x5a842d,'rows':_0x4e1e1a}:null;}})[_0x014d('0x37')](respondWithResult(_0x49e1bd,null))['catch'](handleError(_0x49e1bd,null));};
\ No newline at end of file
index 9c5ebeb..55c06f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b1=['../../mysqldb','SmsAccount','save','update','remove','emit','hook','exports','events'];(function(_0x1019b4,_0x46e3a2){var _0x4f2c1b=function(_0x2798ef){while(--_0x2798ef){_0x1019b4['push'](_0x1019b4['shift']());}};_0x4f2c1b(++_0x46e3a2);}(_0x09b1,0xbc));var _0x109b=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x09b1[_0x525c7b];return _0x27b33e;};'use strict';var EventEmitter=require(_0x109b('0x0'));var SmsAccount=require(_0x109b('0x1'))['db'][_0x109b('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x109b('0x3'),'afterUpdate':_0x109b('0x4'),'afterDestroy':_0x109b('0x5')};function emitEvent(_0x5de04e){return function(_0x2ebc24,_0xc26515,_0x2fdd68){SmsAccountEvents[_0x109b('0x6')](_0x5de04e+':'+_0x2ebc24['id'],_0x2ebc24);SmsAccountEvents['emit'](_0x5de04e,_0x2ebc24);_0x2fdd68(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0x109b('0x7')](e,emitEvent(event));}}module[_0x109b('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0xca08=['remove','emit','hasOwnProperty','exports','events','SmsAccount','setMaxListeners','save','update'];(function(_0x24c000,_0xa0a80a){var _0x50d65b=function(_0x3a0f83){while(--_0x3a0f83){_0x24c000['push'](_0x24c000['shift']());}};_0x50d65b(++_0xa0a80a);}(_0xca08,0x1ea));var _0x8ca0=function(_0x35a9a7,_0x5e8c7f){_0x35a9a7=_0x35a9a7-0x0;var _0x142c13=_0xca08[_0x35a9a7];return _0x142c13;};'use strict';var EventEmitter=require(_0x8ca0('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x8ca0('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x8ca0('0x2')](0x0);var events={'afterCreate':_0x8ca0('0x3'),'afterUpdate':_0x8ca0('0x4'),'afterDestroy':_0x8ca0('0x5')};function emitEvent(_0x1d79d5){return function(_0x2edd6d,_0x4fbee7,_0x36e956){SmsAccountEvents[_0x8ca0('0x6')](_0x1d79d5+':'+_0x2edd6d['id'],_0x2edd6d);SmsAccountEvents[_0x8ca0('0x6')](_0x1d79d5,_0x2edd6d);_0x36e956(null);};}for(var e in events){if(events[_0x8ca0('0x7')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x8ca0('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 631b8ea..f267e82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x529f=['lodash','moment','bluebird','request-promise','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts'];(function(_0x5a5395,_0x5361f6){var _0x4da43d=function(_0x149941){while(--_0x149941){_0x5a5395['push'](_0x5a5395['shift']());}};_0x4da43d(++_0x5361f6);}(_0x529f,0x14a));var _0xf529=function(_0x4e3c6d,_0x32fb8b){_0x4e3c6d=_0x4e3c6d-0x0;var _0x2de515=_0x529f[_0x4e3c6d];return _0x2de515;};'use strict';var _=require(_0xf529('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xf529('0x1'));var BPromise=require(_0xf529('0x2'));var rp=require(_0xf529('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf529('0x4'));var config=require(_0xf529('0x5'));var attributes=require(_0xf529('0x6'));module[_0xf529('0x7')]=function(_0x159fba,_0x512856){return _0x159fba[_0xf529('0x8')](_0xf529('0x9'),attributes,{'tableName':_0xf529('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7341=['define','sms_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','exports'];(function(_0x196481,_0x1b69c5){var _0x148d30=function(_0x2a35c8){while(--_0x2a35c8){_0x196481['push'](_0x196481['shift']());}};_0x148d30(++_0x1b69c5);}(_0x7341,0x18a));var _0x1734=function(_0x592dd2,_0x2e9576){_0x592dd2=_0x592dd2-0x0;var _0x19e791=_0x7341[_0x592dd2];return _0x19e791;};'use strict';var _=require(_0x1734('0x0'));var util=require(_0x1734('0x1'));var logger=require(_0x1734('0x2'))(_0x1734('0x3'));var moment=require(_0x1734('0x4'));var BPromise=require(_0x1734('0x5'));var rp=require(_0x1734('0x6'));var fs=require('fs');var path=require(_0x1734('0x7'));var rimraf=require(_0x1734('0x8'));var config=require(_0x1734('0x9'));var attributes=require(_0x1734('0xa'));module[_0x1734('0xb')]=function(_0xb57947,_0x405ad3){return _0xb57947[_0x1734('0xc')]('SmsAccount',attributes,{'tableName':_0x1734('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc5be6e..760527f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2b2=['debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','SmsAccount,\x20%s,\x20%s','info','ShowSmsAccount','find','options','where','include','map','model','attributes','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','./smsAccount.socket','register','then','request\x20sent'];(function(_0x2dc62b,_0x5c7248){var _0xeb6228=function(_0x216211){while(--_0x216211){_0x2dc62b['push'](_0x2dc62b['shift']());}};_0xeb6228(++_0x5c7248);}(_0xd2b2,0xdd));var _0x2d2b=function(_0x29b489,_0x113ef4){_0x29b489=_0x29b489-0x0;var _0x13fe2f=_0xd2b2[_0x29b489];return _0x13fe2f;};'use strict';var _=require(_0x2d2b('0x0'));var util=require('util');var moment=require(_0x2d2b('0x1'));var BPromise=require(_0x2d2b('0x2'));var rs=require(_0x2d2b('0x3'));var fs=require('fs');var Redis=require(_0x2d2b('0x4'));var db=require(_0x2d2b('0x5'))['db'];var utils=require(_0x2d2b('0x6'));var logger=require(_0x2d2b('0x7'))(_0x2d2b('0x8'));var config=require(_0x2d2b('0x9'));var jayson=require(_0x2d2b('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x2d2b('0xb')]=_[_0x2d2b('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2d2b('0xb')]));require(_0x2d2b('0xd'))[_0x2d2b('0xe')](socket);function respondWithRpcPromise(_0x481fed,_0x533f01,_0x4d4528){return new BPromise(function(_0x57561e,_0x3e698f){return client['request'](_0x481fed,_0x4d4528)[_0x2d2b('0xf')](function(_0x2cfed7){logger['info']('SmsAccount,\x20%s,\x20%s',_0x533f01,_0x2d2b('0x10'));logger[_0x2d2b('0x11')](_0x2d2b('0x12'),_0x533f01,'request\x20sent',JSON[_0x2d2b('0x13')](_0x2cfed7));if(_0x2cfed7['error']){if(_0x2cfed7['error'][_0x2d2b('0x14')]===0x1f4){logger[_0x2d2b('0x15')]('SmsAccount,\x20%s,\x20%s',_0x533f01,_0x2cfed7[_0x2d2b('0x15')]['message']);return _0x3e698f(_0x2cfed7[_0x2d2b('0x15')][_0x2d2b('0x16')]);}logger[_0x2d2b('0x15')](_0x2d2b('0x17'),_0x533f01,_0x2cfed7[_0x2d2b('0x15')]['message']);return _0x57561e(_0x2cfed7[_0x2d2b('0x15')][_0x2d2b('0x16')]);}else{logger[_0x2d2b('0x18')](_0x2d2b('0x17'),_0x533f01,_0x2d2b('0x10'));_0x57561e(_0x2cfed7['result']['message']);}})['catch'](function(_0x39906a){logger[_0x2d2b('0x15')]('SmsAccount,\x20%s,\x20%s',_0x533f01,_0x39906a);_0x3e698f(_0x39906a);});});}exports[_0x2d2b('0x19')]=function(_0x466e06){var _0x1d5b5d=this;return new Promise(function(_0x31484d,_0x2ed5c3){return db['SmsAccount'][_0x2d2b('0x1a')]({'raw':_0x466e06[_0x2d2b('0x1b')]?_0x466e06[_0x2d2b('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x466e06[_0x2d2b('0x1b')]?_0x466e06[_0x2d2b('0x1b')][_0x2d2b('0x1c')]||null:null,'attributes':_0x466e06[_0x2d2b('0x1b')]?_0x466e06[_0x2d2b('0x1b')]['attributes']||null:null,'include':_0x466e06['options']?_0x466e06[_0x2d2b('0x1b')][_0x2d2b('0x1d')]?_[_0x2d2b('0x1e')](_0x466e06['options']['include'],function(_0x5ef984){return{'model':db[_0x5ef984[_0x2d2b('0x1f')]],'as':_0x5ef984['as'],'attributes':_0x5ef984[_0x2d2b('0x20')],'include':_0x5ef984['include']?_[_0x2d2b('0x1e')](_0x5ef984[_0x2d2b('0x1d')],function(_0x32f4d5){return{'model':db[_0x32f4d5[_0x2d2b('0x1f')]],'as':_0x32f4d5['as'],'attributes':_0x32f4d5[_0x2d2b('0x20')],'include':_0x32f4d5[_0x2d2b('0x1d')]?_[_0x2d2b('0x1e')](_0x32f4d5['include'],function(_0x43f06d){return{'model':db[_0x43f06d[_0x2d2b('0x1f')]],'as':_0x43f06d['as'],'attributes':_0x43f06d[_0x2d2b('0x20')]};}):[]};}):[]};}):[]:[]})[_0x2d2b('0xf')](function(_0x59ada2){logger['info']('ShowSmsAccount',_0x466e06);logger['debug'](_0x2d2b('0x19'),_0x466e06,JSON[_0x2d2b('0x13')](_0x59ada2));_0x31484d(_0x59ada2);})[_0x2d2b('0x21')](function(_0x612e04){logger['error'](_0x2d2b('0x19'),_0x612e04[_0x2d2b('0x16')],_0x466e06);_0x2ed5c3(_0x1d5b5d[_0x2d2b('0x15')](0x1f4,_0x612e04[_0x2d2b('0x16')]));});});};
\ No newline at end of file
+var _0xaf63=['http','redis','defaults','localhost','./smsAccount.socket','register','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','map','include','model','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x4dbaad,_0x730318){var _0x226c72=function(_0x501972){while(--_0x501972){_0x4dbaad['push'](_0x4dbaad['shift']());}};_0x226c72(++_0x730318);}(_0xaf63,0x8d));var _0x3af6=function(_0x8e731c,_0x53de3b){_0x8e731c=_0x8e731c-0x0;var _0x5f2281=_0xaf63[_0x8e731c];return _0x5f2281;};'use strict';var _=require(_0x3af6('0x0'));var util=require(_0x3af6('0x1'));var moment=require(_0x3af6('0x2'));var BPromise=require(_0x3af6('0x3'));var rs=require(_0x3af6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3af6('0x5'))['db'];var utils=require(_0x3af6('0x6'));var logger=require(_0x3af6('0x7'))(_0x3af6('0x8'));var config=require(_0x3af6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3af6('0xa')][_0x3af6('0xb')]({'port':0x232a});config[_0x3af6('0xc')]=_[_0x3af6('0xd')](config[_0x3af6('0xc')],{'host':_0x3af6('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3af6('0xc')]));require(_0x3af6('0xf'))[_0x3af6('0x10')](socket);function respondWithRpcPromise(_0x5b0b4a,_0x35017e,_0x1876f7){return new BPromise(function(_0x1b0d03,_0x129acf){return client['request'](_0x5b0b4a,_0x1876f7)[_0x3af6('0x11')](function(_0x44cb08){logger[_0x3af6('0x12')](_0x3af6('0x13'),_0x35017e,_0x3af6('0x14'));logger[_0x3af6('0x15')](_0x3af6('0x16'),_0x35017e,_0x3af6('0x14'),JSON[_0x3af6('0x17')](_0x44cb08));if(_0x44cb08[_0x3af6('0x18')]){if(_0x44cb08[_0x3af6('0x18')][_0x3af6('0x19')]===0x1f4){logger[_0x3af6('0x18')](_0x3af6('0x13'),_0x35017e,_0x44cb08['error'][_0x3af6('0x1a')]);return _0x129acf(_0x44cb08[_0x3af6('0x18')][_0x3af6('0x1a')]);}logger[_0x3af6('0x18')](_0x3af6('0x13'),_0x35017e,_0x44cb08[_0x3af6('0x18')]['message']);return _0x1b0d03(_0x44cb08[_0x3af6('0x18')][_0x3af6('0x1a')]);}else{logger[_0x3af6('0x12')](_0x3af6('0x13'),_0x35017e,_0x3af6('0x14'));_0x1b0d03(_0x44cb08['result'][_0x3af6('0x1a')]);}})[_0x3af6('0x1b')](function(_0x9de1cb){logger['error'](_0x3af6('0x13'),_0x35017e,_0x9de1cb);_0x129acf(_0x9de1cb);});});}exports[_0x3af6('0x1c')]=function(_0x388830){var _0x6850a3=this;return new Promise(function(_0x476df1,_0x32837b){return db[_0x3af6('0x1d')][_0x3af6('0x1e')]({'raw':_0x388830[_0x3af6('0x1f')]?_0x388830[_0x3af6('0x1f')][_0x3af6('0x20')]===undefined?!![]:![]:!![],'where':_0x388830[_0x3af6('0x1f')]?_0x388830['options'][_0x3af6('0x21')]||null:null,'attributes':_0x388830['options']?_0x388830['options'][_0x3af6('0x22')]||null:null,'include':_0x388830[_0x3af6('0x1f')]?_0x388830[_0x3af6('0x1f')]['include']?_[_0x3af6('0x23')](_0x388830['options'][_0x3af6('0x24')],function(_0xcdab4d){return{'model':db[_0xcdab4d['model']],'as':_0xcdab4d['as'],'attributes':_0xcdab4d['attributes'],'include':_0xcdab4d[_0x3af6('0x24')]?_[_0x3af6('0x23')](_0xcdab4d[_0x3af6('0x24')],function(_0x5df7d2){return{'model':db[_0x5df7d2[_0x3af6('0x25')]],'as':_0x5df7d2['as'],'attributes':_0x5df7d2[_0x3af6('0x22')],'include':_0x5df7d2[_0x3af6('0x24')]?_[_0x3af6('0x23')](_0x5df7d2[_0x3af6('0x24')],function(_0xb99f37){return{'model':db[_0xb99f37[_0x3af6('0x25')]],'as':_0xb99f37['as'],'attributes':_0xb99f37[_0x3af6('0x22')]};}):[]};}):[]};}):[]:[]})[_0x3af6('0x11')](function(_0x4d5e1c){logger[_0x3af6('0x12')](_0x3af6('0x1c'),_0x388830);logger[_0x3af6('0x15')]('ShowSmsAccount',_0x388830,JSON['stringify'](_0x4d5e1c));_0x476df1(_0x4d5e1c);})['catch'](function(_0x2c2d16){logger[_0x3af6('0x18')](_0x3af6('0x1c'),_0x2c2d16['message'],_0x388830);_0x32837b(_0x6850a3['error'](0x1f4,_0x2c2d16[_0x3af6('0x1a')]));});});};
\ No newline at end of file
index fce7fde..8a695f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 16b2886..40db066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x50cb9d,_0x49ab54){var _0x53ec7c=function(_0x59e3ac){while(--_0x59e3ac){_0x50cb9d['push'](_0x50cb9d['shift']());}};_0x53ec7c(++_0x49ab54);}(_0x7217,0x19e));var _0x7721=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x7217[_0x47b58b];return _0x46bebe;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
+var _0xedd9=['post','create','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x36c108,_0x42beab){var _0x388386=function(_0x1d329a){while(--_0x1d329a){_0x36c108['push'](_0x36c108['shift']());}};_0x388386(++_0x42beab);}(_0xedd9,0xfc));var _0x9edd=function(_0x3e7687,_0x403224){_0x3e7687=_0x3e7687-0x0;var _0x378eee=_0xedd9[_0x3e7687];return _0x378eee;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0xe')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['put'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x10')]);router[_0x9edd('0x11')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);module['exports']=router;
\ No newline at end of file
index 72b1f04..d8397a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3651=['*,*,*,*','sequelize','exports','STRING','noop'];(function(_0x2973d7,_0x3b6bbe){var _0x4a319d=function(_0x3b1183){while(--_0x3b1183){_0x2973d7['push'](_0x2973d7['shift']());}};_0x4a319d(++_0x3b6bbe);}(_0x3651,0x1e1));var _0x1365=function(_0x49df19,_0x22eb80){_0x49df19=_0x49df19-0x0;var _0x154d18=_0x3651[_0x49df19];return _0x154d18;};'use strict';var Sequelize=require(_0x1365('0x0'));module[_0x1365('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x1365('0x2')],'allowNull':![],'defaultValue':_0x1365('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x1365('0x2')]},'interval':{'type':Sequelize[_0x1365('0x2')],'defaultValue':_0x1365('0x4')}};
\ No newline at end of file
+var _0xe1cd=['INTEGER','STRING','TEXT','*,*,*,*','sequelize','exports'];(function(_0xcb0da3,_0x253aa1){var _0x233243=function(_0x36daf7){while(--_0x36daf7){_0xcb0da3['push'](_0xcb0da3['shift']());}};_0x233243(++_0x253aa1);}(_0xe1cd,0x1b4));var _0xde1c=function(_0x43c552,_0x47c22b){_0x43c552=_0x43c552-0x0;var _0x41e80a=_0xe1cd[_0x43c552];return _0x41e80a;};'use strict';var Sequelize=require(_0xde1c('0x0'));module[_0xde1c('0x1')]={'priority':{'type':Sequelize[_0xde1c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xde1c('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xde1c('0x4')]()},'description':{'type':Sequelize[_0xde1c('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xde1c('0x5')}};
\ No newline at end of file
index 3c8749e..e7d726b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f1e=['../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','apply','reject','save','then','destroy','name','send','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','SmsApplication','includeAll','include','catch','find','create','body','update','params','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x5f45ea,_0x1fcf63){var _0x2b8768=function(_0x42df3d){while(--_0x42df3d){_0x5f45ea['push'](_0x5f45ea['shift']());}};_0x2b8768(++_0x1fcf63);}(_0x9f1e,0x1b2));var _0xe9f1=function(_0x42b10f,_0x9c781b){_0x42b10f=_0x42b10f-0x0;var _0x470fe4=_0x9f1e[_0x42b10f];return _0x470fe4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9f1('0x0'));var zipdir=require(_0xe9f1('0x1'));var jsonpatch=require(_0xe9f1('0x2'));var rp=require('request-promise');var moment=require(_0xe9f1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe9f1('0x4'));var util=require(_0xe9f1('0x5'));var path=require(_0xe9f1('0x6'));var sox=require(_0xe9f1('0x7'));var csv=require(_0xe9f1('0x8'));var ejs=require(_0xe9f1('0x9'));var fs=require('fs');var fs_extra=require(_0xe9f1('0xa'));var _=require(_0xe9f1('0xb'));var squel=require(_0xe9f1('0xc'));var crypto=require(_0xe9f1('0xd'));var jsforce=require(_0xe9f1('0xe'));var deskjs=require(_0xe9f1('0xf'));var toCsv=require(_0xe9f1('0x8'));var querystring=require(_0xe9f1('0x10'));var Papa=require(_0xe9f1('0x11'));var Redis=require(_0xe9f1('0x12'));var authService=require(_0xe9f1('0x13'));var qs=require(_0xe9f1('0x14'));var as=require(_0xe9f1('0x15'));var hardwareService=require(_0xe9f1('0x16'));var logger=require(_0xe9f1('0x17'))(_0xe9f1('0x18'));var utils=require(_0xe9f1('0x19'));var config=require(_0xe9f1('0x1a'));var licenseUtil=require(_0xe9f1('0x1b'));var db=require(_0xe9f1('0x1c'))['db'];function respondWithStatusCode(_0x3b7bdd,_0x3771c3){_0x3771c3=_0x3771c3||0xcc;return function(_0x466805){if(_0x466805){return _0x3b7bdd[_0xe9f1('0x1d')](_0x3771c3);}return _0x3b7bdd['status'](_0x3771c3)[_0xe9f1('0x1e')]();};}function respondWithResult(_0x3a60a1,_0xac44c){_0xac44c=_0xac44c||0xc8;return function(_0x36430c){if(_0x36430c){return _0x3a60a1['status'](_0xac44c)[_0xe9f1('0x1f')](_0x36430c);}};}function respondWithFilteredResult(_0x393a6d,_0xad7894){return function(_0x3badb5){if(_0x3badb5){var _0x45d7c8=typeof _0xad7894[_0xe9f1('0x20')]===_0xe9f1('0x21')&&typeof _0xad7894[_0xe9f1('0x22')]===_0xe9f1('0x21');var _0x4bcc2b=_0x3badb5[_0xe9f1('0x23')];var _0x2ae525=_0x45d7c8?0x0:_0xad7894[_0xe9f1('0x20')];var _0x44866a=_0x45d7c8?_0x3badb5[_0xe9f1('0x23')]:_0xad7894[_0xe9f1('0x20')]+_0xad7894['limit'];var _0x153085;if(_0x44866a>=_0x4bcc2b){_0x44866a=_0x4bcc2b;_0x153085=0xc8;}else{_0x153085=0xce;}_0x393a6d[_0xe9f1('0x24')](_0x153085);return _0x393a6d[_0xe9f1('0x25')]('Content-Range',_0x2ae525+'-'+_0x44866a+'/'+_0x4bcc2b)[_0xe9f1('0x1f')](_0x3badb5);}return null;};}function patchUpdates(_0x516bfe){return function(_0x1e2016){try{jsonpatch[_0xe9f1('0x26')](_0x1e2016,_0x516bfe,!![]);}catch(_0x899b7b){return BPromise[_0xe9f1('0x27')](_0x899b7b);}return _0x1e2016[_0xe9f1('0x28')]();};}function saveUpdates(_0x4b4532,_0x2db57c){return function(_0x40a8d3){if(_0x40a8d3){return _0x40a8d3['update'](_0x4b4532)[_0xe9f1('0x29')](function(_0x448338){return _0x448338;});}return null;};}function removeEntity(_0x27f633,_0x42284b){return function(_0x30319e){if(_0x30319e){return _0x30319e[_0xe9f1('0x2a')]()[_0xe9f1('0x29')](function(){_0x27f633['status'](0xcc)[_0xe9f1('0x1e')]();});}};}function handleEntityNotFound(_0x3a65ac,_0x4f9492){return function(_0x482a16){if(!_0x482a16){_0x3a65ac[_0xe9f1('0x1d')](0x194);}return _0x482a16;};}function handleError(_0x29dcfa,_0x26f327){_0x26f327=_0x26f327||0x1f4;return function(_0x252827){logger['error'](_0x252827['stack']);if(_0x252827[_0xe9f1('0x2b')]){delete _0x252827[_0xe9f1('0x2b')];}_0x29dcfa[_0xe9f1('0x24')](_0x26f327)[_0xe9f1('0x2c')](_0x252827);};}exports['index']=function(_0x275a9d,_0x6e2b6a){var _0x4f332f={},_0x3a6cd2={},_0x1f772f={'count':0x0,'rows':[]};var _0x1fe414=_['map'](db['SmsApplication'][_0xe9f1('0x2d')],function(_0x1e15d3){return{'name':_0x1e15d3[_0xe9f1('0x2e')],'type':_0x1e15d3[_0xe9f1('0x2f')][_0xe9f1('0x30')]};});_0x3a6cd2['model']=_[_0xe9f1('0x31')](_0x1fe414,_0xe9f1('0x2b'));_0x3a6cd2[_0xe9f1('0x32')]=_[_0xe9f1('0x33')](_0x275a9d['query']);_0x3a6cd2[_0xe9f1('0x34')]=_[_0xe9f1('0x35')](_0x3a6cd2[_0xe9f1('0x36')],_0x3a6cd2[_0xe9f1('0x32')]);_0x4f332f[_0xe9f1('0x37')]=_[_0xe9f1('0x35')](_0x3a6cd2[_0xe9f1('0x36')],qs[_0xe9f1('0x38')](_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x38')]));_0x4f332f[_0xe9f1('0x37')]=_0x4f332f[_0xe9f1('0x37')][_0xe9f1('0x39')]?_0x4f332f['attributes']:_0x3a6cd2[_0xe9f1('0x36')];if(!_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x3a')](_0xe9f1('0x3b'))){_0x4f332f[_0xe9f1('0x22')]=qs[_0xe9f1('0x22')](_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x22')]);_0x4f332f['offset']=qs[_0xe9f1('0x20')](_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x20')]);}_0x4f332f[_0xe9f1('0x3c')]=qs[_0xe9f1('0x3d')](_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x3d')]);_0x4f332f[_0xe9f1('0x3e')]=qs[_0xe9f1('0x34')](_[_0xe9f1('0x3f')](_0x275a9d['query'],_0x3a6cd2[_0xe9f1('0x34')]),_0x1fe414);if(_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x40')]){_0x4f332f[_0xe9f1('0x3e')]=_['merge'](_0x4f332f[_0xe9f1('0x3e')],{'$or':_[_0xe9f1('0x31')](_0x1fe414,function(_0x26bd29){if(_0x26bd29[_0xe9f1('0x2f')]!==_0xe9f1('0x41')){var _0x3e8a7b={};_0x3e8a7b[_0x26bd29[_0xe9f1('0x2b')]]={'$like':'%'+_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x40')]+'%'};return _0x3e8a7b;}})});}_0x4f332f=_[_0xe9f1('0x42')]({},_0x4f332f,_0x275a9d[_0xe9f1('0x43')]);var _0x1cfd28={'where':_0x4f332f[_0xe9f1('0x3e')]};return db[_0xe9f1('0x44')][_0xe9f1('0x23')](_0x1cfd28)[_0xe9f1('0x29')](function(_0x5d41b7){_0x1f772f[_0xe9f1('0x23')]=_0x5d41b7;if(_0x275a9d[_0xe9f1('0x32')][_0xe9f1('0x45')]){_0x4f332f[_0xe9f1('0x46')]=[{'all':!![]}];}return db[_0xe9f1('0x44')]['findAll'](_0x4f332f);})['then'](function(_0x5bb77e){_0x1f772f['rows']=_0x5bb77e;return _0x1f772f;})['then'](respondWithFilteredResult(_0x6e2b6a,_0x4f332f))[_0xe9f1('0x47')](handleError(_0x6e2b6a,null));};exports['show']=function(_0x5161e3,_0x3f6f7a){var _0x1b15d5={'raw':!![],'where':{'id':_0x5161e3['params']['id']}},_0x230edf={};_0x230edf[_0xe9f1('0x36')]=_[_0xe9f1('0x33')](db[_0xe9f1('0x44')]['rawAttributes']);_0x230edf[_0xe9f1('0x32')]=_[_0xe9f1('0x33')](_0x5161e3['query']);_0x230edf[_0xe9f1('0x34')]=_[_0xe9f1('0x35')](_0x230edf[_0xe9f1('0x36')],_0x230edf['query']);_0x1b15d5['attributes']=_['intersection'](_0x230edf[_0xe9f1('0x36')],qs[_0xe9f1('0x38')](_0x5161e3['query'][_0xe9f1('0x38')]));_0x1b15d5[_0xe9f1('0x37')]=_0x1b15d5['attributes']['length']?_0x1b15d5[_0xe9f1('0x37')]:_0x230edf[_0xe9f1('0x36')];if(_0x5161e3[_0xe9f1('0x32')][_0xe9f1('0x45')]){_0x1b15d5[_0xe9f1('0x46')]=[{'all':!![]}];}_0x1b15d5=_['merge']({},_0x1b15d5,_0x5161e3[_0xe9f1('0x43')]);return db['SmsApplication'][_0xe9f1('0x48')](_0x1b15d5)[_0xe9f1('0x29')](handleEntityNotFound(_0x3f6f7a,null))[_0xe9f1('0x29')](respondWithResult(_0x3f6f7a,null))[_0xe9f1('0x47')](handleError(_0x3f6f7a,null));};exports[_0xe9f1('0x49')]=function(_0x15375e,_0x4d76dd){return db[_0xe9f1('0x44')][_0xe9f1('0x49')](_0x15375e[_0xe9f1('0x4a')],{})[_0xe9f1('0x29')](respondWithResult(_0x4d76dd,0xc9))[_0xe9f1('0x47')](handleError(_0x4d76dd,null));};exports[_0xe9f1('0x4b')]=function(_0x4a98de,_0x361299){if(_0x4a98de[_0xe9f1('0x4a')]['id']){delete _0x4a98de['body']['id'];}return db[_0xe9f1('0x44')]['find']({'where':{'id':_0x4a98de[_0xe9f1('0x4c')]['id']}})[_0xe9f1('0x29')](handleEntityNotFound(_0x361299,null))[_0xe9f1('0x29')](saveUpdates(_0x4a98de['body'],null))[_0xe9f1('0x29')](respondWithResult(_0x361299,null))[_0xe9f1('0x47')](handleError(_0x361299,null));};exports[_0xe9f1('0x2a')]=function(_0x34f942,_0x1488be){return db[_0xe9f1('0x44')]['find']({'where':{'id':_0x34f942['params']['id']}})[_0xe9f1('0x29')](handleEntityNotFound(_0x1488be,null))[_0xe9f1('0x29')](removeEntity(_0x1488be,null))[_0xe9f1('0x47')](handleError(_0x1488be,null));};
\ No newline at end of file
+var _0x5da0=['jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','catch','includeAll','find','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto'];(function(_0x58dddd,_0x3d48af){var _0x41c602=function(_0xc9e034){while(--_0xc9e034){_0x58dddd['push'](_0x58dddd['shift']());}};_0x41c602(++_0x3d48af);}(_0x5da0,0x1ae));var _0x05da=function(_0x39862c,_0x267302){_0x39862c=_0x39862c-0x0;var _0x4939ab=_0x5da0[_0x39862c];return _0x4939ab;};'use strict';var emlformat=require(_0x05da('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x05da('0x1'));var jsonpatch=require(_0x05da('0x2'));var rp=require(_0x05da('0x3'));var moment=require(_0x05da('0x4'));var BPromise=require(_0x05da('0x5'));var Mustache=require(_0x05da('0x6'));var util=require(_0x05da('0x7'));var path=require(_0x05da('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x05da('0x9'));var fs=require('fs');var fs_extra=require(_0x05da('0xa'));var _=require(_0x05da('0xb'));var squel=require(_0x05da('0xc'));var crypto=require(_0x05da('0xd'));var jsforce=require(_0x05da('0xe'));var deskjs=require(_0x05da('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x05da('0x10'));var qs=require(_0x05da('0x11'));var as=require(_0x05da('0x12'));var hardwareService=require(_0x05da('0x13'));var logger=require(_0x05da('0x14'))(_0x05da('0x15'));var utils=require(_0x05da('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x05da('0x17'));var db=require(_0x05da('0x18'))['db'];function respondWithStatusCode(_0x3c97ea,_0x52e9a6){_0x52e9a6=_0x52e9a6||0xcc;return function(_0x3e5bbd){if(_0x3e5bbd){return _0x3c97ea[_0x05da('0x19')](_0x52e9a6);}return _0x3c97ea[_0x05da('0x1a')](_0x52e9a6)[_0x05da('0x1b')]();};}function respondWithResult(_0x309bdc,_0x5006f7){_0x5006f7=_0x5006f7||0xc8;return function(_0x2d941a){if(_0x2d941a){return _0x309bdc['status'](_0x5006f7)[_0x05da('0x1c')](_0x2d941a);}};}function respondWithFilteredResult(_0x9b9fdb,_0x4a137f){return function(_0x2cf932){if(_0x2cf932){var _0x5ebef5=typeof _0x4a137f[_0x05da('0x1d')]===_0x05da('0x1e')&&typeof _0x4a137f[_0x05da('0x1f')]===_0x05da('0x1e');var _0x13ef21=_0x2cf932[_0x05da('0x20')];var _0x23fe32=_0x5ebef5?0x0:_0x4a137f[_0x05da('0x1d')];var _0x2bd169=_0x5ebef5?_0x2cf932[_0x05da('0x20')]:_0x4a137f[_0x05da('0x1d')]+_0x4a137f[_0x05da('0x1f')];var _0x271699;if(_0x2bd169>=_0x13ef21){_0x2bd169=_0x13ef21;_0x271699=0xc8;}else{_0x271699=0xce;}_0x9b9fdb['status'](_0x271699);return _0x9b9fdb[_0x05da('0x21')](_0x05da('0x22'),_0x23fe32+'-'+_0x2bd169+'/'+_0x13ef21)[_0x05da('0x1c')](_0x2cf932);}return null;};}function patchUpdates(_0x309779){return function(_0x14ce66){try{jsonpatch[_0x05da('0x23')](_0x14ce66,_0x309779,!![]);}catch(_0x2db6be){return BPromise['reject'](_0x2db6be);}return _0x14ce66[_0x05da('0x24')]();};}function saveUpdates(_0x527b05,_0x58fbb9){return function(_0x3cc05f){if(_0x3cc05f){return _0x3cc05f[_0x05da('0x25')](_0x527b05)['then'](function(_0x2b8e00){return _0x2b8e00;});}return null;};}function removeEntity(_0x384c5a,_0x326086){return function(_0x27c989){if(_0x27c989){return _0x27c989[_0x05da('0x26')]()[_0x05da('0x27')](function(){_0x384c5a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3069dd,_0x5b7606){return function(_0x344ab9){if(!_0x344ab9){_0x3069dd[_0x05da('0x19')](0x194);}return _0x344ab9;};}function handleError(_0x2ce393,_0x2304ca){_0x2304ca=_0x2304ca||0x1f4;return function(_0x1d63e0){logger[_0x05da('0x28')](_0x1d63e0[_0x05da('0x29')]);if(_0x1d63e0[_0x05da('0x2a')]){delete _0x1d63e0[_0x05da('0x2a')];}_0x2ce393['status'](_0x2304ca)[_0x05da('0x2b')](_0x1d63e0);};}exports[_0x05da('0x2c')]=function(_0x5a5876,_0x4e1748){var _0x2d0c70={},_0xe4b47a={},_0x21e7c5={'count':0x0,'rows':[]};var _0x4d21d0=_[_0x05da('0x2d')](db[_0x05da('0x2e')][_0x05da('0x2f')],function(_0x156b8a){return{'name':_0x156b8a[_0x05da('0x30')],'type':_0x156b8a[_0x05da('0x31')][_0x05da('0x32')]};});_0xe4b47a[_0x05da('0x33')]=_[_0x05da('0x2d')](_0x4d21d0,_0x05da('0x2a'));_0xe4b47a[_0x05da('0x34')]=_[_0x05da('0x35')](_0x5a5876[_0x05da('0x34')]);_0xe4b47a[_0x05da('0x36')]=_[_0x05da('0x37')](_0xe4b47a['model'],_0xe4b47a[_0x05da('0x34')]);_0x2d0c70['attributes']=_[_0x05da('0x37')](_0xe4b47a[_0x05da('0x33')],qs[_0x05da('0x38')](_0x5a5876[_0x05da('0x34')][_0x05da('0x38')]));_0x2d0c70[_0x05da('0x39')]=_0x2d0c70[_0x05da('0x39')][_0x05da('0x3a')]?_0x2d0c70[_0x05da('0x39')]:_0xe4b47a[_0x05da('0x33')];if(!_0x5a5876[_0x05da('0x34')][_0x05da('0x3b')](_0x05da('0x3c'))){_0x2d0c70['limit']=qs[_0x05da('0x1f')](_0x5a5876[_0x05da('0x34')]['limit']);_0x2d0c70['offset']=qs[_0x05da('0x1d')](_0x5a5876['query'][_0x05da('0x1d')]);}_0x2d0c70[_0x05da('0x3d')]=qs[_0x05da('0x3e')](_0x5a5876['query'][_0x05da('0x3e')]);_0x2d0c70[_0x05da('0x3f')]=qs[_0x05da('0x36')](_[_0x05da('0x40')](_0x5a5876['query'],_0xe4b47a[_0x05da('0x36')]),_0x4d21d0);if(_0x5a5876[_0x05da('0x34')][_0x05da('0x41')]){_0x2d0c70[_0x05da('0x3f')]=_[_0x05da('0x42')](_0x2d0c70[_0x05da('0x3f')],{'$or':_[_0x05da('0x2d')](_0x4d21d0,function(_0x5e2747){if(_0x5e2747[_0x05da('0x31')]!==_0x05da('0x43')){var _0x45e682={};_0x45e682[_0x5e2747[_0x05da('0x2a')]]={'$like':'%'+_0x5a5876['query'][_0x05da('0x41')]+'%'};return _0x45e682;}})});}_0x2d0c70=_[_0x05da('0x42')]({},_0x2d0c70,_0x5a5876[_0x05da('0x44')]);var _0x51192d={'where':_0x2d0c70[_0x05da('0x3f')]};return db[_0x05da('0x2e')][_0x05da('0x20')](_0x51192d)[_0x05da('0x27')](function(_0x44e223){_0x21e7c5[_0x05da('0x20')]=_0x44e223;if(_0x5a5876[_0x05da('0x34')]['includeAll']){_0x2d0c70[_0x05da('0x45')]=[{'all':!![]}];}return db[_0x05da('0x2e')]['findAll'](_0x2d0c70);})[_0x05da('0x27')](function(_0x23e495){_0x21e7c5['rows']=_0x23e495;return _0x21e7c5;})['then'](respondWithFilteredResult(_0x4e1748,_0x2d0c70))[_0x05da('0x46')](handleError(_0x4e1748,null));};exports['show']=function(_0x11045c,_0x5eb435){var _0x3b4d26={'raw':!![],'where':{'id':_0x11045c['params']['id']}},_0x3b4f11={};_0x3b4f11[_0x05da('0x33')]=_[_0x05da('0x35')](db['SmsApplication'][_0x05da('0x2f')]);_0x3b4f11[_0x05da('0x34')]=_[_0x05da('0x35')](_0x11045c[_0x05da('0x34')]);_0x3b4f11[_0x05da('0x36')]=_[_0x05da('0x37')](_0x3b4f11[_0x05da('0x33')],_0x3b4f11[_0x05da('0x34')]);_0x3b4d26['attributes']=_[_0x05da('0x37')](_0x3b4f11[_0x05da('0x33')],qs[_0x05da('0x38')](_0x11045c[_0x05da('0x34')]['fields']));_0x3b4d26[_0x05da('0x39')]=_0x3b4d26[_0x05da('0x39')][_0x05da('0x3a')]?_0x3b4d26[_0x05da('0x39')]:_0x3b4f11['model'];if(_0x11045c['query'][_0x05da('0x47')]){_0x3b4d26[_0x05da('0x45')]=[{'all':!![]}];}_0x3b4d26=_[_0x05da('0x42')]({},_0x3b4d26,_0x11045c[_0x05da('0x44')]);return db[_0x05da('0x2e')][_0x05da('0x48')](_0x3b4d26)[_0x05da('0x27')](handleEntityNotFound(_0x5eb435,null))[_0x05da('0x27')](respondWithResult(_0x5eb435,null))[_0x05da('0x46')](handleError(_0x5eb435,null));};exports['create']=function(_0x25dc4c,_0x1be7a2){return db[_0x05da('0x2e')]['create'](_0x25dc4c[_0x05da('0x49')],{})[_0x05da('0x27')](respondWithResult(_0x1be7a2,0xc9))[_0x05da('0x46')](handleError(_0x1be7a2,null));};exports[_0x05da('0x25')]=function(_0x451729,_0x54a79b){if(_0x451729[_0x05da('0x49')]['id']){delete _0x451729[_0x05da('0x49')]['id'];}return db[_0x05da('0x2e')][_0x05da('0x48')]({'where':{'id':_0x451729['params']['id']}})[_0x05da('0x27')](handleEntityNotFound(_0x54a79b,null))[_0x05da('0x27')](saveUpdates(_0x451729[_0x05da('0x49')],null))['then'](respondWithResult(_0x54a79b,null))[_0x05da('0x46')](handleError(_0x54a79b,null));};exports[_0x05da('0x26')]=function(_0x3d07a0,_0x3d1137){return db[_0x05da('0x2e')][_0x05da('0x48')]({'where':{'id':_0x3d07a0['params']['id']}})['then'](handleEntityNotFound(_0x3d1137,null))['then'](removeEntity(_0x3d1137,null))[_0x05da('0x46')](handleError(_0x3d1137,null));};
\ No newline at end of file
index 4df5367..0ac36ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66b4=['utf8mb4_unicode_ci','lodash','util','../../config/logger','request-promise','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4'];(function(_0x1b583f,_0xdb6f56){var _0x3a03e0=function(_0x1ee4d6){while(--_0x1ee4d6){_0x1b583f['push'](_0x1b583f['shift']());}};_0x3a03e0(++_0xdb6f56);}(_0x66b4,0xfe));var _0x466b=function(_0x8bb77e,_0x31f3b0){_0x8bb77e=_0x8bb77e-0x0;var _0x4d8964=_0x66b4[_0x8bb77e];return _0x4d8964;};'use strict';var _=require(_0x466b('0x0'));var util=require(_0x466b('0x1'));var logger=require(_0x466b('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x466b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x466b('0x4'));module[_0x466b('0x5')]=function(_0x299069,_0x1e9146){return _0x299069[_0x466b('0x6')](_0x466b('0x7'),attributes,{'tableName':_0x466b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x466b('0x9'),'collate':_0x466b('0xa')});};
\ No newline at end of file
+var _0x9391=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x18f6db,_0x1473be){var _0x34b33b=function(_0x4b7984){while(--_0x4b7984){_0x18f6db['push'](_0x18f6db['shift']());}};_0x34b33b(++_0x1473be);}(_0x9391,0x188));var _0x1939=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x9391[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x1939('0x0'));var util=require(_0x1939('0x1'));var logger=require(_0x1939('0x2'))(_0x1939('0x3'));var moment=require(_0x1939('0x4'));var BPromise=require(_0x1939('0x5'));var rp=require(_0x1939('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1939('0x7'));var attributes=require('./smsApplication.attributes');module[_0x1939('0x8')]=function(_0x344826,_0x4d163a){return _0x344826[_0x1939('0x9')](_0x1939('0xa'),attributes,{'tableName':_0x1939('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1939('0xc'),'collate':_0x1939('0xd')});};
\ No newline at end of file
index 86fdded..753ff44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f1=['request','then','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','util','moment','bluebird','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x1fa63e,_0x14aea6){var _0x11ecea=function(_0xb61878){while(--_0xb61878){_0x1fa63e['push'](_0x1fa63e['shift']());}};_0x11ecea(++_0x14aea6);}(_0xf0f1,0x110));var _0x1f0f=function(_0x271060,_0x3f86b1){_0x271060=_0x271060-0x0;var _0x40540b=_0xf0f1[_0x271060];return _0x40540b;};'use strict';var _=require('lodash');var util=require(_0x1f0f('0x0'));var moment=require(_0x1f0f('0x1'));var BPromise=require(_0x1f0f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1f0f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1f0f('0x4'))('rpc');var config=require(_0x1f0f('0x5'));var jayson=require(_0x1f0f('0x6'));var client=jayson[_0x1f0f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x145125,_0x31266f,_0x368a4f){return new BPromise(function(_0x43e7fa,_0x2aa60d){return client[_0x1f0f('0x8')](_0x145125,_0x368a4f)[_0x1f0f('0x9')](function(_0x4ed5fb){logger['info'](_0x1f0f('0xa'),_0x31266f,_0x1f0f('0xb'));logger['debug'](_0x1f0f('0xc'),_0x31266f,_0x1f0f('0xb'),JSON[_0x1f0f('0xd')](_0x4ed5fb));if(_0x4ed5fb['error']){if(_0x4ed5fb['error'][_0x1f0f('0xe')]===0x1f4){logger['error'](_0x1f0f('0xa'),_0x31266f,_0x4ed5fb[_0x1f0f('0xf')][_0x1f0f('0x10')]);return _0x2aa60d(_0x4ed5fb[_0x1f0f('0xf')][_0x1f0f('0x10')]);}logger[_0x1f0f('0xf')](_0x1f0f('0xa'),_0x31266f,_0x4ed5fb[_0x1f0f('0xf')][_0x1f0f('0x10')]);return _0x43e7fa(_0x4ed5fb[_0x1f0f('0xf')][_0x1f0f('0x10')]);}else{logger[_0x1f0f('0x11')](_0x1f0f('0xa'),_0x31266f,_0x1f0f('0xb'));_0x43e7fa(_0x4ed5fb[_0x1f0f('0x12')]['message']);}})[_0x1f0f('0x13')](function(_0x22d72c){logger[_0x1f0f('0xf')](_0x1f0f('0xa'),_0x31266f,_0x22d72c);_0x2aa60d(_0x22d72c);});});}
\ No newline at end of file
+var _0xdfdd=['request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','SmsApplication,\x20%s,\x20%s'];(function(_0x1a72b8,_0x1e4f4b){var _0x39f72d=function(_0x35aef1){while(--_0x35aef1){_0x1a72b8['push'](_0x1a72b8['shift']());}};_0x39f72d(++_0x1e4f4b);}(_0xdfdd,0x104));var _0xddfd=function(_0xec6273,_0x556636){_0xec6273=_0xec6273-0x0;var _0x1ceb76=_0xdfdd[_0xec6273];return _0x1ceb76;};'use strict';var _=require(_0xddfd('0x0'));var util=require(_0xddfd('0x1'));var moment=require(_0xddfd('0x2'));var BPromise=require(_0xddfd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xddfd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xddfd('0x5'));var logger=require('../../config/logger')(_0xddfd('0x6'));var config=require(_0xddfd('0x7'));var jayson=require(_0xddfd('0x8'));var client=jayson[_0xddfd('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25fcbc,_0x485ede,_0x2e8f21){return new BPromise(function(_0x45bdd0,_0xf134d7){return client[_0xddfd('0xa')](_0x25fcbc,_0x2e8f21)[_0xddfd('0xb')](function(_0x2a3b1e){logger['info'](_0xddfd('0xc'),_0x485ede,_0xddfd('0xd'));logger['debug'](_0xddfd('0xe'),_0x485ede,_0xddfd('0xd'),JSON[_0xddfd('0xf')](_0x2a3b1e));if(_0x2a3b1e[_0xddfd('0x10')]){if(_0x2a3b1e[_0xddfd('0x10')]['code']===0x1f4){logger[_0xddfd('0x10')]('SmsApplication,\x20%s,\x20%s',_0x485ede,_0x2a3b1e[_0xddfd('0x10')]['message']);return _0xf134d7(_0x2a3b1e[_0xddfd('0x10')]['message']);}logger[_0xddfd('0x10')]('SmsApplication,\x20%s,\x20%s',_0x485ede,_0x2a3b1e[_0xddfd('0x10')][_0xddfd('0x11')]);return _0x45bdd0(_0x2a3b1e[_0xddfd('0x10')][_0xddfd('0x11')]);}else{logger[_0xddfd('0x12')]('SmsApplication,\x20%s,\x20%s',_0x485ede,_0xddfd('0xd'));_0x45bdd0(_0x2a3b1e[_0xddfd('0x13')][_0xddfd('0x11')]);}})[_0xddfd('0x14')](function(_0xa85d01){logger[_0xddfd('0x10')](_0xddfd('0xc'),_0x485ede,_0xa85d01);_0xf134d7(_0xa85d01);});});}
\ No newline at end of file
index a2830c5..dc39ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','smsinteraction:addtags','addTags','put','tracked','sms','smsinteraction:update','update','delete','smsinteraction:destroy','/:id/tags','removeTags','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x262a16,_0x43f5b3){var _0x2a544d=function(_0x22ae0e){while(--_0x22ae0e){_0x262a16['push'](_0x262a16['shift']());}};_0x2a544d(++_0x43f5b3);}(_0x36ee,0xe8));var _0xe36e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36ee[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe36e('0x0'));var timeout=require('connect-timeout');var express=require(_0xe36e('0x1'));var router=express[_0xe36e('0x2')]();var fs_extra=require(_0xe36e('0x3'));var auth=require(_0xe36e('0x4'));var interaction=require(_0xe36e('0x5'));var config=require(_0xe36e('0x6'));var controller=require(_0xe36e('0x7'));router[_0xe36e('0x8')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0xa')]);router[_0xe36e('0x8')](_0xe36e('0xb'),auth['isAuthenticated'](),controller[_0xe36e('0xc')]);router['get'](_0xe36e('0xd'),auth[_0xe36e('0x9')](),controller[_0xe36e('0xe')]);router['get'](_0xe36e('0xf'),auth['isAuthenticated'](),controller[_0xe36e('0x10')]);router[_0xe36e('0x8')](_0xe36e('0x11'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x12')]);router[_0xe36e('0x13')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0x14')]);router['post'](_0xe36e('0xf'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x15')]);router[_0xe36e('0x13')]('/:id/tags',auth[_0xe36e('0x9')](),interaction['tracked']('sms',_0xe36e('0x16')),controller[_0xe36e('0x17')]);router[_0xe36e('0x18')](_0xe36e('0xd'),auth[_0xe36e('0x9')](),interaction[_0xe36e('0x19')](_0xe36e('0x1a'),_0xe36e('0x1b')),controller[_0xe36e('0x1c')]);router[_0xe36e('0x1d')]('/:id',auth[_0xe36e('0x9')](),interaction[_0xe36e('0x19')]('sms',_0xe36e('0x1e')),controller['destroy']);router[_0xe36e('0x1d')](_0xe36e('0x1f'),auth['isAuthenticated'](),controller[_0xe36e('0x20')]);module[_0xe36e('0x21')]=router;
\ No newline at end of file
+var _0x0b0e=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','getMessages','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','put','smsinteraction:update','delete','exports','multer'];(function(_0x2b1db9,_0x38e07a){var _0xca2870=function(_0x223d7b){while(--_0x223d7b){_0x2b1db9['push'](_0x2b1db9['shift']());}};_0xca2870(++_0x38e07a);}(_0x0b0e,0x187));var _0xe0b0=function(_0x3d1244,_0x156028){_0x3d1244=_0x3d1244-0x0;var _0x5d6372=_0x0b0e[_0x3d1244];return _0x5d6372;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['show']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/download',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x11')](_0xe0b0('0xe'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x13')]);router['post'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),interaction[_0xe0b0('0x15')](_0xe0b0('0x16'),_0xe0b0('0x17')),controller['addTags']);router[_0xe0b0('0x18')]('/:id',auth[_0xe0b0('0xa')](),interaction[_0xe0b0('0x15')]('sms',_0xe0b0('0x19')),controller['update']);router[_0xe0b0('0x1a')](_0xe0b0('0xd'),auth['isAuthenticated'](),interaction['tracked'](_0xe0b0('0x16'),'smsinteraction:destroy'),controller['destroy']);router['delete'](_0xe0b0('0x14'),auth['isAuthenticated'](),controller['removeTags']);module[_0xe0b0('0x1b')]=router;
\ No newline at end of file
index 4d357f2..55d8efe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x455d=['DATE','STRING','ENUM','out','exports','BOOLEAN'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x455d,0x190));var _0xd455=function(_0x24081b,_0x34ce90){_0x24081b=_0x24081b-0x0;var _0x19fbdc=_0x455d[_0x24081b];return _0x19fbdc;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xd455('0x0')]={'closed':{'type':Sequelize[_0xd455('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd455('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xd455('0x3')]},'thirdDisposition':{'type':Sequelize[_0xd455('0x3')]},'note':{'type':Sequelize[_0xd455('0x3')]},'phone':{'type':Sequelize[_0xd455('0x3')]},'read1stAt':{'type':Sequelize[_0xd455('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xd455('0x4')]('in',_0xd455('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd455('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xd455('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xd455('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3831=['STRING','ENUM','sequelize','exports','BOOLEAN','DATE'];(function(_0x182385,_0x107b84){var _0x3f2788=function(_0xf3363f){while(--_0xf3363f){_0x182385['push'](_0x182385['shift']());}};_0x3f2788(++_0x107b84);}(_0x3831,0x14c));var _0x1383=function(_0x3888bc,_0x3539a2){_0x3888bc=_0x3888bc-0x0;var _0x59d7c1=_0x3831[_0x3888bc];return _0x59d7c1;};'use strict';var Sequelize=require(_0x1383('0x0'));var moment=require('moment');module[_0x1383('0x1')]={'closed':{'type':Sequelize[_0x1383('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1383('0x3')]},'disposition':{'type':Sequelize[_0x1383('0x4')]},'secondDisposition':{'type':Sequelize[_0x1383('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x1383('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x1383('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x1383('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1383('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 45690af..1b5a900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['direction','secret','SmsAccount','Account','Owner','get','mkdirSync','N.A.','disposition','out','System','Contact','renderFile','transcript-','.pdf','Sms','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','send','Users','map','fullname','Tags','TagIds','forEach','push','index','SmsInteraction','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','nolimit','limit','order','sort','pick','select','field','from','u.id','u.fullname','ui.SmsInteractionId','sms_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','parseSearch','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20=\x200','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','UserId','buildExpression','body','keys','some','compact','isEmpty','SmsAccountId','where','i.SmsAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','contactName','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','all','rows','catch','show','params','include','options','create','describe','addMessage','omit','ids','getMessages','findOne','SmsMessage','hasOwnProperty','SmsInteractionId','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','spread','color','removeTags','download','unix','root','files','tmp','join','server','attachments','format','transcript-%d-%s.zip','lastName','Messages'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xb62e,0x1de));var _0xeb62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb62e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xeb62('0x0'));var rimraf=require(_0xeb62('0x1'));var zipdir=require(_0xeb62('0x2'));var jsonpatch=require(_0xeb62('0x3'));var rp=require('request-promise');var moment=require(_0xeb62('0x4'));var BPromise=require(_0xeb62('0x5'));var Mustache=require(_0xeb62('0x6'));var util=require(_0xeb62('0x7'));var path=require(_0xeb62('0x8'));var sox=require(_0xeb62('0x9'));var csv=require('to-csv');var ejs=require(_0xeb62('0xa'));var fs=require('fs');var fs_extra=require(_0xeb62('0xb'));var _=require(_0xeb62('0xc'));var squel=require('squel');var crypto=require(_0xeb62('0xd'));var jsforce=require(_0xeb62('0xe'));var deskjs=require(_0xeb62('0xf'));var toCsv=require(_0xeb62('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeb62('0x11'));var authService=require(_0xeb62('0x12'));var qs=require(_0xeb62('0x13'));var as=require(_0xeb62('0x14'));var pdf=require(_0xeb62('0x15'));var hardwareService=require(_0xeb62('0x16'));var logger=require(_0xeb62('0x17'))(_0xeb62('0x18'));var utils=require(_0xeb62('0x19'));var config=require(_0xeb62('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xeb62('0x1b'))['db'];config[_0xeb62('0x1c')]=_[_0xeb62('0x1d')](config[_0xeb62('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xeb62('0x1e'))(new Redis(config[_0xeb62('0x1c')]));require(_0xeb62('0x1f'))['register'](socket);function respondWithStatusCode(_0x26c3fd,_0x195837){_0x195837=_0x195837||0xcc;return function(_0x2fd4c7){if(_0x2fd4c7){return _0x26c3fd['sendStatus'](_0x195837);}return _0x26c3fd[_0xeb62('0x20')](_0x195837)[_0xeb62('0x21')]();};}function respondWithResult(_0x184106,_0x353e2c){_0x353e2c=_0x353e2c||0xc8;return function(_0x3fb280){if(_0x3fb280){return _0x184106[_0xeb62('0x20')](_0x353e2c)[_0xeb62('0x22')](_0x3fb280);}};}function respondWithFilteredResult(_0x1324d7,_0x39b138){return function(_0x27fd84){if(_0x27fd84){var _0x27efc8=typeof _0x39b138[_0xeb62('0x23')]===_0xeb62('0x24')&&typeof _0x39b138['limit']===_0xeb62('0x24');var _0x130e2f=_0x27fd84[_0xeb62('0x25')];var _0xb44905=_0x27efc8?0x0:_0x39b138[_0xeb62('0x23')];var _0x24cbf3=_0x27efc8?_0x27fd84[_0xeb62('0x25')]:_0x39b138['offset']+_0x39b138['limit'];var _0x1fbfaa;if(_0x24cbf3>=_0x130e2f){_0x24cbf3=_0x130e2f;_0x1fbfaa=0xc8;}else{_0x1fbfaa=0xce;}_0x1324d7[_0xeb62('0x20')](_0x1fbfaa);return _0x1324d7[_0xeb62('0x26')](_0xeb62('0x27'),_0xb44905+'-'+_0x24cbf3+'/'+_0x130e2f)[_0xeb62('0x22')](_0x27fd84);}return null;};}function patchUpdates(_0x4cafcf){return function(_0x5e7aee){try{jsonpatch[_0xeb62('0x28')](_0x5e7aee,_0x4cafcf,!![]);}catch(_0x132861){return BPromise[_0xeb62('0x29')](_0x132861);}return _0x5e7aee[_0xeb62('0x2a')]();};}function saveUpdates(_0x55a169,_0x4e92f5){return function(_0x3ef988){if(_0x3ef988){return _0x3ef988['update'](_0x55a169)[_0xeb62('0x2b')](function(_0x4b0f46){return _0x4b0f46;});}return null;};}function removeEntity(_0xfe3e16,_0x516a72){return function(_0x3ac28c){if(_0x3ac28c){return _0x3ac28c[_0xeb62('0x2c')]()[_0xeb62('0x2b')](function(){_0xfe3e16['status'](0xcc)[_0xeb62('0x21')]();});}};}function handleEntityNotFound(_0x3ae031,_0x5222f4){return function(_0xe8872c){if(!_0xe8872c){_0x3ae031[_0xeb62('0x2d')](0x194);}return _0xe8872c;};}function handleError(_0x360efd,_0x511202){_0x511202=_0x511202||0x1f4;return function(_0x192517){logger[_0xeb62('0x2e')](_0x192517['stack']);if(_0x192517[_0xeb62('0x2f')]){delete _0x192517[_0xeb62('0x2f')];}_0x360efd[_0xeb62('0x20')](_0x511202)[_0xeb62('0x30')](_0x192517);};}function getInteractionUsers(_0x235448,_0x5195bf){return new BPromise(function(_0x4b58af,_0x1248bb){try{if(_0x5195bf[_0x235448['id']]){_0x235448[_0xeb62('0x31')]=_[_0xeb62('0x32')](_0x5195bf[_0x235448['id']],function(_0x3f89ed){return{'id':_0x3f89ed['id'],'fullname':_0x3f89ed[_0xeb62('0x33')]};});}}catch(_0x2ad3ec){_0x1248bb(_0x2ad3ec);}_0x4b58af(_0x235448);});}function getInteractionTags(_0x1ae51e,_0x4be25d){return new BPromise(function(_0x411062,_0x47a94b){try{if(_0x1ae51e['TagIds']){_0x1ae51e[_0xeb62('0x34')]=[];_0x1ae51e[_0xeb62('0x35')]['split'](',')[_0xeb62('0x36')](function(_0x4bcfce){_0x1ae51e[_0xeb62('0x34')][_0xeb62('0x37')](_0x4be25d[_0x4bcfce]);});}delete _0x1ae51e['TagIds'];}catch(_0x2c23c6){_0x47a94b(_0x2c23c6);}_0x411062(_0x1ae51e);});}function updateSmsInteraction(_0xe2589,_0x5914c9,_0x1b3a60){return new BPromise(function(_0x2a8087,_0x38b116){return getInteractionUsers(_0xe2589,_0x1b3a60)[_0xeb62('0x2b')](function(_0x513dd8){return getInteractionTags(_0x513dd8,_0x5914c9);})[_0xeb62('0x2b')](function(_0x43685b){_0x2a8087(_0x43685b);})['catch'](function(_0x4acc96){_0x38b116(_0x4acc96);});});}exports[_0xeb62('0x38')]=function(_0x117d8c,_0x4e29a7){var _0x338ab7={},_0x30cff0={},_0x11eadb={'count':0x0,'rows':[]};var _0x1f839a=_[_0xeb62('0x32')](db[_0xeb62('0x39')][_0xeb62('0x3a')],function(_0x4b22c8){return{'name':_0x4b22c8['fieldName'],'type':_0x4b22c8[_0xeb62('0x3b')][_0xeb62('0x3c')]};});_0x30cff0[_0xeb62('0x3d')]=_[_0xeb62('0x32')](_0x1f839a,'name');_0x30cff0[_0xeb62('0x3e')]=_['keys'](_0x117d8c[_0xeb62('0x3e')]);_0x30cff0[_0xeb62('0x3f')]=_[_0xeb62('0x40')](_0x30cff0[_0xeb62('0x3d')],_0x30cff0[_0xeb62('0x3e')]);_0x338ab7[_0xeb62('0x41')]=_[_0xeb62('0x40')](_0x30cff0[_0xeb62('0x3d')],qs['fields'](_0x117d8c[_0xeb62('0x3e')][_0xeb62('0x42')]));_0x338ab7[_0xeb62('0x41')]=_0x338ab7[_0xeb62('0x41')]['length']?_0x338ab7['attributes']:_0x30cff0[_0xeb62('0x3d')];if(!_0x117d8c[_0xeb62('0x3e')]['hasOwnProperty'](_0xeb62('0x43'))){_0x338ab7[_0xeb62('0x44')]=qs['limit'](_0x117d8c[_0xeb62('0x3e')]['limit']);_0x338ab7[_0xeb62('0x23')]=qs['offset'](_0x117d8c[_0xeb62('0x3e')]['offset']);}_0x338ab7[_0xeb62('0x45')]=qs[_0xeb62('0x46')](_0x117d8c[_0xeb62('0x3e')]['sort']);_0x338ab7['where']=qs[_0xeb62('0x3f')](_[_0xeb62('0x47')](_0x117d8c[_0xeb62('0x3e')],_0x30cff0[_0xeb62('0x3f')]),_0x1f839a);var _0x31d4d6=[];var _0x4afd5e=squel[_0xeb62('0x48')]()['field']('id')[_0xeb62('0x49')]('name')[_0xeb62('0x49')]('color')[_0xeb62('0x4a')]('tools_tags');var _0x2f04ce=squel[_0xeb62('0x48')]()[_0xeb62('0x49')](_0xeb62('0x4b'))[_0xeb62('0x49')](_0xeb62('0x4c'))['field'](_0xeb62('0x4d'))[_0xeb62('0x4a')]('user_has_sms_interactions','ui')['left_join']('users','u','u.id\x20=\x20ui.UserId');var _0x24dff5=squel[_0xeb62('0x48')]()['from'](_0xeb62('0x4e'),'i')[_0xeb62('0x4f')](_0xeb62('0x50'),'c',_0xeb62('0x51'))[_0xeb62('0x4f')]('users','o',_0xeb62('0x52'))['left_join'](_0xeb62('0x53'),'a',_0xeb62('0x54'))[_0xeb62('0x4f')](_0xeb62('0x55'),'me',_0xeb62('0x56'))[_0xeb62('0x4f')](_0xeb62('0x57'),'it',_0xeb62('0x58'))[_0xeb62('0x4f')](_0xeb62('0x59'),'t',_0xeb62('0x5a'));var _0x13e102=squel['expr']();var _0x29773c=[];var _0x50bfec=squel['expr']();var _0x2dcb2d;if(_0x117d8c[_0xeb62('0x3e')]['search']){_0x2dcb2d=as[_0xeb62('0x5b')](_0x117d8c[_0xeb62('0x3e')]['search']);var _0x11297d=_0x2dcb2d[_0xeb62('0x5c')];for(var _0x20b73b=0x0;_0x20b73b<_0x2dcb2d[_0xeb62('0x5d')][_0xeb62('0x5e')];_0x20b73b++){var _0x1e6238=_0x2dcb2d[_0xeb62('0x5d')][_0x20b73b];var _0x190e65='i';var _0x497714=_[_0xeb62('0x5f')](_0x1f839a,['name',_0x1e6238[_0xeb62('0x49')]]);if(!_0x497714){switch(_0x1e6238[_0xeb62('0x49')]){case _0xeb62('0x60'):if(_0x1e6238[_0xeb62('0x61')]==0x1){_0x24dff5[_0xeb62('0x62')]('`'+_0x1e6238[_0xeb62('0x49')]+_0xeb62('0x63'));}else{_0x24dff5[_0xeb62('0x62')]('`'+_0x1e6238['field']+'`\x20>\x200');}break;case'Contact':if(_0x1e6238['operator']===_0xeb62('0x64')){if(_0x1e6238['value'][_0xeb62('0x65')]('\x20')['length']>0x1){_0x13e102[_0x11297d](_0xeb62('0x66'),qs[_0xeb62('0x67')](_0x1e6238[_0xeb62('0x61')]),null);}else{var _0x595797='%'+_0x1e6238[_0xeb62('0x61')]+'%';_0x13e102[_0x11297d](_0xeb62('0x68'),_0x595797,_0x595797,_0x595797);}}else{_0x497714=_['find'](_0x1f839a,[_0xeb62('0x2f'),_0xeb62('0x69')]);_0x1e6238[_0xeb62('0x49')]=_0xeb62('0x69');_0x4aba1f=as['buildExpression'](_0x190e65,_0x497714[_0xeb62('0x3b')],_0x1e6238);_0x13e102[_0x11297d](_0x4aba1f[_0xeb62('0x6a')],_0x4aba1f['value'][_0xeb62('0x6b')],_0x4aba1f[_0xeb62('0x61')][_0xeb62('0x21')]);}break;case _0xeb62('0x6c'):var _0x3a450b=_0x1e6238[_0xeb62('0x61')][_0xeb62('0x65')](',')[_0xeb62('0x32')](function(_0x222d0c){return Number(_0x222d0c);});_0x3a450b[_0xeb62('0x36')](function(_0x130153){_0x50bfec['or'](_0xeb62('0x6d'),'%,'+_0x130153+',%');});_0x29773c=_[_0xeb62('0x6e')](_0x29773c,_0x3a450b);break;case _0xeb62('0x6f'):if(_0x1e6238[_0xeb62('0x70')]===_0xeb62('0x64')){_0x13e102[_0x11297d]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1e6238['value']+'%',null);}else{_0x497714=_['find'](_0x1f839a,['name',_0xeb62('0x71')]);_0x1e6238['field']=_0xeb62('0x71');_0x4aba1f=as[_0xeb62('0x72')](_0x190e65,_0x497714[_0xeb62('0x3b')],_0x1e6238);_0x13e102[_0x11297d](_0x4aba1f[_0xeb62('0x6a')],_0x4aba1f[_0xeb62('0x61')][_0xeb62('0x6b')],_0x4aba1f[_0xeb62('0x61')][_0xeb62('0x21')]);}break;case _0xeb62('0x73'):_0x4aba1f=as[_0xeb62('0x72')]('me',null,_0x1e6238);_0x13e102[_0x11297d](_0x4aba1f['text'],_0x4aba1f[_0xeb62('0x61')][_0xeb62('0x6b')],_0x4aba1f[_0xeb62('0x61')][_0xeb62('0x21')]);break;}}else{var _0x4aba1f=as[_0xeb62('0x72')](_0x190e65,_0x497714[_0xeb62('0x3b')],_0x1e6238);_0x13e102[_0x11297d](_0x4aba1f[_0xeb62('0x6a')],_0x4aba1f[_0xeb62('0x61')][_0xeb62('0x6b')],_0x4aba1f[_0xeb62('0x61')][_0xeb62('0x21')]);}}}else{var _0x42af99=_(_0x117d8c[_0xeb62('0x3e')])[_0xeb62('0x74')]()[_0xeb62('0x32')](function(_0x510275){return _[_0xeb62('0x75')](_0x1f839a,[_0xeb62('0x2f'),_0x510275])?_0x510275:undefined;})[_0xeb62('0x76')]()[_0xeb62('0x61')]();if(!_[_0xeb62('0x77')](_0x42af99)){_0x42af99[_0xeb62('0x36')](function(_0x388b31){if(_0x388b31===_0xeb62('0x78')){_0x24dff5[_0xeb62('0x79')](_0xeb62('0x7a'),[]['concat'](_0x117d8c[_0xeb62('0x3e')][_0x388b31]));}else if(_0x388b31===_0xeb62('0x7b')){var _0xd96bbc=JSON[_0xeb62('0x7c')](_0x117d8c['query'][_0x388b31])[_0xeb62('0x7d')];var _0x317f35=JSON[_0xeb62('0x7c')](_0x117d8c[_0xeb62('0x3e')][_0x388b31])[_0xeb62('0x7e')];_0x24dff5[_0xeb62('0x79')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0xd96bbc,_0x317f35);}else{if(_0x117d8c[_0xeb62('0x3e')][_0x388b31]===_0xeb62('0x7f')){_0x24dff5[_0xeb62('0x79')]('i.'+_0x388b31+_0xeb62('0x80'));}else{_0x24dff5[_0xeb62('0x79')]('i.'+_0x388b31+_0xeb62('0x81'),_0x117d8c[_0xeb62('0x3e')][_0x388b31]);}}});}if(_0x117d8c[_0xeb62('0x3e')][_0xeb62('0x82')]){if(_0x117d8c[_0xeb62('0x3e')][_0xeb62('0x82')]==0x1){_0x24dff5[_0xeb62('0x62')](_0xeb62('0x83'));}else{_0x24dff5[_0xeb62('0x62')](_0xeb62('0x84'));}}if(_0x117d8c[_0xeb62('0x3e')]['tag']){_0x29773c=_[_0xeb62('0x85')](_0x117d8c['query'][_0xeb62('0x86')])?_0x117d8c[_0xeb62('0x3e')]['tag']:new Array(_0x117d8c[_0xeb62('0x3e')][_0xeb62('0x86')]);_0x29773c[_0xeb62('0x36')](function(_0x33a442){_0x50bfec['or'](_0xeb62('0x6d'),'%,'+_0x33a442+',%');});}if(_0x117d8c[_0xeb62('0x3e')][_0xeb62('0x87')]){var _0x449582=_0x117d8c[_0xeb62('0x3e')][_0xeb62('0x87')][_0xeb62('0x88')]('\x5c','\x5c\x5c')[_0xeb62('0x88')](/'/g,'\x27\x27');if(qs[_0xeb62('0x89')](_0x449582)){_0x13e102['or']('i.id\x20LIKE\x20?',_0x449582+'%')['or'](_0xeb62('0x8a'),_0x449582+'%');}else{_0x13e102['or'](_0xeb62('0x8b'),qs['getFullTextValue'](_0x449582))['or'](_0xeb62('0x8c'),_0x449582+'%');}}}_0x24dff5['where'](_0x13e102);_0x24dff5[_0xeb62('0x8d')](_0xeb62('0x8e'));var _0x34e2d1={'type':db[_0xeb62('0x8f')][_0xeb62('0x90')][_0xeb62('0x91')],'raw':!![]};var _0x490c98=_0x24dff5[_0xeb62('0x92')]();_0x490c98['field'](_0xeb62('0x8e'));_0x490c98[_0xeb62('0x49')](_0xeb62('0x93'),_0xeb62('0x60'));if(_0x338ab7[_0xeb62('0x45')]){_0x338ab7['order'][_0xeb62('0x36')](function(_0x655277){var _0x404297=_0x655277[0x0]==='contactName'?_0x655277[0x0]:'i.'+_0x655277[0x0];_0x24dff5[_0xeb62('0x45')](_0x404297,_0x655277[0x1]===_0xeb62('0x94')?![]:!![]);});}if(!_[_0xeb62('0x77')](_0x29773c)){_0x24dff5[_0xeb62('0x62')](_0x50bfec);_0x490c98[_0xeb62('0x79')](_0xeb62('0x95'),_0x29773c);}BPromise['resolve']()['then'](function(){if(!_0x2dcb2d){if(_0x117d8c['query']['SmsAccountId'])return;_0x490c98['where'](_0xeb62('0x96'));_0x24dff5[_0xeb62('0x79')](_0xeb62('0x96'));return;}if(_0x117d8c[_0xeb62('0x97')][_0xeb62('0x98')]!==_0xeb62('0x99'))return;return _0x117d8c[_0xeb62('0x97')][_0xeb62('0x9a')]({'attributes':['id'],'raw':!![]})[_0xeb62('0x2b')](function(_0x2c6bb3){if(_[_0xeb62('0x77')](_0x2c6bb3)){_0x490c98[_0xeb62('0x79')]('i.SmsAccountId\x20IS\x20NULL');_0x24dff5[_0xeb62('0x79')](_0xeb62('0x9b'));}else{_0x490c98[_0xeb62('0x79')](_0xeb62('0x7a'),_[_0xeb62('0x32')](_0x2c6bb3,'id'));_0x24dff5[_0xeb62('0x79')](_0xeb62('0x7a'),_[_0xeb62('0x32')](_0x2c6bb3,'id'));}});})[_0xeb62('0x2b')](function(){if(_0x117d8c[_0xeb62('0x97')][_0xeb62('0x98')]===_0xeb62('0x99')&&!_0x2dcb2d&&!_0x117d8c[_0xeb62('0x3e')][_0xeb62('0x78')])return[];return db[_0xeb62('0x9c')][_0xeb62('0x3e')](_0x490c98[_0xeb62('0x9d')](),_0x34e2d1);})[_0xeb62('0x2b')](function(_0x568380){_0x11eadb[_0xeb62('0x25')]=_0x568380['length'];if(_0x11eadb[_0xeb62('0x25')]===0x0)return[];return db[_0xeb62('0x9c')]['query'](_0x4afd5e[_0xeb62('0x9d')](),_0x34e2d1)['then'](function(_0x51e954){_0x31d4d6=_[_0xeb62('0x9e')](_0x51e954,'id');_0x34e2d1=_[_0xeb62('0x9f')](_0x34e2d1,{'model':db[_0xeb62('0x39')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x117d8c[_0xeb62('0x3e')]['fields']){_0x338ab7[_0xeb62('0x41')][_0xeb62('0x36')](function(_0x4ca889){_0x24dff5[_0xeb62('0x49')]('i.'+_0x4ca889);});}else{_0x24dff5[_0xeb62('0x49')](_0xeb62('0x93'),_0xeb62('0x60'));_0x24dff5[_0xeb62('0x49')](_0xeb62('0xa0'),_0xeb62('0xa1'));_0x24dff5[_0xeb62('0x49')]('a.mandatoryDisposition',_0xeb62('0xa2'));_0x24dff5[_0xeb62('0x49')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xeb62('0xa3'));_0x24dff5['field']('i.*');_0x24dff5[_0xeb62('0x49')](_0xeb62('0xa4'),_0xeb62('0xa5'));_0x24dff5[_0xeb62('0x49')](_0xeb62('0xa6'),'Contact.lastName');_0x24dff5[_0xeb62('0x49')](_0xeb62('0xa7'),_0xeb62('0xa8'));_0x24dff5[_0xeb62('0x49')](_0xeb62('0xa9'),_0xeb62('0xaa'));_0x24dff5[_0xeb62('0x49')](_0xeb62('0xab'),'Contact.mobile');_0x24dff5['field'](_0xeb62('0xac'),_0xeb62('0xad'));_0x24dff5[_0xeb62('0x49')](_0xeb62('0xae'),'Owner.fullname');_0x24dff5[_0xeb62('0x49')]('o.internal','Owner.internal');_0x24dff5[_0xeb62('0x49')](_0xeb62('0xaf'),'TagIds');}if(_0x338ab7[_0xeb62('0x44')])_0x24dff5['limit'](_0x338ab7[_0xeb62('0x44')]);if(_0x338ab7[_0xeb62('0x23')])_0x24dff5[_0xeb62('0x23')](_0x338ab7['offset']);return db['sequelize'][_0xeb62('0x3e')](_0x24dff5[_0xeb62('0x9d')](),_0x34e2d1);})[_0xeb62('0x2b')](function(_0x4b6e6b){if(_0x4b6e6b[_0xeb62('0x5e')]>0x0)_0x2f04ce[_0xeb62('0x79')](_0xeb62('0xb0'),_[_0xeb62('0x32')](_0x4b6e6b,'id'));return db[_0xeb62('0x9c')][_0xeb62('0x3e')](_0x2f04ce['toString'](),_0x34e2d1)['then'](function(_0x5d0c09){var _0x23c6d7=_['groupBy'](_0x5d0c09,'SmsInteractionId');var _0xad5eb0=[];_0x4b6e6b['forEach'](function(_0x4feb08){_0xad5eb0['push'](updateSmsInteraction(_0x4feb08,_0x31d4d6,_0x23c6d7));});return BPromise[_0xeb62('0xb1')](_0xad5eb0);});});})['then'](function(_0x2c9fe5){_0x11eadb[_0xeb62('0xb2')]=_0x2c9fe5;return _0x11eadb;})[_0xeb62('0x2b')](respondWithFilteredResult(_0x4e29a7,_0x338ab7))[_0xeb62('0xb3')](handleError(_0x4e29a7,null));};exports[_0xeb62('0xb4')]=function(_0x3acc83,_0xd4729c){var _0x5b45ad={'raw':![],'where':{'id':_0x3acc83[_0xeb62('0xb5')]['id']}},_0x5b0fe4={};_0x5b0fe4[_0xeb62('0x3d')]=_[_0xeb62('0x74')](db[_0xeb62('0x39')][_0xeb62('0x3a')]);_0x5b0fe4['query']=_[_0xeb62('0x74')](_0x3acc83[_0xeb62('0x3e')]);_0x5b0fe4[_0xeb62('0x3f')]=_['intersection'](_0x5b0fe4[_0xeb62('0x3d')],_0x5b0fe4['query']);_0x5b45ad[_0xeb62('0x41')]=_[_0xeb62('0x40')](_0x5b0fe4['model'],qs['fields'](_0x3acc83[_0xeb62('0x3e')][_0xeb62('0x42')]));_0x5b45ad[_0xeb62('0x41')]=_0x5b45ad[_0xeb62('0x41')]['length']?_0x5b45ad[_0xeb62('0x41')]:_0x5b0fe4[_0xeb62('0x3d')];if(_0x3acc83['query']['includeAll']){_0x5b45ad[_0xeb62('0xb6')]=[{'all':!![]}];}_0x5b45ad=_[_0xeb62('0x9f')]({},_0x5b45ad,_0x3acc83[_0xeb62('0xb7')]);return db[_0xeb62('0x39')][_0xeb62('0x5f')](_0x5b45ad)[_0xeb62('0x2b')](handleEntityNotFound(_0xd4729c,null))[_0xeb62('0x2b')](respondWithResult(_0xd4729c,null))[_0xeb62('0xb3')](handleError(_0xd4729c,null));};exports[_0xeb62('0xb8')]=function(_0x416ec7,_0x43b1da){return db[_0xeb62('0x39')][_0xeb62('0xb8')](_0x416ec7[_0xeb62('0x73')],{})[_0xeb62('0x2b')](respondWithResult(_0x43b1da,0xc9))[_0xeb62('0xb3')](handleError(_0x43b1da,null));};exports['update']=function(_0x1be079,_0x459066){if(_0x1be079[_0xeb62('0x73')]['id']){delete _0x1be079[_0xeb62('0x73')]['id'];}return db[_0xeb62('0x39')]['find']({'where':{'id':_0x1be079['params']['id']}})[_0xeb62('0x2b')](handleEntityNotFound(_0x459066,null))[_0xeb62('0x2b')](saveUpdates(_0x1be079[_0xeb62('0x73')],null))[_0xeb62('0x2b')](respondWithResult(_0x459066,null))['catch'](handleError(_0x459066,null));};exports[_0xeb62('0x2c')]=function(_0x5f2c1e,_0x2e4e2d){return db[_0xeb62('0x39')][_0xeb62('0x5f')]({'where':{'id':_0x5f2c1e[_0xeb62('0xb5')]['id']}})[_0xeb62('0x2b')](handleEntityNotFound(_0x2e4e2d,null))['then'](removeEntity(_0x2e4e2d,null))[_0xeb62('0xb3')](handleError(_0x2e4e2d,null));};exports[_0xeb62('0xb9')]=function(_0x4c576b,_0xe0655a){return db['SmsInteraction'][_0xeb62('0xb9')]()[_0xeb62('0x2b')](respondWithResult(_0xe0655a,null))[_0xeb62('0xb3')](handleError(_0xe0655a,null));};exports[_0xeb62('0xba')]=function(_0x45a197,_0x3394e6,_0x59529d){return db['SmsMessage'][_0xeb62('0x5f')]({'where':{'id':_0x45a197[_0xeb62('0xb5')]['id']}})[_0xeb62('0x2b')](handleEntityNotFound(_0x3394e6,null))[_0xeb62('0x2b')](function(_0x582217){if(_0x582217){return _0x582217['addMessage'](_0x45a197[_0xeb62('0x73')]['ids'],_[_0xeb62('0xbb')](_0x45a197[_0xeb62('0x73')],[_0xeb62('0xbc'),'id'])||{});}})['then'](respondWithResult(_0x3394e6,null))[_0xeb62('0xb3')](handleError(_0x3394e6,null));};exports[_0xeb62('0xbd')]=function(_0x353443,_0x319ab9,_0x37da44){var _0x10731b={'raw':![],'where':{}};var _0x369e59={};var _0xb6826b={'count':0x0,'rows':[]};return db['SmsInteraction'][_0xeb62('0xbe')]({'where':{'id':_0x353443[_0xeb62('0xb5')]['id']}})[_0xeb62('0x2b')](handleEntityNotFound(_0x319ab9,null))[_0xeb62('0x2b')](function(_0x5256a9){if(_0x5256a9){_0x369e59[_0xeb62('0x3d')]=_[_0xeb62('0x74')](db[_0xeb62('0xbf')][_0xeb62('0x3a')]);_0x369e59[_0xeb62('0x3e')]=_['keys'](_0x353443[_0xeb62('0x3e')]);_0x369e59[_0xeb62('0x3f')]=_[_0xeb62('0x40')](_0x369e59[_0xeb62('0x3d')],_0x369e59[_0xeb62('0x3e')]);_0x10731b[_0xeb62('0x41')]=_[_0xeb62('0x40')](_0x369e59[_0xeb62('0x3d')],qs[_0xeb62('0x42')](_0x353443[_0xeb62('0x3e')]['fields']));_0x10731b[_0xeb62('0x41')]=_0x10731b[_0xeb62('0x41')]['length']?_0x10731b['attributes']:_0x369e59[_0xeb62('0x3d')];if(!_0x353443[_0xeb62('0x3e')][_0xeb62('0xc0')](_0xeb62('0x43'))){_0x10731b[_0xeb62('0x44')]=qs[_0xeb62('0x44')](_0x353443[_0xeb62('0x3e')][_0xeb62('0x44')]);_0x10731b[_0xeb62('0x23')]=qs['offset'](_0x353443['query'][_0xeb62('0x23')]);}_0x10731b[_0xeb62('0x45')]=qs['sort'](_0x353443['query'][_0xeb62('0x46')]);_0x10731b[_0xeb62('0x79')]=qs[_0xeb62('0x3f')](_['pick'](_0x353443['query'],_0x369e59[_0xeb62('0x3f')]));_0x10731b['where'][_0xeb62('0xc1')]=_0x5256a9['id'];if(_0x353443[_0xeb62('0x3e')][_0xeb62('0x87')]){_0x10731b['where']=_['merge'](_0x10731b['where'],{'$or':_[_0xeb62('0x32')](_0x10731b[_0xeb62('0x41')],function(_0x3517db){var _0x1c0a59={};_0x1c0a59[_0x3517db]={'$like':'%'+_0x353443['query'][_0xeb62('0x87')]+'%'};return _0x1c0a59;})});}if(_0x353443[_0xeb62('0x3e')][_0xeb62('0x7d')]){var _0x22eb23=_0x353443[_0xeb62('0x3e')][_0xeb62('0x7d')][_0xeb62('0x65')](',');var _0x394573={};_0x394573[_0x22eb23[0x0]]={'$gte':moment(_0x22eb23[0x1])['format'](_0xeb62('0xc2'))};_0x10731b[_0xeb62('0x79')]=_[_0xeb62('0x9f')](_0x10731b[_0xeb62('0x79')],_0x394573);}_0x10731b=_['merge']({},_0x10731b,_0x353443[_0xeb62('0xb7')]);return db[_0xeb62('0xbf')]['count']({'where':_0x10731b[_0xeb62('0x79')]})[_0xeb62('0x2b')](function(_0x26700b){_0xb6826b[_0xeb62('0x25')]=_0x26700b;if(_0x353443[_0xeb62('0x3e')][_0xeb62('0xc3')]){_0x10731b[_0xeb62('0xb6')]=[{'all':!![]}];}return db['SmsMessage'][_0xeb62('0xc4')](_0x10731b);})['then'](function(_0x3578a9){_0xb6826b[_0xeb62('0xb2')]=_0x3578a9;return _0xb6826b;});}})[_0xeb62('0x2b')](respondWithFilteredResult(_0x319ab9,_0x10731b))['catch'](handleError(_0x319ab9,null));};exports['addTags']=function(_0x13abd2,_0x716f0e,_0x2e27a5){return db[_0xeb62('0x39')][_0xeb62('0x5f')]({'where':{'id':_0x13abd2[_0xeb62('0xb5')]['id']}})[_0xeb62('0x2b')](handleEntityNotFound(_0x716f0e,null))[_0xeb62('0x2b')](function(_0x37d3a6){if(_0x37d3a6){return _0x37d3a6['setTags'](_0x13abd2[_0xeb62('0x73')][_0xeb62('0xbc')],_[_0xeb62('0xbb')](_0x13abd2[_0xeb62('0x73')],[_0xeb62('0xbc'),'id'])||{})[_0xeb62('0xc5')](function(){return db[_0xeb62('0x6c')]['findAll']({'attributes':['id',_0xeb62('0x2f'),_0xeb62('0xc6')],'where':{'id':_0x13abd2[_0xeb62('0x73')][_0xeb62('0xbc')]}});})['then'](function(_0x4c34c2){socket['emit']('smsInteractionTags:save',{'id':Number(_0x13abd2[_0xeb62('0xb5')]['id']),'tags':_0x4c34c2||[]});return{'id':Number(_0x13abd2['params']['id']),'tags':_0x4c34c2||[]};});}})[_0xeb62('0x2b')](respondWithResult(_0x716f0e,null))[_0xeb62('0xb3')](handleError(_0x716f0e,null));};exports[_0xeb62('0xc7')]=function(_0x28fc7d,_0x3ddab8,_0x43e7aa){return db[_0xeb62('0x39')][_0xeb62('0x5f')]({'where':{'id':_0x28fc7d[_0xeb62('0xb5')]['id']}})[_0xeb62('0x2b')](handleEntityNotFound(_0x3ddab8,null))['then'](function(_0x7491d9){if(_0x7491d9){return _0x7491d9[_0xeb62('0xc7')](_0x28fc7d[_0xeb62('0x3e')][_0xeb62('0xbc')]);}})[_0xeb62('0x2b')](respondWithStatusCode(_0x3ddab8,null))[_0xeb62('0xb3')](handleError(_0x3ddab8,null));};exports[_0xeb62('0xc8')]=function(_0x153711,_0x275662){var _0x53ee91=moment()[_0xeb62('0xc9')]()[_0xeb62('0x9d')]();var _0xde758f=path['join'](config[_0xeb62('0xca')],'server',_0xeb62('0xcb'),_0xeb62('0xcc'));var _0x4a3b58=path[_0xeb62('0xcd')](config['root'],_0xeb62('0xce'),_0xeb62('0xcb'),_0xeb62('0xcf'));var _0x2c895b=path[_0xeb62('0xcd')](_0xde758f,_0x53ee91);var _0x3a97dc=util[_0xeb62('0xd0')](_0xeb62('0xd1'),_0x153711[_0xeb62('0xb5')]['id'],_0x53ee91);var _0xdde90=path['join'](_0xde758f,_0x3a97dc);var _0x17be32=[];_0x17be32[_0xeb62('0x37')]({'model':db[_0xeb62('0x6f')],'as':'User','attributes':['id',_0xeb62('0x33')],'raw':!![]});_0x17be32['push']({'model':db['CmContact'],'as':'Contact','attributes':['id','firstName',_0xeb62('0xd2')],'raw':!![]});var _0x2bf699=[{'model':db['SmsMessage'],'as':_0xeb62('0xd3'),'attributes':['id',_0xeb62('0x73'),_0xeb62('0x7b'),_0xeb62('0xd4'),_0xeb62('0xd5'),_0xeb62('0x82')],'include':_0x17be32}];_0x2bf699[_0xeb62('0x37')]({'model':db[_0xeb62('0xd6')],'as':_0xeb62('0xd7'),'attributes':['id',_0xeb62('0x2f')]});_0x2bf699[_0xeb62('0x37')]({'model':db['User'],'as':_0xeb62('0xd8'),'attributes':['id','fullname']});return db[_0xeb62('0x39')][_0xeb62('0x5f')]({'where':{'id':_0x153711[_0xeb62('0xb5')]['id']},'include':_0x2bf699})['then'](handleEntityNotFound(_0x275662,null))[_0xeb62('0x2b')](function(_0x135a1b){if(_0x135a1b){var _0x1dcb11=_0x135a1b[_0xeb62('0xd9')]({'plain':!![]});fs[_0xeb62('0xda')](_0x2c895b);var _0x21bc7b={'channel':'Sms','account':_0x1dcb11['Account']['name'],'agent':_0x1dcb11[_0xeb62('0xd8')]?_0x1dcb11[_0xeb62('0xd8')][_0xeb62('0x33')]:_0xeb62('0xdb'),'createdAt':moment(_0x1dcb11['createdAt'])[_0xeb62('0xd0')]('YYYY-MM-DD\x20HH:mm:ss')[_0xeb62('0x9d')](),'closedAt':_0x1dcb11['closed']?moment(_0x1dcb11['closedAt'])[_0xeb62('0xd0')](_0xeb62('0xc2'))[_0xeb62('0x9d')]():'','disposition':_0x1dcb11[_0xeb62('0xdc')],'messages':_(_0x1dcb11[_0xeb62('0xd3')])[_0xeb62('0x87')]({'secret':![]})[_0xeb62('0x32')](function(_0xcbc630){return{'date':moment(_0xcbc630[_0xeb62('0x7b')])[_0xeb62('0xd0')](_0xeb62('0xc2'))[_0xeb62('0x9d')](),'sender':_0xcbc630['direction']===_0xeb62('0xdd')?_0xcbc630['User']?_0xcbc630[_0xeb62('0x6f')][_0xeb62('0x33')]:_0xeb62('0xde'):_0xcbc630[_0xeb62('0xdf')]['firstName']+(_0xcbc630[_0xeb62('0xdf')][_0xeb62('0xd2')]?'\x20'+_0xcbc630[_0xeb62('0xdf')][_0xeb62('0xd2')]:''),'body':_0xcbc630[_0xeb62('0x73')],'direction':_0xcbc630['direction']===_0xeb62('0xdd')?'A':'C','secret':_0xcbc630[_0xeb62('0xd5')],'read':_0xcbc630['read']};})[_0xeb62('0x61')]()};return ejs[_0xeb62('0xe0')](path[_0xeb62('0xcd')](config[_0xeb62('0xca')],'server','views','downloadInteraction.ejs'),{'interaction':_0x21bc7b})['then'](function(_0x13bf55){var _0x1fd422=path[_0xeb62('0xcd')](_0x2c895b,_0xeb62('0xe1')+_0x1dcb11['id']+'-'+_0x53ee91+_0xeb62('0xe2'));var _0x112175={'path':_0x1fd422,'channel':_0xeb62('0xe3'),'interactionId':_0x1dcb11['id']};return pdf['createPdfFromHTML'](_0x13bf55,_0x112175);})[_0xeb62('0x2b')](function(){return new BPromise(function(_0x414701,_0x22e61d){zipdir(_0x2c895b,{'saveTo':_0xdde90},function(_0x853ca6,_0x12e866){if(_0x853ca6)return _0x22e61d(_0x853ca6);return _0x414701(_0x12e866);});})[_0xeb62('0x2b')](function(){return new BPromise(function(_0x8e2f01,_0x4fde52){rimraf(_0x2c895b,function(_0x2378a8){if(_0x2378a8)_0x4fde52(_0x2378a8);return _0x8e2f01();});});})[_0xeb62('0x2b')](function(){return _0x275662[_0xeb62('0xc8')](_0xdde90,_0x3a97dc,function(_0x2c6609){if(_0x2c6609){console['log'](_0xeb62('0xe4'),_0x2c6609);}else{fs[_0xeb62('0xe5')](_0xdde90);}});});});}else{return _0x275662[_0xeb62('0x2d')](0xc8);}})[_0xeb62('0xb3')](handleError(_0x275662,null));};
\ No newline at end of file
+var _0x1872=['query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','select','field','u.id','u.fullname','ui.SmsInteractionId','from','users','u.id\x20=\x20ui.UserId','sms_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','left_join','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','body','keys','isEmpty','SmsAccountId','where','i.SmsAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','SmsInteraction','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','groupBy','SmsInteractionId','all','rows','params','includeAll','include','options','create','addMessage','SmsMessage','ids','omit','getMessages','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','findAll','color','emit','smsInteractionTags:save','removeTags','download','join','root','files','tmp','server','CmContact','lastName','Messages','direction','secret','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','closed','disposition','out','firstName','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./smsInteraction.socket','register','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','map','fullname','Tags','TagIds','split','forEach','push','catch','index','rawAttributes','type','model'];(function(_0x27524d,_0x5d9bd4){var _0x177749=function(_0x32b561){while(--_0x32b561){_0x27524d['push'](_0x27524d['shift']());}};_0x177749(++_0x5d9bd4);}(_0x1872,0xa6));var _0x2187=function(_0xc694ff,_0x1498ad){_0xc694ff=_0xc694ff-0x0;var _0x59dba2=_0x1872[_0xc694ff];return _0x59dba2;};'use strict';var emlformat=require(_0x2187('0x0'));var rimraf=require(_0x2187('0x1'));var zipdir=require(_0x2187('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2187('0x3'));var Mustache=require(_0x2187('0x4'));var util=require(_0x2187('0x5'));var path=require(_0x2187('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2187('0x7'));var fs=require('fs');var fs_extra=require(_0x2187('0x8'));var _=require('lodash');var squel=require(_0x2187('0x9'));var crypto=require(_0x2187('0xa'));var jsforce=require(_0x2187('0xb'));var deskjs=require(_0x2187('0xc'));var toCsv=require(_0x2187('0xd'));var querystring=require(_0x2187('0xe'));var Papa=require(_0x2187('0xf'));var Redis=require(_0x2187('0x10'));var authService=require(_0x2187('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2187('0x12'));var pdf=require(_0x2187('0x13'));var hardwareService=require(_0x2187('0x14'));var logger=require(_0x2187('0x15'))(_0x2187('0x16'));var utils=require(_0x2187('0x17'));var config=require(_0x2187('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2187('0x19'))['db'];config['redis']=_[_0x2187('0x1a')](config['redis'],{'host':_0x2187('0x1b'),'port':0x18eb});var socket=require(_0x2187('0x1c'))(new Redis(config[_0x2187('0x1d')]));require(_0x2187('0x1e'))[_0x2187('0x1f')](socket);function respondWithStatusCode(_0x3db813,_0x4c0a90){_0x4c0a90=_0x4c0a90||0xcc;return function(_0x3551df){if(_0x3551df){return _0x3db813['sendStatus'](_0x4c0a90);}return _0x3db813['status'](_0x4c0a90)['end']();};}function respondWithResult(_0x2128f2,_0xa3f58f){_0xa3f58f=_0xa3f58f||0xc8;return function(_0x544dfd){if(_0x544dfd){return _0x2128f2[_0x2187('0x20')](_0xa3f58f)['json'](_0x544dfd);}};}function respondWithFilteredResult(_0x50bd42,_0xcf037e){return function(_0x4b86a6){if(_0x4b86a6){var _0x57800b=typeof _0xcf037e[_0x2187('0x21')]===_0x2187('0x22')&&typeof _0xcf037e[_0x2187('0x23')]===_0x2187('0x22');var _0x292d73=_0x4b86a6[_0x2187('0x24')];var _0x33ea72=_0x57800b?0x0:_0xcf037e['offset'];var _0x2ea73b=_0x57800b?_0x4b86a6[_0x2187('0x24')]:_0xcf037e[_0x2187('0x21')]+_0xcf037e[_0x2187('0x23')];var _0x1a9db6;if(_0x2ea73b>=_0x292d73){_0x2ea73b=_0x292d73;_0x1a9db6=0xc8;}else{_0x1a9db6=0xce;}_0x50bd42[_0x2187('0x20')](_0x1a9db6);return _0x50bd42[_0x2187('0x25')](_0x2187('0x26'),_0x33ea72+'-'+_0x2ea73b+'/'+_0x292d73)[_0x2187('0x27')](_0x4b86a6);}return null;};}function patchUpdates(_0xa2be84){return function(_0x34e64d){try{jsonpatch[_0x2187('0x28')](_0x34e64d,_0xa2be84,!![]);}catch(_0x15d52d){return BPromise[_0x2187('0x29')](_0x15d52d);}return _0x34e64d[_0x2187('0x2a')]();};}function saveUpdates(_0x2213b6,_0x2d2cbf){return function(_0x5a0483){if(_0x5a0483){return _0x5a0483[_0x2187('0x2b')](_0x2213b6)[_0x2187('0x2c')](function(_0x3e4754){return _0x3e4754;});}return null;};}function removeEntity(_0x3c12c9,_0x504a7e){return function(_0x106065){if(_0x106065){return _0x106065[_0x2187('0x2d')]()[_0x2187('0x2c')](function(){_0x3c12c9[_0x2187('0x20')](0xcc)[_0x2187('0x2e')]();});}};}function handleEntityNotFound(_0x2b9c4a,_0x4e3a85){return function(_0x51267a){if(!_0x51267a){_0x2b9c4a[_0x2187('0x2f')](0x194);}return _0x51267a;};}function handleError(_0x5c1b70,_0x1d6dca){_0x1d6dca=_0x1d6dca||0x1f4;return function(_0x531e49){logger[_0x2187('0x30')](_0x531e49[_0x2187('0x31')]);if(_0x531e49[_0x2187('0x32')]){delete _0x531e49[_0x2187('0x32')];}_0x5c1b70[_0x2187('0x20')](_0x1d6dca)['send'](_0x531e49);};}function getInteractionUsers(_0x45eb05,_0x5c4e74){return new BPromise(function(_0x3d0805,_0x382ac5){try{if(_0x5c4e74[_0x45eb05['id']]){_0x45eb05['Users']=_[_0x2187('0x33')](_0x5c4e74[_0x45eb05['id']],function(_0x2f3bb2){return{'id':_0x2f3bb2['id'],'fullname':_0x2f3bb2[_0x2187('0x34')]};});}}catch(_0x12ca6a){_0x382ac5(_0x12ca6a);}_0x3d0805(_0x45eb05);});}function getInteractionTags(_0x38977a,_0x38637c){return new BPromise(function(_0x2a96bd,_0x3f5107){try{if(_0x38977a['TagIds']){_0x38977a[_0x2187('0x35')]=[];_0x38977a[_0x2187('0x36')][_0x2187('0x37')](',')[_0x2187('0x38')](function(_0x272096){_0x38977a[_0x2187('0x35')][_0x2187('0x39')](_0x38637c[_0x272096]);});}delete _0x38977a[_0x2187('0x36')];}catch(_0x4337de){_0x3f5107(_0x4337de);}_0x2a96bd(_0x38977a);});}function updateSmsInteraction(_0x350732,_0xb9c48d,_0x7fb311){return new BPromise(function(_0x245db0,_0x2fb860){return getInteractionUsers(_0x350732,_0x7fb311)[_0x2187('0x2c')](function(_0x153f35){return getInteractionTags(_0x153f35,_0xb9c48d);})[_0x2187('0x2c')](function(_0x17647a){_0x245db0(_0x17647a);})[_0x2187('0x3a')](function(_0x1f13cc){_0x2fb860(_0x1f13cc);});});}exports[_0x2187('0x3b')]=function(_0x4316f5,_0x252798){var _0x189a33={},_0x176f7e={},_0x21c739={'count':0x0,'rows':[]};var _0x1f9042=_[_0x2187('0x33')](db['SmsInteraction'][_0x2187('0x3c')],function(_0x36b5e1){return{'name':_0x36b5e1['fieldName'],'type':_0x36b5e1[_0x2187('0x3d')]['key']};});_0x176f7e[_0x2187('0x3e')]=_[_0x2187('0x33')](_0x1f9042,_0x2187('0x32'));_0x176f7e[_0x2187('0x3f')]=_['keys'](_0x4316f5[_0x2187('0x3f')]);_0x176f7e[_0x2187('0x40')]=_[_0x2187('0x41')](_0x176f7e[_0x2187('0x3e')],_0x176f7e['query']);_0x189a33[_0x2187('0x42')]=_['intersection'](_0x176f7e[_0x2187('0x3e')],qs[_0x2187('0x43')](_0x4316f5['query']['fields']));_0x189a33[_0x2187('0x42')]=_0x189a33[_0x2187('0x42')][_0x2187('0x44')]?_0x189a33['attributes']:_0x176f7e[_0x2187('0x3e')];if(!_0x4316f5[_0x2187('0x3f')][_0x2187('0x45')](_0x2187('0x46'))){_0x189a33['limit']=qs[_0x2187('0x23')](_0x4316f5[_0x2187('0x3f')][_0x2187('0x23')]);_0x189a33[_0x2187('0x21')]=qs[_0x2187('0x21')](_0x4316f5[_0x2187('0x3f')][_0x2187('0x21')]);}_0x189a33[_0x2187('0x47')]=qs['sort'](_0x4316f5[_0x2187('0x3f')][_0x2187('0x48')]);_0x189a33['where']=qs['filters'](_['pick'](_0x4316f5[_0x2187('0x3f')],_0x176f7e[_0x2187('0x40')]),_0x1f9042);var _0x3828c3=[];var _0x2b5135=squel[_0x2187('0x49')]()[_0x2187('0x4a')]('id')[_0x2187('0x4a')](_0x2187('0x32'))['field']('color')['from']('tools_tags');var _0x3dda32=squel[_0x2187('0x49')]()['field'](_0x2187('0x4b'))['field'](_0x2187('0x4c'))[_0x2187('0x4a')](_0x2187('0x4d'))[_0x2187('0x4e')]('user_has_sms_interactions','ui')['left_join'](_0x2187('0x4f'),'u',_0x2187('0x50'));var _0x3ab7b2=squel[_0x2187('0x49')]()[_0x2187('0x4e')](_0x2187('0x51'),'i')['left_join']('cm_contacts','c',_0x2187('0x52'))['left_join'](_0x2187('0x4f'),'o',_0x2187('0x53'))[_0x2187('0x54')]('sms_accounts','a',_0x2187('0x55'))[_0x2187('0x54')](_0x2187('0x56'),'me',_0x2187('0x57'))[_0x2187('0x54')]('sms_interaction_has_tags','it',_0x2187('0x58'))[_0x2187('0x54')]('tools_tags','t',_0x2187('0x59'));var _0x3db9e3=squel[_0x2187('0x5a')]();var _0x5d2e7f=[];var _0x8117d2=squel[_0x2187('0x5a')]();var _0x30ed83;if(_0x4316f5[_0x2187('0x3f')]['search']){_0x30ed83=as['parseSearch'](_0x4316f5[_0x2187('0x3f')][_0x2187('0x5b')]);var _0x44d305=_0x30ed83['sqlOperator'];for(var _0x949532=0x0;_0x949532<_0x30ed83[_0x2187('0x5c')][_0x2187('0x44')];_0x949532++){var _0x3ed704=_0x30ed83[_0x2187('0x5c')][_0x949532];var _0x48daf8='i';var _0x45b685=_[_0x2187('0x5d')](_0x1f9042,['name',_0x3ed704[_0x2187('0x4a')]]);if(!_0x45b685){switch(_0x3ed704[_0x2187('0x4a')]){case _0x2187('0x5e'):if(_0x3ed704[_0x2187('0x5f')]==0x1){_0x3ab7b2[_0x2187('0x60')]('`'+_0x3ed704[_0x2187('0x4a')]+_0x2187('0x61'));}else{_0x3ab7b2[_0x2187('0x60')]('`'+_0x3ed704[_0x2187('0x4a')]+_0x2187('0x62'));}break;case _0x2187('0x63'):if(_0x3ed704[_0x2187('0x64')]===_0x2187('0x65')){if(_0x3ed704[_0x2187('0x5f')][_0x2187('0x37')]('\x20')['length']>0x1){_0x3db9e3[_0x44d305](_0x2187('0x66'),qs['getFullTextValue'](_0x3ed704[_0x2187('0x5f')]),null);}else{var _0x352d0d='%'+_0x3ed704[_0x2187('0x5f')]+'%';_0x3db9e3[_0x44d305]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x352d0d,_0x352d0d,_0x352d0d);}}else{_0x45b685=_[_0x2187('0x5d')](_0x1f9042,[_0x2187('0x32'),_0x2187('0x67')]);_0x3ed704[_0x2187('0x4a')]='ContactId';_0x3c163c=as[_0x2187('0x68')](_0x48daf8,_0x45b685['type'],_0x3ed704);_0x3db9e3[_0x44d305](_0x3c163c['text'],_0x3c163c['value'][_0x2187('0x69')],_0x3c163c[_0x2187('0x5f')][_0x2187('0x2e')]);}break;case _0x2187('0x6a'):var _0x2d7f71=_0x3ed704[_0x2187('0x5f')][_0x2187('0x37')](',')[_0x2187('0x33')](function(_0x2ba5d1){return Number(_0x2ba5d1);});_0x2d7f71[_0x2187('0x38')](function(_0x2fb0bf){_0x8117d2['or'](_0x2187('0x6b'),'%,'+_0x2fb0bf+',%');});_0x5d2e7f=_[_0x2187('0x6c')](_0x5d2e7f,_0x2d7f71);break;case _0x2187('0x6d'):if(_0x3ed704[_0x2187('0x64')]==='$substring'){_0x3db9e3[_0x44d305](_0x2187('0x6e'),'%'+_0x3ed704[_0x2187('0x5f')]+'%',null);}else{_0x45b685=_[_0x2187('0x5d')](_0x1f9042,[_0x2187('0x32'),_0x2187('0x6f')]);_0x3ed704[_0x2187('0x4a')]='UserId';_0x3c163c=as[_0x2187('0x68')](_0x48daf8,_0x45b685[_0x2187('0x3d')],_0x3ed704);_0x3db9e3[_0x44d305](_0x3c163c[_0x2187('0x70')],_0x3c163c[_0x2187('0x5f')][_0x2187('0x69')],_0x3c163c[_0x2187('0x5f')][_0x2187('0x2e')]);}break;case _0x2187('0x71'):_0x3c163c=as[_0x2187('0x68')]('me',null,_0x3ed704);_0x3db9e3[_0x44d305](_0x3c163c[_0x2187('0x70')],_0x3c163c['value'][_0x2187('0x69')],_0x3c163c[_0x2187('0x5f')][_0x2187('0x2e')]);break;}}else{var _0x3c163c=as[_0x2187('0x68')](_0x48daf8,_0x45b685[_0x2187('0x3d')],_0x3ed704);_0x3db9e3[_0x44d305](_0x3c163c[_0x2187('0x70')],_0x3c163c[_0x2187('0x5f')][_0x2187('0x69')],_0x3c163c['value'][_0x2187('0x2e')]);}}}else{var _0x30fb6c=_(_0x4316f5['query'])[_0x2187('0x72')]()[_0x2187('0x33')](function(_0x531794){return _['some'](_0x1f9042,['name',_0x531794])?_0x531794:undefined;})['compact']()[_0x2187('0x5f')]();if(!_[_0x2187('0x73')](_0x30fb6c)){_0x30fb6c[_0x2187('0x38')](function(_0x122d80){if(_0x122d80===_0x2187('0x74')){_0x3ab7b2[_0x2187('0x75')](_0x2187('0x76'),[][_0x2187('0x77')](_0x4316f5[_0x2187('0x3f')][_0x122d80]));}else if(_0x122d80===_0x2187('0x78')){var _0x3e00e8=JSON['parse'](_0x4316f5['query'][_0x122d80])[_0x2187('0x79')];var _0x5c61b5=JSON[_0x2187('0x7a')](_0x4316f5[_0x2187('0x3f')][_0x122d80])[_0x2187('0x7b')];_0x3ab7b2['where'](_0x2187('0x7c'),_0x3e00e8,_0x5c61b5);}else{if(_0x4316f5[_0x2187('0x3f')][_0x122d80]===_0x2187('0x7d')){_0x3ab7b2['where']('i.'+_0x122d80+_0x2187('0x7e'));}else{_0x3ab7b2[_0x2187('0x75')]('i.'+_0x122d80+_0x2187('0x7f'),_0x4316f5[_0x2187('0x3f')][_0x122d80]);}}});}if(_0x4316f5['query']['read']){if(_0x4316f5[_0x2187('0x3f')][_0x2187('0x80')]==0x1){_0x3ab7b2[_0x2187('0x60')](_0x2187('0x81'));}else{_0x3ab7b2[_0x2187('0x60')]('`unreadMessages`\x20>\x200');}}if(_0x4316f5[_0x2187('0x3f')][_0x2187('0x82')]){_0x5d2e7f=_[_0x2187('0x83')](_0x4316f5['query'][_0x2187('0x82')])?_0x4316f5['query']['tag']:new Array(_0x4316f5[_0x2187('0x3f')][_0x2187('0x82')]);_0x5d2e7f['forEach'](function(_0x2407f9){_0x8117d2['or'](_0x2187('0x6b'),'%,'+_0x2407f9+',%');});}if(_0x4316f5['query'][_0x2187('0x84')]){var _0x561c40=_0x4316f5['query']['filter'][_0x2187('0x85')]('\x5c','\x5c\x5c')[_0x2187('0x85')](/'/g,'\x27\x27');if(qs[_0x2187('0x86')](_0x561c40)){_0x3db9e3['or']('i.id\x20LIKE\x20?',_0x561c40+'%')['or'](_0x2187('0x87'),_0x561c40+'%');}else{_0x3db9e3['or'](_0x2187('0x88'),qs[_0x2187('0x89')](_0x561c40))['or'](_0x2187('0x8a'),_0x561c40+'%');}}}_0x3ab7b2['where'](_0x3db9e3);_0x3ab7b2[_0x2187('0x8b')](_0x2187('0x8c'));var _0xf884c3={'type':db[_0x2187('0x8d')]['QueryTypes'][_0x2187('0x8e')],'raw':!![]};var _0x15158a=_0x3ab7b2[_0x2187('0x8f')]();_0x15158a[_0x2187('0x4a')](_0x2187('0x8c'));_0x15158a['field'](_0x2187('0x90'),_0x2187('0x5e'));if(_0x189a33[_0x2187('0x47')]){_0x189a33[_0x2187('0x47')]['forEach'](function(_0x3ca230){var _0x49da9c=_0x3ca230[0x0]===_0x2187('0x91')?_0x3ca230[0x0]:'i.'+_0x3ca230[0x0];_0x3ab7b2[_0x2187('0x47')](_0x49da9c,_0x3ca230[0x1]===_0x2187('0x92')?![]:!![]);});}if(!_['isEmpty'](_0x5d2e7f)){_0x3ab7b2['having'](_0x8117d2);_0x15158a[_0x2187('0x75')](_0x2187('0x93'),_0x5d2e7f);}BPromise[_0x2187('0x94')]()['then'](function(){if(!_0x30ed83){if(_0x4316f5[_0x2187('0x3f')]['SmsAccountId'])return;_0x15158a[_0x2187('0x75')](_0x2187('0x95'));_0x3ab7b2[_0x2187('0x75')](_0x2187('0x95'));return;}if(_0x4316f5['user'][_0x2187('0x96')]!=='agent')return;return _0x4316f5[_0x2187('0x97')][_0x2187('0x98')]({'attributes':['id'],'raw':!![]})[_0x2187('0x2c')](function(_0x422c49){if(_['isEmpty'](_0x422c49)){_0x15158a[_0x2187('0x75')](_0x2187('0x99'));_0x3ab7b2['where']('i.SmsAccountId\x20IS\x20NULL');}else{_0x15158a[_0x2187('0x75')]('i.SmsAccountId\x20IN\x20?',_[_0x2187('0x33')](_0x422c49,'id'));_0x3ab7b2['where']('i.SmsAccountId\x20IN\x20?',_[_0x2187('0x33')](_0x422c49,'id'));}});})[_0x2187('0x2c')](function(){if(_0x4316f5[_0x2187('0x97')][_0x2187('0x96')]==='agent'&&!_0x30ed83&&!_0x4316f5[_0x2187('0x3f')][_0x2187('0x74')])return[];return db[_0x2187('0x9a')][_0x2187('0x3f')](_0x15158a['toString'](),_0xf884c3);})['then'](function(_0x9fa202){_0x21c739[_0x2187('0x24')]=_0x9fa202[_0x2187('0x44')];if(_0x21c739[_0x2187('0x24')]===0x0)return[];return db[_0x2187('0x9a')]['query'](_0x2b5135[_0x2187('0x9b')](),_0xf884c3)[_0x2187('0x2c')](function(_0x246c52){_0x3828c3=_[_0x2187('0x9c')](_0x246c52,'id');_0xf884c3=_[_0x2187('0x9d')](_0xf884c3,{'model':db[_0x2187('0x9e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4316f5[_0x2187('0x3f')][_0x2187('0x43')]){_0x189a33[_0x2187('0x42')]['forEach'](function(_0x3f63dc){_0x3ab7b2[_0x2187('0x4a')]('i.'+_0x3f63dc);});}else{_0x3ab7b2[_0x2187('0x4a')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x2187('0x5e'));_0x3ab7b2[_0x2187('0x4a')](_0x2187('0x9f'),_0x2187('0xa0'));_0x3ab7b2['field'](_0x2187('0xa1'),_0x2187('0xa2'));_0x3ab7b2['field']('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x3ab7b2[_0x2187('0x4a')](_0x2187('0xa3'));_0x3ab7b2['field'](_0x2187('0xa4'),'Contact.firstName');_0x3ab7b2[_0x2187('0x4a')](_0x2187('0xa5'),_0x2187('0xa6'));_0x3ab7b2[_0x2187('0x4a')]('c.email',_0x2187('0xa7'));_0x3ab7b2[_0x2187('0x4a')](_0x2187('0xa8'),_0x2187('0xa9'));_0x3ab7b2['field']('c.mobile',_0x2187('0xaa'));_0x3ab7b2[_0x2187('0x4a')](_0x2187('0xab'),_0x2187('0xac'));_0x3ab7b2[_0x2187('0x4a')](_0x2187('0xad'),'Owner.fullname');_0x3ab7b2[_0x2187('0x4a')](_0x2187('0xae'),_0x2187('0xaf'));_0x3ab7b2[_0x2187('0x4a')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x2187('0x36'));}if(_0x189a33[_0x2187('0x23')])_0x3ab7b2[_0x2187('0x23')](_0x189a33[_0x2187('0x23')]);if(_0x189a33[_0x2187('0x21')])_0x3ab7b2[_0x2187('0x21')](_0x189a33[_0x2187('0x21')]);return db[_0x2187('0x9a')][_0x2187('0x3f')](_0x3ab7b2[_0x2187('0x9b')](),_0xf884c3);})[_0x2187('0x2c')](function(_0x3dbbf2){if(_0x3dbbf2['length']>0x0)_0x3dda32['where']('ui.SmsInteractionId\x20IN\x20?',_[_0x2187('0x33')](_0x3dbbf2,'id'));return db[_0x2187('0x9a')][_0x2187('0x3f')](_0x3dda32[_0x2187('0x9b')](),_0xf884c3)[_0x2187('0x2c')](function(_0x5b9f46){var _0x42f047=_[_0x2187('0xb0')](_0x5b9f46,_0x2187('0xb1'));var _0x3dfdd5=[];_0x3dbbf2[_0x2187('0x38')](function(_0x52a104){_0x3dfdd5[_0x2187('0x39')](updateSmsInteraction(_0x52a104,_0x3828c3,_0x42f047));});return BPromise[_0x2187('0xb2')](_0x3dfdd5);});});})[_0x2187('0x2c')](function(_0x16cbf1){_0x21c739[_0x2187('0xb3')]=_0x16cbf1;return _0x21c739;})[_0x2187('0x2c')](respondWithFilteredResult(_0x252798,_0x189a33))[_0x2187('0x3a')](handleError(_0x252798,null));};exports['show']=function(_0x3071b0,_0x3ec9c8){var _0x5a31c0={'raw':![],'where':{'id':_0x3071b0[_0x2187('0xb4')]['id']}},_0x2ad3fb={};_0x2ad3fb[_0x2187('0x3e')]=_[_0x2187('0x72')](db[_0x2187('0x9e')][_0x2187('0x3c')]);_0x2ad3fb[_0x2187('0x3f')]=_['keys'](_0x3071b0[_0x2187('0x3f')]);_0x2ad3fb['filters']=_[_0x2187('0x41')](_0x2ad3fb[_0x2187('0x3e')],_0x2ad3fb[_0x2187('0x3f')]);_0x5a31c0[_0x2187('0x42')]=_[_0x2187('0x41')](_0x2ad3fb[_0x2187('0x3e')],qs[_0x2187('0x43')](_0x3071b0['query'][_0x2187('0x43')]));_0x5a31c0[_0x2187('0x42')]=_0x5a31c0[_0x2187('0x42')]['length']?_0x5a31c0[_0x2187('0x42')]:_0x2ad3fb[_0x2187('0x3e')];if(_0x3071b0[_0x2187('0x3f')][_0x2187('0xb5')]){_0x5a31c0[_0x2187('0xb6')]=[{'all':!![]}];}_0x5a31c0=_[_0x2187('0x9d')]({},_0x5a31c0,_0x3071b0[_0x2187('0xb7')]);return db[_0x2187('0x9e')]['find'](_0x5a31c0)['then'](handleEntityNotFound(_0x3ec9c8,null))[_0x2187('0x2c')](respondWithResult(_0x3ec9c8,null))[_0x2187('0x3a')](handleError(_0x3ec9c8,null));};exports[_0x2187('0xb8')]=function(_0x18b5da,_0x2619ce){return db[_0x2187('0x9e')]['create'](_0x18b5da[_0x2187('0x71')],{})[_0x2187('0x2c')](respondWithResult(_0x2619ce,0xc9))[_0x2187('0x3a')](handleError(_0x2619ce,null));};exports[_0x2187('0x2b')]=function(_0x4ac79c,_0x495921){if(_0x4ac79c[_0x2187('0x71')]['id']){delete _0x4ac79c[_0x2187('0x71')]['id'];}return db[_0x2187('0x9e')]['find']({'where':{'id':_0x4ac79c[_0x2187('0xb4')]['id']}})['then'](handleEntityNotFound(_0x495921,null))['then'](saveUpdates(_0x4ac79c[_0x2187('0x71')],null))[_0x2187('0x2c')](respondWithResult(_0x495921,null))[_0x2187('0x3a')](handleError(_0x495921,null));};exports[_0x2187('0x2d')]=function(_0x1bcdb0,_0x46470f){return db[_0x2187('0x9e')]['find']({'where':{'id':_0x1bcdb0[_0x2187('0xb4')]['id']}})[_0x2187('0x2c')](handleEntityNotFound(_0x46470f,null))[_0x2187('0x2c')](removeEntity(_0x46470f,null))[_0x2187('0x3a')](handleError(_0x46470f,null));};exports['describe']=function(_0x46c9d4,_0x397e31){return db['SmsInteraction']['describe']()[_0x2187('0x2c')](respondWithResult(_0x397e31,null))[_0x2187('0x3a')](handleError(_0x397e31,null));};exports[_0x2187('0xb9')]=function(_0x210252,_0x38a75a,_0x42b737){return db[_0x2187('0xba')][_0x2187('0x5d')]({'where':{'id':_0x210252[_0x2187('0xb4')]['id']}})[_0x2187('0x2c')](handleEntityNotFound(_0x38a75a,null))[_0x2187('0x2c')](function(_0x3cebcf){if(_0x3cebcf){return _0x3cebcf[_0x2187('0xb9')](_0x210252[_0x2187('0x71')][_0x2187('0xbb')],_[_0x2187('0xbc')](_0x210252[_0x2187('0x71')],[_0x2187('0xbb'),'id'])||{});}})[_0x2187('0x2c')](respondWithResult(_0x38a75a,null))[_0x2187('0x3a')](handleError(_0x38a75a,null));};exports[_0x2187('0xbd')]=function(_0x155ea8,_0x46adce,_0x46d845){var _0x5c7f06={'raw':![],'where':{}};var _0x296dc9={};var _0x29524d={'count':0x0,'rows':[]};return db[_0x2187('0x9e')]['findOne']({'where':{'id':_0x155ea8['params']['id']}})[_0x2187('0x2c')](handleEntityNotFound(_0x46adce,null))[_0x2187('0x2c')](function(_0x14ff79){if(_0x14ff79){_0x296dc9[_0x2187('0x3e')]=_[_0x2187('0x72')](db[_0x2187('0xba')]['rawAttributes']);_0x296dc9[_0x2187('0x3f')]=_[_0x2187('0x72')](_0x155ea8[_0x2187('0x3f')]);_0x296dc9[_0x2187('0x40')]=_[_0x2187('0x41')](_0x296dc9[_0x2187('0x3e')],_0x296dc9['query']);_0x5c7f06['attributes']=_[_0x2187('0x41')](_0x296dc9[_0x2187('0x3e')],qs['fields'](_0x155ea8[_0x2187('0x3f')][_0x2187('0x43')]));_0x5c7f06['attributes']=_0x5c7f06[_0x2187('0x42')]['length']?_0x5c7f06[_0x2187('0x42')]:_0x296dc9[_0x2187('0x3e')];if(!_0x155ea8[_0x2187('0x3f')]['hasOwnProperty'](_0x2187('0x46'))){_0x5c7f06[_0x2187('0x23')]=qs['limit'](_0x155ea8[_0x2187('0x3f')]['limit']);_0x5c7f06[_0x2187('0x21')]=qs['offset'](_0x155ea8[_0x2187('0x3f')]['offset']);}_0x5c7f06[_0x2187('0x47')]=qs['sort'](_0x155ea8[_0x2187('0x3f')][_0x2187('0x48')]);_0x5c7f06[_0x2187('0x75')]=qs[_0x2187('0x40')](_['pick'](_0x155ea8[_0x2187('0x3f')],_0x296dc9[_0x2187('0x40')]));_0x5c7f06[_0x2187('0x75')]['SmsInteractionId']=_0x14ff79['id'];if(_0x155ea8[_0x2187('0x3f')][_0x2187('0x84')]){_0x5c7f06[_0x2187('0x75')]=_[_0x2187('0x9d')](_0x5c7f06[_0x2187('0x75')],{'$or':_[_0x2187('0x33')](_0x5c7f06[_0x2187('0x42')],function(_0xe2a0fd){var _0x5a55b9={};_0x5a55b9[_0xe2a0fd]={'$like':'%'+_0x155ea8['query'][_0x2187('0x84')]+'%'};return _0x5a55b9;})});}if(_0x155ea8[_0x2187('0x3f')][_0x2187('0x79')]){var _0x3b0358=_0x155ea8[_0x2187('0x3f')][_0x2187('0x79')][_0x2187('0x37')](',');var _0x349833={};_0x349833[_0x3b0358[0x0]]={'$gte':moment(_0x3b0358[0x1])[_0x2187('0xbe')](_0x2187('0xbf'))};_0x5c7f06[_0x2187('0x75')]=_['merge'](_0x5c7f06[_0x2187('0x75')],_0x349833);}_0x5c7f06=_[_0x2187('0x9d')]({},_0x5c7f06,_0x155ea8['options']);return db[_0x2187('0xba')][_0x2187('0x24')]({'where':_0x5c7f06[_0x2187('0x75')]})[_0x2187('0x2c')](function(_0x56b09c){_0x29524d['count']=_0x56b09c;if(_0x155ea8['query']['includeAll']){_0x5c7f06[_0x2187('0xb6')]=[{'all':!![]}];}return db[_0x2187('0xba')]['findAll'](_0x5c7f06);})[_0x2187('0x2c')](function(_0x3a2c88){_0x29524d['rows']=_0x3a2c88;return _0x29524d;});}})['then'](respondWithFilteredResult(_0x46adce,_0x5c7f06))[_0x2187('0x3a')](handleError(_0x46adce,null));};exports[_0x2187('0xc0')]=function(_0x543c7e,_0x53512c,_0x258dce){return db[_0x2187('0x9e')]['find']({'where':{'id':_0x543c7e[_0x2187('0xb4')]['id']}})[_0x2187('0x2c')](handleEntityNotFound(_0x53512c,null))[_0x2187('0x2c')](function(_0x272513){if(_0x272513){return _0x272513[_0x2187('0xc1')](_0x543c7e[_0x2187('0x71')]['ids'],_['omit'](_0x543c7e[_0x2187('0x71')],[_0x2187('0xbb'),'id'])||{})[_0x2187('0xc2')](function(){return db[_0x2187('0x6a')][_0x2187('0xc3')]({'attributes':['id',_0x2187('0x32'),_0x2187('0xc4')],'where':{'id':_0x543c7e[_0x2187('0x71')][_0x2187('0xbb')]}});})[_0x2187('0x2c')](function(_0x2dbc9b){socket[_0x2187('0xc5')](_0x2187('0xc6'),{'id':Number(_0x543c7e['params']['id']),'tags':_0x2dbc9b||[]});return{'id':Number(_0x543c7e['params']['id']),'tags':_0x2dbc9b||[]};});}})['then'](respondWithResult(_0x53512c,null))[_0x2187('0x3a')](handleError(_0x53512c,null));};exports['removeTags']=function(_0x4553c8,_0x336805,_0x7a4405){return db[_0x2187('0x9e')][_0x2187('0x5d')]({'where':{'id':_0x4553c8[_0x2187('0xb4')]['id']}})[_0x2187('0x2c')](handleEntityNotFound(_0x336805,null))[_0x2187('0x2c')](function(_0x27b603){if(_0x27b603){return _0x27b603[_0x2187('0xc7')](_0x4553c8[_0x2187('0x3f')][_0x2187('0xbb')]);}})[_0x2187('0x2c')](respondWithStatusCode(_0x336805,null))[_0x2187('0x3a')](handleError(_0x336805,null));};exports[_0x2187('0xc8')]=function(_0x123811,_0x1606ae){var _0x34c73=moment()['unix']()['toString']();var _0x4d499b=path[_0x2187('0xc9')](config[_0x2187('0xca')],'server',_0x2187('0xcb'),_0x2187('0xcc'));var _0x1a27cb=path[_0x2187('0xc9')](config[_0x2187('0xca')],_0x2187('0xcd'),'files','attachments');var _0x196839=path['join'](_0x4d499b,_0x34c73);var _0x158f49=util[_0x2187('0xbe')]('transcript-%d-%s.zip',_0x123811[_0x2187('0xb4')]['id'],_0x34c73);var _0x5b73de=path['join'](_0x4d499b,_0x158f49);var _0x257a56=[];_0x257a56[_0x2187('0x39')]({'model':db[_0x2187('0x6d')],'as':_0x2187('0x6d'),'attributes':['id','fullname'],'raw':!![]});_0x257a56[_0x2187('0x39')]({'model':db[_0x2187('0xce')],'as':'Contact','attributes':['id','firstName',_0x2187('0xcf')],'raw':!![]});var _0x473514=[{'model':db[_0x2187('0xba')],'as':_0x2187('0xd0'),'attributes':['id',_0x2187('0x71'),_0x2187('0x78'),_0x2187('0xd1'),_0x2187('0xd2'),_0x2187('0x80')],'include':_0x257a56}];_0x473514['push']({'model':db[_0x2187('0xd3')],'as':_0x2187('0xd4'),'attributes':['id',_0x2187('0x32')]});_0x473514['push']({'model':db['User'],'as':_0x2187('0xd5'),'attributes':['id',_0x2187('0x34')]});return db[_0x2187('0x9e')][_0x2187('0x5d')]({'where':{'id':_0x123811[_0x2187('0xb4')]['id']},'include':_0x473514})[_0x2187('0x2c')](handleEntityNotFound(_0x1606ae,null))[_0x2187('0x2c')](function(_0x32224a){if(_0x32224a){var _0x20dad0=_0x32224a[_0x2187('0xd6')]({'plain':!![]});fs[_0x2187('0xd7')](_0x196839);var _0x60e5f0={'channel':_0x2187('0xd8'),'account':_0x20dad0['Account']['name'],'agent':_0x20dad0[_0x2187('0xd5')]?_0x20dad0[_0x2187('0xd5')]['fullname']:_0x2187('0xd9'),'createdAt':moment(_0x20dad0[_0x2187('0x78')])[_0x2187('0xbe')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x20dad0[_0x2187('0xda')]?moment(_0x20dad0['closedAt'])[_0x2187('0xbe')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2187('0x9b')]():'','disposition':_0x20dad0[_0x2187('0xdb')],'messages':_(_0x20dad0['Messages'])[_0x2187('0x84')]({'secret':![]})[_0x2187('0x33')](function(_0x347cf8){return{'date':moment(_0x347cf8[_0x2187('0x78')])['format'](_0x2187('0xbf'))['toString'](),'sender':_0x347cf8[_0x2187('0xd1')]===_0x2187('0xdc')?_0x347cf8['User']?_0x347cf8[_0x2187('0x6d')]['fullname']:'System':_0x347cf8['Contact'][_0x2187('0xdd')]+(_0x347cf8['Contact']['lastName']?'\x20'+_0x347cf8[_0x2187('0x63')]['lastName']:''),'body':_0x347cf8[_0x2187('0x71')],'direction':_0x347cf8[_0x2187('0xd1')]===_0x2187('0xdc')?'A':'C','secret':_0x347cf8[_0x2187('0xd2')],'read':_0x347cf8[_0x2187('0x80')]};})[_0x2187('0x5f')]()};return ejs[_0x2187('0xde')](path[_0x2187('0xc9')](config[_0x2187('0xca')],_0x2187('0xcd'),_0x2187('0xdf'),_0x2187('0xe0')),{'interaction':_0x60e5f0})[_0x2187('0x2c')](function(_0x69b6a2){var _0x50ad0c=path[_0x2187('0xc9')](_0x196839,'transcript-'+_0x20dad0['id']+'-'+_0x34c73+_0x2187('0xe1'));var _0x2f66c1={'path':_0x50ad0c,'channel':_0x2187('0xd8'),'interactionId':_0x20dad0['id']};return pdf[_0x2187('0xe2')](_0x69b6a2,_0x2f66c1);})[_0x2187('0x2c')](function(){return new BPromise(function(_0xf8ddd5,_0x31ac4a){zipdir(_0x196839,{'saveTo':_0x5b73de},function(_0x14be0d,_0x19a3bc){if(_0x14be0d)return _0x31ac4a(_0x14be0d);return _0xf8ddd5(_0x19a3bc);});})[_0x2187('0x2c')](function(){return new BPromise(function(_0xf7351a,_0x26faf5){rimraf(_0x196839,function(_0x3f9701){if(_0x3f9701)_0x26faf5(_0x3f9701);return _0xf7351a();});});})[_0x2187('0x2c')](function(){return _0x1606ae['download'](_0x5b73de,_0x158f49,function(_0x3640dc){if(_0x3640dc){console[_0x2187('0xe3')](_0x2187('0xe4'),_0x3640dc);}else{fs['unlinkSync'](_0x5b73de);}});});});}else{return _0x1606ae[_0x2187('0x2f')](0xc8);}})['catch'](handleError(_0x1606ae,null));};
\ No newline at end of file
index c19d99c..6b5968f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','then','Users','map'];(function(_0x37f184,_0x13ed3c){var _0x26e39f=function(_0x41a821){while(--_0x41a821){_0x37f184['push'](_0x37f184['shift']());}};_0x26e39f(++_0x13ed3c);}(_0x77e6,0x1a6));var _0x677e=function(_0x22fded,_0x479140){_0x22fded=_0x22fded-0x0;var _0x9941df=_0x77e6[_0x22fded];return _0x9941df;};'use strict';var EventEmitter=require(_0x677e('0x0'));var SmsInteraction=require(_0x677e('0x1'))['db'][_0x677e('0x2')];var SmsMessage=require(_0x677e('0x1'))['db'][_0x677e('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x677e('0x4')](0x0);var events={'afterCreate':_0x677e('0x5'),'afterUpdate':_0x677e('0x6'),'afterDestroy':'remove'};function emitEvent(_0x2f0307){return function(_0x2560a6,_0x52e3f9,_0x18c5e1){_0x2560a6['getUsers']({'attributes':['id'],'raw':!![]})[_0x677e('0x7')](function(_0x4d1a57){_0x2560a6['setDataValue'](_0x677e('0x8'),_0x4d1a57[_0x677e('0x9')](function(_0x28d41e){return{'id':_0x28d41e['id']};}));return SmsMessage[_0x677e('0xa')]({'where':{'SmsInteractionId':_0x2560a6['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x206305){_0x2560a6['setDataValue'](_0x677e('0xb'),_0x206305[_0x677e('0xc')]);SmsInteractionEvents[_0x677e('0xd')](_0x2f0307+':'+_0x2560a6['id'],_0x2560a6);SmsInteractionEvents[_0x677e('0xd')](_0x2f0307,_0x2560a6);_0x18c5e1(null);})[_0x677e('0xe')](_0x18c5e1(null));};}for(var e in events){if(events[_0x677e('0xf')](e)){var event=events[e];SmsInteraction[_0x677e('0x10')](e,emitEvent(event));}}module[_0x677e('0x11')]=SmsInteractionEvents;
\ No newline at end of file
+var _0xed3c=['unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','setMaxListeners','save','update','getUsers','Users','then','setDataValue'];(function(_0x636cba,_0x3509ce){var _0x3dbd03=function(_0x525b68){while(--_0x525b68){_0x636cba['push'](_0x636cba['shift']());}};_0x3dbd03(++_0x3509ce);}(_0xed3c,0x1a6));var _0xced3=function(_0x155413,_0x1c89b4){_0x155413=_0x155413-0x0;var _0x434c71=_0xed3c[_0x155413];return _0x434c71;};'use strict';var EventEmitter=require(_0xced3('0x0'));var SmsInteraction=require(_0xced3('0x1'))['db'][_0xced3('0x2')];var SmsMessage=require(_0xced3('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xced3('0x3')](0x0);var events={'afterCreate':_0xced3('0x4'),'afterUpdate':_0xced3('0x5'),'afterDestroy':'remove'};function emitEvent(_0x51e500){return function(_0x3d3aa0,_0x1ada18,_0x2f92f8){_0x3d3aa0[_0xced3('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x510164){_0x3d3aa0['setDataValue'](_0xced3('0x7'),_0x510164['map'](function(_0x5bc7a7){return{'id':_0x5bc7a7['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x3d3aa0['id'],'direction':'in','read':![]},'raw':!![]});})[_0xced3('0x8')](function(_0x321c42){_0x3d3aa0[_0xced3('0x9')](_0xced3('0xa'),_0x321c42[_0xced3('0xb')]);SmsInteractionEvents['emit'](_0x51e500+':'+_0x3d3aa0['id'],_0x3d3aa0);SmsInteractionEvents[_0xced3('0xc')](_0x51e500,_0x3d3aa0);_0x2f92f8(null);})[_0xced3('0xd')](_0x2f92f8(null));};}for(var e in events){if(events[_0xced3('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0xced3('0xf')]=SmsInteractionEvents;
\ No newline at end of file
index acee39b..635e6c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34dd=['bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','closed','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment'];(function(_0x554f6f,_0x5cc845){var _0x25d373=function(_0xfd089c){while(--_0xfd089c){_0x554f6f['push'](_0x554f6f['shift']());}};_0x25d373(++_0x5cc845);}(_0x34dd,0x1eb));var _0xd34d=function(_0x2c4756,_0x3c7e9e){_0x2c4756=_0x2c4756-0x0;var _0x46490e=_0x34dd[_0x2c4756];return _0x46490e;};'use strict';var _=require(_0xd34d('0x0'));var util=require(_0xd34d('0x1'));var logger=require(_0xd34d('0x2'))('api');var moment=require(_0xd34d('0x3'));var BPromise=require(_0xd34d('0x4'));var rp=require(_0xd34d('0x5'));var fs=require('fs');var path=require(_0xd34d('0x6'));var rimraf=require(_0xd34d('0x7'));var config=require(_0xd34d('0x8'));var attributes=require(_0xd34d('0x9'));module[_0xd34d('0xa')]=function(_0x86ae6d,_0x25cda0){return _0x86ae6d[_0xd34d('0xb')](_0xd34d('0xc'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x374428,_0x14a207,_0x46a520){if(_0x374428['changed'](_0xd34d('0xd'))){_0x374428['closedAt']=moment()['format'](_0xd34d('0xe'));}_0x46a520(null,_0x374428);}}});};
\ No newline at end of file
+var _0x558c=['exports','define','SmsInteraction','sms_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes'];(function(_0x2aecb2,_0x343312){var _0x3ebb80=function(_0x19fab3){while(--_0x19fab3){_0x2aecb2['push'](_0x2aecb2['shift']());}};_0x3ebb80(++_0x343312);}(_0x558c,0x1bd));var _0xc558=function(_0x4488d4,_0x16957d){_0x4488d4=_0x4488d4-0x0;var _0x58ecfa=_0x558c[_0x4488d4];return _0x58ecfa;};'use strict';var _=require(_0xc558('0x0'));var util=require(_0xc558('0x1'));var logger=require(_0xc558('0x2'))(_0xc558('0x3'));var moment=require(_0xc558('0x4'));var BPromise=require(_0xc558('0x5'));var rp=require(_0xc558('0x6'));var fs=require('fs');var path=require(_0xc558('0x7'));var rimraf=require(_0xc558('0x8'));var config=require(_0xc558('0x9'));var attributes=require(_0xc558('0xa'));module[_0xc558('0xb')]=function(_0x4c0758,_0x2fdb27){return _0x4c0758[_0xc558('0xc')](_0xc558('0xd'),attributes,{'tableName':_0xc558('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1a9c1e,_0x265f96,_0x35a34a){if(_0x1a9c1e[_0xc558('0xf')](_0xc558('0x10'))){_0x1a9c1e[_0xc558('0x11')]=moment()['format'](_0xc558('0x12'));}_0x35a34a(null,_0x1a9c1e);}}});};
\ No newline at end of file
index 9cb6e52..16e731e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb02d=['../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','request\x20sent','stringify','error','SmsInteraction,\x20%s,\x20%s','message','result','catch','UpdateSmsInteraction','update','options','attributes','limit','info','debug','AddTagsToSmsInteraction','SmsInteraction','find','body','ids','spread','AddTags','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x495841,_0x19f71a){var _0x4e1963=function(_0x46c9ce){while(--_0x46c9ce){_0x495841['push'](_0x495841['shift']());}};_0x4e1963(++_0x19f71a);}(_0xb02d,0x158));var _0xdb02=function(_0x45c8df,_0xf2ce82){_0x45c8df=_0x45c8df-0x0;var _0x1c22a0=_0xb02d[_0x45c8df];return _0x1c22a0;};'use strict';var _=require('lodash');var util=require(_0xdb02('0x0'));var moment=require(_0xdb02('0x1'));var BPromise=require(_0xdb02('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdb02('0x3'));var db=require(_0xdb02('0x4'))['db'];var utils=require(_0xdb02('0x5'));var logger=require('../../config/logger')(_0xdb02('0x6'));var config=require(_0xdb02('0x7'));var jayson=require(_0xdb02('0x8'));var client=jayson[_0xdb02('0x9')][_0xdb02('0xa')]({'port':0x232a});config[_0xdb02('0xb')]=_['defaults'](config[_0xdb02('0xb')],{'host':_0xdb02('0xc'),'port':0x18eb});var socket=require(_0xdb02('0xd'))(new Redis(config[_0xdb02('0xb')]));require(_0xdb02('0xe'))[_0xdb02('0xf')](socket);function respondWithRpcPromise(_0x21b092,_0x568bea,_0x4f8a09){return new BPromise(function(_0x214fb2,_0x528210){return client[_0xdb02('0x10')](_0x21b092,_0x4f8a09)[_0xdb02('0x11')](function(_0x57cf73){logger['info']('SmsInteraction,\x20%s,\x20%s',_0x568bea,'request\x20sent');logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x568bea,_0xdb02('0x12'),JSON[_0xdb02('0x13')](_0x57cf73));if(_0x57cf73['error']){if(_0x57cf73[_0xdb02('0x14')]['code']===0x1f4){logger[_0xdb02('0x14')](_0xdb02('0x15'),_0x568bea,_0x57cf73[_0xdb02('0x14')][_0xdb02('0x16')]);return _0x528210(_0x57cf73[_0xdb02('0x14')][_0xdb02('0x16')]);}logger[_0xdb02('0x14')](_0xdb02('0x15'),_0x568bea,_0x57cf73['error'][_0xdb02('0x16')]);return _0x214fb2(_0x57cf73[_0xdb02('0x14')][_0xdb02('0x16')]);}else{logger['info']('SmsInteraction,\x20%s,\x20%s',_0x568bea,_0xdb02('0x12'));_0x214fb2(_0x57cf73[_0xdb02('0x17')]['message']);}})[_0xdb02('0x18')](function(_0x531d11){logger[_0xdb02('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x568bea,_0x531d11);_0x528210(_0x531d11);});});}exports[_0xdb02('0x19')]=function(_0x5d3edc){var _0x3ac23a=this;return new Promise(function(_0x52d03c,_0x55c1f0){return db['SmsInteraction'][_0xdb02('0x1a')](_0x5d3edc['body'],{'raw':_0x5d3edc[_0xdb02('0x1b')]?_0x5d3edc[_0xdb02('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d3edc[_0xdb02('0x1b')]?_0x5d3edc[_0xdb02('0x1b')]['where']||null:null,'attributes':_0x5d3edc[_0xdb02('0x1b')]?_0x5d3edc[_0xdb02('0x1b')][_0xdb02('0x1c')]||null:null,'limit':_0x5d3edc[_0xdb02('0x1b')]?_0x5d3edc[_0xdb02('0x1b')][_0xdb02('0x1d')]||null:null})[_0xdb02('0x11')](function(_0x41cf28){logger[_0xdb02('0x1e')](_0xdb02('0x19'),_0x5d3edc);logger[_0xdb02('0x1f')](_0xdb02('0x19'),_0x5d3edc,JSON[_0xdb02('0x13')](_0x41cf28));_0x52d03c(_0x41cf28);})[_0xdb02('0x18')](function(_0x461c09){logger[_0xdb02('0x14')](_0xdb02('0x19'),_0x461c09[_0xdb02('0x16')],_0x5d3edc);_0x55c1f0(_0x3ac23a['error'](0x1f4,_0x461c09['message']));});});};exports[_0xdb02('0x20')]=function(_0x10c5ba){return new Promise(function(_0x4689c4,_0x1f8145){return db[_0xdb02('0x21')][_0xdb02('0x22')]({'where':_0x10c5ba[_0xdb02('0x1b')]?_0x10c5ba[_0xdb02('0x1b')]['where']||null:null})[_0xdb02('0x11')](function(_0x33e097){if(_0x33e097){return _0x33e097['addTags'](_0x10c5ba[_0xdb02('0x23')][_0xdb02('0x24')],_['omit'](_0x10c5ba[_0xdb02('0x23')],[_0xdb02('0x24'),'id'])||{});}})[_0xdb02('0x25')](function(_0x15fbcf){logger[_0xdb02('0x1e')](_0xdb02('0x26'),_0x10c5ba);logger[_0xdb02('0x1f')]('AddTags',_0x10c5ba,JSON[_0xdb02('0x13')](_0x15fbcf));_0x4689c4(_0x15fbcf);})[_0xdb02('0x18')](function(_0x2923db){logger[_0xdb02('0x14')]('AddTags',_0x2923db[_0xdb02('0x16')],_0x10c5ba);_0x1f8145(_this[_0xdb02('0x14')](0x1f4,_0x2923db[_0xdb02('0x16')]));});});};
\ No newline at end of file
+var _0x13ae=['raw','where','debug','catch','body','omit','ids','spread','info','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','./smsInteraction.socket','register','request','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','UpdateSmsInteraction','SmsInteraction','update','options'];(function(_0x2c2c29,_0x5f169d){var _0x579b1a=function(_0xe6c70b){while(--_0xe6c70b){_0x2c2c29['push'](_0x2c2c29['shift']());}};_0x579b1a(++_0x5f169d);}(_0x13ae,0xaa));var _0xe13a=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x13ae[_0x263a74];return _0x2aa86c;};'use strict';var _=require(_0xe13a('0x0'));var util=require('util');var moment=require(_0xe13a('0x1'));var BPromise=require(_0xe13a('0x2'));var rs=require(_0xe13a('0x3'));var fs=require('fs');var Redis=require(_0xe13a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe13a('0x5'));var logger=require(_0xe13a('0x6'))(_0xe13a('0x7'));var config=require(_0xe13a('0x8'));var jayson=require(_0xe13a('0x9'));var client=jayson['client'][_0xe13a('0xa')]({'port':0x232a});config['redis']=_[_0xe13a('0xb')](config[_0xe13a('0xc')],{'host':_0xe13a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe13a('0xc')]));require(_0xe13a('0xe'))[_0xe13a('0xf')](socket);function respondWithRpcPromise(_0x4b3e6d,_0x203f12,_0x4805b0){return new BPromise(function(_0x39bbfb,_0x1af8a2){return client[_0xe13a('0x10')](_0x4b3e6d,_0x4805b0)[_0xe13a('0x11')](function(_0x5c3ccc){logger['info'](_0xe13a('0x12'),_0x203f12,_0xe13a('0x13'));logger['debug'](_0xe13a('0x14'),_0x203f12,_0xe13a('0x13'),JSON[_0xe13a('0x15')](_0x5c3ccc));if(_0x5c3ccc['error']){if(_0x5c3ccc['error'][_0xe13a('0x16')]===0x1f4){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x203f12,_0x5c3ccc[_0xe13a('0x17')][_0xe13a('0x18')]);return _0x1af8a2(_0x5c3ccc[_0xe13a('0x17')][_0xe13a('0x18')]);}logger[_0xe13a('0x17')](_0xe13a('0x12'),_0x203f12,_0x5c3ccc[_0xe13a('0x17')][_0xe13a('0x18')]);return _0x39bbfb(_0x5c3ccc[_0xe13a('0x17')][_0xe13a('0x18')]);}else{logger['info'](_0xe13a('0x12'),_0x203f12,_0xe13a('0x13'));_0x39bbfb(_0x5c3ccc[_0xe13a('0x19')][_0xe13a('0x18')]);}})['catch'](function(_0x1c9eb5){logger[_0xe13a('0x17')]('SmsInteraction,\x20%s,\x20%s',_0x203f12,_0x1c9eb5);_0x1af8a2(_0x1c9eb5);});});}exports[_0xe13a('0x1a')]=function(_0x159878){var _0x5e368c=this;return new Promise(function(_0x32cca0,_0x17515f){return db[_0xe13a('0x1b')][_0xe13a('0x1c')](_0x159878['body'],{'raw':_0x159878[_0xe13a('0x1d')]?_0x159878['options'][_0xe13a('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x159878['options']?_0x159878[_0xe13a('0x1d')][_0xe13a('0x1f')]||null:null,'attributes':_0x159878[_0xe13a('0x1d')]?_0x159878['options']['attributes']||null:null,'limit':_0x159878[_0xe13a('0x1d')]?_0x159878[_0xe13a('0x1d')]['limit']||null:null})[_0xe13a('0x11')](function(_0x551807){logger['info'](_0xe13a('0x1a'),_0x159878);logger[_0xe13a('0x20')](_0xe13a('0x1a'),_0x159878,JSON['stringify'](_0x551807));_0x32cca0(_0x551807);})[_0xe13a('0x21')](function(_0x5c6182){logger[_0xe13a('0x17')](_0xe13a('0x1a'),_0x5c6182[_0xe13a('0x18')],_0x159878);_0x17515f(_0x5e368c[_0xe13a('0x17')](0x1f4,_0x5c6182[_0xe13a('0x18')]));});});};exports['AddTagsToSmsInteraction']=function(_0x1c2279){return new Promise(function(_0x5a264c,_0x1c184f){return db[_0xe13a('0x1b')]['find']({'where':_0x1c2279['options']?_0x1c2279[_0xe13a('0x1d')][_0xe13a('0x1f')]||null:null})[_0xe13a('0x11')](function(_0xbce2a7){if(_0xbce2a7){return _0xbce2a7['addTags'](_0x1c2279[_0xe13a('0x22')]['ids'],_[_0xe13a('0x23')](_0x1c2279['body'],[_0xe13a('0x24'),'id'])||{});}})[_0xe13a('0x25')](function(_0x574afc){logger[_0xe13a('0x26')]('AddTags',_0x1c2279);logger[_0xe13a('0x20')](_0xe13a('0x27'),_0x1c2279,JSON['stringify'](_0x574afc));_0x5a264c(_0x574afc);})['catch'](function(_0x4f54df){logger[_0xe13a('0x17')](_0xe13a('0x27'),_0x4f54df[_0xe13a('0x18')],_0x1c2279);_0x1c184f(_this[_0xe13a('0x17')](0x1f4,_0x4f54df['message']));});});};
\ No newline at end of file
index a1c9341..6d678ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e98=['update','emit','removeListener','register','smsInteraction:','./smsInteraction.events','save','remove'];(function(_0x4edfce,_0x33c171){var _0x49ac7e=function(_0x2546e0){while(--_0x2546e0){_0x4edfce['push'](_0x4edfce['shift']());}};_0x49ac7e(++_0x33c171);}(_0x9e98,0x12d));var _0x89e9=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0x9e98[_0xfa634c];return _0x73e478;};'use strict';var SmsInteractionEvents=require(_0x89e9('0x0'));var events=[_0x89e9('0x1'),_0x89e9('0x2'),_0x89e9('0x3')];function createListener(_0x36ca3a,_0x3c334a){return function(_0x189c9f){_0x3c334a[_0x89e9('0x4')](_0x36ca3a,_0x189c9f);};}function removeListener(_0x5965f1,_0x49224a){return function(){SmsInteractionEvents[_0x89e9('0x5')](_0x5965f1,_0x49224a);};}exports[_0x89e9('0x6')]=function(_0x3d82b8){for(var _0x4e32d4=0x0,_0x4eed7a=events['length'];_0x4e32d4<_0x4eed7a;_0x4e32d4++){var _0x4644c2=events[_0x4e32d4];var _0x45c46a=createListener(_0x89e9('0x7')+_0x4644c2,_0x3d82b8);SmsInteractionEvents['on'](_0x4644c2,_0x45c46a);}};
\ No newline at end of file
+var _0xf464=['register','./smsInteraction.events','save','remove','update'];(function(_0x505648,_0x5c75be){var _0x34bafb=function(_0x5973d2){while(--_0x5973d2){_0x505648['push'](_0x505648['shift']());}};_0x34bafb(++_0x5c75be);}(_0xf464,0x97));var _0x4f46=function(_0x2de23b,_0x35f611){_0x2de23b=_0x2de23b-0x0;var _0x1fea25=_0xf464[_0x2de23b];return _0x1fea25;};'use strict';var SmsInteractionEvents=require(_0x4f46('0x0'));var events=[_0x4f46('0x1'),_0x4f46('0x2'),_0x4f46('0x3')];function createListener(_0x372efe,_0x2eb0bf){return function(_0x1d6b39){_0x2eb0bf['emit'](_0x372efe,_0x1d6b39);};}function removeListener(_0x3dd5a5,_0x368ba5){return function(){SmsInteractionEvents['removeListener'](_0x3dd5a5,_0x368ba5);};}exports[_0x4f46('0x4')]=function(_0x1443a5){for(var _0x26f64d=0x0,_0x55a4a9=events['length'];_0x26f64d<_0x55a4a9;_0x26f64d++){var _0x48b848=events[_0x26f64d];var _0x326184=createListener('smsInteraction:'+_0x48b848,_0x1443a5);SmsInteractionEvents['on'](_0x48b848,_0x326184);}};
\ No newline at end of file
index f8581b2..d7d2619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057f=['/:id/accept','/:id/reject','reject','delete','/:id','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','/describe','describe','show','post','sms','smsmessage:create','/:id/status','status','update','put'];(function(_0x39c57b,_0x451828){var _0x287304=function(_0x4e2f91){while(--_0x4e2f91){_0x39c57b['push'](_0x39c57b['shift']());}};_0x287304(++_0x451828);}(_0x057f,0xf1));var _0xf057=function(_0x326d14,_0x228576){_0x326d14=_0x326d14-0x0;var _0x32716e=_0x057f[_0x326d14];return _0x32716e;};'use strict';var multer=require('multer');var util=require(_0xf057('0x0'));var path=require(_0xf057('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xf057('0x2'));var auth=require(_0xf057('0x3'));var interaction=require(_0xf057('0x4'));var config=require(_0xf057('0x5'));var controller=require(_0xf057('0x6'));router[_0xf057('0x7')]('/',auth[_0xf057('0x8')](),controller['index']);router[_0xf057('0x7')](_0xf057('0x9'),auth[_0xf057('0x8')](),controller[_0xf057('0xa')]);router[_0xf057('0x7')]('/:id',auth[_0xf057('0x8')](),controller[_0xf057('0xb')]);router[_0xf057('0xc')]('/',auth[_0xf057('0x8')](),interaction['tracked'](_0xf057('0xd'),_0xf057('0xe')),controller['create']);router[_0xf057('0xc')](_0xf057('0xf'),controller[_0xf057('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf057('0x11')]);router[_0xf057('0x12')](_0xf057('0x13'),auth[_0xf057('0x8')](),controller['accept']);router[_0xf057('0x12')](_0xf057('0x14'),auth['isAuthenticated'](),controller[_0xf057('0x15')]);router[_0xf057('0x16')](_0xf057('0x17'),auth['isAuthenticated'](),controller[_0xf057('0x18')]);module[_0xf057('0x19')]=router;
\ No newline at end of file
+var _0x1312=['util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','post','sms','smsmessage:create','/:id/status','put','accept','/:id/reject','reject','delete','exports','multer'];(function(_0x602096,_0x37efbd){var _0x277084=function(_0x3b9fe9){while(--_0x3b9fe9){_0x602096['push'](_0x602096['shift']());}};_0x277084(++_0x37efbd);}(_0x1312,0x167));var _0x2131=function(_0x13fb4f,_0x42f6af){_0x13fb4f=_0x13fb4f-0x0;var _0x298a4e=_0x1312[_0x13fb4f];return _0x298a4e;};'use strict';var multer=require(_0x2131('0x0'));var util=require(_0x2131('0x1'));var path=require(_0x2131('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2131('0x3')]();var fs_extra=require(_0x2131('0x4'));var auth=require(_0x2131('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2131('0x6'));var controller=require(_0x2131('0x7'));router[_0x2131('0x8')]('/',auth[_0x2131('0x9')](),controller['index']);router[_0x2131('0x8')](_0x2131('0xa'),auth[_0x2131('0x9')](),controller[_0x2131('0xb')]);router[_0x2131('0x8')](_0x2131('0xc'),auth[_0x2131('0x9')](),controller[_0x2131('0xd')]);router[_0x2131('0xe')]('/',auth[_0x2131('0x9')](),interaction['tracked'](_0x2131('0xf'),_0x2131('0x10')),controller['create']);router[_0x2131('0xe')](_0x2131('0x11'),controller['status']);router[_0x2131('0x12')]('/:id',auth[_0x2131('0x9')](),controller['update']);router['put']('/:id/accept',auth[_0x2131('0x9')](),controller[_0x2131('0x13')]);router['put'](_0x2131('0x14'),auth[_0x2131('0x9')](),controller[_0x2131('0x15')]);router[_0x2131('0x16')](_0x2131('0xc'),auth[_0x2131('0x9')](),controller['destroy']);module[_0x2131('0x17')]=router;
\ No newline at end of file
index 29e71bf..02a4b82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eab=['BOOLEAN','ENUM','out','STRING','sequelize','exports','TEXT','medium'];(function(_0x161fee,_0x204db1){var _0xb1ac8b=function(_0x5eeebb){while(--_0x5eeebb){_0x161fee['push'](_0x161fee['shift']());}};_0xb1ac8b(++_0x204db1);}(_0x0eab,0x1d4));var _0xb0ea=function(_0x3d1fee,_0x2e8b02){_0x3d1fee=_0x3d1fee-0x0;var _0x374fb4=_0x0eab[_0x3d1fee];return _0x374fb4;};'use strict';var Sequelize=require(_0xb0ea('0x0'));module[_0xb0ea('0x1')]={'body':{'type':Sequelize[_0xb0ea('0x2')](_0xb0ea('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xb0ea('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb0ea('0x5')]('in',_0xb0ea('0x6')),'defaultValue':_0xb0ea('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xb0ea('0x7')](0xbe)},'phone':{'type':Sequelize[_0xb0ea('0x7')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xb0ea('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xb0ea('0x7')]},'providerResponse':{'type':Sequelize[_0xb0ea('0x2')]}};
\ No newline at end of file
+var _0x1753=['BOOLEAN','out','STRING','DATE','exports','TEXT','medium'];(function(_0x21a1a9,_0x5c0d44){var _0x26f1f1=function(_0x1c4ba9){while(--_0x1c4ba9){_0x21a1a9['push'](_0x21a1a9['shift']());}};_0x26f1f1(++_0x5c0d44);}(_0x1753,0x107));var _0x3175=function(_0x2e0d3e,_0x476636){_0x2e0d3e=_0x2e0d3e-0x0;var _0x35fb14=_0x1753[_0x2e0d3e];return _0x35fb14;};'use strict';var Sequelize=require('sequelize');module[_0x3175('0x0')]={'body':{'type':Sequelize[_0x3175('0x1')](_0x3175('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x3175('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x3175('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3175('0x5')](0xbe)},'phone':{'type':Sequelize[_0x3175('0x5')]},'readAt':{'type':Sequelize[_0x3175('0x6')]},'secret':{'type':Sequelize[_0x3175('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3175('0x5')]},'providerResponse':{'type':Sequelize[_0x3175('0x1')]}};
\ No newline at end of file
index 01e7ce0..0032a4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c45=['QueryTypes','SELECT','User','fullname','email','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','sms-interactions','interaction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','Sequelize','contact','rejectmessage','SmsAccount','SmsAccountId','inspect','twilio','MessageSid','messageId','plivo','MessageUUID','Status','plivio','infobip','results','groupName','DELIVERED','SmsAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./smsMessage.socket','register','jayson/promise','http','client','then','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','end','status','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','map','SmsMessage','rawAttributes','fieldName','type','keys','query','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','filters','filter','merge','where','count','includeAll','include','rows','catch','show','params','find','create','body','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','agent','get','SmsInteraction','SmsInteractionId','UserId','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','acceptMessage'];(function(_0xfbdff6,_0x2af690){var _0x4cb9be=function(_0x4022d8){while(--_0x4022d8){_0xfbdff6['push'](_0xfbdff6['shift']());}};_0x4cb9be(++_0x2af690);}(_0x6c45,0xb1));var _0x56c4=function(_0x3d72ca,_0x537db8){_0x3d72ca=_0x3d72ca-0x0;var _0x3dda70=_0x6c45[_0x3d72ca];return _0x3dda70;};'use strict';var emlformat=require(_0x56c4('0x0'));var rimraf=require(_0x56c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x56c4('0x2'));var rp=require(_0x56c4('0x3'));var moment=require(_0x56c4('0x4'));var BPromise=require(_0x56c4('0x5'));var Mustache=require(_0x56c4('0x6'));var util=require(_0x56c4('0x7'));var path=require(_0x56c4('0x8'));var sox=require(_0x56c4('0x9'));var csv=require(_0x56c4('0xa'));var ejs=require(_0x56c4('0xb'));var fs=require('fs');var fs_extra=require(_0x56c4('0xc'));var _=require(_0x56c4('0xd'));var squel=require(_0x56c4('0xe'));var crypto=require(_0x56c4('0xf'));var jsforce=require(_0x56c4('0x10'));var deskjs=require(_0x56c4('0x11'));var toCsv=require(_0x56c4('0xa'));var querystring=require(_0x56c4('0x12'));var Papa=require(_0x56c4('0x13'));var Redis=require(_0x56c4('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x56c4('0x15'));var as=require(_0x56c4('0x16'));var hardwareService=require(_0x56c4('0x17'));var logger=require(_0x56c4('0x18'))('api');var utils=require(_0x56c4('0x19'));var config=require(_0x56c4('0x1a'));var licenseUtil=require(_0x56c4('0x1b'));var db=require(_0x56c4('0x1c'))['db'];config['redis']=_[_0x56c4('0x1d')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x56c4('0x1e'))(new Redis(config[_0x56c4('0x1f')]));require(_0x56c4('0x20'))[_0x56c4('0x21')](socket);var jayson=require(_0x56c4('0x22'));var client=jayson['client'][_0x56c4('0x23')]({'port':0x232c});var client9002=jayson[_0x56c4('0x24')]['http']({'port':0x232a});function respondWithRpcPromise(_0x9b7664,_0xd0dd01,_0x2bd3c3,_0x2f0bb2){return new BPromise(function(_0x5c54bd,_0xaa6cfa){var _0x2b2e69=_0x2f0bb2||client;return _0x2b2e69['request'](_0x9b7664,_0x2bd3c3)[_0x56c4('0x25')](function(_0x73ebc7){logger[_0x56c4('0x26')](_0x56c4('0x27'),_0xd0dd01,'request\x20sent');logger[_0x56c4('0x28')](_0x56c4('0x29'),_0xd0dd01,_0x56c4('0x2a'),JSON[_0x56c4('0x2b')](_0x73ebc7));if(_0x73ebc7[_0x56c4('0x2c')]){if(_0x73ebc7[_0x56c4('0x2c')]['code']===0x1f4){logger['error'](_0x56c4('0x27'),_0xd0dd01,_0x73ebc7[_0x56c4('0x2c')]['message']);return _0xaa6cfa(_0x73ebc7[_0x56c4('0x2c')][_0x56c4('0x2d')]);}logger[_0x56c4('0x2c')](_0x56c4('0x27'),_0xd0dd01,_0x73ebc7[_0x56c4('0x2c')][_0x56c4('0x2d')]);return _0x5c54bd(_0x73ebc7[_0x56c4('0x2c')]['message']);}else{logger[_0x56c4('0x26')](_0x56c4('0x27'),_0xd0dd01,_0x56c4('0x2a'));_0x5c54bd(_0x73ebc7['result'][_0x56c4('0x2d')]);}})['catch'](function(_0x213cc6){logger[_0x56c4('0x2c')]('SmsMessage,\x20%s,\x20%s',_0xd0dd01,_0x213cc6);_0xaa6cfa(_0x213cc6);});});}function respondWithStatusCode(_0x148268,_0x292b66){_0x292b66=_0x292b66||0xcc;return function(_0x51dcf8){if(_0x51dcf8){return _0x148268['sendStatus'](_0x292b66);}return _0x148268['status'](_0x292b66)[_0x56c4('0x2e')]();};}function respondWithResult(_0x2ac814,_0x3fe97d){_0x3fe97d=_0x3fe97d||0xc8;return function(_0x514d96){if(_0x514d96){return _0x2ac814[_0x56c4('0x2f')](_0x3fe97d)['json'](_0x514d96);}};}function respondWithFilteredResult(_0x4ce20d,_0x5f9cc){return function(_0x461b3a){if(_0x461b3a){var _0x45f4ee=typeof _0x5f9cc[_0x56c4('0x30')]===_0x56c4('0x31')&&typeof _0x5f9cc[_0x56c4('0x32')]===_0x56c4('0x31');var _0x3c8db4=_0x461b3a['count'];var _0x36f430=_0x45f4ee?0x0:_0x5f9cc[_0x56c4('0x30')];var _0x3af58b=_0x45f4ee?_0x461b3a['count']:_0x5f9cc[_0x56c4('0x30')]+_0x5f9cc[_0x56c4('0x32')];var _0x3894ba;if(_0x3af58b>=_0x3c8db4){_0x3af58b=_0x3c8db4;_0x3894ba=0xc8;}else{_0x3894ba=0xce;}_0x4ce20d['status'](_0x3894ba);return _0x4ce20d[_0x56c4('0x33')](_0x56c4('0x34'),_0x36f430+'-'+_0x3af58b+'/'+_0x3c8db4)['json'](_0x461b3a);}return null;};}function patchUpdates(_0x3de2e7){return function(_0x5f1e92){try{jsonpatch[_0x56c4('0x35')](_0x5f1e92,_0x3de2e7,!![]);}catch(_0x4157cd){return BPromise[_0x56c4('0x36')](_0x4157cd);}return _0x5f1e92[_0x56c4('0x37')]();};}function saveUpdates(_0x2dfa7b,_0x4985f2){return function(_0x5533cc){if(_0x5533cc){return _0x5533cc[_0x56c4('0x38')](_0x2dfa7b)[_0x56c4('0x25')](function(_0x420bb0){return _0x420bb0;});}return null;};}function removeEntity(_0x33a9e7,_0x35460d){return function(_0x4abe0f){if(_0x4abe0f){return _0x4abe0f[_0x56c4('0x39')]()[_0x56c4('0x25')](function(){_0x33a9e7[_0x56c4('0x2f')](0xcc)[_0x56c4('0x2e')]();});}};}function handleEntityNotFound(_0x2cb8a5,_0xac38c5){return function(_0x102f4e){if(!_0x102f4e){_0x2cb8a5['sendStatus'](0x194);}return _0x102f4e;};}function handleError(_0x4c11da,_0x3b03cd){_0x3b03cd=_0x3b03cd||0x1f4;return function(_0x4036d3){logger[_0x56c4('0x2c')](_0x4036d3[_0x56c4('0x3a')]);if(_0x4036d3[_0x56c4('0x3b')]){delete _0x4036d3['name'];}_0x4c11da['status'](_0x3b03cd)[_0x56c4('0x3c')](_0x4036d3);};}exports['index']=function(_0x18be52,_0x216890){var _0x311da4={},_0x3e893d={},_0x50c383={'count':0x0,'rows':[]};var _0x3b6573=_[_0x56c4('0x3d')](db[_0x56c4('0x3e')][_0x56c4('0x3f')],function(_0x4ec104){return{'name':_0x4ec104[_0x56c4('0x40')],'type':_0x4ec104[_0x56c4('0x41')]['key']};});_0x3e893d['model']=_[_0x56c4('0x3d')](_0x3b6573,_0x56c4('0x3b'));_0x3e893d['query']=_[_0x56c4('0x42')](_0x18be52[_0x56c4('0x43')]);_0x3e893d['filters']=_[_0x56c4('0x44')](_0x3e893d[_0x56c4('0x45')],_0x3e893d['query']);_0x311da4['attributes']=_[_0x56c4('0x44')](_0x3e893d[_0x56c4('0x45')],qs[_0x56c4('0x46')](_0x18be52[_0x56c4('0x43')]['fields']));_0x311da4['attributes']=_0x311da4['attributes'][_0x56c4('0x47')]?_0x311da4[_0x56c4('0x48')]:_0x3e893d[_0x56c4('0x45')];if(!_0x18be52['query'][_0x56c4('0x49')](_0x56c4('0x4a'))){_0x311da4['limit']=qs[_0x56c4('0x32')](_0x18be52[_0x56c4('0x43')][_0x56c4('0x32')]);_0x311da4[_0x56c4('0x30')]=qs[_0x56c4('0x30')](_0x18be52[_0x56c4('0x43')][_0x56c4('0x30')]);}_0x311da4['order']=qs['sort'](_0x18be52[_0x56c4('0x43')]['sort']);_0x311da4['where']=qs[_0x56c4('0x4b')](_['pick'](_0x18be52[_0x56c4('0x43')],_0x3e893d[_0x56c4('0x4b')]),_0x3b6573);if(_0x18be52[_0x56c4('0x43')][_0x56c4('0x4c')]){_0x311da4['where']=_[_0x56c4('0x4d')](_0x311da4[_0x56c4('0x4e')],{'$or':_['map'](_0x3b6573,function(_0x546b16){if(_0x546b16['type']!=='VIRTUAL'){var _0x2651aa={};_0x2651aa[_0x546b16['name']]={'$like':'%'+_0x18be52[_0x56c4('0x43')]['filter']+'%'};return _0x2651aa;}})});}_0x311da4=_[_0x56c4('0x4d')]({},_0x311da4,_0x18be52['options']);var _0x4064b4={'where':_0x311da4['where']};return db[_0x56c4('0x3e')]['count'](_0x4064b4)['then'](function(_0x70552d){_0x50c383[_0x56c4('0x4f')]=_0x70552d;if(_0x18be52[_0x56c4('0x43')][_0x56c4('0x50')]){_0x311da4[_0x56c4('0x51')]=[{'all':!![]}];}return db[_0x56c4('0x3e')]['findAll'](_0x311da4);})[_0x56c4('0x25')](function(_0x28a2b7){_0x50c383[_0x56c4('0x52')]=_0x28a2b7;return _0x50c383;})[_0x56c4('0x25')](respondWithFilteredResult(_0x216890,_0x311da4))[_0x56c4('0x53')](handleError(_0x216890,null));};exports[_0x56c4('0x54')]=function(_0x168a76,_0x18f385){var _0x5121fb={'raw':!![],'where':{'id':_0x168a76[_0x56c4('0x55')]['id']}},_0x22ad27={};_0x22ad27['model']=_[_0x56c4('0x42')](db[_0x56c4('0x3e')]['rawAttributes']);_0x22ad27[_0x56c4('0x43')]=_[_0x56c4('0x42')](_0x168a76[_0x56c4('0x43')]);_0x22ad27[_0x56c4('0x4b')]=_[_0x56c4('0x44')](_0x22ad27['model'],_0x22ad27[_0x56c4('0x43')]);_0x5121fb['attributes']=_[_0x56c4('0x44')](_0x22ad27[_0x56c4('0x45')],qs['fields'](_0x168a76[_0x56c4('0x43')][_0x56c4('0x46')]));_0x5121fb[_0x56c4('0x48')]=_0x5121fb['attributes'][_0x56c4('0x47')]?_0x5121fb[_0x56c4('0x48')]:_0x22ad27[_0x56c4('0x45')];if(_0x168a76['query']['includeAll']){_0x5121fb[_0x56c4('0x51')]=[{'all':!![]}];}_0x5121fb=_[_0x56c4('0x4d')]({},_0x5121fb,_0x168a76['options']);return db[_0x56c4('0x3e')][_0x56c4('0x56')](_0x5121fb)[_0x56c4('0x25')](handleEntityNotFound(_0x18f385,null))[_0x56c4('0x25')](respondWithResult(_0x18f385,null))['catch'](handleError(_0x18f385,null));};exports[_0x56c4('0x57')]=function(_0x387ed9,_0x29410e){return db[_0x56c4('0x3e')]['create'](_0x387ed9[_0x56c4('0x58')],{})['then'](respondWithResult(_0x29410e,0xc9))[_0x56c4('0x53')](handleError(_0x29410e,null));};exports[_0x56c4('0x38')]=function(_0x57c0b3,_0x2328b7){if(_0x57c0b3[_0x56c4('0x58')]['id']){delete _0x57c0b3['body']['id'];}return db['SmsMessage'][_0x56c4('0x56')]({'where':{'id':_0x57c0b3[_0x56c4('0x55')]['id']}})['then'](handleEntityNotFound(_0x2328b7,null))[_0x56c4('0x25')](saveUpdates(_0x57c0b3[_0x56c4('0x58')],null))[_0x56c4('0x25')](respondWithResult(_0x2328b7,null))[_0x56c4('0x53')](handleError(_0x2328b7,null));};exports[_0x56c4('0x39')]=function(_0x237e1f,_0x1d9868){return db[_0x56c4('0x3e')][_0x56c4('0x56')]({'where':{'id':_0x237e1f[_0x56c4('0x55')]['id']}})['then'](handleEntityNotFound(_0x1d9868,null))[_0x56c4('0x25')](removeEntity(_0x1d9868,null))[_0x56c4('0x53')](handleError(_0x1d9868,null));};exports[_0x56c4('0x59')]=function(_0x1942fe,_0x1636c9){return db[_0x56c4('0x3e')][_0x56c4('0x59')]()[_0x56c4('0x25')](respondWithResult(_0x1636c9,null))[_0x56c4('0x53')](handleError(_0x1636c9,null));};var interaction_log=require(_0x56c4('0x18'))('sms-interactions');exports[_0x56c4('0x5a')]=function(_0x2e6fdc,_0x39e86f,_0x4d2e6c){var _0x456ff6={'agent':{},'channel':'sms'};if(_0x2e6fdc[_0x56c4('0x58')]['id']){delete _0x2e6fdc[_0x56c4('0x58')]['id'];}_0x2e6fdc[_0x56c4('0x58')][_0x56c4('0x5b')]=!![];_0x2e6fdc[_0x56c4('0x58')][_0x56c4('0x5c')]=moment()[_0x56c4('0x5d')](_0x56c4('0x5e'));_0x2e6fdc[_0x56c4('0x58')]['UserId']=_0x2e6fdc[_0x56c4('0x58')]['UserId']||_0x2e6fdc['user']['id'];_0x456ff6[_0x56c4('0x5f')]['id']=_0x2e6fdc[_0x56c4('0x58')]['UserId'];return db[_0x56c4('0x3e')]['find']({'where':{'id':_0x2e6fdc['params']['id'],'UserId':null}})[_0x56c4('0x25')](handleEntityNotFound(_0x39e86f,null))[_0x56c4('0x25')](saveUpdates(_0x2e6fdc['body'],null))[_0x56c4('0x25')](function(_0x16a7c9){if(_0x16a7c9){_0x456ff6[_0x56c4('0x2d')]=_0x16a7c9[_0x56c4('0x60')]({'plain':!![]});return db[_0x56c4('0x61')][_0x56c4('0x56')]({'where':{'id':_0x16a7c9[_0x56c4('0x62')]}});}return null;})[_0x56c4('0x25')](handleEntityNotFound(_0x39e86f,null))['then'](function(_0x240ad9){if(_0x240ad9){return _0x240ad9[_0x56c4('0x38')]({'UserId':_0x2e6fdc['body'][_0x56c4('0x63')],'read1stAt':_['isNil'](_0x240ad9['read1stAt'])?moment()[_0x56c4('0x5d')](_0x56c4('0x5e')):undefined});}return null;})[_0x56c4('0x25')](function(_0x397181){if(_0x397181){_0x456ff6['interaction']=_0x397181[_0x56c4('0x60')]({'plain':!![]});interaction_log[_0x56c4('0x26')](_0x56c4('0x64'),_0x2e6fdc[_0x56c4('0x65')]['id'],_0x2e6fdc[_0x56c4('0x65')][_0x56c4('0x3b')],_0x2e6fdc[_0x56c4('0x65')][_0x56c4('0x66')],_0x456ff6['interaction']['id'],_0x2e6fdc[_0x56c4('0x58')]?JSON[_0x56c4('0x2b')](_0x2e6fdc[_0x56c4('0x58')]):_0x56c4('0x67'));return respondWithRpcPromise('AcceptMessage',_0x56c4('0x68'),_0x456ff6);}return null;})['then'](function(_0xb59d24){var _0x4b0d9c='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xb59d24[_0x56c4('0x2d')]['ContactId'];return db['sequelize']['query'](_0x4b0d9c,{'type':db['Sequelize'][_0x56c4('0x69')][_0x56c4('0x6a')],'raw':!![]})[_0x56c4('0x25')](function(_0x5386c7){return _0x5386c7;});})[_0x56c4('0x25')](function(_0x5c7a56){if(_0x5c7a56){_0x456ff6[_0x56c4('0x2d')]['contact']=_0x5c7a56[0x0];if(!_0x2e6fdc[_0x56c4('0x58')][_0x56c4('0x63')])return;return db[_0x56c4('0x6b')]['find']({'where':{'id':_0x2e6fdc[_0x56c4('0x58')][_0x56c4('0x63')],'role':'agent'},'attributes':['id','name',_0x56c4('0x6c'),_0x56c4('0x6d'),'internal'],'raw':!![]});}return null;})[_0x56c4('0x25')](function(_0x1f3f05){if(!_0x1f3f05)return null;_0x456ff6['message']['agent']=_0x1f3f05;return _0x456ff6;})['then'](function(_0x21c9ff){if(_0x21c9ff){if(_0x2e6fdc[_0x56c4('0x58')][_0x56c4('0x6e')]){_0x456ff6['message'][_0x56c4('0x6f')]=util[_0x56c4('0x5d')](_0x56c4('0x70'),_0x2e6fdc['user']['name']);_0x456ff6[_0x56c4('0x2d')][_0x56c4('0x71')]=_0x456ff6['channel'];_0x456ff6[_0x56c4('0x2d')]['motionChannel']=_0x456ff6['channel'];_0x456ff6['message'][_0x56c4('0x72')]=_0x56c4('0x5a');return respondWithRpcPromise(_0x56c4('0x73'),_0x56c4('0x73'),{'event':_0x56c4('0x74'),'message':_0x456ff6[_0x56c4('0x2d')]},client9002)[_0x56c4('0x25')](function(){return _0x456ff6;});}return _0x456ff6;}return null;})[_0x56c4('0x25')](respondWithResult(_0x39e86f,null))['catch'](handleError(_0x39e86f,null));};var interaction_log=require(_0x56c4('0x18'))(_0x56c4('0x75'));exports['reject']=function(_0x1e28b3,_0x9bbbbc,_0xce0938){var _0x2f24ad={'agent':{},'channel':'sms'};if(_0x1e28b3[_0x56c4('0x58')]['id']){delete _0x1e28b3[_0x56c4('0x58')]['id'];}_0x1e28b3['body']['UserId']=_0x1e28b3[_0x56c4('0x58')][_0x56c4('0x63')]||_0x1e28b3[_0x56c4('0x65')]['id'];_0x2f24ad['agent']['id']=_0x1e28b3[_0x56c4('0x58')]['UserId'];return db['SmsMessage']['find']({'where':{'id':_0x1e28b3[_0x56c4('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x9bbbbc,null))[_0x56c4('0x25')](function(_0x31ec78){if(_0x31ec78){_0x2f24ad[_0x56c4('0x2d')]=_0x31ec78[_0x56c4('0x60')]({'plain':!![]});return db['SmsInteraction']['find']({'where':{'id':_0x31ec78[_0x56c4('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x9bbbbc,null))[_0x56c4('0x25')](function(_0x1617f6){if(_0x1617f6){_0x2f24ad[_0x56c4('0x76')]=_0x1617f6['get']({'plain':!![]});interaction_log[_0x56c4('0x26')](_0x56c4('0x77'),_0x1e28b3[_0x56c4('0x65')]['id'],_0x1e28b3[_0x56c4('0x65')][_0x56c4('0x3b')],_0x1e28b3[_0x56c4('0x65')]['role'],_0x2f24ad['interaction']['id'],_0x1e28b3[_0x56c4('0x58')]?JSON[_0x56c4('0x2b')](_0x1e28b3[_0x56c4('0x58')]):_0x56c4('0x67'));return respondWithRpcPromise(_0x56c4('0x78'),_0x56c4('0x79'),_0x2f24ad);}return null;})[_0x56c4('0x25')](function(_0x2f5b76){var _0x51c8c5='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2f5b76[_0x56c4('0x2d')]['ContactId'];return db[_0x56c4('0x7a')][_0x56c4('0x43')](_0x51c8c5,{'type':db[_0x56c4('0x7b')][_0x56c4('0x69')][_0x56c4('0x6a')],'raw':!![]})['then'](function(_0x23f2f1){return _0x23f2f1;});})[_0x56c4('0x25')](function(_0x3a40f2){if(_0x3a40f2){_0x2f24ad['message'][_0x56c4('0x7c')]=_0x3a40f2[0x0];if(!_0x1e28b3[_0x56c4('0x58')][_0x56c4('0x63')])return;return db[_0x56c4('0x6b')][_0x56c4('0x56')]({'where':{'id':_0x1e28b3[_0x56c4('0x58')][_0x56c4('0x63')],'role':_0x56c4('0x5f')},'attributes':['id','name','fullname','email','internal'],'raw':!![]});}return null;})[_0x56c4('0x25')](function(_0x146aee){if(!_0x146aee)return null;_0x2f24ad[_0x56c4('0x2d')][_0x56c4('0x5f')]=_0x146aee;return _0x2f24ad;})[_0x56c4('0x25')](function(_0xb2be11){if(_0xb2be11){_0xb2be11[_0x56c4('0x2d')][_0x56c4('0x6f')]=util[_0x56c4('0x5d')](_0x56c4('0x70'),_0x1e28b3[_0x56c4('0x65')][_0x56c4('0x3b')]);_0xb2be11[_0x56c4('0x2d')][_0x56c4('0x71')]=_0x2f24ad['channel'];_0xb2be11[_0x56c4('0x2d')]['motionChannel']=_0x2f24ad[_0x56c4('0x71')];_0xb2be11[_0x56c4('0x2d')][_0x56c4('0x72')]=_0x56c4('0x36');respondWithRpcPromise(_0x56c4('0x73'),'EventManager',{'event':_0x56c4('0x7d'),'message':_0xb2be11[_0x56c4('0x2d')]},client9002);return _0x2f24ad;}return null;})[_0x56c4('0x25')](respondWithResult(_0x9bbbbc,null))[_0x56c4('0x53')](handleError(_0x9bbbbc,null));};exports[_0x56c4('0x2f')]=function(_0x2404f7,_0x33143d,_0x105ee7){if(_0x2404f7[_0x56c4('0x58')]['id']){delete _0x2404f7['body']['id'];}var _0x211e60;return db[_0x56c4('0x3e')][_0x56c4('0x56')]({'where':{'id':_0x2404f7[_0x56c4('0x55')]['id']}})[_0x56c4('0x25')](handleEntityNotFound(_0x33143d,null))['then'](function(_0x2c7682){if(_0x2c7682){_0x211e60=_0x2c7682;return db[_0x56c4('0x7e')]['find']({'where':{'id':_0x2c7682[_0x56c4('0x7f')]}});}})['then'](handleEntityNotFound(_0x33143d,null))['then'](function(_0x4796bf){if(_0x4796bf){logger['debug'](_0x56c4('0x29'),_0x56c4('0x2f'),'received\x20delivery\x20report\x20from',_0x4796bf[_0x56c4('0x41')],util[_0x56c4('0x80')](_0x2404f7[_0x56c4('0x58')],{'showHidden':![],'depth':null}));switch(_0x4796bf['type']){case _0x56c4('0x81'):if(_0x2404f7[_0x56c4('0x58')][_0x56c4('0x82')]&&_0x2404f7['body'][_0x56c4('0x82')]===_0x211e60[_0x56c4('0x83')]){return _0x211e60[_0x56c4('0x38')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x56c4('0x81'),util[_0x56c4('0x80')](_0x2404f7[_0x56c4('0x58')],{'showHidden':![],'depth':null}));}break;case _0x56c4('0x84'):if(_0x2404f7[_0x56c4('0x58')][_0x56c4('0x85')]&&_0x2404f7[_0x56c4('0x58')][_0x56c4('0x85')]===_0x211e60[_0x56c4('0x83')]&&_['indexOf'](['sent','delivered'],_0x2404f7['body'][_0x56c4('0x86')])>=0x0){return _0x211e60[_0x56c4('0x38')]({'read':!![]});}else{logger[_0x56c4('0x2c')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x56c4('0x2f'),_0x56c4('0x87'),util['inspect'](_0x2404f7['body'],{'showHidden':![],'depth':null}));}break;case _0x56c4('0x88'):var _0x5b96e6=_0x2404f7[_0x56c4('0x58')][_0x56c4('0x89')][0x0];if(_0x5b96e6[_0x56c4('0x2f')][_0x56c4('0x8a')]===_0x56c4('0x8b')){return _0x211e60[_0x56c4('0x38')]({'read':!![]});}else{logger[_0x56c4('0x2c')](_0x56c4('0x8c'),_0x56c4('0x2f'),_0x56c4('0x88'),util[_0x56c4('0x80')](_0x2404f7[_0x56c4('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x211e60;}})[_0x56c4('0x25')](respondWithResult(_0x33143d,null))['catch'](handleError(_0x33143d,null));};
\ No newline at end of file
+var _0xad1b=['received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','./smsMessage.socket','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','name','send','map','SmsMessage','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','type','merge','options','includeAll','include','findAll','rows','show','find','create','body','params','describe','../../config/logger','sms-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteraction','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','SELECT','User','fullname','email','internal','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','sms','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','QueryTypes','contact','agent','rejectmessage','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s'];(function(_0x4bdf64,_0x3022b2){var _0x9a1a19=function(_0x4e551b){while(--_0x4e551b){_0x4bdf64['push'](_0x4bdf64['shift']());}};_0x9a1a19(++_0x3022b2);}(_0xad1b,0x131));var _0xbad1=function(_0x5e0fcd,_0x7197ee){_0x5e0fcd=_0x5e0fcd-0x0;var _0x58fa99=_0xad1b[_0x5e0fcd];return _0x58fa99;};'use strict';var emlformat=require(_0xbad1('0x0'));var rimraf=require(_0xbad1('0x1'));var zipdir=require(_0xbad1('0x2'));var jsonpatch=require(_0xbad1('0x3'));var rp=require('request-promise');var moment=require(_0xbad1('0x4'));var BPromise=require(_0xbad1('0x5'));var Mustache=require(_0xbad1('0x6'));var util=require('util');var path=require(_0xbad1('0x7'));var sox=require('sox');var csv=require(_0xbad1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbad1('0x9'));var _=require(_0xbad1('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbad1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbad1('0xb'));var authService=require(_0xbad1('0xc'));var qs=require(_0xbad1('0xd'));var as=require(_0xbad1('0xe'));var hardwareService=require(_0xbad1('0xf'));var logger=require('../../config/logger')(_0xbad1('0x10'));var utils=require(_0xbad1('0x11'));var config=require(_0xbad1('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xbad1('0x13'))['db'];config['redis']=_['defaults'](config[_0xbad1('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbad1('0x14')]));require(_0xbad1('0x15'))['register'](socket);var jayson=require(_0xbad1('0x16'));var client=jayson[_0xbad1('0x17')]['http']({'port':0x232c});var client9002=jayson[_0xbad1('0x17')][_0xbad1('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x51db95,_0x4f0877,_0x4aba49,_0x94b08b){return new BPromise(function(_0x1fe2e5,_0x491c8d){var _0x1f5524=_0x94b08b||client;return _0x1f5524[_0xbad1('0x19')](_0x51db95,_0x4aba49)[_0xbad1('0x1a')](function(_0x4877d4){logger[_0xbad1('0x1b')](_0xbad1('0x1c'),_0x4f0877,'request\x20sent');logger[_0xbad1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4f0877,_0xbad1('0x1e'),JSON[_0xbad1('0x1f')](_0x4877d4));if(_0x4877d4['error']){if(_0x4877d4[_0xbad1('0x20')][_0xbad1('0x21')]===0x1f4){logger[_0xbad1('0x20')](_0xbad1('0x1c'),_0x4f0877,_0x4877d4[_0xbad1('0x20')][_0xbad1('0x22')]);return _0x491c8d(_0x4877d4[_0xbad1('0x20')][_0xbad1('0x22')]);}logger[_0xbad1('0x20')](_0xbad1('0x1c'),_0x4f0877,_0x4877d4[_0xbad1('0x20')][_0xbad1('0x22')]);return _0x1fe2e5(_0x4877d4[_0xbad1('0x20')][_0xbad1('0x22')]);}else{logger[_0xbad1('0x1b')](_0xbad1('0x1c'),_0x4f0877,_0xbad1('0x1e'));_0x1fe2e5(_0x4877d4['result'][_0xbad1('0x22')]);}})[_0xbad1('0x23')](function(_0x36ae79){logger[_0xbad1('0x20')](_0xbad1('0x1c'),_0x4f0877,_0x36ae79);_0x491c8d(_0x36ae79);});});}function respondWithStatusCode(_0x48cc54,_0x1ab249){_0x1ab249=_0x1ab249||0xcc;return function(_0x2740ae){if(_0x2740ae){return _0x48cc54[_0xbad1('0x24')](_0x1ab249);}return _0x48cc54[_0xbad1('0x25')](_0x1ab249)[_0xbad1('0x26')]();};}function respondWithResult(_0x1bc7dc,_0x5df541){_0x5df541=_0x5df541||0xc8;return function(_0x17658d){if(_0x17658d){return _0x1bc7dc[_0xbad1('0x25')](_0x5df541)['json'](_0x17658d);}};}function respondWithFilteredResult(_0x4ab992,_0x8f7adb){return function(_0x2cd29b){if(_0x2cd29b){var _0x42704f=typeof _0x8f7adb[_0xbad1('0x27')]===_0xbad1('0x28')&&typeof _0x8f7adb[_0xbad1('0x29')]===_0xbad1('0x28');var _0x3b12bf=_0x2cd29b[_0xbad1('0x2a')];var _0x17ce99=_0x42704f?0x0:_0x8f7adb[_0xbad1('0x27')];var _0x1b5a06=_0x42704f?_0x2cd29b[_0xbad1('0x2a')]:_0x8f7adb['offset']+_0x8f7adb['limit'];var _0x40b7eb;if(_0x1b5a06>=_0x3b12bf){_0x1b5a06=_0x3b12bf;_0x40b7eb=0xc8;}else{_0x40b7eb=0xce;}_0x4ab992[_0xbad1('0x25')](_0x40b7eb);return _0x4ab992[_0xbad1('0x2b')](_0xbad1('0x2c'),_0x17ce99+'-'+_0x1b5a06+'/'+_0x3b12bf)[_0xbad1('0x2d')](_0x2cd29b);}return null;};}function patchUpdates(_0x11d360){return function(_0x3dcf2e){try{jsonpatch[_0xbad1('0x2e')](_0x3dcf2e,_0x11d360,!![]);}catch(_0x22b129){return BPromise[_0xbad1('0x2f')](_0x22b129);}return _0x3dcf2e[_0xbad1('0x30')]();};}function saveUpdates(_0x576014,_0x4ea3e3){return function(_0x30399e){if(_0x30399e){return _0x30399e[_0xbad1('0x31')](_0x576014)[_0xbad1('0x1a')](function(_0x335006){return _0x335006;});}return null;};}function removeEntity(_0x5edcf6,_0x10b816){return function(_0xc6a591){if(_0xc6a591){return _0xc6a591[_0xbad1('0x32')]()[_0xbad1('0x1a')](function(){_0x5edcf6[_0xbad1('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x532e8a,_0x4958fe){return function(_0xff48d0){if(!_0xff48d0){_0x532e8a[_0xbad1('0x24')](0x194);}return _0xff48d0;};}function handleError(_0x4dbf39,_0x371e9f){_0x371e9f=_0x371e9f||0x1f4;return function(_0x300a81){logger[_0xbad1('0x20')](_0x300a81['stack']);if(_0x300a81[_0xbad1('0x33')]){delete _0x300a81[_0xbad1('0x33')];}_0x4dbf39[_0xbad1('0x25')](_0x371e9f)[_0xbad1('0x34')](_0x300a81);};}exports['index']=function(_0x26ebf0,_0x3ec6f7){var _0x1b321b={},_0x3c7416={},_0x6594a5={'count':0x0,'rows':[]};var _0xf09065=_[_0xbad1('0x35')](db[_0xbad1('0x36')][_0xbad1('0x37')],function(_0x3ee53a){return{'name':_0x3ee53a['fieldName'],'type':_0x3ee53a['type'][_0xbad1('0x38')]};});_0x3c7416[_0xbad1('0x39')]=_[_0xbad1('0x35')](_0xf09065,_0xbad1('0x33'));_0x3c7416[_0xbad1('0x3a')]=_[_0xbad1('0x3b')](_0x26ebf0[_0xbad1('0x3a')]);_0x3c7416[_0xbad1('0x3c')]=_[_0xbad1('0x3d')](_0x3c7416[_0xbad1('0x39')],_0x3c7416[_0xbad1('0x3a')]);_0x1b321b[_0xbad1('0x3e')]=_[_0xbad1('0x3d')](_0x3c7416['model'],qs[_0xbad1('0x3f')](_0x26ebf0[_0xbad1('0x3a')][_0xbad1('0x3f')]));_0x1b321b['attributes']=_0x1b321b[_0xbad1('0x3e')]['length']?_0x1b321b[_0xbad1('0x3e')]:_0x3c7416[_0xbad1('0x39')];if(!_0x26ebf0[_0xbad1('0x3a')]['hasOwnProperty'](_0xbad1('0x40'))){_0x1b321b['limit']=qs['limit'](_0x26ebf0['query'][_0xbad1('0x29')]);_0x1b321b[_0xbad1('0x27')]=qs[_0xbad1('0x27')](_0x26ebf0['query'][_0xbad1('0x27')]);}_0x1b321b[_0xbad1('0x41')]=qs['sort'](_0x26ebf0[_0xbad1('0x3a')][_0xbad1('0x42')]);_0x1b321b['where']=qs[_0xbad1('0x3c')](_[_0xbad1('0x43')](_0x26ebf0['query'],_0x3c7416[_0xbad1('0x3c')]),_0xf09065);if(_0x26ebf0[_0xbad1('0x3a')][_0xbad1('0x44')]){_0x1b321b[_0xbad1('0x45')]=_['merge'](_0x1b321b['where'],{'$or':_[_0xbad1('0x35')](_0xf09065,function(_0x343df0){if(_0x343df0[_0xbad1('0x46')]!=='VIRTUAL'){var _0x319960={};_0x319960[_0x343df0[_0xbad1('0x33')]]={'$like':'%'+_0x26ebf0['query'][_0xbad1('0x44')]+'%'};return _0x319960;}})});}_0x1b321b=_[_0xbad1('0x47')]({},_0x1b321b,_0x26ebf0[_0xbad1('0x48')]);var _0x1ee449={'where':_0x1b321b[_0xbad1('0x45')]};return db[_0xbad1('0x36')][_0xbad1('0x2a')](_0x1ee449)[_0xbad1('0x1a')](function(_0x552409){_0x6594a5[_0xbad1('0x2a')]=_0x552409;if(_0x26ebf0[_0xbad1('0x3a')][_0xbad1('0x49')]){_0x1b321b[_0xbad1('0x4a')]=[{'all':!![]}];}return db['SmsMessage'][_0xbad1('0x4b')](_0x1b321b);})[_0xbad1('0x1a')](function(_0x2be83c){_0x6594a5[_0xbad1('0x4c')]=_0x2be83c;return _0x6594a5;})['then'](respondWithFilteredResult(_0x3ec6f7,_0x1b321b))[_0xbad1('0x23')](handleError(_0x3ec6f7,null));};exports[_0xbad1('0x4d')]=function(_0x5c8413,_0xf8be43){var _0xffed2a={'raw':!![],'where':{'id':_0x5c8413['params']['id']}},_0x83233d={};_0x83233d[_0xbad1('0x39')]=_[_0xbad1('0x3b')](db[_0xbad1('0x36')][_0xbad1('0x37')]);_0x83233d[_0xbad1('0x3a')]=_[_0xbad1('0x3b')](_0x5c8413['query']);_0x83233d[_0xbad1('0x3c')]=_[_0xbad1('0x3d')](_0x83233d[_0xbad1('0x39')],_0x83233d[_0xbad1('0x3a')]);_0xffed2a[_0xbad1('0x3e')]=_['intersection'](_0x83233d['model'],qs[_0xbad1('0x3f')](_0x5c8413['query'][_0xbad1('0x3f')]));_0xffed2a[_0xbad1('0x3e')]=_0xffed2a['attributes']['length']?_0xffed2a[_0xbad1('0x3e')]:_0x83233d[_0xbad1('0x39')];if(_0x5c8413[_0xbad1('0x3a')][_0xbad1('0x49')]){_0xffed2a[_0xbad1('0x4a')]=[{'all':!![]}];}_0xffed2a=_[_0xbad1('0x47')]({},_0xffed2a,_0x5c8413[_0xbad1('0x48')]);return db[_0xbad1('0x36')][_0xbad1('0x4e')](_0xffed2a)[_0xbad1('0x1a')](handleEntityNotFound(_0xf8be43,null))['then'](respondWithResult(_0xf8be43,null))[_0xbad1('0x23')](handleError(_0xf8be43,null));};exports[_0xbad1('0x4f')]=function(_0x385c08,_0x4dc883){return db[_0xbad1('0x36')][_0xbad1('0x4f')](_0x385c08['body'],{})[_0xbad1('0x1a')](respondWithResult(_0x4dc883,0xc9))[_0xbad1('0x23')](handleError(_0x4dc883,null));};exports['update']=function(_0x221e5b,_0x2c2611){if(_0x221e5b[_0xbad1('0x50')]['id']){delete _0x221e5b[_0xbad1('0x50')]['id'];}return db[_0xbad1('0x36')][_0xbad1('0x4e')]({'where':{'id':_0x221e5b[_0xbad1('0x51')]['id']}})[_0xbad1('0x1a')](handleEntityNotFound(_0x2c2611,null))[_0xbad1('0x1a')](saveUpdates(_0x221e5b[_0xbad1('0x50')],null))[_0xbad1('0x1a')](respondWithResult(_0x2c2611,null))[_0xbad1('0x23')](handleError(_0x2c2611,null));};exports[_0xbad1('0x32')]=function(_0x451525,_0x3da0ca){return db[_0xbad1('0x36')][_0xbad1('0x4e')]({'where':{'id':_0x451525[_0xbad1('0x51')]['id']}})['then'](handleEntityNotFound(_0x3da0ca,null))[_0xbad1('0x1a')](removeEntity(_0x3da0ca,null))['catch'](handleError(_0x3da0ca,null));};exports[_0xbad1('0x52')]=function(_0x4e38cb,_0x2ee9f6){return db[_0xbad1('0x36')][_0xbad1('0x52')]()[_0xbad1('0x1a')](respondWithResult(_0x2ee9f6,null))['catch'](handleError(_0x2ee9f6,null));};var interaction_log=require(_0xbad1('0x53'))(_0xbad1('0x54'));exports[_0xbad1('0x55')]=function(_0x5082ab,_0x1f0021,_0x1efc59){var _0x201171={'agent':{},'channel':'sms'};if(_0x5082ab[_0xbad1('0x50')]['id']){delete _0x5082ab[_0xbad1('0x50')]['id'];}_0x5082ab[_0xbad1('0x50')][_0xbad1('0x56')]=!![];_0x5082ab[_0xbad1('0x50')][_0xbad1('0x57')]=moment()[_0xbad1('0x58')](_0xbad1('0x59'));_0x5082ab[_0xbad1('0x50')]['UserId']=_0x5082ab[_0xbad1('0x50')][_0xbad1('0x5a')]||_0x5082ab[_0xbad1('0x5b')]['id'];_0x201171['agent']['id']=_0x5082ab[_0xbad1('0x50')][_0xbad1('0x5a')];return db[_0xbad1('0x36')][_0xbad1('0x4e')]({'where':{'id':_0x5082ab[_0xbad1('0x51')]['id'],'UserId':null}})[_0xbad1('0x1a')](handleEntityNotFound(_0x1f0021,null))[_0xbad1('0x1a')](saveUpdates(_0x5082ab[_0xbad1('0x50')],null))[_0xbad1('0x1a')](function(_0x1345cc){if(_0x1345cc){_0x201171[_0xbad1('0x22')]=_0x1345cc[_0xbad1('0x5c')]({'plain':!![]});return db[_0xbad1('0x5d')][_0xbad1('0x4e')]({'where':{'id':_0x1345cc['SmsInteractionId']}});}return null;})[_0xbad1('0x1a')](handleEntityNotFound(_0x1f0021,null))[_0xbad1('0x1a')](function(_0x419f40){if(_0x419f40){return _0x419f40[_0xbad1('0x31')]({'UserId':_0x5082ab['body']['UserId'],'read1stAt':_['isNil'](_0x419f40[_0xbad1('0x5e')])?moment()[_0xbad1('0x58')](_0xbad1('0x59')):undefined});}return null;})['then'](function(_0x3a9904){if(_0x3a9904){_0x201171[_0xbad1('0x5f')]=_0x3a9904[_0xbad1('0x5c')]({'plain':!![]});interaction_log[_0xbad1('0x1b')](_0xbad1('0x60'),_0x5082ab['user']['id'],_0x5082ab[_0xbad1('0x5b')][_0xbad1('0x33')],_0x5082ab['user'][_0xbad1('0x61')],_0x201171['interaction']['id'],_0x5082ab[_0xbad1('0x50')]?JSON[_0xbad1('0x1f')](_0x5082ab[_0xbad1('0x50')]):_0xbad1('0x62'));return respondWithRpcPromise(_0xbad1('0x63'),_0xbad1('0x64'),_0x201171);}return null;})[_0xbad1('0x1a')](function(_0x581b28){var _0x596b62=_0xbad1('0x65')+_0x581b28[_0xbad1('0x22')][_0xbad1('0x66')];return db['sequelize'][_0xbad1('0x3a')](_0x596b62,{'type':db[_0xbad1('0x67')]['QueryTypes'][_0xbad1('0x68')],'raw':!![]})[_0xbad1('0x1a')](function(_0x3e91cc){return _0x3e91cc;});})['then'](function(_0x5b7a28){if(_0x5b7a28){_0x201171[_0xbad1('0x22')]['contact']=_0x5b7a28[0x0];if(!_0x5082ab[_0xbad1('0x50')][_0xbad1('0x5a')])return;return db[_0xbad1('0x69')][_0xbad1('0x4e')]({'where':{'id':_0x5082ab[_0xbad1('0x50')][_0xbad1('0x5a')],'role':'agent'},'attributes':['id',_0xbad1('0x33'),_0xbad1('0x6a'),_0xbad1('0x6b'),_0xbad1('0x6c')],'raw':!![]});}return null;})[_0xbad1('0x1a')](function(_0x525c00){if(!_0x525c00)return null;_0x201171[_0xbad1('0x22')]['agent']=_0x525c00;return _0x201171;})[_0xbad1('0x1a')](function(_0x1cf757){if(_0x1cf757){if(_0x5082ab[_0xbad1('0x50')]['manual']){_0x201171[_0xbad1('0x22')]['interface']=util[_0xbad1('0x58')](_0xbad1('0x6d'),_0x5082ab['user'][_0xbad1('0x33')]);_0x201171[_0xbad1('0x22')]['channel']=_0x201171[_0xbad1('0x6e')];_0x201171[_0xbad1('0x22')][_0xbad1('0x6f')]=_0x201171['channel'];_0x201171[_0xbad1('0x22')][_0xbad1('0x70')]=_0xbad1('0x55');return respondWithRpcPromise(_0xbad1('0x71'),_0xbad1('0x71'),{'event':_0xbad1('0x72'),'message':_0x201171['message']},client9002)[_0xbad1('0x1a')](function(){return _0x201171;});}return _0x201171;}return null;})[_0xbad1('0x1a')](respondWithResult(_0x1f0021,null))[_0xbad1('0x23')](handleError(_0x1f0021,null));};var interaction_log=require(_0xbad1('0x53'))(_0xbad1('0x54'));exports[_0xbad1('0x2f')]=function(_0x44a90a,_0x1f2775,_0x29a688){var _0x333bec={'agent':{},'channel':_0xbad1('0x73')};if(_0x44a90a[_0xbad1('0x50')]['id']){delete _0x44a90a[_0xbad1('0x50')]['id'];}_0x44a90a['body']['UserId']=_0x44a90a[_0xbad1('0x50')][_0xbad1('0x5a')]||_0x44a90a[_0xbad1('0x5b')]['id'];_0x333bec['agent']['id']=_0x44a90a[_0xbad1('0x50')][_0xbad1('0x5a')];return db[_0xbad1('0x36')]['find']({'where':{'id':_0x44a90a[_0xbad1('0x51')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1f2775,null))['then'](function(_0x5a7b5f){if(_0x5a7b5f){_0x333bec['message']=_0x5a7b5f[_0xbad1('0x5c')]({'plain':!![]});return db[_0xbad1('0x5d')][_0xbad1('0x4e')]({'where':{'id':_0x5a7b5f[_0xbad1('0x74')]}});}return null;})[_0xbad1('0x1a')](handleEntityNotFound(_0x1f2775,null))['then'](function(_0x48690c){if(_0x48690c){_0x333bec['interaction']=_0x48690c[_0xbad1('0x5c')]({'plain':!![]});interaction_log[_0xbad1('0x1b')](_0xbad1('0x75'),_0x44a90a[_0xbad1('0x5b')]['id'],_0x44a90a[_0xbad1('0x5b')][_0xbad1('0x33')],_0x44a90a[_0xbad1('0x5b')][_0xbad1('0x61')],_0x333bec['interaction']['id'],_0x44a90a[_0xbad1('0x50')]?JSON['stringify'](_0x44a90a[_0xbad1('0x50')]):'null');return respondWithRpcPromise(_0xbad1('0x76'),_0xbad1('0x77'),_0x333bec);}return null;})[_0xbad1('0x1a')](function(_0xef03e){var _0x5b0604=_0xbad1('0x65')+_0xef03e[_0xbad1('0x22')][_0xbad1('0x66')];return db[_0xbad1('0x78')][_0xbad1('0x3a')](_0x5b0604,{'type':db[_0xbad1('0x67')][_0xbad1('0x79')][_0xbad1('0x68')],'raw':!![]})[_0xbad1('0x1a')](function(_0x34aec3){return _0x34aec3;});})[_0xbad1('0x1a')](function(_0x5f184f){if(_0x5f184f){_0x333bec['message'][_0xbad1('0x7a')]=_0x5f184f[0x0];if(!_0x44a90a[_0xbad1('0x50')][_0xbad1('0x5a')])return;return db['User'][_0xbad1('0x4e')]({'where':{'id':_0x44a90a[_0xbad1('0x50')][_0xbad1('0x5a')],'role':_0xbad1('0x7b')},'attributes':['id','name',_0xbad1('0x6a'),'email',_0xbad1('0x6c')],'raw':!![]});}return null;})[_0xbad1('0x1a')](function(_0x269394){if(!_0x269394)return null;_0x333bec['message'][_0xbad1('0x7b')]=_0x269394;return _0x333bec;})[_0xbad1('0x1a')](function(_0x3808fd){if(_0x3808fd){_0x3808fd['message']['interface']=util[_0xbad1('0x58')](_0xbad1('0x6d'),_0x44a90a['user'][_0xbad1('0x33')]);_0x3808fd['message']['channel']=_0x333bec['channel'];_0x3808fd[_0xbad1('0x22')][_0xbad1('0x6f')]=_0x333bec[_0xbad1('0x6e')];_0x3808fd[_0xbad1('0x22')]['event']=_0xbad1('0x2f');respondWithRpcPromise(_0xbad1('0x71'),_0xbad1('0x71'),{'event':_0xbad1('0x7c'),'message':_0x3808fd[_0xbad1('0x22')]},client9002);return _0x333bec;}return null;})[_0xbad1('0x1a')](respondWithResult(_0x1f2775,null))[_0xbad1('0x23')](handleError(_0x1f2775,null));};exports['status']=function(_0x4b3b25,_0x222736,_0x20b307){if(_0x4b3b25[_0xbad1('0x50')]['id']){delete _0x4b3b25['body']['id'];}var _0x4b1015;return db[_0xbad1('0x36')][_0xbad1('0x4e')]({'where':{'id':_0x4b3b25[_0xbad1('0x51')]['id']}})['then'](handleEntityNotFound(_0x222736,null))[_0xbad1('0x1a')](function(_0x1dc1e2){if(_0x1dc1e2){_0x4b1015=_0x1dc1e2;return db['SmsAccount'][_0xbad1('0x4e')]({'where':{'id':_0x1dc1e2[_0xbad1('0x7d')]}});}})['then'](handleEntityNotFound(_0x222736,null))[_0xbad1('0x1a')](function(_0x4ee05f){if(_0x4ee05f){logger['debug'](_0xbad1('0x7e'),_0xbad1('0x25'),_0xbad1('0x7f'),_0x4ee05f[_0xbad1('0x46')],util['inspect'](_0x4b3b25[_0xbad1('0x50')],{'showHidden':![],'depth':null}));switch(_0x4ee05f[_0xbad1('0x46')]){case _0xbad1('0x80'):if(_0x4b3b25[_0xbad1('0x50')][_0xbad1('0x81')]&&_0x4b3b25[_0xbad1('0x50')][_0xbad1('0x81')]===_0x4b1015[_0xbad1('0x82')]){return _0x4b1015['update']({'read':!![]});}else{logger[_0xbad1('0x20')](_0xbad1('0x83'),'status',_0xbad1('0x80'),util[_0xbad1('0x84')](_0x4b3b25[_0xbad1('0x50')],{'showHidden':![],'depth':null}));}break;case _0xbad1('0x85'):if(_0x4b3b25[_0xbad1('0x50')][_0xbad1('0x86')]&&_0x4b3b25[_0xbad1('0x50')][_0xbad1('0x86')]===_0x4b1015[_0xbad1('0x82')]&&_[_0xbad1('0x87')]([_0xbad1('0x88'),_0xbad1('0x89')],_0x4b3b25[_0xbad1('0x50')][_0xbad1('0x8a')])>=0x0){return _0x4b1015[_0xbad1('0x31')]({'read':!![]});}else{logger[_0xbad1('0x20')](_0xbad1('0x83'),_0xbad1('0x25'),_0xbad1('0x8b'),util[_0xbad1('0x84')](_0x4b3b25['body'],{'showHidden':![],'depth':null}));}break;case _0xbad1('0x8c'):var _0x3a9957=_0x4b3b25[_0xbad1('0x50')][_0xbad1('0x8d')][0x0];if(_0x3a9957[_0xbad1('0x25')][_0xbad1('0x8e')]===_0xbad1('0x8f')){return _0x4b1015[_0xbad1('0x31')]({'read':!![]});}else{logger[_0xbad1('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xbad1('0x25'),_0xbad1('0x8c'),util['inspect'](_0x4b3b25[_0xbad1('0x50')],{'showHidden':![],'depth':null}));}break;}return _0x4b1015;}})[_0xbad1('0x1a')](respondWithResult(_0x222736,null))[_0xbad1('0x23')](handleError(_0x222736,null));};
\ No newline at end of file
index 06322aa..ca2d524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10b8=['SmsMessage','update','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x48036a,_0x3ac937){var _0x33333f=function(_0x242abc){while(--_0x242abc){_0x48036a['push'](_0x48036a['shift']());}};_0x33333f(++_0x3ac937);}(_0x10b8,0x6e));var _0x810b=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0x10b8[_0x4e7d25];return _0x526fe6;};'use strict';var EventEmitter=require(_0x810b('0x0'));var SmsMessage=require(_0x810b('0x1'))['db'][_0x810b('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x810b('0x3'),'afterDestroy':'remove'};function emitEvent(_0xf117cf){return function(_0x5891ec,_0x5dcecd,_0x13d0a9){SmsMessageEvents['emit'](_0xf117cf+':'+_0x5891ec['id'],_0x5891ec);SmsMessageEvents[_0x810b('0x4')](_0xf117cf,_0x5891ec);_0x13d0a9(null);};}for(var e in events){if(events[_0x810b('0x5')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0x810b('0x6')]=SmsMessageEvents;
\ No newline at end of file
+var _0x4f44=['events','SmsMessage','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x4f44,0x110));var _0x44f4=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x4f44[_0x6c993a];return _0x27f547;};'use strict';var EventEmitter=require(_0x44f4('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0x44f4('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x44f4('0x2')](0x0);var events={'afterCreate':_0x44f4('0x3'),'afterUpdate':'update','afterDestroy':_0x44f4('0x4')};function emitEvent(_0x498da7){return function(_0x21563c,_0x19dc55,_0x11929b){SmsMessageEvents[_0x44f4('0x5')](_0x498da7+':'+_0x21563c['id'],_0x21563c);SmsMessageEvents[_0x44f4('0x5')](_0x498da7,_0x21563c);_0x11929b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x44f4('0x6')](e,emitEvent(event));}}module[_0x44f4('0x7')]=SmsMessageEvents;
\ No newline at end of file
index d514bcc..afbefd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c2=['define','sms_messages','messageId','fti_sms_messages','body','models','direction','out','UserId','isNil','SmsInteractionId','findOne','then','update','toLowerCase','catch','error','SmsAccount','find','type','twilio','accountSid','phone','authToken','messages','create','remote','/status?token=','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','sender','&password=','password','GET','sms','POST','user_key','total_sent','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','read','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','/api/sms/messages/','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','csc','crypto','apiKey','login','text','keys','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','https://messaging.bandwidth.com/api/v2/users/','/messages','applicationId','bandwidth','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes'];(function(_0x181d63,_0x4c5932){var _0x2b32c3=function(_0x2b14aa){while(--_0x2b14aa){_0x181d63['push'](_0x181d63['shift']());}};_0x2b32c3(++_0x4c5932);}(_0x43c2,0x1d3));var _0x243c=function(_0x2338ec,_0x2dbca1){_0x2338ec=_0x2338ec-0x0;var _0x29a662=_0x43c2[_0x2338ec];return _0x29a662;};'use strict';var _=require(_0x243c('0x0'));var util=require(_0x243c('0x1'));var logger=require(_0x243c('0x2'))('api');var moment=require(_0x243c('0x3'));var BPromise=require('bluebird');var rp=require(_0x243c('0x4'));var fs=require('fs');var path=require(_0x243c('0x5'));var rimraf=require(_0x243c('0x6'));var config=require(_0x243c('0x7'));var attributes=require(_0x243c('0x8'));module['exports']=function(_0x334a03,_0x575a7d){return _0x334a03[_0x243c('0x9')]('SmsMessage',attributes,{'tableName':_0x243c('0xa'),'paranoid':![],'indexes':[{'name':_0x243c('0xb'),'fields':[_0x243c('0xb')]},{'name':_0x243c('0xc'),'fields':[_0x243c('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1fe815,_0x12f436,_0x237f2a){var _0x5a1d2e=_0x334a03[_0x243c('0xe')];var _0x5c6918=_0x1fe815['get']({'plain':!![]});if(_0x5c6918['direction']['toLowerCase']()==='in'||_0x5c6918[_0x243c('0xf')]['toLowerCase']()===_0x243c('0x10')&&!_0x5c6918['secret']&&!_['isNil'](_0x5c6918[_0x243c('0x11')])&&!_[_0x243c('0x12')](_0x5c6918[_0x243c('0x13')])){_0x5a1d2e['SmsInteraction'][_0x243c('0x14')]({'where':{'id':_0x5c6918[_0x243c('0x13')]}})[_0x243c('0x15')](function(_0x14d4b8){if(_0x14d4b8){_0x14d4b8[_0x243c('0x16')]({'lastMsgAt':_0x5c6918['createdAt'],'lastMsgDirection':_0x5c6918[_0x243c('0xf')][_0x243c('0x17')]()});}})[_0x243c('0x18')](function(_0x4be284){console[_0x243c('0x19')](_0x4be284);});}if(_0x5c6918['direction']==='out'&&!_0x5c6918['secret']){var _0x7532f0;_0x5a1d2e[_0x243c('0x1a')][_0x243c('0x1b')]({'where':{'id':_0x5c6918['SmsAccountId']},'raw':!![]})['then'](function(_0x584643){_0x7532f0=_0x584643;if(_0x7532f0&&_0x7532f0[_0x243c('0x1c')]){switch(_0x7532f0[_0x243c('0x1c')]){case _0x243c('0x1d'):var _0x1599f5=require(_0x243c('0x1d'));if(_0x7532f0[_0x243c('0x1e')]&&_0x7532f0['authToken']&&_0x7532f0[_0x243c('0x1f')]){var _0x42ae33=new _0x1599f5(_0x7532f0['accountSid'],_0x7532f0[_0x243c('0x20')]);_0x42ae33[_0x243c('0x21')][_0x243c('0x22')]({'body':_0x5c6918[_0x243c('0xd')],'to':_0x5c6918[_0x243c('0x1f')],'from':_0x7532f0[_0x243c('0x1f')],'statusCallback':_0x7532f0[_0x243c('0x23')]+'/api/sms/messages/'+_0x5c6918['id']+_0x243c('0x24')+_0x7532f0[_0x243c('0x25')]})[_0x243c('0x15')](function(_0x310516){if(_0x310516[_0x243c('0x26')]){return _0x1fe815[_0x243c('0x16')]({'messageId':_0x310516['sid']});}})[_0x243c('0x18')](function(_0x1ed9f2){logger[_0x243c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x243c('0x27'),_0x243c('0x1d'),util[_0x243c('0x28')](_0x1ed9f2,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x243c('0x29'),'afterCreate',_0x243c('0x1d'),_0x243c('0x2a'));}break;case _0x243c('0x2b'):var _0x2745a7=_0x243c('0x2c');if(_0x7532f0[_0x243c('0x2d')]&&_0x7532f0['password']){var _0x3f754e={'recipient':[_0x5c6918[_0x243c('0x1f')]],'message':_0x5c6918[_0x243c('0xd')],'message_type':_0x7532f0[_0x243c('0x2e')]};if(_0x7532f0['smsMethod']&&_0x7532f0[_0x243c('0x2e')]!=='SI'){_0x3f754e[_0x243c('0x2f')]=_0x7532f0[_0x243c('0x1f')];}var _0xb266d3={'url':_0x2745a7+'login?username='+_0x7532f0[_0x243c('0x2d')]+_0x243c('0x30')+_0x7532f0[_0x243c('0x31')],'method':_0x243c('0x32')};rp(_0xb266d3)[_0x243c('0x15')](function(_0x50c79e){var _0x18557e=_0x50c79e['split'](';');var _0x14d1c5={'user_key':_0x18557e[0x0],'session_key':_0x18557e[0x1]};_0xb266d3={'url':_0x2745a7+_0x243c('0x33'),'method':_0x243c('0x34'),'headers':{'user_key':_0x14d1c5[_0x243c('0x35')],'Session_key':_0x14d1c5['session_key']},'json':!![],'body':_0x3f754e};return rp(_0xb266d3);})['then'](function(_0xa108c5){if(_0xa108c5[_0x243c('0x36')]>=0x1){var _0x33c2c8={'messageId':_0xa108c5['internal_order_id']};if(_0x7532f0[_0x243c('0x2e')]!=='GP'||!_0x7532f0[_0x243c('0x37')]){_0x33c2c8['read']=!![];}return _0x1fe815[_0x243c('0x16')](_0x33c2c8);}else{return logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x2b'),util[_0x243c('0x28')](_0xa108c5,{'showHidden':![],'depth':null}));}})[_0x243c('0x18')](function(_0x1e31a4){return logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x2b'),util['inspect'](_0x1e31a4,{'showHidden':![],'depth':null}));});}else{logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x2b'),_0x243c('0x38'));}break;case _0x243c('0x39'):if(_0x7532f0['authToken']){var _0x197244={'recipient':_0x5c6918[_0x243c('0x1f')],'message':_0x5c6918[_0x243c('0xd')],'sender':_0x7532f0[_0x243c('0x3a')]||_0x7532f0[_0x243c('0x1f')],'authorization':_0x7532f0[_0x243c('0x20')]};var _0x12f436={'method':'POST','uri':_0x243c('0x3b'),'body':_0x197244,'json':!![]};rp(_0x12f436)[_0x243c('0x15')](function(_0x9f237f){var _0x3fa9c8={'messageId':_0x9f237f[_0x243c('0x3c')]};if(!_0x7532f0['deliveryReport']){_0x3fa9c8[_0x243c('0x3d')]=!![];}return _0x1fe815[_0x243c('0x16')](_0x3fa9c8);})[_0x243c('0x18')](function(_0x7feb9d){logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x39'),util[_0x243c('0x28')](_0x7feb9d,{'showHidden':![],'depth':null}));});}else{logger[_0x243c('0x19')](_0x243c('0x29'),'afterCreate','connectel','Missing\x20parameters:\x20authToken');}break;case _0x243c('0x3e'):if(_0x7532f0[_0x243c('0x2d')]&&_0x7532f0[_0x243c('0x31')]){var _0x197244={'messages':[{'source':_0x243c('0x3f'),'to':_0x5c6918['phone'],'body':_0x5c6918['body'],'from':_0x7532f0[_0x243c('0x3a')]||_0x7532f0[_0x243c('0x1f')]}]};var _0x4feee9=util[_0x243c('0x40')](_0x243c('0x41'),_0x7532f0[_0x243c('0x2d')],_0x7532f0['password']);var _0x12f436={'method':'POST','uri':_0x243c('0x42'),'body':_0x197244,'headers':{'Authorization':util[_0x243c('0x40')](_0x243c('0x43'),new Buffer(_0x4feee9)[_0x243c('0x44')](_0x243c('0x45')))},'json':!![]};rp(_0x12f436)[_0x243c('0x15')](function(_0x27acd9){if(_0x27acd9[_0x243c('0x46')]>=0xc8&&_0x27acd9[_0x243c('0x46')]<=0xce){if(_0x27acd9[_0x243c('0x47')]&&_0x27acd9[_0x243c('0x47')][_0x243c('0x48')]>0x0){var _0x55603d=_[_0x243c('0x49')](_0x27acd9[_0x243c('0x47')][_0x243c('0x21')]);var _0x54a324={'messageId':_0x55603d[_0x243c('0x4a')]};if(!_0x7532f0[_0x243c('0x37')]){_0x54a324[_0x243c('0x3d')]=!![];}return _0x1fe815[_0x243c('0x16')](_0x54a324);}else{logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x4b'),util[_0x243c('0x28')](_0x27acd9,{'showHidden':![],'depth':null}));}}else{logger[_0x243c('0x19')](_0x243c('0x29'),'afterCreate','clickSend',util[_0x243c('0x28')](_0x27acd9,{'showHidden':![],'depth':null}));}})['catch'](function(_0x958ec3){logger[_0x243c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x243c('0x27'),'clickSend',util[_0x243c('0x28')](_0x958ec3,{'showHidden':![],'depth':null}));});}else{logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x4b'),_0x243c('0x38'));}break;case _0x243c('0x4c'):if(_0x7532f0[_0x243c('0x4d')]&&_0x7532f0[_0x243c('0x20')]){var _0x197244={'dst':_0x5c6918[_0x243c('0x1f')],'text':_0x5c6918['body'],'src':_0x7532f0['senderString']||_0x7532f0[_0x243c('0x1f')],'url':_0x7532f0[_0x243c('0x23')]+_0x243c('0x4e')+_0x5c6918['id']+_0x243c('0x24')+_0x7532f0[_0x243c('0x25')]};var _0x4feee9=util[_0x243c('0x40')](_0x243c('0x41'),_0x7532f0['authId'],_0x7532f0['authToken']);var _0x12f436={'method':'POST','uri':util[_0x243c('0x40')]('https://api.plivo.com/v1/Account/%s/Message/',_0x7532f0[_0x243c('0x4d')]),'body':_0x197244,'headers':{'Authorization':util[_0x243c('0x40')](_0x243c('0x43'),new Buffer(_0x4feee9)[_0x243c('0x44')]('base64'))},'json':!![]};rp(_0x12f436)['then'](function(_0x1e0315){var _0x2e3cf4={'messageId':_0x1e0315['message_uuid'][0x0]};return _0x1fe815[_0x243c('0x16')](_0x2e3cf4);})[_0x243c('0x18')](function(_0x5e49fc){logger[_0x243c('0x19')](_0x243c('0x29'),'afterCreate',_0x243c('0x4c'),util[_0x243c('0x28')](_0x5e49fc,{'showHidden':![],'depth':null}));});}else{logger[_0x243c('0x19')](_0x243c('0x29'),'afterCreate',_0x243c('0x4c'),_0x243c('0x4f'));}break;case _0x243c('0x50'):if(_0x7532f0[_0x243c('0x2d')]&&_0x7532f0['password']){if(_0x7532f0[_0x243c('0x51')]){var _0x1c86ca={'method':_0x243c('0x34'),'uri':_0x7532f0[_0x243c('0x51')]+_0x243c('0x52'),'body':{'username':_0x7532f0[_0x243c('0x2d')],'password':_0x7532f0[_0x243c('0x31')]},'json':!![]};return rp(_0x1c86ca)[_0x243c('0x15')](function(_0x33e495){var _0x62e2c2={'method':_0x243c('0x34'),'uri':_0x7532f0[_0x243c('0x51')]+_0x243c('0x53'),'body':{'messages':[{'from':_0x7532f0[_0x243c('0x1f')],'destinations':[{'to':_0x5c6918[_0x243c('0x1f')]}],'text':_0x5c6918[_0x243c('0xd')],'notifyUrl':_0x7532f0[_0x243c('0x23')]+'/api/sms/messages/'+_0x5c6918['id']+'/status?token='+_0x7532f0[_0x243c('0x25')],'notifyContentType':_0x243c('0x54'),'callbackData':_0x7532f0[_0x243c('0x1f')]+';'+_0x5c6918[_0x243c('0xd')]}]},'headers':{'Authorization':_0x243c('0x55')+_0x33e495[_0x243c('0x25')]},'json':!![]};return rp(_0x62e2c2)[_0x243c('0x15')](function(_0x1c984e){if(_0x1c984e[_0x243c('0x21')]){var _0x25a121={'messageId':_0x1c984e[_0x243c('0x21')][0x0][_0x243c('0xb')]};if(!_0x7532f0[_0x243c('0x37')]){_0x25a121[_0x243c('0x3d')]=!![];}return _0x1fe815[_0x243c('0x16')](_0x25a121);}else{return logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x50'),util[_0x243c('0x28')](_0x1c984e,{'showHidden':![],'depth':null}));}});})[_0x243c('0x18')](function(_0x5f423f){return logger['error'](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x50'),util[_0x243c('0x28')](_0x5f423f,{'showHidden':![],'depth':null}));});}else{logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x50'),'Missing\x20parameters:\x20base_url');}}else{logger['error'](_0x243c('0x29'),_0x243c('0x27'),'infobip',_0x243c('0x38'));}break;case _0x243c('0x56'):var _0x37dab3=require(_0x243c('0x57'));if(_0x7532f0[_0x243c('0x58')]){var _0x394e90={};_0x394e90[_0x243c('0x59')]=_0x7532f0['username'];_0x394e90[_0x243c('0x1f')]=_0x5c6918[_0x243c('0x1f')];_0x394e90[_0x243c('0x2f')]=_0x7532f0[_0x243c('0x1f')];_0x394e90[_0x243c('0x5a')]=_0x5c6918['body'];_0x394e90['timestamp']=+new Date();var _0x95d8c8='';var _0x5c59f4='';var _0x321efa=Object[_0x243c('0x5b')](_0x394e90);_0x321efa['sort']();for(var _0x57033d=0x0;_0x57033d<_0x321efa[_0x243c('0x5c')];_0x57033d++){if(_0x95d8c8!=''){_0x95d8c8+='&';}_0x95d8c8+=_0x321efa[_0x57033d]+'='+encodeURIComponent(_0x394e90[_0x321efa[_0x57033d]]);_0x5c59f4+=_0x394e90[_0x321efa[_0x57033d]];}_0x5c59f4+=_0x7532f0[_0x243c('0x58')];_0x5c59f4=_0x37dab3[_0x243c('0x5d')](_0x243c('0x5e'))[_0x243c('0x16')](_0x5c59f4)[_0x243c('0x5f')](_0x243c('0x60'));if(_0x95d8c8!==''){_0x95d8c8+='&';}_0x95d8c8+=_0x243c('0x61')+_0x5c59f4;var _0xb266d3={'method':_0x243c('0x32'),'uri':_0x7532f0['baseUrl']+_0x243c('0x62')+_0x95d8c8,'json':!![]};return rp(_0xb266d3)[_0x243c('0x15')](function(_0x22b63f){var _0x21ee03=Object[_0x243c('0x5b')](_0x22b63f);if(_0x22b63f[_0x21ee03[0x0]][_0x243c('0x19')]&&parseInt(_0x22b63f[_0x21ee03[0x0]][_0x243c('0x19')])===0x0){var _0x37b189={'messageId':_0x22b63f[_0x21ee03[0x0]][_0x243c('0x63')]};if(!_0x7532f0[_0x243c('0x37')]){_0x37b189[_0x243c('0x3d')]=!![];}return _0x1fe815['update'](_0x37b189);}else{return logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x56'),util['inspect'](_0x22b63f[_0x243c('0x19')],{'showHidden':![],'depth':null}));}})[_0x243c('0x18')](function(_0xc26a0d){return logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),'csc',util[_0x243c('0x28')](_0xc26a0d,{'showHidden':![],'depth':null}));});}else{logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x56'),_0x243c('0x64'));}break;case'clickatell':if(_0x7532f0[_0x243c('0x58')]){var _0x4949f2={'method':_0x243c('0x34'),'uri':_0x243c('0x65'),'headers':{'Authorization':_0x7532f0['apiKey']},'body':{'content':_0x5c6918[_0x243c('0xd')],'to':[_0x5c6918[_0x243c('0x1f')]],'from':_0x7532f0[_0x243c('0x1f')],'binary':![],'clientMessageId':_0x243c('0x66'),'charset':_0x243c('0x67')},'json':!![]};rp(_0x4949f2)[_0x243c('0x15')](function(_0x2b182e){if(!_0x2b182e[_0x243c('0x19')]){var _0xec280b={'messageId':_0x2b182e[_0x243c('0x21')][0x0][_0x243c('0x68')]};if(!_0x7532f0[_0x243c('0x37')]){_0xec280b[_0x243c('0x3d')]=!![];}return _0x1fe815['update'](_0xec280b);}else{return logger[_0x243c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x243c('0x27'),'clickatell',util[_0x243c('0x28')](_0x2b182e[_0x243c('0x19')],{'showHidden':![],'depth':null}));}})[_0x243c('0x18')](function(_0xcf4c3){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x243c('0x27'),'clickatell',util[_0x243c('0x28')](_0xcf4c3,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x243c('0x29'),_0x243c('0x27'),'clickatell',_0x243c('0x64'));}break;case'bandwidth':if(_0x7532f0[_0x243c('0x2d')]&&_0x7532f0[_0x243c('0x31')]){var _0x4feee9=util['format'](_0x243c('0x41'),_0x7532f0['username'],_0x7532f0['password']);var _0x12f436={'method':'POST','uri':_0x243c('0x69')+_0x7532f0['accountId']+_0x243c('0x6a'),'body':{'to':[_0x5c6918[_0x243c('0x1f')]],'text':_0x5c6918[_0x243c('0xd')],'from':_0x7532f0['phone'],'applicationId':_0x7532f0[_0x243c('0x6b')]},'headers':{'Authorization':util[_0x243c('0x40')]('Basic\x20%s',new Buffer(_0x4feee9)[_0x243c('0x44')]('base64'))},'json':!![]};rp(_0x12f436)[_0x243c('0x15')](function(_0x3424fa){if(_0x3424fa['id']){var _0x5ae8c0={'messageId':_0x3424fa['id']};return _0x1fe815[_0x243c('0x16')](_0x5ae8c0);}else{logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),'bandwidth',util[_0x243c('0x28')](_0x3424fa,{'showHidden':![],'depth':null}));}})[_0x243c('0x18')](function(_0x3b9f16){logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x6c'),util[_0x243c('0x28')](_0x3b9f16,{'showHidden':![],'depth':null}));});}else{logger[_0x243c('0x19')](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x6c'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x243c('0x6d'):if(_0x7532f0[_0x243c('0x58')]){var _0x34983b={};var _0xb266d3={'method':'POST','uri':_0x243c('0x6e'),'headers':{'Authorization':'Bearer\x20'+_0x7532f0[_0x243c('0x58')],'Content-Type':'application/json'},'body':{'from':_0x7532f0[_0x243c('0x1f')],'to':_0x5c6918[_0x243c('0x1f')],'text':_0x5c6918[_0x243c('0xd')]},'json':!![]};return rp(_0xb266d3)[_0x243c('0x15')](function(_0x950f6f){if(_0x950f6f['code']==0xca){_0x34983b[_0x243c('0x6f')]=_0x950f6f;var _0x2aa2b4={'method':_0x243c('0x34'),'uri':_0x243c('0x70'),'headers':{'Authorization':_0x243c('0x71')+_0x7532f0[_0x243c('0x58')],'Content-Type':_0x243c('0x54')},'body':{'refid':_0x34983b[_0x243c('0x6f')][_0x243c('0x72')]},'json':!![]};return rp(_0x2aa2b4)[_0x243c('0x15')](function(_0x489b75){_0x34983b[_0x243c('0x73')]=_0x489b75;var _0x4fd171={'messageId':_0x34983b[_0x243c('0x6f')][_0x243c('0x72')],'read':!![]};return _0x1fe815['update'](_0x4fd171);});}else{return logger[_0x243c('0x19')](_0x243c('0x29'),'afterCreate',_0x243c('0x6d'),util['inspect'](_0x950f6f,{'showHidden':![],'depth':null}));}})['catch'](function(_0x516871){return logger['error'](_0x243c('0x29'),_0x243c('0x27'),'intelepeer',util[_0x243c('0x28')](_0x516871,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x243c('0x29'),_0x243c('0x27'),_0x243c('0x6d'),'Token\x20not\x20received');}break;}}})[_0x243c('0x74')](function(){_0x237f2a();});}else{_0x237f2a();}}},'charset':_0x243c('0x75'),'collate':_0x243c('0x76')});};
\ No newline at end of file
+var _0x208d=['plivo','authId','/api/sms/messages/','/status?token=','format','base64','message_uuid','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','keys','sort','length','md5','digest','hex','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','SmsInteractionId','SmsInteraction','then','createdAt','catch','error','find','SmsAccountId','type','twilio','accountSid','authToken','phone','create','remote','token','sid','update','afterCreate','inspect','skebby','username','password','smsMethod','sender','login?username=','GET','split','sms','POST','session_key','internal_order_id','read','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20username,\x20password','connectel','senderString','deliveryReport','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','http_code','data','queued_count','head','messages','message_id','clickSend'];(function(_0x16e0e3,_0x4f0475){var _0x63f223=function(_0x5aaa0f){while(--_0x5aaa0f){_0x16e0e3['push'](_0x16e0e3['shift']());}};_0x63f223(++_0x4f0475);}(_0x208d,0xad));var _0xd208=function(_0x229fa7,_0xcf12a5){_0x229fa7=_0x229fa7-0x0;var _0x26ee05=_0x208d[_0x229fa7];return _0x26ee05;};'use strict';var _=require(_0xd208('0x0'));var util=require(_0xd208('0x1'));var logger=require(_0xd208('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd208('0x3'));var rp=require(_0xd208('0x4'));var fs=require('fs');var path=require(_0xd208('0x5'));var rimraf=require(_0xd208('0x6'));var config=require(_0xd208('0x7'));var attributes=require('./smsMessage.attributes');module[_0xd208('0x8')]=function(_0x5e2b92,_0x45570b){return _0x5e2b92[_0xd208('0x9')](_0xd208('0xa'),attributes,{'tableName':_0xd208('0xb'),'paranoid':![],'indexes':[{'name':_0xd208('0xc'),'fields':[_0xd208('0xc')]},{'name':'fti_sms_messages','fields':[_0xd208('0xd')],'type':_0xd208('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x32fdde,_0x13f073,_0x47db93){var _0x1f2260=_0x5e2b92[_0xd208('0xf')];var _0x2a2d62=_0x32fdde[_0xd208('0x10')]({'plain':!![]});if(_0x2a2d62[_0xd208('0x11')]['toLowerCase']()==='in'||_0x2a2d62[_0xd208('0x11')][_0xd208('0x12')]()===_0xd208('0x13')&&!_0x2a2d62[_0xd208('0x14')]&&!_[_0xd208('0x15')](_0x2a2d62['UserId'])&&!_['isNil'](_0x2a2d62[_0xd208('0x16')])){_0x1f2260[_0xd208('0x17')]['findOne']({'where':{'id':_0x2a2d62[_0xd208('0x16')]}})[_0xd208('0x18')](function(_0x3e8dd9){if(_0x3e8dd9){_0x3e8dd9['update']({'lastMsgAt':_0x2a2d62[_0xd208('0x19')],'lastMsgDirection':_0x2a2d62['direction'][_0xd208('0x12')]()});}})[_0xd208('0x1a')](function(_0x4a940e){console[_0xd208('0x1b')](_0x4a940e);});}if(_0x2a2d62[_0xd208('0x11')]===_0xd208('0x13')&&!_0x2a2d62[_0xd208('0x14')]){var _0x574805;_0x1f2260['SmsAccount'][_0xd208('0x1c')]({'where':{'id':_0x2a2d62[_0xd208('0x1d')]},'raw':!![]})[_0xd208('0x18')](function(_0x8322e5){_0x574805=_0x8322e5;if(_0x574805&&_0x574805[_0xd208('0x1e')]){switch(_0x574805[_0xd208('0x1e')]){case _0xd208('0x1f'):var _0x2f42da=require(_0xd208('0x1f'));if(_0x574805[_0xd208('0x20')]&&_0x574805[_0xd208('0x21')]&&_0x574805[_0xd208('0x22')]){var _0x3290f1=new _0x2f42da(_0x574805['accountSid'],_0x574805['authToken']);_0x3290f1['messages'][_0xd208('0x23')]({'body':_0x2a2d62[_0xd208('0xd')],'to':_0x2a2d62[_0xd208('0x22')],'from':_0x574805['phone'],'statusCallback':_0x574805[_0xd208('0x24')]+'/api/sms/messages/'+_0x2a2d62['id']+'/status?token='+_0x574805[_0xd208('0x25')]})[_0xd208('0x18')](function(_0x345840){if(_0x345840[_0xd208('0x26')]){return _0x32fdde[_0xd208('0x27')]({'messageId':_0x345840[_0xd208('0x26')]});}})['catch'](function(_0x4f6906){logger[_0xd208('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd208('0x28'),'twilio',util[_0xd208('0x29')](_0x4f6906,{'showHidden':![],'depth':null}));});}else{logger[_0xd208('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd208('0x28'),_0xd208('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xd208('0x2a'):var _0x120b3d='https://api.skebby.it/API/v1.0/REST/';if(_0x574805[_0xd208('0x2b')]&&_0x574805[_0xd208('0x2c')]){var _0x44bfde={'recipient':[_0x2a2d62[_0xd208('0x22')]],'message':_0x2a2d62[_0xd208('0xd')],'message_type':_0x574805[_0xd208('0x2d')]};if(_0x574805[_0xd208('0x2d')]&&_0x574805[_0xd208('0x2d')]!=='SI'){_0x44bfde[_0xd208('0x2e')]=_0x574805[_0xd208('0x22')];}var _0x4dfa0e={'url':_0x120b3d+_0xd208('0x2f')+_0x574805[_0xd208('0x2b')]+'&password='+_0x574805[_0xd208('0x2c')],'method':_0xd208('0x30')};rp(_0x4dfa0e)[_0xd208('0x18')](function(_0x2de55e){var _0x3ac0ac=_0x2de55e[_0xd208('0x31')](';');var _0x45b058={'user_key':_0x3ac0ac[0x0],'session_key':_0x3ac0ac[0x1]};_0x4dfa0e={'url':_0x120b3d+_0xd208('0x32'),'method':_0xd208('0x33'),'headers':{'user_key':_0x45b058['user_key'],'Session_key':_0x45b058[_0xd208('0x34')]},'json':!![],'body':_0x44bfde};return rp(_0x4dfa0e);})[_0xd208('0x18')](function(_0x14dfbe){if(_0x14dfbe['total_sent']>=0x1){var _0x387ef0={'messageId':_0x14dfbe[_0xd208('0x35')]};if(_0x574805[_0xd208('0x2d')]!=='GP'||!_0x574805['deliveryReport']){_0x387ef0[_0xd208('0x36')]=!![];}return _0x32fdde[_0xd208('0x27')](_0x387ef0);}else{return logger['error'](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x2a'),util[_0xd208('0x29')](_0x14dfbe,{'showHidden':![],'depth':null}));}})[_0xd208('0x1a')](function(_0x5c6ca7){return logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x2a'),util[_0xd208('0x29')](_0x5c6ca7,{'showHidden':![],'depth':null}));});}else{logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x2a'),_0xd208('0x38'));}break;case _0xd208('0x39'):if(_0x574805[_0xd208('0x21')]){var _0x210e0e={'recipient':_0x2a2d62[_0xd208('0x22')],'message':_0x2a2d62[_0xd208('0xd')],'sender':_0x574805[_0xd208('0x3a')]||_0x574805[_0xd208('0x22')],'authorization':_0x574805[_0xd208('0x21')]};var _0x13f073={'method':'POST','uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x210e0e,'json':!![]};rp(_0x13f073)[_0xd208('0x18')](function(_0x2425d8){var _0x4a030a={'messageId':_0x2425d8['requestid']};if(!_0x574805[_0xd208('0x3b')]){_0x4a030a[_0xd208('0x36')]=!![];}return _0x32fdde[_0xd208('0x27')](_0x4a030a);})[_0xd208('0x1a')](function(_0x38639f){logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x39'),util[_0xd208('0x29')](_0x38639f,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xd208('0x39'),_0xd208('0x3c'));}break;case'clicksend':if(_0x574805[_0xd208('0x2b')]&&_0x574805[_0xd208('0x2c')]){var _0x210e0e={'messages':[{'source':_0xd208('0x3d'),'to':_0x2a2d62['phone'],'body':_0x2a2d62[_0xd208('0xd')],'from':_0x574805[_0xd208('0x3a')]||_0x574805[_0xd208('0x22')]}]};var _0x5da57a=util['format'](_0xd208('0x3e'),_0x574805[_0xd208('0x2b')],_0x574805['password']);var _0x13f073={'method':_0xd208('0x33'),'uri':_0xd208('0x3f'),'body':_0x210e0e,'headers':{'Authorization':util['format'](_0xd208('0x40'),new Buffer(_0x5da57a)[_0xd208('0x41')]('base64'))},'json':!![]};rp(_0x13f073)[_0xd208('0x18')](function(_0x392391){if(_0x392391[_0xd208('0x42')]>=0xc8&&_0x392391[_0xd208('0x42')]<=0xce){if(_0x392391[_0xd208('0x43')]&&_0x392391[_0xd208('0x43')][_0xd208('0x44')]>0x0){var _0x30c8c7=_[_0xd208('0x45')](_0x392391['data'][_0xd208('0x46')]);var _0xf91a5a={'messageId':_0x30c8c7[_0xd208('0x47')]};if(!_0x574805[_0xd208('0x3b')]){_0xf91a5a[_0xd208('0x36')]=!![];}return _0x32fdde[_0xd208('0x27')](_0xf91a5a);}else{logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x48'),util['inspect'](_0x392391,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x48'),util[_0xd208('0x29')](_0x392391,{'showHidden':![],'depth':null}));}})[_0xd208('0x1a')](function(_0x114a3c){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd208('0x28'),_0xd208('0x48'),util['inspect'](_0x114a3c,{'showHidden':![],'depth':null}));});}else{logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x48'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xd208('0x49'):if(_0x574805[_0xd208('0x4a')]&&_0x574805[_0xd208('0x21')]){var _0x210e0e={'dst':_0x2a2d62[_0xd208('0x22')],'text':_0x2a2d62[_0xd208('0xd')],'src':_0x574805['senderString']||_0x574805[_0xd208('0x22')],'url':_0x574805[_0xd208('0x24')]+_0xd208('0x4b')+_0x2a2d62['id']+_0xd208('0x4c')+_0x574805['token']};var _0x5da57a=util[_0xd208('0x4d')](_0xd208('0x3e'),_0x574805[_0xd208('0x4a')],_0x574805[_0xd208('0x21')]);var _0x13f073={'method':'POST','uri':util[_0xd208('0x4d')]('https://api.plivo.com/v1/Account/%s/Message/',_0x574805['authId']),'body':_0x210e0e,'headers':{'Authorization':util[_0xd208('0x4d')](_0xd208('0x40'),new Buffer(_0x5da57a)[_0xd208('0x41')](_0xd208('0x4e')))},'json':!![]};rp(_0x13f073)[_0xd208('0x18')](function(_0x26f1f7){var _0x51390b={'messageId':_0x26f1f7[_0xd208('0x4f')][0x0]};return _0x32fdde[_0xd208('0x27')](_0x51390b);})['catch'](function(_0x21ae4a){logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x49'),util[_0xd208('0x29')](_0x21ae4a,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x49'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0xd208('0x50'):if(_0x574805[_0xd208('0x2b')]&&_0x574805['password']){if(_0x574805[_0xd208('0x51')]){var _0x2d9fd9={'method':'POST','uri':_0x574805[_0xd208('0x51')]+_0xd208('0x52'),'body':{'username':_0x574805[_0xd208('0x2b')],'password':_0x574805[_0xd208('0x2c')]},'json':!![]};return rp(_0x2d9fd9)[_0xd208('0x18')](function(_0x4dc8fd){var _0x2ada8f={'method':_0xd208('0x33'),'uri':_0x574805[_0xd208('0x51')]+_0xd208('0x53'),'body':{'messages':[{'from':_0x574805[_0xd208('0x22')],'destinations':[{'to':_0x2a2d62[_0xd208('0x22')]}],'text':_0x2a2d62[_0xd208('0xd')],'notifyUrl':_0x574805[_0xd208('0x24')]+_0xd208('0x4b')+_0x2a2d62['id']+_0xd208('0x4c')+_0x574805['token'],'notifyContentType':_0xd208('0x54'),'callbackData':_0x574805[_0xd208('0x22')]+';'+_0x2a2d62[_0xd208('0xd')]}]},'headers':{'Authorization':_0xd208('0x55')+_0x4dc8fd['token']},'json':!![]};return rp(_0x2ada8f)[_0xd208('0x18')](function(_0x53fbd4){if(_0x53fbd4[_0xd208('0x46')]){var _0x6a80c2={'messageId':_0x53fbd4[_0xd208('0x46')][0x0][_0xd208('0xc')]};if(!_0x574805[_0xd208('0x3b')]){_0x6a80c2[_0xd208('0x36')]=!![];}return _0x32fdde['update'](_0x6a80c2);}else{return logger[_0xd208('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xd208('0x50'),util[_0xd208('0x29')](_0x53fbd4,{'showHidden':![],'depth':null}));}});})[_0xd208('0x1a')](function(_0x5721f3){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd208('0x28'),_0xd208('0x50'),util['inspect'](_0x5721f3,{'showHidden':![],'depth':null}));});}else{logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),'infobip',_0xd208('0x56'));}}else{logger['error'](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x50'),_0xd208('0x38'));}break;case _0xd208('0x57'):var _0x2baaf2=require(_0xd208('0x58'));if(_0x574805[_0xd208('0x59')]){var _0x4aac88={};_0x4aac88[_0xd208('0x5a')]=_0x574805[_0xd208('0x2b')];_0x4aac88['phone']=_0x2a2d62[_0xd208('0x22')];_0x4aac88[_0xd208('0x2e')]=_0x574805[_0xd208('0x22')];_0x4aac88[_0xd208('0x5b')]=_0x2a2d62['body'];_0x4aac88['timestamp']=+new Date();var _0x2d4b0f='';var _0x458e83='';var _0x248a82=Object[_0xd208('0x5c')](_0x4aac88);_0x248a82[_0xd208('0x5d')]();for(var _0x4c31e7=0x0;_0x4c31e7<_0x248a82[_0xd208('0x5e')];_0x4c31e7++){if(_0x2d4b0f!=''){_0x2d4b0f+='&';}_0x2d4b0f+=_0x248a82[_0x4c31e7]+'='+encodeURIComponent(_0x4aac88[_0x248a82[_0x4c31e7]]);_0x458e83+=_0x4aac88[_0x248a82[_0x4c31e7]];}_0x458e83+=_0x574805[_0xd208('0x59')];_0x458e83=_0x2baaf2['createHash'](_0xd208('0x5f'))[_0xd208('0x27')](_0x458e83)[_0xd208('0x60')](_0xd208('0x61'));if(_0x2d4b0f!==''){_0x2d4b0f+='&';}_0x2d4b0f+='signature='+_0x458e83;var _0x4dfa0e={'method':_0xd208('0x30'),'uri':_0x574805['baseUrl']+_0xd208('0x62')+_0x2d4b0f,'json':!![]};return rp(_0x4dfa0e)[_0xd208('0x18')](function(_0x34c8e1){var _0x304378=Object['keys'](_0x34c8e1);if(_0x34c8e1[_0x304378[0x0]][_0xd208('0x1b')]&&parseInt(_0x34c8e1[_0x304378[0x0]][_0xd208('0x1b')])===0x0){var _0x1654f9={'messageId':_0x34c8e1[_0x304378[0x0]][_0xd208('0x63')]};if(!_0x574805[_0xd208('0x3b')]){_0x1654f9[_0xd208('0x36')]=!![];}return _0x32fdde[_0xd208('0x27')](_0x1654f9);}else{return logger[_0xd208('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd208('0x28'),_0xd208('0x57'),util[_0xd208('0x29')](_0x34c8e1[_0xd208('0x1b')],{'showHidden':![],'depth':null}));}})[_0xd208('0x1a')](function(_0x36e3f8){return logger[_0xd208('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd208('0x28'),'csc',util['inspect'](_0x36e3f8,{'showHidden':![],'depth':null}));});}else{logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),'csc',_0xd208('0x64'));}break;case _0xd208('0x65'):if(_0x574805[_0xd208('0x59')]){var _0x285bc5={'method':_0xd208('0x33'),'uri':_0xd208('0x66'),'headers':{'Authorization':_0x574805['apiKey']},'body':{'content':_0x2a2d62[_0xd208('0xd')],'to':[_0x2a2d62[_0xd208('0x22')]],'from':_0x574805[_0xd208('0x22')],'binary':![],'clientMessageId':_0xd208('0x67'),'charset':_0xd208('0x68')},'json':!![]};rp(_0x285bc5)[_0xd208('0x18')](function(_0x3c1e9c){if(!_0x3c1e9c[_0xd208('0x1b')]){var _0x54687b={'messageId':_0x3c1e9c[_0xd208('0x46')][0x0][_0xd208('0x69')]};if(!_0x574805[_0xd208('0x3b')]){_0x54687b['read']=!![];}return _0x32fdde[_0xd208('0x27')](_0x54687b);}else{return logger[_0xd208('0x1b')](_0xd208('0x37'),'afterCreate',_0xd208('0x65'),util['inspect'](_0x3c1e9c[_0xd208('0x1b')],{'showHidden':![],'depth':null}));}})[_0xd208('0x1a')](function(_0x4427ec){return logger[_0xd208('0x1b')](_0xd208('0x37'),'afterCreate',_0xd208('0x65'),util[_0xd208('0x29')](_0x4427ec,{'showHidden':![],'depth':null}));});}else{logger[_0xd208('0x1b')](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x65'),_0xd208('0x64'));}break;case _0xd208('0x6a'):if(_0x574805[_0xd208('0x2b')]&&_0x574805['password']){var _0x5da57a=util[_0xd208('0x4d')](_0xd208('0x3e'),_0x574805[_0xd208('0x2b')],_0x574805[_0xd208('0x2c')]);var _0x13f073={'method':_0xd208('0x33'),'uri':_0xd208('0x6b')+_0x574805[_0xd208('0x6c')]+_0xd208('0x6d'),'body':{'to':[_0x2a2d62['phone']],'text':_0x2a2d62['body'],'from':_0x574805['phone'],'applicationId':_0x574805[_0xd208('0x6e')]},'headers':{'Authorization':util[_0xd208('0x4d')](_0xd208('0x40'),new Buffer(_0x5da57a)[_0xd208('0x41')]('base64'))},'json':!![]};rp(_0x13f073)[_0xd208('0x18')](function(_0x3ef65f){if(_0x3ef65f['id']){var _0x953f6a={'messageId':_0x3ef65f['id']};return _0x32fdde[_0xd208('0x27')](_0x953f6a);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd208('0x28'),_0xd208('0x6a'),util[_0xd208('0x29')](_0x3ef65f,{'showHidden':![],'depth':null}));}})[_0xd208('0x1a')](function(_0x2c39b1){logger[_0xd208('0x1b')](_0xd208('0x37'),'afterCreate',_0xd208('0x6a'),util['inspect'](_0x2c39b1,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd208('0x37'),_0xd208('0x28'),_0xd208('0x6a'),_0xd208('0x38'));}break;case _0xd208('0x6f'):if(_0x574805[_0xd208('0x59')]){var _0x57c91c={};var _0x4dfa0e={'method':_0xd208('0x33'),'uri':_0xd208('0x70'),'headers':{'Authorization':_0xd208('0x71')+_0x574805[_0xd208('0x59')],'Content-Type':_0xd208('0x54')},'body':{'from':_0x574805[_0xd208('0x22')],'to':_0x2a2d62[_0xd208('0x22')],'text':_0x2a2d62[_0xd208('0xd')]},'json':!![]};return rp(_0x4dfa0e)[_0xd208('0x18')](function(_0x33d74a){if(_0x33d74a[_0xd208('0x72')]==0xca){_0x57c91c['message']=_0x33d74a;var _0x5db513={'method':'POST','uri':_0xd208('0x73'),'headers':{'Authorization':_0xd208('0x71')+_0x574805[_0xd208('0x59')],'Content-Type':_0xd208('0x54')},'body':{'refid':_0x57c91c[_0xd208('0x74')][_0xd208('0x75')]},'json':!![]};return rp(_0x5db513)[_0xd208('0x18')](function(_0x5b61ec){_0x57c91c[_0xd208('0x76')]=_0x5b61ec;var _0x5ae6a1={'messageId':_0x57c91c[_0xd208('0x74')][_0xd208('0x75')],'read':!![]};return _0x32fdde[_0xd208('0x27')](_0x5ae6a1);});}else{return logger[_0xd208('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','intelepeer',util['inspect'](_0x33d74a,{'showHidden':![],'depth':null}));}})['catch'](function(_0xd237c5){return logger[_0xd208('0x1b')](_0xd208('0x37'),'afterCreate',_0xd208('0x6f'),util[_0xd208('0x29')](_0xd237c5,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xd208('0x37'),'afterCreate',_0xd208('0x6f'),_0xd208('0x77'));}break;}}})[_0xd208('0x78')](function(){_0x47db93();});}else{_0x47db93();}}},'charset':_0xd208('0x79'),'collate':_0xd208('0x7a')});};
\ No newline at end of file
index 4a904ea..8f13c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5207=['ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','CreateSmsMessage','SmsMessage','create','body','options','raw','catch','moment','bluebird','randomstring'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x5207,0x1dd));var _0x7520=function(_0xd1c6,_0x1f588f){_0xd1c6=_0xd1c6-0x0;var _0xf10f77=_0x5207[_0xd1c6];return _0xf10f77;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7520('0x0'));var BPromise=require(_0x7520('0x1'));var rs=require(_0x7520('0x2'));var fs=require('fs');var Redis=require(_0x7520('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7520('0x4'))(_0x7520('0x5'));var config=require(_0x7520('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7520('0x7')][_0x7520('0x8')]({'port':0x232a});config[_0x7520('0x9')]=_[_0x7520('0xa')](config['redis'],{'host':_0x7520('0xb'),'port':0x18eb});var socket=require(_0x7520('0xc'))(new Redis(config[_0x7520('0x9')]));require(_0x7520('0xd'))[_0x7520('0xe')](socket);function respondWithRpcPromise(_0x36a578,_0x40102c,_0x5b703c){return new BPromise(function(_0x4252e9,_0x3ae8ab){return client[_0x7520('0xf')](_0x36a578,_0x5b703c)[_0x7520('0x10')](function(_0x2dc7d0){logger['info'](_0x7520('0x11'),_0x40102c,_0x7520('0x12'));logger[_0x7520('0x13')](_0x7520('0x14'),_0x40102c,_0x7520('0x12'),JSON[_0x7520('0x15')](_0x2dc7d0));if(_0x2dc7d0['error']){if(_0x2dc7d0[_0x7520('0x16')]['code']===0x1f4){logger[_0x7520('0x16')](_0x7520('0x11'),_0x40102c,_0x2dc7d0[_0x7520('0x16')]['message']);return _0x3ae8ab(_0x2dc7d0[_0x7520('0x16')][_0x7520('0x17')]);}logger['error'](_0x7520('0x11'),_0x40102c,_0x2dc7d0[_0x7520('0x16')][_0x7520('0x17')]);return _0x4252e9(_0x2dc7d0[_0x7520('0x16')]['message']);}else{logger[_0x7520('0x18')](_0x7520('0x11'),_0x40102c,_0x7520('0x12'));_0x4252e9(_0x2dc7d0['result'][_0x7520('0x17')]);}})['catch'](function(_0x29f488){logger['error'](_0x7520('0x11'),_0x40102c,_0x29f488);_0x3ae8ab(_0x29f488);});});}exports[_0x7520('0x19')]=function(_0x62004e){var _0xc9a0c6=this;return new Promise(function(_0x40f7af,_0x5c6891){return db[_0x7520('0x1a')][_0x7520('0x1b')](_0x62004e[_0x7520('0x1c')],{'raw':_0x62004e[_0x7520('0x1d')]?_0x62004e['options'][_0x7520('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x4e41f1){logger[_0x7520('0x18')](_0x7520('0x19'),_0x62004e);logger['debug'](_0x7520('0x19'),_0x62004e,JSON[_0x7520('0x15')](_0x4e41f1));_0x40f7af(_0x4e41f1);})[_0x7520('0x1f')](function(_0x263c19){logger['error'](_0x7520('0x19'),_0x263c19[_0x7520('0x17')],_0x62004e);_0x5c6891(_0xc9a0c6['error'](0x1f4,_0x263c19[_0x7520('0x17')]));});});};
\ No newline at end of file
+var _0x7881=['then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateSmsMessage','create','body','options','raw','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request'];(function(_0x1e1e40,_0x2154f4){var _0x528ca4=function(_0x236de3){while(--_0x236de3){_0x1e1e40['push'](_0x1e1e40['shift']());}};_0x528ca4(++_0x2154f4);}(_0x7881,0x1cb));var _0x1788=function(_0x59a02f,_0x18809a){_0x59a02f=_0x59a02f-0x0;var _0x17fccf=_0x7881[_0x59a02f];return _0x17fccf;};'use strict';var _=require(_0x1788('0x0'));var util=require(_0x1788('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1788('0x2'));var db=require(_0x1788('0x3'))['db'];var utils=require(_0x1788('0x4'));var logger=require(_0x1788('0x5'))(_0x1788('0x6'));var config=require(_0x1788('0x7'));var jayson=require(_0x1788('0x8'));var client=jayson[_0x1788('0x9')][_0x1788('0xa')]({'port':0x232a});config[_0x1788('0xb')]=_[_0x1788('0xc')](config['redis'],{'host':_0x1788('0xd'),'port':0x18eb});var socket=require(_0x1788('0xe'))(new Redis(config[_0x1788('0xb')]));require('./smsMessage.socket')[_0x1788('0xf')](socket);function respondWithRpcPromise(_0x524022,_0x1e337b,_0x521705){return new BPromise(function(_0x27fa04,_0x57c07d){return client[_0x1788('0x10')](_0x524022,_0x521705)[_0x1788('0x11')](function(_0x59f919){logger['info'](_0x1788('0x12'),_0x1e337b,_0x1788('0x13'));logger[_0x1788('0x14')](_0x1788('0x15'),_0x1e337b,_0x1788('0x13'),JSON[_0x1788('0x16')](_0x59f919));if(_0x59f919[_0x1788('0x17')]){if(_0x59f919['error'][_0x1788('0x18')]===0x1f4){logger[_0x1788('0x17')](_0x1788('0x12'),_0x1e337b,_0x59f919[_0x1788('0x17')][_0x1788('0x19')]);return _0x57c07d(_0x59f919[_0x1788('0x17')][_0x1788('0x19')]);}logger[_0x1788('0x17')](_0x1788('0x12'),_0x1e337b,_0x59f919['error'][_0x1788('0x19')]);return _0x27fa04(_0x59f919['error'][_0x1788('0x19')]);}else{logger[_0x1788('0x1a')](_0x1788('0x12'),_0x1e337b,'request\x20sent');_0x27fa04(_0x59f919[_0x1788('0x1b')]['message']);}})[_0x1788('0x1c')](function(_0x11be4c){logger[_0x1788('0x17')]('SmsMessage,\x20%s,\x20%s',_0x1e337b,_0x11be4c);_0x57c07d(_0x11be4c);});});}exports[_0x1788('0x1d')]=function(_0x39cf1a){var _0x1c9c54=this;return new Promise(function(_0x33689d,_0x1c0fbe){return db['SmsMessage'][_0x1788('0x1e')](_0x39cf1a[_0x1788('0x1f')],{'raw':_0x39cf1a[_0x1788('0x20')]?_0x39cf1a[_0x1788('0x20')][_0x1788('0x21')]===undefined?!![]:![]:!![]})[_0x1788('0x11')](function(_0x3c0aa5){logger[_0x1788('0x1a')](_0x1788('0x1d'),_0x39cf1a);logger[_0x1788('0x14')](_0x1788('0x1d'),_0x39cf1a,JSON[_0x1788('0x16')](_0x3c0aa5));_0x33689d(_0x3c0aa5);})[_0x1788('0x1c')](function(_0xec64e7){logger['error'](_0x1788('0x1d'),_0xec64e7[_0x1788('0x19')],_0x39cf1a);_0x1c0fbe(_0x1c9c54['error'](0x1f4,_0xec64e7[_0x1788('0x19')]));});});};
\ No newline at end of file
index 262e384..d756370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc63=['emit','register','length','smsMessage:','./smsMessage.events','save','remove','update'];(function(_0x314460,_0xd030d0){var _0x3be305=function(_0x1908d6){while(--_0x1908d6){_0x314460['push'](_0x314460['shift']());}};_0x3be305(++_0xd030d0);}(_0xdc63,0x134));var _0x3dc6=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xdc63[_0xfae23b];return _0x200640;};'use strict';var SmsMessageEvents=require(_0x3dc6('0x0'));var events=[_0x3dc6('0x1'),_0x3dc6('0x2'),_0x3dc6('0x3')];function createListener(_0x131a14,_0x374873){return function(_0x2a4bbc){_0x374873[_0x3dc6('0x4')](_0x131a14,_0x2a4bbc);};}function removeListener(_0x5c34f7,_0x28911e){return function(){SmsMessageEvents['removeListener'](_0x5c34f7,_0x28911e);};}exports[_0x3dc6('0x5')]=function(_0x151843){for(var _0x1be05e=0x0,_0x5c99eb=events[_0x3dc6('0x6')];_0x1be05e<_0x5c99eb;_0x1be05e++){var _0x2a5137=events[_0x1be05e];var _0x241a86=createListener(_0x3dc6('0x7')+_0x2a5137,_0x151843);SmsMessageEvents['on'](_0x2a5137,_0x241a86);}};
\ No newline at end of file
+var _0x6d79=['removeListener','register','smsMessage:','./smsMessage.events','save','remove','update','emit'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x6d79,0xab));var _0x96d7=function(_0x27ce39,_0xa52d7a){_0x27ce39=_0x27ce39-0x0;var _0x130d89=_0x6d79[_0x27ce39];return _0x130d89;};'use strict';var SmsMessageEvents=require(_0x96d7('0x0'));var events=[_0x96d7('0x1'),_0x96d7('0x2'),_0x96d7('0x3')];function createListener(_0x1f7719,_0x49086d){return function(_0x3e98df){_0x49086d[_0x96d7('0x4')](_0x1f7719,_0x3e98df);};}function removeListener(_0x5d02ba,_0x185148){return function(){SmsMessageEvents[_0x96d7('0x5')](_0x5d02ba,_0x185148);};}exports[_0x96d7('0x6')]=function(_0x13d8e3){for(var _0x3e02b4=0x0,_0x3ec4d6=events['length'];_0x3e02b4<_0x3ec4d6;_0x3e02b4++){var _0x33ca3f=events[_0x3e02b4];var _0x81c155=createListener(_0x96d7('0x7')+_0x33ca3f,_0x13d8e3);SmsMessageEvents['on'](_0x33ca3f,_0x81c155);}};
\ No newline at end of file
index c4a4b80..25fc9f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc23f=['delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update'];(function(_0x5c2e66,_0x120569){var _0x507463=function(_0xb102fa){while(--_0xb102fa){_0x5c2e66['push'](_0x5c2e66['shift']());}};_0x507463(++_0x120569);}(_0xc23f,0x89));var _0xfc23=function(_0x5e19cc,_0x43c679){_0x5e19cc=_0x5e19cc-0x0;var _0x3f538c=_0xc23f[_0x5e19cc];return _0x3f538c;};'use strict';var multer=require(_0xfc23('0x0'));var util=require(_0xfc23('0x1'));var path=require('path');var timeout=require(_0xfc23('0x2'));var express=require(_0xfc23('0x3'));var router=express[_0xfc23('0x4')]();var fs_extra=require(_0xfc23('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xfc23('0x6'));var config=require(_0xfc23('0x7'));var controller=require(_0xfc23('0x8'));router[_0xfc23('0x9')]('/',auth[_0xfc23('0xa')](),controller[_0xfc23('0xb')]);router[_0xfc23('0x9')](_0xfc23('0xc'),auth['isAuthenticated'](),controller[_0xfc23('0xd')]);router[_0xfc23('0x9')](_0xfc23('0xe'),auth[_0xfc23('0xa')](),controller[_0xfc23('0xf')]);router[_0xfc23('0x9')](_0xfc23('0x10'),auth['isAuthenticated'](),controller[_0xfc23('0x11')]);router[_0xfc23('0x9')](_0xfc23('0x12'),auth['isAuthenticated'](),controller[_0xfc23('0x13')]);router[_0xfc23('0x9')]('/:id/users',auth[_0xfc23('0xa')](),controller[_0xfc23('0x14')]);router[_0xfc23('0x15')]('/',auth[_0xfc23('0xa')](),controller[_0xfc23('0x16')]);router[_0xfc23('0x15')]('/:id/teams',auth[_0xfc23('0xa')](),controller[_0xfc23('0x17')]);router[_0xfc23('0x15')](_0xfc23('0x18'),auth[_0xfc23('0xa')](),controller[_0xfc23('0x19')]);router[_0xfc23('0x1a')]('/:id',auth[_0xfc23('0xa')](),controller[_0xfc23('0x1b')]);router[_0xfc23('0x1c')](_0xfc23('0xe'),auth[_0xfc23('0xa')](),controller[_0xfc23('0x1d')]);router[_0xfc23('0x1c')](_0xfc23('0x12'),auth[_0xfc23('0xa')](),controller[_0xfc23('0x1e')]);router['delete']('/:id/users',auth[_0xfc23('0xa')](),controller[_0xfc23('0x1f')]);module[_0xfc23('0x20')]=router;
\ No newline at end of file
+var _0x05ec=['post','addAgents','put','/:id','update','destroy','delete','removeTeams','removeAgents','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsQueue.controller','get','isAuthenticated','index','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','addTeams'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x05ec,0xea));var _0xc05e=function(_0xd03824,_0x227f4c){_0xd03824=_0xd03824-0x0;var _0x2ccb5c=_0x05ec[_0xd03824];return _0x2ccb5c;};'use strict';var multer=require(_0xc05e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc05e('0x1'));var router=express[_0xc05e('0x2')]();var fs_extra=require(_0xc05e('0x3'));var auth=require(_0xc05e('0x4'));var interaction=require(_0xc05e('0x5'));var config=require('../../config/environment');var controller=require(_0xc05e('0x6'));router[_0xc05e('0x7')]('/',auth[_0xc05e('0x8')](),controller[_0xc05e('0x9')]);router['get']('/describe',auth[_0xc05e('0x8')](),controller['describe']);router[_0xc05e('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xc05e('0xa')]);router[_0xc05e('0x7')](_0xc05e('0xb'),auth[_0xc05e('0x8')](),controller[_0xc05e('0xc')]);router['get'](_0xc05e('0xd'),auth[_0xc05e('0x8')](),controller[_0xc05e('0xe')]);router[_0xc05e('0x7')](_0xc05e('0xf'),auth['isAuthenticated'](),controller[_0xc05e('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/teams',auth[_0xc05e('0x8')](),controller[_0xc05e('0x11')]);router[_0xc05e('0x12')](_0xc05e('0xf'),auth[_0xc05e('0x8')](),controller[_0xc05e('0x13')]);router[_0xc05e('0x14')](_0xc05e('0x15'),auth['isAuthenticated'](),controller[_0xc05e('0x16')]);router['delete'](_0xc05e('0x15'),auth['isAuthenticated'](),controller[_0xc05e('0x17')]);router[_0xc05e('0x18')](_0xc05e('0xd'),auth[_0xc05e('0x8')](),controller[_0xc05e('0x19')]);router['delete'](_0xc05e('0xf'),auth[_0xc05e('0x8')](),controller[_0xc05e('0x1a')]);module[_0xc05e('0x1b')]=router;
\ No newline at end of file
index c6c9457..22a1b18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb3b=['rrmemory','beepall','roundrobin','sequelize','STRING','name','INTEGER','ENUM'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbb3b,0x1bb));var _0xbbb3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbb3b[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xbbb3('0x0'));module['exports']={'name':{'type':Sequelize[_0xbbb3('0x1')],'unique':_0xbbb3('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xbbb3('0x1')]},'timeout':{'type':Sequelize[_0xbbb3('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xbbb3('0x4')](_0xbbb3('0x5'),_0xbbb3('0x6'),_0xbbb3('0x7'))}};
\ No newline at end of file
+var _0xcfd8=['sequelize','STRING','beepall','roundrobin'];(function(_0xd0e84,_0x126b42){var _0x57e202=function(_0x34f3df){while(--_0x34f3df){_0xd0e84['push'](_0xd0e84['shift']());}};_0x57e202(++_0x126b42);}(_0xcfd8,0x1c0));var _0x8cfd=function(_0x5baed9,_0x409757){_0x5baed9=_0x5baed9-0x0;var _0x43aad3=_0xcfd8[_0x5baed9];return _0x43aad3;};'use strict';var Sequelize=require(_0x8cfd('0x0'));module['exports']={'name':{'type':Sequelize[_0x8cfd('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8cfd('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x8cfd('0x2'),_0x8cfd('0x3'))}};
\ No newline at end of file
index 6600809..67622cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cdc=['findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','push','SELECT','every','TeamId','all','union','compact','isEmpty','addAgents','omit','spread','removeAgents','isArray','userSmsQueue:remove','getAgents','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','limit','set','Content-Range','save','update','then','destroy','get','UserProfileResource','name','send','map','SmsQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','show','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsQueues','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserSmsQueue','nolimit','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','createdAt','%s/%s','SIP','updatedAt','getTeams','Team','pick','Agents','online','voicePause','interface','sequelize','transaction','addTeams','each'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0x4cdc,0x13a));var _0xc4cd=function(_0x5cccc0,_0x365500){_0x5cccc0=_0x5cccc0-0x0;var _0x192c41=_0x4cdc[_0x5cccc0];return _0x192c41;};'use strict';var emlformat=require(_0xc4cd('0x0'));var rimraf=require(_0xc4cd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc4cd('0x2'));var moment=require(_0xc4cd('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc4cd('0x4'));var util=require(_0xc4cd('0x5'));var path=require(_0xc4cd('0x6'));var sox=require(_0xc4cd('0x7'));var csv=require(_0xc4cd('0x8'));var ejs=require(_0xc4cd('0x9'));var fs=require('fs');var fs_extra=require(_0xc4cd('0xa'));var _=require(_0xc4cd('0xb'));var squel=require(_0xc4cd('0xc'));var crypto=require('crypto');var jsforce=require(_0xc4cd('0xd'));var deskjs=require(_0xc4cd('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc4cd('0xf'));var Papa=require(_0xc4cd('0x10'));var Redis=require('ioredis');var authService=require(_0xc4cd('0x11'));var qs=require(_0xc4cd('0x12'));var as=require(_0xc4cd('0x13'));var hardwareService=require(_0xc4cd('0x14'));var logger=require('../../config/logger')(_0xc4cd('0x15'));var utils=require(_0xc4cd('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc4cd('0x17'));var db=require(_0xc4cd('0x18'))['db'];config[_0xc4cd('0x19')]=_[_0xc4cd('0x1a')](config['redis'],{'host':_0xc4cd('0x1b'),'port':0x18eb});var socket=require(_0xc4cd('0x1c'))(new Redis(config[_0xc4cd('0x19')]));require(_0xc4cd('0x1d'))[_0xc4cd('0x1e')](socket);function respondWithStatusCode(_0x28c58f,_0x5ae9f8){_0x5ae9f8=_0x5ae9f8||0xcc;return function(_0x288965){if(_0x288965){return _0x28c58f[_0xc4cd('0x1f')](_0x5ae9f8);}return _0x28c58f[_0xc4cd('0x20')](_0x5ae9f8)[_0xc4cd('0x21')]();};}function respondWithResult(_0x3081e7,_0x50637d){_0x50637d=_0x50637d||0xc8;return function(_0x552dd3){if(_0x552dd3){return _0x3081e7[_0xc4cd('0x20')](_0x50637d)[_0xc4cd('0x22')](_0x552dd3);}};}function respondWithFilteredResult(_0x2b48cc,_0x69029c){return function(_0x471d96){if(_0x471d96){var _0xe20e3d=typeof _0x69029c[_0xc4cd('0x23')]==='undefined'&&typeof _0x69029c[_0xc4cd('0x24')]==='undefined';var _0x34ebfd=_0x471d96['count'];var _0x4c806c=_0xe20e3d?0x0:_0x69029c[_0xc4cd('0x23')];var _0x25ce9b=_0xe20e3d?_0x471d96['count']:_0x69029c['offset']+_0x69029c[_0xc4cd('0x24')];var _0x3fab70;if(_0x25ce9b>=_0x34ebfd){_0x25ce9b=_0x34ebfd;_0x3fab70=0xc8;}else{_0x3fab70=0xce;}_0x2b48cc[_0xc4cd('0x20')](_0x3fab70);return _0x2b48cc[_0xc4cd('0x25')](_0xc4cd('0x26'),_0x4c806c+'-'+_0x25ce9b+'/'+_0x34ebfd)[_0xc4cd('0x22')](_0x471d96);}return null;};}function patchUpdates(_0x2e11ce){return function(_0x40730f){try{jsonpatch['apply'](_0x40730f,_0x2e11ce,!![]);}catch(_0x344b4b){return BPromise['reject'](_0x344b4b);}return _0x40730f[_0xc4cd('0x27')]();};}function saveUpdates(_0x3877a0,_0x215346){return function(_0x162a2d){if(_0x162a2d){return _0x162a2d[_0xc4cd('0x28')](_0x3877a0)[_0xc4cd('0x29')](function(_0x4ace9f){return _0x4ace9f;});}return null;};}function removeEntity(_0x231686,_0x4a4912){return function(_0xa6fb6c){if(_0xa6fb6c){return _0xa6fb6c[_0xc4cd('0x2a')]()[_0xc4cd('0x29')](function(){var _0x1422ea=_0xa6fb6c[_0xc4cd('0x2b')]({'plain':!![]});var _0xe33876='SmsQueues';return db[_0xc4cd('0x2c')][_0xc4cd('0x2a')]({'where':{'type':_0xe33876,'resourceId':_0x1422ea['id']}})[_0xc4cd('0x29')](function(){return _0xa6fb6c;});})[_0xc4cd('0x29')](function(){_0x231686[_0xc4cd('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b1037,_0x36e6a6){return function(_0x22f3d0){if(!_0x22f3d0){_0x2b1037[_0xc4cd('0x1f')](0x194);}return _0x22f3d0;};}function handleError(_0x371962,_0xaaee13){_0xaaee13=_0xaaee13||0x1f4;return function(_0x591aa5){logger['error'](_0x591aa5['stack']);if(_0x591aa5[_0xc4cd('0x2d')]){delete _0x591aa5['name'];}_0x371962[_0xc4cd('0x20')](_0xaaee13)[_0xc4cd('0x2e')](_0x591aa5);};}exports['index']=function(_0x31377b,_0x419ac0){var _0x374d59={},_0x48a804={},_0x3c2a36={'count':0x0,'rows':[]};var _0x23b167=_[_0xc4cd('0x2f')](db[_0xc4cd('0x30')][_0xc4cd('0x31')],function(_0x3696bc){return{'name':_0x3696bc[_0xc4cd('0x32')],'type':_0x3696bc[_0xc4cd('0x33')][_0xc4cd('0x34')]};});_0x48a804[_0xc4cd('0x35')]=_['map'](_0x23b167,_0xc4cd('0x2d'));_0x48a804[_0xc4cd('0x36')]=_[_0xc4cd('0x37')](_0x31377b[_0xc4cd('0x36')]);_0x48a804[_0xc4cd('0x38')]=_[_0xc4cd('0x39')](_0x48a804[_0xc4cd('0x35')],_0x48a804[_0xc4cd('0x36')]);_0x374d59[_0xc4cd('0x3a')]=_[_0xc4cd('0x39')](_0x48a804[_0xc4cd('0x35')],qs[_0xc4cd('0x3b')](_0x31377b[_0xc4cd('0x36')][_0xc4cd('0x3b')]));_0x374d59['attributes']=_0x374d59[_0xc4cd('0x3a')][_0xc4cd('0x3c')]?_0x374d59[_0xc4cd('0x3a')]:_0x48a804[_0xc4cd('0x35')];if(!_0x31377b[_0xc4cd('0x36')][_0xc4cd('0x3d')]('nolimit')){_0x374d59[_0xc4cd('0x24')]=qs[_0xc4cd('0x24')](_0x31377b[_0xc4cd('0x36')]['limit']);_0x374d59[_0xc4cd('0x23')]=qs['offset'](_0x31377b[_0xc4cd('0x36')][_0xc4cd('0x23')]);}_0x374d59[_0xc4cd('0x3e')]=qs[_0xc4cd('0x3f')](_0x31377b[_0xc4cd('0x36')][_0xc4cd('0x3f')]);_0x374d59[_0xc4cd('0x40')]=qs[_0xc4cd('0x38')](_['pick'](_0x31377b['query'],_0x48a804[_0xc4cd('0x38')]),_0x23b167);if(_0x31377b['query']['filter']){_0x374d59[_0xc4cd('0x40')]=_[_0xc4cd('0x41')](_0x374d59[_0xc4cd('0x40')],{'$or':_[_0xc4cd('0x2f')](_0x23b167,function(_0x1ebd86){if(_0x1ebd86[_0xc4cd('0x33')]!==_0xc4cd('0x42')){var _0x3bd37f={};_0x3bd37f[_0x1ebd86[_0xc4cd('0x2d')]]={'$like':'%'+_0x31377b[_0xc4cd('0x36')][_0xc4cd('0x43')]+'%'};return _0x3bd37f;}})});}_0x374d59=_[_0xc4cd('0x41')]({},_0x374d59,_0x31377b[_0xc4cd('0x44')]);var _0x25b97c={'where':_0x374d59[_0xc4cd('0x40')]};return db['SmsQueue'][_0xc4cd('0x45')](_0x25b97c)[_0xc4cd('0x29')](function(_0x5ae60e){_0x3c2a36[_0xc4cd('0x45')]=_0x5ae60e;if(_0x31377b[_0xc4cd('0x36')][_0xc4cd('0x46')]){_0x374d59[_0xc4cd('0x47')]=[{'all':!![]}];}return db[_0xc4cd('0x30')][_0xc4cd('0x48')](_0x374d59);})[_0xc4cd('0x29')](function(_0xda9e9){_0x3c2a36[_0xc4cd('0x49')]=_0xda9e9;return _0x3c2a36;})['then'](respondWithFilteredResult(_0x419ac0,_0x374d59))['catch'](handleError(_0x419ac0,null));};exports[_0xc4cd('0x4a')]=function(_0x316de0,_0x2545a4){var _0x2065ae={'raw':!![],'where':{'id':_0x316de0['params']['id']}},_0xc6d778={};_0xc6d778[_0xc4cd('0x35')]=_[_0xc4cd('0x37')](db[_0xc4cd('0x30')][_0xc4cd('0x31')]);_0xc6d778[_0xc4cd('0x36')]=_[_0xc4cd('0x37')](_0x316de0[_0xc4cd('0x36')]);_0xc6d778[_0xc4cd('0x38')]=_[_0xc4cd('0x39')](_0xc6d778[_0xc4cd('0x35')],_0xc6d778[_0xc4cd('0x36')]);_0x2065ae[_0xc4cd('0x3a')]=_[_0xc4cd('0x39')](_0xc6d778[_0xc4cd('0x35')],qs[_0xc4cd('0x3b')](_0x316de0[_0xc4cd('0x36')][_0xc4cd('0x3b')]));_0x2065ae[_0xc4cd('0x3a')]=_0x2065ae[_0xc4cd('0x3a')]['length']?_0x2065ae['attributes']:_0xc6d778[_0xc4cd('0x35')];if(_0x316de0[_0xc4cd('0x36')]['includeAll']){_0x2065ae[_0xc4cd('0x47')]=[{'all':!![]}];}_0x2065ae=_['merge']({},_0x2065ae,_0x316de0[_0xc4cd('0x44')]);return db[_0xc4cd('0x30')][_0xc4cd('0x4b')](_0x2065ae)[_0xc4cd('0x29')](handleEntityNotFound(_0x2545a4,null))[_0xc4cd('0x29')](respondWithResult(_0x2545a4,null))[_0xc4cd('0x4c')](handleError(_0x2545a4,null));};exports['create']=function(_0x54717c,_0x1eb5e5){return db[_0xc4cd('0x30')][_0xc4cd('0x4d')](_0x54717c[_0xc4cd('0x4e')],{})['then'](function(_0x322d85){var _0x15c34b=_0x54717c[_0xc4cd('0x4f')][_0xc4cd('0x2b')]({'plain':!![]});if(!_0x15c34b)throw new Error(_0xc4cd('0x50'));if(_0x15c34b['role']==='user'){var _0x2b5986=_0x322d85[_0xc4cd('0x2b')]({'plain':!![]});var _0x150059=_0xc4cd('0x51');return db['UserProfileSection'][_0xc4cd('0x4b')]({'where':{'name':_0x150059,'userProfileId':_0x15c34b[_0xc4cd('0x52')]},'raw':!![]})[_0xc4cd('0x29')](function(_0x42641b){if(_0x42641b&&_0x42641b['autoAssociation']===0x0){return db[_0xc4cd('0x2c')][_0xc4cd('0x4d')]({'name':_0x2b5986[_0xc4cd('0x2d')],'resourceId':_0x2b5986['id'],'type':_0x42641b[_0xc4cd('0x2d')],'sectionId':_0x42641b['id']},{})[_0xc4cd('0x29')](function(){return _0x322d85;});}else{return _0x322d85;}})[_0xc4cd('0x4c')](function(_0x35b16c){logger[_0xc4cd('0x53')](_0xc4cd('0x54'),_0x35b16c);throw _0x35b16c;});}return _0x322d85;})[_0xc4cd('0x29')](respondWithResult(_0x1eb5e5,0xc9))[_0xc4cd('0x4c')](handleError(_0x1eb5e5,null));};exports[_0xc4cd('0x28')]=function(_0x38893c,_0x913753){if(_0x38893c['body']['id']){delete _0x38893c[_0xc4cd('0x4e')]['id'];}return db['SmsQueue'][_0xc4cd('0x4b')]({'where':{'id':_0x38893c[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](handleEntityNotFound(_0x913753,null))[_0xc4cd('0x29')](saveUpdates(_0x38893c[_0xc4cd('0x4e')],null))[_0xc4cd('0x29')](respondWithResult(_0x913753,null))['catch'](handleError(_0x913753,null));};exports[_0xc4cd('0x2a')]=function(_0x3be1c4,_0x1c8085){return db[_0xc4cd('0x30')][_0xc4cd('0x4b')]({'where':{'id':_0x3be1c4[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](handleEntityNotFound(_0x1c8085,null))[_0xc4cd('0x29')](removeEntity(_0x1c8085,null))[_0xc4cd('0x4c')](handleError(_0x1c8085,null));};exports[_0xc4cd('0x56')]=function(_0x448c5e,_0x132c4f){return db['SmsQueue']['describe']()[_0xc4cd('0x29')](respondWithResult(_0x132c4f,null))[_0xc4cd('0x4c')](handleError(_0x132c4f,null));};exports[_0xc4cd('0x57')]=function(_0x37e865,_0x2d1adc,_0x26fd4b){var _0x37e6d3={'raw':!![],'where':{}},_0x50a9b3={},_0x3b640d;return db['SmsQueue'][_0xc4cd('0x58')]({'where':{'id':_0x37e865[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](handleEntityNotFound(_0x2d1adc,null))[_0xc4cd('0x29')](function(_0x3127b9){if(_0x3127b9){_0x3b640d=_0x3127b9[_0xc4cd('0x2b')]({'plain':!![]});_0x50a9b3[_0xc4cd('0x35')]=_[_0xc4cd('0x37')](db[_0xc4cd('0x59')]['rawAttributes']);_0x50a9b3['query']=_['keys'](_0x37e865[_0xc4cd('0x36')]);_0x50a9b3['filters']=_[_0xc4cd('0x39')](_0x50a9b3[_0xc4cd('0x35')],_0x50a9b3[_0xc4cd('0x36')]);_0x37e6d3['attributes']=_[_0xc4cd('0x39')](_0x50a9b3[_0xc4cd('0x35')],qs['fields'](_0x37e865[_0xc4cd('0x36')][_0xc4cd('0x3b')]));_0x37e6d3[_0xc4cd('0x3a')]=_0x37e6d3[_0xc4cd('0x3a')][_0xc4cd('0x3c')]?_0x37e6d3[_0xc4cd('0x3a')]:_0x50a9b3['model'];if(!_0x37e865[_0xc4cd('0x36')][_0xc4cd('0x3d')](_0xc4cd('0x5a'))){_0x37e6d3[_0xc4cd('0x24')]=qs['limit'](_0x37e865[_0xc4cd('0x36')][_0xc4cd('0x24')]);_0x37e6d3[_0xc4cd('0x23')]=qs[_0xc4cd('0x23')](_0x37e865[_0xc4cd('0x36')]['offset']);}_0x37e6d3['order']=qs[_0xc4cd('0x3f')](_0x37e865[_0xc4cd('0x36')][_0xc4cd('0x3f')]);_0x37e6d3['where']=qs['filters'](_['pick'](_0x37e865[_0xc4cd('0x36')],_0x50a9b3[_0xc4cd('0x38')]));_0x37e6d3[_0xc4cd('0x40')][_0xc4cd('0x5b')]=_0x3127b9['id'];if(_0x37e865[_0xc4cd('0x36')][_0xc4cd('0x43')]){_0x37e6d3[_0xc4cd('0x40')]=_[_0xc4cd('0x41')](_0x37e6d3[_0xc4cd('0x40')],{'$or':_['map'](_0x37e6d3[_0xc4cd('0x3a')],function(_0x5c085a){var _0x526edd={};_0x526edd[_0x5c085a]={'$like':'%'+_0x37e865[_0xc4cd('0x36')][_0xc4cd('0x43')]+'%'};return _0x526edd;})});}_0x37e6d3=_['merge']({},_0x37e6d3,_0x37e865[_0xc4cd('0x44')]);return db[_0xc4cd('0x59')]['findAll'](_0x37e6d3);}})['then'](function(_0xaea5f5){if(_0xaea5f5){return db[_0xc4cd('0x5c')][_0xc4cd('0x5d')]({'where':{'id':_[_0xc4cd('0x2f')](_0xaea5f5,_0xc4cd('0x5e')),'role':_0xc4cd('0x5f')},'attributes':['id',_0xc4cd('0x2d'),_0xc4cd('0x60'),'updatedAt',_0xc4cd('0x61')]});}})[_0xc4cd('0x29')](function(_0x357f85){if(_0x357f85){return{'count':_0x357f85[_0xc4cd('0x45')],'rows':_[_0xc4cd('0x2f')](_0x357f85[_0xc4cd('0x49')],function(_0x5b2d2b){return{'membername':_0x5b2d2b['name'],'UserId':_0x5b2d2b['id'],'queue_name':_0x3b640d[_0xc4cd('0x2d')],'SmsQueueId':_0x3b640d['id'],'interface':util['format'](_0xc4cd('0x62'),_0xc4cd('0x63'),_0x5b2d2b[_0xc4cd('0x2d')]),'penalty':0x0,'paused':_0x5b2d2b[_0xc4cd('0x60')],'createdAt':_0x5b2d2b['createdAt'],'updatedAt':_0x5b2d2b[_0xc4cd('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xc4cd('0x29')](respondWithFilteredResult(_0x2d1adc,_0x37e6d3))['catch'](handleError(_0x2d1adc,null));};exports[_0xc4cd('0x65')]=function(_0x576749,_0x1b7a56,_0x5163c6){var _0x4de20c={};var _0x47fb21={};var _0x259bdb;var _0x25a399;return db[_0xc4cd('0x30')][_0xc4cd('0x58')]({'where':{'id':_0x576749[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](handleEntityNotFound(_0x1b7a56,null))[_0xc4cd('0x29')](function(_0x1a23a2){if(_0x1a23a2){_0x259bdb=_0x1a23a2;_0x47fb21[_0xc4cd('0x35')]=_[_0xc4cd('0x37')](db[_0xc4cd('0x66')][_0xc4cd('0x31')]);_0x47fb21[_0xc4cd('0x36')]=_[_0xc4cd('0x37')](_0x576749[_0xc4cd('0x36')]);_0x47fb21[_0xc4cd('0x38')]=_[_0xc4cd('0x39')](_0x47fb21[_0xc4cd('0x35')],_0x47fb21[_0xc4cd('0x36')]);_0x4de20c[_0xc4cd('0x3a')]=_['intersection'](_0x47fb21[_0xc4cd('0x35')],qs[_0xc4cd('0x3b')](_0x576749['query'][_0xc4cd('0x3b')]));_0x4de20c[_0xc4cd('0x3a')]=_0x4de20c['attributes'][_0xc4cd('0x3c')]?_0x4de20c['attributes']:_0x47fb21[_0xc4cd('0x35')];_0x4de20c[_0xc4cd('0x3e')]=qs[_0xc4cd('0x3f')](_0x576749[_0xc4cd('0x36')]['sort']);_0x4de20c[_0xc4cd('0x40')]=qs[_0xc4cd('0x38')](_[_0xc4cd('0x67')](_0x576749[_0xc4cd('0x36')],_0x47fb21[_0xc4cd('0x38')]));if(_0x576749[_0xc4cd('0x36')][_0xc4cd('0x43')]){_0x4de20c[_0xc4cd('0x40')]=_[_0xc4cd('0x41')](_0x4de20c['where'],{'$or':_[_0xc4cd('0x2f')](_0x4de20c[_0xc4cd('0x3a')],function(_0x2cbb24){var _0x28e20d={};_0x28e20d[_0x2cbb24]={'$like':'%'+_0x576749[_0xc4cd('0x36')][_0xc4cd('0x43')]+'%'};return _0x28e20d;})});}_0x4de20c=_[_0xc4cd('0x41')]({},_0x4de20c,_0x576749[_0xc4cd('0x44')]);return _0x259bdb[_0xc4cd('0x65')](_0x4de20c);}})[_0xc4cd('0x29')](function(_0x594a7b){if(_0x594a7b){_0x25a399=_0x594a7b['length'];if(!_0x576749[_0xc4cd('0x36')][_0xc4cd('0x3d')]('nolimit')){_0x4de20c[_0xc4cd('0x24')]=qs['limit'](_0x576749[_0xc4cd('0x36')]['limit']);_0x4de20c[_0xc4cd('0x23')]=qs[_0xc4cd('0x23')](_0x576749['query'][_0xc4cd('0x23')]);}return _0x259bdb['getTeams'](_0x4de20c);}})[_0xc4cd('0x29')](function(_0x12df91){if(_0x12df91){return _0x12df91?{'count':_0x25a399,'rows':_0x12df91}:null;}})[_0xc4cd('0x29')](respondWithResult(_0x1b7a56,null))[_0xc4cd('0x4c')](handleError(_0x1b7a56,null));};exports['addTeams']=function(_0x13fb6f,_0x1024a7,_0x5b6041){var _0xfe8986=_0x13fb6f[_0xc4cd('0x4e')]['ids'];return db[_0xc4cd('0x66')][_0xc4cd('0x48')]({'where':{'id':_0xfe8986},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc4cd('0x68'),'attributes':['id',_0xc4cd('0x2d'),_0xc4cd('0x69'),_0xc4cd('0x6a'),_0xc4cd('0x6b')],'raw':!![]}]})[_0xc4cd('0x29')](function(_0x51a1ce){if(_0x51a1ce){var _0x8275a9=_['flatMap'](_0x51a1ce,function(_0x3b5a9e){var _0xe1849d=_0x3b5a9e['get']({'plain':!![]});return _0xe1849d[_0xc4cd('0x68')];});return db[_0xc4cd('0x30')][_0xc4cd('0x4b')]({'where':{'id':_0x13fb6f[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](function(_0xe64610){return db[_0xc4cd('0x6c')][_0xc4cd('0x6d')](function(_0xb30918){return _0xe64610[_0xc4cd('0x6e')](_0xfe8986,{'transaction':_0xb30918})['then'](function(){return BPromise[_0xc4cd('0x6f')](_0x8275a9,function(_0x30024b){return db['UserSmsQueue'][_0xc4cd('0x70')]({'where':{'UserId':_0x30024b['id'],'SmsQueueId':_0x13fb6f[_0xc4cd('0x55')]['id']},'transaction':_0xb30918});});})[_0xc4cd('0x29')](function(){_0x8275a9[_0xc4cd('0x71')](function(_0x48079e){socket[_0xc4cd('0x72')](_0xc4cd('0x73'),{'UserId':_0x48079e['id'],'SmsQueueId':_0xe64610['id']});});});});});}})['then'](respondWithStatusCode(_0x1024a7,null))[_0xc4cd('0x4c')](handleError(_0x1024a7,null));};exports[_0xc4cd('0x74')]=function(_0x2484f8,_0x23a479,_0x3c2fd1){return db['Team'][_0xc4cd('0x48')]({'where':{'id':_0x2484f8[_0xc4cd('0x36')][_0xc4cd('0x75')]},'attributes':['id'],'include':[{'model':db[_0xc4cd('0x5c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xc4cd('0x29')](handleEntityNotFound(_0x23a479,null))[_0xc4cd('0x29')](function(_0x223ae6){var _0x210001=_[_0xc4cd('0x2f')](_0x223ae6,'id');var _0x2280f5=[];var _0x40c69b=[];var _0x227817=squel[_0xc4cd('0x76')]();_0x227817[_0xc4cd('0x77')](_0xc4cd('0x78'))[_0xc4cd('0x79')](_0xc4cd('0x7a'),'tq')[_0xc4cd('0x7b')](_0xc4cd('0x7c'),'ut',_0xc4cd('0x7d'))[_0xc4cd('0x40')](_0xc4cd('0x7e'),_0x2484f8['params']['id']);for(var _0x3f8497=0x0;_0x3f8497<_0x223ae6['length'];_0x3f8497+=0x1){let _0x474ab8=_0x223ae6[_0x3f8497];for(var _0x2977e7=0x0;_0x2977e7<_0x474ab8[_0xc4cd('0x68')][_0xc4cd('0x3c')];_0x2977e7+=0x1){let _0x957c1b=_0x474ab8['Agents'][_0x2977e7];var _0x4b4251=_0x227817['clone']();_0x4b4251[_0xc4cd('0x40')]('ut.UserId\x20=\x20?',_0x957c1b['id']);_0x40c69b[_0xc4cd('0x7f')](db[_0xc4cd('0x6c')]['query'](_0x4b4251['toString'](),{'type':db[_0xc4cd('0x6c')]['QueryTypes'][_0xc4cd('0x80')]})['then'](function(_0x26286){if(_0x26286[_0xc4cd('0x3c')]===0x1){return _0x957c1b['id'];}else{var _0x338137=_[_0xc4cd('0x81')](_[_0xc4cd('0x2f')](_0x26286,_0xc4cd('0x82')),function(_0x4f06f8){return _['includes'](_0x210001,_0x4f06f8);});if(_0x338137){return _0x957c1b['id'];}}}));}}return BPromise[_0xc4cd('0x83')](_0x40c69b)[_0xc4cd('0x29')](function(_0x1fadd7){_0x2280f5=_(_0x2280f5)[_0xc4cd('0x84')](_0x1fadd7)[_0xc4cd('0x85')]()['value']();return db[_0xc4cd('0x30')][_0xc4cd('0x4b')]({'where':{'id':_0x2484f8[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](function(_0x432b23){return db[_0xc4cd('0x6c')]['transaction'](function(_0x16b81e){return _0x432b23[_0xc4cd('0x74')](_0x2484f8['query'][_0xc4cd('0x75')],{'transaction':_0x16b81e})[_0xc4cd('0x29')](function(){if(!_[_0xc4cd('0x86')](_0x2280f5)){return _0x432b23['removeAgents'](_0x2280f5,{'transaction':_0x16b81e});}})[_0xc4cd('0x29')](function(){_0x2280f5[_0xc4cd('0x71')](function(_0x5da578){socket['emit']('userSmsQueue:remove',{'UserId':_0x5da578,'SmsQueueId':_0x432b23['id']});});});});});});})[_0xc4cd('0x29')](respondWithStatusCode(_0x23a479,null))[_0xc4cd('0x4c')](handleError(_0x23a479,null));};exports[_0xc4cd('0x87')]=function(_0x2d04bd,_0x5d4d7c,_0x2bdd5d){return db[_0xc4cd('0x30')][_0xc4cd('0x4b')]({'where':{'id':_0x2d04bd[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](handleEntityNotFound(_0x5d4d7c,null))['then'](function(_0x362abf){if(_0x362abf){return _0x362abf[_0xc4cd('0x87')](_0x2d04bd[_0xc4cd('0x4e')]['ids'],_[_0xc4cd('0x88')](_0x2d04bd[_0xc4cd('0x4e')],['ids','id'])||{})[_0xc4cd('0x89')](function(_0x3aa2a9){for(var _0x110910=0x0;_0x110910<_0x2d04bd['body'][_0xc4cd('0x75')][_0xc4cd('0x3c')];_0x110910+=0x1){socket['emit'](_0xc4cd('0x73'),{'UserId':Number(_0x2d04bd[_0xc4cd('0x4e')]['ids'][_0x110910]),'SmsQueueId':Number(_0x2d04bd[_0xc4cd('0x55')]['id'])});}return _0x3aa2a9;});}})[_0xc4cd('0x29')](respondWithResult(_0x5d4d7c,null))[_0xc4cd('0x4c')](handleError(_0x5d4d7c,null));};exports[_0xc4cd('0x8a')]=function(_0x593b1a,_0x3fd9e4,_0x5e5e09){return db[_0xc4cd('0x30')][_0xc4cd('0x4b')]({'where':{'id':_0x593b1a[_0xc4cd('0x55')]['id']}})['then'](handleEntityNotFound(_0x3fd9e4,null))[_0xc4cd('0x29')](function(_0x3c8f1e){if(_0x3c8f1e){return _0x3c8f1e[_0xc4cd('0x8a')](_0x593b1a[_0xc4cd('0x36')]['ids'])[_0xc4cd('0x29')](function(){if(_[_0xc4cd('0x8b')](_0x593b1a[_0xc4cd('0x36')][_0xc4cd('0x75')])){for(var _0x4068f8=0x0;_0x4068f8<_0x593b1a[_0xc4cd('0x36')][_0xc4cd('0x75')][_0xc4cd('0x3c')];_0x4068f8+=0x1){socket[_0xc4cd('0x72')](_0xc4cd('0x8c'),{'UserId':Number(_0x593b1a[_0xc4cd('0x36')][_0xc4cd('0x75')][_0x4068f8]),'SmsQueueId':Number(_0x593b1a[_0xc4cd('0x55')]['id'])});}}else{socket[_0xc4cd('0x72')](_0xc4cd('0x8c'),{'UserId':Number(_0x593b1a[_0xc4cd('0x36')]['ids']),'SmsQueueId':Number(_0x593b1a[_0xc4cd('0x55')]['id'])});}});}})[_0xc4cd('0x29')](respondWithStatusCode(_0x3fd9e4,null))[_0xc4cd('0x4c')](handleError(_0x3fd9e4,null));};exports[_0xc4cd('0x8d')]=function(_0x42880d,_0x262779,_0x1b21bc){var _0x35da71={};var _0x471a35={};var _0x3e9f81;var _0x4fc86;return db[_0xc4cd('0x30')]['findOne']({'where':{'id':_0x42880d[_0xc4cd('0x55')]['id']}})[_0xc4cd('0x29')](handleEntityNotFound(_0x262779,null))['then'](function(_0x1d295d){if(_0x1d295d){_0x3e9f81=_0x1d295d;_0x471a35['model']=_[_0xc4cd('0x37')](db['User'][_0xc4cd('0x31')]);_0x471a35[_0xc4cd('0x36')]=_[_0xc4cd('0x37')](_0x42880d[_0xc4cd('0x36')]);_0x471a35[_0xc4cd('0x38')]=_[_0xc4cd('0x39')](_0x471a35[_0xc4cd('0x35')],_0x471a35[_0xc4cd('0x36')]);_0x35da71[_0xc4cd('0x3a')]=_[_0xc4cd('0x39')](_0x471a35[_0xc4cd('0x35')],qs['fields'](_0x42880d[_0xc4cd('0x36')][_0xc4cd('0x3b')]));_0x35da71['attributes']=_0x35da71[_0xc4cd('0x3a')][_0xc4cd('0x3c')]?_0x35da71[_0xc4cd('0x3a')]:_0x471a35[_0xc4cd('0x35')];_0x35da71[_0xc4cd('0x3e')]=qs[_0xc4cd('0x3f')](_0x42880d[_0xc4cd('0x36')][_0xc4cd('0x3f')]);_0x35da71[_0xc4cd('0x40')]=qs[_0xc4cd('0x38')](_[_0xc4cd('0x67')](_0x42880d[_0xc4cd('0x36')],_0x471a35[_0xc4cd('0x38')]));if(_0x42880d[_0xc4cd('0x36')][_0xc4cd('0x43')]){_0x35da71[_0xc4cd('0x40')]=_[_0xc4cd('0x41')](_0x35da71['where'],{'$or':_[_0xc4cd('0x2f')](_0x35da71[_0xc4cd('0x3a')],function(_0x22872f){var _0x27897b={};_0x27897b[_0x22872f]={'$like':'%'+_0x42880d[_0xc4cd('0x36')][_0xc4cd('0x43')]+'%'};return _0x27897b;})});}_0x35da71=_[_0xc4cd('0x41')]({},_0x35da71,_0x42880d['options']);return _0x3e9f81[_0xc4cd('0x8d')](_0x35da71);}})[_0xc4cd('0x29')](function(_0x4a7606){if(_0x4a7606){_0x4fc86=_0x4a7606['length'];if(!_0x42880d['query'][_0xc4cd('0x3d')]('nolimit')){_0x35da71[_0xc4cd('0x24')]=qs[_0xc4cd('0x24')](_0x42880d[_0xc4cd('0x36')]['limit']);_0x35da71[_0xc4cd('0x23')]=qs[_0xc4cd('0x23')](_0x42880d['query'][_0xc4cd('0x23')]);}return _0x3e9f81[_0xc4cd('0x8d')](_0x35da71);}})[_0xc4cd('0x29')](function(_0x5f105e){if(_0x5f105e){return _0x5f105e?{'count':_0x4fc86,'rows':_0x5f105e}:null;}})[_0xc4cd('0x29')](respondWithResult(_0x262779,null))[_0xc4cd('0x4c')](handleError(_0x262779,null));};
\ No newline at end of file
+var _0xabc4=['findAll','rows','catch','show','params','keys','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','UserSmsQueue','hasOwnProperty','SmsQueueId','User','findAndCountAll','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','Agents','online','voicePause','flatMap','sequelize','transaction','each','forEach','emit','userSmsQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','QueryTypes','every','TeamId','includes','isEmpty','removeAgents','userSmsQueue:remove','addAgents','isArray','getAgents','findOne','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','json','limit','count','apply','reject','save','update','destroy','then','get','SmsQueues','UserProfileResource','error','name','index','SmsQueue','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','nolimit','offset','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include'];(function(_0x4c3c2e,_0x2855f8){var _0x494ea9=function(_0x3e9f47){while(--_0x3e9f47){_0x4c3c2e['push'](_0x4c3c2e['shift']());}};_0x494ea9(++_0x2855f8);}(_0xabc4,0x146));var _0x4abc=function(_0x5a31ad,_0x30d5ec){_0x5a31ad=_0x5a31ad-0x0;var _0x460f7b=_0xabc4[_0x5a31ad];return _0x460f7b;};'use strict';var emlformat=require(_0x4abc('0x0'));var rimraf=require(_0x4abc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4abc('0x2'));var rp=require(_0x4abc('0x3'));var moment=require(_0x4abc('0x4'));var BPromise=require(_0x4abc('0x5'));var Mustache=require('mustache');var util=require(_0x4abc('0x6'));var path=require(_0x4abc('0x7'));var sox=require(_0x4abc('0x8'));var csv=require('to-csv');var ejs=require(_0x4abc('0x9'));var fs=require('fs');var fs_extra=require(_0x4abc('0xa'));var _=require(_0x4abc('0xb'));var squel=require(_0x4abc('0xc'));var crypto=require(_0x4abc('0xd'));var jsforce=require(_0x4abc('0xe'));var deskjs=require(_0x4abc('0xf'));var toCsv=require(_0x4abc('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4abc('0x11'));var authService=require(_0x4abc('0x12'));var qs=require(_0x4abc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4abc('0x14'));var utils=require('../../config/utils');var config=require(_0x4abc('0x15'));var licenseUtil=require(_0x4abc('0x16'));var db=require('../../mysqldb')['db'];config[_0x4abc('0x17')]=_[_0x4abc('0x18')](config['redis'],{'host':_0x4abc('0x19'),'port':0x18eb});var socket=require(_0x4abc('0x1a'))(new Redis(config[_0x4abc('0x17')]));require('./smsQueue.socket')[_0x4abc('0x1b')](socket);function respondWithStatusCode(_0x412cdd,_0x34c744){_0x34c744=_0x34c744||0xcc;return function(_0x52dd0b){if(_0x52dd0b){return _0x412cdd[_0x4abc('0x1c')](_0x34c744);}return _0x412cdd['status'](_0x34c744)[_0x4abc('0x1d')]();};}function respondWithResult(_0x3ce8ea,_0x27d4d3){_0x27d4d3=_0x27d4d3||0xc8;return function(_0x1cd6c5){if(_0x1cd6c5){return _0x3ce8ea[_0x4abc('0x1e')](_0x27d4d3)[_0x4abc('0x1f')](_0x1cd6c5);}};}function respondWithFilteredResult(_0x564172,_0x5f1740){return function(_0x5431c8){if(_0x5431c8){var _0x595a35=typeof _0x5f1740['offset']==='undefined'&&typeof _0x5f1740[_0x4abc('0x20')]==='undefined';var _0x5db0b4=_0x5431c8[_0x4abc('0x21')];var _0x2ec9c8=_0x595a35?0x0:_0x5f1740['offset'];var _0x501535=_0x595a35?_0x5431c8['count']:_0x5f1740['offset']+_0x5f1740['limit'];var _0x5cfe86;if(_0x501535>=_0x5db0b4){_0x501535=_0x5db0b4;_0x5cfe86=0xc8;}else{_0x5cfe86=0xce;}_0x564172[_0x4abc('0x1e')](_0x5cfe86);return _0x564172['set']('Content-Range',_0x2ec9c8+'-'+_0x501535+'/'+_0x5db0b4)[_0x4abc('0x1f')](_0x5431c8);}return null;};}function patchUpdates(_0x3e12f1){return function(_0x1b7fb5){try{jsonpatch[_0x4abc('0x22')](_0x1b7fb5,_0x3e12f1,!![]);}catch(_0x165b84){return BPromise[_0x4abc('0x23')](_0x165b84);}return _0x1b7fb5[_0x4abc('0x24')]();};}function saveUpdates(_0xe81761,_0x60e2c9){return function(_0x3b9ae7){if(_0x3b9ae7){return _0x3b9ae7[_0x4abc('0x25')](_0xe81761)['then'](function(_0xd494e1){return _0xd494e1;});}return null;};}function removeEntity(_0x38ef1a,_0x1fa4ac){return function(_0x3626be){if(_0x3626be){return _0x3626be[_0x4abc('0x26')]()[_0x4abc('0x27')](function(){var _0x323268=_0x3626be[_0x4abc('0x28')]({'plain':!![]});var _0x704862=_0x4abc('0x29');return db[_0x4abc('0x2a')][_0x4abc('0x26')]({'where':{'type':_0x704862,'resourceId':_0x323268['id']}})['then'](function(){return _0x3626be;});})['then'](function(){_0x38ef1a[_0x4abc('0x1e')](0xcc)[_0x4abc('0x1d')]();});}};}function handleEntityNotFound(_0xa95159,_0x2bb99e){return function(_0x4b40b4){if(!_0x4b40b4){_0xa95159[_0x4abc('0x1c')](0x194);}return _0x4b40b4;};}function handleError(_0xe4e137,_0x184f3f){_0x184f3f=_0x184f3f||0x1f4;return function(_0xeb1a75){logger[_0x4abc('0x2b')](_0xeb1a75['stack']);if(_0xeb1a75[_0x4abc('0x2c')]){delete _0xeb1a75[_0x4abc('0x2c')];}_0xe4e137[_0x4abc('0x1e')](_0x184f3f)['send'](_0xeb1a75);};}exports[_0x4abc('0x2d')]=function(_0x43e0b0,_0x2c15e9){var _0x11047f={},_0x527005={},_0x404788={'count':0x0,'rows':[]};var _0x39ab5d=_['map'](db[_0x4abc('0x2e')][_0x4abc('0x2f')],function(_0x326cb0){return{'name':_0x326cb0[_0x4abc('0x30')],'type':_0x326cb0[_0x4abc('0x31')]['key']};});_0x527005[_0x4abc('0x32')]=_['map'](_0x39ab5d,_0x4abc('0x2c'));_0x527005[_0x4abc('0x33')]=_['keys'](_0x43e0b0['query']);_0x527005[_0x4abc('0x34')]=_[_0x4abc('0x35')](_0x527005['model'],_0x527005[_0x4abc('0x33')]);_0x11047f['attributes']=_[_0x4abc('0x35')](_0x527005[_0x4abc('0x32')],qs[_0x4abc('0x36')](_0x43e0b0[_0x4abc('0x33')]['fields']));_0x11047f[_0x4abc('0x37')]=_0x11047f[_0x4abc('0x37')][_0x4abc('0x38')]?_0x11047f[_0x4abc('0x37')]:_0x527005[_0x4abc('0x32')];if(!_0x43e0b0['query']['hasOwnProperty'](_0x4abc('0x39'))){_0x11047f[_0x4abc('0x20')]=qs[_0x4abc('0x20')](_0x43e0b0[_0x4abc('0x33')][_0x4abc('0x20')]);_0x11047f[_0x4abc('0x3a')]=qs[_0x4abc('0x3a')](_0x43e0b0[_0x4abc('0x33')][_0x4abc('0x3a')]);}_0x11047f[_0x4abc('0x3b')]=qs[_0x4abc('0x3c')](_0x43e0b0['query'][_0x4abc('0x3c')]);_0x11047f[_0x4abc('0x3d')]=qs['filters'](_[_0x4abc('0x3e')](_0x43e0b0[_0x4abc('0x33')],_0x527005[_0x4abc('0x34')]),_0x39ab5d);if(_0x43e0b0['query'][_0x4abc('0x3f')]){_0x11047f[_0x4abc('0x3d')]=_[_0x4abc('0x40')](_0x11047f[_0x4abc('0x3d')],{'$or':_[_0x4abc('0x41')](_0x39ab5d,function(_0x25ab2f){if(_0x25ab2f[_0x4abc('0x31')]!==_0x4abc('0x42')){var _0x1a5eae={};_0x1a5eae[_0x25ab2f[_0x4abc('0x2c')]]={'$like':'%'+_0x43e0b0[_0x4abc('0x33')][_0x4abc('0x3f')]+'%'};return _0x1a5eae;}})});}_0x11047f=_[_0x4abc('0x40')]({},_0x11047f,_0x43e0b0[_0x4abc('0x43')]);var _0x5a0173={'where':_0x11047f[_0x4abc('0x3d')]};return db['SmsQueue'][_0x4abc('0x21')](_0x5a0173)['then'](function(_0x2f71c6){_0x404788[_0x4abc('0x21')]=_0x2f71c6;if(_0x43e0b0[_0x4abc('0x33')][_0x4abc('0x44')]){_0x11047f[_0x4abc('0x45')]=[{'all':!![]}];}return db[_0x4abc('0x2e')][_0x4abc('0x46')](_0x11047f);})[_0x4abc('0x27')](function(_0x4497d8){_0x404788[_0x4abc('0x47')]=_0x4497d8;return _0x404788;})['then'](respondWithFilteredResult(_0x2c15e9,_0x11047f))[_0x4abc('0x48')](handleError(_0x2c15e9,null));};exports[_0x4abc('0x49')]=function(_0x23d91d,_0x161b40){var _0x1b0ff2={'raw':!![],'where':{'id':_0x23d91d[_0x4abc('0x4a')]['id']}},_0x8d27d1={};_0x8d27d1['model']=_[_0x4abc('0x4b')](db[_0x4abc('0x2e')]['rawAttributes']);_0x8d27d1['query']=_['keys'](_0x23d91d[_0x4abc('0x33')]);_0x8d27d1[_0x4abc('0x34')]=_[_0x4abc('0x35')](_0x8d27d1[_0x4abc('0x32')],_0x8d27d1[_0x4abc('0x33')]);_0x1b0ff2[_0x4abc('0x37')]=_['intersection'](_0x8d27d1[_0x4abc('0x32')],qs[_0x4abc('0x36')](_0x23d91d[_0x4abc('0x33')][_0x4abc('0x36')]));_0x1b0ff2[_0x4abc('0x37')]=_0x1b0ff2[_0x4abc('0x37')]['length']?_0x1b0ff2[_0x4abc('0x37')]:_0x8d27d1[_0x4abc('0x32')];if(_0x23d91d[_0x4abc('0x33')][_0x4abc('0x44')]){_0x1b0ff2[_0x4abc('0x45')]=[{'all':!![]}];}_0x1b0ff2=_[_0x4abc('0x40')]({},_0x1b0ff2,_0x23d91d['options']);return db[_0x4abc('0x2e')][_0x4abc('0x4c')](_0x1b0ff2)['then'](handleEntityNotFound(_0x161b40,null))['then'](respondWithResult(_0x161b40,null))['catch'](handleError(_0x161b40,null));};exports['create']=function(_0x35fe7f,_0x2a2eee){return db['SmsQueue']['create'](_0x35fe7f[_0x4abc('0x4d')],{})[_0x4abc('0x27')](function(_0x171899){var _0x7c92b7=_0x35fe7f[_0x4abc('0x4e')][_0x4abc('0x28')]({'plain':!![]});if(!_0x7c92b7)throw new Error(_0x4abc('0x4f'));if(_0x7c92b7[_0x4abc('0x50')]===_0x4abc('0x4e')){var _0x58e08e=_0x171899[_0x4abc('0x28')]({'plain':!![]});var _0x477c48=_0x4abc('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x477c48,'userProfileId':_0x7c92b7[_0x4abc('0x51')]},'raw':!![]})[_0x4abc('0x27')](function(_0x110794){if(_0x110794&&_0x110794[_0x4abc('0x52')]===0x0){return db['UserProfileResource'][_0x4abc('0x53')]({'name':_0x58e08e[_0x4abc('0x2c')],'resourceId':_0x58e08e['id'],'type':_0x110794[_0x4abc('0x2c')],'sectionId':_0x110794['id']},{})['then'](function(){return _0x171899;});}else{return _0x171899;}})[_0x4abc('0x48')](function(_0x4e4708){logger[_0x4abc('0x2b')](_0x4abc('0x54'),_0x4e4708);throw _0x4e4708;});}return _0x171899;})[_0x4abc('0x27')](respondWithResult(_0x2a2eee,0xc9))['catch'](handleError(_0x2a2eee,null));};exports['update']=function(_0x3ee6e7,_0x1c8c77){if(_0x3ee6e7[_0x4abc('0x4d')]['id']){delete _0x3ee6e7[_0x4abc('0x4d')]['id'];}return db['SmsQueue'][_0x4abc('0x4c')]({'where':{'id':_0x3ee6e7['params']['id']}})[_0x4abc('0x27')](handleEntityNotFound(_0x1c8c77,null))['then'](saveUpdates(_0x3ee6e7['body'],null))['then'](respondWithResult(_0x1c8c77,null))[_0x4abc('0x48')](handleError(_0x1c8c77,null));};exports[_0x4abc('0x26')]=function(_0x27087b,_0x3365a0){return db['SmsQueue'][_0x4abc('0x4c')]({'where':{'id':_0x27087b[_0x4abc('0x4a')]['id']}})[_0x4abc('0x27')](handleEntityNotFound(_0x3365a0,null))[_0x4abc('0x27')](removeEntity(_0x3365a0,null))['catch'](handleError(_0x3365a0,null));};exports[_0x4abc('0x55')]=function(_0x6879f6,_0x4180ca){return db[_0x4abc('0x2e')]['describe']()['then'](respondWithResult(_0x4180ca,null))[_0x4abc('0x48')](handleError(_0x4180ca,null));};exports['getMembers']=function(_0x35615f,_0x38ce32,_0x467311){var _0x17b7e2={'raw':!![],'where':{}},_0x409aea={},_0x3d634c;return db[_0x4abc('0x2e')]['findOne']({'where':{'id':_0x35615f['params']['id']}})[_0x4abc('0x27')](handleEntityNotFound(_0x38ce32,null))[_0x4abc('0x27')](function(_0x36bec2){if(_0x36bec2){_0x3d634c=_0x36bec2[_0x4abc('0x28')]({'plain':!![]});_0x409aea['model']=_[_0x4abc('0x4b')](db[_0x4abc('0x56')][_0x4abc('0x2f')]);_0x409aea['query']=_[_0x4abc('0x4b')](_0x35615f[_0x4abc('0x33')]);_0x409aea['filters']=_['intersection'](_0x409aea[_0x4abc('0x32')],_0x409aea[_0x4abc('0x33')]);_0x17b7e2[_0x4abc('0x37')]=_[_0x4abc('0x35')](_0x409aea[_0x4abc('0x32')],qs['fields'](_0x35615f['query'][_0x4abc('0x36')]));_0x17b7e2[_0x4abc('0x37')]=_0x17b7e2[_0x4abc('0x37')][_0x4abc('0x38')]?_0x17b7e2[_0x4abc('0x37')]:_0x409aea['model'];if(!_0x35615f[_0x4abc('0x33')][_0x4abc('0x57')](_0x4abc('0x39'))){_0x17b7e2[_0x4abc('0x20')]=qs[_0x4abc('0x20')](_0x35615f[_0x4abc('0x33')]['limit']);_0x17b7e2['offset']=qs['offset'](_0x35615f['query'][_0x4abc('0x3a')]);}_0x17b7e2[_0x4abc('0x3b')]=qs[_0x4abc('0x3c')](_0x35615f[_0x4abc('0x33')][_0x4abc('0x3c')]);_0x17b7e2[_0x4abc('0x3d')]=qs['filters'](_[_0x4abc('0x3e')](_0x35615f['query'],_0x409aea[_0x4abc('0x34')]));_0x17b7e2['where'][_0x4abc('0x58')]=_0x36bec2['id'];if(_0x35615f[_0x4abc('0x33')][_0x4abc('0x3f')]){_0x17b7e2['where']=_[_0x4abc('0x40')](_0x17b7e2[_0x4abc('0x3d')],{'$or':_[_0x4abc('0x41')](_0x17b7e2[_0x4abc('0x37')],function(_0x5b7449){var _0x5aa8b5={};_0x5aa8b5[_0x5b7449]={'$like':'%'+_0x35615f['query']['filter']+'%'};return _0x5aa8b5;})});}_0x17b7e2=_[_0x4abc('0x40')]({},_0x17b7e2,_0x35615f['options']);return db['UserSmsQueue'][_0x4abc('0x46')](_0x17b7e2);}})[_0x4abc('0x27')](function(_0x32c9ea){if(_0x32c9ea){return db[_0x4abc('0x59')][_0x4abc('0x5a')]({'where':{'id':_['map'](_0x32c9ea,'UserId'),'role':'agent'},'attributes':['id',_0x4abc('0x2c'),'smsPause',_0x4abc('0x5b'),_0x4abc('0x5c')]});}})[_0x4abc('0x27')](function(_0x4a0c0a){if(_0x4a0c0a){return{'count':_0x4a0c0a[_0x4abc('0x21')],'rows':_['map'](_0x4a0c0a[_0x4abc('0x47')],function(_0x38df8a){return{'membername':_0x38df8a['name'],'UserId':_0x38df8a['id'],'queue_name':_0x3d634c[_0x4abc('0x2c')],'SmsQueueId':_0x3d634c['id'],'interface':util[_0x4abc('0x5d')](_0x4abc('0x5e'),_0x4abc('0x5f'),_0x38df8a['name']),'penalty':0x0,'paused':_0x38df8a['smsPause'],'createdAt':_0x38df8a[_0x4abc('0x5c')],'updatedAt':_0x38df8a[_0x4abc('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x38ce32,_0x17b7e2))[_0x4abc('0x48')](handleError(_0x38ce32,null));};exports[_0x4abc('0x60')]=function(_0xe4efb8,_0x55b169,_0x129926){var _0x1864e9={};var _0x16f5be={};var _0x4c5b36;var _0x243043;return db['SmsQueue']['findOne']({'where':{'id':_0xe4efb8['params']['id']}})['then'](handleEntityNotFound(_0x55b169,null))[_0x4abc('0x27')](function(_0x486ed6){if(_0x486ed6){_0x4c5b36=_0x486ed6;_0x16f5be[_0x4abc('0x32')]=_[_0x4abc('0x4b')](db[_0x4abc('0x61')][_0x4abc('0x2f')]);_0x16f5be[_0x4abc('0x33')]=_[_0x4abc('0x4b')](_0xe4efb8[_0x4abc('0x33')]);_0x16f5be['filters']=_[_0x4abc('0x35')](_0x16f5be[_0x4abc('0x32')],_0x16f5be[_0x4abc('0x33')]);_0x1864e9[_0x4abc('0x37')]=_['intersection'](_0x16f5be[_0x4abc('0x32')],qs[_0x4abc('0x36')](_0xe4efb8[_0x4abc('0x33')][_0x4abc('0x36')]));_0x1864e9[_0x4abc('0x37')]=_0x1864e9[_0x4abc('0x37')][_0x4abc('0x38')]?_0x1864e9[_0x4abc('0x37')]:_0x16f5be[_0x4abc('0x32')];_0x1864e9[_0x4abc('0x3b')]=qs['sort'](_0xe4efb8['query'][_0x4abc('0x3c')]);_0x1864e9[_0x4abc('0x3d')]=qs[_0x4abc('0x34')](_[_0x4abc('0x3e')](_0xe4efb8[_0x4abc('0x33')],_0x16f5be['filters']));if(_0xe4efb8[_0x4abc('0x33')]['filter']){_0x1864e9['where']=_[_0x4abc('0x40')](_0x1864e9[_0x4abc('0x3d')],{'$or':_[_0x4abc('0x41')](_0x1864e9[_0x4abc('0x37')],function(_0x2ba3b2){var _0x4a3ca5={};_0x4a3ca5[_0x2ba3b2]={'$like':'%'+_0xe4efb8[_0x4abc('0x33')][_0x4abc('0x3f')]+'%'};return _0x4a3ca5;})});}_0x1864e9=_[_0x4abc('0x40')]({},_0x1864e9,_0xe4efb8[_0x4abc('0x43')]);return _0x4c5b36[_0x4abc('0x60')](_0x1864e9);}})[_0x4abc('0x27')](function(_0x42582b){if(_0x42582b){_0x243043=_0x42582b[_0x4abc('0x38')];if(!_0xe4efb8['query'][_0x4abc('0x57')](_0x4abc('0x39'))){_0x1864e9[_0x4abc('0x20')]=qs[_0x4abc('0x20')](_0xe4efb8[_0x4abc('0x33')]['limit']);_0x1864e9[_0x4abc('0x3a')]=qs['offset'](_0xe4efb8[_0x4abc('0x33')][_0x4abc('0x3a')]);}return _0x4c5b36[_0x4abc('0x60')](_0x1864e9);}})[_0x4abc('0x27')](function(_0x4aec46){if(_0x4aec46){return _0x4aec46?{'count':_0x243043,'rows':_0x4aec46}:null;}})[_0x4abc('0x27')](respondWithResult(_0x55b169,null))[_0x4abc('0x48')](handleError(_0x55b169,null));};exports[_0x4abc('0x62')]=function(_0x57f66b,_0x53e555,_0x574e5d){var _0x33f97f=_0x57f66b[_0x4abc('0x4d')]['ids'];return db['Team'][_0x4abc('0x46')]({'where':{'id':_0x33f97f},'attributes':['id'],'include':[{'model':db[_0x4abc('0x59')],'as':_0x4abc('0x63'),'attributes':['id','name',_0x4abc('0x64'),_0x4abc('0x65'),'interface'],'raw':!![]}]})[_0x4abc('0x27')](function(_0x570a00){if(_0x570a00){var _0x42b3c9=_[_0x4abc('0x66')](_0x570a00,function(_0x213937){var _0xfd57c9=_0x213937[_0x4abc('0x28')]({'plain':!![]});return _0xfd57c9[_0x4abc('0x63')];});return db[_0x4abc('0x2e')][_0x4abc('0x4c')]({'where':{'id':_0x57f66b[_0x4abc('0x4a')]['id']}})[_0x4abc('0x27')](function(_0x4bf3e4){return db[_0x4abc('0x67')][_0x4abc('0x68')](function(_0x23f2bb){return _0x4bf3e4[_0x4abc('0x62')](_0x33f97f,{'transaction':_0x23f2bb})[_0x4abc('0x27')](function(){return BPromise[_0x4abc('0x69')](_0x42b3c9,function(_0x4fcf19){return db[_0x4abc('0x56')]['findOrCreate']({'where':{'UserId':_0x4fcf19['id'],'SmsQueueId':_0x57f66b['params']['id']},'transaction':_0x23f2bb});});})['then'](function(){_0x42b3c9[_0x4abc('0x6a')](function(_0x4a5f92){socket[_0x4abc('0x6b')](_0x4abc('0x6c'),{'UserId':_0x4a5f92['id'],'SmsQueueId':_0x4bf3e4['id']});});});});});}})[_0x4abc('0x27')](respondWithStatusCode(_0x53e555,null))['catch'](handleError(_0x53e555,null));};exports[_0x4abc('0x6d')]=function(_0x42ce14,_0x5f42a1,_0x515e27){return db[_0x4abc('0x61')][_0x4abc('0x46')]({'where':{'id':_0x42ce14[_0x4abc('0x33')][_0x4abc('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x4abc('0x59')],'as':_0x4abc('0x63'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5f42a1,null))[_0x4abc('0x27')](function(_0x1c732b){var _0x22c257=_[_0x4abc('0x41')](_0x1c732b,'id');var _0x21e1da=[];var _0x11ec69=[];var _0x5197ef=squel[_0x4abc('0x6f')]();_0x5197ef[_0x4abc('0x70')](_0x4abc('0x71'))[_0x4abc('0x72')](_0x4abc('0x73'),'tq')['join'](_0x4abc('0x74'),'ut',_0x4abc('0x75'))[_0x4abc('0x3d')]('SmsQueueId\x20=\x20?',_0x42ce14[_0x4abc('0x4a')]['id']);for(var _0x8a57a6=0x0;_0x8a57a6<_0x1c732b[_0x4abc('0x38')];_0x8a57a6+=0x1){let _0x2517ca=_0x1c732b[_0x8a57a6];for(var _0x45e4eb=0x0;_0x45e4eb<_0x2517ca[_0x4abc('0x63')]['length'];_0x45e4eb+=0x1){let _0x503410=_0x2517ca[_0x4abc('0x63')][_0x45e4eb];var _0x1bdb26=_0x5197ef[_0x4abc('0x76')]();_0x1bdb26[_0x4abc('0x3d')](_0x4abc('0x77'),_0x503410['id']);_0x11ec69[_0x4abc('0x78')](db['sequelize']['query'](_0x1bdb26['toString'](),{'type':db[_0x4abc('0x67')][_0x4abc('0x79')]['SELECT']})[_0x4abc('0x27')](function(_0x5c96dd){if(_0x5c96dd[_0x4abc('0x38')]===0x1){return _0x503410['id'];}else{var _0x4a6279=_[_0x4abc('0x7a')](_['map'](_0x5c96dd,_0x4abc('0x7b')),function(_0x41548c){return _[_0x4abc('0x7c')](_0x22c257,_0x41548c);});if(_0x4a6279){return _0x503410['id'];}}}));}}return BPromise['all'](_0x11ec69)[_0x4abc('0x27')](function(_0x46cbb1){_0x21e1da=_(_0x21e1da)['union'](_0x46cbb1)['compact']()['value']();return db[_0x4abc('0x2e')][_0x4abc('0x4c')]({'where':{'id':_0x42ce14[_0x4abc('0x4a')]['id']}})[_0x4abc('0x27')](function(_0x411e2d){return db[_0x4abc('0x67')][_0x4abc('0x68')](function(_0x1f986c){return _0x411e2d[_0x4abc('0x6d')](_0x42ce14[_0x4abc('0x33')][_0x4abc('0x6e')],{'transaction':_0x1f986c})[_0x4abc('0x27')](function(){if(!_[_0x4abc('0x7d')](_0x21e1da)){return _0x411e2d[_0x4abc('0x7e')](_0x21e1da,{'transaction':_0x1f986c});}})[_0x4abc('0x27')](function(){_0x21e1da[_0x4abc('0x6a')](function(_0x407fc9){socket[_0x4abc('0x6b')](_0x4abc('0x7f'),{'UserId':_0x407fc9,'SmsQueueId':_0x411e2d['id']});});});});});});})[_0x4abc('0x27')](respondWithStatusCode(_0x5f42a1,null))[_0x4abc('0x48')](handleError(_0x5f42a1,null));};exports['addAgents']=function(_0xf87dfb,_0x204208,_0x554fa2){return db[_0x4abc('0x2e')][_0x4abc('0x4c')]({'where':{'id':_0xf87dfb[_0x4abc('0x4a')]['id']}})['then'](handleEntityNotFound(_0x204208,null))[_0x4abc('0x27')](function(_0x50faf2){if(_0x50faf2){return _0x50faf2[_0x4abc('0x80')](_0xf87dfb[_0x4abc('0x4d')]['ids'],_['omit'](_0xf87dfb[_0x4abc('0x4d')],['ids','id'])||{})['spread'](function(_0x1fbbcc){for(var _0x408ffb=0x0;_0x408ffb<_0xf87dfb[_0x4abc('0x4d')][_0x4abc('0x6e')][_0x4abc('0x38')];_0x408ffb+=0x1){socket[_0x4abc('0x6b')](_0x4abc('0x6c'),{'UserId':Number(_0xf87dfb['body']['ids'][_0x408ffb]),'SmsQueueId':Number(_0xf87dfb[_0x4abc('0x4a')]['id'])});}return _0x1fbbcc;});}})[_0x4abc('0x27')](respondWithResult(_0x204208,null))[_0x4abc('0x48')](handleError(_0x204208,null));};exports['removeAgents']=function(_0x60a28d,_0x21613b,_0x1e28e6){return db[_0x4abc('0x2e')]['find']({'where':{'id':_0x60a28d[_0x4abc('0x4a')]['id']}})['then'](handleEntityNotFound(_0x21613b,null))[_0x4abc('0x27')](function(_0x53b91e){if(_0x53b91e){return _0x53b91e[_0x4abc('0x7e')](_0x60a28d[_0x4abc('0x33')]['ids'])[_0x4abc('0x27')](function(){if(_[_0x4abc('0x81')](_0x60a28d['query'][_0x4abc('0x6e')])){for(var _0x578314=0x0;_0x578314<_0x60a28d[_0x4abc('0x33')][_0x4abc('0x6e')][_0x4abc('0x38')];_0x578314+=0x1){socket[_0x4abc('0x6b')](_0x4abc('0x7f'),{'UserId':Number(_0x60a28d[_0x4abc('0x33')][_0x4abc('0x6e')][_0x578314]),'SmsQueueId':Number(_0x60a28d[_0x4abc('0x4a')]['id'])});}}else{socket[_0x4abc('0x6b')](_0x4abc('0x7f'),{'UserId':Number(_0x60a28d[_0x4abc('0x33')]['ids']),'SmsQueueId':Number(_0x60a28d[_0x4abc('0x4a')]['id'])});}});}})[_0x4abc('0x27')](respondWithStatusCode(_0x21613b,null))[_0x4abc('0x48')](handleError(_0x21613b,null));};exports[_0x4abc('0x82')]=function(_0x475a22,_0x297efc,_0x5a3adc){var _0x201ee5={};var _0x58306b={};var _0x434517;var _0x5de511;return db[_0x4abc('0x2e')][_0x4abc('0x83')]({'where':{'id':_0x475a22['params']['id']}})[_0x4abc('0x27')](handleEntityNotFound(_0x297efc,null))[_0x4abc('0x27')](function(_0xc83e13){if(_0xc83e13){_0x434517=_0xc83e13;_0x58306b[_0x4abc('0x32')]=_[_0x4abc('0x4b')](db[_0x4abc('0x59')][_0x4abc('0x2f')]);_0x58306b[_0x4abc('0x33')]=_[_0x4abc('0x4b')](_0x475a22['query']);_0x58306b['filters']=_[_0x4abc('0x35')](_0x58306b['model'],_0x58306b['query']);_0x201ee5[_0x4abc('0x37')]=_[_0x4abc('0x35')](_0x58306b[_0x4abc('0x32')],qs[_0x4abc('0x36')](_0x475a22['query'][_0x4abc('0x36')]));_0x201ee5[_0x4abc('0x37')]=_0x201ee5[_0x4abc('0x37')][_0x4abc('0x38')]?_0x201ee5[_0x4abc('0x37')]:_0x58306b[_0x4abc('0x32')];_0x201ee5[_0x4abc('0x3b')]=qs[_0x4abc('0x3c')](_0x475a22['query'][_0x4abc('0x3c')]);_0x201ee5[_0x4abc('0x3d')]=qs[_0x4abc('0x34')](_['pick'](_0x475a22[_0x4abc('0x33')],_0x58306b[_0x4abc('0x34')]));if(_0x475a22['query'][_0x4abc('0x3f')]){_0x201ee5['where']=_[_0x4abc('0x40')](_0x201ee5[_0x4abc('0x3d')],{'$or':_[_0x4abc('0x41')](_0x201ee5[_0x4abc('0x37')],function(_0xf7cd2c){var _0x792e9b={};_0x792e9b[_0xf7cd2c]={'$like':'%'+_0x475a22['query'][_0x4abc('0x3f')]+'%'};return _0x792e9b;})});}_0x201ee5=_[_0x4abc('0x40')]({},_0x201ee5,_0x475a22[_0x4abc('0x43')]);return _0x434517[_0x4abc('0x82')](_0x201ee5);}})[_0x4abc('0x27')](function(_0x530098){if(_0x530098){_0x5de511=_0x530098[_0x4abc('0x38')];if(!_0x475a22[_0x4abc('0x33')][_0x4abc('0x57')](_0x4abc('0x39'))){_0x201ee5['limit']=qs['limit'](_0x475a22[_0x4abc('0x33')][_0x4abc('0x20')]);_0x201ee5['offset']=qs[_0x4abc('0x3a')](_0x475a22[_0x4abc('0x33')]['offset']);}return _0x434517[_0x4abc('0x82')](_0x201ee5);}})[_0x4abc('0x27')](function(_0xd9748){if(_0xd9748){return _0xd9748?{'count':_0x5de511,'rows':_0xd9748}:null;}})[_0x4abc('0x27')](respondWithResult(_0x297efc,null))[_0x4abc('0x48')](handleError(_0x297efc,null));};
\ No newline at end of file
index 6278262..ff59b89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3447=['SmsQueue','save','update','emit','exports','../../mysqldb'];(function(_0x8c79c7,_0x4c4645){var _0x143d0e=function(_0xef5dfa){while(--_0xef5dfa){_0x8c79c7['push'](_0x8c79c7['shift']());}};_0x143d0e(++_0x4c4645);}(_0x3447,0x17f));var _0x7344=function(_0x2cc569,_0x4e9568){_0x2cc569=_0x2cc569-0x0;var _0x1bfc2e=_0x3447[_0x2cc569];return _0x1bfc2e;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x7344('0x0'))['db'][_0x7344('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7344('0x2'),'afterUpdate':_0x7344('0x3'),'afterDestroy':'remove'};function emitEvent(_0x20fed2){return function(_0x37c731,_0x3c1f36,_0x1af299){SmsQueueEvents[_0x7344('0x4')](_0x20fed2+':'+_0x37c731['id'],_0x37c731);SmsQueueEvents[_0x7344('0x4')](_0x20fed2,_0x37c731);_0x1af299(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x7344('0x5')]=SmsQueueEvents;
\ No newline at end of file
+var _0x0100=['remove','emit','hasOwnProperty','hook','exports','events','SmsQueue','setMaxListeners','update'];(function(_0x3a0bc9,_0x1df61c){var _0x5cccc2=function(_0x5c2507){while(--_0x5c2507){_0x3a0bc9['push'](_0x3a0bc9['shift']());}};_0x5cccc2(++_0x1df61c);}(_0x0100,0x7a));var _0x0010=function(_0x10e73e,_0x1f6b20){_0x10e73e=_0x10e73e-0x0;var _0x1ddf27=_0x0100[_0x10e73e];return _0x1ddf27;};'use strict';var EventEmitter=require(_0x0010('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0x0010('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x0010('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0010('0x3'),'afterDestroy':_0x0010('0x4')};function emitEvent(_0x59bf73){return function(_0x273c14,_0x39cbcb,_0x102652){SmsQueueEvents[_0x0010('0x5')](_0x59bf73+':'+_0x273c14['id'],_0x273c14);SmsQueueEvents['emit'](_0x59bf73,_0x273c14);_0x102652(null);};}for(var e in events){if(events[_0x0010('0x6')](e)){var event=events[e];SmsQueue[_0x0010('0x7')](e,emitEvent(event));}}module[_0x0010('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 7168aac..bfcabad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa569=['rimraf','../../config/environment','./smsQueue.attributes','exports','SmsQueue','sms_queues','util','api','moment','bluebird','request-promise'];(function(_0x19996b,_0x3cafa9){var _0x26eda0=function(_0x12c321){while(--_0x12c321){_0x19996b['push'](_0x19996b['shift']());}};_0x26eda0(++_0x3cafa9);}(_0xa569,0xcc));var _0x9a56=function(_0xc8a11,_0x347a33){_0xc8a11=_0xc8a11-0x0;var _0x55a500=_0xa569[_0xc8a11];return _0x55a500;};'use strict';var _=require('lodash');var util=require(_0x9a56('0x0'));var logger=require('../../config/logger')(_0x9a56('0x1'));var moment=require(_0x9a56('0x2'));var BPromise=require(_0x9a56('0x3'));var rp=require(_0x9a56('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9a56('0x5'));var config=require(_0x9a56('0x6'));var attributes=require(_0x9a56('0x7'));module[_0x9a56('0x8')]=function(_0xdf9f49,_0x5b1d4b){return _0xdf9f49['define'](_0x9a56('0x9'),attributes,{'tableName':_0x9a56('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7d7=['define','SmsQueue','sms_queues','lodash','util','moment','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xd7d7,0x1b3));var _0x7d7d=function(_0x3f62f7,_0x5de0b6){_0x3f62f7=_0x3f62f7-0x0;var _0xaa4904=_0xd7d7[_0x3f62f7];return _0xaa4904;};'use strict';var _=require(_0x7d7d('0x0'));var util=require(_0x7d7d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x7d7d('0x2'));var BPromise=require('bluebird');var rp=require(_0x7d7d('0x3'));var fs=require('fs');var path=require(_0x7d7d('0x4'));var rimraf=require(_0x7d7d('0x5'));var config=require(_0x7d7d('0x6'));var attributes=require(_0x7d7d('0x7'));module[_0x7d7d('0x8')]=function(_0x51d104,_0x436372){return _0x51d104[_0x7d7d('0x9')](_0x7d7d('0xa'),attributes,{'tableName':_0x7d7d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ddf9f33..43c0009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee9=['ShowSmsQueue','lodash','util','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','redis','socket.io-emitter','./smsQueue.socket','register','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SmsQueue','findAll','options','raw','where','attributes','limit','include','model','map','GetSmsQueue'];(function(_0x4ff1ff,_0x2c2872){var _0x9afa87=function(_0x3db17b){while(--_0x3db17b){_0x4ff1ff['push'](_0x4ff1ff['shift']());}};_0x9afa87(++_0x2c2872);}(_0xbee9,0x169));var _0x9bee=function(_0x36c9e6,_0x571620){_0x36c9e6=_0x36c9e6-0x0;var _0x41aa3b=_0xbee9[_0x36c9e6];return _0x41aa3b;};'use strict';var _=require(_0x9bee('0x0'));var util=require(_0x9bee('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9bee('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9bee('0x3'))['db'];var utils=require(_0x9bee('0x4'));var logger=require('../../config/logger')(_0x9bee('0x5'));var config=require('../../config/environment');var jayson=require(_0x9bee('0x6'));var client=jayson['client'][_0x9bee('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9bee('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x9bee('0x9'))(new Redis(config[_0x9bee('0x8')]));require(_0x9bee('0xa'))[_0x9bee('0xb')](socket);function respondWithRpcPromise(_0x1f9eae,_0x4266bc,_0x1aefc9){return new BPromise(function(_0x55fb66,_0x457c32){return client['request'](_0x1f9eae,_0x1aefc9)[_0x9bee('0xc')](function(_0x6d5bfa){logger[_0x9bee('0xd')](_0x9bee('0xe'),_0x4266bc,_0x9bee('0xf'));logger[_0x9bee('0x10')](_0x9bee('0x11'),_0x4266bc,_0x9bee('0xf'),JSON[_0x9bee('0x12')](_0x6d5bfa));if(_0x6d5bfa[_0x9bee('0x13')]){if(_0x6d5bfa[_0x9bee('0x13')][_0x9bee('0x14')]===0x1f4){logger['error'](_0x9bee('0xe'),_0x4266bc,_0x6d5bfa[_0x9bee('0x13')][_0x9bee('0x15')]);return _0x457c32(_0x6d5bfa[_0x9bee('0x13')][_0x9bee('0x15')]);}logger['error'](_0x9bee('0xe'),_0x4266bc,_0x6d5bfa[_0x9bee('0x13')]['message']);return _0x55fb66(_0x6d5bfa[_0x9bee('0x13')][_0x9bee('0x15')]);}else{logger[_0x9bee('0xd')](_0x9bee('0xe'),_0x4266bc,_0x9bee('0xf'));_0x55fb66(_0x6d5bfa[_0x9bee('0x16')][_0x9bee('0x15')]);}})[_0x9bee('0x17')](function(_0x7eb198){logger[_0x9bee('0x13')](_0x9bee('0xe'),_0x4266bc,_0x7eb198);_0x457c32(_0x7eb198);});});}exports['GetSmsQueue']=function(_0x499af0){var _0x4d6679=this;return new Promise(function(_0x4f5045,_0x223c7d){return db[_0x9bee('0x18')][_0x9bee('0x19')]({'raw':_0x499af0[_0x9bee('0x1a')]?_0x499af0[_0x9bee('0x1a')][_0x9bee('0x1b')]===undefined?!![]:![]:!![],'where':_0x499af0[_0x9bee('0x1a')]?_0x499af0[_0x9bee('0x1a')][_0x9bee('0x1c')]||null:null,'attributes':_0x499af0[_0x9bee('0x1a')]?_0x499af0[_0x9bee('0x1a')][_0x9bee('0x1d')]||null:null,'limit':_0x499af0['options']?_0x499af0['options'][_0x9bee('0x1e')]||null:null,'include':_0x499af0[_0x9bee('0x1a')]?_0x499af0[_0x9bee('0x1a')][_0x9bee('0x1f')]?_['map'](_0x499af0[_0x9bee('0x1a')][_0x9bee('0x1f')],function(_0x4934ce){return{'model':db[_0x4934ce[_0x9bee('0x20')]],'as':_0x4934ce['as'],'attributes':_0x4934ce['attributes'],'include':_0x4934ce['include']?_[_0x9bee('0x21')](_0x4934ce[_0x9bee('0x1f')],function(_0x4f102c){return{'model':db[_0x4f102c[_0x9bee('0x20')]],'as':_0x4f102c['as'],'attributes':_0x4f102c['attributes'],'include':_0x4f102c[_0x9bee('0x1f')]?_[_0x9bee('0x21')](_0x4f102c[_0x9bee('0x1f')],function(_0x5d83ff){return{'model':db[_0x5d83ff[_0x9bee('0x20')]],'as':_0x5d83ff['as'],'attributes':_0x5d83ff[_0x9bee('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9bee('0xc')](function(_0x2742c0){logger[_0x9bee('0xd')](_0x9bee('0x22'),_0x499af0);logger[_0x9bee('0x10')](_0x9bee('0x22'),_0x499af0,JSON[_0x9bee('0x12')](_0x2742c0));_0x4f5045(_0x2742c0);})[_0x9bee('0x17')](function(_0xe6f5b6){logger['error']('GetSmsQueue',_0xe6f5b6['message'],_0x499af0);_0x223c7d(_0x4d6679[_0x9bee('0x13')](0x1f4,_0xe6f5b6[_0x9bee('0x15')]));});});};exports['ShowSmsQueue']=function(_0x467caa){var _0x267041=this;return new Promise(function(_0x29b891,_0x4113bb){return db[_0x9bee('0x18')]['find']({'raw':_0x467caa[_0x9bee('0x1a')]?_0x467caa['options'][_0x9bee('0x1b')]===undefined?!![]:![]:!![],'where':_0x467caa['options']?_0x467caa[_0x9bee('0x1a')][_0x9bee('0x1c')]||null:null,'attributes':_0x467caa[_0x9bee('0x1a')]?_0x467caa[_0x9bee('0x1a')][_0x9bee('0x1d')]||null:null,'include':_0x467caa[_0x9bee('0x1a')]?_0x467caa[_0x9bee('0x1a')]['include']?_[_0x9bee('0x21')](_0x467caa[_0x9bee('0x1a')][_0x9bee('0x1f')],function(_0xc125ca){return{'model':db[_0xc125ca[_0x9bee('0x20')]],'as':_0xc125ca['as'],'attributes':_0xc125ca[_0x9bee('0x1d')],'include':_0xc125ca[_0x9bee('0x1f')]?_['map'](_0xc125ca['include'],function(_0x3d884e){return{'model':db[_0x3d884e[_0x9bee('0x20')]],'as':_0x3d884e['as'],'attributes':_0x3d884e[_0x9bee('0x1d')],'include':_0x3d884e[_0x9bee('0x1f')]?_[_0x9bee('0x21')](_0x3d884e[_0x9bee('0x1f')],function(_0xe0227){return{'model':db[_0xe0227[_0x9bee('0x20')]],'as':_0xe0227['as'],'attributes':_0xe0227['attributes']};}):[]};}):[]};}):[]:[]})[_0x9bee('0xc')](function(_0x403d5e){logger['info'](_0x9bee('0x23'),_0x467caa);logger['debug'](_0x9bee('0x23'),_0x467caa,JSON['stringify'](_0x403d5e));_0x29b891(_0x403d5e);})[_0x9bee('0x17')](function(_0x32c793){logger['error'](_0x9bee('0x23'),_0x32c793[_0x9bee('0x15')],_0x467caa);_0x4113bb(_0x267041[_0x9bee('0x13')](0x1f4,_0x32c793[_0x9bee('0x15')]));});});};
\ No newline at end of file
+var _0x7b03=['code','message','result','catch','SmsQueue','options','where','attributes','limit','include','map','model','GetSmsQueue','ShowSmsQueue','find','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./smsQueue.socket','register','then','info','SmsQueue,\x20%s,\x20%s','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4f93ba,_0x6d03bc){var _0x533532=function(_0x3c9b95){while(--_0x3c9b95){_0x4f93ba['push'](_0x4f93ba['shift']());}};_0x533532(++_0x6d03bc);}(_0x7b03,0x150));var _0x37b0=function(_0x396466,_0xe9857b){_0x396466=_0x396466-0x0;var _0x5e9ab4=_0x7b03[_0x396466];return _0x5e9ab4;};'use strict';var _=require(_0x37b0('0x0'));var util=require(_0x37b0('0x1'));var moment=require(_0x37b0('0x2'));var BPromise=require(_0x37b0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x37b0('0x4'));var db=require(_0x37b0('0x5'))['db'];var utils=require(_0x37b0('0x6'));var logger=require(_0x37b0('0x7'))(_0x37b0('0x8'));var config=require(_0x37b0('0x9'));var jayson=require(_0x37b0('0xa'));var client=jayson[_0x37b0('0xb')][_0x37b0('0xc')]({'port':0x232a});config['redis']=_[_0x37b0('0xd')](config[_0x37b0('0xe')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x37b0('0xf'))[_0x37b0('0x10')](socket);function respondWithRpcPromise(_0x25355b,_0x175833,_0x39dd6b){return new BPromise(function(_0x110a58,_0x265841){return client['request'](_0x25355b,_0x39dd6b)[_0x37b0('0x11')](function(_0x19e32f){logger[_0x37b0('0x12')](_0x37b0('0x13'),_0x175833,'request\x20sent');logger['debug'](_0x37b0('0x14'),_0x175833,_0x37b0('0x15'),JSON[_0x37b0('0x16')](_0x19e32f));if(_0x19e32f[_0x37b0('0x17')]){if(_0x19e32f[_0x37b0('0x17')][_0x37b0('0x18')]===0x1f4){logger['error'](_0x37b0('0x13'),_0x175833,_0x19e32f[_0x37b0('0x17')][_0x37b0('0x19')]);return _0x265841(_0x19e32f[_0x37b0('0x17')]['message']);}logger[_0x37b0('0x17')](_0x37b0('0x13'),_0x175833,_0x19e32f[_0x37b0('0x17')][_0x37b0('0x19')]);return _0x110a58(_0x19e32f['error'][_0x37b0('0x19')]);}else{logger[_0x37b0('0x12')](_0x37b0('0x13'),_0x175833,'request\x20sent');_0x110a58(_0x19e32f[_0x37b0('0x1a')][_0x37b0('0x19')]);}})[_0x37b0('0x1b')](function(_0x5cfd1d){logger[_0x37b0('0x17')](_0x37b0('0x13'),_0x175833,_0x5cfd1d);_0x265841(_0x5cfd1d);});});}exports['GetSmsQueue']=function(_0x42969e){var _0x51ac8f=this;return new Promise(function(_0x284603,_0x179eed){return db[_0x37b0('0x1c')]['findAll']({'raw':_0x42969e[_0x37b0('0x1d')]?_0x42969e[_0x37b0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x42969e['options']?_0x42969e['options'][_0x37b0('0x1e')]||null:null,'attributes':_0x42969e['options']?_0x42969e[_0x37b0('0x1d')][_0x37b0('0x1f')]||null:null,'limit':_0x42969e[_0x37b0('0x1d')]?_0x42969e[_0x37b0('0x1d')][_0x37b0('0x20')]||null:null,'include':_0x42969e['options']?_0x42969e[_0x37b0('0x1d')][_0x37b0('0x21')]?_[_0x37b0('0x22')](_0x42969e[_0x37b0('0x1d')][_0x37b0('0x21')],function(_0x5b03ea){return{'model':db[_0x5b03ea[_0x37b0('0x23')]],'as':_0x5b03ea['as'],'attributes':_0x5b03ea['attributes'],'include':_0x5b03ea[_0x37b0('0x21')]?_['map'](_0x5b03ea[_0x37b0('0x21')],function(_0x40f6b2){return{'model':db[_0x40f6b2[_0x37b0('0x23')]],'as':_0x40f6b2['as'],'attributes':_0x40f6b2[_0x37b0('0x1f')],'include':_0x40f6b2[_0x37b0('0x21')]?_['map'](_0x40f6b2['include'],function(_0x3c5159){return{'model':db[_0x3c5159[_0x37b0('0x23')]],'as':_0x3c5159['as'],'attributes':_0x3c5159['attributes']};}):[]};}):[]};}):[]:[]})[_0x37b0('0x11')](function(_0x35847f){logger[_0x37b0('0x12')](_0x37b0('0x24'),_0x42969e);logger['debug'](_0x37b0('0x24'),_0x42969e,JSON[_0x37b0('0x16')](_0x35847f));_0x284603(_0x35847f);})[_0x37b0('0x1b')](function(_0x49ed48){logger[_0x37b0('0x17')](_0x37b0('0x24'),_0x49ed48[_0x37b0('0x19')],_0x42969e);_0x179eed(_0x51ac8f[_0x37b0('0x17')](0x1f4,_0x49ed48[_0x37b0('0x19')]));});});};exports[_0x37b0('0x25')]=function(_0x256d3f){var _0x376eff=this;return new Promise(function(_0x3ff1f3,_0x438458){return db[_0x37b0('0x1c')][_0x37b0('0x26')]({'raw':_0x256d3f[_0x37b0('0x1d')]?_0x256d3f[_0x37b0('0x1d')][_0x37b0('0x27')]===undefined?!![]:![]:!![],'where':_0x256d3f['options']?_0x256d3f[_0x37b0('0x1d')][_0x37b0('0x1e')]||null:null,'attributes':_0x256d3f[_0x37b0('0x1d')]?_0x256d3f[_0x37b0('0x1d')][_0x37b0('0x1f')]||null:null,'include':_0x256d3f[_0x37b0('0x1d')]?_0x256d3f[_0x37b0('0x1d')][_0x37b0('0x21')]?_[_0x37b0('0x22')](_0x256d3f[_0x37b0('0x1d')]['include'],function(_0x287656){return{'model':db[_0x287656[_0x37b0('0x23')]],'as':_0x287656['as'],'attributes':_0x287656[_0x37b0('0x1f')],'include':_0x287656[_0x37b0('0x21')]?_[_0x37b0('0x22')](_0x287656[_0x37b0('0x21')],function(_0x1e8483){return{'model':db[_0x1e8483[_0x37b0('0x23')]],'as':_0x1e8483['as'],'attributes':_0x1e8483['attributes'],'include':_0x1e8483['include']?_[_0x37b0('0x22')](_0x1e8483[_0x37b0('0x21')],function(_0x57a86e){return{'model':db[_0x57a86e['model']],'as':_0x57a86e['as'],'attributes':_0x57a86e[_0x37b0('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x37b0('0x11')](function(_0x3ce487){logger[_0x37b0('0x12')]('ShowSmsQueue',_0x256d3f);logger['debug']('ShowSmsQueue',_0x256d3f,JSON[_0x37b0('0x16')](_0x3ce487));_0x3ff1f3(_0x3ce487);})[_0x37b0('0x1b')](function(_0x41c0b6){logger[_0x37b0('0x17')](_0x37b0('0x25'),_0x41c0b6['message'],_0x256d3f);_0x438458(_0x376eff[_0x37b0('0x17')](0x1f4,_0x41c0b6[_0x37b0('0x19')]));});});};
\ No newline at end of file
index 847b99c..57c1fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb3=['save','remove','update','removeListener','register'];(function(_0x715824,_0x1ff402){var _0x26ecbd=function(_0x54cc8d){while(--_0x54cc8d){_0x715824['push'](_0x715824['shift']());}};_0x26ecbd(++_0x1ff402);}(_0xdbb3,0x64));var _0x3dbb=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0xdbb3[_0x23e7c1];return _0x1add43;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x3dbb('0x0'),_0x3dbb('0x1'),_0x3dbb('0x2')];function createListener(_0x32ba28,_0x11254e){return function(_0x46e5a4){_0x11254e['emit'](_0x32ba28,_0x46e5a4);};}function removeListener(_0x3b20b5,_0x4fdc8c){return function(){SmsQueueEvents[_0x3dbb('0x3')](_0x3b20b5,_0x4fdc8c);};}exports[_0x3dbb('0x4')]=function(_0x5a5e25){for(var _0x46a4f1=0x0,_0x282621=events['length'];_0x46a4f1<_0x282621;_0x46a4f1++){var _0x280e12=events[_0x46a4f1];var _0x4b9653=createListener('smsQueue:'+_0x280e12,_0x5a5e25);SmsQueueEvents['on'](_0x280e12,_0x4b9653);}};
\ No newline at end of file
+var _0x3362=['length','smsQueue:','./smsQueue.events','save','remove','update','emit','removeListener'];(function(_0x3db0ba,_0x2be65c){var _0x2d8e9a=function(_0x780700){while(--_0x780700){_0x3db0ba['push'](_0x3db0ba['shift']());}};_0x2d8e9a(++_0x2be65c);}(_0x3362,0x1d2));var _0x2336=function(_0x1ca352,_0x226cae){_0x1ca352=_0x1ca352-0x0;var _0x33b4b1=_0x3362[_0x1ca352];return _0x33b4b1;};'use strict';var SmsQueueEvents=require(_0x2336('0x0'));var events=[_0x2336('0x1'),_0x2336('0x2'),_0x2336('0x3')];function createListener(_0x45600c,_0x3386f2){return function(_0x1d0ca2){_0x3386f2[_0x2336('0x4')](_0x45600c,_0x1d0ca2);};}function removeListener(_0x2c1708,_0xe4bffd){return function(){SmsQueueEvents[_0x2336('0x5')](_0x2c1708,_0xe4bffd);};}exports['register']=function(_0x5725b6){for(var _0x2ece11=0x0,_0x596df8=events[_0x2336('0x6')];_0x2ece11<_0x596df8;_0x2ece11++){var _0x4723d5=events[_0x2ece11];var _0x55fac4=createListener(_0x2336('0x7')+_0x4723d5,_0x5725b6);SmsQueueEvents['on'](_0x4723d5,_0x55fac4);}};
\ No newline at end of file
index 9908203..22d013f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a08=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','describe','/:id','create','put','delete','exports','multer','util'];(function(_0x2d0e96,_0x61352d){var _0x4905f5=function(_0x2cb21c){while(--_0x2cb21c){_0x2d0e96['push'](_0x2d0e96['shift']());}};_0x4905f5(++_0x61352d);}(_0x7a08,0x11e));var _0x87a0=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x7a08[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require(_0x87a0('0x0'));var util=require(_0x87a0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x87a0('0x2'));var router=express[_0x87a0('0x3')]();var fs_extra=require(_0x87a0('0x4'));var auth=require(_0x87a0('0x5'));var interaction=require(_0x87a0('0x6'));var config=require(_0x87a0('0x7'));var controller=require(_0x87a0('0x8'));router[_0x87a0('0x9')]('/',auth[_0x87a0('0xa')](),controller[_0x87a0('0xb')]);router[_0x87a0('0x9')]('/describe',auth[_0x87a0('0xa')](),controller[_0x87a0('0xc')]);router[_0x87a0('0x9')](_0x87a0('0xd'),auth[_0x87a0('0xa')](),controller['show']);router['post']('/',auth[_0x87a0('0xa')](),controller[_0x87a0('0xe')]);router[_0x87a0('0xf')](_0x87a0('0xd'),auth[_0x87a0('0xa')](),controller['update']);router[_0x87a0('0x10')](_0x87a0('0xd'),auth[_0x87a0('0xa')](),controller['destroy']);module[_0x87a0('0x11')]=router;
\ No newline at end of file
+var _0x093a=['describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x2e4b5e,_0x328348){var _0x2bab89=function(_0x201c62){while(--_0x201c62){_0x2e4b5e['push'](_0x2e4b5e['shift']());}};_0x2bab89(++_0x328348);}(_0x093a,0x16a));var _0xa093=function(_0x4df1f5,_0x39c6d2){_0x4df1f5=_0x4df1f5-0x0;var _0x56585b=_0x093a[_0x4df1f5];return _0x56585b;};'use strict';var multer=require('multer');var util=require(_0xa093('0x0'));var path=require(_0xa093('0x1'));var timeout=require(_0xa093('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa093('0x3'));var auth=require(_0xa093('0x4'));var interaction=require(_0xa093('0x5'));var config=require(_0xa093('0x6'));var controller=require(_0xa093('0x7'));router[_0xa093('0x8')]('/',auth[_0xa093('0x9')](),controller[_0xa093('0xa')]);router[_0xa093('0x8')](_0xa093('0xb'),auth[_0xa093('0x9')](),controller[_0xa093('0xc')]);router[_0xa093('0x8')](_0xa093('0xd'),auth[_0xa093('0x9')](),controller[_0xa093('0xe')]);router[_0xa093('0xf')]('/',auth[_0xa093('0x9')](),controller[_0xa093('0x10')]);router[_0xa093('0x11')](_0xa093('0xd'),auth['isAuthenticated'](),controller[_0xa093('0x12')]);router[_0xa093('0x13')](_0xa093('0xd'),auth['isAuthenticated'](),controller[_0xa093('0x14')]);module[_0xa093('0x15')]=router;
\ No newline at end of file
index 8869f3a..3fd7f42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d48=['exports','STRING','DATE','moment','sequelize'];(function(_0x18776a,_0x4fecab){var _0x484e4a=function(_0x2c8722){while(--_0x2c8722){_0x18776a['push'](_0x18776a['shift']());}};_0x484e4a(++_0x4fecab);}(_0x2d48,0x143));var _0x82d4=function(_0x8c8176,_0x5360a1){_0x8c8176=_0x8c8176-0x0;var _0x4dc47b=_0x2d48[_0x8c8176];return _0x4dc47b;};'use strict';var moment=require(_0x82d4('0x0'));var Sequelize=require(_0x82d4('0x1'));module[_0x82d4('0x2')]={'uniqueid':{'type':Sequelize[_0x82d4('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x82d4('0x3')]},'joinAt':{'type':Sequelize[_0x82d4('0x4')]},'leaveAt':{'type':Sequelize[_0x82d4('0x4')]},'acceptAt':{'type':Sequelize[_0x82d4('0x4')]},'exitAt':{'type':Sequelize[_0x82d4('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x61c0=['moment','sequelize','exports','STRING','DATE'];(function(_0x309e8c,_0x334d3d){var _0x8258da=function(_0x4db20b){while(--_0x4db20b){_0x309e8c['push'](_0x309e8c['shift']());}};_0x8258da(++_0x334d3d);}(_0x61c0,0x73));var _0x061c=function(_0x2ccafa,_0x12b12e){_0x2ccafa=_0x2ccafa-0x0;var _0x35d778=_0x61c0[_0x2ccafa];return _0x35d778;};'use strict';var moment=require(_0x061c('0x0'));var Sequelize=require(_0x061c('0x1'));module[_0x061c('0x2')]={'uniqueid':{'type':Sequelize[_0x061c('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x061c('0x4')]},'acceptAt':{'type':Sequelize[_0x061c('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x061c('0x3')]}};
\ No newline at end of file
index 5a56625..a751313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a5f=['intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','key','model','query','keys','filters','attributes'];(function(_0x2b4598,_0x250d7e){var _0x4b11f3=function(_0x88085d){while(--_0x88085d){_0x2b4598['push'](_0x2b4598['shift']());}};_0x4b11f3(++_0x250d7e);}(_0x7a5f,0xf6));var _0xf7a5=function(_0x2d344f,_0x25fa84){_0x2d344f=_0x2d344f-0x0;var _0x2e796b=_0x7a5f[_0x2d344f];return _0x2e796b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf7a5('0x0'));var zipdir=require(_0xf7a5('0x1'));var jsonpatch=require(_0xf7a5('0x2'));var rp=require(_0xf7a5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf7a5('0x4'));var sox=require(_0xf7a5('0x5'));var csv=require(_0xf7a5('0x6'));var ejs=require(_0xf7a5('0x7'));var fs=require('fs');var fs_extra=require(_0xf7a5('0x8'));var _=require('lodash');var squel=require(_0xf7a5('0x9'));var crypto=require(_0xf7a5('0xa'));var jsforce=require(_0xf7a5('0xb'));var deskjs=require(_0xf7a5('0xc'));var toCsv=require('to-csv');var querystring=require(_0xf7a5('0xd'));var Papa=require(_0xf7a5('0xe'));var Redis=require(_0xf7a5('0xf'));var authService=require(_0xf7a5('0x10'));var qs=require(_0xf7a5('0x11'));var as=require(_0xf7a5('0x12'));var hardwareService=require(_0xf7a5('0x13'));var logger=require(_0xf7a5('0x14'))('api');var utils=require(_0xf7a5('0x15'));var config=require(_0xf7a5('0x16'));var licenseUtil=require(_0xf7a5('0x17'));var db=require(_0xf7a5('0x18'))['db'];function respondWithStatusCode(_0x54b863,_0x23d4f0){_0x23d4f0=_0x23d4f0||0xcc;return function(_0x3e150f){if(_0x3e150f){return _0x54b863['sendStatus'](_0x23d4f0);}return _0x54b863[_0xf7a5('0x19')](_0x23d4f0)['end']();};}function respondWithResult(_0x246497,_0x31d316){_0x31d316=_0x31d316||0xc8;return function(_0x383ffa){if(_0x383ffa){return _0x246497[_0xf7a5('0x19')](_0x31d316)['json'](_0x383ffa);}};}function respondWithFilteredResult(_0x1bfd7b,_0x5138c6){return function(_0x4d5377){if(_0x4d5377){var _0x4baf54=typeof _0x5138c6[_0xf7a5('0x1a')]===_0xf7a5('0x1b')&&typeof _0x5138c6[_0xf7a5('0x1c')]==='undefined';var _0x3186c6=_0x4d5377[_0xf7a5('0x1d')];var _0x2126b2=_0x4baf54?0x0:_0x5138c6[_0xf7a5('0x1a')];var _0x33a909=_0x4baf54?_0x4d5377[_0xf7a5('0x1d')]:_0x5138c6['offset']+_0x5138c6[_0xf7a5('0x1c')];var _0x3ed808;if(_0x33a909>=_0x3186c6){_0x33a909=_0x3186c6;_0x3ed808=0xc8;}else{_0x3ed808=0xce;}_0x1bfd7b['status'](_0x3ed808);return _0x1bfd7b['set'](_0xf7a5('0x1e'),_0x2126b2+'-'+_0x33a909+'/'+_0x3186c6)[_0xf7a5('0x1f')](_0x4d5377);}return null;};}function patchUpdates(_0x5922dd){return function(_0x4723f0){try{jsonpatch[_0xf7a5('0x20')](_0x4723f0,_0x5922dd,!![]);}catch(_0x2fd55c){return BPromise[_0xf7a5('0x21')](_0x2fd55c);}return _0x4723f0[_0xf7a5('0x22')]();};}function saveUpdates(_0x37ed65,_0x2b46a3){return function(_0x3ea983){if(_0x3ea983){return _0x3ea983[_0xf7a5('0x23')](_0x37ed65)[_0xf7a5('0x24')](function(_0x165d0a){return _0x165d0a;});}return null;};}function removeEntity(_0x20cdc0,_0x1de513){return function(_0x53fc76){if(_0x53fc76){return _0x53fc76[_0xf7a5('0x25')]()[_0xf7a5('0x24')](function(){_0x20cdc0['status'](0xcc)[_0xf7a5('0x26')]();});}};}function handleEntityNotFound(_0x1995f2,_0x103b08){return function(_0x10dcc2){if(!_0x10dcc2){_0x1995f2[_0xf7a5('0x27')](0x194);}return _0x10dcc2;};}function handleError(_0x50c46e,_0x541982){_0x541982=_0x541982||0x1f4;return function(_0x5a23b9){logger[_0xf7a5('0x28')](_0x5a23b9[_0xf7a5('0x29')]);if(_0x5a23b9[_0xf7a5('0x2a')]){delete _0x5a23b9['name'];}_0x50c46e[_0xf7a5('0x19')](_0x541982)[_0xf7a5('0x2b')](_0x5a23b9);};}exports[_0xf7a5('0x2c')]=function(_0x130855,_0x34433a){var _0x813409={},_0xf336ac={},_0x539d25={'count':0x0,'rows':[]};var _0x1db03a=_[_0xf7a5('0x2d')](db[_0xf7a5('0x2e')][_0xf7a5('0x2f')],function(_0x565d93){return{'name':_0x565d93['fieldName'],'type':_0x565d93['type'][_0xf7a5('0x30')]};});_0xf336ac[_0xf7a5('0x31')]=_['map'](_0x1db03a,_0xf7a5('0x2a'));_0xf336ac[_0xf7a5('0x32')]=_[_0xf7a5('0x33')](_0x130855[_0xf7a5('0x32')]);_0xf336ac[_0xf7a5('0x34')]=_['intersection'](_0xf336ac[_0xf7a5('0x31')],_0xf336ac['query']);_0x813409[_0xf7a5('0x35')]=_[_0xf7a5('0x36')](_0xf336ac['model'],qs[_0xf7a5('0x37')](_0x130855[_0xf7a5('0x32')][_0xf7a5('0x37')]));_0x813409[_0xf7a5('0x35')]=_0x813409['attributes'][_0xf7a5('0x38')]?_0x813409[_0xf7a5('0x35')]:_0xf336ac[_0xf7a5('0x31')];if(!_0x130855['query'][_0xf7a5('0x39')](_0xf7a5('0x3a'))){_0x813409[_0xf7a5('0x1c')]=qs[_0xf7a5('0x1c')](_0x130855['query'][_0xf7a5('0x1c')]);_0x813409[_0xf7a5('0x1a')]=qs[_0xf7a5('0x1a')](_0x130855[_0xf7a5('0x32')]['offset']);}_0x813409[_0xf7a5('0x3b')]=qs['sort'](_0x130855['query']['sort']);_0x813409[_0xf7a5('0x3c')]=qs[_0xf7a5('0x34')](_[_0xf7a5('0x3d')](_0x130855[_0xf7a5('0x32')],_0xf336ac[_0xf7a5('0x34')]),_0x1db03a);if(_0x130855[_0xf7a5('0x32')][_0xf7a5('0x3e')]){_0x813409[_0xf7a5('0x3c')]=_[_0xf7a5('0x3f')](_0x813409[_0xf7a5('0x3c')],{'$or':_[_0xf7a5('0x2d')](_0x1db03a,function(_0x180ffc){if(_0x180ffc['type']!==_0xf7a5('0x40')){var _0x50b025={};_0x50b025[_0x180ffc[_0xf7a5('0x2a')]]={'$like':'%'+_0x130855[_0xf7a5('0x32')][_0xf7a5('0x3e')]+'%'};return _0x50b025;}})});}_0x813409=_[_0xf7a5('0x3f')]({},_0x813409,_0x130855[_0xf7a5('0x41')]);var _0x15057a={'where':_0x813409[_0xf7a5('0x3c')]};return db[_0xf7a5('0x2e')][_0xf7a5('0x1d')](_0x15057a)[_0xf7a5('0x24')](function(_0x4d8a1e){_0x539d25[_0xf7a5('0x1d')]=_0x4d8a1e;if(_0x130855[_0xf7a5('0x32')][_0xf7a5('0x42')]){_0x813409[_0xf7a5('0x43')]=[{'all':!![]}];}return db['SmsQueueReport'][_0xf7a5('0x44')](_0x813409);})[_0xf7a5('0x24')](function(_0xef42f9){_0x539d25[_0xf7a5('0x45')]=_0xef42f9;return _0x539d25;})[_0xf7a5('0x24')](respondWithFilteredResult(_0x34433a,_0x813409))[_0xf7a5('0x46')](handleError(_0x34433a,null));};exports['show']=function(_0x35705b,_0x1d7e15){var _0x4985e6={'raw':!![],'where':{'id':_0x35705b['params']['id']}},_0x1df01e={};_0x1df01e[_0xf7a5('0x31')]=_['keys'](db['SmsQueueReport'][_0xf7a5('0x2f')]);_0x1df01e[_0xf7a5('0x32')]=_[_0xf7a5('0x33')](_0x35705b[_0xf7a5('0x32')]);_0x1df01e[_0xf7a5('0x34')]=_[_0xf7a5('0x36')](_0x1df01e[_0xf7a5('0x31')],_0x1df01e['query']);_0x4985e6[_0xf7a5('0x35')]=_[_0xf7a5('0x36')](_0x1df01e[_0xf7a5('0x31')],qs[_0xf7a5('0x37')](_0x35705b[_0xf7a5('0x32')][_0xf7a5('0x37')]));_0x4985e6[_0xf7a5('0x35')]=_0x4985e6[_0xf7a5('0x35')][_0xf7a5('0x38')]?_0x4985e6[_0xf7a5('0x35')]:_0x1df01e[_0xf7a5('0x31')];if(_0x35705b[_0xf7a5('0x32')][_0xf7a5('0x42')]){_0x4985e6[_0xf7a5('0x43')]=[{'all':!![]}];}_0x4985e6=_[_0xf7a5('0x3f')]({},_0x4985e6,_0x35705b[_0xf7a5('0x41')]);return db[_0xf7a5('0x2e')][_0xf7a5('0x47')](_0x4985e6)[_0xf7a5('0x24')](handleEntityNotFound(_0x1d7e15,null))[_0xf7a5('0x24')](respondWithResult(_0x1d7e15,null))[_0xf7a5('0x46')](handleError(_0x1d7e15,null));};exports['create']=function(_0x2507a2,_0xb1365c){return db[_0xf7a5('0x2e')]['create'](_0x2507a2[_0xf7a5('0x48')],{})[_0xf7a5('0x24')](respondWithResult(_0xb1365c,0xc9))[_0xf7a5('0x46')](handleError(_0xb1365c,null));};exports[_0xf7a5('0x23')]=function(_0x1b7cf9,_0x3235fa){if(_0x1b7cf9[_0xf7a5('0x48')]['id']){delete _0x1b7cf9['body']['id'];}return db[_0xf7a5('0x2e')][_0xf7a5('0x47')]({'where':{'id':_0x1b7cf9[_0xf7a5('0x49')]['id']}})[_0xf7a5('0x24')](handleEntityNotFound(_0x3235fa,null))[_0xf7a5('0x24')](saveUpdates(_0x1b7cf9['body'],null))['then'](respondWithResult(_0x3235fa,null))[_0xf7a5('0x46')](handleError(_0x3235fa,null));};exports['destroy']=function(_0x7757da,_0x4e7a0f){return db[_0xf7a5('0x2e')][_0xf7a5('0x47')]({'where':{'id':_0x7757da[_0xf7a5('0x49')]['id']}})[_0xf7a5('0x24')](handleEntityNotFound(_0x4e7a0f,null))[_0xf7a5('0x24')](removeEntity(_0x4e7a0f,null))['catch'](handleError(_0x4e7a0f,null));};exports['describe']=function(_0x445634,_0x3a57a5){return db[_0xf7a5('0x2e')][_0xf7a5('0x4a')]()[_0xf7a5('0x24')](respondWithResult(_0x3a57a5,null))[_0xf7a5('0x46')](handleError(_0x3a57a5,null));};
\ No newline at end of file
+var _0xcc91=['index','map','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','findAll','rows','params','SmsQueueReport','keys','includeAll','include','options','find','catch','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','send'];(function(_0x2251cf,_0x46f9aa){var _0x154057=function(_0x594b8a){while(--_0x594b8a){_0x2251cf['push'](_0x2251cf['shift']());}};_0x154057(++_0x46f9aa);}(_0xcc91,0x1a3));var _0x1cc9=function(_0x2136d5,_0x4b0479){_0x2136d5=_0x2136d5-0x0;var _0x3bee2e=_0xcc91[_0x2136d5];return _0x3bee2e;};'use strict';var emlformat=require(_0x1cc9('0x0'));var rimraf=require(_0x1cc9('0x1'));var zipdir=require(_0x1cc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1cc9('0x3'));var moment=require(_0x1cc9('0x4'));var BPromise=require(_0x1cc9('0x5'));var Mustache=require(_0x1cc9('0x6'));var util=require(_0x1cc9('0x7'));var path=require(_0x1cc9('0x8'));var sox=require(_0x1cc9('0x9'));var csv=require(_0x1cc9('0xa'));var ejs=require(_0x1cc9('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1cc9('0xc'));var crypto=require('crypto');var jsforce=require(_0x1cc9('0xd'));var deskjs=require(_0x1cc9('0xe'));var toCsv=require(_0x1cc9('0xa'));var querystring=require(_0x1cc9('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x1cc9('0x10'));var qs=require(_0x1cc9('0x11'));var as=require(_0x1cc9('0x12'));var hardwareService=require(_0x1cc9('0x13'));var logger=require(_0x1cc9('0x14'))(_0x1cc9('0x15'));var utils=require(_0x1cc9('0x16'));var config=require(_0x1cc9('0x17'));var licenseUtil=require(_0x1cc9('0x18'));var db=require(_0x1cc9('0x19'))['db'];function respondWithStatusCode(_0x997255,_0x427128){_0x427128=_0x427128||0xcc;return function(_0x552640){if(_0x552640){return _0x997255['sendStatus'](_0x427128);}return _0x997255[_0x1cc9('0x1a')](_0x427128)[_0x1cc9('0x1b')]();};}function respondWithResult(_0x30f9a1,_0x16549b){_0x16549b=_0x16549b||0xc8;return function(_0x2be44c){if(_0x2be44c){return _0x30f9a1['status'](_0x16549b)[_0x1cc9('0x1c')](_0x2be44c);}};}function respondWithFilteredResult(_0x51e000,_0xb56f8){return function(_0x5cefd0){if(_0x5cefd0){var _0x63ef4e=typeof _0xb56f8['offset']===_0x1cc9('0x1d')&&typeof _0xb56f8['limit']===_0x1cc9('0x1d');var _0x3064e3=_0x5cefd0[_0x1cc9('0x1e')];var _0x32647d=_0x63ef4e?0x0:_0xb56f8['offset'];var _0x56d25a=_0x63ef4e?_0x5cefd0['count']:_0xb56f8[_0x1cc9('0x1f')]+_0xb56f8[_0x1cc9('0x20')];var _0x4571c9;if(_0x56d25a>=_0x3064e3){_0x56d25a=_0x3064e3;_0x4571c9=0xc8;}else{_0x4571c9=0xce;}_0x51e000[_0x1cc9('0x1a')](_0x4571c9);return _0x51e000[_0x1cc9('0x21')](_0x1cc9('0x22'),_0x32647d+'-'+_0x56d25a+'/'+_0x3064e3)[_0x1cc9('0x1c')](_0x5cefd0);}return null;};}function patchUpdates(_0x4e898c){return function(_0x57e576){try{jsonpatch['apply'](_0x57e576,_0x4e898c,!![]);}catch(_0x79a162){return BPromise['reject'](_0x79a162);}return _0x57e576['save']();};}function saveUpdates(_0x44cd49,_0x1870bd){return function(_0x1cfb2d){if(_0x1cfb2d){return _0x1cfb2d[_0x1cc9('0x23')](_0x44cd49)[_0x1cc9('0x24')](function(_0x47a85b){return _0x47a85b;});}return null;};}function removeEntity(_0x13b967,_0x20d033){return function(_0x4a44ab){if(_0x4a44ab){return _0x4a44ab[_0x1cc9('0x25')]()[_0x1cc9('0x24')](function(){_0x13b967['status'](0xcc)[_0x1cc9('0x1b')]();});}};}function handleEntityNotFound(_0xb46441,_0x271e96){return function(_0x44799a){if(!_0x44799a){_0xb46441[_0x1cc9('0x26')](0x194);}return _0x44799a;};}function handleError(_0xe1579b,_0x50ee7a){_0x50ee7a=_0x50ee7a||0x1f4;return function(_0x29d0fd){logger[_0x1cc9('0x27')](_0x29d0fd[_0x1cc9('0x28')]);if(_0x29d0fd['name']){delete _0x29d0fd[_0x1cc9('0x29')];}_0xe1579b['status'](_0x50ee7a)[_0x1cc9('0x2a')](_0x29d0fd);};}exports[_0x1cc9('0x2b')]=function(_0x1b0e56,_0x20c633){var _0x50a389={},_0x44f4dd={},_0x51f4d6={'count':0x0,'rows':[]};var _0x2c8b03=_[_0x1cc9('0x2c')](db['SmsQueueReport'][_0x1cc9('0x2d')],function(_0x4daa57){return{'name':_0x4daa57[_0x1cc9('0x2e')],'type':_0x4daa57[_0x1cc9('0x2f')][_0x1cc9('0x30')]};});_0x44f4dd[_0x1cc9('0x31')]=_[_0x1cc9('0x2c')](_0x2c8b03,'name');_0x44f4dd[_0x1cc9('0x32')]=_['keys'](_0x1b0e56['query']);_0x44f4dd['filters']=_['intersection'](_0x44f4dd[_0x1cc9('0x31')],_0x44f4dd[_0x1cc9('0x32')]);_0x50a389[_0x1cc9('0x33')]=_[_0x1cc9('0x34')](_0x44f4dd[_0x1cc9('0x31')],qs[_0x1cc9('0x35')](_0x1b0e56[_0x1cc9('0x32')]['fields']));_0x50a389['attributes']=_0x50a389[_0x1cc9('0x33')][_0x1cc9('0x36')]?_0x50a389[_0x1cc9('0x33')]:_0x44f4dd[_0x1cc9('0x31')];if(!_0x1b0e56[_0x1cc9('0x32')][_0x1cc9('0x37')](_0x1cc9('0x38'))){_0x50a389[_0x1cc9('0x20')]=qs[_0x1cc9('0x20')](_0x1b0e56[_0x1cc9('0x32')][_0x1cc9('0x20')]);_0x50a389[_0x1cc9('0x1f')]=qs[_0x1cc9('0x1f')](_0x1b0e56[_0x1cc9('0x32')][_0x1cc9('0x1f')]);}_0x50a389[_0x1cc9('0x39')]=qs[_0x1cc9('0x3a')](_0x1b0e56[_0x1cc9('0x32')][_0x1cc9('0x3a')]);_0x50a389[_0x1cc9('0x3b')]=qs[_0x1cc9('0x3c')](_[_0x1cc9('0x3d')](_0x1b0e56[_0x1cc9('0x32')],_0x44f4dd[_0x1cc9('0x3c')]),_0x2c8b03);if(_0x1b0e56[_0x1cc9('0x32')][_0x1cc9('0x3e')]){_0x50a389[_0x1cc9('0x3b')]=_[_0x1cc9('0x3f')](_0x50a389[_0x1cc9('0x3b')],{'$or':_[_0x1cc9('0x2c')](_0x2c8b03,function(_0x20656f){if(_0x20656f[_0x1cc9('0x2f')]!==_0x1cc9('0x40')){var _0x2c3e26={};_0x2c3e26[_0x20656f[_0x1cc9('0x29')]]={'$like':'%'+_0x1b0e56[_0x1cc9('0x32')]['filter']+'%'};return _0x2c3e26;}})});}_0x50a389=_[_0x1cc9('0x3f')]({},_0x50a389,_0x1b0e56['options']);var _0x36d91c={'where':_0x50a389['where']};return db['SmsQueueReport'][_0x1cc9('0x1e')](_0x36d91c)['then'](function(_0x543da2){_0x51f4d6['count']=_0x543da2;if(_0x1b0e56[_0x1cc9('0x32')]['includeAll']){_0x50a389['include']=[{'all':!![]}];}return db['SmsQueueReport'][_0x1cc9('0x41')](_0x50a389);})['then'](function(_0x530fe1){_0x51f4d6[_0x1cc9('0x42')]=_0x530fe1;return _0x51f4d6;})[_0x1cc9('0x24')](respondWithFilteredResult(_0x20c633,_0x50a389))['catch'](handleError(_0x20c633,null));};exports['show']=function(_0x10de61,_0x4de0ca){var _0x2ba628={'raw':!![],'where':{'id':_0x10de61[_0x1cc9('0x43')]['id']}},_0x53a01c={};_0x53a01c[_0x1cc9('0x31')]=_['keys'](db[_0x1cc9('0x44')][_0x1cc9('0x2d')]);_0x53a01c['query']=_[_0x1cc9('0x45')](_0x10de61['query']);_0x53a01c[_0x1cc9('0x3c')]=_[_0x1cc9('0x34')](_0x53a01c[_0x1cc9('0x31')],_0x53a01c['query']);_0x2ba628['attributes']=_['intersection'](_0x53a01c[_0x1cc9('0x31')],qs[_0x1cc9('0x35')](_0x10de61[_0x1cc9('0x32')]['fields']));_0x2ba628[_0x1cc9('0x33')]=_0x2ba628[_0x1cc9('0x33')]['length']?_0x2ba628[_0x1cc9('0x33')]:_0x53a01c['model'];if(_0x10de61[_0x1cc9('0x32')][_0x1cc9('0x46')]){_0x2ba628[_0x1cc9('0x47')]=[{'all':!![]}];}_0x2ba628=_[_0x1cc9('0x3f')]({},_0x2ba628,_0x10de61[_0x1cc9('0x48')]);return db[_0x1cc9('0x44')][_0x1cc9('0x49')](_0x2ba628)[_0x1cc9('0x24')](handleEntityNotFound(_0x4de0ca,null))['then'](respondWithResult(_0x4de0ca,null))[_0x1cc9('0x4a')](handleError(_0x4de0ca,null));};exports['create']=function(_0x42540e,_0x16b8a8){return db[_0x1cc9('0x44')]['create'](_0x42540e[_0x1cc9('0x4b')],{})[_0x1cc9('0x24')](respondWithResult(_0x16b8a8,0xc9))[_0x1cc9('0x4a')](handleError(_0x16b8a8,null));};exports[_0x1cc9('0x23')]=function(_0x195fd1,_0x291cea){if(_0x195fd1[_0x1cc9('0x4b')]['id']){delete _0x195fd1['body']['id'];}return db['SmsQueueReport'][_0x1cc9('0x49')]({'where':{'id':_0x195fd1[_0x1cc9('0x43')]['id']}})[_0x1cc9('0x24')](handleEntityNotFound(_0x291cea,null))[_0x1cc9('0x24')](saveUpdates(_0x195fd1[_0x1cc9('0x4b')],null))[_0x1cc9('0x24')](respondWithResult(_0x291cea,null))[_0x1cc9('0x4a')](handleError(_0x291cea,null));};exports['destroy']=function(_0x234d42,_0x24ed30){return db['SmsQueueReport'][_0x1cc9('0x49')]({'where':{'id':_0x234d42[_0x1cc9('0x43')]['id']}})[_0x1cc9('0x24')](handleEntityNotFound(_0x24ed30,null))[_0x1cc9('0x24')](removeEntity(_0x24ed30,null))[_0x1cc9('0x4a')](handleError(_0x24ed30,null));};exports[_0x1cc9('0x4c')]=function(_0x4bd3e8,_0x326344){return db[_0x1cc9('0x44')][_0x1cc9('0x4c')]()[_0x1cc9('0x24')](respondWithResult(_0x326344,null))[_0x1cc9('0x4a')](handleError(_0x326344,null));};
\ No newline at end of file
index e36e41f..4c90425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['util','../../config/logger','bluebird','request-promise','path','rimraf','./smsQueueReport.attributes','report_sms_queue','uniqueid','lodash'];(function(_0x39081e,_0x2a07b9){var _0x58d5df=function(_0x5f4540){while(--_0x5f4540){_0x39081e['push'](_0x39081e['shift']());}};_0x58d5df(++_0x2a07b9);}(_0x70e0,0x17b));var _0x070e=function(_0x10afce,_0x2a562e){_0x10afce=_0x10afce-0x0;var _0x3a003a=_0x70e0[_0x10afce];return _0x3a003a;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('SmsQueueReport',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[{'name':_0x070e('0x9'),'fields':[_0x070e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['define','SmsQueueReport','report_sms_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x569bb1,_0x19692a){var _0x12690d=function(_0x5a58f6){while(--_0x5a58f6){_0x569bb1['push'](_0x569bb1['shift']());}};_0x12690d(++_0x19692a);}(_0xbaf0,0x12a));var _0x0baf=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbaf0[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 62e65e8..640ae0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd2e=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request\x20sent','debug','stringify','error','code','message','SmsQueueReport,\x20%s,\x20%s','info','catch','SmsQueueReport','body','options','raw','then','CreateSmsQueueReport','update','where','attributes','UpdateSmsQueueReport','lodash','util','moment','bluebird'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0xbd2e,0x1dc));var _0xebd2=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xbd2e[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xebd2('0x0'));var util=require(_0xebd2('0x1'));var moment=require(_0xebd2('0x2'));var BPromise=require(_0xebd2('0x3'));var rs=require(_0xebd2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xebd2('0x5'));var logger=require(_0xebd2('0x6'))(_0xebd2('0x7'));var config=require(_0xebd2('0x8'));var jayson=require(_0xebd2('0x9'));var client=jayson[_0xebd2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x281acc,_0x50e0d2,_0xa1e640){return new BPromise(function(_0x216fd8,_0x41e497){return client['request'](_0x281acc,_0xa1e640)['then'](function(_0x3cc16d){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x50e0d2,_0xebd2('0xb'));logger[_0xebd2('0xc')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x50e0d2,'request\x20sent',JSON[_0xebd2('0xd')](_0x3cc16d));if(_0x3cc16d[_0xebd2('0xe')]){if(_0x3cc16d['error'][_0xebd2('0xf')]===0x1f4){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x50e0d2,_0x3cc16d[_0xebd2('0xe')][_0xebd2('0x10')]);return _0x41e497(_0x3cc16d[_0xebd2('0xe')][_0xebd2('0x10')]);}logger[_0xebd2('0xe')](_0xebd2('0x11'),_0x50e0d2,_0x3cc16d[_0xebd2('0xe')][_0xebd2('0x10')]);return _0x216fd8(_0x3cc16d[_0xebd2('0xe')][_0xebd2('0x10')]);}else{logger[_0xebd2('0x12')](_0xebd2('0x11'),_0x50e0d2,_0xebd2('0xb'));_0x216fd8(_0x3cc16d['result'][_0xebd2('0x10')]);}})[_0xebd2('0x13')](function(_0x2e6be8){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x50e0d2,_0x2e6be8);_0x41e497(_0x2e6be8);});});}exports['CreateSmsQueueReport']=function(_0x262a74){var _0x3e9800=this;return new Promise(function(_0x16d7cd,_0x691f10){return db[_0xebd2('0x14')]['create'](_0x262a74[_0xebd2('0x15')],{'raw':_0x262a74[_0xebd2('0x16')]?_0x262a74[_0xebd2('0x16')][_0xebd2('0x17')]===undefined?!![]:![]:!![]})[_0xebd2('0x18')](function(_0x24df37){logger['info'](_0xebd2('0x19'),_0x262a74);logger[_0xebd2('0xc')](_0xebd2('0x19'),_0x262a74,JSON['stringify'](_0x24df37));_0x16d7cd(_0x24df37);})[_0xebd2('0x13')](function(_0x4489f8){logger[_0xebd2('0xe')]('CreateSmsQueueReport',_0x4489f8[_0xebd2('0x10')],_0x262a74);_0x691f10(_0x3e9800[_0xebd2('0xe')](0x1f4,_0x4489f8[_0xebd2('0x10')]));});});};exports['UpdateSmsQueueReport']=function(_0x21d995){var _0x1c240a=this;return new Promise(function(_0x334738,_0x5a45d6){return db[_0xebd2('0x14')][_0xebd2('0x1a')](_0x21d995[_0xebd2('0x15')],{'raw':_0x21d995[_0xebd2('0x16')]?_0x21d995['options'][_0xebd2('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21d995[_0xebd2('0x16')]?_0x21d995[_0xebd2('0x16')][_0xebd2('0x1b')]||null:null,'attributes':_0x21d995[_0xebd2('0x16')]?_0x21d995[_0xebd2('0x16')][_0xebd2('0x1c')]||null:null,'limit':_0x21d995['options']?_0x21d995[_0xebd2('0x16')]['limit']||null:null})[_0xebd2('0x18')](function(_0x1e25a9){logger[_0xebd2('0x12')](_0xebd2('0x1d'),_0x21d995);logger['debug']('UpdateSmsQueueReport',_0x21d995,JSON[_0xebd2('0xd')](_0x1e25a9));_0x334738(_0x1e25a9);})['catch'](function(_0x13167b){logger['error'](_0xebd2('0x1d'),_0x13167b[_0xebd2('0x10')],_0x21d995);_0x5a45d6(_0x1c240a['error'](0x1f4,_0x13167b[_0xebd2('0x10')]));});});};
\ No newline at end of file
+var _0xcdfd=['then','info','SmsQueueReport,\x20%s,\x20%s','debug','stringify','error','message','request\x20sent','result','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','catch','UpdateSmsQueueReport','where','attributes','limit','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x56bbf6,_0x2ff73d){var _0x399d68=function(_0x3112c5){while(--_0x3112c5){_0x56bbf6['push'](_0x56bbf6['shift']());}};_0x399d68(++_0x2ff73d);}(_0xcdfd,0x90));var _0xdcdf=function(_0x15d0ed,_0x5698d1){_0x15d0ed=_0x15d0ed-0x0;var _0x548e26=_0xcdfd[_0x15d0ed];return _0x548e26;};'use strict';var _=require('lodash');var util=require(_0xdcdf('0x0'));var moment=require(_0xdcdf('0x1'));var BPromise=require(_0xdcdf('0x2'));var rs=require(_0xdcdf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdcdf('0x4'))['db'];var utils=require(_0xdcdf('0x5'));var logger=require(_0xdcdf('0x6'))(_0xdcdf('0x7'));var config=require(_0xdcdf('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xdcdf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1cb4bb,_0x158ffb,_0x165260){return new BPromise(function(_0xe75e95,_0x2a35f1){return client[_0xdcdf('0xa')](_0x1cb4bb,_0x165260)[_0xdcdf('0xb')](function(_0x5aaac5){logger[_0xdcdf('0xc')](_0xdcdf('0xd'),_0x158ffb,'request\x20sent');logger[_0xdcdf('0xe')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x158ffb,'request\x20sent',JSON[_0xdcdf('0xf')](_0x5aaac5));if(_0x5aaac5['error']){if(_0x5aaac5[_0xdcdf('0x10')]['code']===0x1f4){logger['error'](_0xdcdf('0xd'),_0x158ffb,_0x5aaac5[_0xdcdf('0x10')]['message']);return _0x2a35f1(_0x5aaac5[_0xdcdf('0x10')]['message']);}logger[_0xdcdf('0x10')](_0xdcdf('0xd'),_0x158ffb,_0x5aaac5[_0xdcdf('0x10')][_0xdcdf('0x11')]);return _0xe75e95(_0x5aaac5[_0xdcdf('0x10')][_0xdcdf('0x11')]);}else{logger[_0xdcdf('0xc')](_0xdcdf('0xd'),_0x158ffb,_0xdcdf('0x12'));_0xe75e95(_0x5aaac5[_0xdcdf('0x13')][_0xdcdf('0x11')]);}})['catch'](function(_0x756e68){logger[_0xdcdf('0x10')](_0xdcdf('0xd'),_0x158ffb,_0x756e68);_0x2a35f1(_0x756e68);});});}exports[_0xdcdf('0x14')]=function(_0x55195a){var _0x398924=this;return new Promise(function(_0x223080,_0xda50d){return db[_0xdcdf('0x15')][_0xdcdf('0x16')](_0x55195a[_0xdcdf('0x17')],{'raw':_0x55195a[_0xdcdf('0x18')]?_0x55195a[_0xdcdf('0x18')][_0xdcdf('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x21b9a6){logger[_0xdcdf('0xc')]('CreateSmsQueueReport',_0x55195a);logger[_0xdcdf('0xe')]('CreateSmsQueueReport',_0x55195a,JSON[_0xdcdf('0xf')](_0x21b9a6));_0x223080(_0x21b9a6);})[_0xdcdf('0x1a')](function(_0x2ba322){logger[_0xdcdf('0x10')](_0xdcdf('0x14'),_0x2ba322[_0xdcdf('0x11')],_0x55195a);_0xda50d(_0x398924[_0xdcdf('0x10')](0x1f4,_0x2ba322[_0xdcdf('0x11')]));});});};exports[_0xdcdf('0x1b')]=function(_0x15f613){var _0x4a30af=this;return new Promise(function(_0x46f3b6,_0x313f30){return db[_0xdcdf('0x15')]['update'](_0x15f613[_0xdcdf('0x17')],{'raw':_0x15f613['options']?_0x15f613[_0xdcdf('0x18')][_0xdcdf('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x15f613[_0xdcdf('0x18')]?_0x15f613['options'][_0xdcdf('0x1c')]||null:null,'attributes':_0x15f613[_0xdcdf('0x18')]?_0x15f613[_0xdcdf('0x18')][_0xdcdf('0x1d')]||null:null,'limit':_0x15f613[_0xdcdf('0x18')]?_0x15f613[_0xdcdf('0x18')][_0xdcdf('0x1e')]||null:null})[_0xdcdf('0xb')](function(_0x416f8d){logger['info'](_0xdcdf('0x1b'),_0x15f613);logger[_0xdcdf('0xe')](_0xdcdf('0x1b'),_0x15f613,JSON[_0xdcdf('0xf')](_0x416f8d));_0x46f3b6(_0x416f8d);})[_0xdcdf('0x1a')](function(_0x2e31fe){logger[_0xdcdf('0x10')]('UpdateSmsQueueReport',_0x2e31fe[_0xdcdf('0x11')],_0x15f613);_0x313f30(_0x4a30af[_0xdcdf('0x10')](0x1f4,_0x2e31fe[_0xdcdf('0x11')]));});});};
\ No newline at end of file
index 13c9fdd..4048b7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25fa=['isAuthenticated','index','get','/describe','describe','/:id','post','put','update','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','./smsTransferReport.controller'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x25fa,0x109));var _0xa25f=function(_0x20cded,_0x42ee14){_0x20cded=_0x20cded-0x0;var _0x33f813=_0x25fa[_0x20cded];return _0x33f813;};'use strict';var multer=require(_0xa25f('0x0'));var util=require('util');var path=require(_0xa25f('0x1'));var timeout=require(_0xa25f('0x2'));var express=require('express');var router=express[_0xa25f('0x3')]();var fs_extra=require(_0xa25f('0x4'));var auth=require(_0xa25f('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa25f('0x6'));router['get']('/',auth[_0xa25f('0x7')](),controller[_0xa25f('0x8')]);router[_0xa25f('0x9')](_0xa25f('0xa'),auth[_0xa25f('0x7')](),controller[_0xa25f('0xb')]);router[_0xa25f('0x9')](_0xa25f('0xc'),auth[_0xa25f('0x7')](),controller['show']);router[_0xa25f('0xd')]('/',auth[_0xa25f('0x7')](),controller['create']);router[_0xa25f('0xe')](_0xa25f('0xc'),auth[_0xa25f('0x7')](),controller[_0xa25f('0xf')]);router['delete'](_0xa25f('0xc'),auth[_0xa25f('0x7')](),controller['destroy']);module[_0xa25f('0x10')]=router;
\ No newline at end of file
+var _0x31c2=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0x31c2,0x1e1));var _0x231c=function(_0x588fb7,_0x285246){_0x588fb7=_0x588fb7-0x0;var _0x121b6c=_0x31c2[_0x588fb7];return _0x121b6c;};'use strict';var multer=require(_0x231c('0x0'));var util=require(_0x231c('0x1'));var path=require(_0x231c('0x2'));var timeout=require(_0x231c('0x3'));var express=require(_0x231c('0x4'));var router=express[_0x231c('0x5')]();var fs_extra=require(_0x231c('0x6'));var auth=require(_0x231c('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x231c('0x8'));router[_0x231c('0x9')]('/',auth[_0x231c('0xa')](),controller[_0x231c('0xb')]);router['get'](_0x231c('0xc'),auth['isAuthenticated'](),controller[_0x231c('0xd')]);router[_0x231c('0x9')](_0x231c('0xe'),auth['isAuthenticated'](),controller[_0x231c('0xf')]);router[_0x231c('0x10')]('/',auth[_0x231c('0xa')](),controller[_0x231c('0x11')]);router[_0x231c('0x12')](_0x231c('0xe'),auth[_0x231c('0xa')](),controller['update']);router[_0x231c('0x13')](_0x231c('0xe'),auth['isAuthenticated'](),controller[_0x231c('0x14')]);module[_0x231c('0x15')]=router;
\ No newline at end of file
index 64718e9..f14eae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x10c3ff,_0x2c4a40){var _0x549cf3=function(_0x421a15){while(--_0x421a15){_0x10c3ff['push'](_0x10c3ff['shift']());}};_0x549cf3(++_0x2c4a40);}(_0xaa88,0x137));var _0x8aa8=function(_0x55abd9,_0x1148af){_0x55abd9=_0x55abd9-0x0;var _0x3e5669=_0xaa88[_0x55abd9];return _0x3e5669;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x86bed5,_0xa2634d){var _0x252d3a=function(_0x204248){while(--_0x204248){_0x86bed5['push'](_0x86bed5['shift']());}};_0x252d3a(++_0xa2634d);}(_0x9c44,0x178));var _0x49c4=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x9c44[_0x24061a];return _0x82054e;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 3cdd574..1b22c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe119=['filter','merge','where','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick'];(function(_0xb98867,_0x3cff73){var _0x38113e=function(_0x2ed0aa){while(--_0x2ed0aa){_0xb98867['push'](_0xb98867['shift']());}};_0x38113e(++_0x3cff73);}(_0xe119,0x1b8));var _0x9e11=function(_0x1256ca,_0x29a6c2){_0x1256ca=_0x1256ca-0x0;var _0x55fa8c=_0xe119[_0x1256ca];return _0x55fa8c;};'use strict';var emlformat=require(_0x9e11('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9e11('0x1'));var jsonpatch=require(_0x9e11('0x2'));var rp=require(_0x9e11('0x3'));var moment=require(_0x9e11('0x4'));var BPromise=require(_0x9e11('0x5'));var Mustache=require(_0x9e11('0x6'));var util=require(_0x9e11('0x7'));var path=require(_0x9e11('0x8'));var sox=require('sox');var csv=require(_0x9e11('0x9'));var ejs=require(_0x9e11('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e11('0xb'));var squel=require(_0x9e11('0xc'));var crypto=require(_0x9e11('0xd'));var jsforce=require(_0x9e11('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9e11('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9e11('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9e11('0x10'));var as=require(_0x9e11('0x11'));var hardwareService=require(_0x9e11('0x12'));var logger=require(_0x9e11('0x13'))(_0x9e11('0x14'));var utils=require('../../config/utils');var config=require(_0x9e11('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d1efe,_0x4c28ef){_0x4c28ef=_0x4c28ef||0xcc;return function(_0x288505){if(_0x288505){return _0x5d1efe[_0x9e11('0x16')](_0x4c28ef);}return _0x5d1efe[_0x9e11('0x17')](_0x4c28ef)[_0x9e11('0x18')]();};}function respondWithResult(_0x2ffe61,_0x1df457){_0x1df457=_0x1df457||0xc8;return function(_0x2fb514){if(_0x2fb514){return _0x2ffe61['status'](_0x1df457)['json'](_0x2fb514);}};}function respondWithFilteredResult(_0x36ac83,_0x1b9428){return function(_0x511706){if(_0x511706){var _0x3845e6=typeof _0x1b9428[_0x9e11('0x19')]===_0x9e11('0x1a')&&typeof _0x1b9428[_0x9e11('0x1b')]===_0x9e11('0x1a');var _0x1792f8=_0x511706['count'];var _0x581ef4=_0x3845e6?0x0:_0x1b9428[_0x9e11('0x19')];var _0x1d24a3=_0x3845e6?_0x511706[_0x9e11('0x1c')]:_0x1b9428['offset']+_0x1b9428[_0x9e11('0x1b')];var _0x2f68fb;if(_0x1d24a3>=_0x1792f8){_0x1d24a3=_0x1792f8;_0x2f68fb=0xc8;}else{_0x2f68fb=0xce;}_0x36ac83[_0x9e11('0x17')](_0x2f68fb);return _0x36ac83[_0x9e11('0x1d')](_0x9e11('0x1e'),_0x581ef4+'-'+_0x1d24a3+'/'+_0x1792f8)[_0x9e11('0x1f')](_0x511706);}return null;};}function patchUpdates(_0x4f3faa){return function(_0x1f6332){try{jsonpatch[_0x9e11('0x20')](_0x1f6332,_0x4f3faa,!![]);}catch(_0x4cc35c){return BPromise['reject'](_0x4cc35c);}return _0x1f6332[_0x9e11('0x21')]();};}function saveUpdates(_0x59e0e5,_0x35ba3b){return function(_0x552676){if(_0x552676){return _0x552676[_0x9e11('0x22')](_0x59e0e5)[_0x9e11('0x23')](function(_0x4d966e){return _0x4d966e;});}return null;};}function removeEntity(_0x5aeee9,_0x38965f){return function(_0x56ef1d){if(_0x56ef1d){return _0x56ef1d[_0x9e11('0x24')]()[_0x9e11('0x23')](function(){_0x5aeee9['status'](0xcc)[_0x9e11('0x18')]();});}};}function handleEntityNotFound(_0x4e3372,_0x19ead8){return function(_0x5215f2){if(!_0x5215f2){_0x4e3372[_0x9e11('0x16')](0x194);}return _0x5215f2;};}function handleError(_0x5326b7,_0x4fccc7){_0x4fccc7=_0x4fccc7||0x1f4;return function(_0x508dca){logger['error'](_0x508dca['stack']);if(_0x508dca[_0x9e11('0x25')]){delete _0x508dca['name'];}_0x5326b7[_0x9e11('0x17')](_0x4fccc7)[_0x9e11('0x26')](_0x508dca);};}exports[_0x9e11('0x27')]=function(_0x21f0b7,_0x503cfe){var _0x1883e4={},_0x17f9d3={},_0x42f093={'count':0x0,'rows':[]};var _0x15236e=_[_0x9e11('0x28')](db[_0x9e11('0x29')][_0x9e11('0x2a')],function(_0x197e46){return{'name':_0x197e46[_0x9e11('0x2b')],'type':_0x197e46[_0x9e11('0x2c')][_0x9e11('0x2d')]};});_0x17f9d3[_0x9e11('0x2e')]=_[_0x9e11('0x28')](_0x15236e,_0x9e11('0x25'));_0x17f9d3[_0x9e11('0x2f')]=_[_0x9e11('0x30')](_0x21f0b7[_0x9e11('0x2f')]);_0x17f9d3[_0x9e11('0x31')]=_['intersection'](_0x17f9d3[_0x9e11('0x2e')],_0x17f9d3[_0x9e11('0x2f')]);_0x1883e4[_0x9e11('0x32')]=_[_0x9e11('0x33')](_0x17f9d3[_0x9e11('0x2e')],qs[_0x9e11('0x34')](_0x21f0b7[_0x9e11('0x2f')]['fields']));_0x1883e4[_0x9e11('0x32')]=_0x1883e4[_0x9e11('0x32')][_0x9e11('0x35')]?_0x1883e4[_0x9e11('0x32')]:_0x17f9d3[_0x9e11('0x2e')];if(!_0x21f0b7[_0x9e11('0x2f')][_0x9e11('0x36')]('nolimit')){_0x1883e4[_0x9e11('0x1b')]=qs['limit'](_0x21f0b7['query'][_0x9e11('0x1b')]);_0x1883e4[_0x9e11('0x19')]=qs[_0x9e11('0x19')](_0x21f0b7['query'][_0x9e11('0x19')]);}_0x1883e4['order']=qs[_0x9e11('0x37')](_0x21f0b7[_0x9e11('0x2f')][_0x9e11('0x37')]);_0x1883e4['where']=qs[_0x9e11('0x31')](_[_0x9e11('0x38')](_0x21f0b7[_0x9e11('0x2f')],_0x17f9d3[_0x9e11('0x31')]),_0x15236e);if(_0x21f0b7['query'][_0x9e11('0x39')]){_0x1883e4['where']=_[_0x9e11('0x3a')](_0x1883e4[_0x9e11('0x3b')],{'$or':_[_0x9e11('0x28')](_0x15236e,function(_0x393830){if(_0x393830['type']!==_0x9e11('0x3c')){var _0xf9c89={};_0xf9c89[_0x393830[_0x9e11('0x25')]]={'$like':'%'+_0x21f0b7[_0x9e11('0x2f')][_0x9e11('0x39')]+'%'};return _0xf9c89;}})});}_0x1883e4=_[_0x9e11('0x3a')]({},_0x1883e4,_0x21f0b7[_0x9e11('0x3d')]);var _0x55f1fa={'where':_0x1883e4[_0x9e11('0x3b')]};return db['SmsTransferReport']['count'](_0x55f1fa)[_0x9e11('0x23')](function(_0x3516b8){_0x42f093[_0x9e11('0x1c')]=_0x3516b8;if(_0x21f0b7[_0x9e11('0x2f')][_0x9e11('0x3e')]){_0x1883e4[_0x9e11('0x3f')]=[{'all':!![]}];}return db[_0x9e11('0x29')][_0x9e11('0x40')](_0x1883e4);})['then'](function(_0x3ed2d1){_0x42f093['rows']=_0x3ed2d1;return _0x42f093;})[_0x9e11('0x23')](respondWithFilteredResult(_0x503cfe,_0x1883e4))[_0x9e11('0x41')](handleError(_0x503cfe,null));};exports['show']=function(_0x35fa9a,_0x20a42f){var _0x43007a={'raw':!![],'where':{'id':_0x35fa9a[_0x9e11('0x42')]['id']}},_0x220b54={};_0x220b54[_0x9e11('0x2e')]=_[_0x9e11('0x30')](db[_0x9e11('0x29')][_0x9e11('0x2a')]);_0x220b54[_0x9e11('0x2f')]=_['keys'](_0x35fa9a[_0x9e11('0x2f')]);_0x220b54[_0x9e11('0x31')]=_[_0x9e11('0x33')](_0x220b54[_0x9e11('0x2e')],_0x220b54[_0x9e11('0x2f')]);_0x43007a[_0x9e11('0x32')]=_[_0x9e11('0x33')](_0x220b54[_0x9e11('0x2e')],qs[_0x9e11('0x34')](_0x35fa9a[_0x9e11('0x2f')][_0x9e11('0x34')]));_0x43007a[_0x9e11('0x32')]=_0x43007a[_0x9e11('0x32')][_0x9e11('0x35')]?_0x43007a[_0x9e11('0x32')]:_0x220b54['model'];if(_0x35fa9a['query'][_0x9e11('0x3e')]){_0x43007a[_0x9e11('0x3f')]=[{'all':!![]}];}_0x43007a=_[_0x9e11('0x3a')]({},_0x43007a,_0x35fa9a[_0x9e11('0x3d')]);return db[_0x9e11('0x29')][_0x9e11('0x43')](_0x43007a)['then'](handleEntityNotFound(_0x20a42f,null))[_0x9e11('0x23')](respondWithResult(_0x20a42f,null))[_0x9e11('0x41')](handleError(_0x20a42f,null));};exports[_0x9e11('0x44')]=function(_0x251b91,_0x59dcbc){return db[_0x9e11('0x29')][_0x9e11('0x44')](_0x251b91[_0x9e11('0x45')],{})[_0x9e11('0x23')](respondWithResult(_0x59dcbc,0xc9))[_0x9e11('0x41')](handleError(_0x59dcbc,null));};exports[_0x9e11('0x22')]=function(_0x2668e9,_0x4f6395){if(_0x2668e9[_0x9e11('0x45')]['id']){delete _0x2668e9[_0x9e11('0x45')]['id'];}return db[_0x9e11('0x29')][_0x9e11('0x43')]({'where':{'id':_0x2668e9['params']['id']}})['then'](handleEntityNotFound(_0x4f6395,null))[_0x9e11('0x23')](saveUpdates(_0x2668e9[_0x9e11('0x45')],null))[_0x9e11('0x23')](respondWithResult(_0x4f6395,null))[_0x9e11('0x41')](handleError(_0x4f6395,null));};exports[_0x9e11('0x24')]=function(_0x3b1dc1,_0x203891){return db[_0x9e11('0x29')][_0x9e11('0x43')]({'where':{'id':_0x3b1dc1[_0x9e11('0x42')]['id']}})[_0x9e11('0x23')](handleEntityNotFound(_0x203891,null))['then'](removeEntity(_0x203891,null))[_0x9e11('0x41')](handleError(_0x203891,null));};exports[_0x9e11('0x46')]=function(_0x34ef7c,_0x4f58cd){return db[_0x9e11('0x29')][_0x9e11('0x46')]()[_0x9e11('0x23')](respondWithResult(_0x4f58cd,null))[_0x9e11('0x41')](handleError(_0x4f58cd,null));};
\ No newline at end of file
+var _0xb6af=['eml-format','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','json','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SmsTransferReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe'];(function(_0x34ad09,_0xba8f16){var _0x4c8431=function(_0x78b555){while(--_0x78b555){_0x34ad09['push'](_0x34ad09['shift']());}};_0x4c8431(++_0xba8f16);}(_0xb6af,0x1b0));var _0xfb6a=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0xb6af[_0x49d41c];return _0xb64c5f;};'use strict';var emlformat=require(_0xfb6a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfb6a('0x1'));var rp=require(_0xfb6a('0x2'));var moment=require(_0xfb6a('0x3'));var BPromise=require(_0xfb6a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xfb6a('0x5'));var sox=require(_0xfb6a('0x6'));var csv=require(_0xfb6a('0x7'));var ejs=require(_0xfb6a('0x8'));var fs=require('fs');var fs_extra=require(_0xfb6a('0x9'));var _=require('lodash');var squel=require(_0xfb6a('0xa'));var crypto=require(_0xfb6a('0xb'));var jsforce=require(_0xfb6a('0xc'));var deskjs=require(_0xfb6a('0xd'));var toCsv=require(_0xfb6a('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfb6a('0xe'));var as=require(_0xfb6a('0xf'));var hardwareService=require(_0xfb6a('0x10'));var logger=require(_0xfb6a('0x11'))(_0xfb6a('0x12'));var utils=require(_0xfb6a('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xfb6a('0x14'));var db=require(_0xfb6a('0x15'))['db'];function respondWithStatusCode(_0x2703f5,_0x1a99b7){_0x1a99b7=_0x1a99b7||0xcc;return function(_0x56d77d){if(_0x56d77d){return _0x2703f5['sendStatus'](_0x1a99b7);}return _0x2703f5['status'](_0x1a99b7)[_0xfb6a('0x16')]();};}function respondWithResult(_0x2297e4,_0x2395ca){_0x2395ca=_0x2395ca||0xc8;return function(_0x2fccf7){if(_0x2fccf7){return _0x2297e4[_0xfb6a('0x17')](_0x2395ca)['json'](_0x2fccf7);}};}function respondWithFilteredResult(_0x43a68d,_0x1ca9b6){return function(_0x5c5692){if(_0x5c5692){var _0x2c2a80=typeof _0x1ca9b6[_0xfb6a('0x18')]===_0xfb6a('0x19')&&typeof _0x1ca9b6[_0xfb6a('0x1a')]===_0xfb6a('0x19');var _0x5dbc7b=_0x5c5692['count'];var _0x3aa371=_0x2c2a80?0x0:_0x1ca9b6['offset'];var _0x47bdde=_0x2c2a80?_0x5c5692[_0xfb6a('0x1b')]:_0x1ca9b6[_0xfb6a('0x18')]+_0x1ca9b6[_0xfb6a('0x1a')];var _0x49423d;if(_0x47bdde>=_0x5dbc7b){_0x47bdde=_0x5dbc7b;_0x49423d=0xc8;}else{_0x49423d=0xce;}_0x43a68d['status'](_0x49423d);return _0x43a68d['set']('Content-Range',_0x3aa371+'-'+_0x47bdde+'/'+_0x5dbc7b)[_0xfb6a('0x1c')](_0x5c5692);}return null;};}function patchUpdates(_0x12f054){return function(_0x4fa352){try{jsonpatch['apply'](_0x4fa352,_0x12f054,!![]);}catch(_0x5039af){return BPromise[_0xfb6a('0x1d')](_0x5039af);}return _0x4fa352['save']();};}function saveUpdates(_0x4c8f59,_0x5e69e0){return function(_0x383e66){if(_0x383e66){return _0x383e66[_0xfb6a('0x1e')](_0x4c8f59)[_0xfb6a('0x1f')](function(_0x3d404b){return _0x3d404b;});}return null;};}function removeEntity(_0x1dbc08,_0xfb627){return function(_0x391a82){if(_0x391a82){return _0x391a82[_0xfb6a('0x20')]()['then'](function(){_0x1dbc08[_0xfb6a('0x17')](0xcc)[_0xfb6a('0x16')]();});}};}function handleEntityNotFound(_0x137627,_0x3b8fc0){return function(_0x28e663){if(!_0x28e663){_0x137627[_0xfb6a('0x21')](0x194);}return _0x28e663;};}function handleError(_0x2ac477,_0x24f95d){_0x24f95d=_0x24f95d||0x1f4;return function(_0x6a42ed){logger[_0xfb6a('0x22')](_0x6a42ed[_0xfb6a('0x23')]);if(_0x6a42ed[_0xfb6a('0x24')]){delete _0x6a42ed['name'];}_0x2ac477['status'](_0x24f95d)[_0xfb6a('0x25')](_0x6a42ed);};}exports[_0xfb6a('0x26')]=function(_0x3be50d,_0x49a3a0){var _0x5427ce={},_0x521bae={},_0x158572={'count':0x0,'rows':[]};var _0xbed98=_[_0xfb6a('0x27')](db['SmsTransferReport']['rawAttributes'],function(_0x4dc5d1){return{'name':_0x4dc5d1[_0xfb6a('0x28')],'type':_0x4dc5d1[_0xfb6a('0x29')][_0xfb6a('0x2a')]};});_0x521bae[_0xfb6a('0x2b')]=_[_0xfb6a('0x27')](_0xbed98,'name');_0x521bae['query']=_[_0xfb6a('0x2c')](_0x3be50d[_0xfb6a('0x2d')]);_0x521bae[_0xfb6a('0x2e')]=_[_0xfb6a('0x2f')](_0x521bae[_0xfb6a('0x2b')],_0x521bae[_0xfb6a('0x2d')]);_0x5427ce[_0xfb6a('0x30')]=_[_0xfb6a('0x2f')](_0x521bae[_0xfb6a('0x2b')],qs[_0xfb6a('0x31')](_0x3be50d[_0xfb6a('0x2d')][_0xfb6a('0x31')]));_0x5427ce[_0xfb6a('0x30')]=_0x5427ce['attributes'][_0xfb6a('0x32')]?_0x5427ce['attributes']:_0x521bae[_0xfb6a('0x2b')];if(!_0x3be50d['query']['hasOwnProperty'](_0xfb6a('0x33'))){_0x5427ce['limit']=qs[_0xfb6a('0x1a')](_0x3be50d[_0xfb6a('0x2d')][_0xfb6a('0x1a')]);_0x5427ce[_0xfb6a('0x18')]=qs[_0xfb6a('0x18')](_0x3be50d[_0xfb6a('0x2d')][_0xfb6a('0x18')]);}_0x5427ce[_0xfb6a('0x34')]=qs[_0xfb6a('0x35')](_0x3be50d[_0xfb6a('0x2d')][_0xfb6a('0x35')]);_0x5427ce[_0xfb6a('0x36')]=qs['filters'](_[_0xfb6a('0x37')](_0x3be50d[_0xfb6a('0x2d')],_0x521bae[_0xfb6a('0x2e')]),_0xbed98);if(_0x3be50d[_0xfb6a('0x2d')][_0xfb6a('0x38')]){_0x5427ce[_0xfb6a('0x36')]=_[_0xfb6a('0x39')](_0x5427ce[_0xfb6a('0x36')],{'$or':_[_0xfb6a('0x27')](_0xbed98,function(_0x32f6f7){if(_0x32f6f7[_0xfb6a('0x29')]!==_0xfb6a('0x3a')){var _0x227d1={};_0x227d1[_0x32f6f7[_0xfb6a('0x24')]]={'$like':'%'+_0x3be50d[_0xfb6a('0x2d')][_0xfb6a('0x38')]+'%'};return _0x227d1;}})});}_0x5427ce=_[_0xfb6a('0x39')]({},_0x5427ce,_0x3be50d[_0xfb6a('0x3b')]);var _0x348688={'where':_0x5427ce[_0xfb6a('0x36')]};return db[_0xfb6a('0x3c')]['count'](_0x348688)['then'](function(_0xa272b7){_0x158572['count']=_0xa272b7;if(_0x3be50d[_0xfb6a('0x2d')][_0xfb6a('0x3d')]){_0x5427ce[_0xfb6a('0x3e')]=[{'all':!![]}];}return db['SmsTransferReport'][_0xfb6a('0x3f')](_0x5427ce);})[_0xfb6a('0x1f')](function(_0x4078eb){_0x158572[_0xfb6a('0x40')]=_0x4078eb;return _0x158572;})[_0xfb6a('0x1f')](respondWithFilteredResult(_0x49a3a0,_0x5427ce))[_0xfb6a('0x41')](handleError(_0x49a3a0,null));};exports[_0xfb6a('0x42')]=function(_0x4ee35f,_0x1527be){var _0x103213={'raw':!![],'where':{'id':_0x4ee35f[_0xfb6a('0x43')]['id']}},_0x2c49a2={};_0x2c49a2['model']=_[_0xfb6a('0x2c')](db[_0xfb6a('0x3c')]['rawAttributes']);_0x2c49a2[_0xfb6a('0x2d')]=_[_0xfb6a('0x2c')](_0x4ee35f[_0xfb6a('0x2d')]);_0x2c49a2[_0xfb6a('0x2e')]=_[_0xfb6a('0x2f')](_0x2c49a2[_0xfb6a('0x2b')],_0x2c49a2[_0xfb6a('0x2d')]);_0x103213['attributes']=_[_0xfb6a('0x2f')](_0x2c49a2['model'],qs[_0xfb6a('0x31')](_0x4ee35f[_0xfb6a('0x2d')][_0xfb6a('0x31')]));_0x103213[_0xfb6a('0x30')]=_0x103213[_0xfb6a('0x30')][_0xfb6a('0x32')]?_0x103213[_0xfb6a('0x30')]:_0x2c49a2['model'];if(_0x4ee35f['query']['includeAll']){_0x103213[_0xfb6a('0x3e')]=[{'all':!![]}];}_0x103213=_[_0xfb6a('0x39')]({},_0x103213,_0x4ee35f[_0xfb6a('0x3b')]);return db[_0xfb6a('0x3c')][_0xfb6a('0x44')](_0x103213)[_0xfb6a('0x1f')](handleEntityNotFound(_0x1527be,null))[_0xfb6a('0x1f')](respondWithResult(_0x1527be,null))['catch'](handleError(_0x1527be,null));};exports[_0xfb6a('0x45')]=function(_0x52140b,_0x1de3c8){return db['SmsTransferReport'][_0xfb6a('0x45')](_0x52140b[_0xfb6a('0x46')],{})[_0xfb6a('0x1f')](respondWithResult(_0x1de3c8,0xc9))['catch'](handleError(_0x1de3c8,null));};exports[_0xfb6a('0x1e')]=function(_0x37335c,_0x3c2c78){if(_0x37335c[_0xfb6a('0x46')]['id']){delete _0x37335c['body']['id'];}return db[_0xfb6a('0x3c')][_0xfb6a('0x44')]({'where':{'id':_0x37335c[_0xfb6a('0x43')]['id']}})[_0xfb6a('0x1f')](handleEntityNotFound(_0x3c2c78,null))[_0xfb6a('0x1f')](saveUpdates(_0x37335c[_0xfb6a('0x46')],null))[_0xfb6a('0x1f')](respondWithResult(_0x3c2c78,null))[_0xfb6a('0x41')](handleError(_0x3c2c78,null));};exports['destroy']=function(_0x2faca0,_0x1221d2){return db[_0xfb6a('0x3c')]['find']({'where':{'id':_0x2faca0['params']['id']}})[_0xfb6a('0x1f')](handleEntityNotFound(_0x1221d2,null))[_0xfb6a('0x1f')](removeEntity(_0x1221d2,null))[_0xfb6a('0x41')](handleError(_0x1221d2,null));};exports[_0xfb6a('0x47')]=function(_0x33abe8,_0x71fc8e){return db[_0xfb6a('0x3c')][_0xfb6a('0x47')]()[_0xfb6a('0x1f')](respondWithResult(_0x71fc8e,null))['catch'](handleError(_0x71fc8e,null));};
\ No newline at end of file
index ddf9a51..557b945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cc7=['path','rimraf','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','request-promise'];(function(_0x45cc5c,_0x83a61b){var _0x2757da=function(_0x1955e6){while(--_0x1955e6){_0x45cc5c['push'](_0x45cc5c['shift']());}};_0x2757da(++_0x83a61b);}(_0x1cc7,0x15a));var _0x71cc=function(_0x44229a,_0x4987de){_0x44229a=_0x44229a-0x0;var _0x4ed9ca=_0x1cc7[_0x44229a];return _0x4ed9ca;};'use strict';var _=require(_0x71cc('0x0'));var util=require(_0x71cc('0x1'));var logger=require(_0x71cc('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x71cc('0x3'));var fs=require('fs');var path=require(_0x71cc('0x4'));var rimraf=require(_0x71cc('0x5'));var config=require('../../config/environment');var attributes=require('./smsTransferReport.attributes');module['exports']=function(_0x27a175,_0x4ecf81){return _0x27a175[_0x71cc('0x6')](_0x71cc('0x7'),attributes,{'tableName':_0x71cc('0x8'),'paranoid':![],'indexes':[{'name':_0x71cc('0x9'),'fields':[_0x71cc('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc30d=['SmsTransferReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./smsTransferReport.attributes','exports','define'];(function(_0x5e8091,_0x40fb73){var _0xa39e43=function(_0x559a8b){while(--_0x559a8b){_0x5e8091['push'](_0x5e8091['shift']());}};_0xa39e43(++_0x40fb73);}(_0xc30d,0x6e));var _0xdc30=function(_0x1098db,_0x39ba6b){_0x1098db=_0x1098db-0x0;var _0x14f090=_0xc30d[_0x1098db];return _0x14f090;};'use strict';var _=require(_0xdc30('0x0'));var util=require('util');var logger=require(_0xdc30('0x1'))(_0xdc30('0x2'));var moment=require(_0xdc30('0x3'));var BPromise=require(_0xdc30('0x4'));var rp=require(_0xdc30('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdc30('0x6'));var config=require('../../config/environment');var attributes=require(_0xdc30('0x7'));module[_0xdc30('0x8')]=function(_0x1d2db4,_0x3e480e){return _0x1d2db4[_0xdc30('0x9')](_0xdc30('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xdc30('0xb'),'fields':[_0xdc30('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5198493..c857625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55a5=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x261d99,_0x1114dd){var _0x50bbeb=function(_0x4515ff){while(--_0x4515ff){_0x261d99['push'](_0x261d99['shift']());}};_0x50bbeb(++_0x1114dd);}(_0x55a5,0xf7));var _0x555a=function(_0x4dfd10,_0x3169d5){_0x4dfd10=_0x4dfd10-0x0;var _0x267950=_0x55a5[_0x4dfd10];return _0x267950;};'use strict';var _=require(_0x555a('0x0'));var util=require('util');var moment=require(_0x555a('0x1'));var BPromise=require(_0x555a('0x2'));var rs=require(_0x555a('0x3'));var fs=require('fs');var Redis=require(_0x555a('0x4'));var db=require(_0x555a('0x5'))['db'];var utils=require(_0x555a('0x6'));var logger=require(_0x555a('0x7'))(_0x555a('0x8'));var config=require(_0x555a('0x9'));var jayson=require(_0x555a('0xa'));var client=jayson[_0x555a('0xb')][_0x555a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x365c37,_0x347461,_0x475b8d){return new BPromise(function(_0x4b5b8e,_0x2fed2e){return client[_0x555a('0xd')](_0x365c37,_0x475b8d)[_0x555a('0xe')](function(_0x23aeab){logger[_0x555a('0xf')](_0x555a('0x10'),_0x347461,_0x555a('0x11'));logger[_0x555a('0x12')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x347461,_0x555a('0x11'),JSON[_0x555a('0x13')](_0x23aeab));if(_0x23aeab[_0x555a('0x14')]){if(_0x23aeab[_0x555a('0x14')][_0x555a('0x15')]===0x1f4){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x347461,_0x23aeab['error']['message']);return _0x2fed2e(_0x23aeab[_0x555a('0x14')][_0x555a('0x16')]);}logger[_0x555a('0x14')](_0x555a('0x10'),_0x347461,_0x23aeab[_0x555a('0x14')][_0x555a('0x16')]);return _0x4b5b8e(_0x23aeab[_0x555a('0x14')][_0x555a('0x16')]);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x347461,'request\x20sent');_0x4b5b8e(_0x23aeab[_0x555a('0x17')][_0x555a('0x16')]);}})[_0x555a('0x18')](function(_0x5ef2c2){logger[_0x555a('0x14')](_0x555a('0x10'),_0x347461,_0x5ef2c2);_0x2fed2e(_0x5ef2c2);});});}
\ No newline at end of file
+var _0x57cf=['debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x502bdf,_0x7475ad){var _0x10398a=function(_0x6c4dc5){while(--_0x6c4dc5){_0x502bdf['push'](_0x502bdf['shift']());}};_0x10398a(++_0x7475ad);}(_0x57cf,0x11b));var _0xf57c=function(_0x280bb5,_0x4a1aff){_0x280bb5=_0x280bb5-0x0;var _0x2b760c=_0x57cf[_0x280bb5];return _0x2b760c;};'use strict';var _=require(_0xf57c('0x0'));var util=require(_0xf57c('0x1'));var moment=require(_0xf57c('0x2'));var BPromise=require(_0xf57c('0x3'));var rs=require(_0xf57c('0x4'));var fs=require('fs');var Redis=require(_0xf57c('0x5'));var db=require(_0xf57c('0x6'))['db'];var utils=require(_0xf57c('0x7'));var logger=require(_0xf57c('0x8'))(_0xf57c('0x9'));var config=require('../../config/environment');var jayson=require(_0xf57c('0xa'));var client=jayson['client'][_0xf57c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5816f5,_0x53ed52,_0x21a69d){return new BPromise(function(_0x4867f6,_0x2cbb69){return client[_0xf57c('0xc')](_0x5816f5,_0x21a69d)['then'](function(_0x5b5314){logger[_0xf57c('0xd')](_0xf57c('0xe'),_0x53ed52,_0xf57c('0xf'));logger[_0xf57c('0x10')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x53ed52,_0xf57c('0xf'),JSON[_0xf57c('0x11')](_0x5b5314));if(_0x5b5314[_0xf57c('0x12')]){if(_0x5b5314['error'][_0xf57c('0x13')]===0x1f4){logger['error'](_0xf57c('0xe'),_0x53ed52,_0x5b5314[_0xf57c('0x12')]['message']);return _0x2cbb69(_0x5b5314[_0xf57c('0x12')]['message']);}logger[_0xf57c('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x53ed52,_0x5b5314[_0xf57c('0x12')][_0xf57c('0x14')]);return _0x4867f6(_0x5b5314[_0xf57c('0x12')][_0xf57c('0x14')]);}else{logger[_0xf57c('0xd')](_0xf57c('0xe'),_0x53ed52,_0xf57c('0xf'));_0x4867f6(_0x5b5314[_0xf57c('0x15')]['message']);}})[_0xf57c('0x16')](function(_0x524084){logger[_0xf57c('0x12')](_0xf57c('0xe'),_0x53ed52,_0x524084);_0x2cbb69(_0x524084);});});}
\ No newline at end of file
index f528090..e2885e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0755=['/:id','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','single','create','update','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','index','get'];(function(_0x46fa73,_0x2d1a35){var _0x1a6745=function(_0x3aab81){while(--_0x3aab81){_0x46fa73['push'](_0x46fa73['shift']());}};_0x1a6745(++_0x2d1a35);}(_0x0755,0x194));var _0x5075=function(_0x48d194,_0x1f1c7b){_0x48d194=_0x48d194-0x0;var _0x20282b=_0x0755[_0x48d194];return _0x20282b;};'use strict';var multer=require(_0x5075('0x0'));var util=require(_0x5075('0x1'));var path=require('path');var timeout=require(_0x5075('0x2'));var express=require('express');var router=express[_0x5075('0x3')]();var fs_extra=require(_0x5075('0x4'));var auth=require(_0x5075('0x5'));var interaction=require(_0x5075('0x6'));var config=require(_0x5075('0x7'));var controller=require(_0x5075('0x8'));router['get']('/',auth[_0x5075('0x9')](),controller[_0x5075('0xa')]);router[_0x5075('0xb')](_0x5075('0xc'),auth[_0x5075('0x9')](),controller[_0x5075('0xd')]);router['get'](_0x5075('0xe'),auth[_0x5075('0x9')](),controller[_0x5075('0xf')]);var upload=multer({'storage':multer[_0x5075('0x10')]({'destination':function(_0x43e0cc,_0x42f78a,_0x31da80){_0x31da80(null,path[_0x5075('0x11')](config[_0x5075('0x12')],_0x5075('0x13')));},'filename':function(_0x319365,_0x518e9b,_0xbd954d){_0x518e9b[_0x5075('0x14')]=_0x518e9b[_0x5075('0x14')][_0x5075('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xbd954d(null,util[_0x5075('0x16')](_0x5075('0x17'),path['basename'](_0x518e9b['originalname'],path[_0x5075('0x18')](_0x518e9b[_0x5075('0x14')])),Date[_0x5075('0x19')](),path[_0x5075('0x18')](_0x518e9b[_0x5075('0x14')])));}})});router[_0x5075('0x1a')]('/',upload[_0x5075('0x1b')]('file'),controller[_0x5075('0x1c')]);router['put'](_0x5075('0xc'),auth[_0x5075('0x9')](),controller[_0x5075('0x1d')]);router[_0x5075('0x1e')](_0x5075('0xc'),auth[_0x5075('0x9')](),controller[_0x5075('0x1e')]);module[_0x5075('0x1f')]=router;
\ No newline at end of file
+var _0x710e=['originalname','replace','format','%s-%s%s','basename','extname','post','single','put','update','delete','/:id','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./sound.controller','index','get','isAuthenticated','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/'];(function(_0x15eab7,_0x49bed6){var _0x1f15c6=function(_0x33acb0){while(--_0x33acb0){_0x15eab7['push'](_0x15eab7['shift']());}};_0x1f15c6(++_0x49bed6);}(_0x710e,0x139));var _0xe710=function(_0x29c309,_0x4f3434){_0x29c309=_0x29c309-0x0;var _0x56f03d=_0x710e[_0x29c309];return _0x56f03d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe710('0x0'));var timeout=require(_0xe710('0x1'));var express=require(_0xe710('0x2'));var router=express['Router']();var fs_extra=require(_0xe710('0x3'));var auth=require(_0xe710('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe710('0x5'));var controller=require(_0xe710('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xe710('0x7')]);router[_0xe710('0x8')]('/:id',auth[_0xe710('0x9')](),controller[_0xe710('0xa')]);router[_0xe710('0x8')](_0xe710('0xb'),auth[_0xe710('0x9')](),controller[_0xe710('0xc')]);var upload=multer({'storage':multer[_0xe710('0xd')]({'destination':function(_0x33851c,_0x7fc5,_0x2f333b){_0x2f333b(null,path[_0xe710('0xe')](config[_0xe710('0xf')],_0xe710('0x10')));},'filename':function(_0x31956b,_0x1fe8ca,_0x1926d1){_0x1fe8ca['originalname']=_0x1fe8ca[_0xe710('0x11')][_0xe710('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1926d1(null,util[_0xe710('0x13')](_0xe710('0x14'),path[_0xe710('0x15')](_0x1fe8ca[_0xe710('0x11')],path[_0xe710('0x16')](_0x1fe8ca[_0xe710('0x11')])),Date['now'](),path[_0xe710('0x16')](_0x1fe8ca[_0xe710('0x11')])));}})});router[_0xe710('0x17')]('/',upload[_0xe710('0x18')]('file'),controller['create']);router[_0xe710('0x19')]('/:id',auth[_0xe710('0x9')](),controller[_0xe710('0x1a')]);router[_0xe710('0x1b')](_0xe710('0x1c'),auth[_0xe710('0x9')](),controller[_0xe710('0x1b')]);module[_0xe710('0x1d')]=router;
\ No newline at end of file
index d88c455..7f6245f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf08=['name','FLOAT','BIGINT','INTEGER','sequelize','STRING'];(function(_0x221779,_0x542818){var _0x5270b5=function(_0x31dc10){while(--_0x31dc10){_0x221779['push'](_0x221779['shift']());}};_0x5270b5(++_0x542818);}(_0xcf08,0x11e));var _0x8cf0=function(_0x59cb09,_0x5c764a){_0x59cb09=_0x59cb09-0x0;var _0x2d117e=_0xcf08[_0x59cb09];return _0x2d117e;};'use strict';var Sequelize=require(_0x8cf0('0x0'));module['exports']={'name':{'type':Sequelize[_0x8cf0('0x1')],'unique':_0x8cf0('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x8cf0('0x1')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x8cf0('0x1')]},'original_format':{'type':Sequelize[_0x8cf0('0x1')]},'original_duration':{'type':Sequelize[_0x8cf0('0x3')]},'original_sampleCount':{'type':Sequelize[_0x8cf0('0x4')]},'original_channelCount':{'type':Sequelize[_0x8cf0('0x5')]},'original_bitRate':{'type':Sequelize[_0x8cf0('0x4')]},'original_sampleRate':{'type':Sequelize[_0x8cf0('0x5')]},'converted_format':{'type':Sequelize[_0x8cf0('0x1')]},'converted_duration':{'type':Sequelize[_0x8cf0('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x8cf0('0x4')]},'converted_channelCount':{'type':Sequelize[_0x8cf0('0x5')]},'converted_bitRate':{'type':Sequelize[_0x8cf0('0x4')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x9f8a=['sequelize','exports','STRING','name','FLOAT','INTEGER','BIGINT'];(function(_0x3322a0,_0xc75fc7){var _0x15be8e=function(_0x44983b){while(--_0x44983b){_0x3322a0['push'](_0x3322a0['shift']());}};_0x15be8e(++_0xc75fc7);}(_0x9f8a,0xa1));var _0xa9f8=function(_0x271b32,_0x2df4b9){_0x271b32=_0x271b32-0x0;var _0x2b4398=_0x9f8a[_0x271b32];return _0x2b4398;};'use strict';var Sequelize=require(_0xa9f8('0x0'));module[_0xa9f8('0x1')]={'name':{'type':Sequelize[_0xa9f8('0x2')],'unique':_0xa9f8('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xa9f8('0x2')]},'display_name':{'type':Sequelize[_0xa9f8('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xa9f8('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0xa9f8('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0xa9f8('0x5')]},'original_bitRate':{'type':Sequelize[_0xa9f8('0x6')]},'original_sampleRate':{'type':Sequelize[_0xa9f8('0x5')]},'converted_format':{'type':Sequelize[_0xa9f8('0x2')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0xa9f8('0x6')]},'converted_channelCount':{'type':Sequelize[_0xa9f8('0x5')]},'converted_bitRate':{'type':Sequelize[_0xa9f8('0x6')]},'converted_sampleRate':{'type':Sequelize[_0xa9f8('0x5')]}};
\ No newline at end of file
index 616dc73..eeac5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b6=['where','filters','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','show','params','rawAttributes','include','options','catch','find','converted_format','existsSync','root','save_name','Sequelize','Sound\x20not\x20found','download','server/files/sounds/converted','%s.%s','format','create','file','originalname','extname','filename','substring','join','info','Sound\x20upload\x20filepath:\x20%s','transcode','wav','unlinkSync','send','src','original_duration','duration','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_sampleRate','chmodSync','0777','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','delete','server/files/sounds/original','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','apply','reject','save','update','destroy','get','Sounds','UserProfileResource','then','error','name','index','map','Sound','fieldName','type','model','query','keys','intersection','fields','attributes','length','nolimit','sort'];(function(_0x2ace79,_0x1d9354){var _0x2fa06f=function(_0x49cecc){while(--_0x49cecc){_0x2ace79['push'](_0x2ace79['shift']());}};_0x2fa06f(++_0x1d9354);}(_0x26b6,0xc1));var _0x626b=function(_0x1fb594,_0x461616){_0x1fb594=_0x1fb594-0x0;var _0x430937=_0x26b6[_0x1fb594];return _0x430937;};'use strict';var emlformat=require(_0x626b('0x0'));var rimraf=require(_0x626b('0x1'));var zipdir=require(_0x626b('0x2'));var jsonpatch=require(_0x626b('0x3'));var rp=require(_0x626b('0x4'));var moment=require(_0x626b('0x5'));var BPromise=require(_0x626b('0x6'));var Mustache=require('mustache');var util=require(_0x626b('0x7'));var path=require(_0x626b('0x8'));var sox=require(_0x626b('0x9'));var csv=require('to-csv');var ejs=require(_0x626b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x626b('0xb'));var squel=require(_0x626b('0xc'));var crypto=require(_0x626b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x626b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x626b('0xf'));var Papa=require(_0x626b('0x10'));var Redis=require(_0x626b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x626b('0x12'));var as=require(_0x626b('0x13'));var hardwareService=require(_0x626b('0x14'));var logger=require(_0x626b('0x15'))(_0x626b('0x16'));var utils=require(_0x626b('0x17'));var config=require(_0x626b('0x18'));var licenseUtil=require(_0x626b('0x19'));var db=require(_0x626b('0x1a'))['db'];function respondWithStatusCode(_0x196934,_0x5b3441){_0x5b3441=_0x5b3441||0xcc;return function(_0xda67d2){if(_0xda67d2){return _0x196934[_0x626b('0x1b')](_0x5b3441);}return _0x196934[_0x626b('0x1c')](_0x5b3441)[_0x626b('0x1d')]();};}function respondWithResult(_0x3fdcce,_0x44eff9){_0x44eff9=_0x44eff9||0xc8;return function(_0x11ba94){if(_0x11ba94){return _0x3fdcce[_0x626b('0x1c')](_0x44eff9)[_0x626b('0x1e')](_0x11ba94);}};}function respondWithFilteredResult(_0x27e139,_0x4f6af9){return function(_0xae7f88){if(_0xae7f88){var _0x22f758=typeof _0x4f6af9[_0x626b('0x1f')]==='undefined'&&typeof _0x4f6af9[_0x626b('0x20')]===_0x626b('0x21');var _0x240ef6=_0xae7f88['count'];var _0x845e2=_0x22f758?0x0:_0x4f6af9['offset'];var _0x274190=_0x22f758?_0xae7f88['count']:_0x4f6af9['offset']+_0x4f6af9['limit'];var _0x2edc23;if(_0x274190>=_0x240ef6){_0x274190=_0x240ef6;_0x2edc23=0xc8;}else{_0x2edc23=0xce;}_0x27e139[_0x626b('0x1c')](_0x2edc23);return _0x27e139[_0x626b('0x22')](_0x626b('0x23'),_0x845e2+'-'+_0x274190+'/'+_0x240ef6)[_0x626b('0x1e')](_0xae7f88);}return null;};}function patchUpdates(_0x56cb15){return function(_0xba8b80){try{jsonpatch[_0x626b('0x24')](_0xba8b80,_0x56cb15,!![]);}catch(_0x11e8b7){return BPromise[_0x626b('0x25')](_0x11e8b7);}return _0xba8b80[_0x626b('0x26')]();};}function saveUpdates(_0xaadffa,_0x345480){return function(_0x32df8d){if(_0x32df8d){return _0x32df8d[_0x626b('0x27')](_0xaadffa)['then'](function(_0x3c124c){return _0x3c124c;});}return null;};}function removeEntity(_0x292164,_0x30cdcf){return function(_0x1ed729){if(_0x1ed729){return _0x1ed729[_0x626b('0x28')]()['then'](function(){var _0x65692a=_0x1ed729[_0x626b('0x29')]({'plain':!![]});var _0x477aad=_0x626b('0x2a');return db[_0x626b('0x2b')][_0x626b('0x28')]({'where':{'type':_0x477aad,'resourceId':_0x65692a['id']}})[_0x626b('0x2c')](function(){return _0x1ed729;});})['then'](function(){_0x292164[_0x626b('0x1c')](0xcc)[_0x626b('0x1d')]();});}};}function handleEntityNotFound(_0x4bae00,_0x2c029c){return function(_0xfa8947){if(!_0xfa8947){_0x4bae00[_0x626b('0x1b')](0x194);}return _0xfa8947;};}function handleError(_0x2e1edf,_0x938049){_0x938049=_0x938049||0x1f4;return function(_0x56754b){logger[_0x626b('0x2d')](_0x56754b['stack']);if(_0x56754b['name']){delete _0x56754b[_0x626b('0x2e')];}_0x2e1edf[_0x626b('0x1c')](_0x938049)['send'](_0x56754b);};}exports[_0x626b('0x2f')]=function(_0x2ee081,_0x5a4e91){var _0x3afbc5={},_0x2c7dfa={},_0x36d426={'count':0x0,'rows':[]};var _0xe75a72=_[_0x626b('0x30')](db[_0x626b('0x31')]['rawAttributes'],function(_0xb550bb){return{'name':_0xb550bb[_0x626b('0x32')],'type':_0xb550bb[_0x626b('0x33')]['key']};});_0x2c7dfa[_0x626b('0x34')]=_[_0x626b('0x30')](_0xe75a72,'name');_0x2c7dfa[_0x626b('0x35')]=_[_0x626b('0x36')](_0x2ee081['query']);_0x2c7dfa['filters']=_[_0x626b('0x37')](_0x2c7dfa[_0x626b('0x34')],_0x2c7dfa[_0x626b('0x35')]);_0x3afbc5['attributes']=_[_0x626b('0x37')](_0x2c7dfa['model'],qs[_0x626b('0x38')](_0x2ee081['query'][_0x626b('0x38')]));_0x3afbc5[_0x626b('0x39')]=_0x3afbc5['attributes'][_0x626b('0x3a')]?_0x3afbc5[_0x626b('0x39')]:_0x2c7dfa[_0x626b('0x34')];if(!_0x2ee081[_0x626b('0x35')]['hasOwnProperty'](_0x626b('0x3b'))){_0x3afbc5[_0x626b('0x20')]=qs['limit'](_0x2ee081['query'][_0x626b('0x20')]);_0x3afbc5[_0x626b('0x1f')]=qs[_0x626b('0x1f')](_0x2ee081[_0x626b('0x35')][_0x626b('0x1f')]);}_0x3afbc5['order']=qs['sort'](_0x2ee081[_0x626b('0x35')][_0x626b('0x3c')]);_0x3afbc5[_0x626b('0x3d')]=qs[_0x626b('0x3e')](_[_0x626b('0x3f')](_0x2ee081['query'],_0x2c7dfa[_0x626b('0x3e')]),_0xe75a72);if(_0x2ee081[_0x626b('0x35')][_0x626b('0x40')]){_0x3afbc5['where']=_[_0x626b('0x41')](_0x3afbc5['where'],{'$or':_[_0x626b('0x30')](_0xe75a72,function(_0x588508){if(_0x588508[_0x626b('0x33')]!==_0x626b('0x42')){var _0xcfa9d1={};_0xcfa9d1[_0x588508['name']]={'$like':'%'+_0x2ee081['query']['filter']+'%'};return _0xcfa9d1;}})});}_0x3afbc5=_[_0x626b('0x41')]({},_0x3afbc5,_0x2ee081['options']);var _0x57a6f8={'where':_0x3afbc5[_0x626b('0x3d')]};return db[_0x626b('0x31')][_0x626b('0x43')](_0x57a6f8)[_0x626b('0x2c')](function(_0x336c80){_0x36d426[_0x626b('0x43')]=_0x336c80;if(_0x2ee081['query'][_0x626b('0x44')]){_0x3afbc5['include']=[{'all':!![]}];}return db[_0x626b('0x31')][_0x626b('0x45')](_0x3afbc5);})[_0x626b('0x2c')](function(_0x3d4f26){_0x36d426[_0x626b('0x46')]=_0x3d4f26;return _0x36d426;})[_0x626b('0x2c')](respondWithFilteredResult(_0x5a4e91,_0x3afbc5))['catch'](handleError(_0x5a4e91,null));};exports[_0x626b('0x47')]=function(_0x433d90,_0x360d99){var _0x57eac9={'raw':!![],'where':{'id':_0x433d90[_0x626b('0x48')]['id']}},_0x43b4bf={};_0x43b4bf[_0x626b('0x34')]=_[_0x626b('0x36')](db['Sound'][_0x626b('0x49')]);_0x43b4bf[_0x626b('0x35')]=_[_0x626b('0x36')](_0x433d90[_0x626b('0x35')]);_0x43b4bf['filters']=_[_0x626b('0x37')](_0x43b4bf['model'],_0x43b4bf[_0x626b('0x35')]);_0x57eac9[_0x626b('0x39')]=_[_0x626b('0x37')](_0x43b4bf[_0x626b('0x34')],qs[_0x626b('0x38')](_0x433d90[_0x626b('0x35')][_0x626b('0x38')]));_0x57eac9[_0x626b('0x39')]=_0x57eac9['attributes'][_0x626b('0x3a')]?_0x57eac9[_0x626b('0x39')]:_0x43b4bf['model'];if(_0x433d90[_0x626b('0x35')][_0x626b('0x44')]){_0x57eac9[_0x626b('0x4a')]=[{'all':!![]}];}_0x57eac9=_['merge']({},_0x57eac9,_0x433d90[_0x626b('0x4b')]);return db['Sound']['find'](_0x57eac9)[_0x626b('0x2c')](handleEntityNotFound(_0x360d99,null))[_0x626b('0x2c')](respondWithResult(_0x360d99,null))[_0x626b('0x4c')](handleError(_0x360d99,null));};exports['download']=function(_0x331a2a,_0x4ee795,_0x541f90){return db[_0x626b('0x31')][_0x626b('0x4d')]({'where':{'id':_0x331a2a['params']['id']},'attributes':['name','save_name',_0x626b('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x4ee795,null))[_0x626b('0x2c')](function(_0x1f9294){if(_0x1f9294){if(!fs[_0x626b('0x4f')](path['join'](config[_0x626b('0x50')],'server/files/sounds/converted',_0x1f9294[_0x626b('0x51')]+'.'+_0x1f9294[_0x626b('0x4e')]))){throw new db[(_0x626b('0x52'))]['ValidationError'](_0x626b('0x53'));}return _0x4ee795[_0x626b('0x54')](path['join'](config[_0x626b('0x50')],_0x626b('0x55'),util['format'](_0x626b('0x56'),_0x1f9294['save_name'],_0x1f9294[_0x626b('0x4e')])),util[_0x626b('0x57')]('%s.%s',_0x1f9294[_0x626b('0x2e')],_0x1f9294[_0x626b('0x4e')]));}return null;})['catch'](handleError(_0x4ee795,null));};exports[_0x626b('0x58')]=function(_0x6b6ec5,_0x8088e6,_0x121682){var _0x5e4389={'name':path['basename'](_0x6b6ec5[_0x626b('0x59')][_0x626b('0x5a')],path['extname'](_0x6b6ec5[_0x626b('0x59')]['originalname'])),'save_name':path['basename'](_0x6b6ec5[_0x626b('0x59')]['filename'],path[_0x626b('0x5b')](_0x6b6ec5[_0x626b('0x59')][_0x626b('0x5c')])),'original_format':path['extname'](_0x6b6ec5[_0x626b('0x59')]['originalname'])[_0x626b('0x5d')](0x1),'converted_format':'wav'};var _0x26a39c=path[_0x626b('0x5e')](config[_0x626b('0x50')],'server/files/sounds/original',_0x6b6ec5[_0x626b('0x59')][_0x626b('0x5c')]);var _0x3e6884=path[_0x626b('0x5e')](config[_0x626b('0x50')],_0x626b('0x55'),util[_0x626b('0x57')](_0x626b('0x56'),path['basename'](_0x6b6ec5['file'][_0x626b('0x5c')],path[_0x626b('0x5b')](_0x6b6ec5[_0x626b('0x59')][_0x626b('0x5c')])),_0x5e4389['converted_format']));logger[_0x626b('0x5f')](_0x626b('0x60'),_0x26a39c);logger[_0x626b('0x5f')]('Sound\x20upload\x20destination:\x20%s',_0x3e6884);try{fs['chmodSync'](_0x26a39c,parseInt('0777',0x8));var _0x34cd33=sox[_0x626b('0x61')](_0x26a39c,_0x3e6884,{'sampleRate':0x1f40,'format':_0x626b('0x62'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x34cd33['on'](_0x626b('0x2d'),function(_0x39bc76){fs[_0x626b('0x63')](_0x26a39c);_0x8088e6[_0x626b('0x1c')](0x1f4)[_0x626b('0x64')](_0x39bc76);});_0x34cd33['on'](_0x626b('0x65'),function(_0x548337){_0x5e4389[_0x626b('0x66')]=isNaN(_0x548337[_0x626b('0x67')])?null:_0x548337['duration']*0x3e8;_0x5e4389['original_sampleCount']=isNaN(_0x548337['sampleCount'])?null:_0x548337[_0x626b('0x68')];_0x5e4389[_0x626b('0x69')]=isNaN(_0x548337['channelCount'])?null:_0x548337[_0x626b('0x6a')];_0x5e4389[_0x626b('0x6b')]=isNaN(_0x548337['bitRate'])?null:_0x548337[_0x626b('0x6c')];_0x5e4389[_0x626b('0x6d')]=isNaN(_0x548337[_0x626b('0x6e')])?null:_0x548337[_0x626b('0x6e')];});_0x34cd33['on'](_0x626b('0x6f'),function(_0x8443e1){_0x5e4389[_0x626b('0x70')]=isNaN(_0x8443e1[_0x626b('0x67')])?null:_0x8443e1[_0x626b('0x67')]*0x3e8;_0x5e4389[_0x626b('0x71')]=isNaN(_0x8443e1[_0x626b('0x68')])?null:_0x8443e1[_0x626b('0x68')];_0x5e4389[_0x626b('0x72')]=isNaN(_0x8443e1['channelCount'])?null:_0x8443e1['channelCount'];_0x5e4389['converted_bitRate']=isNaN(_0x8443e1[_0x626b('0x6c')])?null:_0x8443e1['bitRate'];_0x5e4389[_0x626b('0x73')]=isNaN(_0x8443e1[_0x626b('0x6e')])?null:_0x8443e1[_0x626b('0x6e')];});_0x34cd33['on'](_0x626b('0x1d'),function(){fs[_0x626b('0x74')](_0x3e6884,parseInt(_0x626b('0x75'),0x8));return db['Sound'][_0x626b('0x58')](_0x5e4389)[_0x626b('0x2c')](function(_0x31b922){var _0x41b46a={'role':_0x6b6ec5['body'][_0x626b('0x76')],'userProfileId':_0x6b6ec5['body']['userProfileId']};if(!_0x41b46a)throw new Error(_0x626b('0x77'));if(_0x41b46a[_0x626b('0x76')]===_0x626b('0x78')){var _0xa01aaf=_0x31b922[_0x626b('0x29')]({'plain':!![]});return db[_0x626b('0x79')][_0x626b('0x4d')]({'where':{'name':'Sounds','userProfileId':_0x41b46a['userProfileId']},'raw':!![]})[_0x626b('0x2c')](function(_0x5929bd){if(_0x5929bd&&_0x5929bd['autoAssociation']===0x0){return db['UserProfileResource'][_0x626b('0x58')]({'name':_0xa01aaf['name'],'resourceId':_0xa01aaf['id'],'type':_0x5929bd[_0x626b('0x2e')],'sectionId':_0x5929bd['id']},{})[_0x626b('0x2c')](function(){return _0x31b922;});}else{return _0x31b922;}})[_0x626b('0x4c')](function(_0x3765d3){logger[_0x626b('0x2d')](_0x626b('0x7a'),_0x3765d3);throw _0x3765d3;});}return _0x31b922;})[_0x626b('0x2c')](respondWithResult(_0x8088e6,null))[_0x626b('0x4c')](handleError(_0x8088e6,null));});_0x34cd33['start']();}catch(_0x1b0a00){_0x8088e6['status'](0x1f4)['send'](_0x1b0a00);}};exports[_0x626b('0x27')]=function(_0x2dc5f2,_0x2d6251,_0x4421d1){return db[_0x626b('0x31')][_0x626b('0x4d')]({'where':{'id':_0x2dc5f2[_0x626b('0x48')]['id']}})['then'](handleEntityNotFound(_0x2d6251,null))[_0x626b('0x2c')](saveUpdates(_[_0x626b('0x3f')](_0x2dc5f2[_0x626b('0x7b')],['name','description']),null))[_0x626b('0x2c')](respondWithResult(_0x2d6251,null))['catch'](handleError(_0x2d6251,null));};exports[_0x626b('0x7c')]=function(_0x180b60,_0x110808,_0x47433b){return db[_0x626b('0x31')][_0x626b('0x4d')]({'where':{'id':_0x180b60[_0x626b('0x48')]['id']}})[_0x626b('0x2c')](function(_0x3e81f1){if(_0x3e81f1){return _0x3e81f1['destroy']();}})[_0x626b('0x2c')](function(_0x218384){var _0x4e5e9c=path[_0x626b('0x5e')](config[_0x626b('0x50')],_0x626b('0x7d'),util[_0x626b('0x57')](_0x626b('0x56'),_0x218384['save_name'],_0x218384[_0x626b('0x7e')]));var _0x221fb1=path[_0x626b('0x5e')](config[_0x626b('0x50')],_0x626b('0x55'),util[_0x626b('0x57')](_0x626b('0x56'),_0x218384['save_name'],_0x218384['converted_format']));fs[_0x626b('0x63')](_0x4e5e9c);fs[_0x626b('0x63')](_0x221fb1);return _0x218384;})[_0x626b('0x2c')](function(_0x5d21ad){if(_0x5d21ad){return _0x110808[_0x626b('0x1c')](0xcc)[_0x626b('0x1d')]();}})['then'](handleEntityNotFound(_0x110808,null))[_0x626b('0x4c')](handleError(_0x110808,null));};
\ No newline at end of file
+var _0x9075=['attributes','fields','length','hasOwnProperty','order','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','download','params','save_name','existsSync','join','root','server/files/sounds/converted','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','%s.%s','basename','file','originalname','extname','filename','substring','wav','info','chmodSync','transcode','error','original_duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','dest','converted_duration','duration','converted_sampleCount','converted_bitRate','converted_sampleRate','sampleRate','0777','body','role','userProfileId','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','pick','description','destroy','server/files/sounds/original','format','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','get','Sounds','end','sendStatus','stack','send','index','map','Sound','fieldName','key','model','name','query','keys','filters','intersection'];(function(_0x5c70d0,_0xfeac42){var _0x484491=function(_0x533149){while(--_0x533149){_0x5c70d0['push'](_0x5c70d0['shift']());}};_0x484491(++_0xfeac42);}(_0x9075,0x1b0));var _0x5907=function(_0x3a16d4,_0x23ecda){_0x3a16d4=_0x3a16d4-0x0;var _0x31ea9c=_0x9075[_0x3a16d4];return _0x31ea9c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5907('0x0'));var zipdir=require(_0x5907('0x1'));var jsonpatch=require(_0x5907('0x2'));var rp=require(_0x5907('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5907('0x4'));var path=require(_0x5907('0x5'));var sox=require(_0x5907('0x6'));var csv=require(_0x5907('0x7'));var ejs=require(_0x5907('0x8'));var fs=require('fs');var fs_extra=require(_0x5907('0x9'));var _=require(_0x5907('0xa'));var squel=require(_0x5907('0xb'));var crypto=require(_0x5907('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5907('0xd'));var toCsv=require(_0x5907('0x7'));var querystring=require('querystring');var Papa=require(_0x5907('0xe'));var Redis=require('ioredis');var authService=require(_0x5907('0xf'));var qs=require(_0x5907('0x10'));var as=require(_0x5907('0x11'));var hardwareService=require(_0x5907('0x12'));var logger=require(_0x5907('0x13'))(_0x5907('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5907('0x15'));var db=require(_0x5907('0x16'))['db'];function respondWithStatusCode(_0x3b7498,_0x41942b){_0x41942b=_0x41942b||0xcc;return function(_0x55f63d){if(_0x55f63d){return _0x3b7498['sendStatus'](_0x41942b);}return _0x3b7498[_0x5907('0x17')](_0x41942b)['end']();};}function respondWithResult(_0x5a730e,_0x1fe706){_0x1fe706=_0x1fe706||0xc8;return function(_0x1df216){if(_0x1df216){return _0x5a730e[_0x5907('0x17')](_0x1fe706)[_0x5907('0x18')](_0x1df216);}};}function respondWithFilteredResult(_0x189c5d,_0x25622e){return function(_0x39e290){if(_0x39e290){var _0x526852=typeof _0x25622e['offset']===_0x5907('0x19')&&typeof _0x25622e[_0x5907('0x1a')]==='undefined';var _0x5c4791=_0x39e290[_0x5907('0x1b')];var _0x232dee=_0x526852?0x0:_0x25622e[_0x5907('0x1c')];var _0x5d590e=_0x526852?_0x39e290[_0x5907('0x1b')]:_0x25622e[_0x5907('0x1c')]+_0x25622e['limit'];var _0xfb1706;if(_0x5d590e>=_0x5c4791){_0x5d590e=_0x5c4791;_0xfb1706=0xc8;}else{_0xfb1706=0xce;}_0x189c5d['status'](_0xfb1706);return _0x189c5d[_0x5907('0x1d')](_0x5907('0x1e'),_0x232dee+'-'+_0x5d590e+'/'+_0x5c4791)[_0x5907('0x18')](_0x39e290);}return null;};}function patchUpdates(_0x1c7cb5){return function(_0x370f6f){try{jsonpatch['apply'](_0x370f6f,_0x1c7cb5,!![]);}catch(_0x5602d8){return BPromise[_0x5907('0x1f')](_0x5602d8);}return _0x370f6f[_0x5907('0x20')]();};}function saveUpdates(_0x5a9ace,_0x43d5b5){return function(_0x3195b1){if(_0x3195b1){return _0x3195b1[_0x5907('0x21')](_0x5a9ace)[_0x5907('0x22')](function(_0xa3b055){return _0xa3b055;});}return null;};}function removeEntity(_0x317708,_0x169f9d){return function(_0x3c7439){if(_0x3c7439){return _0x3c7439['destroy']()[_0x5907('0x22')](function(){var _0x471781=_0x3c7439[_0x5907('0x23')]({'plain':!![]});var _0x225d8d=_0x5907('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x225d8d,'resourceId':_0x471781['id']}})[_0x5907('0x22')](function(){return _0x3c7439;});})['then'](function(){_0x317708['status'](0xcc)[_0x5907('0x25')]();});}};}function handleEntityNotFound(_0x22e710,_0xe3bb50){return function(_0x448af0){if(!_0x448af0){_0x22e710[_0x5907('0x26')](0x194);}return _0x448af0;};}function handleError(_0x524f30,_0xcadcae){_0xcadcae=_0xcadcae||0x1f4;return function(_0x40510b){logger['error'](_0x40510b[_0x5907('0x27')]);if(_0x40510b['name']){delete _0x40510b['name'];}_0x524f30[_0x5907('0x17')](_0xcadcae)[_0x5907('0x28')](_0x40510b);};}exports[_0x5907('0x29')]=function(_0x2fceef,_0x5040c1){var _0x56b027={},_0x1d187d={},_0x181a3b={'count':0x0,'rows':[]};var _0x4d3a0a=_[_0x5907('0x2a')](db[_0x5907('0x2b')]['rawAttributes'],function(_0x2cff2a){return{'name':_0x2cff2a[_0x5907('0x2c')],'type':_0x2cff2a['type'][_0x5907('0x2d')]};});_0x1d187d[_0x5907('0x2e')]=_['map'](_0x4d3a0a,_0x5907('0x2f'));_0x1d187d[_0x5907('0x30')]=_[_0x5907('0x31')](_0x2fceef[_0x5907('0x30')]);_0x1d187d[_0x5907('0x32')]=_[_0x5907('0x33')](_0x1d187d['model'],_0x1d187d[_0x5907('0x30')]);_0x56b027[_0x5907('0x34')]=_[_0x5907('0x33')](_0x1d187d[_0x5907('0x2e')],qs['fields'](_0x2fceef[_0x5907('0x30')][_0x5907('0x35')]));_0x56b027[_0x5907('0x34')]=_0x56b027['attributes'][_0x5907('0x36')]?_0x56b027[_0x5907('0x34')]:_0x1d187d['model'];if(!_0x2fceef[_0x5907('0x30')][_0x5907('0x37')]('nolimit')){_0x56b027[_0x5907('0x1a')]=qs[_0x5907('0x1a')](_0x2fceef[_0x5907('0x30')]['limit']);_0x56b027[_0x5907('0x1c')]=qs[_0x5907('0x1c')](_0x2fceef['query']['offset']);}_0x56b027[_0x5907('0x38')]=qs['sort'](_0x2fceef[_0x5907('0x30')]['sort']);_0x56b027[_0x5907('0x39')]=qs[_0x5907('0x32')](_['pick'](_0x2fceef['query'],_0x1d187d[_0x5907('0x32')]),_0x4d3a0a);if(_0x2fceef['query'][_0x5907('0x3a')]){_0x56b027[_0x5907('0x39')]=_[_0x5907('0x3b')](_0x56b027[_0x5907('0x39')],{'$or':_[_0x5907('0x2a')](_0x4d3a0a,function(_0x21ff8d){if(_0x21ff8d[_0x5907('0x3c')]!==_0x5907('0x3d')){var _0xa90e86={};_0xa90e86[_0x21ff8d[_0x5907('0x2f')]]={'$like':'%'+_0x2fceef[_0x5907('0x30')][_0x5907('0x3a')]+'%'};return _0xa90e86;}})});}_0x56b027=_[_0x5907('0x3b')]({},_0x56b027,_0x2fceef[_0x5907('0x3e')]);var _0x1b5e81={'where':_0x56b027[_0x5907('0x39')]};return db[_0x5907('0x2b')][_0x5907('0x1b')](_0x1b5e81)['then'](function(_0x32a453){_0x181a3b[_0x5907('0x1b')]=_0x32a453;if(_0x2fceef[_0x5907('0x30')][_0x5907('0x3f')]){_0x56b027[_0x5907('0x40')]=[{'all':!![]}];}return db[_0x5907('0x2b')][_0x5907('0x41')](_0x56b027);})[_0x5907('0x22')](function(_0x277d48){_0x181a3b[_0x5907('0x42')]=_0x277d48;return _0x181a3b;})['then'](respondWithFilteredResult(_0x5040c1,_0x56b027))[_0x5907('0x43')](handleError(_0x5040c1,null));};exports[_0x5907('0x44')]=function(_0x1fd77e,_0xbb9a50){var _0x5d5e79={'raw':!![],'where':{'id':_0x1fd77e['params']['id']}},_0x1f26ac={};_0x1f26ac[_0x5907('0x2e')]=_[_0x5907('0x31')](db[_0x5907('0x2b')][_0x5907('0x45')]);_0x1f26ac[_0x5907('0x30')]=_[_0x5907('0x31')](_0x1fd77e['query']);_0x1f26ac[_0x5907('0x32')]=_[_0x5907('0x33')](_0x1f26ac['model'],_0x1f26ac[_0x5907('0x30')]);_0x5d5e79[_0x5907('0x34')]=_[_0x5907('0x33')](_0x1f26ac['model'],qs[_0x5907('0x35')](_0x1fd77e['query'][_0x5907('0x35')]));_0x5d5e79[_0x5907('0x34')]=_0x5d5e79[_0x5907('0x34')]['length']?_0x5d5e79[_0x5907('0x34')]:_0x1f26ac[_0x5907('0x2e')];if(_0x1fd77e[_0x5907('0x30')][_0x5907('0x3f')]){_0x5d5e79[_0x5907('0x40')]=[{'all':!![]}];}_0x5d5e79=_[_0x5907('0x3b')]({},_0x5d5e79,_0x1fd77e[_0x5907('0x3e')]);return db[_0x5907('0x2b')][_0x5907('0x46')](_0x5d5e79)[_0x5907('0x22')](handleEntityNotFound(_0xbb9a50,null))[_0x5907('0x22')](respondWithResult(_0xbb9a50,null))[_0x5907('0x43')](handleError(_0xbb9a50,null));};exports[_0x5907('0x47')]=function(_0x2955e5,_0x5d8762,_0x1ed1f7){return db['Sound'][_0x5907('0x46')]({'where':{'id':_0x2955e5[_0x5907('0x48')]['id']},'attributes':[_0x5907('0x2f'),_0x5907('0x49'),'converted_format'],'raw':!![]})[_0x5907('0x22')](handleEntityNotFound(_0x5d8762,null))['then'](function(_0x584b8d){if(_0x584b8d){if(!fs[_0x5907('0x4a')](path[_0x5907('0x4b')](config[_0x5907('0x4c')],_0x5907('0x4d'),_0x584b8d[_0x5907('0x49')]+'.'+_0x584b8d[_0x5907('0x4e')]))){throw new db[(_0x5907('0x4f'))][(_0x5907('0x50'))](_0x5907('0x51'));}return _0x5d8762['download'](path[_0x5907('0x4b')](config[_0x5907('0x4c')],_0x5907('0x4d'),util['format']('%s.%s',_0x584b8d[_0x5907('0x49')],_0x584b8d[_0x5907('0x4e')])),util['format'](_0x5907('0x52'),_0x584b8d[_0x5907('0x2f')],_0x584b8d[_0x5907('0x4e')]));}return null;})[_0x5907('0x43')](handleError(_0x5d8762,null));};exports['create']=function(_0x185365,_0x3bb92d,_0x5f09b5){var _0x3b2e20={'name':path[_0x5907('0x53')](_0x185365['file']['originalname'],path['extname'](_0x185365[_0x5907('0x54')][_0x5907('0x55')])),'save_name':path[_0x5907('0x53')](_0x185365[_0x5907('0x54')]['filename'],path[_0x5907('0x56')](_0x185365['file'][_0x5907('0x57')])),'original_format':path[_0x5907('0x56')](_0x185365[_0x5907('0x54')][_0x5907('0x55')])[_0x5907('0x58')](0x1),'converted_format':_0x5907('0x59')};var _0x329b42=path[_0x5907('0x4b')](config['root'],'server/files/sounds/original',_0x185365[_0x5907('0x54')][_0x5907('0x57')]);var _0x23180b=path[_0x5907('0x4b')](config[_0x5907('0x4c')],_0x5907('0x4d'),util['format'](_0x5907('0x52'),path['basename'](_0x185365[_0x5907('0x54')][_0x5907('0x57')],path[_0x5907('0x56')](_0x185365['file'][_0x5907('0x57')])),_0x3b2e20[_0x5907('0x4e')]));logger[_0x5907('0x5a')]('Sound\x20upload\x20filepath:\x20%s',_0x329b42);logger[_0x5907('0x5a')]('Sound\x20upload\x20destination:\x20%s',_0x23180b);try{fs[_0x5907('0x5b')](_0x329b42,parseInt('0777',0x8));var _0x1093a0=sox[_0x5907('0x5c')](_0x329b42,_0x23180b,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1093a0['on'](_0x5907('0x5d'),function(_0x3aae33){fs['unlinkSync'](_0x329b42);_0x3bb92d[_0x5907('0x17')](0x1f4)[_0x5907('0x28')](_0x3aae33);});_0x1093a0['on']('src',function(_0x50c304){_0x3b2e20[_0x5907('0x5e')]=isNaN(_0x50c304['duration'])?null:_0x50c304['duration']*0x3e8;_0x3b2e20[_0x5907('0x5f')]=isNaN(_0x50c304[_0x5907('0x60')])?null:_0x50c304[_0x5907('0x60')];_0x3b2e20[_0x5907('0x61')]=isNaN(_0x50c304[_0x5907('0x62')])?null:_0x50c304[_0x5907('0x62')];_0x3b2e20[_0x5907('0x63')]=isNaN(_0x50c304[_0x5907('0x64')])?null:_0x50c304[_0x5907('0x64')];_0x3b2e20['original_sampleRate']=isNaN(_0x50c304['sampleRate'])?null:_0x50c304['sampleRate'];});_0x1093a0['on'](_0x5907('0x65'),function(_0x4abcb6){_0x3b2e20[_0x5907('0x66')]=isNaN(_0x4abcb6['duration'])?null:_0x4abcb6[_0x5907('0x67')]*0x3e8;_0x3b2e20[_0x5907('0x68')]=isNaN(_0x4abcb6[_0x5907('0x60')])?null:_0x4abcb6[_0x5907('0x60')];_0x3b2e20['converted_channelCount']=isNaN(_0x4abcb6[_0x5907('0x62')])?null:_0x4abcb6['channelCount'];_0x3b2e20[_0x5907('0x69')]=isNaN(_0x4abcb6[_0x5907('0x64')])?null:_0x4abcb6[_0x5907('0x64')];_0x3b2e20[_0x5907('0x6a')]=isNaN(_0x4abcb6[_0x5907('0x6b')])?null:_0x4abcb6[_0x5907('0x6b')];});_0x1093a0['on']('end',function(){fs['chmodSync'](_0x23180b,parseInt(_0x5907('0x6c'),0x8));return db['Sound']['create'](_0x3b2e20)[_0x5907('0x22')](function(_0x3c9a36){var _0x27520c={'role':_0x185365[_0x5907('0x6d')][_0x5907('0x6e')],'userProfileId':_0x185365[_0x5907('0x6d')]['userProfileId']};if(!_0x27520c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x27520c[_0x5907('0x6e')]==='user'){var _0x43307a=_0x3c9a36['get']({'plain':!![]});return db['UserProfileSection'][_0x5907('0x46')]({'where':{'name':_0x5907('0x24'),'userProfileId':_0x27520c[_0x5907('0x6f')]},'raw':!![]})['then'](function(_0x4214dc){if(_0x4214dc&&_0x4214dc['autoAssociation']===0x0){return db[_0x5907('0x70')][_0x5907('0x71')]({'name':_0x43307a['name'],'resourceId':_0x43307a['id'],'type':_0x4214dc[_0x5907('0x2f')],'sectionId':_0x4214dc['id']},{})['then'](function(){return _0x3c9a36;});}else{return _0x3c9a36;}})[_0x5907('0x43')](function(_0xeef7a9){logger['error'](_0x5907('0x72'),_0xeef7a9);throw _0xeef7a9;});}return _0x3c9a36;})['then'](respondWithResult(_0x3bb92d,null))[_0x5907('0x43')](handleError(_0x3bb92d,null));});_0x1093a0['start']();}catch(_0x311437){_0x3bb92d['status'](0x1f4)[_0x5907('0x28')](_0x311437);}};exports[_0x5907('0x21')]=function(_0xba66ce,_0x513102,_0x4f60da){return db[_0x5907('0x2b')][_0x5907('0x46')]({'where':{'id':_0xba66ce[_0x5907('0x48')]['id']}})[_0x5907('0x22')](handleEntityNotFound(_0x513102,null))['then'](saveUpdates(_[_0x5907('0x73')](_0xba66ce[_0x5907('0x6d')],[_0x5907('0x2f'),_0x5907('0x74')]),null))[_0x5907('0x22')](respondWithResult(_0x513102,null))[_0x5907('0x43')](handleError(_0x513102,null));};exports['delete']=function(_0x5a35f7,_0x142ad6,_0xf50ded){return db[_0x5907('0x2b')][_0x5907('0x46')]({'where':{'id':_0x5a35f7[_0x5907('0x48')]['id']}})[_0x5907('0x22')](function(_0x5e2709){if(_0x5e2709){return _0x5e2709[_0x5907('0x75')]();}})[_0x5907('0x22')](function(_0x21d03c){var _0x1a73b7=path['join'](config['root'],_0x5907('0x76'),util[_0x5907('0x77')](_0x5907('0x52'),_0x21d03c[_0x5907('0x49')],_0x21d03c['original_format']));var _0x292121=path[_0x5907('0x4b')](config[_0x5907('0x4c')],_0x5907('0x4d'),util[_0x5907('0x77')](_0x5907('0x52'),_0x21d03c[_0x5907('0x49')],_0x21d03c['converted_format']));fs[_0x5907('0x78')](_0x1a73b7);fs[_0x5907('0x78')](_0x292121);return _0x21d03c;})[_0x5907('0x22')](function(_0x5ba10d){if(_0x5ba10d){return _0x142ad6[_0x5907('0x17')](0xcc)['end']();}})[_0x5907('0x22')](handleEntityNotFound(_0x142ad6,null))[_0x5907('0x43')](handleError(_0x142ad6,null));};
\ No newline at end of file
index 10e4a9e..d666603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e7f=['./sound.attributes','define','tools_sounds','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2ad7f1,_0x241391){var _0x1496a0=function(_0x43cfbb){while(--_0x43cfbb){_0x2ad7f1['push'](_0x2ad7f1['shift']());}};_0x1496a0(++_0x241391);}(_0x5e7f,0x19a));var _0xf5e7=function(_0x46ebf4,_0x2ad03b){_0x46ebf4=_0x46ebf4-0x0;var _0x385cda=_0x5e7f[_0x46ebf4];return _0x385cda;};'use strict';var _=require(_0xf5e7('0x0'));var util=require(_0xf5e7('0x1'));var logger=require('../../config/logger')(_0xf5e7('0x2'));var moment=require(_0xf5e7('0x3'));var BPromise=require(_0xf5e7('0x4'));var rp=require(_0xf5e7('0x5'));var fs=require('fs');var path=require(_0xf5e7('0x6'));var rimraf=require(_0xf5e7('0x7'));var config=require('../../config/environment');var attributes=require(_0xf5e7('0x8'));module['exports']=function(_0x429b11,_0x43fe67){return _0x429b11[_0xf5e7('0x9')]('Sound',attributes,{'tableName':_0xf5e7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb476=['rimraf','../../config/environment','define','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2f2b21,_0x22c0b1){var _0x57ebde=function(_0x3b127f){while(--_0x3b127f){_0x2f2b21['push'](_0x2f2b21['shift']());}};_0x57ebde(++_0x22c0b1);}(_0xb476,0xc8));var _0x6b47=function(_0x2f4c1c,_0x5a3dd4){_0x2f4c1c=_0x2f4c1c-0x0;var _0x25e0f2=_0xb476[_0x2f4c1c];return _0x25e0f2;};'use strict';var _=require(_0x6b47('0x0'));var util=require(_0x6b47('0x1'));var logger=require(_0x6b47('0x2'))(_0x6b47('0x3'));var moment=require(_0x6b47('0x4'));var BPromise=require(_0x6b47('0x5'));var rp=require(_0x6b47('0x6'));var fs=require('fs');var path=require(_0x6b47('0x7'));var rimraf=require(_0x6b47('0x8'));var config=require(_0x6b47('0x9'));var attributes=require('./sound.attributes');module['exports']=function(_0x336752,_0x43808e){return _0x336752[_0x6b47('0xa')](_0x6b47('0xb'),attributes,{'tableName':_0x6b47('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f92d293..d3d15cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5617=['../../mysqldb','../../config/logger','client','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','ShowSound','find','options','raw','where','attributes','include','map','model','stringify','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x39e900,_0x3210a9){var _0x232c01=function(_0x329244){while(--_0x329244){_0x39e900['push'](_0x39e900['shift']());}};_0x232c01(++_0x3210a9);}(_0x5617,0x8c));var _0x7561=function(_0x521b61,_0x47e2b4){_0x521b61=_0x521b61-0x0;var _0x476cdf=_0x5617[_0x521b61];return _0x476cdf;};'use strict';var _=require(_0x7561('0x0'));var util=require(_0x7561('0x1'));var moment=require(_0x7561('0x2'));var BPromise=require(_0x7561('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7561('0x4'));var db=require(_0x7561('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7561('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7561('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x15aeb9,_0x5113d9,_0x3c9aaa){return new BPromise(function(_0x2e8d9a,_0x42d812){return client[_0x7561('0x8')](_0x15aeb9,_0x3c9aaa)[_0x7561('0x9')](function(_0x3044a9){logger[_0x7561('0xa')](_0x7561('0xb'),_0x5113d9,_0x7561('0xc'));logger[_0x7561('0xd')]('Sound,\x20%s,\x20%s,\x20%s',_0x5113d9,_0x7561('0xc'),JSON['stringify'](_0x3044a9));if(_0x3044a9[_0x7561('0xe')]){if(_0x3044a9[_0x7561('0xe')][_0x7561('0xf')]===0x1f4){logger['error'](_0x7561('0xb'),_0x5113d9,_0x3044a9[_0x7561('0xe')][_0x7561('0x10')]);return _0x42d812(_0x3044a9[_0x7561('0xe')]['message']);}logger[_0x7561('0xe')](_0x7561('0xb'),_0x5113d9,_0x3044a9[_0x7561('0xe')][_0x7561('0x10')]);return _0x2e8d9a(_0x3044a9[_0x7561('0xe')][_0x7561('0x10')]);}else{logger[_0x7561('0xa')](_0x7561('0xb'),_0x5113d9,_0x7561('0xc'));_0x2e8d9a(_0x3044a9[_0x7561('0x11')]['message']);}})['catch'](function(_0x280b07){logger[_0x7561('0xe')](_0x7561('0xb'),_0x5113d9,_0x280b07);_0x42d812(_0x280b07);});});}exports[_0x7561('0x12')]=function(_0x57c302){var _0x3d4baa=this;return new Promise(function(_0x2b4517,_0x6a867a){return db['Sound'][_0x7561('0x13')]({'raw':_0x57c302['options']?_0x57c302[_0x7561('0x14')][_0x7561('0x15')]===undefined?!![]:![]:!![],'where':_0x57c302[_0x7561('0x14')]?_0x57c302[_0x7561('0x14')][_0x7561('0x16')]||null:null,'attributes':_0x57c302[_0x7561('0x14')]?_0x57c302[_0x7561('0x14')][_0x7561('0x17')]||null:null,'include':_0x57c302['options']?_0x57c302['options'][_0x7561('0x18')]?_['map'](_0x57c302['options'][_0x7561('0x18')],function(_0xc9b464){return{'model':db[_0xc9b464['model']],'as':_0xc9b464['as'],'attributes':_0xc9b464['attributes'],'include':_0xc9b464[_0x7561('0x18')]?_['map'](_0xc9b464[_0x7561('0x18')],function(_0x3bffcb){return{'model':db[_0x3bffcb['model']],'as':_0x3bffcb['as'],'attributes':_0x3bffcb[_0x7561('0x17')],'include':_0x3bffcb[_0x7561('0x18')]?_[_0x7561('0x19')](_0x3bffcb[_0x7561('0x18')],function(_0x14f84b){return{'model':db[_0x14f84b[_0x7561('0x1a')]],'as':_0x14f84b['as'],'attributes':_0x14f84b['attributes']};}):[]};}):[]};}):[]:[]})[_0x7561('0x9')](function(_0x3e205b){logger[_0x7561('0xa')](_0x7561('0x12'),_0x57c302);logger[_0x7561('0xd')](_0x7561('0x12'),_0x57c302,JSON[_0x7561('0x1b')](_0x3e205b));_0x2b4517(_0x3e205b);})[_0x7561('0x1c')](function(_0xb79680){logger[_0x7561('0xe')](_0x7561('0x12'),_0xb79680[_0x7561('0x10')],_0x57c302);_0x6a867a(_0x3d4baa[_0x7561('0xe')](0x1f4,_0xb79680['message']));});});};
\ No newline at end of file
+var _0xb8ce=['ShowSound','find','options','raw','include','map','model','attributes','then','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x15ec4e,_0x40b7e0){var _0xb5e5dd=function(_0x42bdd7){while(--_0x42bdd7){_0x15ec4e['push'](_0x15ec4e['shift']());}};_0xb5e5dd(++_0x40b7e0);}(_0xb8ce,0x7d));var _0xeb8c=function(_0x516aa4,_0x40f278){_0x516aa4=_0x516aa4-0x0;var _0x4de1b0=_0xb8ce[_0x516aa4];return _0x4de1b0;};'use strict';var _=require(_0xeb8c('0x0'));var util=require(_0xeb8c('0x1'));var moment=require('moment');var BPromise=require(_0xeb8c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xeb8c('0x3'))['db'];var utils=require(_0xeb8c('0x4'));var logger=require(_0xeb8c('0x5'))(_0xeb8c('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeb8c('0x7')][_0xeb8c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1df254,_0xb207d7,_0x90a8ed){return new BPromise(function(_0x28cbac,_0x386278){return client[_0xeb8c('0x9')](_0x1df254,_0x90a8ed)['then'](function(_0x2f3b17){logger[_0xeb8c('0xa')](_0xeb8c('0xb'),_0xb207d7,_0xeb8c('0xc'));logger[_0xeb8c('0xd')]('Sound,\x20%s,\x20%s,\x20%s',_0xb207d7,_0xeb8c('0xc'),JSON[_0xeb8c('0xe')](_0x2f3b17));if(_0x2f3b17[_0xeb8c('0xf')]){if(_0x2f3b17[_0xeb8c('0xf')][_0xeb8c('0x10')]===0x1f4){logger[_0xeb8c('0xf')](_0xeb8c('0xb'),_0xb207d7,_0x2f3b17['error'][_0xeb8c('0x11')]);return _0x386278(_0x2f3b17['error'][_0xeb8c('0x11')]);}logger['error'](_0xeb8c('0xb'),_0xb207d7,_0x2f3b17[_0xeb8c('0xf')][_0xeb8c('0x11')]);return _0x28cbac(_0x2f3b17[_0xeb8c('0xf')][_0xeb8c('0x11')]);}else{logger[_0xeb8c('0xa')](_0xeb8c('0xb'),_0xb207d7,_0xeb8c('0xc'));_0x28cbac(_0x2f3b17[_0xeb8c('0x12')][_0xeb8c('0x11')]);}})[_0xeb8c('0x13')](function(_0x50f349){logger[_0xeb8c('0xf')]('Sound,\x20%s,\x20%s',_0xb207d7,_0x50f349);_0x386278(_0x50f349);});});}exports[_0xeb8c('0x14')]=function(_0x48506f){var _0x5e89dc=this;return new Promise(function(_0x103aff,_0x4f774e){return db['Sound'][_0xeb8c('0x15')]({'raw':_0x48506f[_0xeb8c('0x16')]?_0x48506f['options'][_0xeb8c('0x17')]===undefined?!![]:![]:!![],'where':_0x48506f[_0xeb8c('0x16')]?_0x48506f[_0xeb8c('0x16')]['where']||null:null,'attributes':_0x48506f[_0xeb8c('0x16')]?_0x48506f[_0xeb8c('0x16')]['attributes']||null:null,'include':_0x48506f[_0xeb8c('0x16')]?_0x48506f[_0xeb8c('0x16')][_0xeb8c('0x18')]?_[_0xeb8c('0x19')](_0x48506f[_0xeb8c('0x16')][_0xeb8c('0x18')],function(_0x1d264b){return{'model':db[_0x1d264b[_0xeb8c('0x1a')]],'as':_0x1d264b['as'],'attributes':_0x1d264b[_0xeb8c('0x1b')],'include':_0x1d264b[_0xeb8c('0x18')]?_['map'](_0x1d264b[_0xeb8c('0x18')],function(_0x362873){return{'model':db[_0x362873['model']],'as':_0x362873['as'],'attributes':_0x362873[_0xeb8c('0x1b')],'include':_0x362873[_0xeb8c('0x18')]?_[_0xeb8c('0x19')](_0x362873[_0xeb8c('0x18')],function(_0x18c4f1){return{'model':db[_0x18c4f1[_0xeb8c('0x1a')]],'as':_0x18c4f1['as'],'attributes':_0x18c4f1[_0xeb8c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xeb8c('0x1c')](function(_0x3329f1){logger['info'](_0xeb8c('0x14'),_0x48506f);logger[_0xeb8c('0xd')](_0xeb8c('0x14'),_0x48506f,JSON[_0xeb8c('0xe')](_0x3329f1));_0x103aff(_0x3329f1);})[_0xeb8c('0x13')](function(_0x4e282c){logger[_0xeb8c('0xf')](_0xeb8c('0x14'),_0x4e282c[_0xeb8c('0x11')],_0x48506f);_0x4f774e(_0x5e89dc['error'](0x1f4,_0x4e282c['message']));});});};
\ No newline at end of file
index c261236..993905b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports','multer'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x5e0ae5,_0xb041e9){_0x5e0ae5=_0x5e0ae5-0x0;var _0x5001d8=_0x9ffd[_0x5e0ae5];return _0x5001d8;};'use strict';var multer=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var path=require(_0xd9ff('0x2'));var timeout=require('connect-timeout');var express=require(_0xd9ff('0x3'));var router=express[_0xd9ff('0x4')]();var fs_extra=require(_0xd9ff('0x5'));var auth=require(_0xd9ff('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd9ff('0x7'));var controller=require(_0xd9ff('0x8'));router['get']('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xa')]);router[_0xd9ff('0xb')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xd')]);router[_0xd9ff('0xe')]('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd9ff('0x10')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0x11')]);module[_0xd9ff('0x12')]=router;
\ No newline at end of file
+var _0xbaf0=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x282635,_0x55e8b5){var _0x1f4e21=function(_0x5b48dd){while(--_0x5b48dd){_0x282635['push'](_0x282635['shift']());}};_0x1f4e21(++_0x55e8b5);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['show']);router[_0x0baf('0xd')]('/',auth['isAuthenticated'](),controller[_0x0baf('0xe')]);router[_0x0baf('0xf')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x10')]);router[_0x0baf('0x11')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);module[_0x0baf('0x13')]=router;
\ No newline at end of file
index a5d6d49..2db86bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0920=['exports','STRING','TEXT','ENUM','out','sequelize'];(function(_0x1ac34f,_0x29671e){var _0x5a22db=function(_0x2d128f){while(--_0x2d128f){_0x1ac34f['push'](_0x1ac34f['shift']());}};_0x5a22db(++_0x29671e);}(_0x0920,0xbf));var _0x0092=function(_0x1c289a,_0x277fe7){_0x1c289a=_0x1c289a-0x0;var _0x28d68e=_0x0920[_0x1c289a];return _0x28d68e;};'use strict';var Sequelize=require(_0x0092('0x0'));module[_0x0092('0x1')]={'uniqueid':{'type':Sequelize[_0x0092('0x2')]},'body':{'type':Sequelize[_0x0092('0x3')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x0092('0x4')]('in','out'),'defaultValue':_0x0092('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x0092('0x2')]},'providerResponse':{'type':Sequelize[_0x0092('0x3')]}};
\ No newline at end of file
+var _0xbfbd=['out','STRING','sequelize','exports','TEXT','medium','ENUM'];(function(_0x869a8a,_0x1e6a2f){var _0x4f422d=function(_0x1e6e1b){while(--_0x1e6e1b){_0x869a8a['push'](_0x869a8a['shift']());}};_0x4f422d(++_0x1e6a2f);}(_0xbfbd,0xcd));var _0xdbfb=function(_0x44bf69,_0x3f6912){_0x44bf69=_0x44bf69-0x0;var _0x1dfb8b=_0xbfbd[_0x44bf69];return _0x1dfb8b;};'use strict';var Sequelize=require(_0xdbfb('0x0'));module[_0xdbfb('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0xdbfb('0x2')](_0xdbfb('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0xdbfb('0x4')]('in',_0xdbfb('0x5')),'defaultValue':_0xdbfb('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0xdbfb('0x6')]},'providerResponse':{'type':Sequelize[_0xdbfb('0x2')]}};
\ No newline at end of file
index 3a5db67..9a57baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd291=['includeAll','include','findAll','rows','show','params','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','SquareMessage','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options'];(function(_0x13137e,_0x29c0f3){var _0x346261=function(_0x8c7d4f){while(--_0x8c7d4f){_0x13137e['push'](_0x13137e['shift']());}};_0x346261(++_0x29c0f3);}(_0xd291,0xae));var _0x1d29=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd291[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x1d29('0x0'));var rimraf=require(_0x1d29('0x1'));var zipdir=require(_0x1d29('0x2'));var jsonpatch=require(_0x1d29('0x3'));var rp=require(_0x1d29('0x4'));var moment=require(_0x1d29('0x5'));var BPromise=require(_0x1d29('0x6'));var Mustache=require(_0x1d29('0x7'));var util=require(_0x1d29('0x8'));var path=require(_0x1d29('0x9'));var sox=require(_0x1d29('0xa'));var csv=require(_0x1d29('0xb'));var ejs=require(_0x1d29('0xc'));var fs=require('fs');var fs_extra=require(_0x1d29('0xd'));var _=require(_0x1d29('0xe'));var squel=require(_0x1d29('0xf'));var crypto=require('crypto');var jsforce=require(_0x1d29('0x10'));var deskjs=require(_0x1d29('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1d29('0x12'));var Redis=require(_0x1d29('0x13'));var authService=require(_0x1d29('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x1d29('0x15'));var hardwareService=require(_0x1d29('0x16'));var logger=require(_0x1d29('0x17'))(_0x1d29('0x18'));var utils=require(_0x1d29('0x19'));var config=require(_0x1d29('0x1a'));var licenseUtil=require(_0x1d29('0x1b'));var db=require(_0x1d29('0x1c'))['db'];function respondWithStatusCode(_0x2a9bd2,_0x5746ac){_0x5746ac=_0x5746ac||0xcc;return function(_0x4237f1){if(_0x4237f1){return _0x2a9bd2[_0x1d29('0x1d')](_0x5746ac);}return _0x2a9bd2['status'](_0x5746ac)['end']();};}function respondWithResult(_0x10be57,_0x25dd32){_0x25dd32=_0x25dd32||0xc8;return function(_0x23655c){if(_0x23655c){return _0x10be57[_0x1d29('0x1e')](_0x25dd32)[_0x1d29('0x1f')](_0x23655c);}};}function respondWithFilteredResult(_0x11dc87,_0x58be97){return function(_0x509d92){if(_0x509d92){var _0x2b3201=typeof _0x58be97[_0x1d29('0x20')]===_0x1d29('0x21')&&typeof _0x58be97[_0x1d29('0x22')]===_0x1d29('0x21');var _0x52f4e6=_0x509d92['count'];var _0x3706e2=_0x2b3201?0x0:_0x58be97['offset'];var _0x2a8805=_0x2b3201?_0x509d92[_0x1d29('0x23')]:_0x58be97[_0x1d29('0x20')]+_0x58be97[_0x1d29('0x22')];var _0x50f349;if(_0x2a8805>=_0x52f4e6){_0x2a8805=_0x52f4e6;_0x50f349=0xc8;}else{_0x50f349=0xce;}_0x11dc87[_0x1d29('0x1e')](_0x50f349);return _0x11dc87[_0x1d29('0x24')](_0x1d29('0x25'),_0x3706e2+'-'+_0x2a8805+'/'+_0x52f4e6)[_0x1d29('0x1f')](_0x509d92);}return null;};}function patchUpdates(_0x42d2c0){return function(_0x375a5f){try{jsonpatch[_0x1d29('0x26')](_0x375a5f,_0x42d2c0,!![]);}catch(_0x442197){return BPromise['reject'](_0x442197);}return _0x375a5f[_0x1d29('0x27')]();};}function saveUpdates(_0x4a4ed7,_0x231eaf){return function(_0x233a06){if(_0x233a06){return _0x233a06[_0x1d29('0x28')](_0x4a4ed7)[_0x1d29('0x29')](function(_0x18db64){return _0x18db64;});}return null;};}function removeEntity(_0xe1ef8c,_0x359ec6){return function(_0x57667c){if(_0x57667c){return _0x57667c[_0x1d29('0x2a')]()[_0x1d29('0x29')](function(){_0xe1ef8c[_0x1d29('0x1e')](0xcc)[_0x1d29('0x2b')]();});}};}function handleEntityNotFound(_0x34e49c,_0x45da5f){return function(_0x4807a7){if(!_0x4807a7){_0x34e49c[_0x1d29('0x1d')](0x194);}return _0x4807a7;};}function handleError(_0x902ada,_0x265437){_0x265437=_0x265437||0x1f4;return function(_0x434bcd){logger[_0x1d29('0x2c')](_0x434bcd[_0x1d29('0x2d')]);if(_0x434bcd[_0x1d29('0x2e')]){delete _0x434bcd['name'];}_0x902ada['status'](_0x265437)[_0x1d29('0x2f')](_0x434bcd);};}exports[_0x1d29('0x30')]=function(_0x332e97,_0xff05c5){var _0x1230f9={},_0x29d8b3={},_0x1009a8={'count':0x0,'rows':[]};var _0x35e9c0=_['map'](db[_0x1d29('0x31')][_0x1d29('0x32')],function(_0xd584cf){return{'name':_0xd584cf[_0x1d29('0x33')],'type':_0xd584cf[_0x1d29('0x34')][_0x1d29('0x35')]};});_0x29d8b3[_0x1d29('0x36')]=_[_0x1d29('0x37')](_0x35e9c0,_0x1d29('0x2e'));_0x29d8b3[_0x1d29('0x38')]=_[_0x1d29('0x39')](_0x332e97['query']);_0x29d8b3[_0x1d29('0x3a')]=_[_0x1d29('0x3b')](_0x29d8b3['model'],_0x29d8b3[_0x1d29('0x38')]);_0x1230f9[_0x1d29('0x3c')]=_[_0x1d29('0x3b')](_0x29d8b3['model'],qs[_0x1d29('0x3d')](_0x332e97[_0x1d29('0x38')][_0x1d29('0x3d')]));_0x1230f9[_0x1d29('0x3c')]=_0x1230f9['attributes'][_0x1d29('0x3e')]?_0x1230f9[_0x1d29('0x3c')]:_0x29d8b3['model'];if(!_0x332e97[_0x1d29('0x38')][_0x1d29('0x3f')](_0x1d29('0x40'))){_0x1230f9['limit']=qs['limit'](_0x332e97[_0x1d29('0x38')]['limit']);_0x1230f9[_0x1d29('0x20')]=qs['offset'](_0x332e97[_0x1d29('0x38')]['offset']);}_0x1230f9['order']=qs[_0x1d29('0x41')](_0x332e97[_0x1d29('0x38')][_0x1d29('0x41')]);_0x1230f9[_0x1d29('0x42')]=qs['filters'](_[_0x1d29('0x43')](_0x332e97[_0x1d29('0x38')],_0x29d8b3[_0x1d29('0x3a')]),_0x35e9c0);if(_0x332e97['query']['filter']){_0x1230f9[_0x1d29('0x42')]=_[_0x1d29('0x44')](_0x1230f9['where'],{'$or':_['map'](_0x35e9c0,function(_0x54b220){if(_0x54b220['type']!==_0x1d29('0x45')){var _0x540ccb={};_0x540ccb[_0x54b220[_0x1d29('0x2e')]]={'$like':'%'+_0x332e97[_0x1d29('0x38')][_0x1d29('0x46')]+'%'};return _0x540ccb;}})});}_0x1230f9=_[_0x1d29('0x44')]({},_0x1230f9,_0x332e97[_0x1d29('0x47')]);var _0x2dae32={'where':_0x1230f9[_0x1d29('0x42')]};return db[_0x1d29('0x31')]['count'](_0x2dae32)['then'](function(_0x331487){_0x1009a8[_0x1d29('0x23')]=_0x331487;if(_0x332e97[_0x1d29('0x38')][_0x1d29('0x48')]){_0x1230f9[_0x1d29('0x49')]=[{'all':!![]}];}return db['SquareMessage'][_0x1d29('0x4a')](_0x1230f9);})['then'](function(_0x511633){_0x1009a8[_0x1d29('0x4b')]=_0x511633;return _0x1009a8;})[_0x1d29('0x29')](respondWithFilteredResult(_0xff05c5,_0x1230f9))['catch'](handleError(_0xff05c5,null));};exports[_0x1d29('0x4c')]=function(_0x31f739,_0x933ae5){var _0x103f3a={'raw':!![],'where':{'id':_0x31f739[_0x1d29('0x4d')]['id']}},_0x271de8={};_0x271de8[_0x1d29('0x36')]=_['keys'](db[_0x1d29('0x31')][_0x1d29('0x32')]);_0x271de8[_0x1d29('0x38')]=_['keys'](_0x31f739[_0x1d29('0x38')]);_0x271de8[_0x1d29('0x3a')]=_['intersection'](_0x271de8[_0x1d29('0x36')],_0x271de8['query']);_0x103f3a[_0x1d29('0x3c')]=_[_0x1d29('0x3b')](_0x271de8[_0x1d29('0x36')],qs[_0x1d29('0x3d')](_0x31f739[_0x1d29('0x38')][_0x1d29('0x3d')]));_0x103f3a[_0x1d29('0x3c')]=_0x103f3a[_0x1d29('0x3c')][_0x1d29('0x3e')]?_0x103f3a[_0x1d29('0x3c')]:_0x271de8[_0x1d29('0x36')];if(_0x31f739[_0x1d29('0x38')][_0x1d29('0x48')]){_0x103f3a['include']=[{'all':!![]}];}_0x103f3a=_['merge']({},_0x103f3a,_0x31f739[_0x1d29('0x47')]);return db[_0x1d29('0x31')][_0x1d29('0x4e')](_0x103f3a)[_0x1d29('0x29')](handleEntityNotFound(_0x933ae5,null))[_0x1d29('0x29')](respondWithResult(_0x933ae5,null))[_0x1d29('0x4f')](handleError(_0x933ae5,null));};exports[_0x1d29('0x50')]=function(_0x44a22c,_0x4bffac){return db[_0x1d29('0x31')][_0x1d29('0x50')](_0x44a22c[_0x1d29('0x51')],{})['then'](respondWithResult(_0x4bffac,0xc9))['catch'](handleError(_0x4bffac,null));};exports[_0x1d29('0x28')]=function(_0x37e828,_0x5ead15){if(_0x37e828[_0x1d29('0x51')]['id']){delete _0x37e828[_0x1d29('0x51')]['id'];}return db[_0x1d29('0x31')][_0x1d29('0x4e')]({'where':{'id':_0x37e828['params']['id']}})[_0x1d29('0x29')](handleEntityNotFound(_0x5ead15,null))[_0x1d29('0x29')](saveUpdates(_0x37e828['body'],null))['then'](respondWithResult(_0x5ead15,null))['catch'](handleError(_0x5ead15,null));};exports['destroy']=function(_0x3cfc79,_0x51efa5){return db[_0x1d29('0x31')][_0x1d29('0x4e')]({'where':{'id':_0x3cfc79[_0x1d29('0x4d')]['id']}})[_0x1d29('0x29')](handleEntityNotFound(_0x51efa5,null))['then'](removeEntity(_0x51efa5,null))[_0x1d29('0x4f')](handleError(_0x51efa5,null));};
\ No newline at end of file
+var _0x8ece=['sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack','name','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','findAll','rows','show','params','includeAll','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8ece,0xbd));var _0xe8ec=function(_0xd9f348,_0x1af746){_0xd9f348=_0xd9f348-0x0;var _0x5466e4=_0x8ece[_0xd9f348];return _0x5466e4;};'use strict';var emlformat=require(_0xe8ec('0x0'));var rimraf=require(_0xe8ec('0x1'));var zipdir=require(_0xe8ec('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe8ec('0x3'));var moment=require(_0xe8ec('0x4'));var BPromise=require(_0xe8ec('0x5'));var Mustache=require(_0xe8ec('0x6'));var util=require(_0xe8ec('0x7'));var path=require(_0xe8ec('0x8'));var sox=require(_0xe8ec('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe8ec('0xa'));var squel=require('squel');var crypto=require(_0xe8ec('0xb'));var jsforce=require(_0xe8ec('0xc'));var deskjs=require(_0xe8ec('0xd'));var toCsv=require(_0xe8ec('0xe'));var querystring=require('querystring');var Papa=require(_0xe8ec('0xf'));var Redis=require(_0xe8ec('0x10'));var authService=require(_0xe8ec('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe8ec('0x12'));var hardwareService=require(_0xe8ec('0x13'));var logger=require(_0xe8ec('0x14'))('api');var utils=require(_0xe8ec('0x15'));var config=require(_0xe8ec('0x16'));var licenseUtil=require(_0xe8ec('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d0f01,_0x39791d){_0x39791d=_0x39791d||0xcc;return function(_0xfa1c1d){if(_0xfa1c1d){return _0x1d0f01[_0xe8ec('0x18')](_0x39791d);}return _0x1d0f01[_0xe8ec('0x19')](_0x39791d)['end']();};}function respondWithResult(_0x19a5e8,_0x2191bc){_0x2191bc=_0x2191bc||0xc8;return function(_0x3ca304){if(_0x3ca304){return _0x19a5e8[_0xe8ec('0x19')](_0x2191bc)[_0xe8ec('0x1a')](_0x3ca304);}};}function respondWithFilteredResult(_0x4153b5,_0x21eaed){return function(_0x1b250a){if(_0x1b250a){var _0x34f9c3=typeof _0x21eaed[_0xe8ec('0x1b')]===_0xe8ec('0x1c')&&typeof _0x21eaed[_0xe8ec('0x1d')]==='undefined';var _0x462a69=_0x1b250a[_0xe8ec('0x1e')];var _0x332d92=_0x34f9c3?0x0:_0x21eaed[_0xe8ec('0x1b')];var _0x42ce97=_0x34f9c3?_0x1b250a[_0xe8ec('0x1e')]:_0x21eaed[_0xe8ec('0x1b')]+_0x21eaed[_0xe8ec('0x1d')];var _0x224c0e;if(_0x42ce97>=_0x462a69){_0x42ce97=_0x462a69;_0x224c0e=0xc8;}else{_0x224c0e=0xce;}_0x4153b5['status'](_0x224c0e);return _0x4153b5[_0xe8ec('0x1f')]('Content-Range',_0x332d92+'-'+_0x42ce97+'/'+_0x462a69)['json'](_0x1b250a);}return null;};}function patchUpdates(_0x4769b6){return function(_0x204894){try{jsonpatch[_0xe8ec('0x20')](_0x204894,_0x4769b6,!![]);}catch(_0x1a0a93){return BPromise[_0xe8ec('0x21')](_0x1a0a93);}return _0x204894[_0xe8ec('0x22')]();};}function saveUpdates(_0x2fbf0f,_0x5a7507){return function(_0x5743ef){if(_0x5743ef){return _0x5743ef[_0xe8ec('0x23')](_0x2fbf0f)[_0xe8ec('0x24')](function(_0x4ad993){return _0x4ad993;});}return null;};}function removeEntity(_0x29d33e,_0x982a66){return function(_0x330eaf){if(_0x330eaf){return _0x330eaf[_0xe8ec('0x25')]()[_0xe8ec('0x24')](function(){_0x29d33e[_0xe8ec('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5da2f0,_0x6fbe99){return function(_0x23f2f4){if(!_0x23f2f4){_0x5da2f0['sendStatus'](0x194);}return _0x23f2f4;};}function handleError(_0x55f184,_0x1cbdc4){_0x1cbdc4=_0x1cbdc4||0x1f4;return function(_0x1e54f7){logger['error'](_0x1e54f7[_0xe8ec('0x26')]);if(_0x1e54f7[_0xe8ec('0x27')]){delete _0x1e54f7[_0xe8ec('0x27')];}_0x55f184['status'](_0x1cbdc4)['send'](_0x1e54f7);};}exports[_0xe8ec('0x28')]=function(_0x4de086,_0x29ec72){var _0x18bd89={},_0x55f74e={},_0x2a3a17={'count':0x0,'rows':[]};var _0x4533c7=_[_0xe8ec('0x29')](db[_0xe8ec('0x2a')][_0xe8ec('0x2b')],function(_0x5e0ed5){return{'name':_0x5e0ed5[_0xe8ec('0x2c')],'type':_0x5e0ed5[_0xe8ec('0x2d')][_0xe8ec('0x2e')]};});_0x55f74e[_0xe8ec('0x2f')]=_[_0xe8ec('0x29')](_0x4533c7,_0xe8ec('0x27'));_0x55f74e[_0xe8ec('0x30')]=_[_0xe8ec('0x31')](_0x4de086['query']);_0x55f74e['filters']=_[_0xe8ec('0x32')](_0x55f74e[_0xe8ec('0x2f')],_0x55f74e[_0xe8ec('0x30')]);_0x18bd89['attributes']=_[_0xe8ec('0x32')](_0x55f74e['model'],qs['fields'](_0x4de086[_0xe8ec('0x30')]['fields']));_0x18bd89['attributes']=_0x18bd89[_0xe8ec('0x33')]['length']?_0x18bd89[_0xe8ec('0x33')]:_0x55f74e['model'];if(!_0x4de086[_0xe8ec('0x30')][_0xe8ec('0x34')]('nolimit')){_0x18bd89['limit']=qs['limit'](_0x4de086['query'][_0xe8ec('0x1d')]);_0x18bd89[_0xe8ec('0x1b')]=qs[_0xe8ec('0x1b')](_0x4de086[_0xe8ec('0x30')][_0xe8ec('0x1b')]);}_0x18bd89[_0xe8ec('0x35')]=qs[_0xe8ec('0x36')](_0x4de086[_0xe8ec('0x30')]['sort']);_0x18bd89[_0xe8ec('0x37')]=qs[_0xe8ec('0x38')](_[_0xe8ec('0x39')](_0x4de086[_0xe8ec('0x30')],_0x55f74e[_0xe8ec('0x38')]),_0x4533c7);if(_0x4de086[_0xe8ec('0x30')]['filter']){_0x18bd89[_0xe8ec('0x37')]=_[_0xe8ec('0x3a')](_0x18bd89['where'],{'$or':_[_0xe8ec('0x29')](_0x4533c7,function(_0x266d3b){if(_0x266d3b[_0xe8ec('0x2d')]!==_0xe8ec('0x3b')){var _0x3cc282={};_0x3cc282[_0x266d3b[_0xe8ec('0x27')]]={'$like':'%'+_0x4de086[_0xe8ec('0x30')][_0xe8ec('0x3c')]+'%'};return _0x3cc282;}})});}_0x18bd89=_[_0xe8ec('0x3a')]({},_0x18bd89,_0x4de086[_0xe8ec('0x3d')]);var _0x5bba7e={'where':_0x18bd89['where']};return db[_0xe8ec('0x2a')]['count'](_0x5bba7e)['then'](function(_0x418582){_0x2a3a17[_0xe8ec('0x1e')]=_0x418582;if(_0x4de086['query']['includeAll']){_0x18bd89[_0xe8ec('0x3e')]=[{'all':!![]}];}return db[_0xe8ec('0x2a')][_0xe8ec('0x3f')](_0x18bd89);})[_0xe8ec('0x24')](function(_0x2eeb76){_0x2a3a17[_0xe8ec('0x40')]=_0x2eeb76;return _0x2a3a17;})['then'](respondWithFilteredResult(_0x29ec72,_0x18bd89))['catch'](handleError(_0x29ec72,null));};exports[_0xe8ec('0x41')]=function(_0x52df12,_0xe9f07c){var _0x78cfda={'raw':!![],'where':{'id':_0x52df12[_0xe8ec('0x42')]['id']}},_0x1b578b={};_0x1b578b[_0xe8ec('0x2f')]=_['keys'](db[_0xe8ec('0x2a')][_0xe8ec('0x2b')]);_0x1b578b['query']=_[_0xe8ec('0x31')](_0x52df12[_0xe8ec('0x30')]);_0x1b578b[_0xe8ec('0x38')]=_[_0xe8ec('0x32')](_0x1b578b[_0xe8ec('0x2f')],_0x1b578b[_0xe8ec('0x30')]);_0x78cfda['attributes']=_[_0xe8ec('0x32')](_0x1b578b['model'],qs['fields'](_0x52df12[_0xe8ec('0x30')]['fields']));_0x78cfda[_0xe8ec('0x33')]=_0x78cfda[_0xe8ec('0x33')]['length']?_0x78cfda[_0xe8ec('0x33')]:_0x1b578b[_0xe8ec('0x2f')];if(_0x52df12[_0xe8ec('0x30')][_0xe8ec('0x43')]){_0x78cfda[_0xe8ec('0x3e')]=[{'all':!![]}];}_0x78cfda=_[_0xe8ec('0x3a')]({},_0x78cfda,_0x52df12[_0xe8ec('0x3d')]);return db[_0xe8ec('0x2a')][_0xe8ec('0x44')](_0x78cfda)['then'](handleEntityNotFound(_0xe9f07c,null))['then'](respondWithResult(_0xe9f07c,null))['catch'](handleError(_0xe9f07c,null));};exports[_0xe8ec('0x45')]=function(_0x50cc9e,_0x36c212){return db['SquareMessage'][_0xe8ec('0x45')](_0x50cc9e[_0xe8ec('0x46')],{})[_0xe8ec('0x24')](respondWithResult(_0x36c212,0xc9))['catch'](handleError(_0x36c212,null));};exports[_0xe8ec('0x23')]=function(_0x3cf098,_0xc33a79){if(_0x3cf098[_0xe8ec('0x46')]['id']){delete _0x3cf098[_0xe8ec('0x46')]['id'];}return db['SquareMessage']['find']({'where':{'id':_0x3cf098[_0xe8ec('0x42')]['id']}})['then'](handleEntityNotFound(_0xc33a79,null))[_0xe8ec('0x24')](saveUpdates(_0x3cf098[_0xe8ec('0x46')],null))[_0xe8ec('0x24')](respondWithResult(_0xc33a79,null))['catch'](handleError(_0xc33a79,null));};exports[_0xe8ec('0x25')]=function(_0x2ec3f1,_0x3613fa){return db[_0xe8ec('0x2a')][_0xe8ec('0x44')]({'where':{'id':_0x2ec3f1[_0xe8ec('0x42')]['id']}})[_0xe8ec('0x24')](handleEntityNotFound(_0x3613fa,null))[_0xe8ec('0x24')](removeEntity(_0x3613fa,null))['catch'](handleError(_0x3613fa,null));};
\ No newline at end of file
index 4411ebe..3bd7164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac9c=['define','SquareMessage','square_messages','lodash','util','../../config/logger','api','request-promise','path','./squareMessage.attributes','exports'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0xac9c,0x19a));var _0xcac9=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0xac9c[_0x1da527];return _0x40fc7c;};'use strict';var _=require(_0xcac9('0x0'));var util=require(_0xcac9('0x1'));var logger=require(_0xcac9('0x2'))(_0xcac9('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcac9('0x4'));var fs=require('fs');var path=require(_0xcac9('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcac9('0x6'));module[_0xcac9('0x7')]=function(_0x19049e,_0x434ded){return _0x19049e[_0xcac9('0x8')](_0xcac9('0x9'),attributes,{'tableName':_0xcac9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a65=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SquareMessage','lodash','util','../../config/logger','api','moment'];(function(_0x26938e,_0x255068){var _0x5830c2=function(_0x593af4){while(--_0x593af4){_0x26938e['push'](_0x26938e['shift']());}};_0x5830c2(++_0x255068);}(_0x1a65,0x140));var _0x51a6=function(_0x48679d,_0x19cc7c){_0x48679d=_0x48679d-0x0;var _0x49ac57=_0x1a65[_0x48679d];return _0x49ac57;};'use strict';var _=require(_0x51a6('0x0'));var util=require(_0x51a6('0x1'));var logger=require(_0x51a6('0x2'))(_0x51a6('0x3'));var moment=require(_0x51a6('0x4'));var BPromise=require(_0x51a6('0x5'));var rp=require(_0x51a6('0x6'));var fs=require('fs');var path=require(_0x51a6('0x7'));var rimraf=require(_0x51a6('0x8'));var config=require(_0x51a6('0x9'));var attributes=require('./squareMessage.attributes');module[_0x51a6('0xa')]=function(_0x37c059,_0x53aa92){return _0x37c059[_0x51a6('0xb')](_0x51a6('0xc'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c95fc4d..ac6120d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa47=['body','options','raw','lodash','util','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareMessage','SquareMessage'];(function(_0x3b9703,_0x4ec964){var _0x1bb1cb=function(_0x24622){while(--_0x24622){_0x3b9703['push'](_0x3b9703['shift']());}};_0x1bb1cb(++_0x4ec964);}(_0xfa47,0x107));var _0x7fa4=function(_0x41c49e,_0x4e9e2c){_0x41c49e=_0x41c49e-0x0;var _0x648a67=_0xfa47[_0x41c49e];return _0x648a67;};'use strict';var _=require(_0x7fa4('0x0'));var util=require(_0x7fa4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7fa4('0x2'))['db'];var utils=require(_0x7fa4('0x3'));var logger=require(_0x7fa4('0x4'))(_0x7fa4('0x5'));var config=require(_0x7fa4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7fa4('0x7')][_0x7fa4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x35c947,_0x439404,_0x212e31){return new BPromise(function(_0x27f6c0,_0x2660e8){return client[_0x7fa4('0x9')](_0x35c947,_0x212e31)[_0x7fa4('0xa')](function(_0x2aca88){logger[_0x7fa4('0xb')](_0x7fa4('0xc'),_0x439404,_0x7fa4('0xd'));logger[_0x7fa4('0xe')](_0x7fa4('0xf'),_0x439404,'request\x20sent',JSON[_0x7fa4('0x10')](_0x2aca88));if(_0x2aca88['error']){if(_0x2aca88[_0x7fa4('0x11')][_0x7fa4('0x12')]===0x1f4){logger['error']('SquareMessage,\x20%s,\x20%s',_0x439404,_0x2aca88['error'][_0x7fa4('0x13')]);return _0x2660e8(_0x2aca88['error'][_0x7fa4('0x13')]);}logger[_0x7fa4('0x11')](_0x7fa4('0xc'),_0x439404,_0x2aca88[_0x7fa4('0x11')][_0x7fa4('0x13')]);return _0x27f6c0(_0x2aca88[_0x7fa4('0x11')][_0x7fa4('0x13')]);}else{logger[_0x7fa4('0xb')](_0x7fa4('0xc'),_0x439404,_0x7fa4('0xd'));_0x27f6c0(_0x2aca88['result']['message']);}})[_0x7fa4('0x14')](function(_0x9708f7){logger['error'](_0x7fa4('0xc'),_0x439404,_0x9708f7);_0x2660e8(_0x9708f7);});});}exports[_0x7fa4('0x15')]=function(_0x2da581){var _0x1d1119=this;return new Promise(function(_0xeb814a,_0x12bf01){return db[_0x7fa4('0x16')]['create'](_0x2da581[_0x7fa4('0x17')],{'raw':_0x2da581[_0x7fa4('0x18')]?_0x2da581[_0x7fa4('0x18')][_0x7fa4('0x19')]===undefined?!![]:![]:!![]})[_0x7fa4('0xa')](function(_0x24bba3){logger['info'](_0x7fa4('0x15'),_0x2da581);logger['debug'](_0x7fa4('0x15'),_0x2da581,JSON['stringify'](_0x24bba3));_0xeb814a(_0x24bba3);})[_0x7fa4('0x14')](function(_0x4bfeb6){logger['error'](_0x7fa4('0x15'),_0x4bfeb6['message'],_0x2da581);_0x12bf01(_0x1d1119[_0x7fa4('0x11')](0x1f4,_0x4bfeb6['message']));});});};
\ No newline at end of file
+var _0x9e93=['body','options','raw','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateSquareMessage','create'];(function(_0x20b43d,_0x1d10a){var _0x313ee2=function(_0x224069){while(--_0x224069){_0x20b43d['push'](_0x20b43d['shift']());}};_0x313ee2(++_0x1d10a);}(_0x9e93,0x143));var _0x39e9=function(_0x6c0123,_0x4c8d3b){_0x6c0123=_0x6c0123-0x0;var _0x5a87d2=_0x9e93[_0x6c0123];return _0x5a87d2;};'use strict';var _=require('lodash');var util=require(_0x39e9('0x0'));var moment=require(_0x39e9('0x1'));var BPromise=require(_0x39e9('0x2'));var rs=require(_0x39e9('0x3'));var fs=require('fs');var Redis=require(_0x39e9('0x4'));var db=require(_0x39e9('0x5'))['db'];var utils=require(_0x39e9('0x6'));var logger=require(_0x39e9('0x7'))(_0x39e9('0x8'));var config=require('../../config/environment');var jayson=require(_0x39e9('0x9'));var client=jayson[_0x39e9('0xa')][_0x39e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5dec60,_0x474547,_0x13d6f9){return new BPromise(function(_0x49830b,_0x42a0c0){return client['request'](_0x5dec60,_0x13d6f9)[_0x39e9('0xc')](function(_0x41c616){logger[_0x39e9('0xd')](_0x39e9('0xe'),_0x474547,'request\x20sent');logger[_0x39e9('0xf')](_0x39e9('0x10'),_0x474547,_0x39e9('0x11'),JSON[_0x39e9('0x12')](_0x41c616));if(_0x41c616[_0x39e9('0x13')]){if(_0x41c616['error'][_0x39e9('0x14')]===0x1f4){logger[_0x39e9('0x13')]('SquareMessage,\x20%s,\x20%s',_0x474547,_0x41c616[_0x39e9('0x13')]['message']);return _0x42a0c0(_0x41c616['error']['message']);}logger['error'](_0x39e9('0xe'),_0x474547,_0x41c616[_0x39e9('0x13')][_0x39e9('0x15')]);return _0x49830b(_0x41c616[_0x39e9('0x13')]['message']);}else{logger['info'](_0x39e9('0xe'),_0x474547,_0x39e9('0x11'));_0x49830b(_0x41c616[_0x39e9('0x16')][_0x39e9('0x15')]);}})['catch'](function(_0x21ea68){logger[_0x39e9('0x13')](_0x39e9('0xe'),_0x474547,_0x21ea68);_0x42a0c0(_0x21ea68);});});}exports[_0x39e9('0x17')]=function(_0x104951){var _0x47aa5d=this;return new Promise(function(_0xa28b2d,_0x106e92){return db['SquareMessage'][_0x39e9('0x18')](_0x104951[_0x39e9('0x19')],{'raw':_0x104951[_0x39e9('0x1a')]?_0x104951[_0x39e9('0x1a')][_0x39e9('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x23d8e6){logger[_0x39e9('0xd')]('CreateSquareMessage',_0x104951);logger['debug']('CreateSquareMessage',_0x104951,JSON[_0x39e9('0x12')](_0x23d8e6));_0xa28b2d(_0x23d8e6);})[_0x39e9('0x1c')](function(_0x41dfa3){logger[_0x39e9('0x13')](_0x39e9('0x17'),_0x41dfa3[_0x39e9('0x15')],_0x104951);_0x106e92(_0x47aa5d[_0x39e9('0x13')](0x1f4,_0x41dfa3[_0x39e9('0x15')]));});});};
\ No newline at end of file
index 1f7a876..cca9ea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d2=['Router','fs-extra','../../config/environment','./squareOdbc.controller','get','isAuthenticated','/:id','show','/:id/test','15s','test','put','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x3e1702,_0x1951ac){var _0x249110=function(_0x3faf9c){while(--_0x3faf9c){_0x3e1702['push'](_0x3e1702['shift']());}};_0x249110(++_0x1951ac);}(_0x30d2,0x13c));var _0x230d=function(_0x9cbfe0,_0x56aada){_0x9cbfe0=_0x9cbfe0-0x0;var _0x1f1534=_0x30d2[_0x9cbfe0];return _0x1f1534;};'use strict';var multer=require(_0x230d('0x0'));var util=require(_0x230d('0x1'));var path=require('path');var timeout=require(_0x230d('0x2'));var express=require(_0x230d('0x3'));var router=express[_0x230d('0x4')]();var fs_extra=require(_0x230d('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x230d('0x6'));var controller=require(_0x230d('0x7'));router[_0x230d('0x8')]('/',auth[_0x230d('0x9')](),controller['index']);router['get'](_0x230d('0xa'),auth[_0x230d('0x9')](),controller[_0x230d('0xb')]);router['get'](_0x230d('0xc'),auth[_0x230d('0x9')](),timeout(_0x230d('0xd')),controller[_0x230d('0xe')]);router['post']('/',auth[_0x230d('0x9')](),controller['create']);router[_0x230d('0xf')](_0x230d('0xa'),auth[_0x230d('0x9')](),controller[_0x230d('0x10')]);router[_0x230d('0x11')]('/:id',auth[_0x230d('0x9')](),controller[_0x230d('0x12')]);module[_0x230d('0x13')]=router;
\ No newline at end of file
+var _0xb185=['show','/:id/test','test','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','index','/:id','isAuthenticated'];(function(_0x577527,_0xdf13dd){var _0x27fad8=function(_0x36ac89){while(--_0x36ac89){_0x577527['push'](_0x577527['shift']());}};_0x27fad8(++_0xdf13dd);}(_0xb185,0x171));var _0x5b18=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xb185[_0xdea41a];return _0x15d0d8;};'use strict';var multer=require(_0x5b18('0x0'));var util=require(_0x5b18('0x1'));var path=require(_0x5b18('0x2'));var timeout=require(_0x5b18('0x3'));var express=require(_0x5b18('0x4'));var router=express[_0x5b18('0x5')]();var fs_extra=require(_0x5b18('0x6'));var auth=require(_0x5b18('0x7'));var interaction=require(_0x5b18('0x8'));var config=require(_0x5b18('0x9'));var controller=require(_0x5b18('0xa'));router[_0x5b18('0xb')]('/',auth['isAuthenticated'](),controller[_0x5b18('0xc')]);router[_0x5b18('0xb')](_0x5b18('0xd'),auth[_0x5b18('0xe')](),controller[_0x5b18('0xf')]);router[_0x5b18('0xb')](_0x5b18('0x10'),auth[_0x5b18('0xe')](),timeout('15s'),controller[_0x5b18('0x11')]);router[_0x5b18('0x12')]('/',auth[_0x5b18('0xe')](),controller[_0x5b18('0x13')]);router['put'](_0x5b18('0xd'),auth[_0x5b18('0xe')](),controller[_0x5b18('0x14')]);router[_0x5b18('0x15')](_0x5b18('0xd'),auth[_0x5b18('0xe')](),controller[_0x5b18('0x16')]);module[_0x5b18('0x17')]=router;
\ No newline at end of file
index 4ffdc86..739824c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5198=['sequelize','exports','STRING','name'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x5198,0x114));var _0x8519=function(_0x3d1d37,_0x20fa45){_0x3d1d37=_0x3d1d37-0x0;var _0x406022=_0x5198[_0x3d1d37];return _0x406022;};'use strict';var Sequelize=require(_0x8519('0x0'));module[_0x8519('0x1')]={'name':{'type':Sequelize[_0x8519('0x2')],'unique':_0x8519('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x8519('0x2')]},'description':{'type':Sequelize[_0x8519('0x2')]}};
\ No newline at end of file
+var _0xcc97=['sequelize','exports','STRING'];(function(_0x3e1226,_0x4199d6){var _0x1ff634=function(_0x4dbed0){while(--_0x4dbed0){_0x3e1226['push'](_0x3e1226['shift']());}};_0x1ff634(++_0x4199d6);}(_0xcc97,0x81));var _0x7cc9=function(_0x184c94,_0x14610d){_0x184c94=_0x184c94-0x0;var _0x305fb1=_0xcc97[_0x184c94];return _0x305fb1;};'use strict';var Sequelize=require(_0x7cc9('0x0'));module[_0x7cc9('0x1')]={'name':{'type':Sequelize[_0x7cc9('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x7cc9('0x2')]},'description':{'type':Sequelize[_0x7cc9('0x2')]}};
\ No newline at end of file
index f04a6aa..a2c24bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe21d=['openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','ODBC','stack','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','rows','catch','show','params','includeAll','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','UserProfileResource','error','body','test','dsn','odbc'];(function(_0x371453,_0x1c0638){var _0x53d174=function(_0x16df62){while(--_0x16df62){_0x371453['push'](_0x371453['shift']());}};_0x53d174(++_0x1c0638);}(_0xe21d,0x113));var _0xde21=function(_0x2c1746,_0x437ee2){_0x2c1746=_0x2c1746-0x0;var _0x5709fc=_0xe21d[_0x2c1746];return _0x5709fc;};'use strict';var emlformat=require(_0xde21('0x0'));var rimraf=require(_0xde21('0x1'));var zipdir=require(_0xde21('0x2'));var jsonpatch=require(_0xde21('0x3'));var rp=require(_0xde21('0x4'));var moment=require(_0xde21('0x5'));var BPromise=require(_0xde21('0x6'));var Mustache=require(_0xde21('0x7'));var util=require('util');var path=require(_0xde21('0x8'));var sox=require(_0xde21('0x9'));var csv=require(_0xde21('0xa'));var ejs=require(_0xde21('0xb'));var fs=require('fs');var fs_extra=require(_0xde21('0xc'));var _=require(_0xde21('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xde21('0xe'));var deskjs=require(_0xde21('0xf'));var toCsv=require(_0xde21('0xa'));var querystring=require(_0xde21('0x10'));var Papa=require('papaparse');var Redis=require(_0xde21('0x11'));var authService=require(_0xde21('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xde21('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xde21('0x14'))(_0xde21('0x15'));var utils=require(_0xde21('0x16'));var config=require(_0xde21('0x17'));var licenseUtil=require(_0xde21('0x18'));var db=require(_0xde21('0x19'))['db'];function respondWithStatusCode(_0x422d34,_0x24cc66){_0x24cc66=_0x24cc66||0xcc;return function(_0x5d6c79){if(_0x5d6c79){return _0x422d34[_0xde21('0x1a')](_0x24cc66);}return _0x422d34[_0xde21('0x1b')](_0x24cc66)[_0xde21('0x1c')]();};}function respondWithResult(_0x599193,_0x22ecfe){_0x22ecfe=_0x22ecfe||0xc8;return function(_0x749bc0){if(_0x749bc0){return _0x599193[_0xde21('0x1b')](_0x22ecfe)['json'](_0x749bc0);}};}function respondWithFilteredResult(_0x114d95,_0x2e4b4c){return function(_0x5ba6a2){if(_0x5ba6a2){var _0xd35d8c=typeof _0x2e4b4c[_0xde21('0x1d')]===_0xde21('0x1e')&&typeof _0x2e4b4c[_0xde21('0x1f')]===_0xde21('0x1e');var _0x95a1e4=_0x5ba6a2[_0xde21('0x20')];var _0xd2d2fc=_0xd35d8c?0x0:_0x2e4b4c[_0xde21('0x1d')];var _0x162a03=_0xd35d8c?_0x5ba6a2[_0xde21('0x20')]:_0x2e4b4c['offset']+_0x2e4b4c[_0xde21('0x1f')];var _0x2b489c;if(_0x162a03>=_0x95a1e4){_0x162a03=_0x95a1e4;_0x2b489c=0xc8;}else{_0x2b489c=0xce;}_0x114d95[_0xde21('0x1b')](_0x2b489c);return _0x114d95[_0xde21('0x21')](_0xde21('0x22'),_0xd2d2fc+'-'+_0x162a03+'/'+_0x95a1e4)[_0xde21('0x23')](_0x5ba6a2);}return null;};}function patchUpdates(_0x30242f){return function(_0x1dff21){try{jsonpatch[_0xde21('0x24')](_0x1dff21,_0x30242f,!![]);}catch(_0x35692b){return BPromise[_0xde21('0x25')](_0x35692b);}return _0x1dff21[_0xde21('0x26')]();};}function saveUpdates(_0x8b10d1,_0x132811){return function(_0x6212da){if(_0x6212da){return _0x6212da[_0xde21('0x27')](_0x8b10d1)[_0xde21('0x28')](function(_0x391b9c){return _0x391b9c;});}return null;};}function removeEntity(_0x4df7c0,_0x3548a9){return function(_0xac9267){if(_0xac9267){return _0xac9267[_0xde21('0x29')]()[_0xde21('0x28')](function(){var _0x500237=_0xac9267['get']({'plain':!![]});var _0x183a06=_0xde21('0x2a');return db['UserProfileResource'][_0xde21('0x29')]({'where':{'type':_0x183a06,'resourceId':_0x500237['id']}})[_0xde21('0x28')](function(){return _0xac9267;});})[_0xde21('0x28')](function(){_0x4df7c0[_0xde21('0x1b')](0xcc)[_0xde21('0x1c')]();});}};}function handleEntityNotFound(_0x32c233,_0x116699){return function(_0x54e818){if(!_0x54e818){_0x32c233[_0xde21('0x1a')](0x194);}return _0x54e818;};}function handleError(_0x15b98a,_0x31e7b6){_0x31e7b6=_0x31e7b6||0x1f4;return function(_0xdb43aa){logger['error'](_0xdb43aa[_0xde21('0x2b')]);if(_0xdb43aa[_0xde21('0x2c')]){delete _0xdb43aa['name'];}_0x15b98a[_0xde21('0x1b')](_0x31e7b6)[_0xde21('0x2d')](_0xdb43aa);};}exports[_0xde21('0x2e')]=function(_0x534626,_0x415c20){var _0x14005f={},_0x35b93f={},_0x1a59f9={'count':0x0,'rows':[]};var _0x4ea495=_[_0xde21('0x2f')](db[_0xde21('0x30')][_0xde21('0x31')],function(_0x260f5e){return{'name':_0x260f5e[_0xde21('0x32')],'type':_0x260f5e[_0xde21('0x33')][_0xde21('0x34')]};});_0x35b93f['model']=_[_0xde21('0x2f')](_0x4ea495,_0xde21('0x2c'));_0x35b93f['query']=_[_0xde21('0x35')](_0x534626[_0xde21('0x36')]);_0x35b93f[_0xde21('0x37')]=_[_0xde21('0x38')](_0x35b93f[_0xde21('0x39')],_0x35b93f[_0xde21('0x36')]);_0x14005f[_0xde21('0x3a')]=_[_0xde21('0x38')](_0x35b93f[_0xde21('0x39')],qs[_0xde21('0x3b')](_0x534626[_0xde21('0x36')][_0xde21('0x3b')]));_0x14005f[_0xde21('0x3a')]=_0x14005f[_0xde21('0x3a')][_0xde21('0x3c')]?_0x14005f[_0xde21('0x3a')]:_0x35b93f[_0xde21('0x39')];if(!_0x534626['query'][_0xde21('0x3d')]('nolimit')){_0x14005f[_0xde21('0x1f')]=qs[_0xde21('0x1f')](_0x534626[_0xde21('0x36')][_0xde21('0x1f')]);_0x14005f[_0xde21('0x1d')]=qs[_0xde21('0x1d')](_0x534626[_0xde21('0x36')][_0xde21('0x1d')]);}_0x14005f[_0xde21('0x3e')]=qs[_0xde21('0x3f')](_0x534626['query']['sort']);_0x14005f[_0xde21('0x40')]=qs[_0xde21('0x37')](_[_0xde21('0x41')](_0x534626[_0xde21('0x36')],_0x35b93f[_0xde21('0x37')]),_0x4ea495);if(_0x534626[_0xde21('0x36')][_0xde21('0x42')]){_0x14005f['where']=_[_0xde21('0x43')](_0x14005f[_0xde21('0x40')],{'$or':_[_0xde21('0x2f')](_0x4ea495,function(_0x11d50e){if(_0x11d50e[_0xde21('0x33')]!==_0xde21('0x44')){var _0x5e687e={};_0x5e687e[_0x11d50e['name']]={'$like':'%'+_0x534626[_0xde21('0x36')][_0xde21('0x42')]+'%'};return _0x5e687e;}})});}_0x14005f=_[_0xde21('0x43')]({},_0x14005f,_0x534626[_0xde21('0x45')]);var _0x13f1e5={'where':_0x14005f['where']};return db['SquareOdbc'][_0xde21('0x20')](_0x13f1e5)[_0xde21('0x28')](function(_0x151670){_0x1a59f9['count']=_0x151670;if(_0x534626[_0xde21('0x36')]['includeAll']){_0x14005f['include']=[{'all':!![]}];}return db['SquareOdbc']['findAll'](_0x14005f);})[_0xde21('0x28')](function(_0x2da6fa){_0x1a59f9[_0xde21('0x46')]=_0x2da6fa;return _0x1a59f9;})['then'](respondWithFilteredResult(_0x415c20,_0x14005f))[_0xde21('0x47')](handleError(_0x415c20,null));};exports[_0xde21('0x48')]=function(_0x477a39,_0x3cec10){var _0x2ce285={'raw':!![],'where':{'id':_0x477a39[_0xde21('0x49')]['id']}},_0x2b6126={};_0x2b6126[_0xde21('0x39')]=_[_0xde21('0x35')](db['SquareOdbc'][_0xde21('0x31')]);_0x2b6126[_0xde21('0x36')]=_[_0xde21('0x35')](_0x477a39['query']);_0x2b6126[_0xde21('0x37')]=_[_0xde21('0x38')](_0x2b6126[_0xde21('0x39')],_0x2b6126[_0xde21('0x36')]);_0x2ce285[_0xde21('0x3a')]=_[_0xde21('0x38')](_0x2b6126['model'],qs[_0xde21('0x3b')](_0x477a39[_0xde21('0x36')]['fields']));_0x2ce285[_0xde21('0x3a')]=_0x2ce285['attributes'][_0xde21('0x3c')]?_0x2ce285['attributes']:_0x2b6126[_0xde21('0x39')];if(_0x477a39['query'][_0xde21('0x4a')]){_0x2ce285[_0xde21('0x4b')]=[{'all':!![]}];}_0x2ce285=_[_0xde21('0x43')]({},_0x2ce285,_0x477a39[_0xde21('0x45')]);return db[_0xde21('0x30')][_0xde21('0x4c')](_0x2ce285)[_0xde21('0x28')](handleEntityNotFound(_0x3cec10,null))[_0xde21('0x28')](respondWithResult(_0x3cec10,null))['catch'](handleError(_0x3cec10,null));};exports[_0xde21('0x4d')]=function(_0x5e955c,_0x50bde2){return db['SquareOdbc'][_0xde21('0x4d')](_0x5e955c['body'],{})['then'](function(_0x38fb64){var _0xf7bdec=_0x5e955c[_0xde21('0x4e')]['get']({'plain':!![]});if(!_0xf7bdec)throw new Error(_0xde21('0x4f'));if(_0xf7bdec[_0xde21('0x50')]===_0xde21('0x4e')){var _0x2c3965=_0x38fb64[_0xde21('0x51')]({'plain':!![]});var _0x4e471c='ODBC';return db['UserProfileSection'][_0xde21('0x4c')]({'where':{'name':_0x4e471c,'userProfileId':_0xf7bdec[_0xde21('0x52')]},'raw':!![]})[_0xde21('0x28')](function(_0x1e9f5b){if(_0x1e9f5b&&_0x1e9f5b['autoAssociation']===0x0){return db[_0xde21('0x53')][_0xde21('0x4d')]({'name':_0x2c3965[_0xde21('0x2c')],'resourceId':_0x2c3965['id'],'type':_0x1e9f5b['name'],'sectionId':_0x1e9f5b['id']},{})['then'](function(){return _0x38fb64;});}else{return _0x38fb64;}})[_0xde21('0x47')](function(_0x3bb2ee){logger[_0xde21('0x54')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3bb2ee);throw _0x3bb2ee;});}return _0x38fb64;})[_0xde21('0x28')](respondWithResult(_0x50bde2,0xc9))['catch'](handleError(_0x50bde2,null));};exports['update']=function(_0x398af2,_0x9e7ce){if(_0x398af2[_0xde21('0x55')]['id']){delete _0x398af2[_0xde21('0x55')]['id'];}return db['SquareOdbc'][_0xde21('0x4c')]({'where':{'id':_0x398af2[_0xde21('0x49')]['id']}})['then'](handleEntityNotFound(_0x9e7ce,null))['then'](saveUpdates(_0x398af2[_0xde21('0x55')],null))[_0xde21('0x28')](respondWithResult(_0x9e7ce,null))[_0xde21('0x47')](handleError(_0x9e7ce,null));};exports[_0xde21('0x29')]=function(_0xce7e21,_0x5cf498){return db['SquareOdbc'][_0xde21('0x4c')]({'where':{'id':_0xce7e21[_0xde21('0x49')]['id']}})[_0xde21('0x28')](handleEntityNotFound(_0x5cf498,null))['then'](removeEntity(_0x5cf498,null))[_0xde21('0x47')](handleError(_0x5cf498,null));};exports[_0xde21('0x56')]=function(_0x47ae35,_0xa9e5c4,_0x3c5ad7){var _0xeedae4;return db[_0xde21('0x30')][_0xde21('0x4c')]({'where':{'id':_0x47ae35[_0xde21('0x49')]['id']},'attributes':['id',_0xde21('0x57')]})[_0xde21('0x28')](handleEntityNotFound(_0xa9e5c4,null))[_0xde21('0x28')](function(_0x443181){if(_0x443181){var _0x271ba8=require(_0xde21('0x58'))();_0x271ba8[_0xde21('0x59')](_0x443181['dsn']);_0x271ba8[_0xde21('0x5a')]();return _0x443181;}})[_0xde21('0x28')](respondWithResult(_0xa9e5c4,null))[_0xde21('0x47')](handleError(_0xa9e5c4,null));};
\ No newline at end of file
+var _0xb4f8=['key','map','keys','query','filters','intersection','model','fields','attributes','length','nolimit','sort','where','pick','filter','merge','options','includeAll','rows','catch','show','params','include','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','dsn','openSync','closeSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','ODBC','error','name','send','index','SquareOdbc','type'];(function(_0x1afe6d,_0x5a79f9){var _0x2dc7eb=function(_0x40a26f){while(--_0x40a26f){_0x1afe6d['push'](_0x1afe6d['shift']());}};_0x2dc7eb(++_0x5a79f9);}(_0xb4f8,0x16f));var _0x8b4f=function(_0x576170,_0x1712ae){_0x576170=_0x576170-0x0;var _0x397c70=_0xb4f8[_0x576170];return _0x397c70;};'use strict';var emlformat=require(_0x8b4f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8b4f('0x1'));var jsonpatch=require(_0x8b4f('0x2'));var rp=require(_0x8b4f('0x3'));var moment=require(_0x8b4f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8b4f('0x5'));var util=require('util');var path=require(_0x8b4f('0x6'));var sox=require(_0x8b4f('0x7'));var csv=require(_0x8b4f('0x8'));var ejs=require(_0x8b4f('0x9'));var fs=require('fs');var fs_extra=require(_0x8b4f('0xa'));var _=require('lodash');var squel=require(_0x8b4f('0xb'));var crypto=require('crypto');var jsforce=require(_0x8b4f('0xc'));var deskjs=require(_0x8b4f('0xd'));var toCsv=require(_0x8b4f('0x8'));var querystring=require(_0x8b4f('0xe'));var Papa=require('papaparse');var Redis=require(_0x8b4f('0xf'));var authService=require(_0x8b4f('0x10'));var qs=require(_0x8b4f('0x11'));var as=require(_0x8b4f('0x12'));var hardwareService=require(_0x8b4f('0x13'));var logger=require(_0x8b4f('0x14'))(_0x8b4f('0x15'));var utils=require(_0x8b4f('0x16'));var config=require(_0x8b4f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8b4f('0x18'))['db'];function respondWithStatusCode(_0x3e1c29,_0x1af676){_0x1af676=_0x1af676||0xcc;return function(_0x236bdc){if(_0x236bdc){return _0x3e1c29[_0x8b4f('0x19')](_0x1af676);}return _0x3e1c29[_0x8b4f('0x1a')](_0x1af676)[_0x8b4f('0x1b')]();};}function respondWithResult(_0x54b57d,_0x7fcdc1){_0x7fcdc1=_0x7fcdc1||0xc8;return function(_0x2aab55){if(_0x2aab55){return _0x54b57d[_0x8b4f('0x1a')](_0x7fcdc1)[_0x8b4f('0x1c')](_0x2aab55);}};}function respondWithFilteredResult(_0x1f2056,_0x1875f8){return function(_0x4c9050){if(_0x4c9050){var _0x5134ba=typeof _0x1875f8[_0x8b4f('0x1d')]===_0x8b4f('0x1e')&&typeof _0x1875f8[_0x8b4f('0x1f')]===_0x8b4f('0x1e');var _0x498d73=_0x4c9050[_0x8b4f('0x20')];var _0xf2e5c7=_0x5134ba?0x0:_0x1875f8[_0x8b4f('0x1d')];var _0x284424=_0x5134ba?_0x4c9050[_0x8b4f('0x20')]:_0x1875f8['offset']+_0x1875f8[_0x8b4f('0x1f')];var _0x29d9cc;if(_0x284424>=_0x498d73){_0x284424=_0x498d73;_0x29d9cc=0xc8;}else{_0x29d9cc=0xce;}_0x1f2056[_0x8b4f('0x1a')](_0x29d9cc);return _0x1f2056[_0x8b4f('0x21')](_0x8b4f('0x22'),_0xf2e5c7+'-'+_0x284424+'/'+_0x498d73)[_0x8b4f('0x1c')](_0x4c9050);}return null;};}function patchUpdates(_0x40409d){return function(_0x1a5dfc){try{jsonpatch[_0x8b4f('0x23')](_0x1a5dfc,_0x40409d,!![]);}catch(_0x2c653e){return BPromise[_0x8b4f('0x24')](_0x2c653e);}return _0x1a5dfc['save']();};}function saveUpdates(_0x415732,_0x4576b7){return function(_0x34c0c4){if(_0x34c0c4){return _0x34c0c4[_0x8b4f('0x25')](_0x415732)[_0x8b4f('0x26')](function(_0xe689b8){return _0xe689b8;});}return null;};}function removeEntity(_0x2d4059,_0x3d912a){return function(_0x518eea){if(_0x518eea){return _0x518eea[_0x8b4f('0x27')]()['then'](function(){var _0x139152=_0x518eea[_0x8b4f('0x28')]({'plain':!![]});var _0x285392=_0x8b4f('0x29');return db['UserProfileResource'][_0x8b4f('0x27')]({'where':{'type':_0x285392,'resourceId':_0x139152['id']}})['then'](function(){return _0x518eea;});})[_0x8b4f('0x26')](function(){_0x2d4059[_0x8b4f('0x1a')](0xcc)[_0x8b4f('0x1b')]();});}};}function handleEntityNotFound(_0x4b8c6d,_0x33e19a){return function(_0x2aebed){if(!_0x2aebed){_0x4b8c6d[_0x8b4f('0x19')](0x194);}return _0x2aebed;};}function handleError(_0x40f921,_0x2672f5){_0x2672f5=_0x2672f5||0x1f4;return function(_0x56dfa2){logger[_0x8b4f('0x2a')](_0x56dfa2['stack']);if(_0x56dfa2[_0x8b4f('0x2b')]){delete _0x56dfa2[_0x8b4f('0x2b')];}_0x40f921[_0x8b4f('0x1a')](_0x2672f5)[_0x8b4f('0x2c')](_0x56dfa2);};}exports[_0x8b4f('0x2d')]=function(_0x42fb4d,_0x2e8b0b){var _0x471f6a={},_0x1ed862={},_0x4b4f62={'count':0x0,'rows':[]};var _0x1f446a=_['map'](db[_0x8b4f('0x2e')]['rawAttributes'],function(_0x1feac9){return{'name':_0x1feac9['fieldName'],'type':_0x1feac9[_0x8b4f('0x2f')][_0x8b4f('0x30')]};});_0x1ed862['model']=_[_0x8b4f('0x31')](_0x1f446a,_0x8b4f('0x2b'));_0x1ed862['query']=_[_0x8b4f('0x32')](_0x42fb4d[_0x8b4f('0x33')]);_0x1ed862[_0x8b4f('0x34')]=_[_0x8b4f('0x35')](_0x1ed862[_0x8b4f('0x36')],_0x1ed862[_0x8b4f('0x33')]);_0x471f6a['attributes']=_[_0x8b4f('0x35')](_0x1ed862['model'],qs[_0x8b4f('0x37')](_0x42fb4d[_0x8b4f('0x33')][_0x8b4f('0x37')]));_0x471f6a[_0x8b4f('0x38')]=_0x471f6a[_0x8b4f('0x38')][_0x8b4f('0x39')]?_0x471f6a['attributes']:_0x1ed862[_0x8b4f('0x36')];if(!_0x42fb4d[_0x8b4f('0x33')]['hasOwnProperty'](_0x8b4f('0x3a'))){_0x471f6a[_0x8b4f('0x1f')]=qs['limit'](_0x42fb4d[_0x8b4f('0x33')][_0x8b4f('0x1f')]);_0x471f6a[_0x8b4f('0x1d')]=qs[_0x8b4f('0x1d')](_0x42fb4d['query'][_0x8b4f('0x1d')]);}_0x471f6a['order']=qs[_0x8b4f('0x3b')](_0x42fb4d[_0x8b4f('0x33')][_0x8b4f('0x3b')]);_0x471f6a[_0x8b4f('0x3c')]=qs[_0x8b4f('0x34')](_[_0x8b4f('0x3d')](_0x42fb4d[_0x8b4f('0x33')],_0x1ed862[_0x8b4f('0x34')]),_0x1f446a);if(_0x42fb4d[_0x8b4f('0x33')][_0x8b4f('0x3e')]){_0x471f6a[_0x8b4f('0x3c')]=_[_0x8b4f('0x3f')](_0x471f6a[_0x8b4f('0x3c')],{'$or':_[_0x8b4f('0x31')](_0x1f446a,function(_0x3731fe){if(_0x3731fe[_0x8b4f('0x2f')]!=='VIRTUAL'){var _0x2dc351={};_0x2dc351[_0x3731fe[_0x8b4f('0x2b')]]={'$like':'%'+_0x42fb4d[_0x8b4f('0x33')][_0x8b4f('0x3e')]+'%'};return _0x2dc351;}})});}_0x471f6a=_[_0x8b4f('0x3f')]({},_0x471f6a,_0x42fb4d[_0x8b4f('0x40')]);var _0x9f05e4={'where':_0x471f6a[_0x8b4f('0x3c')]};return db['SquareOdbc'][_0x8b4f('0x20')](_0x9f05e4)[_0x8b4f('0x26')](function(_0x3ba6cd){_0x4b4f62[_0x8b4f('0x20')]=_0x3ba6cd;if(_0x42fb4d[_0x8b4f('0x33')][_0x8b4f('0x41')]){_0x471f6a['include']=[{'all':!![]}];}return db['SquareOdbc']['findAll'](_0x471f6a);})['then'](function(_0x444b23){_0x4b4f62[_0x8b4f('0x42')]=_0x444b23;return _0x4b4f62;})[_0x8b4f('0x26')](respondWithFilteredResult(_0x2e8b0b,_0x471f6a))[_0x8b4f('0x43')](handleError(_0x2e8b0b,null));};exports[_0x8b4f('0x44')]=function(_0x58999a,_0x1fe22e){var _0x3afd00={'raw':!![],'where':{'id':_0x58999a[_0x8b4f('0x45')]['id']}},_0x5e5e9e={};_0x5e5e9e['model']=_[_0x8b4f('0x32')](db['SquareOdbc']['rawAttributes']);_0x5e5e9e['query']=_[_0x8b4f('0x32')](_0x58999a[_0x8b4f('0x33')]);_0x5e5e9e[_0x8b4f('0x34')]=_[_0x8b4f('0x35')](_0x5e5e9e[_0x8b4f('0x36')],_0x5e5e9e['query']);_0x3afd00[_0x8b4f('0x38')]=_[_0x8b4f('0x35')](_0x5e5e9e[_0x8b4f('0x36')],qs[_0x8b4f('0x37')](_0x58999a[_0x8b4f('0x33')]['fields']));_0x3afd00[_0x8b4f('0x38')]=_0x3afd00[_0x8b4f('0x38')][_0x8b4f('0x39')]?_0x3afd00[_0x8b4f('0x38')]:_0x5e5e9e['model'];if(_0x58999a[_0x8b4f('0x33')][_0x8b4f('0x41')]){_0x3afd00[_0x8b4f('0x46')]=[{'all':!![]}];}_0x3afd00=_[_0x8b4f('0x3f')]({},_0x3afd00,_0x58999a[_0x8b4f('0x40')]);return db[_0x8b4f('0x2e')][_0x8b4f('0x47')](_0x3afd00)[_0x8b4f('0x26')](handleEntityNotFound(_0x1fe22e,null))[_0x8b4f('0x26')](respondWithResult(_0x1fe22e,null))['catch'](handleError(_0x1fe22e,null));};exports['create']=function(_0x176a86,_0x1c09f8){return db[_0x8b4f('0x2e')]['create'](_0x176a86[_0x8b4f('0x48')],{})['then'](function(_0x5b4530){var _0x22926d=_0x176a86[_0x8b4f('0x49')][_0x8b4f('0x28')]({'plain':!![]});if(!_0x22926d)throw new Error(_0x8b4f('0x4a'));if(_0x22926d['role']===_0x8b4f('0x49')){var _0x8e53fa=_0x5b4530[_0x8b4f('0x28')]({'plain':!![]});var _0x59daaf=_0x8b4f('0x29');return db['UserProfileSection'][_0x8b4f('0x47')]({'where':{'name':_0x59daaf,'userProfileId':_0x22926d[_0x8b4f('0x4b')]},'raw':!![]})['then'](function(_0x40f836){if(_0x40f836&&_0x40f836[_0x8b4f('0x4c')]===0x0){return db[_0x8b4f('0x4d')][_0x8b4f('0x4e')]({'name':_0x8e53fa[_0x8b4f('0x2b')],'resourceId':_0x8e53fa['id'],'type':_0x40f836[_0x8b4f('0x2b')],'sectionId':_0x40f836['id']},{})[_0x8b4f('0x26')](function(){return _0x5b4530;});}else{return _0x5b4530;}})[_0x8b4f('0x43')](function(_0x1a0d8c){logger[_0x8b4f('0x2a')](_0x8b4f('0x4f'),_0x1a0d8c);throw _0x1a0d8c;});}return _0x5b4530;})['then'](respondWithResult(_0x1c09f8,0xc9))[_0x8b4f('0x43')](handleError(_0x1c09f8,null));};exports[_0x8b4f('0x25')]=function(_0x48b30c,_0x4ec6e0){if(_0x48b30c[_0x8b4f('0x48')]['id']){delete _0x48b30c['body']['id'];}return db[_0x8b4f('0x2e')][_0x8b4f('0x47')]({'where':{'id':_0x48b30c[_0x8b4f('0x45')]['id']}})['then'](handleEntityNotFound(_0x4ec6e0,null))['then'](saveUpdates(_0x48b30c[_0x8b4f('0x48')],null))['then'](respondWithResult(_0x4ec6e0,null))[_0x8b4f('0x43')](handleError(_0x4ec6e0,null));};exports[_0x8b4f('0x27')]=function(_0x3da4f1,_0x5ec8c8){return db[_0x8b4f('0x2e')]['find']({'where':{'id':_0x3da4f1[_0x8b4f('0x45')]['id']}})['then'](handleEntityNotFound(_0x5ec8c8,null))[_0x8b4f('0x26')](removeEntity(_0x5ec8c8,null))[_0x8b4f('0x43')](handleError(_0x5ec8c8,null));};exports['test']=function(_0x71b77a,_0x5ee0d9,_0x584e79){var _0x21b4c2;return db[_0x8b4f('0x2e')][_0x8b4f('0x47')]({'where':{'id':_0x71b77a[_0x8b4f('0x45')]['id']},'attributes':['id',_0x8b4f('0x50')]})[_0x8b4f('0x26')](handleEntityNotFound(_0x5ee0d9,null))[_0x8b4f('0x26')](function(_0xb2446){if(_0xb2446){var _0x41de2f=require('odbc')();_0x41de2f[_0x8b4f('0x51')](_0xb2446[_0x8b4f('0x50')]);_0x41de2f[_0x8b4f('0x52')]();return _0xb2446;}})[_0x8b4f('0x26')](respondWithResult(_0x5ee0d9,null))['catch'](handleError(_0x5ee0d9,null));};
\ No newline at end of file
index cf2897f..e7cd2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9090=['SquareOdbc','square_odbc','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','define'];(function(_0x54a3eb,_0x39f94f){var _0x5a83ab=function(_0x5328b4){while(--_0x5328b4){_0x54a3eb['push'](_0x54a3eb['shift']());}};_0x5a83ab(++_0x39f94f);}(_0x9090,0x1bc));var _0x0909=function(_0x2a4ed8,_0x1386ef){_0x2a4ed8=_0x2a4ed8-0x0;var _0x41158e=_0x9090[_0x2a4ed8];return _0x41158e;};'use strict';var _=require('lodash');var util=require(_0x0909('0x0'));var logger=require(_0x0909('0x1'))(_0x0909('0x2'));var moment=require(_0x0909('0x3'));var BPromise=require(_0x0909('0x4'));var rp=require(_0x0909('0x5'));var fs=require('fs');var path=require(_0x0909('0x6'));var rimraf=require(_0x0909('0x7'));var config=require(_0x0909('0x8'));var attributes=require(_0x0909('0x9'));module['exports']=function(_0x1204d1,_0x816462){return _0x1204d1[_0x0909('0xa')](_0x0909('0xb'),attributes,{'tableName':_0x0909('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b57=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc'];(function(_0x5f0e65,_0x37de99){var _0x20a90d=function(_0x3a2f7c){while(--_0x3a2f7c){_0x5f0e65['push'](_0x5f0e65['shift']());}};_0x20a90d(++_0x37de99);}(_0x1b57,0x1a0));var _0x71b5=function(_0x3f88b4,_0x47c790){_0x3f88b4=_0x3f88b4-0x0;var _0xb6195d=_0x1b57[_0x3f88b4];return _0xb6195d;};'use strict';var _=require(_0x71b5('0x0'));var util=require(_0x71b5('0x1'));var logger=require(_0x71b5('0x2'))(_0x71b5('0x3'));var moment=require('moment');var BPromise=require(_0x71b5('0x4'));var rp=require(_0x71b5('0x5'));var fs=require('fs');var path=require(_0x71b5('0x6'));var rimraf=require(_0x71b5('0x7'));var config=require(_0x71b5('0x8'));var attributes=require(_0x71b5('0x9'));module[_0x71b5('0xa')]=function(_0x4a7dc8,_0x50873e){return _0x4a7dc8[_0x71b5('0xb')](_0x71b5('0xc'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b2576fc..8663c48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90cb=['SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SquareOdbc','options','raw','where','attributes','map','include','model','ShowSquareOdbc','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x278f23,_0x5370cd){var _0x35ff23=function(_0x516b9d){while(--_0x516b9d){_0x278f23['push'](_0x278f23['shift']());}};_0x35ff23(++_0x5370cd);}(_0x90cb,0x139));var _0xb90c=function(_0x340d17,_0x3d6339){_0x340d17=_0x340d17-0x0;var _0x4a18d1=_0x90cb[_0x340d17];return _0x4a18d1;};'use strict';var _=require(_0xb90c('0x0'));var util=require(_0xb90c('0x1'));var moment=require('moment');var BPromise=require(_0xb90c('0x2'));var rs=require(_0xb90c('0x3'));var fs=require('fs');var Redis=require(_0xb90c('0x4'));var db=require(_0xb90c('0x5'))['db'];var utils=require(_0xb90c('0x6'));var logger=require('../../config/logger')(_0xb90c('0x7'));var config=require(_0xb90c('0x8'));var jayson=require(_0xb90c('0x9'));var client=jayson['client'][_0xb90c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4074b8,_0x724b19,_0x403783){return new BPromise(function(_0xd8b474,_0x2c4750){return client[_0xb90c('0xb')](_0x4074b8,_0x403783)[_0xb90c('0xc')](function(_0x4e0968){logger[_0xb90c('0xd')](_0xb90c('0xe'),_0x724b19,_0xb90c('0xf'));logger[_0xb90c('0x10')](_0xb90c('0x11'),_0x724b19,_0xb90c('0xf'),JSON[_0xb90c('0x12')](_0x4e0968));if(_0x4e0968['error']){if(_0x4e0968[_0xb90c('0x13')][_0xb90c('0x14')]===0x1f4){logger[_0xb90c('0x13')](_0xb90c('0xe'),_0x724b19,_0x4e0968[_0xb90c('0x13')][_0xb90c('0x15')]);return _0x2c4750(_0x4e0968['error'][_0xb90c('0x15')]);}logger[_0xb90c('0x13')](_0xb90c('0xe'),_0x724b19,_0x4e0968[_0xb90c('0x13')]['message']);return _0xd8b474(_0x4e0968[_0xb90c('0x13')]['message']);}else{logger['info'](_0xb90c('0xe'),_0x724b19,_0xb90c('0xf'));_0xd8b474(_0x4e0968[_0xb90c('0x16')][_0xb90c('0x15')]);}})[_0xb90c('0x17')](function(_0x36c99a){logger[_0xb90c('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x724b19,_0x36c99a);_0x2c4750(_0x36c99a);});});}exports['ShowSquareOdbc']=function(_0x5d1c79){var _0x375eac=this;return new Promise(function(_0x6190d4,_0x5dd4d7){return db[_0xb90c('0x18')]['find']({'raw':_0x5d1c79[_0xb90c('0x19')]?_0x5d1c79[_0xb90c('0x19')][_0xb90c('0x1a')]===undefined?!![]:![]:!![],'where':_0x5d1c79[_0xb90c('0x19')]?_0x5d1c79[_0xb90c('0x19')][_0xb90c('0x1b')]||null:null,'attributes':_0x5d1c79['options']?_0x5d1c79[_0xb90c('0x19')][_0xb90c('0x1c')]||null:null,'include':_0x5d1c79[_0xb90c('0x19')]?_0x5d1c79[_0xb90c('0x19')]['include']?_[_0xb90c('0x1d')](_0x5d1c79[_0xb90c('0x19')][_0xb90c('0x1e')],function(_0x5ae006){return{'model':db[_0x5ae006['model']],'as':_0x5ae006['as'],'attributes':_0x5ae006[_0xb90c('0x1c')],'include':_0x5ae006[_0xb90c('0x1e')]?_[_0xb90c('0x1d')](_0x5ae006['include'],function(_0x2b08c9){return{'model':db[_0x2b08c9[_0xb90c('0x1f')]],'as':_0x2b08c9['as'],'attributes':_0x2b08c9[_0xb90c('0x1c')],'include':_0x2b08c9[_0xb90c('0x1e')]?_[_0xb90c('0x1d')](_0x2b08c9[_0xb90c('0x1e')],function(_0x63dee8){return{'model':db[_0x63dee8[_0xb90c('0x1f')]],'as':_0x63dee8['as'],'attributes':_0x63dee8[_0xb90c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb90c('0xc')](function(_0x1fabc3){logger[_0xb90c('0xd')](_0xb90c('0x20'),_0x5d1c79);logger[_0xb90c('0x10')](_0xb90c('0x20'),_0x5d1c79,JSON[_0xb90c('0x12')](_0x1fabc3));_0x6190d4(_0x1fabc3);})[_0xb90c('0x17')](function(_0x6023cf){logger[_0xb90c('0x13')](_0xb90c('0x20'),_0x6023cf['message'],_0x5d1c79);_0x5dd4d7(_0x375eac[_0xb90c('0x13')](0x1f4,_0x6023cf[_0xb90c('0x15')]));});});};
\ No newline at end of file
+var _0x46bf=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','SquareOdbc,\x20%s,\x20%s','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','ShowSquareOdbc','SquareOdbc','options','raw','where','attributes','include','map','model','debug','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x190667,_0x27a669){var _0x1725c6=function(_0x28256f){while(--_0x28256f){_0x190667['push'](_0x190667['shift']());}};_0x1725c6(++_0x27a669);}(_0x46bf,0x11a));var _0xf46b=function(_0x190ff6,_0x515cfd){_0x190ff6=_0x190ff6-0x0;var _0x5356d2=_0x46bf[_0x190ff6];return _0x5356d2;};'use strict';var _=require(_0xf46b('0x0'));var util=require(_0xf46b('0x1'));var moment=require(_0xf46b('0x2'));var BPromise=require(_0xf46b('0x3'));var rs=require(_0xf46b('0x4'));var fs=require('fs');var Redis=require(_0xf46b('0x5'));var db=require(_0xf46b('0x6'))['db'];var utils=require(_0xf46b('0x7'));var logger=require(_0xf46b('0x8'))(_0xf46b('0x9'));var config=require(_0xf46b('0xa'));var jayson=require(_0xf46b('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x14d93b,_0x19c97b,_0x1f01b5){return new BPromise(function(_0x5ded07,_0x52e373){return client['request'](_0x14d93b,_0x1f01b5)[_0xf46b('0xc')](function(_0xe458f8){logger[_0xf46b('0xd')](_0xf46b('0xe'),_0x19c97b,'request\x20sent');logger['debug'](_0xf46b('0xf'),_0x19c97b,_0xf46b('0x10'),JSON[_0xf46b('0x11')](_0xe458f8));if(_0xe458f8['error']){if(_0xe458f8[_0xf46b('0x12')][_0xf46b('0x13')]===0x1f4){logger[_0xf46b('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x19c97b,_0xe458f8[_0xf46b('0x12')][_0xf46b('0x14')]);return _0x52e373(_0xe458f8[_0xf46b('0x12')][_0xf46b('0x14')]);}logger[_0xf46b('0x12')](_0xf46b('0xe'),_0x19c97b,_0xe458f8['error'][_0xf46b('0x14')]);return _0x5ded07(_0xe458f8[_0xf46b('0x12')][_0xf46b('0x14')]);}else{logger['info'](_0xf46b('0xe'),_0x19c97b,_0xf46b('0x10'));_0x5ded07(_0xe458f8[_0xf46b('0x15')][_0xf46b('0x14')]);}})['catch'](function(_0x78eba1){logger[_0xf46b('0x12')](_0xf46b('0xe'),_0x19c97b,_0x78eba1);_0x52e373(_0x78eba1);});});}exports[_0xf46b('0x16')]=function(_0x395fcc){var _0x4ee8d0=this;return new Promise(function(_0x3d9351,_0x1d7f37){return db[_0xf46b('0x17')]['find']({'raw':_0x395fcc[_0xf46b('0x18')]?_0x395fcc[_0xf46b('0x18')][_0xf46b('0x19')]===undefined?!![]:![]:!![],'where':_0x395fcc[_0xf46b('0x18')]?_0x395fcc['options'][_0xf46b('0x1a')]||null:null,'attributes':_0x395fcc[_0xf46b('0x18')]?_0x395fcc[_0xf46b('0x18')][_0xf46b('0x1b')]||null:null,'include':_0x395fcc[_0xf46b('0x18')]?_0x395fcc['options'][_0xf46b('0x1c')]?_[_0xf46b('0x1d')](_0x395fcc[_0xf46b('0x18')]['include'],function(_0x2818e8){return{'model':db[_0x2818e8[_0xf46b('0x1e')]],'as':_0x2818e8['as'],'attributes':_0x2818e8[_0xf46b('0x1b')],'include':_0x2818e8[_0xf46b('0x1c')]?_[_0xf46b('0x1d')](_0x2818e8[_0xf46b('0x1c')],function(_0x2464f6){return{'model':db[_0x2464f6[_0xf46b('0x1e')]],'as':_0x2464f6['as'],'attributes':_0x2464f6[_0xf46b('0x1b')],'include':_0x2464f6['include']?_[_0xf46b('0x1d')](_0x2464f6[_0xf46b('0x1c')],function(_0x119c9b){return{'model':db[_0x119c9b[_0xf46b('0x1e')]],'as':_0x119c9b['as'],'attributes':_0x119c9b['attributes']};}):[]};}):[]};}):[]:[]})[_0xf46b('0xc')](function(_0x53889f){logger[_0xf46b('0xd')]('ShowSquareOdbc',_0x395fcc);logger[_0xf46b('0x1f')](_0xf46b('0x16'),_0x395fcc,JSON[_0xf46b('0x11')](_0x53889f));_0x3d9351(_0x53889f);})['catch'](function(_0x3abcdc){logger['error'](_0xf46b('0x16'),_0x3abcdc['message'],_0x395fcc);_0x1d7f37(_0x4ee8d0[_0xf46b('0x12')](0x1f4,_0x3abcdc[_0xf46b('0x14')]));});});};
\ No newline at end of file
index 8f82ad7..9a273a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca7=['multer','util','path','express','Router','../../components/interaction/service','./squareProject.controller','get','index','/:id','isAuthenticated','show','/:id/users','getUsers','post','addUsers','put','update','delete','removeUsers','exports'];(function(_0x582421,_0xe8d453){var _0x37d703=function(_0x3aada3){while(--_0x3aada3){_0x582421['push'](_0x582421['shift']());}};_0x37d703(++_0xe8d453);}(_0x4ca7,0x1e3));var _0x74ca=function(_0x1d88c5,_0x3d128f){_0x1d88c5=_0x1d88c5-0x0;var _0x3b4bd6=_0x4ca7[_0x1d88c5];return _0x3b4bd6;};'use strict';var multer=require(_0x74ca('0x0'));var util=require(_0x74ca('0x1'));var path=require(_0x74ca('0x2'));var timeout=require('connect-timeout');var express=require(_0x74ca('0x3'));var router=express[_0x74ca('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x74ca('0x5'));var config=require('../../config/environment');var controller=require(_0x74ca('0x6'));router[_0x74ca('0x7')]('/',auth['isAuthenticated'](),controller[_0x74ca('0x8')]);router['get'](_0x74ca('0x9'),auth[_0x74ca('0xa')](),controller[_0x74ca('0xb')]);router[_0x74ca('0x7')](_0x74ca('0xc'),auth[_0x74ca('0xa')](),controller[_0x74ca('0xd')]);router['post']('/',auth[_0x74ca('0xa')](),controller['create']);router[_0x74ca('0xe')](_0x74ca('0xc'),auth['isAuthenticated'](),controller[_0x74ca('0xf')]);router[_0x74ca('0x10')](_0x74ca('0x9'),auth[_0x74ca('0xa')](),controller[_0x74ca('0x11')]);router[_0x74ca('0x12')](_0x74ca('0x9'),auth[_0x74ca('0xa')](),controller['destroy']);router[_0x74ca('0x12')](_0x74ca('0xc'),auth[_0x74ca('0xa')](),controller[_0x74ca('0x13')]);module[_0x74ca('0x14')]=router;
\ No newline at end of file
+var _0x31bd=['/:id','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','index','show','/:id/users','isAuthenticated','getUsers','post','create','put','update','delete'];(function(_0x409e15,_0xf943b1){var _0x37664f=function(_0x42a864){while(--_0x42a864){_0x409e15['push'](_0x409e15['shift']());}};_0x37664f(++_0xf943b1);}(_0x31bd,0xbb));var _0xd31b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x31bd[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xd31b('0x0'));var util=require(_0xd31b('0x1'));var path=require(_0xd31b('0x2'));var timeout=require(_0xd31b('0x3'));var express=require('express');var router=express[_0xd31b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd31b('0x5'));var interaction=require(_0xd31b('0x6'));var config=require(_0xd31b('0x7'));var controller=require(_0xd31b('0x8'));router[_0xd31b('0x9')]('/',auth['isAuthenticated'](),controller[_0xd31b('0xa')]);router[_0xd31b('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xd31b('0xb')]);router[_0xd31b('0x9')](_0xd31b('0xc'),auth[_0xd31b('0xd')](),controller[_0xd31b('0xe')]);router[_0xd31b('0xf')]('/',auth[_0xd31b('0xd')](),controller[_0xd31b('0x10')]);router[_0xd31b('0xf')](_0xd31b('0xc'),auth['isAuthenticated'](),controller['addUsers']);router[_0xd31b('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xd31b('0x12')]);router[_0xd31b('0x13')](_0xd31b('0x14'),auth[_0xd31b('0xd')](),controller[_0xd31b('0x15')]);router[_0xd31b('0x13')](_0xd31b('0xc'),auth[_0xd31b('0xd')](),controller['removeUsers']);module[_0xd31b('0x16')]=router;
\ No newline at end of file
index 915f8c5..5d21742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b52=['DATE','sequelize','exports','STRING','TEXT','long','getDataValue','preproduction','toString','utf8','BLOB','production'];(function(_0x23d0e6,_0x5c2283){var _0x22415f=function(_0x473e35){while(--_0x473e35){_0x23d0e6['push'](_0x23d0e6['shift']());}};_0x22415f(++_0x5c2283);}(_0x8b52,0x151));var _0x28b5=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8b52[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require(_0x28b5('0x0'));module[_0x28b5('0x1')]={'name':{'type':Sequelize[_0x28b5('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x28b5('0x2')]},'notes':{'type':Sequelize[_0x28b5('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0x28b5('0x4')),'get':function(){if(this[_0x28b5('0x5')](_0x28b5('0x6'))){return this[_0x28b5('0x5')](_0x28b5('0x6'))[_0x28b5('0x7')](_0x28b5('0x8'));}}},'production':{'type':Sequelize[_0x28b5('0x9')](_0x28b5('0x4')),'get':function(){if(this['getDataValue'](_0x28b5('0xa'))){return this['getDataValue']('production')[_0x28b5('0x7')](_0x28b5('0x8'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x28b5('0xb')]}};
\ No newline at end of file
+var _0xc903=['BLOB','long','preproduction','getDataValue','toString','production','utf8','DATE','sequelize','exports','STRING','name','TEXT'];(function(_0x4b6edb,_0x3a9232){var _0x217312=function(_0x1331e5){while(--_0x1331e5){_0x4b6edb['push'](_0x4b6edb['shift']());}};_0x217312(++_0x3a9232);}(_0xc903,0x167));var _0x3c90=function(_0x454018,_0x46e33a){_0x454018=_0x454018-0x0;var _0x24697d=_0xc903[_0x454018];return _0x24697d;};'use strict';var Sequelize=require(_0x3c90('0x0'));module[_0x3c90('0x1')]={'name':{'type':Sequelize[_0x3c90('0x2')],'unique':_0x3c90('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x3c90('0x4')]},'preproduction':{'type':Sequelize[_0x3c90('0x5')](_0x3c90('0x6')),'get':function(){if(this['getDataValue'](_0x3c90('0x7'))){return this[_0x3c90('0x8')](_0x3c90('0x7'))[_0x3c90('0x9')]('utf8');}}},'production':{'type':Sequelize[_0x3c90('0x5')](_0x3c90('0x6')),'get':function(){if(this[_0x3c90('0x8')](_0x3c90('0xa'))){return this[_0x3c90('0x8')](_0x3c90('0xa'))[_0x3c90('0x9')](_0x3c90('0xb'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x3c90('0xc')]}};
\ No newline at end of file
index 4b8ea46..b58c704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc658=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./squareProject.socket','register','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','SquareProjects','sendStatus','stack','name','send','index','map','SquareProject','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','include','catch','rawAttributes','includeAll','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','ids','omit','removeUsers','isArray','userSquareProject:remove','emit','findOne','order','options','getUsers','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x2def74,_0x5ec6fb){var _0x14f89f=function(_0x2fb173){while(--_0x2fb173){_0x2def74['push'](_0x2def74['shift']());}};_0x14f89f(++_0x5ec6fb);}(_0xc658,0x11c));var _0x8c65=function(_0x44d8d1,_0x2a600e){_0x44d8d1=_0x44d8d1-0x0;var _0x5babcf=_0xc658[_0x44d8d1];return _0x5babcf;};'use strict';var emlformat=require(_0x8c65('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8c65('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8c65('0x2'));var moment=require(_0x8c65('0x3'));var BPromise=require(_0x8c65('0x4'));var Mustache=require(_0x8c65('0x5'));var util=require('util');var path=require(_0x8c65('0x6'));var sox=require(_0x8c65('0x7'));var csv=require(_0x8c65('0x8'));var ejs=require(_0x8c65('0x9'));var fs=require('fs');var fs_extra=require(_0x8c65('0xa'));var _=require(_0x8c65('0xb'));var squel=require(_0x8c65('0xc'));var crypto=require(_0x8c65('0xd'));var jsforce=require(_0x8c65('0xe'));var deskjs=require(_0x8c65('0xf'));var toCsv=require(_0x8c65('0x8'));var querystring=require('querystring');var Papa=require(_0x8c65('0x10'));var Redis=require(_0x8c65('0x11'));var authService=require(_0x8c65('0x12'));var qs=require(_0x8c65('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8c65('0x14'));var logger=require('../../config/logger')(_0x8c65('0x15'));var utils=require(_0x8c65('0x16'));var config=require(_0x8c65('0x17'));var licenseUtil=require(_0x8c65('0x18'));var db=require(_0x8c65('0x19'))['db'];config['redis']=_[_0x8c65('0x1a')](config['redis'],{'host':_0x8c65('0x1b'),'port':0x18eb});var socket=require(_0x8c65('0x1c'))(new Redis(config['redis']));require(_0x8c65('0x1d'))[_0x8c65('0x1e')](socket);function respondWithStatusCode(_0x54b11a,_0x4ed69e){_0x4ed69e=_0x4ed69e||0xcc;return function(_0x2e4fb5){if(_0x2e4fb5){return _0x54b11a['sendStatus'](_0x4ed69e);}return _0x54b11a[_0x8c65('0x1f')](_0x4ed69e)[_0x8c65('0x20')]();};}function respondWithResult(_0x220cc8,_0x200d5c){_0x200d5c=_0x200d5c||0xc8;return function(_0x320e74){if(_0x320e74){return _0x220cc8[_0x8c65('0x1f')](_0x200d5c)[_0x8c65('0x21')](_0x320e74);}};}function respondWithFilteredResult(_0x301edd,_0x237dee){return function(_0x1344ed){if(_0x1344ed){var _0x2653f6=typeof _0x237dee['offset']===_0x8c65('0x22')&&typeof _0x237dee[_0x8c65('0x23')]==='undefined';var _0x43b592=_0x1344ed[_0x8c65('0x24')];var _0x1e2e0c=_0x2653f6?0x0:_0x237dee[_0x8c65('0x25')];var _0x5afd13=_0x2653f6?_0x1344ed[_0x8c65('0x24')]:_0x237dee[_0x8c65('0x25')]+_0x237dee[_0x8c65('0x23')];var _0x31a8a4;if(_0x5afd13>=_0x43b592){_0x5afd13=_0x43b592;_0x31a8a4=0xc8;}else{_0x31a8a4=0xce;}_0x301edd[_0x8c65('0x1f')](_0x31a8a4);return _0x301edd['set'](_0x8c65('0x26'),_0x1e2e0c+'-'+_0x5afd13+'/'+_0x43b592)[_0x8c65('0x21')](_0x1344ed);}return null;};}function patchUpdates(_0x1970ff){return function(_0x20a01f){try{jsonpatch[_0x8c65('0x27')](_0x20a01f,_0x1970ff,!![]);}catch(_0x26ebb5){return BPromise[_0x8c65('0x28')](_0x26ebb5);}return _0x20a01f[_0x8c65('0x29')]();};}function saveUpdates(_0x263fc9,_0x4e736f){return function(_0x481ae2){if(_0x481ae2){return _0x481ae2[_0x8c65('0x2a')](_0x263fc9)[_0x8c65('0x2b')](function(_0x43e2cf){return _0x43e2cf;});}return null;};}function removeEntity(_0x33fb6f,_0x439793){return function(_0x11822d){if(_0x11822d){return _0x11822d[_0x8c65('0x2c')]()['then'](function(){var _0x4bde64=_0x11822d['get']({'plain':!![]});var _0x2e99f3=_0x8c65('0x2d');return db['UserProfileResource'][_0x8c65('0x2c')]({'where':{'type':_0x2e99f3,'resourceId':_0x4bde64['id']}})[_0x8c65('0x2b')](function(){return _0x11822d;});})[_0x8c65('0x2b')](function(){_0x33fb6f[_0x8c65('0x1f')](0xcc)[_0x8c65('0x20')]();});}};}function handleEntityNotFound(_0x59b79c,_0x2f81f5){return function(_0x3031ad){if(!_0x3031ad){_0x59b79c[_0x8c65('0x2e')](0x194);}return _0x3031ad;};}function handleError(_0x42add7,_0x57330a){_0x57330a=_0x57330a||0x1f4;return function(_0x49a6da){logger['error'](_0x49a6da[_0x8c65('0x2f')]);if(_0x49a6da[_0x8c65('0x30')]){delete _0x49a6da[_0x8c65('0x30')];}_0x42add7['status'](_0x57330a)[_0x8c65('0x31')](_0x49a6da);};}exports[_0x8c65('0x32')]=function(_0x51ddcb,_0x5d4fad){var _0x27d066={},_0x5f886a={},_0x501a12={'count':0x0,'rows':[]};var _0x46141c=_[_0x8c65('0x33')](db[_0x8c65('0x34')]['rawAttributes'],function(_0x3c6830){return{'name':_0x3c6830[_0x8c65('0x35')],'type':_0x3c6830[_0x8c65('0x36')][_0x8c65('0x37')]};});_0x5f886a['model']=_[_0x8c65('0x33')](_0x46141c,_0x8c65('0x30'));_0x5f886a[_0x8c65('0x38')]=_[_0x8c65('0x39')](_0x51ddcb['query']);_0x5f886a[_0x8c65('0x3a')]=_[_0x8c65('0x3b')](_0x5f886a[_0x8c65('0x3c')],_0x5f886a[_0x8c65('0x38')]);_0x27d066[_0x8c65('0x3d')]=_[_0x8c65('0x3b')](_0x5f886a[_0x8c65('0x3c')],qs['fields'](_0x51ddcb[_0x8c65('0x38')][_0x8c65('0x3e')]));_0x27d066[_0x8c65('0x3d')]=_0x27d066[_0x8c65('0x3d')][_0x8c65('0x3f')]?_0x27d066[_0x8c65('0x3d')]:_0x5f886a[_0x8c65('0x3c')];if(!_0x51ddcb[_0x8c65('0x38')][_0x8c65('0x40')](_0x8c65('0x41'))){_0x27d066[_0x8c65('0x23')]=qs[_0x8c65('0x23')](_0x51ddcb[_0x8c65('0x38')][_0x8c65('0x23')]);_0x27d066[_0x8c65('0x25')]=qs['offset'](_0x51ddcb['query'][_0x8c65('0x25')]);}_0x27d066['order']=qs[_0x8c65('0x42')](_0x51ddcb['query']['sort']);_0x27d066[_0x8c65('0x43')]=qs[_0x8c65('0x3a')](_[_0x8c65('0x44')](_0x51ddcb['query'],_0x5f886a[_0x8c65('0x3a')]),_0x46141c);if(_0x51ddcb[_0x8c65('0x38')][_0x8c65('0x45')]){_0x27d066[_0x8c65('0x43')]=_[_0x8c65('0x46')](_0x27d066[_0x8c65('0x43')],{'$or':_[_0x8c65('0x33')](_0x46141c,function(_0x454dc7){if(_0x454dc7[_0x8c65('0x36')]!==_0x8c65('0x47')){var _0x3c5b99={};_0x3c5b99[_0x454dc7[_0x8c65('0x30')]]={'$like':'%'+_0x51ddcb[_0x8c65('0x38')][_0x8c65('0x45')]+'%'};return _0x3c5b99;}})});}_0x27d066=_[_0x8c65('0x46')]({},_0x27d066,_0x51ddcb['options']);var _0x3a4190={'where':_0x27d066[_0x8c65('0x43')]};return db[_0x8c65('0x34')]['count'](_0x3a4190)['then'](function(_0x38ba2c){_0x501a12[_0x8c65('0x24')]=_0x38ba2c;if(_0x51ddcb[_0x8c65('0x38')]['includeAll']){_0x27d066[_0x8c65('0x48')]=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x27d066);})[_0x8c65('0x2b')](function(_0x3bc7c3){_0x501a12['rows']=_0x3bc7c3;return _0x501a12;})['then'](respondWithFilteredResult(_0x5d4fad,_0x27d066))[_0x8c65('0x49')](handleError(_0x5d4fad,null));};exports['show']=function(_0x2ab342,_0x24b7d9){var _0x37348f={'raw':![],'where':{'id':_0x2ab342['params']['id']}},_0x23c5a4={};_0x23c5a4[_0x8c65('0x3c')]=_[_0x8c65('0x39')](db[_0x8c65('0x34')][_0x8c65('0x4a')]);_0x23c5a4[_0x8c65('0x38')]=_[_0x8c65('0x39')](_0x2ab342[_0x8c65('0x38')]);_0x23c5a4[_0x8c65('0x3a')]=_['intersection'](_0x23c5a4[_0x8c65('0x3c')],_0x23c5a4[_0x8c65('0x38')]);_0x37348f[_0x8c65('0x3d')]=_[_0x8c65('0x3b')](_0x23c5a4[_0x8c65('0x3c')],qs['fields'](_0x2ab342['query'][_0x8c65('0x3e')]));_0x37348f[_0x8c65('0x3d')]=_0x37348f['attributes']['length']?_0x37348f['attributes']:_0x23c5a4[_0x8c65('0x3c')];if(_0x2ab342[_0x8c65('0x38')][_0x8c65('0x4b')]){_0x37348f[_0x8c65('0x48')]=[{'all':!![]}];}_0x37348f=_['merge']({},_0x37348f,_0x2ab342['options']);return db[_0x8c65('0x34')][_0x8c65('0x4c')](_0x37348f)[_0x8c65('0x2b')](handleEntityNotFound(_0x24b7d9,null))[_0x8c65('0x2b')](respondWithResult(_0x24b7d9,null))['catch'](handleError(_0x24b7d9,null));};exports['create']=function(_0x19757c,_0x100b4d){return db[_0x8c65('0x34')]['create'](_0x19757c[_0x8c65('0x4d')],{})[_0x8c65('0x2b')](function(_0x8a2faa){var _0x1c5de3=_0x19757c['user']['get']({'plain':!![]});if(!_0x1c5de3)throw new Error(_0x8c65('0x4e'));if(_0x1c5de3[_0x8c65('0x4f')]==='user'){var _0x44a714=_0x8a2faa[_0x8c65('0x50')]({'plain':!![]});var _0x533d36=_0x8c65('0x2d');return db[_0x8c65('0x51')][_0x8c65('0x4c')]({'where':{'name':_0x533d36,'userProfileId':_0x1c5de3[_0x8c65('0x52')]},'raw':!![]})[_0x8c65('0x2b')](function(_0xe174d9){if(_0xe174d9&&_0xe174d9[_0x8c65('0x53')]===0x0){return db[_0x8c65('0x54')][_0x8c65('0x55')]({'name':_0x44a714['name'],'resourceId':_0x44a714['id'],'type':_0xe174d9[_0x8c65('0x30')],'sectionId':_0xe174d9['id']},{})[_0x8c65('0x2b')](function(){return _0x8a2faa;});}else{return _0x8a2faa;}})[_0x8c65('0x49')](function(_0xf1c86f){logger[_0x8c65('0x56')](_0x8c65('0x57'),_0xf1c86f);throw _0xf1c86f;});}return _0x8a2faa;})[_0x8c65('0x2b')](respondWithResult(_0x100b4d,0xc9))['catch'](handleError(_0x100b4d,null));};exports[_0x8c65('0x2a')]=function(_0x5e31b5,_0x2d80a6){if(_0x5e31b5[_0x8c65('0x4d')]['id']){delete _0x5e31b5[_0x8c65('0x4d')]['id'];}return db['SquareProject']['find']({'where':{'id':_0x5e31b5[_0x8c65('0x58')]['id']}})['then'](handleEntityNotFound(_0x2d80a6,null))['then'](saveUpdates(_0x5e31b5[_0x8c65('0x4d')],null))[_0x8c65('0x2b')](respondWithResult(_0x2d80a6,null))['catch'](handleError(_0x2d80a6,null));};exports['destroy']=function(_0x8b1b43,_0x5f14b7){return db[_0x8c65('0x34')][_0x8c65('0x4c')]({'where':{'id':_0x8b1b43[_0x8c65('0x58')]['id']}})['then'](handleEntityNotFound(_0x5f14b7,null))['then'](removeEntity(_0x5f14b7,null))[_0x8c65('0x49')](handleError(_0x5f14b7,null));};exports['addUsers']=function(_0x349f96,_0x168844,_0xe4febe){return db[_0x8c65('0x34')][_0x8c65('0x4c')]({'where':{'id':_0x349f96[_0x8c65('0x58')]['id']}})[_0x8c65('0x2b')](handleEntityNotFound(_0x168844,null))[_0x8c65('0x2b')](function(_0x53048e){if(_0x53048e){return _0x53048e[_0x8c65('0x59')](_0x349f96['body'][_0x8c65('0x5a')],_[_0x8c65('0x5b')](_0x349f96['body'],['ids','id'])||{});}})[_0x8c65('0x2b')](respondWithResult(_0x168844,null))['catch'](handleError(_0x168844,null));};exports['removeUsers']=function(_0x2043a9,_0x51724f,_0x13c4bf){return db[_0x8c65('0x34')]['find']({'where':{'id':_0x2043a9['params']['id']}})[_0x8c65('0x2b')](handleEntityNotFound(_0x51724f,null))['then'](function(_0x528b3c){if(_0x528b3c){return _0x528b3c[_0x8c65('0x5c')](_0x2043a9[_0x8c65('0x38')][_0x8c65('0x5a')])[_0x8c65('0x2b')](function(){if(_[_0x8c65('0x5d')](_0x2043a9[_0x8c65('0x38')]['ids'])){for(var _0x3c7204=0x0;_0x3c7204<_0x2043a9[_0x8c65('0x38')]['ids'][_0x8c65('0x3f')];_0x3c7204+=0x1){socket['emit'](_0x8c65('0x5e'),{'UserId':Number(_0x2043a9[_0x8c65('0x38')][_0x8c65('0x5a')][_0x3c7204]),'SquareProjectId':Number(_0x2043a9[_0x8c65('0x58')]['id'])});}}else{socket[_0x8c65('0x5f')](_0x8c65('0x5e'),{'UserId':Number(_0x2043a9['query'][_0x8c65('0x5a')]),'SquareProjectId':Number(_0x2043a9[_0x8c65('0x58')]['id'])});}});}})[_0x8c65('0x2b')](respondWithStatusCode(_0x51724f,null))[_0x8c65('0x49')](handleError(_0x51724f,null));};exports['getUsers']=function(_0x3d2825,_0x5cd7df,_0x297d67){var _0x4fe2ff={};var _0x56e374={};var _0x363781;var _0x310de5;return db['SquareProject'][_0x8c65('0x60')]({'where':{'id':_0x3d2825[_0x8c65('0x58')]['id']}})['then'](handleEntityNotFound(_0x5cd7df,null))['then'](function(_0x2fd1ad){if(_0x2fd1ad){_0x363781=_0x2fd1ad;_0x56e374[_0x8c65('0x3c')]=_['keys'](db['User']['rawAttributes']);_0x56e374[_0x8c65('0x38')]=_[_0x8c65('0x39')](_0x3d2825[_0x8c65('0x38')]);_0x56e374['filters']=_[_0x8c65('0x3b')](_0x56e374[_0x8c65('0x3c')],_0x56e374['query']);_0x4fe2ff[_0x8c65('0x3d')]=_[_0x8c65('0x3b')](_0x56e374[_0x8c65('0x3c')],qs[_0x8c65('0x3e')](_0x3d2825[_0x8c65('0x38')]['fields']));_0x4fe2ff[_0x8c65('0x3d')]=_0x4fe2ff[_0x8c65('0x3d')][_0x8c65('0x3f')]?_0x4fe2ff[_0x8c65('0x3d')]:_0x56e374['model'];_0x4fe2ff[_0x8c65('0x61')]=qs[_0x8c65('0x42')](_0x3d2825['query'][_0x8c65('0x42')]);_0x4fe2ff['where']=qs['filters'](_['pick'](_0x3d2825[_0x8c65('0x38')],_0x56e374[_0x8c65('0x3a')]));if(_0x3d2825[_0x8c65('0x38')][_0x8c65('0x45')]){_0x4fe2ff[_0x8c65('0x43')]=_[_0x8c65('0x46')](_0x4fe2ff[_0x8c65('0x43')],{'$or':_[_0x8c65('0x33')](_0x4fe2ff[_0x8c65('0x3d')],function(_0x48a636){var _0x2cf5a4={};_0x2cf5a4[_0x48a636]={'$like':'%'+_0x3d2825[_0x8c65('0x38')][_0x8c65('0x45')]+'%'};return _0x2cf5a4;})});}_0x4fe2ff=_[_0x8c65('0x46')]({},_0x4fe2ff,_0x3d2825[_0x8c65('0x62')]);return _0x363781[_0x8c65('0x63')](_0x4fe2ff);}})['then'](function(_0x5349c0){if(_0x5349c0){_0x310de5=_0x5349c0['length'];if(!_0x3d2825[_0x8c65('0x38')][_0x8c65('0x40')]('nolimit')){_0x4fe2ff[_0x8c65('0x23')]=qs[_0x8c65('0x23')](_0x3d2825[_0x8c65('0x38')][_0x8c65('0x23')]);_0x4fe2ff[_0x8c65('0x25')]=qs['offset'](_0x3d2825[_0x8c65('0x38')]['offset']);}return _0x363781[_0x8c65('0x63')](_0x4fe2ff);}})[_0x8c65('0x2b')](function(_0x96b1e){if(_0x96b1e){return _0x96b1e?{'count':_0x310de5,'rows':_0x96b1e}:null;}})['then'](respondWithResult(_0x5cd7df,null))[_0x8c65('0x49')](handleError(_0x5cd7df,null));};
\ No newline at end of file
+var _0x99b8=['limit','Content-Range','apply','reject','save','update','then','destroy','SquareProjects','UserProfileResource','error','stack','name','send','index','SquareProject','rawAttributes','type','key','model','map','query','keys','filters','attributes','fields','length','nolimit','order','sort','filter','where','merge','count','includeAll','findAll','show','params','intersection','options','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addUsers','ids','removeUsers','isArray','userSquareProject:remove','getUsers','findOne','User','hasOwnProperty','eml-format','rimraf','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','./squareProject.socket','register','sendStatus','status','end','json','offset'];(function(_0x1072b8,_0x5c1275){var _0xf5a8a0=function(_0x8b6cf2){while(--_0x8b6cf2){_0x1072b8['push'](_0x1072b8['shift']());}};_0xf5a8a0(++_0x5c1275);}(_0x99b8,0x1f4));var _0x899b=function(_0x57a427,_0x67f6de){_0x57a427=_0x57a427-0x0;var _0x2e790b=_0x99b8[_0x57a427];return _0x2e790b;};'use strict';var emlformat=require(_0x899b('0x0'));var rimraf=require(_0x899b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x899b('0x2'));var rp=require(_0x899b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x899b('0x4'));var path=require(_0x899b('0x5'));var sox=require(_0x899b('0x6'));var csv=require(_0x899b('0x7'));var ejs=require(_0x899b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x899b('0x9'));var squel=require(_0x899b('0xa'));var crypto=require('crypto');var jsforce=require(_0x899b('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x899b('0xc'));var Papa=require('papaparse');var Redis=require(_0x899b('0xd'));var authService=require(_0x899b('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x899b('0xf'));var hardwareService=require(_0x899b('0x10'));var logger=require(_0x899b('0x11'))(_0x899b('0x12'));var utils=require(_0x899b('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x899b('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x899b('0x14')]));require(_0x899b('0x15'))[_0x899b('0x16')](socket);function respondWithStatusCode(_0x50b3a2,_0x360133){_0x360133=_0x360133||0xcc;return function(_0x508b6d){if(_0x508b6d){return _0x50b3a2[_0x899b('0x17')](_0x360133);}return _0x50b3a2[_0x899b('0x18')](_0x360133)[_0x899b('0x19')]();};}function respondWithResult(_0x4c563d,_0x2f57e6){_0x2f57e6=_0x2f57e6||0xc8;return function(_0x1175e2){if(_0x1175e2){return _0x4c563d['status'](_0x2f57e6)[_0x899b('0x1a')](_0x1175e2);}};}function respondWithFilteredResult(_0x2446e4,_0x3464ad){return function(_0x363977){if(_0x363977){var _0x40467a=typeof _0x3464ad[_0x899b('0x1b')]==='undefined'&&typeof _0x3464ad[_0x899b('0x1c')]==='undefined';var _0x4c67e3=_0x363977['count'];var _0x16d78f=_0x40467a?0x0:_0x3464ad[_0x899b('0x1b')];var _0x543498=_0x40467a?_0x363977['count']:_0x3464ad['offset']+_0x3464ad[_0x899b('0x1c')];var _0x599a56;if(_0x543498>=_0x4c67e3){_0x543498=_0x4c67e3;_0x599a56=0xc8;}else{_0x599a56=0xce;}_0x2446e4[_0x899b('0x18')](_0x599a56);return _0x2446e4['set'](_0x899b('0x1d'),_0x16d78f+'-'+_0x543498+'/'+_0x4c67e3)['json'](_0x363977);}return null;};}function patchUpdates(_0x471cc5){return function(_0x1b72b5){try{jsonpatch[_0x899b('0x1e')](_0x1b72b5,_0x471cc5,!![]);}catch(_0x42cd27){return BPromise[_0x899b('0x1f')](_0x42cd27);}return _0x1b72b5[_0x899b('0x20')]();};}function saveUpdates(_0xbb420e,_0x17c2f4){return function(_0xb64d26){if(_0xb64d26){return _0xb64d26[_0x899b('0x21')](_0xbb420e)[_0x899b('0x22')](function(_0x3251ca){return _0x3251ca;});}return null;};}function removeEntity(_0x577db2,_0xaefe3d){return function(_0x195483){if(_0x195483){return _0x195483[_0x899b('0x23')]()['then'](function(){var _0x1cad18=_0x195483['get']({'plain':!![]});var _0x4c3c3d=_0x899b('0x24');return db[_0x899b('0x25')][_0x899b('0x23')]({'where':{'type':_0x4c3c3d,'resourceId':_0x1cad18['id']}})[_0x899b('0x22')](function(){return _0x195483;});})[_0x899b('0x22')](function(){_0x577db2[_0x899b('0x18')](0xcc)[_0x899b('0x19')]();});}};}function handleEntityNotFound(_0x5cb5a8,_0xda4656){return function(_0x57e850){if(!_0x57e850){_0x5cb5a8[_0x899b('0x17')](0x194);}return _0x57e850;};}function handleError(_0x190239,_0x4a47aa){_0x4a47aa=_0x4a47aa||0x1f4;return function(_0x3f2ec3){logger[_0x899b('0x26')](_0x3f2ec3[_0x899b('0x27')]);if(_0x3f2ec3[_0x899b('0x28')]){delete _0x3f2ec3['name'];}_0x190239[_0x899b('0x18')](_0x4a47aa)[_0x899b('0x29')](_0x3f2ec3);};}exports[_0x899b('0x2a')]=function(_0x23418f,_0x1be5bd){var _0x4dece4={},_0x14b0bb={},_0x4fe804={'count':0x0,'rows':[]};var _0x480548=_['map'](db[_0x899b('0x2b')][_0x899b('0x2c')],function(_0x137a0e){return{'name':_0x137a0e['fieldName'],'type':_0x137a0e[_0x899b('0x2d')][_0x899b('0x2e')]};});_0x14b0bb[_0x899b('0x2f')]=_[_0x899b('0x30')](_0x480548,_0x899b('0x28'));_0x14b0bb[_0x899b('0x31')]=_[_0x899b('0x32')](_0x23418f[_0x899b('0x31')]);_0x14b0bb[_0x899b('0x33')]=_['intersection'](_0x14b0bb[_0x899b('0x2f')],_0x14b0bb[_0x899b('0x31')]);_0x4dece4[_0x899b('0x34')]=_['intersection'](_0x14b0bb[_0x899b('0x2f')],qs[_0x899b('0x35')](_0x23418f[_0x899b('0x31')][_0x899b('0x35')]));_0x4dece4[_0x899b('0x34')]=_0x4dece4['attributes'][_0x899b('0x36')]?_0x4dece4[_0x899b('0x34')]:_0x14b0bb[_0x899b('0x2f')];if(!_0x23418f[_0x899b('0x31')]['hasOwnProperty'](_0x899b('0x37'))){_0x4dece4['limit']=qs['limit'](_0x23418f[_0x899b('0x31')][_0x899b('0x1c')]);_0x4dece4[_0x899b('0x1b')]=qs[_0x899b('0x1b')](_0x23418f[_0x899b('0x31')][_0x899b('0x1b')]);}_0x4dece4[_0x899b('0x38')]=qs[_0x899b('0x39')](_0x23418f[_0x899b('0x31')][_0x899b('0x39')]);_0x4dece4['where']=qs[_0x899b('0x33')](_['pick'](_0x23418f[_0x899b('0x31')],_0x14b0bb[_0x899b('0x33')]),_0x480548);if(_0x23418f['query'][_0x899b('0x3a')]){_0x4dece4[_0x899b('0x3b')]=_[_0x899b('0x3c')](_0x4dece4[_0x899b('0x3b')],{'$or':_[_0x899b('0x30')](_0x480548,function(_0x1a8cc7){if(_0x1a8cc7['type']!=='VIRTUAL'){var _0x1aeabd={};_0x1aeabd[_0x1a8cc7[_0x899b('0x28')]]={'$like':'%'+_0x23418f[_0x899b('0x31')][_0x899b('0x3a')]+'%'};return _0x1aeabd;}})});}_0x4dece4=_[_0x899b('0x3c')]({},_0x4dece4,_0x23418f['options']);var _0x115a71={'where':_0x4dece4[_0x899b('0x3b')]};return db['SquareProject'][_0x899b('0x3d')](_0x115a71)[_0x899b('0x22')](function(_0x29f6e5){_0x4fe804[_0x899b('0x3d')]=_0x29f6e5;if(_0x23418f[_0x899b('0x31')][_0x899b('0x3e')]){_0x4dece4['include']=[{'all':!![]}];}return db[_0x899b('0x2b')][_0x899b('0x3f')](_0x4dece4);})[_0x899b('0x22')](function(_0x16b0a8){_0x4fe804['rows']=_0x16b0a8;return _0x4fe804;})[_0x899b('0x22')](respondWithFilteredResult(_0x1be5bd,_0x4dece4))['catch'](handleError(_0x1be5bd,null));};exports[_0x899b('0x40')]=function(_0x5d370c,_0x437fb4){var _0x5b1e64={'raw':![],'where':{'id':_0x5d370c[_0x899b('0x41')]['id']}},_0x5aa9b7={};_0x5aa9b7[_0x899b('0x2f')]=_[_0x899b('0x32')](db[_0x899b('0x2b')][_0x899b('0x2c')]);_0x5aa9b7[_0x899b('0x31')]=_[_0x899b('0x32')](_0x5d370c[_0x899b('0x31')]);_0x5aa9b7[_0x899b('0x33')]=_[_0x899b('0x42')](_0x5aa9b7[_0x899b('0x2f')],_0x5aa9b7[_0x899b('0x31')]);_0x5b1e64[_0x899b('0x34')]=_[_0x899b('0x42')](_0x5aa9b7[_0x899b('0x2f')],qs[_0x899b('0x35')](_0x5d370c[_0x899b('0x31')][_0x899b('0x35')]));_0x5b1e64[_0x899b('0x34')]=_0x5b1e64[_0x899b('0x34')][_0x899b('0x36')]?_0x5b1e64[_0x899b('0x34')]:_0x5aa9b7[_0x899b('0x2f')];if(_0x5d370c[_0x899b('0x31')][_0x899b('0x3e')]){_0x5b1e64['include']=[{'all':!![]}];}_0x5b1e64=_[_0x899b('0x3c')]({},_0x5b1e64,_0x5d370c[_0x899b('0x43')]);return db[_0x899b('0x2b')]['find'](_0x5b1e64)[_0x899b('0x22')](handleEntityNotFound(_0x437fb4,null))[_0x899b('0x22')](respondWithResult(_0x437fb4,null))[_0x899b('0x44')](handleError(_0x437fb4,null));};exports[_0x899b('0x45')]=function(_0x443318,_0x405b3c){return db[_0x899b('0x2b')][_0x899b('0x45')](_0x443318['body'],{})[_0x899b('0x22')](function(_0x5e8602){var _0x4ab758=_0x443318[_0x899b('0x46')]['get']({'plain':!![]});if(!_0x4ab758)throw new Error(_0x899b('0x47'));if(_0x4ab758[_0x899b('0x48')]===_0x899b('0x46')){var _0x432164=_0x5e8602[_0x899b('0x49')]({'plain':!![]});var _0x4a5889='SquareProjects';return db[_0x899b('0x4a')][_0x899b('0x4b')]({'where':{'name':_0x4a5889,'userProfileId':_0x4ab758[_0x899b('0x4c')]},'raw':!![]})[_0x899b('0x22')](function(_0xc1d285){if(_0xc1d285&&_0xc1d285['autoAssociation']===0x0){return db[_0x899b('0x25')][_0x899b('0x45')]({'name':_0x432164['name'],'resourceId':_0x432164['id'],'type':_0xc1d285[_0x899b('0x28')],'sectionId':_0xc1d285['id']},{})[_0x899b('0x22')](function(){return _0x5e8602;});}else{return _0x5e8602;}})[_0x899b('0x44')](function(_0x3fd65e){logger[_0x899b('0x26')](_0x899b('0x4d'),_0x3fd65e);throw _0x3fd65e;});}return _0x5e8602;})['then'](respondWithResult(_0x405b3c,0xc9))[_0x899b('0x44')](handleError(_0x405b3c,null));};exports['update']=function(_0x1d2c42,_0x1e4264){if(_0x1d2c42[_0x899b('0x4e')]['id']){delete _0x1d2c42[_0x899b('0x4e')]['id'];}return db['SquareProject'][_0x899b('0x4b')]({'where':{'id':_0x1d2c42['params']['id']}})['then'](handleEntityNotFound(_0x1e4264,null))['then'](saveUpdates(_0x1d2c42['body'],null))[_0x899b('0x22')](respondWithResult(_0x1e4264,null))['catch'](handleError(_0x1e4264,null));};exports[_0x899b('0x23')]=function(_0x48ffa6,_0x40b93a){return db[_0x899b('0x2b')][_0x899b('0x4b')]({'where':{'id':_0x48ffa6[_0x899b('0x41')]['id']}})[_0x899b('0x22')](handleEntityNotFound(_0x40b93a,null))['then'](removeEntity(_0x40b93a,null))['catch'](handleError(_0x40b93a,null));};exports[_0x899b('0x4f')]=function(_0x5a672c,_0x3e8a0f,_0x26341d){return db[_0x899b('0x2b')][_0x899b('0x4b')]({'where':{'id':_0x5a672c[_0x899b('0x41')]['id']}})[_0x899b('0x22')](handleEntityNotFound(_0x3e8a0f,null))[_0x899b('0x22')](function(_0x3b6ce0){if(_0x3b6ce0){return _0x3b6ce0[_0x899b('0x4f')](_0x5a672c[_0x899b('0x4e')][_0x899b('0x50')],_['omit'](_0x5a672c[_0x899b('0x4e')],['ids','id'])||{});}})['then'](respondWithResult(_0x3e8a0f,null))[_0x899b('0x44')](handleError(_0x3e8a0f,null));};exports[_0x899b('0x51')]=function(_0x103bef,_0x484356,_0x4e114d){return db[_0x899b('0x2b')][_0x899b('0x4b')]({'where':{'id':_0x103bef[_0x899b('0x41')]['id']}})[_0x899b('0x22')](handleEntityNotFound(_0x484356,null))[_0x899b('0x22')](function(_0x56ec89){if(_0x56ec89){return _0x56ec89[_0x899b('0x51')](_0x103bef[_0x899b('0x31')][_0x899b('0x50')])[_0x899b('0x22')](function(){if(_[_0x899b('0x52')](_0x103bef[_0x899b('0x31')][_0x899b('0x50')])){for(var _0x36a5a4=0x0;_0x36a5a4<_0x103bef[_0x899b('0x31')]['ids'][_0x899b('0x36')];_0x36a5a4+=0x1){socket['emit'](_0x899b('0x53'),{'UserId':Number(_0x103bef[_0x899b('0x31')][_0x899b('0x50')][_0x36a5a4]),'SquareProjectId':Number(_0x103bef[_0x899b('0x41')]['id'])});}}else{socket['emit'](_0x899b('0x53'),{'UserId':Number(_0x103bef[_0x899b('0x31')][_0x899b('0x50')]),'SquareProjectId':Number(_0x103bef[_0x899b('0x41')]['id'])});}});}})[_0x899b('0x22')](respondWithStatusCode(_0x484356,null))[_0x899b('0x44')](handleError(_0x484356,null));};exports[_0x899b('0x54')]=function(_0x3f243b,_0x1a873b,_0x9e5594){var _0xd0242c={};var _0x5f3242={};var _0x67422d;var _0xbead25;return db[_0x899b('0x2b')][_0x899b('0x55')]({'where':{'id':_0x3f243b[_0x899b('0x41')]['id']}})[_0x899b('0x22')](handleEntityNotFound(_0x1a873b,null))[_0x899b('0x22')](function(_0x9908a3){if(_0x9908a3){_0x67422d=_0x9908a3;_0x5f3242[_0x899b('0x2f')]=_['keys'](db[_0x899b('0x56')][_0x899b('0x2c')]);_0x5f3242['query']=_[_0x899b('0x32')](_0x3f243b[_0x899b('0x31')]);_0x5f3242[_0x899b('0x33')]=_['intersection'](_0x5f3242[_0x899b('0x2f')],_0x5f3242[_0x899b('0x31')]);_0xd0242c[_0x899b('0x34')]=_[_0x899b('0x42')](_0x5f3242['model'],qs[_0x899b('0x35')](_0x3f243b[_0x899b('0x31')][_0x899b('0x35')]));_0xd0242c['attributes']=_0xd0242c['attributes'][_0x899b('0x36')]?_0xd0242c[_0x899b('0x34')]:_0x5f3242['model'];_0xd0242c['order']=qs[_0x899b('0x39')](_0x3f243b[_0x899b('0x31')][_0x899b('0x39')]);_0xd0242c[_0x899b('0x3b')]=qs[_0x899b('0x33')](_['pick'](_0x3f243b['query'],_0x5f3242[_0x899b('0x33')]));if(_0x3f243b[_0x899b('0x31')][_0x899b('0x3a')]){_0xd0242c[_0x899b('0x3b')]=_['merge'](_0xd0242c[_0x899b('0x3b')],{'$or':_[_0x899b('0x30')](_0xd0242c['attributes'],function(_0x3e182d){var _0x187b0c={};_0x187b0c[_0x3e182d]={'$like':'%'+_0x3f243b['query'][_0x899b('0x3a')]+'%'};return _0x187b0c;})});}_0xd0242c=_[_0x899b('0x3c')]({},_0xd0242c,_0x3f243b[_0x899b('0x43')]);return _0x67422d[_0x899b('0x54')](_0xd0242c);}})['then'](function(_0x51e0c8){if(_0x51e0c8){_0xbead25=_0x51e0c8['length'];if(!_0x3f243b[_0x899b('0x31')][_0x899b('0x57')](_0x899b('0x37'))){_0xd0242c[_0x899b('0x1c')]=qs[_0x899b('0x1c')](_0x3f243b[_0x899b('0x31')][_0x899b('0x1c')]);_0xd0242c[_0x899b('0x1b')]=qs['offset'](_0x3f243b[_0x899b('0x31')][_0x899b('0x1b')]);}return _0x67422d['getUsers'](_0xd0242c);}})[_0x899b('0x22')](function(_0x513316){if(_0x513316){return _0x513316?{'count':_0xbead25,'rows':_0x513316}:null;}})[_0x899b('0x22')](respondWithResult(_0x1a873b,null))[_0x899b('0x44')](handleError(_0x1a873b,null));};
\ No newline at end of file
index 604a19d..ba17c1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b1e=['remove','emit','hasOwnProperty','hook','SquareProject','setMaxListeners','save','update'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x0b1e,0x6c));var _0xe0b1=function(_0x3ccdf8,_0x584ceb){_0x3ccdf8=_0x3ccdf8-0x0;var _0x243dab=_0x0b1e[_0x3ccdf8];return _0x243dab;};'use strict';var EventEmitter=require('events');var SquareProject=require('../../mysqldb')['db'][_0xe0b1('0x0')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xe0b1('0x1')](0x0);var events={'afterCreate':_0xe0b1('0x2'),'afterUpdate':_0xe0b1('0x3'),'afterDestroy':_0xe0b1('0x4')};function emitEvent(_0x4eea0){return function(_0x213db9,_0x186484,_0x332100){SquareProjectEvents[_0xe0b1('0x5')](_0x4eea0+':'+_0x213db9['id'],_0x213db9);SquareProjectEvents['emit'](_0x4eea0,_0x213db9);_0x332100(null);};}for(var e in events){if(events[_0xe0b1('0x6')](e)){var event=events[e];SquareProject[_0xe0b1('0x7')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0x628d=['exports','events','SquareProject','setMaxListeners','update','remove','emit','hook'];(function(_0x2341c6,_0x3af092){var _0x54c34d=function(_0x3091f9){while(--_0x3091f9){_0x2341c6['push'](_0x2341c6['shift']());}};_0x54c34d(++_0x3af092);}(_0x628d,0xf9));var _0xd628=function(_0xff912,_0x463f45){_0xff912=_0xff912-0x0;var _0x558df1=_0x628d[_0xff912];return _0x558df1;};'use strict';var EventEmitter=require(_0xd628('0x0'));var SquareProject=require('../../mysqldb')['db'][_0xd628('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xd628('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd628('0x3'),'afterDestroy':_0xd628('0x4')};function emitEvent(_0x5a37d4){return function(_0x1ce45b,_0x3dba4e,_0x21b311){SquareProjectEvents[_0xd628('0x5')](_0x5a37d4+':'+_0x1ce45b['id'],_0x1ce45b);SquareProjectEvents[_0xd628('0x5')](_0x5a37d4,_0x1ce45b);_0x21b311(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0xd628('0x6')](e,emitEvent(event));}}module[_0xd628('0x7')]=SquareProjectEvents;
\ No newline at end of file
index e64126e..fb7e4b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3c9=['format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','changed','preproduction'];(function(_0x5ad1ef,_0xe5c715){var _0x5512a3=function(_0x5d7954){while(--_0x5d7954){_0x5ad1ef['push'](_0x5ad1ef['shift']());}};_0x5512a3(++_0xe5c715);}(_0xf3c9,0x1a6));var _0x9f3c=function(_0x2766d6,_0x300b51){_0x2766d6=_0x2766d6-0x0;var _0x29a7dc=_0xf3c9[_0x2766d6];return _0x29a7dc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9f3c('0x0'))(_0x9f3c('0x1'));var moment=require(_0x9f3c('0x2'));var BPromise=require(_0x9f3c('0x3'));var rp=require(_0x9f3c('0x4'));var fs=require('fs');var path=require(_0x9f3c('0x5'));var rimraf=require(_0x9f3c('0x6'));var config=require(_0x9f3c('0x7'));var attributes=require(_0x9f3c('0x8'));module[_0x9f3c('0x9')]=function(_0x314ecc,_0x5c26eb){return _0x314ecc[_0x9f3c('0xa')](_0x9f3c('0xb'),attributes,{'tableName':_0x9f3c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xbc96d5,_0x1b37cc,_0x278e9a){if(_0xbc96d5[_0x9f3c('0xd')](_0x9f3c('0xe'))){_0xbc96d5['savedAt']=moment()[_0x9f3c('0xf')](_0x9f3c('0x10'));}if(_0xbc96d5[_0x9f3c('0xd')](_0x9f3c('0x11'))){_0xbc96d5[_0x9f3c('0x12')]=moment()[_0x9f3c('0xf')](_0x9f3c('0x10'));}_0x278e9a(null,_0xbc96d5);}}});};
\ No newline at end of file
+var _0x46e0=['request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','../../config/logger','api','bluebird'];(function(_0x4fbaf9,_0x3b8190){var _0x1d89a0=function(_0x3b650b){while(--_0x3b650b){_0x4fbaf9['push'](_0x4fbaf9['shift']());}};_0x1d89a0(++_0x3b8190);}(_0x46e0,0x1c3));var _0x046e=function(_0x195c7b,_0x572f0f){_0x195c7b=_0x195c7b-0x0;var _0x492dd7=_0x46e0[_0x195c7b];return _0x492dd7;};'use strict';var _=require(_0x046e('0x0'));var util=require(_0x046e('0x1'));var logger=require(_0x046e('0x2'))(_0x046e('0x3'));var moment=require('moment');var BPromise=require(_0x046e('0x4'));var rp=require(_0x046e('0x5'));var fs=require('fs');var path=require(_0x046e('0x6'));var rimraf=require(_0x046e('0x7'));var config=require(_0x046e('0x8'));var attributes=require(_0x046e('0x9'));module[_0x046e('0xa')]=function(_0x44fa8d,_0x27e01d){return _0x44fa8d[_0x046e('0xb')]('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x296bfc,_0x4e2ecb,_0x562059){if(_0x296bfc[_0x046e('0xc')](_0x046e('0xd'))){_0x296bfc[_0x046e('0xe')]=moment()[_0x046e('0xf')](_0x046e('0x10'));}if(_0x296bfc[_0x046e('0xc')](_0x046e('0x11'))){_0x296bfc[_0x046e('0x12')]=moment()['format'](_0x046e('0x10'));}_0x562059(null,_0x296bfc);}}});};
\ No newline at end of file
index a03126b..1e2af4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x690f=['request','then','SquareProject,\x20%s,\x20%s','debug','SquareProject,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','catch','ShowSquareProject','options','raw','where','include','map','model','attributes','stringify','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./squareProject.socket','register'];(function(_0x449420,_0xe937e0){var _0x15f1d3=function(_0x2cdf4a){while(--_0x2cdf4a){_0x449420['push'](_0x449420['shift']());}};_0x15f1d3(++_0xe937e0);}(_0x690f,0x172));var _0xf690=function(_0x5e4574,_0x356fde){_0x5e4574=_0x5e4574-0x0;var _0x283bc4=_0x690f[_0x5e4574];return _0x283bc4;};'use strict';var _=require(_0xf690('0x0'));var util=require(_0xf690('0x1'));var moment=require(_0xf690('0x2'));var BPromise=require(_0xf690('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf690('0x4'));var logger=require(_0xf690('0x5'))(_0xf690('0x6'));var config=require(_0xf690('0x7'));var jayson=require(_0xf690('0x8'));var client=jayson['client'][_0xf690('0x9')]({'port':0x232a});config[_0xf690('0xa')]=_[_0xf690('0xb')](config[_0xf690('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xf690('0xc'))(new Redis(config['redis']));require(_0xf690('0xd'))[_0xf690('0xe')](socket);function respondWithRpcPromise(_0x1c3f06,_0xfe994d,_0x2c03e0){return new BPromise(function(_0x18d21e,_0x4708ec){return client[_0xf690('0xf')](_0x1c3f06,_0x2c03e0)[_0xf690('0x10')](function(_0x180cd4){logger['info'](_0xf690('0x11'),_0xfe994d,'request\x20sent');logger[_0xf690('0x12')](_0xf690('0x13'),_0xfe994d,_0xf690('0x14'),JSON['stringify'](_0x180cd4));if(_0x180cd4[_0xf690('0x15')]){if(_0x180cd4[_0xf690('0x15')][_0xf690('0x16')]===0x1f4){logger[_0xf690('0x15')]('SquareProject,\x20%s,\x20%s',_0xfe994d,_0x180cd4[_0xf690('0x15')][_0xf690('0x17')]);return _0x4708ec(_0x180cd4['error'][_0xf690('0x17')]);}logger['error'](_0xf690('0x11'),_0xfe994d,_0x180cd4[_0xf690('0x15')][_0xf690('0x17')]);return _0x18d21e(_0x180cd4[_0xf690('0x15')]['message']);}else{logger[_0xf690('0x18')](_0xf690('0x11'),_0xfe994d,'request\x20sent');_0x18d21e(_0x180cd4['result']['message']);}})[_0xf690('0x19')](function(_0x5e9384){logger[_0xf690('0x15')](_0xf690('0x11'),_0xfe994d,_0x5e9384);_0x4708ec(_0x5e9384);});});}exports[_0xf690('0x1a')]=function(_0x207aaf){var _0x2031f9=this;return new Promise(function(_0x518220,_0x3651b2){return db['SquareProject']['find']({'raw':_0x207aaf['options']?_0x207aaf[_0xf690('0x1b')][_0xf690('0x1c')]===undefined?!![]:![]:!![],'where':_0x207aaf[_0xf690('0x1b')]?_0x207aaf[_0xf690('0x1b')][_0xf690('0x1d')]||null:null,'attributes':_0x207aaf[_0xf690('0x1b')]?_0x207aaf[_0xf690('0x1b')]['attributes']||null:null,'include':_0x207aaf['options']?_0x207aaf[_0xf690('0x1b')][_0xf690('0x1e')]?_[_0xf690('0x1f')](_0x207aaf[_0xf690('0x1b')][_0xf690('0x1e')],function(_0x72d507){return{'model':db[_0x72d507[_0xf690('0x20')]],'as':_0x72d507['as'],'attributes':_0x72d507[_0xf690('0x21')],'include':_0x72d507[_0xf690('0x1e')]?_['map'](_0x72d507['include'],function(_0x30b01c){return{'model':db[_0x30b01c[_0xf690('0x20')]],'as':_0x30b01c['as'],'attributes':_0x30b01c['attributes'],'include':_0x30b01c[_0xf690('0x1e')]?_['map'](_0x30b01c['include'],function(_0xf0ec16){return{'model':db[_0xf0ec16[_0xf690('0x20')]],'as':_0xf0ec16['as'],'attributes':_0xf0ec16[_0xf690('0x21')]};}):[]};}):[]};}):[]:[]})[_0xf690('0x10')](function(_0x2c137f){logger[_0xf690('0x18')](_0xf690('0x1a'),_0x207aaf);logger[_0xf690('0x12')]('ShowSquareProject',_0x207aaf,JSON[_0xf690('0x22')](_0x2c137f));_0x518220(_0x2c137f);})['catch'](function(_0x165306){logger['error'](_0xf690('0x1a'),_0x165306[_0xf690('0x17')],_0x207aaf);_0x3651b2(_0x2031f9['error'](0x1f4,_0x165306[_0xf690('0x17')]));});});};
\ No newline at end of file
+var _0xfe26=['client','http','defaults','redis','socket.io-emitter','./squareProject.socket','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSquareProject','find','options','raw','where','attributes','include','map','model','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1b9def,_0x550da8){var _0x2851d8=function(_0x79a8d3){while(--_0x79a8d3){_0x1b9def['push'](_0x1b9def['shift']());}};_0x2851d8(++_0x550da8);}(_0xfe26,0x12e));var _0x6fe2=function(_0x292a63,_0x126d73){_0x292a63=_0x292a63-0x0;var _0x5c06ee=_0xfe26[_0x292a63];return _0x5c06ee;};'use strict';var _=require(_0x6fe2('0x0'));var util=require(_0x6fe2('0x1'));var moment=require(_0x6fe2('0x2'));var BPromise=require('bluebird');var rs=require(_0x6fe2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6fe2('0x4'))['db'];var utils=require(_0x6fe2('0x5'));var logger=require(_0x6fe2('0x6'))(_0x6fe2('0x7'));var config=require(_0x6fe2('0x8'));var jayson=require(_0x6fe2('0x9'));var client=jayson[_0x6fe2('0xa')][_0x6fe2('0xb')]({'port':0x232a});config['redis']=_[_0x6fe2('0xc')](config[_0x6fe2('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x6fe2('0xe'))(new Redis(config[_0x6fe2('0xd')]));require(_0x6fe2('0xf'))[_0x6fe2('0x10')](socket);function respondWithRpcPromise(_0x106bad,_0x496a5b,_0x2c6184){return new BPromise(function(_0x491707,_0x4a27f4){return client[_0x6fe2('0x11')](_0x106bad,_0x2c6184)[_0x6fe2('0x12')](function(_0x1ddcc2){logger[_0x6fe2('0x13')](_0x6fe2('0x14'),_0x496a5b,_0x6fe2('0x15'));logger[_0x6fe2('0x16')](_0x6fe2('0x17'),_0x496a5b,_0x6fe2('0x15'),JSON[_0x6fe2('0x18')](_0x1ddcc2));if(_0x1ddcc2[_0x6fe2('0x19')]){if(_0x1ddcc2['error'][_0x6fe2('0x1a')]===0x1f4){logger['error']('SquareProject,\x20%s,\x20%s',_0x496a5b,_0x1ddcc2[_0x6fe2('0x19')]['message']);return _0x4a27f4(_0x1ddcc2['error'][_0x6fe2('0x1b')]);}logger['error']('SquareProject,\x20%s,\x20%s',_0x496a5b,_0x1ddcc2[_0x6fe2('0x19')]['message']);return _0x491707(_0x1ddcc2[_0x6fe2('0x19')][_0x6fe2('0x1b')]);}else{logger[_0x6fe2('0x13')]('SquareProject,\x20%s,\x20%s',_0x496a5b,'request\x20sent');_0x491707(_0x1ddcc2[_0x6fe2('0x1c')]['message']);}})[_0x6fe2('0x1d')](function(_0x1b4370){logger[_0x6fe2('0x19')]('SquareProject,\x20%s,\x20%s',_0x496a5b,_0x1b4370);_0x4a27f4(_0x1b4370);});});}exports[_0x6fe2('0x1e')]=function(_0x55ea7f){var _0x3b7857=this;return new Promise(function(_0xb119c6,_0x3ffa2f){return db['SquareProject'][_0x6fe2('0x1f')]({'raw':_0x55ea7f[_0x6fe2('0x20')]?_0x55ea7f[_0x6fe2('0x20')][_0x6fe2('0x21')]===undefined?!![]:![]:!![],'where':_0x55ea7f[_0x6fe2('0x20')]?_0x55ea7f['options'][_0x6fe2('0x22')]||null:null,'attributes':_0x55ea7f[_0x6fe2('0x20')]?_0x55ea7f[_0x6fe2('0x20')][_0x6fe2('0x23')]||null:null,'include':_0x55ea7f[_0x6fe2('0x20')]?_0x55ea7f['options'][_0x6fe2('0x24')]?_[_0x6fe2('0x25')](_0x55ea7f[_0x6fe2('0x20')][_0x6fe2('0x24')],function(_0x305f4a){return{'model':db[_0x305f4a[_0x6fe2('0x26')]],'as':_0x305f4a['as'],'attributes':_0x305f4a['attributes'],'include':_0x305f4a[_0x6fe2('0x24')]?_['map'](_0x305f4a[_0x6fe2('0x24')],function(_0x1c55ed){return{'model':db[_0x1c55ed[_0x6fe2('0x26')]],'as':_0x1c55ed['as'],'attributes':_0x1c55ed['attributes'],'include':_0x1c55ed[_0x6fe2('0x24')]?_[_0x6fe2('0x25')](_0x1c55ed[_0x6fe2('0x24')],function(_0x3892d7){return{'model':db[_0x3892d7['model']],'as':_0x3892d7['as'],'attributes':_0x3892d7[_0x6fe2('0x23')]};}):[]};}):[]};}):[]:[]})[_0x6fe2('0x12')](function(_0x4b2765){logger[_0x6fe2('0x13')]('ShowSquareProject',_0x55ea7f);logger['debug'](_0x6fe2('0x1e'),_0x55ea7f,JSON[_0x6fe2('0x18')](_0x4b2765));_0xb119c6(_0x4b2765);})[_0x6fe2('0x1d')](function(_0xe33abd){logger[_0x6fe2('0x19')](_0x6fe2('0x1e'),_0xe33abd[_0x6fe2('0x1b')],_0x55ea7f);_0x3ffa2f(_0x3b7857[_0x6fe2('0x19')](0x1f4,_0xe33abd[_0x6fe2('0x1b')]));});});};
\ No newline at end of file
index 9b32079..78b8a17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa084=['update','removeListener','register','length','squareProject:','./squareProject.events','remove'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xa084,0xe5));var _0x4a08=function(_0x514d5a,_0x48544f){_0x514d5a=_0x514d5a-0x0;var _0x370f35=_0xa084[_0x514d5a];return _0x370f35;};'use strict';var SquareProjectEvents=require(_0x4a08('0x0'));var events=['save',_0x4a08('0x1'),_0x4a08('0x2')];function createListener(_0x537769,_0x32d8cb){return function(_0x30b514){_0x32d8cb['emit'](_0x537769,_0x30b514);};}function removeListener(_0xe720db,_0x3f7078){return function(){SquareProjectEvents[_0x4a08('0x3')](_0xe720db,_0x3f7078);};}exports[_0x4a08('0x4')]=function(_0x399851){for(var _0x4097be=0x0,_0xbfe9d1=events[_0x4a08('0x5')];_0x4097be<_0xbfe9d1;_0x4097be++){var _0x4c62ae=events[_0x4097be];var _0x391aab=createListener(_0x4a08('0x6')+_0x4c62ae,_0x399851);SquareProjectEvents['on'](_0x4c62ae,_0x391aab);}};
\ No newline at end of file
+var _0x5134=['./squareProject.events','save','remove','update','emit','length','squareProject:'];(function(_0x5b51a2,_0x5857e9){var _0x1ccd99=function(_0x237ced){while(--_0x237ced){_0x5b51a2['push'](_0x5b51a2['shift']());}};_0x1ccd99(++_0x5857e9);}(_0x5134,0xe7));var _0x4513=function(_0x3ba938,_0x27414d){_0x3ba938=_0x3ba938-0x0;var _0x2aabff=_0x5134[_0x3ba938];return _0x2aabff;};'use strict';var SquareProjectEvents=require(_0x4513('0x0'));var events=[_0x4513('0x1'),_0x4513('0x2'),_0x4513('0x3')];function createListener(_0x252798,_0x414b25){return function(_0x1558c0){_0x414b25[_0x4513('0x4')](_0x252798,_0x1558c0);};}function removeListener(_0x55747b,_0x4a3cde){return function(){SquareProjectEvents['removeListener'](_0x55747b,_0x4a3cde);};}exports['register']=function(_0x24fd31){for(var _0xa74cdf=0x0,_0x109f5c=events[_0x4513('0x5')];_0xa74cdf<_0x109f5c;_0xa74cdf++){var _0x5338ed=events[_0xa74cdf];var _0x1fc246=createListener(_0x4513('0x6')+_0x5338ed,_0x24fd31);SquareProjectEvents['on'](_0x5338ed,_0x1fc246);}};
\ No newline at end of file
index 5fac2ea..a691bee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','show','/:id/download','download','post','create','put','update','/:id','multer','util','connect-timeout'];(function(_0x538203,_0x237e4e){var _0x5bf901=function(_0x3e3219){while(--_0x3e3219){_0x538203['push'](_0x538203['shift']());}};_0x5bf901(++_0x237e4e);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1399d6,_0x2c1661){_0x1399d6=_0x1399d6-0x0;var _0x4a9db4=_0x5fc3[_0x1399d6];return _0x4a9db4;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0xe')]('/',auth['isAuthenticated'](),controller[_0x35fc('0xf')]);router[_0x35fc('0x10')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0x11')]);router['delete'](_0x35fc('0x12'),auth[_0x35fc('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x814b=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create','put','delete','destroy','exports'];(function(_0x35cd6c,_0x5a6f4a){var _0x27a9f1=function(_0x5c74f5){while(--_0x5c74f5){_0x35cd6c['push'](_0x35cd6c['shift']());}};_0x27a9f1(++_0x5a6f4a);}(_0x814b,0x1a2));var _0xb814=function(_0x124298,_0x542004){_0x124298=_0x124298-0x0;var _0x35ac24=_0x814b[_0x124298];return _0x35ac24;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0x10')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller['update']);router[_0xb814('0x13')]('/:id',auth[_0xb814('0xb')](),controller[_0xb814('0x14')]);module[_0xb814('0x15')]=router;
\ No newline at end of file
index eb448d9..42eef01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd51=['VIRTUAL','getDataValue','savePath','lastIndexOf','sequelize','STRING'];(function(_0x2677e4,_0x2cc2f4){var _0x1aba01=function(_0xdd2d90){while(--_0xdd2d90){_0x2677e4['push'](_0x2677e4['shift']());}};_0x1aba01(++_0x2cc2f4);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x10ac4b,_0x4e1b58){_0x10ac4b=_0x10ac4b-0x0;var _0x1ad68f=_0xbd51[_0x10ac4b];return _0x1ad68f;};'use strict';var Sequelize=require(_0x1bd5('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x1bd5('0x1')]},'callerid':{'type':Sequelize[_0x1bd5('0x1')]},'calleridname':{'type':Sequelize[_0x1bd5('0x1')]},'context':{'type':Sequelize[_0x1bd5('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x1bd5('0x1')]},'saveName':{'type':Sequelize[_0x1bd5('0x1')]},'filename':{'type':Sequelize[_0x1bd5('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x1bd5('0x2')],'get':function(){var _0x30a385='';var _0x19077c=this[_0x1bd5('0x3')](_0x1bd5('0x4'));if(_0x19077c){_0x30a385=_0x19077c['substring'](_0x19077c[_0x1bd5('0x5')]('.'));}return _0x30a385;}}};
\ No newline at end of file
+var _0xd8fb=['STRING','getDataValue','savePath','sequelize','exports'];(function(_0x2740a7,_0x1305b3){var _0x4c087b=function(_0x2dc7ae){while(--_0x2dc7ae){_0x2740a7['push'](_0x2740a7['shift']());}};_0x4c087b(++_0x1305b3);}(_0xd8fb,0x99));var _0xbd8f=function(_0x564cca,_0x187863){_0x564cca=_0x564cca-0x0;var _0x4205b5=_0xd8fb[_0x564cca];return _0x4205b5;};'use strict';var Sequelize=require(_0xbd8f('0x0'));module[_0xbd8f('0x1')]={'uniqueid':{'type':Sequelize[_0xbd8f('0x2')]},'callerid':{'type':Sequelize[_0xbd8f('0x2')]},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xbd8f('0x2')]},'accountcode':{'type':Sequelize[_0xbd8f('0x2')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0xbd8f('0x2')]},'saveName':{'type':Sequelize[_0xbd8f('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0xbd8f('0x2')]},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0xf503c4='';var _0x578499=this[_0xbd8f('0x3')](_0xbd8f('0x4'));if(_0x578499){_0xf503c4=_0x578499['substring'](_0x578499['lastIndexOf']('.'));}return _0xf503c4;}}};
\ No newline at end of file
index 096fe99..b1072fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057a=['download','../../components/encryptor','uniqueid','savePath','filename','format','decryptFile','secrets','recording','existsSync','Sequelize','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','count','status','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','map','SquareRecording','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','hasOwnProperty','order','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','filters','find','create','body','update'];(function(_0x5dbc50,_0x13457){var _0x535186=function(_0x32d872){while(--_0x32d872){_0x5dbc50['push'](_0x5dbc50['shift']());}};_0x535186(++_0x13457);}(_0x057a,0x193));var _0xa057=function(_0x1aa9b5,_0x4c2b19){_0x1aa9b5=_0x1aa9b5-0x0;var _0x13e36f=_0x057a[_0x1aa9b5];return _0x13e36f;};'use strict';var emlformat=require(_0xa057('0x0'));var rimraf=require(_0xa057('0x1'));var zipdir=require(_0xa057('0x2'));var jsonpatch=require(_0xa057('0x3'));var rp=require('request-promise');var moment=require(_0xa057('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa057('0x5'));var util=require('util');var path=require(_0xa057('0x6'));var sox=require(_0xa057('0x7'));var csv=require(_0xa057('0x8'));var ejs=require(_0xa057('0x9'));var fs=require('fs');var fs_extra=require(_0xa057('0xa'));var _=require(_0xa057('0xb'));var squel=require('squel');var crypto=require(_0xa057('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa057('0xd'));var toCsv=require(_0xa057('0x8'));var querystring=require(_0xa057('0xe'));var Papa=require(_0xa057('0xf'));var Redis=require(_0xa057('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa057('0x11'));var as=require(_0xa057('0x12'));var hardwareService=require(_0xa057('0x13'));var logger=require('../../config/logger')(_0xa057('0x14'));var utils=require(_0xa057('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa057('0x16'));var db=require(_0xa057('0x17'))['db'];function respondWithStatusCode(_0x21f13a,_0x15c106){_0x15c106=_0x15c106||0xcc;return function(_0xd6fb86){if(_0xd6fb86){return _0x21f13a[_0xa057('0x18')](_0x15c106);}return _0x21f13a['status'](_0x15c106)[_0xa057('0x19')]();};}function respondWithResult(_0x1a063d,_0x5a6b61){_0x5a6b61=_0x5a6b61||0xc8;return function(_0x960ff9){if(_0x960ff9){return _0x1a063d['status'](_0x5a6b61)[_0xa057('0x1a')](_0x960ff9);}};}function respondWithFilteredResult(_0x1c5501,_0x17d741){return function(_0x2603c5){if(_0x2603c5){var _0x3fcad4=typeof _0x17d741[_0xa057('0x1b')]==='undefined'&&typeof _0x17d741[_0xa057('0x1c')]==='undefined';var _0x14daea=_0x2603c5[_0xa057('0x1d')];var _0x4baa0b=_0x3fcad4?0x0:_0x17d741[_0xa057('0x1b')];var _0x298962=_0x3fcad4?_0x2603c5[_0xa057('0x1d')]:_0x17d741[_0xa057('0x1b')]+_0x17d741[_0xa057('0x1c')];var _0x172d05;if(_0x298962>=_0x14daea){_0x298962=_0x14daea;_0x172d05=0xc8;}else{_0x172d05=0xce;}_0x1c5501[_0xa057('0x1e')](_0x172d05);return _0x1c5501[_0xa057('0x1f')](_0xa057('0x20'),_0x4baa0b+'-'+_0x298962+'/'+_0x14daea)[_0xa057('0x1a')](_0x2603c5);}return null;};}function patchUpdates(_0xf69cd4){return function(_0x29a245){try{jsonpatch[_0xa057('0x21')](_0x29a245,_0xf69cd4,!![]);}catch(_0x37d21f){return BPromise[_0xa057('0x22')](_0x37d21f);}return _0x29a245[_0xa057('0x23')]();};}function saveUpdates(_0xa06972,_0x261871){return function(_0x157eeb){if(_0x157eeb){return _0x157eeb['update'](_0xa06972)[_0xa057('0x24')](function(_0x4a1e5b){return _0x4a1e5b;});}return null;};}function removeEntity(_0x1847a1,_0xcc982f){return function(_0x945ab3){if(_0x945ab3){return _0x945ab3[_0xa057('0x25')]()[_0xa057('0x24')](function(){_0x1847a1[_0xa057('0x1e')](0xcc)[_0xa057('0x19')]();});}};}function handleEntityNotFound(_0x528848,_0x37cd82){return function(_0x43399b){if(!_0x43399b){_0x528848['sendStatus'](0x194);}return _0x43399b;};}function handleError(_0x1171dc,_0x10e0e4){_0x10e0e4=_0x10e0e4||0x1f4;return function(_0x3bb093){logger['error'](_0x3bb093[_0xa057('0x26')]);if(_0x3bb093['name']){delete _0x3bb093[_0xa057('0x27')];}_0x1171dc[_0xa057('0x1e')](_0x10e0e4)[_0xa057('0x28')](_0x3bb093);};}exports['index']=function(_0x517686,_0x18fe7e){var _0x670bd8={},_0xbd7229={},_0x27838f={'count':0x0,'rows':[]};var _0x3f478d=_[_0xa057('0x29')](db[_0xa057('0x2a')][_0xa057('0x2b')],function(_0x39648f){return{'name':_0x39648f[_0xa057('0x2c')],'type':_0x39648f[_0xa057('0x2d')][_0xa057('0x2e')]};});_0xbd7229[_0xa057('0x2f')]=_['map'](_0x3f478d,_0xa057('0x27'));_0xbd7229['query']=_['keys'](_0x517686[_0xa057('0x30')]);_0xbd7229['filters']=_['intersection'](_0xbd7229[_0xa057('0x2f')],_0xbd7229[_0xa057('0x30')]);_0x670bd8[_0xa057('0x31')]=_[_0xa057('0x32')](_0xbd7229['model'],qs[_0xa057('0x33')](_0x517686['query'][_0xa057('0x33')]));_0x670bd8[_0xa057('0x31')]=_0x670bd8['attributes']['length']?_0x670bd8['attributes']:_0xbd7229['model'];if(!_0x517686['query'][_0xa057('0x34')]('nolimit')){_0x670bd8[_0xa057('0x1c')]=qs[_0xa057('0x1c')](_0x517686[_0xa057('0x30')]['limit']);_0x670bd8[_0xa057('0x1b')]=qs[_0xa057('0x1b')](_0x517686[_0xa057('0x30')]['offset']);}_0x670bd8[_0xa057('0x35')]=qs['sort'](_0x517686['query']['sort']);_0x670bd8['where']=qs['filters'](_[_0xa057('0x36')](_0x517686[_0xa057('0x30')],_0xbd7229['filters']),_0x3f478d);if(_0x517686[_0xa057('0x30')][_0xa057('0x37')]){_0x670bd8[_0xa057('0x38')]=_[_0xa057('0x39')](_0x670bd8[_0xa057('0x38')],{'$or':_[_0xa057('0x29')](_0x3f478d,function(_0x119de0){if(_0x119de0['type']!==_0xa057('0x3a')){var _0x118ca9={};_0x118ca9[_0x119de0[_0xa057('0x27')]]={'$like':'%'+_0x517686[_0xa057('0x30')]['filter']+'%'};return _0x118ca9;}})});}_0x670bd8=_[_0xa057('0x39')]({},_0x670bd8,_0x517686[_0xa057('0x3b')]);var _0x3f0406={'where':_0x670bd8[_0xa057('0x38')]};return db[_0xa057('0x2a')]['count'](_0x3f0406)['then'](function(_0x13a577){_0x27838f['count']=_0x13a577;if(_0x517686[_0xa057('0x30')][_0xa057('0x3c')]){_0x670bd8[_0xa057('0x3d')]=[{'all':!![]}];}return db['SquareRecording']['findAll'](_0x670bd8);})[_0xa057('0x24')](function(_0x3c4953){_0x27838f[_0xa057('0x3e')]=_0x3c4953;return _0x27838f;})[_0xa057('0x24')](respondWithFilteredResult(_0x18fe7e,_0x670bd8))[_0xa057('0x3f')](handleError(_0x18fe7e,null));};exports[_0xa057('0x40')]=function(_0x20f2da,_0x2a428d){var _0x5326dc={'raw':!![],'where':{'id':_0x20f2da[_0xa057('0x41')]['id']}},_0x2e38d7={};_0x2e38d7[_0xa057('0x2f')]=_['keys'](db[_0xa057('0x2a')][_0xa057('0x2b')]);_0x2e38d7['query']=_[_0xa057('0x42')](_0x20f2da[_0xa057('0x30')]);_0x2e38d7[_0xa057('0x43')]=_['intersection'](_0x2e38d7[_0xa057('0x2f')],_0x2e38d7[_0xa057('0x30')]);_0x5326dc['attributes']=_[_0xa057('0x32')](_0x2e38d7[_0xa057('0x2f')],qs[_0xa057('0x33')](_0x20f2da[_0xa057('0x30')][_0xa057('0x33')]));_0x5326dc[_0xa057('0x31')]=_0x5326dc[_0xa057('0x31')]['length']?_0x5326dc['attributes']:_0x2e38d7[_0xa057('0x2f')];if(_0x20f2da[_0xa057('0x30')][_0xa057('0x3c')]){_0x5326dc[_0xa057('0x3d')]=[{'all':!![]}];}_0x5326dc=_[_0xa057('0x39')]({},_0x5326dc,_0x20f2da[_0xa057('0x3b')]);return db['SquareRecording'][_0xa057('0x44')](_0x5326dc)[_0xa057('0x24')](handleEntityNotFound(_0x2a428d,null))['then'](respondWithResult(_0x2a428d,null))['catch'](handleError(_0x2a428d,null));};exports[_0xa057('0x45')]=function(_0x413e1c,_0x29a113){return db[_0xa057('0x2a')][_0xa057('0x45')](_0x413e1c[_0xa057('0x46')],{})[_0xa057('0x24')](respondWithResult(_0x29a113,0xc9))[_0xa057('0x3f')](handleError(_0x29a113,null));};exports[_0xa057('0x47')]=function(_0x1b7b36,_0x37861d){if(_0x1b7b36[_0xa057('0x46')]['id']){delete _0x1b7b36['body']['id'];}return db[_0xa057('0x2a')][_0xa057('0x44')]({'where':{'id':_0x1b7b36['params']['id']}})['then'](handleEntityNotFound(_0x37861d,null))['then'](saveUpdates(_0x1b7b36['body'],null))[_0xa057('0x24')](respondWithResult(_0x37861d,null))[_0xa057('0x3f')](handleError(_0x37861d,null));};exports[_0xa057('0x48')]=function(_0x127dca,_0x1467f4,_0x2239b4){var _0x35f8b1=require(_0xa057('0x49'));var _0x362b7e=![];var _0x8d1ee0={};if(_0x127dca[_0xa057('0x30')]['type']&&_0x127dca[_0xa057('0x30')][_0xa057('0x2d')]===_0xa057('0x4a')){_0x8d1ee0[_0xa057('0x4a')]=_0x127dca['params']['id'];}else{_0x8d1ee0['id']=_0x127dca[_0xa057('0x41')]['id'];}return db[_0xa057('0x2a')][_0xa057('0x44')]({'where':_0x8d1ee0,'attributes':['id',_0xa057('0x4b'),_0xa057('0x4c')],'raw':!![]})[_0xa057('0x24')](handleEntityNotFound(_0x1467f4,null))[_0xa057('0x24')](function(_0x50f328){if(_0x50f328){var _0x58cff7=_0x50f328['savePath'];var _0x13d943=util[_0xa057('0x4d')]('%s.cypher',_0x58cff7);if(fs['existsSync'](_0x13d943)){_0x362b7e=!![];return _0x35f8b1[_0xa057('0x4e')](_0x13d943,_0x58cff7,config[_0xa057('0x4f')][_0xa057('0x50')])[_0xa057('0x24')](function(){return _0x50f328;});}return _0x50f328;}})[_0xa057('0x24')](function(_0x56da0e){if(_0x56da0e){var _0x3cb248=_0x56da0e[_0xa057('0x4b')];if(!fs[_0xa057('0x51')](_0x3cb248)){throw new db[(_0xa057('0x52'))]['ValidationError'](_0xa057('0x53'));}if(_0x56da0e[_0xa057('0x4c')]){return _0x1467f4[_0xa057('0x48')](_0x3cb248,_0x56da0e[_0xa057('0x4c')]+path[_0xa057('0x54')](_0x3cb248),function(){if(_0x362b7e){fs[_0xa057('0x55')](_0x3cb248);}});}else{return _0x1467f4[_0xa057('0x48')](_0x3cb248,function(_0x5e3899){if(_0x362b7e){fs[_0xa057('0x55')](_0x3cb248);}});}}})[_0xa057('0x3f')](function(_0x7b8d06){if(_0x7b8d06[_0xa057('0x56')]===_0xa057('0x53')){_0x1467f4[_0xa057('0x1e')](0x194)['send'](_0xa057('0x57'));}else{return handleError(_0x1467f4,null);}});};exports[_0xa057('0x25')]=function(_0x8098ef,_0xfe202e){return db[_0xa057('0x2a')][_0xa057('0x44')]({'where':{'id':_0x8098ef[_0xa057('0x41')]['id']}})['then'](function(_0x5de462){if(_[_0xa057('0x58')](_0x5de462)){throw new ReferenceError(_0xa057('0x59'));}return _0x5de462;})[_0xa057('0x24')](function(_0x30e44c){var _0x51f64b=_0x30e44c[_0xa057('0x4b')];logger[_0xa057('0x5a')](_0xa057('0x5b'),_0x51f64b);if(!_[_0xa057('0x58')](_0x30e44c[_0xa057('0x4b')])&&fs['existsSync'](_0x51f64b)){logger[_0xa057('0x5a')](_0xa057('0x5c')+_0x51f64b+_0xa057('0x5d'));fs[_0xa057('0x5e')](_0x51f64b);}_0x51f64b=_0x51f64b+'.cypher';if(!_[_0xa057('0x58')](_0x30e44c[_0xa057('0x4b')])&&fs[_0xa057('0x51')](_0x51f64b)){logger['info'](_0xa057('0x5c')+_0x51f64b+_0xa057('0x5d'));fs[_0xa057('0x5e')](_0x51f64b);}return _0x30e44c;})[_0xa057('0x24')](function(_0x288e2f){if(!_0x288e2f)throw new InternalError();return _0x288e2f[_0xa057('0x25')]();})['then'](function(){_0xfe202e[_0xa057('0x1e')](0xcc)[_0xa057('0x19')]();})[_0xa057('0x3f')](handleError(_0xfe202e,null));};
\ No newline at end of file
+var _0x733a=['../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','destroy','then','end','error','stack','name','index','rawAttributes','fieldName','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','SquareRecording','includeAll','include','findAll','show','params','options','find','catch','create','body','download','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','existsSync','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','unlink','message','send','Not\x20found','isNil','cancellazione\x20fisica\x20documento\x20%s','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','eml-format','rimraf','zip-dir','request-promise','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0xfd9ee7,_0x18166f){var _0xf7fb68=function(_0x52b0c3){while(--_0x52b0c3){_0xfd9ee7['push'](_0xfd9ee7['shift']());}};_0xf7fb68(++_0x18166f);}(_0x733a,0x165));var _0xa733=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x733a[_0x4ae6ef];return _0x3cbb4e;};'use strict';var emlformat=require(_0xa733('0x0'));var rimraf=require(_0xa733('0x1'));var zipdir=require(_0xa733('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa733('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa733('0x4'));var path=require(_0xa733('0x5'));var sox=require(_0xa733('0x6'));var csv=require('to-csv');var ejs=require(_0xa733('0x7'));var fs=require('fs');var fs_extra=require(_0xa733('0x8'));var _=require('lodash');var squel=require(_0xa733('0x9'));var crypto=require(_0xa733('0xa'));var jsforce=require(_0xa733('0xb'));var deskjs=require(_0xa733('0xc'));var toCsv=require(_0xa733('0xd'));var querystring=require(_0xa733('0xe'));var Papa=require(_0xa733('0xf'));var Redis=require(_0xa733('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa733('0x11'));var hardwareService=require(_0xa733('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xa733('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xa733('0x14'));var db=require(_0xa733('0x15'))['db'];function respondWithStatusCode(_0x5bdbde,_0xbe22d2){_0xbe22d2=_0xbe22d2||0xcc;return function(_0x3dc039){if(_0x3dc039){return _0x5bdbde[_0xa733('0x16')](_0xbe22d2);}return _0x5bdbde[_0xa733('0x17')](_0xbe22d2)['end']();};}function respondWithResult(_0x5f1c30,_0x5eda4a){_0x5eda4a=_0x5eda4a||0xc8;return function(_0x369f83){if(_0x369f83){return _0x5f1c30[_0xa733('0x17')](_0x5eda4a)[_0xa733('0x18')](_0x369f83);}};}function respondWithFilteredResult(_0x106dce,_0x254a02){return function(_0xf360d3){if(_0xf360d3){var _0x2148a6=typeof _0x254a02['offset']===_0xa733('0x19')&&typeof _0x254a02[_0xa733('0x1a')]===_0xa733('0x19');var _0x53e13c=_0xf360d3[_0xa733('0x1b')];var _0x5b69ef=_0x2148a6?0x0:_0x254a02['offset'];var _0x3bd49a=_0x2148a6?_0xf360d3[_0xa733('0x1b')]:_0x254a02[_0xa733('0x1c')]+_0x254a02['limit'];var _0x163b51;if(_0x3bd49a>=_0x53e13c){_0x3bd49a=_0x53e13c;_0x163b51=0xc8;}else{_0x163b51=0xce;}_0x106dce[_0xa733('0x17')](_0x163b51);return _0x106dce[_0xa733('0x1d')](_0xa733('0x1e'),_0x5b69ef+'-'+_0x3bd49a+'/'+_0x53e13c)[_0xa733('0x18')](_0xf360d3);}return null;};}function patchUpdates(_0x46b7ce){return function(_0x4e862f){try{jsonpatch['apply'](_0x4e862f,_0x46b7ce,!![]);}catch(_0xe4625b){return BPromise[_0xa733('0x1f')](_0xe4625b);}return _0x4e862f[_0xa733('0x20')]();};}function saveUpdates(_0x1ed0b8,_0x232d54){return function(_0x2cd42f){if(_0x2cd42f){return _0x2cd42f['update'](_0x1ed0b8)['then'](function(_0x3969d9){return _0x3969d9;});}return null;};}function removeEntity(_0x51645f,_0x2f745a){return function(_0x56e435){if(_0x56e435){return _0x56e435[_0xa733('0x21')]()[_0xa733('0x22')](function(){_0x51645f[_0xa733('0x17')](0xcc)[_0xa733('0x23')]();});}};}function handleEntityNotFound(_0x470c45,_0x2a7997){return function(_0x161740){if(!_0x161740){_0x470c45['sendStatus'](0x194);}return _0x161740;};}function handleError(_0xb79203,_0x1021a0){_0x1021a0=_0x1021a0||0x1f4;return function(_0x496d91){logger[_0xa733('0x24')](_0x496d91[_0xa733('0x25')]);if(_0x496d91[_0xa733('0x26')]){delete _0x496d91[_0xa733('0x26')];}_0xb79203[_0xa733('0x17')](_0x1021a0)['send'](_0x496d91);};}exports[_0xa733('0x27')]=function(_0x310f2a,_0xf18808){var _0x20450b={},_0xabbf52={},_0x397ad8={'count':0x0,'rows':[]};var _0x477327=_['map'](db['SquareRecording'][_0xa733('0x28')],function(_0x1ffc19){return{'name':_0x1ffc19[_0xa733('0x29')],'type':_0x1ffc19['type']['key']};});_0xabbf52[_0xa733('0x2a')]=_[_0xa733('0x2b')](_0x477327,_0xa733('0x26'));_0xabbf52[_0xa733('0x2c')]=_[_0xa733('0x2d')](_0x310f2a[_0xa733('0x2c')]);_0xabbf52['filters']=_[_0xa733('0x2e')](_0xabbf52[_0xa733('0x2a')],_0xabbf52[_0xa733('0x2c')]);_0x20450b[_0xa733('0x2f')]=_[_0xa733('0x2e')](_0xabbf52['model'],qs['fields'](_0x310f2a[_0xa733('0x2c')][_0xa733('0x30')]));_0x20450b[_0xa733('0x2f')]=_0x20450b[_0xa733('0x2f')][_0xa733('0x31')]?_0x20450b[_0xa733('0x2f')]:_0xabbf52[_0xa733('0x2a')];if(!_0x310f2a[_0xa733('0x2c')][_0xa733('0x32')](_0xa733('0x33'))){_0x20450b['limit']=qs[_0xa733('0x1a')](_0x310f2a[_0xa733('0x2c')][_0xa733('0x1a')]);_0x20450b['offset']=qs['offset'](_0x310f2a[_0xa733('0x2c')]['offset']);}_0x20450b['order']=qs[_0xa733('0x34')](_0x310f2a['query'][_0xa733('0x34')]);_0x20450b[_0xa733('0x35')]=qs[_0xa733('0x36')](_[_0xa733('0x37')](_0x310f2a[_0xa733('0x2c')],_0xabbf52['filters']),_0x477327);if(_0x310f2a[_0xa733('0x2c')][_0xa733('0x38')]){_0x20450b[_0xa733('0x35')]=_[_0xa733('0x39')](_0x20450b[_0xa733('0x35')],{'$or':_[_0xa733('0x2b')](_0x477327,function(_0x583aa0){if(_0x583aa0[_0xa733('0x3a')]!==_0xa733('0x3b')){var _0x4d531b={};_0x4d531b[_0x583aa0[_0xa733('0x26')]]={'$like':'%'+_0x310f2a[_0xa733('0x2c')][_0xa733('0x38')]+'%'};return _0x4d531b;}})});}_0x20450b=_[_0xa733('0x39')]({},_0x20450b,_0x310f2a['options']);var _0x53fce4={'where':_0x20450b[_0xa733('0x35')]};return db[_0xa733('0x3c')]['count'](_0x53fce4)['then'](function(_0x1e3119){_0x397ad8[_0xa733('0x1b')]=_0x1e3119;if(_0x310f2a[_0xa733('0x2c')][_0xa733('0x3d')]){_0x20450b[_0xa733('0x3e')]=[{'all':!![]}];}return db[_0xa733('0x3c')][_0xa733('0x3f')](_0x20450b);})['then'](function(_0x5e6188){_0x397ad8['rows']=_0x5e6188;return _0x397ad8;})[_0xa733('0x22')](respondWithFilteredResult(_0xf18808,_0x20450b))['catch'](handleError(_0xf18808,null));};exports[_0xa733('0x40')]=function(_0x245c23,_0x2fa481){var _0x33ff8c={'raw':!![],'where':{'id':_0x245c23[_0xa733('0x41')]['id']}},_0x2296e2={};_0x2296e2[_0xa733('0x2a')]=_[_0xa733('0x2d')](db[_0xa733('0x3c')][_0xa733('0x28')]);_0x2296e2[_0xa733('0x2c')]=_[_0xa733('0x2d')](_0x245c23[_0xa733('0x2c')]);_0x2296e2[_0xa733('0x36')]=_['intersection'](_0x2296e2[_0xa733('0x2a')],_0x2296e2[_0xa733('0x2c')]);_0x33ff8c[_0xa733('0x2f')]=_[_0xa733('0x2e')](_0x2296e2[_0xa733('0x2a')],qs[_0xa733('0x30')](_0x245c23[_0xa733('0x2c')]['fields']));_0x33ff8c[_0xa733('0x2f')]=_0x33ff8c[_0xa733('0x2f')]['length']?_0x33ff8c['attributes']:_0x2296e2[_0xa733('0x2a')];if(_0x245c23[_0xa733('0x2c')][_0xa733('0x3d')]){_0x33ff8c[_0xa733('0x3e')]=[{'all':!![]}];}_0x33ff8c=_['merge']({},_0x33ff8c,_0x245c23[_0xa733('0x42')]);return db[_0xa733('0x3c')][_0xa733('0x43')](_0x33ff8c)['then'](handleEntityNotFound(_0x2fa481,null))[_0xa733('0x22')](respondWithResult(_0x2fa481,null))[_0xa733('0x44')](handleError(_0x2fa481,null));};exports[_0xa733('0x45')]=function(_0x12e40e,_0x2451c6){return db[_0xa733('0x3c')][_0xa733('0x45')](_0x12e40e[_0xa733('0x46')],{})['then'](respondWithResult(_0x2451c6,0xc9))[_0xa733('0x44')](handleError(_0x2451c6,null));};exports['update']=function(_0x5cef39,_0x1d8df5){if(_0x5cef39[_0xa733('0x46')]['id']){delete _0x5cef39[_0xa733('0x46')]['id'];}return db[_0xa733('0x3c')][_0xa733('0x43')]({'where':{'id':_0x5cef39['params']['id']}})['then'](handleEntityNotFound(_0x1d8df5,null))[_0xa733('0x22')](saveUpdates(_0x5cef39[_0xa733('0x46')],null))[_0xa733('0x22')](respondWithResult(_0x1d8df5,null))[_0xa733('0x44')](handleError(_0x1d8df5,null));};exports[_0xa733('0x47')]=function(_0x544ff8,_0x3028f0,_0x471e30){var _0x2f822b=require(_0xa733('0x48'));var _0x1e8320=![];var _0x3aab87={};if(_0x544ff8[_0xa733('0x2c')][_0xa733('0x3a')]&&_0x544ff8['query']['type']===_0xa733('0x49')){_0x3aab87['uniqueid']=_0x544ff8[_0xa733('0x41')]['id'];}else{_0x3aab87['id']=_0x544ff8[_0xa733('0x41')]['id'];}return db[_0xa733('0x3c')]['find']({'where':_0x3aab87,'attributes':['id',_0xa733('0x4a'),_0xa733('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x3028f0,null))[_0xa733('0x22')](function(_0x2db90f){if(_0x2db90f){var _0x4231bf=_0x2db90f[_0xa733('0x4a')];var _0x22526c=util[_0xa733('0x4c')](_0xa733('0x4d'),_0x4231bf);if(fs[_0xa733('0x4e')](_0x22526c)){_0x1e8320=!![];return _0x2f822b['decryptFile'](_0x22526c,_0x4231bf,config[_0xa733('0x4f')][_0xa733('0x50')])[_0xa733('0x22')](function(){return _0x2db90f;});}return _0x2db90f;}})[_0xa733('0x22')](function(_0x547857){if(_0x547857){var _0x3fa191=_0x547857[_0xa733('0x4a')];if(!fs[_0xa733('0x4e')](_0x3fa191)){throw new db[(_0xa733('0x51'))][(_0xa733('0x52'))](_0xa733('0x53'));}if(_0x547857[_0xa733('0x4b')]){return _0x3028f0['download'](_0x3fa191,_0x547857[_0xa733('0x4b')]+path['extname'](_0x3fa191),function(){if(_0x1e8320){fs[_0xa733('0x54')](_0x3fa191);}});}else{return _0x3028f0[_0xa733('0x47')](_0x3fa191,function(_0x3ce599){if(_0x1e8320){fs[_0xa733('0x54')](_0x3fa191);}});}}})[_0xa733('0x44')](function(_0x36ce76){if(_0x36ce76[_0xa733('0x55')]===_0xa733('0x53')){_0x3028f0[_0xa733('0x17')](0x194)[_0xa733('0x56')](_0xa733('0x57'));}else{return handleError(_0x3028f0,null);}});};exports['destroy']=function(_0x52271f,_0x4794c5){return db['SquareRecording']['find']({'where':{'id':_0x52271f[_0xa733('0x41')]['id']}})[_0xa733('0x22')](function(_0x2ba6d){if(_[_0xa733('0x58')](_0x2ba6d)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2ba6d;})[_0xa733('0x22')](function(_0x1eaa84){var _0x3d5b98=_0x1eaa84[_0xa733('0x4a')];logger['info'](_0xa733('0x59'),_0x3d5b98);if(!_['isNil'](_0x1eaa84[_0xa733('0x4a')])&&fs[_0xa733('0x4e')](_0x3d5b98)){logger[_0xa733('0x5a')]('File:\x20\x22'+_0x3d5b98+_0xa733('0x5b'));fs[_0xa733('0x5c')](_0x3d5b98);}_0x3d5b98=_0x3d5b98+'.cypher';if(!_[_0xa733('0x58')](_0x1eaa84[_0xa733('0x4a')])&&fs[_0xa733('0x4e')](_0x3d5b98)){logger['info'](_0xa733('0x5d')+_0x3d5b98+_0xa733('0x5b'));fs[_0xa733('0x5c')](_0x3d5b98);}return _0x1eaa84;})[_0xa733('0x22')](function(_0x1b88a7){if(!_0x1b88a7)throw new InternalError();return _0x1b88a7[_0xa733('0x21')]();})['then'](function(){_0x4794c5[_0xa733('0x17')](0xcc)[_0xa733('0x23')]();})[_0xa733('0x44')](handleError(_0x4794c5,null));};
\ No newline at end of file
index d7cfbd1..0fb318b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4325=['moment','bluebird','rimraf','../../config/environment','./squareRecording.attributes','SquareRecording','lodash','util','api'];(function(_0x2812dc,_0x53bc85){var _0x1d6a9e=function(_0x330f7b){while(--_0x330f7b){_0x2812dc['push'](_0x2812dc['shift']());}};_0x1d6a9e(++_0x53bc85);}(_0x4325,0x1da));var _0x5432=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4325[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x5432('0x0'));var util=require(_0x5432('0x1'));var logger=require('../../config/logger')(_0x5432('0x2'));var moment=require(_0x5432('0x3'));var BPromise=require(_0x5432('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5432('0x5'));var config=require(_0x5432('0x6'));var attributes=require(_0x5432('0x7'));module['exports']=function(_0x209e2e,_0xbb0075){return _0x209e2e['define'](_0x5432('0x8'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x32f4=['./squareRecording.attributes','exports','SquareRecording','square_recordings','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x32f4,0x154));var _0x432f=function(_0x153304,_0x25da33){_0x153304=_0x153304-0x0;var _0x479c46=_0x32f4[_0x153304];return _0x479c46;};'use strict';var _=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var logger=require(_0x432f('0x2'))(_0x432f('0x3'));var moment=require('moment');var BPromise=require(_0x432f('0x4'));var rp=require(_0x432f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x432f('0x6'));var config=require(_0x432f('0x7'));var attributes=require(_0x432f('0x8'));module[_0x432f('0x9')]=function(_0x2f5f03,_0x5d8cc0){return _0x2f5f03['define'](_0x432f('0xa'),attributes,{'tableName':_0x432f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 963d194..9aa9b92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af2=['CreateSquareRecording','SquareRecording','create','options','raw','debug','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SquareRecording,\x20%s,\x20%s','message','result','catch'];(function(_0x226db2,_0x1c1220){var _0xf1ac44=function(_0x4dc120){while(--_0x4dc120){_0x226db2['push'](_0x226db2['shift']());}};_0xf1ac44(++_0x1c1220);}(_0x7af2,0x1e6));var _0x27af=function(_0x407798,_0x32f5a8){_0x407798=_0x407798-0x0;var _0x1ae87b=_0x7af2[_0x407798];return _0x1ae87b;};'use strict';var _=require(_0x27af('0x0'));var util=require(_0x27af('0x1'));var moment=require('moment');var BPromise=require(_0x27af('0x2'));var rs=require(_0x27af('0x3'));var fs=require('fs');var Redis=require(_0x27af('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x27af('0x5'));var logger=require(_0x27af('0x6'))(_0x27af('0x7'));var config=require(_0x27af('0x8'));var jayson=require(_0x27af('0x9'));var client=jayson[_0x27af('0xa')][_0x27af('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x114874,_0xd53995,_0x3b40a4){return new BPromise(function(_0x280dc6,_0x12642a){return client[_0x27af('0xc')](_0x114874,_0x3b40a4)[_0x27af('0xd')](function(_0x2071da){logger[_0x27af('0xe')]('SquareRecording,\x20%s,\x20%s',_0xd53995,'request\x20sent');logger['debug'](_0x27af('0xf'),_0xd53995,_0x27af('0x10'),JSON[_0x27af('0x11')](_0x2071da));if(_0x2071da[_0x27af('0x12')]){if(_0x2071da['error'][_0x27af('0x13')]===0x1f4){logger[_0x27af('0x12')](_0x27af('0x14'),_0xd53995,_0x2071da[_0x27af('0x12')][_0x27af('0x15')]);return _0x12642a(_0x2071da[_0x27af('0x12')][_0x27af('0x15')]);}logger[_0x27af('0x12')](_0x27af('0x14'),_0xd53995,_0x2071da['error'][_0x27af('0x15')]);return _0x280dc6(_0x2071da[_0x27af('0x12')][_0x27af('0x15')]);}else{logger[_0x27af('0xe')]('SquareRecording,\x20%s,\x20%s',_0xd53995,'request\x20sent');_0x280dc6(_0x2071da[_0x27af('0x16')][_0x27af('0x15')]);}})[_0x27af('0x17')](function(_0x1db2ce){logger[_0x27af('0x12')](_0x27af('0x14'),_0xd53995,_0x1db2ce);_0x12642a(_0x1db2ce);});});}exports[_0x27af('0x18')]=function(_0x15a730){var _0x2a11fb=this;return new Promise(function(_0x2b8d75,_0x173ef5){return db[_0x27af('0x19')][_0x27af('0x1a')](_0x15a730['body'],{'raw':_0x15a730['options']?_0x15a730[_0x27af('0x1b')][_0x27af('0x1c')]===undefined?!![]:![]:!![]})[_0x27af('0xd')](function(_0x16cd40){logger['info'](_0x27af('0x18'),_0x15a730);logger[_0x27af('0x1d')](_0x27af('0x18'),_0x15a730,JSON[_0x27af('0x11')](_0x16cd40));_0x2b8d75(_0x16cd40);})[_0x27af('0x17')](function(_0x59ab9f){logger[_0x27af('0x12')]('CreateSquareRecording',_0x59ab9f[_0x27af('0x15')],_0x15a730);_0x173ef5(_0x2a11fb['error'](0x1f4,_0x59ab9f[_0x27af('0x15')]));});});};
\ No newline at end of file
+var _0xb5c2=['options','raw','CreateSquareRecording','util','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','create','body'];(function(_0x3c6741,_0x24c6f0){var _0x5d3310=function(_0x504ffb){while(--_0x504ffb){_0x3c6741['push'](_0x3c6741['shift']());}};_0x5d3310(++_0x24c6f0);}(_0xb5c2,0x15c));var _0x2b5c=function(_0x841b8c,_0x574764){_0x841b8c=_0x841b8c-0x0;var _0x1b704=_0xb5c2[_0x841b8c];return _0x1b704;};'use strict';var _=require('lodash');var util=require(_0x2b5c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2b5c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2b5c('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x2b5c('0x3'))('rpc');var config=require(_0x2b5c('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x2b5c('0x5')][_0x2b5c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3aba87,_0x8a1f98,_0x30ed58){return new BPromise(function(_0x51a11a,_0x193909){return client[_0x2b5c('0x7')](_0x3aba87,_0x30ed58)[_0x2b5c('0x8')](function(_0x122665){logger[_0x2b5c('0x9')](_0x2b5c('0xa'),_0x8a1f98,_0x2b5c('0xb'));logger[_0x2b5c('0xc')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x8a1f98,_0x2b5c('0xb'),JSON[_0x2b5c('0xd')](_0x122665));if(_0x122665[_0x2b5c('0xe')]){if(_0x122665[_0x2b5c('0xe')][_0x2b5c('0xf')]===0x1f4){logger[_0x2b5c('0xe')](_0x2b5c('0xa'),_0x8a1f98,_0x122665['error']['message']);return _0x193909(_0x122665[_0x2b5c('0xe')][_0x2b5c('0x10')]);}logger[_0x2b5c('0xe')]('SquareRecording,\x20%s,\x20%s',_0x8a1f98,_0x122665[_0x2b5c('0xe')][_0x2b5c('0x10')]);return _0x51a11a(_0x122665['error']['message']);}else{logger[_0x2b5c('0x9')](_0x2b5c('0xa'),_0x8a1f98,_0x2b5c('0xb'));_0x51a11a(_0x122665['result']['message']);}})[_0x2b5c('0x11')](function(_0x204473){logger[_0x2b5c('0xe')]('SquareRecording,\x20%s,\x20%s',_0x8a1f98,_0x204473);_0x193909(_0x204473);});});}exports['CreateSquareRecording']=function(_0x1e5a82){var _0x126546=this;return new Promise(function(_0x2faaee,_0x1db9c6){return db['SquareRecording'][_0x2b5c('0x12')](_0x1e5a82[_0x2b5c('0x13')],{'raw':_0x1e5a82[_0x2b5c('0x14')]?_0x1e5a82['options'][_0x2b5c('0x15')]===undefined?!![]:![]:!![]})[_0x2b5c('0x8')](function(_0x440432){logger[_0x2b5c('0x9')]('CreateSquareRecording',_0x1e5a82);logger[_0x2b5c('0xc')](_0x2b5c('0x16'),_0x1e5a82,JSON['stringify'](_0x440432));_0x2faaee(_0x440432);})[_0x2b5c('0x11')](function(_0xcf3573){logger[_0x2b5c('0xe')](_0x2b5c('0x16'),_0xcf3573[_0x2b5c('0x10')],_0x1e5a82);_0x1db9c6(_0x126546['error'](0x1f4,_0xcf3573[_0x2b5c('0x10')]));});});};
\ No newline at end of file
index be52278..8d82f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x3bc83f,_0x3a3b16){var _0xc0712a=function(_0x126146){while(--_0x126146){_0x3bc83f['push'](_0x3bc83f['shift']());}};_0xc0712a(++_0x3a3b16);}(_0xe706,0xa3));var _0x6e70=function(_0xb8f65,_0x5b3d4f){_0xb8f65=_0xb8f65-0x0;var _0x537221=_0xe706[_0xb8f65];return _0x537221;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 8b95fb7..58190b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5519=['BOOLEAN','STRING','DATE'];(function(_0x1ffc20,_0x443c3e){var _0x58b4ba=function(_0x1a6120){while(--_0x1a6120){_0x1ffc20['push'](_0x1ffc20['shift']());}};_0x58b4ba(++_0x443c3e);}(_0x5519,0x1c6));var _0x9551=function(_0x1fc735,_0x11db60){_0x1fc735=_0x1fc735-0x0;var _0x574095=_0x5519[_0x1fc735];return _0x574095;};'use strict';var Sequelize=require('sequelize');module['exports']={'network':{'type':Sequelize[_0x9551('0x0')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0x9551('0x0')]},'channel':{'type':Sequelize[_0x9551('0x0')]},'language':{'type':Sequelize[_0x9551('0x0')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x9551('0x0')]},'version':{'type':Sequelize[_0x9551('0x0')]},'callerid':{'type':Sequelize[_0x9551('0x0')]},'calleridname':{'type':Sequelize[_0x9551('0x0')]},'callingpres':{'type':Sequelize[_0x9551('0x0')]},'callingani2':{'type':Sequelize[_0x9551('0x0')]},'callington':{'type':Sequelize[_0x9551('0x0')]},'callingtns':{'type':Sequelize[_0x9551('0x0')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x9551('0x0')]},'extension':{'type':Sequelize[_0x9551('0x0')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x9551('0x0')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x9551('0x0')]},'joinAt':{'type':Sequelize[_0x9551('0x1')]},'leaveAt':{'type':Sequelize[_0x9551('0x1')]},'bot':{'type':Sequelize[_0x9551('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf614=['DATE','BOOLEAN','sequelize','STRING'];(function(_0x297cfe,_0x4f8949){var _0x3258f4=function(_0x42ac2d){while(--_0x42ac2d){_0x297cfe['push'](_0x297cfe['shift']());}};_0x3258f4(++_0x4f8949);}(_0xf614,0x152));var _0x4f61=function(_0x53afe9,_0x2c9f40){_0x53afe9=_0x53afe9-0x0;var _0x396396=_0xf614[_0x53afe9];return _0x396396;};'use strict';var Sequelize=require(_0x4f61('0x0'));module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0x4f61('0x1')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x4f61('0x1')]},'uniqueid':{'type':Sequelize[_0x4f61('0x1')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x4f61('0x1')]},'calleridname':{'type':Sequelize[_0x4f61('0x1')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x4f61('0x1')]},'callington':{'type':Sequelize[_0x4f61('0x1')]},'callingtns':{'type':Sequelize[_0x4f61('0x1')]},'dnid':{'type':Sequelize[_0x4f61('0x1')]},'rdnis':{'type':Sequelize[_0x4f61('0x1')]},'context':{'type':Sequelize[_0x4f61('0x1')]},'extension':{'type':Sequelize[_0x4f61('0x1')]},'priority':{'type':Sequelize[_0x4f61('0x1')]},'enhanced':{'type':Sequelize[_0x4f61('0x1')]},'accountcode':{'type':Sequelize[_0x4f61('0x1')]},'threadid':{'type':Sequelize[_0x4f61('0x1')]},'project_name':{'type':Sequelize[_0x4f61('0x1')]},'joinAt':{'type':Sequelize[_0x4f61('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x4f61('0x3')],'defaultValue':![]}};
\ No newline at end of file
index e5460a7..67ef9d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x469b=['save','update','then','destroy','sendStatus','error','stack','name','send','index','SquareReport','rawAttributes','fieldName','type','key','model','map','keys','intersection','attributes','fields','query','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','findAll','catch','params','length','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','count','offset','apply','reject'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x469b,0x151));var _0xb469=function(_0x15ec4e,_0x40b7e0){_0x15ec4e=_0x15ec4e-0x0;var _0xb5e5dd=_0x469b[_0x15ec4e];return _0xb5e5dd;};'use strict';var emlformat=require(_0xb469('0x0'));var rimraf=require(_0xb469('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb469('0x2'));var rp=require(_0xb469('0x3'));var moment=require('moment');var BPromise=require(_0xb469('0x4'));var Mustache=require(_0xb469('0x5'));var util=require('util');var path=require(_0xb469('0x6'));var sox=require(_0xb469('0x7'));var csv=require(_0xb469('0x8'));var ejs=require(_0xb469('0x9'));var fs=require('fs');var fs_extra=require(_0xb469('0xa'));var _=require(_0xb469('0xb'));var squel=require('squel');var crypto=require(_0xb469('0xc'));var jsforce=require(_0xb469('0xd'));var deskjs=require(_0xb469('0xe'));var toCsv=require(_0xb469('0x8'));var querystring=require(_0xb469('0xf'));var Papa=require(_0xb469('0x10'));var Redis=require(_0xb469('0x11'));var authService=require(_0xb469('0x12'));var qs=require(_0xb469('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb469('0x14'))('api');var utils=require(_0xb469('0x15'));var config=require(_0xb469('0x16'));var licenseUtil=require(_0xb469('0x17'));var db=require(_0xb469('0x18'))['db'];function respondWithStatusCode(_0xd77e5e,_0x44e067){_0x44e067=_0x44e067||0xcc;return function(_0x5bad77){if(_0x5bad77){return _0xd77e5e['sendStatus'](_0x44e067);}return _0xd77e5e[_0xb469('0x19')](_0x44e067)[_0xb469('0x1a')]();};}function respondWithResult(_0x1b7a47,_0x50286f){_0x50286f=_0x50286f||0xc8;return function(_0xe06a87){if(_0xe06a87){return _0x1b7a47[_0xb469('0x19')](_0x50286f)[_0xb469('0x1b')](_0xe06a87);}};}function respondWithFilteredResult(_0x5d5444,_0x44e176){return function(_0x2caf83){if(_0x2caf83){var _0x1c1464=typeof _0x44e176['offset']==='undefined'&&typeof _0x44e176[_0xb469('0x1c')]==='undefined';var _0x222844=_0x2caf83[_0xb469('0x1d')];var _0x3b0b22=_0x1c1464?0x0:_0x44e176[_0xb469('0x1e')];var _0x406f24=_0x1c1464?_0x2caf83['count']:_0x44e176[_0xb469('0x1e')]+_0x44e176['limit'];var _0x1cd072;if(_0x406f24>=_0x222844){_0x406f24=_0x222844;_0x1cd072=0xc8;}else{_0x1cd072=0xce;}_0x5d5444[_0xb469('0x19')](_0x1cd072);return _0x5d5444['set']('Content-Range',_0x3b0b22+'-'+_0x406f24+'/'+_0x222844)[_0xb469('0x1b')](_0x2caf83);}return null;};}function patchUpdates(_0xd6f7d3){return function(_0x3a7a2f){try{jsonpatch[_0xb469('0x1f')](_0x3a7a2f,_0xd6f7d3,!![]);}catch(_0x108209){return BPromise[_0xb469('0x20')](_0x108209);}return _0x3a7a2f[_0xb469('0x21')]();};}function saveUpdates(_0x45a2dd,_0x15fbbc){return function(_0x269638){if(_0x269638){return _0x269638[_0xb469('0x22')](_0x45a2dd)[_0xb469('0x23')](function(_0x47ab34){return _0x47ab34;});}return null;};}function removeEntity(_0x1c586c,_0x5517b3){return function(_0x530a0b){if(_0x530a0b){return _0x530a0b[_0xb469('0x24')]()[_0xb469('0x23')](function(){_0x1c586c['status'](0xcc)[_0xb469('0x1a')]();});}};}function handleEntityNotFound(_0x8a5c1b,_0xe5d5b9){return function(_0x29b08d){if(!_0x29b08d){_0x8a5c1b[_0xb469('0x25')](0x194);}return _0x29b08d;};}function handleError(_0x413db9,_0x2eedd1){_0x2eedd1=_0x2eedd1||0x1f4;return function(_0x35c4ff){logger[_0xb469('0x26')](_0x35c4ff[_0xb469('0x27')]);if(_0x35c4ff[_0xb469('0x28')]){delete _0x35c4ff['name'];}_0x413db9[_0xb469('0x19')](_0x2eedd1)[_0xb469('0x29')](_0x35c4ff);};}exports[_0xb469('0x2a')]=function(_0x37ec8b,_0x23a68b){var _0x1feaff={},_0x5f0c3c={},_0x141c5e={'count':0x0,'rows':[]};var _0xc18470=_['map'](db[_0xb469('0x2b')][_0xb469('0x2c')],function(_0x5ef09c){return{'name':_0x5ef09c[_0xb469('0x2d')],'type':_0x5ef09c[_0xb469('0x2e')][_0xb469('0x2f')]};});_0x5f0c3c[_0xb469('0x30')]=_[_0xb469('0x31')](_0xc18470,_0xb469('0x28'));_0x5f0c3c['query']=_[_0xb469('0x32')](_0x37ec8b['query']);_0x5f0c3c['filters']=_[_0xb469('0x33')](_0x5f0c3c[_0xb469('0x30')],_0x5f0c3c['query']);_0x1feaff[_0xb469('0x34')]=_[_0xb469('0x33')](_0x5f0c3c['model'],qs[_0xb469('0x35')](_0x37ec8b[_0xb469('0x36')][_0xb469('0x35')]));_0x1feaff[_0xb469('0x34')]=_0x1feaff[_0xb469('0x34')]['length']?_0x1feaff[_0xb469('0x34')]:_0x5f0c3c[_0xb469('0x30')];if(!_0x37ec8b[_0xb469('0x36')][_0xb469('0x37')](_0xb469('0x38'))){_0x1feaff[_0xb469('0x1c')]=qs['limit'](_0x37ec8b[_0xb469('0x36')]['limit']);_0x1feaff['offset']=qs['offset'](_0x37ec8b['query'][_0xb469('0x1e')]);}_0x1feaff['order']=qs[_0xb469('0x39')](_0x37ec8b['query'][_0xb469('0x39')]);_0x1feaff[_0xb469('0x3a')]=qs[_0xb469('0x3b')](_[_0xb469('0x3c')](_0x37ec8b[_0xb469('0x36')],_0x5f0c3c[_0xb469('0x3b')]),_0xc18470);if(_0x37ec8b[_0xb469('0x36')][_0xb469('0x3d')]){_0x1feaff[_0xb469('0x3a')]=_['merge'](_0x1feaff['where'],{'$or':_['map'](_0xc18470,function(_0x3335e8){if(_0x3335e8[_0xb469('0x2e')]!==_0xb469('0x3e')){var _0x479406={};_0x479406[_0x3335e8[_0xb469('0x28')]]={'$like':'%'+_0x37ec8b[_0xb469('0x36')][_0xb469('0x3d')]+'%'};return _0x479406;}})});}_0x1feaff=_['merge']({},_0x1feaff,_0x37ec8b[_0xb469('0x3f')]);var _0xd44e59={'where':_0x1feaff['where']};return db[_0xb469('0x2b')]['count'](_0xd44e59)['then'](function(_0x39e6d2){_0x141c5e[_0xb469('0x1d')]=_0x39e6d2;if(_0x37ec8b['query'][_0xb469('0x40')]){_0x1feaff[_0xb469('0x41')]=[{'all':!![]}];}return db[_0xb469('0x2b')][_0xb469('0x42')](_0x1feaff);})[_0xb469('0x23')](function(_0x49835d){_0x141c5e['rows']=_0x49835d;return _0x141c5e;})[_0xb469('0x23')](respondWithFilteredResult(_0x23a68b,_0x1feaff))[_0xb469('0x43')](handleError(_0x23a68b,null));};exports['show']=function(_0x135bea,_0x17826b){var _0x4afb0f={'raw':!![],'where':{'id':_0x135bea[_0xb469('0x44')]['id']}},_0x1d3dc0={};_0x1d3dc0[_0xb469('0x30')]=_[_0xb469('0x32')](db[_0xb469('0x2b')]['rawAttributes']);_0x1d3dc0[_0xb469('0x36')]=_[_0xb469('0x32')](_0x135bea[_0xb469('0x36')]);_0x1d3dc0[_0xb469('0x3b')]=_[_0xb469('0x33')](_0x1d3dc0[_0xb469('0x30')],_0x1d3dc0[_0xb469('0x36')]);_0x4afb0f[_0xb469('0x34')]=_[_0xb469('0x33')](_0x1d3dc0[_0xb469('0x30')],qs[_0xb469('0x35')](_0x135bea[_0xb469('0x36')][_0xb469('0x35')]));_0x4afb0f['attributes']=_0x4afb0f[_0xb469('0x34')][_0xb469('0x45')]?_0x4afb0f[_0xb469('0x34')]:_0x1d3dc0[_0xb469('0x30')];if(_0x135bea['query'][_0xb469('0x40')]){_0x4afb0f[_0xb469('0x41')]=[{'all':!![]}];}_0x4afb0f=_['merge']({},_0x4afb0f,_0x135bea[_0xb469('0x3f')]);return db[_0xb469('0x2b')][_0xb469('0x46')](_0x4afb0f)[_0xb469('0x23')](handleEntityNotFound(_0x17826b,null))[_0xb469('0x23')](respondWithResult(_0x17826b,null))[_0xb469('0x43')](handleError(_0x17826b,null));};exports[_0xb469('0x47')]=function(_0x3a7273,_0x8de82a){return db[_0xb469('0x2b')]['create'](_0x3a7273[_0xb469('0x48')],{})['then'](respondWithResult(_0x8de82a,0xc9))[_0xb469('0x43')](handleError(_0x8de82a,null));};exports['update']=function(_0x398013,_0x46f6cb){if(_0x398013['body']['id']){delete _0x398013[_0xb469('0x48')]['id'];}return db[_0xb469('0x2b')][_0xb469('0x46')]({'where':{'id':_0x398013[_0xb469('0x44')]['id']}})[_0xb469('0x23')](handleEntityNotFound(_0x46f6cb,null))[_0xb469('0x23')](saveUpdates(_0x398013[_0xb469('0x48')],null))['then'](respondWithResult(_0x46f6cb,null))['catch'](handleError(_0x46f6cb,null));};exports['destroy']=function(_0x1c5ae7,_0x25a72f){return db[_0xb469('0x2b')][_0xb469('0x46')]({'where':{'id':_0x1c5ae7[_0xb469('0x44')]['id']}})[_0xb469('0x23')](handleEntityNotFound(_0x25a72f,null))[_0xb469('0x23')](removeEntity(_0x25a72f,null))[_0xb469('0x43')](handleError(_0x25a72f,null));};exports[_0xb469('0x49')]=function(_0x36c889,_0x31bfe0){return db[_0xb469('0x2b')][_0xb469('0x49')]()[_0xb469('0x23')](respondWithResult(_0x31bfe0,null))[_0xb469('0x43')](handleError(_0x31bfe0,null));};
\ No newline at end of file
+var _0x2148=['body','describe','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','SquareReport','fieldName','type','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','params','merge','find','catch','create'];(function(_0x2eb35d,_0x4a7a45){var _0x1f9854=function(_0x5eb6f9){while(--_0x5eb6f9){_0x2eb35d['push'](_0x2eb35d['shift']());}};_0x1f9854(++_0x4a7a45);}(_0x2148,0x1ca));var _0x8214=function(_0x490be3,_0xf0fca3){_0x490be3=_0x490be3-0x0;var _0x3f5140=_0x2148[_0x490be3];return _0x3f5140;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8214('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8214('0x1'));var rp=require(_0x8214('0x2'));var moment=require(_0x8214('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8214('0x4'));var util=require('util');var path=require(_0x8214('0x5'));var sox=require(_0x8214('0x6'));var csv=require('to-csv');var ejs=require(_0x8214('0x7'));var fs=require('fs');var fs_extra=require(_0x8214('0x8'));var _=require(_0x8214('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8214('0xa'));var toCsv=require(_0x8214('0xb'));var querystring=require(_0x8214('0xc'));var Papa=require(_0x8214('0xd'));var Redis=require(_0x8214('0xe'));var authService=require(_0x8214('0xf'));var qs=require(_0x8214('0x10'));var as=require(_0x8214('0x11'));var hardwareService=require(_0x8214('0x12'));var logger=require(_0x8214('0x13'))(_0x8214('0x14'));var utils=require(_0x8214('0x15'));var config=require(_0x8214('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8214('0x17'))['db'];function respondWithStatusCode(_0x5781ad,_0x1ded19){_0x1ded19=_0x1ded19||0xcc;return function(_0x4d06d1){if(_0x4d06d1){return _0x5781ad['sendStatus'](_0x1ded19);}return _0x5781ad['status'](_0x1ded19)[_0x8214('0x18')]();};}function respondWithResult(_0x524625,_0x165e01){_0x165e01=_0x165e01||0xc8;return function(_0x5a8241){if(_0x5a8241){return _0x524625[_0x8214('0x19')](_0x165e01)[_0x8214('0x1a')](_0x5a8241);}};}function respondWithFilteredResult(_0x3d7e80,_0x3b9c52){return function(_0x13cc17){if(_0x13cc17){var _0x1a3d92=typeof _0x3b9c52[_0x8214('0x1b')]==='undefined'&&typeof _0x3b9c52[_0x8214('0x1c')]===_0x8214('0x1d');var _0x423158=_0x13cc17[_0x8214('0x1e')];var _0x5496b6=_0x1a3d92?0x0:_0x3b9c52['offset'];var _0x32bbe8=_0x1a3d92?_0x13cc17[_0x8214('0x1e')]:_0x3b9c52[_0x8214('0x1b')]+_0x3b9c52[_0x8214('0x1c')];var _0x108f35;if(_0x32bbe8>=_0x423158){_0x32bbe8=_0x423158;_0x108f35=0xc8;}else{_0x108f35=0xce;}_0x3d7e80[_0x8214('0x19')](_0x108f35);return _0x3d7e80[_0x8214('0x1f')](_0x8214('0x20'),_0x5496b6+'-'+_0x32bbe8+'/'+_0x423158)[_0x8214('0x1a')](_0x13cc17);}return null;};}function patchUpdates(_0x501545){return function(_0x18e3b2){try{jsonpatch[_0x8214('0x21')](_0x18e3b2,_0x501545,!![]);}catch(_0x3af544){return BPromise[_0x8214('0x22')](_0x3af544);}return _0x18e3b2[_0x8214('0x23')]();};}function saveUpdates(_0x5f232a,_0x1ea6a4){return function(_0x442838){if(_0x442838){return _0x442838[_0x8214('0x24')](_0x5f232a)[_0x8214('0x25')](function(_0xc33147){return _0xc33147;});}return null;};}function removeEntity(_0x38dfe5,_0x5d9178){return function(_0x3ed53d){if(_0x3ed53d){return _0x3ed53d[_0x8214('0x26')]()['then'](function(){_0x38dfe5[_0x8214('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e2100,_0xebe852){return function(_0x341378){if(!_0x341378){_0x2e2100[_0x8214('0x27')](0x194);}return _0x341378;};}function handleError(_0x5178e0,_0x1aa88a){_0x1aa88a=_0x1aa88a||0x1f4;return function(_0xde081d){logger[_0x8214('0x28')](_0xde081d[_0x8214('0x29')]);if(_0xde081d[_0x8214('0x2a')]){delete _0xde081d[_0x8214('0x2a')];}_0x5178e0[_0x8214('0x19')](_0x1aa88a)['send'](_0xde081d);};}exports[_0x8214('0x2b')]=function(_0x1dead2,_0x2d0916){var _0x4eb03a={},_0x398f19={},_0x4ac817={'count':0x0,'rows':[]};var _0x374478=_['map'](db[_0x8214('0x2c')]['rawAttributes'],function(_0x1cc162){return{'name':_0x1cc162[_0x8214('0x2d')],'type':_0x1cc162[_0x8214('0x2e')]['key']};});_0x398f19['model']=_[_0x8214('0x2f')](_0x374478,_0x8214('0x2a'));_0x398f19[_0x8214('0x30')]=_[_0x8214('0x31')](_0x1dead2[_0x8214('0x30')]);_0x398f19['filters']=_[_0x8214('0x32')](_0x398f19[_0x8214('0x33')],_0x398f19['query']);_0x4eb03a[_0x8214('0x34')]=_['intersection'](_0x398f19[_0x8214('0x33')],qs[_0x8214('0x35')](_0x1dead2[_0x8214('0x30')]['fields']));_0x4eb03a[_0x8214('0x34')]=_0x4eb03a[_0x8214('0x34')][_0x8214('0x36')]?_0x4eb03a[_0x8214('0x34')]:_0x398f19['model'];if(!_0x1dead2[_0x8214('0x30')][_0x8214('0x37')](_0x8214('0x38'))){_0x4eb03a[_0x8214('0x1c')]=qs['limit'](_0x1dead2[_0x8214('0x30')][_0x8214('0x1c')]);_0x4eb03a[_0x8214('0x1b')]=qs['offset'](_0x1dead2[_0x8214('0x30')][_0x8214('0x1b')]);}_0x4eb03a['order']=qs[_0x8214('0x39')](_0x1dead2[_0x8214('0x30')][_0x8214('0x39')]);_0x4eb03a[_0x8214('0x3a')]=qs['filters'](_[_0x8214('0x3b')](_0x1dead2[_0x8214('0x30')],_0x398f19[_0x8214('0x3c')]),_0x374478);if(_0x1dead2[_0x8214('0x30')][_0x8214('0x3d')]){_0x4eb03a[_0x8214('0x3a')]=_['merge'](_0x4eb03a['where'],{'$or':_[_0x8214('0x2f')](_0x374478,function(_0x5a996e){if(_0x5a996e[_0x8214('0x2e')]!==_0x8214('0x3e')){var _0x2e097e={};_0x2e097e[_0x5a996e[_0x8214('0x2a')]]={'$like':'%'+_0x1dead2['query'][_0x8214('0x3d')]+'%'};return _0x2e097e;}})});}_0x4eb03a=_['merge']({},_0x4eb03a,_0x1dead2[_0x8214('0x3f')]);var _0x197eba={'where':_0x4eb03a[_0x8214('0x3a')]};return db[_0x8214('0x2c')][_0x8214('0x1e')](_0x197eba)[_0x8214('0x25')](function(_0x27c99e){_0x4ac817[_0x8214('0x1e')]=_0x27c99e;if(_0x1dead2[_0x8214('0x30')][_0x8214('0x40')]){_0x4eb03a[_0x8214('0x41')]=[{'all':!![]}];}return db[_0x8214('0x2c')][_0x8214('0x42')](_0x4eb03a);})[_0x8214('0x25')](function(_0x1cb7f2){_0x4ac817[_0x8214('0x43')]=_0x1cb7f2;return _0x4ac817;})[_0x8214('0x25')](respondWithFilteredResult(_0x2d0916,_0x4eb03a))['catch'](handleError(_0x2d0916,null));};exports[_0x8214('0x44')]=function(_0x48e0a2,_0xbfe59a){var _0x24c57e={'raw':!![],'where':{'id':_0x48e0a2[_0x8214('0x45')]['id']}},_0x2932e9={};_0x2932e9[_0x8214('0x33')]=_[_0x8214('0x31')](db[_0x8214('0x2c')]['rawAttributes']);_0x2932e9['query']=_[_0x8214('0x31')](_0x48e0a2['query']);_0x2932e9[_0x8214('0x3c')]=_[_0x8214('0x32')](_0x2932e9[_0x8214('0x33')],_0x2932e9[_0x8214('0x30')]);_0x24c57e['attributes']=_[_0x8214('0x32')](_0x2932e9[_0x8214('0x33')],qs[_0x8214('0x35')](_0x48e0a2[_0x8214('0x30')][_0x8214('0x35')]));_0x24c57e[_0x8214('0x34')]=_0x24c57e[_0x8214('0x34')][_0x8214('0x36')]?_0x24c57e[_0x8214('0x34')]:_0x2932e9['model'];if(_0x48e0a2[_0x8214('0x30')][_0x8214('0x40')]){_0x24c57e[_0x8214('0x41')]=[{'all':!![]}];}_0x24c57e=_[_0x8214('0x46')]({},_0x24c57e,_0x48e0a2[_0x8214('0x3f')]);return db[_0x8214('0x2c')][_0x8214('0x47')](_0x24c57e)['then'](handleEntityNotFound(_0xbfe59a,null))[_0x8214('0x25')](respondWithResult(_0xbfe59a,null))[_0x8214('0x48')](handleError(_0xbfe59a,null));};exports[_0x8214('0x49')]=function(_0x130865,_0x1a32d3){return db[_0x8214('0x2c')][_0x8214('0x49')](_0x130865[_0x8214('0x4a')],{})['then'](respondWithResult(_0x1a32d3,0xc9))[_0x8214('0x48')](handleError(_0x1a32d3,null));};exports[_0x8214('0x24')]=function(_0x25cc99,_0x26b1de){if(_0x25cc99['body']['id']){delete _0x25cc99['body']['id'];}return db[_0x8214('0x2c')][_0x8214('0x47')]({'where':{'id':_0x25cc99[_0x8214('0x45')]['id']}})[_0x8214('0x25')](handleEntityNotFound(_0x26b1de,null))[_0x8214('0x25')](saveUpdates(_0x25cc99['body'],null))[_0x8214('0x25')](respondWithResult(_0x26b1de,null))['catch'](handleError(_0x26b1de,null));};exports['destroy']=function(_0x1edadc,_0x421de7){return db['SquareReport'][_0x8214('0x47')]({'where':{'id':_0x1edadc[_0x8214('0x45')]['id']}})[_0x8214('0x25')](handleEntityNotFound(_0x421de7,null))[_0x8214('0x25')](removeEntity(_0x421de7,null))[_0x8214('0x48')](handleError(_0x421de7,null));};exports[_0x8214('0x4b')]=function(_0x3e9d7c,_0x24fa43){return db[_0x8214('0x2c')][_0x8214('0x4b')]()['then'](respondWithResult(_0x24fa43,null))[_0x8214('0x48')](handleError(_0x24fa43,null));};
\ No newline at end of file
index 4888f73..85f27e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf96e=['leaveAt','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./squareReport.attributes','exports','define','report_square','uid_pname','uniqueid'];(function(_0x13c38c,_0x558a11){var _0x9fb397=function(_0x20ca49){while(--_0x20ca49){_0x13c38c['push'](_0x13c38c['shift']());}};_0x9fb397(++_0x558a11);}(_0xf96e,0x196));var _0xef96=function(_0x25f006,_0x2b80aa){_0x25f006=_0x25f006-0x0;var _0x2716fb=_0xf96e[_0x25f006];return _0x2716fb;};'use strict';var _=require(_0xef96('0x0'));var util=require(_0xef96('0x1'));var logger=require(_0xef96('0x2'))(_0xef96('0x3'));var moment=require(_0xef96('0x4'));var BPromise=require(_0xef96('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xef96('0x6'));var rimraf=require('rimraf');var config=require(_0xef96('0x7'));var attributes=require(_0xef96('0x8'));module[_0xef96('0x9')]=function(_0x4f20d4,_0x173825){return _0x4f20d4[_0xef96('0xa')]('SquareReport',attributes,{'tableName':_0xef96('0xb'),'paranoid':![],'indexes':[{'name':_0xef96('0xc'),'fields':[_0xef96('0xd'),'project_name']},{'name':'leaveAt','fields':[_0xef96('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb8c=['uniqueid','project_name','leaveAt','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname'];(function(_0x21b246,_0x516fb4){var _0x1dc70a=function(_0x39deaa){while(--_0x39deaa){_0x21b246['push'](_0x21b246['shift']());}};_0x1dc70a(++_0x516fb4);}(_0xcb8c,0x1a3));var _0xccb8=function(_0x2c74b2,_0x28a9cb){_0x2c74b2=_0x2c74b2-0x0;var _0x39502b=_0xcb8c[_0x2c74b2];return _0x39502b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xccb8('0x0'))('api');var moment=require(_0xccb8('0x1'));var BPromise=require(_0xccb8('0x2'));var rp=require(_0xccb8('0x3'));var fs=require('fs');var path=require(_0xccb8('0x4'));var rimraf=require(_0xccb8('0x5'));var config=require(_0xccb8('0x6'));var attributes=require(_0xccb8('0x7'));module[_0xccb8('0x8')]=function(_0x1161ca,_0x4d25c8){return _0x1161ca[_0xccb8('0x9')](_0xccb8('0xa'),attributes,{'tableName':_0xccb8('0xb'),'paranoid':![],'indexes':[{'name':_0xccb8('0xc'),'fields':[_0xccb8('0xd'),_0xccb8('0xe')]},{'name':_0xccb8('0xf'),'fields':[_0xccb8('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index a7dacfb..c80e585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b19=['rpc','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateSquareReport','create','options','raw','catch','UpdateSquareReport','SquareReport','body','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3119e0,_0x5ed5f8){var _0xb39f77=function(_0x24802c){while(--_0x24802c){_0x3119e0['push'](_0x3119e0['shift']());}};_0xb39f77(++_0x5ed5f8);}(_0x2b19,0xc3));var _0x92b1=function(_0x21fa5e,_0x1c73ff){_0x21fa5e=_0x21fa5e-0x0;var _0x582fdd=_0x2b19[_0x21fa5e];return _0x582fdd;};'use strict';var _=require(_0x92b1('0x0'));var util=require(_0x92b1('0x1'));var moment=require(_0x92b1('0x2'));var BPromise=require(_0x92b1('0x3'));var rs=require(_0x92b1('0x4'));var fs=require('fs');var Redis=require(_0x92b1('0x5'));var db=require(_0x92b1('0x6'))['db'];var utils=require(_0x92b1('0x7'));var logger=require(_0x92b1('0x8'))(_0x92b1('0x9'));var config=require('../../config/environment');var jayson=require(_0x92b1('0xa'));var client=jayson[_0x92b1('0xb')][_0x92b1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d224a,_0x502748,_0x35d709){return new BPromise(function(_0x36cf8b,_0x4c4167){return client[_0x92b1('0xd')](_0x2d224a,_0x35d709)[_0x92b1('0xe')](function(_0x67eb19){logger[_0x92b1('0xf')](_0x92b1('0x10'),_0x502748,_0x92b1('0x11'));logger[_0x92b1('0x12')](_0x92b1('0x13'),_0x502748,_0x92b1('0x11'),JSON[_0x92b1('0x14')](_0x67eb19));if(_0x67eb19[_0x92b1('0x15')]){if(_0x67eb19[_0x92b1('0x15')][_0x92b1('0x16')]===0x1f4){logger[_0x92b1('0x15')](_0x92b1('0x10'),_0x502748,_0x67eb19[_0x92b1('0x15')]['message']);return _0x4c4167(_0x67eb19[_0x92b1('0x15')]['message']);}logger[_0x92b1('0x15')](_0x92b1('0x10'),_0x502748,_0x67eb19[_0x92b1('0x15')][_0x92b1('0x17')]);return _0x36cf8b(_0x67eb19[_0x92b1('0x15')]['message']);}else{logger[_0x92b1('0xf')](_0x92b1('0x10'),_0x502748,_0x92b1('0x11'));_0x36cf8b(_0x67eb19[_0x92b1('0x18')][_0x92b1('0x17')]);}})['catch'](function(_0x3c261c){logger[_0x92b1('0x15')]('SquareReport,\x20%s,\x20%s',_0x502748,_0x3c261c);_0x4c4167(_0x3c261c);});});}exports[_0x92b1('0x19')]=function(_0x5f2cf5){var _0x348563=this;return new Promise(function(_0x24451c,_0x434b30){return db['SquareReport'][_0x92b1('0x1a')](_0x5f2cf5['body'],{'raw':_0x5f2cf5[_0x92b1('0x1b')]?_0x5f2cf5[_0x92b1('0x1b')][_0x92b1('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x1c2b0a){logger[_0x92b1('0xf')](_0x92b1('0x19'),_0x5f2cf5);logger[_0x92b1('0x12')](_0x92b1('0x19'),_0x5f2cf5,JSON['stringify'](_0x1c2b0a));_0x24451c(_0x1c2b0a);})[_0x92b1('0x1d')](function(_0x3961a0){logger[_0x92b1('0x15')]('CreateSquareReport',_0x3961a0[_0x92b1('0x17')],_0x5f2cf5);_0x434b30(_0x348563[_0x92b1('0x15')](0x1f4,_0x3961a0[_0x92b1('0x17')]));});});};exports[_0x92b1('0x1e')]=function(_0x46b819){var _0x2b7851=this;return new Promise(function(_0x303244,_0x2e644a){return db[_0x92b1('0x1f')]['update'](_0x46b819[_0x92b1('0x20')],{'raw':_0x46b819[_0x92b1('0x1b')]?_0x46b819[_0x92b1('0x1b')][_0x92b1('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x46b819[_0x92b1('0x1b')]?_0x46b819[_0x92b1('0x1b')][_0x92b1('0x21')]||null:null,'attributes':_0x46b819[_0x92b1('0x1b')]?_0x46b819[_0x92b1('0x1b')]['attributes']||null:null,'limit':_0x46b819[_0x92b1('0x1b')]?_0x46b819[_0x92b1('0x1b')]['limit']||null:null})[_0x92b1('0xe')](function(_0x7d9ff5){logger['info'](_0x92b1('0x1e'),_0x46b819);logger['debug'](_0x92b1('0x1e'),_0x46b819,JSON[_0x92b1('0x14')](_0x7d9ff5));_0x303244(_0x7d9ff5);})[_0x92b1('0x1d')](function(_0x388acc){logger[_0x92b1('0x15')](_0x92b1('0x1e'),_0x388acc['message'],_0x46b819);_0x2e644a(_0x2b7851[_0x92b1('0x15')](0x1f4,_0x388acc[_0x92b1('0x17')]));});});};
\ No newline at end of file
+var _0x54ef=['then','CreateSquareReport','UpdateSquareReport','where','attributes','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareReport,\x20%s,\x20%s','message','result','catch','SquareReport','create','body','options','raw'];(function(_0x591cfd,_0x501204){var _0x4d0100=function(_0xb9ff0c){while(--_0xb9ff0c){_0x591cfd['push'](_0x591cfd['shift']());}};_0x4d0100(++_0x501204);}(_0x54ef,0xd7));var _0xf54e=function(_0x1799d2,_0x4d0d18){_0x1799d2=_0x1799d2-0x0;var _0x440716=_0x54ef[_0x1799d2];return _0x440716;};'use strict';var _=require('lodash');var util=require(_0xf54e('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf54e('0x1'));var db=require(_0xf54e('0x2'))['db'];var utils=require(_0xf54e('0x3'));var logger=require(_0xf54e('0x4'))(_0xf54e('0x5'));var config=require(_0xf54e('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xf54e('0x7')][_0xf54e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x29179e,_0x11ccfb,_0x3f6f36){return new BPromise(function(_0x2c26ed,_0x351e0f){return client['request'](_0x29179e,_0x3f6f36)['then'](function(_0x2ca1f2){logger[_0xf54e('0x9')]('SquareReport,\x20%s,\x20%s',_0x11ccfb,_0xf54e('0xa'));logger[_0xf54e('0xb')](_0xf54e('0xc'),_0x11ccfb,_0xf54e('0xa'),JSON[_0xf54e('0xd')](_0x2ca1f2));if(_0x2ca1f2[_0xf54e('0xe')]){if(_0x2ca1f2[_0xf54e('0xe')][_0xf54e('0xf')]===0x1f4){logger[_0xf54e('0xe')](_0xf54e('0x10'),_0x11ccfb,_0x2ca1f2[_0xf54e('0xe')][_0xf54e('0x11')]);return _0x351e0f(_0x2ca1f2[_0xf54e('0xe')][_0xf54e('0x11')]);}logger[_0xf54e('0xe')]('SquareReport,\x20%s,\x20%s',_0x11ccfb,_0x2ca1f2['error'][_0xf54e('0x11')]);return _0x2c26ed(_0x2ca1f2['error'][_0xf54e('0x11')]);}else{logger[_0xf54e('0x9')]('SquareReport,\x20%s,\x20%s',_0x11ccfb,_0xf54e('0xa'));_0x2c26ed(_0x2ca1f2[_0xf54e('0x12')]['message']);}})[_0xf54e('0x13')](function(_0x27ae39){logger['error'](_0xf54e('0x10'),_0x11ccfb,_0x27ae39);_0x351e0f(_0x27ae39);});});}exports['CreateSquareReport']=function(_0x287656){var _0x2bbcbe=this;return new Promise(function(_0x14a894,_0x3e4fbf){return db[_0xf54e('0x14')][_0xf54e('0x15')](_0x287656[_0xf54e('0x16')],{'raw':_0x287656[_0xf54e('0x17')]?_0x287656[_0xf54e('0x17')][_0xf54e('0x18')]===undefined?!![]:![]:!![]})[_0xf54e('0x19')](function(_0x10102f){logger['info'](_0xf54e('0x1a'),_0x287656);logger[_0xf54e('0xb')]('CreateSquareReport',_0x287656,JSON['stringify'](_0x10102f));_0x14a894(_0x10102f);})[_0xf54e('0x13')](function(_0x1835fe){logger[_0xf54e('0xe')]('CreateSquareReport',_0x1835fe[_0xf54e('0x11')],_0x287656);_0x3e4fbf(_0x2bbcbe[_0xf54e('0xe')](0x1f4,_0x1835fe['message']));});});};exports[_0xf54e('0x1b')]=function(_0x1f0e68){var _0x2ab365=this;return new Promise(function(_0x4ee06e,_0x17ffea){return db[_0xf54e('0x14')]['update'](_0x1f0e68[_0xf54e('0x16')],{'raw':_0x1f0e68[_0xf54e('0x17')]?_0x1f0e68['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f0e68[_0xf54e('0x17')]?_0x1f0e68[_0xf54e('0x17')][_0xf54e('0x1c')]||null:null,'attributes':_0x1f0e68[_0xf54e('0x17')]?_0x1f0e68[_0xf54e('0x17')][_0xf54e('0x1d')]||null:null,'limit':_0x1f0e68['options']?_0x1f0e68[_0xf54e('0x17')]['limit']||null:null})[_0xf54e('0x19')](function(_0xf109aa){logger[_0xf54e('0x9')]('UpdateSquareReport',_0x1f0e68);logger[_0xf54e('0xb')]('UpdateSquareReport',_0x1f0e68,JSON[_0xf54e('0xd')](_0xf109aa));_0x4ee06e(_0xf109aa);})['catch'](function(_0x18bc5e){logger[_0xf54e('0xe')](_0xf54e('0x1b'),_0x18bc5e[_0xf54e('0x11')],_0x1f0e68);_0x17ffea(_0x2ab365[_0xf54e('0xe')](0x1f4,_0x18bc5e['message']));});});};
\ No newline at end of file
index 8bd863d..727aef1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d9a=['get','isAuthenticated','index','describe','show','post','create','put','/:id','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller'];(function(_0x38b124,_0x53c5a1){var _0x4c0cd2=function(_0x738c59){while(--_0x738c59){_0x38b124['push'](_0x38b124['shift']());}};_0x4c0cd2(++_0x53c5a1);}(_0x0d9a,0xc9));var _0xa0d9=function(_0x54ae9d,_0x3bbf58){_0x54ae9d=_0x54ae9d-0x0;var _0x3b33da=_0x0d9a[_0x54ae9d];return _0x3b33da;};'use strict';var multer=require('multer');var util=require(_0xa0d9('0x0'));var path=require(_0xa0d9('0x1'));var timeout=require(_0xa0d9('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa0d9('0x3'));var auth=require(_0xa0d9('0x4'));var interaction=require(_0xa0d9('0x5'));var config=require(_0xa0d9('0x6'));var controller=require(_0xa0d9('0x7'));router[_0xa0d9('0x8')]('/',auth[_0xa0d9('0x9')](),controller[_0xa0d9('0xa')]);router[_0xa0d9('0x8')]('/describe',auth[_0xa0d9('0x9')](),controller[_0xa0d9('0xb')]);router[_0xa0d9('0x8')]('/:id',auth[_0xa0d9('0x9')](),controller[_0xa0d9('0xc')]);router[_0xa0d9('0xd')]('/',auth[_0xa0d9('0x9')](),controller[_0xa0d9('0xe')]);router[_0xa0d9('0xf')](_0xa0d9('0x10'),auth[_0xa0d9('0x9')](),controller['update']);router['delete'](_0xa0d9('0x10'),auth[_0xa0d9('0x9')](),controller[_0xa0d9('0x11')]);module[_0xa0d9('0x12')]=router;
\ No newline at end of file
+var _0x934e=['../../components/auth/service','../../components/interaction/service','./squareReportDetail.controller','get','isAuthenticated','describe','/:id','show','post','create','put','update','delete','exports','util','path','connect-timeout','express','Router'];(function(_0x4f5c8f,_0x2d2a54){var _0x346249=function(_0x8e927){while(--_0x8e927){_0x4f5c8f['push'](_0x4f5c8f['shift']());}};_0x346249(++_0x2d2a54);}(_0x934e,0xb9));var _0xe934=function(_0x2ae4a0,_0x239261){_0x2ae4a0=_0x2ae4a0-0x0;var _0x18fa6b=_0x934e[_0x2ae4a0];return _0x18fa6b;};'use strict';var multer=require('multer');var util=require(_0xe934('0x0'));var path=require(_0xe934('0x1'));var timeout=require(_0xe934('0x2'));var express=require(_0xe934('0x3'));var router=express[_0xe934('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe934('0x5'));var interaction=require(_0xe934('0x6'));var config=require('../../config/environment');var controller=require(_0xe934('0x7'));router[_0xe934('0x8')]('/',auth[_0xe934('0x9')](),controller['index']);router[_0xe934('0x8')]('/describe',auth[_0xe934('0x9')](),controller[_0xe934('0xa')]);router['get'](_0xe934('0xb'),auth[_0xe934('0x9')](),controller[_0xe934('0xc')]);router[_0xe934('0xd')]('/',auth[_0xe934('0x9')](),controller[_0xe934('0xe')]);router[_0xe934('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xe934('0x10')]);router[_0xe934('0x11')](_0xe934('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xe934('0x12')]=router;
\ No newline at end of file
index 5637da6..877a7cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7536=['STRING','TEXT','sequelize','exports'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x7536,0x126));var _0x6753=function(_0x2f6f50,_0x1d21a7){_0x2f6f50=_0x2f6f50-0x0;var _0x2cf365=_0x7536[_0x2f6f50];return _0x2cf365;};'use strict';var Sequelize=require(_0x6753('0x0'));module[_0x6753('0x1')]={'uniqueid':{'type':Sequelize[_0x6753('0x2')]},'node':{'type':Sequelize[_0x6753('0x2')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x6753('0x3')]},'project_name':{'type':Sequelize[_0x6753('0x2')]},'callerid':{'type':Sequelize[_0x6753('0x2')]}};
\ No newline at end of file
+var _0x332b=['STRING','TEXT','sequelize','exports'];(function(_0x4cebb6,_0x53ba59){var _0x5ef179=function(_0x4fe9dc){while(--_0x4fe9dc){_0x4cebb6['push'](_0x4cebb6['shift']());}};_0x5ef179(++_0x53ba59);}(_0x332b,0x19a));var _0xb332=function(_0x13f1db,_0x495127){_0x13f1db=_0x13f1db-0x0;var _0x5ec4d9=_0x332b[_0x13f1db];return _0x5ec4d9;};'use strict';var Sequelize=require(_0xb332('0x0'));module[_0xb332('0x1')]={'uniqueid':{'type':Sequelize[_0xb332('0x2')]},'node':{'type':Sequelize[_0xb332('0x2')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0xb332('0x3')]},'project_name':{'type':Sequelize[_0xb332('0x2')]},'callerid':{'type':Sequelize[_0xb332('0x2')]}};
\ No newline at end of file
index f126341..cc061a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['order','sort','pick','filters','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','find','create','body','describe','rimraf','fast-json-patch','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','error','name','send','index','SquareDetailsReport','fieldName','type','model','map','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit'];(function(_0xe6e9fa,_0x1f058a){var _0xdb9eb6=function(_0x48e875){while(--_0x48e875){_0xe6e9fa['push'](_0xe6e9fa['shift']());}};_0xdb9eb6(++_0x1f058a);}(_0xe5b5,0x177));var _0x5e5b=function(_0xa388a2,_0x40bde6){_0xa388a2=_0xa388a2-0x0;var _0x7ce7f6=_0xe5b5[_0xa388a2];return _0x7ce7f6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5e5b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5e5b('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5e5b('0x2'));var path=require('path');var sox=require('sox');var csv=require(_0x5e5b('0x3'));var ejs=require(_0x5e5b('0x4'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5e5b('0x5'));var squel=require(_0x5e5b('0x6'));var crypto=require(_0x5e5b('0x7'));var jsforce=require(_0x5e5b('0x8'));var deskjs=require(_0x5e5b('0x9'));var toCsv=require(_0x5e5b('0x3'));var querystring=require(_0x5e5b('0xa'));var Papa=require('papaparse');var Redis=require(_0x5e5b('0xb'));var authService=require(_0x5e5b('0xc'));var qs=require(_0x5e5b('0xd'));var as=require(_0x5e5b('0xe'));var hardwareService=require(_0x5e5b('0xf'));var logger=require(_0x5e5b('0x10'))('api');var utils=require(_0x5e5b('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x5e5b('0x12'));var db=require(_0x5e5b('0x13'))['db'];function respondWithStatusCode(_0x2aa1cf,_0x3b59f2){_0x3b59f2=_0x3b59f2||0xcc;return function(_0x2789ca){if(_0x2789ca){return _0x2aa1cf[_0x5e5b('0x14')](_0x3b59f2);}return _0x2aa1cf[_0x5e5b('0x15')](_0x3b59f2)[_0x5e5b('0x16')]();};}function respondWithResult(_0x5950ee,_0xc300b1){_0xc300b1=_0xc300b1||0xc8;return function(_0x2807d){if(_0x2807d){return _0x5950ee['status'](_0xc300b1)['json'](_0x2807d);}};}function respondWithFilteredResult(_0x55164b,_0x4cba5f){return function(_0x118393){if(_0x118393){var _0x50fa8b=typeof _0x4cba5f[_0x5e5b('0x17')]===_0x5e5b('0x18')&&typeof _0x4cba5f[_0x5e5b('0x19')]==='undefined';var _0x434c61=_0x118393[_0x5e5b('0x1a')];var _0xbb0d50=_0x50fa8b?0x0:_0x4cba5f['offset'];var _0x271d34=_0x50fa8b?_0x118393['count']:_0x4cba5f['offset']+_0x4cba5f['limit'];var _0x1bac39;if(_0x271d34>=_0x434c61){_0x271d34=_0x434c61;_0x1bac39=0xc8;}else{_0x1bac39=0xce;}_0x55164b[_0x5e5b('0x15')](_0x1bac39);return _0x55164b[_0x5e5b('0x1b')](_0x5e5b('0x1c'),_0xbb0d50+'-'+_0x271d34+'/'+_0x434c61)[_0x5e5b('0x1d')](_0x118393);}return null;};}function patchUpdates(_0x863c6c){return function(_0x5c406e){try{jsonpatch[_0x5e5b('0x1e')](_0x5c406e,_0x863c6c,!![]);}catch(_0x49178d){return BPromise['reject'](_0x49178d);}return _0x5c406e[_0x5e5b('0x1f')]();};}function saveUpdates(_0x62137b,_0x3f220d){return function(_0x15783d){if(_0x15783d){return _0x15783d[_0x5e5b('0x20')](_0x62137b)['then'](function(_0x336056){return _0x336056;});}return null;};}function removeEntity(_0x567c16,_0xad6fd2){return function(_0x261129){if(_0x261129){return _0x261129[_0x5e5b('0x21')]()[_0x5e5b('0x22')](function(){_0x567c16[_0x5e5b('0x15')](0xcc)[_0x5e5b('0x16')]();});}};}function handleEntityNotFound(_0x45c8b8,_0x5994f8){return function(_0x232e5f){if(!_0x232e5f){_0x45c8b8[_0x5e5b('0x14')](0x194);}return _0x232e5f;};}function handleError(_0x24f64c,_0x344510){_0x344510=_0x344510||0x1f4;return function(_0xb37cd2){logger[_0x5e5b('0x23')](_0xb37cd2['stack']);if(_0xb37cd2[_0x5e5b('0x24')]){delete _0xb37cd2[_0x5e5b('0x24')];}_0x24f64c['status'](_0x344510)[_0x5e5b('0x25')](_0xb37cd2);};}exports[_0x5e5b('0x26')]=function(_0x1fda58,_0x2350d5){var _0x425e2a={},_0x52cb8d={},_0x286c14={'count':0x0,'rows':[]};var _0x4f6761=_['map'](db[_0x5e5b('0x27')]['rawAttributes'],function(_0x4b5a18){return{'name':_0x4b5a18[_0x5e5b('0x28')],'type':_0x4b5a18[_0x5e5b('0x29')]['key']};});_0x52cb8d[_0x5e5b('0x2a')]=_[_0x5e5b('0x2b')](_0x4f6761,_0x5e5b('0x24'));_0x52cb8d['query']=_[_0x5e5b('0x2c')](_0x1fda58[_0x5e5b('0x2d')]);_0x52cb8d['filters']=_[_0x5e5b('0x2e')](_0x52cb8d[_0x5e5b('0x2a')],_0x52cb8d[_0x5e5b('0x2d')]);_0x425e2a['attributes']=_[_0x5e5b('0x2e')](_0x52cb8d[_0x5e5b('0x2a')],qs['fields'](_0x1fda58['query'][_0x5e5b('0x2f')]));_0x425e2a[_0x5e5b('0x30')]=_0x425e2a[_0x5e5b('0x30')]['length']?_0x425e2a[_0x5e5b('0x30')]:_0x52cb8d[_0x5e5b('0x2a')];if(!_0x1fda58['query'][_0x5e5b('0x31')](_0x5e5b('0x32'))){_0x425e2a['limit']=qs[_0x5e5b('0x19')](_0x1fda58[_0x5e5b('0x2d')]['limit']);_0x425e2a['offset']=qs[_0x5e5b('0x17')](_0x1fda58[_0x5e5b('0x2d')]['offset']);}_0x425e2a[_0x5e5b('0x33')]=qs[_0x5e5b('0x34')](_0x1fda58[_0x5e5b('0x2d')][_0x5e5b('0x34')]);_0x425e2a['where']=qs['filters'](_[_0x5e5b('0x35')](_0x1fda58[_0x5e5b('0x2d')],_0x52cb8d[_0x5e5b('0x36')]),_0x4f6761);if(_0x1fda58[_0x5e5b('0x2d')][_0x5e5b('0x37')]){_0x425e2a[_0x5e5b('0x38')]=_[_0x5e5b('0x39')](_0x425e2a['where'],{'$or':_[_0x5e5b('0x2b')](_0x4f6761,function(_0x231ce6){if(_0x231ce6['type']!==_0x5e5b('0x3a')){var _0x8391d1={};_0x8391d1[_0x231ce6['name']]={'$like':'%'+_0x1fda58[_0x5e5b('0x2d')][_0x5e5b('0x37')]+'%'};return _0x8391d1;}})});}_0x425e2a=_[_0x5e5b('0x39')]({},_0x425e2a,_0x1fda58[_0x5e5b('0x3b')]);var _0x57cc34={'where':_0x425e2a[_0x5e5b('0x38')]};return db[_0x5e5b('0x27')][_0x5e5b('0x1a')](_0x57cc34)['then'](function(_0x165405){_0x286c14[_0x5e5b('0x1a')]=_0x165405;if(_0x1fda58[_0x5e5b('0x2d')][_0x5e5b('0x3c')]){_0x425e2a[_0x5e5b('0x3d')]=[{'all':!![]}];}return db[_0x5e5b('0x27')]['findAll'](_0x425e2a);})[_0x5e5b('0x22')](function(_0x415879){_0x286c14[_0x5e5b('0x3e')]=_0x415879;return _0x286c14;})[_0x5e5b('0x22')](respondWithFilteredResult(_0x2350d5,_0x425e2a))[_0x5e5b('0x3f')](handleError(_0x2350d5,null));};exports[_0x5e5b('0x40')]=function(_0x161b26,_0x444d66){var _0x116b2d={'raw':!![],'where':{'id':_0x161b26[_0x5e5b('0x41')]['id']}},_0x5dad7c={};_0x5dad7c['model']=_[_0x5e5b('0x2c')](db['SquareDetailsReport']['rawAttributes']);_0x5dad7c[_0x5e5b('0x2d')]=_[_0x5e5b('0x2c')](_0x161b26['query']);_0x5dad7c['filters']=_['intersection'](_0x5dad7c[_0x5e5b('0x2a')],_0x5dad7c[_0x5e5b('0x2d')]);_0x116b2d[_0x5e5b('0x30')]=_[_0x5e5b('0x2e')](_0x5dad7c[_0x5e5b('0x2a')],qs[_0x5e5b('0x2f')](_0x161b26['query'][_0x5e5b('0x2f')]));_0x116b2d[_0x5e5b('0x30')]=_0x116b2d[_0x5e5b('0x30')][_0x5e5b('0x42')]?_0x116b2d['attributes']:_0x5dad7c[_0x5e5b('0x2a')];if(_0x161b26[_0x5e5b('0x2d')]['includeAll']){_0x116b2d[_0x5e5b('0x3d')]=[{'all':!![]}];}_0x116b2d=_[_0x5e5b('0x39')]({},_0x116b2d,_0x161b26[_0x5e5b('0x3b')]);return db[_0x5e5b('0x27')][_0x5e5b('0x43')](_0x116b2d)[_0x5e5b('0x22')](handleEntityNotFound(_0x444d66,null))['then'](respondWithResult(_0x444d66,null))[_0x5e5b('0x3f')](handleError(_0x444d66,null));};exports[_0x5e5b('0x44')]=function(_0x139160,_0x147892){return db[_0x5e5b('0x27')][_0x5e5b('0x44')](_0x139160[_0x5e5b('0x45')],{})['then'](respondWithResult(_0x147892,0xc9))[_0x5e5b('0x3f')](handleError(_0x147892,null));};exports['update']=function(_0x13f0de,_0x5982f3){if(_0x13f0de['body']['id']){delete _0x13f0de[_0x5e5b('0x45')]['id'];}return db[_0x5e5b('0x27')][_0x5e5b('0x43')]({'where':{'id':_0x13f0de['params']['id']}})[_0x5e5b('0x22')](handleEntityNotFound(_0x5982f3,null))['then'](saveUpdates(_0x13f0de['body'],null))[_0x5e5b('0x22')](respondWithResult(_0x5982f3,null))[_0x5e5b('0x3f')](handleError(_0x5982f3,null));};exports['destroy']=function(_0x36aede,_0x454062){return db[_0x5e5b('0x27')][_0x5e5b('0x43')]({'where':{'id':_0x36aede[_0x5e5b('0x41')]['id']}})[_0x5e5b('0x22')](handleEntityNotFound(_0x454062,null))[_0x5e5b('0x22')](removeEntity(_0x454062,null))[_0x5e5b('0x3f')](handleError(_0x454062,null));};exports['describe']=function(_0x50cfd3,_0x2683d0){return db['SquareDetailsReport'][_0x5e5b('0x46')]()['then'](respondWithResult(_0x2683d0,null))['catch'](handleError(_0x2683d0,null));};
\ No newline at end of file
+var _0x10a3=['../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','send','SquareDetailsReport','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','map','VIRTUAL','merge','options','includeAll','include','findAll','show','params','rawAttributes','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x4c49cd,_0x1b630d){var _0x29ba71=function(_0x3df9cf){while(--_0x3df9cf){_0x4c49cd['push'](_0x4c49cd['shift']());}};_0x29ba71(++_0x1b630d);}(_0x10a3,0x117));var _0x310a=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x10a3[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x310a('0x0'));var rimraf=require(_0x310a('0x1'));var zipdir=require(_0x310a('0x2'));var jsonpatch=require(_0x310a('0x3'));var rp=require('request-promise');var moment=require(_0x310a('0x4'));var BPromise=require(_0x310a('0x5'));var Mustache=require(_0x310a('0x6'));var util=require(_0x310a('0x7'));var path=require(_0x310a('0x8'));var sox=require(_0x310a('0x9'));var csv=require(_0x310a('0xa'));var ejs=require(_0x310a('0xb'));var fs=require('fs');var fs_extra=require(_0x310a('0xc'));var _=require('lodash');var squel=require(_0x310a('0xd'));var crypto=require(_0x310a('0xe'));var jsforce=require(_0x310a('0xf'));var deskjs=require(_0x310a('0x10'));var toCsv=require(_0x310a('0xa'));var querystring=require(_0x310a('0x11'));var Papa=require('papaparse');var Redis=require(_0x310a('0x12'));var authService=require(_0x310a('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x310a('0x14'));var hardwareService=require(_0x310a('0x15'));var logger=require(_0x310a('0x16'))(_0x310a('0x17'));var utils=require(_0x310a('0x18'));var config=require(_0x310a('0x19'));var licenseUtil=require(_0x310a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3475bd,_0x21725a){_0x21725a=_0x21725a||0xcc;return function(_0x30705){if(_0x30705){return _0x3475bd[_0x310a('0x1b')](_0x21725a);}return _0x3475bd[_0x310a('0x1c')](_0x21725a)[_0x310a('0x1d')]();};}function respondWithResult(_0x4a3f99,_0x119bde){_0x119bde=_0x119bde||0xc8;return function(_0x4f06c7){if(_0x4f06c7){return _0x4a3f99[_0x310a('0x1c')](_0x119bde)[_0x310a('0x1e')](_0x4f06c7);}};}function respondWithFilteredResult(_0x1fa6bf,_0xef30a9){return function(_0x5d7955){if(_0x5d7955){var _0x2bc13d=typeof _0xef30a9[_0x310a('0x1f')]===_0x310a('0x20')&&typeof _0xef30a9[_0x310a('0x21')]==='undefined';var _0x4ec7d2=_0x5d7955[_0x310a('0x22')];var _0x3dddf3=_0x2bc13d?0x0:_0xef30a9[_0x310a('0x1f')];var _0x336261=_0x2bc13d?_0x5d7955[_0x310a('0x22')]:_0xef30a9[_0x310a('0x1f')]+_0xef30a9['limit'];var _0x4ada2b;if(_0x336261>=_0x4ec7d2){_0x336261=_0x4ec7d2;_0x4ada2b=0xc8;}else{_0x4ada2b=0xce;}_0x1fa6bf[_0x310a('0x1c')](_0x4ada2b);return _0x1fa6bf['set'](_0x310a('0x23'),_0x3dddf3+'-'+_0x336261+'/'+_0x4ec7d2)['json'](_0x5d7955);}return null;};}function patchUpdates(_0x3ef88a){return function(_0x11a46e){try{jsonpatch[_0x310a('0x24')](_0x11a46e,_0x3ef88a,!![]);}catch(_0x5b9c73){return BPromise['reject'](_0x5b9c73);}return _0x11a46e[_0x310a('0x25')]();};}function saveUpdates(_0x8a8e2,_0x30b1e5){return function(_0x333380){if(_0x333380){return _0x333380[_0x310a('0x26')](_0x8a8e2)['then'](function(_0x483e41){return _0x483e41;});}return null;};}function removeEntity(_0x1b7556,_0x52c07e){return function(_0x3c6e90){if(_0x3c6e90){return _0x3c6e90[_0x310a('0x27')]()[_0x310a('0x28')](function(){_0x1b7556[_0x310a('0x1c')](0xcc)[_0x310a('0x1d')]();});}};}function handleEntityNotFound(_0x1e1f68,_0x590890){return function(_0x2b90a0){if(!_0x2b90a0){_0x1e1f68[_0x310a('0x1b')](0x194);}return _0x2b90a0;};}function handleError(_0x101876,_0x5188e0){_0x5188e0=_0x5188e0||0x1f4;return function(_0x7fab4c){logger[_0x310a('0x29')](_0x7fab4c[_0x310a('0x2a')]);if(_0x7fab4c['name']){delete _0x7fab4c[_0x310a('0x2b')];}_0x101876[_0x310a('0x1c')](_0x5188e0)[_0x310a('0x2c')](_0x7fab4c);};}exports['index']=function(_0x419c9f,_0xbf56b5){var _0x16f442={},_0x2256f7={},_0xa4f55={'count':0x0,'rows':[]};var _0x2ff5d1=_['map'](db[_0x310a('0x2d')]['rawAttributes'],function(_0x45b279){return{'name':_0x45b279['fieldName'],'type':_0x45b279[_0x310a('0x2e')]['key']};});_0x2256f7[_0x310a('0x2f')]=_['map'](_0x2ff5d1,_0x310a('0x2b'));_0x2256f7['query']=_[_0x310a('0x30')](_0x419c9f[_0x310a('0x31')]);_0x2256f7[_0x310a('0x32')]=_[_0x310a('0x33')](_0x2256f7[_0x310a('0x2f')],_0x2256f7[_0x310a('0x31')]);_0x16f442[_0x310a('0x34')]=_[_0x310a('0x33')](_0x2256f7[_0x310a('0x2f')],qs[_0x310a('0x35')](_0x419c9f[_0x310a('0x31')]['fields']));_0x16f442['attributes']=_0x16f442[_0x310a('0x34')][_0x310a('0x36')]?_0x16f442['attributes']:_0x2256f7['model'];if(!_0x419c9f[_0x310a('0x31')]['hasOwnProperty'](_0x310a('0x37'))){_0x16f442[_0x310a('0x21')]=qs[_0x310a('0x21')](_0x419c9f[_0x310a('0x31')][_0x310a('0x21')]);_0x16f442['offset']=qs[_0x310a('0x1f')](_0x419c9f['query'][_0x310a('0x1f')]);}_0x16f442[_0x310a('0x38')]=qs[_0x310a('0x39')](_0x419c9f[_0x310a('0x31')][_0x310a('0x39')]);_0x16f442['where']=qs[_0x310a('0x32')](_[_0x310a('0x3a')](_0x419c9f[_0x310a('0x31')],_0x2256f7[_0x310a('0x32')]),_0x2ff5d1);if(_0x419c9f[_0x310a('0x31')][_0x310a('0x3b')]){_0x16f442[_0x310a('0x3c')]=_['merge'](_0x16f442[_0x310a('0x3c')],{'$or':_[_0x310a('0x3d')](_0x2ff5d1,function(_0x1327a0){if(_0x1327a0['type']!==_0x310a('0x3e')){var _0x592a76={};_0x592a76[_0x1327a0[_0x310a('0x2b')]]={'$like':'%'+_0x419c9f[_0x310a('0x31')][_0x310a('0x3b')]+'%'};return _0x592a76;}})});}_0x16f442=_[_0x310a('0x3f')]({},_0x16f442,_0x419c9f[_0x310a('0x40')]);var _0x311ead={'where':_0x16f442[_0x310a('0x3c')]};return db[_0x310a('0x2d')]['count'](_0x311ead)[_0x310a('0x28')](function(_0x4d54b9){_0xa4f55[_0x310a('0x22')]=_0x4d54b9;if(_0x419c9f[_0x310a('0x31')][_0x310a('0x41')]){_0x16f442[_0x310a('0x42')]=[{'all':!![]}];}return db[_0x310a('0x2d')][_0x310a('0x43')](_0x16f442);})[_0x310a('0x28')](function(_0x51cc63){_0xa4f55['rows']=_0x51cc63;return _0xa4f55;})[_0x310a('0x28')](respondWithFilteredResult(_0xbf56b5,_0x16f442))['catch'](handleError(_0xbf56b5,null));};exports[_0x310a('0x44')]=function(_0x47f8d9,_0x2e1778){var _0x1b0531={'raw':!![],'where':{'id':_0x47f8d9[_0x310a('0x45')]['id']}},_0xd8a546={};_0xd8a546[_0x310a('0x2f')]=_['keys'](db[_0x310a('0x2d')][_0x310a('0x46')]);_0xd8a546[_0x310a('0x31')]=_[_0x310a('0x30')](_0x47f8d9['query']);_0xd8a546[_0x310a('0x32')]=_['intersection'](_0xd8a546[_0x310a('0x2f')],_0xd8a546[_0x310a('0x31')]);_0x1b0531[_0x310a('0x34')]=_['intersection'](_0xd8a546['model'],qs[_0x310a('0x35')](_0x47f8d9[_0x310a('0x31')]['fields']));_0x1b0531['attributes']=_0x1b0531[_0x310a('0x34')][_0x310a('0x36')]?_0x1b0531[_0x310a('0x34')]:_0xd8a546['model'];if(_0x47f8d9[_0x310a('0x31')][_0x310a('0x41')]){_0x1b0531[_0x310a('0x42')]=[{'all':!![]}];}_0x1b0531=_[_0x310a('0x3f')]({},_0x1b0531,_0x47f8d9['options']);return db[_0x310a('0x2d')][_0x310a('0x47')](_0x1b0531)[_0x310a('0x28')](handleEntityNotFound(_0x2e1778,null))[_0x310a('0x28')](respondWithResult(_0x2e1778,null))[_0x310a('0x48')](handleError(_0x2e1778,null));};exports[_0x310a('0x49')]=function(_0x4b36c0,_0x29cada){return db[_0x310a('0x2d')]['create'](_0x4b36c0[_0x310a('0x4a')],{})[_0x310a('0x28')](respondWithResult(_0x29cada,0xc9))[_0x310a('0x48')](handleError(_0x29cada,null));};exports[_0x310a('0x26')]=function(_0x285ff0,_0x1491fc){if(_0x285ff0[_0x310a('0x4a')]['id']){delete _0x285ff0[_0x310a('0x4a')]['id'];}return db[_0x310a('0x2d')][_0x310a('0x47')]({'where':{'id':_0x285ff0['params']['id']}})[_0x310a('0x28')](handleEntityNotFound(_0x1491fc,null))[_0x310a('0x28')](saveUpdates(_0x285ff0[_0x310a('0x4a')],null))[_0x310a('0x28')](respondWithResult(_0x1491fc,null))['catch'](handleError(_0x1491fc,null));};exports[_0x310a('0x27')]=function(_0x1b6a3d,_0x32650e){return db[_0x310a('0x2d')][_0x310a('0x47')]({'where':{'id':_0x1b6a3d['params']['id']}})[_0x310a('0x28')](handleEntityNotFound(_0x32650e,null))[_0x310a('0x28')](removeEntity(_0x32650e,null))[_0x310a('0x48')](handleError(_0x32650e,null));};exports[_0x310a('0x4b')]=function(_0x24dc91,_0x2f271b){return db[_0x310a('0x2d')][_0x310a('0x4b')]()[_0x310a('0x28')](respondWithResult(_0x2f271b,null))['catch'](handleError(_0x2f271b,null));};
\ No newline at end of file
index 63d5690..3dbfc27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd70e=['moment','bluebird','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','report_square_details','lodash','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd70e,0x69));var _0xed70=function(_0x244604,_0x36803e){_0x244604=_0x244604-0x0;var _0x23a815=_0xd70e[_0x244604];return _0x23a815;};'use strict';var _=require(_0xed70('0x0'));var util=require('util');var logger=require(_0xed70('0x1'))(_0xed70('0x2'));var moment=require(_0xed70('0x3'));var BPromise=require(_0xed70('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed70('0x5'));var rimraf=require(_0xed70('0x6'));var config=require(_0xed70('0x7'));var attributes=require(_0xed70('0x8'));module[_0xed70('0x9')]=function(_0x32ddd3,_0x3f7ff2){return _0x32ddd3[_0xed70('0xa')]('SquareDetailsReport',attributes,{'tableName':_0xed70('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x80a9=['report_square_details','lodash','util','moment','bluebird','request-promise','path','rimraf','./squareReportDetail.attributes','define','SquareDetailsReport'];(function(_0x133fc0,_0x1edda8){var _0x4ce619=function(_0x308be5){while(--_0x308be5){_0x133fc0['push'](_0x133fc0['shift']());}};_0x4ce619(++_0x1edda8);}(_0x80a9,0xd2));var _0x980a=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x80a9[_0x4e6ae6];return _0x23c108;};'use strict';var _=require(_0x980a('0x0'));var util=require(_0x980a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x980a('0x2'));var BPromise=require(_0x980a('0x3'));var rp=require(_0x980a('0x4'));var fs=require('fs');var path=require(_0x980a('0x5'));var rimraf=require(_0x980a('0x6'));var config=require('../../config/environment');var attributes=require(_0x980a('0x7'));module['exports']=function(_0x2f5f16,_0x2cf4a5){return _0x2f5f16[_0x980a('0x8')](_0x980a('0x9'),attributes,{'tableName':_0x980a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b68fb1..0791722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x594d=['then','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','create','options','raw','CreateSquareDetailsReport','stringify','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request'];(function(_0x9f02a,_0x578a00){var _0x34124e=function(_0x4d22a1){while(--_0x4d22a1){_0x9f02a['push'](_0x9f02a['shift']());}};_0x34124e(++_0x578a00);}(_0x594d,0x92));var _0xd594=function(_0x4e41b6,_0x376f4e){_0x4e41b6=_0x4e41b6-0x0;var _0x59c18d=_0x594d[_0x4e41b6];return _0x59c18d;};'use strict';var _=require(_0xd594('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd594('0x1'));var rs=require(_0xd594('0x2'));var fs=require('fs');var Redis=require(_0xd594('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd594('0x4'));var logger=require(_0xd594('0x5'))(_0xd594('0x6'));var config=require(_0xd594('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd594('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b1c64,_0x446711,_0xeedad0){return new BPromise(function(_0x20325a,_0x20718a){return client[_0xd594('0x9')](_0x3b1c64,_0xeedad0)[_0xd594('0xa')](function(_0xf3043e){logger[_0xd594('0xb')](_0xd594('0xc'),_0x446711,'request\x20sent');logger[_0xd594('0xd')](_0xd594('0xe'),_0x446711,_0xd594('0xf'),JSON['stringify'](_0xf3043e));if(_0xf3043e[_0xd594('0x10')]){if(_0xf3043e[_0xd594('0x10')][_0xd594('0x11')]===0x1f4){logger[_0xd594('0x10')](_0xd594('0xc'),_0x446711,_0xf3043e[_0xd594('0x10')][_0xd594('0x12')]);return _0x20718a(_0xf3043e['error']['message']);}logger[_0xd594('0x10')](_0xd594('0xc'),_0x446711,_0xf3043e['error'][_0xd594('0x12')]);return _0x20325a(_0xf3043e['error'][_0xd594('0x12')]);}else{logger[_0xd594('0xb')](_0xd594('0xc'),_0x446711,'request\x20sent');_0x20325a(_0xf3043e[_0xd594('0x13')]['message']);}})['catch'](function(_0x2a5f17){logger[_0xd594('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x446711,_0x2a5f17);_0x20718a(_0x2a5f17);});});}exports['CreateSquareDetailsReport']=function(_0x232776){var _0x4ea0d5=this;return new Promise(function(_0x54f640,_0x3ae9be){return db['SquareDetailsReport'][_0xd594('0x14')](_0x232776['body'],{'raw':_0x232776[_0xd594('0x15')]?_0x232776['options'][_0xd594('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x3b0fda){logger[_0xd594('0xb')](_0xd594('0x17'),_0x232776);logger[_0xd594('0xd')](_0xd594('0x17'),_0x232776,JSON[_0xd594('0x18')](_0x3b0fda));_0x54f640(_0x3b0fda);})[_0xd594('0x19')](function(_0x2b8495){logger[_0xd594('0x10')](_0xd594('0x17'),_0x2b8495[_0xd594('0x12')],_0x232776);_0x3ae9be(_0x4ea0d5[_0xd594('0x10')](0x1f4,_0x2b8495[_0xd594('0x12')]));});});};
\ No newline at end of file
+var _0x5c00=['create','body','options','raw','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateSquareDetailsReport'];(function(_0x576c1e,_0x49c1d6){var _0x33a3c3=function(_0x5b56fa){while(--_0x5b56fa){_0x576c1e['push'](_0x576c1e['shift']());}};_0x33a3c3(++_0x49c1d6);}(_0x5c00,0x17e));var _0x05c0=function(_0x317943,_0x1a4079){_0x317943=_0x317943-0x0;var _0x5a578e=_0x5c00[_0x317943];return _0x5a578e;};'use strict';var _=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var moment=require(_0x05c0('0x2'));var BPromise=require('bluebird');var rs=require(_0x05c0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x05c0('0x4'))['db'];var utils=require(_0x05c0('0x5'));var logger=require(_0x05c0('0x6'))(_0x05c0('0x7'));var config=require('../../config/environment');var jayson=require(_0x05c0('0x8'));var client=jayson[_0x05c0('0x9')][_0x05c0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x27dc10,_0x5b9f09,_0x3a3b1b){return new BPromise(function(_0x34eb5f,_0x3ad5b7){return client['request'](_0x27dc10,_0x3a3b1b)[_0x05c0('0xb')](function(_0x32cdfa){logger[_0x05c0('0xc')](_0x05c0('0xd'),_0x5b9f09,_0x05c0('0xe'));logger[_0x05c0('0xf')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x5b9f09,'request\x20sent',JSON[_0x05c0('0x10')](_0x32cdfa));if(_0x32cdfa['error']){if(_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x12')]===0x1f4){logger[_0x05c0('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0x5b9f09,_0x32cdfa[_0x05c0('0x11')]['message']);return _0x3ad5b7(_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x13')]);}logger[_0x05c0('0x11')](_0x05c0('0xd'),_0x5b9f09,_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x13')]);return _0x34eb5f(_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x13')]);}else{logger['info'](_0x05c0('0xd'),_0x5b9f09,_0x05c0('0xe'));_0x34eb5f(_0x32cdfa[_0x05c0('0x14')][_0x05c0('0x13')]);}})[_0x05c0('0x15')](function(_0x40153e){logger[_0x05c0('0x11')](_0x05c0('0xd'),_0x5b9f09,_0x40153e);_0x3ad5b7(_0x40153e);});});}exports[_0x05c0('0x16')]=function(_0x521cbd){var _0x422401=this;return new Promise(function(_0x1230e5,_0x4613c0){return db['SquareDetailsReport'][_0x05c0('0x17')](_0x521cbd[_0x05c0('0x18')],{'raw':_0x521cbd[_0x05c0('0x19')]?_0x521cbd[_0x05c0('0x19')][_0x05c0('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x407c1f){logger[_0x05c0('0xc')]('CreateSquareDetailsReport',_0x521cbd);logger['debug']('CreateSquareDetailsReport',_0x521cbd,JSON[_0x05c0('0x10')](_0x407c1f));_0x1230e5(_0x407c1f);})[_0x05c0('0x15')](function(_0x83f29){logger[_0x05c0('0x11')](_0x05c0('0x16'),_0x83f29[_0x05c0('0x13')],_0x521cbd);_0x4613c0(_0x422401[_0x05c0('0x11')](0x1f4,_0x83f29['message']));});});};
\ No newline at end of file
index 18a0092..6736c01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e3=['./system.controller','get','index','/process/:pid/kill','isAuthenticated','killProcess','exports','Router','../../components/auth/service'];(function(_0x7ad123,_0xeeeef3){var _0x37d073=function(_0x51367b){while(--_0x51367b){_0x7ad123['push'](_0x7ad123['shift']());}};_0x37d073(++_0xeeeef3);}(_0x27e3,0x15d));var _0x327e=function(_0x4e092d,_0x44bb3b){_0x4e092d=_0x4e092d-0x0;var _0xa5f832=_0x27e3[_0x4e092d];return _0xa5f832;};'use strict';var express=require('express');var router=express[_0x327e('0x0')]();var auth=require(_0x327e('0x1'));var controller=require(_0x327e('0x2'));router[_0x327e('0x3')]('/',auth['isAuthenticated'](),controller[_0x327e('0x4')]);router[_0x327e('0x3')](_0x327e('0x5'),auth[_0x327e('0x6')](),controller[_0x327e('0x7')]);module[_0x327e('0x8')]=router;
\ No newline at end of file
+var _0xd15c=['killProcess','exports','Router','get','isAuthenticated','index','/process/:pid/kill'];(function(_0x16d991,_0x3f07cc){var _0x4f41c3=function(_0x18d679){while(--_0x18d679){_0x16d991['push'](_0x16d991['shift']());}};_0x4f41c3(++_0x3f07cc);}(_0xd15c,0x1ad));var _0xcd15=function(_0xf7556e,_0x3b77c9){_0xf7556e=_0xf7556e-0x0;var _0x3db8a5=_0xd15c[_0xf7556e];return _0x3db8a5;};'use strict';var express=require('express');var router=express[_0xcd15('0x0')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0xcd15('0x1')]('/',auth[_0xcd15('0x2')](),controller[_0xcd15('0x3')]);router[_0xcd15('0x1')](_0xcd15('0x4'),auth[_0xcd15('0x2')](),controller[_0xcd15('0x5')]);module[_0xcd15('0x6')]=router;
\ No newline at end of file
index ce72b33..01b2815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c8=['../../config/logger','api','lodash','error','inspect','name','status','index','getAllData','catch','json','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','then','split','length','format','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','systeminformation','child_process','exec'];(function(_0xd479a1,_0x4061a5){var _0x196bd7=function(_0x4f7090){while(--_0x4f7090){_0xd479a1['push'](_0xd479a1['shift']());}};_0x196bd7(++_0x4061a5);}(_0xc6c8,0xf7));var _0x8c6c=function(_0x50036d,_0x5ef0e5){_0x50036d=_0x50036d-0x0;var _0x2bebe1=_0xc6c8[_0x50036d];return _0x2bebe1;};'use strict';var info=require(_0x8c6c('0x0'));var exec=require(_0x8c6c('0x1'))[_0x8c6c('0x2')];var logger=require(_0x8c6c('0x3'))(_0x8c6c('0x4'));var util=require('util');var BPromise=require('bluebird');var _=require(_0x8c6c('0x5'));function handleError(_0x5608da,_0x4af297,_0x47bffc){_0x4af297=_0x4af297||0x1f4;return function(_0x32e9a0){logger[_0x8c6c('0x6')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x47bffc,_0x4af297,util[_0x8c6c('0x7')](_0x32e9a0,{'showHidden':![],'depth':null}));delete _0x32e9a0[_0x8c6c('0x8')];_0x5608da[_0x8c6c('0x9')](_0x4af297)['send'](_0x32e9a0);};}exports[_0x8c6c('0xa')]=function(_0xa4fefa,_0x4da635){return info[_0x8c6c('0xb')]()['then'](function(_0x180625){return _0x4da635['status'](0xc8)['json'](_0x180625);})[_0x8c6c('0xc')](function(_0x38b08c){return _0x4da635[_0x8c6c('0x9')](0x1f4)[_0x8c6c('0xd')](_0x38b08c);});};exports[_0x8c6c('0xe')]=function(_0x3995a3,_0x435918){var _0x31ac0e=[_0x8c6c('0xf')];return new BPromise(function(_0x12bbaf,_0x358966){return exec(util['format'](_0x8c6c('0x10'),_0x3995a3[_0x8c6c('0x11')][_0x8c6c('0x12')]),function(_0x5e4424,_0x528094,_0x1848a3){if(_0x5e4424){return _0x358966(_0x5e4424);}return _0x12bbaf(_0x528094);});})[_0x8c6c('0x13')](function(_0x584830){var _0x2f4884=![];var _0x3e446e=_0x584830[_0x8c6c('0x14')](/\n/);for(var _0x592504=0x0,_0xbd0813=_0x31ac0e[_0x8c6c('0x15')];_0x592504<_0xbd0813,_0x2f4884===![];_0x592504+=0x1){if(_0x584830['indexOf'](_0x31ac0e[_0x592504])>=0x0){_0x2f4884=!![];}}if(!_0x2f4884){throw new Error(util[_0x8c6c('0x16')](_0x8c6c('0x17'),_0x3995a3[_0x8c6c('0x11')][_0x8c6c('0x12')]));}process[_0x8c6c('0x18')](_0x3995a3[_0x8c6c('0x11')][_0x8c6c('0x12')],'SIGINT');return _0x435918[_0x8c6c('0x9')](0xc8)[_0x8c6c('0xd')]({'message':util[_0x8c6c('0x16')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x3995a3['params'][_0x8c6c('0x12')])});})[_0x8c6c('0xc')](handleError(_0x435918,null,_0x8c6c('0xe')));};
\ No newline at end of file
+var _0xad9e=['indexOf','kill','SIGINT','format','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','systeminformation','child_process','exec','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','index','then','status','json','catch','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length'];(function(_0x56b7c6,_0x2e2186){var _0x222295=function(_0x1d6ad8){while(--_0x1d6ad8){_0x56b7c6['push'](_0x56b7c6['shift']());}};_0x222295(++_0x2e2186);}(_0xad9e,0x102));var _0xead9=function(_0x1c2f94,_0x599d2f){_0x1c2f94=_0x1c2f94-0x0;var _0x3131bd=_0xad9e[_0x1c2f94];return _0x3131bd;};'use strict';var info=require(_0xead9('0x0'));var exec=require(_0xead9('0x1'))[_0xead9('0x2')];var logger=require('../../config/logger')(_0xead9('0x3'));var util=require(_0xead9('0x4'));var BPromise=require(_0xead9('0x5'));var _=require(_0xead9('0x6'));function handleError(_0x491a47,_0x30e385,_0x4c6244){_0x30e385=_0x30e385||0x1f4;return function(_0x111ea4){logger[_0xead9('0x7')](_0xead9('0x8'),_0x4c6244,_0x30e385,util[_0xead9('0x9')](_0x111ea4,{'showHidden':![],'depth':null}));delete _0x111ea4[_0xead9('0xa')];_0x491a47['status'](_0x30e385)[_0xead9('0xb')](_0x111ea4);};}exports[_0xead9('0xc')]=function(_0x18540a,_0xda67ea){return info['getAllData']()[_0xead9('0xd')](function(_0x15c03e){return _0xda67ea[_0xead9('0xe')](0xc8)[_0xead9('0xf')](_0x15c03e);})[_0xead9('0x10')](function(_0x3d2c4d){return _0xda67ea[_0xead9('0xe')](0x1f4)[_0xead9('0xf')](_0x3d2c4d);});};exports['killProcess']=function(_0x3685f4,_0x1cfc0b){var _0x453b69=['components/import/cm'];return new BPromise(function(_0x1e39ee,_0x15fe22){return exec(util['format'](_0xead9('0x11'),_0x3685f4[_0xead9('0x12')][_0xead9('0x13')]),function(_0x2afd0d,_0x452ed3,_0x3a15eb){if(_0x2afd0d){return _0x15fe22(_0x2afd0d);}return _0x1e39ee(_0x452ed3);});})['then'](function(_0x40335e){var _0x306049=![];var _0x34fca8=_0x40335e[_0xead9('0x14')](/\n/);for(var _0x18178d=0x0,_0x36102d=_0x453b69[_0xead9('0x15')];_0x18178d<_0x36102d,_0x306049===![];_0x18178d+=0x1){if(_0x40335e[_0xead9('0x16')](_0x453b69[_0x18178d])>=0x0){_0x306049=!![];}}if(!_0x306049){throw new Error(util['format']('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x3685f4[_0xead9('0x12')]['pid']));}process[_0xead9('0x17')](_0x3685f4[_0xead9('0x12')][_0xead9('0x13')],_0xead9('0x18'));return _0x1cfc0b['status'](0xc8)[_0xead9('0xf')]({'message':util[_0xead9('0x19')](_0xead9('0x1a'),_0x3685f4[_0xead9('0x12')][_0xead9('0x13')])});})[_0xead9('0x10')](handleError(_0x1cfc0b,null,_0xead9('0x1b')));};
\ No newline at end of file
index c3e3aa5..6af7e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f3d=['update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./tag.controller','index','isAuthenticated','put','/:id'];(function(_0x342460,_0x52e0c5){var _0x26b3e8=function(_0xbcbdcf){while(--_0xbcbdcf){_0x342460['push'](_0x342460['shift']());}};_0x26b3e8(++_0x52e0c5);}(_0x4f3d,0x18a));var _0xd4f3=function(_0x13f089,_0x555425){_0x13f089=_0x13f089-0x0;var _0xe70c8c=_0x4f3d[_0x13f089];return _0xe70c8c;};'use strict';var multer=require(_0xd4f3('0x0'));var util=require(_0xd4f3('0x1'));var path=require(_0xd4f3('0x2'));var timeout=require(_0xd4f3('0x3'));var express=require(_0xd4f3('0x4'));var router=express[_0xd4f3('0x5')]();var fs_extra=require(_0xd4f3('0x6'));var auth=require(_0xd4f3('0x7'));var interaction=require(_0xd4f3('0x8'));var config=require('../../config/environment');var controller=require(_0xd4f3('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xd4f3('0xa')]);router['get']('/:id',auth[_0xd4f3('0xb')](),controller['show']);router['post']('/',auth[_0xd4f3('0xb')](),controller['create']);router[_0xd4f3('0xc')](_0xd4f3('0xd'),auth[_0xd4f3('0xb')](),controller[_0xd4f3('0xe')]);router[_0xd4f3('0xf')](_0xd4f3('0xd'),auth[_0xd4f3('0xb')](),controller[_0xd4f3('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xe672=['/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./tag.controller','get','isAuthenticated'];(function(_0x4d0acd,_0xd609db){var _0x1e84dc=function(_0xe842a3){while(--_0xe842a3){_0x4d0acd['push'](_0x4d0acd['shift']());}};_0x1e84dc(++_0xd609db);}(_0xe672,0x1e4));var _0x2e67=function(_0x1a7b0d,_0x3f3037){_0x1a7b0d=_0x1a7b0d-0x0;var _0x30df9c=_0xe672[_0x1a7b0d];return _0x30df9c;};'use strict';var multer=require(_0x2e67('0x0'));var util=require('util');var path=require(_0x2e67('0x1'));var timeout=require(_0x2e67('0x2'));var express=require(_0x2e67('0x3'));var router=express[_0x2e67('0x4')]();var fs_extra=require(_0x2e67('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2e67('0x6'));var controller=require(_0x2e67('0x7'));router[_0x2e67('0x8')]('/',auth[_0x2e67('0x9')](),controller['index']);router['get'](_0x2e67('0xa'),auth[_0x2e67('0x9')](),controller[_0x2e67('0xb')]);router[_0x2e67('0xc')]('/',auth['isAuthenticated'](),controller[_0x2e67('0xd')]);router[_0x2e67('0xe')](_0x2e67('0xa'),auth[_0x2e67('0x9')](),controller[_0x2e67('0xf')]);router[_0x2e67('0x10')](_0x2e67('0xa'),auth[_0x2e67('0x9')](),controller[_0x2e67('0x11')]);module[_0x2e67('0x12')]=router;
\ No newline at end of file
index 4a58670..cad9157 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['name','#0091EA','sequelize','exports','STRING'];(function(_0x13c976,_0x57216f){var _0x342f1f=function(_0xffe87d){while(--_0xffe87d){_0x13c976['push'](_0x13c976['shift']());}};_0x342f1f(++_0x57216f);}(_0xb9be,0xc5));var _0xeb9b=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0xb9be[_0x14fad0];return _0x5c665f;};'use strict';var Sequelize=require(_0xeb9b('0x0'));module[_0xeb9b('0x1')]={'name':{'type':Sequelize[_0xeb9b('0x2')],'unique':_0xeb9b('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xeb9b('0x2')],'defaultValue':_0xeb9b('0x4')},'description':{'type':Sequelize[_0xeb9b('0x2')]}};
\ No newline at end of file
+var _0xda3f=['exports','STRING'];(function(_0x2d527f,_0x41ec12){var _0x41895d=function(_0x5a4302){while(--_0x5a4302){_0x2d527f['push'](_0x2d527f['shift']());}};_0x41895d(++_0x41ec12);}(_0xda3f,0xec));var _0xfda3=function(_0x2c179f,_0x1f1b4b){_0x2c179f=_0x2c179f-0x0;var _0x53f2ae=_0xda3f[_0x2c179f];return _0x53f2ae;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'name':{'type':Sequelize[_0xfda3('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xfda3('0x1')]}};
\ No newline at end of file
index c6ab5d8..af03640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2c=['get','Tags','UserProfileResource','destroy','stack','name','send','index','map','Tag','type','keys','filters','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','findAll','rows','catch','show','params','rawAttributes','length','includeAll','include','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then'];(function(_0x31b88d,_0x32e9ef){var _0x1128c9=function(_0x243665){while(--_0x243665){_0x31b88d['push'](_0x31b88d['shift']());}};_0x1128c9(++_0x32e9ef);}(_0x7a2c,0x17b));var _0xc7a2=function(_0x567e2f,_0x15a30e){_0x567e2f=_0x567e2f-0x0;var _0x1cee7e=_0x7a2c[_0x567e2f];return _0x1cee7e;};'use strict';var emlformat=require(_0xc7a2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc7a2('0x1'));var jsonpatch=require(_0xc7a2('0x2'));var rp=require(_0xc7a2('0x3'));var moment=require(_0xc7a2('0x4'));var BPromise=require(_0xc7a2('0x5'));var Mustache=require(_0xc7a2('0x6'));var util=require(_0xc7a2('0x7'));var path=require(_0xc7a2('0x8'));var sox=require('sox');var csv=require(_0xc7a2('0x9'));var ejs=require(_0xc7a2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xc7a2('0xb'));var jsforce=require(_0xc7a2('0xc'));var deskjs=require(_0xc7a2('0xd'));var toCsv=require(_0xc7a2('0x9'));var querystring=require('querystring');var Papa=require(_0xc7a2('0xe'));var Redis=require(_0xc7a2('0xf'));var authService=require(_0xc7a2('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc7a2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc7a2('0x12'))(_0xc7a2('0x13'));var utils=require(_0xc7a2('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xc7a2('0x15'));var db=require(_0xc7a2('0x16'))['db'];function respondWithStatusCode(_0x2df81a,_0x5871c3){_0x5871c3=_0x5871c3||0xcc;return function(_0x111946){if(_0x111946){return _0x2df81a[_0xc7a2('0x17')](_0x5871c3);}return _0x2df81a[_0xc7a2('0x18')](_0x5871c3)[_0xc7a2('0x19')]();};}function respondWithResult(_0x39929c,_0x2af363){_0x2af363=_0x2af363||0xc8;return function(_0x15d4cf){if(_0x15d4cf){return _0x39929c[_0xc7a2('0x18')](_0x2af363)[_0xc7a2('0x1a')](_0x15d4cf);}};}function respondWithFilteredResult(_0xcc0d1f,_0x3814d6){return function(_0x278afb){if(_0x278afb){var _0x26d678=typeof _0x3814d6[_0xc7a2('0x1b')]===_0xc7a2('0x1c')&&typeof _0x3814d6['limit']===_0xc7a2('0x1c');var _0x59e8ad=_0x278afb[_0xc7a2('0x1d')];var _0x302d54=_0x26d678?0x0:_0x3814d6[_0xc7a2('0x1b')];var _0x3da373=_0x26d678?_0x278afb['count']:_0x3814d6['offset']+_0x3814d6[_0xc7a2('0x1e')];var _0x22e80a;if(_0x3da373>=_0x59e8ad){_0x3da373=_0x59e8ad;_0x22e80a=0xc8;}else{_0x22e80a=0xce;}_0xcc0d1f['status'](_0x22e80a);return _0xcc0d1f['set']('Content-Range',_0x302d54+'-'+_0x3da373+'/'+_0x59e8ad)[_0xc7a2('0x1a')](_0x278afb);}return null;};}function patchUpdates(_0x5a2f40){return function(_0x155c42){try{jsonpatch[_0xc7a2('0x1f')](_0x155c42,_0x5a2f40,!![]);}catch(_0x56313b){return BPromise[_0xc7a2('0x20')](_0x56313b);}return _0x155c42[_0xc7a2('0x21')]();};}function saveUpdates(_0x1b51a1,_0x35e0f6){return function(_0x337bdb){if(_0x337bdb){return _0x337bdb[_0xc7a2('0x22')](_0x1b51a1)[_0xc7a2('0x23')](function(_0x4a05e1){return _0x4a05e1;});}return null;};}function removeEntity(_0x51243c,_0x194ca4){return function(_0x1c3fb8){if(_0x1c3fb8){return _0x1c3fb8['destroy']()[_0xc7a2('0x23')](function(){var _0x3cad61=_0x1c3fb8[_0xc7a2('0x24')]({'plain':!![]});var _0x2c2281=_0xc7a2('0x25');return db[_0xc7a2('0x26')][_0xc7a2('0x27')]({'where':{'type':_0x2c2281,'resourceId':_0x3cad61['id']}})[_0xc7a2('0x23')](function(){return _0x1c3fb8;});})['then'](function(){_0x51243c[_0xc7a2('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x206eb7,_0x4cc3a8){return function(_0x20404b){if(!_0x20404b){_0x206eb7[_0xc7a2('0x17')](0x194);}return _0x20404b;};}function handleError(_0xd93f19,_0x3959c9){_0x3959c9=_0x3959c9||0x1f4;return function(_0x4977f0){logger['error'](_0x4977f0[_0xc7a2('0x28')]);if(_0x4977f0[_0xc7a2('0x29')]){delete _0x4977f0[_0xc7a2('0x29')];}_0xd93f19[_0xc7a2('0x18')](_0x3959c9)[_0xc7a2('0x2a')](_0x4977f0);};}exports[_0xc7a2('0x2b')]=function(_0xf057ec,_0x5e970e){var _0x8cb6bf={},_0x926b6c={},_0x496386={'count':0x0,'rows':[]};var _0xe8c061=_[_0xc7a2('0x2c')](db[_0xc7a2('0x2d')]['rawAttributes'],function(_0x2820a9){return{'name':_0x2820a9['fieldName'],'type':_0x2820a9[_0xc7a2('0x2e')]['key']};});_0x926b6c['model']=_[_0xc7a2('0x2c')](_0xe8c061,'name');_0x926b6c['query']=_[_0xc7a2('0x2f')](_0xf057ec['query']);_0x926b6c[_0xc7a2('0x30')]=_['intersection'](_0x926b6c[_0xc7a2('0x31')],_0x926b6c[_0xc7a2('0x32')]);_0x8cb6bf[_0xc7a2('0x33')]=_[_0xc7a2('0x34')](_0x926b6c[_0xc7a2('0x31')],qs[_0xc7a2('0x35')](_0xf057ec[_0xc7a2('0x32')][_0xc7a2('0x35')]));_0x8cb6bf[_0xc7a2('0x33')]=_0x8cb6bf[_0xc7a2('0x33')]['length']?_0x8cb6bf[_0xc7a2('0x33')]:_0x926b6c[_0xc7a2('0x31')];if(!_0xf057ec['query'][_0xc7a2('0x36')](_0xc7a2('0x37'))){_0x8cb6bf[_0xc7a2('0x1e')]=qs[_0xc7a2('0x1e')](_0xf057ec[_0xc7a2('0x32')][_0xc7a2('0x1e')]);_0x8cb6bf[_0xc7a2('0x1b')]=qs['offset'](_0xf057ec[_0xc7a2('0x32')][_0xc7a2('0x1b')]);}_0x8cb6bf[_0xc7a2('0x38')]=qs['sort'](_0xf057ec[_0xc7a2('0x32')][_0xc7a2('0x39')]);_0x8cb6bf['where']=qs[_0xc7a2('0x30')](_[_0xc7a2('0x3a')](_0xf057ec[_0xc7a2('0x32')],_0x926b6c[_0xc7a2('0x30')]),_0xe8c061);if(_0xf057ec[_0xc7a2('0x32')][_0xc7a2('0x3b')]){_0x8cb6bf[_0xc7a2('0x3c')]=_[_0xc7a2('0x3d')](_0x8cb6bf['where'],{'$or':_[_0xc7a2('0x2c')](_0xe8c061,function(_0x5114e3){if(_0x5114e3[_0xc7a2('0x2e')]!==_0xc7a2('0x3e')){var _0x2cd014={};_0x2cd014[_0x5114e3[_0xc7a2('0x29')]]={'$like':'%'+_0xf057ec[_0xc7a2('0x32')][_0xc7a2('0x3b')]+'%'};return _0x2cd014;}})});}_0x8cb6bf=_[_0xc7a2('0x3d')]({},_0x8cb6bf,_0xf057ec[_0xc7a2('0x3f')]);var _0x582516={'where':_0x8cb6bf[_0xc7a2('0x3c')]};return db[_0xc7a2('0x2d')][_0xc7a2('0x1d')](_0x582516)[_0xc7a2('0x23')](function(_0x54e6b1){_0x496386[_0xc7a2('0x1d')]=_0x54e6b1;if(_0xf057ec['query']['includeAll']){_0x8cb6bf['include']=[{'all':!![]}];}return db[_0xc7a2('0x2d')][_0xc7a2('0x40')](_0x8cb6bf);})[_0xc7a2('0x23')](function(_0x2c3cb1){_0x496386[_0xc7a2('0x41')]=_0x2c3cb1;return _0x496386;})[_0xc7a2('0x23')](respondWithFilteredResult(_0x5e970e,_0x8cb6bf))[_0xc7a2('0x42')](handleError(_0x5e970e,null));};exports[_0xc7a2('0x43')]=function(_0x246482,_0x4a7d8c){var _0x55c689={'raw':!![],'where':{'id':_0x246482[_0xc7a2('0x44')]['id']}},_0x4bcb42={};_0x4bcb42[_0xc7a2('0x31')]=_['keys'](db[_0xc7a2('0x2d')][_0xc7a2('0x45')]);_0x4bcb42[_0xc7a2('0x32')]=_['keys'](_0x246482[_0xc7a2('0x32')]);_0x4bcb42['filters']=_[_0xc7a2('0x34')](_0x4bcb42[_0xc7a2('0x31')],_0x4bcb42['query']);_0x55c689['attributes']=_[_0xc7a2('0x34')](_0x4bcb42[_0xc7a2('0x31')],qs['fields'](_0x246482[_0xc7a2('0x32')][_0xc7a2('0x35')]));_0x55c689[_0xc7a2('0x33')]=_0x55c689[_0xc7a2('0x33')][_0xc7a2('0x46')]?_0x55c689[_0xc7a2('0x33')]:_0x4bcb42['model'];if(_0x246482[_0xc7a2('0x32')][_0xc7a2('0x47')]){_0x55c689[_0xc7a2('0x48')]=[{'all':!![]}];}_0x55c689=_[_0xc7a2('0x3d')]({},_0x55c689,_0x246482['options']);return db[_0xc7a2('0x2d')][_0xc7a2('0x49')](_0x55c689)[_0xc7a2('0x23')](handleEntityNotFound(_0x4a7d8c,null))[_0xc7a2('0x23')](respondWithResult(_0x4a7d8c,null))[_0xc7a2('0x42')](handleError(_0x4a7d8c,null));};exports[_0xc7a2('0x4a')]=function(_0x7378ed,_0xdc4644){return db['Tag'][_0xc7a2('0x4a')](_0x7378ed[_0xc7a2('0x4b')],{})[_0xc7a2('0x23')](function(_0x324a95){var _0x4ef4c1=_0x7378ed[_0xc7a2('0x4c')][_0xc7a2('0x24')]({'plain':!![]});if(!_0x4ef4c1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ef4c1[_0xc7a2('0x4d')]===_0xc7a2('0x4c')){var _0xb09c6f=_0x324a95[_0xc7a2('0x24')]({'plain':!![]});var _0x970647='Tags';return db[_0xc7a2('0x4e')][_0xc7a2('0x49')]({'where':{'name':_0x970647,'userProfileId':_0x4ef4c1[_0xc7a2('0x4f')]},'raw':!![]})['then'](function(_0x52e416){if(_0x52e416&&_0x52e416[_0xc7a2('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0xb09c6f[_0xc7a2('0x29')],'resourceId':_0xb09c6f['id'],'type':_0x52e416[_0xc7a2('0x29')],'sectionId':_0x52e416['id']},{})['then'](function(){return _0x324a95;});}else{return _0x324a95;}})['catch'](function(_0x1a677a){logger[_0xc7a2('0x51')](_0xc7a2('0x52'),_0x1a677a);throw _0x1a677a;});}return _0x324a95;})[_0xc7a2('0x23')](respondWithResult(_0xdc4644,0xc9))[_0xc7a2('0x42')](handleError(_0xdc4644,null));};exports['update']=function(_0x3754a4,_0x179bc1){if(_0x3754a4['body']['id']){delete _0x3754a4[_0xc7a2('0x4b')]['id'];}return db[_0xc7a2('0x2d')][_0xc7a2('0x49')]({'where':{'id':_0x3754a4[_0xc7a2('0x44')]['id']}})[_0xc7a2('0x23')](handleEntityNotFound(_0x179bc1,null))['then'](saveUpdates(_0x3754a4[_0xc7a2('0x4b')],null))[_0xc7a2('0x23')](respondWithResult(_0x179bc1,null))[_0xc7a2('0x42')](handleError(_0x179bc1,null));};exports['destroy']=function(_0x3b1645,_0x3174ef){return db[_0xc7a2('0x2d')][_0xc7a2('0x49')]({'where':{'id':_0x3b1645[_0xc7a2('0x44')]['id']}})[_0xc7a2('0x23')](handleEntityNotFound(_0x3174ef,null))['then'](removeEntity(_0x3174ef,null))[_0xc7a2('0x42')](handleError(_0x3174ef,null));};
\ No newline at end of file
+var _0x98d3=['sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','save','update','destroy','then','Tags','UserProfileResource','stack','name','map','Tag','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','intersection','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','error','params','eml-format','rimraf','fast-json-patch','moment','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x12f748,_0x2940bc){var _0x279b30=function(_0x4975da){while(--_0x4975da){_0x12f748['push'](_0x12f748['shift']());}};_0x279b30(++_0x2940bc);}(_0x98d3,0x173));var _0x398d=function(_0x1795cc,_0x5f121a){_0x1795cc=_0x1795cc-0x0;var _0x18f3e6=_0x98d3[_0x1795cc];return _0x18f3e6;};'use strict';var emlformat=require(_0x398d('0x0'));var rimraf=require(_0x398d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x398d('0x2'));var rp=require('request-promise');var moment=require(_0x398d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x398d('0x4'));var util=require(_0x398d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x398d('0x6'));var ejs=require(_0x398d('0x7'));var fs=require('fs');var fs_extra=require(_0x398d('0x8'));var _=require('lodash');var squel=require(_0x398d('0x9'));var crypto=require(_0x398d('0xa'));var jsforce=require(_0x398d('0xb'));var deskjs=require(_0x398d('0xc'));var toCsv=require(_0x398d('0x6'));var querystring=require('querystring');var Papa=require(_0x398d('0xd'));var Redis=require(_0x398d('0xe'));var authService=require(_0x398d('0xf'));var qs=require(_0x398d('0x10'));var as=require(_0x398d('0x11'));var hardwareService=require(_0x398d('0x12'));var logger=require(_0x398d('0x13'))(_0x398d('0x14'));var utils=require('../../config/utils');var config=require(_0x398d('0x15'));var licenseUtil=require(_0x398d('0x16'));var db=require(_0x398d('0x17'))['db'];function respondWithStatusCode(_0x12eb91,_0x15a424){_0x15a424=_0x15a424||0xcc;return function(_0x91619e){if(_0x91619e){return _0x12eb91[_0x398d('0x18')](_0x15a424);}return _0x12eb91[_0x398d('0x19')](_0x15a424)[_0x398d('0x1a')]();};}function respondWithResult(_0x396015,_0x1fc998){_0x1fc998=_0x1fc998||0xc8;return function(_0x537bb6){if(_0x537bb6){return _0x396015['status'](_0x1fc998)[_0x398d('0x1b')](_0x537bb6);}};}function respondWithFilteredResult(_0x36cde2,_0x347508){return function(_0x2197b4){if(_0x2197b4){var _0x278004=typeof _0x347508[_0x398d('0x1c')]===_0x398d('0x1d')&&typeof _0x347508[_0x398d('0x1e')]==='undefined';var _0x26b9a0=_0x2197b4['count'];var _0x673840=_0x278004?0x0:_0x347508[_0x398d('0x1c')];var _0x297768=_0x278004?_0x2197b4['count']:_0x347508['offset']+_0x347508['limit'];var _0x28b124;if(_0x297768>=_0x26b9a0){_0x297768=_0x26b9a0;_0x28b124=0xc8;}else{_0x28b124=0xce;}_0x36cde2[_0x398d('0x19')](_0x28b124);return _0x36cde2[_0x398d('0x1f')](_0x398d('0x20'),_0x673840+'-'+_0x297768+'/'+_0x26b9a0)[_0x398d('0x1b')](_0x2197b4);}return null;};}function patchUpdates(_0x1d9e75){return function(_0x38659b){try{jsonpatch['apply'](_0x38659b,_0x1d9e75,!![]);}catch(_0x55c98e){return BPromise['reject'](_0x55c98e);}return _0x38659b[_0x398d('0x21')]();};}function saveUpdates(_0x3b275a,_0x1ea5f9){return function(_0x2affed){if(_0x2affed){return _0x2affed[_0x398d('0x22')](_0x3b275a)['then'](function(_0x5c4c70){return _0x5c4c70;});}return null;};}function removeEntity(_0x31e87d,_0x497ad1){return function(_0x55a48d){if(_0x55a48d){return _0x55a48d[_0x398d('0x23')]()[_0x398d('0x24')](function(){var _0x5ae3b4=_0x55a48d['get']({'plain':!![]});var _0x4aad76=_0x398d('0x25');return db[_0x398d('0x26')][_0x398d('0x23')]({'where':{'type':_0x4aad76,'resourceId':_0x5ae3b4['id']}})[_0x398d('0x24')](function(){return _0x55a48d;});})[_0x398d('0x24')](function(){_0x31e87d[_0x398d('0x19')](0xcc)[_0x398d('0x1a')]();});}};}function handleEntityNotFound(_0x17318c,_0x4f4466){return function(_0x35bd19){if(!_0x35bd19){_0x17318c['sendStatus'](0x194);}return _0x35bd19;};}function handleError(_0x4aa568,_0x124bc9){_0x124bc9=_0x124bc9||0x1f4;return function(_0x27bc6e){logger['error'](_0x27bc6e[_0x398d('0x27')]);if(_0x27bc6e['name']){delete _0x27bc6e[_0x398d('0x28')];}_0x4aa568[_0x398d('0x19')](_0x124bc9)['send'](_0x27bc6e);};}exports['index']=function(_0x410db2,_0x2ca780){var _0x4abab6={},_0x397f07={},_0x2fbcce={'count':0x0,'rows':[]};var _0x204b27=_[_0x398d('0x29')](db[_0x398d('0x2a')][_0x398d('0x2b')],function(_0x490bee){return{'name':_0x490bee['fieldName'],'type':_0x490bee[_0x398d('0x2c')][_0x398d('0x2d')]};});_0x397f07[_0x398d('0x2e')]=_[_0x398d('0x29')](_0x204b27,_0x398d('0x28'));_0x397f07[_0x398d('0x2f')]=_[_0x398d('0x30')](_0x410db2[_0x398d('0x2f')]);_0x397f07[_0x398d('0x31')]=_['intersection'](_0x397f07[_0x398d('0x2e')],_0x397f07[_0x398d('0x2f')]);_0x4abab6[_0x398d('0x32')]=_['intersection'](_0x397f07['model'],qs[_0x398d('0x33')](_0x410db2[_0x398d('0x2f')][_0x398d('0x33')]));_0x4abab6[_0x398d('0x32')]=_0x4abab6[_0x398d('0x32')][_0x398d('0x34')]?_0x4abab6[_0x398d('0x32')]:_0x397f07[_0x398d('0x2e')];if(!_0x410db2[_0x398d('0x2f')][_0x398d('0x35')](_0x398d('0x36'))){_0x4abab6[_0x398d('0x1e')]=qs[_0x398d('0x1e')](_0x410db2[_0x398d('0x2f')][_0x398d('0x1e')]);_0x4abab6[_0x398d('0x1c')]=qs[_0x398d('0x1c')](_0x410db2[_0x398d('0x2f')][_0x398d('0x1c')]);}_0x4abab6['order']=qs[_0x398d('0x37')](_0x410db2[_0x398d('0x2f')][_0x398d('0x37')]);_0x4abab6[_0x398d('0x38')]=qs[_0x398d('0x31')](_[_0x398d('0x39')](_0x410db2[_0x398d('0x2f')],_0x397f07['filters']),_0x204b27);if(_0x410db2[_0x398d('0x2f')][_0x398d('0x3a')]){_0x4abab6[_0x398d('0x38')]=_[_0x398d('0x3b')](_0x4abab6[_0x398d('0x38')],{'$or':_[_0x398d('0x29')](_0x204b27,function(_0x4d57cc){if(_0x4d57cc[_0x398d('0x2c')]!=='VIRTUAL'){var _0x208eb2={};_0x208eb2[_0x4d57cc[_0x398d('0x28')]]={'$like':'%'+_0x410db2[_0x398d('0x2f')][_0x398d('0x3a')]+'%'};return _0x208eb2;}})});}_0x4abab6=_[_0x398d('0x3b')]({},_0x4abab6,_0x410db2['options']);var _0xa20d77={'where':_0x4abab6[_0x398d('0x38')]};return db['Tag'][_0x398d('0x3c')](_0xa20d77)[_0x398d('0x24')](function(_0x3d72ee){_0x2fbcce[_0x398d('0x3c')]=_0x3d72ee;if(_0x410db2[_0x398d('0x2f')][_0x398d('0x3d')]){_0x4abab6[_0x398d('0x3e')]=[{'all':!![]}];}return db[_0x398d('0x2a')][_0x398d('0x3f')](_0x4abab6);})['then'](function(_0x2760f2){_0x2fbcce[_0x398d('0x40')]=_0x2760f2;return _0x2fbcce;})[_0x398d('0x24')](respondWithFilteredResult(_0x2ca780,_0x4abab6))[_0x398d('0x41')](handleError(_0x2ca780,null));};exports[_0x398d('0x42')]=function(_0x227984,_0x505b78){var _0x26b0c6={'raw':!![],'where':{'id':_0x227984['params']['id']}},_0x1a6bdc={};_0x1a6bdc[_0x398d('0x2e')]=_[_0x398d('0x30')](db[_0x398d('0x2a')]['rawAttributes']);_0x1a6bdc[_0x398d('0x2f')]=_[_0x398d('0x30')](_0x227984[_0x398d('0x2f')]);_0x1a6bdc[_0x398d('0x31')]=_[_0x398d('0x43')](_0x1a6bdc['model'],_0x1a6bdc[_0x398d('0x2f')]);_0x26b0c6[_0x398d('0x32')]=_[_0x398d('0x43')](_0x1a6bdc['model'],qs[_0x398d('0x33')](_0x227984[_0x398d('0x2f')]['fields']));_0x26b0c6[_0x398d('0x32')]=_0x26b0c6[_0x398d('0x32')][_0x398d('0x34')]?_0x26b0c6[_0x398d('0x32')]:_0x1a6bdc[_0x398d('0x2e')];if(_0x227984[_0x398d('0x2f')][_0x398d('0x3d')]){_0x26b0c6[_0x398d('0x3e')]=[{'all':!![]}];}_0x26b0c6=_['merge']({},_0x26b0c6,_0x227984[_0x398d('0x44')]);return db[_0x398d('0x2a')]['find'](_0x26b0c6)['then'](handleEntityNotFound(_0x505b78,null))[_0x398d('0x24')](respondWithResult(_0x505b78,null))[_0x398d('0x41')](handleError(_0x505b78,null));};exports[_0x398d('0x45')]=function(_0x35d260,_0x49a6de){return db[_0x398d('0x2a')]['create'](_0x35d260[_0x398d('0x46')],{})['then'](function(_0x3c27a1){var _0x588548=_0x35d260['user']['get']({'plain':!![]});if(!_0x588548)throw new Error(_0x398d('0x47'));if(_0x588548[_0x398d('0x48')]===_0x398d('0x49')){var _0x3fa030=_0x3c27a1['get']({'plain':!![]});var _0x5d864a=_0x398d('0x25');return db[_0x398d('0x4a')][_0x398d('0x4b')]({'where':{'name':_0x5d864a,'userProfileId':_0x588548['userProfileId']},'raw':!![]})[_0x398d('0x24')](function(_0x2fcb61){if(_0x2fcb61&&_0x2fcb61[_0x398d('0x4c')]===0x0){return db[_0x398d('0x26')][_0x398d('0x45')]({'name':_0x3fa030[_0x398d('0x28')],'resourceId':_0x3fa030['id'],'type':_0x2fcb61['name'],'sectionId':_0x2fcb61['id']},{})[_0x398d('0x24')](function(){return _0x3c27a1;});}else{return _0x3c27a1;}})[_0x398d('0x41')](function(_0x453bf5){logger[_0x398d('0x4d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x453bf5);throw _0x453bf5;});}return _0x3c27a1;})[_0x398d('0x24')](respondWithResult(_0x49a6de,0xc9))[_0x398d('0x41')](handleError(_0x49a6de,null));};exports[_0x398d('0x22')]=function(_0x3ec128,_0x536fd1){if(_0x3ec128['body']['id']){delete _0x3ec128[_0x398d('0x46')]['id'];}return db['Tag'][_0x398d('0x4b')]({'where':{'id':_0x3ec128[_0x398d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x536fd1,null))[_0x398d('0x24')](saveUpdates(_0x3ec128['body'],null))[_0x398d('0x24')](respondWithResult(_0x536fd1,null))[_0x398d('0x41')](handleError(_0x536fd1,null));};exports[_0x398d('0x23')]=function(_0x1c4c38,_0x360e67){return db[_0x398d('0x2a')][_0x398d('0x4b')]({'where':{'id':_0x1c4c38[_0x398d('0x4e')]['id']}})[_0x398d('0x24')](handleEntityNotFound(_0x360e67,null))[_0x398d('0x24')](removeEntity(_0x360e67,null))[_0x398d('0x41')](handleError(_0x360e67,null));};
\ No newline at end of file
index a679bc3..dc3f7f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['Tag','tools_tags','util','bluebird','request-promise','path','../../config/environment','./tag.attributes','exports','define'];(function(_0x379018,_0x213a9c){var _0x31f9ef=function(_0x53656d){while(--_0x53656d){_0x379018['push'](_0x379018['shift']());}};_0x31f9ef(++_0x213a9c);}(_0x958a,0x192));var _0xa958=function(_0x3f7f09,_0x41edf0){_0x3f7f09=_0x3f7f09-0x0;var _0x55aab=_0x958a[_0x3f7f09];return _0x55aab;};'use strict';var _=require('lodash');var util=require(_0xa958('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa958('0x1'));var rp=require(_0xa958('0x2'));var fs=require('fs');var path=require(_0xa958('0x3'));var rimraf=require('rimraf');var config=require(_0xa958('0x4'));var attributes=require(_0xa958('0x5'));module[_0xa958('0x6')]=function(_0x7dee3c,_0x47ad2f){return _0x7dee3c[_0xa958('0x7')](_0xa958('0x8'),attributes,{'tableName':_0xa958('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde18=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags'];(function(_0x274f24,_0x4f79b6){var _0x64c7bb=function(_0x500dfb){while(--_0x500dfb){_0x274f24['push'](_0x274f24['shift']());}};_0x64c7bb(++_0x4f79b6);}(_0xde18,0xd2));var _0x8de1=function(_0x1c5795,_0xe81bfe){_0x1c5795=_0x1c5795-0x0;var _0x18bb68=_0xde18[_0x1c5795];return _0x18bb68;};'use strict';var _=require(_0x8de1('0x0'));var util=require(_0x8de1('0x1'));var logger=require(_0x8de1('0x2'))(_0x8de1('0x3'));var moment=require('moment');var BPromise=require(_0x8de1('0x4'));var rp=require(_0x8de1('0x5'));var fs=require('fs');var path=require(_0x8de1('0x6'));var rimraf=require(_0x8de1('0x7'));var config=require(_0x8de1('0x8'));var attributes=require(_0x8de1('0x9'));module[_0x8de1('0xa')]=function(_0x1b3297,_0x28a08b){return _0x1b3297[_0x8de1('0xb')](_0x8de1('0xc'),attributes,{'tableName':_0x8de1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 09bf2e7..874581f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc3=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','Tag,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','util'];(function(_0x2edc88,_0x4a6f0b){var _0x42fe3b=function(_0x3add2f){while(--_0x3add2f){_0x2edc88['push'](_0x2edc88['shift']());}};_0x42fe3b(++_0x4a6f0b);}(_0x4bc3,0x16e));var _0x34bc=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x4bc3[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0x34bc('0x0'));var util=require(_0x34bc('0x1'));var moment=require('moment');var BPromise=require(_0x34bc('0x2'));var rs=require(_0x34bc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x34bc('0x4'))['db'];var utils=require(_0x34bc('0x5'));var logger=require(_0x34bc('0x6'))(_0x34bc('0x7'));var config=require(_0x34bc('0x8'));var jayson=require(_0x34bc('0x9'));var client=jayson[_0x34bc('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21451b,_0x50320d,_0x502087){return new BPromise(function(_0x18a01c,_0x474108){return client[_0x34bc('0xb')](_0x21451b,_0x502087)[_0x34bc('0xc')](function(_0x409105){logger[_0x34bc('0xd')]('Tag,\x20%s,\x20%s',_0x50320d,'request\x20sent');logger[_0x34bc('0xe')](_0x34bc('0xf'),_0x50320d,_0x34bc('0x10'),JSON['stringify'](_0x409105));if(_0x409105[_0x34bc('0x11')]){if(_0x409105['error'][_0x34bc('0x12')]===0x1f4){logger[_0x34bc('0x11')](_0x34bc('0x13'),_0x50320d,_0x409105['error'][_0x34bc('0x14')]);return _0x474108(_0x409105['error'][_0x34bc('0x14')]);}logger[_0x34bc('0x11')](_0x34bc('0x13'),_0x50320d,_0x409105['error']['message']);return _0x18a01c(_0x409105[_0x34bc('0x11')]['message']);}else{logger[_0x34bc('0xd')](_0x34bc('0x13'),_0x50320d,_0x34bc('0x10'));_0x18a01c(_0x409105[_0x34bc('0x15')][_0x34bc('0x14')]);}})[_0x34bc('0x16')](function(_0x5e132d){logger['error']('Tag,\x20%s,\x20%s',_0x50320d,_0x5e132d);_0x474108(_0x5e132d);});});}
\ No newline at end of file
+var _0xe5b3=['request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Tag,\x20%s,\x20%s'];(function(_0x36f3df,_0x2b1621){var _0xcfb7b7=function(_0xcc9fc0){while(--_0xcc9fc0){_0x36f3df['push'](_0x36f3df['shift']());}};_0xcfb7b7(++_0x2b1621);}(_0xe5b3,0x133));var _0x3e5b=function(_0x15e19d,_0x60a2f6){_0x15e19d=_0x15e19d-0x0;var _0x3f88fd=_0xe5b3[_0x15e19d];return _0x3f88fd;};'use strict';var _=require('lodash');var util=require(_0x3e5b('0x0'));var moment=require(_0x3e5b('0x1'));var BPromise=require(_0x3e5b('0x2'));var rs=require(_0x3e5b('0x3'));var fs=require('fs');var Redis=require(_0x3e5b('0x4'));var db=require(_0x3e5b('0x5'))['db'];var utils=require(_0x3e5b('0x6'));var logger=require(_0x3e5b('0x7'))(_0x3e5b('0x8'));var config=require(_0x3e5b('0x9'));var jayson=require(_0x3e5b('0xa'));var client=jayson['client'][_0x3e5b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5dcf55,_0x534e7d,_0x41d46f){return new BPromise(function(_0x3901c2,_0x3c7c2e){return client[_0x3e5b('0xc')](_0x5dcf55,_0x41d46f)['then'](function(_0x4ed6bc){logger[_0x3e5b('0xd')](_0x3e5b('0xe'),_0x534e7d,_0x3e5b('0xf'));logger[_0x3e5b('0x10')](_0x3e5b('0x11'),_0x534e7d,'request\x20sent',JSON[_0x3e5b('0x12')](_0x4ed6bc));if(_0x4ed6bc['error']){if(_0x4ed6bc[_0x3e5b('0x13')][_0x3e5b('0x14')]===0x1f4){logger[_0x3e5b('0x13')](_0x3e5b('0xe'),_0x534e7d,_0x4ed6bc[_0x3e5b('0x13')][_0x3e5b('0x15')]);return _0x3c7c2e(_0x4ed6bc[_0x3e5b('0x13')]['message']);}logger[_0x3e5b('0x13')]('Tag,\x20%s,\x20%s',_0x534e7d,_0x4ed6bc['error']['message']);return _0x3901c2(_0x4ed6bc[_0x3e5b('0x13')][_0x3e5b('0x15')]);}else{logger[_0x3e5b('0xd')]('Tag,\x20%s,\x20%s',_0x534e7d,_0x3e5b('0xf'));_0x3901c2(_0x4ed6bc['result']['message']);}})[_0x3e5b('0x16')](function(_0x11b41b){logger['error'](_0x3e5b('0xe'),_0x534e7d,_0x11b41b);_0x3c7c2e(_0x11b41b);});});}
\ No newline at end of file
index dbcc04e..1d7fd6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
index cebbfa1..dda4fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x545fae,_0x3aaac9){var _0x5c19ad=function(_0x39b4d9){while(--_0x39b4d9){_0x545fae['push'](_0x545fae['shift']());}};_0x5c19ad(++_0x3aaac9);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x2f22a9,_0x519e37){var _0x5160ef=function(_0x3422b5){while(--_0x3422b5){_0x2f22a9['push'](_0x2f22a9['shift']());}};_0x5160ef(++_0x519e37);}(_0x2032,0xd9));var _0x2203=function(_0xeb27d5,_0x270b22){_0xeb27d5=_0xeb27d5-0x0;var _0x13e9d0=_0x2032[_0xeb27d5];return _0x13e9d0;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 091e645..0680216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd965=['Team','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','UserProfileResource','body','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','VoiceQueueId','destroy','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','VoicePrefixId','end','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','toLowerCase','Queue','keys','Queues','add','capitalize','ids','removeQueues','remove','addAgents','isArray','Voice','Chat','Sms','Fax','Whatsapp','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','online','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','voicePause','all','UserVoicePrefix','spread','removeAgents','Mail','Queue:remove','TeamVoicePrefix','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','error','stack','name','send','index','map'];(function(_0x1bd5e5,_0x3dae85){var _0x3c27ff=function(_0xfe8422){while(--_0xfe8422){_0x1bd5e5['push'](_0x1bd5e5['shift']());}};_0x3c27ff(++_0x3dae85);}(_0xd965,0x111));var _0x5d96=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd965[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5d96('0x0'));var zipdir=require(_0x5d96('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5d96('0x2'));var moment=require(_0x5d96('0x3'));var BPromise=require(_0x5d96('0x4'));var Mustache=require(_0x5d96('0x5'));var util=require(_0x5d96('0x6'));var path=require(_0x5d96('0x7'));var sox=require(_0x5d96('0x8'));var csv=require(_0x5d96('0x9'));var ejs=require(_0x5d96('0xa'));var fs=require('fs');var fs_extra=require(_0x5d96('0xb'));var _=require('lodash');var squel=require(_0x5d96('0xc'));var crypto=require(_0x5d96('0xd'));var jsforce=require(_0x5d96('0xe'));var deskjs=require(_0x5d96('0xf'));var toCsv=require(_0x5d96('0x9'));var querystring=require(_0x5d96('0x10'));var Papa=require(_0x5d96('0x11'));var Redis=require(_0x5d96('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5d96('0x13'));var as=require(_0x5d96('0x14'));var hardwareService=require(_0x5d96('0x15'));var logger=require(_0x5d96('0x16'))(_0x5d96('0x17'));var utils=require(_0x5d96('0x18'));var config=require(_0x5d96('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x5d96('0x1a')]=_[_0x5d96('0x1b')](config[_0x5d96('0x1a')],{'host':_0x5d96('0x1c'),'port':0x18eb});var socket=require(_0x5d96('0x1d'))(new Redis(config[_0x5d96('0x1a')]));require(_0x5d96('0x1e'))[_0x5d96('0x1f')](socket);function respondWithStatusCode(_0x2df24c,_0x10da39){_0x10da39=_0x10da39||0xcc;return function(_0xe6f5e4){if(_0xe6f5e4){return _0x2df24c[_0x5d96('0x20')](_0x10da39);}return _0x2df24c[_0x5d96('0x21')](_0x10da39)['end']();};}function respondWithResult(_0x4d4c24,_0x397820){_0x397820=_0x397820||0xc8;return function(_0x20e9dd){if(_0x20e9dd){return _0x4d4c24[_0x5d96('0x21')](_0x397820)[_0x5d96('0x22')](_0x20e9dd);}};}function respondWithFilteredResult(_0x1b7451,_0x5b54f5){return function(_0x1296c2){if(_0x1296c2){var _0x4bdb60=typeof _0x5b54f5['offset']===_0x5d96('0x23')&&typeof _0x5b54f5[_0x5d96('0x24')]===_0x5d96('0x23');var _0x47dfee=_0x1296c2[_0x5d96('0x25')];var _0x114fe8=_0x4bdb60?0x0:_0x5b54f5[_0x5d96('0x26')];var _0x5e67b3=_0x4bdb60?_0x1296c2[_0x5d96('0x25')]:_0x5b54f5[_0x5d96('0x26')]+_0x5b54f5[_0x5d96('0x24')];var _0x1977f3;if(_0x5e67b3>=_0x47dfee){_0x5e67b3=_0x47dfee;_0x1977f3=0xc8;}else{_0x1977f3=0xce;}_0x1b7451[_0x5d96('0x21')](_0x1977f3);return _0x1b7451[_0x5d96('0x27')](_0x5d96('0x28'),_0x114fe8+'-'+_0x5e67b3+'/'+_0x47dfee)[_0x5d96('0x22')](_0x1296c2);}return null;};}function patchUpdates(_0xd5e5a){return function(_0x9d7318){try{jsonpatch[_0x5d96('0x29')](_0x9d7318,_0xd5e5a,!![]);}catch(_0x29132d){return BPromise[_0x5d96('0x2a')](_0x29132d);}return _0x9d7318[_0x5d96('0x2b')]();};}function saveUpdates(_0x491d2b,_0x1fbb82){return function(_0x1d965c){if(_0x1d965c){return _0x1d965c[_0x5d96('0x2c')](_0x491d2b)['then'](function(_0xcfbc5){return _0xcfbc5;});}return null;};}function handleEntityNotFound(_0x412cb9,_0x890c66){return function(_0x5754f0){if(!_0x5754f0){_0x412cb9[_0x5d96('0x20')](0x194);}return _0x5754f0;};}function handleError(_0x1bded7,_0x2a4e8b){_0x2a4e8b=_0x2a4e8b||0x1f4;return function(_0x401e3f){logger[_0x5d96('0x2d')](_0x401e3f[_0x5d96('0x2e')]);if(_0x401e3f['name']){delete _0x401e3f[_0x5d96('0x2f')];}_0x1bded7[_0x5d96('0x21')](_0x2a4e8b)[_0x5d96('0x30')](_0x401e3f);};}exports[_0x5d96('0x31')]=function(_0x285bb6,_0x3a40a2){var _0x1db8bf={},_0x2585b8={},_0x1c4a15={'count':0x0,'rows':[]};var _0x425062=_[_0x5d96('0x32')](db[_0x5d96('0x33')]['rawAttributes'],function(_0xffbae7){return{'name':_0xffbae7['fieldName'],'type':_0xffbae7[_0x5d96('0x34')][_0x5d96('0x35')]};});_0x2585b8[_0x5d96('0x36')]=_[_0x5d96('0x32')](_0x425062,_0x5d96('0x2f'));_0x2585b8[_0x5d96('0x37')]=_['keys'](_0x285bb6[_0x5d96('0x37')]);_0x2585b8[_0x5d96('0x38')]=_[_0x5d96('0x39')](_0x2585b8['model'],_0x2585b8['query']);_0x1db8bf[_0x5d96('0x3a')]=_['intersection'](_0x2585b8['model'],qs['fields'](_0x285bb6[_0x5d96('0x37')][_0x5d96('0x3b')]));_0x1db8bf['attributes']=_0x1db8bf[_0x5d96('0x3a')][_0x5d96('0x3c')]?_0x1db8bf['attributes']:_0x2585b8[_0x5d96('0x36')];if(!_0x285bb6[_0x5d96('0x37')][_0x5d96('0x3d')](_0x5d96('0x3e'))){_0x1db8bf['limit']=qs[_0x5d96('0x24')](_0x285bb6[_0x5d96('0x37')][_0x5d96('0x24')]);_0x1db8bf[_0x5d96('0x26')]=qs['offset'](_0x285bb6[_0x5d96('0x37')][_0x5d96('0x26')]);}_0x1db8bf[_0x5d96('0x3f')]=qs[_0x5d96('0x40')](_0x285bb6[_0x5d96('0x37')]['sort']);_0x1db8bf[_0x5d96('0x41')]=qs[_0x5d96('0x38')](_[_0x5d96('0x42')](_0x285bb6[_0x5d96('0x37')],_0x2585b8[_0x5d96('0x38')]),_0x425062);if(_0x285bb6[_0x5d96('0x37')]['filter']){_0x1db8bf[_0x5d96('0x41')]=_[_0x5d96('0x43')](_0x1db8bf['where'],{'$or':_[_0x5d96('0x32')](_0x425062,function(_0x4a8a85){if(_0x4a8a85[_0x5d96('0x34')]!==_0x5d96('0x44')){var _0xbb1a5f={};_0xbb1a5f[_0x4a8a85[_0x5d96('0x2f')]]={'$like':'%'+_0x285bb6['query'][_0x5d96('0x45')]+'%'};return _0xbb1a5f;}})});}_0x1db8bf=_[_0x5d96('0x43')]({},_0x1db8bf,_0x285bb6[_0x5d96('0x46')]);var _0x16f517={'where':_0x1db8bf[_0x5d96('0x41')]};return db[_0x5d96('0x33')]['count'](_0x16f517)[_0x5d96('0x47')](function(_0x15b519){_0x1c4a15[_0x5d96('0x25')]=_0x15b519;if(_0x285bb6[_0x5d96('0x37')][_0x5d96('0x48')]){_0x1db8bf[_0x5d96('0x49')]=[{'all':!![]}];}return db[_0x5d96('0x33')][_0x5d96('0x4a')](_0x1db8bf);})[_0x5d96('0x47')](function(_0x353a2d){_0x1c4a15[_0x5d96('0x4b')]=_0x353a2d;return _0x1c4a15;})[_0x5d96('0x47')](respondWithFilteredResult(_0x3a40a2,_0x1db8bf))[_0x5d96('0x4c')](handleError(_0x3a40a2,null));};exports[_0x5d96('0x4d')]=function(_0x1c4e05,_0x53bbb8){var _0x1fb971={'raw':![],'where':{'id':_0x1c4e05[_0x5d96('0x4e')]['id']}},_0x1bd8f6={};_0x1bd8f6[_0x5d96('0x36')]=_['keys'](db[_0x5d96('0x33')][_0x5d96('0x4f')]);_0x1bd8f6['query']=_['keys'](_0x1c4e05[_0x5d96('0x37')]);_0x1bd8f6[_0x5d96('0x38')]=_['intersection'](_0x1bd8f6[_0x5d96('0x36')],_0x1bd8f6[_0x5d96('0x37')]);_0x1fb971[_0x5d96('0x3a')]=_[_0x5d96('0x39')](_0x1bd8f6[_0x5d96('0x36')],qs[_0x5d96('0x3b')](_0x1c4e05[_0x5d96('0x37')]['fields']));_0x1fb971[_0x5d96('0x3a')]=_0x1fb971[_0x5d96('0x3a')][_0x5d96('0x3c')]?_0x1fb971[_0x5d96('0x3a')]:_0x1bd8f6[_0x5d96('0x36')];if(_0x1c4e05[_0x5d96('0x37')]['includeAll']){_0x1fb971['include']=[{'all':!![]}];}_0x1fb971=_[_0x5d96('0x43')]({},_0x1fb971,_0x1c4e05[_0x5d96('0x46')]);return db[_0x5d96('0x33')][_0x5d96('0x50')](_0x1fb971)['then'](handleEntityNotFound(_0x53bbb8,null))[_0x5d96('0x47')](respondWithResult(_0x53bbb8,null))[_0x5d96('0x4c')](handleError(_0x53bbb8,null));};exports[_0x5d96('0x51')]=function(_0x24e5b1,_0x168802){return db[_0x5d96('0x33')]['create'](_0x24e5b1['body'],{})[_0x5d96('0x47')](function(_0x2344c6){var _0x554b5f=_0x24e5b1[_0x5d96('0x52')][_0x5d96('0x53')]({'plain':!![]});if(!_0x554b5f)throw new Error(_0x5d96('0x54'));if(_0x554b5f[_0x5d96('0x55')]===_0x5d96('0x52')){var _0x40f3bc=_0x2344c6[_0x5d96('0x53')]({'plain':!![]});var _0xa43550=_0x5d96('0x56');return db[_0x5d96('0x57')][_0x5d96('0x50')]({'where':{'name':_0xa43550,'userProfileId':_0x554b5f[_0x5d96('0x58')]},'raw':!![]})['then'](function(_0xa4713c){if(_0xa4713c&&_0xa4713c['autoAssociation']===0x0){return db[_0x5d96('0x59')]['create']({'name':_0x40f3bc['name'],'resourceId':_0x40f3bc['id'],'type':_0xa4713c[_0x5d96('0x2f')],'sectionId':_0xa4713c['id']},{})[_0x5d96('0x47')](function(){return _0x2344c6;});}else{return _0x2344c6;}})[_0x5d96('0x4c')](function(_0x36dffc){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x36dffc);throw _0x36dffc;});}return _0x2344c6;})[_0x5d96('0x47')](respondWithResult(_0x168802,0xc9))[_0x5d96('0x4c')](handleError(_0x168802,null));};exports[_0x5d96('0x2c')]=function(_0x3ac66f,_0x484e15){if(_0x3ac66f[_0x5d96('0x5a')]['id']){delete _0x3ac66f['body']['id'];}return db['Team'][_0x5d96('0x50')]({'where':{'id':_0x3ac66f[_0x5d96('0x4e')]['id']}})[_0x5d96('0x47')](handleEntityNotFound(_0x484e15,null))[_0x5d96('0x47')](saveUpdates(_0x3ac66f[_0x5d96('0x5a')],null))['then'](respondWithResult(_0x484e15,null))['catch'](handleError(_0x484e15,null));};exports['destroy']=function(_0x5374bb,_0x355e4a){var _0x311c7b=_0x5374bb[_0x5d96('0x4e')]['id'];var _0x956002=[];return db['sequelize'][_0x5d96('0x5b')](function(_0x2d4c6a){var _0x5d984b=_0x5d96('0x5c')+_0x311c7b;return db[_0x5d96('0x5d')][_0x5d96('0x37')](_0x5d984b,{'type':db[_0x5d96('0x5e')][_0x5d96('0x5f')]['SELECT'],'raw':!![],'transaction':_0x2d4c6a})['then'](function(_0x58c8ba){_0x956002=_[_0x5d96('0x32')](_0x58c8ba,function(_0x51181e){return Number(_0x51181e['UserId']);});})['then'](function(){var _0x143bde=_0x5d96('0x60')+_0x311c7b;return db['sequelize'][_0x5d96('0x37')](_0x143bde,{'type':db['Sequelize'][_0x5d96('0x5f')][_0x5d96('0x61')],'raw':!![],'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(_0xaada79){var _0x55d80c=_[_0x5d96('0x32')](_0xaada79,function(_0x150f64){return Number(_0x150f64[_0x5d96('0x62')]);});return db['UserVoiceQueue'][_0x5d96('0x63')]({'where':{'UserId':{'$in':_0x956002},'VoiceQueueId':{'$in':_0x55d80c}},'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(){var _0x31305b=_0x5d96('0x64')+_0x311c7b;return db['sequelize'][_0x5d96('0x37')](_0x31305b,{'type':db[_0x5d96('0x5e')][_0x5d96('0x5f')]['SELECT'],'raw':!![],'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(_0x50cfd7){var _0x562ea6=_[_0x5d96('0x32')](_0x50cfd7,function(_0x3604a5){return Number(_0x3604a5[_0x5d96('0x65')]);});return db[_0x5d96('0x66')][_0x5d96('0x63')]({'where':{'UserId':{'$in':_0x956002},'MailQueueId':{'$in':_0x562ea6}},'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(){var _0x3d847f=_0x5d96('0x67')+_0x311c7b;return db['sequelize'][_0x5d96('0x37')](_0x3d847f,{'type':db['Sequelize'][_0x5d96('0x5f')][_0x5d96('0x61')],'raw':!![],'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(_0x29eaa9){var _0x5dcb2a=_[_0x5d96('0x32')](_0x29eaa9,function(_0x181a92){return Number(_0x181a92[_0x5d96('0x68')]);});return db[_0x5d96('0x69')][_0x5d96('0x63')]({'where':{'UserId':{'$in':_0x956002},'SmsQueueId':{'$in':_0x5dcb2a}},'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(){var _0x33199c=_0x5d96('0x6a')+_0x311c7b;return db[_0x5d96('0x5d')][_0x5d96('0x37')](_0x33199c,{'type':db[_0x5d96('0x5e')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x2d4c6a});})['then'](function(_0x4e9a16){var _0x2c1de9=_['map'](_0x4e9a16,function(_0x381ba9){return Number(_0x381ba9[_0x5d96('0x6b')]);});return db['UserChatQueue'][_0x5d96('0x63')]({'where':{'UserId':{'$in':_0x956002},'ChatQueueId':{'$in':_0x2c1de9}},'transaction':_0x2d4c6a});})['then'](function(){var _0x599597=_0x5d96('0x6c')+_0x311c7b;return db[_0x5d96('0x5d')][_0x5d96('0x37')](_0x599597,{'type':db['Sequelize'][_0x5d96('0x5f')][_0x5d96('0x61')],'raw':!![],'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(_0x297065){var _0x5e6bb6=_[_0x5d96('0x32')](_0x297065,function(_0x347645){return Number(_0x347645[_0x5d96('0x6d')]);});return db[_0x5d96('0x6e')][_0x5d96('0x63')]({'where':{'UserId':{'$in':_0x956002},'FaxQueueId':{'$in':_0x5e6bb6}},'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(){var _0x4b7892='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x311c7b;return db[_0x5d96('0x5d')]['query'](_0x4b7892,{'type':db[_0x5d96('0x5e')][_0x5d96('0x5f')]['SELECT'],'raw':!![],'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(_0x4cd682){var _0x209510=_[_0x5d96('0x32')](_0x4cd682,function(_0x1280fe){return Number(_0x1280fe[_0x5d96('0x6f')]);});return db[_0x5d96('0x70')]['destroy']({'where':{'UserId':{'$in':_0x956002},'OpenchannelQueueId':{'$in':_0x209510}},'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(){var _0x238ba0=_0x5d96('0x71')+_0x311c7b;return db['sequelize'][_0x5d96('0x37')](_0x238ba0,{'type':db['Sequelize'][_0x5d96('0x5f')][_0x5d96('0x61')],'raw':!![],'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(_0x68e551){var _0x2e4f1e=_[_0x5d96('0x32')](_0x68e551,function(_0x49c245){return Number(_0x49c245[_0x5d96('0x72')]);});return db[_0x5d96('0x73')][_0x5d96('0x63')]({'where':{'UserId':{'$in':_0x956002},'WhatsappQueueId':{'$in':_0x2e4f1e}},'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(){return db['TeamVoicePrefix']['find']({'where':{'TeamId':_0x311c7b}});})[_0x5d96('0x47')](function(_0xd58f9b){if(_0xd58f9b===null){return;}return db['UserVoicePrefix']['destroy']({'where':{'UserId':{'$in':_0x956002},'VoicePrefixId':_0xd58f9b[_0x5d96('0x74')]},'transaction':_0x2d4c6a});})[_0x5d96('0x47')](function(){return db[_0x5d96('0x33')][_0x5d96('0x63')]({'where':{'id':_0x311c7b},'cascade':!![],'transaction':_0x2d4c6a});})['then'](function(_0xab5086){if(_0xab5086===0x0){_0x355e4a['sendStatus'](0x194);}else{return db[_0x5d96('0x59')][_0x5d96('0x63')]({'where':{'type':_0x5d96('0x56'),'resourceId':_0x311c7b},'cascade':!![],'transaction':_0x2d4c6a})[_0x5d96('0x47')](function(){_0x355e4a[_0x5d96('0x21')](0xcc)[_0x5d96('0x75')]();});}})[_0x5d96('0x4c')](function(_0x137f69){_0x355e4a[_0x5d96('0x21')](0x1f4)[_0x5d96('0x30')](_0x137f69);});});};exports[_0x5d96('0x76')]=function(_0x19ffae,_0x186d1f,_0x1c9967){return db['Team'][_0x5d96('0x77')]({'where':{'id':_0x19ffae['params']['id']}})['then'](handleEntityNotFound(_0x186d1f,null))[_0x5d96('0x47')](function(_0x132042){if(!_0x19ffae[_0x5d96('0x37')][_0x5d96('0x78')]||!utils[_0x5d96('0x79')](_0x19ffae[_0x5d96('0x37')]['channel'])){throw new db[(_0x5d96('0x5e'))][(_0x5d96('0x7a'))](_0x5d96('0x7b'));}var _0x3e7307={};var _0x104b66={};_0x104b66[_0x5d96('0x36')]=_['keys'](db[_['capitalize'](_0x19ffae[_0x5d96('0x37')][_0x5d96('0x78')][_0x5d96('0x7c')]())+_0x5d96('0x7d')][_0x5d96('0x4f')]);_0x104b66['query']=_[_0x5d96('0x7e')](_0x19ffae[_0x5d96('0x37')]);_0x104b66[_0x5d96('0x38')]=_['intersection'](_0x104b66[_0x5d96('0x36')],_0x104b66['query']);_0x3e7307[_0x5d96('0x3a')]=_[_0x5d96('0x39')](_0x104b66['model'],qs['fields'](_0x19ffae[_0x5d96('0x37')][_0x5d96('0x3b')]));_0x3e7307[_0x5d96('0x3a')]=_0x3e7307[_0x5d96('0x3a')][_0x5d96('0x3c')]?_0x3e7307[_0x5d96('0x3a')]:_0x104b66[_0x5d96('0x36')];_0x3e7307[_0x5d96('0x24')]=qs[_0x5d96('0x24')](_0x19ffae[_0x5d96('0x37')][_0x5d96('0x24')]);_0x3e7307['offset']=qs[_0x5d96('0x26')](_0x19ffae[_0x5d96('0x37')]['offset']);_0x3e7307[_0x5d96('0x3f')]=qs[_0x5d96('0x40')](_0x19ffae['query'][_0x5d96('0x40')]);_0x3e7307['where']=qs[_0x5d96('0x38')](_[_0x5d96('0x42')](_0x19ffae[_0x5d96('0x37')],_0x104b66[_0x5d96('0x38')]));_0x3e7307=_[_0x5d96('0x43')]({},_0x3e7307,_0x19ffae[_0x5d96('0x46')]);return _0x132042[_0x5d96('0x53')+_['capitalize'](_0x19ffae[_0x5d96('0x37')][_0x5d96('0x78')][_0x5d96('0x7c')]())+_0x5d96('0x7f')](_0x3e7307);})[_0x5d96('0x47')](respondWithResult(_0x186d1f,null))['catch'](handleError(_0x186d1f,null));};exports['addQueues']=function(_0x484002,_0x8679b7,_0x3e3b51){return db[_0x5d96('0x33')]['findOne']({'where':{'id':_0x484002[_0x5d96('0x4e')]['id']}})[_0x5d96('0x47')](function(_0x2ac56e){if(_0x2ac56e){if(!_0x484002[_0x5d96('0x5a')]['channel']||!utils[_0x5d96('0x79')](_0x484002[_0x5d96('0x5a')][_0x5d96('0x78')])){throw new db[(_0x5d96('0x5e'))][(_0x5d96('0x7a'))](_0x5d96('0x7b'));}return _0x2ac56e[_0x5d96('0x80')+_[_0x5d96('0x81')](_0x484002['body']['channel']['toLowerCase']())+_0x5d96('0x7f')](_0x484002[_0x5d96('0x5a')][_0x5d96('0x82')]);}return null;})[_0x5d96('0x47')](handleEntityNotFound(_0x8679b7,null))[_0x5d96('0x47')](respondWithStatusCode(_0x8679b7,null))[_0x5d96('0x4c')](handleError(_0x8679b7,null));};exports[_0x5d96('0x83')]=function(_0x5979ab,_0x122464,_0x4e74ab){return db[_0x5d96('0x33')]['findOne']({'where':{'id':_0x5979ab['params']['id']}})[_0x5d96('0x47')](function(_0x15a866){if(_0x15a866){if(!_0x5979ab[_0x5d96('0x37')]['channel']||!utils[_0x5d96('0x79')](_0x5979ab[_0x5d96('0x37')]['channel'])){throw new db[(_0x5d96('0x5e'))][(_0x5d96('0x7a'))](_0x5d96('0x7b'));}return _0x15a866[_0x5d96('0x84')+_[_0x5d96('0x81')](_0x5979ab[_0x5d96('0x37')]['channel']['toLowerCase']())+_0x5d96('0x7f')](_0x5979ab[_0x5d96('0x37')][_0x5d96('0x82')]);}return null;})[_0x5d96('0x47')](handleEntityNotFound(_0x122464,null))[_0x5d96('0x47')](respondWithStatusCode(_0x122464,null))[_0x5d96('0x4c')](handleError(_0x122464,null));};exports[_0x5d96('0x85')]=function(_0x578ab1,_0x4af5b8){var _0x4e9290=_[_0x5d96('0x86')](_0x578ab1['body']['ids'])?_0x578ab1[_0x5d96('0x5a')][_0x5d96('0x82')]:[_0x578ab1[_0x5d96('0x5a')]['ids']];var _0x4cd659=_0x578ab1['params']['id'];return db[_0x5d96('0x33')][_0x5d96('0x50')]({'where':{'id':_0x4cd659}})[_0x5d96('0x47')](handleEntityNotFound(_0x4af5b8,null))[_0x5d96('0x47')](function(_0x588f0a){if(_0x588f0a){var _0x12e9bc=[_0x5d96('0x87'),_0x5d96('0x88'),'Mail',_0x5d96('0x89'),_0x5d96('0x8a'),'Openchannel',_0x5d96('0x8b')];return db[_0x5d96('0x5d')]['transaction'](function(_0x424b53){var _0x1095a8=_[_0x5d96('0x32')](_0x12e9bc,function(_0x59738d){var _0x38c502={'attributes':['id','name']};if(_0x59738d===_0x5d96('0x87')){_0x38c502['through']={'attributes':[_0x5d96('0x8c')]};}return _0x588f0a[_0x5d96('0x53')+_0x59738d+_0x5d96('0x7f')](_0x38c502)[_0x5d96('0x47')](function(_0x1df0a9){var _0x13287e=_[_0x5d96('0x32')](_0x1df0a9,function(_0x577ca2){var _0x5c8411=_[_0x5d96('0x32')](_0x4e9290,function(_0x4e7a24){var _0x4a2f1b={'where':{'UserId':_0x4e7a24,[_0x59738d+_0x5d96('0x8d')]:_0x577ca2['id']},'transaction':_0x424b53};if(_0x59738d===_0x5d96('0x87')){_0x4a2f1b[_0x5d96('0x1b')]={'penalty':_0x577ca2[_0x5d96('0x8e')][_0x5d96('0x8c')]};}return db[_0x5d96('0x8f')+_0x59738d+_0x5d96('0x7d')][_0x5d96('0x90')](_0x4a2f1b)[_0x5d96('0x47')](function(){socket[_0x5d96('0x91')]('user'+_0x59738d+'Queue:save',{'UserId':_0x4e7a24,[_0x59738d+'QueueId']:_0x577ca2['id']});if(_0x59738d!==_0x5d96('0x87')){return;}return db[_0x5d96('0x8f')][_0x5d96('0x4a')]({'where':{'id':_0x4e9290,'online':0x1},'attributes':['id','name',_0x5d96('0x92'),'voicePause',_0x5d96('0x93')],'raw':!![]})[_0x5d96('0x47')](function(_0x521f8e){var _0x31055b=_[_0x5d96('0x32')](_0x521f8e,function(_0x226641){return db[_0x5d96('0x94')][_0x5d96('0x95')]({'membername':_0x226641[_0x5d96('0x2f')],'UserId':_0x226641['id'],'queue_name':_0x577ca2[_0x5d96('0x2f')],'VoiceQueueId':_0x577ca2['id'],'interface':_[_0x5d96('0x96')](_0x226641['interface'])?util[_0x5d96('0x97')](_0x5d96('0x98'),_0x226641[_0x5d96('0x2f')]):_0x226641[_0x5d96('0x93')],'paused':_0x226641[_0x5d96('0x99')]||![],'penalty':_0x577ca2[_0x5d96('0x8e')][_0x5d96('0x8c')]},{'transaction':_0x424b53});});return Promise[_0x5d96('0x9a')](_0x31055b);});});});return Promise[_0x5d96('0x9a')](_0x5c8411);});return Promise[_0x5d96('0x9a')](_0x13287e);})[_0x5d96('0x47')](function(){return db['TeamVoicePrefix'][_0x5d96('0x77')]({'where':{'teamId':_0x4cd659}})[_0x5d96('0x47')](function(_0x137dfd){if(_0x137dfd){var _0x21b235=_[_0x5d96('0x32')](_0x4e9290,function(_0x43a604){db[_0x5d96('0x9b')]['upsert']({'UserId':_0x43a604,'VoicePrefixId':_0x137dfd[_0x5d96('0x74')]});});return Promise['all'](_0x21b235);}});});});return Promise[_0x5d96('0x9a')](_0x1095a8)[_0x5d96('0x47')](function(){return _0x588f0a[_0x5d96('0x85')](_0x4e9290,{'transaction':_0x424b53})[_0x5d96('0x9c')](function(_0x57f207){return _0x57f207;});});});}})[_0x5d96('0x47')](respondWithResult(_0x4af5b8,null))['catch'](handleError(_0x4af5b8,null));};exports[_0x5d96('0x9d')]=function(_0x10db95,_0x30bdd4){var _0x3ab379=_[_0x5d96('0x86')](_0x10db95[_0x5d96('0x37')][_0x5d96('0x82')])?_0x10db95[_0x5d96('0x37')][_0x5d96('0x82')]:[_0x10db95[_0x5d96('0x37')][_0x5d96('0x82')]];var _0x1c5394=_0x10db95['params']['id'];return db[_0x5d96('0x33')][_0x5d96('0x50')]({'where':{'id':_0x1c5394}})[_0x5d96('0x47')](handleEntityNotFound(_0x30bdd4,null))[_0x5d96('0x47')](function(_0x49e412){if(_0x49e412){var _0x460eb4=[_0x5d96('0x87'),_0x5d96('0x88'),_0x5d96('0x9e'),'Sms',_0x5d96('0x8a'),'Openchannel',_0x5d96('0x8b')];return db['sequelize'][_0x5d96('0x5b')](function(_0x397e89){var _0x1da357=_['map'](_0x460eb4,function(_0x5a6d7e){var _0x439ef6={'attributes':['id',_0x5d96('0x2f')]};return _0x49e412['get'+_0x5a6d7e+_0x5d96('0x7f')](_0x439ef6)[_0x5d96('0x47')](function(_0x86d6d7){var _0x248b6e=_[_0x5d96('0x32')](_0x86d6d7,function(_0xa7c75f){return _0xa7c75f[_0x5d96('0x9d')](_0x3ab379,{'transaction':_0x397e89})[_0x5d96('0x47')](function(){var _0x199a98=_[_0x5d96('0x32')](_0x3ab379,function(_0x4f51e8){socket['emit'](_0x5d96('0x52')+_0x5a6d7e+_0x5d96('0x9f'),{'UserId':Number(_0x4f51e8),[_0x5a6d7e+'QueueId']:_0xa7c75f['id']});if(_0x5a6d7e!=='Voice'){return;}return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0xa7c75f['id'],'UserId':_0x4f51e8},'transaction':_0x397e89});});return Promise[_0x5d96('0x9a')](_0x199a98);});});return Promise[_0x5d96('0x9a')](_0x248b6e);});});return Promise[_0x5d96('0x9a')](_0x1da357)['then'](function(){return _0x49e412[_0x5d96('0x9d')](_0x3ab379,{'transaction':_0x397e89});})['then'](function(){return db[_0x5d96('0xa0')][_0x5d96('0x77')]({'where':{'teamId':_0x1c5394}})['then'](function(_0x562a88){if(_0x562a88){var _0x37f43c=_[_0x5d96('0x32')](_0x3ab379,function(_0x40223d){db[_0x5d96('0x9b')]['destroy']({'where':{'UserId':_0x40223d,'VoicePrefixId':_0x562a88[_0x5d96('0x74')]}});});return Promise[_0x5d96('0x9a')](_0x37f43c);}});});});}})[_0x5d96('0x47')](respondWithStatusCode(_0x30bdd4,null))['catch'](handleError(_0x30bdd4,null));};exports[_0x5d96('0xa1')]=function(_0x172098,_0x5cd318,_0x5d39f1){var _0x1d45f3={};var _0x500254={};var _0x5a0d95;var _0x4e3c23;return db[_0x5d96('0x33')][_0x5d96('0x77')]({'where':{'id':_0x172098[_0x5d96('0x4e')]['id']}})[_0x5d96('0x47')](handleEntityNotFound(_0x5cd318,null))['then'](function(_0x33c637){if(_0x33c637){_0x5a0d95=_0x33c637;_0x500254['model']=_['keys'](db[_0x5d96('0x8f')][_0x5d96('0x4f')]);_0x500254[_0x5d96('0x37')]=_[_0x5d96('0x7e')](_0x172098[_0x5d96('0x37')]);_0x500254[_0x5d96('0x38')]=_[_0x5d96('0x39')](_0x500254[_0x5d96('0x36')],_0x500254[_0x5d96('0x37')]);_0x1d45f3['attributes']=_[_0x5d96('0x39')](_0x500254[_0x5d96('0x36')],qs[_0x5d96('0x3b')](_0x172098['query'][_0x5d96('0x3b')]));_0x1d45f3[_0x5d96('0x3a')]=_0x1d45f3[_0x5d96('0x3a')][_0x5d96('0x3c')]?_0x1d45f3['attributes']:_0x500254[_0x5d96('0x36')];_0x1d45f3[_0x5d96('0x3f')]=qs['sort'](_0x172098[_0x5d96('0x37')][_0x5d96('0x40')]);_0x1d45f3['where']=qs['filters'](_['pick'](_0x172098[_0x5d96('0x37')],_0x500254[_0x5d96('0x38')]));if(_0x172098[_0x5d96('0x37')][_0x5d96('0x45')]){_0x1d45f3[_0x5d96('0x41')]=_['merge'](_0x1d45f3[_0x5d96('0x41')],{'$or':_[_0x5d96('0x32')](_0x1d45f3[_0x5d96('0x3a')],function(_0x2bf2ad){var _0x46e13b={};_0x46e13b[_0x2bf2ad]={'$like':'%'+_0x172098[_0x5d96('0x37')]['filter']+'%'};return _0x46e13b;})});}_0x1d45f3=_[_0x5d96('0x43')]({},_0x1d45f3,_0x172098['options']);return _0x5a0d95[_0x5d96('0xa1')](_0x1d45f3);}})['then'](function(_0xc19e4c){if(_0xc19e4c){_0x4e3c23=_0xc19e4c[_0x5d96('0x3c')];if(!_0x172098['query']['hasOwnProperty']('nolimit')){_0x1d45f3[_0x5d96('0x24')]=qs[_0x5d96('0x24')](_0x172098[_0x5d96('0x37')]['limit']);_0x1d45f3[_0x5d96('0x26')]=qs[_0x5d96('0x26')](_0x172098[_0x5d96('0x37')][_0x5d96('0x26')]);}return _0x5a0d95[_0x5d96('0xa1')](_0x1d45f3);}})[_0x5d96('0x47')](function(_0x217e4a){if(_0x217e4a){return _0x217e4a?{'count':_0x4e3c23,'rows':_0x217e4a}:null;}})[_0x5d96('0x47')](respondWithResult(_0x5cd318,null))[_0x5d96('0x4c')](handleError(_0x5cd318,null));};
\ No newline at end of file
+var _0x2f7e=['UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','UserProfileResource','end','findOne','channel','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','ValidationError','add','ids','remove','addAgents','isArray','Voice','Chat','Mail','Sms','Fax','Openchannel','through','penalty','QueueId','defaults','User','findOrCreate','emit','Queue:save','online','voicePause','interface','upsert','format','SIP/%s','TeamVoiceQueue','all','spread','removeAgents','Whatsapp','get','UserVoiceQueueRt','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','status','offset','undefined','limit','count','set','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','includeAll','findAll','rows','catch','show','params','keys','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','QueryTypes','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','VoiceQueueId','destroy','UserMailQueue','Sequelize','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2f7e,0x173));var _0xe2f7=function(_0x4d84f5,_0x6421d){_0x4d84f5=_0x4d84f5-0x0;var _0xf5f2e3=_0x2f7e[_0x4d84f5];return _0xf5f2e3;};'use strict';var emlformat=require(_0xe2f7('0x0'));var rimraf=require(_0xe2f7('0x1'));var zipdir=require(_0xe2f7('0x2'));var jsonpatch=require(_0xe2f7('0x3'));var rp=require(_0xe2f7('0x4'));var moment=require('moment');var BPromise=require(_0xe2f7('0x5'));var Mustache=require(_0xe2f7('0x6'));var util=require(_0xe2f7('0x7'));var path=require(_0xe2f7('0x8'));var sox=require(_0xe2f7('0x9'));var csv=require(_0xe2f7('0xa'));var ejs=require(_0xe2f7('0xb'));var fs=require('fs');var fs_extra=require(_0xe2f7('0xc'));var _=require(_0xe2f7('0xd'));var squel=require(_0xe2f7('0xe'));var crypto=require('crypto');var jsforce=require(_0xe2f7('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe2f7('0xa'));var querystring=require(_0xe2f7('0x10'));var Papa=require(_0xe2f7('0x11'));var Redis=require(_0xe2f7('0x12'));var authService=require(_0xe2f7('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe2f7('0x14'));var hardwareService=require(_0xe2f7('0x15'));var logger=require(_0xe2f7('0x16'))('api');var utils=require(_0xe2f7('0x17'));var config=require(_0xe2f7('0x18'));var licenseUtil=require(_0xe2f7('0x19'));var db=require(_0xe2f7('0x1a'))['db'];config[_0xe2f7('0x1b')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe2f7('0x1c'))(new Redis(config[_0xe2f7('0x1b')]));require('./team.socket')[_0xe2f7('0x1d')](socket);function respondWithStatusCode(_0x56f8d5,_0x3ddb7e){_0x3ddb7e=_0x3ddb7e||0xcc;return function(_0x769390){if(_0x769390){return _0x56f8d5['sendStatus'](_0x3ddb7e);}return _0x56f8d5[_0xe2f7('0x1e')](_0x3ddb7e)['end']();};}function respondWithResult(_0x6a88e5,_0x2e7f23){_0x2e7f23=_0x2e7f23||0xc8;return function(_0x138e36){if(_0x138e36){return _0x6a88e5[_0xe2f7('0x1e')](_0x2e7f23)['json'](_0x138e36);}};}function respondWithFilteredResult(_0x2a0748,_0xd2057e){return function(_0x33281b){if(_0x33281b){var _0x40cadd=typeof _0xd2057e[_0xe2f7('0x1f')]===_0xe2f7('0x20')&&typeof _0xd2057e[_0xe2f7('0x21')]===_0xe2f7('0x20');var _0x2359c5=_0x33281b[_0xe2f7('0x22')];var _0x336a6c=_0x40cadd?0x0:_0xd2057e['offset'];var _0x4ac950=_0x40cadd?_0x33281b['count']:_0xd2057e[_0xe2f7('0x1f')]+_0xd2057e[_0xe2f7('0x21')];var _0x4b63df;if(_0x4ac950>=_0x2359c5){_0x4ac950=_0x2359c5;_0x4b63df=0xc8;}else{_0x4b63df=0xce;}_0x2a0748['status'](_0x4b63df);return _0x2a0748[_0xe2f7('0x23')]('Content-Range',_0x336a6c+'-'+_0x4ac950+'/'+_0x2359c5)['json'](_0x33281b);}return null;};}function patchUpdates(_0xe1128f){return function(_0x56dfe5){try{jsonpatch[_0xe2f7('0x24')](_0x56dfe5,_0xe1128f,!![]);}catch(_0x313135){return BPromise[_0xe2f7('0x25')](_0x313135);}return _0x56dfe5[_0xe2f7('0x26')]();};}function saveUpdates(_0x507f2b,_0x24c50c){return function(_0x58a55e){if(_0x58a55e){return _0x58a55e[_0xe2f7('0x27')](_0x507f2b)[_0xe2f7('0x28')](function(_0x343f80){return _0x343f80;});}return null;};}function handleEntityNotFound(_0x585053,_0x4c2133){return function(_0x4d3000){if(!_0x4d3000){_0x585053[_0xe2f7('0x29')](0x194);}return _0x4d3000;};}function handleError(_0x32923d,_0x35a6e1){_0x35a6e1=_0x35a6e1||0x1f4;return function(_0x2ba90f){logger[_0xe2f7('0x2a')](_0x2ba90f[_0xe2f7('0x2b')]);if(_0x2ba90f[_0xe2f7('0x2c')]){delete _0x2ba90f[_0xe2f7('0x2c')];}_0x32923d['status'](_0x35a6e1)[_0xe2f7('0x2d')](_0x2ba90f);};}exports[_0xe2f7('0x2e')]=function(_0x4cf654,_0x24d7cd){var _0x4a6067={},_0x3a2ee6={},_0x222bcf={'count':0x0,'rows':[]};var _0x3f7845=_[_0xe2f7('0x2f')](db[_0xe2f7('0x30')][_0xe2f7('0x31')],function(_0x236013){return{'name':_0x236013[_0xe2f7('0x32')],'type':_0x236013[_0xe2f7('0x33')]['key']};});_0x3a2ee6[_0xe2f7('0x34')]=_[_0xe2f7('0x2f')](_0x3f7845,_0xe2f7('0x2c'));_0x3a2ee6[_0xe2f7('0x35')]=_['keys'](_0x4cf654[_0xe2f7('0x35')]);_0x3a2ee6['filters']=_[_0xe2f7('0x36')](_0x3a2ee6[_0xe2f7('0x34')],_0x3a2ee6[_0xe2f7('0x35')]);_0x4a6067[_0xe2f7('0x37')]=_[_0xe2f7('0x36')](_0x3a2ee6[_0xe2f7('0x34')],qs[_0xe2f7('0x38')](_0x4cf654[_0xe2f7('0x35')][_0xe2f7('0x38')]));_0x4a6067[_0xe2f7('0x37')]=_0x4a6067[_0xe2f7('0x37')][_0xe2f7('0x39')]?_0x4a6067[_0xe2f7('0x37')]:_0x3a2ee6[_0xe2f7('0x34')];if(!_0x4cf654[_0xe2f7('0x35')][_0xe2f7('0x3a')](_0xe2f7('0x3b'))){_0x4a6067['limit']=qs[_0xe2f7('0x21')](_0x4cf654['query']['limit']);_0x4a6067[_0xe2f7('0x1f')]=qs[_0xe2f7('0x1f')](_0x4cf654[_0xe2f7('0x35')][_0xe2f7('0x1f')]);}_0x4a6067[_0xe2f7('0x3c')]=qs[_0xe2f7('0x3d')](_0x4cf654[_0xe2f7('0x35')]['sort']);_0x4a6067[_0xe2f7('0x3e')]=qs[_0xe2f7('0x3f')](_[_0xe2f7('0x40')](_0x4cf654['query'],_0x3a2ee6['filters']),_0x3f7845);if(_0x4cf654[_0xe2f7('0x35')]['filter']){_0x4a6067['where']=_[_0xe2f7('0x41')](_0x4a6067[_0xe2f7('0x3e')],{'$or':_[_0xe2f7('0x2f')](_0x3f7845,function(_0x11a6ab){if(_0x11a6ab[_0xe2f7('0x33')]!=='VIRTUAL'){var _0x3b5eff={};_0x3b5eff[_0x11a6ab['name']]={'$like':'%'+_0x4cf654[_0xe2f7('0x35')][_0xe2f7('0x42')]+'%'};return _0x3b5eff;}})});}_0x4a6067=_['merge']({},_0x4a6067,_0x4cf654['options']);var _0x18fa65={'where':_0x4a6067[_0xe2f7('0x3e')]};return db['Team'][_0xe2f7('0x22')](_0x18fa65)[_0xe2f7('0x28')](function(_0x4ad05d){_0x222bcf['count']=_0x4ad05d;if(_0x4cf654[_0xe2f7('0x35')][_0xe2f7('0x43')]){_0x4a6067['include']=[{'all':!![]}];}return db['Team'][_0xe2f7('0x44')](_0x4a6067);})[_0xe2f7('0x28')](function(_0x42c3ee){_0x222bcf[_0xe2f7('0x45')]=_0x42c3ee;return _0x222bcf;})[_0xe2f7('0x28')](respondWithFilteredResult(_0x24d7cd,_0x4a6067))[_0xe2f7('0x46')](handleError(_0x24d7cd,null));};exports[_0xe2f7('0x47')]=function(_0x4814d6,_0x57cd22){var _0x15eb15={'raw':![],'where':{'id':_0x4814d6[_0xe2f7('0x48')]['id']}},_0x409db3={};_0x409db3[_0xe2f7('0x34')]=_['keys'](db['Team']['rawAttributes']);_0x409db3[_0xe2f7('0x35')]=_[_0xe2f7('0x49')](_0x4814d6[_0xe2f7('0x35')]);_0x409db3[_0xe2f7('0x3f')]=_['intersection'](_0x409db3[_0xe2f7('0x34')],_0x409db3['query']);_0x15eb15[_0xe2f7('0x37')]=_[_0xe2f7('0x36')](_0x409db3[_0xe2f7('0x34')],qs[_0xe2f7('0x38')](_0x4814d6[_0xe2f7('0x35')][_0xe2f7('0x38')]));_0x15eb15['attributes']=_0x15eb15[_0xe2f7('0x37')][_0xe2f7('0x39')]?_0x15eb15['attributes']:_0x409db3[_0xe2f7('0x34')];if(_0x4814d6['query']['includeAll']){_0x15eb15['include']=[{'all':!![]}];}_0x15eb15=_[_0xe2f7('0x41')]({},_0x15eb15,_0x4814d6[_0xe2f7('0x4a')]);return db[_0xe2f7('0x30')]['find'](_0x15eb15)[_0xe2f7('0x28')](handleEntityNotFound(_0x57cd22,null))['then'](respondWithResult(_0x57cd22,null))[_0xe2f7('0x46')](handleError(_0x57cd22,null));};exports[_0xe2f7('0x4b')]=function(_0x181add,_0x2fc19a){return db[_0xe2f7('0x30')][_0xe2f7('0x4b')](_0x181add[_0xe2f7('0x4c')],{})[_0xe2f7('0x28')](function(_0x538676){var _0x5e734a=_0x181add[_0xe2f7('0x4d')]['get']({'plain':!![]});if(!_0x5e734a)throw new Error(_0xe2f7('0x4e'));if(_0x5e734a[_0xe2f7('0x4f')]===_0xe2f7('0x4d')){var _0x354974=_0x538676['get']({'plain':!![]});var _0x25245c='Teams';return db[_0xe2f7('0x50')][_0xe2f7('0x51')]({'where':{'name':_0x25245c,'userProfileId':_0x5e734a[_0xe2f7('0x52')]},'raw':!![]})['then'](function(_0x68bf35){if(_0x68bf35&&_0x68bf35[_0xe2f7('0x53')]===0x0){return db['UserProfileResource'][_0xe2f7('0x4b')]({'name':_0x354974[_0xe2f7('0x2c')],'resourceId':_0x354974['id'],'type':_0x68bf35[_0xe2f7('0x2c')],'sectionId':_0x68bf35['id']},{})[_0xe2f7('0x28')](function(){return _0x538676;});}else{return _0x538676;}})['catch'](function(_0x19a692){logger[_0xe2f7('0x2a')](_0xe2f7('0x54'),_0x19a692);throw _0x19a692;});}return _0x538676;})[_0xe2f7('0x28')](respondWithResult(_0x2fc19a,0xc9))[_0xe2f7('0x46')](handleError(_0x2fc19a,null));};exports[_0xe2f7('0x27')]=function(_0xbebfd,_0x13e848){if(_0xbebfd['body']['id']){delete _0xbebfd[_0xe2f7('0x4c')]['id'];}return db[_0xe2f7('0x30')]['find']({'where':{'id':_0xbebfd['params']['id']}})[_0xe2f7('0x28')](handleEntityNotFound(_0x13e848,null))[_0xe2f7('0x28')](saveUpdates(_0xbebfd[_0xe2f7('0x4c')],null))[_0xe2f7('0x28')](respondWithResult(_0x13e848,null))[_0xe2f7('0x46')](handleError(_0x13e848,null));};exports['destroy']=function(_0xccbc46,_0x5a4654){var _0x4c7863=_0xccbc46['params']['id'];var _0x52a084=[];return db[_0xe2f7('0x55')][_0xe2f7('0x56')](function(_0x54d44f){var _0x27bf99=_0xe2f7('0x57')+_0x4c7863;return db[_0xe2f7('0x55')][_0xe2f7('0x35')](_0x27bf99,{'type':db['Sequelize'][_0xe2f7('0x58')]['SELECT'],'raw':!![],'transaction':_0x54d44f})['then'](function(_0x7a5b47){_0x52a084=_[_0xe2f7('0x2f')](_0x7a5b47,function(_0x4bac3e){return Number(_0x4bac3e[_0xe2f7('0x59')]);});})[_0xe2f7('0x28')](function(){var _0x407d8a=_0xe2f7('0x5a')+_0x4c7863;return db[_0xe2f7('0x55')][_0xe2f7('0x35')](_0x407d8a,{'type':db['Sequelize'][_0xe2f7('0x58')][_0xe2f7('0x5b')],'raw':!![],'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(_0x1ec2a8){var _0x545611=_[_0xe2f7('0x2f')](_0x1ec2a8,function(_0x11aff7){return Number(_0x11aff7[_0xe2f7('0x5c')]);});return db['UserVoiceQueue'][_0xe2f7('0x5d')]({'where':{'UserId':{'$in':_0x52a084},'VoiceQueueId':{'$in':_0x545611}},'transaction':_0x54d44f});})['then'](function(){var _0x2c2141='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4c7863;return db[_0xe2f7('0x55')][_0xe2f7('0x35')](_0x2c2141,{'type':db['Sequelize'][_0xe2f7('0x58')][_0xe2f7('0x5b')],'raw':!![],'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(_0x243d3c){var _0x4049ab=_[_0xe2f7('0x2f')](_0x243d3c,function(_0x5ec8cc){return Number(_0x5ec8cc['MailQueueId']);});return db[_0xe2f7('0x5e')][_0xe2f7('0x5d')]({'where':{'UserId':{'$in':_0x52a084},'MailQueueId':{'$in':_0x4049ab}},'transaction':_0x54d44f});})['then'](function(){var _0x2f6d6c='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4c7863;return db[_0xe2f7('0x55')][_0xe2f7('0x35')](_0x2f6d6c,{'type':db[_0xe2f7('0x5f')][_0xe2f7('0x58')][_0xe2f7('0x5b')],'raw':!![],'transaction':_0x54d44f});})['then'](function(_0x2a447b){var _0x59720a=_[_0xe2f7('0x2f')](_0x2a447b,function(_0x2b5f68){return Number(_0x2b5f68[_0xe2f7('0x60')]);});return db[_0xe2f7('0x61')]['destroy']({'where':{'UserId':{'$in':_0x52a084},'SmsQueueId':{'$in':_0x59720a}},'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(){var _0x20b7c3=_0xe2f7('0x62')+_0x4c7863;return db['sequelize']['query'](_0x20b7c3,{'type':db['Sequelize'][_0xe2f7('0x58')][_0xe2f7('0x5b')],'raw':!![],'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(_0x19bfa1){var _0xda57ac=_[_0xe2f7('0x2f')](_0x19bfa1,function(_0x9bd3ed){return Number(_0x9bd3ed[_0xe2f7('0x63')]);});return db[_0xe2f7('0x64')][_0xe2f7('0x5d')]({'where':{'UserId':{'$in':_0x52a084},'ChatQueueId':{'$in':_0xda57ac}},'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(){var _0x23bef1=_0xe2f7('0x65')+_0x4c7863;return db[_0xe2f7('0x55')][_0xe2f7('0x35')](_0x23bef1,{'type':db[_0xe2f7('0x5f')][_0xe2f7('0x58')][_0xe2f7('0x5b')],'raw':!![],'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(_0x1df091){var _0x32da8c=_[_0xe2f7('0x2f')](_0x1df091,function(_0x1d6c66){return Number(_0x1d6c66['FaxQueueId']);});return db[_0xe2f7('0x66')][_0xe2f7('0x5d')]({'where':{'UserId':{'$in':_0x52a084},'FaxQueueId':{'$in':_0x32da8c}},'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(){var _0x295246=_0xe2f7('0x67')+_0x4c7863;return db[_0xe2f7('0x55')][_0xe2f7('0x35')](_0x295246,{'type':db[_0xe2f7('0x5f')][_0xe2f7('0x58')][_0xe2f7('0x5b')],'raw':!![],'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(_0x5e6b74){var _0x568ade=_['map'](_0x5e6b74,function(_0x55ad00){return Number(_0x55ad00[_0xe2f7('0x68')]);});return db[_0xe2f7('0x69')]['destroy']({'where':{'UserId':{'$in':_0x52a084},'OpenchannelQueueId':{'$in':_0x568ade}},'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(){var _0x26505d=_0xe2f7('0x6a')+_0x4c7863;return db[_0xe2f7('0x55')]['query'](_0x26505d,{'type':db[_0xe2f7('0x5f')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x54d44f});})['then'](function(_0x2135bf){var _0x56c892=_[_0xe2f7('0x2f')](_0x2135bf,function(_0x4b149b){return Number(_0x4b149b[_0xe2f7('0x6b')]);});return db[_0xe2f7('0x6c')][_0xe2f7('0x5d')]({'where':{'UserId':{'$in':_0x52a084},'WhatsappQueueId':{'$in':_0x56c892}},'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(){return db[_0xe2f7('0x6d')][_0xe2f7('0x51')]({'where':{'TeamId':_0x4c7863}});})[_0xe2f7('0x28')](function(_0x46d3fb){if(_0x46d3fb===null){return;}return db[_0xe2f7('0x6e')][_0xe2f7('0x5d')]({'where':{'UserId':{'$in':_0x52a084},'VoicePrefixId':_0x46d3fb[_0xe2f7('0x6f')]},'transaction':_0x54d44f});})[_0xe2f7('0x28')](function(){return db[_0xe2f7('0x30')][_0xe2f7('0x5d')]({'where':{'id':_0x4c7863},'cascade':!![],'transaction':_0x54d44f});})['then'](function(_0x75a3a7){if(_0x75a3a7===0x0){_0x5a4654[_0xe2f7('0x29')](0x194);}else{return db[_0xe2f7('0x70')][_0xe2f7('0x5d')]({'where':{'type':'Teams','resourceId':_0x4c7863},'cascade':!![],'transaction':_0x54d44f})['then'](function(){_0x5a4654[_0xe2f7('0x1e')](0xcc)[_0xe2f7('0x71')]();});}})[_0xe2f7('0x46')](function(_0x2fa48b){_0x5a4654['status'](0x1f4)[_0xe2f7('0x2d')](_0x2fa48b);});});};exports['getQueues']=function(_0xb3af8e,_0x5e4fd6,_0x222c55){return db[_0xe2f7('0x30')][_0xe2f7('0x72')]({'where':{'id':_0xb3af8e[_0xe2f7('0x48')]['id']}})[_0xe2f7('0x28')](handleEntityNotFound(_0x5e4fd6,null))[_0xe2f7('0x28')](function(_0x51e35f){if(!_0xb3af8e[_0xe2f7('0x35')][_0xe2f7('0x73')]||!utils[_0xe2f7('0x74')](_0xb3af8e[_0xe2f7('0x35')][_0xe2f7('0x73')])){throw new db[(_0xe2f7('0x5f'))]['ValidationError'](_0xe2f7('0x75'));}var _0x15d93c={};var _0x8f19fc={};_0x8f19fc['model']=_[_0xe2f7('0x49')](db[_[_0xe2f7('0x76')](_0xb3af8e[_0xe2f7('0x35')][_0xe2f7('0x73')][_0xe2f7('0x77')]())+_0xe2f7('0x78')]['rawAttributes']);_0x8f19fc['query']=_['keys'](_0xb3af8e[_0xe2f7('0x35')]);_0x8f19fc[_0xe2f7('0x3f')]=_[_0xe2f7('0x36')](_0x8f19fc['model'],_0x8f19fc[_0xe2f7('0x35')]);_0x15d93c[_0xe2f7('0x37')]=_['intersection'](_0x8f19fc[_0xe2f7('0x34')],qs[_0xe2f7('0x38')](_0xb3af8e['query'][_0xe2f7('0x38')]));_0x15d93c[_0xe2f7('0x37')]=_0x15d93c['attributes'][_0xe2f7('0x39')]?_0x15d93c[_0xe2f7('0x37')]:_0x8f19fc[_0xe2f7('0x34')];_0x15d93c['limit']=qs[_0xe2f7('0x21')](_0xb3af8e[_0xe2f7('0x35')][_0xe2f7('0x21')]);_0x15d93c['offset']=qs[_0xe2f7('0x1f')](_0xb3af8e[_0xe2f7('0x35')][_0xe2f7('0x1f')]);_0x15d93c['order']=qs[_0xe2f7('0x3d')](_0xb3af8e[_0xe2f7('0x35')]['sort']);_0x15d93c[_0xe2f7('0x3e')]=qs['filters'](_[_0xe2f7('0x40')](_0xb3af8e['query'],_0x8f19fc[_0xe2f7('0x3f')]));_0x15d93c=_[_0xe2f7('0x41')]({},_0x15d93c,_0xb3af8e['options']);return _0x51e35f['get'+_['capitalize'](_0xb3af8e['query']['channel']['toLowerCase']())+_0xe2f7('0x79')](_0x15d93c);})[_0xe2f7('0x28')](respondWithResult(_0x5e4fd6,null))[_0xe2f7('0x46')](handleError(_0x5e4fd6,null));};exports[_0xe2f7('0x7a')]=function(_0xaffbac,_0x476806,_0x125eae){return db[_0xe2f7('0x30')][_0xe2f7('0x72')]({'where':{'id':_0xaffbac[_0xe2f7('0x48')]['id']}})[_0xe2f7('0x28')](function(_0x4f96b6){if(_0x4f96b6){if(!_0xaffbac[_0xe2f7('0x4c')][_0xe2f7('0x73')]||!utils['isValidChannel'](_0xaffbac[_0xe2f7('0x4c')]['channel'])){throw new db['Sequelize'][(_0xe2f7('0x7b'))](_0xe2f7('0x75'));}return _0x4f96b6[_0xe2f7('0x7c')+_[_0xe2f7('0x76')](_0xaffbac[_0xe2f7('0x4c')][_0xe2f7('0x73')]['toLowerCase']())+'Queues'](_0xaffbac[_0xe2f7('0x4c')][_0xe2f7('0x7d')]);}return null;})[_0xe2f7('0x28')](handleEntityNotFound(_0x476806,null))[_0xe2f7('0x28')](respondWithStatusCode(_0x476806,null))['catch'](handleError(_0x476806,null));};exports['removeQueues']=function(_0x499f32,_0x3f5e29,_0x56f6f5){return db[_0xe2f7('0x30')]['findOne']({'where':{'id':_0x499f32[_0xe2f7('0x48')]['id']}})[_0xe2f7('0x28')](function(_0x15db41){if(_0x15db41){if(!_0x499f32[_0xe2f7('0x35')][_0xe2f7('0x73')]||!utils[_0xe2f7('0x74')](_0x499f32['query'][_0xe2f7('0x73')])){throw new db[(_0xe2f7('0x5f'))][(_0xe2f7('0x7b'))](_0xe2f7('0x75'));}return _0x15db41[_0xe2f7('0x7e')+_[_0xe2f7('0x76')](_0x499f32[_0xe2f7('0x35')][_0xe2f7('0x73')][_0xe2f7('0x77')]())+'Queues'](_0x499f32[_0xe2f7('0x35')][_0xe2f7('0x7d')]);}return null;})[_0xe2f7('0x28')](handleEntityNotFound(_0x3f5e29,null))[_0xe2f7('0x28')](respondWithStatusCode(_0x3f5e29,null))[_0xe2f7('0x46')](handleError(_0x3f5e29,null));};exports[_0xe2f7('0x7f')]=function(_0x49f06f,_0x210e1c){var _0x161710=_[_0xe2f7('0x80')](_0x49f06f[_0xe2f7('0x4c')][_0xe2f7('0x7d')])?_0x49f06f[_0xe2f7('0x4c')][_0xe2f7('0x7d')]:[_0x49f06f[_0xe2f7('0x4c')]['ids']];var _0x9d3f3f=_0x49f06f[_0xe2f7('0x48')]['id'];return db['Team'][_0xe2f7('0x51')]({'where':{'id':_0x9d3f3f}})[_0xe2f7('0x28')](handleEntityNotFound(_0x210e1c,null))[_0xe2f7('0x28')](function(_0x3ba43a){if(_0x3ba43a){var _0x142201=[_0xe2f7('0x81'),_0xe2f7('0x82'),_0xe2f7('0x83'),_0xe2f7('0x84'),_0xe2f7('0x85'),_0xe2f7('0x86'),'Whatsapp'];return db['sequelize']['transaction'](function(_0x476e13){var _0x312312=_[_0xe2f7('0x2f')](_0x142201,function(_0x2de235){var _0x2037a2={'attributes':['id',_0xe2f7('0x2c')]};if(_0x2de235==='Voice'){_0x2037a2[_0xe2f7('0x87')]={'attributes':[_0xe2f7('0x88')]};}return _0x3ba43a['get'+_0x2de235+_0xe2f7('0x79')](_0x2037a2)[_0xe2f7('0x28')](function(_0x13ccd2){var _0x31668b=_[_0xe2f7('0x2f')](_0x13ccd2,function(_0x246700){var _0x132806=_['map'](_0x161710,function(_0x1f35e4){var _0x55d1b9={'where':{'UserId':_0x1f35e4,[_0x2de235+_0xe2f7('0x89')]:_0x246700['id']},'transaction':_0x476e13};if(_0x2de235===_0xe2f7('0x81')){_0x55d1b9[_0xe2f7('0x8a')]={'penalty':_0x246700['TeamVoiceQueue'][_0xe2f7('0x88')]};}return db[_0xe2f7('0x8b')+_0x2de235+_0xe2f7('0x78')][_0xe2f7('0x8c')](_0x55d1b9)[_0xe2f7('0x28')](function(){socket[_0xe2f7('0x8d')]('user'+_0x2de235+_0xe2f7('0x8e'),{'UserId':_0x1f35e4,[_0x2de235+_0xe2f7('0x89')]:_0x246700['id']});if(_0x2de235!=='Voice'){return;}return db[_0xe2f7('0x8b')]['findAll']({'where':{'id':_0x161710,'online':0x1},'attributes':['id','name',_0xe2f7('0x8f'),_0xe2f7('0x90'),_0xe2f7('0x91')],'raw':!![]})[_0xe2f7('0x28')](function(_0x124ace){var _0x7789d2=_[_0xe2f7('0x2f')](_0x124ace,function(_0x7f761e){return db['UserVoiceQueueRt'][_0xe2f7('0x92')]({'membername':_0x7f761e[_0xe2f7('0x2c')],'UserId':_0x7f761e['id'],'queue_name':_0x246700[_0xe2f7('0x2c')],'VoiceQueueId':_0x246700['id'],'interface':_['isNil'](_0x7f761e[_0xe2f7('0x91')])?util[_0xe2f7('0x93')](_0xe2f7('0x94'),_0x7f761e[_0xe2f7('0x2c')]):_0x7f761e[_0xe2f7('0x91')],'paused':_0x7f761e[_0xe2f7('0x90')]||![],'penalty':_0x246700[_0xe2f7('0x95')][_0xe2f7('0x88')]},{'transaction':_0x476e13});});return Promise[_0xe2f7('0x96')](_0x7789d2);});});});return Promise[_0xe2f7('0x96')](_0x132806);});return Promise['all'](_0x31668b);})[_0xe2f7('0x28')](function(){return db['TeamVoicePrefix'][_0xe2f7('0x72')]({'where':{'teamId':_0x9d3f3f}})[_0xe2f7('0x28')](function(_0x6763d7){if(_0x6763d7){var _0x4e768d=_[_0xe2f7('0x2f')](_0x161710,function(_0xc0b4c3){db[_0xe2f7('0x6e')][_0xe2f7('0x92')]({'UserId':_0xc0b4c3,'VoicePrefixId':_0x6763d7[_0xe2f7('0x6f')]});});return Promise[_0xe2f7('0x96')](_0x4e768d);}});});});return Promise[_0xe2f7('0x96')](_0x312312)[_0xe2f7('0x28')](function(){return _0x3ba43a[_0xe2f7('0x7f')](_0x161710,{'transaction':_0x476e13})[_0xe2f7('0x97')](function(_0x16840a){return _0x16840a;});});});}})[_0xe2f7('0x28')](respondWithResult(_0x210e1c,null))[_0xe2f7('0x46')](handleError(_0x210e1c,null));};exports[_0xe2f7('0x98')]=function(_0x4eb756,_0x53b788){var _0x2342da=_[_0xe2f7('0x80')](_0x4eb756[_0xe2f7('0x35')][_0xe2f7('0x7d')])?_0x4eb756['query'][_0xe2f7('0x7d')]:[_0x4eb756[_0xe2f7('0x35')][_0xe2f7('0x7d')]];var _0x386338=_0x4eb756[_0xe2f7('0x48')]['id'];return db[_0xe2f7('0x30')][_0xe2f7('0x51')]({'where':{'id':_0x386338}})[_0xe2f7('0x28')](handleEntityNotFound(_0x53b788,null))[_0xe2f7('0x28')](function(_0x51198f){if(_0x51198f){var _0x35ec9d=['Voice',_0xe2f7('0x82'),'Mail',_0xe2f7('0x84'),'Fax','Openchannel',_0xe2f7('0x99')];return db[_0xe2f7('0x55')][_0xe2f7('0x56')](function(_0x387c06){var _0x5d685e=_[_0xe2f7('0x2f')](_0x35ec9d,function(_0x15cbbb){var _0x3592c6={'attributes':['id','name']};return _0x51198f[_0xe2f7('0x9a')+_0x15cbbb+_0xe2f7('0x79')](_0x3592c6)['then'](function(_0x52f745){var _0x4fd88a=_['map'](_0x52f745,function(_0x37e2c2){return _0x37e2c2[_0xe2f7('0x98')](_0x2342da,{'transaction':_0x387c06})[_0xe2f7('0x28')](function(){var _0xc5ce87=_[_0xe2f7('0x2f')](_0x2342da,function(_0x358856){socket[_0xe2f7('0x8d')](_0xe2f7('0x4d')+_0x15cbbb+'Queue:remove',{'UserId':Number(_0x358856),[_0x15cbbb+_0xe2f7('0x89')]:_0x37e2c2['id']});if(_0x15cbbb!==_0xe2f7('0x81')){return;}return db[_0xe2f7('0x9b')][_0xe2f7('0x5d')]({'where':{'VoiceQueueId':_0x37e2c2['id'],'UserId':_0x358856},'transaction':_0x387c06});});return Promise[_0xe2f7('0x96')](_0xc5ce87);});});return Promise[_0xe2f7('0x96')](_0x4fd88a);});});return Promise[_0xe2f7('0x96')](_0x5d685e)[_0xe2f7('0x28')](function(){return _0x51198f[_0xe2f7('0x98')](_0x2342da,{'transaction':_0x387c06});})['then'](function(){return db[_0xe2f7('0x6d')][_0xe2f7('0x72')]({'where':{'teamId':_0x386338}})[_0xe2f7('0x28')](function(_0x318edf){if(_0x318edf){var _0x1c4c2c=_[_0xe2f7('0x2f')](_0x2342da,function(_0x32f72c){db['UserVoicePrefix'][_0xe2f7('0x5d')]({'where':{'UserId':_0x32f72c,'VoicePrefixId':_0x318edf[_0xe2f7('0x6f')]}});});return Promise[_0xe2f7('0x96')](_0x1c4c2c);}});});});}})[_0xe2f7('0x28')](respondWithStatusCode(_0x53b788,null))[_0xe2f7('0x46')](handleError(_0x53b788,null));};exports[_0xe2f7('0x9c')]=function(_0x4f6023,_0x5ca7bc,_0xe5415c){var _0x1d0927={};var _0x38bf80={};var _0x194838;var _0x3a95cd;return db[_0xe2f7('0x30')][_0xe2f7('0x72')]({'where':{'id':_0x4f6023['params']['id']}})[_0xe2f7('0x28')](handleEntityNotFound(_0x5ca7bc,null))[_0xe2f7('0x28')](function(_0x46e9d6){if(_0x46e9d6){_0x194838=_0x46e9d6;_0x38bf80[_0xe2f7('0x34')]=_[_0xe2f7('0x49')](db['User'][_0xe2f7('0x31')]);_0x38bf80[_0xe2f7('0x35')]=_['keys'](_0x4f6023['query']);_0x38bf80['filters']=_[_0xe2f7('0x36')](_0x38bf80[_0xe2f7('0x34')],_0x38bf80['query']);_0x1d0927[_0xe2f7('0x37')]=_[_0xe2f7('0x36')](_0x38bf80['model'],qs[_0xe2f7('0x38')](_0x4f6023[_0xe2f7('0x35')][_0xe2f7('0x38')]));_0x1d0927[_0xe2f7('0x37')]=_0x1d0927['attributes']['length']?_0x1d0927[_0xe2f7('0x37')]:_0x38bf80[_0xe2f7('0x34')];_0x1d0927['order']=qs['sort'](_0x4f6023[_0xe2f7('0x35')]['sort']);_0x1d0927[_0xe2f7('0x3e')]=qs['filters'](_['pick'](_0x4f6023['query'],_0x38bf80[_0xe2f7('0x3f')]));if(_0x4f6023[_0xe2f7('0x35')][_0xe2f7('0x42')]){_0x1d0927['where']=_[_0xe2f7('0x41')](_0x1d0927[_0xe2f7('0x3e')],{'$or':_[_0xe2f7('0x2f')](_0x1d0927[_0xe2f7('0x37')],function(_0x240530){var _0x32c6c9={};_0x32c6c9[_0x240530]={'$like':'%'+_0x4f6023[_0xe2f7('0x35')]['filter']+'%'};return _0x32c6c9;})});}_0x1d0927=_['merge']({},_0x1d0927,_0x4f6023[_0xe2f7('0x4a')]);return _0x194838['getAgents'](_0x1d0927);}})[_0xe2f7('0x28')](function(_0x55183c){if(_0x55183c){_0x3a95cd=_0x55183c[_0xe2f7('0x39')];if(!_0x4f6023['query']['hasOwnProperty'](_0xe2f7('0x3b'))){_0x1d0927[_0xe2f7('0x21')]=qs[_0xe2f7('0x21')](_0x4f6023[_0xe2f7('0x35')][_0xe2f7('0x21')]);_0x1d0927['offset']=qs[_0xe2f7('0x1f')](_0x4f6023['query']['offset']);}return _0x194838[_0xe2f7('0x9c')](_0x1d0927);}})['then'](function(_0x2a0909){if(_0x2a0909){return _0x2a0909?{'count':_0x3a95cd,'rows':_0x2a0909}:null;}})[_0xe2f7('0x28')](respondWithResult(_0x5ca7bc,null))[_0xe2f7('0x46')](handleError(_0x5ca7bc,null));};
\ No newline at end of file
index 3e29e6d..4eb5f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1384=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Team'];(function(_0x1ec5ec,_0x1add96){var _0x80ce8d=function(_0x3c0b20){while(--_0x3c0b20){_0x1ec5ec['push'](_0x1ec5ec['shift']());}};_0x80ce8d(++_0x1add96);}(_0x1384,0x18d));var _0x4138=function(_0x56bccf,_0x5ea30f){_0x56bccf=_0x56bccf-0x0;var _0x4457ad=_0x1384[_0x56bccf];return _0x4457ad;};'use strict';var EventEmitter=require(_0x4138('0x0'));var Team=require(_0x4138('0x1'))['db'][_0x4138('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4138('0x3'),'afterUpdate':_0x4138('0x4'),'afterDestroy':_0x4138('0x5')};function emitEvent(_0x3c59d5){return function(_0x308bbb,_0x44eef9,_0x3978a9){TeamEvents[_0x4138('0x6')](_0x3c59d5+':'+_0x308bbb['id'],_0x308bbb);TeamEvents[_0x4138('0x6')](_0x3c59d5,_0x308bbb);_0x3978a9(null);};}for(var e in events){if(events[_0x4138('0x7')](e)){var event=events[e];Team[_0x4138('0x8')](e,emitEvent(event));}}module[_0x4138('0x9')]=TeamEvents;
\ No newline at end of file
+var _0x0e81=['events','../../mysqldb','Team','setMaxListeners','remove','emit','hook','exports'];(function(_0x1c6494,_0x4346e5){var _0x3e3fd0=function(_0x217fcd){while(--_0x217fcd){_0x1c6494['push'](_0x1c6494['shift']());}};_0x3e3fd0(++_0x4346e5);}(_0x0e81,0x70));var _0x10e8=function(_0x2bff9c,_0xe5758){_0x2bff9c=_0x2bff9c-0x0;var _0x24ca0b=_0x0e81[_0x2bff9c];return _0x24ca0b;};'use strict';var EventEmitter=require(_0x10e8('0x0'));var Team=require(_0x10e8('0x1'))['db'][_0x10e8('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x10e8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x10e8('0x4')};function emitEvent(_0x526f59){return function(_0x123357,_0x339191,_0x2f0052){TeamEvents[_0x10e8('0x5')](_0x526f59+':'+_0x123357['id'],_0x123357);TeamEvents[_0x10e8('0x5')](_0x526f59,_0x123357);_0x2f0052(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x10e8('0x6')](e,emitEvent(event));}}module[_0x10e8('0x7')]=TeamEvents;
\ No newline at end of file
index 05a0ed5..b5f0861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f08=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./team.attributes','exports','define','Team','teams','util','../../config/logger'];(function(_0x3c4a7c,_0x2f4e3c){var _0xf13d1e=function(_0x24cb78){while(--_0x24cb78){_0x3c4a7c['push'](_0x3c4a7c['shift']());}};_0xf13d1e(++_0x2f4e3c);}(_0x2f08,0x129));var _0x82f0=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0x2f08[_0x3826ad];return _0x17b900;};'use strict';var _=require('lodash');var util=require(_0x82f0('0x0'));var logger=require(_0x82f0('0x1'))(_0x82f0('0x2'));var moment=require(_0x82f0('0x3'));var BPromise=require(_0x82f0('0x4'));var rp=require(_0x82f0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x82f0('0x6'));var config=require(_0x82f0('0x7'));var attributes=require(_0x82f0('0x8'));module[_0x82f0('0x9')]=function(_0x2df821,_0x1d7c49){return _0x2df821[_0x82f0('0xa')](_0x82f0('0xb'),attributes,{'tableName':_0x82f0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4cbb=['moment','request-promise','path','rimraf','./team.attributes','exports','Team','lodash','util','../../config/logger','api'];(function(_0x19fa0c,_0x35682c){var _0x21c902=function(_0x554d6a){while(--_0x554d6a){_0x19fa0c['push'](_0x19fa0c['shift']());}};_0x21c902(++_0x35682c);}(_0x4cbb,0x1a9));var _0xb4cb=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x4cbb[_0x1e3c16];return _0x47a0c9;};'use strict';var _=require(_0xb4cb('0x0'));var util=require(_0xb4cb('0x1'));var logger=require(_0xb4cb('0x2'))(_0xb4cb('0x3'));var moment=require(_0xb4cb('0x4'));var BPromise=require('bluebird');var rp=require(_0xb4cb('0x5'));var fs=require('fs');var path=require(_0xb4cb('0x6'));var rimraf=require(_0xb4cb('0x7'));var config=require('../../config/environment');var attributes=require(_0xb4cb('0x8'));module[_0xb4cb('0x9')]=function(_0x5279ad,_0x1425a7){return _0x5279ad['define'](_0xb4cb('0xa'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5d4b7a8..ca6ed29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x876b=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./team.socket','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','Team,\x20%s,\x20%s','message','util','bluebird','randomstring'];(function(_0x2ced4c,_0x5c73b4){var _0x58fd32=function(_0x1b68f3){while(--_0x1b68f3){_0x2ced4c['push'](_0x2ced4c['shift']());}};_0x58fd32(++_0x5c73b4);}(_0x876b,0x93));var _0xb876=function(_0x145c51,_0x52e6be){_0x145c51=_0x145c51-0x0;var _0x30bbcb=_0x876b[_0x145c51];return _0x30bbcb;};'use strict';var _=require('lodash');var util=require(_0xb876('0x0'));var moment=require('moment');var BPromise=require(_0xb876('0x1'));var rs=require(_0xb876('0x2'));var fs=require('fs');var Redis=require(_0xb876('0x3'));var db=require(_0xb876('0x4'))['db'];var utils=require(_0xb876('0x5'));var logger=require(_0xb876('0x6'))(_0xb876('0x7'));var config=require(_0xb876('0x8'));var jayson=require(_0xb876('0x9'));var client=jayson[_0xb876('0xa')][_0xb876('0xb')]({'port':0x232a});config[_0xb876('0xc')]=_['defaults'](config[_0xb876('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xb876('0xd'))(new Redis(config[_0xb876('0xc')]));require(_0xb876('0xe'))['register'](socket);function respondWithRpcPromise(_0x14afb8,_0x4dde76,_0x44f695){return new BPromise(function(_0x3e6a78,_0x13a5d4){return client['request'](_0x14afb8,_0x44f695)[_0xb876('0xf')](function(_0x26cd3d){logger[_0xb876('0x10')]('Team,\x20%s,\x20%s',_0x4dde76,_0xb876('0x11'));logger[_0xb876('0x12')](_0xb876('0x13'),_0x4dde76,'request\x20sent',JSON[_0xb876('0x14')](_0x26cd3d));if(_0x26cd3d[_0xb876('0x15')]){if(_0x26cd3d[_0xb876('0x15')][_0xb876('0x16')]===0x1f4){logger['error']('Team,\x20%s,\x20%s',_0x4dde76,_0x26cd3d[_0xb876('0x15')]['message']);return _0x13a5d4(_0x26cd3d[_0xb876('0x15')]['message']);}logger[_0xb876('0x15')](_0xb876('0x17'),_0x4dde76,_0x26cd3d[_0xb876('0x15')][_0xb876('0x18')]);return _0x3e6a78(_0x26cd3d['error']['message']);}else{logger['info'](_0xb876('0x17'),_0x4dde76,_0xb876('0x11'));_0x3e6a78(_0x26cd3d['result'][_0xb876('0x18')]);}})['catch'](function(_0x3aed3a){logger[_0xb876('0x15')](_0xb876('0x17'),_0x4dde76,_0x3aed3a);_0x13a5d4(_0x3aed3a);});});}
\ No newline at end of file
+var _0x8994=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2b8b4d,_0x833705){var _0x38150e=function(_0x484130){while(--_0x484130){_0x2b8b4d['push'](_0x2b8b4d['shift']());}};_0x38150e(++_0x833705);}(_0x8994,0x16f));var _0x4899=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x8994[_0x255d5b];return _0x3e141a;};'use strict';var _=require(_0x4899('0x0'));var util=require(_0x4899('0x1'));var moment=require(_0x4899('0x2'));var BPromise=require(_0x4899('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4899('0x4'));var db=require(_0x4899('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4899('0x6'))(_0x4899('0x7'));var config=require('../../config/environment');var jayson=require(_0x4899('0x8'));var client=jayson[_0x4899('0x9')][_0x4899('0xa')]({'port':0x232a});config[_0x4899('0xb')]=_[_0x4899('0xc')](config['redis'],{'host':_0x4899('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4899('0xb')]));require(_0x4899('0xe'))[_0x4899('0xf')](socket);function respondWithRpcPromise(_0x4f6717,_0x57fc9a,_0x5054b7){return new BPromise(function(_0x261373,_0x1da13a){return client[_0x4899('0x10')](_0x4f6717,_0x5054b7)[_0x4899('0x11')](function(_0x4b4254){logger[_0x4899('0x12')](_0x4899('0x13'),_0x57fc9a,_0x4899('0x14'));logger['debug'](_0x4899('0x15'),_0x57fc9a,_0x4899('0x14'),JSON[_0x4899('0x16')](_0x4b4254));if(_0x4b4254[_0x4899('0x17')]){if(_0x4b4254['error'][_0x4899('0x18')]===0x1f4){logger[_0x4899('0x17')]('Team,\x20%s,\x20%s',_0x57fc9a,_0x4b4254[_0x4899('0x17')][_0x4899('0x19')]);return _0x1da13a(_0x4b4254['error'][_0x4899('0x19')]);}logger['error'](_0x4899('0x13'),_0x57fc9a,_0x4b4254['error']['message']);return _0x261373(_0x4b4254[_0x4899('0x17')]['message']);}else{logger[_0x4899('0x12')](_0x4899('0x13'),_0x57fc9a,_0x4899('0x14'));_0x261373(_0x4b4254[_0x4899('0x1a')][_0x4899('0x19')]);}})[_0x4899('0x1b')](function(_0x2d2b72){logger[_0x4899('0x17')]('Team,\x20%s,\x20%s',_0x57fc9a,_0x2d2b72);_0x1da13a(_0x2d2b72);});});}
\ No newline at end of file
index 0fb1818..b72f738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f08=['register','team:','./team.events','save','update','emit','removeListener'];(function(_0x3275a8,_0x58abd9){var _0x2f8328=function(_0x413c63){while(--_0x413c63){_0x3275a8['push'](_0x3275a8['shift']());}};_0x2f8328(++_0x58abd9);}(_0x4f08,0xaa));var _0x84f0=function(_0x2d9614,_0x2cf6b0){_0x2d9614=_0x2d9614-0x0;var _0x119c33=_0x4f08[_0x2d9614];return _0x119c33;};'use strict';var TeamEvents=require(_0x84f0('0x0'));var events=[_0x84f0('0x1'),'remove',_0x84f0('0x2')];function createListener(_0x5993db,_0x5f5677){return function(_0xaa76d){_0x5f5677[_0x84f0('0x3')](_0x5993db,_0xaa76d);};}function removeListener(_0xb73a24,_0x2495e8){return function(){TeamEvents[_0x84f0('0x4')](_0xb73a24,_0x2495e8);};}exports[_0x84f0('0x5')]=function(_0x5ef54f){for(var _0x94c8b=0x0,_0x26bd5d=events['length'];_0x94c8b<_0x26bd5d;_0x94c8b++){var _0x23c6fd=events[_0x94c8b];var _0x16f084=createListener(_0x84f0('0x6')+_0x23c6fd,_0x5ef54f);TeamEvents['on'](_0x23c6fd,_0x16f084);}};
\ No newline at end of file
+var _0x59c7=['update','emit','removeListener','length','./team.events','save','remove'];(function(_0x282005,_0x263510){var _0x2605d7=function(_0x42e68e){while(--_0x42e68e){_0x282005['push'](_0x282005['shift']());}};_0x2605d7(++_0x263510);}(_0x59c7,0x1e7));var _0x759c=function(_0x4f329e,_0x4158c0){_0x4f329e=_0x4f329e-0x0;var _0x5332a0=_0x59c7[_0x4f329e];return _0x5332a0;};'use strict';var TeamEvents=require(_0x759c('0x0'));var events=[_0x759c('0x1'),_0x759c('0x2'),_0x759c('0x3')];function createListener(_0x2fe2e1,_0x133332){return function(_0xb51e4e){_0x133332[_0x759c('0x4')](_0x2fe2e1,_0xb51e4e);};}function removeListener(_0x58d341,_0x3ad5e2){return function(){TeamEvents[_0x759c('0x5')](_0x58d341,_0x3ad5e2);};}exports['register']=function(_0x157698){for(var _0x28571c=0x0,_0x45ec4a=events[_0x759c('0x6')];_0x28571c<_0x45ec4a;_0x28571c++){var _0x391ad0=events[_0x28571c];var _0x376b0e=createListener('team:'+_0x391ad0,_0x157698);TeamEvents['on'](_0x391ad0,_0x376b0e);}};
\ No newline at end of file
index ecaf947..ee4ed9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4345=['exports','INTEGER','sequelize'];(function(_0x2dd652,_0x456e11){var _0x3002ea=function(_0x31a158){while(--_0x31a158){_0x2dd652['push'](_0x2dd652['shift']());}};_0x3002ea(++_0x456e11);}(_0x4345,0x77));var _0x5434=function(_0x22f6a1,_0x4ddbd1){_0x22f6a1=_0x22f6a1-0x0;var _0x55c5c5=_0x4345[_0x22f6a1];return _0x55c5c5;};'use strict';var Sequelize=require(_0x5434('0x0'));module[_0x5434('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x5434('0x2')]}};
\ No newline at end of file
+var _0x6e77=['exports'];(function(_0x4a21cb,_0x1b0e50){var _0x584789=function(_0x441bf1){while(--_0x441bf1){_0x4a21cb['push'](_0x4a21cb['shift']());}};_0x584789(++_0x1b0e50);}(_0x6e77,0xef));var _0x76e7=function(_0x67655b,_0x15ff31){_0x67655b=_0x67655b-0x0;var _0x71c09d=_0x6e77[_0x67655b];return _0x71c09d;};'use strict';var Sequelize=require('sequelize');module[_0x76e7('0x0')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 586a5bd..2befb9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4123=['./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4123,0x87));var _0x3412=function(_0xcaf223,_0xd39f07){_0xcaf223=_0xcaf223-0x0;var _0x17e00d=_0x4123[_0xcaf223];return _0x17e00d;};'use strict';var _=require(_0x3412('0x0'));var util=require(_0x3412('0x1'));var logger=require(_0x3412('0x2'))(_0x3412('0x3'));var moment=require(_0x3412('0x4'));var BPromise=require(_0x3412('0x5'));var rp=require(_0x3412('0x6'));var fs=require('fs');var path=require(_0x3412('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3412('0x8'));module[_0x3412('0x9')]=function(_0x48eb88,_0x11aa67){return _0x48eb88[_0x3412('0xa')](_0x3412('0xb'),attributes,{'tableName':_0x3412('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd914=['util','api','moment','bluebird','request-promise','path','rimraf','./teamVoicePrefix.attributes','define','TeamVoicePrefix','team_has_voice_prefixes','lodash'];(function(_0x1f5155,_0x3201b3){var _0x164614=function(_0xc283cb){while(--_0xc283cb){_0x1f5155['push'](_0x1f5155['shift']());}};_0x164614(++_0x3201b3);}(_0xd914,0x17f));var _0x4d91=function(_0x4f3b2d,_0x3bbf46){_0x4f3b2d=_0x4f3b2d-0x0;var _0x3dddfa=_0xd914[_0x4f3b2d];return _0x3dddfa;};'use strict';var _=require(_0x4d91('0x0'));var util=require(_0x4d91('0x1'));var logger=require('../../config/logger')(_0x4d91('0x2'));var moment=require(_0x4d91('0x3'));var BPromise=require(_0x4d91('0x4'));var rp=require(_0x4d91('0x5'));var fs=require('fs');var path=require(_0x4d91('0x6'));var rimraf=require(_0x4d91('0x7'));var config=require('../../config/environment');var attributes=require(_0x4d91('0x8'));module['exports']=function(_0x3ab6f8,_0x42d7ae){return _0x3ab6f8[_0x4d91('0x9')](_0x4d91('0xa'),attributes,{'tableName':_0x4d91('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 321e27f..4570188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x3587f8,_0x4814f0){var _0x4138ad=function(_0x12fabb){while(--_0x12fabb){_0x3587f8['push'](_0x3587f8['shift']());}};_0x4138ad(++_0x4814f0);}(_0x70e0,0x17b));var _0x070e=function(_0x288ed6,_0x4635dd){_0x288ed6=_0x288ed6-0x0;var _0x30da4a=_0x70e0[_0x288ed6];return _0x30da4a;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x420d9f,_0xf1a8ce){var _0x501d3a=function(_0x2b804e){while(--_0x2b804e){_0x420d9f['push'](_0x420d9f['shift']());}};_0x501d3a(++_0xf1a8ce);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 2a85c48..2318c99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1732=['exports','INTEGER','sequelize'];(function(_0x233960,_0x3816c3){var _0x303d86=function(_0x56fbef){while(--_0x56fbef){_0x233960['push'](_0x233960['shift']());}};_0x303d86(++_0x3816c3);}(_0x1732,0x158));var _0x2173=function(_0x4bd625,_0x148ef4){_0x4bd625=_0x4bd625-0x0;var _0x17f3ac=_0x1732[_0x4bd625];return _0x17f3ac;};'use strict';var Sequelize=require(_0x2173('0x0'));module[_0x2173('0x1')]={'penalty':{'type':Sequelize[_0x2173('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9438=['exports','sequelize'];(function(_0x2e1169,_0x1e19b6){var _0x135918=function(_0x54fdab){while(--_0x54fdab){_0x2e1169['push'](_0x2e1169['shift']());}};_0x135918(++_0x1e19b6);}(_0x9438,0x8d));var _0x8943=function(_0x4ac09d,_0x2ec8f0){_0x4ac09d=_0x4ac09d-0x0;var _0x4ad705=_0x9438[_0x4ac09d];return _0x4ad705;};'use strict';var Sequelize=require(_0x8943('0x0'));module[_0x8943('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 4e18cfa..98f67ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76bb=['../../config/logger','api','moment','request-promise','path','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','team_has_voice_queues','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x76bb,0x16a));var _0xb76b=function(_0x319e2e,_0x2f727f){_0x319e2e=_0x319e2e-0x0;var _0x302524=_0x76bb[_0x319e2e];return _0x302524;};'use strict';var _=require('lodash');var util=require(_0xb76b('0x0'));var logger=require(_0xb76b('0x1'))(_0xb76b('0x2'));var moment=require(_0xb76b('0x3'));var BPromise=require('bluebird');var rp=require(_0xb76b('0x4'));var fs=require('fs');var path=require(_0xb76b('0x5'));var rimraf=require('rimraf');var config=require(_0xb76b('0x6'));var attributes=require(_0xb76b('0x7'));module['exports']=function(_0x42254d,_0x361737){return _0x42254d[_0xb76b('0x8')](_0xb76b('0x9'),attributes,{'tableName':_0xb76b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8743=['define','team_has_voice_queues','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x3b9ee7,_0x4406d2){var _0x5a1bda=function(_0x18ac8c){while(--_0x18ac8c){_0x3b9ee7['push'](_0x3b9ee7['shift']());}};_0x5a1bda(++_0x4406d2);}(_0x8743,0x7a));var _0x3874=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x8743[_0x33032e];return _0x13316b;};'use strict';var _=require(_0x3874('0x0'));var util=require(_0x3874('0x1'));var logger=require(_0x3874('0x2'))('api');var moment=require(_0x3874('0x3'));var BPromise=require(_0x3874('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3874('0x5'));var config=require(_0x3874('0x6'));var attributes=require(_0x3874('0x7'));module['exports']=function(_0x597a79,_0x4b242a){return _0x597a79[_0x3874('0x8')]('TeamVoiceQueue',attributes,{'tableName':_0x3874('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8910faf..443ea0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d9=['message','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x2b7acb,_0x401bba){var _0x487379=function(_0x19b647){while(--_0x19b647){_0x2b7acb['push'](_0x2b7acb['shift']());}};_0x487379(++_0x401bba);}(_0xd6d9,0x16a));var _0x9d6d=function(_0x7c13ed,_0x4d9dd5){_0x7c13ed=_0x7c13ed-0x0;var _0x4cad66=_0xd6d9[_0x7c13ed];return _0x4cad66;};'use strict';var _=require('lodash');var util=require(_0x9d6d('0x0'));var moment=require(_0x9d6d('0x1'));var BPromise=require('bluebird');var rs=require(_0x9d6d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d6d('0x3'))['db'];var utils=require(_0x9d6d('0x4'));var logger=require(_0x9d6d('0x5'))(_0x9d6d('0x6'));var config=require('../../config/environment');var jayson=require(_0x9d6d('0x7'));var client=jayson[_0x9d6d('0x8')][_0x9d6d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2713fd,_0x498bdc,_0x4d271c){return new BPromise(function(_0x41e27a,_0x472196){return client[_0x9d6d('0xa')](_0x2713fd,_0x4d271c)[_0x9d6d('0xb')](function(_0x519c85){logger['info'](_0x9d6d('0xc'),_0x498bdc,_0x9d6d('0xd'));logger[_0x9d6d('0xe')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x498bdc,_0x9d6d('0xd'),JSON['stringify'](_0x519c85));if(_0x519c85['error']){if(_0x519c85[_0x9d6d('0xf')]['code']===0x1f4){logger[_0x9d6d('0xf')](_0x9d6d('0xc'),_0x498bdc,_0x519c85['error'][_0x9d6d('0x10')]);return _0x472196(_0x519c85[_0x9d6d('0xf')][_0x9d6d('0x10')]);}logger[_0x9d6d('0xf')](_0x9d6d('0xc'),_0x498bdc,_0x519c85[_0x9d6d('0xf')]['message']);return _0x41e27a(_0x519c85[_0x9d6d('0xf')][_0x9d6d('0x10')]);}else{logger['info'](_0x9d6d('0xc'),_0x498bdc,_0x9d6d('0xd'));_0x41e27a(_0x519c85['result']['message']);}})[_0x9d6d('0x11')](function(_0x59eb55){logger[_0x9d6d('0xf')](_0x9d6d('0xc'),_0x498bdc,_0x59eb55);_0x472196(_0x59eb55);});});}
\ No newline at end of file
+var _0x1f16=['catch','lodash','moment','bluebird','ioredis','../../config/logger','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x318282,_0x284510){var _0x32f496=function(_0x4be7b8){while(--_0x4be7b8){_0x318282['push'](_0x318282['shift']());}};_0x32f496(++_0x284510);}(_0x1f16,0x190));var _0x61f1=function(_0x5214cb,_0x458f8f){_0x5214cb=_0x5214cb-0x0;var _0x4d1a20=_0x1f16[_0x5214cb];return _0x4d1a20;};'use strict';var _=require(_0x61f1('0x0'));var util=require('util');var moment=require(_0x61f1('0x1'));var BPromise=require(_0x61f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x61f1('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x61f1('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x61f1('0x5'));var client=jayson[_0x61f1('0x6')][_0x61f1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x56ea8f,_0x362674,_0x526b5c){return new BPromise(function(_0x19c904,_0x34a69f){return client[_0x61f1('0x8')](_0x56ea8f,_0x526b5c)[_0x61f1('0x9')](function(_0x42f9f1){logger[_0x61f1('0xa')](_0x61f1('0xb'),_0x362674,_0x61f1('0xc'));logger[_0x61f1('0xd')](_0x61f1('0xe'),_0x362674,_0x61f1('0xc'),JSON[_0x61f1('0xf')](_0x42f9f1));if(_0x42f9f1['error']){if(_0x42f9f1[_0x61f1('0x10')][_0x61f1('0x11')]===0x1f4){logger[_0x61f1('0x10')](_0x61f1('0xb'),_0x362674,_0x42f9f1[_0x61f1('0x10')][_0x61f1('0x12')]);return _0x34a69f(_0x42f9f1[_0x61f1('0x10')][_0x61f1('0x12')]);}logger[_0x61f1('0x10')](_0x61f1('0xb'),_0x362674,_0x42f9f1[_0x61f1('0x10')][_0x61f1('0x12')]);return _0x19c904(_0x42f9f1[_0x61f1('0x10')]['message']);}else{logger['info'](_0x61f1('0xb'),_0x362674,_0x61f1('0xc'));_0x19c904(_0x42f9f1[_0x61f1('0x13')][_0x61f1('0x12')]);}})[_0x61f1('0x14')](function(_0x3f85cc){logger[_0x61f1('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x362674,_0x3f85cc);_0x34a69f(_0x3f85cc);});});}
\ No newline at end of file
index ce896ce..701a882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dcb=['isAuthenticated','get','/:id','show','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x597886,_0x1a8968){var _0x2814a4=function(_0x174b24){while(--_0x174b24){_0x597886['push'](_0x597886['shift']());}};_0x2814a4(++_0x1a8968);}(_0x4dcb,0x186));var _0xb4dc=function(_0x546280,_0x466a98){_0x546280=_0x546280-0x0;var _0x1ce485=_0x4dcb[_0x546280];return _0x1ce485;};'use strict';var multer=require('multer');var util=require(_0xb4dc('0x0'));var path=require(_0xb4dc('0x1'));var timeout=require(_0xb4dc('0x2'));var express=require(_0xb4dc('0x3'));var router=express[_0xb4dc('0x4')]();var fs_extra=require(_0xb4dc('0x5'));var auth=require(_0xb4dc('0x6'));var interaction=require(_0xb4dc('0x7'));var config=require(_0xb4dc('0x8'));var controller=require('./template.controller');router['get']('/',auth[_0xb4dc('0x9')](),controller['index']);router[_0xb4dc('0xa')](_0xb4dc('0xb'),auth[_0xb4dc('0x9')](),controller[_0xb4dc('0xc')]);router[_0xb4dc('0xd')]('/',auth[_0xb4dc('0x9')](),controller['create']);router[_0xb4dc('0xe')](_0xb4dc('0xb'),auth[_0xb4dc('0x9')](),controller[_0xb4dc('0xf')]);router[_0xb4dc('0x10')](_0xb4dc('0xb'),auth[_0xb4dc('0x9')](),controller[_0xb4dc('0x11')]);module[_0xb4dc('0x12')]=router;
\ No newline at end of file
+var _0x56b9=['isAuthenticated','show','post','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./template.controller','get','index','/:id'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x56b9,0x196));var _0x956b=function(_0x2910c5,_0x143843){_0x2910c5=_0x2910c5-0x0;var _0x3c94de=_0x56b9[_0x2910c5];return _0x3c94de;};'use strict';var multer=require(_0x956b('0x0'));var util=require(_0x956b('0x1'));var path=require(_0x956b('0x2'));var timeout=require(_0x956b('0x3'));var express=require(_0x956b('0x4'));var router=express[_0x956b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x956b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x956b('0x7'));var controller=require(_0x956b('0x8'));router[_0x956b('0x9')]('/',auth['isAuthenticated'](),controller[_0x956b('0xa')]);router[_0x956b('0x9')](_0x956b('0xb'),auth[_0x956b('0xc')](),controller[_0x956b('0xd')]);router[_0x956b('0xe')]('/',auth[_0x956b('0xc')](),controller[_0x956b('0xf')]);router['put'](_0x956b('0xb'),auth[_0x956b('0xc')](),controller['update']);router[_0x956b('0x10')](_0x956b('0xb'),auth[_0x956b('0xc')](),controller[_0x956b('0x11')]);module[_0x956b('0x12')]=router;
\ No newline at end of file
index aab3dd3..2bc64b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b91=['exports','STRING'];(function(_0x18bb64,_0x3f50d1){var _0x4ec94c=function(_0x462b2e){while(--_0x462b2e){_0x18bb64['push'](_0x18bb64['shift']());}};_0x4ec94c(++_0x3f50d1);}(_0x5b91,0x10a));var _0x15b9=function(_0x5b7788,_0x309ae5){_0x5b7788=_0x5b7788-0x0;var _0x573871=_0x5b91[_0x5b7788];return _0x573871;};'use strict';var Sequelize=require('sequelize');module[_0x15b9('0x0')]={'name':{'type':Sequelize[_0x15b9('0x1')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x8eb0=['exports','STRING','TEXT','sequelize'];(function(_0x2dbce7,_0x57cb8d){var _0x3a3ed0=function(_0x28c8c6){while(--_0x28c8c6){_0x2dbce7['push'](_0x2dbce7['shift']());}};_0x3a3ed0(++_0x57cb8d);}(_0x8eb0,0x167));var _0x08eb=function(_0x2cff6d,_0x5db073){_0x2cff6d=_0x2cff6d-0x0;var _0x377c78=_0x8eb0[_0x2cff6d];return _0x377c78;};'use strict';var Sequelize=require(_0x08eb('0x0'));module[_0x08eb('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x08eb('0x2')]},'html':{'type':Sequelize[_0x08eb('0x3')]}};
\ No newline at end of file
index 5ef58c0..481c853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe24b=['../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','get','Templates','UserProfileResource','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Template','includeAll','findAll','rows','catch','show','params','length','include','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0xf9dd0d,_0x289328){var _0x8fe313=function(_0x5d0aa9){while(--_0x5d0aa9){_0xf9dd0d['push'](_0xf9dd0d['shift']());}};_0x8fe313(++_0x289328);}(_0xe24b,0xec));var _0xbe24=function(_0x3e3c7a,_0x381151){_0x3e3c7a=_0x3e3c7a-0x0;var _0x25436a=_0xe24b[_0x3e3c7a];return _0x25436a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbe24('0x0'));var zipdir=require(_0xbe24('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xbe24('0x2'));var Mustache=require('mustache');var util=require(_0xbe24('0x3'));var path=require(_0xbe24('0x4'));var sox=require(_0xbe24('0x5'));var csv=require('to-csv');var ejs=require(_0xbe24('0x6'));var fs=require('fs');var fs_extra=require(_0xbe24('0x7'));var _=require(_0xbe24('0x8'));var squel=require('squel');var crypto=require(_0xbe24('0x9'));var jsforce=require(_0xbe24('0xa'));var deskjs=require(_0xbe24('0xb'));var toCsv=require('to-csv');var querystring=require(_0xbe24('0xc'));var Papa=require(_0xbe24('0xd'));var Redis=require(_0xbe24('0xe'));var authService=require(_0xbe24('0xf'));var qs=require(_0xbe24('0x10'));var as=require(_0xbe24('0x11'));var hardwareService=require(_0xbe24('0x12'));var logger=require(_0xbe24('0x13'))(_0xbe24('0x14'));var utils=require(_0xbe24('0x15'));var config=require(_0xbe24('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbe24('0x17'))['db'];function respondWithStatusCode(_0xfc4955,_0x25917f){_0x25917f=_0x25917f||0xcc;return function(_0x1e0627){if(_0x1e0627){return _0xfc4955['sendStatus'](_0x25917f);}return _0xfc4955[_0xbe24('0x18')](_0x25917f)['end']();};}function respondWithResult(_0x45c3f2,_0x45b1b6){_0x45b1b6=_0x45b1b6||0xc8;return function(_0xdde8f8){if(_0xdde8f8){return _0x45c3f2[_0xbe24('0x18')](_0x45b1b6)[_0xbe24('0x19')](_0xdde8f8);}};}function respondWithFilteredResult(_0x4b676f,_0x5806ab){return function(_0x287053){if(_0x287053){var _0x5dc7b5=typeof _0x5806ab['offset']===_0xbe24('0x1a')&&typeof _0x5806ab[_0xbe24('0x1b')]===_0xbe24('0x1a');var _0x443af1=_0x287053[_0xbe24('0x1c')];var _0x22ab62=_0x5dc7b5?0x0:_0x5806ab['offset'];var _0x21a4d8=_0x5dc7b5?_0x287053[_0xbe24('0x1c')]:_0x5806ab[_0xbe24('0x1d')]+_0x5806ab[_0xbe24('0x1b')];var _0x462a33;if(_0x21a4d8>=_0x443af1){_0x21a4d8=_0x443af1;_0x462a33=0xc8;}else{_0x462a33=0xce;}_0x4b676f[_0xbe24('0x18')](_0x462a33);return _0x4b676f[_0xbe24('0x1e')]('Content-Range',_0x22ab62+'-'+_0x21a4d8+'/'+_0x443af1)['json'](_0x287053);}return null;};}function patchUpdates(_0x430611){return function(_0x3f440e){try{jsonpatch[_0xbe24('0x1f')](_0x3f440e,_0x430611,!![]);}catch(_0x4bbbeb){return BPromise[_0xbe24('0x20')](_0x4bbbeb);}return _0x3f440e[_0xbe24('0x21')]();};}function saveUpdates(_0x2fb429,_0x5552af){return function(_0xb86c11){if(_0xb86c11){return _0xb86c11['update'](_0x2fb429)[_0xbe24('0x22')](function(_0x36c199){return _0x36c199;});}return null;};}function removeEntity(_0x1827a2,_0x52668d){return function(_0x574871){if(_0x574871){return _0x574871[_0xbe24('0x23')]()[_0xbe24('0x22')](function(){var _0x287a10=_0x574871[_0xbe24('0x24')]({'plain':!![]});var _0x37c6eb=_0xbe24('0x25');return db[_0xbe24('0x26')][_0xbe24('0x23')]({'where':{'type':_0x37c6eb,'resourceId':_0x287a10['id']}})[_0xbe24('0x22')](function(){return _0x574871;});})['then'](function(){_0x1827a2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d3724,_0x163640){return function(_0xc0151e){if(!_0xc0151e){_0x1d3724[_0xbe24('0x27')](0x194);}return _0xc0151e;};}function handleError(_0x51e39f,_0x1aba6a){_0x1aba6a=_0x1aba6a||0x1f4;return function(_0x3b273c){logger['error'](_0x3b273c[_0xbe24('0x28')]);if(_0x3b273c[_0xbe24('0x29')]){delete _0x3b273c[_0xbe24('0x29')];}_0x51e39f['status'](_0x1aba6a)[_0xbe24('0x2a')](_0x3b273c);};}exports[_0xbe24('0x2b')]=function(_0xf95e81,_0x6af9d1){var _0x262ebf={},_0x4a3c48={},_0x2a1c27={'count':0x0,'rows':[]};var _0x4663aa=_[_0xbe24('0x2c')](db['Template'][_0xbe24('0x2d')],function(_0x3108fe){return{'name':_0x3108fe[_0xbe24('0x2e')],'type':_0x3108fe['type'][_0xbe24('0x2f')]};});_0x4a3c48['model']=_[_0xbe24('0x2c')](_0x4663aa,'name');_0x4a3c48[_0xbe24('0x30')]=_[_0xbe24('0x31')](_0xf95e81[_0xbe24('0x30')]);_0x4a3c48[_0xbe24('0x32')]=_[_0xbe24('0x33')](_0x4a3c48[_0xbe24('0x34')],_0x4a3c48['query']);_0x262ebf[_0xbe24('0x35')]=_[_0xbe24('0x33')](_0x4a3c48[_0xbe24('0x34')],qs[_0xbe24('0x36')](_0xf95e81[_0xbe24('0x30')][_0xbe24('0x36')]));_0x262ebf[_0xbe24('0x35')]=_0x262ebf[_0xbe24('0x35')]['length']?_0x262ebf[_0xbe24('0x35')]:_0x4a3c48[_0xbe24('0x34')];if(!_0xf95e81[_0xbe24('0x30')][_0xbe24('0x37')](_0xbe24('0x38'))){_0x262ebf[_0xbe24('0x1b')]=qs[_0xbe24('0x1b')](_0xf95e81[_0xbe24('0x30')]['limit']);_0x262ebf[_0xbe24('0x1d')]=qs[_0xbe24('0x1d')](_0xf95e81[_0xbe24('0x30')]['offset']);}_0x262ebf[_0xbe24('0x39')]=qs[_0xbe24('0x3a')](_0xf95e81['query'][_0xbe24('0x3a')]);_0x262ebf[_0xbe24('0x3b')]=qs[_0xbe24('0x32')](_[_0xbe24('0x3c')](_0xf95e81[_0xbe24('0x30')],_0x4a3c48[_0xbe24('0x32')]),_0x4663aa);if(_0xf95e81[_0xbe24('0x30')][_0xbe24('0x3d')]){_0x262ebf['where']=_[_0xbe24('0x3e')](_0x262ebf[_0xbe24('0x3b')],{'$or':_[_0xbe24('0x2c')](_0x4663aa,function(_0x294218){if(_0x294218[_0xbe24('0x3f')]!==_0xbe24('0x40')){var _0x45f5a7={};_0x45f5a7[_0x294218[_0xbe24('0x29')]]={'$like':'%'+_0xf95e81[_0xbe24('0x30')][_0xbe24('0x3d')]+'%'};return _0x45f5a7;}})});}_0x262ebf=_[_0xbe24('0x3e')]({},_0x262ebf,_0xf95e81[_0xbe24('0x41')]);var _0x386f42={'where':_0x262ebf[_0xbe24('0x3b')]};return db[_0xbe24('0x42')][_0xbe24('0x1c')](_0x386f42)[_0xbe24('0x22')](function(_0xe3b924){_0x2a1c27[_0xbe24('0x1c')]=_0xe3b924;if(_0xf95e81[_0xbe24('0x30')][_0xbe24('0x43')]){_0x262ebf['include']=[{'all':!![]}];}return db[_0xbe24('0x42')][_0xbe24('0x44')](_0x262ebf);})[_0xbe24('0x22')](function(_0x165ce4){_0x2a1c27[_0xbe24('0x45')]=_0x165ce4;return _0x2a1c27;})[_0xbe24('0x22')](respondWithFilteredResult(_0x6af9d1,_0x262ebf))[_0xbe24('0x46')](handleError(_0x6af9d1,null));};exports[_0xbe24('0x47')]=function(_0x220028,_0x1683df){var _0x2a9033={'raw':!![],'where':{'id':_0x220028[_0xbe24('0x48')]['id']}},_0x9f82e={};_0x9f82e[_0xbe24('0x34')]=_[_0xbe24('0x31')](db[_0xbe24('0x42')][_0xbe24('0x2d')]);_0x9f82e[_0xbe24('0x30')]=_[_0xbe24('0x31')](_0x220028['query']);_0x9f82e[_0xbe24('0x32')]=_['intersection'](_0x9f82e[_0xbe24('0x34')],_0x9f82e['query']);_0x2a9033['attributes']=_[_0xbe24('0x33')](_0x9f82e['model'],qs[_0xbe24('0x36')](_0x220028[_0xbe24('0x30')][_0xbe24('0x36')]));_0x2a9033[_0xbe24('0x35')]=_0x2a9033[_0xbe24('0x35')][_0xbe24('0x49')]?_0x2a9033[_0xbe24('0x35')]:_0x9f82e[_0xbe24('0x34')];if(_0x220028['query'][_0xbe24('0x43')]){_0x2a9033[_0xbe24('0x4a')]=[{'all':!![]}];}_0x2a9033=_[_0xbe24('0x3e')]({},_0x2a9033,_0x220028[_0xbe24('0x41')]);return db['Template'][_0xbe24('0x4b')](_0x2a9033)[_0xbe24('0x22')](handleEntityNotFound(_0x1683df,null))[_0xbe24('0x22')](respondWithResult(_0x1683df,null))[_0xbe24('0x46')](handleError(_0x1683df,null));};exports['create']=function(_0x4d6f06,_0xc19a47){return db[_0xbe24('0x42')]['create'](_0x4d6f06['body'],{})['then'](function(_0x3dd21c){var _0x1df42f=_0x4d6f06[_0xbe24('0x4c')][_0xbe24('0x24')]({'plain':!![]});if(!_0x1df42f)throw new Error(_0xbe24('0x4d'));if(_0x1df42f[_0xbe24('0x4e')]===_0xbe24('0x4c')){var _0x5d2cf7=_0x3dd21c[_0xbe24('0x24')]({'plain':!![]});var _0x43e07b=_0xbe24('0x25');return db[_0xbe24('0x4f')][_0xbe24('0x4b')]({'where':{'name':_0x43e07b,'userProfileId':_0x1df42f[_0xbe24('0x50')]},'raw':!![]})[_0xbe24('0x22')](function(_0x28d42a){if(_0x28d42a&&_0x28d42a[_0xbe24('0x51')]===0x0){return db[_0xbe24('0x26')]['create']({'name':_0x5d2cf7[_0xbe24('0x29')],'resourceId':_0x5d2cf7['id'],'type':_0x28d42a[_0xbe24('0x29')],'sectionId':_0x28d42a['id']},{})['then'](function(){return _0x3dd21c;});}else{return _0x3dd21c;}})[_0xbe24('0x46')](function(_0x349fd6){logger[_0xbe24('0x52')](_0xbe24('0x53'),_0x349fd6);throw _0x349fd6;});}return _0x3dd21c;})[_0xbe24('0x22')](respondWithResult(_0xc19a47,0xc9))[_0xbe24('0x46')](handleError(_0xc19a47,null));};exports['update']=function(_0x1dc19d,_0x55b20d){if(_0x1dc19d[_0xbe24('0x54')]['id']){delete _0x1dc19d[_0xbe24('0x54')]['id'];}return db[_0xbe24('0x42')]['find']({'where':{'id':_0x1dc19d['params']['id']}})[_0xbe24('0x22')](handleEntityNotFound(_0x55b20d,null))[_0xbe24('0x22')](saveUpdates(_0x1dc19d[_0xbe24('0x54')],null))[_0xbe24('0x22')](respondWithResult(_0x55b20d,null))[_0xbe24('0x46')](handleError(_0x55b20d,null));};exports['destroy']=function(_0x484ea9,_0x31e543){return db[_0xbe24('0x42')]['find']({'where':{'id':_0x484ea9['params']['id']}})[_0xbe24('0x22')](handleEntityNotFound(_0x31e543,null))[_0xbe24('0x22')](removeEntity(_0x31e543,null))[_0xbe24('0x46')](handleError(_0x31e543,null));};
\ No newline at end of file
+var _0x8529=['order','sort','where','filter','merge','type','options','Template','includeAll','include','findAll','rows','catch','show','filters','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0xe90f87,_0x61b5ab){var _0x40e9cb=function(_0x242fe1){while(--_0x242fe1){_0xe90f87['push'](_0xe90f87['shift']());}};_0x40e9cb(++_0x61b5ab);}(_0x8529,0x6d));var _0x9852=function(_0x18b75b,_0x95b33e){_0x18b75b=_0x18b75b-0x0;var _0x4d2c15=_0x8529[_0x18b75b];return _0x4d2c15;};'use strict';var emlformat=require(_0x9852('0x0'));var rimraf=require(_0x9852('0x1'));var zipdir=require(_0x9852('0x2'));var jsonpatch=require(_0x9852('0x3'));var rp=require(_0x9852('0x4'));var moment=require(_0x9852('0x5'));var BPromise=require(_0x9852('0x6'));var Mustache=require(_0x9852('0x7'));var util=require(_0x9852('0x8'));var path=require(_0x9852('0x9'));var sox=require(_0x9852('0xa'));var csv=require(_0x9852('0xb'));var ejs=require(_0x9852('0xc'));var fs=require('fs');var fs_extra=require(_0x9852('0xd'));var _=require(_0x9852('0xe'));var squel=require(_0x9852('0xf'));var crypto=require('crypto');var jsforce=require(_0x9852('0x10'));var deskjs=require(_0x9852('0x11'));var toCsv=require(_0x9852('0xb'));var querystring=require(_0x9852('0x12'));var Papa=require(_0x9852('0x13'));var Redis=require(_0x9852('0x14'));var authService=require(_0x9852('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x9852('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9852('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3044aa,_0x18f9eb){_0x18f9eb=_0x18f9eb||0xcc;return function(_0xf55c4a){if(_0xf55c4a){return _0x3044aa[_0x9852('0x18')](_0x18f9eb);}return _0x3044aa[_0x9852('0x19')](_0x18f9eb)['end']();};}function respondWithResult(_0x1ef183,_0x4ef14c){_0x4ef14c=_0x4ef14c||0xc8;return function(_0x1cf547){if(_0x1cf547){return _0x1ef183['status'](_0x4ef14c)[_0x9852('0x1a')](_0x1cf547);}};}function respondWithFilteredResult(_0x3eaf39,_0x5aec14){return function(_0x5e3707){if(_0x5e3707){var _0x56bba3=typeof _0x5aec14[_0x9852('0x1b')]===_0x9852('0x1c')&&typeof _0x5aec14['limit']===_0x9852('0x1c');var _0x2137c4=_0x5e3707[_0x9852('0x1d')];var _0x5107c4=_0x56bba3?0x0:_0x5aec14['offset'];var _0x1df834=_0x56bba3?_0x5e3707[_0x9852('0x1d')]:_0x5aec14[_0x9852('0x1b')]+_0x5aec14[_0x9852('0x1e')];var _0x3c23e4;if(_0x1df834>=_0x2137c4){_0x1df834=_0x2137c4;_0x3c23e4=0xc8;}else{_0x3c23e4=0xce;}_0x3eaf39[_0x9852('0x19')](_0x3c23e4);return _0x3eaf39['set'](_0x9852('0x1f'),_0x5107c4+'-'+_0x1df834+'/'+_0x2137c4)['json'](_0x5e3707);}return null;};}function patchUpdates(_0x32ac0c){return function(_0x20f723){try{jsonpatch[_0x9852('0x20')](_0x20f723,_0x32ac0c,!![]);}catch(_0x4e402a){return BPromise[_0x9852('0x21')](_0x4e402a);}return _0x20f723[_0x9852('0x22')]();};}function saveUpdates(_0x500599,_0x1ecdac){return function(_0xf82f76){if(_0xf82f76){return _0xf82f76[_0x9852('0x23')](_0x500599)[_0x9852('0x24')](function(_0x3d5073){return _0x3d5073;});}return null;};}function removeEntity(_0x5c726f,_0x4d1d97){return function(_0x164fe3){if(_0x164fe3){return _0x164fe3[_0x9852('0x25')]()[_0x9852('0x24')](function(){var _0x11cf23=_0x164fe3[_0x9852('0x26')]({'plain':!![]});var _0x1e7e92='Templates';return db[_0x9852('0x27')][_0x9852('0x25')]({'where':{'type':_0x1e7e92,'resourceId':_0x11cf23['id']}})[_0x9852('0x24')](function(){return _0x164fe3;});})[_0x9852('0x24')](function(){_0x5c726f[_0x9852('0x19')](0xcc)[_0x9852('0x28')]();});}};}function handleEntityNotFound(_0x4fb5b1,_0x290e78){return function(_0x30f81d){if(!_0x30f81d){_0x4fb5b1[_0x9852('0x18')](0x194);}return _0x30f81d;};}function handleError(_0x653ee7,_0x35b626){_0x35b626=_0x35b626||0x1f4;return function(_0x367ce0){logger[_0x9852('0x29')](_0x367ce0[_0x9852('0x2a')]);if(_0x367ce0[_0x9852('0x2b')]){delete _0x367ce0[_0x9852('0x2b')];}_0x653ee7['status'](_0x35b626)[_0x9852('0x2c')](_0x367ce0);};}exports[_0x9852('0x2d')]=function(_0x55f220,_0x28fc15){var _0x1b3b02={},_0x19e4ba={},_0xdd5786={'count':0x0,'rows':[]};var _0x3d75b0=_[_0x9852('0x2e')](db['Template'][_0x9852('0x2f')],function(_0x5d0472){return{'name':_0x5d0472[_0x9852('0x30')],'type':_0x5d0472['type'][_0x9852('0x31')]};});_0x19e4ba[_0x9852('0x32')]=_['map'](_0x3d75b0,_0x9852('0x2b'));_0x19e4ba[_0x9852('0x33')]=_[_0x9852('0x34')](_0x55f220[_0x9852('0x33')]);_0x19e4ba['filters']=_[_0x9852('0x35')](_0x19e4ba['model'],_0x19e4ba['query']);_0x1b3b02[_0x9852('0x36')]=_['intersection'](_0x19e4ba[_0x9852('0x32')],qs[_0x9852('0x37')](_0x55f220[_0x9852('0x33')]['fields']));_0x1b3b02['attributes']=_0x1b3b02['attributes'][_0x9852('0x38')]?_0x1b3b02['attributes']:_0x19e4ba[_0x9852('0x32')];if(!_0x55f220['query'][_0x9852('0x39')](_0x9852('0x3a'))){_0x1b3b02[_0x9852('0x1e')]=qs[_0x9852('0x1e')](_0x55f220[_0x9852('0x33')]['limit']);_0x1b3b02[_0x9852('0x1b')]=qs['offset'](_0x55f220['query'][_0x9852('0x1b')]);}_0x1b3b02[_0x9852('0x3b')]=qs[_0x9852('0x3c')](_0x55f220[_0x9852('0x33')]['sort']);_0x1b3b02[_0x9852('0x3d')]=qs['filters'](_['pick'](_0x55f220[_0x9852('0x33')],_0x19e4ba['filters']),_0x3d75b0);if(_0x55f220[_0x9852('0x33')][_0x9852('0x3e')]){_0x1b3b02[_0x9852('0x3d')]=_[_0x9852('0x3f')](_0x1b3b02['where'],{'$or':_['map'](_0x3d75b0,function(_0x184d58){if(_0x184d58[_0x9852('0x40')]!=='VIRTUAL'){var _0x1baf34={};_0x1baf34[_0x184d58[_0x9852('0x2b')]]={'$like':'%'+_0x55f220[_0x9852('0x33')][_0x9852('0x3e')]+'%'};return _0x1baf34;}})});}_0x1b3b02=_['merge']({},_0x1b3b02,_0x55f220[_0x9852('0x41')]);var _0x194e2d={'where':_0x1b3b02[_0x9852('0x3d')]};return db[_0x9852('0x42')][_0x9852('0x1d')](_0x194e2d)[_0x9852('0x24')](function(_0x39ab56){_0xdd5786[_0x9852('0x1d')]=_0x39ab56;if(_0x55f220[_0x9852('0x33')][_0x9852('0x43')]){_0x1b3b02[_0x9852('0x44')]=[{'all':!![]}];}return db[_0x9852('0x42')][_0x9852('0x45')](_0x1b3b02);})['then'](function(_0x51d050){_0xdd5786[_0x9852('0x46')]=_0x51d050;return _0xdd5786;})[_0x9852('0x24')](respondWithFilteredResult(_0x28fc15,_0x1b3b02))[_0x9852('0x47')](handleError(_0x28fc15,null));};exports[_0x9852('0x48')]=function(_0xee41b6,_0x387190){var _0x478350={'raw':!![],'where':{'id':_0xee41b6['params']['id']}},_0x51d140={};_0x51d140['model']=_[_0x9852('0x34')](db[_0x9852('0x42')][_0x9852('0x2f')]);_0x51d140[_0x9852('0x33')]=_[_0x9852('0x34')](_0xee41b6[_0x9852('0x33')]);_0x51d140[_0x9852('0x49')]=_['intersection'](_0x51d140['model'],_0x51d140[_0x9852('0x33')]);_0x478350[_0x9852('0x36')]=_['intersection'](_0x51d140[_0x9852('0x32')],qs[_0x9852('0x37')](_0xee41b6[_0x9852('0x33')][_0x9852('0x37')]));_0x478350[_0x9852('0x36')]=_0x478350[_0x9852('0x36')]['length']?_0x478350[_0x9852('0x36')]:_0x51d140[_0x9852('0x32')];if(_0xee41b6[_0x9852('0x33')][_0x9852('0x43')]){_0x478350[_0x9852('0x44')]=[{'all':!![]}];}_0x478350=_[_0x9852('0x3f')]({},_0x478350,_0xee41b6[_0x9852('0x41')]);return db[_0x9852('0x42')]['find'](_0x478350)[_0x9852('0x24')](handleEntityNotFound(_0x387190,null))[_0x9852('0x24')](respondWithResult(_0x387190,null))[_0x9852('0x47')](handleError(_0x387190,null));};exports[_0x9852('0x4a')]=function(_0x59e883,_0x5a6131){return db[_0x9852('0x42')][_0x9852('0x4a')](_0x59e883['body'],{})['then'](function(_0x249ee8){var _0xc42e2c=_0x59e883[_0x9852('0x4b')][_0x9852('0x26')]({'plain':!![]});if(!_0xc42e2c)throw new Error(_0x9852('0x4c'));if(_0xc42e2c[_0x9852('0x4d')]===_0x9852('0x4b')){var _0x4167e4=_0x249ee8[_0x9852('0x26')]({'plain':!![]});var _0x3c81ce='Templates';return db[_0x9852('0x4e')][_0x9852('0x4f')]({'where':{'name':_0x3c81ce,'userProfileId':_0xc42e2c[_0x9852('0x50')]},'raw':!![]})[_0x9852('0x24')](function(_0x3f97e9){if(_0x3f97e9&&_0x3f97e9['autoAssociation']===0x0){return db['UserProfileResource'][_0x9852('0x4a')]({'name':_0x4167e4['name'],'resourceId':_0x4167e4['id'],'type':_0x3f97e9[_0x9852('0x2b')],'sectionId':_0x3f97e9['id']},{})[_0x9852('0x24')](function(){return _0x249ee8;});}else{return _0x249ee8;}})[_0x9852('0x47')](function(_0x39419d){logger['error'](_0x9852('0x51'),_0x39419d);throw _0x39419d;});}return _0x249ee8;})[_0x9852('0x24')](respondWithResult(_0x5a6131,0xc9))[_0x9852('0x47')](handleError(_0x5a6131,null));};exports[_0x9852('0x23')]=function(_0x25388a,_0x4fa6b3){if(_0x25388a[_0x9852('0x52')]['id']){delete _0x25388a[_0x9852('0x52')]['id'];}return db['Template'][_0x9852('0x4f')]({'where':{'id':_0x25388a[_0x9852('0x53')]['id']}})[_0x9852('0x24')](handleEntityNotFound(_0x4fa6b3,null))[_0x9852('0x24')](saveUpdates(_0x25388a[_0x9852('0x52')],null))[_0x9852('0x24')](respondWithResult(_0x4fa6b3,null))[_0x9852('0x47')](handleError(_0x4fa6b3,null));};exports['destroy']=function(_0xb450bb,_0x3f6713){return db[_0x9852('0x42')][_0x9852('0x4f')]({'where':{'id':_0xb450bb[_0x9852('0x53')]['id']}})['then'](handleEntityNotFound(_0x3f6713,null))['then'](removeEntity(_0x3f6713,null))[_0x9852('0x47')](handleError(_0x3f6713,null));};
\ No newline at end of file
index 8b8bf9a..890c5fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f09=['moment','request-promise','../../config/environment','exports','define','tools_templates','util','../../config/logger','api'];(function(_0x4d8996,_0x3a1517){var _0x56bc4c=function(_0x4bff4b){while(--_0x4bff4b){_0x4d8996['push'](_0x4d8996['shift']());}};_0x56bc4c(++_0x3a1517);}(_0x3f09,0x12f));var _0x93f0=function(_0x10f153,_0x395937){_0x10f153=_0x10f153-0x0;var _0x24e813=_0x3f09[_0x10f153];return _0x24e813;};'use strict';var _=require('lodash');var util=require(_0x93f0('0x0'));var logger=require(_0x93f0('0x1'))(_0x93f0('0x2'));var moment=require(_0x93f0('0x3'));var BPromise=require('bluebird');var rp=require(_0x93f0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x93f0('0x5'));var attributes=require('./template.attributes');module[_0x93f0('0x6')]=function(_0x2b2b70,_0x22d109){return _0x2b2b70[_0x93f0('0x7')]('Template',attributes,{'tableName':_0x93f0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c27=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes','define','Template','lodash'];(function(_0x2170e4,_0x5b969e){var _0xec86f5=function(_0x44e53e){while(--_0x44e53e){_0x2170e4['push'](_0x2170e4['shift']());}};_0xec86f5(++_0x5b969e);}(_0x5c27,0x1c7));var _0x75c2=function(_0x136a23,_0x507cda){_0x136a23=_0x136a23-0x0;var _0x48e69b=_0x5c27[_0x136a23];return _0x48e69b;};'use strict';var _=require(_0x75c2('0x0'));var util=require('util');var logger=require(_0x75c2('0x1'))(_0x75c2('0x2'));var moment=require(_0x75c2('0x3'));var BPromise=require(_0x75c2('0x4'));var rp=require(_0x75c2('0x5'));var fs=require('fs');var path=require(_0x75c2('0x6'));var rimraf=require(_0x75c2('0x7'));var config=require(_0x75c2('0x8'));var attributes=require(_0x75c2('0x9'));module['exports']=function(_0x311fb4,_0x232d31){return _0x311fb4[_0x75c2('0xa')](_0x75c2('0xb'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5f6aeb2..f9eaf83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c8=['client','http','request','then','info','request\x20sent','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Template,\x20%s,\x20%s','findAll','options','raw','limit','map','model','attributes','include','GetTemplate','lodash','util','moment','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise'];(function(_0x4cd9b8,_0x14067c){var _0x35e5f5=function(_0x2e4241){while(--_0x2e4241){_0x4cd9b8['push'](_0x4cd9b8['shift']());}};_0x35e5f5(++_0x14067c);}(_0xb1c8,0xd1));var _0x8b1c=function(_0x1bc013,_0x7771c6){_0x1bc013=_0x1bc013-0x0;var _0x55df36=_0xb1c8[_0x1bc013];return _0x55df36;};'use strict';var _=require(_0x8b1c('0x0'));var util=require(_0x8b1c('0x1'));var moment=require(_0x8b1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x8b1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8b1c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8b1c('0x5'));var config=require(_0x8b1c('0x6'));var jayson=require(_0x8b1c('0x7'));var client=jayson[_0x8b1c('0x8')][_0x8b1c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50e5fe,_0x3fd515,_0x22e723){return new BPromise(function(_0x4efa2f,_0x52e02d){return client[_0x8b1c('0xa')](_0x50e5fe,_0x22e723)[_0x8b1c('0xb')](function(_0xc968f4){logger[_0x8b1c('0xc')]('Template,\x20%s,\x20%s',_0x3fd515,_0x8b1c('0xd'));logger['debug'](_0x8b1c('0xe'),_0x3fd515,_0x8b1c('0xd'),JSON[_0x8b1c('0xf')](_0xc968f4));if(_0xc968f4['error']){if(_0xc968f4[_0x8b1c('0x10')][_0x8b1c('0x11')]===0x1f4){logger[_0x8b1c('0x10')]('Template,\x20%s,\x20%s',_0x3fd515,_0xc968f4[_0x8b1c('0x10')]['message']);return _0x52e02d(_0xc968f4[_0x8b1c('0x10')][_0x8b1c('0x12')]);}logger[_0x8b1c('0x10')]('Template,\x20%s,\x20%s',_0x3fd515,_0xc968f4[_0x8b1c('0x10')][_0x8b1c('0x12')]);return _0x4efa2f(_0xc968f4[_0x8b1c('0x10')][_0x8b1c('0x12')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x3fd515,_0x8b1c('0xd'));_0x4efa2f(_0xc968f4[_0x8b1c('0x13')][_0x8b1c('0x12')]);}})[_0x8b1c('0x14')](function(_0x5e6a25){logger[_0x8b1c('0x10')](_0x8b1c('0x15'),_0x3fd515,_0x5e6a25);_0x52e02d(_0x5e6a25);});});}exports['GetTemplate']=function(_0x194c17){var _0x39b26b=this;return new Promise(function(_0x2305d2,_0x4b01db){return db['Template'][_0x8b1c('0x16')]({'raw':_0x194c17[_0x8b1c('0x17')]?_0x194c17[_0x8b1c('0x17')][_0x8b1c('0x18')]===undefined?!![]:![]:!![],'where':_0x194c17[_0x8b1c('0x17')]?_0x194c17[_0x8b1c('0x17')]['where']||null:null,'attributes':_0x194c17[_0x8b1c('0x17')]?_0x194c17['options']['attributes']||null:null,'limit':_0x194c17[_0x8b1c('0x17')]?_0x194c17[_0x8b1c('0x17')][_0x8b1c('0x19')]||null:null,'include':_0x194c17[_0x8b1c('0x17')]?_0x194c17[_0x8b1c('0x17')]['include']?_[_0x8b1c('0x1a')](_0x194c17[_0x8b1c('0x17')]['include'],function(_0x56bd89){return{'model':db[_0x56bd89[_0x8b1c('0x1b')]],'as':_0x56bd89['as'],'attributes':_0x56bd89[_0x8b1c('0x1c')],'include':_0x56bd89[_0x8b1c('0x1d')]?_[_0x8b1c('0x1a')](_0x56bd89['include'],function(_0xa9e4c1){return{'model':db[_0xa9e4c1[_0x8b1c('0x1b')]],'as':_0xa9e4c1['as'],'attributes':_0xa9e4c1['attributes'],'include':_0xa9e4c1[_0x8b1c('0x1d')]?_['map'](_0xa9e4c1[_0x8b1c('0x1d')],function(_0x5aa9a4){return{'model':db[_0x5aa9a4[_0x8b1c('0x1b')]],'as':_0x5aa9a4['as'],'attributes':_0x5aa9a4[_0x8b1c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8b1c('0xb')](function(_0x559d62){logger[_0x8b1c('0xc')](_0x8b1c('0x1e'),_0x194c17);logger['debug'](_0x8b1c('0x1e'),_0x194c17,JSON[_0x8b1c('0xf')](_0x559d62));_0x2305d2(_0x559d62);})[_0x8b1c('0x14')](function(_0x27574d){logger[_0x8b1c('0x10')](_0x8b1c('0x1e'),_0x27574d[_0x8b1c('0x12')],_0x194c17);_0x4b01db(_0x39b26b[_0x8b1c('0x10')](0x1f4,_0x27574d['message']));});});};
\ No newline at end of file
+var _0x5464=['result','catch','GetTemplate','Template','findAll','options','raw','where','attributes','limit','include','map','model','lodash','moment','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x5442d9,_0x128226){var _0x47e9d8=function(_0x518a39){while(--_0x518a39){_0x5442d9['push'](_0x5442d9['shift']());}};_0x47e9d8(++_0x128226);}(_0x5464,0xb2));var _0x4546=function(_0x34d78d,_0x33d145){_0x34d78d=_0x34d78d-0x0;var _0x2b7f21=_0x5464[_0x34d78d];return _0x2b7f21;};'use strict';var _=require(_0x4546('0x0'));var util=require('util');var moment=require(_0x4546('0x1'));var BPromise=require(_0x4546('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4546('0x3'));var db=require(_0x4546('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4546('0x5'));var config=require('../../config/environment');var jayson=require(_0x4546('0x6'));var client=jayson[_0x4546('0x7')][_0x4546('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x59b742,_0x448a72,_0x199706){return new BPromise(function(_0x1373eb,_0x4f519c){return client[_0x4546('0x9')](_0x59b742,_0x199706)[_0x4546('0xa')](function(_0x49d6e2){logger['info'](_0x4546('0xb'),_0x448a72,_0x4546('0xc'));logger[_0x4546('0xd')](_0x4546('0xe'),_0x448a72,_0x4546('0xc'),JSON[_0x4546('0xf')](_0x49d6e2));if(_0x49d6e2[_0x4546('0x10')]){if(_0x49d6e2[_0x4546('0x10')][_0x4546('0x11')]===0x1f4){logger['error'](_0x4546('0xb'),_0x448a72,_0x49d6e2['error']['message']);return _0x4f519c(_0x49d6e2[_0x4546('0x10')][_0x4546('0x12')]);}logger[_0x4546('0x10')](_0x4546('0xb'),_0x448a72,_0x49d6e2[_0x4546('0x10')]['message']);return _0x1373eb(_0x49d6e2[_0x4546('0x10')][_0x4546('0x12')]);}else{logger[_0x4546('0x13')](_0x4546('0xb'),_0x448a72,_0x4546('0xc'));_0x1373eb(_0x49d6e2[_0x4546('0x14')][_0x4546('0x12')]);}})[_0x4546('0x15')](function(_0x4c243c){logger[_0x4546('0x10')](_0x4546('0xb'),_0x448a72,_0x4c243c);_0x4f519c(_0x4c243c);});});}exports[_0x4546('0x16')]=function(_0x2bd878){var _0x409464=this;return new Promise(function(_0xfe94be,_0x106eed){return db[_0x4546('0x17')][_0x4546('0x18')]({'raw':_0x2bd878[_0x4546('0x19')]?_0x2bd878[_0x4546('0x19')][_0x4546('0x1a')]===undefined?!![]:![]:!![],'where':_0x2bd878[_0x4546('0x19')]?_0x2bd878[_0x4546('0x19')][_0x4546('0x1b')]||null:null,'attributes':_0x2bd878['options']?_0x2bd878[_0x4546('0x19')][_0x4546('0x1c')]||null:null,'limit':_0x2bd878[_0x4546('0x19')]?_0x2bd878[_0x4546('0x19')][_0x4546('0x1d')]||null:null,'include':_0x2bd878[_0x4546('0x19')]?_0x2bd878[_0x4546('0x19')][_0x4546('0x1e')]?_[_0x4546('0x1f')](_0x2bd878[_0x4546('0x19')][_0x4546('0x1e')],function(_0xff20a9){return{'model':db[_0xff20a9[_0x4546('0x20')]],'as':_0xff20a9['as'],'attributes':_0xff20a9[_0x4546('0x1c')],'include':_0xff20a9[_0x4546('0x1e')]?_[_0x4546('0x1f')](_0xff20a9[_0x4546('0x1e')],function(_0x40aec5){return{'model':db[_0x40aec5[_0x4546('0x20')]],'as':_0x40aec5['as'],'attributes':_0x40aec5['attributes'],'include':_0x40aec5[_0x4546('0x1e')]?_[_0x4546('0x1f')](_0x40aec5[_0x4546('0x1e')],function(_0x200996){return{'model':db[_0x200996[_0x4546('0x20')]],'as':_0x200996['as'],'attributes':_0x200996[_0x4546('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x51a93b){logger['info'](_0x4546('0x16'),_0x2bd878);logger[_0x4546('0xd')](_0x4546('0x16'),_0x2bd878,JSON[_0x4546('0xf')](_0x51a93b));_0xfe94be(_0x51a93b);})[_0x4546('0x15')](function(_0xd7bd07){logger[_0x4546('0x10')]('GetTemplate',_0xd7bd07[_0x4546('0x12')],_0x2bd878);_0x106eed(_0x409464[_0x4546('0x10')](0x1f4,_0xd7bd07[_0x4546('0x12')]));});});};
\ No newline at end of file
index 5a78adb..498c424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95ef=['addAction','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/all_conditions','getAnyConditions','/:id/actions','getActions','post','/:id/any_conditions'];(function(_0x24210f,_0x3510de){var _0x37b6db=function(_0x53a3ba){while(--_0x53a3ba){_0x24210f['push'](_0x24210f['shift']());}};_0x37b6db(++_0x3510de);}(_0x95ef,0x119));var _0xf95e=function(_0x4c9b60,_0x203e8c){_0x4c9b60=_0x4c9b60-0x0;var _0x1fe363=_0x95ef[_0x4c9b60];return _0x1fe363;};'use strict';var multer=require(_0xf95e('0x0'));var util=require('util');var path=require(_0xf95e('0x1'));var timeout=require('connect-timeout');var express=require(_0xf95e('0x2'));var router=express[_0xf95e('0x3')]();var fs_extra=require(_0xf95e('0x4'));var auth=require(_0xf95e('0x5'));var interaction=require(_0xf95e('0x6'));var config=require(_0xf95e('0x7'));var controller=require('./trigger.controller');router[_0xf95e('0x8')]('/',auth[_0xf95e('0x9')](),controller['index']);router['get'](_0xf95e('0xa'),auth['isAuthenticated'](),controller[_0xf95e('0xb')]);router[_0xf95e('0x8')](_0xf95e('0xc'),auth[_0xf95e('0x9')](),controller['getAllConditions']);router[_0xf95e('0x8')]('/:id/any_conditions',auth[_0xf95e('0x9')](),controller[_0xf95e('0xd')]);router[_0xf95e('0x8')](_0xf95e('0xe'),auth[_0xf95e('0x9')](),controller[_0xf95e('0xf')]);router['post']('/',auth[_0xf95e('0x9')](),controller['create']);router[_0xf95e('0x10')]('/:id/all_conditions',auth[_0xf95e('0x9')](),controller['addAllCondition']);router[_0xf95e('0x10')](_0xf95e('0x11'),auth[_0xf95e('0x9')](),controller['addAnyCondition']);router['post'](_0xf95e('0xe'),auth[_0xf95e('0x9')](),controller[_0xf95e('0x12')]);router[_0xf95e('0x13')](_0xf95e('0xa'),auth[_0xf95e('0x9')](),controller[_0xf95e('0x14')]);router[_0xf95e('0x15')](_0xf95e('0xa'),auth[_0xf95e('0x9')](),controller[_0xf95e('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x54e4=['delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','index','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','get','/:id/any_conditions','/:id/actions','getActions','post','create','addAction','put','update'];(function(_0x4890e6,_0x3b9059){var _0x113e89=function(_0x153ef7){while(--_0x153ef7){_0x4890e6['push'](_0x4890e6['shift']());}};_0x113e89(++_0x3b9059);}(_0x54e4,0xbf));var _0x454e=function(_0x5d6e11,_0x47c024){_0x5d6e11=_0x5d6e11-0x0;var _0x1e517c=_0x54e4[_0x5d6e11];return _0x1e517c;};'use strict';var multer=require(_0x454e('0x0'));var util=require(_0x454e('0x1'));var path=require(_0x454e('0x2'));var timeout=require('connect-timeout');var express=require(_0x454e('0x3'));var router=express[_0x454e('0x4')]();var fs_extra=require(_0x454e('0x5'));var auth=require(_0x454e('0x6'));var interaction=require(_0x454e('0x7'));var config=require(_0x454e('0x8'));var controller=require(_0x454e('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x454e('0xa')]);router['get'](_0x454e('0xb'),auth[_0x454e('0xc')](),controller[_0x454e('0xd')]);router['get'](_0x454e('0xe'),auth[_0x454e('0xc')](),controller[_0x454e('0xf')]);router[_0x454e('0x10')](_0x454e('0x11'),auth[_0x454e('0xc')](),controller['getAnyConditions']);router[_0x454e('0x10')](_0x454e('0x12'),auth[_0x454e('0xc')](),controller[_0x454e('0x13')]);router[_0x454e('0x14')]('/',auth['isAuthenticated'](),controller[_0x454e('0x15')]);router['post'](_0x454e('0xe'),auth[_0x454e('0xc')](),controller['addAllCondition']);router['post'](_0x454e('0x11'),auth[_0x454e('0xc')](),controller['addAnyCondition']);router[_0x454e('0x14')](_0x454e('0x12'),auth[_0x454e('0xc')](),controller[_0x454e('0x16')]);router[_0x454e('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x454e('0x18')]);router[_0x454e('0x19')](_0x454e('0xb'),auth[_0x454e('0xc')](),controller['destroy']);module[_0x454e('0x1a')]=router;
\ No newline at end of file
index 55b62cd..ba20c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b11=['STRING','BOOLEAN','exports'];(function(_0x56418e,_0x362812){var _0x5b160c=function(_0x5b44cb){while(--_0x5b44cb){_0x56418e['push'](_0x56418e['shift']());}};_0x5b160c(++_0x362812);}(_0x8b11,0xa1));var _0x18b1=function(_0x6fbc80,_0x355ace){_0x6fbc80=_0x6fbc80-0x0;var _0x57c2ff=_0x8b11[_0x6fbc80];return _0x57c2ff;};'use strict';var Sequelize=require('sequelize');module[_0x18b1('0x0')]={'name':{'type':Sequelize[_0x18b1('0x1')]},'channel':{'type':Sequelize[_0x18b1('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x18b1('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9dcb=['exports','STRING','BOOLEAN','sequelize'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9dcb,0x17f));var _0xb9dc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9dcb[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb9dc('0x0'));module[_0xb9dc('0x1')]={'name':{'type':Sequelize[_0xb9dc('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xb9dc('0x3')],'defaultValue':![]}};
\ No newline at end of file
index eb96787..e24dc07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc443=['nolimit','order','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','merge','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','hasOwnProperty','getAnyConditions','TriggerId','Action','getActions','rimraf','zip-dir','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','offset','count','limit','set','Content-Range','json','apply','update','then','destroy','get','Triggers','UserProfileResource','error','stack','name','send','map','Trigger','rawAttributes','fieldName','type','query','intersection','model','attributes','fields','length'];(function(_0x4f326d,_0x30507b){var _0x384536=function(_0x4fb19c){while(--_0x4fb19c){_0x4f326d['push'](_0x4f326d['shift']());}};_0x384536(++_0x30507b);}(_0xc443,0x13a));var _0x3c44=function(_0x101ed0,_0x21e7f6){_0x101ed0=_0x101ed0-0x0;var _0x5bd1dd=_0xc443[_0x101ed0];return _0x5bd1dd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c44('0x0'));var zipdir=require(_0x3c44('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3c44('0x2'));var Mustache=require(_0x3c44('0x3'));var util=require(_0x3c44('0x4'));var path=require('path');var sox=require(_0x3c44('0x5'));var csv=require(_0x3c44('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3c44('0x7'));var _=require(_0x3c44('0x8'));var squel=require(_0x3c44('0x9'));var crypto=require(_0x3c44('0xa'));var jsforce=require(_0x3c44('0xb'));var deskjs=require(_0x3c44('0xc'));var toCsv=require('to-csv');var querystring=require(_0x3c44('0xd'));var Papa=require(_0x3c44('0xe'));var Redis=require(_0x3c44('0xf'));var authService=require(_0x3c44('0x10'));var qs=require(_0x3c44('0x11'));var as=require(_0x3c44('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x3c44('0x13'));var config=require(_0x3c44('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x3c44('0x15'))['db'];function respondWithStatusCode(_0x4760e9,_0x373952){_0x373952=_0x373952||0xcc;return function(_0x201d48){if(_0x201d48){return _0x4760e9[_0x3c44('0x16')](_0x373952);}return _0x4760e9[_0x3c44('0x17')](_0x373952)[_0x3c44('0x18')]();};}function respondWithResult(_0x2ac3d6,_0x33cfe8){_0x33cfe8=_0x33cfe8||0xc8;return function(_0x42849d){if(_0x42849d){return _0x2ac3d6[_0x3c44('0x17')](_0x33cfe8)['json'](_0x42849d);}};}function respondWithFilteredResult(_0x53880f,_0x52f825){return function(_0x351f59){if(_0x351f59){var _0x123801=typeof _0x52f825['offset']===_0x3c44('0x19')&&typeof _0x52f825['limit']===_0x3c44('0x19');var _0x5a4a3b=_0x351f59['count'];var _0x16d57c=_0x123801?0x0:_0x52f825[_0x3c44('0x1a')];var _0x18b902=_0x123801?_0x351f59[_0x3c44('0x1b')]:_0x52f825[_0x3c44('0x1a')]+_0x52f825[_0x3c44('0x1c')];var _0x2cf875;if(_0x18b902>=_0x5a4a3b){_0x18b902=_0x5a4a3b;_0x2cf875=0xc8;}else{_0x2cf875=0xce;}_0x53880f[_0x3c44('0x17')](_0x2cf875);return _0x53880f[_0x3c44('0x1d')](_0x3c44('0x1e'),_0x16d57c+'-'+_0x18b902+'/'+_0x5a4a3b)[_0x3c44('0x1f')](_0x351f59);}return null;};}function patchUpdates(_0x37e17b){return function(_0x47c582){try{jsonpatch[_0x3c44('0x20')](_0x47c582,_0x37e17b,!![]);}catch(_0x5be9a7){return BPromise['reject'](_0x5be9a7);}return _0x47c582['save']();};}function saveUpdates(_0x145bda,_0x48bb6f){return function(_0x5bc799){if(_0x5bc799){return _0x5bc799[_0x3c44('0x21')](_0x145bda)[_0x3c44('0x22')](function(_0x1a0bc7){return _0x1a0bc7;});}return null;};}function removeEntity(_0x2d5201,_0xb1c1f2){return function(_0x18e1ef){if(_0x18e1ef){return _0x18e1ef[_0x3c44('0x23')]()['then'](function(){var _0x23cc7e=_0x18e1ef[_0x3c44('0x24')]({'plain':!![]});var _0x1171c8=_0x3c44('0x25');return db[_0x3c44('0x26')][_0x3c44('0x23')]({'where':{'type':_0x1171c8,'resourceId':_0x23cc7e['id']}})[_0x3c44('0x22')](function(){return _0x18e1ef;});})[_0x3c44('0x22')](function(){_0x2d5201[_0x3c44('0x17')](0xcc)[_0x3c44('0x18')]();});}};}function handleEntityNotFound(_0xef72c4,_0x5a0df7){return function(_0x250aa4){if(!_0x250aa4){_0xef72c4[_0x3c44('0x16')](0x194);}return _0x250aa4;};}function handleError(_0x53c24a,_0x4f5704){_0x4f5704=_0x4f5704||0x1f4;return function(_0x49bcc4){logger[_0x3c44('0x27')](_0x49bcc4[_0x3c44('0x28')]);if(_0x49bcc4[_0x3c44('0x29')]){delete _0x49bcc4[_0x3c44('0x29')];}_0x53c24a['status'](_0x4f5704)[_0x3c44('0x2a')](_0x49bcc4);};}exports['index']=function(_0x40bfa7,_0x36108e){var _0xf8be94={},_0x20e760={},_0x5edadb={'count':0x0,'rows':[]};var _0x3fe742=_[_0x3c44('0x2b')](db[_0x3c44('0x2c')][_0x3c44('0x2d')],function(_0x28f25a){return{'name':_0x28f25a[_0x3c44('0x2e')],'type':_0x28f25a[_0x3c44('0x2f')]['key']};});_0x20e760['model']=_[_0x3c44('0x2b')](_0x3fe742,_0x3c44('0x29'));_0x20e760[_0x3c44('0x30')]=_['keys'](_0x40bfa7[_0x3c44('0x30')]);_0x20e760['filters']=_[_0x3c44('0x31')](_0x20e760[_0x3c44('0x32')],_0x20e760['query']);_0xf8be94[_0x3c44('0x33')]=_[_0x3c44('0x31')](_0x20e760[_0x3c44('0x32')],qs['fields'](_0x40bfa7[_0x3c44('0x30')][_0x3c44('0x34')]));_0xf8be94[_0x3c44('0x33')]=_0xf8be94[_0x3c44('0x33')][_0x3c44('0x35')]?_0xf8be94[_0x3c44('0x33')]:_0x20e760['model'];if(!_0x40bfa7['query']['hasOwnProperty'](_0x3c44('0x36'))){_0xf8be94[_0x3c44('0x1c')]=qs[_0x3c44('0x1c')](_0x40bfa7[_0x3c44('0x30')][_0x3c44('0x1c')]);_0xf8be94[_0x3c44('0x1a')]=qs[_0x3c44('0x1a')](_0x40bfa7[_0x3c44('0x30')][_0x3c44('0x1a')]);}_0xf8be94[_0x3c44('0x37')]=qs[_0x3c44('0x38')](_0x40bfa7[_0x3c44('0x30')]['sort']);_0xf8be94[_0x3c44('0x39')]=qs[_0x3c44('0x3a')](_[_0x3c44('0x3b')](_0x40bfa7['query'],_0x20e760[_0x3c44('0x3a')]),_0x3fe742);if(_0x40bfa7[_0x3c44('0x30')][_0x3c44('0x3c')]){_0xf8be94['where']=_['merge'](_0xf8be94['where'],{'$or':_['map'](_0x3fe742,function(_0x2b6ca9){if(_0x2b6ca9[_0x3c44('0x2f')]!==_0x3c44('0x3d')){var _0x259b10={};_0x259b10[_0x2b6ca9[_0x3c44('0x29')]]={'$like':'%'+_0x40bfa7[_0x3c44('0x30')][_0x3c44('0x3c')]+'%'};return _0x259b10;}})});}_0xf8be94=_['merge']({},_0xf8be94,_0x40bfa7[_0x3c44('0x3e')]);var _0x1555eb={'where':_0xf8be94[_0x3c44('0x39')]};return db[_0x3c44('0x2c')][_0x3c44('0x1b')](_0x1555eb)[_0x3c44('0x22')](function(_0x4c2b96){_0x5edadb[_0x3c44('0x1b')]=_0x4c2b96;if(_0x40bfa7['query'][_0x3c44('0x3f')]){_0xf8be94['include']=[{'all':!![]}];}return db[_0x3c44('0x2c')][_0x3c44('0x40')](_0xf8be94);})[_0x3c44('0x22')](function(_0x46bb16){_0x5edadb[_0x3c44('0x41')]=_0x46bb16;return _0x5edadb;})[_0x3c44('0x22')](respondWithFilteredResult(_0x36108e,_0xf8be94))['catch'](handleError(_0x36108e,null));};exports[_0x3c44('0x42')]=function(_0x427a30,_0x41d514){var _0x5af5e7={'raw':![],'where':{'id':_0x427a30[_0x3c44('0x43')]['id']}},_0x24c4e8={};_0x24c4e8['model']=_[_0x3c44('0x44')](db[_0x3c44('0x2c')]['rawAttributes']);_0x24c4e8[_0x3c44('0x30')]=_['keys'](_0x427a30[_0x3c44('0x30')]);_0x24c4e8['filters']=_[_0x3c44('0x31')](_0x24c4e8[_0x3c44('0x32')],_0x24c4e8[_0x3c44('0x30')]);_0x5af5e7[_0x3c44('0x33')]=_[_0x3c44('0x31')](_0x24c4e8[_0x3c44('0x32')],qs[_0x3c44('0x34')](_0x427a30['query'][_0x3c44('0x34')]));_0x5af5e7['attributes']=_0x5af5e7[_0x3c44('0x33')]['length']?_0x5af5e7[_0x3c44('0x33')]:_0x24c4e8[_0x3c44('0x32')];if(_0x427a30['query'][_0x3c44('0x3f')]){_0x5af5e7['include']=[{'all':!![]}];}_0x5af5e7=_[_0x3c44('0x45')]({},_0x5af5e7,_0x427a30['options']);return db[_0x3c44('0x2c')][_0x3c44('0x46')](_0x5af5e7)[_0x3c44('0x22')](handleEntityNotFound(_0x41d514,null))['then'](respondWithResult(_0x41d514,null))[_0x3c44('0x47')](handleError(_0x41d514,null));};exports[_0x3c44('0x48')]=function(_0x1e69c1,_0x2e8724){return db[_0x3c44('0x2c')]['create'](_0x1e69c1[_0x3c44('0x49')],{})[_0x3c44('0x22')](function(_0x24bb6f){var _0xdd0251=_0x1e69c1[_0x3c44('0x4a')][_0x3c44('0x24')]({'plain':!![]});if(!_0xdd0251)throw new Error(_0x3c44('0x4b'));if(_0xdd0251[_0x3c44('0x4c')]==='user'){var _0x5c9ab1=_0x24bb6f[_0x3c44('0x24')]({'plain':!![]});var _0x48133e=_0x3c44('0x25');return db[_0x3c44('0x4d')][_0x3c44('0x46')]({'where':{'name':_0x48133e,'userProfileId':_0xdd0251[_0x3c44('0x4e')]},'raw':!![]})[_0x3c44('0x22')](function(_0x266799){if(_0x266799&&_0x266799[_0x3c44('0x4f')]===0x0){return db[_0x3c44('0x26')]['create']({'name':_0x5c9ab1[_0x3c44('0x29')],'resourceId':_0x5c9ab1['id'],'type':_0x266799[_0x3c44('0x29')],'sectionId':_0x266799['id']},{})[_0x3c44('0x22')](function(){return _0x24bb6f;});}else{return _0x24bb6f;}})[_0x3c44('0x47')](function(_0x1094a8){logger[_0x3c44('0x27')](_0x3c44('0x50'),_0x1094a8);throw _0x1094a8;});}return _0x24bb6f;})[_0x3c44('0x22')](respondWithResult(_0x2e8724,0xc9))[_0x3c44('0x47')](handleError(_0x2e8724,null));};exports[_0x3c44('0x21')]=function(_0xd638ea,_0x324a44){if(_0xd638ea[_0x3c44('0x49')]['id']){delete _0xd638ea[_0x3c44('0x49')]['id'];}return db['Trigger'][_0x3c44('0x46')]({'where':{'id':_0xd638ea[_0x3c44('0x43')]['id']}})[_0x3c44('0x22')](handleEntityNotFound(_0x324a44,null))[_0x3c44('0x22')](saveUpdates(_0xd638ea['body'],null))[_0x3c44('0x22')](respondWithResult(_0x324a44,null))[_0x3c44('0x47')](handleError(_0x324a44,null));};exports[_0x3c44('0x23')]=function(_0x2b53be,_0x38aa66){return db['Trigger'][_0x3c44('0x46')]({'where':{'id':_0x2b53be[_0x3c44('0x43')]['id']}})[_0x3c44('0x22')](handleEntityNotFound(_0x38aa66,null))[_0x3c44('0x22')](removeEntity(_0x38aa66,null))['catch'](handleError(_0x38aa66,null));};exports[_0x3c44('0x51')]=function(_0x55b4ac,_0x5d5b06,_0x3c80dc){if(_0x55b4ac[_0x3c44('0x49')]['id']){delete _0x55b4ac[_0x3c44('0x49')]['id'];}return db[_0x3c44('0x2c')][_0x3c44('0x46')]({'where':{'id':_0x55b4ac['params']['id']}})[_0x3c44('0x22')](handleEntityNotFound(_0x5d5b06,null))['then'](function(_0x1e303b){if(_0x1e303b){_0x55b4ac[_0x3c44('0x49')]['TriggerAllId']=_0x1e303b['id'];return db[_0x3c44('0x52')][_0x3c44('0x48')](_0x55b4ac['body']);}})[_0x3c44('0x22')](respondWithResult(_0x5d5b06,null))[_0x3c44('0x47')](handleError(_0x5d5b06,null));};exports[_0x3c44('0x53')]=function(_0x5b69b3,_0x518b57,_0xd7fc32){if(_0x5b69b3[_0x3c44('0x49')]['id']){delete _0x5b69b3[_0x3c44('0x49')]['id'];}return db[_0x3c44('0x2c')]['find']({'where':{'id':_0x5b69b3[_0x3c44('0x43')]['id']}})[_0x3c44('0x22')](handleEntityNotFound(_0x518b57,null))['then'](function(_0x436020){if(_0x436020){_0x5b69b3[_0x3c44('0x49')][_0x3c44('0x54')]=_0x436020['id'];return db[_0x3c44('0x52')][_0x3c44('0x48')](_0x5b69b3[_0x3c44('0x49')]);}})[_0x3c44('0x22')](respondWithResult(_0x518b57,null))[_0x3c44('0x47')](handleError(_0x518b57,null));};exports[_0x3c44('0x55')]=function(_0x197703,_0xd3ee8f,_0xaa7f87){var _0x3cf602={};var _0x3e1b6c={};var _0x3dea5d;var _0x3923cf;return db[_0x3c44('0x2c')][_0x3c44('0x56')]({'where':{'id':_0x197703[_0x3c44('0x43')]['id']}})['then'](handleEntityNotFound(_0xd3ee8f,null))[_0x3c44('0x22')](function(_0xaa8777){if(_0xaa8777){_0x3dea5d=_0xaa8777;_0x3e1b6c[_0x3c44('0x32')]=_[_0x3c44('0x44')](db['Condition'][_0x3c44('0x2d')]);_0x3e1b6c['query']=_['keys'](_0x197703['query']);_0x3e1b6c[_0x3c44('0x3a')]=_[_0x3c44('0x31')](_0x3e1b6c[_0x3c44('0x32')],_0x3e1b6c[_0x3c44('0x30')]);_0x3cf602[_0x3c44('0x33')]=_[_0x3c44('0x31')](_0x3e1b6c['model'],qs[_0x3c44('0x34')](_0x197703[_0x3c44('0x30')]['fields']));_0x3cf602[_0x3c44('0x33')]=_0x3cf602[_0x3c44('0x33')][_0x3c44('0x35')]?_0x3cf602[_0x3c44('0x33')]:_0x3e1b6c[_0x3c44('0x32')];_0x3cf602[_0x3c44('0x37')]=qs[_0x3c44('0x38')](_0x197703[_0x3c44('0x30')][_0x3c44('0x38')]);_0x3cf602[_0x3c44('0x39')]=qs[_0x3c44('0x3a')](_[_0x3c44('0x3b')](_0x197703[_0x3c44('0x30')],_0x3e1b6c[_0x3c44('0x3a')]));if(_0x197703[_0x3c44('0x30')][_0x3c44('0x3c')]){_0x3cf602['where']=_['merge'](_0x3cf602[_0x3c44('0x39')],{'$or':_[_0x3c44('0x2b')](_0x3cf602[_0x3c44('0x33')],function(_0x3d56e6){var _0x9565e9={};_0x9565e9[_0x3d56e6]={'$like':'%'+_0x197703[_0x3c44('0x30')][_0x3c44('0x3c')]+'%'};return _0x9565e9;})});}_0x3cf602=_['merge']({},_0x3cf602,_0x197703[_0x3c44('0x3e')]);return _0x3dea5d[_0x3c44('0x55')](_0x3cf602);}})[_0x3c44('0x22')](function(_0x4f5332){if(_0x4f5332){_0x3923cf=_0x4f5332[_0x3c44('0x35')];if(!_0x197703[_0x3c44('0x30')][_0x3c44('0x57')](_0x3c44('0x36'))){_0x3cf602[_0x3c44('0x1c')]=qs['limit'](_0x197703['query'][_0x3c44('0x1c')]);_0x3cf602[_0x3c44('0x1a')]=qs[_0x3c44('0x1a')](_0x197703['query']['offset']);}return _0x3dea5d[_0x3c44('0x55')](_0x3cf602);}})[_0x3c44('0x22')](function(_0x1be870){if(_0x1be870){return _0x1be870?{'count':_0x3923cf,'rows':_0x1be870}:null;}})[_0x3c44('0x22')](respondWithResult(_0xd3ee8f,null))[_0x3c44('0x47')](handleError(_0xd3ee8f,null));};exports['getAnyConditions']=function(_0x1b0a56,_0x4b3d29,_0xc244c6){var _0x55ef17={};var _0x2b03c4={};var _0x22b56f;var _0x1023f8;return db[_0x3c44('0x2c')][_0x3c44('0x56')]({'where':{'id':_0x1b0a56[_0x3c44('0x43')]['id']}})[_0x3c44('0x22')](handleEntityNotFound(_0x4b3d29,null))[_0x3c44('0x22')](function(_0x378088){if(_0x378088){_0x22b56f=_0x378088;_0x2b03c4[_0x3c44('0x32')]=_[_0x3c44('0x44')](db[_0x3c44('0x52')][_0x3c44('0x2d')]);_0x2b03c4[_0x3c44('0x30')]=_[_0x3c44('0x44')](_0x1b0a56[_0x3c44('0x30')]);_0x2b03c4[_0x3c44('0x3a')]=_[_0x3c44('0x31')](_0x2b03c4[_0x3c44('0x32')],_0x2b03c4[_0x3c44('0x30')]);_0x55ef17[_0x3c44('0x33')]=_[_0x3c44('0x31')](_0x2b03c4[_0x3c44('0x32')],qs[_0x3c44('0x34')](_0x1b0a56['query'][_0x3c44('0x34')]));_0x55ef17[_0x3c44('0x33')]=_0x55ef17[_0x3c44('0x33')][_0x3c44('0x35')]?_0x55ef17['attributes']:_0x2b03c4[_0x3c44('0x32')];_0x55ef17[_0x3c44('0x37')]=qs[_0x3c44('0x38')](_0x1b0a56[_0x3c44('0x30')][_0x3c44('0x38')]);_0x55ef17[_0x3c44('0x39')]=qs[_0x3c44('0x3a')](_[_0x3c44('0x3b')](_0x1b0a56['query'],_0x2b03c4[_0x3c44('0x3a')]));if(_0x1b0a56[_0x3c44('0x30')][_0x3c44('0x3c')]){_0x55ef17['where']=_[_0x3c44('0x45')](_0x55ef17[_0x3c44('0x39')],{'$or':_['map'](_0x55ef17[_0x3c44('0x33')],function(_0x29d3ec){var _0x3236a6={};_0x3236a6[_0x29d3ec]={'$like':'%'+_0x1b0a56[_0x3c44('0x30')]['filter']+'%'};return _0x3236a6;})});}_0x55ef17=_['merge']({},_0x55ef17,_0x1b0a56[_0x3c44('0x3e')]);return _0x22b56f[_0x3c44('0x58')](_0x55ef17);}})[_0x3c44('0x22')](function(_0x2bde29){if(_0x2bde29){_0x1023f8=_0x2bde29[_0x3c44('0x35')];if(!_0x1b0a56[_0x3c44('0x30')][_0x3c44('0x57')](_0x3c44('0x36'))){_0x55ef17['limit']=qs[_0x3c44('0x1c')](_0x1b0a56[_0x3c44('0x30')][_0x3c44('0x1c')]);_0x55ef17['offset']=qs[_0x3c44('0x1a')](_0x1b0a56[_0x3c44('0x30')]['offset']);}return _0x22b56f['getAnyConditions'](_0x55ef17);}})[_0x3c44('0x22')](function(_0x1e26da){if(_0x1e26da){return _0x1e26da?{'count':_0x1023f8,'rows':_0x1e26da}:null;}})['then'](respondWithResult(_0x4b3d29,null))[_0x3c44('0x47')](handleError(_0x4b3d29,null));};exports['addAction']=function(_0x4f2921,_0x46927a,_0x6d7dc7){if(_0x4f2921['body']['id']){delete _0x4f2921[_0x3c44('0x49')]['id'];}return db[_0x3c44('0x2c')][_0x3c44('0x46')]({'where':{'id':_0x4f2921[_0x3c44('0x43')]['id']}})[_0x3c44('0x22')](handleEntityNotFound(_0x46927a,null))[_0x3c44('0x22')](function(_0x4f80e0){if(_0x4f80e0){_0x4f2921[_0x3c44('0x49')][_0x3c44('0x59')]=_0x4f80e0['id'];return db[_0x3c44('0x5a')][_0x3c44('0x48')](_0x4f2921[_0x3c44('0x49')]);}})[_0x3c44('0x22')](respondWithResult(_0x46927a,null))[_0x3c44('0x47')](handleError(_0x46927a,null));};exports[_0x3c44('0x5b')]=function(_0xd58a64,_0x5a576a,_0xe49ede){var _0x457587={};var _0x53b91d={};var _0x6c3771;var _0x35cbc5;return db['Trigger']['findOne']({'where':{'id':_0xd58a64['params']['id']}})[_0x3c44('0x22')](handleEntityNotFound(_0x5a576a,null))[_0x3c44('0x22')](function(_0x3aa9d8){if(_0x3aa9d8){_0x6c3771=_0x3aa9d8;_0x53b91d[_0x3c44('0x32')]=_['keys'](db[_0x3c44('0x5a')][_0x3c44('0x2d')]);_0x53b91d[_0x3c44('0x30')]=_[_0x3c44('0x44')](_0xd58a64[_0x3c44('0x30')]);_0x53b91d['filters']=_[_0x3c44('0x31')](_0x53b91d[_0x3c44('0x32')],_0x53b91d['query']);_0x457587['attributes']=_[_0x3c44('0x31')](_0x53b91d[_0x3c44('0x32')],qs[_0x3c44('0x34')](_0xd58a64['query']['fields']));_0x457587['attributes']=_0x457587[_0x3c44('0x33')]['length']?_0x457587[_0x3c44('0x33')]:_0x53b91d[_0x3c44('0x32')];_0x457587[_0x3c44('0x37')]=qs[_0x3c44('0x38')](_0xd58a64['query'][_0x3c44('0x38')]);_0x457587[_0x3c44('0x39')]=qs[_0x3c44('0x3a')](_[_0x3c44('0x3b')](_0xd58a64[_0x3c44('0x30')],_0x53b91d[_0x3c44('0x3a')]));if(_0xd58a64[_0x3c44('0x30')][_0x3c44('0x3c')]){_0x457587[_0x3c44('0x39')]=_[_0x3c44('0x45')](_0x457587[_0x3c44('0x39')],{'$or':_[_0x3c44('0x2b')](_0x457587[_0x3c44('0x33')],function(_0x105481){var _0x368bb8={};_0x368bb8[_0x105481]={'$like':'%'+_0xd58a64['query'][_0x3c44('0x3c')]+'%'};return _0x368bb8;})});}_0x457587=_[_0x3c44('0x45')]({},_0x457587,_0xd58a64[_0x3c44('0x3e')]);return _0x6c3771[_0x3c44('0x5b')](_0x457587);}})[_0x3c44('0x22')](function(_0x51d81c){if(_0x51d81c){_0x35cbc5=_0x51d81c[_0x3c44('0x35')];if(!_0xd58a64[_0x3c44('0x30')]['hasOwnProperty'](_0x3c44('0x36'))){_0x457587[_0x3c44('0x1c')]=qs['limit'](_0xd58a64[_0x3c44('0x30')][_0x3c44('0x1c')]);_0x457587['offset']=qs[_0x3c44('0x1a')](_0xd58a64[_0x3c44('0x30')][_0x3c44('0x1a')]);}return _0x6c3771[_0x3c44('0x5b')](_0x457587);}})[_0x3c44('0x22')](function(_0xd23268){if(_0xd23268){return _0xd23268?{'count':_0x35cbc5,'rows':_0xd23268}:null;}})[_0x3c44('0x22')](respondWithResult(_0x5a576a,null))[_0x3c44('0x47')](handleError(_0x5a576a,null));};
\ No newline at end of file
+var _0xa6e5=['order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','params','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','TriggerAllId','Condition','addAnyCondition','getAllConditions','findOne','getAnyConditions','hasOwnProperty','TriggerId','getActions','Action','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','querystring','papaparse','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','get','Triggers','UserProfileResource','destroy','then','error','stack','name','Trigger','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit'];(function(_0x4eb662,_0x540e40){var _0x2d7889=function(_0xbe80a7){while(--_0xbe80a7){_0x4eb662['push'](_0x4eb662['shift']());}};_0x2d7889(++_0x540e40);}(_0xa6e5,0x179));var _0x5a6e=function(_0x319cd4,_0x143bae){_0x319cd4=_0x319cd4-0x0;var _0x187a78=_0xa6e5[_0x319cd4];return _0x187a78;};'use strict';var emlformat=require(_0x5a6e('0x0'));var rimraf=require(_0x5a6e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5a6e('0x2'));var rp=require(_0x5a6e('0x3'));var moment=require(_0x5a6e('0x4'));var BPromise=require(_0x5a6e('0x5'));var Mustache=require('mustache');var util=require(_0x5a6e('0x6'));var path=require(_0x5a6e('0x7'));var sox=require('sox');var csv=require(_0x5a6e('0x8'));var ejs=require(_0x5a6e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5a6e('0xa'));var squel=require('squel');var crypto=require(_0x5a6e('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5a6e('0x8'));var querystring=require(_0x5a6e('0xc'));var Papa=require(_0x5a6e('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5a6e('0xe'));var logger=require('../../config/logger')('api');var utils=require(_0x5a6e('0xf'));var config=require(_0x5a6e('0x10'));var licenseUtil=require('../../config/license/util');var db=require(_0x5a6e('0x11'))['db'];function respondWithStatusCode(_0x4816f2,_0x11ee48){_0x11ee48=_0x11ee48||0xcc;return function(_0x81a600){if(_0x81a600){return _0x4816f2[_0x5a6e('0x12')](_0x11ee48);}return _0x4816f2[_0x5a6e('0x13')](_0x11ee48)[_0x5a6e('0x14')]();};}function respondWithResult(_0x599e09,_0x355556){_0x355556=_0x355556||0xc8;return function(_0x2c9ed3){if(_0x2c9ed3){return _0x599e09[_0x5a6e('0x13')](_0x355556)[_0x5a6e('0x15')](_0x2c9ed3);}};}function respondWithFilteredResult(_0x448033,_0x491f47){return function(_0x3cf810){if(_0x3cf810){var _0x2d482f=typeof _0x491f47[_0x5a6e('0x16')]===_0x5a6e('0x17')&&typeof _0x491f47[_0x5a6e('0x18')]==='undefined';var _0x3700bd=_0x3cf810[_0x5a6e('0x19')];var _0x49d0c8=_0x2d482f?0x0:_0x491f47[_0x5a6e('0x16')];var _0x35460b=_0x2d482f?_0x3cf810[_0x5a6e('0x19')]:_0x491f47['offset']+_0x491f47[_0x5a6e('0x18')];var _0x478264;if(_0x35460b>=_0x3700bd){_0x35460b=_0x3700bd;_0x478264=0xc8;}else{_0x478264=0xce;}_0x448033[_0x5a6e('0x13')](_0x478264);return _0x448033[_0x5a6e('0x1a')](_0x5a6e('0x1b'),_0x49d0c8+'-'+_0x35460b+'/'+_0x3700bd)['json'](_0x3cf810);}return null;};}function patchUpdates(_0x32fc6e){return function(_0x49bbc3){try{jsonpatch[_0x5a6e('0x1c')](_0x49bbc3,_0x32fc6e,!![]);}catch(_0x31101e){return BPromise[_0x5a6e('0x1d')](_0x31101e);}return _0x49bbc3[_0x5a6e('0x1e')]();};}function saveUpdates(_0x25af7d,_0x5c2a40){return function(_0xd00e6b){if(_0xd00e6b){return _0xd00e6b['update'](_0x25af7d)['then'](function(_0x338471){return _0x338471;});}return null;};}function removeEntity(_0x2451d7,_0x58f57d){return function(_0x1c913b){if(_0x1c913b){return _0x1c913b['destroy']()['then'](function(){var _0x51ccd5=_0x1c913b[_0x5a6e('0x1f')]({'plain':!![]});var _0x18f983=_0x5a6e('0x20');return db[_0x5a6e('0x21')][_0x5a6e('0x22')]({'where':{'type':_0x18f983,'resourceId':_0x51ccd5['id']}})[_0x5a6e('0x23')](function(){return _0x1c913b;});})['then'](function(){_0x2451d7[_0x5a6e('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8e4fb3,_0x503b64){return function(_0xe1bb5f){if(!_0xe1bb5f){_0x8e4fb3['sendStatus'](0x194);}return _0xe1bb5f;};}function handleError(_0x2c3619,_0x2558d7){_0x2558d7=_0x2558d7||0x1f4;return function(_0x237fd6){logger[_0x5a6e('0x24')](_0x237fd6[_0x5a6e('0x25')]);if(_0x237fd6[_0x5a6e('0x26')]){delete _0x237fd6[_0x5a6e('0x26')];}_0x2c3619[_0x5a6e('0x13')](_0x2558d7)['send'](_0x237fd6);};}exports['index']=function(_0x19583f,_0x90c044){var _0x2e9e8a={},_0x204d5f={},_0x2d4cb4={'count':0x0,'rows':[]};var _0x5431e8=_['map'](db[_0x5a6e('0x27')][_0x5a6e('0x28')],function(_0x58c687){return{'name':_0x58c687['fieldName'],'type':_0x58c687[_0x5a6e('0x29')][_0x5a6e('0x2a')]};});_0x204d5f[_0x5a6e('0x2b')]=_[_0x5a6e('0x2c')](_0x5431e8,_0x5a6e('0x26'));_0x204d5f[_0x5a6e('0x2d')]=_[_0x5a6e('0x2e')](_0x19583f['query']);_0x204d5f[_0x5a6e('0x2f')]=_[_0x5a6e('0x30')](_0x204d5f[_0x5a6e('0x2b')],_0x204d5f['query']);_0x2e9e8a['attributes']=_['intersection'](_0x204d5f['model'],qs[_0x5a6e('0x31')](_0x19583f['query'][_0x5a6e('0x31')]));_0x2e9e8a[_0x5a6e('0x32')]=_0x2e9e8a['attributes'][_0x5a6e('0x33')]?_0x2e9e8a[_0x5a6e('0x32')]:_0x204d5f[_0x5a6e('0x2b')];if(!_0x19583f[_0x5a6e('0x2d')]['hasOwnProperty'](_0x5a6e('0x34'))){_0x2e9e8a[_0x5a6e('0x18')]=qs['limit'](_0x19583f[_0x5a6e('0x2d')][_0x5a6e('0x18')]);_0x2e9e8a[_0x5a6e('0x16')]=qs[_0x5a6e('0x16')](_0x19583f['query'][_0x5a6e('0x16')]);}_0x2e9e8a[_0x5a6e('0x35')]=qs[_0x5a6e('0x36')](_0x19583f[_0x5a6e('0x2d')][_0x5a6e('0x36')]);_0x2e9e8a[_0x5a6e('0x37')]=qs['filters'](_[_0x5a6e('0x38')](_0x19583f[_0x5a6e('0x2d')],_0x204d5f[_0x5a6e('0x2f')]),_0x5431e8);if(_0x19583f[_0x5a6e('0x2d')][_0x5a6e('0x39')]){_0x2e9e8a[_0x5a6e('0x37')]=_[_0x5a6e('0x3a')](_0x2e9e8a[_0x5a6e('0x37')],{'$or':_['map'](_0x5431e8,function(_0x43f98b){if(_0x43f98b[_0x5a6e('0x29')]!==_0x5a6e('0x3b')){var _0x16c434={};_0x16c434[_0x43f98b[_0x5a6e('0x26')]]={'$like':'%'+_0x19583f['query'][_0x5a6e('0x39')]+'%'};return _0x16c434;}})});}_0x2e9e8a=_[_0x5a6e('0x3a')]({},_0x2e9e8a,_0x19583f[_0x5a6e('0x3c')]);var _0x46b650={'where':_0x2e9e8a[_0x5a6e('0x37')]};return db['Trigger'][_0x5a6e('0x19')](_0x46b650)['then'](function(_0x1ff3c7){_0x2d4cb4[_0x5a6e('0x19')]=_0x1ff3c7;if(_0x19583f[_0x5a6e('0x2d')]['includeAll']){_0x2e9e8a[_0x5a6e('0x3d')]=[{'all':!![]}];}return db[_0x5a6e('0x27')][_0x5a6e('0x3e')](_0x2e9e8a);})[_0x5a6e('0x23')](function(_0x20a34b){_0x2d4cb4[_0x5a6e('0x3f')]=_0x20a34b;return _0x2d4cb4;})[_0x5a6e('0x23')](respondWithFilteredResult(_0x90c044,_0x2e9e8a))[_0x5a6e('0x40')](handleError(_0x90c044,null));};exports['show']=function(_0x593017,_0x28bf11){var _0x283180={'raw':![],'where':{'id':_0x593017[_0x5a6e('0x41')]['id']}},_0x369441={};_0x369441[_0x5a6e('0x2b')]=_['keys'](db[_0x5a6e('0x27')][_0x5a6e('0x28')]);_0x369441[_0x5a6e('0x2d')]=_[_0x5a6e('0x2e')](_0x593017[_0x5a6e('0x2d')]);_0x369441['filters']=_['intersection'](_0x369441[_0x5a6e('0x2b')],_0x369441[_0x5a6e('0x2d')]);_0x283180[_0x5a6e('0x32')]=_[_0x5a6e('0x30')](_0x369441[_0x5a6e('0x2b')],qs[_0x5a6e('0x31')](_0x593017[_0x5a6e('0x2d')][_0x5a6e('0x31')]));_0x283180[_0x5a6e('0x32')]=_0x283180[_0x5a6e('0x32')][_0x5a6e('0x33')]?_0x283180[_0x5a6e('0x32')]:_0x369441[_0x5a6e('0x2b')];if(_0x593017[_0x5a6e('0x2d')][_0x5a6e('0x42')]){_0x283180['include']=[{'all':!![]}];}_0x283180=_['merge']({},_0x283180,_0x593017[_0x5a6e('0x3c')]);return db[_0x5a6e('0x27')]['find'](_0x283180)[_0x5a6e('0x23')](handleEntityNotFound(_0x28bf11,null))['then'](respondWithResult(_0x28bf11,null))['catch'](handleError(_0x28bf11,null));};exports[_0x5a6e('0x43')]=function(_0x1a1fbb,_0x5f5472){return db[_0x5a6e('0x27')][_0x5a6e('0x43')](_0x1a1fbb['body'],{})[_0x5a6e('0x23')](function(_0x467a16){var _0x2539f9=_0x1a1fbb[_0x5a6e('0x44')]['get']({'plain':!![]});if(!_0x2539f9)throw new Error(_0x5a6e('0x45'));if(_0x2539f9['role']===_0x5a6e('0x44')){var _0x35661a=_0x467a16[_0x5a6e('0x1f')]({'plain':!![]});var _0x333a96=_0x5a6e('0x20');return db[_0x5a6e('0x46')][_0x5a6e('0x47')]({'where':{'name':_0x333a96,'userProfileId':_0x2539f9[_0x5a6e('0x48')]},'raw':!![]})[_0x5a6e('0x23')](function(_0x581ed7){if(_0x581ed7&&_0x581ed7['autoAssociation']===0x0){return db[_0x5a6e('0x21')][_0x5a6e('0x43')]({'name':_0x35661a[_0x5a6e('0x26')],'resourceId':_0x35661a['id'],'type':_0x581ed7[_0x5a6e('0x26')],'sectionId':_0x581ed7['id']},{})[_0x5a6e('0x23')](function(){return _0x467a16;});}else{return _0x467a16;}})[_0x5a6e('0x40')](function(_0x225bd9){logger[_0x5a6e('0x24')](_0x5a6e('0x49'),_0x225bd9);throw _0x225bd9;});}return _0x467a16;})[_0x5a6e('0x23')](respondWithResult(_0x5f5472,0xc9))[_0x5a6e('0x40')](handleError(_0x5f5472,null));};exports['update']=function(_0x2be5aa,_0x377a2b){if(_0x2be5aa[_0x5a6e('0x4a')]['id']){delete _0x2be5aa[_0x5a6e('0x4a')]['id'];}return db[_0x5a6e('0x27')]['find']({'where':{'id':_0x2be5aa[_0x5a6e('0x41')]['id']}})[_0x5a6e('0x23')](handleEntityNotFound(_0x377a2b,null))[_0x5a6e('0x23')](saveUpdates(_0x2be5aa['body'],null))[_0x5a6e('0x23')](respondWithResult(_0x377a2b,null))['catch'](handleError(_0x377a2b,null));};exports[_0x5a6e('0x22')]=function(_0x4281a2,_0x47ecbb){return db[_0x5a6e('0x27')]['find']({'where':{'id':_0x4281a2['params']['id']}})['then'](handleEntityNotFound(_0x47ecbb,null))[_0x5a6e('0x23')](removeEntity(_0x47ecbb,null))[_0x5a6e('0x40')](handleError(_0x47ecbb,null));};exports[_0x5a6e('0x4b')]=function(_0xa1d872,_0x40dec7,_0x138123){if(_0xa1d872[_0x5a6e('0x4a')]['id']){delete _0xa1d872['body']['id'];}return db['Trigger']['find']({'where':{'id':_0xa1d872[_0x5a6e('0x41')]['id']}})[_0x5a6e('0x23')](handleEntityNotFound(_0x40dec7,null))[_0x5a6e('0x23')](function(_0x1c050c){if(_0x1c050c){_0xa1d872[_0x5a6e('0x4a')][_0x5a6e('0x4c')]=_0x1c050c['id'];return db[_0x5a6e('0x4d')][_0x5a6e('0x43')](_0xa1d872['body']);}})['then'](respondWithResult(_0x40dec7,null))[_0x5a6e('0x40')](handleError(_0x40dec7,null));};exports[_0x5a6e('0x4e')]=function(_0x48a785,_0x1b478d,_0x1e3ed6){if(_0x48a785[_0x5a6e('0x4a')]['id']){delete _0x48a785[_0x5a6e('0x4a')]['id'];}return db['Trigger']['find']({'where':{'id':_0x48a785[_0x5a6e('0x41')]['id']}})[_0x5a6e('0x23')](handleEntityNotFound(_0x1b478d,null))[_0x5a6e('0x23')](function(_0x546c25){if(_0x546c25){_0x48a785['body']['TriggerAnyId']=_0x546c25['id'];return db['Condition'][_0x5a6e('0x43')](_0x48a785[_0x5a6e('0x4a')]);}})[_0x5a6e('0x23')](respondWithResult(_0x1b478d,null))[_0x5a6e('0x40')](handleError(_0x1b478d,null));};exports[_0x5a6e('0x4f')]=function(_0x4a55aa,_0x2bca30,_0x444ebb){var _0x394f98={};var _0x370adf={};var _0x36f71b;var _0xaf2b5f;return db[_0x5a6e('0x27')][_0x5a6e('0x50')]({'where':{'id':_0x4a55aa[_0x5a6e('0x41')]['id']}})[_0x5a6e('0x23')](handleEntityNotFound(_0x2bca30,null))[_0x5a6e('0x23')](function(_0x16a06c){if(_0x16a06c){_0x36f71b=_0x16a06c;_0x370adf[_0x5a6e('0x2b')]=_[_0x5a6e('0x2e')](db[_0x5a6e('0x4d')][_0x5a6e('0x28')]);_0x370adf[_0x5a6e('0x2d')]=_[_0x5a6e('0x2e')](_0x4a55aa['query']);_0x370adf[_0x5a6e('0x2f')]=_[_0x5a6e('0x30')](_0x370adf[_0x5a6e('0x2b')],_0x370adf[_0x5a6e('0x2d')]);_0x394f98[_0x5a6e('0x32')]=_[_0x5a6e('0x30')](_0x370adf[_0x5a6e('0x2b')],qs['fields'](_0x4a55aa[_0x5a6e('0x2d')][_0x5a6e('0x31')]));_0x394f98[_0x5a6e('0x32')]=_0x394f98[_0x5a6e('0x32')][_0x5a6e('0x33')]?_0x394f98['attributes']:_0x370adf[_0x5a6e('0x2b')];_0x394f98[_0x5a6e('0x35')]=qs[_0x5a6e('0x36')](_0x4a55aa[_0x5a6e('0x2d')][_0x5a6e('0x36')]);_0x394f98['where']=qs[_0x5a6e('0x2f')](_[_0x5a6e('0x38')](_0x4a55aa['query'],_0x370adf[_0x5a6e('0x2f')]));if(_0x4a55aa[_0x5a6e('0x2d')][_0x5a6e('0x39')]){_0x394f98[_0x5a6e('0x37')]=_[_0x5a6e('0x3a')](_0x394f98['where'],{'$or':_['map'](_0x394f98[_0x5a6e('0x32')],function(_0x52703e){var _0x386dc1={};_0x386dc1[_0x52703e]={'$like':'%'+_0x4a55aa[_0x5a6e('0x2d')]['filter']+'%'};return _0x386dc1;})});}_0x394f98=_[_0x5a6e('0x3a')]({},_0x394f98,_0x4a55aa[_0x5a6e('0x3c')]);return _0x36f71b['getAllConditions'](_0x394f98);}})[_0x5a6e('0x23')](function(_0x23f53d){if(_0x23f53d){_0xaf2b5f=_0x23f53d[_0x5a6e('0x33')];if(!_0x4a55aa[_0x5a6e('0x2d')]['hasOwnProperty']('nolimit')){_0x394f98['limit']=qs[_0x5a6e('0x18')](_0x4a55aa[_0x5a6e('0x2d')][_0x5a6e('0x18')]);_0x394f98[_0x5a6e('0x16')]=qs[_0x5a6e('0x16')](_0x4a55aa['query'][_0x5a6e('0x16')]);}return _0x36f71b['getAllConditions'](_0x394f98);}})[_0x5a6e('0x23')](function(_0x35ceac){if(_0x35ceac){return _0x35ceac?{'count':_0xaf2b5f,'rows':_0x35ceac}:null;}})[_0x5a6e('0x23')](respondWithResult(_0x2bca30,null))['catch'](handleError(_0x2bca30,null));};exports[_0x5a6e('0x51')]=function(_0xb5f613,_0xa81bcb,_0x532125){var _0x590a97={};var _0x416341={};var _0x305998;var _0x293374;return db[_0x5a6e('0x27')]['findOne']({'where':{'id':_0xb5f613['params']['id']}})[_0x5a6e('0x23')](handleEntityNotFound(_0xa81bcb,null))['then'](function(_0x5037ac){if(_0x5037ac){_0x305998=_0x5037ac;_0x416341[_0x5a6e('0x2b')]=_['keys'](db[_0x5a6e('0x4d')][_0x5a6e('0x28')]);_0x416341[_0x5a6e('0x2d')]=_[_0x5a6e('0x2e')](_0xb5f613[_0x5a6e('0x2d')]);_0x416341[_0x5a6e('0x2f')]=_[_0x5a6e('0x30')](_0x416341['model'],_0x416341[_0x5a6e('0x2d')]);_0x590a97[_0x5a6e('0x32')]=_[_0x5a6e('0x30')](_0x416341[_0x5a6e('0x2b')],qs[_0x5a6e('0x31')](_0xb5f613[_0x5a6e('0x2d')][_0x5a6e('0x31')]));_0x590a97[_0x5a6e('0x32')]=_0x590a97['attributes']['length']?_0x590a97[_0x5a6e('0x32')]:_0x416341[_0x5a6e('0x2b')];_0x590a97[_0x5a6e('0x35')]=qs[_0x5a6e('0x36')](_0xb5f613['query']['sort']);_0x590a97[_0x5a6e('0x37')]=qs[_0x5a6e('0x2f')](_[_0x5a6e('0x38')](_0xb5f613[_0x5a6e('0x2d')],_0x416341[_0x5a6e('0x2f')]));if(_0xb5f613['query'][_0x5a6e('0x39')]){_0x590a97[_0x5a6e('0x37')]=_[_0x5a6e('0x3a')](_0x590a97['where'],{'$or':_['map'](_0x590a97[_0x5a6e('0x32')],function(_0x206381){var _0x40dc44={};_0x40dc44[_0x206381]={'$like':'%'+_0xb5f613[_0x5a6e('0x2d')][_0x5a6e('0x39')]+'%'};return _0x40dc44;})});}_0x590a97=_[_0x5a6e('0x3a')]({},_0x590a97,_0xb5f613['options']);return _0x305998['getAnyConditions'](_0x590a97);}})[_0x5a6e('0x23')](function(_0x247879){if(_0x247879){_0x293374=_0x247879[_0x5a6e('0x33')];if(!_0xb5f613['query'][_0x5a6e('0x52')](_0x5a6e('0x34'))){_0x590a97[_0x5a6e('0x18')]=qs['limit'](_0xb5f613[_0x5a6e('0x2d')]['limit']);_0x590a97[_0x5a6e('0x16')]=qs[_0x5a6e('0x16')](_0xb5f613[_0x5a6e('0x2d')]['offset']);}return _0x305998['getAnyConditions'](_0x590a97);}})[_0x5a6e('0x23')](function(_0x48df6d){if(_0x48df6d){return _0x48df6d?{'count':_0x293374,'rows':_0x48df6d}:null;}})[_0x5a6e('0x23')](respondWithResult(_0xa81bcb,null))[_0x5a6e('0x40')](handleError(_0xa81bcb,null));};exports['addAction']=function(_0x446bef,_0x544a50,_0x4f853f){if(_0x446bef[_0x5a6e('0x4a')]['id']){delete _0x446bef['body']['id'];}return db[_0x5a6e('0x27')][_0x5a6e('0x47')]({'where':{'id':_0x446bef[_0x5a6e('0x41')]['id']}})[_0x5a6e('0x23')](handleEntityNotFound(_0x544a50,null))[_0x5a6e('0x23')](function(_0x34b15b){if(_0x34b15b){_0x446bef[_0x5a6e('0x4a')][_0x5a6e('0x53')]=_0x34b15b['id'];return db['Action'][_0x5a6e('0x43')](_0x446bef[_0x5a6e('0x4a')]);}})[_0x5a6e('0x23')](respondWithResult(_0x544a50,null))['catch'](handleError(_0x544a50,null));};exports[_0x5a6e('0x54')]=function(_0x44e38b,_0x33738e,_0x509f92){var _0x1c8628={};var _0x487048={};var _0xb06e8c;var _0x589dd4;return db[_0x5a6e('0x27')][_0x5a6e('0x50')]({'where':{'id':_0x44e38b[_0x5a6e('0x41')]['id']}})[_0x5a6e('0x23')](handleEntityNotFound(_0x33738e,null))[_0x5a6e('0x23')](function(_0x3b2fdb){if(_0x3b2fdb){_0xb06e8c=_0x3b2fdb;_0x487048['model']=_[_0x5a6e('0x2e')](db[_0x5a6e('0x55')][_0x5a6e('0x28')]);_0x487048['query']=_[_0x5a6e('0x2e')](_0x44e38b[_0x5a6e('0x2d')]);_0x487048[_0x5a6e('0x2f')]=_[_0x5a6e('0x30')](_0x487048[_0x5a6e('0x2b')],_0x487048['query']);_0x1c8628[_0x5a6e('0x32')]=_[_0x5a6e('0x30')](_0x487048[_0x5a6e('0x2b')],qs[_0x5a6e('0x31')](_0x44e38b[_0x5a6e('0x2d')][_0x5a6e('0x31')]));_0x1c8628[_0x5a6e('0x32')]=_0x1c8628['attributes'][_0x5a6e('0x33')]?_0x1c8628[_0x5a6e('0x32')]:_0x487048[_0x5a6e('0x2b')];_0x1c8628[_0x5a6e('0x35')]=qs[_0x5a6e('0x36')](_0x44e38b[_0x5a6e('0x2d')][_0x5a6e('0x36')]);_0x1c8628[_0x5a6e('0x37')]=qs[_0x5a6e('0x2f')](_[_0x5a6e('0x38')](_0x44e38b[_0x5a6e('0x2d')],_0x487048[_0x5a6e('0x2f')]));if(_0x44e38b[_0x5a6e('0x2d')][_0x5a6e('0x39')]){_0x1c8628[_0x5a6e('0x37')]=_['merge'](_0x1c8628[_0x5a6e('0x37')],{'$or':_[_0x5a6e('0x2c')](_0x1c8628[_0x5a6e('0x32')],function(_0x5d9470){var _0xe81c0={};_0xe81c0[_0x5d9470]={'$like':'%'+_0x44e38b[_0x5a6e('0x2d')][_0x5a6e('0x39')]+'%'};return _0xe81c0;})});}_0x1c8628=_[_0x5a6e('0x3a')]({},_0x1c8628,_0x44e38b[_0x5a6e('0x3c')]);return _0xb06e8c[_0x5a6e('0x54')](_0x1c8628);}})[_0x5a6e('0x23')](function(_0x4603ca){if(_0x4603ca){_0x589dd4=_0x4603ca['length'];if(!_0x44e38b[_0x5a6e('0x2d')][_0x5a6e('0x52')]('nolimit')){_0x1c8628[_0x5a6e('0x18')]=qs[_0x5a6e('0x18')](_0x44e38b['query']['limit']);_0x1c8628['offset']=qs[_0x5a6e('0x16')](_0x44e38b[_0x5a6e('0x2d')][_0x5a6e('0x16')]);}return _0xb06e8c[_0x5a6e('0x54')](_0x1c8628);}})[_0x5a6e('0x23')](function(_0x4b045a){if(_0x4b045a){return _0x4b045a?{'count':_0x589dd4,'rows':_0x4b045a}:null;}})[_0x5a6e('0x23')](respondWithResult(_0x33738e,null))[_0x5a6e('0x40')](handleError(_0x33738e,null));};
\ No newline at end of file
index f9d6948..123d415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3435=['api','moment','bluebird','path','rimraf','exports','Trigger','tools_triggers','lodash','util','../../config/logger'];(function(_0x3c5e54,_0x2b991b){var _0x3ae1f3=function(_0x43f80f){while(--_0x43f80f){_0x3c5e54['push'](_0x3c5e54['shift']());}};_0x3ae1f3(++_0x2b991b);}(_0x3435,0xfa));var _0x5343=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x3435[_0x32f7d7];return _0x133d09;};'use strict';var _=require(_0x5343('0x0'));var util=require(_0x5343('0x1'));var logger=require(_0x5343('0x2'))(_0x5343('0x3'));var moment=require(_0x5343('0x4'));var BPromise=require(_0x5343('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5343('0x6'));var rimraf=require(_0x5343('0x7'));var config=require('../../config/environment');var attributes=require('./trigger.attributes');module[_0x5343('0x8')]=function(_0x28f0f3,_0x4d26b5){return _0x28f0f3['define'](_0x5343('0x9'),attributes,{'tableName':_0x5343('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9009=['path','rimraf','./trigger.attributes','exports','define','Trigger','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x2d2d07,_0x5c4719){var _0x2e7461=function(_0x575eda){while(--_0x575eda){_0x2d2d07['push'](_0x2d2d07['shift']());}};_0x2e7461(++_0x5c4719);}(_0x9009,0x1d4));var _0x9900=function(_0x501bc6,_0x1d0fda){_0x501bc6=_0x501bc6-0x0;var _0x461664=_0x9009[_0x501bc6];return _0x461664;};'use strict';var _=require(_0x9900('0x0'));var util=require('util');var logger=require(_0x9900('0x1'))(_0x9900('0x2'));var moment=require('moment');var BPromise=require(_0x9900('0x3'));var rp=require(_0x9900('0x4'));var fs=require('fs');var path=require(_0x9900('0x5'));var rimraf=require(_0x9900('0x6'));var config=require('../../config/environment');var attributes=require(_0x9900('0x7'));module[_0x9900('0x8')]=function(_0x502dac,_0x59dd25){return _0x502dac[_0x9900('0x9')](_0x9900('0xa'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed99ce4..eddf326 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15c5=['catch','find','ShowTrigger','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','Trigger,\x20%s,\x20%s','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','GetTrigger','Trigger','findAll','options','raw','include','map','attributes','model','debug'];(function(_0x20ebb5,_0x237d88){var _0x487182=function(_0xaa5491){while(--_0xaa5491){_0x20ebb5['push'](_0x20ebb5['shift']());}};_0x487182(++_0x237d88);}(_0x15c5,0x69));var _0x515c=function(_0x343090,_0x433a80){_0x343090=_0x343090-0x0;var _0x3ff3e8=_0x15c5[_0x343090];return _0x3ff3e8;};'use strict';var _=require(_0x515c('0x0'));var util=require(_0x515c('0x1'));var moment=require(_0x515c('0x2'));var BPromise=require(_0x515c('0x3'));var rs=require(_0x515c('0x4'));var fs=require('fs');var Redis=require(_0x515c('0x5'));var db=require(_0x515c('0x6'))['db'];var utils=require(_0x515c('0x7'));var logger=require(_0x515c('0x8'))('rpc');var config=require(_0x515c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x515c('0xa')][_0x515c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x442b9e,_0x3e5ec0,_0xdb31ac){return new BPromise(function(_0x17da68,_0x174d34){return client[_0x515c('0xc')](_0x442b9e,_0xdb31ac)[_0x515c('0xd')](function(_0x25fcc2){logger[_0x515c('0xe')](_0x515c('0xf'),_0x3e5ec0,'request\x20sent');logger['debug'](_0x515c('0x10'),_0x3e5ec0,_0x515c('0x11'),JSON[_0x515c('0x12')](_0x25fcc2));if(_0x25fcc2[_0x515c('0x13')]){if(_0x25fcc2[_0x515c('0x13')]['code']===0x1f4){logger[_0x515c('0x13')](_0x515c('0xf'),_0x3e5ec0,_0x25fcc2['error']['message']);return _0x174d34(_0x25fcc2[_0x515c('0x13')][_0x515c('0x14')]);}logger[_0x515c('0x13')](_0x515c('0xf'),_0x3e5ec0,_0x25fcc2[_0x515c('0x13')][_0x515c('0x14')]);return _0x17da68(_0x25fcc2[_0x515c('0x13')][_0x515c('0x14')]);}else{logger[_0x515c('0xe')](_0x515c('0xf'),_0x3e5ec0,_0x515c('0x11'));_0x17da68(_0x25fcc2['result'][_0x515c('0x14')]);}})['catch'](function(_0x92dfaf){logger[_0x515c('0x13')](_0x515c('0xf'),_0x3e5ec0,_0x92dfaf);_0x174d34(_0x92dfaf);});});}exports[_0x515c('0x15')]=function(_0x20464f){var _0x273087=this;return new Promise(function(_0x9de7b8,_0x28380b){return db[_0x515c('0x16')][_0x515c('0x17')]({'raw':_0x20464f[_0x515c('0x18')]?_0x20464f[_0x515c('0x18')][_0x515c('0x19')]===undefined?!![]:![]:!![],'where':_0x20464f[_0x515c('0x18')]?_0x20464f[_0x515c('0x18')]['where']||null:null,'attributes':_0x20464f[_0x515c('0x18')]?_0x20464f['options']['attributes']||null:null,'limit':_0x20464f[_0x515c('0x18')]?_0x20464f[_0x515c('0x18')]['limit']||null:null,'include':_0x20464f[_0x515c('0x18')]?_0x20464f[_0x515c('0x18')][_0x515c('0x1a')]?_[_0x515c('0x1b')](_0x20464f['options'][_0x515c('0x1a')],function(_0x3b279d){return{'model':db[_0x3b279d['model']],'as':_0x3b279d['as'],'attributes':_0x3b279d['attributes'],'include':_0x3b279d[_0x515c('0x1a')]?_[_0x515c('0x1b')](_0x3b279d[_0x515c('0x1a')],function(_0x126a9a){return{'model':db[_0x126a9a['model']],'as':_0x126a9a['as'],'attributes':_0x126a9a[_0x515c('0x1c')],'include':_0x126a9a[_0x515c('0x1a')]?_[_0x515c('0x1b')](_0x126a9a[_0x515c('0x1a')],function(_0xa30685){return{'model':db[_0xa30685[_0x515c('0x1d')]],'as':_0xa30685['as'],'attributes':_0xa30685[_0x515c('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x424fce){logger[_0x515c('0xe')](_0x515c('0x15'),_0x20464f);logger[_0x515c('0x1e')](_0x515c('0x15'),_0x20464f,JSON['stringify'](_0x424fce));_0x9de7b8(_0x424fce);})[_0x515c('0x1f')](function(_0x376310){logger[_0x515c('0x13')](_0x515c('0x15'),_0x376310[_0x515c('0x14')],_0x20464f);_0x28380b(_0x273087[_0x515c('0x13')](0x1f4,_0x376310['message']));});});};exports['ShowTrigger']=function(_0x214b15){var _0x471879=this;return new Promise(function(_0x352e21,_0x26c17c){return db[_0x515c('0x16')][_0x515c('0x20')]({'raw':_0x214b15[_0x515c('0x18')]?_0x214b15['options'][_0x515c('0x19')]===undefined?!![]:![]:!![],'where':_0x214b15[_0x515c('0x18')]?_0x214b15[_0x515c('0x18')]['where']||null:null,'attributes':_0x214b15[_0x515c('0x18')]?_0x214b15['options'][_0x515c('0x1c')]||null:null,'include':_0x214b15[_0x515c('0x18')]?_0x214b15[_0x515c('0x18')][_0x515c('0x1a')]?_['map'](_0x214b15[_0x515c('0x18')]['include'],function(_0x164b32){return{'model':db[_0x164b32[_0x515c('0x1d')]],'as':_0x164b32['as'],'attributes':_0x164b32[_0x515c('0x1c')],'include':_0x164b32[_0x515c('0x1a')]?_[_0x515c('0x1b')](_0x164b32[_0x515c('0x1a')],function(_0x47af4c){return{'model':db[_0x47af4c[_0x515c('0x1d')]],'as':_0x47af4c['as'],'attributes':_0x47af4c[_0x515c('0x1c')],'include':_0x47af4c['include']?_[_0x515c('0x1b')](_0x47af4c[_0x515c('0x1a')],function(_0x430005){return{'model':db[_0x430005[_0x515c('0x1d')]],'as':_0x430005['as'],'attributes':_0x430005['attributes']};}):[]};}):[]};}):[]:[]})[_0x515c('0xd')](function(_0x1edcc3){logger[_0x515c('0xe')](_0x515c('0x21'),_0x214b15);logger[_0x515c('0x1e')](_0x515c('0x21'),_0x214b15,JSON[_0x515c('0x12')](_0x1edcc3));_0x352e21(_0x1edcc3);})[_0x515c('0x1f')](function(_0xd8688f){logger[_0x515c('0x13')](_0x515c('0x21'),_0xd8688f[_0x515c('0x14')],_0x214b15);_0x26c17c(_0x471879[_0x515c('0x13')](0x1f4,_0xd8688f[_0x515c('0x14')]));});});};
\ No newline at end of file
+var _0x6ea6=['stringify','error','code','message','result','catch','Trigger','findAll','options','where','limit','include','map','model','attributes','then','GetTrigger','ShowTrigger','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s'];(function(_0x1346d6,_0x2d7b4c){var _0x1f77c1=function(_0x35938b){while(--_0x35938b){_0x1346d6['push'](_0x1346d6['shift']());}};_0x1f77c1(++_0x2d7b4c);}(_0x6ea6,0x1ee));var _0x66ea=function(_0x32f26d,_0x2c0b5d){_0x32f26d=_0x32f26d-0x0;var _0x5d9ddc=_0x6ea6[_0x32f26d];return _0x5d9ddc;};'use strict';var _=require(_0x66ea('0x0'));var util=require(_0x66ea('0x1'));var moment=require('moment');var BPromise=require(_0x66ea('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x66ea('0x3'));var db=require(_0x66ea('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x66ea('0x5'))(_0x66ea('0x6'));var config=require('../../config/environment');var jayson=require(_0x66ea('0x7'));var client=jayson[_0x66ea('0x8')][_0x66ea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x385398,_0x116e1b,_0x53f274){return new BPromise(function(_0x59889c,_0x1cf102){return client[_0x66ea('0xa')](_0x385398,_0x53f274)['then'](function(_0x1d3b35){logger[_0x66ea('0xb')](_0x66ea('0xc'),_0x116e1b,_0x66ea('0xd'));logger[_0x66ea('0xe')](_0x66ea('0xf'),_0x116e1b,_0x66ea('0xd'),JSON[_0x66ea('0x10')](_0x1d3b35));if(_0x1d3b35[_0x66ea('0x11')]){if(_0x1d3b35['error'][_0x66ea('0x12')]===0x1f4){logger[_0x66ea('0x11')](_0x66ea('0xc'),_0x116e1b,_0x1d3b35['error'][_0x66ea('0x13')]);return _0x1cf102(_0x1d3b35[_0x66ea('0x11')][_0x66ea('0x13')]);}logger[_0x66ea('0x11')](_0x66ea('0xc'),_0x116e1b,_0x1d3b35[_0x66ea('0x11')][_0x66ea('0x13')]);return _0x59889c(_0x1d3b35['error'][_0x66ea('0x13')]);}else{logger['info'](_0x66ea('0xc'),_0x116e1b,_0x66ea('0xd'));_0x59889c(_0x1d3b35[_0x66ea('0x14')][_0x66ea('0x13')]);}})[_0x66ea('0x15')](function(_0x1d545f){logger[_0x66ea('0x11')](_0x66ea('0xc'),_0x116e1b,_0x1d545f);_0x1cf102(_0x1d545f);});});}exports['GetTrigger']=function(_0x4a36fb){var _0x393eab=this;return new Promise(function(_0x444be9,_0x5bdf7b){return db[_0x66ea('0x16')][_0x66ea('0x17')]({'raw':_0x4a36fb['options']?_0x4a36fb[_0x66ea('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4a36fb[_0x66ea('0x18')]?_0x4a36fb[_0x66ea('0x18')][_0x66ea('0x19')]||null:null,'attributes':_0x4a36fb[_0x66ea('0x18')]?_0x4a36fb[_0x66ea('0x18')]['attributes']||null:null,'limit':_0x4a36fb['options']?_0x4a36fb['options'][_0x66ea('0x1a')]||null:null,'include':_0x4a36fb[_0x66ea('0x18')]?_0x4a36fb['options'][_0x66ea('0x1b')]?_[_0x66ea('0x1c')](_0x4a36fb['options']['include'],function(_0x14e2aa){return{'model':db[_0x14e2aa[_0x66ea('0x1d')]],'as':_0x14e2aa['as'],'attributes':_0x14e2aa['attributes'],'include':_0x14e2aa[_0x66ea('0x1b')]?_[_0x66ea('0x1c')](_0x14e2aa['include'],function(_0x589b44){return{'model':db[_0x589b44[_0x66ea('0x1d')]],'as':_0x589b44['as'],'attributes':_0x589b44[_0x66ea('0x1e')],'include':_0x589b44[_0x66ea('0x1b')]?_[_0x66ea('0x1c')](_0x589b44['include'],function(_0x284a83){return{'model':db[_0x284a83[_0x66ea('0x1d')]],'as':_0x284a83['as'],'attributes':_0x284a83[_0x66ea('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x66ea('0x1f')](function(_0x535b40){logger['info']('GetTrigger',_0x4a36fb);logger[_0x66ea('0xe')](_0x66ea('0x20'),_0x4a36fb,JSON[_0x66ea('0x10')](_0x535b40));_0x444be9(_0x535b40);})['catch'](function(_0x83b744){logger[_0x66ea('0x11')]('GetTrigger',_0x83b744[_0x66ea('0x13')],_0x4a36fb);_0x5bdf7b(_0x393eab[_0x66ea('0x11')](0x1f4,_0x83b744[_0x66ea('0x13')]));});});};exports[_0x66ea('0x21')]=function(_0xe32f60){var _0x15e0fe=this;return new Promise(function(_0x5022e4,_0x436a4b){return db[_0x66ea('0x16')]['find']({'raw':_0xe32f60[_0x66ea('0x18')]?_0xe32f60[_0x66ea('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0xe32f60[_0x66ea('0x18')]?_0xe32f60[_0x66ea('0x18')]['where']||null:null,'attributes':_0xe32f60['options']?_0xe32f60[_0x66ea('0x18')][_0x66ea('0x1e')]||null:null,'include':_0xe32f60['options']?_0xe32f60[_0x66ea('0x18')][_0x66ea('0x1b')]?_[_0x66ea('0x1c')](_0xe32f60[_0x66ea('0x18')][_0x66ea('0x1b')],function(_0x3d991e){return{'model':db[_0x3d991e[_0x66ea('0x1d')]],'as':_0x3d991e['as'],'attributes':_0x3d991e[_0x66ea('0x1e')],'include':_0x3d991e[_0x66ea('0x1b')]?_[_0x66ea('0x1c')](_0x3d991e[_0x66ea('0x1b')],function(_0x331103){return{'model':db[_0x331103[_0x66ea('0x1d')]],'as':_0x331103['as'],'attributes':_0x331103[_0x66ea('0x1e')],'include':_0x331103[_0x66ea('0x1b')]?_[_0x66ea('0x1c')](_0x331103[_0x66ea('0x1b')],function(_0x1cbdaf){return{'model':db[_0x1cbdaf[_0x66ea('0x1d')]],'as':_0x1cbdaf['as'],'attributes':_0x1cbdaf['attributes']};}):[]};}):[]};}):[]:[]})[_0x66ea('0x1f')](function(_0x4c81f4){logger[_0x66ea('0xb')](_0x66ea('0x21'),_0xe32f60);logger['debug'](_0x66ea('0x21'),_0xe32f60,JSON[_0x66ea('0x10')](_0x4c81f4));_0x5022e4(_0x4c81f4);})[_0x66ea('0x15')](function(_0x104d08){logger['error']('ShowTrigger',_0x104d08[_0x66ea('0x13')],_0xe32f60);_0x436a4b(_0x15e0fe[_0x66ea('0x11')](0x1f4,_0x104d08['message']));});});};
\ No newline at end of file
index ce990e2..34a60cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a58=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','index','/:id','isAuthenticated','show','post','/:id/clone','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1090f4,_0xbb0d5f){var _0x141d87=function(_0x31d559){while(--_0x31d559){_0x1090f4['push'](_0x1090f4['shift']());}};_0x141d87(++_0xbb0d5f);}(_0x6a58,0xe0));var _0x86a5=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0x6a58[_0xea8947];return _0x2455e9;};'use strict';var multer=require(_0x86a5('0x0'));var util=require(_0x86a5('0x1'));var path=require(_0x86a5('0x2'));var timeout=require(_0x86a5('0x3'));var express=require(_0x86a5('0x4'));var router=express[_0x86a5('0x5')]();var fs_extra=require(_0x86a5('0x6'));var auth=require(_0x86a5('0x7'));var interaction=require(_0x86a5('0x8'));var config=require(_0x86a5('0x9'));var controller=require(_0x86a5('0xa'));router[_0x86a5('0xb')]('/',auth['isAuthenticated'](),controller[_0x86a5('0xc')]);router[_0x86a5('0xb')](_0x86a5('0xd'),auth[_0x86a5('0xe')](),controller[_0x86a5('0xf')]);router[_0x86a5('0x10')](_0x86a5('0x11'),auth[_0x86a5('0xe')](),controller['clone']);router[_0x86a5('0x10')]('/',auth[_0x86a5('0xe')](),controller[_0x86a5('0x12')]);router[_0x86a5('0x13')](_0x86a5('0xd'),auth[_0x86a5('0xe')](),controller[_0x86a5('0x14')]);router['delete'](_0x86a5('0xd'),auth[_0x86a5('0xe')](),controller[_0x86a5('0x15')]);module[_0x86a5('0x16')]=router;
\ No newline at end of file
+var _0xea52=['isAuthenticated','index','/:id','show','post','clone','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xea52,0xc9));var _0x2ea5=function(_0x5ab23b,_0x88f5aa){_0x5ab23b=_0x5ab23b-0x0;var _0x28e18f=_0xea52[_0x5ab23b];return _0x28e18f;};'use strict';var multer=require('multer');var util=require(_0x2ea5('0x0'));var path=require(_0x2ea5('0x1'));var timeout=require(_0x2ea5('0x2'));var express=require(_0x2ea5('0x3'));var router=express[_0x2ea5('0x4')]();var fs_extra=require(_0x2ea5('0x5'));var auth=require(_0x2ea5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2ea5('0x7'));var controller=require('./trunk.controller');router[_0x2ea5('0x8')]('/',auth[_0x2ea5('0x9')](),controller[_0x2ea5('0xa')]);router[_0x2ea5('0x8')](_0x2ea5('0xb'),auth['isAuthenticated'](),controller[_0x2ea5('0xc')]);router[_0x2ea5('0xd')]('/:id/clone',auth['isAuthenticated'](),controller[_0x2ea5('0xe')]);router[_0x2ea5('0xd')]('/',auth[_0x2ea5('0x9')](),controller[_0x2ea5('0xf')]);router[_0x2ea5('0x10')](_0x2ea5('0xb'),auth[_0x2ea5('0x9')](),controller[_0x2ea5('0x11')]);router[_0x2ea5('0x12')]('/:id',auth[_0x2ea5('0x9')](),controller[_0x2ea5('0x13')]);module[_0x2ea5('0x14')]=router;
\ No newline at end of file
index e497f60..673c4dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5190=['STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','join','getDataValue','rfc2833','info','shortinfo','inband','nonat','update','outgoing','yes','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','split','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','always','accept','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','BOOLEAN','sequelize','exports'];(function(_0x5e7873,_0x9f0a47){var _0x2fb75f=function(_0x38b18f){while(--_0x38b18f){_0x5e7873['push'](_0x5e7873['shift']());}};_0x2fb75f(++_0x9f0a47);}(_0x5190,0x1db));var _0x0519=function(_0x59710f,_0x44c7f0){_0x59710f=_0x59710f-0x0;var _0xaae66a=_0x5190[_0x59710f];return _0xaae66a;};'use strict';var Sequelize=require(_0x0519('0x0'));module[_0x0519('0x1')]={'name':{'type':Sequelize[_0x0519('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x4'),_0x0519('0x5'),_0x0519('0x6')),'allowNull':![],'defaultValue':_0x0519('0x4')},'context':{'type':Sequelize[_0x0519('0x2')],'allowNull':![],'defaultValue':_0x0519('0x7')},'callingpres':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x8'),'ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN',_0x0519('0x9'),_0x0519('0xa'),_0x0519('0xb'),_0x0519('0xc'),_0x0519('0xd'))},'deny':{'type':Sequelize[_0x0519('0x2')]},'permit':{'type':Sequelize[_0x0519('0x2')]},'secret':{'type':Sequelize[_0x0519('0x2')]},'md5secret':{'type':Sequelize[_0x0519('0x2')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x0519('0x2')],'defaultValue':_0x0519('0xe'),'set':function(_0x25cc67){this[_0x0519('0xf')](_0x0519('0x10'),_0x25cc67?_0x25cc67[_0x0519('0x11')](','):null);},'get':function(){return this['getDataValue'](_0x0519('0x10'))?this[_0x0519('0x12')](_0x0519('0x10'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x13'),_0x0519('0x14'),_0x0519('0x15'),_0x0519('0x16'),'auto'),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x0519('0x17'),_0x0519('0x18'),_0x0519('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x0519('0x1a'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x0519('0x2')]},'directmediadeny':{'type':Sequelize[_0x0519('0x2')]},'nat':{'type':Sequelize[_0x0519('0x2')],'defaultValue':_0x0519('0x1b'),'set':function(_0x59cb8c){this[_0x0519('0xf')](_0x0519('0x1c'),_0x59cb8c?_0x59cb8c[_0x0519('0x11')](','):null);},'get':function(){return this[_0x0519('0x12')]('nat')?this[_0x0519('0x12')](_0x0519('0x1c'))['split'](','):null;},'comment':_0x0519('0x1d')},'callgroup':{'type':Sequelize[_0x0519('0x2')]},'namedcallgroup':{'type':Sequelize[_0x0519('0x2')]},'pickupgroup':{'type':Sequelize[_0x0519('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x0519('0x2')]},'language':{'type':Sequelize[_0x0519('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x0519('0x1e')},'allow':{'type':Sequelize[_0x0519('0x2')],'allowNull':![],'defaultValue':_0x0519('0x1f'),'set':function(_0x3fa414){this[_0x0519('0xf')](_0x0519('0x20'),_0x3fa414?_0x3fa414['join'](';'):_0x0519('0x1f'));},'get':function(){return this[_0x0519('0x12')]('allow')?this['getDataValue']('allow')[_0x0519('0x21')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no')},'insecure':{'type':Sequelize[_0x0519('0x2')],'defaultValue':_0x0519('0x22'),'set':function(_0x1ab805){this['setDataValue'](_0x0519('0x23'),_0x1ab805?_0x1ab805[_0x0519('0x11')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0x0519('0x12')](_0x0519('0x23'))[_0x0519('0x21')](','):null;},'comment':_0x0519('0x24')},'trustrpid':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x0519('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no',_0x0519('0x25'))},'promiscredir':{'type':Sequelize['ENUM'](_0x0519('0x1a'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0x0519('0x1a'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x0519('0x2')]},'callerid':{'type':Sequelize[_0x0519('0x2')],'defaultValue':_0x0519('0x26')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x0519('0x27')](0xb)},'allowoverlap':{'type':Sequelize[_0x0519('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x0519('0x1a'),'no')},'allowtransfer':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no')},'ignoresdpversion':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no')},'subscribecontext':{'type':Sequelize[_0x0519('0x2')]},'template':{'type':Sequelize[_0x0519('0x2')]},'videosupport':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no',_0x0519('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x0519('0x27')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x0519('0x3')]('yes','no')},'mailbox':{'type':Sequelize[_0x0519('0x2')]},'session_timers':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x29'),'refuse',_0x0519('0x2a'))},'session_expires':{'type':Sequelize[_0x0519('0x27')](0xb)},'session_minse':{'type':Sequelize[_0x0519('0x27')](0xb)},'session_refresher':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x2b'),_0x0519('0x2c')),'defaultValue':_0x0519('0x2c')},'t38pt_usertpsource':{'type':Sequelize[_0x0519('0x2')]},'regexten':{'type':Sequelize[_0x0519('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x0519('0x2')]},'port':{'type':Sequelize[_0x0519('0x27')](0x5)},'qualify':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no'),'defaultValue':_0x0519('0x1a')},'keepalive':{'type':Sequelize[_0x0519('0x27')](0xb)},'defaultip':{'type':Sequelize[_0x0519('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x0519('0x27')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0x0519('0x3')]('yes','no',_0x0519('0x2d')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x0519('0x2')]},'timert1':{'type':Sequelize[_0x0519('0x27')](0xb)},'timerb':{'type':Sequelize[_0x0519('0x27')](0xb)},'qualifyfreq':{'type':Sequelize[_0x0519('0x27')](0xb)},'contactpermit':{'type':Sequelize[_0x0519('0x2')]},'contactdeny':{'type':Sequelize[_0x0519('0x2')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0x0519('0x2')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0x0519('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0x0519('0x1a'),'no')},'icesupport':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no')},'dtlsenable':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no')},'dtlsverify':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no',_0x0519('0x2e'),_0x0519('0x2f'))},'dtlsrekey':{'type':Sequelize[_0x0519('0x27')](0xb)},'dtlscertfile':{'type':Sequelize[_0x0519('0x2')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x0519('0x2')]},'dtlscafile':{'type':Sequelize[_0x0519('0x2')]},'dtlscapath':{'type':Sequelize[_0x0519('0x2')]},'dtlssetup':{'type':Sequelize['ENUM'](_0x0519('0x30'),_0x0519('0x31'),_0x0519('0x32')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x0519('0x2')]},'usereqphone':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x0519('0x2')]},'recordofffeature':{'type':Sequelize[_0x0519('0x2')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0x0519('0x1a'),'no')},'subscribemwi':{'type':Sequelize[_0x0519('0x3')](_0x0519('0x1a'),'no')},'vmexten':{'type':Sequelize[_0x0519('0x2')]},'mohinterpret':{'type':Sequelize[_0x0519('0x2')]},'mohsuggest':{'type':Sequelize[_0x0519('0x2')]},'parkinglot':{'type':Sequelize[_0x0519('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING'],'defaultValue':_0x0519('0x33')},'canreinvite':{'type':Sequelize['ENUM'](_0x0519('0x1a'),'no',_0x0519('0x17'),_0x0519('0x18'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x0519('0x2')]},'otherFields':{'type':Sequelize[_0x0519('0x2')]},'active':{'type':Sequelize[_0x0519('0x34')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xaa31=['outgoing','yes','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','accept','refuse','originate','uac','uas','pai','certificate','passive','actpass','dynamic','sequelize','exports','STRING','name','ENUM','friend','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','udp','setDataValue','join','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','nonat','update'];(function(_0x175e29,_0x149222){var _0x21f8ec=function(_0x2503a1){while(--_0x2503a1){_0x175e29['push'](_0x175e29['shift']());}};_0x21f8ec(++_0x149222);}(_0xaa31,0x1d7));var _0x1aa3=function(_0x4b73a2,_0x40b5fe){_0x4b73a2=_0x4b73a2-0x0;var _0x383c66=_0xaa31[_0x4b73a2];return _0x383c66;};'use strict';var Sequelize=require(_0x1aa3('0x0'));module[_0x1aa3('0x1')]={'name':{'type':Sequelize[_0x1aa3('0x2')],'allowNull':![],'unique':_0x1aa3('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x5'),'user',_0x1aa3('0x6')),'allowNull':![],'defaultValue':_0x1aa3('0x5')},'context':{'type':Sequelize[_0x1aa3('0x2')],'allowNull':![],'defaultValue':_0x1aa3('0x7')},'callingpres':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x8'),_0x1aa3('0x9'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x1aa3('0xa'),'PROHIB_PASSED_SCREEN',_0x1aa3('0xb'),'PROHIB')},'deny':{'type':Sequelize[_0x1aa3('0x2')]},'permit':{'type':Sequelize[_0x1aa3('0x2')]},'secret':{'type':Sequelize[_0x1aa3('0x2')]},'md5secret':{'type':Sequelize[_0x1aa3('0x2')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x1aa3('0x2')],'defaultValue':_0x1aa3('0xc'),'set':function(_0x105e57){this[_0x1aa3('0xd')]('transport',_0x105e57?_0x105e57[_0x1aa3('0xe')](','):null);},'get':function(){return this['getDataValue'](_0x1aa3('0xf'))?this[_0x1aa3('0x10')](_0x1aa3('0xf'))[_0x1aa3('0x11')](','):null;},'comment':_0x1aa3('0x12')},'dtmfmode':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x13'),_0x1aa3('0x14'),_0x1aa3('0x15'),'inband','auto'),'defaultValue':_0x1aa3('0x13')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x1aa3('0x16'),_0x1aa3('0x17'),_0x1aa3('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x1aa3('0x2')]},'nat':{'type':Sequelize[_0x1aa3('0x2')],'defaultValue':'force_rport,comedia','set':function(_0x579110){this[_0x1aa3('0xd')](_0x1aa3('0x1a'),_0x579110?_0x579110['join'](','):null);},'get':function(){return this[_0x1aa3('0x10')](_0x1aa3('0x1a'))?this[_0x1aa3('0x10')](_0x1aa3('0x1a'))[_0x1aa3('0x11')](','):null;},'comment':_0x1aa3('0x1b')},'callgroup':{'type':Sequelize[_0x1aa3('0x2')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x1aa3('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x1aa3('0x2')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1aa3('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x1aa3('0x2')],'defaultValue':_0x1aa3('0x1c')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0xb0e4e3){this[_0x1aa3('0xd')]('allow',_0xb0e4e3?_0xb0e4e3[_0x1aa3('0xe')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x1aa3('0x10')](_0x1aa3('0x1d'))?this[_0x1aa3('0x10')]('allow')[_0x1aa3('0x11')](';'):null;},'comment':_0x1aa3('0x1e')},'autoframing':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'insecure':{'type':Sequelize[_0x1aa3('0x2')],'defaultValue':'port,invite','set':function(_0x3bb8d0){this[_0x1aa3('0xd')](_0x1aa3('0x1f'),_0x3bb8d0?_0x3bb8d0[_0x1aa3('0xe')](','):null);},'get':function(){return this[_0x1aa3('0x10')](_0x1aa3('0x1f'))?this[_0x1aa3('0x10')](_0x1aa3('0x1f'))[_0x1aa3('0x11')](','):null;},'comment':_0x1aa3('0x20')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no',_0x1aa3('0x21'))},'promiscredir':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0x1aa3('0x19'),'no')},'accountcode':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'setvar':{'type':Sequelize[_0x1aa3('0x2')]},'callerid':{'type':Sequelize[_0x1aa3('0x2')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x1aa3('0x2')]},'callcounter':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no'),'defaultValue':_0x1aa3('0x19')},'busylevel':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'allowoverlap':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x1aa3('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no')},'subscribecontext':{'type':Sequelize[_0x1aa3('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM'](_0x1aa3('0x19'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'mailbox':{'type':Sequelize[_0x1aa3('0x2')]},'session_timers':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x23'),_0x1aa3('0x24'),_0x1aa3('0x25'))},'session_expires':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'session_minse':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0x1aa3('0x26'),_0x1aa3('0x27')),'defaultValue':_0x1aa3('0x27')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0x1aa3('0x2')]},'fromdomain':{'type':Sequelize[_0x1aa3('0x2')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x1aa3('0x22')](0x5)},'qualify':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no'),'defaultValue':_0x1aa3('0x19')},'keepalive':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0x1aa3('0x2')]},'rtptimeout':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x1aa3('0x19'),'no',_0x1aa3('0x28')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1aa3('0x2')]},'callbackextension':{'type':Sequelize[_0x1aa3('0x2')]},'timert1':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'timerb':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'qualifyfreq':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0x1aa3('0x2')]},'contactdeny':{'type':Sequelize[_0x1aa3('0x2')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0x1aa3('0x2')]},'use_q850_reason':{'type':Sequelize[_0x1aa3('0x2')]},'maxforwards':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'encryption':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'force_avp':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'icesupport':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x1aa3('0x19'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x1aa3('0x19'),'no','fingerprint',_0x1aa3('0x29'))},'dtlsrekey':{'type':Sequelize[_0x1aa3('0x22')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x1aa3('0x2')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0x1aa3('0x2')]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0x1aa3('0x2a'),_0x1aa3('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1aa3('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0x1aa3('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x1aa3('0x4')](_0x1aa3('0x19'),'no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0x1aa3('0x2')]},'mohinterpret':{'type':Sequelize[_0x1aa3('0x2')]},'mohsuggest':{'type':Sequelize[_0x1aa3('0x2')]},'parkinglot':{'type':Sequelize[_0x1aa3('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x1aa3('0x2')],'defaultValue':_0x1aa3('0x2c')},'canreinvite':{'type':Sequelize[_0x1aa3('0x4')]('yes','no',_0x1aa3('0x16'),_0x1aa3('0x17'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x1aa3('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x1aa3('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 3aed451..f2a36fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x526e5c,_0x5245a0){var _0x1d02f3=function(_0x544352){while(--_0x544352){_0x526e5c['push'](_0x526e5c['shift']());}};_0x1d02f3(++_0x5245a0);}(_0x98a8,0x12c));var _0x898a=function(_0x211073,_0x3d12f4){_0x211073=_0x211073-0x0;var _0x2d1d8e=_0x98a8[_0x211073];return _0x2d1d8e;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];var jayson=require(_0x898a('0x19'));var client=jayson[_0x898a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bfded,_0x5b5c9c,_0x373d53,_0x1f5be4){return new BPromise(function(_0xb24335,_0x116fbe){var _0x1873e9=_0x1f5be4||client;return _0x1873e9[_0x898a('0x1b')](_0x5bfded,_0x373d53)['then'](function(_0x47033c){logger['info'](_0x898a('0x1c'),_0x5b5c9c,'request\x20sent');logger[_0x898a('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x5b5c9c,_0x898a('0x1e'),JSON['stringify'](_0x47033c));if(_0x47033c[_0x898a('0x1f')]){if(_0x47033c[_0x898a('0x1f')][_0x898a('0x20')]===0x1f4){logger['error'](_0x898a('0x1c'),_0x5b5c9c,_0x47033c['error']['message']);return _0x116fbe(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5b5c9c,_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);return _0xb24335(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}else{logger[_0x898a('0x22')](_0x898a('0x1c'),_0x5b5c9c,_0x898a('0x1e'));_0xb24335(_0x47033c['result'][_0x898a('0x21')]);}})[_0x898a('0x23')](function(_0x11cae2){logger[_0x898a('0x1f')](_0x898a('0x1c'),_0x5b5c9c,_0x11cae2);_0x116fbe(_0x11cae2);});});}function respondWithStatusCode(_0x310bfa,_0x4e254d){_0x4e254d=_0x4e254d||0xcc;return function(_0x274cdf){if(_0x274cdf){return _0x310bfa[_0x898a('0x24')](_0x4e254d);}return _0x310bfa[_0x898a('0x25')](_0x4e254d)[_0x898a('0x26')]();};}function respondWithResult(_0x3901ab,_0x1426e3){_0x1426e3=_0x1426e3||0xc8;return function(_0x5b7719){if(_0x5b7719){return _0x3901ab[_0x898a('0x25')](_0x1426e3)['json'](_0x5b7719);}};}function respondWithFilteredResult(_0x513c6b,_0x53ddb2){return function(_0x3678be){if(_0x3678be){var _0x1f4d86=typeof _0x53ddb2[_0x898a('0x27')]===_0x898a('0x28')&&typeof _0x53ddb2[_0x898a('0x29')]===_0x898a('0x28');var _0x398e98=_0x3678be[_0x898a('0x2a')];var _0xd31922=_0x1f4d86?0x0:_0x53ddb2['offset'];var _0x4b3e68=_0x1f4d86?_0x3678be['count']:_0x53ddb2[_0x898a('0x27')]+_0x53ddb2[_0x898a('0x29')];var _0x3b7704;if(_0x4b3e68>=_0x398e98){_0x4b3e68=_0x398e98;_0x3b7704=0xc8;}else{_0x3b7704=0xce;}_0x513c6b[_0x898a('0x25')](_0x3b7704);return _0x513c6b[_0x898a('0x2b')](_0x898a('0x2c'),_0xd31922+'-'+_0x4b3e68+'/'+_0x398e98)[_0x898a('0x2d')](_0x3678be);}return null;};}function patchUpdates(_0xf74645){return function(_0x18773a){try{jsonpatch[_0x898a('0x2e')](_0x18773a,_0xf74645,!![]);}catch(_0x44c5d2){return BPromise[_0x898a('0x2f')](_0x44c5d2);}return _0x18773a['save']();};}function saveUpdates(_0x7a1eb5,_0x17a5f3){return function(_0x26eead){if(_0x26eead){return _0x26eead[_0x898a('0x30')](_0x7a1eb5)[_0x898a('0x31')](function(_0x47af5b){return _0x47af5b;});}return null;};}function removeEntity(_0x48cefb,_0x20a3fe){return function(_0x1e2fd4){if(_0x1e2fd4){return _0x1e2fd4[_0x898a('0x32')]()['then'](function(){var _0x105477=_0x1e2fd4[_0x898a('0x33')]({'plain':!![]});var _0x5eafc7=_0x898a('0x34');return db[_0x898a('0x35')][_0x898a('0x32')]({'where':{'type':_0x5eafc7,'resourceId':_0x105477['id']}})[_0x898a('0x31')](function(){return _0x1e2fd4;});})[_0x898a('0x31')](function(){_0x48cefb['status'](0xcc)[_0x898a('0x26')]();});}};}function handleEntityNotFound(_0x5baf5b,_0x573eb3){return function(_0x14e2dc){if(!_0x14e2dc){_0x5baf5b['sendStatus'](0x194);}return _0x14e2dc;};}function handleError(_0x3c9588,_0x4b3aac){_0x4b3aac=_0x4b3aac||0x1f4;return function(_0x37cb11){logger['error'](_0x37cb11[_0x898a('0x36')]);if(_0x37cb11[_0x898a('0x37')]){delete _0x37cb11[_0x898a('0x37')];}_0x3c9588['status'](_0x4b3aac)['send'](_0x37cb11);};}exports['index']=function(_0x1575d2,_0x429c32){var _0x5a228f={},_0xdd019d={},_0x3d3463={'count':0x0,'rows':[]};var _0xe84f7e=_[_0x898a('0x38')](db['Trunk']['rawAttributes'],function(_0x3aed01){return{'name':_0x3aed01[_0x898a('0x39')],'type':_0x3aed01['type']['key']};});_0xdd019d[_0x898a('0x3a')]=_[_0x898a('0x38')](_0xe84f7e,_0x898a('0x37'));_0xdd019d[_0x898a('0x3b')]=_['keys'](_0x1575d2[_0x898a('0x3b')]);_0xdd019d[_0x898a('0x3c')]=_['intersection'](_0xdd019d['model'],_0xdd019d['query']);_0x5a228f[_0x898a('0x3d')]=_[_0x898a('0x3e')](_0xdd019d[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x3f')]));_0x5a228f[_0x898a('0x3d')]=_0x5a228f[_0x898a('0x3d')][_0x898a('0x40')]?_0x5a228f[_0x898a('0x3d')]:_0xdd019d[_0x898a('0x3a')];if(!_0x1575d2[_0x898a('0x3b')][_0x898a('0x41')](_0x898a('0x42'))){_0x5a228f[_0x898a('0x29')]=qs['limit'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x29')]);_0x5a228f[_0x898a('0x27')]=qs['offset'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x27')]);}_0x5a228f[_0x898a('0x43')]=qs[_0x898a('0x44')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x44')]);_0x5a228f[_0x898a('0x45')]=qs[_0x898a('0x3c')](_['pick'](_0x1575d2[_0x898a('0x3b')],_0xdd019d[_0x898a('0x3c')]),_0xe84f7e);if(_0x1575d2[_0x898a('0x3b')][_0x898a('0x46')]){_0x5a228f['where']=_[_0x898a('0x47')](_0x5a228f[_0x898a('0x45')],{'$or':_['map'](_0xe84f7e,function(_0x241677){if(_0x241677['type']!==_0x898a('0x48')){var _0x5137c4={};_0x5137c4[_0x241677['name']]={'$like':'%'+_0x1575d2[_0x898a('0x3b')]['filter']+'%'};return _0x5137c4;}})});}_0x5a228f=_[_0x898a('0x47')]({},_0x5a228f,_0x1575d2[_0x898a('0x49')]);var _0x4d6ac0={'where':_0x5a228f[_0x898a('0x45')]};return db[_0x898a('0x4a')]['count'](_0x4d6ac0)[_0x898a('0x31')](function(_0x199437){_0x3d3463[_0x898a('0x2a')]=_0x199437;if(_0x1575d2[_0x898a('0x3b')]['includeAll']){_0x5a228f[_0x898a('0x4b')]=[{'all':!![]}];}return db[_0x898a('0x4a')]['findAll'](_0x5a228f);})[_0x898a('0x31')](function(_0x1d8c16){_0x3d3463['rows']=_0x1d8c16;return _0x3d3463;})[_0x898a('0x31')](respondWithFilteredResult(_0x429c32,_0x5a228f))['catch'](handleError(_0x429c32,null));};exports[_0x898a('0x4c')]=function(_0x41f291,_0x32ccb9){var _0x50f9e3={'raw':![],'where':{'id':_0x41f291[_0x898a('0x4d')]['id']}},_0x2f6cb3={};_0x2f6cb3[_0x898a('0x3a')]=_[_0x898a('0x4e')](db['Trunk'][_0x898a('0x4f')]);_0x2f6cb3['query']=_[_0x898a('0x4e')](_0x41f291[_0x898a('0x3b')]);_0x2f6cb3[_0x898a('0x3c')]=_['intersection'](_0x2f6cb3[_0x898a('0x3a')],_0x2f6cb3[_0x898a('0x3b')]);_0x50f9e3[_0x898a('0x3d')]=_['intersection'](_0x2f6cb3['model'],qs[_0x898a('0x3f')](_0x41f291[_0x898a('0x3b')][_0x898a('0x3f')]));_0x50f9e3[_0x898a('0x3d')]=_0x50f9e3[_0x898a('0x3d')][_0x898a('0x40')]?_0x50f9e3[_0x898a('0x3d')]:_0x2f6cb3[_0x898a('0x3a')];if(_0x41f291[_0x898a('0x3b')][_0x898a('0x50')]){_0x50f9e3[_0x898a('0x4b')]=[{'all':!![]}];}_0x50f9e3=_['merge']({},_0x50f9e3,_0x41f291[_0x898a('0x49')]);return db[_0x898a('0x4a')]['find'](_0x50f9e3)[_0x898a('0x31')](handleEntityNotFound(_0x32ccb9,null))['then'](respondWithResult(_0x32ccb9,null))['catch'](handleError(_0x32ccb9,null));};exports[_0x898a('0x51')]=function(_0x124f9b,_0x209529){var _0x5bfd61={'where':{'id':_0x124f9b[_0x898a('0x4d')]['id']}},_0x556fd8={};_0x556fd8[_0x898a('0x3a')]=_['keys'](db[_0x898a('0x4a')][_0x898a('0x4f')]);_0x5bfd61['attributes']=_[_0x898a('0x3e')](_0x556fd8[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x124f9b['query'][_0x898a('0x3f')]));_0x5bfd61[_0x898a('0x3d')]=_0x5bfd61[_0x898a('0x3d')][_0x898a('0x40')]?_0x5bfd61[_0x898a('0x3d')]:_0x556fd8[_0x898a('0x3a')];if(_0x124f9b['query'][_0x898a('0x50')]){_0x5bfd61['include']=[{'all':!![]}];}_0x5bfd61=_[_0x898a('0x47')]({},_0x5bfd61,_0x124f9b[_0x898a('0x49')]);return db[_0x898a('0x4a')][_0x898a('0x52')](_0x5bfd61)[_0x898a('0x31')](handleEntityNotFound(_0x209529,null))[_0x898a('0x31')](function(_0x2486a5){if(_0x2486a5){var _0x75ff57=_0x2486a5[_0x898a('0x33')]({'plain':!![]});_0x75ff57=qs['omit'](_0x75ff57,['id',_0x898a('0x53'),_0x898a('0x54')]);_0x124f9b[_0x898a('0x55')]=_[_0x898a('0x56')](_0x124f9b[_0x898a('0x55')],['id',_0x898a('0x53'),_0x898a('0x54')]);return db[_0x898a('0x4a')][_0x898a('0x57')](_[_0x898a('0x47')](_0x75ff57,_0x124f9b[_0x898a('0x55')]),{'include':_0x124f9b[_0x898a('0x3b')][_0x898a('0x50')]?[{'all':!![]}]:undefined})[_0x898a('0x31')](function(_0x22f9ba){var _0x5f42ae=_0x124f9b[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x5f42ae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f42ae[_0x898a('0x59')]===_0x898a('0x58')){var _0x5f0944=_0x22f9ba[_0x898a('0x33')]({'plain':!![]});var _0x1daecd=_0x898a('0x34');return db[_0x898a('0x5a')]['find']({'where':{'name':_0x1daecd,'userProfileId':_0x5f42ae[_0x898a('0x5b')]},'raw':!![]})[_0x898a('0x31')](function(_0x137935){if(_0x137935&&_0x137935[_0x898a('0x5c')]===0x0){return db['UserProfileResource'][_0x898a('0x57')]({'name':_0x5f0944[_0x898a('0x37')],'resourceId':_0x5f0944['id'],'type':_0x137935['name'],'sectionId':_0x137935['id']},{})[_0x898a('0x31')](function(){return _0x22f9ba;});}else{return _0x22f9ba;}})[_0x898a('0x23')](function(_0x5b7019){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b7019);throw _0x5b7019;});}return _0x22f9ba;});}})[_0x898a('0x31')](respondWithResult(_0x209529,0xc9))['catch'](handleError(_0x209529,null));};exports['create']=function(_0x5ed35e,_0xfdd6d8,_0x473f5c){var _0x3909c5;return db[_0x898a('0x4a')]['create'](_0x5ed35e['body'],{'raw':!![]})[_0x898a('0x31')](function(_0x232be0){_0x3909c5=_0x232be0;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x41cf94){var _0x30051d=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x42fda8=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),_0x898a('0x63'));var _0x3bcc3d=ejs[_0x898a('0x64')](_0x30051d,{'trunks':_0x41cf94||[]});fs[_0x898a('0x65')](_0x898a('0x66'),_0x3bcc3d);if(_0x3909c5[_0x898a('0x67')]){var _0x307849=ejs[_0x898a('0x64')](_0x42fda8,{'trunks':_0x41cf94||[]});fs['writeFileSync'](_0x898a('0x68'),_0x307849);}})['then'](function(){return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x57'),{'module':_0x898a('0x6a')});})['then'](function(){var _0x31102d=_0x5ed35e[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x31102d)throw new Error(_0x898a('0x6b'));if(_0x31102d[_0x898a('0x59')]==='user'){var _0x4b9487=_0x3909c5[_0x898a('0x33')]({'plain':!![]});return db[_0x898a('0x5a')][_0x898a('0x52')]({'where':{'name':_0x898a('0x34'),'userProfileId':_0x31102d['userProfileId']},'raw':!![]})[_0x898a('0x31')](function(_0x3d3451){if(_0x3d3451&&_0x3d3451[_0x898a('0x5c')]===0x0){return db[_0x898a('0x35')][_0x898a('0x57')]({'name':_0x4b9487[_0x898a('0x37')],'resourceId':_0x4b9487['id'],'type':_0x3d3451[_0x898a('0x37')],'sectionId':_0x3d3451['id']},{})[_0x898a('0x31')](function(){return _0x3909c5;});}else{return _0x3909c5;}})['catch'](function(_0x32a207){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a207);throw _0x32a207;});}return _0x3909c5;})[_0x898a('0x31')](respondWithResult(_0xfdd6d8,0xc9))['catch'](handleError(_0xfdd6d8,null));};exports[_0x898a('0x30')]=function(_0x4b2575,_0x2471d8,_0x387f2c){var _0x3b07dc;return db[_0x898a('0x4a')][_0x898a('0x52')]({'where':{'id':_0x4b2575[_0x898a('0x4d')]['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x2471d8,null))[_0x898a('0x31')](saveUpdates(_0x4b2575[_0x898a('0x55')],null))['then'](function(_0x3fe54b){if(_0x3fe54b){_0x3b07dc=_0x3fe54b;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});}})[_0x898a('0x31')](function(_0x290972){if(_0x290972){var _0x1d594b=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x4fad03=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x898a('0x63'));var _0x4a79a4=ejs[_0x898a('0x64')](_0x1d594b,{'trunks':_0x290972||[]});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a79a4);var _0x3f6815=ejs[_0x898a('0x64')](_0x4fad03,{'trunks':_0x290972||[]});fs[_0x898a('0x65')](_0x898a('0x68'),_0x3f6815);return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x30'),{'module':_0x898a('0x6a')});}return null;})['then'](function(_0x3237e8){if(_0x3237e8){return _0x3b07dc;}})[_0x898a('0x31')](respondWithResult(_0x2471d8,null))[_0x898a('0x23')](handleError(_0x2471d8,null));};exports['destroy']=function(_0x27560f,_0x61247c,_0x5c6247){var _0x39e917;return db['Trunk']['find']({'where':{'id':_0x27560f['params']['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x61247c,null))[_0x898a('0x31')](removeEntity(_0x61247c,null))[_0x898a('0x31')](function(){return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x12e54b){var _0x50dd52=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x24670c=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),'utf8');var _0x5847cb=ejs['render'](_0x50dd52,{'trunks':_0x12e54b});var _0x3b8fb5=ejs[_0x898a('0x64')](_0x24670c,{'trunks':_0x12e54b});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5847cb);fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x3b8fb5);return respondWithRpcPromise('Reload',_0x898a('0x32'),{'module':_0x898a('0x6a')});})[_0x898a('0x23')](handleError(_0x61247c,null));};
\ No newline at end of file
+var _0x9f62=['updatedAt','body','create','user','role','UserProfileSection','autoAssociation','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','writeFileSync','registry','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','render','/etc/asterisk/sip_xcally_trunks.conf','Reload','server/files/templates/registry.ejs','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','destroy','get','Trunks','UserProfileResource','stack','name','send','index','rawAttributes','fieldName','key','map','keys','filters','intersection','query','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','Trunk','findAll','rows','show','params','clone','find','omit','createdAt'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x9f62,0x154));var _0x29f6=function(_0x5c3b3d,_0x14f966){_0x5c3b3d=_0x5c3b3d-0x0;var _0x3da2fb=_0x9f62[_0x5c3b3d];return _0x3da2fb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x29f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x29f6('0x1'));var rp=require(_0x29f6('0x2'));var moment=require(_0x29f6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x29f6('0x4'));var path=require(_0x29f6('0x5'));var sox=require(_0x29f6('0x6'));var csv=require(_0x29f6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x29f6('0x8'));var _=require(_0x29f6('0x9'));var squel=require(_0x29f6('0xa'));var crypto=require(_0x29f6('0xb'));var jsforce=require(_0x29f6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x29f6('0xd'));var authService=require(_0x29f6('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x29f6('0xf'));var logger=require(_0x29f6('0x10'))('api');var utils=require(_0x29f6('0x11'));var config=require(_0x29f6('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x29f6('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x55cf4,_0x189344,_0x11a1fd,_0x17de6e){return new BPromise(function(_0x156c96,_0x35d2e2){var _0x2418ee=_0x17de6e||client;return _0x2418ee[_0x29f6('0x14')](_0x55cf4,_0x11a1fd)[_0x29f6('0x15')](function(_0x28d314){logger[_0x29f6('0x16')](_0x29f6('0x17'),_0x189344,_0x29f6('0x18'));logger[_0x29f6('0x19')](_0x29f6('0x1a'),_0x189344,_0x29f6('0x18'),JSON['stringify'](_0x28d314));if(_0x28d314['error']){if(_0x28d314[_0x29f6('0x1b')][_0x29f6('0x1c')]===0x1f4){logger[_0x29f6('0x1b')]('Trunk,\x20%s,\x20%s',_0x189344,_0x28d314[_0x29f6('0x1b')][_0x29f6('0x1d')]);return _0x35d2e2(_0x28d314['error'][_0x29f6('0x1d')]);}logger[_0x29f6('0x1b')](_0x29f6('0x17'),_0x189344,_0x28d314[_0x29f6('0x1b')][_0x29f6('0x1d')]);return _0x156c96(_0x28d314[_0x29f6('0x1b')]['message']);}else{logger[_0x29f6('0x16')]('Trunk,\x20%s,\x20%s',_0x189344,'request\x20sent');_0x156c96(_0x28d314[_0x29f6('0x1e')][_0x29f6('0x1d')]);}})[_0x29f6('0x1f')](function(_0xafb5dd){logger['error'](_0x29f6('0x17'),_0x189344,_0xafb5dd);_0x35d2e2(_0xafb5dd);});});}function respondWithStatusCode(_0x49f67d,_0xd4179c){_0xd4179c=_0xd4179c||0xcc;return function(_0xcce041){if(_0xcce041){return _0x49f67d[_0x29f6('0x20')](_0xd4179c);}return _0x49f67d[_0x29f6('0x21')](_0xd4179c)['end']();};}function respondWithResult(_0x4290a2,_0x4d494f){_0x4d494f=_0x4d494f||0xc8;return function(_0x47c385){if(_0x47c385){return _0x4290a2[_0x29f6('0x21')](_0x4d494f)[_0x29f6('0x22')](_0x47c385);}};}function respondWithFilteredResult(_0x2519ac,_0x342038){return function(_0x84ccb7){if(_0x84ccb7){var _0x4333bc=typeof _0x342038[_0x29f6('0x23')]==='undefined'&&typeof _0x342038[_0x29f6('0x24')]===_0x29f6('0x25');var _0x1ab8d8=_0x84ccb7[_0x29f6('0x26')];var _0xda0a63=_0x4333bc?0x0:_0x342038[_0x29f6('0x23')];var _0x3790f5=_0x4333bc?_0x84ccb7[_0x29f6('0x26')]:_0x342038[_0x29f6('0x23')]+_0x342038[_0x29f6('0x24')];var _0x2915bc;if(_0x3790f5>=_0x1ab8d8){_0x3790f5=_0x1ab8d8;_0x2915bc=0xc8;}else{_0x2915bc=0xce;}_0x2519ac[_0x29f6('0x21')](_0x2915bc);return _0x2519ac[_0x29f6('0x27')](_0x29f6('0x28'),_0xda0a63+'-'+_0x3790f5+'/'+_0x1ab8d8)[_0x29f6('0x22')](_0x84ccb7);}return null;};}function patchUpdates(_0x218931){return function(_0x3a7249){try{jsonpatch['apply'](_0x3a7249,_0x218931,!![]);}catch(_0x5582d3){return BPromise[_0x29f6('0x29')](_0x5582d3);}return _0x3a7249['save']();};}function saveUpdates(_0x341071,_0xc8d2c5){return function(_0x1e1bb6){if(_0x1e1bb6){return _0x1e1bb6[_0x29f6('0x2a')](_0x341071)['then'](function(_0x53e11f){return _0x53e11f;});}return null;};}function removeEntity(_0x1bde69,_0xa6377c){return function(_0x2edc2e){if(_0x2edc2e){return _0x2edc2e[_0x29f6('0x2b')]()[_0x29f6('0x15')](function(){var _0x20bc5e=_0x2edc2e[_0x29f6('0x2c')]({'plain':!![]});var _0x1c3f0f=_0x29f6('0x2d');return db[_0x29f6('0x2e')][_0x29f6('0x2b')]({'where':{'type':_0x1c3f0f,'resourceId':_0x20bc5e['id']}})[_0x29f6('0x15')](function(){return _0x2edc2e;});})[_0x29f6('0x15')](function(){_0x1bde69[_0x29f6('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e31dd,_0x206beb){return function(_0x44cf19){if(!_0x44cf19){_0x5e31dd[_0x29f6('0x20')](0x194);}return _0x44cf19;};}function handleError(_0x5416dc,_0x3e1e25){_0x3e1e25=_0x3e1e25||0x1f4;return function(_0x749b9d){logger[_0x29f6('0x1b')](_0x749b9d[_0x29f6('0x2f')]);if(_0x749b9d[_0x29f6('0x30')]){delete _0x749b9d['name'];}_0x5416dc[_0x29f6('0x21')](_0x3e1e25)[_0x29f6('0x31')](_0x749b9d);};}exports[_0x29f6('0x32')]=function(_0x1b51cc,_0x4f5fe1){var _0x30d747={},_0x2a09e8={},_0x14b392={'count':0x0,'rows':[]};var _0x105557=_['map'](db['Trunk'][_0x29f6('0x33')],function(_0x4bfc80){return{'name':_0x4bfc80[_0x29f6('0x34')],'type':_0x4bfc80['type'][_0x29f6('0x35')]};});_0x2a09e8['model']=_[_0x29f6('0x36')](_0x105557,_0x29f6('0x30'));_0x2a09e8['query']=_[_0x29f6('0x37')](_0x1b51cc['query']);_0x2a09e8[_0x29f6('0x38')]=_[_0x29f6('0x39')](_0x2a09e8['model'],_0x2a09e8[_0x29f6('0x3a')]);_0x30d747[_0x29f6('0x3b')]=_[_0x29f6('0x39')](_0x2a09e8[_0x29f6('0x3c')],qs['fields'](_0x1b51cc[_0x29f6('0x3a')][_0x29f6('0x3d')]));_0x30d747[_0x29f6('0x3b')]=_0x30d747[_0x29f6('0x3b')][_0x29f6('0x3e')]?_0x30d747['attributes']:_0x2a09e8[_0x29f6('0x3c')];if(!_0x1b51cc['query'][_0x29f6('0x3f')]('nolimit')){_0x30d747[_0x29f6('0x24')]=qs[_0x29f6('0x24')](_0x1b51cc['query'][_0x29f6('0x24')]);_0x30d747[_0x29f6('0x23')]=qs[_0x29f6('0x23')](_0x1b51cc[_0x29f6('0x3a')]['offset']);}_0x30d747[_0x29f6('0x40')]=qs[_0x29f6('0x41')](_0x1b51cc[_0x29f6('0x3a')]['sort']);_0x30d747[_0x29f6('0x42')]=qs['filters'](_[_0x29f6('0x43')](_0x1b51cc['query'],_0x2a09e8['filters']),_0x105557);if(_0x1b51cc['query'][_0x29f6('0x44')]){_0x30d747[_0x29f6('0x42')]=_[_0x29f6('0x45')](_0x30d747[_0x29f6('0x42')],{'$or':_[_0x29f6('0x36')](_0x105557,function(_0x270842){if(_0x270842[_0x29f6('0x46')]!==_0x29f6('0x47')){var _0x352119={};_0x352119[_0x270842[_0x29f6('0x30')]]={'$like':'%'+_0x1b51cc['query']['filter']+'%'};return _0x352119;}})});}_0x30d747=_[_0x29f6('0x45')]({},_0x30d747,_0x1b51cc[_0x29f6('0x48')]);var _0x7a65c0={'where':_0x30d747[_0x29f6('0x42')]};return db['Trunk'][_0x29f6('0x26')](_0x7a65c0)[_0x29f6('0x15')](function(_0x532df5){_0x14b392[_0x29f6('0x26')]=_0x532df5;if(_0x1b51cc[_0x29f6('0x3a')][_0x29f6('0x49')]){_0x30d747[_0x29f6('0x4a')]=[{'all':!![]}];}return db[_0x29f6('0x4b')][_0x29f6('0x4c')](_0x30d747);})[_0x29f6('0x15')](function(_0x1f03b6){_0x14b392[_0x29f6('0x4d')]=_0x1f03b6;return _0x14b392;})[_0x29f6('0x15')](respondWithFilteredResult(_0x4f5fe1,_0x30d747))[_0x29f6('0x1f')](handleError(_0x4f5fe1,null));};exports[_0x29f6('0x4e')]=function(_0x58ea69,_0x416c24){var _0x463551={'raw':![],'where':{'id':_0x58ea69[_0x29f6('0x4f')]['id']}},_0x335ec1={};_0x335ec1[_0x29f6('0x3c')]=_['keys'](db[_0x29f6('0x4b')]['rawAttributes']);_0x335ec1['query']=_[_0x29f6('0x37')](_0x58ea69[_0x29f6('0x3a')]);_0x335ec1[_0x29f6('0x38')]=_[_0x29f6('0x39')](_0x335ec1[_0x29f6('0x3c')],_0x335ec1['query']);_0x463551[_0x29f6('0x3b')]=_[_0x29f6('0x39')](_0x335ec1['model'],qs[_0x29f6('0x3d')](_0x58ea69['query'][_0x29f6('0x3d')]));_0x463551[_0x29f6('0x3b')]=_0x463551[_0x29f6('0x3b')][_0x29f6('0x3e')]?_0x463551['attributes']:_0x335ec1[_0x29f6('0x3c')];if(_0x58ea69[_0x29f6('0x3a')][_0x29f6('0x49')]){_0x463551[_0x29f6('0x4a')]=[{'all':!![]}];}_0x463551=_[_0x29f6('0x45')]({},_0x463551,_0x58ea69[_0x29f6('0x48')]);return db[_0x29f6('0x4b')]['find'](_0x463551)[_0x29f6('0x15')](handleEntityNotFound(_0x416c24,null))[_0x29f6('0x15')](respondWithResult(_0x416c24,null))[_0x29f6('0x1f')](handleError(_0x416c24,null));};exports[_0x29f6('0x50')]=function(_0x36e52c,_0x1ac20d){var _0x37c3c1={'where':{'id':_0x36e52c[_0x29f6('0x4f')]['id']}},_0x2f356d={};_0x2f356d[_0x29f6('0x3c')]=_['keys'](db['Trunk'][_0x29f6('0x33')]);_0x37c3c1[_0x29f6('0x3b')]=_[_0x29f6('0x39')](_0x2f356d['model'],qs[_0x29f6('0x3d')](_0x36e52c['query']['fields']));_0x37c3c1[_0x29f6('0x3b')]=_0x37c3c1[_0x29f6('0x3b')]['length']?_0x37c3c1['attributes']:_0x2f356d[_0x29f6('0x3c')];if(_0x36e52c[_0x29f6('0x3a')][_0x29f6('0x49')]){_0x37c3c1['include']=[{'all':!![]}];}_0x37c3c1=_[_0x29f6('0x45')]({},_0x37c3c1,_0x36e52c[_0x29f6('0x48')]);return db[_0x29f6('0x4b')][_0x29f6('0x51')](_0x37c3c1)[_0x29f6('0x15')](handleEntityNotFound(_0x1ac20d,null))[_0x29f6('0x15')](function(_0x7700da){if(_0x7700da){var _0x33b1d7=_0x7700da[_0x29f6('0x2c')]({'plain':!![]});_0x33b1d7=qs[_0x29f6('0x52')](_0x33b1d7,['id',_0x29f6('0x53'),_0x29f6('0x54')]);_0x36e52c[_0x29f6('0x55')]=_['omit'](_0x36e52c['body'],['id',_0x29f6('0x53'),'updatedAt']);return db[_0x29f6('0x4b')][_0x29f6('0x56')](_[_0x29f6('0x45')](_0x33b1d7,_0x36e52c[_0x29f6('0x55')]),{'include':_0x36e52c[_0x29f6('0x3a')]['includeAll']?[{'all':!![]}]:undefined})[_0x29f6('0x15')](function(_0x38d684){var _0x2f694e=_0x36e52c[_0x29f6('0x57')][_0x29f6('0x2c')]({'plain':!![]});if(!_0x2f694e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f694e[_0x29f6('0x58')]==='user'){var _0x51b9dc=_0x38d684[_0x29f6('0x2c')]({'plain':!![]});var _0x336b8e='Trunks';return db[_0x29f6('0x59')][_0x29f6('0x51')]({'where':{'name':_0x336b8e,'userProfileId':_0x2f694e['userProfileId']},'raw':!![]})[_0x29f6('0x15')](function(_0x2ba44c){if(_0x2ba44c&&_0x2ba44c[_0x29f6('0x5a')]===0x0){return db[_0x29f6('0x2e')][_0x29f6('0x56')]({'name':_0x51b9dc[_0x29f6('0x30')],'resourceId':_0x51b9dc['id'],'type':_0x2ba44c[_0x29f6('0x30')],'sectionId':_0x2ba44c['id']},{})['then'](function(){return _0x38d684;});}else{return _0x38d684;}})[_0x29f6('0x1f')](function(_0x50ddd6){logger[_0x29f6('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50ddd6);throw _0x50ddd6;});}return _0x38d684;});}})['then'](respondWithResult(_0x1ac20d,0xc9))[_0x29f6('0x1f')](handleError(_0x1ac20d,null));};exports[_0x29f6('0x56')]=function(_0x195887,_0x536b0c,_0x6ae738){var _0x373cf6;return db[_0x29f6('0x4b')]['create'](_0x195887[_0x29f6('0x55')],{'raw':!![]})[_0x29f6('0x15')](function(_0x66a7bb){_0x373cf6=_0x66a7bb;return db[_0x29f6('0x4b')][_0x29f6('0x4c')]({'raw':!![]});})[_0x29f6('0x15')](function(_0x6587f3){var _0x41c1b9=fs['readFileSync'](path[_0x29f6('0x5b')](config[_0x29f6('0x5c')],_0x29f6('0x5d')),_0x29f6('0x5e'));var _0x1636f1=fs[_0x29f6('0x5f')](path[_0x29f6('0x5b')](config[_0x29f6('0x5c')],'server/files/templates/registry.ejs'),_0x29f6('0x5e'));var _0x1ca187=ejs['render'](_0x41c1b9,{'trunks':_0x6587f3||[]});fs[_0x29f6('0x60')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1ca187);if(_0x373cf6[_0x29f6('0x61')]){var _0x5a383f=ejs['render'](_0x1636f1,{'trunks':_0x6587f3||[]});fs[_0x29f6('0x60')](_0x29f6('0x62'),_0x5a383f);}})['then'](function(){return respondWithRpcPromise('Reload','create',{'module':_0x29f6('0x63')});})[_0x29f6('0x15')](function(){var _0x144c76=_0x195887[_0x29f6('0x57')][_0x29f6('0x2c')]({'plain':!![]});if(!_0x144c76)throw new Error(_0x29f6('0x64'));if(_0x144c76[_0x29f6('0x58')]==='user'){var _0x11ef85=_0x373cf6[_0x29f6('0x2c')]({'plain':!![]});return db[_0x29f6('0x59')][_0x29f6('0x51')]({'where':{'name':'Trunks','userProfileId':_0x144c76[_0x29f6('0x65')]},'raw':!![]})[_0x29f6('0x15')](function(_0x32a862){if(_0x32a862&&_0x32a862[_0x29f6('0x5a')]===0x0){return db[_0x29f6('0x2e')]['create']({'name':_0x11ef85[_0x29f6('0x30')],'resourceId':_0x11ef85['id'],'type':_0x32a862[_0x29f6('0x30')],'sectionId':_0x32a862['id']},{})[_0x29f6('0x15')](function(){return _0x373cf6;});}else{return _0x373cf6;}})[_0x29f6('0x1f')](function(_0x4273a3){logger[_0x29f6('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4273a3);throw _0x4273a3;});}return _0x373cf6;})[_0x29f6('0x15')](respondWithResult(_0x536b0c,0xc9))['catch'](handleError(_0x536b0c,null));};exports['update']=function(_0x4f9907,_0x842ae3,_0x5bcf90){var _0x425da2;return db[_0x29f6('0x4b')][_0x29f6('0x51')]({'where':{'id':_0x4f9907[_0x29f6('0x4f')]['id']}})[_0x29f6('0x15')](handleEntityNotFound(_0x842ae3,null))[_0x29f6('0x15')](saveUpdates(_0x4f9907[_0x29f6('0x55')],null))['then'](function(_0x3a23f3){if(_0x3a23f3){_0x425da2=_0x3a23f3;return db['Trunk'][_0x29f6('0x4c')]({'raw':!![]});}})[_0x29f6('0x15')](function(_0x32fa77){if(_0x32fa77){var _0x1d6e32=fs[_0x29f6('0x5f')](path[_0x29f6('0x5b')](config[_0x29f6('0x5c')],_0x29f6('0x5d')),_0x29f6('0x5e'));var _0xe14459=fs[_0x29f6('0x5f')](path[_0x29f6('0x5b')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0xa31c7d=ejs[_0x29f6('0x66')](_0x1d6e32,{'trunks':_0x32fa77||[]});fs['writeFileSync'](_0x29f6('0x67'),_0xa31c7d);var _0x57b9fb=ejs[_0x29f6('0x66')](_0xe14459,{'trunks':_0x32fa77||[]});fs[_0x29f6('0x60')](_0x29f6('0x62'),_0x57b9fb);return respondWithRpcPromise(_0x29f6('0x68'),_0x29f6('0x2a'),{'module':_0x29f6('0x63')});}return null;})[_0x29f6('0x15')](function(_0x4203f1){if(_0x4203f1){return _0x425da2;}})[_0x29f6('0x15')](respondWithResult(_0x842ae3,null))[_0x29f6('0x1f')](handleError(_0x842ae3,null));};exports['destroy']=function(_0x1d61ff,_0x4c0acc,_0x16bb3c){var _0x144d8c;return db[_0x29f6('0x4b')][_0x29f6('0x51')]({'where':{'id':_0x1d61ff[_0x29f6('0x4f')]['id']}})[_0x29f6('0x15')](handleEntityNotFound(_0x4c0acc,null))[_0x29f6('0x15')](removeEntity(_0x4c0acc,null))[_0x29f6('0x15')](function(){return db['Trunk'][_0x29f6('0x4c')]({'raw':!![]});})[_0x29f6('0x15')](function(_0x4e185f){var _0x4bb53f=fs[_0x29f6('0x5f')](path[_0x29f6('0x5b')](config[_0x29f6('0x5c')],_0x29f6('0x5d')),_0x29f6('0x5e'));var _0x906098=fs[_0x29f6('0x5f')](path[_0x29f6('0x5b')](config[_0x29f6('0x5c')],_0x29f6('0x69')),_0x29f6('0x5e'));var _0x3f51fa=ejs['render'](_0x4bb53f,{'trunks':_0x4e185f});var _0x4b9631=ejs[_0x29f6('0x66')](_0x906098,{'trunks':_0x4e185f});fs[_0x29f6('0x60')]('/etc/asterisk/sip_xcally_trunks.conf',_0x3f51fa);fs[_0x29f6('0x60')](_0x29f6('0x62'),_0x4b9631);return respondWithRpcPromise(_0x29f6('0x68'),_0x29f6('0x2b'),{'module':_0x29f6('0x63')});})[_0x29f6('0x1f')](handleError(_0x4c0acc,null));};
\ No newline at end of file
index 25d5c51..32c5472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0451=['Trunk','tools_trunks','lodash','util','../../config/logger','moment','request-promise','../../config/environment','./trunk.attributes','exports','define'];(function(_0x36e26e,_0x13b02b){var _0x508e6c=function(_0x3c0b44){while(--_0x3c0b44){_0x36e26e['push'](_0x36e26e['shift']());}};_0x508e6c(++_0x13b02b);}(_0x0451,0x16d));var _0x1045=function(_0x404957,_0x5192a4){_0x404957=_0x404957-0x0;var _0x4e0365=_0x0451[_0x404957];return _0x4e0365;};'use strict';var _=require(_0x1045('0x0'));var util=require(_0x1045('0x1'));var logger=require(_0x1045('0x2'))('api');var moment=require(_0x1045('0x3'));var BPromise=require('bluebird');var rp=require(_0x1045('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1045('0x5'));var attributes=require(_0x1045('0x6'));module[_0x1045('0x7')]=function(_0x3dc069,_0x1bbd8e){return _0x3dc069[_0x1045('0x8')](_0x1045('0x9'),attributes,{'tableName':_0x1045('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe2fa=['lodash','util','../../config/logger','bluebird','path','../../config/environment','./trunk.attributes','exports','define','Trunk','tools_trunks'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0xe2fa,0x9a));var _0xae2f=function(_0x35ec86,_0x333eac){_0x35ec86=_0x35ec86-0x0;var _0x37830d=_0xe2fa[_0x35ec86];return _0x37830d;};'use strict';var _=require(_0xae2f('0x0'));var util=require(_0xae2f('0x1'));var logger=require(_0xae2f('0x2'))('api');var moment=require('moment');var BPromise=require(_0xae2f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xae2f('0x4'));var rimraf=require('rimraf');var config=require(_0xae2f('0x5'));var attributes=require(_0xae2f('0x6'));module[_0xae2f('0x7')]=function(_0x101f5a,_0x477ea2){return _0x101f5a[_0xae2f('0x8')](_0xae2f('0x9'),attributes,{'tableName':_0xae2f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0af344a..54b3dc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd19f=['stringify','error','code','message','result','catch','findAll','options','raw','where','attributes','include','map','model','GetTrunk','ShowTrunk','Trunk','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3033a6,_0x108fa9){var _0x40c0cd=function(_0x4f0432){while(--_0x4f0432){_0x3033a6['push'](_0x3033a6['shift']());}};_0x40c0cd(++_0x108fa9);}(_0xd19f,0xea));var _0xfd19=function(_0x425716,_0x3e9d1c){_0x425716=_0x425716-0x0;var _0x2d39af=_0xd19f[_0x425716];return _0x2d39af;};'use strict';var _=require(_0xfd19('0x0'));var util=require(_0xfd19('0x1'));var moment=require(_0xfd19('0x2'));var BPromise=require(_0xfd19('0x3'));var rs=require(_0xfd19('0x4'));var fs=require('fs');var Redis=require(_0xfd19('0x5'));var db=require(_0xfd19('0x6'))['db'];var utils=require(_0xfd19('0x7'));var logger=require('../../config/logger')(_0xfd19('0x8'));var config=require(_0xfd19('0x9'));var jayson=require(_0xfd19('0xa'));var client=jayson[_0xfd19('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fec27,_0xecdf82,_0x9812a1){return new BPromise(function(_0x1942db,_0x3ecee4){return client[_0xfd19('0xc')](_0x1fec27,_0x9812a1)[_0xfd19('0xd')](function(_0x45c23a){logger[_0xfd19('0xe')](_0xfd19('0xf'),_0xecdf82,_0xfd19('0x10'));logger[_0xfd19('0x11')]('Trunk,\x20%s,\x20%s,\x20%s',_0xecdf82,_0xfd19('0x10'),JSON[_0xfd19('0x12')](_0x45c23a));if(_0x45c23a['error']){if(_0x45c23a[_0xfd19('0x13')][_0xfd19('0x14')]===0x1f4){logger[_0xfd19('0x13')](_0xfd19('0xf'),_0xecdf82,_0x45c23a[_0xfd19('0x13')][_0xfd19('0x15')]);return _0x3ecee4(_0x45c23a['error'][_0xfd19('0x15')]);}logger['error'](_0xfd19('0xf'),_0xecdf82,_0x45c23a[_0xfd19('0x13')][_0xfd19('0x15')]);return _0x1942db(_0x45c23a[_0xfd19('0x13')][_0xfd19('0x15')]);}else{logger[_0xfd19('0xe')](_0xfd19('0xf'),_0xecdf82,_0xfd19('0x10'));_0x1942db(_0x45c23a[_0xfd19('0x16')][_0xfd19('0x15')]);}})[_0xfd19('0x17')](function(_0x4f0d12){logger[_0xfd19('0x13')](_0xfd19('0xf'),_0xecdf82,_0x4f0d12);_0x3ecee4(_0x4f0d12);});});}exports['GetTrunk']=function(_0x255c57){var _0x5d3f25=this;return new Promise(function(_0x4d166b,_0x18309d){return db['Trunk'][_0xfd19('0x18')]({'raw':_0x255c57[_0xfd19('0x19')]?_0x255c57[_0xfd19('0x19')][_0xfd19('0x1a')]===undefined?!![]:![]:!![],'where':_0x255c57[_0xfd19('0x19')]?_0x255c57[_0xfd19('0x19')][_0xfd19('0x1b')]||null:null,'attributes':_0x255c57[_0xfd19('0x19')]?_0x255c57['options'][_0xfd19('0x1c')]||null:null,'limit':_0x255c57[_0xfd19('0x19')]?_0x255c57[_0xfd19('0x19')]['limit']||null:null,'include':_0x255c57[_0xfd19('0x19')]?_0x255c57[_0xfd19('0x19')][_0xfd19('0x1d')]?_['map'](_0x255c57['options']['include'],function(_0x72d177){return{'model':db[_0x72d177['model']],'as':_0x72d177['as'],'attributes':_0x72d177[_0xfd19('0x1c')],'include':_0x72d177[_0xfd19('0x1d')]?_[_0xfd19('0x1e')](_0x72d177[_0xfd19('0x1d')],function(_0x3c0c46){return{'model':db[_0x3c0c46[_0xfd19('0x1f')]],'as':_0x3c0c46['as'],'attributes':_0x3c0c46[_0xfd19('0x1c')],'include':_0x3c0c46['include']?_['map'](_0x3c0c46[_0xfd19('0x1d')],function(_0x3785d9){return{'model':db[_0x3785d9[_0xfd19('0x1f')]],'as':_0x3785d9['as'],'attributes':_0x3785d9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3686e9){logger['info'](_0xfd19('0x20'),_0x255c57);logger[_0xfd19('0x11')](_0xfd19('0x20'),_0x255c57,JSON[_0xfd19('0x12')](_0x3686e9));_0x4d166b(_0x3686e9);})[_0xfd19('0x17')](function(_0x197333){logger[_0xfd19('0x13')](_0xfd19('0x20'),_0x197333[_0xfd19('0x15')],_0x255c57);_0x18309d(_0x5d3f25[_0xfd19('0x13')](0x1f4,_0x197333['message']));});});};exports[_0xfd19('0x21')]=function(_0x395eac){var _0x541f53=this;return new Promise(function(_0x46cc91,_0x4ddda0){return db[_0xfd19('0x22')][_0xfd19('0x23')]({'raw':_0x395eac[_0xfd19('0x19')]?_0x395eac[_0xfd19('0x19')][_0xfd19('0x1a')]===undefined?!![]:![]:!![],'where':_0x395eac['options']?_0x395eac['options'][_0xfd19('0x1b')]||null:null,'attributes':_0x395eac[_0xfd19('0x19')]?_0x395eac[_0xfd19('0x19')]['attributes']||null:null,'include':_0x395eac[_0xfd19('0x19')]?_0x395eac[_0xfd19('0x19')][_0xfd19('0x1d')]?_['map'](_0x395eac[_0xfd19('0x19')][_0xfd19('0x1d')],function(_0x3fe90a){return{'model':db[_0x3fe90a[_0xfd19('0x1f')]],'as':_0x3fe90a['as'],'attributes':_0x3fe90a[_0xfd19('0x1c')],'include':_0x3fe90a[_0xfd19('0x1d')]?_[_0xfd19('0x1e')](_0x3fe90a[_0xfd19('0x1d')],function(_0x2b9ca7){return{'model':db[_0x2b9ca7[_0xfd19('0x1f')]],'as':_0x2b9ca7['as'],'attributes':_0x2b9ca7[_0xfd19('0x1c')],'include':_0x2b9ca7[_0xfd19('0x1d')]?_['map'](_0x2b9ca7['include'],function(_0x4fbfe1){return{'model':db[_0x4fbfe1[_0xfd19('0x1f')]],'as':_0x4fbfe1['as'],'attributes':_0x4fbfe1[_0xfd19('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xfd19('0xd')](function(_0x566c5d){logger['info'](_0xfd19('0x21'),_0x395eac);logger['debug'](_0xfd19('0x21'),_0x395eac,JSON[_0xfd19('0x12')](_0x566c5d));_0x46cc91(_0x566c5d);})[_0xfd19('0x17')](function(_0x1cee5f){logger['error'](_0xfd19('0x21'),_0x1cee5f['message'],_0x395eac);_0x4ddda0(_0x541f53[_0xfd19('0x13')](0x1f4,_0x1cee5f['message']));});});};
\ No newline at end of file
+var _0x0c20=['lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','debug','Trunk,\x20%s,\x20%s,\x20%s','error','Trunk,\x20%s,\x20%s','message','info','request\x20sent','result','GetTrunk','findAll','options','where','limit','include','map','model','attributes','then','stringify','catch','Trunk','find','ShowTrunk'];(function(_0x5046d5,_0x36b2d7){var _0x27d4d9=function(_0x391168){while(--_0x391168){_0x5046d5['push'](_0x5046d5['shift']());}};_0x27d4d9(++_0x36b2d7);}(_0x0c20,0x181));var _0x00c2=function(_0x45c892,_0x17368d){_0x45c892=_0x45c892-0x0;var _0x43b9e4=_0x0c20[_0x45c892];return _0x43b9e4;};'use strict';var _=require(_0x00c2('0x0'));var util=require(_0x00c2('0x1'));var moment=require(_0x00c2('0x2'));var BPromise=require(_0x00c2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x00c2('0x4'))['db'];var utils=require(_0x00c2('0x5'));var logger=require(_0x00c2('0x6'))(_0x00c2('0x7'));var config=require(_0x00c2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x00c2('0x9')][_0x00c2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21a3f5,_0x438289,_0xd23ea0){return new BPromise(function(_0x121f6d,_0x118a34){return client[_0x00c2('0xb')](_0x21a3f5,_0xd23ea0)['then'](function(_0x5deb35){logger['info']('Trunk,\x20%s,\x20%s',_0x438289,'request\x20sent');logger[_0x00c2('0xc')](_0x00c2('0xd'),_0x438289,'request\x20sent',JSON['stringify'](_0x5deb35));if(_0x5deb35[_0x00c2('0xe')]){if(_0x5deb35[_0x00c2('0xe')]['code']===0x1f4){logger[_0x00c2('0xe')](_0x00c2('0xf'),_0x438289,_0x5deb35[_0x00c2('0xe')][_0x00c2('0x10')]);return _0x118a34(_0x5deb35[_0x00c2('0xe')][_0x00c2('0x10')]);}logger[_0x00c2('0xe')](_0x00c2('0xf'),_0x438289,_0x5deb35[_0x00c2('0xe')]['message']);return _0x121f6d(_0x5deb35[_0x00c2('0xe')]['message']);}else{logger[_0x00c2('0x11')](_0x00c2('0xf'),_0x438289,_0x00c2('0x12'));_0x121f6d(_0x5deb35[_0x00c2('0x13')][_0x00c2('0x10')]);}})['catch'](function(_0x5662ae){logger['error'](_0x00c2('0xf'),_0x438289,_0x5662ae);_0x118a34(_0x5662ae);});});}exports[_0x00c2('0x14')]=function(_0x330af7){var _0xfb0879=this;return new Promise(function(_0x4c1f9e,_0x569f3f){return db['Trunk'][_0x00c2('0x15')]({'raw':_0x330af7[_0x00c2('0x16')]?_0x330af7[_0x00c2('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x330af7[_0x00c2('0x16')]?_0x330af7[_0x00c2('0x16')][_0x00c2('0x17')]||null:null,'attributes':_0x330af7[_0x00c2('0x16')]?_0x330af7['options']['attributes']||null:null,'limit':_0x330af7['options']?_0x330af7[_0x00c2('0x16')][_0x00c2('0x18')]||null:null,'include':_0x330af7['options']?_0x330af7[_0x00c2('0x16')][_0x00c2('0x19')]?_[_0x00c2('0x1a')](_0x330af7[_0x00c2('0x16')][_0x00c2('0x19')],function(_0x1d20c7){return{'model':db[_0x1d20c7[_0x00c2('0x1b')]],'as':_0x1d20c7['as'],'attributes':_0x1d20c7[_0x00c2('0x1c')],'include':_0x1d20c7[_0x00c2('0x19')]?_[_0x00c2('0x1a')](_0x1d20c7[_0x00c2('0x19')],function(_0x2dd4a0){return{'model':db[_0x2dd4a0[_0x00c2('0x1b')]],'as':_0x2dd4a0['as'],'attributes':_0x2dd4a0['attributes'],'include':_0x2dd4a0[_0x00c2('0x19')]?_[_0x00c2('0x1a')](_0x2dd4a0[_0x00c2('0x19')],function(_0x486fd8){return{'model':db[_0x486fd8['model']],'as':_0x486fd8['as'],'attributes':_0x486fd8['attributes']};}):[]};}):[]};}):[]:[]})[_0x00c2('0x1d')](function(_0x42c99e){logger[_0x00c2('0x11')]('GetTrunk',_0x330af7);logger[_0x00c2('0xc')]('GetTrunk',_0x330af7,JSON[_0x00c2('0x1e')](_0x42c99e));_0x4c1f9e(_0x42c99e);})[_0x00c2('0x1f')](function(_0x5eed18){logger[_0x00c2('0xe')]('GetTrunk',_0x5eed18[_0x00c2('0x10')],_0x330af7);_0x569f3f(_0xfb0879['error'](0x1f4,_0x5eed18[_0x00c2('0x10')]));});});};exports['ShowTrunk']=function(_0x2b92cd){var _0x4fc2fb=this;return new Promise(function(_0x3d2264,_0x1e7728){return db[_0x00c2('0x20')][_0x00c2('0x21')]({'raw':_0x2b92cd['options']?_0x2b92cd[_0x00c2('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x2b92cd[_0x00c2('0x16')]?_0x2b92cd[_0x00c2('0x16')]['where']||null:null,'attributes':_0x2b92cd[_0x00c2('0x16')]?_0x2b92cd[_0x00c2('0x16')][_0x00c2('0x1c')]||null:null,'include':_0x2b92cd['options']?_0x2b92cd['options']['include']?_[_0x00c2('0x1a')](_0x2b92cd[_0x00c2('0x16')][_0x00c2('0x19')],function(_0x4f2c25){return{'model':db[_0x4f2c25['model']],'as':_0x4f2c25['as'],'attributes':_0x4f2c25[_0x00c2('0x1c')],'include':_0x4f2c25[_0x00c2('0x19')]?_[_0x00c2('0x1a')](_0x4f2c25['include'],function(_0x4a3338){return{'model':db[_0x4a3338[_0x00c2('0x1b')]],'as':_0x4a3338['as'],'attributes':_0x4a3338[_0x00c2('0x1c')],'include':_0x4a3338[_0x00c2('0x19')]?_[_0x00c2('0x1a')](_0x4a3338[_0x00c2('0x19')],function(_0xfe65ee){return{'model':db[_0xfe65ee[_0x00c2('0x1b')]],'as':_0xfe65ee['as'],'attributes':_0xfe65ee[_0x00c2('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x00c2('0x1d')](function(_0x17632d){logger[_0x00c2('0x11')](_0x00c2('0x22'),_0x2b92cd);logger[_0x00c2('0xc')](_0x00c2('0x22'),_0x2b92cd,JSON[_0x00c2('0x1e')](_0x17632d));_0x3d2264(_0x17632d);})['catch'](function(_0x3c46fe){logger[_0x00c2('0xe')]('ShowTrunk',_0x3c46fe[_0x00c2('0x10')],_0x2b92cd);_0x1e7728(_0x4fc2fb[_0x00c2('0xe')](0x1f4,_0x3c46fe[_0x00c2('0x10')]));});});};
\ No newline at end of file
index 513c373..7dfe575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ab4=['getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','addAvatar','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','put','update','changePassword','removeQueues','delete','removeTeams','destroy','/:id/chat_interactions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','/:id/lists','getLists','getAgents','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5ab4,0x134));var _0x45ab=function(_0x34d599,_0x247905){_0x34d599=_0x34d599-0x0;var _0x4ff0a4=_0x5ab4[_0x34d599];return _0x4ff0a4;};'use strict';var multer=require(_0x45ab('0x0'));var util=require(_0x45ab('0x1'));var path=require(_0x45ab('0x2'));var timeout=require(_0x45ab('0x3'));var express=require('express');var router=express[_0x45ab('0x4')]();var fs_extra=require(_0x45ab('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x45ab('0x6'));var config=require(_0x45ab('0x7'));var controller=require(_0x45ab('0x8'));router[_0x45ab('0x9')]('/',auth[_0x45ab('0xa')](),controller['index']);router[_0x45ab('0x9')](_0x45ab('0xb'),auth[_0x45ab('0xa')](),controller[_0x45ab('0xc')]);router[_0x45ab('0x9')](_0x45ab('0xd'),auth['isAuthenticated'](),controller[_0x45ab('0xe')]);router[_0x45ab('0x9')](_0x45ab('0xf'),auth['isAuthenticated'](),controller[_0x45ab('0x10')]);router[_0x45ab('0x9')](_0x45ab('0x11'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x12')]);router[_0x45ab('0x9')](_0x45ab('0x13'),controller[_0x45ab('0x14')]);router[_0x45ab('0x9')](_0x45ab('0x15'),auth['isAuthenticated'](),controller['getOpenTabs']);router['get'](_0x45ab('0x16'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x17')]);router['get'](_0x45ab('0x18'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x19')]);router[_0x45ab('0x9')](_0x45ab('0x1a'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x1b')]);router[_0x45ab('0x9')](_0x45ab('0x1c'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x1d')]);router[_0x45ab('0x9')](_0x45ab('0x1e'),auth['isAuthenticated'](),controller[_0x45ab('0x1f')]);router['get'](_0x45ab('0x20'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x21')]);router[_0x45ab('0x9')]('/:id/chat/interactions',auth[_0x45ab('0xa')](),controller[_0x45ab('0x22')]);router[_0x45ab('0x9')](_0x45ab('0x23'),auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router['get'](_0x45ab('0x24'),auth['isAuthenticated'](),controller[_0x45ab('0x25')]);router['get'](_0x45ab('0x26'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x27')]);router[_0x45ab('0x9')](_0x45ab('0x28'),auth['isAuthenticated'](),controller[_0x45ab('0x29')]);router[_0x45ab('0x9')](_0x45ab('0x2a'),auth[_0x45ab('0xa')](),controller['getWhatsappInteractions']);router[_0x45ab('0x9')](_0x45ab('0x2b'),auth['isAuthenticated'](),controller['getTeams']);router[_0x45ab('0x9')](_0x45ab('0x2c'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x2d')]);router[_0x45ab('0x9')]('/:id/agents',auth[_0x45ab('0xa')](),controller[_0x45ab('0x2e')]);router[_0x45ab('0x9')]('/:id/prefixes',auth[_0x45ab('0xa')](),controller[_0x45ab('0x2f')]);router[_0x45ab('0x9')](_0x45ab('0x30'),auth[_0x45ab('0xa')](),controller['getFaxAccounts']);router[_0x45ab('0x9')](_0x45ab('0x31'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x32')]);router['get'](_0x45ab('0x33'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x34')]);router[_0x45ab('0x9')](_0x45ab('0x35'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x36')]);router['get'](_0x45ab('0x37'),auth[_0x45ab('0xa')](),controller['getChatWebsites']);router[_0x45ab('0x9')](_0x45ab('0x38'),auth['isAuthenticated'](),controller[_0x45ab('0x39')]);router[_0x45ab('0x9')](_0x45ab('0x3a'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x3b')]);router[_0x45ab('0x9')](_0x45ab('0x3c'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x3d')]);router['get'](_0x45ab('0x3e'),auth['isAuthenticated'](),controller['getApiKey']);router[_0x45ab('0x3f')](_0x45ab('0x16'),auth['isAuthenticated'](),controller[_0x45ab('0x40')]);router['post']('/',auth[_0x45ab('0xa')](),controller[_0x45ab('0x41')]);router[_0x45ab('0x3f')](_0x45ab('0x42'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x43')]);router['post']('/:id/queues',auth[_0x45ab('0xa')](),controller[_0x45ab('0x44')]);var upload=multer({'storage':multer[_0x45ab('0x45')]({'destination':function(_0x327929,_0x21c8db,_0x5a0b05){_0x5a0b05(null,path[_0x45ab('0x46')](config[_0x45ab('0x47')],_0x45ab('0x48')));},'filename':function(_0x328cdd,_0x3c9052,_0x324ffc){_0x324ffc(null,util['format'](_0x45ab('0x49'),Date[_0x45ab('0x4a')](),_0x3c9052[_0x45ab('0x4b')]));}})});router[_0x45ab('0x3f')]('/:id/avatar',upload['single']('file'),controller[_0x45ab('0x4c')]);router[_0x45ab('0x3f')]('/:id/login',auth[_0x45ab('0xa')](),controller['login']);router['post'](_0x45ab('0x4d'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x4e')]);router['post'](_0x45ab('0x4f'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x50')]);router[_0x45ab('0x3f')](_0x45ab('0x51'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x52')]);router[_0x45ab('0x3f')](_0x45ab('0x2b'),auth[_0x45ab('0xa')](),controller['addTeams']);router[_0x45ab('0x3f')]('/:id/chat_interactions',auth[_0x45ab('0xa')](),controller[_0x45ab('0x53')]);router[_0x45ab('0x3f')](_0x45ab('0x54'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x55')]);router['post'](_0x45ab('0x56'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x57')]);router['post'](_0x45ab('0x58'),auth['isAuthenticated'](),controller[_0x45ab('0x59')]);router[_0x45ab('0x3f')](_0x45ab('0x5a'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x5b')]);router[_0x45ab('0x3f')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0x45ab('0x5c')]);router['post'](_0x45ab('0x30'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x5d')]);router[_0x45ab('0x3f')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x45ab('0x5e')]);router[_0x45ab('0x3f')](_0x45ab('0x33'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x5f')]);router[_0x45ab('0x3f')]('/:id/sms_accounts',auth['isAuthenticated'](),controller['addSmsAccounts']);router[_0x45ab('0x3f')](_0x45ab('0x37'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x60')]);router[_0x45ab('0x3f')](_0x45ab('0x38'),auth['isAuthenticated'](),controller[_0x45ab('0x61')]);router['post'](_0x45ab('0x3a'),auth['isAuthenticated'](),controller[_0x45ab('0x62')]);router[_0x45ab('0x3f')]('/:id/api_key',auth['isAuthenticated'](),controller['createApiKey']);router[_0x45ab('0x63')](_0x45ab('0x11'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x64')]);router[_0x45ab('0x63')]('/:id/password',auth[_0x45ab('0xa')](),controller[_0x45ab('0x65')]);router['delete'](_0x45ab('0x18'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x66')]);router[_0x45ab('0x67')](_0x45ab('0x2b'),auth['isAuthenticated'](),controller[_0x45ab('0x68')]);router[_0x45ab('0x67')]('/:id',auth['isAuthenticated'](),controller[_0x45ab('0x69')]);router[_0x45ab('0x67')](_0x45ab('0x6a'),auth[_0x45ab('0xa')](),controller['removeChatInteractions']);router[_0x45ab('0x67')](_0x45ab('0x54'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x6b')]);router[_0x45ab('0x67')]('/:id/fax_interactions',auth[_0x45ab('0xa')](),controller[_0x45ab('0x6c')]);router[_0x45ab('0x67')]('/:id/sms_interactions',auth[_0x45ab('0xa')](),controller[_0x45ab('0x6d')]);router['delete'](_0x45ab('0x5a'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x6e')]);router['delete'](_0x45ab('0x6f'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x70')]);router['delete']('/:id/fax_accounts',auth[_0x45ab('0xa')](),controller[_0x45ab('0x71')]);router[_0x45ab('0x67')](_0x45ab('0x31'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x72')]);router[_0x45ab('0x67')](_0x45ab('0x33'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x73')]);router[_0x45ab('0x67')](_0x45ab('0x35'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x74')]);router['delete'](_0x45ab('0x37'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x75')]);router[_0x45ab('0x67')](_0x45ab('0x38'),auth[_0x45ab('0xa')](),controller[_0x45ab('0x76')]);router[_0x45ab('0x67')]('/:id/square_projects',auth[_0x45ab('0xa')](),controller['removeSquareProjects']);router[_0x45ab('0x67')](_0x45ab('0x3e'),auth['isAuthenticated'](),controller['removeApiKey']);module[_0x45ab('0x77')]=router;
\ No newline at end of file
+var _0xc434=['/:id/queues','getQueues','getVoiceQueuesRt','getGroups','/:id/recordings','getScreenRecordings','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getWhatsappInteractions','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/whatsapp_accounts','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','addContacts','create','post','/create_many','bulkCreate','addQueues','join','root','server/files/images/','format','%s-%s','now','originalname','single','file','addAvatar','/:id/login','login','/:id/logout','/:id/pause','pause','unpause','/:id/teams','/:id/chat_interactions','addChatInteractions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/chat_websites','/:id/square_projects','addSquareProjects','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeFaxInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','/:id/openchannel_accounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','describe','/whoami','getPresence','/:id','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0xc434,0x13d));var _0x4c43=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0xc434[_0x3070dc];return _0x431489;};'use strict';var multer=require(_0x4c43('0x0'));var util=require(_0x4c43('0x1'));var path=require(_0x4c43('0x2'));var timeout=require(_0x4c43('0x3'));var express=require(_0x4c43('0x4'));var router=express['Router']();var fs_extra=require(_0x4c43('0x5'));var auth=require(_0x4c43('0x6'));var interaction=require(_0x4c43('0x7'));var config=require(_0x4c43('0x8'));var controller=require(_0x4c43('0x9'));router[_0x4c43('0xa')]('/',auth[_0x4c43('0xb')](),controller[_0x4c43('0xc')]);router['get']('/describe',auth[_0x4c43('0xb')](),controller[_0x4c43('0xd')]);router[_0x4c43('0xa')](_0x4c43('0xe'),auth[_0x4c43('0xb')](),controller['whoami']);router['get']('/presence',auth['isAuthenticated'](),controller[_0x4c43('0xf')]);router[_0x4c43('0xa')](_0x4c43('0x10'),auth[_0x4c43('0xb')](),controller['show']);router[_0x4c43('0xa')]('/:id/avatar',controller[_0x4c43('0x11')]);router['get'](_0x4c43('0x12'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x13')]);router[_0x4c43('0xa')](_0x4c43('0x14'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x15')]);router[_0x4c43('0xa')](_0x4c43('0x16'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x17')]);router['get']('/:id/queues_rt',auth['isAuthenticated'](),controller[_0x4c43('0x18')]);router[_0x4c43('0xa')]('/:id/groups',auth[_0x4c43('0xb')](),controller[_0x4c43('0x19')]);router[_0x4c43('0xa')](_0x4c43('0x1a'),auth[_0x4c43('0xb')](),controller['getRecordings']);router[_0x4c43('0xa')]('/:id/screen_recordings',auth[_0x4c43('0xb')](),controller[_0x4c43('0x1b')]);router[_0x4c43('0xa')]('/:id/chat/interactions',auth[_0x4c43('0xb')](),controller[_0x4c43('0x1c')]);router[_0x4c43('0xa')](_0x4c43('0x1d'),auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router[_0x4c43('0xa')](_0x4c43('0x1e'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x1f')]);router[_0x4c43('0xa')](_0x4c43('0x20'),auth['isAuthenticated'](),controller[_0x4c43('0x21')]);router[_0x4c43('0xa')](_0x4c43('0x22'),auth['isAuthenticated'](),controller['getFaxInteractions']);router[_0x4c43('0xa')]('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller[_0x4c43('0x23')]);router[_0x4c43('0xa')]('/:id/teams',auth[_0x4c43('0xb')](),controller[_0x4c43('0x24')]);router[_0x4c43('0xa')](_0x4c43('0x25'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x26')]);router['get']('/:id/agents',auth[_0x4c43('0xb')](),controller[_0x4c43('0x27')]);router['get'](_0x4c43('0x28'),auth[_0x4c43('0xb')](),controller['getVoicePrefixes']);router[_0x4c43('0xa')](_0x4c43('0x29'),auth['isAuthenticated'](),controller['getFaxAccounts']);router[_0x4c43('0xa')](_0x4c43('0x2a'),auth['isAuthenticated'](),controller[_0x4c43('0x2b')]);router[_0x4c43('0xa')]('/:id/openchannel_accounts',auth[_0x4c43('0xb')](),controller[_0x4c43('0x2c')]);router['get'](_0x4c43('0x2d'),auth[_0x4c43('0xb')](),controller['getSmsAccounts']);router['get']('/:id/chat_websites',auth['isAuthenticated'](),controller['getChatWebsites']);router[_0x4c43('0xa')](_0x4c43('0x2e'),auth['isAuthenticated'](),controller['getWhatsappAccounts']);router[_0x4c43('0xa')]('/:id/square_projects',auth[_0x4c43('0xb')](),controller[_0x4c43('0x2f')]);router['get'](_0x4c43('0x30'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x31')]);router[_0x4c43('0xa')](_0x4c43('0x32'),auth[_0x4c43('0xb')](),controller['getApiKey']);router['post'](_0x4c43('0x14'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x33')]);router['post']('/',auth[_0x4c43('0xb')](),controller[_0x4c43('0x34')]);router[_0x4c43('0x35')](_0x4c43('0x36'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x37')]);router[_0x4c43('0x35')](_0x4c43('0x16'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x38')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x51a766,_0x1e8760,_0x453b0f){_0x453b0f(null,path[_0x4c43('0x39')](config[_0x4c43('0x3a')],_0x4c43('0x3b')));},'filename':function(_0x543c9d,_0x4b63af,_0x281dad){_0x281dad(null,util[_0x4c43('0x3c')](_0x4c43('0x3d'),Date[_0x4c43('0x3e')](),_0x4b63af[_0x4c43('0x3f')]));}})});router[_0x4c43('0x35')]('/:id/avatar',upload[_0x4c43('0x40')](_0x4c43('0x41')),controller[_0x4c43('0x42')]);router[_0x4c43('0x35')](_0x4c43('0x43'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x44')]);router[_0x4c43('0x35')](_0x4c43('0x45'),auth['isAuthenticated'](),controller['logout']);router[_0x4c43('0x35')](_0x4c43('0x46'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x47')]);router['post']('/:id/unpause',auth['isAuthenticated'](),controller[_0x4c43('0x48')]);router[_0x4c43('0x35')](_0x4c43('0x49'),auth['isAuthenticated'](),controller['addTeams']);router['post'](_0x4c43('0x4a'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x4b')]);router[_0x4c43('0x35')]('/:id/mail_interactions',auth[_0x4c43('0xb')](),controller[_0x4c43('0x4c')]);router[_0x4c43('0x35')](_0x4c43('0x4d'),auth[_0x4c43('0xb')](),controller['addFaxInteractions']);router[_0x4c43('0x35')](_0x4c43('0x4e'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x4f')]);router[_0x4c43('0x35')](_0x4c43('0x50'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x51')]);router[_0x4c43('0x35')](_0x4c43('0x52'),auth[_0x4c43('0xb')](),controller['addWhatsappInteractions']);router['post']('/:id/fax_accounts',auth['isAuthenticated'](),controller[_0x4c43('0x53')]);router[_0x4c43('0x35')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x4c43('0x54')]);router[_0x4c43('0x35')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x4c43('0x55')]);router[_0x4c43('0x35')](_0x4c43('0x2d'),auth[_0x4c43('0xb')](),controller['addSmsAccounts']);router['post'](_0x4c43('0x56'),auth[_0x4c43('0xb')](),controller['addChatWebsites']);router[_0x4c43('0x35')]('/:id/whatsapp_accounts',auth[_0x4c43('0xb')](),controller['addWhatsappAccounts']);router[_0x4c43('0x35')](_0x4c43('0x57'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x58')]);router[_0x4c43('0x35')](_0x4c43('0x32'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x59')]);router[_0x4c43('0x5a')]('/:id',auth[_0x4c43('0xb')](),controller[_0x4c43('0x5b')]);router['put'](_0x4c43('0x5c'),auth['isAuthenticated'](),controller[_0x4c43('0x5d')]);router[_0x4c43('0x5e')](_0x4c43('0x16'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x5f')]);router[_0x4c43('0x5e')]('/:id/teams',auth[_0x4c43('0xb')](),controller[_0x4c43('0x60')]);router[_0x4c43('0x5e')](_0x4c43('0x10'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x61')]);router['delete'](_0x4c43('0x4a'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x62')]);router['delete'](_0x4c43('0x63'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x64')]);router['delete'](_0x4c43('0x4d'),auth['isAuthenticated'](),controller[_0x4c43('0x65')]);router[_0x4c43('0x5e')]('/:id/sms_interactions',auth[_0x4c43('0xb')](),controller['removeSmsInteractions']);router[_0x4c43('0x5e')](_0x4c43('0x50'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x66')]);router[_0x4c43('0x5e')](_0x4c43('0x52'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x67')]);router[_0x4c43('0x5e')]('/:id/fax_accounts',auth[_0x4c43('0xb')](),controller[_0x4c43('0x68')]);router[_0x4c43('0x5e')](_0x4c43('0x2a'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x69')]);router[_0x4c43('0x5e')](_0x4c43('0x6a'),auth[_0x4c43('0xb')](),controller['removeOpenchannelAccounts']);router[_0x4c43('0x5e')](_0x4c43('0x2d'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x6b')]);router['delete'](_0x4c43('0x56'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x6c')]);router['delete'](_0x4c43('0x2e'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x6d')]);router['delete'](_0x4c43('0x57'),auth['isAuthenticated'](),controller[_0x4c43('0x6e')]);router[_0x4c43('0x5e')](_0x4c43('0x32'),auth[_0x4c43('0xb')](),controller[_0x4c43('0x6f')]);module[_0x4c43('0x70')]=router;
\ No newline at end of file
index e25097b..128c76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6d=['wss','encryption','avpf','force_avp','icesupport','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','dtlsenable','actpass','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','lodash','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','\x22%s\x22\x20<%s>','getDataValue','internal','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','callerid','format','BOOLEAN','DEFAULT\x20PAUSE','DATE','friend','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','yes','nonat','update','outgoing','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','certificate','active','update,nonat','showWebBar','get','isArray','join'];(function(_0x5cc559,_0x460db5){var _0x122fbf=function(_0x1543e2){while(--_0x1543e2){_0x5cc559['push'](_0x5cc559['shift']());}};_0x122fbf(++_0x460db5);}(_0x3c6d,0x199));var _0xd3c6=function(_0x58b866,_0x3513f0){_0x58b866=_0x58b866-0x0;var _0xcc3de3=_0x3c6d[_0x58b866];return _0xcc3de3;};'use strict';var Sequelize=require(_0xd3c6('0x0'));var moment=require(_0xd3c6('0x1'));var util=require(_0xd3c6('0x2'));var _=require(_0xd3c6('0x3'));module['exports']={'name':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':![],'unique':_0xd3c6('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2a3a62){this[_0xd3c6('0x6')](_0xd3c6('0x5'),_0x2a3a62);this[_0xd3c6('0x6')]('defaultuser',_0x2a3a62);},'comment':_0xd3c6('0x7')},'fullname':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':![],'set':function(_0x438b25){this[_0xd3c6('0x6')](_0xd3c6('0x8'),_0x438b25);this[_0xd3c6('0x6')]('callerid',util['format'](_0xd3c6('0x9'),_0x438b25,this[_0xd3c6('0xa')](_0xd3c6('0xb'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x3c9df8){if(_0x3c9df8){this['setDataValue']('email',_0x3c9df8[_0xd3c6('0xc')]());}}},'role':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0xe'),_0xd3c6('0xf'),_0xd3c6('0x10'),_0xd3c6('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xd3c6('0x4')],'defaultValue':_0xd3c6('0x12')},'internal':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':![],'unique':_0xd3c6('0xb'),'set':function(_0x5e1c57){this[_0xd3c6('0x6')](_0xd3c6('0xb'),_0x5e1c57);this[_0xd3c6('0x6')](_0xd3c6('0x14'),_0x5e1c57);this[_0xd3c6('0x6')](_0xd3c6('0x15'),util[_0xd3c6('0x16')](_0xd3c6('0x9'),this[_0xd3c6('0xa')](_0xd3c6('0x8')),_0x5e1c57));}},'salt':{'type':Sequelize[_0xd3c6('0x4')]},'phone':{'type':Sequelize[_0xd3c6('0x4')]},'mobile':{'type':Sequelize[_0xd3c6('0x4')]},'address':{'type':Sequelize[_0xd3c6('0x4')]},'zipcode':{'type':Sequelize[_0xd3c6('0x4')]},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xd3c6('0x4')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0xd3c6('0x18')},'lastPauseAt':{'type':Sequelize[_0xd3c6('0x19')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xd3c6('0x13')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xd3c6('0x13')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xd3c6('0x13')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xd3c6('0x13')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xd3c6('0x13')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xd3c6('0x13')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0xd3c6('0x13')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x1a'),_0xd3c6('0xf'),_0xd3c6('0x1b')),'allowNull':!![],'defaultValue':_0xd3c6('0x1a')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize['ENUM'](_0xd3c6('0x1c'),_0xd3c6('0x1d'),_0xd3c6('0x1e'),_0xd3c6('0x1f'),_0xd3c6('0x20'),_0xd3c6('0x21'),_0xd3c6('0x22'),_0xd3c6('0x23')),'allowNull':!![]},'deny':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![],'defaultValue':_0xd3c6('0x24'),'set':function(_0x320091){this[_0xd3c6('0x6')](_0xd3c6('0x25'),_0x320091?_0x320091['join'](','):null);},'get':function(){return this[_0xd3c6('0xa')](_0xd3c6('0x25'))?this[_0xd3c6('0xa')](_0xd3c6('0x25'))['split'](','):null;},'comment':_0xd3c6('0x26')},'dtmfmode':{'type':Sequelize[_0xd3c6('0xd')]('rfc2833',_0xd3c6('0x27'),_0xd3c6('0x28'),_0xd3c6('0x29'),_0xd3c6('0x2a')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no',_0xd3c6('0x2c'),_0xd3c6('0x2d'),_0xd3c6('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xd3c6('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x230d63){this['setDataValue'](_0xd3c6('0x2f'),_0x230d63?_0x230d63['join'](','):null);},'get':function(){return this[_0xd3c6('0xa')](_0xd3c6('0x2f'))?this[_0xd3c6('0xa')](_0xd3c6('0x2f'))[_0xd3c6('0x30')](','):null;},'comment':_0xd3c6('0x31')},'callgroup':{'type':Sequelize[_0xd3c6('0x4')]},'namedcallgroup':{'type':Sequelize[_0xd3c6('0x4')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xd3c6('0x4')]},'language':{'type':Sequelize[_0xd3c6('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xd3c6('0x4')]},'disallow':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':![],'defaultValue':_0xd3c6('0x32')},'allow':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':![],'defaultValue':_0xd3c6('0x33'),'set':function(_0x1a1b52){this[_0xd3c6('0x6')](_0xd3c6('0x34'),_0x1a1b52?_0x1a1b52['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xd3c6('0x34'))?this[_0xd3c6('0xa')](_0xd3c6('0x34'))[_0xd3c6('0x30')](';'):null;},'comment':_0xd3c6('0x35')},'autoframing':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![],'set':function(_0x42abec){this[_0xd3c6('0x6')](_0xd3c6('0x36'),_0x42abec?_0x42abec['join'](','):null);},'get':function(){return this[_0xd3c6('0xa')](_0xd3c6('0x36'))?this[_0xd3c6('0xa')](_0xd3c6('0x36'))[_0xd3c6('0x30')](','):null;},'comment':_0xd3c6('0x37')},'trustrpid':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xd3c6('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no',_0xd3c6('0x38')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xd3c6('0xd')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![],'defaultValue':_0xd3c6('0x39')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![],'defaultValue':_0xd3c6('0x2b')},'busylevel':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no',_0xd3c6('0x3a')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xd3c6('0xd')]('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x3b'),_0xd3c6('0x3c'),_0xd3c6('0x3d')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x3e'),_0xd3c6('0x3f')),'allowNull':!![],'defaultValue':_0xd3c6('0x3f')},'t38pt_usertpsource':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xd3c6('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0xd3c6('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xd3c6('0xd')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no','fingerprint',_0xd3c6('0x40')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xd3c6('0x13')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x41'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xd3c6('0xd')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xd3c6('0xd')](_0xd3c6('0x2b'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xd3c6('0x2b'),'no',_0xd3c6('0x2c'),_0xd3c6('0x2d'),_0xd3c6('0x42')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xd3c6('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0xd3c6('0x19')]},'passwordResetAt':{'type':Sequelize[_0xd3c6('0x19')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0xd3c6('0x13')],'defaultValue':0x0,'set':function(_0x3d8226){this[_0xd3c6('0x6')](_0xd3c6('0x43'),_0x3d8226);var _0x20d0ea=this[_0xd3c6('0x44')]({'plain':!![]});switch(_0x3d8226){case 0x0:case 0x1:var _0x24e244=_0x20d0ea[_0xd3c6('0x25')]?_[_0xd3c6('0x45')](_0x20d0ea[_0xd3c6('0x25')])?_0x20d0ea['transport'][_0xd3c6('0x46')]():_0x20d0ea[_0xd3c6('0x25')]:_0xd3c6('0x24');if(_0x24e244===_0xd3c6('0x47')){_0x24e244=_0xd3c6('0x24');}this[_0xd3c6('0x6')]('transport',_0x24e244);this[_0xd3c6('0x6')](_0xd3c6('0x48'),'no');this['setDataValue'](_0xd3c6('0x49'),null);this['setDataValue'](_0xd3c6('0x4a'),null);this[_0xd3c6('0x6')](_0xd3c6('0x4b'),null);this['setDataValue']('dtlsenable',null);this['setDataValue'](_0xd3c6('0x4c'),null);this[_0xd3c6('0x6')](_0xd3c6('0x4d'),null);this[_0xd3c6('0x6')](_0xd3c6('0x4e'),null);this[_0xd3c6('0x6')](_0xd3c6('0x4f'),null);this[_0xd3c6('0x6')](_0xd3c6('0x50'),'no');break;case 0x2:this[_0xd3c6('0x6')](_0xd3c6('0x25'),_0xd3c6('0x47'));this['setDataValue']('encryption',_0xd3c6('0x2b'));this[_0xd3c6('0x6')](_0xd3c6('0x49'),_0xd3c6('0x2b'));this['setDataValue'](_0xd3c6('0x4a'),_0xd3c6('0x2b'));this[_0xd3c6('0x6')](_0xd3c6('0x4b'),_0xd3c6('0x2b'));this[_0xd3c6('0x6')](_0xd3c6('0x51'),_0xd3c6('0x2b'));this[_0xd3c6('0x6')](_0xd3c6('0x4c'),'no');this[_0xd3c6('0x6')](_0xd3c6('0x4d'),_0xd3c6('0x52'));this[_0xd3c6('0x6')](_0xd3c6('0x4e'),_0x20d0ea[_0xd3c6('0x4e')]||_0xd3c6('0x53'));this[_0xd3c6('0x6')]('dtlsprivatekey',_0x20d0ea[_0xd3c6('0x4f')]||_0xd3c6('0x54'));this[_0xd3c6('0x6')](_0xd3c6('0x50'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0xd3c6('0x55')],'set':function(_0x26c5f6){this['setDataValue'](_0xd3c6('0x56'),_0x26c5f6?_0x26c5f6[_0xd3c6('0x46')](','):[]);},'get':function(){return this[_0xd3c6('0xa')](_0xd3c6('0x56'))?_[_0xd3c6('0x57')](this[_0xd3c6('0xa')](_0xd3c6('0x56'))[_0xd3c6('0x30')](','),function(_0x2821d0){return parseInt(_0x2821d0,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xd3c6('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xd3c6('0x4')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xd3c6('0x13')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xd3c6('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xd3c6('0xd')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xd3c6('0x58')],'get':function(){return this['getDataValue'](_0xd3c6('0x59'))?this[_0xd3c6('0xa')](_0xd3c6('0x59')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0xd3c6('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xd3c6('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![],'set':function(_0x439b21){if(typeof _0x439b21===_0xd3c6('0x5a')){var _0x2c5088=_0x439b21==='1'?!![]:_0x439b21==='0'?![]:_0x439b21==='true'?!![]:_0x439b21===_0xd3c6('0x5b')?![]:![];this[_0xd3c6('0x6')](_0xd3c6('0x5c'),_0x2c5088);}else{this[_0xd3c6('0x6')](_0xd3c6('0x5c'),_0x439b21);}}},'blocked':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![],'set':function(_0x3dfc0f){this[_0xd3c6('0x6')](_0xd3c6('0x5d'),_0x3dfc0f);if(_0x3dfc0f===!![]){this[_0xd3c6('0x6')](_0xd3c6('0x5e'),moment());this[_0xd3c6('0x6')](_0xd3c6('0x5f'),0x0);}else{this[_0xd3c6('0x6')](_0xd3c6('0x5e'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xd3c6('0x13')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xd3c6('0x13')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0xd3c6('0x17')],'defaultValue':![]}};
\ No newline at end of file
+var _0x292e=['encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlscertfile','dtlsprivatekey','rtcp_mux','dtlssetup','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','lodash','name','setDataValue','defaultuser','STRING','fullname','callerid','getDataValue','internal','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','\x22%s\x22\x20<%s>','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','auto','yes','update','outgoing','force_rport,comedia','nat','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','always','accept','originate','uac','uas','fingerprint','active','update,nonat','TEXT','get','isArray','wss'];(function(_0x474035,_0x41e639){var _0x1b58e0=function(_0x91b15c){while(--_0x91b15c){_0x474035['push'](_0x474035['shift']());}};_0x1b58e0(++_0x41e639);}(_0x292e,0xcb));var _0xe292=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x292e[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require(_0xe292('0x0'));var moment=require(_0xe292('0x1'));var util=require(_0xe292('0x2'));var _=require(_0xe292('0x3'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe292('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x343aee){this[_0xe292('0x5')](_0xe292('0x4'),_0x343aee);this['setDataValue'](_0xe292('0x6'),_0x343aee);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0xe292('0x7')],'allowNull':![],'set':function(_0x3de36e){this[_0xe292('0x5')](_0xe292('0x8'),_0x3de36e);this[_0xe292('0x5')](_0xe292('0x9'),util['format']('\x22%s\x22\x20<%s>',_0x3de36e,this[_0xe292('0xa')](_0xe292('0xb'))));}},'alias':{'type':Sequelize[_0xe292('0x7')]},'email':{'type':Sequelize[_0xe292('0x7')],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0xaccb84){if(_0xaccb84){this[_0xe292('0x5')]('email',_0xaccb84[_0xe292('0xc')]());}}},'role':{'type':Sequelize[_0xe292('0xd')](_0xe292('0xe'),_0xe292('0xf'),_0xe292('0x10'),_0xe292('0x11')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xe292('0x7')],'defaultValue':_0xe292('0x12')},'internal':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':![],'unique':_0xe292('0xb'),'set':function(_0x1df3da){this[_0xe292('0x5')](_0xe292('0xb'),_0x1df3da);this['setDataValue'](_0xe292('0x14'),_0x1df3da);this[_0xe292('0x5')]('callerid',util['format'](_0xe292('0x15'),this[_0xe292('0xa')](_0xe292('0x8')),_0x1df3da));}},'salt':{'type':Sequelize[_0xe292('0x7')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xe292('0x7')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0xe292('0x7')]},'userpic':{'type':Sequelize[_0xe292('0x7')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xe292('0x7')]},'online':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xe292('0x17')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xe292('0x7')],'defaultValue':_0xe292('0x18')},'lastPauseAt':{'type':Sequelize[_0xe292('0x17')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xe292('0x13')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xe292('0x13')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xe292('0x13')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xe292('0x13')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xe292('0x13')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xe292('0x16')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xe292('0x13')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xe292('0x13')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xe292('0x13')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'host':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![],'defaultValue':_0xe292('0x19')},'ipaddr':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'port':{'type':Sequelize[_0xe292('0x13')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xe292('0xd')]('friend',_0xe292('0xf'),'peer'),'allowNull':!![],'defaultValue':_0xe292('0x1a')},'context':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![],'defaultValue':_0xe292('0x1b')},'callingpres':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x1c'),_0xe292('0x1d'),_0xe292('0x1e'),'ALLOWED',_0xe292('0x1f'),_0xe292('0x20'),_0xe292('0x21'),_0xe292('0x22')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'secret':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![],'defaultValue':_0xe292('0x23'),'set':function(_0x4fc7f3){this[_0xe292('0x5')](_0xe292('0x24'),_0x4fc7f3?_0x4fc7f3['join'](','):null);},'get':function(){return this['getDataValue'](_0xe292('0x24'))?this[_0xe292('0xa')]('transport')['split'](','):null;},'comment':_0xe292('0x25')},'dtmfmode':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x26'),_0xe292('0x27'),_0xe292('0x28'),'inband',_0xe292('0x29')),'allowNull':!![],'defaultValue':_0xe292('0x26')},'directmedia':{'type':Sequelize['ENUM'](_0xe292('0x2a'),'no','nonat',_0xe292('0x2b'),_0xe292('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xe292('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![],'defaultValue':_0xe292('0x2d'),'set':function(_0x3cc0c7){this[_0xe292('0x5')](_0xe292('0x2e'),_0x3cc0c7?_0x3cc0c7[_0xe292('0x2f')](','):null);},'get':function(){return this[_0xe292('0xa')](_0xe292('0x2e'))?this[_0xe292('0xa')](_0xe292('0x2e'))[_0xe292('0x30')](','):null;},'comment':_0xe292('0x31')},'callgroup':{'type':Sequelize[_0xe292('0x7')]},'namedcallgroup':{'type':Sequelize[_0xe292('0x7')]},'pickupgroup':{'type':Sequelize[_0xe292('0x7')]},'namedpickupgroup':{'type':Sequelize[_0xe292('0x7')]},'language':{'type':Sequelize[_0xe292('0x7')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xe292('0x7')],'allowNull':![],'defaultValue':_0xe292('0x32')},'allow':{'type':Sequelize[_0xe292('0x7')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x5e51cd){this[_0xe292('0x5')](_0xe292('0x33'),_0x5e51cd?_0x5e51cd[_0xe292('0x2f')](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xe292('0x33'))?this[_0xe292('0xa')](_0xe292('0x33'))[_0xe292('0x30')](';'):null;},'comment':_0xe292('0x34')},'autoframing':{'type':Sequelize[_0xe292('0xd')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![],'set':function(_0x56a909){this[_0xe292('0x5')](_0xe292('0x35'),_0x56a909?_0x56a909['join'](','):null);},'get':function(){return this[_0xe292('0xa')]('insecure')?this['getDataValue'](_0xe292('0x35'))[_0xe292('0x30')](','):null;},'comment':_0xe292('0x36')},'trustrpid':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xe292('0xd')]('yes','no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xe292('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xe292('0x2a'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'template':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xe292('0xd')]('yes','no',_0xe292('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x38'),'refuse',_0xe292('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x3a'),'uas'),'allowNull':!![],'defaultValue':_0xe292('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0xe292('0x2a'),'no'),'allowNull':!![],'defaultValue':_0xe292('0x2a')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xe292('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xe292('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0xe292('0x2a'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x2a'),'no',_0xe292('0x3c'),'certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xe292('0xd')](_0xe292('0x3d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xe292('0x13')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xe292('0xd')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xe292('0xd')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xe292('0xd')]('yes','no','nonat',_0xe292('0x2b'),_0xe292('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xe292('0x7')]},'resetPasswordExpires':{'type':Sequelize[_0xe292('0x17')]},'passwordResetAt':{'type':Sequelize[_0xe292('0x17')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xe292('0x3f')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x57062c){this[_0xe292('0x5')]('showWebBar',_0x57062c);var _0x38732c=this[_0xe292('0x40')]({'plain':!![]});switch(_0x57062c){case 0x0:case 0x1:var _0x7a3bd6=_0x38732c[_0xe292('0x24')]?_[_0xe292('0x41')](_0x38732c['transport'])?_0x38732c[_0xe292('0x24')][_0xe292('0x2f')]():_0x38732c[_0xe292('0x24')]:'udp';if(_0x7a3bd6===_0xe292('0x42')){_0x7a3bd6=_0xe292('0x23');}this[_0xe292('0x5')]('transport',_0x7a3bd6);this[_0xe292('0x5')](_0xe292('0x43'),'no');this[_0xe292('0x5')](_0xe292('0x44'),null);this[_0xe292('0x5')](_0xe292('0x45'),null);this[_0xe292('0x5')](_0xe292('0x46'),null);this['setDataValue'](_0xe292('0x47'),null);this[_0xe292('0x5')](_0xe292('0x48'),null);this[_0xe292('0x5')]('dtlssetup',null);this['setDataValue'](_0xe292('0x49'),null);this[_0xe292('0x5')](_0xe292('0x4a'),null);this['setDataValue'](_0xe292('0x4b'),'no');break;case 0x2:this[_0xe292('0x5')](_0xe292('0x24'),_0xe292('0x42'));this['setDataValue']('encryption','yes');this[_0xe292('0x5')]('avpf','yes');this['setDataValue']('force_avp',_0xe292('0x2a'));this['setDataValue'](_0xe292('0x46'),_0xe292('0x2a'));this[_0xe292('0x5')](_0xe292('0x47'),_0xe292('0x2a'));this[_0xe292('0x5')](_0xe292('0x48'),'no');this[_0xe292('0x5')](_0xe292('0x4c'),'actpass');this[_0xe292('0x5')](_0xe292('0x49'),_0x38732c[_0xe292('0x49')]||_0xe292('0x4d'));this[_0xe292('0x5')](_0xe292('0x4a'),_0x38732c[_0xe292('0x4a')]||_0xe292('0x4e'));this[_0xe292('0x5')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0xe292('0x3f')],'set':function(_0x7bd0cd){this[_0xe292('0x5')](_0xe292('0x4f'),_0x7bd0cd?_0x7bd0cd[_0xe292('0x2f')](','):[]);},'get':function(){return this['getDataValue'](_0xe292('0x4f'))?_[_0xe292('0x50')](this[_0xe292('0xa')](_0xe292('0x4f'))[_0xe292('0x30')](','),function(_0x27269a){return parseInt(_0x27269a,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0xe292('0x7')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xe292('0x16')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xe292('0x16')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xe292('0x7')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xe292('0x13')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0xe292('0x2a'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xe292('0x16')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xe292('0x7')]},'phoneBarEnableJaws':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xe292('0x51')],'get':function(){return this['getDataValue'](_0xe292('0x52'))?this['getDataValue'](_0xe292('0x52')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xe292('0x7')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x5066ca){if(typeof _0x5066ca===_0xe292('0x53')){var _0x47a6e8=_0x5066ca==='1'?!![]:_0x5066ca==='0'?![]:_0x5066ca===_0xe292('0x54')?!![]:_0x5066ca===_0xe292('0x55')?![]:![];this[_0xe292('0x5')](_0xe292('0x56'),_0x47a6e8);}else{this[_0xe292('0x5')](_0xe292('0x56'),_0x5066ca);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x33035f){this[_0xe292('0x5')](_0xe292('0x57'),_0x33035f);if(_0x33035f===!![]){this['setDataValue'](_0xe292('0x58'),moment());this[_0xe292('0x5')](_0xe292('0x59'),0x0);}else{this[_0xe292('0x5')](_0xe292('0x58'),null);}}},'blockedAt':{'type':Sequelize[_0xe292('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xe292('0x13')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xe292('0x16')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xe292('0x16')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe292('0x16')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0xe292('0x16')],'defaultValue':![]}};
\ No newline at end of file
index 5cd2323..764a185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','resolve','queues','isEmpty','teams','col','toString','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','offline','pause','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','field','ui.','InteractionId','OpenTabs','moment','bluebird','util','path','lodash','squel','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','register','redis','defaults','localhost','client','http','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','get','role','admin','user','agent','telephone','filter','ignore','map','value','includes','find','name','destroy','then','sendStatus','stack','send','index','User','rawAttributes','fieldName','password','salt','getOptions','where','include','attributes','push','findAll','rows','openTabs','true','chat','dataValues','sms','fax','mail','show','params','differenceBy','keys','query','filters','intersection','model','fields','length','includeAll','merge','openchannel','whatsapp','all','update','body','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','mailbox','VoiceMail','fullname','permissions','102','110','105','108','109','100','115','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','create','UserProfileSection','Telephones','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','Agents','autoAssociation','compact','UserProfileResource','changePassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','oldPassword','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','enforcePasswordHistory','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','spread','emit','VoiceQueue','format','each','upsert','remove','isArray','QueueId','Queue:remove','voice','UserVoiceQueueRt','addAvatar','userpic','file','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','getContacts','CmContact','order','sort','pick','options','hasOwnProperty','List','Tag','Tags','tag','nolimit','getQueues','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','SIP/%s','intrf','user:%s','x-forwarded-for','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','isMiddleware','logout','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','openchannelPause','smsPause','whatsapppause','lastPauseAt','manual','%s%s','Pause','Team','getTeams','addTeams','setDataValue','Voice','Chat','getMailQueues','Mail','getSmsQueues','Sms','Whatsapp','getOpenchannelQueues','flatten','addAgent','getDataValue','Queue:save','TeamVoicePrefix','UserVoicePrefix','getWhatsappQueues','getFaxQueues','Fax','Openchannel','transaction','VoicePrefixId','getLists','CmList','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','CmHopper','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$overlap','$any','lastName'];(function(_0x32cf9a,_0x1878d5){var _0x27367e=function(_0x155f78){while(--_0x155f78){_0x32cf9a['push'](_0x32cf9a['shift']());}};_0x27367e(++_0x1878d5);}(_0xc4aa,0x1b7));var _0xac4a=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xc4aa[_0xa148b7];return _0x51efd3;};'use strict';var moment=require(_0xac4a('0x0'));var BPromise=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var path=require(_0xac4a('0x3'));var fs=require('fs');var _=require(_0xac4a('0x4'));var squel=require(_0xac4a('0x5'));var jayson=require('jayson/promise');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xac4a('0x6'));var logger=require(_0xac4a('0x7'))(_0xac4a('0x8'));var utils=require(_0xac4a('0x9'));var config=require(_0xac4a('0xa'));var licenseUtil=require(_0xac4a('0xb'));var db=require(_0xac4a('0xc'))['db'];var socket=require(_0xac4a('0xd'))(new Redis(config['redis']));require('./user.socket')[_0xac4a('0xe')](socket);config[_0xac4a('0xf')]=_[_0xac4a('0x10')](config['redis'],{'host':_0xac4a('0x11'),'port':0x18eb});var client=jayson[_0xac4a('0x12')][_0xac4a('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x4d4acc,_0x30135d,_0x488e3c,_0x2f062c){return new BPromise(function(_0x4855b6,_0x333ca5){var _0x2a0776=_0x2f062c||client;return _0x2a0776[_0xac4a('0x14')](_0x4d4acc,_0x488e3c)['then'](function(_0x21a79){logger[_0xac4a('0x15')](_0xac4a('0x16'),_0x30135d,_0xac4a('0x17'));logger[_0xac4a('0x18')](_0xac4a('0x19'),_0x30135d,_0xac4a('0x17'),JSON[_0xac4a('0x1a')](_0x21a79));if(_0x21a79[_0xac4a('0x1b')]){if(_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1c')]===0x1f4){logger[_0xac4a('0x1b')]('User,\x20%s,\x20%s',_0x30135d,_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1d')]);return _0x333ca5(_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1d')]);}logger[_0xac4a('0x1b')](_0xac4a('0x16'),_0x30135d,_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1d')]);return _0x4855b6(_0x21a79['error']['message']);}else{logger[_0xac4a('0x15')](_0xac4a('0x16'),_0x30135d,_0xac4a('0x17'));_0x4855b6(_0x21a79['result'][_0xac4a('0x1d')]);}})[_0xac4a('0x1e')](function(_0x3752e4){logger[_0xac4a('0x1b')](_0xac4a('0x16'),_0x30135d,_0x3752e4);_0x333ca5(_0x3752e4);});});}function respondWithStatusCode(_0x3e829c,_0xe38996){_0xe38996=_0xe38996||0xcc;return function(_0x3ca790){if(_0x3ca790){return _0x3e829c['sendStatus'](_0xe38996);}return _0x3e829c[_0xac4a('0x1f')](_0xe38996)[_0xac4a('0x20')]();};}function respondWithResult(_0x599787,_0x3d7ce0){_0x3d7ce0=_0x3d7ce0||0xc8;return function(_0x4169c0){if(_0x4169c0){return _0x599787[_0xac4a('0x1f')](_0x3d7ce0)[_0xac4a('0x21')](_0x4169c0);}};}function respondWithFilteredResult(_0x4d2d6c,_0x1b7998){return function(_0x2503d8){if(_0x2503d8){var _0x15435c=typeof _0x1b7998[_0xac4a('0x22')]===_0xac4a('0x23')&&typeof _0x1b7998[_0xac4a('0x24')]===_0xac4a('0x23');var _0x36054a=_0x2503d8[_0xac4a('0x25')];var _0x3bc318=_0x15435c?0x0:_0x1b7998[_0xac4a('0x22')];var _0x215a31=_0x15435c?_0x2503d8[_0xac4a('0x25')]:_0x1b7998[_0xac4a('0x22')]+_0x1b7998[_0xac4a('0x24')];var _0x20202c;if(_0x215a31>=_0x36054a){_0x215a31=_0x36054a;_0x20202c=0xc8;}else{_0x20202c=0xce;}_0x4d2d6c['status'](_0x20202c);return _0x4d2d6c[_0xac4a('0x26')](_0xac4a('0x27'),_0x3bc318+'-'+_0x215a31+'/'+_0x36054a)[_0xac4a('0x21')](_0x2503d8);}return null;};}function saveUpdates(_0x2772fe){return function(_0x116700){if(_0x116700){return _0x116700['update'](_0x2772fe)['then'](function(_0xdb7e){return _0xdb7e;});}return null;};}function removeEntity(_0x7a948b){return function(_0x1f12d5){if(_0x1f12d5){return _0x1f12d5['destroy']()['then'](function(){var _0x355755=_0x1f12d5[_0xac4a('0x28')]({'plain':!![]});if(_0x355755[_0xac4a('0x29')]===_0xac4a('0x2a'))return;var _0x17118e=[{'name':'Users','value':_0xac4a('0x2b'),'ignore':!![]},{'name':'Agents','value':_0xac4a('0x2c'),'ignore':![]},{'name':'Telephones','value':_0xac4a('0x2d'),'ignore':![]}];var _0xfbe355=_(_0x17118e)[_0xac4a('0x2e')](_0xac4a('0x2f'))[_0xac4a('0x30')](_0xac4a('0x31'))[_0xac4a('0x31')]();if(_[_0xac4a('0x32')](_0xfbe355,_0x355755[_0xac4a('0x29')])){return;}var _0xfd7c16=_[_0xac4a('0x33')](_0x17118e,[_0xac4a('0x31'),_0x355755[_0xac4a('0x29')]])[_0xac4a('0x34')];return db['UserProfileResource'][_0xac4a('0x35')]({'where':{'type':_0xfd7c16,'resourceId':_0x355755['id']}})[_0xac4a('0x36')](function(){return _0x1f12d5;});})['then'](function(){_0x7a948b[_0xac4a('0x1f')](0xcc)[_0xac4a('0x20')]();});}};}function handleEntityNotFound(_0x565164){return function(_0x58804b){if(!_0x58804b){_0x565164[_0xac4a('0x37')](0x194);}return _0x58804b;};}function handleError(_0x1ba096,_0x1b42b6){_0x1b42b6=_0x1b42b6||0x1f4;return function(_0x3de9e2){logger['error'](_0x3de9e2[_0xac4a('0x38')]);if(_0x3de9e2[_0xac4a('0x34')]){delete _0x3de9e2['name'];}_0x1ba096[_0xac4a('0x1f')](_0x1b42b6)[_0xac4a('0x39')](_0x3de9e2);};}exports[_0xac4a('0x3a')]=function(_0x5f0eb8,_0x121328){var _0x357f06={},_0x1b5427={'count':0x0,'rows':[]};var _0x4e0445=_(db[_0xac4a('0x3b')][_0xac4a('0x3c')])['map'](function(_0x59bebf){return{'name':_0x59bebf[_0xac4a('0x3d')],'type':_0x59bebf['type']['key']};})['filter'](function(_0x4fee3a){return!_[_0xac4a('0x32')]([_0xac4a('0x3e'),_0xac4a('0x3f')],_0x4fee3a[_0xac4a('0x34')]);})[_0xac4a('0x31')]();_0x357f06=qs[_0xac4a('0x40')](_0x4e0445,_0x5f0eb8);var _0x4220e2={'where':_0x357f06[_0xac4a('0x41')]};return db[_0xac4a('0x3b')][_0xac4a('0x25')](_0x4220e2)[_0xac4a('0x36')](function(_0x1c2a87){_0x1b5427['count']=_0x1c2a87;if(_0x5f0eb8['query']['includeAll']){_0x357f06[_0xac4a('0x42')]=[{'all':!![]}];}if(!_[_0xac4a('0x32')](_0x357f06[_0xac4a('0x43')],'id')){_0x357f06[_0xac4a('0x43')][_0xac4a('0x44')]('id');}return db[_0xac4a('0x3b')][_0xac4a('0x45')](_0x357f06);})[_0xac4a('0x36')](function(_0x3e9973){_0x1b5427[_0xac4a('0x46')]=_0x3e9973;if(_0x5f0eb8['query'][_0xac4a('0x47')]===_0xac4a('0x48')){var _0x3d9595=[];for(var _0x3f24a1=0x0;_0x3f24a1<_0x1b5427[_0xac4a('0x46')]['length'];_0x3f24a1++){_0x3d9595[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x49'),_0x1b5427['rows'][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595['push'](get_open_tabs(_0xac4a('0x4b'),_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4c'),_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4d'),_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs('openchannel',_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs('whatsapp',_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));}return BPromise['all'](_0x3d9595)[_0xac4a('0x36')](function(_0x5a7f6e){return _0x1b5427;});}else{return _0x1b5427;}})[_0xac4a('0x36')](respondWithFilteredResult(_0x121328,_0x357f06))[_0xac4a('0x1e')](handleError(_0x121328,null));};exports[_0xac4a('0x4e')]=function(_0x5e3581,_0x588374){var _0x42fd9d={'raw':![],'where':{'id':_0x5e3581[_0xac4a('0x4f')]['id']}},_0x4aaeff={};_0x4aaeff['model']=_[_0xac4a('0x50')](_['keys'](db[_0xac4a('0x3b')][_0xac4a('0x3c')]),[_0xac4a('0x3e'),_0xac4a('0x3f')]);_0x4aaeff['query']=_[_0xac4a('0x51')](_0x5e3581[_0xac4a('0x52')]);_0x4aaeff[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x4aaeff[_0xac4a('0x55')],_0x4aaeff[_0xac4a('0x52')]);_0x42fd9d[_0xac4a('0x43')]=_['intersection'](_0x4aaeff[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x5e3581['query'][_0xac4a('0x56')]));_0x42fd9d[_0xac4a('0x43')]=_0x42fd9d[_0xac4a('0x43')][_0xac4a('0x57')]?_0x42fd9d['attributes']:_0x4aaeff[_0xac4a('0x55')];if(_0x5e3581[_0xac4a('0x52')][_0xac4a('0x58')]){_0x42fd9d[_0xac4a('0x42')]=[{'all':!![]}];}_0x42fd9d=_[_0xac4a('0x59')]({},_0x42fd9d,_0x5e3581['options']);if(!_[_0xac4a('0x32')](_0x42fd9d['attributes'],'id')){_0x42fd9d[_0xac4a('0x43')][_0xac4a('0x44')]('id');}return db['User']['find'](_0x42fd9d)[_0xac4a('0x36')](handleEntityNotFound(_0x588374,null))[_0xac4a('0x36')](function(_0x4d448f){var _0x18d29c=[];values=_0x4d448f;if(_0x5e3581[_0xac4a('0x52')][_0xac4a('0x47')]===_0xac4a('0x48')){_0x18d29c['push'](get_open_tabs(_0xac4a('0x49'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4b'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x5a'),_0x4d448f['dataValues']));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x5b'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4c'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4d'),_0x4d448f[_0xac4a('0x4a')]));return BPromise[_0xac4a('0x5c')](_0x18d29c);}else{return values;}})[_0xac4a('0x36')](function(_0x38dd4f){return values;})[_0xac4a('0x36')](respondWithResult(_0x588374,null))[_0xac4a('0x1e')](handleError(_0x588374,null));};exports[_0xac4a('0x5d')]=function(_0x11c753,_0x492aae){if(_0x11c753[_0xac4a('0x5e')]['id']){delete _0x11c753['body']['id'];}delete _0x11c753[_0xac4a('0x5e')]['role'];return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x11c753[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x492aae,null))['then'](saveUpdates(_0x11c753[_0xac4a('0x5e')],null))[_0xac4a('0x36')](respondWithResult(_0x492aae,null))[_0xac4a('0x1e')](handleError(_0x492aae,null));};exports[_0xac4a('0x5f')]=function(_0x2f9940,_0xb7b884){return db['User'][_0xac4a('0x5f')]()['then'](respondWithResult(_0xb7b884,null))[_0xac4a('0x1e')](handleError(_0xb7b884,null));};exports['addContacts']=function(_0x347880,_0x19ce2c){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x347880[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x19ce2c,null))[_0xac4a('0x36')](function(_0xe3e375){if(_0xe3e375){return _0xe3e375[_0xac4a('0x60')](_0x347880[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x347880[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x19ce2c,null))[_0xac4a('0x1e')](handleError(_0x19ce2c,null));};function validateUser(_0x38cb4f){return new BPromise(function(_0x4a0156,_0xa90d71){if(_0x38cb4f[_0xac4a('0x63')])return _0x4a0156(_0x38cb4f);return db['Setting'][_0xac4a('0x64')](0x1)[_0xac4a('0x36')](function(_0x2d24c7){if(_0x2d24c7[_0xac4a('0x65')])authService[_0xac4a('0x66')](_0x38cb4f['password']);db['User'][_0xac4a('0x67')](_0xac4a('0x63'))[_0xac4a('0x36')](function(_0x148288){if(_[_0xac4a('0x68')](_0x148288)){_0x38cb4f[_0xac4a('0x63')]=_0x2d24c7[_0xac4a('0x69')]||0x1;return;}if(_[_0xac4a('0x68')](_0x2d24c7[_0xac4a('0x69')])||_0x2d24c7[_0xac4a('0x69')]===_0x148288){_0x38cb4f[_0xac4a('0x63')]=_0x148288+0x1;return;}if(_0x2d24c7['min_internal']>_0x148288){_0x38cb4f['internal']=_0x2d24c7[_0xac4a('0x69')];return;}return db[_0xac4a('0x6a')][_0xac4a('0x52')](_0xac4a('0x6b'),{'type':db[_0xac4a('0x6a')][_0xac4a('0x6c')][_0xac4a('0x6d')]})[_0xac4a('0x36')](function(_0x453d62){if(_0x453d62&&_0x453d62[_0xac4a('0x57')]){for(var _0xb09b89=0x0,_0xb12cc5=_0x453d62['length'];_0xb09b89<_0xb12cc5&&_[_0xac4a('0x68')](_0x38cb4f[_0xac4a('0x63')]);_0xb09b89++){if(_0x2d24c7[_0xac4a('0x69')]<=_0x453d62[_0xb09b89][_0xac4a('0x6e')]){_0x38cb4f['internal']=_0x453d62[_0xb09b89][_0xac4a('0x6e')];}else if(_0x2d24c7['min_internal']>_0x453d62[_0xb09b89][_0xac4a('0x6e')]&&_0x2d24c7[_0xac4a('0x69')]<=_0x453d62[_0xb09b89]['to']){_0x38cb4f['internal']=_0x2d24c7['min_internal'];}}}if(_[_0xac4a('0x68')](_0x38cb4f[_0xac4a('0x63')])){_0x38cb4f[_0xac4a('0x63')]=_0x148288+0x1;}return _0x4a0156(_0x38cb4f);});});})['catch'](function(_0x3a0cf8){_0xa90d71(_0x3a0cf8);});});}function updateUser(_0x4d067d){return new BPromise(function(_0x114b11,_0x4a88c7){try{if(_0x4d067d['voicemail']){_0x4d067d[_0xac4a('0x6f')]=_0x4d067d['internal'];_0x4d067d[_0xac4a('0x70')]={'mailbox':_0x4d067d['internal'],'password':_0x4d067d[_0xac4a('0x3e')],'fullname':_0x4d067d[_0xac4a('0x71')],'email':_0x4d067d['email']};}if(_0x4d067d[_0xac4a('0x29')]==='agent'){if(!_0x4d067d[_0xac4a('0x72')])_0x4d067d[_0xac4a('0x72')]=['101',_0xac4a('0x73'),'103','113',_0xac4a('0x74'),'104',_0xac4a('0x75'),'106','107',_0xac4a('0x76'),_0xac4a('0x77'),_0xac4a('0x78'),'111','114',_0xac4a('0x79')];}_0x114b11(_0x4d067d);}catch(_0x9c0fa1){_0x4a88c7(_0x9c0fa1);}});}exports['create']=function(_0x4e93f5,_0x3824a2){if(_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x29')]===_0xac4a('0x2c'))throw new Error(_0xac4a('0x7a'));if(_0x4e93f5[_0xac4a('0x5e')][_0xac4a('0x29')]===_0xac4a('0x2b')&&_0x4e93f5[_0xac4a('0x2b')]['role']!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x7b'));}if(_0x4e93f5[_0xac4a('0x5e')]['role']===_0xac4a('0x2a')&&_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x29')]!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x7c'));}return licenseUtil['checkUserLimits']([_0x4e93f5[_0xac4a('0x5e')]])[_0xac4a('0x36')](function(){return validateUser(_0x4e93f5[_0xac4a('0x5e')]);})[_0xac4a('0x36')](function(_0x72c90c){return updateUser(_0x72c90c)[_0xac4a('0x36')](function(_0xd7bdd6){if(_0xd7bdd6['role']===_0xac4a('0x2a')){_0xd7bdd6[_0xac4a('0x7d')]=_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x7d')];delete _0xd7bdd6[_0xac4a('0x7e')];}return _0xd7bdd6;});})[_0xac4a('0x36')](function(_0x547eec){return db[_0xac4a('0x3b')][_0xac4a('0x7f')](_0x547eec,{'include':[{'model':db[_0xac4a('0x70')],'as':_0xac4a('0x70')}]});})['then'](function(_0x21a384){if(_0x4e93f5['body'][_0xac4a('0x29')]===_0xac4a('0x2b'))return _0x21a384;if(_0x4e93f5['user']['role']!==_0xac4a('0x2b'))return _0x21a384;return db[_0xac4a('0x80')][_0xac4a('0x33')]({'where':{'name':_0x21a384['role']===_0xac4a('0x2c')?'Agents':_0xac4a('0x81'),'userProfileId':_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x7e')]},'raw':!![]})[_0xac4a('0x36')](function(_0x2e2c92){if(!_0x2e2c92||_0x2e2c92['autoAssociation']!=0x0)return _0x21a384;return db['UserProfileResource'][_0xac4a('0x7f')]({'name':_0x21a384[_0xac4a('0x34')],'resourceId':_0x21a384['id'],'type':_0x2e2c92[_0xac4a('0x34')],'sectionId':_0x2e2c92['id']},{})[_0xac4a('0x36')](function(){return _0x21a384;});})[_0xac4a('0x1e')](function(_0x3c5bbc){logger[_0xac4a('0x1b')](_0xac4a('0x82'),_0x3c5bbc);throw _0x3c5bbc;});})['then'](respondWithResult(_0x3824a2,0xc9))['catch'](handleError(_0x3824a2,null));};exports[_0xac4a('0x83')]=function(_0x31cc9a,_0x247eee){var _0x950e60=_0x31cc9a[_0xac4a('0x5e')];var _0x2ea4a4=[];if(_0x31cc9a[_0xac4a('0x2b')][_0xac4a('0x29')]==='agent')throw new Error('Unauthorized');if(_[_0xac4a('0x84')](_0x950e60,[_0xac4a('0x29'),_0xac4a('0x2b')])&&_0x31cc9a[_0xac4a('0x2b')][_0xac4a('0x29')]!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x7b'));}if(_['some'](_0x950e60,[_0xac4a('0x29'),_0xac4a('0x2a')])&&_0x31cc9a[_0xac4a('0x2b')]['role']!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x85'));}return licenseUtil[_0xac4a('0x86')](_0x950e60)[_0xac4a('0x36')](function(){return validateUser(_0x950e60[0x0]);})[_0xac4a('0x36')](function(){for(var _0x27d023=0x1;_0x27d023<_0x950e60[_0xac4a('0x57')];_0x27d023++){var _0x2ef42a=_0x950e60[_0x27d023-0x1][_0xac4a('0x63')];if(!_0x950e60[_0x27d023]['internal'])_0x950e60[_0x27d023][_0xac4a('0x63')]=_0x2ef42a+0x1;_0x2ea4a4['push'](validateUser(_0x950e60[_0x27d023]));}return BPromise[_0xac4a('0x5c')](_0x2ea4a4);})[_0xac4a('0x36')](function(){_0x2ea4a4=[];for(var _0x3184b3=0x0;_0x3184b3<_0x950e60[_0xac4a('0x57')];_0x3184b3++){_0x2ea4a4[_0xac4a('0x44')](updateUser(_0x950e60[_0x3184b3]));}return BPromise[_0xac4a('0x5c')](_0x2ea4a4);})[_0xac4a('0x36')](function(){return BPromise['each'](_0x950e60,function(_0x2b883a){return db[_0xac4a('0x3b')][_0xac4a('0x7f')](_0x2b883a,{'include':[{'model':db[_0xac4a('0x70')],'as':_0xac4a('0x70')}]})['then'](function(_0x1b37d9){_0x2b883a['id']=_0x1b37d9['id'];return _0x2b883a;});});})[_0xac4a('0x36')](function(_0x4f2b19){if(_0x31cc9a['body'][_0xac4a('0x29')]===_0xac4a('0x2b'))return _0x4f2b19;if(_0x31cc9a['user'][_0xac4a('0x29')]!==_0xac4a('0x2b'))return _0x4f2b19;var _0x6afaba=_[_0xac4a('0x84')](_0x4f2b19,function(_0x31df2d){return _0x31df2d[_0xac4a('0x29')]==='agent'||_0x31df2d[_0xac4a('0x29')]===_0xac4a('0x2d');});if(!_0x6afaba)return _0x4f2b19;return db[_0xac4a('0x80')]['findAll']({'where':{'name':{'$or':[_0xac4a('0x87'),_0xac4a('0x81')]},'userProfileId':_0x31cc9a[_0xac4a('0x2b')][_0xac4a('0x7e')]},'raw':!![]})[_0xac4a('0x36')](function(_0x23d635){if(_['isEmpty'](_0x23d635)||!_[_0xac4a('0x84')](_0x23d635,[_0xac4a('0x88'),0x0]))return _0x4f2b19;_0x2ea4a4=[];var _0x5ab83b=_(_0x23d635)[_0xac4a('0x30')](function(_0x55054a){if(_0x55054a[_0xac4a('0x88')]===0x1)return;return _0x55054a[_0xac4a('0x34')]==='Agents'?_0xac4a('0x2c'):'telephone';})[_0xac4a('0x89')]()['value']();for(var _0x3c601e=0x0;_0x3c601e<_0x4f2b19[_0xac4a('0x57')];_0x3c601e++){if(!_[_0xac4a('0x32')](_0x5ab83b,_0x4f2b19[_0x3c601e][_0xac4a('0x29')]))return;var _0xc38492=_0x4f2b19[_0x3c601e][_0xac4a('0x29')]===_0xac4a('0x2c')?_0xac4a('0x87'):_0xac4a('0x81');_0x2ea4a4[_0xac4a('0x44')](db[_0xac4a('0x8a')][_0xac4a('0x7f')]({'name':_0x4f2b19[_0x3c601e][_0xac4a('0x34')],'resourceId':_0x4f2b19[_0x3c601e]['id'],'type':_0xc38492,'sectionId':_[_0xac4a('0x33')](_0x23d635,['name',_0xc38492])['id']},{}));}return BPromise[_0xac4a('0x5c')](_0x2ea4a4);});})[_0xac4a('0x36')](respondWithResult(_0x247eee,0xc9))['catch'](handleError(_0x247eee,null));};exports[_0xac4a('0x8b')]=function(_0x31d190,_0x1b10ad){if(_0x31d190[_0xac4a('0x5e')]['id']){delete _0x31d190[_0xac4a('0x5e')]['id'];}return db['User'][_0xac4a('0x33')]({'where':{'id':_0x31d190['params']['id']}})[_0xac4a('0x36')](function(_0x28ae76){if(!_0x28ae76)return null;if(_0x28ae76['id']===_0x31d190[_0xac4a('0x2b')]['id']){if(!_0x31d190[_0xac4a('0x5e')]['oldPassword']||!_0x31d190[_0xac4a('0x5e')]['newPassword']){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x8e'));}if(!_0x28ae76['authenticate'](_0x31d190[_0xac4a('0x5e')][_0xac4a('0x8f')])){throw new db[(_0xac4a('0x8c'))]['ValidationError'](_0xac4a('0x90'));}if(_0x31d190[_0xac4a('0x5e')][_0xac4a('0x8f')]===_0x31d190[_0xac4a('0x5e')][_0xac4a('0x91')]){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x92'));}}else if(_0x31d190['user'][_0xac4a('0x29')]==='admin'){if(!_0x31d190['body']['newPassword']){throw new db['Sequelize']['ValidationError'](_0xac4a('0x93'));}}else if(_0x31d190[_0xac4a('0x2b')][_0xac4a('0x29')]===_0xac4a('0x2b')){if(!_0x31d190[_0xac4a('0x5e')]['newPassword']){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x93'));}if(_0x28ae76[_0xac4a('0x29')]!==_0xac4a('0x2c')){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x7a'));}}else{throw new db['Sequelize'][(_0xac4a('0x8d'))](_0xac4a('0x7a'));}return _0x28ae76;})[_0xac4a('0x36')](handleEntityNotFound(_0x1b10ad,null))[_0xac4a('0x36')](function(_0x303d5d){return db[_0xac4a('0x94')][_0xac4a('0x95')]({'attributes':['id','securePassword','enforcePasswordHistory',_0xac4a('0x96')]})[_0xac4a('0x36')](function(_0x51993a){if(_0x51993a[_0xac4a('0x65')])authService[_0xac4a('0x66')](_0x31d190['body']['newPassword']);if(!_0x51993a[_0xac4a('0x97')]||!_0x303d5d[_0xac4a('0x98')])return _0x303d5d;authService[_0xac4a('0x99')](_0x31d190[_0xac4a('0x5e')][_0xac4a('0x91')],_0x303d5d['previousPasswords'],_0x51993a[_0xac4a('0x96')]);return _0x303d5d;})['then'](saveUpdates({'password':_0x31d190['body']['newPassword'],'passwordResetAt':_0x31d190[_0xac4a('0x2b')]['id']==_0x31d190[_0xac4a('0x4f')]['id']?moment():null,'previousPasswords':authService[_0xac4a('0x9a')](_0x31d190[_0xac4a('0x5e')][_0xac4a('0x91')],_0x303d5d[_0xac4a('0x98')])},null));})[_0xac4a('0x36')](respondWithResult(_0x1b10ad,null))[_0xac4a('0x1e')](handleError(_0x1b10ad,null));};exports['addQueues']=function(_0x5e1662,_0x53bcbc){var _0x3305a5=_0x5e1662[_0xac4a('0x5e')][_0xac4a('0x9b')];return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5e1662[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29'),_0xac4a('0x9c'),_0xac4a('0x9d'),_0xac4a('0x9e'),_0xac4a('0x9f')]})[_0xac4a('0x36')](handleEntityNotFound(_0x53bcbc,null))[_0xac4a('0x36')](function(_0x356a6b){if(_0x356a6b){if(!utils[_0xac4a('0xa0')](_0x3305a5)){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0xa1'));}return _0x356a6b[_0xac4a('0xa2')+_[_0xac4a('0xa3')](_0x3305a5[_0xac4a('0xa4')]())+_0xac4a('0xa5')](_0x5e1662['body'][_0xac4a('0x61')],{'penalty':_0x5e1662[_0xac4a('0x5e')][_0xac4a('0xa6')]||0x0})[_0xac4a('0xa7')](function(_0x237312){for(var _0x31afd2=0x0;_0x31afd2<_0x5e1662[_0xac4a('0x5e')][_0xac4a('0x61')]['length'];_0x31afd2+=0x1){var _0x5127ea={'UserId':Number(_0x5e1662[_0xac4a('0x4f')]['id'])};_0x5127ea[_[_0xac4a('0xa3')](_0x3305a5[_0xac4a('0xa4')]())+'QueueId']=Number(_0x5e1662['body']['ids'][_0x31afd2]);socket[_0xac4a('0xa8')]('user'+_[_0xac4a('0xa3')](_0x3305a5[_0xac4a('0xa4')]())+'Queue:save',_0x5127ea);}return _0x237312;})[_0xac4a('0x36')](function(){if(_0x3305a5==='voice'){return db[_0xac4a('0xa9')][_0xac4a('0x45')]({'where':{'id':_0x5e1662[_0xac4a('0x5e')][_0xac4a('0x61')]||[]},'raw':!![],'attributes':['id',_0xac4a('0x34')]});}})[_0xac4a('0x36')](function(_0x5e0602){var _0x25bf23=_0x356a6b[_0xac4a('0x28')]({'plain':!![]});var _0x2c03a1=[];if(_0x3305a5==='voice'&&_0x25bf23[_0xac4a('0x29')]===_0xac4a('0x2c')&&_0x25bf23[_0xac4a('0x9c')]){for(var _0x247856=0x0;_0x247856<_0x5e0602['length'];_0x247856+=0x1){_0x2c03a1[_0xac4a('0x44')]({'membername':_0x25bf23[_0xac4a('0x34')],'UserId':_0x25bf23['id'],'queue_name':_0x5e0602[_0x247856][_0xac4a('0x34')],'VoiceQueueId':_0x5e0602[_0x247856]['id'],'interface':_[_0xac4a('0x68')](_0x25bf23[_0xac4a('0x9f')])?util[_0xac4a('0xaa')]('SIP/%s',_0x25bf23['name']):_0x25bf23[_0xac4a('0x9f')],'paused':_0x25bf23[_0xac4a('0x9e')]||![],'penalty':_0x5e1662[_0xac4a('0x5e')][_0xac4a('0xa6')]||0x0});}return BPromise[_0xac4a('0xab')](_0x2c03a1,function(_0x1a12a2){return db['UserVoiceQueueRt'][_0xac4a('0xac')](_0x1a12a2);});}return _0x356a6b;});}})['then'](respondWithStatusCode(_0x53bcbc,null))[_0xac4a('0x1e')](handleError(_0x53bcbc,null));};exports['removeQueues']=function(_0xa1df14,_0x13b938){var _0x15f35a;return db[_0xac4a('0x3b')]['find']({'where':{'id':_0xa1df14[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29')]})[_0xac4a('0x36')](handleEntityNotFound(_0x13b938,null))[_0xac4a('0x36')](function(_0x520001){if(_0x520001){_0x15f35a=_0x520001;if(!_0xa1df14[_0xac4a('0x52')][_0xac4a('0x9b')]||!utils[_0xac4a('0xa0')](_0xa1df14[_0xac4a('0x52')][_0xac4a('0x9b')])){throw new db['Sequelize'][(_0xac4a('0x8d'))](_0xac4a('0xa1'));}return _0x520001[_0xac4a('0xad')+_[_0xac4a('0xa3')](_0xa1df14[_0xac4a('0x52')]['channel']['toLowerCase']())+'Queues'](_0xa1df14['query'][_0xac4a('0x61')]);}})[_0xac4a('0x36')](function(_0x17f815){if(_[_0xac4a('0xae')](_0xa1df14[_0xac4a('0x52')]['ids'])){for(var _0x293d49=0x0;_0x293d49<_0xa1df14[_0xac4a('0x52')]['ids'][_0xac4a('0x57')];_0x293d49+=0x1){var _0x11faad={'UserId':Number(_0xa1df14[_0xac4a('0x4f')]['id'])};_0x11faad[_['capitalize'](_0xa1df14[_0xac4a('0x52')][_0xac4a('0x9b')][_0xac4a('0xa4')]())+_0xac4a('0xaf')]=Number(_0xa1df14[_0xac4a('0x52')][_0xac4a('0x61')][_0x293d49]);socket[_0xac4a('0xa8')](_0xac4a('0x2b')+_[_0xac4a('0xa3')](_0xa1df14['query'][_0xac4a('0x9b')][_0xac4a('0xa4')]())+'Queue:remove',_0x11faad);}}else{var _0x11faad={'UserId':Number(_0xa1df14['params']['id'])};_0x11faad[_[_0xac4a('0xa3')](_0xa1df14[_0xac4a('0x52')]['channel'][_0xac4a('0xa4')]())+_0xac4a('0xaf')]=Number(_0xa1df14[_0xac4a('0x52')][_0xac4a('0x61')]);socket[_0xac4a('0xa8')](_0xac4a('0x2b')+_[_0xac4a('0xa3')](_0xa1df14[_0xac4a('0x52')]['channel']['toLowerCase']())+_0xac4a('0xb0'),_0x11faad);}return _0x17f815;})['then'](function(){if(_0xa1df14['query'][_0xac4a('0x9b')]===_0xac4a('0xb1')){return db[_0xac4a('0xb2')]['destroy']({'where':{'UserId':_0xa1df14[_0xac4a('0x4f')]['id'],'VoiceQueueId':_0xa1df14[_0xac4a('0x52')]['ids']},'individualHooks':!![]})['then'](function(){return _0x15f35a;});}return _0x15f35a;})[_0xac4a('0x36')](respondWithStatusCode(_0x13b938,null))[_0xac4a('0x1e')](handleError(_0x13b938,null));};exports[_0xac4a('0xb3')]=function(_0x368546,_0x4fadd1){_0x368546[_0xac4a('0x5e')][_0xac4a('0xb4')]=_0x368546[_0xac4a('0xb5')]['filename'];return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x368546[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x4fadd1,null))[_0xac4a('0x36')](saveUpdates(_0x368546['body'],null))['then'](respondWithResult(_0x4fadd1,null))[_0xac4a('0x1e')](handleError(_0x4fadd1,null));};exports[_0xac4a('0xb6')]=function(_0x1774e5,_0x110e16){var _0x14ca03=path[_0xac4a('0xb7')](config[_0xac4a('0xb8')],_0xac4a('0xb9'));return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x1774e5[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0xb4')],'raw':!![]})[_0xac4a('0x36')](handleEntityNotFound(_0x110e16,null))['then'](function(_0x3ef9b2){if(_0x3ef9b2){if(_['isNil'](_0x3ef9b2['userpic'])){return _0x110e16[_0xac4a('0xba')](_0x14ca03);}else{if(!fs[_0xac4a('0xbb')](path[_0xac4a('0xb7')](config[_0xac4a('0xb8')],_0xac4a('0xbc'),_0x3ef9b2[_0xac4a('0xb4')]))){return _0x110e16[_0xac4a('0xba')](_0x14ca03);}return _0x110e16[_0xac4a('0xba')](path[_0xac4a('0xb7')](config['root'],_0xac4a('0xbc'),_0x3ef9b2[_0xac4a('0xb4')]));}}})[_0xac4a('0x1e')](handleError(_0x110e16,null));};exports[_0xac4a('0xbd')]=function(_0x5c0bb8,_0x5b1934){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5c0bb8[_0xac4a('0x4f')]['id']},'attributes':['id']})[_0xac4a('0x36')](handleEntityNotFound(_0x5b1934,null))[_0xac4a('0x36')](function(_0x254de8){var _0x1c7ea7=[];values=_0x254de8[_0xac4a('0x4a')];_0x1c7ea7[_0xac4a('0x44')](get_open_tabs('chat',_0x254de8[_0xac4a('0x4a')]));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4b'),_0x254de8[_0xac4a('0x4a')]));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x5a'),_0x254de8['dataValues']));_0x1c7ea7['push'](get_open_tabs('whatsapp',_0x254de8[_0xac4a('0x4a')]));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs('fax',_0x254de8['dataValues']));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs('mail',_0x254de8[_0xac4a('0x4a')]));return BPromise['all'](_0x1c7ea7);})[_0xac4a('0x36')](function(_0x2abd82){var _0x1888c3=[];if(_0x2abd82){for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xbe')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xbe')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':'CHAT','id':_0x2303b7['id'],'createdAt':_0x2303b7['createdAt']});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xbf')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xbf')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':_0xac4a('0xc0'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xc2')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc2')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':_0xac4a('0xc3'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values['MailOpenTabs'][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc4')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':_0xac4a('0xc5'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xc6')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc6')][_0x27e640];_0x1888c3['push']({'channel':_0xac4a('0xc7'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xc8')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc8')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':'WHATSAPP','id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}var _0x489208={'count':_0x1888c3[_0xac4a('0x57')],'rows':_0x1888c3};return _0x489208;}else return null;})[_0xac4a('0x36')](respondWithResult(_0x5b1934,null))['catch'](handleError(_0x5b1934,null));};exports[_0xac4a('0xc9')]=function(_0x21ddef,_0x38ecd8){var _0x53ce1f={};var _0x55ea84={};var _0x40c49b;var _0x494c3f;return db[_0xac4a('0x3b')]['findOne']({'where':{'id':_0x21ddef['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x38ecd8,null))[_0xac4a('0x36')](function(_0xa80dfb){if(_0xa80dfb){_0x40c49b=_0xa80dfb;_0x55ea84['model']=_[_0xac4a('0x51')](db[_0xac4a('0xca')]['rawAttributes']);_0x55ea84[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x21ddef['query']);_0x55ea84[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x55ea84[_0xac4a('0x55')],_0x55ea84[_0xac4a('0x52')]);_0x53ce1f[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x55ea84[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x21ddef['query'][_0xac4a('0x56')]));_0x53ce1f['attributes']=_0x53ce1f[_0xac4a('0x43')][_0xac4a('0x57')]?_0x53ce1f[_0xac4a('0x43')]:_0x55ea84[_0xac4a('0x55')];_0x53ce1f[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x21ddef['query'][_0xac4a('0xcc')]);_0x53ce1f[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x21ddef[_0xac4a('0x52')],_0x55ea84[_0xac4a('0x53')]));if(_0x21ddef[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x53ce1f['where']=_[_0xac4a('0x59')](_0x53ce1f['where'],{'$or':_[_0xac4a('0x30')](_0x53ce1f[_0xac4a('0x43')],function(_0x234fb8){var _0x184b79={};_0x184b79[_0x234fb8]={'$like':'%'+_0x21ddef['query']['filter']+'%'};return _0x184b79;})});}_0x53ce1f=_[_0xac4a('0x59')]({},_0x53ce1f,_0x21ddef[_0xac4a('0xce')]);return _0x40c49b[_0xac4a('0xc9')](_0x53ce1f);}})[_0xac4a('0x36')](function(_0x105061){if(_0x105061){_0x494c3f=_0x105061[_0xac4a('0x57')];if(_0x21ddef['query'][_0xac4a('0xcf')](_0xac4a('0x58'))){_0x53ce1f[_0xac4a('0x42')]=[{'model':db['CmList'],'as':_0xac4a('0xd0'),'required':![]},{'model':db[_0xac4a('0xd1')],'as':_0xac4a('0xd2'),'attributes':['id','name','color'],'where':_0x21ddef[_0xac4a('0x52')][_0xac4a('0xd3')]?{'id':_0x21ddef[_0xac4a('0x52')][_0xac4a('0xd3')]}:undefined,'required':_0x21ddef[_0xac4a('0x52')][_0xac4a('0xd3')]?!![]:![]}];}if(!_0x21ddef[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x53ce1f['limit']=qs['limit'](_0x21ddef[_0xac4a('0x52')][_0xac4a('0x24')]);_0x53ce1f[_0xac4a('0x22')]=qs['offset'](_0x21ddef[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x40c49b[_0xac4a('0xc9')](_0x53ce1f);}})['then'](function(_0x589ba9){if(_0x589ba9){return _0x589ba9?{'count':_0x494c3f,'rows':_0x589ba9}:null;}})[_0xac4a('0x36')](respondWithResult(_0x38ecd8,null))['catch'](handleError(_0x38ecd8,null));};exports[_0xac4a('0xd5')]=function(_0x10da11,_0x5a9872){var _0x149121;var _0x1f55b9;var _0x4cc6b7={};var _0xb7cbe2;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x10da11[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29')]})[_0xac4a('0x36')](handleEntityNotFound(_0x5a9872,null))[_0xac4a('0x36')](function(_0x1137df){if(!utils['isValidChannel'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}_0x149121=_0x1137df;var _0x12fec5={};_0x12fec5[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_[_0xac4a('0xa3')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+_0xac4a('0xd6')][_0xac4a('0x3c')]);_0x12fec5['query']=_['keys'](_0x10da11['query']);_0x12fec5[_0xac4a('0x53')]=_['intersection'](_0x12fec5['model'],_0x12fec5[_0xac4a('0x52')]);_0x4cc6b7['attributes']=_['intersection'](_0x12fec5['model'],qs[_0xac4a('0x56')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4cc6b7[_0xac4a('0x43')]=_0x4cc6b7[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4cc6b7[_0xac4a('0x43')]:_0x12fec5[_0xac4a('0x55')];_0x4cc6b7[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x10da11[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x4cc6b7[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x10da11['query'],_0x12fec5[_0xac4a('0x53')]));if(_0x10da11[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x4cc6b7[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x4cc6b7[_0xac4a('0x41')],{'$or':_['map'](_0x4cc6b7[_0xac4a('0x43')],function(_0x1f532b){var _0x1c3ba5={};_0x1c3ba5[_0x1f532b]={'$like':'%'+_0x10da11['query'][_0xac4a('0x2e')]+'%'};return _0x1c3ba5;})});}_0x4cc6b7=_['merge']({},_0x4cc6b7,_0x10da11[_0xac4a('0xce')]);switch(_0x149121[_0xac4a('0x29')]){case _0xac4a('0x2a'):return db[_['capitalize'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queue'][_0xac4a('0x45')](_0x4cc6b7);case _0xac4a('0x2b'):case'agent':return _0x149121[_0xac4a('0x28')+_['capitalize'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queues'](_0x4cc6b7);default:throw new db['Sequelize']['ValidationError']('Unknown\x20role');}})[_0xac4a('0x36')](function(_0x566369){_0xb7cbe2=_0x566369[_0xac4a('0x57')];if(!_0x10da11[_0xac4a('0x52')][_0xac4a('0xcf')]('nolimit')){_0x4cc6b7[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x10da11[_0xac4a('0x52')]['limit']);_0x4cc6b7[_0xac4a('0x22')]=qs['offset'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x22')]);}switch(_0x149121['role']){case _0xac4a('0x2a'):return db[_[_0xac4a('0xa3')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queue'][_0xac4a('0x45')](_0x4cc6b7);case _0xac4a('0x2b'):case _0xac4a('0x2c'):return _0x149121[_0xac4a('0x28')+_[_0xac4a('0xa3')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queues'](_0x4cc6b7);}})['then'](function(_0x5d1bc7){return{'count':_0xb7cbe2,'rows':_0x5d1bc7};})[_0xac4a('0x36')](respondWithResult(_0x5a9872,null))[_0xac4a('0x1e')](handleError(_0x5a9872,null));};exports['getVoiceQueuesRt']=function(_0x23a394,_0x10198d){var _0x4097e8={};var _0xfe4e8f={};var _0x5e4c0c;var _0x1babcd;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x23a394[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x10198d,null))[_0xac4a('0x36')](function(_0x4b9541){if(_0x4b9541){_0x5e4c0c=_0x4b9541;_0xfe4e8f['model']=_['keys'](db[_0xac4a('0xb2')][_0xac4a('0x3c')]);_0xfe4e8f['query']=_[_0xac4a('0x51')](_0x23a394[_0xac4a('0x52')]);_0xfe4e8f[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0xfe4e8f[_0xac4a('0x55')],_0xfe4e8f[_0xac4a('0x52')]);_0x4097e8[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0xfe4e8f[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x23a394[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4097e8['attributes']=_0x4097e8['attributes'][_0xac4a('0x57')]?_0x4097e8[_0xac4a('0x43')]:_0xfe4e8f[_0xac4a('0x55')];_0x4097e8[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x23a394['query'][_0xac4a('0xcc')]);_0x4097e8['where']=qs['filters'](_['pick'](_0x23a394['query'],_0xfe4e8f[_0xac4a('0x53')]));if(_0x23a394[_0xac4a('0x52')]['filter']){_0x4097e8[_0xac4a('0x41')]=_['merge'](_0x4097e8[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x4097e8[_0xac4a('0x43')],function(_0x50b125){var _0x3a49fb={};_0x3a49fb[_0x50b125]={'$like':'%'+_0x23a394[_0xac4a('0x52')]['filter']+'%'};return _0x3a49fb;})});}_0x4097e8=_[_0xac4a('0x59')]({},_0x4097e8,_0x23a394[_0xac4a('0xce')]);return _0x5e4c0c['getVoiceQueuesRt'](_0x4097e8);}})[_0xac4a('0x36')](function(_0x5096fd){if(_0x5096fd){_0x1babcd=_0x5096fd[_0xac4a('0x57')];if(!_0x23a394[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x4097e8['limit']=qs[_0xac4a('0x24')](_0x23a394[_0xac4a('0x52')][_0xac4a('0x24')]);_0x4097e8[_0xac4a('0x22')]=qs['offset'](_0x23a394[_0xac4a('0x52')]['offset']);}return _0x5e4c0c[_0xac4a('0xd7')](_0x4097e8);}})[_0xac4a('0x36')](function(_0xaae5c3){if(_0xaae5c3){return _0xaae5c3?{'count':_0x1babcd,'rows':_0xaae5c3}:null;}})[_0xac4a('0x36')](respondWithResult(_0x10198d,null))[_0xac4a('0x1e')](handleError(_0x10198d,null));};exports[_0xac4a('0xd8')]=function(_0x24d50b,_0xba4962){var _0x4efa4b={};var _0x4bd4cd={};var _0x2e7afc;var _0x33fddd;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x24d50b['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0xba4962,null))[_0xac4a('0x36')](function(_0x7c60ab){if(_0x7c60ab){_0x2e7afc=_0x7c60ab;_0x4bd4cd[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xd9')][_0xac4a('0x3c')]);_0x4bd4cd[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x24d50b['query']);_0x4bd4cd[_0xac4a('0x53')]=_['intersection'](_0x4bd4cd[_0xac4a('0x55')],_0x4bd4cd[_0xac4a('0x52')]);_0x4efa4b[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x4bd4cd[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x24d50b[_0xac4a('0x52')]['fields']));_0x4efa4b[_0xac4a('0x43')]=_0x4efa4b[_0xac4a('0x43')]['length']?_0x4efa4b[_0xac4a('0x43')]:_0x4bd4cd[_0xac4a('0x55')];_0x4efa4b[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x24d50b[_0xac4a('0x52')]['sort']);_0x4efa4b[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x24d50b[_0xac4a('0x52')],_0x4bd4cd['filters']));if(_0x24d50b['query'][_0xac4a('0x2e')]){_0x4efa4b['where']=_[_0xac4a('0x59')](_0x4efa4b[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x4efa4b[_0xac4a('0x43')],function(_0x2852c7){var _0x74693={};_0x74693[_0x2852c7]={'$like':'%'+_0x24d50b[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x74693;})});}_0x4efa4b=_[_0xac4a('0x59')]({},_0x4efa4b,_0x24d50b[_0xac4a('0xce')]);return _0x2e7afc[_0xac4a('0xd8')](_0x4efa4b);}})['then'](function(_0x495d4e){if(_0x495d4e){_0x33fddd=_0x495d4e[_0xac4a('0x57')];if(!_0x24d50b[_0xac4a('0x52')][_0xac4a('0xcf')]('nolimit')){_0x4efa4b['limit']=qs[_0xac4a('0x24')](_0x24d50b[_0xac4a('0x52')]['limit']);_0x4efa4b[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x24d50b['query'][_0xac4a('0x22')]);}return _0x2e7afc[_0xac4a('0xd8')](_0x4efa4b);}})['then'](function(_0x4c05df){if(_0x4c05df){return _0x4c05df?{'count':_0x33fddd,'rows':_0x4c05df}:null;}})['then'](respondWithResult(_0xba4962,null))[_0xac4a('0x1e')](handleError(_0xba4962,null));};exports[_0xac4a('0xda')]=function(_0x35c58e,_0x58bf1d){var _0x1b57d9={'raw':!![],'where':{}};var _0x186cdc={};var _0x5b6efe={'count':0x0,'rows':[]};return db['User'][_0xac4a('0x95')]({'where':{'id':_0x35c58e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x58bf1d,null))['then'](function(_0x1eb063){if(_0x1eb063){_0x186cdc[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xdb')][_0xac4a('0x3c')]);_0x186cdc[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x35c58e[_0xac4a('0x52')]);_0x186cdc[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x186cdc[_0xac4a('0x55')],_0x186cdc['query']);_0x1b57d9['attributes']=_['intersection'](_0x186cdc[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x35c58e[_0xac4a('0x52')][_0xac4a('0x56')]));_0x1b57d9[_0xac4a('0x43')]=_0x1b57d9['attributes'][_0xac4a('0x57')]?_0x1b57d9['attributes']:_0x186cdc[_0xac4a('0x55')];if(!_0x35c58e[_0xac4a('0x52')]['hasOwnProperty'](_0xac4a('0xd4'))){_0x1b57d9['limit']=qs[_0xac4a('0x24')](_0x35c58e[_0xac4a('0x52')][_0xac4a('0x24')]);_0x1b57d9[_0xac4a('0x22')]=qs['offset'](_0x35c58e[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x1b57d9['order']=qs[_0xac4a('0xcc')](_0x35c58e['query'][_0xac4a('0xcc')]);_0x1b57d9[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x35c58e[_0xac4a('0x52')],_0x186cdc[_0xac4a('0x53')]));_0x1b57d9[_0xac4a('0x41')]['UserId']=_0x1eb063['id'];if(_0x35c58e[_0xac4a('0x52')]['filter']){_0x1b57d9[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x1b57d9[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x1b57d9[_0xac4a('0x43')],function(_0x1b2719){var _0x2e433e={};_0x2e433e[_0x1b2719]={'$like':'%'+_0x35c58e[_0xac4a('0x52')]['filter']+'%'};return _0x2e433e;})});}_0x1b57d9=_[_0xac4a('0x59')]({},_0x1b57d9,_0x35c58e[_0xac4a('0xce')]);return db[_0xac4a('0xdb')]['count']({'where':_0x1b57d9[_0xac4a('0x41')]})['then'](function(_0x2487bd){_0x5b6efe[_0xac4a('0x25')]=_0x2487bd;if(_0x35c58e[_0xac4a('0x52')][_0xac4a('0x58')]){_0x1b57d9[_0xac4a('0x42')]=[{'all':!![]}];}return db[_0xac4a('0xdb')]['findAll'](_0x1b57d9);})[_0xac4a('0x36')](function(_0x396aa9){_0x5b6efe[_0xac4a('0x46')]=_0x396aa9;return _0x5b6efe;});}})[_0xac4a('0x36')](respondWithFilteredResult(_0x58bf1d,_0x1b57d9))[_0xac4a('0x1e')](handleError(_0x58bf1d,null));};exports['getScreenRecordings']=function(_0x2cd0ba,_0x5c0793){var _0x23b095={'raw':!![],'where':{}};var _0x3eef4e={};var _0x548ce0={'count':0x0,'rows':[]};return db[_0xac4a('0x3b')]['findOne']({'where':{'id':_0x2cd0ba[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5c0793,null))[_0xac4a('0x36')](function(_0x26f36a){if(_0x26f36a){_0x3eef4e[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xdc')][_0xac4a('0x3c')]);_0x3eef4e['query']=_[_0xac4a('0x51')](_0x2cd0ba['query']);_0x3eef4e[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x3eef4e[_0xac4a('0x55')],_0x3eef4e[_0xac4a('0x52')]);_0x23b095[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x3eef4e[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x56')]));_0x23b095[_0xac4a('0x43')]=_0x23b095[_0xac4a('0x43')][_0xac4a('0x57')]?_0x23b095[_0xac4a('0x43')]:_0x3eef4e[_0xac4a('0x55')];if(!_0x2cd0ba[_0xac4a('0x52')]['hasOwnProperty'](_0xac4a('0xd4'))){_0x23b095[_0xac4a('0x24')]=qs['limit'](_0x2cd0ba[_0xac4a('0x52')]['limit']);_0x23b095[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x23b095[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x2cd0ba['query']['sort']);_0x23b095[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x2cd0ba[_0xac4a('0x52')],_0x3eef4e[_0xac4a('0x53')]));_0x23b095[_0xac4a('0x41')][_0xac4a('0xdd')]=_0x26f36a['id'];if(_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x23b095['where']=_[_0xac4a('0x59')](_0x23b095['where'],{'$or':_[_0xac4a('0x30')](_0x23b095['attributes'],function(_0x50d3df){var _0x137fe0={};_0x137fe0[_0x50d3df]={'$like':'%'+_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x137fe0;})});}_0x23b095=_[_0xac4a('0x59')]({},_0x23b095,_0x2cd0ba['options']);return db[_0xac4a('0xdc')][_0xac4a('0x25')]({'where':_0x23b095['where']})[_0xac4a('0x36')](function(_0x33dd86){_0x548ce0[_0xac4a('0x25')]=_0x33dd86;if(_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x58')]){_0x23b095[_0xac4a('0x42')]=[{'all':!![]}];}return db['ScreenRecording']['findAll'](_0x23b095);})[_0xac4a('0x36')](function(_0x578112){_0x548ce0[_0xac4a('0x46')]=_0x578112;return _0x548ce0;});}})['then'](respondWithFilteredResult(_0x5c0793,_0x23b095))[_0xac4a('0x1e')](handleError(_0x5c0793,null));};exports[_0xac4a('0xde')]=function(_0x5cb6ed,_0x22df94){var _0x57876f={};var _0x4dca33={};var _0x9e2cba;var _0x11d24a;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x5cb6ed[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x22df94,null))[_0xac4a('0x36')](function(_0x5c73fd){if(_0x5c73fd){_0x9e2cba=_0x5c73fd;_0x4dca33[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xdf')][_0xac4a('0x3c')]);_0x4dca33[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x5cb6ed[_0xac4a('0x52')]);_0x4dca33[_0xac4a('0x53')]=_['intersection'](_0x4dca33[_0xac4a('0x55')],_0x4dca33[_0xac4a('0x52')]);_0x57876f[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x4dca33[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0x56')]));_0x57876f[_0xac4a('0x43')]=_0x57876f[_0xac4a('0x43')][_0xac4a('0x57')]?_0x57876f[_0xac4a('0x43')]:_0x4dca33[_0xac4a('0x55')];_0x57876f[_0xac4a('0xcb')]=qs['sort'](_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x57876f[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x5cb6ed[_0xac4a('0x52')],_0x4dca33['filters']));if(_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x57876f[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x57876f[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x57876f[_0xac4a('0x43')],function(_0x2a0700){var _0x5cfce3={};_0x5cfce3[_0x2a0700]={'$like':'%'+_0x5cb6ed['query']['filter']+'%'};return _0x5cfce3;})});}_0x57876f=_[_0xac4a('0x59')]({},_0x57876f,_0x5cb6ed['options']);return _0x9e2cba[_0xac4a('0xde')](_0x57876f);}})['then'](function(_0x42df7b){if(_0x42df7b){_0x11d24a=_0x42df7b['length'];if(!_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x57876f['limit']=qs[_0xac4a('0x24')](_0x5cb6ed[_0xac4a('0x52')]['limit']);_0x57876f[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x5cb6ed['query']['offset']);}return _0x9e2cba[_0xac4a('0xde')](_0x57876f);}})[_0xac4a('0x36')](function(_0x540e98){if(_0x540e98){return _0x540e98?{'count':_0x11d24a,'rows':_0x540e98}:null;}})[_0xac4a('0x36')](respondWithResult(_0x22df94,null))[_0xac4a('0x1e')](handleError(_0x22df94,null));};exports[_0xac4a('0xe0')]=function(_0x168f4b,_0x10fbce){var _0x3708b3={};var _0x41f08e={};var _0x4ea092;var _0x2c6aa1;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x168f4b[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x10fbce,null))[_0xac4a('0x36')](function(_0x393409){if(_0x393409){_0x4ea092=_0x393409;_0x41f08e[_0xac4a('0x55')]=_[_0xac4a('0x51')](db['OpenchannelInteraction'][_0xac4a('0x3c')]);_0x41f08e[_0xac4a('0x52')]=_['keys'](_0x168f4b[_0xac4a('0x52')]);_0x41f08e[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x41f08e[_0xac4a('0x55')],_0x41f08e[_0xac4a('0x52')]);_0x3708b3[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x41f08e['model'],qs[_0xac4a('0x56')](_0x168f4b['query'][_0xac4a('0x56')]));_0x3708b3[_0xac4a('0x43')]=_0x3708b3[_0xac4a('0x43')]['length']?_0x3708b3[_0xac4a('0x43')]:_0x41f08e['model'];_0x3708b3[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x168f4b[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x3708b3[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x168f4b[_0xac4a('0x52')],_0x41f08e[_0xac4a('0x53')]));if(_0x168f4b[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x3708b3[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x3708b3['where'],{'$or':_[_0xac4a('0x30')](_0x3708b3[_0xac4a('0x43')],function(_0x218f41){var _0x277c11={};_0x277c11[_0x218f41]={'$like':'%'+_0x168f4b['query'][_0xac4a('0x2e')]+'%'};return _0x277c11;})});}_0x3708b3=_['merge']({},_0x3708b3,_0x168f4b[_0xac4a('0xce')]);return _0x4ea092[_0xac4a('0xe0')](_0x3708b3);}})[_0xac4a('0x36')](function(_0x1d1410){if(_0x1d1410){_0x2c6aa1=_0x1d1410[_0xac4a('0x57')];if(!_0x168f4b[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x3708b3['limit']=qs[_0xac4a('0x24')](_0x168f4b[_0xac4a('0x52')]['limit']);_0x3708b3['offset']=qs['offset'](_0x168f4b[_0xac4a('0x52')]['offset']);}return _0x4ea092[_0xac4a('0xe0')](_0x3708b3);}})['then'](function(_0x401ff3){if(_0x401ff3){return _0x401ff3?{'count':_0x2c6aa1,'rows':_0x401ff3}:null;}})[_0xac4a('0x36')](respondWithResult(_0x10fbce,null))[_0xac4a('0x1e')](handleError(_0x10fbce,null));};exports[_0xac4a('0xe1')]=function(_0x25911e,_0x405ca7){var _0x292110={'raw':!![],'where':{}};var _0x2e107e={};var _0xc381f0={'count':0x0,'rows':[]};return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x25911e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x405ca7,null))['then'](function(_0x274785){if(_0x274785){_0x2e107e[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xe2')][_0xac4a('0x3c')]);_0x2e107e[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x25911e['query']);_0x2e107e[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x2e107e[_0xac4a('0x55')],_0x2e107e[_0xac4a('0x52')]);_0x292110['attributes']=_[_0xac4a('0x54')](_0x2e107e[_0xac4a('0x55')],qs['fields'](_0x25911e[_0xac4a('0x52')]['fields']));_0x292110[_0xac4a('0x43')]=_0x292110[_0xac4a('0x43')][_0xac4a('0x57')]?_0x292110['attributes']:_0x2e107e[_0xac4a('0x55')];if(!_0x25911e[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x292110[_0xac4a('0x24')]=qs['limit'](_0x25911e[_0xac4a('0x52')][_0xac4a('0x24')]);_0x292110['offset']=qs[_0xac4a('0x22')](_0x25911e[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x292110[_0xac4a('0xcb')]=qs['sort'](_0x25911e[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x292110['where']=qs['filters'](_[_0xac4a('0xcd')](_0x25911e[_0xac4a('0x52')],_0x2e107e[_0xac4a('0x53')]));_0x292110[_0xac4a('0x41')][_0xac4a('0xdd')]=_0x274785['id'];if(_0x25911e['query'][_0xac4a('0x2e')]){_0x292110['where']=_[_0xac4a('0x59')](_0x292110[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x292110[_0xac4a('0x43')],function(_0x1e69d0){var _0x2eb65a={};_0x2eb65a[_0x1e69d0]={'$like':'%'+_0x25911e['query']['filter']+'%'};return _0x2eb65a;})});}_0x292110=_[_0xac4a('0x59')]({},_0x292110,_0x25911e['options']);return db[_0xac4a('0xe2')][_0xac4a('0x25')]({'where':_0x292110[_0xac4a('0x41')]})[_0xac4a('0x36')](function(_0x4875de){_0xc381f0[_0xac4a('0x25')]=_0x4875de;if(_0x25911e[_0xac4a('0x52')]['includeAll']){_0x292110[_0xac4a('0x42')]=[{'all':!![]}];}return db[_0xac4a('0xe2')][_0xac4a('0x45')](_0x292110);})[_0xac4a('0x36')](function(_0x2895ae){_0xc381f0[_0xac4a('0x46')]=_0x2895ae;return _0xc381f0;});}})['then'](respondWithFilteredResult(_0x405ca7,_0x292110))[_0xac4a('0x1e')](handleError(_0x405ca7,null));};exports[_0xac4a('0xe3')]=function(_0x471cbb,_0x2ade25){var _0x5a1855={};var _0x659e61={};var _0x405ce7;var _0x6e82e;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x471cbb[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2ade25,null))[_0xac4a('0x36')](function(_0x40b005){if(_0x40b005){_0x405ce7=_0x40b005;_0x659e61[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xe4')][_0xac4a('0x3c')]);_0x659e61['query']=_[_0xac4a('0x51')](_0x471cbb[_0xac4a('0x52')]);_0x659e61[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x659e61[_0xac4a('0x55')],_0x659e61[_0xac4a('0x52')]);_0x5a1855[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x659e61['model'],qs[_0xac4a('0x56')](_0x471cbb[_0xac4a('0x52')]['fields']));_0x5a1855[_0xac4a('0x43')]=_0x5a1855[_0xac4a('0x43')][_0xac4a('0x57')]?_0x5a1855[_0xac4a('0x43')]:_0x659e61[_0xac4a('0x55')];_0x5a1855[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x471cbb[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x5a1855[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x471cbb[_0xac4a('0x52')],_0x659e61[_0xac4a('0x53')]));if(_0x471cbb[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x5a1855['where']=_[_0xac4a('0x59')](_0x5a1855[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x5a1855['attributes'],function(_0x3732b3){var _0x5197c1={};_0x5197c1[_0x3732b3]={'$like':'%'+_0x471cbb['query'][_0xac4a('0x2e')]+'%'};return _0x5197c1;})});}_0x5a1855=_[_0xac4a('0x59')]({},_0x5a1855,_0x471cbb[_0xac4a('0xce')]);return _0x405ce7[_0xac4a('0xe3')](_0x5a1855);}})[_0xac4a('0x36')](function(_0x3a9f10){if(_0x3a9f10){_0x6e82e=_0x3a9f10['length'];if(!_0x471cbb[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x5a1855['limit']=qs[_0xac4a('0x24')](_0x471cbb['query']['limit']);_0x5a1855[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x471cbb['query'][_0xac4a('0x22')]);}return _0x405ce7[_0xac4a('0xe3')](_0x5a1855);}})[_0xac4a('0x36')](function(_0x384050){if(_0x384050){return _0x384050?{'count':_0x6e82e,'rows':_0x384050}:null;}})[_0xac4a('0x36')](respondWithResult(_0x2ade25,null))['catch'](handleError(_0x2ade25,null));};exports[_0xac4a('0xe5')]=function(_0x215812,_0x41ccf0){var _0x324121={};var _0x1de629={};var _0x570843;var _0x2c999d;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x215812[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x41ccf0,null))['then'](function(_0x499f8f){if(_0x499f8f){_0x570843=_0x499f8f;_0x1de629[_0xac4a('0x55')]=_[_0xac4a('0x51')](db['FaxInteraction']['rawAttributes']);_0x1de629[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x215812[_0xac4a('0x52')]);_0x1de629['filters']=_[_0xac4a('0x54')](_0x1de629['model'],_0x1de629['query']);_0x324121[_0xac4a('0x43')]=_['intersection'](_0x1de629[_0xac4a('0x55')],qs['fields'](_0x215812[_0xac4a('0x52')][_0xac4a('0x56')]));_0x324121[_0xac4a('0x43')]=_0x324121['attributes'][_0xac4a('0x57')]?_0x324121[_0xac4a('0x43')]:_0x1de629[_0xac4a('0x55')];_0x324121['order']=qs[_0xac4a('0xcc')](_0x215812[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x324121[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x215812['query'],_0x1de629[_0xac4a('0x53')]));if(_0x215812['query']['filter']){_0x324121[_0xac4a('0x41')]=_['merge'](_0x324121['where'],{'$or':_[_0xac4a('0x30')](_0x324121[_0xac4a('0x43')],function(_0x5bb24f){var _0x379ad7={};_0x379ad7[_0x5bb24f]={'$like':'%'+_0x215812[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x379ad7;})});}_0x324121=_[_0xac4a('0x59')]({},_0x324121,_0x215812[_0xac4a('0xce')]);return _0x570843[_0xac4a('0xe5')](_0x324121);}})['then'](function(_0x541098){if(_0x541098){_0x2c999d=_0x541098[_0xac4a('0x57')];if(!_0x215812[_0xac4a('0x52')][_0xac4a('0xcf')]('nolimit')){_0x324121[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x215812[_0xac4a('0x52')][_0xac4a('0x24')]);_0x324121[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x215812[_0xac4a('0x52')]['offset']);}return _0x570843['getFaxInteractions'](_0x324121);}})['then'](function(_0x26ae42){if(_0x26ae42){return _0x26ae42?{'count':_0x2c999d,'rows':_0x26ae42}:null;}})[_0xac4a('0x36')](respondWithResult(_0x41ccf0,null))[_0xac4a('0x1e')](handleError(_0x41ccf0,null));};exports[_0xac4a('0xe6')]=function(_0x4b12c8,_0x357814){var _0x24d8b0={};var _0x2775e2={};var _0x481a63;var _0x41ae8f;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x4b12c8[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x357814,null))[_0xac4a('0x36')](function(_0xa5416f){if(_0xa5416f){_0x481a63=_0xa5416f;_0x2775e2['model']=_[_0xac4a('0x51')](db[_0xac4a('0xe7')][_0xac4a('0x3c')]);_0x2775e2[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x4b12c8[_0xac4a('0x52')]);_0x2775e2[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x2775e2[_0xac4a('0x55')],_0x2775e2[_0xac4a('0x52')]);_0x24d8b0[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x2775e2[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x56')]));_0x24d8b0['attributes']=_0x24d8b0[_0xac4a('0x43')]['length']?_0x24d8b0['attributes']:_0x2775e2[_0xac4a('0x55')];_0x24d8b0['order']=qs[_0xac4a('0xcc')](_0x4b12c8['query']['sort']);_0x24d8b0['where']=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x4b12c8[_0xac4a('0x52')],_0x2775e2['filters']));if(_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x24d8b0['where']=_[_0xac4a('0x59')](_0x24d8b0['where'],{'$or':_[_0xac4a('0x30')](_0x24d8b0[_0xac4a('0x43')],function(_0x532ba0){var _0x3fa8a8={};_0x3fa8a8[_0x532ba0]={'$like':'%'+_0x4b12c8['query'][_0xac4a('0x2e')]+'%'};return _0x3fa8a8;})});}_0x24d8b0=_[_0xac4a('0x59')]({},_0x24d8b0,_0x4b12c8[_0xac4a('0xce')]);return _0x481a63[_0xac4a('0xe6')](_0x24d8b0);}})[_0xac4a('0x36')](function(_0x509459){if(_0x509459){_0x41ae8f=_0x509459[_0xac4a('0x57')];if(!_0x4b12c8[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x24d8b0[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x24')]);_0x24d8b0['offset']=qs[_0xac4a('0x22')](_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x481a63['getWhatsappInteractions'](_0x24d8b0);}})[_0xac4a('0x36')](function(_0x326ab4){if(_0x326ab4){return _0x326ab4?{'count':_0x41ae8f,'rows':_0x326ab4}:null;}})[_0xac4a('0x36')](respondWithResult(_0x357814,null))['catch'](handleError(_0x357814,null));};exports[_0xac4a('0xe8')]=function(_0xc0771,_0x529c7c,_0x45e354){var _0xa674d;var _0x29b319;var _0x3a248d;var _0x3da3df=!_[_0xac4a('0x68')](_0xc0771[_0xac4a('0x4f')]['id'])?_0xc0771['params']['id']:!_['isNil'](_0xc0771['user']['id'])?_0xc0771[_0xac4a('0x2b')]['id']:null;return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x3da3df,'role':{'$or':['admin',_0xac4a('0x2b'),'agent']}},'attributes':['id',_0xac4a('0x34'),_0xac4a('0xe9'),'mobile',_0xac4a('0x29'),_0xac4a('0x63'),_0xac4a('0x9d')]})[_0xac4a('0x36')](function(_0x4facb){if(_0x4facb){if(_0x4facb[_0xac4a('0x29')]===_0xac4a('0x2c')){_0xa674d=_0x4facb;if(_0xc0771[_0xac4a('0x5e')]['interface']){_0x3a248d=util[_0xac4a('0xaa')]('LOCAL/%s@from-sip/n',_0xa674d[_0xc0771['body'][_0xac4a('0x9f')]]);}else if(_0xc0771['body']['intrf']){_0x3a248d=util[_0xac4a('0xaa')](_0xac4a('0xea'),_0xc0771['body'][_0xac4a('0xeb')]);}else{_0x3a248d=util[_0xac4a('0xaa')]('SIP/%s',_0xa674d[_0xac4a('0x34')]);}socket['to'](util[_0xac4a('0xaa')](_0xac4a('0xec'),_0xa674d['name']))[_0xac4a('0xa8')]('user:forcelogout',{'user':{'id':_0xa674d['id'],'name':_0xa674d[_0xac4a('0x34')]},'ip':_0xc0771['headers'][_0xac4a('0xed')]||_0xc0771['connection'][_0xac4a('0xee')]||_0xc0771[_0xac4a('0xef')][_0xac4a('0xee')]||_0xc0771[_0xac4a('0xf0')][_0xac4a('0xef')][_0xac4a('0xee')]});return db[_0xac4a('0xb2')]['destroy']({'where':{'membername':_0xa674d[_0xac4a('0x34')]},'individualHooks':!![]});}}else{throw new db[(_0xac4a('0x8c'))]['ValidationError'](_0xac4a('0xf1'));}})[_0xac4a('0x36')](function(){if(_0xa674d){return _0xa674d[_0xac4a('0xf2')]({'raw':!![]});}})['then'](function(_0x23bd18){if(_0xa674d){var _0x575fff=[];if(_0x23bd18){_0x29b319=_0x23bd18;if(_0x29b319[_0xac4a('0x57')]){for(var _0xb02b7c=0x0;_0xb02b7c<_0x29b319['length'];_0xb02b7c++){_0x575fff['push']({'membername':_0xa674d['name'],'UserId':_0xa674d['id'],'queue_name':_0x29b319[_0xb02b7c][_0xac4a('0x34')],'VoiceQueueId':_0x29b319[_0xb02b7c]['id'],'interface':_0x3a248d,'paused':_0xa674d[_0xac4a('0x9d')]||![],'penalty':_0x29b319[_0xb02b7c][_0xac4a('0xf3')]||0x0});}return BPromise[_0xac4a('0xab')](_0x575fff,function(_0x1f9022){return db[_0xac4a('0xb2')][_0xac4a('0xac')](_0x1f9022);});}}}})['then'](function(){if(_0xa674d){return db[_0xac4a('0xf4')][_0xac4a('0x45')]({'where':{'membername':_0xa674d[_0xac4a('0x34')],'exitAt':null}});}})[_0xac4a('0x36')](function(_0x38d7ac){if(_0xa674d){var _0x444a18=[];_0x38d7ac[_0xac4a('0xf5')](function(_0x18932e){_0x444a18[_0xac4a('0x44')](_0x18932e[_0xac4a('0x5d')]({'exitAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6'))}));});return BPromise[_0xac4a('0x5c')](_0x444a18);}})[_0xac4a('0x36')](function(){if(_0xa674d){var _0x45d2d1=[];var _0x93fe5d=[];var _0x2f83fd=utils[_0xac4a('0xf7')]();var _0x260170={'membername':_0xa674d['name'],'interface':_0x3a248d,'enterAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'role':_0xa674d[_0xac4a('0x29')],'internal':_0xa674d[_0xac4a('0x63')]};_0x2f83fd[_0xac4a('0xf5')](function(_0x124a01){_0x45d2d1[_0xac4a('0x44')](_[_0xac4a('0x59')]({'channel':_0x124a01,'type':_0xac4a('0xf8'),'data1':_0xc0771[_0xac4a('0x5e')][_0xac4a('0xf9')],'data2':_0x3a248d},_0x260170));if(_0xa674d[_0xac4a('0x9d')]){_0x93fe5d[_0xac4a('0x44')](_[_0xac4a('0x59')]({'channel':_0x124a01,'type':_0xac4a('0xfa'),'data1':_0xac4a('0xfb')},_0x260170));}});return db[_0xac4a('0xf4')]['bulkCreate'](_0x45d2d1['concat'](_0x93fe5d),{'individualHooks':!![]});}})[_0xac4a('0x36')](function(){if(_0xa674d){return _0xa674d[_0xac4a('0x5d')]({'online':!![],'lastLoginAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'voicePause':_0xa674d[_0xac4a('0x9d')]||![],'mailPause':_0xa674d['loginInPause']||![],'chatPause':_0xa674d['loginInPause']||![],'faxPause':_0xa674d[_0xac4a('0x9d')]||![],'smsPause':_0xa674d[_0xac4a('0x9d')]||![],'openchannelPause':_0xa674d[_0xac4a('0x9d')]||![],'whatsappPause':_0xa674d['loginInPause']||![],'pauseType':_0xa674d[_0xac4a('0x9d')]?'LOGININPAUSE':null,'interface':_0x3a248d,'lastPauseAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6'))});}})[_0xac4a('0x36')](function(_0xacdad9){if(_0xc0771[_0xac4a('0xfc')]){return _0x45e354();}else{return BPromise['resolve'](_0xacdad9)[_0xac4a('0x36')](respondWithResult(_0x529c7c,null));}})[_0xac4a('0x1e')](handleError(_0x529c7c,null));};exports[_0xac4a('0xfd')]=function(_0x5b8753,_0x3e9e25){var _0x942c1b;return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5b8753[_0xac4a('0x4f')]['id'],'role':_0xac4a('0x2c')},'attributes':['id','name',_0xac4a('0x29')]})[_0xac4a('0x36')](handleEntityNotFound(_0x3e9e25,null))['then'](function(_0x9cc601){if(_0x9cc601){_0x942c1b=_0x9cc601;return db[_0xac4a('0xb2')][_0xac4a('0x35')]({'where':{'membername':_0x942c1b[_0xac4a('0x34')]},'individualHooks':!![]});}})['then'](function(){return db[_0xac4a('0xf4')]['findAll']({'where':{'membername':_0x942c1b[_0xac4a('0x34')],'exitAt':null}});})[_0xac4a('0x36')](function(_0x33b4c1){var _0x5f384b=[];_0x33b4c1[_0xac4a('0xf5')](function(_0xbf640a){_0x5f384b[_0xac4a('0x44')](_0xbf640a[_0xac4a('0x5d')]({'exitAt':moment()[_0xac4a('0xaa')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x5f384b);})[_0xac4a('0x36')](function(){return _0x942c1b[_0xac4a('0x5d')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xac4a('0x36')](respondWithResult(_0x3e9e25,null))[_0xac4a('0x1e')](handleError(_0x3e9e25,null));};exports['pause']=function(_0x217df7,_0x25431f){var _0x5d2a47;return db[_0xac4a('0xb2')][_0xac4a('0x5d')]({'paused':0x1},{'where':{'UserId':_0x217df7[_0xac4a('0x4f')]['id']},'individualHooks':!![]})[_0xac4a('0x36')](function(){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x217df7['params']['id'],'role':_0xac4a('0x2c')},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29'),_0xac4a('0x63'),_0xac4a('0x9f')]});})[_0xac4a('0x36')](handleEntityNotFound(_0x25431f,null))[_0xac4a('0x36')](function(_0x485206){if(_0x485206){_0x5d2a47=_0x485206;return respondWithRpcPromise(_0xac4a('0xfe'),'pause',{'id':_0x5d2a47['id'],'name':_0x5d2a47[_0xac4a('0x34')],'pause':!![]});}})[_0xac4a('0x36')](function(){if(_0x5d2a47){return db[_0xac4a('0xf4')][_0xac4a('0x45')]({'where':{'membername':_0x5d2a47[_0xac4a('0x34')],'type':_0xac4a('0xfa'),'exitAt':null}});}})['then'](function(_0x1d8901){if(_0x1d8901[_0xac4a('0x57')]){var _0x270cda=moment()['format'](_0xac4a('0xf6'));for(var _0x4a03f6=0x0,_0x3447fe=_0x1d8901[_0xac4a('0x57')];_0x4a03f6<_0x3447fe;_0x4a03f6++){_0x1d8901[_0x4a03f6][_0xac4a('0xff')]({'exitAt':_0x270cda});}}})[_0xac4a('0x36')](function(){var _0x156682=[];var _0x39ddce=utils[_0xac4a('0xf7')]();_0x39ddce[_0xac4a('0xf5')](function(_0xef624c){_0x156682[_0xac4a('0x44')]({'channel':_0xef624c,'membername':_0x5d2a47[_0xac4a('0x34')],'interface':_[_0xac4a('0x68')](_0x5d2a47[_0xac4a('0x9f')])?util[_0xac4a('0xaa')](_0xac4a('0xea'),_0x5d2a47['name']):_0x5d2a47[_0xac4a('0x9f')],'type':'PAUSE','enterAt':moment()['format'](_0xac4a('0xf6')),'data1':_0x217df7[_0xac4a('0x5e')]['type']||_0xac4a('0x100'),'role':_0x5d2a47[_0xac4a('0x29')],'internal':_0x5d2a47[_0xac4a('0x63')]});});return db[_0xac4a('0xf4')][_0xac4a('0x83')](_0x156682,{'individualHooks':!![]});})[_0xac4a('0x36')](function(){return _0x5d2a47[_0xac4a('0x5d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x217df7[_0xac4a('0x5e')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xac4a('0xf6'))});})['then'](respondWithResult(_0x25431f,null))['catch'](handleError(_0x25431f,null));};exports[_0xac4a('0x101')]=function(_0x4bc8cd,_0x459833){var _0x2f6d72;return db['User'][_0xac4a('0x33')]({'where':{'id':_0x4bc8cd[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29'),_0xac4a('0x9e'),_0xac4a('0x102'),'chatPause',_0xac4a('0x103'),_0xac4a('0x104'),_0xac4a('0x105'),_0xac4a('0x106'),'pauseType',_0xac4a('0x107')]})[_0xac4a('0x36')](handleEntityNotFound(_0x459833,null))['then'](function(_0xc3ab07){if(_0xc3ab07){_0x2f6d72=_0xc3ab07;if(_0x4bc8cd[_0xac4a('0x5e')][_0xac4a('0x9b')]&&!utils[_0xac4a('0xa0')](_0x4bc8cd[_0xac4a('0x5e')][_0xac4a('0x9b')])){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0xa1'));}switch(_0x4bc8cd[_0xac4a('0x5e')]['channel']){case _0xac4a('0xb1'):return respondWithRpcPromise('QueuePause',_0xac4a('0x101'),{'id':_0x2f6d72['id'],'name':_0x2f6d72[_0xac4a('0x34')],'pause':![]})[_0xac4a('0x36')](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x2f6d72['id']},'individualHooks':!![]});})[_0xac4a('0x36')](function(){return db[_0xac4a('0xf4')][_0xac4a('0x33')]({'where':{'channel':_0x4bc8cd[_0xac4a('0x5e')][_0xac4a('0x9b')],'membername':_0x2f6d72[_0xac4a('0x34')],'type':'PAUSE','exitAt':null}});})[_0xac4a('0x36')](function(_0x8acfff){if(_0x8acfff){return _0x8acfff[_0xac4a('0x5d')]({'exitAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'data2':_0xac4a('0x108')},{'individualHooks':!![]});}return null;})[_0xac4a('0x36')](function(){return _0x2f6d72[_0xac4a('0x5d')]({'voicePause':![]});});case'mail':case _0xac4a('0x49'):case _0xac4a('0x4c'):case _0xac4a('0x4b'):case _0xac4a('0x5b'):case _0xac4a('0x5a'):return db[_0xac4a('0xf4')][_0xac4a('0x33')]({'where':{'channel':_0x4bc8cd['body'][_0xac4a('0x9b')],'membername':_0x2f6d72[_0xac4a('0x34')],'type':_0xac4a('0xfa'),'exitAt':null}})['then'](function(_0x1d1c30){if(_0x1d1c30){return _0x1d1c30['update']({'exitAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0xac4a('0x36')](function(){var _0x2c1ac7={};_[_0xac4a('0x26')](_0x2c1ac7,util[_0xac4a('0xaa')](_0xac4a('0x109'),_0x4bc8cd['body'][_0xac4a('0x9b')],_0xac4a('0x10a')),![]);return _0x2f6d72['update'](_0x2c1ac7);});default:return respondWithRpcPromise('QueuePause',_0xac4a('0x101'),{'id':_0x2f6d72['id'],'name':_0x2f6d72[_0xac4a('0x34')],'pause':![]})[_0xac4a('0x36')](function(){return db[_0xac4a('0xb2')][_0xac4a('0x5d')]({'paused':0x0},{'where':{'UserId':_0x2f6d72['id']}});})['then'](function(){return db['MemberReport'][_0xac4a('0x45')]({'where':{'membername':_0x2f6d72[_0xac4a('0x34')],'type':_0xac4a('0xfa'),'exitAt':null}});})[_0xac4a('0x36')](function(_0x4449cf){var _0x24d41f=[];_0x4449cf[_0xac4a('0xf5')](function(_0x4df0ca){_0x24d41f[_0xac4a('0x44')](_0x4df0ca[_0xac4a('0x5d')]({'exitAt':moment()['format'](_0xac4a('0xf6')),'data2':_0xac4a('0x108')}));});return BPromise[_0xac4a('0x5c')](_0x24d41f);})[_0xac4a('0x36')](function(){return _0x2f6d72['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xac4a('0x36')](respondWithResult(_0x459833,null))[_0xac4a('0x1e')](handleError(_0x459833,null));};exports['getTeams']=function(_0x14fe4c,_0xb85972){var _0xbbd484={};var _0xe7077={};var _0x57c0ac;var _0x38d38a;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x14fe4c['params']['id']}})['then'](handleEntityNotFound(_0xb85972,null))['then'](function(_0x40643e){if(_0x40643e){_0x57c0ac=_0x40643e;_0xe7077[_0xac4a('0x55')]=_['keys'](db[_0xac4a('0x10b')][_0xac4a('0x3c')]);_0xe7077[_0xac4a('0x52')]=_['keys'](_0x14fe4c[_0xac4a('0x52')]);_0xe7077[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0xe7077[_0xac4a('0x55')],_0xe7077[_0xac4a('0x52')]);_0xbbd484[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0xe7077['model'],qs[_0xac4a('0x56')](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x56')]));_0xbbd484[_0xac4a('0x43')]=_0xbbd484[_0xac4a('0x43')][_0xac4a('0x57')]?_0xbbd484[_0xac4a('0x43')]:_0xe7077[_0xac4a('0x55')];_0xbbd484[_0xac4a('0xcb')]=qs['sort'](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0xcc')]);_0xbbd484[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x14fe4c[_0xac4a('0x52')],_0xe7077['filters']));if(_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x2e')]){_0xbbd484[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0xbbd484[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0xbbd484['attributes'],function(_0x386e10){var _0x478c51={};_0x478c51[_0x386e10]={'$like':'%'+_0x14fe4c[_0xac4a('0x52')]['filter']+'%'};return _0x478c51;})});}_0xbbd484=_['merge']({},_0xbbd484,_0x14fe4c[_0xac4a('0xce')]);return _0x57c0ac[_0xac4a('0x10c')](_0xbbd484);}})[_0xac4a('0x36')](function(_0x53b308){if(_0x53b308){_0x38d38a=_0x53b308[_0xac4a('0x57')];if(!_0x14fe4c[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0xbbd484[_0xac4a('0x24')]=qs['limit'](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x24')]);_0xbbd484[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x57c0ac[_0xac4a('0x10c')](_0xbbd484);}})['then'](function(_0x54dc21){if(_0x54dc21){return _0x54dc21?{'count':_0x38d38a,'rows':_0x54dc21}:null;}})['then'](respondWithResult(_0xb85972,null))[_0xac4a('0x1e')](handleError(_0xb85972,null));};exports[_0xac4a('0x10d')]=function(_0x395b96,_0x45de07){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x395b96['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x45de07,null))[_0xac4a('0x36')](function(_0x3901f0){if(_0x3901f0){var _0x464750=_0x3901f0[_0xac4a('0x28')]({'plain':!![]});return _0x3901f0['addTeams'](_0x395b96['body'][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x395b96[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})['then'](function(){for(var _0x5b4f5b=0x0;_0x5b4f5b<_0x395b96['body'][_0xac4a('0x61')][_0xac4a('0x57')];_0x5b4f5b++){var _0x5ab6ab=[];var _0x1356f2={};db['Team'][_0xac4a('0x95')]({'where':{'id':_0x395b96['body'][_0xac4a('0x61')][_0x5b4f5b]}})[_0xac4a('0x36')](function(_0xd90c8e){_0x1356f2=_0xd90c8e[_0xac4a('0x4a')];_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e[_0xac4a('0xf2')]()[_0xac4a('0x36')](function(_0x35c707){for(var _0x236c8f=0x0;_0x236c8f<_0x35c707[_0xac4a('0x57')];_0x236c8f++){_0x35c707[_0x236c8f][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x10f'));}return _0x35c707;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e['getChatQueues']()[_0xac4a('0x36')](function(_0x33ff7b){for(var _0x4c847a=0x0;_0x4c847a<_0x33ff7b[_0xac4a('0x57')];_0x4c847a++){_0x33ff7b[_0x4c847a][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x110'));}return _0x33ff7b;}));_0x5ab6ab['push'](_0xd90c8e[_0xac4a('0x111')]()[_0xac4a('0x36')](function(_0x21e793){for(var _0x30eade=0x0;_0x30eade<_0x21e793[_0xac4a('0x57')];_0x30eade++){_0x21e793[_0x30eade][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x112'));}return _0x21e793;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e[_0xac4a('0x113')]()[_0xac4a('0x36')](function(_0x2ed2cd){for(var _0x13e051=0x0;_0x13e051<_0x2ed2cd[_0xac4a('0x57')];_0x13e051++){_0x2ed2cd[_0x13e051][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x114'));}return _0x2ed2cd;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e['getWhatsappQueues']()[_0xac4a('0x36')](function(_0x39b520){for(var _0x35d205=0x0;_0x35d205<_0x39b520[_0xac4a('0x57')];_0x35d205++){_0x39b520[_0x35d205][_0xac4a('0x10e')]('channel',_0xac4a('0x115'));}return _0x39b520;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e['getFaxQueues']()[_0xac4a('0x36')](function(_0x360b73){for(var _0x4e324c=0x0;_0x4e324c<_0x360b73[_0xac4a('0x57')];_0x4e324c++){_0x360b73[_0x4e324c][_0xac4a('0x10e')](_0xac4a('0x9b'),'Fax');}return _0x360b73;}));_0x5ab6ab['push'](_0xd90c8e[_0xac4a('0x116')]()[_0xac4a('0x36')](function(_0x4ab883){for(var _0x577904=0x0;_0x577904<_0x4ab883[_0xac4a('0x57')];_0x577904++){_0x4ab883[_0x577904][_0xac4a('0x10e')](_0xac4a('0x9b'),'Openchannel');}return _0x4ab883;}));return BPromise[_0xac4a('0x5c')](_0x5ab6ab);})[_0xac4a('0x36')](function(_0x233df7){var _0x24818c=_[_0xac4a('0x117')](_0x233df7);_0x5ab6ab=[];return db[_0xac4a('0x6a')]['transaction'](function(_0x3c37d5){for(var _0x19b891=0x0;_0x19b891<_0x24818c['length'];_0x19b891++){_0x5ab6ab[_0xac4a('0x44')](_0x24818c[_0x19b891][_0xac4a('0x118')](_0x464750['id']),{'transaction':_0x3c37d5});}return BPromise[_0xac4a('0x5c')](_0x5ab6ab)[_0xac4a('0x36')](function(){if(_0x464750[_0xac4a('0x9c')]){return BPromise[_0xac4a('0xab')](_['filter'](_0x24818c,function(_0x1113d7){return _0x1113d7[_0xac4a('0x119')]('channel')===_0xac4a('0x10f');}),function(_0x3bdb3a){return db[_0xac4a('0xb2')][_0xac4a('0xac')]({'membername':_0x464750[_0xac4a('0x34')],'UserId':_0x464750['id'],'queue_name':_0x3bdb3a['name'],'VoiceQueueId':_0x3bdb3a['id'],'interface':_['isNil'](_0x464750['interface'])?util[_0xac4a('0xaa')](_0xac4a('0xea'),_0x464750[_0xac4a('0x34')]):_0x464750[_0xac4a('0x9f')],'paused':_0x464750[_0xac4a('0x9e')]||![],'penalty':_0x464750[_0xac4a('0xa6')]},{'transaction':_0x3c37d5});});}else{return;}})['then'](function(){for(var _0x3f1dd9=0x0;_0x3f1dd9<_0x24818c[_0xac4a('0x57')];_0x3f1dd9++){var _0x202941=_0x24818c[_0x3f1dd9]['getDataValue']('channel');var _0x155ad2=_0x202941+_0xac4a('0xaf');socket[_0xac4a('0xa8')](_0xac4a('0x2b')+_0x202941+_0xac4a('0x11a'),{'UserId':_0x464750['id'],['queueField']:_0x24818c[_0x3f1dd9]['id']});}});});})[_0xac4a('0x36')](function(){db[_0xac4a('0x11b')]['findOne']({'where':{'teamId':_0x1356f2['id']}})[_0xac4a('0x36')](function(_0x5acc3b){if(_0x5acc3b){db[_0xac4a('0x11c')][_0xac4a('0x7f')]({'UserId':_0x395b96[_0xac4a('0x4f')]['id'],'VoicePrefixId':_0x5acc3b['VoicePrefixId']});}});});}});}})['then'](respondWithStatusCode(_0x45de07,null))[_0xac4a('0x1e')](handleError(_0x45de07,null));};exports['removeTeams']=function(_0x284cba,_0x3fb376){return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x284cba[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3fb376,null))[_0xac4a('0x36')](function(_0x1ceb21){if(_0x1ceb21){var _0x1b2143=_0x1ceb21[_0xac4a('0x28')]({'plain':!![]});var _0x2f5b94=_0x284cba[_0xac4a('0x52')]['ids'];return _0x1ceb21['removeTeams'](_0x2f5b94)['then'](function(){for(var _0x26ea09=0x0;_0x26ea09<_0x2f5b94['length'];_0x26ea09++){var _0x23665a=[];var _0x29b8ce={};db[_0xac4a('0x10b')][_0xac4a('0x95')]({'where':{'id':_0x2f5b94[_0x26ea09]}})['then'](function(_0x4e10a8){_0x29b8ce=_0x4e10a8[_0xac4a('0x4a')];_0x23665a['push'](_0x4e10a8['getVoiceQueues']()[_0xac4a('0x36')](function(_0x2d41a7){for(var _0x3a1693=0x0;_0x3a1693<_0x2d41a7[_0xac4a('0x57')];_0x3a1693++){_0x2d41a7[_0x3a1693][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x10f'));}return _0x2d41a7;}));_0x23665a['push'](_0x4e10a8['getChatQueues']()[_0xac4a('0x36')](function(_0x56ab23){for(var _0x29f19b=0x0;_0x29f19b<_0x56ab23[_0xac4a('0x57')];_0x29f19b++){_0x56ab23[_0x29f19b][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x110'));}return _0x56ab23;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8['getMailQueues']()[_0xac4a('0x36')](function(_0x21d0b5){for(var _0x414d20=0x0;_0x414d20<_0x21d0b5[_0xac4a('0x57')];_0x414d20++){_0x21d0b5[_0x414d20][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x112'));}return _0x21d0b5;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8[_0xac4a('0x113')]()[_0xac4a('0x36')](function(_0x599223){for(var _0x17657a=0x0;_0x17657a<_0x599223[_0xac4a('0x57')];_0x17657a++){_0x599223[_0x17657a][_0xac4a('0x10e')](_0xac4a('0x9b'),'Sms');}return _0x599223;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8[_0xac4a('0x11d')]()[_0xac4a('0x36')](function(_0x1d1bf4){for(var _0x4caa1b=0x0;_0x4caa1b<_0x1d1bf4[_0xac4a('0x57')];_0x4caa1b++){_0x1d1bf4[_0x4caa1b][_0xac4a('0x10e')]('channel',_0xac4a('0x115'));}return _0x1d1bf4;}));_0x23665a['push'](_0x4e10a8[_0xac4a('0x11e')]()[_0xac4a('0x36')](function(_0x59e742){for(var _0x477fef=0x0;_0x477fef<_0x59e742[_0xac4a('0x57')];_0x477fef++){_0x59e742[_0x477fef][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x11f'));}return _0x59e742;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8['getOpenchannelQueues']()['then'](function(_0x3fcc44){for(var _0x5d5f66=0x0;_0x5d5f66<_0x3fcc44[_0xac4a('0x57')];_0x5d5f66++){_0x3fcc44[_0x5d5f66][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x120'));}return _0x3fcc44;}));return BPromise['all'](_0x23665a);})['then'](function(_0x227c45){var _0x4b640b=_[_0xac4a('0x117')](_0x227c45);_0x23665a=[];return db[_0xac4a('0x6a')][_0xac4a('0x121')](function(_0x5795f2){for(var _0x15d0e5=0x0;_0x15d0e5<_0x4b640b[_0xac4a('0x57')];_0x15d0e5++){_0x23665a[_0xac4a('0x44')](_0x4b640b[_0x15d0e5]['removeAgent'](_0x1b2143['id']),{'transaction':_0x5795f2});}return BPromise[_0xac4a('0x5c')](_0x23665a)[_0xac4a('0x36')](function(){if(_0x1b2143[_0xac4a('0x9c')]){return BPromise[_0xac4a('0xab')](_[_0xac4a('0x2e')](_0x4b640b,function(_0x23b0f7){return _0x23b0f7[_0xac4a('0x119')]('channel')==='Voice';}),function(_0x43b1b7){return db[_0xac4a('0xb2')][_0xac4a('0x35')]({'where':{'VoiceQueueId':_0x43b1b7['id'],'UserId':_0x1b2143['id']},'transaction':_0x5795f2});});}else{return;}})[_0xac4a('0x36')](function(){db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x29b8ce['id']}})['then'](function(_0x53a31e){if(_0x53a31e){return db[_0xac4a('0x11c')][_0xac4a('0x35')]({'where':{'UserId':_0x1b2143['id'],'VoicePrefixId':_0x53a31e[_0xac4a('0x4a')][_0xac4a('0x122')]}});}});})['then'](function(){for(var _0x5bbe29=0x0;_0x5bbe29<_0x4b640b[_0xac4a('0x57')];_0x5bbe29++){var _0x23f369=_0x4b640b[_0x5bbe29][_0xac4a('0x119')]('channel');var _0x294895=_0x23f369+_0xac4a('0xaf');socket['emit'](_0xac4a('0x2b')+_0x23f369+'Queue:remove',{'UserId':_0x1b2143['id'],['queueField']:_0x4b640b[_0x5bbe29]['id']});}});});});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x3fb376,null))[_0xac4a('0x1e')](handleError(_0x3fb376,null));};exports[_0xac4a('0x123')]=function(_0x1eae11,_0x36a414){var _0x25a33e={};var _0x25dc7c={};var _0x148e35;var _0x2ddecc;return db[_0xac4a('0x3b')]['findOne']({'where':{'id':_0x1eae11[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x36a414,null))['then'](function(_0x534a2e){if(_0x534a2e){_0x148e35=_0x534a2e;_0x25dc7c[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x124')][_0xac4a('0x3c')]);_0x25dc7c[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x1eae11[_0xac4a('0x52')]);_0x25dc7c[_0xac4a('0x53')]=_['intersection'](_0x25dc7c[_0xac4a('0x55')],_0x25dc7c[_0xac4a('0x52')]);_0x25a33e[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x25dc7c[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x1eae11[_0xac4a('0x52')]['fields']));_0x25a33e[_0xac4a('0x43')]=_0x25a33e[_0xac4a('0x43')]['length']?_0x25a33e[_0xac4a('0x43')]:_0x25dc7c[_0xac4a('0x55')];_0x25a33e[_0xac4a('0xcb')]=qs['sort'](_0x1eae11[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x25a33e[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x1eae11[_0xac4a('0x52')],_0x25dc7c[_0xac4a('0x53')]));if(_0x1eae11[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x25a33e[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x25a33e[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x25a33e[_0xac4a('0x43')],function(_0x4b515f){var _0x2fe220={};_0x2fe220[_0x4b515f]={'$like':'%'+_0x1eae11['query'][_0xac4a('0x2e')]+'%'};return _0x2fe220;})});}_0x25a33e=_[_0xac4a('0x59')]({},_0x25a33e,_0x1eae11[_0xac4a('0xce')]);return _0x148e35['getLists'](_0x25a33e);}})[_0xac4a('0x36')](function(_0xfa96a6){if(_0xfa96a6){_0x2ddecc=_0xfa96a6['length'];if(!_0x1eae11[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x25a33e['limit']=qs['limit'](_0x1eae11['query'][_0xac4a('0x24')]);_0x25a33e[_0xac4a('0x22')]=qs['offset'](_0x1eae11[_0xac4a('0x52')]['offset']);}return _0x148e35[_0xac4a('0x123')](_0x25a33e);}})[_0xac4a('0x36')](function(_0x3ea923){if(_0x3ea923){return _0x3ea923?{'count':_0x2ddecc,'rows':_0x3ea923}:null;}})[_0xac4a('0x36')](respondWithResult(_0x36a414,null))[_0xac4a('0x1e')](handleError(_0x36a414,null));};exports[_0xac4a('0x125')]=function(_0x473b6c,_0x3228dc){var _0x203c8b={};var _0x3a01a1={};var _0x50dcdd;var _0x330437;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x473b6c[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3228dc,null))[_0xac4a('0x36')](function(_0x56b20e){if(_0x56b20e){_0x50dcdd=_0x56b20e;_0x3a01a1['model']=_['keys'](db[_0xac4a('0x3b')][_0xac4a('0x3c')]);_0x3a01a1[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x473b6c[_0xac4a('0x52')]);_0x3a01a1[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x3a01a1[_0xac4a('0x55')],_0x3a01a1['query']);_0x203c8b[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x3a01a1[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x473b6c[_0xac4a('0x52')][_0xac4a('0x56')]));_0x203c8b[_0xac4a('0x43')]=_0x203c8b[_0xac4a('0x43')][_0xac4a('0x57')]?_0x203c8b[_0xac4a('0x43')]:_0x3a01a1[_0xac4a('0x55')];_0x203c8b[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x473b6c[_0xac4a('0x52')]['sort']);_0x203c8b[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x473b6c[_0xac4a('0x52')],_0x3a01a1[_0xac4a('0x53')]));if(_0x473b6c[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x203c8b[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x203c8b['where'],{'$or':_[_0xac4a('0x30')](_0x203c8b[_0xac4a('0x43')],function(_0x1aeb19){var _0x45bb74={};_0x45bb74[_0x1aeb19]={'$like':'%'+_0x473b6c[_0xac4a('0x52')]['filter']+'%'};return _0x45bb74;})});}_0x203c8b['model']=db[_0xac4a('0x3b')];_0x203c8b['as']=_0xac4a('0x87');_0x203c8b=_['merge']({},_0x203c8b,_0x473b6c[_0xac4a('0xce')]);return _0x50dcdd[_0xac4a('0xf2')]({'include':[_0x203c8b]});}})[_0xac4a('0x36')](function(_0xcaac80){if(_0xcaac80){var _0x1e51c3={},_0xa25b84=[],_0x52139a=0x0;for(var _0x568d6c=0x0;_0x568d6c<_0xcaac80[_0xac4a('0x57')];_0x568d6c+=0x1){for(var _0x567c4e=0x0,_0x3426fb;_0x567c4e<_0xcaac80[_0x568d6c][_0xac4a('0x87')][_0xac4a('0x57')];_0x567c4e+=0x1){_0x3426fb=_0xcaac80[_0x568d6c]['Agents'][_0x567c4e][_0xac4a('0x28')]({'plain':!![]});_0x1e51c3[_0x3426fb['id']]=_0x3426fb;}}_0x1e51c3=_[_0xac4a('0x126')](_0x1e51c3);for(var _0x388f37=qs['offset'](_0x473b6c[_0xac4a('0x52')][_0xac4a('0x22')]);_0x388f37<_0x1e51c3[_0xac4a('0x57')]&&_0xa25b84[_0xac4a('0x57')]<qs[_0xac4a('0x24')](_0x473b6c['query'][_0xac4a('0x24')]);_0x388f37+=0x1){if(_0x1e51c3[_0x388f37]){_0xa25b84[_0xac4a('0x44')](_0x1e51c3[_0x388f37]);}}return{'count':_0x1e51c3['length'],'rows':_0xa25b84};}})['then'](respondWithResult(_0x3228dc,null))[_0xac4a('0x1e')](handleError(_0x3228dc,null));};exports[_0xac4a('0x35')]=function(_0x24e920,_0x331539){if(_0x24e920['user']['id']==_0x24e920[_0xac4a('0x4f')]['id']){return _0x331539['status'](0x1f4)[_0xac4a('0x39')]({'message':_0xac4a('0x127')});}return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x24e920['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x331539,null))[_0xac4a('0x36')](removeEntity(_0x331539,null))[_0xac4a('0x1e')](handleError(_0x331539,null));};exports[_0xac4a('0x128')]=function(_0x481dc5,_0x571bf9){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x481dc5[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x571bf9,null))[_0xac4a('0x36')](function(_0x1d1021){if(_0x1d1021){return _0x1d1021['addChatInteractions'](_0x481dc5[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x481dc5['body'],[_0xac4a('0x61'),'id'])||{})['spread'](function(){for(var _0x5d78e5=0x0;_0x5d78e5<_0x481dc5['body'][_0xac4a('0x61')][_0xac4a('0x57')];_0x5d78e5+=0x1){socket['emit'](_0xac4a('0x129'),{'ChatInteractionId':Number(_0x481dc5[_0xac4a('0x5e')]['ids'][_0x5d78e5]),'UserId':Number(_0x481dc5['params']['id'])});}return _0x481dc5['body'][_0xac4a('0x61')];});}})['then'](respondWithResult(_0x571bf9,null))[_0xac4a('0x1e')](handleError(_0x571bf9,null));};exports[_0xac4a('0x12a')]=function(_0x1c4be0,_0x5dfcb5){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x1c4be0[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x5dfcb5,null))[_0xac4a('0x36')](function(_0x342e3d){if(_0x342e3d){return _0x342e3d[_0xac4a('0x12a')](_0x1c4be0[_0xac4a('0x52')][_0xac4a('0x61')])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x1c4be0[_0xac4a('0x52')][_0xac4a('0x61')])){for(var _0xfd029b=0x0;_0xfd029b<_0x1c4be0['query'][_0xac4a('0x61')][_0xac4a('0x57')];_0xfd029b+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x12b'),{'ChatInteractionId':Number(_0x1c4be0['query']['ids'][_0xfd029b]),'UserId':Number(_0x1c4be0[_0xac4a('0x4f')]['id'])});}}else{socket[_0xac4a('0xa8')](_0xac4a('0x12b'),{'ChatInteractionId':Number(_0x1c4be0[_0xac4a('0x52')][_0xac4a('0x61')]),'UserId':Number(_0x1c4be0[_0xac4a('0x4f')]['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x5dfcb5,null))['catch'](handleError(_0x5dfcb5,null));};exports['addMailInteractions']=function(_0x4e064e,_0x4083be){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x4e064e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x4083be,null))[_0xac4a('0x36')](function(_0x59fcc6){if(_0x59fcc6){return _0x59fcc6['addMailInteractions'](_0x4e064e[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x4e064e[_0xac4a('0x5e')],['ids','id'])||{})['spread'](function(){for(var _0x2dab8a=0x0;_0x2dab8a<_0x4e064e[_0xac4a('0x5e')][_0xac4a('0x61')][_0xac4a('0x57')];_0x2dab8a+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x12c'),{'MailInteractionId':Number(_0x4e064e[_0xac4a('0x5e')][_0xac4a('0x61')][_0x2dab8a]),'UserId':Number(_0x4e064e[_0xac4a('0x4f')]['id'])});}return _0x4e064e['body'][_0xac4a('0x61')];});}})['then'](respondWithResult(_0x4083be,null))[_0xac4a('0x1e')](handleError(_0x4083be,null));};exports[_0xac4a('0x12d')]=function(_0x1d1ad2,_0x592b19){return db['User']['find']({'where':{'id':_0x1d1ad2[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x592b19,null))[_0xac4a('0x36')](function(_0x217412){if(_0x217412){return _0x217412['removeMailInteractions'](_0x1d1ad2[_0xac4a('0x52')]['ids'])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x1d1ad2[_0xac4a('0x52')]['ids'])){for(var _0x518696=0x0;_0x518696<_0x1d1ad2[_0xac4a('0x52')][_0xac4a('0x61')][_0xac4a('0x57')];_0x518696+=0x1){socket['emit'](_0xac4a('0x12e'),{'MailInteractionId':Number(_0x1d1ad2[_0xac4a('0x52')][_0xac4a('0x61')][_0x518696]),'UserId':Number(_0x1d1ad2['params']['id'])});}}else{socket['emit'](_0xac4a('0x12e'),{'MailInteractionId':Number(_0x1d1ad2['query'][_0xac4a('0x61')]),'UserId':Number(_0x1d1ad2['params']['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x592b19,null))[_0xac4a('0x1e')](handleError(_0x592b19,null));};exports[_0xac4a('0x12f')]=function(_0x422ced,_0x199ee3){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x422ced[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x199ee3,null))['then'](function(_0x452e81){if(_0x452e81){return _0x452e81[_0xac4a('0x12f')](_0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x422ced[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x1ed730=0x0;_0x1ed730<_0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')][_0xac4a('0x57')];_0x1ed730+=0x1){socket['emit'](_0xac4a('0x130'),{'FaxInteractionId':Number(_0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')][_0x1ed730]),'UserId':Number(_0x422ced[_0xac4a('0x4f')]['id'])});}return _0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')];});}})[_0xac4a('0x36')](respondWithResult(_0x199ee3,null))[_0xac4a('0x1e')](handleError(_0x199ee3,null));};exports[_0xac4a('0x131')]=function(_0xcd20c6,_0x16b874){return db['User'][_0xac4a('0x33')]({'where':{'id':_0xcd20c6[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x16b874,null))[_0xac4a('0x36')](function(_0x51df3e){if(_0x51df3e){return _0x51df3e[_0xac4a('0x131')](_0xcd20c6[_0xac4a('0x52')]['ids'])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0xcd20c6[_0xac4a('0x52')][_0xac4a('0x61')])){for(var _0x38dee5=0x0;_0x38dee5<_0xcd20c6['query'][_0xac4a('0x61')][_0xac4a('0x57')];_0x38dee5+=0x1){socket['emit'](_0xac4a('0x132'),{'FaxInteractionId':Number(_0xcd20c6[_0xac4a('0x52')]['ids'][_0x38dee5]),'UserId':Number(_0xcd20c6[_0xac4a('0x4f')]['id'])});}}else{socket['emit'](_0xac4a('0x132'),{'FaxInteractionId':Number(_0xcd20c6[_0xac4a('0x52')][_0xac4a('0x61')]),'UserId':Number(_0xcd20c6[_0xac4a('0x4f')]['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x16b874,null))[_0xac4a('0x1e')](handleError(_0x16b874,null));};exports[_0xac4a('0x133')]=function(_0x11835c,_0x5da578){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x11835c[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5da578,null))[_0xac4a('0x36')](function(_0x127d83){if(_0x127d83){return _0x127d83[_0xac4a('0x133')](_0x11835c[_0xac4a('0x5e')]['ids'],_[_0xac4a('0x62')](_0x11835c[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x9e4b02=0x0;_0x9e4b02<_0x11835c['body']['ids'][_0xac4a('0x57')];_0x9e4b02+=0x1){socket[_0xac4a('0xa8')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x11835c[_0xac4a('0x5e')][_0xac4a('0x61')][_0x9e4b02]),'UserId':Number(_0x11835c[_0xac4a('0x4f')]['id'])});}return _0x11835c['body'][_0xac4a('0x61')];});}})[_0xac4a('0x36')](respondWithResult(_0x5da578,null))['catch'](handleError(_0x5da578,null));};exports[_0xac4a('0x134')]=function(_0x399b9e,_0x29f1fe){return db['User']['find']({'where':{'id':_0x399b9e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x29f1fe,null))[_0xac4a('0x36')](function(_0x8b8246){if(_0x8b8246){return _0x8b8246['removeSmsInteractions'](_0x399b9e['query']['ids'])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x399b9e['query']['ids'])){for(var _0x346bc0=0x0;_0x346bc0<_0x399b9e['query'][_0xac4a('0x61')][_0xac4a('0x57')];_0x346bc0+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x135'),{'SmsInteractionId':Number(_0x399b9e['query'][_0xac4a('0x61')][_0x346bc0]),'UserId':Number(_0x399b9e[_0xac4a('0x4f')]['id'])});}}else{socket[_0xac4a('0xa8')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x399b9e['query'][_0xac4a('0x61')]),'UserId':Number(_0x399b9e[_0xac4a('0x4f')]['id'])});}});}})['then'](respondWithStatusCode(_0x29f1fe,null))['catch'](handleError(_0x29f1fe,null));};exports[_0xac4a('0x136')]=function(_0x1f3eda,_0x3c743a){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x1f3eda['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3c743a,null))[_0xac4a('0x36')](function(_0x2359a0){if(_0x2359a0){return _0x2359a0[_0xac4a('0x136')](_0x1f3eda[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x1f3eda[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x341656=0x0;_0x341656<_0x1f3eda['body'][_0xac4a('0x61')][_0xac4a('0x57')];_0x341656+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x137'),{'OpenchannelInteractionId':Number(_0x1f3eda[_0xac4a('0x5e')][_0xac4a('0x61')][_0x341656]),'UserId':Number(_0x1f3eda[_0xac4a('0x4f')]['id'])});}return _0x1f3eda['body']['ids'];});}})[_0xac4a('0x36')](respondWithResult(_0x3c743a,null))[_0xac4a('0x1e')](handleError(_0x3c743a,null));};exports[_0xac4a('0x138')]=function(_0x413ad7,_0x1cc60b){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x413ad7['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x1cc60b,null))[_0xac4a('0x36')](function(_0xbc5553){if(_0xbc5553){return _0xbc5553[_0xac4a('0x138')](_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')])){for(var _0x5cc39b=0x0;_0x5cc39b<_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')][_0xac4a('0x57')];_0x5cc39b+=0x1){socket[_0xac4a('0xa8')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x413ad7[_0xac4a('0x52')]['ids'][_0x5cc39b]),'UserId':Number(_0x413ad7[_0xac4a('0x4f')]['id'])});}}else{socket[_0xac4a('0xa8')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')]),'UserId':Number(_0x413ad7[_0xac4a('0x4f')]['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x1cc60b,null))[_0xac4a('0x1e')](handleError(_0x1cc60b,null));};exports[_0xac4a('0x139')]=function(_0x2615da,_0x46fae2){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x2615da['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x46fae2,null))[_0xac4a('0x36')](function(_0x406a4b){if(_0x406a4b){return _0x406a4b[_0xac4a('0x139')](_0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x2615da[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x3f946a=0x0;_0x3f946a<_0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')]['length'];_0x3f946a+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x13a'),{'WhatsappInteractionId':Number(_0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')][_0x3f946a]),'UserId':Number(_0x2615da['params']['id'])});}return _0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')];});}})[_0xac4a('0x36')](respondWithResult(_0x46fae2,null))['catch'](handleError(_0x46fae2,null));};exports['removeWhatsappInteractions']=function(_0x49c645,_0x3df3f5){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x49c645['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3df3f5,null))[_0xac4a('0x36')](function(_0x875558){if(_0x875558){return _0x875558[_0xac4a('0x13b')](_0x49c645[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x3df3f5,null))['catch'](handleError(_0x3df3f5,null));};exports[_0xac4a('0x13c')]=function(_0x58d820,_0x1e2ad7){var _0x5721c7={};var _0x34e838={};var _0x22df93;var _0x44eaa6;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x58d820[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1e2ad7,null))[_0xac4a('0x36')](function(_0x43f1db){if(_0x43f1db){_0x22df93=_0x43f1db;_0x34e838['model']=_[_0xac4a('0x51')](db[_0xac4a('0x13d')][_0xac4a('0x3c')]);_0x34e838[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x58d820[_0xac4a('0x52')]);_0x34e838['filters']=_[_0xac4a('0x54')](_0x34e838['model'],_0x34e838[_0xac4a('0x52')]);_0x5721c7[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x34e838['model'],qs['fields'](_0x58d820[_0xac4a('0x52')][_0xac4a('0x56')]));_0x5721c7[_0xac4a('0x43')]=_0x5721c7[_0xac4a('0x43')]['length']?_0x5721c7[_0xac4a('0x43')]:_0x34e838[_0xac4a('0x55')];_0x5721c7[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x58d820[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x5721c7[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x58d820[_0xac4a('0x52')],_0x34e838['filters']));if(_0x58d820['query'][_0xac4a('0x2e')]){_0x5721c7[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x5721c7[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x5721c7[_0xac4a('0x43')],function(_0x3ff4cf){var _0x504299={};_0x504299[_0x3ff4cf]={'$like':'%'+_0x58d820[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x504299;})});}_0x5721c7=_[_0xac4a('0x59')]({},_0x5721c7,_0x58d820[_0xac4a('0xce')]);return _0x22df93['getVoicePrefixes'](_0x5721c7);}})['then'](function(_0x19ab74){if(_0x19ab74){_0x44eaa6=_0x19ab74[_0xac4a('0x57')];if(!_0x58d820[_0xac4a('0x52')]['hasOwnProperty']('nolimit')){_0x5721c7[_0xac4a('0x24')]=qs['limit'](_0x58d820['query']['limit']);_0x5721c7[_0xac4a('0x22')]=qs['offset'](_0x58d820['query'][_0xac4a('0x22')]);}return _0x22df93[_0xac4a('0x13c')](_0x5721c7);}})[_0xac4a('0x36')](function(_0x12d390){if(_0x12d390){return _0x12d390?{'count':_0x44eaa6,'rows':_0x12d390}:null;}})[_0xac4a('0x36')](respondWithResult(_0x1e2ad7,null))['catch'](handleError(_0x1e2ad7,null));};exports[_0xac4a('0x13e')]=function(_0x1a0a62,_0x2afcd4){var _0x53bbb6={};var _0x3f98d5={};var _0x1eb021;var _0x4a3893;return db['User']['findOne']({'where':{'id':_0x1a0a62['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2afcd4,null))['then'](function(_0x23b821){if(_0x23b821){_0x1eb021=_0x23b821;_0x3f98d5['model']=_[_0xac4a('0x51')](db['FaxAccount'][_0xac4a('0x3c')]);_0x3f98d5[_0xac4a('0x52')]=_['keys'](_0x1a0a62[_0xac4a('0x52')]);_0x3f98d5[_0xac4a('0x53')]=_['intersection'](_0x3f98d5[_0xac4a('0x55')],_0x3f98d5[_0xac4a('0x52')]);_0x53bbb6[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x3f98d5[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x1a0a62['query'][_0xac4a('0x56')]));_0x53bbb6[_0xac4a('0x43')]=_0x53bbb6[_0xac4a('0x43')]['length']?_0x53bbb6[_0xac4a('0x43')]:_0x3f98d5[_0xac4a('0x55')];_0x53bbb6['order']=qs[_0xac4a('0xcc')](_0x1a0a62[_0xac4a('0x52')]['sort']);_0x53bbb6[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x1a0a62['query'],_0x3f98d5[_0xac4a('0x53')]));if(_0x1a0a62[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x53bbb6['where']=_['merge'](_0x53bbb6[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x53bbb6[_0xac4a('0x43')],function(_0x217110){var _0x3a0fb2={};_0x3a0fb2[_0x217110]={'$like':'%'+_0x1a0a62[_0xac4a('0x52')]['filter']+'%'};return _0x3a0fb2;})});}_0x53bbb6=_[_0xac4a('0x59')]({},_0x53bbb6,_0x1a0a62[_0xac4a('0xce')]);return _0x1eb021[_0xac4a('0x13e')](_0x53bbb6);}})[_0xac4a('0x36')](function(_0x540369){if(_0x540369){_0x4a3893=_0x540369['length'];if(!_0x1a0a62['query']['hasOwnProperty']('nolimit')){_0x53bbb6[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x1a0a62['query'][_0xac4a('0x24')]);_0x53bbb6[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x1a0a62[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x1eb021[_0xac4a('0x13e')](_0x53bbb6);}})[_0xac4a('0x36')](function(_0x4713b9){if(_0x4713b9){return _0x4713b9?{'count':_0x4a3893,'rows':_0x4713b9}:null;}})[_0xac4a('0x36')](respondWithResult(_0x2afcd4,null))[_0xac4a('0x1e')](handleError(_0x2afcd4,null));};exports[_0xac4a('0x13f')]=function(_0x388fd3,_0x43b011){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x388fd3['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x43b011,null))[_0xac4a('0x36')](function(_0x3c3496){if(_0x3c3496){return _0x3c3496[_0xac4a('0x13f')](_0x388fd3['body'][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x388fd3[_0xac4a('0x5e')],['ids','id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x43b011,null))[_0xac4a('0x1e')](handleError(_0x43b011,null));};exports[_0xac4a('0x140')]=function(_0x5ac813,_0x347f26){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5ac813[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x347f26,null))[_0xac4a('0x36')](function(_0x243a1c){if(_0x243a1c){return _0x243a1c['removeFaxAccounts'](_0x5ac813[_0xac4a('0x52')][_0xac4a('0x61')]);}})['then'](respondWithStatusCode(_0x347f26,null))[_0xac4a('0x1e')](handleError(_0x347f26,null));};exports['getMailAccounts']=function(_0x166cd1,_0x31a21e){var _0x397203={};var _0x119030={};var _0x552b5f;var _0xd3e39f;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x166cd1[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x31a21e,null))[_0xac4a('0x36')](function(_0x297ffa){if(_0x297ffa){_0x552b5f=_0x297ffa;_0x119030[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x141')][_0xac4a('0x3c')]);_0x119030[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x166cd1[_0xac4a('0x52')]);_0x119030[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x119030[_0xac4a('0x55')],_0x119030['query']);_0x397203[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x119030[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x166cd1[_0xac4a('0x52')][_0xac4a('0x56')]));_0x397203[_0xac4a('0x43')]=_0x397203[_0xac4a('0x43')][_0xac4a('0x57')]?_0x397203[_0xac4a('0x43')]:_0x119030[_0xac4a('0x55')];_0x397203[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x166cd1[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x397203[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x166cd1[_0xac4a('0x52')],_0x119030['filters']));if(_0x166cd1[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x397203[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x397203[_0xac4a('0x41')],{'$or':_['map'](_0x397203['attributes'],function(_0x1c306e){var _0x5d85d3={};_0x5d85d3[_0x1c306e]={'$like':'%'+_0x166cd1[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x5d85d3;})});}_0x397203=_['merge']({},_0x397203,_0x166cd1['options']);return _0x552b5f['getMailAccounts'](_0x397203);}})[_0xac4a('0x36')](function(_0xdd132c){if(_0xdd132c){_0xd3e39f=_0xdd132c[_0xac4a('0x57')];if(!_0x166cd1['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x397203[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x166cd1[_0xac4a('0x52')][_0xac4a('0x24')]);_0x397203['offset']=qs[_0xac4a('0x22')](_0x166cd1['query']['offset']);}return _0x552b5f[_0xac4a('0x142')](_0x397203);}})[_0xac4a('0x36')](function(_0x3d1654){if(_0x3d1654){return _0x3d1654?{'count':_0xd3e39f,'rows':_0x3d1654}:null;}})[_0xac4a('0x36')](respondWithResult(_0x31a21e,null))['catch'](handleError(_0x31a21e,null));};exports[_0xac4a('0x143')]=function(_0x274d06,_0x2e7f78){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x274d06[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2e7f78,null))[_0xac4a('0x36')](function(_0x375a32){if(_0x375a32){return _0x375a32['addMailAccounts'](_0x274d06['body'][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x274d06['body'],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x2e7f78,null))['catch'](handleError(_0x2e7f78,null));};exports['removeMailAccounts']=function(_0x519905,_0x6fe841){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x519905[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x6fe841,null))[_0xac4a('0x36')](function(_0x22e91c){if(_0x22e91c){return _0x22e91c[_0xac4a('0x144')](_0x519905[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x6fe841,null))['catch'](handleError(_0x6fe841,null));};exports[_0xac4a('0x145')]=function(_0x13f3ca,_0xb7a74a){var _0x342003={};var _0x50aaee={};var _0x5ee2ac;var _0x5594dd;return db['User']['findOne']({'where':{'id':_0x13f3ca['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0xb7a74a,null))[_0xac4a('0x36')](function(_0x42d60b){if(_0x42d60b){_0x5ee2ac=_0x42d60b;_0x50aaee[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x146')][_0xac4a('0x3c')]);_0x50aaee['query']=_[_0xac4a('0x51')](_0x13f3ca['query']);_0x50aaee[_0xac4a('0x53')]=_['intersection'](_0x50aaee['model'],_0x50aaee[_0xac4a('0x52')]);_0x342003[_0xac4a('0x43')]=_['intersection'](_0x50aaee[_0xac4a('0x55')],qs['fields'](_0x13f3ca[_0xac4a('0x52')][_0xac4a('0x56')]));_0x342003[_0xac4a('0x43')]=_0x342003[_0xac4a('0x43')][_0xac4a('0x57')]?_0x342003[_0xac4a('0x43')]:_0x50aaee[_0xac4a('0x55')];_0x342003['order']=qs[_0xac4a('0xcc')](_0x13f3ca[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x342003[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x13f3ca[_0xac4a('0x52')],_0x50aaee[_0xac4a('0x53')]));if(_0x13f3ca['query'][_0xac4a('0x2e')]){_0x342003[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x342003['where'],{'$or':_['map'](_0x342003[_0xac4a('0x43')],function(_0x7ee1d7){var _0xa9742={};_0xa9742[_0x7ee1d7]={'$like':'%'+_0x13f3ca[_0xac4a('0x52')]['filter']+'%'};return _0xa9742;})});}_0x342003=_[_0xac4a('0x59')]({},_0x342003,_0x13f3ca[_0xac4a('0xce')]);return _0x5ee2ac[_0xac4a('0x145')](_0x342003);}})[_0xac4a('0x36')](function(_0x46be11){if(_0x46be11){_0x5594dd=_0x46be11[_0xac4a('0x57')];if(!_0x13f3ca[_0xac4a('0x52')]['hasOwnProperty']('nolimit')){_0x342003['limit']=qs[_0xac4a('0x24')](_0x13f3ca[_0xac4a('0x52')][_0xac4a('0x24')]);_0x342003[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x13f3ca['query'][_0xac4a('0x22')]);}return _0x5ee2ac[_0xac4a('0x145')](_0x342003);}})[_0xac4a('0x36')](function(_0x4e640a){if(_0x4e640a){return _0x4e640a?{'count':_0x5594dd,'rows':_0x4e640a}:null;}})['then'](respondWithResult(_0xb7a74a,null))['catch'](handleError(_0xb7a74a,null));};exports[_0xac4a('0x147')]=function(_0x3ae56d,_0x3b7229){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x3ae56d[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3b7229,null))[_0xac4a('0x36')](function(_0x4f3248){if(_0x4f3248){return _0x4f3248[_0xac4a('0x147')](_0x3ae56d[_0xac4a('0x5e')]['ids'],_[_0xac4a('0x62')](_0x3ae56d['body'],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x3b7229,null))[_0xac4a('0x1e')](handleError(_0x3b7229,null));};exports['removeOpenchannelAccounts']=function(_0x6ee86a,_0x4487be){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x6ee86a['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x4487be,null))[_0xac4a('0x36')](function(_0x1a4c04){if(_0x1a4c04){return _0x1a4c04[_0xac4a('0x148')](_0x6ee86a[_0xac4a('0x52')]['ids']);}})[_0xac4a('0x36')](respondWithStatusCode(_0x4487be,null))['catch'](handleError(_0x4487be,null));};exports[_0xac4a('0x149')]=function(_0x448fbe,_0x56ebac){var _0x2642ad={};var _0x4eb1df={};var _0x1b2ccc;var _0x289566;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x448fbe[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x56ebac,null))[_0xac4a('0x36')](function(_0x2e67b8){if(_0x2e67b8){_0x1b2ccc=_0x2e67b8;_0x4eb1df['model']=_[_0xac4a('0x51')](db[_0xac4a('0x14a')][_0xac4a('0x3c')]);_0x4eb1df['query']=_[_0xac4a('0x51')](_0x448fbe[_0xac4a('0x52')]);_0x4eb1df[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x4eb1df[_0xac4a('0x55')],_0x4eb1df[_0xac4a('0x52')]);_0x2642ad['attributes']=_[_0xac4a('0x54')](_0x4eb1df[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x448fbe['query'][_0xac4a('0x56')]));_0x2642ad[_0xac4a('0x43')]=_0x2642ad['attributes'][_0xac4a('0x57')]?_0x2642ad[_0xac4a('0x43')]:_0x4eb1df[_0xac4a('0x55')];_0x2642ad[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x448fbe[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x2642ad[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x448fbe[_0xac4a('0x52')],_0x4eb1df[_0xac4a('0x53')]));if(_0x448fbe[_0xac4a('0x52')]['filter']){_0x2642ad[_0xac4a('0x41')]=_['merge'](_0x2642ad[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x2642ad[_0xac4a('0x43')],function(_0x18b400){var _0x23f2d6={};_0x23f2d6[_0x18b400]={'$like':'%'+_0x448fbe[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x23f2d6;})});}_0x2642ad=_[_0xac4a('0x59')]({},_0x2642ad,_0x448fbe['options']);return _0x1b2ccc[_0xac4a('0x149')](_0x2642ad);}})[_0xac4a('0x36')](function(_0x4e163a){if(_0x4e163a){_0x289566=_0x4e163a['length'];if(!_0x448fbe['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x2642ad[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x448fbe['query'][_0xac4a('0x24')]);_0x2642ad[_0xac4a('0x22')]=qs['offset'](_0x448fbe[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x1b2ccc[_0xac4a('0x149')](_0x2642ad);}})[_0xac4a('0x36')](function(_0x172db0){if(_0x172db0){return _0x172db0?{'count':_0x289566,'rows':_0x172db0}:null;}})[_0xac4a('0x36')](respondWithResult(_0x56ebac,null))[_0xac4a('0x1e')](handleError(_0x56ebac,null));};exports[_0xac4a('0x14b')]=function(_0xc063fa,_0x537960){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0xc063fa[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x537960,null))[_0xac4a('0x36')](function(_0xf5d245){if(_0xf5d245){return _0xf5d245['addSmsAccounts'](_0xc063fa[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0xc063fa['body'],[_0xac4a('0x61'),'id'])||{});}})['then'](respondWithResult(_0x537960,null))[_0xac4a('0x1e')](handleError(_0x537960,null));};exports[_0xac4a('0x14c')]=function(_0x2cae56,_0x2335ee){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x2cae56[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2335ee,null))[_0xac4a('0x36')](function(_0x2f6e17){if(_0x2f6e17){return _0x2f6e17[_0xac4a('0x14c')](_0x2cae56['query'][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x2335ee,null))[_0xac4a('0x1e')](handleError(_0x2335ee,null));};exports[_0xac4a('0x14d')]=function(_0x383b33,_0x39811d){var _0x4ed3b2={};var _0x15a1a2={};var _0x5b8bee;var _0x34e00d;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x383b33['params']['id']}})['then'](handleEntityNotFound(_0x39811d,null))['then'](function(_0x20f25d){if(_0x20f25d){_0x5b8bee=_0x20f25d;_0x15a1a2[_0xac4a('0x55')]=_['keys'](db[_0xac4a('0x14e')][_0xac4a('0x3c')]);_0x15a1a2[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x383b33['query']);_0x15a1a2[_0xac4a('0x53')]=_['intersection'](_0x15a1a2['model'],_0x15a1a2[_0xac4a('0x52')]);_0x4ed3b2[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x15a1a2['model'],qs[_0xac4a('0x56')](_0x383b33[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4ed3b2[_0xac4a('0x43')]=_0x4ed3b2[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4ed3b2[_0xac4a('0x43')]:_0x15a1a2[_0xac4a('0x55')];_0x4ed3b2[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x383b33['query']['sort']);_0x4ed3b2[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x383b33['query'],_0x15a1a2[_0xac4a('0x53')]));if(_0x383b33[_0xac4a('0x52')]['filter']){_0x4ed3b2[_0xac4a('0x41')]=_['merge'](_0x4ed3b2[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x4ed3b2[_0xac4a('0x43')],function(_0x398379){var _0x480bc7={};_0x480bc7[_0x398379]={'$like':'%'+_0x383b33[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x480bc7;})});}_0x4ed3b2=_[_0xac4a('0x59')]({},_0x4ed3b2,_0x383b33[_0xac4a('0xce')]);return _0x5b8bee[_0xac4a('0x14d')](_0x4ed3b2);}})[_0xac4a('0x36')](function(_0x59d40d){if(_0x59d40d){_0x34e00d=_0x59d40d[_0xac4a('0x57')];if(!_0x383b33['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x4ed3b2[_0xac4a('0x24')]=qs['limit'](_0x383b33['query'][_0xac4a('0x24')]);_0x4ed3b2[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x383b33['query'][_0xac4a('0x22')]);}return _0x5b8bee[_0xac4a('0x14d')](_0x4ed3b2);}})[_0xac4a('0x36')](function(_0x420e69){if(_0x420e69){return _0x420e69?{'count':_0x34e00d,'rows':_0x420e69}:null;}})[_0xac4a('0x36')](respondWithResult(_0x39811d,null))['catch'](handleError(_0x39811d,null));};exports[_0xac4a('0x14f')]=function(_0x3cf003,_0x5652e0){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x3cf003[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x5652e0,null))[_0xac4a('0x36')](function(_0x209d8e){if(_0x209d8e){return _0x209d8e[_0xac4a('0x14f')](_0x3cf003[_0xac4a('0x5e')][_0xac4a('0x61')],_['omit'](_0x3cf003[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x5652e0,null))['catch'](handleError(_0x5652e0,null));};exports[_0xac4a('0x150')]=function(_0x1c3c47,_0x21f9ca){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x1c3c47[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x21f9ca,null))[_0xac4a('0x36')](function(_0x41569e){if(_0x41569e){return _0x41569e[_0xac4a('0x150')](_0x1c3c47[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x21f9ca,null))['catch'](handleError(_0x21f9ca,null));};exports[_0xac4a('0x151')]=function(_0x2ac340,_0x1e9316){var _0x159ba8={};var _0x58ca47={};var _0x15dbe0;var _0x147f8f;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x2ac340[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x1e9316,null))[_0xac4a('0x36')](function(_0x2e5332){if(_0x2e5332){_0x15dbe0=_0x2e5332;_0x58ca47[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x152')][_0xac4a('0x3c')]);_0x58ca47[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x2ac340['query']);_0x58ca47[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x58ca47[_0xac4a('0x55')],_0x58ca47[_0xac4a('0x52')]);_0x159ba8[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x58ca47[_0xac4a('0x55')],qs['fields'](_0x2ac340[_0xac4a('0x52')][_0xac4a('0x56')]));_0x159ba8[_0xac4a('0x43')]=_0x159ba8[_0xac4a('0x43')][_0xac4a('0x57')]?_0x159ba8[_0xac4a('0x43')]:_0x58ca47[_0xac4a('0x55')];_0x159ba8[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x2ac340[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x159ba8[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x2ac340[_0xac4a('0x52')],_0x58ca47[_0xac4a('0x53')]));if(_0x2ac340[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x159ba8['where']=_['merge'](_0x159ba8[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x159ba8['attributes'],function(_0x36374f){var _0x30fb11={};_0x30fb11[_0x36374f]={'$like':'%'+_0x2ac340[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x30fb11;})});}_0x159ba8=_[_0xac4a('0x59')]({},_0x159ba8,_0x2ac340[_0xac4a('0xce')]);return _0x15dbe0[_0xac4a('0x151')](_0x159ba8);}})[_0xac4a('0x36')](function(_0x228d2d){if(_0x228d2d){_0x147f8f=_0x228d2d['length'];if(!_0x2ac340[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x159ba8['limit']=qs[_0xac4a('0x24')](_0x2ac340[_0xac4a('0x52')][_0xac4a('0x24')]);_0x159ba8[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x2ac340[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x15dbe0['getWhatsappAccounts'](_0x159ba8);}})[_0xac4a('0x36')](function(_0x728e30){if(_0x728e30){return _0x728e30?{'count':_0x147f8f,'rows':_0x728e30}:null;}})[_0xac4a('0x36')](respondWithResult(_0x1e9316,null))[_0xac4a('0x1e')](handleError(_0x1e9316,null));};exports['addWhatsappAccounts']=function(_0x57954c,_0x14dd8e){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x57954c[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x14dd8e,null))[_0xac4a('0x36')](function(_0x50ff57){if(_0x50ff57){return _0x50ff57[_0xac4a('0x153')](_0x57954c['body']['ids'],_[_0xac4a('0x62')](_0x57954c[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{});}})['then'](respondWithResult(_0x14dd8e,null))[_0xac4a('0x1e')](handleError(_0x14dd8e,null));};exports[_0xac4a('0x154')]=function(_0x6513fc,_0x1e2273){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x6513fc['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x1e2273,null))['then'](function(_0x2c686c){if(_0x2c686c){return _0x2c686c[_0xac4a('0x154')](_0x6513fc[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x1e2273,null))[_0xac4a('0x1e')](handleError(_0x1e2273,null));};exports[_0xac4a('0x155')]=function(_0x223283,_0x24ee44){var _0x4e893b={};var _0x2f70e9={};var _0x403cf4;var _0x114614;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x223283[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x24ee44,null))['then'](function(_0x10d8c4){if(_0x10d8c4){_0x403cf4=_0x10d8c4;_0x2f70e9[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x156')][_0xac4a('0x3c')]);_0x2f70e9['query']=_[_0xac4a('0x51')](_0x223283['query']);_0x2f70e9[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x2f70e9['model'],_0x2f70e9[_0xac4a('0x52')]);_0x4e893b['attributes']=_[_0xac4a('0x54')](_0x2f70e9[_0xac4a('0x55')],qs['fields'](_0x223283[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4e893b['attributes']=_0x4e893b[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4e893b[_0xac4a('0x43')]:_0x2f70e9[_0xac4a('0x55')];_0x4e893b[_0xac4a('0xcb')]=qs['sort'](_0x223283['query'][_0xac4a('0xcc')]);_0x4e893b['where']=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x223283[_0xac4a('0x52')],_0x2f70e9['filters']));if(_0x223283[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x4e893b['where']=_['merge'](_0x4e893b[_0xac4a('0x41')],{'$or':_['map'](_0x4e893b[_0xac4a('0x43')],function(_0x5c53a6){var _0x2a8d3f={};_0x2a8d3f[_0x5c53a6]={'$like':'%'+_0x223283[_0xac4a('0x52')]['filter']+'%'};return _0x2a8d3f;})});}_0x4e893b=_[_0xac4a('0x59')]({},_0x4e893b,_0x223283[_0xac4a('0xce')]);return _0x403cf4[_0xac4a('0x155')](_0x4e893b);}})[_0xac4a('0x36')](function(_0x38cb8e){if(_0x38cb8e){_0x114614=_0x38cb8e[_0xac4a('0x57')];if(!_0x223283[_0xac4a('0x52')]['hasOwnProperty'](_0xac4a('0xd4'))){_0x4e893b[_0xac4a('0x24')]=qs['limit'](_0x223283[_0xac4a('0x52')]['limit']);_0x4e893b[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x223283[_0xac4a('0x52')]['offset']);}return _0x403cf4[_0xac4a('0x155')](_0x4e893b);}})[_0xac4a('0x36')](function(_0x261b52){if(_0x261b52){return _0x261b52?{'count':_0x114614,'rows':_0x261b52}:null;}})[_0xac4a('0x36')](respondWithResult(_0x24ee44,null))[_0xac4a('0x1e')](handleError(_0x24ee44,null));};exports[_0xac4a('0x157')]=function(_0x405968,_0x37257f){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x405968[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x37257f,null))[_0xac4a('0x36')](function(_0x325f32){if(_0x325f32){return _0x325f32[_0xac4a('0x157')](_0x405968[_0xac4a('0x5e')]['ids'],_[_0xac4a('0x62')](_0x405968[_0xac4a('0x5e')],['ids','id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x37257f,null))[_0xac4a('0x1e')](handleError(_0x37257f,null));};exports[_0xac4a('0x158')]=function(_0x20f20e,_0x26a10c){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x20f20e['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x26a10c,null))[_0xac4a('0x36')](function(_0x4c6cb7){if(_0x4c6cb7){return _0x4c6cb7[_0xac4a('0x158')](_0x20f20e[_0xac4a('0x52')]['ids']);}})['then'](respondWithStatusCode(_0x26a10c,null))[_0xac4a('0x1e')](handleError(_0x26a10c,null));};exports['getScheduledCalls']=function(_0x30ccd8,_0x3536a6){var _0x4af765={},_0x59d674={},_0x13ccf8={'count':0x0,'rows':[]};var _0x42d5cd=db[_0xac4a('0x159')]['rawAttributes'];_0x59d674[_0xac4a('0x55')]=_[_0xac4a('0x51')](_0x42d5cd);_0x59d674[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x30ccd8[_0xac4a('0x52')]);_0x59d674[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x59d674[_0xac4a('0x55')],_0x59d674[_0xac4a('0x52')]);_0x59d674[_0xac4a('0x53')]=_[_0xac4a('0x15a')](_0x59d674['filters'],[_0xac4a('0x15b'),_0xac4a('0x15c'),_0xac4a('0x15d'),_0xac4a('0x15e'),_0xac4a('0x15f'),_0xac4a('0x160'),_0xac4a('0x161'),_0xac4a('0x162'),'$not',_0xac4a('0x163'),_0xac4a('0x164'),_0xac4a('0x165'),_0xac4a('0x166'),_0xac4a('0x167'),'$notLike','$iLike','$notILike',_0xac4a('0x167'),_0xac4a('0x168'),'$contains','$contained',_0xac4a('0x169')]);_0x4af765[_0xac4a('0x43')]=_['intersection'](_0x59d674['model'],qs[_0xac4a('0x56')](_0x30ccd8['query'][_0xac4a('0x56')]));_0x4af765[_0xac4a('0x43')]=_0x4af765[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4af765[_0xac4a('0x43')]:_0x59d674[_0xac4a('0x55')];if(!_0x30ccd8['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x4af765[_0xac4a('0x24')]=qs['limit'](_0x30ccd8[_0xac4a('0x52')][_0xac4a('0x24')]);_0x4af765['offset']=qs['offset'](_0x30ccd8[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x4af765[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x30ccd8['query'][_0xac4a('0xcc')]);_0x4af765[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x30ccd8['query'],_0x59d674[_0xac4a('0x53')]));if(_0x30ccd8['query'][_0xac4a('0x2e')]){_0x4af765[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x4af765[_0xac4a('0x41')],{'$or':_['map'](_0x4af765[_0xac4a('0x43')],function(_0x5d64e2){var _0x133882={};_0x133882[_0x5d64e2]={'$like':'%'+_0x30ccd8[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x133882;})});}_0x4af765[_0xac4a('0x41')]={'$and':[_0x4af765['where'],{'$or':[{'UserId':_0x30ccd8[_0xac4a('0x4f')]['id']},{'OwnerId':_0x30ccd8[_0xac4a('0x4f')]['id']}]}]};_0x4af765=_[_0xac4a('0x59')]({},_0x4af765,_0x30ccd8[_0xac4a('0xce')]);var _0x36dbef={'where':_0x4af765['where']};return db['CmHopper'][_0xac4a('0x25')](_0x36dbef)[_0xac4a('0x36')](function(_0x95e7a6){_0x13ccf8[_0xac4a('0x25')]=_0x95e7a6;if(_0x30ccd8['query'][_0xac4a('0x58')]){_0x4af765[_0xac4a('0x42')]=[{'attributes':['id','firstName',_0xac4a('0x16a'),'phone'],'model':db[_0xac4a('0xca')],'as':'Contact'},{'attributes':['id',_0xac4a('0x34'),_0xac4a('0x16b')],'model':db[_0xac4a('0xa9')],'as':_0xac4a('0xd6')}];}return db[_0xac4a('0x159')]['findAll'](_0x4af765);})[_0xac4a('0x36')](function(_0x230c33){_0x13ccf8[_0xac4a('0x46')]=_0x230c33;return _0x13ccf8;})[_0xac4a('0x36')](respondWithFilteredResult(_0x3536a6,_0x4af765))[_0xac4a('0x1e')](handleError(_0x3536a6,null));};exports[_0xac4a('0x16c')]=function(_0x1d40ba,_0x4345f0){if(!_[_0xac4a('0x68')](_0x1d40ba[_0xac4a('0x2b')]['id'])&&(_0x1d40ba[_0xac4a('0x2b')]['role']==_0xac4a('0x2a')||_0x1d40ba[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2b'))){return db['User']['findOne']({'where':{'id':_0x1d40ba[_0xac4a('0x4f')]['id']},'raw':!![]})[_0xac4a('0x36')](function(_0x41e661){return authService[_0xac4a('0x16d')](_0x41e661);})[_0xac4a('0x36')](function(_0x1ba78b){if(_0x1ba78b){return _0x4345f0[_0xac4a('0x1f')](0xc8)['json']({'api_key':_0x1ba78b[_0xac4a('0x16e')]});}else{return _0x4345f0[_0xac4a('0x1f')](0xcc)[_0xac4a('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0x4345f0,0x193));}else{return _0x4345f0['status'](0x191)['json']({'message':_0xac4a('0x16f')});}};exports[_0xac4a('0x170')]=function(_0x30eac4,_0xda9734){if(!_[_0xac4a('0x68')](_0x30eac4['user']['id'])&&(_0x30eac4[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2a')||_0x30eac4[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2b'))){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x30eac4[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](function(_0x361666){return authService[_0xac4a('0x171')](_0x361666);})['then'](function(_0x225a46){return db[_0xac4a('0x3b')][_0xac4a('0x5d')]({'apiKeyIat':_0x225a46[_0xac4a('0x172')],'apiKeyNonce':_0x225a46[_0xac4a('0x173')]},{'where':{'id':_0x30eac4[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](function(){return _0xda9734['status'](0xc8)[_0xac4a('0x21')]({'api_key':_0x225a46[_0xac4a('0x16e')]});});})['catch'](handleError(_0xda9734,0x193));}else{return _0xda9734[_0xac4a('0x1f')](0x191)[_0xac4a('0x21')]({'message':_0xac4a('0x16f')});}};exports['removeApiKey']=function(_0x8e5c45,_0x3dca47){if(!_[_0xac4a('0x68')](_0x8e5c45[_0xac4a('0x2b')]['id'])&&(_0x8e5c45[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2a')||_0x8e5c45['user'][_0xac4a('0x29')]==_0xac4a('0x2b'))){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x8e5c45['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3dca47,null))[_0xac4a('0x36')](function(_0x124e53){if(_0x124e53&&_0x124e53['apiKeyNonce']&&_0x124e53[_0xac4a('0x174')])return _0x124e53;else throw{'message':_0xac4a('0x175')};})[_0xac4a('0x36')](function(_0x507470){return db['User'][_0xac4a('0x5d')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x8e5c45[_0xac4a('0x4f')]['id']}});})[_0xac4a('0x36')](respondWithStatusCode(_0x3dca47,0xc8))[_0xac4a('0x1e')](handleError(_0x3dca47,0x193));}else{return _0x3dca47[_0xac4a('0x1f')](0x191)[_0xac4a('0x21')]({'message':_0xac4a('0x16f')});}};exports[_0xac4a('0x176')]=function(_0xfa50d6,_0xd6b9cc){var _0x2364f7=_0xfa50d6[_0xac4a('0x2b')]['get']({'plain':!![]});if(!_0x2364f7){return _0xd6b9cc['status'](0x191)[_0xac4a('0x39')](_0xac4a('0x177'));}else{return _0xd6b9cc[_0xac4a('0x1f')](0xc8)['json'](_0x2364f7);}};exports['getPresence']=function(_0x35dfd0,_0x57bba0){var _0x13b8a9={'offset':0x0},_0x1088c0={'count':0x0,'rows':[]};Promise[_0xac4a('0x178')]()['then'](function(){if(!_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')]&&!_0x35dfd0[_0xac4a('0x52')]['teams']&&!_0x35dfd0['query'][_0xac4a('0x179')])return[];return Promise[_0xac4a('0x178')]()[_0xac4a('0x36')](function(){var _0xc04c3b=[];if(!_[_0xac4a('0x17a')](_0x35dfd0[_0xac4a('0x52')]['teams'])){_0xc04c3b['push'](db[_0xac4a('0x10b')][_0xac4a('0x45')]({'attributes':['id','name'],'where':{'id':_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x17b')]}}));}if(!_[_0xac4a('0x17a')](_0x35dfd0[_0xac4a('0x52')]['queues'])){_0xc04c3b['push'](db[_0xac4a('0xa9')][_0xac4a('0x45')]({'attributes':['id','name'],'type':'inbound','where':{'id':_0x35dfd0[_0xac4a('0x52')]['queues']}}));}return Promise[_0xac4a('0x5c')](_0xc04c3b);})[_0xac4a('0x36')](function(_0x10ebf3){var _0x5ec64c=_[_0xac4a('0x117')](_0x10ebf3)[_0xac4a('0x30')](function(_0x30c6f7){return _0x30c6f7[_0xac4a('0x125')]({'attributes':['id',_0xac4a('0x34'),_0xac4a('0x63'),_0xac4a('0x9c')],'raw':!![]});});return Promise[_0xac4a('0x5c')](_0x5ec64c);})['then'](function(_0x36e82d){var _0x2675b0=_[_0xac4a('0x117')](_0x36e82d);if(!_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')])return _0x2675b0;if(_[_0xac4a('0x17a')](_0x2675b0)){return db[_0xac4a('0x3b')]['findAll']({'attributes':['id','name',_0xac4a('0x63'),'online'],'where':{'role':_0xac4a('0x2c'),'$or':[db[_0xac4a('0x6a')][_0xac4a('0x41')](db[_0xac4a('0x6a')]['fn']('lower',db[_0xac4a('0x6a')][_0xac4a('0x17c')](_0xac4a('0x34'))),{'$like':'%'+_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')][_0xac4a('0xa4')]()+'%'}),{'internal':{'$like':'%'+_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'}}]},'raw':!![]});}else{return _(_0x2675b0)['flatten']()[_0xac4a('0x2e')](function(_0x55f102){return _0x55f102['name']['toLowerCase']()[_0xac4a('0x32')](_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')]['toLowerCase']())||_0x55f102['internal'][_0xac4a('0x17d')]()[_0xac4a('0x32')](_0x35dfd0[_0xac4a('0x52')]['filter']);})[_0xac4a('0x31')]();}})[_0xac4a('0x36')](function(_0x202afd){var _0x491a2f=_0xac4a('0x34');var _0x10f7bf='asc';if(_0x35dfd0['query'][_0xac4a('0xcc')]){var _0x10f7bf=_0x35dfd0['query'][_0xac4a('0xcc')][0x0]==='-'?_0xac4a('0x17e'):'asc';var _0x491a2f=_0x10f7bf==='asc'?_0x35dfd0[_0xac4a('0x52')]['sort']:_0x35dfd0[_0xac4a('0x52')][_0xac4a('0xcc')][_0xac4a('0x17f')](0x1);}return _(_0x202afd)[_0xac4a('0x180')]('id')[_0xac4a('0x181')]([function(_0x4b109c){return _0x491a2f==='name'?_0x4b109c[_0x491a2f]['toLowerCase']():_0x4b109c[_0x491a2f];}],[_0x10f7bf])['map'](function(_0x19dde9){return _[_0xac4a('0xcd')](_0x19dde9,['id',_0xac4a('0x34'),'internal','online']);})[_0xac4a('0x31')]();})[_0xac4a('0x36')](function(_0x37721b){return client[_0xac4a('0x14')]('Agents',_0x35dfd0)[_0xac4a('0x36')](function(_0x1c77f2){if(_0x1c77f2[_0xac4a('0x1b')])throw new Error(_0xac4a('0x182'));var _0x1bd963=_0x1c77f2[_0xac4a('0x183')];var _0x12b847=jayson['client']['http']({'port':0x232c});return _0x12b847[_0xac4a('0x14')](_0xac4a('0x87'),_0x35dfd0)[_0xac4a('0x36')](function(_0x5605ac){if(_0x5605ac[_0xac4a('0x1b')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x206817=_0x5605ac[_0xac4a('0x183')];return _[_0xac4a('0x59')]({},_0x206817,_0x1bd963);});})[_0xac4a('0x36')](function(_0x461cf8){return _[_0xac4a('0x30')](_0x37721b,function(_0x21b463){var _0xe01d23=_[_0xac4a('0x33')](_0x461cf8[_0xac4a('0x46')],['id',_0x21b463['id']]);if(!_0xe01d23||!_0x21b463[_0xac4a('0x9c')]){_0x21b463[_0xac4a('0x1f')]=_0xac4a('0x184');}else if(_0xe01d23['voicePause']){_0x21b463[_0xac4a('0x1f')]=_0xac4a('0x185');}else{_0x21b463[_0xac4a('0x1f')]=_['includes'](['idle',_0xac4a('0x186'),_0xac4a('0x187'),_0xac4a('0x188'),null,undefined],_0xe01d23[_0xac4a('0x189')])?_0xac4a('0x9c'):_0xac4a('0x18a');}return _0x21b463;});});});})[_0xac4a('0x36')](function(_0xc6382f){if(!_0x35dfd0[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x13b8a9['limit']=qs[_0xac4a('0x24')](_0x35dfd0[_0xac4a('0x52')]['limit']||0xa);_0x13b8a9[_0xac4a('0x22')]=qs['offset'](_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x1088c0[_0xac4a('0x25')]=_0xc6382f[_0xac4a('0x57')];_0x1088c0[_0xac4a('0x46')]=_0x13b8a9[_0xac4a('0x24')]?_0xc6382f[_0xac4a('0x18b')](_0x13b8a9[_0xac4a('0x22')],_0x13b8a9[_0xac4a('0x22')]+_0x13b8a9[_0xac4a('0x24')]):_0xc6382f;return _0x1088c0;})[_0xac4a('0x36')](respondWithFilteredResult(_0x57bba0,_0x13b8a9))[_0xac4a('0x1e')](handleError(_0x57bba0,null));};function get_open_tabs(_0xbd5b13,_0x5db1da){var _0xd7003=_0xbd5b13[_0xac4a('0x18c')](0x0)['toUpperCase']()+_0xbd5b13[_0xac4a('0x18b')](0x1);var _0x2b1926={'type':db[_0xac4a('0x8c')][_0xac4a('0x6c')]['SELECT'],'raw':!![]};return new BPromise(function(_0x262c5d,_0x27d848){var _0x573aae=squel['select']()[_0xac4a('0x18d')](_0xac4a('0x18e')+_0xd7003+_0xac4a('0x18f'),'id')[_0xac4a('0x18d')]('ui.createdAt')[_0xac4a('0x6e')]('user_has_'+_0xbd5b13+'_interactions','ui')[_0xac4a('0x41')]('ui.UserId\x20=\x20?',_0x5db1da['id']);return db[_0xac4a('0x6a')]['query'](_0x573aae[_0xac4a('0x17d')](),_0x2b1926)[_0xac4a('0x36')](function(_0x24b44f){_0x5db1da[_0xd7003+_0xac4a('0x190')]=_0x24b44f;_0x262c5d(_0x24b44f);})[_0xac4a('0x1e')](function(_0x2a5286){_0x27d848(_0x2a5286);});});};
\ No newline at end of file
+var _0x2542=['Users','user','Agents','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','sendStatus','send','index','rawAttributes','fieldName','key','password','salt','User','query','includeAll','attributes','push','rows','openTabs','length','chat','dataValues','sms','fax','mail','openchannel','whatsapp','all','show','params','model','keys','filters','intersection','fields','options','body','describe','addContacts','ids','internal','max','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','102','113','106','108','109','111','114','115','create','agent','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','findAll','isEmpty','autoAssociation','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','emit','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','QueueId','Queue:remove','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WHATSAPP','findOne','CmContact','order','sort','where','pick','merge','hasOwnProperty','include','List','Tag','Tags','color','tag','nolimit','getContacts','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','ChatInteraction','getChatInteractions','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','mobile','intrf','user:%s','user:forcelogout','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','LOGIN','PAUSE','YYYY-MM-DD\x20HH:mm:ss','LOGININPAUSE','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','type','chatPause','faxPause','openchannelPause','smsPause','pauseType','unpause','manual','%s%s','Pause','getTeams','Team','addTeams','setDataValue','Voice','getChatQueues','Chat','getMailQueues','getSmsQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','flatten','transaction','addAgent','getDataValue','Queue:save','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Mail','Sms','getLists','getAgents','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','omit','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','isArray','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','VoicePrefix','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','addSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','concat','$and','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','CmHopper','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','apiKeyIat','whoami','getPresence','teams','queues','inbound','lower','toString','asc','desc','uniqBy','orderBy','client','offline','idle','unknown','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','field','ui.','InteractionId','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','bluebird','util','path','squel','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','./user.socket','register','defaults','localhost','http','request','then','info','request\x20sent','debug','stringify','error','code','message','User,\x20%s,\x20%s','result','catch','end','offset','undefined','limit','count','status','Content-Range','json','update','destroy','get','role','admin'];(function(_0x209fa6,_0x5bc5e3){var _0x5ccd78=function(_0x1583ad){while(--_0x1583ad){_0x209fa6['push'](_0x209fa6['shift']());}};_0x5ccd78(++_0x5bc5e3);}(_0x2542,0x169));var _0x2254=function(_0x5f2320,_0x1e58dc){_0x5f2320=_0x5f2320-0x0;var _0x10d1d8=_0x2542[_0x5f2320];return _0x10d1d8;};'use strict';var moment=require(_0x2254('0x0'));var BPromise=require(_0x2254('0x1'));var util=require(_0x2254('0x2'));var path=require(_0x2254('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x2254('0x4'));var jayson=require('jayson/promise');var Redis=require(_0x2254('0x5'));var authService=require(_0x2254('0x6'));var qs=require(_0x2254('0x7'));var logger=require(_0x2254('0x8'))(_0x2254('0x9'));var utils=require('../../config/utils');var config=require(_0x2254('0xa'));var licenseUtil=require(_0x2254('0xb'));var db=require(_0x2254('0xc'))['db'];var socket=require(_0x2254('0xd'))(new Redis(config[_0x2254('0xe')]));require(_0x2254('0xf'))[_0x2254('0x10')](socket);config[_0x2254('0xe')]=_[_0x2254('0x11')](config[_0x2254('0xe')],{'host':_0x2254('0x12'),'port':0x18eb});var client=jayson['client'][_0x2254('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x2655ea,_0x506abe,_0x143c90,_0x575d58){return new BPromise(function(_0x524fad,_0xe4fc71){var _0x3e4213=_0x575d58||client;return _0x3e4213[_0x2254('0x14')](_0x2655ea,_0x143c90)[_0x2254('0x15')](function(_0x3c326b){logger[_0x2254('0x16')]('User,\x20%s,\x20%s',_0x506abe,_0x2254('0x17'));logger[_0x2254('0x18')]('User,\x20%s,\x20%s,\x20%s',_0x506abe,_0x2254('0x17'),JSON[_0x2254('0x19')](_0x3c326b));if(_0x3c326b[_0x2254('0x1a')]){if(_0x3c326b[_0x2254('0x1a')][_0x2254('0x1b')]===0x1f4){logger[_0x2254('0x1a')]('User,\x20%s,\x20%s',_0x506abe,_0x3c326b[_0x2254('0x1a')]['message']);return _0xe4fc71(_0x3c326b[_0x2254('0x1a')][_0x2254('0x1c')]);}logger[_0x2254('0x1a')](_0x2254('0x1d'),_0x506abe,_0x3c326b[_0x2254('0x1a')][_0x2254('0x1c')]);return _0x524fad(_0x3c326b['error']['message']);}else{logger['info'](_0x2254('0x1d'),_0x506abe,_0x2254('0x17'));_0x524fad(_0x3c326b[_0x2254('0x1e')][_0x2254('0x1c')]);}})[_0x2254('0x1f')](function(_0x2339bc){logger['error'](_0x2254('0x1d'),_0x506abe,_0x2339bc);_0xe4fc71(_0x2339bc);});});}function respondWithStatusCode(_0x16148d,_0x906cde){_0x906cde=_0x906cde||0xcc;return function(_0x576369){if(_0x576369){return _0x16148d['sendStatus'](_0x906cde);}return _0x16148d['status'](_0x906cde)[_0x2254('0x20')]();};}function respondWithResult(_0x559af4,_0xf88b56){_0xf88b56=_0xf88b56||0xc8;return function(_0x56b91e){if(_0x56b91e){return _0x559af4['status'](_0xf88b56)['json'](_0x56b91e);}};}function respondWithFilteredResult(_0x540020,_0x5e5edb){return function(_0x4f797d){if(_0x4f797d){var _0x1aa71f=typeof _0x5e5edb[_0x2254('0x21')]===_0x2254('0x22')&&typeof _0x5e5edb[_0x2254('0x23')]===_0x2254('0x22');var _0x1349c9=_0x4f797d['count'];var _0x4a8274=_0x1aa71f?0x0:_0x5e5edb[_0x2254('0x21')];var _0x4f6877=_0x1aa71f?_0x4f797d[_0x2254('0x24')]:_0x5e5edb[_0x2254('0x21')]+_0x5e5edb[_0x2254('0x23')];var _0x3aa0bd;if(_0x4f6877>=_0x1349c9){_0x4f6877=_0x1349c9;_0x3aa0bd=0xc8;}else{_0x3aa0bd=0xce;}_0x540020[_0x2254('0x25')](_0x3aa0bd);return _0x540020['set'](_0x2254('0x26'),_0x4a8274+'-'+_0x4f6877+'/'+_0x1349c9)[_0x2254('0x27')](_0x4f797d);}return null;};}function saveUpdates(_0x21285d){return function(_0x37af8b){if(_0x37af8b){return _0x37af8b[_0x2254('0x28')](_0x21285d)[_0x2254('0x15')](function(_0x3214a7){return _0x3214a7;});}return null;};}function removeEntity(_0x22e791){return function(_0x29975f){if(_0x29975f){return _0x29975f[_0x2254('0x29')]()[_0x2254('0x15')](function(){var _0xad7774=_0x29975f[_0x2254('0x2a')]({'plain':!![]});if(_0xad7774[_0x2254('0x2b')]===_0x2254('0x2c'))return;var _0x1b16c8=[{'name':_0x2254('0x2d'),'value':_0x2254('0x2e'),'ignore':!![]},{'name':_0x2254('0x2f'),'value':'agent','ignore':![]},{'name':_0x2254('0x30'),'value':_0x2254('0x31'),'ignore':![]}];var _0x765e8e=_(_0x1b16c8)[_0x2254('0x32')](_0x2254('0x33'))[_0x2254('0x34')](_0x2254('0x35'))[_0x2254('0x35')]();if(_[_0x2254('0x36')](_0x765e8e,_0xad7774['role'])){return;}var _0x835a0e=_[_0x2254('0x37')](_0x1b16c8,['value',_0xad7774[_0x2254('0x2b')]])[_0x2254('0x38')];return db[_0x2254('0x39')][_0x2254('0x29')]({'where':{'type':_0x835a0e,'resourceId':_0xad7774['id']}})['then'](function(){return _0x29975f;});})['then'](function(){_0x22e791[_0x2254('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d620a){return function(_0x10d749){if(!_0x10d749){_0x3d620a[_0x2254('0x3a')](0x194);}return _0x10d749;};}function handleError(_0x141ddc,_0x12428a){_0x12428a=_0x12428a||0x1f4;return function(_0x2707f4){logger[_0x2254('0x1a')](_0x2707f4['stack']);if(_0x2707f4[_0x2254('0x38')]){delete _0x2707f4[_0x2254('0x38')];}_0x141ddc[_0x2254('0x25')](_0x12428a)[_0x2254('0x3b')](_0x2707f4);};}exports[_0x2254('0x3c')]=function(_0x3f6007,_0x3e7ccb){var _0x24744a={},_0x122314={'count':0x0,'rows':[]};var _0x34543d=_(db['User'][_0x2254('0x3d')])[_0x2254('0x34')](function(_0x31d845){return{'name':_0x31d845[_0x2254('0x3e')],'type':_0x31d845['type'][_0x2254('0x3f')]};})[_0x2254('0x32')](function(_0x457625){return!_[_0x2254('0x36')]([_0x2254('0x40'),_0x2254('0x41')],_0x457625[_0x2254('0x38')]);})[_0x2254('0x35')]();_0x24744a=qs['getOptions'](_0x34543d,_0x3f6007);var _0x362ad1={'where':_0x24744a['where']};return db[_0x2254('0x42')][_0x2254('0x24')](_0x362ad1)[_0x2254('0x15')](function(_0x9f142b){_0x122314[_0x2254('0x24')]=_0x9f142b;if(_0x3f6007[_0x2254('0x43')][_0x2254('0x44')]){_0x24744a['include']=[{'all':!![]}];}if(!_[_0x2254('0x36')](_0x24744a[_0x2254('0x45')],'id')){_0x24744a[_0x2254('0x45')][_0x2254('0x46')]('id');}return db[_0x2254('0x42')]['findAll'](_0x24744a);})[_0x2254('0x15')](function(_0x1dec43){_0x122314[_0x2254('0x47')]=_0x1dec43;if(_0x3f6007[_0x2254('0x43')][_0x2254('0x48')]==='true'){var _0x12a227=[];for(var _0x47c933=0x0;_0x47c933<_0x122314[_0x2254('0x47')][_0x2254('0x49')];_0x47c933++){_0x12a227[_0x2254('0x46')](get_open_tabs(_0x2254('0x4a'),_0x122314[_0x2254('0x47')][_0x47c933][_0x2254('0x4b')]));_0x12a227[_0x2254('0x46')](get_open_tabs(_0x2254('0x4c'),_0x122314[_0x2254('0x47')][_0x47c933][_0x2254('0x4b')]));_0x12a227[_0x2254('0x46')](get_open_tabs(_0x2254('0x4d'),_0x122314[_0x2254('0x47')][_0x47c933]['dataValues']));_0x12a227[_0x2254('0x46')](get_open_tabs(_0x2254('0x4e'),_0x122314[_0x2254('0x47')][_0x47c933]['dataValues']));_0x12a227[_0x2254('0x46')](get_open_tabs(_0x2254('0x4f'),_0x122314[_0x2254('0x47')][_0x47c933][_0x2254('0x4b')]));_0x12a227[_0x2254('0x46')](get_open_tabs(_0x2254('0x50'),_0x122314[_0x2254('0x47')][_0x47c933][_0x2254('0x4b')]));}return BPromise[_0x2254('0x51')](_0x12a227)['then'](function(_0x239ba0){return _0x122314;});}else{return _0x122314;}})[_0x2254('0x15')](respondWithFilteredResult(_0x3e7ccb,_0x24744a))[_0x2254('0x1f')](handleError(_0x3e7ccb,null));};exports[_0x2254('0x52')]=function(_0xbbc059,_0x1a203e){var _0x3396c2={'raw':![],'where':{'id':_0xbbc059[_0x2254('0x53')]['id']}},_0x438922={};_0x438922[_0x2254('0x54')]=_['differenceBy'](_[_0x2254('0x55')](db[_0x2254('0x42')]['rawAttributes']),[_0x2254('0x40'),_0x2254('0x41')]);_0x438922[_0x2254('0x43')]=_[_0x2254('0x55')](_0xbbc059['query']);_0x438922[_0x2254('0x56')]=_[_0x2254('0x57')](_0x438922['model'],_0x438922[_0x2254('0x43')]);_0x3396c2[_0x2254('0x45')]=_[_0x2254('0x57')](_0x438922[_0x2254('0x54')],qs['fields'](_0xbbc059[_0x2254('0x43')][_0x2254('0x58')]));_0x3396c2[_0x2254('0x45')]=_0x3396c2['attributes']['length']?_0x3396c2[_0x2254('0x45')]:_0x438922[_0x2254('0x54')];if(_0xbbc059['query'][_0x2254('0x44')]){_0x3396c2['include']=[{'all':!![]}];}_0x3396c2=_['merge']({},_0x3396c2,_0xbbc059[_0x2254('0x59')]);if(!_[_0x2254('0x36')](_0x3396c2[_0x2254('0x45')],'id')){_0x3396c2[_0x2254('0x45')][_0x2254('0x46')]('id');}return db['User']['find'](_0x3396c2)[_0x2254('0x15')](handleEntityNotFound(_0x1a203e,null))['then'](function(_0x10a8db){var _0x28a7c6=[];values=_0x10a8db;if(_0xbbc059[_0x2254('0x43')][_0x2254('0x48')]==='true'){_0x28a7c6[_0x2254('0x46')](get_open_tabs(_0x2254('0x4a'),_0x10a8db['dataValues']));_0x28a7c6['push'](get_open_tabs(_0x2254('0x4c'),_0x10a8db['dataValues']));_0x28a7c6[_0x2254('0x46')](get_open_tabs(_0x2254('0x4f'),_0x10a8db[_0x2254('0x4b')]));_0x28a7c6[_0x2254('0x46')](get_open_tabs(_0x2254('0x50'),_0x10a8db['dataValues']));_0x28a7c6['push'](get_open_tabs(_0x2254('0x4d'),_0x10a8db['dataValues']));_0x28a7c6[_0x2254('0x46')](get_open_tabs('mail',_0x10a8db['dataValues']));return BPromise['all'](_0x28a7c6);}else{return values;}})[_0x2254('0x15')](function(_0x448773){return values;})[_0x2254('0x15')](respondWithResult(_0x1a203e,null))[_0x2254('0x1f')](handleError(_0x1a203e,null));};exports[_0x2254('0x28')]=function(_0x1cf757,_0x14b1ba){if(_0x1cf757[_0x2254('0x5a')]['id']){delete _0x1cf757[_0x2254('0x5a')]['id'];}delete _0x1cf757[_0x2254('0x5a')][_0x2254('0x2b')];return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x1cf757[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x14b1ba,null))[_0x2254('0x15')](saveUpdates(_0x1cf757[_0x2254('0x5a')],null))[_0x2254('0x15')](respondWithResult(_0x14b1ba,null))[_0x2254('0x1f')](handleError(_0x14b1ba,null));};exports['describe']=function(_0x329378,_0xae171c){return db[_0x2254('0x42')][_0x2254('0x5b')]()['then'](respondWithResult(_0xae171c,null))['catch'](handleError(_0xae171c,null));};exports[_0x2254('0x5c')]=function(_0x423c17,_0x1d73a3){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x423c17['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x1d73a3,null))[_0x2254('0x15')](function(_0x639396){if(_0x639396){return _0x639396['addContacts'](_0x423c17['body'][_0x2254('0x5d')],_['omit'](_0x423c17[_0x2254('0x5a')],[_0x2254('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x1d73a3,null))[_0x2254('0x1f')](handleError(_0x1d73a3,null));};function validateUser(_0x1b154f){return new BPromise(function(_0x4d30a5,_0x1288b5){if(_0x1b154f[_0x2254('0x5e')])return _0x4d30a5(_0x1b154f);return db['Setting']['findById'](0x1)[_0x2254('0x15')](function(_0xa159a4){if(_0xa159a4['securePassword'])authService['validatePasswordPattern'](_0x1b154f[_0x2254('0x40')]);db['User'][_0x2254('0x5f')]('internal')[_0x2254('0x15')](function(_0x7bdd46){if(_[_0x2254('0x60')](_0x7bdd46)){_0x1b154f[_0x2254('0x5e')]=_0xa159a4['min_internal']||0x1;return;}if(_[_0x2254('0x60')](_0xa159a4['min_internal'])||_0xa159a4[_0x2254('0x61')]===_0x7bdd46){_0x1b154f[_0x2254('0x5e')]=_0x7bdd46+0x1;return;}if(_0xa159a4['min_internal']>_0x7bdd46){_0x1b154f[_0x2254('0x5e')]=_0xa159a4[_0x2254('0x61')];return;}return db['sequelize'][_0x2254('0x43')](_0x2254('0x62'),{'type':db[_0x2254('0x63')][_0x2254('0x64')]['SELECT']})[_0x2254('0x15')](function(_0x301db7){if(_0x301db7&&_0x301db7['length']){for(var _0x1ac8ff=0x0,_0x4469c7=_0x301db7['length'];_0x1ac8ff<_0x4469c7&&_[_0x2254('0x60')](_0x1b154f['internal']);_0x1ac8ff++){if(_0xa159a4[_0x2254('0x61')]<=_0x301db7[_0x1ac8ff]['from']){_0x1b154f[_0x2254('0x5e')]=_0x301db7[_0x1ac8ff][_0x2254('0x65')];}else if(_0xa159a4['min_internal']>_0x301db7[_0x1ac8ff][_0x2254('0x65')]&&_0xa159a4['min_internal']<=_0x301db7[_0x1ac8ff]['to']){_0x1b154f[_0x2254('0x5e')]=_0xa159a4[_0x2254('0x61')];}}}if(_[_0x2254('0x60')](_0x1b154f['internal'])){_0x1b154f[_0x2254('0x5e')]=_0x7bdd46+0x1;}return _0x4d30a5(_0x1b154f);});});})['catch'](function(_0x30966){_0x1288b5(_0x30966);});});}function updateUser(_0x33f29b){return new BPromise(function(_0x4d4891,_0x58d475){try{if(_0x33f29b[_0x2254('0x66')]){_0x33f29b[_0x2254('0x67')]=_0x33f29b[_0x2254('0x5e')];_0x33f29b[_0x2254('0x68')]={'mailbox':_0x33f29b['internal'],'password':_0x33f29b[_0x2254('0x40')],'fullname':_0x33f29b[_0x2254('0x69')],'email':_0x33f29b[_0x2254('0x6a')]};}if(_0x33f29b[_0x2254('0x2b')]==='agent'){if(!_0x33f29b[_0x2254('0x6b')])_0x33f29b[_0x2254('0x6b')]=['101',_0x2254('0x6c'),'103',_0x2254('0x6d'),'110','104','105',_0x2254('0x6e'),'107',_0x2254('0x6f'),_0x2254('0x70'),'100',_0x2254('0x71'),_0x2254('0x72'),_0x2254('0x73')];}_0x4d4891(_0x33f29b);}catch(_0x1a7c04){_0x58d475(_0x1a7c04);}});}exports[_0x2254('0x74')]=function(_0x2ed18e,_0x523b10){if(_0x2ed18e['user'][_0x2254('0x2b')]===_0x2254('0x75'))throw new Error(_0x2254('0x76'));if(_0x2ed18e[_0x2254('0x5a')][_0x2254('0x2b')]===_0x2254('0x2e')&&_0x2ed18e[_0x2254('0x2e')][_0x2254('0x2b')]!==_0x2254('0x2c')){throw new Error(_0x2254('0x77'));}if(_0x2ed18e['body'][_0x2254('0x2b')]===_0x2254('0x2c')&&_0x2ed18e['user'][_0x2254('0x2b')]!=='admin'){throw new Error(_0x2254('0x78'));}return licenseUtil[_0x2254('0x79')]([_0x2ed18e['body']])[_0x2254('0x15')](function(){return validateUser(_0x2ed18e['body']);})[_0x2254('0x15')](function(_0x2f66ba){return updateUser(_0x2f66ba)[_0x2254('0x15')](function(_0x1f7a48){if(_0x1f7a48['role']===_0x2254('0x2c')){_0x1f7a48[_0x2254('0x7a')]=_0x2ed18e[_0x2254('0x2e')][_0x2254('0x7a')];delete _0x1f7a48['userProfileId'];}return _0x1f7a48;});})[_0x2254('0x15')](function(_0x480eeb){return db['User'][_0x2254('0x74')](_0x480eeb,{'include':[{'model':db[_0x2254('0x68')],'as':'VoiceMail'}]});})['then'](function(_0x1f29ec){if(_0x2ed18e[_0x2254('0x5a')][_0x2254('0x2b')]===_0x2254('0x2e'))return _0x1f29ec;if(_0x2ed18e[_0x2254('0x2e')][_0x2254('0x2b')]!==_0x2254('0x2e'))return _0x1f29ec;return db[_0x2254('0x7b')][_0x2254('0x37')]({'where':{'name':_0x1f29ec['role']===_0x2254('0x75')?'Agents':_0x2254('0x30'),'userProfileId':_0x2ed18e['user'][_0x2254('0x7c')]},'raw':!![]})[_0x2254('0x15')](function(_0x2b0a45){if(!_0x2b0a45||_0x2b0a45['autoAssociation']!=0x0)return _0x1f29ec;return db[_0x2254('0x39')][_0x2254('0x74')]({'name':_0x1f29ec[_0x2254('0x38')],'resourceId':_0x1f29ec['id'],'type':_0x2b0a45[_0x2254('0x38')],'sectionId':_0x2b0a45['id']},{})[_0x2254('0x15')](function(){return _0x1f29ec;});})[_0x2254('0x1f')](function(_0x4783ab){logger[_0x2254('0x1a')](_0x2254('0x7d'),_0x4783ab);throw _0x4783ab;});})[_0x2254('0x15')](respondWithResult(_0x523b10,0xc9))[_0x2254('0x1f')](handleError(_0x523b10,null));};exports[_0x2254('0x7e')]=function(_0x70c30,_0x557e75){var _0x806221=_0x70c30['body'];var _0x64c4f5=[];if(_0x70c30[_0x2254('0x2e')][_0x2254('0x2b')]===_0x2254('0x75'))throw new Error(_0x2254('0x76'));if(_[_0x2254('0x7f')](_0x806221,[_0x2254('0x2b'),'user'])&&_0x70c30[_0x2254('0x2e')]['role']!==_0x2254('0x2c')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x2254('0x7f')](_0x806221,[_0x2254('0x2b'),_0x2254('0x2c')])&&_0x70c30['user'][_0x2254('0x2b')]!==_0x2254('0x2c')){throw new Error(_0x2254('0x80'));}return licenseUtil[_0x2254('0x79')](_0x806221)[_0x2254('0x15')](function(){return validateUser(_0x806221[0x0]);})[_0x2254('0x15')](function(){for(var _0x34185c=0x1;_0x34185c<_0x806221[_0x2254('0x49')];_0x34185c++){var _0x5e94b6=_0x806221[_0x34185c-0x1]['internal'];if(!_0x806221[_0x34185c][_0x2254('0x5e')])_0x806221[_0x34185c]['internal']=_0x5e94b6+0x1;_0x64c4f5[_0x2254('0x46')](validateUser(_0x806221[_0x34185c]));}return BPromise[_0x2254('0x51')](_0x64c4f5);})[_0x2254('0x15')](function(){_0x64c4f5=[];for(var _0x438c95=0x0;_0x438c95<_0x806221[_0x2254('0x49')];_0x438c95++){_0x64c4f5[_0x2254('0x46')](updateUser(_0x806221[_0x438c95]));}return BPromise[_0x2254('0x51')](_0x64c4f5);})['then'](function(){return BPromise[_0x2254('0x81')](_0x806221,function(_0x34ac83){return db[_0x2254('0x42')]['create'](_0x34ac83,{'include':[{'model':db[_0x2254('0x68')],'as':_0x2254('0x68')}]})[_0x2254('0x15')](function(_0x1426d6){_0x34ac83['id']=_0x1426d6['id'];return _0x34ac83;});});})[_0x2254('0x15')](function(_0x37ddcc){if(_0x70c30[_0x2254('0x5a')][_0x2254('0x2b')]===_0x2254('0x2e'))return _0x37ddcc;if(_0x70c30['user'][_0x2254('0x2b')]!==_0x2254('0x2e'))return _0x37ddcc;var _0x590b46=_['some'](_0x37ddcc,function(_0x30aa5c){return _0x30aa5c['role']===_0x2254('0x75')||_0x30aa5c[_0x2254('0x2b')]===_0x2254('0x31');});if(!_0x590b46)return _0x37ddcc;return db[_0x2254('0x7b')][_0x2254('0x82')]({'where':{'name':{'$or':[_0x2254('0x2f'),_0x2254('0x30')]},'userProfileId':_0x70c30[_0x2254('0x2e')]['userProfileId']},'raw':!![]})['then'](function(_0x2f74e4){if(_[_0x2254('0x83')](_0x2f74e4)||!_[_0x2254('0x7f')](_0x2f74e4,[_0x2254('0x84'),0x0]))return _0x37ddcc;_0x64c4f5=[];var _0x201da7=_(_0x2f74e4)['map'](function(_0x573b62){if(_0x573b62[_0x2254('0x84')]===0x1)return;return _0x573b62['name']===_0x2254('0x2f')?_0x2254('0x75'):_0x2254('0x31');})[_0x2254('0x85')]()[_0x2254('0x35')]();for(var _0x331cfc=0x0;_0x331cfc<_0x37ddcc[_0x2254('0x49')];_0x331cfc++){if(!_['includes'](_0x201da7,_0x37ddcc[_0x331cfc][_0x2254('0x2b')]))return;var _0x30e919=_0x37ddcc[_0x331cfc]['role']===_0x2254('0x75')?_0x2254('0x2f'):_0x2254('0x30');_0x64c4f5[_0x2254('0x46')](db[_0x2254('0x39')][_0x2254('0x74')]({'name':_0x37ddcc[_0x331cfc][_0x2254('0x38')],'resourceId':_0x37ddcc[_0x331cfc]['id'],'type':_0x30e919,'sectionId':_[_0x2254('0x37')](_0x2f74e4,[_0x2254('0x38'),_0x30e919])['id']},{}));}return BPromise[_0x2254('0x51')](_0x64c4f5);});})[_0x2254('0x15')](respondWithResult(_0x557e75,0xc9))['catch'](handleError(_0x557e75,null));};exports[_0x2254('0x86')]=function(_0x38bb67,_0x2c5f98){if(_0x38bb67[_0x2254('0x5a')]['id']){delete _0x38bb67[_0x2254('0x5a')]['id'];}return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x38bb67['params']['id']}})[_0x2254('0x15')](function(_0x3e937a){if(!_0x3e937a)return null;if(_0x3e937a['id']===_0x38bb67[_0x2254('0x2e')]['id']){if(!_0x38bb67['body'][_0x2254('0x87')]||!_0x38bb67[_0x2254('0x5a')][_0x2254('0x88')]){throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))](_0x2254('0x8b'));}if(!_0x3e937a['authenticate'](_0x38bb67[_0x2254('0x5a')][_0x2254('0x87')])){throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))](_0x2254('0x8c'));}if(_0x38bb67['body']['oldPassword']===_0x38bb67[_0x2254('0x5a')]['newPassword']){throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))](_0x2254('0x8d'));}}else if(_0x38bb67[_0x2254('0x2e')][_0x2254('0x2b')]===_0x2254('0x2c')){if(!_0x38bb67['body']['newPassword']){throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))](_0x2254('0x8e'));}}else if(_0x38bb67[_0x2254('0x2e')]['role']===_0x2254('0x2e')){if(!_0x38bb67[_0x2254('0x5a')][_0x2254('0x88')]){throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))](_0x2254('0x8e'));}if(_0x3e937a[_0x2254('0x2b')]!==_0x2254('0x75')){throw new db[(_0x2254('0x89'))]['ValidationError'](_0x2254('0x76'));}}else{throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))]('Unauthorized');}return _0x3e937a;})[_0x2254('0x15')](handleEntityNotFound(_0x2c5f98,null))[_0x2254('0x15')](function(_0x16ca50){return db['Setting']['findOne']({'attributes':['id',_0x2254('0x8f'),_0x2254('0x90'),_0x2254('0x91')]})[_0x2254('0x15')](function(_0x310fb6){if(_0x310fb6[_0x2254('0x8f')])authService[_0x2254('0x92')](_0x38bb67[_0x2254('0x5a')]['newPassword']);if(!_0x310fb6[_0x2254('0x90')]||!_0x16ca50[_0x2254('0x93')])return _0x16ca50;authService[_0x2254('0x94')](_0x38bb67[_0x2254('0x5a')][_0x2254('0x88')],_0x16ca50[_0x2254('0x93')],_0x310fb6['passwordHistoryLimit']);return _0x16ca50;})['then'](saveUpdates({'password':_0x38bb67[_0x2254('0x5a')]['newPassword'],'passwordResetAt':_0x38bb67['user']['id']==_0x38bb67[_0x2254('0x53')]['id']?moment():null,'previousPasswords':authService[_0x2254('0x95')](_0x38bb67[_0x2254('0x5a')][_0x2254('0x88')],_0x16ca50['previousPasswords'])},null));})['then'](respondWithResult(_0x2c5f98,null))[_0x2254('0x1f')](handleError(_0x2c5f98,null));};exports[_0x2254('0x96')]=function(_0x1cd8f8,_0x57700b){var _0x181f4a=_0x1cd8f8[_0x2254('0x5a')][_0x2254('0x97')];return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x1cd8f8[_0x2254('0x53')]['id']},'attributes':['id',_0x2254('0x38'),'role',_0x2254('0x98'),_0x2254('0x99'),_0x2254('0x9a'),_0x2254('0x9b')]})[_0x2254('0x15')](handleEntityNotFound(_0x57700b,null))[_0x2254('0x15')](function(_0x21fac0){if(_0x21fac0){if(!utils[_0x2254('0x9c')](_0x181f4a)){throw new db[(_0x2254('0x89'))]['ValidationError'](_0x2254('0x9d'));}return _0x21fac0[_0x2254('0x9e')+_[_0x2254('0x9f')](_0x181f4a[_0x2254('0xa0')]())+_0x2254('0xa1')](_0x1cd8f8[_0x2254('0x5a')]['ids'],{'penalty':_0x1cd8f8['body'][_0x2254('0xa2')]||0x0})['spread'](function(_0x34a26a){for(var _0x1ebf1f=0x0;_0x1ebf1f<_0x1cd8f8[_0x2254('0x5a')][_0x2254('0x5d')]['length'];_0x1ebf1f+=0x1){var _0x3cba5c={'UserId':Number(_0x1cd8f8[_0x2254('0x53')]['id'])};_0x3cba5c[_[_0x2254('0x9f')](_0x181f4a['toLowerCase']())+'QueueId']=Number(_0x1cd8f8[_0x2254('0x5a')]['ids'][_0x1ebf1f]);socket[_0x2254('0xa3')](_0x2254('0x2e')+_[_0x2254('0x9f')](_0x181f4a['toLowerCase']())+'Queue:save',_0x3cba5c);}return _0x34a26a;})[_0x2254('0x15')](function(){if(_0x181f4a===_0x2254('0xa4')){return db[_0x2254('0xa5')][_0x2254('0x82')]({'where':{'id':_0x1cd8f8[_0x2254('0x5a')]['ids']||[]},'raw':!![],'attributes':['id',_0x2254('0x38')]});}})[_0x2254('0x15')](function(_0x10d356){var _0x5d373=_0x21fac0[_0x2254('0x2a')]({'plain':!![]});var _0x30b354=[];if(_0x181f4a==='voice'&&_0x5d373[_0x2254('0x2b')]===_0x2254('0x75')&&_0x5d373['online']){for(var _0x3490aa=0x0;_0x3490aa<_0x10d356['length'];_0x3490aa+=0x1){_0x30b354[_0x2254('0x46')]({'membername':_0x5d373[_0x2254('0x38')],'UserId':_0x5d373['id'],'queue_name':_0x10d356[_0x3490aa]['name'],'VoiceQueueId':_0x10d356[_0x3490aa]['id'],'interface':_[_0x2254('0x60')](_0x5d373[_0x2254('0x9b')])?util[_0x2254('0xa6')](_0x2254('0xa7'),_0x5d373[_0x2254('0x38')]):_0x5d373[_0x2254('0x9b')],'paused':_0x5d373[_0x2254('0x9a')]||![],'penalty':_0x1cd8f8[_0x2254('0x5a')][_0x2254('0xa2')]||0x0});}return BPromise[_0x2254('0x81')](_0x30b354,function(_0x46259e){return db[_0x2254('0xa8')][_0x2254('0xa9')](_0x46259e);});}return _0x21fac0;});}})[_0x2254('0x15')](respondWithStatusCode(_0x57700b,null))['catch'](handleError(_0x57700b,null));};exports[_0x2254('0xaa')]=function(_0x4019fb,_0x52ba52){var _0x4e072b;return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x4019fb[_0x2254('0x53')]['id']},'attributes':['id',_0x2254('0x38'),'role']})[_0x2254('0x15')](handleEntityNotFound(_0x52ba52,null))['then'](function(_0x5042be){if(_0x5042be){_0x4e072b=_0x5042be;if(!_0x4019fb[_0x2254('0x43')][_0x2254('0x97')]||!utils[_0x2254('0x9c')](_0x4019fb[_0x2254('0x43')]['channel'])){throw new db[(_0x2254('0x89'))]['ValidationError'](_0x2254('0x9d'));}return _0x5042be[_0x2254('0xab')+_[_0x2254('0x9f')](_0x4019fb[_0x2254('0x43')][_0x2254('0x97')][_0x2254('0xa0')]())+_0x2254('0xa1')](_0x4019fb[_0x2254('0x43')][_0x2254('0x5d')]);}})[_0x2254('0x15')](function(_0x193809){if(_['isArray'](_0x4019fb[_0x2254('0x43')][_0x2254('0x5d')])){for(var _0x448322=0x0;_0x448322<_0x4019fb[_0x2254('0x43')][_0x2254('0x5d')][_0x2254('0x49')];_0x448322+=0x1){var _0x21e817={'UserId':Number(_0x4019fb[_0x2254('0x53')]['id'])};_0x21e817[_['capitalize'](_0x4019fb[_0x2254('0x43')][_0x2254('0x97')][_0x2254('0xa0')]())+_0x2254('0xac')]=Number(_0x4019fb[_0x2254('0x43')]['ids'][_0x448322]);socket[_0x2254('0xa3')](_0x2254('0x2e')+_['capitalize'](_0x4019fb[_0x2254('0x43')][_0x2254('0x97')][_0x2254('0xa0')]())+'Queue:remove',_0x21e817);}}else{var _0x21e817={'UserId':Number(_0x4019fb[_0x2254('0x53')]['id'])};_0x21e817[_['capitalize'](_0x4019fb[_0x2254('0x43')][_0x2254('0x97')][_0x2254('0xa0')]())+_0x2254('0xac')]=Number(_0x4019fb['query'][_0x2254('0x5d')]);socket[_0x2254('0xa3')](_0x2254('0x2e')+_[_0x2254('0x9f')](_0x4019fb['query'][_0x2254('0x97')][_0x2254('0xa0')]())+_0x2254('0xad'),_0x21e817);}return _0x193809;})['then'](function(){if(_0x4019fb[_0x2254('0x43')][_0x2254('0x97')]===_0x2254('0xa4')){return db[_0x2254('0xa8')][_0x2254('0x29')]({'where':{'UserId':_0x4019fb[_0x2254('0x53')]['id'],'VoiceQueueId':_0x4019fb[_0x2254('0x43')][_0x2254('0x5d')]},'individualHooks':!![]})['then'](function(){return _0x4e072b;});}return _0x4e072b;})[_0x2254('0x15')](respondWithStatusCode(_0x52ba52,null))[_0x2254('0x1f')](handleError(_0x52ba52,null));};exports['addAvatar']=function(_0x1a1ff3,_0x1f8bc0){_0x1a1ff3[_0x2254('0x5a')][_0x2254('0xae')]=_0x1a1ff3[_0x2254('0xaf')][_0x2254('0xb0')];return db[_0x2254('0x42')]['find']({'where':{'id':_0x1a1ff3[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x1f8bc0,null))[_0x2254('0x15')](saveUpdates(_0x1a1ff3[_0x2254('0x5a')],null))['then'](respondWithResult(_0x1f8bc0,null))[_0x2254('0x1f')](handleError(_0x1f8bc0,null));};exports[_0x2254('0xb1')]=function(_0x19ece2,_0x4fc1b4){var _0x5611e1=path[_0x2254('0xb2')](config[_0x2254('0xb3')],_0x2254('0xb4'));return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x19ece2[_0x2254('0x53')]['id']},'attributes':['id',_0x2254('0xae')],'raw':!![]})[_0x2254('0x15')](handleEntityNotFound(_0x4fc1b4,null))[_0x2254('0x15')](function(_0x285aee){if(_0x285aee){if(_['isNil'](_0x285aee['userpic'])){return _0x4fc1b4[_0x2254('0xb5')](_0x5611e1);}else{if(!fs[_0x2254('0xb6')](path['join'](config['root'],_0x2254('0xb7'),_0x285aee[_0x2254('0xae')]))){return _0x4fc1b4[_0x2254('0xb5')](_0x5611e1);}return _0x4fc1b4['download'](path['join'](config[_0x2254('0xb3')],'server/files/images/',_0x285aee[_0x2254('0xae')]));}}})[_0x2254('0x1f')](handleError(_0x4fc1b4,null));};exports[_0x2254('0xb8')]=function(_0x12c084,_0x3a1db3){return db[_0x2254('0x42')]['find']({'where':{'id':_0x12c084[_0x2254('0x53')]['id']},'attributes':['id']})[_0x2254('0x15')](handleEntityNotFound(_0x3a1db3,null))[_0x2254('0x15')](function(_0xa5db88){var _0x5e7978=[];values=_0xa5db88[_0x2254('0x4b')];_0x5e7978[_0x2254('0x46')](get_open_tabs(_0x2254('0x4a'),_0xa5db88['dataValues']));_0x5e7978['push'](get_open_tabs(_0x2254('0x4c'),_0xa5db88[_0x2254('0x4b')]));_0x5e7978[_0x2254('0x46')](get_open_tabs(_0x2254('0x4f'),_0xa5db88[_0x2254('0x4b')]));_0x5e7978[_0x2254('0x46')](get_open_tabs(_0x2254('0x50'),_0xa5db88[_0x2254('0x4b')]));_0x5e7978[_0x2254('0x46')](get_open_tabs(_0x2254('0x4d'),_0xa5db88[_0x2254('0x4b')]));_0x5e7978[_0x2254('0x46')](get_open_tabs(_0x2254('0x4e'),_0xa5db88[_0x2254('0x4b')]));return BPromise['all'](_0x5e7978);})[_0x2254('0x15')](function(_0x41897d){var _0x35c8eb=[];if(_0x41897d){for(var _0x4a1ac6=0x0;_0x4a1ac6<values[_0x2254('0xb9')][_0x2254('0x49')];_0x4a1ac6++){var _0x7b1c89=values[_0x2254('0xb9')][_0x4a1ac6];_0x35c8eb[_0x2254('0x46')]({'channel':'CHAT','id':_0x7b1c89['id'],'createdAt':_0x7b1c89[_0x2254('0xba')]});}for(var _0x4a1ac6=0x0;_0x4a1ac6<values[_0x2254('0xbb')][_0x2254('0x49')];_0x4a1ac6++){var _0x7b1c89=values[_0x2254('0xbb')][_0x4a1ac6];_0x35c8eb['push']({'channel':_0x2254('0xbc'),'id':_0x7b1c89['id'],'createdAt':_0x7b1c89[_0x2254('0xba')]});}for(var _0x4a1ac6=0x0;_0x4a1ac6<values[_0x2254('0xbd')][_0x2254('0x49')];_0x4a1ac6++){var _0x7b1c89=values[_0x2254('0xbd')][_0x4a1ac6];_0x35c8eb[_0x2254('0x46')]({'channel':_0x2254('0xbe'),'id':_0x7b1c89['id'],'createdAt':_0x7b1c89[_0x2254('0xba')]});}for(var _0x4a1ac6=0x0;_0x4a1ac6<values[_0x2254('0xbf')][_0x2254('0x49')];_0x4a1ac6++){var _0x7b1c89=values[_0x2254('0xbf')][_0x4a1ac6];_0x35c8eb['push']({'channel':_0x2254('0xc0'),'id':_0x7b1c89['id'],'createdAt':_0x7b1c89[_0x2254('0xba')]});}for(var _0x4a1ac6=0x0;_0x4a1ac6<values[_0x2254('0xc1')][_0x2254('0x49')];_0x4a1ac6++){var _0x7b1c89=values[_0x2254('0xc1')][_0x4a1ac6];_0x35c8eb[_0x2254('0x46')]({'channel':_0x2254('0xc2'),'id':_0x7b1c89['id'],'createdAt':_0x7b1c89['createdAt']});}for(var _0x4a1ac6=0x0;_0x4a1ac6<values['WhatsappOpenTabs']['length'];_0x4a1ac6++){var _0x7b1c89=values['WhatsappOpenTabs'][_0x4a1ac6];_0x35c8eb[_0x2254('0x46')]({'channel':_0x2254('0xc3'),'id':_0x7b1c89['id'],'createdAt':_0x7b1c89['createdAt']});}var _0x51435a={'count':_0x35c8eb[_0x2254('0x49')],'rows':_0x35c8eb};return _0x51435a;}else return null;})[_0x2254('0x15')](respondWithResult(_0x3a1db3,null))[_0x2254('0x1f')](handleError(_0x3a1db3,null));};exports['getContacts']=function(_0x3123b0,_0x4200e){var _0xcc4f4e={};var _0xde3cc5={};var _0x3dbaf6;var _0x494f5d;return db['User'][_0x2254('0xc4')]({'where':{'id':_0x3123b0[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x4200e,null))[_0x2254('0x15')](function(_0x2f529a){if(_0x2f529a){_0x3dbaf6=_0x2f529a;_0xde3cc5['model']=_[_0x2254('0x55')](db[_0x2254('0xc5')]['rawAttributes']);_0xde3cc5['query']=_[_0x2254('0x55')](_0x3123b0[_0x2254('0x43')]);_0xde3cc5['filters']=_[_0x2254('0x57')](_0xde3cc5[_0x2254('0x54')],_0xde3cc5[_0x2254('0x43')]);_0xcc4f4e[_0x2254('0x45')]=_['intersection'](_0xde3cc5[_0x2254('0x54')],qs['fields'](_0x3123b0['query'][_0x2254('0x58')]));_0xcc4f4e['attributes']=_0xcc4f4e['attributes'][_0x2254('0x49')]?_0xcc4f4e[_0x2254('0x45')]:_0xde3cc5[_0x2254('0x54')];_0xcc4f4e[_0x2254('0xc6')]=qs['sort'](_0x3123b0['query'][_0x2254('0xc7')]);_0xcc4f4e[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x3123b0[_0x2254('0x43')],_0xde3cc5['filters']));if(_0x3123b0[_0x2254('0x43')][_0x2254('0x32')]){_0xcc4f4e[_0x2254('0xc8')]=_[_0x2254('0xca')](_0xcc4f4e['where'],{'$or':_['map'](_0xcc4f4e[_0x2254('0x45')],function(_0x5356b0){var _0x3d8834={};_0x3d8834[_0x5356b0]={'$like':'%'+_0x3123b0[_0x2254('0x43')]['filter']+'%'};return _0x3d8834;})});}_0xcc4f4e=_['merge']({},_0xcc4f4e,_0x3123b0[_0x2254('0x59')]);return _0x3dbaf6['getContacts'](_0xcc4f4e);}})[_0x2254('0x15')](function(_0x1f0893){if(_0x1f0893){_0x494f5d=_0x1f0893[_0x2254('0x49')];if(_0x3123b0[_0x2254('0x43')][_0x2254('0xcb')]('includeAll')){_0xcc4f4e[_0x2254('0xcc')]=[{'model':db['CmList'],'as':_0x2254('0xcd'),'required':![]},{'model':db[_0x2254('0xce')],'as':_0x2254('0xcf'),'attributes':['id','name',_0x2254('0xd0')],'where':_0x3123b0['query']['tag']?{'id':_0x3123b0[_0x2254('0x43')]['tag']}:undefined,'required':_0x3123b0['query'][_0x2254('0xd1')]?!![]:![]}];}if(!_0x3123b0['query'][_0x2254('0xcb')](_0x2254('0xd2'))){_0xcc4f4e['limit']=qs[_0x2254('0x23')](_0x3123b0[_0x2254('0x43')][_0x2254('0x23')]);_0xcc4f4e[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x3123b0['query'][_0x2254('0x21')]);}return _0x3dbaf6[_0x2254('0xd3')](_0xcc4f4e);}})[_0x2254('0x15')](function(_0xa63a15){if(_0xa63a15){return _0xa63a15?{'count':_0x494f5d,'rows':_0xa63a15}:null;}})[_0x2254('0x15')](respondWithResult(_0x4200e,null))[_0x2254('0x1f')](handleError(_0x4200e,null));};exports[_0x2254('0xd4')]=function(_0x5b9fdf,_0x2f59fc){var _0x834633;var _0x78fc05;var _0x287350={};var _0x4af6fd;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x5b9fdf[_0x2254('0x53')]['id']},'attributes':['id','name','role']})[_0x2254('0x15')](handleEntityNotFound(_0x2f59fc,null))['then'](function(_0x314bdf){if(!utils[_0x2254('0x9c')](_0x5b9fdf['query'][_0x2254('0x97')])){throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))](_0x2254('0x9d'));}_0x834633=_0x314bdf;var _0x236ad6={};_0x236ad6[_0x2254('0x54')]=_[_0x2254('0x55')](db[_[_0x2254('0x9f')](_0x5b9fdf['query'][_0x2254('0x97')])+'Queue']['rawAttributes']);_0x236ad6[_0x2254('0x43')]=_['keys'](_0x5b9fdf[_0x2254('0x43')]);_0x236ad6[_0x2254('0x56')]=_['intersection'](_0x236ad6[_0x2254('0x54')],_0x236ad6[_0x2254('0x43')]);_0x287350[_0x2254('0x45')]=_[_0x2254('0x57')](_0x236ad6[_0x2254('0x54')],qs[_0x2254('0x58')](_0x5b9fdf[_0x2254('0x43')][_0x2254('0x58')]));_0x287350['attributes']=_0x287350[_0x2254('0x45')][_0x2254('0x49')]?_0x287350[_0x2254('0x45')]:_0x236ad6[_0x2254('0x54')];_0x287350[_0x2254('0xc6')]=qs['sort'](_0x5b9fdf[_0x2254('0x43')][_0x2254('0xc7')]);_0x287350[_0x2254('0xc8')]=qs['filters'](_[_0x2254('0xc9')](_0x5b9fdf[_0x2254('0x43')],_0x236ad6[_0x2254('0x56')]));if(_0x5b9fdf[_0x2254('0x43')][_0x2254('0x32')]){_0x287350[_0x2254('0xc8')]=_['merge'](_0x287350['where'],{'$or':_[_0x2254('0x34')](_0x287350[_0x2254('0x45')],function(_0x37eb79){var _0x22fc5d={};_0x22fc5d[_0x37eb79]={'$like':'%'+_0x5b9fdf[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x22fc5d;})});}_0x287350=_[_0x2254('0xca')]({},_0x287350,_0x5b9fdf[_0x2254('0x59')]);switch(_0x834633[_0x2254('0x2b')]){case _0x2254('0x2c'):return db[_[_0x2254('0x9f')](_0x5b9fdf[_0x2254('0x43')][_0x2254('0x97')])+_0x2254('0xd5')][_0x2254('0x82')](_0x287350);case'user':case'agent':return _0x834633[_0x2254('0x2a')+_['capitalize'](_0x5b9fdf[_0x2254('0x43')][_0x2254('0x97')])+_0x2254('0xa1')](_0x287350);default:throw new db['Sequelize'][(_0x2254('0x8a'))](_0x2254('0xd6'));}})[_0x2254('0x15')](function(_0x4e368f){_0x4af6fd=_0x4e368f[_0x2254('0x49')];if(!_0x5b9fdf[_0x2254('0x43')]['hasOwnProperty']('nolimit')){_0x287350[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x5b9fdf[_0x2254('0x43')]['limit']);_0x287350[_0x2254('0x21')]=qs['offset'](_0x5b9fdf[_0x2254('0x43')][_0x2254('0x21')]);}switch(_0x834633['role']){case _0x2254('0x2c'):return db[_[_0x2254('0x9f')](_0x5b9fdf[_0x2254('0x43')][_0x2254('0x97')])+'Queue'][_0x2254('0x82')](_0x287350);case'user':case'agent':return _0x834633[_0x2254('0x2a')+_[_0x2254('0x9f')](_0x5b9fdf[_0x2254('0x43')][_0x2254('0x97')])+_0x2254('0xa1')](_0x287350);}})['then'](function(_0x175d49){return{'count':_0x4af6fd,'rows':_0x175d49};})[_0x2254('0x15')](respondWithResult(_0x2f59fc,null))[_0x2254('0x1f')](handleError(_0x2f59fc,null));};exports[_0x2254('0xd7')]=function(_0x441573,_0x4d7d03){var _0x2cc477={};var _0x3e6b3f={};var _0x425f4f;var _0x43f2f7;return db[_0x2254('0x42')]['findOne']({'where':{'id':_0x441573['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x4d7d03,null))['then'](function(_0x71733){if(_0x71733){_0x425f4f=_0x71733;_0x3e6b3f[_0x2254('0x54')]=_['keys'](db[_0x2254('0xa8')][_0x2254('0x3d')]);_0x3e6b3f[_0x2254('0x43')]=_[_0x2254('0x55')](_0x441573['query']);_0x3e6b3f[_0x2254('0x56')]=_[_0x2254('0x57')](_0x3e6b3f[_0x2254('0x54')],_0x3e6b3f[_0x2254('0x43')]);_0x2cc477[_0x2254('0x45')]=_[_0x2254('0x57')](_0x3e6b3f[_0x2254('0x54')],qs['fields'](_0x441573[_0x2254('0x43')][_0x2254('0x58')]));_0x2cc477[_0x2254('0x45')]=_0x2cc477[_0x2254('0x45')][_0x2254('0x49')]?_0x2cc477[_0x2254('0x45')]:_0x3e6b3f['model'];_0x2cc477[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x441573[_0x2254('0x43')][_0x2254('0xc7')]);_0x2cc477[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x441573[_0x2254('0x43')],_0x3e6b3f[_0x2254('0x56')]));if(_0x441573['query'][_0x2254('0x32')]){_0x2cc477['where']=_['merge'](_0x2cc477[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x2cc477['attributes'],function(_0x3d8055){var _0x3dc012={};_0x3dc012[_0x3d8055]={'$like':'%'+_0x441573['query'][_0x2254('0x32')]+'%'};return _0x3dc012;})});}_0x2cc477=_[_0x2254('0xca')]({},_0x2cc477,_0x441573[_0x2254('0x59')]);return _0x425f4f['getVoiceQueuesRt'](_0x2cc477);}})['then'](function(_0x52c510){if(_0x52c510){_0x43f2f7=_0x52c510[_0x2254('0x49')];if(!_0x441573[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x2cc477[_0x2254('0x23')]=qs['limit'](_0x441573[_0x2254('0x43')][_0x2254('0x23')]);_0x2cc477['offset']=qs['offset'](_0x441573[_0x2254('0x43')][_0x2254('0x21')]);}return _0x425f4f[_0x2254('0xd7')](_0x2cc477);}})['then'](function(_0x1558f9){if(_0x1558f9){return _0x1558f9?{'count':_0x43f2f7,'rows':_0x1558f9}:null;}})['then'](respondWithResult(_0x4d7d03,null))[_0x2254('0x1f')](handleError(_0x4d7d03,null));};exports[_0x2254('0xd8')]=function(_0x157c63,_0x2881ff){var _0x9245d4={};var _0x287b09={};var _0x2f2c89;var _0x5b25f1;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x157c63[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x2881ff,null))['then'](function(_0xd062bf){if(_0xd062bf){_0x2f2c89=_0xd062bf;_0x287b09[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0xd9')][_0x2254('0x3d')]);_0x287b09['query']=_[_0x2254('0x55')](_0x157c63['query']);_0x287b09[_0x2254('0x56')]=_['intersection'](_0x287b09[_0x2254('0x54')],_0x287b09[_0x2254('0x43')]);_0x9245d4[_0x2254('0x45')]=_[_0x2254('0x57')](_0x287b09[_0x2254('0x54')],qs[_0x2254('0x58')](_0x157c63[_0x2254('0x43')][_0x2254('0x58')]));_0x9245d4[_0x2254('0x45')]=_0x9245d4[_0x2254('0x45')][_0x2254('0x49')]?_0x9245d4['attributes']:_0x287b09['model'];_0x9245d4['order']=qs['sort'](_0x157c63[_0x2254('0x43')]['sort']);_0x9245d4[_0x2254('0xc8')]=qs['filters'](_[_0x2254('0xc9')](_0x157c63[_0x2254('0x43')],_0x287b09[_0x2254('0x56')]));if(_0x157c63[_0x2254('0x43')][_0x2254('0x32')]){_0x9245d4[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x9245d4[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x9245d4[_0x2254('0x45')],function(_0x2aaa59){var _0xfa40a6={};_0xfa40a6[_0x2aaa59]={'$like':'%'+_0x157c63[_0x2254('0x43')]['filter']+'%'};return _0xfa40a6;})});}_0x9245d4=_[_0x2254('0xca')]({},_0x9245d4,_0x157c63[_0x2254('0x59')]);return _0x2f2c89['getGroups'](_0x9245d4);}})[_0x2254('0x15')](function(_0x321997){if(_0x321997){_0x5b25f1=_0x321997[_0x2254('0x49')];if(!_0x157c63[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x9245d4['limit']=qs[_0x2254('0x23')](_0x157c63[_0x2254('0x43')][_0x2254('0x23')]);_0x9245d4[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x157c63[_0x2254('0x43')][_0x2254('0x21')]);}return _0x2f2c89[_0x2254('0xd8')](_0x9245d4);}})[_0x2254('0x15')](function(_0x5e554b){if(_0x5e554b){return _0x5e554b?{'count':_0x5b25f1,'rows':_0x5e554b}:null;}})['then'](respondWithResult(_0x2881ff,null))[_0x2254('0x1f')](handleError(_0x2881ff,null));};exports[_0x2254('0xda')]=function(_0x40bfdb,_0x22cc94){var _0x5ae971={'raw':!![],'where':{}};var _0x2f3959={};var _0x4a88a6={'count':0x0,'rows':[]};return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x40bfdb[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x22cc94,null))[_0x2254('0x15')](function(_0x34d115){if(_0x34d115){_0x2f3959['model']=_[_0x2254('0x55')](db[_0x2254('0xdb')][_0x2254('0x3d')]);_0x2f3959[_0x2254('0x43')]=_[_0x2254('0x55')](_0x40bfdb[_0x2254('0x43')]);_0x2f3959['filters']=_['intersection'](_0x2f3959[_0x2254('0x54')],_0x2f3959[_0x2254('0x43')]);_0x5ae971[_0x2254('0x45')]=_[_0x2254('0x57')](_0x2f3959[_0x2254('0x54')],qs[_0x2254('0x58')](_0x40bfdb[_0x2254('0x43')]['fields']));_0x5ae971[_0x2254('0x45')]=_0x5ae971[_0x2254('0x45')][_0x2254('0x49')]?_0x5ae971[_0x2254('0x45')]:_0x2f3959[_0x2254('0x54')];if(!_0x40bfdb[_0x2254('0x43')][_0x2254('0xcb')]('nolimit')){_0x5ae971[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x40bfdb[_0x2254('0x43')][_0x2254('0x23')]);_0x5ae971[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x40bfdb[_0x2254('0x43')]['offset']);}_0x5ae971['order']=qs['sort'](_0x40bfdb[_0x2254('0x43')]['sort']);_0x5ae971[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x40bfdb['query'],_0x2f3959[_0x2254('0x56')]));_0x5ae971[_0x2254('0xc8')][_0x2254('0xdc')]=_0x34d115['id'];if(_0x40bfdb['query'][_0x2254('0x32')]){_0x5ae971[_0x2254('0xc8')]=_['merge'](_0x5ae971['where'],{'$or':_[_0x2254('0x34')](_0x5ae971[_0x2254('0x45')],function(_0x154646){var _0x2a04ac={};_0x2a04ac[_0x154646]={'$like':'%'+_0x40bfdb[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x2a04ac;})});}_0x5ae971=_[_0x2254('0xca')]({},_0x5ae971,_0x40bfdb[_0x2254('0x59')]);return db['VoiceRecording']['count']({'where':_0x5ae971[_0x2254('0xc8')]})[_0x2254('0x15')](function(_0x37a5c4){_0x4a88a6['count']=_0x37a5c4;if(_0x40bfdb['query'][_0x2254('0x44')]){_0x5ae971[_0x2254('0xcc')]=[{'all':!![]}];}return db[_0x2254('0xdb')][_0x2254('0x82')](_0x5ae971);})[_0x2254('0x15')](function(_0xc56da2){_0x4a88a6[_0x2254('0x47')]=_0xc56da2;return _0x4a88a6;});}})[_0x2254('0x15')](respondWithFilteredResult(_0x22cc94,_0x5ae971))[_0x2254('0x1f')](handleError(_0x22cc94,null));};exports[_0x2254('0xdd')]=function(_0x2576ab,_0x3c7110){var _0x2fd7d4={'raw':!![],'where':{}};var _0xda4f99={};var _0x28fdb5={'count':0x0,'rows':[]};return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x2576ab[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x3c7110,null))[_0x2254('0x15')](function(_0x5b997d){if(_0x5b997d){_0xda4f99[_0x2254('0x54')]=_[_0x2254('0x55')](db['ScreenRecording']['rawAttributes']);_0xda4f99[_0x2254('0x43')]=_[_0x2254('0x55')](_0x2576ab['query']);_0xda4f99[_0x2254('0x56')]=_['intersection'](_0xda4f99[_0x2254('0x54')],_0xda4f99['query']);_0x2fd7d4[_0x2254('0x45')]=_[_0x2254('0x57')](_0xda4f99['model'],qs['fields'](_0x2576ab[_0x2254('0x43')]['fields']));_0x2fd7d4[_0x2254('0x45')]=_0x2fd7d4[_0x2254('0x45')][_0x2254('0x49')]?_0x2fd7d4[_0x2254('0x45')]:_0xda4f99[_0x2254('0x54')];if(!_0x2576ab['query']['hasOwnProperty'](_0x2254('0xd2'))){_0x2fd7d4[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x2576ab[_0x2254('0x43')]['limit']);_0x2fd7d4['offset']=qs['offset'](_0x2576ab[_0x2254('0x43')]['offset']);}_0x2fd7d4['order']=qs[_0x2254('0xc7')](_0x2576ab[_0x2254('0x43')][_0x2254('0xc7')]);_0x2fd7d4[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x2576ab[_0x2254('0x43')],_0xda4f99[_0x2254('0x56')]));_0x2fd7d4[_0x2254('0xc8')][_0x2254('0xdc')]=_0x5b997d['id'];if(_0x2576ab[_0x2254('0x43')][_0x2254('0x32')]){_0x2fd7d4[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x2fd7d4[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x2fd7d4[_0x2254('0x45')],function(_0x25225b){var _0x379074={};_0x379074[_0x25225b]={'$like':'%'+_0x2576ab[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x379074;})});}_0x2fd7d4=_[_0x2254('0xca')]({},_0x2fd7d4,_0x2576ab[_0x2254('0x59')]);return db[_0x2254('0xde')]['count']({'where':_0x2fd7d4['where']})[_0x2254('0x15')](function(_0x2d68ac){_0x28fdb5[_0x2254('0x24')]=_0x2d68ac;if(_0x2576ab[_0x2254('0x43')][_0x2254('0x44')]){_0x2fd7d4[_0x2254('0xcc')]=[{'all':!![]}];}return db[_0x2254('0xde')][_0x2254('0x82')](_0x2fd7d4);})[_0x2254('0x15')](function(_0x52cc63){_0x28fdb5['rows']=_0x52cc63;return _0x28fdb5;});}})[_0x2254('0x15')](respondWithFilteredResult(_0x3c7110,_0x2fd7d4))[_0x2254('0x1f')](handleError(_0x3c7110,null));};exports['getChatInteractions']=function(_0x447f8c,_0x5d7751){var _0x49cb60={};var _0x3db3b2={};var _0x5a4db5;var _0x4161e3;return db['User'][_0x2254('0xc4')]({'where':{'id':_0x447f8c[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x5d7751,null))['then'](function(_0x247874){if(_0x247874){_0x5a4db5=_0x247874;_0x3db3b2['model']=_[_0x2254('0x55')](db[_0x2254('0xdf')][_0x2254('0x3d')]);_0x3db3b2['query']=_[_0x2254('0x55')](_0x447f8c['query']);_0x3db3b2[_0x2254('0x56')]=_[_0x2254('0x57')](_0x3db3b2['model'],_0x3db3b2[_0x2254('0x43')]);_0x49cb60['attributes']=_['intersection'](_0x3db3b2[_0x2254('0x54')],qs['fields'](_0x447f8c[_0x2254('0x43')][_0x2254('0x58')]));_0x49cb60['attributes']=_0x49cb60[_0x2254('0x45')][_0x2254('0x49')]?_0x49cb60[_0x2254('0x45')]:_0x3db3b2[_0x2254('0x54')];_0x49cb60[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x447f8c[_0x2254('0x43')][_0x2254('0xc7')]);_0x49cb60['where']=qs[_0x2254('0x56')](_['pick'](_0x447f8c[_0x2254('0x43')],_0x3db3b2[_0x2254('0x56')]));if(_0x447f8c[_0x2254('0x43')][_0x2254('0x32')]){_0x49cb60[_0x2254('0xc8')]=_['merge'](_0x49cb60[_0x2254('0xc8')],{'$or':_['map'](_0x49cb60[_0x2254('0x45')],function(_0x254b22){var _0x2e3735={};_0x2e3735[_0x254b22]={'$like':'%'+_0x447f8c['query'][_0x2254('0x32')]+'%'};return _0x2e3735;})});}_0x49cb60=_['merge']({},_0x49cb60,_0x447f8c[_0x2254('0x59')]);return _0x5a4db5[_0x2254('0xe0')](_0x49cb60);}})[_0x2254('0x15')](function(_0x47d75d){if(_0x47d75d){_0x4161e3=_0x47d75d[_0x2254('0x49')];if(!_0x447f8c[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x49cb60['limit']=qs[_0x2254('0x23')](_0x447f8c[_0x2254('0x43')]['limit']);_0x49cb60['offset']=qs['offset'](_0x447f8c[_0x2254('0x43')]['offset']);}return _0x5a4db5['getChatInteractions'](_0x49cb60);}})[_0x2254('0x15')](function(_0x1d7dd1){if(_0x1d7dd1){return _0x1d7dd1?{'count':_0x4161e3,'rows':_0x1d7dd1}:null;}})['then'](respondWithResult(_0x5d7751,null))['catch'](handleError(_0x5d7751,null));};exports[_0x2254('0xe1')]=function(_0x52a5bb,_0x5077f9){var _0x4ecd1f={};var _0x3c87b3={};var _0x1de03d;var _0x4a930d;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x52a5bb[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x5077f9,null))[_0x2254('0x15')](function(_0x4128fd){if(_0x4128fd){_0x1de03d=_0x4128fd;_0x3c87b3[_0x2254('0x54')]=_[_0x2254('0x55')](db['OpenchannelInteraction'][_0x2254('0x3d')]);_0x3c87b3[_0x2254('0x43')]=_['keys'](_0x52a5bb[_0x2254('0x43')]);_0x3c87b3[_0x2254('0x56')]=_[_0x2254('0x57')](_0x3c87b3[_0x2254('0x54')],_0x3c87b3['query']);_0x4ecd1f[_0x2254('0x45')]=_['intersection'](_0x3c87b3[_0x2254('0x54')],qs[_0x2254('0x58')](_0x52a5bb['query'][_0x2254('0x58')]));_0x4ecd1f[_0x2254('0x45')]=_0x4ecd1f[_0x2254('0x45')][_0x2254('0x49')]?_0x4ecd1f[_0x2254('0x45')]:_0x3c87b3[_0x2254('0x54')];_0x4ecd1f[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x52a5bb[_0x2254('0x43')][_0x2254('0xc7')]);_0x4ecd1f[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x52a5bb['query'],_0x3c87b3[_0x2254('0x56')]));if(_0x52a5bb['query'][_0x2254('0x32')]){_0x4ecd1f[_0x2254('0xc8')]=_['merge'](_0x4ecd1f[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x4ecd1f[_0x2254('0x45')],function(_0xb831de){var _0x513246={};_0x513246[_0xb831de]={'$like':'%'+_0x52a5bb[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x513246;})});}_0x4ecd1f=_[_0x2254('0xca')]({},_0x4ecd1f,_0x52a5bb[_0x2254('0x59')]);return _0x1de03d['getOpenchannelInteractions'](_0x4ecd1f);}})[_0x2254('0x15')](function(_0x90e3e6){if(_0x90e3e6){_0x4a930d=_0x90e3e6[_0x2254('0x49')];if(!_0x52a5bb['query']['hasOwnProperty'](_0x2254('0xd2'))){_0x4ecd1f[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x52a5bb['query'][_0x2254('0x23')]);_0x4ecd1f[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x52a5bb[_0x2254('0x43')]['offset']);}return _0x1de03d[_0x2254('0xe1')](_0x4ecd1f);}})[_0x2254('0x15')](function(_0x594faf){if(_0x594faf){return _0x594faf?{'count':_0x4a930d,'rows':_0x594faf}:null;}})['then'](respondWithResult(_0x5077f9,null))[_0x2254('0x1f')](handleError(_0x5077f9,null));};exports[_0x2254('0xe2')]=function(_0x4816ea,_0x174780){var _0x552a20={'raw':!![],'where':{}};var _0x4007cf={};var _0x19dc01={'count':0x0,'rows':[]};return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x4816ea[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x174780,null))[_0x2254('0x15')](function(_0x49a0f4){if(_0x49a0f4){_0x4007cf[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0xe3')][_0x2254('0x3d')]);_0x4007cf['query']=_[_0x2254('0x55')](_0x4816ea[_0x2254('0x43')]);_0x4007cf['filters']=_['intersection'](_0x4007cf[_0x2254('0x54')],_0x4007cf[_0x2254('0x43')]);_0x552a20[_0x2254('0x45')]=_[_0x2254('0x57')](_0x4007cf[_0x2254('0x54')],qs[_0x2254('0x58')](_0x4816ea[_0x2254('0x43')]['fields']));_0x552a20['attributes']=_0x552a20[_0x2254('0x45')][_0x2254('0x49')]?_0x552a20['attributes']:_0x4007cf[_0x2254('0x54')];if(!_0x4816ea[_0x2254('0x43')][_0x2254('0xcb')]('nolimit')){_0x552a20[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x4816ea[_0x2254('0x43')][_0x2254('0x23')]);_0x552a20[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x4816ea[_0x2254('0x43')]['offset']);}_0x552a20['order']=qs[_0x2254('0xc7')](_0x4816ea[_0x2254('0x43')][_0x2254('0xc7')]);_0x552a20['where']=qs[_0x2254('0x56')](_['pick'](_0x4816ea[_0x2254('0x43')],_0x4007cf['filters']));_0x552a20['where'][_0x2254('0xdc')]=_0x49a0f4['id'];if(_0x4816ea[_0x2254('0x43')]['filter']){_0x552a20[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x552a20['where'],{'$or':_[_0x2254('0x34')](_0x552a20[_0x2254('0x45')],function(_0x29dcdf){var _0x942e20={};_0x942e20[_0x29dcdf]={'$like':'%'+_0x4816ea[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x942e20;})});}_0x552a20=_[_0x2254('0xca')]({},_0x552a20,_0x4816ea[_0x2254('0x59')]);return db[_0x2254('0xe3')]['count']({'where':_0x552a20['where']})[_0x2254('0x15')](function(_0x2a7888){_0x19dc01['count']=_0x2a7888;if(_0x4816ea['query'][_0x2254('0x44')]){_0x552a20[_0x2254('0xcc')]=[{'all':!![]}];}return db['MailInteraction'][_0x2254('0x82')](_0x552a20);})[_0x2254('0x15')](function(_0x56e4e9){_0x19dc01[_0x2254('0x47')]=_0x56e4e9;return _0x19dc01;});}})[_0x2254('0x15')](respondWithFilteredResult(_0x174780,_0x552a20))['catch'](handleError(_0x174780,null));};exports[_0x2254('0xe4')]=function(_0x3c982c,_0x314a35){var _0x4f77e8={};var _0x285098={};var _0x34d2db;var _0xe446cc;return db[_0x2254('0x42')]['findOne']({'where':{'id':_0x3c982c['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x314a35,null))[_0x2254('0x15')](function(_0x572372){if(_0x572372){_0x34d2db=_0x572372;_0x285098[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0xe5')]['rawAttributes']);_0x285098[_0x2254('0x43')]=_[_0x2254('0x55')](_0x3c982c[_0x2254('0x43')]);_0x285098[_0x2254('0x56')]=_[_0x2254('0x57')](_0x285098[_0x2254('0x54')],_0x285098['query']);_0x4f77e8[_0x2254('0x45')]=_['intersection'](_0x285098[_0x2254('0x54')],qs[_0x2254('0x58')](_0x3c982c[_0x2254('0x43')][_0x2254('0x58')]));_0x4f77e8[_0x2254('0x45')]=_0x4f77e8[_0x2254('0x45')][_0x2254('0x49')]?_0x4f77e8[_0x2254('0x45')]:_0x285098[_0x2254('0x54')];_0x4f77e8['order']=qs[_0x2254('0xc7')](_0x3c982c[_0x2254('0x43')][_0x2254('0xc7')]);_0x4f77e8[_0x2254('0xc8')]=qs['filters'](_[_0x2254('0xc9')](_0x3c982c['query'],_0x285098['filters']));if(_0x3c982c['query']['filter']){_0x4f77e8[_0x2254('0xc8')]=_['merge'](_0x4f77e8[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x4f77e8[_0x2254('0x45')],function(_0x49cc5b){var _0x12fe88={};_0x12fe88[_0x49cc5b]={'$like':'%'+_0x3c982c[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x12fe88;})});}_0x4f77e8=_[_0x2254('0xca')]({},_0x4f77e8,_0x3c982c[_0x2254('0x59')]);return _0x34d2db['getSmsInteractions'](_0x4f77e8);}})['then'](function(_0x33b1b6){if(_0x33b1b6){_0xe446cc=_0x33b1b6['length'];if(!_0x3c982c[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x4f77e8[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x3c982c['query'][_0x2254('0x23')]);_0x4f77e8['offset']=qs['offset'](_0x3c982c[_0x2254('0x43')][_0x2254('0x21')]);}return _0x34d2db['getSmsInteractions'](_0x4f77e8);}})[_0x2254('0x15')](function(_0x435936){if(_0x435936){return _0x435936?{'count':_0xe446cc,'rows':_0x435936}:null;}})[_0x2254('0x15')](respondWithResult(_0x314a35,null))[_0x2254('0x1f')](handleError(_0x314a35,null));};exports[_0x2254('0xe6')]=function(_0x12ea1e,_0x4954b6){var _0x327a62={};var _0x4e68f9={};var _0x538596;var _0x322a35;return db['User'][_0x2254('0xc4')]({'where':{'id':_0x12ea1e[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x4954b6,null))['then'](function(_0x2e2d42){if(_0x2e2d42){_0x538596=_0x2e2d42;_0x4e68f9[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0xe7')][_0x2254('0x3d')]);_0x4e68f9['query']=_[_0x2254('0x55')](_0x12ea1e['query']);_0x4e68f9[_0x2254('0x56')]=_[_0x2254('0x57')](_0x4e68f9[_0x2254('0x54')],_0x4e68f9[_0x2254('0x43')]);_0x327a62[_0x2254('0x45')]=_[_0x2254('0x57')](_0x4e68f9['model'],qs['fields'](_0x12ea1e[_0x2254('0x43')]['fields']));_0x327a62['attributes']=_0x327a62['attributes'][_0x2254('0x49')]?_0x327a62[_0x2254('0x45')]:_0x4e68f9[_0x2254('0x54')];_0x327a62[_0x2254('0xc6')]=qs['sort'](_0x12ea1e['query'][_0x2254('0xc7')]);_0x327a62[_0x2254('0xc8')]=qs[_0x2254('0x56')](_['pick'](_0x12ea1e[_0x2254('0x43')],_0x4e68f9[_0x2254('0x56')]));if(_0x12ea1e['query']['filter']){_0x327a62[_0x2254('0xc8')]=_['merge'](_0x327a62[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x327a62['attributes'],function(_0x391035){var _0x586dc6={};_0x586dc6[_0x391035]={'$like':'%'+_0x12ea1e[_0x2254('0x43')]['filter']+'%'};return _0x586dc6;})});}_0x327a62=_[_0x2254('0xca')]({},_0x327a62,_0x12ea1e['options']);return _0x538596[_0x2254('0xe6')](_0x327a62);}})[_0x2254('0x15')](function(_0x453546){if(_0x453546){_0x322a35=_0x453546[_0x2254('0x49')];if(!_0x12ea1e[_0x2254('0x43')]['hasOwnProperty'](_0x2254('0xd2'))){_0x327a62[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x12ea1e[_0x2254('0x43')][_0x2254('0x23')]);_0x327a62[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x12ea1e['query'][_0x2254('0x21')]);}return _0x538596[_0x2254('0xe6')](_0x327a62);}})['then'](function(_0xa0e362){if(_0xa0e362){return _0xa0e362?{'count':_0x322a35,'rows':_0xa0e362}:null;}})[_0x2254('0x15')](respondWithResult(_0x4954b6,null))[_0x2254('0x1f')](handleError(_0x4954b6,null));};exports[_0x2254('0xe8')]=function(_0x34e356,_0x49fc39){var _0x215f8c={};var _0x129675={};var _0x55fef5;var _0x5135a6;return db['User'][_0x2254('0xc4')]({'where':{'id':_0x34e356[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x49fc39,null))[_0x2254('0x15')](function(_0x626d21){if(_0x626d21){_0x55fef5=_0x626d21;_0x129675[_0x2254('0x54')]=_[_0x2254('0x55')](db['WhatsappInteraction'][_0x2254('0x3d')]);_0x129675['query']=_[_0x2254('0x55')](_0x34e356[_0x2254('0x43')]);_0x129675[_0x2254('0x56')]=_['intersection'](_0x129675[_0x2254('0x54')],_0x129675[_0x2254('0x43')]);_0x215f8c['attributes']=_['intersection'](_0x129675[_0x2254('0x54')],qs[_0x2254('0x58')](_0x34e356[_0x2254('0x43')][_0x2254('0x58')]));_0x215f8c[_0x2254('0x45')]=_0x215f8c[_0x2254('0x45')][_0x2254('0x49')]?_0x215f8c[_0x2254('0x45')]:_0x129675[_0x2254('0x54')];_0x215f8c[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x34e356['query'][_0x2254('0xc7')]);_0x215f8c['where']=qs['filters'](_['pick'](_0x34e356[_0x2254('0x43')],_0x129675[_0x2254('0x56')]));if(_0x34e356[_0x2254('0x43')]['filter']){_0x215f8c['where']=_[_0x2254('0xca')](_0x215f8c['where'],{'$or':_['map'](_0x215f8c['attributes'],function(_0x511af6){var _0x271ef6={};_0x271ef6[_0x511af6]={'$like':'%'+_0x34e356['query'][_0x2254('0x32')]+'%'};return _0x271ef6;})});}_0x215f8c=_[_0x2254('0xca')]({},_0x215f8c,_0x34e356[_0x2254('0x59')]);return _0x55fef5[_0x2254('0xe8')](_0x215f8c);}})['then'](function(_0xcdee74){if(_0xcdee74){_0x5135a6=_0xcdee74[_0x2254('0x49')];if(!_0x34e356[_0x2254('0x43')][_0x2254('0xcb')]('nolimit')){_0x215f8c['limit']=qs[_0x2254('0x23')](_0x34e356[_0x2254('0x43')][_0x2254('0x23')]);_0x215f8c[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x34e356['query'][_0x2254('0x21')]);}return _0x55fef5['getWhatsappInteractions'](_0x215f8c);}})[_0x2254('0x15')](function(_0x400bd3){if(_0x400bd3){return _0x400bd3?{'count':_0x5135a6,'rows':_0x400bd3}:null;}})[_0x2254('0x15')](respondWithResult(_0x49fc39,null))['catch'](handleError(_0x49fc39,null));};exports[_0x2254('0xe9')]=function(_0x353d8e,_0x3564bd,_0x3f914b){var _0x15648c;var _0x5bb499;var _0x324bd1;var _0x540b3c=!_[_0x2254('0x60')](_0x353d8e[_0x2254('0x53')]['id'])?_0x353d8e['params']['id']:!_[_0x2254('0x60')](_0x353d8e[_0x2254('0x2e')]['id'])?_0x353d8e[_0x2254('0x2e')]['id']:null;return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x540b3c,'role':{'$or':[_0x2254('0x2c'),_0x2254('0x2e'),_0x2254('0x75')]}},'attributes':['id',_0x2254('0x38'),'phone',_0x2254('0xea'),'role',_0x2254('0x5e'),'loginInPause']})[_0x2254('0x15')](function(_0x166921){if(_0x166921){if(_0x166921['role']==='agent'){_0x15648c=_0x166921;if(_0x353d8e['body'][_0x2254('0x9b')]){_0x324bd1=util[_0x2254('0xa6')]('LOCAL/%s@from-sip/n',_0x15648c[_0x353d8e[_0x2254('0x5a')][_0x2254('0x9b')]]);}else if(_0x353d8e[_0x2254('0x5a')][_0x2254('0xeb')]){_0x324bd1=util[_0x2254('0xa6')](_0x2254('0xa7'),_0x353d8e[_0x2254('0x5a')]['intrf']);}else{_0x324bd1=util[_0x2254('0xa6')](_0x2254('0xa7'),_0x15648c[_0x2254('0x38')]);}socket['to'](util[_0x2254('0xa6')](_0x2254('0xec'),_0x15648c['name']))['emit'](_0x2254('0xed'),{'user':{'id':_0x15648c['id'],'name':_0x15648c['name']},'ip':_0x353d8e['headers'][_0x2254('0xee')]||_0x353d8e[_0x2254('0xef')][_0x2254('0xf0')]||_0x353d8e['socket'][_0x2254('0xf0')]||_0x353d8e[_0x2254('0xef')][_0x2254('0xf1')]['remoteAddress']});return db['UserVoiceQueueRt'][_0x2254('0x29')]({'where':{'membername':_0x15648c[_0x2254('0x38')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x2254('0x8a'))](_0x2254('0xf2'));}})[_0x2254('0x15')](function(){if(_0x15648c){return _0x15648c[_0x2254('0xf3')]({'raw':!![]});}})[_0x2254('0x15')](function(_0x44aa86){if(_0x15648c){var _0x502189=[];if(_0x44aa86){_0x5bb499=_0x44aa86;if(_0x5bb499[_0x2254('0x49')]){for(var _0x4be387=0x0;_0x4be387<_0x5bb499[_0x2254('0x49')];_0x4be387++){_0x502189['push']({'membername':_0x15648c[_0x2254('0x38')],'UserId':_0x15648c['id'],'queue_name':_0x5bb499[_0x4be387][_0x2254('0x38')],'VoiceQueueId':_0x5bb499[_0x4be387]['id'],'interface':_0x324bd1,'paused':_0x15648c['loginInPause']||![],'penalty':_0x5bb499[_0x4be387][_0x2254('0xf4')]||0x0});}return BPromise[_0x2254('0x81')](_0x502189,function(_0x502e63){return db[_0x2254('0xa8')][_0x2254('0xa9')](_0x502e63);});}}}})[_0x2254('0x15')](function(){if(_0x15648c){return db[_0x2254('0xf5')][_0x2254('0x82')]({'where':{'membername':_0x15648c[_0x2254('0x38')],'exitAt':null}});}})['then'](function(_0x30e99e){if(_0x15648c){var _0x1f81fd=[];_0x30e99e[_0x2254('0xf6')](function(_0x144fb2){_0x1f81fd[_0x2254('0x46')](_0x144fb2['update']({'exitAt':moment()[_0x2254('0xa6')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x2254('0x51')](_0x1f81fd);}})[_0x2254('0x15')](function(){if(_0x15648c){var _0xb40c22=[];var _0x253cca=[];var _0xf1db03=utils['getChannels']();var _0x1060bc={'membername':_0x15648c[_0x2254('0x38')],'interface':_0x324bd1,'enterAt':moment()[_0x2254('0xa6')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x15648c[_0x2254('0x2b')],'internal':_0x15648c[_0x2254('0x5e')]};_0xf1db03['forEach'](function(_0x56d920){_0xb40c22[_0x2254('0x46')](_[_0x2254('0xca')]({'channel':_0x56d920,'type':_0x2254('0xf7'),'data1':_0x353d8e[_0x2254('0x5a')]['device'],'data2':_0x324bd1},_0x1060bc));if(_0x15648c['loginInPause']){_0x253cca[_0x2254('0x46')](_['merge']({'channel':_0x56d920,'type':_0x2254('0xf8'),'data1':'LOGININPAUSE'},_0x1060bc));}});return db[_0x2254('0xf5')][_0x2254('0x7e')](_0xb40c22['concat'](_0x253cca),{'individualHooks':!![]});}})['then'](function(){if(_0x15648c){return _0x15648c[_0x2254('0x28')]({'online':!![],'lastLoginAt':moment()[_0x2254('0xa6')](_0x2254('0xf9')),'voicePause':_0x15648c['loginInPause']||![],'mailPause':_0x15648c[_0x2254('0x99')]||![],'chatPause':_0x15648c['loginInPause']||![],'faxPause':_0x15648c[_0x2254('0x99')]||![],'smsPause':_0x15648c['loginInPause']||![],'openchannelPause':_0x15648c[_0x2254('0x99')]||![],'whatsappPause':_0x15648c['loginInPause']||![],'pauseType':_0x15648c[_0x2254('0x99')]?_0x2254('0xfa'):null,'interface':_0x324bd1,'lastPauseAt':moment()[_0x2254('0xa6')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x2254('0x15')](function(_0x6aaeb7){if(_0x353d8e[_0x2254('0xfb')]){return _0x3f914b();}else{return BPromise[_0x2254('0xfc')](_0x6aaeb7)[_0x2254('0x15')](respondWithResult(_0x3564bd,null));}})[_0x2254('0x1f')](handleError(_0x3564bd,null));};exports[_0x2254('0xfd')]=function(_0x42328a,_0x199cf0){var _0x54a3f3;return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x42328a['params']['id'],'role':_0x2254('0x75')},'attributes':['id',_0x2254('0x38'),_0x2254('0x2b')]})[_0x2254('0x15')](handleEntityNotFound(_0x199cf0,null))[_0x2254('0x15')](function(_0x500024){if(_0x500024){_0x54a3f3=_0x500024;return db[_0x2254('0xa8')][_0x2254('0x29')]({'where':{'membername':_0x54a3f3[_0x2254('0x38')]},'individualHooks':!![]});}})[_0x2254('0x15')](function(){return db[_0x2254('0xf5')][_0x2254('0x82')]({'where':{'membername':_0x54a3f3['name'],'exitAt':null}});})[_0x2254('0x15')](function(_0x7cbf92){var _0x2b5b45=[];_0x7cbf92[_0x2254('0xf6')](function(_0x441608){_0x2b5b45[_0x2254('0x46')](_0x441608[_0x2254('0x28')]({'exitAt':moment()['format'](_0x2254('0xf9'))}));});return BPromise[_0x2254('0x51')](_0x2b5b45);})['then'](function(){return _0x54a3f3[_0x2254('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x2254('0x15')](respondWithResult(_0x199cf0,null))[_0x2254('0x1f')](handleError(_0x199cf0,null));};exports[_0x2254('0xfe')]=function(_0x2c9fb1,_0x5e8cdd){var _0x490ece;return db[_0x2254('0xa8')][_0x2254('0x28')]({'paused':0x1},{'where':{'UserId':_0x2c9fb1[_0x2254('0x53')]['id']},'individualHooks':!![]})['then'](function(){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x2c9fb1[_0x2254('0x53')]['id'],'role':_0x2254('0x75')},'attributes':['id',_0x2254('0x38'),_0x2254('0x2b'),_0x2254('0x5e'),'interface']});})[_0x2254('0x15')](handleEntityNotFound(_0x5e8cdd,null))[_0x2254('0x15')](function(_0x51a6e2){if(_0x51a6e2){_0x490ece=_0x51a6e2;return respondWithRpcPromise(_0x2254('0xff'),_0x2254('0xfe'),{'id':_0x490ece['id'],'name':_0x490ece[_0x2254('0x38')],'pause':!![]});}})[_0x2254('0x15')](function(){if(_0x490ece){return db[_0x2254('0xf5')][_0x2254('0x82')]({'where':{'membername':_0x490ece[_0x2254('0x38')],'type':'PAUSE','exitAt':null}});}})[_0x2254('0x15')](function(_0x381643){if(_0x381643[_0x2254('0x49')]){var _0x13df23=moment()['format'](_0x2254('0xf9'));for(var _0x355412=0x0,_0x493fcb=_0x381643[_0x2254('0x49')];_0x355412<_0x493fcb;_0x355412++){_0x381643[_0x355412][_0x2254('0x100')]({'exitAt':_0x13df23});}}})[_0x2254('0x15')](function(){var _0x348c54=[];var _0x1bcbb9=utils['getChannels']();_0x1bcbb9[_0x2254('0xf6')](function(_0x244d4b){_0x348c54[_0x2254('0x46')]({'channel':_0x244d4b,'membername':_0x490ece[_0x2254('0x38')],'interface':_[_0x2254('0x60')](_0x490ece[_0x2254('0x9b')])?util[_0x2254('0xa6')](_0x2254('0xa7'),_0x490ece[_0x2254('0x38')]):_0x490ece[_0x2254('0x9b')],'type':_0x2254('0xf8'),'enterAt':moment()[_0x2254('0xa6')](_0x2254('0xf9')),'data1':_0x2c9fb1[_0x2254('0x5a')]['type']||_0x2254('0x101'),'role':_0x490ece[_0x2254('0x2b')],'internal':_0x490ece['internal']});});return db['MemberReport'][_0x2254('0x7e')](_0x348c54,{'individualHooks':!![]});})['then'](function(){return _0x490ece[_0x2254('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x2c9fb1['body'][_0x2254('0x102')]||_0x2254('0x101'),'lastPauseAt':moment()[_0x2254('0xa6')](_0x2254('0xf9'))});})[_0x2254('0x15')](respondWithResult(_0x5e8cdd,null))[_0x2254('0x1f')](handleError(_0x5e8cdd,null));};exports['unpause']=function(_0x2d1347,_0x59ec57){var _0x5ba266;return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x2d1347[_0x2254('0x53')]['id']},'attributes':['id',_0x2254('0x38'),_0x2254('0x2b'),_0x2254('0x9a'),'mailPause',_0x2254('0x103'),_0x2254('0x104'),_0x2254('0x105'),_0x2254('0x106'),'whatsapppause',_0x2254('0x107'),'lastPauseAt']})['then'](handleEntityNotFound(_0x59ec57,null))[_0x2254('0x15')](function(_0x57faca){if(_0x57faca){_0x5ba266=_0x57faca;if(_0x2d1347[_0x2254('0x5a')]['channel']&&!utils['isValidChannel'](_0x2d1347['body'][_0x2254('0x97')])){throw new db[(_0x2254('0x89'))][(_0x2254('0x8a'))](_0x2254('0x9d'));}switch(_0x2d1347[_0x2254('0x5a')][_0x2254('0x97')]){case'voice':return respondWithRpcPromise('QueuePause',_0x2254('0x108'),{'id':_0x5ba266['id'],'name':_0x5ba266[_0x2254('0x38')],'pause':![]})[_0x2254('0x15')](function(){return db[_0x2254('0xa8')][_0x2254('0x28')]({'paused':0x0},{'where':{'UserId':_0x5ba266['id']},'individualHooks':!![]});})[_0x2254('0x15')](function(){return db[_0x2254('0xf5')][_0x2254('0x37')]({'where':{'channel':_0x2d1347[_0x2254('0x5a')]['channel'],'membername':_0x5ba266[_0x2254('0x38')],'type':'PAUSE','exitAt':null}});})[_0x2254('0x15')](function(_0x20f3bd){if(_0x20f3bd){return _0x20f3bd[_0x2254('0x28')]({'exitAt':moment()[_0x2254('0xa6')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x2254('0x109')},{'individualHooks':!![]});}return null;})[_0x2254('0x15')](function(){return _0x5ba266[_0x2254('0x28')]({'voicePause':![]});});case'mail':case _0x2254('0x4a'):case'fax':case _0x2254('0x4c'):case _0x2254('0x50'):case'openchannel':return db[_0x2254('0xf5')][_0x2254('0x37')]({'where':{'channel':_0x2d1347[_0x2254('0x5a')][_0x2254('0x97')],'membername':_0x5ba266['name'],'type':'PAUSE','exitAt':null}})[_0x2254('0x15')](function(_0x14bfa3){if(_0x14bfa3){return _0x14bfa3[_0x2254('0x28')]({'exitAt':moment()[_0x2254('0xa6')](_0x2254('0xf9')),'data2':'manual'},{'individualHooks':!![]});}return null;})['then'](function(){var _0x246e6d={};_['set'](_0x246e6d,util['format'](_0x2254('0x10a'),_0x2d1347['body'][_0x2254('0x97')],_0x2254('0x10b')),![]);return _0x5ba266[_0x2254('0x28')](_0x246e6d);});default:return respondWithRpcPromise(_0x2254('0xff'),_0x2254('0x108'),{'id':_0x5ba266['id'],'name':_0x5ba266[_0x2254('0x38')],'pause':![]})[_0x2254('0x15')](function(){return db[_0x2254('0xa8')][_0x2254('0x28')]({'paused':0x0},{'where':{'UserId':_0x5ba266['id']}});})['then'](function(){return db[_0x2254('0xf5')][_0x2254('0x82')]({'where':{'membername':_0x5ba266[_0x2254('0x38')],'type':_0x2254('0xf8'),'exitAt':null}});})[_0x2254('0x15')](function(_0x1d56b8){var _0x5eed01=[];_0x1d56b8[_0x2254('0xf6')](function(_0x35e821){_0x5eed01[_0x2254('0x46')](_0x35e821[_0x2254('0x28')]({'exitAt':moment()[_0x2254('0xa6')](_0x2254('0xf9')),'data2':'manual'}));});return BPromise[_0x2254('0x51')](_0x5eed01);})[_0x2254('0x15')](function(){return _0x5ba266['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x2254('0x15')](respondWithResult(_0x59ec57,null))[_0x2254('0x1f')](handleError(_0x59ec57,null));};exports[_0x2254('0x10c')]=function(_0x38e5de,_0xf8aba4){var _0xb94ad1={};var _0x50ea0f={};var _0x5eea6d;var _0x4e5379;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x38e5de[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0xf8aba4,null))['then'](function(_0x5649bc){if(_0x5649bc){_0x5eea6d=_0x5649bc;_0x50ea0f[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0x10d')][_0x2254('0x3d')]);_0x50ea0f[_0x2254('0x43')]=_['keys'](_0x38e5de['query']);_0x50ea0f[_0x2254('0x56')]=_['intersection'](_0x50ea0f['model'],_0x50ea0f[_0x2254('0x43')]);_0xb94ad1[_0x2254('0x45')]=_['intersection'](_0x50ea0f['model'],qs[_0x2254('0x58')](_0x38e5de[_0x2254('0x43')][_0x2254('0x58')]));_0xb94ad1[_0x2254('0x45')]=_0xb94ad1['attributes'][_0x2254('0x49')]?_0xb94ad1[_0x2254('0x45')]:_0x50ea0f[_0x2254('0x54')];_0xb94ad1[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x38e5de[_0x2254('0x43')]['sort']);_0xb94ad1[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x38e5de[_0x2254('0x43')],_0x50ea0f['filters']));if(_0x38e5de['query'][_0x2254('0x32')]){_0xb94ad1[_0x2254('0xc8')]=_[_0x2254('0xca')](_0xb94ad1[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0xb94ad1[_0x2254('0x45')],function(_0x37de4b){var _0x1a5370={};_0x1a5370[_0x37de4b]={'$like':'%'+_0x38e5de[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x1a5370;})});}_0xb94ad1=_[_0x2254('0xca')]({},_0xb94ad1,_0x38e5de['options']);return _0x5eea6d[_0x2254('0x10c')](_0xb94ad1);}})[_0x2254('0x15')](function(_0x441393){if(_0x441393){_0x4e5379=_0x441393[_0x2254('0x49')];if(!_0x38e5de[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0xb94ad1[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x38e5de[_0x2254('0x43')][_0x2254('0x23')]);_0xb94ad1[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x38e5de[_0x2254('0x43')][_0x2254('0x21')]);}return _0x5eea6d['getTeams'](_0xb94ad1);}})['then'](function(_0x23343c){if(_0x23343c){return _0x23343c?{'count':_0x4e5379,'rows':_0x23343c}:null;}})['then'](respondWithResult(_0xf8aba4,null))[_0x2254('0x1f')](handleError(_0xf8aba4,null));};exports[_0x2254('0x10e')]=function(_0x21b630,_0x167448){return db['User']['find']({'where':{'id':_0x21b630[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x167448,null))['then'](function(_0x21ce9a){if(_0x21ce9a){var _0x326d5b=_0x21ce9a[_0x2254('0x2a')]({'plain':!![]});return _0x21ce9a[_0x2254('0x10e')](_0x21b630[_0x2254('0x5a')]['ids'],_['omit'](_0x21b630[_0x2254('0x5a')],[_0x2254('0x5d'),'id'])||{})[_0x2254('0x15')](function(){for(var _0x56aa0a=0x0;_0x56aa0a<_0x21b630[_0x2254('0x5a')][_0x2254('0x5d')][_0x2254('0x49')];_0x56aa0a++){var _0x4419c0=[];var _0x154709={};db[_0x2254('0x10d')]['findOne']({'where':{'id':_0x21b630[_0x2254('0x5a')][_0x2254('0x5d')][_0x56aa0a]}})[_0x2254('0x15')](function(_0x3a0e3e){_0x154709=_0x3a0e3e['dataValues'];_0x4419c0[_0x2254('0x46')](_0x3a0e3e[_0x2254('0xf3')]()[_0x2254('0x15')](function(_0x54a5e1){for(var _0x4476b0=0x0;_0x4476b0<_0x54a5e1[_0x2254('0x49')];_0x4476b0++){_0x54a5e1[_0x4476b0][_0x2254('0x10f')](_0x2254('0x97'),_0x2254('0x110'));}return _0x54a5e1;}));_0x4419c0[_0x2254('0x46')](_0x3a0e3e[_0x2254('0x111')]()['then'](function(_0x12c244){for(var _0x944189=0x0;_0x944189<_0x12c244[_0x2254('0x49')];_0x944189++){_0x12c244[_0x944189]['setDataValue'](_0x2254('0x97'),_0x2254('0x112'));}return _0x12c244;}));_0x4419c0[_0x2254('0x46')](_0x3a0e3e[_0x2254('0x113')]()[_0x2254('0x15')](function(_0x3df53d){for(var _0x1be911=0x0;_0x1be911<_0x3df53d[_0x2254('0x49')];_0x1be911++){_0x3df53d[_0x1be911][_0x2254('0x10f')]('channel','Mail');}return _0x3df53d;}));_0x4419c0[_0x2254('0x46')](_0x3a0e3e[_0x2254('0x114')]()['then'](function(_0x238201){for(var _0x6f2691=0x0;_0x6f2691<_0x238201[_0x2254('0x49')];_0x6f2691++){_0x238201[_0x6f2691][_0x2254('0x10f')](_0x2254('0x97'),'Sms');}return _0x238201;}));_0x4419c0['push'](_0x3a0e3e['getWhatsappQueues']()[_0x2254('0x15')](function(_0x2b6479){for(var _0x410cf9=0x0;_0x410cf9<_0x2b6479[_0x2254('0x49')];_0x410cf9++){_0x2b6479[_0x410cf9]['setDataValue'](_0x2254('0x97'),_0x2254('0x115'));}return _0x2b6479;}));_0x4419c0[_0x2254('0x46')](_0x3a0e3e[_0x2254('0x116')]()[_0x2254('0x15')](function(_0x32f451){for(var _0x22ecab=0x0;_0x22ecab<_0x32f451['length'];_0x22ecab++){_0x32f451[_0x22ecab][_0x2254('0x10f')]('channel',_0x2254('0x117'));}return _0x32f451;}));_0x4419c0['push'](_0x3a0e3e[_0x2254('0x118')]()[_0x2254('0x15')](function(_0x284076){for(var _0x57023e=0x0;_0x57023e<_0x284076['length'];_0x57023e++){_0x284076[_0x57023e][_0x2254('0x10f')](_0x2254('0x97'),_0x2254('0x119'));}return _0x284076;}));return BPromise[_0x2254('0x51')](_0x4419c0);})[_0x2254('0x15')](function(_0x4487c3){var _0x20af4f=_[_0x2254('0x11a')](_0x4487c3);_0x4419c0=[];return db[_0x2254('0x63')][_0x2254('0x11b')](function(_0xfd70e1){for(var _0x1ce121=0x0;_0x1ce121<_0x20af4f[_0x2254('0x49')];_0x1ce121++){_0x4419c0[_0x2254('0x46')](_0x20af4f[_0x1ce121][_0x2254('0x11c')](_0x326d5b['id']),{'transaction':_0xfd70e1});}return BPromise[_0x2254('0x51')](_0x4419c0)['then'](function(){if(_0x326d5b[_0x2254('0x98')]){return BPromise['each'](_[_0x2254('0x32')](_0x20af4f,function(_0x361b8b){return _0x361b8b[_0x2254('0x11d')]('channel')===_0x2254('0x110');}),function(_0x32bc8c){return db[_0x2254('0xa8')][_0x2254('0xa9')]({'membername':_0x326d5b[_0x2254('0x38')],'UserId':_0x326d5b['id'],'queue_name':_0x32bc8c[_0x2254('0x38')],'VoiceQueueId':_0x32bc8c['id'],'interface':_[_0x2254('0x60')](_0x326d5b[_0x2254('0x9b')])?util[_0x2254('0xa6')]('SIP/%s',_0x326d5b[_0x2254('0x38')]):_0x326d5b['interface'],'paused':_0x326d5b[_0x2254('0x9a')]||![],'penalty':_0x326d5b['penalty']},{'transaction':_0xfd70e1});});}else{return;}})[_0x2254('0x15')](function(){for(var _0x58a34f=0x0;_0x58a34f<_0x20af4f['length'];_0x58a34f++){var _0xf06488=_0x20af4f[_0x58a34f][_0x2254('0x11d')](_0x2254('0x97'));var _0x10fbc2=_0xf06488+_0x2254('0xac');socket['emit'](_0x2254('0x2e')+_0xf06488+_0x2254('0x11e'),{'UserId':_0x326d5b['id'],['queueField']:_0x20af4f[_0x58a34f]['id']});}});});})['then'](function(){db[_0x2254('0x11f')]['findOne']({'where':{'teamId':_0x154709['id']}})[_0x2254('0x15')](function(_0x1be557){if(_0x1be557){db[_0x2254('0x120')][_0x2254('0x74')]({'UserId':_0x21b630[_0x2254('0x53')]['id'],'VoicePrefixId':_0x1be557[_0x2254('0x121')]});}});});}});}})[_0x2254('0x15')](respondWithStatusCode(_0x167448,null))[_0x2254('0x1f')](handleError(_0x167448,null));};exports[_0x2254('0x122')]=function(_0x239432,_0x34ee1a){return db['User'][_0x2254('0xc4')]({'where':{'id':_0x239432[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x34ee1a,null))[_0x2254('0x15')](function(_0x6693d){if(_0x6693d){var _0xe2cbd4=_0x6693d[_0x2254('0x2a')]({'plain':!![]});var _0x42204c=_0x239432[_0x2254('0x43')]['ids'];return _0x6693d['removeTeams'](_0x42204c)['then'](function(){for(var _0x546902=0x0;_0x546902<_0x42204c[_0x2254('0x49')];_0x546902++){var _0x7dd225=[];var _0x3e672f={};db[_0x2254('0x10d')][_0x2254('0xc4')]({'where':{'id':_0x42204c[_0x546902]}})[_0x2254('0x15')](function(_0x10cfbe){_0x3e672f=_0x10cfbe[_0x2254('0x4b')];_0x7dd225[_0x2254('0x46')](_0x10cfbe[_0x2254('0xf3')]()[_0x2254('0x15')](function(_0x355cc7){for(var _0x36a2d9=0x0;_0x36a2d9<_0x355cc7[_0x2254('0x49')];_0x36a2d9++){_0x355cc7[_0x36a2d9][_0x2254('0x10f')]('channel',_0x2254('0x110'));}return _0x355cc7;}));_0x7dd225[_0x2254('0x46')](_0x10cfbe['getChatQueues']()[_0x2254('0x15')](function(_0x2efecb){for(var _0x1adfc0=0x0;_0x1adfc0<_0x2efecb['length'];_0x1adfc0++){_0x2efecb[_0x1adfc0][_0x2254('0x10f')](_0x2254('0x97'),_0x2254('0x112'));}return _0x2efecb;}));_0x7dd225[_0x2254('0x46')](_0x10cfbe[_0x2254('0x113')]()[_0x2254('0x15')](function(_0x166ddb){for(var _0x4b8b27=0x0;_0x4b8b27<_0x166ddb[_0x2254('0x49')];_0x4b8b27++){_0x166ddb[_0x4b8b27][_0x2254('0x10f')]('channel',_0x2254('0x123'));}return _0x166ddb;}));_0x7dd225[_0x2254('0x46')](_0x10cfbe[_0x2254('0x114')]()[_0x2254('0x15')](function(_0x452fc3){for(var _0x1b31b9=0x0;_0x1b31b9<_0x452fc3['length'];_0x1b31b9++){_0x452fc3[_0x1b31b9][_0x2254('0x10f')](_0x2254('0x97'),_0x2254('0x124'));}return _0x452fc3;}));_0x7dd225[_0x2254('0x46')](_0x10cfbe['getWhatsappQueues']()[_0x2254('0x15')](function(_0x50e2e0){for(var _0x257503=0x0;_0x257503<_0x50e2e0[_0x2254('0x49')];_0x257503++){_0x50e2e0[_0x257503]['setDataValue'](_0x2254('0x97'),'Whatsapp');}return _0x50e2e0;}));_0x7dd225['push'](_0x10cfbe[_0x2254('0x116')]()['then'](function(_0x30e3c0){for(var _0x2239d1=0x0;_0x2239d1<_0x30e3c0[_0x2254('0x49')];_0x2239d1++){_0x30e3c0[_0x2239d1][_0x2254('0x10f')](_0x2254('0x97'),'Fax');}return _0x30e3c0;}));_0x7dd225[_0x2254('0x46')](_0x10cfbe[_0x2254('0x118')]()['then'](function(_0x38f0f4){for(var _0x44fc6b=0x0;_0x44fc6b<_0x38f0f4[_0x2254('0x49')];_0x44fc6b++){_0x38f0f4[_0x44fc6b][_0x2254('0x10f')](_0x2254('0x97'),_0x2254('0x119'));}return _0x38f0f4;}));return BPromise[_0x2254('0x51')](_0x7dd225);})[_0x2254('0x15')](function(_0x13bc00){var _0x4ab074=_[_0x2254('0x11a')](_0x13bc00);_0x7dd225=[];return db['sequelize']['transaction'](function(_0x417421){for(var _0x29fd87=0x0;_0x29fd87<_0x4ab074[_0x2254('0x49')];_0x29fd87++){_0x7dd225['push'](_0x4ab074[_0x29fd87]['removeAgent'](_0xe2cbd4['id']),{'transaction':_0x417421});}return BPromise['all'](_0x7dd225)[_0x2254('0x15')](function(){if(_0xe2cbd4['online']){return BPromise[_0x2254('0x81')](_[_0x2254('0x32')](_0x4ab074,function(_0x2c954b){return _0x2c954b[_0x2254('0x11d')](_0x2254('0x97'))===_0x2254('0x110');}),function(_0x1839d3){return db[_0x2254('0xa8')][_0x2254('0x29')]({'where':{'VoiceQueueId':_0x1839d3['id'],'UserId':_0xe2cbd4['id']},'transaction':_0x417421});});}else{return;}})['then'](function(){db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x3e672f['id']}})['then'](function(_0x18ec22){if(_0x18ec22){return db[_0x2254('0x120')]['destroy']({'where':{'UserId':_0xe2cbd4['id'],'VoicePrefixId':_0x18ec22['dataValues'][_0x2254('0x121')]}});}});})[_0x2254('0x15')](function(){for(var _0x3ca197=0x0;_0x3ca197<_0x4ab074[_0x2254('0x49')];_0x3ca197++){var _0x2300cc=_0x4ab074[_0x3ca197][_0x2254('0x11d')](_0x2254('0x97'));var _0x1be767=_0x2300cc+_0x2254('0xac');socket[_0x2254('0xa3')]('user'+_0x2300cc+_0x2254('0xad'),{'UserId':_0xe2cbd4['id'],['queueField']:_0x4ab074[_0x3ca197]['id']});}});});});}});}})[_0x2254('0x15')](respondWithStatusCode(_0x34ee1a,null))[_0x2254('0x1f')](handleError(_0x34ee1a,null));};exports['getLists']=function(_0x4df2b8,_0x2737ed){var _0x5856b6={};var _0x352198={};var _0x13eb48;var _0x500196;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x4df2b8['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2737ed,null))[_0x2254('0x15')](function(_0x165cf0){if(_0x165cf0){_0x13eb48=_0x165cf0;_0x352198['model']=_[_0x2254('0x55')](db['CmList']['rawAttributes']);_0x352198['query']=_['keys'](_0x4df2b8[_0x2254('0x43')]);_0x352198[_0x2254('0x56')]=_[_0x2254('0x57')](_0x352198[_0x2254('0x54')],_0x352198[_0x2254('0x43')]);_0x5856b6[_0x2254('0x45')]=_['intersection'](_0x352198[_0x2254('0x54')],qs[_0x2254('0x58')](_0x4df2b8[_0x2254('0x43')][_0x2254('0x58')]));_0x5856b6['attributes']=_0x5856b6[_0x2254('0x45')]['length']?_0x5856b6[_0x2254('0x45')]:_0x352198[_0x2254('0x54')];_0x5856b6[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x4df2b8[_0x2254('0x43')][_0x2254('0xc7')]);_0x5856b6[_0x2254('0xc8')]=qs['filters'](_['pick'](_0x4df2b8[_0x2254('0x43')],_0x352198[_0x2254('0x56')]));if(_0x4df2b8[_0x2254('0x43')][_0x2254('0x32')]){_0x5856b6[_0x2254('0xc8')]=_['merge'](_0x5856b6[_0x2254('0xc8')],{'$or':_['map'](_0x5856b6['attributes'],function(_0x3eb8fa){var _0xbf73e0={};_0xbf73e0[_0x3eb8fa]={'$like':'%'+_0x4df2b8[_0x2254('0x43')]['filter']+'%'};return _0xbf73e0;})});}_0x5856b6=_[_0x2254('0xca')]({},_0x5856b6,_0x4df2b8[_0x2254('0x59')]);return _0x13eb48['getLists'](_0x5856b6);}})['then'](function(_0x32cb3e){if(_0x32cb3e){_0x500196=_0x32cb3e[_0x2254('0x49')];if(!_0x4df2b8[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x5856b6[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x4df2b8['query']['limit']);_0x5856b6[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x4df2b8[_0x2254('0x43')][_0x2254('0x21')]);}return _0x13eb48[_0x2254('0x125')](_0x5856b6);}})[_0x2254('0x15')](function(_0x37a8f5){if(_0x37a8f5){return _0x37a8f5?{'count':_0x500196,'rows':_0x37a8f5}:null;}})['then'](respondWithResult(_0x2737ed,null))[_0x2254('0x1f')](handleError(_0x2737ed,null));};exports[_0x2254('0x126')]=function(_0x2382eb,_0x5e7d5d){var _0x341537={};var _0x24ae36={};var _0x19557f;var _0x43dc17;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x2382eb[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x5e7d5d,null))[_0x2254('0x15')](function(_0x59f45e){if(_0x59f45e){_0x19557f=_0x59f45e;_0x24ae36['model']=_[_0x2254('0x55')](db[_0x2254('0x42')][_0x2254('0x3d')]);_0x24ae36['query']=_[_0x2254('0x55')](_0x2382eb['query']);_0x24ae36[_0x2254('0x56')]=_[_0x2254('0x57')](_0x24ae36['model'],_0x24ae36[_0x2254('0x43')]);_0x341537[_0x2254('0x45')]=_[_0x2254('0x57')](_0x24ae36[_0x2254('0x54')],qs['fields'](_0x2382eb['query'][_0x2254('0x58')]));_0x341537[_0x2254('0x45')]=_0x341537[_0x2254('0x45')][_0x2254('0x49')]?_0x341537[_0x2254('0x45')]:_0x24ae36[_0x2254('0x54')];_0x341537[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x2382eb[_0x2254('0x43')][_0x2254('0xc7')]);_0x341537[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x2382eb[_0x2254('0x43')],_0x24ae36['filters']));if(_0x2382eb[_0x2254('0x43')][_0x2254('0x32')]){_0x341537[_0x2254('0xc8')]=_['merge'](_0x341537['where'],{'$or':_[_0x2254('0x34')](_0x341537[_0x2254('0x45')],function(_0x48dd7d){var _0x53c3a7={};_0x53c3a7[_0x48dd7d]={'$like':'%'+_0x2382eb[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x53c3a7;})});}_0x341537['model']=db[_0x2254('0x42')];_0x341537['as']=_0x2254('0x2f');_0x341537=_[_0x2254('0xca')]({},_0x341537,_0x2382eb[_0x2254('0x59')]);return _0x19557f[_0x2254('0xf3')]({'include':[_0x341537]});}})[_0x2254('0x15')](function(_0x38eec7){if(_0x38eec7){var _0x51f72e={},_0x820e48=[],_0x516d96=0x0;for(var _0x7fad45=0x0;_0x7fad45<_0x38eec7['length'];_0x7fad45+=0x1){for(var _0x3186a0=0x0,_0x3277ad;_0x3186a0<_0x38eec7[_0x7fad45][_0x2254('0x2f')][_0x2254('0x49')];_0x3186a0+=0x1){_0x3277ad=_0x38eec7[_0x7fad45][_0x2254('0x2f')][_0x3186a0]['get']({'plain':!![]});_0x51f72e[_0x3277ad['id']]=_0x3277ad;}}_0x51f72e=_['values'](_0x51f72e);for(var _0x4ea378=qs[_0x2254('0x21')](_0x2382eb['query'][_0x2254('0x21')]);_0x4ea378<_0x51f72e[_0x2254('0x49')]&&_0x820e48[_0x2254('0x49')]<qs[_0x2254('0x23')](_0x2382eb[_0x2254('0x43')][_0x2254('0x23')]);_0x4ea378+=0x1){if(_0x51f72e[_0x4ea378]){_0x820e48[_0x2254('0x46')](_0x51f72e[_0x4ea378]);}}return{'count':_0x51f72e[_0x2254('0x49')],'rows':_0x820e48};}})[_0x2254('0x15')](respondWithResult(_0x5e7d5d,null))[_0x2254('0x1f')](handleError(_0x5e7d5d,null));};exports[_0x2254('0x29')]=function(_0x4ce534,_0x474e89){if(_0x4ce534[_0x2254('0x2e')]['id']==_0x4ce534['params']['id']){return _0x474e89['status'](0x1f4)[_0x2254('0x3b')]({'message':_0x2254('0x127')});}return db[_0x2254('0x42')]['find']({'where':{'id':_0x4ce534[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x474e89,null))['then'](removeEntity(_0x474e89,null))['catch'](handleError(_0x474e89,null));};exports[_0x2254('0x128')]=function(_0x2ca14d,_0x7fec6b){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x2ca14d[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x7fec6b,null))[_0x2254('0x15')](function(_0x2f2753){if(_0x2f2753){return _0x2f2753[_0x2254('0x128')](_0x2ca14d[_0x2254('0x5a')][_0x2254('0x5d')],_[_0x2254('0x129')](_0x2ca14d[_0x2254('0x5a')],['ids','id'])||{})[_0x2254('0x12a')](function(){for(var _0x483307=0x0;_0x483307<_0x2ca14d[_0x2254('0x5a')][_0x2254('0x5d')][_0x2254('0x49')];_0x483307+=0x1){socket[_0x2254('0xa3')](_0x2254('0x12b'),{'ChatInteractionId':Number(_0x2ca14d[_0x2254('0x5a')]['ids'][_0x483307]),'UserId':Number(_0x2ca14d[_0x2254('0x53')]['id'])});}return _0x2ca14d[_0x2254('0x5a')]['ids'];});}})['then'](respondWithResult(_0x7fec6b,null))[_0x2254('0x1f')](handleError(_0x7fec6b,null));};exports[_0x2254('0x12c')]=function(_0x1a82e4,_0x4a0803){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x1a82e4[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x4a0803,null))[_0x2254('0x15')](function(_0x337390){if(_0x337390){return _0x337390[_0x2254('0x12c')](_0x1a82e4[_0x2254('0x43')]['ids'])['then'](function(){if(_['isArray'](_0x1a82e4[_0x2254('0x43')]['ids'])){for(var _0xac2289=0x0;_0xac2289<_0x1a82e4[_0x2254('0x43')][_0x2254('0x5d')][_0x2254('0x49')];_0xac2289+=0x1){socket[_0x2254('0xa3')](_0x2254('0x12d'),{'ChatInteractionId':Number(_0x1a82e4[_0x2254('0x43')]['ids'][_0xac2289]),'UserId':Number(_0x1a82e4[_0x2254('0x53')]['id'])});}}else{socket[_0x2254('0xa3')](_0x2254('0x12d'),{'ChatInteractionId':Number(_0x1a82e4['query'][_0x2254('0x5d')]),'UserId':Number(_0x1a82e4['params']['id'])});}});}})[_0x2254('0x15')](respondWithStatusCode(_0x4a0803,null))[_0x2254('0x1f')](handleError(_0x4a0803,null));};exports[_0x2254('0x12e')]=function(_0x4befb7,_0x507cbf){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x4befb7['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x507cbf,null))[_0x2254('0x15')](function(_0x17a594){if(_0x17a594){return _0x17a594[_0x2254('0x12e')](_0x4befb7[_0x2254('0x5a')][_0x2254('0x5d')],_[_0x2254('0x129')](_0x4befb7[_0x2254('0x5a')],['ids','id'])||{})['spread'](function(){for(var _0x195133=0x0;_0x195133<_0x4befb7[_0x2254('0x5a')][_0x2254('0x5d')]['length'];_0x195133+=0x1){socket[_0x2254('0xa3')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x4befb7[_0x2254('0x5a')][_0x2254('0x5d')][_0x195133]),'UserId':Number(_0x4befb7['params']['id'])});}return _0x4befb7['body'][_0x2254('0x5d')];});}})[_0x2254('0x15')](respondWithResult(_0x507cbf,null))[_0x2254('0x1f')](handleError(_0x507cbf,null));};exports[_0x2254('0x12f')]=function(_0x4930fc,_0x50cf93){return db['User'][_0x2254('0x37')]({'where':{'id':_0x4930fc[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x50cf93,null))[_0x2254('0x15')](function(_0x346b8f){if(_0x346b8f){return _0x346b8f[_0x2254('0x12f')](_0x4930fc[_0x2254('0x43')]['ids'])[_0x2254('0x15')](function(){if(_[_0x2254('0x130')](_0x4930fc['query'][_0x2254('0x5d')])){for(var _0x826117=0x0;_0x826117<_0x4930fc[_0x2254('0x43')][_0x2254('0x5d')][_0x2254('0x49')];_0x826117+=0x1){socket[_0x2254('0xa3')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4930fc[_0x2254('0x43')][_0x2254('0x5d')][_0x826117]),'UserId':Number(_0x4930fc[_0x2254('0x53')]['id'])});}}else{socket[_0x2254('0xa3')](_0x2254('0x131'),{'MailInteractionId':Number(_0x4930fc[_0x2254('0x43')][_0x2254('0x5d')]),'UserId':Number(_0x4930fc[_0x2254('0x53')]['id'])});}});}})[_0x2254('0x15')](respondWithStatusCode(_0x50cf93,null))[_0x2254('0x1f')](handleError(_0x50cf93,null));};exports[_0x2254('0x132')]=function(_0x5ce31f,_0x2dca1e){return db['User']['find']({'where':{'id':_0x5ce31f[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2dca1e,null))[_0x2254('0x15')](function(_0x424f64){if(_0x424f64){return _0x424f64[_0x2254('0x132')](_0x5ce31f[_0x2254('0x5a')][_0x2254('0x5d')],_['omit'](_0x5ce31f[_0x2254('0x5a')],[_0x2254('0x5d'),'id'])||{})[_0x2254('0x12a')](function(){for(var _0x4b7803=0x0;_0x4b7803<_0x5ce31f[_0x2254('0x5a')]['ids'][_0x2254('0x49')];_0x4b7803+=0x1){socket[_0x2254('0xa3')](_0x2254('0x133'),{'FaxInteractionId':Number(_0x5ce31f[_0x2254('0x5a')][_0x2254('0x5d')][_0x4b7803]),'UserId':Number(_0x5ce31f[_0x2254('0x53')]['id'])});}return _0x5ce31f[_0x2254('0x5a')]['ids'];});}})[_0x2254('0x15')](respondWithResult(_0x2dca1e,null))['catch'](handleError(_0x2dca1e,null));};exports[_0x2254('0x134')]=function(_0x119659,_0x26450c){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x119659['params']['id']}})['then'](handleEntityNotFound(_0x26450c,null))[_0x2254('0x15')](function(_0x54c066){if(_0x54c066){return _0x54c066[_0x2254('0x134')](_0x119659[_0x2254('0x43')]['ids'])[_0x2254('0x15')](function(){if(_[_0x2254('0x130')](_0x119659[_0x2254('0x43')]['ids'])){for(var _0x4ffc08=0x0;_0x4ffc08<_0x119659[_0x2254('0x43')]['ids'][_0x2254('0x49')];_0x4ffc08+=0x1){socket[_0x2254('0xa3')](_0x2254('0x135'),{'FaxInteractionId':Number(_0x119659['query'][_0x2254('0x5d')][_0x4ffc08]),'UserId':Number(_0x119659['params']['id'])});}}else{socket['emit'](_0x2254('0x135'),{'FaxInteractionId':Number(_0x119659[_0x2254('0x43')][_0x2254('0x5d')]),'UserId':Number(_0x119659[_0x2254('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x26450c,null))[_0x2254('0x1f')](handleError(_0x26450c,null));};exports[_0x2254('0x136')]=function(_0x1f4b59,_0x3848b1){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x1f4b59[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x3848b1,null))[_0x2254('0x15')](function(_0x1387a2){if(_0x1387a2){return _0x1387a2[_0x2254('0x136')](_0x1f4b59[_0x2254('0x5a')]['ids'],_[_0x2254('0x129')](_0x1f4b59[_0x2254('0x5a')],[_0x2254('0x5d'),'id'])||{})[_0x2254('0x12a')](function(){for(var _0x422926=0x0;_0x422926<_0x1f4b59[_0x2254('0x5a')][_0x2254('0x5d')][_0x2254('0x49')];_0x422926+=0x1){socket[_0x2254('0xa3')](_0x2254('0x137'),{'SmsInteractionId':Number(_0x1f4b59[_0x2254('0x5a')][_0x2254('0x5d')][_0x422926]),'UserId':Number(_0x1f4b59[_0x2254('0x53')]['id'])});}return _0x1f4b59[_0x2254('0x5a')]['ids'];});}})[_0x2254('0x15')](respondWithResult(_0x3848b1,null))[_0x2254('0x1f')](handleError(_0x3848b1,null));};exports[_0x2254('0x138')]=function(_0x4d0339,_0x2a9047){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x4d0339[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2a9047,null))[_0x2254('0x15')](function(_0x1c9dd0){if(_0x1c9dd0){return _0x1c9dd0[_0x2254('0x138')](_0x4d0339[_0x2254('0x43')][_0x2254('0x5d')])[_0x2254('0x15')](function(){if(_[_0x2254('0x130')](_0x4d0339[_0x2254('0x43')]['ids'])){for(var _0x337432=0x0;_0x337432<_0x4d0339[_0x2254('0x43')][_0x2254('0x5d')][_0x2254('0x49')];_0x337432+=0x1){socket[_0x2254('0xa3')](_0x2254('0x139'),{'SmsInteractionId':Number(_0x4d0339['query'][_0x2254('0x5d')][_0x337432]),'UserId':Number(_0x4d0339['params']['id'])});}}else{socket[_0x2254('0xa3')](_0x2254('0x139'),{'SmsInteractionId':Number(_0x4d0339[_0x2254('0x43')]['ids']),'UserId':Number(_0x4d0339['params']['id'])});}});}})[_0x2254('0x15')](respondWithStatusCode(_0x2a9047,null))[_0x2254('0x1f')](handleError(_0x2a9047,null));};exports[_0x2254('0x13a')]=function(_0x45996e,_0xae8cf7){return db[_0x2254('0x42')]['find']({'where':{'id':_0x45996e[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0xae8cf7,null))[_0x2254('0x15')](function(_0x3b9498){if(_0x3b9498){return _0x3b9498[_0x2254('0x13a')](_0x45996e[_0x2254('0x5a')][_0x2254('0x5d')],_['omit'](_0x45996e[_0x2254('0x5a')],[_0x2254('0x5d'),'id'])||{})[_0x2254('0x12a')](function(){for(var _0x3e94bb=0x0;_0x3e94bb<_0x45996e[_0x2254('0x5a')][_0x2254('0x5d')][_0x2254('0x49')];_0x3e94bb+=0x1){socket[_0x2254('0xa3')](_0x2254('0x13b'),{'OpenchannelInteractionId':Number(_0x45996e[_0x2254('0x5a')][_0x2254('0x5d')][_0x3e94bb]),'UserId':Number(_0x45996e[_0x2254('0x53')]['id'])});}return _0x45996e[_0x2254('0x5a')][_0x2254('0x5d')];});}})[_0x2254('0x15')](respondWithResult(_0xae8cf7,null))['catch'](handleError(_0xae8cf7,null));};exports[_0x2254('0x13c')]=function(_0x222e77,_0x334ec8){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x222e77['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x334ec8,null))[_0x2254('0x15')](function(_0x4ebbdf){if(_0x4ebbdf){return _0x4ebbdf[_0x2254('0x13c')](_0x222e77[_0x2254('0x43')]['ids'])[_0x2254('0x15')](function(){if(_[_0x2254('0x130')](_0x222e77[_0x2254('0x43')][_0x2254('0x5d')])){for(var _0x43370b=0x0;_0x43370b<_0x222e77[_0x2254('0x43')][_0x2254('0x5d')][_0x2254('0x49')];_0x43370b+=0x1){socket['emit'](_0x2254('0x13d'),{'OpenchannelInteractionId':Number(_0x222e77[_0x2254('0x43')]['ids'][_0x43370b]),'UserId':Number(_0x222e77[_0x2254('0x53')]['id'])});}}else{socket[_0x2254('0xa3')](_0x2254('0x13d'),{'OpenchannelInteractionId':Number(_0x222e77['query'][_0x2254('0x5d')]),'UserId':Number(_0x222e77[_0x2254('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x334ec8,null))[_0x2254('0x1f')](handleError(_0x334ec8,null));};exports[_0x2254('0x13e')]=function(_0x2bb084,_0x463797){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x2bb084['params']['id']}})['then'](handleEntityNotFound(_0x463797,null))[_0x2254('0x15')](function(_0xc025a2){if(_0xc025a2){return _0xc025a2['addWhatsappInteractions'](_0x2bb084['body'][_0x2254('0x5d')],_[_0x2254('0x129')](_0x2bb084['body'],[_0x2254('0x5d'),'id'])||{})[_0x2254('0x12a')](function(){for(var _0xb771c1=0x0;_0xb771c1<_0x2bb084[_0x2254('0x5a')][_0x2254('0x5d')][_0x2254('0x49')];_0xb771c1+=0x1){socket['emit'](_0x2254('0x13f'),{'WhatsappInteractionId':Number(_0x2bb084[_0x2254('0x5a')][_0x2254('0x5d')][_0xb771c1]),'UserId':Number(_0x2bb084['params']['id'])});}return _0x2bb084[_0x2254('0x5a')][_0x2254('0x5d')];});}})[_0x2254('0x15')](respondWithResult(_0x463797,null))[_0x2254('0x1f')](handleError(_0x463797,null));};exports[_0x2254('0x140')]=function(_0x3e839f,_0x34b725){return db['User'][_0x2254('0x37')]({'where':{'id':_0x3e839f[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x34b725,null))['then'](function(_0xe0f26e){if(_0xe0f26e){return _0xe0f26e[_0x2254('0x140')](_0x3e839f[_0x2254('0x43')][_0x2254('0x5d')]);}})[_0x2254('0x15')](respondWithStatusCode(_0x34b725,null))[_0x2254('0x1f')](handleError(_0x34b725,null));};exports['getVoicePrefixes']=function(_0x4cfdb2,_0x2efd5d){var _0x422040={};var _0x13ded0={};var _0x3441de;var _0x2374fc;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x4cfdb2[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2efd5d,null))['then'](function(_0x2cfbd2){if(_0x2cfbd2){_0x3441de=_0x2cfbd2;_0x13ded0[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0x141')][_0x2254('0x3d')]);_0x13ded0['query']=_[_0x2254('0x55')](_0x4cfdb2[_0x2254('0x43')]);_0x13ded0['filters']=_[_0x2254('0x57')](_0x13ded0[_0x2254('0x54')],_0x13ded0['query']);_0x422040[_0x2254('0x45')]=_[_0x2254('0x57')](_0x13ded0[_0x2254('0x54')],qs['fields'](_0x4cfdb2['query'][_0x2254('0x58')]));_0x422040[_0x2254('0x45')]=_0x422040[_0x2254('0x45')][_0x2254('0x49')]?_0x422040[_0x2254('0x45')]:_0x13ded0[_0x2254('0x54')];_0x422040[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x4cfdb2[_0x2254('0x43')][_0x2254('0xc7')]);_0x422040[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x4cfdb2['query'],_0x13ded0[_0x2254('0x56')]));if(_0x4cfdb2[_0x2254('0x43')][_0x2254('0x32')]){_0x422040['where']=_[_0x2254('0xca')](_0x422040['where'],{'$or':_[_0x2254('0x34')](_0x422040[_0x2254('0x45')],function(_0x31c728){var _0x2381a4={};_0x2381a4[_0x31c728]={'$like':'%'+_0x4cfdb2[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x2381a4;})});}_0x422040=_[_0x2254('0xca')]({},_0x422040,_0x4cfdb2[_0x2254('0x59')]);return _0x3441de[_0x2254('0x142')](_0x422040);}})[_0x2254('0x15')](function(_0x6d09ef){if(_0x6d09ef){_0x2374fc=_0x6d09ef[_0x2254('0x49')];if(!_0x4cfdb2[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x422040[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x4cfdb2[_0x2254('0x43')][_0x2254('0x23')]);_0x422040[_0x2254('0x21')]=qs['offset'](_0x4cfdb2[_0x2254('0x43')]['offset']);}return _0x3441de[_0x2254('0x142')](_0x422040);}})[_0x2254('0x15')](function(_0x26bebb){if(_0x26bebb){return _0x26bebb?{'count':_0x2374fc,'rows':_0x26bebb}:null;}})[_0x2254('0x15')](respondWithResult(_0x2efd5d,null))['catch'](handleError(_0x2efd5d,null));};exports[_0x2254('0x143')]=function(_0x830c8e,_0x3471db){var _0x558249={};var _0x24ee6b={};var _0x1372aa;var _0x19a29b;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x830c8e['params']['id']}})['then'](handleEntityNotFound(_0x3471db,null))[_0x2254('0x15')](function(_0x287927){if(_0x287927){_0x1372aa=_0x287927;_0x24ee6b[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0x144')][_0x2254('0x3d')]);_0x24ee6b[_0x2254('0x43')]=_[_0x2254('0x55')](_0x830c8e[_0x2254('0x43')]);_0x24ee6b['filters']=_[_0x2254('0x57')](_0x24ee6b[_0x2254('0x54')],_0x24ee6b[_0x2254('0x43')]);_0x558249[_0x2254('0x45')]=_[_0x2254('0x57')](_0x24ee6b[_0x2254('0x54')],qs['fields'](_0x830c8e['query'][_0x2254('0x58')]));_0x558249[_0x2254('0x45')]=_0x558249[_0x2254('0x45')][_0x2254('0x49')]?_0x558249[_0x2254('0x45')]:_0x24ee6b[_0x2254('0x54')];_0x558249[_0x2254('0xc6')]=qs['sort'](_0x830c8e[_0x2254('0x43')][_0x2254('0xc7')]);_0x558249[_0x2254('0xc8')]=qs['filters'](_[_0x2254('0xc9')](_0x830c8e[_0x2254('0x43')],_0x24ee6b[_0x2254('0x56')]));if(_0x830c8e[_0x2254('0x43')]['filter']){_0x558249[_0x2254('0xc8')]=_['merge'](_0x558249[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x558249[_0x2254('0x45')],function(_0x527006){var _0x243e13={};_0x243e13[_0x527006]={'$like':'%'+_0x830c8e[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x243e13;})});}_0x558249=_['merge']({},_0x558249,_0x830c8e[_0x2254('0x59')]);return _0x1372aa[_0x2254('0x143')](_0x558249);}})[_0x2254('0x15')](function(_0x4688bc){if(_0x4688bc){_0x19a29b=_0x4688bc[_0x2254('0x49')];if(!_0x830c8e[_0x2254('0x43')]['hasOwnProperty']('nolimit')){_0x558249[_0x2254('0x23')]=qs['limit'](_0x830c8e['query']['limit']);_0x558249[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x830c8e[_0x2254('0x43')]['offset']);}return _0x1372aa['getFaxAccounts'](_0x558249);}})[_0x2254('0x15')](function(_0x5d00ad){if(_0x5d00ad){return _0x5d00ad?{'count':_0x19a29b,'rows':_0x5d00ad}:null;}})[_0x2254('0x15')](respondWithResult(_0x3471db,null))[_0x2254('0x1f')](handleError(_0x3471db,null));};exports['addFaxAccounts']=function(_0x3987a7,_0x17ca10){return db['User']['find']({'where':{'id':_0x3987a7[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x17ca10,null))[_0x2254('0x15')](function(_0x22a1d7){if(_0x22a1d7){return _0x22a1d7[_0x2254('0x145')](_0x3987a7[_0x2254('0x5a')][_0x2254('0x5d')],_['omit'](_0x3987a7[_0x2254('0x5a')],['ids','id'])||{});}})['then'](respondWithResult(_0x17ca10,null))[_0x2254('0x1f')](handleError(_0x17ca10,null));};exports[_0x2254('0x146')]=function(_0x3c2f52,_0x21c4ec){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x3c2f52[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x21c4ec,null))[_0x2254('0x15')](function(_0x4767cd){if(_0x4767cd){return _0x4767cd[_0x2254('0x146')](_0x3c2f52[_0x2254('0x43')][_0x2254('0x5d')]);}})[_0x2254('0x15')](respondWithStatusCode(_0x21c4ec,null))[_0x2254('0x1f')](handleError(_0x21c4ec,null));};exports['getMailAccounts']=function(_0xd0e4a5,_0x2cc877){var _0x5a7fbc={};var _0x42b5f3={};var _0x1b884e;var _0x353c11;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0xd0e4a5[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2cc877,null))[_0x2254('0x15')](function(_0x4090a2){if(_0x4090a2){_0x1b884e=_0x4090a2;_0x42b5f3[_0x2254('0x54')]=_['keys'](db['MailAccount'][_0x2254('0x3d')]);_0x42b5f3[_0x2254('0x43')]=_['keys'](_0xd0e4a5[_0x2254('0x43')]);_0x42b5f3[_0x2254('0x56')]=_['intersection'](_0x42b5f3[_0x2254('0x54')],_0x42b5f3[_0x2254('0x43')]);_0x5a7fbc[_0x2254('0x45')]=_['intersection'](_0x42b5f3[_0x2254('0x54')],qs[_0x2254('0x58')](_0xd0e4a5[_0x2254('0x43')]['fields']));_0x5a7fbc[_0x2254('0x45')]=_0x5a7fbc[_0x2254('0x45')]['length']?_0x5a7fbc[_0x2254('0x45')]:_0x42b5f3[_0x2254('0x54')];_0x5a7fbc[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0xd0e4a5[_0x2254('0x43')][_0x2254('0xc7')]);_0x5a7fbc[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0xd0e4a5['query'],_0x42b5f3[_0x2254('0x56')]));if(_0xd0e4a5[_0x2254('0x43')][_0x2254('0x32')]){_0x5a7fbc[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x5a7fbc[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x5a7fbc[_0x2254('0x45')],function(_0x1b9961){var _0x48370b={};_0x48370b[_0x1b9961]={'$like':'%'+_0xd0e4a5['query']['filter']+'%'};return _0x48370b;})});}_0x5a7fbc=_[_0x2254('0xca')]({},_0x5a7fbc,_0xd0e4a5['options']);return _0x1b884e[_0x2254('0x147')](_0x5a7fbc);}})[_0x2254('0x15')](function(_0x2c41ef){if(_0x2c41ef){_0x353c11=_0x2c41ef[_0x2254('0x49')];if(!_0xd0e4a5[_0x2254('0x43')][_0x2254('0xcb')]('nolimit')){_0x5a7fbc[_0x2254('0x23')]=qs['limit'](_0xd0e4a5['query']['limit']);_0x5a7fbc[_0x2254('0x21')]=qs[_0x2254('0x21')](_0xd0e4a5[_0x2254('0x43')][_0x2254('0x21')]);}return _0x1b884e[_0x2254('0x147')](_0x5a7fbc);}})[_0x2254('0x15')](function(_0x5141fe){if(_0x5141fe){return _0x5141fe?{'count':_0x353c11,'rows':_0x5141fe}:null;}})[_0x2254('0x15')](respondWithResult(_0x2cc877,null))['catch'](handleError(_0x2cc877,null));};exports[_0x2254('0x148')]=function(_0x42011b,_0x3fc1b6){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x42011b['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x3fc1b6,null))[_0x2254('0x15')](function(_0x4b7d6c){if(_0x4b7d6c){return _0x4b7d6c[_0x2254('0x148')](_0x42011b[_0x2254('0x5a')][_0x2254('0x5d')],_['omit'](_0x42011b['body'],[_0x2254('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x3fc1b6,null))[_0x2254('0x1f')](handleError(_0x3fc1b6,null));};exports['removeMailAccounts']=function(_0x4be032,_0x46153f){return db['User'][_0x2254('0x37')]({'where':{'id':_0x4be032[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x46153f,null))[_0x2254('0x15')](function(_0x3ed7bd){if(_0x3ed7bd){return _0x3ed7bd[_0x2254('0x149')](_0x4be032['query']['ids']);}})[_0x2254('0x15')](respondWithStatusCode(_0x46153f,null))[_0x2254('0x1f')](handleError(_0x46153f,null));};exports[_0x2254('0x14a')]=function(_0x195efc,_0x22963e){var _0x4e7558={};var _0x22d99c={};var _0xcba4ac;var _0x872c45;return db[_0x2254('0x42')]['findOne']({'where':{'id':_0x195efc[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x22963e,null))['then'](function(_0x4de780){if(_0x4de780){_0xcba4ac=_0x4de780;_0x22d99c[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0x14b')]['rawAttributes']);_0x22d99c['query']=_['keys'](_0x195efc['query']);_0x22d99c['filters']=_[_0x2254('0x57')](_0x22d99c[_0x2254('0x54')],_0x22d99c['query']);_0x4e7558['attributes']=_[_0x2254('0x57')](_0x22d99c['model'],qs[_0x2254('0x58')](_0x195efc[_0x2254('0x43')][_0x2254('0x58')]));_0x4e7558['attributes']=_0x4e7558[_0x2254('0x45')][_0x2254('0x49')]?_0x4e7558[_0x2254('0x45')]:_0x22d99c[_0x2254('0x54')];_0x4e7558[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x195efc['query'][_0x2254('0xc7')]);_0x4e7558[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x195efc[_0x2254('0x43')],_0x22d99c['filters']));if(_0x195efc['query'][_0x2254('0x32')]){_0x4e7558[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x4e7558[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x4e7558['attributes'],function(_0x50bb08){var _0x32985a={};_0x32985a[_0x50bb08]={'$like':'%'+_0x195efc['query'][_0x2254('0x32')]+'%'};return _0x32985a;})});}_0x4e7558=_[_0x2254('0xca')]({},_0x4e7558,_0x195efc[_0x2254('0x59')]);return _0xcba4ac[_0x2254('0x14a')](_0x4e7558);}})['then'](function(_0x286f09){if(_0x286f09){_0x872c45=_0x286f09[_0x2254('0x49')];if(!_0x195efc[_0x2254('0x43')]['hasOwnProperty'](_0x2254('0xd2'))){_0x4e7558[_0x2254('0x23')]=qs['limit'](_0x195efc[_0x2254('0x43')][_0x2254('0x23')]);_0x4e7558['offset']=qs['offset'](_0x195efc[_0x2254('0x43')][_0x2254('0x21')]);}return _0xcba4ac[_0x2254('0x14a')](_0x4e7558);}})[_0x2254('0x15')](function(_0x2ba49d){if(_0x2ba49d){return _0x2ba49d?{'count':_0x872c45,'rows':_0x2ba49d}:null;}})[_0x2254('0x15')](respondWithResult(_0x22963e,null))[_0x2254('0x1f')](handleError(_0x22963e,null));};exports[_0x2254('0x14c')]=function(_0x2160d1,_0x3df627){return db[_0x2254('0x42')]['find']({'where':{'id':_0x2160d1['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x3df627,null))[_0x2254('0x15')](function(_0x16113e){if(_0x16113e){return _0x16113e['addOpenchannelAccounts'](_0x2160d1[_0x2254('0x5a')]['ids'],_['omit'](_0x2160d1[_0x2254('0x5a')],['ids','id'])||{});}})[_0x2254('0x15')](respondWithResult(_0x3df627,null))[_0x2254('0x1f')](handleError(_0x3df627,null));};exports[_0x2254('0x14d')]=function(_0xa647d7,_0x157e0a){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0xa647d7[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x157e0a,null))[_0x2254('0x15')](function(_0x285166){if(_0x285166){return _0x285166['removeOpenchannelAccounts'](_0xa647d7[_0x2254('0x43')]['ids']);}})[_0x2254('0x15')](respondWithStatusCode(_0x157e0a,null))['catch'](handleError(_0x157e0a,null));};exports['getSmsAccounts']=function(_0x7540ac,_0x2bc5b3){var _0x43ac57={};var _0x19714a={};var _0x2bd20d;var _0x24ee7e;return db[_0x2254('0x42')]['findOne']({'where':{'id':_0x7540ac['params']['id']}})['then'](handleEntityNotFound(_0x2bc5b3,null))['then'](function(_0x523990){if(_0x523990){_0x2bd20d=_0x523990;_0x19714a[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0x14e')][_0x2254('0x3d')]);_0x19714a[_0x2254('0x43')]=_[_0x2254('0x55')](_0x7540ac[_0x2254('0x43')]);_0x19714a[_0x2254('0x56')]=_['intersection'](_0x19714a[_0x2254('0x54')],_0x19714a[_0x2254('0x43')]);_0x43ac57['attributes']=_['intersection'](_0x19714a[_0x2254('0x54')],qs[_0x2254('0x58')](_0x7540ac['query'][_0x2254('0x58')]));_0x43ac57[_0x2254('0x45')]=_0x43ac57[_0x2254('0x45')]['length']?_0x43ac57[_0x2254('0x45')]:_0x19714a[_0x2254('0x54')];_0x43ac57[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0x7540ac[_0x2254('0x43')]['sort']);_0x43ac57[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x7540ac['query'],_0x19714a['filters']));if(_0x7540ac[_0x2254('0x43')][_0x2254('0x32')]){_0x43ac57[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x43ac57[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x43ac57[_0x2254('0x45')],function(_0x5dfb12){var _0x454fcd={};_0x454fcd[_0x5dfb12]={'$like':'%'+_0x7540ac[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x454fcd;})});}_0x43ac57=_['merge']({},_0x43ac57,_0x7540ac[_0x2254('0x59')]);return _0x2bd20d['getSmsAccounts'](_0x43ac57);}})[_0x2254('0x15')](function(_0x3712ca){if(_0x3712ca){_0x24ee7e=_0x3712ca[_0x2254('0x49')];if(!_0x7540ac[_0x2254('0x43')]['hasOwnProperty']('nolimit')){_0x43ac57['limit']=qs['limit'](_0x7540ac[_0x2254('0x43')][_0x2254('0x23')]);_0x43ac57[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x7540ac[_0x2254('0x43')][_0x2254('0x21')]);}return _0x2bd20d['getSmsAccounts'](_0x43ac57);}})['then'](function(_0x5b82b2){if(_0x5b82b2){return _0x5b82b2?{'count':_0x24ee7e,'rows':_0x5b82b2}:null;}})['then'](respondWithResult(_0x2bc5b3,null))[_0x2254('0x1f')](handleError(_0x2bc5b3,null));};exports[_0x2254('0x14f')]=function(_0xf4ffc9,_0x2a27f8){return db[_0x2254('0x42')]['find']({'where':{'id':_0xf4ffc9[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2a27f8,null))['then'](function(_0x4ef685){if(_0x4ef685){return _0x4ef685[_0x2254('0x14f')](_0xf4ffc9[_0x2254('0x5a')][_0x2254('0x5d')],_[_0x2254('0x129')](_0xf4ffc9[_0x2254('0x5a')],[_0x2254('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x2a27f8,null))[_0x2254('0x1f')](handleError(_0x2a27f8,null));};exports['removeSmsAccounts']=function(_0x22defb,_0x17650){return db[_0x2254('0x42')]['find']({'where':{'id':_0x22defb['params']['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x17650,null))[_0x2254('0x15')](function(_0x38a9a9){if(_0x38a9a9){return _0x38a9a9['removeSmsAccounts'](_0x22defb[_0x2254('0x43')][_0x2254('0x5d')]);}})[_0x2254('0x15')](respondWithStatusCode(_0x17650,null))[_0x2254('0x1f')](handleError(_0x17650,null));};exports[_0x2254('0x150')]=function(_0xa1a4e2,_0x4bc731){var _0x223175={};var _0x35ce29={};var _0x5d2c73;var _0x5b76f8;return db['User'][_0x2254('0xc4')]({'where':{'id':_0xa1a4e2[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x4bc731,null))[_0x2254('0x15')](function(_0x35da8d){if(_0x35da8d){_0x5d2c73=_0x35da8d;_0x35ce29[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0x151')][_0x2254('0x3d')]);_0x35ce29[_0x2254('0x43')]=_['keys'](_0xa1a4e2[_0x2254('0x43')]);_0x35ce29['filters']=_[_0x2254('0x57')](_0x35ce29[_0x2254('0x54')],_0x35ce29[_0x2254('0x43')]);_0x223175[_0x2254('0x45')]=_[_0x2254('0x57')](_0x35ce29[_0x2254('0x54')],qs[_0x2254('0x58')](_0xa1a4e2[_0x2254('0x43')][_0x2254('0x58')]));_0x223175[_0x2254('0x45')]=_0x223175['attributes'][_0x2254('0x49')]?_0x223175[_0x2254('0x45')]:_0x35ce29[_0x2254('0x54')];_0x223175[_0x2254('0xc6')]=qs[_0x2254('0xc7')](_0xa1a4e2[_0x2254('0x43')]['sort']);_0x223175[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0xa1a4e2[_0x2254('0x43')],_0x35ce29[_0x2254('0x56')]));if(_0xa1a4e2[_0x2254('0x43')]['filter']){_0x223175[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x223175[_0x2254('0xc8')],{'$or':_['map'](_0x223175[_0x2254('0x45')],function(_0x19c1bb){var _0x161b93={};_0x161b93[_0x19c1bb]={'$like':'%'+_0xa1a4e2[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x161b93;})});}_0x223175=_[_0x2254('0xca')]({},_0x223175,_0xa1a4e2[_0x2254('0x59')]);return _0x5d2c73['getChatWebsites'](_0x223175);}})[_0x2254('0x15')](function(_0x26121b){if(_0x26121b){_0x5b76f8=_0x26121b[_0x2254('0x49')];if(!_0xa1a4e2[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x223175[_0x2254('0x23')]=qs['limit'](_0xa1a4e2[_0x2254('0x43')][_0x2254('0x23')]);_0x223175['offset']=qs[_0x2254('0x21')](_0xa1a4e2[_0x2254('0x43')]['offset']);}return _0x5d2c73['getChatWebsites'](_0x223175);}})[_0x2254('0x15')](function(_0x4a4ad6){if(_0x4a4ad6){return _0x4a4ad6?{'count':_0x5b76f8,'rows':_0x4a4ad6}:null;}})[_0x2254('0x15')](respondWithResult(_0x4bc731,null))[_0x2254('0x1f')](handleError(_0x4bc731,null));};exports[_0x2254('0x152')]=function(_0x578442,_0x534ed3){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x578442[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x534ed3,null))['then'](function(_0xff19cc){if(_0xff19cc){return _0xff19cc[_0x2254('0x152')](_0x578442[_0x2254('0x5a')][_0x2254('0x5d')],_[_0x2254('0x129')](_0x578442[_0x2254('0x5a')],[_0x2254('0x5d'),'id'])||{});}})[_0x2254('0x15')](respondWithResult(_0x534ed3,null))[_0x2254('0x1f')](handleError(_0x534ed3,null));};exports[_0x2254('0x153')]=function(_0xf51d9b,_0x2b31f8){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0xf51d9b[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2b31f8,null))[_0x2254('0x15')](function(_0x4ade27){if(_0x4ade27){return _0x4ade27[_0x2254('0x153')](_0xf51d9b[_0x2254('0x43')][_0x2254('0x5d')]);}})[_0x2254('0x15')](respondWithStatusCode(_0x2b31f8,null))[_0x2254('0x1f')](handleError(_0x2b31f8,null));};exports['getWhatsappAccounts']=function(_0x12d3a4,_0x2121fe){var _0x2e9302={};var _0x11909d={};var _0x55d47f;var _0x8629c4;return db[_0x2254('0x42')]['findOne']({'where':{'id':_0x12d3a4[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x2121fe,null))['then'](function(_0x2f323f){if(_0x2f323f){_0x55d47f=_0x2f323f;_0x11909d['model']=_[_0x2254('0x55')](db['WhatsappAccount'][_0x2254('0x3d')]);_0x11909d[_0x2254('0x43')]=_[_0x2254('0x55')](_0x12d3a4[_0x2254('0x43')]);_0x11909d[_0x2254('0x56')]=_['intersection'](_0x11909d['model'],_0x11909d[_0x2254('0x43')]);_0x2e9302[_0x2254('0x45')]=_['intersection'](_0x11909d[_0x2254('0x54')],qs[_0x2254('0x58')](_0x12d3a4[_0x2254('0x43')][_0x2254('0x58')]));_0x2e9302[_0x2254('0x45')]=_0x2e9302[_0x2254('0x45')][_0x2254('0x49')]?_0x2e9302['attributes']:_0x11909d[_0x2254('0x54')];_0x2e9302['order']=qs[_0x2254('0xc7')](_0x12d3a4[_0x2254('0x43')][_0x2254('0xc7')]);_0x2e9302[_0x2254('0xc8')]=qs['filters'](_[_0x2254('0xc9')](_0x12d3a4[_0x2254('0x43')],_0x11909d[_0x2254('0x56')]));if(_0x12d3a4[_0x2254('0x43')]['filter']){_0x2e9302[_0x2254('0xc8')]=_[_0x2254('0xca')](_0x2e9302[_0x2254('0xc8')],{'$or':_['map'](_0x2e9302['attributes'],function(_0x20bde1){var _0x5df989={};_0x5df989[_0x20bde1]={'$like':'%'+_0x12d3a4[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x5df989;})});}_0x2e9302=_[_0x2254('0xca')]({},_0x2e9302,_0x12d3a4[_0x2254('0x59')]);return _0x55d47f[_0x2254('0x154')](_0x2e9302);}})['then'](function(_0x2fdcd5){if(_0x2fdcd5){_0x8629c4=_0x2fdcd5['length'];if(!_0x12d3a4[_0x2254('0x43')][_0x2254('0xcb')]('nolimit')){_0x2e9302[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x12d3a4[_0x2254('0x43')]['limit']);_0x2e9302[_0x2254('0x21')]=qs['offset'](_0x12d3a4['query'][_0x2254('0x21')]);}return _0x55d47f[_0x2254('0x154')](_0x2e9302);}})[_0x2254('0x15')](function(_0x5c2187){if(_0x5c2187){return _0x5c2187?{'count':_0x8629c4,'rows':_0x5c2187}:null;}})[_0x2254('0x15')](respondWithResult(_0x2121fe,null))[_0x2254('0x1f')](handleError(_0x2121fe,null));};exports[_0x2254('0x155')]=function(_0x5e145a,_0x3b36b4){return db['User']['find']({'where':{'id':_0x5e145a['params']['id']}})['then'](handleEntityNotFound(_0x3b36b4,null))['then'](function(_0xc3ec3b){if(_0xc3ec3b){return _0xc3ec3b[_0x2254('0x155')](_0x5e145a['body'][_0x2254('0x5d')],_[_0x2254('0x129')](_0x5e145a[_0x2254('0x5a')],['ids','id'])||{});}})['then'](respondWithResult(_0x3b36b4,null))['catch'](handleError(_0x3b36b4,null));};exports[_0x2254('0x156')]=function(_0x517b8f,_0x16c50b){return db['User'][_0x2254('0x37')]({'where':{'id':_0x517b8f['params']['id']}})['then'](handleEntityNotFound(_0x16c50b,null))['then'](function(_0x13ea10){if(_0x13ea10){return _0x13ea10['removeWhatsappAccounts'](_0x517b8f[_0x2254('0x43')][_0x2254('0x5d')]);}})['then'](respondWithStatusCode(_0x16c50b,null))[_0x2254('0x1f')](handleError(_0x16c50b,null));};exports['getSquareProjects']=function(_0x4ed649,_0xaec9af){var _0x48cf29={};var _0x12170e={};var _0x39611a;var _0x408851;return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x4ed649[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0xaec9af,null))[_0x2254('0x15')](function(_0x427fcc){if(_0x427fcc){_0x39611a=_0x427fcc;_0x12170e[_0x2254('0x54')]=_[_0x2254('0x55')](db[_0x2254('0x157')][_0x2254('0x3d')]);_0x12170e[_0x2254('0x43')]=_['keys'](_0x4ed649[_0x2254('0x43')]);_0x12170e['filters']=_[_0x2254('0x57')](_0x12170e[_0x2254('0x54')],_0x12170e['query']);_0x48cf29[_0x2254('0x45')]=_['intersection'](_0x12170e[_0x2254('0x54')],qs[_0x2254('0x58')](_0x4ed649[_0x2254('0x43')]['fields']));_0x48cf29[_0x2254('0x45')]=_0x48cf29[_0x2254('0x45')][_0x2254('0x49')]?_0x48cf29[_0x2254('0x45')]:_0x12170e[_0x2254('0x54')];_0x48cf29['order']=qs[_0x2254('0xc7')](_0x4ed649[_0x2254('0x43')]['sort']);_0x48cf29['where']=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x4ed649[_0x2254('0x43')],_0x12170e[_0x2254('0x56')]));if(_0x4ed649[_0x2254('0x43')][_0x2254('0x32')]){_0x48cf29['where']=_['merge'](_0x48cf29[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x48cf29[_0x2254('0x45')],function(_0x346729){var _0x344c48={};_0x344c48[_0x346729]={'$like':'%'+_0x4ed649[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x344c48;})});}_0x48cf29=_[_0x2254('0xca')]({},_0x48cf29,_0x4ed649[_0x2254('0x59')]);return _0x39611a['getSquareProjects'](_0x48cf29);}})['then'](function(_0x16e66a){if(_0x16e66a){_0x408851=_0x16e66a[_0x2254('0x49')];if(!_0x4ed649[_0x2254('0x43')][_0x2254('0xcb')]('nolimit')){_0x48cf29['limit']=qs[_0x2254('0x23')](_0x4ed649[_0x2254('0x43')][_0x2254('0x23')]);_0x48cf29['offset']=qs[_0x2254('0x21')](_0x4ed649['query'][_0x2254('0x21')]);}return _0x39611a[_0x2254('0x158')](_0x48cf29);}})[_0x2254('0x15')](function(_0x176c0d){if(_0x176c0d){return _0x176c0d?{'count':_0x408851,'rows':_0x176c0d}:null;}})[_0x2254('0x15')](respondWithResult(_0xaec9af,null))['catch'](handleError(_0xaec9af,null));};exports[_0x2254('0x159')]=function(_0x19b48f,_0x192db0){return db[_0x2254('0x42')]['find']({'where':{'id':_0x19b48f[_0x2254('0x53')]['id']}})['then'](handleEntityNotFound(_0x192db0,null))[_0x2254('0x15')](function(_0x20e9d3){if(_0x20e9d3){return _0x20e9d3[_0x2254('0x159')](_0x19b48f[_0x2254('0x5a')][_0x2254('0x5d')],_[_0x2254('0x129')](_0x19b48f['body'],[_0x2254('0x5d'),'id'])||{});}})[_0x2254('0x15')](respondWithResult(_0x192db0,null))['catch'](handleError(_0x192db0,null));};exports[_0x2254('0x15a')]=function(_0x3e6c8e,_0xce4b10){return db['User'][_0x2254('0x37')]({'where':{'id':_0x3e6c8e[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0xce4b10,null))[_0x2254('0x15')](function(_0x45c61a){if(_0x45c61a){return _0x45c61a['removeSquareProjects'](_0x3e6c8e[_0x2254('0x43')]['ids']);}})[_0x2254('0x15')](respondWithStatusCode(_0xce4b10,null))[_0x2254('0x1f')](handleError(_0xce4b10,null));};exports[_0x2254('0x15b')]=function(_0x106aff,_0x3001c6){var _0x373b10={},_0x3c1970={},_0x23c03f={'count':0x0,'rows':[]};var _0xd40c4d=db['CmHopper'][_0x2254('0x3d')];_0x3c1970['model']=_[_0x2254('0x55')](_0xd40c4d);_0x3c1970[_0x2254('0x43')]=_['keys'](_0x106aff[_0x2254('0x43')]);_0x3c1970[_0x2254('0x56')]=_['intersection'](_0x3c1970[_0x2254('0x54')],_0x3c1970[_0x2254('0x43')]);_0x3c1970[_0x2254('0x56')]=_[_0x2254('0x15c')](_0x3c1970['filters'],[_0x2254('0x15d'),'$or','$gt',_0x2254('0x15e'),_0x2254('0x15f'),_0x2254('0x160'),_0x2254('0x161'),_0x2254('0x162'),_0x2254('0x163'),_0x2254('0x164'),_0x2254('0x165'),'$in',_0x2254('0x166'),_0x2254('0x167'),_0x2254('0x168'),_0x2254('0x169'),_0x2254('0x16a'),_0x2254('0x167'),_0x2254('0x16b'),_0x2254('0x16c'),_0x2254('0x16d'),'$any']);_0x373b10['attributes']=_['intersection'](_0x3c1970[_0x2254('0x54')],qs[_0x2254('0x58')](_0x106aff[_0x2254('0x43')][_0x2254('0x58')]));_0x373b10[_0x2254('0x45')]=_0x373b10[_0x2254('0x45')][_0x2254('0x49')]?_0x373b10[_0x2254('0x45')]:_0x3c1970['model'];if(!_0x106aff[_0x2254('0x43')][_0x2254('0xcb')](_0x2254('0xd2'))){_0x373b10[_0x2254('0x23')]=qs[_0x2254('0x23')](_0x106aff[_0x2254('0x43')][_0x2254('0x23')]);_0x373b10[_0x2254('0x21')]=qs[_0x2254('0x21')](_0x106aff[_0x2254('0x43')][_0x2254('0x21')]);}_0x373b10['order']=qs[_0x2254('0xc7')](_0x106aff['query'][_0x2254('0xc7')]);_0x373b10[_0x2254('0xc8')]=qs[_0x2254('0x56')](_[_0x2254('0xc9')](_0x106aff['query'],_0x3c1970['filters']));if(_0x106aff[_0x2254('0x43')][_0x2254('0x32')]){_0x373b10['where']=_[_0x2254('0xca')](_0x373b10[_0x2254('0xc8')],{'$or':_[_0x2254('0x34')](_0x373b10[_0x2254('0x45')],function(_0x13bd12){var _0x271558={};_0x271558[_0x13bd12]={'$like':'%'+_0x106aff[_0x2254('0x43')][_0x2254('0x32')]+'%'};return _0x271558;})});}_0x373b10[_0x2254('0xc8')]={'$and':[_0x373b10[_0x2254('0xc8')],{'$or':[{'UserId':_0x106aff[_0x2254('0x53')]['id']},{'OwnerId':_0x106aff[_0x2254('0x53')]['id']}]}]};_0x373b10=_[_0x2254('0xca')]({},_0x373b10,_0x106aff['options']);var _0x40a73d={'where':_0x373b10['where']};return db[_0x2254('0x16e')][_0x2254('0x24')](_0x40a73d)['then'](function(_0x1d3041){_0x23c03f[_0x2254('0x24')]=_0x1d3041;if(_0x106aff[_0x2254('0x43')][_0x2254('0x44')]){_0x373b10[_0x2254('0xcc')]=[{'attributes':['id','firstName',_0x2254('0x16f'),'phone'],'model':db[_0x2254('0xc5')],'as':_0x2254('0x170')},{'attributes':['id',_0x2254('0x38'),_0x2254('0x171')],'model':db['VoiceQueue'],'as':'Queue'}];}return db[_0x2254('0x16e')][_0x2254('0x82')](_0x373b10);})[_0x2254('0x15')](function(_0x3ef4eb){_0x23c03f[_0x2254('0x47')]=_0x3ef4eb;return _0x23c03f;})[_0x2254('0x15')](respondWithFilteredResult(_0x3001c6,_0x373b10))[_0x2254('0x1f')](handleError(_0x3001c6,null));};exports[_0x2254('0x172')]=function(_0x332b95,_0x1c7f03){if(!_[_0x2254('0x60')](_0x332b95['user']['id'])&&(_0x332b95[_0x2254('0x2e')][_0x2254('0x2b')]==_0x2254('0x2c')||_0x332b95['user']['role']==_0x2254('0x2e'))){return db[_0x2254('0x42')][_0x2254('0xc4')]({'where':{'id':_0x332b95['params']['id']},'raw':!![]})[_0x2254('0x15')](function(_0x40318a){return authService[_0x2254('0x173')](_0x40318a);})[_0x2254('0x15')](function(_0x263d69){if(_0x263d69){return _0x1c7f03[_0x2254('0x25')](0xc8)[_0x2254('0x27')]({'api_key':_0x263d69[_0x2254('0x174')]});}else{return _0x1c7f03['status'](0xcc)[_0x2254('0x27')]({'message':_0x2254('0x175')});}})[_0x2254('0x1f')](handleError(_0x1c7f03,0x193));}else{return _0x1c7f03['status'](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['createApiKey']=function(_0x1dc559,_0x509edc){if(!_[_0x2254('0x60')](_0x1dc559['user']['id'])&&(_0x1dc559['user'][_0x2254('0x2b')]==_0x2254('0x2c')||_0x1dc559[_0x2254('0x2e')][_0x2254('0x2b')]==_0x2254('0x2e'))){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x1dc559[_0x2254('0x53')]['id']}})[_0x2254('0x15')](function(_0x3f0add){return authService['generateApiKey'](_0x3f0add);})[_0x2254('0x15')](function(_0xf8e397){return db[_0x2254('0x42')]['update']({'apiKeyIat':_0xf8e397[_0x2254('0x176')],'apiKeyNonce':_0xf8e397[_0x2254('0x177')]},{'where':{'id':_0x1dc559[_0x2254('0x53')]['id']}})['then'](function(){return _0x509edc[_0x2254('0x25')](0xc8)[_0x2254('0x27')]({'api_key':_0xf8e397[_0x2254('0x174')]});});})[_0x2254('0x1f')](handleError(_0x509edc,0x193));}else{return _0x509edc[_0x2254('0x25')](0x191)[_0x2254('0x27')]({'message':_0x2254('0x178')});}};exports['removeApiKey']=function(_0x30702e,_0x4b1e0b){if(!_['isNil'](_0x30702e[_0x2254('0x2e')]['id'])&&(_0x30702e['user'][_0x2254('0x2b')]==_0x2254('0x2c')||_0x30702e[_0x2254('0x2e')][_0x2254('0x2b')]=='user')){return db[_0x2254('0x42')][_0x2254('0x37')]({'where':{'id':_0x30702e[_0x2254('0x53')]['id']}})[_0x2254('0x15')](handleEntityNotFound(_0x4b1e0b,null))[_0x2254('0x15')](function(_0x2c785d){if(_0x2c785d&&_0x2c785d['apiKeyNonce']&&_0x2c785d[_0x2254('0x179')])return _0x2c785d;else throw{'message':'API\x20key\x20not\x20available'};})[_0x2254('0x15')](function(_0x44814a){return db[_0x2254('0x42')][_0x2254('0x28')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x30702e[_0x2254('0x53')]['id']}});})['then'](respondWithStatusCode(_0x4b1e0b,0xc8))[_0x2254('0x1f')](handleError(_0x4b1e0b,0x193));}else{return _0x4b1e0b['status'](0x191)[_0x2254('0x27')]({'message':_0x2254('0x178')});}};exports[_0x2254('0x17a')]=function(_0x3d940b,_0x75ab44){var _0x494e48=_0x3d940b[_0x2254('0x2e')][_0x2254('0x2a')]({'plain':!![]});if(!_0x494e48){return _0x75ab44[_0x2254('0x25')](0x191)['send']('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x75ab44[_0x2254('0x25')](0xc8)[_0x2254('0x27')](_0x494e48);}};exports[_0x2254('0x17b')]=function(_0x4a1bc1,_0x5df442){var _0x4ae4c2={'offset':0x0},_0x227746={'count':0x0,'rows':[]};Promise[_0x2254('0xfc')]()[_0x2254('0x15')](function(){if(!_0x4a1bc1[_0x2254('0x43')][_0x2254('0x32')]&&!_0x4a1bc1[_0x2254('0x43')][_0x2254('0x17c')]&&!_0x4a1bc1[_0x2254('0x43')][_0x2254('0x17d')])return[];return Promise[_0x2254('0xfc')]()[_0x2254('0x15')](function(){var _0x548b8a=[];if(!_[_0x2254('0x83')](_0x4a1bc1[_0x2254('0x43')][_0x2254('0x17c')])){_0x548b8a[_0x2254('0x46')](db['Team'][_0x2254('0x82')]({'attributes':['id',_0x2254('0x38')],'where':{'id':_0x4a1bc1[_0x2254('0x43')]['teams']}}));}if(!_['isEmpty'](_0x4a1bc1['query'][_0x2254('0x17d')])){_0x548b8a[_0x2254('0x46')](db[_0x2254('0xa5')][_0x2254('0x82')]({'attributes':['id',_0x2254('0x38')],'type':_0x2254('0x17e'),'where':{'id':_0x4a1bc1[_0x2254('0x43')][_0x2254('0x17d')]}}));}return Promise['all'](_0x548b8a);})['then'](function(_0x505cb3){var _0x1156e3=_[_0x2254('0x11a')](_0x505cb3)[_0x2254('0x34')](function(_0x54a97f){return _0x54a97f[_0x2254('0x126')]({'attributes':['id',_0x2254('0x38'),_0x2254('0x5e'),_0x2254('0x98')],'raw':!![]});});return Promise['all'](_0x1156e3);})[_0x2254('0x15')](function(_0x297f52){var _0x1618de=_[_0x2254('0x11a')](_0x297f52);if(!_0x4a1bc1[_0x2254('0x43')][_0x2254('0x32')])return _0x1618de;if(_[_0x2254('0x83')](_0x1618de)){return db[_0x2254('0x42')][_0x2254('0x82')]({'attributes':['id',_0x2254('0x38'),_0x2254('0x5e'),_0x2254('0x98')],'where':{'role':_0x2254('0x75'),'$or':[db[_0x2254('0x63')][_0x2254('0xc8')](db[_0x2254('0x63')]['fn'](_0x2254('0x17f'),db[_0x2254('0x63')]['col'](_0x2254('0x38'))),{'$like':'%'+_0x4a1bc1[_0x2254('0x43')][_0x2254('0x32')][_0x2254('0xa0')]()+'%'}),{'internal':{'$like':'%'+_0x4a1bc1[_0x2254('0x43')][_0x2254('0x32')]+'%'}}]},'raw':!![]});}else{return _(_0x1618de)['flatten']()['filter'](function(_0x23d1de){return _0x23d1de[_0x2254('0x38')][_0x2254('0xa0')]()[_0x2254('0x36')](_0x4a1bc1[_0x2254('0x43')][_0x2254('0x32')][_0x2254('0xa0')]())||_0x23d1de['internal'][_0x2254('0x180')]()[_0x2254('0x36')](_0x4a1bc1[_0x2254('0x43')][_0x2254('0x32')]);})[_0x2254('0x35')]();}})[_0x2254('0x15')](function(_0x579568){var _0x486bb5=_0x2254('0x38');var _0x40af4b=_0x2254('0x181');if(_0x4a1bc1[_0x2254('0x43')][_0x2254('0xc7')]){var _0x40af4b=_0x4a1bc1[_0x2254('0x43')][_0x2254('0xc7')][0x0]==='-'?_0x2254('0x182'):_0x2254('0x181');var _0x486bb5=_0x40af4b===_0x2254('0x181')?_0x4a1bc1[_0x2254('0x43')]['sort']:_0x4a1bc1[_0x2254('0x43')]['sort']['substring'](0x1);}return _(_0x579568)[_0x2254('0x183')]('id')[_0x2254('0x184')]([function(_0x3de0ba){return _0x486bb5===_0x2254('0x38')?_0x3de0ba[_0x486bb5][_0x2254('0xa0')]():_0x3de0ba[_0x486bb5];}],[_0x40af4b])[_0x2254('0x34')](function(_0x5747f3){return _['pick'](_0x5747f3,['id',_0x2254('0x38'),_0x2254('0x5e'),_0x2254('0x98')]);})['value']();})['then'](function(_0xdec56f){return client[_0x2254('0x14')]('Agents',_0x4a1bc1)[_0x2254('0x15')](function(_0x569942){if(_0x569942[_0x2254('0x1a')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x25c6f5=_0x569942[_0x2254('0x1e')];var _0x26ac8e=jayson[_0x2254('0x185')]['http']({'port':0x232c});return _0x26ac8e[_0x2254('0x14')]('Agents',_0x4a1bc1)['then'](function(_0x237b26){if(_0x237b26[_0x2254('0x1a')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x4c130e=_0x237b26[_0x2254('0x1e')];return _[_0x2254('0xca')]({},_0x4c130e,_0x25c6f5);});})[_0x2254('0x15')](function(_0x4e0177){return _[_0x2254('0x34')](_0xdec56f,function(_0x48799c){var _0x20deca=_[_0x2254('0x37')](_0x4e0177[_0x2254('0x47')],['id',_0x48799c['id']]);if(!_0x20deca||!_0x48799c[_0x2254('0x98')]){_0x48799c['status']=_0x2254('0x186');}else if(_0x20deca[_0x2254('0x9a')]){_0x48799c['status']=_0x2254('0xfe');}else{_0x48799c['status']=_[_0x2254('0x36')]([_0x2254('0x187'),_0x2254('0x188'),'unavailable',_0x2254('0x189'),null,undefined],_0x20deca[_0x2254('0x18a')])?'online':_0x2254('0x18b');}return _0x48799c;});});});})['then'](function(_0x53239b){if(!_0x4a1bc1[_0x2254('0x43')]['hasOwnProperty']('nolimit')){_0x4ae4c2[_0x2254('0x23')]=qs['limit'](_0x4a1bc1[_0x2254('0x43')][_0x2254('0x23')]||0xa);_0x4ae4c2['offset']=qs[_0x2254('0x21')](_0x4a1bc1[_0x2254('0x43')][_0x2254('0x21')]);}_0x227746[_0x2254('0x24')]=_0x53239b[_0x2254('0x49')];_0x227746[_0x2254('0x47')]=_0x4ae4c2[_0x2254('0x23')]?_0x53239b[_0x2254('0x18c')](_0x4ae4c2[_0x2254('0x21')],_0x4ae4c2['offset']+_0x4ae4c2[_0x2254('0x23')]):_0x53239b;return _0x227746;})[_0x2254('0x15')](respondWithFilteredResult(_0x5df442,_0x4ae4c2))[_0x2254('0x1f')](handleError(_0x5df442,null));};function get_open_tabs(_0x2479c6,_0x34c28c){var _0x2c469b=_0x2479c6[_0x2254('0x18d')](0x0)[_0x2254('0x18e')]()+_0x2479c6[_0x2254('0x18c')](0x1);var _0x4ad903={'type':db[_0x2254('0x89')]['QueryTypes']['SELECT'],'raw':!![]};return new BPromise(function(_0x17de87,_0x53fef1){var _0x7255e5=squel[_0x2254('0x18f')]()[_0x2254('0x190')](_0x2254('0x191')+_0x2c469b+_0x2254('0x192'),'id')[_0x2254('0x190')]('ui.createdAt')[_0x2254('0x65')]('user_has_'+_0x2479c6+_0x2254('0x193'),'ui')[_0x2254('0xc8')](_0x2254('0x194'),_0x34c28c['id']);return db['sequelize'][_0x2254('0x43')](_0x7255e5['toString'](),_0x4ad903)[_0x2254('0x15')](function(_0x2e608f){_0x34c28c[_0x2c469b+_0x2254('0x195')]=_0x2e608f;_0x17de87(_0x2e608f);})[_0x2254('0x1f')](function(_0x3a4ba4){_0x53fef1(_0x3a4ba4);});});};
\ No newline at end of file
index 2864094..de24bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c1d=['User','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x24d9f6,_0x14955b){var _0x274484=function(_0x24a14f){while(--_0x24a14f){_0x24d9f6['push'](_0x24d9f6['shift']());}};_0x274484(++_0x14955b);}(_0x4c1d,0xd6));var _0xd4c1=function(_0x2186be,_0x216510){_0x2186be=_0x2186be-0x0;var _0x3152f9=_0x4c1d[_0x2186be];return _0x3152f9;};'use strict';var EventEmitter=require(_0xd4c1('0x0'));var User=require(_0xd4c1('0x1'))['db'][_0xd4c1('0x2')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xd4c1('0x3'),'afterDestroy':_0xd4c1('0x4')};function emitEvent(_0x4d1ca0){return function(_0x1a1fce,_0x2f4f82,_0x4d83a0){UserEvents[_0xd4c1('0x5')](_0x4d1ca0+':'+_0x1a1fce['id'],_0x1a1fce);UserEvents['emit'](_0x4d1ca0,_0x1a1fce);_0x4d83a0(null);};}for(var e in events){if(events[_0xd4c1('0x6')](e)){var event=events[e];User[_0xd4c1('0x7')](e,emitEvent(event));}}module[_0xd4c1('0x8')]=UserEvents;
\ No newline at end of file
+var _0xb460=['save','remove','hasOwnProperty','hook','exports','../../mysqldb','User','setMaxListeners'];(function(_0x18d53f,_0x38f325){var _0x26080b=function(_0x38d864){while(--_0x38d864){_0x18d53f['push'](_0x18d53f['shift']());}};_0x26080b(++_0x38f325);}(_0xb460,0xcd));var _0x0b46=function(_0x54b340,_0x7ef0f7){_0x54b340=_0x54b340-0x0;var _0x212e9c=_0xb460[_0x54b340];return _0x212e9c;};'use strict';var EventEmitter=require('events');var User=require(_0x0b46('0x0'))['db'][_0x0b46('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x0b46('0x2')](0x0);var events={'afterCreate':_0x0b46('0x3'),'afterUpdate':'update','afterDestroy':_0x0b46('0x4')};function emitEvent(_0x446337){return function(_0x1cba59,_0x46b3f8,_0x314612){UserEvents['emit'](_0x446337+':'+_0x1cba59['id'],_0x1cba59);UserEvents['emit'](_0x446337,_0x1cba59);_0x314612(null);};}for(var e in events){if(events[_0x0b46('0x5')](e)){var event=events[e];User[_0x0b46('0x6')](e,emitEvent(event));}}module[_0x0b46('0x7')]=UserEvents;
\ No newline at end of file
index 1623eec..4a0c8e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1459=['updatePassword','changed','privacyEnabled','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','bluebird','util','md5','lodash','./user.attributes','google','context','system','length','format','push','Set','CDR(type)=%s','chanspy','merge','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','SIP/%s,%s','options','record','StopMixMonitor','wav','WAV','gsm','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','User','users','utf8','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','updateMd5Password'];(function(_0x28b625,_0x5301a3){var _0x4430a2=function(_0x14138b){while(--_0x14138b){_0x28b625['push'](_0x28b625['shift']());}};_0x4430a2(++_0x5301a3);}(_0x1459,0xfc));var _0x9145=function(_0x585f00,_0x430d86){_0x585f00=_0x585f00-0x0;var _0x585381=_0x1459[_0x585f00];return _0x585381;};'use strict';var BPromise=require(_0x9145('0x0'));var crypto=require('crypto');var util=require(_0x9145('0x1'));var md5=require(_0x9145('0x2'));var _=require(_0x9145('0x3'));var attributes=require(_0x9145('0x4'));var authTypes=[_0x9145('0x5')];var validatePresenceOf=function(_0x93233f){return _0x93233f&&_0x93233f['length'];};var getChanSpyApplications=function(_0xba8d40,_0x59ff24,_0x54f626){var _0x55f47f={'context':_0xba8d40[_0x9145('0x6')]||'from-sip','type':_0x9145('0x7'),'isApp':![],'UserId':_0xba8d40['id']};var _0x35b75a=[];for(var _0x352fbc=0x0,_0x5ec61c=0x1;_0x352fbc<_0x54f626[_0x9145('0x8')];_0x352fbc++,_0x5ec61c=0x1){var _0x34f0ba={'exten':util[_0x9145('0x9')]('%s%s',_0x54f626[_0x352fbc]['prefix'],_0x59ff24),'ChanSpyId':_0x54f626[_0x352fbc]['id']};_0x35b75a[_0x9145('0xa')](_['merge']({'app':_0x9145('0xb'),'appdata':util[_0x9145('0x9')](_0x9145('0xc'),_0x9145('0xd')),'priority':_0x5ec61c++},_0x55f47f,_0x34f0ba));if(_0x54f626[_0x352fbc]['record']){_0x35b75a[_0x9145('0xa')](_[_0x9145('0xe')]({'app':_0x9145('0xf'),'appdata':util[_0x9145('0x9')](_0x9145('0x10'),_0x54f626[_0x352fbc]['recordingFormat']),'priority':_0x5ec61c++},_0x55f47f,_0x34f0ba));}if(_0x54f626[_0x352fbc]['auth']){_0x35b75a['push'](_['merge']({'app':_0x9145('0x11'),'appdata':_0x54f626[_0x352fbc][_0x9145('0x12')],'priority':_0x5ec61c++},_0x55f47f,_0x34f0ba));}_0x35b75a['push'](_['merge']({'app':_0x9145('0x13'),'appdata':util[_0x9145('0x9')](_0x9145('0x14'),_0xba8d40['name'],_0x54f626[_0x352fbc][_0x9145('0x15')]?_0x54f626[_0x352fbc][_0x9145('0x15')]['join'](''):''),'priority':_0x5ec61c++},_0x55f47f,_0x34f0ba));if(_0x54f626[_0x352fbc][_0x9145('0x16')]){_0x35b75a['push'](_[_0x9145('0xe')]({'app':_0x9145('0x17'),'priority':_0x5ec61c++},_0x55f47f,_0x34f0ba));}}return _0x35b75a;};var getUserApplications=function(_0x3d76a1,_0x5b2f79){var _0x455fe6=[_0x9145('0x18'),_0x9145('0x19'),_0x9145('0x1a')];var _0x2b2822={'context':_0x3d76a1[_0x9145('0x6')]||_0x9145('0x1b'),'exten':_0x5b2f79,'type':'system','isApp':![],'UserId':_0x3d76a1['id']};var _0x21bddc=[{'app':_0x9145('0xb'),'appdata':_0x9145('0x1c')}];if(_0x3d76a1[_0x9145('0x1d')]&&_[_0x9145('0x1e')](_0x455fe6,_0x3d76a1['extensionMonitor'])){_0x21bddc[_0x9145('0xa')]({'app':_0x9145('0xb'),'appdata':_0x9145('0x1f')});_0x21bddc[_0x9145('0xa')]({'app':_0x9145('0xb'),'appdata':util[_0x9145('0x9')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x3d76a1[_0x9145('0x1d')])});_0x21bddc[_0x9145('0xa')]({'app':_0x9145('0x20'),'appdata':util[_0x9145('0x9')](_0x9145('0x21'),_0x3d76a1[_0x9145('0x22')])});}else{_0x21bddc[_0x9145('0xa')]({'app':_0x9145('0x20'),'appdata':util[_0x9145('0x9')](_0x9145('0x23'),_0x3d76a1[_0x9145('0x22')])});}_0x21bddc[_0x9145('0xa')]({'app':'Hangup'});for(var _0x3e51da=0x0;_0x3e51da<_0x21bddc['length'];_0x3e51da++){_0x21bddc[_0x3e51da][_0x9145('0x24')]=_0x3e51da+0x1;_0x21bddc[_0x3e51da]=_[_0x9145('0x25')](_0x21bddc[_0x3e51da],_0x2b2822);}return _0x21bddc;};var getChanSpyPromise=function(_0x4e0780,_0x1a4567){return new BPromise(function(_0x528671,_0x1c76c4){return _0x4e0780[_0x9145('0x26')][_0x9145('0x27')]()[_0x9145('0x28')](function(_0x14bc4c){if(_0x14bc4c){var _0x1dcb89=getChanSpyApplications(_0x1a4567,_0x1a4567[_0x9145('0x29')],_0x14bc4c);if(_0x1a4567[_0x9145('0x29')]!=_0x1a4567[_0x9145('0x22')]){_0x1dcb89=_0x1dcb89[_0x9145('0x2a')](getChanSpyApplications(_0x1a4567,_0x1a4567['name'],_0x14bc4c));}return _0x528671(_0x1dcb89);}return _0x528671([]);})[_0x9145('0x2b')](function(_0x3b0591){_0x1c76c4(_0x3b0591);});});};module[_0x9145('0x2c')]=function(_0x564a34,_0x513040){var _0x1ce138=_0x564a34[_0x9145('0x2d')];return _0x564a34['define'](_0x9145('0x2e'),attributes,{'tableName':_0x9145('0x2f'),'charset':_0x9145('0x30'),'collate':_0x9145('0x31'),'hooks':{'beforeCreate':function(_0x24d7b4,_0x1972d3,_0x1c2ac0){var _0x5ded49=typeof _0x24d7b4['userProfileId']===_0x9145('0x32')?BPromise[_0x9145('0x33')](null):_0x1ce138[_0x9145('0x34')][_0x9145('0x35')]({'where':{'id':_0x24d7b4[_0x9145('0x36')]}});_0x5ded49[_0x9145('0x28')](function(_0x1e4133){if(_0x1e4133){_0x24d7b4['privacyEnabled']=_0x1e4133['privacyEnabled'];}})[_0x9145('0x28')](function(){_0x24d7b4[_0x9145('0x37')]();_0x24d7b4[_0x9145('0x38')](_0x1c2ac0);})['catch'](function(_0x1f9311){_0x1c2ac0(_0x1f9311);});},'beforeUpdate':function(_0x4bc7cd,_0x7f6123,_0x44359a){Promise[_0x9145('0x33')]()[_0x9145('0x28')](function(){if(_0x4bc7cd[_0x9145('0x39')](_0x9145('0x36'))===![])return;return _0x1ce138[_0x9145('0x34')][_0x9145('0x35')]({'where':{'id':_0x4bc7cd['userProfileId']}})['then'](function(_0x58615d){if(_0x58615d)_0x4bc7cd[_0x9145('0x3a')]=_0x58615d[_0x9145('0x3a')];return;});})['then'](function(){if(_0x4bc7cd['changed']('password')){_0x4bc7cd['updateMd5Password']();return _0x4bc7cd[_0x9145('0x38')](_0x44359a);}_0x44359a();})['catch'](function(_0x5c1570){_0x44359a(_0x5c1570);});},'afterCreate':function(_0x27009d,_0x597db3,_0x2cf514){var _0x5ed237=getUserApplications(_0x27009d,_0x27009d[_0x9145('0x29')]);if(_0x27009d[_0x9145('0x29')]!=_0x27009d[_0x9145('0x22')]){_0x5ed237=_0x5ed237[_0x9145('0x2a')](getUserApplications(_0x27009d,_0x27009d[_0x9145('0x22')]));}return _0x1ce138[_0x9145('0x3b')][_0x9145('0x3c')](_0x5ed237)[_0x9145('0x28')](function(){if(_0x27009d['chanspy']){return getChanSpyPromise(_0x1ce138,_0x27009d);}})[_0x9145('0x28')](function(_0x38bcfb){if(_0x38bcfb&&_0x38bcfb[_0x9145('0x8')]){return _0x1ce138[_0x9145('0x3b')]['bulkCreate'](_0x38bcfb);}})[_0x9145('0x28')](function(){_0x2cf514();})[_0x9145('0x2b')](function(_0x2b823a){_0x2cf514(_0x2b823a);});},'afterUpdate':function(_0x59a9cf,_0x5e0833,_0x5045da){return BPromise['resolve']()[_0x9145('0x28')](function(){if(_0x59a9cf['changed'](_0x9145('0xd'))||_0x59a9cf['changed'](_0x9145('0x6'))){return _0x1ce138[_0x9145('0x3b')]['destroy']({'where':{'UserId':_0x59a9cf['id'],'type':_0x9145('0x7'),'ChanSpyId':{'$ne':null}}})[_0x9145('0x28')](function(){if(_0x59a9cf['chanspy']){return getChanSpyPromise(_0x1ce138,_0x59a9cf)[_0x9145('0x28')](function(_0x4ec21){if(_0x4ec21&&_0x4ec21[_0x9145('0x8')]){return _0x1ce138[_0x9145('0x3b')]['bulkCreate'](_0x4ec21);}});}});}})['then'](function(){if(_0x59a9cf[_0x9145('0x39')](_0x9145('0x1d'))||_0x59a9cf['changed'](_0x9145('0x6'))){return _0x1ce138[_0x9145('0x3b')][_0x9145('0x3d')]({'where':{'UserId':_0x59a9cf['id'],'type':_0x9145('0x7'),'ChanSpyId':null}})[_0x9145('0x28')](function(){var _0x41df3b=getUserApplications(_0x59a9cf,_0x59a9cf[_0x9145('0x29')]);if(_0x59a9cf[_0x9145('0x29')]!=_0x59a9cf[_0x9145('0x22')]){_0x41df3b=_0x41df3b[_0x9145('0x2a')](getUserApplications(_0x59a9cf,_0x59a9cf[_0x9145('0x22')]));}return _0x1ce138[_0x9145('0x3b')]['bulkCreate'](_0x41df3b);});}})[_0x9145('0x28')](function(){_0x5045da();})[_0x9145('0x2b')](function(_0x139727){_0x5045da(_0x139727);});},'afterDestroy':function(_0x1bbd1a,_0xb24eb2){return _0x1ce138[_0x9145('0x3b')][_0x9145('0x3d')]({'where':{'UserId':_0x1bbd1a['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x385bd7,_0x4bfd14){if(!_0x4bfd14){return this[_0x9145('0x12')]===this[_0x9145('0x3e')](_0x385bd7);}var _0x52337b=this;this[_0x9145('0x3e')](_0x385bd7,function(_0x4b9846,_0x5740e2){if(_0x4b9846){_0x4bfd14(_0x4b9846);}if(_0x52337b[_0x9145('0x12')]===_0x5740e2){_0x4bfd14(null,!![]);}else{_0x4bfd14(null,![]);}});},'makeSalt':function(_0x2b1b74,_0x1d6b75){var _0x2f6729=0x10;if(typeof arguments[0x0]===_0x9145('0x3f')){_0x1d6b75=arguments[0x0];_0x2b1b74=_0x2f6729;}else if(typeof arguments[0x1]===_0x9145('0x3f')){_0x1d6b75=arguments[0x1];}else{throw new Error(_0x9145('0x40'));}if(!_0x2b1b74){_0x2b1b74=_0x2f6729;}return crypto['randomBytes'](_0x2b1b74,function(_0x548f6a,_0x2435bb){if(_0x548f6a){_0x1d6b75(_0x548f6a);}return _0x1d6b75(null,_0x2435bb[_0x9145('0x41')](_0x9145('0x42')));});},'encryptPassword':function(_0x288df6,_0x1b4a39){if(!_0x288df6||!this[_0x9145('0x43')]){return _0x1b4a39?_0x1b4a39(null):null;}var _0x1fcff4=0x2710;var _0x3f1d28=0x40;var _0x1b29d0=new Buffer(this[_0x9145('0x43')],'base64');if(!_0x1b4a39){return crypto[_0x9145('0x44')](_0x288df6,_0x1b29d0,_0x1fcff4,_0x3f1d28,_0x9145('0x45'))[_0x9145('0x41')](_0x9145('0x42'));}return crypto[_0x9145('0x46')](_0x288df6,_0x1b29d0,_0x1fcff4,_0x3f1d28,_0x9145('0x45'),function(_0x3c35cb,_0x54bb8e){if(_0x3c35cb){_0x1b4a39(_0x3c35cb);}return _0x1b4a39(null,_0x54bb8e[_0x9145('0x41')](_0x9145('0x42')));});},'updatePassword':function(_0xdde1dc){if(!this[_0x9145('0x12')]){return _0xdde1dc(null);}if(!validatePresenceOf(this[_0x9145('0x12')])&&authTypes[_0x9145('0x47')](this[_0x9145('0x48')])===-0x1){_0xdde1dc(new Error(_0x9145('0x49')));}var _0x505295=this;this[_0x9145('0x4a')](function(_0x1e29b2,_0x2c1b97){if(_0x1e29b2){return _0xdde1dc(_0x1e29b2);}_0x505295[_0x9145('0x43')]=_0x2c1b97;_0x505295[_0x9145('0x3e')](_0x505295[_0x9145('0x12')],function(_0x5b3e4d,_0xe70b0d){if(_0x5b3e4d){_0xdde1dc(_0x5b3e4d);}_0x505295[_0x9145('0x12')]=_0xe70b0d;_0xdde1dc(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x9145('0x22')]+_0x9145('0x4b')+this[_0x9145('0x12')]);return this[_0x9145('0x4c')];}}});};
\ No newline at end of file
+var _0xb05f=['VoiceExtension','bulkCreate','chanspy','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','indexOf','provider','makeSalt','md5secret',':asterisk:','crypto','util','lodash','./user.attributes','google','length','context','from-sip','system','format','push','merge','CDR(type)=%s','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','options','join','wav','WAV','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','name','SIP/%s,,tTxX','priority','defaults','internal','concat','catch','models','define','utf8','resolve','UserProfile','userProfileId','then','privacyEnabled','updateMd5Password','updatePassword','find','changed'];(function(_0x2039d2,_0x1fd748){var _0x4214b4=function(_0x2e7199){while(--_0x2e7199){_0x2039d2['push'](_0x2039d2['shift']());}};_0x4214b4(++_0x1fd748);}(_0xb05f,0xde));var _0xfb05=function(_0x5d1136,_0x351363){_0x5d1136=_0x5d1136-0x0;var _0x3f034a=_0xb05f[_0x5d1136];return _0x3f034a;};'use strict';var BPromise=require('bluebird');var crypto=require(_0xfb05('0x0'));var util=require(_0xfb05('0x1'));var md5=require('md5');var _=require(_0xfb05('0x2'));var attributes=require(_0xfb05('0x3'));var authTypes=[_0xfb05('0x4')];var validatePresenceOf=function(_0x3eea72){return _0x3eea72&&_0x3eea72[_0xfb05('0x5')];};var getChanSpyApplications=function(_0x4e9fa8,_0x31051f,_0x13b334){var _0xc8ae0b={'context':_0x4e9fa8[_0xfb05('0x6')]||_0xfb05('0x7'),'type':_0xfb05('0x8'),'isApp':![],'UserId':_0x4e9fa8['id']};var _0x1b385e=[];for(var _0x453f22=0x0,_0x2b9345=0x1;_0x453f22<_0x13b334['length'];_0x453f22++,_0x2b9345=0x1){var _0x1bad1f={'exten':util[_0xfb05('0x9')]('%s%s',_0x13b334[_0x453f22]['prefix'],_0x31051f),'ChanSpyId':_0x13b334[_0x453f22]['id']};_0x1b385e[_0xfb05('0xa')](_[_0xfb05('0xb')]({'app':'Set','appdata':util[_0xfb05('0x9')](_0xfb05('0xc'),'chanspy'),'priority':_0x2b9345++},_0xc8ae0b,_0x1bad1f));if(_0x13b334[_0x453f22]['record']){_0x1b385e[_0xfb05('0xa')](_['merge']({'app':_0xfb05('0xd'),'appdata':util[_0xfb05('0x9')](_0xfb05('0xe'),_0x13b334[_0x453f22][_0xfb05('0xf')]),'priority':_0x2b9345++},_0xc8ae0b,_0x1bad1f));}if(_0x13b334[_0x453f22][_0xfb05('0x10')]){_0x1b385e[_0xfb05('0xa')](_['merge']({'app':_0xfb05('0x11'),'appdata':_0x13b334[_0x453f22][_0xfb05('0x12')],'priority':_0x2b9345++},_0xc8ae0b,_0x1bad1f));}_0x1b385e[_0xfb05('0xa')](_[_0xfb05('0xb')]({'app':'ChanSpy','appdata':util[_0xfb05('0x9')](_0xfb05('0x13'),_0x4e9fa8['name'],_0x13b334[_0x453f22][_0xfb05('0x14')]?_0x13b334[_0x453f22][_0xfb05('0x14')][_0xfb05('0x15')](''):''),'priority':_0x2b9345++},_0xc8ae0b,_0x1bad1f));if(_0x13b334[_0x453f22]['record']){_0x1b385e[_0xfb05('0xa')](_[_0xfb05('0xb')]({'app':'StopMixMonitor','priority':_0x2b9345++},_0xc8ae0b,_0x1bad1f));}}return _0x1b385e;};var getUserApplications=function(_0x25773b,_0x404e86){var _0x304754=[_0xfb05('0x16'),_0xfb05('0x17'),_0xfb05('0x18')];var _0x4de4e1={'context':_0x25773b[_0xfb05('0x6')]||_0xfb05('0x7'),'exten':_0x404e86,'type':_0xfb05('0x8'),'isApp':![],'UserId':_0x25773b['id']};var _0x16af5c=[{'app':_0xfb05('0x19'),'appdata':_0xfb05('0x1a')}];if(_0x25773b[_0xfb05('0x1b')]&&_[_0xfb05('0x1c')](_0x304754,_0x25773b[_0xfb05('0x1b')])){_0x16af5c[_0xfb05('0xa')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x16af5c[_0xfb05('0xa')]({'app':'Set','appdata':util['format'](_0xfb05('0x1d'),_0x25773b[_0xfb05('0x1b')])});_0x16af5c[_0xfb05('0xa')]({'app':_0xfb05('0x1e'),'appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x25773b[_0xfb05('0x1f')])});}else{_0x16af5c[_0xfb05('0xa')]({'app':_0xfb05('0x1e'),'appdata':util[_0xfb05('0x9')](_0xfb05('0x20'),_0x25773b[_0xfb05('0x1f')])});}_0x16af5c[_0xfb05('0xa')]({'app':'Hangup'});for(var _0x36baf6=0x0;_0x36baf6<_0x16af5c[_0xfb05('0x5')];_0x36baf6++){_0x16af5c[_0x36baf6][_0xfb05('0x21')]=_0x36baf6+0x1;_0x16af5c[_0x36baf6]=_[_0xfb05('0x22')](_0x16af5c[_0x36baf6],_0x4de4e1);}return _0x16af5c;};var getChanSpyPromise=function(_0x5ef59c,_0x423ac3){return new BPromise(function(_0x3c2968,_0x25a199){return _0x5ef59c['VoiceChanSpy']['findAll']()['then'](function(_0x53f83f){if(_0x53f83f){var _0x342df2=getChanSpyApplications(_0x423ac3,_0x423ac3[_0xfb05('0x23')],_0x53f83f);if(_0x423ac3[_0xfb05('0x23')]!=_0x423ac3[_0xfb05('0x1f')]){_0x342df2=_0x342df2[_0xfb05('0x24')](getChanSpyApplications(_0x423ac3,_0x423ac3['name'],_0x53f83f));}return _0x3c2968(_0x342df2);}return _0x3c2968([]);})[_0xfb05('0x25')](function(_0x10ae23){_0x25a199(_0x10ae23);});});};module['exports']=function(_0x473433,_0x4efa9e){var _0x211821=_0x473433[_0xfb05('0x26')];return _0x473433[_0xfb05('0x27')]('User',attributes,{'tableName':'users','charset':_0xfb05('0x28'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x57e52e,_0x32f3be,_0x53ee43){var _0x95302=typeof _0x57e52e['userProfileId']==='undefined'?BPromise[_0xfb05('0x29')](null):_0x211821[_0xfb05('0x2a')]['find']({'where':{'id':_0x57e52e[_0xfb05('0x2b')]}});_0x95302[_0xfb05('0x2c')](function(_0x2ed75f){if(_0x2ed75f){_0x57e52e[_0xfb05('0x2d')]=_0x2ed75f[_0xfb05('0x2d')];}})[_0xfb05('0x2c')](function(){_0x57e52e[_0xfb05('0x2e')]();_0x57e52e[_0xfb05('0x2f')](_0x53ee43);})[_0xfb05('0x25')](function(_0x4eaa70){_0x53ee43(_0x4eaa70);});},'beforeUpdate':function(_0x179f7e,_0x39d160,_0x4bd20f){Promise[_0xfb05('0x29')]()[_0xfb05('0x2c')](function(){if(_0x179f7e['changed'](_0xfb05('0x2b'))===![])return;return _0x211821[_0xfb05('0x2a')][_0xfb05('0x30')]({'where':{'id':_0x179f7e[_0xfb05('0x2b')]}})['then'](function(_0xd27eb6){if(_0xd27eb6)_0x179f7e[_0xfb05('0x2d')]=_0xd27eb6[_0xfb05('0x2d')];return;});})[_0xfb05('0x2c')](function(){if(_0x179f7e[_0xfb05('0x31')](_0xfb05('0x12'))){_0x179f7e[_0xfb05('0x2e')]();return _0x179f7e[_0xfb05('0x2f')](_0x4bd20f);}_0x4bd20f();})[_0xfb05('0x25')](function(_0x3ed219){_0x4bd20f(_0x3ed219);});},'afterCreate':function(_0x25f99e,_0x6378ec,_0x46d28b){var _0x41008f=getUserApplications(_0x25f99e,_0x25f99e[_0xfb05('0x23')]);if(_0x25f99e[_0xfb05('0x23')]!=_0x25f99e['name']){_0x41008f=_0x41008f['concat'](getUserApplications(_0x25f99e,_0x25f99e[_0xfb05('0x1f')]));}return _0x211821[_0xfb05('0x32')][_0xfb05('0x33')](_0x41008f)['then'](function(){if(_0x25f99e[_0xfb05('0x34')]){return getChanSpyPromise(_0x211821,_0x25f99e);}})[_0xfb05('0x2c')](function(_0xe07d04){if(_0xe07d04&&_0xe07d04['length']){return _0x211821[_0xfb05('0x32')][_0xfb05('0x33')](_0xe07d04);}})['then'](function(){_0x46d28b();})[_0xfb05('0x25')](function(_0x264c2b){_0x46d28b(_0x264c2b);});},'afterUpdate':function(_0x4a5059,_0x5ee15a,_0x3227b9){return BPromise[_0xfb05('0x29')]()[_0xfb05('0x2c')](function(){if(_0x4a5059[_0xfb05('0x31')](_0xfb05('0x34'))||_0x4a5059['changed'](_0xfb05('0x6'))){return _0x211821[_0xfb05('0x32')][_0xfb05('0x35')]({'where':{'UserId':_0x4a5059['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xfb05('0x2c')](function(){if(_0x4a5059['chanspy']){return getChanSpyPromise(_0x211821,_0x4a5059)[_0xfb05('0x2c')](function(_0x532069){if(_0x532069&&_0x532069[_0xfb05('0x5')]){return _0x211821['VoiceExtension'][_0xfb05('0x33')](_0x532069);}});}});}})[_0xfb05('0x2c')](function(){if(_0x4a5059['changed'](_0xfb05('0x1b'))||_0x4a5059['changed']('context')){return _0x211821[_0xfb05('0x32')][_0xfb05('0x35')]({'where':{'UserId':_0x4a5059['id'],'type':_0xfb05('0x8'),'ChanSpyId':null}})[_0xfb05('0x2c')](function(){var _0xf83157=getUserApplications(_0x4a5059,_0x4a5059[_0xfb05('0x23')]);if(_0x4a5059[_0xfb05('0x23')]!=_0x4a5059[_0xfb05('0x1f')]){_0xf83157=_0xf83157[_0xfb05('0x24')](getUserApplications(_0x4a5059,_0x4a5059[_0xfb05('0x1f')]));}return _0x211821[_0xfb05('0x32')][_0xfb05('0x33')](_0xf83157);});}})['then'](function(){_0x3227b9();})[_0xfb05('0x25')](function(_0x3c9af0){_0x3227b9(_0x3c9af0);});},'afterDestroy':function(_0x43490c,_0x498987){return _0x211821['VoiceExtension']['destroy']({'where':{'UserId':_0x43490c['id'],'type':_0xfb05('0x8')}});}},'instanceMethods':{'authenticate':function(_0x52dd86,_0x4f154d){if(!_0x4f154d){return this[_0xfb05('0x12')]===this[_0xfb05('0x36')](_0x52dd86);}var _0x2ad371=this;this['encryptPassword'](_0x52dd86,function(_0x1ac304,_0x473db0){if(_0x1ac304){_0x4f154d(_0x1ac304);}if(_0x2ad371[_0xfb05('0x12')]===_0x473db0){_0x4f154d(null,!![]);}else{_0x4f154d(null,![]);}});},'makeSalt':function(_0x4d64be,_0x5c7f65){var _0xaecd4=0x10;if(typeof arguments[0x0]==='function'){_0x5c7f65=arguments[0x0];_0x4d64be=_0xaecd4;}else if(typeof arguments[0x1]===_0xfb05('0x37')){_0x5c7f65=arguments[0x1];}else{throw new Error(_0xfb05('0x38'));}if(!_0x4d64be){_0x4d64be=_0xaecd4;}return crypto[_0xfb05('0x39')](_0x4d64be,function(_0x1fa973,_0xda3455){if(_0x1fa973){_0x5c7f65(_0x1fa973);}return _0x5c7f65(null,_0xda3455[_0xfb05('0x3a')](_0xfb05('0x3b')));});},'encryptPassword':function(_0x2cacfe,_0x156b31){if(!_0x2cacfe||!this['salt']){return _0x156b31?_0x156b31(null):null;}var _0x19c78a=0x2710;var _0x4a1065=0x40;var _0x164b22=new Buffer(this[_0xfb05('0x3c')],'base64');if(!_0x156b31){return crypto[_0xfb05('0x3d')](_0x2cacfe,_0x164b22,_0x19c78a,_0x4a1065,'sha1')[_0xfb05('0x3a')](_0xfb05('0x3b'));}return crypto['pbkdf2'](_0x2cacfe,_0x164b22,_0x19c78a,_0x4a1065,_0xfb05('0x3e'),function(_0x4ff31a,_0x8c7340){if(_0x4ff31a){_0x156b31(_0x4ff31a);}return _0x156b31(null,_0x8c7340['toString']('base64'));});},'updatePassword':function(_0x28b658){if(!this[_0xfb05('0x12')]){return _0x28b658(null);}if(!validatePresenceOf(this[_0xfb05('0x12')])&&authTypes[_0xfb05('0x3f')](this[_0xfb05('0x40')])===-0x1){_0x28b658(new Error('Invalid\x20password'));}var _0x48c0bd=this;this[_0xfb05('0x41')](function(_0x3788fc,_0x146534){if(_0x3788fc){return _0x28b658(_0x3788fc);}_0x48c0bd[_0xfb05('0x3c')]=_0x146534;_0x48c0bd[_0xfb05('0x36')](_0x48c0bd[_0xfb05('0x12')],function(_0x1b7622,_0x27fb95){if(_0x1b7622){_0x28b658(_0x1b7622);}_0x48c0bd['password']=_0x27fb95;_0x28b658(null);});});},'updateMd5Password':function(){this[_0xfb05('0x42')]=md5(this[_0xfb05('0x1f')]+_0xfb05('0x43')+this[_0xfb05('0x12')]);return this[_0xfb05('0x42')];}}});};
\ No newline at end of file
index f273a64..42432a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa24=['PauseUser','name','role','internal','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','isNil','SIP/%s','body','type','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','findOne','isValidChannel','channel','Unknown\x20channel','voice','mail','fax','sms','openchannel','whatsapp','system','set','%s%s','Pause','findAll','push','all','LogoutUser','destroy','LoginUser','mobile','phone','count','agent','../../config/license/util','getLicense','agents','getVoiceQueues','upsert','loginInPause','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','./user.socket','register','request','then','info','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','User,\x20%s,\x20%s','request\x20sent','result','GetUser','User','options','raw','attributes','limit','include','map','model','ShowUser','find','where','catch'];(function(_0x145a20,_0x17680e){var _0x153f89=function(_0x581912){while(--_0x581912){_0x145a20['push'](_0x145a20['shift']());}};_0x153f89(++_0x17680e);}(_0xfa24,0x15c));var _0x4fa2=function(_0x52ea08,_0x15d935){_0x52ea08=_0x52ea08-0x0;var _0x28d546=_0xfa24[_0x52ea08];return _0x28d546;};'use strict';var _=require(_0x4fa2('0x0'));var util=require(_0x4fa2('0x1'));var moment=require('moment');var BPromise=require(_0x4fa2('0x2'));var rs=require(_0x4fa2('0x3'));var fs=require('fs');var Redis=require(_0x4fa2('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4fa2('0x5'));var logger=require(_0x4fa2('0x6'))(_0x4fa2('0x7'));var config=require(_0x4fa2('0x8'));var jayson=require(_0x4fa2('0x9'));var client=jayson['client'][_0x4fa2('0xa')]({'port':0x232a});config[_0x4fa2('0xb')]=_[_0x4fa2('0xc')](config[_0x4fa2('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4fa2('0xb')]));require(_0x4fa2('0xd'))[_0x4fa2('0xe')](socket);function respondWithRpcPromise(_0x9e6ced,_0x531214,_0x1d5757){return new BPromise(function(_0x9bc0e8,_0x597582){return client[_0x4fa2('0xf')](_0x9e6ced,_0x1d5757)[_0x4fa2('0x10')](function(_0x2bdfef){logger[_0x4fa2('0x11')]('User,\x20%s,\x20%s',_0x531214,'request\x20sent');logger[_0x4fa2('0x12')](_0x4fa2('0x13'),_0x531214,'request\x20sent',JSON[_0x4fa2('0x14')](_0x2bdfef));if(_0x2bdfef[_0x4fa2('0x15')]){if(_0x2bdfef['error'][_0x4fa2('0x16')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x531214,_0x2bdfef[_0x4fa2('0x15')][_0x4fa2('0x17')]);return _0x597582(_0x2bdfef[_0x4fa2('0x15')]['message']);}logger[_0x4fa2('0x15')](_0x4fa2('0x18'),_0x531214,_0x2bdfef[_0x4fa2('0x15')][_0x4fa2('0x17')]);return _0x9bc0e8(_0x2bdfef[_0x4fa2('0x15')][_0x4fa2('0x17')]);}else{logger[_0x4fa2('0x11')]('User,\x20%s,\x20%s',_0x531214,_0x4fa2('0x19'));_0x9bc0e8(_0x2bdfef[_0x4fa2('0x1a')][_0x4fa2('0x17')]);}})['catch'](function(_0x485087){logger[_0x4fa2('0x15')](_0x4fa2('0x18'),_0x531214,_0x485087);_0x597582(_0x485087);});});}exports[_0x4fa2('0x1b')]=function(_0x10f2d3){var _0x110c6d=this;return new Promise(function(_0x5223c7,_0x37906d){return db[_0x4fa2('0x1c')]['findAll']({'raw':_0x10f2d3[_0x4fa2('0x1d')]?_0x10f2d3[_0x4fa2('0x1d')][_0x4fa2('0x1e')]===undefined?!![]:![]:!![],'where':_0x10f2d3[_0x4fa2('0x1d')]?_0x10f2d3[_0x4fa2('0x1d')]['where']||null:null,'attributes':_0x10f2d3['options']?_0x10f2d3[_0x4fa2('0x1d')][_0x4fa2('0x1f')]||null:null,'limit':_0x10f2d3['options']?_0x10f2d3[_0x4fa2('0x1d')][_0x4fa2('0x20')]||null:null,'include':_0x10f2d3[_0x4fa2('0x1d')]?_0x10f2d3[_0x4fa2('0x1d')][_0x4fa2('0x21')]?_[_0x4fa2('0x22')](_0x10f2d3[_0x4fa2('0x1d')][_0x4fa2('0x21')],function(_0x5782c0){return{'model':db[_0x5782c0[_0x4fa2('0x23')]],'as':_0x5782c0['as'],'attributes':_0x5782c0[_0x4fa2('0x1f')],'include':_0x5782c0[_0x4fa2('0x21')]?_[_0x4fa2('0x22')](_0x5782c0['include'],function(_0x5a7613){return{'model':db[_0x5a7613[_0x4fa2('0x23')]],'as':_0x5a7613['as'],'attributes':_0x5a7613[_0x4fa2('0x1f')],'include':_0x5a7613['include']?_[_0x4fa2('0x22')](_0x5a7613[_0x4fa2('0x21')],function(_0x5b5cdb){return{'model':db[_0x5b5cdb[_0x4fa2('0x23')]],'as':_0x5b5cdb['as'],'attributes':_0x5b5cdb[_0x4fa2('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4fa2('0x10')](function(_0x1ed5e8){logger[_0x4fa2('0x11')](_0x4fa2('0x1b'),_0x10f2d3);logger[_0x4fa2('0x12')](_0x4fa2('0x1b'),_0x10f2d3,JSON[_0x4fa2('0x14')](_0x1ed5e8));_0x5223c7(_0x1ed5e8);})['catch'](function(_0x2e1e79){logger[_0x4fa2('0x15')](_0x4fa2('0x1b'),_0x2e1e79['message'],_0x10f2d3);_0x37906d(_0x110c6d[_0x4fa2('0x15')](0x1f4,_0x2e1e79[_0x4fa2('0x17')]));});});};exports[_0x4fa2('0x24')]=function(_0x1230ed){var _0x6c8b5=this;return new Promise(function(_0x849f18,_0x349f21){return db['User'][_0x4fa2('0x25')]({'raw':_0x1230ed[_0x4fa2('0x1d')]?_0x1230ed[_0x4fa2('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x1230ed[_0x4fa2('0x1d')]?_0x1230ed[_0x4fa2('0x1d')][_0x4fa2('0x26')]||null:null,'attributes':_0x1230ed['options']?_0x1230ed[_0x4fa2('0x1d')][_0x4fa2('0x1f')]||null:null,'include':_0x1230ed[_0x4fa2('0x1d')]?_0x1230ed['options']['include']?_['map'](_0x1230ed['options'][_0x4fa2('0x21')],function(_0x3ed2b1){return{'model':db[_0x3ed2b1[_0x4fa2('0x23')]],'as':_0x3ed2b1['as'],'attributes':_0x3ed2b1['attributes'],'include':_0x3ed2b1['include']?_[_0x4fa2('0x22')](_0x3ed2b1[_0x4fa2('0x21')],function(_0x51bb1b){return{'model':db[_0x51bb1b[_0x4fa2('0x23')]],'as':_0x51bb1b['as'],'attributes':_0x51bb1b[_0x4fa2('0x1f')],'include':_0x51bb1b['include']?_[_0x4fa2('0x22')](_0x51bb1b[_0x4fa2('0x21')],function(_0x5b69e0){return{'model':db[_0x5b69e0[_0x4fa2('0x23')]],'as':_0x5b69e0['as'],'attributes':_0x5b69e0[_0x4fa2('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4fa2('0x10')](function(_0x1918b9){logger[_0x4fa2('0x11')](_0x4fa2('0x24'),_0x1230ed);logger[_0x4fa2('0x12')](_0x4fa2('0x24'),_0x1230ed,JSON['stringify'](_0x1918b9));_0x849f18(_0x1918b9);})[_0x4fa2('0x27')](function(_0x4ae431){logger[_0x4fa2('0x15')](_0x4fa2('0x24'),_0x4ae431[_0x4fa2('0x17')],_0x1230ed);_0x349f21(_0x6c8b5['error'](0x1f4,_0x4ae431['message']));});});};exports[_0x4fa2('0x28')]=function(_0xe8cce1){var _0x257f20=this;return new Promise(function(_0x39d6b0,_0x4897ca){var _0xca17aa;return db[_0x4fa2('0x1c')][_0x4fa2('0x25')]({'where':_0xe8cce1['options'][_0x4fa2('0x26')]||{},'attributes':['id',_0x4fa2('0x29'),_0x4fa2('0x2a'),_0x4fa2('0x2b'),_0x4fa2('0x2c')]})[_0x4fa2('0x10')](function(_0x4a11ca){if(_0x4a11ca){_0xca17aa=_0x4a11ca;return db[_0x4fa2('0x2d')][_0x4fa2('0x2e')]({'paused':0x1},{'where':{'UserId':_0xca17aa['id']},'individualHooks':!![]});}})[_0x4fa2('0x10')](function(){if(_0xca17aa){return db[_0x4fa2('0x2f')]['findAll']({'where':{'membername':_0xca17aa[_0x4fa2('0x29')],'type':_0x4fa2('0x30'),'exitAt':null}});}})[_0x4fa2('0x10')](function(_0x3a9a1f){if(_0xca17aa){if(_0x3a9a1f&&_0x3a9a1f[_0x4fa2('0x31')]){var _0x43e23d=moment()[_0x4fa2('0x32')](_0x4fa2('0x33'));for(var _0x14f3ea=0x0,_0x439840=_0x3a9a1f[_0x4fa2('0x31')];_0x14f3ea<_0x439840;_0x14f3ea++){_0x3a9a1f[_0x14f3ea][_0x4fa2('0x34')]({'exitAt':_0x43e23d});}}}})['then'](function(){if(_0xca17aa){var _0x4b3925=[];var _0x2bacc4=utils['getChannels']();_0x2bacc4[_0x4fa2('0x35')](function(_0x164951){_0x4b3925['push']({'channel':_0x164951,'membername':_0xca17aa[_0x4fa2('0x29')],'interface':_[_0x4fa2('0x36')](_0xca17aa[_0x4fa2('0x2c')])?util[_0x4fa2('0x32')](_0x4fa2('0x37'),_0xca17aa['name']):_0xca17aa[_0x4fa2('0x2c')],'type':_0x4fa2('0x30'),'enterAt':moment()[_0x4fa2('0x32')](_0x4fa2('0x33')),'data1':_0xe8cce1[_0x4fa2('0x38')][_0x4fa2('0x39')]||'DEFAULT\x20PAUSE','role':_0xca17aa[_0x4fa2('0x2a')],'internal':_0xca17aa[_0x4fa2('0x2b')],'uniqueid':_0xe8cce1[_0x4fa2('0x38')][_0x4fa2('0x3a')]||null});});return db[_0x4fa2('0x2f')][_0x4fa2('0x3b')](_0x4b3925,{'individualHooks':!![]});}})[_0x4fa2('0x10')](function(){if(_0xca17aa){return _0xca17aa['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0xe8cce1[_0x4fa2('0x38')][_0x4fa2('0x39')]||_0x4fa2('0x3c'),'lastPauseAt':moment()['format'](_0x4fa2('0x33'))});}})[_0x4fa2('0x10')](function(_0x4d6af5){_0x39d6b0(_0x4d6af5);})[_0x4fa2('0x27')](function(_0xd696a9){_0x4897ca(_0x257f20[_0x4fa2('0x15')](0x1f4,_0xd696a9[_0x4fa2('0x17')]));});});};exports[_0x4fa2('0x3d')]=function(_0x17eb20){var _0x1c5cee=this;return new Promise(function(_0x1b2c92,_0x2758a3){var _0x5cb23a;return db[_0x4fa2('0x1c')][_0x4fa2('0x3e')]({'where':_0x17eb20[_0x4fa2('0x1d')][_0x4fa2('0x26')]||{},'attributes':['id',_0x4fa2('0x29')]})['then'](function(_0x4ed38f){if(_0x4ed38f){_0x5cb23a=_0x4ed38f;if(_0x17eb20[_0x4fa2('0x38')]['channel']&&!utils[_0x4fa2('0x3f')](_0x17eb20[_0x4fa2('0x38')][_0x4fa2('0x40')])){throw new Error(_0x4fa2('0x41'));}switch(_0x17eb20[_0x4fa2('0x38')][_0x4fa2('0x40')]){case _0x4fa2('0x42'):return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x5cb23a['id']}})[_0x4fa2('0x10')](function(){return db[_0x4fa2('0x2f')][_0x4fa2('0x25')]({'where':{'channel':_0x17eb20['body'][_0x4fa2('0x40')],'membername':_0x5cb23a[_0x4fa2('0x29')],'type':_0x4fa2('0x30'),'exitAt':null}});})[_0x4fa2('0x10')](function(_0x4c1f12){if(_0x4c1f12){return _0x4c1f12[_0x4fa2('0x2e')]({'exitAt':moment()[_0x4fa2('0x32')](_0x4fa2('0x33')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0x4fa2('0x10')](function(){return _0x5cb23a[_0x4fa2('0x2e')]({'voicePause':![]});});case _0x4fa2('0x43'):case'chat':case _0x4fa2('0x44'):case _0x4fa2('0x45'):case _0x4fa2('0x46'):case _0x4fa2('0x47'):return db[_0x4fa2('0x2f')][_0x4fa2('0x25')]({'where':{'channel':_0x17eb20['body']['channel'],'membername':_0x5cb23a['name'],'type':_0x4fa2('0x30'),'exitAt':null}})[_0x4fa2('0x10')](function(_0x5df2e6){return _0x5df2e6[_0x4fa2('0x2e')]({'exitAt':moment()[_0x4fa2('0x32')](_0x4fa2('0x33')),'data2':_0x4fa2('0x48')},{'individualHooks':!![]});})[_0x4fa2('0x10')](function(){var _0x115147={};_[_0x4fa2('0x49')](_0x115147,util['format'](_0x4fa2('0x4a'),_0x17eb20['body'][_0x4fa2('0x40')],_0x4fa2('0x4b')),![]);return _0x5cb23a[_0x4fa2('0x2e')](_0x115147);});default:return db[_0x4fa2('0x2d')][_0x4fa2('0x2e')]({'paused':0x0},{'where':{'UserId':_0x5cb23a['id']}})[_0x4fa2('0x10')](function(){return db[_0x4fa2('0x2f')][_0x4fa2('0x4c')]({'where':{'membername':_0x5cb23a[_0x4fa2('0x29')],'type':_0x4fa2('0x30'),'exitAt':null}});})['then'](function(_0x542773){var _0x530b90=[];_0x542773['forEach'](function(_0x18d8dc){_0x530b90[_0x4fa2('0x4d')](_0x18d8dc[_0x4fa2('0x2e')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x4fa2('0x48')}));});return BPromise[_0x4fa2('0x4e')](_0x530b90);})[_0x4fa2('0x10')](function(){return _0x5cb23a['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x34dbb3){_0x1b2c92(_0x34dbb3);})[_0x4fa2('0x27')](function(_0x3646b7){_0x2758a3(_0x1c5cee[_0x4fa2('0x15')](0x1f4,_0x3646b7['message']));});});};exports[_0x4fa2('0x4f')]=function(_0x27f466){var _0x344f0f=this;return new Promise(function(_0xd61b47,_0x57d49c){var _0x5aa216;return db[_0x4fa2('0x1c')]['findOne']({'where':_0x27f466[_0x4fa2('0x1d')]['where']||{},'attributes':['id',_0x4fa2('0x29')]})[_0x4fa2('0x10')](function(_0x210452){if(_0x210452){_0x5aa216=_0x210452;return db['UserVoiceQueueRt'][_0x4fa2('0x50')]({'where':{'membername':_0x5aa216[_0x4fa2('0x29')]},'individualHooks':!![]});}})[_0x4fa2('0x10')](function(){if(_0x5aa216){return db['MemberReport'][_0x4fa2('0x4c')]({'where':{'membername':_0x5aa216[_0x4fa2('0x29')],'exitAt':null}});}})['then'](function(_0xdb34fd){if(_0x5aa216){if(_0xdb34fd&&_0xdb34fd[_0x4fa2('0x31')]){var _0x92d7ac=[];_0xdb34fd[_0x4fa2('0x35')](function(_0x315279){_0x92d7ac[_0x4fa2('0x4d')](_0x315279['update']({'exitAt':moment()[_0x4fa2('0x32')](_0x4fa2('0x33'))}));});return BPromise[_0x4fa2('0x4e')](_0x92d7ac);}}})['then'](function(){if(_0x5aa216){return _0x5aa216[_0x4fa2('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x4fa2('0x10')](function(_0x232723){_0xd61b47(_0x232723);})['catch'](function(_0x461bbb){_0x57d49c(_0x344f0f['error'](0x1f4,_0x461bbb[_0x4fa2('0x17')]));});});};exports[_0x4fa2('0x51')]=function(_0x361875){var _0x46e56c=this;return new Promise(function(_0x1c737e,_0x322b1b){var _0xa972ae;var _0x2e8935;var _0x2db29d;var _0x525a3f;return db[_0x4fa2('0x1c')]['findOne']({'where':_0x361875[_0x4fa2('0x1d')][_0x4fa2('0x26')]||{},'attributes':['id',_0x4fa2('0x29'),_0x4fa2('0x2a'),_0x4fa2('0x52'),_0x4fa2('0x53'),'internal','loginInPause',_0x4fa2('0x2c')]})[_0x4fa2('0x10')](function(_0x2b32c6){if(_0x2b32c6){_0xa972ae=_0x2b32c6;_0x525a3f=_0x361875[_0x4fa2('0x38')][_0x4fa2('0x2c')]?_0x361875[_0x4fa2('0x38')]['interface']:util[_0x4fa2('0x32')](_0x4fa2('0x37'),_0xa972ae['name']);return db[_0x4fa2('0x1c')][_0x4fa2('0x54')]({'where':{'role':_0x4fa2('0x55'),'online':!![],'id':{'$ne':_0xa972ae['id']}}});}})[_0x4fa2('0x10')](function(_0xf11aee){if(_0xf11aee){_0x2db29d=_0xf11aee;return require(_0x4fa2('0x56'))[_0x4fa2('0x57')]();}})['then'](function(_0x10dab0){if(_0x10dab0&&_0x10dab0[_0x4fa2('0x58')]&&_0x2db29d>=_0x10dab0[_0x4fa2('0x58')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x4fa2('0x10')](function(){if(_0xa972ae){return db['UserVoiceQueueRt'][_0x4fa2('0x50')]({'where':{'membername':_0xa972ae[_0x4fa2('0x29')]},'individualHooks':!![]});}})['then'](function(){if(_0xa972ae){return _0xa972ae[_0x4fa2('0x59')]({'raw':!![]});}})[_0x4fa2('0x10')](function(_0x320023){if(_0xa972ae){if(_0x320023){var _0x1a52b3=[];_0x2e8935=_0x320023;if(_0x2e8935['length']){for(var _0x23d527=0x0;_0x23d527<_0x2e8935['length'];_0x23d527++){_0x1a52b3[_0x4fa2('0x4d')](db[_0x4fa2('0x2d')][_0x4fa2('0x5a')]({'membername':_0xa972ae[_0x4fa2('0x29')],'UserId':_0xa972ae['id'],'queue_name':_0x2e8935[_0x23d527][_0x4fa2('0x29')],'VoiceQueueId':_0x2e8935[_0x23d527]['id'],'interface':_0x525a3f,'paused':_0xa972ae[_0x4fa2('0x5b')]||![],'penalty':_0x2e8935[_0x23d527][_0x4fa2('0x5c')]||0x0}));}return BPromise[_0x4fa2('0x4e')](_0x1a52b3);}}}})[_0x4fa2('0x10')](function(){if(_0xa972ae){return db[_0x4fa2('0x2f')]['findAll']({'where':{'membername':_0xa972ae['name'],'exitAt':null}});}})[_0x4fa2('0x10')](function(_0x161ffd){if(_0xa972ae){if(_0x161ffd&&_0x161ffd[_0x4fa2('0x31')]){var _0x55ed21=[];_0x161ffd[_0x4fa2('0x35')](function(_0x13d32c){_0x55ed21[_0x4fa2('0x4d')](_0x13d32c[_0x4fa2('0x2e')]({'exitAt':moment()[_0x4fa2('0x32')](_0x4fa2('0x33'))}));});return BPromise[_0x4fa2('0x4e')](_0x55ed21);}}})[_0x4fa2('0x10')](function(_0x544e1f){if(_0xa972ae){var _0x3aac79=[];var _0x259d50=[];var _0x40c831=utils['getChannels']();var _0x45b824={'membername':_0xa972ae['name'],'interface':_0x525a3f,'enterAt':moment()[_0x4fa2('0x32')](_0x4fa2('0x33')),'role':_0xa972ae[_0x4fa2('0x2a')],'internal':_0xa972ae['internal']};_0x40c831[_0x4fa2('0x35')](function(_0x1901ce){_0x3aac79[_0x4fa2('0x4d')](_[_0x4fa2('0x5d')]({'channel':_0x1901ce,'type':_0x4fa2('0x5e'),'data1':_0x4fa2('0x5f'),'data2':_0x525a3f},_0x45b824));if(_0xa972ae[_0x4fa2('0x5b')]){_0x259d50['push'](_['merge']({'channel':_0x1901ce,'type':_0x4fa2('0x30'),'data1':'LOGININPAUSE'},_0x45b824));}});return db[_0x4fa2('0x2f')][_0x4fa2('0x3b')](_0x3aac79['concat'](_0x259d50),{'individualHooks':!![]});}})['then'](function(){if(_0xa972ae){return _0xa972ae[_0x4fa2('0x2e')]({'online':!![],'lastLoginAt':moment()[_0x4fa2('0x32')](_0x4fa2('0x33')),'voicePause':_0xa972ae[_0x4fa2('0x5b')]||![],'mailPause':_0xa972ae[_0x4fa2('0x5b')]||![],'chatPause':_0xa972ae[_0x4fa2('0x5b')]||![],'faxPause':_0xa972ae[_0x4fa2('0x5b')]||![],'smsPause':_0xa972ae['loginInPause']||![],'openchannelPause':_0xa972ae[_0x4fa2('0x5b')]||![],'pauseType':_0xa972ae[_0x4fa2('0x5b')]?_0x4fa2('0x60'):null,'lastPauseAt':moment()['format'](_0x4fa2('0x33')),'interface':_0x525a3f});}})[_0x4fa2('0x10')](function(_0x2b473b){_0x1c737e(_0x2b473b);})[_0x4fa2('0x27')](function(_0x259b38){_0x322b1b(_0x46e56c['error'](0x1f4,_0x259b38[_0x4fa2('0x17')]));});});};
\ No newline at end of file
+var _0xd2d9=['push','SIP/%s','type','DEFAULT\x20PAUSE','bulkCreate','body','findOne','channel','isValidChannel','Unknown\x20channel','system','chat','fax','sms','openchannel','whatsapp','%s%s','Pause','all','LogoutUser','destroy','forEach','mobile','phone','loginInPause','count','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','LOGIN','concat','LOGININPAUSE','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./user.socket','request','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','findAll','options','raw','where','limit','include','model','attributes','map','GetUser','ShowUser','User','find','PauseUser','name','role','internal','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels'];(function(_0x5b054c,_0x4dc99d){var _0x45d611=function(_0x368981){while(--_0x368981){_0x5b054c['push'](_0x5b054c['shift']());}};_0x45d611(++_0x4dc99d);}(_0xd2d9,0xd9));var _0x9d2d=function(_0x1fcf1b,_0x214549){_0x1fcf1b=_0x1fcf1b-0x0;var _0x5d2952=_0xd2d9[_0x1fcf1b];return _0x5d2952;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x9d2d('0x0'));var rs=require(_0x9d2d('0x1'));var fs=require('fs');var Redis=require(_0x9d2d('0x2'));var db=require(_0x9d2d('0x3'))['db'];var utils=require(_0x9d2d('0x4'));var logger=require(_0x9d2d('0x5'))(_0x9d2d('0x6'));var config=require(_0x9d2d('0x7'));var jayson=require(_0x9d2d('0x8'));var client=jayson[_0x9d2d('0x9')][_0x9d2d('0xa')]({'port':0x232a});config['redis']=_[_0x9d2d('0xb')](config[_0x9d2d('0xc')],{'host':_0x9d2d('0xd'),'port':0x18eb});var socket=require(_0x9d2d('0xe'))(new Redis(config[_0x9d2d('0xc')]));require(_0x9d2d('0xf'))['register'](socket);function respondWithRpcPromise(_0x58ebdb,_0x1e335c,_0x10e142){return new BPromise(function(_0x5f7576,_0x5115e4){return client[_0x9d2d('0x10')](_0x58ebdb,_0x10e142)[_0x9d2d('0x11')](function(_0xb94186){logger[_0x9d2d('0x12')](_0x9d2d('0x13'),_0x1e335c,'request\x20sent');logger[_0x9d2d('0x14')](_0x9d2d('0x15'),_0x1e335c,_0x9d2d('0x16'),JSON[_0x9d2d('0x17')](_0xb94186));if(_0xb94186[_0x9d2d('0x18')]){if(_0xb94186[_0x9d2d('0x18')][_0x9d2d('0x19')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x1e335c,_0xb94186[_0x9d2d('0x18')][_0x9d2d('0x1a')]);return _0x5115e4(_0xb94186[_0x9d2d('0x18')][_0x9d2d('0x1a')]);}logger[_0x9d2d('0x18')](_0x9d2d('0x13'),_0x1e335c,_0xb94186[_0x9d2d('0x18')][_0x9d2d('0x1a')]);return _0x5f7576(_0xb94186[_0x9d2d('0x18')]['message']);}else{logger['info'](_0x9d2d('0x13'),_0x1e335c,_0x9d2d('0x16'));_0x5f7576(_0xb94186[_0x9d2d('0x1b')][_0x9d2d('0x1a')]);}})[_0x9d2d('0x1c')](function(_0x4b3c72){logger[_0x9d2d('0x18')]('User,\x20%s,\x20%s',_0x1e335c,_0x4b3c72);_0x5115e4(_0x4b3c72);});});}exports['GetUser']=function(_0x1b15aa){var _0x54fec0=this;return new Promise(function(_0x5ed900,_0x67c7b8){return db['User'][_0x9d2d('0x1d')]({'raw':_0x1b15aa[_0x9d2d('0x1e')]?_0x1b15aa[_0x9d2d('0x1e')][_0x9d2d('0x1f')]===undefined?!![]:![]:!![],'where':_0x1b15aa[_0x9d2d('0x1e')]?_0x1b15aa[_0x9d2d('0x1e')][_0x9d2d('0x20')]||null:null,'attributes':_0x1b15aa[_0x9d2d('0x1e')]?_0x1b15aa[_0x9d2d('0x1e')]['attributes']||null:null,'limit':_0x1b15aa['options']?_0x1b15aa['options'][_0x9d2d('0x21')]||null:null,'include':_0x1b15aa[_0x9d2d('0x1e')]?_0x1b15aa[_0x9d2d('0x1e')][_0x9d2d('0x22')]?_['map'](_0x1b15aa[_0x9d2d('0x1e')][_0x9d2d('0x22')],function(_0x4ab853){return{'model':db[_0x4ab853[_0x9d2d('0x23')]],'as':_0x4ab853['as'],'attributes':_0x4ab853[_0x9d2d('0x24')],'include':_0x4ab853[_0x9d2d('0x22')]?_['map'](_0x4ab853[_0x9d2d('0x22')],function(_0x4d99b0){return{'model':db[_0x4d99b0['model']],'as':_0x4d99b0['as'],'attributes':_0x4d99b0[_0x9d2d('0x24')],'include':_0x4d99b0[_0x9d2d('0x22')]?_[_0x9d2d('0x25')](_0x4d99b0[_0x9d2d('0x22')],function(_0x2b0b10){return{'model':db[_0x2b0b10[_0x9d2d('0x23')]],'as':_0x2b0b10['as'],'attributes':_0x2b0b10[_0x9d2d('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x51ca28){logger[_0x9d2d('0x12')](_0x9d2d('0x26'),_0x1b15aa);logger[_0x9d2d('0x14')](_0x9d2d('0x26'),_0x1b15aa,JSON['stringify'](_0x51ca28));_0x5ed900(_0x51ca28);})[_0x9d2d('0x1c')](function(_0x2efef8){logger[_0x9d2d('0x18')]('GetUser',_0x2efef8[_0x9d2d('0x1a')],_0x1b15aa);_0x67c7b8(_0x54fec0[_0x9d2d('0x18')](0x1f4,_0x2efef8['message']));});});};exports[_0x9d2d('0x27')]=function(_0x2c1af4){var _0x4413a2=this;return new Promise(function(_0x2c080e,_0x314ba0){return db[_0x9d2d('0x28')][_0x9d2d('0x29')]({'raw':_0x2c1af4[_0x9d2d('0x1e')]?_0x2c1af4[_0x9d2d('0x1e')][_0x9d2d('0x1f')]===undefined?!![]:![]:!![],'where':_0x2c1af4['options']?_0x2c1af4['options'][_0x9d2d('0x20')]||null:null,'attributes':_0x2c1af4[_0x9d2d('0x1e')]?_0x2c1af4[_0x9d2d('0x1e')][_0x9d2d('0x24')]||null:null,'include':_0x2c1af4['options']?_0x2c1af4[_0x9d2d('0x1e')][_0x9d2d('0x22')]?_[_0x9d2d('0x25')](_0x2c1af4[_0x9d2d('0x1e')]['include'],function(_0x307fae){return{'model':db[_0x307fae['model']],'as':_0x307fae['as'],'attributes':_0x307fae[_0x9d2d('0x24')],'include':_0x307fae['include']?_[_0x9d2d('0x25')](_0x307fae[_0x9d2d('0x22')],function(_0xa97bf3){return{'model':db[_0xa97bf3[_0x9d2d('0x23')]],'as':_0xa97bf3['as'],'attributes':_0xa97bf3['attributes'],'include':_0xa97bf3[_0x9d2d('0x22')]?_[_0x9d2d('0x25')](_0xa97bf3[_0x9d2d('0x22')],function(_0x590c4e){return{'model':db[_0x590c4e[_0x9d2d('0x23')]],'as':_0x590c4e['as'],'attributes':_0x590c4e[_0x9d2d('0x24')]};}):[]};}):[]};}):[]:[]})[_0x9d2d('0x11')](function(_0x4850ea){logger[_0x9d2d('0x12')](_0x9d2d('0x27'),_0x2c1af4);logger[_0x9d2d('0x14')](_0x9d2d('0x27'),_0x2c1af4,JSON['stringify'](_0x4850ea));_0x2c080e(_0x4850ea);})[_0x9d2d('0x1c')](function(_0x195683){logger['error'](_0x9d2d('0x27'),_0x195683[_0x9d2d('0x1a')],_0x2c1af4);_0x314ba0(_0x4413a2[_0x9d2d('0x18')](0x1f4,_0x195683[_0x9d2d('0x1a')]));});});};exports[_0x9d2d('0x2a')]=function(_0x40dace){var _0xfe138a=this;return new Promise(function(_0x3261fa,_0xd4f905){var _0x1fc899;return db[_0x9d2d('0x28')][_0x9d2d('0x29')]({'where':_0x40dace[_0x9d2d('0x1e')][_0x9d2d('0x20')]||{},'attributes':['id',_0x9d2d('0x2b'),_0x9d2d('0x2c'),_0x9d2d('0x2d'),_0x9d2d('0x2e')]})[_0x9d2d('0x11')](function(_0x5dc260){if(_0x5dc260){_0x1fc899=_0x5dc260;return db[_0x9d2d('0x2f')][_0x9d2d('0x30')]({'paused':0x1},{'where':{'UserId':_0x1fc899['id']},'individualHooks':!![]});}})[_0x9d2d('0x11')](function(){if(_0x1fc899){return db[_0x9d2d('0x31')][_0x9d2d('0x1d')]({'where':{'membername':_0x1fc899[_0x9d2d('0x2b')],'type':_0x9d2d('0x32'),'exitAt':null}});}})[_0x9d2d('0x11')](function(_0x1ec3e6){if(_0x1fc899){if(_0x1ec3e6&&_0x1ec3e6['length']){var _0x2b54d8=moment()[_0x9d2d('0x33')](_0x9d2d('0x34'));for(var _0x6f3cd5=0x0,_0x349868=_0x1ec3e6[_0x9d2d('0x35')];_0x6f3cd5<_0x349868;_0x6f3cd5++){_0x1ec3e6[_0x6f3cd5][_0x9d2d('0x36')]({'exitAt':_0x2b54d8});}}}})[_0x9d2d('0x11')](function(){if(_0x1fc899){var _0x1024d3=[];var _0x4ae8b4=utils[_0x9d2d('0x37')]();_0x4ae8b4['forEach'](function(_0x464b57){_0x1024d3[_0x9d2d('0x38')]({'channel':_0x464b57,'membername':_0x1fc899[_0x9d2d('0x2b')],'interface':_['isNil'](_0x1fc899[_0x9d2d('0x2e')])?util[_0x9d2d('0x33')](_0x9d2d('0x39'),_0x1fc899[_0x9d2d('0x2b')]):_0x1fc899[_0x9d2d('0x2e')],'type':_0x9d2d('0x32'),'enterAt':moment()[_0x9d2d('0x33')](_0x9d2d('0x34')),'data1':_0x40dace['body'][_0x9d2d('0x3a')]||_0x9d2d('0x3b'),'role':_0x1fc899[_0x9d2d('0x2c')],'internal':_0x1fc899['internal'],'uniqueid':_0x40dace['body']['uniqueid']||null});});return db['MemberReport'][_0x9d2d('0x3c')](_0x1024d3,{'individualHooks':!![]});}})[_0x9d2d('0x11')](function(){if(_0x1fc899){return _0x1fc899[_0x9d2d('0x30')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x40dace[_0x9d2d('0x3d')][_0x9d2d('0x3a')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x9d2d('0x33')](_0x9d2d('0x34'))});}})[_0x9d2d('0x11')](function(_0x277738){_0x3261fa(_0x277738);})[_0x9d2d('0x1c')](function(_0x19bae8){_0xd4f905(_0xfe138a[_0x9d2d('0x18')](0x1f4,_0x19bae8[_0x9d2d('0x1a')]));});});};exports['UnpauseUser']=function(_0x119c4a){var _0xa17439=this;return new Promise(function(_0x1a56a6,_0x28824e){var _0x408ff2;return db[_0x9d2d('0x28')][_0x9d2d('0x3e')]({'where':_0x119c4a[_0x9d2d('0x1e')][_0x9d2d('0x20')]||{},'attributes':['id',_0x9d2d('0x2b')]})[_0x9d2d('0x11')](function(_0x1b6896){if(_0x1b6896){_0x408ff2=_0x1b6896;if(_0x119c4a[_0x9d2d('0x3d')][_0x9d2d('0x3f')]&&!utils[_0x9d2d('0x40')](_0x119c4a[_0x9d2d('0x3d')][_0x9d2d('0x3f')])){throw new Error(_0x9d2d('0x41'));}switch(_0x119c4a[_0x9d2d('0x3d')][_0x9d2d('0x3f')]){case'voice':return db[_0x9d2d('0x2f')][_0x9d2d('0x30')]({'paused':0x0},{'where':{'UserId':_0x408ff2['id']}})['then'](function(){return db[_0x9d2d('0x31')][_0x9d2d('0x29')]({'where':{'channel':_0x119c4a[_0x9d2d('0x3d')][_0x9d2d('0x3f')],'membername':_0x408ff2[_0x9d2d('0x2b')],'type':'PAUSE','exitAt':null}});})[_0x9d2d('0x11')](function(_0xe1409e){if(_0xe1409e){return _0xe1409e[_0x9d2d('0x30')]({'exitAt':moment()[_0x9d2d('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x9d2d('0x42')},{'individualHooks':!![]});}return null;})[_0x9d2d('0x11')](function(){return _0x408ff2[_0x9d2d('0x30')]({'voicePause':![]});});case'mail':case _0x9d2d('0x43'):case _0x9d2d('0x44'):case _0x9d2d('0x45'):case _0x9d2d('0x46'):case _0x9d2d('0x47'):return db[_0x9d2d('0x31')]['find']({'where':{'channel':_0x119c4a[_0x9d2d('0x3d')][_0x9d2d('0x3f')],'membername':_0x408ff2['name'],'type':_0x9d2d('0x32'),'exitAt':null}})['then'](function(_0x2b34b2){return _0x2b34b2[_0x9d2d('0x30')]({'exitAt':moment()[_0x9d2d('0x33')](_0x9d2d('0x34')),'data2':_0x9d2d('0x42')},{'individualHooks':!![]});})[_0x9d2d('0x11')](function(){var _0x1afbfc={};_['set'](_0x1afbfc,util[_0x9d2d('0x33')](_0x9d2d('0x48'),_0x119c4a['body'][_0x9d2d('0x3f')],_0x9d2d('0x49')),![]);return _0x408ff2[_0x9d2d('0x30')](_0x1afbfc);});default:return db[_0x9d2d('0x2f')][_0x9d2d('0x30')]({'paused':0x0},{'where':{'UserId':_0x408ff2['id']}})[_0x9d2d('0x11')](function(){return db[_0x9d2d('0x31')][_0x9d2d('0x1d')]({'where':{'membername':_0x408ff2[_0x9d2d('0x2b')],'type':_0x9d2d('0x32'),'exitAt':null}});})[_0x9d2d('0x11')](function(_0x5ae621){var _0x4b2e34=[];_0x5ae621['forEach'](function(_0x416af7){_0x4b2e34[_0x9d2d('0x38')](_0x416af7[_0x9d2d('0x30')]({'exitAt':moment()['format'](_0x9d2d('0x34')),'data2':'system'}));});return BPromise[_0x9d2d('0x4a')](_0x4b2e34);})['then'](function(){return _0x408ff2[_0x9d2d('0x30')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x9d2d('0x11')](function(_0x230ea1){_0x1a56a6(_0x230ea1);})[_0x9d2d('0x1c')](function(_0x48d4dc){_0x28824e(_0xa17439[_0x9d2d('0x18')](0x1f4,_0x48d4dc[_0x9d2d('0x1a')]));});});};exports[_0x9d2d('0x4b')]=function(_0x12b03c){var _0x3a3185=this;return new Promise(function(_0x176344,_0x1258f8){var _0x2de255;return db[_0x9d2d('0x28')][_0x9d2d('0x3e')]({'where':_0x12b03c['options'][_0x9d2d('0x20')]||{},'attributes':['id','name']})[_0x9d2d('0x11')](function(_0x964d07){if(_0x964d07){_0x2de255=_0x964d07;return db[_0x9d2d('0x2f')][_0x9d2d('0x4c')]({'where':{'membername':_0x2de255['name']},'individualHooks':!![]});}})[_0x9d2d('0x11')](function(){if(_0x2de255){return db[_0x9d2d('0x31')][_0x9d2d('0x1d')]({'where':{'membername':_0x2de255[_0x9d2d('0x2b')],'exitAt':null}});}})[_0x9d2d('0x11')](function(_0x1703b2){if(_0x2de255){if(_0x1703b2&&_0x1703b2[_0x9d2d('0x35')]){var _0x47109e=[];_0x1703b2[_0x9d2d('0x4d')](function(_0x4259a6){_0x47109e[_0x9d2d('0x38')](_0x4259a6['update']({'exitAt':moment()[_0x9d2d('0x33')](_0x9d2d('0x34'))}));});return BPromise['all'](_0x47109e);}}})[_0x9d2d('0x11')](function(){if(_0x2de255){return _0x2de255[_0x9d2d('0x30')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9d2d('0x11')](function(_0x25f44c){_0x176344(_0x25f44c);})[_0x9d2d('0x1c')](function(_0x568e76){_0x1258f8(_0x3a3185[_0x9d2d('0x18')](0x1f4,_0x568e76[_0x9d2d('0x1a')]));});});};exports['LoginUser']=function(_0x3c2b61){var _0xbee920=this;return new Promise(function(_0x4c2969,_0x51eb98){var _0x29c942;var _0x517098;var _0x316bc3;var _0x12727c;return db[_0x9d2d('0x28')][_0x9d2d('0x3e')]({'where':_0x3c2b61[_0x9d2d('0x1e')]['where']||{},'attributes':['id',_0x9d2d('0x2b'),'role',_0x9d2d('0x4e'),_0x9d2d('0x4f'),_0x9d2d('0x2d'),_0x9d2d('0x50'),_0x9d2d('0x2e')]})['then'](function(_0x446573){if(_0x446573){_0x29c942=_0x446573;_0x12727c=_0x3c2b61[_0x9d2d('0x3d')]['interface']?_0x3c2b61[_0x9d2d('0x3d')]['interface']:util['format']('SIP/%s',_0x29c942[_0x9d2d('0x2b')]);return db['User'][_0x9d2d('0x51')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x29c942['id']}}});}})[_0x9d2d('0x11')](function(_0x3aa8e0){if(_0x3aa8e0){_0x316bc3=_0x3aa8e0;return require(_0x9d2d('0x52'))[_0x9d2d('0x53')]();}})[_0x9d2d('0x11')](function(_0x46a852){if(_0x46a852&&_0x46a852['agents']&&_0x316bc3>=_0x46a852[_0x9d2d('0x54')]){throw new Error(_0x9d2d('0x55'));}})[_0x9d2d('0x11')](function(){if(_0x29c942){return db['UserVoiceQueueRt'][_0x9d2d('0x4c')]({'where':{'membername':_0x29c942['name']},'individualHooks':!![]});}})[_0x9d2d('0x11')](function(){if(_0x29c942){return _0x29c942[_0x9d2d('0x56')]({'raw':!![]});}})['then'](function(_0x19064a){if(_0x29c942){if(_0x19064a){var _0x5335f0=[];_0x517098=_0x19064a;if(_0x517098[_0x9d2d('0x35')]){for(var _0x178efa=0x0;_0x178efa<_0x517098[_0x9d2d('0x35')];_0x178efa++){_0x5335f0[_0x9d2d('0x38')](db['UserVoiceQueueRt'][_0x9d2d('0x57')]({'membername':_0x29c942[_0x9d2d('0x2b')],'UserId':_0x29c942['id'],'queue_name':_0x517098[_0x178efa][_0x9d2d('0x2b')],'VoiceQueueId':_0x517098[_0x178efa]['id'],'interface':_0x12727c,'paused':_0x29c942[_0x9d2d('0x50')]||![],'penalty':_0x517098[_0x178efa]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x9d2d('0x4a')](_0x5335f0);}}}})['then'](function(){if(_0x29c942){return db['MemberReport'][_0x9d2d('0x1d')]({'where':{'membername':_0x29c942[_0x9d2d('0x2b')],'exitAt':null}});}})['then'](function(_0x2243d4){if(_0x29c942){if(_0x2243d4&&_0x2243d4[_0x9d2d('0x35')]){var _0x3bdc9c=[];_0x2243d4['forEach'](function(_0x1b4660){_0x3bdc9c[_0x9d2d('0x38')](_0x1b4660[_0x9d2d('0x30')]({'exitAt':moment()[_0x9d2d('0x33')](_0x9d2d('0x34'))}));});return BPromise[_0x9d2d('0x4a')](_0x3bdc9c);}}})[_0x9d2d('0x11')](function(_0x23a465){if(_0x29c942){var _0x562235=[];var _0x363efb=[];var _0x289fb8=utils[_0x9d2d('0x37')]();var _0x1532de={'membername':_0x29c942['name'],'interface':_0x12727c,'enterAt':moment()['format'](_0x9d2d('0x34')),'role':_0x29c942['role'],'internal':_0x29c942[_0x9d2d('0x2d')]};_0x289fb8[_0x9d2d('0x4d')](function(_0x2f545f){_0x562235['push'](_['merge']({'channel':_0x2f545f,'type':_0x9d2d('0x58'),'data1':'callysquare','data2':_0x12727c},_0x1532de));if(_0x29c942[_0x9d2d('0x50')]){_0x363efb[_0x9d2d('0x38')](_['merge']({'channel':_0x2f545f,'type':_0x9d2d('0x32'),'data1':'LOGININPAUSE'},_0x1532de));}});return db[_0x9d2d('0x31')][_0x9d2d('0x3c')](_0x562235[_0x9d2d('0x59')](_0x363efb),{'individualHooks':!![]});}})[_0x9d2d('0x11')](function(){if(_0x29c942){return _0x29c942[_0x9d2d('0x30')]({'online':!![],'lastLoginAt':moment()[_0x9d2d('0x33')](_0x9d2d('0x34')),'voicePause':_0x29c942[_0x9d2d('0x50')]||![],'mailPause':_0x29c942[_0x9d2d('0x50')]||![],'chatPause':_0x29c942[_0x9d2d('0x50')]||![],'faxPause':_0x29c942['loginInPause']||![],'smsPause':_0x29c942['loginInPause']||![],'openchannelPause':_0x29c942['loginInPause']||![],'pauseType':_0x29c942[_0x9d2d('0x50')]?_0x9d2d('0x5a'):null,'lastPauseAt':moment()['format'](_0x9d2d('0x34')),'interface':_0x12727c});}})[_0x9d2d('0x11')](function(_0x3ebe51){_0x4c2969(_0x3ebe51);})[_0x9d2d('0x1c')](function(_0xcb8446){_0x51eb98(_0xbee920[_0x9d2d('0x18')](0x1f4,_0xcb8446[_0x9d2d('0x1a')]));});});};
\ No newline at end of file
index 22d5bc1..c05c5c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x752d=['emit','register','length','./user.events','save','remove','update'];(function(_0x501578,_0x75a928){var _0xdf7673=function(_0x5c5cfe){while(--_0x5c5cfe){_0x501578['push'](_0x501578['shift']());}};_0xdf7673(++_0x75a928);}(_0x752d,0x81));var _0xd752=function(_0x28e60a,_0x1039c3){_0x28e60a=_0x28e60a-0x0;var _0x5530d6=_0x752d[_0x28e60a];return _0x5530d6;};'use strict';var UserEvents=require(_0xd752('0x0'));var events=[_0xd752('0x1'),_0xd752('0x2'),_0xd752('0x3')];function createListener(_0x56f2ab,_0x3fde0c){return function(_0x1b9c38){_0x3fde0c[_0xd752('0x4')](_0x56f2ab,_0x1b9c38);};}function removeListener(_0x3a8384,_0x533280){return function(){UserEvents['removeListener'](_0x3a8384,_0x533280);};}exports[_0xd752('0x5')]=function(_0x18abc8){for(var _0x6e48fe=0x0,_0x1687de=events[_0xd752('0x6')];_0x6e48fe<_0x1687de;_0x6e48fe++){var _0x1aa456=events[_0x6e48fe];var _0x53eb20=createListener('user:'+_0x1aa456,_0x18abc8);UserEvents['on'](_0x1aa456,_0x53eb20);}};
\ No newline at end of file
+var _0x6e11=['update','removeListener','register','user:','./user.events','save','remove'];(function(_0xfc344d,_0x278be9){var _0x569d02=function(_0xbe5b08){while(--_0xbe5b08){_0xfc344d['push'](_0xfc344d['shift']());}};_0x569d02(++_0x278be9);}(_0x6e11,0x18c));var _0x16e1=function(_0x5eb22e,_0x27cbac){_0x5eb22e=_0x5eb22e-0x0;var _0x27fed5=_0x6e11[_0x5eb22e];return _0x27fed5;};'use strict';var UserEvents=require(_0x16e1('0x0'));var events=[_0x16e1('0x1'),_0x16e1('0x2'),_0x16e1('0x3')];function createListener(_0xb416ea,_0x4468e1){return function(_0x1888d0){_0x4468e1['emit'](_0xb416ea,_0x1888d0);};}function removeListener(_0x553766,_0x24f730){return function(){UserEvents[_0x16e1('0x4')](_0x553766,_0x24f730);};}exports[_0x16e1('0x5')]=function(_0x2a2727){for(var _0x676721=0x0,_0x3af03c=events['length'];_0x676721<_0x3af03c;_0x676721++){var _0x3b4c89=events[_0x676721];var _0x2c5d32=createListener(_0x16e1('0x6')+_0x3b4c89,_0x2a2727);UserEvents['on'](_0x3b4c89,_0x2c5d32);}};
\ No newline at end of file
index ca4ac86..f564875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x263563,_0x51a99e){var _0x4a41fc=function(_0x43010f){while(--_0x43010f){_0x263563['push'](_0x263563['shift']());}};_0x4a41fc(++_0x51a99e);}(_0xedd9,0xfc));var _0x9edd=function(_0x1fed51,_0x6d7174){_0x1fed51=_0x1fed51-0x0;var _0x88b423=_0xedd9[_0x1fed51];return _0x88b423;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x21e9be,_0x145bbd){var _0x57797b=function(_0x1cf572){while(--_0x1cf572){_0x21e9be['push'](_0x21e9be['shift']());}};_0x57797b(++_0x145bbd);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 4cd874f..151a35a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9223=['sequelize','INTEGER'];(function(_0x530ddb,_0x3008f8){var _0x4fa295=function(_0x552364){while(--_0x552364){_0x530ddb['push'](_0x530ddb['shift']());}};_0x4fa295(++_0x3008f8);}(_0x9223,0x19e));var _0x3922=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0x9223[_0x1eda20];return _0x31b953;};'use strict';var Sequelize=require(_0x3922('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x3922('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6df0=['INTEGER','sequelize','exports'];(function(_0x3b539b,_0x4143a8){var _0xa761f1=function(_0x2268f1){while(--_0x2268f1){_0x3b539b['push'](_0x3b539b['shift']());}};_0xa761f1(++_0x4143a8);}(_0x6df0,0x15d));var _0x06df=function(_0x47408e,_0x481428){_0x47408e=_0x47408e-0x0;var _0x1636bc=_0x6df0[_0x47408e];return _0x1636bc;};'use strict';var Sequelize=require(_0x06df('0x0'));module[_0x06df('0x1')]={'penalty':{'type':Sequelize[_0x06df('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index c6bd4db..72a868a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9893=['api','moment','bluebird','request-promise','path','user_has_chat_queues','lodash','util','../../config/logger'];(function(_0x5b7f48,_0x4d8a1d){var _0x2424b0=function(_0x21b28b){while(--_0x21b28b){_0x5b7f48['push'](_0x5b7f48['shift']());}};_0x2424b0(++_0x4d8a1d);}(_0x9893,0x8d));var _0x3989=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9893[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x3989('0x0'));var util=require(_0x3989('0x1'));var logger=require(_0x3989('0x2'))(_0x3989('0x3'));var moment=require(_0x3989('0x4'));var BPromise=require(_0x3989('0x5'));var rp=require(_0x3989('0x6'));var fs=require('fs');var path=require(_0x3989('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userChatQueue.attributes');module['exports']=function(_0x583ded,_0x231b5a){return _0x583ded['define']('UserChatQueue',attributes,{'tableName':_0x3989('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb7d=['define','UserChatQueue','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./userChatQueue.attributes','exports'];(function(_0x9125be,_0x5c221b){var _0x4c82ab=function(_0x4fa01f){while(--_0x4fa01f){_0x9125be['push'](_0x9125be['shift']());}};_0x4c82ab(++_0x5c221b);}(_0xfb7d,0x7b));var _0xdfb7=function(_0x444b72,_0x25d8c5){_0x444b72=_0x444b72-0x0;var _0x46d258=_0xfb7d[_0x444b72];return _0x46d258;};'use strict';var _=require(_0xdfb7('0x0'));var util=require(_0xdfb7('0x1'));var logger=require(_0xdfb7('0x2'))('api');var moment=require(_0xdfb7('0x3'));var BPromise=require(_0xdfb7('0x4'));var rp=require(_0xdfb7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdfb7('0x6'));var config=require('../../config/environment');var attributes=require(_0xdfb7('0x7'));module[_0xdfb7('0x8')]=function(_0x282c84,_0x5bdd06){return _0x282c84[_0xdfb7('0x9')](_0xdfb7('0xa'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15084f7..68fcafe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4528=['http','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x59848b,_0x4c326e){var _0x19f0ec=function(_0xfa30e9){while(--_0xfa30e9){_0x59848b['push'](_0x59848b['shift']());}};_0x19f0ec(++_0x4c326e);}(_0x4528,0x1b9));var _0x8452=function(_0x49b579,_0x360343){_0x49b579=_0x49b579-0x0;var _0x5dcf89=_0x4528[_0x49b579];return _0x5dcf89;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8452('0x0'));var BPromise=require(_0x8452('0x1'));var rs=require(_0x8452('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8452('0x3'))['db'];var utils=require(_0x8452('0x4'));var logger=require(_0x8452('0x5'))('rpc');var config=require(_0x8452('0x6'));var jayson=require(_0x8452('0x7'));var client=jayson[_0x8452('0x8')][_0x8452('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x22db35,_0x3e3011,_0x139bf0){return new BPromise(function(_0x48e486,_0x9f3b44){return client['request'](_0x22db35,_0x139bf0)['then'](function(_0x4210b9){logger['info'](_0x8452('0xa'),_0x3e3011,_0x8452('0xb'));logger[_0x8452('0xc')](_0x8452('0xd'),_0x3e3011,_0x8452('0xb'),JSON[_0x8452('0xe')](_0x4210b9));if(_0x4210b9[_0x8452('0xf')]){if(_0x4210b9[_0x8452('0xf')][_0x8452('0x10')]===0x1f4){logger['error'](_0x8452('0xa'),_0x3e3011,_0x4210b9[_0x8452('0xf')][_0x8452('0x11')]);return _0x9f3b44(_0x4210b9[_0x8452('0xf')][_0x8452('0x11')]);}logger[_0x8452('0xf')](_0x8452('0xa'),_0x3e3011,_0x4210b9[_0x8452('0xf')]['message']);return _0x48e486(_0x4210b9[_0x8452('0xf')][_0x8452('0x11')]);}else{logger['info'](_0x8452('0xa'),_0x3e3011,_0x8452('0xb'));_0x48e486(_0x4210b9['result']['message']);}})['catch'](function(_0x2139c0){logger[_0x8452('0xf')](_0x8452('0xa'),_0x3e3011,_0x2139c0);_0x9f3b44(_0x2139c0);});});}
\ No newline at end of file
+var _0x6416=['jayson/promise','client','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x2421be,_0x17635f){var _0x50ae78=function(_0x2ae475){while(--_0x2ae475){_0x2421be['push'](_0x2421be['shift']());}};_0x50ae78(++_0x17635f);}(_0x6416,0x116));var _0x6641=function(_0xace953,_0x338468){_0xace953=_0xace953-0x0;var _0x5b5c4b=_0x6416[_0xace953];return _0x5b5c4b;};'use strict';var _=require(_0x6641('0x0'));var util=require(_0x6641('0x1'));var moment=require(_0x6641('0x2'));var BPromise=require(_0x6641('0x3'));var rs=require(_0x6641('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6641('0x5'));var logger=require(_0x6641('0x6'))(_0x6641('0x7'));var config=require('../../config/environment');var jayson=require(_0x6641('0x8'));var client=jayson[_0x6641('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1adc27,_0x35b15b,_0x3e818b){return new BPromise(function(_0x6d4eaa,_0x350f46){return client[_0x6641('0xa')](_0x1adc27,_0x3e818b)[_0x6641('0xb')](function(_0x3ccf64){logger[_0x6641('0xc')](_0x6641('0xd'),_0x35b15b,_0x6641('0xe'));logger[_0x6641('0xf')](_0x6641('0x10'),_0x35b15b,_0x6641('0xe'),JSON[_0x6641('0x11')](_0x3ccf64));if(_0x3ccf64[_0x6641('0x12')]){if(_0x3ccf64['error'][_0x6641('0x13')]===0x1f4){logger['error'](_0x6641('0xd'),_0x35b15b,_0x3ccf64[_0x6641('0x12')]['message']);return _0x350f46(_0x3ccf64[_0x6641('0x12')]['message']);}logger[_0x6641('0x12')](_0x6641('0xd'),_0x35b15b,_0x3ccf64[_0x6641('0x12')][_0x6641('0x14')]);return _0x6d4eaa(_0x3ccf64[_0x6641('0x12')]['message']);}else{logger[_0x6641('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x35b15b,_0x6641('0xe'));_0x6d4eaa(_0x3ccf64['result']['message']);}})[_0x6641('0x15')](function(_0x1ca1b8){logger['error'](_0x6641('0xd'),_0x35b15b,_0x1ca1b8);_0x350f46(_0x1ca1b8);});});}
\ No newline at end of file
index 2fce54c..23ee20c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5a247a,_0x15d7d0){var _0x2c6089=function(_0x5b21d3){while(--_0x5b21d3){_0x5a247a['push'](_0x5a247a['shift']());}};_0x2c6089(++_0x15d7d0);}(_0xe706,0xa3));var _0x6e70=function(_0x37153e,_0x15c383){_0x37153e=_0x37153e-0x0;var _0x3d2981=_0xe706[_0x37153e];return _0x3d2981;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5c60ab,_0x2f7837){var _0xe893ed=function(_0xd94383){while(--_0xd94383){_0x5c60ab['push'](_0x5c60ab['shift']());}};_0xe893ed(++_0x2f7837);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index a26dc70..6cbd4c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202a=['INTEGER','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x202a,0x88));var _0xa202=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x202a[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xa202('0x0'));module[_0xa202('0x1')]={'penalty':{'type':Sequelize[_0xa202('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xa202('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb67d=['STRING','exports','INTEGER'];(function(_0x300144,_0x490e5f){var _0xdd579e=function(_0x11ed3b){while(--_0x11ed3b){_0x300144['push'](_0x300144['shift']());}};_0xdd579e(++_0x490e5f);}(_0xb67d,0x112));var _0xdb67=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb67d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xdb67('0x0')]={'penalty':{'type':Sequelize[_0xdb67('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0xdb67('0x2')]}};
\ No newline at end of file
index b12f23d..6cd34fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea5=['rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x43a1ba,_0x1909f7){var _0x55adf6=function(_0x415e32){while(--_0x415e32){_0x43a1ba['push'](_0x43a1ba['shift']());}};_0x55adf6(++_0x1909f7);}(_0xcea5,0x1c7));var _0x5cea=function(_0x8774d0,_0x5989f9){_0x8774d0=_0x8774d0-0x0;var _0x27ebed=_0xcea5[_0x8774d0];return _0x27ebed;};'use strict';var _=require(_0x5cea('0x0'));var util=require(_0x5cea('0x1'));var logger=require(_0x5cea('0x2'))(_0x5cea('0x3'));var moment=require(_0x5cea('0x4'));var BPromise=require(_0x5cea('0x5'));var rp=require(_0x5cea('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5cea('0x7'));var config=require(_0x5cea('0x8'));var attributes=require(_0x5cea('0x9'));module[_0x5cea('0xa')]=function(_0x3adf19,_0x9e155f){return _0x3adf19[_0x5cea('0xb')](_0x5cea('0xc'),attributes,{'tableName':_0x5cea('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87b1=['request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','define','user_has_fax_queues','util','../../config/logger','api','moment'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x87b1,0x1bf));var _0x187b=function(_0x300ed1,_0x3aa411){_0x300ed1=_0x300ed1-0x0;var _0x2d3e47=_0x87b1[_0x300ed1];return _0x2d3e47;};'use strict';var _=require('lodash');var util=require(_0x187b('0x0'));var logger=require(_0x187b('0x1'))(_0x187b('0x2'));var moment=require(_0x187b('0x3'));var BPromise=require('bluebird');var rp=require(_0x187b('0x4'));var fs=require('fs');var path=require(_0x187b('0x5'));var rimraf=require(_0x187b('0x6'));var config=require(_0x187b('0x7'));var attributes=require(_0x187b('0x8'));module['exports']=function(_0x403051,_0x2a1e8f){return _0x403051[_0x187b('0x9')]('UserFaxQueue',attributes,{'tableName':_0x187b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 85c9072..6d97b0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1085=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','randomstring'];(function(_0x550451,_0x23d98d){var _0x476b4c=function(_0x3f2529){while(--_0x3f2529){_0x550451['push'](_0x550451['shift']());}};_0x476b4c(++_0x23d98d);}(_0x1085,0xb9));var _0x5108=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1085[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5108('0x0'));var util=require(_0x5108('0x1'));var moment=require('moment');var BPromise=require(_0x5108('0x2'));var rs=require(_0x5108('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5108('0x4'));var logger=require(_0x5108('0x5'))(_0x5108('0x6'));var config=require(_0x5108('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5108('0x8')][_0x5108('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xc1998,_0x576d68,_0x16801a){return new BPromise(function(_0x1ad427,_0x145963){return client[_0x5108('0xa')](_0xc1998,_0x16801a)['then'](function(_0x40c170){logger[_0x5108('0xb')](_0x5108('0xc'),_0x576d68,_0x5108('0xd'));logger[_0x5108('0xe')](_0x5108('0xf'),_0x576d68,_0x5108('0xd'),JSON[_0x5108('0x10')](_0x40c170));if(_0x40c170[_0x5108('0x11')]){if(_0x40c170[_0x5108('0x11')][_0x5108('0x12')]===0x1f4){logger[_0x5108('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x576d68,_0x40c170[_0x5108('0x11')][_0x5108('0x13')]);return _0x145963(_0x40c170[_0x5108('0x11')]['message']);}logger[_0x5108('0x11')](_0x5108('0xc'),_0x576d68,_0x40c170[_0x5108('0x11')]['message']);return _0x1ad427(_0x40c170[_0x5108('0x11')]['message']);}else{logger[_0x5108('0xb')](_0x5108('0xc'),_0x576d68,_0x5108('0xd'));_0x1ad427(_0x40c170[_0x5108('0x14')][_0x5108('0x13')]);}})['catch'](function(_0x2f7126){logger[_0x5108('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x576d68,_0x2f7126);_0x145963(_0x2f7126);});});}
\ No newline at end of file
+var _0x34ad=['bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x42d7f4,_0x5e9ae8){var _0x49e630=function(_0x345ea1){while(--_0x345ea1){_0x42d7f4['push'](_0x42d7f4['shift']());}};_0x49e630(++_0x5e9ae8);}(_0x34ad,0x1cc));var _0xd34a=function(_0x5678b5,_0x1c4aa8){_0x5678b5=_0x5678b5-0x0;var _0x4c09a5=_0x34ad[_0x5678b5];return _0x4c09a5;};'use strict';var _=require(_0xd34a('0x0'));var util=require(_0xd34a('0x1'));var moment=require('moment');var BPromise=require(_0xd34a('0x2'));var rs=require(_0xd34a('0x3'));var fs=require('fs');var Redis=require(_0xd34a('0x4'));var db=require(_0xd34a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd34a('0x6'));var config=require(_0xd34a('0x7'));var jayson=require(_0xd34a('0x8'));var client=jayson[_0xd34a('0x9')][_0xd34a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3155bd,_0x40d3ef,_0x33e65b){return new BPromise(function(_0x3b8b45,_0x364663){return client[_0xd34a('0xb')](_0x3155bd,_0x33e65b)[_0xd34a('0xc')](function(_0x41bf31){logger[_0xd34a('0xd')](_0xd34a('0xe'),_0x40d3ef,_0xd34a('0xf'));logger['debug']('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x40d3ef,'request\x20sent',JSON[_0xd34a('0x10')](_0x41bf31));if(_0x41bf31[_0xd34a('0x11')]){if(_0x41bf31['error'][_0xd34a('0x12')]===0x1f4){logger[_0xd34a('0x11')](_0xd34a('0xe'),_0x40d3ef,_0x41bf31[_0xd34a('0x11')][_0xd34a('0x13')]);return _0x364663(_0x41bf31['error'][_0xd34a('0x13')]);}logger[_0xd34a('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x40d3ef,_0x41bf31[_0xd34a('0x11')][_0xd34a('0x13')]);return _0x3b8b45(_0x41bf31[_0xd34a('0x11')]['message']);}else{logger[_0xd34a('0xd')](_0xd34a('0xe'),_0x40d3ef,_0xd34a('0xf'));_0x3b8b45(_0x41bf31[_0xd34a('0x14')][_0xd34a('0x13')]);}})[_0xd34a('0x15')](function(_0x3eac19){logger[_0xd34a('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x40d3ef,_0x3eac19);_0x364663(_0x3eac19);});});}
\ No newline at end of file
index e76cd63..d2cfed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x242b2c,_0x4c8782){var _0x50ab00=function(_0x260f6e){while(--_0x260f6e){_0x242b2c['push'](_0x242b2c['shift']());}};_0x50ab00(++_0x4c8782);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1602fb,_0x20b6b3){_0x1602fb=_0x1602fb-0x0;var _0x461831=_0xcb91[_0x1602fb];return _0x461831;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5690e2,_0x435b12){var _0x16f2c0=function(_0x54b027){while(--_0x54b027){_0x5690e2['push'](_0x5690e2['shift']());}};_0x16f2c0(++_0x435b12);}(_0xe706,0xa3));var _0x6e70=function(_0x390e6c,_0x4d7d42){_0x390e6c=_0x390e6c-0x0;var _0x596b05=_0xe706[_0x390e6c];return _0x596b05;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index dc1116a..51e7b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d06=['sequelize','exports','INTEGER'];(function(_0x4a647a,_0x12cb35){var _0x1d49a7=function(_0x5a2a49){while(--_0x5a2a49){_0x4a647a['push'](_0x4a647a['shift']());}};_0x1d49a7(++_0x12cb35);}(_0x6d06,0x1aa));var _0x66d0=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0x6d06[_0x50aa2e];return _0x5e07f0;};'use strict';var Sequelize=require(_0x66d0('0x0'));module[_0x66d0('0x1')]={'penalty':{'type':Sequelize[_0x66d0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdaf0=['INTEGER','sequelize','exports'];(function(_0x1b8f09,_0x1f5a1e){var _0x2dff11=function(_0x3234ba){while(--_0x3234ba){_0x1b8f09['push'](_0x1b8f09['shift']());}};_0x2dff11(++_0x1f5a1e);}(_0xdaf0,0xb2));var _0x0daf=function(_0x4ed13d,_0xc1f7dc){_0x4ed13d=_0x4ed13d-0x0;var _0x1b6a82=_0xdaf0[_0x4ed13d];return _0x1b6a82;};'use strict';var Sequelize=require(_0x0daf('0x0'));module[_0x0daf('0x1')]={'penalty':{'type':Sequelize[_0x0daf('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index c86f698..a62e5af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd157=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','UserMailQueue','user_has_mail_queues','lodash'];(function(_0x454222,_0x44ae52){var _0x363048=function(_0x585998){while(--_0x585998){_0x454222['push'](_0x454222['shift']());}};_0x363048(++_0x44ae52);}(_0xd157,0x11d));var _0x7d15=function(_0x469498,_0x34f232){_0x469498=_0x469498-0x0;var _0x4df439=_0xd157[_0x469498];return _0x4df439;};'use strict';var _=require(_0x7d15('0x0'));var util=require(_0x7d15('0x1'));var logger=require(_0x7d15('0x2'))(_0x7d15('0x3'));var moment=require('moment');var BPromise=require(_0x7d15('0x4'));var rp=require(_0x7d15('0x5'));var fs=require('fs');var path=require(_0x7d15('0x6'));var rimraf=require(_0x7d15('0x7'));var config=require(_0x7d15('0x8'));var attributes=require(_0x7d15('0x9'));module[_0x7d15('0xa')]=function(_0x1de5a5,_0xb1d9a8){return _0x1de5a5['define'](_0x7d15('0xb'),attributes,{'tableName':_0x7d15('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c65=['UserMailQueue','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports'];(function(_0x50cf99,_0x3e5aa2){var _0x3f2d1f=function(_0xbbb890){while(--_0xbbb890){_0x50cf99['push'](_0x50cf99['shift']());}};_0x3f2d1f(++_0x3e5aa2);}(_0x4c65,0xf4));var _0x54c6=function(_0x2cee5c,_0xd9e3b4){_0x2cee5c=_0x2cee5c-0x0;var _0xce7a9b=_0x4c65[_0x2cee5c];return _0xce7a9b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x54c6('0x0'))(_0x54c6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x54c6('0x2'));var fs=require('fs');var path=require(_0x54c6('0x3'));var rimraf=require(_0x54c6('0x4'));var config=require(_0x54c6('0x5'));var attributes=require(_0x54c6('0x6'));module[_0x54c6('0x7')]=function(_0x4c0016,_0xfebcf5){return _0x4c0016['define'](_0x54c6('0x8'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5d224d..fa68390 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','UserMailQueue,\x20%s,\x20%s','message','info','catch','lodash','moment','bluebird','randomstring','../../config/utils'];(function(_0x40f28f,_0x2f5de2){var _0x4edeeb=function(_0x4ea62f){while(--_0x4ea62f){_0x40f28f['push'](_0x40f28f['shift']());}};_0x4edeeb(++_0x2f5de2);}(_0x3e74,0x175));var _0x43e7=function(_0x2064be,_0x52f023){_0x2064be=_0x2064be-0x0;var _0x543dcb=_0x3e74[_0x2064be];return _0x543dcb;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){return client[_0x43e7('0xa')](_0x503698,_0x3491d6)['then'](function(_0x212c6c){logger['info']('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'),JSON['stringify'](_0x212c6c));if(_0x212c6c[_0x43e7('0xd')]){if(_0x212c6c[_0x43e7('0xd')]['code']===0x1f4){logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')][_0x43e7('0xf')]);return _0x8528fc(_0x212c6c['error']['message']);}logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')]['message']);return _0x2ede2d(_0x212c6c['error'][_0x43e7('0xf')]);}else{logger[_0x43e7('0x10')](_0x43e7('0xe'),_0x45a0d1,_0x43e7('0xb'));_0x2ede2d(_0x212c6c['result']['message']);}})[_0x43e7('0x11')](function(_0x264575){logger[_0x43e7('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}
\ No newline at end of file
+var _0x55ca=['rpc','../../config/environment','jayson/promise','client','http','request','then','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/logger'];(function(_0x1b6a71,_0x209e47){var _0x6ab8e4=function(_0x5353be){while(--_0x5353be){_0x1b6a71['push'](_0x1b6a71['shift']());}};_0x6ab8e4(++_0x209e47);}(_0x55ca,0x126));var _0xa55c=function(_0x2f71c1,_0x319017){_0x2f71c1=_0x2f71c1-0x0;var _0x411bb7=_0x55ca[_0x2f71c1];return _0x411bb7;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('UserMailQueue,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('UserMailQueue,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}
\ No newline at end of file
index 0610de1..021b4b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x758e=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','util'];(function(_0x3b86a2,_0x230683){var _0x4a70c9=function(_0x168886){while(--_0x168886){_0x3b86a2['push'](_0x3b86a2['shift']());}};_0x4a70c9(++_0x230683);}(_0x758e,0x1b8));var _0xe758=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x758e[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xe758('0x0'));var util=require(_0xe758('0x1'));var path=require('path');var timeout=require(_0xe758('0x2'));var express=require(_0xe758('0x3'));var router=express[_0xe758('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe758('0x5'));var interaction=require(_0xe758('0x6'));var config=require(_0xe758('0x7'));var controller=require(_0xe758('0x8'));router[_0xe758('0x9')]('/',auth[_0xe758('0xa')](),controller[_0xe758('0xb')]);module[_0xe758('0xc')]=router;
\ No newline at end of file
+var _0xb76d=['./userNotification.controller','post','isAuthenticated','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment'];(function(_0x290844,_0x366077){var _0x546847=function(_0x4ea65e){while(--_0x4ea65e){_0x290844['push'](_0x290844['shift']());}};_0x546847(++_0x366077);}(_0xb76d,0x14e));var _0xdb76=function(_0x25c70e,_0x335fd2){_0x25c70e=_0x25c70e-0x0;var _0x4f4a29=_0xb76d[_0x25c70e];return _0x4f4a29;};'use strict';var multer=require(_0xdb76('0x0'));var util=require(_0xdb76('0x1'));var path=require(_0xdb76('0x2'));var timeout=require(_0xdb76('0x3'));var express=require('express');var router=express[_0xdb76('0x4')]();var fs_extra=require(_0xdb76('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdb76('0x6'));var controller=require(_0xdb76('0x7'));router[_0xdb76('0x8')]('/',auth[_0xdb76('0x9')](),controller['sendUserNotification']);module[_0xdb76('0xa')]=router;
\ No newline at end of file
index 6eda086..15ff44c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa130=['TEXT','STRING','sequelize'];(function(_0x40da45,_0x29029f){var _0x29f717=function(_0x54c13c){while(--_0x54c13c){_0x40da45['push'](_0x40da45['shift']());}};_0x29f717(++_0x29029f);}(_0xa130,0x161));var _0x0a13=function(_0x115e77,_0x503efb){_0x115e77=_0x115e77-0x0;var _0x442375=_0xa130[_0x115e77];return _0x442375;};'use strict';var Sequelize=require(_0x0a13('0x0'));module['exports']={'body':{'type':Sequelize[_0x0a13('0x1')]},'senderName':{'type':Sequelize[_0x0a13('0x2')]},'recipientsId':{'type':Sequelize[_0x0a13('0x1')]},'recipientsDescription':{'type':Sequelize[_0x0a13('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x95c7=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x2d6eba,_0x6bb69e){var _0x127482=function(_0x1cddac){while(--_0x1cddac){_0x2d6eba['push'](_0x2d6eba['shift']());}};_0x127482(++_0x6bb69e);}(_0x95c7,0x1c5));var _0x795c=function(_0x11f05c,_0x65935b){_0x11f05c=_0x11f05c-0x0;var _0x1a4e6d=_0x95c7[_0x11f05c];return _0x1a4e6d;};'use strict';var Sequelize=require(_0x795c('0x0'));module[_0x795c('0x1')]={'body':{'type':Sequelize[_0x795c('0x2')]},'senderName':{'type':Sequelize[_0x795c('0x3')]},'recipientsId':{'type':Sequelize[_0x795c('0x2')]},'recipientsDescription':{'type':Sequelize[_0x795c('0x3')]},'beep':{'type':Sequelize[_0x795c('0x4')]}};
\ No newline at end of file
index 2fbfba9..dfe06a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd63a=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./userNotification.socket','register','status','end','offset','limit','undefined','count','set','json','reject','save','then','destroy','sendStatus','error','stack','name','send','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','recipients','Invalid\x20\x27recipients\x27\x20object','faxqueue','openchannelqueue','team','user','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','beep','recipientsId','sortBy','join','sequelize','create','forEach','recipient','emit','findOne','html','render','catch','startCase','User','queue','replace','Queue','ids','all','union','flatten','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xd63a,0x1cb));var _0xad63=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd63a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xad63('0x0'));var rimraf=require(_0xad63('0x1'));var zipdir=require(_0xad63('0x2'));var jsonpatch=require(_0xad63('0x3'));var rp=require(_0xad63('0x4'));var moment=require(_0xad63('0x5'));var BPromise=require(_0xad63('0x6'));var Mustache=require('mustache');var util=require(_0xad63('0x7'));var path=require(_0xad63('0x8'));var sox=require('sox');var csv=require(_0xad63('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xad63('0xa'));var _=require('lodash');var squel=require(_0xad63('0xb'));var crypto=require(_0xad63('0xc'));var jsforce=require(_0xad63('0xd'));var deskjs=require(_0xad63('0xe'));var toCsv=require(_0xad63('0x9'));var querystring=require(_0xad63('0xf'));var Papa=require(_0xad63('0x10'));var Redis=require(_0xad63('0x11'));var authService=require(_0xad63('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xad63('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xad63('0x14'))(_0xad63('0x15'));var utils=require(_0xad63('0x16'));var config=require(_0xad63('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xad63('0x18'))['db'];config['redis']=_[_0xad63('0x19')](config['redis'],{'host':_0xad63('0x1a'),'port':0x18eb});var socket=require(_0xad63('0x1b'))(new Redis(config[_0xad63('0x1c')]));require(_0xad63('0x1d'))[_0xad63('0x1e')](socket);function respondWithStatusCode(_0x4944fa,_0x27b859){_0x27b859=_0x27b859||0xcc;return function(_0xafe3b9){if(_0xafe3b9){return _0x4944fa['sendStatus'](_0x27b859);}return _0x4944fa[_0xad63('0x1f')](_0x27b859)[_0xad63('0x20')]();};}function respondWithResult(_0x770869,_0x4c80d3){_0x4c80d3=_0x4c80d3||0xc8;return function(_0xcc533){if(_0xcc533){return _0x770869[_0xad63('0x1f')](_0x4c80d3)['json'](_0xcc533);}};}function respondWithFilteredResult(_0x18d04d,_0x5a260d){return function(_0x1457dc){if(_0x1457dc){var _0x32f70e=typeof _0x5a260d[_0xad63('0x21')]==='undefined'&&typeof _0x5a260d[_0xad63('0x22')]===_0xad63('0x23');var _0x1ecfef=_0x1457dc['count'];var _0x4d3356=_0x32f70e?0x0:_0x5a260d['offset'];var _0x196ef8=_0x32f70e?_0x1457dc[_0xad63('0x24')]:_0x5a260d[_0xad63('0x21')]+_0x5a260d['limit'];var _0x1be5ae;if(_0x196ef8>=_0x1ecfef){_0x196ef8=_0x1ecfef;_0x1be5ae=0xc8;}else{_0x1be5ae=0xce;}_0x18d04d[_0xad63('0x1f')](_0x1be5ae);return _0x18d04d[_0xad63('0x25')]('Content-Range',_0x4d3356+'-'+_0x196ef8+'/'+_0x1ecfef)[_0xad63('0x26')](_0x1457dc);}return null;};}function patchUpdates(_0x19e0f1){return function(_0x49a720){try{jsonpatch['apply'](_0x49a720,_0x19e0f1,!![]);}catch(_0x39de11){return BPromise[_0xad63('0x27')](_0x39de11);}return _0x49a720[_0xad63('0x28')]();};}function saveUpdates(_0x4241e2,_0x47d63c){return function(_0x5a1b96){if(_0x5a1b96){return _0x5a1b96['update'](_0x4241e2)[_0xad63('0x29')](function(_0x18de42){return _0x18de42;});}return null;};}function removeEntity(_0x1ec590,_0x3d0e36){return function(_0x103790){if(_0x103790){return _0x103790[_0xad63('0x2a')]()['then'](function(){_0x1ec590[_0xad63('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b4ea0,_0x14e291){return function(_0x3ffd77){if(!_0x3ffd77){_0x4b4ea0[_0xad63('0x2b')](0x194);}return _0x3ffd77;};}function handleError(_0x1c3ebc,_0x1d843b){_0x1d843b=_0x1d843b||0x1f4;return function(_0x56aa15){logger[_0xad63('0x2c')](_0x56aa15[_0xad63('0x2d')]);if(_0x56aa15[_0xad63('0x2e')]){delete _0x56aa15[_0xad63('0x2e')];}_0x1c3ebc[_0xad63('0x1f')](_0x1d843b)[_0xad63('0x2f')](_0x56aa15);};}exports[_0xad63('0x30')]=function(_0x5793c5,_0x3ee7f5,_0x205f40){if(!_0x5793c5[_0xad63('0x31')][_0xad63('0x32')]('text')&&!_0x5793c5[_0xad63('0x31')][_0xad63('0x32')](_0xad63('0x33'))){throw new db[(_0xad63('0x34'))][(_0xad63('0x35'))](_0xad63('0x36'));}else{if(_0x5793c5[_0xad63('0x31')][_0xad63('0x32')]('TemplateId')&&!_0x5793c5[_0xad63('0x31')][_0xad63('0x32')](_0xad63('0x37'))){throw new db['Sequelize'][(_0xad63('0x35'))](_0xad63('0x38'));}if(!_0x5793c5[_0xad63('0x31')][_0xad63('0x32')]('recipients')){throw new db[(_0xad63('0x34'))]['ValidationError'](_0xad63('0x39'));}else{try{var _0x3ee474=JSON['parse'](_0x5793c5[_0xad63('0x31')][_0xad63('0x3a')]);}catch(_0x1a59cd){logger[_0xad63('0x2c')](_0x1a59cd);throw new db[(_0xad63('0x34'))]['ValidationError'](_0xad63('0x3b'));}var _0x4998a4=['chatqueue',_0xad63('0x3c'),'mailqueue',_0xad63('0x3d'),'smsqueue','voicequeue','whatsappqueue',_0xad63('0x3e'),_0xad63('0x3f')];if(_['some'](_0x3ee474,function(_0x4c655f){return!_[_0xad63('0x40')](_0x4998a4,_0x4c655f[_0xad63('0x41')][_0xad63('0x42')]());})){throw new db[(_0xad63('0x34'))][(_0xad63('0x35'))](_0xad63('0x43'));}}}var _0xac7afe={};_0xac7afe[_0xad63('0x44')]=_0x5793c5['body'][_0xad63('0x32')](_0xad63('0x44'))?_0x5793c5[_0xad63('0x31')][_0xad63('0x44')]:_0x5793c5[_0xad63('0x3f')][_0xad63('0x45')];_0xac7afe[_0xad63('0x46')]=_['isEmpty'](_0x5793c5[_0xad63('0x31')][_0xad63('0x46')])?null:_0x5793c5['body']['recipientsDescription'];_0xac7afe[_0xad63('0x47')]=_0x5793c5[_0xad63('0x31')][_0xad63('0x47')]||![];_0xac7afe['SenderId']=_0x5793c5[_0xad63('0x3f')]['id'];return getContent(_0x5793c5['body'])['then'](function(_0x27fb58){_0xac7afe['body']=_0x27fb58;return getRecipients(_0x3ee474);})['then'](function(_0x32a491){_0xac7afe[_0xad63('0x48')]=_[_0xad63('0x49')](_0x32a491)[_0xad63('0x4a')](',');return db[_0xad63('0x4b')]['transaction'](function(_0x5927f3){return db['UserNotification'][_0xad63('0x4c')](_0xac7afe,{'raw':!![],'transaction':_0x5927f3})[_0xad63('0x29')](function(_0x50b201){var _0x40f7d5={'sender':_0xac7afe['senderName'],'description':_0xac7afe['recipientsDescription'],'content':_0xac7afe['body'],'beep':_0xac7afe[_0xad63('0x47')]};_0x32a491[_0xad63('0x4d')](function(_0x5ac63f){_0x40f7d5[_0xad63('0x4e')]=_0x5ac63f;socket[_0xad63('0x4f')]('userNotification:send',_0x40f7d5);});return _0x50b201;});});})['then'](respondWithResult(_0x3ee7f5,0xc9))['catch'](handleError(_0x3ee7f5,null));};function getContent(_0x2e13c6){return new BPromise(function(_0x3c5adb,_0x8c2406){if(_0x2e13c6['text']){_0x3c5adb(_0x2e13c6['text']);return;}return db['Template'][_0xad63('0x50')]({'attributes':[_0xad63('0x51')],'where':{'id':_0x2e13c6[_0xad63('0x33')]},'raw':!![]})['then'](function(_0x381340){if(!_0x381340)throw new db[(_0xad63('0x34'))][(_0xad63('0x35'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x45898c=Mustache[_0xad63('0x52')](_0x381340['html'],_0x2e13c6[_0xad63('0x37')]);_0x3c5adb(_0x45898c);})[_0xad63('0x53')](function(_0x53d033){_0x8c2406(_0x53d033);});});}function getRecipients(_0x1d0639){return new BPromise(function(_0xeac30f,_0x51355d){var _0x30dbfb=[];var _0x49d133=[];_0x1d0639[_0xad63('0x4d')](function(_0x446b4b){var _0x351d17=_[_0xad63('0x54')](_0x446b4b[_0xad63('0x41')][_0xad63('0x42')]());if(_0x351d17===_0xad63('0x55')){_0x30dbfb=_['union'](_0x30dbfb,_0x446b4b['ids']);}else{if(_[_0xad63('0x40')](_0x351d17,_0xad63('0x56')))_0x351d17=_0x351d17[_0xad63('0x57')](_0xad63('0x56'),_0xad63('0x58'));_0x446b4b[_0xad63('0x59')]['forEach'](function(_0x4ca876){_0x49d133['push'](getAgents(_0x351d17,_0x4ca876));});}});return BPromise[_0xad63('0x5a')](_0x49d133)['then'](function(_0x32361){_0x30dbfb=_[_0xad63('0x5b')](_0x30dbfb,_[_0xad63('0x5c')](_0x32361));_0xeac30f(_0x30dbfb);})['catch'](function(_0x826181){_0x51355d(_0x826181);});});}function getAgents(_0x4949c7,_0x408759){return new BPromise(function(_0x4f5852,_0x2aae6a){return db[_0x4949c7]['findOne']({'where':{'id':_0x408759}})[_0xad63('0x29')](function(_0x2a4320){return _0x2a4320[_0xad63('0x5d')]({'attributes':['id'],'raw':!![]})['then'](function(_0x8b445e){var _0x6c01d=_[_0xad63('0x5e')](_0x8b445e,'id');_0x4f5852(_0x6c01d);});})[_0xad63('0x53')](function(_0x21f5a2){_0x2aae6a(_0x21f5a2);});});}
\ No newline at end of file
+var _0xb36a=['text','TemplateId','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','recipients','Sequelize','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','smsqueue','voicequeue','team','user','some','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','transaction','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','view','startCase','model','union','ids','queue','replace','Queue','push','flatten','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','count','limit','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','stack','name','sendUserNotification','body','hasOwnProperty'];(function(_0x1f239e,_0x367b43){var _0x826971=function(_0x2c5777){while(--_0x2c5777){_0x1f239e['push'](_0x1f239e['shift']());}};_0x826971(++_0x367b43);}(_0xb36a,0xee));var _0xab36=function(_0x129393,_0x1739f6){_0x129393=_0x129393-0x0;var _0x236e26=_0xb36a[_0x129393];return _0x236e26;};'use strict';var emlformat=require(_0xab36('0x0'));var rimraf=require(_0xab36('0x1'));var zipdir=require(_0xab36('0x2'));var jsonpatch=require(_0xab36('0x3'));var rp=require(_0xab36('0x4'));var moment=require(_0xab36('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xab36('0x6'));var path=require(_0xab36('0x7'));var sox=require(_0xab36('0x8'));var csv=require(_0xab36('0x9'));var ejs=require(_0xab36('0xa'));var fs=require('fs');var fs_extra=require(_0xab36('0xb'));var _=require(_0xab36('0xc'));var squel=require('squel');var crypto=require(_0xab36('0xd'));var jsforce=require(_0xab36('0xe'));var deskjs=require(_0xab36('0xf'));var toCsv=require(_0xab36('0x9'));var querystring=require('querystring');var Papa=require(_0xab36('0x10'));var Redis=require(_0xab36('0x11'));var authService=require(_0xab36('0x12'));var qs=require(_0xab36('0x13'));var as=require(_0xab36('0x14'));var hardwareService=require(_0xab36('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xab36('0x16'));var config=require(_0xab36('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xab36('0x18'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x404e1b,_0x4fa9d9){_0x4fa9d9=_0x4fa9d9||0xcc;return function(_0x3fee89){if(_0x3fee89){return _0x404e1b['sendStatus'](_0x4fa9d9);}return _0x404e1b[_0xab36('0x19')](_0x4fa9d9)[_0xab36('0x1a')]();};}function respondWithResult(_0x234781,_0x527c3d){_0x527c3d=_0x527c3d||0xc8;return function(_0x4b40f0){if(_0x4b40f0){return _0x234781[_0xab36('0x19')](_0x527c3d)['json'](_0x4b40f0);}};}function respondWithFilteredResult(_0x5555cb,_0x2a555a){return function(_0x1baf69){if(_0x1baf69){var _0xdfc98d=typeof _0x2a555a[_0xab36('0x1b')]==='undefined'&&typeof _0x2a555a['limit']==='undefined';var _0x3c3f16=_0x1baf69[_0xab36('0x1c')];var _0x20832b=_0xdfc98d?0x0:_0x2a555a[_0xab36('0x1b')];var _0x2866d6=_0xdfc98d?_0x1baf69['count']:_0x2a555a[_0xab36('0x1b')]+_0x2a555a[_0xab36('0x1d')];var _0x2bd099;if(_0x2866d6>=_0x3c3f16){_0x2866d6=_0x3c3f16;_0x2bd099=0xc8;}else{_0x2bd099=0xce;}_0x5555cb[_0xab36('0x19')](_0x2bd099);return _0x5555cb[_0xab36('0x1e')](_0xab36('0x1f'),_0x20832b+'-'+_0x2866d6+'/'+_0x3c3f16)[_0xab36('0x20')](_0x1baf69);}return null;};}function patchUpdates(_0x14fd01){return function(_0x5bf0c7){try{jsonpatch[_0xab36('0x21')](_0x5bf0c7,_0x14fd01,!![]);}catch(_0x388367){return BPromise[_0xab36('0x22')](_0x388367);}return _0x5bf0c7[_0xab36('0x23')]();};}function saveUpdates(_0x299ffc,_0x4e2088){return function(_0x3a3a25){if(_0x3a3a25){return _0x3a3a25['update'](_0x299ffc)[_0xab36('0x24')](function(_0x2bc82b){return _0x2bc82b;});}return null;};}function removeEntity(_0x593a1b,_0x667701){return function(_0x5b4145){if(_0x5b4145){return _0x5b4145[_0xab36('0x25')]()['then'](function(){_0x593a1b['status'](0xcc)[_0xab36('0x1a')]();});}};}function handleEntityNotFound(_0x1c46bc,_0x46f795){return function(_0x5cdc8e){if(!_0x5cdc8e){_0x1c46bc[_0xab36('0x26')](0x194);}return _0x5cdc8e;};}function handleError(_0x54fd08,_0x23e221){_0x23e221=_0x23e221||0x1f4;return function(_0x2695dc){logger['error'](_0x2695dc[_0xab36('0x27')]);if(_0x2695dc['name']){delete _0x2695dc[_0xab36('0x28')];}_0x54fd08['status'](_0x23e221)['send'](_0x2695dc);};}exports[_0xab36('0x29')]=function(_0x115cba,_0x9accad,_0x4aaa4e){if(!_0x115cba[_0xab36('0x2a')][_0xab36('0x2b')](_0xab36('0x2c'))&&!_0x115cba['body'][_0xab36('0x2b')](_0xab36('0x2d'))){throw new db['Sequelize'][(_0xab36('0x2e'))](_0xab36('0x2f'));}else{if(_0x115cba[_0xab36('0x2a')][_0xab36('0x2b')](_0xab36('0x2d'))&&!_0x115cba[_0xab36('0x2a')]['hasOwnProperty']('view')){throw new db['Sequelize'][(_0xab36('0x2e'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x115cba[_0xab36('0x2a')]['hasOwnProperty'](_0xab36('0x30'))){throw new db[(_0xab36('0x31'))][(_0xab36('0x2e'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x4b4368=JSON[_0xab36('0x32')](_0x115cba[_0xab36('0x2a')][_0xab36('0x30')]);}catch(_0x4b84d7){logger['error'](_0x4b84d7);throw new db[(_0xab36('0x31'))][(_0xab36('0x2e'))](_0xab36('0x33'));}var _0x299f07=[_0xab36('0x34'),_0xab36('0x35'),'mailqueue',_0xab36('0x36'),_0xab36('0x37'),_0xab36('0x38'),'whatsappqueue',_0xab36('0x39'),_0xab36('0x3a')];if(_[_0xab36('0x3b')](_0x4b4368,function(_0x178394){return!_[_0xab36('0x3c')](_0x299f07,_0x178394['model'][_0xab36('0x3d')]());})){throw new db[(_0xab36('0x31'))][(_0xab36('0x2e'))](_0xab36('0x3e'));}}}var _0x22f102={};_0x22f102['senderName']=_0x115cba[_0xab36('0x2a')][_0xab36('0x2b')](_0xab36('0x3f'))?_0x115cba[_0xab36('0x2a')]['senderName']:_0x115cba['user']['fullname'];_0x22f102[_0xab36('0x40')]=_[_0xab36('0x41')](_0x115cba[_0xab36('0x2a')][_0xab36('0x40')])?null:_0x115cba[_0xab36('0x2a')][_0xab36('0x40')];_0x22f102[_0xab36('0x42')]=_0x115cba[_0xab36('0x2a')][_0xab36('0x42')]||![];_0x22f102[_0xab36('0x43')]=_0x115cba[_0xab36('0x3a')]['id'];return getContent(_0x115cba[_0xab36('0x2a')])[_0xab36('0x24')](function(_0x2a267a){_0x22f102[_0xab36('0x2a')]=_0x2a267a;return getRecipients(_0x4b4368);})['then'](function(_0x51153c){_0x22f102[_0xab36('0x44')]=_[_0xab36('0x45')](_0x51153c)[_0xab36('0x46')](',');return db['sequelize'][_0xab36('0x47')](function(_0x5a02ed){return db['UserNotification']['create'](_0x22f102,{'raw':!![],'transaction':_0x5a02ed})[_0xab36('0x24')](function(_0x3aa62e){var _0x3a0fdd={'sender':_0x22f102[_0xab36('0x3f')],'description':_0x22f102[_0xab36('0x40')],'content':_0x22f102[_0xab36('0x2a')],'beep':_0x22f102[_0xab36('0x42')]};_0x51153c[_0xab36('0x48')](function(_0x2ca9e5){_0x3a0fdd[_0xab36('0x49')]=_0x2ca9e5;socket[_0xab36('0x4a')](_0xab36('0x4b'),_0x3a0fdd);});return _0x3aa62e;});});})['then'](respondWithResult(_0x9accad,0xc9))[_0xab36('0x4c')](handleError(_0x9accad,null));};function getContent(_0x437fc2){return new BPromise(function(_0x3dd5cd,_0x464d9c){if(_0x437fc2[_0xab36('0x2c')]){_0x3dd5cd(_0x437fc2[_0xab36('0x2c')]);return;}return db[_0xab36('0x4d')][_0xab36('0x4e')]({'attributes':[_0xab36('0x4f')],'where':{'id':_0x437fc2[_0xab36('0x2d')]},'raw':!![]})[_0xab36('0x24')](function(_0x44f4b5){if(!_0x44f4b5)throw new db[(_0xab36('0x31'))][(_0xab36('0x2e'))](_0xab36('0x50'));var _0x96676=Mustache[_0xab36('0x51')](_0x44f4b5[_0xab36('0x4f')],_0x437fc2[_0xab36('0x52')]);_0x3dd5cd(_0x96676);})[_0xab36('0x4c')](function(_0x445418){_0x464d9c(_0x445418);});});}function getRecipients(_0x3d8674){return new BPromise(function(_0x81177e,_0x507db8){var _0x3be869=[];var _0x283a92=[];_0x3d8674['forEach'](function(_0x45c3c5){var _0x465d51=_[_0xab36('0x53')](_0x45c3c5[_0xab36('0x54')][_0xab36('0x3d')]());if(_0x465d51==='User'){_0x3be869=_[_0xab36('0x55')](_0x3be869,_0x45c3c5[_0xab36('0x56')]);}else{if(_['includes'](_0x465d51,_0xab36('0x57')))_0x465d51=_0x465d51[_0xab36('0x58')](_0xab36('0x57'),_0xab36('0x59'));_0x45c3c5[_0xab36('0x56')][_0xab36('0x48')](function(_0xf8adf3){_0x283a92[_0xab36('0x5a')](getAgents(_0x465d51,_0xf8adf3));});}});return BPromise['all'](_0x283a92)[_0xab36('0x24')](function(_0x1f7386){_0x3be869=_[_0xab36('0x55')](_0x3be869,_[_0xab36('0x5b')](_0x1f7386));_0x81177e(_0x3be869);})[_0xab36('0x4c')](function(_0x2bba14){_0x507db8(_0x2bba14);});});}function getAgents(_0x98890d,_0x223465){return new BPromise(function(_0x258942,_0x39d33f){return db[_0x98890d]['findOne']({'where':{'id':_0x223465}})['then'](function(_0x26bbac){return _0x26bbac[_0xab36('0x5c')]({'attributes':['id'],'raw':!![]})[_0xab36('0x24')](function(_0xbfd39b){var _0x1e6d42=_[_0xab36('0x5d')](_0xbfd39b,'id');_0x258942(_0x1e6d42);});})[_0xab36('0x4c')](function(_0x17f38b){_0x39d33f(_0x17f38b);});});}
\ No newline at end of file
index 076d05c..0ac9116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x929a=['UserNotification','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0x929a,0x1b6));var _0xa929=function(_0x3d6459,_0xd17c39){_0x3d6459=_0x3d6459-0x0;var _0x359d36=_0x929a[_0x3d6459];return _0x359d36;};'use strict';var EventEmitter=require(_0xa929('0x0'));var UserNotification=require(_0xa929('0x1'))['db'][_0xa929('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xa929('0x3')](0x0);var events={'afterCreate':_0xa929('0x4'),'afterUpdate':_0xa929('0x5'),'afterDestroy':_0xa929('0x6')};function emitEvent(_0x216867){return function(_0x1d6a20,_0x24be3d,_0x42c140){UserNotificationEvents[_0xa929('0x7')](_0x216867+':'+_0x1d6a20['id'],_0x1d6a20);UserNotificationEvents[_0xa929('0x7')](_0x216867,_0x1d6a20);_0x42c140(null);};}for(var e in events){if(events[_0xa929('0x8')](e)){var event=events[e];UserNotification[_0xa929('0x9')](e,emitEvent(event));}}module[_0xa929('0xa')]=UserNotificationEvents;
\ No newline at end of file
+var _0x6b57=['hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','update','remove','emit'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x6b57,0xf2));var _0x76b5=function(_0x39e1c1,_0x32f618){_0x39e1c1=_0x39e1c1-0x0;var _0x520ae5=_0x6b57[_0x39e1c1];return _0x520ae5;};'use strict';var EventEmitter=require(_0x76b5('0x0'));var UserNotification=require(_0x76b5('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x76b5('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x76b5('0x3'),'afterDestroy':_0x76b5('0x4')};function emitEvent(_0x418823){return function(_0x4644ab,_0x48f8a8,_0x2cf87b){UserNotificationEvents[_0x76b5('0x5')](_0x418823+':'+_0x4644ab['id'],_0x4644ab);UserNotificationEvents['emit'](_0x418823,_0x4644ab);_0x2cf87b(null);};}for(var e in events){if(events[_0x76b5('0x6')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x76b5('0x7')]=UserNotificationEvents;
\ No newline at end of file
index 6f15084..f87d8e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ed=['UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','define'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0xf8ed,0x1d8));var _0xdf8e=function(_0x53b3ff,_0x394b92){_0x53b3ff=_0x53b3ff-0x0;var _0x3ad491=_0xf8ed[_0x53b3ff];return _0x3ad491;};'use strict';var _=require(_0xdf8e('0x0'));var util=require(_0xdf8e('0x1'));var logger=require(_0xdf8e('0x2'))('api');var moment=require(_0xdf8e('0x3'));var BPromise=require(_0xdf8e('0x4'));var rp=require(_0xdf8e('0x5'));var fs=require('fs');var path=require(_0xdf8e('0x6'));var rimraf=require('rimraf');var config=require(_0xdf8e('0x7'));var attributes=require('./userNotification.attributes');module['exports']=function(_0x441fed,_0x4a1e5f){return _0x441fed[_0xdf8e('0x8')](_0xdf8e('0x9'),attributes,{'tableName':_0xdf8e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdf8e('0xb'),'collate':_0xdf8e('0xc')});};
\ No newline at end of file
+var _0x5111=['utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','path','./userNotification.attributes','define','UserNotification'];(function(_0xe54be5,_0x460f8c){var _0x511bb2=function(_0x3aab92){while(--_0x3aab92){_0xe54be5['push'](_0xe54be5['shift']());}};_0x511bb2(++_0x460f8c);}(_0x5111,0xc9));var _0x1511=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5111[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var util=require(_0x1511('0x0'));var logger=require(_0x1511('0x1'))(_0x1511('0x2'));var moment=require(_0x1511('0x3'));var BPromise=require(_0x1511('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1511('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1511('0x6'));module['exports']=function(_0xf7938,_0x1ea0b2){return _0xf7938[_0x1511('0x7')](_0x1511('0x8'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x1511('0x9')});};
\ No newline at end of file
index 3720a36..8bfbee9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf1=['register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','redis','./userNotification.socket'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xfbf1,0xd7));var _0x1fbf=function(_0x5571aa,_0x313912){_0x5571aa=_0x5571aa-0x0;var _0x4a3074=_0xfbf1[_0x5571aa];return _0x4a3074;};'use strict';var _=require(_0x1fbf('0x0'));var util=require(_0x1fbf('0x1'));var moment=require(_0x1fbf('0x2'));var BPromise=require(_0x1fbf('0x3'));var rs=require(_0x1fbf('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1fbf('0x5'))['db'];var utils=require(_0x1fbf('0x6'));var logger=require(_0x1fbf('0x7'))(_0x1fbf('0x8'));var config=require(_0x1fbf('0x9'));var jayson=require(_0x1fbf('0xa'));var client=jayson[_0x1fbf('0xb')][_0x1fbf('0xc')]({'port':0x232a});config['redis']=_[_0x1fbf('0xd')](config['redis'],{'host':_0x1fbf('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1fbf('0xf')]));require(_0x1fbf('0x10'))[_0x1fbf('0x11')](socket);function respondWithRpcPromise(_0x209b27,_0x3d7777,_0x4949be){return new BPromise(function(_0x24bed1,_0x33d66d){return client[_0x1fbf('0x12')](_0x209b27,_0x4949be)[_0x1fbf('0x13')](function(_0x446656){logger[_0x1fbf('0x14')](_0x1fbf('0x15'),_0x3d7777,_0x1fbf('0x16'));logger[_0x1fbf('0x17')](_0x1fbf('0x18'),_0x3d7777,_0x1fbf('0x16'),JSON[_0x1fbf('0x19')](_0x446656));if(_0x446656[_0x1fbf('0x1a')]){if(_0x446656['error']['code']===0x1f4){logger[_0x1fbf('0x1a')](_0x1fbf('0x15'),_0x3d7777,_0x446656[_0x1fbf('0x1a')][_0x1fbf('0x1b')]);return _0x33d66d(_0x446656['error'][_0x1fbf('0x1b')]);}logger[_0x1fbf('0x1a')](_0x1fbf('0x15'),_0x3d7777,_0x446656[_0x1fbf('0x1a')]['message']);return _0x24bed1(_0x446656['error'][_0x1fbf('0x1b')]);}else{logger['info'](_0x1fbf('0x15'),_0x3d7777,'request\x20sent');_0x24bed1(_0x446656[_0x1fbf('0x1c')][_0x1fbf('0x1b')]);}})['catch'](function(_0x1547ee){logger[_0x1fbf('0x1a')](_0x1fbf('0x15'),_0x3d7777,_0x1547ee);_0x33d66d(_0x1547ee);});});}
\ No newline at end of file
+var _0xa1f0=['../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa1f0,0x1ad));var _0x0a1f=function(_0x1fc6a6,_0x1d28e7){_0x1fc6a6=_0x1fc6a6-0x0;var _0x30936f=_0xa1f0[_0x1fc6a6];return _0x30936f;};'use strict';var _=require(_0x0a1f('0x0'));var util=require(_0x0a1f('0x1'));var moment=require(_0x0a1f('0x2'));var BPromise=require(_0x0a1f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a1f('0x4'));var db=require(_0x0a1f('0x5'))['db'];var utils=require(_0x0a1f('0x6'));var logger=require(_0x0a1f('0x7'))('rpc');var config=require(_0x0a1f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a1f('0x9')][_0x0a1f('0xa')]({'port':0x232a});config[_0x0a1f('0xb')]=_[_0x0a1f('0xc')](config['redis'],{'host':_0x0a1f('0xd'),'port':0x18eb});var socket=require(_0x0a1f('0xe'))(new Redis(config['redis']));require(_0x0a1f('0xf'))[_0x0a1f('0x10')](socket);function respondWithRpcPromise(_0x106f1c,_0x3fd812,_0x35ad0e){return new BPromise(function(_0x1bde34,_0x2bef63){return client['request'](_0x106f1c,_0x35ad0e)[_0x0a1f('0x11')](function(_0x46d14d){logger[_0x0a1f('0x12')](_0x0a1f('0x13'),_0x3fd812,_0x0a1f('0x14'));logger[_0x0a1f('0x15')](_0x0a1f('0x16'),_0x3fd812,_0x0a1f('0x14'),JSON[_0x0a1f('0x17')](_0x46d14d));if(_0x46d14d['error']){if(_0x46d14d[_0x0a1f('0x18')][_0x0a1f('0x19')]===0x1f4){logger[_0x0a1f('0x18')](_0x0a1f('0x13'),_0x3fd812,_0x46d14d['error']['message']);return _0x2bef63(_0x46d14d[_0x0a1f('0x18')]['message']);}logger[_0x0a1f('0x18')](_0x0a1f('0x13'),_0x3fd812,_0x46d14d['error'][_0x0a1f('0x1a')]);return _0x1bde34(_0x46d14d[_0x0a1f('0x18')]['message']);}else{logger[_0x0a1f('0x12')](_0x0a1f('0x13'),_0x3fd812,_0x0a1f('0x14'));_0x1bde34(_0x46d14d[_0x0a1f('0x1b')][_0x0a1f('0x1a')]);}})[_0x0a1f('0x1c')](function(_0x2b4733){logger['error'](_0x0a1f('0x13'),_0x3fd812,_0x2b4733);_0x2bef63(_0x2b4733);});});}
\ No newline at end of file
index 08ce15a..d1cc87a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ac=['register','length','userNotification:','./userNotification.events'];(function(_0x423eba,_0xb6826c){var _0x138f29=function(_0x22e9e3){while(--_0x22e9e3){_0x423eba['push'](_0x423eba['shift']());}};_0x138f29(++_0xb6826c);}(_0x73ac,0xdf));var _0xc73a=function(_0x2325bf,_0x5b6383){_0x2325bf=_0x2325bf-0x0;var _0x586680=_0x73ac[_0x2325bf];return _0x586680;};'use strict';var UserNotificationEvents=require(_0xc73a('0x0'));var events=['save','remove','update'];function createListener(_0x78a58a,_0x416a0d){return function(_0xc89202){_0x416a0d['emit'](_0x78a58a,_0xc89202);};}function removeListener(_0x4aa969,_0x1f1f5d){return function(){UserNotificationEvents['removeListener'](_0x4aa969,_0x1f1f5d);};}exports[_0xc73a('0x1')]=function(_0x56859f){for(var _0x16278a=0x0,_0x1ad9d4=events[_0xc73a('0x2')];_0x16278a<_0x1ad9d4;_0x16278a++){var _0x5b724a=events[_0x16278a];var _0x531072=createListener(_0xc73a('0x3')+_0x5b724a,_0x56859f);UserNotificationEvents['on'](_0x5b724a,_0x531072);}};
\ No newline at end of file
+var _0x58c8=['emit','removeListener','register','userNotification:','./userNotification.events','save','remove','update'];(function(_0x156a0d,_0x3946ce){var _0x98a9ba=function(_0x46c1b2){while(--_0x46c1b2){_0x156a0d['push'](_0x156a0d['shift']());}};_0x98a9ba(++_0x3946ce);}(_0x58c8,0x144));var _0x858c=function(_0x35ec63,_0x15595d){_0x35ec63=_0x35ec63-0x0;var _0x39e39c=_0x58c8[_0x35ec63];return _0x39e39c;};'use strict';var UserNotificationEvents=require(_0x858c('0x0'));var events=[_0x858c('0x1'),_0x858c('0x2'),_0x858c('0x3')];function createListener(_0x34b47d,_0x2cdd37){return function(_0x420b23){_0x2cdd37[_0x858c('0x4')](_0x34b47d,_0x420b23);};}function removeListener(_0x30aa2c,_0x4ef956){return function(){UserNotificationEvents[_0x858c('0x5')](_0x30aa2c,_0x4ef956);};}exports[_0x858c('0x6')]=function(_0x507515){for(var _0x90bd51=0x0,_0x998fb=events['length'];_0x90bd51<_0x998fb;_0x90bd51++){var _0x27519a=events[_0x90bd51];var _0x292edf=createListener(_0x858c('0x7')+_0x27519a,_0x507515);UserNotificationEvents['on'](_0x27519a,_0x292edf);}};
\ No newline at end of file
index fc1951a..9cdaf74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x3246a6,_0x2a685a){var _0x1df64d=function(_0x4868ad){while(--_0x4868ad){_0x3246a6['push'](_0x3246a6['shift']());}};_0x1df64d(++_0x2a685a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x4ffbb0,_0x5b28ea){var _0xd29dd8=function(_0x568154){while(--_0x568154){_0x4ffbb0['push'](_0x4ffbb0['shift']());}};_0xd29dd8(++_0x5b28ea);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 3ae1f0f..b00cadd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58bc=['INTEGER','sequelize'];(function(_0x166742,_0x55520c){var _0xb7814a=function(_0x18feaf){while(--_0x18feaf){_0x166742['push'](_0x166742['shift']());}};_0xb7814a(++_0x55520c);}(_0x58bc,0x16f));var _0xc58b=function(_0x566c53,_0x56e339){_0x566c53=_0x566c53-0x0;var _0x32e862=_0x58bc[_0x566c53];return _0x32e862;};'use strict';var Sequelize=require(_0xc58b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xc58b('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf331=['exports','INTEGER','sequelize'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xf331,0xb0));var _0x1f33=function(_0x52c68b,_0x5b8262){_0x52c68b=_0x52c68b-0x0;var _0x14862d=_0xf331[_0x52c68b];return _0x14862d;};'use strict';var Sequelize=require(_0x1f33('0x0'));module[_0x1f33('0x1')]={'penalty':{'type':Sequelize[_0x1f33('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ad05e24..dfd75b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31cb=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserOpenchannelQueue','lodash','util','../../config/logger','api'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x31cb,0x1ac));var _0xb31c=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x31cb[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0xb31c('0x0'));var util=require(_0xb31c('0x1'));var logger=require(_0xb31c('0x2'))(_0xb31c('0x3'));var moment=require('moment');var BPromise=require(_0xb31c('0x4'));var rp=require(_0xb31c('0x5'));var fs=require('fs');var path=require(_0xb31c('0x6'));var rimraf=require(_0xb31c('0x7'));var config=require(_0xb31c('0x8'));var attributes=require('./userOpenchannelQueue.attributes');module[_0xb31c('0x9')]=function(_0x2e1068,_0x25f722){return _0x2e1068[_0xb31c('0xa')](_0xb31c('0xb'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2225=['bluebird','request-promise','path','rimraf','../../config/environment','exports','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment'];(function(_0x1ba57b,_0x1cf7a2){var _0x5f16b6=function(_0x4591e4){while(--_0x4591e4){_0x1ba57b['push'](_0x1ba57b['shift']());}};_0x5f16b6(++_0x1cf7a2);}(_0x2225,0x19b));var _0x5222=function(_0x814535,_0x59e6f1){_0x814535=_0x814535-0x0;var _0xec35f4=_0x2225[_0x814535];return _0xec35f4;};'use strict';var _=require(_0x5222('0x0'));var util=require(_0x5222('0x1'));var logger=require(_0x5222('0x2'))(_0x5222('0x3'));var moment=require(_0x5222('0x4'));var BPromise=require(_0x5222('0x5'));var rp=require(_0x5222('0x6'));var fs=require('fs');var path=require(_0x5222('0x7'));var rimraf=require(_0x5222('0x8'));var config=require(_0x5222('0x9'));var attributes=require('./userOpenchannelQueue.attributes');module[_0x5222('0xa')]=function(_0x3247d3,_0x2a4e05){return _0x3247d3['define'](_0x5222('0xb'),attributes,{'tableName':_0x5222('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 98514fd..15e944a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0904=['ioredis','../../mysqldb','../../config/environment','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x5c2263,_0x44ca91){var _0x44ca7a=function(_0x17f6e9){while(--_0x17f6e9){_0x5c2263['push'](_0x5c2263['shift']());}};_0x44ca7a(++_0x44ca91);}(_0x0904,0x18a));var _0x4090=function(_0x2211ed,_0x1bca0b){_0x2211ed=_0x2211ed-0x0;var _0x4d78cc=_0x0904[_0x2211ed];return _0x4d78cc;};'use strict';var _=require(_0x4090('0x0'));var util=require(_0x4090('0x1'));var moment=require(_0x4090('0x2'));var BPromise=require(_0x4090('0x3'));var rs=require(_0x4090('0x4'));var fs=require('fs');var Redis=require(_0x4090('0x5'));var db=require(_0x4090('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x4090('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4090('0x8')][_0x4090('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x22bd97,_0x5a3a21,_0x2b73e0){return new BPromise(function(_0x859389,_0x5cdeb8){return client[_0x4090('0xa')](_0x22bd97,_0x2b73e0)[_0x4090('0xb')](function(_0x1a63fe){logger['info'](_0x4090('0xc'),_0x5a3a21,'request\x20sent');logger[_0x4090('0xd')](_0x4090('0xe'),_0x5a3a21,'request\x20sent',JSON['stringify'](_0x1a63fe));if(_0x1a63fe[_0x4090('0xf')]){if(_0x1a63fe[_0x4090('0xf')][_0x4090('0x10')]===0x1f4){logger[_0x4090('0xf')](_0x4090('0xc'),_0x5a3a21,_0x1a63fe['error'][_0x4090('0x11')]);return _0x5cdeb8(_0x1a63fe['error'][_0x4090('0x11')]);}logger['error'](_0x4090('0xc'),_0x5a3a21,_0x1a63fe[_0x4090('0xf')]['message']);return _0x859389(_0x1a63fe[_0x4090('0xf')][_0x4090('0x11')]);}else{logger['info'](_0x4090('0xc'),_0x5a3a21,_0x4090('0x12'));_0x859389(_0x1a63fe[_0x4090('0x13')][_0x4090('0x11')]);}})[_0x4090('0x14')](function(_0x338fba){logger['error'](_0x4090('0xc'),_0x5a3a21,_0x338fba);_0x5cdeb8(_0x338fba);});});}
\ No newline at end of file
+var _0x0fd8=['info','request\x20sent','debug','stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0x0fd8,0x112));var _0x80fd=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x0fd8[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x80fd('0x0'));var util=require('util');var moment=require(_0x80fd('0x1'));var BPromise=require(_0x80fd('0x2'));var rs=require(_0x80fd('0x3'));var fs=require('fs');var Redis=require(_0x80fd('0x4'));var db=require(_0x80fd('0x5'))['db'];var utils=require(_0x80fd('0x6'));var logger=require(_0x80fd('0x7'))(_0x80fd('0x8'));var config=require('../../config/environment');var jayson=require(_0x80fd('0x9'));var client=jayson[_0x80fd('0xa')][_0x80fd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3a3504,_0xe5aa8a,_0x182ba1){return new BPromise(function(_0x125595,_0x5c36c9){return client[_0x80fd('0xc')](_0x3a3504,_0x182ba1)[_0x80fd('0xd')](function(_0x31242d){logger[_0x80fd('0xe')]('UserOpenchannelQueue,\x20%s,\x20%s',_0xe5aa8a,_0x80fd('0xf'));logger[_0x80fd('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0xe5aa8a,_0x80fd('0xf'),JSON[_0x80fd('0x11')](_0x31242d));if(_0x31242d['error']){if(_0x31242d[_0x80fd('0x12')][_0x80fd('0x13')]===0x1f4){logger[_0x80fd('0x12')](_0x80fd('0x14'),_0xe5aa8a,_0x31242d[_0x80fd('0x12')][_0x80fd('0x15')]);return _0x5c36c9(_0x31242d[_0x80fd('0x12')][_0x80fd('0x15')]);}logger[_0x80fd('0x12')](_0x80fd('0x14'),_0xe5aa8a,_0x31242d[_0x80fd('0x12')][_0x80fd('0x15')]);return _0x125595(_0x31242d[_0x80fd('0x12')][_0x80fd('0x15')]);}else{logger[_0x80fd('0xe')](_0x80fd('0x14'),_0xe5aa8a,_0x80fd('0xf'));_0x125595(_0x31242d[_0x80fd('0x16')][_0x80fd('0x15')]);}})[_0x80fd('0x17')](function(_0x33bc8d){logger['error'](_0x80fd('0x14'),_0xe5aa8a,_0x33bc8d);_0x5c36c9(_0x33bc8d);});});}
\ No newline at end of file
index 10a03f8..6ddac62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d67=['create','post','clone','addResources','put','/:id','delete','removeResources','exports','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','index','/describe','describe','isAuthenticated','show','/:id/sections','getSections','/:id/resources','getResources'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x3d67,0x11c));var _0x73d6=function(_0x49e113,_0x188eaa){_0x49e113=_0x49e113-0x0;var _0x549e04=_0x3d67[_0x49e113];return _0x549e04;};'use strict';var multer=require('multer');var util=require(_0x73d6('0x0'));var path=require(_0x73d6('0x1'));var timeout=require(_0x73d6('0x2'));var express=require('express');var router=express[_0x73d6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x73d6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x73d6('0x5'));var controller=require('./userProfile.controller');router[_0x73d6('0x6')]('/',auth['isAuthenticated'](),controller[_0x73d6('0x7')]);router[_0x73d6('0x6')](_0x73d6('0x8'),auth['isAuthenticated'](),controller[_0x73d6('0x9')]);router[_0x73d6('0x6')]('/:id',auth[_0x73d6('0xa')](),controller[_0x73d6('0xb')]);router[_0x73d6('0x6')](_0x73d6('0xc'),auth[_0x73d6('0xa')](),controller[_0x73d6('0xd')]);router[_0x73d6('0x6')](_0x73d6('0xe'),auth[_0x73d6('0xa')](),controller[_0x73d6('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x73d6('0x10')]);router[_0x73d6('0x11')]('/:id/clone',auth[_0x73d6('0xa')](),controller[_0x73d6('0x12')]);router[_0x73d6('0x11')](_0x73d6('0xc'),auth[_0x73d6('0xa')](),controller['addSections']);router[_0x73d6('0x11')](_0x73d6('0xe'),auth[_0x73d6('0xa')](),controller[_0x73d6('0x13')]);router[_0x73d6('0x14')](_0x73d6('0x15'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x73d6('0x15'),auth['isAuthenticated'](),controller['destroy']);router[_0x73d6('0x16')]('/:id/sections',auth['isAuthenticated'](),controller['removeSections']);router['delete']('/:id/resources',auth[_0x73d6('0xa')](),controller[_0x73d6('0x17')]);module[_0x73d6('0x18')]=router;
\ No newline at end of file
+var _0x0560=['/:id','update','delete','destroy','removeResources','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','index','/describe','isAuthenticated','show','/:id/sections','getSections','/:id/resources','getResources','post','create','/:id/clone','clone','addSections','addResources','put'];(function(_0x59f5a6,_0x22e5fe){var _0x824ffa=function(_0x283d79){while(--_0x283d79){_0x59f5a6['push'](_0x59f5a6['shift']());}};_0x824ffa(++_0x22e5fe);}(_0x0560,0x82));var _0x0056=function(_0x362570,_0x19c15b){_0x362570=_0x362570-0x0;var _0x6adfad=_0x0560[_0x362570];return _0x6adfad;};'use strict';var multer=require(_0x0056('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x0056('0x1'));var express=require(_0x0056('0x2'));var router=express[_0x0056('0x3')]();var fs_extra=require(_0x0056('0x4'));var auth=require(_0x0056('0x5'));var interaction=require(_0x0056('0x6'));var config=require(_0x0056('0x7'));var controller=require(_0x0056('0x8'));router[_0x0056('0x9')]('/',auth['isAuthenticated'](),controller[_0x0056('0xa')]);router[_0x0056('0x9')](_0x0056('0xb'),auth[_0x0056('0xc')](),controller['describe']);router[_0x0056('0x9')]('/:id',auth[_0x0056('0xc')](),controller[_0x0056('0xd')]);router[_0x0056('0x9')](_0x0056('0xe'),auth[_0x0056('0xc')](),controller[_0x0056('0xf')]);router[_0x0056('0x9')](_0x0056('0x10'),auth['isAuthenticated'](),controller[_0x0056('0x11')]);router[_0x0056('0x12')]('/',auth['isAuthenticated'](),controller[_0x0056('0x13')]);router['post'](_0x0056('0x14'),auth[_0x0056('0xc')](),controller[_0x0056('0x15')]);router[_0x0056('0x12')](_0x0056('0xe'),auth[_0x0056('0xc')](),controller[_0x0056('0x16')]);router[_0x0056('0x12')](_0x0056('0x10'),auth[_0x0056('0xc')](),controller[_0x0056('0x17')]);router[_0x0056('0x18')](_0x0056('0x19'),auth[_0x0056('0xc')](),controller[_0x0056('0x1a')]);router[_0x0056('0x1b')](_0x0056('0x19'),auth[_0x0056('0xc')](),controller[_0x0056('0x1c')]);router[_0x0056('0x1b')](_0x0056('0xe'),auth[_0x0056('0xc')](),controller['removeSections']);router[_0x0056('0x1b')](_0x0056('0x10'),auth['isAuthenticated'](),controller[_0x0056('0x1d')]);module[_0x0056('0x1e')]=router;
\ No newline at end of file
index 7eadc0b..850ec6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x172f=['STRING','crudPermissions','getDataValue','split','BOOLEAN','sequelize'];(function(_0x438ebc,_0x49ad59){var _0x2c2fd7=function(_0x53d3ca){while(--_0x53d3ca){_0x438ebc['push'](_0x438ebc['shift']());}};_0x2c2fd7(++_0x49ad59);}(_0x172f,0x8f));var _0xf172=function(_0x8cd894,_0x13101f){_0x8cd894=_0x8cd894-0x0;var _0x2d5a42=_0x172f[_0x8cd894];return _0x2d5a42;};'use strict';var Sequelize=require(_0xf172('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xf172('0x1')],'set':function(_0x64a069){this['setDataValue'](_0xf172('0x2'),_0x64a069?_0x64a069['join'](''):[]);},'get':function(){return this[_0xf172('0x3')](_0xf172('0x2'))?this[_0xf172('0x3')](_0xf172('0x2'))[_0xf172('0x4')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xf172('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xf172('0x5')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xf172('0x5')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xf172('0x5')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xf172('0x5')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xf172('0x5')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xf172('0x5')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1013=['exports','STRING','name','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x40e49e,_0x393377){var _0x3ea6d3=function(_0xd82287){while(--_0xd82287){_0x40e49e['push'](_0x40e49e['shift']());}};_0x3ea6d3(++_0x393377);}(_0x1013,0x9f));var _0x3101=function(_0x5372a6,_0x37bb81){_0x5372a6=_0x5372a6-0x0;var _0x1f9a22=_0x1013[_0x5372a6];return _0x1f9a22;};'use strict';var Sequelize=require(_0x3101('0x0'));module[_0x3101('0x1')]={'name':{'type':Sequelize[_0x3101('0x2')],'allowNull':![],'unique':_0x3101('0x3')},'crudPermissions':{'type':Sequelize[_0x3101('0x2')],'set':function(_0x44d912){this[_0x3101('0x4')](_0x3101('0x5'),_0x44d912?_0x44d912[_0x3101('0x6')](''):[]);},'get':function(){return this[_0x3101('0x7')](_0x3101('0x5'))?this[_0x3101('0x7')]('crudPermissions')[_0x3101('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x3101('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x3101('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x3101('0x9')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x3101('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x3101('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x3101('0x9')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x3101('0x9')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x3101('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x3101('0x9')],'defaultValue':!![]}};
\ No newline at end of file
index 47ef282..a8b4adf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af9=['get','omit','createdAt','body','updatedAt','sequelize','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','push','removeSections','ids','getSections','includes','isEmpty','subsections','enabled','findOne','forEach','resourceId','Plugin','addResources','bulkCreate','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./userProfile.socket','register','sendStatus','status','json','offset','undefined','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','send','index','map','UserProfile','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','find'];(function(_0x4482af,_0x17364e){var _0x22f139=function(_0x30f7b2){while(--_0x30f7b2){_0x4482af['push'](_0x4482af['shift']());}};_0x22f139(++_0x17364e);}(_0x7af9,0x95));var _0x97af=function(_0x56cfaa,_0x4c56b2){_0x56cfaa=_0x56cfaa-0x0;var _0x5a91db=_0x7af9[_0x56cfaa];return _0x5a91db;};'use strict';var emlformat=require(_0x97af('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x97af('0x1'));var jsonpatch=require(_0x97af('0x2'));var rp=require('request-promise');var moment=require(_0x97af('0x3'));var BPromise=require(_0x97af('0x4'));var Mustache=require(_0x97af('0x5'));var util=require(_0x97af('0x6'));var path=require(_0x97af('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97af('0x8'));var _=require(_0x97af('0x9'));var squel=require(_0x97af('0xa'));var crypto=require(_0x97af('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x97af('0xc'));var toCsv=require(_0x97af('0xd'));var querystring=require(_0x97af('0xe'));var Papa=require('papaparse');var Redis=require(_0x97af('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x97af('0x10'));var as=require(_0x97af('0x11'));var hardwareService=require(_0x97af('0x12'));var logger=require(_0x97af('0x13'))(_0x97af('0x14'));var utils=require(_0x97af('0x15'));var config=require(_0x97af('0x16'));var licenseUtil=require(_0x97af('0x17'));var db=require(_0x97af('0x18'))['db'];config[_0x97af('0x19')]=_[_0x97af('0x1a')](config['redis'],{'host':_0x97af('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x97af('0x1c'))[_0x97af('0x1d')](socket);function respondWithStatusCode(_0x458751,_0xbf7de1){_0xbf7de1=_0xbf7de1||0xcc;return function(_0x43eb12){if(_0x43eb12){return _0x458751[_0x97af('0x1e')](_0xbf7de1);}return _0x458751[_0x97af('0x1f')](_0xbf7de1)['end']();};}function respondWithResult(_0x281f8a,_0x4e679e){_0x4e679e=_0x4e679e||0xc8;return function(_0x277b71){if(_0x277b71){return _0x281f8a['status'](_0x4e679e)[_0x97af('0x20')](_0x277b71);}};}function respondWithFilteredResult(_0x47c57b,_0x1aa3f9){return function(_0x2ae4ce){if(_0x2ae4ce){var _0x3815da=typeof _0x1aa3f9[_0x97af('0x21')]===_0x97af('0x22')&&typeof _0x1aa3f9['limit']===_0x97af('0x22');var _0x4a6bca=_0x2ae4ce['count'];var _0x519297=_0x3815da?0x0:_0x1aa3f9[_0x97af('0x21')];var _0x3447ce=_0x3815da?_0x2ae4ce['count']:_0x1aa3f9[_0x97af('0x21')]+_0x1aa3f9['limit'];var _0x2a77f0;if(_0x3447ce>=_0x4a6bca){_0x3447ce=_0x4a6bca;_0x2a77f0=0xc8;}else{_0x2a77f0=0xce;}_0x47c57b[_0x97af('0x1f')](_0x2a77f0);return _0x47c57b[_0x97af('0x23')](_0x97af('0x24'),_0x519297+'-'+_0x3447ce+'/'+_0x4a6bca)[_0x97af('0x20')](_0x2ae4ce);}return null;};}function patchUpdates(_0x53323a){return function(_0x1a0cde){try{jsonpatch[_0x97af('0x25')](_0x1a0cde,_0x53323a,!![]);}catch(_0xe1679b){return BPromise[_0x97af('0x26')](_0xe1679b);}return _0x1a0cde[_0x97af('0x27')]();};}function saveUpdates(_0x2a7740,_0x275e8c){return function(_0x41122c){if(_0x41122c){return _0x41122c['update'](_0x2a7740)[_0x97af('0x28')](function(_0x651a83){return _0x651a83;});}return null;};}function removeEntity(_0x545b3d,_0xc00f30){return function(_0x677042){if(_0x677042){return _0x677042[_0x97af('0x29')]()['then'](function(){_0x545b3d[_0x97af('0x1f')](0xcc)[_0x97af('0x2a')]();});}};}function handleEntityNotFound(_0x394bf9,_0x444926){return function(_0x465708){if(!_0x465708){_0x394bf9['sendStatus'](0x194);}return _0x465708;};}function handleError(_0x2c86fb,_0x46f503){_0x46f503=_0x46f503||0x1f4;return function(_0x51b9e7){logger[_0x97af('0x2b')](_0x51b9e7[_0x97af('0x2c')]);if(_0x51b9e7[_0x97af('0x2d')]){delete _0x51b9e7[_0x97af('0x2d')];}_0x2c86fb[_0x97af('0x1f')](_0x46f503)[_0x97af('0x2e')](_0x51b9e7);};}exports[_0x97af('0x2f')]=function(_0x26f891,_0x63fe87){var _0x431f41={},_0x4e4127={},_0x32b3c0={'count':0x0,'rows':[]};var _0x564e58=_[_0x97af('0x30')](db[_0x97af('0x31')][_0x97af('0x32')],function(_0x3e7b9a){return{'name':_0x3e7b9a[_0x97af('0x33')],'type':_0x3e7b9a[_0x97af('0x34')][_0x97af('0x35')]};});_0x4e4127[_0x97af('0x36')]=_[_0x97af('0x30')](_0x564e58,_0x97af('0x2d'));_0x4e4127['query']=_[_0x97af('0x37')](_0x26f891[_0x97af('0x38')]);_0x4e4127['filters']=_[_0x97af('0x39')](_0x4e4127['model'],_0x4e4127[_0x97af('0x38')]);_0x431f41['attributes']=_['intersection'](_0x4e4127[_0x97af('0x36')],qs[_0x97af('0x3a')](_0x26f891[_0x97af('0x38')]['fields']));_0x431f41[_0x97af('0x3b')]=_0x431f41[_0x97af('0x3b')][_0x97af('0x3c')]?_0x431f41[_0x97af('0x3b')]:_0x4e4127[_0x97af('0x36')];if(!_0x26f891['query'][_0x97af('0x3d')](_0x97af('0x3e'))){_0x431f41[_0x97af('0x3f')]=qs[_0x97af('0x3f')](_0x26f891['query']['limit']);_0x431f41['offset']=qs[_0x97af('0x21')](_0x26f891[_0x97af('0x38')][_0x97af('0x21')]);}_0x431f41[_0x97af('0x40')]=qs['sort'](_0x26f891['query']['sort']);_0x431f41[_0x97af('0x41')]=qs[_0x97af('0x42')](_[_0x97af('0x43')](_0x26f891[_0x97af('0x38')],_0x4e4127[_0x97af('0x42')]),_0x564e58);if(_0x26f891[_0x97af('0x38')]['filter']){_0x431f41[_0x97af('0x41')]=_['merge'](_0x431f41['where'],{'$or':_[_0x97af('0x30')](_0x564e58,function(_0x1af726){if(_0x1af726[_0x97af('0x34')]!==_0x97af('0x44')){var _0x56d582={};_0x56d582[_0x1af726[_0x97af('0x2d')]]={'$like':'%'+_0x26f891[_0x97af('0x38')][_0x97af('0x45')]+'%'};return _0x56d582;}})});}_0x431f41=_[_0x97af('0x46')]({},_0x431f41,_0x26f891[_0x97af('0x47')]);var _0x3252a5={'where':_0x431f41[_0x97af('0x41')]};return db[_0x97af('0x31')]['count'](_0x3252a5)[_0x97af('0x28')](function(_0x3c709f){_0x32b3c0['count']=_0x3c709f;if(_0x26f891['query'][_0x97af('0x48')]){_0x431f41[_0x97af('0x49')]=[{'all':!![]}];}return db[_0x97af('0x31')][_0x97af('0x4a')](_0x431f41);})[_0x97af('0x28')](function(_0x3b13e2){_0x32b3c0[_0x97af('0x4b')]=_0x3b13e2;return _0x32b3c0;})[_0x97af('0x28')](respondWithFilteredResult(_0x63fe87,_0x431f41))[_0x97af('0x4c')](handleError(_0x63fe87,null));};exports[_0x97af('0x4d')]=function(_0x3e88f9,_0x26d05c){var _0x126c5b={'raw':![],'where':{'id':_0x3e88f9[_0x97af('0x4e')]['id']}},_0x6ff6b={};_0x6ff6b[_0x97af('0x36')]=_[_0x97af('0x37')](db[_0x97af('0x31')][_0x97af('0x32')]);_0x6ff6b[_0x97af('0x38')]=_['keys'](_0x3e88f9[_0x97af('0x38')]);_0x6ff6b[_0x97af('0x42')]=_[_0x97af('0x39')](_0x6ff6b[_0x97af('0x36')],_0x6ff6b[_0x97af('0x38')]);_0x126c5b[_0x97af('0x3b')]=_[_0x97af('0x39')](_0x6ff6b[_0x97af('0x36')],qs[_0x97af('0x3a')](_0x3e88f9[_0x97af('0x38')][_0x97af('0x3a')]));_0x126c5b[_0x97af('0x3b')]=_0x126c5b[_0x97af('0x3b')][_0x97af('0x3c')]?_0x126c5b[_0x97af('0x3b')]:_0x6ff6b[_0x97af('0x36')];if(_0x3e88f9[_0x97af('0x38')][_0x97af('0x48')]){_0x126c5b[_0x97af('0x49')]=[{'all':!![]}];}_0x126c5b=_['merge']({},_0x126c5b,_0x3e88f9[_0x97af('0x47')]);return db[_0x97af('0x31')]['find'](_0x126c5b)[_0x97af('0x28')](handleEntityNotFound(_0x26d05c,null))[_0x97af('0x28')](respondWithResult(_0x26d05c,null))['catch'](handleError(_0x26d05c,null));};exports[_0x97af('0x4f')]=function(_0x8ab790,_0x5bbbe3){return db[_0x97af('0x31')][_0x97af('0x4f')](_0x8ab790['body'],{})['then'](respondWithResult(_0x5bbbe3,0xc9))[_0x97af('0x4c')](handleError(_0x5bbbe3,null));};exports['clone']=function(_0x33c052,_0x52f29c){var _0x5700ba={'where':{'id':_0x33c052[_0x97af('0x4e')]['id']}},_0x590905={};_0x590905[_0x97af('0x36')]=_[_0x97af('0x37')](db['UserProfile'][_0x97af('0x32')]);_0x5700ba['attributes']=_[_0x97af('0x39')](_0x590905['model'],qs[_0x97af('0x3a')](_0x33c052[_0x97af('0x38')][_0x97af('0x3a')]));_0x5700ba[_0x97af('0x3b')]=_0x5700ba[_0x97af('0x3b')][_0x97af('0x3c')]?_0x5700ba['attributes']:_0x590905[_0x97af('0x36')];if(_0x33c052[_0x97af('0x38')][_0x97af('0x48')]){_0x5700ba['include']=[{'all':!![]}];}_0x5700ba=_['merge']({},_0x5700ba,_0x33c052[_0x97af('0x47')]);return db['UserProfile'][_0x97af('0x50')](_0x5700ba)[_0x97af('0x28')](handleEntityNotFound(_0x52f29c,null))[_0x97af('0x28')](function(_0x5457cc){if(_0x5457cc){var _0x46e806=_0x5457cc[_0x97af('0x51')]({'plain':!![]});_0x46e806=qs[_0x97af('0x52')](_0x46e806,['id',_0x97af('0x53'),'updatedAt','crudPermissions']);_0x33c052['body']=_[_0x97af('0x52')](_0x33c052[_0x97af('0x54')],['id','createdAt',_0x97af('0x55')]);return db[_0x97af('0x56')][_0x97af('0x57')](function(_0x95291f){return db[_0x97af('0x31')]['create'](_['merge'](_0x46e806,_0x33c052[_0x97af('0x54')]),{'include':_0x33c052[_0x97af('0x38')][_0x97af('0x48')]?[{'all':!![]}]:undefined,'transaction':_0x95291f})[_0x97af('0x28')](function(_0xe35f28){var _0x1aad11=_0xe35f28[_0x97af('0x51')]({'plain':!![]});return db[_0x97af('0x58')][_0x97af('0x4a')]({'where':{'userProfileId':_0x33c052[_0x97af('0x4e')]['id']},'raw':!![]})[_0x97af('0x28')](function(_0x1b13c8){if(_0x1b13c8){return BPromise[_0x97af('0x59')](_0x1b13c8,function(_0x41a959){return new BPromise(function(_0x1b4a26,_0x424e50){if(_0x41a959[_0x97af('0x5a')]===null||_0x41a959[_0x97af('0x5a')]===0x1)_0x1b4a26(null);return db[_0x97af('0x5b')]['findAll']({'where':{'sectionId':_0x41a959['id']},'raw':!![]})[_0x97af('0x28')](function(_0x50e5c8){var _0x25e570=_[_0x97af('0x30')](_0x50e5c8,function(_0xeceb21){return qs['omit'](_0xeceb21,['id','createdAt',_0x97af('0x55'),_0x97af('0x5c')]);});_0x1b4a26(_0x25e570);})[_0x97af('0x4c')](function(_0x5d89e5){_0x424e50(_0x5d89e5);});})[_0x97af('0x28')](function(_0xb3a15d){var _0x4fd7dd=qs[_0x97af('0x52')](_0x41a959,['id','createdAt',_0x97af('0x55')]);_0x4fd7dd[_0x97af('0x5d')]=_0x1aad11['id'];if(_0xb3a15d)_0x4fd7dd[_0x97af('0x5e')]=_0xb3a15d;return _0x4fd7dd;})[_0x97af('0x28')](function(_0x24c228){return db['UserProfileSection'][_0x97af('0x4f')](_0x24c228,{'include':[{'model':db[_0x97af('0x5b')],'as':_0x97af('0x5e')}],'raw':!![],'transaction':_0x95291f});});})['then'](function(){return _0x1aad11;});}});});});}})['then'](respondWithResult(_0x52f29c,0xc9))[_0x97af('0x4c')](handleError(_0x52f29c,null));};exports['update']=function(_0x5a02e6,_0x531f00){if(_0x5a02e6['body']['id']){delete _0x5a02e6[_0x97af('0x54')]['id'];}return db['UserProfile']['find']({'where':{'id':_0x5a02e6[_0x97af('0x4e')]['id']}})['then'](handleEntityNotFound(_0x531f00,null))[_0x97af('0x28')](saveUpdates(_0x5a02e6[_0x97af('0x54')],null))[_0x97af('0x28')](respondWithResult(_0x531f00,null))[_0x97af('0x4c')](handleError(_0x531f00,null));};exports[_0x97af('0x29')]=function(_0x1c10e7,_0x388598){return db[_0x97af('0x31')][_0x97af('0x50')]({'where':{'id':_0x1c10e7[_0x97af('0x4e')]['id']}})[_0x97af('0x28')](handleEntityNotFound(_0x388598,null))[_0x97af('0x28')](removeEntity(_0x388598,null))[_0x97af('0x4c')](handleError(_0x388598,null));};exports[_0x97af('0x5f')]=function(_0x37ed42,_0xdf4c6d){return db[_0x97af('0x31')][_0x97af('0x5f')]()[_0x97af('0x28')](respondWithResult(_0xdf4c6d,null))[_0x97af('0x4c')](handleError(_0xdf4c6d,null));};exports[_0x97af('0x60')]=function(_0x3b6462,_0x4c5672){var _0x3f2091=_0x3b6462[_0x97af('0x54')];return db[_0x97af('0x31')]['find']({'where':{'id':_0x3b6462[_0x97af('0x4e')]['id']}})[_0x97af('0x28')](handleEntityNotFound(_0x4c5672,null))['then'](function(_0x111786){if(_0x111786){return db[_0x97af('0x56')][_0x97af('0x57')](function(_0x46ebbf){return db[_0x97af('0x58')][_0x97af('0x29')]({'where':{'userProfileId':_0x3b6462['params']['id'],'sectionId':_[_0x97af('0x30')](_0x3f2091,function(_0x272d07){return _0x272d07[_0x97af('0x5c')];})},'transaction':_0x46ebbf})[_0x97af('0x28')](function(){var _0x1eb4c4=_[_0x97af('0x30')](_0x3f2091,function(_0xbb3a46){_0xbb3a46['userProfileId']=_0x3b6462[_0x97af('0x4e')]['id'];return _0xbb3a46;});var _0x2fa4c8=[];return BPromise[_0x97af('0x59')](_0x1eb4c4,function(_0x483c2b){return db[_0x97af('0x58')][_0x97af('0x4f')](_0x483c2b,{'include':[{'model':db[_0x97af('0x5b')],'as':'Resources'}],'raw':!![],'transaction':_0x46ebbf})[_0x97af('0x28')](function(_0x5eeaa1){_0x2fa4c8[_0x97af('0x61')](_0x5eeaa1['get']({'plain':!![]}));});})[_0x97af('0x28')](function(){return _0x2fa4c8;});});});}})[_0x97af('0x28')](function(_0x1b8cc3){return _0x1b8cc3;})[_0x97af('0x28')](respondWithResult(_0x4c5672,null))[_0x97af('0x4c')](handleError(_0x4c5672,null));};exports[_0x97af('0x62')]=function(_0x97b296,_0x24ef2e){var _0xf7b02a;return db[_0x97af('0x31')][_0x97af('0x50')]({'where':{'id':_0x97b296['params']['id']},'attributes':['id',_0x97af('0x2d')]})[_0x97af('0x28')](handleEntityNotFound(_0x24ef2e,null))['then'](function(_0x361498){if(_0x361498){_0xf7b02a=_0x361498;return db[_0x97af('0x58')][_0x97af('0x29')]({'where':{'userProfileId':_0x97b296[_0x97af('0x4e')]['id'],'sectionId':_0x97b296[_0x97af('0x38')][_0x97af('0x63')]}});}})[_0x97af('0x28')](function(){return _0xf7b02a;})[_0x97af('0x28')](respondWithStatusCode(_0x24ef2e,null))[_0x97af('0x4c')](handleError(_0x24ef2e,null));};exports[_0x97af('0x64')]=function(_0x4a9d6e,_0x2f1719){var _0x54569a=[];var _0x568493=[];return db[_0x97af('0x58')][_0x97af('0x4a')]({'where':{'userProfileId':_0x4a9d6e['params']['id']},'raw':!![]})['then'](function(_0x363754){_0x54569a=_[_0x97af('0x45')](_0x363754,function(_0x20e800){return _0x20e800['enabled']===0x1||_[_0x97af('0x65')]([0x3eb,0x709],_0x20e800[_0x97af('0x5c')]);});if(!_[_0x97af('0x66')](_0x54569a)){return _[_0x97af('0x30')](_0x54569a,function(_0x30190e){return _0x30190e[_0x97af('0x5c')];});}else{return;}})['then'](function(_0x551146){if(_0x551146)_0x568493=_0x551146;if(_[_0x97af('0x65')](_0x568493,0x64)){var _0x1dcda9=_[_0x97af('0x50')](_0x54569a,{'sectionId':0x64});return hasDefaultDashboard(_0x1dcda9)[_0x97af('0x28')](function(_0x5dea3a){return _[_0x97af('0x30')](_0x54569a,function(_0x32deab){if(_0x32deab['sectionId']===0x64){_0x32deab[_0x97af('0x67')]=_0x5dea3a;}return _0x32deab;});});}else{return;}})[_0x97af('0x28')](function(_0x3f2e3a){if(_0x3f2e3a)_0x54569a=_0x3f2e3a;if(_[_0x97af('0x65')](_0x568493,0x3eb)){var _0x2eab04=_[_0x97af('0x50')](_0x54569a,{'sectionId':0x3eb});return getCustomDashboards(_0x2eab04)[_0x97af('0x28')](function(_0x31b54b){return _[_0x97af('0x30')](_0x54569a,function(_0xa55b79){if(_0x2eab04[_0x97af('0x68')]){if(_0xa55b79[_0x97af('0x5c')]===0x3eb){_0xa55b79['subsections']=_0x31b54b;}}else{if(_0xa55b79[_0x97af('0x5c')]===0x64){_0xa55b79[_0x97af('0x67')]=_0x31b54b;}}return _0xa55b79;});});}else{return;}})[_0x97af('0x28')](function(_0xee24fc){if(_0xee24fc)_0x54569a=_0xee24fc;if(_['includes'](_0x568493,0x709)){var _0x4904ac=_[_0x97af('0x50')](_0x54569a,{'sectionId':0x709});return getPlugins(_0x4904ac)[_0x97af('0x28')](function(_0x43dfee){if(_0x4904ac[_0x97af('0x68')]){return _[_0x97af('0x30')](_0x54569a,function(_0x12f88d){if(_0x12f88d[_0x97af('0x5c')]===0x709){_0x12f88d['subsections']=_0x43dfee;}return _0x12f88d;});}else{var _0xbc3d33={'sectionId':0x76c,'enabled':0x1,'subsections':_0x43dfee};var _0x1027b4=_[_0x97af('0x30')](_0x54569a);_0x1027b4[_0x97af('0x61')](_0xbc3d33);return _0x1027b4;}});}else{return;}})[_0x97af('0x28')](function(_0x337168){if(_0x337168)_0x54569a=_0x337168;return _[_0x97af('0x45')](_0x54569a,['enabled',0x1]);})['then'](respondWithResult(_0x2f1719,null))['catch'](handleError(_0x2f1719,null));};function hasDefaultDashboard(_0x466479){var _0x5aaa00=[0x65];return new BPromise(function(_0x4693f4,_0x30a715){try{if(_0x466479[_0x97af('0x5a')]){_0x4693f4(_0x5aaa00);}else{return db[_0x97af('0x5b')][_0x97af('0x69')]({'where':{'sectionId':_0x466479['id']},'raw':!![]})['then'](function(_0x57912c){_0x57912c?_0x4693f4(_0x5aaa00):_0x4693f4();});}}catch(_0x52ab6a){_0x30a715(_0x52ab6a);}});}function getCustomDashboards(_0x49a613){var _0x4f8937=[];return new BPromise(function(_0x5889d8,_0x297d08){try{if(_0x49a613[_0x97af('0x5a')]){return db['Dashboard'][_0x97af('0x4a')]({'raw':!![]})[_0x97af('0x28')](function(_0x24e880){_0x24e880[_0x97af('0x6a')](function(_0x2d785e){_0x4f8937[_0x97af('0x61')](_0x2d785e['id']+0x1869f);});_0x5889d8(_0x4f8937);});}else{return db['UserProfileResource'][_0x97af('0x4a')]({'where':{'sectionId':_0x49a613['id']},'raw':!![]})[_0x97af('0x28')](function(_0x8cfe2c){_0x8cfe2c[_0x97af('0x6a')](function(_0x182c24){_0x4f8937[_0x97af('0x61')](_0x182c24[_0x97af('0x6b')]+0x1869f);});_0x5889d8(_0x4f8937);});}}catch(_0x2cbb97){_0x297d08(_0x2cbb97);}});}function getPlugins(_0x2f692c){var _0x3973f7=[];return new BPromise(function(_0x2ed2f1,_0x1167dc){try{if(_0x2f692c[_0x97af('0x5a')]){return db[_0x97af('0x6c')][_0x97af('0x4a')]({'raw':!![]})[_0x97af('0x28')](function(_0x1fbdac){_0x1fbdac['forEach'](function(_0x240c30){_0x3973f7[_0x97af('0x61')](_0x240c30['id']+0x15b38);});_0x2ed2f1(_0x3973f7);});}else{return db['UserProfileResource'][_0x97af('0x4a')]({'where':{'sectionId':_0x2f692c['id']},'raw':!![]})[_0x97af('0x28')](function(_0x1552ff){_0x1552ff[_0x97af('0x6a')](function(_0x583a48){_0x3973f7[_0x97af('0x61')](_0x583a48[_0x97af('0x6b')]+0x15b38);});_0x2ed2f1(_0x3973f7);});}}catch(_0x5109a8){_0x1167dc(_0x5109a8);}});}exports[_0x97af('0x6d')]=function(_0x4964bd,_0x1ad765){return db['UserProfile'][_0x97af('0x50')]({'where':{'id':_0x4964bd[_0x97af('0x4e')]['id']}})[_0x97af('0x28')](handleEntityNotFound(_0x1ad765,null))['then'](function(_0xb3c9a7){if(_0xb3c9a7){return db['sequelize']['transaction'](function(_0x4af3dd){return db['UserProfileSection'][_0x97af('0x4a')]({'where':{'userProfileId':_0x4964bd[_0x97af('0x4e')]['id']},'attributes':['id'],'raw':!![]})[_0x97af('0x28')](function(_0x6a4b59){if(_0x6a4b59){return db[_0x97af('0x58')][_0x97af('0x29')]({'where':{'userProfileId':_0x4964bd[_0x97af('0x4e')]['id'],'id':_[_0x97af('0x30')](_0x6a4b59,function(_0x2e540f){return _0x2e540f['id'];})},'transaction':_0x4af3dd});}})[_0x97af('0x28')](function(_0x2d6b75){var _0x527807=_[_0x97af('0x30')](_0x4964bd[_0x97af('0x54')],function(_0xca2c20){_0xca2c20['userProfileId']=_0x4964bd[_0x97af('0x4e')]['id'];return _0xca2c20;});return db['UserProfileSection'][_0x97af('0x6e')](_0x527807,{'raw':!![],'transaction':_0x4af3dd});})[_0x97af('0x28')](function(_0x3228eb){var _0x33672b=_['filter'](_[_0x97af('0x30')](_0x3228eb,function(_0x3bf107){return _0x3bf107['get']({'plain':!![]});}),{'includeAll':![]});if(_0x33672b){return db[_0x97af('0x58')][_0x97af('0x4a')]({'where':{'userProfileId':_0x4964bd[_0x97af('0x4e')]['id'],'sectionId':_[_0x97af('0x30')](_0x33672b,function(_0x5f25d0){return _0x5f25d0[_0x97af('0x5c')];})},'attributes':['id',_0x97af('0x5c')],'raw':!![]})['then'](function(_0x3fd2f7){var _0x268f32=_[_0x97af('0x30')](_0x4964bd[_0x97af('0x54')],function(_0x37ad5e){_0x37ad5e[_0x97af('0x5d')]=_0x4964bd['params']['id'];return _0x37ad5e;});return db[_0x97af('0x5b')][_0x97af('0x6e')](_0x268f32,{'raw':!![],'transaction':_0x4af3dd});});}})[_0x97af('0x4c')](handleError(_0x1ad765,null));});}})[_0x97af('0x28')](function(_0x421d86){var _0x2d2023=_['map'](_0x421d86,function(_0x1f8374){return _0x1f8374[_0x97af('0x51')]({'plain':!![]});});})[_0x97af('0x28')](respondWithResult(_0x1ad765,null))['catch'](handleError(_0x1ad765,null));};exports['removeResources']=function(_0xfe58f4,_0x477989,_0x5c154c){return db[_0x97af('0x31')][_0x97af('0x50')]({'where':{'id':_0xfe58f4[_0x97af('0x4e')]['id']}})[_0x97af('0x28')](handleEntityNotFound(_0x477989,null))[_0x97af('0x28')](function(_0x3c312a){if(_0x3c312a){return _0x3c312a['removeResources'](_0xfe58f4[_0x97af('0x38')]['ids']);}})[_0x97af('0x28')](respondWithStatusCode(_0x477989,null))[_0x97af('0x4c')](handleError(_0x477989,null));};exports[_0x97af('0x6f')]=function(_0x52c19c,_0x501217){var _0x10836b={};if(!_0x52c19c[_0x97af('0x38')][_0x97af('0x70')])throw new Error(_0x97af('0x71'));if(!_0x52c19c[_0x97af('0x38')][_0x97af('0x3d')](_0x97af('0x3e'))){_0x10836b[_0x97af('0x3f')]=qs['limit'](_0x52c19c['query'][_0x97af('0x3f')]);_0x10836b[_0x97af('0x21')]=qs[_0x97af('0x21')](_0x52c19c['query'][_0x97af('0x21')]);}return db[_0x97af('0x31')][_0x97af('0x50')]({'where':{'id':_0x52c19c[_0x97af('0x4e')]['id']}})[_0x97af('0x28')](function(_0x152566){if(!_0x152566)throw new Error(_0x97af('0x72')+_0x52c19c[_0x97af('0x4e')]['id']);return db[_0x97af('0x31')][_0x97af('0x6f')](_0x52c19c);})[_0x97af('0x28')](respondWithFilteredResult(_0x501217,_0x10836b))[_0x97af('0x4c')](handleError(_0x501217,null));};
\ No newline at end of file
+var _0x3588=['subsections','enabled','findOne','Dashboard','forEach','Plugin','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','end','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','order','sort','pick','filter','where','VIRTUAL','UserProfile','includeAll','include','findAll','catch','show','params','merge','options','find','body','clone','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','create','UserProfileSection','autoAssociation','userProfileId','Resources','UserProfileResource','update','describe','addSections','sectionId','each','push','isEmpty','includes'];(function(_0x52f1e6,_0xf70489){var _0x21f104=function(_0xb89f9e){while(--_0xb89f9e){_0x52f1e6['push'](_0x52f1e6['shift']());}};_0x21f104(++_0xf70489);}(_0x3588,0x82));var _0x8358=function(_0x326432,_0x35f878){_0x326432=_0x326432-0x0;var _0x4ddfaf=_0x3588[_0x326432];return _0x4ddfaf;};'use strict';var emlformat=require(_0x8358('0x0'));var rimraf=require(_0x8358('0x1'));var zipdir=require(_0x8358('0x2'));var jsonpatch=require(_0x8358('0x3'));var rp=require(_0x8358('0x4'));var moment=require(_0x8358('0x5'));var BPromise=require(_0x8358('0x6'));var Mustache=require('mustache');var util=require(_0x8358('0x7'));var path=require(_0x8358('0x8'));var sox=require(_0x8358('0x9'));var csv=require(_0x8358('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8358('0xb'));var _=require(_0x8358('0xc'));var squel=require('squel');var crypto=require(_0x8358('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8358('0xe'));var toCsv=require(_0x8358('0xa'));var querystring=require(_0x8358('0xf'));var Papa=require(_0x8358('0x10'));var Redis=require('ioredis');var authService=require(_0x8358('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8358('0x12'));var hardwareService=require(_0x8358('0x13'));var logger=require(_0x8358('0x14'))(_0x8358('0x15'));var utils=require(_0x8358('0x16'));var config=require(_0x8358('0x17'));var licenseUtil=require(_0x8358('0x18'));var db=require(_0x8358('0x19'))['db'];config[_0x8358('0x1a')]=_[_0x8358('0x1b')](config[_0x8358('0x1a')],{'host':_0x8358('0x1c'),'port':0x18eb});var socket=require(_0x8358('0x1d'))(new Redis(config[_0x8358('0x1a')]));require(_0x8358('0x1e'))[_0x8358('0x1f')](socket);function respondWithStatusCode(_0x51d21d,_0x5aa0df){_0x5aa0df=_0x5aa0df||0xcc;return function(_0x4500a3){if(_0x4500a3){return _0x51d21d['sendStatus'](_0x5aa0df);}return _0x51d21d[_0x8358('0x20')](_0x5aa0df)['end']();};}function respondWithResult(_0x585969,_0x484237){_0x484237=_0x484237||0xc8;return function(_0xc2ff8d){if(_0xc2ff8d){return _0x585969[_0x8358('0x20')](_0x484237)[_0x8358('0x21')](_0xc2ff8d);}};}function respondWithFilteredResult(_0x366a2b,_0x365613){return function(_0x27a21d){if(_0x27a21d){var _0x37f6fe=typeof _0x365613['offset']===_0x8358('0x22')&&typeof _0x365613[_0x8358('0x23')]==='undefined';var _0x31038d=_0x27a21d[_0x8358('0x24')];var _0x1ab119=_0x37f6fe?0x0:_0x365613[_0x8358('0x25')];var _0x4a9296=_0x37f6fe?_0x27a21d['count']:_0x365613[_0x8358('0x25')]+_0x365613[_0x8358('0x23')];var _0x45ae60;if(_0x4a9296>=_0x31038d){_0x4a9296=_0x31038d;_0x45ae60=0xc8;}else{_0x45ae60=0xce;}_0x366a2b['status'](_0x45ae60);return _0x366a2b['set'](_0x8358('0x26'),_0x1ab119+'-'+_0x4a9296+'/'+_0x31038d)['json'](_0x27a21d);}return null;};}function patchUpdates(_0x218537){return function(_0x257ffa){try{jsonpatch[_0x8358('0x27')](_0x257ffa,_0x218537,!![]);}catch(_0x21e9ad){return BPromise[_0x8358('0x28')](_0x21e9ad);}return _0x257ffa[_0x8358('0x29')]();};}function saveUpdates(_0x1ae76d,_0x4c457b){return function(_0x808675){if(_0x808675){return _0x808675['update'](_0x1ae76d)[_0x8358('0x2a')](function(_0x5d8317){return _0x5d8317;});}return null;};}function removeEntity(_0x248d2f,_0x1beaa7){return function(_0x3a707c){if(_0x3a707c){return _0x3a707c[_0x8358('0x2b')]()[_0x8358('0x2a')](function(){_0x248d2f[_0x8358('0x20')](0xcc)[_0x8358('0x2c')]();});}};}function handleEntityNotFound(_0x2be269,_0x2644a3){return function(_0xc8b177){if(!_0xc8b177){_0x2be269[_0x8358('0x2d')](0x194);}return _0xc8b177;};}function handleError(_0x599384,_0x3df095){_0x3df095=_0x3df095||0x1f4;return function(_0x3921bc){logger[_0x8358('0x2e')](_0x3921bc[_0x8358('0x2f')]);if(_0x3921bc[_0x8358('0x30')]){delete _0x3921bc[_0x8358('0x30')];}_0x599384[_0x8358('0x20')](_0x3df095)[_0x8358('0x31')](_0x3921bc);};}exports[_0x8358('0x32')]=function(_0x112d89,_0x340b39){var _0x2b3718={},_0x472072={},_0x50b14f={'count':0x0,'rows':[]};var _0x32c5d8=_['map'](db['UserProfile'][_0x8358('0x33')],function(_0x176109){return{'name':_0x176109[_0x8358('0x34')],'type':_0x176109[_0x8358('0x35')]['key']};});_0x472072[_0x8358('0x36')]=_[_0x8358('0x37')](_0x32c5d8,_0x8358('0x30'));_0x472072['query']=_[_0x8358('0x38')](_0x112d89[_0x8358('0x39')]);_0x472072[_0x8358('0x3a')]=_[_0x8358('0x3b')](_0x472072['model'],_0x472072[_0x8358('0x39')]);_0x2b3718['attributes']=_[_0x8358('0x3b')](_0x472072[_0x8358('0x36')],qs[_0x8358('0x3c')](_0x112d89[_0x8358('0x39')][_0x8358('0x3c')]));_0x2b3718[_0x8358('0x3d')]=_0x2b3718[_0x8358('0x3d')][_0x8358('0x3e')]?_0x2b3718[_0x8358('0x3d')]:_0x472072[_0x8358('0x36')];if(!_0x112d89[_0x8358('0x39')]['hasOwnProperty']('nolimit')){_0x2b3718[_0x8358('0x23')]=qs[_0x8358('0x23')](_0x112d89[_0x8358('0x39')][_0x8358('0x23')]);_0x2b3718['offset']=qs[_0x8358('0x25')](_0x112d89[_0x8358('0x39')][_0x8358('0x25')]);}_0x2b3718[_0x8358('0x3f')]=qs[_0x8358('0x40')](_0x112d89[_0x8358('0x39')][_0x8358('0x40')]);_0x2b3718['where']=qs[_0x8358('0x3a')](_[_0x8358('0x41')](_0x112d89['query'],_0x472072[_0x8358('0x3a')]),_0x32c5d8);if(_0x112d89[_0x8358('0x39')][_0x8358('0x42')]){_0x2b3718[_0x8358('0x43')]=_['merge'](_0x2b3718[_0x8358('0x43')],{'$or':_[_0x8358('0x37')](_0x32c5d8,function(_0x375c2f){if(_0x375c2f['type']!==_0x8358('0x44')){var _0x216cb9={};_0x216cb9[_0x375c2f[_0x8358('0x30')]]={'$like':'%'+_0x112d89[_0x8358('0x39')][_0x8358('0x42')]+'%'};return _0x216cb9;}})});}_0x2b3718=_['merge']({},_0x2b3718,_0x112d89['options']);var _0x28d0e4={'where':_0x2b3718['where']};return db[_0x8358('0x45')]['count'](_0x28d0e4)['then'](function(_0x2a0a8a){_0x50b14f[_0x8358('0x24')]=_0x2a0a8a;if(_0x112d89[_0x8358('0x39')][_0x8358('0x46')]){_0x2b3718[_0x8358('0x47')]=[{'all':!![]}];}return db[_0x8358('0x45')][_0x8358('0x48')](_0x2b3718);})[_0x8358('0x2a')](function(_0x59272f){_0x50b14f['rows']=_0x59272f;return _0x50b14f;})['then'](respondWithFilteredResult(_0x340b39,_0x2b3718))[_0x8358('0x49')](handleError(_0x340b39,null));};exports[_0x8358('0x4a')]=function(_0x47ffbb,_0x19bbfc){var _0xe5ab2b={'raw':![],'where':{'id':_0x47ffbb[_0x8358('0x4b')]['id']}},_0x189812={};_0x189812['model']=_[_0x8358('0x38')](db['UserProfile'][_0x8358('0x33')]);_0x189812['query']=_[_0x8358('0x38')](_0x47ffbb[_0x8358('0x39')]);_0x189812[_0x8358('0x3a')]=_['intersection'](_0x189812[_0x8358('0x36')],_0x189812[_0x8358('0x39')]);_0xe5ab2b[_0x8358('0x3d')]=_[_0x8358('0x3b')](_0x189812['model'],qs['fields'](_0x47ffbb['query']['fields']));_0xe5ab2b[_0x8358('0x3d')]=_0xe5ab2b[_0x8358('0x3d')][_0x8358('0x3e')]?_0xe5ab2b[_0x8358('0x3d')]:_0x189812[_0x8358('0x36')];if(_0x47ffbb[_0x8358('0x39')]['includeAll']){_0xe5ab2b[_0x8358('0x47')]=[{'all':!![]}];}_0xe5ab2b=_[_0x8358('0x4c')]({},_0xe5ab2b,_0x47ffbb[_0x8358('0x4d')]);return db[_0x8358('0x45')][_0x8358('0x4e')](_0xe5ab2b)[_0x8358('0x2a')](handleEntityNotFound(_0x19bbfc,null))[_0x8358('0x2a')](respondWithResult(_0x19bbfc,null))[_0x8358('0x49')](handleError(_0x19bbfc,null));};exports['create']=function(_0x467fbc,_0x2da39c){return db['UserProfile']['create'](_0x467fbc[_0x8358('0x4f')],{})['then'](respondWithResult(_0x2da39c,0xc9))[_0x8358('0x49')](handleError(_0x2da39c,null));};exports[_0x8358('0x50')]=function(_0x1bae18,_0x182dcc){var _0x21bbe8={'where':{'id':_0x1bae18[_0x8358('0x4b')]['id']}},_0x2b8f56={};_0x2b8f56[_0x8358('0x36')]=_['keys'](db[_0x8358('0x45')][_0x8358('0x33')]);_0x21bbe8[_0x8358('0x3d')]=_['intersection'](_0x2b8f56[_0x8358('0x36')],qs[_0x8358('0x3c')](_0x1bae18[_0x8358('0x39')][_0x8358('0x3c')]));_0x21bbe8[_0x8358('0x3d')]=_0x21bbe8['attributes'][_0x8358('0x3e')]?_0x21bbe8['attributes']:_0x2b8f56[_0x8358('0x36')];if(_0x1bae18['query'][_0x8358('0x46')]){_0x21bbe8['include']=[{'all':!![]}];}_0x21bbe8=_[_0x8358('0x4c')]({},_0x21bbe8,_0x1bae18['options']);return db[_0x8358('0x45')][_0x8358('0x4e')](_0x21bbe8)['then'](handleEntityNotFound(_0x182dcc,null))['then'](function(_0x1d8f91){if(_0x1d8f91){var _0x34f636=_0x1d8f91[_0x8358('0x51')]({'plain':!![]});_0x34f636=qs[_0x8358('0x52')](_0x34f636,['id',_0x8358('0x53'),_0x8358('0x54'),_0x8358('0x55')]);_0x1bae18[_0x8358('0x4f')]=_[_0x8358('0x52')](_0x1bae18[_0x8358('0x4f')],['id','createdAt',_0x8358('0x54')]);return db[_0x8358('0x56')][_0x8358('0x57')](function(_0x132a16){return db['UserProfile'][_0x8358('0x58')](_['merge'](_0x34f636,_0x1bae18['body']),{'include':_0x1bae18[_0x8358('0x39')]['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x132a16})[_0x8358('0x2a')](function(_0x4c0846){var _0x1b7d0c=_0x4c0846['get']({'plain':!![]});return db[_0x8358('0x59')]['findAll']({'where':{'userProfileId':_0x1bae18[_0x8358('0x4b')]['id']},'raw':!![]})['then'](function(_0x2b65c3){if(_0x2b65c3){return BPromise['each'](_0x2b65c3,function(_0x32b500){return new BPromise(function(_0xe814d5,_0x2c790f){if(_0x32b500[_0x8358('0x5a')]===null||_0x32b500[_0x8358('0x5a')]===0x1)_0xe814d5(null);return db['UserProfileResource'][_0x8358('0x48')]({'where':{'sectionId':_0x32b500['id']},'raw':!![]})['then'](function(_0x3009b0){var _0x5bc672=_[_0x8358('0x37')](_0x3009b0,function(_0x4c9f54){return qs[_0x8358('0x52')](_0x4c9f54,['id',_0x8358('0x53'),_0x8358('0x54'),'sectionId']);});_0xe814d5(_0x5bc672);})[_0x8358('0x49')](function(_0x3fa09d){_0x2c790f(_0x3fa09d);});})['then'](function(_0x5b56ef){var _0x42422b=qs['omit'](_0x32b500,['id',_0x8358('0x53'),_0x8358('0x54')]);_0x42422b[_0x8358('0x5b')]=_0x1b7d0c['id'];if(_0x5b56ef)_0x42422b[_0x8358('0x5c')]=_0x5b56ef;return _0x42422b;})['then'](function(_0x599b50){return db['UserProfileSection'][_0x8358('0x58')](_0x599b50,{'include':[{'model':db[_0x8358('0x5d')],'as':_0x8358('0x5c')}],'raw':!![],'transaction':_0x132a16});});})[_0x8358('0x2a')](function(){return _0x1b7d0c;});}});});});}})['then'](respondWithResult(_0x182dcc,0xc9))[_0x8358('0x49')](handleError(_0x182dcc,null));};exports[_0x8358('0x5e')]=function(_0x4e2d5c,_0x1588b9){if(_0x4e2d5c['body']['id']){delete _0x4e2d5c[_0x8358('0x4f')]['id'];}return db[_0x8358('0x45')]['find']({'where':{'id':_0x4e2d5c[_0x8358('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1588b9,null))[_0x8358('0x2a')](saveUpdates(_0x4e2d5c['body'],null))['then'](respondWithResult(_0x1588b9,null))[_0x8358('0x49')](handleError(_0x1588b9,null));};exports[_0x8358('0x2b')]=function(_0xc5cc15,_0x19b8ef){return db[_0x8358('0x45')]['find']({'where':{'id':_0xc5cc15[_0x8358('0x4b')]['id']}})[_0x8358('0x2a')](handleEntityNotFound(_0x19b8ef,null))[_0x8358('0x2a')](removeEntity(_0x19b8ef,null))['catch'](handleError(_0x19b8ef,null));};exports[_0x8358('0x5f')]=function(_0x4ea3b5,_0x2cbb06){return db[_0x8358('0x45')][_0x8358('0x5f')]()[_0x8358('0x2a')](respondWithResult(_0x2cbb06,null))[_0x8358('0x49')](handleError(_0x2cbb06,null));};exports[_0x8358('0x60')]=function(_0x2672d2,_0x42b8c4){var _0x17fe0b=_0x2672d2[_0x8358('0x4f')];return db['UserProfile'][_0x8358('0x4e')]({'where':{'id':_0x2672d2[_0x8358('0x4b')]['id']}})[_0x8358('0x2a')](handleEntityNotFound(_0x42b8c4,null))[_0x8358('0x2a')](function(_0x3c92b6){if(_0x3c92b6){return db[_0x8358('0x56')]['transaction'](function(_0x215a55){return db[_0x8358('0x59')][_0x8358('0x2b')]({'where':{'userProfileId':_0x2672d2['params']['id'],'sectionId':_['map'](_0x17fe0b,function(_0x3f63db){return _0x3f63db[_0x8358('0x61')];})},'transaction':_0x215a55})[_0x8358('0x2a')](function(){var _0x12e21c=_['map'](_0x17fe0b,function(_0x24eb28){_0x24eb28[_0x8358('0x5b')]=_0x2672d2[_0x8358('0x4b')]['id'];return _0x24eb28;});var _0x160081=[];return BPromise[_0x8358('0x62')](_0x12e21c,function(_0x41e8cb){return db[_0x8358('0x59')][_0x8358('0x58')](_0x41e8cb,{'include':[{'model':db[_0x8358('0x5d')],'as':'Resources'}],'raw':!![],'transaction':_0x215a55})[_0x8358('0x2a')](function(_0x1b79bb){_0x160081[_0x8358('0x63')](_0x1b79bb[_0x8358('0x51')]({'plain':!![]}));});})[_0x8358('0x2a')](function(){return _0x160081;});});});}})[_0x8358('0x2a')](function(_0x414db7){return _0x414db7;})[_0x8358('0x2a')](respondWithResult(_0x42b8c4,null))[_0x8358('0x49')](handleError(_0x42b8c4,null));};exports['removeSections']=function(_0x4f602c,_0x4f856d){var _0x58c93c;return db[_0x8358('0x45')][_0x8358('0x4e')]({'where':{'id':_0x4f602c[_0x8358('0x4b')]['id']},'attributes':['id',_0x8358('0x30')]})[_0x8358('0x2a')](handleEntityNotFound(_0x4f856d,null))[_0x8358('0x2a')](function(_0x2a5168){if(_0x2a5168){_0x58c93c=_0x2a5168;return db[_0x8358('0x59')][_0x8358('0x2b')]({'where':{'userProfileId':_0x4f602c[_0x8358('0x4b')]['id'],'sectionId':_0x4f602c['query']['ids']}});}})[_0x8358('0x2a')](function(){return _0x58c93c;})[_0x8358('0x2a')](respondWithStatusCode(_0x4f856d,null))[_0x8358('0x49')](handleError(_0x4f856d,null));};exports['getSections']=function(_0x16884e,_0x421d19){var _0x1ec199=[];var _0x2c8426=[];return db[_0x8358('0x59')]['findAll']({'where':{'userProfileId':_0x16884e[_0x8358('0x4b')]['id']},'raw':!![]})[_0x8358('0x2a')](function(_0x476e6d){_0x1ec199=_['filter'](_0x476e6d,function(_0x501832){return _0x501832['enabled']===0x1||_['includes']([0x3eb,0x709],_0x501832['sectionId']);});if(!_[_0x8358('0x64')](_0x1ec199)){return _[_0x8358('0x37')](_0x1ec199,function(_0x548ca9){return _0x548ca9[_0x8358('0x61')];});}else{return;}})['then'](function(_0x299b81){if(_0x299b81)_0x2c8426=_0x299b81;if(_[_0x8358('0x65')](_0x2c8426,0x64)){var _0x34f03a=_['find'](_0x1ec199,{'sectionId':0x64});return hasDefaultDashboard(_0x34f03a)[_0x8358('0x2a')](function(_0x493193){return _[_0x8358('0x37')](_0x1ec199,function(_0x1dd2e9){if(_0x1dd2e9[_0x8358('0x61')]===0x64){_0x1dd2e9[_0x8358('0x66')]=_0x493193;}return _0x1dd2e9;});});}else{return;}})[_0x8358('0x2a')](function(_0x1a94d1){if(_0x1a94d1)_0x1ec199=_0x1a94d1;if(_[_0x8358('0x65')](_0x2c8426,0x3eb)){var _0x2d55ef=_[_0x8358('0x4e')](_0x1ec199,{'sectionId':0x3eb});return getCustomDashboards(_0x2d55ef)[_0x8358('0x2a')](function(_0x58e925){return _[_0x8358('0x37')](_0x1ec199,function(_0x3268eb){if(_0x2d55ef[_0x8358('0x67')]){if(_0x3268eb[_0x8358('0x61')]===0x3eb){_0x3268eb['subsections']=_0x58e925;}}else{if(_0x3268eb[_0x8358('0x61')]===0x64){_0x3268eb[_0x8358('0x66')]=_0x58e925;}}return _0x3268eb;});});}else{return;}})[_0x8358('0x2a')](function(_0x3263f7){if(_0x3263f7)_0x1ec199=_0x3263f7;if(_[_0x8358('0x65')](_0x2c8426,0x709)){var _0x568eb0=_[_0x8358('0x4e')](_0x1ec199,{'sectionId':0x709});return getPlugins(_0x568eb0)[_0x8358('0x2a')](function(_0x4bc8d0){if(_0x568eb0['enabled']){return _['map'](_0x1ec199,function(_0x478c1d){if(_0x478c1d[_0x8358('0x61')]===0x709){_0x478c1d[_0x8358('0x66')]=_0x4bc8d0;}return _0x478c1d;});}else{var _0x2bfcc4={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4bc8d0};var _0x5ab58f=_[_0x8358('0x37')](_0x1ec199);_0x5ab58f[_0x8358('0x63')](_0x2bfcc4);return _0x5ab58f;}});}else{return;}})[_0x8358('0x2a')](function(_0x4d5a77){if(_0x4d5a77)_0x1ec199=_0x4d5a77;return _[_0x8358('0x42')](_0x1ec199,[_0x8358('0x67'),0x1]);})[_0x8358('0x2a')](respondWithResult(_0x421d19,null))[_0x8358('0x49')](handleError(_0x421d19,null));};function hasDefaultDashboard(_0x2e51d3){var _0x1acc8c=[0x65];return new BPromise(function(_0x3a52f1,_0x273a7a){try{if(_0x2e51d3[_0x8358('0x5a')]){_0x3a52f1(_0x1acc8c);}else{return db[_0x8358('0x5d')][_0x8358('0x68')]({'where':{'sectionId':_0x2e51d3['id']},'raw':!![]})['then'](function(_0x5dd5a5){_0x5dd5a5?_0x3a52f1(_0x1acc8c):_0x3a52f1();});}}catch(_0x4a001e){_0x273a7a(_0x4a001e);}});}function getCustomDashboards(_0x18deb0){var _0x3bb6e7=[];return new BPromise(function(_0x5e4bf5,_0x30a23f){try{if(_0x18deb0['autoAssociation']){return db[_0x8358('0x69')][_0x8358('0x48')]({'raw':!![]})[_0x8358('0x2a')](function(_0x135342){_0x135342[_0x8358('0x6a')](function(_0x327c24){_0x3bb6e7[_0x8358('0x63')](_0x327c24['id']+0x1869f);});_0x5e4bf5(_0x3bb6e7);});}else{return db[_0x8358('0x5d')]['findAll']({'where':{'sectionId':_0x18deb0['id']},'raw':!![]})[_0x8358('0x2a')](function(_0x7366e3){_0x7366e3[_0x8358('0x6a')](function(_0x55b935){_0x3bb6e7[_0x8358('0x63')](_0x55b935['resourceId']+0x1869f);});_0x5e4bf5(_0x3bb6e7);});}}catch(_0xc28391){_0x30a23f(_0xc28391);}});}function getPlugins(_0x54178f){var _0x536508=[];return new BPromise(function(_0x515eaa,_0x35631d){try{if(_0x54178f[_0x8358('0x5a')]){return db[_0x8358('0x6b')][_0x8358('0x48')]({'raw':!![]})[_0x8358('0x2a')](function(_0x51fb39){_0x51fb39[_0x8358('0x6a')](function(_0x362fb1){_0x536508[_0x8358('0x63')](_0x362fb1['id']+0x15b38);});_0x515eaa(_0x536508);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x54178f['id']},'raw':!![]})['then'](function(_0x255148){_0x255148[_0x8358('0x6a')](function(_0x564013){_0x536508[_0x8358('0x63')](_0x564013['resourceId']+0x15b38);});_0x515eaa(_0x536508);});}}catch(_0x2e80b8){_0x35631d(_0x2e80b8);}});}exports[_0x8358('0x6c')]=function(_0xb9e532,_0x36c2f0){return db[_0x8358('0x45')]['find']({'where':{'id':_0xb9e532[_0x8358('0x4b')]['id']}})['then'](handleEntityNotFound(_0x36c2f0,null))['then'](function(_0x28e51a){if(_0x28e51a){return db[_0x8358('0x56')][_0x8358('0x57')](function(_0x24fe4e){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0xb9e532[_0x8358('0x4b')]['id']},'attributes':['id'],'raw':!![]})[_0x8358('0x2a')](function(_0x238dbf){if(_0x238dbf){return db[_0x8358('0x59')][_0x8358('0x2b')]({'where':{'userProfileId':_0xb9e532[_0x8358('0x4b')]['id'],'id':_[_0x8358('0x37')](_0x238dbf,function(_0x479f00){return _0x479f00['id'];})},'transaction':_0x24fe4e});}})['then'](function(_0x3c9500){var _0x5c2551=_['map'](_0xb9e532[_0x8358('0x4f')],function(_0x4449a9){_0x4449a9[_0x8358('0x5b')]=_0xb9e532[_0x8358('0x4b')]['id'];return _0x4449a9;});return db[_0x8358('0x59')][_0x8358('0x6d')](_0x5c2551,{'raw':!![],'transaction':_0x24fe4e});})[_0x8358('0x2a')](function(_0x5779af){var _0x5084e0=_[_0x8358('0x42')](_[_0x8358('0x37')](_0x5779af,function(_0x79e428){return _0x79e428[_0x8358('0x51')]({'plain':!![]});}),{'includeAll':![]});if(_0x5084e0){return db[_0x8358('0x59')][_0x8358('0x48')]({'where':{'userProfileId':_0xb9e532[_0x8358('0x4b')]['id'],'sectionId':_[_0x8358('0x37')](_0x5084e0,function(_0xc5c35a){return _0xc5c35a[_0x8358('0x61')];})},'attributes':['id',_0x8358('0x61')],'raw':!![]})['then'](function(_0x4520aa){var _0x2fc845=_[_0x8358('0x37')](_0xb9e532[_0x8358('0x4f')],function(_0x2a456a){_0x2a456a['userProfileId']=_0xb9e532[_0x8358('0x4b')]['id'];return _0x2a456a;});return db[_0x8358('0x5d')][_0x8358('0x6d')](_0x2fc845,{'raw':!![],'transaction':_0x24fe4e});});}})[_0x8358('0x49')](handleError(_0x36c2f0,null));});}})[_0x8358('0x2a')](function(_0x41ecf6){var _0x3f5116=_[_0x8358('0x37')](_0x41ecf6,function(_0x455caa){return _0x455caa[_0x8358('0x51')]({'plain':!![]});});})[_0x8358('0x2a')](respondWithResult(_0x36c2f0,null))[_0x8358('0x49')](handleError(_0x36c2f0,null));};exports['removeResources']=function(_0x359ec6,_0x5019d7,_0x14ea77){return db[_0x8358('0x45')][_0x8358('0x4e')]({'where':{'id':_0x359ec6[_0x8358('0x4b')]['id']}})[_0x8358('0x2a')](handleEntityNotFound(_0x5019d7,null))['then'](function(_0x4cecdc){if(_0x4cecdc){return _0x4cecdc[_0x8358('0x6e')](_0x359ec6[_0x8358('0x39')]['ids']);}})[_0x8358('0x2a')](respondWithStatusCode(_0x5019d7,null))[_0x8358('0x49')](handleError(_0x5019d7,null));};exports[_0x8358('0x6f')]=function(_0x3ba613,_0x3ea84c){var _0x3a0cc3={};if(!_0x3ba613[_0x8358('0x39')][_0x8358('0x70')])throw new Error(_0x8358('0x71'));if(!_0x3ba613[_0x8358('0x39')][_0x8358('0x72')]('nolimit')){_0x3a0cc3[_0x8358('0x23')]=qs['limit'](_0x3ba613[_0x8358('0x39')][_0x8358('0x23')]);_0x3a0cc3[_0x8358('0x25')]=qs[_0x8358('0x25')](_0x3ba613[_0x8358('0x39')][_0x8358('0x25')]);}return db['UserProfile'][_0x8358('0x4e')]({'where':{'id':_0x3ba613[_0x8358('0x4b')]['id']}})[_0x8358('0x2a')](function(_0x294b70){if(!_0x294b70)throw new Error(_0x8358('0x73')+_0x3ba613['params']['id']);return db[_0x8358('0x45')]['getResources'](_0x3ba613);})[_0x8358('0x2a')](respondWithFilteredResult(_0x3ea84c,_0x3a0cc3))[_0x8358('0x49')](handleError(_0x3ea84c,null));};
\ No newline at end of file
index c08d50b..687fc8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4489=['update','remove','emit','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x1644bd,_0x5b2528){var _0x4c60bb=function(_0x368ef2){while(--_0x368ef2){_0x1644bd['push'](_0x1644bd['shift']());}};_0x4c60bb(++_0x5b2528);}(_0x4489,0x164));var _0x9448=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4489[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x9448('0x0'));var UserProfile=require(_0x9448('0x1'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x9448('0x2')](0x0);var events={'afterCreate':_0x9448('0x3'),'afterUpdate':_0x9448('0x4'),'afterDestroy':_0x9448('0x5')};function emitEvent(_0x4f7c08){return function(_0x49f6d5,_0x4bf96c,_0x5333bf){UserProfileEvents['emit'](_0x4f7c08+':'+_0x49f6d5['id'],_0x49f6d5);UserProfileEvents[_0x9448('0x6')](_0x4f7c08,_0x49f6d5);_0x5333bf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x9448('0x7')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0x01d9=['UserProfile','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x7b544a,_0x33c45a){var _0x33dcb4=function(_0x5ebc7f){while(--_0x5ebc7f){_0x7b544a['push'](_0x7b544a['shift']());}};_0x33dcb4(++_0x33c45a);}(_0x01d9,0x6c));var _0x901d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x01d9[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x901d('0x0'));var UserProfile=require(_0x901d('0x1'))['db'][_0x901d('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x901d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x901d('0x4'),'afterDestroy':_0x901d('0x5')};function emitEvent(_0x247cfc){return function(_0x8f7b4,_0x214f38,_0x456f31){UserProfileEvents[_0x901d('0x6')](_0x247cfc+':'+_0x8f7b4['id'],_0x8f7b4);UserProfileEvents['emit'](_0x247cfc,_0x8f7b4);_0x456f31(null);};}for(var e in events){if(events[_0x901d('0x7')](e)){var event=events[e];UserProfile[_0x901d('0x8')](e,emitEvent(event));}}module[_0x901d('0x9')]=UserProfileEvents;
\ No newline at end of file
index 7934523..c66cb18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['openchannelqueues','openchannelaccounts','OpenchannelAccount','smsaccounts','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','users','agents','telephones','admin','user','zendeskaccounts','ZendeskAccount','salesforceaccounts','freshdeskaccounts','FreshdeskAccount','deskaccounts','DeskAccount','vtigeraccounts','cannedanswers','dispositions','Disposition','customdashboards','Dashboard','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','Tag','templates','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','Reports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','OpenTabs','define','UserProfile','user_profiles','query','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','UserProfileSection','find','params','all','ignore','push','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','pick','key','foreignKey','forEach','options','autoAssociation','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','Tags','ThroughTags','color','tag','rows','dataValues','fax','mail','openchannel','lodash','./userProfile.attributes','squel','exports','models','filter','field','then','associatedResources','map','catch','value','model','findAll','name','resolve','resourceId','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','Lists','lists','companies','CmCompany','globalcustomfields','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceRecording','Agents','User','role','agent','Telephones','membername','telephone','VoiceQueues','queue','VoiceQueue','type','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','ivrcampaigns','Campaign','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus'];(function(_0x626f86,_0x7619b5){var _0x418916=function(_0x4a68f0){while(--_0x4a68f0){_0x626f86['push'](_0x626f86['shift']());}};_0x418916(++_0x7619b5);}(_0x958a,0x128));var _0xa958=function(_0x1c6eb5,_0x59b219){_0x1c6eb5=_0x1c6eb5-0x0;var _0x2ca03d=_0x958a[_0x1c6eb5];return _0x2ca03d;};'use strict';var _=require(_0xa958('0x0'));var attributes=require(_0xa958('0x1'));var qs=require('../../components/parsers/qs');var squel=require(_0xa958('0x2'));module[_0xa958('0x3')]=function(_0xa48257){var _0x3079b4=_0xa48257[_0xa958('0x4')];function _0x5194f8(_0x3424b0,_0x578481){return new Promise(function(_0x2024b8,_0x9b7d9e){if(!_0x578481)return _0x2024b8(null);var _0x2692d6=_0x578481[_0xa958('0x5')]?{[_0x578481[_0xa958('0x5')][_0xa958('0x6')]]:_0x578481[_0xa958('0x5')]['value']}:undefined;return _0x3079b4[_0x3424b0]['findAll']({'where':_0x2692d6,'raw':!![]})[_0xa958('0x7')](function(_0x249764){_0x578481[_0xa958('0x8')]=_[_0xa958('0x9')](_0x249764,'id');_0x2024b8(_0x578481);})[_0xa958('0xa')](function(_0x94caac){_0x9b7d9e(_0x94caac);});});}function _0xebb1c6(_0x587e67,_0x123579){return new Promise(function(_0x250999,_0x3b04df){var _0x1b2747=_0x587e67[_0xa958('0x5')]?{[_0x587e67['filter']['field']]:_0x587e67['filter'][_0xa958('0xb')]}:undefined;return _0x3079b4[_0x587e67[_0xa958('0xc')]][_0xa958('0xd')]({'where':_0x1b2747,'raw':!![]})['then'](function(_0x3ebc66){_0x123579['associatedResources']=_['map'](_0x3ebc66,function(_0x53d5c7){return _0x53d5c7[_0xa958('0xe')];});_0x250999(_0x123579);})[_0xa958('0xa')](function(_0xb90ac6){_0x3b04df(_0xb90ac6);});});}function _0x6a81c7(_0x2c270c,_0x398931,_0x23736f){if(!_0x398931)return Promise[_0xa958('0xf')](null);return new Promise(function(_0x4d836f,_0x39af49){return _0x3079b4['UserProfileResource'][_0xa958('0xd')]({'where':{'sectionId':_0x398931['id']},'raw':!![]})[_0xa958('0x7')](function(_0x52a184){if(_0x2c270c[_0xa958('0x6')]&&_0x2c270c[_0xa958('0x6')]!=='id'){_0x398931[_0xa958('0x8')]=_[_0xa958('0x9')](_0x52a184,function(_0x2759ad){return _0x2759ad[_0x2c270c[_0xa958('0x6')]];});}else{if(_0x23736f==='AnalyticExtractedReport'){_0x398931['associatedResources']=_[_0xa958('0x9')](_0x52a184,function(_0x1f48b7){return{'id':_0x1f48b7[_0xa958('0x10')],'type':_0x1f48b7['type']};});}else{_0x398931[_0xa958('0x8')]=_[_0xa958('0x9')](_0x52a184,function(_0x5c091a){return _0x5c091a[_0xa958('0x10')];});}}_0x4d836f(_0x398931);})[_0xa958('0xa')](function(_0x5c45e8){_0x39af49(_0x5c45e8);});});}function _0x5c5a2b(_0x201ed3,_0x40b51e){var _0x50b3c3={'parentSections':[]};switch(_0x201ed3[_0xa958('0x11')]()){case _0xa958('0x12'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x14');break;case _0xa958('0x15'):_0x50b3c3[_0xa958('0x13')]='SquareOdbc';break;case _0xa958('0x16'):_0x50b3c3['childModel']=_0xa958('0x17');_0x50b3c3[_0xa958('0x18')]=[{'name':_0xa958('0x19'),'field':_0xa958('0xe'),'foreignKey':_0xa958('0x1a')}];break;case _0xa958('0x1b'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x1c');break;case _0xa958('0x1d'):_0x50b3c3[_0xa958('0x13')]='CmContact';_0x50b3c3['parentSections']=[{'name':_0xa958('0x1e'),'field':'id','foreignKey':'ListId'}];break;case _0xa958('0x1f'):_0x50b3c3[_0xa958('0x13')]='CmList';break;case _0xa958('0x20'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x21');break;case _0xa958('0x22'):_0x50b3c3[_0xa958('0x13')]='CmCustomField';break;case'chatqueues':_0x50b3c3[_0xa958('0x13')]='ChatQueue';break;case'chatwebsites':_0x50b3c3[_0xa958('0x13')]=_0xa958('0x23');break;case _0xa958('0x24'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x25');break;case _0xa958('0x26'):_0x50b3c3['childModel']=_0xa958('0x27');break;case'inboundroutes':case'internalroutes':case _0xa958('0x28'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x29');break;case _0xa958('0x2a'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x2b');break;case _0xa958('0x2c'):_0x50b3c3[_0xa958('0x13')]='VoiceMail';break;case'voicerecordings':_0x50b3c3[_0xa958('0x13')]=_0xa958('0x2d');_0x50b3c3[_0xa958('0x18')]=[{'name':_0xa958('0x2e'),'field':_0xa958('0xe'),'foreignKey':'membername','model':_0xa958('0x2f'),'filter':{'field':_0xa958('0x30'),'value':[_0xa958('0x31')]}},{'name':_0xa958('0x32'),'field':'name','foreignKey':_0xa958('0x33'),'model':_0xa958('0x2f'),'filter':{'field':_0xa958('0x30'),'value':[_0xa958('0x34')]}},{'name':_0xa958('0x35'),'field':'name','foreignKey':_0xa958('0x36'),'model':_0xa958('0x37'),'filter':{'field':_0xa958('0x38'),'value':[_0xa958('0x39')]}},{'name':_0xa958('0x3a'),'field':_0xa958('0xe'),'foreignKey':_0xa958('0x36'),'model':_0xa958('0x37'),'filter':{'field':_0xa958('0x38'),'value':[_0xa958('0x3b')]}}];break;case'musiconholds':_0x50b3c3[_0xa958('0x13')]=_0xa958('0x3c');break;case _0xa958('0x3d'):_0x50b3c3['childModel']=_0xa958('0x3e');break;case _0xa958('0x3f'):_0x50b3c3['childModel']='VoicePrefix';break;case _0xa958('0x40'):_0x50b3c3['childModel']=_0xa958('0x41');break;case'mailqueues':_0x50b3c3[_0xa958('0x13')]='MailQueue';break;case _0xa958('0x42'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x43');break;case _0xa958('0x44'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x45');break;case _0xa958('0x46'):_0x50b3c3[_0xa958('0x13')]='OpenchannelQueue';break;case _0xa958('0x47'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x48');break;case'smsqueues':_0x50b3c3['childModel']='SmsQueue';break;case _0xa958('0x49'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x4a');break;case _0xa958('0x4b'):_0x50b3c3[_0xa958('0x13')]='WhatsappQueue';break;case _0xa958('0x4c'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x4d');break;case _0xa958('0x4e'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x4f');break;case _0xa958('0x50'):case _0xa958('0x51'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x37');if(_0x40b51e){_0x50b3c3[_0xa958('0x18')]=[{'name':_0xa958('0x35')},{'name':_0xa958('0x3a')}];}break;case _0xa958('0x52'):case _0xa958('0x53'):case _0xa958('0x54'):_0x50b3c3[_0xa958('0x13')]='User';if(_0x40b51e){_0x50b3c3['parentSections']=[{'name':'Users','filter':{'field':_0xa958('0x30'),'value':[_0xa958('0x55'),_0xa958('0x56')]},'ignore':!![]},{'name':_0xa958('0x2e')},{'name':'Telephones'}];}break;case _0xa958('0x57'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x58');break;case _0xa958('0x59'):_0x50b3c3[_0xa958('0x13')]='SalesforceAccount';break;case _0xa958('0x5a'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x5b');break;case'sugarcrmaccounts':_0x50b3c3[_0xa958('0x13')]='SugarcrmAccount';break;case _0xa958('0x5c'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x5d');break;case'zohoaccounts':_0x50b3c3[_0xa958('0x13')]='ZohoAccount';break;case _0xa958('0x5e'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x2f');break;case _0xa958('0x5f'):_0x50b3c3[_0xa958('0x13')]='CannedAnswer';break;case _0xa958('0x60'):_0x50b3c3['childModel']=_0xa958('0x61');break;case _0xa958('0x62'):_0x50b3c3['childModel']=_0xa958('0x63');break;case'intervals':_0x50b3c3[_0xa958('0x13')]=_0xa958('0x64');break;case _0xa958('0x65'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x66');break;case _0xa958('0x67'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x68');break;case _0xa958('0x69'):_0x50b3c3['childModel']=_0xa958('0x6a');break;case'tags':_0x50b3c3[_0xa958('0x13')]=_0xa958('0x6b');break;case _0xa958('0x6c'):_0x50b3c3['childModel']='Template';break;case _0xa958('0x6d'):_0x50b3c3[_0xa958('0x13')]=_0xa958('0x6e');break;case _0xa958('0x6f'):_0x50b3c3['childModel']=_0xa958('0x70');break;case _0xa958('0x71'):_0x50b3c3['childModel']=_0xa958('0x72');break;case _0xa958('0x73'):_0x50b3c3['childModel']=_0xa958('0x74');break;case'extractedreports':_0x50b3c3['childModel']='AnalyticExtractedReport';_0x50b3c3[_0xa958('0x18')]=[{'name':_0xa958('0x75'),'field':'id','foreignKey':_0xa958('0x76')}];break;case _0xa958('0x77'):_0x50b3c3['childModel']=_0xa958('0x78');break;}return _0x50b3c3;}function _0x4aaf1a(_0x1f200b,_0x26114a){var _0x1d75d7=_0x1f200b[_0xa958('0x79')](0x0)[_0xa958('0x7a')]()+_0x1f200b[_0xa958('0x7b')](0x1);var _0x485e67={'type':_0x3079b4['Sequelize'][_0xa958('0x7c')][_0xa958('0x7d')],'raw':!![]};return new Promise(function(_0x91dd01,_0x1e5e80){var _0x9c7a28=squel['select']()[_0xa958('0x6')](_0xa958('0x7e')+_0x1d75d7+_0xa958('0x7f'),'id')['field'](_0xa958('0x80'))[_0xa958('0x81')](_0xa958('0x82')+_0x1f200b+_0xa958('0x83'),'ui')[_0xa958('0x84')](_0xa958('0x85'),_0x26114a['id']);return _0x3079b4[_0xa958('0x86')]['query'](_0x9c7a28['toString'](),_0x485e67)[_0xa958('0x7')](function(_0x53c426){_0x26114a[_0x1d75d7+_0xa958('0x87')]=_0x53c426;_0x91dd01(_0x53c426);})[_0xa958('0xa')](function(_0x1ea51b){_0x1e5e80(_0x1ea51b);});});}return _0xa48257[_0xa958('0x88')](_0xa958('0x89'),attributes,{'tableName':_0xa958('0x8a'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0xe38515){var _0x358c8b={'raw':![],'where':{}};var _0x35a01e={};var _0x4ebc46={'count':0x0,'rows':[]};var _0x30cde9=_0xe38515[_0xa958('0x8b')]['section'];var _0x53a26d=_0xe38515[_0xa958('0x8b')][_0xa958('0x8c')]||![];var _0xa769e0=_0x5c5a2b(_0x30cde9,_0x53a26d);if(!_0xa769e0[_0xa958('0x13')])throw new Error(_0xa958('0x8d')+_0x30cde9+'\x27');var _0x5625e7=[{'name':_0x30cde9}];if(!_[_0xa958('0x8e')](_0xa769e0['parentSections']))_0x5625e7=_0xa769e0[_0xa958('0x18')];var _0x59957d=[];for(var _0x3c8430=0x0;_0x3c8430<_0x5625e7[_0xa958('0x8f')];_0x3c8430++){_0x59957d['push'](_0x3079b4[_0xa958('0x90')][_0xa958('0x91')]({'where':{'userProfileId':_0xe38515[_0xa958('0x92')]['id'],'name':_0x5625e7[_0x3c8430][_0xa958('0xe')]},'raw':!![]}));}return Promise[_0xa958('0x93')](_0x59957d)[_0xa958('0x7')](function(_0xb8e7f1){var _0x273c8e=_['filter'](_0xb8e7f1,function(_0x510427){return _0x510427?_0x510427:undefined;});var _0x513dd9=_[_0xa958('0x5')](_0x5625e7,['ignore',!![]]);var _0x21d139=_[_0xa958('0x8e')](_0x273c8e)&&_['isEmpty'](_0x513dd9)?null:_['union'](_0x513dd9,_0x273c8e);if(!_0x21d139)return null;var _0x689b3f=[];for(var _0x19a262=0x0;_0x19a262<_0x21d139[_0xa958('0x8f')];_0x19a262++){var _0x36f53c=_[_0xa958('0x91')](_0x5625e7,function(_0x58083e){return _0x21d139[_0x19a262]?_0x58083e[_0xa958('0xe')]===_0x21d139[_0x19a262]['name']:null;});if(_0x36f53c){if(_0x21d139[_0x19a262][_0xa958('0x94')]){_0x689b3f[_0xa958('0x95')](_0x5194f8(_0xa769e0[_0xa958('0x13')],_0x21d139[_0x19a262]));}else{if(!_0x21d139[_0x19a262]['autoAssociation']){_0x689b3f[_0xa958('0x95')](_0x6a81c7(_0x36f53c,_0x21d139[_0x19a262],_0xa769e0[_0xa958('0x13')]));}else{if(_0x36f53c['model']){_0x689b3f[_0xa958('0x95')](_0xebb1c6(_0x36f53c,_0x21d139[_0x19a262]));}}}}}return Promise[_0xa958('0x93')](_0x689b3f);})[_0xa958('0x7')](function(_0xb57878){var _0x1cd29c=_0xb57878;var _0x4e6605=null;if(_0x1cd29c){_0x4e6605=_0x1cd29c[_0xa958('0x8f')]===0x1?_0x1cd29c[0x0]:null;}if(!_0x4e6605&&!_0x1cd29c)return _0x4ebc46;var _0x55a15a=_0x3079b4[_0xa769e0[_0xa958('0x13')]]['rawAttributes'];_0x35a01e[_0xa958('0xc')]=_[_0xa958('0x96')](_0x55a15a);_0x35a01e[_0xa958('0x8b')]=_[_0xa958('0x96')](_0xe38515[_0xa958('0x8b')]);_0x35a01e[_0xa958('0x97')]=_[_0xa958('0x98')](_0x35a01e['model'],_0x35a01e['query']);_0x358c8b[_0xa958('0x99')]=_['intersection'](_0x35a01e[_0xa958('0xc')],qs[_0xa958('0x9a')](_0xe38515[_0xa958('0x8b')][_0xa958('0x9a')]));_0x358c8b[_0xa958('0x99')]=_0x358c8b[_0xa958('0x99')][_0xa958('0x8f')]?_0x358c8b[_0xa958('0x99')]:_0x35a01e['model'];if(!_0xe38515[_0xa958('0x8b')][_0xa958('0x9b')](_0xa958('0x9c'))){_0x358c8b[_0xa958('0x9d')]=qs['limit'](_0xe38515[_0xa958('0x8b')][_0xa958('0x9d')]);_0x358c8b[_0xa958('0x9e')]=qs[_0xa958('0x9e')](_0xe38515[_0xa958('0x8b')][_0xa958('0x9e')]);}_0x358c8b['order']=qs[_0xa958('0x9f')](_0xe38515[_0xa958('0x8b')][_0xa958('0x9f')]);_0x358c8b[_0xa958('0x84')]=qs[_0xa958('0x97')](_[_0xa958('0xa0')](_0xe38515['query'],_0x35a01e['filters']));if(_0xe38515['query'][_0xa958('0x5')]){_0x358c8b['where']=_['merge'](_0x358c8b[_0xa958('0x84')],{'$or':_[_0xa958('0x9')](_0x55a15a,function(_0x45725c){if(_0x45725c[_0xa958('0x38')][_0xa958('0xa1')]!=='VIRTUAL'){var _0x55908f={};_0x55908f[_0x45725c[_0xa958('0x6')]]={'$like':'%'+_0xe38515[_0xa958('0x8b')][_0xa958('0x5')]+'%'};return _0x55908f;}})});}var _0x3e8df4=[];var _0x4e0f32=null;var _0x2fcb54={};if(_0x4e6605){_0x4e0f32=_[_0xa958('0x91')](_0x5625e7,[_0xa958('0xe'),_0x4e6605[_0xa958('0xe')]]);if(_0x4e0f32[_0xa958('0x6')]){_0x2fcb54={};if(_0xa769e0['childModel']==='AnalyticExtractedReport'){_0x2fcb54[_0x4e0f32[_0xa958('0xa2')]]=_['map'](_0x4e6605[_0xa958('0x8')],'id');}else{_0x2fcb54[_0x4e0f32[_0xa958('0xa2')]]=_0x4e6605[_0xa958('0x8')];}_0x3e8df4['push'](_0x2fcb54);}else{_0x358c8b[_0xa958('0x84')]['id']=_0x4e6605['associatedResources'];}}else{for(var _0x20a536=0x0;_0x20a536<_0x1cd29c[_0xa958('0x8f')];_0x20a536++){_0x4e0f32=_['find'](_0x5625e7,['name',_0x1cd29c[_0x20a536]['name']]);if(_0x4e0f32['field']){_0x2fcb54={};_0x2fcb54[_0x4e0f32[_0xa958('0xa2')]]=_0x1cd29c[_0x20a536][_0xa958('0x8')];_0x3e8df4[_0xa958('0x95')](_0x2fcb54);}else{if(!_0x358c8b[_0xa958('0x84')]['id'])_0x358c8b[_0xa958('0x84')]['id']=[];_0x1cd29c[_0x20a536]['associatedResources'][_0xa958('0xa3')](function(_0x5c6820){_0x358c8b['where']['id'][_0xa958('0x95')](_0x5c6820);});}}}if(!_[_0xa958('0x8e')](_0x3e8df4)){_0x358c8b[_0xa958('0x84')]=_['merge'](_0x358c8b[_0xa958('0x84')],{'$and':{'$or':_0x3e8df4}});}_0x358c8b=_['merge']({},_0x358c8b,_0xe38515[_0xa958('0xa4')]);if(_0x4e6605&&!_0x4e6605[_0xa958('0xa5')]&&_0xa769e0['childModel']==='AnalyticExtractedReport'){if(_0xe38515[_0xa958('0x8b')][_0xa958('0xa6')]){_0x358c8b[_0xa958('0xa7')]=[{'all':!![]}];}return _0x3079b4[_0xa769e0[_0xa958('0x13')]]['findAll'](_0x358c8b)[_0xa958('0x7')](function(_0x5bd56){var _0x4dd810=[];_0x5bd56[_0xa958('0xa3')](function(_0x5c2512){var _0x19a6e2;switch(_0x5c2512[_0xa958('0xa8')]){case _0xa958('0xa9'):_0x19a6e2=_['find'](_0x4e6605[_0xa958('0x8')],function(_0x2b5934){return _0x2b5934['id']===_0x5c2512['reportId']&&_0x2b5934[_0xa958('0x38')]===_0xa958('0xaa');});break;case _0xa958('0xab'):_0x19a6e2=_[_0xa958('0x91')](_0x4e6605[_0xa958('0x8')],function(_0x695feb){return _0x695feb['id']===_0x5c2512[_0xa958('0x76')]&&_0x695feb[_0xa958('0x38')]===_0xa958('0xac');});break;}if(_0x19a6e2)_0x4dd810['push'](_0x5c2512);});_0x4ebc46[_0xa958('0xad')]=_0x4dd810[_0xa958('0x8f')];_0x4ebc46['rows']=_0x4dd810;return _0x4ebc46;});}else{return _0x3079b4[_0xa769e0[_0xa958('0x13')]][_0xa958('0xad')]({'where':_0x358c8b[_0xa958('0x84')]})['then'](function(_0xc2e51){_0x4ebc46['count']=_0xc2e51;if(_0xe38515['query'][_0xa958('0xa6')]){if(_0xa769e0[_0xa958('0x13')]==='CmContact'){_0x358c8b['include']=[{'model':_0x3079b4[_0xa958('0x6b')],'as':_0xa958('0xae'),'attributes':['id',_0xa958('0xe'),'color'],'required':_0xe38515[_0xa958('0x8b')]['tag']?!![]:![]},{'model':_0x3079b4['Tag'],'as':_0xa958('0xaf'),'attributes':['id',_0xa958('0xe'),_0xa958('0xb0')],'through':_0xe38515['query'][_0xa958('0xb1')]?{'attributes':[],'where':{'TagId':_0xe38515[_0xa958('0x8b')][_0xa958('0xb1')]||undefined}}:{},'required':_0xe38515['query'][_0xa958('0xb1')]?!![]:![]}];}else{_0x358c8b[_0xa958('0xa7')]=[{'all':!![]}];}}return _0x3079b4[_0xa769e0[_0xa958('0x13')]][_0xa958('0xd')](_0x358c8b);})['then'](function(_0x3af577){_0x4ebc46[_0xa958('0xb2')]=_0x3af577;if(_0x30cde9===_0xa958('0x2e')&&_0xe38515[_0xa958('0x8b')]['openTabs']==='true'){var _0x5b67d3=[];for(var _0x5a533d=0x0;_0x5a533d<_0x4ebc46[_0xa958('0xb2')][_0xa958('0x8f')];_0x5a533d++){_0x5b67d3['push'](_0x4aaf1a('chat',_0x4ebc46[_0xa958('0xb2')][_0x5a533d][_0xa958('0xb3')]));_0x5b67d3[_0xa958('0x95')](_0x4aaf1a('sms',_0x4ebc46[_0xa958('0xb2')][_0x5a533d][_0xa958('0xb3')]));_0x5b67d3['push'](_0x4aaf1a(_0xa958('0xb4'),_0x4ebc46[_0xa958('0xb2')][_0x5a533d][_0xa958('0xb3')]));_0x5b67d3[_0xa958('0x95')](_0x4aaf1a(_0xa958('0xb5'),_0x4ebc46[_0xa958('0xb2')][_0x5a533d][_0xa958('0xb3')]));_0x5b67d3[_0xa958('0x95')](_0x4aaf1a(_0xa958('0xb6'),_0x4ebc46[_0xa958('0xb2')][_0x5a533d][_0xa958('0xb3')]));_0x5b67d3[_0xa958('0x95')](_0x4aaf1a('whatsapp',_0x4ebc46['rows'][_0x5a533d][_0xa958('0xb3')]));}return Promise[_0xa958('0x93')](_0x5b67d3)[_0xa958('0x7')](function(){return _0x4ebc46;});}return _0x4ebc46;});}});}}});};
\ No newline at end of file
+var _0x6050=['CustomReports','count','CmContact','Tags','color','tag','Tag','ThroughTags','openTabs','true','rows','chat','dataValues','fax','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','value','findAll','then','map','catch','field','model','associatedResources','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','projectName','projects','JscriptyProject','contacts','parentSections','ListId','lists','CmList','companies','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','membername','role','agent','Telephones','User','VoiceQueues','queue','QueueCampaigns','VoiceQueue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','SmsQueue','SmsAccount','WhatsappQueue','WhatsappAccount','Team','queuecampaigns','users','agents','telephones','Users','admin','Agents','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','pauses','Pause','Schedule','sounds','templates','Template','triggers','Trigger','trunks','Trunk','plugins','Plugin','extractedreports','Reports','AnalyticMetric','charAt','slice','Sequelize','QueryTypes','SELECT','InteractionId','ui.createdAt','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','all','ignore','union','find','push','length','rawAttributes','keys','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','filters','merge','key','VIRTUAL','foreignKey','forEach','options','autoAssociation','includeAll','include','reportType','default','reportId','custom'];(function(_0x1a7cab,_0x261e6a){var _0x12d0cf=function(_0xef75d){while(--_0xef75d){_0x1a7cab['push'](_0x1a7cab['shift']());}};_0x12d0cf(++_0x261e6a);}(_0x6050,0x196));var _0x0605=function(_0x16633d,_0x682ca0){_0x16633d=_0x16633d-0x0;var _0x70e64c=_0x6050[_0x16633d];return _0x70e64c;};'use strict';var _=require(_0x0605('0x0'));var attributes=require(_0x0605('0x1'));var qs=require(_0x0605('0x2'));var squel=require(_0x0605('0x3'));module[_0x0605('0x4')]=function(_0x19c419){var _0x523a28=_0x19c419[_0x0605('0x5')];function _0x4576f4(_0x43403d,_0x5797b0){return new Promise(function(_0x533b6d,_0x4aca21){if(!_0x5797b0)return _0x533b6d(null);var _0xd78d96=_0x5797b0['filter']?{[_0x5797b0['filter']['field']]:_0x5797b0[_0x0605('0x6')][_0x0605('0x7')]}:undefined;return _0x523a28[_0x43403d][_0x0605('0x8')]({'where':_0xd78d96,'raw':!![]})[_0x0605('0x9')](function(_0x44fdd3){_0x5797b0['associatedResources']=_[_0x0605('0xa')](_0x44fdd3,'id');_0x533b6d(_0x5797b0);})[_0x0605('0xb')](function(_0xe54b22){_0x4aca21(_0xe54b22);});});}function _0x2c5e23(_0x203772,_0x409f0d){return new Promise(function(_0x4385d3,_0x4af103){var _0x1e8014=_0x203772[_0x0605('0x6')]?{[_0x203772[_0x0605('0x6')][_0x0605('0xc')]]:_0x203772[_0x0605('0x6')][_0x0605('0x7')]}:undefined;return _0x523a28[_0x203772[_0x0605('0xd')]][_0x0605('0x8')]({'where':_0x1e8014,'raw':!![]})[_0x0605('0x9')](function(_0x65a20b){_0x409f0d[_0x0605('0xe')]=_['map'](_0x65a20b,function(_0x2b4610){return _0x2b4610[_0x0605('0xf')];});_0x4385d3(_0x409f0d);})[_0x0605('0xb')](function(_0x5ce56a){_0x4af103(_0x5ce56a);});});}function _0x4eefe9(_0x12a455,_0xd0996d,_0xa83443){if(!_0xd0996d)return Promise[_0x0605('0x10')](null);return new Promise(function(_0xefc557,_0x351dbd){return _0x523a28[_0x0605('0x11')][_0x0605('0x8')]({'where':{'sectionId':_0xd0996d['id']},'raw':!![]})[_0x0605('0x9')](function(_0x40abb2){if(_0x12a455[_0x0605('0xc')]&&_0x12a455[_0x0605('0xc')]!=='id'){_0xd0996d[_0x0605('0xe')]=_[_0x0605('0xa')](_0x40abb2,function(_0x59bc87){return _0x59bc87[_0x12a455[_0x0605('0xc')]];});}else{if(_0xa83443===_0x0605('0x12')){_0xd0996d[_0x0605('0xe')]=_[_0x0605('0xa')](_0x40abb2,function(_0x1e8c6d){return{'id':_0x1e8c6d[_0x0605('0x13')],'type':_0x1e8c6d[_0x0605('0x14')]};});}else{_0xd0996d[_0x0605('0xe')]=_[_0x0605('0xa')](_0x40abb2,function(_0x5b0d44){return _0x5b0d44[_0x0605('0x13')];});}}_0xefc557(_0xd0996d);})['catch'](function(_0x3efc38){_0x351dbd(_0x3efc38);});});}function _0x118e9c(_0x110098,_0xf182c4){var _0x10c575={'parentSections':[]};switch(_0x110098[_0x0605('0x15')]()){case _0x0605('0x16'):_0x10c575[_0x0605('0x17')]=_0x0605('0x18');break;case _0x0605('0x19'):_0x10c575[_0x0605('0x17')]=_0x0605('0x1a');break;case'squarerecordings':_0x10c575[_0x0605('0x17')]=_0x0605('0x1b');_0x10c575['parentSections']=[{'name':'SquareProjects','field':'name','foreignKey':_0x0605('0x1c')}];break;case _0x0605('0x1d'):_0x10c575[_0x0605('0x17')]=_0x0605('0x1e');break;case _0x0605('0x1f'):_0x10c575[_0x0605('0x17')]='CmContact';_0x10c575[_0x0605('0x20')]=[{'name':'Lists','field':'id','foreignKey':_0x0605('0x21')}];break;case _0x0605('0x22'):_0x10c575[_0x0605('0x17')]=_0x0605('0x23');break;case _0x0605('0x24'):_0x10c575[_0x0605('0x17')]='CmCompany';break;case _0x0605('0x25'):_0x10c575[_0x0605('0x17')]=_0x0605('0x26');break;case _0x0605('0x27'):_0x10c575[_0x0605('0x17')]=_0x0605('0x28');break;case _0x0605('0x29'):_0x10c575[_0x0605('0x17')]=_0x0605('0x2a');break;case _0x0605('0x2b'):_0x10c575[_0x0605('0x17')]=_0x0605('0x2c');break;case _0x0605('0x2d'):_0x10c575[_0x0605('0x17')]=_0x0605('0x2e');break;case _0x0605('0x2f'):case _0x0605('0x30'):case _0x0605('0x31'):_0x10c575[_0x0605('0x17')]=_0x0605('0x32');break;case _0x0605('0x33'):_0x10c575[_0x0605('0x17')]=_0x0605('0x34');break;case _0x0605('0x35'):_0x10c575[_0x0605('0x17')]=_0x0605('0x36');break;case _0x0605('0x37'):_0x10c575['childModel']=_0x0605('0x38');_0x10c575[_0x0605('0x20')]=[{'name':'Agents','field':_0x0605('0xf'),'foreignKey':_0x0605('0x39'),'model':'User','filter':{'field':_0x0605('0x3a'),'value':[_0x0605('0x3b')]}},{'name':_0x0605('0x3c'),'field':_0x0605('0xf'),'foreignKey':_0x0605('0x39'),'model':_0x0605('0x3d'),'filter':{'field':'role','value':['telephone']}},{'name':_0x0605('0x3e'),'field':_0x0605('0xf'),'foreignKey':_0x0605('0x3f'),'model':'VoiceQueue','filter':{'field':_0x0605('0x14'),'value':['inbound']}},{'name':_0x0605('0x40'),'field':_0x0605('0xf'),'foreignKey':_0x0605('0x3f'),'model':_0x0605('0x41'),'filter':{'field':_0x0605('0x14'),'value':[_0x0605('0x42')]}}];break;case _0x0605('0x43'):_0x10c575[_0x0605('0x17')]=_0x0605('0x44');break;case _0x0605('0x45'):_0x10c575['childModel']=_0x0605('0x46');break;case'voiceprefixes':_0x10c575[_0x0605('0x17')]=_0x0605('0x47');break;case _0x0605('0x48'):_0x10c575['childModel']='Campaign';break;case _0x0605('0x49'):_0x10c575['childModel']=_0x0605('0x4a');break;case _0x0605('0x4b'):_0x10c575[_0x0605('0x17')]=_0x0605('0x4c');break;case _0x0605('0x4d'):_0x10c575[_0x0605('0x17')]=_0x0605('0x4e');break;case _0x0605('0x4f'):_0x10c575[_0x0605('0x17')]=_0x0605('0x50');break;case _0x0605('0x51'):_0x10c575[_0x0605('0x17')]=_0x0605('0x52');break;case'smsqueues':_0x10c575['childModel']=_0x0605('0x53');break;case'smsaccounts':_0x10c575[_0x0605('0x17')]=_0x0605('0x54');break;case'whatsappqueues':_0x10c575[_0x0605('0x17')]=_0x0605('0x55');break;case'whatsappaccounts':_0x10c575[_0x0605('0x17')]=_0x0605('0x56');break;case'teams':_0x10c575[_0x0605('0x17')]=_0x0605('0x57');break;case'voicequeues':case _0x0605('0x58'):_0x10c575['childModel']='VoiceQueue';if(_0xf182c4){_0x10c575[_0x0605('0x20')]=[{'name':_0x0605('0x3e')},{'name':_0x0605('0x40')}];}break;case _0x0605('0x59'):case _0x0605('0x5a'):case _0x0605('0x5b'):_0x10c575[_0x0605('0x17')]=_0x0605('0x3d');if(_0xf182c4){_0x10c575['parentSections']=[{'name':_0x0605('0x5c'),'filter':{'field':_0x0605('0x3a'),'value':[_0x0605('0x5d'),'user']},'ignore':!![]},{'name':_0x0605('0x5e')},{'name':_0x0605('0x3c')}];}break;case _0x0605('0x5f'):_0x10c575[_0x0605('0x17')]=_0x0605('0x60');break;case _0x0605('0x61'):_0x10c575[_0x0605('0x17')]=_0x0605('0x62');break;case _0x0605('0x63'):_0x10c575['childModel']=_0x0605('0x64');break;case _0x0605('0x65'):_0x10c575[_0x0605('0x17')]=_0x0605('0x66');break;case _0x0605('0x67'):_0x10c575[_0x0605('0x17')]=_0x0605('0x68');break;case _0x0605('0x69'):_0x10c575[_0x0605('0x17')]=_0x0605('0x6a');break;case'vtigeraccounts':_0x10c575['childModel']='User';break;case _0x0605('0x6b'):_0x10c575[_0x0605('0x17')]=_0x0605('0x6c');break;case _0x0605('0x6d'):_0x10c575[_0x0605('0x17')]=_0x0605('0x6e');break;case'customdashboards':_0x10c575[_0x0605('0x17')]=_0x0605('0x6f');break;case _0x0605('0x70'):_0x10c575[_0x0605('0x17')]='Interval';break;case _0x0605('0x71'):_0x10c575[_0x0605('0x17')]=_0x0605('0x72');break;case'scheduler':_0x10c575['childModel']=_0x0605('0x73');break;case _0x0605('0x74'):_0x10c575[_0x0605('0x17')]='Sound';break;case'tags':_0x10c575[_0x0605('0x17')]='Tag';break;case _0x0605('0x75'):_0x10c575[_0x0605('0x17')]=_0x0605('0x76');break;case _0x0605('0x77'):_0x10c575[_0x0605('0x17')]=_0x0605('0x78');break;case _0x0605('0x79'):_0x10c575['childModel']=_0x0605('0x7a');break;case'variables':_0x10c575[_0x0605('0x17')]='Variable';break;case _0x0605('0x7b'):_0x10c575[_0x0605('0x17')]=_0x0605('0x7c');break;case _0x0605('0x7d'):_0x10c575['childModel']='AnalyticExtractedReport';_0x10c575[_0x0605('0x20')]=[{'name':_0x0605('0x7e'),'field':'id','foreignKey':'reportId'}];break;case'metrics':_0x10c575['childModel']=_0x0605('0x7f');break;}return _0x10c575;}function _0x2b43cf(_0x267b55,_0xc8f15c){var _0x3af2ad=_0x267b55[_0x0605('0x80')](0x0)['toUpperCase']()+_0x267b55[_0x0605('0x81')](0x1);var _0x12a466={'type':_0x523a28[_0x0605('0x82')][_0x0605('0x83')][_0x0605('0x84')],'raw':!![]};return new Promise(function(_0x39358b,_0x1dd153){var _0x2f84fd=squel['select']()['field']('ui.'+_0x3af2ad+_0x0605('0x85'),'id')[_0x0605('0xc')](_0x0605('0x86'))['from']('user_has_'+_0x267b55+_0x0605('0x87'),'ui')[_0x0605('0x88')](_0x0605('0x89'),_0xc8f15c['id']);return _0x523a28[_0x0605('0x8a')][_0x0605('0x8b')](_0x2f84fd[_0x0605('0x8c')](),_0x12a466)[_0x0605('0x9')](function(_0x19b55e){_0xc8f15c[_0x3af2ad+_0x0605('0x8d')]=_0x19b55e;_0x39358b(_0x19b55e);})[_0x0605('0xb')](function(_0xac4a33){_0x1dd153(_0xac4a33);});});}return _0x19c419[_0x0605('0x8e')]('UserProfile',attributes,{'tableName':_0x0605('0x8f'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2fd9e3){var _0x1a2e3c={'raw':![],'where':{}};var _0x37b35b={};var _0x47248d={'count':0x0,'rows':[]};var _0xe86cd3=_0x2fd9e3['query'][_0x0605('0x90')];var _0x4b7917=_0x2fd9e3['query'][_0x0605('0x91')]||![];var _0x45377d=_0x118e9c(_0xe86cd3,_0x4b7917);if(!_0x45377d[_0x0605('0x17')])throw new Error(_0x0605('0x92')+_0xe86cd3+'\x27');var _0x364a06=[{'name':_0xe86cd3}];if(!_[_0x0605('0x93')](_0x45377d[_0x0605('0x20')]))_0x364a06=_0x45377d[_0x0605('0x20')];var _0x7ac9f0=[];for(var _0x309da5=0x0;_0x309da5<_0x364a06['length'];_0x309da5++){_0x7ac9f0['push'](_0x523a28['UserProfileSection']['find']({'where':{'userProfileId':_0x2fd9e3['params']['id'],'name':_0x364a06[_0x309da5][_0x0605('0xf')]},'raw':!![]}));}return Promise[_0x0605('0x94')](_0x7ac9f0)[_0x0605('0x9')](function(_0x5be4b6){var _0x162986=_[_0x0605('0x6')](_0x5be4b6,function(_0x43d2a6){return _0x43d2a6?_0x43d2a6:undefined;});var _0x431cdd=_[_0x0605('0x6')](_0x364a06,[_0x0605('0x95'),!![]]);var _0x55cc8b=_[_0x0605('0x93')](_0x162986)&&_[_0x0605('0x93')](_0x431cdd)?null:_[_0x0605('0x96')](_0x431cdd,_0x162986);if(!_0x55cc8b)return null;var _0x4f00d5=[];for(var _0x527992=0x0;_0x527992<_0x55cc8b['length'];_0x527992++){var _0x3c4375=_[_0x0605('0x97')](_0x364a06,function(_0xfc544f){return _0x55cc8b[_0x527992]?_0xfc544f[_0x0605('0xf')]===_0x55cc8b[_0x527992]['name']:null;});if(_0x3c4375){if(_0x55cc8b[_0x527992]['ignore']){_0x4f00d5[_0x0605('0x98')](_0x4576f4(_0x45377d[_0x0605('0x17')],_0x55cc8b[_0x527992]));}else{if(!_0x55cc8b[_0x527992]['autoAssociation']){_0x4f00d5[_0x0605('0x98')](_0x4eefe9(_0x3c4375,_0x55cc8b[_0x527992],_0x45377d[_0x0605('0x17')]));}else{if(_0x3c4375[_0x0605('0xd')]){_0x4f00d5[_0x0605('0x98')](_0x2c5e23(_0x3c4375,_0x55cc8b[_0x527992]));}}}}}return Promise[_0x0605('0x94')](_0x4f00d5);})[_0x0605('0x9')](function(_0xb6fb53){var _0x2128b6=_0xb6fb53;var _0x25890a=null;if(_0x2128b6){_0x25890a=_0x2128b6[_0x0605('0x99')]===0x1?_0x2128b6[0x0]:null;}if(!_0x25890a&&!_0x2128b6)return _0x47248d;var _0x315c94=_0x523a28[_0x45377d[_0x0605('0x17')]][_0x0605('0x9a')];_0x37b35b['model']=_['keys'](_0x315c94);_0x37b35b[_0x0605('0x8b')]=_[_0x0605('0x9b')](_0x2fd9e3[_0x0605('0x8b')]);_0x37b35b['filters']=_['intersection'](_0x37b35b[_0x0605('0xd')],_0x37b35b['query']);_0x1a2e3c['attributes']=_[_0x0605('0x9c')](_0x37b35b[_0x0605('0xd')],qs[_0x0605('0x9d')](_0x2fd9e3['query']['fields']));_0x1a2e3c['attributes']=_0x1a2e3c[_0x0605('0x9e')]['length']?_0x1a2e3c[_0x0605('0x9e')]:_0x37b35b[_0x0605('0xd')];if(!_0x2fd9e3[_0x0605('0x8b')][_0x0605('0x9f')](_0x0605('0xa0'))){_0x1a2e3c[_0x0605('0xa1')]=qs[_0x0605('0xa1')](_0x2fd9e3[_0x0605('0x8b')]['limit']);_0x1a2e3c['offset']=qs[_0x0605('0xa2')](_0x2fd9e3[_0x0605('0x8b')]['offset']);}_0x1a2e3c[_0x0605('0xa3')]=qs['sort'](_0x2fd9e3[_0x0605('0x8b')][_0x0605('0xa4')]);_0x1a2e3c['where']=qs[_0x0605('0xa5')](_['pick'](_0x2fd9e3[_0x0605('0x8b')],_0x37b35b[_0x0605('0xa5')]));if(_0x2fd9e3[_0x0605('0x8b')][_0x0605('0x6')]){_0x1a2e3c['where']=_[_0x0605('0xa6')](_0x1a2e3c[_0x0605('0x88')],{'$or':_['map'](_0x315c94,function(_0x27dd5f){if(_0x27dd5f[_0x0605('0x14')][_0x0605('0xa7')]!==_0x0605('0xa8')){var _0x909282={};_0x909282[_0x27dd5f[_0x0605('0xc')]]={'$like':'%'+_0x2fd9e3['query']['filter']+'%'};return _0x909282;}})});}var _0x3f005a=[];var _0x1f441f=null;var _0x2e7612={};if(_0x25890a){_0x1f441f=_[_0x0605('0x97')](_0x364a06,['name',_0x25890a[_0x0605('0xf')]]);if(_0x1f441f[_0x0605('0xc')]){_0x2e7612={};if(_0x45377d[_0x0605('0x17')]===_0x0605('0x12')){_0x2e7612[_0x1f441f[_0x0605('0xa9')]]=_[_0x0605('0xa')](_0x25890a[_0x0605('0xe')],'id');}else{_0x2e7612[_0x1f441f['foreignKey']]=_0x25890a[_0x0605('0xe')];}_0x3f005a[_0x0605('0x98')](_0x2e7612);}else{_0x1a2e3c[_0x0605('0x88')]['id']=_0x25890a[_0x0605('0xe')];}}else{for(var _0x4c49ac=0x0;_0x4c49ac<_0x2128b6['length'];_0x4c49ac++){_0x1f441f=_[_0x0605('0x97')](_0x364a06,[_0x0605('0xf'),_0x2128b6[_0x4c49ac]['name']]);if(_0x1f441f[_0x0605('0xc')]){_0x2e7612={};_0x2e7612[_0x1f441f['foreignKey']]=_0x2128b6[_0x4c49ac]['associatedResources'];_0x3f005a[_0x0605('0x98')](_0x2e7612);}else{if(!_0x1a2e3c[_0x0605('0x88')]['id'])_0x1a2e3c[_0x0605('0x88')]['id']=[];_0x2128b6[_0x4c49ac]['associatedResources'][_0x0605('0xaa')](function(_0xdd449){_0x1a2e3c[_0x0605('0x88')]['id'][_0x0605('0x98')](_0xdd449);});}}}if(!_[_0x0605('0x93')](_0x3f005a)){_0x1a2e3c[_0x0605('0x88')]=_[_0x0605('0xa6')](_0x1a2e3c[_0x0605('0x88')],{'$and':{'$or':_0x3f005a}});}_0x1a2e3c=_[_0x0605('0xa6')]({},_0x1a2e3c,_0x2fd9e3[_0x0605('0xab')]);if(_0x25890a&&!_0x25890a[_0x0605('0xac')]&&_0x45377d[_0x0605('0x17')]===_0x0605('0x12')){if(_0x2fd9e3[_0x0605('0x8b')][_0x0605('0xad')]){_0x1a2e3c[_0x0605('0xae')]=[{'all':!![]}];}return _0x523a28[_0x45377d['childModel']][_0x0605('0x8')](_0x1a2e3c)[_0x0605('0x9')](function(_0x2f9235){var _0x31f416=[];_0x2f9235[_0x0605('0xaa')](function(_0x5ed2dc){var _0xaa5ee9;switch(_0x5ed2dc[_0x0605('0xaf')]){case _0x0605('0xb0'):_0xaa5ee9=_['find'](_0x25890a[_0x0605('0xe')],function(_0x4a0277){return _0x4a0277['id']===_0x5ed2dc[_0x0605('0xb1')]&&_0x4a0277['type']==='DefaultReports';});break;case _0x0605('0xb2'):_0xaa5ee9=_['find'](_0x25890a['associatedResources'],function(_0xf58bdf){return _0xf58bdf['id']===_0x5ed2dc[_0x0605('0xb1')]&&_0xf58bdf[_0x0605('0x14')]===_0x0605('0xb3');});break;}if(_0xaa5ee9)_0x31f416[_0x0605('0x98')](_0x5ed2dc);});_0x47248d[_0x0605('0xb4')]=_0x31f416[_0x0605('0x99')];_0x47248d['rows']=_0x31f416;return _0x47248d;});}else{return _0x523a28[_0x45377d[_0x0605('0x17')]][_0x0605('0xb4')]({'where':_0x1a2e3c[_0x0605('0x88')]})['then'](function(_0x2ffb93){_0x47248d['count']=_0x2ffb93;if(_0x2fd9e3[_0x0605('0x8b')][_0x0605('0xad')]){if(_0x45377d['childModel']===_0x0605('0xb5')){_0x1a2e3c['include']=[{'model':_0x523a28['Tag'],'as':_0x0605('0xb6'),'attributes':['id',_0x0605('0xf'),_0x0605('0xb7')],'required':_0x2fd9e3['query'][_0x0605('0xb8')]?!![]:![]},{'model':_0x523a28[_0x0605('0xb9')],'as':_0x0605('0xba'),'attributes':['id',_0x0605('0xf'),_0x0605('0xb7')],'through':_0x2fd9e3[_0x0605('0x8b')][_0x0605('0xb8')]?{'attributes':[],'where':{'TagId':_0x2fd9e3[_0x0605('0x8b')][_0x0605('0xb8')]||undefined}}:{},'required':_0x2fd9e3[_0x0605('0x8b')]['tag']?!![]:![]}];}else{_0x1a2e3c[_0x0605('0xae')]=[{'all':!![]}];}}return _0x523a28[_0x45377d[_0x0605('0x17')]][_0x0605('0x8')](_0x1a2e3c);})[_0x0605('0x9')](function(_0x42c1fa){_0x47248d['rows']=_0x42c1fa;if(_0xe86cd3===_0x0605('0x5e')&&_0x2fd9e3['query'][_0x0605('0xbb')]===_0x0605('0xbc')){var _0x4fb8ed=[];for(var _0x2420d2=0x0;_0x2420d2<_0x47248d[_0x0605('0xbd')][_0x0605('0x99')];_0x2420d2++){_0x4fb8ed[_0x0605('0x98')](_0x2b43cf(_0x0605('0xbe'),_0x47248d[_0x0605('0xbd')][_0x2420d2][_0x0605('0xbf')]));_0x4fb8ed[_0x0605('0x98')](_0x2b43cf('sms',_0x47248d[_0x0605('0xbd')][_0x2420d2]['dataValues']));_0x4fb8ed[_0x0605('0x98')](_0x2b43cf(_0x0605('0xc0'),_0x47248d[_0x0605('0xbd')][_0x2420d2][_0x0605('0xbf')]));_0x4fb8ed[_0x0605('0x98')](_0x2b43cf('mail',_0x47248d[_0x0605('0xbd')][_0x2420d2][_0x0605('0xbf')]));_0x4fb8ed[_0x0605('0x98')](_0x2b43cf(_0x0605('0xc1'),_0x47248d[_0x0605('0xbd')][_0x2420d2][_0x0605('0xbf')]));_0x4fb8ed['push'](_0x2b43cf(_0x0605('0xc2'),_0x47248d[_0x0605('0xbd')][_0x2420d2][_0x0605('0xbf')]));}return Promise[_0x0605('0x94')](_0x4fb8ed)[_0x0605('0x9')](function(){return _0x47248d;});}return _0x47248d;});}});}}});};
\ No newline at end of file
index e2cad11..246be9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd386=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','register','request','then','debug','UserProfile,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserProfile,\x20%s,\x20%s','message','info','catch','lodash','util'];(function(_0xfbac82,_0x4e8286){var _0x40935b=function(_0x3a3821){while(--_0x3a3821){_0xfbac82['push'](_0xfbac82['shift']());}};_0x40935b(++_0x4e8286);}(_0xd386,0x10c));var _0x6d38=function(_0x5ac84c,_0x287781){_0x5ac84c=_0x5ac84c-0x0;var _0x3c53d2=_0xd386[_0x5ac84c];return _0x3c53d2;};'use strict';var _=require(_0x6d38('0x0'));var util=require(_0x6d38('0x1'));var moment=require(_0x6d38('0x2'));var BPromise=require('bluebird');var rs=require(_0x6d38('0x3'));var fs=require('fs');var Redis=require(_0x6d38('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6d38('0x5'));var logger=require(_0x6d38('0x6'))(_0x6d38('0x7'));var config=require(_0x6d38('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6d38('0x9')][_0x6d38('0xa')]({'port':0x232a});config[_0x6d38('0xb')]=_[_0x6d38('0xc')](config[_0x6d38('0xb')],{'host':_0x6d38('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6d38('0xb')]));require('./userProfile.socket')[_0x6d38('0xe')](socket);function respondWithRpcPromise(_0x4909e0,_0x171f76,_0x29c14b){return new BPromise(function(_0x23c9ba,_0x5dfc29){return client[_0x6d38('0xf')](_0x4909e0,_0x29c14b)[_0x6d38('0x10')](function(_0x404a35){logger['info']('UserProfile,\x20%s,\x20%s',_0x171f76,'request\x20sent');logger[_0x6d38('0x11')](_0x6d38('0x12'),_0x171f76,_0x6d38('0x13'),JSON[_0x6d38('0x14')](_0x404a35));if(_0x404a35[_0x6d38('0x15')]){if(_0x404a35['error'][_0x6d38('0x16')]===0x1f4){logger[_0x6d38('0x15')](_0x6d38('0x17'),_0x171f76,_0x404a35[_0x6d38('0x15')][_0x6d38('0x18')]);return _0x5dfc29(_0x404a35[_0x6d38('0x15')][_0x6d38('0x18')]);}logger['error']('UserProfile,\x20%s,\x20%s',_0x171f76,_0x404a35['error'][_0x6d38('0x18')]);return _0x23c9ba(_0x404a35[_0x6d38('0x15')][_0x6d38('0x18')]);}else{logger[_0x6d38('0x19')](_0x6d38('0x17'),_0x171f76,_0x6d38('0x13'));_0x23c9ba(_0x404a35['result'][_0x6d38('0x18')]);}})[_0x6d38('0x1a')](function(_0x364d22){logger[_0x6d38('0x15')](_0x6d38('0x17'),_0x171f76,_0x364d22);_0x5dfc29(_0x364d22);});});}
\ No newline at end of file
+var _0x4137=['redis','defaults','socket.io-emitter','register','request','then','info','UserProfile,\x20%s,\x20%s','debug','UserProfile,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x460e88,_0x435259){var _0x45baea=function(_0x594777){while(--_0x594777){_0x460e88['push'](_0x460e88['shift']());}};_0x45baea(++_0x435259);}(_0x4137,0xf8));var _0x7413=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x4137[_0x27af45];return _0x18df21;};'use strict';var _=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var moment=require(_0x7413('0x2'));var BPromise=require(_0x7413('0x3'));var rs=require(_0x7413('0x4'));var fs=require('fs');var Redis=require(_0x7413('0x5'));var db=require(_0x7413('0x6'))['db'];var utils=require(_0x7413('0x7'));var logger=require(_0x7413('0x8'))(_0x7413('0x9'));var config=require(_0x7413('0xa'));var jayson=require(_0x7413('0xb'));var client=jayson['client'][_0x7413('0xc')]({'port':0x232a});config[_0x7413('0xd')]=_[_0x7413('0xe')](config[_0x7413('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x7413('0xf'))(new Redis(config[_0x7413('0xd')]));require('./userProfile.socket')[_0x7413('0x10')](socket);function respondWithRpcPromise(_0x2f4b54,_0x50fde0,_0x29f124){return new BPromise(function(_0x427b3b,_0x737ab4){return client[_0x7413('0x11')](_0x2f4b54,_0x29f124)[_0x7413('0x12')](function(_0x5a1e62){logger[_0x7413('0x13')](_0x7413('0x14'),_0x50fde0,'request\x20sent');logger[_0x7413('0x15')](_0x7413('0x16'),_0x50fde0,_0x7413('0x17'),JSON['stringify'](_0x5a1e62));if(_0x5a1e62['error']){if(_0x5a1e62['error'][_0x7413('0x18')]===0x1f4){logger[_0x7413('0x19')]('UserProfile,\x20%s,\x20%s',_0x50fde0,_0x5a1e62[_0x7413('0x19')][_0x7413('0x1a')]);return _0x737ab4(_0x5a1e62['error'][_0x7413('0x1a')]);}logger['error']('UserProfile,\x20%s,\x20%s',_0x50fde0,_0x5a1e62[_0x7413('0x19')]['message']);return _0x427b3b(_0x5a1e62[_0x7413('0x19')]['message']);}else{logger[_0x7413('0x13')](_0x7413('0x14'),_0x50fde0,_0x7413('0x17'));_0x427b3b(_0x5a1e62[_0x7413('0x1b')][_0x7413('0x1a')]);}})[_0x7413('0x1c')](function(_0x51194e){logger[_0x7413('0x19')](_0x7413('0x14'),_0x50fde0,_0x51194e);_0x737ab4(_0x51194e);});});}
\ No newline at end of file
index 69f84c0..9c8ef27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcbc=['emit','userProfile:','./userProfile.events','save','remove','update'];(function(_0x5e6cb8,_0x16cf56){var _0x3faeb3=function(_0x1a7355){while(--_0x1a7355){_0x5e6cb8['push'](_0x5e6cb8['shift']());}};_0x3faeb3(++_0x16cf56);}(_0xbcbc,0x122));var _0xcbcb=function(_0x38b121,_0x39e25b){_0x38b121=_0x38b121-0x0;var _0x394316=_0xbcbc[_0x38b121];return _0x394316;};'use strict';var UserProfileEvents=require(_0xcbcb('0x0'));var events=[_0xcbcb('0x1'),_0xcbcb('0x2'),_0xcbcb('0x3')];function createListener(_0x201439,_0x2073fb){return function(_0x3d052d){_0x2073fb[_0xcbcb('0x4')](_0x201439,_0x3d052d);};}function removeListener(_0x3dd4c0,_0x204a8f){return function(){UserProfileEvents['removeListener'](_0x3dd4c0,_0x204a8f);};}exports['register']=function(_0x320fef){for(var _0x15fc98=0x0,_0x4350d9=events['length'];_0x15fc98<_0x4350d9;_0x15fc98++){var _0x24313d=events[_0x15fc98];var _0x378c00=createListener(_0xcbcb('0x5')+_0x24313d,_0x320fef);UserProfileEvents['on'](_0x24313d,_0x378c00);}};
\ No newline at end of file
+var _0x306f=['update','emit','removeListener','register','length','userProfile:','remove'];(function(_0x169eb3,_0x4977ce){var _0x2aa7c0=function(_0x4a22a2){while(--_0x4a22a2){_0x169eb3['push'](_0x169eb3['shift']());}};_0x2aa7c0(++_0x4977ce);}(_0x306f,0x13a));var _0xf306=function(_0xd0baae,_0x3020f4){_0xd0baae=_0xd0baae-0x0;var _0x538549=_0x306f[_0xd0baae];return _0x538549;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save',_0xf306('0x0'),_0xf306('0x1')];function createListener(_0x452b41,_0x365218){return function(_0x282399){_0x365218[_0xf306('0x2')](_0x452b41,_0x282399);};}function removeListener(_0x51c3d5,_0x29cadc){return function(){UserProfileEvents[_0xf306('0x3')](_0x51c3d5,_0x29cadc);};}exports[_0xf306('0x4')]=function(_0x624daa){for(var _0x524fdc=0x0,_0x2cdaf9=events[_0xf306('0x5')];_0x524fdc<_0x2cdaf9;_0x524fdc++){var _0x36ccf4=events[_0x524fdc];var _0x1bae72=createListener(_0xf306('0x6')+_0x36ccf4,_0x624daa);UserProfileEvents['on'](_0x36ccf4,_0x1bae72);}};
\ No newline at end of file
index 6886f0d..9191304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f3a=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','destroy','util'];(function(_0x25171a,_0x5c29bc){var _0x28f67b=function(_0x560d9c){while(--_0x560d9c){_0x25171a['push'](_0x25171a['shift']());}};_0x28f67b(++_0x5c29bc);}(_0x0f3a,0x18f));var _0xa0f3=function(_0x7e6506,_0x15d8ed){_0x7e6506=_0x7e6506-0x0;var _0x1bb5d3=_0x0f3a[_0x7e6506];return _0x1bb5d3;};'use strict';var multer=require('multer');var util=require(_0xa0f3('0x0'));var path=require(_0xa0f3('0x1'));var timeout=require('connect-timeout');var express=require(_0xa0f3('0x2'));var router=express[_0xa0f3('0x3')]();var fs_extra=require(_0xa0f3('0x4'));var auth=require(_0xa0f3('0x5'));var interaction=require(_0xa0f3('0x6'));var config=require(_0xa0f3('0x7'));var controller=require('./userProfileResource.controller');router[_0xa0f3('0x8')]('/',auth[_0xa0f3('0x9')](),controller['index']);router[_0xa0f3('0x8')](_0xa0f3('0xa'),auth[_0xa0f3('0x9')](),controller[_0xa0f3('0xb')]);router[_0xa0f3('0x8')](_0xa0f3('0xc'),auth[_0xa0f3('0x9')](),controller[_0xa0f3('0xd')]);router[_0xa0f3('0xe')]('/',auth[_0xa0f3('0x9')](),controller[_0xa0f3('0xf')]);router[_0xa0f3('0x10')](_0xa0f3('0xc'),auth[_0xa0f3('0x9')](),controller[_0xa0f3('0x11')]);router[_0xa0f3('0x12')](_0xa0f3('0xc'),auth[_0xa0f3('0x9')](),controller[_0xa0f3('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x212e=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','update','multer','path'];(function(_0x2714a8,_0x127b89){var _0x5badfd=function(_0x15fe7b){while(--_0x15fe7b){_0x2714a8['push'](_0x2714a8['shift']());}};_0x5badfd(++_0x127b89);}(_0x212e,0x15e));var _0xe212=function(_0x13551e,_0x3a8c79){_0x13551e=_0x13551e-0x0;var _0x55d46f=_0x212e[_0x13551e];return _0x55d46f;};'use strict';var multer=require(_0xe212('0x0'));var util=require('util');var path=require(_0xe212('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe212('0x2')]();var fs_extra=require(_0xe212('0x3'));var auth=require(_0xe212('0x4'));var interaction=require(_0xe212('0x5'));var config=require('../../config/environment');var controller=require(_0xe212('0x6'));router[_0xe212('0x7')]('/',auth[_0xe212('0x8')](),controller['index']);router[_0xe212('0x7')](_0xe212('0x9'),auth[_0xe212('0x8')](),controller[_0xe212('0xa')]);router[_0xe212('0x7')](_0xe212('0xb'),auth[_0xe212('0x8')](),controller[_0xe212('0xc')]);router[_0xe212('0xd')]('/',auth['isAuthenticated'](),controller[_0xe212('0xe')]);router['put']('/:id',auth[_0xe212('0x8')](),controller[_0xe212('0xf')]);router['delete'](_0xe212('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b1f1219..c26d0a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6d1=['STRING','sequelize','exports','INTEGER'];(function(_0x3e2a92,_0x4b5501){var _0x18dd18=function(_0x11c136){while(--_0x11c136){_0x3e2a92['push'](_0x3e2a92['shift']());}};_0x18dd18(++_0x4b5501);}(_0xf6d1,0x181));var _0x1f6d=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xf6d1[_0xae7c2f];return _0x5d7001;};'use strict';var Sequelize=require(_0x1f6d('0x0'));module[_0x1f6d('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x1f6d('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x1f6d('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xe7c1=['exports','INTEGER','STRING'];(function(_0x12006f,_0x12fd6e){var _0xf1d907=function(_0x12b3df){while(--_0x12b3df){_0x12006f['push'](_0x12006f['shift']());}};_0xf1d907(++_0x12fd6e);}(_0xe7c1,0x69));var _0x1e7c=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xe7c1[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require('sequelize');module[_0x1e7c('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x1e7c('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1e7c('0x2')],'allowNull':![]}};
\ No newline at end of file
index ecae255..dc80fae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','end','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9f0e,0x116));var _0xe9f0=function(_0x52e1ff,_0x132bec){_0x52e1ff=_0x52e1ff-0x0;var _0x261fc2=_0x9f0e[_0x52e1ff];return _0x261fc2;};'use strict';var emlformat=require(_0xe9f0('0x0'));var rimraf=require(_0xe9f0('0x1'));var zipdir=require(_0xe9f0('0x2'));var jsonpatch=require(_0xe9f0('0x3'));var rp=require(_0xe9f0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9f0('0x5'));var util=require(_0xe9f0('0x6'));var path=require(_0xe9f0('0x7'));var sox=require(_0xe9f0('0x8'));var csv=require(_0xe9f0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9f0('0xa'));var squel=require(_0xe9f0('0xb'));var crypto=require(_0xe9f0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9f0('0xd'));var toCsv=require(_0xe9f0('0x9'));var querystring=require(_0xe9f0('0xe'));var Papa=require(_0xe9f0('0xf'));var Redis=require(_0xe9f0('0x10'));var authService=require(_0xe9f0('0x11'));var qs=require(_0xe9f0('0x12'));var as=require(_0xe9f0('0x13'));var hardwareService=require(_0xe9f0('0x14'));var logger=require('../../config/logger')(_0xe9f0('0x15'));var utils=require(_0xe9f0('0x16'));var config=require(_0xe9f0('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9f0('0x18'))['db'];function respondWithStatusCode(_0x586763,_0x367545){_0x367545=_0x367545||0xcc;return function(_0xd82420){if(_0xd82420){return _0x586763[_0xe9f0('0x19')](_0x367545);}return _0x586763[_0xe9f0('0x1a')](_0x367545)['end']();};}function respondWithResult(_0x2cf75d,_0x5a10c6){_0x5a10c6=_0x5a10c6||0xc8;return function(_0x1e3ba8){if(_0x1e3ba8){return _0x2cf75d[_0xe9f0('0x1a')](_0x5a10c6)[_0xe9f0('0x1b')](_0x1e3ba8);}};}function respondWithFilteredResult(_0x59320d,_0x28bfac){return function(_0x33e9e4){if(_0x33e9e4){var _0x2e68ef=typeof _0x28bfac['offset']===_0xe9f0('0x1c')&&typeof _0x28bfac[_0xe9f0('0x1d')]===_0xe9f0('0x1c');var _0xd71ac8=_0x33e9e4[_0xe9f0('0x1e')];var _0x2ab12b=_0x2e68ef?0x0:_0x28bfac[_0xe9f0('0x1f')];var _0x59bf5a=_0x2e68ef?_0x33e9e4[_0xe9f0('0x1e')]:_0x28bfac[_0xe9f0('0x1f')]+_0x28bfac[_0xe9f0('0x1d')];var _0x5c4182;if(_0x59bf5a>=_0xd71ac8){_0x59bf5a=_0xd71ac8;_0x5c4182=0xc8;}else{_0x5c4182=0xce;}_0x59320d[_0xe9f0('0x1a')](_0x5c4182);return _0x59320d[_0xe9f0('0x20')](_0xe9f0('0x21'),_0x2ab12b+'-'+_0x59bf5a+'/'+_0xd71ac8)[_0xe9f0('0x1b')](_0x33e9e4);}return null;};}function patchUpdates(_0x5ba788){return function(_0x33f143){try{jsonpatch[_0xe9f0('0x22')](_0x33f143,_0x5ba788,!![]);}catch(_0x583687){return BPromise['reject'](_0x583687);}return _0x33f143['save']();};}function saveUpdates(_0x12fe9f,_0xa1ddc){return function(_0x1211ae){if(_0x1211ae){return _0x1211ae[_0xe9f0('0x23')](_0x12fe9f)[_0xe9f0('0x24')](function(_0x4a5c27){return _0x4a5c27;});}return null;};}function removeEntity(_0x229fe0,_0x38b7ee){return function(_0x437d43){if(_0x437d43){return _0x437d43[_0xe9f0('0x25')]()[_0xe9f0('0x24')](function(){_0x229fe0[_0xe9f0('0x1a')](0xcc)[_0xe9f0('0x26')]();});}};}function handleEntityNotFound(_0x1321bb,_0x3c4ba9){return function(_0x3fce54){if(!_0x3fce54){_0x1321bb['sendStatus'](0x194);}return _0x3fce54;};}function handleError(_0x371095,_0x27541f){_0x27541f=_0x27541f||0x1f4;return function(_0x2ddfba){logger[_0xe9f0('0x27')](_0x2ddfba['stack']);if(_0x2ddfba[_0xe9f0('0x28')]){delete _0x2ddfba[_0xe9f0('0x28')];}_0x371095[_0xe9f0('0x1a')](_0x27541f)[_0xe9f0('0x29')](_0x2ddfba);};}exports[_0xe9f0('0x2a')]=function(_0x5457f6,_0x130f96){var _0xdc16bc={},_0x44fb5b={},_0xab3d81={'count':0x0,'rows':[]};var _0xa27c84=_[_0xe9f0('0x2b')](db[_0xe9f0('0x2c')][_0xe9f0('0x2d')],function(_0x2b6503){return{'name':_0x2b6503[_0xe9f0('0x2e')],'type':_0x2b6503[_0xe9f0('0x2f')][_0xe9f0('0x30')]};});_0x44fb5b[_0xe9f0('0x31')]=_[_0xe9f0('0x2b')](_0xa27c84,_0xe9f0('0x28'));_0x44fb5b[_0xe9f0('0x32')]=_[_0xe9f0('0x33')](_0x5457f6[_0xe9f0('0x32')]);_0x44fb5b[_0xe9f0('0x34')]=_[_0xe9f0('0x35')](_0x44fb5b[_0xe9f0('0x31')],_0x44fb5b[_0xe9f0('0x32')]);_0xdc16bc[_0xe9f0('0x36')]=_[_0xe9f0('0x35')](_0x44fb5b['model'],qs['fields'](_0x5457f6['query'][_0xe9f0('0x37')]));_0xdc16bc['attributes']=_0xdc16bc[_0xe9f0('0x36')][_0xe9f0('0x38')]?_0xdc16bc['attributes']:_0x44fb5b[_0xe9f0('0x31')];if(!_0x5457f6['query']['hasOwnProperty']('nolimit')){_0xdc16bc[_0xe9f0('0x1d')]=qs[_0xe9f0('0x1d')](_0x5457f6['query'][_0xe9f0('0x1d')]);_0xdc16bc[_0xe9f0('0x1f')]=qs[_0xe9f0('0x1f')](_0x5457f6['query']['offset']);}_0xdc16bc[_0xe9f0('0x39')]=qs[_0xe9f0('0x3a')](_0x5457f6[_0xe9f0('0x32')]['sort']);_0xdc16bc[_0xe9f0('0x3b')]=qs[_0xe9f0('0x34')](_[_0xe9f0('0x3c')](_0x5457f6[_0xe9f0('0x32')],_0x44fb5b[_0xe9f0('0x34')]),_0xa27c84);if(_0x5457f6['query'][_0xe9f0('0x3d')]){_0xdc16bc[_0xe9f0('0x3b')]=_[_0xe9f0('0x3e')](_0xdc16bc['where'],{'$or':_[_0xe9f0('0x2b')](_0xa27c84,function(_0xbec11f){if(_0xbec11f['type']!==_0xe9f0('0x3f')){var _0x5154c3={};_0x5154c3[_0xbec11f[_0xe9f0('0x28')]]={'$like':'%'+_0x5457f6['query']['filter']+'%'};return _0x5154c3;}})});}_0xdc16bc=_['merge']({},_0xdc16bc,_0x5457f6['options']);var _0x5165f7={'where':_0xdc16bc[_0xe9f0('0x3b')]};return db[_0xe9f0('0x2c')][_0xe9f0('0x1e')](_0x5165f7)[_0xe9f0('0x24')](function(_0x2560c6){_0xab3d81[_0xe9f0('0x1e')]=_0x2560c6;if(_0x5457f6[_0xe9f0('0x32')][_0xe9f0('0x40')]){_0xdc16bc[_0xe9f0('0x41')]=[{'all':!![]}];}return db['UserProfileResource'][_0xe9f0('0x42')](_0xdc16bc);})[_0xe9f0('0x24')](function(_0x36b00a){_0xab3d81['rows']=_0x36b00a;return _0xab3d81;})['then'](respondWithFilteredResult(_0x130f96,_0xdc16bc))[_0xe9f0('0x43')](handleError(_0x130f96,null));};exports['show']=function(_0x297689,_0x52613a){var _0x314f0e={'raw':![],'where':{'id':_0x297689['params']['id']}},_0x42d9d2={};_0x42d9d2[_0xe9f0('0x31')]=_[_0xe9f0('0x33')](db[_0xe9f0('0x2c')][_0xe9f0('0x2d')]);_0x42d9d2[_0xe9f0('0x32')]=_['keys'](_0x297689[_0xe9f0('0x32')]);_0x42d9d2[_0xe9f0('0x34')]=_[_0xe9f0('0x35')](_0x42d9d2[_0xe9f0('0x31')],_0x42d9d2[_0xe9f0('0x32')]);_0x314f0e['attributes']=_[_0xe9f0('0x35')](_0x42d9d2['model'],qs['fields'](_0x297689[_0xe9f0('0x32')][_0xe9f0('0x37')]));_0x314f0e['attributes']=_0x314f0e[_0xe9f0('0x36')][_0xe9f0('0x38')]?_0x314f0e[_0xe9f0('0x36')]:_0x42d9d2[_0xe9f0('0x31')];if(_0x297689[_0xe9f0('0x32')][_0xe9f0('0x40')]){_0x314f0e[_0xe9f0('0x41')]=[{'all':!![]}];}_0x314f0e=_['merge']({},_0x314f0e,_0x297689[_0xe9f0('0x44')]);return db['UserProfileResource'][_0xe9f0('0x45')](_0x314f0e)['then'](handleEntityNotFound(_0x52613a,null))[_0xe9f0('0x24')](respondWithResult(_0x52613a,null))['catch'](handleError(_0x52613a,null));};exports[_0xe9f0('0x46')]=function(_0x2023b4,_0x422324){return db['UserProfileResource'][_0xe9f0('0x46')](_0x2023b4[_0xe9f0('0x47')],{})[_0xe9f0('0x24')](respondWithResult(_0x422324,0xc9))[_0xe9f0('0x43')](handleError(_0x422324,null));};exports[_0xe9f0('0x23')]=function(_0x135175,_0x6ece3f){if(_0x135175[_0xe9f0('0x47')]['id']){delete _0x135175[_0xe9f0('0x47')]['id'];}return db[_0xe9f0('0x2c')][_0xe9f0('0x45')]({'where':{'id':_0x135175[_0xe9f0('0x48')]['id']}})['then'](handleEntityNotFound(_0x6ece3f,null))['then'](saveUpdates(_0x135175[_0xe9f0('0x47')],null))[_0xe9f0('0x24')](respondWithResult(_0x6ece3f,null))[_0xe9f0('0x43')](handleError(_0x6ece3f,null));};exports['destroy']=function(_0x1ac381,_0x4d8b2e){return db[_0xe9f0('0x2c')][_0xe9f0('0x45')]({'where':{'id':_0x1ac381[_0xe9f0('0x48')]['id']}})[_0xe9f0('0x24')](handleEntityNotFound(_0x4d8b2e,null))['then'](removeEntity(_0x4d8b2e,null))[_0xe9f0('0x43')](handleError(_0x4d8b2e,null));};exports[_0xe9f0('0x49')]=function(_0x5163ea,_0x2bf65c){return db[_0xe9f0('0x2c')][_0xe9f0('0x49')]()[_0xe9f0('0x24')](respondWithResult(_0x2bf65c,null))['catch'](handleError(_0x2bf65c,null));};
\ No newline at end of file
+var _0x8e3f=['save','update','destroy','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','merge','filter','options','UserProfileResource','includeAll','include','findAll','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x8e3f[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0xf8e3('0x0'));var rimraf=require(_0xf8e3('0x1'));var zipdir=require(_0xf8e3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf8e3('0x3'));var moment=require(_0xf8e3('0x4'));var BPromise=require(_0xf8e3('0x5'));var Mustache=require('mustache');var util=require(_0xf8e3('0x6'));var path=require(_0xf8e3('0x7'));var sox=require('sox');var csv=require(_0xf8e3('0x8'));var ejs=require(_0xf8e3('0x9'));var fs=require('fs');var fs_extra=require(_0xf8e3('0xa'));var _=require(_0xf8e3('0xb'));var squel=require('squel');var crypto=require(_0xf8e3('0xc'));var jsforce=require(_0xf8e3('0xd'));var deskjs=require(_0xf8e3('0xe'));var toCsv=require(_0xf8e3('0x8'));var querystring=require(_0xf8e3('0xf'));var Papa=require(_0xf8e3('0x10'));var Redis=require(_0xf8e3('0x11'));var authService=require(_0xf8e3('0x12'));var qs=require(_0xf8e3('0x13'));var as=require(_0xf8e3('0x14'));var hardwareService=require(_0xf8e3('0x15'));var logger=require(_0xf8e3('0x16'))('api');var utils=require(_0xf8e3('0x17'));var config=require(_0xf8e3('0x18'));var licenseUtil=require(_0xf8e3('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40ae02,_0x41f85e){_0x41f85e=_0x41f85e||0xcc;return function(_0x336790){if(_0x336790){return _0x40ae02[_0xf8e3('0x1a')](_0x41f85e);}return _0x40ae02['status'](_0x41f85e)[_0xf8e3('0x1b')]();};}function respondWithResult(_0xa856f5,_0x2fe631){_0x2fe631=_0x2fe631||0xc8;return function(_0x4af736){if(_0x4af736){return _0xa856f5[_0xf8e3('0x1c')](_0x2fe631)['json'](_0x4af736);}};}function respondWithFilteredResult(_0x1ec773,_0x40c196){return function(_0x460629){if(_0x460629){var _0x570ee3=typeof _0x40c196['offset']===_0xf8e3('0x1d')&&typeof _0x40c196[_0xf8e3('0x1e')]===_0xf8e3('0x1d');var _0x3b01ac=_0x460629[_0xf8e3('0x1f')];var _0x11d4cc=_0x570ee3?0x0:_0x40c196[_0xf8e3('0x20')];var _0x2e27e3=_0x570ee3?_0x460629[_0xf8e3('0x1f')]:_0x40c196[_0xf8e3('0x20')]+_0x40c196['limit'];var _0x20cc64;if(_0x2e27e3>=_0x3b01ac){_0x2e27e3=_0x3b01ac;_0x20cc64=0xc8;}else{_0x20cc64=0xce;}_0x1ec773[_0xf8e3('0x1c')](_0x20cc64);return _0x1ec773[_0xf8e3('0x21')](_0xf8e3('0x22'),_0x11d4cc+'-'+_0x2e27e3+'/'+_0x3b01ac)[_0xf8e3('0x23')](_0x460629);}return null;};}function patchUpdates(_0x11c58e){return function(_0x1cae53){try{jsonpatch[_0xf8e3('0x24')](_0x1cae53,_0x11c58e,!![]);}catch(_0x5b99b1){return BPromise[_0xf8e3('0x25')](_0x5b99b1);}return _0x1cae53[_0xf8e3('0x26')]();};}function saveUpdates(_0x3c636d,_0xccbcc0){return function(_0x4a1e5f){if(_0x4a1e5f){return _0x4a1e5f[_0xf8e3('0x27')](_0x3c636d)['then'](function(_0x286059){return _0x286059;});}return null;};}function removeEntity(_0x225a1b,_0x33d526){return function(_0x2dc856){if(_0x2dc856){return _0x2dc856[_0xf8e3('0x28')]()[_0xf8e3('0x29')](function(){_0x225a1b['status'](0xcc)[_0xf8e3('0x1b')]();});}};}function handleEntityNotFound(_0x2fc674,_0x3373ca){return function(_0x417b42){if(!_0x417b42){_0x2fc674[_0xf8e3('0x1a')](0x194);}return _0x417b42;};}function handleError(_0x3b41a1,_0x2963ed){_0x2963ed=_0x2963ed||0x1f4;return function(_0x157a2d){logger['error'](_0x157a2d[_0xf8e3('0x2a')]);if(_0x157a2d[_0xf8e3('0x2b')]){delete _0x157a2d[_0xf8e3('0x2b')];}_0x3b41a1[_0xf8e3('0x1c')](_0x2963ed)[_0xf8e3('0x2c')](_0x157a2d);};}exports[_0xf8e3('0x2d')]=function(_0x16485e,_0xfaf15d){var _0x4f2ae9={},_0x21e1c0={},_0x243e28={'count':0x0,'rows':[]};var _0x492694=_[_0xf8e3('0x2e')](db['UserProfileResource'][_0xf8e3('0x2f')],function(_0x10cf28){return{'name':_0x10cf28[_0xf8e3('0x30')],'type':_0x10cf28[_0xf8e3('0x31')][_0xf8e3('0x32')]};});_0x21e1c0[_0xf8e3('0x33')]=_[_0xf8e3('0x2e')](_0x492694,_0xf8e3('0x2b'));_0x21e1c0['query']=_[_0xf8e3('0x34')](_0x16485e[_0xf8e3('0x35')]);_0x21e1c0['filters']=_['intersection'](_0x21e1c0['model'],_0x21e1c0[_0xf8e3('0x35')]);_0x4f2ae9['attributes']=_[_0xf8e3('0x36')](_0x21e1c0[_0xf8e3('0x33')],qs[_0xf8e3('0x37')](_0x16485e[_0xf8e3('0x35')]['fields']));_0x4f2ae9['attributes']=_0x4f2ae9[_0xf8e3('0x38')][_0xf8e3('0x39')]?_0x4f2ae9[_0xf8e3('0x38')]:_0x21e1c0[_0xf8e3('0x33')];if(!_0x16485e[_0xf8e3('0x35')][_0xf8e3('0x3a')]('nolimit')){_0x4f2ae9[_0xf8e3('0x1e')]=qs['limit'](_0x16485e['query'][_0xf8e3('0x1e')]);_0x4f2ae9[_0xf8e3('0x20')]=qs[_0xf8e3('0x20')](_0x16485e[_0xf8e3('0x35')]['offset']);}_0x4f2ae9['order']=qs[_0xf8e3('0x3b')](_0x16485e[_0xf8e3('0x35')]['sort']);_0x4f2ae9[_0xf8e3('0x3c')]=qs[_0xf8e3('0x3d')](_[_0xf8e3('0x3e')](_0x16485e[_0xf8e3('0x35')],_0x21e1c0['filters']),_0x492694);if(_0x16485e['query']['filter']){_0x4f2ae9[_0xf8e3('0x3c')]=_[_0xf8e3('0x3f')](_0x4f2ae9[_0xf8e3('0x3c')],{'$or':_[_0xf8e3('0x2e')](_0x492694,function(_0x53160a){if(_0x53160a[_0xf8e3('0x31')]!=='VIRTUAL'){var _0x20909b={};_0x20909b[_0x53160a[_0xf8e3('0x2b')]]={'$like':'%'+_0x16485e[_0xf8e3('0x35')][_0xf8e3('0x40')]+'%'};return _0x20909b;}})});}_0x4f2ae9=_[_0xf8e3('0x3f')]({},_0x4f2ae9,_0x16485e[_0xf8e3('0x41')]);var _0x82e778={'where':_0x4f2ae9[_0xf8e3('0x3c')]};return db[_0xf8e3('0x42')]['count'](_0x82e778)[_0xf8e3('0x29')](function(_0x537089){_0x243e28[_0xf8e3('0x1f')]=_0x537089;if(_0x16485e[_0xf8e3('0x35')][_0xf8e3('0x43')]){_0x4f2ae9[_0xf8e3('0x44')]=[{'all':!![]}];}return db[_0xf8e3('0x42')][_0xf8e3('0x45')](_0x4f2ae9);})[_0xf8e3('0x29')](function(_0x2f05b7){_0x243e28['rows']=_0x2f05b7;return _0x243e28;})[_0xf8e3('0x29')](respondWithFilteredResult(_0xfaf15d,_0x4f2ae9))[_0xf8e3('0x46')](handleError(_0xfaf15d,null));};exports[_0xf8e3('0x47')]=function(_0x382dbb,_0x6dd110){var _0xe7fcb9={'raw':![],'where':{'id':_0x382dbb[_0xf8e3('0x48')]['id']}},_0x792190={};_0x792190['model']=_['keys'](db['UserProfileResource'][_0xf8e3('0x2f')]);_0x792190[_0xf8e3('0x35')]=_['keys'](_0x382dbb[_0xf8e3('0x35')]);_0x792190['filters']=_[_0xf8e3('0x36')](_0x792190[_0xf8e3('0x33')],_0x792190['query']);_0xe7fcb9[_0xf8e3('0x38')]=_['intersection'](_0x792190[_0xf8e3('0x33')],qs[_0xf8e3('0x37')](_0x382dbb['query'][_0xf8e3('0x37')]));_0xe7fcb9[_0xf8e3('0x38')]=_0xe7fcb9[_0xf8e3('0x38')][_0xf8e3('0x39')]?_0xe7fcb9['attributes']:_0x792190['model'];if(_0x382dbb['query'][_0xf8e3('0x43')]){_0xe7fcb9[_0xf8e3('0x44')]=[{'all':!![]}];}_0xe7fcb9=_[_0xf8e3('0x3f')]({},_0xe7fcb9,_0x382dbb['options']);return db[_0xf8e3('0x42')]['find'](_0xe7fcb9)[_0xf8e3('0x29')](handleEntityNotFound(_0x6dd110,null))[_0xf8e3('0x29')](respondWithResult(_0x6dd110,null))['catch'](handleError(_0x6dd110,null));};exports['create']=function(_0x128234,_0x2939e6){return db[_0xf8e3('0x42')][_0xf8e3('0x49')](_0x128234[_0xf8e3('0x4a')],{})[_0xf8e3('0x29')](respondWithResult(_0x2939e6,0xc9))[_0xf8e3('0x46')](handleError(_0x2939e6,null));};exports[_0xf8e3('0x27')]=function(_0xdc2430,_0x81898e){if(_0xdc2430[_0xf8e3('0x4a')]['id']){delete _0xdc2430['body']['id'];}return db[_0xf8e3('0x42')][_0xf8e3('0x4b')]({'where':{'id':_0xdc2430[_0xf8e3('0x48')]['id']}})[_0xf8e3('0x29')](handleEntityNotFound(_0x81898e,null))[_0xf8e3('0x29')](saveUpdates(_0xdc2430[_0xf8e3('0x4a')],null))['then'](respondWithResult(_0x81898e,null))[_0xf8e3('0x46')](handleError(_0x81898e,null));};exports[_0xf8e3('0x28')]=function(_0x39caae,_0x3e60a6){return db[_0xf8e3('0x42')][_0xf8e3('0x4b')]({'where':{'id':_0x39caae['params']['id']}})[_0xf8e3('0x29')](handleEntityNotFound(_0x3e60a6,null))[_0xf8e3('0x29')](removeEntity(_0x3e60a6,null))[_0xf8e3('0x46')](handleError(_0x3e60a6,null));};exports[_0xf8e3('0x4c')]=function(_0x113404,_0x2fef16){return db['UserProfileResource'][_0xf8e3('0x4c')]()[_0xf8e3('0x29')](respondWithResult(_0x2fef16,null))[_0xf8e3('0x46')](handleError(_0x2fef16,null));};
\ No newline at end of file
index 0a21659..56a603c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c1=['exports','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./userProfileResource.attributes'];(function(_0x9f39e1,_0x124180){var _0x3c9389=function(_0x2f4924){while(--_0x2f4924){_0x9f39e1['push'](_0x9f39e1['shift']());}};_0x3c9389(++_0x124180);}(_0xc6c1,0xd5));var _0x1c6c=function(_0xa3400,_0x3a980a){_0xa3400=_0xa3400-0x0;var _0x33dba2=_0xc6c1[_0xa3400];return _0x33dba2;};'use strict';var _=require(_0x1c6c('0x0'));var util=require(_0x1c6c('0x1'));var logger=require(_0x1c6c('0x2'))('api');var moment=require(_0x1c6c('0x3'));var BPromise=require(_0x1c6c('0x4'));var rp=require(_0x1c6c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1c6c('0x6'));var attributes=require(_0x1c6c('0x7'));module[_0x1c6c('0x8')]=function(_0x1b2362,_0x40aadb){return _0x1b2362['define']('UserProfileResource',attributes,{'tableName':_0x1c6c('0x9'),'paranoid':![],'indexes':[{'name':_0x1c6c('0xa'),'fields':[_0x1c6c('0xb'),_0x1c6c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3707=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','lodash'];(function(_0x1ccbb8,_0x1f92cd){var _0x210b14=function(_0x160c3f){while(--_0x160c3f){_0x1ccbb8['push'](_0x1ccbb8['shift']());}};_0x210b14(++_0x1f92cd);}(_0x3707,0xbf));var _0x7370=function(_0x364047,_0x505993){_0x364047=_0x364047-0x0;var _0x2a7523=_0x3707[_0x364047];return _0x2a7523;};'use strict';var _=require(_0x7370('0x0'));var util=require(_0x7370('0x1'));var logger=require('../../config/logger')(_0x7370('0x2'));var moment=require(_0x7370('0x3'));var BPromise=require(_0x7370('0x4'));var rp=require(_0x7370('0x5'));var fs=require('fs');var path=require(_0x7370('0x6'));var rimraf=require(_0x7370('0x7'));var config=require(_0x7370('0x8'));var attributes=require(_0x7370('0x9'));module[_0x7370('0xa')]=function(_0x227b20,_0x4cea0e){return _0x227b20[_0x7370('0xb')](_0x7370('0xc'),attributes,{'tableName':_0x7370('0xd'),'paranoid':![],'indexes':[{'name':_0x7370('0xe'),'fields':[_0x7370('0xf'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index ae5279e..b1c040e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe207=['rpc','../../config/environment','http','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','randomstring','../../config/utils','../../config/logger'];(function(_0x1f6d51,_0x19033b){var _0x26bf63=function(_0x1251b2){while(--_0x1251b2){_0x1f6d51['push'](_0x1f6d51['shift']());}};_0x26bf63(++_0x19033b);}(_0xe207,0xb9));var _0x7e20=function(_0x4dfebb,_0x4b912a){_0x4dfebb=_0x4dfebb-0x0;var _0x37a1f2=_0xe207[_0x4dfebb];return _0x37a1f2;};'use strict';var _=require(_0x7e20('0x0'));var util=require('util');var moment=require(_0x7e20('0x1'));var BPromise=require('bluebird');var rs=require(_0x7e20('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7e20('0x3'));var logger=require(_0x7e20('0x4'))(_0x7e20('0x5'));var config=require(_0x7e20('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7e20('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x46f5f8,_0x4e5c1a,_0xd5d502){return new BPromise(function(_0x4e60e4,_0x57c0d4){return client['request'](_0x46f5f8,_0xd5d502)[_0x7e20('0x8')](function(_0x3b53b6){logger[_0x7e20('0x9')](_0x7e20('0xa'),_0x4e5c1a,_0x7e20('0xb'));logger[_0x7e20('0xc')](_0x7e20('0xd'),_0x4e5c1a,_0x7e20('0xb'),JSON['stringify'](_0x3b53b6));if(_0x3b53b6['error']){if(_0x3b53b6[_0x7e20('0xe')][_0x7e20('0xf')]===0x1f4){logger[_0x7e20('0xe')](_0x7e20('0xa'),_0x4e5c1a,_0x3b53b6[_0x7e20('0xe')][_0x7e20('0x10')]);return _0x57c0d4(_0x3b53b6[_0x7e20('0xe')]['message']);}logger[_0x7e20('0xe')](_0x7e20('0xa'),_0x4e5c1a,_0x3b53b6[_0x7e20('0xe')]['message']);return _0x4e60e4(_0x3b53b6[_0x7e20('0xe')][_0x7e20('0x10')]);}else{logger[_0x7e20('0x9')](_0x7e20('0xa'),_0x4e5c1a,_0x7e20('0xb'));_0x4e60e4(_0x3b53b6[_0x7e20('0x11')][_0x7e20('0x10')]);}})[_0x7e20('0x12')](function(_0x5d1e96){logger[_0x7e20('0xe')](_0x7e20('0xa'),_0x4e5c1a,_0x5d1e96);_0x57c0d4(_0x5d1e96);});});}
\ No newline at end of file
+var _0xcaee=['UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5317b5,_0x4dfd6e){var _0x3b7ce2=function(_0xc146d6){while(--_0xc146d6){_0x5317b5['push'](_0x5317b5['shift']());}};_0x3b7ce2(++_0x4dfd6e);}(_0xcaee,0x1b8));var _0xecae=function(_0x262d61,_0x469238){_0x262d61=_0x262d61-0x0;var _0x3025bd=_0xcaee[_0x262d61];return _0x3025bd;};'use strict';var _=require(_0xecae('0x0'));var util=require(_0xecae('0x1'));var moment=require(_0xecae('0x2'));var BPromise=require(_0xecae('0x3'));var rs=require(_0xecae('0x4'));var fs=require('fs');var Redis=require(_0xecae('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xecae('0x6'));var logger=require('../../config/logger')(_0xecae('0x7'));var config=require(_0xecae('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xecae('0x9')][_0xecae('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c2193,_0x2e00e4,_0x93f127){return new BPromise(function(_0x596e21,_0x187e1f){return client[_0xecae('0xb')](_0x1c2193,_0x93f127)[_0xecae('0xc')](function(_0x4371c6){logger['info'](_0xecae('0xd'),_0x2e00e4,_0xecae('0xe'));logger[_0xecae('0xf')](_0xecae('0x10'),_0x2e00e4,_0xecae('0xe'),JSON[_0xecae('0x11')](_0x4371c6));if(_0x4371c6['error']){if(_0x4371c6['error'][_0xecae('0x12')]===0x1f4){logger['error']('UserProfileResource,\x20%s,\x20%s',_0x2e00e4,_0x4371c6[_0xecae('0x13')][_0xecae('0x14')]);return _0x187e1f(_0x4371c6[_0xecae('0x13')][_0xecae('0x14')]);}logger[_0xecae('0x13')](_0xecae('0xd'),_0x2e00e4,_0x4371c6[_0xecae('0x13')]['message']);return _0x596e21(_0x4371c6[_0xecae('0x13')]['message']);}else{logger[_0xecae('0x15')](_0xecae('0xd'),_0x2e00e4,_0xecae('0xe'));_0x596e21(_0x4371c6[_0xecae('0x16')][_0xecae('0x14')]);}})[_0xecae('0x17')](function(_0x147be4){logger['error'](_0xecae('0xd'),_0x2e00e4,_0x147be4);_0x187e1f(_0x147be4);});});}
\ No newline at end of file
index c99f133..1997e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa496=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','exports','util','path','express','Router'];(function(_0x405385,_0x56f573){var _0x43837b=function(_0x30e20e){while(--_0x30e20e){_0x405385['push'](_0x405385['shift']());}};_0x43837b(++_0x56f573);}(_0xa496,0xa4));var _0x6a49=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa496[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x6a49('0x0'));var path=require(_0x6a49('0x1'));var timeout=require('connect-timeout');var express=require(_0x6a49('0x2'));var router=express[_0x6a49('0x3')]();var fs_extra=require(_0x6a49('0x4'));var auth=require(_0x6a49('0x5'));var interaction=require(_0x6a49('0x6'));var config=require(_0x6a49('0x7'));var controller=require('./userProfileSection.controller');router[_0x6a49('0x8')]('/',auth['isAuthenticated'](),controller[_0x6a49('0x9')]);router[_0x6a49('0x8')](_0x6a49('0xa'),auth[_0x6a49('0xb')](),controller[_0x6a49('0xc')]);router[_0x6a49('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x6a49('0xd')]);router[_0x6a49('0xe')]('/',auth[_0x6a49('0xb')](),controller[_0x6a49('0xf')]);router[_0x6a49('0x10')](_0x6a49('0x11'),auth['isAuthenticated'](),controller[_0x6a49('0x12')]);router[_0x6a49('0x13')]('/:id',auth[_0x6a49('0xb')](),controller['destroy']);module[_0x6a49('0x14')]=router;
\ No newline at end of file
+var _0x0f8a=['get','isAuthenticated','index','describe','show','create','put','/:id','delete','destroy','exports','multer','path','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0f8a,0x1bb));var _0xa0f8=function(_0x1f4c98,_0x42fe8e){_0x1f4c98=_0x1f4c98-0x0;var _0x236e09=_0x0f8a[_0x1f4c98];return _0x236e09;};'use strict';var multer=require(_0xa0f8('0x0'));var util=require('util');var path=require(_0xa0f8('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa0f8('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xa0f8('0x3'));var config=require(_0xa0f8('0x4'));var controller=require('./userProfileSection.controller');router[_0xa0f8('0x5')]('/',auth[_0xa0f8('0x6')](),controller[_0xa0f8('0x7')]);router[_0xa0f8('0x5')]('/describe',auth[_0xa0f8('0x6')](),controller[_0xa0f8('0x8')]);router[_0xa0f8('0x5')]('/:id',auth[_0xa0f8('0x6')](),controller[_0xa0f8('0x9')]);router['post']('/',auth[_0xa0f8('0x6')](),controller[_0xa0f8('0xa')]);router[_0xa0f8('0xb')](_0xa0f8('0xc'),auth[_0xa0f8('0x6')](),controller['update']);router[_0xa0f8('0xd')](_0xa0f8('0xc'),auth[_0xa0f8('0x6')](),controller[_0xa0f8('0xe')]);module[_0xa0f8('0xf')]=router;
\ No newline at end of file
index f27b40d..4544777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97c1=['exports','STRING','BOOLEAN','setDataValue','crudPermissions','getDataValue','split','sequelize'];(function(_0x270e0f,_0x526070){var _0x543165=function(_0x52f61a){while(--_0x52f61a){_0x270e0f['push'](_0x270e0f['shift']());}};_0x543165(++_0x526070);}(_0x97c1,0xdf));var _0x197c=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x97c1[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0x197c('0x0'));module[_0x197c('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x197c('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x197c('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x197c('0x2')],'set':function(_0x26833e){this[_0x197c('0x4')](_0x197c('0x5'),_0x26833e?_0x26833e['join'](''):[]);},'get':function(){return this['getDataValue'](_0x197c('0x5'))?this[_0x197c('0x6')](_0x197c('0x5'))[_0x197c('0x7')](''):[];}}};
\ No newline at end of file
+var _0xa30a=['exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','getDataValue','split','sequelize'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xa30a,0xd7));var _0xaa30=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa30a[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xaa30('0x0'));module[_0xaa30('0x1')]={'name':{'type':Sequelize[_0xaa30('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xaa30('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0xaa30('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xaa30('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xaa30('0x2')],'set':function(_0x2a9b06){this[_0xaa30('0x5')](_0xaa30('0x6'),_0x2a9b06?_0x2a9b06['join'](''):[]);},'get':function(){return this[_0xaa30('0x7')]('crudPermissions')?this[_0xaa30('0x7')](_0xaa30('0x6'))[_0xaa30('0x8')](''):[];}}};
\ No newline at end of file
index f4ce891..933fdee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5462=['params','keys','rawAttributes','find','create','body','describe','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','reject','save','update','then','destroy','name','index','map','UserProfileSection','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','filter','options','includeAll','findAll','rows','catch','show'];(function(_0x444f87,_0x111b48){var _0x5e44a7=function(_0x2e9f91){while(--_0x2e9f91){_0x444f87['push'](_0x444f87['shift']());}};_0x5e44a7(++_0x111b48);}(_0x5462,0x9f));var _0x2546=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0x5462[_0x474bc0];return _0x4b24cf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2546('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2546('0x1'));var rp=require('request-promise');var moment=require(_0x2546('0x2'));var BPromise=require(_0x2546('0x3'));var Mustache=require(_0x2546('0x4'));var util=require(_0x2546('0x5'));var path=require('path');var sox=require(_0x2546('0x6'));var csv=require(_0x2546('0x7'));var ejs=require(_0x2546('0x8'));var fs=require('fs');var fs_extra=require(_0x2546('0x9'));var _=require(_0x2546('0xa'));var squel=require('squel');var crypto=require(_0x2546('0xb'));var jsforce=require(_0x2546('0xc'));var deskjs=require(_0x2546('0xd'));var toCsv=require(_0x2546('0x7'));var querystring=require(_0x2546('0xe'));var Papa=require(_0x2546('0xf'));var Redis=require(_0x2546('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2546('0x11'));var as=require(_0x2546('0x12'));var hardwareService=require(_0x2546('0x13'));var logger=require(_0x2546('0x14'))(_0x2546('0x15'));var utils=require(_0x2546('0x16'));var config=require(_0x2546('0x17'));var licenseUtil=require(_0x2546('0x18'));var db=require(_0x2546('0x19'))['db'];function respondWithStatusCode(_0x41ac8a,_0x58be46){_0x58be46=_0x58be46||0xcc;return function(_0x237087){if(_0x237087){return _0x41ac8a[_0x2546('0x1a')](_0x58be46);}return _0x41ac8a[_0x2546('0x1b')](_0x58be46)[_0x2546('0x1c')]();};}function respondWithResult(_0x3cbea2,_0x4758d0){_0x4758d0=_0x4758d0||0xc8;return function(_0x11c653){if(_0x11c653){return _0x3cbea2[_0x2546('0x1b')](_0x4758d0)['json'](_0x11c653);}};}function respondWithFilteredResult(_0x66348a,_0x5d6eeb){return function(_0x4a341c){if(_0x4a341c){var _0x2c06e7=typeof _0x5d6eeb['offset']===_0x2546('0x1d')&&typeof _0x5d6eeb['limit']===_0x2546('0x1d');var _0x38a547=_0x4a341c[_0x2546('0x1e')];var _0x5ea192=_0x2c06e7?0x0:_0x5d6eeb[_0x2546('0x1f')];var _0x35aad8=_0x2c06e7?_0x4a341c[_0x2546('0x1e')]:_0x5d6eeb['offset']+_0x5d6eeb[_0x2546('0x20')];var _0x3b92f8;if(_0x35aad8>=_0x38a547){_0x35aad8=_0x38a547;_0x3b92f8=0xc8;}else{_0x3b92f8=0xce;}_0x66348a[_0x2546('0x1b')](_0x3b92f8);return _0x66348a[_0x2546('0x21')](_0x2546('0x22'),_0x5ea192+'-'+_0x35aad8+'/'+_0x38a547)[_0x2546('0x23')](_0x4a341c);}return null;};}function patchUpdates(_0x300a90){return function(_0x56342f){try{jsonpatch['apply'](_0x56342f,_0x300a90,!![]);}catch(_0x329e35){return BPromise[_0x2546('0x24')](_0x329e35);}return _0x56342f[_0x2546('0x25')]();};}function saveUpdates(_0x2a7be7,_0x2cbf8b){return function(_0x4bc88d){if(_0x4bc88d){return _0x4bc88d[_0x2546('0x26')](_0x2a7be7)[_0x2546('0x27')](function(_0x53633c){return _0x53633c;});}return null;};}function removeEntity(_0x52224f,_0x38743e){return function(_0x3a820e){if(_0x3a820e){return _0x3a820e[_0x2546('0x28')]()[_0x2546('0x27')](function(){_0x52224f[_0x2546('0x1b')](0xcc)[_0x2546('0x1c')]();});}};}function handleEntityNotFound(_0xa6cf6e,_0x41e9cb){return function(_0x4450fd){if(!_0x4450fd){_0xa6cf6e['sendStatus'](0x194);}return _0x4450fd;};}function handleError(_0x3eb4cb,_0x5e4e10){_0x5e4e10=_0x5e4e10||0x1f4;return function(_0x3b6360){logger['error'](_0x3b6360['stack']);if(_0x3b6360['name']){delete _0x3b6360[_0x2546('0x29')];}_0x3eb4cb[_0x2546('0x1b')](_0x5e4e10)['send'](_0x3b6360);};}exports[_0x2546('0x2a')]=function(_0xb9a086,_0x3d006c){var _0x9fe000={},_0x29be3c={},_0x3716f7={'count':0x0,'rows':[]};var _0x2d7adb=_[_0x2546('0x2b')](db[_0x2546('0x2c')]['rawAttributes'],function(_0xe4f98c){return{'name':_0xe4f98c[_0x2546('0x2d')],'type':_0xe4f98c['type'][_0x2546('0x2e')]};});_0x29be3c['model']=_[_0x2546('0x2b')](_0x2d7adb,_0x2546('0x29'));_0x29be3c['query']=_['keys'](_0xb9a086[_0x2546('0x2f')]);_0x29be3c[_0x2546('0x30')]=_[_0x2546('0x31')](_0x29be3c[_0x2546('0x32')],_0x29be3c[_0x2546('0x2f')]);_0x9fe000[_0x2546('0x33')]=_['intersection'](_0x29be3c[_0x2546('0x32')],qs[_0x2546('0x34')](_0xb9a086['query']['fields']));_0x9fe000[_0x2546('0x33')]=_0x9fe000[_0x2546('0x33')][_0x2546('0x35')]?_0x9fe000['attributes']:_0x29be3c['model'];if(!_0xb9a086[_0x2546('0x2f')][_0x2546('0x36')](_0x2546('0x37'))){_0x9fe000['limit']=qs[_0x2546('0x20')](_0xb9a086[_0x2546('0x2f')]['limit']);_0x9fe000[_0x2546('0x1f')]=qs['offset'](_0xb9a086[_0x2546('0x2f')][_0x2546('0x1f')]);}_0x9fe000[_0x2546('0x38')]=qs[_0x2546('0x39')](_0xb9a086[_0x2546('0x2f')][_0x2546('0x39')]);_0x9fe000[_0x2546('0x3a')]=qs['filters'](_[_0x2546('0x3b')](_0xb9a086[_0x2546('0x2f')],_0x29be3c['filters']),_0x2d7adb);if(_0xb9a086[_0x2546('0x2f')]['filter']){_0x9fe000[_0x2546('0x3a')]=_[_0x2546('0x3c')](_0x9fe000['where'],{'$or':_[_0x2546('0x2b')](_0x2d7adb,function(_0x8a5f34){if(_0x8a5f34[_0x2546('0x3d')]!=='VIRTUAL'){var _0x340acf={};_0x340acf[_0x8a5f34[_0x2546('0x29')]]={'$like':'%'+_0xb9a086[_0x2546('0x2f')][_0x2546('0x3e')]+'%'};return _0x340acf;}})});}_0x9fe000=_[_0x2546('0x3c')]({},_0x9fe000,_0xb9a086[_0x2546('0x3f')]);var _0x50c23a={'where':_0x9fe000['where']};return db[_0x2546('0x2c')][_0x2546('0x1e')](_0x50c23a)[_0x2546('0x27')](function(_0x5ea296){_0x3716f7[_0x2546('0x1e')]=_0x5ea296;if(_0xb9a086[_0x2546('0x2f')][_0x2546('0x40')]){_0x9fe000['include']=[{'all':!![]}];}return db['UserProfileSection'][_0x2546('0x41')](_0x9fe000);})[_0x2546('0x27')](function(_0x343997){_0x3716f7[_0x2546('0x42')]=_0x343997;return _0x3716f7;})['then'](respondWithFilteredResult(_0x3d006c,_0x9fe000))[_0x2546('0x43')](handleError(_0x3d006c,null));};exports[_0x2546('0x44')]=function(_0x5f283b,_0x3e2237){var _0x1c1dfe={'raw':![],'where':{'id':_0x5f283b[_0x2546('0x45')]['id']}},_0x4d55ce={};_0x4d55ce[_0x2546('0x32')]=_[_0x2546('0x46')](db[_0x2546('0x2c')][_0x2546('0x47')]);_0x4d55ce[_0x2546('0x2f')]=_[_0x2546('0x46')](_0x5f283b[_0x2546('0x2f')]);_0x4d55ce['filters']=_[_0x2546('0x31')](_0x4d55ce[_0x2546('0x32')],_0x4d55ce['query']);_0x1c1dfe[_0x2546('0x33')]=_[_0x2546('0x31')](_0x4d55ce[_0x2546('0x32')],qs['fields'](_0x5f283b['query'][_0x2546('0x34')]));_0x1c1dfe[_0x2546('0x33')]=_0x1c1dfe[_0x2546('0x33')][_0x2546('0x35')]?_0x1c1dfe[_0x2546('0x33')]:_0x4d55ce[_0x2546('0x32')];if(_0x5f283b[_0x2546('0x2f')][_0x2546('0x40')]){_0x1c1dfe['include']=[{'all':!![]}];}_0x1c1dfe=_['merge']({},_0x1c1dfe,_0x5f283b['options']);return db[_0x2546('0x2c')][_0x2546('0x48')](_0x1c1dfe)[_0x2546('0x27')](handleEntityNotFound(_0x3e2237,null))['then'](respondWithResult(_0x3e2237,null))['catch'](handleError(_0x3e2237,null));};exports[_0x2546('0x49')]=function(_0x4fce5c,_0x5b7798){return db[_0x2546('0x2c')][_0x2546('0x49')](_0x4fce5c['body'],{})[_0x2546('0x27')](respondWithResult(_0x5b7798,0xc9))[_0x2546('0x43')](handleError(_0x5b7798,null));};exports[_0x2546('0x26')]=function(_0x76ec0b,_0x4f986b){if(_0x76ec0b[_0x2546('0x4a')]['id']){delete _0x76ec0b['body']['id'];}return db[_0x2546('0x2c')][_0x2546('0x48')]({'where':{'id':_0x76ec0b['params']['id']}})['then'](handleEntityNotFound(_0x4f986b,null))[_0x2546('0x27')](saveUpdates(_0x76ec0b[_0x2546('0x4a')],null))[_0x2546('0x27')](respondWithResult(_0x4f986b,null))[_0x2546('0x43')](handleError(_0x4f986b,null));};exports['destroy']=function(_0x5e50e8,_0x4e2706){return db['UserProfileSection'][_0x2546('0x48')]({'where':{'id':_0x5e50e8[_0x2546('0x45')]['id']}})[_0x2546('0x27')](handleEntityNotFound(_0x4e2706,null))[_0x2546('0x27')](removeEntity(_0x4e2706,null))['catch'](handleError(_0x4e2706,null));};exports[_0x2546('0x4b')]=function(_0x9227fd,_0x4a40cb){return db['UserProfileSection'][_0x2546('0x4b')]()[_0x2546('0x27')](respondWithResult(_0x4a40cb,null))[_0x2546('0x43')](handleError(_0x4a40cb,null));};
\ No newline at end of file
+var _0x17da=['end','error','stack','name','send','index','map','UserProfileSection','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','find','create','body','destroy','describe','eml-format','zip-dir','request-promise','moment','util','sox','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','apply','reject','update','then'];(function(_0x5b9584,_0x46e3fa){var _0x337d59=function(_0x3cd679){while(--_0x3cd679){_0x5b9584['push'](_0x5b9584['shift']());}};_0x337d59(++_0x46e3fa);}(_0x17da,0x184));var _0xa17d=function(_0x26f78c,_0x1e9ed8){_0x26f78c=_0x26f78c-0x0;var _0x328b8d=_0x17da[_0x26f78c];return _0x328b8d;};'use strict';var emlformat=require(_0xa17d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa17d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa17d('0x2'));var moment=require(_0xa17d('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa17d('0x4'));var path=require('path');var sox=require(_0xa17d('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa17d('0x6'));var _=require(_0xa17d('0x7'));var squel=require(_0xa17d('0x8'));var crypto=require(_0xa17d('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa17d('0xa'));var querystring=require(_0xa17d('0xb'));var Papa=require(_0xa17d('0xc'));var Redis=require(_0xa17d('0xd'));var authService=require(_0xa17d('0xe'));var qs=require(_0xa17d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa17d('0x10'));var utils=require(_0xa17d('0x11'));var config=require(_0xa17d('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xa17d('0x13'))['db'];function respondWithStatusCode(_0x59b878,_0x32ddb9){_0x32ddb9=_0x32ddb9||0xcc;return function(_0x387e07){if(_0x387e07){return _0x59b878[_0xa17d('0x14')](_0x32ddb9);}return _0x59b878[_0xa17d('0x15')](_0x32ddb9)['end']();};}function respondWithResult(_0x450280,_0xc485a2){_0xc485a2=_0xc485a2||0xc8;return function(_0x267f21){if(_0x267f21){return _0x450280['status'](_0xc485a2)['json'](_0x267f21);}};}function respondWithFilteredResult(_0x41e902,_0x28a578){return function(_0x24ca96){if(_0x24ca96){var _0x2a3a50=typeof _0x28a578[_0xa17d('0x16')]==='undefined'&&typeof _0x28a578[_0xa17d('0x17')]==='undefined';var _0x310303=_0x24ca96[_0xa17d('0x18')];var _0x5963f3=_0x2a3a50?0x0:_0x28a578['offset'];var _0x58f174=_0x2a3a50?_0x24ca96[_0xa17d('0x18')]:_0x28a578[_0xa17d('0x16')]+_0x28a578['limit'];var _0x134830;if(_0x58f174>=_0x310303){_0x58f174=_0x310303;_0x134830=0xc8;}else{_0x134830=0xce;}_0x41e902['status'](_0x134830);return _0x41e902[_0xa17d('0x19')](_0xa17d('0x1a'),_0x5963f3+'-'+_0x58f174+'/'+_0x310303)[_0xa17d('0x1b')](_0x24ca96);}return null;};}function patchUpdates(_0x5a1adb){return function(_0x4aacbf){try{jsonpatch[_0xa17d('0x1c')](_0x4aacbf,_0x5a1adb,!![]);}catch(_0x2e0ffc){return BPromise[_0xa17d('0x1d')](_0x2e0ffc);}return _0x4aacbf['save']();};}function saveUpdates(_0x3961ba,_0x2b427a){return function(_0x16f84b){if(_0x16f84b){return _0x16f84b[_0xa17d('0x1e')](_0x3961ba)[_0xa17d('0x1f')](function(_0x5e97ae){return _0x5e97ae;});}return null;};}function removeEntity(_0x178d1f,_0x69bcc4){return function(_0x326b01){if(_0x326b01){return _0x326b01['destroy']()[_0xa17d('0x1f')](function(){_0x178d1f[_0xa17d('0x15')](0xcc)[_0xa17d('0x20')]();});}};}function handleEntityNotFound(_0x230e4b,_0x378c07){return function(_0x1f907a){if(!_0x1f907a){_0x230e4b[_0xa17d('0x14')](0x194);}return _0x1f907a;};}function handleError(_0x2db177,_0x397747){_0x397747=_0x397747||0x1f4;return function(_0x38d0c3){logger[_0xa17d('0x21')](_0x38d0c3[_0xa17d('0x22')]);if(_0x38d0c3[_0xa17d('0x23')]){delete _0x38d0c3[_0xa17d('0x23')];}_0x2db177[_0xa17d('0x15')](_0x397747)[_0xa17d('0x24')](_0x38d0c3);};}exports[_0xa17d('0x25')]=function(_0x13dc7e,_0x36c7cf){var _0x1e34d9={},_0x375e49={},_0x46d0a4={'count':0x0,'rows':[]};var _0xb88102=_[_0xa17d('0x26')](db[_0xa17d('0x27')]['rawAttributes'],function(_0x872b31){return{'name':_0x872b31[_0xa17d('0x28')],'type':_0x872b31[_0xa17d('0x29')][_0xa17d('0x2a')]};});_0x375e49[_0xa17d('0x2b')]=_[_0xa17d('0x26')](_0xb88102,_0xa17d('0x23'));_0x375e49[_0xa17d('0x2c')]=_[_0xa17d('0x2d')](_0x13dc7e[_0xa17d('0x2c')]);_0x375e49[_0xa17d('0x2e')]=_['intersection'](_0x375e49[_0xa17d('0x2b')],_0x375e49['query']);_0x1e34d9[_0xa17d('0x2f')]=_[_0xa17d('0x30')](_0x375e49[_0xa17d('0x2b')],qs[_0xa17d('0x31')](_0x13dc7e[_0xa17d('0x2c')][_0xa17d('0x31')]));_0x1e34d9[_0xa17d('0x2f')]=_0x1e34d9['attributes'][_0xa17d('0x32')]?_0x1e34d9[_0xa17d('0x2f')]:_0x375e49['model'];if(!_0x13dc7e['query'][_0xa17d('0x33')](_0xa17d('0x34'))){_0x1e34d9[_0xa17d('0x17')]=qs[_0xa17d('0x17')](_0x13dc7e[_0xa17d('0x2c')][_0xa17d('0x17')]);_0x1e34d9['offset']=qs['offset'](_0x13dc7e[_0xa17d('0x2c')][_0xa17d('0x16')]);}_0x1e34d9['order']=qs[_0xa17d('0x35')](_0x13dc7e[_0xa17d('0x2c')][_0xa17d('0x35')]);_0x1e34d9[_0xa17d('0x36')]=qs[_0xa17d('0x2e')](_[_0xa17d('0x37')](_0x13dc7e[_0xa17d('0x2c')],_0x375e49[_0xa17d('0x2e')]),_0xb88102);if(_0x13dc7e[_0xa17d('0x2c')][_0xa17d('0x38')]){_0x1e34d9[_0xa17d('0x36')]=_[_0xa17d('0x39')](_0x1e34d9[_0xa17d('0x36')],{'$or':_[_0xa17d('0x26')](_0xb88102,function(_0x53521f){if(_0x53521f[_0xa17d('0x29')]!==_0xa17d('0x3a')){var _0x2e636a={};_0x2e636a[_0x53521f[_0xa17d('0x23')]]={'$like':'%'+_0x13dc7e[_0xa17d('0x2c')]['filter']+'%'};return _0x2e636a;}})});}_0x1e34d9=_['merge']({},_0x1e34d9,_0x13dc7e[_0xa17d('0x3b')]);var _0x2e58b7={'where':_0x1e34d9[_0xa17d('0x36')]};return db[_0xa17d('0x27')][_0xa17d('0x18')](_0x2e58b7)[_0xa17d('0x1f')](function(_0x1c74a6){_0x46d0a4[_0xa17d('0x18')]=_0x1c74a6;if(_0x13dc7e['query'][_0xa17d('0x3c')]){_0x1e34d9[_0xa17d('0x3d')]=[{'all':!![]}];}return db['UserProfileSection']['findAll'](_0x1e34d9);})[_0xa17d('0x1f')](function(_0x18c63a){_0x46d0a4['rows']=_0x18c63a;return _0x46d0a4;})[_0xa17d('0x1f')](respondWithFilteredResult(_0x36c7cf,_0x1e34d9))[_0xa17d('0x3e')](handleError(_0x36c7cf,null));};exports[_0xa17d('0x3f')]=function(_0x4fd918,_0x541b18){var _0x256ca0={'raw':![],'where':{'id':_0x4fd918[_0xa17d('0x40')]['id']}},_0xd0ed7e={};_0xd0ed7e[_0xa17d('0x2b')]=_['keys'](db[_0xa17d('0x27')]['rawAttributes']);_0xd0ed7e[_0xa17d('0x2c')]=_[_0xa17d('0x2d')](_0x4fd918[_0xa17d('0x2c')]);_0xd0ed7e[_0xa17d('0x2e')]=_[_0xa17d('0x30')](_0xd0ed7e[_0xa17d('0x2b')],_0xd0ed7e['query']);_0x256ca0[_0xa17d('0x2f')]=_['intersection'](_0xd0ed7e[_0xa17d('0x2b')],qs['fields'](_0x4fd918['query'][_0xa17d('0x31')]));_0x256ca0[_0xa17d('0x2f')]=_0x256ca0[_0xa17d('0x2f')][_0xa17d('0x32')]?_0x256ca0['attributes']:_0xd0ed7e[_0xa17d('0x2b')];if(_0x4fd918[_0xa17d('0x2c')]['includeAll']){_0x256ca0[_0xa17d('0x3d')]=[{'all':!![]}];}_0x256ca0=_[_0xa17d('0x39')]({},_0x256ca0,_0x4fd918[_0xa17d('0x3b')]);return db[_0xa17d('0x27')][_0xa17d('0x41')](_0x256ca0)[_0xa17d('0x1f')](handleEntityNotFound(_0x541b18,null))[_0xa17d('0x1f')](respondWithResult(_0x541b18,null))[_0xa17d('0x3e')](handleError(_0x541b18,null));};exports[_0xa17d('0x42')]=function(_0x2cf058,_0xf3f79f){return db['UserProfileSection'][_0xa17d('0x42')](_0x2cf058[_0xa17d('0x43')],{})[_0xa17d('0x1f')](respondWithResult(_0xf3f79f,0xc9))[_0xa17d('0x3e')](handleError(_0xf3f79f,null));};exports[_0xa17d('0x1e')]=function(_0x341ad0,_0x5ac2f9){if(_0x341ad0['body']['id']){delete _0x341ad0[_0xa17d('0x43')]['id'];}return db[_0xa17d('0x27')][_0xa17d('0x41')]({'where':{'id':_0x341ad0['params']['id']}})[_0xa17d('0x1f')](handleEntityNotFound(_0x5ac2f9,null))[_0xa17d('0x1f')](saveUpdates(_0x341ad0['body'],null))['then'](respondWithResult(_0x5ac2f9,null))[_0xa17d('0x3e')](handleError(_0x5ac2f9,null));};exports[_0xa17d('0x44')]=function(_0x43a058,_0xc572fa){return db[_0xa17d('0x27')]['find']({'where':{'id':_0x43a058['params']['id']}})[_0xa17d('0x1f')](handleEntityNotFound(_0xc572fa,null))[_0xa17d('0x1f')](removeEntity(_0xc572fa,null))[_0xa17d('0x3e')](handleError(_0xc572fa,null));};exports[_0xa17d('0x45')]=function(_0x487927,_0x23b84f){return db[_0xa17d('0x27')][_0xa17d('0x45')]()[_0xa17d('0x1f')](respondWithResult(_0x23b84f,null))['catch'](handleError(_0x23b84f,null));};
\ No newline at end of file
index 8635788..3cae921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91f4=['exports','compositeIndex','userProfileId','lodash','util','../../config/logger','api','moment','request-promise','path','./userProfileSection.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x91f4,0x158));var _0x491f=function(_0xbb9af7,_0x1f8228){_0xbb9af7=_0xbb9af7-0x0;var _0x21fdda=_0x91f4[_0xbb9af7];return _0x21fdda;};'use strict';var _=require(_0x491f('0x0'));var util=require(_0x491f('0x1'));var logger=require(_0x491f('0x2'))(_0x491f('0x3'));var moment=require(_0x491f('0x4'));var BPromise=require('bluebird');var rp=require(_0x491f('0x5'));var fs=require('fs');var path=require(_0x491f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x491f('0x7'));module[_0x491f('0x8')]=function(_0x5b8480,_0x1b606b){return _0x5b8480['define']('UserProfileSection',attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x491f('0x9'),'fields':['sectionId',_0x491f('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c7c=['rimraf','../../config/environment','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2b0d39,_0x39757d){var _0x33b8b5=function(_0x22f067){while(--_0x22f067){_0x2b0d39['push'](_0x2b0d39['shift']());}};_0x33b8b5(++_0x39757d);}(_0x5c7c,0x172));var _0xc5c7=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0x5c7c[_0x273dc5];return _0x46dae7;};'use strict';var _=require(_0xc5c7('0x0'));var util=require(_0xc5c7('0x1'));var logger=require(_0xc5c7('0x2'))(_0xc5c7('0x3'));var moment=require(_0xc5c7('0x4'));var BPromise=require(_0xc5c7('0x5'));var rp=require(_0xc5c7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc5c7('0x7'));var config=require(_0xc5c7('0x8'));var attributes=require('./userProfileSection.attributes');module['exports']=function(_0x159512,_0x5fc98e){return _0x159512['define'](_0xc5c7('0x9'),attributes,{'tableName':_0xc5c7('0xa'),'paranoid':![],'indexes':[{'name':_0xc5c7('0xb'),'fields':[_0xc5c7('0xc'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index b4ec5db..6d82e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfaf=['UserProfileSection,\x20%s,\x20%s','message','info','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','debug','request\x20sent','stringify','error','code'];(function(_0x4d6ac0,_0x201628){var _0x5296c4=function(_0x3d0b3d){while(--_0x3d0b3d){_0x4d6ac0['push'](_0x4d6ac0['shift']());}};_0x5296c4(++_0x201628);}(_0xbfaf,0xcb));var _0xfbfa=function(_0x52b7b9,_0x43ed4b){_0x52b7b9=_0x52b7b9-0x0;var _0x5b5d30=_0xbfaf[_0x52b7b9];return _0x5b5d30;};'use strict';var _=require(_0xfbfa('0x0'));var util=require('util');var moment=require(_0xfbfa('0x1'));var BPromise=require('bluebird');var rs=require(_0xfbfa('0x2'));var fs=require('fs');var Redis=require(_0xfbfa('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfbfa('0x4'));var logger=require(_0xfbfa('0x5'))(_0xfbfa('0x6'));var config=require(_0xfbfa('0x7'));var jayson=require(_0xfbfa('0x8'));var client=jayson[_0xfbfa('0x9')][_0xfbfa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21211d,_0x2d2f56,_0x51f80f){return new BPromise(function(_0x437de1,_0x4a24aa){return client[_0xfbfa('0xb')](_0x21211d,_0x51f80f)['then'](function(_0x4e1edb){logger['info']('UserProfileSection,\x20%s,\x20%s',_0x2d2f56,'request\x20sent');logger[_0xfbfa('0xc')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x2d2f56,_0xfbfa('0xd'),JSON[_0xfbfa('0xe')](_0x4e1edb));if(_0x4e1edb['error']){if(_0x4e1edb[_0xfbfa('0xf')][_0xfbfa('0x10')]===0x1f4){logger[_0xfbfa('0xf')](_0xfbfa('0x11'),_0x2d2f56,_0x4e1edb[_0xfbfa('0xf')]['message']);return _0x4a24aa(_0x4e1edb[_0xfbfa('0xf')][_0xfbfa('0x12')]);}logger[_0xfbfa('0xf')](_0xfbfa('0x11'),_0x2d2f56,_0x4e1edb[_0xfbfa('0xf')][_0xfbfa('0x12')]);return _0x437de1(_0x4e1edb[_0xfbfa('0xf')][_0xfbfa('0x12')]);}else{logger[_0xfbfa('0x13')](_0xfbfa('0x11'),_0x2d2f56,_0xfbfa('0xd'));_0x437de1(_0x4e1edb[_0xfbfa('0x14')]['message']);}})[_0xfbfa('0x15')](function(_0x3ba2a3){logger[_0xfbfa('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x2d2f56,_0x3ba2a3);_0x4a24aa(_0x3ba2a3);});});}
\ No newline at end of file
+var _0x0a2f=['jayson/promise','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x0a2f,0x6b));var _0xf0a2=function(_0x38b14f,_0xd08fa8){_0x38b14f=_0x38b14f-0x0;var _0x22a324=_0x0a2f[_0x38b14f];return _0x22a324;};'use strict';var _=require(_0xf0a2('0x0'));var util=require('util');var moment=require(_0xf0a2('0x1'));var BPromise=require(_0xf0a2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf0a2('0x3'));var db=require(_0xf0a2('0x4'))['db'];var utils=require(_0xf0a2('0x5'));var logger=require(_0xf0a2('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf0a2('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x40fc16,_0x65646b,_0x5354df){return new BPromise(function(_0x1b404b,_0x8eec4){return client['request'](_0x40fc16,_0x5354df)[_0xf0a2('0x8')](function(_0x2059d1){logger[_0xf0a2('0x9')](_0xf0a2('0xa'),_0x65646b,_0xf0a2('0xb'));logger[_0xf0a2('0xc')](_0xf0a2('0xd'),_0x65646b,_0xf0a2('0xb'),JSON[_0xf0a2('0xe')](_0x2059d1));if(_0x2059d1[_0xf0a2('0xf')]){if(_0x2059d1[_0xf0a2('0xf')]['code']===0x1f4){logger[_0xf0a2('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x65646b,_0x2059d1[_0xf0a2('0xf')][_0xf0a2('0x10')]);return _0x8eec4(_0x2059d1[_0xf0a2('0xf')][_0xf0a2('0x10')]);}logger[_0xf0a2('0xf')](_0xf0a2('0xa'),_0x65646b,_0x2059d1[_0xf0a2('0xf')][_0xf0a2('0x10')]);return _0x1b404b(_0x2059d1[_0xf0a2('0xf')][_0xf0a2('0x10')]);}else{logger[_0xf0a2('0x9')](_0xf0a2('0xa'),_0x65646b,_0xf0a2('0xb'));_0x1b404b(_0x2059d1[_0xf0a2('0x11')][_0xf0a2('0x10')]);}})[_0xf0a2('0x12')](function(_0x4467e3){logger[_0xf0a2('0xf')](_0xf0a2('0xa'),_0x65646b,_0x4467e3);_0x8eec4(_0x4467e3);});});}
\ No newline at end of file
index 2d6b07a..e29c412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x474f93,_0x131bd2){var _0x4ad7d1=function(_0x29c203){while(--_0x29c203){_0x474f93['push'](_0x474f93['shift']());}};_0x4ad7d1(++_0x131bd2);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x3746fe,_0x30b6b0){var _0xb3093d=function(_0x424b01){while(--_0x424b01){_0x3746fe['push'](_0x3746fe['shift']());}};_0xb3093d(++_0x30b6b0);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 2cbeea3..f8c04fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x415d=['INTEGER','sequelize'];(function(_0x130aee,_0x5efdac){var _0x452dcc=function(_0x2a4a7d){while(--_0x2a4a7d){_0x130aee['push'](_0x130aee['shift']());}};_0x452dcc(++_0x5efdac);}(_0x415d,0x1eb));var _0xd415=function(_0x39ea3d,_0x376a53){_0x39ea3d=_0x39ea3d-0x0;var _0x56985d=_0x415d[_0x39ea3d];return _0x56985d;};'use strict';var Sequelize=require(_0xd415('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xd415('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x90ae=['INTEGER','sequelize'];(function(_0xc7302d,_0x3d85ee){var _0x275c38=function(_0x5e2946){while(--_0x5e2946){_0xc7302d['push'](_0xc7302d['shift']());}};_0x275c38(++_0x3d85ee);}(_0x90ae,0x13f));var _0xe90a=function(_0x69ecfb,_0x1be9af){_0x69ecfb=_0x69ecfb-0x0;var _0x40487b=_0x90ae[_0x69ecfb];return _0x40487b;};'use strict';var Sequelize=require(_0xe90a('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xe90a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 7067515..5bbf208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d4=['util','api','bluebird','request-promise','../../config/environment','./userSmsQueue.attributes','exports','define'];(function(_0x4c39dc,_0x181d09){var _0x20088c=function(_0x5a1a92){while(--_0x5a1a92){_0x4c39dc['push'](_0x4c39dc['shift']());}};_0x20088c(++_0x181d09);}(_0x77d4,0x108));var _0x477d=function(_0x21ad60,_0x181dd2){_0x21ad60=_0x21ad60-0x0;var _0x531c8e=_0x77d4[_0x21ad60];return _0x531c8e;};'use strict';var _=require('lodash');var util=require(_0x477d('0x0'));var logger=require('../../config/logger')(_0x477d('0x1'));var moment=require('moment');var BPromise=require(_0x477d('0x2'));var rp=require(_0x477d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x477d('0x4'));var attributes=require(_0x477d('0x5'));module[_0x477d('0x6')]=function(_0x471fca,_0x2545e5){return _0x471fca[_0x477d('0x7')]('UserSmsQueue',attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd0a=['user_has_sms_queues','lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x59db78,_0x23492d){_0x59db78=_0x59db78-0x0;var _0x52e4d0=_0xbd0a[_0x59db78];return _0x52e4d0;};'use strict';var _=require(_0xabd0('0x0'));var util=require('util');var logger=require(_0xabd0('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xabd0('0x2'));var fs=require('fs');var path=require(_0xabd0('0x3'));var rimraf=require(_0xabd0('0x4'));var config=require(_0xabd0('0x5'));var attributes=require(_0xabd0('0x6'));module[_0xabd0('0x7')]=function(_0x221368,_0xb41697){return _0x221368[_0xabd0('0x8')]('UserSmsQueue',attributes,{'tableName':_0xabd0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4a27fd..0eff1c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c6=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xe2c6,0x78));var _0x6e2c=function(_0x5da61c,_0x107f54){_0x5da61c=_0x5da61c-0x0;var _0x5db4e2=_0xe2c6[_0x5da61c];return _0x5db4e2;};'use strict';var _=require('lodash');var util=require(_0x6e2c('0x0'));var moment=require(_0x6e2c('0x1'));var BPromise=require('bluebird');var rs=require(_0x6e2c('0x2'));var fs=require('fs');var Redis=require(_0x6e2c('0x3'));var db=require(_0x6e2c('0x4'))['db'];var utils=require(_0x6e2c('0x5'));var logger=require('../../config/logger')(_0x6e2c('0x6'));var config=require(_0x6e2c('0x7'));var jayson=require(_0x6e2c('0x8'));var client=jayson[_0x6e2c('0x9')][_0x6e2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e8a7c,_0x484150,_0x51c8a5){return new BPromise(function(_0x39daf9,_0x363991){return client[_0x6e2c('0xb')](_0x5e8a7c,_0x51c8a5)[_0x6e2c('0xc')](function(_0x2c06d1){logger[_0x6e2c('0xd')](_0x6e2c('0xe'),_0x484150,_0x6e2c('0xf'));logger[_0x6e2c('0x10')](_0x6e2c('0x11'),_0x484150,_0x6e2c('0xf'),JSON[_0x6e2c('0x12')](_0x2c06d1));if(_0x2c06d1['error']){if(_0x2c06d1['error'][_0x6e2c('0x13')]===0x1f4){logger['error'](_0x6e2c('0xe'),_0x484150,_0x2c06d1[_0x6e2c('0x14')][_0x6e2c('0x15')]);return _0x363991(_0x2c06d1['error'][_0x6e2c('0x15')]);}logger[_0x6e2c('0x14')]('UserSmsQueue,\x20%s,\x20%s',_0x484150,_0x2c06d1['error']['message']);return _0x39daf9(_0x2c06d1[_0x6e2c('0x14')][_0x6e2c('0x15')]);}else{logger[_0x6e2c('0xd')](_0x6e2c('0xe'),_0x484150,_0x6e2c('0xf'));_0x39daf9(_0x2c06d1[_0x6e2c('0x16')]['message']);}})[_0x6e2c('0x17')](function(_0x24d256){logger[_0x6e2c('0x14')](_0x6e2c('0xe'),_0x484150,_0x24d256);_0x363991(_0x24d256);});});}
\ No newline at end of file
+var _0x6093=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1578ac,_0x3eded5){var _0x444dbd=function(_0x12953f){while(--_0x12953f){_0x1578ac['push'](_0x1578ac['shift']());}};_0x444dbd(++_0x3eded5);}(_0x6093,0x1ad));var _0x3609=function(_0x25c4c9,_0x3fba8e){_0x25c4c9=_0x25c4c9-0x0;var _0x5059c6=_0x6093[_0x25c4c9];return _0x5059c6;};'use strict';var _=require(_0x3609('0x0'));var util=require(_0x3609('0x1'));var moment=require(_0x3609('0x2'));var BPromise=require(_0x3609('0x3'));var rs=require(_0x3609('0x4'));var fs=require('fs');var Redis=require(_0x3609('0x5'));var db=require(_0x3609('0x6'))['db'];var utils=require(_0x3609('0x7'));var logger=require(_0x3609('0x8'))(_0x3609('0x9'));var config=require('../../config/environment');var jayson=require(_0x3609('0xa'));var client=jayson[_0x3609('0xb')][_0x3609('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x755bde,_0x3d65db,_0x49dbd7){return new BPromise(function(_0x2b1dc7,_0x22f140){return client[_0x3609('0xd')](_0x755bde,_0x49dbd7)[_0x3609('0xe')](function(_0x1dafc7){logger[_0x3609('0xf')](_0x3609('0x10'),_0x3d65db,'request\x20sent');logger['debug']('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x3d65db,_0x3609('0x11'),JSON[_0x3609('0x12')](_0x1dafc7));if(_0x1dafc7[_0x3609('0x13')]){if(_0x1dafc7[_0x3609('0x13')][_0x3609('0x14')]===0x1f4){logger[_0x3609('0x13')]('UserSmsQueue,\x20%s,\x20%s',_0x3d65db,_0x1dafc7['error']['message']);return _0x22f140(_0x1dafc7[_0x3609('0x13')][_0x3609('0x15')]);}logger[_0x3609('0x13')](_0x3609('0x10'),_0x3d65db,_0x1dafc7['error'][_0x3609('0x15')]);return _0x2b1dc7(_0x1dafc7[_0x3609('0x13')][_0x3609('0x15')]);}else{logger[_0x3609('0xf')](_0x3609('0x10'),_0x3d65db,'request\x20sent');_0x2b1dc7(_0x1dafc7[_0x3609('0x16')][_0x3609('0x15')]);}})['catch'](function(_0x599a58){logger[_0x3609('0x13')](_0x3609('0x10'),_0x3d65db,_0x599a58);_0x22f140(_0x599a58);});});}
\ No newline at end of file
index 3e8bf14..3444bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc5d=['sequelize','exports'];(function(_0x1b2ce0,_0x31ce2f){var _0x3a126e=function(_0x55a6e8){while(--_0x55a6e8){_0x1b2ce0['push'](_0x1b2ce0['shift']());}};_0x3a126e(++_0x31ce2f);}(_0xdc5d,0x1a0));var _0xddc5=function(_0xf0bc07,_0x510ebf){_0xf0bc07=_0xf0bc07-0x0;var _0x1c50c2=_0xdc5d[_0xf0bc07];return _0x1c50c2;};'use strict';var Sequelize=require(_0xddc5('0x0'));module[_0xddc5('0x1')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 06dcadc..1401a23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x5c095f,_0x1d3c54){var _0x16368a=function(_0x5c8325){while(--_0x5c8325){_0x5c095f['push'](_0x5c095f['shift']());}};_0x16368a(++_0x1d3c54);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x4d091f,_0x299509){var _0x195045=function(_0x3b20ed){while(--_0x3b20ed){_0x4d091f['push'](_0x4d091f['shift']());}};_0x195045(++_0x299509);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0357c1..9fce9c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x1b44ec,_0x4802df){var _0x18aff7=function(_0x51e70d){while(--_0x51e70d){_0x1b44ec['push'](_0x1b44ec['shift']());}};_0x18aff7(++_0x4802df);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x81e39d,_0x4c3934){_0x81e39d=_0x81e39d-0x0;var _0x548fbb=_0xcb91[_0x81e39d];return _0x548fbb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x50f92b,_0x32fab3){var _0x5cedbc=function(_0x26a3a5){while(--_0x26a3a5){_0x50f92b['push'](_0x50f92b['shift']());}};_0x5cedbc(++_0x32fab3);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 566c1c0..f35bb3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1122=['exports','sequelize'];(function(_0x2d8a68,_0x590cd9){var _0x6cff2d=function(_0x110ac6){while(--_0x110ac6){_0x2d8a68['push'](_0x2d8a68['shift']());}};_0x6cff2d(++_0x590cd9);}(_0x1122,0x97));var _0x2112=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1122[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x2112('0x0'));module[_0x2112('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9f07=['exports','INTEGER','sequelize'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x9f07,0x140));var _0x79f0=function(_0x174f1f,_0x260f2f){_0x174f1f=_0x174f1f-0x0;var _0xc42f2e=_0x9f07[_0x174f1f];return _0xc42f2e;};'use strict';var Sequelize=require(_0x79f0('0x0'));module[_0x79f0('0x1')]={'penalty':{'type':Sequelize[_0x79f0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 94d8487..fdeab22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd63a=['rimraf','./userVoiceQueue.attributes','exports','define','user_has_voice_queues','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x164516,_0x22f854){var _0x4b47d4=function(_0x5e139e){while(--_0x5e139e){_0x164516['push'](_0x164516['shift']());}};_0x4b47d4(++_0x22f854);}(_0xd63a,0xaa));var _0xad63=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd63a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xad63('0x0'));var util=require(_0xad63('0x1'));var logger=require(_0xad63('0x2'))(_0xad63('0x3'));var moment=require('moment');var BPromise=require(_0xad63('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xad63('0x5'));var rimraf=require(_0xad63('0x6'));var config=require('../../config/environment');var attributes=require(_0xad63('0x7'));module[_0xad63('0x8')]=function(_0x282b6e,_0x36f7d5){return _0x282b6e[_0xad63('0x9')]('UserVoiceQueue',attributes,{'tableName':_0xad63('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e7c=['user_has_voice_queues','../../config/logger','moment','bluebird','path','rimraf','exports','UserVoiceQueue'];(function(_0x5837d1,_0x4661e0){var _0x43b3b7=function(_0x22c638){while(--_0x22c638){_0x5837d1['push'](_0x5837d1['shift']());}};_0x43b3b7(++_0x4661e0);}(_0x7e7c,0xa9));var _0xc7e7=function(_0x5ebf44,_0x4e543e){_0x5ebf44=_0x5ebf44-0x0;var _0x2fef12=_0x7e7c[_0x5ebf44];return _0x2fef12;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc7e7('0x0'))('api');var moment=require(_0xc7e7('0x1'));var BPromise=require(_0xc7e7('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc7e7('0x3'));var rimraf=require(_0xc7e7('0x4'));var config=require('../../config/environment');var attributes=require('./userVoiceQueue.attributes');module[_0xc7e7('0x5')]=function(_0x57ac7a,_0x3a7700){return _0x57ac7a['define'](_0xc7e7('0x6'),attributes,{'tableName':_0xc7e7('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d2f9d87..845582b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a7a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','UserVoiceQueue,\x20%s,\x20%s','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x2bc88e,_0x21f0a4){var _0x423322=function(_0x1a8d2d){while(--_0x1a8d2d){_0x2bc88e['push'](_0x2bc88e['shift']());}};_0x423322(++_0x21f0a4);}(_0x3a7a,0x141));var _0xa3a7=function(_0x39fd11,_0x5d7883){_0x39fd11=_0x39fd11-0x0;var _0x302799=_0x3a7a[_0x39fd11];return _0x302799;};'use strict';var _=require(_0xa3a7('0x0'));var util=require(_0xa3a7('0x1'));var moment=require(_0xa3a7('0x2'));var BPromise=require(_0xa3a7('0x3'));var rs=require(_0xa3a7('0x4'));var fs=require('fs');var Redis=require(_0xa3a7('0x5'));var db=require(_0xa3a7('0x6'))['db'];var utils=require(_0xa3a7('0x7'));var logger=require(_0xa3a7('0x8'))(_0xa3a7('0x9'));var config=require(_0xa3a7('0xa'));var jayson=require(_0xa3a7('0xb'));var client=jayson[_0xa3a7('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1eb86a,_0x5d883b,_0x56ac4a){return new BPromise(function(_0x32073b,_0xa61b86){return client[_0xa3a7('0xd')](_0x1eb86a,_0x56ac4a)['then'](function(_0x286905){logger[_0xa3a7('0xe')](_0xa3a7('0xf'),_0x5d883b,'request\x20sent');logger[_0xa3a7('0x10')](_0xa3a7('0x11'),_0x5d883b,_0xa3a7('0x12'),JSON[_0xa3a7('0x13')](_0x286905));if(_0x286905[_0xa3a7('0x14')]){if(_0x286905['error'][_0xa3a7('0x15')]===0x1f4){logger[_0xa3a7('0x14')](_0xa3a7('0xf'),_0x5d883b,_0x286905[_0xa3a7('0x14')][_0xa3a7('0x16')]);return _0xa61b86(_0x286905[_0xa3a7('0x14')][_0xa3a7('0x16')]);}logger[_0xa3a7('0x14')](_0xa3a7('0xf'),_0x5d883b,_0x286905['error']['message']);return _0x32073b(_0x286905[_0xa3a7('0x14')][_0xa3a7('0x16')]);}else{logger[_0xa3a7('0xe')](_0xa3a7('0xf'),_0x5d883b,_0xa3a7('0x12'));_0x32073b(_0x286905[_0xa3a7('0x17')][_0xa3a7('0x16')]);}})[_0xa3a7('0x18')](function(_0x581154){logger[_0xa3a7('0x14')](_0xa3a7('0xf'),_0x5d883b,_0x581154);_0xa61b86(_0x581154);});});}
\ No newline at end of file
+var _0x0784=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','randomstring','ioredis'];(function(_0x97e77b,_0x5a9c31){var _0x5daa2a=function(_0x9cf45){while(--_0x9cf45){_0x97e77b['push'](_0x97e77b['shift']());}};_0x5daa2a(++_0x5a9c31);}(_0x0784,0x172));var _0x4078=function(_0x3a2b22,_0x3d4f68){_0x3a2b22=_0x3a2b22-0x0;var _0x23b2cc=_0x0784[_0x3a2b22];return _0x23b2cc;};'use strict';var _=require(_0x4078('0x0'));var util=require('util');var moment=require(_0x4078('0x1'));var BPromise=require('bluebird');var rs=require(_0x4078('0x2'));var fs=require('fs');var Redis=require(_0x4078('0x3'));var db=require(_0x4078('0x4'))['db'];var utils=require(_0x4078('0x5'));var logger=require(_0x4078('0x6'))(_0x4078('0x7'));var config=require(_0x4078('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4078('0x9')][_0x4078('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b0e6e,_0x26d67e,_0x4b17c1){return new BPromise(function(_0x29ae19,_0x191f86){return client[_0x4078('0xb')](_0x5b0e6e,_0x4b17c1)['then'](function(_0x1f0535){logger[_0x4078('0xc')](_0x4078('0xd'),_0x26d67e,_0x4078('0xe'));logger[_0x4078('0xf')](_0x4078('0x10'),_0x26d67e,_0x4078('0xe'),JSON['stringify'](_0x1f0535));if(_0x1f0535[_0x4078('0x11')]){if(_0x1f0535[_0x4078('0x11')][_0x4078('0x12')]===0x1f4){logger[_0x4078('0x11')](_0x4078('0xd'),_0x26d67e,_0x1f0535[_0x4078('0x11')][_0x4078('0x13')]);return _0x191f86(_0x1f0535[_0x4078('0x11')][_0x4078('0x13')]);}logger[_0x4078('0x11')](_0x4078('0xd'),_0x26d67e,_0x1f0535[_0x4078('0x11')][_0x4078('0x13')]);return _0x29ae19(_0x1f0535['error'][_0x4078('0x13')]);}else{logger['info'](_0x4078('0xd'),_0x26d67e,_0x4078('0xe'));_0x29ae19(_0x1f0535[_0x4078('0x14')][_0x4078('0x13')]);}})[_0x4078('0x15')](function(_0x344064){logger[_0x4078('0x11')](_0x4078('0xd'),_0x26d67e,_0x344064);_0x191f86(_0x344064);});});}
\ No newline at end of file
index 2f1dbee..886d1e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x249677,_0x41f1ef){var _0x10f4fe=function(_0x35a07e){while(--_0x35a07e){_0x249677['push'](_0x249677['shift']());}};_0x10f4fe(++_0x41f1ef);}(_0xe706,0xa3));var _0x6e70=function(_0x515cff,_0x27d4a5){_0x515cff=_0x515cff-0x0;var _0x419c0e=_0xe706[_0x515cff];return _0x419c0e;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5c1b2b,_0x46caf2){var _0x2da201=function(_0x3b6c31){while(--_0x3b6c31){_0x5c1b2b['push'](_0x5c1b2b['shift']());}};_0x2da201(++_0x46caf2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4b7b69,_0x3ab075){_0x4b7b69=_0x4b7b69-0x0;var _0x173b4c=_0xcb91[_0x4b7b69];return _0x173b4c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 5b38901..97145a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc504=['exports','Required\x20by\x20Asterisk','STRING','INTEGER','queue_interface','sequelize'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xc504,0x16d));var _0x4c50=function(_0x55a0cf,_0x23a608){_0x55a0cf=_0x55a0cf-0x0;var _0x326b54=_0xc504[_0x55a0cf];return _0x326b54;};'use strict';var Sequelize=require(_0x4c50('0x0'));module[_0x4c50('0x1')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x4c50('0x2')},'membername':{'type':Sequelize[_0x4c50('0x3')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0x4c50('0x4')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4c50('0x5'),'comment':_0x4c50('0x2')},'VoiceQueueId':{'type':Sequelize[_0x4c50('0x4')],'allowNull':![]},'interface':{'type':Sequelize[_0x4c50('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0x4c50('0x2')},'penalty':{'type':Sequelize[_0x4c50('0x4')](0xb),'defaultValue':0x0,'comment':_0x4c50('0x2')},'paused':{'type':Sequelize[_0x4c50('0x4')](0xb),'defaultValue':0x0,'comment':_0x4c50('0x2')}};
\ No newline at end of file
+var _0xaeb4=['exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface','sequelize'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xaeb4,0x161));var _0x4aeb=function(_0x2cef86,_0xbae0a6){_0x2cef86=_0x2cef86-0x0;var _0x46dfd6=_0xaeb4[_0x2cef86];return _0x46dfd6;};'use strict';var Sequelize=require(_0x4aeb('0x0'));module[_0x4aeb('0x1')]={'uniqueid':{'type':Sequelize[_0x4aeb('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x4aeb('0x3')],'allowNull':![],'comment':_0x4aeb('0x4')},'UserId':{'type':Sequelize[_0x4aeb('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x4aeb('0x3')],'allowNull':![],'unique':_0x4aeb('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0x4aeb('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0x4aeb('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0x4aeb('0x4')},'penalty':{'type':Sequelize[_0x4aeb('0x2')](0xb),'defaultValue':0x0,'comment':_0x4aeb('0x4')},'paused':{'type':Sequelize[_0x4aeb('0x2')](0xb),'defaultValue':0x0,'comment':_0x4aeb('0x4')}};
\ No newline at end of file
index c056797..67eff99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe414=['../../mysqldb','UserVoiceQueueRt','save','update','remove','hasOwnProperty','hook','exports','events'];(function(_0x4ca8da,_0x389692){var _0x96ef24=function(_0x9dbc5b){while(--_0x9dbc5b){_0x4ca8da['push'](_0x4ca8da['shift']());}};_0x96ef24(++_0x389692);}(_0xe414,0x167));var _0x4e41=function(_0x128b14,_0x37feb6){_0x128b14=_0x128b14-0x0;var _0x242602=_0xe414[_0x128b14];return _0x242602;};'use strict';var EventEmitter=require(_0x4e41('0x0'));var UserVoiceQueueRt=require(_0x4e41('0x1'))['db'][_0x4e41('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4e41('0x3'),'afterUpdate':_0x4e41('0x4'),'afterDestroy':_0x4e41('0x5')};function emitEvent(_0x31892f){return function(_0x73e1a4,_0x2c240a,_0x55479c){UserVoiceQueueRtEvents['emit'](_0x31892f+':'+_0x73e1a4['id'],_0x73e1a4);UserVoiceQueueRtEvents['emit'](_0x31892f,_0x73e1a4);_0x55479c(null);};}for(var e in events){if(events[_0x4e41('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0x4e41('0x7')](e,emitEvent(event));}}module[_0x4e41('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x5d02=['UserVoiceQueueRt','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x340bed,_0x32aecd){var _0x277cc6=function(_0x4cc3d0){while(--_0x4cc3d0){_0x340bed['push'](_0x340bed['shift']());}};_0x277cc6(++_0x32aecd);}(_0x5d02,0x1c0));var _0x25d0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d02[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x25d0('0x0'));var UserVoiceQueueRt=require(_0x25d0('0x1'))['db'][_0x25d0('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x25d0('0x3')](0x0);var events={'afterCreate':_0x25d0('0x4'),'afterUpdate':_0x25d0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5b5f2d){return function(_0x4d78ee,_0x231bed,_0x168542){UserVoiceQueueRtEvents[_0x25d0('0x6')](_0x5b5f2d+':'+_0x4d78ee['id'],_0x4d78ee);UserVoiceQueueRtEvents['emit'](_0x5b5f2d,_0x4d78ee);_0x168542(null);};}for(var e in events){if(events[_0x25d0('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x25d0('0x8')](e,emitEvent(event));}}module[_0x25d0('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 9fc42d1..7d06581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5b6=['api','moment','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','UserVoiceQueueRt','user_has_voice_queues_rt','util','../../config/logger'];(function(_0xe8a12,_0x59690c){var _0x3567d4=function(_0x14fd7f){while(--_0x14fd7f){_0xe8a12['push'](_0xe8a12['shift']());}};_0x3567d4(++_0x59690c);}(_0xc5b6,0x15c));var _0x6c5b=function(_0x21ae04,_0x30ca6b){_0x21ae04=_0x21ae04-0x0;var _0x38359c=_0xc5b6[_0x21ae04];return _0x38359c;};'use strict';var _=require('lodash');var util=require(_0x6c5b('0x0'));var logger=require(_0x6c5b('0x1'))(_0x6c5b('0x2'));var moment=require(_0x6c5b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6c5b('0x4'));var rimraf=require(_0x6c5b('0x5'));var config=require(_0x6c5b('0x6'));var attributes=require(_0x6c5b('0x7'));module['exports']=function(_0x271d97,_0x45dd26){return _0x271d97['define'](_0x6c5b('0x8'),attributes,{'tableName':_0x6c5b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc908=['../../config/environment','exports','define','UserVoiceQueueRt','lodash','../../config/logger','moment'];(function(_0x1bd790,_0xd5b7a3){var _0xb09b7a=function(_0x44d587){while(--_0x44d587){_0x1bd790['push'](_0x1bd790['shift']());}};_0xb09b7a(++_0xd5b7a3);}(_0xc908,0x82));var _0x8c90=function(_0x1bb6aa,_0x40fe82){_0x1bb6aa=_0x1bb6aa-0x0;var _0x2ef28e=_0xc908[_0x1bb6aa];return _0x2ef28e;};'use strict';var _=require(_0x8c90('0x0'));var util=require('util');var logger=require(_0x8c90('0x1'))('api');var moment=require(_0x8c90('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8c90('0x3'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x8c90('0x4')]=function(_0x21a0df,_0x31fe6c){return _0x21a0df[_0x8c90('0x5')](_0x8c90('0x6'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dfd96ce..271ea55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5209=['error','code','message','catch','UserVoiceQueueRt','options','raw','where','COUNT','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','./userVoiceQueueRt.socket','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x568bc6,_0x10a878){var _0x4bb716=function(_0x3653f0){while(--_0x3653f0){_0x568bc6['push'](_0x568bc6['shift']());}};_0x4bb716(++_0x10a878);}(_0x5209,0x13f));var _0x9520=function(_0x5a5bf9,_0x1179f1){_0x5a5bf9=_0x5a5bf9-0x0;var _0x221813=_0x5209[_0x5a5bf9];return _0x221813;};'use strict';var _=require(_0x9520('0x0'));var util=require(_0x9520('0x1'));var moment=require(_0x9520('0x2'));var BPromise=require(_0x9520('0x3'));var rs=require(_0x9520('0x4'));var fs=require('fs');var Redis=require(_0x9520('0x5'));var db=require(_0x9520('0x6'))['db'];var utils=require(_0x9520('0x7'));var logger=require(_0x9520('0x8'))(_0x9520('0x9'));var config=require('../../config/environment');var jayson=require(_0x9520('0xa'));var client=jayson[_0x9520('0xb')][_0x9520('0xc')]({'port':0x232a});config[_0x9520('0xd')]=_['defaults'](config[_0x9520('0xd')],{'host':_0x9520('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9520('0xd')]));require(_0x9520('0xf'))['register'](socket);function respondWithRpcPromise(_0x3c0f2a,_0x4beb4f,_0x114dd6){return new BPromise(function(_0x4f7dc7,_0x174c6d){return client[_0x9520('0x10')](_0x3c0f2a,_0x114dd6)[_0x9520('0x11')](function(_0x3776bd){logger[_0x9520('0x12')](_0x9520('0x13'),_0x4beb4f,_0x9520('0x14'));logger['debug'](_0x9520('0x15'),_0x4beb4f,'request\x20sent',JSON[_0x9520('0x16')](_0x3776bd));if(_0x3776bd[_0x9520('0x17')]){if(_0x3776bd[_0x9520('0x17')][_0x9520('0x18')]===0x1f4){logger['error'](_0x9520('0x13'),_0x4beb4f,_0x3776bd[_0x9520('0x17')][_0x9520('0x19')]);return _0x174c6d(_0x3776bd[_0x9520('0x17')][_0x9520('0x19')]);}logger[_0x9520('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x4beb4f,_0x3776bd[_0x9520('0x17')]['message']);return _0x4f7dc7(_0x3776bd[_0x9520('0x17')][_0x9520('0x19')]);}else{logger['info'](_0x9520('0x13'),_0x4beb4f,'request\x20sent');_0x4f7dc7(_0x3776bd['result'][_0x9520('0x19')]);}})[_0x9520('0x1a')](function(_0x47ad63){logger[_0x9520('0x17')](_0x9520('0x13'),_0x4beb4f,_0x47ad63);_0x174c6d(_0x47ad63);});});}exports['GetVoiceQueueRtPauses']=function(_0x397f5c){var _0x4e7f0e=this;return new Promise(function(_0x261cf7,_0x18d30c){return db[_0x9520('0x1b')]['findAll']({'raw':_0x397f5c[_0x9520('0x1c')]?_0x397f5c[_0x9520('0x1c')][_0x9520('0x1d')]===undefined?!![]:![]:!![],'where':_0x397f5c[_0x9520('0x1c')]?_0x397f5c[_0x9520('0x1c')][_0x9520('0x1e')]||null:null,'attributes':[[db['sequelize']['fn'](_0x9520('0x1f'),db[_0x9520('0x20')]['fn']('IF',db['sequelize'][_0x9520('0x21')](_0x9520('0x22')))),_0x9520('0x23')]]})['then'](function(_0x54e1fd){logger[_0x9520('0x12')](_0x9520('0x24'),_0x397f5c);logger[_0x9520('0x25')](_0x9520('0x24'),_0x397f5c,JSON[_0x9520('0x16')](_0x54e1fd));_0x261cf7(_0x54e1fd);})[_0x9520('0x1a')](function(_0x23fb49){logger[_0x9520('0x17')](_0x9520('0x24'),_0x23fb49[_0x9520('0x19')],_0x397f5c);_0x18d30c(_0x4e7f0e[_0x9520('0x17')](0x1f4,_0x23fb49[_0x9520('0x19')]));});});};
\ No newline at end of file
+var _0x6d51=['register','request','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UserVoiceQueueRt','findAll','options','raw','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','GetVoiceQueueRtPauses','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x8665c9,_0x57d266){var _0x418365=function(_0x3d006e){while(--_0x3d006e){_0x8665c9['push'](_0x8665c9['shift']());}};_0x418365(++_0x57d266);}(_0x6d51,0xc4));var _0x16d5=function(_0x476ee2,_0x2917cd){_0x476ee2=_0x476ee2-0x0;var _0xe492c1=_0x6d51[_0x476ee2];return _0xe492c1;};'use strict';var _=require('lodash');var util=require(_0x16d5('0x0'));var moment=require(_0x16d5('0x1'));var BPromise=require('bluebird');var rs=require(_0x16d5('0x2'));var fs=require('fs');var Redis=require(_0x16d5('0x3'));var db=require(_0x16d5('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x16d5('0x5'));var config=require(_0x16d5('0x6'));var jayson=require(_0x16d5('0x7'));var client=jayson[_0x16d5('0x8')][_0x16d5('0x9')]({'port':0x232a});config[_0x16d5('0xa')]=_[_0x16d5('0xb')](config[_0x16d5('0xa')],{'host':_0x16d5('0xc'),'port':0x18eb});var socket=require(_0x16d5('0xd'))(new Redis(config[_0x16d5('0xa')]));require('./userVoiceQueueRt.socket')[_0x16d5('0xe')](socket);function respondWithRpcPromise(_0x55cb5c,_0x1321ae,_0x30f34a){return new BPromise(function(_0x33d745,_0x15b9ef){return client[_0x16d5('0xf')](_0x55cb5c,_0x30f34a)['then'](function(_0x2ba70e){logger[_0x16d5('0x10')](_0x16d5('0x11'),_0x1321ae,_0x16d5('0x12'));logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x1321ae,'request\x20sent',JSON[_0x16d5('0x13')](_0x2ba70e));if(_0x2ba70e[_0x16d5('0x14')]){if(_0x2ba70e[_0x16d5('0x14')][_0x16d5('0x15')]===0x1f4){logger[_0x16d5('0x14')](_0x16d5('0x11'),_0x1321ae,_0x2ba70e[_0x16d5('0x14')][_0x16d5('0x16')]);return _0x15b9ef(_0x2ba70e[_0x16d5('0x14')][_0x16d5('0x16')]);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x1321ae,_0x2ba70e[_0x16d5('0x14')][_0x16d5('0x16')]);return _0x33d745(_0x2ba70e[_0x16d5('0x14')][_0x16d5('0x16')]);}else{logger[_0x16d5('0x10')](_0x16d5('0x11'),_0x1321ae,'request\x20sent');_0x33d745(_0x2ba70e[_0x16d5('0x17')][_0x16d5('0x16')]);}})[_0x16d5('0x18')](function(_0x1bdba9){logger[_0x16d5('0x14')](_0x16d5('0x11'),_0x1321ae,_0x1bdba9);_0x15b9ef(_0x1bdba9);});});}exports['GetVoiceQueueRtPauses']=function(_0x499ab8){var _0x356749=this;return new Promise(function(_0x5efe99,_0x104f9d){return db[_0x16d5('0x19')][_0x16d5('0x1a')]({'raw':_0x499ab8[_0x16d5('0x1b')]?_0x499ab8[_0x16d5('0x1b')][_0x16d5('0x1c')]===undefined?!![]:![]:!![],'where':_0x499ab8[_0x16d5('0x1b')]?_0x499ab8[_0x16d5('0x1b')]['where']||null:null,'attributes':[[db[_0x16d5('0x1d')]['fn']('COUNT',db[_0x16d5('0x1d')]['fn']('IF',db['sequelize'][_0x16d5('0x1e')](_0x16d5('0x1f')))),_0x16d5('0x20')]]})[_0x16d5('0x21')](function(_0xa7eca1){logger[_0x16d5('0x10')](_0x16d5('0x22'),_0x499ab8);logger['debug']('GetVoiceQueueRtPauses',_0x499ab8,JSON['stringify'](_0xa7eca1));_0x5efe99(_0xa7eca1);})['catch'](function(_0x540637){logger[_0x16d5('0x14')](_0x16d5('0x22'),_0x540637[_0x16d5('0x16')],_0x499ab8);_0x104f9d(_0x356749[_0x16d5('0x14')](0x1f4,_0x540637[_0x16d5('0x16')]));});});};
\ No newline at end of file
index 69951c1..277b4ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dcc=['./userVoiceQueueRt.events','save','remove','update','emit'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x1dcc,0x1ea));var _0xc1dc=function(_0x118e89,_0x2dd79e){_0x118e89=_0x118e89-0x0;var _0x2ffad9=_0x1dcc[_0x118e89];return _0x2ffad9;};'use strict';var UserVoiceQueueRtEvents=require(_0xc1dc('0x0'));var events=[_0xc1dc('0x1'),_0xc1dc('0x2'),_0xc1dc('0x3')];function createListener(_0x5c9880,_0x934769){return function(_0x4dece3){_0x934769[_0xc1dc('0x4')](_0x5c9880,_0x4dece3);};}function removeListener(_0x3eb139,_0x2a8ff9){return function(){UserVoiceQueueRtEvents['removeListener'](_0x3eb139,_0x2a8ff9);};}exports['register']=function(_0x1e57ba){for(var _0x381ab6=0x0,_0x41b667=events['length'];_0x381ab6<_0x41b667;_0x381ab6++){var _0x3ef050=events[_0x381ab6];var _0x3deb94=createListener('userVoiceQueueRt:'+_0x3ef050,_0x1e57ba);UserVoiceQueueRtEvents['on'](_0x3ef050,_0x3deb94);}};
\ No newline at end of file
+var _0x36f3=['register','userVoiceQueueRt:','save','remove','update','emit'];(function(_0x1ab758,_0x3dbede){var _0x5788a0=function(_0x324d24){while(--_0x324d24){_0x1ab758['push'](_0x1ab758['shift']());}};_0x5788a0(++_0x3dbede);}(_0x36f3,0xe6));var _0x336f=function(_0x3e9859,_0x1da4ed){_0x3e9859=_0x3e9859-0x0;var _0xa930bd=_0x36f3[_0x3e9859];return _0xa930bd;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x336f('0x0'),_0x336f('0x1'),_0x336f('0x2')];function createListener(_0x16d8d7,_0x144f4c){return function(_0x10f6b8){_0x144f4c[_0x336f('0x3')](_0x16d8d7,_0x10f6b8);};}function removeListener(_0x475ff4,_0xfe7edc){return function(){UserVoiceQueueRtEvents['removeListener'](_0x475ff4,_0xfe7edc);};}exports[_0x336f('0x4')]=function(_0x267661){for(var _0xf85f24=0x0,_0x4ef72f=events['length'];_0xf85f24<_0x4ef72f;_0xf85f24++){var _0x3963d1=events[_0xf85f24];var _0x3aab62=createListener(_0x336f('0x5')+_0x3963d1,_0x267661);UserVoiceQueueRtEvents['on'](_0x3963d1,_0x3aab62);}};
\ No newline at end of file
index 2013ed7..2949ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x24971f,_0x51a549){var _0x1ca7b5=function(_0x8fec59){while(--_0x8fec59){_0x24971f['push'](_0x24971f['shift']());}};_0x1ca7b5(++_0x51a549);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5d8631,_0x44944b){_0x5d8631=_0x5d8631-0x0;var _0x34c15e=_0xcb91[_0x5d8631];return _0x34c15e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x39fa2b,_0xd89737){var _0x3a2c34=function(_0x48f997){while(--_0x48f997){_0x39fa2b['push'](_0x39fa2b['shift']());}};_0x3a2c34(++_0xd89737);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x421c56,_0x4efd00){_0x421c56=_0x421c56-0x0;var _0x49b244=_0xcb91[_0x421c56];return _0x49b244;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 0fc82e4..bcf2c00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b97=['INTEGER','exports'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0x7b97,0x1c1));var _0x77b9=function(_0x136628,_0xdd3206){_0x136628=_0x136628-0x0;var _0x35aad7=_0x7b97[_0x136628];return _0x35aad7;};'use strict';var Sequelize=require('sequelize');module[_0x77b9('0x0')]={'penalty':{'type':Sequelize[_0x77b9('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9a14=['INTEGER','sequelize','exports'];(function(_0x44c48f,_0x459b9b){var _0x4f15e0=function(_0x54182c){while(--_0x54182c){_0x44c48f['push'](_0x44c48f['shift']());}};_0x4f15e0(++_0x459b9b);}(_0x9a14,0x1ab));var _0x49a1=function(_0x284d75,_0x2fedda){_0x284d75=_0x284d75-0x0;var _0x37c6ce=_0x9a14[_0x284d75];return _0x37c6ce;};'use strict';var Sequelize=require(_0x49a1('0x0'));module[_0x49a1('0x1')]={'penalty':{'type':Sequelize[_0x49a1('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 3fc4b92..c5d5be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c7b=['moment','bluebird','request-promise','path','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','../../config/logger','api'];(function(_0x5851da,_0x1e5632){var _0x22355b=function(_0x473038){while(--_0x473038){_0x5851da['push'](_0x5851da['shift']());}};_0x22355b(++_0x1e5632);}(_0x5c7b,0x1c6));var _0xb5c7=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x5c7b[_0xaa0309];return _0x5de7ce;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb5c7('0x0'))(_0xb5c7('0x1'));var moment=require(_0xb5c7('0x2'));var BPromise=require(_0xb5c7('0x3'));var rp=require(_0xb5c7('0x4'));var fs=require('fs');var path=require(_0xb5c7('0x5'));var rimraf=require('rimraf');var config=require(_0xb5c7('0x6'));var attributes=require(_0xb5c7('0x7'));module[_0xb5c7('0x8')]=function(_0x55659d,_0x949bf){return _0x55659d[_0xb5c7('0x9')](_0xb5c7('0xa'),attributes,{'tableName':_0xb5c7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe877=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','lodash'];(function(_0x4732a1,_0x248f32){var _0xd2a46c=function(_0x4afd8d){while(--_0x4afd8d){_0x4732a1['push'](_0x4732a1['shift']());}};_0xd2a46c(++_0x248f32);}(_0xe877,0x137));var _0x7e87=function(_0x1c4516,_0x15dd38){_0x1c4516=_0x1c4516-0x0;var _0x4db676=_0xe877[_0x1c4516];return _0x4db676;};'use strict';var _=require(_0x7e87('0x0'));var util=require(_0x7e87('0x1'));var logger=require(_0x7e87('0x2'))(_0x7e87('0x3'));var moment=require('moment');var BPromise=require(_0x7e87('0x4'));var rp=require(_0x7e87('0x5'));var fs=require('fs');var path=require(_0x7e87('0x6'));var rimraf=require(_0x7e87('0x7'));var config=require(_0x7e87('0x8'));var attributes=require(_0x7e87('0x9'));module[_0x7e87('0xa')]=function(_0xdca378,_0xae15fd){return _0xdca378[_0x7e87('0xb')](_0x7e87('0xc'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e12ab2..bfdb274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2b=['request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x26d2a9,_0x4e4d9d){var _0x512b66=function(_0x564366){while(--_0x564366){_0x26d2a9['push'](_0x26d2a9['shift']());}};_0x512b66(++_0x4e4d9d);}(_0x5f2b,0x1c3));var _0xb5f2=function(_0x39b45a,_0xc01dee){_0x39b45a=_0x39b45a-0x0;var _0x41e505=_0x5f2b[_0x39b45a];return _0x41e505;};'use strict';var _=require('lodash');var util=require(_0xb5f2('0x0'));var moment=require(_0xb5f2('0x1'));var BPromise=require(_0xb5f2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb5f2('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb5f2('0x4'));var logger=require(_0xb5f2('0x5'))(_0xb5f2('0x6'));var config=require(_0xb5f2('0x7'));var jayson=require(_0xb5f2('0x8'));var client=jayson[_0xb5f2('0x9')][_0xb5f2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1137ff,_0x35703d,_0x3a7722){return new BPromise(function(_0x283f61,_0x4e0458){return client[_0xb5f2('0xb')](_0x1137ff,_0x3a7722)[_0xb5f2('0xc')](function(_0x2c1e67){logger['info'](_0xb5f2('0xd'),_0x35703d,_0xb5f2('0xe'));logger[_0xb5f2('0xf')](_0xb5f2('0x10'),_0x35703d,_0xb5f2('0xe'),JSON[_0xb5f2('0x11')](_0x2c1e67));if(_0x2c1e67[_0xb5f2('0x12')]){if(_0x2c1e67['error']['code']===0x1f4){logger[_0xb5f2('0x12')](_0xb5f2('0xd'),_0x35703d,_0x2c1e67['error']['message']);return _0x4e0458(_0x2c1e67['error'][_0xb5f2('0x13')]);}logger[_0xb5f2('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x35703d,_0x2c1e67[_0xb5f2('0x12')][_0xb5f2('0x13')]);return _0x283f61(_0x2c1e67['error'][_0xb5f2('0x13')]);}else{logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x35703d,_0xb5f2('0xe'));_0x283f61(_0x2c1e67[_0xb5f2('0x14')][_0xb5f2('0x13')]);}})[_0xb5f2('0x15')](function(_0x356ac6){logger[_0xb5f2('0x12')](_0xb5f2('0xd'),_0x35703d,_0x356ac6);_0x4e0458(_0x356ac6);});});}
\ No newline at end of file
+var _0x5b24=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserWhatsappQueue,\x20%s,\x20%s','message','result','lodash','bluebird','randomstring'];(function(_0x4b1665,_0xb0c095){var _0x5850c0=function(_0x44b7a4){while(--_0x44b7a4){_0x4b1665['push'](_0x4b1665['shift']());}};_0x5850c0(++_0xb0c095);}(_0x5b24,0x1f1));var _0x45b2=function(_0x460264,_0x51ddff){_0x460264=_0x460264-0x0;var _0x2d75a1=_0x5b24[_0x460264];return _0x2d75a1;};'use strict';var _=require(_0x45b2('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x45b2('0x1'));var rs=require(_0x45b2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45b2('0x3'))['db'];var utils=require(_0x45b2('0x4'));var logger=require(_0x45b2('0x5'))(_0x45b2('0x6'));var config=require('../../config/environment');var jayson=require(_0x45b2('0x7'));var client=jayson['client'][_0x45b2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39aa03,_0xaf4ae9,_0x5005c0){return new BPromise(function(_0x291d08,_0x14b7d1){return client[_0x45b2('0x9')](_0x39aa03,_0x5005c0)[_0x45b2('0xa')](function(_0x4e8b45){logger[_0x45b2('0xb')]('UserWhatsappQueue,\x20%s,\x20%s',_0xaf4ae9,_0x45b2('0xc'));logger[_0x45b2('0xd')](_0x45b2('0xe'),_0xaf4ae9,_0x45b2('0xc'),JSON[_0x45b2('0xf')](_0x4e8b45));if(_0x4e8b45[_0x45b2('0x10')]){if(_0x4e8b45[_0x45b2('0x10')]['code']===0x1f4){logger['error'](_0x45b2('0x11'),_0xaf4ae9,_0x4e8b45[_0x45b2('0x10')][_0x45b2('0x12')]);return _0x14b7d1(_0x4e8b45[_0x45b2('0x10')][_0x45b2('0x12')]);}logger[_0x45b2('0x10')](_0x45b2('0x11'),_0xaf4ae9,_0x4e8b45['error'][_0x45b2('0x12')]);return _0x291d08(_0x4e8b45[_0x45b2('0x10')]['message']);}else{logger[_0x45b2('0xb')](_0x45b2('0x11'),_0xaf4ae9,_0x45b2('0xc'));_0x291d08(_0x4e8b45[_0x45b2('0x13')][_0x45b2('0x12')]);}})['catch'](function(_0x13c760){logger[_0x45b2('0x10')](_0x45b2('0x11'),_0xaf4ae9,_0x13c760);_0x14b7d1(_0x13c760);});});}
\ No newline at end of file
index 3628195..a7c5715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x238f=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x1f1d7b,_0x269885){var _0x324e07=function(_0x89986d){while(--_0x89986d){_0x1f1d7b['push'](_0x1f1d7b['shift']());}};_0x324e07(++_0x269885);}(_0x238f,0xa5));var _0xf238=function(_0x179fe4,_0x9e22b1){_0x179fe4=_0x179fe4-0x0;var _0x331787=_0x238f[_0x179fe4];return _0x331787;};'use strict';var multer=require(_0xf238('0x0'));var util=require(_0xf238('0x1'));var path=require(_0xf238('0x2'));var timeout=require('connect-timeout');var express=require(_0xf238('0x3'));var router=express[_0xf238('0x4')]();var fs_extra=require(_0xf238('0x5'));var auth=require(_0xf238('0x6'));var interaction=require(_0xf238('0x7'));var config=require(_0xf238('0x8'));var controller=require('./variable.controller');router[_0xf238('0x9')]('/',auth[_0xf238('0xa')](),controller['index']);router['get'](_0xf238('0xb'),auth['isAuthenticated'](),controller[_0xf238('0xc')]);router[_0xf238('0xd')]('/',auth[_0xf238('0xa')](),controller[_0xf238('0xe')]);router['put'](_0xf238('0xb'),auth['isAuthenticated'](),controller[_0xf238('0xf')]);router[_0xf238('0x10')](_0xf238('0xb'),auth[_0xf238('0xa')](),controller[_0xf238('0x11')]);module[_0xf238('0x12')]=router;
\ No newline at end of file
+var _0xf675=['./variable.controller','get','isAuthenticated','index','/:id','create','update','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xf675,0x199));var _0x5f67=function(_0x13eec2,_0xe78b42){_0x13eec2=_0x13eec2-0x0;var _0x46c367=_0xf675[_0x13eec2];return _0x46c367;};'use strict';var multer=require(_0x5f67('0x0'));var util=require(_0x5f67('0x1'));var path=require(_0x5f67('0x2'));var timeout=require('connect-timeout');var express=require(_0x5f67('0x3'));var router=express['Router']();var fs_extra=require(_0x5f67('0x4'));var auth=require(_0x5f67('0x5'));var interaction=require(_0x5f67('0x6'));var config=require('../../config/environment');var controller=require(_0x5f67('0x7'));router[_0x5f67('0x8')]('/',auth[_0x5f67('0x9')](),controller[_0x5f67('0xa')]);router['get'](_0x5f67('0xb'),auth[_0x5f67('0x9')](),controller['show']);router['post']('/',auth[_0x5f67('0x9')](),controller[_0x5f67('0xc')]);router['put']('/:id',auth[_0x5f67('0x9')](),controller[_0x5f67('0xd')]);router[_0x5f67('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x5f67('0xf')]=router;
\ No newline at end of file
index 164756e..11e6c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe023=['name','STRING','sequelize','exports'];(function(_0x1da91c,_0x1758ec){var _0x407931=function(_0x41ed79){while(--_0x41ed79){_0x1da91c['push'](_0x1da91c['shift']());}};_0x407931(++_0x1758ec);}(_0xe023,0x1da));var _0x3e02=function(_0xdf1e83,_0x33435e){_0xdf1e83=_0xdf1e83-0x0;var _0x5d40e0=_0xe023[_0xdf1e83];return _0x5d40e0;};'use strict';var Sequelize=require(_0x3e02('0x0'));module[_0x3e02('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3e02('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3e02('0x3')]}};
\ No newline at end of file
+var _0xeef2=['STRING','name','sequelize','exports'];(function(_0x49e0e5,_0x1f1f6b){var _0x249c90=function(_0x2851ea){while(--_0x2851ea){_0x49e0e5['push'](_0x49e0e5['shift']());}};_0x249c90(++_0x1f1f6b);}(_0xeef2,0x162));var _0x2eef=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xeef2[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x2eef('0x0'));module[_0x2eef('0x1')]={'name':{'type':Sequelize[_0x2eef('0x2')],'unique':_0x2eef('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2eef('0x2')]}};
\ No newline at end of file
index 8244988..568d922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb76=['role','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','Variables','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','pick','filter','where','merge','type','VIRTUAL','options','Variable','includeAll','include','findAll','rows','catch','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeb76,0x1f2));var _0x6eb7=function(_0x20c9b2,_0x55d7b1){_0x20c9b2=_0x20c9b2-0x0;var _0x2c6030=_0xeb76[_0x20c9b2];return _0x2c6030;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6eb7('0x0'));var zipdir=require(_0x6eb7('0x1'));var jsonpatch=require(_0x6eb7('0x2'));var rp=require('request-promise');var moment=require(_0x6eb7('0x3'));var BPromise=require(_0x6eb7('0x4'));var Mustache=require('mustache');var util=require(_0x6eb7('0x5'));var path=require('path');var sox=require(_0x6eb7('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6eb7('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6eb7('0x8'));var jsforce=require(_0x6eb7('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x6eb7('0xa'));var querystring=require(_0x6eb7('0xb'));var Papa=require(_0x6eb7('0xc'));var Redis=require(_0x6eb7('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x6eb7('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6eb7('0xf'));var logger=require(_0x6eb7('0x10'))(_0x6eb7('0x11'));var utils=require(_0x6eb7('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x6eb7('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x37b3b0,_0x1199dc){_0x1199dc=_0x1199dc||0xcc;return function(_0x269eb2){if(_0x269eb2){return _0x37b3b0[_0x6eb7('0x14')](_0x1199dc);}return _0x37b3b0[_0x6eb7('0x15')](_0x1199dc)[_0x6eb7('0x16')]();};}function respondWithResult(_0x1f4181,_0x4b5f5d){_0x4b5f5d=_0x4b5f5d||0xc8;return function(_0x32e443){if(_0x32e443){return _0x1f4181['status'](_0x4b5f5d)[_0x6eb7('0x17')](_0x32e443);}};}function respondWithFilteredResult(_0xfe10d1,_0x3b3e89){return function(_0x3f414b){if(_0x3f414b){var _0xf7c7a2=typeof _0x3b3e89[_0x6eb7('0x18')]===_0x6eb7('0x19')&&typeof _0x3b3e89[_0x6eb7('0x1a')]===_0x6eb7('0x19');var _0x13755a=_0x3f414b[_0x6eb7('0x1b')];var _0x3b991a=_0xf7c7a2?0x0:_0x3b3e89[_0x6eb7('0x18')];var _0x3c2eed=_0xf7c7a2?_0x3f414b[_0x6eb7('0x1b')]:_0x3b3e89[_0x6eb7('0x18')]+_0x3b3e89[_0x6eb7('0x1a')];var _0x3da491;if(_0x3c2eed>=_0x13755a){_0x3c2eed=_0x13755a;_0x3da491=0xc8;}else{_0x3da491=0xce;}_0xfe10d1['status'](_0x3da491);return _0xfe10d1[_0x6eb7('0x1c')]('Content-Range',_0x3b991a+'-'+_0x3c2eed+'/'+_0x13755a)['json'](_0x3f414b);}return null;};}function patchUpdates(_0x336faa){return function(_0x432f71){try{jsonpatch[_0x6eb7('0x1d')](_0x432f71,_0x336faa,!![]);}catch(_0x4616ac){return BPromise[_0x6eb7('0x1e')](_0x4616ac);}return _0x432f71[_0x6eb7('0x1f')]();};}function saveUpdates(_0x1e01e3,_0x3c7aea){return function(_0x2400f6){if(_0x2400f6){return _0x2400f6[_0x6eb7('0x20')](_0x1e01e3)[_0x6eb7('0x21')](function(_0x1ae9f8){return _0x1ae9f8;});}return null;};}function removeEntity(_0x47650b,_0x5a7175){return function(_0x84abc6){if(_0x84abc6){return _0x84abc6['destroy']()[_0x6eb7('0x21')](function(){var _0xa29998=_0x84abc6['get']({'plain':!![]});var _0x44dec3=_0x6eb7('0x22');return db[_0x6eb7('0x23')][_0x6eb7('0x24')]({'where':{'type':_0x44dec3,'resourceId':_0xa29998['id']}})[_0x6eb7('0x21')](function(){return _0x84abc6;});})[_0x6eb7('0x21')](function(){_0x47650b[_0x6eb7('0x15')](0xcc)[_0x6eb7('0x16')]();});}};}function handleEntityNotFound(_0x3daa29,_0x4e6ae0){return function(_0x601d13){if(!_0x601d13){_0x3daa29[_0x6eb7('0x14')](0x194);}return _0x601d13;};}function handleError(_0x20489a,_0x2702ee){_0x2702ee=_0x2702ee||0x1f4;return function(_0x5ede80){logger[_0x6eb7('0x25')](_0x5ede80[_0x6eb7('0x26')]);if(_0x5ede80[_0x6eb7('0x27')]){delete _0x5ede80[_0x6eb7('0x27')];}_0x20489a[_0x6eb7('0x15')](_0x2702ee)[_0x6eb7('0x28')](_0x5ede80);};}exports[_0x6eb7('0x29')]=function(_0x5aa54d,_0x123659){var _0x15c293={},_0x493f04={},_0x29906b={'count':0x0,'rows':[]};var _0x245e9d=_[_0x6eb7('0x2a')](db['Variable'][_0x6eb7('0x2b')],function(_0xe0c0af){return{'name':_0xe0c0af[_0x6eb7('0x2c')],'type':_0xe0c0af['type'][_0x6eb7('0x2d')]};});_0x493f04[_0x6eb7('0x2e')]=_[_0x6eb7('0x2a')](_0x245e9d,'name');_0x493f04[_0x6eb7('0x2f')]=_[_0x6eb7('0x30')](_0x5aa54d[_0x6eb7('0x2f')]);_0x493f04[_0x6eb7('0x31')]=_[_0x6eb7('0x32')](_0x493f04[_0x6eb7('0x2e')],_0x493f04[_0x6eb7('0x2f')]);_0x15c293[_0x6eb7('0x33')]=_[_0x6eb7('0x32')](_0x493f04[_0x6eb7('0x2e')],qs['fields'](_0x5aa54d[_0x6eb7('0x2f')][_0x6eb7('0x34')]));_0x15c293[_0x6eb7('0x33')]=_0x15c293[_0x6eb7('0x33')]['length']?_0x15c293[_0x6eb7('0x33')]:_0x493f04[_0x6eb7('0x2e')];if(!_0x5aa54d[_0x6eb7('0x2f')][_0x6eb7('0x35')](_0x6eb7('0x36'))){_0x15c293[_0x6eb7('0x1a')]=qs[_0x6eb7('0x1a')](_0x5aa54d[_0x6eb7('0x2f')][_0x6eb7('0x1a')]);_0x15c293[_0x6eb7('0x18')]=qs['offset'](_0x5aa54d[_0x6eb7('0x2f')]['offset']);}_0x15c293[_0x6eb7('0x37')]=qs['sort'](_0x5aa54d[_0x6eb7('0x2f')]['sort']);_0x15c293['where']=qs[_0x6eb7('0x31')](_[_0x6eb7('0x38')](_0x5aa54d[_0x6eb7('0x2f')],_0x493f04['filters']),_0x245e9d);if(_0x5aa54d[_0x6eb7('0x2f')][_0x6eb7('0x39')]){_0x15c293[_0x6eb7('0x3a')]=_[_0x6eb7('0x3b')](_0x15c293[_0x6eb7('0x3a')],{'$or':_[_0x6eb7('0x2a')](_0x245e9d,function(_0x34eeb8){if(_0x34eeb8[_0x6eb7('0x3c')]!==_0x6eb7('0x3d')){var _0x5996f1={};_0x5996f1[_0x34eeb8[_0x6eb7('0x27')]]={'$like':'%'+_0x5aa54d[_0x6eb7('0x2f')][_0x6eb7('0x39')]+'%'};return _0x5996f1;}})});}_0x15c293=_[_0x6eb7('0x3b')]({},_0x15c293,_0x5aa54d[_0x6eb7('0x3e')]);var _0x4e97bf={'where':_0x15c293[_0x6eb7('0x3a')]};return db[_0x6eb7('0x3f')][_0x6eb7('0x1b')](_0x4e97bf)[_0x6eb7('0x21')](function(_0xda73ff){_0x29906b[_0x6eb7('0x1b')]=_0xda73ff;if(_0x5aa54d[_0x6eb7('0x2f')][_0x6eb7('0x40')]){_0x15c293[_0x6eb7('0x41')]=[{'all':!![]}];}return db['Variable'][_0x6eb7('0x42')](_0x15c293);})[_0x6eb7('0x21')](function(_0xa5ada5){_0x29906b[_0x6eb7('0x43')]=_0xa5ada5;return _0x29906b;})[_0x6eb7('0x21')](respondWithFilteredResult(_0x123659,_0x15c293))[_0x6eb7('0x44')](handleError(_0x123659,null));};exports[_0x6eb7('0x45')]=function(_0x27f6d3,_0x10d04d){var _0x5a93fb={'raw':!![],'where':{'id':_0x27f6d3[_0x6eb7('0x46')]['id']}},_0x21a895={};_0x21a895[_0x6eb7('0x2e')]=_['keys'](db['Variable'][_0x6eb7('0x2b')]);_0x21a895['query']=_[_0x6eb7('0x30')](_0x27f6d3[_0x6eb7('0x2f')]);_0x21a895[_0x6eb7('0x31')]=_[_0x6eb7('0x32')](_0x21a895[_0x6eb7('0x2e')],_0x21a895[_0x6eb7('0x2f')]);_0x5a93fb[_0x6eb7('0x33')]=_[_0x6eb7('0x32')](_0x21a895[_0x6eb7('0x2e')],qs[_0x6eb7('0x34')](_0x27f6d3[_0x6eb7('0x2f')][_0x6eb7('0x34')]));_0x5a93fb['attributes']=_0x5a93fb[_0x6eb7('0x33')][_0x6eb7('0x47')]?_0x5a93fb[_0x6eb7('0x33')]:_0x21a895[_0x6eb7('0x2e')];if(_0x27f6d3['query'][_0x6eb7('0x40')]){_0x5a93fb[_0x6eb7('0x41')]=[{'all':!![]}];}_0x5a93fb=_[_0x6eb7('0x3b')]({},_0x5a93fb,_0x27f6d3[_0x6eb7('0x3e')]);return db[_0x6eb7('0x3f')][_0x6eb7('0x48')](_0x5a93fb)[_0x6eb7('0x21')](handleEntityNotFound(_0x10d04d,null))[_0x6eb7('0x21')](respondWithResult(_0x10d04d,null))[_0x6eb7('0x44')](handleError(_0x10d04d,null));};exports[_0x6eb7('0x49')]=function(_0x269028,_0x42ebc2){return db['Variable']['create'](_0x269028['body'],{})[_0x6eb7('0x21')](function(_0x2e5b0c){var _0x4341d4=_0x269028[_0x6eb7('0x4a')]['get']({'plain':!![]});if(!_0x4341d4)throw new Error(_0x6eb7('0x4b'));if(_0x4341d4[_0x6eb7('0x4c')]===_0x6eb7('0x4a')){var _0xcfaf2b=_0x2e5b0c[_0x6eb7('0x4d')]({'plain':!![]});var _0x5854b1=_0x6eb7('0x22');return db[_0x6eb7('0x4e')]['find']({'where':{'name':_0x5854b1,'userProfileId':_0x4341d4['userProfileId']},'raw':!![]})[_0x6eb7('0x21')](function(_0x59c6d7){if(_0x59c6d7&&_0x59c6d7[_0x6eb7('0x4f')]===0x0){return db['UserProfileResource'][_0x6eb7('0x49')]({'name':_0xcfaf2b[_0x6eb7('0x27')],'resourceId':_0xcfaf2b['id'],'type':_0x59c6d7[_0x6eb7('0x27')],'sectionId':_0x59c6d7['id']},{})[_0x6eb7('0x21')](function(){return _0x2e5b0c;});}else{return _0x2e5b0c;}})[_0x6eb7('0x44')](function(_0x31fa30){logger[_0x6eb7('0x25')](_0x6eb7('0x50'),_0x31fa30);throw _0x31fa30;});}return _0x2e5b0c;})[_0x6eb7('0x21')](respondWithResult(_0x42ebc2,0xc9))[_0x6eb7('0x44')](handleError(_0x42ebc2,null));};exports[_0x6eb7('0x20')]=function(_0x284cb2,_0x6e8c7d){if(_0x284cb2['body']['id']){delete _0x284cb2[_0x6eb7('0x51')]['id'];}return db[_0x6eb7('0x3f')]['find']({'where':{'id':_0x284cb2[_0x6eb7('0x46')]['id']}})[_0x6eb7('0x21')](handleEntityNotFound(_0x6e8c7d,null))[_0x6eb7('0x21')](saveUpdates(_0x284cb2[_0x6eb7('0x51')],null))[_0x6eb7('0x21')](respondWithResult(_0x6e8c7d,null))[_0x6eb7('0x44')](handleError(_0x6e8c7d,null));};exports[_0x6eb7('0x24')]=function(_0x5e2348,_0x4b82dc){return db[_0x6eb7('0x3f')][_0x6eb7('0x48')]({'where':{'id':_0x5e2348[_0x6eb7('0x46')]['id']}})[_0x6eb7('0x21')](handleEntityNotFound(_0x4b82dc,null))['then'](removeEntity(_0x4b82dc,null))['catch'](handleError(_0x4b82dc,null));};
\ No newline at end of file
+var _0xa3a0=['../../config/environment','../../mysqldb','status','offset','undefined','count','limit','Content-Range','json','apply','reject','update','then','destroy','get','Variables','end','sendStatus','error','name','send','map','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','Variable','find','create','body','user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api'];(function(_0x37e307,_0x378e6c){var _0x44a38c=function(_0x278dce){while(--_0x278dce){_0x37e307['push'](_0x37e307['shift']());}};_0x44a38c(++_0x378e6c);}(_0xa3a0,0x13c));var _0x0a3a=function(_0x2cd9cb,_0x517de7){_0x2cd9cb=_0x2cd9cb-0x0;var _0x5b3777=_0xa3a0[_0x2cd9cb];return _0x5b3777;};'use strict';var emlformat=require(_0x0a3a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0a3a('0x1'));var jsonpatch=require(_0x0a3a('0x2'));var rp=require(_0x0a3a('0x3'));var moment=require(_0x0a3a('0x4'));var BPromise=require(_0x0a3a('0x5'));var Mustache=require(_0x0a3a('0x6'));var util=require(_0x0a3a('0x7'));var path=require(_0x0a3a('0x8'));var sox=require(_0x0a3a('0x9'));var csv=require(_0x0a3a('0xa'));var ejs=require(_0x0a3a('0xb'));var fs=require('fs');var fs_extra=require(_0x0a3a('0xc'));var _=require(_0x0a3a('0xd'));var squel=require(_0x0a3a('0xe'));var crypto=require(_0x0a3a('0xf'));var jsforce=require(_0x0a3a('0x10'));var deskjs=require(_0x0a3a('0x11'));var toCsv=require(_0x0a3a('0xa'));var querystring=require('querystring');var Papa=require(_0x0a3a('0x12'));var Redis=require(_0x0a3a('0x13'));var authService=require(_0x0a3a('0x14'));var qs=require(_0x0a3a('0x15'));var as=require(_0x0a3a('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0a3a('0x17'));var utils=require('../../config/utils');var config=require(_0x0a3a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x0a3a('0x19'))['db'];function respondWithStatusCode(_0x16d39f,_0x158ff0){_0x158ff0=_0x158ff0||0xcc;return function(_0x3f8b24){if(_0x3f8b24){return _0x16d39f['sendStatus'](_0x158ff0);}return _0x16d39f[_0x0a3a('0x1a')](_0x158ff0)['end']();};}function respondWithResult(_0x4dc6ae,_0x41e776){_0x41e776=_0x41e776||0xc8;return function(_0x3eb53d){if(_0x3eb53d){return _0x4dc6ae['status'](_0x41e776)['json'](_0x3eb53d);}};}function respondWithFilteredResult(_0x5d6fd,_0x1d9688){return function(_0x3fbbcd){if(_0x3fbbcd){var _0x2029ec=typeof _0x1d9688[_0x0a3a('0x1b')]===_0x0a3a('0x1c')&&typeof _0x1d9688['limit']===_0x0a3a('0x1c');var _0x50a419=_0x3fbbcd[_0x0a3a('0x1d')];var _0x161170=_0x2029ec?0x0:_0x1d9688[_0x0a3a('0x1b')];var _0x54aa5b=_0x2029ec?_0x3fbbcd[_0x0a3a('0x1d')]:_0x1d9688[_0x0a3a('0x1b')]+_0x1d9688[_0x0a3a('0x1e')];var _0x107726;if(_0x54aa5b>=_0x50a419){_0x54aa5b=_0x50a419;_0x107726=0xc8;}else{_0x107726=0xce;}_0x5d6fd[_0x0a3a('0x1a')](_0x107726);return _0x5d6fd['set'](_0x0a3a('0x1f'),_0x161170+'-'+_0x54aa5b+'/'+_0x50a419)[_0x0a3a('0x20')](_0x3fbbcd);}return null;};}function patchUpdates(_0x474124){return function(_0x574ffa){try{jsonpatch[_0x0a3a('0x21')](_0x574ffa,_0x474124,!![]);}catch(_0x2390a2){return BPromise[_0x0a3a('0x22')](_0x2390a2);}return _0x574ffa['save']();};}function saveUpdates(_0x3c6e07,_0x561b07){return function(_0x45c42e){if(_0x45c42e){return _0x45c42e[_0x0a3a('0x23')](_0x3c6e07)[_0x0a3a('0x24')](function(_0x332b2c){return _0x332b2c;});}return null;};}function removeEntity(_0x30b748,_0x4defaa){return function(_0xaf6ce2){if(_0xaf6ce2){return _0xaf6ce2[_0x0a3a('0x25')]()[_0x0a3a('0x24')](function(){var _0x590be6=_0xaf6ce2[_0x0a3a('0x26')]({'plain':!![]});var _0xd43359=_0x0a3a('0x27');return db['UserProfileResource'][_0x0a3a('0x25')]({'where':{'type':_0xd43359,'resourceId':_0x590be6['id']}})[_0x0a3a('0x24')](function(){return _0xaf6ce2;});})[_0x0a3a('0x24')](function(){_0x30b748['status'](0xcc)[_0x0a3a('0x28')]();});}};}function handleEntityNotFound(_0x4822b3,_0x50ac7b){return function(_0x33a9e9){if(!_0x33a9e9){_0x4822b3[_0x0a3a('0x29')](0x194);}return _0x33a9e9;};}function handleError(_0x458b02,_0xca4f8e){_0xca4f8e=_0xca4f8e||0x1f4;return function(_0x37142e){logger[_0x0a3a('0x2a')](_0x37142e['stack']);if(_0x37142e['name']){delete _0x37142e[_0x0a3a('0x2b')];}_0x458b02[_0x0a3a('0x1a')](_0xca4f8e)[_0x0a3a('0x2c')](_0x37142e);};}exports['index']=function(_0x502040,_0xc45a57){var _0x2b128c={},_0x1f86f0={},_0x59041a={'count':0x0,'rows':[]};var _0x35d647=_[_0x0a3a('0x2d')](db['Variable'][_0x0a3a('0x2e')],function(_0x346bf3){return{'name':_0x346bf3[_0x0a3a('0x2f')],'type':_0x346bf3[_0x0a3a('0x30')][_0x0a3a('0x31')]};});_0x1f86f0['model']=_[_0x0a3a('0x2d')](_0x35d647,_0x0a3a('0x2b'));_0x1f86f0[_0x0a3a('0x32')]=_[_0x0a3a('0x33')](_0x502040[_0x0a3a('0x32')]);_0x1f86f0['filters']=_[_0x0a3a('0x34')](_0x1f86f0[_0x0a3a('0x35')],_0x1f86f0[_0x0a3a('0x32')]);_0x2b128c[_0x0a3a('0x36')]=_[_0x0a3a('0x34')](_0x1f86f0[_0x0a3a('0x35')],qs[_0x0a3a('0x37')](_0x502040[_0x0a3a('0x32')][_0x0a3a('0x37')]));_0x2b128c[_0x0a3a('0x36')]=_0x2b128c[_0x0a3a('0x36')]['length']?_0x2b128c[_0x0a3a('0x36')]:_0x1f86f0[_0x0a3a('0x35')];if(!_0x502040[_0x0a3a('0x32')][_0x0a3a('0x38')](_0x0a3a('0x39'))){_0x2b128c[_0x0a3a('0x1e')]=qs[_0x0a3a('0x1e')](_0x502040[_0x0a3a('0x32')][_0x0a3a('0x1e')]);_0x2b128c[_0x0a3a('0x1b')]=qs[_0x0a3a('0x1b')](_0x502040['query'][_0x0a3a('0x1b')]);}_0x2b128c[_0x0a3a('0x3a')]=qs[_0x0a3a('0x3b')](_0x502040[_0x0a3a('0x32')][_0x0a3a('0x3b')]);_0x2b128c[_0x0a3a('0x3c')]=qs[_0x0a3a('0x3d')](_[_0x0a3a('0x3e')](_0x502040['query'],_0x1f86f0['filters']),_0x35d647);if(_0x502040[_0x0a3a('0x32')][_0x0a3a('0x3f')]){_0x2b128c[_0x0a3a('0x3c')]=_[_0x0a3a('0x40')](_0x2b128c[_0x0a3a('0x3c')],{'$or':_[_0x0a3a('0x2d')](_0x35d647,function(_0x255ce5){if(_0x255ce5['type']!==_0x0a3a('0x41')){var _0x4b631c={};_0x4b631c[_0x255ce5[_0x0a3a('0x2b')]]={'$like':'%'+_0x502040[_0x0a3a('0x32')]['filter']+'%'};return _0x4b631c;}})});}_0x2b128c=_['merge']({},_0x2b128c,_0x502040[_0x0a3a('0x42')]);var _0x3dcbe6={'where':_0x2b128c[_0x0a3a('0x3c')]};return db['Variable']['count'](_0x3dcbe6)['then'](function(_0x4f7828){_0x59041a['count']=_0x4f7828;if(_0x502040[_0x0a3a('0x32')][_0x0a3a('0x43')]){_0x2b128c[_0x0a3a('0x44')]=[{'all':!![]}];}return db['Variable'][_0x0a3a('0x45')](_0x2b128c);})[_0x0a3a('0x24')](function(_0x1c908f){_0x59041a[_0x0a3a('0x46')]=_0x1c908f;return _0x59041a;})[_0x0a3a('0x24')](respondWithFilteredResult(_0xc45a57,_0x2b128c))[_0x0a3a('0x47')](handleError(_0xc45a57,null));};exports[_0x0a3a('0x48')]=function(_0x4116f5,_0x19b04b){var _0x3acfa9={'raw':!![],'where':{'id':_0x4116f5[_0x0a3a('0x49')]['id']}},_0x5434cc={};_0x5434cc[_0x0a3a('0x35')]=_[_0x0a3a('0x33')](db['Variable'][_0x0a3a('0x2e')]);_0x5434cc[_0x0a3a('0x32')]=_[_0x0a3a('0x33')](_0x4116f5['query']);_0x5434cc[_0x0a3a('0x3d')]=_[_0x0a3a('0x34')](_0x5434cc[_0x0a3a('0x35')],_0x5434cc[_0x0a3a('0x32')]);_0x3acfa9['attributes']=_['intersection'](_0x5434cc[_0x0a3a('0x35')],qs[_0x0a3a('0x37')](_0x4116f5[_0x0a3a('0x32')][_0x0a3a('0x37')]));_0x3acfa9[_0x0a3a('0x36')]=_0x3acfa9[_0x0a3a('0x36')][_0x0a3a('0x4a')]?_0x3acfa9[_0x0a3a('0x36')]:_0x5434cc['model'];if(_0x4116f5['query'][_0x0a3a('0x43')]){_0x3acfa9[_0x0a3a('0x44')]=[{'all':!![]}];}_0x3acfa9=_[_0x0a3a('0x40')]({},_0x3acfa9,_0x4116f5[_0x0a3a('0x42')]);return db[_0x0a3a('0x4b')][_0x0a3a('0x4c')](_0x3acfa9)[_0x0a3a('0x24')](handleEntityNotFound(_0x19b04b,null))['then'](respondWithResult(_0x19b04b,null))['catch'](handleError(_0x19b04b,null));};exports[_0x0a3a('0x4d')]=function(_0x6e6882,_0x423b55){return db[_0x0a3a('0x4b')]['create'](_0x6e6882[_0x0a3a('0x4e')],{})['then'](function(_0x4d8405){var _0x50d3c7=_0x6e6882[_0x0a3a('0x4f')][_0x0a3a('0x26')]({'plain':!![]});if(!_0x50d3c7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x50d3c7[_0x0a3a('0x50')]===_0x0a3a('0x4f')){var _0x14ce1a=_0x4d8405[_0x0a3a('0x26')]({'plain':!![]});var _0x304bf1=_0x0a3a('0x27');return db['UserProfileSection'][_0x0a3a('0x4c')]({'where':{'name':_0x304bf1,'userProfileId':_0x50d3c7[_0x0a3a('0x51')]},'raw':!![]})[_0x0a3a('0x24')](function(_0xe2eb44){if(_0xe2eb44&&_0xe2eb44[_0x0a3a('0x52')]===0x0){return db[_0x0a3a('0x53')][_0x0a3a('0x4d')]({'name':_0x14ce1a['name'],'resourceId':_0x14ce1a['id'],'type':_0xe2eb44['name'],'sectionId':_0xe2eb44['id']},{})[_0x0a3a('0x24')](function(){return _0x4d8405;});}else{return _0x4d8405;}})[_0x0a3a('0x47')](function(_0xa8e820){logger[_0x0a3a('0x2a')](_0x0a3a('0x54'),_0xa8e820);throw _0xa8e820;});}return _0x4d8405;})[_0x0a3a('0x24')](respondWithResult(_0x423b55,0xc9))[_0x0a3a('0x47')](handleError(_0x423b55,null));};exports[_0x0a3a('0x23')]=function(_0x136520,_0x420c39){if(_0x136520[_0x0a3a('0x4e')]['id']){delete _0x136520[_0x0a3a('0x4e')]['id'];}return db['Variable'][_0x0a3a('0x4c')]({'where':{'id':_0x136520['params']['id']}})[_0x0a3a('0x24')](handleEntityNotFound(_0x420c39,null))[_0x0a3a('0x24')](saveUpdates(_0x136520[_0x0a3a('0x4e')],null))[_0x0a3a('0x24')](respondWithResult(_0x420c39,null))['catch'](handleError(_0x420c39,null));};exports[_0x0a3a('0x25')]=function(_0x4a1318,_0x217719){return db[_0x0a3a('0x4b')]['find']({'where':{'id':_0x4a1318[_0x0a3a('0x49')]['id']}})[_0x0a3a('0x24')](handleEntityNotFound(_0x217719,null))[_0x0a3a('0x24')](removeEntity(_0x217719,null))[_0x0a3a('0x47')](handleError(_0x217719,null));};
\ No newline at end of file
index b851f77..6756fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2115=['./variable.attributes','Variable','tools_variables','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x196192,_0x58189a){var _0x3fdb0f=function(_0x285ee6){while(--_0x285ee6){_0x196192['push'](_0x196192['shift']());}};_0x3fdb0f(++_0x58189a);}(_0x2115,0x13e));var _0x5211=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x2115[_0x53ccf2];return _0x5a2964;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5211('0x0'));var moment=require('moment');var BPromise=require(_0x5211('0x1'));var rp=require(_0x5211('0x2'));var fs=require('fs');var path=require(_0x5211('0x3'));var rimraf=require(_0x5211('0x4'));var config=require(_0x5211('0x5'));var attributes=require(_0x5211('0x6'));module['exports']=function(_0x4f6bff,_0x152b52){return _0x4f6bff['define'](_0x5211('0x7'),attributes,{'tableName':_0x5211('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ee2=['moment','bluebird','request-promise','path','rimraf','./variable.attributes','exports','define','Variable','tools_variables','lodash','../../config/logger','api'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0x2ee2,0xb3));var _0x22ee=function(_0x1af0e5,_0x152990){_0x1af0e5=_0x1af0e5-0x0;var _0x3c444a=_0x2ee2[_0x1af0e5];return _0x3c444a;};'use strict';var _=require(_0x22ee('0x0'));var util=require('util');var logger=require(_0x22ee('0x1'))(_0x22ee('0x2'));var moment=require(_0x22ee('0x3'));var BPromise=require(_0x22ee('0x4'));var rp=require(_0x22ee('0x5'));var fs=require('fs');var path=require(_0x22ee('0x6'));var rimraf=require(_0x22ee('0x7'));var config=require('../../config/environment');var attributes=require(_0x22ee('0x8'));module[_0x22ee('0x9')]=function(_0x5d9fe1,_0x491f35){return _0x5d9fe1[_0x22ee('0xa')](_0x22ee('0xb'),attributes,{'tableName':_0x22ee('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9727d3b..7ea7a81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['where','attributes','map','include','model','ShowVariable','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Variable,\x20%s,\x20%s','debug','Variable,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','Variable','find','options','raw'];(function(_0x173aa7,_0x36cd96){var _0x19f40a=function(_0x36d3ae){while(--_0x36d3ae){_0x173aa7['push'](_0x173aa7['shift']());}};_0x19f40a(++_0x36cd96);}(_0x7217,0x19e));var _0x7721=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0x7217[_0x8de54f];return _0x14cba4;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Variable,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Variable,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}exports['ShowVariable']=function(_0x3fc09e){var _0x5cb0e6=this;return new Promise(function(_0xfec626,_0x4e96fb){return db[_0x7721('0x18')][_0x7721('0x19')]({'raw':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1b')]===undefined?!![]:![]:!![],'where':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1c')]||null:null,'attributes':_0x3fc09e['options']?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1d')]||null:null,'include':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')]['include']?_[_0x7721('0x1e')](_0x3fc09e['options'][_0x7721('0x1f')],function(_0x288e3a){return{'model':db[_0x288e3a[_0x7721('0x20')]],'as':_0x288e3a['as'],'attributes':_0x288e3a[_0x7721('0x1d')],'include':_0x288e3a[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x288e3a[_0x7721('0x1f')],function(_0x5b4d74){return{'model':db[_0x5b4d74[_0x7721('0x20')]],'as':_0x5b4d74['as'],'attributes':_0x5b4d74[_0x7721('0x1d')],'include':_0x5b4d74[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x5b4d74[_0x7721('0x1f')],function(_0x16355a){return{'model':db[_0x16355a[_0x7721('0x20')]],'as':_0x16355a['as'],'attributes':_0x16355a[_0x7721('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7721('0xc')](function(_0x52316e){logger[_0x7721('0xd')]('ShowVariable',_0x3fc09e);logger['debug'](_0x7721('0x21'),_0x3fc09e,JSON[_0x7721('0x12')](_0x52316e));_0xfec626(_0x52316e);})[_0x7721('0x17')](function(_0x158d98){logger[_0x7721('0x13')](_0x7721('0x21'),_0x158d98[_0x7721('0x15')],_0x3fc09e);_0x4e96fb(_0x5cb0e6[_0x7721('0x13')](0x1f4,_0x158d98['message']));});});};
\ No newline at end of file
+var _0x7fbe=['stringify','error','code','message','result','catch','Variable','find','options','where','attributes','include','map','model','info','ShowVariable','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x368684,_0x170db8){var _0x5406b3=function(_0x4f04a7){while(--_0x4f04a7){_0x368684['push'](_0x368684['shift']());}};_0x5406b3(++_0x170db8);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x8955b3,_0x3af8b4){_0x8955b3=_0x8955b3-0x0;var _0x369673=_0x7fbe[_0x8955b3];return _0x369673;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}exports['ShowVariable']=function(_0x293a47){var _0x546463=this;return new Promise(function(_0x1e77fd,_0x4708f7){return db[_0xe7fb('0x18')][_0xe7fb('0x19')]({'raw':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x293a47[_0xe7fb('0x1a')]?_0x293a47['options'][_0xe7fb('0x1b')]||null:null,'attributes':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1c')]||null:null,'include':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1d')]?_[_0xe7fb('0x1e')](_0x293a47['options'][_0xe7fb('0x1d')],function(_0x469ead){return{'model':db[_0x469ead['model']],'as':_0x469ead['as'],'attributes':_0x469ead['attributes'],'include':_0x469ead['include']?_[_0xe7fb('0x1e')](_0x469ead['include'],function(_0x49b219){return{'model':db[_0x49b219[_0xe7fb('0x1f')]],'as':_0x49b219['as'],'attributes':_0x49b219[_0xe7fb('0x1c')],'include':_0x49b219[_0xe7fb('0x1d')]?_['map'](_0x49b219[_0xe7fb('0x1d')],function(_0x2b69c4){return{'model':db[_0x2b69c4[_0xe7fb('0x1f')]],'as':_0x2b69c4['as'],'attributes':_0x2b69c4[_0xe7fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7fb('0xd')](function(_0x16237a){logger[_0xe7fb('0x20')]('ShowVariable',_0x293a47);logger['debug'](_0xe7fb('0x21'),_0x293a47,JSON[_0xe7fb('0x12')](_0x16237a));_0x1e77fd(_0x16237a);})[_0xe7fb('0x17')](function(_0x4fd290){logger[_0xe7fb('0x13')](_0xe7fb('0x21'),_0x4fd290[_0xe7fb('0x15')],_0x293a47);_0x4708f7(_0x546463[_0xe7fb('0x13')](0x1f4,_0x4fd290[_0xe7fb('0x15')]));});});};
\ No newline at end of file
index 2d52027..787a280 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7425=['/reset','reset','/pull','/restart','/migrations','migrations','exports','./version.controller','get','/fetch','isAuthenticated','canUpdate'];(function(_0x7ca649,_0x5a17a6){var _0x36f308=function(_0x5a600a){while(--_0x5a600a){_0x7ca649['push'](_0x7ca649['shift']());}};_0x36f308(++_0x5a17a6);}(_0x7425,0x157));var _0x5742=function(_0x4cc033,_0x2fbf4f){_0x4cc033=_0x4cc033-0x0;var _0x536e12=_0x7425[_0x4cc033];return _0x536e12;};'use strict';var express=require('express');var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x5742('0x0'));router[_0x5742('0x1')]('/',controller['index']);router['get'](_0x5742('0x2'),auth[_0x5742('0x3')](),auth[_0x5742('0x4')](),controller['fetch']);router['get'](_0x5742('0x5'),auth['isAuthenticated'](),auth[_0x5742('0x4')](),controller[_0x5742('0x6')]);router[_0x5742('0x1')](_0x5742('0x7'),auth[_0x5742('0x3')](),auth[_0x5742('0x4')](),controller['pull']);router[_0x5742('0x1')](_0x5742('0x8'),auth[_0x5742('0x3')](),controller['restart']);router['get'](_0x5742('0x9'),controller[_0x5742('0xa')]);module[_0x5742('0xb')]=router;
\ No newline at end of file
+var _0x6114=['express','./version.controller','index','get','/fetch','isAuthenticated','canUpdate','fetch','/reset','reset','pull','/restart','restart','migrations','exports'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x6114,0x159));var _0x4611=function(_0x54a9b9,_0x31352f){_0x54a9b9=_0x54a9b9-0x0;var _0x2a34ef=_0x6114[_0x54a9b9];return _0x2a34ef;};'use strict';var express=require(_0x4611('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x4611('0x1'));router['get']('/',controller[_0x4611('0x2')]);router[_0x4611('0x3')](_0x4611('0x4'),auth[_0x4611('0x5')](),auth[_0x4611('0x6')](),controller[_0x4611('0x7')]);router[_0x4611('0x3')](_0x4611('0x8'),auth[_0x4611('0x5')](),auth[_0x4611('0x6')](),controller[_0x4611('0x9')]);router[_0x4611('0x3')]('/pull',auth['isAuthenticated'](),auth[_0x4611('0x6')](),controller[_0x4611('0xa')]);router[_0x4611('0x3')](_0x4611('0xb'),auth['isAuthenticated'](),controller[_0x4611('0xc')]);router[_0x4611('0x3')]('/migrations',controller[_0x4611('0xd')]);module[_0x4611('0xe')]=router;
\ No newline at end of file
index 857c7fe..84bacf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3584=['2.0.0','status','master','json','info','git\x20fetch','reset','--hard','FETCH_HEAD','error','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','motion2','then','catch','migrations','readdirSync','join','server','replace','push','sort','Migration','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','query','latest','fetch','exports'];(function(_0x434079,_0x337c67){var _0x246c13=function(_0x2d9d67){while(--_0x2d9d67){_0x434079['push'](_0x434079['shift']());}};_0x246c13(++_0x337c67);}(_0x3584,0x1dc));var _0x4358=function(_0x16d13e,_0x1cbb5b){_0x16d13e=_0x16d13e-0x0;var _0x44520c=_0x3584[_0x16d13e];return _0x44520c;};'use strict';var Umzug=require('umzug');var path=require(_0x4358('0x0'));var fs=require('fs');var _=require(_0x4358('0x1'));var pkginfo=require(_0x4358('0x2'))(module,_0x4358('0x3'));var compareVersions=require(_0x4358('0x4'));var exec=require(_0x4358('0x5'))[_0x4358('0x6')];var db=require(_0x4358('0x7'))['db'];var config=require(_0x4358('0x8'));var pm2=require(_0x4358('0x9'));var logger=require(_0x4358('0xa'))(_0x4358('0xb'));var git=require(_0x4358('0xc'))(config[_0x4358('0xd')]);exports[_0x4358('0xe')]=function(_0x5f571a,_0x55c8d4){var _0x5d0d95={'current':module['exports'][_0x4358('0x3')],'phonebar':0x2};if(_0x5f571a['query']&&_0x5f571a[_0x4358('0xf')][_0x4358('0x10')]){return git[_0x4358('0x11')]()['tags'](function(_0x2bcca4,_0x595b98){_0x5d0d95[_0x4358('0x10')]=(_0x2bcca4?module[_0x4358('0x12')][_0x4358('0x3')]:_0x595b98[_0x4358('0x10')])||_0x4358('0x13');return _0x55c8d4[_0x4358('0x14')](0xc8)['json'](_0x5d0d95);});}else{return _0x55c8d4[_0x4358('0x14')](0xc8)['json'](_0x5d0d95);}};exports[_0x4358('0x11')]=function(_0x16d9d6,_0x46b9dc){return git[_0x4358('0x11')](['origin',_0x4358('0x15')],function(_0x19cfe5){if(_0x19cfe5){logger['error'](_0x19cfe5);return _0x46b9dc[_0x4358('0x14')](0x1f4)[_0x4358('0x16')](_0x19cfe5);}logger[_0x4358('0x17')](_0x4358('0x18'));return _0x46b9dc[_0x4358('0x14')](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x4358('0x19')]=function(_0x572f58,_0x3d1a14){return git[_0x4358('0x19')]([_0x4358('0x1a'),_0x4358('0x1b')],function(_0x5ee0e4){if(_0x5ee0e4){logger[_0x4358('0x1c')](_0x5ee0e4);return _0x3d1a14['status'](0x1f4)['json'](_0x5ee0e4);}logger['info'](_0x4358('0x1d'));return _0x3d1a14[_0x4358('0x14')](0xc8)[_0x4358('0x16')]({'output':'git\x20reset\x20--hard'});});};exports[_0x4358('0x1e')]=function(_0x2aeea5,_0x3f90c0){exec(_0x4358('0x1f'),function(_0x402ae5,_0x586ca9,_0x11e60b){logger[_0x4358('0x17')](_0x586ca9);logger[_0x4358('0x17')](_0x11e60b);if(_0x402ae5){logger[_0x4358('0x1c')](_0x402ae5);return _0x3f90c0[_0x4358('0x14')](0x1f4)[_0x4358('0x16')](_0x402ae5);}return _0x3f90c0['status'](0xc8)[_0x4358('0x16')]({'output':_0x586ca9});});};exports[_0x4358('0x20')]=function(_0x148a30,_0x494a10){return pm2[_0x4358('0x20')](_0x4358('0x21'))[_0x4358('0x22')](function(_0x246bef){logger[_0x4358('0x17')]('pm2\x20restart\x20motion\x20%s',_0x246bef);return _0x494a10[_0x4358('0x14')](0xc8)[_0x4358('0x16')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x4358('0x23')](function(_0x240474){logger[_0x4358('0x1c')](_0x240474);return _0x494a10['status'](0x1f4)[_0x4358('0x16')](_0x240474);});};exports[_0x4358('0x24')]=function(_0x5c1f79,_0x4c0178){var _0x2e8922=fs[_0x4358('0x25')](path[_0x4358('0x26')](config[_0x4358('0xd')],_0x4358('0x27'),'migrations'));var _0x518f65=[];for(var _0x3a5ae2=0x0;_0x3a5ae2<_0x2e8922['length'];_0x3a5ae2++){var _0x35eaeb=_0x2e8922[_0x3a5ae2][_0x4358('0x28')]('.js','');if(compareVersions(module[_0x4358('0x12')][_0x4358('0x3')],_0x35eaeb)===-0x1){_0x518f65[_0x4358('0x29')](_0x35eaeb);}}if(_0x518f65['length']){var _0x61a7a0=_0x518f65[_0x4358('0x2a')](compareVersions);var _0x5818ef=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x4358('0x2b')],'modelName':_0x4358('0x2b'),'columnName':_0x4358('0x3')},'migrations':{'params':[db[_0x4358('0x2c')][_0x4358('0x2d')](),db[_0x4358('0x2c')][_0x4358('0x2e')],function(){throw new Error(_0x4358('0x2f'));}],'path':path['join'](config[_0x4358('0xd')],_0x4358('0x27'),_0x4358('0x24')),'pattern':/\.js$/}});_0x5818ef['up']({'migrations':_[_0x4358('0x30')](_0x61a7a0,function(_0xb529ab){return _0xb529ab+_0x4358('0x31');})})['then'](function(){return _0x4c0178[_0x4358('0x14')](0xc8)['json']({'output':_0x4358('0x32')+module['exports'][_0x4358('0x3')]+_0x4358('0x33')+_[_0x4358('0x34')](_0x61a7a0),'migrations':_[_0x4358('0x26')](_0x61a7a0)});})[_0x4358('0x23')](function(_0x3ab9d4){if(_0x3ab9d4 instanceof db['sequelize'][_0x4358('0x35')]){return _0x4c0178['status'](0xc8)[_0x4358('0x16')]({'output':_0x4358('0x36')});}else{return _0x4c0178[_0x4358('0x14')](0x1f4)['json'](_0x3ab9d4);}});}else{return _0x4c0178[_0x4358('0x14')](0xc8)[_0x4358('0x16')]({'output':_0x4358('0x36')});}};
\ No newline at end of file
+var _0x2595=['master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','catch','readdirSync','server','length','replace','.js','push','sort','Migration','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','map','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','lodash','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','exports','version','query','latest','status','json','fetch','origin'];(function(_0x3cf7df,_0x43b053){var _0x52ca51=function(_0x3806c5){while(--_0x3806c5){_0x3cf7df['push'](_0x3cf7df['shift']());}};_0x52ca51(++_0x43b053);}(_0x2595,0x136));var _0x5259=function(_0x21e79a,_0x5a7990){_0x21e79a=_0x21e79a-0x0;var _0x506c02=_0x2595[_0x21e79a];return _0x506c02;};'use strict';var Umzug=require(_0x5259('0x0'));var path=require('path');var fs=require('fs');var _=require(_0x5259('0x1'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require(_0x5259('0x2'));var exec=require(_0x5259('0x3'))[_0x5259('0x4')];var db=require(_0x5259('0x5'))['db'];var config=require(_0x5259('0x6'));var pm2=require(_0x5259('0x7'));var logger=require(_0x5259('0x8'))(_0x5259('0x9'));var git=require(_0x5259('0xa'))(config[_0x5259('0xb')]);exports['index']=function(_0x35b2b1,_0x1a1287){var _0x14e272={'current':module[_0x5259('0xc')][_0x5259('0xd')],'phonebar':0x2};if(_0x35b2b1[_0x5259('0xe')]&&_0x35b2b1[_0x5259('0xe')][_0x5259('0xf')]){return git['fetch']()['tags'](function(_0x1711fd,_0x903f07){_0x14e272['latest']=(_0x1711fd?module['exports'][_0x5259('0xd')]:_0x903f07['latest'])||'2.0.0';return _0x1a1287[_0x5259('0x10')](0xc8)['json'](_0x14e272);});}else{return _0x1a1287['status'](0xc8)[_0x5259('0x11')](_0x14e272);}};exports[_0x5259('0x12')]=function(_0x8df03,_0x296565){return git['fetch']([_0x5259('0x13'),_0x5259('0x14')],function(_0x19b7cb){if(_0x19b7cb){logger[_0x5259('0x15')](_0x19b7cb);return _0x296565[_0x5259('0x10')](0x1f4)[_0x5259('0x11')](_0x19b7cb);}logger[_0x5259('0x16')](_0x5259('0x17'));return _0x296565[_0x5259('0x10')](0xc8)[_0x5259('0x11')]({'output':_0x5259('0x18')});});};exports[_0x5259('0x19')]=function(_0x3f0009,_0x57f5b4){return git[_0x5259('0x19')]([_0x5259('0x1a'),_0x5259('0x1b')],function(_0xc5d877){if(_0xc5d877){logger[_0x5259('0x15')](_0xc5d877);return _0x57f5b4[_0x5259('0x10')](0x1f4)[_0x5259('0x11')](_0xc5d877);}logger[_0x5259('0x16')](_0x5259('0x1c'));return _0x57f5b4['status'](0xc8)[_0x5259('0x11')]({'output':_0x5259('0x1d')});});};exports[_0x5259('0x1e')]=function(_0x4043f5,_0x5ca85d){exec(_0x5259('0x1f'),function(_0x293e8b,_0x2e36b8,_0x33c2de){logger[_0x5259('0x16')](_0x2e36b8);logger[_0x5259('0x16')](_0x33c2de);if(_0x293e8b){logger[_0x5259('0x15')](_0x293e8b);return _0x5ca85d[_0x5259('0x10')](0x1f4)[_0x5259('0x11')](_0x293e8b);}return _0x5ca85d[_0x5259('0x10')](0xc8)[_0x5259('0x11')]({'output':_0x2e36b8});});};exports[_0x5259('0x20')]=function(_0x2e4df4,_0x17da5){return pm2[_0x5259('0x20')](_0x5259('0x21'))[_0x5259('0x22')](function(_0x567284){logger['info'](_0x5259('0x23'),_0x567284);return _0x17da5['status'](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x5259('0x24')](function(_0x22842b){logger[_0x5259('0x15')](_0x22842b);return _0x17da5[_0x5259('0x10')](0x1f4)[_0x5259('0x11')](_0x22842b);});};exports['migrations']=function(_0xaa221c,_0x1237f2){var _0xec9d53=fs[_0x5259('0x25')](path['join'](config['root'],_0x5259('0x26'),'migrations'));var _0x4d81b5=[];for(var _0xc3b5c8=0x0;_0xc3b5c8<_0xec9d53[_0x5259('0x27')];_0xc3b5c8++){var _0xa8a7ce=_0xec9d53[_0xc3b5c8][_0x5259('0x28')](_0x5259('0x29'),'');if(compareVersions(module['exports'][_0x5259('0xd')],_0xa8a7ce)===-0x1){_0x4d81b5[_0x5259('0x2a')](_0xa8a7ce);}}if(_0x4d81b5[_0x5259('0x27')]){var _0x2f12e2=_0x4d81b5[_0x5259('0x2b')](compareVersions);var _0x433168=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x5259('0x2c')],'modelName':_0x5259('0x2c'),'columnName':_0x5259('0xd')},'migrations':{'params':[db[_0x5259('0x2d')][_0x5259('0x2e')](),db[_0x5259('0x2d')][_0x5259('0x2f')],function(){throw new Error(_0x5259('0x30'));}],'path':path[_0x5259('0x31')](config['root'],_0x5259('0x26'),'migrations'),'pattern':/\.js$/}});_0x433168['up']({'migrations':_[_0x5259('0x32')](_0x2f12e2,function(_0x5033c5){return _0x5033c5+_0x5259('0x29');})})['then'](function(){return _0x1237f2[_0x5259('0x10')](0xc8)[_0x5259('0x11')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports'][_0x5259('0xd')]+_0x5259('0x33')+_[_0x5259('0x34')](_0x2f12e2),'migrations':_['join'](_0x2f12e2)});})['catch'](function(_0xb639c6){if(_0xb639c6 instanceof db['sequelize'][_0x5259('0x35')]){return _0x1237f2[_0x5259('0x10')](0xc8)['json']({'output':_0x5259('0x36')});}else{return _0x1237f2['status'](0x1f4)[_0x5259('0x11')](_0xb639c6);}});}else{return _0x1237f2[_0x5259('0x10')](0xc8)[_0x5259('0x11')]({'output':_0x5259('0x36')});}};
\ No newline at end of file
index fef8805..cb74b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78d=['index','describe','/:id','post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated'];(function(_0x5f79cb,_0x4b2c88){var _0x3580bc=function(_0x1f2839){while(--_0x1f2839){_0x5f79cb['push'](_0x5f79cb['shift']());}};_0x3580bc(++_0x4b2c88);}(_0xb78d,0x14d));var _0xdb78=function(_0x28bfab,_0x4c434b){_0x28bfab=_0x28bfab-0x0;var _0x2bccac=_0xb78d[_0x28bfab];return _0x2bccac;};'use strict';var multer=require(_0xdb78('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdb78('0x1'));var express=require(_0xdb78('0x2'));var router=express[_0xdb78('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdb78('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xdb78('0x5'));var controller=require(_0xdb78('0x6'));router[_0xdb78('0x7')]('/',auth[_0xdb78('0x8')](),controller[_0xdb78('0x9')]);router[_0xdb78('0x7')]('/describe',auth[_0xdb78('0x8')](),controller[_0xdb78('0xa')]);router[_0xdb78('0x7')](_0xdb78('0xb'),auth[_0xdb78('0x8')](),controller['show']);router[_0xdb78('0xc')]('/',auth[_0xdb78('0x8')](),controller[_0xdb78('0xd')]);router[_0xdb78('0xe')](_0xdb78('0xb'),auth['isAuthenticated'](),controller[_0xdb78('0xf')]);router[_0xdb78('0x10')](_0xdb78('0xb'),auth[_0xdb78('0x8')](),controller[_0xdb78('0x11')]);module[_0xdb78('0x12')]=router;
\ No newline at end of file
+var _0x3819=['describe','/:id','show','post','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe'];(function(_0x1ddb20,_0x480a38){var _0x604c05=function(_0x2c98df){while(--_0x2c98df){_0x1ddb20['push'](_0x1ddb20['shift']());}};_0x604c05(++_0x480a38);}(_0x3819,0xeb));var _0x9381=function(_0x1180e8,_0x44e7b1){_0x1180e8=_0x1180e8-0x0;var _0x4ef4f8=_0x3819[_0x1180e8];return _0x4ef4f8;};'use strict';var multer=require(_0x9381('0x0'));var util=require(_0x9381('0x1'));var path=require(_0x9381('0x2'));var timeout=require('connect-timeout');var express=require(_0x9381('0x3'));var router=express[_0x9381('0x4')]();var fs_extra=require(_0x9381('0x5'));var auth=require(_0x9381('0x6'));var interaction=require(_0x9381('0x7'));var config=require(_0x9381('0x8'));var controller=require('./voiceAgentReport.controller');router[_0x9381('0x9')]('/',auth[_0x9381('0xa')](),controller['index']);router['get'](_0x9381('0xb'),auth[_0x9381('0xa')](),controller[_0x9381('0xc')]);router['get'](_0x9381('0xd'),auth[_0x9381('0xa')](),controller[_0x9381('0xe')]);router[_0x9381('0xf')]('/',auth[_0x9381('0xa')](),controller['create']);router['put'](_0x9381('0xd'),auth['isAuthenticated'](),controller[_0x9381('0x10')]);router[_0x9381('0x11')]('/:id',auth[_0x9381('0xa')](),controller[_0x9381('0x12')]);module['exports']=router;
\ No newline at end of file
index d20be1b..d3c0d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3264=['FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3264,0x7f));var _0x4326=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x3264[_0x2e4aa2];return _0x5e6092;};'use strict';var Sequelize=require('sequelize');module[_0x4326('0x0')]={'type':{'type':Sequelize[_0x4326('0x1')]},'uniqueid':{'type':Sequelize[_0x4326('0x1')]},'calleridnum':{'type':Sequelize[_0x4326('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x4326('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x4326('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x4326('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x4326('0x2')]},'agentdumpAt':{'type':Sequelize[_0x4326('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x4326('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x4326('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x4326('0x3')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x4326('0x4')]},'agentacw':{'type':Sequelize[_0x4326('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x4326('0x4')]},'reason':{'type':Sequelize[_0x4326('0x1')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x4326('0x4')]},'channelstatedesc':{'type':Sequelize[_0x4326('0x1')]},'connectedlinenum':{'type':Sequelize[_0x4326('0x1')]},'connectedlinename':{'type':Sequelize[_0x4326('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x4326('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x4326('0x1')]},'destchannel':{'type':Sequelize[_0x4326('0x1')]},'destchannelstate':{'type':Sequelize[_0x4326('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x4326('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x4326('0x1')]},'destaccountcode':{'type':Sequelize[_0x4326('0x1')]},'destcontext':{'type':Sequelize[_0x4326('0x1')]},'destexten':{'type':Sequelize[_0x4326('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x4326('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x4326('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x4326('0x1')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x4326('0x1')],'comment':_0x4326('0x5')},'transferexten':{'type':Sequelize[_0x4326('0x1')]},'transferuniqueid':{'type':Sequelize[_0x4326('0x1')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbcff=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x99181b,_0x7ec23a){var _0x31eb30=function(_0x211fd4){while(--_0x211fd4){_0x99181b['push'](_0x99181b['shift']());}};_0x31eb30(++_0x7ec23a);}(_0xbcff,0x12e));var _0xfbcf=function(_0x594ca9,_0x493620){_0x594ca9=_0x594ca9-0x0;var _0xc8834=_0xbcff[_0x594ca9];return _0xc8834;};'use strict';var Sequelize=require(_0xfbcf('0x0'));module[_0xfbcf('0x1')]={'type':{'type':Sequelize[_0xfbcf('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xfbcf('0x2')]},'calleridname':{'type':Sequelize[_0xfbcf('0x2')]},'queue':{'type':Sequelize[_0xfbcf('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xfbcf('0x2')]},'agentcalledAt':{'type':Sequelize[_0xfbcf('0x3')]},'agentconnectAt':{'type':Sequelize[_0xfbcf('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0xfbcf('0x3')]},'agentdumpAt':{'type':Sequelize[_0xfbcf('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xfbcf('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xfbcf('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xfbcf('0x5')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xfbcf('0x5')]},'reason':{'type':Sequelize[_0xfbcf('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xfbcf('0x5')]},'channelstatedesc':{'type':Sequelize[_0xfbcf('0x2')]},'connectedlinenum':{'type':Sequelize[_0xfbcf('0x2')]},'connectedlinename':{'type':Sequelize[_0xfbcf('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xfbcf('0x2')]},'context':{'type':Sequelize[_0xfbcf('0x2')]},'exten':{'type':Sequelize[_0xfbcf('0x2')]},'priority':{'type':Sequelize[_0xfbcf('0x2')]},'destchannel':{'type':Sequelize[_0xfbcf('0x2')]},'destchannelstate':{'type':Sequelize[_0xfbcf('0x5')]},'destchannelstatedesc':{'type':Sequelize[_0xfbcf('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xfbcf('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xfbcf('0x2')]},'destlanguage':{'type':Sequelize[_0xfbcf('0x2')]},'destaccountcode':{'type':Sequelize[_0xfbcf('0x2')]},'destcontext':{'type':Sequelize[_0xfbcf('0x2')]},'destexten':{'type':Sequelize[_0xfbcf('0x2')]},'destpriority':{'type':Sequelize[_0xfbcf('0x2')]},'destuniqueid':{'type':Sequelize[_0xfbcf('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfbcf('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xfbcf('0x2')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xfbcf('0x2')],'comment':_0xfbcf('0x6')},'transferexten':{'type':Sequelize[_0xfbcf('0x2')]},'transferuniqueid':{'type':Sequelize[_0xfbcf('0x2')]},'agententerreason':{'type':Sequelize[_0xfbcf('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index d29b1e3..1704a8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
+var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index 0656edc..ef7aac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6e=['moment','bluebird','../../config/environment','define','VoiceAgentReport','report_agent','lodash','../../config/logger'];(function(_0x1e0686,_0x4c0c31){var _0x3f2a07=function(_0xcecaa1){while(--_0xcecaa1){_0x1e0686['push'](_0x1e0686['shift']());}};_0x3f2a07(++_0x4c0c31);}(_0xfd6e,0x16e));var _0xefd6=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xfd6e[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xefd6('0x0'));var util=require('util');var logger=require(_0xefd6('0x1'))('api');var moment=require(_0xefd6('0x2'));var BPromise=require(_0xefd6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xefd6('0x4'));var attributes=require('./voiceAgentReport.attributes');module['exports']=function(_0x24af45,_0x23f8c3){return _0x24af45[_0xefd6('0x5')](_0xefd6('0x6'),attributes,{'tableName':_0xefd6('0x7'),'paranoid':![],'indexes':[{'fields':['uniqueid','destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2029=['../../config/environment','./voiceAgentReport.attributes','exports','define','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x460fd9,_0x4b4b97){var _0x424e18=function(_0x4a4942){while(--_0x4a4942){_0x460fd9['push'](_0x460fd9['shift']());}};_0x424e18(++_0x4b4b97);}(_0x2029,0x171));var _0x9202=function(_0x4e8312,_0x3711f9){_0x4e8312=_0x4e8312-0x0;var _0x27f1fe=_0x2029[_0x4e8312];return _0x27f1fe;};'use strict';var _=require(_0x9202('0x0'));var util=require(_0x9202('0x1'));var logger=require('../../config/logger')(_0x9202('0x2'));var moment=require(_0x9202('0x3'));var BPromise=require(_0x9202('0x4'));var rp=require(_0x9202('0x5'));var fs=require('fs');var path=require(_0x9202('0x6'));var rimraf=require(_0x9202('0x7'));var config=require(_0x9202('0x8'));var attributes=require(_0x9202('0x9'));module[_0x9202('0xa')]=function(_0x299c13,_0x2f33bb){return _0x299c13[_0x9202('0xb')]('VoiceAgentReport',attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x9202('0xc'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index becfbff..04517ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd10d=['../../config/environment','jayson/promise','client','http','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','options','debug','UpdateVoiceAgentReport','update','raw','where','attributes','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xd10d,0x144));var _0xdd10=function(_0x451d04,_0x999e7d){_0x451d04=_0x451d04-0x0;var _0x32c6fe=_0xd10d[_0x451d04];return _0x32c6fe;};'use strict';var _=require(_0xdd10('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xdd10('0x1'));var fs=require('fs');var Redis=require(_0xdd10('0x2'));var db=require(_0xdd10('0x3'))['db'];var utils=require(_0xdd10('0x4'));var logger=require('../../config/logger')(_0xdd10('0x5'));var config=require(_0xdd10('0x6'));var jayson=require(_0xdd10('0x7'));var client=jayson[_0xdd10('0x8')][_0xdd10('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cf81f,_0x2fca9b,_0x334892){return new BPromise(function(_0x209bf0,_0x3bb004){return client['request'](_0x2cf81f,_0x334892)[_0xdd10('0xa')](function(_0x458dac){logger[_0xdd10('0xb')](_0xdd10('0xc'),_0x2fca9b,'request\x20sent');logger['debug']('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x2fca9b,_0xdd10('0xd'),JSON[_0xdd10('0xe')](_0x458dac));if(_0x458dac[_0xdd10('0xf')]){if(_0x458dac[_0xdd10('0xf')][_0xdd10('0x10')]===0x1f4){logger[_0xdd10('0xf')]('VoiceAgentReport,\x20%s,\x20%s',_0x2fca9b,_0x458dac['error'][_0xdd10('0x11')]);return _0x3bb004(_0x458dac[_0xdd10('0xf')][_0xdd10('0x11')]);}logger[_0xdd10('0xf')]('VoiceAgentReport,\x20%s,\x20%s',_0x2fca9b,_0x458dac[_0xdd10('0xf')][_0xdd10('0x11')]);return _0x209bf0(_0x458dac['error'][_0xdd10('0x11')]);}else{logger['info'](_0xdd10('0xc'),_0x2fca9b,_0xdd10('0xd'));_0x209bf0(_0x458dac[_0xdd10('0x12')][_0xdd10('0x11')]);}})[_0xdd10('0x13')](function(_0x18da45){logger['error'](_0xdd10('0xc'),_0x2fca9b,_0x18da45);_0x3bb004(_0x18da45);});});}exports[_0xdd10('0x14')]=function(_0x4e6dbc){var _0x2bee58=this;return new Promise(function(_0xc3e0de,_0x533fa1){return db[_0xdd10('0x15')][_0xdd10('0x16')](_0x4e6dbc['body'],{'raw':_0x4e6dbc[_0xdd10('0x17')]?_0x4e6dbc['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3b2bc5){logger[_0xdd10('0xb')](_0xdd10('0x14'),_0x4e6dbc);logger[_0xdd10('0x18')]('CreateVoiceAgentReport',_0x4e6dbc,JSON[_0xdd10('0xe')](_0x3b2bc5));_0xc3e0de(_0x3b2bc5);})[_0xdd10('0x13')](function(_0x1a350d){logger[_0xdd10('0xf')]('CreateVoiceAgentReport',_0x1a350d[_0xdd10('0x11')],_0x4e6dbc);_0x533fa1(_0x2bee58[_0xdd10('0xf')](0x1f4,_0x1a350d[_0xdd10('0x11')]));});});};exports[_0xdd10('0x19')]=function(_0x1fff24){var _0x102f25=this;return new Promise(function(_0x5c1550,_0x2877f7){return db['VoiceAgentReport'][_0xdd10('0x1a')](_0x1fff24['body'],{'raw':_0x1fff24['options']?_0x1fff24[_0xdd10('0x17')][_0xdd10('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1fff24['options']?_0x1fff24[_0xdd10('0x17')][_0xdd10('0x1c')]||null:null,'attributes':_0x1fff24[_0xdd10('0x17')]?_0x1fff24[_0xdd10('0x17')][_0xdd10('0x1d')]||null:null,'limit':_0x1fff24[_0xdd10('0x17')]?_0x1fff24[_0xdd10('0x17')]['limit']||null:null})[_0xdd10('0xa')](function(_0x37958f){logger['info']('UpdateVoiceAgentReport',_0x1fff24);logger[_0xdd10('0x18')](_0xdd10('0x19'),_0x1fff24,JSON[_0xdd10('0xe')](_0x37958f));_0x5c1550(_0x37958f);})[_0xdd10('0x13')](function(_0x45410b){logger['error'](_0xdd10('0x19'),_0x45410b[_0xdd10('0x11')],_0x1fff24);_0x2877f7(_0x102f25[_0xdd10('0xf')](0x1f4,_0x45410b[_0xdd10('0x11')]));});});};
\ No newline at end of file
+var _0xa882=['client','http','request','then','info','request\x20sent','debug','stringify','error','VoiceAgentReport,\x20%s,\x20%s','message','result','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','catch','UpdateVoiceAgentReport','where','attributes','limit','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5c4601,_0x1bbc3e){var _0x50b867=function(_0x858d08){while(--_0x858d08){_0x5c4601['push'](_0x5c4601['shift']());}};_0x50b867(++_0x1bbc3e);}(_0xa882,0x1b7));var _0x2a88=function(_0x243217,_0x522951){_0x243217=_0x243217-0x0;var _0x478029=_0xa882[_0x243217];return _0x478029;};'use strict';var _=require(_0x2a88('0x0'));var util=require('util');var moment=require(_0x2a88('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2a88('0x2'));var db=require(_0x2a88('0x3'))['db'];var utils=require(_0x2a88('0x4'));var logger=require(_0x2a88('0x5'))(_0x2a88('0x6'));var config=require(_0x2a88('0x7'));var jayson=require(_0x2a88('0x8'));var client=jayson[_0x2a88('0x9')][_0x2a88('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4cae87,_0x119b82,_0x3055ee){return new BPromise(function(_0x2f1708,_0x1fd151){return client[_0x2a88('0xb')](_0x4cae87,_0x3055ee)[_0x2a88('0xc')](function(_0x3f3908){logger[_0x2a88('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x119b82,_0x2a88('0xe'));logger[_0x2a88('0xf')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x119b82,'request\x20sent',JSON[_0x2a88('0x10')](_0x3f3908));if(_0x3f3908['error']){if(_0x3f3908[_0x2a88('0x11')]['code']===0x1f4){logger['error'](_0x2a88('0x12'),_0x119b82,_0x3f3908[_0x2a88('0x11')][_0x2a88('0x13')]);return _0x1fd151(_0x3f3908[_0x2a88('0x11')][_0x2a88('0x13')]);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x119b82,_0x3f3908[_0x2a88('0x11')][_0x2a88('0x13')]);return _0x2f1708(_0x3f3908[_0x2a88('0x11')][_0x2a88('0x13')]);}else{logger[_0x2a88('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x119b82,_0x2a88('0xe'));_0x2f1708(_0x3f3908[_0x2a88('0x14')][_0x2a88('0x13')]);}})['catch'](function(_0x157c37){logger[_0x2a88('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x119b82,_0x157c37);_0x1fd151(_0x157c37);});});}exports[_0x2a88('0x15')]=function(_0x335d39){var _0x1f978c=this;return new Promise(function(_0x299ae8,_0x52cd8a){return db[_0x2a88('0x16')][_0x2a88('0x17')](_0x335d39[_0x2a88('0x18')],{'raw':_0x335d39[_0x2a88('0x19')]?_0x335d39['options'][_0x2a88('0x1a')]===undefined?!![]:![]:!![]})[_0x2a88('0xc')](function(_0x4b4b4d){logger['info'](_0x2a88('0x15'),_0x335d39);logger[_0x2a88('0xf')](_0x2a88('0x15'),_0x335d39,JSON['stringify'](_0x4b4b4d));_0x299ae8(_0x4b4b4d);})[_0x2a88('0x1b')](function(_0x142e68){logger[_0x2a88('0x11')]('CreateVoiceAgentReport',_0x142e68[_0x2a88('0x13')],_0x335d39);_0x52cd8a(_0x1f978c[_0x2a88('0x11')](0x1f4,_0x142e68['message']));});});};exports[_0x2a88('0x1c')]=function(_0x4c47e1){var _0x431b52=this;return new Promise(function(_0x2b85f2,_0x4edfcd){return db[_0x2a88('0x16')]['update'](_0x4c47e1[_0x2a88('0x18')],{'raw':_0x4c47e1[_0x2a88('0x19')]?_0x4c47e1['options'][_0x2a88('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c47e1['options']?_0x4c47e1[_0x2a88('0x19')][_0x2a88('0x1d')]||null:null,'attributes':_0x4c47e1[_0x2a88('0x19')]?_0x4c47e1[_0x2a88('0x19')][_0x2a88('0x1e')]||null:null,'limit':_0x4c47e1[_0x2a88('0x19')]?_0x4c47e1[_0x2a88('0x19')][_0x2a88('0x1f')]||null:null})['then'](function(_0x3e242d){logger['info'](_0x2a88('0x1c'),_0x4c47e1);logger[_0x2a88('0xf')](_0x2a88('0x1c'),_0x4c47e1,JSON[_0x2a88('0x10')](_0x3e242d));_0x2b85f2(_0x3e242d);})['catch'](function(_0x3999ab){logger[_0x2a88('0x11')](_0x2a88('0x1c'),_0x3999ab[_0x2a88('0x13')],_0x4c47e1);_0x4edfcd(_0x431b52[_0x2a88('0x11')](0x1f4,_0x3999ab[_0x2a88('0x13')]));});});};
\ No newline at end of file
index 552b045..3d2b6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','/describe','describe','/:id','delete','destroy'];(function(_0x2ec0c4,_0x38f9a1){var _0x215a3a=function(_0x33c103){while(--_0x33c103){_0x2ec0c4['push'](_0x2ec0c4['shift']());}};_0x215a3a(++_0x38f9a1);}(_0x2bd8,0x130));var _0x82bd=function(_0x3ff91a,_0x5ab315){_0x3ff91a=_0x3ff91a-0x0;var _0x4dc2d1=_0x2bd8[_0x3ff91a];return _0x4dc2d1;};'use strict';var multer=require(_0x82bd('0x0'));var util=require('util');var path=require(_0x82bd('0x1'));var timeout=require(_0x82bd('0x2'));var express=require(_0x82bd('0x3'));var router=express[_0x82bd('0x4')]();var fs_extra=require(_0x82bd('0x5'));var auth=require(_0x82bd('0x6'));var interaction=require(_0x82bd('0x7'));var config=require('../../config/environment');var controller=require(_0x82bd('0x8'));router[_0x82bd('0x9')]('/',auth[_0x82bd('0xa')](),controller['index']);router[_0x82bd('0x9')](_0x82bd('0xb'),auth[_0x82bd('0xa')](),controller[_0x82bd('0xc')]);router['get'](_0x82bd('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x82bd('0xa')](),controller['create']);router['put'](_0x82bd('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x82bd('0xe')](_0x82bd('0xd'),auth['isAuthenticated'](),controller[_0x82bd('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xee14=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','path'];(function(_0x4728e4,_0x55f332){var _0x44ee3c=function(_0x371ceb){while(--_0x371ceb){_0x4728e4['push'](_0x4728e4['shift']());}};_0x44ee3c(++_0x55f332);}(_0xee14,0x13a));var _0x4ee1=function(_0x5c6882,_0x53c706){_0x5c6882=_0x5c6882-0x0;var _0x3947a0=_0xee14[_0x5c6882];return _0x3947a0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4ee1('0x0'));var timeout=require(_0x4ee1('0x1'));var express=require(_0x4ee1('0x2'));var router=express[_0x4ee1('0x3')]();var fs_extra=require(_0x4ee1('0x4'));var auth=require(_0x4ee1('0x5'));var interaction=require(_0x4ee1('0x6'));var config=require(_0x4ee1('0x7'));var controller=require(_0x4ee1('0x8'));router['get']('/',auth[_0x4ee1('0x9')](),controller['index']);router[_0x4ee1('0xa')](_0x4ee1('0xb'),auth[_0x4ee1('0x9')](),controller[_0x4ee1('0xc')]);router[_0x4ee1('0xa')](_0x4ee1('0xd'),auth['isAuthenticated'](),controller[_0x4ee1('0xe')]);router[_0x4ee1('0xf')]('/',auth['isAuthenticated'](),controller[_0x4ee1('0x10')]);router[_0x4ee1('0x11')](_0x4ee1('0xd'),auth[_0x4ee1('0x9')](),controller['update']);router[_0x4ee1('0x12')](_0x4ee1('0xd'),auth[_0x4ee1('0x9')](),controller[_0x4ee1('0x13')]);module[_0x4ee1('0x14')]=router;
\ No newline at end of file
index 95126e4..2f6c32b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc496=['inbound','internal','outbound','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc496,0x170));var _0x6c49=function(_0x3b56c0,_0xe100d8){_0x3b56c0=_0x3b56c0-0x0;var _0x377efe=_0xc496[_0x3b56c0];return _0x377efe;};'use strict';var Sequelize=require(_0x6c49('0x0'));module[_0x6c49('0x1')]={'uniqueid':{'type':Sequelize[_0x6c49('0x2')]},'type':{'type':Sequelize[_0x6c49('0x3')](_0x6c49('0x4'),_0x6c49('0x5'),_0x6c49('0x6'),'inbound-fax',_0x6c49('0x7'),_0x6c49('0x8'))},'tag':{'type':Sequelize[_0x6c49('0x2')]},'accountcode':{'type':Sequelize[_0x6c49('0x2')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0x6c49('0x2')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x6c49('0x2')]},'channel':{'type':Sequelize[_0x6c49('0x2')]},'destinationchannel':{'type':Sequelize[_0x6c49('0x2')]},'lastapplication':{'type':Sequelize[_0x6c49('0x2')]},'lastdata':{'type':Sequelize[_0x6c49('0x9')]},'starttime':{'type':Sequelize[_0x6c49('0xa')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x6c49('0xa')]},'endtime':{'type':Sequelize[_0x6c49('0xa')]},'duration':{'type':Sequelize[_0x6c49('0xb')]},'billableseconds':{'type':Sequelize[_0x6c49('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x6c49('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x6c49('0x2')]},'userDisposition':{'type':Sequelize[_0x6c49('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x6c49('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x6c49('0x2')]},'note':{'type':Sequelize[_0x6c49('0x2')]},'prefix':{'type':Sequelize[_0x6c49('0x2')]},'routeid':{'type':Sequelize[_0x6c49('0xb')]},'sipcallid':{'type':Sequelize[_0x6c49('0x2')]}};
\ No newline at end of file
+var _0x3612=['inbound','internal','outbound','inbound-fax','outbound-fax','dialer','DATE','INTEGER','sequelize','STRING','ENUM'];(function(_0x4f0e28,_0x41ffc1){var _0x2b835c=function(_0x33229c){while(--_0x33229c){_0x4f0e28['push'](_0x4f0e28['shift']());}};_0x2b835c(++_0x41ffc1);}(_0x3612,0x189));var _0x2361=function(_0x2f3b86,_0x1fffad){_0x2f3b86=_0x2f3b86-0x0;var _0x9741a0=_0x3612[_0x2f3b86];return _0x9741a0;};'use strict';var Sequelize=require(_0x2361('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2361('0x1')]},'type':{'type':Sequelize[_0x2361('0x2')](_0x2361('0x3'),_0x2361('0x4'),_0x2361('0x5'),_0x2361('0x6'),_0x2361('0x7'),_0x2361('0x8'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x2361('0x1')]},'source':{'type':Sequelize[_0x2361('0x1')]},'destination':{'type':Sequelize[_0x2361('0x1')]},'destinationcontext':{'type':Sequelize[_0x2361('0x1')]},'callerid':{'type':Sequelize[_0x2361('0x1')]},'channel':{'type':Sequelize[_0x2361('0x1')]},'destinationchannel':{'type':Sequelize[_0x2361('0x1')]},'lastapplication':{'type':Sequelize[_0x2361('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x2361('0x9')]},'answertime':{'type':Sequelize[_0x2361('0x9')]},'endtime':{'type':Sequelize[_0x2361('0x9')]},'duration':{'type':Sequelize[_0x2361('0xa')]},'billableseconds':{'type':Sequelize[_0x2361('0xa')]},'mohtime':{'type':Sequelize[_0x2361('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x2361('0x1')]},'amaflags':{'type':Sequelize[_0x2361('0x1')]},'userfield':{'type':Sequelize[_0x2361('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize[_0x2361('0x1')]},'note':{'type':Sequelize[_0x2361('0x1')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x2361('0xa')]},'sipcallid':{'type':Sequelize[_0x2361('0x1')]}};
\ No newline at end of file
index 00c2bcb..76733ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x795649,_0x4c840a){var _0x32533d=function(_0x3e2e0c){while(--_0x3e2e0c){_0x795649['push'](_0x795649['shift']());}};_0x32533d(++_0x4c840a);}(_0xb10b,0x12a));var _0xbb10=function(_0x33ca22,_0xbcc94){_0x33ca22=_0x33ca22-0x0;var _0x1790c3=_0xb10b[_0x33ca22];return _0x1790c3;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));};
\ No newline at end of file
+var _0xdb28=['options','includeAll','fullname','User','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send','index','VoiceCallReport','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge'];(function(_0x196d5d,_0x21765b){var _0x32fbc6=function(_0x48fa17){while(--_0x48fa17){_0x196d5d['push'](_0x196d5d['shift']());}};_0x32fbc6(++_0x21765b);}(_0xdb28,0x106));var _0x8db2=function(_0x33cbc0,_0x179adf){_0x33cbc0=_0x33cbc0-0x0;var _0x2fbe8c=_0xdb28[_0x33cbc0];return _0x2fbe8c;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'attributes':['id',_0x8db2('0x28'),_0x8db2('0x40'),'alias'],'model':db['User'],'as':_0x8db2('0x41')}];}return db['VoiceCallReport'][_0x8db2('0x42')](_0x21bae5);})[_0x8db2('0x24')](function(_0x313130){_0x3124d5[_0x8db2('0x43')]=_0x313130;return _0x3124d5;})[_0x8db2('0x24')](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x44')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x45')]=function(_0x5c97ef,_0x2f86b1){var _0x3d44de={'raw':!![],'where':{'id':_0x5c97ef[_0x8db2('0x46')]['id']}},_0x40c69e={};_0x40c69e['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x47')]);_0x40c69e[_0x8db2('0x30')]=_['keys'](_0x5c97ef[_0x8db2('0x30')]);_0x40c69e['filters']=_[_0x8db2('0x48')](_0x40c69e[_0x8db2('0x32')],_0x40c69e[_0x8db2('0x30')]);_0x3d44de['attributes']=_['intersection'](_0x40c69e[_0x8db2('0x32')],qs['fields'](_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x33')]));_0x3d44de[_0x8db2('0x34')]=_0x3d44de[_0x8db2('0x34')][_0x8db2('0x35')]?_0x3d44de[_0x8db2('0x34')]:_0x40c69e[_0x8db2('0x32')];if(_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x3d44de[_0x8db2('0x49')]=[{'all':!![]}];}_0x3d44de=_[_0x8db2('0x3d')]({},_0x3d44de,_0x5c97ef[_0x8db2('0x3e')]);return db['VoiceCallReport'][_0x8db2('0x4a')](_0x3d44de)[_0x8db2('0x24')](handleEntityNotFound(_0x2f86b1,null))[_0x8db2('0x24')](respondWithResult(_0x2f86b1,null))[_0x8db2('0x44')](handleError(_0x2f86b1,null));};exports['create']=function(_0x4ffd9d,_0x11c224){return db[_0x8db2('0x2b')][_0x8db2('0x4b')](_0x4ffd9d['body'],{})['then'](respondWithResult(_0x11c224,0xc9))['catch'](handleError(_0x11c224,null));};exports[_0x8db2('0x4c')]=function(_0x368c37,_0x55c7dd){return db[_0x8db2('0x2b')][_0x8db2('0x4a')]({'where':{'id':_0x368c37[_0x8db2('0x46')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x55c7dd,null))['then'](removeEntity(_0x55c7dd,null))['catch'](handleError(_0x55c7dd,null));};exports[_0x8db2('0x4d')]=function(_0x18c6ef,_0x2908e4){return db[_0x8db2('0x2b')][_0x8db2('0x4d')]()[_0x8db2('0x24')](respondWithResult(_0x2908e4,null))[_0x8db2('0x44')](handleError(_0x2908e4,null));};exports[_0x8db2('0x23')]=function(_0x4187d6,_0x426ae0){if(_0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')]){delete _0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')];}return db[_0x8db2('0x2b')]['find']({'where':{'uniqueid':_0x4187d6[_0x8db2('0x46')]['id'],'UserId':{'$or':[null,_0x4187d6[_0x8db2('0x50')]['id']]}}})['then'](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x24')](saveUpdates(_0x4187d6[_0x8db2('0x4e')],null))[_0x8db2('0x24')](respondWithResult(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};
\ No newline at end of file
index b21d8b6..9e781e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a3=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','uniqueid'];(function(_0x5d2ec9,_0x3febe4){var _0x1ec899=function(_0x23e3f3){while(--_0x23e3f3){_0x5d2ec9['push'](_0x5d2ec9['shift']());}};_0x1ec899(++_0x3febe4);}(_0x16a3,0x1e0));var _0x316a=function(_0x38bf44,_0xde22aa){_0x38bf44=_0x38bf44-0x0;var _0x4c8f1f=_0x16a3[_0x38bf44];return _0x4c8f1f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x316a('0x0'))(_0x316a('0x1'));var moment=require(_0x316a('0x2'));var BPromise=require(_0x316a('0x3'));var rp=require(_0x316a('0x4'));var fs=require('fs');var path=require(_0x316a('0x5'));var rimraf=require(_0x316a('0x6'));var config=require(_0x316a('0x7'));var attributes=require(_0x316a('0x8'));module[_0x316a('0x9')]=function(_0xd3c8fd,_0x533fcf){return _0xd3c8fd[_0x316a('0xa')]('VoiceCallReport',attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x316a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d25=['path','rimraf','../../config/environment','./voiceCallReport.attributes','define','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x284d42,_0x308275){var _0x23c5da=function(_0x57bf55){while(--_0x57bf55){_0x284d42['push'](_0x284d42['shift']());}};_0x23c5da(++_0x308275);}(_0x5d25,0x117));var _0x55d2=function(_0x2d251c,_0x18cada){_0x2d251c=_0x2d251c-0x0;var _0x3ce97c=_0x5d25[_0x2d251c];return _0x3ce97c;};'use strict';var _=require(_0x55d2('0x0'));var util=require(_0x55d2('0x1'));var logger=require(_0x55d2('0x2'))(_0x55d2('0x3'));var moment=require(_0x55d2('0x4'));var BPromise=require(_0x55d2('0x5'));var rp=require(_0x55d2('0x6'));var fs=require('fs');var path=require(_0x55d2('0x7'));var rimraf=require(_0x55d2('0x8'));var config=require(_0x55d2('0x9'));var attributes=require(_0x55d2('0xa'));module['exports']=function(_0x2a21f7,_0x5d248f){return _0x2a21f7[_0x55d2('0xb')]('VoiceCallReport',attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x55d2('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index edd95c3..71dba08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ac=['findAll','options','where','attributes','limit','include','model','map','debug','stringify','catch','CreateVoiceCallReport','body','raw','UpdateVoiceCallReport','update','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','result','GetVoiceCallReport','VoiceCallReport'];(function(_0x180e9f,_0x3ee4f1){var _0xd402a4=function(_0x4d87a1){while(--_0x4d87a1){_0x180e9f['push'](_0x180e9f['shift']());}};_0xd402a4(++_0x3ee4f1);}(_0x93ac,0xac));var _0xc93a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x93ac[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc93a('0x0'));var BPromise=require(_0xc93a('0x1'));var rs=require(_0xc93a('0x2'));var fs=require('fs');var Redis=require(_0xc93a('0x3'));var db=require(_0xc93a('0x4'))['db'];var utils=require(_0xc93a('0x5'));var logger=require(_0xc93a('0x6'))('rpc');var config=require(_0xc93a('0x7'));var jayson=require(_0xc93a('0x8'));var client=jayson[_0xc93a('0x9')][_0xc93a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2869c0,_0x3d242d,_0x2a70e){return new BPromise(function(_0x3e69a7,_0x4ed561){return client[_0xc93a('0xb')](_0x2869c0,_0x2a70e)[_0xc93a('0xc')](function(_0x3703a0){logger[_0xc93a('0xd')](_0xc93a('0xe'),_0x3d242d,_0xc93a('0xf'));logger['debug'](_0xc93a('0x10'),_0x3d242d,'request\x20sent',JSON['stringify'](_0x3703a0));if(_0x3703a0[_0xc93a('0x11')]){if(_0x3703a0[_0xc93a('0x11')][_0xc93a('0x12')]===0x1f4){logger[_0xc93a('0x11')](_0xc93a('0xe'),_0x3d242d,_0x3703a0[_0xc93a('0x11')][_0xc93a('0x13')]);return _0x4ed561(_0x3703a0[_0xc93a('0x11')]['message']);}logger[_0xc93a('0x11')](_0xc93a('0xe'),_0x3d242d,_0x3703a0[_0xc93a('0x11')][_0xc93a('0x13')]);return _0x3e69a7(_0x3703a0[_0xc93a('0x11')][_0xc93a('0x13')]);}else{logger[_0xc93a('0xd')](_0xc93a('0xe'),_0x3d242d,_0xc93a('0xf'));_0x3e69a7(_0x3703a0[_0xc93a('0x14')][_0xc93a('0x13')]);}})['catch'](function(_0x27e1ec){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x3d242d,_0x27e1ec);_0x4ed561(_0x27e1ec);});});}exports[_0xc93a('0x15')]=function(_0x44d363){var _0x34d5e8=this;return new Promise(function(_0x1c83be,_0x8c4e7a){return db[_0xc93a('0x16')][_0xc93a('0x17')]({'raw':_0x44d363[_0xc93a('0x18')]?_0x44d363['options']['raw']===undefined?!![]:![]:!![],'where':_0x44d363[_0xc93a('0x18')]?_0x44d363[_0xc93a('0x18')][_0xc93a('0x19')]||null:null,'attributes':_0x44d363['options']?_0x44d363[_0xc93a('0x18')][_0xc93a('0x1a')]||null:null,'limit':_0x44d363['options']?_0x44d363['options'][_0xc93a('0x1b')]||null:null,'include':_0x44d363['options']?_0x44d363[_0xc93a('0x18')][_0xc93a('0x1c')]?_['map'](_0x44d363['options'][_0xc93a('0x1c')],function(_0x3f54fb){return{'model':db[_0x3f54fb[_0xc93a('0x1d')]],'as':_0x3f54fb['as'],'attributes':_0x3f54fb['attributes'],'include':_0x3f54fb[_0xc93a('0x1c')]?_[_0xc93a('0x1e')](_0x3f54fb[_0xc93a('0x1c')],function(_0x6cabde){return{'model':db[_0x6cabde[_0xc93a('0x1d')]],'as':_0x6cabde['as'],'attributes':_0x6cabde[_0xc93a('0x1a')],'include':_0x6cabde['include']?_['map'](_0x6cabde[_0xc93a('0x1c')],function(_0x5a4485){return{'model':db[_0x5a4485[_0xc93a('0x1d')]],'as':_0x5a4485['as'],'attributes':_0x5a4485[_0xc93a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc93a('0xc')](function(_0x4175d2){logger[_0xc93a('0xd')](_0xc93a('0x15'),_0x44d363);logger[_0xc93a('0x1f')](_0xc93a('0x15'),_0x44d363,JSON[_0xc93a('0x20')](_0x4175d2));_0x1c83be(_0x4175d2);})[_0xc93a('0x21')](function(_0x4dc0db){logger[_0xc93a('0x11')](_0xc93a('0x15'),_0x4dc0db[_0xc93a('0x13')],_0x44d363);_0x8c4e7a(_0x34d5e8['error'](0x1f4,_0x4dc0db[_0xc93a('0x13')]));});});};exports[_0xc93a('0x22')]=function(_0x2ae125){var _0x302a81=this;return new Promise(function(_0x3d6478,_0x3d13d9){return db[_0xc93a('0x16')]['create'](_0x2ae125[_0xc93a('0x23')],{'raw':_0x2ae125[_0xc93a('0x18')]?_0x2ae125[_0xc93a('0x18')][_0xc93a('0x24')]===undefined?!![]:![]:!![]})[_0xc93a('0xc')](function(_0x36d7bb){logger[_0xc93a('0xd')](_0xc93a('0x22'),_0x2ae125);logger[_0xc93a('0x1f')](_0xc93a('0x22'),_0x2ae125,JSON[_0xc93a('0x20')](_0x36d7bb));_0x3d6478(_0x36d7bb);})['catch'](function(_0x32a8a4){logger[_0xc93a('0x11')](_0xc93a('0x22'),_0x32a8a4[_0xc93a('0x13')],_0x2ae125);_0x3d13d9(_0x302a81[_0xc93a('0x11')](0x1f4,_0x32a8a4['message']));});});};exports[_0xc93a('0x25')]=function(_0x131066){var _0x17b697=this;return new Promise(function(_0x7d4332,_0x4aa492){return db[_0xc93a('0x16')][_0xc93a('0x26')](_0x131066[_0xc93a('0x23')],{'raw':_0x131066['options']?_0x131066[_0xc93a('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x131066['options']?_0x131066['options'][_0xc93a('0x19')]||null:null,'attributes':_0x131066[_0xc93a('0x18')]?_0x131066[_0xc93a('0x18')][_0xc93a('0x1a')]||null:null,'limit':_0x131066[_0xc93a('0x18')]?_0x131066[_0xc93a('0x18')][_0xc93a('0x1b')]||null:null})[_0xc93a('0xc')](function(_0x723d50){logger[_0xc93a('0xd')]('UpdateVoiceCallReport',_0x131066);logger[_0xc93a('0x1f')](_0xc93a('0x25'),_0x131066,JSON[_0xc93a('0x20')](_0x723d50));_0x7d4332(_0x723d50);})['catch'](function(_0x29d3d1){logger[_0xc93a('0x11')](_0xc93a('0x25'),_0x29d3d1[_0xc93a('0x13')],_0x131066);_0x4aa492(_0x17b697[_0xc93a('0x11')](0x1f4,_0x29d3d1[_0xc93a('0x13')]));});});};
\ No newline at end of file
+var _0x2dba=['debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','raw','options','where','attributes','limit','include','model','map','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent'];(function(_0x59713e,_0x389800){var _0x3217af=function(_0x590d56){while(--_0x590d56){_0x59713e['push'](_0x59713e['shift']());}};_0x3217af(++_0x389800);}(_0x2dba,0x193));var _0xa2db=function(_0x51ca0e,_0xccd489){_0x51ca0e=_0x51ca0e-0x0;var _0x1c0a8c=_0x2dba[_0x51ca0e];return _0x1c0a8c;};'use strict';var _=require(_0xa2db('0x0'));var util=require(_0xa2db('0x1'));var moment=require(_0xa2db('0x2'));var BPromise=require(_0xa2db('0x3'));var rs=require(_0xa2db('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa2db('0x5'));var logger=require('../../config/logger')(_0xa2db('0x6'));var config=require('../../config/environment');var jayson=require(_0xa2db('0x7'));var client=jayson[_0xa2db('0x8')][_0xa2db('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45d026,_0x4487bd,_0x54f550){return new BPromise(function(_0x15d827,_0x3b5b12){return client[_0xa2db('0xa')](_0x45d026,_0x54f550)[_0xa2db('0xb')](function(_0x2edf78){logger[_0xa2db('0xc')](_0xa2db('0xd'),_0x4487bd,_0xa2db('0xe'));logger[_0xa2db('0xf')](_0xa2db('0x10'),_0x4487bd,_0xa2db('0xe'),JSON[_0xa2db('0x11')](_0x2edf78));if(_0x2edf78['error']){if(_0x2edf78[_0xa2db('0x12')][_0xa2db('0x13')]===0x1f4){logger['error'](_0xa2db('0xd'),_0x4487bd,_0x2edf78[_0xa2db('0x12')][_0xa2db('0x14')]);return _0x3b5b12(_0x2edf78['error'][_0xa2db('0x14')]);}logger[_0xa2db('0x12')](_0xa2db('0xd'),_0x4487bd,_0x2edf78[_0xa2db('0x12')][_0xa2db('0x14')]);return _0x15d827(_0x2edf78[_0xa2db('0x12')][_0xa2db('0x14')]);}else{logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x4487bd,'request\x20sent');_0x15d827(_0x2edf78[_0xa2db('0x15')]['message']);}})[_0xa2db('0x16')](function(_0x2456c8){logger[_0xa2db('0x12')](_0xa2db('0xd'),_0x4487bd,_0x2456c8);_0x3b5b12(_0x2456c8);});});}exports[_0xa2db('0x17')]=function(_0x3cc9bb){var _0x21a324=this;return new Promise(function(_0x4d5135,_0x12507e){return db[_0xa2db('0x18')][_0xa2db('0x19')]({'raw':_0x3cc9bb['options']?_0x3cc9bb['options'][_0xa2db('0x1a')]===undefined?!![]:![]:!![],'where':_0x3cc9bb[_0xa2db('0x1b')]?_0x3cc9bb[_0xa2db('0x1b')][_0xa2db('0x1c')]||null:null,'attributes':_0x3cc9bb[_0xa2db('0x1b')]?_0x3cc9bb[_0xa2db('0x1b')][_0xa2db('0x1d')]||null:null,'limit':_0x3cc9bb['options']?_0x3cc9bb[_0xa2db('0x1b')][_0xa2db('0x1e')]||null:null,'include':_0x3cc9bb[_0xa2db('0x1b')]?_0x3cc9bb[_0xa2db('0x1b')][_0xa2db('0x1f')]?_['map'](_0x3cc9bb[_0xa2db('0x1b')][_0xa2db('0x1f')],function(_0x14ab34){return{'model':db[_0x14ab34[_0xa2db('0x20')]],'as':_0x14ab34['as'],'attributes':_0x14ab34[_0xa2db('0x1d')],'include':_0x14ab34[_0xa2db('0x1f')]?_[_0xa2db('0x21')](_0x14ab34[_0xa2db('0x1f')],function(_0xed299c){return{'model':db[_0xed299c[_0xa2db('0x20')]],'as':_0xed299c['as'],'attributes':_0xed299c[_0xa2db('0x1d')],'include':_0xed299c[_0xa2db('0x1f')]?_['map'](_0xed299c[_0xa2db('0x1f')],function(_0x55ea07){return{'model':db[_0x55ea07[_0xa2db('0x20')]],'as':_0x55ea07['as'],'attributes':_0x55ea07[_0xa2db('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xa2db('0xb')](function(_0xc333b8){logger[_0xa2db('0xc')](_0xa2db('0x17'),_0x3cc9bb);logger['debug'](_0xa2db('0x17'),_0x3cc9bb,JSON[_0xa2db('0x11')](_0xc333b8));_0x4d5135(_0xc333b8);})['catch'](function(_0x31dc73){logger[_0xa2db('0x12')](_0xa2db('0x17'),_0x31dc73[_0xa2db('0x14')],_0x3cc9bb);_0x12507e(_0x21a324['error'](0x1f4,_0x31dc73[_0xa2db('0x14')]));});});};exports[_0xa2db('0x22')]=function(_0x58b845){var _0x447132=this;return new Promise(function(_0x105eee,_0x2044d8){return db['VoiceCallReport'][_0xa2db('0x23')](_0x58b845[_0xa2db('0x24')],{'raw':_0x58b845[_0xa2db('0x1b')]?_0x58b845[_0xa2db('0x1b')][_0xa2db('0x1a')]===undefined?!![]:![]:!![]})[_0xa2db('0xb')](function(_0x45216c){logger[_0xa2db('0xc')]('CreateVoiceCallReport',_0x58b845);logger[_0xa2db('0xf')](_0xa2db('0x22'),_0x58b845,JSON[_0xa2db('0x11')](_0x45216c));_0x105eee(_0x45216c);})[_0xa2db('0x16')](function(_0x28a424){logger[_0xa2db('0x12')](_0xa2db('0x22'),_0x28a424[_0xa2db('0x14')],_0x58b845);_0x2044d8(_0x447132[_0xa2db('0x12')](0x1f4,_0x28a424['message']));});});};exports[_0xa2db('0x25')]=function(_0x220330){var _0x4af903=this;return new Promise(function(_0x4f076b,_0x925c9a){return db['VoiceCallReport']['update'](_0x220330[_0xa2db('0x24')],{'raw':_0x220330[_0xa2db('0x1b')]?_0x220330[_0xa2db('0x1b')][_0xa2db('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x220330[_0xa2db('0x1b')]?_0x220330['options'][_0xa2db('0x1c')]||null:null,'attributes':_0x220330[_0xa2db('0x1b')]?_0x220330[_0xa2db('0x1b')][_0xa2db('0x1d')]||null:null,'limit':_0x220330[_0xa2db('0x1b')]?_0x220330[_0xa2db('0x1b')][_0xa2db('0x1e')]||null:null})[_0xa2db('0xb')](function(_0x1680eb){logger[_0xa2db('0xc')](_0xa2db('0x25'),_0x220330);logger[_0xa2db('0xf')](_0xa2db('0x25'),_0x220330,JSON[_0xa2db('0x11')](_0x1680eb));_0x4f076b(_0x1680eb);})[_0xa2db('0x16')](function(_0x47f2f1){logger[_0xa2db('0x12')]('UpdateVoiceCallReport',_0x47f2f1[_0xa2db('0x14')],_0x220330);_0x925c9a(_0x4af903[_0xa2db('0x12')](0x1f4,_0x47f2f1[_0xa2db('0x14')]));});});};
\ No newline at end of file
index 4c0ef55..d6c1184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb714=['path','Router','fs-extra','../../components/interaction/service','./voiceChanSpy.controller','index','get','show','post','isAuthenticated','put','/:id','update','delete','exports','util'];(function(_0x4fa329,_0x40a631){var _0x521c49=function(_0x513cf0){while(--_0x513cf0){_0x4fa329['push'](_0x4fa329['shift']());}};_0x521c49(++_0x40a631);}(_0xb714,0x14f));var _0x4b71=function(_0x217523,_0x5d793a){_0x217523=_0x217523-0x0;var _0x43e3e1=_0xb714[_0x217523];return _0x43e3e1;};'use strict';var multer=require('multer');var util=require(_0x4b71('0x0'));var path=require(_0x4b71('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4b71('0x2')]();var fs_extra=require(_0x4b71('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x4b71('0x4'));var config=require('../../config/environment');var controller=require(_0x4b71('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x4b71('0x6')]);router[_0x4b71('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x4b71('0x8')]);router[_0x4b71('0x9')]('/',auth[_0x4b71('0xa')](),controller['create']);router[_0x4b71('0xb')](_0x4b71('0xc'),auth[_0x4b71('0xa')](),controller[_0x4b71('0xd')]);router[_0x4b71('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x4b71('0xf')]=router;
\ No newline at end of file
+var _0xd051=['get','index','/:id','isAuthenticated','show','create','put','destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x407b47,_0x4028a0){var _0x302796=function(_0x3659f5){while(--_0x3659f5){_0x407b47['push'](_0x407b47['shift']());}};_0x302796(++_0x4028a0);}(_0xd051,0x189));var _0x1d05=function(_0x57a032,_0x589c56){_0x57a032=_0x57a032-0x0;var _0x29e04c=_0xd051[_0x57a032];return _0x29e04c;};'use strict';var multer=require('multer');var util=require(_0x1d05('0x0'));var path=require(_0x1d05('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1d05('0x2')]();var fs_extra=require(_0x1d05('0x3'));var auth=require(_0x1d05('0x4'));var interaction=require(_0x1d05('0x5'));var config=require(_0x1d05('0x6'));var controller=require('./voiceChanSpy.controller');router[_0x1d05('0x7')]('/',auth['isAuthenticated'](),controller[_0x1d05('0x8')]);router['get'](_0x1d05('0x9'),auth[_0x1d05('0xa')](),controller[_0x1d05('0xb')]);router['post']('/',auth[_0x1d05('0xa')](),controller[_0x1d05('0xc')]);router[_0x1d05('0xd')]('/:id',auth[_0x1d05('0xa')](),controller['update']);router['delete']('/:id',auth[_0x1d05('0xa')](),controller[_0x1d05('0xe')]);module[_0x1d05('0xf')]=router;
\ No newline at end of file
index c3cd6e5..9603ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5065=['STRING','options','join','getDataValue','split','BOOLEAN','sequelize','exports'];(function(_0x351f77,_0x3736d6){var _0x56fae9=function(_0xa0c40d){while(--_0xa0c40d){_0x351f77['push'](_0x351f77['shift']());}};_0x56fae9(++_0x3736d6);}(_0x5065,0x1d6));var _0x5506=function(_0x5afc5f,_0x5d1cbe){_0x5afc5f=_0x5afc5f-0x0;var _0x94ef91=_0x5065[_0x5afc5f];return _0x94ef91;};'use strict';var Sequelize=require(_0x5506('0x0'));module[_0x5506('0x1')]={'name':{'type':Sequelize[_0x5506('0x2')]},'prefix':{'type':Sequelize[_0x5506('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x5506('0x2')],'set':function(_0x35b29a){this['setDataValue'](_0x5506('0x3'),_0x35b29a?_0x35b29a[_0x5506('0x4')](''):[]);},'get':function(){return this[_0x5506('0x5')](_0x5506('0x3'))?this['getDataValue'](_0x5506('0x3'))[_0x5506('0x6')](''):[];}},'auth':{'type':Sequelize[_0x5506('0x7')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x5506('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x5506('0x2')]},'description':{'type':Sequelize[_0x5506('0x2')]}};
\ No newline at end of file
+var _0x1c93=['setDataValue','options','join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x24280d,_0x1ae18b){var _0x277913=function(_0x35b584){while(--_0x35b584){_0x24280d['push'](_0x24280d['shift']());}};_0x277913(++_0x1ae18b);}(_0x1c93,0x1b4));var _0x31c9=function(_0x379ac8,_0x5cb1d7){_0x379ac8=_0x379ac8-0x0;var _0x942cb3=_0x1c93[_0x379ac8];return _0x942cb3;};'use strict';var Sequelize=require(_0x31c9('0x0'));module[_0x31c9('0x1')]={'name':{'type':Sequelize[_0x31c9('0x2')]},'prefix':{'type':Sequelize[_0x31c9('0x2')],'unique':_0x31c9('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x31c9('0x2')],'set':function(_0x3c27a2){this[_0x31c9('0x4')](_0x31c9('0x5'),_0x3c27a2?_0x3c27a2[_0x31c9('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x31c9('0x5'))?this[_0x31c9('0x7')]('options')[_0x31c9('0x8')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x31c9('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x31c9('0x2')]},'description':{'type':Sequelize[_0x31c9('0x2')]}};
\ No newline at end of file
index 90b3fdc..4cbfa32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ff9=['end','sendStatus','error','stack','name','send','index','VoiceChanSpy','fieldName','type','key','map','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','VIRTUAL','merge','options','includeAll','include','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','then','destroy','get','ChanSpies','UserProfileResource'];(function(_0x1ae31c,_0x8dcd2d){var _0x19519d=function(_0x22b8cd){while(--_0x22b8cd){_0x1ae31c['push'](_0x1ae31c['shift']());}};_0x19519d(++_0x8dcd2d);}(_0x8ff9,0x188));var _0x98ff=function(_0x503368,_0x4b6729){_0x503368=_0x503368-0x0;var _0x3911f8=_0x8ff9[_0x503368];return _0x3911f8;};'use strict';var emlformat=require(_0x98ff('0x0'));var rimraf=require(_0x98ff('0x1'));var zipdir=require(_0x98ff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x98ff('0x3'));var moment=require(_0x98ff('0x4'));var BPromise=require(_0x98ff('0x5'));var Mustache=require(_0x98ff('0x6'));var util=require(_0x98ff('0x7'));var path=require(_0x98ff('0x8'));var sox=require(_0x98ff('0x9'));var csv=require('to-csv');var ejs=require(_0x98ff('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x98ff('0xb'));var squel=require(_0x98ff('0xc'));var crypto=require('crypto');var jsforce=require(_0x98ff('0xd'));var deskjs=require(_0x98ff('0xe'));var toCsv=require(_0x98ff('0xf'));var querystring=require(_0x98ff('0x10'));var Papa=require(_0x98ff('0x11'));var Redis=require(_0x98ff('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x98ff('0x13'));var as=require(_0x98ff('0x14'));var hardwareService=require(_0x98ff('0x15'));var logger=require(_0x98ff('0x16'))('api');var utils=require(_0x98ff('0x17'));var config=require(_0x98ff('0x18'));var licenseUtil=require(_0x98ff('0x19'));var db=require(_0x98ff('0x1a'))['db'];function respondWithStatusCode(_0x9ec5f1,_0x3276a7){_0x3276a7=_0x3276a7||0xcc;return function(_0x5885c8){if(_0x5885c8){return _0x9ec5f1['sendStatus'](_0x3276a7);}return _0x9ec5f1[_0x98ff('0x1b')](_0x3276a7)['end']();};}function respondWithResult(_0x3f288b,_0x1c2b68){_0x1c2b68=_0x1c2b68||0xc8;return function(_0x5b092f){if(_0x5b092f){return _0x3f288b[_0x98ff('0x1b')](_0x1c2b68)['json'](_0x5b092f);}};}function respondWithFilteredResult(_0x18132e,_0x1d85a7){return function(_0x4a2e6e){if(_0x4a2e6e){var _0x2e490a=typeof _0x1d85a7['offset']===_0x98ff('0x1c')&&typeof _0x1d85a7[_0x98ff('0x1d')]===_0x98ff('0x1c');var _0x4cbb53=_0x4a2e6e['count'];var _0x19e1db=_0x2e490a?0x0:_0x1d85a7[_0x98ff('0x1e')];var _0x48ca02=_0x2e490a?_0x4a2e6e[_0x98ff('0x1f')]:_0x1d85a7[_0x98ff('0x1e')]+_0x1d85a7[_0x98ff('0x1d')];var _0x1ab7eb;if(_0x48ca02>=_0x4cbb53){_0x48ca02=_0x4cbb53;_0x1ab7eb=0xc8;}else{_0x1ab7eb=0xce;}_0x18132e[_0x98ff('0x1b')](_0x1ab7eb);return _0x18132e[_0x98ff('0x20')](_0x98ff('0x21'),_0x19e1db+'-'+_0x48ca02+'/'+_0x4cbb53)[_0x98ff('0x22')](_0x4a2e6e);}return null;};}function patchUpdates(_0x3b79db){return function(_0x5c4e5c){try{jsonpatch[_0x98ff('0x23')](_0x5c4e5c,_0x3b79db,!![]);}catch(_0x481a72){return BPromise[_0x98ff('0x24')](_0x481a72);}return _0x5c4e5c[_0x98ff('0x25')]();};}function saveUpdates(_0x3e9f9b,_0x22f8fe){return function(_0x5a1563){if(_0x5a1563){return _0x5a1563['update'](_0x3e9f9b)[_0x98ff('0x26')](function(_0x43f67f){return _0x43f67f;});}return null;};}function removeEntity(_0x766b31,_0x5e18e6){return function(_0x10826e){if(_0x10826e){return _0x10826e[_0x98ff('0x27')]()[_0x98ff('0x26')](function(){var _0x107cd9=_0x10826e[_0x98ff('0x28')]({'plain':!![]});var _0x2d346d=_0x98ff('0x29');return db[_0x98ff('0x2a')]['destroy']({'where':{'type':_0x2d346d,'resourceId':_0x107cd9['id']}})[_0x98ff('0x26')](function(){return _0x10826e;});})['then'](function(){_0x766b31[_0x98ff('0x1b')](0xcc)[_0x98ff('0x2b')]();});}};}function handleEntityNotFound(_0x29e5da,_0x285f72){return function(_0x3311c1){if(!_0x3311c1){_0x29e5da[_0x98ff('0x2c')](0x194);}return _0x3311c1;};}function handleError(_0x3dc5ea,_0x1c4c64){_0x1c4c64=_0x1c4c64||0x1f4;return function(_0xa9787c){logger[_0x98ff('0x2d')](_0xa9787c[_0x98ff('0x2e')]);if(_0xa9787c[_0x98ff('0x2f')]){delete _0xa9787c[_0x98ff('0x2f')];}_0x3dc5ea[_0x98ff('0x1b')](_0x1c4c64)[_0x98ff('0x30')](_0xa9787c);};}exports[_0x98ff('0x31')]=function(_0x2b686b,_0x5af0dc){var _0x346dee={},_0x371096={},_0x9667e4={'count':0x0,'rows':[]};var _0x3b4923=_['map'](db[_0x98ff('0x32')]['rawAttributes'],function(_0x1d8ddd){return{'name':_0x1d8ddd[_0x98ff('0x33')],'type':_0x1d8ddd[_0x98ff('0x34')][_0x98ff('0x35')]};});_0x371096['model']=_[_0x98ff('0x36')](_0x3b4923,_0x98ff('0x2f'));_0x371096['query']=_[_0x98ff('0x37')](_0x2b686b[_0x98ff('0x38')]);_0x371096['filters']=_[_0x98ff('0x39')](_0x371096[_0x98ff('0x3a')],_0x371096['query']);_0x346dee[_0x98ff('0x3b')]=_[_0x98ff('0x39')](_0x371096[_0x98ff('0x3a')],qs[_0x98ff('0x3c')](_0x2b686b['query'][_0x98ff('0x3c')]));_0x346dee['attributes']=_0x346dee[_0x98ff('0x3b')][_0x98ff('0x3d')]?_0x346dee[_0x98ff('0x3b')]:_0x371096['model'];if(!_0x2b686b[_0x98ff('0x38')][_0x98ff('0x3e')](_0x98ff('0x3f'))){_0x346dee[_0x98ff('0x1d')]=qs[_0x98ff('0x1d')](_0x2b686b[_0x98ff('0x38')][_0x98ff('0x1d')]);_0x346dee[_0x98ff('0x1e')]=qs[_0x98ff('0x1e')](_0x2b686b[_0x98ff('0x38')][_0x98ff('0x1e')]);}_0x346dee[_0x98ff('0x40')]=qs['sort'](_0x2b686b[_0x98ff('0x38')][_0x98ff('0x41')]);_0x346dee['where']=qs['filters'](_[_0x98ff('0x42')](_0x2b686b[_0x98ff('0x38')],_0x371096[_0x98ff('0x43')]),_0x3b4923);if(_0x2b686b['query'][_0x98ff('0x44')]){_0x346dee[_0x98ff('0x45')]=_['merge'](_0x346dee[_0x98ff('0x45')],{'$or':_[_0x98ff('0x36')](_0x3b4923,function(_0xfeb667){if(_0xfeb667[_0x98ff('0x34')]!==_0x98ff('0x46')){var _0x5e3654={};_0x5e3654[_0xfeb667[_0x98ff('0x2f')]]={'$like':'%'+_0x2b686b['query'][_0x98ff('0x44')]+'%'};return _0x5e3654;}})});}_0x346dee=_[_0x98ff('0x47')]({},_0x346dee,_0x2b686b[_0x98ff('0x48')]);var _0x32bf28={'where':_0x346dee[_0x98ff('0x45')]};return db['VoiceChanSpy'][_0x98ff('0x1f')](_0x32bf28)['then'](function(_0x14aeca){_0x9667e4[_0x98ff('0x1f')]=_0x14aeca;if(_0x2b686b['query'][_0x98ff('0x49')]){_0x346dee[_0x98ff('0x4a')]=[{'all':!![]}];}return db[_0x98ff('0x32')]['findAll'](_0x346dee);})[_0x98ff('0x26')](function(_0x861b54){_0x9667e4['rows']=_0x861b54;return _0x9667e4;})['then'](respondWithFilteredResult(_0x5af0dc,_0x346dee))['catch'](handleError(_0x5af0dc,null));};exports[_0x98ff('0x4b')]=function(_0x1ee741,_0x4c2191){var _0x47a32a={'raw':![],'where':{'id':_0x1ee741[_0x98ff('0x4c')]['id']}},_0x2eb351={};_0x2eb351[_0x98ff('0x3a')]=_['keys'](db['VoiceChanSpy']['rawAttributes']);_0x2eb351[_0x98ff('0x38')]=_[_0x98ff('0x37')](_0x1ee741[_0x98ff('0x38')]);_0x2eb351['filters']=_[_0x98ff('0x39')](_0x2eb351['model'],_0x2eb351[_0x98ff('0x38')]);_0x47a32a[_0x98ff('0x3b')]=_['intersection'](_0x2eb351[_0x98ff('0x3a')],qs[_0x98ff('0x3c')](_0x1ee741['query'][_0x98ff('0x3c')]));_0x47a32a[_0x98ff('0x3b')]=_0x47a32a[_0x98ff('0x3b')]['length']?_0x47a32a['attributes']:_0x2eb351[_0x98ff('0x3a')];if(_0x1ee741[_0x98ff('0x38')][_0x98ff('0x49')]){_0x47a32a[_0x98ff('0x4a')]=[{'all':!![]}];}_0x47a32a=_[_0x98ff('0x47')]({},_0x47a32a,_0x1ee741[_0x98ff('0x48')]);return db[_0x98ff('0x32')][_0x98ff('0x4d')](_0x47a32a)[_0x98ff('0x26')](handleEntityNotFound(_0x4c2191,null))[_0x98ff('0x26')](respondWithResult(_0x4c2191,null))[_0x98ff('0x4e')](handleError(_0x4c2191,null));};exports[_0x98ff('0x4f')]=function(_0x35607f,_0x582e6f){return db[_0x98ff('0x32')][_0x98ff('0x4f')](_0x35607f[_0x98ff('0x50')],{})[_0x98ff('0x26')](function(_0x13dec0){var _0x16909f=_0x35607f[_0x98ff('0x51')]['get']({'plain':!![]});if(!_0x16909f)throw new Error(_0x98ff('0x52'));if(_0x16909f[_0x98ff('0x53')]==='user'){var _0x3c5faa=_0x13dec0[_0x98ff('0x28')]({'plain':!![]});var _0x3a1eea=_0x98ff('0x29');return db[_0x98ff('0x54')][_0x98ff('0x4d')]({'where':{'name':_0x3a1eea,'userProfileId':_0x16909f[_0x98ff('0x55')]},'raw':!![]})[_0x98ff('0x26')](function(_0x4c4083){if(_0x4c4083&&_0x4c4083['autoAssociation']===0x0){return db[_0x98ff('0x2a')][_0x98ff('0x4f')]({'name':_0x3c5faa[_0x98ff('0x2f')],'resourceId':_0x3c5faa['id'],'type':_0x4c4083[_0x98ff('0x2f')],'sectionId':_0x4c4083['id']},{})['then'](function(){return _0x13dec0;});}else{return _0x13dec0;}})[_0x98ff('0x4e')](function(_0x23aa34){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x23aa34);throw _0x23aa34;});}return _0x13dec0;})['then'](respondWithResult(_0x582e6f,0xc9))['catch'](handleError(_0x582e6f,null));};exports[_0x98ff('0x56')]=function(_0x2bd95b,_0x1ef022){if(_0x2bd95b[_0x98ff('0x50')]['id']){delete _0x2bd95b[_0x98ff('0x50')]['id'];}return db[_0x98ff('0x32')][_0x98ff('0x4d')]({'where':{'id':_0x2bd95b['params']['id']}})[_0x98ff('0x26')](handleEntityNotFound(_0x1ef022,null))['then'](saveUpdates(_0x2bd95b[_0x98ff('0x50')],null))[_0x98ff('0x26')](respondWithResult(_0x1ef022,null))[_0x98ff('0x4e')](handleError(_0x1ef022,null));};exports[_0x98ff('0x27')]=function(_0x7df759,_0x4aa355){return db[_0x98ff('0x32')][_0x98ff('0x4d')]({'where':{'id':_0x7df759[_0x98ff('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4aa355,null))['then'](removeEntity(_0x4aa355,null))[_0x98ff('0x4e')](handleError(_0x4aa355,null));};
\ No newline at end of file
+var _0x049e=['map','rawAttributes','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','VoiceChanSpy','includeAll','include','rows','catch','show','params','options','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','Content-Range','json','reject','save','update','then','ChanSpies','destroy','end','error','stack','name','send','index'];(function(_0x1b1f88,_0x3fe1cb){var _0x5045b9=function(_0x5c1367){while(--_0x5c1367){_0x1b1f88['push'](_0x1b1f88['shift']());}};_0x5045b9(++_0x3fe1cb);}(_0x049e,0x16a));var _0xe049=function(_0x568a61,_0x2124f8){_0x568a61=_0x568a61-0x0;var _0x334c3b=_0x049e[_0x568a61];return _0x334c3b;};'use strict';var emlformat=require(_0xe049('0x0'));var rimraf=require(_0xe049('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe049('0x2'));var rp=require('request-promise');var moment=require(_0xe049('0x3'));var BPromise=require(_0xe049('0x4'));var Mustache=require(_0xe049('0x5'));var util=require(_0xe049('0x6'));var path=require(_0xe049('0x7'));var sox=require('sox');var csv=require(_0xe049('0x8'));var ejs=require(_0xe049('0x9'));var fs=require('fs');var fs_extra=require(_0xe049('0xa'));var _=require(_0xe049('0xb'));var squel=require(_0xe049('0xc'));var crypto=require(_0xe049('0xd'));var jsforce=require(_0xe049('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe049('0x8'));var querystring=require(_0xe049('0xf'));var Papa=require(_0xe049('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe049('0x11'));var as=require(_0xe049('0x12'));var hardwareService=require(_0xe049('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xe049('0x14'));var licenseUtil=require(_0xe049('0x15'));var db=require(_0xe049('0x16'))['db'];function respondWithStatusCode(_0x359931,_0x301c7e){_0x301c7e=_0x301c7e||0xcc;return function(_0x1021e7){if(_0x1021e7){return _0x359931[_0xe049('0x17')](_0x301c7e);}return _0x359931[_0xe049('0x18')](_0x301c7e)['end']();};}function respondWithResult(_0x20c286,_0x3f4a57){_0x3f4a57=_0x3f4a57||0xc8;return function(_0x3924a4){if(_0x3924a4){return _0x20c286[_0xe049('0x18')](_0x3f4a57)['json'](_0x3924a4);}};}function respondWithFilteredResult(_0x3a539b,_0xcc35b6){return function(_0x5c90fd){if(_0x5c90fd){var _0x388be0=typeof _0xcc35b6[_0xe049('0x19')]==='undefined'&&typeof _0xcc35b6[_0xe049('0x1a')]===_0xe049('0x1b');var _0x5d435b=_0x5c90fd[_0xe049('0x1c')];var _0x54c303=_0x388be0?0x0:_0xcc35b6['offset'];var _0x3cbbeb=_0x388be0?_0x5c90fd['count']:_0xcc35b6['offset']+_0xcc35b6[_0xe049('0x1a')];var _0x1092ec;if(_0x3cbbeb>=_0x5d435b){_0x3cbbeb=_0x5d435b;_0x1092ec=0xc8;}else{_0x1092ec=0xce;}_0x3a539b['status'](_0x1092ec);return _0x3a539b['set'](_0xe049('0x1d'),_0x54c303+'-'+_0x3cbbeb+'/'+_0x5d435b)[_0xe049('0x1e')](_0x5c90fd);}return null;};}function patchUpdates(_0x1d2f5b){return function(_0x430421){try{jsonpatch['apply'](_0x430421,_0x1d2f5b,!![]);}catch(_0x572f29){return BPromise[_0xe049('0x1f')](_0x572f29);}return _0x430421[_0xe049('0x20')]();};}function saveUpdates(_0x572a80,_0x36a03b){return function(_0x3f14eb){if(_0x3f14eb){return _0x3f14eb[_0xe049('0x21')](_0x572a80)['then'](function(_0x197358){return _0x197358;});}return null;};}function removeEntity(_0x3b0f54,_0x4c7492){return function(_0x4848c9){if(_0x4848c9){return _0x4848c9['destroy']()[_0xe049('0x22')](function(){var _0x5954c0=_0x4848c9['get']({'plain':!![]});var _0x1aafd1=_0xe049('0x23');return db['UserProfileResource'][_0xe049('0x24')]({'where':{'type':_0x1aafd1,'resourceId':_0x5954c0['id']}})[_0xe049('0x22')](function(){return _0x4848c9;});})[_0xe049('0x22')](function(){_0x3b0f54[_0xe049('0x18')](0xcc)[_0xe049('0x25')]();});}};}function handleEntityNotFound(_0x1843b8,_0x5b0e64){return function(_0x50552d){if(!_0x50552d){_0x1843b8[_0xe049('0x17')](0x194);}return _0x50552d;};}function handleError(_0x542c7c,_0x38ff5b){_0x38ff5b=_0x38ff5b||0x1f4;return function(_0x495d33){logger[_0xe049('0x26')](_0x495d33[_0xe049('0x27')]);if(_0x495d33['name']){delete _0x495d33[_0xe049('0x28')];}_0x542c7c[_0xe049('0x18')](_0x38ff5b)[_0xe049('0x29')](_0x495d33);};}exports[_0xe049('0x2a')]=function(_0x4464b2,_0x4055fc){var _0x123d2e={},_0x44faff={},_0x4038f0={'count':0x0,'rows':[]};var _0x1a4b97=_[_0xe049('0x2b')](db['VoiceChanSpy'][_0xe049('0x2c')],function(_0x1e99c8){return{'name':_0x1e99c8['fieldName'],'type':_0x1e99c8['type']['key']};});_0x44faff['model']=_[_0xe049('0x2b')](_0x1a4b97,_0xe049('0x28'));_0x44faff[_0xe049('0x2d')]=_[_0xe049('0x2e')](_0x4464b2[_0xe049('0x2d')]);_0x44faff['filters']=_[_0xe049('0x2f')](_0x44faff[_0xe049('0x30')],_0x44faff[_0xe049('0x2d')]);_0x123d2e[_0xe049('0x31')]=_[_0xe049('0x2f')](_0x44faff['model'],qs[_0xe049('0x32')](_0x4464b2['query'][_0xe049('0x32')]));_0x123d2e['attributes']=_0x123d2e[_0xe049('0x31')][_0xe049('0x33')]?_0x123d2e[_0xe049('0x31')]:_0x44faff[_0xe049('0x30')];if(!_0x4464b2[_0xe049('0x2d')][_0xe049('0x34')](_0xe049('0x35'))){_0x123d2e[_0xe049('0x1a')]=qs[_0xe049('0x1a')](_0x4464b2[_0xe049('0x2d')][_0xe049('0x1a')]);_0x123d2e['offset']=qs[_0xe049('0x19')](_0x4464b2[_0xe049('0x2d')][_0xe049('0x19')]);}_0x123d2e[_0xe049('0x36')]=qs[_0xe049('0x37')](_0x4464b2[_0xe049('0x2d')][_0xe049('0x37')]);_0x123d2e[_0xe049('0x38')]=qs['filters'](_[_0xe049('0x39')](_0x4464b2[_0xe049('0x2d')],_0x44faff[_0xe049('0x3a')]),_0x1a4b97);if(_0x4464b2[_0xe049('0x2d')][_0xe049('0x3b')]){_0x123d2e[_0xe049('0x38')]=_[_0xe049('0x3c')](_0x123d2e[_0xe049('0x38')],{'$or':_[_0xe049('0x2b')](_0x1a4b97,function(_0x3d6a4b){if(_0x3d6a4b['type']!==_0xe049('0x3d')){var _0x176374={};_0x176374[_0x3d6a4b[_0xe049('0x28')]]={'$like':'%'+_0x4464b2['query'][_0xe049('0x3b')]+'%'};return _0x176374;}})});}_0x123d2e=_['merge']({},_0x123d2e,_0x4464b2['options']);var _0x19dbc4={'where':_0x123d2e['where']};return db[_0xe049('0x3e')][_0xe049('0x1c')](_0x19dbc4)[_0xe049('0x22')](function(_0xe4f184){_0x4038f0[_0xe049('0x1c')]=_0xe4f184;if(_0x4464b2['query'][_0xe049('0x3f')]){_0x123d2e[_0xe049('0x40')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x123d2e);})[_0xe049('0x22')](function(_0x20d264){_0x4038f0[_0xe049('0x41')]=_0x20d264;return _0x4038f0;})[_0xe049('0x22')](respondWithFilteredResult(_0x4055fc,_0x123d2e))[_0xe049('0x42')](handleError(_0x4055fc,null));};exports[_0xe049('0x43')]=function(_0x56a309,_0x1a4707){var _0x3f92ee={'raw':![],'where':{'id':_0x56a309[_0xe049('0x44')]['id']}},_0x5c04f6={};_0x5c04f6[_0xe049('0x30')]=_[_0xe049('0x2e')](db[_0xe049('0x3e')][_0xe049('0x2c')]);_0x5c04f6['query']=_['keys'](_0x56a309[_0xe049('0x2d')]);_0x5c04f6[_0xe049('0x3a')]=_[_0xe049('0x2f')](_0x5c04f6[_0xe049('0x30')],_0x5c04f6[_0xe049('0x2d')]);_0x3f92ee[_0xe049('0x31')]=_['intersection'](_0x5c04f6[_0xe049('0x30')],qs[_0xe049('0x32')](_0x56a309['query'][_0xe049('0x32')]));_0x3f92ee['attributes']=_0x3f92ee[_0xe049('0x31')]['length']?_0x3f92ee[_0xe049('0x31')]:_0x5c04f6['model'];if(_0x56a309[_0xe049('0x2d')][_0xe049('0x3f')]){_0x3f92ee[_0xe049('0x40')]=[{'all':!![]}];}_0x3f92ee=_[_0xe049('0x3c')]({},_0x3f92ee,_0x56a309[_0xe049('0x45')]);return db['VoiceChanSpy'][_0xe049('0x46')](_0x3f92ee)[_0xe049('0x22')](handleEntityNotFound(_0x1a4707,null))[_0xe049('0x22')](respondWithResult(_0x1a4707,null))[_0xe049('0x42')](handleError(_0x1a4707,null));};exports[_0xe049('0x47')]=function(_0x3c15a2,_0x12f9b8){return db[_0xe049('0x3e')][_0xe049('0x47')](_0x3c15a2['body'],{})['then'](function(_0x478387){var _0xd1beaf=_0x3c15a2[_0xe049('0x48')][_0xe049('0x49')]({'plain':!![]});if(!_0xd1beaf)throw new Error(_0xe049('0x4a'));if(_0xd1beaf[_0xe049('0x4b')]===_0xe049('0x48')){var _0x2e4dce=_0x478387[_0xe049('0x49')]({'plain':!![]});var _0x23da27=_0xe049('0x23');return db['UserProfileSection'][_0xe049('0x46')]({'where':{'name':_0x23da27,'userProfileId':_0xd1beaf[_0xe049('0x4c')]},'raw':!![]})[_0xe049('0x22')](function(_0x4710ae){if(_0x4710ae&&_0x4710ae[_0xe049('0x4d')]===0x0){return db[_0xe049('0x4e')][_0xe049('0x47')]({'name':_0x2e4dce['name'],'resourceId':_0x2e4dce['id'],'type':_0x4710ae['name'],'sectionId':_0x4710ae['id']},{})['then'](function(){return _0x478387;});}else{return _0x478387;}})[_0xe049('0x42')](function(_0x2e508e){logger['error'](_0xe049('0x4f'),_0x2e508e);throw _0x2e508e;});}return _0x478387;})[_0xe049('0x22')](respondWithResult(_0x12f9b8,0xc9))[_0xe049('0x42')](handleError(_0x12f9b8,null));};exports[_0xe049('0x21')]=function(_0x4c3ba3,_0x5b0155){if(_0x4c3ba3[_0xe049('0x50')]['id']){delete _0x4c3ba3[_0xe049('0x50')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0x4c3ba3[_0xe049('0x44')]['id']}})['then'](handleEntityNotFound(_0x5b0155,null))[_0xe049('0x22')](saveUpdates(_0x4c3ba3[_0xe049('0x50')],null))['then'](respondWithResult(_0x5b0155,null))[_0xe049('0x42')](handleError(_0x5b0155,null));};exports['destroy']=function(_0x356605,_0x3ec963){return db['VoiceChanSpy'][_0xe049('0x46')]({'where':{'id':_0x356605[_0xe049('0x44')]['id']}})[_0xe049('0x22')](handleEntityNotFound(_0x3ec963,null))[_0xe049('0x22')](removeEntity(_0x3ec963,null))[_0xe049('0x42')](handleError(_0x3ec963,null));};
\ No newline at end of file
index 6ae4a79..64f7ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf43c=['prefix','system','push','merge','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','ChanSpy','name','options','StopMixMonitor','length','internal','User','agent','catch','exports','VoiceChanSpy','voice_chanspy','then','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','from-sip','format','%s%s'];(function(_0x69752e,_0x2579f6){var _0x506a36=function(_0x1793bc){while(--_0x1793bc){_0x69752e['push'](_0x69752e['shift']());}};_0x506a36(++_0x2579f6);}(_0xf43c,0x164));var _0xcf43=function(_0x1cad54,_0xb9e8c2){_0x1cad54=_0x1cad54-0x0;var _0x1eb043=_0xf43c[_0x1cad54];return _0x1eb043;};'use strict';var _=require(_0xcf43('0x0'));var util=require(_0xcf43('0x1'));var BPromise=require(_0xcf43('0x2'));var attributes=require(_0xcf43('0x3'));var getUserApplications=function(_0x48540d,_0xfa3a14,_0x19cb67){var _0x22ec51=0x1;var _0x5a5bf3=[];var _0x1ff507={'context':_0xfa3a14['context']||_0xcf43('0x4'),'exten':util[_0xcf43('0x5')](_0xcf43('0x6'),_0x48540d[_0xcf43('0x7')],_0x19cb67),'type':_0xcf43('0x8'),'isApp':![],'ChanSpyId':_0x48540d['id'],'UserId':_0xfa3a14['id']};_0x5a5bf3[_0xcf43('0x9')](_[_0xcf43('0xa')]({'app':_0xcf43('0xb'),'appdata':util[_0xcf43('0x5')]('CDR(type)=%s',_0xcf43('0xc')),'priority':_0x22ec51++},_0x1ff507));if(_0x48540d[_0xcf43('0xd')]){_0x5a5bf3['push'](_[_0xcf43('0xa')]({'app':_0xcf43('0xe'),'appdata':util[_0xcf43('0x5')](_0xcf43('0xf'),_0x48540d[_0xcf43('0x10')]),'priority':_0x22ec51++},_0x1ff507));}if(_0x48540d['auth']){_0x5a5bf3[_0xcf43('0x9')](_[_0xcf43('0xa')]({'app':'Authenticate','appdata':_0x48540d['password'],'priority':_0x22ec51++},_0x1ff507));}_0x5a5bf3[_0xcf43('0x9')](_[_0xcf43('0xa')]({'app':_0xcf43('0x11'),'appdata':util[_0xcf43('0x5')]('SIP/%s,%s',_0xfa3a14[_0xcf43('0x12')],_0x48540d[_0xcf43('0x13')]?_0x48540d['options']['join'](''):''),'priority':_0x22ec51++},_0x1ff507));if(_0x48540d[_0xcf43('0xd')]){_0x5a5bf3[_0xcf43('0x9')](_[_0xcf43('0xa')]({'app':_0xcf43('0x14'),'priority':_0x22ec51++},_0x1ff507));}return _0x5a5bf3;};var getChanSpyApplications=function(_0x55b1ab,_0x2ccd62){var _0x22adc7=[];for(var _0x3088e7=0x0,_0xb93458=0x1;_0x3088e7<_0x2ccd62[_0xcf43('0x15')];_0x3088e7++,_0xb93458=0x1){_0x22adc7=_0x22adc7['concat'](getUserApplications(_0x55b1ab,_0x2ccd62[_0x3088e7],_0x2ccd62[_0x3088e7][_0xcf43('0x16')]));if(_0x2ccd62[_0x3088e7][_0xcf43('0x16')]!=_0x2ccd62[_0x3088e7]['name']){_0x22adc7=_0x22adc7['concat'](getUserApplications(_0x55b1ab,_0x2ccd62[_0x3088e7],_0x2ccd62[_0x3088e7]['name']));}}return _0x22adc7;};var getChanSpyPromise=function(_0x457cc7,_0x2efec1){return new BPromise(function(_0x418112,_0x2eb9c1){return _0x457cc7[_0xcf43('0x17')]['findAll']({'attributes':['id','name',_0xcf43('0x16')],'where':{'role':_0xcf43('0x18'),'chanspy':!![]},'raw':!![]})['then'](function(_0x4e6dd9){if(_0x4e6dd9){return _0x418112(getChanSpyApplications(_0x2efec1,_0x4e6dd9));}return _0x418112([]);})[_0xcf43('0x19')](function(_0x3717cb){_0x2eb9c1(_0x3717cb);});});};module[_0xcf43('0x1a')]=function(_0x2f7442,_0x5b987a){var _0x370815=_0x2f7442['models'];return _0x2f7442['define'](_0xcf43('0x1b'),attributes,{'tableName':_0xcf43('0x1c'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x22d0ef,_0x4e4df9,_0x4e3942){return getChanSpyPromise(_0x370815,_0x22d0ef)[_0xcf43('0x1d')](function(_0x43118c){if(_0x43118c&&_0x43118c['length']){return _0x370815[_0xcf43('0x1e')][_0xcf43('0x1f')](_0x43118c);}})[_0xcf43('0x1d')](function(){_0x4e3942();})[_0xcf43('0x19')](function(_0x6df6e4){_0x4e3942(_0x6df6e4);});},'afterUpdate':function(_0x65ecc,_0xd8f502,_0x37055b){return _0x370815['VoiceExtension'][_0xcf43('0x20')]({'where':{'ChanSpyId':_0x65ecc['id']}})[_0xcf43('0x1d')](function(){return getChanSpyPromise(_0x370815,_0x65ecc);})[_0xcf43('0x1d')](function(_0x171ae4){if(_0x171ae4&&_0x171ae4[_0xcf43('0x15')]){return _0x370815[_0xcf43('0x1e')][_0xcf43('0x1f')](_0x171ae4);}})[_0xcf43('0x1d')](function(){_0x37055b();})['catch'](function(_0x469fb6){_0x37055b(_0x469fb6);});},'afterDestroy':function(_0x39ccfc,_0x479c58,_0x5f69dd){return _0x370815[_0xcf43('0x1e')]['destroy']({'where':{'ChanSpyId':_0x39ccfc['id']}})[_0xcf43('0x1d')](function(){_0x5f69dd();})[_0xcf43('0x19')](function(_0x21a8af){_0x5f69dd(_0x21a8af);});}}});};
\ No newline at end of file
+var _0xb464=['Set','format','CDR(type)=%s','chanspy','push','${UNIQUEID}.%s,a','recordingFormat','auth','merge','Authenticate','password','options','record','length','concat','internal','name','User','findAll','agent','catch','exports','define','VoiceChanSpy','voice_chanspy','then','VoiceExtension','bulkCreate','destroy','lodash','util','./voiceChanSpy.attributes','from-sip','prefix'];(function(_0x4178d9,_0x457645){var _0x4c0932=function(_0x2d678e){while(--_0x2d678e){_0x4178d9['push'](_0x4178d9['shift']());}};_0x4c0932(++_0x457645);}(_0xb464,0x1b5));var _0x4b46=function(_0x1a58cf,_0x7ce26c){_0x1a58cf=_0x1a58cf-0x0;var _0x4b30cd=_0xb464[_0x1a58cf];return _0x4b30cd;};'use strict';var _=require(_0x4b46('0x0'));var util=require(_0x4b46('0x1'));var BPromise=require('bluebird');var attributes=require(_0x4b46('0x2'));var getUserApplications=function(_0x32da56,_0x21174e,_0x3f874f){var _0x19e047=0x1;var _0x3cd9a6=[];var _0x51b58f={'context':_0x21174e['context']||_0x4b46('0x3'),'exten':util['format']('%s%s',_0x32da56[_0x4b46('0x4')],_0x3f874f),'type':'system','isApp':![],'ChanSpyId':_0x32da56['id'],'UserId':_0x21174e['id']};_0x3cd9a6['push'](_['merge']({'app':_0x4b46('0x5'),'appdata':util[_0x4b46('0x6')](_0x4b46('0x7'),_0x4b46('0x8')),'priority':_0x19e047++},_0x51b58f));if(_0x32da56['record']){_0x3cd9a6[_0x4b46('0x9')](_['merge']({'app':'MixMonitor','appdata':util['format'](_0x4b46('0xa'),_0x32da56[_0x4b46('0xb')]),'priority':_0x19e047++},_0x51b58f));}if(_0x32da56[_0x4b46('0xc')]){_0x3cd9a6[_0x4b46('0x9')](_[_0x4b46('0xd')]({'app':_0x4b46('0xe'),'appdata':_0x32da56[_0x4b46('0xf')],'priority':_0x19e047++},_0x51b58f));}_0x3cd9a6[_0x4b46('0x9')](_[_0x4b46('0xd')]({'app':'ChanSpy','appdata':util[_0x4b46('0x6')]('SIP/%s,%s',_0x21174e['name'],_0x32da56[_0x4b46('0x10')]?_0x32da56['options']['join'](''):''),'priority':_0x19e047++},_0x51b58f));if(_0x32da56[_0x4b46('0x11')]){_0x3cd9a6['push'](_[_0x4b46('0xd')]({'app':'StopMixMonitor','priority':_0x19e047++},_0x51b58f));}return _0x3cd9a6;};var getChanSpyApplications=function(_0x103a2e,_0x1d2e11){var _0x350f81=[];for(var _0x1c7880=0x0,_0x28f343=0x1;_0x1c7880<_0x1d2e11[_0x4b46('0x12')];_0x1c7880++,_0x28f343=0x1){_0x350f81=_0x350f81[_0x4b46('0x13')](getUserApplications(_0x103a2e,_0x1d2e11[_0x1c7880],_0x1d2e11[_0x1c7880][_0x4b46('0x14')]));if(_0x1d2e11[_0x1c7880][_0x4b46('0x14')]!=_0x1d2e11[_0x1c7880][_0x4b46('0x15')]){_0x350f81=_0x350f81['concat'](getUserApplications(_0x103a2e,_0x1d2e11[_0x1c7880],_0x1d2e11[_0x1c7880][_0x4b46('0x15')]));}}return _0x350f81;};var getChanSpyPromise=function(_0x395fb5,_0x11a4c4){return new BPromise(function(_0x2b94da,_0x507d95){return _0x395fb5[_0x4b46('0x16')][_0x4b46('0x17')]({'attributes':['id',_0x4b46('0x15'),'internal'],'where':{'role':_0x4b46('0x18'),'chanspy':!![]},'raw':!![]})['then'](function(_0x3101d6){if(_0x3101d6){return _0x2b94da(getChanSpyApplications(_0x11a4c4,_0x3101d6));}return _0x2b94da([]);})[_0x4b46('0x19')](function(_0x3d68b0){_0x507d95(_0x3d68b0);});});};module[_0x4b46('0x1a')]=function(_0x831bf3,_0x3b94d1){var _0xc84c2c=_0x831bf3['models'];return _0x831bf3[_0x4b46('0x1b')](_0x4b46('0x1c'),attributes,{'tableName':_0x4b46('0x1d'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2ae682,_0x4e0629,_0x4c100f){return getChanSpyPromise(_0xc84c2c,_0x2ae682)[_0x4b46('0x1e')](function(_0x55c6fb){if(_0x55c6fb&&_0x55c6fb[_0x4b46('0x12')]){return _0xc84c2c[_0x4b46('0x1f')][_0x4b46('0x20')](_0x55c6fb);}})[_0x4b46('0x1e')](function(){_0x4c100f();})['catch'](function(_0x12065b){_0x4c100f(_0x12065b);});},'afterUpdate':function(_0x396990,_0x441a04,_0x4a4710){return _0xc84c2c['VoiceExtension'][_0x4b46('0x21')]({'where':{'ChanSpyId':_0x396990['id']}})[_0x4b46('0x1e')](function(){return getChanSpyPromise(_0xc84c2c,_0x396990);})[_0x4b46('0x1e')](function(_0x23723c){if(_0x23723c&&_0x23723c[_0x4b46('0x12')]){return _0xc84c2c[_0x4b46('0x1f')][_0x4b46('0x20')](_0x23723c);}})['then'](function(){_0x4a4710();})[_0x4b46('0x19')](function(_0x1adaf4){_0x4a4710(_0x1adaf4);});},'afterDestroy':function(_0x34332e,_0x4d50c1,_0x476bb0){return _0xc84c2c[_0x4b46('0x1f')][_0x4b46('0x21')]({'where':{'ChanSpyId':_0x34332e['id']}})[_0x4b46('0x1e')](function(){_0x476bb0();})[_0x4b46('0x19')](function(_0x635479){_0x476bb0(_0x635479);});}}});};
\ No newline at end of file
index 5592e86..da76116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2b3=['error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s'];(function(_0x14f7fe,_0x5132c4){var _0x3d8309=function(_0x22f5c7){while(--_0x22f5c7){_0x14f7fe['push'](_0x14f7fe['shift']());}};_0x3d8309(++_0x5132c4);}(_0xb2b3,0x71));var _0x3b2b=function(_0x360936,_0x530626){_0x360936=_0x360936-0x0;var _0x2aec79=_0xb2b3[_0x360936];return _0x2aec79;};'use strict';var _=require(_0x3b2b('0x0'));var util=require(_0x3b2b('0x1'));var moment=require(_0x3b2b('0x2'));var BPromise=require(_0x3b2b('0x3'));var rs=require(_0x3b2b('0x4'));var fs=require('fs');var Redis=require(_0x3b2b('0x5'));var db=require(_0x3b2b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x3b2b('0x7'))(_0x3b2b('0x8'));var config=require(_0x3b2b('0x9'));var jayson=require(_0x3b2b('0xa'));var client=jayson[_0x3b2b('0xb')][_0x3b2b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x83e7ef,_0x24b585,_0x1a9054){return new BPromise(function(_0x3ec416,_0x33b807){return client[_0x3b2b('0xd')](_0x83e7ef,_0x1a9054)['then'](function(_0x430be0){logger[_0x3b2b('0xe')](_0x3b2b('0xf'),_0x24b585,_0x3b2b('0x10'));logger[_0x3b2b('0x11')](_0x3b2b('0x12'),_0x24b585,'request\x20sent',JSON['stringify'](_0x430be0));if(_0x430be0[_0x3b2b('0x13')]){if(_0x430be0[_0x3b2b('0x13')][_0x3b2b('0x14')]===0x1f4){logger[_0x3b2b('0x13')]('VoiceChanSpy,\x20%s,\x20%s',_0x24b585,_0x430be0[_0x3b2b('0x13')][_0x3b2b('0x15')]);return _0x33b807(_0x430be0[_0x3b2b('0x13')][_0x3b2b('0x15')]);}logger[_0x3b2b('0x13')](_0x3b2b('0xf'),_0x24b585,_0x430be0['error'][_0x3b2b('0x15')]);return _0x3ec416(_0x430be0[_0x3b2b('0x13')]['message']);}else{logger[_0x3b2b('0xe')](_0x3b2b('0xf'),_0x24b585,_0x3b2b('0x10'));_0x3ec416(_0x430be0['result'][_0x3b2b('0x15')]);}})['catch'](function(_0x21743d){logger[_0x3b2b('0x13')]('VoiceChanSpy,\x20%s,\x20%s',_0x24b585,_0x21743d);_0x33b807(_0x21743d);});});}
\ No newline at end of file
+var _0xdb94=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','error','message','catch'];(function(_0x400424,_0xd9239e){var _0xe96f20=function(_0x1b5aad){while(--_0x1b5aad){_0x400424['push'](_0x400424['shift']());}};_0xe96f20(++_0xd9239e);}(_0xdb94,0xab));var _0x4db9=function(_0x4946ec,_0x2b1b6a){_0x4946ec=_0x4946ec-0x0;var _0x3992f1=_0xdb94[_0x4946ec];return _0x3992f1;};'use strict';var _=require(_0x4db9('0x0'));var util=require(_0x4db9('0x1'));var moment=require(_0x4db9('0x2'));var BPromise=require(_0x4db9('0x3'));var rs=require(_0x4db9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4db9('0x5'))['db'];var utils=require(_0x4db9('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x4db9('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4db9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5d1f45,_0x196ede,_0x50c27a){return new BPromise(function(_0x14deb9,_0x26248b){return client[_0x4db9('0x9')](_0x5d1f45,_0x50c27a)[_0x4db9('0xa')](function(_0x2cacca){logger[_0x4db9('0xb')](_0x4db9('0xc'),_0x196ede,_0x4db9('0xd'));logger[_0x4db9('0xe')](_0x4db9('0xf'),_0x196ede,_0x4db9('0xd'),JSON['stringify'](_0x2cacca));if(_0x2cacca[_0x4db9('0x10')]){if(_0x2cacca[_0x4db9('0x10')]['code']===0x1f4){logger['error'](_0x4db9('0xc'),_0x196ede,_0x2cacca['error']['message']);return _0x26248b(_0x2cacca[_0x4db9('0x10')][_0x4db9('0x11')]);}logger['error'](_0x4db9('0xc'),_0x196ede,_0x2cacca[_0x4db9('0x10')][_0x4db9('0x11')]);return _0x14deb9(_0x2cacca[_0x4db9('0x10')]['message']);}else{logger['info'](_0x4db9('0xc'),_0x196ede,_0x4db9('0xd'));_0x14deb9(_0x2cacca['result'][_0x4db9('0x11')]);}})[_0x4db9('0x12')](function(_0x5d6471){logger['error'](_0x4db9('0xc'),_0x196ede,_0x5d6471);_0x26248b(_0x5d6471);});});}
\ No newline at end of file
index 0e93e61..1340875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e39=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','index','get','/:id','show','isAuthenticated','create','put'];(function(_0x7430f5,_0x5cf30e){var _0x37a041=function(_0x1bac90){while(--_0x1bac90){_0x7430f5['push'](_0x7430f5['shift']());}};_0x37a041(++_0x5cf30e);}(_0x9e39,0x153));var _0x99e3=function(_0x4b2307,_0x30b928){_0x4b2307=_0x4b2307-0x0;var _0x55a2bb=_0x9e39[_0x4b2307];return _0x55a2bb;};'use strict';var multer=require(_0x99e3('0x0'));var util=require(_0x99e3('0x1'));var path=require(_0x99e3('0x2'));var timeout=require(_0x99e3('0x3'));var express=require(_0x99e3('0x4'));var router=express[_0x99e3('0x5')]();var fs_extra=require(_0x99e3('0x6'));var auth=require(_0x99e3('0x7'));var interaction=require(_0x99e3('0x8'));var config=require(_0x99e3('0x9'));var controller=require(_0x99e3('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x99e3('0xb')]);router[_0x99e3('0xc')](_0x99e3('0xd'),auth['isAuthenticated'](),controller[_0x99e3('0xe')]);router['post']('/',auth[_0x99e3('0xf')](),controller[_0x99e3('0x10')]);router[_0x99e3('0x11')]('/:id',auth[_0x99e3('0xf')](),controller['update']);router[_0x99e3('0x12')](_0x99e3('0xd'),auth[_0x99e3('0xf')](),controller[_0x99e3('0x13')]);module[_0x99e3('0x14')]=router;
\ No newline at end of file
+var _0xe210=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','create','update','delete','exports','util','path','connect-timeout','express','Router'];(function(_0x2cd2c9,_0x21ae13){var _0xb1213b=function(_0x24093c){while(--_0x24093c){_0x2cd2c9['push'](_0x2cd2c9['shift']());}};_0xb1213b(++_0x21ae13);}(_0xe210,0xf7));var _0x0e21=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xe210[_0x164eca];return _0x2ce562;};'use strict';var multer=require('multer');var util=require(_0x0e21('0x0'));var path=require(_0x0e21('0x1'));var timeout=require(_0x0e21('0x2'));var express=require(_0x0e21('0x3'));var router=express[_0x0e21('0x4')]();var fs_extra=require(_0x0e21('0x5'));var auth=require(_0x0e21('0x6'));var interaction=require(_0x0e21('0x7'));var config=require(_0x0e21('0x8'));var controller=require('./voiceContext.controller');router[_0x0e21('0x9')]('/',auth[_0x0e21('0xa')](),controller[_0x0e21('0xb')]);router[_0x0e21('0x9')](_0x0e21('0xc'),auth[_0x0e21('0xa')](),controller[_0x0e21('0xd')]);router['post']('/',auth[_0x0e21('0xa')](),controller[_0x0e21('0xe')]);router['put'](_0x0e21('0xc'),auth[_0x0e21('0xa')](),controller[_0x0e21('0xf')]);router[_0x0e21('0x10')]('/:id',auth[_0x0e21('0xa')](),controller['destroy']);module[_0x0e21('0x11')]=router;
\ No newline at end of file
index 2467f5f..ed12f38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf595=['STRING','name','BOOLEAN'];(function(_0x4225ab,_0x15d045){var _0x32dc4b=function(_0xe4da00){while(--_0xe4da00){_0x4225ab['push'](_0x4225ab['shift']());}};_0x32dc4b(++_0x15d045);}(_0xf595,0x1cb));var _0x5f59=function(_0x366545,_0xb0e092){_0x366545=_0x366545-0x0;var _0x50eee6=_0xf595[_0x366545];return _0x50eee6;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x5f59('0x0')],'unique':_0x5f59('0x1')},'description':{'type':Sequelize[_0x5f59('0x0')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x5f59('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6861=['STRING','sequelize','exports'];(function(_0x26fec6,_0x20574e){var _0x2836fe=function(_0x48fcf0){while(--_0x48fcf0){_0x26fec6['push'](_0x26fec6['shift']());}};_0x2836fe(++_0x20574e);}(_0x6861,0x17b));var _0x1686=function(_0x4f53d8,_0x1e6db6){_0x4f53d8=_0x4f53d8-0x0;var _0x269941=_0x6861[_0x4f53d8];return _0x269941;};'use strict';var Sequelize=require(_0x1686('0x0'));module[_0x1686('0x1')]={'name':{'type':Sequelize[_0x1686('0x2')],'unique':'name'},'description':{'type':Sequelize[_0x1686('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 8c807d7..03a853a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d8=['fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','pick','filter','merge','where','map','options','VoiceContext','includeAll','include','findAll','rows','params','keys','create','body','join','root','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','readFileSync','server/files/templates/context.ejs','writeFileSync','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','get','Contexts','UserProfileResource','destroy','stack','name','send','index','rawAttributes'];(function(_0x3882e4,_0x2cd2cd){var _0x359fea=function(_0x3ce1f4){while(--_0x3ce1f4){_0x3882e4['push'](_0x3882e4['shift']());}};_0x359fea(++_0x2cd2cd);}(_0x86d8,0x1d2));var _0x886d=function(_0x12006d,_0x5c4429){_0x12006d=_0x12006d-0x0;var _0x1bb9e7=_0x86d8[_0x12006d];return _0x1bb9e7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x886d('0x0'));var zipdir=require(_0x886d('0x1'));var jsonpatch=require(_0x886d('0x2'));var rp=require(_0x886d('0x3'));var moment=require('moment');var BPromise=require(_0x886d('0x4'));var Mustache=require(_0x886d('0x5'));var util=require('util');var path=require(_0x886d('0x6'));var sox=require(_0x886d('0x7'));var csv=require(_0x886d('0x8'));var ejs=require(_0x886d('0x9'));var fs=require('fs');var fs_extra=require(_0x886d('0xa'));var _=require(_0x886d('0xb'));var squel=require(_0x886d('0xc'));var crypto=require(_0x886d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x886d('0xe'));var toCsv=require(_0x886d('0x8'));var querystring=require(_0x886d('0xf'));var Papa=require(_0x886d('0x10'));var Redis=require('ioredis');var authService=require(_0x886d('0x11'));var qs=require(_0x886d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x886d('0x13'));var logger=require(_0x886d('0x14'))(_0x886d('0x15'));var utils=require(_0x886d('0x16'));var config=require(_0x886d('0x17'));var licenseUtil=require(_0x886d('0x18'));var db=require(_0x886d('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x886d('0x1a')][_0x886d('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x5ab327,_0x19a685,_0x45ce2a,_0x48384e){return new BPromise(function(_0x2ac48a,_0x4a22eb){var _0x24109b=_0x48384e||client;return _0x24109b[_0x886d('0x1c')](_0x5ab327,_0x45ce2a)[_0x886d('0x1d')](function(_0x592e92){logger[_0x886d('0x1e')](_0x886d('0x1f'),_0x19a685,_0x886d('0x20'));logger[_0x886d('0x21')](_0x886d('0x22'),_0x19a685,'request\x20sent',JSON[_0x886d('0x23')](_0x592e92));if(_0x592e92['error']){if(_0x592e92[_0x886d('0x24')][_0x886d('0x25')]===0x1f4){logger[_0x886d('0x24')](_0x886d('0x1f'),_0x19a685,_0x592e92[_0x886d('0x24')]['message']);return _0x4a22eb(_0x592e92[_0x886d('0x24')][_0x886d('0x26')]);}logger[_0x886d('0x24')](_0x886d('0x1f'),_0x19a685,_0x592e92[_0x886d('0x24')][_0x886d('0x26')]);return _0x2ac48a(_0x592e92['error']['message']);}else{logger[_0x886d('0x1e')](_0x886d('0x1f'),_0x19a685,_0x886d('0x20'));_0x2ac48a(_0x592e92[_0x886d('0x27')]['message']);}})[_0x886d('0x28')](function(_0x373f1c){logger[_0x886d('0x24')]('VoiceContext,\x20%s,\x20%s',_0x19a685,_0x373f1c);_0x4a22eb(_0x373f1c);});});}function respondWithStatusCode(_0x4f4e40,_0x4fa27c){_0x4fa27c=_0x4fa27c||0xcc;return function(_0x296a52){if(_0x296a52){return _0x4f4e40[_0x886d('0x29')](_0x4fa27c);}return _0x4f4e40[_0x886d('0x2a')](_0x4fa27c)[_0x886d('0x2b')]();};}function respondWithResult(_0x337c5f,_0x4539c5){_0x4539c5=_0x4539c5||0xc8;return function(_0x2e5b8b){if(_0x2e5b8b){return _0x337c5f[_0x886d('0x2a')](_0x4539c5)['json'](_0x2e5b8b);}};}function respondWithFilteredResult(_0x26f64c,_0x27db22){return function(_0x36a176){if(_0x36a176){var _0x2d47a9=typeof _0x27db22[_0x886d('0x2c')]===_0x886d('0x2d')&&typeof _0x27db22[_0x886d('0x2e')]===_0x886d('0x2d');var _0x414bf4=_0x36a176['count'];var _0x4b2dc=_0x2d47a9?0x0:_0x27db22[_0x886d('0x2c')];var _0x3d29f8=_0x2d47a9?_0x36a176[_0x886d('0x2f')]:_0x27db22[_0x886d('0x2c')]+_0x27db22['limit'];var _0x454938;if(_0x3d29f8>=_0x414bf4){_0x3d29f8=_0x414bf4;_0x454938=0xc8;}else{_0x454938=0xce;}_0x26f64c[_0x886d('0x2a')](_0x454938);return _0x26f64c[_0x886d('0x30')](_0x886d('0x31'),_0x4b2dc+'-'+_0x3d29f8+'/'+_0x414bf4)[_0x886d('0x32')](_0x36a176);}return null;};}function patchUpdates(_0x1df4b4){return function(_0x52ff78){try{jsonpatch[_0x886d('0x33')](_0x52ff78,_0x1df4b4,!![]);}catch(_0x17ed5d){return BPromise[_0x886d('0x34')](_0x17ed5d);}return _0x52ff78[_0x886d('0x35')]();};}function saveUpdates(_0x33437c,_0x24efd5){return function(_0xbad801){if(_0xbad801){return _0xbad801[_0x886d('0x36')](_0x33437c)['then'](function(_0x56420a){return _0x56420a;});}return null;};}function removeEntity(_0x313c3c,_0x2bb832){return function(_0x27f26c){if(_0x27f26c){return _0x27f26c['destroy']()[_0x886d('0x1d')](function(){var _0x56d366=_0x27f26c[_0x886d('0x37')]({'plain':!![]});var _0x1a23b0=_0x886d('0x38');return db[_0x886d('0x39')][_0x886d('0x3a')]({'where':{'type':_0x1a23b0,'resourceId':_0x56d366['id']}})[_0x886d('0x1d')](function(){return _0x27f26c;});})['then'](function(){_0x313c3c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x47e783,_0x2f4e60){return function(_0x19026d){if(!_0x19026d){_0x47e783[_0x886d('0x29')](0x194);}return _0x19026d;};}function handleError(_0x1d2d49,_0x201ce3){_0x201ce3=_0x201ce3||0x1f4;return function(_0x15da39){logger[_0x886d('0x24')](_0x15da39[_0x886d('0x3b')]);if(_0x15da39[_0x886d('0x3c')]){delete _0x15da39[_0x886d('0x3c')];}_0x1d2d49[_0x886d('0x2a')](_0x201ce3)[_0x886d('0x3d')](_0x15da39);};}exports[_0x886d('0x3e')]=function(_0x431bf2,_0x4f153e){var _0x28e8eb={},_0x2f75cf={},_0x2ba17e={'count':0x0,'rows':[]};var _0x410da9=_['map'](db['VoiceContext'][_0x886d('0x3f')],function(_0x57e21e){return{'name':_0x57e21e[_0x886d('0x40')],'type':_0x57e21e[_0x886d('0x41')][_0x886d('0x42')]};});_0x2f75cf[_0x886d('0x43')]=_['map'](_0x410da9,_0x886d('0x3c'));_0x2f75cf['query']=_['keys'](_0x431bf2[_0x886d('0x44')]);_0x2f75cf[_0x886d('0x45')]=_[_0x886d('0x46')](_0x2f75cf[_0x886d('0x43')],_0x2f75cf[_0x886d('0x44')]);_0x28e8eb['attributes']=_[_0x886d('0x46')](_0x2f75cf[_0x886d('0x43')],qs[_0x886d('0x47')](_0x431bf2[_0x886d('0x44')][_0x886d('0x47')]));_0x28e8eb[_0x886d('0x48')]=_0x28e8eb[_0x886d('0x48')][_0x886d('0x49')]?_0x28e8eb[_0x886d('0x48')]:_0x2f75cf['model'];if(!_0x431bf2[_0x886d('0x44')][_0x886d('0x4a')]('nolimit')){_0x28e8eb[_0x886d('0x2e')]=qs[_0x886d('0x2e')](_0x431bf2[_0x886d('0x44')][_0x886d('0x2e')]);_0x28e8eb[_0x886d('0x2c')]=qs[_0x886d('0x2c')](_0x431bf2[_0x886d('0x44')]['offset']);}_0x28e8eb['order']=qs[_0x886d('0x4b')](_0x431bf2['query']['sort']);_0x28e8eb['where']=qs[_0x886d('0x45')](_[_0x886d('0x4c')](_0x431bf2[_0x886d('0x44')],_0x2f75cf[_0x886d('0x45')]),_0x410da9);if(_0x431bf2[_0x886d('0x44')][_0x886d('0x4d')]){_0x28e8eb['where']=_[_0x886d('0x4e')](_0x28e8eb[_0x886d('0x4f')],{'$or':_[_0x886d('0x50')](_0x410da9,function(_0x1cd8f7){if(_0x1cd8f7[_0x886d('0x41')]!=='VIRTUAL'){var _0x530640={};_0x530640[_0x1cd8f7[_0x886d('0x3c')]]={'$like':'%'+_0x431bf2['query']['filter']+'%'};return _0x530640;}})});}_0x28e8eb=_['merge']({},_0x28e8eb,_0x431bf2[_0x886d('0x51')]);var _0x21509f={'where':_0x28e8eb[_0x886d('0x4f')]};return db[_0x886d('0x52')][_0x886d('0x2f')](_0x21509f)[_0x886d('0x1d')](function(_0x3770ef){_0x2ba17e[_0x886d('0x2f')]=_0x3770ef;if(_0x431bf2[_0x886d('0x44')][_0x886d('0x53')]){_0x28e8eb[_0x886d('0x54')]=[{'all':!![]}];}return db['VoiceContext'][_0x886d('0x55')](_0x28e8eb);})[_0x886d('0x1d')](function(_0x65c840){_0x2ba17e[_0x886d('0x56')]=_0x65c840;return _0x2ba17e;})[_0x886d('0x1d')](respondWithFilteredResult(_0x4f153e,_0x28e8eb))['catch'](handleError(_0x4f153e,null));};exports['show']=function(_0x4c9d50,_0x82b73c){var _0x454fb5={'raw':![],'where':{'id':_0x4c9d50[_0x886d('0x57')]['id']}},_0x574b0b={};_0x574b0b['model']=_[_0x886d('0x58')](db[_0x886d('0x52')][_0x886d('0x3f')]);_0x574b0b['query']=_[_0x886d('0x58')](_0x4c9d50[_0x886d('0x44')]);_0x574b0b[_0x886d('0x45')]=_[_0x886d('0x46')](_0x574b0b[_0x886d('0x43')],_0x574b0b['query']);_0x454fb5[_0x886d('0x48')]=_[_0x886d('0x46')](_0x574b0b['model'],qs['fields'](_0x4c9d50[_0x886d('0x44')][_0x886d('0x47')]));_0x454fb5['attributes']=_0x454fb5[_0x886d('0x48')]['length']?_0x454fb5['attributes']:_0x574b0b['model'];if(_0x4c9d50['query']['includeAll']){_0x454fb5['include']=[{'all':!![]}];}_0x454fb5=_['merge']({},_0x454fb5,_0x4c9d50['options']);return db[_0x886d('0x52')]['find'](_0x454fb5)[_0x886d('0x1d')](handleEntityNotFound(_0x82b73c,null))[_0x886d('0x1d')](respondWithResult(_0x82b73c,null))[_0x886d('0x28')](handleError(_0x82b73c,null));};exports[_0x886d('0x59')]=function(_0x32d4a0,_0x29a317,_0x236315){var _0x4987de;return db['VoiceContext'][_0x886d('0x59')](_0x32d4a0[_0x886d('0x5a')],{'raw':!![]})[_0x886d('0x1d')](function(_0x254c46){_0x4987de=_0x254c46;return db[_0x886d('0x52')][_0x886d('0x55')]({'raw':!![]});})[_0x886d('0x1d')](function(_0x2c4c25){var _0x1ef9ad=fs['readFileSync'](path[_0x886d('0x5b')](config[_0x886d('0x5c')],'server/files/templates/context.ejs'),_0x886d('0x5d'));var _0x93cc86=ejs[_0x886d('0x5e')](_0x1ef9ad,{'contexts':_0x2c4c25||[]});fs['writeFileSync'](_0x886d('0x5f'),_0x93cc86);})[_0x886d('0x1d')](function(){return respondWithRpcPromise(_0x886d('0x60'),'create',{'module':_0x886d('0x61')});})[_0x886d('0x1d')](function(){var _0x13649e=_0x32d4a0['user'][_0x886d('0x37')]({'plain':!![]});if(!_0x13649e)throw new Error(_0x886d('0x62'));if(_0x13649e['role']==='user'){var _0x344a49=_0x4987de['get']({'plain':!![]});return db[_0x886d('0x63')][_0x886d('0x64')]({'where':{'name':'Contexts','userProfileId':_0x13649e[_0x886d('0x65')]},'raw':!![]})[_0x886d('0x1d')](function(_0x5b803e){if(_0x5b803e&&_0x5b803e[_0x886d('0x66')]===0x0){return db[_0x886d('0x39')][_0x886d('0x59')]({'name':_0x344a49['name'],'resourceId':_0x344a49['id'],'type':_0x5b803e[_0x886d('0x3c')],'sectionId':_0x5b803e['id']},{})['then'](function(){return _0x4987de;});}else{return _0x4987de;}})[_0x886d('0x28')](function(_0x23cae5){logger[_0x886d('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x23cae5);throw _0x23cae5;});}return _0x4987de;})[_0x886d('0x1d')](respondWithResult(_0x29a317,0xc9))[_0x886d('0x28')](handleError(_0x29a317,null));};exports[_0x886d('0x36')]=function(_0x2bf503,_0x448c5e,_0xdfc5e5){var _0x421e79;return db[_0x886d('0x52')][_0x886d('0x64')]({'where':{'id':_0x2bf503[_0x886d('0x57')]['id']}})['then'](handleEntityNotFound(_0x448c5e,null))[_0x886d('0x1d')](saveUpdates(_0x2bf503[_0x886d('0x5a')],null))['then'](function(_0xcba9b7){if(_0xcba9b7){_0x421e79=_0xcba9b7;return db[_0x886d('0x52')][_0x886d('0x55')]({'raw':!![]});}})[_0x886d('0x1d')](function(_0x24e96a){var _0x37edaf=fs[_0x886d('0x67')](path[_0x886d('0x5b')](config['root'],_0x886d('0x68')),_0x886d('0x5d'));var _0x519ed7=ejs[_0x886d('0x5e')](_0x37edaf,{'contexts':_0x24e96a||[]});fs[_0x886d('0x69')](_0x886d('0x5f'),_0x519ed7);})[_0x886d('0x1d')](function(){return respondWithRpcPromise('Reload',_0x886d('0x36'),{'module':_0x886d('0x61')});})[_0x886d('0x1d')](function(){return _0x421e79;})[_0x886d('0x1d')](respondWithResult(_0x448c5e,null))['catch'](handleError(_0x448c5e,null));};exports[_0x886d('0x3a')]=function(_0x457d1d,_0x3958d8,_0x3799d4){var _0x1d5bc9;return db['VoiceContext']['find']({'where':{'id':_0x457d1d[_0x886d('0x57')]['id']}})[_0x886d('0x1d')](handleEntityNotFound(_0x3958d8,null))['then'](removeEntity(_0x3958d8,null))[_0x886d('0x1d')](function(){return db[_0x886d('0x52')]['findAll']({'raw':!![]});})[_0x886d('0x1d')](function(_0x5336d2){var _0x2a4579=fs[_0x886d('0x67')](path['join'](config[_0x886d('0x5c')],_0x886d('0x68')),'utf8');var _0x5dafc0=ejs[_0x886d('0x5e')](_0x2a4579,{'contexts':_0x5336d2});fs[_0x886d('0x69')](_0x886d('0x5f'),_0x5dafc0);return respondWithRpcPromise('Reload',_0x886d('0x3a'),{'module':'chan_sip.so'});})[_0x886d('0x28')](handleError(_0x3958d8,null));};
\ No newline at end of file
+var _0x4eba=['../../config/license/util','jayson/promise','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','offset','limit','count','set','Content-Range','json','apply','reject','save','destroy','get','Contexts','stack','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','name','filter','merge','options','VoiceContext','includeAll','include','rows','show','params','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','writeFileSync','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','findAll','/etc/asterisk/extensions_xcally_contexts.conf','update','render','eml-format','rimraf','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x5c9503,_0x37ec93){var _0xd8cee2=function(_0x56de0d){while(--_0x56de0d){_0x5c9503['push'](_0x5c9503['shift']());}};_0xd8cee2(++_0x37ec93);}(_0x4eba,0x1e8));var _0xa4eb=function(_0x228811,_0x5837e3){_0x228811=_0x228811-0x0;var _0x26a0b7=_0x4eba[_0x228811];return _0x26a0b7;};'use strict';var emlformat=require(_0xa4eb('0x0'));var rimraf=require(_0xa4eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa4eb('0x2'));var Mustache=require(_0xa4eb('0x3'));var util=require(_0xa4eb('0x4'));var path=require(_0xa4eb('0x5'));var sox=require('sox');var csv=require(_0xa4eb('0x6'));var ejs=require(_0xa4eb('0x7'));var fs=require('fs');var fs_extra=require(_0xa4eb('0x8'));var _=require('lodash');var squel=require(_0xa4eb('0x9'));var crypto=require(_0xa4eb('0xa'));var jsforce=require(_0xa4eb('0xb'));var deskjs=require(_0xa4eb('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa4eb('0xd'));var Papa=require('papaparse');var Redis=require(_0xa4eb('0xe'));var authService=require(_0xa4eb('0xf'));var qs=require(_0xa4eb('0x10'));var as=require(_0xa4eb('0x11'));var hardwareService=require(_0xa4eb('0x12'));var logger=require(_0xa4eb('0x13'))(_0xa4eb('0x14'));var utils=require(_0xa4eb('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa4eb('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0xa4eb('0x17'));var client=jayson['client'][_0xa4eb('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x455bb7,_0x4f739e,_0x3849a6,_0x42d18c){return new BPromise(function(_0x2095e0,_0xd95254){var _0x5f8a17=_0x42d18c||client;return _0x5f8a17['request'](_0x455bb7,_0x3849a6)[_0xa4eb('0x19')](function(_0x13bf79){logger[_0xa4eb('0x1a')](_0xa4eb('0x1b'),_0x4f739e,_0xa4eb('0x1c'));logger['debug'](_0xa4eb('0x1d'),_0x4f739e,'request\x20sent',JSON[_0xa4eb('0x1e')](_0x13bf79));if(_0x13bf79[_0xa4eb('0x1f')]){if(_0x13bf79[_0xa4eb('0x1f')][_0xa4eb('0x20')]===0x1f4){logger[_0xa4eb('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x4f739e,_0x13bf79[_0xa4eb('0x1f')][_0xa4eb('0x21')]);return _0xd95254(_0x13bf79['error'][_0xa4eb('0x21')]);}logger[_0xa4eb('0x1f')](_0xa4eb('0x1b'),_0x4f739e,_0x13bf79[_0xa4eb('0x1f')][_0xa4eb('0x21')]);return _0x2095e0(_0x13bf79[_0xa4eb('0x1f')][_0xa4eb('0x21')]);}else{logger[_0xa4eb('0x1a')](_0xa4eb('0x1b'),_0x4f739e,_0xa4eb('0x1c'));_0x2095e0(_0x13bf79['result'][_0xa4eb('0x21')]);}})[_0xa4eb('0x22')](function(_0x2aa97d){logger[_0xa4eb('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x4f739e,_0x2aa97d);_0xd95254(_0x2aa97d);});});}function respondWithStatusCode(_0x386ccd,_0x1fb247){_0x1fb247=_0x1fb247||0xcc;return function(_0x5cdc47){if(_0x5cdc47){return _0x386ccd[_0xa4eb('0x23')](_0x1fb247);}return _0x386ccd[_0xa4eb('0x24')](_0x1fb247)['end']();};}function respondWithResult(_0x3cec75,_0x1e9603){_0x1e9603=_0x1e9603||0xc8;return function(_0x4cae44){if(_0x4cae44){return _0x3cec75[_0xa4eb('0x24')](_0x1e9603)['json'](_0x4cae44);}};}function respondWithFilteredResult(_0x4e40c3,_0x3e1b3c){return function(_0x153e1a){if(_0x153e1a){var _0x15a211=typeof _0x3e1b3c[_0xa4eb('0x25')]==='undefined'&&typeof _0x3e1b3c[_0xa4eb('0x26')]==='undefined';var _0x312662=_0x153e1a[_0xa4eb('0x27')];var _0x172653=_0x15a211?0x0:_0x3e1b3c[_0xa4eb('0x25')];var _0x40108f=_0x15a211?_0x153e1a['count']:_0x3e1b3c[_0xa4eb('0x25')]+_0x3e1b3c[_0xa4eb('0x26')];var _0x5f04a2;if(_0x40108f>=_0x312662){_0x40108f=_0x312662;_0x5f04a2=0xc8;}else{_0x5f04a2=0xce;}_0x4e40c3['status'](_0x5f04a2);return _0x4e40c3[_0xa4eb('0x28')](_0xa4eb('0x29'),_0x172653+'-'+_0x40108f+'/'+_0x312662)[_0xa4eb('0x2a')](_0x153e1a);}return null;};}function patchUpdates(_0xfae15){return function(_0x573fa6){try{jsonpatch[_0xa4eb('0x2b')](_0x573fa6,_0xfae15,!![]);}catch(_0x1fb872){return BPromise[_0xa4eb('0x2c')](_0x1fb872);}return _0x573fa6[_0xa4eb('0x2d')]();};}function saveUpdates(_0x4f1f17,_0x37517f){return function(_0x225374){if(_0x225374){return _0x225374['update'](_0x4f1f17)['then'](function(_0xae1c33){return _0xae1c33;});}return null;};}function removeEntity(_0x2225c6,_0x1950ac){return function(_0x291cc7){if(_0x291cc7){return _0x291cc7[_0xa4eb('0x2e')]()[_0xa4eb('0x19')](function(){var _0x441a78=_0x291cc7[_0xa4eb('0x2f')]({'plain':!![]});var _0x50c1e0=_0xa4eb('0x30');return db['UserProfileResource'][_0xa4eb('0x2e')]({'where':{'type':_0x50c1e0,'resourceId':_0x441a78['id']}})[_0xa4eb('0x19')](function(){return _0x291cc7;});})['then'](function(){_0x2225c6[_0xa4eb('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27676f,_0x28c161){return function(_0x2c57d9){if(!_0x2c57d9){_0x27676f[_0xa4eb('0x23')](0x194);}return _0x2c57d9;};}function handleError(_0x2bddc5,_0x51c278){_0x51c278=_0x51c278||0x1f4;return function(_0xac3900){logger[_0xa4eb('0x1f')](_0xac3900[_0xa4eb('0x31')]);if(_0xac3900['name']){delete _0xac3900['name'];}_0x2bddc5[_0xa4eb('0x24')](_0x51c278)[_0xa4eb('0x32')](_0xac3900);};}exports[_0xa4eb('0x33')]=function(_0x13385b,_0x245e35){var _0x4805f4={},_0x4320fc={},_0x33469e={'count':0x0,'rows':[]};var _0x5b835a=_[_0xa4eb('0x34')](db['VoiceContext'][_0xa4eb('0x35')],function(_0x556f15){return{'name':_0x556f15[_0xa4eb('0x36')],'type':_0x556f15[_0xa4eb('0x37')][_0xa4eb('0x38')]};});_0x4320fc[_0xa4eb('0x39')]=_[_0xa4eb('0x34')](_0x5b835a,'name');_0x4320fc[_0xa4eb('0x3a')]=_[_0xa4eb('0x3b')](_0x13385b[_0xa4eb('0x3a')]);_0x4320fc[_0xa4eb('0x3c')]=_['intersection'](_0x4320fc[_0xa4eb('0x39')],_0x4320fc[_0xa4eb('0x3a')]);_0x4805f4[_0xa4eb('0x3d')]=_[_0xa4eb('0x3e')](_0x4320fc['model'],qs[_0xa4eb('0x3f')](_0x13385b['query']['fields']));_0x4805f4[_0xa4eb('0x3d')]=_0x4805f4[_0xa4eb('0x3d')][_0xa4eb('0x40')]?_0x4805f4['attributes']:_0x4320fc[_0xa4eb('0x39')];if(!_0x13385b[_0xa4eb('0x3a')][_0xa4eb('0x41')](_0xa4eb('0x42'))){_0x4805f4['limit']=qs[_0xa4eb('0x26')](_0x13385b[_0xa4eb('0x3a')][_0xa4eb('0x26')]);_0x4805f4[_0xa4eb('0x25')]=qs[_0xa4eb('0x25')](_0x13385b[_0xa4eb('0x3a')][_0xa4eb('0x25')]);}_0x4805f4[_0xa4eb('0x43')]=qs[_0xa4eb('0x44')](_0x13385b['query']['sort']);_0x4805f4[_0xa4eb('0x45')]=qs['filters'](_[_0xa4eb('0x46')](_0x13385b[_0xa4eb('0x3a')],_0x4320fc[_0xa4eb('0x3c')]),_0x5b835a);if(_0x13385b[_0xa4eb('0x3a')]['filter']){_0x4805f4[_0xa4eb('0x45')]=_['merge'](_0x4805f4['where'],{'$or':_[_0xa4eb('0x34')](_0x5b835a,function(_0x3ca65d){if(_0x3ca65d[_0xa4eb('0x37')]!==_0xa4eb('0x47')){var _0xd61471={};_0xd61471[_0x3ca65d[_0xa4eb('0x48')]]={'$like':'%'+_0x13385b[_0xa4eb('0x3a')][_0xa4eb('0x49')]+'%'};return _0xd61471;}})});}_0x4805f4=_[_0xa4eb('0x4a')]({},_0x4805f4,_0x13385b[_0xa4eb('0x4b')]);var _0x40b7d2={'where':_0x4805f4[_0xa4eb('0x45')]};return db[_0xa4eb('0x4c')][_0xa4eb('0x27')](_0x40b7d2)[_0xa4eb('0x19')](function(_0x402db1){_0x33469e['count']=_0x402db1;if(_0x13385b[_0xa4eb('0x3a')][_0xa4eb('0x4d')]){_0x4805f4[_0xa4eb('0x4e')]=[{'all':!![]}];}return db['VoiceContext']['findAll'](_0x4805f4);})[_0xa4eb('0x19')](function(_0x38fc81){_0x33469e[_0xa4eb('0x4f')]=_0x38fc81;return _0x33469e;})[_0xa4eb('0x19')](respondWithFilteredResult(_0x245e35,_0x4805f4))['catch'](handleError(_0x245e35,null));};exports[_0xa4eb('0x50')]=function(_0x5f57ad,_0xf760b6){var _0xfc80a2={'raw':![],'where':{'id':_0x5f57ad[_0xa4eb('0x51')]['id']}},_0x20ecc3={};_0x20ecc3[_0xa4eb('0x39')]=_[_0xa4eb('0x3b')](db['VoiceContext'][_0xa4eb('0x35')]);_0x20ecc3['query']=_[_0xa4eb('0x3b')](_0x5f57ad['query']);_0x20ecc3[_0xa4eb('0x3c')]=_[_0xa4eb('0x3e')](_0x20ecc3[_0xa4eb('0x39')],_0x20ecc3[_0xa4eb('0x3a')]);_0xfc80a2[_0xa4eb('0x3d')]=_[_0xa4eb('0x3e')](_0x20ecc3[_0xa4eb('0x39')],qs[_0xa4eb('0x3f')](_0x5f57ad[_0xa4eb('0x3a')]['fields']));_0xfc80a2[_0xa4eb('0x3d')]=_0xfc80a2[_0xa4eb('0x3d')][_0xa4eb('0x40')]?_0xfc80a2['attributes']:_0x20ecc3[_0xa4eb('0x39')];if(_0x5f57ad[_0xa4eb('0x3a')][_0xa4eb('0x4d')]){_0xfc80a2['include']=[{'all':!![]}];}_0xfc80a2=_[_0xa4eb('0x4a')]({},_0xfc80a2,_0x5f57ad[_0xa4eb('0x4b')]);return db[_0xa4eb('0x4c')][_0xa4eb('0x52')](_0xfc80a2)[_0xa4eb('0x19')](handleEntityNotFound(_0xf760b6,null))[_0xa4eb('0x19')](respondWithResult(_0xf760b6,null))[_0xa4eb('0x22')](handleError(_0xf760b6,null));};exports[_0xa4eb('0x53')]=function(_0x20cdfe,_0x2faffc,_0x3c509e){var _0x14ea39;return db[_0xa4eb('0x4c')]['create'](_0x20cdfe[_0xa4eb('0x54')],{'raw':!![]})[_0xa4eb('0x19')](function(_0x3980f3){_0x14ea39=_0x3980f3;return db[_0xa4eb('0x4c')]['findAll']({'raw':!![]});})[_0xa4eb('0x19')](function(_0x5b3ccd){var _0x374303=fs[_0xa4eb('0x55')](path[_0xa4eb('0x56')](config[_0xa4eb('0x57')],_0xa4eb('0x58')),_0xa4eb('0x59'));var _0x1a6ed8=ejs['render'](_0x374303,{'contexts':_0x5b3ccd||[]});fs[_0xa4eb('0x5a')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x1a6ed8);})[_0xa4eb('0x19')](function(){return respondWithRpcPromise(_0xa4eb('0x5b'),'create',{'module':_0xa4eb('0x5c')});})[_0xa4eb('0x19')](function(){var _0x48b36e=_0x20cdfe[_0xa4eb('0x5d')][_0xa4eb('0x2f')]({'plain':!![]});if(!_0x48b36e)throw new Error(_0xa4eb('0x5e'));if(_0x48b36e[_0xa4eb('0x5f')]===_0xa4eb('0x5d')){var _0x45db42=_0x14ea39[_0xa4eb('0x2f')]({'plain':!![]});return db['UserProfileSection'][_0xa4eb('0x52')]({'where':{'name':_0xa4eb('0x30'),'userProfileId':_0x48b36e['userProfileId']},'raw':!![]})[_0xa4eb('0x19')](function(_0x543167){if(_0x543167&&_0x543167[_0xa4eb('0x60')]===0x0){return db[_0xa4eb('0x61')]['create']({'name':_0x45db42[_0xa4eb('0x48')],'resourceId':_0x45db42['id'],'type':_0x543167[_0xa4eb('0x48')],'sectionId':_0x543167['id']},{})[_0xa4eb('0x19')](function(){return _0x14ea39;});}else{return _0x14ea39;}})[_0xa4eb('0x22')](function(_0x3a67b9){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3a67b9);throw _0x3a67b9;});}return _0x14ea39;})['then'](respondWithResult(_0x2faffc,0xc9))[_0xa4eb('0x22')](handleError(_0x2faffc,null));};exports['update']=function(_0x4b0423,_0x344e9c,_0x20f902){var _0x5f1779;return db[_0xa4eb('0x4c')][_0xa4eb('0x52')]({'where':{'id':_0x4b0423['params']['id']}})['then'](handleEntityNotFound(_0x344e9c,null))['then'](saveUpdates(_0x4b0423['body'],null))[_0xa4eb('0x19')](function(_0x17a9ac){if(_0x17a9ac){_0x5f1779=_0x17a9ac;return db[_0xa4eb('0x4c')][_0xa4eb('0x62')]({'raw':!![]});}})[_0xa4eb('0x19')](function(_0x58a1d0){var _0x2d96a5=fs['readFileSync'](path['join'](config[_0xa4eb('0x57')],_0xa4eb('0x58')),_0xa4eb('0x59'));var _0x237472=ejs['render'](_0x2d96a5,{'contexts':_0x58a1d0||[]});fs[_0xa4eb('0x5a')](_0xa4eb('0x63'),_0x237472);})['then'](function(){return respondWithRpcPromise(_0xa4eb('0x5b'),_0xa4eb('0x64'),{'module':_0xa4eb('0x5c')});})[_0xa4eb('0x19')](function(){return _0x5f1779;})[_0xa4eb('0x19')](respondWithResult(_0x344e9c,null))[_0xa4eb('0x22')](handleError(_0x344e9c,null));};exports['destroy']=function(_0x1cea45,_0x9aa201,_0x207898){var _0x2845b8;return db['VoiceContext']['find']({'where':{'id':_0x1cea45[_0xa4eb('0x51')]['id']}})[_0xa4eb('0x19')](handleEntityNotFound(_0x9aa201,null))['then'](removeEntity(_0x9aa201,null))['then'](function(){return db[_0xa4eb('0x4c')][_0xa4eb('0x62')]({'raw':!![]});})[_0xa4eb('0x19')](function(_0x48cf81){var _0x50d053=fs[_0xa4eb('0x55')](path[_0xa4eb('0x56')](config[_0xa4eb('0x57')],_0xa4eb('0x58')),_0xa4eb('0x59'));var _0x2dbc50=ejs[_0xa4eb('0x65')](_0x50d053,{'contexts':_0x48cf81});fs[_0xa4eb('0x5a')](_0xa4eb('0x63'),_0x2dbc50);return respondWithRpcPromise(_0xa4eb('0x5b'),'destroy',{'module':_0xa4eb('0x5c')});})[_0xa4eb('0x22')](handleError(_0x9aa201,null));};
\ No newline at end of file
index ad988b6..295bf9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfab=['api','moment','bluebird','rimraf','../../config/environment','exports','define','VoiceContext','voice_contexts','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdfab,0x18f));var _0xbdfa=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0xdfab[_0x4b2863];return _0x567d67;};'use strict';var _=require(_0xbdfa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xbdfa('0x1'));var moment=require(_0xbdfa('0x2'));var BPromise=require(_0xbdfa('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbdfa('0x4'));var config=require(_0xbdfa('0x5'));var attributes=require('./voiceContext.attributes');module[_0xbdfa('0x6')]=function(_0x7baab8,_0xe26b2b){return _0x7baab8[_0xbdfa('0x7')](_0xbdfa('0x8'),attributes,{'tableName':_0xbdfa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a21=['../../config/environment','./voiceContext.attributes','define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x1c6471,_0x29f86e){var _0x474a68=function(_0x2a14d4){while(--_0x2a14d4){_0x1c6471['push'](_0x1c6471['shift']());}};_0x474a68(++_0x29f86e);}(_0x7a21,0x1c8));var _0x17a2=function(_0xa072c1,_0x1eecab){_0xa072c1=_0xa072c1-0x0;var _0x5c6866=_0x7a21[_0xa072c1];return _0x5c6866;};'use strict';var _=require(_0x17a2('0x0'));var util=require(_0x17a2('0x1'));var logger=require(_0x17a2('0x2'))(_0x17a2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x17a2('0x4'));var fs=require('fs');var path=require(_0x17a2('0x5'));var rimraf=require('rimraf');var config=require(_0x17a2('0x6'));var attributes=require(_0x17a2('0x7'));module['exports']=function(_0x27bf1b,_0x55fd41){return _0x27bf1b[_0x17a2('0x8')](_0x17a2('0x9'),attributes,{'tableName':_0x17a2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c1766f..31ef667 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0dd=['../../config/utils','../../config/logger','jayson/promise','client','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xe0dd,0x163));var _0xde0d=function(_0x3ceb54,_0x5bddfd){_0x3ceb54=_0x3ceb54-0x0;var _0x26d8a6=_0xe0dd[_0x3ceb54];return _0x26d8a6;};'use strict';var _=require(_0xde0d('0x0'));var util=require(_0xde0d('0x1'));var moment=require('moment');var BPromise=require(_0xde0d('0x2'));var rs=require(_0xde0d('0x3'));var fs=require('fs');var Redis=require(_0xde0d('0x4'));var db=require(_0xde0d('0x5'))['db'];var utils=require(_0xde0d('0x6'));var logger=require(_0xde0d('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xde0d('0x8'));var client=jayson[_0xde0d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x323200,_0x3ce23c,_0x33a644){return new BPromise(function(_0x570b78,_0x25f0fe){return client['request'](_0x323200,_0x33a644)[_0xde0d('0xa')](function(_0x5e6588){logger[_0xde0d('0xb')](_0xde0d('0xc'),_0x3ce23c,_0xde0d('0xd'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x3ce23c,'request\x20sent',JSON[_0xde0d('0xe')](_0x5e6588));if(_0x5e6588[_0xde0d('0xf')]){if(_0x5e6588[_0xde0d('0xf')]['code']===0x1f4){logger[_0xde0d('0xf')](_0xde0d('0xc'),_0x3ce23c,_0x5e6588['error'][_0xde0d('0x10')]);return _0x25f0fe(_0x5e6588[_0xde0d('0xf')][_0xde0d('0x10')]);}logger[_0xde0d('0xf')](_0xde0d('0xc'),_0x3ce23c,_0x5e6588['error'][_0xde0d('0x10')]);return _0x570b78(_0x5e6588['error'][_0xde0d('0x10')]);}else{logger['info'](_0xde0d('0xc'),_0x3ce23c,'request\x20sent');_0x570b78(_0x5e6588[_0xde0d('0x11')][_0xde0d('0x10')]);}})[_0xde0d('0x12')](function(_0x228666){logger[_0xde0d('0xf')](_0xde0d('0xc'),_0x3ce23c,_0x228666);_0x25f0fe(_0x228666);});});}
\ No newline at end of file
+var _0xb2ca=['VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then'];(function(_0x2e073b,_0x33dbef){var _0x4212e8=function(_0x424d2b){while(--_0x424d2b){_0x2e073b['push'](_0x2e073b['shift']());}};_0x4212e8(++_0x33dbef);}(_0xb2ca,0x1a8));var _0xab2c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb2ca[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xab2c('0x0'));var util=require(_0xab2c('0x1'));var moment=require('moment');var BPromise=require(_0xab2c('0x2'));var rs=require(_0xab2c('0x3'));var fs=require('fs');var Redis=require(_0xab2c('0x4'));var db=require(_0xab2c('0x5'))['db'];var utils=require(_0xab2c('0x6'));var logger=require(_0xab2c('0x7'))(_0xab2c('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xab2c('0x9')][_0xab2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2632f8,_0x4eb3c0,_0x33adc7){return new BPromise(function(_0x1ed705,_0x2bff20){return client[_0xab2c('0xb')](_0x2632f8,_0x33adc7)[_0xab2c('0xc')](function(_0x1b86a0){logger['info'](_0xab2c('0xd'),_0x4eb3c0,_0xab2c('0xe'));logger[_0xab2c('0xf')](_0xab2c('0x10'),_0x4eb3c0,_0xab2c('0xe'),JSON[_0xab2c('0x11')](_0x1b86a0));if(_0x1b86a0[_0xab2c('0x12')]){if(_0x1b86a0[_0xab2c('0x12')][_0xab2c('0x13')]===0x1f4){logger['error']('VoiceContext,\x20%s,\x20%s',_0x4eb3c0,_0x1b86a0[_0xab2c('0x12')][_0xab2c('0x14')]);return _0x2bff20(_0x1b86a0[_0xab2c('0x12')][_0xab2c('0x14')]);}logger[_0xab2c('0x12')](_0xab2c('0xd'),_0x4eb3c0,_0x1b86a0['error'][_0xab2c('0x14')]);return _0x1ed705(_0x1b86a0[_0xab2c('0x12')][_0xab2c('0x14')]);}else{logger[_0xab2c('0x15')]('VoiceContext,\x20%s,\x20%s',_0x4eb3c0,'request\x20sent');_0x1ed705(_0x1b86a0['result'][_0xab2c('0x14')]);}})[_0xab2c('0x16')](function(_0x2b4703){logger[_0xab2c('0x12')](_0xab2c('0xd'),_0x4eb3c0,_0x2b4703);_0x2bff20(_0x2b4703);});});}
\ No newline at end of file
index 17dc513..01e30a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc7f=['index','/describe','isAuthenticated','describe','show','put','/:id','update','delete','destroy','multer','express','../../components/auth/service','../../config/environment','get'];(function(_0x38848a,_0x307088){var _0x1e3b69=function(_0x51eebe){while(--_0x51eebe){_0x38848a['push'](_0x38848a['shift']());}};_0x1e3b69(++_0x307088);}(_0xcc7f,0x1cc));var _0xfcc7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcc7f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xfcc7('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfcc7('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfcc7('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xfcc7('0x3'));var controller=require('./voiceDialReport.controller');router[_0xfcc7('0x4')]('/',auth['isAuthenticated'](),controller[_0xfcc7('0x5')]);router[_0xfcc7('0x4')](_0xfcc7('0x6'),auth[_0xfcc7('0x7')](),controller[_0xfcc7('0x8')]);router[_0xfcc7('0x4')]('/:id',auth[_0xfcc7('0x7')](),controller[_0xfcc7('0x9')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xfcc7('0xa')](_0xfcc7('0xb'),auth[_0xfcc7('0x7')](),controller[_0xfcc7('0xc')]);router[_0xfcc7('0xd')](_0xfcc7('0xb'),auth[_0xfcc7('0x7')](),controller[_0xfcc7('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x7383=['fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','post','update','delete','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3a7bdf,_0x58bdd8){var _0x35a9a8=function(_0x21da98){while(--_0x21da98){_0x3a7bdf['push'](_0x3a7bdf['shift']());}};_0x35a9a8(++_0x58bdd8);}(_0x7383,0x18a));var _0x3738=function(_0x4fde3a,_0x345f53){_0x4fde3a=_0x4fde3a-0x0;var _0x421d5c=_0x7383[_0x4fde3a];return _0x421d5c;};'use strict';var multer=require(_0x3738('0x0'));var util=require(_0x3738('0x1'));var path=require(_0x3738('0x2'));var timeout=require(_0x3738('0x3'));var express=require(_0x3738('0x4'));var router=express[_0x3738('0x5')]();var fs_extra=require(_0x3738('0x6'));var auth=require(_0x3738('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x3738('0x8'));var controller=require('./voiceDialReport.controller');router['get']('/',auth[_0x3738('0x9')](),controller[_0x3738('0xa')]);router[_0x3738('0xb')](_0x3738('0xc'),auth[_0x3738('0x9')](),controller[_0x3738('0xd')]);router[_0x3738('0xb')](_0x3738('0xe'),auth['isAuthenticated'](),controller[_0x3738('0xf')]);router[_0x3738('0x10')]('/',auth[_0x3738('0x9')](),controller['create']);router['put'](_0x3738('0xe'),auth[_0x3738('0x9')](),controller[_0x3738('0x11')]);router[_0x3738('0x12')](_0x3738('0xe'),auth[_0x3738('0x9')](),controller['destroy']);module[_0x3738('0x13')]=router;
\ No newline at end of file
index 7bdb4a7..330f545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['sequelize','exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x173709,_0x4f0bfe){var _0x1385c5=function(_0x27dd92){while(--_0x27dd92){_0x173709['push'](_0x173709['shift']());}};_0x1385c5(++_0x4f0bfe);}(_0x34e8,0x12c));var _0x834e=function(_0x3ad894,_0x593fce){_0x3ad894=_0x3ad894-0x0;var _0x85071a=_0x34e8[_0x3ad894];return _0x85071a;};'use strict';var Sequelize=require(_0x834e('0x0'));module[_0x834e('0x1')]={'privilege':{'type':Sequelize[_0x834e('0x2')]},'channel':{'type':Sequelize[_0x834e('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x834e('0x2')]},'calleridnum':{'type':Sequelize[_0x834e('0x2')]},'calleridname':{'type':Sequelize[_0x834e('0x2')]},'connectedlinenum':{'type':Sequelize[_0x834e('0x2')]},'connectedlinename':{'type':Sequelize[_0x834e('0x2')]},'language':{'type':Sequelize[_0x834e('0x2')]},'accountcode':{'type':Sequelize[_0x834e('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x834e('0x2')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x834e('0x2')]},'linkedid':{'type':Sequelize[_0x834e('0x2')]},'destchannel':{'type':Sequelize[_0x834e('0x2')]},'destchannelstate':{'type':Sequelize[_0x834e('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x834e('0x2')]},'destcalleridnum':{'type':Sequelize[_0x834e('0x2')]},'destcalleridname':{'type':Sequelize[_0x834e('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x834e('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x834e('0x2')]},'destlanguage':{'type':Sequelize[_0x834e('0x2')]},'destaccountcode':{'type':Sequelize[_0x834e('0x2')]},'destcontext':{'type':Sequelize[_0x834e('0x2')]},'destexten':{'type':Sequelize[_0x834e('0x2')]},'destpriority':{'type':Sequelize[_0x834e('0x3')]},'destuniqueid':{'type':Sequelize[_0x834e('0x2')]},'destlinkedid':{'type':Sequelize[_0x834e('0x2')]},'dialstring':{'type':Sequelize[_0x834e('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x834e('0x4')]},'answertime':{'type':Sequelize[_0x834e('0x4')]},'endtime':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x834e('0x2')],'comment':_0x834e('0x5')},'routeId':{'type':Sequelize[_0x834e('0x3')]},'duration':{'type':Sequelize[_0x834e('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x834e('0x3')]}};
\ No newline at end of file
+var _0x6f0d=['STRING','INTEGER','DATE','called,connect,complete','exports'];(function(_0x382d96,_0x50b5bd){var _0x5caa28=function(_0x5f3659){while(--_0x5f3659){_0x382d96['push'](_0x382d96['shift']());}};_0x5caa28(++_0x50b5bd);}(_0x6f0d,0x16c));var _0xd6f0=function(_0xcaa08a,_0x54740b){_0xcaa08a=_0xcaa08a-0x0;var _0x7fb524=_0x6f0d[_0xcaa08a];return _0x7fb524;};'use strict';var Sequelize=require('sequelize');module[_0xd6f0('0x0')]={'privilege':{'type':Sequelize[_0xd6f0('0x1')]},'channel':{'type':Sequelize[_0xd6f0('0x1')]},'channelstate':{'type':Sequelize[_0xd6f0('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xd6f0('0x1')]},'calleridname':{'type':Sequelize[_0xd6f0('0x1')]},'connectedlinenum':{'type':Sequelize[_0xd6f0('0x1')]},'connectedlinename':{'type':Sequelize[_0xd6f0('0x1')]},'language':{'type':Sequelize[_0xd6f0('0x1')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xd6f0('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xd6f0('0x2')]},'uniqueid':{'type':Sequelize[_0xd6f0('0x1')]},'linkedid':{'type':Sequelize[_0xd6f0('0x1')]},'destchannel':{'type':Sequelize[_0xd6f0('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xd6f0('0x1')]},'destcalleridname':{'type':Sequelize[_0xd6f0('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xd6f0('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xd6f0('0x1')]},'destlanguage':{'type':Sequelize[_0xd6f0('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xd6f0('0x1')]},'destexten':{'type':Sequelize[_0xd6f0('0x1')]},'destpriority':{'type':Sequelize[_0xd6f0('0x2')]},'destuniqueid':{'type':Sequelize[_0xd6f0('0x1')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0xd6f0('0x1')]},'dialstatus':{'type':Sequelize[_0xd6f0('0x1')]},'starttime':{'type':Sequelize[_0xd6f0('0x3')]},'answertime':{'type':Sequelize[_0xd6f0('0x3')]},'endtime':{'type':Sequelize[_0xd6f0('0x3')]},'lastevent':{'type':Sequelize[_0xd6f0('0x1')],'comment':_0xd6f0('0x4')},'routeId':{'type':Sequelize[_0xd6f0('0x2')]},'duration':{'type':Sequelize[_0xd6f0('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xd6f0('0x2')]}};
\ No newline at end of file
index 92f1fd5..ea0710d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c08=['papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','findAll','show','keys','includeAll','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','fs-extra','lodash','desk.js','querystring'];(function(_0x300258,_0x520abc){var _0x1494bb=function(_0x1b9aaf){while(--_0x1b9aaf){_0x300258['push'](_0x300258['shift']());}};_0x1494bb(++_0x520abc);}(_0x5c08,0x113));var _0x85c0=function(_0x3dcf15,_0x45aed9){_0x3dcf15=_0x3dcf15-0x0;var _0x98fd66=_0x5c08[_0x3dcf15];return _0x98fd66;};'use strict';var emlformat=require(_0x85c0('0x0'));var rimraf=require(_0x85c0('0x1'));var zipdir=require(_0x85c0('0x2'));var jsonpatch=require(_0x85c0('0x3'));var rp=require(_0x85c0('0x4'));var moment=require(_0x85c0('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x85c0('0x6'));var path=require(_0x85c0('0x7'));var sox=require('sox');var csv=require(_0x85c0('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x85c0('0x9'));var _=require(_0x85c0('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x85c0('0xb'));var toCsv=require(_0x85c0('0x8'));var querystring=require(_0x85c0('0xc'));var Papa=require(_0x85c0('0xd'));var Redis=require(_0x85c0('0xe'));var authService=require(_0x85c0('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x85c0('0x10'));var logger=require(_0x85c0('0x11'))('api');var utils=require(_0x85c0('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x85c0('0x13'))['db'];function respondWithStatusCode(_0x3b85a6,_0x2343fa){_0x2343fa=_0x2343fa||0xcc;return function(_0x1ba5d6){if(_0x1ba5d6){return _0x3b85a6[_0x85c0('0x14')](_0x2343fa);}return _0x3b85a6[_0x85c0('0x15')](_0x2343fa)[_0x85c0('0x16')]();};}function respondWithResult(_0x14bcfc,_0x205fee){_0x205fee=_0x205fee||0xc8;return function(_0x4e3ea1){if(_0x4e3ea1){return _0x14bcfc[_0x85c0('0x15')](_0x205fee)[_0x85c0('0x17')](_0x4e3ea1);}};}function respondWithFilteredResult(_0x202815,_0x3f8fb2){return function(_0x10284b){if(_0x10284b){var _0x4a0b2c=typeof _0x3f8fb2[_0x85c0('0x18')]===_0x85c0('0x19')&&typeof _0x3f8fb2['limit']===_0x85c0('0x19');var _0x46b0bd=_0x10284b[_0x85c0('0x1a')];var _0x5282cd=_0x4a0b2c?0x0:_0x3f8fb2[_0x85c0('0x18')];var _0x2edaec=_0x4a0b2c?_0x10284b['count']:_0x3f8fb2[_0x85c0('0x18')]+_0x3f8fb2[_0x85c0('0x1b')];var _0x35aab8;if(_0x2edaec>=_0x46b0bd){_0x2edaec=_0x46b0bd;_0x35aab8=0xc8;}else{_0x35aab8=0xce;}_0x202815['status'](_0x35aab8);return _0x202815['set'](_0x85c0('0x1c'),_0x5282cd+'-'+_0x2edaec+'/'+_0x46b0bd)[_0x85c0('0x17')](_0x10284b);}return null;};}function patchUpdates(_0x32ca8d){return function(_0x2a08c9){try{jsonpatch[_0x85c0('0x1d')](_0x2a08c9,_0x32ca8d,!![]);}catch(_0x52f899){return BPromise[_0x85c0('0x1e')](_0x52f899);}return _0x2a08c9[_0x85c0('0x1f')]();};}function saveUpdates(_0x2f34f6,_0x1681e0){return function(_0x4f228d){if(_0x4f228d){return _0x4f228d[_0x85c0('0x20')](_0x2f34f6)[_0x85c0('0x21')](function(_0x3015f7){return _0x3015f7;});}return null;};}function removeEntity(_0x5a5f21,_0x3c16e5){return function(_0xa0b03b){if(_0xa0b03b){return _0xa0b03b[_0x85c0('0x22')]()[_0x85c0('0x21')](function(){_0x5a5f21[_0x85c0('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x193bf9,_0x1793fc){return function(_0x1463b1){if(!_0x1463b1){_0x193bf9[_0x85c0('0x14')](0x194);}return _0x1463b1;};}function handleError(_0x17401c,_0x308060){_0x308060=_0x308060||0x1f4;return function(_0x38e8db){logger[_0x85c0('0x23')](_0x38e8db[_0x85c0('0x24')]);if(_0x38e8db['name']){delete _0x38e8db[_0x85c0('0x25')];}_0x17401c[_0x85c0('0x15')](_0x308060)[_0x85c0('0x26')](_0x38e8db);};}exports[_0x85c0('0x27')]=function(_0x51d553,_0x5ee76b){var _0x8da6db={},_0x2d1fe0={},_0x3caa20={'count':0x0,'rows':[]};var _0x58ffac=_[_0x85c0('0x28')](db[_0x85c0('0x29')][_0x85c0('0x2a')],function(_0x4f173e){return{'name':_0x4f173e[_0x85c0('0x2b')],'type':_0x4f173e[_0x85c0('0x2c')][_0x85c0('0x2d')]};});_0x2d1fe0['model']=_[_0x85c0('0x28')](_0x58ffac,'name');_0x2d1fe0[_0x85c0('0x2e')]=_['keys'](_0x51d553[_0x85c0('0x2e')]);_0x2d1fe0[_0x85c0('0x2f')]=_[_0x85c0('0x30')](_0x2d1fe0[_0x85c0('0x31')],_0x2d1fe0[_0x85c0('0x2e')]);_0x8da6db['attributes']=_[_0x85c0('0x30')](_0x2d1fe0['model'],qs[_0x85c0('0x32')](_0x51d553[_0x85c0('0x2e')][_0x85c0('0x32')]));_0x8da6db[_0x85c0('0x33')]=_0x8da6db['attributes'][_0x85c0('0x34')]?_0x8da6db[_0x85c0('0x33')]:_0x2d1fe0[_0x85c0('0x31')];if(!_0x51d553[_0x85c0('0x2e')][_0x85c0('0x35')](_0x85c0('0x36'))){_0x8da6db['limit']=qs[_0x85c0('0x1b')](_0x51d553[_0x85c0('0x2e')][_0x85c0('0x1b')]);_0x8da6db[_0x85c0('0x18')]=qs['offset'](_0x51d553['query'][_0x85c0('0x18')]);}_0x8da6db[_0x85c0('0x37')]=qs[_0x85c0('0x38')](_0x51d553['query'][_0x85c0('0x38')]);_0x8da6db['where']=qs[_0x85c0('0x2f')](_[_0x85c0('0x39')](_0x51d553[_0x85c0('0x2e')],_0x2d1fe0[_0x85c0('0x2f')]),_0x58ffac);if(_0x51d553['query'][_0x85c0('0x3a')]){_0x8da6db[_0x85c0('0x3b')]=_[_0x85c0('0x3c')](_0x8da6db['where'],{'$or':_[_0x85c0('0x28')](_0x58ffac,function(_0x4b2b11){if(_0x4b2b11[_0x85c0('0x2c')]!=='VIRTUAL'){var _0x2aaf71={};_0x2aaf71[_0x4b2b11['name']]={'$like':'%'+_0x51d553['query'][_0x85c0('0x3a')]+'%'};return _0x2aaf71;}})});}_0x8da6db=_['merge']({},_0x8da6db,_0x51d553[_0x85c0('0x3d')]);var _0x37e12d={'where':_0x8da6db[_0x85c0('0x3b')]};return db[_0x85c0('0x29')]['count'](_0x37e12d)[_0x85c0('0x21')](function(_0x321cbf){_0x3caa20['count']=_0x321cbf;if(_0x51d553[_0x85c0('0x2e')]['includeAll']){_0x8da6db['include']=[{'all':!![]}];}return db['VoiceDialReport'][_0x85c0('0x3e')](_0x8da6db);})[_0x85c0('0x21')](function(_0xe5c3bb){_0x3caa20['rows']=_0xe5c3bb;return _0x3caa20;})[_0x85c0('0x21')](respondWithFilteredResult(_0x5ee76b,_0x8da6db))['catch'](handleError(_0x5ee76b,null));};exports[_0x85c0('0x3f')]=function(_0x574ad9,_0x248098){var _0x24a6cf={'raw':!![],'where':{'id':_0x574ad9['params']['id']}},_0x2335d2={};_0x2335d2[_0x85c0('0x31')]=_['keys'](db[_0x85c0('0x29')]['rawAttributes']);_0x2335d2[_0x85c0('0x2e')]=_[_0x85c0('0x40')](_0x574ad9[_0x85c0('0x2e')]);_0x2335d2[_0x85c0('0x2f')]=_[_0x85c0('0x30')](_0x2335d2['model'],_0x2335d2[_0x85c0('0x2e')]);_0x24a6cf['attributes']=_['intersection'](_0x2335d2[_0x85c0('0x31')],qs['fields'](_0x574ad9[_0x85c0('0x2e')][_0x85c0('0x32')]));_0x24a6cf[_0x85c0('0x33')]=_0x24a6cf['attributes'][_0x85c0('0x34')]?_0x24a6cf['attributes']:_0x2335d2[_0x85c0('0x31')];if(_0x574ad9[_0x85c0('0x2e')][_0x85c0('0x41')]){_0x24a6cf['include']=[{'all':!![]}];}_0x24a6cf=_[_0x85c0('0x3c')]({},_0x24a6cf,_0x574ad9[_0x85c0('0x3d')]);return db['VoiceDialReport'][_0x85c0('0x42')](_0x24a6cf)[_0x85c0('0x21')](handleEntityNotFound(_0x248098,null))[_0x85c0('0x21')](respondWithResult(_0x248098,null))[_0x85c0('0x43')](handleError(_0x248098,null));};exports['create']=function(_0x213f72,_0x3681c3){return db['VoiceDialReport'][_0x85c0('0x44')](_0x213f72[_0x85c0('0x45')],{})[_0x85c0('0x21')](respondWithResult(_0x3681c3,0xc9))[_0x85c0('0x43')](handleError(_0x3681c3,null));};exports['update']=function(_0x4e52c8,_0x3dab31){if(_0x4e52c8[_0x85c0('0x45')]['id']){delete _0x4e52c8[_0x85c0('0x45')]['id'];}return db[_0x85c0('0x29')][_0x85c0('0x42')]({'where':{'id':_0x4e52c8[_0x85c0('0x46')]['id']}})[_0x85c0('0x21')](handleEntityNotFound(_0x3dab31,null))[_0x85c0('0x21')](saveUpdates(_0x4e52c8['body'],null))[_0x85c0('0x21')](respondWithResult(_0x3dab31,null))[_0x85c0('0x43')](handleError(_0x3dab31,null));};exports['destroy']=function(_0x3bf721,_0x10deb5){return db['VoiceDialReport'][_0x85c0('0x42')]({'where':{'id':_0x3bf721[_0x85c0('0x46')]['id']}})['then'](handleEntityNotFound(_0x10deb5,null))[_0x85c0('0x21')](removeEntity(_0x10deb5,null))[_0x85c0('0x43')](handleError(_0x10deb5,null));};exports[_0x85c0('0x47')]=function(_0x480085,_0x40dc91){return db[_0x85c0('0x29')]['describe']()[_0x85c0('0x21')](respondWithResult(_0x40dc91,null))[_0x85c0('0x43')](handleError(_0x40dc91,null));};
\ No newline at end of file
+var _0xe4e9=['then','end','name','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','options','find','create','body','params','destroy','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','update'];(function(_0x4e51d4,_0x547112){var _0x57c7ca=function(_0x3addc0){while(--_0x3addc0){_0x4e51d4['push'](_0x4e51d4['shift']());}};_0x57c7ca(++_0x547112);}(_0xe4e9,0x1ca));var _0x9e4e=function(_0x412fdd,_0x3bd409){_0x412fdd=_0x412fdd-0x0;var _0x4da83a=_0xe4e9[_0x412fdd];return _0x4da83a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9e4e('0x0'));var zipdir=require(_0x9e4e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9e4e('0x2'));var moment=require(_0x9e4e('0x3'));var BPromise=require(_0x9e4e('0x4'));var Mustache=require(_0x9e4e('0x5'));var util=require(_0x9e4e('0x6'));var path=require('path');var sox=require(_0x9e4e('0x7'));var csv=require('to-csv');var ejs=require(_0x9e4e('0x8'));var fs=require('fs');var fs_extra=require(_0x9e4e('0x9'));var _=require(_0x9e4e('0xa'));var squel=require(_0x9e4e('0xb'));var crypto=require(_0x9e4e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9e4e('0xd'));var toCsv=require(_0x9e4e('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9e4e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9e4e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e4e('0x11'));var logger=require('../../config/logger')(_0x9e4e('0x12'));var utils=require(_0x9e4e('0x13'));var config=require(_0x9e4e('0x14'));var licenseUtil=require(_0x9e4e('0x15'));var db=require(_0x9e4e('0x16'))['db'];function respondWithStatusCode(_0x85c75d,_0x126c1a){_0x126c1a=_0x126c1a||0xcc;return function(_0xdaf6f0){if(_0xdaf6f0){return _0x85c75d['sendStatus'](_0x126c1a);}return _0x85c75d['status'](_0x126c1a)['end']();};}function respondWithResult(_0x135aae,_0x5d4c99){_0x5d4c99=_0x5d4c99||0xc8;return function(_0xe42148){if(_0xe42148){return _0x135aae[_0x9e4e('0x17')](_0x5d4c99)[_0x9e4e('0x18')](_0xe42148);}};}function respondWithFilteredResult(_0xd46437,_0x1b45fc){return function(_0x139d0f){if(_0x139d0f){var _0x20222c=typeof _0x1b45fc[_0x9e4e('0x19')]===_0x9e4e('0x1a')&&typeof _0x1b45fc[_0x9e4e('0x1b')]==='undefined';var _0xf96630=_0x139d0f['count'];var _0x33c761=_0x20222c?0x0:_0x1b45fc[_0x9e4e('0x19')];var _0x1fc68d=_0x20222c?_0x139d0f[_0x9e4e('0x1c')]:_0x1b45fc[_0x9e4e('0x19')]+_0x1b45fc[_0x9e4e('0x1b')];var _0x22dd41;if(_0x1fc68d>=_0xf96630){_0x1fc68d=_0xf96630;_0x22dd41=0xc8;}else{_0x22dd41=0xce;}_0xd46437['status'](_0x22dd41);return _0xd46437[_0x9e4e('0x1d')]('Content-Range',_0x33c761+'-'+_0x1fc68d+'/'+_0xf96630)[_0x9e4e('0x18')](_0x139d0f);}return null;};}function patchUpdates(_0x3896ae){return function(_0x394293){try{jsonpatch[_0x9e4e('0x1e')](_0x394293,_0x3896ae,!![]);}catch(_0x5b5e50){return BPromise['reject'](_0x5b5e50);}return _0x394293['save']();};}function saveUpdates(_0x4405fe,_0x2963ee){return function(_0x17264f){if(_0x17264f){return _0x17264f[_0x9e4e('0x1f')](_0x4405fe)[_0x9e4e('0x20')](function(_0x29df9e){return _0x29df9e;});}return null;};}function removeEntity(_0x56125e,_0x55364f){return function(_0x36f8e8){if(_0x36f8e8){return _0x36f8e8['destroy']()[_0x9e4e('0x20')](function(){_0x56125e['status'](0xcc)[_0x9e4e('0x21')]();});}};}function handleEntityNotFound(_0xe881cb,_0x1e7b18){return function(_0x5824c3){if(!_0x5824c3){_0xe881cb['sendStatus'](0x194);}return _0x5824c3;};}function handleError(_0x392257,_0x4450f4){_0x4450f4=_0x4450f4||0x1f4;return function(_0x517d2f){logger['error'](_0x517d2f['stack']);if(_0x517d2f['name']){delete _0x517d2f[_0x9e4e('0x22')];}_0x392257[_0x9e4e('0x17')](_0x4450f4)['send'](_0x517d2f);};}exports['index']=function(_0x4c2ec7,_0x10fcb9){var _0x37f567={},_0x42b6e5={},_0x4b4c24={'count':0x0,'rows':[]};var _0x45594f=_[_0x9e4e('0x23')](db[_0x9e4e('0x24')][_0x9e4e('0x25')],function(_0x1b544a){return{'name':_0x1b544a[_0x9e4e('0x26')],'type':_0x1b544a[_0x9e4e('0x27')][_0x9e4e('0x28')]};});_0x42b6e5[_0x9e4e('0x29')]=_[_0x9e4e('0x23')](_0x45594f,_0x9e4e('0x22'));_0x42b6e5['query']=_[_0x9e4e('0x2a')](_0x4c2ec7[_0x9e4e('0x2b')]);_0x42b6e5[_0x9e4e('0x2c')]=_[_0x9e4e('0x2d')](_0x42b6e5['model'],_0x42b6e5[_0x9e4e('0x2b')]);_0x37f567['attributes']=_['intersection'](_0x42b6e5['model'],qs[_0x9e4e('0x2e')](_0x4c2ec7[_0x9e4e('0x2b')][_0x9e4e('0x2e')]));_0x37f567['attributes']=_0x37f567[_0x9e4e('0x2f')][_0x9e4e('0x30')]?_0x37f567[_0x9e4e('0x2f')]:_0x42b6e5[_0x9e4e('0x29')];if(!_0x4c2ec7['query'][_0x9e4e('0x31')](_0x9e4e('0x32'))){_0x37f567[_0x9e4e('0x1b')]=qs[_0x9e4e('0x1b')](_0x4c2ec7[_0x9e4e('0x2b')]['limit']);_0x37f567[_0x9e4e('0x19')]=qs[_0x9e4e('0x19')](_0x4c2ec7[_0x9e4e('0x2b')][_0x9e4e('0x19')]);}_0x37f567['order']=qs[_0x9e4e('0x33')](_0x4c2ec7['query'][_0x9e4e('0x33')]);_0x37f567[_0x9e4e('0x34')]=qs[_0x9e4e('0x2c')](_[_0x9e4e('0x35')](_0x4c2ec7['query'],_0x42b6e5['filters']),_0x45594f);if(_0x4c2ec7[_0x9e4e('0x2b')]['filter']){_0x37f567[_0x9e4e('0x34')]=_[_0x9e4e('0x36')](_0x37f567[_0x9e4e('0x34')],{'$or':_[_0x9e4e('0x23')](_0x45594f,function(_0x692580){if(_0x692580[_0x9e4e('0x27')]!==_0x9e4e('0x37')){var _0x54eb44={};_0x54eb44[_0x692580[_0x9e4e('0x22')]]={'$like':'%'+_0x4c2ec7[_0x9e4e('0x2b')][_0x9e4e('0x38')]+'%'};return _0x54eb44;}})});}_0x37f567=_[_0x9e4e('0x36')]({},_0x37f567,_0x4c2ec7['options']);var _0x4f71fe={'where':_0x37f567[_0x9e4e('0x34')]};return db[_0x9e4e('0x24')][_0x9e4e('0x1c')](_0x4f71fe)[_0x9e4e('0x20')](function(_0x9c79e2){_0x4b4c24['count']=_0x9c79e2;if(_0x4c2ec7[_0x9e4e('0x2b')][_0x9e4e('0x39')]){_0x37f567[_0x9e4e('0x3a')]=[{'all':!![]}];}return db[_0x9e4e('0x24')][_0x9e4e('0x3b')](_0x37f567);})[_0x9e4e('0x20')](function(_0x4f9881){_0x4b4c24[_0x9e4e('0x3c')]=_0x4f9881;return _0x4b4c24;})['then'](respondWithFilteredResult(_0x10fcb9,_0x37f567))[_0x9e4e('0x3d')](handleError(_0x10fcb9,null));};exports[_0x9e4e('0x3e')]=function(_0x3793b8,_0x37b75c){var _0x4ac75e={'raw':!![],'where':{'id':_0x3793b8['params']['id']}},_0x3f3b35={};_0x3f3b35[_0x9e4e('0x29')]=_[_0x9e4e('0x2a')](db[_0x9e4e('0x24')][_0x9e4e('0x25')]);_0x3f3b35['query']=_[_0x9e4e('0x2a')](_0x3793b8[_0x9e4e('0x2b')]);_0x3f3b35[_0x9e4e('0x2c')]=_[_0x9e4e('0x2d')](_0x3f3b35[_0x9e4e('0x29')],_0x3f3b35[_0x9e4e('0x2b')]);_0x4ac75e['attributes']=_[_0x9e4e('0x2d')](_0x3f3b35[_0x9e4e('0x29')],qs['fields'](_0x3793b8[_0x9e4e('0x2b')][_0x9e4e('0x2e')]));_0x4ac75e[_0x9e4e('0x2f')]=_0x4ac75e[_0x9e4e('0x2f')]['length']?_0x4ac75e[_0x9e4e('0x2f')]:_0x3f3b35[_0x9e4e('0x29')];if(_0x3793b8[_0x9e4e('0x2b')]['includeAll']){_0x4ac75e[_0x9e4e('0x3a')]=[{'all':!![]}];}_0x4ac75e=_[_0x9e4e('0x36')]({},_0x4ac75e,_0x3793b8[_0x9e4e('0x3f')]);return db['VoiceDialReport'][_0x9e4e('0x40')](_0x4ac75e)['then'](handleEntityNotFound(_0x37b75c,null))[_0x9e4e('0x20')](respondWithResult(_0x37b75c,null))[_0x9e4e('0x3d')](handleError(_0x37b75c,null));};exports[_0x9e4e('0x41')]=function(_0x39ee07,_0x544ff6){return db[_0x9e4e('0x24')][_0x9e4e('0x41')](_0x39ee07[_0x9e4e('0x42')],{})[_0x9e4e('0x20')](respondWithResult(_0x544ff6,0xc9))['catch'](handleError(_0x544ff6,null));};exports[_0x9e4e('0x1f')]=function(_0x273408,_0x278369){if(_0x273408[_0x9e4e('0x42')]['id']){delete _0x273408[_0x9e4e('0x42')]['id'];}return db[_0x9e4e('0x24')]['find']({'where':{'id':_0x273408[_0x9e4e('0x43')]['id']}})[_0x9e4e('0x20')](handleEntityNotFound(_0x278369,null))['then'](saveUpdates(_0x273408[_0x9e4e('0x42')],null))[_0x9e4e('0x20')](respondWithResult(_0x278369,null))[_0x9e4e('0x3d')](handleError(_0x278369,null));};exports[_0x9e4e('0x44')]=function(_0x22f350,_0x44901b){return db[_0x9e4e('0x24')][_0x9e4e('0x40')]({'where':{'id':_0x22f350[_0x9e4e('0x43')]['id']}})['then'](handleEntityNotFound(_0x44901b,null))[_0x9e4e('0x20')](removeEntity(_0x44901b,null))[_0x9e4e('0x3d')](handleError(_0x44901b,null));};exports['describe']=function(_0x4d02f2,_0x272ea8){return db['VoiceDialReport'][_0x9e4e('0x45')]()[_0x9e4e('0x20')](respondWithResult(_0x272ea8,null))[_0x9e4e('0x3d')](handleError(_0x272ea8,null));};
\ No newline at end of file
index 6e17e47..c36d710 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108e=['uniqueid','util','../../config/logger','moment','request-promise','rimraf','exports','define','VoiceDialReport','report_dial'];(function(_0xa2dd54,_0xdab171){var _0x4a3fdf=function(_0x5c16f8){while(--_0x5c16f8){_0xa2dd54['push'](_0xa2dd54['shift']());}};_0x4a3fdf(++_0xdab171);}(_0x108e,0x141));var _0xe108=function(_0x3c3d7b,_0x71b45c){_0x3c3d7b=_0x3c3d7b-0x0;var _0x6036ee=_0x108e[_0x3c3d7b];return _0x6036ee;};'use strict';var _=require('lodash');var util=require(_0xe108('0x0'));var logger=require(_0xe108('0x1'))('api');var moment=require(_0xe108('0x2'));var BPromise=require('bluebird');var rp=require(_0xe108('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe108('0x4'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0xe108('0x5')]=function(_0x2e2dd2,_0x405fc7){return _0x2e2dd2[_0xe108('0x6')](_0xe108('0x7'),attributes,{'tableName':_0xe108('0x8'),'paranoid':![],'indexes':[{'fields':[_0xe108('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x48e0=['report_dial','uniqueid','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport'];(function(_0x230f8f,_0x483b54){var _0x1dc485=function(_0x2065e3){while(--_0x2065e3){_0x230f8f['push'](_0x230f8f['shift']());}};_0x1dc485(++_0x483b54);}(_0x48e0,0xb8));var _0x048e=function(_0x58476e,_0x2b9574){_0x58476e=_0x58476e-0x0;var _0x115edd=_0x48e0[_0x58476e];return _0x115edd;};'use strict';var _=require(_0x048e('0x0'));var util=require('util');var logger=require(_0x048e('0x1'))(_0x048e('0x2'));var moment=require('moment');var BPromise=require(_0x048e('0x3'));var rp=require(_0x048e('0x4'));var fs=require('fs');var path=require(_0x048e('0x5'));var rimraf=require(_0x048e('0x6'));var config=require(_0x048e('0x7'));var attributes=require(_0x048e('0x8'));module['exports']=function(_0x3ff4db,_0x324426){return _0x3ff4db[_0x048e('0x9')](_0x048e('0xa'),attributes,{'tableName':_0x048e('0xb'),'paranoid':![],'indexes':[{'fields':[_0x048e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b580a77..4ecb424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ded=['create','body','options','raw','CreateVoiceDialReport','stringify','catch','UpdateVoiceDialReport','VoiceDialReport','update','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','request\x20sent','debug','error','message','result'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x5ded,0x157));var _0xd5de=function(_0x3305c8,_0x1f3059){_0x3305c8=_0x3305c8-0x0;var _0x3494a6=_0x5ded[_0x3305c8];return _0x3494a6;};'use strict';var _=require(_0xd5de('0x0'));var util=require('util');var moment=require(_0xd5de('0x1'));var BPromise=require(_0xd5de('0x2'));var rs=require(_0xd5de('0x3'));var fs=require('fs');var Redis=require(_0xd5de('0x4'));var db=require(_0xd5de('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd5de('0x6'))(_0xd5de('0x7'));var config=require(_0xd5de('0x8'));var jayson=require(_0xd5de('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x33d97e,_0x20ca29,_0x7fa05b){return new BPromise(function(_0x551ed3,_0x4ae43b){return client['request'](_0x33d97e,_0x7fa05b)[_0xd5de('0xa')](function(_0x39941d){logger[_0xd5de('0xb')]('VoiceDialReport,\x20%s,\x20%s',_0x20ca29,_0xd5de('0xc'));logger[_0xd5de('0xd')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x20ca29,_0xd5de('0xc'),JSON['stringify'](_0x39941d));if(_0x39941d['error']){if(_0x39941d[_0xd5de('0xe')]['code']===0x1f4){logger[_0xd5de('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x20ca29,_0x39941d[_0xd5de('0xe')][_0xd5de('0xf')]);return _0x4ae43b(_0x39941d[_0xd5de('0xe')][_0xd5de('0xf')]);}logger[_0xd5de('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x20ca29,_0x39941d[_0xd5de('0xe')][_0xd5de('0xf')]);return _0x551ed3(_0x39941d['error'][_0xd5de('0xf')]);}else{logger[_0xd5de('0xb')]('VoiceDialReport,\x20%s,\x20%s',_0x20ca29,_0xd5de('0xc'));_0x551ed3(_0x39941d[_0xd5de('0x10')][_0xd5de('0xf')]);}})['catch'](function(_0x92ee1f){logger[_0xd5de('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x20ca29,_0x92ee1f);_0x4ae43b(_0x92ee1f);});});}exports['CreateVoiceDialReport']=function(_0x3c9a78){var _0x417ca9=this;return new Promise(function(_0x1ec042,_0x5d7ee2){return db['VoiceDialReport'][_0xd5de('0x11')](_0x3c9a78[_0xd5de('0x12')],{'raw':_0x3c9a78[_0xd5de('0x13')]?_0x3c9a78[_0xd5de('0x13')][_0xd5de('0x14')]===undefined?!![]:![]:!![]})['then'](function(_0x48f739){logger['info'](_0xd5de('0x15'),_0x3c9a78);logger[_0xd5de('0xd')](_0xd5de('0x15'),_0x3c9a78,JSON[_0xd5de('0x16')](_0x48f739));_0x1ec042(_0x48f739);})[_0xd5de('0x17')](function(_0x5730a7){logger[_0xd5de('0xe')](_0xd5de('0x15'),_0x5730a7[_0xd5de('0xf')],_0x3c9a78);_0x5d7ee2(_0x417ca9[_0xd5de('0xe')](0x1f4,_0x5730a7[_0xd5de('0xf')]));});});};exports[_0xd5de('0x18')]=function(_0x392c0b){var _0x36e652=this;return new Promise(function(_0x231353,_0x147147){return db[_0xd5de('0x19')][_0xd5de('0x1a')](_0x392c0b['body'],{'raw':_0x392c0b[_0xd5de('0x13')]?_0x392c0b['options'][_0xd5de('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x392c0b[_0xd5de('0x13')]?_0x392c0b[_0xd5de('0x13')][_0xd5de('0x1b')]||null:null,'attributes':_0x392c0b[_0xd5de('0x13')]?_0x392c0b[_0xd5de('0x13')][_0xd5de('0x1c')]||null:null,'limit':_0x392c0b[_0xd5de('0x13')]?_0x392c0b['options'][_0xd5de('0x1d')]||null:null})[_0xd5de('0xa')](function(_0xfed992){logger[_0xd5de('0xb')](_0xd5de('0x18'),_0x392c0b);logger['debug'](_0xd5de('0x18'),_0x392c0b,JSON[_0xd5de('0x16')](_0xfed992));_0x231353(_0xfed992);})[_0xd5de('0x17')](function(_0x1552a7){logger[_0xd5de('0xe')](_0xd5de('0x18'),_0x1552a7['message'],_0x392c0b);_0x147147(_0x36e652[_0xd5de('0xe')](0x1f4,_0x1552a7[_0xd5de('0xf')]));});});};
\ No newline at end of file
+var _0x1107=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateVoiceDialReport','create','body','options','raw','catch','UpdateVoiceDialReport','VoiceDialReport','update','where','limit'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x1107,0x1c7));var _0x7110=function(_0x573b76,_0x3fcca8){_0x573b76=_0x573b76-0x0;var _0x22e32c=_0x1107[_0x573b76];return _0x22e32c;};'use strict';var _=require(_0x7110('0x0'));var util=require(_0x7110('0x1'));var moment=require('moment');var BPromise=require(_0x7110('0x2'));var rs=require(_0x7110('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7110('0x4'))['db'];var utils=require(_0x7110('0x5'));var logger=require(_0x7110('0x6'))(_0x7110('0x7'));var config=require(_0x7110('0x8'));var jayson=require(_0x7110('0x9'));var client=jayson[_0x7110('0xa')][_0x7110('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xda1e7f,_0x50212d,_0x2c1832){return new BPromise(function(_0x3f761d,_0x283dab){return client[_0x7110('0xc')](_0xda1e7f,_0x2c1832)[_0x7110('0xd')](function(_0x5efa18){logger[_0x7110('0xe')](_0x7110('0xf'),_0x50212d,'request\x20sent');logger[_0x7110('0x10')](_0x7110('0x11'),_0x50212d,_0x7110('0x12'),JSON[_0x7110('0x13')](_0x5efa18));if(_0x5efa18[_0x7110('0x14')]){if(_0x5efa18[_0x7110('0x14')][_0x7110('0x15')]===0x1f4){logger[_0x7110('0x14')](_0x7110('0xf'),_0x50212d,_0x5efa18[_0x7110('0x14')][_0x7110('0x16')]);return _0x283dab(_0x5efa18[_0x7110('0x14')][_0x7110('0x16')]);}logger['error'](_0x7110('0xf'),_0x50212d,_0x5efa18['error'][_0x7110('0x16')]);return _0x3f761d(_0x5efa18['error'][_0x7110('0x16')]);}else{logger[_0x7110('0xe')](_0x7110('0xf'),_0x50212d,_0x7110('0x12'));_0x3f761d(_0x5efa18[_0x7110('0x17')]['message']);}})['catch'](function(_0x242c18){logger[_0x7110('0x14')](_0x7110('0xf'),_0x50212d,_0x242c18);_0x283dab(_0x242c18);});});}exports[_0x7110('0x18')]=function(_0x32d0db){var _0x3f4e48=this;return new Promise(function(_0x3fa09e,_0x2e7c4b){return db['VoiceDialReport'][_0x7110('0x19')](_0x32d0db[_0x7110('0x1a')],{'raw':_0x32d0db[_0x7110('0x1b')]?_0x32d0db[_0x7110('0x1b')][_0x7110('0x1c')]===undefined?!![]:![]:!![]})[_0x7110('0xd')](function(_0x4ee8ba){logger[_0x7110('0xe')](_0x7110('0x18'),_0x32d0db);logger[_0x7110('0x10')](_0x7110('0x18'),_0x32d0db,JSON['stringify'](_0x4ee8ba));_0x3fa09e(_0x4ee8ba);})[_0x7110('0x1d')](function(_0x14f836){logger[_0x7110('0x14')](_0x7110('0x18'),_0x14f836[_0x7110('0x16')],_0x32d0db);_0x2e7c4b(_0x3f4e48[_0x7110('0x14')](0x1f4,_0x14f836[_0x7110('0x16')]));});});};exports[_0x7110('0x1e')]=function(_0x474786){var _0x537713=this;return new Promise(function(_0x4d0ee5,_0x1fb135){return db[_0x7110('0x1f')][_0x7110('0x20')](_0x474786[_0x7110('0x1a')],{'raw':_0x474786['options']?_0x474786[_0x7110('0x1b')][_0x7110('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x474786[_0x7110('0x1b')]?_0x474786[_0x7110('0x1b')][_0x7110('0x21')]||null:null,'attributes':_0x474786[_0x7110('0x1b')]?_0x474786[_0x7110('0x1b')]['attributes']||null:null,'limit':_0x474786[_0x7110('0x1b')]?_0x474786['options'][_0x7110('0x22')]||null:null})[_0x7110('0xd')](function(_0x5cbc42){logger['info'](_0x7110('0x1e'),_0x474786);logger[_0x7110('0x10')](_0x7110('0x1e'),_0x474786,JSON['stringify'](_0x5cbc42));_0x4d0ee5(_0x5cbc42);})[_0x7110('0x1d')](function(_0x4e77b5){logger[_0x7110('0x14')](_0x7110('0x1e'),_0x4e77b5[_0x7110('0x16')],_0x474786);_0x1fb135(_0x537713[_0x7110('0x14')](0x1f4,_0x4e77b5[_0x7110('0x16')]));});});};
\ No newline at end of file
index d6da83e..6352f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe550=['get','isAuthenticated','index','/:id','show','post','/:id/applications','addApplications','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceExtension.controller'];(function(_0x1cd5e9,_0x151862){var _0x1d488b=function(_0x1418a4){while(--_0x1418a4){_0x1cd5e9['push'](_0x1cd5e9['shift']());}};_0x1d488b(++_0x151862);}(_0xe550,0x19b));var _0x0e55=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe550[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0e55('0x0'));var util=require(_0x0e55('0x1'));var path=require(_0x0e55('0x2'));var timeout=require('connect-timeout');var express=require(_0x0e55('0x3'));var router=express[_0x0e55('0x4')]();var fs_extra=require(_0x0e55('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0e55('0x6'));var config=require(_0x0e55('0x7'));var controller=require(_0x0e55('0x8'));router[_0x0e55('0x9')]('/',auth[_0x0e55('0xa')](),controller[_0x0e55('0xb')]);router[_0x0e55('0x9')](_0x0e55('0xc'),auth['isAuthenticated'](),controller[_0x0e55('0xd')]);router[_0x0e55('0xe')]('/',auth[_0x0e55('0xa')](),controller['create']);router[_0x0e55('0xe')](_0x0e55('0xf'),auth[_0x0e55('0xa')](),controller[_0x0e55('0x10')]);router[_0x0e55('0x11')](_0x0e55('0xc'),auth[_0x0e55('0xa')](),controller['update']);router[_0x0e55('0x12')](_0x0e55('0xc'),auth['isAuthenticated'](),controller[_0x0e55('0x13')]);module[_0x0e55('0x14')]=router;
\ No newline at end of file
+var _0x73e8=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','create','addApplications','update','destroy','util','path','connect-timeout','express','Router'];(function(_0x5452a8,_0x4280af){var _0x4a773a=function(_0x4614f0){while(--_0x4614f0){_0x5452a8['push'](_0x5452a8['shift']());}};_0x4a773a(++_0x4280af);}(_0x73e8,0x1c3));var _0x873e=function(_0x48eb56,_0x43532e){_0x48eb56=_0x48eb56-0x0;var _0x34236c=_0x73e8[_0x48eb56];return _0x34236c;};'use strict';var multer=require('multer');var util=require(_0x873e('0x0'));var path=require(_0x873e('0x1'));var timeout=require(_0x873e('0x2'));var express=require(_0x873e('0x3'));var router=express[_0x873e('0x4')]();var fs_extra=require(_0x873e('0x5'));var auth=require(_0x873e('0x6'));var interaction=require(_0x873e('0x7'));var config=require(_0x873e('0x8'));var controller=require(_0x873e('0x9'));router[_0x873e('0xa')]('/',auth[_0x873e('0xb')](),controller[_0x873e('0xc')]);router['get'](_0x873e('0xd'),auth[_0x873e('0xb')](),controller[_0x873e('0xe')]);router['post']('/',auth[_0x873e('0xb')](),controller[_0x873e('0xf')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0x873e('0x10')]);router['put'](_0x873e('0xd'),auth[_0x873e('0xb')](),controller[_0x873e('0x11')]);router['delete'](_0x873e('0xd'),auth[_0x873e('0xb')](),controller[_0x873e('0x12')]);module['exports']=router;
\ No newline at end of file
index 5315bd1..8c35abc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdff=['STRING','compositeIndex','NoOp','ENUM','inbound-fax','outbound-fax','system','any','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten','exports'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xfdff,0x1df));var _0xffdf=function(_0x3ad449,_0x320d74){_0x3ad449=_0x3ad449-0x0;var _0x315781=_0xfdff[_0x3ad449];return _0x315781;};'use strict';var Sequelize=require('sequelize');module[_0xffdf('0x0')]={'context':{'type':Sequelize[_0xffdf('0x1')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xffdf('0x1')],'allowNull':![],'unique':_0xffdf('0x2')},'priority':{'type':Sequelize[_0xffdf('0x1')],'allowNull':![],'defaultValue':'1','unique':_0xffdf('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xffdf('0x3')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xffdf('0x4')]('inbound','outbound','internal',_0xffdf('0x5'),_0xffdf('0x6'),_0xffdf('0x7'),_0xffdf('0x8')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0xffdf('0x9')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xffdf('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0xffdf('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0xffdf('0xa')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xffdf('0x9')]},'recordingFormat':{'type':Sequelize[_0xffdf('0x1')],'defaultValue':_0xffdf('0xb')},'answer':{'type':Sequelize[_0xffdf('0xa')],'defaultValue':!![]},'name':{'type':Sequelize[_0xffdf('0xc')],'get':function(_0x3fee40){return this[_0xffdf('0xd')](_0xffdf('0xe'));}},'alias':{'type':Sequelize[_0xffdf('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x2037=['inbound','outbound','internal','inbound-fax','system','any','INTEGER','BOOLEAN','wav','getDataValue','exten','sequelize','exports','STRING','compositeIndex','NoOp'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x2037,0x8b));var _0x7203=function(_0x40f991,_0x576819){_0x40f991=_0x40f991-0x0;var _0x38eca2=_0x2037[_0x40f991];return _0x38eca2;};'use strict';var Sequelize=require(_0x7203('0x0'));module[_0x7203('0x1')]={'context':{'type':Sequelize[_0x7203('0x2')],'allowNull':![],'unique':_0x7203('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x7203('0x2')],'allowNull':![],'unique':_0x7203('0x3')},'priority':{'type':Sequelize[_0x7203('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x7203('0x3')},'tag':{'type':Sequelize[_0x7203('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x7203('0x2')],'allowNull':![],'defaultValue':_0x7203('0x4')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x7203('0x5'),_0x7203('0x6'),_0x7203('0x7'),_0x7203('0x8'),'outbound-fax',_0x7203('0x9'),_0x7203('0xa')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x7203('0x2')],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0x7203('0xb')]},'isApp':{'type':Sequelize[_0x7203('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x7203('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x7203('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x7203('0xb')]},'recordingFormat':{'type':Sequelize[_0x7203('0x2')],'defaultValue':_0x7203('0xd')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1ba491){return this[_0x7203('0xe')](_0x7203('0xf'));}},'alias':{'type':Sequelize[_0x7203('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 4a7f761..14e80a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d9=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InboundRoutes','inbound','OutboundRoutes','UserProfileSection','autoAssociation','UserProfileResource','update','context','description','recordingFormat','mandatoryDisposition','alias','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','finally','send','lodash','ioredis','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','json','offset','undefined','count','limit','Content-Range','destroy','then','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','find','type','end','sendStatus','error','stack','VoiceExtension','rawAttributes','fieldName','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','startsWith','exten','concat','user'];(function(_0x4187df,_0x1666a5){var _0x4bf6af=function(_0x41ae93){while(--_0x41ae93){_0x4187df['push'](_0x4187df['shift']());}};_0x4bf6af(++_0x1666a5);}(_0x77d9,0xdd));var _0x977d=function(_0x2edbea,_0xed922c){_0x2edbea=_0x2edbea-0x0;var _0x40a98b=_0x77d9[_0x2edbea];return _0x40a98b;};'use strict';var _=require(_0x977d('0x0'));var Redis=require(_0x977d('0x1'));var qs=require(_0x977d('0x2'));var logger=require('../../config/logger')(_0x977d('0x3'));var config=require('../../config/environment');var db=require(_0x977d('0x4'))['db'];config[_0x977d('0x5')]=_[_0x977d('0x6')](config[_0x977d('0x5')],{'host':_0x977d('0x7'),'port':0x18eb});var socket=require(_0x977d('0x8'))(new Redis(config[_0x977d('0x5')]));require('./voiceExtension.socket')[_0x977d('0x9')](socket);function respondWithStatusCode(_0x46eaa9,_0x49c8bd){_0x49c8bd=_0x49c8bd||0xcc;return function(_0x582c4f){if(_0x582c4f){return _0x46eaa9['sendStatus'](_0x49c8bd);}return _0x46eaa9[_0x977d('0xa')](_0x49c8bd)['end']();};}function respondWithResult(_0x6e54d3,_0x23b539){_0x23b539=_0x23b539||0xc8;return function(_0x37d257){if(_0x37d257){return _0x6e54d3[_0x977d('0xa')](_0x23b539)[_0x977d('0xb')](_0x37d257);}};}function respondWithFilteredResult(_0x342272,_0xfd2c3c){return function(_0x447e5f){if(_0x447e5f){var _0x9cabd2=typeof _0xfd2c3c[_0x977d('0xc')]==='undefined'&&typeof _0xfd2c3c['limit']===_0x977d('0xd');var _0x4235a4=_0x447e5f[_0x977d('0xe')];var _0x9cb780=_0x9cabd2?0x0:_0xfd2c3c[_0x977d('0xc')];var _0x3d9a68=_0x9cabd2?_0x447e5f['count']:_0xfd2c3c[_0x977d('0xc')]+_0xfd2c3c[_0x977d('0xf')];var _0x4ed8e5;if(_0x3d9a68>=_0x4235a4){_0x3d9a68=_0x4235a4;_0x4ed8e5=0xc8;}else{_0x4ed8e5=0xce;}_0x342272[_0x977d('0xa')](_0x4ed8e5);return _0x342272['set'](_0x977d('0x10'),_0x9cb780+'-'+_0x3d9a68+'/'+_0x4235a4)['json'](_0x447e5f);}return null;};}function removeEntity(_0x35e11a){return function(_0xb2b037){if(_0xb2b037){return _0xb2b037[_0x977d('0x11')]()[_0x977d('0x12')](function(){var _0x24cedc=_0xb2b037['get']({'plain':!![]});var _0x29ee8c=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':'OutboundRoutes','value':_0x977d('0x13'),'ignore':![]},{'name':_0x977d('0x14'),'value':_0x977d('0x15'),'ignore':![]}];var _0x1a8d9e=_(_0x29ee8c)[_0x977d('0x16')](_0x977d('0x17'))[_0x977d('0x18')](_0x977d('0x19'))[_0x977d('0x19')]();if(_[_0x977d('0x1a')](_0x1a8d9e,_0x24cedc['type'])){return;}var _0x293493=_[_0x977d('0x1b')](_0x29ee8c,[_0x977d('0x19'),_0x24cedc[_0x977d('0x1c')]])['name'];return db['UserProfileResource']['destroy']({'where':{'type':_0x293493,'resourceId':_0x24cedc['id']}})[_0x977d('0x12')](function(){return _0xb2b037;});})[_0x977d('0x12')](function(){_0x35e11a[_0x977d('0xa')](0xcc)[_0x977d('0x1d')]();});}};}function handleEntityNotFound(_0x1435dd){return function(_0xd0d222){if(!_0xd0d222){_0x1435dd[_0x977d('0x1e')](0x194);}return _0xd0d222;};}function handleError(_0x5cd2b6,_0x5e4ac2){_0x5e4ac2=_0x5e4ac2||0x1f4;return function(_0x156389){logger[_0x977d('0x1f')](_0x156389[_0x977d('0x20')]);if(_0x156389['name']){delete _0x156389['name'];}_0x5cd2b6[_0x977d('0xa')](_0x5e4ac2)['send'](_0x156389);};}exports['index']=function(_0x3a8518,_0x774643){var _0x577d1f={},_0x5c5e31={},_0x37ce4c={'count':0x0,'rows':[]};var _0x48cded=_[_0x977d('0x18')](db[_0x977d('0x21')][_0x977d('0x22')],function(_0x498cb9){return{'name':_0x498cb9[_0x977d('0x23')],'type':_0x498cb9['type']['key']};});_0x5c5e31[_0x977d('0x24')]=_['map'](_0x48cded,_0x977d('0x25'));_0x5c5e31[_0x977d('0x26')]=_[_0x977d('0x27')](_0x3a8518[_0x977d('0x26')]);_0x5c5e31[_0x977d('0x28')]=_[_0x977d('0x29')](_0x5c5e31[_0x977d('0x24')],_0x5c5e31[_0x977d('0x26')]);_0x577d1f[_0x977d('0x2a')]=_[_0x977d('0x29')](_0x5c5e31[_0x977d('0x24')],qs[_0x977d('0x2b')](_0x3a8518[_0x977d('0x26')]['fields']));_0x577d1f[_0x977d('0x2a')]=_0x577d1f[_0x977d('0x2a')][_0x977d('0x2c')]?_0x577d1f[_0x977d('0x2a')]:_0x5c5e31['model'];if(!_0x3a8518[_0x977d('0x26')][_0x977d('0x2d')](_0x977d('0x2e'))){_0x577d1f[_0x977d('0xf')]=qs['limit'](_0x3a8518[_0x977d('0x26')][_0x977d('0xf')]);_0x577d1f[_0x977d('0xc')]=qs[_0x977d('0xc')](_0x3a8518['query']['offset']);}_0x577d1f[_0x977d('0x2f')]=qs[_0x977d('0x30')](_0x3a8518[_0x977d('0x26')]['sort']);_0x577d1f[_0x977d('0x31')]=qs[_0x977d('0x28')](_[_0x977d('0x32')](_0x3a8518[_0x977d('0x26')],_0x5c5e31[_0x977d('0x28')]),_0x48cded);if(_0x3a8518[_0x977d('0x26')][_0x977d('0x16')]){_0x577d1f['where']=_[_0x977d('0x33')](_0x577d1f[_0x977d('0x31')],{'$or':_['map'](_0x48cded,function(_0x18d74d){if(_0x18d74d[_0x977d('0x1c')]!==_0x977d('0x34')){var _0x812d23={};_0x812d23[_0x18d74d['name']]={'$like':'%'+_0x3a8518[_0x977d('0x26')][_0x977d('0x16')]+'%'};return _0x812d23;}})});}_0x577d1f=_[_0x977d('0x33')]({},_0x577d1f,_0x3a8518[_0x977d('0x35')]);var _0x4e0f39={'where':_0x577d1f[_0x977d('0x31')]};return db['VoiceExtension'][_0x977d('0xe')](_0x4e0f39)[_0x977d('0x12')](function(_0x4024ef){_0x37ce4c[_0x977d('0xe')]=_0x4024ef;if(_0x3a8518['query'][_0x977d('0x36')]){_0x577d1f[_0x977d('0x37')]=[{'all':!![]}];}return db[_0x977d('0x21')][_0x977d('0x38')](_0x577d1f);})[_0x977d('0x12')](function(_0x45522e){_0x37ce4c[_0x977d('0x39')]=_0x45522e;return _0x37ce4c;})[_0x977d('0x12')](respondWithFilteredResult(_0x774643,_0x577d1f))[_0x977d('0x3a')](handleError(_0x774643,null));};exports[_0x977d('0x3b')]=function(_0x5605ae,_0x3868ea){var _0x2745e3={'raw':![],'where':{'id':_0x5605ae[_0x977d('0x3c')]['id']}},_0x22ee44={};_0x22ee44['model']=_['keys'](db['VoiceExtension'][_0x977d('0x22')]);_0x22ee44[_0x977d('0x26')]=_[_0x977d('0x27')](_0x5605ae[_0x977d('0x26')]);_0x22ee44[_0x977d('0x28')]=_[_0x977d('0x29')](_0x22ee44[_0x977d('0x24')],_0x22ee44[_0x977d('0x26')]);_0x2745e3['attributes']=_['intersection'](_0x22ee44[_0x977d('0x24')],qs['fields'](_0x5605ae[_0x977d('0x26')]['fields']));_0x2745e3[_0x977d('0x2a')]=_0x2745e3['attributes'][_0x977d('0x2c')]?_0x2745e3[_0x977d('0x2a')]:_0x22ee44[_0x977d('0x24')];if(_0x5605ae[_0x977d('0x26')][_0x977d('0x36')]){_0x2745e3[_0x977d('0x37')]=[{'all':!![]}];}_0x2745e3=_[_0x977d('0x33')]({},_0x2745e3,_0x5605ae[_0x977d('0x35')]);return db[_0x977d('0x21')]['find'](_0x2745e3)[_0x977d('0x12')](handleEntityNotFound(_0x3868ea,null))[_0x977d('0x12')](respondWithResult(_0x3868ea,null))[_0x977d('0x3a')](handleError(_0x3868ea,null));};exports['destroy']=function(_0x482d80,_0x4939d3){return db[_0x977d('0x21')][_0x977d('0x1b')]({'where':{'id':_0x482d80[_0x977d('0x3c')]['id']}})[_0x977d('0x12')](handleEntityNotFound(_0x4939d3,null))[_0x977d('0x12')](removeEntity(_0x4939d3,null))[_0x977d('0x3a')](handleError(_0x4939d3,null));};exports[_0x977d('0x3d')]=function(_0xa3aa83,_0x53d05c){if(_0xa3aa83[_0x977d('0x3e')][_0x977d('0x1c')]==='outbound'&&!_[_0x977d('0x3f')](_0xa3aa83[_0x977d('0x3e')][_0x977d('0x40')],'_')){_0xa3aa83['body'][_0x977d('0x40')]='_'[_0x977d('0x41')](_0xa3aa83[_0x977d('0x3e')][_0x977d('0x40')]);}return db[_0x977d('0x21')][_0x977d('0x3d')](_0xa3aa83[_0x977d('0x3e')],{'raw':![]})[_0x977d('0x12')](function(_0xeacb06){var _0x1888d7=_0xa3aa83[_0x977d('0x42')][_0x977d('0x43')]({'plain':!![]});if(!_0x1888d7)throw new Error(_0x977d('0x44'));if(_0x1888d7[_0x977d('0x45')]===_0x977d('0x42')){var _0x16e3ec=_0xeacb06[_0x977d('0x43')]({'plain':!![]});var _0x4520d3=[{'name':_0x977d('0x46'),'value':_0x977d('0x47')},{'name':_0x977d('0x48'),'value':'outbound'},{'name':_0x977d('0x14'),'value':_0x977d('0x15')}];var _0x2c27c6=_[_0x977d('0x1b')](_0x4520d3,['value',_0x16e3ec['type']])[_0x977d('0x25')];return db[_0x977d('0x49')][_0x977d('0x1b')]({'where':{'name':_0x2c27c6,'userProfileId':_0x1888d7['userProfileId']},'raw':!![]})[_0x977d('0x12')](function(_0x2aabf4){if(_0x2aabf4&&_0x2aabf4[_0x977d('0x4a')]===0x0){return db[_0x977d('0x4b')][_0x977d('0x3d')]({'name':_0x16e3ec[_0x977d('0x25')],'resourceId':_0x16e3ec['id'],'type':_0x2aabf4[_0x977d('0x25')],'sectionId':_0x2aabf4['id']},{})[_0x977d('0x12')](function(){return _0xeacb06;});}else{return _0xeacb06;}})[_0x977d('0x3a')](function(_0x217613){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x217613);throw _0x217613;});}return _0xeacb06;})[_0x977d('0x12')](respondWithResult(_0x53d05c,0xc9))[_0x977d('0x3a')](handleError(_0x53d05c,null));};exports[_0x977d('0x4c')]=function(_0x481864,_0x2178b7){if(_0x481864['body']['id']){delete _0x481864[_0x977d('0x3e')]['id'];}return db[_0x977d('0x21')][_0x977d('0x1b')]({'where':{'id':_0x481864[_0x977d('0x3c')]['id']}})['then'](handleEntityNotFound(_0x2178b7,null))[_0x977d('0x12')](function(_0x3d758b){if(_0x3d758b){return db['VoiceExtension']['update'](_[_0x977d('0x32')](_0x481864['body'],[_0x977d('0x40'),_0x977d('0x4d'),_0x977d('0x4e'),_0x977d('0x4f'),'cutdigits',_0x977d('0x50'),_0x977d('0x51')]),{'where':{'context':_0x3d758b[_0x977d('0x4d')],'exten':_0x3d758b[_0x977d('0x40')]},'individualHooks':!![]})[_0x977d('0x12')](function(_0x112857){return _0x112857;});}return null;})[_0x977d('0x12')](respondWithStatusCode(_0x2178b7,null))[_0x977d('0x3a')](handleError(_0x2178b7,null));};exports[_0x977d('0x52')]=function(_0x227437,_0x5df48c){var _0x6ebc89=_0x227437['params']['id'];var _0x45252b=_0x227437['body'];var _0x3759f0=0xc8;var _0x3d8b98=null;return db['sequelize'][_0x977d('0x53')]({'isolationLevel':db[_0x977d('0x54')][_0x977d('0x55')][_0x977d('0x56')][_0x977d('0x57')]},function(_0x3dbfc9){return db[_0x977d('0x21')][_0x977d('0x58')]({'where':{'id':_0x6ebc89},'transaction':_0x3dbfc9})['then'](function(_0x3dda7c){if(_0x3dda7c){return db['VoiceExtension'][_0x977d('0x11')]({'where':{'VoiceExtensionId':_0x6ebc89},'transaction':_0x3dbfc9})[_0x977d('0x12')](function(){var _0x298cdc=_[_0x977d('0x18')](_0x45252b,function(_0x37fa93){_0x37fa93[_0x977d('0x59')]=_0x6ebc89;_0x37fa93[_0x977d('0x5a')]=!![];return _0x37fa93;});return _0x3dda7c[_0x977d('0x5b')](_0x298cdc);})[_0x977d('0x12')](function(_0x5ed5e4){return db[_0x977d('0x21')][_0x977d('0x5c')](_0x5ed5e4,{'transaction':_0x3dbfc9});});}else{_0x3759f0=0x194;_0x3d8b98=[];}});})['then'](function(){if(_0x3759f0!==0x194){return db['VoiceExtension'][_0x977d('0x5d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x6ebc89},'order':'priority'})['then'](function(_0xd0094b){_0x3d8b98=_0xd0094b;});}})['catch'](function(_0x393c6a){_0x3759f0=0x1f4;logger[_0x977d('0x1f')](_0x393c6a['stack']);if(_0x393c6a[_0x977d('0x25')]){delete _0x393c6a['name'];}_0x3d8b98=_0x393c6a;})[_0x977d('0x5e')](function(){if(_0x3d8b98===null){_0x5df48c[_0x977d('0x1e')](_0x3759f0);}else{if(_0x3759f0===0x1f4){_0x5df48c[_0x977d('0xa')](_0x3759f0)[_0x977d('0x5f')](_0x3d8b98);}else{_0x5df48c[_0x977d('0xa')](_0x3759f0)[_0x977d('0xb')](_0x3d8b98);}}});};
\ No newline at end of file
+var _0xf212=['redis','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','destroy','get','inbound','OutboundRoutes','outbound','internal','filter','ignore','map','value','includes','type','UserProfileResource','then','error','stack','name','send','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','find','create','body','startsWith','exten','concat','user','InboundRoutes','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','cutdigits','mandatoryDisposition','context','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','findOne','VoiceExtensionId','isApp','createRouting','findAndCountAll','priority','finally','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb'];(function(_0x39cad6,_0x1edf41){var _0x5a82f2=function(_0x416563){while(--_0x416563){_0x39cad6['push'](_0x39cad6['shift']());}};_0x5a82f2(++_0x1edf41);}(_0xf212,0x10f));var _0x2f21=function(_0x4187a4,_0xc46314){_0x4187a4=_0x4187a4-0x0;var _0x314076=_0xf212[_0x4187a4];return _0x314076;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0x2f21('0x0'));var logger=require(_0x2f21('0x1'))(_0x2f21('0x2'));var config=require(_0x2f21('0x3'));var db=require(_0x2f21('0x4'))['db'];config[_0x2f21('0x5')]=_['defaults'](config[_0x2f21('0x5')],{'host':_0x2f21('0x6'),'port':0x18eb});var socket=require(_0x2f21('0x7'))(new Redis(config[_0x2f21('0x5')]));require(_0x2f21('0x8'))[_0x2f21('0x9')](socket);function respondWithStatusCode(_0x396d60,_0x64bcc7){_0x64bcc7=_0x64bcc7||0xcc;return function(_0x16e6e8){if(_0x16e6e8){return _0x396d60[_0x2f21('0xa')](_0x64bcc7);}return _0x396d60[_0x2f21('0xb')](_0x64bcc7)[_0x2f21('0xc')]();};}function respondWithResult(_0x16d44f,_0x14f479){_0x14f479=_0x14f479||0xc8;return function(_0x1f8e62){if(_0x1f8e62){return _0x16d44f['status'](_0x14f479)[_0x2f21('0xd')](_0x1f8e62);}};}function respondWithFilteredResult(_0x32ff71,_0x3cc743){return function(_0x2fccfe){if(_0x2fccfe){var _0x4c819e=typeof _0x3cc743[_0x2f21('0xe')]==='undefined'&&typeof _0x3cc743[_0x2f21('0xf')]===_0x2f21('0x10');var _0x6deb34=_0x2fccfe[_0x2f21('0x11')];var _0x15bfe7=_0x4c819e?0x0:_0x3cc743[_0x2f21('0xe')];var _0x3da946=_0x4c819e?_0x2fccfe[_0x2f21('0x11')]:_0x3cc743[_0x2f21('0xe')]+_0x3cc743['limit'];var _0x484714;if(_0x3da946>=_0x6deb34){_0x3da946=_0x6deb34;_0x484714=0xc8;}else{_0x484714=0xce;}_0x32ff71[_0x2f21('0xb')](_0x484714);return _0x32ff71[_0x2f21('0x12')](_0x2f21('0x13'),_0x15bfe7+'-'+_0x3da946+'/'+_0x6deb34)[_0x2f21('0xd')](_0x2fccfe);}return null;};}function removeEntity(_0x442e05){return function(_0x1ddcaf){if(_0x1ddcaf){return _0x1ddcaf[_0x2f21('0x14')]()['then'](function(){var _0xff28b1=_0x1ddcaf[_0x2f21('0x15')]({'plain':!![]});var _0x5065ce=[{'name':'InboundRoutes','value':_0x2f21('0x16'),'ignore':![]},{'name':_0x2f21('0x17'),'value':_0x2f21('0x18'),'ignore':![]},{'name':'InternalRoutes','value':_0x2f21('0x19'),'ignore':![]}];var _0xb6b910=_(_0x5065ce)[_0x2f21('0x1a')](_0x2f21('0x1b'))[_0x2f21('0x1c')](_0x2f21('0x1d'))['value']();if(_[_0x2f21('0x1e')](_0xb6b910,_0xff28b1[_0x2f21('0x1f')])){return;}var _0x50521f=_['find'](_0x5065ce,[_0x2f21('0x1d'),_0xff28b1[_0x2f21('0x1f')]])['name'];return db[_0x2f21('0x20')][_0x2f21('0x14')]({'where':{'type':_0x50521f,'resourceId':_0xff28b1['id']}})[_0x2f21('0x21')](function(){return _0x1ddcaf;});})[_0x2f21('0x21')](function(){_0x442e05[_0x2f21('0xb')](0xcc)[_0x2f21('0xc')]();});}};}function handleEntityNotFound(_0x4c7e57){return function(_0x1dfe79){if(!_0x1dfe79){_0x4c7e57[_0x2f21('0xa')](0x194);}return _0x1dfe79;};}function handleError(_0xb0cac4,_0x17b964){_0x17b964=_0x17b964||0x1f4;return function(_0x1eb7f3){logger[_0x2f21('0x22')](_0x1eb7f3[_0x2f21('0x23')]);if(_0x1eb7f3[_0x2f21('0x24')]){delete _0x1eb7f3[_0x2f21('0x24')];}_0xb0cac4[_0x2f21('0xb')](_0x17b964)[_0x2f21('0x25')](_0x1eb7f3);};}exports['index']=function(_0x348929,_0x5c2268){var _0x6b0477={},_0x19acd7={},_0x104c77={'count':0x0,'rows':[]};var _0x1895e8=_['map'](db[_0x2f21('0x26')][_0x2f21('0x27')],function(_0x212ce2){return{'name':_0x212ce2[_0x2f21('0x28')],'type':_0x212ce2[_0x2f21('0x1f')][_0x2f21('0x29')]};});_0x19acd7[_0x2f21('0x2a')]=_[_0x2f21('0x1c')](_0x1895e8,_0x2f21('0x24'));_0x19acd7[_0x2f21('0x2b')]=_[_0x2f21('0x2c')](_0x348929['query']);_0x19acd7[_0x2f21('0x2d')]=_[_0x2f21('0x2e')](_0x19acd7[_0x2f21('0x2a')],_0x19acd7[_0x2f21('0x2b')]);_0x6b0477['attributes']=_['intersection'](_0x19acd7[_0x2f21('0x2a')],qs[_0x2f21('0x2f')](_0x348929[_0x2f21('0x2b')]['fields']));_0x6b0477[_0x2f21('0x30')]=_0x6b0477[_0x2f21('0x30')][_0x2f21('0x31')]?_0x6b0477['attributes']:_0x19acd7['model'];if(!_0x348929[_0x2f21('0x2b')]['hasOwnProperty'](_0x2f21('0x32'))){_0x6b0477[_0x2f21('0xf')]=qs[_0x2f21('0xf')](_0x348929[_0x2f21('0x2b')][_0x2f21('0xf')]);_0x6b0477[_0x2f21('0xe')]=qs[_0x2f21('0xe')](_0x348929[_0x2f21('0x2b')]['offset']);}_0x6b0477['order']=qs[_0x2f21('0x33')](_0x348929['query'][_0x2f21('0x33')]);_0x6b0477[_0x2f21('0x34')]=qs[_0x2f21('0x2d')](_[_0x2f21('0x35')](_0x348929[_0x2f21('0x2b')],_0x19acd7['filters']),_0x1895e8);if(_0x348929[_0x2f21('0x2b')]['filter']){_0x6b0477[_0x2f21('0x34')]=_['merge'](_0x6b0477[_0x2f21('0x34')],{'$or':_['map'](_0x1895e8,function(_0x1fe360){if(_0x1fe360[_0x2f21('0x1f')]!==_0x2f21('0x36')){var _0x4cac3b={};_0x4cac3b[_0x1fe360['name']]={'$like':'%'+_0x348929[_0x2f21('0x2b')]['filter']+'%'};return _0x4cac3b;}})});}_0x6b0477=_[_0x2f21('0x37')]({},_0x6b0477,_0x348929[_0x2f21('0x38')]);var _0x28748e={'where':_0x6b0477['where']};return db[_0x2f21('0x26')][_0x2f21('0x11')](_0x28748e)['then'](function(_0x1dae1f){_0x104c77[_0x2f21('0x11')]=_0x1dae1f;if(_0x348929[_0x2f21('0x2b')][_0x2f21('0x39')]){_0x6b0477[_0x2f21('0x3a')]=[{'all':!![]}];}return db[_0x2f21('0x26')]['findAll'](_0x6b0477);})[_0x2f21('0x21')](function(_0x334c50){_0x104c77[_0x2f21('0x3b')]=_0x334c50;return _0x104c77;})[_0x2f21('0x21')](respondWithFilteredResult(_0x5c2268,_0x6b0477))[_0x2f21('0x3c')](handleError(_0x5c2268,null));};exports[_0x2f21('0x3d')]=function(_0x2b2bc8,_0x365f72){var _0x2ee6de={'raw':![],'where':{'id':_0x2b2bc8[_0x2f21('0x3e')]['id']}},_0x3573a6={};_0x3573a6['model']=_['keys'](db[_0x2f21('0x26')]['rawAttributes']);_0x3573a6['query']=_[_0x2f21('0x2c')](_0x2b2bc8[_0x2f21('0x2b')]);_0x3573a6[_0x2f21('0x2d')]=_[_0x2f21('0x2e')](_0x3573a6[_0x2f21('0x2a')],_0x3573a6[_0x2f21('0x2b')]);_0x2ee6de[_0x2f21('0x30')]=_[_0x2f21('0x2e')](_0x3573a6[_0x2f21('0x2a')],qs[_0x2f21('0x2f')](_0x2b2bc8['query']['fields']));_0x2ee6de[_0x2f21('0x30')]=_0x2ee6de['attributes'][_0x2f21('0x31')]?_0x2ee6de[_0x2f21('0x30')]:_0x3573a6[_0x2f21('0x2a')];if(_0x2b2bc8[_0x2f21('0x2b')][_0x2f21('0x39')]){_0x2ee6de[_0x2f21('0x3a')]=[{'all':!![]}];}_0x2ee6de=_[_0x2f21('0x37')]({},_0x2ee6de,_0x2b2bc8[_0x2f21('0x38')]);return db[_0x2f21('0x26')][_0x2f21('0x3f')](_0x2ee6de)[_0x2f21('0x21')](handleEntityNotFound(_0x365f72,null))[_0x2f21('0x21')](respondWithResult(_0x365f72,null))[_0x2f21('0x3c')](handleError(_0x365f72,null));};exports[_0x2f21('0x14')]=function(_0x485cf6,_0x1be9cc){return db[_0x2f21('0x26')]['find']({'where':{'id':_0x485cf6[_0x2f21('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1be9cc,null))[_0x2f21('0x21')](removeEntity(_0x1be9cc,null))[_0x2f21('0x3c')](handleError(_0x1be9cc,null));};exports[_0x2f21('0x40')]=function(_0x13055e,_0x475b73){if(_0x13055e[_0x2f21('0x41')][_0x2f21('0x1f')]===_0x2f21('0x18')&&!_[_0x2f21('0x42')](_0x13055e['body'][_0x2f21('0x43')],'_')){_0x13055e['body']['exten']='_'[_0x2f21('0x44')](_0x13055e[_0x2f21('0x41')][_0x2f21('0x43')]);}return db[_0x2f21('0x26')]['create'](_0x13055e['body'],{'raw':![]})['then'](function(_0x18d018){var _0x12da0f=_0x13055e[_0x2f21('0x45')][_0x2f21('0x15')]({'plain':!![]});if(!_0x12da0f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x12da0f['role']==='user'){var _0xa175a=_0x18d018[_0x2f21('0x15')]({'plain':!![]});var _0x29d878=[{'name':_0x2f21('0x46'),'value':_0x2f21('0x16')},{'name':_0x2f21('0x17'),'value':'outbound'},{'name':'InternalRoutes','value':'internal'}];var _0x5e326d=_[_0x2f21('0x3f')](_0x29d878,[_0x2f21('0x1d'),_0xa175a[_0x2f21('0x1f')]])['name'];return db[_0x2f21('0x47')][_0x2f21('0x3f')]({'where':{'name':_0x5e326d,'userProfileId':_0x12da0f[_0x2f21('0x48')]},'raw':!![]})[_0x2f21('0x21')](function(_0xe12356){if(_0xe12356&&_0xe12356[_0x2f21('0x49')]===0x0){return db[_0x2f21('0x20')][_0x2f21('0x40')]({'name':_0xa175a[_0x2f21('0x24')],'resourceId':_0xa175a['id'],'type':_0xe12356[_0x2f21('0x24')],'sectionId':_0xe12356['id']},{})[_0x2f21('0x21')](function(){return _0x18d018;});}else{return _0x18d018;}})[_0x2f21('0x3c')](function(_0x64c25a){logger['error'](_0x2f21('0x4a'),_0x64c25a);throw _0x64c25a;});}return _0x18d018;})[_0x2f21('0x21')](respondWithResult(_0x475b73,0xc9))['catch'](handleError(_0x475b73,null));};exports[_0x2f21('0x4b')]=function(_0x31bb4f,_0xbdb1cf){if(_0x31bb4f[_0x2f21('0x41')]['id']){delete _0x31bb4f[_0x2f21('0x41')]['id'];}return db[_0x2f21('0x26')]['find']({'where':{'id':_0x31bb4f['params']['id']}})[_0x2f21('0x21')](handleEntityNotFound(_0xbdb1cf,null))['then'](function(_0x435fe9){if(_0x435fe9){return db[_0x2f21('0x26')]['update'](_[_0x2f21('0x35')](_0x31bb4f['body'],[_0x2f21('0x43'),'context',_0x2f21('0x4c'),'recordingFormat',_0x2f21('0x4d'),_0x2f21('0x4e'),'alias']),{'where':{'context':_0x435fe9[_0x2f21('0x4f')],'exten':_0x435fe9[_0x2f21('0x43')]},'individualHooks':!![]})[_0x2f21('0x21')](function(_0x23cd3a){return _0x23cd3a;});}return null;})['then'](respondWithStatusCode(_0xbdb1cf,null))['catch'](handleError(_0xbdb1cf,null));};exports[_0x2f21('0x50')]=function(_0x104fea,_0x1dce2d){var _0x2ad0a5=_0x104fea[_0x2f21('0x3e')]['id'];var _0x849357=_0x104fea['body'];var _0x3d6220=0xc8;var _0x7fd40b=null;return db[_0x2f21('0x51')][_0x2f21('0x52')]({'isolationLevel':db[_0x2f21('0x51')][_0x2f21('0x53')][_0x2f21('0x54')]['READ_COMMITTED']},function(_0x22cb4b){return db[_0x2f21('0x26')][_0x2f21('0x55')]({'where':{'id':_0x2ad0a5},'transaction':_0x22cb4b})[_0x2f21('0x21')](function(_0x4e8b8d){if(_0x4e8b8d){return db[_0x2f21('0x26')][_0x2f21('0x14')]({'where':{'VoiceExtensionId':_0x2ad0a5},'transaction':_0x22cb4b})['then'](function(){var _0x56cdd6=_[_0x2f21('0x1c')](_0x849357,function(_0x21d0ce){_0x21d0ce[_0x2f21('0x56')]=_0x2ad0a5;_0x21d0ce[_0x2f21('0x57')]=!![];return _0x21d0ce;});return _0x4e8b8d[_0x2f21('0x58')](_0x56cdd6);})['then'](function(_0x143e8a){return db[_0x2f21('0x26')]['bulkCreate'](_0x143e8a,{'transaction':_0x22cb4b});});}else{_0x3d6220=0x194;_0x7fd40b=[];}});})[_0x2f21('0x21')](function(){if(_0x3d6220!==0x194){return db[_0x2f21('0x26')][_0x2f21('0x59')]({'where':{'isApp':!![],'VoiceExtensionId':_0x2ad0a5},'order':_0x2f21('0x5a')})[_0x2f21('0x21')](function(_0x5b6012){_0x7fd40b=_0x5b6012;});}})['catch'](function(_0x354f30){_0x3d6220=0x1f4;logger[_0x2f21('0x22')](_0x354f30[_0x2f21('0x23')]);if(_0x354f30[_0x2f21('0x24')]){delete _0x354f30[_0x2f21('0x24')];}_0x7fd40b=_0x354f30;})[_0x2f21('0x5b')](function(){if(_0x7fd40b===null){_0x1dce2d[_0x2f21('0xa')](_0x3d6220);}else{if(_0x3d6220===0x1f4){_0x1dce2d[_0x2f21('0xb')](_0x3d6220)[_0x2f21('0x25')](_0x7fd40b);}else{_0x1dce2d[_0x2f21('0xb')](_0x3d6220)['json'](_0x7fd40b);}}});};
\ No newline at end of file
index c465c08..e63c499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f46=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save'];(function(_0x127d0c,_0xf40d36){var _0x37ea72=function(_0x2d3b1c){while(--_0x2d3b1c){_0x127d0c['push'](_0x127d0c['shift']());}};_0x37ea72(++_0xf40d36);}(_0x6f46,0x1e5));var _0x66f4=function(_0x115f04,_0xdcc29){_0x115f04=_0x115f04-0x0;var _0x204445=_0x6f46[_0x115f04];return _0x204445;};'use strict';var EventEmitter=require(_0x66f4('0x0'));var VoiceExtension=require(_0x66f4('0x1'))['db'][_0x66f4('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x66f4('0x3')](0x0);var events={'afterCreate':_0x66f4('0x4'),'afterUpdate':_0x66f4('0x5'),'afterDestroy':_0x66f4('0x6')};function emitEvent(_0x13324c){return function(_0x54d94b,_0x35c767,_0x5e7817){VoiceExtensionEvents[_0x66f4('0x7')](_0x13324c+':'+_0x54d94b['id'],_0x54d94b);VoiceExtensionEvents[_0x66f4('0x7')](_0x13324c,_0x54d94b);_0x5e7817(null);};}for(var e in events){if(events[_0x66f4('0x8')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x66f4('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0xbd09=['emit','hasOwnProperty','hook','events','VoiceExtension','save','update'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xbd09,0x1ca));var _0x9bd0=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbd09[_0x6c993a];return _0x27f547;};'use strict';var EventEmitter=require(_0x9bd0('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0x9bd0('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9bd0('0x2'),'afterUpdate':_0x9bd0('0x3'),'afterDestroy':'remove'};function emitEvent(_0x211e3e){return function(_0x11015f,_0x3e2eef,_0x248a09){VoiceExtensionEvents[_0x9bd0('0x4')](_0x211e3e+':'+_0x11015f['id'],_0x11015f);VoiceExtensionEvents[_0x9bd0('0x4')](_0x211e3e,_0x11015f);_0x248a09(null);};}for(var e in events){if(events[_0x9bd0('0x5')](e)){var event=events[e];VoiceExtension[_0x9bd0('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index ae2133a..615326b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f2b=['Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','filter','toLowerCase','tag','CDR(tag)=','callerID','NoOp(No\x20number\x20available)','hasOwnProperty','answer','includes','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appdata','priority','concat','last','catch','define','VoiceExtension','get','Hangup','lodash','exports','type','Set','CDR(type)=','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','exten','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','split','length','name','phone','param','prefix','SIP','join','none','indexOf','U(xcally-mixmonitor-context)','isEmpty'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x3f2b,0x72));var _0xb3f2=function(_0x368fc3,_0x2b7c2c){_0x368fc3=_0x368fc3-0x0;var _0x1fa4b2=_0x3f2b[_0x368fc3];return _0x1fa4b2;};'use strict';var _=require(_0xb3f2('0x0'));var attributes=require('./voiceExtension.attributes');module[_0xb3f2('0x1')]=function(_0x2b7ec4){var _0x141125=_0x2b7ec4['models'];function _0x4b6cfc(_0xf47d27){var _0x4e3b02=0x2;var _0x51cc61=[{'type':_0xf47d27[_0xb3f2('0x2')],'app':_0xb3f2('0x3'),'appdata':_0xb3f2('0x4')+_0xf47d27[_0xb3f2('0x2')],'context':_0xf47d27['context'],'exten':_0xf47d27['exten'],'priority':_0x4e3b02++,'VoiceExtensionId':_0xf47d27['id']},{'type':_0xf47d27[_0xb3f2('0x2')],'app':_0xf47d27[_0xb3f2('0x5')]?_0xb3f2('0x3'):_0xb3f2('0x6'),'appdata':_0xf47d27[_0xb3f2('0x5')]?_0xb3f2('0x7')+_0xf47d27[_0xb3f2('0x5')]:_0xb3f2('0x8'),'context':_0xf47d27[_0xb3f2('0x9')],'exten':_0xf47d27[_0xb3f2('0xa')],'priority':_0x4e3b02++,'VoiceExtensionId':_0xf47d27['id']}];if(_0xf47d27[_0xb3f2('0x2')]===_0xb3f2('0xb')){_0x51cc61[_0xb3f2('0xc')]({'type':_0xb3f2('0xb'),'app':_0xb3f2('0x3'),'appdata':'CDR(routeid)='+_0xf47d27['id'],'context':_0xf47d27[_0xb3f2('0x9')],'exten':_0xf47d27['exten'],'priority':_0x4e3b02++,'VoiceExtensionId':_0xf47d27['id']});}_0x51cc61[_0xb3f2('0xc')]({'type':_0xf47d27[_0xb3f2('0x2')],'app':'Set','appdata':_0xb3f2('0xd'),'context':_0xf47d27[_0xb3f2('0x9')],'exten':_0xf47d27[_0xb3f2('0xa')],'priority':_0x4e3b02++,'VoiceExtensionId':_0xf47d27['id']},{'type':_0xf47d27['type'],'app':_0xb3f2('0x3'),'appdata':_0xb3f2('0xe'),'context':_0xf47d27[_0xb3f2('0x9')],'exten':_0xf47d27[_0xb3f2('0xa')],'priority':_0x4e3b02++,'VoiceExtensionId':_0xf47d27['id']},{'type':_0xf47d27[_0xb3f2('0x2')],'app':_0xb3f2('0x3'),'appdata':_0xb3f2('0xf'),'context':_0xf47d27['context'],'exten':_0xf47d27[_0xb3f2('0xa')],'priority':_0x4e3b02++,'VoiceExtensionId':_0xf47d27['id']});return _0x51cc61;}function _0x3da8df(_0x1baecc){var _0x37fe28=0x2;var _0x7afd92=[{'type':_0xb3f2('0x10'),'app':'Set','appdata':'CDR(type)=outbound','context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc[_0xb3f2('0xa')],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':_0xb3f2('0x10'),'app':_0x1baecc['alias']?_0xb3f2('0x3'):'NoOp','appdata':_0x1baecc[_0xb3f2('0x5')]?_0xb3f2('0x7')+_0x1baecc[_0xb3f2('0x5')]:_0xb3f2('0x8'),'context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc[_0xb3f2('0xa')],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':'outbound','app':_0xb3f2('0x3'),'appdata':_0xb3f2('0x11')+(_0x1baecc['cutdigits']?_0xb3f2('0x12')+_0x1baecc[_0xb3f2('0x13')]+'}':_0xb3f2('0x14')),'context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc['exten'],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':_0xb3f2('0x10'),'app':_0xb3f2('0x3'),'appdata':_0xb3f2('0x15')+_0x1baecc['id'],'context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc['exten'],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':'outbound','app':_0xb3f2('0x16'),'appdata':_0xb3f2('0x17')+(_0x37fe28+0x2)+_0xb3f2('0x18')+(_0x37fe28+0x1)+')','context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc[_0xb3f2('0xa')],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':_0xb3f2('0x10'),'app':_0xb3f2('0x3'),'appdata':_0x1baecc[_0xb3f2('0x13')]?_0xb3f2('0x19')+_0x1baecc['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x1baecc['context'],'exten':_0x1baecc[_0xb3f2('0xa')],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':'outbound','app':'Set','appdata':_0xb3f2('0xd'),'context':_0x1baecc['context'],'exten':_0x1baecc['exten'],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':_0xb3f2('0x10'),'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc[_0xb3f2('0xa')],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':_0xb3f2('0x10'),'app':_0xb3f2('0x3'),'appdata':'MONITOR_OPTIONS=ab','context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc[_0xb3f2('0xa')],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':_0xb3f2('0x10'),'app':_0xb3f2('0x3'),'appdata':_0xb3f2('0x1a')+_0x1baecc['id'],'context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc['exten'],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']}];if(_0x1baecc['hasOwnProperty'](_0xb3f2('0x1b'))&&_0x1baecc['recordingFormat']!=='none'){_0x7afd92['push']({'type':_0xb3f2('0x10'),'app':'Set','appdata':_0xb3f2('0x1c'),'context':_0x1baecc[_0xb3f2('0x9')],'exten':_0x1baecc['exten'],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']},{'type':'outbound','app':_0xb3f2('0x3'),'appdata':_0xb3f2('0x1d')+_0x1baecc[_0xb3f2('0x1b')]||_0xb3f2('0x1e'),'context':_0x1baecc['context'],'exten':_0x1baecc['exten'],'priority':_0x37fe28++,'VoiceExtensionId':_0x1baecc['id']});}return _0x7afd92;}function _0x539558(_0x3826f4,_0x3b3ec9){var _0x3d466a=[{'name':_0xb3f2('0x1f'),'param':0x0},{'name':_0xb3f2('0x20'),'param':0x1},{'name':_0xb3f2('0x21'),'param':0x2},{'name':'url','param':0x3}];var _0x5690a1={};var _0x1e79ac=_0x3b3ec9[_0xb3f2('0x22')](',');var _0x30ac92=[];for(var _0x1a2635=0x0;_0x1a2635<_0x3d466a[_0xb3f2('0x23')];_0x1a2635++){switch(_0x3d466a[_0x1a2635][_0xb3f2('0x24')]){case _0xb3f2('0x1f'):_0x5690a1['trunk']=_0x1e79ac[_0x3d466a[_0x1a2635]['param']][_0xb3f2('0x22')]('/')[0x1];_0x5690a1[_0xb3f2('0x25')]=_0x1e79ac[_0x3d466a[_0x1a2635][_0xb3f2('0x26')]][_0xb3f2('0x22')]('/')[0x2];_0x5690a1[_0xb3f2('0x27')]=_0x5690a1[_0xb3f2('0x25')]?_0x5690a1[_0xb3f2('0x25')][_0xb3f2('0x22')]('$')[0x0]:undefined;_0x5690a1['phone']=_0x3826f4[_0xb3f2('0x13')]?(_0x5690a1['prefix']||'')+_0xb3f2('0x12')+_0x3826f4[_0xb3f2('0x13')]+'}':(_0x5690a1[_0xb3f2('0x27')]||'')+_0xb3f2('0x14');_0x30ac92[_0x3d466a[_0x1a2635]['param']]=[_0xb3f2('0x28'),_0x5690a1['trunk'],_0x5690a1['phone']][_0xb3f2('0x29')]('/');break;case _0xb3f2('0x21'):_0x5690a1[_0xb3f2('0x21')]=_0x1e79ac[_0x3d466a[_0x1a2635]['param']];if(_0x3826f4[_0xb3f2('0x1b')]!==_0xb3f2('0x2a')){if(_0x5690a1[_0xb3f2('0x21')][_0xb3f2('0x2b')](_0xb3f2('0x2c'))<0x0){_0x5690a1['options']+='U(xcally-mixmonitor-context)';}}else{_0x5690a1[_0xb3f2('0x21')]=_0x5690a1['options']['replace'](_0xb3f2('0x2c'),'');}_0x30ac92[_0x3d466a[_0x1a2635]['param']]=_0x5690a1[_0xb3f2('0x21')];break;default:_0x30ac92[_0x3d466a[_0x1a2635][_0xb3f2('0x26')]]=_0x1e79ac[_0x3d466a[_0x1a2635][_0xb3f2('0x26')]];}}return _0x30ac92['join'](',');}function _0x54f9d2(_0x5d9fd5,_0x5e3e5e,_0x31f03d){return new Promise(function(_0x8c5b16,_0x159095){var _0x56dc16=[];if(_[_0xb3f2('0x2d')](_0x5e3e5e))return _0x8c5b16(_0x56dc16);_0x141125[_0xb3f2('0x2e')][_0xb3f2('0x2f')]({'attributes':['id',_0xb3f2('0x30'),_0xb3f2('0x31')],'raw':!![]})[_0xb3f2('0x32')](function(_0x38162e){for(var _0x4e2c3e=0x0,_0x33e0d5=0x0;_0x4e2c3e<_0x5e3e5e['length'];_0x4e2c3e++,_0x33e0d5=0x0){var _0x49cfb5=_0x5e3e5e[_0x4e2c3e];var _0x19f8c5=[];var _0x1247e1=[];delete _0x49cfb5['id'];if(_0x49cfb5[_0xb3f2('0x30')]!==_0xb3f2('0x33')){_0x49cfb5[_0xb3f2('0x34')]=[_0x49cfb5['interval']];}else{_0x49cfb5[_0xb3f2('0x34')]=_0x49cfb5[_0xb3f2('0x31')]?_['map'](_[_0xb3f2('0x35')](_0x38162e,{'IntervalId':_0x49cfb5['IntervalId']}),_0xb3f2('0x30')):[];}_0x49cfb5[_0xb3f2('0x9')]=_0x5d9fd5[_0xb3f2('0x9')];_0x49cfb5[_0xb3f2('0xa')]=_0x5d9fd5[_0xb3f2('0xa')];if(_0x49cfb5[_0xb3f2('0x2')])_0x49cfb5[_0xb3f2('0x2')]=_0x49cfb5['type'][_0xb3f2('0x36')]();if(_0x5d9fd5['type']===_0xb3f2('0x10')){if(_0x49cfb5['hasOwnProperty'](_0xb3f2('0x37'))&&_0x49cfb5['tag']&&_0x49cfb5[_0xb3f2('0x37')]!=='--'){_0x19f8c5[_0xb3f2('0xc')]({'type':_0x49cfb5[_0xb3f2('0x2')][_0xb3f2('0x36')](),'app':_0xb3f2('0x3'),'appdata':_0xb3f2('0x38')+_0x49cfb5[_0xb3f2('0x37')],'context':_0x5d9fd5[_0xb3f2('0x9')],'exten':_0x5d9fd5['exten'],'priority':_0x49cfb5[_0xb3f2('0x34')][_0xb3f2('0x23')]+_0x31f03d+_0x33e0d5++,'VoiceExtensionId':_0x5d9fd5['id']});}_0x19f8c5[_0xb3f2('0xc')]({'type':_0x49cfb5[_0xb3f2('0x2')][_0xb3f2('0x36')](),'app':_0xb3f2('0x16'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x49cfb5[_0xb3f2('0x39')]?'Set(CALLERID(all)='+_0x49cfb5[_0xb3f2('0x39')]+')':_0xb3f2('0x3a')),'context':_0x5d9fd5[_0xb3f2('0x9')],'exten':_0x5d9fd5['exten'],'priority':_0x49cfb5[_0xb3f2('0x34')]['length']+_0x31f03d+_0x33e0d5++,'VoiceExtensionId':_0x5d9fd5['id']});}else{if(_0x49cfb5[_0xb3f2('0x3b')](_0xb3f2('0x3c'))){if(['queue','playback'][_0xb3f2('0x3d')](_0x49cfb5[_0xb3f2('0x3e')][_0xb3f2('0x36')]())&&_0x49cfb5[_0xb3f2('0x3f')]!=='custom'){if(_0x49cfb5[_0xb3f2('0x3c')]){_0x19f8c5[_0xb3f2('0xc')]({'type':_0x49cfb5[_0xb3f2('0x2')][_0xb3f2('0x36')](),'app':_0xb3f2('0x16'),'appdata':_0xb3f2('0x40'),'context':_0x5d9fd5[_0xb3f2('0x9')],'exten':_0x5d9fd5[_0xb3f2('0xa')],'priority':_0x49cfb5[_0xb3f2('0x34')]['length']+_0x31f03d+_0x33e0d5++,'VoiceExtensionId':_0x5d9fd5['id']});_0x19f8c5['push']({'type':_0x49cfb5['type'][_0xb3f2('0x36')](),'app':'Set','appdata':_0xb3f2('0x41'),'context':_0x5d9fd5['context'],'exten':_0x5d9fd5[_0xb3f2('0xa')],'priority':_0x49cfb5[_0xb3f2('0x34')][_0xb3f2('0x23')]+_0x31f03d+_0x33e0d5++,'VoiceExtensionId':_0x5d9fd5['id']});}else{_0x19f8c5[_0xb3f2('0xc')]({'type':_0x49cfb5['type'][_0xb3f2('0x36')](),'app':_0xb3f2('0x16'),'appdata':_0xb3f2('0x42'),'context':_0x5d9fd5[_0xb3f2('0x9')],'exten':_0x5d9fd5[_0xb3f2('0xa')],'priority':_0x49cfb5[_0xb3f2('0x34')][_0xb3f2('0x23')]+_0x31f03d+_0x33e0d5++,'VoiceExtensionId':_0x5d9fd5['id']});_0x19f8c5['push']({'type':_0x49cfb5[_0xb3f2('0x2')]['toLowerCase'](),'app':_0xb3f2('0x3'),'appdata':_0xb3f2('0x43'),'context':_0x5d9fd5[_0xb3f2('0x9')],'exten':_0x5d9fd5['exten'],'priority':_0x49cfb5['intervals']['length']+_0x31f03d+_0x33e0d5++,'VoiceExtensionId':_0x5d9fd5['id']});}}}}for(var _0x5083ff=0x0;_0x5083ff<_0x49cfb5[_0xb3f2('0x34')][_0xb3f2('0x23')];_0x5083ff++){var _0x22c316=_0x31f03d+_0x49cfb5[_0xb3f2('0x34')][_0xb3f2('0x23')];var _0x22ff32=_0x5083ff===_0x49cfb5['intervals'][_0xb3f2('0x23')]-0x1?_0x31f03d+_0x19f8c5['length']+_0x1247e1[_0xb3f2('0x23')]+0x2:_0x31f03d+_0x5083ff+0x1;_0x19f8c5[_0xb3f2('0x44')](_0x5083ff,0x0,{'type':_0x5d9fd5[_0xb3f2('0x2')],'app':_0xb3f2('0x45'),'appdata':_0x49cfb5[_0xb3f2('0x34')][_0x5083ff]+'?'+_0x5d9fd5['context']+_0xb3f2('0x46')+_0x22c316+':'+_0x5d9fd5[_0xb3f2('0x9')]+_0xb3f2('0x46')+_0x22ff32,'exten':_0x5d9fd5[_0xb3f2('0xa')],'context':_0x5d9fd5[_0xb3f2('0x9')],'priority':_0x31f03d+_0x5083ff,'VoiceExtensionId':_0x5d9fd5['id']});}if(_0x49cfb5[_0xb3f2('0x3f')]==='outboundDial')_0x49cfb5[_0xb3f2('0x47')]=_0x539558(_0x5d9fd5,_0x49cfb5[_0xb3f2('0x47')]);_0x49cfb5['priority']=_0x19f8c5[_0xb3f2('0x23')]?_['last'](_0x19f8c5)[_0xb3f2('0x48')]+0x1:_0x31f03d;_0x56dc16=_[_0xb3f2('0x49')](_0x56dc16,_0x19f8c5,[_0x49cfb5],_0x1247e1);_0x31f03d=_[_0xb3f2('0x4a')](_0x56dc16)[_0xb3f2('0x48')]+0x1;}return _0x8c5b16(_0x56dc16);})[_0xb3f2('0x4b')](function(_0x304f1a){_0x159095(_0x304f1a);});});}return _0x2b7ec4[_0xb3f2('0x4c')](_0xb3f2('0x4d'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x64c6bd){var _0x1181c6=this[_0xb3f2('0x4e')]({'plain':!![]});var _0x32621f=_0x1181c6['type']===_0xb3f2('0x10')?_0x3da8df(_0x1181c6):_0x4b6cfc(_0x1181c6);return _0x54f9d2(_0x1181c6,_0x64c6bd,_[_0xb3f2('0x4a')](_0x32621f)[_0xb3f2('0x48')]+0x1)[_0xb3f2('0x32')](function(_0x11aff8){var _0x541185=_[_0xb3f2('0x49')](_0x32621f,_0x11aff8);_0x541185[_0xb3f2('0xc')]({'type':_0x1181c6[_0xb3f2('0x2')],'app':_0xb3f2('0x4f'),'exten':_0x1181c6['exten'],'context':_0x1181c6[_0xb3f2('0x9')],'priority':_[_0xb3f2('0x4a')](_0x541185)[_0xb3f2('0x48')]+0x1,'VoiceExtensionId':_0x1181c6['id']});return _0x541185;});}}});};
\ No newline at end of file
+var _0xe9e8=['length','name','param','phone','prefix','SIP','join','none','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','playback','app','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime','appdata','priority','last','concat','catch','define','VoiceExtension','get','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','exten','alias','NoOp','No\x20alias\x20set','context','inbound','push','CDR(routeid)=','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split'];(function(_0x3bda6b,_0x265774){var _0x4b2a2f=function(_0x2a7cc8){while(--_0x2a7cc8){_0x3bda6b['push'](_0x3bda6b['shift']());}};_0x4b2a2f(++_0x265774);}(_0xe9e8,0x179));var _0x8e9e=function(_0x57f719,_0x4d0128){_0x57f719=_0x57f719-0x0;var _0x4f79d2=_0xe9e8[_0x57f719];return _0x4f79d2;};'use strict';var _=require(_0x8e9e('0x0'));var attributes=require(_0x8e9e('0x1'));module[_0x8e9e('0x2')]=function(_0x38b3cb){var _0x1a564e=_0x38b3cb[_0x8e9e('0x3')];function _0x398891(_0x48f1bc){var _0x1508fb=0x2;var _0x497f2a=[{'type':_0x48f1bc[_0x8e9e('0x4')],'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x6')+_0x48f1bc['type'],'context':_0x48f1bc['context'],'exten':_0x48f1bc[_0x8e9e('0x7')],'priority':_0x1508fb++,'VoiceExtensionId':_0x48f1bc['id']},{'type':_0x48f1bc[_0x8e9e('0x4')],'app':_0x48f1bc[_0x8e9e('0x8')]?_0x8e9e('0x5'):_0x8e9e('0x9'),'appdata':_0x48f1bc[_0x8e9e('0x8')]?'CDR(routeAlias)='+_0x48f1bc['alias']:_0x8e9e('0xa'),'context':_0x48f1bc[_0x8e9e('0xb')],'exten':_0x48f1bc[_0x8e9e('0x7')],'priority':_0x1508fb++,'VoiceExtensionId':_0x48f1bc['id']}];if(_0x48f1bc[_0x8e9e('0x4')]===_0x8e9e('0xc')){_0x497f2a[_0x8e9e('0xd')]({'type':_0x8e9e('0xc'),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0xe')+_0x48f1bc['id'],'context':_0x48f1bc[_0x8e9e('0xb')],'exten':_0x48f1bc[_0x8e9e('0x7')],'priority':_0x1508fb++,'VoiceExtensionId':_0x48f1bc['id']});}_0x497f2a[_0x8e9e('0xd')]({'type':_0x48f1bc[_0x8e9e('0x4')],'app':_0x8e9e('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x48f1bc[_0x8e9e('0xb')],'exten':_0x48f1bc[_0x8e9e('0x7')],'priority':_0x1508fb++,'VoiceExtensionId':_0x48f1bc['id']},{'type':_0x48f1bc[_0x8e9e('0x4')],'app':_0x8e9e('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x48f1bc[_0x8e9e('0xb')],'exten':_0x48f1bc['exten'],'priority':_0x1508fb++,'VoiceExtensionId':_0x48f1bc['id']},{'type':_0x48f1bc[_0x8e9e('0x4')],'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0xf'),'context':_0x48f1bc['context'],'exten':_0x48f1bc['exten'],'priority':_0x1508fb++,'VoiceExtensionId':_0x48f1bc['id']});return _0x497f2a;}function _0x20220a(_0xe80653){var _0x5b62ca=0x2;var _0x1bddc7=[{'type':_0x8e9e('0x10'),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x11'),'context':_0xe80653['context'],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':'outbound','app':_0xe80653[_0x8e9e('0x8')]?_0x8e9e('0x5'):_0x8e9e('0x9'),'appdata':_0xe80653[_0x8e9e('0x8')]?'CDR(routeAlias)='+_0xe80653['alias']:'No\x20alias\x20set','context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':_0x8e9e('0x10'),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x12')+(_0xe80653[_0x8e9e('0x13')]?_0x8e9e('0x14')+_0xe80653[_0x8e9e('0x13')]+'}':_0x8e9e('0x15')),'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':_0x8e9e('0x10'),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0xe')+_0xe80653['id'],'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653['exten'],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':_0x8e9e('0x10'),'app':'ExecIf','appdata':_0x8e9e('0x16')+(_0x5b62ca+0x2)+_0x8e9e('0x17')+(_0x5b62ca+0x1)+')','context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':_0x8e9e('0x10'),'app':_0x8e9e('0x5'),'appdata':_0xe80653[_0x8e9e('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0xe80653[_0x8e9e('0x13')]+'}':_0x8e9e('0x18'),'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':_0x8e9e('0x10'),'app':'Set','appdata':_0x8e9e('0x19'),'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':'outbound','app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x1a'),'context':_0xe80653['context'],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':_0x8e9e('0x10'),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0xf'),'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':'outbound','app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x1b')+_0xe80653['id'],'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']}];if(_0xe80653[_0x8e9e('0x1c')](_0x8e9e('0x1d'))&&_0xe80653['recordingFormat']!=='none'){_0x1bddc7[_0x8e9e('0xd')]({'type':_0x8e9e('0x10'),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x1e'),'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653['exten'],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']},{'type':_0x8e9e('0x10'),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x1f')+_0xe80653[_0x8e9e('0x1d')]||_0x8e9e('0x20'),'context':_0xe80653[_0x8e9e('0xb')],'exten':_0xe80653[_0x8e9e('0x7')],'priority':_0x5b62ca++,'VoiceExtensionId':_0xe80653['id']});}return _0x1bddc7;}function _0x3f6caa(_0x5f0e5b,_0x597609){var _0x52f57f=[{'name':_0x8e9e('0x21'),'param':0x0},{'name':_0x8e9e('0x22'),'param':0x1},{'name':_0x8e9e('0x23'),'param':0x2},{'name':_0x8e9e('0x24'),'param':0x3}];var _0x574954={};var _0x142676=_0x597609[_0x8e9e('0x25')](',');var _0x2cda50=[];for(var _0x1ea9c0=0x0;_0x1ea9c0<_0x52f57f[_0x8e9e('0x26')];_0x1ea9c0++){switch(_0x52f57f[_0x1ea9c0][_0x8e9e('0x27')]){case _0x8e9e('0x21'):_0x574954['trunk']=_0x142676[_0x52f57f[_0x1ea9c0][_0x8e9e('0x28')]][_0x8e9e('0x25')]('/')[0x1];_0x574954[_0x8e9e('0x29')]=_0x142676[_0x52f57f[_0x1ea9c0][_0x8e9e('0x28')]]['split']('/')[0x2];_0x574954[_0x8e9e('0x2a')]=_0x574954[_0x8e9e('0x29')]?_0x574954[_0x8e9e('0x29')][_0x8e9e('0x25')]('$')[0x0]:undefined;_0x574954['phone']=_0x5f0e5b[_0x8e9e('0x13')]?(_0x574954[_0x8e9e('0x2a')]||'')+_0x8e9e('0x14')+_0x5f0e5b[_0x8e9e('0x13')]+'}':(_0x574954[_0x8e9e('0x2a')]||'')+'${EXTEN}';_0x2cda50[_0x52f57f[_0x1ea9c0]['param']]=[_0x8e9e('0x2b'),_0x574954[_0x8e9e('0x21')],_0x574954['phone']][_0x8e9e('0x2c')]('/');break;case'options':_0x574954[_0x8e9e('0x23')]=_0x142676[_0x52f57f[_0x1ea9c0][_0x8e9e('0x28')]];if(_0x5f0e5b[_0x8e9e('0x1d')]!==_0x8e9e('0x2d')){if(_0x574954['options'][_0x8e9e('0x2e')]('U(xcally-mixmonitor-context)')<0x0){_0x574954[_0x8e9e('0x23')]+=_0x8e9e('0x2f');}}else{_0x574954[_0x8e9e('0x23')]=_0x574954[_0x8e9e('0x23')][_0x8e9e('0x30')](_0x8e9e('0x2f'),'');}_0x2cda50[_0x52f57f[_0x1ea9c0][_0x8e9e('0x28')]]=_0x574954[_0x8e9e('0x23')];break;default:_0x2cda50[_0x52f57f[_0x1ea9c0]['param']]=_0x142676[_0x52f57f[_0x1ea9c0]['param']];}}return _0x2cda50['join'](',');}function _0x240164(_0x52094c,_0x1d5d79,_0x2f3c12){return new Promise(function(_0x5802bf,_0x2bb2f2){var _0x4c747b=[];if(_[_0x8e9e('0x31')](_0x1d5d79))return _0x5802bf(_0x4c747b);_0x1a564e[_0x8e9e('0x32')][_0x8e9e('0x33')]({'attributes':['id',_0x8e9e('0x34'),_0x8e9e('0x35')],'raw':!![]})[_0x8e9e('0x36')](function(_0x31c134){for(var _0x2d7a86=0x0,_0x1b6d8a=0x0;_0x2d7a86<_0x1d5d79[_0x8e9e('0x26')];_0x2d7a86++,_0x1b6d8a=0x0){var _0x41b9e4=_0x1d5d79[_0x2d7a86];var _0x58bd25=[];var _0x150db7=[];delete _0x41b9e4['id'];if(_0x41b9e4[_0x8e9e('0x34')]!==_0x8e9e('0x37')){_0x41b9e4[_0x8e9e('0x38')]=[_0x41b9e4[_0x8e9e('0x34')]];}else{_0x41b9e4['intervals']=_0x41b9e4[_0x8e9e('0x35')]?_[_0x8e9e('0x39')](_['filter'](_0x31c134,{'IntervalId':_0x41b9e4[_0x8e9e('0x35')]}),_0x8e9e('0x34')):[];}_0x41b9e4['context']=_0x52094c[_0x8e9e('0xb')];_0x41b9e4[_0x8e9e('0x7')]=_0x52094c[_0x8e9e('0x7')];if(_0x41b9e4[_0x8e9e('0x4')])_0x41b9e4['type']=_0x41b9e4[_0x8e9e('0x4')]['toLowerCase']();if(_0x52094c['type']===_0x8e9e('0x10')){if(_0x41b9e4['hasOwnProperty'](_0x8e9e('0x3a'))&&_0x41b9e4['tag']&&_0x41b9e4['tag']!=='--'){_0x58bd25[_0x8e9e('0xd')]({'type':_0x41b9e4[_0x8e9e('0x4')][_0x8e9e('0x3b')](),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x3c')+_0x41b9e4[_0x8e9e('0x3a')],'context':_0x52094c[_0x8e9e('0xb')],'exten':_0x52094c[_0x8e9e('0x7')],'priority':_0x41b9e4['intervals'][_0x8e9e('0x26')]+_0x2f3c12+_0x1b6d8a++,'VoiceExtensionId':_0x52094c['id']});}_0x58bd25[_0x8e9e('0xd')]({'type':_0x41b9e4[_0x8e9e('0x4')][_0x8e9e('0x3b')](),'app':'ExecIf','appdata':_0x8e9e('0x3d')+(_0x41b9e4[_0x8e9e('0x3e')]?_0x8e9e('0x3f')+_0x41b9e4['callerID']+')':_0x8e9e('0x40')),'context':_0x52094c[_0x8e9e('0xb')],'exten':_0x52094c[_0x8e9e('0x7')],'priority':_0x41b9e4[_0x8e9e('0x38')]['length']+_0x2f3c12+_0x1b6d8a++,'VoiceExtensionId':_0x52094c['id']});}else{if(_0x41b9e4[_0x8e9e('0x1c')](_0x8e9e('0x41'))){if([_0x8e9e('0x42'),_0x8e9e('0x43')]['includes'](_0x41b9e4[_0x8e9e('0x44')][_0x8e9e('0x3b')]())&&_0x41b9e4[_0x8e9e('0x45')]!==_0x8e9e('0x46')){if(_0x41b9e4[_0x8e9e('0x41')]){_0x58bd25['push']({'type':_0x41b9e4['type']['toLowerCase'](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x52094c[_0x8e9e('0xb')],'exten':_0x52094c[_0x8e9e('0x7')],'priority':_0x41b9e4[_0x8e9e('0x38')][_0x8e9e('0x26')]+_0x2f3c12+_0x1b6d8a++,'VoiceExtensionId':_0x52094c['id']});_0x58bd25['push']({'type':_0x41b9e4[_0x8e9e('0x4')][_0x8e9e('0x3b')](),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x47'),'context':_0x52094c[_0x8e9e('0xb')],'exten':_0x52094c['exten'],'priority':_0x41b9e4[_0x8e9e('0x38')]['length']+_0x2f3c12+_0x1b6d8a++,'VoiceExtensionId':_0x52094c['id']});}else{_0x58bd25['push']({'type':_0x41b9e4[_0x8e9e('0x4')]['toLowerCase'](),'app':'ExecIf','appdata':_0x8e9e('0x48'),'context':_0x52094c[_0x8e9e('0xb')],'exten':_0x52094c[_0x8e9e('0x7')],'priority':_0x41b9e4[_0x8e9e('0x38')][_0x8e9e('0x26')]+_0x2f3c12+_0x1b6d8a++,'VoiceExtensionId':_0x52094c['id']});_0x58bd25[_0x8e9e('0xd')]({'type':_0x41b9e4['type']['toLowerCase'](),'app':_0x8e9e('0x5'),'appdata':_0x8e9e('0x49'),'context':_0x52094c[_0x8e9e('0xb')],'exten':_0x52094c[_0x8e9e('0x7')],'priority':_0x41b9e4[_0x8e9e('0x38')]['length']+_0x2f3c12+_0x1b6d8a++,'VoiceExtensionId':_0x52094c['id']});}}}}for(var _0x183e92=0x0;_0x183e92<_0x41b9e4['intervals'][_0x8e9e('0x26')];_0x183e92++){var _0x425eff=_0x2f3c12+_0x41b9e4[_0x8e9e('0x38')][_0x8e9e('0x26')];var _0x387367=_0x183e92===_0x41b9e4['intervals']['length']-0x1?_0x2f3c12+_0x58bd25[_0x8e9e('0x26')]+_0x150db7['length']+0x2:_0x2f3c12+_0x183e92+0x1;_0x58bd25['splice'](_0x183e92,0x0,{'type':_0x52094c[_0x8e9e('0x4')],'app':_0x8e9e('0x4a'),'appdata':_0x41b9e4[_0x8e9e('0x38')][_0x183e92]+'?'+_0x52094c[_0x8e9e('0xb')]+',${EXTEN},'+_0x425eff+':'+_0x52094c['context']+',${EXTEN},'+_0x387367,'exten':_0x52094c[_0x8e9e('0x7')],'context':_0x52094c[_0x8e9e('0xb')],'priority':_0x2f3c12+_0x183e92,'VoiceExtensionId':_0x52094c['id']});}if(_0x41b9e4[_0x8e9e('0x45')]==='outboundDial')_0x41b9e4[_0x8e9e('0x4b')]=_0x3f6caa(_0x52094c,_0x41b9e4[_0x8e9e('0x4b')]);_0x41b9e4[_0x8e9e('0x4c')]=_0x58bd25['length']?_[_0x8e9e('0x4d')](_0x58bd25)[_0x8e9e('0x4c')]+0x1:_0x2f3c12;_0x4c747b=_[_0x8e9e('0x4e')](_0x4c747b,_0x58bd25,[_0x41b9e4],_0x150db7);_0x2f3c12=_[_0x8e9e('0x4d')](_0x4c747b)[_0x8e9e('0x4c')]+0x1;}return _0x5802bf(_0x4c747b);})[_0x8e9e('0x4f')](function(_0x429514){_0x2bb2f2(_0x429514);});});}return _0x38b3cb[_0x8e9e('0x50')](_0x8e9e('0x51'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1839b1){var _0x189501=this[_0x8e9e('0x52')]({'plain':!![]});var _0x40e965=_0x189501['type']===_0x8e9e('0x10')?_0x20220a(_0x189501):_0x398891(_0x189501);return _0x240164(_0x189501,_0x1839b1,_[_0x8e9e('0x4d')](_0x40e965)[_0x8e9e('0x4c')]+0x1)[_0x8e9e('0x36')](function(_0x3be122){var _0x14edc4=_[_0x8e9e('0x4e')](_0x40e965,_0x3be122);_0x14edc4['push']({'type':_0x189501[_0x8e9e('0x4')],'app':'Hangup','exten':_0x189501['exten'],'context':_0x189501[_0x8e9e('0xb')],'priority':_[_0x8e9e('0x4d')](_0x14edc4)[_0x8e9e('0x4c')]+0x1,'VoiceExtensionId':_0x189501['id']});return _0x14edc4;});}}});};
\ No newline at end of file
index 1b90450..144e1f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06bf=['map','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','request','then','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','error','VoiceExtension,\x20%s,\x20%s','message','info','result','catch','GetVoiceExtension','VoiceExtension','findAll','raw','options','where','attributes','limit','include','model'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x06bf,0x105));var _0xf06b=function(_0x54454a,_0x5f31c9){_0x54454a=_0x54454a-0x0;var _0x47049d=_0x06bf[_0x54454a];return _0x47049d;};'use strict';var _=require(_0xf06b('0x0'));var util=require(_0xf06b('0x1'));var moment=require(_0xf06b('0x2'));var BPromise=require(_0xf06b('0x3'));var rs=require(_0xf06b('0x4'));var fs=require('fs');var Redis=require(_0xf06b('0x5'));var db=require(_0xf06b('0x6'))['db'];var utils=require(_0xf06b('0x7'));var logger=require('../../config/logger')(_0xf06b('0x8'));var config=require(_0xf06b('0x9'));var jayson=require(_0xf06b('0xa'));var client=jayson['client'][_0xf06b('0xb')]({'port':0x232a});config[_0xf06b('0xc')]=_[_0xf06b('0xd')](config[_0xf06b('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xf06b('0xe'))(new Redis(config[_0xf06b('0xc')]));require('./voiceExtension.socket')['register'](socket);function respondWithRpcPromise(_0x222824,_0x2f41d3,_0x151581){return new BPromise(function(_0x40773e,_0x2823b1){return client[_0xf06b('0xf')](_0x222824,_0x151581)[_0xf06b('0x10')](function(_0x12d627){logger['info']('VoiceExtension,\x20%s,\x20%s',_0x2f41d3,'request\x20sent');logger[_0xf06b('0x11')](_0xf06b('0x12'),_0x2f41d3,'request\x20sent',JSON['stringify'](_0x12d627));if(_0x12d627[_0xf06b('0x13')]){if(_0x12d627[_0xf06b('0x13')]['code']===0x1f4){logger[_0xf06b('0x13')](_0xf06b('0x14'),_0x2f41d3,_0x12d627[_0xf06b('0x13')]['message']);return _0x2823b1(_0x12d627[_0xf06b('0x13')][_0xf06b('0x15')]);}logger[_0xf06b('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x2f41d3,_0x12d627[_0xf06b('0x13')][_0xf06b('0x15')]);return _0x40773e(_0x12d627[_0xf06b('0x13')][_0xf06b('0x15')]);}else{logger[_0xf06b('0x16')](_0xf06b('0x14'),_0x2f41d3,'request\x20sent');_0x40773e(_0x12d627[_0xf06b('0x17')][_0xf06b('0x15')]);}})[_0xf06b('0x18')](function(_0x486aea){logger[_0xf06b('0x13')](_0xf06b('0x14'),_0x2f41d3,_0x486aea);_0x2823b1(_0x486aea);});});}exports[_0xf06b('0x19')]=function(_0xb9b03e){var _0x2be4b8=this;return new Promise(function(_0xa991cb,_0x18a6d9){return db[_0xf06b('0x1a')][_0xf06b('0x1b')]({'raw':_0xb9b03e['options']?_0xb9b03e['options'][_0xf06b('0x1c')]===undefined?!![]:![]:!![],'where':_0xb9b03e[_0xf06b('0x1d')]?_0xb9b03e['options'][_0xf06b('0x1e')]||null:null,'attributes':_0xb9b03e[_0xf06b('0x1d')]?_0xb9b03e[_0xf06b('0x1d')][_0xf06b('0x1f')]||null:null,'limit':_0xb9b03e[_0xf06b('0x1d')]?_0xb9b03e['options'][_0xf06b('0x20')]||null:null,'include':_0xb9b03e['options']?_0xb9b03e[_0xf06b('0x1d')][_0xf06b('0x21')]?_['map'](_0xb9b03e[_0xf06b('0x1d')]['include'],function(_0x305f63){return{'model':db[_0x305f63[_0xf06b('0x22')]],'as':_0x305f63['as'],'attributes':_0x305f63['attributes'],'include':_0x305f63['include']?_[_0xf06b('0x23')](_0x305f63[_0xf06b('0x21')],function(_0x553f85){return{'model':db[_0x553f85['model']],'as':_0x553f85['as'],'attributes':_0x553f85['attributes'],'include':_0x553f85['include']?_[_0xf06b('0x23')](_0x553f85[_0xf06b('0x21')],function(_0x4eff77){return{'model':db[_0x4eff77[_0xf06b('0x22')]],'as':_0x4eff77['as'],'attributes':_0x4eff77[_0xf06b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xf06b('0x10')](function(_0x3815dc){logger[_0xf06b('0x16')](_0xf06b('0x19'),_0xb9b03e);logger['debug'](_0xf06b('0x19'),_0xb9b03e,JSON[_0xf06b('0x24')](_0x3815dc));_0xa991cb(_0x3815dc);})['catch'](function(_0x57cae3){logger[_0xf06b('0x13')]('GetVoiceExtension',_0x57cae3[_0xf06b('0x15')],_0xb9b03e);_0x18a6d9(_0x2be4b8[_0xf06b('0x13')](0x1f4,_0x57cae3[_0xf06b('0x15')]));});});};
\ No newline at end of file
+var _0x2e8a=['VoiceExtension,\x20%s,\x20%s','result','catch','GetVoiceExtension','VoiceExtension','options','raw','limit','include','map','model','attributes','debug','util','moment','randomstring','ioredis','../../config/utils','client','http','redis','localhost','socket.io-emitter','register','request','info','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x46e8b7,_0x327f25){var _0x23c2c1=function(_0x30e6e6){while(--_0x30e6e6){_0x46e8b7['push'](_0x46e8b7['shift']());}};_0x23c2c1(++_0x327f25);}(_0x2e8a,0xc7));var _0xa2e8=function(_0xe9bfbc,_0x488cd1){_0xe9bfbc=_0xe9bfbc-0x0;var _0x237482=_0x2e8a[_0xe9bfbc];return _0x237482;};'use strict';var _=require('lodash');var util=require(_0xa2e8('0x0'));var moment=require(_0xa2e8('0x1'));var BPromise=require('bluebird');var rs=require(_0xa2e8('0x2'));var fs=require('fs');var Redis=require(_0xa2e8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa2e8('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa2e8('0x5')][_0xa2e8('0x6')]({'port':0x232a});config[_0xa2e8('0x7')]=_['defaults'](config[_0xa2e8('0x7')],{'host':_0xa2e8('0x8'),'port':0x18eb});var socket=require(_0xa2e8('0x9'))(new Redis(config[_0xa2e8('0x7')]));require('./voiceExtension.socket')[_0xa2e8('0xa')](socket);function respondWithRpcPromise(_0x56285e,_0x46cbb3,_0x3802c7){return new BPromise(function(_0x3d6b97,_0x31fa5a){return client[_0xa2e8('0xb')](_0x56285e,_0x3802c7)['then'](function(_0x264a38){logger[_0xa2e8('0xc')]('VoiceExtension,\x20%s,\x20%s',_0x46cbb3,_0xa2e8('0xd'));logger['debug'](_0xa2e8('0xe'),_0x46cbb3,_0xa2e8('0xd'),JSON[_0xa2e8('0xf')](_0x264a38));if(_0x264a38['error']){if(_0x264a38['error']['code']===0x1f4){logger[_0xa2e8('0x10')]('VoiceExtension,\x20%s,\x20%s',_0x46cbb3,_0x264a38[_0xa2e8('0x10')]['message']);return _0x31fa5a(_0x264a38[_0xa2e8('0x10')][_0xa2e8('0x11')]);}logger[_0xa2e8('0x10')](_0xa2e8('0x12'),_0x46cbb3,_0x264a38[_0xa2e8('0x10')][_0xa2e8('0x11')]);return _0x3d6b97(_0x264a38['error'][_0xa2e8('0x11')]);}else{logger['info']('VoiceExtension,\x20%s,\x20%s',_0x46cbb3,_0xa2e8('0xd'));_0x3d6b97(_0x264a38[_0xa2e8('0x13')][_0xa2e8('0x11')]);}})[_0xa2e8('0x14')](function(_0x3063ab){logger['error']('VoiceExtension,\x20%s,\x20%s',_0x46cbb3,_0x3063ab);_0x31fa5a(_0x3063ab);});});}exports[_0xa2e8('0x15')]=function(_0x3c18dd){var _0x1b9d58=this;return new Promise(function(_0x1a6bbc,_0xd8f70){return db[_0xa2e8('0x16')]['findAll']({'raw':_0x3c18dd[_0xa2e8('0x17')]?_0x3c18dd[_0xa2e8('0x17')][_0xa2e8('0x18')]===undefined?!![]:![]:!![],'where':_0x3c18dd[_0xa2e8('0x17')]?_0x3c18dd['options']['where']||null:null,'attributes':_0x3c18dd[_0xa2e8('0x17')]?_0x3c18dd[_0xa2e8('0x17')]['attributes']||null:null,'limit':_0x3c18dd['options']?_0x3c18dd['options'][_0xa2e8('0x19')]||null:null,'include':_0x3c18dd[_0xa2e8('0x17')]?_0x3c18dd[_0xa2e8('0x17')][_0xa2e8('0x1a')]?_[_0xa2e8('0x1b')](_0x3c18dd[_0xa2e8('0x17')][_0xa2e8('0x1a')],function(_0x18d684){return{'model':db[_0x18d684[_0xa2e8('0x1c')]],'as':_0x18d684['as'],'attributes':_0x18d684[_0xa2e8('0x1d')],'include':_0x18d684[_0xa2e8('0x1a')]?_[_0xa2e8('0x1b')](_0x18d684[_0xa2e8('0x1a')],function(_0x529078){return{'model':db[_0x529078[_0xa2e8('0x1c')]],'as':_0x529078['as'],'attributes':_0x529078[_0xa2e8('0x1d')],'include':_0x529078[_0xa2e8('0x1a')]?_[_0xa2e8('0x1b')](_0x529078['include'],function(_0x54775c){return{'model':db[_0x54775c[_0xa2e8('0x1c')]],'as':_0x54775c['as'],'attributes':_0x54775c[_0xa2e8('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x6f918f){logger[_0xa2e8('0xc')](_0xa2e8('0x15'),_0x3c18dd);logger[_0xa2e8('0x1e')](_0xa2e8('0x15'),_0x3c18dd,JSON[_0xa2e8('0xf')](_0x6f918f));_0x1a6bbc(_0x6f918f);})[_0xa2e8('0x14')](function(_0x4a4904){logger['error'](_0xa2e8('0x15'),_0x4a4904[_0xa2e8('0x11')],_0x3c18dd);_0xd8f70(_0x1b9d58[_0xa2e8('0x10')](0x1f4,_0x4a4904[_0xa2e8('0x11')]));});});};
\ No newline at end of file
index bb9a850..cccae1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['emit','removeListener','register','length','./voiceExtension.events','save','update'];(function(_0xcd4089,_0x41c9f0){var _0x612d61=function(_0x3ff828){while(--_0x3ff828){_0xcd4089['push'](_0xcd4089['shift']());}};_0x612d61(++_0x41c9f0);}(_0x5fab,0x177));var _0xb5fa=function(_0x284d33,_0x5b003f){_0x284d33=_0x284d33-0x0;var _0x225cf8=_0x5fab[_0x284d33];return _0x225cf8;};'use strict';var VoiceExtensionEvents=require(_0xb5fa('0x0'));var events=[_0xb5fa('0x1'),'remove',_0xb5fa('0x2')];function createListener(_0x2e2a50,_0x3fc227){return function(_0x316ad0){_0x3fc227[_0xb5fa('0x3')](_0x2e2a50,_0x316ad0);};}function removeListener(_0x595d8b,_0x29390a){return function(){VoiceExtensionEvents[_0xb5fa('0x4')](_0x595d8b,_0x29390a);};}exports[_0xb5fa('0x5')]=function(_0x44df89){for(var _0x4a0249=0x0,_0x5d70f6=events[_0xb5fa('0x6')];_0x4a0249<_0x5d70f6;_0x4a0249++){var _0x1aec3e=events[_0x4a0249];var _0x9c7bce=createListener('voiceExtension:'+_0x1aec3e,_0x44df89);VoiceExtensionEvents['on'](_0x1aec3e,_0x9c7bce);}};
\ No newline at end of file
+var _0x1261=['save','remove','update','emit','removeListener','voiceExtension:'];(function(_0x243d59,_0x21d2ff){var _0x203468=function(_0x154ea9){while(--_0x154ea9){_0x243d59['push'](_0x243d59['shift']());}};_0x203468(++_0x21d2ff);}(_0x1261,0x144));var _0x1126=function(_0x3edb26,_0x9613b4){_0x3edb26=_0x3edb26-0x0;var _0x4ad9f5=_0x1261[_0x3edb26];return _0x4ad9f5;};'use strict';var VoiceExtensionEvents=require('./voiceExtension.events');var events=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2')];function createListener(_0x331a2c,_0x39b786){return function(_0x350f3a){_0x39b786[_0x1126('0x3')](_0x331a2c,_0x350f3a);};}function removeListener(_0x4245ca,_0x21a480){return function(){VoiceExtensionEvents[_0x1126('0x4')](_0x4245ca,_0x21a480);};}exports['register']=function(_0x5c68c8){for(var _0x40ba58=0x0,_0x907180=events['length'];_0x40ba58<_0x907180;_0x40ba58++){var _0x17e5f0=events[_0x40ba58];var _0x28772d=createListener(_0x1126('0x5')+_0x17e5f0,_0x5c68c8);VoiceExtensionEvents['on'](_0x17e5f0,_0x28772d);}};
\ No newline at end of file
index 4f99908..2d79e41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c4=['express','Router','fs-extra','../../components/interaction/service','./voiceMail.controller','isAuthenticated','get','/:id','show','getMessages','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x82c4,0x1ca));var _0x482c=function(_0x1d606d,_0x376e51){_0x1d606d=_0x1d606d-0x0;var _0x3c38bd=_0x82c4[_0x1d606d];return _0x3c38bd;};'use strict';var multer=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var path=require(_0x482c('0x2'));var timeout=require(_0x482c('0x3'));var express=require(_0x482c('0x4'));var router=express[_0x482c('0x5')]();var fs_extra=require(_0x482c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x482c('0x7'));var config=require('../../config/environment');var controller=require(_0x482c('0x8'));router['get']('/',auth[_0x482c('0x9')](),controller['index']);router[_0x482c('0xa')](_0x482c('0xb'),auth[_0x482c('0x9')](),controller[_0x482c('0xc')]);router[_0x482c('0xa')]('/:id/messages',auth[_0x482c('0x9')](),controller[_0x482c('0xd')]);router[_0x482c('0xe')]('/',auth[_0x482c('0x9')](),controller[_0x482c('0xf')]);router[_0x482c('0x10')]('/:id',auth[_0x482c('0x9')](),controller[_0x482c('0x11')]);router[_0x482c('0x12')]('/:id',auth[_0x482c('0x9')](),controller[_0x482c('0x13')]);module[_0x482c('0x14')]=router;
\ No newline at end of file
+var _0x323f=['show','/:id/messages','getMessages','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','/:id'];(function(_0x2454b9,_0x2f2be5){var _0x1d8100=function(_0x2e2f6e){while(--_0x2e2f6e){_0x2454b9['push'](_0x2454b9['shift']());}};_0x1d8100(++_0x2f2be5);}(_0x323f,0x1ee));var _0xf323=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x323f[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require('multer');var util=require(_0xf323('0x0'));var path=require('path');var timeout=require(_0xf323('0x1'));var express=require(_0xf323('0x2'));var router=express[_0xf323('0x3')]();var fs_extra=require(_0xf323('0x4'));var auth=require(_0xf323('0x5'));var interaction=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var controller=require(_0xf323('0x8'));router[_0xf323('0x9')]('/',auth[_0xf323('0xa')](),controller['index']);router[_0xf323('0x9')](_0xf323('0xb'),auth[_0xf323('0xa')](),controller[_0xf323('0xc')]);router[_0xf323('0x9')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0xe')]);router[_0xf323('0xf')]('/',auth[_0xf323('0xa')](),controller[_0xf323('0x10')]);router[_0xf323('0x11')](_0xf323('0xb'),auth[_0xf323('0xa')](),controller[_0xf323('0x12')]);router[_0xf323('0x13')](_0xf323('0xb'),auth['isAuthenticated'](),controller[_0xf323('0x14')]);module[_0xf323('0x15')]=router;
\ No newline at end of file
index fa0dec0..f468a59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cce=['TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20','mailbox','sequelize','STRING','from-voicemail','contest_mailbox','setDataValue','string','trim','central','ENUM','yes'];(function(_0x200b4d,_0x4b997f){var _0x29b4d5=function(_0x46422d){while(--_0x46422d){_0x200b4d['push'](_0x200b4d['shift']());}};_0x29b4d5(++_0x4b997f);}(_0x2cce,0x1c6));var _0xe2cc=function(_0x4580cd,_0x5c1f7f){_0x4580cd=_0x4580cd-0x0;var _0x424188=_0x2cce[_0x4580cd];return _0x424188;};'use strict';var Sequelize=require(_0xe2cc('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0xe2cc('0x1')]},'context':{'type':Sequelize[_0xe2cc('0x1')],'defaultValue':_0xe2cc('0x2'),'unique':_0xe2cc('0x3')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xe2cc('0x1')]},'fullname':{'type':Sequelize[_0xe2cc('0x1')]},'email':{'type':Sequelize[_0xe2cc('0x1')],'validate':{'isEmail':!![]},'set':function(_0x315641){this[_0xe2cc('0x4')]('email',typeof _0x315641===_0xe2cc('0x5')&&_0x315641[_0xe2cc('0x6')]()?_0x315641['trim']():null);}},'pager':{'type':Sequelize[_0xe2cc('0x1')]},'tz':{'type':Sequelize[_0xe2cc('0x1')],'defaultValue':_0xe2cc('0x7')},'attach':{'type':Sequelize[_0xe2cc('0x8')](_0xe2cc('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0xe2cc('0x8')]('yes','no'),'defaultValue':_0xe2cc('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0xe2cc('0x1')]},'callback':{'type':Sequelize[_0xe2cc('0x1')]},'review':{'type':Sequelize[_0xe2cc('0x8')](_0xe2cc('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xe2cc('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0xe2cc('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xe2cc('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xe2cc('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xe2cc('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xe2cc('0x8')](_0xe2cc('0x9'),'no'),'defaultValue':_0xe2cc('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xe2cc('0x8')](_0xe2cc('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xe2cc('0x8')](_0xe2cc('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xe2cc('0x9'),'no'),'defaultValue':_0xe2cc('0x9'),'allowNull':![]},'stamp':{'type':_0xe2cc('0xa')},'emailsubject':{'type':Sequelize[_0xe2cc('0x1')]},'emailbody':{'type':Sequelize[_0xe2cc('0x1')]},'maxsecs':{'type':Sequelize[_0xe2cc('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xe2cc('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xe2cc('0xc')],'get':function(){return this[_0xe2cc('0xd')]('fullname')+_0xe2cc('0xe')+this['getDataValue'](_0xe2cc('0xf'));}}};
\ No newline at end of file
+var _0xe4bd=['exports','STRING','contest_mailbox','setDataValue','trim','central','ENUM','yes','TIMESTAMP','INTEGER','getDataValue','fullname','\x20-\x20','mailbox','sequelize'];(function(_0x5aed66,_0x58f5f6){var _0x53e1a2=function(_0x4767dc){while(--_0x4767dc){_0x5aed66['push'](_0x5aed66['shift']());}};_0x53e1a2(++_0x58f5f6);}(_0xe4bd,0x86));var _0xde4b=function(_0x250f8a,_0x1bc5df){_0x250f8a=_0x250f8a-0x0;var _0x1a2584=_0xe4bd[_0x250f8a];return _0x1a2584;};'use strict';var Sequelize=require(_0xde4b('0x0'));module[_0xde4b('0x1')]={'customer_id':{'type':Sequelize[_0xde4b('0x2')]},'context':{'type':Sequelize[_0xde4b('0x2')],'defaultValue':'from-voicemail','unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0xde4b('0x2')],'defaultValue':'','allowNull':![],'unique':_0xde4b('0x3')},'password':{'type':Sequelize[_0xde4b('0x2')]},'fullname':{'type':Sequelize[_0xde4b('0x2')]},'email':{'type':Sequelize[_0xde4b('0x2')],'validate':{'isEmail':!![]},'set':function(_0x51c83f){this[_0xde4b('0x4')]('email',typeof _0x51c83f==='string'&&_0x51c83f[_0xde4b('0x5')]()?_0x51c83f[_0xde4b('0x5')]():null);}},'pager':{'type':Sequelize[_0xde4b('0x2')]},'tz':{'type':Sequelize[_0xde4b('0x2')],'defaultValue':_0xde4b('0x6')},'attach':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':_0xde4b('0x8'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xde4b('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize[_0xde4b('0x2')]},'callback':{'type':Sequelize[_0xde4b('0x2')]},'review':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':_0xde4b('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xde4b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xde4b('0x7')](_0xde4b('0x8'),'no'),'defaultValue':_0xde4b('0x8'),'allowNull':![]},'stamp':{'type':_0xde4b('0x9')},'emailsubject':{'type':Sequelize[_0xde4b('0x2')]},'emailbody':{'type':Sequelize[_0xde4b('0x2')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xde4b('0xa')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xde4b('0xb')](_0xde4b('0xc'))+_0xde4b('0xd')+this[_0xde4b('0xb')](_0xde4b('0xe'));}}};
\ No newline at end of file
index 3eb774f..199b7f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['nolimit','mailbox','VoiceMailMessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','update','destroy','then','get','Voicemails','UserProfileResource','stack','name','send','map','VoiceMail','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','merge','options','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMessages','findOne'];(function(_0x84158a,_0x35ffbf){var _0x32af6f=function(_0x7784e9){while(--_0x7784e9){_0x84158a['push'](_0x84158a['shift']());}};_0x32af6f(++_0x35ffbf);}(_0x4fc2,0x111));var _0x24fc=function(_0x21c76e,_0x657e32){_0x21c76e=_0x21c76e-0x0;var _0x1c28c7=_0x4fc2[_0x21c76e];return _0x1c28c7;};'use strict';var emlformat=require(_0x24fc('0x0'));var rimraf=require(_0x24fc('0x1'));var zipdir=require(_0x24fc('0x2'));var jsonpatch=require(_0x24fc('0x3'));var rp=require('request-promise');var moment=require(_0x24fc('0x4'));var BPromise=require(_0x24fc('0x5'));var Mustache=require(_0x24fc('0x6'));var util=require('util');var path=require(_0x24fc('0x7'));var sox=require(_0x24fc('0x8'));var csv=require('to-csv');var ejs=require(_0x24fc('0x9'));var fs=require('fs');var fs_extra=require(_0x24fc('0xa'));var _=require('lodash');var squel=require(_0x24fc('0xb'));var crypto=require(_0x24fc('0xc'));var jsforce=require(_0x24fc('0xd'));var deskjs=require(_0x24fc('0xe'));var toCsv=require(_0x24fc('0xf'));var querystring=require(_0x24fc('0x10'));var Papa=require('papaparse');var Redis=require(_0x24fc('0x11'));var authService=require(_0x24fc('0x12'));var qs=require(_0x24fc('0x13'));var as=require(_0x24fc('0x14'));var hardwareService=require(_0x24fc('0x15'));var logger=require(_0x24fc('0x16'))(_0x24fc('0x17'));var utils=require(_0x24fc('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x24fc('0x19'));var db=require(_0x24fc('0x1a'))['db'];function respondWithStatusCode(_0x5cc65e,_0x306873){_0x306873=_0x306873||0xcc;return function(_0x76cb25){if(_0x76cb25){return _0x5cc65e[_0x24fc('0x1b')](_0x306873);}return _0x5cc65e[_0x24fc('0x1c')](_0x306873)[_0x24fc('0x1d')]();};}function respondWithResult(_0x326276,_0x537b5c){_0x537b5c=_0x537b5c||0xc8;return function(_0x2a0971){if(_0x2a0971){return _0x326276[_0x24fc('0x1c')](_0x537b5c)[_0x24fc('0x1e')](_0x2a0971);}};}function respondWithFilteredResult(_0x42cbe8,_0x4acd36){return function(_0x2ac989){if(_0x2ac989){var _0x588543=typeof _0x4acd36[_0x24fc('0x1f')]===_0x24fc('0x20')&&typeof _0x4acd36[_0x24fc('0x21')]===_0x24fc('0x20');var _0x25cb40=_0x2ac989['count'];var _0x23873c=_0x588543?0x0:_0x4acd36[_0x24fc('0x1f')];var _0x6cfa0a=_0x588543?_0x2ac989[_0x24fc('0x22')]:_0x4acd36['offset']+_0x4acd36[_0x24fc('0x21')];var _0x4073e0;if(_0x6cfa0a>=_0x25cb40){_0x6cfa0a=_0x25cb40;_0x4073e0=0xc8;}else{_0x4073e0=0xce;}_0x42cbe8[_0x24fc('0x1c')](_0x4073e0);return _0x42cbe8['set'](_0x24fc('0x23'),_0x23873c+'-'+_0x6cfa0a+'/'+_0x25cb40)[_0x24fc('0x1e')](_0x2ac989);}return null;};}function patchUpdates(_0xbf1d6b){return function(_0x2d0e3d){try{jsonpatch['apply'](_0x2d0e3d,_0xbf1d6b,!![]);}catch(_0x323beb){return BPromise['reject'](_0x323beb);}return _0x2d0e3d[_0x24fc('0x24')]();};}function saveUpdates(_0x591c8f,_0x3ed464){return function(_0x44c121){if(_0x44c121){return _0x44c121[_0x24fc('0x25')](_0x591c8f)['then'](function(_0x313a25){return _0x313a25;});}return null;};}function removeEntity(_0x552035,_0x35a9c7){return function(_0x2bb93a){if(_0x2bb93a){return _0x2bb93a[_0x24fc('0x26')]()[_0x24fc('0x27')](function(){var _0x3296fc=_0x2bb93a[_0x24fc('0x28')]({'plain':!![]});var _0x3f0875=_0x24fc('0x29');return db[_0x24fc('0x2a')][_0x24fc('0x26')]({'where':{'type':_0x3f0875,'resourceId':_0x3296fc['id']}})['then'](function(){return _0x2bb93a;});})[_0x24fc('0x27')](function(){_0x552035[_0x24fc('0x1c')](0xcc)[_0x24fc('0x1d')]();});}};}function handleEntityNotFound(_0x5bb4c8,_0xf2f77d){return function(_0x3d1ec8){if(!_0x3d1ec8){_0x5bb4c8[_0x24fc('0x1b')](0x194);}return _0x3d1ec8;};}function handleError(_0x290f84,_0x8f2528){_0x8f2528=_0x8f2528||0x1f4;return function(_0x443796){logger['error'](_0x443796[_0x24fc('0x2b')]);if(_0x443796[_0x24fc('0x2c')]){delete _0x443796[_0x24fc('0x2c')];}_0x290f84[_0x24fc('0x1c')](_0x8f2528)[_0x24fc('0x2d')](_0x443796);};}exports['index']=function(_0x55c27f,_0x4e6f73){var _0x3df6f4={},_0x574ba3={},_0x3f2464={'count':0x0,'rows':[]};var _0x3e6389=_[_0x24fc('0x2e')](db[_0x24fc('0x2f')]['rawAttributes'],function(_0x66eec0){return{'name':_0x66eec0[_0x24fc('0x30')],'type':_0x66eec0['type'][_0x24fc('0x31')]};});_0x574ba3[_0x24fc('0x32')]=_['map'](_0x3e6389,'name');_0x574ba3[_0x24fc('0x33')]=_['keys'](_0x55c27f[_0x24fc('0x33')]);_0x574ba3[_0x24fc('0x34')]=_['intersection'](_0x574ba3[_0x24fc('0x32')],_0x574ba3[_0x24fc('0x33')]);_0x3df6f4[_0x24fc('0x35')]=_[_0x24fc('0x36')](_0x574ba3[_0x24fc('0x32')],qs[_0x24fc('0x37')](_0x55c27f[_0x24fc('0x33')][_0x24fc('0x37')]));_0x3df6f4[_0x24fc('0x35')]=_0x3df6f4['attributes'][_0x24fc('0x38')]?_0x3df6f4[_0x24fc('0x35')]:_0x574ba3[_0x24fc('0x32')];if(!_0x55c27f[_0x24fc('0x33')][_0x24fc('0x39')]('nolimit')){_0x3df6f4['limit']=qs[_0x24fc('0x21')](_0x55c27f['query'][_0x24fc('0x21')]);_0x3df6f4[_0x24fc('0x1f')]=qs[_0x24fc('0x1f')](_0x55c27f[_0x24fc('0x33')]['offset']);}_0x3df6f4[_0x24fc('0x3a')]=qs['sort'](_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3b')]);_0x3df6f4[_0x24fc('0x3c')]=qs[_0x24fc('0x34')](_[_0x24fc('0x3d')](_0x55c27f['query'],_0x574ba3[_0x24fc('0x34')]),_0x3e6389);if(_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3e')]){_0x3df6f4[_0x24fc('0x3c')]=_['merge'](_0x3df6f4[_0x24fc('0x3c')],{'$or':_[_0x24fc('0x2e')](_0x3e6389,function(_0x56306e){if(_0x56306e[_0x24fc('0x3f')]!=='VIRTUAL'){var _0x320f7b={};_0x320f7b[_0x56306e[_0x24fc('0x2c')]]={'$like':'%'+_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3e')]+'%'};return _0x320f7b;}})});}_0x3df6f4=_[_0x24fc('0x40')]({},_0x3df6f4,_0x55c27f[_0x24fc('0x41')]);var _0x77b959={'where':_0x3df6f4[_0x24fc('0x3c')]};return db['VoiceMail'][_0x24fc('0x22')](_0x77b959)[_0x24fc('0x27')](function(_0x32f72c){_0x3f2464['count']=_0x32f72c;if(_0x55c27f[_0x24fc('0x33')][_0x24fc('0x42')]){_0x3df6f4['include']=[{'all':!![]}];}return db[_0x24fc('0x2f')][_0x24fc('0x43')](_0x3df6f4);})[_0x24fc('0x27')](function(_0x5e4e9b){_0x3f2464[_0x24fc('0x44')]=_0x5e4e9b;return _0x3f2464;})[_0x24fc('0x27')](respondWithFilteredResult(_0x4e6f73,_0x3df6f4))['catch'](handleError(_0x4e6f73,null));};exports[_0x24fc('0x45')]=function(_0x169982,_0x158f7b){var _0x2a0ac4={'raw':!![],'where':{'id':_0x169982[_0x24fc('0x46')]['id']}},_0x4c8dad={};_0x4c8dad[_0x24fc('0x32')]=_[_0x24fc('0x47')](db[_0x24fc('0x2f')][_0x24fc('0x48')]);_0x4c8dad['query']=_[_0x24fc('0x47')](_0x169982[_0x24fc('0x33')]);_0x4c8dad[_0x24fc('0x34')]=_[_0x24fc('0x36')](_0x4c8dad['model'],_0x4c8dad[_0x24fc('0x33')]);_0x2a0ac4[_0x24fc('0x35')]=_['intersection'](_0x4c8dad['model'],qs[_0x24fc('0x37')](_0x169982['query']['fields']));_0x2a0ac4[_0x24fc('0x35')]=_0x2a0ac4['attributes'][_0x24fc('0x38')]?_0x2a0ac4[_0x24fc('0x35')]:_0x4c8dad[_0x24fc('0x32')];if(_0x169982['query'][_0x24fc('0x42')]){_0x2a0ac4[_0x24fc('0x49')]=[{'all':!![]}];}_0x2a0ac4=_[_0x24fc('0x40')]({},_0x2a0ac4,_0x169982[_0x24fc('0x41')]);return db[_0x24fc('0x2f')][_0x24fc('0x4a')](_0x2a0ac4)[_0x24fc('0x27')](handleEntityNotFound(_0x158f7b,null))[_0x24fc('0x27')](respondWithResult(_0x158f7b,null))['catch'](handleError(_0x158f7b,null));};exports['create']=function(_0x266378,_0x2f1a99){return db[_0x24fc('0x2f')]['create'](_0x266378['body'],{})[_0x24fc('0x27')](function(_0x213439){var _0x179a60=_0x266378[_0x24fc('0x4b')][_0x24fc('0x28')]({'plain':!![]});if(!_0x179a60)throw new Error(_0x24fc('0x4c'));if(_0x179a60[_0x24fc('0x4d')]===_0x24fc('0x4b')){var _0x1671b0=_0x213439[_0x24fc('0x28')]({'plain':!![]});var _0x434700=_0x24fc('0x29');return db['UserProfileSection'][_0x24fc('0x4a')]({'where':{'name':_0x434700,'userProfileId':_0x179a60[_0x24fc('0x4e')]},'raw':!![]})[_0x24fc('0x27')](function(_0xb0fc00){if(_0xb0fc00&&_0xb0fc00[_0x24fc('0x4f')]===0x0){return db['UserProfileResource'][_0x24fc('0x50')]({'name':_0x1671b0['name'],'resourceId':_0x1671b0['id'],'type':_0xb0fc00[_0x24fc('0x2c')],'sectionId':_0xb0fc00['id']},{})[_0x24fc('0x27')](function(){return _0x213439;});}else{return _0x213439;}})[_0x24fc('0x51')](function(_0x41ddfb){logger[_0x24fc('0x52')](_0x24fc('0x53'),_0x41ddfb);throw _0x41ddfb;});}return _0x213439;})['then'](respondWithResult(_0x2f1a99,0xc9))[_0x24fc('0x51')](handleError(_0x2f1a99,null));};exports[_0x24fc('0x25')]=function(_0xc49d9f,_0x31a2ef){if(_0xc49d9f[_0x24fc('0x54')]['id']){delete _0xc49d9f[_0x24fc('0x54')]['id'];}return db['VoiceMail'][_0x24fc('0x4a')]({'where':{'id':_0xc49d9f[_0x24fc('0x46')]['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x31a2ef,null))[_0x24fc('0x27')](saveUpdates(_0xc49d9f[_0x24fc('0x54')],null))[_0x24fc('0x27')](respondWithResult(_0x31a2ef,null))[_0x24fc('0x51')](handleError(_0x31a2ef,null));};exports['destroy']=function(_0xd673f8,_0x11690f){return db['VoiceMail'][_0x24fc('0x4a')]({'where':{'id':_0xd673f8[_0x24fc('0x46')]['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x11690f,null))[_0x24fc('0x27')](removeEntity(_0x11690f,null))[_0x24fc('0x51')](handleError(_0x11690f,null));};exports[_0x24fc('0x55')]=function(_0x50302e,_0x28a44c,_0x4a0524){return db[_0x24fc('0x2f')][_0x24fc('0x56')]({'where':{'id':_0x50302e['params']['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x28a44c,null))['then'](function(_0x1c1f74){var _0x595c47;var _0xdff811={},_0x27b612={};_0x27b612['model']=_[_0x24fc('0x47')](db['VoiceMailMessage'][_0x24fc('0x48')]);_0x27b612[_0x24fc('0x33')]=_['keys'](_0x50302e[_0x24fc('0x33')]);_0x27b612[_0x24fc('0x34')]=_[_0x24fc('0x36')](_0x27b612[_0x24fc('0x32')],_0x27b612[_0x24fc('0x33')]);_0xdff811['attributes']=_[_0x24fc('0x36')](_0x27b612[_0x24fc('0x32')],qs[_0x24fc('0x37')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x37')]));_0xdff811['attributes']=_0xdff811['attributes'][_0x24fc('0x38')]?_0xdff811[_0x24fc('0x35')]:_0x27b612['model'];if(!_0x50302e['query'][_0x24fc('0x39')](_0x24fc('0x57'))){_0xdff811[_0x24fc('0x21')]=qs[_0x24fc('0x21')](_0x50302e['query'][_0x24fc('0x21')]);_0xdff811[_0x24fc('0x1f')]=qs[_0x24fc('0x1f')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x1f')]);}_0xdff811[_0x24fc('0x3a')]=qs[_0x24fc('0x3b')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x3b')]);_0xdff811[_0x24fc('0x3c')]=qs[_0x24fc('0x34')](_[_0x24fc('0x3d')](_0x50302e[_0x24fc('0x33')],_0x27b612[_0x24fc('0x34')]));if(_0x50302e[_0x24fc('0x33')]['filter']){_0xdff811[_0x24fc('0x3c')]=_[_0x24fc('0x40')](_0xdff811[_0x24fc('0x3c')],{'$or':_[_0x24fc('0x2e')](_0xdff811[_0x24fc('0x35')],function(_0x2eb6dc){var _0x10d148={};_0x10d148[_0x2eb6dc]={'$like':'%'+_0x50302e[_0x24fc('0x33')]['filter']+'%'};return _0x10d148;})});}_0xdff811[_0x24fc('0x3c')]=_[_0x24fc('0x40')](_0xdff811[_0x24fc('0x3c')],{'mailboxuser':_0x1c1f74[_0x24fc('0x58')]});_0xdff811=_['merge']({},_0xdff811,_0x50302e[_0x24fc('0x41')]);return db[_0x24fc('0x59')]['findAndCountAll'](_0xdff811)['then'](respondWithFilteredResult(_0x28a44c,_0xdff811));})['catch'](handleError(_0x28a44c,null));};
\ No newline at end of file
+var _0x57f8=['index','map','VoiceMail','fieldName','key','model','query','filters','intersection','attributes','length','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','fields','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','VoiceMailMessage','hasOwnProperty','mailbox','findAndCountAll','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','get','Voicemails','UserProfileResource','error','name','send'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x57f8,0x198));var _0x857f=function(_0x45b4d9,_0x6228b9){_0x45b4d9=_0x45b4d9-0x0;var _0x54ae0e=_0x57f8[_0x45b4d9];return _0x54ae0e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x857f('0x0'));var zipdir=require(_0x857f('0x1'));var jsonpatch=require(_0x857f('0x2'));var rp=require(_0x857f('0x3'));var moment=require(_0x857f('0x4'));var BPromise=require(_0x857f('0x5'));var Mustache=require(_0x857f('0x6'));var util=require(_0x857f('0x7'));var path=require(_0x857f('0x8'));var sox=require(_0x857f('0x9'));var csv=require(_0x857f('0xa'));var ejs=require(_0x857f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x857f('0xc'));var squel=require(_0x857f('0xd'));var crypto=require(_0x857f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x857f('0xf'));var toCsv=require(_0x857f('0xa'));var querystring=require(_0x857f('0x10'));var Papa=require('papaparse');var Redis=require(_0x857f('0x11'));var authService=require(_0x857f('0x12'));var qs=require(_0x857f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x857f('0x14'));var logger=require(_0x857f('0x15'))(_0x857f('0x16'));var utils=require(_0x857f('0x17'));var config=require(_0x857f('0x18'));var licenseUtil=require(_0x857f('0x19'));var db=require(_0x857f('0x1a'))['db'];function respondWithStatusCode(_0x533631,_0x2e1eda){_0x2e1eda=_0x2e1eda||0xcc;return function(_0x2d5e26){if(_0x2d5e26){return _0x533631[_0x857f('0x1b')](_0x2e1eda);}return _0x533631[_0x857f('0x1c')](_0x2e1eda)[_0x857f('0x1d')]();};}function respondWithResult(_0x4a25ec,_0x4bc590){_0x4bc590=_0x4bc590||0xc8;return function(_0x3b09d9){if(_0x3b09d9){return _0x4a25ec['status'](_0x4bc590)[_0x857f('0x1e')](_0x3b09d9);}};}function respondWithFilteredResult(_0x4ac81f,_0x1d47bf){return function(_0x134a4f){if(_0x134a4f){var _0x5c3a69=typeof _0x1d47bf[_0x857f('0x1f')]===_0x857f('0x20')&&typeof _0x1d47bf[_0x857f('0x21')]===_0x857f('0x20');var _0x279e74=_0x134a4f[_0x857f('0x22')];var _0x1a9ef8=_0x5c3a69?0x0:_0x1d47bf[_0x857f('0x1f')];var _0x1014ca=_0x5c3a69?_0x134a4f[_0x857f('0x22')]:_0x1d47bf[_0x857f('0x1f')]+_0x1d47bf['limit'];var _0x1729d8;if(_0x1014ca>=_0x279e74){_0x1014ca=_0x279e74;_0x1729d8=0xc8;}else{_0x1729d8=0xce;}_0x4ac81f[_0x857f('0x1c')](_0x1729d8);return _0x4ac81f['set'](_0x857f('0x23'),_0x1a9ef8+'-'+_0x1014ca+'/'+_0x279e74)[_0x857f('0x1e')](_0x134a4f);}return null;};}function patchUpdates(_0x377587){return function(_0x484035){try{jsonpatch['apply'](_0x484035,_0x377587,!![]);}catch(_0x12ee77){return BPromise[_0x857f('0x24')](_0x12ee77);}return _0x484035[_0x857f('0x25')]();};}function saveUpdates(_0x4fa031,_0x118237){return function(_0x17a98e){if(_0x17a98e){return _0x17a98e[_0x857f('0x26')](_0x4fa031)['then'](function(_0x1961ea){return _0x1961ea;});}return null;};}function removeEntity(_0x14a8ce,_0x50bfb7){return function(_0x3bc543){if(_0x3bc543){return _0x3bc543[_0x857f('0x27')]()[_0x857f('0x28')](function(){var _0x44ff23=_0x3bc543[_0x857f('0x29')]({'plain':!![]});var _0x3b23a7=_0x857f('0x2a');return db[_0x857f('0x2b')][_0x857f('0x27')]({'where':{'type':_0x3b23a7,'resourceId':_0x44ff23['id']}})[_0x857f('0x28')](function(){return _0x3bc543;});})[_0x857f('0x28')](function(){_0x14a8ce[_0x857f('0x1c')](0xcc)[_0x857f('0x1d')]();});}};}function handleEntityNotFound(_0x46761e,_0x570905){return function(_0x17e415){if(!_0x17e415){_0x46761e[_0x857f('0x1b')](0x194);}return _0x17e415;};}function handleError(_0x23afb8,_0x2c5792){_0x2c5792=_0x2c5792||0x1f4;return function(_0x58c2de){logger[_0x857f('0x2c')](_0x58c2de['stack']);if(_0x58c2de[_0x857f('0x2d')]){delete _0x58c2de[_0x857f('0x2d')];}_0x23afb8[_0x857f('0x1c')](_0x2c5792)[_0x857f('0x2e')](_0x58c2de);};}exports[_0x857f('0x2f')]=function(_0x464e8f,_0x1c4fff){var _0xe79241={},_0x17e7b6={},_0x41f832={'count':0x0,'rows':[]};var _0x24adc2=_[_0x857f('0x30')](db[_0x857f('0x31')]['rawAttributes'],function(_0x3078cf){return{'name':_0x3078cf[_0x857f('0x32')],'type':_0x3078cf['type'][_0x857f('0x33')]};});_0x17e7b6[_0x857f('0x34')]=_['map'](_0x24adc2,_0x857f('0x2d'));_0x17e7b6[_0x857f('0x35')]=_['keys'](_0x464e8f[_0x857f('0x35')]);_0x17e7b6[_0x857f('0x36')]=_[_0x857f('0x37')](_0x17e7b6[_0x857f('0x34')],_0x17e7b6['query']);_0xe79241['attributes']=_[_0x857f('0x37')](_0x17e7b6[_0x857f('0x34')],qs['fields'](_0x464e8f[_0x857f('0x35')]['fields']));_0xe79241[_0x857f('0x38')]=_0xe79241[_0x857f('0x38')][_0x857f('0x39')]?_0xe79241[_0x857f('0x38')]:_0x17e7b6[_0x857f('0x34')];if(!_0x464e8f['query']['hasOwnProperty'](_0x857f('0x3a'))){_0xe79241['limit']=qs[_0x857f('0x21')](_0x464e8f[_0x857f('0x35')][_0x857f('0x21')]);_0xe79241['offset']=qs[_0x857f('0x1f')](_0x464e8f[_0x857f('0x35')][_0x857f('0x1f')]);}_0xe79241[_0x857f('0x3b')]=qs[_0x857f('0x3c')](_0x464e8f[_0x857f('0x35')][_0x857f('0x3c')]);_0xe79241['where']=qs[_0x857f('0x36')](_[_0x857f('0x3d')](_0x464e8f[_0x857f('0x35')],_0x17e7b6[_0x857f('0x36')]),_0x24adc2);if(_0x464e8f[_0x857f('0x35')][_0x857f('0x3e')]){_0xe79241[_0x857f('0x3f')]=_['merge'](_0xe79241[_0x857f('0x3f')],{'$or':_[_0x857f('0x30')](_0x24adc2,function(_0xcd5959){if(_0xcd5959[_0x857f('0x40')]!==_0x857f('0x41')){var _0x1c119f={};_0x1c119f[_0xcd5959['name']]={'$like':'%'+_0x464e8f[_0x857f('0x35')][_0x857f('0x3e')]+'%'};return _0x1c119f;}})});}_0xe79241=_[_0x857f('0x42')]({},_0xe79241,_0x464e8f[_0x857f('0x43')]);var _0x3938ee={'where':_0xe79241[_0x857f('0x3f')]};return db[_0x857f('0x31')][_0x857f('0x22')](_0x3938ee)['then'](function(_0x40fb37){_0x41f832[_0x857f('0x22')]=_0x40fb37;if(_0x464e8f[_0x857f('0x35')][_0x857f('0x44')]){_0xe79241[_0x857f('0x45')]=[{'all':!![]}];}return db[_0x857f('0x31')][_0x857f('0x46')](_0xe79241);})[_0x857f('0x28')](function(_0xb4d7c2){_0x41f832[_0x857f('0x47')]=_0xb4d7c2;return _0x41f832;})[_0x857f('0x28')](respondWithFilteredResult(_0x1c4fff,_0xe79241))[_0x857f('0x48')](handleError(_0x1c4fff,null));};exports[_0x857f('0x49')]=function(_0x376f71,_0x5d4c2a){var _0xe0e078={'raw':!![],'where':{'id':_0x376f71[_0x857f('0x4a')]['id']}},_0x5b2baa={};_0x5b2baa[_0x857f('0x34')]=_[_0x857f('0x4b')](db[_0x857f('0x31')][_0x857f('0x4c')]);_0x5b2baa[_0x857f('0x35')]=_[_0x857f('0x4b')](_0x376f71[_0x857f('0x35')]);_0x5b2baa[_0x857f('0x36')]=_[_0x857f('0x37')](_0x5b2baa[_0x857f('0x34')],_0x5b2baa['query']);_0xe0e078['attributes']=_[_0x857f('0x37')](_0x5b2baa['model'],qs[_0x857f('0x4d')](_0x376f71['query'][_0x857f('0x4d')]));_0xe0e078[_0x857f('0x38')]=_0xe0e078[_0x857f('0x38')][_0x857f('0x39')]?_0xe0e078[_0x857f('0x38')]:_0x5b2baa[_0x857f('0x34')];if(_0x376f71[_0x857f('0x35')][_0x857f('0x44')]){_0xe0e078['include']=[{'all':!![]}];}_0xe0e078=_[_0x857f('0x42')]({},_0xe0e078,_0x376f71[_0x857f('0x43')]);return db[_0x857f('0x31')][_0x857f('0x4e')](_0xe0e078)['then'](handleEntityNotFound(_0x5d4c2a,null))[_0x857f('0x28')](respondWithResult(_0x5d4c2a,null))[_0x857f('0x48')](handleError(_0x5d4c2a,null));};exports[_0x857f('0x4f')]=function(_0x736ef6,_0x67563){return db['VoiceMail'][_0x857f('0x4f')](_0x736ef6[_0x857f('0x50')],{})['then'](function(_0xfd1679){var _0x847879=_0x736ef6['user'][_0x857f('0x29')]({'plain':!![]});if(!_0x847879)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x847879[_0x857f('0x51')]===_0x857f('0x52')){var _0x446fe9=_0xfd1679[_0x857f('0x29')]({'plain':!![]});var _0x58bf27=_0x857f('0x2a');return db[_0x857f('0x53')][_0x857f('0x4e')]({'where':{'name':_0x58bf27,'userProfileId':_0x847879[_0x857f('0x54')]},'raw':!![]})[_0x857f('0x28')](function(_0x4f9d24){if(_0x4f9d24&&_0x4f9d24[_0x857f('0x55')]===0x0){return db[_0x857f('0x2b')][_0x857f('0x4f')]({'name':_0x446fe9[_0x857f('0x2d')],'resourceId':_0x446fe9['id'],'type':_0x4f9d24[_0x857f('0x2d')],'sectionId':_0x4f9d24['id']},{})[_0x857f('0x28')](function(){return _0xfd1679;});}else{return _0xfd1679;}})[_0x857f('0x48')](function(_0x59164a){logger[_0x857f('0x2c')](_0x857f('0x56'),_0x59164a);throw _0x59164a;});}return _0xfd1679;})[_0x857f('0x28')](respondWithResult(_0x67563,0xc9))[_0x857f('0x48')](handleError(_0x67563,null));};exports[_0x857f('0x26')]=function(_0x153e4e,_0x4bb5fc){if(_0x153e4e[_0x857f('0x50')]['id']){delete _0x153e4e[_0x857f('0x50')]['id'];}return db[_0x857f('0x31')][_0x857f('0x4e')]({'where':{'id':_0x153e4e[_0x857f('0x4a')]['id']}})[_0x857f('0x28')](handleEntityNotFound(_0x4bb5fc,null))[_0x857f('0x28')](saveUpdates(_0x153e4e[_0x857f('0x50')],null))['then'](respondWithResult(_0x4bb5fc,null))['catch'](handleError(_0x4bb5fc,null));};exports[_0x857f('0x27')]=function(_0x477653,_0x14b2ff){return db[_0x857f('0x31')][_0x857f('0x4e')]({'where':{'id':_0x477653[_0x857f('0x4a')]['id']}})['then'](handleEntityNotFound(_0x14b2ff,null))[_0x857f('0x28')](removeEntity(_0x14b2ff,null))[_0x857f('0x48')](handleError(_0x14b2ff,null));};exports['getMessages']=function(_0x280a95,_0x5e3759,_0x17f12c){return db[_0x857f('0x31')]['findOne']({'where':{'id':_0x280a95[_0x857f('0x4a')]['id']}})[_0x857f('0x28')](handleEntityNotFound(_0x5e3759,null))[_0x857f('0x28')](function(_0x464208){var _0x868071;var _0x1d096b={},_0x2fed09={};_0x2fed09[_0x857f('0x34')]=_['keys'](db[_0x857f('0x57')][_0x857f('0x4c')]);_0x2fed09[_0x857f('0x35')]=_[_0x857f('0x4b')](_0x280a95[_0x857f('0x35')]);_0x2fed09[_0x857f('0x36')]=_[_0x857f('0x37')](_0x2fed09[_0x857f('0x34')],_0x2fed09[_0x857f('0x35')]);_0x1d096b[_0x857f('0x38')]=_[_0x857f('0x37')](_0x2fed09['model'],qs[_0x857f('0x4d')](_0x280a95[_0x857f('0x35')][_0x857f('0x4d')]));_0x1d096b[_0x857f('0x38')]=_0x1d096b['attributes'][_0x857f('0x39')]?_0x1d096b['attributes']:_0x2fed09[_0x857f('0x34')];if(!_0x280a95[_0x857f('0x35')][_0x857f('0x58')](_0x857f('0x3a'))){_0x1d096b['limit']=qs['limit'](_0x280a95[_0x857f('0x35')][_0x857f('0x21')]);_0x1d096b[_0x857f('0x1f')]=qs['offset'](_0x280a95[_0x857f('0x35')]['offset']);}_0x1d096b[_0x857f('0x3b')]=qs[_0x857f('0x3c')](_0x280a95[_0x857f('0x35')]['sort']);_0x1d096b['where']=qs[_0x857f('0x36')](_[_0x857f('0x3d')](_0x280a95[_0x857f('0x35')],_0x2fed09[_0x857f('0x36')]));if(_0x280a95[_0x857f('0x35')][_0x857f('0x3e')]){_0x1d096b[_0x857f('0x3f')]=_[_0x857f('0x42')](_0x1d096b['where'],{'$or':_['map'](_0x1d096b[_0x857f('0x38')],function(_0xb60b6e){var _0x3f144e={};_0x3f144e[_0xb60b6e]={'$like':'%'+_0x280a95[_0x857f('0x35')][_0x857f('0x3e')]+'%'};return _0x3f144e;})});}_0x1d096b[_0x857f('0x3f')]=_['merge'](_0x1d096b[_0x857f('0x3f')],{'mailboxuser':_0x464208[_0x857f('0x59')]});_0x1d096b=_[_0x857f('0x42')]({},_0x1d096b,_0x280a95[_0x857f('0x43')]);return db[_0x857f('0x57')][_0x857f('0x5a')](_0x1d096b)[_0x857f('0x28')](respondWithFilteredResult(_0x5e3759,_0x1d096b));})[_0x857f('0x48')](handleError(_0x5e3759,null));};
\ No newline at end of file
index d233e02..6e16386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe2=['mailbox','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceMail','voice_voicemail','mailbox_context'];(function(_0x288c76,_0x5ed216){var _0x3e0c44=function(_0x46dac4){while(--_0x46dac4){_0x288c76['push'](_0x288c76['shift']());}};_0x3e0c44(++_0x5ed216);}(_0xabe2,0x79));var _0x2abe=function(_0x3e2793,_0x4dbc24){_0x3e2793=_0x3e2793-0x0;var _0x50cb91=_0xabe2[_0x3e2793];return _0x50cb91;};'use strict';var _=require(_0x2abe('0x0'));var util=require(_0x2abe('0x1'));var logger=require(_0x2abe('0x2'))(_0x2abe('0x3'));var moment=require(_0x2abe('0x4'));var BPromise=require(_0x2abe('0x5'));var rp=require(_0x2abe('0x6'));var fs=require('fs');var path=require(_0x2abe('0x7'));var rimraf=require(_0x2abe('0x8'));var config=require(_0x2abe('0x9'));var attributes=require('./voiceMail.attributes');module[_0x2abe('0xa')]=function(_0x5da772,_0x567b8b){return _0x5da772[_0x2abe('0xb')](_0x2abe('0xc'),attributes,{'tableName':_0x2abe('0xd'),'paranoid':![],'indexes':[{'name':_0x2abe('0xe'),'fields':[_0x2abe('0xf'),_0x2abe('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2fce=['api','moment','bluebird','path','rimraf','../../config/environment','./voiceMail.attributes','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','../../config/logger'];(function(_0x3a68d7,_0x403670){var _0x569a48=function(_0x41f26c){while(--_0x41f26c){_0x3a68d7['push'](_0x3a68d7['shift']());}};_0x569a48(++_0x403670);}(_0x2fce,0x166));var _0xe2fc=function(_0x20bf8b,_0x3a3be9){_0x20bf8b=_0x20bf8b-0x0;var _0x52a37c=_0x2fce[_0x20bf8b];return _0x52a37c;};'use strict';var _=require(_0xe2fc('0x0'));var util=require('util');var logger=require(_0xe2fc('0x1'))(_0xe2fc('0x2'));var moment=require(_0xe2fc('0x3'));var BPromise=require(_0xe2fc('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe2fc('0x5'));var rimraf=require(_0xe2fc('0x6'));var config=require(_0xe2fc('0x7'));var attributes=require(_0xe2fc('0x8'));module['exports']=function(_0xd901a3,_0x53873d){return _0xd901a3[_0xe2fc('0x9')](_0xe2fc('0xa'),attributes,{'tableName':_0xe2fc('0xb'),'paranoid':![],'indexes':[{'name':_0xe2fc('0xc'),'fields':[_0xe2fc('0xd'),_0xe2fc('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index be5105d..7da9c96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61cd=['request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','info','VoiceMail,\x20%s,\x20%s','debug'];(function(_0x2b422c,_0x53b63c){var _0x45f47c=function(_0x1ff940){while(--_0x1ff940){_0x2b422c['push'](_0x2b422c['shift']());}};_0x45f47c(++_0x53b63c);}(_0x61cd,0x104));var _0xd61c=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x61cd[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xd61c('0x0'));var util=require(_0xd61c('0x1'));var moment=require(_0xd61c('0x2'));var BPromise=require(_0xd61c('0x3'));var rs=require(_0xd61c('0x4'));var fs=require('fs');var Redis=require(_0xd61c('0x5'));var db=require(_0xd61c('0x6'))['db'];var utils=require(_0xd61c('0x7'));var logger=require('../../config/logger')(_0xd61c('0x8'));var config=require(_0xd61c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd61c('0xa')][_0xd61c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x338ea5,_0x20ef42,_0xbb743d){return new BPromise(function(_0x27426a,_0x5da2d0){return client['request'](_0x338ea5,_0xbb743d)[_0xd61c('0xc')](function(_0x4a4783){logger[_0xd61c('0xd')](_0xd61c('0xe'),_0x20ef42,'request\x20sent');logger[_0xd61c('0xf')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x20ef42,_0xd61c('0x10'),JSON[_0xd61c('0x11')](_0x4a4783));if(_0x4a4783[_0xd61c('0x12')]){if(_0x4a4783[_0xd61c('0x12')][_0xd61c('0x13')]===0x1f4){logger[_0xd61c('0x12')](_0xd61c('0xe'),_0x20ef42,_0x4a4783['error'][_0xd61c('0x14')]);return _0x5da2d0(_0x4a4783['error'][_0xd61c('0x14')]);}logger['error'](_0xd61c('0xe'),_0x20ef42,_0x4a4783[_0xd61c('0x12')][_0xd61c('0x14')]);return _0x27426a(_0x4a4783['error'][_0xd61c('0x14')]);}else{logger[_0xd61c('0xd')](_0xd61c('0xe'),_0x20ef42,'request\x20sent');_0x27426a(_0x4a4783[_0xd61c('0x15')]['message']);}})[_0xd61c('0x16')](function(_0x49b1a3){logger[_0xd61c('0x12')]('VoiceMail,\x20%s,\x20%s',_0x20ef42,_0x49b1a3);_0x5da2d0(_0x49b1a3);});});}
\ No newline at end of file
+var _0xddb1=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceMail,\x20%s,\x20%s','result','catch','util','moment','randomstring','ioredis'];(function(_0x398b90,_0x17e869){var _0xec80a6=function(_0x5a0faf){while(--_0x5a0faf){_0x398b90['push'](_0x398b90['shift']());}};_0xec80a6(++_0x17e869);}(_0xddb1,0x80));var _0x1ddb=function(_0x1bba16,_0x36f763){_0x1bba16=_0x1bba16-0x0;var _0x223efb=_0xddb1[_0x1bba16];return _0x223efb;};'use strict';var _=require('lodash');var util=require(_0x1ddb('0x0'));var moment=require(_0x1ddb('0x1'));var BPromise=require('bluebird');var rs=require(_0x1ddb('0x2'));var fs=require('fs');var Redis=require(_0x1ddb('0x3'));var db=require(_0x1ddb('0x4'))['db'];var utils=require(_0x1ddb('0x5'));var logger=require(_0x1ddb('0x6'))(_0x1ddb('0x7'));var config=require('../../config/environment');var jayson=require(_0x1ddb('0x8'));var client=jayson['client'][_0x1ddb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xc38c32,_0x30cafb,_0x3eef9f){return new BPromise(function(_0x1467be,_0x366b2d){return client[_0x1ddb('0xa')](_0xc38c32,_0x3eef9f)['then'](function(_0x24dc6c){logger[_0x1ddb('0xb')]('VoiceMail,\x20%s,\x20%s',_0x30cafb,_0x1ddb('0xc'));logger[_0x1ddb('0xd')](_0x1ddb('0xe'),_0x30cafb,_0x1ddb('0xc'),JSON[_0x1ddb('0xf')](_0x24dc6c));if(_0x24dc6c['error']){if(_0x24dc6c[_0x1ddb('0x10')][_0x1ddb('0x11')]===0x1f4){logger[_0x1ddb('0x10')]('VoiceMail,\x20%s,\x20%s',_0x30cafb,_0x24dc6c[_0x1ddb('0x10')][_0x1ddb('0x12')]);return _0x366b2d(_0x24dc6c[_0x1ddb('0x10')][_0x1ddb('0x12')]);}logger['error'](_0x1ddb('0x13'),_0x30cafb,_0x24dc6c[_0x1ddb('0x10')]['message']);return _0x1467be(_0x24dc6c[_0x1ddb('0x10')][_0x1ddb('0x12')]);}else{logger[_0x1ddb('0xb')]('VoiceMail,\x20%s,\x20%s',_0x30cafb,_0x1ddb('0xc'));_0x1467be(_0x24dc6c[_0x1ddb('0x14')][_0x1ddb('0x12')]);}})[_0x1ddb('0x15')](function(_0x594f76){logger['error']('VoiceMail,\x20%s,\x20%s',_0x30cafb,_0x594f76);_0x366b2d(_0x594f76);});});}
\ No newline at end of file
index 792a302..937c6d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07a=['../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','create','update','delete','multer','path','express','fs-extra'];(function(_0x2aa8ab,_0x212704){var _0x34cb9b=function(_0x43295b){while(--_0x43295b){_0x2aa8ab['push'](_0x2aa8ab['shift']());}};_0x34cb9b(++_0x212704);}(_0xa07a,0x1c7));var _0xaa07=function(_0x1d8f92,_0x45abac){_0x1d8f92=_0x1d8f92-0x0;var _0x4592e0=_0xa07a[_0x1d8f92];return _0x4592e0;};'use strict';var multer=require(_0xaa07('0x0'));var util=require('util');var path=require(_0xaa07('0x1'));var timeout=require('connect-timeout');var express=require(_0xaa07('0x2'));var router=express['Router']();var fs_extra=require(_0xaa07('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xaa07('0x4'));var config=require(_0xaa07('0x5'));var controller=require(_0xaa07('0x6'));router[_0xaa07('0x7')]('/',auth[_0xaa07('0x8')](),controller[_0xaa07('0x9')]);router[_0xaa07('0x7')](_0xaa07('0xa'),auth['isAuthenticated'](),controller[_0xaa07('0xb')]);router[_0xaa07('0x7')](_0xaa07('0xc'),auth['isAuthenticated'](),controller[_0xaa07('0xd')]);router['post']('/',auth[_0xaa07('0x8')](),controller[_0xaa07('0xe')]);router['put'](_0xaa07('0xa'),auth[_0xaa07('0x8')](),controller[_0xaa07('0xf')]);router[_0xaa07('0x10')]('/:id',auth[_0xaa07('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7802=['/:id','/:id/download','post','create','put','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index'];(function(_0xc4e092,_0x5a666c){var _0x1143c6=function(_0x571521){while(--_0x571521){_0xc4e092['push'](_0xc4e092['shift']());}};_0x1143c6(++_0x5a666c);}(_0x7802,0x6d));var _0x2780=function(_0x34b02a,_0xc897da){_0x34b02a=_0x34b02a-0x0;var _0x393178=_0x7802[_0x34b02a];return _0x393178;};'use strict';var multer=require(_0x2780('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2780('0x1'));var express=require(_0x2780('0x2'));var router=express[_0x2780('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2780('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x2780('0x5'));var controller=require(_0x2780('0x6'));router[_0x2780('0x7')]('/',auth[_0x2780('0x8')](),controller[_0x2780('0x9')]);router[_0x2780('0x7')](_0x2780('0xa'),auth[_0x2780('0x8')](),controller['show']);router[_0x2780('0x7')](_0x2780('0xb'),auth[_0x2780('0x8')](),controller['download']);router[_0x2780('0xc')]('/',auth[_0x2780('0x8')](),controller[_0x2780('0xd')]);router[_0x2780('0xe')](_0x2780('0xa'),auth[_0x2780('0x8')](),controller['update']);router['delete']('/:id',auth[_0x2780('0x8')](),controller[_0x2780('0xf')]);module[_0x2780('0x10')]=router;
\ No newline at end of file
index 1db7e7a..bd40006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10bb=['BLOB','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','STRING'];(function(_0xa0affd,_0x3c6539){var _0xd30783=function(_0x125d56){while(--_0x125d56){_0xa0affd['push'](_0xa0affd['shift']());}};_0xd30783(++_0x3c6539);}(_0x10bb,0xc3));var _0xb10b=function(_0x50fe77,_0x52e1c9){_0x50fe77=_0x50fe77-0x0;var _0x92a30f=_0x10bb[_0x50fe77];return _0x92a30f;};'use strict';var Sequelize=require(_0xb10b('0x0'));module[_0xb10b('0x1')]={'name':{'type':Sequelize[_0xb10b('0x2')],'get':function(_0x160eb4){return this[_0xb10b('0x3')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xb10b('0x5')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xb10b('0x4')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0xb10b('0x6')](_0xb10b('0x7'))}};
\ No newline at end of file
+var _0x9b16=['STRING','long','TIMESTAMP','literal','exports'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x9b16,0x1ad));var _0x69b1=function(_0x8380f6,_0x69928e){_0x8380f6=_0x8380f6-0x0;var _0x31ae1f=_0x9b16[_0x8380f6];return _0x31ae1f;};'use strict';var Sequelize=require('sequelize');module[_0x69b1('0x0')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1aead0){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'context':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'callerid':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'origtime':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'duration':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0x69b1('0x2')),'defaultValue':null},'flag':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x69b1('0x1')],'defaultValue':''},'stamp':{'type':_0x69b1('0x3'),'defaultValue':Sequelize[_0x69b1('0x4')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index e1879db..6693afb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb31c=['../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','map','VoiceMailMessage','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','catch','show','find','create','body','params','download','recording','msg_id','Sequelize','ValidationError','audio/wav','attachment','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x560b56,_0x2004b9){var _0x173c4e=function(_0x216f0d){while(--_0x216f0d){_0x560b56['push'](_0x560b56['shift']());}};_0x173c4e(++_0x2004b9);}(_0xb31c,0x97));var _0xcb31=function(_0x559139,_0x31e5bb){_0x559139=_0x559139-0x0;var _0x59869e=_0xb31c[_0x559139];return _0x59869e;};'use strict';var emlformat=require(_0xcb31('0x0'));var rimraf=require(_0xcb31('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcb31('0x2'));var rp=require('request-promise');var moment=require(_0xcb31('0x3'));var BPromise=require(_0xcb31('0x4'));var Mustache=require(_0xcb31('0x5'));var util=require(_0xcb31('0x6'));var path=require(_0xcb31('0x7'));var sox=require(_0xcb31('0x8'));var csv=require(_0xcb31('0x9'));var ejs=require(_0xcb31('0xa'));var fs=require('fs');var fs_extra=require(_0xcb31('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xcb31('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcb31('0xd'));var toCsv=require(_0xcb31('0x9'));var querystring=require(_0xcb31('0xe'));var Papa=require(_0xcb31('0xf'));var Redis=require(_0xcb31('0x10'));var authService=require(_0xcb31('0x11'));var qs=require(_0xcb31('0x12'));var as=require(_0xcb31('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcb31('0x14'))('api');var utils=require(_0xcb31('0x15'));var config=require(_0xcb31('0x16'));var licenseUtil=require(_0xcb31('0x17'));var db=require(_0xcb31('0x18'))['db'];function respondWithStatusCode(_0x5810d5,_0x4b227c){_0x4b227c=_0x4b227c||0xcc;return function(_0x360d45){if(_0x360d45){return _0x5810d5['sendStatus'](_0x4b227c);}return _0x5810d5[_0xcb31('0x19')](_0x4b227c)[_0xcb31('0x1a')]();};}function respondWithResult(_0x56e9ad,_0x32581c){_0x32581c=_0x32581c||0xc8;return function(_0x5456eb){if(_0x5456eb){return _0x56e9ad[_0xcb31('0x19')](_0x32581c)[_0xcb31('0x1b')](_0x5456eb);}};}function respondWithFilteredResult(_0x1d9465,_0x50bac0){return function(_0x5ceb06){if(_0x5ceb06){var _0x9f884b=typeof _0x50bac0[_0xcb31('0x1c')]===_0xcb31('0x1d')&&typeof _0x50bac0[_0xcb31('0x1e')]===_0xcb31('0x1d');var _0x4b44de=_0x5ceb06[_0xcb31('0x1f')];var _0x33f819=_0x9f884b?0x0:_0x50bac0[_0xcb31('0x1c')];var _0x2958d5=_0x9f884b?_0x5ceb06[_0xcb31('0x1f')]:_0x50bac0[_0xcb31('0x1c')]+_0x50bac0[_0xcb31('0x1e')];var _0x5b67fa;if(_0x2958d5>=_0x4b44de){_0x2958d5=_0x4b44de;_0x5b67fa=0xc8;}else{_0x5b67fa=0xce;}_0x1d9465[_0xcb31('0x19')](_0x5b67fa);return _0x1d9465[_0xcb31('0x20')](_0xcb31('0x21'),_0x33f819+'-'+_0x2958d5+'/'+_0x4b44de)[_0xcb31('0x1b')](_0x5ceb06);}return null;};}function patchUpdates(_0x3a77f0){return function(_0x467244){try{jsonpatch[_0xcb31('0x22')](_0x467244,_0x3a77f0,!![]);}catch(_0x5a3ae6){return BPromise[_0xcb31('0x23')](_0x5a3ae6);}return _0x467244['save']();};}function saveUpdates(_0x4ed64a,_0x15c7fb){return function(_0x621d6b){if(_0x621d6b){return _0x621d6b[_0xcb31('0x24')](_0x4ed64a)[_0xcb31('0x25')](function(_0x150ff3){return _0x150ff3;});}return null;};}function removeEntity(_0x5ba8bb,_0x23c1c4){return function(_0xa16826){if(_0xa16826){return _0xa16826[_0xcb31('0x26')]()[_0xcb31('0x25')](function(){_0x5ba8bb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x124cbd,_0x482d75){return function(_0x2c1edc){if(!_0x2c1edc){_0x124cbd[_0xcb31('0x27')](0x194);}return _0x2c1edc;};}function handleError(_0x4fb1bd,_0x1b36a7){_0x1b36a7=_0x1b36a7||0x1f4;return function(_0x2255c1){logger[_0xcb31('0x28')](_0x2255c1[_0xcb31('0x29')]);if(_0x2255c1[_0xcb31('0x2a')]){delete _0x2255c1[_0xcb31('0x2a')];}_0x4fb1bd[_0xcb31('0x19')](_0x1b36a7)[_0xcb31('0x2b')](_0x2255c1);};}exports['index']=function(_0x1ad9c1,_0x287a9d){var _0x383ef1={},_0x5617f7={},_0x33e281={'count':0x0,'rows':[]};var _0x47667f=_[_0xcb31('0x2c')](db[_0xcb31('0x2d')][_0xcb31('0x2e')],function(_0x3692f6){return{'name':_0x3692f6[_0xcb31('0x2f')],'type':_0x3692f6[_0xcb31('0x30')][_0xcb31('0x31')]};});_0x5617f7[_0xcb31('0x32')]=_[_0xcb31('0x33')](_[_0xcb31('0x2c')](_0x47667f,_0xcb31('0x2a')),[_0xcb31('0x2a')]);_0x5617f7[_0xcb31('0x34')]=_[_0xcb31('0x35')](_0x1ad9c1['query']);_0x5617f7[_0xcb31('0x36')]=_[_0xcb31('0x37')](_0x5617f7[_0xcb31('0x32')],_0x5617f7[_0xcb31('0x34')]);_0x383ef1[_0xcb31('0x38')]=_[_0xcb31('0x37')](_0x5617f7[_0xcb31('0x32')],qs[_0xcb31('0x39')](_0x1ad9c1[_0xcb31('0x34')][_0xcb31('0x39')]));_0x383ef1['attributes']=_0x383ef1['attributes'][_0xcb31('0x3a')]?_0x383ef1[_0xcb31('0x38')]:_0x5617f7['model'];if(!_0x1ad9c1[_0xcb31('0x34')][_0xcb31('0x3b')](_0xcb31('0x3c'))){_0x383ef1[_0xcb31('0x1e')]=qs[_0xcb31('0x1e')](_0x1ad9c1[_0xcb31('0x34')]['limit']);_0x383ef1['offset']=qs[_0xcb31('0x1c')](_0x1ad9c1[_0xcb31('0x34')][_0xcb31('0x1c')]);}_0x383ef1[_0xcb31('0x3d')]=qs['sort'](_0x1ad9c1['query'][_0xcb31('0x3e')]);_0x383ef1[_0xcb31('0x3f')]=qs[_0xcb31('0x36')](_[_0xcb31('0x40')](_0x1ad9c1[_0xcb31('0x34')],_0x5617f7['filters']),_0x47667f);if(_0x1ad9c1[_0xcb31('0x34')]['filter']){_0x383ef1[_0xcb31('0x3f')]=_[_0xcb31('0x41')](_0x383ef1[_0xcb31('0x3f')],{'$or':_[_0xcb31('0x2c')](_0x47667f,function(_0x260488){if(_0x260488['type']!=='VIRTUAL'){var _0x1ee954={};_0x1ee954[_0x260488[_0xcb31('0x2a')]]={'$like':'%'+_0x1ad9c1[_0xcb31('0x34')][_0xcb31('0x42')]+'%'};return _0x1ee954;}})});}_0x383ef1=_[_0xcb31('0x41')]({},_0x383ef1,_0x1ad9c1['options']);var _0x473581={'where':_0x383ef1[_0xcb31('0x3f')]};return db[_0xcb31('0x2d')][_0xcb31('0x1f')](_0x473581)['then'](function(_0x1ae794){_0x33e281[_0xcb31('0x1f')]=_0x1ae794;if(_0x1ad9c1[_0xcb31('0x34')][_0xcb31('0x43')]){_0x383ef1[_0xcb31('0x44')]=[{'all':!![]}];}return db[_0xcb31('0x2d')][_0xcb31('0x45')](_0x383ef1);})[_0xcb31('0x25')](function(_0x4d6896){_0x33e281['rows']=_0x4d6896;return _0x33e281;})['then'](respondWithFilteredResult(_0x287a9d,_0x383ef1))[_0xcb31('0x46')](handleError(_0x287a9d,null));};exports[_0xcb31('0x47')]=function(_0x1b9f28,_0x493b2f){var _0x1f063f={'raw':!![],'where':{'id':_0x1b9f28['params']['id']}},_0x568833={};_0x568833[_0xcb31('0x32')]=_[_0xcb31('0x35')](db[_0xcb31('0x2d')]['rawAttributes']);_0x568833[_0xcb31('0x34')]=_[_0xcb31('0x35')](_0x1b9f28[_0xcb31('0x34')]);_0x568833['filters']=_[_0xcb31('0x37')](_0x568833[_0xcb31('0x32')],_0x568833['query']);_0x1f063f[_0xcb31('0x38')]=_[_0xcb31('0x37')](_0x568833['model'],qs[_0xcb31('0x39')](_0x1b9f28[_0xcb31('0x34')][_0xcb31('0x39')]));_0x1f063f[_0xcb31('0x38')]=_0x1f063f['attributes'][_0xcb31('0x3a')]?_0x1f063f[_0xcb31('0x38')]:_0x568833[_0xcb31('0x32')];if(_0x1b9f28[_0xcb31('0x34')][_0xcb31('0x43')]){_0x1f063f['include']=[{'all':!![]}];}_0x1f063f=_[_0xcb31('0x41')]({},_0x1f063f,_0x1b9f28['options']);return db[_0xcb31('0x2d')][_0xcb31('0x48')](_0x1f063f)[_0xcb31('0x25')](handleEntityNotFound(_0x493b2f,null))[_0xcb31('0x25')](respondWithResult(_0x493b2f,null))[_0xcb31('0x46')](handleError(_0x493b2f,null));};exports[_0xcb31('0x49')]=function(_0x4cb254,_0xb83a01){return db[_0xcb31('0x2d')]['create'](_0x4cb254[_0xcb31('0x4a')],{})[_0xcb31('0x25')](respondWithResult(_0xb83a01,0xc9))[_0xcb31('0x46')](handleError(_0xb83a01,null));};exports[_0xcb31('0x24')]=function(_0x2bca0e,_0x70235a){if(_0x2bca0e[_0xcb31('0x4a')]['id']){delete _0x2bca0e[_0xcb31('0x4a')]['id'];}return db[_0xcb31('0x2d')][_0xcb31('0x48')]({'where':{'id':_0x2bca0e[_0xcb31('0x4b')]['id']}})['then'](handleEntityNotFound(_0x70235a,null))['then'](saveUpdates(_0x2bca0e[_0xcb31('0x4a')],null))[_0xcb31('0x25')](respondWithResult(_0x70235a,null))[_0xcb31('0x46')](handleError(_0x70235a,null));};exports['destroy']=function(_0x360871,_0x353f7a){return db['VoiceMailMessage'][_0xcb31('0x48')]({'where':{'id':_0x360871[_0xcb31('0x4b')]['id']}})['then'](handleEntityNotFound(_0x353f7a,null))[_0xcb31('0x25')](removeEntity(_0x353f7a,null))[_0xcb31('0x46')](handleError(_0x353f7a,null));};exports[_0xcb31('0x4c')]=function(_0x1c92a5,_0x4c1cc2,_0x541947){return db[_0xcb31('0x2d')][_0xcb31('0x48')]({'where':{'id':_0x1c92a5[_0xcb31('0x4b')]['id']},'attributes':['id',_0xcb31('0x4d'),_0xcb31('0x4e')]})[_0xcb31('0x25')](handleEntityNotFound(_0x4c1cc2,null))[_0xcb31('0x25')](function(_0xeccfe5){if(_0xeccfe5){if(!_0xeccfe5[_0xcb31('0x4d')]){throw new db[(_0xcb31('0x4f'))][(_0xcb31('0x50'))]('VoiceMailMessage\x20not\x20found');}var _0x3ca46d={'Content-Type':_0xcb31('0x51'),'Content-Disposition':_0xcb31('0x52')};if(_0xeccfe5[_0xcb31('0x4e')]){_0x3ca46d['Content-Disposition']=_0xcb31('0x53')+_0xeccfe5[_0xcb31('0x4e')]+_0xcb31('0x54');}_0x4c1cc2['set'](_0x3ca46d);return _0x4c1cc2[_0xcb31('0x2b')](new Buffer(_0xeccfe5['recording']));}})[_0xcb31('0x46')](handleError(_0x4c1cc2,null));};
\ No newline at end of file
+var _0x214a=['msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','error','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','VoiceMailMessage','rows','show','params','keys','find','catch','create','body','update','download','recording','ValidationError','audio/wav','attachment'];(function(_0x4d49d8,_0x1eb52d){var _0x2873f0=function(_0xb2dd57){while(--_0xb2dd57){_0x4d49d8['push'](_0x4d49d8['shift']());}};_0x2873f0(++_0x1eb52d);}(_0x214a,0x144));var _0xa214=function(_0x1da14b,_0x1d91a9){_0x1da14b=_0x1da14b-0x0;var _0xd4890d=_0x214a[_0x1da14b];return _0xd4890d;};'use strict';var emlformat=require(_0xa214('0x0'));var rimraf=require(_0xa214('0x1'));var zipdir=require(_0xa214('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa214('0x3'));var BPromise=require(_0xa214('0x4'));var Mustache=require(_0xa214('0x5'));var util=require('util');var path=require(_0xa214('0x6'));var sox=require(_0xa214('0x7'));var csv=require(_0xa214('0x8'));var ejs=require(_0xa214('0x9'));var fs=require('fs');var fs_extra=require(_0xa214('0xa'));var _=require(_0xa214('0xb'));var squel=require(_0xa214('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa214('0xd'));var toCsv=require(_0xa214('0x8'));var querystring=require(_0xa214('0xe'));var Papa=require(_0xa214('0xf'));var Redis=require('ioredis');var authService=require(_0xa214('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa214('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa214('0x12'))(_0xa214('0x13'));var utils=require('../../config/utils');var config=require(_0xa214('0x14'));var licenseUtil=require(_0xa214('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2496b6,_0x1b3265){_0x1b3265=_0x1b3265||0xcc;return function(_0x4e7fa0){if(_0x4e7fa0){return _0x2496b6[_0xa214('0x16')](_0x1b3265);}return _0x2496b6[_0xa214('0x17')](_0x1b3265)[_0xa214('0x18')]();};}function respondWithResult(_0x1fff78,_0x338d3d){_0x338d3d=_0x338d3d||0xc8;return function(_0x1928e1){if(_0x1928e1){return _0x1fff78['status'](_0x338d3d)[_0xa214('0x19')](_0x1928e1);}};}function respondWithFilteredResult(_0x5080b2,_0x7d9470){return function(_0x3ee41b){if(_0x3ee41b){var _0x4cb454=typeof _0x7d9470[_0xa214('0x1a')]===_0xa214('0x1b')&&typeof _0x7d9470[_0xa214('0x1c')]==='undefined';var _0xb690e=_0x3ee41b[_0xa214('0x1d')];var _0x1797bd=_0x4cb454?0x0:_0x7d9470[_0xa214('0x1a')];var _0x32905f=_0x4cb454?_0x3ee41b[_0xa214('0x1d')]:_0x7d9470[_0xa214('0x1a')]+_0x7d9470['limit'];var _0x33f647;if(_0x32905f>=_0xb690e){_0x32905f=_0xb690e;_0x33f647=0xc8;}else{_0x33f647=0xce;}_0x5080b2['status'](_0x33f647);return _0x5080b2[_0xa214('0x1e')](_0xa214('0x1f'),_0x1797bd+'-'+_0x32905f+'/'+_0xb690e)[_0xa214('0x19')](_0x3ee41b);}return null;};}function patchUpdates(_0x32ba70){return function(_0x6669ba){try{jsonpatch['apply'](_0x6669ba,_0x32ba70,!![]);}catch(_0x52ef35){return BPromise[_0xa214('0x20')](_0x52ef35);}return _0x6669ba[_0xa214('0x21')]();};}function saveUpdates(_0x5d43aa,_0x310908){return function(_0x58937a){if(_0x58937a){return _0x58937a['update'](_0x5d43aa)['then'](function(_0xef09a8){return _0xef09a8;});}return null;};}function removeEntity(_0xf4317b,_0x454c1e){return function(_0x5f3526){if(_0x5f3526){return _0x5f3526[_0xa214('0x22')]()[_0xa214('0x23')](function(){_0xf4317b[_0xa214('0x17')](0xcc)[_0xa214('0x18')]();});}};}function handleEntityNotFound(_0xd3de38,_0x892105){return function(_0x5e37dc){if(!_0x5e37dc){_0xd3de38['sendStatus'](0x194);}return _0x5e37dc;};}function handleError(_0x15e8c7,_0x21b0e4){_0x21b0e4=_0x21b0e4||0x1f4;return function(_0x57a73b){logger[_0xa214('0x24')](_0x57a73b['stack']);if(_0x57a73b[_0xa214('0x25')]){delete _0x57a73b[_0xa214('0x25')];}_0x15e8c7[_0xa214('0x17')](_0x21b0e4)[_0xa214('0x26')](_0x57a73b);};}exports[_0xa214('0x27')]=function(_0x277e2e,_0x298e4a){var _0x3a5bb1={},_0x8e1782={},_0x21f745={'count':0x0,'rows':[]};var _0x50019a=_[_0xa214('0x28')](db['VoiceMailMessage'][_0xa214('0x29')],function(_0x58ccb3){return{'name':_0x58ccb3[_0xa214('0x2a')],'type':_0x58ccb3['type'][_0xa214('0x2b')]};});_0x8e1782[_0xa214('0x2c')]=_['differenceBy'](_[_0xa214('0x28')](_0x50019a,_0xa214('0x25')),[_0xa214('0x25')]);_0x8e1782[_0xa214('0x2d')]=_['keys'](_0x277e2e[_0xa214('0x2d')]);_0x8e1782[_0xa214('0x2e')]=_[_0xa214('0x2f')](_0x8e1782[_0xa214('0x2c')],_0x8e1782[_0xa214('0x2d')]);_0x3a5bb1[_0xa214('0x30')]=_['intersection'](_0x8e1782[_0xa214('0x2c')],qs[_0xa214('0x31')](_0x277e2e[_0xa214('0x2d')][_0xa214('0x31')]));_0x3a5bb1[_0xa214('0x30')]=_0x3a5bb1[_0xa214('0x30')][_0xa214('0x32')]?_0x3a5bb1['attributes']:_0x8e1782[_0xa214('0x2c')];if(!_0x277e2e['query']['hasOwnProperty'](_0xa214('0x33'))){_0x3a5bb1[_0xa214('0x1c')]=qs[_0xa214('0x1c')](_0x277e2e[_0xa214('0x2d')]['limit']);_0x3a5bb1[_0xa214('0x1a')]=qs[_0xa214('0x1a')](_0x277e2e[_0xa214('0x2d')][_0xa214('0x1a')]);}_0x3a5bb1['order']=qs[_0xa214('0x34')](_0x277e2e[_0xa214('0x2d')]['sort']);_0x3a5bb1[_0xa214('0x35')]=qs[_0xa214('0x2e')](_[_0xa214('0x36')](_0x277e2e[_0xa214('0x2d')],_0x8e1782['filters']),_0x50019a);if(_0x277e2e[_0xa214('0x2d')][_0xa214('0x37')]){_0x3a5bb1[_0xa214('0x35')]=_[_0xa214('0x38')](_0x3a5bb1[_0xa214('0x35')],{'$or':_[_0xa214('0x28')](_0x50019a,function(_0x48a136){if(_0x48a136['type']!==_0xa214('0x39')){var _0x2e5e55={};_0x2e5e55[_0x48a136[_0xa214('0x25')]]={'$like':'%'+_0x277e2e[_0xa214('0x2d')][_0xa214('0x37')]+'%'};return _0x2e5e55;}})});}_0x3a5bb1=_['merge']({},_0x3a5bb1,_0x277e2e[_0xa214('0x3a')]);var _0x4e743={'where':_0x3a5bb1['where']};return db['VoiceMailMessage']['count'](_0x4e743)[_0xa214('0x23')](function(_0x76e3d5){_0x21f745['count']=_0x76e3d5;if(_0x277e2e[_0xa214('0x2d')][_0xa214('0x3b')]){_0x3a5bb1[_0xa214('0x3c')]=[{'all':!![]}];}return db[_0xa214('0x3d')]['findAll'](_0x3a5bb1);})[_0xa214('0x23')](function(_0x2406db){_0x21f745[_0xa214('0x3e')]=_0x2406db;return _0x21f745;})[_0xa214('0x23')](respondWithFilteredResult(_0x298e4a,_0x3a5bb1))['catch'](handleError(_0x298e4a,null));};exports[_0xa214('0x3f')]=function(_0x4fb663,_0x3512d7){var _0x23d793={'raw':!![],'where':{'id':_0x4fb663[_0xa214('0x40')]['id']}},_0x581852={};_0x581852['model']=_[_0xa214('0x41')](db[_0xa214('0x3d')][_0xa214('0x29')]);_0x581852[_0xa214('0x2d')]=_['keys'](_0x4fb663['query']);_0x581852[_0xa214('0x2e')]=_['intersection'](_0x581852[_0xa214('0x2c')],_0x581852[_0xa214('0x2d')]);_0x23d793[_0xa214('0x30')]=_[_0xa214('0x2f')](_0x581852[_0xa214('0x2c')],qs['fields'](_0x4fb663['query'][_0xa214('0x31')]));_0x23d793[_0xa214('0x30')]=_0x23d793[_0xa214('0x30')][_0xa214('0x32')]?_0x23d793[_0xa214('0x30')]:_0x581852[_0xa214('0x2c')];if(_0x4fb663['query']['includeAll']){_0x23d793[_0xa214('0x3c')]=[{'all':!![]}];}_0x23d793=_['merge']({},_0x23d793,_0x4fb663[_0xa214('0x3a')]);return db[_0xa214('0x3d')][_0xa214('0x42')](_0x23d793)[_0xa214('0x23')](handleEntityNotFound(_0x3512d7,null))[_0xa214('0x23')](respondWithResult(_0x3512d7,null))[_0xa214('0x43')](handleError(_0x3512d7,null));};exports[_0xa214('0x44')]=function(_0x26ec83,_0x230611){return db['VoiceMailMessage'][_0xa214('0x44')](_0x26ec83[_0xa214('0x45')],{})['then'](respondWithResult(_0x230611,0xc9))[_0xa214('0x43')](handleError(_0x230611,null));};exports[_0xa214('0x46')]=function(_0x439655,_0x3b977b){if(_0x439655[_0xa214('0x45')]['id']){delete _0x439655[_0xa214('0x45')]['id'];}return db['VoiceMailMessage'][_0xa214('0x42')]({'where':{'id':_0x439655['params']['id']}})[_0xa214('0x23')](handleEntityNotFound(_0x3b977b,null))[_0xa214('0x23')](saveUpdates(_0x439655['body'],null))['then'](respondWithResult(_0x3b977b,null))['catch'](handleError(_0x3b977b,null));};exports[_0xa214('0x22')]=function(_0x550eff,_0x4d3b50){return db['VoiceMailMessage'][_0xa214('0x42')]({'where':{'id':_0x550eff['params']['id']}})[_0xa214('0x23')](handleEntityNotFound(_0x4d3b50,null))[_0xa214('0x23')](removeEntity(_0x4d3b50,null))['catch'](handleError(_0x4d3b50,null));};exports[_0xa214('0x47')]=function(_0x114feb,_0x125026,_0x353146){return db[_0xa214('0x3d')][_0xa214('0x42')]({'where':{'id':_0x114feb[_0xa214('0x40')]['id']},'attributes':['id',_0xa214('0x48'),'msg_id']})[_0xa214('0x23')](handleEntityNotFound(_0x125026,null))[_0xa214('0x23')](function(_0x56dc6d){if(_0x56dc6d){if(!_0x56dc6d[_0xa214('0x48')]){throw new db['Sequelize'][(_0xa214('0x49'))]('VoiceMailMessage\x20not\x20found');}var _0x4ad3ce={'Content-Type':_0xa214('0x4a'),'Content-Disposition':_0xa214('0x4b')};if(_0x56dc6d[_0xa214('0x4c')]){_0x4ad3ce[_0xa214('0x4d')]=_0xa214('0x4e')+_0x56dc6d[_0xa214('0x4c')]+_0xa214('0x4f');}_0x125026[_0xa214('0x1e')](_0x4ad3ce);return _0x125026['send'](new Buffer(_0x56dc6d[_0xa214('0x48')]));}})[_0xa214('0x43')](handleError(_0x125026,null));};
\ No newline at end of file
index fa17f42..15a1df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a82=['./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x39df1d,_0x48c2ed){var _0x1888ee=function(_0x2d6b98){while(--_0x2d6b98){_0x39df1d['push'](_0x39df1d['shift']());}};_0x1888ee(++_0x48c2ed);}(_0x6a82,0x123));var _0x26a8=function(_0x86c3f7,_0x1b8a74){_0x86c3f7=_0x86c3f7-0x0;var _0x2a506c=_0x6a82[_0x86c3f7];return _0x2a506c;};'use strict';var _=require(_0x26a8('0x0'));var util=require(_0x26a8('0x1'));var logger=require(_0x26a8('0x2'))(_0x26a8('0x3'));var moment=require(_0x26a8('0x4'));var BPromise=require('bluebird');var rp=require(_0x26a8('0x5'));var fs=require('fs');var path=require(_0x26a8('0x6'));var rimraf=require(_0x26a8('0x7'));var config=require(_0x26a8('0x8'));var attributes=require(_0x26a8('0x9'));module[_0x26a8('0xa')]=function(_0x31d00f,_0x40bfea){return _0x31d00f[_0x26a8('0xb')](_0x26a8('0xc'),attributes,{'tableName':_0x26a8('0xd'),'paranoid':![],'indexes':[{'name':_0x26a8('0xe'),'fields':[_0x26a8('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x3485=['lodash','util','../../config/logger','bluebird','path','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir'];(function(_0x36a22b,_0x3b4ea4){var _0x320311=function(_0x2092a8){while(--_0x2092a8){_0x36a22b['push'](_0x36a22b['shift']());}};_0x320311(++_0x3b4ea4);}(_0x3485,0x84));var _0x5348=function(_0x5a00ad,_0x246540){_0x5a00ad=_0x5a00ad-0x0;var _0x91941=_0x3485[_0x5a00ad];return _0x91941;};'use strict';var _=require(_0x5348('0x0'));var util=require(_0x5348('0x1'));var logger=require(_0x5348('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5348('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5348('0x4'));var rimraf=require('rimraf');var config=require(_0x5348('0x5'));var attributes=require(_0x5348('0x6'));module[_0x5348('0x7')]=function(_0x1a274a,_0x3b14b4){return _0x1a274a[_0x5348('0x8')](_0x5348('0x9'),attributes,{'tableName':_0x5348('0xa'),'paranoid':![],'indexes':[{'name':_0x5348('0xb'),'fields':[_0x5348('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 16e1c76..258a11a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb64a=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring'];(function(_0x2b7010,_0x4e23a0){var _0x1b37f6=function(_0xe96a7c){while(--_0xe96a7c){_0x2b7010['push'](_0x2b7010['shift']());}};_0x1b37f6(++_0x4e23a0);}(_0xb64a,0x7e));var _0xab64=function(_0x496d8e,_0x31447f){_0x496d8e=_0x496d8e-0x0;var _0x3aeef5=_0xb64a[_0x496d8e];return _0x3aeef5;};'use strict';var _=require(_0xab64('0x0'));var util=require(_0xab64('0x1'));var moment=require(_0xab64('0x2'));var BPromise=require('bluebird');var rs=require(_0xab64('0x3'));var fs=require('fs');var Redis=require(_0xab64('0x4'));var db=require(_0xab64('0x5'))['db'];var utils=require(_0xab64('0x6'));var logger=require(_0xab64('0x7'))(_0xab64('0x8'));var config=require(_0xab64('0x9'));var jayson=require(_0xab64('0xa'));var client=jayson[_0xab64('0xb')][_0xab64('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x474a85,_0x4912df,_0x4068da){return new BPromise(function(_0x15b432,_0x58888e){return client[_0xab64('0xd')](_0x474a85,_0x4068da)[_0xab64('0xe')](function(_0x4c0bef){logger['info'](_0xab64('0xf'),_0x4912df,_0xab64('0x10'));logger[_0xab64('0x11')](_0xab64('0x12'),_0x4912df,'request\x20sent',JSON[_0xab64('0x13')](_0x4c0bef));if(_0x4c0bef[_0xab64('0x14')]){if(_0x4c0bef[_0xab64('0x14')][_0xab64('0x15')]===0x1f4){logger[_0xab64('0x14')]('VoiceMailMessage,\x20%s,\x20%s',_0x4912df,_0x4c0bef[_0xab64('0x14')][_0xab64('0x16')]);return _0x58888e(_0x4c0bef['error'][_0xab64('0x16')]);}logger[_0xab64('0x14')](_0xab64('0xf'),_0x4912df,_0x4c0bef['error']['message']);return _0x15b432(_0x4c0bef['error']['message']);}else{logger[_0xab64('0x17')]('VoiceMailMessage,\x20%s,\x20%s',_0x4912df,_0xab64('0x10'));_0x15b432(_0x4c0bef[_0xab64('0x18')][_0xab64('0x16')]);}})[_0xab64('0x19')](function(_0x4108e8){logger['error'](_0xab64('0xf'),_0x4912df,_0x4108e8);_0x58888e(_0x4108e8);});});}
\ No newline at end of file
+var _0xf893=['VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x564557,_0x46873){var _0x5396ea=function(_0x2af53a){while(--_0x2af53a){_0x564557['push'](_0x564557['shift']());}};_0x5396ea(++_0x46873);}(_0xf893,0x7f));var _0x3f89=function(_0x342ee7,_0x36da80){_0x342ee7=_0x342ee7-0x0;var _0x2d2eb9=_0xf893[_0x342ee7];return _0x2d2eb9;};'use strict';var _=require(_0x3f89('0x0'));var util=require(_0x3f89('0x1'));var moment=require('moment');var BPromise=require(_0x3f89('0x2'));var rs=require(_0x3f89('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3f89('0x4'));var logger=require(_0x3f89('0x5'))(_0x3f89('0x6'));var config=require(_0x3f89('0x7'));var jayson=require(_0x3f89('0x8'));var client=jayson[_0x3f89('0x9')][_0x3f89('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x263bcd,_0x5c835c,_0x3361d9){return new BPromise(function(_0x30cd2f,_0x5896c2){return client[_0x3f89('0xb')](_0x263bcd,_0x3361d9)[_0x3f89('0xc')](function(_0x555fbe){logger[_0x3f89('0xd')](_0x3f89('0xe'),_0x5c835c,_0x3f89('0xf'));logger[_0x3f89('0x10')](_0x3f89('0x11'),_0x5c835c,_0x3f89('0xf'),JSON[_0x3f89('0x12')](_0x555fbe));if(_0x555fbe[_0x3f89('0x13')]){if(_0x555fbe['error'][_0x3f89('0x14')]===0x1f4){logger[_0x3f89('0x13')](_0x3f89('0xe'),_0x5c835c,_0x555fbe[_0x3f89('0x13')]['message']);return _0x5896c2(_0x555fbe[_0x3f89('0x13')]['message']);}logger[_0x3f89('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x5c835c,_0x555fbe['error'][_0x3f89('0x15')]);return _0x30cd2f(_0x555fbe[_0x3f89('0x13')][_0x3f89('0x15')]);}else{logger['info'](_0x3f89('0xe'),_0x5c835c,_0x3f89('0xf'));_0x30cd2f(_0x555fbe[_0x3f89('0x16')][_0x3f89('0x15')]);}})[_0x3f89('0x17')](function(_0x3d15f4){logger[_0x3f89('0x13')](_0x3f89('0xe'),_0x5c835c,_0x3d15f4);_0x5896c2(_0x3d15f4);});});}
\ No newline at end of file
index 691d0a9..76429d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dea=['destroy','/:id/sounds/:id2','removeSound','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/sounds','getSounds','post','put','/:id','update','delete'];(function(_0x4840c0,_0x3e2f10){var _0x55786f=function(_0x27a0c9){while(--_0x27a0c9){_0x4840c0['push'](_0x4840c0['shift']());}};_0x55786f(++_0x3e2f10);}(_0x9dea,0x1bc));var _0xa9de=function(_0x83a7c,_0x2e147d){_0x83a7c=_0x83a7c-0x0;var _0x22a50f=_0x9dea[_0x83a7c];return _0x22a50f;};'use strict';var multer=require(_0xa9de('0x0'));var util=require(_0xa9de('0x1'));var path=require(_0xa9de('0x2'));var timeout=require(_0xa9de('0x3'));var express=require('express');var router=express[_0xa9de('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa9de('0x5'));var config=require(_0xa9de('0x6'));var controller=require('./voiceMusicOnHold.controller');router[_0xa9de('0x7')]('/',auth[_0xa9de('0x8')](),controller[_0xa9de('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xa9de('0xa')]);router[_0xa9de('0x7')](_0xa9de('0xb'),auth[_0xa9de('0x8')](),controller[_0xa9de('0xc')]);router[_0xa9de('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xa9de('0xb'),auth['isAuthenticated'](),controller['addSound']);router[_0xa9de('0xe')](_0xa9de('0xf'),auth[_0xa9de('0x8')](),controller[_0xa9de('0x10')]);router[_0xa9de('0x11')](_0xa9de('0xf'),auth[_0xa9de('0x8')](),controller[_0xa9de('0x12')]);router['delete'](_0xa9de('0x13'),auth[_0xa9de('0x8')](),controller[_0xa9de('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xec92=['/:id/sounds/:id2','exports','util','connect-timeout','Router','../../components/interaction/service','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','show','/:id/sounds','post','create','addSound','update','delete','destroy'];(function(_0x592726,_0x5df878){var _0x23e9b0=function(_0x58d8bf){while(--_0x58d8bf){_0x592726['push'](_0x592726['shift']());}};_0x23e9b0(++_0x5df878);}(_0xec92,0xd3));var _0x2ec9=function(_0x448b84,_0x312c59){_0x448b84=_0x448b84-0x0;var _0x703421=_0xec92[_0x448b84];return _0x703421;};'use strict';var multer=require('multer');var util=require(_0x2ec9('0x0'));var path=require('path');var timeout=require(_0x2ec9('0x1'));var express=require('express');var router=express[_0x2ec9('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2ec9('0x3'));var config=require('../../config/environment');var controller=require(_0x2ec9('0x4'));router[_0x2ec9('0x5')]('/',auth[_0x2ec9('0x6')](),controller[_0x2ec9('0x7')]);router[_0x2ec9('0x5')](_0x2ec9('0x8'),auth[_0x2ec9('0x6')](),controller[_0x2ec9('0x9')]);router['get'](_0x2ec9('0xa'),auth[_0x2ec9('0x6')](),controller['getSounds']);router[_0x2ec9('0xb')]('/',auth[_0x2ec9('0x6')](),controller[_0x2ec9('0xc')]);router[_0x2ec9('0xb')](_0x2ec9('0xa'),auth[_0x2ec9('0x6')](),controller[_0x2ec9('0xd')]);router['put']('/:id',auth[_0x2ec9('0x6')](),controller[_0x2ec9('0xe')]);router[_0x2ec9('0xf')](_0x2ec9('0x8'),auth['isAuthenticated'](),controller[_0x2ec9('0x10')]);router[_0x2ec9('0xf')](_0x2ec9('0x11'),auth[_0x2ec9('0x6')](),controller['removeSound']);module[_0x2ec9('0x12')]=router;
\ No newline at end of file
index 988526e..cf30557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedb7=['alpha','TIMESTAMP','BOOLEAN','name','ENUM','custom','files','quietmp3nb','mp3','STRING'];(function(_0x214918,_0x1efca0){var _0x113c64=function(_0x13ab9e){while(--_0x13ab9e){_0x214918['push'](_0x214918['shift']());}};_0x113c64(++_0x1efca0);}(_0xedb7,0x7b));var _0x7edb=function(_0x30ce3a,_0xc2c6b3){_0x30ce3a=_0x30ce3a-0x0;var _0x6fe5f3=_0xedb7[_0x30ce3a];return _0x6fe5f3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x7edb('0x0')},'mode':{'type':Sequelize[_0x7edb('0x1')](_0x7edb('0x2'),_0x7edb('0x3'),'mp3nb',_0x7edb('0x4'),'quietmp3',_0x7edb('0x5')),'allowNull':!![],'defaultValue':_0x7edb('0x3')},'directory':{'type':Sequelize[_0x7edb('0x6')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x7edb('0x6')],'allowNull':!![]},'sort':{'type':Sequelize[_0x7edb('0x6')],'allowNull':!![],'defaultValue':_0x7edb('0x7')},'format':{'type':Sequelize[_0x7edb('0x6')],'allowNull':!![]},'stamp':{'type':_0x7edb('0x8')},'defaultEntry':{'type':Sequelize[_0x7edb('0x9')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9229=['TIMESTAMP','BOOLEAN','exports','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','mp3','STRING','alpha'];(function(_0x3edbbd,_0x5331ef){var _0x358679=function(_0x18b706){while(--_0x18b706){_0x3edbbd['push'](_0x3edbbd['shift']());}};_0x358679(++_0x5331ef);}(_0x9229,0x188));var _0x9922=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x9229[_0x47b58b];return _0x46bebe;};'use strict';var Sequelize=require('sequelize');module[_0x9922('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x9922('0x1')},'mode':{'type':Sequelize[_0x9922('0x2')](_0x9922('0x3'),_0x9922('0x4'),_0x9922('0x5'),_0x9922('0x6'),_0x9922('0x7'),_0x9922('0x8')),'allowNull':!![],'defaultValue':_0x9922('0x4')},'directory':{'type':Sequelize[_0x9922('0x9')],'allowNull':!![]},'application':{'type':Sequelize[_0x9922('0x9')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0x9922('0x9')],'allowNull':!![],'defaultValue':_0x9922('0xa')},'format':{'type':Sequelize[_0x9922('0x9')],'allowNull':!![]},'stamp':{'type':_0x9922('0xb')},'defaultEntry':{'type':Sequelize[_0x9922('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 07911c9..8fe4133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a38=['getSounds','Sound','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','save','destroy','then','get','UserProfileResource','error','stack','name','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','include','find','update','body','params','sequelize','transaction','mode','files','directory','server/files/moh','create','mkdirSync','0777','user','UserProfileSection','MusicOnHolds','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','unlinkSync','join','rmdirSync','ValidationError','addSound','findOne','save_name','createdAt','server/files/sounds/converted','format','basename','extname','root','%s.%s','converted_format','symlinkSync','message','removeSound','id2'];(function(_0x412c8f,_0x11ec94){var _0x27c005=function(_0x127059){while(--_0x127059){_0x412c8f['push'](_0x412c8f['shift']());}};_0x27c005(++_0x11ec94);}(_0x7a38,0x1ce));var _0x87a3=function(_0x2b13b2,_0x33f689){_0x2b13b2=_0x2b13b2-0x0;var _0x583447=_0x7a38[_0x2b13b2];return _0x583447;};'use strict';var emlformat=require(_0x87a3('0x0'));var rimraf=require(_0x87a3('0x1'));var zipdir=require(_0x87a3('0x2'));var jsonpatch=require(_0x87a3('0x3'));var rp=require('request-promise');var moment=require(_0x87a3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x87a3('0x5'));var util=require(_0x87a3('0x6'));var path=require(_0x87a3('0x7'));var sox=require(_0x87a3('0x8'));var csv=require(_0x87a3('0x9'));var ejs=require(_0x87a3('0xa'));var fs=require('fs');var fs_extra=require(_0x87a3('0xb'));var _=require(_0x87a3('0xc'));var squel=require(_0x87a3('0xd'));var crypto=require(_0x87a3('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x87a3('0xf'));var toCsv=require(_0x87a3('0x9'));var querystring=require(_0x87a3('0x10'));var Papa=require(_0x87a3('0x11'));var Redis=require(_0x87a3('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x87a3('0x13'));var as=require(_0x87a3('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x87a3('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x87a3('0x16'));var licenseUtil=require(_0x87a3('0x17'));var db=require(_0x87a3('0x18'))['db'];function respondWithStatusCode(_0x10cc1e,_0x8d34fb){_0x8d34fb=_0x8d34fb||0xcc;return function(_0x5bde6b){if(_0x5bde6b){return _0x10cc1e[_0x87a3('0x19')](_0x8d34fb);}return _0x10cc1e[_0x87a3('0x1a')](_0x8d34fb)[_0x87a3('0x1b')]();};}function respondWithResult(_0x174541,_0x7a6fa8){_0x7a6fa8=_0x7a6fa8||0xc8;return function(_0x2c94bc){if(_0x2c94bc){return _0x174541['status'](_0x7a6fa8)[_0x87a3('0x1c')](_0x2c94bc);}};}function respondWithFilteredResult(_0x49c2ba,_0x16e9c4){return function(_0x2ab647){if(_0x2ab647){var _0x5a2806=typeof _0x16e9c4['offset']===_0x87a3('0x1d')&&typeof _0x16e9c4['limit']===_0x87a3('0x1d');var _0x23312f=_0x2ab647[_0x87a3('0x1e')];var _0x5e04db=_0x5a2806?0x0:_0x16e9c4[_0x87a3('0x1f')];var _0x42caba=_0x5a2806?_0x2ab647[_0x87a3('0x1e')]:_0x16e9c4[_0x87a3('0x1f')]+_0x16e9c4['limit'];var _0x15ef95;if(_0x42caba>=_0x23312f){_0x42caba=_0x23312f;_0x15ef95=0xc8;}else{_0x15ef95=0xce;}_0x49c2ba[_0x87a3('0x1a')](_0x15ef95);return _0x49c2ba[_0x87a3('0x20')](_0x87a3('0x21'),_0x5e04db+'-'+_0x42caba+'/'+_0x23312f)[_0x87a3('0x1c')](_0x2ab647);}return null;};}function patchUpdates(_0x5c510f){return function(_0x1f4249){try{jsonpatch[_0x87a3('0x22')](_0x1f4249,_0x5c510f,!![]);}catch(_0x2de18e){return BPromise[_0x87a3('0x23')](_0x2de18e);}return _0x1f4249[_0x87a3('0x24')]();};}function saveUpdates(_0x3a0be3,_0x1b29ba){return function(_0x175300){if(_0x175300){return _0x175300['update'](_0x3a0be3)['then'](function(_0x5d8765){return _0x5d8765;});}return null;};}function removeEntity(_0x124da1,_0x3b386d){return function(_0x4dfec3){if(_0x4dfec3){return _0x4dfec3[_0x87a3('0x25')]()[_0x87a3('0x26')](function(){var _0x13cc05=_0x4dfec3[_0x87a3('0x27')]({'plain':!![]});var _0x25610f='MusicOnHolds';return db[_0x87a3('0x28')][_0x87a3('0x25')]({'where':{'type':_0x25610f,'resourceId':_0x13cc05['id']}})[_0x87a3('0x26')](function(){return _0x4dfec3;});})['then'](function(){_0x124da1[_0x87a3('0x1a')](0xcc)[_0x87a3('0x1b')]();});}};}function handleEntityNotFound(_0x45e68f,_0x4ad400){return function(_0x4d29a3){if(!_0x4d29a3){_0x45e68f['sendStatus'](0x194);}return _0x4d29a3;};}function handleError(_0x5710d5,_0x56d625){_0x56d625=_0x56d625||0x1f4;return function(_0x501550){logger[_0x87a3('0x29')](_0x501550[_0x87a3('0x2a')]);if(_0x501550[_0x87a3('0x2b')]){delete _0x501550[_0x87a3('0x2b')];}_0x5710d5['status'](_0x56d625)['send'](_0x501550);};}exports[_0x87a3('0x2c')]=function(_0x41cdbe,_0x4fbaac){var _0x32f6a1={},_0x1203da={},_0x2785c0={'count':0x0,'rows':[]};var _0x421ac4=_[_0x87a3('0x2d')](db[_0x87a3('0x2e')][_0x87a3('0x2f')],function(_0x2710d5){return{'name':_0x2710d5[_0x87a3('0x30')],'type':_0x2710d5[_0x87a3('0x31')][_0x87a3('0x32')]};});_0x1203da[_0x87a3('0x33')]=_['map'](_0x421ac4,_0x87a3('0x2b'));_0x1203da['query']=_[_0x87a3('0x34')](_0x41cdbe[_0x87a3('0x35')]);_0x1203da[_0x87a3('0x36')]=_['intersection'](_0x1203da[_0x87a3('0x33')],_0x1203da[_0x87a3('0x35')]);_0x32f6a1[_0x87a3('0x37')]=_[_0x87a3('0x38')](_0x1203da[_0x87a3('0x33')],qs[_0x87a3('0x39')](_0x41cdbe['query'][_0x87a3('0x39')]));_0x32f6a1[_0x87a3('0x37')]=_0x32f6a1[_0x87a3('0x37')][_0x87a3('0x3a')]?_0x32f6a1[_0x87a3('0x37')]:_0x1203da[_0x87a3('0x33')];if(!_0x41cdbe[_0x87a3('0x35')]['hasOwnProperty'](_0x87a3('0x3b'))){_0x32f6a1['limit']=qs[_0x87a3('0x3c')](_0x41cdbe[_0x87a3('0x35')][_0x87a3('0x3c')]);_0x32f6a1['offset']=qs[_0x87a3('0x1f')](_0x41cdbe[_0x87a3('0x35')]['offset']);}_0x32f6a1[_0x87a3('0x3d')]=qs[_0x87a3('0x3e')](_0x41cdbe['query'][_0x87a3('0x3e')]);delete _0x41cdbe[_0x87a3('0x35')][_0x87a3('0x3e')];_0x32f6a1[_0x87a3('0x3f')]=qs['filters'](_[_0x87a3('0x40')](_0x41cdbe[_0x87a3('0x35')],_0x1203da[_0x87a3('0x36')]),_0x421ac4);if(_0x41cdbe['query']['filter']){_0x32f6a1[_0x87a3('0x3f')]=_[_0x87a3('0x41')](_0x32f6a1[_0x87a3('0x3f')],{'$or':_[_0x87a3('0x2d')](_0x421ac4,function(_0x1df235){if(_0x1df235[_0x87a3('0x31')]!==_0x87a3('0x42')){var _0x45c9c3={};_0x45c9c3[_0x1df235['name']]={'$like':'%'+_0x41cdbe[_0x87a3('0x35')][_0x87a3('0x43')]+'%'};return _0x45c9c3;}})});}_0x32f6a1=_[_0x87a3('0x41')]({},_0x32f6a1,_0x41cdbe[_0x87a3('0x44')]);var _0x1fd349={'where':_0x32f6a1['where']};return db[_0x87a3('0x2e')]['count'](_0x1fd349)[_0x87a3('0x26')](function(_0x5bb52e){_0x2785c0[_0x87a3('0x1e')]=_0x5bb52e;if(_0x41cdbe[_0x87a3('0x35')][_0x87a3('0x45')]){_0x32f6a1['include']=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x87a3('0x46')](_0x32f6a1);})[_0x87a3('0x26')](function(_0xf38199){_0x2785c0[_0x87a3('0x47')]=_0xf38199;return _0x2785c0;})['then'](respondWithFilteredResult(_0x4fbaac,_0x32f6a1))[_0x87a3('0x48')](handleError(_0x4fbaac,null));};exports['show']=function(_0x310214,_0x488cf7){var _0x19709a={'raw':![],'where':{'id':_0x310214['params']['id']}},_0x33d18b={};_0x33d18b[_0x87a3('0x33')]=_[_0x87a3('0x34')](db[_0x87a3('0x2e')][_0x87a3('0x2f')]);_0x33d18b[_0x87a3('0x35')]=_[_0x87a3('0x34')](_0x310214['query']);_0x33d18b[_0x87a3('0x36')]=_['intersection'](_0x33d18b[_0x87a3('0x33')],_0x33d18b[_0x87a3('0x35')]);_0x19709a[_0x87a3('0x37')]=_[_0x87a3('0x38')](_0x33d18b['model'],qs['fields'](_0x310214[_0x87a3('0x35')][_0x87a3('0x39')]));_0x19709a[_0x87a3('0x37')]=_0x19709a['attributes']['length']?_0x19709a[_0x87a3('0x37')]:_0x33d18b['model'];if(_0x310214['query']['includeAll']){_0x19709a[_0x87a3('0x49')]=[{'all':!![]}];}_0x19709a=_['merge']({},_0x19709a,_0x310214['options']);return db[_0x87a3('0x2e')][_0x87a3('0x4a')](_0x19709a)['then'](handleEntityNotFound(_0x488cf7,null))[_0x87a3('0x26')](respondWithResult(_0x488cf7,null))[_0x87a3('0x48')](handleError(_0x488cf7,null));};exports[_0x87a3('0x4b')]=function(_0x50d5c5,_0x3291c9){if(_0x50d5c5[_0x87a3('0x4c')]['id']){delete _0x50d5c5[_0x87a3('0x4c')]['id'];}return db[_0x87a3('0x2e')][_0x87a3('0x4a')]({'where':{'id':_0x50d5c5[_0x87a3('0x4d')]['id']}})[_0x87a3('0x26')](handleEntityNotFound(_0x3291c9,null))[_0x87a3('0x26')](saveUpdates(_0x50d5c5[_0x87a3('0x4c')],null))[_0x87a3('0x26')](respondWithResult(_0x3291c9,null))[_0x87a3('0x48')](handleError(_0x3291c9,null));};exports['create']=function(_0x566dc1,_0x39e82a,_0x1d9346){return db[_0x87a3('0x4e')][_0x87a3('0x4f')](function(_0x361912){if(_0x566dc1[_0x87a3('0x4c')][_0x87a3('0x50')]===_0x87a3('0x51')){_0x566dc1[_0x87a3('0x4c')][_0x87a3('0x52')]=path['join'](config['root'],_0x87a3('0x53'),_0x566dc1[_0x87a3('0x4c')]['name']);}return db[_0x87a3('0x2e')][_0x87a3('0x54')](_0x566dc1['body'],{'transaction':_0x361912})[_0x87a3('0x26')](function(_0x5d36c8){if(_0x566dc1['body']['mode']===_0x87a3('0x51')){fs[_0x87a3('0x55')](_0x5d36c8['directory'],parseInt(_0x87a3('0x56'),0x8));}var _0x280271=_0x566dc1[_0x87a3('0x57')]['get']({'plain':!![]});if(!_0x280271)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x280271['role']===_0x87a3('0x57')){var _0x34ba8b=_0x5d36c8['get']({'plain':!![]});return db[_0x87a3('0x58')][_0x87a3('0x4a')]({'where':{'name':_0x87a3('0x59'),'userProfileId':_0x280271['userProfileId']},'raw':!![]})['then'](function(_0x38fcd4){if(_0x38fcd4&&_0x38fcd4[_0x87a3('0x5a')]===0x0){return db[_0x87a3('0x28')][_0x87a3('0x54')]({'name':_0x34ba8b['name'],'resourceId':_0x34ba8b['id'],'type':_0x38fcd4[_0x87a3('0x2b')],'sectionId':_0x38fcd4['id']},{})[_0x87a3('0x26')](function(){return _0x5d36c8;});}else{return _0x5d36c8;}})[_0x87a3('0x48')](function(_0x6d349){logger[_0x87a3('0x29')](_0x87a3('0x5b'),_0x6d349);});}return _0x5d36c8;});})['then'](respondWithResult(_0x39e82a,0xc9))['catch'](handleError(_0x39e82a,null));};exports[_0x87a3('0x25')]=function(_0x21d11b,_0x460f19,_0x4cc6ce){var _0x418b78;return db[_0x87a3('0x2e')]['find']({'where':{'id':_0x21d11b['params']['id']}})[_0x87a3('0x26')](function(_0x1ad7ce){if(_0x1ad7ce){return db[_0x87a3('0x4e')][_0x87a3('0x4f')](function(_0x5d2753){return _0x1ad7ce[_0x87a3('0x25')]({'transaction':_0x5d2753,'raw':!![]})[_0x87a3('0x26')](function(_0x2e38d8){if(_0x2e38d8[_0x87a3('0x52')]){fs[_0x87a3('0x5c')](_0x2e38d8['directory'])[_0x87a3('0x5d')](function(_0x19c409){fs[_0x87a3('0x5e')](path[_0x87a3('0x5f')](_0x2e38d8[_0x87a3('0x52')],_0x19c409));});fs[_0x87a3('0x60')](_0x2e38d8[_0x87a3('0x52')]);}return _0x2e38d8;});})[_0x87a3('0x48')](function(_0x139200){throw new db['Sequelize'][(_0x87a3('0x61'))](_0x139200['message']);});}})[_0x87a3('0x26')](handleEntityNotFound(_0x460f19,null))[_0x87a3('0x26')](removeEntity(_0x460f19,null))[_0x87a3('0x48')](handleError(_0x460f19,null));};exports[_0x87a3('0x62')]=function(_0x18a6dc,_0x2ec0a9,_0x4e4c6b){return db[_0x87a3('0x4e')][_0x87a3('0x4f')](function(_0x4fbc0d){var _0x418be5;return db['VoiceMusicOnHold'][_0x87a3('0x4a')]({'where':{'id':_0x18a6dc[_0x87a3('0x4d')]['id']}})['then'](function(_0x15c126){if(_0x15c126){_0x418be5=_0x15c126;return _0x15c126['addSound'](_0x18a6dc[_0x87a3('0x4c')]['id'],{'transaction':_0x4fbc0d});}})[_0x87a3('0x26')](function(_0x42d679){if(_0x42d679){return db['Sound'][_0x87a3('0x63')]({'where':{'id':_0x18a6dc['body']['id']},'attributes':['id',_0x87a3('0x2b'),_0x87a3('0x64'),'converted_format',_0x87a3('0x65')],'raw':!![]});}})[_0x87a3('0x26')](function(_0x2adb11){if(_0x2adb11){var _0x4e78bf=path[_0x87a3('0x5f')](config['root'],_0x87a3('0x66'),util[_0x87a3('0x67')]('%s.%s',path[_0x87a3('0x68')](_0x2adb11[_0x87a3('0x64')],path[_0x87a3('0x69')](_0x2adb11[_0x87a3('0x64')])),_0x2adb11['converted_format']));var _0xb492be=path[_0x87a3('0x5f')](config[_0x87a3('0x6a')],'server/files/moh',_0x418be5[_0x87a3('0x2b')],util[_0x87a3('0x67')](_0x87a3('0x6b'),_0x2adb11[_0x87a3('0x2b')],_0x2adb11[_0x87a3('0x6c')]));fs[_0x87a3('0x6d')](_0x4e78bf,_0xb492be);return _0x2adb11;}})[_0x87a3('0x48')](function(_0x1984f3){throw new db['Sequelize'][(_0x87a3('0x61'))](_0x1984f3[_0x87a3('0x6e')]);});})['then'](handleEntityNotFound(_0x2ec0a9,null))['then'](respondWithResult(_0x2ec0a9,0xc9))['catch'](handleError(_0x2ec0a9,null));};exports['removeSound']=function(_0x14bc03,_0x2224ee,_0x2613e7){return db[_0x87a3('0x4e')][_0x87a3('0x4f')](function(_0x4e5a73){var _0x3e41dc;return db[_0x87a3('0x2e')]['findOne']({'where':{'id':_0x14bc03['params']['id']}})['then'](handleEntityNotFound(_0x2224ee,null))[_0x87a3('0x26')](function(_0xd6a6a4){if(_0xd6a6a4){_0x3e41dc=_0xd6a6a4;return _0xd6a6a4[_0x87a3('0x6f')](_0x14bc03[_0x87a3('0x4d')][_0x87a3('0x70')]);}})[_0x87a3('0x26')](function(_0x418b71){if(_0x418b71){return db['Sound']['findOne']({'where':{'id':_0x14bc03['params']['id2']},'attributes':['id',_0x87a3('0x2b'),_0x87a3('0x64'),_0x87a3('0x6c'),'createdAt'],'raw':!![]});}})[_0x87a3('0x26')](function(_0xaa411c){if(_0xaa411c){fs[_0x87a3('0x5e')](path['join'](_0x3e41dc[_0x87a3('0x52')],util[_0x87a3('0x67')](_0x87a3('0x6b'),_0xaa411c[_0x87a3('0x2b')],_0xaa411c[_0x87a3('0x6c')])));return _0xaa411c;}})[_0x87a3('0x48')](function(_0x2443c2){throw new db['Sequelize'][(_0x87a3('0x61'))](_0x2443c2[_0x87a3('0x6e')]);});})[_0x87a3('0x26')](handleEntityNotFound(_0x2224ee,null))['then'](respondWithStatusCode(_0x2224ee,0xcc))['catch'](handleError(_0x2224ee,null));};exports[_0x87a3('0x71')]=function(_0x34a5f8,_0x29c047,_0x43a6f1){var _0x1440c4={};var _0x3109c9={};var _0x136474;var _0x1e956b;return db[_0x87a3('0x2e')]['findOne']({'where':{'id':_0x34a5f8[_0x87a3('0x4d')]['id']}})[_0x87a3('0x26')](handleEntityNotFound(_0x29c047,null))[_0x87a3('0x26')](function(_0x16c6be){if(_0x16c6be){_0x136474=_0x16c6be;_0x3109c9[_0x87a3('0x33')]=_[_0x87a3('0x34')](db[_0x87a3('0x72')][_0x87a3('0x2f')]);_0x3109c9[_0x87a3('0x35')]=_['keys'](_0x34a5f8[_0x87a3('0x35')]);_0x3109c9[_0x87a3('0x36')]=_[_0x87a3('0x38')](_0x3109c9[_0x87a3('0x33')],_0x3109c9[_0x87a3('0x35')]);_0x1440c4[_0x87a3('0x37')]=_[_0x87a3('0x38')](_0x3109c9[_0x87a3('0x33')],qs['fields'](_0x34a5f8[_0x87a3('0x35')]['fields']));_0x1440c4[_0x87a3('0x37')]=_0x1440c4['attributes'][_0x87a3('0x3a')]?_0x1440c4[_0x87a3('0x37')]:_0x3109c9[_0x87a3('0x33')];_0x1440c4[_0x87a3('0x3d')]=qs[_0x87a3('0x3e')](_0x34a5f8['query'][_0x87a3('0x3e')]);_0x1440c4[_0x87a3('0x3f')]=qs[_0x87a3('0x36')](_['pick'](_0x34a5f8[_0x87a3('0x35')],_0x3109c9[_0x87a3('0x36')]));if(_0x34a5f8[_0x87a3('0x35')][_0x87a3('0x43')]){_0x1440c4[_0x87a3('0x3f')]=_[_0x87a3('0x41')](_0x1440c4[_0x87a3('0x3f')],{'$or':_[_0x87a3('0x2d')](_0x1440c4[_0x87a3('0x37')],function(_0xa00bae){var _0x1d7247={};_0x1d7247[_0xa00bae]={'$like':'%'+_0x34a5f8[_0x87a3('0x35')][_0x87a3('0x43')]+'%'};return _0x1d7247;})});}_0x1440c4=_[_0x87a3('0x41')]({},_0x1440c4,_0x34a5f8[_0x87a3('0x44')]);return _0x136474['getSounds'](_0x1440c4);}})['then'](function(_0x49c622){if(_0x49c622){_0x1e956b=_0x49c622[_0x87a3('0x3a')];if(!_0x34a5f8[_0x87a3('0x35')]['hasOwnProperty']('nolimit')){_0x1440c4[_0x87a3('0x3c')]=qs[_0x87a3('0x3c')](_0x34a5f8[_0x87a3('0x35')][_0x87a3('0x3c')]);_0x1440c4['offset']=qs['offset'](_0x34a5f8[_0x87a3('0x35')][_0x87a3('0x1f')]);}return _0x136474['getSounds'](_0x1440c4);}})[_0x87a3('0x26')](function(_0x1cab50){if(_0x1cab50){return _0x1cab50?{'count':_0x1e956b,'rows':_0x1cab50}:null;}})[_0x87a3('0x26')](respondWithResult(_0x29c047,null))[_0x87a3('0x48')](handleError(_0x29c047,null));};
\ No newline at end of file
+var _0x0c8e=['Sequelize','ValidationError','message','Sound','findOne','save_name','converted_format','createdAt','format','%s.%s','symlinkSync','removeSound','id2','unlinkSync','getSounds','pick','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','update','then','get','MusicOnHolds','UserProfileResource','error','stack','name','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','catch','show','params','VoiceMusicOnHold','includeAll','find','body','create','sequelize','transaction','mode','files','join','root','server/files/moh','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','destroy','directory','forEach'];(function(_0x6cffd3,_0x1cf028){var _0x1de748=function(_0x21944f){while(--_0x21944f){_0x6cffd3['push'](_0x6cffd3['shift']());}};_0x1de748(++_0x1cf028);}(_0x0c8e,0x154));var _0xe0c8=function(_0x2cc4f4,_0x572631){_0x2cc4f4=_0x2cc4f4-0x0;var _0x4b2511=_0x0c8e[_0x2cc4f4];return _0x4b2511;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe0c8('0x0'));var zipdir=require(_0xe0c8('0x1'));var jsonpatch=require(_0xe0c8('0x2'));var rp=require(_0xe0c8('0x3'));var moment=require(_0xe0c8('0x4'));var BPromise=require(_0xe0c8('0x5'));var Mustache=require(_0xe0c8('0x6'));var util=require('util');var path=require(_0xe0c8('0x7'));var sox=require(_0xe0c8('0x8'));var csv=require(_0xe0c8('0x9'));var ejs=require(_0xe0c8('0xa'));var fs=require('fs');var fs_extra=require(_0xe0c8('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe0c8('0xc'));var jsforce=require(_0xe0c8('0xd'));var deskjs=require(_0xe0c8('0xe'));var toCsv=require(_0xe0c8('0x9'));var querystring=require('querystring');var Papa=require(_0xe0c8('0xf'));var Redis=require(_0xe0c8('0x10'));var authService=require(_0xe0c8('0x11'));var qs=require(_0xe0c8('0x12'));var as=require(_0xe0c8('0x13'));var hardwareService=require(_0xe0c8('0x14'));var logger=require(_0xe0c8('0x15'))(_0xe0c8('0x16'));var utils=require(_0xe0c8('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xe0c8('0x18'));var db=require(_0xe0c8('0x19'))['db'];function respondWithStatusCode(_0x593602,_0x3f50d8){_0x3f50d8=_0x3f50d8||0xcc;return function(_0x1c7105){if(_0x1c7105){return _0x593602[_0xe0c8('0x1a')](_0x3f50d8);}return _0x593602[_0xe0c8('0x1b')](_0x3f50d8)[_0xe0c8('0x1c')]();};}function respondWithResult(_0xde00e7,_0x26ca96){_0x26ca96=_0x26ca96||0xc8;return function(_0x23d9c8){if(_0x23d9c8){return _0xde00e7[_0xe0c8('0x1b')](_0x26ca96)[_0xe0c8('0x1d')](_0x23d9c8);}};}function respondWithFilteredResult(_0x426826,_0x155991){return function(_0x80e9bb){if(_0x80e9bb){var _0x1fe97e=typeof _0x155991[_0xe0c8('0x1e')]===_0xe0c8('0x1f')&&typeof _0x155991[_0xe0c8('0x20')]===_0xe0c8('0x1f');var _0x3ed696=_0x80e9bb[_0xe0c8('0x21')];var _0x28ba1c=_0x1fe97e?0x0:_0x155991[_0xe0c8('0x1e')];var _0x1a361c=_0x1fe97e?_0x80e9bb[_0xe0c8('0x21')]:_0x155991[_0xe0c8('0x1e')]+_0x155991['limit'];var _0x5e2aac;if(_0x1a361c>=_0x3ed696){_0x1a361c=_0x3ed696;_0x5e2aac=0xc8;}else{_0x5e2aac=0xce;}_0x426826['status'](_0x5e2aac);return _0x426826['set'](_0xe0c8('0x22'),_0x28ba1c+'-'+_0x1a361c+'/'+_0x3ed696)[_0xe0c8('0x1d')](_0x80e9bb);}return null;};}function patchUpdates(_0x5b89fa){return function(_0x2bf133){try{jsonpatch['apply'](_0x2bf133,_0x5b89fa,!![]);}catch(_0x237315){return BPromise['reject'](_0x237315);}return _0x2bf133[_0xe0c8('0x23')]();};}function saveUpdates(_0x1d9fb7,_0xc2ae9a){return function(_0x149669){if(_0x149669){return _0x149669[_0xe0c8('0x24')](_0x1d9fb7)[_0xe0c8('0x25')](function(_0x24770b){return _0x24770b;});}return null;};}function removeEntity(_0x45c93d,_0x1bbeea){return function(_0x56db7d){if(_0x56db7d){return _0x56db7d['destroy']()[_0xe0c8('0x25')](function(){var _0xe3ee0a=_0x56db7d[_0xe0c8('0x26')]({'plain':!![]});var _0x6e47d2=_0xe0c8('0x27');return db[_0xe0c8('0x28')]['destroy']({'where':{'type':_0x6e47d2,'resourceId':_0xe3ee0a['id']}})['then'](function(){return _0x56db7d;});})['then'](function(){_0x45c93d[_0xe0c8('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27aa95,_0x52e135){return function(_0x3aef9e){if(!_0x3aef9e){_0x27aa95['sendStatus'](0x194);}return _0x3aef9e;};}function handleError(_0x3d655f,_0x58d515){_0x58d515=_0x58d515||0x1f4;return function(_0x14eeed){logger[_0xe0c8('0x29')](_0x14eeed[_0xe0c8('0x2a')]);if(_0x14eeed['name']){delete _0x14eeed[_0xe0c8('0x2b')];}_0x3d655f[_0xe0c8('0x1b')](_0x58d515)['send'](_0x14eeed);};}exports['index']=function(_0x39e7a5,_0x954ffc){var _0x2962d8={},_0x681b99={},_0xf9cf3f={'count':0x0,'rows':[]};var _0x303456=_[_0xe0c8('0x2c')](db['VoiceMusicOnHold'][_0xe0c8('0x2d')],function(_0x16dc02){return{'name':_0x16dc02[_0xe0c8('0x2e')],'type':_0x16dc02['type'][_0xe0c8('0x2f')]};});_0x681b99[_0xe0c8('0x30')]=_[_0xe0c8('0x2c')](_0x303456,_0xe0c8('0x2b'));_0x681b99[_0xe0c8('0x31')]=_[_0xe0c8('0x32')](_0x39e7a5[_0xe0c8('0x31')]);_0x681b99[_0xe0c8('0x33')]=_[_0xe0c8('0x34')](_0x681b99[_0xe0c8('0x30')],_0x681b99[_0xe0c8('0x31')]);_0x2962d8[_0xe0c8('0x35')]=_[_0xe0c8('0x34')](_0x681b99[_0xe0c8('0x30')],qs[_0xe0c8('0x36')](_0x39e7a5[_0xe0c8('0x31')][_0xe0c8('0x36')]));_0x2962d8[_0xe0c8('0x35')]=_0x2962d8['attributes'][_0xe0c8('0x37')]?_0x2962d8[_0xe0c8('0x35')]:_0x681b99['model'];if(!_0x39e7a5[_0xe0c8('0x31')][_0xe0c8('0x38')](_0xe0c8('0x39'))){_0x2962d8[_0xe0c8('0x20')]=qs[_0xe0c8('0x20')](_0x39e7a5[_0xe0c8('0x31')][_0xe0c8('0x20')]);_0x2962d8[_0xe0c8('0x1e')]=qs['offset'](_0x39e7a5[_0xe0c8('0x31')][_0xe0c8('0x1e')]);}_0x2962d8[_0xe0c8('0x3a')]=qs['sort'](_0x39e7a5[_0xe0c8('0x31')][_0xe0c8('0x3b')]);delete _0x39e7a5['query'][_0xe0c8('0x3b')];_0x2962d8[_0xe0c8('0x3c')]=qs[_0xe0c8('0x33')](_['pick'](_0x39e7a5[_0xe0c8('0x31')],_0x681b99[_0xe0c8('0x33')]),_0x303456);if(_0x39e7a5['query']['filter']){_0x2962d8[_0xe0c8('0x3c')]=_[_0xe0c8('0x3d')](_0x2962d8['where'],{'$or':_[_0xe0c8('0x2c')](_0x303456,function(_0x3b1008){if(_0x3b1008['type']!==_0xe0c8('0x3e')){var _0xe467f9={};_0xe467f9[_0x3b1008[_0xe0c8('0x2b')]]={'$like':'%'+_0x39e7a5[_0xe0c8('0x31')][_0xe0c8('0x3f')]+'%'};return _0xe467f9;}})});}_0x2962d8=_[_0xe0c8('0x3d')]({},_0x2962d8,_0x39e7a5[_0xe0c8('0x40')]);var _0x502f9d={'where':_0x2962d8[_0xe0c8('0x3c')]};return db['VoiceMusicOnHold'][_0xe0c8('0x21')](_0x502f9d)[_0xe0c8('0x25')](function(_0x2e232d){_0xf9cf3f[_0xe0c8('0x21')]=_0x2e232d;if(_0x39e7a5[_0xe0c8('0x31')]['includeAll']){_0x2962d8[_0xe0c8('0x41')]=[{'all':!![]}];}return db['VoiceMusicOnHold']['findAll'](_0x2962d8);})[_0xe0c8('0x25')](function(_0x5ada6a){_0xf9cf3f['rows']=_0x5ada6a;return _0xf9cf3f;})[_0xe0c8('0x25')](respondWithFilteredResult(_0x954ffc,_0x2962d8))[_0xe0c8('0x42')](handleError(_0x954ffc,null));};exports[_0xe0c8('0x43')]=function(_0x82f885,_0x390959){var _0x4eee75={'raw':![],'where':{'id':_0x82f885[_0xe0c8('0x44')]['id']}},_0x460f07={};_0x460f07['model']=_[_0xe0c8('0x32')](db[_0xe0c8('0x45')][_0xe0c8('0x2d')]);_0x460f07[_0xe0c8('0x31')]=_['keys'](_0x82f885[_0xe0c8('0x31')]);_0x460f07[_0xe0c8('0x33')]=_[_0xe0c8('0x34')](_0x460f07[_0xe0c8('0x30')],_0x460f07['query']);_0x4eee75['attributes']=_[_0xe0c8('0x34')](_0x460f07['model'],qs[_0xe0c8('0x36')](_0x82f885['query'][_0xe0c8('0x36')]));_0x4eee75[_0xe0c8('0x35')]=_0x4eee75[_0xe0c8('0x35')][_0xe0c8('0x37')]?_0x4eee75['attributes']:_0x460f07[_0xe0c8('0x30')];if(_0x82f885[_0xe0c8('0x31')][_0xe0c8('0x46')]){_0x4eee75[_0xe0c8('0x41')]=[{'all':!![]}];}_0x4eee75=_[_0xe0c8('0x3d')]({},_0x4eee75,_0x82f885['options']);return db[_0xe0c8('0x45')][_0xe0c8('0x47')](_0x4eee75)['then'](handleEntityNotFound(_0x390959,null))[_0xe0c8('0x25')](respondWithResult(_0x390959,null))[_0xe0c8('0x42')](handleError(_0x390959,null));};exports[_0xe0c8('0x24')]=function(_0x2158d7,_0x269070){if(_0x2158d7[_0xe0c8('0x48')]['id']){delete _0x2158d7[_0xe0c8('0x48')]['id'];}return db[_0xe0c8('0x45')][_0xe0c8('0x47')]({'where':{'id':_0x2158d7[_0xe0c8('0x44')]['id']}})[_0xe0c8('0x25')](handleEntityNotFound(_0x269070,null))['then'](saveUpdates(_0x2158d7['body'],null))['then'](respondWithResult(_0x269070,null))[_0xe0c8('0x42')](handleError(_0x269070,null));};exports[_0xe0c8('0x49')]=function(_0x3fc97a,_0x49409a,_0x4d9a6a){return db[_0xe0c8('0x4a')][_0xe0c8('0x4b')](function(_0x2459c6){if(_0x3fc97a[_0xe0c8('0x48')][_0xe0c8('0x4c')]===_0xe0c8('0x4d')){_0x3fc97a[_0xe0c8('0x48')]['directory']=path[_0xe0c8('0x4e')](config[_0xe0c8('0x4f')],_0xe0c8('0x50'),_0x3fc97a[_0xe0c8('0x48')][_0xe0c8('0x2b')]);}return db[_0xe0c8('0x45')][_0xe0c8('0x49')](_0x3fc97a[_0xe0c8('0x48')],{'transaction':_0x2459c6})['then'](function(_0x3a196e){if(_0x3fc97a[_0xe0c8('0x48')][_0xe0c8('0x4c')]===_0xe0c8('0x4d')){fs[_0xe0c8('0x51')](_0x3a196e['directory'],parseInt(_0xe0c8('0x52'),0x8));}var _0x4805d9=_0x3fc97a[_0xe0c8('0x53')][_0xe0c8('0x26')]({'plain':!![]});if(!_0x4805d9)throw new Error(_0xe0c8('0x54'));if(_0x4805d9[_0xe0c8('0x55')]===_0xe0c8('0x53')){var _0x47e317=_0x3a196e[_0xe0c8('0x26')]({'plain':!![]});return db[_0xe0c8('0x56')][_0xe0c8('0x47')]({'where':{'name':'MusicOnHolds','userProfileId':_0x4805d9[_0xe0c8('0x57')]},'raw':!![]})['then'](function(_0x45769a){if(_0x45769a&&_0x45769a[_0xe0c8('0x58')]===0x0){return db[_0xe0c8('0x28')][_0xe0c8('0x49')]({'name':_0x47e317['name'],'resourceId':_0x47e317['id'],'type':_0x45769a[_0xe0c8('0x2b')],'sectionId':_0x45769a['id']},{})[_0xe0c8('0x25')](function(){return _0x3a196e;});}else{return _0x3a196e;}})[_0xe0c8('0x42')](function(_0x493666){logger[_0xe0c8('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x493666);});}return _0x3a196e;});})[_0xe0c8('0x25')](respondWithResult(_0x49409a,0xc9))['catch'](handleError(_0x49409a,null));};exports['destroy']=function(_0x5c4435,_0x16b5e3,_0xf954fa){var _0x3e6235;return db[_0xe0c8('0x45')][_0xe0c8('0x47')]({'where':{'id':_0x5c4435[_0xe0c8('0x44')]['id']}})[_0xe0c8('0x25')](function(_0xe0576b){if(_0xe0576b){return db[_0xe0c8('0x4a')][_0xe0c8('0x4b')](function(_0x2df498){return _0xe0576b[_0xe0c8('0x59')]({'transaction':_0x2df498,'raw':!![]})['then'](function(_0x8cebf9){if(_0x8cebf9[_0xe0c8('0x5a')]){fs['readdirSync'](_0x8cebf9[_0xe0c8('0x5a')])[_0xe0c8('0x5b')](function(_0x5e8c91){fs['unlinkSync'](path[_0xe0c8('0x4e')](_0x8cebf9[_0xe0c8('0x5a')],_0x5e8c91));});fs['rmdirSync'](_0x8cebf9[_0xe0c8('0x5a')]);}return _0x8cebf9;});})[_0xe0c8('0x42')](function(_0x41954c){throw new db[(_0xe0c8('0x5c'))][(_0xe0c8('0x5d'))](_0x41954c[_0xe0c8('0x5e')]);});}})[_0xe0c8('0x25')](handleEntityNotFound(_0x16b5e3,null))[_0xe0c8('0x25')](removeEntity(_0x16b5e3,null))['catch'](handleError(_0x16b5e3,null));};exports['addSound']=function(_0x571476,_0x43bd98,_0x463cbd){return db['sequelize'][_0xe0c8('0x4b')](function(_0x379cb3){var _0x4d23c6;return db[_0xe0c8('0x45')][_0xe0c8('0x47')]({'where':{'id':_0x571476['params']['id']}})[_0xe0c8('0x25')](function(_0x3a69e1){if(_0x3a69e1){_0x4d23c6=_0x3a69e1;return _0x3a69e1['addSound'](_0x571476[_0xe0c8('0x48')]['id'],{'transaction':_0x379cb3});}})[_0xe0c8('0x25')](function(_0x33f7a9){if(_0x33f7a9){return db[_0xe0c8('0x5f')][_0xe0c8('0x60')]({'where':{'id':_0x571476['body']['id']},'attributes':['id',_0xe0c8('0x2b'),_0xe0c8('0x61'),_0xe0c8('0x62'),_0xe0c8('0x63')],'raw':!![]});}})[_0xe0c8('0x25')](function(_0x24e6fc){if(_0x24e6fc){var _0x2c8d37=path[_0xe0c8('0x4e')](config[_0xe0c8('0x4f')],'server/files/sounds/converted',util[_0xe0c8('0x64')](_0xe0c8('0x65'),path['basename'](_0x24e6fc[_0xe0c8('0x61')],path['extname'](_0x24e6fc[_0xe0c8('0x61')])),_0x24e6fc['converted_format']));var _0x1a5f03=path[_0xe0c8('0x4e')](config[_0xe0c8('0x4f')],_0xe0c8('0x50'),_0x4d23c6[_0xe0c8('0x2b')],util[_0xe0c8('0x64')](_0xe0c8('0x65'),_0x24e6fc['name'],_0x24e6fc[_0xe0c8('0x62')]));fs[_0xe0c8('0x66')](_0x2c8d37,_0x1a5f03);return _0x24e6fc;}})[_0xe0c8('0x42')](function(_0xe864a8){throw new db[(_0xe0c8('0x5c'))]['ValidationError'](_0xe864a8[_0xe0c8('0x5e')]);});})[_0xe0c8('0x25')](handleEntityNotFound(_0x43bd98,null))[_0xe0c8('0x25')](respondWithResult(_0x43bd98,0xc9))[_0xe0c8('0x42')](handleError(_0x43bd98,null));};exports[_0xe0c8('0x67')]=function(_0x2632b7,_0x1bc1ab,_0x1ad5b6){return db[_0xe0c8('0x4a')]['transaction'](function(_0x12e933){var _0xc342fc;return db[_0xe0c8('0x45')]['findOne']({'where':{'id':_0x2632b7['params']['id']}})['then'](handleEntityNotFound(_0x1bc1ab,null))[_0xe0c8('0x25')](function(_0x4dec30){if(_0x4dec30){_0xc342fc=_0x4dec30;return _0x4dec30[_0xe0c8('0x67')](_0x2632b7[_0xe0c8('0x44')][_0xe0c8('0x68')]);}})[_0xe0c8('0x25')](function(_0x9c052e){if(_0x9c052e){return db[_0xe0c8('0x5f')][_0xe0c8('0x60')]({'where':{'id':_0x2632b7[_0xe0c8('0x44')]['id2']},'attributes':['id',_0xe0c8('0x2b'),_0xe0c8('0x61'),_0xe0c8('0x62'),_0xe0c8('0x63')],'raw':!![]});}})[_0xe0c8('0x25')](function(_0x229998){if(_0x229998){fs[_0xe0c8('0x69')](path['join'](_0xc342fc[_0xe0c8('0x5a')],util[_0xe0c8('0x64')]('%s.%s',_0x229998[_0xe0c8('0x2b')],_0x229998[_0xe0c8('0x62')])));return _0x229998;}})[_0xe0c8('0x42')](function(_0x747598){throw new db['Sequelize']['ValidationError'](_0x747598['message']);});})[_0xe0c8('0x25')](handleEntityNotFound(_0x1bc1ab,null))['then'](respondWithStatusCode(_0x1bc1ab,0xcc))[_0xe0c8('0x42')](handleError(_0x1bc1ab,null));};exports[_0xe0c8('0x6a')]=function(_0x56ca04,_0x4bc3ae,_0x1149cd){var _0x4224e3={};var _0x45eda8={};var _0x597ad0;var _0x5ab920;return db[_0xe0c8('0x45')][_0xe0c8('0x60')]({'where':{'id':_0x56ca04[_0xe0c8('0x44')]['id']}})[_0xe0c8('0x25')](handleEntityNotFound(_0x4bc3ae,null))[_0xe0c8('0x25')](function(_0x39fba3){if(_0x39fba3){_0x597ad0=_0x39fba3;_0x45eda8[_0xe0c8('0x30')]=_[_0xe0c8('0x32')](db[_0xe0c8('0x5f')][_0xe0c8('0x2d')]);_0x45eda8[_0xe0c8('0x31')]=_[_0xe0c8('0x32')](_0x56ca04[_0xe0c8('0x31')]);_0x45eda8[_0xe0c8('0x33')]=_[_0xe0c8('0x34')](_0x45eda8[_0xe0c8('0x30')],_0x45eda8['query']);_0x4224e3[_0xe0c8('0x35')]=_[_0xe0c8('0x34')](_0x45eda8[_0xe0c8('0x30')],qs[_0xe0c8('0x36')](_0x56ca04[_0xe0c8('0x31')]['fields']));_0x4224e3[_0xe0c8('0x35')]=_0x4224e3[_0xe0c8('0x35')]['length']?_0x4224e3[_0xe0c8('0x35')]:_0x45eda8[_0xe0c8('0x30')];_0x4224e3[_0xe0c8('0x3a')]=qs[_0xe0c8('0x3b')](_0x56ca04['query'][_0xe0c8('0x3b')]);_0x4224e3[_0xe0c8('0x3c')]=qs[_0xe0c8('0x33')](_[_0xe0c8('0x6b')](_0x56ca04[_0xe0c8('0x31')],_0x45eda8[_0xe0c8('0x33')]));if(_0x56ca04['query']['filter']){_0x4224e3[_0xe0c8('0x3c')]=_[_0xe0c8('0x3d')](_0x4224e3['where'],{'$or':_[_0xe0c8('0x2c')](_0x4224e3[_0xe0c8('0x35')],function(_0x9835c2){var _0x3f2dca={};_0x3f2dca[_0x9835c2]={'$like':'%'+_0x56ca04[_0xe0c8('0x31')][_0xe0c8('0x3f')]+'%'};return _0x3f2dca;})});}_0x4224e3=_[_0xe0c8('0x3d')]({},_0x4224e3,_0x56ca04[_0xe0c8('0x40')]);return _0x597ad0[_0xe0c8('0x6a')](_0x4224e3);}})['then'](function(_0x40d23f){if(_0x40d23f){_0x5ab920=_0x40d23f[_0xe0c8('0x37')];if(!_0x56ca04[_0xe0c8('0x31')][_0xe0c8('0x38')](_0xe0c8('0x39'))){_0x4224e3[_0xe0c8('0x20')]=qs[_0xe0c8('0x20')](_0x56ca04[_0xe0c8('0x31')][_0xe0c8('0x20')]);_0x4224e3[_0xe0c8('0x1e')]=qs['offset'](_0x56ca04[_0xe0c8('0x31')][_0xe0c8('0x1e')]);}return _0x597ad0[_0xe0c8('0x6a')](_0x4224e3);}})[_0xe0c8('0x25')](function(_0x171609){if(_0x171609){return _0x171609?{'count':_0x5ab920,'rows':_0x171609}:null;}})['then'](respondWithResult(_0x4bc3ae,null))['catch'](handleError(_0x4bc3ae,null));};
\ No newline at end of file
index e6ee96a..f648e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0443=['rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x3eb87e,_0x5577e3){var _0x1cd153=function(_0x3ff52d){while(--_0x3ff52d){_0x3eb87e['push'](_0x3eb87e['shift']());}};_0x1cd153(++_0x5577e3);}(_0x0443,0x186));var _0x3044=function(_0x25f7c8,_0x18a630){_0x25f7c8=_0x25f7c8-0x0;var _0x538435=_0x0443[_0x25f7c8];return _0x538435;};'use strict';var _=require(_0x3044('0x0'));var util=require('util');var logger=require(_0x3044('0x1'))('api');var moment=require(_0x3044('0x2'));var BPromise=require(_0x3044('0x3'));var rp=require(_0x3044('0x4'));var fs=require('fs');var path=require(_0x3044('0x5'));var rimraf=require(_0x3044('0x6'));var config=require(_0x3044('0x7'));var attributes=require(_0x3044('0x8'));module[_0x3044('0x9')]=function(_0x94cd9b,_0x26b7b7){return _0x94cd9b[_0x3044('0xa')](_0x3044('0xb'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x449f=['path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','util','../../config/logger','moment','bluebird'];(function(_0x436756,_0x22740e){var _0x7fed7=function(_0x237778){while(--_0x237778){_0x436756['push'](_0x436756['shift']());}};_0x7fed7(++_0x22740e);}(_0x449f,0x8c));var _0xf449=function(_0x3ed054,_0x4d4f16){_0x3ed054=_0x3ed054-0x0;var _0x16dd95=_0x449f[_0x3ed054];return _0x16dd95;};'use strict';var _=require('lodash');var util=require(_0xf449('0x0'));var logger=require(_0xf449('0x1'))('api');var moment=require(_0xf449('0x2'));var BPromise=require(_0xf449('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf449('0x4'));var rimraf=require(_0xf449('0x5'));var config=require(_0xf449('0x6'));var attributes=require(_0xf449('0x7'));module[_0xf449('0x8')]=function(_0x246988,_0x1b8edf){return _0x246988[_0xf449('0x9')](_0xf449('0xa'),attributes,{'tableName':_0xf449('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cbce59e..3bb5e22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x56630a,_0x3bb1bb){var _0x49bcae=function(_0xf44962){while(--_0xf44962){_0x56630a['push'](_0x56630a['shift']());}};_0x49bcae(++_0x3bb1bb);}(_0xe706,0xa3));var _0x6e70=function(_0x4a9d73,_0x404b5f){_0x4a9d73=_0x4a9d73-0x0;var _0x2544c1=_0xe706[_0x4a9d73];return _0x2544c1;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
+var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x1135f7,_0x25090b){var _0x25511f=function(_0x261265){while(--_0x261265){_0x1135f7['push'](_0x1135f7['shift']());}};_0x25511f(++_0x25090b);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 2e553a8..b8609b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94b1=['get','/:id','show','/:id/users','getAgents','/:id/teams','getTeams','post','create','addAgents','addTeams','put','update','delete','destroy','removeAgents','removeTeams','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','isAuthenticated','index','/describe','describe'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x94b1,0x102));var _0x194b=function(_0x2e093c,_0x283615){_0x2e093c=_0x2e093c-0x0;var _0x2ff759=_0x94b1[_0x2e093c];return _0x2ff759;};'use strict';var multer=require('multer');var util=require(_0x194b('0x0'));var path=require('path');var timeout=require(_0x194b('0x1'));var express=require(_0x194b('0x2'));var router=express[_0x194b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x194b('0x4'));var interaction=require(_0x194b('0x5'));var config=require(_0x194b('0x6'));var controller=require(_0x194b('0x7'));router['get']('/',auth[_0x194b('0x8')](),controller[_0x194b('0x9')]);router['get'](_0x194b('0xa'),auth[_0x194b('0x8')](),controller[_0x194b('0xb')]);router[_0x194b('0xc')](_0x194b('0xd'),auth[_0x194b('0x8')](),controller[_0x194b('0xe')]);router[_0x194b('0xc')](_0x194b('0xf'),auth['isAuthenticated'](),controller[_0x194b('0x10')]);router[_0x194b('0xc')](_0x194b('0x11'),auth['isAuthenticated'](),controller[_0x194b('0x12')]);router[_0x194b('0x13')]('/',auth[_0x194b('0x8')](),controller[_0x194b('0x14')]);router[_0x194b('0x13')](_0x194b('0xf'),auth[_0x194b('0x8')](),controller[_0x194b('0x15')]);router[_0x194b('0x13')](_0x194b('0x11'),auth[_0x194b('0x8')](),controller[_0x194b('0x16')]);router[_0x194b('0x17')](_0x194b('0xd'),auth[_0x194b('0x8')](),controller[_0x194b('0x18')]);router[_0x194b('0x19')](_0x194b('0xd'),auth[_0x194b('0x8')](),controller[_0x194b('0x1a')]);router[_0x194b('0x19')]('/:id/users',auth['isAuthenticated'](),controller[_0x194b('0x1b')]);router[_0x194b('0x19')](_0x194b('0x11'),auth[_0x194b('0x8')](),controller[_0x194b('0x1c')]);module[_0x194b('0x1d')]=router;
\ No newline at end of file
+var _0xea89=['post','addTeams','put','delete','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','./voicePrefix.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/users','getAgents','/:id/teams','getTeams'];(function(_0x2fe8ab,_0x5e8e7b){var _0x3d5a6d=function(_0xf440c5){while(--_0xf440c5){_0x2fe8ab['push'](_0x2fe8ab['shift']());}};_0x3d5a6d(++_0x5e8e7b);}(_0xea89,0x1e2));var _0x9ea8=function(_0x30504a,_0x5c1ddb){_0x30504a=_0x30504a-0x0;var _0x2c5c4b=_0xea89[_0x30504a];return _0x2c5c4b;};'use strict';var multer=require(_0x9ea8('0x0'));var util=require(_0x9ea8('0x1'));var path=require(_0x9ea8('0x2'));var timeout=require(_0x9ea8('0x3'));var express=require(_0x9ea8('0x4'));var router=express['Router']();var fs_extra=require(_0x9ea8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9ea8('0x6'));var config=require('../../config/environment');var controller=require(_0x9ea8('0x7'));router[_0x9ea8('0x8')]('/',auth[_0x9ea8('0x9')](),controller[_0x9ea8('0xa')]);router[_0x9ea8('0x8')](_0x9ea8('0xb'),auth[_0x9ea8('0x9')](),controller['describe']);router[_0x9ea8('0x8')](_0x9ea8('0xc'),auth['isAuthenticated'](),controller[_0x9ea8('0xd')]);router[_0x9ea8('0x8')](_0x9ea8('0xe'),auth['isAuthenticated'](),controller[_0x9ea8('0xf')]);router[_0x9ea8('0x8')](_0x9ea8('0x10'),auth[_0x9ea8('0x9')](),controller[_0x9ea8('0x11')]);router[_0x9ea8('0x12')]('/',auth[_0x9ea8('0x9')](),controller['create']);router[_0x9ea8('0x12')](_0x9ea8('0xe'),auth[_0x9ea8('0x9')](),controller['addAgents']);router[_0x9ea8('0x12')](_0x9ea8('0x10'),auth[_0x9ea8('0x9')](),controller[_0x9ea8('0x13')]);router[_0x9ea8('0x14')](_0x9ea8('0xc'),auth[_0x9ea8('0x9')](),controller['update']);router[_0x9ea8('0x15')](_0x9ea8('0xc'),auth[_0x9ea8('0x9')](),controller['destroy']);router[_0x9ea8('0x15')]('/:id/users',auth[_0x9ea8('0x9')](),controller[_0x9ea8('0x16')]);router[_0x9ea8('0x15')](_0x9ea8('0x10'),auth[_0x9ea8('0x9')](),controller[_0x9ea8('0x17')]);module[_0x9ea8('0x18')]=router;
\ No newline at end of file
index 5d07200..a373715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacbf=['getDataValue','INTEGER','exports','name','VIRTUAL'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xacbf,0x70));var _0xfacb=function(_0x2b0768,_0x124bbe){_0x2b0768=_0x2b0768-0x0;var _0x246bd8=_0xacbf[_0x2b0768];return _0x246bd8;};'use strict';var Sequelize=require('sequelize');module[_0xfacb('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xfacb('0x1')},'prefix':{'type':Sequelize[_0xfacb('0x2')],'get':function(_0x5e72e3){return'system-'+this[_0xfacb('0x3')](_0xfacb('0x1'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0xfacb('0x4')]}};
\ No newline at end of file
+var _0xa3e2=['name','VIRTUAL','system-','INTEGER','exports','STRING'];(function(_0x2096f4,_0x27db49){var _0x390ac0=function(_0x39fd71){while(--_0x39fd71){_0x2096f4['push'](_0x2096f4['shift']());}};_0x390ac0(++_0x27db49);}(_0xa3e2,0xb2));var _0x2a3e=function(_0x4d2ed7,_0x1999e5){_0x4d2ed7=_0x4d2ed7-0x0;var _0x12af27=_0xa3e2[_0x4d2ed7];return _0x12af27;};'use strict';var Sequelize=require('sequelize');module[_0x2a3e('0x0')]={'name':{'type':Sequelize[_0x2a3e('0x1')],'allowNull':![],'unique':_0x2a3e('0x2')},'prefix':{'type':Sequelize[_0x2a3e('0x3')],'get':function(_0x380518){return _0x2a3e('0x4')+this['getDataValue']('name')+'-';}},'description':{'type':Sequelize[_0x2a3e('0x1')]},'callerIdAll':{'type':Sequelize[_0x2a3e('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0x2a3e('0x5')]}};
\ No newline at end of file
index 48e3a9f..a060886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['send','index','map','VoicePrefix','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','find','catch','describe','create','sequelize','transaction','get','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','app','description','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','goto','${EXTEN:','charAt','findById','addAgents','body','ids','omit','spread','emit','userVoicePrefix:save','userVoicePrefix:remove','findOne','User','getAgents','hasOwnProperty','getTeams','Team','addTeams','Agents','online','flatMap','TeamVoicePrefix','upsert','each','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','VoicePrefixes','UserProfileResource','destroy','error','name'];(function(_0x1c7eaf,_0x1f7036){var _0x2a7d93=function(_0x52e97a){while(--_0x52e97a){_0x1c7eaf['push'](_0x1c7eaf['shift']());}};_0x2a7d93(++_0x1f7036);}(_0x77e6,0x1a6));var _0x677e=function(_0x557865,_0x2a0db5){_0x557865=_0x557865-0x0;var _0x59807a=_0x77e6[_0x557865];return _0x59807a;};'use strict';var emlformat=require(_0x677e('0x0'));var rimraf=require(_0x677e('0x1'));var zipdir=require(_0x677e('0x2'));var jsonpatch=require(_0x677e('0x3'));var rp=require(_0x677e('0x4'));var moment=require(_0x677e('0x5'));var BPromise=require(_0x677e('0x6'));var Mustache=require(_0x677e('0x7'));var util=require('util');var path=require(_0x677e('0x8'));var sox=require(_0x677e('0x9'));var csv=require('to-csv');var ejs=require(_0x677e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x677e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x677e('0xc'));var deskjs=require(_0x677e('0xd'));var toCsv=require(_0x677e('0xe'));var querystring=require(_0x677e('0xf'));var Papa=require('papaparse');var Redis=require(_0x677e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x677e('0x11'));var as=require(_0x677e('0x12'));var hardwareService=require(_0x677e('0x13'));var logger=require(_0x677e('0x14'))(_0x677e('0x15'));var utils=require(_0x677e('0x16'));var config=require(_0x677e('0x17'));var licenseUtil=require(_0x677e('0x18'));var db=require(_0x677e('0x19'))['db'];config[_0x677e('0x1a')]=_[_0x677e('0x1b')](config[_0x677e('0x1a')],{'host':_0x677e('0x1c'),'port':0x18eb});var socket=require(_0x677e('0x1d'))(new Redis(config['redis']));require('./voicePrefix.socket')['register'](socket);function respondWithStatusCode(_0x213a50,_0x1dbe16){_0x1dbe16=_0x1dbe16||0xcc;return function(_0x105c88){if(_0x105c88){return _0x213a50[_0x677e('0x1e')](_0x1dbe16);}return _0x213a50[_0x677e('0x1f')](_0x1dbe16)[_0x677e('0x20')]();};}function respondWithResult(_0x24c9eb,_0xe88242){_0xe88242=_0xe88242||0xc8;return function(_0x251069){if(_0x251069){return _0x24c9eb[_0x677e('0x1f')](_0xe88242)[_0x677e('0x21')](_0x251069);}};}function respondWithFilteredResult(_0xe4d960,_0x49d428){return function(_0x1c5124){if(_0x1c5124){var _0x2ef2bf=typeof _0x49d428[_0x677e('0x22')]===_0x677e('0x23')&&typeof _0x49d428[_0x677e('0x24')]===_0x677e('0x23');var _0x52f65d=_0x1c5124[_0x677e('0x25')];var _0x4bfbb6=_0x2ef2bf?0x0:_0x49d428[_0x677e('0x22')];var _0x267aac=_0x2ef2bf?_0x1c5124[_0x677e('0x25')]:_0x49d428['offset']+_0x49d428[_0x677e('0x24')];var _0x1a6122;if(_0x267aac>=_0x52f65d){_0x267aac=_0x52f65d;_0x1a6122=0xc8;}else{_0x1a6122=0xce;}_0xe4d960[_0x677e('0x1f')](_0x1a6122);return _0xe4d960[_0x677e('0x26')](_0x677e('0x27'),_0x4bfbb6+'-'+_0x267aac+'/'+_0x52f65d)[_0x677e('0x21')](_0x1c5124);}return null;};}function patchUpdates(_0x3a7895){return function(_0x52ee8b){try{jsonpatch['apply'](_0x52ee8b,_0x3a7895,!![]);}catch(_0x52d915){return BPromise[_0x677e('0x28')](_0x52d915);}return _0x52ee8b[_0x677e('0x29')]();};}function saveUpdates(_0x31a1e4,_0x540d0e){return function(_0x424e5d){if(_0x424e5d){return _0x424e5d[_0x677e('0x2a')](_0x31a1e4)[_0x677e('0x2b')](function(_0x42f2b8){return _0x42f2b8;});}return null;};}function removeEntity(_0x2c51d3,_0x3f0646){return function(_0x5e5397){if(_0x5e5397){return _0x5e5397['destroy']()[_0x677e('0x2b')](function(){var _0x184f68=_0x5e5397['get']({'plain':!![]});var _0x51e39d=_0x677e('0x2c');return db[_0x677e('0x2d')][_0x677e('0x2e')]({'where':{'type':_0x51e39d,'resourceId':_0x184f68['id']}})[_0x677e('0x2b')](function(){return _0x5e5397;});})[_0x677e('0x2b')](function(){_0x2c51d3['status'](0xcc)[_0x677e('0x20')]();});}};}function handleEntityNotFound(_0x2a6033,_0xeca8e2){return function(_0x1e2694){if(!_0x1e2694){_0x2a6033[_0x677e('0x1e')](0x194);}return _0x1e2694;};}function handleError(_0x2bd6fb,_0x9179a0){_0x9179a0=_0x9179a0||0x1f4;return function(_0x10eb66){logger[_0x677e('0x2f')](_0x10eb66['stack']);if(_0x10eb66[_0x677e('0x30')]){delete _0x10eb66[_0x677e('0x30')];}_0x2bd6fb[_0x677e('0x1f')](_0x9179a0)[_0x677e('0x31')](_0x10eb66);};}exports[_0x677e('0x32')]=function(_0x16f516,_0x34bb3d){var _0x65331={},_0x3b875f={},_0x1d9756={'count':0x0,'rows':[]};var _0x4d0c01=_[_0x677e('0x33')](db[_0x677e('0x34')][_0x677e('0x35')],function(_0x2570b9){return{'name':_0x2570b9[_0x677e('0x36')],'type':_0x2570b9[_0x677e('0x37')]['key']};});_0x3b875f[_0x677e('0x38')]=_[_0x677e('0x33')](_0x4d0c01,_0x677e('0x30'));_0x3b875f['query']=_[_0x677e('0x39')](_0x16f516[_0x677e('0x3a')]);_0x3b875f[_0x677e('0x3b')]=_[_0x677e('0x3c')](_0x3b875f[_0x677e('0x38')],_0x3b875f['query']);_0x65331[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x3b875f[_0x677e('0x38')],qs[_0x677e('0x3e')](_0x16f516['query'][_0x677e('0x3e')]));_0x65331[_0x677e('0x3d')]=_0x65331[_0x677e('0x3d')]['length']?_0x65331['attributes']:_0x3b875f[_0x677e('0x38')];if(!_0x16f516[_0x677e('0x3a')]['hasOwnProperty'](_0x677e('0x3f'))){_0x65331[_0x677e('0x24')]=qs['limit'](_0x16f516['query'][_0x677e('0x24')]);_0x65331[_0x677e('0x22')]=qs['offset'](_0x16f516['query'][_0x677e('0x22')]);}_0x65331[_0x677e('0x40')]=qs[_0x677e('0x41')](_0x16f516['query'][_0x677e('0x41')]);_0x65331[_0x677e('0x42')]=qs[_0x677e('0x3b')](_[_0x677e('0x43')](_0x16f516[_0x677e('0x3a')],_0x3b875f['filters']),_0x4d0c01);if(_0x16f516['query'][_0x677e('0x44')]){_0x65331[_0x677e('0x42')]=_[_0x677e('0x45')](_0x65331[_0x677e('0x42')],{'$or':_[_0x677e('0x33')](_0x4d0c01,function(_0x2f8ebb){if(_0x2f8ebb[_0x677e('0x37')]!==_0x677e('0x46')){var _0x78202e={};_0x78202e[_0x2f8ebb[_0x677e('0x30')]]={'$like':'%'+_0x16f516['query']['filter']+'%'};return _0x78202e;}})});}_0x65331=_[_0x677e('0x45')]({},_0x65331,_0x16f516[_0x677e('0x47')]);var _0x5abab2={'where':_0x65331[_0x677e('0x42')]};return db['VoicePrefix'][_0x677e('0x25')](_0x5abab2)[_0x677e('0x2b')](function(_0x283aaa){_0x1d9756[_0x677e('0x25')]=_0x283aaa;if(_0x16f516[_0x677e('0x3a')][_0x677e('0x48')]){_0x65331['include']=[{'all':!![]}];}return db[_0x677e('0x34')][_0x677e('0x49')](_0x65331);})[_0x677e('0x2b')](function(_0x33fce2){_0x1d9756[_0x677e('0x4a')]=_0x33fce2;return _0x1d9756;})[_0x677e('0x2b')](respondWithFilteredResult(_0x34bb3d,_0x65331))['catch'](handleError(_0x34bb3d,null));};exports[_0x677e('0x4b')]=function(_0x5ca3db,_0x3211a9){var _0x2470d0={'raw':![],'where':{'id':_0x5ca3db[_0x677e('0x4c')]['id']}},_0x3609da={};_0x3609da[_0x677e('0x38')]=_[_0x677e('0x39')](db[_0x677e('0x34')][_0x677e('0x35')]);_0x3609da[_0x677e('0x3a')]=_[_0x677e('0x39')](_0x5ca3db['query']);_0x3609da[_0x677e('0x3b')]=_['intersection'](_0x3609da['model'],_0x3609da[_0x677e('0x3a')]);_0x2470d0[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x3609da[_0x677e('0x38')],qs[_0x677e('0x3e')](_0x5ca3db['query'][_0x677e('0x3e')]));_0x2470d0[_0x677e('0x3d')]=_0x2470d0[_0x677e('0x3d')][_0x677e('0x4d')]?_0x2470d0[_0x677e('0x3d')]:_0x3609da['model'];if(_0x5ca3db[_0x677e('0x3a')][_0x677e('0x48')]){_0x2470d0[_0x677e('0x4e')]=[{'all':!![]}];}_0x2470d0=_['merge']({},_0x2470d0,_0x5ca3db[_0x677e('0x47')]);return db['VoicePrefix'][_0x677e('0x4f')](_0x2470d0)['then'](handleEntityNotFound(_0x3211a9,null))['then'](respondWithResult(_0x3211a9,null))[_0x677e('0x50')](handleError(_0x3211a9,null));};exports[_0x677e('0x2e')]=function(_0x1f767f,_0x3ff832){return db['VoicePrefix'][_0x677e('0x4f')]({'where':{'id':_0x1f767f[_0x677e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3ff832,null))[_0x677e('0x2b')](removeEntity(_0x3ff832,null))[_0x677e('0x50')](handleError(_0x3ff832,null));};exports[_0x677e('0x51')]=function(_0x23d4fd,_0x2a362e){return db['VoicePrefix'][_0x677e('0x51')]()['then'](respondWithResult(_0x2a362e,null))['catch'](handleError(_0x2a362e,null));};exports[_0x677e('0x52')]=function(_0x4d826f,_0x1af05b){var _0x2f06e0;return db[_0x677e('0x53')][_0x677e('0x54')](function(_0x410012){return db[_0x677e('0x34')][_0x677e('0x52')](_0x4d826f['body'],{'transaction':_0x410012})['then'](function(_0x56a626){_0x2f06e0=_0x56a626[_0x677e('0x55')]({'plain':!![]});return db[_0x677e('0x56')][_0x677e('0x4f')]({'where':{'id':_0x2f06e0[_0x677e('0x57')]},'raw':!![]})[_0x677e('0x2b')](function(_0x1e59a7){return createVoicePrefixExtensions(_0x2f06e0,_0x1e59a7,_0x410012);});});})['then'](function(){var _0x118fb3=_0x4d826f[_0x677e('0x58')]['get']({'plain':!![]});if(!_0x118fb3)throw new Error(_0x677e('0x59'));if(_0x118fb3['role']===_0x677e('0x58')){var _0x20ae18=_0x2f06e0;return db[_0x677e('0x5a')][_0x677e('0x4f')]({'where':{'name':'VoicePrefixes','userProfileId':_0x118fb3[_0x677e('0x5b')]},'raw':!![]})['then'](function(_0x2cb161){if(_0x2cb161&&_0x2cb161[_0x677e('0x5c')]===0x0){return db[_0x677e('0x2d')][_0x677e('0x52')]({'name':_0x20ae18[_0x677e('0x30')],'resourceId':_0x20ae18['id'],'type':_0x2cb161['name'],'sectionId':_0x2cb161['id']},{})[_0x677e('0x2b')](function(){return _0x2f06e0;});}else{return _0x2f06e0;}})[_0x677e('0x50')](function(_0x3c1e10){logger['error'](_0x677e('0x5d'),_0x3c1e10);throw _0x3c1e10;});}return _0x2f06e0;})[_0x677e('0x2b')](respondWithResult(_0x1af05b,null))[_0x677e('0x50')](handleError(_0x1af05b,null));};function Extension(_0x15fd83,_0x35c3b7,_0x44988b,_0x52cd04){this[_0x677e('0x5e')]='from-sip';this['exten']=_0x15fd83;this[_0x677e('0x5f')]=_0x44988b;this['type']='system';this[_0x677e('0x60')]='Voice\x20Prefix\x20Extension';this[_0x677e('0x61')]=_0x35c3b7;this[_0x677e('0x62')]=_0x52cd04;}function createVoicePrefixExtensions(_0x585c4d,_0x3a1555,_0x100be4){return new BPromise(function(_0x379b92,_0x1f11c1){var _0x26479f=new Extension(formatPrefixName(_0x585c4d[_0x677e('0x63')]),0x1,'NoOp',_0x677e('0x64'));_0x26479f[_0x677e('0x65')]=_0x585c4d['id'];return db[_0x677e('0x56')]['create'](_0x26479f,{'transaction':_0x100be4})[_0x677e('0x2b')](function(_0x1da51f){var _0x32cc95=_0x1da51f[_0x677e('0x55')]({'plain':!![]});var _0x2298c8=_[_0x677e('0x33')](addVoicePrefixExtensions(_0x585c4d,_0x3a1555),function(_0x1bc37f){_0x1bc37f[_0x677e('0x57')]=_0x32cc95['id'];_0x1bc37f['VoicePrefixId']=_0x585c4d['id'];return _0x1bc37f;});return db[_0x677e('0x56')][_0x677e('0x66')](_0x2298c8,{'transaction':_0x100be4})[_0x677e('0x2b')](function(_0x2fa495){if(!_0x2fa495){return _0x1f11c1(_0x677e('0x67'));}else{return _0x379b92(_0x2fa495);}})['catch'](function(_0x6ee13d){return _0x1f11c1(_0x6ee13d);});});;});};function addVoicePrefixExtensions(_0x20e595,_0x3e84ba){var _0x16b622=[];var _0x5b5d34=formatPrefixName(_0x20e595[_0x677e('0x63')]);_0x16b622[_0x677e('0x68')](new Extension(_0x5b5d34,0x2,_0x677e('0x69'),_0x677e('0x6a')+_0x20e595[_0x677e('0x30')]));if(_0x20e595[_0x677e('0x6b')]){_0x16b622[_0x677e('0x68')](new Extension(_0x5b5d34,0x3,_0x677e('0x69'),_0x677e('0x6c')+_0x20e595[_0x677e('0x6b')]));}else{_0x16b622[_0x677e('0x68')](new Extension(_0x5b5d34,0x3,'NoOp','No\x20callerid\x20available'));}_0x16b622[_0x677e('0x68')](new Extension(_0x5b5d34,0x4,_0x677e('0x6d'),_0x3e84ba[_0x677e('0x5e')]+','+_0x677e('0x6e')+(0x8+_0x20e595[_0x677e('0x30')][_0x677e('0x4d')])+'}'+','+0x1));return _0x16b622;}function formatPrefixName(_0x522f82){var _0x10cdb6='_';for(var _0x1a3b1c=0x0;_0x1a3b1c<_0x522f82[_0x677e('0x4d')];_0x1a3b1c++){if(_0x522f82[_0x677e('0x6f')](_0x1a3b1c)=='-'){_0x10cdb6+=_0x522f82[_0x677e('0x6f')](_0x1a3b1c);}else{_0x10cdb6+='['+_0x522f82[_0x677e('0x6f')](_0x1a3b1c)+']';}}_0x10cdb6+='.';return _0x10cdb6;}exports['update']=function(_0x2230b0,_0x5390ee,_0x4b7dca){var _0x36aa6b=_0x2230b0['body'];_0x36aa6b[_0x677e('0x63')]='system-'+_0x36aa6b['name']+'-';return db[_0x677e('0x53')]['transaction'](function(_0x8f3069){return db[_0x677e('0x34')]['update'](_0x36aa6b,{'where':{'id':_0x36aa6b['id']},'transaction':_0x8f3069})[_0x677e('0x2b')](function(){return db[_0x677e('0x56')][_0x677e('0x2e')]({'where':{'VoicePrefixId':_0x36aa6b['id']},'transaction':_0x8f3069})[_0x677e('0x2b')](function(){return db[_0x677e('0x56')][_0x677e('0x4f')]({'where':{'id':_0x36aa6b['VoiceExtensionId']},'raw':!![]})[_0x677e('0x2b')](function(_0x56f918){return createVoicePrefixExtensions(_0x36aa6b,_0x56f918,_0x8f3069);});});});})[_0x677e('0x2b')](function(){return db['VoicePrefix'][_0x677e('0x70')](_0x36aa6b['id']);})[_0x677e('0x2b')](respondWithResult(_0x5390ee,null))[_0x677e('0x50')](handleError(_0x5390ee,null));};exports['addAgents']=function(_0x496dcc,_0x5f2a2a,_0x570fc9){return db[_0x677e('0x34')][_0x677e('0x4f')]({'where':{'id':_0x496dcc[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x5f2a2a,null))[_0x677e('0x2b')](function(_0x2f9c58){if(_0x2f9c58){return _0x2f9c58[_0x677e('0x71')](_0x496dcc[_0x677e('0x72')][_0x677e('0x73')],_[_0x677e('0x74')](_0x496dcc[_0x677e('0x72')],['ids','id'])||{})[_0x677e('0x75')](function(_0x358ba9){for(var _0x5b07c5=0x0;_0x5b07c5<_0x496dcc[_0x677e('0x72')][_0x677e('0x73')][_0x677e('0x4d')];_0x5b07c5+=0x1){socket[_0x677e('0x76')](_0x677e('0x77'),{'UserId':Number(_0x496dcc[_0x677e('0x72')][_0x677e('0x73')][_0x5b07c5]),'VoicePrefixId':Number(_0x496dcc[_0x677e('0x4c')]['id'])});}return _0x358ba9;});}})[_0x677e('0x2b')](respondWithResult(_0x5f2a2a,null))['catch'](handleError(_0x5f2a2a,null));};exports['removeAgents']=function(_0x3bc3e3,_0xe2d3e6,_0x353656){return db[_0x677e('0x34')]['find']({'where':{'id':_0x3bc3e3[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0xe2d3e6,null))[_0x677e('0x2b')](function(_0x5db841){if(_0x5db841){return _0x5db841['removeAgents'](_0x3bc3e3['query'][_0x677e('0x73')])[_0x677e('0x2b')](function(){if(_['isArray'](_0x3bc3e3[_0x677e('0x3a')][_0x677e('0x73')])){for(var _0x164211=0x0;_0x164211<_0x3bc3e3[_0x677e('0x3a')]['ids']['length'];_0x164211+=0x1){socket[_0x677e('0x76')](_0x677e('0x78'),{'UserId':Number(_0x3bc3e3[_0x677e('0x3a')][_0x677e('0x73')][_0x164211]),'VoicePrefixId':Number(_0x3bc3e3['params']['id'])});}}else{socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x3bc3e3[_0x677e('0x3a')][_0x677e('0x73')]),'VoicePrefixId':Number(_0x3bc3e3['params']['id'])});}});}})['then'](respondWithStatusCode(_0xe2d3e6,null))[_0x677e('0x50')](handleError(_0xe2d3e6,null));};exports['getAgents']=function(_0x598aac,_0x3e4d40,_0x42746){var _0x30e13e={};var _0x37617d={};var _0x497df7;var _0x5bc26a;return db['VoicePrefix'][_0x677e('0x79')]({'where':{'id':_0x598aac[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x3e4d40,null))[_0x677e('0x2b')](function(_0x1bfd9e){if(_0x1bfd9e){_0x497df7=_0x1bfd9e;_0x37617d[_0x677e('0x38')]=_['keys'](db[_0x677e('0x7a')]['rawAttributes']);_0x37617d['query']=_[_0x677e('0x39')](_0x598aac[_0x677e('0x3a')]);_0x37617d['filters']=_[_0x677e('0x3c')](_0x37617d[_0x677e('0x38')],_0x37617d[_0x677e('0x3a')]);_0x30e13e['attributes']=_['intersection'](_0x37617d[_0x677e('0x38')],qs['fields'](_0x598aac['query'][_0x677e('0x3e')]));_0x30e13e[_0x677e('0x3d')]=_0x30e13e[_0x677e('0x3d')]['length']?_0x30e13e['attributes']:_0x37617d[_0x677e('0x38')];_0x30e13e[_0x677e('0x40')]=qs[_0x677e('0x41')](_0x598aac['query'][_0x677e('0x41')]);_0x30e13e[_0x677e('0x42')]=qs['filters'](_[_0x677e('0x43')](_0x598aac['query'],_0x37617d[_0x677e('0x3b')]));if(_0x598aac[_0x677e('0x3a')]['filter']){_0x30e13e[_0x677e('0x42')]=_[_0x677e('0x45')](_0x30e13e[_0x677e('0x42')],{'$or':_['map'](_0x30e13e['attributes'],function(_0x519da2){var _0x38acdd={};_0x38acdd[_0x519da2]={'$like':'%'+_0x598aac[_0x677e('0x3a')][_0x677e('0x44')]+'%'};return _0x38acdd;})});}_0x30e13e=_[_0x677e('0x45')]({},_0x30e13e,_0x598aac[_0x677e('0x47')]);return _0x497df7[_0x677e('0x7b')](_0x30e13e);}})[_0x677e('0x2b')](function(_0x24a584){if(_0x24a584){_0x5bc26a=_0x24a584[_0x677e('0x4d')];if(!_0x598aac[_0x677e('0x3a')][_0x677e('0x7c')](_0x677e('0x3f'))){_0x30e13e['limit']=qs[_0x677e('0x24')](_0x598aac['query']['limit']);_0x30e13e['offset']=qs[_0x677e('0x22')](_0x598aac[_0x677e('0x3a')][_0x677e('0x22')]);}return _0x497df7['getAgents'](_0x30e13e);}})[_0x677e('0x2b')](function(_0x410a04){if(_0x410a04){return _0x410a04?{'count':_0x5bc26a,'rows':_0x410a04}:null;}})['then'](respondWithResult(_0x3e4d40,null))['catch'](handleError(_0x3e4d40,null));};exports[_0x677e('0x7d')]=function(_0x59cf17,_0x31701e,_0x4b6280){var _0x1cf5a8={};var _0x2171ec={};var _0x4d24ca;var _0x205591;return db[_0x677e('0x34')][_0x677e('0x79')]({'where':{'id':_0x59cf17[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x31701e,null))[_0x677e('0x2b')](function(_0x5a4f85){if(_0x5a4f85){_0x4d24ca=_0x5a4f85;_0x2171ec[_0x677e('0x38')]=_[_0x677e('0x39')](db[_0x677e('0x7e')]['rawAttributes']);_0x2171ec['query']=_[_0x677e('0x39')](_0x59cf17[_0x677e('0x3a')]);_0x2171ec[_0x677e('0x3b')]=_['intersection'](_0x2171ec[_0x677e('0x38')],_0x2171ec[_0x677e('0x3a')]);_0x1cf5a8[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x2171ec['model'],qs[_0x677e('0x3e')](_0x59cf17[_0x677e('0x3a')][_0x677e('0x3e')]));_0x1cf5a8[_0x677e('0x3d')]=_0x1cf5a8['attributes']['length']?_0x1cf5a8[_0x677e('0x3d')]:_0x2171ec[_0x677e('0x38')];_0x1cf5a8['order']=qs[_0x677e('0x41')](_0x59cf17[_0x677e('0x3a')][_0x677e('0x41')]);_0x1cf5a8[_0x677e('0x42')]=qs[_0x677e('0x3b')](_[_0x677e('0x43')](_0x59cf17[_0x677e('0x3a')],_0x2171ec[_0x677e('0x3b')]));if(_0x59cf17[_0x677e('0x3a')][_0x677e('0x44')]){_0x1cf5a8['where']=_[_0x677e('0x45')](_0x1cf5a8[_0x677e('0x42')],{'$or':_[_0x677e('0x33')](_0x1cf5a8[_0x677e('0x3d')],function(_0x39ab73){var _0x54ae47={};_0x54ae47[_0x39ab73]={'$like':'%'+_0x59cf17[_0x677e('0x3a')][_0x677e('0x44')]+'%'};return _0x54ae47;})});}_0x1cf5a8=_['merge']({},_0x1cf5a8,_0x59cf17[_0x677e('0x47')]);return _0x4d24ca[_0x677e('0x7d')](_0x1cf5a8);}})[_0x677e('0x2b')](function(_0x3bfa41){if(_0x3bfa41){_0x205591=_0x3bfa41['length'];if(!_0x59cf17[_0x677e('0x3a')][_0x677e('0x7c')]('nolimit')){_0x1cf5a8[_0x677e('0x24')]=qs[_0x677e('0x24')](_0x59cf17[_0x677e('0x3a')][_0x677e('0x24')]);_0x1cf5a8[_0x677e('0x22')]=qs['offset'](_0x59cf17[_0x677e('0x3a')][_0x677e('0x22')]);}return _0x4d24ca[_0x677e('0x7d')](_0x1cf5a8);}})['then'](function(_0x218773){if(_0x218773){return _0x218773?{'count':_0x205591,'rows':_0x218773}:null;}})[_0x677e('0x2b')](respondWithResult(_0x31701e,null))['catch'](handleError(_0x31701e,null));};exports[_0x677e('0x7f')]=function(_0x169ad3,_0x589b95,_0xfc07b9){var _0x244d15=_0x169ad3[_0x677e('0x72')][_0x677e('0x73')];var _0x3ceb0d;return db[_0x677e('0x7e')]['findAll']({'where':{'id':_0x244d15},'attributes':['id'],'include':[{'model':db[_0x677e('0x7a')],'as':_0x677e('0x80'),'attributes':['id','name',_0x677e('0x81'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x1438f2){if(_0x1438f2){_0x3ceb0d=_0x1438f2;var _0x2b7e56=_[_0x677e('0x82')](_0x1438f2,function(_0x281857){var _0x524317=_0x281857['get']({'plain':!![]});return _0x524317[_0x677e('0x80')];});return db[_0x677e('0x34')]['find']({'where':{'id':_0x169ad3[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](function(_0x7c18c1){return db[_0x677e('0x53')]['transaction'](function(_0x286217){return _0x7c18c1['addTeams'](_0x244d15,{'transaction':_0x286217})[_0x677e('0x2b')](function(){return BPromise['each'](_0x3ceb0d,function(_0x5309c1){return db[_0x677e('0x83')][_0x677e('0x84')]({'TeamId':_0x5309c1['id'],'VoicePrefixId':_0x169ad3[_0x677e('0x4c')]['id']},{'transaction':_0x286217});});})[_0x677e('0x2b')](function(){return BPromise[_0x677e('0x85')](_0x2b7e56,function(_0x15b416){return db[_0x677e('0x86')][_0x677e('0x87')]({'where':{'UserId':_0x15b416['id'],'VoicePrefixId':_0x169ad3[_0x677e('0x4c')]['id']},'transaction':_0x286217});});})['then'](function(){_0x2b7e56[_0x677e('0x88')](function(_0x36680e){socket['emit'](_0x677e('0x77'),{'UserId':_0x36680e['id'],'VoicePrefixId':_0x7c18c1['id']});});});});});}})['then'](respondWithStatusCode(_0x589b95,null))[_0x677e('0x50')](handleError(_0x589b95,null));};exports[_0x677e('0x89')]=function(_0x3ac7bb,_0x4f149a,_0x9d34f1){return db[_0x677e('0x7e')][_0x677e('0x49')]({'where':{'id':_0x3ac7bb[_0x677e('0x3a')][_0x677e('0x73')]},'attributes':['id'],'include':[{'model':db[_0x677e('0x7a')],'as':_0x677e('0x80'),'attributes':['id'],'raw':!![]}]})[_0x677e('0x2b')](handleEntityNotFound(_0x4f149a,null))[_0x677e('0x2b')](function(_0x12c7f7){var _0x249f0c=_[_0x677e('0x33')](_0x12c7f7,'id');var _0x3d55e7=[];var _0x2b451e=[];var _0x477428=squel[_0x677e('0x8a')]();_0x477428[_0x677e('0x8b')](_0x677e('0x8c'))['from'](_0x677e('0x8d'),'tq')[_0x677e('0x8e')](_0x677e('0x8f'),'ut',_0x677e('0x90'))['where']('VoicePrefixId\x20=\x20?',_0x3ac7bb[_0x677e('0x4c')]['id']);for(var _0x3f54fc=0x0;_0x3f54fc<_0x12c7f7[_0x677e('0x4d')];_0x3f54fc+=0x1){let _0x23a71a=_0x12c7f7[_0x3f54fc];for(var _0x46997f=0x0;_0x46997f<_0x23a71a[_0x677e('0x80')][_0x677e('0x4d')];_0x46997f+=0x1){let _0x2519e9=_0x23a71a['Agents'][_0x46997f];var _0x57b67f=_0x477428[_0x677e('0x91')]();_0x57b67f[_0x677e('0x42')](_0x677e('0x92'),_0x2519e9['id']);_0x2b451e[_0x677e('0x68')](db[_0x677e('0x53')][_0x677e('0x3a')](_0x57b67f['toString'](),{'type':db[_0x677e('0x53')][_0x677e('0x93')][_0x677e('0x94')]})[_0x677e('0x2b')](function(_0x8a8748){if(_0x8a8748[_0x677e('0x4d')]===0x1){return _0x2519e9['id'];}else{var _0x248ddd=_['every'](_['map'](_0x8a8748,_0x677e('0x95')),function(_0x405048){return _[_0x677e('0x96')](_0x249f0c,_0x405048);});if(_0x248ddd){return _0x2519e9['id'];}}}));}}return BPromise[_0x677e('0x97')](_0x2b451e)[_0x677e('0x2b')](function(_0x4284d3){_0x3d55e7=_(_0x3d55e7)[_0x677e('0x98')](_0x4284d3)[_0x677e('0x99')]()[_0x677e('0x9a')]();return db[_0x677e('0x34')][_0x677e('0x4f')]({'where':{'id':_0x3ac7bb['params']['id']}})[_0x677e('0x2b')](function(_0x700834){return db['sequelize'][_0x677e('0x54')](function(_0x8e0c11){return _0x700834[_0x677e('0x89')](_0x3ac7bb['query'][_0x677e('0x73')],{'transaction':_0x8e0c11})[_0x677e('0x2b')](function(){if(!_[_0x677e('0x9b')](_0x3d55e7)){return _0x700834[_0x677e('0x9c')](_0x3d55e7,{'transaction':_0x8e0c11});}})['then'](function(){_0x3d55e7[_0x677e('0x88')](function(_0x50acd9){socket['emit'](_0x677e('0x78'),{'UserId':_0x50acd9,'VoicePrefixId':_0x700834['id']});});});});});});})[_0x677e('0x2b')](respondWithStatusCode(_0x4f149a,null))[_0x677e('0x50')](handleError(_0x4f149a,null));};
\ No newline at end of file
+var _0x1775=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','VoicePrefixes','UserProfileResource','then','error','stack','name','index','map','VoicePrefix','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','params','keys','includeAll','include','describe','create','sequelize','body','VoiceExtension','find','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','app','system','description','appdata','prefix','NoOp','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','context','${EXTEN:','charAt','transaction','findById','addAgents','ids','omit','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','User','getAgents','hasOwnProperty','nolimit','getTeams','Team','addTeams','Agents','online','voicePause','interface','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','all','union','compact','value','isEmpty','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x73a874,_0x7d594f){var _0x3dc0be=function(_0x50ced0){while(--_0x50ced0){_0x73a874['push'](_0x73a874['shift']());}};_0x3dc0be(++_0x7d594f);}(_0x1775,0x1db));var _0x5177=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1775[_0x432682];return _0x463d05;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5177('0x0'));var zipdir=require(_0x5177('0x1'));var jsonpatch=require(_0x5177('0x2'));var rp=require(_0x5177('0x3'));var moment=require(_0x5177('0x4'));var BPromise=require(_0x5177('0x5'));var Mustache=require(_0x5177('0x6'));var util=require(_0x5177('0x7'));var path=require(_0x5177('0x8'));var sox=require(_0x5177('0x9'));var csv=require(_0x5177('0xa'));var ejs=require(_0x5177('0xb'));var fs=require('fs');var fs_extra=require(_0x5177('0xc'));var _=require(_0x5177('0xd'));var squel=require(_0x5177('0xe'));var crypto=require(_0x5177('0xf'));var jsforce=require(_0x5177('0x10'));var deskjs=require(_0x5177('0x11'));var toCsv=require(_0x5177('0xa'));var querystring=require(_0x5177('0x12'));var Papa=require(_0x5177('0x13'));var Redis=require(_0x5177('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5177('0x15'));var hardwareService=require(_0x5177('0x16'));var logger=require(_0x5177('0x17'))(_0x5177('0x18'));var utils=require(_0x5177('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5177('0x1a'));var db=require(_0x5177('0x1b'))['db'];config[_0x5177('0x1c')]=_[_0x5177('0x1d')](config[_0x5177('0x1c')],{'host':_0x5177('0x1e'),'port':0x18eb});var socket=require(_0x5177('0x1f'))(new Redis(config[_0x5177('0x1c')]));require(_0x5177('0x20'))[_0x5177('0x21')](socket);function respondWithStatusCode(_0x41bef4,_0x2bf5bb){_0x2bf5bb=_0x2bf5bb||0xcc;return function(_0x29cd2c){if(_0x29cd2c){return _0x41bef4[_0x5177('0x22')](_0x2bf5bb);}return _0x41bef4[_0x5177('0x23')](_0x2bf5bb)[_0x5177('0x24')]();};}function respondWithResult(_0x2ab5e5,_0x7dba6f){_0x7dba6f=_0x7dba6f||0xc8;return function(_0xe6dcf6){if(_0xe6dcf6){return _0x2ab5e5['status'](_0x7dba6f)[_0x5177('0x25')](_0xe6dcf6);}};}function respondWithFilteredResult(_0x41e687,_0x3f5ab5){return function(_0x1b4102){if(_0x1b4102){var _0x5f5bd4=typeof _0x3f5ab5[_0x5177('0x26')]===_0x5177('0x27')&&typeof _0x3f5ab5[_0x5177('0x28')]==='undefined';var _0x86f5f8=_0x1b4102['count'];var _0xc2b2b5=_0x5f5bd4?0x0:_0x3f5ab5[_0x5177('0x26')];var _0x219744=_0x5f5bd4?_0x1b4102[_0x5177('0x29')]:_0x3f5ab5[_0x5177('0x26')]+_0x3f5ab5[_0x5177('0x28')];var _0x174c4f;if(_0x219744>=_0x86f5f8){_0x219744=_0x86f5f8;_0x174c4f=0xc8;}else{_0x174c4f=0xce;}_0x41e687[_0x5177('0x23')](_0x174c4f);return _0x41e687[_0x5177('0x2a')](_0x5177('0x2b'),_0xc2b2b5+'-'+_0x219744+'/'+_0x86f5f8)[_0x5177('0x25')](_0x1b4102);}return null;};}function patchUpdates(_0x3b0c37){return function(_0x5d9a9c){try{jsonpatch[_0x5177('0x2c')](_0x5d9a9c,_0x3b0c37,!![]);}catch(_0x556f96){return BPromise[_0x5177('0x2d')](_0x556f96);}return _0x5d9a9c[_0x5177('0x2e')]();};}function saveUpdates(_0x3b39b5,_0x2d51d0){return function(_0x4bc8e2){if(_0x4bc8e2){return _0x4bc8e2[_0x5177('0x2f')](_0x3b39b5)['then'](function(_0x564139){return _0x564139;});}return null;};}function removeEntity(_0x19a0c2,_0x15cb93){return function(_0x577bf7){if(_0x577bf7){return _0x577bf7[_0x5177('0x30')]()['then'](function(){var _0x231d35=_0x577bf7[_0x5177('0x31')]({'plain':!![]});var _0x58846c=_0x5177('0x32');return db[_0x5177('0x33')][_0x5177('0x30')]({'where':{'type':_0x58846c,'resourceId':_0x231d35['id']}})[_0x5177('0x34')](function(){return _0x577bf7;});})[_0x5177('0x34')](function(){_0x19a0c2[_0x5177('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x498fcd,_0x45cf20){return function(_0x1c660e){if(!_0x1c660e){_0x498fcd[_0x5177('0x22')](0x194);}return _0x1c660e;};}function handleError(_0x174f7a,_0x2e1985){_0x2e1985=_0x2e1985||0x1f4;return function(_0x8134f9){logger[_0x5177('0x35')](_0x8134f9[_0x5177('0x36')]);if(_0x8134f9['name']){delete _0x8134f9[_0x5177('0x37')];}_0x174f7a[_0x5177('0x23')](_0x2e1985)['send'](_0x8134f9);};}exports[_0x5177('0x38')]=function(_0x5e4c48,_0x172b36){var _0x1a2c46={},_0x1ba51c={},_0x5e2e5a={'count':0x0,'rows':[]};var _0x4f70df=_[_0x5177('0x39')](db[_0x5177('0x3a')][_0x5177('0x3b')],function(_0x3735e9){return{'name':_0x3735e9[_0x5177('0x3c')],'type':_0x3735e9[_0x5177('0x3d')][_0x5177('0x3e')]};});_0x1ba51c[_0x5177('0x3f')]=_['map'](_0x4f70df,_0x5177('0x37'));_0x1ba51c[_0x5177('0x40')]=_['keys'](_0x5e4c48[_0x5177('0x40')]);_0x1ba51c[_0x5177('0x41')]=_[_0x5177('0x42')](_0x1ba51c[_0x5177('0x3f')],_0x1ba51c[_0x5177('0x40')]);_0x1a2c46[_0x5177('0x43')]=_['intersection'](_0x1ba51c[_0x5177('0x3f')],qs[_0x5177('0x44')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x44')]));_0x1a2c46[_0x5177('0x43')]=_0x1a2c46[_0x5177('0x43')][_0x5177('0x45')]?_0x1a2c46['attributes']:_0x1ba51c[_0x5177('0x3f')];if(!_0x5e4c48[_0x5177('0x40')]['hasOwnProperty']('nolimit')){_0x1a2c46[_0x5177('0x28')]=qs[_0x5177('0x28')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x28')]);_0x1a2c46[_0x5177('0x26')]=qs[_0x5177('0x26')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x26')]);}_0x1a2c46[_0x5177('0x46')]=qs[_0x5177('0x47')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x47')]);_0x1a2c46[_0x5177('0x48')]=qs['filters'](_[_0x5177('0x49')](_0x5e4c48[_0x5177('0x40')],_0x1ba51c['filters']),_0x4f70df);if(_0x5e4c48[_0x5177('0x40')]['filter']){_0x1a2c46[_0x5177('0x48')]=_[_0x5177('0x4a')](_0x1a2c46[_0x5177('0x48')],{'$or':_['map'](_0x4f70df,function(_0x56eba4){if(_0x56eba4[_0x5177('0x3d')]!==_0x5177('0x4b')){var _0x1a149b={};_0x1a149b[_0x56eba4[_0x5177('0x37')]]={'$like':'%'+_0x5e4c48[_0x5177('0x40')][_0x5177('0x4c')]+'%'};return _0x1a149b;}})});}_0x1a2c46=_[_0x5177('0x4a')]({},_0x1a2c46,_0x5e4c48[_0x5177('0x4d')]);var _0x4e287e={'where':_0x1a2c46[_0x5177('0x48')]};return db['VoicePrefix']['count'](_0x4e287e)[_0x5177('0x34')](function(_0x17dc98){_0x5e2e5a['count']=_0x17dc98;if(_0x5e4c48[_0x5177('0x40')]['includeAll']){_0x1a2c46['include']=[{'all':!![]}];}return db[_0x5177('0x3a')][_0x5177('0x4e')](_0x1a2c46);})[_0x5177('0x34')](function(_0x3776b8){_0x5e2e5a[_0x5177('0x4f')]=_0x3776b8;return _0x5e2e5a;})[_0x5177('0x34')](respondWithFilteredResult(_0x172b36,_0x1a2c46))[_0x5177('0x50')](handleError(_0x172b36,null));};exports['show']=function(_0x5396cc,_0x12b70){var _0x511dc0={'raw':![],'where':{'id':_0x5396cc[_0x5177('0x51')]['id']}},_0x23be2a={};_0x23be2a[_0x5177('0x3f')]=_[_0x5177('0x52')](db['VoicePrefix'][_0x5177('0x3b')]);_0x23be2a[_0x5177('0x40')]=_[_0x5177('0x52')](_0x5396cc[_0x5177('0x40')]);_0x23be2a[_0x5177('0x41')]=_[_0x5177('0x42')](_0x23be2a[_0x5177('0x3f')],_0x23be2a[_0x5177('0x40')]);_0x511dc0[_0x5177('0x43')]=_[_0x5177('0x42')](_0x23be2a[_0x5177('0x3f')],qs['fields'](_0x5396cc[_0x5177('0x40')]['fields']));_0x511dc0['attributes']=_0x511dc0['attributes'][_0x5177('0x45')]?_0x511dc0[_0x5177('0x43')]:_0x23be2a['model'];if(_0x5396cc[_0x5177('0x40')][_0x5177('0x53')]){_0x511dc0[_0x5177('0x54')]=[{'all':!![]}];}_0x511dc0=_['merge']({},_0x511dc0,_0x5396cc[_0x5177('0x4d')]);return db['VoicePrefix']['find'](_0x511dc0)['then'](handleEntityNotFound(_0x12b70,null))[_0x5177('0x34')](respondWithResult(_0x12b70,null))[_0x5177('0x50')](handleError(_0x12b70,null));};exports[_0x5177('0x30')]=function(_0x5a1f8b,_0x4e53e4){return db[_0x5177('0x3a')]['find']({'where':{'id':_0x5a1f8b[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x4e53e4,null))[_0x5177('0x34')](removeEntity(_0x4e53e4,null))[_0x5177('0x50')](handleError(_0x4e53e4,null));};exports[_0x5177('0x55')]=function(_0xa0edd7,_0x26bac0){return db[_0x5177('0x3a')][_0x5177('0x55')]()[_0x5177('0x34')](respondWithResult(_0x26bac0,null))[_0x5177('0x50')](handleError(_0x26bac0,null));};exports[_0x5177('0x56')]=function(_0x422d6c,_0x4c2068){var _0x59376b;return db[_0x5177('0x57')]['transaction'](function(_0x649c6f){return db['VoicePrefix'][_0x5177('0x56')](_0x422d6c[_0x5177('0x58')],{'transaction':_0x649c6f})[_0x5177('0x34')](function(_0x55a0b6){_0x59376b=_0x55a0b6['get']({'plain':!![]});return db[_0x5177('0x59')][_0x5177('0x5a')]({'where':{'id':_0x59376b[_0x5177('0x5b')]},'raw':!![]})[_0x5177('0x34')](function(_0x4a4758){return createVoicePrefixExtensions(_0x59376b,_0x4a4758,_0x649c6f);});});})['then'](function(){var _0x3f0e89=_0x422d6c[_0x5177('0x5c')][_0x5177('0x31')]({'plain':!![]});if(!_0x3f0e89)throw new Error(_0x5177('0x5d'));if(_0x3f0e89['role']===_0x5177('0x5c')){var _0x143aff=_0x59376b;return db[_0x5177('0x5e')]['find']({'where':{'name':_0x5177('0x32'),'userProfileId':_0x3f0e89[_0x5177('0x5f')]},'raw':!![]})[_0x5177('0x34')](function(_0x49e3e3){if(_0x49e3e3&&_0x49e3e3[_0x5177('0x60')]===0x0){return db['UserProfileResource'][_0x5177('0x56')]({'name':_0x143aff[_0x5177('0x37')],'resourceId':_0x143aff['id'],'type':_0x49e3e3[_0x5177('0x37')],'sectionId':_0x49e3e3['id']},{})['then'](function(){return _0x59376b;});}else{return _0x59376b;}})[_0x5177('0x50')](function(_0x161e03){logger[_0x5177('0x35')](_0x5177('0x61'),_0x161e03);throw _0x161e03;});}return _0x59376b;})[_0x5177('0x34')](respondWithResult(_0x4c2068,null))[_0x5177('0x50')](handleError(_0x4c2068,null));};function Extension(_0x37380c,_0x267599,_0x5ceed2,_0x5d96ce){this['context']=_0x5177('0x62');this[_0x5177('0x63')]=_0x37380c;this[_0x5177('0x64')]=_0x5ceed2;this[_0x5177('0x3d')]=_0x5177('0x65');this[_0x5177('0x66')]='Voice\x20Prefix\x20Extension';this['priority']=_0x267599;this[_0x5177('0x67')]=_0x5d96ce;}function createVoicePrefixExtensions(_0x23eb6e,_0x1f294e,_0x336017){return new BPromise(function(_0x123d40,_0x1b1778){var _0x2d1745=new Extension(formatPrefixName(_0x23eb6e[_0x5177('0x68')]),0x1,_0x5177('0x69'),'Voice\x20Prefix');_0x2d1745[_0x5177('0x6a')]=_0x23eb6e['id'];return db[_0x5177('0x59')]['create'](_0x2d1745,{'transaction':_0x336017})[_0x5177('0x34')](function(_0x4481b6){var _0x4edebc=_0x4481b6[_0x5177('0x31')]({'plain':!![]});var _0x2f3344=_[_0x5177('0x39')](addVoicePrefixExtensions(_0x23eb6e,_0x1f294e),function(_0x4be4b2){_0x4be4b2[_0x5177('0x5b')]=_0x4edebc['id'];_0x4be4b2[_0x5177('0x6a')]=_0x23eb6e['id'];return _0x4be4b2;});return db['VoiceExtension']['bulkCreate'](_0x2f3344,{'transaction':_0x336017})[_0x5177('0x34')](function(_0x4f76d7){if(!_0x4f76d7){return _0x1b1778(_0x5177('0x6b'));}else{return _0x123d40(_0x4f76d7);}})['catch'](function(_0x2771fa){return _0x1b1778(_0x2771fa);});});;});};function addVoicePrefixExtensions(_0x16f17c,_0x5a8ada){var _0x2af938=[];var _0x3b090d=formatPrefixName(_0x16f17c[_0x5177('0x68')]);_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x2,_0x5177('0x6d'),_0x5177('0x6e')+_0x16f17c[_0x5177('0x37')]));if(_0x16f17c['callerIdAll']){_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x3,'Set','PREFIX-CALLERIDALL='+_0x16f17c[_0x5177('0x6f')]));}else{_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x3,'NoOp',_0x5177('0x70')));}_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x4,_0x5177('0x71'),_0x5a8ada[_0x5177('0x72')]+','+_0x5177('0x73')+(0x8+_0x16f17c[_0x5177('0x37')][_0x5177('0x45')])+'}'+','+0x1));return _0x2af938;}function formatPrefixName(_0x3b26f4){var _0x478d5e='_';for(var _0x54b28f=0x0;_0x54b28f<_0x3b26f4[_0x5177('0x45')];_0x54b28f++){if(_0x3b26f4[_0x5177('0x74')](_0x54b28f)=='-'){_0x478d5e+=_0x3b26f4[_0x5177('0x74')](_0x54b28f);}else{_0x478d5e+='['+_0x3b26f4[_0x5177('0x74')](_0x54b28f)+']';}}_0x478d5e+='.';return _0x478d5e;}exports[_0x5177('0x2f')]=function(_0x3dd58f,_0x4fc289,_0x3692b2){var _0x397b75=_0x3dd58f[_0x5177('0x58')];_0x397b75[_0x5177('0x68')]='system-'+_0x397b75[_0x5177('0x37')]+'-';return db[_0x5177('0x57')][_0x5177('0x75')](function(_0x22da9d){return db[_0x5177('0x3a')]['update'](_0x397b75,{'where':{'id':_0x397b75['id']},'transaction':_0x22da9d})[_0x5177('0x34')](function(){return db['VoiceExtension'][_0x5177('0x30')]({'where':{'VoicePrefixId':_0x397b75['id']},'transaction':_0x22da9d})[_0x5177('0x34')](function(){return db['VoiceExtension'][_0x5177('0x5a')]({'where':{'id':_0x397b75[_0x5177('0x5b')]},'raw':!![]})[_0x5177('0x34')](function(_0x44ed82){return createVoicePrefixExtensions(_0x397b75,_0x44ed82,_0x22da9d);});});});})['then'](function(){return db[_0x5177('0x3a')][_0x5177('0x76')](_0x397b75['id']);})[_0x5177('0x34')](respondWithResult(_0x4fc289,null))[_0x5177('0x50')](handleError(_0x4fc289,null));};exports['addAgents']=function(_0x16b85b,_0x17456b,_0x3502dd){return db['VoicePrefix']['find']({'where':{'id':_0x16b85b[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x17456b,null))[_0x5177('0x34')](function(_0x170e25){if(_0x170e25){return _0x170e25[_0x5177('0x77')](_0x16b85b[_0x5177('0x58')][_0x5177('0x78')],_[_0x5177('0x79')](_0x16b85b[_0x5177('0x58')],['ids','id'])||{})['spread'](function(_0x597a84){for(var _0x290315=0x0;_0x290315<_0x16b85b['body'][_0x5177('0x78')][_0x5177('0x45')];_0x290315+=0x1){socket[_0x5177('0x7a')](_0x5177('0x7b'),{'UserId':Number(_0x16b85b[_0x5177('0x58')]['ids'][_0x290315]),'VoicePrefixId':Number(_0x16b85b[_0x5177('0x51')]['id'])});}return _0x597a84;});}})[_0x5177('0x34')](respondWithResult(_0x17456b,null))[_0x5177('0x50')](handleError(_0x17456b,null));};exports['removeAgents']=function(_0x3d845e,_0x484762,_0x3d95df){return db[_0x5177('0x3a')]['find']({'where':{'id':_0x3d845e[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x484762,null))['then'](function(_0x5f0141){if(_0x5f0141){return _0x5f0141[_0x5177('0x7c')](_0x3d845e['query'][_0x5177('0x78')])[_0x5177('0x34')](function(){if(_['isArray'](_0x3d845e[_0x5177('0x40')][_0x5177('0x78')])){for(var _0xcbbb73=0x0;_0xcbbb73<_0x3d845e[_0x5177('0x40')][_0x5177('0x78')][_0x5177('0x45')];_0xcbbb73+=0x1){socket[_0x5177('0x7a')](_0x5177('0x7d'),{'UserId':Number(_0x3d845e['query'][_0x5177('0x78')][_0xcbbb73]),'VoicePrefixId':Number(_0x3d845e['params']['id'])});}}else{socket[_0x5177('0x7a')](_0x5177('0x7d'),{'UserId':Number(_0x3d845e[_0x5177('0x40')][_0x5177('0x78')]),'VoicePrefixId':Number(_0x3d845e['params']['id'])});}});}})[_0x5177('0x34')](respondWithStatusCode(_0x484762,null))[_0x5177('0x50')](handleError(_0x484762,null));};exports['getAgents']=function(_0x17efe1,_0x30c2dc,_0x523012){var _0x33e1a6={};var _0x5f57bc={};var _0x3f1aad;var _0x558e04;return db['VoicePrefix']['findOne']({'where':{'id':_0x17efe1[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x30c2dc,null))[_0x5177('0x34')](function(_0x516d0b){if(_0x516d0b){_0x3f1aad=_0x516d0b;_0x5f57bc[_0x5177('0x3f')]=_[_0x5177('0x52')](db[_0x5177('0x7e')][_0x5177('0x3b')]);_0x5f57bc[_0x5177('0x40')]=_['keys'](_0x17efe1[_0x5177('0x40')]);_0x5f57bc[_0x5177('0x41')]=_['intersection'](_0x5f57bc[_0x5177('0x3f')],_0x5f57bc['query']);_0x33e1a6[_0x5177('0x43')]=_['intersection'](_0x5f57bc[_0x5177('0x3f')],qs[_0x5177('0x44')](_0x17efe1[_0x5177('0x40')][_0x5177('0x44')]));_0x33e1a6[_0x5177('0x43')]=_0x33e1a6[_0x5177('0x43')]['length']?_0x33e1a6['attributes']:_0x5f57bc[_0x5177('0x3f')];_0x33e1a6[_0x5177('0x46')]=qs[_0x5177('0x47')](_0x17efe1['query'][_0x5177('0x47')]);_0x33e1a6[_0x5177('0x48')]=qs['filters'](_[_0x5177('0x49')](_0x17efe1['query'],_0x5f57bc[_0x5177('0x41')]));if(_0x17efe1[_0x5177('0x40')][_0x5177('0x4c')]){_0x33e1a6['where']=_[_0x5177('0x4a')](_0x33e1a6['where'],{'$or':_[_0x5177('0x39')](_0x33e1a6[_0x5177('0x43')],function(_0x5a40f1){var _0x5a8146={};_0x5a8146[_0x5a40f1]={'$like':'%'+_0x17efe1['query'][_0x5177('0x4c')]+'%'};return _0x5a8146;})});}_0x33e1a6=_['merge']({},_0x33e1a6,_0x17efe1[_0x5177('0x4d')]);return _0x3f1aad[_0x5177('0x7f')](_0x33e1a6);}})[_0x5177('0x34')](function(_0x57adf4){if(_0x57adf4){_0x558e04=_0x57adf4['length'];if(!_0x17efe1['query'][_0x5177('0x80')](_0x5177('0x81'))){_0x33e1a6[_0x5177('0x28')]=qs['limit'](_0x17efe1[_0x5177('0x40')][_0x5177('0x28')]);_0x33e1a6['offset']=qs[_0x5177('0x26')](_0x17efe1['query'][_0x5177('0x26')]);}return _0x3f1aad['getAgents'](_0x33e1a6);}})['then'](function(_0x5910a8){if(_0x5910a8){return _0x5910a8?{'count':_0x558e04,'rows':_0x5910a8}:null;}})[_0x5177('0x34')](respondWithResult(_0x30c2dc,null))['catch'](handleError(_0x30c2dc,null));};exports[_0x5177('0x82')]=function(_0x450c61,_0x1d351b,_0x1372ad){var _0x3b4cab={};var _0x197377={};var _0x580d34;var _0x1e76cf;return db[_0x5177('0x3a')]['findOne']({'where':{'id':_0x450c61[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x1d351b,null))[_0x5177('0x34')](function(_0x51f7ce){if(_0x51f7ce){_0x580d34=_0x51f7ce;_0x197377['model']=_['keys'](db[_0x5177('0x83')][_0x5177('0x3b')]);_0x197377[_0x5177('0x40')]=_[_0x5177('0x52')](_0x450c61[_0x5177('0x40')]);_0x197377[_0x5177('0x41')]=_[_0x5177('0x42')](_0x197377[_0x5177('0x3f')],_0x197377[_0x5177('0x40')]);_0x3b4cab[_0x5177('0x43')]=_[_0x5177('0x42')](_0x197377[_0x5177('0x3f')],qs['fields'](_0x450c61[_0x5177('0x40')]['fields']));_0x3b4cab[_0x5177('0x43')]=_0x3b4cab[_0x5177('0x43')][_0x5177('0x45')]?_0x3b4cab['attributes']:_0x197377[_0x5177('0x3f')];_0x3b4cab[_0x5177('0x46')]=qs[_0x5177('0x47')](_0x450c61[_0x5177('0x40')][_0x5177('0x47')]);_0x3b4cab[_0x5177('0x48')]=qs[_0x5177('0x41')](_[_0x5177('0x49')](_0x450c61['query'],_0x197377['filters']));if(_0x450c61[_0x5177('0x40')]['filter']){_0x3b4cab[_0x5177('0x48')]=_[_0x5177('0x4a')](_0x3b4cab['where'],{'$or':_[_0x5177('0x39')](_0x3b4cab[_0x5177('0x43')],function(_0x54efd0){var _0x3e8a29={};_0x3e8a29[_0x54efd0]={'$like':'%'+_0x450c61[_0x5177('0x40')][_0x5177('0x4c')]+'%'};return _0x3e8a29;})});}_0x3b4cab=_[_0x5177('0x4a')]({},_0x3b4cab,_0x450c61[_0x5177('0x4d')]);return _0x580d34[_0x5177('0x82')](_0x3b4cab);}})[_0x5177('0x34')](function(_0x7a67fb){if(_0x7a67fb){_0x1e76cf=_0x7a67fb[_0x5177('0x45')];if(!_0x450c61[_0x5177('0x40')][_0x5177('0x80')](_0x5177('0x81'))){_0x3b4cab[_0x5177('0x28')]=qs['limit'](_0x450c61[_0x5177('0x40')][_0x5177('0x28')]);_0x3b4cab[_0x5177('0x26')]=qs['offset'](_0x450c61[_0x5177('0x40')][_0x5177('0x26')]);}return _0x580d34['getTeams'](_0x3b4cab);}})[_0x5177('0x34')](function(_0x5cbc48){if(_0x5cbc48){return _0x5cbc48?{'count':_0x1e76cf,'rows':_0x5cbc48}:null;}})['then'](respondWithResult(_0x1d351b,null))[_0x5177('0x50')](handleError(_0x1d351b,null));};exports[_0x5177('0x84')]=function(_0xd8f8f3,_0x40ded0,_0x356874){var _0x219a7c=_0xd8f8f3['body'][_0x5177('0x78')];var _0xcb831c;return db['Team'][_0x5177('0x4e')]({'where':{'id':_0x219a7c},'attributes':['id'],'include':[{'model':db[_0x5177('0x7e')],'as':_0x5177('0x85'),'attributes':['id',_0x5177('0x37'),_0x5177('0x86'),_0x5177('0x87'),_0x5177('0x88')],'raw':!![]}]})[_0x5177('0x34')](function(_0x4e60b2){if(_0x4e60b2){_0xcb831c=_0x4e60b2;var _0x193dbf=_['flatMap'](_0x4e60b2,function(_0xecd419){var _0x4970b3=_0xecd419[_0x5177('0x31')]({'plain':!![]});return _0x4970b3[_0x5177('0x85')];});return db[_0x5177('0x3a')][_0x5177('0x5a')]({'where':{'id':_0xd8f8f3['params']['id']}})[_0x5177('0x34')](function(_0x1b7c52){return db[_0x5177('0x57')][_0x5177('0x75')](function(_0x4e8c0c){return _0x1b7c52['addTeams'](_0x219a7c,{'transaction':_0x4e8c0c})['then'](function(){return BPromise['each'](_0xcb831c,function(_0xaafc9f){return db['TeamVoicePrefix'][_0x5177('0x89')]({'TeamId':_0xaafc9f['id'],'VoicePrefixId':_0xd8f8f3['params']['id']},{'transaction':_0x4e8c0c});});})[_0x5177('0x34')](function(){return BPromise['each'](_0x193dbf,function(_0x384af7){return db[_0x5177('0x8a')][_0x5177('0x8b')]({'where':{'UserId':_0x384af7['id'],'VoicePrefixId':_0xd8f8f3[_0x5177('0x51')]['id']},'transaction':_0x4e8c0c});});})[_0x5177('0x34')](function(){_0x193dbf[_0x5177('0x8c')](function(_0x3a9c65){socket[_0x5177('0x7a')](_0x5177('0x7b'),{'UserId':_0x3a9c65['id'],'VoicePrefixId':_0x1b7c52['id']});});});});});}})[_0x5177('0x34')](respondWithStatusCode(_0x40ded0,null))['catch'](handleError(_0x40ded0,null));};exports[_0x5177('0x8d')]=function(_0x13fa90,_0x3475c3,_0x5ed46a){return db[_0x5177('0x83')][_0x5177('0x4e')]({'where':{'id':_0x13fa90[_0x5177('0x40')][_0x5177('0x78')]},'attributes':['id'],'include':[{'model':db[_0x5177('0x7e')],'as':_0x5177('0x85'),'attributes':['id'],'raw':!![]}]})[_0x5177('0x34')](handleEntityNotFound(_0x3475c3,null))[_0x5177('0x34')](function(_0xb8f7de){var _0x1bc4cb=_[_0x5177('0x39')](_0xb8f7de,'id');var _0x4d29b7=[];var _0x1f8c26=[];var _0x365b68=squel[_0x5177('0x8e')]();_0x365b68['field'](_0x5177('0x8f'))[_0x5177('0x90')]('team_has_voice_prefixes','tq')[_0x5177('0x91')](_0x5177('0x92'),'ut',_0x5177('0x93'))['where'](_0x5177('0x94'),_0x13fa90[_0x5177('0x51')]['id']);for(var _0x3b8c79=0x0;_0x3b8c79<_0xb8f7de[_0x5177('0x45')];_0x3b8c79+=0x1){let _0x2a16ed=_0xb8f7de[_0x3b8c79];for(var _0x5d1909=0x0;_0x5d1909<_0x2a16ed['Agents'][_0x5177('0x45')];_0x5d1909+=0x1){let _0x61ead2=_0x2a16ed['Agents'][_0x5d1909];var _0x2ffb25=_0x365b68[_0x5177('0x95')]();_0x2ffb25['where'](_0x5177('0x96'),_0x61ead2['id']);_0x1f8c26[_0x5177('0x6c')](db['sequelize']['query'](_0x2ffb25[_0x5177('0x97')](),{'type':db['sequelize']['QueryTypes'][_0x5177('0x98')]})[_0x5177('0x34')](function(_0x58170f){if(_0x58170f[_0x5177('0x45')]===0x1){return _0x61ead2['id'];}else{var _0xdc5504=_[_0x5177('0x99')](_[_0x5177('0x39')](_0x58170f,_0x5177('0x9a')),function(_0x2fa026){return _['includes'](_0x1bc4cb,_0x2fa026);});if(_0xdc5504){return _0x61ead2['id'];}}}));}}return BPromise[_0x5177('0x9b')](_0x1f8c26)['then'](function(_0x55e914){_0x4d29b7=_(_0x4d29b7)[_0x5177('0x9c')](_0x55e914)[_0x5177('0x9d')]()[_0x5177('0x9e')]();return db['VoicePrefix'][_0x5177('0x5a')]({'where':{'id':_0x13fa90[_0x5177('0x51')]['id']}})[_0x5177('0x34')](function(_0x3873ca){return db[_0x5177('0x57')][_0x5177('0x75')](function(_0x10698d){return _0x3873ca[_0x5177('0x8d')](_0x13fa90[_0x5177('0x40')][_0x5177('0x78')],{'transaction':_0x10698d})[_0x5177('0x34')](function(){if(!_[_0x5177('0x9f')](_0x4d29b7)){return _0x3873ca['removeAgents'](_0x4d29b7,{'transaction':_0x10698d});}})[_0x5177('0x34')](function(){_0x4d29b7[_0x5177('0x8c')](function(_0x38f0f4){socket[_0x5177('0x7a')]('userVoicePrefix:remove',{'UserId':_0x38f0f4,'VoicePrefixId':_0x3873ca['id']});});});});});});})['then'](respondWithStatusCode(_0x3475c3,null))['catch'](handleError(_0x3475c3,null));};
\ No newline at end of file
index 71e6820..57a85cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35f2=['remove','emit','hasOwnProperty','hook','exports','events','VoicePrefix','setMaxListeners','save','update'];(function(_0x1e4f2d,_0x22e2bb){var _0xd05ce5=function(_0x4c7b43){while(--_0x4c7b43){_0x1e4f2d['push'](_0x1e4f2d['shift']());}};_0xd05ce5(++_0x22e2bb);}(_0x35f2,0x9b));var _0x235f=function(_0x174e97,_0x369685){_0x174e97=_0x174e97-0x0;var _0x424d07=_0x35f2[_0x174e97];return _0x424d07;};'use strict';var EventEmitter=require(_0x235f('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0x235f('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x235f('0x2')](0x0);var events={'afterCreate':_0x235f('0x3'),'afterUpdate':_0x235f('0x4'),'afterDestroy':_0x235f('0x5')};function emitEvent(_0x5312b6){return function(_0x4ca1b2,_0x1385c3,_0x2f21ee){VoicePrefixEvents[_0x235f('0x6')](_0x5312b6+':'+_0x4ca1b2['id'],_0x4ca1b2);VoicePrefixEvents[_0x235f('0x6')](_0x5312b6,_0x4ca1b2);_0x2f21ee(null);};}for(var e in events){if(events[_0x235f('0x7')](e)){var event=events[e];VoicePrefix[_0x235f('0x8')](e,emitEvent(event));}}module[_0x235f('0x9')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x7ccc=['save','update','emit','hasOwnProperty','hook','exports','events','VoicePrefix','setMaxListeners'];(function(_0x5e9af3,_0x56693f){var _0x11c461=function(_0x4589e1){while(--_0x4589e1){_0x5e9af3['push'](_0x5e9af3['shift']());}};_0x11c461(++_0x56693f);}(_0x7ccc,0x1d1));var _0xc7cc=function(_0x10bcb7,_0x518c99){_0x10bcb7=_0x10bcb7-0x0;var _0x3c1b3b=_0x7ccc[_0x10bcb7];return _0x3c1b3b;};'use strict';var EventEmitter=require(_0xc7cc('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0xc7cc('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xc7cc('0x2')](0x0);var events={'afterCreate':_0xc7cc('0x3'),'afterUpdate':_0xc7cc('0x4'),'afterDestroy':'remove'};function emitEvent(_0xa987ee){return function(_0x4b88d3,_0x3d7ecb,_0x33ab26){VoicePrefixEvents['emit'](_0xa987ee+':'+_0x4b88d3['id'],_0x4b88d3);VoicePrefixEvents[_0xc7cc('0x5')](_0xa987ee,_0x4b88d3);_0x33ab26(null);};}for(var e in events){if(events[_0xc7cc('0x6')](e)){var event=events[e];VoicePrefix[_0xc7cc('0x7')](e,emitEvent(event));}}module[_0xc7cc('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index 9809cab..ac0570c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ff=['path','rimraf','../../config/environment','./voicePrefix.attributes','exports','VoicePrefix','lodash','api','moment','bluebird'];(function(_0x59a03e,_0x5c9540){var _0x2a26f=function(_0x313b3f){while(--_0x313b3f){_0x59a03e['push'](_0x59a03e['shift']());}};_0x2a26f(++_0x5c9540);}(_0xc9ff,0x10a));var _0xfc9f=function(_0x220ed2,_0x92bf23){_0x220ed2=_0x220ed2-0x0;var _0x53a9e6=_0xc9ff[_0x220ed2];return _0x53a9e6;};'use strict';var _=require(_0xfc9f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xfc9f('0x1'));var moment=require(_0xfc9f('0x2'));var BPromise=require(_0xfc9f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfc9f('0x4'));var rimraf=require(_0xfc9f('0x5'));var config=require(_0xfc9f('0x6'));var attributes=require(_0xfc9f('0x7'));module[_0xfc9f('0x8')]=function(_0x311fea,_0x4f1038){return _0x311fea['define'](_0xfc9f('0x9'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x56f6=['rimraf','../../config/environment','./voicePrefix.attributes','exports','VoicePrefix','lodash','util','api','moment','bluebird','path'];(function(_0x4a4b9b,_0x497e74){var _0x70b7f8=function(_0x1187ae){while(--_0x1187ae){_0x4a4b9b['push'](_0x4a4b9b['shift']());}};_0x70b7f8(++_0x497e74);}(_0x56f6,0x89));var _0x656f=function(_0x5e544,_0x5e08dd){_0x5e544=_0x5e544-0x0;var _0x5d463c=_0x56f6[_0x5e544];return _0x5d463c;};'use strict';var _=require(_0x656f('0x0'));var util=require(_0x656f('0x1'));var logger=require('../../config/logger')(_0x656f('0x2'));var moment=require(_0x656f('0x3'));var BPromise=require(_0x656f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x656f('0x5'));var rimraf=require(_0x656f('0x6'));var config=require(_0x656f('0x7'));var attributes=require(_0x656f('0x8'));module[_0x656f('0x9')]=function(_0x560341,_0x5c1f18){return _0x560341['define'](_0x656f('0xa'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c196d3e..cffc718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3588=['register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./voicePrefix.socket'];(function(_0x4aa0f0,_0x4e5888){var _0x3ab4da=function(_0x4c6502){while(--_0x4c6502){_0x4aa0f0['push'](_0x4aa0f0['shift']());}};_0x3ab4da(++_0x4e5888);}(_0x3588,0x82));var _0x8358=function(_0x4f0159,_0xaf2d85){_0x4f0159=_0x4f0159-0x0;var _0x2b53a8=_0x3588[_0x4f0159];return _0x2b53a8;};'use strict';var _=require(_0x8358('0x0'));var util=require(_0x8358('0x1'));var moment=require(_0x8358('0x2'));var BPromise=require(_0x8358('0x3'));var rs=require(_0x8358('0x4'));var fs=require('fs');var Redis=require(_0x8358('0x5'));var db=require(_0x8358('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8358('0x7'))(_0x8358('0x8'));var config=require(_0x8358('0x9'));var jayson=require(_0x8358('0xa'));var client=jayson['client'][_0x8358('0xb')]({'port':0x232a});config[_0x8358('0xc')]=_['defaults'](config[_0x8358('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x8358('0xd'))(new Redis(config[_0x8358('0xc')]));require(_0x8358('0xe'))[_0x8358('0xf')](socket);function respondWithRpcPromise(_0x5e083f,_0xa70bd2,_0x577748){return new BPromise(function(_0x398ab0,_0x3a0bd9){return client[_0x8358('0x10')](_0x5e083f,_0x577748)[_0x8358('0x11')](function(_0x12fd8f){logger[_0x8358('0x12')](_0x8358('0x13'),_0xa70bd2,_0x8358('0x14'));logger[_0x8358('0x15')](_0x8358('0x16'),_0xa70bd2,_0x8358('0x14'),JSON[_0x8358('0x17')](_0x12fd8f));if(_0x12fd8f[_0x8358('0x18')]){if(_0x12fd8f[_0x8358('0x18')][_0x8358('0x19')]===0x1f4){logger[_0x8358('0x18')]('VoicePrefix,\x20%s,\x20%s',_0xa70bd2,_0x12fd8f['error'][_0x8358('0x1a')]);return _0x3a0bd9(_0x12fd8f['error'][_0x8358('0x1a')]);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0xa70bd2,_0x12fd8f['error'][_0x8358('0x1a')]);return _0x398ab0(_0x12fd8f[_0x8358('0x18')][_0x8358('0x1a')]);}else{logger[_0x8358('0x12')](_0x8358('0x13'),_0xa70bd2,_0x8358('0x14'));_0x398ab0(_0x12fd8f[_0x8358('0x1b')]['message']);}})[_0x8358('0x1c')](function(_0x3f2701){logger['error'](_0x8358('0x13'),_0xa70bd2,_0x3f2701);_0x3a0bd9(_0x3f2701);});});}
\ No newline at end of file
+var _0x7d14=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','./voicePrefix.socket','register','request','then','info','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','VoicePrefix,\x20%s,\x20%s','message'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0x7d14,0x6d));var _0x47d1=function(_0x12b4c1,_0x19f034){_0x12b4c1=_0x12b4c1-0x0;var _0x1329da=_0x7d14[_0x12b4c1];return _0x1329da;};'use strict';var _=require(_0x47d1('0x0'));var util=require(_0x47d1('0x1'));var moment=require('moment');var BPromise=require(_0x47d1('0x2'));var rs=require(_0x47d1('0x3'));var fs=require('fs');var Redis=require(_0x47d1('0x4'));var db=require(_0x47d1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x47d1('0x6'))(_0x47d1('0x7'));var config=require(_0x47d1('0x8'));var jayson=require(_0x47d1('0x9'));var client=jayson[_0x47d1('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x47d1('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x47d1('0xc'))(new Redis(config[_0x47d1('0xb')]));require(_0x47d1('0xd'))[_0x47d1('0xe')](socket);function respondWithRpcPromise(_0x3ced5c,_0x46f06d,_0x15ce33){return new BPromise(function(_0x198c7c,_0x37f6dd){return client[_0x47d1('0xf')](_0x3ced5c,_0x15ce33)[_0x47d1('0x10')](function(_0x2f7ab9){logger[_0x47d1('0x11')]('VoicePrefix,\x20%s,\x20%s',_0x46f06d,_0x47d1('0x12'));logger[_0x47d1('0x13')](_0x47d1('0x14'),_0x46f06d,_0x47d1('0x12'),JSON[_0x47d1('0x15')](_0x2f7ab9));if(_0x2f7ab9[_0x47d1('0x16')]){if(_0x2f7ab9[_0x47d1('0x16')][_0x47d1('0x17')]===0x1f4){logger[_0x47d1('0x16')](_0x47d1('0x18'),_0x46f06d,_0x2f7ab9[_0x47d1('0x16')][_0x47d1('0x19')]);return _0x37f6dd(_0x2f7ab9[_0x47d1('0x16')][_0x47d1('0x19')]);}logger[_0x47d1('0x16')](_0x47d1('0x18'),_0x46f06d,_0x2f7ab9['error']['message']);return _0x198c7c(_0x2f7ab9[_0x47d1('0x16')][_0x47d1('0x19')]);}else{logger['info'](_0x47d1('0x18'),_0x46f06d,'request\x20sent');_0x198c7c(_0x2f7ab9['result'][_0x47d1('0x19')]);}})[_0x47d1('0x1a')](function(_0x1bf004){logger[_0x47d1('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x46f06d,_0x1bf004);_0x37f6dd(_0x1bf004);});});}
\ No newline at end of file
index 080f47a..61455c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f3e=['removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove','update'];(function(_0x53eac0,_0x5dfecb){var _0x4ad5c5=function(_0x1ddb4f){while(--_0x1ddb4f){_0x53eac0['push'](_0x53eac0['shift']());}};_0x4ad5c5(++_0x5dfecb);}(_0x9f3e,0x1c4));var _0xe9f3=function(_0x5d15fb,_0x3a0949){_0x5d15fb=_0x5d15fb-0x0;var _0x8bc163=_0x9f3e[_0x5d15fb];return _0x8bc163;};'use strict';var VoicePrefixEvents=require(_0xe9f3('0x0'));var events=[_0xe9f3('0x1'),_0xe9f3('0x2'),_0xe9f3('0x3')];function createListener(_0xf82db9,_0x59bb34){return function(_0x597538){_0x59bb34['emit'](_0xf82db9,_0x597538);};}function removeListener(_0x1ea33c,_0x4bc414){return function(){VoicePrefixEvents[_0xe9f3('0x4')](_0x1ea33c,_0x4bc414);};}exports[_0xe9f3('0x5')]=function(_0x46f926){for(var _0x3693ef=0x0,_0x46e25d=events[_0xe9f3('0x6')];_0x3693ef<_0x46e25d;_0x3693ef++){var _0x407123=events[_0x3693ef];var _0x4014b1=createListener(_0xe9f3('0x7')+_0x407123,_0x46f926);VoicePrefixEvents['on'](_0x407123,_0x4014b1);}};
\ No newline at end of file
+var _0x99e9=['update','emit','removeListener','length','voicePrefix:','save','remove'];(function(_0x34b48c,_0xe97afa){var _0x3b9957=function(_0x33095d){while(--_0x33095d){_0x34b48c['push'](_0x34b48c['shift']());}};_0x3b9957(++_0xe97afa);}(_0x99e9,0xb4));var _0x999e=function(_0x4695e2,_0x3d5f15){_0x4695e2=_0x4695e2-0x0;var _0x160563=_0x99e9[_0x4695e2];return _0x160563;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x999e('0x0'),_0x999e('0x1'),_0x999e('0x2')];function createListener(_0x1c6fa0,_0x4aaeb4){return function(_0x19a818){_0x4aaeb4[_0x999e('0x3')](_0x1c6fa0,_0x19a818);};}function removeListener(_0x3aac27,_0x4e2112){return function(){VoicePrefixEvents[_0x999e('0x4')](_0x3aac27,_0x4e2112);};}exports['register']=function(_0x25421f){for(var _0x1bda0a=0x0,_0x100330=events[_0x999e('0x5')];_0x1bda0a<_0x100330;_0x1bda0a++){var _0x5c1c17=events[_0x1bda0a];var _0x46aeae=createListener(_0x999e('0x6')+_0x5c1c17,_0x25421f);VoicePrefixEvents['on'](_0x5c1c17,_0x46aeae);}};
\ No newline at end of file
index 60fe01f..665f336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x37c22c,_0x28a70d){var _0x119d79=function(_0x243a13){while(--_0x243a13){_0x37c22c['push'](_0x37c22c['shift']());}};_0x119d79(++_0x28a70d);}(_0xb10b,0x12a));var _0xbb10=function(_0x3f6b1b,_0x58d3d6){_0x3f6b1b=_0x3f6b1b-0x0;var _0x4a3d2b=_0xb10b[_0x3f6b1b];return _0x4a3d2b;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x4ba380,_0x259bee){var _0x4b111b=function(_0x2bf227){while(--_0x2bf227){_0x4ba380['push'](_0x4ba380['shift']());}};_0x4b111b(++_0x259bee);}(_0xb10b,0x12a));var _0xbb10=function(_0xec919c,_0x45c528){_0xec919c=_0xec919c-0x0;var _0x516869=_0xb10b[_0xec919c];return _0x516869;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
index a2b41d0..6df1530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea1=['wrandom','rrordered','rrmemory','getDataValue','type','dialMethod','booked','roundrobin','predictive','power','INTEGER','yes','all','once','setDataValue','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','acw','Active/Disactive\x20Campaign','progressive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','Active/Disactive\x20AMD','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','exports','STRING','name','ENUM','inbound','outbound','default','ringall','leastrecent','fewestcalls','random'];(function(_0x145f26,_0x5b5422){var _0x435fa5=function(_0x3a01c6){while(--_0x3a01c6){_0x145f26['push'](_0x145f26['shift']());}};_0x435fa5(++_0x5b5422);}(_0xcea1,0x1b1));var _0x1cea=function(_0x32c97a,_0x29b6fc){_0x32c97a=_0x32c97a-0x0;var _0x5de34d=_0xcea1[_0x32c97a];return _0x5de34d;};'use strict';var Sequelize=require('sequelize');module[_0x1cea('0x0')]={'name':{'type':Sequelize[_0x1cea('0x1')],'allowNull':![],'unique':_0x1cea('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x4'),_0x1cea('0x5')),'allowNull':![],'defaultValue':_0x1cea('0x4')},'musiconhold':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':_0x1cea('0x6')},'announce':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0x1cea('0x3')]('rr',_0x1cea('0x7'),_0x1cea('0x8'),_0x1cea('0x9'),_0x1cea('0xa'),'rrmemory','linear',_0x1cea('0xb'),_0x1cea('0xc')),'allowNull':![],'defaultValue':_0x1cea('0x7'),'set':function(_0x3b9ecb){this['setDataValue']('strategy',_0x3b9ecb?_0x3b9ecb:_0x1cea('0xd'));},'get':function(){var _0x169b98=this[_0x1cea('0xe')](_0x1cea('0xf'));var _0x215ba2=this['getDataValue'](_0x1cea('0x10'));var _0x5e48a9=this[_0x1cea('0xe')]('strategy');if(_0x169b98===_0x1cea('0x4')){return _0x5e48a9;}if(_0x215ba2===_0x1cea('0x11')&&_0x5e48a9===_0x1cea('0xd')||_0x215ba2===_0x1cea('0x11')&&_0x5e48a9===_0x1cea('0x12')){return _0x5e48a9;}if(_0x215ba2==='progressive'||_0x215ba2===_0x1cea('0x13')||_0x215ba2===_0x1cea('0x14')){return _0x5e48a9;}return null;}},'servicelevel':{'type':Sequelize[_0x1cea('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x1cea('0x15')](0xb)},'timeout':{'type':Sequelize[_0x1cea('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x1cea('0x1')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x1cea('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no',_0x1cea('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x1cea('0x3')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x1cea('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x1cea('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x1cea('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x1cea('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x1cea('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x1cea('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defaultValue':_0x1cea('0x16')},'announce_holdtime':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no',_0x1cea('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x1cea('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x1cea('0x1')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x1cea('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x1cea('0x1')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x1cea('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x1cea('0x1')]},'queue_less_than':{'type':Sequelize[_0x1cea('0x1')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x46d486){this[_0x1cea('0x19')](_0x1cea('0x1a'),_0x46d486?_0x46d486['join'](','):[]);},'get':function(){return this[_0x1cea('0xe')](_0x1cea('0x1a'))?this[_0x1cea('0xe')](_0x1cea('0x1a'))[_0x1cea('0x1b')](','):[];}},'joinempty':{'type':Sequelize['STRING'],'defaultValue':_0x1cea('0x16'),'set':function(_0x738e27){this[_0x1cea('0x19')](_0x1cea('0x1c'),_0x738e27?_0x738e27[_0x1cea('0x1d')](','):undefined);},'get':function(){return this[_0x1cea('0xe')](_0x1cea('0x1c'))?this[_0x1cea('0xe')](_0x1cea('0x1c'))[_0x1cea('0x1b')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':'no','set':function(_0x44a2a9){this['setDataValue']('leavewhenempty',_0x44a2a9?_0x44a2a9[_0x1cea('0x1d')](','):undefined);},'get':function(){return this['getDataValue'](_0x1cea('0x1e'))?this['getDataValue'](_0x1cea('0x1e'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x1cea('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x1cea('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x1cea('0x1')]},'description':{'type':Sequelize[_0x1cea('0x1')]},'acw':{'type':Sequelize[_0x1cea('0x1f')],'defaultValue':0x0,'set':function(_0x10dd10){this['setDataValue'](_0x1cea('0x20'),_0x10dd10);if(_0x10dd10){if(this[_0x1cea('0xe')]('wrapuptime')<0x2){this['setDataValue']('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x1cea('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x1cea('0x21')},'dialMethod':{'type':Sequelize[_0x1cea('0x3')]('preview',_0x1cea('0x22'),'power',_0x1cea('0x13'),_0x1cea('0x11')),'defaultValue':_0x1cea('0x22'),'comment':_0x1cea('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x1cea('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x1cea('0x25')},'dialLimitQueue':{'type':Sequelize[_0x1cea('0x15')](0x4)[_0x1cea('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x1cea('0x26')},'dialPowerLevel':{'type':Sequelize[_0x1cea('0x27')](0x2)[_0x1cea('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x1cea('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x29'),_0x1cea('0x2a')),'defaultValue':_0x1cea('0x2a'),'comment':_0x1cea('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x1cea('0x27')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x1cea('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x1cea('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize[_0x1cea('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x1cea('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x1cea('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x2e')},'dialQueueOptions':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':_0x1cea('0x2f'),'comment':_0x1cea('0x30')},'dialQueueTimeout':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x31')},'dialQueueProject':{'type':Sequelize[_0x1cea('0x1')],'comment':_0x1cea('0x32')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x33')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x1cea('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1cea('0x34')},'dialBusyMaxRetry':{'type':Sequelize[_0x1cea('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x35')},'dialBusyRetryFrequency':{'type':Sequelize[_0x1cea('0x15')](0x5)[_0x1cea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x1cea('0x24')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x1cea('0x15')](0x5)[_0x1cea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1cea('0x36')},'dialGlobalMaxRetry':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x1cea('0x37')},'dialTimezone':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0x1cea('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x1cea('0x38'),_0x1cea('0x39'),'onlyIfOpen'),'defaultValue':_0x1cea('0x38')},'dialAMDActive':{'type':Sequelize[_0x1cea('0x1f')],'defaultValue':0x0,'comment':_0x1cea('0x3a')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x1cea('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x1cea('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x1cea('0x15')](0x9)[_0x1cea('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x1cea('0x3b')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x1cea('0x15')](0x9)[_0x1cea('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x1cea('0x3c')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x1cea('0x3d')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x1cea('0x15')](0x9)[_0x1cea('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x1cea('0x3e')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x1cea('0x15')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x1cea('0x15')](0x5)[_0x1cea('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x1cea('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x1cea('0x3f')},'dialRecallInQueue':{'type':Sequelize[_0x1cea('0x1f')],'defaultValue':0x0,'comment':_0x1cea('0x40')},'dialOrderByScheduledAt':{'type':Sequelize[_0x1cea('0x3')](_0x1cea('0x41'),_0x1cea('0x42')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x1cea('0x1')],'comment':_0x1cea('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x1cea('0x1f')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x1cea('0x1f')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x43')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x1cea('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x44')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x45')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x1cea('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x1cea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1cea('0x46')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x1cea('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1cea('0x47')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x1cea('0x48')},'mandatoryDisposition':{'type':Sequelize[_0x1cea('0x1f')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xc02b55){if(!_0xc02b55)this['setDataValue'](_0x1cea('0x49'),null);this['setDataValue']('mandatoryDisposition',_0xc02b55);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x1cea('0x15')](0x3)[_0x1cea('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x1cea('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x1cea('0x1f')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x587b=['never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','exports','STRING','name','ENUM','inbound','outbound','ringall','fewestcalls','random','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue','dialMethod','booked','roundrobin','progressive','power','INTEGER','yes','all','once','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always'];(function(_0x36a744,_0x139d52){var _0x39803a=function(_0x255305){while(--_0x255305){_0x36a744['push'](_0x36a744['shift']());}};_0x39803a(++_0x139d52);}(_0x587b,0x14f));var _0xb587=function(_0x3f192f,_0x1c5bbc){_0x3f192f=_0x3f192f-0x0;var _0x2581fe=_0x587b[_0x3f192f];return _0x2581fe;};'use strict';var Sequelize=require('sequelize');module[_0xb587('0x0')]={'name':{'type':Sequelize[_0xb587('0x1')],'allowNull':![],'unique':_0xb587('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x4'),_0xb587('0x5')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0xb587('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0xb587('0x3')]('rr',_0xb587('0x6'),'leastrecent',_0xb587('0x7'),_0xb587('0x8'),_0xb587('0x9'),'linear',_0xb587('0xa'),_0xb587('0xb')),'allowNull':![],'defaultValue':_0xb587('0x6'),'set':function(_0x63d277){this[_0xb587('0xc')](_0xb587('0xd'),_0x63d277?_0x63d277:_0xb587('0x9'));},'get':function(){var _0x105723=this[_0xb587('0xe')]('type');var _0x5cb337=this['getDataValue'](_0xb587('0xf'));var _0x63f46a=this[_0xb587('0xe')](_0xb587('0xd'));if(_0x105723===_0xb587('0x4')){return _0x63f46a;}if(_0x5cb337===_0xb587('0x10')&&_0x63f46a===_0xb587('0x9')||_0x5cb337===_0xb587('0x10')&&_0x63f46a===_0xb587('0x11')){return _0x63f46a;}if(_0x5cb337===_0xb587('0x12')||_0x5cb337==='predictive'||_0x5cb337===_0xb587('0x13')){return _0x63f46a;}return null;}},'servicelevel':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xb587('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xb587('0x14')](0xb)},'timeout':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xb587('0x1')]},'weight':{'type':Sequelize[_0xb587('0x14')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defaultValue':_0xb587('0x15')},'autopause':{'type':Sequelize['ENUM'](_0xb587('0x15'),'no',_0xb587('0x16')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xb587('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xb587('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xb587('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xb587('0x3')]('yes','no'),'defaultValue':_0xb587('0x15')},'announce_holdtime':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no',_0xb587('0x17')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xb587('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xb587('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xb587('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xb587('0x1')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xb587('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xb587('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xb587('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xb587('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xb587('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize[_0xb587('0x1')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x1df2b7){this[_0xb587('0xc')](_0xb587('0x18'),_0x1df2b7?_0x1df2b7['join'](','):[]);},'get':function(){return this[_0xb587('0xe')]('periodic_announce')?this['getDataValue'](_0xb587('0x18'))[_0xb587('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0xb587('0x1')],'defaultValue':_0xb587('0x15'),'set':function(_0x24b7cf){this['setDataValue'](_0xb587('0x1a'),_0x24b7cf?_0x24b7cf[_0xb587('0x1b')](','):undefined);},'get':function(){return this[_0xb587('0xe')](_0xb587('0x1a'))?this['getDataValue'](_0xb587('0x1a'))[_0xb587('0x19')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x4d315b){this[_0xb587('0xc')](_0xb587('0x1c'),_0x4d315b?_0x4d315b[_0xb587('0x1b')](','):undefined);},'get':function(){return this[_0xb587('0xe')](_0xb587('0x1c'))?this['getDataValue'](_0xb587('0x1c'))[_0xb587('0x19')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0xb587('0x15'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0xb587('0x15'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x15'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xb587('0x1')]},'description':{'type':Sequelize[_0xb587('0x1')]},'acw':{'type':Sequelize[_0xb587('0x1d')],'defaultValue':0x0,'set':function(_0xc712c8){this['setDataValue'](_0xb587('0x1e'),_0xc712c8);if(_0xc712c8){if(this[_0xb587('0xe')]('wrapuptime')<0x2){this[_0xb587('0xc')](_0xb587('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xb587('0x14')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xb587('0x1d')],'defaultValue':0x0,'comment':_0xb587('0x20')},'dialMethod':{'type':Sequelize['ENUM'](_0xb587('0x21'),_0xb587('0x12'),_0xb587('0x13'),'predictive',_0xb587('0x10')),'defaultValue':_0xb587('0x12'),'comment':_0xb587('0x22')},'dialLimitChannel':{'type':Sequelize[_0xb587('0x14')](0x4)[_0xb587('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0xb587('0x14')](0x4)[_0xb587('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb587('0x24')},'dialPowerLevel':{'type':Sequelize[_0xb587('0x25')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xb587('0x26')},'dialPredictiveOptimization':{'type':Sequelize[_0xb587('0x3')]('agentBusyFactor',_0xb587('0x27')),'defaultValue':_0xb587('0x27'),'comment':_0xb587('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xb587('0x25')](0x2)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xb587('0x29')},'dialPredictiveInterval':{'type':Sequelize[_0xb587('0x14')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xb587('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0xb587('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xb587('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x2b')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xb587('0x2c'),'comment':_0xb587('0x2d')},'dialQueueTimeout':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xb587('0x1')],'comment':_0xb587('0x2e')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x2f')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xb587('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0xb587('0x14')](0x5)[_0xb587('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb587('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'defaultValue':0x3,'comment':_0xb587('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xb587('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb587('0x33')},'dialGlobalMaxRetry':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xb587('0x34')},'dialTimezone':{'type':Sequelize[_0xb587('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xb587('0x1')],'defaultValue':_0xb587('0x35')},'dialPrefix':{'type':Sequelize[_0xb587('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x36'),_0xb587('0x37'),_0xb587('0x38')),'defaultValue':_0xb587('0x36')},'dialAMDActive':{'type':Sequelize[_0xb587('0x1d')],'defaultValue':0x0,'comment':_0xb587('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0xb587('0x14')](0x9)[_0xb587('0x23')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xb587('0x23')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xb587('0x3a')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xb587('0x14')](0x9)[_0xb587('0x23')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xb587('0x3b')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xb587('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb587('0x3c')},'dialAMDMinWordLength':{'type':Sequelize[_0xb587('0x14')](0x9)[_0xb587('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xb587('0x3d')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xb587('0x14')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xb587('0x14')](0x9)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xb587('0x14')](0x5)[_0xb587('0x23')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xb587('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xb587('0x14')](0x9)[_0xb587('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb587('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0xb587('0x14')](0x5)[_0xb587('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xb587('0x40')},'dialRecallInQueue':{'type':Sequelize[_0xb587('0x1d')],'defaultValue':0x0,'comment':_0xb587('0x41')},'dialOrderByScheduledAt':{'type':Sequelize[_0xb587('0x3')](_0xb587('0x42'),'ASC'),'defaultValue':_0xb587('0x42')},'dialQueueProject2':{'type':Sequelize[_0xb587('0x1')],'comment':_0xb587('0x2e')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xb587('0x1d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xb587('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb587('0x43')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x44')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xb587('0x14')](0x5)[_0xb587('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x45')},'dialDropRetryFrequency':{'type':Sequelize[_0xb587('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb587('0x46')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x47')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xb587('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x48')},'dialMachineRetryFrequency':{'type':Sequelize[_0xb587('0x14')](0x5)[_0xb587('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xb587('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb587('0x49')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xb587('0x14')](0x5)[_0xb587('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb587('0x4a')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb587('0x14')],'allowNull':!![],'comment':_0xb587('0x4b')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xb587('0x4c'),'set':function(_0x1b0560){if(!_0x1b0560)this[_0xb587('0xc')]('mandatoryDispositionPauseId',null);this[_0xb587('0xc')](_0xb587('0x4d'),_0x1b0560);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xb587('0x14')](0x3)[_0xb587('0x23')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xb587('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 424d678..5e0974d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9da2=['getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','into','cm_hopper','fromQuery','phone','ContactId','ListId','createdAt','NOW()','scheduledAt','CmListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','VoiceQueueId\x20=\x20?','onlyIfOpen','removeLists','getBlackLists','addBlackLists','insert','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','sendStatus','status','end','limit','undefined','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','inbound','QueueCampaigns','outbound','filter','ignore','map','value','find','type','UserProfileResource','error','name','index','VoiceQueue','rawAttributes','fieldName','key','model','keys','filters','intersection','attributes','query','fields','length','hasOwnProperty','order','sort','where','merge','options','includeAll','findAll','catch','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','VoiceQueues','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','include','omit','updatedAt','body','UserProfileSection','getHoppers','findOne','CmHopper','nolimit','rows','pick','VoiceQueueId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','online','voicePause','forEach','penalty','Agents','sequelize','transaction','upsert','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','emit','removeTeams','ids','select','field','join','user_has_teams','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','isEmpty','addAgents','spread','userVoiceQueue:save','interface','format','removeAgents','isArray','userVoiceQueue:remove'];(function(_0x18ae6d,_0x255d00){var _0x3deb94=function(_0x44b04c){while(--_0x44b04c){_0x18ae6d['push'](_0x18ae6d['shift']());}};_0x3deb94(++_0x255d00);}(_0x9da2,0x19b));var _0x29da=function(_0x3ac097,_0x16df8d){_0x3ac097=_0x3ac097-0x0;var _0x42e3d3=_0x9da2[_0x3ac097];return _0x42e3d3;};'use strict';var emlformat=require(_0x29da('0x0'));var rimraf=require(_0x29da('0x1'));var zipdir=require(_0x29da('0x2'));var jsonpatch=require(_0x29da('0x3'));var rp=require(_0x29da('0x4'));var moment=require(_0x29da('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x29da('0x6'));var path=require(_0x29da('0x7'));var sox=require(_0x29da('0x8'));var csv=require(_0x29da('0x9'));var ejs=require(_0x29da('0xa'));var fs=require('fs');var fs_extra=require(_0x29da('0xb'));var _=require(_0x29da('0xc'));var squel=require(_0x29da('0xd'));var crypto=require(_0x29da('0xe'));var jsforce=require(_0x29da('0xf'));var deskjs=require(_0x29da('0x10'));var toCsv=require('to-csv');var querystring=require(_0x29da('0x11'));var Papa=require(_0x29da('0x12'));var Redis=require('ioredis');var authService=require(_0x29da('0x13'));var qs=require(_0x29da('0x14'));var as=require(_0x29da('0x15'));var hardwareService=require(_0x29da('0x16'));var logger=require(_0x29da('0x17'))(_0x29da('0x18'));var utils=require(_0x29da('0x19'));var config=require(_0x29da('0x1a'));var licenseUtil=require(_0x29da('0x1b'));var db=require(_0x29da('0x1c'))['db'];config[_0x29da('0x1d')]=_['defaults'](config[_0x29da('0x1d')],{'host':_0x29da('0x1e'),'port':0x18eb});var socket=require(_0x29da('0x1f'))(new Redis(config[_0x29da('0x1d')]));require(_0x29da('0x20'))[_0x29da('0x21')](socket);function respondWithStatusCode(_0x5256c9,_0x121a7c){_0x121a7c=_0x121a7c||0xcc;return function(_0x91962f){if(_0x91962f){return _0x5256c9[_0x29da('0x22')](_0x121a7c);}return _0x5256c9[_0x29da('0x23')](_0x121a7c)[_0x29da('0x24')]();};}function respondWithResult(_0x54a7b9,_0xd51d7f){_0xd51d7f=_0xd51d7f||0xc8;return function(_0x3a3dad){if(_0x3a3dad){return _0x54a7b9[_0x29da('0x23')](_0xd51d7f)['json'](_0x3a3dad);}};}function respondWithFilteredResult(_0x261abf,_0x43f4da){return function(_0x525317){if(_0x525317){var _0x1b2be8=typeof _0x43f4da['offset']==='undefined'&&typeof _0x43f4da[_0x29da('0x25')]===_0x29da('0x26');var _0x1fecdd=_0x525317[_0x29da('0x27')];var _0x2c0a25=_0x1b2be8?0x0:_0x43f4da[_0x29da('0x28')];var _0x31277f=_0x1b2be8?_0x525317[_0x29da('0x27')]:_0x43f4da[_0x29da('0x28')]+_0x43f4da[_0x29da('0x25')];var _0x46a980;if(_0x31277f>=_0x1fecdd){_0x31277f=_0x1fecdd;_0x46a980=0xc8;}else{_0x46a980=0xce;}_0x261abf[_0x29da('0x23')](_0x46a980);return _0x261abf['set'](_0x29da('0x29'),_0x2c0a25+'-'+_0x31277f+'/'+_0x1fecdd)[_0x29da('0x2a')](_0x525317);}return null;};}function patchUpdates(_0x28feb5){return function(_0x44a9a){try{jsonpatch[_0x29da('0x2b')](_0x44a9a,_0x28feb5,!![]);}catch(_0x41d007){return BPromise[_0x29da('0x2c')](_0x41d007);}return _0x44a9a[_0x29da('0x2d')]();};}function saveUpdates(_0x573b2f,_0x150f62){return function(_0x44cad5){if(_0x44cad5){return _0x44cad5[_0x29da('0x2e')](_0x573b2f)[_0x29da('0x2f')](function(_0x2755f3){return _0x2755f3;});}return null;};}function removeEntity(_0x3b1643,_0x468b37){return function(_0x124964){if(_0x124964){return _0x124964[_0x29da('0x30')]()[_0x29da('0x2f')](function(){var _0x2a0ef4=_0x124964['get']({'plain':!![]});var _0x4f832c=[{'name':'VoiceQueues','value':_0x29da('0x31'),'ignore':![]},{'name':_0x29da('0x32'),'value':_0x29da('0x33'),'ignore':![]}];var _0x103217=_(_0x4f832c)[_0x29da('0x34')](_0x29da('0x35'))[_0x29da('0x36')]('value')[_0x29da('0x37')]();if(_['includes'](_0x103217,_0x2a0ef4['type'])){return;}var _0x5d1fc6=_[_0x29da('0x38')](_0x4f832c,[_0x29da('0x37'),_0x2a0ef4[_0x29da('0x39')]])['name'];return db[_0x29da('0x3a')][_0x29da('0x30')]({'where':{'type':_0x5d1fc6,'resourceId':_0x2a0ef4['id']}})['then'](function(){return _0x124964;});})[_0x29da('0x2f')](function(){_0x3b1643[_0x29da('0x23')](0xcc)[_0x29da('0x24')]();});}};}function handleEntityNotFound(_0x42a287,_0x193ff3){return function(_0x334e09){if(!_0x334e09){_0x42a287[_0x29da('0x22')](0x194);}return _0x334e09;};}function handleError(_0xca7175,_0x4675e0){_0x4675e0=_0x4675e0||0x1f4;return function(_0x585448){logger[_0x29da('0x3b')](_0x585448['stack']);if(_0x585448[_0x29da('0x3c')]){delete _0x585448['name'];}_0xca7175[_0x29da('0x23')](_0x4675e0)['send'](_0x585448);};}exports[_0x29da('0x3d')]=function(_0x2f16ca,_0x42cc55){var _0xa969c9={},_0x5105b8={},_0x247c39={'count':0x0,'rows':[]};var _0x1d215e=_['map'](db[_0x29da('0x3e')][_0x29da('0x3f')],function(_0x1acb97){return{'name':_0x1acb97[_0x29da('0x40')],'type':_0x1acb97['type'][_0x29da('0x41')]};});_0x5105b8[_0x29da('0x42')]=_[_0x29da('0x36')](_0x1d215e,'name');_0x5105b8['query']=_[_0x29da('0x43')](_0x2f16ca['query']);_0x5105b8[_0x29da('0x44')]=_[_0x29da('0x45')](_0x5105b8[_0x29da('0x42')],_0x5105b8['query']);_0xa969c9[_0x29da('0x46')]=_[_0x29da('0x45')](_0x5105b8[_0x29da('0x42')],qs['fields'](_0x2f16ca[_0x29da('0x47')][_0x29da('0x48')]));_0xa969c9['attributes']=_0xa969c9[_0x29da('0x46')][_0x29da('0x49')]?_0xa969c9['attributes']:_0x5105b8[_0x29da('0x42')];if(!_0x2f16ca[_0x29da('0x47')][_0x29da('0x4a')]('nolimit')){_0xa969c9[_0x29da('0x25')]=qs[_0x29da('0x25')](_0x2f16ca[_0x29da('0x47')][_0x29da('0x25')]);_0xa969c9[_0x29da('0x28')]=qs[_0x29da('0x28')](_0x2f16ca['query'][_0x29da('0x28')]);}_0xa969c9[_0x29da('0x4b')]=qs[_0x29da('0x4c')](_0x2f16ca[_0x29da('0x47')]['sort']);_0xa969c9[_0x29da('0x4d')]=qs[_0x29da('0x44')](_['pick'](_0x2f16ca[_0x29da('0x47')],_0x5105b8[_0x29da('0x44')]),_0x1d215e);if(_0x2f16ca[_0x29da('0x47')][_0x29da('0x34')]){_0xa969c9[_0x29da('0x4d')]=_[_0x29da('0x4e')](_0xa969c9[_0x29da('0x4d')],{'$or':_[_0x29da('0x36')](_0x1d215e,function(_0x312850){if(_0x312850[_0x29da('0x39')]!=='VIRTUAL'){var _0x4b84c9={};_0x4b84c9[_0x312850[_0x29da('0x3c')]]={'$like':'%'+_0x2f16ca[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0x4b84c9;}})});}_0xa969c9=_[_0x29da('0x4e')]({},_0xa969c9,_0x2f16ca[_0x29da('0x4f')]);var _0x402b94={'where':_0xa969c9[_0x29da('0x4d')]};return db[_0x29da('0x3e')][_0x29da('0x27')](_0x402b94)[_0x29da('0x2f')](function(_0x25deda){_0x247c39[_0x29da('0x27')]=_0x25deda;if(_0x2f16ca[_0x29da('0x47')][_0x29da('0x50')]){_0xa969c9['include']=[{'all':!![]}];}return db['VoiceQueue'][_0x29da('0x51')](_0xa969c9);})[_0x29da('0x2f')](function(_0x2aeb63){_0x247c39['rows']=_0x2aeb63;return _0x247c39;})[_0x29da('0x2f')](respondWithFilteredResult(_0x42cc55,_0xa969c9))[_0x29da('0x52')](handleError(_0x42cc55,null));};exports[_0x29da('0x53')]=function(_0x20546d,_0x598cde){var _0x1a9223={'raw':![],'where':{'id':_0x20546d[_0x29da('0x54')]['id']}},_0x4585e6={};_0x4585e6[_0x29da('0x42')]=_[_0x29da('0x43')](db[_0x29da('0x3e')][_0x29da('0x3f')]);_0x4585e6[_0x29da('0x47')]=_[_0x29da('0x43')](_0x20546d['query']);_0x4585e6[_0x29da('0x44')]=_[_0x29da('0x45')](_0x4585e6[_0x29da('0x42')],_0x4585e6[_0x29da('0x47')]);_0x1a9223[_0x29da('0x46')]=_['intersection'](_0x4585e6[_0x29da('0x42')],qs[_0x29da('0x48')](_0x20546d[_0x29da('0x47')][_0x29da('0x48')]));_0x1a9223[_0x29da('0x46')]=_0x1a9223['attributes'][_0x29da('0x49')]?_0x1a9223[_0x29da('0x46')]:_0x4585e6[_0x29da('0x42')];if(_0x20546d[_0x29da('0x47')]['includeAll']){_0x1a9223['include']=[{'all':!![]}];}_0x1a9223=_[_0x29da('0x4e')]({},_0x1a9223,_0x20546d[_0x29da('0x4f')]);return db['VoiceQueue'][_0x29da('0x38')](_0x1a9223)[_0x29da('0x2f')](handleEntityNotFound(_0x598cde,null))['then'](respondWithResult(_0x598cde,null))[_0x29da('0x52')](handleError(_0x598cde,null));};exports[_0x29da('0x55')]=function(_0x222558,_0x22bb5e){return db[_0x29da('0x3e')][_0x29da('0x55')](_0x222558['body'],{})[_0x29da('0x2f')](function(_0x3b850f){var _0x4b3c21=_0x222558[_0x29da('0x56')]['get']({'plain':!![]});if(!_0x4b3c21)throw new Error(_0x29da('0x57'));if(_0x4b3c21[_0x29da('0x58')]===_0x29da('0x56')){var _0x423254=_0x3b850f[_0x29da('0x59')]({'plain':!![]});var _0x5dc93a=[{'name':_0x29da('0x5a'),'value':_0x29da('0x31')},{'name':_0x29da('0x32'),'value':_0x29da('0x33')}];var _0x396970=_['find'](_0x5dc93a,[_0x29da('0x37'),_0x423254[_0x29da('0x39')]])[_0x29da('0x3c')];return db['UserProfileSection'][_0x29da('0x38')]({'where':{'name':_0x396970,'userProfileId':_0x4b3c21[_0x29da('0x5b')]},'raw':!![]})[_0x29da('0x2f')](function(_0x54bd7d){if(_0x54bd7d&&_0x54bd7d['autoAssociation']===0x0){return db[_0x29da('0x3a')][_0x29da('0x55')]({'name':_0x423254[_0x29da('0x3c')],'resourceId':_0x423254['id'],'type':_0x54bd7d[_0x29da('0x3c')],'sectionId':_0x54bd7d['id']},{})[_0x29da('0x2f')](function(){return _0x3b850f;});}else{return _0x3b850f;}})[_0x29da('0x52')](function(_0x424edd){logger[_0x29da('0x3b')](_0x29da('0x5c'),_0x424edd);throw _0x424edd;});}return _0x3b850f;})[_0x29da('0x2f')](respondWithResult(_0x22bb5e,0xc9))['catch'](handleError(_0x22bb5e,null));};exports['clone']=function(_0xc97519,_0x4ef689){var _0x4bbc75={'where':{'id':_0xc97519[_0x29da('0x54')]['id']}},_0x2ced4c={};_0x2ced4c[_0x29da('0x42')]=_[_0x29da('0x43')](db[_0x29da('0x3e')][_0x29da('0x3f')]);_0x4bbc75[_0x29da('0x46')]=_[_0x29da('0x45')](_0x2ced4c['model'],qs[_0x29da('0x48')](_0xc97519[_0x29da('0x47')][_0x29da('0x48')]));_0x4bbc75[_0x29da('0x46')]=_0x4bbc75['attributes'][_0x29da('0x49')]?_0x4bbc75['attributes']:_0x2ced4c[_0x29da('0x42')];if(_0xc97519[_0x29da('0x47')][_0x29da('0x50')]){_0x4bbc75[_0x29da('0x5d')]=[{'all':!![]}];}_0x4bbc75=_[_0x29da('0x4e')]({},_0x4bbc75,_0xc97519[_0x29da('0x4f')]);return db[_0x29da('0x3e')]['find'](_0x4bbc75)['then'](handleEntityNotFound(_0x4ef689,null))[_0x29da('0x2f')](function(_0x3d8b08){if(_0x3d8b08){var _0xd3f02a=_0x3d8b08['get']({'plain':!![]});_0xd3f02a=qs[_0x29da('0x5e')](_0xd3f02a,['id','createdAt',_0x29da('0x5f')]);_0xc97519[_0x29da('0x60')]=_['omit'](_0xc97519[_0x29da('0x60')],['id','createdAt',_0x29da('0x5f')]);return db[_0x29da('0x3e')][_0x29da('0x55')](_[_0x29da('0x4e')](_0xd3f02a,_0xc97519[_0x29da('0x60')]),{'include':_0xc97519['query']['includeAll']?[{'all':!![]}]:undefined})[_0x29da('0x2f')](function(_0x4c6086){var _0x26109d=_0xc97519[_0x29da('0x56')][_0x29da('0x59')]({'plain':!![]});if(!_0x26109d)throw new Error(_0x29da('0x57'));if(_0x26109d[_0x29da('0x58')]===_0x29da('0x56')){var _0x5905de=_0x4c6086['get']({'plain':!![]});var _0x4e53eb=[{'name':_0x29da('0x5a'),'value':_0x29da('0x31')},{'name':_0x29da('0x32'),'value':'outbound'}];var _0x395f26=_['find'](_0x4e53eb,['value',_0x5905de['type']])['name'];return db[_0x29da('0x61')]['find']({'where':{'name':_0x395f26,'userProfileId':_0x26109d[_0x29da('0x5b')]},'raw':!![]})[_0x29da('0x2f')](function(_0x2942e9){if(_0x2942e9&&_0x2942e9['autoAssociation']===0x0){return db[_0x29da('0x3a')][_0x29da('0x55')]({'name':_0x5905de[_0x29da('0x3c')],'resourceId':_0x5905de['id'],'type':_0x2942e9[_0x29da('0x3c')],'sectionId':_0x2942e9['id']},{})['then'](function(){return _0x4c6086;});}else{return _0x4c6086;}})[_0x29da('0x52')](function(_0x5c8767){logger['error'](_0x29da('0x5c'),_0x5c8767);throw _0x5c8767;});}return _0x4c6086;});}})[_0x29da('0x2f')](respondWithResult(_0x4ef689,0xc9))[_0x29da('0x52')](handleError(_0x4ef689,null));};exports[_0x29da('0x2e')]=function(_0xfc6eb2,_0x313353){if(_0xfc6eb2[_0x29da('0x60')]['id']){delete _0xfc6eb2[_0x29da('0x60')]['id'];}return db[_0x29da('0x3e')][_0x29da('0x38')]({'where':{'id':_0xfc6eb2[_0x29da('0x54')]['id']}})['then'](handleEntityNotFound(_0x313353,null))['then'](saveUpdates(_0xfc6eb2[_0x29da('0x60')],null))[_0x29da('0x2f')](respondWithResult(_0x313353,null))[_0x29da('0x52')](handleError(_0x313353,null));};exports[_0x29da('0x30')]=function(_0x34d2ea,_0x362e0e){return db[_0x29da('0x3e')][_0x29da('0x38')]({'where':{'id':_0x34d2ea['params']['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x362e0e,null))[_0x29da('0x2f')](removeEntity(_0x362e0e,null))[_0x29da('0x52')](handleError(_0x362e0e,null));};exports[_0x29da('0x62')]=function(_0x4791ff,_0x21641d,_0x3c6b60){var _0x381d48={'raw':![],'where':{}};var _0x221e4d={};var _0x22e4af={'count':0x0,'rows':[]};return db[_0x29da('0x3e')][_0x29da('0x63')]({'where':{'id':_0x4791ff[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x21641d,null))[_0x29da('0x2f')](function(_0xf4f078){if(_0xf4f078){_0x221e4d[_0x29da('0x42')]=_[_0x29da('0x43')](db[_0x29da('0x64')]['rawAttributes']);_0x221e4d[_0x29da('0x47')]=_[_0x29da('0x43')](_0x4791ff[_0x29da('0x47')]);_0x221e4d[_0x29da('0x44')]=_[_0x29da('0x45')](_0x221e4d[_0x29da('0x42')],_0x221e4d['query']);_0x381d48[_0x29da('0x46')]=_[_0x29da('0x45')](_0x221e4d[_0x29da('0x42')],qs[_0x29da('0x48')](_0x4791ff[_0x29da('0x47')][_0x29da('0x48')]));_0x381d48[_0x29da('0x46')]=_0x381d48[_0x29da('0x46')][_0x29da('0x49')]?_0x381d48['attributes']:_0x221e4d[_0x29da('0x42')];if(!_0x4791ff[_0x29da('0x47')][_0x29da('0x4a')](_0x29da('0x65'))){_0x381d48[_0x29da('0x25')]=qs[_0x29da('0x25')](_0x4791ff['query'][_0x29da('0x25')]);_0x381d48[_0x29da('0x28')]=qs['offset'](_0x4791ff[_0x29da('0x47')][_0x29da('0x28')]);}_0x381d48[_0x29da('0x4b')]=qs[_0x29da('0x4c')](_0x4791ff[_0x29da('0x47')][_0x29da('0x4c')]);_0x381d48[_0x29da('0x4d')]=qs[_0x29da('0x44')](_['pick'](_0x4791ff[_0x29da('0x47')],_0x221e4d[_0x29da('0x44')]));_0x381d48[_0x29da('0x4d')]['VoiceQueueId']=_0xf4f078['id'];if(_0x4791ff[_0x29da('0x47')]['filter']){_0x381d48[_0x29da('0x4d')]=_['merge'](_0x381d48[_0x29da('0x4d')],{'$or':_[_0x29da('0x36')](_0x381d48[_0x29da('0x46')],function(_0x4db3ec){var _0x4dab5d={};_0x4dab5d[_0x4db3ec]={'$like':'%'+_0x4791ff[_0x29da('0x47')]['filter']+'%'};return _0x4dab5d;})});}_0x381d48=_[_0x29da('0x4e')]({},_0x381d48,_0x4791ff[_0x29da('0x4f')]);return db['CmHopper']['count']({'where':_0x381d48[_0x29da('0x4d')]})[_0x29da('0x2f')](function(_0x296683){_0x22e4af[_0x29da('0x27')]=_0x296683;if(_0x4791ff[_0x29da('0x47')]['includeAll']){_0x381d48[_0x29da('0x5d')]=[{'all':!![]}];}return db[_0x29da('0x64')][_0x29da('0x51')](_0x381d48);})['then'](function(_0x593320){_0x22e4af[_0x29da('0x66')]=_0x593320;return _0x22e4af;});}})['then'](respondWithFilteredResult(_0x21641d,_0x381d48))[_0x29da('0x52')](handleError(_0x21641d,null));};exports['getHopperHistories']=function(_0x9126e5,_0x2258c8,_0x16c707){var _0x19019c={'raw':!![],'where':{}};var _0x22dc12={};var _0x44048a={'count':0x0,'rows':[]};return db[_0x29da('0x3e')][_0x29da('0x63')]({'where':{'id':_0x9126e5[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x2258c8,null))[_0x29da('0x2f')](function(_0x53a8b1){if(_0x53a8b1){_0x22dc12[_0x29da('0x42')]=_['keys'](db['CmHopperHistory'][_0x29da('0x3f')]);_0x22dc12['query']=_['keys'](_0x9126e5['query']);_0x22dc12[_0x29da('0x44')]=_['intersection'](_0x22dc12[_0x29da('0x42')],_0x22dc12[_0x29da('0x47')]);_0x19019c[_0x29da('0x46')]=_[_0x29da('0x45')](_0x22dc12['model'],qs['fields'](_0x9126e5[_0x29da('0x47')][_0x29da('0x48')]));_0x19019c[_0x29da('0x46')]=_0x19019c['attributes'][_0x29da('0x49')]?_0x19019c[_0x29da('0x46')]:_0x22dc12[_0x29da('0x42')];if(!_0x9126e5['query'][_0x29da('0x4a')](_0x29da('0x65'))){_0x19019c[_0x29da('0x25')]=qs['limit'](_0x9126e5['query'][_0x29da('0x25')]);_0x19019c['offset']=qs[_0x29da('0x28')](_0x9126e5['query'][_0x29da('0x28')]);}_0x19019c['order']=qs[_0x29da('0x4c')](_0x9126e5[_0x29da('0x47')][_0x29da('0x4c')]);_0x19019c[_0x29da('0x4d')]=qs['filters'](_[_0x29da('0x67')](_0x9126e5['query'],_0x22dc12[_0x29da('0x44')]));_0x19019c['where'][_0x29da('0x68')]=_0x53a8b1['id'];if(_0x9126e5[_0x29da('0x47')][_0x29da('0x34')]){_0x19019c['where']=_[_0x29da('0x4e')](_0x19019c[_0x29da('0x4d')],{'$or':_[_0x29da('0x36')](_0x19019c[_0x29da('0x46')],function(_0x407cae){var _0x3f3486={};_0x3f3486[_0x407cae]={'$like':'%'+_0x9126e5[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0x3f3486;})});}_0x19019c=_[_0x29da('0x4e')]({},_0x19019c,_0x9126e5[_0x29da('0x4f')]);return db[_0x29da('0x69')][_0x29da('0x27')]({'where':_0x19019c['where']})[_0x29da('0x2f')](function(_0x45f8ef){_0x44048a[_0x29da('0x27')]=_0x45f8ef;if(_0x9126e5[_0x29da('0x47')][_0x29da('0x50')]){_0x19019c['include']=[{'all':!![]}];}return db[_0x29da('0x69')][_0x29da('0x51')](_0x19019c);})[_0x29da('0x2f')](function(_0x4329c7){_0x44048a[_0x29da('0x66')]=_0x4329c7;return _0x44048a;});}})['then'](respondWithFilteredResult(_0x2258c8,_0x19019c))[_0x29da('0x52')](handleError(_0x2258c8,null));};exports[_0x29da('0x6a')]=function(_0x5192eb,_0x5d1660,_0xa688d3){var _0x314293={'raw':!![],'where':{}};var _0x217c79={};var _0x245067={'count':0x0,'rows':[]};return db[_0x29da('0x3e')]['findOne']({'where':{'id':_0x5192eb[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x5d1660,null))[_0x29da('0x2f')](function(_0x2398fa){if(_0x2398fa){_0x217c79[_0x29da('0x42')]=_[_0x29da('0x43')](db[_0x29da('0x6b')][_0x29da('0x3f')]);_0x217c79[_0x29da('0x47')]=_['keys'](_0x5192eb[_0x29da('0x47')]);_0x217c79['filters']=_['intersection'](_0x217c79['model'],_0x217c79[_0x29da('0x47')]);_0x314293[_0x29da('0x46')]=_[_0x29da('0x45')](_0x217c79[_0x29da('0x42')],qs[_0x29da('0x48')](_0x5192eb[_0x29da('0x47')]['fields']));_0x314293[_0x29da('0x46')]=_0x314293[_0x29da('0x46')][_0x29da('0x49')]?_0x314293[_0x29da('0x46')]:_0x217c79['model'];if(!_0x5192eb[_0x29da('0x47')][_0x29da('0x4a')](_0x29da('0x65'))){_0x314293[_0x29da('0x25')]=qs[_0x29da('0x25')](_0x5192eb[_0x29da('0x47')][_0x29da('0x25')]);_0x314293[_0x29da('0x28')]=qs['offset'](_0x5192eb[_0x29da('0x47')][_0x29da('0x28')]);}_0x314293['order']=qs[_0x29da('0x4c')](_0x5192eb[_0x29da('0x47')][_0x29da('0x4c')]);_0x314293['where']=qs[_0x29da('0x44')](_[_0x29da('0x67')](_0x5192eb[_0x29da('0x47')],_0x217c79['filters']));_0x314293[_0x29da('0x4d')][_0x29da('0x68')]=_0x2398fa['id'];if(_0x5192eb[_0x29da('0x47')]['filter']){_0x314293[_0x29da('0x4d')]=_['merge'](_0x314293['where'],{'$or':_[_0x29da('0x36')](_0x314293[_0x29da('0x46')],function(_0x85c863){var _0x4ce28d={};_0x4ce28d[_0x85c863]={'$like':'%'+_0x5192eb[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0x4ce28d;})});}_0x314293=_[_0x29da('0x4e')]({},_0x314293,_0x5192eb[_0x29da('0x4f')]);return db[_0x29da('0x6b')]['count']({'where':_0x314293[_0x29da('0x4d')]})[_0x29da('0x2f')](function(_0x251cda){_0x245067['count']=_0x251cda;if(_0x5192eb['query'][_0x29da('0x50')]){_0x314293[_0x29da('0x5d')]=[{'all':!![]}];}return db[_0x29da('0x6b')][_0x29da('0x51')](_0x314293);})[_0x29da('0x2f')](function(_0x5df732){_0x245067['rows']=_0x5df732;return _0x245067;});}})[_0x29da('0x2f')](respondWithFilteredResult(_0x5d1660,_0x314293))[_0x29da('0x52')](handleError(_0x5d1660,null));};exports[_0x29da('0x6c')]=function(_0xe94516,_0x89bd66,_0x1cb309){var _0x944508={'raw':!![],'where':{}};var _0xec6192={};var _0x4a5b60={'count':0x0,'rows':[]};return db[_0x29da('0x3e')]['findOne']({'where':{'id':_0xe94516[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x89bd66,null))[_0x29da('0x2f')](function(_0x11a1f8){if(_0x11a1f8){_0xec6192['model']=_['keys'](db[_0x29da('0x6d')][_0x29da('0x3f')]);_0xec6192['query']=_[_0x29da('0x43')](_0xe94516[_0x29da('0x47')]);_0xec6192[_0x29da('0x44')]=_[_0x29da('0x45')](_0xec6192[_0x29da('0x42')],_0xec6192['query']);_0x944508[_0x29da('0x46')]=_[_0x29da('0x45')](_0xec6192[_0x29da('0x42')],qs['fields'](_0xe94516[_0x29da('0x47')][_0x29da('0x48')]));_0x944508['attributes']=_0x944508['attributes'][_0x29da('0x49')]?_0x944508[_0x29da('0x46')]:_0xec6192[_0x29da('0x42')];if(!_0xe94516[_0x29da('0x47')][_0x29da('0x4a')](_0x29da('0x65'))){_0x944508[_0x29da('0x25')]=qs[_0x29da('0x25')](_0xe94516[_0x29da('0x47')]['limit']);_0x944508[_0x29da('0x28')]=qs[_0x29da('0x28')](_0xe94516[_0x29da('0x47')]['offset']);}_0x944508[_0x29da('0x4b')]=qs[_0x29da('0x4c')](_0xe94516[_0x29da('0x47')][_0x29da('0x4c')]);_0x944508[_0x29da('0x4d')]=qs[_0x29da('0x44')](_[_0x29da('0x67')](_0xe94516[_0x29da('0x47')],_0xec6192['filters']));_0x944508[_0x29da('0x4d')][_0x29da('0x68')]=_0x11a1f8['id'];if(_0xe94516[_0x29da('0x47')][_0x29da('0x34')]){_0x944508[_0x29da('0x4d')]=_[_0x29da('0x4e')](_0x944508['where'],{'$or':_[_0x29da('0x36')](_0x944508[_0x29da('0x46')],function(_0x344078){var _0x17834e={};_0x17834e[_0x344078]={'$like':'%'+_0xe94516[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0x17834e;})});}_0x944508=_[_0x29da('0x4e')]({},_0x944508,_0xe94516[_0x29da('0x4f')]);return db[_0x29da('0x6d')][_0x29da('0x27')]({'where':_0x944508[_0x29da('0x4d')]})[_0x29da('0x2f')](function(_0x22f14c){_0x4a5b60[_0x29da('0x27')]=_0x22f14c;if(_0xe94516['query'][_0x29da('0x50')]){_0x944508[_0x29da('0x5d')]=[{'all':!![]}];}return db[_0x29da('0x6d')][_0x29da('0x51')](_0x944508);})[_0x29da('0x2f')](function(_0x49df1a){_0x4a5b60[_0x29da('0x66')]=_0x49df1a;return _0x4a5b60;});}})[_0x29da('0x2f')](respondWithFilteredResult(_0x89bd66,_0x944508))[_0x29da('0x52')](handleError(_0x89bd66,null));};exports[_0x29da('0x6e')]=function(_0x1f157f,_0x1d4747,_0x53d9ef){var _0x34a86c={};var _0x2217f0={};var _0x5db44f;var _0x4e2bbf;return db[_0x29da('0x3e')][_0x29da('0x63')]({'where':{'id':_0x1f157f[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x1d4747,null))['then'](function(_0x16f9f9){if(_0x16f9f9){_0x5db44f=_0x16f9f9;_0x2217f0['model']=_[_0x29da('0x43')](db[_0x29da('0x6f')]['rawAttributes']);_0x2217f0['query']=_[_0x29da('0x43')](_0x1f157f['query']);_0x2217f0[_0x29da('0x44')]=_[_0x29da('0x45')](_0x2217f0[_0x29da('0x42')],_0x2217f0[_0x29da('0x47')]);_0x34a86c['attributes']=_[_0x29da('0x45')](_0x2217f0[_0x29da('0x42')],qs[_0x29da('0x48')](_0x1f157f[_0x29da('0x47')][_0x29da('0x48')]));_0x34a86c[_0x29da('0x46')]=_0x34a86c[_0x29da('0x46')][_0x29da('0x49')]?_0x34a86c[_0x29da('0x46')]:_0x2217f0[_0x29da('0x42')];_0x34a86c[_0x29da('0x4b')]=qs[_0x29da('0x4c')](_0x1f157f['query'][_0x29da('0x4c')]);_0x34a86c['where']=qs[_0x29da('0x44')](_[_0x29da('0x67')](_0x1f157f[_0x29da('0x47')],_0x2217f0[_0x29da('0x44')]));if(_0x1f157f['query'][_0x29da('0x34')]){_0x34a86c[_0x29da('0x4d')]=_[_0x29da('0x4e')](_0x34a86c[_0x29da('0x4d')],{'$or':_[_0x29da('0x36')](_0x34a86c[_0x29da('0x46')],function(_0x294eed){var _0x5f8097={};_0x5f8097[_0x294eed]={'$like':'%'+_0x1f157f[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0x5f8097;})});}_0x34a86c=_['merge']({},_0x34a86c,_0x1f157f[_0x29da('0x4f')]);return _0x5db44f['getTeams'](_0x34a86c);}})[_0x29da('0x2f')](function(_0x37f0eb){if(_0x37f0eb){_0x4e2bbf=_0x37f0eb[_0x29da('0x49')];if(!_0x1f157f['query'][_0x29da('0x4a')](_0x29da('0x65'))){_0x34a86c['limit']=qs['limit'](_0x1f157f[_0x29da('0x47')][_0x29da('0x25')]);_0x34a86c['offset']=qs[_0x29da('0x28')](_0x1f157f['query'][_0x29da('0x28')]);}return _0x5db44f[_0x29da('0x6e')](_0x34a86c);}})['then'](function(_0x254973){if(_0x254973){return _0x254973?{'count':_0x4e2bbf,'rows':_0x254973}:null;}})['then'](respondWithResult(_0x1d4747,null))[_0x29da('0x52')](handleError(_0x1d4747,null));};exports[_0x29da('0x70')]=function(_0x2a3b49,_0x58cfaf,_0x55cbb1){var _0x2a1bb1=_0x2a3b49[_0x29da('0x60')][_0x29da('0x71')];var _0x596675=_[_0x29da('0x36')](_0x2a1bb1,'id');return db[_0x29da('0x6f')][_0x29da('0x51')]({'where':{'id':_0x596675},'attributes':['id'],'include':[{'model':db[_0x29da('0x72')],'as':'Agents','attributes':['id',_0x29da('0x3c'),_0x29da('0x73'),_0x29da('0x74'),'interface'],'raw':!![]}]})[_0x29da('0x2f')](function(_0x120485){if(_0x120485){var _0x3748fc=_['flatMap'](_0x120485,function(_0x3270ff){var _0x4686d0=_0x3270ff['get']({'plain':!![]});_0x4686d0['Agents'][_0x29da('0x75')](function(_0x2b8e1f){_0x2b8e1f[_0x29da('0x76')]=_[_0x29da('0x38')](_0x2a1bb1,{'id':_0x4686d0['id']})[_0x29da('0x76')];});return _0x4686d0[_0x29da('0x77')];});return db[_0x29da('0x3e')][_0x29da('0x38')]({'where':{'id':_0x2a3b49[_0x29da('0x54')]['id']}})['then'](function(_0x661e8f){return db[_0x29da('0x78')][_0x29da('0x79')](function(_0x113d00){return _0x661e8f[_0x29da('0x70')](_0x596675,{'transaction':_0x113d00})[_0x29da('0x2f')](function(){return BPromise['each'](_0x2a1bb1,function(_0x44251d){return db['TeamVoiceQueue'][_0x29da('0x7a')]({'TeamId':_0x44251d['id'],'VoiceQueueId':_0x2a3b49[_0x29da('0x54')]['id'],'penalty':_0x44251d[_0x29da('0x76')]},{'transaction':_0x113d00});});})[_0x29da('0x2f')](function(){return BPromise[_0x29da('0x7b')](_0x3748fc,function(_0x339ebd){return db[_0x29da('0x7c')][_0x29da('0x7d')]({'where':{'UserId':_0x339ebd['id'],'VoiceQueueId':_0x2a3b49[_0x29da('0x54')]['id']},'defaults':{'penalty':_0x339ebd[_0x29da('0x76')]},'transaction':_0x113d00});});})[_0x29da('0x2f')](function(){return BPromise[_0x29da('0x7b')](_[_0x29da('0x34')](_0x3748fc,{'online':!![]}),function(_0x536c01){return db[_0x29da('0x7e')][_0x29da('0x7a')]({'membername':_0x536c01[_0x29da('0x3c')],'UserId':_0x536c01['id'],'queue_name':_0x661e8f[_0x29da('0x3c')],'VoiceQueueId':_0x661e8f['id'],'interface':_[_0x29da('0x7f')](_0x536c01['interface'])?util['format'](_0x29da('0x80'),_0x536c01[_0x29da('0x3c')]):_0x536c01['interface'],'paused':_0x536c01[_0x29da('0x74')]||![],'penalty':_0x536c01[_0x29da('0x76')]},{'transaction':_0x113d00});});})['then'](function(){_0x3748fc[_0x29da('0x75')](function(_0x40bd6a){socket[_0x29da('0x81')]('userVoiceQueue:save',{'UserId':_0x40bd6a['id'],'VoiceQueueId':_0x661e8f['id']});});});});});}})[_0x29da('0x2f')](respondWithStatusCode(_0x58cfaf,null))[_0x29da('0x52')](handleError(_0x58cfaf,null));};exports[_0x29da('0x82')]=function(_0xbf9a78,_0x1eb04b,_0x2cacbe){return db[_0x29da('0x6f')][_0x29da('0x51')]({'where':{'id':_0xbf9a78[_0x29da('0x47')][_0x29da('0x83')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x29da('0x77'),'attributes':['id'],'raw':!![]}]})[_0x29da('0x2f')](handleEntityNotFound(_0x1eb04b,null))[_0x29da('0x2f')](function(_0x5f1d2b){var _0x38a627=_[_0x29da('0x36')](_0x5f1d2b,'id');var _0x53b767=[];var _0x2a3240=[];var _0x5e1b93=squel[_0x29da('0x84')]();_0x5e1b93[_0x29da('0x85')]('tq.TeamId')['from']('team_has_voice_queues','tq')[_0x29da('0x86')](_0x29da('0x87'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x29da('0x4d')]('VoiceQueueId\x20=\x20?',_0xbf9a78[_0x29da('0x54')]['id']);for(var _0x505bab=0x0;_0x505bab<_0x5f1d2b[_0x29da('0x49')];_0x505bab+=0x1){let _0x4e6fac=_0x5f1d2b[_0x505bab];for(var _0x12c305=0x0;_0x12c305<_0x4e6fac['Agents'][_0x29da('0x49')];_0x12c305+=0x1){let _0x3fcc8f=_0x4e6fac[_0x29da('0x77')][_0x12c305];var _0x25ddf6=_0x5e1b93[_0x29da('0x88')]();_0x25ddf6['where'](_0x29da('0x89'),_0x3fcc8f['id']);_0x2a3240[_0x29da('0x8a')](db['sequelize'][_0x29da('0x47')](_0x25ddf6[_0x29da('0x8b')](),{'type':db['sequelize'][_0x29da('0x8c')][_0x29da('0x8d')]})[_0x29da('0x2f')](function(_0x101b7f){if(_0x101b7f['length']===0x1){return _0x3fcc8f['id'];}else{var _0x2bf1fc=_[_0x29da('0x8e')](_[_0x29da('0x36')](_0x101b7f,_0x29da('0x8f')),function(_0x32a210){return _[_0x29da('0x90')](_0x38a627,_0x32a210);});if(_0x2bf1fc){return _0x3fcc8f['id'];}}}));}}return BPromise[_0x29da('0x91')](_0x2a3240)[_0x29da('0x2f')](function(_0x36cf4d){_0x53b767=_(_0x53b767)[_0x29da('0x92')](_0x36cf4d)['compact']()[_0x29da('0x37')]();return db['VoiceQueue'][_0x29da('0x38')]({'where':{'id':_0xbf9a78['params']['id']}})[_0x29da('0x2f')](function(_0x58b967){return db['sequelize'][_0x29da('0x79')](function(_0x508b64){return _0x58b967[_0x29da('0x82')](_0xbf9a78[_0x29da('0x47')][_0x29da('0x83')],{'transaction':_0x508b64})[_0x29da('0x2f')](function(){if(!_[_0x29da('0x93')](_0x53b767)){return _0x58b967['removeAgents'](_0x53b767,{'transaction':_0x508b64})[_0x29da('0x2f')](function(){return db['UserVoiceQueueRt'][_0x29da('0x30')]({'where':{'VoiceQueueId':_0xbf9a78['params']['id'],'UserId':_0x53b767},'transaction':_0x508b64});});}})[_0x29da('0x2f')](function(){_0x53b767[_0x29da('0x75')](function(_0x542f08){socket[_0x29da('0x81')]('userVoiceQueue:remove',{'UserId':_0x542f08,'VoiceQueueId':_0x58b967['id']});});});});});});})[_0x29da('0x2f')](respondWithStatusCode(_0x1eb04b,null))[_0x29da('0x52')](handleError(_0x1eb04b,null));};exports[_0x29da('0x94')]=function(_0x47784f,_0x3caf6f,_0x428ba1){var _0x1beb6a,_0x403172;return db[_0x29da('0x3e')]['find']({'where':{'id':_0x47784f[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x3caf6f,null))[_0x29da('0x2f')](function(_0x16a7b1){if(_0x16a7b1){_0x403172=_0x16a7b1;return _0x16a7b1['addAgents'](_0x47784f[_0x29da('0x60')][_0x29da('0x83')],_['omit'](_0x47784f[_0x29da('0x60')],[_0x29da('0x83'),'id'])||{})[_0x29da('0x95')](function(_0xe3dbf2){for(var _0x4795e4=0x0;_0x4795e4<_0x47784f['body'][_0x29da('0x83')][_0x29da('0x49')];_0x4795e4+=0x1){socket[_0x29da('0x81')](_0x29da('0x96'),{'UserId':Number(_0x47784f[_0x29da('0x60')][_0x29da('0x83')][_0x4795e4]),'VoiceQueueId':Number(_0x47784f[_0x29da('0x54')]['id'])});}return _0xe3dbf2;});}})[_0x29da('0x2f')](function(_0x498ca2){_0x1beb6a=_0x498ca2||[];if(_0x403172){return db[_0x29da('0x72')][_0x29da('0x51')]({'where':{'id':_0x47784f[_0x29da('0x60')][_0x29da('0x83')]},'attributes':['id',_0x29da('0x3c'),'online',_0x29da('0x74'),_0x29da('0x97')],'raw':!![]});}})[_0x29da('0x2f')](function(_0x55752c){if(!_['isEmpty'](_0x55752c)){var _0x21d816=[];for(var _0x325e71=0x0;_0x325e71<_0x55752c[_0x29da('0x49')];_0x325e71++){if(_0x55752c[_0x325e71]['online']){_0x21d816[_0x29da('0x8a')](db[_0x29da('0x7e')][_0x29da('0x7a')]({'membername':_0x55752c[_0x325e71][_0x29da('0x3c')],'UserId':_0x55752c[_0x325e71]['id'],'queue_name':_0x403172[_0x29da('0x3c')],'VoiceQueueId':_0x403172['id'],'interface':_[_0x29da('0x7f')](_0x55752c[_0x325e71][_0x29da('0x97')])?util[_0x29da('0x98')](_0x29da('0x80'),_0x55752c[_0x325e71][_0x29da('0x3c')]):_0x55752c[_0x325e71][_0x29da('0x97')],'paused':_0x55752c[_0x325e71][_0x29da('0x74')]||![],'penalty':_0x47784f[_0x29da('0x60')][_0x29da('0x76')]||0x0}));}}return BPromise[_0x29da('0x91')](_0x21d816);}})[_0x29da('0x2f')](function(){return _0x1beb6a;})[_0x29da('0x2f')](respondWithResult(_0x3caf6f,null))[_0x29da('0x52')](handleError(_0x3caf6f,null));};exports[_0x29da('0x99')]=function(_0x5e67d6,_0x30a656,_0x4ad0ac){return db[_0x29da('0x3e')]['find']({'where':{'id':_0x5e67d6[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x30a656,null))[_0x29da('0x2f')](function(_0x57ea26){if(_0x57ea26){return _0x57ea26[_0x29da('0x99')](_0x5e67d6[_0x29da('0x47')][_0x29da('0x83')])[_0x29da('0x2f')](function(){if(_[_0x29da('0x9a')](_0x5e67d6[_0x29da('0x47')][_0x29da('0x83')])){for(var _0x4d6f4c=0x0;_0x4d6f4c<_0x5e67d6[_0x29da('0x47')]['ids']['length'];_0x4d6f4c+=0x1){socket[_0x29da('0x81')](_0x29da('0x9b'),{'UserId':Number(_0x5e67d6[_0x29da('0x47')][_0x29da('0x83')][_0x4d6f4c]),'VoiceQueueId':Number(_0x5e67d6['params']['id'])});}}else{socket[_0x29da('0x81')](_0x29da('0x9b'),{'UserId':Number(_0x5e67d6[_0x29da('0x47')][_0x29da('0x83')]),'VoiceQueueId':Number(_0x5e67d6[_0x29da('0x54')]['id'])});}});}})[_0x29da('0x2f')](function(_0x58b8de){return db[_0x29da('0x7e')][_0x29da('0x30')]({'where':{'VoiceQueueId':_0x5e67d6[_0x29da('0x54')]['id'],'UserId':_0x5e67d6[_0x29da('0x47')][_0x29da('0x83')]}})[_0x29da('0x2f')](function(){return _0x58b8de;});})[_0x29da('0x2f')](respondWithStatusCode(_0x30a656,null))[_0x29da('0x52')](handleError(_0x30a656,null));};exports[_0x29da('0x9c')]=function(_0x8ff588,_0x2a89d1,_0x3e414c){var _0x1d3a3e={};var _0x3a2eef={};var _0x1d5249;var _0x143898;return db[_0x29da('0x3e')][_0x29da('0x63')]({'where':{'id':_0x8ff588[_0x29da('0x54')]['id']}})['then'](handleEntityNotFound(_0x2a89d1,null))['then'](function(_0x5d84dc){if(_0x5d84dc){_0x1d5249=_0x5d84dc;_0x3a2eef[_0x29da('0x42')]=_[_0x29da('0x43')](db['User']['rawAttributes']);_0x3a2eef[_0x29da('0x47')]=_[_0x29da('0x43')](_0x8ff588['query']);_0x3a2eef[_0x29da('0x44')]=_[_0x29da('0x45')](_0x3a2eef['model'],_0x3a2eef[_0x29da('0x47')]);_0x1d3a3e[_0x29da('0x46')]=_[_0x29da('0x45')](_0x3a2eef[_0x29da('0x42')],qs[_0x29da('0x48')](_0x8ff588[_0x29da('0x47')]['fields']));_0x1d3a3e['attributes']=_0x1d3a3e[_0x29da('0x46')][_0x29da('0x49')]?_0x1d3a3e['attributes']:_0x3a2eef['model'];_0x1d3a3e[_0x29da('0x4b')]=qs[_0x29da('0x4c')](_0x8ff588['query'][_0x29da('0x4c')]);_0x1d3a3e[_0x29da('0x4d')]=qs[_0x29da('0x44')](_[_0x29da('0x67')](_0x8ff588[_0x29da('0x47')],_0x3a2eef[_0x29da('0x44')]));if(_0x8ff588[_0x29da('0x47')][_0x29da('0x34')]){_0x1d3a3e[_0x29da('0x4d')]=_['merge'](_0x1d3a3e[_0x29da('0x4d')],{'$or':_[_0x29da('0x36')](_0x1d3a3e[_0x29da('0x46')],function(_0x57b57d){var _0xe6e0ba={};_0xe6e0ba[_0x57b57d]={'$like':'%'+_0x8ff588[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0xe6e0ba;})});}_0x1d3a3e=_['merge']({},_0x1d3a3e,_0x8ff588[_0x29da('0x4f')]);return _0x1d5249[_0x29da('0x9c')](_0x1d3a3e);}})[_0x29da('0x2f')](function(_0x238a67){if(_0x238a67){_0x143898=_0x238a67[_0x29da('0x49')];if(!_0x8ff588[_0x29da('0x47')]['hasOwnProperty'](_0x29da('0x65'))){_0x1d3a3e['limit']=qs[_0x29da('0x25')](_0x8ff588[_0x29da('0x47')]['limit']);_0x1d3a3e['offset']=qs[_0x29da('0x28')](_0x8ff588[_0x29da('0x47')]['offset']);}return _0x1d5249[_0x29da('0x9c')](_0x1d3a3e);}})[_0x29da('0x2f')](function(_0x1edbbe){if(_0x1edbbe){return _0x1edbbe?{'count':_0x143898,'rows':_0x1edbbe}:null;}})[_0x29da('0x2f')](respondWithResult(_0x2a89d1,null))[_0x29da('0x52')](handleError(_0x2a89d1,null));};exports[_0x29da('0x9d')]=function(_0x2d45e9,_0xba1832,_0x2904c7){var _0x4394b8={};var _0x2660d7={};var _0x3d7ff3;var _0xfe46e3;return db[_0x29da('0x3e')]['findOne']({'where':{'id':_0x2d45e9[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0xba1832,null))[_0x29da('0x2f')](function(_0x3b2812){if(_0x3b2812){_0x3d7ff3=_0x3b2812;_0x2660d7[_0x29da('0x42')]=_[_0x29da('0x43')](db['UserVoiceQueueRt']['rawAttributes']);_0x2660d7['query']=_[_0x29da('0x43')](_0x2d45e9[_0x29da('0x47')]);_0x2660d7[_0x29da('0x44')]=_[_0x29da('0x45')](_0x2660d7[_0x29da('0x42')],_0x2660d7[_0x29da('0x47')]);_0x4394b8[_0x29da('0x46')]=_[_0x29da('0x45')](_0x2660d7['model'],qs[_0x29da('0x48')](_0x2d45e9[_0x29da('0x47')][_0x29da('0x48')]));_0x4394b8[_0x29da('0x46')]=_0x4394b8['attributes'][_0x29da('0x49')]?_0x4394b8[_0x29da('0x46')]:_0x2660d7[_0x29da('0x42')];_0x4394b8[_0x29da('0x4b')]=qs[_0x29da('0x4c')](_0x2d45e9[_0x29da('0x47')][_0x29da('0x4c')]);_0x4394b8[_0x29da('0x4d')]=qs[_0x29da('0x44')](_[_0x29da('0x67')](_0x2d45e9[_0x29da('0x47')],_0x2660d7[_0x29da('0x44')]));if(_0x2d45e9[_0x29da('0x47')][_0x29da('0x34')]){_0x4394b8[_0x29da('0x4d')]=_['merge'](_0x4394b8[_0x29da('0x4d')],{'$or':_['map'](_0x4394b8[_0x29da('0x46')],function(_0x584cbe){var _0x45f7d3={};_0x45f7d3[_0x584cbe]={'$like':'%'+_0x2d45e9[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0x45f7d3;})});}_0x4394b8=_[_0x29da('0x4e')]({},_0x4394b8,_0x2d45e9[_0x29da('0x4f')]);return _0x3d7ff3[_0x29da('0x9d')](_0x4394b8);}})[_0x29da('0x2f')](function(_0x1e2a16){if(_0x1e2a16){_0xfe46e3=_0x1e2a16[_0x29da('0x49')];if(!_0x2d45e9[_0x29da('0x47')][_0x29da('0x4a')](_0x29da('0x65'))){_0x4394b8[_0x29da('0x25')]=qs['limit'](_0x2d45e9[_0x29da('0x47')][_0x29da('0x25')]);_0x4394b8[_0x29da('0x28')]=qs[_0x29da('0x28')](_0x2d45e9[_0x29da('0x47')][_0x29da('0x28')]);}return _0x3d7ff3[_0x29da('0x9d')](_0x4394b8);}})[_0x29da('0x2f')](function(_0x488242){return _0x488242?{'count':_0xfe46e3,'rows':_0x488242}:null;})[_0x29da('0x2f')](respondWithResult(_0xba1832,null))[_0x29da('0x52')](handleError(_0xba1832,null));};exports['getLists']=function(_0xbfde41,_0x4b6c4e,_0x476848){var _0x5deed9={};var _0x5c19c9={};var _0x269a4a;var _0xc4e26f;return db['VoiceQueue']['findOne']({'where':{'id':_0xbfde41[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x4b6c4e,null))['then'](function(_0x6ba441){if(_0x6ba441){_0x269a4a=_0x6ba441;_0x5c19c9[_0x29da('0x42')]=_[_0x29da('0x43')](db[_0x29da('0x9e')]['rawAttributes']);_0x5c19c9[_0x29da('0x47')]=_[_0x29da('0x43')](_0xbfde41[_0x29da('0x47')]);_0x5c19c9[_0x29da('0x44')]=_[_0x29da('0x45')](_0x5c19c9['model'],_0x5c19c9[_0x29da('0x47')]);_0x5deed9[_0x29da('0x46')]=_[_0x29da('0x45')](_0x5c19c9[_0x29da('0x42')],qs[_0x29da('0x48')](_0xbfde41[_0x29da('0x47')][_0x29da('0x48')]));_0x5deed9[_0x29da('0x46')]=_0x5deed9[_0x29da('0x46')][_0x29da('0x49')]?_0x5deed9[_0x29da('0x46')]:_0x5c19c9[_0x29da('0x42')];_0x5deed9['order']=qs[_0x29da('0x4c')](_0xbfde41[_0x29da('0x47')][_0x29da('0x4c')]);_0x5deed9['where']=qs[_0x29da('0x44')](_[_0x29da('0x67')](_0xbfde41[_0x29da('0x47')],_0x5c19c9['filters']));if(_0xbfde41[_0x29da('0x47')][_0x29da('0x34')]){_0x5deed9[_0x29da('0x4d')]=_[_0x29da('0x4e')](_0x5deed9[_0x29da('0x4d')],{'$or':_[_0x29da('0x36')](_0x5deed9['attributes'],function(_0x36ccd6){var _0x5ab967={};_0x5ab967[_0x36ccd6]={'$like':'%'+_0xbfde41[_0x29da('0x47')][_0x29da('0x34')]+'%'};return _0x5ab967;})});}_0x5deed9=_['merge']({},_0x5deed9,_0xbfde41[_0x29da('0x4f')]);return _0x269a4a[_0x29da('0x9f')](_0x5deed9);}})[_0x29da('0x2f')](function(_0x3c686c){if(_0x3c686c){_0xc4e26f=_0x3c686c['length'];if(!_0xbfde41[_0x29da('0x47')][_0x29da('0x4a')]('nolimit')){_0x5deed9[_0x29da('0x25')]=qs[_0x29da('0x25')](_0xbfde41[_0x29da('0x47')][_0x29da('0x25')]);_0x5deed9['offset']=qs[_0x29da('0x28')](_0xbfde41['query'][_0x29da('0x28')]);}return _0x269a4a['getLists'](_0x5deed9);}})[_0x29da('0x2f')](function(_0x2621ed){if(_0x2621ed){return _0x2621ed?{'count':_0xc4e26f,'rows':_0x2621ed}:null;}})[_0x29da('0x2f')](respondWithResult(_0x4b6c4e,null))['catch'](handleError(_0x4b6c4e,null));};exports[_0x29da('0xa0')]=function(_0x357137,_0x5cfd6f,_0x27593c){var _0x5ae12a,_0x15b8a4;return db[_0x29da('0x3e')][_0x29da('0x38')]({'where':{'id':_0x357137[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x5cfd6f,null))['then'](function(_0x893dc1){if(_0x893dc1){_0x15b8a4=_0x893dc1;return _0x893dc1[_0x29da('0xa0')](_0x357137[_0x29da('0x60')]['ids'],_[_0x29da('0x5e')](_0x357137[_0x29da('0x60')],[_0x29da('0x83'),'id'])||{});}return null;})[_0x29da('0x95')](function(_0x2b6420){var _0x42cf54;_0x5ae12a=_0x2b6420||[];var _0x524b47=[];if(_0x2b6420){for(var _0x5ac561=0x0;_0x5ac561<_0x2b6420[_0x29da('0x49')];_0x5ac561+=0x1){var _0x29043a=_0x2b6420[_0x5ac561]['get']({'plain':!![]});_0x15b8a4[_0x29da('0xa1')]=_0x357137[_0x29da('0x60')][_0x29da('0xa1')]?_0x357137[_0x29da('0x60')][_0x29da('0xa1')]:_0x15b8a4[_0x29da('0xa1')];switch(_0x15b8a4['dialCheckDuplicateType']){case'always':_0x42cf54=squel['insert']()[_0x29da('0xa2')](_0x29da('0xa3'))[_0x29da('0xa4')]([_0x29da('0xa5'),'scheduledAt',_0x29da('0xa6'),_0x29da('0xa7'),_0x29da('0x68'),_0x29da('0xa8'),_0x29da('0x5f')],squel[_0x29da('0x84')]()[_0x29da('0x85')](_0x29da('0xa5'),_0x29da('0xa5'))['field'](_0x29da('0xa9'),_0x29da('0xaa'))[_0x29da('0x85')]('id',_0x29da('0xa6'))[_0x29da('0x85')](_0x29043a[_0x29da('0xab')][_0x29da('0x8b')](),_0x29da('0xa7'))['field'](_0x357137[_0x29da('0x54')]['id'][_0x29da('0x8b')](),_0x29da('0x68'))['field'](_0x29da('0xa9'),_0x29da('0xa8'))[_0x29da('0x85')]('NOW()',_0x29da('0x5f'))[_0x29da('0xac')](_0x29da('0xad'))[_0x29da('0x4d')](_0x29da('0xae'))[_0x29da('0x4d')](_0x29da('0xaf'),_0x29043a[_0x29da('0xab')][_0x29da('0x8b')]())[_0x29da('0x4d')](_0x29da('0xb0'))[_0x29da('0x4d')](_0x29da('0xb1'),squel['select']()[_0x29da('0x85')](_0x29da('0xb2'))[_0x29da('0xac')](_0x29da('0xb3'))[_0x29da('0x4d')]('VoiceQueueId\x20=\x20?',_0x357137[_0x29da('0x54')]['id'][_0x29da('0x8b')]()))['where'](_0x29da('0xb1'),squel[_0x29da('0x84')]()[_0x29da('0x85')](_0x29da('0xb4'))['from']('cm_hopper')[_0x29da('0x4d')](_0x29da('0xb5'),_0x357137[_0x29da('0x54')]['id'][_0x29da('0x8b')]())))[_0x29da('0x8b')]();break;case _0x29da('0xb6'):_0x42cf54=squel['insert']()[_0x29da('0xa2')](_0x29da('0xa3'))[_0x29da('0xa4')]([_0x29da('0xa5'),_0x29da('0xaa'),_0x29da('0xa6'),_0x29da('0xa7'),_0x29da('0x68'),_0x29da('0xa8'),_0x29da('0x5f')],squel[_0x29da('0x84')]()['field'](_0x29da('0xa5'),'phone')[_0x29da('0x85')]('NOW()',_0x29da('0xaa'))[_0x29da('0x85')]('id',_0x29da('0xa6'))['field'](_0x29043a[_0x29da('0xab')][_0x29da('0x8b')](),_0x29da('0xa7'))[_0x29da('0x85')](_0x357137['params']['id'][_0x29da('0x8b')](),_0x29da('0x68'))[_0x29da('0x85')]('NOW()',_0x29da('0xa8'))[_0x29da('0x85')](_0x29da('0xa9'),_0x29da('0x5f'))[_0x29da('0xac')](_0x29da('0xad'))[_0x29da('0x4d')](_0x29da('0xae'))[_0x29da('0x4d')](_0x29da('0xaf'),_0x29043a[_0x29da('0xab')][_0x29da('0x8b')]())[_0x29da('0x4d')](_0x29da('0xb0'))[_0x29da('0x4d')](_0x29da('0xb1'),squel[_0x29da('0x84')]()[_0x29da('0x85')](_0x29da('0xb4'))['from'](_0x29da('0xa3'))[_0x29da('0x4d')](_0x29da('0xb5'),_0x357137[_0x29da('0x54')]['id'][_0x29da('0x8b')]())))[_0x29da('0x8b')]();break;default:_0x42cf54=squel['insert']()['into'](_0x29da('0xa3'))[_0x29da('0xa4')]([_0x29da('0xa5'),_0x29da('0xaa'),_0x29da('0xa6'),'ListId',_0x29da('0x68'),_0x29da('0xa8'),_0x29da('0x5f')],squel['select']()[_0x29da('0x85')](_0x29da('0xa5'),_0x29da('0xa5'))[_0x29da('0x85')](_0x29da('0xa9'),_0x29da('0xaa'))['field']('id',_0x29da('0xa6'))[_0x29da('0x85')](_0x29043a['CmListId'][_0x29da('0x8b')](),_0x29da('0xa7'))[_0x29da('0x85')](_0x357137[_0x29da('0x54')]['id']['toString'](),_0x29da('0x68'))[_0x29da('0x85')](_0x29da('0xa9'),_0x29da('0xa8'))[_0x29da('0x85')]('NOW()',_0x29da('0x5f'))['from'](_0x29da('0xad'))['where']('deletedAt\x20IS\x20NULL')[_0x29da('0x4d')](_0x29da('0xaf'),_0x29043a[_0x29da('0xab')][_0x29da('0x8b')]())[_0x29da('0x4d')](_0x29da('0xb0')))[_0x29da('0x8b')]();}_0x524b47[_0x29da('0x8a')](db[_0x29da('0x78')]['query'](_0x42cf54));}return BPromise[_0x29da('0x91')](_0x524b47);}})['then'](function(){return _0x5ae12a;})['then'](respondWithResult(_0x5cfd6f,null))['catch'](handleError(_0x5cfd6f,null));};exports[_0x29da('0xb7')]=function(_0x213d90,_0x13ad33,_0x1f371b){return db['VoiceQueue'][_0x29da('0x38')]({'where':{'id':_0x213d90['params']['id']}})['then'](handleEntityNotFound(_0x13ad33,null))[_0x29da('0x2f')](function(_0x1b6a42){if(_0x1b6a42){return _0x1b6a42[_0x29da('0xb7')](_0x213d90['query'][_0x29da('0x83')]);}})[_0x29da('0x2f')](function(_0xb4a3c7){if(_0xb4a3c7){return db[_0x29da('0x64')]['destroy']({'where':{'ListId':_0x213d90[_0x29da('0x47')][_0x29da('0x83')],'VoiceQueueId':_0x213d90['params']['id']}})['then'](function(){return _0xb4a3c7;});}})[_0x29da('0x2f')](respondWithStatusCode(_0x13ad33,null))[_0x29da('0x52')](handleError(_0x13ad33,null));};exports['getBlackLists']=function(_0x10922a,_0x1f3c36,_0x1a6cec){var _0x3cb66b={};var _0x4b634f={};var _0xd010f2;var _0x2c054e;return db[_0x29da('0x3e')][_0x29da('0x63')]({'where':{'id':_0x10922a[_0x29da('0x54')]['id']}})['then'](handleEntityNotFound(_0x1f3c36,null))[_0x29da('0x2f')](function(_0x33029e){if(_0x33029e){_0xd010f2=_0x33029e;_0x4b634f[_0x29da('0x42')]=_[_0x29da('0x43')](db['CmList']['rawAttributes']);_0x4b634f['query']=_[_0x29da('0x43')](_0x10922a[_0x29da('0x47')]);_0x4b634f[_0x29da('0x44')]=_[_0x29da('0x45')](_0x4b634f['model'],_0x4b634f[_0x29da('0x47')]);_0x3cb66b['attributes']=_[_0x29da('0x45')](_0x4b634f[_0x29da('0x42')],qs[_0x29da('0x48')](_0x10922a['query'][_0x29da('0x48')]));_0x3cb66b[_0x29da('0x46')]=_0x3cb66b[_0x29da('0x46')][_0x29da('0x49')]?_0x3cb66b['attributes']:_0x4b634f[_0x29da('0x42')];_0x3cb66b[_0x29da('0x4b')]=qs['sort'](_0x10922a[_0x29da('0x47')][_0x29da('0x4c')]);_0x3cb66b[_0x29da('0x4d')]=qs[_0x29da('0x44')](_['pick'](_0x10922a['query'],_0x4b634f[_0x29da('0x44')]));if(_0x10922a[_0x29da('0x47')]['filter']){_0x3cb66b[_0x29da('0x4d')]=_[_0x29da('0x4e')](_0x3cb66b[_0x29da('0x4d')],{'$or':_['map'](_0x3cb66b['attributes'],function(_0x1a3fed){var _0x4743c7={};_0x4743c7[_0x1a3fed]={'$like':'%'+_0x10922a[_0x29da('0x47')]['filter']+'%'};return _0x4743c7;})});}_0x3cb66b=_[_0x29da('0x4e')]({},_0x3cb66b,_0x10922a[_0x29da('0x4f')]);return _0xd010f2[_0x29da('0xb8')](_0x3cb66b);}})[_0x29da('0x2f')](function(_0xda5cb){if(_0xda5cb){_0x2c054e=_0xda5cb['length'];if(!_0x10922a[_0x29da('0x47')][_0x29da('0x4a')](_0x29da('0x65'))){_0x3cb66b['limit']=qs[_0x29da('0x25')](_0x10922a[_0x29da('0x47')][_0x29da('0x25')]);_0x3cb66b[_0x29da('0x28')]=qs[_0x29da('0x28')](_0x10922a['query'][_0x29da('0x28')]);}return _0xd010f2[_0x29da('0xb8')](_0x3cb66b);}})[_0x29da('0x2f')](function(_0x17041c){if(_0x17041c){return _0x17041c?{'count':_0x2c054e,'rows':_0x17041c}:null;}})['then'](respondWithResult(_0x1f3c36,null))[_0x29da('0x52')](handleError(_0x1f3c36,null));};exports[_0x29da('0xb9')]=function(_0x1fdd32,_0x2707db,_0x19beb4){var _0x240cc0,_0x12d0dd;return db['VoiceQueue'][_0x29da('0x38')]({'where':{'id':_0x1fdd32[_0x29da('0x54')]['id']}})['then'](handleEntityNotFound(_0x2707db,null))[_0x29da('0x2f')](function(_0x2066c3){if(_0x2066c3){_0x12d0dd=_0x2066c3;return _0x2066c3[_0x29da('0xb9')](_0x1fdd32[_0x29da('0x60')][_0x29da('0x83')],_['omit'](_0x1fdd32['body'],[_0x29da('0x83'),'id'])||{});}return null;})[_0x29da('0x95')](function(_0x391ac3){var _0x15d446;_0x240cc0=_0x391ac3||[];var _0x545907=[];if(_0x391ac3){for(var _0x3d814b=0x0;_0x3d814b<_0x391ac3[_0x29da('0x49')];_0x3d814b+=0x1){var _0x136cf3=_0x391ac3[_0x3d814b][_0x29da('0x59')]({'plain':!![]});_0x15d446=squel[_0x29da('0xba')]()['into'](_0x29da('0xbb'))[_0x29da('0xa4')](['phone','ContactId',_0x29da('0xa7'),_0x29da('0x68'),_0x29da('0xa8'),_0x29da('0x5f')],squel[_0x29da('0x84')]()[_0x29da('0x85')](_0x29da('0xa5'),_0x29da('0xa5'))['field']('id','ContactId')['field'](_0x136cf3[_0x29da('0xab')][_0x29da('0x8b')](),_0x29da('0xa7'))['field'](_0x1fdd32[_0x29da('0x54')]['id'][_0x29da('0x8b')](),'VoiceQueueId')[_0x29da('0x85')](_0x29da('0xa9'),_0x29da('0xa8'))['field'](_0x29da('0xa9'),_0x29da('0x5f'))[_0x29da('0xac')](_0x29da('0xad'))[_0x29da('0x4d')](_0x29da('0xae'))[_0x29da('0x4d')](_0x29da('0xaf'),_0x136cf3['CmListId'][_0x29da('0x8b')]())[_0x29da('0x4d')]('phone\x20IS\x20NOT\x20NULL'))[_0x29da('0x8b')]();_0x545907[_0x29da('0x8a')](db[_0x29da('0x78')][_0x29da('0x47')](_0x15d446));}return BPromise[_0x29da('0x91')](_0x545907);}})[_0x29da('0x2f')](function(){return _0x240cc0;})[_0x29da('0x2f')](respondWithResult(_0x2707db,null))[_0x29da('0x52')](handleError(_0x2707db,null));};exports['removeBlackLists']=function(_0x5bf1c4,_0x46c249,_0x38ca2b){return db[_0x29da('0x3e')]['find']({'where':{'id':_0x5bf1c4[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](handleEntityNotFound(_0x46c249,null))[_0x29da('0x2f')](function(_0x36536c){if(_0x36536c){return _0x36536c[_0x29da('0xbc')](_0x5bf1c4[_0x29da('0x47')][_0x29da('0x83')]);}})[_0x29da('0x2f')](function(_0x3877b6){if(_0x3877b6){return db[_0x29da('0x6d')][_0x29da('0x30')]({'where':{'ListId':_0x5bf1c4[_0x29da('0x47')][_0x29da('0x83')],'VoiceQueueId':_0x5bf1c4[_0x29da('0x54')]['id']}})[_0x29da('0x2f')](function(){return _0x3877b6;});}})['then'](respondWithStatusCode(_0x46c249,null))[_0x29da('0x52')](handleError(_0x46c249,null));};
\ No newline at end of file
+var _0x7734=['../../mysqldb','defaults','localhost','socket.io-emitter','redis','./voiceQueue.socket','register','end','status','offset','undefined','limit','set','Content-Range','json','apply','save','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','find','sendStatus','name','send','index','VoiceQueue','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','count','include','findAll','rows','catch','show','params','includeAll','create','body','user','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','error','update','getHoppers','findOne','CmHopper','pick','VoiceQueueId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','teams','User','Agents','online','interface','flatMap','forEach','penalty','sequelize','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','voicePause','emit','removeTeams','ids','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','QueryTypes','SELECT','TeamId','all','union','compact','transaction','userVoiceQueue:remove','addAgents','isEmpty','format','removeAgents','isArray','getAgents','getMembers','getLists','CmList','addLists','spread','dialCheckDuplicateType','into','cm_hopper','phone','scheduledAt','ContactId','ListId','CmListId','toString','NOW()','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','ListId\x20=\x20?','insert','fromQuery','cm_contacts','deletedAt\x20IS\x20NULL','push','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7734,0xa6));var _0x4773=function(_0x14f63c,_0x176c6d){_0x14f63c=_0x14f63c-0x0;var _0x35db31=_0x7734[_0x14f63c];return _0x35db31;};'use strict';var emlformat=require(_0x4773('0x0'));var rimraf=require(_0x4773('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4773('0x2'));var rp=require(_0x4773('0x3'));var moment=require(_0x4773('0x4'));var BPromise=require(_0x4773('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4773('0x6'));var sox=require(_0x4773('0x7'));var csv=require(_0x4773('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4773('0x9'));var _=require('lodash');var squel=require(_0x4773('0xa'));var crypto=require(_0x4773('0xb'));var jsforce=require(_0x4773('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4773('0xd'));var Papa=require(_0x4773('0xe'));var Redis=require(_0x4773('0xf'));var authService=require(_0x4773('0x10'));var qs=require(_0x4773('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4773('0x12'));var logger=require(_0x4773('0x13'))('api');var utils=require(_0x4773('0x14'));var config=require(_0x4773('0x15'));var licenseUtil=require(_0x4773('0x16'));var db=require(_0x4773('0x17'))['db'];config['redis']=_[_0x4773('0x18')](config['redis'],{'host':_0x4773('0x19'),'port':0x18eb});var socket=require(_0x4773('0x1a'))(new Redis(config[_0x4773('0x1b')]));require(_0x4773('0x1c'))[_0x4773('0x1d')](socket);function respondWithStatusCode(_0x214941,_0x3492bb){_0x3492bb=_0x3492bb||0xcc;return function(_0x2b6aac){if(_0x2b6aac){return _0x214941['sendStatus'](_0x3492bb);}return _0x214941['status'](_0x3492bb)[_0x4773('0x1e')]();};}function respondWithResult(_0x430790,_0x464932){_0x464932=_0x464932||0xc8;return function(_0x476d29){if(_0x476d29){return _0x430790[_0x4773('0x1f')](_0x464932)['json'](_0x476d29);}};}function respondWithFilteredResult(_0x2b0c8a,_0x45a53d){return function(_0xe1ad01){if(_0xe1ad01){var _0x4e7777=typeof _0x45a53d[_0x4773('0x20')]===_0x4773('0x21')&&typeof _0x45a53d[_0x4773('0x22')]===_0x4773('0x21');var _0x300074=_0xe1ad01['count'];var _0x4eeeb6=_0x4e7777?0x0:_0x45a53d[_0x4773('0x20')];var _0x3ebeef=_0x4e7777?_0xe1ad01['count']:_0x45a53d[_0x4773('0x20')]+_0x45a53d[_0x4773('0x22')];var _0x32b3e7;if(_0x3ebeef>=_0x300074){_0x3ebeef=_0x300074;_0x32b3e7=0xc8;}else{_0x32b3e7=0xce;}_0x2b0c8a[_0x4773('0x1f')](_0x32b3e7);return _0x2b0c8a[_0x4773('0x23')](_0x4773('0x24'),_0x4eeeb6+'-'+_0x3ebeef+'/'+_0x300074)[_0x4773('0x25')](_0xe1ad01);}return null;};}function patchUpdates(_0x4da7cf){return function(_0x9053e0){try{jsonpatch[_0x4773('0x26')](_0x9053e0,_0x4da7cf,!![]);}catch(_0x279da6){return BPromise['reject'](_0x279da6);}return _0x9053e0[_0x4773('0x27')]();};}function saveUpdates(_0x124d9e,_0x4bb774){return function(_0x2b44d3){if(_0x2b44d3){return _0x2b44d3['update'](_0x124d9e)[_0x4773('0x28')](function(_0x23416e){return _0x23416e;});}return null;};}function removeEntity(_0x57ba96,_0xcce91e){return function(_0x32c6e3){if(_0x32c6e3){return _0x32c6e3[_0x4773('0x29')]()[_0x4773('0x28')](function(){var _0x631b11=_0x32c6e3[_0x4773('0x2a')]({'plain':!![]});var _0x19d928=[{'name':_0x4773('0x2b'),'value':_0x4773('0x2c'),'ignore':![]},{'name':_0x4773('0x2d'),'value':_0x4773('0x2e'),'ignore':![]}];var _0x40a1b7=_(_0x19d928)[_0x4773('0x2f')](_0x4773('0x30'))[_0x4773('0x31')](_0x4773('0x32'))[_0x4773('0x32')]();if(_[_0x4773('0x33')](_0x40a1b7,_0x631b11[_0x4773('0x34')])){return;}var _0x324079=_[_0x4773('0x35')](_0x19d928,[_0x4773('0x32'),_0x631b11[_0x4773('0x34')]])['name'];return db['UserProfileResource'][_0x4773('0x29')]({'where':{'type':_0x324079,'resourceId':_0x631b11['id']}})[_0x4773('0x28')](function(){return _0x32c6e3;});})[_0x4773('0x28')](function(){_0x57ba96['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xd8775b,_0x32974d){return function(_0x530711){if(!_0x530711){_0xd8775b[_0x4773('0x36')](0x194);}return _0x530711;};}function handleError(_0x50e52b,_0x267119){_0x267119=_0x267119||0x1f4;return function(_0x36597e){logger['error'](_0x36597e['stack']);if(_0x36597e[_0x4773('0x37')]){delete _0x36597e['name'];}_0x50e52b['status'](_0x267119)[_0x4773('0x38')](_0x36597e);};}exports[_0x4773('0x39')]=function(_0x693621,_0x12b1a2){var _0x3cc6c3={},_0x134bb0={},_0x1091b7={'count':0x0,'rows':[]};var _0x27931a=_[_0x4773('0x31')](db[_0x4773('0x3a')][_0x4773('0x3b')],function(_0x490bb9){return{'name':_0x490bb9[_0x4773('0x3c')],'type':_0x490bb9[_0x4773('0x34')][_0x4773('0x3d')]};});_0x134bb0[_0x4773('0x3e')]=_[_0x4773('0x31')](_0x27931a,_0x4773('0x37'));_0x134bb0[_0x4773('0x3f')]=_[_0x4773('0x40')](_0x693621[_0x4773('0x3f')]);_0x134bb0[_0x4773('0x41')]=_['intersection'](_0x134bb0['model'],_0x134bb0['query']);_0x3cc6c3[_0x4773('0x42')]=_[_0x4773('0x43')](_0x134bb0[_0x4773('0x3e')],qs[_0x4773('0x44')](_0x693621[_0x4773('0x3f')]['fields']));_0x3cc6c3['attributes']=_0x3cc6c3[_0x4773('0x42')][_0x4773('0x45')]?_0x3cc6c3['attributes']:_0x134bb0['model'];if(!_0x693621[_0x4773('0x3f')][_0x4773('0x46')](_0x4773('0x47'))){_0x3cc6c3[_0x4773('0x22')]=qs[_0x4773('0x22')](_0x693621[_0x4773('0x3f')][_0x4773('0x22')]);_0x3cc6c3[_0x4773('0x20')]=qs[_0x4773('0x20')](_0x693621['query'][_0x4773('0x20')]);}_0x3cc6c3[_0x4773('0x48')]=qs[_0x4773('0x49')](_0x693621['query'][_0x4773('0x49')]);_0x3cc6c3['where']=qs['filters'](_['pick'](_0x693621[_0x4773('0x3f')],_0x134bb0[_0x4773('0x41')]),_0x27931a);if(_0x693621[_0x4773('0x3f')][_0x4773('0x2f')]){_0x3cc6c3[_0x4773('0x4a')]=_[_0x4773('0x4b')](_0x3cc6c3[_0x4773('0x4a')],{'$or':_[_0x4773('0x31')](_0x27931a,function(_0x54f0ca){if(_0x54f0ca[_0x4773('0x34')]!==_0x4773('0x4c')){var _0x3ecffc={};_0x3ecffc[_0x54f0ca[_0x4773('0x37')]]={'$like':'%'+_0x693621[_0x4773('0x3f')]['filter']+'%'};return _0x3ecffc;}})});}_0x3cc6c3=_[_0x4773('0x4b')]({},_0x3cc6c3,_0x693621[_0x4773('0x4d')]);var _0x196a29={'where':_0x3cc6c3[_0x4773('0x4a')]};return db['VoiceQueue']['count'](_0x196a29)[_0x4773('0x28')](function(_0x19612e){_0x1091b7[_0x4773('0x4e')]=_0x19612e;if(_0x693621[_0x4773('0x3f')]['includeAll']){_0x3cc6c3[_0x4773('0x4f')]=[{'all':!![]}];}return db[_0x4773('0x3a')][_0x4773('0x50')](_0x3cc6c3);})[_0x4773('0x28')](function(_0x150244){_0x1091b7[_0x4773('0x51')]=_0x150244;return _0x1091b7;})[_0x4773('0x28')](respondWithFilteredResult(_0x12b1a2,_0x3cc6c3))[_0x4773('0x52')](handleError(_0x12b1a2,null));};exports[_0x4773('0x53')]=function(_0x424230,_0x786c64){var _0x2ddae0={'raw':![],'where':{'id':_0x424230[_0x4773('0x54')]['id']}},_0x2f7aa3={};_0x2f7aa3['model']=_['keys'](db[_0x4773('0x3a')][_0x4773('0x3b')]);_0x2f7aa3[_0x4773('0x3f')]=_[_0x4773('0x40')](_0x424230[_0x4773('0x3f')]);_0x2f7aa3['filters']=_[_0x4773('0x43')](_0x2f7aa3['model'],_0x2f7aa3['query']);_0x2ddae0[_0x4773('0x42')]=_[_0x4773('0x43')](_0x2f7aa3['model'],qs['fields'](_0x424230[_0x4773('0x3f')][_0x4773('0x44')]));_0x2ddae0[_0x4773('0x42')]=_0x2ddae0['attributes'][_0x4773('0x45')]?_0x2ddae0[_0x4773('0x42')]:_0x2f7aa3['model'];if(_0x424230[_0x4773('0x3f')][_0x4773('0x55')]){_0x2ddae0['include']=[{'all':!![]}];}_0x2ddae0=_[_0x4773('0x4b')]({},_0x2ddae0,_0x424230['options']);return db['VoiceQueue']['find'](_0x2ddae0)[_0x4773('0x28')](handleEntityNotFound(_0x786c64,null))['then'](respondWithResult(_0x786c64,null))['catch'](handleError(_0x786c64,null));};exports[_0x4773('0x56')]=function(_0xf76fd6,_0xd37a46){return db['VoiceQueue'][_0x4773('0x56')](_0xf76fd6[_0x4773('0x57')],{})[_0x4773('0x28')](function(_0x3da4e0){var _0x40c9ef=_0xf76fd6['user'][_0x4773('0x2a')]({'plain':!![]});if(!_0x40c9ef)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x40c9ef['role']===_0x4773('0x58')){var _0x444296=_0x3da4e0[_0x4773('0x2a')]({'plain':!![]});var _0x44892d=[{'name':_0x4773('0x2b'),'value':'inbound'},{'name':'QueueCampaigns','value':_0x4773('0x2e')}];var _0x2b707c=_[_0x4773('0x35')](_0x44892d,['value',_0x444296[_0x4773('0x34')]])[_0x4773('0x37')];return db['UserProfileSection'][_0x4773('0x35')]({'where':{'name':_0x2b707c,'userProfileId':_0x40c9ef['userProfileId']},'raw':!![]})[_0x4773('0x28')](function(_0x4da474){if(_0x4da474&&_0x4da474['autoAssociation']===0x0){return db[_0x4773('0x59')][_0x4773('0x56')]({'name':_0x444296[_0x4773('0x37')],'resourceId':_0x444296['id'],'type':_0x4da474[_0x4773('0x37')],'sectionId':_0x4da474['id']},{})[_0x4773('0x28')](function(){return _0x3da4e0;});}else{return _0x3da4e0;}})[_0x4773('0x52')](function(_0x2c6b5c){logger['error'](_0x4773('0x5a'),_0x2c6b5c);throw _0x2c6b5c;});}return _0x3da4e0;})[_0x4773('0x28')](respondWithResult(_0xd37a46,0xc9))['catch'](handleError(_0xd37a46,null));};exports[_0x4773('0x5b')]=function(_0x464ac1,_0x2564c6){var _0x570ad6={'where':{'id':_0x464ac1[_0x4773('0x54')]['id']}},_0x2df187={};_0x2df187[_0x4773('0x3e')]=_['keys'](db[_0x4773('0x3a')][_0x4773('0x3b')]);_0x570ad6[_0x4773('0x42')]=_['intersection'](_0x2df187[_0x4773('0x3e')],qs['fields'](_0x464ac1[_0x4773('0x3f')]['fields']));_0x570ad6[_0x4773('0x42')]=_0x570ad6[_0x4773('0x42')][_0x4773('0x45')]?_0x570ad6[_0x4773('0x42')]:_0x2df187[_0x4773('0x3e')];if(_0x464ac1['query'][_0x4773('0x55')]){_0x570ad6[_0x4773('0x4f')]=[{'all':!![]}];}_0x570ad6=_['merge']({},_0x570ad6,_0x464ac1[_0x4773('0x4d')]);return db[_0x4773('0x3a')][_0x4773('0x35')](_0x570ad6)[_0x4773('0x28')](handleEntityNotFound(_0x2564c6,null))['then'](function(_0x528fac){if(_0x528fac){var _0x5dc667=_0x528fac['get']({'plain':!![]});_0x5dc667=qs[_0x4773('0x5c')](_0x5dc667,['id',_0x4773('0x5d'),_0x4773('0x5e')]);_0x464ac1['body']=_[_0x4773('0x5c')](_0x464ac1[_0x4773('0x57')],['id',_0x4773('0x5d'),_0x4773('0x5e')]);return db[_0x4773('0x3a')][_0x4773('0x56')](_[_0x4773('0x4b')](_0x5dc667,_0x464ac1[_0x4773('0x57')]),{'include':_0x464ac1['query'][_0x4773('0x55')]?[{'all':!![]}]:undefined})[_0x4773('0x28')](function(_0x1e4d11){var _0x45e288=_0x464ac1['user']['get']({'plain':!![]});if(!_0x45e288)throw new Error(_0x4773('0x5f'));if(_0x45e288['role']===_0x4773('0x58')){var _0x4dab6b=_0x1e4d11[_0x4773('0x2a')]({'plain':!![]});var _0x86a188=[{'name':_0x4773('0x2b'),'value':_0x4773('0x2c')},{'name':_0x4773('0x2d'),'value':_0x4773('0x2e')}];var _0xb078ed=_[_0x4773('0x35')](_0x86a188,[_0x4773('0x32'),_0x4dab6b['type']])[_0x4773('0x37')];return db[_0x4773('0x60')][_0x4773('0x35')]({'where':{'name':_0xb078ed,'userProfileId':_0x45e288[_0x4773('0x61')]},'raw':!![]})[_0x4773('0x28')](function(_0x3d644b){if(_0x3d644b&&_0x3d644b['autoAssociation']===0x0){return db[_0x4773('0x59')][_0x4773('0x56')]({'name':_0x4dab6b['name'],'resourceId':_0x4dab6b['id'],'type':_0x3d644b[_0x4773('0x37')],'sectionId':_0x3d644b['id']},{})['then'](function(){return _0x1e4d11;});}else{return _0x1e4d11;}})[_0x4773('0x52')](function(_0xfe10fe){logger[_0x4773('0x62')](_0x4773('0x5a'),_0xfe10fe);throw _0xfe10fe;});}return _0x1e4d11;});}})[_0x4773('0x28')](respondWithResult(_0x2564c6,0xc9))[_0x4773('0x52')](handleError(_0x2564c6,null));};exports[_0x4773('0x63')]=function(_0x491bec,_0x26590f){if(_0x491bec[_0x4773('0x57')]['id']){delete _0x491bec[_0x4773('0x57')]['id'];}return db[_0x4773('0x3a')][_0x4773('0x35')]({'where':{'id':_0x491bec[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x26590f,null))[_0x4773('0x28')](saveUpdates(_0x491bec[_0x4773('0x57')],null))[_0x4773('0x28')](respondWithResult(_0x26590f,null))[_0x4773('0x52')](handleError(_0x26590f,null));};exports['destroy']=function(_0x205a17,_0xa999e2){return db[_0x4773('0x3a')][_0x4773('0x35')]({'where':{'id':_0x205a17[_0x4773('0x54')]['id']}})['then'](handleEntityNotFound(_0xa999e2,null))['then'](removeEntity(_0xa999e2,null))[_0x4773('0x52')](handleError(_0xa999e2,null));};exports[_0x4773('0x64')]=function(_0xcac877,_0x2410bb,_0x4df5a7){var _0x2dc844={'raw':![],'where':{}};var _0x454858={};var _0x224e3f={'count':0x0,'rows':[]};return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0xcac877['params']['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x2410bb,null))[_0x4773('0x28')](function(_0x4fee8b){if(_0x4fee8b){_0x454858[_0x4773('0x3e')]=_[_0x4773('0x40')](db[_0x4773('0x66')][_0x4773('0x3b')]);_0x454858[_0x4773('0x3f')]=_[_0x4773('0x40')](_0xcac877['query']);_0x454858[_0x4773('0x41')]=_[_0x4773('0x43')](_0x454858['model'],_0x454858['query']);_0x2dc844['attributes']=_[_0x4773('0x43')](_0x454858['model'],qs['fields'](_0xcac877[_0x4773('0x3f')][_0x4773('0x44')]));_0x2dc844['attributes']=_0x2dc844[_0x4773('0x42')][_0x4773('0x45')]?_0x2dc844[_0x4773('0x42')]:_0x454858[_0x4773('0x3e')];if(!_0xcac877[_0x4773('0x3f')][_0x4773('0x46')](_0x4773('0x47'))){_0x2dc844[_0x4773('0x22')]=qs[_0x4773('0x22')](_0xcac877[_0x4773('0x3f')][_0x4773('0x22')]);_0x2dc844['offset']=qs['offset'](_0xcac877[_0x4773('0x3f')][_0x4773('0x20')]);}_0x2dc844[_0x4773('0x48')]=qs[_0x4773('0x49')](_0xcac877[_0x4773('0x3f')][_0x4773('0x49')]);_0x2dc844[_0x4773('0x4a')]=qs[_0x4773('0x41')](_[_0x4773('0x67')](_0xcac877[_0x4773('0x3f')],_0x454858[_0x4773('0x41')]));_0x2dc844[_0x4773('0x4a')][_0x4773('0x68')]=_0x4fee8b['id'];if(_0xcac877[_0x4773('0x3f')]['filter']){_0x2dc844[_0x4773('0x4a')]=_[_0x4773('0x4b')](_0x2dc844['where'],{'$or':_['map'](_0x2dc844[_0x4773('0x42')],function(_0x35fb1b){var _0x3702b6={};_0x3702b6[_0x35fb1b]={'$like':'%'+_0xcac877[_0x4773('0x3f')][_0x4773('0x2f')]+'%'};return _0x3702b6;})});}_0x2dc844=_[_0x4773('0x4b')]({},_0x2dc844,_0xcac877[_0x4773('0x4d')]);return db[_0x4773('0x66')][_0x4773('0x4e')]({'where':_0x2dc844[_0x4773('0x4a')]})[_0x4773('0x28')](function(_0x2b1acf){_0x224e3f[_0x4773('0x4e')]=_0x2b1acf;if(_0xcac877[_0x4773('0x3f')][_0x4773('0x55')]){_0x2dc844['include']=[{'all':!![]}];}return db['CmHopper'][_0x4773('0x50')](_0x2dc844);})[_0x4773('0x28')](function(_0x50c11a){_0x224e3f['rows']=_0x50c11a;return _0x224e3f;});}})['then'](respondWithFilteredResult(_0x2410bb,_0x2dc844))[_0x4773('0x52')](handleError(_0x2410bb,null));};exports[_0x4773('0x69')]=function(_0x334739,_0x5ce45c,_0x40c325){var _0x2749ad={'raw':!![],'where':{}};var _0x46a025={};var _0x441e89={'count':0x0,'rows':[]};return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0x334739[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x5ce45c,null))[_0x4773('0x28')](function(_0x4c6de9){if(_0x4c6de9){_0x46a025[_0x4773('0x3e')]=_[_0x4773('0x40')](db[_0x4773('0x6a')][_0x4773('0x3b')]);_0x46a025['query']=_['keys'](_0x334739[_0x4773('0x3f')]);_0x46a025['filters']=_['intersection'](_0x46a025[_0x4773('0x3e')],_0x46a025[_0x4773('0x3f')]);_0x2749ad[_0x4773('0x42')]=_[_0x4773('0x43')](_0x46a025[_0x4773('0x3e')],qs[_0x4773('0x44')](_0x334739[_0x4773('0x3f')][_0x4773('0x44')]));_0x2749ad[_0x4773('0x42')]=_0x2749ad['attributes'][_0x4773('0x45')]?_0x2749ad[_0x4773('0x42')]:_0x46a025[_0x4773('0x3e')];if(!_0x334739[_0x4773('0x3f')][_0x4773('0x46')](_0x4773('0x47'))){_0x2749ad['limit']=qs['limit'](_0x334739[_0x4773('0x3f')][_0x4773('0x22')]);_0x2749ad[_0x4773('0x20')]=qs['offset'](_0x334739[_0x4773('0x3f')][_0x4773('0x20')]);}_0x2749ad[_0x4773('0x48')]=qs['sort'](_0x334739[_0x4773('0x3f')][_0x4773('0x49')]);_0x2749ad['where']=qs[_0x4773('0x41')](_[_0x4773('0x67')](_0x334739[_0x4773('0x3f')],_0x46a025[_0x4773('0x41')]));_0x2749ad[_0x4773('0x4a')][_0x4773('0x68')]=_0x4c6de9['id'];if(_0x334739[_0x4773('0x3f')][_0x4773('0x2f')]){_0x2749ad[_0x4773('0x4a')]=_[_0x4773('0x4b')](_0x2749ad['where'],{'$or':_[_0x4773('0x31')](_0x2749ad[_0x4773('0x42')],function(_0x8ee4a9){var _0x3a42d3={};_0x3a42d3[_0x8ee4a9]={'$like':'%'+_0x334739[_0x4773('0x3f')][_0x4773('0x2f')]+'%'};return _0x3a42d3;})});}_0x2749ad=_['merge']({},_0x2749ad,_0x334739[_0x4773('0x4d')]);return db[_0x4773('0x6a')][_0x4773('0x4e')]({'where':_0x2749ad[_0x4773('0x4a')]})['then'](function(_0x492413){_0x441e89[_0x4773('0x4e')]=_0x492413;if(_0x334739[_0x4773('0x3f')][_0x4773('0x55')]){_0x2749ad['include']=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x2749ad);})[_0x4773('0x28')](function(_0x24cbd4){_0x441e89['rows']=_0x24cbd4;return _0x441e89;});}})['then'](respondWithFilteredResult(_0x5ce45c,_0x2749ad))[_0x4773('0x52')](handleError(_0x5ce45c,null));};exports[_0x4773('0x6b')]=function(_0x5198ad,_0x2d4b99,_0x3fc091){var _0x3b0b1d={'raw':!![],'where':{}};var _0x16f7ae={};var _0x20c889={'count':0x0,'rows':[]};return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0x5198ad['params']['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x2d4b99,null))[_0x4773('0x28')](function(_0x188d48){if(_0x188d48){_0x16f7ae[_0x4773('0x3e')]=_['keys'](db[_0x4773('0x6c')][_0x4773('0x3b')]);_0x16f7ae['query']=_[_0x4773('0x40')](_0x5198ad['query']);_0x16f7ae['filters']=_['intersection'](_0x16f7ae[_0x4773('0x3e')],_0x16f7ae[_0x4773('0x3f')]);_0x3b0b1d[_0x4773('0x42')]=_['intersection'](_0x16f7ae[_0x4773('0x3e')],qs[_0x4773('0x44')](_0x5198ad[_0x4773('0x3f')][_0x4773('0x44')]));_0x3b0b1d['attributes']=_0x3b0b1d[_0x4773('0x42')][_0x4773('0x45')]?_0x3b0b1d[_0x4773('0x42')]:_0x16f7ae[_0x4773('0x3e')];if(!_0x5198ad[_0x4773('0x3f')][_0x4773('0x46')](_0x4773('0x47'))){_0x3b0b1d['limit']=qs[_0x4773('0x22')](_0x5198ad[_0x4773('0x3f')][_0x4773('0x22')]);_0x3b0b1d['offset']=qs[_0x4773('0x20')](_0x5198ad[_0x4773('0x3f')][_0x4773('0x20')]);}_0x3b0b1d[_0x4773('0x48')]=qs[_0x4773('0x49')](_0x5198ad['query']['sort']);_0x3b0b1d[_0x4773('0x4a')]=qs[_0x4773('0x41')](_[_0x4773('0x67')](_0x5198ad[_0x4773('0x3f')],_0x16f7ae['filters']));_0x3b0b1d['where'][_0x4773('0x68')]=_0x188d48['id'];if(_0x5198ad[_0x4773('0x3f')]['filter']){_0x3b0b1d[_0x4773('0x4a')]=_[_0x4773('0x4b')](_0x3b0b1d[_0x4773('0x4a')],{'$or':_[_0x4773('0x31')](_0x3b0b1d[_0x4773('0x42')],function(_0x155452){var _0x23db5d={};_0x23db5d[_0x155452]={'$like':'%'+_0x5198ad['query']['filter']+'%'};return _0x23db5d;})});}_0x3b0b1d=_['merge']({},_0x3b0b1d,_0x5198ad[_0x4773('0x4d')]);return db[_0x4773('0x6c')][_0x4773('0x4e')]({'where':_0x3b0b1d[_0x4773('0x4a')]})[_0x4773('0x28')](function(_0x3d3793){_0x20c889[_0x4773('0x4e')]=_0x3d3793;if(_0x5198ad[_0x4773('0x3f')]['includeAll']){_0x3b0b1d[_0x4773('0x4f')]=[{'all':!![]}];}return db[_0x4773('0x6c')][_0x4773('0x50')](_0x3b0b1d);})[_0x4773('0x28')](function(_0x90cf99){_0x20c889[_0x4773('0x51')]=_0x90cf99;return _0x20c889;});}})[_0x4773('0x28')](respondWithFilteredResult(_0x2d4b99,_0x3b0b1d))[_0x4773('0x52')](handleError(_0x2d4b99,null));};exports[_0x4773('0x6d')]=function(_0x1ed07b,_0x46bff0,_0xd4d228){var _0x426673={'raw':!![],'where':{}};var _0x591de4={};var _0x483695={'count':0x0,'rows':[]};return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0x1ed07b[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x46bff0,null))['then'](function(_0x1b7be0){if(_0x1b7be0){_0x591de4[_0x4773('0x3e')]=_[_0x4773('0x40')](db[_0x4773('0x6e')]['rawAttributes']);_0x591de4[_0x4773('0x3f')]=_[_0x4773('0x40')](_0x1ed07b[_0x4773('0x3f')]);_0x591de4['filters']=_[_0x4773('0x43')](_0x591de4[_0x4773('0x3e')],_0x591de4[_0x4773('0x3f')]);_0x426673[_0x4773('0x42')]=_['intersection'](_0x591de4[_0x4773('0x3e')],qs[_0x4773('0x44')](_0x1ed07b[_0x4773('0x3f')][_0x4773('0x44')]));_0x426673['attributes']=_0x426673[_0x4773('0x42')][_0x4773('0x45')]?_0x426673['attributes']:_0x591de4[_0x4773('0x3e')];if(!_0x1ed07b['query'][_0x4773('0x46')](_0x4773('0x47'))){_0x426673['limit']=qs[_0x4773('0x22')](_0x1ed07b['query'][_0x4773('0x22')]);_0x426673[_0x4773('0x20')]=qs[_0x4773('0x20')](_0x1ed07b[_0x4773('0x3f')][_0x4773('0x20')]);}_0x426673[_0x4773('0x48')]=qs[_0x4773('0x49')](_0x1ed07b[_0x4773('0x3f')][_0x4773('0x49')]);_0x426673[_0x4773('0x4a')]=qs['filters'](_[_0x4773('0x67')](_0x1ed07b[_0x4773('0x3f')],_0x591de4[_0x4773('0x41')]));_0x426673[_0x4773('0x4a')][_0x4773('0x68')]=_0x1b7be0['id'];if(_0x1ed07b['query'][_0x4773('0x2f')]){_0x426673['where']=_[_0x4773('0x4b')](_0x426673[_0x4773('0x4a')],{'$or':_['map'](_0x426673[_0x4773('0x42')],function(_0x52e4d5){var _0x3019a={};_0x3019a[_0x52e4d5]={'$like':'%'+_0x1ed07b[_0x4773('0x3f')][_0x4773('0x2f')]+'%'};return _0x3019a;})});}_0x426673=_[_0x4773('0x4b')]({},_0x426673,_0x1ed07b[_0x4773('0x4d')]);return db[_0x4773('0x6e')][_0x4773('0x4e')]({'where':_0x426673['where']})[_0x4773('0x28')](function(_0x1c4d1f){_0x483695[_0x4773('0x4e')]=_0x1c4d1f;if(_0x1ed07b['query'][_0x4773('0x55')]){_0x426673[_0x4773('0x4f')]=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x426673);})['then'](function(_0x403e25){_0x483695['rows']=_0x403e25;return _0x483695;});}})[_0x4773('0x28')](respondWithFilteredResult(_0x46bff0,_0x426673))['catch'](handleError(_0x46bff0,null));};exports['getTeams']=function(_0x47b7a5,_0x5bfd77,_0x20bdd1){var _0x1543d3={};var _0x1232ae={};var _0x110ffe;var _0x16af94;return db['VoiceQueue']['findOne']({'where':{'id':_0x47b7a5[_0x4773('0x54')]['id']}})['then'](handleEntityNotFound(_0x5bfd77,null))[_0x4773('0x28')](function(_0x16e9fa){if(_0x16e9fa){_0x110ffe=_0x16e9fa;_0x1232ae[_0x4773('0x3e')]=_[_0x4773('0x40')](db[_0x4773('0x6f')][_0x4773('0x3b')]);_0x1232ae['query']=_[_0x4773('0x40')](_0x47b7a5[_0x4773('0x3f')]);_0x1232ae['filters']=_[_0x4773('0x43')](_0x1232ae[_0x4773('0x3e')],_0x1232ae['query']);_0x1543d3[_0x4773('0x42')]=_['intersection'](_0x1232ae['model'],qs[_0x4773('0x44')](_0x47b7a5['query'][_0x4773('0x44')]));_0x1543d3[_0x4773('0x42')]=_0x1543d3[_0x4773('0x42')][_0x4773('0x45')]?_0x1543d3[_0x4773('0x42')]:_0x1232ae['model'];_0x1543d3[_0x4773('0x48')]=qs['sort'](_0x47b7a5[_0x4773('0x3f')][_0x4773('0x49')]);_0x1543d3[_0x4773('0x4a')]=qs['filters'](_[_0x4773('0x67')](_0x47b7a5['query'],_0x1232ae[_0x4773('0x41')]));if(_0x47b7a5[_0x4773('0x3f')][_0x4773('0x2f')]){_0x1543d3[_0x4773('0x4a')]=_[_0x4773('0x4b')](_0x1543d3['where'],{'$or':_['map'](_0x1543d3[_0x4773('0x42')],function(_0x2bfd9b){var _0x3fa2a1={};_0x3fa2a1[_0x2bfd9b]={'$like':'%'+_0x47b7a5[_0x4773('0x3f')]['filter']+'%'};return _0x3fa2a1;})});}_0x1543d3=_[_0x4773('0x4b')]({},_0x1543d3,_0x47b7a5['options']);return _0x110ffe[_0x4773('0x70')](_0x1543d3);}})[_0x4773('0x28')](function(_0x4627f8){if(_0x4627f8){_0x16af94=_0x4627f8[_0x4773('0x45')];if(!_0x47b7a5[_0x4773('0x3f')][_0x4773('0x46')](_0x4773('0x47'))){_0x1543d3['limit']=qs[_0x4773('0x22')](_0x47b7a5['query'][_0x4773('0x22')]);_0x1543d3[_0x4773('0x20')]=qs[_0x4773('0x20')](_0x47b7a5[_0x4773('0x3f')][_0x4773('0x20')]);}return _0x110ffe[_0x4773('0x70')](_0x1543d3);}})['then'](function(_0x5c5dcf){if(_0x5c5dcf){return _0x5c5dcf?{'count':_0x16af94,'rows':_0x5c5dcf}:null;}})[_0x4773('0x28')](respondWithResult(_0x5bfd77,null))[_0x4773('0x52')](handleError(_0x5bfd77,null));};exports[_0x4773('0x71')]=function(_0x172523,_0xc3481c,_0xacf44f){var _0x223f2e=_0x172523[_0x4773('0x57')][_0x4773('0x72')];var _0x772f6b=_[_0x4773('0x31')](_0x223f2e,'id');return db['Team'][_0x4773('0x50')]({'where':{'id':_0x772f6b},'attributes':['id'],'include':[{'model':db[_0x4773('0x73')],'as':_0x4773('0x74'),'attributes':['id',_0x4773('0x37'),_0x4773('0x75'),'voicePause',_0x4773('0x76')],'raw':!![]}]})[_0x4773('0x28')](function(_0xae67dc){if(_0xae67dc){var _0x392dbb=_[_0x4773('0x77')](_0xae67dc,function(_0xa525e5){var _0x1deae8=_0xa525e5[_0x4773('0x2a')]({'plain':!![]});_0x1deae8['Agents'][_0x4773('0x78')](function(_0x22fab4){_0x22fab4[_0x4773('0x79')]=_[_0x4773('0x35')](_0x223f2e,{'id':_0x1deae8['id']})['penalty'];});return _0x1deae8['Agents'];});return db['VoiceQueue'][_0x4773('0x35')]({'where':{'id':_0x172523['params']['id']}})['then'](function(_0x24dda0){return db[_0x4773('0x7a')]['transaction'](function(_0x460022){return _0x24dda0[_0x4773('0x71')](_0x772f6b,{'transaction':_0x460022})['then'](function(){return BPromise[_0x4773('0x7b')](_0x223f2e,function(_0x494029){return db[_0x4773('0x7c')][_0x4773('0x7d')]({'TeamId':_0x494029['id'],'VoiceQueueId':_0x172523[_0x4773('0x54')]['id'],'penalty':_0x494029['penalty']},{'transaction':_0x460022});});})['then'](function(){return BPromise[_0x4773('0x7b')](_0x392dbb,function(_0x4e64ff){return db[_0x4773('0x7e')][_0x4773('0x7f')]({'where':{'UserId':_0x4e64ff['id'],'VoiceQueueId':_0x172523[_0x4773('0x54')]['id']},'defaults':{'penalty':_0x4e64ff[_0x4773('0x79')]},'transaction':_0x460022});});})[_0x4773('0x28')](function(){return BPromise['each'](_[_0x4773('0x2f')](_0x392dbb,{'online':!![]}),function(_0x3ebdcf){return db[_0x4773('0x80')][_0x4773('0x7d')]({'membername':_0x3ebdcf[_0x4773('0x37')],'UserId':_0x3ebdcf['id'],'queue_name':_0x24dda0[_0x4773('0x37')],'VoiceQueueId':_0x24dda0['id'],'interface':_[_0x4773('0x81')](_0x3ebdcf[_0x4773('0x76')])?util['format'](_0x4773('0x82'),_0x3ebdcf[_0x4773('0x37')]):_0x3ebdcf[_0x4773('0x76')],'paused':_0x3ebdcf[_0x4773('0x83')]||![],'penalty':_0x3ebdcf['penalty']},{'transaction':_0x460022});});})['then'](function(){_0x392dbb[_0x4773('0x78')](function(_0x2febaa){socket[_0x4773('0x84')]('userVoiceQueue:save',{'UserId':_0x2febaa['id'],'VoiceQueueId':_0x24dda0['id']});});});});});}})['then'](respondWithStatusCode(_0xc3481c,null))[_0x4773('0x52')](handleError(_0xc3481c,null));};exports[_0x4773('0x85')]=function(_0x3f1266,_0x58a2e1,_0x342e62){return db[_0x4773('0x6f')][_0x4773('0x50')]({'where':{'id':_0x3f1266[_0x4773('0x3f')][_0x4773('0x86')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x4773('0x28')](handleEntityNotFound(_0x58a2e1,null))[_0x4773('0x28')](function(_0xd3031){var _0x258802=_[_0x4773('0x31')](_0xd3031,'id');var _0x4c0f47=[];var _0xff016a=[];var _0x1bc287=squel[_0x4773('0x87')]();_0x1bc287[_0x4773('0x88')](_0x4773('0x89'))[_0x4773('0x8a')]('team_has_voice_queues','tq')['join'](_0x4773('0x8b'),'ut',_0x4773('0x8c'))[_0x4773('0x4a')](_0x4773('0x8d'),_0x3f1266[_0x4773('0x54')]['id']);for(var _0x45d862=0x0;_0x45d862<_0xd3031[_0x4773('0x45')];_0x45d862+=0x1){let _0x45c9e7=_0xd3031[_0x45d862];for(var _0x196bd0=0x0;_0x196bd0<_0x45c9e7[_0x4773('0x74')][_0x4773('0x45')];_0x196bd0+=0x1){let _0xf616ec=_0x45c9e7['Agents'][_0x196bd0];var _0x192f8b=_0x1bc287['clone']();_0x192f8b['where'](_0x4773('0x8e'),_0xf616ec['id']);_0xff016a['push'](db[_0x4773('0x7a')]['query'](_0x192f8b['toString'](),{'type':db['sequelize'][_0x4773('0x8f')][_0x4773('0x90')]})[_0x4773('0x28')](function(_0x269d91){if(_0x269d91['length']===0x1){return _0xf616ec['id'];}else{var _0x3594a7=_['every'](_[_0x4773('0x31')](_0x269d91,_0x4773('0x91')),function(_0x36f7b6){return _['includes'](_0x258802,_0x36f7b6);});if(_0x3594a7){return _0xf616ec['id'];}}}));}}return BPromise[_0x4773('0x92')](_0xff016a)[_0x4773('0x28')](function(_0x19fe2e){_0x4c0f47=_(_0x4c0f47)[_0x4773('0x93')](_0x19fe2e)[_0x4773('0x94')]()[_0x4773('0x32')]();return db[_0x4773('0x3a')][_0x4773('0x35')]({'where':{'id':_0x3f1266[_0x4773('0x54')]['id']}})[_0x4773('0x28')](function(_0x317ec7){return db[_0x4773('0x7a')][_0x4773('0x95')](function(_0x44bed8){return _0x317ec7[_0x4773('0x85')](_0x3f1266[_0x4773('0x3f')][_0x4773('0x86')],{'transaction':_0x44bed8})[_0x4773('0x28')](function(){if(!_['isEmpty'](_0x4c0f47)){return _0x317ec7['removeAgents'](_0x4c0f47,{'transaction':_0x44bed8})[_0x4773('0x28')](function(){return db[_0x4773('0x80')][_0x4773('0x29')]({'where':{'VoiceQueueId':_0x3f1266[_0x4773('0x54')]['id'],'UserId':_0x4c0f47},'transaction':_0x44bed8});});}})['then'](function(){_0x4c0f47['forEach'](function(_0x3867bc){socket[_0x4773('0x84')](_0x4773('0x96'),{'UserId':_0x3867bc,'VoiceQueueId':_0x317ec7['id']});});});});});});})[_0x4773('0x28')](respondWithStatusCode(_0x58a2e1,null))[_0x4773('0x52')](handleError(_0x58a2e1,null));};exports[_0x4773('0x97')]=function(_0x41969a,_0x4a47b1,_0x591ff9){var _0x1b7567,_0x20482c;return db[_0x4773('0x3a')][_0x4773('0x35')]({'where':{'id':_0x41969a[_0x4773('0x54')]['id']}})['then'](handleEntityNotFound(_0x4a47b1,null))[_0x4773('0x28')](function(_0x29e463){if(_0x29e463){_0x20482c=_0x29e463;return _0x29e463['addAgents'](_0x41969a['body'][_0x4773('0x86')],_[_0x4773('0x5c')](_0x41969a[_0x4773('0x57')],[_0x4773('0x86'),'id'])||{})['spread'](function(_0x47f5b3){for(var _0x2dc218=0x0;_0x2dc218<_0x41969a[_0x4773('0x57')][_0x4773('0x86')][_0x4773('0x45')];_0x2dc218+=0x1){socket['emit']('userVoiceQueue:save',{'UserId':Number(_0x41969a[_0x4773('0x57')][_0x4773('0x86')][_0x2dc218]),'VoiceQueueId':Number(_0x41969a[_0x4773('0x54')]['id'])});}return _0x47f5b3;});}})['then'](function(_0x59349c){_0x1b7567=_0x59349c||[];if(_0x20482c){return db['User'][_0x4773('0x50')]({'where':{'id':_0x41969a['body'][_0x4773('0x86')]},'attributes':['id','name','online',_0x4773('0x83'),_0x4773('0x76')],'raw':!![]});}})[_0x4773('0x28')](function(_0x4f3664){if(!_[_0x4773('0x98')](_0x4f3664)){var _0x1a6e4e=[];for(var _0x1fba47=0x0;_0x1fba47<_0x4f3664['length'];_0x1fba47++){if(_0x4f3664[_0x1fba47][_0x4773('0x75')]){_0x1a6e4e['push'](db[_0x4773('0x80')][_0x4773('0x7d')]({'membername':_0x4f3664[_0x1fba47][_0x4773('0x37')],'UserId':_0x4f3664[_0x1fba47]['id'],'queue_name':_0x20482c[_0x4773('0x37')],'VoiceQueueId':_0x20482c['id'],'interface':_['isNil'](_0x4f3664[_0x1fba47][_0x4773('0x76')])?util[_0x4773('0x99')](_0x4773('0x82'),_0x4f3664[_0x1fba47][_0x4773('0x37')]):_0x4f3664[_0x1fba47][_0x4773('0x76')],'paused':_0x4f3664[_0x1fba47][_0x4773('0x83')]||![],'penalty':_0x41969a[_0x4773('0x57')][_0x4773('0x79')]||0x0}));}}return BPromise['all'](_0x1a6e4e);}})[_0x4773('0x28')](function(){return _0x1b7567;})[_0x4773('0x28')](respondWithResult(_0x4a47b1,null))['catch'](handleError(_0x4a47b1,null));};exports[_0x4773('0x9a')]=function(_0x2a7e1d,_0x6238dc,_0x46f834){return db['VoiceQueue'][_0x4773('0x35')]({'where':{'id':_0x2a7e1d[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x6238dc,null))[_0x4773('0x28')](function(_0x5a0f4b){if(_0x5a0f4b){return _0x5a0f4b[_0x4773('0x9a')](_0x2a7e1d['query'][_0x4773('0x86')])[_0x4773('0x28')](function(){if(_[_0x4773('0x9b')](_0x2a7e1d[_0x4773('0x3f')][_0x4773('0x86')])){for(var _0x432135=0x0;_0x432135<_0x2a7e1d[_0x4773('0x3f')][_0x4773('0x86')][_0x4773('0x45')];_0x432135+=0x1){socket['emit'](_0x4773('0x96'),{'UserId':Number(_0x2a7e1d[_0x4773('0x3f')][_0x4773('0x86')][_0x432135]),'VoiceQueueId':Number(_0x2a7e1d['params']['id'])});}}else{socket['emit'](_0x4773('0x96'),{'UserId':Number(_0x2a7e1d[_0x4773('0x3f')][_0x4773('0x86')]),'VoiceQueueId':Number(_0x2a7e1d[_0x4773('0x54')]['id'])});}});}})[_0x4773('0x28')](function(_0x28885d){return db[_0x4773('0x80')][_0x4773('0x29')]({'where':{'VoiceQueueId':_0x2a7e1d[_0x4773('0x54')]['id'],'UserId':_0x2a7e1d[_0x4773('0x3f')][_0x4773('0x86')]}})['then'](function(){return _0x28885d;});})[_0x4773('0x28')](respondWithStatusCode(_0x6238dc,null))[_0x4773('0x52')](handleError(_0x6238dc,null));};exports[_0x4773('0x9c')]=function(_0x42ecd5,_0x34045e,_0x3c32d6){var _0x43e63d={};var _0x542bb9={};var _0x4783dc;var _0xacd3aa;return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0x42ecd5[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x34045e,null))[_0x4773('0x28')](function(_0x28cdae){if(_0x28cdae){_0x4783dc=_0x28cdae;_0x542bb9[_0x4773('0x3e')]=_[_0x4773('0x40')](db[_0x4773('0x73')][_0x4773('0x3b')]);_0x542bb9[_0x4773('0x3f')]=_['keys'](_0x42ecd5[_0x4773('0x3f')]);_0x542bb9[_0x4773('0x41')]=_[_0x4773('0x43')](_0x542bb9[_0x4773('0x3e')],_0x542bb9['query']);_0x43e63d[_0x4773('0x42')]=_['intersection'](_0x542bb9['model'],qs[_0x4773('0x44')](_0x42ecd5[_0x4773('0x3f')][_0x4773('0x44')]));_0x43e63d[_0x4773('0x42')]=_0x43e63d[_0x4773('0x42')][_0x4773('0x45')]?_0x43e63d[_0x4773('0x42')]:_0x542bb9[_0x4773('0x3e')];_0x43e63d[_0x4773('0x48')]=qs[_0x4773('0x49')](_0x42ecd5[_0x4773('0x3f')][_0x4773('0x49')]);_0x43e63d[_0x4773('0x4a')]=qs[_0x4773('0x41')](_[_0x4773('0x67')](_0x42ecd5[_0x4773('0x3f')],_0x542bb9[_0x4773('0x41')]));if(_0x42ecd5[_0x4773('0x3f')][_0x4773('0x2f')]){_0x43e63d[_0x4773('0x4a')]=_[_0x4773('0x4b')](_0x43e63d['where'],{'$or':_[_0x4773('0x31')](_0x43e63d[_0x4773('0x42')],function(_0x16c31c){var _0x255674={};_0x255674[_0x16c31c]={'$like':'%'+_0x42ecd5[_0x4773('0x3f')]['filter']+'%'};return _0x255674;})});}_0x43e63d=_[_0x4773('0x4b')]({},_0x43e63d,_0x42ecd5[_0x4773('0x4d')]);return _0x4783dc[_0x4773('0x9c')](_0x43e63d);}})[_0x4773('0x28')](function(_0x48fee9){if(_0x48fee9){_0xacd3aa=_0x48fee9[_0x4773('0x45')];if(!_0x42ecd5[_0x4773('0x3f')][_0x4773('0x46')]('nolimit')){_0x43e63d['limit']=qs[_0x4773('0x22')](_0x42ecd5['query']['limit']);_0x43e63d[_0x4773('0x20')]=qs[_0x4773('0x20')](_0x42ecd5[_0x4773('0x3f')]['offset']);}return _0x4783dc[_0x4773('0x9c')](_0x43e63d);}})['then'](function(_0x19efbe){if(_0x19efbe){return _0x19efbe?{'count':_0xacd3aa,'rows':_0x19efbe}:null;}})[_0x4773('0x28')](respondWithResult(_0x34045e,null))[_0x4773('0x52')](handleError(_0x34045e,null));};exports[_0x4773('0x9d')]=function(_0x4a75be,_0x4c03f1,_0x59e3fe){var _0x48d640={};var _0x18c0c6={};var _0x48d3ce;var _0x565489;return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0x4a75be['params']['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x4c03f1,null))[_0x4773('0x28')](function(_0x2c378f){if(_0x2c378f){_0x48d3ce=_0x2c378f;_0x18c0c6[_0x4773('0x3e')]=_[_0x4773('0x40')](db[_0x4773('0x80')][_0x4773('0x3b')]);_0x18c0c6[_0x4773('0x3f')]=_[_0x4773('0x40')](_0x4a75be['query']);_0x18c0c6[_0x4773('0x41')]=_[_0x4773('0x43')](_0x18c0c6[_0x4773('0x3e')],_0x18c0c6[_0x4773('0x3f')]);_0x48d640[_0x4773('0x42')]=_[_0x4773('0x43')](_0x18c0c6[_0x4773('0x3e')],qs[_0x4773('0x44')](_0x4a75be[_0x4773('0x3f')][_0x4773('0x44')]));_0x48d640[_0x4773('0x42')]=_0x48d640[_0x4773('0x42')][_0x4773('0x45')]?_0x48d640[_0x4773('0x42')]:_0x18c0c6[_0x4773('0x3e')];_0x48d640[_0x4773('0x48')]=qs['sort'](_0x4a75be[_0x4773('0x3f')][_0x4773('0x49')]);_0x48d640[_0x4773('0x4a')]=qs[_0x4773('0x41')](_[_0x4773('0x67')](_0x4a75be['query'],_0x18c0c6['filters']));if(_0x4a75be[_0x4773('0x3f')]['filter']){_0x48d640['where']=_['merge'](_0x48d640[_0x4773('0x4a')],{'$or':_['map'](_0x48d640['attributes'],function(_0x6f30ec){var _0x11f10d={};_0x11f10d[_0x6f30ec]={'$like':'%'+_0x4a75be['query'][_0x4773('0x2f')]+'%'};return _0x11f10d;})});}_0x48d640=_[_0x4773('0x4b')]({},_0x48d640,_0x4a75be[_0x4773('0x4d')]);return _0x48d3ce[_0x4773('0x9d')](_0x48d640);}})[_0x4773('0x28')](function(_0x248999){if(_0x248999){_0x565489=_0x248999[_0x4773('0x45')];if(!_0x4a75be['query'][_0x4773('0x46')](_0x4773('0x47'))){_0x48d640['limit']=qs[_0x4773('0x22')](_0x4a75be['query'][_0x4773('0x22')]);_0x48d640[_0x4773('0x20')]=qs[_0x4773('0x20')](_0x4a75be[_0x4773('0x3f')][_0x4773('0x20')]);}return _0x48d3ce['getMembers'](_0x48d640);}})['then'](function(_0x2b0772){return _0x2b0772?{'count':_0x565489,'rows':_0x2b0772}:null;})[_0x4773('0x28')](respondWithResult(_0x4c03f1,null))[_0x4773('0x52')](handleError(_0x4c03f1,null));};exports[_0x4773('0x9e')]=function(_0x214ed6,_0x34f819,_0x1aa53e){var _0x4ea7b3={};var _0x28f151={};var _0x58c459;var _0x348d3b;return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0x214ed6[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x34f819,null))[_0x4773('0x28')](function(_0x59f7d3){if(_0x59f7d3){_0x58c459=_0x59f7d3;_0x28f151[_0x4773('0x3e')]=_['keys'](db[_0x4773('0x9f')][_0x4773('0x3b')]);_0x28f151[_0x4773('0x3f')]=_[_0x4773('0x40')](_0x214ed6[_0x4773('0x3f')]);_0x28f151[_0x4773('0x41')]=_['intersection'](_0x28f151[_0x4773('0x3e')],_0x28f151[_0x4773('0x3f')]);_0x4ea7b3['attributes']=_['intersection'](_0x28f151[_0x4773('0x3e')],qs['fields'](_0x214ed6[_0x4773('0x3f')][_0x4773('0x44')]));_0x4ea7b3[_0x4773('0x42')]=_0x4ea7b3[_0x4773('0x42')][_0x4773('0x45')]?_0x4ea7b3[_0x4773('0x42')]:_0x28f151[_0x4773('0x3e')];_0x4ea7b3[_0x4773('0x48')]=qs['sort'](_0x214ed6['query']['sort']);_0x4ea7b3[_0x4773('0x4a')]=qs[_0x4773('0x41')](_[_0x4773('0x67')](_0x214ed6[_0x4773('0x3f')],_0x28f151[_0x4773('0x41')]));if(_0x214ed6['query']['filter']){_0x4ea7b3['where']=_['merge'](_0x4ea7b3[_0x4773('0x4a')],{'$or':_[_0x4773('0x31')](_0x4ea7b3['attributes'],function(_0x16a33e){var _0x202c5b={};_0x202c5b[_0x16a33e]={'$like':'%'+_0x214ed6['query'][_0x4773('0x2f')]+'%'};return _0x202c5b;})});}_0x4ea7b3=_[_0x4773('0x4b')]({},_0x4ea7b3,_0x214ed6[_0x4773('0x4d')]);return _0x58c459[_0x4773('0x9e')](_0x4ea7b3);}})[_0x4773('0x28')](function(_0x586c51){if(_0x586c51){_0x348d3b=_0x586c51[_0x4773('0x45')];if(!_0x214ed6[_0x4773('0x3f')]['hasOwnProperty'](_0x4773('0x47'))){_0x4ea7b3[_0x4773('0x22')]=qs[_0x4773('0x22')](_0x214ed6[_0x4773('0x3f')][_0x4773('0x22')]);_0x4ea7b3[_0x4773('0x20')]=qs[_0x4773('0x20')](_0x214ed6[_0x4773('0x3f')][_0x4773('0x20')]);}return _0x58c459[_0x4773('0x9e')](_0x4ea7b3);}})[_0x4773('0x28')](function(_0x3f0d90){if(_0x3f0d90){return _0x3f0d90?{'count':_0x348d3b,'rows':_0x3f0d90}:null;}})['then'](respondWithResult(_0x34f819,null))[_0x4773('0x52')](handleError(_0x34f819,null));};exports[_0x4773('0xa0')]=function(_0x15ebf7,_0x4929cb,_0x481b6f){var _0x35c678,_0x45ec32;return db['VoiceQueue'][_0x4773('0x35')]({'where':{'id':_0x15ebf7[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x4929cb,null))['then'](function(_0x582c42){if(_0x582c42){_0x45ec32=_0x582c42;return _0x582c42[_0x4773('0xa0')](_0x15ebf7[_0x4773('0x57')][_0x4773('0x86')],_[_0x4773('0x5c')](_0x15ebf7['body'],[_0x4773('0x86'),'id'])||{});}return null;})[_0x4773('0xa1')](function(_0x28d265){var _0x50bbd3;_0x35c678=_0x28d265||[];var _0x194c9f=[];if(_0x28d265){for(var _0x3c941a=0x0;_0x3c941a<_0x28d265['length'];_0x3c941a+=0x1){var _0x3928a4=_0x28d265[_0x3c941a][_0x4773('0x2a')]({'plain':!![]});_0x45ec32[_0x4773('0xa2')]=_0x15ebf7[_0x4773('0x57')]['dialCheckDuplicateType']?_0x15ebf7[_0x4773('0x57')][_0x4773('0xa2')]:_0x45ec32['dialCheckDuplicateType'];switch(_0x45ec32[_0x4773('0xa2')]){case'always':_0x50bbd3=squel['insert']()[_0x4773('0xa3')](_0x4773('0xa4'))['fromQuery']([_0x4773('0xa5'),_0x4773('0xa6'),_0x4773('0xa7'),_0x4773('0xa8'),_0x4773('0x68'),_0x4773('0x5d'),_0x4773('0x5e')],squel[_0x4773('0x87')]()[_0x4773('0x88')](_0x4773('0xa5'),_0x4773('0xa5'))['field']('NOW()',_0x4773('0xa6'))[_0x4773('0x88')]('id',_0x4773('0xa7'))['field'](_0x3928a4[_0x4773('0xa9')][_0x4773('0xaa')](),_0x4773('0xa8'))[_0x4773('0x88')](_0x15ebf7['params']['id'][_0x4773('0xaa')](),_0x4773('0x68'))[_0x4773('0x88')](_0x4773('0xab'),_0x4773('0x5d'))[_0x4773('0x88')](_0x4773('0xab'),_0x4773('0x5e'))[_0x4773('0x8a')]('cm_contacts')[_0x4773('0x4a')]('deletedAt\x20IS\x20NULL')[_0x4773('0x4a')]('ListId\x20=\x20?',_0x3928a4['CmListId'][_0x4773('0xaa')]())['where'](_0x4773('0xac'))[_0x4773('0x4a')](_0x4773('0xad'),squel[_0x4773('0x87')]()['field'](_0x4773('0xae'))[_0x4773('0x8a')](_0x4773('0xaf'))[_0x4773('0x4a')](_0x4773('0x8d'),_0x15ebf7[_0x4773('0x54')]['id'][_0x4773('0xaa')]()))[_0x4773('0x4a')]('phone\x20NOT\x20IN\x20(?)',squel[_0x4773('0x87')]()[_0x4773('0x88')](_0x4773('0xb0'))['from'](_0x4773('0xa4'))[_0x4773('0x4a')](_0x4773('0x8d'),_0x15ebf7['params']['id'][_0x4773('0xaa')]())))[_0x4773('0xaa')]();break;case _0x4773('0xb1'):_0x50bbd3=squel['insert']()['into']('cm_hopper')['fromQuery'](['phone','scheduledAt',_0x4773('0xa7'),_0x4773('0xa8'),_0x4773('0x68'),_0x4773('0x5d'),_0x4773('0x5e')],squel[_0x4773('0x87')]()[_0x4773('0x88')](_0x4773('0xa5'),'phone')[_0x4773('0x88')](_0x4773('0xab'),'scheduledAt')['field']('id',_0x4773('0xa7'))[_0x4773('0x88')](_0x3928a4[_0x4773('0xa9')][_0x4773('0xaa')](),_0x4773('0xa8'))['field'](_0x15ebf7['params']['id'][_0x4773('0xaa')](),_0x4773('0x68'))[_0x4773('0x88')](_0x4773('0xab'),_0x4773('0x5d'))[_0x4773('0x88')](_0x4773('0xab'),_0x4773('0x5e'))[_0x4773('0x8a')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x4773('0x4a')](_0x4773('0xb2'),_0x3928a4[_0x4773('0xa9')][_0x4773('0xaa')]())[_0x4773('0x4a')](_0x4773('0xac'))['where'](_0x4773('0xad'),squel[_0x4773('0x87')]()[_0x4773('0x88')](_0x4773('0xb0'))[_0x4773('0x8a')](_0x4773('0xa4'))[_0x4773('0x4a')](_0x4773('0x8d'),_0x15ebf7[_0x4773('0x54')]['id'][_0x4773('0xaa')]())))['toString']();break;default:_0x50bbd3=squel[_0x4773('0xb3')]()[_0x4773('0xa3')](_0x4773('0xa4'))[_0x4773('0xb4')](['phone',_0x4773('0xa6'),'ContactId',_0x4773('0xa8'),_0x4773('0x68'),_0x4773('0x5d'),'updatedAt'],squel[_0x4773('0x87')]()['field'](_0x4773('0xa5'),_0x4773('0xa5'))[_0x4773('0x88')](_0x4773('0xab'),_0x4773('0xa6'))[_0x4773('0x88')]('id',_0x4773('0xa7'))[_0x4773('0x88')](_0x3928a4['CmListId'][_0x4773('0xaa')](),_0x4773('0xa8'))['field'](_0x15ebf7[_0x4773('0x54')]['id']['toString'](),_0x4773('0x68'))[_0x4773('0x88')](_0x4773('0xab'),'createdAt')[_0x4773('0x88')](_0x4773('0xab'),'updatedAt')[_0x4773('0x8a')](_0x4773('0xb5'))[_0x4773('0x4a')](_0x4773('0xb6'))[_0x4773('0x4a')](_0x4773('0xb2'),_0x3928a4[_0x4773('0xa9')][_0x4773('0xaa')]())[_0x4773('0x4a')](_0x4773('0xac')))[_0x4773('0xaa')]();}_0x194c9f[_0x4773('0xb7')](db[_0x4773('0x7a')][_0x4773('0x3f')](_0x50bbd3));}return BPromise['all'](_0x194c9f);}})[_0x4773('0x28')](function(){return _0x35c678;})['then'](respondWithResult(_0x4929cb,null))[_0x4773('0x52')](handleError(_0x4929cb,null));};exports[_0x4773('0xb8')]=function(_0x5e1161,_0xad76eb,_0x20797e){return db[_0x4773('0x3a')][_0x4773('0x35')]({'where':{'id':_0x5e1161[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0xad76eb,null))['then'](function(_0x43e576){if(_0x43e576){return _0x43e576[_0x4773('0xb8')](_0x5e1161['query'][_0x4773('0x86')]);}})[_0x4773('0x28')](function(_0xaecf5d){if(_0xaecf5d){return db['CmHopper'][_0x4773('0x29')]({'where':{'ListId':_0x5e1161[_0x4773('0x3f')][_0x4773('0x86')],'VoiceQueueId':_0x5e1161[_0x4773('0x54')]['id']}})[_0x4773('0x28')](function(){return _0xaecf5d;});}})[_0x4773('0x28')](respondWithStatusCode(_0xad76eb,null))[_0x4773('0x52')](handleError(_0xad76eb,null));};exports[_0x4773('0xb9')]=function(_0x266a2a,_0x96f3b,_0x2de247){var _0x38c176={};var _0x4b6265={};var _0x53a3e7;var _0x90d62d;return db[_0x4773('0x3a')][_0x4773('0x65')]({'where':{'id':_0x266a2a['params']['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x96f3b,null))[_0x4773('0x28')](function(_0x5f35df){if(_0x5f35df){_0x53a3e7=_0x5f35df;_0x4b6265[_0x4773('0x3e')]=_[_0x4773('0x40')](db[_0x4773('0x9f')][_0x4773('0x3b')]);_0x4b6265[_0x4773('0x3f')]=_[_0x4773('0x40')](_0x266a2a[_0x4773('0x3f')]);_0x4b6265[_0x4773('0x41')]=_[_0x4773('0x43')](_0x4b6265[_0x4773('0x3e')],_0x4b6265['query']);_0x38c176[_0x4773('0x42')]=_[_0x4773('0x43')](_0x4b6265[_0x4773('0x3e')],qs[_0x4773('0x44')](_0x266a2a[_0x4773('0x3f')]['fields']));_0x38c176[_0x4773('0x42')]=_0x38c176[_0x4773('0x42')][_0x4773('0x45')]?_0x38c176[_0x4773('0x42')]:_0x4b6265['model'];_0x38c176[_0x4773('0x48')]=qs[_0x4773('0x49')](_0x266a2a[_0x4773('0x3f')]['sort']);_0x38c176[_0x4773('0x4a')]=qs[_0x4773('0x41')](_[_0x4773('0x67')](_0x266a2a[_0x4773('0x3f')],_0x4b6265[_0x4773('0x41')]));if(_0x266a2a['query']['filter']){_0x38c176[_0x4773('0x4a')]=_[_0x4773('0x4b')](_0x38c176['where'],{'$or':_['map'](_0x38c176[_0x4773('0x42')],function(_0x46300a){var _0xd2a248={};_0xd2a248[_0x46300a]={'$like':'%'+_0x266a2a['query'][_0x4773('0x2f')]+'%'};return _0xd2a248;})});}_0x38c176=_['merge']({},_0x38c176,_0x266a2a[_0x4773('0x4d')]);return _0x53a3e7[_0x4773('0xb9')](_0x38c176);}})[_0x4773('0x28')](function(_0x3faee6){if(_0x3faee6){_0x90d62d=_0x3faee6[_0x4773('0x45')];if(!_0x266a2a[_0x4773('0x3f')]['hasOwnProperty'](_0x4773('0x47'))){_0x38c176[_0x4773('0x22')]=qs['limit'](_0x266a2a[_0x4773('0x3f')][_0x4773('0x22')]);_0x38c176[_0x4773('0x20')]=qs[_0x4773('0x20')](_0x266a2a['query'][_0x4773('0x20')]);}return _0x53a3e7['getBlackLists'](_0x38c176);}})['then'](function(_0x3d91c8){if(_0x3d91c8){return _0x3d91c8?{'count':_0x90d62d,'rows':_0x3d91c8}:null;}})[_0x4773('0x28')](respondWithResult(_0x96f3b,null))['catch'](handleError(_0x96f3b,null));};exports[_0x4773('0xba')]=function(_0x2802f2,_0x435ed3,_0x5e4d5f){var _0x1437de,_0x3c1d6c;return db[_0x4773('0x3a')][_0x4773('0x35')]({'where':{'id':_0x2802f2[_0x4773('0x54')]['id']}})['then'](handleEntityNotFound(_0x435ed3,null))[_0x4773('0x28')](function(_0x1e0dda){if(_0x1e0dda){_0x3c1d6c=_0x1e0dda;return _0x1e0dda[_0x4773('0xba')](_0x2802f2[_0x4773('0x57')][_0x4773('0x86')],_[_0x4773('0x5c')](_0x2802f2[_0x4773('0x57')],[_0x4773('0x86'),'id'])||{});}return null;})['spread'](function(_0x341a15){var _0x52f292;_0x1437de=_0x341a15||[];var _0x19ad00=[];if(_0x341a15){for(var _0x305bd5=0x0;_0x305bd5<_0x341a15['length'];_0x305bd5+=0x1){var _0x1eba3e=_0x341a15[_0x305bd5][_0x4773('0x2a')]({'plain':!![]});_0x52f292=squel[_0x4773('0xb3')]()[_0x4773('0xa3')](_0x4773('0xbb'))['fromQuery']([_0x4773('0xa5'),_0x4773('0xa7'),_0x4773('0xa8'),'VoiceQueueId','createdAt',_0x4773('0x5e')],squel[_0x4773('0x87')]()['field'](_0x4773('0xa5'),_0x4773('0xa5'))[_0x4773('0x88')]('id',_0x4773('0xa7'))[_0x4773('0x88')](_0x1eba3e[_0x4773('0xa9')][_0x4773('0xaa')](),_0x4773('0xa8'))[_0x4773('0x88')](_0x2802f2[_0x4773('0x54')]['id'][_0x4773('0xaa')](),_0x4773('0x68'))[_0x4773('0x88')](_0x4773('0xab'),'createdAt')[_0x4773('0x88')](_0x4773('0xab'),_0x4773('0x5e'))[_0x4773('0x8a')]('cm_contacts')[_0x4773('0x4a')](_0x4773('0xb6'))[_0x4773('0x4a')]('ListId\x20=\x20?',_0x1eba3e['CmListId'][_0x4773('0xaa')]())[_0x4773('0x4a')]('phone\x20IS\x20NOT\x20NULL'))['toString']();_0x19ad00['push'](db[_0x4773('0x7a')][_0x4773('0x3f')](_0x52f292));}return BPromise[_0x4773('0x92')](_0x19ad00);}})[_0x4773('0x28')](function(){return _0x1437de;})['then'](respondWithResult(_0x435ed3,null))[_0x4773('0x52')](handleError(_0x435ed3,null));};exports['removeBlackLists']=function(_0x4f12e3,_0x586e06,_0xd1de78){return db[_0x4773('0x3a')]['find']({'where':{'id':_0x4f12e3[_0x4773('0x54')]['id']}})[_0x4773('0x28')](handleEntityNotFound(_0x586e06,null))[_0x4773('0x28')](function(_0xcee7f0){if(_0xcee7f0){return _0xcee7f0[_0x4773('0xbc')](_0x4f12e3[_0x4773('0x3f')][_0x4773('0x86')]);}})[_0x4773('0x28')](function(_0x196956){if(_0x196956){return db[_0x4773('0x6e')][_0x4773('0x29')]({'where':{'ListId':_0x4f12e3['query'][_0x4773('0x86')],'VoiceQueueId':_0x4f12e3[_0x4773('0x54')]['id']}})[_0x4773('0x28')](function(){return _0x196956;});}})['then'](respondWithStatusCode(_0x586e06,null))[_0x4773('0x52')](handleError(_0x586e06,null));};
\ No newline at end of file
index e71586c..c8994be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ace=['emit','hasOwnProperty','exports','../../mysqldb','VoiceQueue','setMaxListeners','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7ace,0x10d));var _0xe7ac=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x7ace[_0x36eaaa];return _0x461349;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0xe7ac('0x0'))['db'][_0xe7ac('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xe7ac('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe7ac('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2613c2){return function(_0x3fe2f6,_0x1537c2,_0x3a9976){VoiceQueueEvents[_0xe7ac('0x4')](_0x2613c2+':'+_0x3fe2f6['id'],_0x3fe2f6);VoiceQueueEvents[_0xe7ac('0x4')](_0x2613c2,_0x3fe2f6);_0x3a9976(null);};}for(var e in events){if(events[_0xe7ac('0x5')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0xe7ac('0x6')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x9e1b=['hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove','emit'];(function(_0x1920c6,_0x5b8d2b){var _0x4f5e75=function(_0x7ee007){while(--_0x7ee007){_0x1920c6['push'](_0x1920c6['shift']());}};_0x4f5e75(++_0x5b8d2b);}(_0x9e1b,0xb3));var _0xb9e1=function(_0x1f0069,_0x295ccf){_0x1f0069=_0x1f0069-0x0;var _0x37159e=_0x9e1b[_0x1f0069];return _0x37159e;};'use strict';var EventEmitter=require(_0xb9e1('0x0'));var VoiceQueue=require(_0xb9e1('0x1'))['db'][_0xb9e1('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xb9e1('0x3')](0x0);var events={'afterCreate':_0xb9e1('0x4'),'afterUpdate':_0xb9e1('0x5'),'afterDestroy':_0xb9e1('0x6')};function emitEvent(_0x1d8708){return function(_0x53ec9d,_0xa41eb4,_0x2d9e78){VoiceQueueEvents[_0xb9e1('0x7')](_0x1d8708+':'+_0x53ec9d['id'],_0x53ec9d);VoiceQueueEvents[_0xb9e1('0x7')](_0x1d8708,_0x53ec9d);_0x2d9e78(null);};}for(var e in events){if(events[_0xb9e1('0x8')](e)){var event=events[e];VoiceQueue[_0xb9e1('0x9')](e,emitEvent(event));}}module[_0xb9e1('0xa')]=VoiceQueueEvents;
\ No newline at end of file
index 0ccb65b..d599a85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0xdbecab,_0x3d54a7){var _0x8c5b6a=function(_0x3745ab){while(--_0x3745ab){_0xdbecab['push'](_0xdbecab['shift']());}};_0x8c5b6a(++_0x3d54a7);}(_0xedd9,0xfc));var _0x9edd=function(_0x2ea797,_0x220c9f){_0x2ea797=_0x2ea797-0x0;var _0x208029=_0xedd9[_0x2ea797];return _0x208029;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0x4b0aff,_0x3cbfdd){var _0x4e5dce=function(_0x6f2464){while(--_0x6f2464){_0x4b0aff['push'](_0x4b0aff['shift']());}};_0x4e5dce(++_0x3cbfdd);}(_0xedd9,0xfc));var _0x9edd=function(_0x468f9e,_0x1654c4){_0x468f9e=_0x468f9e-0x0;var _0x69a41=_0xedd9[_0x468f9e];return _0x69a41;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f77da12..937bacf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64bf=['../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','defaults','localhost','register','request','then','VoiceQueue,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','findAll','options','attributes','limit','include','map','model','debug','GetVoiceQueue','ShowVoiceQueue','VoiceQueue','raw','where','lodash','util','randomstring','ioredis'];(function(_0x250bc3,_0x461f06){var _0x227146=function(_0x1940a3){while(--_0x1940a3){_0x250bc3['push'](_0x250bc3['shift']());}};_0x227146(++_0x461f06);}(_0x64bf,0xda));var _0xf64b=function(_0x36fd1d,_0x14c9ff){_0x36fd1d=_0x36fd1d-0x0;var _0x5f1bd4=_0x64bf[_0x36fd1d];return _0x5f1bd4;};'use strict';var _=require(_0xf64b('0x0'));var util=require(_0xf64b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xf64b('0x2'));var fs=require('fs');var Redis=require(_0xf64b('0x3'));var db=require(_0xf64b('0x4'))['db'];var utils=require(_0xf64b('0x5'));var logger=require(_0xf64b('0x6'))(_0xf64b('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xf64b('0x8')]({'port':0x232a});config[_0xf64b('0x9')]=_[_0xf64b('0xa')](config[_0xf64b('0x9')],{'host':_0xf64b('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf64b('0x9')]));require('./voiceQueue.socket')[_0xf64b('0xc')](socket);function respondWithRpcPromise(_0x344bc6,_0x40c04a,_0x3b09dd){return new BPromise(function(_0x2395eb,_0x118ea8){return client[_0xf64b('0xd')](_0x344bc6,_0x3b09dd)[_0xf64b('0xe')](function(_0x5bbb3a){logger['info'](_0xf64b('0xf'),_0x40c04a,'request\x20sent');logger['debug']('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x40c04a,'request\x20sent',JSON[_0xf64b('0x10')](_0x5bbb3a));if(_0x5bbb3a[_0xf64b('0x11')]){if(_0x5bbb3a[_0xf64b('0x11')][_0xf64b('0x12')]===0x1f4){logger[_0xf64b('0x11')]('VoiceQueue,\x20%s,\x20%s',_0x40c04a,_0x5bbb3a[_0xf64b('0x11')]['message']);return _0x118ea8(_0x5bbb3a[_0xf64b('0x11')][_0xf64b('0x13')]);}logger[_0xf64b('0x11')](_0xf64b('0xf'),_0x40c04a,_0x5bbb3a[_0xf64b('0x11')][_0xf64b('0x13')]);return _0x2395eb(_0x5bbb3a[_0xf64b('0x11')][_0xf64b('0x13')]);}else{logger[_0xf64b('0x14')](_0xf64b('0xf'),_0x40c04a,_0xf64b('0x15'));_0x2395eb(_0x5bbb3a[_0xf64b('0x16')][_0xf64b('0x13')]);}})[_0xf64b('0x17')](function(_0x41060f){logger['error'](_0xf64b('0xf'),_0x40c04a,_0x41060f);_0x118ea8(_0x41060f);});});}exports['GetVoiceQueue']=function(_0x722dff){var _0x5d3e60=this;return new Promise(function(_0x5764c0,_0x20b4c1){return db['VoiceQueue'][_0xf64b('0x18')]({'raw':_0x722dff[_0xf64b('0x19')]?_0x722dff[_0xf64b('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x722dff[_0xf64b('0x19')]?_0x722dff[_0xf64b('0x19')]['where']||null:null,'attributes':_0x722dff['options']?_0x722dff[_0xf64b('0x19')][_0xf64b('0x1a')]||null:null,'limit':_0x722dff[_0xf64b('0x19')]?_0x722dff[_0xf64b('0x19')][_0xf64b('0x1b')]||null:null,'include':_0x722dff[_0xf64b('0x19')]?_0x722dff[_0xf64b('0x19')][_0xf64b('0x1c')]?_[_0xf64b('0x1d')](_0x722dff[_0xf64b('0x19')]['include'],function(_0x1c7df7){return{'model':db[_0x1c7df7[_0xf64b('0x1e')]],'as':_0x1c7df7['as'],'attributes':_0x1c7df7[_0xf64b('0x1a')],'include':_0x1c7df7[_0xf64b('0x1c')]?_[_0xf64b('0x1d')](_0x1c7df7['include'],function(_0x27ba1a){return{'model':db[_0x27ba1a[_0xf64b('0x1e')]],'as':_0x27ba1a['as'],'attributes':_0x27ba1a[_0xf64b('0x1a')],'include':_0x27ba1a['include']?_[_0xf64b('0x1d')](_0x27ba1a[_0xf64b('0x1c')],function(_0x22af80){return{'model':db[_0x22af80['model']],'as':_0x22af80['as'],'attributes':_0x22af80[_0xf64b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf64b('0xe')](function(_0x5a3838){logger[_0xf64b('0x14')]('GetVoiceQueue',_0x722dff);logger[_0xf64b('0x1f')](_0xf64b('0x20'),_0x722dff,JSON[_0xf64b('0x10')](_0x5a3838));_0x5764c0(_0x5a3838);})[_0xf64b('0x17')](function(_0x4b7ed6){logger[_0xf64b('0x11')](_0xf64b('0x20'),_0x4b7ed6[_0xf64b('0x13')],_0x722dff);_0x20b4c1(_0x5d3e60[_0xf64b('0x11')](0x1f4,_0x4b7ed6[_0xf64b('0x13')]));});});};exports[_0xf64b('0x21')]=function(_0x3701f8){var _0x41ac41=this;return new Promise(function(_0x3f0fe5,_0x28b122){return db[_0xf64b('0x22')]['find']({'raw':_0x3701f8['options']?_0x3701f8[_0xf64b('0x19')][_0xf64b('0x23')]===undefined?!![]:![]:!![],'where':_0x3701f8[_0xf64b('0x19')]?_0x3701f8[_0xf64b('0x19')][_0xf64b('0x24')]||null:null,'attributes':_0x3701f8[_0xf64b('0x19')]?_0x3701f8['options'][_0xf64b('0x1a')]||null:null,'include':_0x3701f8[_0xf64b('0x19')]?_0x3701f8[_0xf64b('0x19')][_0xf64b('0x1c')]?_[_0xf64b('0x1d')](_0x3701f8[_0xf64b('0x19')][_0xf64b('0x1c')],function(_0xd4effa){return{'model':db[_0xd4effa[_0xf64b('0x1e')]],'as':_0xd4effa['as'],'attributes':_0xd4effa[_0xf64b('0x1a')],'include':_0xd4effa[_0xf64b('0x1c')]?_[_0xf64b('0x1d')](_0xd4effa[_0xf64b('0x1c')],function(_0x3aa178){return{'model':db[_0x3aa178[_0xf64b('0x1e')]],'as':_0x3aa178['as'],'attributes':_0x3aa178[_0xf64b('0x1a')],'include':_0x3aa178[_0xf64b('0x1c')]?_[_0xf64b('0x1d')](_0x3aa178[_0xf64b('0x1c')],function(_0x40198a){return{'model':db[_0x40198a[_0xf64b('0x1e')]],'as':_0x40198a['as'],'attributes':_0x40198a['attributes']};}):[]};}):[]};}):[]:[]})[_0xf64b('0xe')](function(_0x59d720){logger['info']('ShowVoiceQueue',_0x3701f8);logger[_0xf64b('0x1f')](_0xf64b('0x21'),_0x3701f8,JSON['stringify'](_0x59d720));_0x3f0fe5(_0x59d720);})[_0xf64b('0x17')](function(_0x53ec5a){logger[_0xf64b('0x11')](_0xf64b('0x21'),_0x53ec5a[_0xf64b('0x13')],_0x3701f8);_0x28b122(_0x41ac41[_0xf64b('0x11')](0x1f4,_0x53ec5a[_0xf64b('0x13')]));});});};
\ No newline at end of file
+var _0x6891=['info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','catch','GetVoiceQueue','options','raw','where','include','map','model','attributes','ShowVoiceQueue','VoiceQueue','find','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then'];(function(_0x4afb1f,_0x739e5a){var _0x316d7d=function(_0x1a7b5b){while(--_0x1a7b5b){_0x4afb1f['push'](_0x4afb1f['shift']());}};_0x316d7d(++_0x739e5a);}(_0x6891,0x8b));var _0x1689=function(_0x509b2a,_0xf91802){_0x509b2a=_0x509b2a-0x0;var _0x59ff9e=_0x6891[_0x509b2a];return _0x59ff9e;};'use strict';var _=require(_0x1689('0x0'));var util=require(_0x1689('0x1'));var moment=require(_0x1689('0x2'));var BPromise=require('bluebird');var rs=require(_0x1689('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1689('0x4'))['db'];var utils=require(_0x1689('0x5'));var logger=require(_0x1689('0x6'))(_0x1689('0x7'));var config=require('../../config/environment');var jayson=require(_0x1689('0x8'));var client=jayson[_0x1689('0x9')][_0x1689('0xa')]({'port':0x232a});config[_0x1689('0xb')]=_[_0x1689('0xc')](config['redis'],{'host':_0x1689('0xd'),'port':0x18eb});var socket=require(_0x1689('0xe'))(new Redis(config[_0x1689('0xb')]));require('./voiceQueue.socket')[_0x1689('0xf')](socket);function respondWithRpcPromise(_0x15402f,_0xa1dbdb,_0x55f663){return new BPromise(function(_0x576019,_0x1f6363){return client['request'](_0x15402f,_0x55f663)[_0x1689('0x10')](function(_0x2a5f89){logger[_0x1689('0x11')]('VoiceQueue,\x20%s,\x20%s',_0xa1dbdb,_0x1689('0x12'));logger[_0x1689('0x13')](_0x1689('0x14'),_0xa1dbdb,'request\x20sent',JSON[_0x1689('0x15')](_0x2a5f89));if(_0x2a5f89[_0x1689('0x16')]){if(_0x2a5f89[_0x1689('0x16')][_0x1689('0x17')]===0x1f4){logger[_0x1689('0x16')](_0x1689('0x18'),_0xa1dbdb,_0x2a5f89[_0x1689('0x16')][_0x1689('0x19')]);return _0x1f6363(_0x2a5f89[_0x1689('0x16')]['message']);}logger['error'](_0x1689('0x18'),_0xa1dbdb,_0x2a5f89[_0x1689('0x16')][_0x1689('0x19')]);return _0x576019(_0x2a5f89[_0x1689('0x16')]['message']);}else{logger['info'](_0x1689('0x18'),_0xa1dbdb,_0x1689('0x12'));_0x576019(_0x2a5f89[_0x1689('0x1a')][_0x1689('0x19')]);}})[_0x1689('0x1b')](function(_0x1f06d4){logger[_0x1689('0x16')]('VoiceQueue,\x20%s,\x20%s',_0xa1dbdb,_0x1f06d4);_0x1f6363(_0x1f06d4);});});}exports[_0x1689('0x1c')]=function(_0x3e2ee8){var _0x21b72d=this;return new Promise(function(_0x521a63,_0x4b442a){return db['VoiceQueue']['findAll']({'raw':_0x3e2ee8['options']?_0x3e2ee8[_0x1689('0x1d')][_0x1689('0x1e')]===undefined?!![]:![]:!![],'where':_0x3e2ee8[_0x1689('0x1d')]?_0x3e2ee8[_0x1689('0x1d')][_0x1689('0x1f')]||null:null,'attributes':_0x3e2ee8[_0x1689('0x1d')]?_0x3e2ee8[_0x1689('0x1d')]['attributes']||null:null,'limit':_0x3e2ee8[_0x1689('0x1d')]?_0x3e2ee8[_0x1689('0x1d')]['limit']||null:null,'include':_0x3e2ee8['options']?_0x3e2ee8[_0x1689('0x1d')][_0x1689('0x20')]?_[_0x1689('0x21')](_0x3e2ee8['options'][_0x1689('0x20')],function(_0x5fc13){return{'model':db[_0x5fc13[_0x1689('0x22')]],'as':_0x5fc13['as'],'attributes':_0x5fc13[_0x1689('0x23')],'include':_0x5fc13[_0x1689('0x20')]?_[_0x1689('0x21')](_0x5fc13[_0x1689('0x20')],function(_0x4d7805){return{'model':db[_0x4d7805[_0x1689('0x22')]],'as':_0x4d7805['as'],'attributes':_0x4d7805[_0x1689('0x23')],'include':_0x4d7805[_0x1689('0x20')]?_[_0x1689('0x21')](_0x4d7805['include'],function(_0x50dcf0){return{'model':db[_0x50dcf0[_0x1689('0x22')]],'as':_0x50dcf0['as'],'attributes':_0x50dcf0[_0x1689('0x23')]};}):[]};}):[]};}):[]:[]})[_0x1689('0x10')](function(_0x566ce6){logger[_0x1689('0x11')]('GetVoiceQueue',_0x3e2ee8);logger[_0x1689('0x13')](_0x1689('0x1c'),_0x3e2ee8,JSON[_0x1689('0x15')](_0x566ce6));_0x521a63(_0x566ce6);})[_0x1689('0x1b')](function(_0x2e51e3){logger[_0x1689('0x16')](_0x1689('0x1c'),_0x2e51e3[_0x1689('0x19')],_0x3e2ee8);_0x4b442a(_0x21b72d['error'](0x1f4,_0x2e51e3['message']));});});};exports[_0x1689('0x24')]=function(_0x65419c){var _0x30f791=this;return new Promise(function(_0x568fd3,_0x2c10fe){return db[_0x1689('0x25')][_0x1689('0x26')]({'raw':_0x65419c[_0x1689('0x1d')]?_0x65419c[_0x1689('0x1d')][_0x1689('0x1e')]===undefined?!![]:![]:!![],'where':_0x65419c['options']?_0x65419c[_0x1689('0x1d')][_0x1689('0x1f')]||null:null,'attributes':_0x65419c[_0x1689('0x1d')]?_0x65419c[_0x1689('0x1d')][_0x1689('0x23')]||null:null,'include':_0x65419c['options']?_0x65419c[_0x1689('0x1d')][_0x1689('0x20')]?_[_0x1689('0x21')](_0x65419c[_0x1689('0x1d')][_0x1689('0x20')],function(_0x364e34){return{'model':db[_0x364e34[_0x1689('0x22')]],'as':_0x364e34['as'],'attributes':_0x364e34[_0x1689('0x23')],'include':_0x364e34[_0x1689('0x20')]?_[_0x1689('0x21')](_0x364e34[_0x1689('0x20')],function(_0x4e3888){return{'model':db[_0x4e3888[_0x1689('0x22')]],'as':_0x4e3888['as'],'attributes':_0x4e3888[_0x1689('0x23')],'include':_0x4e3888[_0x1689('0x20')]?_['map'](_0x4e3888['include'],function(_0x45e004){return{'model':db[_0x45e004[_0x1689('0x22')]],'as':_0x45e004['as'],'attributes':_0x45e004['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3723a8){logger[_0x1689('0x11')](_0x1689('0x24'),_0x65419c);logger[_0x1689('0x13')](_0x1689('0x24'),_0x65419c,JSON[_0x1689('0x15')](_0x3723a8));_0x568fd3(_0x3723a8);})['catch'](function(_0x5ebf50){logger[_0x1689('0x16')](_0x1689('0x24'),_0x5ebf50[_0x1689('0x19')],_0x65419c);_0x2c10fe(_0x30f791[_0x1689('0x16')](0x1f4,_0x5ebf50[_0x1689('0x19')]));});});};
\ No newline at end of file
index ce9f6af..807dab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb027=['./voiceQueue.events','update','emit','removeListener','length','voiceQueue:'];(function(_0x1854b5,_0x1b4e49){var _0x26cd20=function(_0x5e3ee0){while(--_0x5e3ee0){_0x1854b5['push'](_0x1854b5['shift']());}};_0x26cd20(++_0x1b4e49);}(_0xb027,0x1e6));var _0x7b02=function(_0x41b6df,_0x5e2a2b){_0x41b6df=_0x41b6df-0x0;var _0x1c3a84=_0xb027[_0x41b6df];return _0x1c3a84;};'use strict';var VoiceQueueEvents=require(_0x7b02('0x0'));var events=['save','remove',_0x7b02('0x1')];function createListener(_0x1b4529,_0x1392aa){return function(_0x39e1bd){_0x1392aa[_0x7b02('0x2')](_0x1b4529,_0x39e1bd);};}function removeListener(_0x56756c,_0x590bf0){return function(){VoiceQueueEvents[_0x7b02('0x3')](_0x56756c,_0x590bf0);};}exports['register']=function(_0x34f9bb){for(var _0x1d8361=0x0,_0x33ac8c=events[_0x7b02('0x4')];_0x1d8361<_0x33ac8c;_0x1d8361++){var _0x4c275b=events[_0x1d8361];var _0x53d570=createListener(_0x7b02('0x5')+_0x4c275b,_0x34f9bb);VoiceQueueEvents['on'](_0x4c275b,_0x53d570);}};
\ No newline at end of file
+var _0x89f9=['removeListener','register','length','./voiceQueue.events','save','remove','update','emit'];(function(_0x49266b,_0x31521f){var _0x41941c=function(_0x48c6dd){while(--_0x48c6dd){_0x49266b['push'](_0x49266b['shift']());}};_0x41941c(++_0x31521f);}(_0x89f9,0x8b));var _0x989f=function(_0x46a55c,_0x44b2ae){_0x46a55c=_0x46a55c-0x0;var _0x4ba489=_0x89f9[_0x46a55c];return _0x4ba489;};'use strict';var VoiceQueueEvents=require(_0x989f('0x0'));var events=[_0x989f('0x1'),_0x989f('0x2'),_0x989f('0x3')];function createListener(_0x6bbf7a,_0xf09a2b){return function(_0x6d7f9){_0xf09a2b[_0x989f('0x4')](_0x6bbf7a,_0x6d7f9);};}function removeListener(_0xcbc8ca,_0x48c3fa){return function(){VoiceQueueEvents[_0x989f('0x5')](_0xcbc8ca,_0x48c3fa);};}exports[_0x989f('0x6')]=function(_0x5d978d){for(var _0x5cdd94=0x0,_0x4834f4=events[_0x989f('0x7')];_0x5cdd94<_0x4834f4;_0x5cdd94++){var _0x11e9de=events[_0x5cdd94];var _0x15b4c8=createListener('voiceQueue:'+_0x11e9de,_0x5d978d);VoiceQueueEvents['on'](_0x11e9de,_0x15b4c8);}};
\ No newline at end of file
index a342596..c09fa77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf911=['isAuthenticated','describe','getVoiceQueuesReport','/:id','create','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceQueueReport.controller','index','get'];(function(_0xed4881,_0x45771c){var _0x7fcbd5=function(_0x36b960){while(--_0x36b960){_0xed4881['push'](_0xed4881['shift']());}};_0x7fcbd5(++_0x45771c);}(_0xf911,0x113));var _0x1f91=function(_0x25eb3f,_0x4a5d3e){_0x25eb3f=_0x25eb3f-0x0;var _0xa89c91=_0xf911[_0x25eb3f];return _0xa89c91;};'use strict';var multer=require('multer');var util=require(_0x1f91('0x0'));var path=require(_0x1f91('0x1'));var timeout=require(_0x1f91('0x2'));var express=require(_0x1f91('0x3'));var router=express[_0x1f91('0x4')]();var fs_extra=require(_0x1f91('0x5'));var auth=require(_0x1f91('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1f91('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x1f91('0x8')]);router[_0x1f91('0x9')]('/describe',auth[_0x1f91('0xa')](),controller[_0x1f91('0xb')]);router[_0x1f91('0x9')]('/index',auth[_0x1f91('0xa')](),controller[_0x1f91('0xc')]);router[_0x1f91('0x9')](_0x1f91('0xd'),auth[_0x1f91('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x1f91('0xe')]);router[_0x1f91('0xf')](_0x1f91('0xd'),auth[_0x1f91('0xa')](),controller[_0x1f91('0x10')]);router[_0x1f91('0x11')](_0x1f91('0xd'),auth[_0x1f91('0xa')](),controller[_0x1f91('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x98f4=['isAuthenticated','describe','/index','getVoiceQueuesReport','/:id','show','post','create','delete','destroy','exports','multer','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','get'];(function(_0x5a2285,_0x3212d1){var _0x48f6ed=function(_0x322127){while(--_0x322127){_0x5a2285['push'](_0x5a2285['shift']());}};_0x48f6ed(++_0x3212d1);}(_0x98f4,0xe3));var _0x498f=function(_0x23285f,_0x5529ce){_0x23285f=_0x23285f-0x0;var _0x1a5a34=_0x98f4[_0x23285f];return _0x1a5a34;};'use strict';var multer=require(_0x498f('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x498f('0x1')]();var fs_extra=require(_0x498f('0x2'));var auth=require(_0x498f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x498f('0x4'));var controller=require(_0x498f('0x5'));router[_0x498f('0x6')]('/',auth[_0x498f('0x7')](),controller['index']);router[_0x498f('0x6')]('/describe',auth[_0x498f('0x7')](),controller[_0x498f('0x8')]);router[_0x498f('0x6')](_0x498f('0x9'),auth[_0x498f('0x7')](),controller[_0x498f('0xa')]);router[_0x498f('0x6')](_0x498f('0xb'),auth[_0x498f('0x7')](),controller[_0x498f('0xc')]);router[_0x498f('0xd')]('/',auth['isAuthenticated'](),controller[_0x498f('0xe')]);router['put'](_0x498f('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x498f('0xf')]('/:id',auth[_0x498f('0x7')](),controller[_0x498f('0x10')]);module[_0x498f('0x11')]=router;
\ No newline at end of file
index bcfdd70..960dd72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a38=['getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','queuecallerleaveAt','setDataValue','holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE'];(function(_0x4849a6,_0xe6032a){var _0x4bce11=function(_0xf65ab){while(--_0xf65ab){_0x4849a6['push'](_0x4849a6['shift']());}};_0x4bce11(++_0xe6032a);}(_0x3a38,0x1c6));var _0x83a3=function(_0x123262,_0x53af91){_0x123262=_0x123262-0x0;var _0x520b74=_0x3a38[_0x123262];return _0x520b74;};'use strict';var Sequelize=require(_0x83a3('0x0'));var moment=require(_0x83a3('0x1'));module[_0x83a3('0x2')]={'type':{'type':Sequelize[_0x83a3('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x83a3('0x3')]},'calleridname':{'type':Sequelize[_0x83a3('0x3')]},'queue':{'type':Sequelize[_0x83a3('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x83a3('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x83a3('0x4')],'set':function(_0x43bea5){var _0x5ba516=moment(_0x43bea5);var _0x53b129=moment(this[_0x83a3('0x5')](_0x83a3('0x6')))[_0x83a3('0x7')](_0x83a3('0x8'));var _0x28aeb9=_0x5ba516[_0x83a3('0x9')](_0x53b129,_0x83a3('0xa'));this['setDataValue'](_0x83a3('0xb'),_0x43bea5);this[_0x83a3('0xc')](_0x83a3('0xd'),_0x28aeb9||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x83a3('0xe')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x83a3('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x83a3('0xf')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x83a3('0x4')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x83a3('0x4')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x83a3('0xe')]},'channel':{'type':Sequelize[_0x83a3('0x3')]},'connectedlinenum':{'type':Sequelize[_0x83a3('0x3')]},'connectedlinename':{'type':Sequelize[_0x83a3('0x3')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x83a3('0x3')]},'exten':{'type':Sequelize[_0x83a3('0x3')]},'priority':{'type':Sequelize[_0x83a3('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x83a3('0xe')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x83a3('0xf')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x83a3('0xf')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x83a3('0x3')],'comment':_0x83a3('0x10')},'transferexten':{'type':Sequelize[_0x83a3('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x83a3('0x3')]},'secondDisposition':{'type':Sequelize[_0x83a3('0x3')]},'thirdDisposition':{'type':Sequelize[_0x83a3('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x83a3('0xe')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1cf5=['DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','exports','STRING'];(function(_0x22c08d,_0x18f8fd){var _0x18a9a0=function(_0x1f16f3){while(--_0x1f16f3){_0x22c08d['push'](_0x22c08d['shift']());}};_0x18a9a0(++_0x18f8fd);}(_0x1cf5,0xc1));var _0x51cf=function(_0x1da330,_0x2cbd43){_0x1da330=_0x1da330-0x0;var _0x346efa=_0x1cf5[_0x1da330];return _0x346efa;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x51cf('0x0')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x51cf('0x1')]},'calleridnum':{'type':Sequelize[_0x51cf('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x51cf('0x2')]},'queuecallerleaveAt':{'type':Sequelize[_0x51cf('0x2')],'set':function(_0xc8d9b3){var _0x2d01f1=moment(_0xc8d9b3);var _0x4ba1f9=moment(this[_0x51cf('0x3')](_0x51cf('0x4')))[_0x51cf('0x5')](_0x51cf('0x6'));var _0x35fd27=_0x2d01f1['diff'](_0x4ba1f9,'seconds');this[_0x51cf('0x7')](_0x51cf('0x8'),_0xc8d9b3);this[_0x51cf('0x7')](_0x51cf('0x9'),_0x35fd27||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x51cf('0xa')]},'queuecallerabandon':{'type':Sequelize[_0x51cf('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x51cf('0x2')]},'queuecallercomplete':{'type':Sequelize[_0x51cf('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x51cf('0x2')]},'queuecallerexit':{'type':Sequelize[_0x51cf('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x51cf('0x2')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x51cf('0xc')},'originalposition':{'type':Sequelize[_0x51cf('0xa')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x51cf('0x1')]},'connectedlinename':{'type':Sequelize[_0x51cf('0x1')]},'accountcode':{'type':Sequelize[_0x51cf('0x1')]},'context':{'type':Sequelize[_0x51cf('0x1')]},'exten':{'type':Sequelize[_0x51cf('0x1')]},'priority':{'type':Sequelize[_0x51cf('0x1')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x51cf('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x51cf('0xb')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x51cf('0xb')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x51cf('0x1')]},'transferuniqueid':{'type':Sequelize[_0x51cf('0x1')]},'disposition':{'type':Sequelize[_0x51cf('0x1')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x51cf('0x1')]},'queuecallerenterreason':{'type':Sequelize[_0x51cf('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index 2f1df44..3ee265b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2db6=['to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','findAll','rows','catch','params','model','keys','options','find','create','body','describe','hasOwnProperty','getVoiceQueuesReport','eml-format','zip-dir','request-promise','util','sox'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x2db6,0x143));var _0x62db=function(_0x4df4e2,_0x2b0f8d){_0x4df4e2=_0x4df4e2-0x0;var _0x30f423=_0x2db6[_0x4df4e2];return _0x30f423;};'use strict';var emlformat=require(_0x62db('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x62db('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x62db('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x62db('0x3'));var path=require('path');var sox=require(_0x62db('0x4'));var csv=require(_0x62db('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x62db('0x6'));var _=require(_0x62db('0x7'));var squel=require(_0x62db('0x8'));var crypto=require(_0x62db('0x9'));var jsforce=require(_0x62db('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x62db('0x5'));var querystring=require(_0x62db('0xb'));var Papa=require(_0x62db('0xc'));var Redis=require(_0x62db('0xd'));var authService=require(_0x62db('0xe'));var qs=require(_0x62db('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x62db('0x10'));var logger=require(_0x62db('0x11'))(_0x62db('0x12'));var utils=require(_0x62db('0x13'));var config=require(_0x62db('0x14'));var licenseUtil=require(_0x62db('0x15'));var db=require(_0x62db('0x16'))['db'];config[_0x62db('0x17')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x62db('0x18'))(new Redis(config[_0x62db('0x17')]));require(_0x62db('0x19'))[_0x62db('0x1a')](socket);function respondWithStatusCode(_0x57ca70,_0x4261cf){_0x4261cf=_0x4261cf||0xcc;return function(_0x42480a){if(_0x42480a){return _0x57ca70[_0x62db('0x1b')](_0x4261cf);}return _0x57ca70[_0x62db('0x1c')](_0x4261cf)[_0x62db('0x1d')]();};}function respondWithResult(_0x1de81b,_0x120ca6){_0x120ca6=_0x120ca6||0xc8;return function(_0x3d14bc){if(_0x3d14bc){return _0x1de81b['status'](_0x120ca6)[_0x62db('0x1e')](_0x3d14bc);}};}function respondWithFilteredResult(_0x4927ab,_0x1dc331){return function(_0x15bb05){if(_0x15bb05){var _0x5bcf21=typeof _0x1dc331[_0x62db('0x1f')]==='undefined'&&typeof _0x1dc331['limit']===_0x62db('0x20');var _0x456910=_0x15bb05[_0x62db('0x21')];var _0x17fb3a=_0x5bcf21?0x0:_0x1dc331[_0x62db('0x1f')];var _0xe8f4f2=_0x5bcf21?_0x15bb05['count']:_0x1dc331[_0x62db('0x1f')]+_0x1dc331[_0x62db('0x22')];var _0x29fa21;if(_0xe8f4f2>=_0x456910){_0xe8f4f2=_0x456910;_0x29fa21=0xc8;}else{_0x29fa21=0xce;}_0x4927ab[_0x62db('0x1c')](_0x29fa21);return _0x4927ab[_0x62db('0x23')](_0x62db('0x24'),_0x17fb3a+'-'+_0xe8f4f2+'/'+_0x456910)[_0x62db('0x1e')](_0x15bb05);}return null;};}function patchUpdates(_0x27ed68){return function(_0xdeba2d){try{jsonpatch[_0x62db('0x25')](_0xdeba2d,_0x27ed68,!![]);}catch(_0x465d01){return BPromise[_0x62db('0x26')](_0x465d01);}return _0xdeba2d[_0x62db('0x27')]();};}function saveUpdates(_0x43fb04,_0x381781){return function(_0x2b15ba){if(_0x2b15ba){return _0x2b15ba[_0x62db('0x28')](_0x43fb04)[_0x62db('0x29')](function(_0x5474bf){return _0x5474bf;});}return null;};}function removeEntity(_0x413cdd,_0x39802b){return function(_0x5a635f){if(_0x5a635f){return _0x5a635f[_0x62db('0x2a')]()[_0x62db('0x29')](function(){_0x413cdd[_0x62db('0x1c')](0xcc)[_0x62db('0x1d')]();});}};}function handleEntityNotFound(_0x2182a0,_0x10b015){return function(_0xb08b64){if(!_0xb08b64){_0x2182a0['sendStatus'](0x194);}return _0xb08b64;};}function handleError(_0x3ad8a0,_0x32cfe5){_0x32cfe5=_0x32cfe5||0x1f4;return function(_0x514eec){logger['error'](_0x514eec[_0x62db('0x2b')]);if(_0x514eec[_0x62db('0x2c')]){delete _0x514eec['name'];}_0x3ad8a0[_0x62db('0x1c')](_0x32cfe5)[_0x62db('0x2d')](_0x514eec);};}exports[_0x62db('0x2e')]=function(_0x4b75c0,_0x386577){var _0x3aedb2={},_0x3c073d={},_0x3691a3={'count':0x0,'rows':[]};var _0x764a00=_[_0x62db('0x2f')](db[_0x62db('0x30')][_0x62db('0x31')],function(_0x4d619a){return{'name':_0x4d619a[_0x62db('0x32')],'type':_0x4d619a[_0x62db('0x33')][_0x62db('0x34')]};});_0x3c073d['model']=_[_0x62db('0x2f')](_0x764a00,_0x62db('0x2c'));_0x3c073d[_0x62db('0x35')]=_['keys'](_0x4b75c0['query']);_0x3c073d[_0x62db('0x36')]=_[_0x62db('0x37')](_0x3c073d['model'],_0x3c073d[_0x62db('0x35')]);_0x3aedb2[_0x62db('0x38')]=_[_0x62db('0x37')](_0x3c073d['model'],qs[_0x62db('0x39')](_0x4b75c0[_0x62db('0x35')]['fields']));_0x3aedb2[_0x62db('0x38')]=_0x3aedb2[_0x62db('0x38')][_0x62db('0x3a')]?_0x3aedb2[_0x62db('0x38')]:_0x3c073d['model'];if(!_0x4b75c0[_0x62db('0x35')]['hasOwnProperty'](_0x62db('0x3b'))){_0x3aedb2[_0x62db('0x22')]=qs[_0x62db('0x22')](_0x4b75c0[_0x62db('0x35')][_0x62db('0x22')]);_0x3aedb2[_0x62db('0x1f')]=qs['offset'](_0x4b75c0[_0x62db('0x35')][_0x62db('0x1f')]);}_0x3aedb2[_0x62db('0x3c')]=qs[_0x62db('0x3d')](_0x4b75c0['query']['sort']);_0x3aedb2['where']=qs[_0x62db('0x36')](_[_0x62db('0x3e')](_0x4b75c0['query'],_0x3c073d[_0x62db('0x36')]),_0x764a00);if(_0x4b75c0[_0x62db('0x35')][_0x62db('0x3f')]){_0x3aedb2['where']=_[_0x62db('0x40')](_0x3aedb2[_0x62db('0x41')],{'$or':_['map'](_0x764a00,function(_0x312004){if(_0x312004[_0x62db('0x33')]!==_0x62db('0x42')){var _0x44e30a={};_0x44e30a[_0x312004['name']]={'$like':'%'+_0x4b75c0[_0x62db('0x35')][_0x62db('0x3f')]+'%'};return _0x44e30a;}})});}_0x3aedb2=_[_0x62db('0x40')]({},_0x3aedb2,_0x4b75c0['options']);var _0x3253b4={'where':_0x3aedb2[_0x62db('0x41')]};return db[_0x62db('0x30')][_0x62db('0x21')](_0x3253b4)[_0x62db('0x29')](function(_0x222f17){_0x3691a3[_0x62db('0x21')]=_0x222f17;if(_0x4b75c0[_0x62db('0x35')][_0x62db('0x43')]){_0x3aedb2[_0x62db('0x44')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x62db('0x45')](_0x3aedb2);})['then'](function(_0x492558){_0x3691a3[_0x62db('0x46')]=_0x492558;return _0x3691a3;})['then'](respondWithFilteredResult(_0x386577,_0x3aedb2))[_0x62db('0x47')](handleError(_0x386577,null));};exports['show']=function(_0x1c6f88,_0x34d471){var _0x3e3048={'raw':![],'where':{'id':_0x1c6f88[_0x62db('0x48')]['id']}},_0x4b9bc9={};_0x4b9bc9[_0x62db('0x49')]=_[_0x62db('0x4a')](db[_0x62db('0x30')][_0x62db('0x31')]);_0x4b9bc9[_0x62db('0x35')]=_[_0x62db('0x4a')](_0x1c6f88['query']);_0x4b9bc9['filters']=_[_0x62db('0x37')](_0x4b9bc9[_0x62db('0x49')],_0x4b9bc9[_0x62db('0x35')]);_0x3e3048[_0x62db('0x38')]=_[_0x62db('0x37')](_0x4b9bc9[_0x62db('0x49')],qs[_0x62db('0x39')](_0x1c6f88[_0x62db('0x35')][_0x62db('0x39')]));_0x3e3048[_0x62db('0x38')]=_0x3e3048[_0x62db('0x38')]['length']?_0x3e3048[_0x62db('0x38')]:_0x4b9bc9[_0x62db('0x49')];if(_0x1c6f88['query'][_0x62db('0x43')]){_0x3e3048['include']=[{'all':!![]}];}_0x3e3048=_['merge']({},_0x3e3048,_0x1c6f88[_0x62db('0x4b')]);return db[_0x62db('0x30')][_0x62db('0x4c')](_0x3e3048)[_0x62db('0x29')](handleEntityNotFound(_0x34d471,null))[_0x62db('0x29')](respondWithResult(_0x34d471,null))[_0x62db('0x47')](handleError(_0x34d471,null));};exports[_0x62db('0x4d')]=function(_0xff4dd,_0x10c3e3){return db[_0x62db('0x30')][_0x62db('0x4d')](_0xff4dd['body'],{})[_0x62db('0x29')](respondWithResult(_0x10c3e3,0xc9))['catch'](handleError(_0x10c3e3,null));};exports[_0x62db('0x28')]=function(_0x49b19d,_0x53ba72){if(_0x49b19d[_0x62db('0x4e')]['id']){delete _0x49b19d[_0x62db('0x4e')]['id'];}return db['VoiceQueueReport']['find']({'where':{'id':_0x49b19d[_0x62db('0x48')]['id']}})[_0x62db('0x29')](handleEntityNotFound(_0x53ba72,null))[_0x62db('0x29')](saveUpdates(_0x49b19d[_0x62db('0x4e')],null))['then'](respondWithResult(_0x53ba72,null))['catch'](handleError(_0x53ba72,null));};exports[_0x62db('0x2a')]=function(_0x2aaf1a,_0x327e1b){return db[_0x62db('0x30')]['find']({'where':{'id':_0x2aaf1a[_0x62db('0x48')]['id']}})[_0x62db('0x29')](handleEntityNotFound(_0x327e1b,null))[_0x62db('0x29')](removeEntity(_0x327e1b,null))[_0x62db('0x47')](handleError(_0x327e1b,null));};exports[_0x62db('0x4f')]=function(_0x3fe3de,_0x199507){return db[_0x62db('0x30')][_0x62db('0x4f')]()[_0x62db('0x29')](respondWithResult(_0x199507,null))[_0x62db('0x47')](handleError(_0x199507,null));};exports['getVoiceQueuesReport']=function(_0x58f455,_0x2414b2){var _0x332055={},_0x5bd9d8={},_0x175faa={'count':0x0,'rows':[]};_0x5bd9d8[_0x62db('0x49')]=_['keys'](db[_0x62db('0x30')][_0x62db('0x31')]);_0x5bd9d8[_0x62db('0x35')]=_[_0x62db('0x4a')](_0x58f455[_0x62db('0x35')]);_0x5bd9d8[_0x62db('0x36')]=_[_0x62db('0x37')](_0x5bd9d8[_0x62db('0x49')],_0x5bd9d8[_0x62db('0x35')]);_0x332055[_0x62db('0x38')]=_[_0x62db('0x37')](_0x5bd9d8[_0x62db('0x49')],qs[_0x62db('0x39')](_0x58f455[_0x62db('0x35')][_0x62db('0x39')]));_0x332055[_0x62db('0x38')]=_0x332055['attributes'][_0x62db('0x3a')]?_0x332055[_0x62db('0x38')]:_0x5bd9d8[_0x62db('0x49')];if(!_0x58f455[_0x62db('0x35')][_0x62db('0x50')](_0x62db('0x3b'))){_0x332055[_0x62db('0x22')]=qs[_0x62db('0x22')](_0x58f455[_0x62db('0x35')][_0x62db('0x22')]);_0x332055[_0x62db('0x1f')]=qs[_0x62db('0x1f')](_0x58f455[_0x62db('0x35')][_0x62db('0x1f')]);}_0x332055[_0x62db('0x3c')]=qs[_0x62db('0x3d')](_0x58f455['query'][_0x62db('0x3d')]);_0x332055[_0x62db('0x41')]=qs['filters'](_[_0x62db('0x3e')](_0x58f455[_0x62db('0x35')],_0x5bd9d8[_0x62db('0x36')]));if(_0x58f455[_0x62db('0x35')][_0x62db('0x3f')]){_0x332055[_0x62db('0x41')]=_[_0x62db('0x40')](_0x332055[_0x62db('0x41')],{'$or':_['map'](_0x332055[_0x62db('0x38')],function(_0x36846a){var _0x22497c={};_0x22497c[_0x36846a]={'$like':'%'+_0x58f455[_0x62db('0x35')][_0x62db('0x3f')]+'%'};return _0x22497c;})});}_0x332055=_[_0x62db('0x40')]({},_0x332055,_0x58f455[_0x62db('0x4b')]);var _0x558fd8={'where':_0x332055[_0x62db('0x41')]};return db[_0x62db('0x30')][_0x62db('0x21')](_0x558fd8)[_0x62db('0x29')](function(_0x5a66ba){_0x175faa[_0x62db('0x21')]=_0x5a66ba;if(_0x58f455[_0x62db('0x35')][_0x62db('0x43')]){_0x332055[_0x62db('0x44')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x62db('0x45')](_0x332055);})[_0x62db('0x29')](function(_0x4bfd47){_0x175faa['rows']=_0x4bfd47;return _0x175faa;})[_0x62db('0x29')](respondWithFilteredResult(_0x2414b2,_0x332055,_0x62db('0x51')))[_0x62db('0x47')](handleError(_0x2414b2,null,_0x62db('0x51')));};
\ No newline at end of file
+var _0x0f6d=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','update','destroy','describe','getVoiceQueuesReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','map','VoiceQueueReport','rawAttributes','fieldName','key','query','keys','filters'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0f6d,0x16e));var _0xd0f6=function(_0x249e96,_0x3ea39d){_0x249e96=_0x249e96-0x0;var _0x17444c=_0x0f6d[_0x249e96];return _0x17444c;};'use strict';var emlformat=require(_0xd0f6('0x0'));var rimraf=require(_0xd0f6('0x1'));var zipdir=require(_0xd0f6('0x2'));var jsonpatch=require(_0xd0f6('0x3'));var rp=require(_0xd0f6('0x4'));var moment=require(_0xd0f6('0x5'));var BPromise=require(_0xd0f6('0x6'));var Mustache=require('mustache');var util=require(_0xd0f6('0x7'));var path=require(_0xd0f6('0x8'));var sox=require('sox');var csv=require(_0xd0f6('0x9'));var ejs=require(_0xd0f6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd0f6('0xb'));var squel=require(_0xd0f6('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd0f6('0xd'));var toCsv=require(_0xd0f6('0x9'));var querystring=require(_0xd0f6('0xe'));var Papa=require('papaparse');var Redis=require(_0xd0f6('0xf'));var authService=require(_0xd0f6('0x10'));var qs=require(_0xd0f6('0x11'));var as=require(_0xd0f6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd0f6('0x13'))(_0xd0f6('0x14'));var utils=require(_0xd0f6('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd0f6('0x16'))['db'];config['redis']=_[_0xd0f6('0x17')](config[_0xd0f6('0x18')],{'host':_0xd0f6('0x19'),'port':0x18eb});var socket=require(_0xd0f6('0x1a'))(new Redis(config[_0xd0f6('0x18')]));require('./voiceQueueReport.socket')[_0xd0f6('0x1b')](socket);function respondWithStatusCode(_0x51c0ee,_0x2e26e7){_0x2e26e7=_0x2e26e7||0xcc;return function(_0x249517){if(_0x249517){return _0x51c0ee[_0xd0f6('0x1c')](_0x2e26e7);}return _0x51c0ee['status'](_0x2e26e7)[_0xd0f6('0x1d')]();};}function respondWithResult(_0x5b7467,_0x2cdb22){_0x2cdb22=_0x2cdb22||0xc8;return function(_0x13d04f){if(_0x13d04f){return _0x5b7467[_0xd0f6('0x1e')](_0x2cdb22)[_0xd0f6('0x1f')](_0x13d04f);}};}function respondWithFilteredResult(_0x463d15,_0xc22963){return function(_0x2c669c){if(_0x2c669c){var _0x498e83=typeof _0xc22963[_0xd0f6('0x20')]===_0xd0f6('0x21')&&typeof _0xc22963[_0xd0f6('0x22')]===_0xd0f6('0x21');var _0x18a3c7=_0x2c669c[_0xd0f6('0x23')];var _0x54f185=_0x498e83?0x0:_0xc22963[_0xd0f6('0x20')];var _0x559839=_0x498e83?_0x2c669c['count']:_0xc22963[_0xd0f6('0x20')]+_0xc22963[_0xd0f6('0x22')];var _0x5a4ee4;if(_0x559839>=_0x18a3c7){_0x559839=_0x18a3c7;_0x5a4ee4=0xc8;}else{_0x5a4ee4=0xce;}_0x463d15[_0xd0f6('0x1e')](_0x5a4ee4);return _0x463d15[_0xd0f6('0x24')](_0xd0f6('0x25'),_0x54f185+'-'+_0x559839+'/'+_0x18a3c7)[_0xd0f6('0x1f')](_0x2c669c);}return null;};}function patchUpdates(_0x2b6ae1){return function(_0x44e5da){try{jsonpatch[_0xd0f6('0x26')](_0x44e5da,_0x2b6ae1,!![]);}catch(_0x234b4c){return BPromise[_0xd0f6('0x27')](_0x234b4c);}return _0x44e5da[_0xd0f6('0x28')]();};}function saveUpdates(_0x50a07d,_0xc1a5e0){return function(_0x1c567f){if(_0x1c567f){return _0x1c567f['update'](_0x50a07d)[_0xd0f6('0x29')](function(_0xc53550){return _0xc53550;});}return null;};}function removeEntity(_0x428d2e,_0x2a8571){return function(_0x45d334){if(_0x45d334){return _0x45d334['destroy']()[_0xd0f6('0x29')](function(){_0x428d2e[_0xd0f6('0x1e')](0xcc)[_0xd0f6('0x1d')]();});}};}function handleEntityNotFound(_0x877dfa,_0xae6677){return function(_0x350e92){if(!_0x350e92){_0x877dfa[_0xd0f6('0x1c')](0x194);}return _0x350e92;};}function handleError(_0x23e937,_0x2e7872){_0x2e7872=_0x2e7872||0x1f4;return function(_0x4fb87c){logger[_0xd0f6('0x2a')](_0x4fb87c[_0xd0f6('0x2b')]);if(_0x4fb87c[_0xd0f6('0x2c')]){delete _0x4fb87c['name'];}_0x23e937[_0xd0f6('0x1e')](_0x2e7872)[_0xd0f6('0x2d')](_0x4fb87c);};}exports['index']=function(_0x2e0fe8,_0x3ffc50){var _0x41a7e2={},_0x4eeb00={},_0x25bf1e={'count':0x0,'rows':[]};var _0x14f109=_[_0xd0f6('0x2e')](db[_0xd0f6('0x2f')][_0xd0f6('0x30')],function(_0x540eaf){return{'name':_0x540eaf[_0xd0f6('0x31')],'type':_0x540eaf['type'][_0xd0f6('0x32')]};});_0x4eeb00['model']=_[_0xd0f6('0x2e')](_0x14f109,_0xd0f6('0x2c'));_0x4eeb00[_0xd0f6('0x33')]=_[_0xd0f6('0x34')](_0x2e0fe8[_0xd0f6('0x33')]);_0x4eeb00[_0xd0f6('0x35')]=_[_0xd0f6('0x36')](_0x4eeb00[_0xd0f6('0x37')],_0x4eeb00[_0xd0f6('0x33')]);_0x41a7e2[_0xd0f6('0x38')]=_[_0xd0f6('0x36')](_0x4eeb00[_0xd0f6('0x37')],qs['fields'](_0x2e0fe8['query'][_0xd0f6('0x39')]));_0x41a7e2[_0xd0f6('0x38')]=_0x41a7e2[_0xd0f6('0x38')][_0xd0f6('0x3a')]?_0x41a7e2['attributes']:_0x4eeb00[_0xd0f6('0x37')];if(!_0x2e0fe8[_0xd0f6('0x33')][_0xd0f6('0x3b')](_0xd0f6('0x3c'))){_0x41a7e2['limit']=qs[_0xd0f6('0x22')](_0x2e0fe8[_0xd0f6('0x33')][_0xd0f6('0x22')]);_0x41a7e2[_0xd0f6('0x20')]=qs[_0xd0f6('0x20')](_0x2e0fe8['query'][_0xd0f6('0x20')]);}_0x41a7e2[_0xd0f6('0x3d')]=qs[_0xd0f6('0x3e')](_0x2e0fe8['query']['sort']);_0x41a7e2[_0xd0f6('0x3f')]=qs[_0xd0f6('0x35')](_[_0xd0f6('0x40')](_0x2e0fe8[_0xd0f6('0x33')],_0x4eeb00[_0xd0f6('0x35')]),_0x14f109);if(_0x2e0fe8[_0xd0f6('0x33')][_0xd0f6('0x41')]){_0x41a7e2[_0xd0f6('0x3f')]=_[_0xd0f6('0x42')](_0x41a7e2[_0xd0f6('0x3f')],{'$or':_['map'](_0x14f109,function(_0x155285){if(_0x155285[_0xd0f6('0x43')]!==_0xd0f6('0x44')){var _0x54127e={};_0x54127e[_0x155285['name']]={'$like':'%'+_0x2e0fe8['query']['filter']+'%'};return _0x54127e;}})});}_0x41a7e2=_['merge']({},_0x41a7e2,_0x2e0fe8[_0xd0f6('0x45')]);var _0x1715c9={'where':_0x41a7e2[_0xd0f6('0x3f')]};return db['VoiceQueueReport']['count'](_0x1715c9)[_0xd0f6('0x29')](function(_0x1dbc60){_0x25bf1e[_0xd0f6('0x23')]=_0x1dbc60;if(_0x2e0fe8['query']['includeAll']){_0x41a7e2['include']=[{'all':!![]}];}return db[_0xd0f6('0x2f')][_0xd0f6('0x46')](_0x41a7e2);})['then'](function(_0x3de4ab){_0x25bf1e[_0xd0f6('0x47')]=_0x3de4ab;return _0x25bf1e;})[_0xd0f6('0x29')](respondWithFilteredResult(_0x3ffc50,_0x41a7e2))[_0xd0f6('0x48')](handleError(_0x3ffc50,null));};exports[_0xd0f6('0x49')]=function(_0x29fcba,_0x5890e9){var _0x1bc836={'raw':![],'where':{'id':_0x29fcba[_0xd0f6('0x4a')]['id']}},_0x16f834={};_0x16f834['model']=_[_0xd0f6('0x34')](db['VoiceQueueReport'][_0xd0f6('0x30')]);_0x16f834[_0xd0f6('0x33')]=_[_0xd0f6('0x34')](_0x29fcba[_0xd0f6('0x33')]);_0x16f834[_0xd0f6('0x35')]=_[_0xd0f6('0x36')](_0x16f834[_0xd0f6('0x37')],_0x16f834[_0xd0f6('0x33')]);_0x1bc836['attributes']=_['intersection'](_0x16f834[_0xd0f6('0x37')],qs['fields'](_0x29fcba[_0xd0f6('0x33')][_0xd0f6('0x39')]));_0x1bc836['attributes']=_0x1bc836[_0xd0f6('0x38')][_0xd0f6('0x3a')]?_0x1bc836['attributes']:_0x16f834['model'];if(_0x29fcba[_0xd0f6('0x33')][_0xd0f6('0x4b')]){_0x1bc836[_0xd0f6('0x4c')]=[{'all':!![]}];}_0x1bc836=_[_0xd0f6('0x42')]({},_0x1bc836,_0x29fcba[_0xd0f6('0x45')]);return db[_0xd0f6('0x2f')][_0xd0f6('0x4d')](_0x1bc836)[_0xd0f6('0x29')](handleEntityNotFound(_0x5890e9,null))['then'](respondWithResult(_0x5890e9,null))['catch'](handleError(_0x5890e9,null));};exports[_0xd0f6('0x4e')]=function(_0x4829e9,_0x14987b){return db[_0xd0f6('0x2f')][_0xd0f6('0x4e')](_0x4829e9[_0xd0f6('0x4f')],{})[_0xd0f6('0x29')](respondWithResult(_0x14987b,0xc9))[_0xd0f6('0x48')](handleError(_0x14987b,null));};exports[_0xd0f6('0x50')]=function(_0x2a4bc0,_0x5cfa24){if(_0x2a4bc0[_0xd0f6('0x4f')]['id']){delete _0x2a4bc0[_0xd0f6('0x4f')]['id'];}return db['VoiceQueueReport'][_0xd0f6('0x4d')]({'where':{'id':_0x2a4bc0['params']['id']}})[_0xd0f6('0x29')](handleEntityNotFound(_0x5cfa24,null))[_0xd0f6('0x29')](saveUpdates(_0x2a4bc0['body'],null))[_0xd0f6('0x29')](respondWithResult(_0x5cfa24,null))['catch'](handleError(_0x5cfa24,null));};exports[_0xd0f6('0x51')]=function(_0x3898fb,_0x442e6d){return db[_0xd0f6('0x2f')]['find']({'where':{'id':_0x3898fb[_0xd0f6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x442e6d,null))[_0xd0f6('0x29')](removeEntity(_0x442e6d,null))['catch'](handleError(_0x442e6d,null));};exports[_0xd0f6('0x52')]=function(_0x1cc1f7,_0x38a2d7){return db[_0xd0f6('0x2f')][_0xd0f6('0x52')]()['then'](respondWithResult(_0x38a2d7,null))['catch'](handleError(_0x38a2d7,null));};exports[_0xd0f6('0x53')]=function(_0x14ad04,_0x5c072b){var _0x308bee={},_0x42e298={},_0x2ce18b={'count':0x0,'rows':[]};_0x42e298['model']=_[_0xd0f6('0x34')](db['VoiceQueueReport'][_0xd0f6('0x30')]);_0x42e298[_0xd0f6('0x33')]=_['keys'](_0x14ad04[_0xd0f6('0x33')]);_0x42e298['filters']=_[_0xd0f6('0x36')](_0x42e298[_0xd0f6('0x37')],_0x42e298[_0xd0f6('0x33')]);_0x308bee[_0xd0f6('0x38')]=_[_0xd0f6('0x36')](_0x42e298['model'],qs[_0xd0f6('0x39')](_0x14ad04['query'][_0xd0f6('0x39')]));_0x308bee[_0xd0f6('0x38')]=_0x308bee['attributes'][_0xd0f6('0x3a')]?_0x308bee[_0xd0f6('0x38')]:_0x42e298[_0xd0f6('0x37')];if(!_0x14ad04['query'][_0xd0f6('0x3b')](_0xd0f6('0x3c'))){_0x308bee['limit']=qs[_0xd0f6('0x22')](_0x14ad04['query'][_0xd0f6('0x22')]);_0x308bee[_0xd0f6('0x20')]=qs[_0xd0f6('0x20')](_0x14ad04[_0xd0f6('0x33')][_0xd0f6('0x20')]);}_0x308bee[_0xd0f6('0x3d')]=qs[_0xd0f6('0x3e')](_0x14ad04[_0xd0f6('0x33')]['sort']);_0x308bee[_0xd0f6('0x3f')]=qs[_0xd0f6('0x35')](_[_0xd0f6('0x40')](_0x14ad04[_0xd0f6('0x33')],_0x42e298[_0xd0f6('0x35')]));if(_0x14ad04[_0xd0f6('0x33')]['filter']){_0x308bee[_0xd0f6('0x3f')]=_[_0xd0f6('0x42')](_0x308bee[_0xd0f6('0x3f')],{'$or':_[_0xd0f6('0x2e')](_0x308bee[_0xd0f6('0x38')],function(_0x3588f6){var _0x577852={};_0x577852[_0x3588f6]={'$like':'%'+_0x14ad04[_0xd0f6('0x33')][_0xd0f6('0x41')]+'%'};return _0x577852;})});}_0x308bee=_[_0xd0f6('0x42')]({},_0x308bee,_0x14ad04[_0xd0f6('0x45')]);var _0x364566={'where':_0x308bee[_0xd0f6('0x3f')]};return db[_0xd0f6('0x2f')][_0xd0f6('0x23')](_0x364566)['then'](function(_0x47e513){_0x2ce18b[_0xd0f6('0x23')]=_0x47e513;if(_0x14ad04[_0xd0f6('0x33')][_0xd0f6('0x4b')]){_0x308bee[_0xd0f6('0x4c')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xd0f6('0x46')](_0x308bee);})[_0xd0f6('0x29')](function(_0x2147db){_0x2ce18b['rows']=_0x2147db;return _0x2ce18b;})[_0xd0f6('0x29')](respondWithFilteredResult(_0x5c072b,_0x308bee,_0xd0f6('0x53')))['catch'](handleError(_0x5c072b,null,_0xd0f6('0x53')));};
\ No newline at end of file
index 8a9de3a..819732f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bc0=['hook','exports','events','../../mysqldb','VoiceQueueReport','save','emit','hasOwnProperty'];(function(_0x47bd60,_0x22f024){var _0x523729=function(_0x9b333a){while(--_0x9b333a){_0x47bd60['push'](_0x47bd60['shift']());}};_0x523729(++_0x22f024);}(_0x2bc0,0x1aa));var _0x02bc=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x2bc0[_0x21a9d9];return _0x46adce;};'use strict';var EventEmitter=require(_0x02bc('0x0'));var VoiceQueueReport=require(_0x02bc('0x1'))['db'][_0x02bc('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x02bc('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x342e01){return function(_0x3c3cb4,_0x47a720,_0x558c17){VoiceQueueReportEvents[_0x02bc('0x4')](_0x342e01+':'+_0x3c3cb4['id'],_0x3c3cb4);VoiceQueueReportEvents[_0x02bc('0x4')](_0x342e01,_0x3c3cb4);_0x558c17(null);};}for(var e in events){if(events[_0x02bc('0x5')](e)){var event=events[e];VoiceQueueReport[_0x02bc('0x6')](e,emitEvent(event));}}module[_0x02bc('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x7ec4=['VoiceQueueReport','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x5cfd3b,_0x4c4d69){var _0x5524dc=function(_0x178388){while(--_0x178388){_0x5cfd3b['push'](_0x5cfd3b['shift']());}};_0x5524dc(++_0x4c4d69);}(_0x7ec4,0x1d3));var _0x47ec=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x7ec4[_0x19e35c];return _0x3e1fe8;};'use strict';var EventEmitter=require(_0x47ec('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0x47ec('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x47ec('0x2'),'afterUpdate':_0x47ec('0x3'),'afterDestroy':_0x47ec('0x4')};function emitEvent(_0x112c78){return function(_0x383e11,_0x32f0e6,_0x316370){VoiceQueueReportEvents[_0x47ec('0x5')](_0x112c78+':'+_0x383e11['id'],_0x383e11);VoiceQueueReportEvents[_0x47ec('0x5')](_0x112c78,_0x383e11);_0x316370(null);};}for(var e in events){if(events[_0x47ec('0x6')](e)){var event=events[e];VoiceQueueReport[_0x47ec('0x7')](e,emitEvent(event));}}module[_0x47ec('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index 6a7b78e..d16c330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d6e=['calleridnum','moment','bluebird','../../config/environment','./voiceQueueReport.attributes','define','VoiceQueueReport','uniqueid'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x5d6e,0xa9));var _0xe5d6=function(_0x2df387,_0x1d3ea1){_0x2df387=_0x2df387-0x0;var _0x3b1708=_0x5d6e[_0x2df387];return _0x3b1708;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xe5d6('0x0'));var BPromise=require(_0xe5d6('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe5d6('0x2'));var attributes=require(_0xe5d6('0x3'));module['exports']=function(_0x49b764,_0x31c27a){return _0x49b764[_0xe5d6('0x4')](_0xe5d6('0x5'),attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':[_0xe5d6('0x6')]},{'fields':[_0xe5d6('0x7')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4158=['calleridnum','lodash','../../config/logger','moment','request-promise','../../config/environment','./voiceQueueReport.attributes','exports','report_queue','uniqueid'];(function(_0x26f133,_0x3a88e0){var _0x3f4052=function(_0xed06b9){while(--_0xed06b9){_0x26f133['push'](_0x26f133['shift']());}};_0x3f4052(++_0x3a88e0);}(_0x4158,0x19b));var _0x8415=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x4158[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0x8415('0x0'));var util=require('util');var logger=require(_0x8415('0x1'))('api');var moment=require(_0x8415('0x2'));var BPromise=require('bluebird');var rp=require(_0x8415('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8415('0x4'));var attributes=require(_0x8415('0x5'));module[_0x8415('0x6')]=function(_0x1453d9,_0x3310a0){return _0x1453d9['define']('VoiceQueueReport',attributes,{'tableName':_0x8415('0x7'),'paranoid':![],'indexes':[{'fields':[_0x8415('0x8')]},{'fields':[_0x8415('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index d90b36f..fc55293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3277=['map','model','debug','stringify','create','body','raw','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./voiceQueueReport.socket','request','then','info','VoiceQueueReport,\x20%s,\x20%s','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','attributes','limit','include'];(function(_0x31b588,_0x30b636){var _0xf4faae=function(_0x535ad7){while(--_0x535ad7){_0x31b588['push'](_0x31b588['shift']());}};_0xf4faae(++_0x30b636);}(_0x3277,0x8c));var _0x7327=function(_0x53f92d,_0x3657c0){_0x53f92d=_0x53f92d-0x0;var _0x5d697c=_0x3277[_0x53f92d];return _0x5d697c;};'use strict';var _=require(_0x7327('0x0'));var util=require(_0x7327('0x1'));var moment=require(_0x7327('0x2'));var BPromise=require(_0x7327('0x3'));var rs=require(_0x7327('0x4'));var fs=require('fs');var Redis=require(_0x7327('0x5'));var db=require(_0x7327('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7327('0x7'));var config=require(_0x7327('0x8'));var jayson=require(_0x7327('0x9'));var client=jayson[_0x7327('0xa')]['http']({'port':0x232a});config[_0x7327('0xb')]=_[_0x7327('0xc')](config[_0x7327('0xb')],{'host':_0x7327('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7327('0xb')]));require(_0x7327('0xe'))['register'](socket);function respondWithRpcPromise(_0x45f074,_0x2f34f3,_0x425d6a){return new BPromise(function(_0x572f8b,_0x3f29ab){return client[_0x7327('0xf')](_0x45f074,_0x425d6a)[_0x7327('0x10')](function(_0x4245c7){logger[_0x7327('0x11')](_0x7327('0x12'),_0x2f34f3,'request\x20sent');logger['debug'](_0x7327('0x13'),_0x2f34f3,'request\x20sent',JSON['stringify'](_0x4245c7));if(_0x4245c7['error']){if(_0x4245c7[_0x7327('0x14')]['code']===0x1f4){logger['error'](_0x7327('0x12'),_0x2f34f3,_0x4245c7[_0x7327('0x14')][_0x7327('0x15')]);return _0x3f29ab(_0x4245c7[_0x7327('0x14')][_0x7327('0x15')]);}logger[_0x7327('0x14')](_0x7327('0x12'),_0x2f34f3,_0x4245c7[_0x7327('0x14')][_0x7327('0x15')]);return _0x572f8b(_0x4245c7[_0x7327('0x14')]['message']);}else{logger[_0x7327('0x11')](_0x7327('0x12'),_0x2f34f3,_0x7327('0x16'));_0x572f8b(_0x4245c7[_0x7327('0x17')][_0x7327('0x15')]);}})[_0x7327('0x18')](function(_0x22680d){logger[_0x7327('0x14')](_0x7327('0x12'),_0x2f34f3,_0x22680d);_0x3f29ab(_0x22680d);});});}exports[_0x7327('0x19')]=function(_0x3f55ec){var _0x22f5a1=this;return new Promise(function(_0x42f458,_0x5d126f){return db[_0x7327('0x1a')][_0x7327('0x1b')]({'raw':_0x3f55ec[_0x7327('0x1c')]?_0x3f55ec[_0x7327('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x3f55ec['options']?_0x3f55ec[_0x7327('0x1c')]['where']||null:null,'attributes':_0x3f55ec['options']?_0x3f55ec['options'][_0x7327('0x1d')]||null:null,'limit':_0x3f55ec['options']?_0x3f55ec[_0x7327('0x1c')][_0x7327('0x1e')]||null:null,'include':_0x3f55ec[_0x7327('0x1c')]?_0x3f55ec[_0x7327('0x1c')][_0x7327('0x1f')]?_[_0x7327('0x20')](_0x3f55ec[_0x7327('0x1c')]['include'],function(_0x1c69e3){return{'model':db[_0x1c69e3[_0x7327('0x21')]],'as':_0x1c69e3['as'],'attributes':_0x1c69e3[_0x7327('0x1d')],'include':_0x1c69e3[_0x7327('0x1f')]?_[_0x7327('0x20')](_0x1c69e3['include'],function(_0x116212){return{'model':db[_0x116212[_0x7327('0x21')]],'as':_0x116212['as'],'attributes':_0x116212[_0x7327('0x1d')],'include':_0x116212['include']?_[_0x7327('0x20')](_0x116212[_0x7327('0x1f')],function(_0x466576){return{'model':db[_0x466576['model']],'as':_0x466576['as'],'attributes':_0x466576[_0x7327('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7327('0x10')](function(_0x3099aa){logger['info'](_0x7327('0x19'),_0x3f55ec);logger[_0x7327('0x22')](_0x7327('0x19'),_0x3f55ec,JSON[_0x7327('0x23')](_0x3099aa));_0x42f458(_0x3099aa);})[_0x7327('0x18')](function(_0x2a6692){logger[_0x7327('0x14')](_0x7327('0x19'),_0x2a6692[_0x7327('0x15')],_0x3f55ec);_0x5d126f(_0x22f5a1[_0x7327('0x14')](0x1f4,_0x2a6692[_0x7327('0x15')]));});});};exports['CreateVoiceQueueReport']=function(_0x16d1cb){var _0xaf2438=this;return new Promise(function(_0x7494de,_0x2fd8c8){return db[_0x7327('0x1a')][_0x7327('0x24')](_0x16d1cb[_0x7327('0x25')],{'raw':_0x16d1cb[_0x7327('0x1c')]?_0x16d1cb[_0x7327('0x1c')][_0x7327('0x26')]===undefined?!![]:![]:!![]})[_0x7327('0x10')](function(_0x4a46b6){logger[_0x7327('0x11')](_0x7327('0x27'),_0x16d1cb);logger[_0x7327('0x22')](_0x7327('0x27'),_0x16d1cb,JSON[_0x7327('0x23')](_0x4a46b6));_0x7494de(_0x4a46b6);})[_0x7327('0x18')](function(_0x335f2b){logger[_0x7327('0x14')](_0x7327('0x27'),_0x335f2b[_0x7327('0x15')],_0x16d1cb);_0x2fd8c8(_0xaf2438[_0x7327('0x14')](0x1f4,_0x335f2b[_0x7327('0x15')]));});});};exports[_0x7327('0x28')]=function(_0x189578){var _0x17e8bf=this;return new Promise(function(_0x11883f,_0x42db53){return db['VoiceQueueReport'][_0x7327('0x29')](_0x189578[_0x7327('0x25')],{'raw':_0x189578[_0x7327('0x1c')]?_0x189578[_0x7327('0x1c')][_0x7327('0x26')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x189578[_0x7327('0x1c')]?_0x189578[_0x7327('0x1c')][_0x7327('0x2a')]||null:null,'attributes':_0x189578[_0x7327('0x1c')]?_0x189578[_0x7327('0x1c')][_0x7327('0x1d')]||null:null,'limit':_0x189578[_0x7327('0x1c')]?_0x189578[_0x7327('0x1c')][_0x7327('0x1e')]||null:null})[_0x7327('0x10')](function(_0xb09002){logger[_0x7327('0x11')](_0x7327('0x28'),_0x189578);logger[_0x7327('0x22')]('UpdateVoiceQueueReport',_0x189578,JSON['stringify'](_0xb09002));_0x11883f(_0xb09002);})[_0x7327('0x18')](function(_0x923147){logger[_0x7327('0x14')](_0x7327('0x28'),_0x923147['message'],_0x189578);_0x42db53(_0x17e8bf['error'](0x1f4,_0x923147[_0x7327('0x15')]));});});};
\ No newline at end of file
+var _0x01a7=['VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','include','model','attributes','map','catch','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','update','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x32d61c,_0x573abc){var _0x23f744=function(_0xf8c9b3){while(--_0xf8c9b3){_0x32d61c['push'](_0x32d61c['shift']());}};_0x23f744(++_0x573abc);}(_0x01a7,0xe4));var _0x701a=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0x01a7[_0x4ea69d];return _0x5318e0;};'use strict';var _=require(_0x701a('0x0'));var util=require(_0x701a('0x1'));var moment=require(_0x701a('0x2'));var BPromise=require(_0x701a('0x3'));var rs=require(_0x701a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x701a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x701a('0x6'));var jayson=require(_0x701a('0x7'));var client=jayson[_0x701a('0x8')][_0x701a('0x9')]({'port':0x232a});config[_0x701a('0xa')]=_[_0x701a('0xb')](config[_0x701a('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x701a('0xc'))(new Redis(config[_0x701a('0xa')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithRpcPromise(_0x460145,_0x559989,_0x228e2d){return new BPromise(function(_0x144b46,_0x3b69e1){return client['request'](_0x460145,_0x228e2d)[_0x701a('0xd')](function(_0x3bc1f5){logger[_0x701a('0xe')](_0x701a('0xf'),_0x559989,_0x701a('0x10'));logger[_0x701a('0x11')](_0x701a('0x12'),_0x559989,'request\x20sent',JSON[_0x701a('0x13')](_0x3bc1f5));if(_0x3bc1f5[_0x701a('0x14')]){if(_0x3bc1f5[_0x701a('0x14')][_0x701a('0x15')]===0x1f4){logger[_0x701a('0x14')](_0x701a('0xf'),_0x559989,_0x3bc1f5['error'][_0x701a('0x16')]);return _0x3b69e1(_0x3bc1f5[_0x701a('0x14')]['message']);}logger[_0x701a('0x14')](_0x701a('0xf'),_0x559989,_0x3bc1f5[_0x701a('0x14')][_0x701a('0x16')]);return _0x144b46(_0x3bc1f5[_0x701a('0x14')][_0x701a('0x16')]);}else{logger[_0x701a('0xe')](_0x701a('0xf'),_0x559989,_0x701a('0x10'));_0x144b46(_0x3bc1f5[_0x701a('0x17')][_0x701a('0x16')]);}})['catch'](function(_0xc747e8){logger[_0x701a('0x14')](_0x701a('0xf'),_0x559989,_0xc747e8);_0x3b69e1(_0xc747e8);});});}exports[_0x701a('0x18')]=function(_0x49a083){var _0x55be9f=this;return new Promise(function(_0x1082cc,_0x39f4bb){return db[_0x701a('0x19')][_0x701a('0x1a')]({'raw':_0x49a083[_0x701a('0x1b')]?_0x49a083[_0x701a('0x1b')][_0x701a('0x1c')]===undefined?!![]:![]:!![],'where':_0x49a083[_0x701a('0x1b')]?_0x49a083[_0x701a('0x1b')][_0x701a('0x1d')]||null:null,'attributes':_0x49a083[_0x701a('0x1b')]?_0x49a083['options']['attributes']||null:null,'limit':_0x49a083['options']?_0x49a083[_0x701a('0x1b')]['limit']||null:null,'include':_0x49a083['options']?_0x49a083[_0x701a('0x1b')][_0x701a('0x1e')]?_['map'](_0x49a083[_0x701a('0x1b')][_0x701a('0x1e')],function(_0x35a621){return{'model':db[_0x35a621[_0x701a('0x1f')]],'as':_0x35a621['as'],'attributes':_0x35a621[_0x701a('0x20')],'include':_0x35a621[_0x701a('0x1e')]?_[_0x701a('0x21')](_0x35a621['include'],function(_0x5c853e){return{'model':db[_0x5c853e[_0x701a('0x1f')]],'as':_0x5c853e['as'],'attributes':_0x5c853e['attributes'],'include':_0x5c853e[_0x701a('0x1e')]?_[_0x701a('0x21')](_0x5c853e[_0x701a('0x1e')],function(_0x3da2e3){return{'model':db[_0x3da2e3['model']],'as':_0x3da2e3['as'],'attributes':_0x3da2e3[_0x701a('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xfc28ce){logger[_0x701a('0xe')](_0x701a('0x18'),_0x49a083);logger[_0x701a('0x11')](_0x701a('0x18'),_0x49a083,JSON[_0x701a('0x13')](_0xfc28ce));_0x1082cc(_0xfc28ce);})[_0x701a('0x22')](function(_0x5dbce4){logger[_0x701a('0x14')](_0x701a('0x18'),_0x5dbce4[_0x701a('0x16')],_0x49a083);_0x39f4bb(_0x55be9f['error'](0x1f4,_0x5dbce4[_0x701a('0x16')]));});});};exports[_0x701a('0x23')]=function(_0x5b9a64){var _0x1acba7=this;return new Promise(function(_0x2be0e9,_0x25d5c1){return db[_0x701a('0x19')][_0x701a('0x24')](_0x5b9a64[_0x701a('0x25')],{'raw':_0x5b9a64['options']?_0x5b9a64['options'][_0x701a('0x1c')]===undefined?!![]:![]:!![]})[_0x701a('0xd')](function(_0x20eff9){logger[_0x701a('0xe')](_0x701a('0x23'),_0x5b9a64);logger[_0x701a('0x11')](_0x701a('0x23'),_0x5b9a64,JSON[_0x701a('0x13')](_0x20eff9));_0x2be0e9(_0x20eff9);})[_0x701a('0x22')](function(_0x3290d7){logger[_0x701a('0x14')](_0x701a('0x23'),_0x3290d7[_0x701a('0x16')],_0x5b9a64);_0x25d5c1(_0x1acba7[_0x701a('0x14')](0x1f4,_0x3290d7[_0x701a('0x16')]));});});};exports[_0x701a('0x26')]=function(_0x17938f){var _0x54b23f=this;return new Promise(function(_0x5cddf3,_0x2ab6e9){return db[_0x701a('0x19')][_0x701a('0x27')](_0x17938f['body'],{'raw':_0x17938f[_0x701a('0x1b')]?_0x17938f['options'][_0x701a('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17938f[_0x701a('0x1b')]?_0x17938f['options'][_0x701a('0x1d')]||null:null,'attributes':_0x17938f[_0x701a('0x1b')]?_0x17938f[_0x701a('0x1b')][_0x701a('0x20')]||null:null,'limit':_0x17938f['options']?_0x17938f['options'][_0x701a('0x28')]||null:null})['then'](function(_0x59593a){logger[_0x701a('0xe')](_0x701a('0x26'),_0x17938f);logger[_0x701a('0x11')]('UpdateVoiceQueueReport',_0x17938f,JSON['stringify'](_0x59593a));_0x5cddf3(_0x59593a);})[_0x701a('0x22')](function(_0x14beb8){logger['error']('UpdateVoiceQueueReport',_0x14beb8[_0x701a('0x16')],_0x17938f);_0x2ab6e9(_0x54b23f['error'](0x1f4,_0x14beb8[_0x701a('0x16')]));});});};
\ No newline at end of file
index 4de370c..d96f161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d5=['emit','register','length','./voiceQueueReport.events','save','remove','update'];(function(_0x68b135,_0x1c1c4d){var _0x5e68bc=function(_0x4436ed){while(--_0x4436ed){_0x68b135['push'](_0x68b135['shift']());}};_0x5e68bc(++_0x1c1c4d);}(_0x97d5,0x199));var _0x597d=function(_0x4e04b6,_0x73c3d7){_0x4e04b6=_0x4e04b6-0x0;var _0x1dbd62=_0x97d5[_0x4e04b6];return _0x1dbd62;};'use strict';var VoiceQueueReportEvents=require(_0x597d('0x0'));var events=[_0x597d('0x1'),_0x597d('0x2'),_0x597d('0x3')];function createListener(_0x5907c6,_0x1b1ab5){return function(_0x484c73){_0x1b1ab5[_0x597d('0x4')](_0x5907c6,_0x484c73);};}function removeListener(_0x2d89ef,_0x10ecda){return function(){VoiceQueueReportEvents['removeListener'](_0x2d89ef,_0x10ecda);};}exports[_0x597d('0x5')]=function(_0x2bafef){for(var _0x2a6640=0x0,_0x316e5a=events[_0x597d('0x6')];_0x2a6640<_0x316e5a;_0x2a6640++){var _0xe0072a=events[_0x2a6640];var _0x228d4d=createListener('voiceQueueReport:'+_0xe0072a,_0x2bafef);VoiceQueueReportEvents['on'](_0xe0072a,_0x228d4d);}};
\ No newline at end of file
+var _0x2086=['remove','update','emit','removeListener','register','./voiceQueueReport.events','save'];(function(_0x83cf4,_0xdc12c6){var _0x2b8e13=function(_0x124177){while(--_0x124177){_0x83cf4['push'](_0x83cf4['shift']());}};_0x2b8e13(++_0xdc12c6);}(_0x2086,0x124));var _0x6208=function(_0x5cbf92,_0x158e71){_0x5cbf92=_0x5cbf92-0x0;var _0x310acf=_0x2086[_0x5cbf92];return _0x310acf;};'use strict';var VoiceQueueReportEvents=require(_0x6208('0x0'));var events=[_0x6208('0x1'),_0x6208('0x2'),_0x6208('0x3')];function createListener(_0x2ea43d,_0x13962a){return function(_0x562353){_0x13962a[_0x6208('0x4')](_0x2ea43d,_0x562353);};}function removeListener(_0x2ae558,_0x4e0071){return function(){VoiceQueueReportEvents[_0x6208('0x5')](_0x2ae558,_0x4e0071);};}exports[_0x6208('0x6')]=function(_0x38bc4d){for(var _0xb3cf2a=0x0,_0x2b218a=events['length'];_0xb3cf2a<_0x2b218a;_0xb3cf2a++){var _0x8f32fc=events[_0xb3cf2a];var _0x5908ad=createListener('voiceQueueReport:'+_0x8f32fc,_0x38bc4d);VoiceQueueReportEvents['on'](_0x8f32fc,_0x5908ad);}};
\ No newline at end of file
index ee29a92..989f74a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0884=['get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller'];(function(_0xa434dd,_0x2d1b14){var _0x57503a=function(_0x3ac55b){while(--_0x3ac55b){_0xa434dd['push'](_0xa434dd['shift']());}};_0x57503a(++_0x2d1b14);}(_0x0884,0xb3));var _0x4088=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0884[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4088('0x0'));var util=require(_0x4088('0x1'));var path=require(_0x4088('0x2'));var timeout=require(_0x4088('0x3'));var express=require(_0x4088('0x4'));var router=express[_0x4088('0x5')]();var fs_extra=require(_0x4088('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4088('0x7'));var config=require(_0x4088('0x8'));var controller=require(_0x4088('0x9'));router[_0x4088('0xa')]('/',auth[_0x4088('0xb')](),controller['index']);router['get'](_0x4088('0xc'),auth['isAuthenticated'](),controller[_0x4088('0xd')]);router[_0x4088('0xe')]('/',auth[_0x4088('0xb')](),controller[_0x4088('0xf')]);router[_0x4088('0x10')](_0x4088('0xc'),auth[_0x4088('0xb')](),controller[_0x4088('0x11')]);router[_0x4088('0x12')]('/:id',auth[_0x4088('0xb')](),controller[_0x4088('0x13')]);module[_0x4088('0x14')]=router;
\ No newline at end of file
+var _0x7576=['update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','index','create','put','/:id'];(function(_0x188f85,_0x30dd75){var _0x2538e6=function(_0x365ef7){while(--_0x365ef7){_0x188f85['push'](_0x188f85['shift']());}};_0x2538e6(++_0x30dd75);}(_0x7576,0x1d8));var _0x6757=function(_0x59107f,_0x3cdd4a){_0x59107f=_0x59107f-0x0;var _0x515014=_0x7576[_0x59107f];return _0x515014;};'use strict';var multer=require(_0x6757('0x0'));var util=require('util');var path=require(_0x6757('0x1'));var timeout=require('connect-timeout');var express=require(_0x6757('0x2'));var router=express[_0x6757('0x3')]();var fs_extra=require(_0x6757('0x4'));var auth=require(_0x6757('0x5'));var interaction=require(_0x6757('0x6'));var config=require('../../config/environment');var controller=require(_0x6757('0x7'));router[_0x6757('0x8')]('/',auth[_0x6757('0x9')](),controller[_0x6757('0xa')]);router['get']('/:id',auth[_0x6757('0x9')](),controller['show']);router['post']('/',auth[_0x6757('0x9')](),controller[_0x6757('0xb')]);router[_0x6757('0xc')](_0x6757('0xd'),auth['isAuthenticated'](),controller[_0x6757('0xe')]);router[_0x6757('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x6757('0x10')]);module[_0x6757('0x11')]=router;
\ No newline at end of file
index 1a0b51b..ba0a072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2157=['sequelize','moment','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x2157,0x13b));var _0x7215=function(_0x6bfec9,_0xe03f3b){_0x6bfec9=_0x6bfec9-0x0;var _0x6aa678=_0x2157[_0x6bfec9];return _0x6aa678;};'use strict';var Sequelize=require(_0x7215('0x0'));var moment=require(_0x7215('0x1'));module[_0x7215('0x2')]={'time':{'type':Sequelize[_0x7215('0x3')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x7215('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x7215('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x7215('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x7215('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x7215('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x7215('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x7215('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x7215('0x4')],'allowNull':![],'defaultValue':moment()[_0x7215('0x5')](_0x7215('0x6'))}};
\ No newline at end of file
+var _0x631e=['DATE','format','sequelize','moment','exports','STRING'];(function(_0x3ac312,_0x5d3903){var _0x36b673=function(_0x254b25){while(--_0x254b25){_0x3ac312['push'](_0x3ac312['shift']());}};_0x36b673(++_0x5d3903);}(_0x631e,0xaa));var _0xe631=function(_0x2f4618,_0x5ce6b2){_0x2f4618=_0x2f4618-0x0;var _0x479c52=_0x631e[_0x2f4618];return _0x479c52;};'use strict';var Sequelize=require(_0xe631('0x0'));var moment=require(_0xe631('0x1'));module[_0xe631('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xe631('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xe631('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xe631('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xe631('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xe631('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xe631('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xe631('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xe631('0x4')],'allowNull':![],'defaultValue':moment()[_0xe631('0x5')]('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
index 7edf1a1..4f3ca8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1748=['hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','findAll','rows','show','rawAttributes','length','includeAll','include','catch','create','body','update','params','find','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','destroy','error','name','send','VoiceQueuesLog','fieldName','type','model','keys','query','intersection','attributes','fields'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x1748,0x170));var _0x8174=function(_0x1875b9,_0x10d9f6){_0x1875b9=_0x1875b9-0x0;var _0xcfc5c0=_0x1748[_0x1875b9];return _0xcfc5c0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8174('0x0'));var zipdir=require(_0x8174('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8174('0x2'));var moment=require(_0x8174('0x3'));var BPromise=require(_0x8174('0x4'));var Mustache=require(_0x8174('0x5'));var util=require(_0x8174('0x6'));var path=require(_0x8174('0x7'));var sox=require('sox');var csv=require(_0x8174('0x8'));var ejs=require(_0x8174('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8174('0xa'));var squel=require(_0x8174('0xb'));var crypto=require('crypto');var jsforce=require(_0x8174('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8174('0x8'));var querystring=require(_0x8174('0xd'));var Papa=require(_0x8174('0xe'));var Redis=require(_0x8174('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x8174('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8174('0x11'));var logger=require(_0x8174('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x8174('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x8174('0x14'))['db'];function respondWithStatusCode(_0x1b3d92,_0x4377af){_0x4377af=_0x4377af||0xcc;return function(_0x4c3fd0){if(_0x4c3fd0){return _0x1b3d92[_0x8174('0x15')](_0x4377af);}return _0x1b3d92[_0x8174('0x16')](_0x4377af)[_0x8174('0x17')]();};}function respondWithResult(_0x14489f,_0x195af8){_0x195af8=_0x195af8||0xc8;return function(_0x4776ef){if(_0x4776ef){return _0x14489f[_0x8174('0x16')](_0x195af8)[_0x8174('0x18')](_0x4776ef);}};}function respondWithFilteredResult(_0x54daa3,_0x1fe8ae){return function(_0x418ede){if(_0x418ede){var _0xef7d53=typeof _0x1fe8ae[_0x8174('0x19')]===_0x8174('0x1a')&&typeof _0x1fe8ae[_0x8174('0x1b')]===_0x8174('0x1a');var _0x15077c=_0x418ede[_0x8174('0x1c')];var _0x1833eb=_0xef7d53?0x0:_0x1fe8ae[_0x8174('0x19')];var _0x51b7c3=_0xef7d53?_0x418ede[_0x8174('0x1c')]:_0x1fe8ae[_0x8174('0x19')]+_0x1fe8ae[_0x8174('0x1b')];var _0x1a2814;if(_0x51b7c3>=_0x15077c){_0x51b7c3=_0x15077c;_0x1a2814=0xc8;}else{_0x1a2814=0xce;}_0x54daa3[_0x8174('0x16')](_0x1a2814);return _0x54daa3[_0x8174('0x1d')](_0x8174('0x1e'),_0x1833eb+'-'+_0x51b7c3+'/'+_0x15077c)['json'](_0x418ede);}return null;};}function patchUpdates(_0xb1cb9d){return function(_0x2a9c17){try{jsonpatch['apply'](_0x2a9c17,_0xb1cb9d,!![]);}catch(_0x4e919e){return BPromise['reject'](_0x4e919e);}return _0x2a9c17[_0x8174('0x1f')]();};}function saveUpdates(_0x4881f2,_0x311095){return function(_0x6b147d){if(_0x6b147d){return _0x6b147d['update'](_0x4881f2)[_0x8174('0x20')](function(_0x7151c5){return _0x7151c5;});}return null;};}function removeEntity(_0xcba0ec,_0x1afa20){return function(_0x1d0be6){if(_0x1d0be6){return _0x1d0be6[_0x8174('0x21')]()[_0x8174('0x20')](function(){_0xcba0ec[_0x8174('0x16')](0xcc)[_0x8174('0x17')]();});}};}function handleEntityNotFound(_0x3d231a,_0x4f40d5){return function(_0x34d817){if(!_0x34d817){_0x3d231a[_0x8174('0x15')](0x194);}return _0x34d817;};}function handleError(_0x3f1b01,_0x1f1ad6){_0x1f1ad6=_0x1f1ad6||0x1f4;return function(_0x3289ff){logger[_0x8174('0x22')](_0x3289ff['stack']);if(_0x3289ff['name']){delete _0x3289ff[_0x8174('0x23')];}_0x3f1b01[_0x8174('0x16')](_0x1f1ad6)[_0x8174('0x24')](_0x3289ff);};}exports['index']=function(_0x18fe1a,_0xc01b25){var _0x190994={},_0x5192af={},_0x49512b={'count':0x0,'rows':[]};var _0x5b3ab8=_['map'](db[_0x8174('0x25')]['rawAttributes'],function(_0x45bb05){return{'name':_0x45bb05[_0x8174('0x26')],'type':_0x45bb05[_0x8174('0x27')]['key']};});_0x5192af[_0x8174('0x28')]=_['map'](_0x5b3ab8,_0x8174('0x23'));_0x5192af['query']=_[_0x8174('0x29')](_0x18fe1a[_0x8174('0x2a')]);_0x5192af['filters']=_[_0x8174('0x2b')](_0x5192af['model'],_0x5192af[_0x8174('0x2a')]);_0x190994[_0x8174('0x2c')]=_[_0x8174('0x2b')](_0x5192af[_0x8174('0x28')],qs[_0x8174('0x2d')](_0x18fe1a[_0x8174('0x2a')]['fields']));_0x190994['attributes']=_0x190994['attributes']['length']?_0x190994[_0x8174('0x2c')]:_0x5192af[_0x8174('0x28')];if(!_0x18fe1a[_0x8174('0x2a')][_0x8174('0x2e')](_0x8174('0x2f'))){_0x190994[_0x8174('0x1b')]=qs['limit'](_0x18fe1a['query'][_0x8174('0x1b')]);_0x190994[_0x8174('0x19')]=qs[_0x8174('0x19')](_0x18fe1a[_0x8174('0x2a')]['offset']);}_0x190994[_0x8174('0x30')]=qs[_0x8174('0x31')](_0x18fe1a['query'][_0x8174('0x31')]);_0x190994[_0x8174('0x32')]=qs[_0x8174('0x33')](_[_0x8174('0x34')](_0x18fe1a[_0x8174('0x2a')],_0x5192af[_0x8174('0x33')]),_0x5b3ab8);if(_0x18fe1a['query'][_0x8174('0x35')]){_0x190994[_0x8174('0x32')]=_['merge'](_0x190994[_0x8174('0x32')],{'$or':_['map'](_0x5b3ab8,function(_0x1f698e){if(_0x1f698e[_0x8174('0x27')]!==_0x8174('0x36')){var _0x2b4d0a={};_0x2b4d0a[_0x1f698e['name']]={'$like':'%'+_0x18fe1a[_0x8174('0x2a')][_0x8174('0x35')]+'%'};return _0x2b4d0a;}})});}_0x190994=_[_0x8174('0x37')]({},_0x190994,_0x18fe1a['options']);var _0x50d560={'where':_0x190994[_0x8174('0x32')]};return db[_0x8174('0x25')]['count'](_0x50d560)['then'](function(_0x17ea5f){_0x49512b[_0x8174('0x1c')]=_0x17ea5f;if(_0x18fe1a[_0x8174('0x2a')]['includeAll']){_0x190994['include']=[{'all':!![]}];}return db[_0x8174('0x25')][_0x8174('0x38')](_0x190994);})['then'](function(_0x1e63d6){_0x49512b[_0x8174('0x39')]=_0x1e63d6;return _0x49512b;})[_0x8174('0x20')](respondWithFilteredResult(_0xc01b25,_0x190994))['catch'](handleError(_0xc01b25,null));};exports[_0x8174('0x3a')]=function(_0x56a504,_0x19bbd7){var _0x570034={'raw':!![],'where':{'id':_0x56a504['params']['id']}},_0x54f0be={};_0x54f0be[_0x8174('0x28')]=_['keys'](db[_0x8174('0x25')][_0x8174('0x3b')]);_0x54f0be[_0x8174('0x2a')]=_['keys'](_0x56a504[_0x8174('0x2a')]);_0x54f0be[_0x8174('0x33')]=_[_0x8174('0x2b')](_0x54f0be[_0x8174('0x28')],_0x54f0be[_0x8174('0x2a')]);_0x570034[_0x8174('0x2c')]=_['intersection'](_0x54f0be[_0x8174('0x28')],qs[_0x8174('0x2d')](_0x56a504[_0x8174('0x2a')][_0x8174('0x2d')]));_0x570034[_0x8174('0x2c')]=_0x570034[_0x8174('0x2c')][_0x8174('0x3c')]?_0x570034[_0x8174('0x2c')]:_0x54f0be['model'];if(_0x56a504[_0x8174('0x2a')][_0x8174('0x3d')]){_0x570034[_0x8174('0x3e')]=[{'all':!![]}];}_0x570034=_[_0x8174('0x37')]({},_0x570034,_0x56a504['options']);return db[_0x8174('0x25')]['find'](_0x570034)[_0x8174('0x20')](handleEntityNotFound(_0x19bbd7,null))[_0x8174('0x20')](respondWithResult(_0x19bbd7,null))[_0x8174('0x3f')](handleError(_0x19bbd7,null));};exports[_0x8174('0x40')]=function(_0xdf755d,_0x18b0da){return db['VoiceQueuesLog'][_0x8174('0x40')](_0xdf755d[_0x8174('0x41')],{})[_0x8174('0x20')](respondWithResult(_0x18b0da,0xc9))['catch'](handleError(_0x18b0da,null));};exports[_0x8174('0x42')]=function(_0x53a325,_0x370e7b){if(_0x53a325[_0x8174('0x41')]['id']){delete _0x53a325['body']['id'];}return db['VoiceQueuesLog']['find']({'where':{'id':_0x53a325[_0x8174('0x43')]['id']}})[_0x8174('0x20')](handleEntityNotFound(_0x370e7b,null))[_0x8174('0x20')](saveUpdates(_0x53a325['body'],null))[_0x8174('0x20')](respondWithResult(_0x370e7b,null))[_0x8174('0x3f')](handleError(_0x370e7b,null));};exports[_0x8174('0x21')]=function(_0x5bcaf6,_0x54711e){return db[_0x8174('0x25')][_0x8174('0x44')]({'where':{'id':_0x5bcaf6[_0x8174('0x43')]['id']}})[_0x8174('0x20')](handleEntityNotFound(_0x54711e,null))[_0x8174('0x20')](removeEntity(_0x54711e,null))[_0x8174('0x3f')](handleError(_0x54711e,null));};
\ No newline at end of file
+var _0x4d5c=['mustache','path','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','update','then','sendStatus','error','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','query','keys','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','options','includeAll','findAll','rows','catch','show','include','body','find','destroy','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x349356,_0x2d5b6a){var _0x52ff32=function(_0x4af45b){while(--_0x4af45b){_0x349356['push'](_0x349356['shift']());}};_0x52ff32(++_0x2d5b6a);}(_0x4d5c,0x15e));var _0xc4d5=function(_0x1b3564,_0x16c919){_0x1b3564=_0x1b3564-0x0;var _0x504069=_0x4d5c[_0x1b3564];return _0x504069;};'use strict';var emlformat=require(_0xc4d5('0x0'));var rimraf=require(_0xc4d5('0x1'));var zipdir=require(_0xc4d5('0x2'));var jsonpatch=require(_0xc4d5('0x3'));var rp=require(_0xc4d5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc4d5('0x5'));var util=require('util');var path=require(_0xc4d5('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc4d5('0x7'));var squel=require(_0xc4d5('0x8'));var crypto=require(_0xc4d5('0x9'));var jsforce=require(_0xc4d5('0xa'));var deskjs=require(_0xc4d5('0xb'));var toCsv=require(_0xc4d5('0xc'));var querystring=require('querystring');var Papa=require(_0xc4d5('0xd'));var Redis=require(_0xc4d5('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc4d5('0xf'));var as=require(_0xc4d5('0x10'));var hardwareService=require(_0xc4d5('0x11'));var logger=require(_0xc4d5('0x12'))('api');var utils=require(_0xc4d5('0x13'));var config=require(_0xc4d5('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc4d5('0x15'))['db'];function respondWithStatusCode(_0x2809ed,_0x46947c){_0x46947c=_0x46947c||0xcc;return function(_0x22757f){if(_0x22757f){return _0x2809ed['sendStatus'](_0x46947c);}return _0x2809ed[_0xc4d5('0x16')](_0x46947c)[_0xc4d5('0x17')]();};}function respondWithResult(_0x1c7c9d,_0x4f3f6e){_0x4f3f6e=_0x4f3f6e||0xc8;return function(_0x400421){if(_0x400421){return _0x1c7c9d[_0xc4d5('0x16')](_0x4f3f6e)[_0xc4d5('0x18')](_0x400421);}};}function respondWithFilteredResult(_0x2551bc,_0x4b510c){return function(_0x74f2a6){if(_0x74f2a6){var _0x269bab=typeof _0x4b510c['offset']==='undefined'&&typeof _0x4b510c[_0xc4d5('0x19')]===_0xc4d5('0x1a');var _0x4438b2=_0x74f2a6[_0xc4d5('0x1b')];var _0x4cf97f=_0x269bab?0x0:_0x4b510c['offset'];var _0x4023e=_0x269bab?_0x74f2a6[_0xc4d5('0x1b')]:_0x4b510c[_0xc4d5('0x1c')]+_0x4b510c[_0xc4d5('0x19')];var _0x248f33;if(_0x4023e>=_0x4438b2){_0x4023e=_0x4438b2;_0x248f33=0xc8;}else{_0x248f33=0xce;}_0x2551bc[_0xc4d5('0x16')](_0x248f33);return _0x2551bc[_0xc4d5('0x1d')](_0xc4d5('0x1e'),_0x4cf97f+'-'+_0x4023e+'/'+_0x4438b2)[_0xc4d5('0x18')](_0x74f2a6);}return null;};}function patchUpdates(_0x1d1fdb){return function(_0x35e5f0){try{jsonpatch[_0xc4d5('0x1f')](_0x35e5f0,_0x1d1fdb,!![]);}catch(_0x2818aa){return BPromise['reject'](_0x2818aa);}return _0x35e5f0[_0xc4d5('0x20')]();};}function saveUpdates(_0x32f569,_0x37efca){return function(_0x2e99ff){if(_0x2e99ff){return _0x2e99ff[_0xc4d5('0x21')](_0x32f569)[_0xc4d5('0x22')](function(_0x35662e){return _0x35662e;});}return null;};}function removeEntity(_0x1c9355,_0x3ebabc){return function(_0x50de71){if(_0x50de71){return _0x50de71['destroy']()[_0xc4d5('0x22')](function(){_0x1c9355[_0xc4d5('0x16')](0xcc)[_0xc4d5('0x17')]();});}};}function handleEntityNotFound(_0x4f87cf,_0x48bd09){return function(_0x163d1a){if(!_0x163d1a){_0x4f87cf[_0xc4d5('0x23')](0x194);}return _0x163d1a;};}function handleError(_0x1500b3,_0xb6ae91){_0xb6ae91=_0xb6ae91||0x1f4;return function(_0x330b62){logger[_0xc4d5('0x24')](_0x330b62['stack']);if(_0x330b62[_0xc4d5('0x25')]){delete _0x330b62[_0xc4d5('0x25')];}_0x1500b3[_0xc4d5('0x16')](_0xb6ae91)[_0xc4d5('0x26')](_0x330b62);};}exports[_0xc4d5('0x27')]=function(_0x527126,_0x78c384){var _0x337018={},_0x597fa8={},_0x20d88a={'count':0x0,'rows':[]};var _0x5ee99c=_[_0xc4d5('0x28')](db[_0xc4d5('0x29')][_0xc4d5('0x2a')],function(_0x5b3ca9){return{'name':_0x5b3ca9[_0xc4d5('0x2b')],'type':_0x5b3ca9[_0xc4d5('0x2c')]['key']};});_0x597fa8['model']=_[_0xc4d5('0x28')](_0x5ee99c,'name');_0x597fa8[_0xc4d5('0x2d')]=_[_0xc4d5('0x2e')](_0x527126[_0xc4d5('0x2d')]);_0x597fa8['filters']=_[_0xc4d5('0x2f')](_0x597fa8['model'],_0x597fa8[_0xc4d5('0x2d')]);_0x337018['attributes']=_[_0xc4d5('0x2f')](_0x597fa8[_0xc4d5('0x30')],qs[_0xc4d5('0x31')](_0x527126['query'][_0xc4d5('0x31')]));_0x337018['attributes']=_0x337018['attributes'][_0xc4d5('0x32')]?_0x337018[_0xc4d5('0x33')]:_0x597fa8[_0xc4d5('0x30')];if(!_0x527126[_0xc4d5('0x2d')][_0xc4d5('0x34')](_0xc4d5('0x35'))){_0x337018['limit']=qs[_0xc4d5('0x19')](_0x527126[_0xc4d5('0x2d')][_0xc4d5('0x19')]);_0x337018[_0xc4d5('0x1c')]=qs['offset'](_0x527126['query'][_0xc4d5('0x1c')]);}_0x337018[_0xc4d5('0x36')]=qs['sort'](_0x527126[_0xc4d5('0x2d')][_0xc4d5('0x37')]);_0x337018['where']=qs[_0xc4d5('0x38')](_['pick'](_0x527126[_0xc4d5('0x2d')],_0x597fa8[_0xc4d5('0x38')]),_0x5ee99c);if(_0x527126[_0xc4d5('0x2d')][_0xc4d5('0x39')]){_0x337018[_0xc4d5('0x3a')]=_['merge'](_0x337018[_0xc4d5('0x3a')],{'$or':_[_0xc4d5('0x28')](_0x5ee99c,function(_0x3934d5){if(_0x3934d5[_0xc4d5('0x2c')]!=='VIRTUAL'){var _0x330486={};_0x330486[_0x3934d5[_0xc4d5('0x25')]]={'$like':'%'+_0x527126[_0xc4d5('0x2d')][_0xc4d5('0x39')]+'%'};return _0x330486;}})});}_0x337018=_[_0xc4d5('0x3b')]({},_0x337018,_0x527126[_0xc4d5('0x3c')]);var _0x28eb57={'where':_0x337018[_0xc4d5('0x3a')]};return db[_0xc4d5('0x29')]['count'](_0x28eb57)[_0xc4d5('0x22')](function(_0x3907d1){_0x20d88a['count']=_0x3907d1;if(_0x527126[_0xc4d5('0x2d')][_0xc4d5('0x3d')]){_0x337018['include']=[{'all':!![]}];}return db[_0xc4d5('0x29')][_0xc4d5('0x3e')](_0x337018);})[_0xc4d5('0x22')](function(_0x35aacb){_0x20d88a[_0xc4d5('0x3f')]=_0x35aacb;return _0x20d88a;})['then'](respondWithFilteredResult(_0x78c384,_0x337018))[_0xc4d5('0x40')](handleError(_0x78c384,null));};exports[_0xc4d5('0x41')]=function(_0x591385,_0xc806b1){var _0x480c05={'raw':!![],'where':{'id':_0x591385['params']['id']}},_0xb84ff2={};_0xb84ff2[_0xc4d5('0x30')]=_[_0xc4d5('0x2e')](db['VoiceQueuesLog'][_0xc4d5('0x2a')]);_0xb84ff2[_0xc4d5('0x2d')]=_['keys'](_0x591385[_0xc4d5('0x2d')]);_0xb84ff2[_0xc4d5('0x38')]=_[_0xc4d5('0x2f')](_0xb84ff2[_0xc4d5('0x30')],_0xb84ff2[_0xc4d5('0x2d')]);_0x480c05['attributes']=_[_0xc4d5('0x2f')](_0xb84ff2[_0xc4d5('0x30')],qs[_0xc4d5('0x31')](_0x591385[_0xc4d5('0x2d')][_0xc4d5('0x31')]));_0x480c05['attributes']=_0x480c05[_0xc4d5('0x33')]['length']?_0x480c05[_0xc4d5('0x33')]:_0xb84ff2[_0xc4d5('0x30')];if(_0x591385[_0xc4d5('0x2d')][_0xc4d5('0x3d')]){_0x480c05[_0xc4d5('0x42')]=[{'all':!![]}];}_0x480c05=_[_0xc4d5('0x3b')]({},_0x480c05,_0x591385[_0xc4d5('0x3c')]);return db[_0xc4d5('0x29')]['find'](_0x480c05)[_0xc4d5('0x22')](handleEntityNotFound(_0xc806b1,null))['then'](respondWithResult(_0xc806b1,null))['catch'](handleError(_0xc806b1,null));};exports['create']=function(_0x9c7d45,_0x51c450){return db[_0xc4d5('0x29')]['create'](_0x9c7d45[_0xc4d5('0x43')],{})[_0xc4d5('0x22')](respondWithResult(_0x51c450,0xc9))[_0xc4d5('0x40')](handleError(_0x51c450,null));};exports[_0xc4d5('0x21')]=function(_0x3d98e1,_0x3ee5a3){if(_0x3d98e1[_0xc4d5('0x43')]['id']){delete _0x3d98e1[_0xc4d5('0x43')]['id'];}return db[_0xc4d5('0x29')][_0xc4d5('0x44')]({'where':{'id':_0x3d98e1['params']['id']}})['then'](handleEntityNotFound(_0x3ee5a3,null))['then'](saveUpdates(_0x3d98e1[_0xc4d5('0x43')],null))['then'](respondWithResult(_0x3ee5a3,null))[_0xc4d5('0x40')](handleError(_0x3ee5a3,null));};exports[_0xc4d5('0x45')]=function(_0x52dd09,_0x2ac3d1){return db['VoiceQueuesLog'][_0xc4d5('0x44')]({'where':{'id':_0x52dd09[_0xc4d5('0x46')]['id']}})[_0xc4d5('0x22')](handleEntityNotFound(_0x2ac3d1,null))[_0xc4d5('0x22')](removeEntity(_0x2ac3d1,null))[_0xc4d5('0x40')](handleError(_0x2ac3d1,null));};
\ No newline at end of file
index 4774d2c..cb0373e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9b=['define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports'];(function(_0x43a37c,_0x25a567){var _0x5d1d40=function(_0x3ec673){while(--_0x3ec673){_0x43a37c['push'](_0x43a37c['shift']());}};_0x5d1d40(++_0x25a567);}(_0x9b9b,0x114));var _0xb9b9=function(_0x502417,_0x3b4a19){_0x502417=_0x502417-0x0;var _0x32e1f8=_0x9b9b[_0x502417];return _0x32e1f8;};'use strict';var _=require('lodash');var util=require(_0xb9b9('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xb9b9('0x1'));var BPromise=require(_0xb9b9('0x2'));var rp=require(_0xb9b9('0x3'));var fs=require('fs');var path=require(_0xb9b9('0x4'));var rimraf=require(_0xb9b9('0x5'));var config=require(_0xb9b9('0x6'));var attributes=require(_0xb9b9('0x7'));module[_0xb9b9('0x8')]=function(_0x79dd,_0x3d1a95){return _0x79dd[_0xb9b9('0x9')](_0xb9b9('0xa'),attributes,{'tableName':_0xb9b9('0xb'),'paranoid':![],'indexes':[{'name':_0xb9b9('0xc'),'fields':[_0xb9b9('0xd'),_0xb9b9('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x65ad=['define','VoiceQueuesLog','voice_queues_log','event_dtm','dtm','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./voiceQueuesLog.attributes','exports'];(function(_0x525d78,_0x14175d){var _0x4c203d=function(_0x45d4f4){while(--_0x45d4f4){_0x525d78['push'](_0x525d78['shift']());}};_0x4c203d(++_0x14175d);}(_0x65ad,0x18b));var _0xd65a=function(_0x20c33c,_0x4480b4){_0x20c33c=_0x20c33c-0x0;var _0x446d47=_0x65ad[_0x20c33c];return _0x446d47;};'use strict';var _=require(_0xd65a('0x0'));var util=require(_0xd65a('0x1'));var logger=require(_0xd65a('0x2'))(_0xd65a('0x3'));var moment=require(_0xd65a('0x4'));var BPromise=require(_0xd65a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd65a('0x6'));var rimraf=require('rimraf');var config=require(_0xd65a('0x7'));var attributes=require(_0xd65a('0x8'));module[_0xd65a('0x9')]=function(_0x425131,_0x2f4b89){return _0x425131[_0xd65a('0xa')](_0xd65a('0xb'),attributes,{'tableName':_0xd65a('0xc'),'paranoid':![],'indexes':[{'name':_0xd65a('0xd'),'fields':['event',_0xd65a('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 2742e09..2770ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2064=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x1089b7,_0x363ec5){var _0x1e11cc=function(_0x44c1c9){while(--_0x44c1c9){_0x1089b7['push'](_0x1089b7['shift']());}};_0x1e11cc(++_0x363ec5);}(_0x2064,0x79));var _0x4206=function(_0x2154c3,_0x573153){_0x2154c3=_0x2154c3-0x0;var _0x394f4d=_0x2064[_0x2154c3];return _0x394f4d;};'use strict';var _=require(_0x4206('0x0'));var util=require(_0x4206('0x1'));var moment=require(_0x4206('0x2'));var BPromise=require(_0x4206('0x3'));var rs=require(_0x4206('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4206('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4206('0x6'))(_0x4206('0x7'));var config=require(_0x4206('0x8'));var jayson=require(_0x4206('0x9'));var client=jayson['client'][_0x4206('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x476220,_0x4589bf,_0x48af9a){return new BPromise(function(_0x2c2ca3,_0x599891){return client[_0x4206('0xb')](_0x476220,_0x48af9a)['then'](function(_0x25b45a){logger[_0x4206('0xc')](_0x4206('0xd'),_0x4589bf,_0x4206('0xe'));logger['debug']('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x4589bf,'request\x20sent',JSON[_0x4206('0xf')](_0x25b45a));if(_0x25b45a['error']){if(_0x25b45a[_0x4206('0x10')][_0x4206('0x11')]===0x1f4){logger[_0x4206('0x10')](_0x4206('0xd'),_0x4589bf,_0x25b45a[_0x4206('0x10')][_0x4206('0x12')]);return _0x599891(_0x25b45a[_0x4206('0x10')][_0x4206('0x12')]);}logger[_0x4206('0x10')](_0x4206('0xd'),_0x4589bf,_0x25b45a[_0x4206('0x10')][_0x4206('0x12')]);return _0x2c2ca3(_0x25b45a[_0x4206('0x10')][_0x4206('0x12')]);}else{logger[_0x4206('0xc')](_0x4206('0xd'),_0x4589bf,'request\x20sent');_0x2c2ca3(_0x25b45a[_0x4206('0x13')][_0x4206('0x12')]);}})[_0x4206('0x14')](function(_0x4a6ab2){logger[_0x4206('0x10')](_0x4206('0xd'),_0x4589bf,_0x4a6ab2);_0x599891(_0x4a6ab2);});});}
\ No newline at end of file
+var _0x18a9=['then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x3902cb,_0x541ae6){var _0x550122=function(_0x44ce24){while(--_0x44ce24){_0x3902cb['push'](_0x3902cb['shift']());}};_0x550122(++_0x541ae6);}(_0x18a9,0x15b));var _0x918a=function(_0x8a51fd,_0x10d5a9){_0x8a51fd=_0x8a51fd-0x0;var _0x185c37=_0x18a9[_0x8a51fd];return _0x185c37;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x918a('0x0'));var BPromise=require(_0x918a('0x1'));var rs=require(_0x918a('0x2'));var fs=require('fs');var Redis=require(_0x918a('0x3'));var db=require(_0x918a('0x4'))['db'];var utils=require(_0x918a('0x5'));var logger=require(_0x918a('0x6'))(_0x918a('0x7'));var config=require(_0x918a('0x8'));var jayson=require(_0x918a('0x9'));var client=jayson[_0x918a('0xa')][_0x918a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x492c39,_0xdb8dd8,_0x266256){return new BPromise(function(_0x51caca,_0x40518f){return client[_0x918a('0xc')](_0x492c39,_0x266256)[_0x918a('0xd')](function(_0x224a87){logger[_0x918a('0xe')](_0x918a('0xf'),_0xdb8dd8,_0x918a('0x10'));logger['debug'](_0x918a('0x11'),_0xdb8dd8,_0x918a('0x10'),JSON[_0x918a('0x12')](_0x224a87));if(_0x224a87[_0x918a('0x13')]){if(_0x224a87['error'][_0x918a('0x14')]===0x1f4){logger[_0x918a('0x13')]('VoiceQueuesLog,\x20%s,\x20%s',_0xdb8dd8,_0x224a87[_0x918a('0x13')][_0x918a('0x15')]);return _0x40518f(_0x224a87[_0x918a('0x13')][_0x918a('0x15')]);}logger['error'](_0x918a('0xf'),_0xdb8dd8,_0x224a87['error'][_0x918a('0x15')]);return _0x51caca(_0x224a87['error']['message']);}else{logger[_0x918a('0xe')](_0x918a('0xf'),_0xdb8dd8,'request\x20sent');_0x51caca(_0x224a87[_0x918a('0x16')]['message']);}})[_0x918a('0x17')](function(_0x17f988){logger[_0x918a('0x13')]('VoiceQueuesLog,\x20%s,\x20%s',_0xdb8dd8,_0x17f988);_0x40518f(_0x17f988);});});}
\ No newline at end of file
index dc7b0b6..9ae8095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf89=['express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated','/describe','show','/:id/download','download','/:id/downloads','/:id/transcribe','downloadTranscribe','create','runTranscribe','put','/:id','delete','destroy','exports','multer','util','path'];(function(_0x148634,_0xb2a21c){var _0x4bf6ae=function(_0x46bc48){while(--_0x46bc48){_0x148634['push'](_0x148634['shift']());}};_0x4bf6ae(++_0xb2a21c);}(_0xaf89,0xa5));var _0x9af8=function(_0x1a8f86,_0x5ed9c4){_0x1a8f86=_0x1a8f86-0x0;var _0x20d876=_0xaf89[_0x1a8f86];return _0x20d876;};'use strict';var multer=require(_0x9af8('0x0'));var util=require(_0x9af8('0x1'));var path=require(_0x9af8('0x2'));var timeout=require('connect-timeout');var express=require(_0x9af8('0x3'));var router=express['Router']();var fs_extra=require(_0x9af8('0x4'));var auth=require(_0x9af8('0x5'));var interaction=require(_0x9af8('0x6'));var config=require('../../config/environment');var controller=require(_0x9af8('0x7'));router[_0x9af8('0x8')]('/',auth[_0x9af8('0x9')](),controller['index']);router['get'](_0x9af8('0xa'),auth[_0x9af8('0x9')](),controller['describe']);router[_0x9af8('0x8')]('/:id',auth[_0x9af8('0x9')](),controller[_0x9af8('0xb')]);router['get'](_0x9af8('0xc'),auth[_0x9af8('0x9')](),controller[_0x9af8('0xd')]);router['get'](_0x9af8('0xe'),controller['downloads']);router[_0x9af8('0x8')](_0x9af8('0xf'),auth[_0x9af8('0x9')](),controller[_0x9af8('0x10')]);router['post']('/',auth[_0x9af8('0x9')](),controller[_0x9af8('0x11')]);router['post'](_0x9af8('0xf'),auth['isAuthenticated'](),controller[_0x9af8('0x12')]);router[_0x9af8('0x13')](_0x9af8('0x14'),auth[_0x9af8('0x9')](),controller['update']);router[_0x9af8('0x15')](_0x9af8('0x14'),auth[_0x9af8('0x9')](),controller[_0x9af8('0x16')]);module[_0x9af8('0x17')]=router;
\ No newline at end of file
+var _0x963b=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','/:id/downloads','/:id/transcribe','post','update','delete','destroy','exports','multer','util','path','express'];(function(_0x50dc8d,_0x522869){var _0x596316=function(_0x11cf08){while(--_0x11cf08){_0x50dc8d['push'](_0x50dc8d['shift']());}};_0x596316(++_0x522869);}(_0x963b,0xb2));var _0xb963=function(_0x2eb3db,_0x4a32c0){_0x2eb3db=_0x2eb3db-0x0;var _0x358f33=_0x963b[_0x2eb3db];return _0x358f33;};'use strict';var multer=require(_0xb963('0x0'));var util=require(_0xb963('0x1'));var path=require(_0xb963('0x2'));var timeout=require('connect-timeout');var express=require(_0xb963('0x3'));var router=express[_0xb963('0x4')]();var fs_extra=require(_0xb963('0x5'));var auth=require(_0xb963('0x6'));var interaction=require(_0xb963('0x7'));var config=require(_0xb963('0x8'));var controller=require(_0xb963('0x9'));router[_0xb963('0xa')]('/',auth[_0xb963('0xb')](),controller[_0xb963('0xc')]);router['get'](_0xb963('0xd'),auth[_0xb963('0xb')](),controller[_0xb963('0xe')]);router[_0xb963('0xa')](_0xb963('0xf'),auth[_0xb963('0xb')](),controller[_0xb963('0x10')]);router[_0xb963('0xa')](_0xb963('0x11'),auth[_0xb963('0xb')](),controller[_0xb963('0x12')]);router[_0xb963('0xa')](_0xb963('0x13'),controller['downloads']);router['get'](_0xb963('0x14'),auth[_0xb963('0xb')](),controller['downloadTranscribe']);router[_0xb963('0x15')]('/',auth[_0xb963('0xb')](),controller['create']);router[_0xb963('0x15')]('/:id/transcribe',auth[_0xb963('0xb')](),controller['runTranscribe']);router['put'](_0xb963('0xf'),auth['isAuthenticated'](),controller[_0xb963('0x16')]);router[_0xb963('0x17')](_0xb963('0xf'),auth[_0xb963('0xb')](),controller[_0xb963('0x18')]);module[_0xb963('0x19')]=router;
\ No newline at end of file
index bf0d67e..e756664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
index eca6456..178f0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08b8=['fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','count','includeAll','findAll','catch','params','keys','length','include','VoiceRecording','find','body','describe','../../components/encryptor','uniqueid','value','format','%s.cypher','secrets','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','download','message','Not\x20found','downloads','sequelize','MD5','$and','push','existsSync','decryptFile','recording','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','TranscribeService','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentiment','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x08b8,0x9d));var _0x808b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x08b8[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x808b('0x0'));var zipdir=require(_0x808b('0x1'));var jsonpatch=require(_0x808b('0x2'));var rp=require(_0x808b('0x3'));var moment=require('moment');var BPromise=require(_0x808b('0x4'));var Mustache=require(_0x808b('0x5'));var util=require(_0x808b('0x6'));var path=require(_0x808b('0x7'));var sox=require(_0x808b('0x8'));var csv=require(_0x808b('0x9'));var ejs=require(_0x808b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x808b('0xb'));var squel=require('squel');var crypto=require(_0x808b('0xc'));var jsforce=require(_0x808b('0xd'));var deskjs=require(_0x808b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x808b('0xf'));var Papa=require(_0x808b('0x10'));var AWS=require('aws-sdk');var uuidv4=require('uuid/v4');var Redis=require(_0x808b('0x11'));var authService=require(_0x808b('0x12'));var qs=require(_0x808b('0x13'));var as=require(_0x808b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x808b('0x15'))('api');var utils=require(_0x808b('0x16'));var config=require(_0x808b('0x17'));var licenseUtil=require(_0x808b('0x18'));var db=require(_0x808b('0x19'))['db'];function respondWithStatusCode(_0x3af121,_0x39dfa6){_0x39dfa6=_0x39dfa6||0xcc;return function(_0x59a85e){if(_0x59a85e){return _0x3af121[_0x808b('0x1a')](_0x39dfa6);}return _0x3af121[_0x808b('0x1b')](_0x39dfa6)[_0x808b('0x1c')]();};}function respondWithResult(_0x5036fe,_0x5a37ba){_0x5a37ba=_0x5a37ba||0xc8;return function(_0x1024c7){if(_0x1024c7){return _0x5036fe['status'](_0x5a37ba)[_0x808b('0x1d')](_0x1024c7);}};}function respondWithFilteredResult(_0x206428,_0x8ae83f){return function(_0x37d912){if(_0x37d912){var _0x5102ea=typeof _0x8ae83f[_0x808b('0x1e')]===_0x808b('0x1f')&&typeof _0x8ae83f['limit']===_0x808b('0x1f');var _0x398b7a=_0x37d912['count'];var _0x10c5f3=_0x5102ea?0x0:_0x8ae83f[_0x808b('0x1e')];var _0x19af5b=_0x5102ea?_0x37d912['count']:_0x8ae83f[_0x808b('0x1e')]+_0x8ae83f['limit'];var _0xf462fe;if(_0x19af5b>=_0x398b7a){_0x19af5b=_0x398b7a;_0xf462fe=0xc8;}else{_0xf462fe=0xce;}_0x206428[_0x808b('0x1b')](_0xf462fe);return _0x206428['set'](_0x808b('0x20'),_0x10c5f3+'-'+_0x19af5b+'/'+_0x398b7a)['json'](_0x37d912);}return null;};}function patchUpdates(_0x505c82){return function(_0x25ac1a){try{jsonpatch[_0x808b('0x21')](_0x25ac1a,_0x505c82,!![]);}catch(_0x289b51){return BPromise[_0x808b('0x22')](_0x289b51);}return _0x25ac1a[_0x808b('0x23')]();};}function saveUpdates(_0x5c606a,_0x5c7b7e){return function(_0x13fe0d){if(_0x13fe0d){return _0x13fe0d[_0x808b('0x24')](_0x5c606a)[_0x808b('0x25')](function(_0x534e49){return _0x534e49;});}return null;};}function removeEntity(_0x10896f,_0x1fa61b){return function(_0x4bad4a){if(_0x4bad4a){return _0x4bad4a[_0x808b('0x26')]()['then'](function(){_0x10896f[_0x808b('0x1b')](0xcc)[_0x808b('0x1c')]();});}};}function handleEntityNotFound(_0x25dd13,_0x30c72e){return function(_0x328bf4){if(!_0x328bf4){_0x25dd13[_0x808b('0x1a')](0x194);}return _0x328bf4;};}function handleError(_0x5e9dc6,_0x56ec5b){_0x56ec5b=_0x56ec5b||0x1f4;return function(_0x1178cc){logger['error'](_0x1178cc[_0x808b('0x27')]);if(_0x1178cc[_0x808b('0x28')]){delete _0x1178cc['name'];}_0x5e9dc6[_0x808b('0x1b')](_0x56ec5b)[_0x808b('0x29')](_0x1178cc);};}exports[_0x808b('0x2a')]=function(_0x1ce0d5,_0x532a17){var _0x371e7c={},_0x4b470c={},_0x1cc821={'count':0x0,'rows':[]};var _0x19ba9c=_[_0x808b('0x2b')](db['VoiceRecording'][_0x808b('0x2c')],function(_0x2eff77){return{'name':_0x2eff77[_0x808b('0x2d')],'type':_0x2eff77[_0x808b('0x2e')][_0x808b('0x2f')]};});_0x4b470c[_0x808b('0x30')]=_['differenceBy'](_['map'](_0x19ba9c,'name'),['format']);_0x4b470c[_0x808b('0x31')]=_['keys'](_0x1ce0d5[_0x808b('0x31')]);_0x4b470c['filters']=_['intersection'](_0x4b470c[_0x808b('0x30')],_0x4b470c['query']);_0x371e7c[_0x808b('0x32')]=_[_0x808b('0x33')](_0x4b470c[_0x808b('0x30')],qs[_0x808b('0x34')](_0x1ce0d5[_0x808b('0x31')][_0x808b('0x34')]));_0x371e7c[_0x808b('0x32')]=_0x371e7c[_0x808b('0x32')]['length']?_0x371e7c[_0x808b('0x32')]:_0x4b470c[_0x808b('0x30')];if(!_0x1ce0d5[_0x808b('0x31')][_0x808b('0x35')](_0x808b('0x36'))){_0x371e7c['limit']=qs['limit'](_0x1ce0d5[_0x808b('0x31')]['limit']);_0x371e7c[_0x808b('0x1e')]=qs[_0x808b('0x1e')](_0x1ce0d5[_0x808b('0x31')][_0x808b('0x1e')]);}_0x371e7c[_0x808b('0x37')]=qs['sort'](_0x1ce0d5[_0x808b('0x31')][_0x808b('0x38')]);_0x371e7c['where']=qs[_0x808b('0x39')](_[_0x808b('0x3a')](_0x1ce0d5['query'],_0x4b470c[_0x808b('0x39')]),_0x19ba9c);if(_0x1ce0d5[_0x808b('0x31')][_0x808b('0x3b')]){_0x371e7c[_0x808b('0x3c')]=_[_0x808b('0x3d')](_0x371e7c[_0x808b('0x3c')],{'$or':_[_0x808b('0x2b')](_0x19ba9c,function(_0x4548f4){if(_0x4548f4['type']!==_0x808b('0x3e')){var _0x4184b1={};_0x4184b1[_0x4548f4['name']]={'$like':'%'+_0x1ce0d5[_0x808b('0x31')][_0x808b('0x3b')]+'%'};return _0x4184b1;}})});}_0x371e7c=_[_0x808b('0x3d')]({},_0x371e7c,_0x1ce0d5[_0x808b('0x3f')]);var _0x48a32c={'where':_0x371e7c[_0x808b('0x3c')]};return db['VoiceRecording']['count'](_0x48a32c)[_0x808b('0x25')](function(_0x290463){_0x1cc821[_0x808b('0x40')]=_0x290463;if(_0x1ce0d5[_0x808b('0x31')][_0x808b('0x41')]){_0x371e7c['include']=[{'all':!![]}];}return db['VoiceRecording'][_0x808b('0x42')](_0x371e7c);})[_0x808b('0x25')](function(_0x9e3155){_0x1cc821['rows']=_0x9e3155;return _0x1cc821;})[_0x808b('0x25')](respondWithFilteredResult(_0x532a17,_0x371e7c))[_0x808b('0x43')](handleError(_0x532a17,null));};exports['show']=function(_0xc9475a,_0x3834dc){var _0x25aad0={'raw':![],'where':{'id':_0xc9475a[_0x808b('0x44')]['id']}},_0x4fb2e6={};_0x4fb2e6['model']=_[_0x808b('0x45')](db['VoiceRecording']['rawAttributes']);_0x4fb2e6[_0x808b('0x31')]=_[_0x808b('0x45')](_0xc9475a[_0x808b('0x31')]);_0x4fb2e6[_0x808b('0x39')]=_[_0x808b('0x33')](_0x4fb2e6['model'],_0x4fb2e6[_0x808b('0x31')]);_0x25aad0[_0x808b('0x32')]=_['intersection'](_0x4fb2e6['model'],qs['fields'](_0xc9475a[_0x808b('0x31')][_0x808b('0x34')]));_0x25aad0[_0x808b('0x32')]=_0x25aad0[_0x808b('0x32')][_0x808b('0x46')]?_0x25aad0[_0x808b('0x32')]:_0x4fb2e6[_0x808b('0x30')];if(_0xc9475a[_0x808b('0x31')][_0x808b('0x41')]){_0x25aad0[_0x808b('0x47')]=[{'all':!![]}];}_0x25aad0=_['merge']({},_0x25aad0,_0xc9475a[_0x808b('0x3f')]);return db[_0x808b('0x48')][_0x808b('0x49')](_0x25aad0)[_0x808b('0x25')](handleEntityNotFound(_0x3834dc,null))[_0x808b('0x25')](respondWithResult(_0x3834dc,null))[_0x808b('0x43')](handleError(_0x3834dc,null));};exports['create']=function(_0x4e6f94,_0x5d9b59){return db[_0x808b('0x48')]['create'](_0x4e6f94[_0x808b('0x4a')],{})[_0x808b('0x25')](respondWithResult(_0x5d9b59,0xc9))['catch'](handleError(_0x5d9b59,null));};exports[_0x808b('0x24')]=function(_0xa068fe,_0xa82e5d){if(_0xa068fe[_0x808b('0x4a')]['id']){delete _0xa068fe[_0x808b('0x4a')]['id'];}return db[_0x808b('0x48')]['find']({'where':{'id':_0xa068fe[_0x808b('0x44')]['id']}})[_0x808b('0x25')](handleEntityNotFound(_0xa82e5d,null))[_0x808b('0x25')](saveUpdates(_0xa068fe[_0x808b('0x4a')],null))['then'](respondWithResult(_0xa82e5d,null))['catch'](handleError(_0xa82e5d,null));};exports[_0x808b('0x4b')]=function(_0x121727,_0x1ccbd6){return db[_0x808b('0x48')][_0x808b('0x4b')]()[_0x808b('0x25')](respondWithResult(_0x1ccbd6,null))[_0x808b('0x43')](handleError(_0x1ccbd6,null));};exports['download']=function(_0xed92d0,_0x194832,_0x48de5d){var _0x34c34f=require(_0x808b('0x4c'));var _0x3c8105=![];var _0x57145d={};if(_0xed92d0['query'][_0x808b('0x2e')]&&_0xed92d0[_0x808b('0x31')]['type']===_0x808b('0x4d')){_0x57145d['uniqueid']=_0xed92d0['params']['id'];}else{_0x57145d['id']=_0xed92d0[_0x808b('0x44')]['id'];}return db['VoiceRecording'][_0x808b('0x49')]({'where':_0x57145d,'attributes':['id','value'],'raw':!![]})[_0x808b('0x25')](handleEntityNotFound(_0x194832,null))['then'](function(_0x4a703d){if(_0x4a703d){var _0x1a90eb=_0x4a703d[_0x808b('0x4e')];var _0x17683f=util[_0x808b('0x4f')](_0x808b('0x50'),_0x1a90eb);if(fs['existsSync'](_0x17683f)){_0x3c8105=!![];return _0x34c34f['decryptFile'](_0x17683f,_0x1a90eb,config[_0x808b('0x51')]['recording'])['then'](function(){return _0x4a703d;});}return _0x4a703d;}})[_0x808b('0x25')](function(_0x34bde0){if(_0x34bde0){var _0x224120=_0x34bde0[_0x808b('0x4e')];if(!fs['existsSync'](_0x224120)){throw new db[(_0x808b('0x52'))][(_0x808b('0x53'))](_0x808b('0x54'));}if(_0x34bde0['filename']){return _0x194832['download'](_0x224120,_0x34bde0[_0x808b('0x55')]+path[_0x808b('0x56')](_0x224120),function(){if(_0x3c8105){fs[_0x808b('0x57')](_0x224120);}});}else{return _0x194832[_0x808b('0x58')](_0x224120,function(_0x414721){if(_0x3c8105){fs[_0x808b('0x57')](_0x224120);}});}}})[_0x808b('0x43')](function(_0x3c442f){if(_0x3c442f[_0x808b('0x59')]===_0x808b('0x54')){_0x194832[_0x808b('0x1b')](0x194)[_0x808b('0x29')](_0x808b('0x5a'));}else{return handleError(_0x194832,null);}});};exports[_0x808b('0x5b')]=function(_0x27bc1b,_0x407ce2,_0x4dae59){var _0x3ad8b1=require(_0x808b('0x4c'));var _0x10b3fe=![];var _0x1d806c={'$and':[db[_0x808b('0x5c')][_0x808b('0x3c')](db[_0x808b('0x5c')]['fn'](_0x808b('0x5d'),db[_0x808b('0x5c')]['col'](_0x808b('0x4d'))),_0x27bc1b[_0x808b('0x31')]['token'])]};if(_0x27bc1b[_0x808b('0x31')][_0x808b('0x2e')]&&_0x27bc1b['query']['type']===_0x808b('0x4d')){_0x1d806c[_0x808b('0x5e')][_0x808b('0x5f')]({'uniqueid':_0x27bc1b['params']['id']});}else{_0x1d806c['$and'][_0x808b('0x5f')]({'id':_0x27bc1b[_0x808b('0x44')]['id']});}return db[_0x808b('0x48')][_0x808b('0x49')]({'where':_0x1d806c,'attributes':['id',_0x808b('0x4e')],'raw':!![]})[_0x808b('0x25')](handleEntityNotFound(_0x407ce2,null))['then'](function(_0x245734){if(_0x245734){var _0x109e58=util[_0x808b('0x4f')](_0x808b('0x50'),_0x245734[_0x808b('0x4e')]);if(fs[_0x808b('0x60')](_0x109e58)){_0x10b3fe=!![];return _0x3ad8b1[_0x808b('0x61')](_0x109e58,_0x245734[_0x808b('0x4e')],config[_0x808b('0x51')][_0x808b('0x62')])[_0x808b('0x25')](function(){return _0x245734;});}return _0x245734;}})[_0x808b('0x25')](function(_0x2f20e4){if(_0x2f20e4){if(!fs[_0x808b('0x60')](_0x2f20e4[_0x808b('0x4e')])){throw new db['Sequelize'][(_0x808b('0x53'))]('VoiceRecording\x20not\x20found');}if(_0x2f20e4[_0x808b('0x55')]){return _0x407ce2[_0x808b('0x58')](_0x2f20e4[_0x808b('0x4e')],_0x2f20e4[_0x808b('0x55')]+path[_0x808b('0x56')](_0x2f20e4[_0x808b('0x4e')]),function(){if(_0x10b3fe){fs[_0x808b('0x57')](_0x2f20e4[_0x808b('0x4e')]);}});}else{return _0x407ce2['download'](_0x2f20e4[_0x808b('0x4e')],function(_0x412362){if(_0x10b3fe){fs[_0x808b('0x57')](_0x2f20e4[_0x808b('0x4e')]);}});}}})['catch'](handleError(_0x407ce2,null));};exports[_0x808b('0x26')]=function(_0x299e04,_0x1c9df3){return db[_0x808b('0x48')]['find']({'where':{'id':_0x299e04[_0x808b('0x44')]['id']}})[_0x808b('0x25')](function(_0x3c6935){if(_[_0x808b('0x63')](_0x3c6935)){throw new ReferenceError(_0x808b('0x64'));}return _0x3c6935;})[_0x808b('0x25')](function(_0x49e45a){var _0x479c95=_0x49e45a[_0x808b('0x4e')];logger[_0x808b('0x65')]('cancellazione\x20fisica\x20documento\x20%s',_0x479c95);if(!_[_0x808b('0x63')](_0x49e45a[_0x808b('0x4e')])&&fs[_0x808b('0x60')](_0x479c95)){logger['info'](_0x808b('0x66')+_0x479c95+_0x808b('0x67'));fs[_0x808b('0x68')](_0x479c95);}_0x479c95=_0x479c95+_0x808b('0x69');if(!_[_0x808b('0x63')](_0x49e45a['value'])&&fs[_0x808b('0x60')](_0x479c95)){logger[_0x808b('0x65')](_0x808b('0x66')+_0x479c95+_0x808b('0x67'));fs[_0x808b('0x68')](_0x479c95);}return _0x49e45a;})[_0x808b('0x25')](function(_0x3c0eea){if(!_0x3c0eea)throw new InternalError();return _0x3c0eea['destroy']();})[_0x808b('0x25')](function(){_0x1c9df3[_0x808b('0x1b')](0xcc)[_0x808b('0x1c')]();})[_0x808b('0x43')](handleError(_0x1c9df3,null));};function getBucketslist(_0xdaca3,_0x1355b7,_0x53de20){return new Promise(function(_0x288bcb,_0x4b1393){var _0x118686=new AWS['S3']({'accessKeyId':_0x1355b7,'secretAccessKey':_0xdaca3,'region':_0x53de20});_0x118686[_0x808b('0x6a')]({},function(_0x3f6fa7,_0x36ffd5){if(_0x3f6fa7){return _0x4b1393(_0x3f6fa7);}else{return _0x288bcb(_0x36ffd5);}});});}function createBucket(_0x111b3d,_0x3e5b5c,_0x445064,_0xbf059e){return new Promise(function(_0x1126b6,_0x47e50e){var _0xb66e1f=new AWS['S3']({'accessKeyId':_0x3e5b5c,'secretAccessKey':_0x111b3d,'region':_0x445064});_0xb66e1f[_0x808b('0x6b')]({'Bucket':_0xbf059e},function(_0x53c2c9,_0x2251df){if(_0x53c2c9){return _0x47e50e(_0x53c2c9);}else{return _0x1126b6(_0x2251df);}});});}function uploadFile(_0x587aa5,_0x57e878,_0x47689c,_0x2e072c,_0x550876,_0x7f89df){return new Promise(function(_0x344bd6,_0x2519be){var _0x47d202=new AWS['S3']({'accessKeyId':_0x57e878,'secretAccessKey':_0x587aa5,'region':_0x47689c});_0x47d202[_0x808b('0x6c')]({'Bucket':_0x2e072c,'Key':_0x550876,'Body':_0x7f89df},function(_0x100c5b,_0x1563cc){if(_0x100c5b){return _0x2519be(_0x100c5b);}else{return _0x344bd6(_0x1563cc);}});});}function startTranscribe(_0x25ca68,_0x502662,_0x3f5f12,_0x262ac4,_0x2df2c0,_0x3d36ec){return new Promise(function(_0x353df6,_0x5a2ad7){var _0x4b767c=new AWS[(_0x808b('0x6d'))]({'accessKeyId':_0x502662,'secretAccessKey':_0x25ca68,'region':_0x3f5f12});_0x4b767c['startTranscriptionJob']({'TranscriptionJobName':_0x262ac4,'LanguageCode':_0x2df2c0,'Media':{'MediaFileUri':_0x3d36ec}},function(_0x308aac,_0x12ab8f){if(_0x308aac){return _0x5a2ad7(_0x308aac);}else{return _0x353df6(_0x12ab8f);}});});}function transcribe(_0x52eb0a,_0x28cdb1,_0x12d09b,_0x25d831,_0x9c92b7,_0x35525d,_0x4e0fb0){return new Promise(function(_0x563705,_0x4a84f2){var _0x151721={};logger[_0x808b('0x65')](util[_0x808b('0x4f')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x52eb0a,_0x9c92b7));return uploadFile(_0x28cdb1,_0x12d09b,_0x25d831,_0x9c92b7,path[_0x808b('0x6e')](_0x35525d),fs[_0x808b('0x6f')](_0x35525d))[_0x808b('0x25')](function(_0xfc262a){logger[_0x808b('0x65')](util[_0x808b('0x4f')](_0x808b('0x70'),_0x52eb0a,_0x9c92b7,_0xfc262a[_0x808b('0x71')]));_0x151721[_0x808b('0x72')]=_0xfc262a['Bucket'];_0x151721[_0x808b('0x73')]=_0xfc262a[_0x808b('0x71')];logger[_0x808b('0x65')](util['format'](_0x808b('0x74'),_0x52eb0a));return startTranscribe(_0x28cdb1,_0x12d09b,_0x25d831,uuidv4(),_0x4e0fb0,_0xfc262a[_0x808b('0x71')]);})[_0x808b('0x25')](function(_0x44332){logger[_0x808b('0x65')](util[_0x808b('0x4f')](_0x808b('0x75'),_0x52eb0a,_0x44332[_0x808b('0x76')][_0x808b('0x77')]));_0x151721[_0x808b('0x78')]=_0x44332[_0x808b('0x76')][_0x808b('0x77')];_0x151721['transcribeStatus']=_0x44332[_0x808b('0x76')][_0x808b('0x79')];return _0x563705(_0x151721);})[_0x808b('0x43')](function(_0x47db70){return _0x4a84f2(_0x47db70);});});}exports[_0x808b('0x7a')]=function(_0x56912d,_0x4d5476,_0x18707c){var _0x28823c;var _0x2122c7;var _0x510a51;var _0x383e83=require(_0x808b('0x4c'));return db[_0x808b('0x48')][_0x808b('0x7b')]({'where':{'id':_0x56912d[_0x808b('0x44')]['id']}})['then'](function(_0x50e6d7){if(_0x50e6d7){var _0x53a81b=util[_0x808b('0x4f')](_0x808b('0x50'),_0x50e6d7[_0x808b('0x4e')]);if(fs[_0x808b('0x60')](_0x53a81b)){cypher=!![];return _0x383e83[_0x808b('0x61')](_0x53a81b,_0x50e6d7['value'],config[_0x808b('0x51')][_0x808b('0x62')])['then'](function(){return _0x50e6d7;});}return _0x50e6d7;}})[_0x808b('0x25')](function(_0x3fbfa7){if(!_0x3fbfa7){throw new db[(_0x808b('0x52'))][(_0x808b('0x53'))](_0x808b('0x7c'));}_0x2122c7=_0x3fbfa7;return db[_0x808b('0x7d')][_0x808b('0x7b')]({'where':{'id':0x1}});})[_0x808b('0x25')](handleEntityNotFound(_0x4d5476,null))[_0x808b('0x25')](function(_0x274677){if(_0x274677){_0x28823c=_0x274677;if(!_0x28823c['transcribe']||!_0x28823c[_0x808b('0x7e')]||!_0x28823c[_0x808b('0x7f')]||!_0x28823c[_0x808b('0x80')]||!_0x28823c[_0x808b('0x72')]){throw new db[(_0x808b('0x52'))][(_0x808b('0x53'))](_0x808b('0x81'));}if(_0x56912d[_0x808b('0x4a')][_0x808b('0x82')]&&(!_0x28823c[_0x808b('0x83')]||!_0x28823c['sentimentAccountId']||!_0x28823c['sentimentRegion']||!_0x28823c[_0x808b('0x80')]||!_0x28823c[_0x808b('0x72')])){throw new db[(_0x808b('0x52'))][(_0x808b('0x53'))](_0x808b('0x84'));}return db[_0x808b('0x85')][_0x808b('0x7b')]({'where':{'id':_0x28823c['transcribeAccountId']}});}})[_0x808b('0x25')](function(_0x138cb4){if(!_0x138cb4){throw new db[(_0x808b('0x52'))][(_0x808b('0x53'))](_0x808b('0x86'));}if(!_0x138cb4[_0x808b('0x87')]||!_0x138cb4[_0x808b('0x88')]){throw new db[(_0x808b('0x52'))][(_0x808b('0x53'))](_0x808b('0x89'));}_0x510a51=_0x138cb4;return getBucketslist(_0x510a51['data1'],_0x510a51[_0x808b('0x88')],_0x28823c['transcribeRegion']);})[_0x808b('0x25')](function(_0x136f70){if(_0x136f70&&_0x136f70[_0x808b('0x8a')]){var _0x290e27=_[_0x808b('0x49')](_0x136f70[_0x808b('0x8a')],function(_0xeb989a){return _0xeb989a['Name']===_0x28823c[_0x808b('0x72')];});if(!_0x290e27){logger['info'](util[_0x808b('0x4f')](_0x808b('0x8b'),_0x56912d['params']['id'],_0x28823c[_0x808b('0x72')]));return createBucket(_0x510a51[_0x808b('0x87')],_0x510a51[_0x808b('0x88')],_0x28823c[_0x808b('0x7f')],_0x28823c[_0x808b('0x72')]);}logger[_0x808b('0x65')](util['format'](_0x808b('0x8c'),_0x56912d['params']['id'],_0x28823c[_0x808b('0x72')]));return;}})['then'](function(_0x57023b){if(_0x2122c7['transcribeStatus']===_0x808b('0x8d')){return transcribe(_0x56912d[_0x808b('0x44')]['id'],_0x510a51[_0x808b('0x87')],_0x510a51[_0x808b('0x88')],_0x28823c[_0x808b('0x7f')],_0x28823c[_0x808b('0x72')],_0x2122c7['value'],_0x28823c[_0x808b('0x80')]);}else{logger[_0x808b('0x65')](util[_0x808b('0x4f')](_0x808b('0x8e'),_0x56912d['params']['id']));return{'transcribeStatus':_0x808b('0x8f')};}})[_0x808b('0x25')](function(_0x284428){if(_0x284428){_0x284428[_0x808b('0x90')]=_0x56912d[_0x808b('0x4a')][_0x808b('0x82')];return _0x2122c7[_0x808b('0x91')](_0x284428);}})[_0x808b('0x25')](respondWithResult(_0x4d5476,null))['catch'](handleError(_0x4d5476,null));};function writeFile(_0x2ff8f2,_0x5a8fc3){return new Promise(function(_0x17089c,_0x1a64b5){fs[_0x808b('0x92')](_0x5a8fc3,_0x2ff8f2,function(_0x1e4db5,_0x3c27d8){if(_0x1e4db5){return _0x1a64b5(_0x1e4db5);}else{return _0x17089c(_0x3c27d8);}});});}exports['downloadTranscribe']=function(_0x1760ab,_0x40e3be,_0x5f3ec7){return db['VoiceRecording'][_0x808b('0x7b')]({'where':{'id':_0x1760ab[_0x808b('0x44')]['id']}})['then'](handleEntityNotFound(_0x40e3be))[_0x808b('0x25')](function(_0xbb83f2){if(_0xbb83f2&&_0xbb83f2[_0x808b('0x93')]){var _0x4ab0f5=_0xbb83f2['fileText'];var _0xca4432=config[_0x808b('0x94')]+_0x808b('0x95')+_0xbb83f2['id']+_0x808b('0x96');if(fs[_0x808b('0x60')](_0xca4432)){return _0xca4432;}return writeFile(_0x4ab0f5,_0xca4432)[_0x808b('0x25')](function(){return _0xca4432;});}else{throw new db[(_0x808b('0x52'))]['ValidationError'](_0x808b('0x97'));}})[_0x808b('0x25')](function(_0x24ef3b){return _0x40e3be[_0x808b('0x58')](_0x24ef3b);})[_0x808b('0x43')](handleError(_0x40e3be));};
\ No newline at end of file
+var _0xa964=['querystring','papaparse','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','end','error','stack','name','send','index','VoiceRecording','rawAttributes','type','key','model','differenceBy','format','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','params','includeAll','create','body','describe','find','value','%s.cypher','existsSync','decryptFile','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','download','unlink','message','downloads','../../components/encryptor','sequelize','uniqueid','token','push','$and','secrets','recording','extname','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','createBucket','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeName','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribeAccountId','transcribeRegion','language','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','IN_PROGRESS','updateAttributes','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x1f7a3f,_0x25de29){var _0x571bd1=function(_0x45d3a5){while(--_0x45d3a5){_0x1f7a3f['push'](_0x1f7a3f['shift']());}};_0x571bd1(++_0x25de29);}(_0xa964,0x116));var _0x4a96=function(_0x4de9e8,_0x565ffa){_0x4de9e8=_0x4de9e8-0x0;var _0x4db0de=_0xa964[_0x4de9e8];return _0x4db0de;};'use strict';var emlformat=require(_0x4a96('0x0'));var rimraf=require(_0x4a96('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4a96('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x4a96('0x3'));var util=require('util');var path=require(_0x4a96('0x4'));var sox=require(_0x4a96('0x5'));var csv=require(_0x4a96('0x6'));var ejs=require(_0x4a96('0x7'));var fs=require('fs');var fs_extra=require(_0x4a96('0x8'));var _=require(_0x4a96('0x9'));var squel=require(_0x4a96('0xa'));var crypto=require(_0x4a96('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4a96('0x6'));var querystring=require(_0x4a96('0xc'));var Papa=require(_0x4a96('0xd'));var AWS=require('aws-sdk');var uuidv4=require(_0x4a96('0xe'));var Redis=require(_0x4a96('0xf'));var authService=require(_0x4a96('0x10'));var qs=require(_0x4a96('0x11'));var as=require(_0x4a96('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4a96('0x13'))('api');var utils=require(_0x4a96('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x585856,_0x5a3b6f){_0x5a3b6f=_0x5a3b6f||0xcc;return function(_0x2c4f57){if(_0x2c4f57){return _0x585856[_0x4a96('0x15')](_0x5a3b6f);}return _0x585856[_0x4a96('0x16')](_0x5a3b6f)['end']();};}function respondWithResult(_0x381d1d,_0x29f6a4){_0x29f6a4=_0x29f6a4||0xc8;return function(_0x50436d){if(_0x50436d){return _0x381d1d[_0x4a96('0x16')](_0x29f6a4)[_0x4a96('0x17')](_0x50436d);}};}function respondWithFilteredResult(_0x447cf8,_0x185e59){return function(_0x3e7831){if(_0x3e7831){var _0x20d223=typeof _0x185e59[_0x4a96('0x18')]===_0x4a96('0x19')&&typeof _0x185e59[_0x4a96('0x1a')]===_0x4a96('0x19');var _0x228b3c=_0x3e7831[_0x4a96('0x1b')];var _0x5c78a3=_0x20d223?0x0:_0x185e59[_0x4a96('0x18')];var _0x6ab010=_0x20d223?_0x3e7831[_0x4a96('0x1b')]:_0x185e59['offset']+_0x185e59[_0x4a96('0x1a')];var _0xddf778;if(_0x6ab010>=_0x228b3c){_0x6ab010=_0x228b3c;_0xddf778=0xc8;}else{_0xddf778=0xce;}_0x447cf8['status'](_0xddf778);return _0x447cf8[_0x4a96('0x1c')]('Content-Range',_0x5c78a3+'-'+_0x6ab010+'/'+_0x228b3c)[_0x4a96('0x17')](_0x3e7831);}return null;};}function patchUpdates(_0x402c93){return function(_0x141627){try{jsonpatch[_0x4a96('0x1d')](_0x141627,_0x402c93,!![]);}catch(_0x4a5c53){return BPromise[_0x4a96('0x1e')](_0x4a5c53);}return _0x141627['save']();};}function saveUpdates(_0x3bca11,_0x2c5a3d){return function(_0x54250c){if(_0x54250c){return _0x54250c[_0x4a96('0x1f')](_0x3bca11)[_0x4a96('0x20')](function(_0x207ea5){return _0x207ea5;});}return null;};}function removeEntity(_0x5546a0,_0x2661f5){return function(_0x2b09a8){if(_0x2b09a8){return _0x2b09a8[_0x4a96('0x21')]()[_0x4a96('0x20')](function(){_0x5546a0[_0x4a96('0x16')](0xcc)[_0x4a96('0x22')]();});}};}function handleEntityNotFound(_0x58439a,_0x35f8eb){return function(_0xf2183b){if(!_0xf2183b){_0x58439a[_0x4a96('0x15')](0x194);}return _0xf2183b;};}function handleError(_0x11bc6f,_0x18d335){_0x18d335=_0x18d335||0x1f4;return function(_0x3cc5e4){logger[_0x4a96('0x23')](_0x3cc5e4[_0x4a96('0x24')]);if(_0x3cc5e4[_0x4a96('0x25')]){delete _0x3cc5e4[_0x4a96('0x25')];}_0x11bc6f[_0x4a96('0x16')](_0x18d335)[_0x4a96('0x26')](_0x3cc5e4);};}exports[_0x4a96('0x27')]=function(_0x4614db,_0x13ab7a){var _0x590d23={},_0x78b5e4={},_0x12581c={'count':0x0,'rows':[]};var _0x543a27=_['map'](db[_0x4a96('0x28')][_0x4a96('0x29')],function(_0x3105d1){return{'name':_0x3105d1['fieldName'],'type':_0x3105d1[_0x4a96('0x2a')][_0x4a96('0x2b')]};});_0x78b5e4[_0x4a96('0x2c')]=_[_0x4a96('0x2d')](_['map'](_0x543a27,_0x4a96('0x25')),[_0x4a96('0x2e')]);_0x78b5e4['query']=_[_0x4a96('0x2f')](_0x4614db[_0x4a96('0x30')]);_0x78b5e4[_0x4a96('0x31')]=_['intersection'](_0x78b5e4['model'],_0x78b5e4['query']);_0x590d23['attributes']=_[_0x4a96('0x32')](_0x78b5e4['model'],qs['fields'](_0x4614db[_0x4a96('0x30')][_0x4a96('0x33')]));_0x590d23[_0x4a96('0x34')]=_0x590d23['attributes'][_0x4a96('0x35')]?_0x590d23[_0x4a96('0x34')]:_0x78b5e4[_0x4a96('0x2c')];if(!_0x4614db[_0x4a96('0x30')][_0x4a96('0x36')](_0x4a96('0x37'))){_0x590d23[_0x4a96('0x1a')]=qs['limit'](_0x4614db[_0x4a96('0x30')][_0x4a96('0x1a')]);_0x590d23['offset']=qs[_0x4a96('0x18')](_0x4614db['query'][_0x4a96('0x18')]);}_0x590d23[_0x4a96('0x38')]=qs[_0x4a96('0x39')](_0x4614db[_0x4a96('0x30')][_0x4a96('0x39')]);_0x590d23[_0x4a96('0x3a')]=qs[_0x4a96('0x31')](_[_0x4a96('0x3b')](_0x4614db[_0x4a96('0x30')],_0x78b5e4['filters']),_0x543a27);if(_0x4614db[_0x4a96('0x30')][_0x4a96('0x3c')]){_0x590d23[_0x4a96('0x3a')]=_[_0x4a96('0x3d')](_0x590d23['where'],{'$or':_[_0x4a96('0x3e')](_0x543a27,function(_0x49617a){if(_0x49617a[_0x4a96('0x2a')]!==_0x4a96('0x3f')){var _0x600026={};_0x600026[_0x49617a['name']]={'$like':'%'+_0x4614db[_0x4a96('0x30')][_0x4a96('0x3c')]+'%'};return _0x600026;}})});}_0x590d23=_[_0x4a96('0x3d')]({},_0x590d23,_0x4614db[_0x4a96('0x40')]);var _0x1a2b51={'where':_0x590d23['where']};return db[_0x4a96('0x28')]['count'](_0x1a2b51)[_0x4a96('0x20')](function(_0x2608ee){_0x12581c[_0x4a96('0x1b')]=_0x2608ee;if(_0x4614db['query']['includeAll']){_0x590d23[_0x4a96('0x41')]=[{'all':!![]}];}return db[_0x4a96('0x28')][_0x4a96('0x42')](_0x590d23);})['then'](function(_0x1a20bf){_0x12581c[_0x4a96('0x43')]=_0x1a20bf;return _0x12581c;})['then'](respondWithFilteredResult(_0x13ab7a,_0x590d23))[_0x4a96('0x44')](handleError(_0x13ab7a,null));};exports['show']=function(_0x42d20a,_0x4738ab){var _0x245b98={'raw':![],'where':{'id':_0x42d20a[_0x4a96('0x45')]['id']}},_0x3becf4={};_0x3becf4[_0x4a96('0x2c')]=_[_0x4a96('0x2f')](db[_0x4a96('0x28')][_0x4a96('0x29')]);_0x3becf4[_0x4a96('0x30')]=_[_0x4a96('0x2f')](_0x42d20a[_0x4a96('0x30')]);_0x3becf4[_0x4a96('0x31')]=_[_0x4a96('0x32')](_0x3becf4[_0x4a96('0x2c')],_0x3becf4[_0x4a96('0x30')]);_0x245b98['attributes']=_[_0x4a96('0x32')](_0x3becf4[_0x4a96('0x2c')],qs[_0x4a96('0x33')](_0x42d20a[_0x4a96('0x30')]['fields']));_0x245b98['attributes']=_0x245b98[_0x4a96('0x34')][_0x4a96('0x35')]?_0x245b98['attributes']:_0x3becf4['model'];if(_0x42d20a[_0x4a96('0x30')][_0x4a96('0x46')]){_0x245b98['include']=[{'all':!![]}];}_0x245b98=_['merge']({},_0x245b98,_0x42d20a[_0x4a96('0x40')]);return db['VoiceRecording']['find'](_0x245b98)[_0x4a96('0x20')](handleEntityNotFound(_0x4738ab,null))[_0x4a96('0x20')](respondWithResult(_0x4738ab,null))[_0x4a96('0x44')](handleError(_0x4738ab,null));};exports[_0x4a96('0x47')]=function(_0x2adb6b,_0x43d69d){return db[_0x4a96('0x28')]['create'](_0x2adb6b[_0x4a96('0x48')],{})[_0x4a96('0x20')](respondWithResult(_0x43d69d,0xc9))[_0x4a96('0x44')](handleError(_0x43d69d,null));};exports[_0x4a96('0x1f')]=function(_0x1cc6e0,_0x2f7252){if(_0x1cc6e0[_0x4a96('0x48')]['id']){delete _0x1cc6e0['body']['id'];}return db[_0x4a96('0x28')]['find']({'where':{'id':_0x1cc6e0[_0x4a96('0x45')]['id']}})[_0x4a96('0x20')](handleEntityNotFound(_0x2f7252,null))['then'](saveUpdates(_0x1cc6e0[_0x4a96('0x48')],null))[_0x4a96('0x20')](respondWithResult(_0x2f7252,null))[_0x4a96('0x44')](handleError(_0x2f7252,null));};exports[_0x4a96('0x49')]=function(_0x43f228,_0x13f6ef){return db[_0x4a96('0x28')][_0x4a96('0x49')]()[_0x4a96('0x20')](respondWithResult(_0x13f6ef,null))['catch'](handleError(_0x13f6ef,null));};exports['download']=function(_0x531594,_0x46517d,_0x1eb8b0){var _0x264415=require('../../components/encryptor');var _0x1d29da=![];var _0x4c40c1={};if(_0x531594['query'][_0x4a96('0x2a')]&&_0x531594['query'][_0x4a96('0x2a')]==='uniqueid'){_0x4c40c1['uniqueid']=_0x531594[_0x4a96('0x45')]['id'];}else{_0x4c40c1['id']=_0x531594[_0x4a96('0x45')]['id'];}return db[_0x4a96('0x28')][_0x4a96('0x4a')]({'where':_0x4c40c1,'attributes':['id',_0x4a96('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x46517d,null))[_0x4a96('0x20')](function(_0x4ec7ea){if(_0x4ec7ea){var _0x3d00de=_0x4ec7ea[_0x4a96('0x4b')];var _0x19c839=util[_0x4a96('0x2e')](_0x4a96('0x4c'),_0x3d00de);if(fs[_0x4a96('0x4d')](_0x19c839)){_0x1d29da=!![];return _0x264415[_0x4a96('0x4e')](_0x19c839,_0x3d00de,config['secrets']['recording'])[_0x4a96('0x20')](function(){return _0x4ec7ea;});}return _0x4ec7ea;}})[_0x4a96('0x20')](function(_0x1bbb71){if(_0x1bbb71){var _0x4242a4=_0x1bbb71['value'];if(!fs[_0x4a96('0x4d')](_0x4242a4)){throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))](_0x4a96('0x51'));}if(_0x1bbb71[_0x4a96('0x52')]){return _0x46517d[_0x4a96('0x53')](_0x4242a4,_0x1bbb71['filename']+path['extname'](_0x4242a4),function(){if(_0x1d29da){fs[_0x4a96('0x54')](_0x4242a4);}});}else{return _0x46517d[_0x4a96('0x53')](_0x4242a4,function(_0x480e2f){if(_0x1d29da){fs[_0x4a96('0x54')](_0x4242a4);}});}}})[_0x4a96('0x44')](function(_0x5855c6){if(_0x5855c6[_0x4a96('0x55')]==='VoiceRecording\x20not\x20found'){_0x46517d['status'](0x194)[_0x4a96('0x26')]('Not\x20found');}else{return handleError(_0x46517d,null);}});};exports[_0x4a96('0x56')]=function(_0x4535d8,_0x2faeeb,_0x4cbc16){var _0xbef3e3=require(_0x4a96('0x57'));var _0x290b6c=![];var _0x1701d7={'$and':[db[_0x4a96('0x58')]['where'](db[_0x4a96('0x58')]['fn']('MD5',db['sequelize']['col'](_0x4a96('0x59'))),_0x4535d8[_0x4a96('0x30')][_0x4a96('0x5a')])]};if(_0x4535d8[_0x4a96('0x30')][_0x4a96('0x2a')]&&_0x4535d8[_0x4a96('0x30')][_0x4a96('0x2a')]===_0x4a96('0x59')){_0x1701d7['$and'][_0x4a96('0x5b')]({'uniqueid':_0x4535d8[_0x4a96('0x45')]['id']});}else{_0x1701d7[_0x4a96('0x5c')]['push']({'id':_0x4535d8[_0x4a96('0x45')]['id']});}return db['VoiceRecording']['find']({'where':_0x1701d7,'attributes':['id',_0x4a96('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x2faeeb,null))[_0x4a96('0x20')](function(_0x3f7d25){if(_0x3f7d25){var _0x572387=util[_0x4a96('0x2e')](_0x4a96('0x4c'),_0x3f7d25[_0x4a96('0x4b')]);if(fs[_0x4a96('0x4d')](_0x572387)){_0x290b6c=!![];return _0xbef3e3['decryptFile'](_0x572387,_0x3f7d25[_0x4a96('0x4b')],config[_0x4a96('0x5d')][_0x4a96('0x5e')])[_0x4a96('0x20')](function(){return _0x3f7d25;});}return _0x3f7d25;}})[_0x4a96('0x20')](function(_0x5e183e){if(_0x5e183e){if(!fs['existsSync'](_0x5e183e[_0x4a96('0x4b')])){throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))](_0x4a96('0x51'));}if(_0x5e183e[_0x4a96('0x52')]){return _0x2faeeb[_0x4a96('0x53')](_0x5e183e['value'],_0x5e183e['filename']+path[_0x4a96('0x5f')](_0x5e183e[_0x4a96('0x4b')]),function(){if(_0x290b6c){fs[_0x4a96('0x54')](_0x5e183e[_0x4a96('0x4b')]);}});}else{return _0x2faeeb[_0x4a96('0x53')](_0x5e183e[_0x4a96('0x4b')],function(_0x125b7c){if(_0x290b6c){fs[_0x4a96('0x54')](_0x5e183e['value']);}});}}})['catch'](handleError(_0x2faeeb,null));};exports[_0x4a96('0x21')]=function(_0xefa137,_0x32caa9){return db[_0x4a96('0x28')][_0x4a96('0x4a')]({'where':{'id':_0xefa137[_0x4a96('0x45')]['id']}})[_0x4a96('0x20')](function(_0x2a721d){if(_[_0x4a96('0x60')](_0x2a721d)){throw new ReferenceError(_0x4a96('0x61'));}return _0x2a721d;})[_0x4a96('0x20')](function(_0x324feb){var _0x4fcbf7=_0x324feb[_0x4a96('0x4b')];logger[_0x4a96('0x62')](_0x4a96('0x63'),_0x4fcbf7);if(!_[_0x4a96('0x60')](_0x324feb[_0x4a96('0x4b')])&&fs[_0x4a96('0x4d')](_0x4fcbf7)){logger[_0x4a96('0x62')]('File:\x20\x22'+_0x4fcbf7+_0x4a96('0x64'));fs[_0x4a96('0x65')](_0x4fcbf7);}_0x4fcbf7=_0x4fcbf7+'.cypher';if(!_['isNil'](_0x324feb[_0x4a96('0x4b')])&&fs[_0x4a96('0x4d')](_0x4fcbf7)){logger[_0x4a96('0x62')](_0x4a96('0x66')+_0x4fcbf7+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x4a96('0x65')](_0x4fcbf7);}return _0x324feb;})[_0x4a96('0x20')](function(_0xf0e989){if(!_0xf0e989)throw new InternalError();return _0xf0e989[_0x4a96('0x21')]();})[_0x4a96('0x20')](function(){_0x32caa9[_0x4a96('0x16')](0xcc)[_0x4a96('0x22')]();})[_0x4a96('0x44')](handleError(_0x32caa9,null));};function getBucketslist(_0x38a00b,_0x46c96a,_0x3b53bd){return new Promise(function(_0xbea4ac,_0x4d30a4){var _0x222b62=new AWS['S3']({'accessKeyId':_0x46c96a,'secretAccessKey':_0x38a00b,'region':_0x3b53bd});_0x222b62['listBuckets']({},function(_0x20f106,_0x899c80){if(_0x20f106){return _0x4d30a4(_0x20f106);}else{return _0xbea4ac(_0x899c80);}});});}function createBucket(_0x3be142,_0x28fa77,_0x3d45ff,_0xff9d2a){return new Promise(function(_0x242523,_0x3a450a){var _0x1a436b=new AWS['S3']({'accessKeyId':_0x28fa77,'secretAccessKey':_0x3be142,'region':_0x3d45ff});_0x1a436b[_0x4a96('0x67')]({'Bucket':_0xff9d2a},function(_0x28d4a1,_0x23cc9a){if(_0x28d4a1){return _0x3a450a(_0x28d4a1);}else{return _0x242523(_0x23cc9a);}});});}function uploadFile(_0xdff752,_0x599b5a,_0x3e6a51,_0x551877,_0x58d7ba,_0x28ef15){return new Promise(function(_0x2617f5,_0x1ff81b){var _0x1450cb=new AWS['S3']({'accessKeyId':_0x599b5a,'secretAccessKey':_0xdff752,'region':_0x3e6a51});_0x1450cb['upload']({'Bucket':_0x551877,'Key':_0x58d7ba,'Body':_0x28ef15},function(_0x189d35,_0x329fe9){if(_0x189d35){return _0x1ff81b(_0x189d35);}else{return _0x2617f5(_0x329fe9);}});});}function startTranscribe(_0x2fe660,_0x3eb3b9,_0x1b3011,_0x3d022e,_0x169357,_0x4d972f){return new Promise(function(_0xd26ac5,_0x4b6862){var _0xd68968=new AWS[(_0x4a96('0x68'))]({'accessKeyId':_0x3eb3b9,'secretAccessKey':_0x2fe660,'region':_0x1b3011});_0xd68968[_0x4a96('0x69')]({'TranscriptionJobName':_0x3d022e,'LanguageCode':_0x169357,'Media':{'MediaFileUri':_0x4d972f}},function(_0x1b0edf,_0x51439d){if(_0x1b0edf){return _0x4b6862(_0x1b0edf);}else{return _0xd26ac5(_0x51439d);}});});}function transcribe(_0x23c4e8,_0x2c233d,_0x474f54,_0x42c97c,_0x48fc2c,_0x3b2671,_0x45b222){return new Promise(function(_0x2d8a5b,_0x23db51){var _0x1318f1={};logger[_0x4a96('0x62')](util['format'](_0x4a96('0x6a'),_0x23c4e8,_0x48fc2c));return uploadFile(_0x2c233d,_0x474f54,_0x42c97c,_0x48fc2c,path[_0x4a96('0x6b')](_0x3b2671),fs['readFileSync'](_0x3b2671))['then'](function(_0x5d6536){logger[_0x4a96('0x62')](util['format'](_0x4a96('0x6c'),_0x23c4e8,_0x48fc2c,_0x5d6536['Location']));_0x1318f1[_0x4a96('0x6d')]=_0x5d6536[_0x4a96('0x6e')];_0x1318f1[_0x4a96('0x6f')]=_0x5d6536['Location'];logger['info'](util[_0x4a96('0x2e')](_0x4a96('0x70'),_0x23c4e8));return startTranscribe(_0x2c233d,_0x474f54,_0x42c97c,uuidv4(),_0x45b222,_0x5d6536['Location']);})[_0x4a96('0x20')](function(_0xad78a5){logger[_0x4a96('0x62')](util[_0x4a96('0x2e')](_0x4a96('0x71'),_0x23c4e8,_0xad78a5[_0x4a96('0x72')]['TranscriptionJobName']));_0x1318f1[_0x4a96('0x73')]=_0xad78a5[_0x4a96('0x72')][_0x4a96('0x74')];_0x1318f1[_0x4a96('0x75')]=_0xad78a5['TranscriptionJob'][_0x4a96('0x76')];return _0x2d8a5b(_0x1318f1);})[_0x4a96('0x44')](function(_0x133502){return _0x23db51(_0x133502);});});}exports[_0x4a96('0x77')]=function(_0x24709e,_0x381172,_0x503828){var _0x4f2540;var _0x1ec0f9;var _0xa6bd7c;var _0xecb32d=require('../../components/encryptor');return db[_0x4a96('0x28')][_0x4a96('0x78')]({'where':{'id':_0x24709e[_0x4a96('0x45')]['id']}})[_0x4a96('0x20')](function(_0x34b4fa){if(_0x34b4fa){var _0x5e6937=util[_0x4a96('0x2e')]('%s.cypher',_0x34b4fa[_0x4a96('0x4b')]);if(fs['existsSync'](_0x5e6937)){cypher=!![];return _0xecb32d['decryptFile'](_0x5e6937,_0x34b4fa['value'],config[_0x4a96('0x5d')]['recording'])['then'](function(){return _0x34b4fa;});}return _0x34b4fa;}})[_0x4a96('0x20')](function(_0x50e536){if(!_0x50e536){throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))](_0x4a96('0x79'));}_0x1ec0f9=_0x50e536;return db[_0x4a96('0x7a')][_0x4a96('0x78')]({'where':{'id':0x1}});})[_0x4a96('0x20')](handleEntityNotFound(_0x381172,null))['then'](function(_0x30ef39){if(_0x30ef39){_0x4f2540=_0x30ef39;if(!_0x4f2540['transcribe']||!_0x4f2540[_0x4a96('0x7b')]||!_0x4f2540[_0x4a96('0x7c')]||!_0x4f2540[_0x4a96('0x7d')]||!_0x4f2540[_0x4a96('0x6d')]){throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))]('Transcribe\x20not\x20configured');}if(_0x24709e[_0x4a96('0x48')][_0x4a96('0x7e')]&&(!_0x4f2540[_0x4a96('0x7f')]||!_0x4f2540[_0x4a96('0x80')]||!_0x4f2540[_0x4a96('0x81')]||!_0x4f2540[_0x4a96('0x7d')]||!_0x4f2540[_0x4a96('0x6d')])){throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))](_0x4a96('0x82'));}return db[_0x4a96('0x83')][_0x4a96('0x78')]({'where':{'id':_0x4f2540[_0x4a96('0x7b')]}});}})[_0x4a96('0x20')](function(_0x16fc5d){if(!_0x16fc5d){throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))](_0x4a96('0x84'));}if(!_0x16fc5d[_0x4a96('0x85')]||!_0x16fc5d[_0x4a96('0x86')]){throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))]('Cloud\x20Provider\x20not\x20configured');}_0xa6bd7c=_0x16fc5d;return getBucketslist(_0xa6bd7c[_0x4a96('0x85')],_0xa6bd7c['data2'],_0x4f2540[_0x4a96('0x7c')]);})[_0x4a96('0x20')](function(_0x169911){if(_0x169911&&_0x169911[_0x4a96('0x87')]){var _0xef74e8=_[_0x4a96('0x4a')](_0x169911[_0x4a96('0x87')],function(_0xe25281){return _0xe25281['Name']===_0x4f2540[_0x4a96('0x6d')];});if(!_0xef74e8){logger[_0x4a96('0x62')](util[_0x4a96('0x2e')](_0x4a96('0x88'),_0x24709e[_0x4a96('0x45')]['id'],_0x4f2540[_0x4a96('0x6d')]));return createBucket(_0xa6bd7c[_0x4a96('0x85')],_0xa6bd7c['data2'],_0x4f2540[_0x4a96('0x7c')],_0x4f2540['bucket']);}logger['info'](util[_0x4a96('0x2e')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x24709e[_0x4a96('0x45')]['id'],_0x4f2540[_0x4a96('0x6d')]));return;}})[_0x4a96('0x20')](function(_0x244814){if(_0x1ec0f9['transcribeStatus']===_0x4a96('0x89')){return transcribe(_0x24709e[_0x4a96('0x45')]['id'],_0xa6bd7c[_0x4a96('0x85')],_0xa6bd7c[_0x4a96('0x86')],_0x4f2540[_0x4a96('0x7c')],_0x4f2540[_0x4a96('0x6d')],_0x1ec0f9[_0x4a96('0x4b')],_0x4f2540[_0x4a96('0x7d')]);}else{logger['info'](util['format']('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x24709e['params']['id']));return{'transcribeStatus':_0x4a96('0x8a')};}})['then'](function(_0x3fdead){if(_0x3fdead){_0x3fdead['tempSentiment']=_0x24709e['body'][_0x4a96('0x7e')];return _0x1ec0f9[_0x4a96('0x8b')](_0x3fdead);}})[_0x4a96('0x20')](respondWithResult(_0x381172,null))[_0x4a96('0x44')](handleError(_0x381172,null));};function writeFile(_0x5cdf3b,_0x494207){return new Promise(function(_0x2e6358,_0x554ae0){fs[_0x4a96('0x8c')](_0x494207,_0x5cdf3b,function(_0x1dcd90,_0x27e984){if(_0x1dcd90){return _0x554ae0(_0x1dcd90);}else{return _0x2e6358(_0x27e984);}});});}exports[_0x4a96('0x8d')]=function(_0x5b724a,_0x21feca,_0x36303f){return db[_0x4a96('0x28')][_0x4a96('0x78')]({'where':{'id':_0x5b724a[_0x4a96('0x45')]['id']}})[_0x4a96('0x20')](handleEntityNotFound(_0x21feca))[_0x4a96('0x20')](function(_0x175465){if(_0x175465&&_0x175465[_0x4a96('0x8e')]){var _0x1e40d2=_0x175465['fileText'];var _0x239c2d=config['root']+_0x4a96('0x8f')+_0x175465['id']+_0x4a96('0x90');if(fs[_0x4a96('0x4d')](_0x239c2d)){return _0x239c2d;}return writeFile(_0x1e40d2,_0x239c2d)[_0x4a96('0x20')](function(){return _0x239c2d;});}else{throw new db[(_0x4a96('0x4f'))][(_0x4a96('0x50'))]('Transcript\x20not\x20available');}})['then'](function(_0x37ad85){return _0x21feca[_0x4a96('0x53')](_0x37ad85);})['catch'](handleError(_0x21feca));};
\ No newline at end of file
index 0764069..5471e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1a4=['util','../../config/logger','request-promise','path','../../config/environment','exports','define','VoiceRecording','voice_recordings','uniqueid','lodash'];(function(_0x58bad4,_0xd6e8d2){var _0x1d1bbc=function(_0x44570c){while(--_0x44570c){_0x58bad4['push'](_0x58bad4['shift']());}};_0x1d1bbc(++_0xd6e8d2);}(_0xb1a4,0x16a));var _0x4b1a=function(_0x4c92a8,_0x3cc0df){_0x4c92a8=_0x4c92a8-0x0;var _0x32fa4c=_0xb1a4[_0x4c92a8];return _0x32fa4c;};'use strict';var _=require(_0x4b1a('0x0'));var util=require(_0x4b1a('0x1'));var logger=require(_0x4b1a('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4b1a('0x3'));var fs=require('fs');var path=require(_0x4b1a('0x4'));var rimraf=require('rimraf');var config=require(_0x4b1a('0x5'));var attributes=require('./voiceRecording.attributes');module[_0x4b1a('0x6')]=function(_0x349b65,_0x5e1826){return _0x349b65[_0x4b1a('0x7')](_0x4b1a('0x8'),attributes,{'tableName':_0x4b1a('0x9'),'paranoid':![],'indexes':[{'name':_0x4b1a('0xa'),'fields':[_0x4b1a('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb71=['path','rimraf','../../config/environment','define','VoiceRecording','uniqueid','../../config/logger','api','bluebird','request-promise'];(function(_0x2b13ed,_0x564351){var _0x2a2fe7=function(_0x5ac1f0){while(--_0x5ac1f0){_0x2b13ed['push'](_0x2b13ed['shift']());}};_0x2a2fe7(++_0x564351);}(_0xdb71,0x150));var _0x1db7=function(_0x49c3c0,_0xe1a68a){_0x49c3c0=_0x49c3c0-0x0;var _0x45a5d9=_0xdb71[_0x49c3c0];return _0x45a5d9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1db7('0x0'))(_0x1db7('0x1'));var moment=require('moment');var BPromise=require(_0x1db7('0x2'));var rp=require(_0x1db7('0x3'));var fs=require('fs');var path=require(_0x1db7('0x4'));var rimraf=require(_0x1db7('0x5'));var config=require(_0x1db7('0x6'));var attributes=require('./voiceRecording.attributes');module['exports']=function(_0x47ee79,_0x25e474){return _0x47ee79[_0x1db7('0x7')](_0x1db7('0x8'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x1db7('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 387ae50..7235193 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','error','code','message','UpdateVoiceRecording','update','body','options','raw','attributes','limit','stringify','catch','CreateVoiceRecording','../../components/encryptor','Setting','findOne','VoiceRecording','create','callRecordingEncryption','existsSync','value','format','%s.cypher','encryptFile','recording','unlink','lodash','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x5a6cef,_0x1697df){var _0x37f76f=function(_0x17dc71){while(--_0x17dc71){_0x5a6cef['push'](_0x5a6cef['shift']());}};_0x37f76f(++_0x1697df);}(_0xd4a2,0x173));var _0x2d4a=function(_0xbaa2f1,_0x4036d2){_0xbaa2f1=_0xbaa2f1-0x0;var _0x103629=_0xd4a2[_0xbaa2f1];return _0x103629;};'use strict';var _=require(_0x2d4a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2d4a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2d4a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x2d4a('0x3'));var logger=require('../../config/logger')(_0x2d4a('0x4'));var config=require(_0x2d4a('0x5'));var jayson=require(_0x2d4a('0x6'));var client=jayson[_0x2d4a('0x7')][_0x2d4a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57058f,_0x45fefb,_0x41b161){return new BPromise(function(_0x1f237e,_0x29597e){return client[_0x2d4a('0x9')](_0x57058f,_0x41b161)[_0x2d4a('0xa')](function(_0xb9f016){logger[_0x2d4a('0xb')](_0x2d4a('0xc'),_0x45fefb,_0x2d4a('0xd'));logger[_0x2d4a('0xe')](_0x2d4a('0xf'),_0x45fefb,'request\x20sent',JSON['stringify'](_0xb9f016));if(_0xb9f016[_0x2d4a('0x10')]){if(_0xb9f016['error'][_0x2d4a('0x11')]===0x1f4){logger[_0x2d4a('0x10')](_0x2d4a('0xc'),_0x45fefb,_0xb9f016[_0x2d4a('0x10')][_0x2d4a('0x12')]);return _0x29597e(_0xb9f016[_0x2d4a('0x10')][_0x2d4a('0x12')]);}logger[_0x2d4a('0x10')]('VoiceRecording,\x20%s,\x20%s',_0x45fefb,_0xb9f016['error'][_0x2d4a('0x12')]);return _0x1f237e(_0xb9f016['error'][_0x2d4a('0x12')]);}else{logger[_0x2d4a('0xb')](_0x2d4a('0xc'),_0x45fefb,_0x2d4a('0xd'));_0x1f237e(_0xb9f016['result'][_0x2d4a('0x12')]);}})['catch'](function(_0x2838fa){logger['error'](_0x2d4a('0xc'),_0x45fefb,_0x2838fa);_0x29597e(_0x2838fa);});});}exports[_0x2d4a('0x13')]=function(_0x2188b2){var _0x388371=this;return new Promise(function(_0x498956,_0x4fd169){return db['VoiceRecording'][_0x2d4a('0x14')](_0x2188b2[_0x2d4a('0x15')],{'raw':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2['options']['where']||null:null,'attributes':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x18')]||null:null,'limit':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x19')]||null:null})[_0x2d4a('0xa')](function(_0xa43fb1){logger['info'](_0x2d4a('0x13'),_0x2188b2);logger[_0x2d4a('0xe')](_0x2d4a('0x13'),_0x2188b2,JSON[_0x2d4a('0x1a')](_0xa43fb1));_0x498956(_0xa43fb1);})[_0x2d4a('0x1b')](function(_0xed2822){logger[_0x2d4a('0x10')](_0x2d4a('0x13'),_0xed2822['message'],_0x2188b2);_0x4fd169(_0x388371['error'](0x1f4,_0xed2822['message']));});});};exports[_0x2d4a('0x1c')]=function(_0x5029f3){var _0x410f7d=this;return new Promise(function(_0x3a2fd3,_0x3d5558){var _0x1d2fa6=require(_0x2d4a('0x1d'));var _0x326c38;return db[_0x2d4a('0x1e')][_0x2d4a('0x1f')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x2d4a('0xa')](function(_0x5ce262){_0x326c38=_0x5ce262;return db[_0x2d4a('0x20')][_0x2d4a('0x21')](_0x5029f3[_0x2d4a('0x15')]);})[_0x2d4a('0xa')](function(_0x101382){if(_0x326c38[_0x2d4a('0x22')]&&fs[_0x2d4a('0x23')](_0x101382[_0x2d4a('0x24')])){var _0x51b447=util[_0x2d4a('0x25')](_0x2d4a('0x26'),_0x101382[_0x2d4a('0x24')]);return _0x1d2fa6[_0x2d4a('0x27')](_0x101382[_0x2d4a('0x24')],_0x51b447,config['secrets'][_0x2d4a('0x28')])[_0x2d4a('0xa')](function(){fs[_0x2d4a('0x29')](_0x101382[_0x2d4a('0x24')]);logger[_0x2d4a('0xb')]('CreateVoiceRecording\x20file\x20encrypted');return _0x101382;});}return _0x101382;})[_0x2d4a('0xa')](function(_0x2ae694){logger[_0x2d4a('0xb')](_0x2d4a('0x1c'),_0x5029f3);logger[_0x2d4a('0xe')](_0x2d4a('0x1c'),_0x5029f3,JSON['stringify'](_0x2ae694));_0x3a2fd3(_0x2ae694);})[_0x2d4a('0x1b')](function(_0x28955f){logger[_0x2d4a('0x10')](_0x2d4a('0x1c'),_0x28955f[_0x2d4a('0x12')],_0x5029f3);_0x3d5558(_0x410f7d['error'](0x1f4,_0x28955f[_0x2d4a('0x12')]));});});};
\ No newline at end of file
+var _0x93e9=['http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','error','message','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','limit','debug','stringify','../../components/encryptor','Setting','findOne','existsSync','value','format','%s.cypher','encryptFile','secrets','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client'];(function(_0x4d45e1,_0x1d5eb7){var _0x530964=function(_0x156e43){while(--_0x156e43){_0x4d45e1['push'](_0x4d45e1['shift']());}};_0x530964(++_0x1d5eb7);}(_0x93e9,0xcc));var _0x993e=function(_0x4b1dee,_0x5bcbe9){_0x4b1dee=_0x4b1dee-0x0;var _0x2965ae=_0x93e9[_0x4b1dee];return _0x2965ae;};'use strict';var _=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var moment=require(_0x993e('0x2'));var BPromise=require(_0x993e('0x3'));var rs=require(_0x993e('0x4'));var fs=require('fs');var Redis=require(_0x993e('0x5'));var db=require(_0x993e('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x993e('0x7'));var config=require(_0x993e('0x8'));var jayson=require(_0x993e('0x9'));var client=jayson[_0x993e('0xa')][_0x993e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2366d9,_0x12ac94,_0x1aef74){return new BPromise(function(_0x53d0ce,_0x4701d3){return client[_0x993e('0xc')](_0x2366d9,_0x1aef74)[_0x993e('0xd')](function(_0x280291){logger[_0x993e('0xe')](_0x993e('0xf'),_0x12ac94,_0x993e('0x10'));logger['debug'](_0x993e('0x11'),_0x12ac94,_0x993e('0x10'),JSON['stringify'](_0x280291));if(_0x280291['error']){if(_0x280291[_0x993e('0x12')]['code']===0x1f4){logger[_0x993e('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x12ac94,_0x280291['error'][_0x993e('0x13')]);return _0x4701d3(_0x280291[_0x993e('0x12')][_0x993e('0x13')]);}logger[_0x993e('0x12')](_0x993e('0xf'),_0x12ac94,_0x280291[_0x993e('0x12')][_0x993e('0x13')]);return _0x53d0ce(_0x280291[_0x993e('0x12')][_0x993e('0x13')]);}else{logger[_0x993e('0xe')](_0x993e('0xf'),_0x12ac94,_0x993e('0x10'));_0x53d0ce(_0x280291[_0x993e('0x14')][_0x993e('0x13')]);}})[_0x993e('0x15')](function(_0x454475){logger[_0x993e('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x12ac94,_0x454475);_0x4701d3(_0x454475);});});}exports[_0x993e('0x16')]=function(_0x1acd21){var _0x3cc2b9=this;return new Promise(function(_0x3d6109,_0xfc2cbb){return db[_0x993e('0x17')]['update'](_0x1acd21[_0x993e('0x18')],{'raw':_0x1acd21[_0x993e('0x19')]?_0x1acd21[_0x993e('0x19')][_0x993e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1acd21[_0x993e('0x19')]?_0x1acd21[_0x993e('0x19')][_0x993e('0x1b')]||null:null,'attributes':_0x1acd21[_0x993e('0x19')]?_0x1acd21['options'][_0x993e('0x1c')]||null:null,'limit':_0x1acd21['options']?_0x1acd21[_0x993e('0x19')][_0x993e('0x1d')]||null:null})[_0x993e('0xd')](function(_0x5ba2a1){logger[_0x993e('0xe')](_0x993e('0x16'),_0x1acd21);logger[_0x993e('0x1e')](_0x993e('0x16'),_0x1acd21,JSON[_0x993e('0x1f')](_0x5ba2a1));_0x3d6109(_0x5ba2a1);})[_0x993e('0x15')](function(_0xa1c83e){logger[_0x993e('0x12')](_0x993e('0x16'),_0xa1c83e[_0x993e('0x13')],_0x1acd21);_0xfc2cbb(_0x3cc2b9[_0x993e('0x12')](0x1f4,_0xa1c83e[_0x993e('0x13')]));});});};exports['CreateVoiceRecording']=function(_0x2756a7){var _0x279bb8=this;return new Promise(function(_0x52b727,_0x27bbf7){var _0x4f5cc1=require(_0x993e('0x20'));var _0xa03fbd;return db[_0x993e('0x21')][_0x993e('0x22')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})['then'](function(_0x32e332){_0xa03fbd=_0x32e332;return db[_0x993e('0x17')]['create'](_0x2756a7[_0x993e('0x18')]);})[_0x993e('0xd')](function(_0x248354){if(_0xa03fbd['callRecordingEncryption']&&fs[_0x993e('0x23')](_0x248354[_0x993e('0x24')])){var _0x1f5d51=util[_0x993e('0x25')](_0x993e('0x26'),_0x248354['value']);return _0x4f5cc1[_0x993e('0x27')](_0x248354['value'],_0x1f5d51,config[_0x993e('0x28')]['recording'])[_0x993e('0xd')](function(){fs['unlink'](_0x248354[_0x993e('0x24')]);logger[_0x993e('0xe')](_0x993e('0x29'));return _0x248354;});}return _0x248354;})[_0x993e('0xd')](function(_0xbadd6e){logger[_0x993e('0xe')]('CreateVoiceRecording',_0x2756a7);logger[_0x993e('0x1e')]('CreateVoiceRecording',_0x2756a7,JSON['stringify'](_0xbadd6e));_0x52b727(_0xbadd6e);})[_0x993e('0x15')](function(_0x497d29){logger[_0x993e('0x12')](_0x993e('0x2a'),_0x497d29[_0x993e('0x13')],_0x2756a7);_0x27bbf7(_0x279bb8[_0x993e('0x12')](0x1f4,_0x497d29[_0x993e('0x13')]));});});};
\ No newline at end of file
index d83c4bb..e03921c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc127=['post','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','show'];(function(_0x219cc1,_0x3d03b5){var _0x177034=function(_0x45e0fe){while(--_0x45e0fe){_0x219cc1['push'](_0x219cc1['shift']());}};_0x177034(++_0x3d03b5);}(_0xc127,0xe9));var _0x7c12=function(_0x1a4979,_0x524bcf){_0x1a4979=_0x1a4979-0x0;var _0x2f6fec=_0xc127[_0x1a4979];return _0x2f6fec;};'use strict';var multer=require('multer');var util=require(_0x7c12('0x0'));var path=require(_0x7c12('0x1'));var timeout=require(_0x7c12('0x2'));var express=require(_0x7c12('0x3'));var router=express[_0x7c12('0x4')]();var fs_extra=require(_0x7c12('0x5'));var auth=require(_0x7c12('0x6'));var interaction=require(_0x7c12('0x7'));var config=require(_0x7c12('0x8'));var controller=require('./voiceTransferReport.controller');router[_0x7c12('0x9')]('/',auth[_0x7c12('0xa')](),controller['index']);router[_0x7c12('0x9')](_0x7c12('0xb'),auth[_0x7c12('0xa')](),controller['describe']);router[_0x7c12('0x9')](_0x7c12('0xc'),auth['isAuthenticated'](),controller[_0x7c12('0xd')]);router[_0x7c12('0xe')]('/',auth[_0x7c12('0xa')](),controller['create']);router[_0x7c12('0xf')](_0x7c12('0xc'),auth[_0x7c12('0xa')](),controller[_0x7c12('0x10')]);router[_0x7c12('0x11')](_0x7c12('0xc'),auth[_0x7c12('0xa')](),controller['destroy']);module[_0x7c12('0x12')]=router;
\ No newline at end of file
+var _0x25d0=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','show','post','create','update','/:id','destroy'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x25d0,0x1a3));var _0x025d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x25d0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x025d('0x0'));var util=require(_0x025d('0x1'));var path=require(_0x025d('0x2'));var timeout=require(_0x025d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x025d('0x4'));var auth=require(_0x025d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x025d('0x6'));var controller=require(_0x025d('0x7'));router[_0x025d('0x8')]('/',auth[_0x025d('0x9')](),controller[_0x025d('0xa')]);router['get'](_0x025d('0xb'),auth[_0x025d('0x9')](),controller['describe']);router['get']('/:id',auth[_0x025d('0x9')](),controller[_0x025d('0xc')]);router[_0x025d('0xd')]('/',auth[_0x025d('0x9')](),controller[_0x025d('0xe')]);router['put']('/:id',auth[_0x025d('0x9')](),controller[_0x025d('0xf')]);router['delete'](_0x025d('0x10'),auth[_0x025d('0x9')](),controller[_0x025d('0x11')]);module[_0x025d('0x12')]=router;
\ No newline at end of file
index 502a6a3..3e2e327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40eb=['moment','exports','ENUM','blind','STRING','Yes','sequelize'];(function(_0xcf581b,_0x4359dd){var _0x4f454d=function(_0x182d58){while(--_0x182d58){_0xcf581b['push'](_0xcf581b['shift']());}};_0x4f454d(++_0x4359dd);}(_0x40eb,0x13a));var _0xb40e=function(_0x169996,_0x4b59b5){_0x169996=_0x169996-0x0;var _0x28d7e6=_0x40eb[_0x169996];return _0x28d7e6;};'use strict';var Sequelize=require(_0xb40e('0x0'));var moment=require(_0xb40e('0x1'));module[_0xb40e('0x2')]={'type':{'type':Sequelize[_0xb40e('0x3')](_0xb40e('0x4'),'attended')},'result':{'type':Sequelize[_0xb40e('0x5')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xb40e('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0xb40e('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0xb40e('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xb40e('0x5')]},'transferercontext':{'type':Sequelize[_0xb40e('0x5')]},'transfererexten':{'type':Sequelize[_0xb40e('0x5')]},'transfererlinkedid':{'type':Sequelize[_0xb40e('0x5')]},'transfereechannel':{'type':Sequelize[_0xb40e('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0xb40e('0x5')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0xb40e('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0xb40e('0x5')]},'transfereecontext':{'type':Sequelize[_0xb40e('0x5')]},'transfereeexten':{'type':Sequelize[_0xb40e('0x5')]},'transfereelinkedid':{'type':Sequelize[_0xb40e('0x5')]},'isexternal':{'type':Sequelize[_0xb40e('0x3')](_0xb40e('0x6'),'No')},'context':{'type':Sequelize[_0xb40e('0x5')]},'extension':{'type':Sequelize[_0xb40e('0x5')]}};
\ No newline at end of file
+var _0xb99a=['ENUM','blind','attended','STRING','Yes','sequelize','moment','exports'];(function(_0x9d1e12,_0x572144){var _0x5bf165=function(_0x27e68b){while(--_0x27e68b){_0x9d1e12['push'](_0x9d1e12['shift']());}};_0x5bf165(++_0x572144);}(_0xb99a,0x19d));var _0xab99=function(_0x957f74,_0x687fe1){_0x957f74=_0x957f74-0x0;var _0x45347a=_0xb99a[_0x957f74];return _0x45347a;};'use strict';var Sequelize=require(_0xab99('0x0'));var moment=require(_0xab99('0x1'));module[_0xab99('0x2')]={'type':{'type':Sequelize[_0xab99('0x3')](_0xab99('0x4'),_0xab99('0x5'))},'result':{'type':Sequelize[_0xab99('0x6')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0xab99('0x6')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0xab99('0x6')]},'transfereraccountcode':{'type':Sequelize[_0xab99('0x6')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0xab99('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0xab99('0x6')]},'transfereecalleridname':{'type':Sequelize[_0xab99('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xab99('0x6')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0xab99('0x6')]},'transfereecontext':{'type':Sequelize[_0xab99('0x6')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0xab99('0x6')]},'isexternal':{'type':Sequelize[_0xab99('0x3')](_0xab99('0x7'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5d7ee65..081c9ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd237=['catch','show','keys','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','index','VoiceTransferReport','rawAttributes','fieldName','type','key','map','query','filters','intersection','model','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll'];(function(_0x4c1c7f,_0x2c1b4c){var _0x5ae73c=function(_0x1e93cf){while(--_0x1e93cf){_0x4c1c7f['push'](_0x4c1c7f['shift']());}};_0x5ae73c(++_0x2c1b4c);}(_0xd237,0x9d));var _0x7d23=function(_0x13378f,_0xf14565){_0x13378f=_0x13378f-0x0;var _0x56764f=_0xd237[_0x13378f];return _0x56764f;};'use strict';var emlformat=require(_0x7d23('0x0'));var rimraf=require(_0x7d23('0x1'));var zipdir=require(_0x7d23('0x2'));var jsonpatch=require(_0x7d23('0x3'));var rp=require(_0x7d23('0x4'));var moment=require('moment');var BPromise=require(_0x7d23('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7d23('0x6'));var sox=require(_0x7d23('0x7'));var csv=require(_0x7d23('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7d23('0x9'));var _=require(_0x7d23('0xa'));var squel=require('squel');var crypto=require(_0x7d23('0xb'));var jsforce=require(_0x7d23('0xc'));var deskjs=require(_0x7d23('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7d23('0xe'));var authService=require(_0x7d23('0xf'));var qs=require(_0x7d23('0x10'));var as=require(_0x7d23('0x11'));var hardwareService=require(_0x7d23('0x12'));var logger=require(_0x7d23('0x13'))(_0x7d23('0x14'));var utils=require(_0x7d23('0x15'));var config=require(_0x7d23('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x7d23('0x17'))['db'];function respondWithStatusCode(_0x48e3ee,_0x2c9828){_0x2c9828=_0x2c9828||0xcc;return function(_0x49161e){if(_0x49161e){return _0x48e3ee[_0x7d23('0x18')](_0x2c9828);}return _0x48e3ee['status'](_0x2c9828)[_0x7d23('0x19')]();};}function respondWithResult(_0x4b4b11,_0x1d4bc0){_0x1d4bc0=_0x1d4bc0||0xc8;return function(_0x4339f3){if(_0x4339f3){return _0x4b4b11[_0x7d23('0x1a')](_0x1d4bc0)[_0x7d23('0x1b')](_0x4339f3);}};}function respondWithFilteredResult(_0x427fcb,_0x5a3fc8){return function(_0x44e73c){if(_0x44e73c){var _0x211e8a=typeof _0x5a3fc8[_0x7d23('0x1c')]==='undefined'&&typeof _0x5a3fc8[_0x7d23('0x1d')]===_0x7d23('0x1e');var _0x1830b6=_0x44e73c['count'];var _0x51d736=_0x211e8a?0x0:_0x5a3fc8[_0x7d23('0x1c')];var _0x4c434f=_0x211e8a?_0x44e73c[_0x7d23('0x1f')]:_0x5a3fc8[_0x7d23('0x1c')]+_0x5a3fc8[_0x7d23('0x1d')];var _0x8e6045;if(_0x4c434f>=_0x1830b6){_0x4c434f=_0x1830b6;_0x8e6045=0xc8;}else{_0x8e6045=0xce;}_0x427fcb[_0x7d23('0x1a')](_0x8e6045);return _0x427fcb[_0x7d23('0x20')](_0x7d23('0x21'),_0x51d736+'-'+_0x4c434f+'/'+_0x1830b6)[_0x7d23('0x1b')](_0x44e73c);}return null;};}function patchUpdates(_0x3b0197){return function(_0x1ef8f0){try{jsonpatch['apply'](_0x1ef8f0,_0x3b0197,!![]);}catch(_0x853fd7){return BPromise[_0x7d23('0x22')](_0x853fd7);}return _0x1ef8f0[_0x7d23('0x23')]();};}function saveUpdates(_0x4c94b0,_0x63090c){return function(_0xf5c718){if(_0xf5c718){return _0xf5c718[_0x7d23('0x24')](_0x4c94b0)[_0x7d23('0x25')](function(_0x2157e4){return _0x2157e4;});}return null;};}function removeEntity(_0x561a23,_0x80f70a){return function(_0x528ace){if(_0x528ace){return _0x528ace[_0x7d23('0x26')]()[_0x7d23('0x25')](function(){_0x561a23[_0x7d23('0x1a')](0xcc)[_0x7d23('0x19')]();});}};}function handleEntityNotFound(_0x5074db,_0x179f9c){return function(_0x467965){if(!_0x467965){_0x5074db[_0x7d23('0x18')](0x194);}return _0x467965;};}function handleError(_0x32d77f,_0xc500be){_0xc500be=_0xc500be||0x1f4;return function(_0x181940){logger['error'](_0x181940[_0x7d23('0x27')]);if(_0x181940[_0x7d23('0x28')]){delete _0x181940[_0x7d23('0x28')];}_0x32d77f[_0x7d23('0x1a')](_0xc500be)[_0x7d23('0x29')](_0x181940);};}exports[_0x7d23('0x2a')]=function(_0x56e32b,_0x4752af){var _0x2a12a0={},_0x23a171={},_0x5668a5={'count':0x0,'rows':[]};var _0x25a359=_['map'](db[_0x7d23('0x2b')][_0x7d23('0x2c')],function(_0x3a52f6){return{'name':_0x3a52f6[_0x7d23('0x2d')],'type':_0x3a52f6[_0x7d23('0x2e')][_0x7d23('0x2f')]};});_0x23a171['model']=_[_0x7d23('0x30')](_0x25a359,'name');_0x23a171[_0x7d23('0x31')]=_['keys'](_0x56e32b[_0x7d23('0x31')]);_0x23a171[_0x7d23('0x32')]=_[_0x7d23('0x33')](_0x23a171[_0x7d23('0x34')],_0x23a171[_0x7d23('0x31')]);_0x2a12a0[_0x7d23('0x35')]=_['intersection'](_0x23a171[_0x7d23('0x34')],qs[_0x7d23('0x36')](_0x56e32b[_0x7d23('0x31')][_0x7d23('0x36')]));_0x2a12a0[_0x7d23('0x35')]=_0x2a12a0[_0x7d23('0x35')]['length']?_0x2a12a0[_0x7d23('0x35')]:_0x23a171[_0x7d23('0x34')];if(!_0x56e32b['query'][_0x7d23('0x37')]('nolimit')){_0x2a12a0[_0x7d23('0x1d')]=qs[_0x7d23('0x1d')](_0x56e32b[_0x7d23('0x31')]['limit']);_0x2a12a0[_0x7d23('0x1c')]=qs[_0x7d23('0x1c')](_0x56e32b['query'][_0x7d23('0x1c')]);}_0x2a12a0['order']=qs[_0x7d23('0x38')](_0x56e32b[_0x7d23('0x31')][_0x7d23('0x38')]);_0x2a12a0[_0x7d23('0x39')]=qs[_0x7d23('0x32')](_[_0x7d23('0x3a')](_0x56e32b[_0x7d23('0x31')],_0x23a171[_0x7d23('0x32')]),_0x25a359);if(_0x56e32b['query'][_0x7d23('0x3b')]){_0x2a12a0[_0x7d23('0x39')]=_['merge'](_0x2a12a0[_0x7d23('0x39')],{'$or':_[_0x7d23('0x30')](_0x25a359,function(_0x50eb25){if(_0x50eb25[_0x7d23('0x2e')]!=='VIRTUAL'){var _0x3ca52d={};_0x3ca52d[_0x50eb25[_0x7d23('0x28')]]={'$like':'%'+_0x56e32b[_0x7d23('0x31')][_0x7d23('0x3b')]+'%'};return _0x3ca52d;}})});}_0x2a12a0=_[_0x7d23('0x3c')]({},_0x2a12a0,_0x56e32b[_0x7d23('0x3d')]);var _0x511477={'where':_0x2a12a0[_0x7d23('0x39')]};return db[_0x7d23('0x2b')][_0x7d23('0x1f')](_0x511477)[_0x7d23('0x25')](function(_0x177498){_0x5668a5[_0x7d23('0x1f')]=_0x177498;if(_0x56e32b[_0x7d23('0x31')][_0x7d23('0x3e')]){_0x2a12a0[_0x7d23('0x3f')]=[{'all':!![]}];}return db[_0x7d23('0x2b')][_0x7d23('0x40')](_0x2a12a0);})[_0x7d23('0x25')](function(_0x303821){_0x5668a5['rows']=_0x303821;return _0x5668a5;})[_0x7d23('0x25')](respondWithFilteredResult(_0x4752af,_0x2a12a0))[_0x7d23('0x41')](handleError(_0x4752af,null));};exports[_0x7d23('0x42')]=function(_0x2069eb,_0x33c264){var _0x3d55ae={'raw':!![],'where':{'id':_0x2069eb['params']['id']}},_0x2d1d55={};_0x2d1d55['model']=_[_0x7d23('0x43')](db[_0x7d23('0x2b')][_0x7d23('0x2c')]);_0x2d1d55['query']=_[_0x7d23('0x43')](_0x2069eb[_0x7d23('0x31')]);_0x2d1d55[_0x7d23('0x32')]=_[_0x7d23('0x33')](_0x2d1d55[_0x7d23('0x34')],_0x2d1d55[_0x7d23('0x31')]);_0x3d55ae[_0x7d23('0x35')]=_[_0x7d23('0x33')](_0x2d1d55[_0x7d23('0x34')],qs['fields'](_0x2069eb['query'][_0x7d23('0x36')]));_0x3d55ae[_0x7d23('0x35')]=_0x3d55ae['attributes'][_0x7d23('0x44')]?_0x3d55ae[_0x7d23('0x35')]:_0x2d1d55['model'];if(_0x2069eb[_0x7d23('0x31')][_0x7d23('0x3e')]){_0x3d55ae[_0x7d23('0x3f')]=[{'all':!![]}];}_0x3d55ae=_['merge']({},_0x3d55ae,_0x2069eb[_0x7d23('0x3d')]);return db[_0x7d23('0x2b')][_0x7d23('0x45')](_0x3d55ae)[_0x7d23('0x25')](handleEntityNotFound(_0x33c264,null))['then'](respondWithResult(_0x33c264,null))['catch'](handleError(_0x33c264,null));};exports[_0x7d23('0x46')]=function(_0x58994c,_0x5104bd){return db[_0x7d23('0x2b')]['create'](_0x58994c[_0x7d23('0x47')],{})[_0x7d23('0x25')](respondWithResult(_0x5104bd,0xc9))[_0x7d23('0x41')](handleError(_0x5104bd,null));};exports[_0x7d23('0x24')]=function(_0x3a4fdb,_0x2d944c){if(_0x3a4fdb[_0x7d23('0x47')]['id']){delete _0x3a4fdb[_0x7d23('0x47')]['id'];}return db[_0x7d23('0x2b')][_0x7d23('0x45')]({'where':{'id':_0x3a4fdb[_0x7d23('0x48')]['id']}})[_0x7d23('0x25')](handleEntityNotFound(_0x2d944c,null))[_0x7d23('0x25')](saveUpdates(_0x3a4fdb[_0x7d23('0x47')],null))[_0x7d23('0x25')](respondWithResult(_0x2d944c,null))[_0x7d23('0x41')](handleError(_0x2d944c,null));};exports[_0x7d23('0x26')]=function(_0x4800d9,_0x253f72){return db[_0x7d23('0x2b')][_0x7d23('0x45')]({'where':{'id':_0x4800d9[_0x7d23('0x48')]['id']}})[_0x7d23('0x25')](handleEntityNotFound(_0x253f72,null))[_0x7d23('0x25')](removeEntity(_0x253f72,null))[_0x7d23('0x41')](handleError(_0x253f72,null));};exports[_0x7d23('0x49')]=function(_0x1c8b3b,_0x15804f){return db['VoiceTransferReport']['describe']()[_0x7d23('0x25')](respondWithResult(_0x15804f,null))[_0x7d23('0x41')](handleError(_0x15804f,null));};
\ No newline at end of file
+var _0x697d=['set','Content-Range','reject','save','update','then','destroy','error','stack','name','index','map','VoiceTransferReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','type','merge','includeAll','findAll','rows','params','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count'];(function(_0x4bf45d,_0x114304){var _0x46521d=function(_0x506f0b){while(--_0x506f0b){_0x4bf45d['push'](_0x4bf45d['shift']());}};_0x46521d(++_0x114304);}(_0x697d,0x72));var _0xd697=function(_0x1809ab,_0x4943f9){_0x1809ab=_0x1809ab-0x0;var _0x97aa23=_0x697d[_0x1809ab];return _0x97aa23;};'use strict';var emlformat=require(_0xd697('0x0'));var rimraf=require(_0xd697('0x1'));var zipdir=require(_0xd697('0x2'));var jsonpatch=require(_0xd697('0x3'));var rp=require(_0xd697('0x4'));var moment=require('moment');var BPromise=require(_0xd697('0x5'));var Mustache=require(_0xd697('0x6'));var util=require(_0xd697('0x7'));var path=require('path');var sox=require(_0xd697('0x8'));var csv=require(_0xd697('0x9'));var ejs=require(_0xd697('0xa'));var fs=require('fs');var fs_extra=require(_0xd697('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd697('0xc'));var jsforce=require(_0xd697('0xd'));var deskjs=require(_0xd697('0xe'));var toCsv=require(_0xd697('0x9'));var querystring=require(_0xd697('0xf'));var Papa=require(_0xd697('0x10'));var Redis=require(_0xd697('0x11'));var authService=require(_0xd697('0x12'));var qs=require(_0xd697('0x13'));var as=require(_0xd697('0x14'));var hardwareService=require(_0xd697('0x15'));var logger=require(_0xd697('0x16'))(_0xd697('0x17'));var utils=require(_0xd697('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xd697('0x19'));var db=require(_0xd697('0x1a'))['db'];function respondWithStatusCode(_0x263329,_0x4cd719){_0x4cd719=_0x4cd719||0xcc;return function(_0x2812a1){if(_0x2812a1){return _0x263329[_0xd697('0x1b')](_0x4cd719);}return _0x263329[_0xd697('0x1c')](_0x4cd719)[_0xd697('0x1d')]();};}function respondWithResult(_0x9d2efd,_0x42fed4){_0x42fed4=_0x42fed4||0xc8;return function(_0x2cc153){if(_0x2cc153){return _0x9d2efd[_0xd697('0x1c')](_0x42fed4)['json'](_0x2cc153);}};}function respondWithFilteredResult(_0x5a8666,_0x3af8b0){return function(_0x4386d7){if(_0x4386d7){var _0x206916=typeof _0x3af8b0[_0xd697('0x1e')]===_0xd697('0x1f')&&typeof _0x3af8b0[_0xd697('0x20')]==='undefined';var _0x43bd50=_0x4386d7[_0xd697('0x21')];var _0x56307b=_0x206916?0x0:_0x3af8b0['offset'];var _0x36c14f=_0x206916?_0x4386d7[_0xd697('0x21')]:_0x3af8b0[_0xd697('0x1e')]+_0x3af8b0[_0xd697('0x20')];var _0xbde9d5;if(_0x36c14f>=_0x43bd50){_0x36c14f=_0x43bd50;_0xbde9d5=0xc8;}else{_0xbde9d5=0xce;}_0x5a8666[_0xd697('0x1c')](_0xbde9d5);return _0x5a8666[_0xd697('0x22')](_0xd697('0x23'),_0x56307b+'-'+_0x36c14f+'/'+_0x43bd50)['json'](_0x4386d7);}return null;};}function patchUpdates(_0x4e3009){return function(_0xa71cb8){try{jsonpatch['apply'](_0xa71cb8,_0x4e3009,!![]);}catch(_0xa6a2a1){return BPromise[_0xd697('0x24')](_0xa6a2a1);}return _0xa71cb8[_0xd697('0x25')]();};}function saveUpdates(_0xb872,_0x27844b){return function(_0x236425){if(_0x236425){return _0x236425[_0xd697('0x26')](_0xb872)[_0xd697('0x27')](function(_0xf207d0){return _0xf207d0;});}return null;};}function removeEntity(_0x4c6f6c,_0x2871e0){return function(_0xe78c19){if(_0xe78c19){return _0xe78c19[_0xd697('0x28')]()[_0xd697('0x27')](function(){_0x4c6f6c[_0xd697('0x1c')](0xcc)[_0xd697('0x1d')]();});}};}function handleEntityNotFound(_0xce0a56,_0x2a7346){return function(_0x5a09a5){if(!_0x5a09a5){_0xce0a56['sendStatus'](0x194);}return _0x5a09a5;};}function handleError(_0x30d053,_0x583b3e){_0x583b3e=_0x583b3e||0x1f4;return function(_0x1630ba){logger[_0xd697('0x29')](_0x1630ba[_0xd697('0x2a')]);if(_0x1630ba['name']){delete _0x1630ba[_0xd697('0x2b')];}_0x30d053[_0xd697('0x1c')](_0x583b3e)['send'](_0x1630ba);};}exports[_0xd697('0x2c')]=function(_0x2c39ee,_0x54ce35){var _0x580c39={},_0x2f3de1={},_0x5e6aae={'count':0x0,'rows':[]};var _0x454562=_[_0xd697('0x2d')](db[_0xd697('0x2e')][_0xd697('0x2f')],function(_0x205daf){return{'name':_0x205daf['fieldName'],'type':_0x205daf['type'][_0xd697('0x30')]};});_0x2f3de1[_0xd697('0x31')]=_[_0xd697('0x2d')](_0x454562,_0xd697('0x2b'));_0x2f3de1[_0xd697('0x32')]=_[_0xd697('0x33')](_0x2c39ee['query']);_0x2f3de1[_0xd697('0x34')]=_[_0xd697('0x35')](_0x2f3de1['model'],_0x2f3de1[_0xd697('0x32')]);_0x580c39[_0xd697('0x36')]=_[_0xd697('0x35')](_0x2f3de1[_0xd697('0x31')],qs['fields'](_0x2c39ee[_0xd697('0x32')][_0xd697('0x37')]));_0x580c39[_0xd697('0x36')]=_0x580c39[_0xd697('0x36')][_0xd697('0x38')]?_0x580c39['attributes']:_0x2f3de1[_0xd697('0x31')];if(!_0x2c39ee[_0xd697('0x32')]['hasOwnProperty'](_0xd697('0x39'))){_0x580c39[_0xd697('0x20')]=qs[_0xd697('0x20')](_0x2c39ee[_0xd697('0x32')][_0xd697('0x20')]);_0x580c39[_0xd697('0x1e')]=qs[_0xd697('0x1e')](_0x2c39ee[_0xd697('0x32')][_0xd697('0x1e')]);}_0x580c39[_0xd697('0x3a')]=qs[_0xd697('0x3b')](_0x2c39ee[_0xd697('0x32')][_0xd697('0x3b')]);_0x580c39[_0xd697('0x3c')]=qs[_0xd697('0x34')](_['pick'](_0x2c39ee['query'],_0x2f3de1['filters']),_0x454562);if(_0x2c39ee['query'][_0xd697('0x3d')]){_0x580c39[_0xd697('0x3c')]=_['merge'](_0x580c39[_0xd697('0x3c')],{'$or':_[_0xd697('0x2d')](_0x454562,function(_0x5216c3){if(_0x5216c3[_0xd697('0x3e')]!=='VIRTUAL'){var _0x5c9159={};_0x5c9159[_0x5216c3['name']]={'$like':'%'+_0x2c39ee['query']['filter']+'%'};return _0x5c9159;}})});}_0x580c39=_[_0xd697('0x3f')]({},_0x580c39,_0x2c39ee['options']);var _0x385c0b={'where':_0x580c39['where']};return db[_0xd697('0x2e')][_0xd697('0x21')](_0x385c0b)['then'](function(_0x51b962){_0x5e6aae[_0xd697('0x21')]=_0x51b962;if(_0x2c39ee[_0xd697('0x32')][_0xd697('0x40')]){_0x580c39['include']=[{'all':!![]}];}return db[_0xd697('0x2e')][_0xd697('0x41')](_0x580c39);})[_0xd697('0x27')](function(_0x5e9038){_0x5e6aae[_0xd697('0x42')]=_0x5e9038;return _0x5e6aae;})[_0xd697('0x27')](respondWithFilteredResult(_0x54ce35,_0x580c39))['catch'](handleError(_0x54ce35,null));};exports['show']=function(_0x72542,_0x45a745){var _0x514182={'raw':!![],'where':{'id':_0x72542[_0xd697('0x43')]['id']}},_0x5cd6ff={};_0x5cd6ff[_0xd697('0x31')]=_['keys'](db[_0xd697('0x2e')][_0xd697('0x2f')]);_0x5cd6ff[_0xd697('0x32')]=_[_0xd697('0x33')](_0x72542[_0xd697('0x32')]);_0x5cd6ff[_0xd697('0x34')]=_[_0xd697('0x35')](_0x5cd6ff[_0xd697('0x31')],_0x5cd6ff['query']);_0x514182['attributes']=_[_0xd697('0x35')](_0x5cd6ff['model'],qs[_0xd697('0x37')](_0x72542['query'][_0xd697('0x37')]));_0x514182[_0xd697('0x36')]=_0x514182[_0xd697('0x36')][_0xd697('0x38')]?_0x514182[_0xd697('0x36')]:_0x5cd6ff[_0xd697('0x31')];if(_0x72542[_0xd697('0x32')][_0xd697('0x40')]){_0x514182[_0xd697('0x44')]=[{'all':!![]}];}_0x514182=_[_0xd697('0x3f')]({},_0x514182,_0x72542['options']);return db['VoiceTransferReport'][_0xd697('0x45')](_0x514182)[_0xd697('0x27')](handleEntityNotFound(_0x45a745,null))[_0xd697('0x27')](respondWithResult(_0x45a745,null))[_0xd697('0x46')](handleError(_0x45a745,null));};exports[_0xd697('0x47')]=function(_0x5d291d,_0x162861){return db['VoiceTransferReport'][_0xd697('0x47')](_0x5d291d[_0xd697('0x48')],{})[_0xd697('0x27')](respondWithResult(_0x162861,0xc9))[_0xd697('0x46')](handleError(_0x162861,null));};exports[_0xd697('0x26')]=function(_0x256b3d,_0x1c5807){if(_0x256b3d[_0xd697('0x48')]['id']){delete _0x256b3d[_0xd697('0x48')]['id'];}return db[_0xd697('0x2e')]['find']({'where':{'id':_0x256b3d['params']['id']}})[_0xd697('0x27')](handleEntityNotFound(_0x1c5807,null))['then'](saveUpdates(_0x256b3d[_0xd697('0x48')],null))['then'](respondWithResult(_0x1c5807,null))[_0xd697('0x46')](handleError(_0x1c5807,null));};exports[_0xd697('0x28')]=function(_0x3b2411,_0x3db398){return db['VoiceTransferReport']['find']({'where':{'id':_0x3b2411[_0xd697('0x43')]['id']}})['then'](handleEntityNotFound(_0x3db398,null))[_0xd697('0x27')](removeEntity(_0x3db398,null))[_0xd697('0x46')](handleError(_0x3db398,null));};exports[_0xd697('0x49')]=function(_0x4b53ca,_0x27feb3){return db[_0xd697('0x2e')][_0xd697('0x49')]()['then'](respondWithResult(_0x27feb3,null))[_0xd697('0x46')](handleError(_0x27feb3,null));};
\ No newline at end of file
index 53bd240..01732c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe76d=['VoiceTransferReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./voiceTransferReport.attributes','define'];(function(_0x47015f,_0x1d3494){var _0x5554a2=function(_0x811559){while(--_0x811559){_0x47015f['push'](_0x47015f['shift']());}};_0x5554a2(++_0x1d3494);}(_0xe76d,0x9d));var _0xde76=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0xe76d[_0xc4001c];return _0x49f7bc;};'use strict';var _=require(_0xde76('0x0'));var util=require(_0xde76('0x1'));var logger=require(_0xde76('0x2'))(_0xde76('0x3'));var moment=require(_0xde76('0x4'));var BPromise=require(_0xde76('0x5'));var rp=require(_0xde76('0x6'));var fs=require('fs');var path=require(_0xde76('0x7'));var rimraf=require('rimraf');var config=require(_0xde76('0x8'));var attributes=require(_0xde76('0x9'));module['exports']=function(_0x26966f,_0x382b28){return _0x26966f[_0xde76('0xa')](_0xde76('0xb'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ce9=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','define','report_call_transfer','lodash','util','../../config/logger'];(function(_0x4fa301,_0x15ad9c){var _0x1c2d20=function(_0x41d967){while(--_0x41d967){_0x4fa301['push'](_0x4fa301['shift']());}};_0x1c2d20(++_0x15ad9c);}(_0x2ce9,0x1de));var _0x92ce=function(_0x1c0f41,_0x26d95d){_0x1c0f41=_0x1c0f41-0x0;var _0x369a9f=_0x2ce9[_0x1c0f41];return _0x369a9f;};'use strict';var _=require(_0x92ce('0x0'));var util=require(_0x92ce('0x1'));var logger=require(_0x92ce('0x2'))(_0x92ce('0x3'));var moment=require(_0x92ce('0x4'));var BPromise=require(_0x92ce('0x5'));var rp=require(_0x92ce('0x6'));var fs=require('fs');var path=require(_0x92ce('0x7'));var rimraf=require(_0x92ce('0x8'));var config=require(_0x92ce('0x9'));var attributes=require(_0x92ce('0xa'));module['exports']=function(_0x2498db,_0x3b3ca1){return _0x2498db[_0x92ce('0xb')]('VoiceTransferReport',attributes,{'tableName':_0x92ce('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e516ec5..b309b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x055e=['body','options','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create'];(function(_0x3f4d9a,_0xabf086){var _0x5a2da5=function(_0x4e1880){while(--_0x4e1880){_0x3f4d9a['push'](_0x3f4d9a['shift']());}};_0x5a2da5(++_0xabf086);}(_0x055e,0x158));var _0xe055=function(_0x35c9ba,_0x37a55b){_0x35c9ba=_0x35c9ba-0x0;var _0x5cb2b5=_0x055e[_0x35c9ba];return _0x5cb2b5;};'use strict';var _=require(_0xe055('0x0'));var util=require(_0xe055('0x1'));var moment=require(_0xe055('0x2'));var BPromise=require('bluebird');var rs=require(_0xe055('0x3'));var fs=require('fs');var Redis=require(_0xe055('0x4'));var db=require(_0xe055('0x5'))['db'];var utils=require(_0xe055('0x6'));var logger=require(_0xe055('0x7'))(_0xe055('0x8'));var config=require(_0xe055('0x9'));var jayson=require(_0xe055('0xa'));var client=jayson[_0xe055('0xb')][_0xe055('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2490c9,_0x355fb6,_0x310e83){return new BPromise(function(_0x1a7c94,_0x4b7924){return client[_0xe055('0xd')](_0x2490c9,_0x310e83)[_0xe055('0xe')](function(_0x1ce7d9){logger['info'](_0xe055('0xf'),_0x355fb6,_0xe055('0x10'));logger[_0xe055('0x11')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x355fb6,_0xe055('0x10'),JSON[_0xe055('0x12')](_0x1ce7d9));if(_0x1ce7d9[_0xe055('0x13')]){if(_0x1ce7d9[_0xe055('0x13')][_0xe055('0x14')]===0x1f4){logger[_0xe055('0x13')](_0xe055('0xf'),_0x355fb6,_0x1ce7d9[_0xe055('0x13')]['message']);return _0x4b7924(_0x1ce7d9['error'][_0xe055('0x15')]);}logger[_0xe055('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x355fb6,_0x1ce7d9[_0xe055('0x13')][_0xe055('0x15')]);return _0x1a7c94(_0x1ce7d9[_0xe055('0x13')][_0xe055('0x15')]);}else{logger[_0xe055('0x16')](_0xe055('0xf'),_0x355fb6,_0xe055('0x10'));_0x1a7c94(_0x1ce7d9[_0xe055('0x17')][_0xe055('0x15')]);}})[_0xe055('0x18')](function(_0x278fc6){logger[_0xe055('0x13')](_0xe055('0xf'),_0x355fb6,_0x278fc6);_0x4b7924(_0x278fc6);});});}exports[_0xe055('0x19')]=function(_0x207e6c){var _0x23903a=this;return new Promise(function(_0x1d2c94,_0x239b02){return db[_0xe055('0x1a')][_0xe055('0x1b')](_0x207e6c[_0xe055('0x1c')],{'raw':_0x207e6c[_0xe055('0x1d')]?_0x207e6c[_0xe055('0x1d')][_0xe055('0x1e')]===undefined?!![]:![]:!![]})[_0xe055('0xe')](function(_0x5a706b){logger[_0xe055('0x16')](_0xe055('0x19'),_0x207e6c);logger[_0xe055('0x11')](_0xe055('0x19'),_0x207e6c,JSON[_0xe055('0x12')](_0x5a706b));_0x1d2c94(_0x5a706b);})[_0xe055('0x18')](function(_0x40a458){logger[_0xe055('0x13')](_0xe055('0x19'),_0x40a458['message'],_0x207e6c);_0x239b02(_0x23903a['error'](0x1f4,_0x40a458[_0xe055('0x15')]));});});};
\ No newline at end of file
+var _0xdfaa=['request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','then','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','VoiceTransferReport,\x20%s,\x20%s'];(function(_0x24994a,_0x447f2d){var _0x3bf1d5=function(_0x422c07){while(--_0x422c07){_0x24994a['push'](_0x24994a['shift']());}};_0x3bf1d5(++_0x447f2d);}(_0xdfaa,0x197));var _0xadfa=function(_0x3c75ab,_0x2d35bc){_0x3c75ab=_0x3c75ab-0x0;var _0x2bcb02=_0xdfaa[_0x3c75ab];return _0x2bcb02;};'use strict';var _=require(_0xadfa('0x0'));var util=require(_0xadfa('0x1'));var moment=require(_0xadfa('0x2'));var BPromise=require('bluebird');var rs=require(_0xadfa('0x3'));var fs=require('fs');var Redis=require(_0xadfa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xadfa('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xadfa('0x6'));var jayson=require(_0xadfa('0x7'));var client=jayson[_0xadfa('0x8')][_0xadfa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x199212,_0x5edc9f,_0x20278d){return new BPromise(function(_0x37fdd4,_0x3027f6){return client[_0xadfa('0xa')](_0x199212,_0x20278d)['then'](function(_0x3c14bf){logger[_0xadfa('0xb')](_0xadfa('0xc'),_0x5edc9f,_0xadfa('0xd'));logger[_0xadfa('0xe')](_0xadfa('0xf'),_0x5edc9f,_0xadfa('0xd'),JSON[_0xadfa('0x10')](_0x3c14bf));if(_0x3c14bf['error']){if(_0x3c14bf['error']['code']===0x1f4){logger[_0xadfa('0x11')](_0xadfa('0xc'),_0x5edc9f,_0x3c14bf[_0xadfa('0x11')]['message']);return _0x3027f6(_0x3c14bf[_0xadfa('0x11')][_0xadfa('0x12')]);}logger[_0xadfa('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x5edc9f,_0x3c14bf[_0xadfa('0x11')]['message']);return _0x37fdd4(_0x3c14bf[_0xadfa('0x11')]['message']);}else{logger[_0xadfa('0xb')](_0xadfa('0xc'),_0x5edc9f,_0xadfa('0xd'));_0x37fdd4(_0x3c14bf[_0xadfa('0x13')]['message']);}})[_0xadfa('0x14')](function(_0x220cae){logger['error'](_0xadfa('0xc'),_0x5edc9f,_0x220cae);_0x3027f6(_0x220cae);});});}exports[_0xadfa('0x15')]=function(_0x423816){var _0x558fa4=this;return new Promise(function(_0x25e692,_0x2f3318){return db[_0xadfa('0x16')][_0xadfa('0x17')](_0x423816[_0xadfa('0x18')],{'raw':_0x423816[_0xadfa('0x19')]?_0x423816[_0xadfa('0x19')][_0xadfa('0x1a')]===undefined?!![]:![]:!![]})[_0xadfa('0x1b')](function(_0x21fc81){logger['info'](_0xadfa('0x15'),_0x423816);logger[_0xadfa('0xe')](_0xadfa('0x15'),_0x423816,JSON['stringify'](_0x21fc81));_0x25e692(_0x21fc81);})['catch'](function(_0x33e08a){logger[_0xadfa('0x11')](_0xadfa('0x15'),_0x33e08a[_0xadfa('0x12')],_0x423816);_0x2f3318(_0x558fa4[_0xadfa('0x11')](0x1f4,_0x33e08a['message']));});});};
\ No newline at end of file
index d6b138e..47af5fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','isAuthenticated','hangup','/answer','answer'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x42e8f3,_0x5c8dba){_0x42e8f3=_0x42e8f3-0x0;var _0x47feab=_0xf3cd[_0x42e8f3];return _0x47feab;};'use strict';var express=require(_0xdf3c('0x0'));var router=express[_0xdf3c('0x1')]();var auth=require(_0xdf3c('0x2'));var controller=require(_0xdf3c('0x3'));router[_0xdf3c('0x4')](_0xdf3c('0x5'),auth['isAuthenticated'](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x7')]);router[_0xdf3c('0x4')]('/hangup',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x9')]);router[_0xdf3c('0x4')](_0xdf3c('0xa'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xb')]);router['post']('/hold',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller['hold']);router[_0xdf3c('0x4')](_0xdf3c('0xc'),auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0x4')](_0xdf3c('0xe'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x4')](_0xdf3c('0x10'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0x11')]);module[_0xdf3c('0x12')]=router;
\ No newline at end of file
+var _0x9f62=['/hangup','isAuthenticated','hangup','/answer','isWebrtcLicence','hold','/calls','/transfer','transfer','exports','Router','./webbar.controller','post','/originate','originate'];(function(_0x66ef99,_0x289d89){var _0x2df30a=function(_0xef745c){while(--_0xef745c){_0x66ef99['push'](_0x66ef99['shift']());}};_0x2df30a(++_0x289d89);}(_0x9f62,0x154));var _0x29f6=function(_0x301097,_0xf1cabb){_0x301097=_0x301097-0x0;var _0x4b89fe=_0x9f62[_0x301097];return _0x4b89fe;};'use strict';var express=require('express');var router=express[_0x29f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x29f6('0x1'));router[_0x29f6('0x2')](_0x29f6('0x3'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0x29f6('0x4')]);router[_0x29f6('0x2')](_0x29f6('0x5'),auth[_0x29f6('0x6')](),auth['isWebrtcLicence'](),controller[_0x29f6('0x7')]);router[_0x29f6('0x2')](_0x29f6('0x8'),auth[_0x29f6('0x6')](),auth[_0x29f6('0x9')](),controller['answer']);router['post']('/hold',auth['isAuthenticated'](),auth[_0x29f6('0x9')](),controller[_0x29f6('0xa')]);router['post']('/unhold',auth[_0x29f6('0x6')](),auth[_0x29f6('0x9')](),controller['unhold']);router[_0x29f6('0x2')](_0x29f6('0xb'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller['calls']);router['post'](_0x29f6('0xc'),auth[_0x29f6('0x6')](),auth[_0x29f6('0x9')](),controller[_0x29f6('0xd')]);module[_0x29f6('0xe')]=router;
\ No newline at end of file
index dfa62db..1e6b1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f0=['callbackUrl','entityFound:','user:%s','json','originate\x20executed!','catch','hangup','hangup\x20fired:','hangup\x20executed!','answer','answer\x20fired:','format','webbar:answer','hold','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','rows','conference','conference\x20executed!','transfer','webbar:transfer','transfer\x20executed!','lodash','util','bluebird','jayson/promise','client','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','handleError:','error','name','status','send','NotFound','request','then','code','message','User','findOne','all','filter','UserId','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId'];(function(_0x5efe4b,_0x365fdc){var _0xb676d=function(_0x284868){while(--_0x284868){_0x5efe4b['push'](_0x5efe4b['shift']());}};_0xb676d(++_0x365fdc);}(_0x74f0,0xf3));var _0x074f=function(_0x4a0e68,_0x45c08c){_0x4a0e68=_0x4a0e68-0x0;var _0x4fb274=_0x74f0[_0x4a0e68];return _0x4fb274;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x074f('0x0'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0x074f('0x1'));var BPromise=require(_0x074f('0x2'));var jayson=require(_0x074f('0x3'));var amiClient=jayson[_0x074f('0x4')]['http']({'port':0x232a});var logger=require('../../config/logger')(_0x074f('0x5'));var Redis=require(_0x074f('0x6'));config[_0x074f('0x7')]=_[_0x074f('0x8')](config[_0x074f('0x7')],{'host':_0x074f('0x9'),'port':0x18eb});var io=require(_0x074f('0xa'))(new Redis(config['redis']));var Schema=require(_0x074f('0xb'));var originateValidation=new Schema({'userId':{'type':_0x074f('0xc'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0x074f('0xd'),'required':[!![],_0x074f('0xe')]},'callerId':{'type':_0x074f('0xd')},'callbackUrl':{'type':_0x074f('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0x074f('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x074f('0xc'),'required':[!![],_0x074f('0xf')]},'sessionId':{'type':_0x074f('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x074f('0xc'),'required':[!![],_0x074f('0xf')]},'sessionId':{'type':_0x074f('0xd'),'required':[!![],_0x074f('0x10')]},'transferNumber':{'type':_0x074f('0xd'),'required':[!![],_0x074f('0x11')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x074f('0xf')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x074f('0xc'),'required':[!![],_0x074f('0xf')]},'sessionId':{'type':_0x074f('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x074f('0xc'),'required':[!![],_0x074f('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':_0x074f('0xc'),'required':[!![],_0x074f('0xf')]}});function emit(_0x1edf9c,_0x3f1a47,_0x428987){logger[_0x074f('0x12')](_0x1edf9c,_0x3f1a47,JSON['stringify'](_0x428987));io['to'](_0x1edf9c)[_0x074f('0x13')](_0x3f1a47,_0x428987);}function handleError(_0x367b52){return function(_0x200e43){console[_0x074f('0x14')](_0x074f('0x15'),_0x200e43,_0x200e43 instanceof RangeError);logger[_0x074f('0x16')](_0x200e43['stack']);if(_0x200e43 instanceof RangeError){if(_0x200e43['name']){delete _0x200e43[_0x074f('0x17')];}_0x367b52['status'](0x194)['send'](_0x200e43);}else{if(_0x200e43[_0x074f('0x17')]){delete _0x200e43[_0x074f('0x17')];}_0x367b52[_0x074f('0x18')](0x1f4)[_0x074f('0x19')](_0x200e43);}};}function checkError(){return function(_0xfa07ea){if(!_0xfa07ea){throw new RangeError(_0x074f('0x1a'));}return _0xfa07ea;};}function respondWithRpcPromise(_0x23406f,_0x3ecb4b){return new BPromise(function(_0x1acf0a,_0x2c3b23){var _0x335170=amiClient;return _0x335170[_0x074f('0x1b')](_0x23406f,_0x3ecb4b)[_0x074f('0x1c')](function(_0x2fc5b0){if(_0x2fc5b0[_0x074f('0x16')]){if(_0x2fc5b0[_0x074f('0x16')][_0x074f('0x1d')]===0x1f4){return _0x2c3b23(_0x2fc5b0[_0x074f('0x16')][_0x074f('0x1e')]);}return _0x1acf0a(_0x2fc5b0[_0x074f('0x16')]['message']);}else{_0x1acf0a(_0x2fc5b0['result']);}})['catch'](function(_0x1051ce){_0x2c3b23(_0x1051ce);});});}function getAgent(_0x22ce4f){return db[_0x074f('0x1f')][_0x074f('0x20')]({'where':{'id':_0x22ce4f,'role':'agent'}})[_0x074f('0x1c')](checkError());}function getAgentCheckSession(_0x339370,_0x3fb202){return new BPromise(function(_0x312119,_0x470acc){var _0xb9722a=respondWithRpcPromise('VoiceChannels');var _0x1bf574=getAgent(_0x339370);Promise[_0x074f('0x21')]([_0xb9722a,_0x1bf574])[_0x074f('0x1c')](function(_0x53b76d){var _0x1ee652=_0x53b76d[0x0];var _0x5d6edd=_0x53b76d[0x1];var _0x4fcfb5=_[_0x074f('0x22')](_0x1ee652['rows'],function(_0x4aa96f){return _0x4aa96f[_0x074f('0x23')]==_0x5d6edd['id']&&_0x4aa96f[_0x074f('0x24')]==_0x3fb202;});if(_0x4fcfb5[_0x074f('0x25')]==0x1){_0x312119(_0x5d6edd);}else{_0x470acc(new RangeError('sessionId\x20'+_0x3fb202+_0x074f('0x26')));}});});}exports[_0x074f('0x27')]=function(_0x269df3,_0x50314d){logger[_0x074f('0x12')](_0x074f('0x28'),_0x269df3[_0x074f('0x29')]);var _0x41ccb4=originateValidation[_0x074f('0xb')](_0x269df3['body']);if(_0x41ccb4[_0x074f('0x25')]>0x0){return _0x50314d[_0x074f('0x18')](0x190)['json'](_0x41ccb4);}var _0x16ff4c=_0x269df3[_0x074f('0x29')][_0x074f('0x2a')];var _0x498288=_0x269df3[_0x074f('0x29')][_0x074f('0x2b')];var _0x493cc3=_0x269df3[_0x074f('0x29')][_0x074f('0x2c')];var _0x3407bd=_0x269df3[_0x074f('0x29')][_0x074f('0x2d')];return getAgent(_0x16ff4c)[_0x074f('0x1c')](function(_0x283211){logger[_0x074f('0x12')](_0x074f('0x2e'),_0x283211[_0x074f('0x17')]);emit(util['format'](_0x074f('0x2f'),_0x283211[_0x074f('0x17')]),'webbar:originate',{'callNumber':_0x498288,'callerId':_0x493cc3,'callbackUrl':_0x3407bd});return _0x50314d[_0x074f('0x18')](0xc8)[_0x074f('0x30')]({'error':![],'message':_0x074f('0x31')});})[_0x074f('0x32')](handleError(_0x50314d));};exports[_0x074f('0x33')]=function(_0x380c0e,_0x29d5c7){logger['info'](_0x074f('0x34'),_0x380c0e[_0x074f('0x29')]);var _0x251532=hangupValidation[_0x074f('0xb')](_0x380c0e[_0x074f('0x29')]);if(_0x251532[_0x074f('0x25')]>0x0){return _0x29d5c7['status'](0x190)[_0x074f('0x30')](_0x251532);}var _0x19866e=_0x380c0e['body'][_0x074f('0x2a')];var _0x41b1f2=_0x380c0e[_0x074f('0x29')]['sessionId'];return getAgent(_0x19866e)['then'](function(_0x5f39e5){logger[_0x074f('0x12')](_0x074f('0x2e'),_0x5f39e5[_0x074f('0x17')]);emit(util['format'](_0x074f('0x2f'),_0x5f39e5[_0x074f('0x17')]),'webbar:hangup',{'sessionId':_0x41b1f2});return _0x29d5c7[_0x074f('0x18')](0xc8)[_0x074f('0x30')]({'error':![],'message':_0x074f('0x35')});})[_0x074f('0x32')](handleError(_0x29d5c7));};exports[_0x074f('0x36')]=function(_0x42de45,_0x40dac1){logger[_0x074f('0x12')](_0x074f('0x37'),_0x42de45[_0x074f('0x29')]);var _0x58ff4d=answerValidation[_0x074f('0xb')](_0x42de45['body']);if(_0x58ff4d[_0x074f('0x25')]>0x0){return _0x40dac1['status'](0x190)[_0x074f('0x30')](_0x58ff4d);}var _0x4c59ec=_0x42de45[_0x074f('0x29')]['userId'];var _0x654e6e=_0x42de45[_0x074f('0x29')][_0x074f('0x24')];return getAgent(_0x4c59ec)[_0x074f('0x1c')](function(_0xe20f2b){logger[_0x074f('0x12')](_0x074f('0x2e'),_0xe20f2b['name']);emit(util[_0x074f('0x38')](_0x074f('0x2f'),_0xe20f2b[_0x074f('0x17')]),_0x074f('0x39'),{'sessionId':_0x654e6e});return _0x40dac1['status'](0xc8)[_0x074f('0x30')]({'error':![],'message':'answer\x20executed!'});})[_0x074f('0x32')](handleError(_0x40dac1));};exports[_0x074f('0x3a')]=function(_0x324ca3,_0x5ebf87){logger[_0x074f('0x12')]('hold\x20fired:',_0x324ca3[_0x074f('0x29')]);var _0x2ed08a=holdValidation['validate'](_0x324ca3[_0x074f('0x29')]);if(_0x2ed08a['length']>0x0){return _0x5ebf87[_0x074f('0x18')](0x190)[_0x074f('0x30')](_0x2ed08a);}var _0x598fee=_0x324ca3['body']['userId'];var _0x4d5731=_0x324ca3[_0x074f('0x29')][_0x074f('0x24')];return getAgent(_0x598fee)[_0x074f('0x1c')](function(_0xdd3709){logger['info'](_0x074f('0x2e'),_0xdd3709[_0x074f('0x17')]);emit(util[_0x074f('0x38')](_0x074f('0x2f'),_0xdd3709[_0x074f('0x17')]),_0x074f('0x3b'),{'sessionId':_0x4d5731});return _0x5ebf87[_0x074f('0x18')](0xc8)[_0x074f('0x30')]({'error':![],'message':'hold\x20executed!'});})[_0x074f('0x32')](handleError(_0x5ebf87));};exports[_0x074f('0x3c')]=function(_0x2ff3ab,_0x306a17){logger['info'](_0x074f('0x3d'),_0x2ff3ab[_0x074f('0x29')]);var _0x50bb3d=unholdValidation['validate'](_0x2ff3ab[_0x074f('0x29')]);if(_0x50bb3d[_0x074f('0x25')]>0x0){return _0x306a17[_0x074f('0x18')](0x190)[_0x074f('0x30')](_0x50bb3d);}var _0x563343=_0x2ff3ab['body'][_0x074f('0x2a')];var _0xc38f21=_0x2ff3ab[_0x074f('0x29')][_0x074f('0x24')];return getAgent(_0x563343)[_0x074f('0x1c')](function(_0x151c90){logger[_0x074f('0x12')](_0x074f('0x2e'),_0x151c90[_0x074f('0x17')]);emit(util['format'](_0x074f('0x2f'),_0x151c90[_0x074f('0x17')]),_0x074f('0x3e'),{'sessionId':_0xc38f21});return _0x306a17[_0x074f('0x18')](0xc8)[_0x074f('0x30')]({'error':![],'message':_0x074f('0x3f')});})['catch'](handleError(_0x306a17));};exports[_0x074f('0x40')]=function(_0xe69ce5,_0x56b286){logger[_0x074f('0x12')](_0x074f('0x41'),_0x56b286[_0x074f('0x29')]);var _0x417fa1=callsValidation[_0x074f('0xb')](_0xe69ce5[_0x074f('0x29')]);if(_0x417fa1[_0x074f('0x25')]>0x0){return _0x56b286[_0x074f('0x18')](0x190)[_0x074f('0x30')](_0x417fa1);}var _0x2d2787=_0xe69ce5['body'][_0x074f('0x2a')];var _0x51ede6=respondWithRpcPromise('VoiceChannels');var _0x41aec7=getAgent(_0x2d2787);return Promise['all']([_0x51ede6,_0x41aec7])['then'](function(_0x24eb7a){var _0x183c51=_0x24eb7a[0x0];var _0x668a47=_0x24eb7a[0x1];var _0x3f3762=_[_0x074f('0x22')](_0x183c51[_0x074f('0x42')],function(_0x311d36){return _0x311d36[_0x074f('0x23')]==_0x668a47['id'];});return _0x56b286['status'](0xc8)['json']({'count':_0x3f3762[_0x074f('0x25')],'rows':_0x3f3762});})[_0x074f('0x32')](handleError(_0x56b286));};exports[_0x074f('0x43')]=function(_0x5ce8d2,_0x1de8f2){logger[_0x074f('0x12')]('conference\x20fired:',_0x5ce8d2['body']);var _0x274ce9=conferenceValidation['validate'](_0x5ce8d2[_0x074f('0x29')]);if(_0x274ce9[_0x074f('0x25')]>0x0){return _0x1de8f2['status'](0x190)[_0x074f('0x30')](_0x274ce9);}var _0x104933=_0x5ce8d2[_0x074f('0x29')][_0x074f('0x2a')];return getAgent(_0x104933)[_0x074f('0x1c')](function(_0x9fe79e){logger[_0x074f('0x12')](_0x074f('0x2e'),_0x9fe79e[_0x074f('0x17')]);emit(util[_0x074f('0x38')](_0x074f('0x2f'),_0x9fe79e[_0x074f('0x17')]),'webbar:conference');return _0x1de8f2['status'](0xc8)['json']({'error':![],'message':_0x074f('0x44')});})['catch'](handleError(_0x1de8f2));};exports[_0x074f('0x45')]=function(_0x4e449f,_0x30296f){logger[_0x074f('0x12')]('transfer\x20fired:',_0x4e449f[_0x074f('0x29')]);var _0x1253f7=transferValidation[_0x074f('0xb')](_0x4e449f[_0x074f('0x29')]);if(_0x1253f7[_0x074f('0x25')]>0x0){return _0x30296f[_0x074f('0x18')](0x190)[_0x074f('0x30')](_0x1253f7);}var _0x5bb76b=_0x4e449f[_0x074f('0x29')][_0x074f('0x2a')];var _0x547922=_0x4e449f[_0x074f('0x29')][_0x074f('0x24')];var _0x125d07=_0x4e449f[_0x074f('0x29')]['transferNumber'];return getAgent(_0x5bb76b)[_0x074f('0x1c')](function(_0x110fa1){logger[_0x074f('0x12')]('entityFound:',_0x110fa1['name']);emit(util[_0x074f('0x38')](_0x074f('0x2f'),_0x110fa1[_0x074f('0x17')]),_0x074f('0x46'),{'sessionId':_0x547922,'transferNumber':_0x125d07});return _0x30296f[_0x074f('0x18')](0xc8)['json']({'error':![],'message':_0x074f('0x47')});})['catch'](handleError(_0x30296f));};
\ No newline at end of file
+var _0x984b=['transfer\x20executed!','../../config/environment','util','bluebird','http','../../config/logger','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','catch','User','findOne','agent','VoiceChannels','all','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','length','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','webbar:hangup','hangup\x20executed!','answer','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','filter','rows','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer'];(function(_0x2867d8,_0xef3ee0){var _0x3b8176=function(_0x2b9eb8){while(--_0x2b9eb8){_0x2867d8['push'](_0x2867d8['shift']());}};_0x3b8176(++_0xef3ee0);}(_0x984b,0xee));var _0xb984=function(_0x4ab77c,_0x478d4f){_0x4ab77c=_0x4ab77c-0x0;var _0x40942d=_0x984b[_0x4ab77c];return _0x40942d;};'use strict';var path=require('path');var fs=require('fs');var _=require('lodash');var db=require('../../mysqldb')['db'];var config=require(_0xb984('0x0'));var util=require(_0xb984('0x1'));var BPromise=require(_0xb984('0x2'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0xb984('0x3')]({'port':0x232a});var logger=require(_0xb984('0x4'))('webbarapi');var Redis=require('ioredis');config[_0xb984('0x5')]=_[_0xb984('0x6')](config['redis'],{'host':_0xb984('0x7'),'port':0x18eb});var io=require(_0xb984('0x8'))(new Redis(config['redis']));var Schema=require(_0xb984('0x9'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb984('0xa')]},'callNumber':{'type':_0xb984('0xb'),'required':[!![],_0xb984('0xc')]},'callerId':{'type':_0xb984('0xb')},'callbackUrl':{'type':_0xb984('0xb')}});var hangupValidation=new Schema({'userId':{'type':_0xb984('0xd'),'required':[!![],_0xb984('0xa')]},'sessionId':{'type':_0xb984('0xb'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb984('0xd'),'required':[!![],_0xb984('0xa')]},'sessionId':{'type':_0xb984('0xb'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xb984('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb984('0xb'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xb984('0xb'),'required':[!![],_0xb984('0xe')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb984('0xa')]},'sessionId':{'type':_0xb984('0xb'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb984('0xa')]},'sessionId':{'type':_0xb984('0xb'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb984('0xa')]}});var conferenceValidation=new Schema({'userId':{'type':_0xb984('0xd'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x6fae41,_0x5cd1aa,_0x3b8241){logger[_0xb984('0xf')](_0x6fae41,_0x5cd1aa,JSON[_0xb984('0x10')](_0x3b8241));io['to'](_0x6fae41)[_0xb984('0x11')](_0x5cd1aa,_0x3b8241);}function handleError(_0x59dcb7){return function(_0x396c36){console[_0xb984('0x12')](_0xb984('0x13'),_0x396c36,_0x396c36 instanceof RangeError);logger[_0xb984('0x14')](_0x396c36[_0xb984('0x15')]);if(_0x396c36 instanceof RangeError){if(_0x396c36[_0xb984('0x16')]){delete _0x396c36['name'];}_0x59dcb7[_0xb984('0x17')](0x194)[_0xb984('0x18')](_0x396c36);}else{if(_0x396c36[_0xb984('0x16')]){delete _0x396c36[_0xb984('0x16')];}_0x59dcb7[_0xb984('0x17')](0x1f4)[_0xb984('0x18')](_0x396c36);}};}function checkError(){return function(_0x54dd81){if(!_0x54dd81){throw new RangeError(_0xb984('0x19'));}return _0x54dd81;};}function respondWithRpcPromise(_0xc16561,_0x551ad4){return new BPromise(function(_0x44b570,_0x97af5c){var _0x14734a=amiClient;return _0x14734a[_0xb984('0x1a')](_0xc16561,_0x551ad4)[_0xb984('0x1b')](function(_0x286033){if(_0x286033[_0xb984('0x14')]){if(_0x286033['error'][_0xb984('0x1c')]===0x1f4){return _0x97af5c(_0x286033[_0xb984('0x14')][_0xb984('0x1d')]);}return _0x44b570(_0x286033['error'][_0xb984('0x1d')]);}else{_0x44b570(_0x286033[_0xb984('0x1e')]);}})[_0xb984('0x1f')](function(_0x2d0450){_0x97af5c(_0x2d0450);});});}function getAgent(_0x1f7b62){return db[_0xb984('0x20')][_0xb984('0x21')]({'where':{'id':_0x1f7b62,'role':_0xb984('0x22')}})['then'](checkError());}function getAgentCheckSession(_0x249d47,_0x469af6){return new BPromise(function(_0x3e254b,_0x2bd0f2){var _0x4fb896=respondWithRpcPromise(_0xb984('0x23'));var _0x67e4d3=getAgent(_0x249d47);Promise[_0xb984('0x24')]([_0x4fb896,_0x67e4d3])['then'](function(_0x363e33){var _0x311e22=_0x363e33[0x0];var _0x2012ca=_0x363e33[0x1];var _0x3d2757=_['filter'](_0x311e22['rows'],function(_0x4dcf73){return _0x4dcf73[_0xb984('0x25')]==_0x2012ca['id']&&_0x4dcf73[_0xb984('0x26')]==_0x469af6;});if(_0x3d2757['length']==0x1){_0x3e254b(_0x2012ca);}else{_0x2bd0f2(new RangeError(_0xb984('0x27')+_0x469af6+_0xb984('0x28')));}});});}exports[_0xb984('0x29')]=function(_0x2c5a99,_0x518bef){logger['info'](_0xb984('0x2a'),_0x2c5a99[_0xb984('0x2b')]);var _0x2c0562=originateValidation[_0xb984('0x9')](_0x2c5a99['body']);if(_0x2c0562[_0xb984('0x2c')]>0x0){return _0x518bef[_0xb984('0x17')](0x190)[_0xb984('0x2d')](_0x2c0562);}var _0x3c4687=_0x2c5a99[_0xb984('0x2b')][_0xb984('0x2e')];var _0x5f4426=_0x2c5a99[_0xb984('0x2b')][_0xb984('0x2f')];var _0x523784=_0x2c5a99[_0xb984('0x2b')][_0xb984('0x30')];var _0x30891c=_0x2c5a99['body'][_0xb984('0x31')];return getAgent(_0x3c4687)[_0xb984('0x1b')](function(_0x4edaf1){logger['info'](_0xb984('0x32'),_0x4edaf1['name']);emit(util[_0xb984('0x33')](_0xb984('0x34'),_0x4edaf1['name']),_0xb984('0x35'),{'callNumber':_0x5f4426,'callerId':_0x523784,'callbackUrl':_0x30891c});return _0x518bef['status'](0xc8)[_0xb984('0x2d')]({'error':![],'message':'originate\x20executed!'});})[_0xb984('0x1f')](handleError(_0x518bef));};exports['hangup']=function(_0x52f872,_0xf6d925){logger[_0xb984('0xf')]('hangup\x20fired:',_0x52f872[_0xb984('0x2b')]);var _0x1fd248=hangupValidation['validate'](_0x52f872[_0xb984('0x2b')]);if(_0x1fd248[_0xb984('0x2c')]>0x0){return _0xf6d925[_0xb984('0x17')](0x190)[_0xb984('0x2d')](_0x1fd248);}var _0x4837d5=_0x52f872[_0xb984('0x2b')][_0xb984('0x2e')];var _0x383c87=_0x52f872[_0xb984('0x2b')][_0xb984('0x26')];return getAgent(_0x4837d5)[_0xb984('0x1b')](function(_0xc257ee){logger[_0xb984('0xf')](_0xb984('0x32'),_0xc257ee[_0xb984('0x16')]);emit(util['format'](_0xb984('0x34'),_0xc257ee[_0xb984('0x16')]),_0xb984('0x36'),{'sessionId':_0x383c87});return _0xf6d925[_0xb984('0x17')](0xc8)[_0xb984('0x2d')]({'error':![],'message':_0xb984('0x37')});})[_0xb984('0x1f')](handleError(_0xf6d925));};exports[_0xb984('0x38')]=function(_0x52181e,_0x5d4be9){logger[_0xb984('0xf')]('answer\x20fired:',_0x52181e[_0xb984('0x2b')]);var _0x2326c6=answerValidation[_0xb984('0x9')](_0x52181e[_0xb984('0x2b')]);if(_0x2326c6['length']>0x0){return _0x5d4be9[_0xb984('0x17')](0x190)[_0xb984('0x2d')](_0x2326c6);}var _0x5d5e85=_0x52181e[_0xb984('0x2b')][_0xb984('0x2e')];var _0x38a025=_0x52181e[_0xb984('0x2b')][_0xb984('0x26')];return getAgent(_0x5d5e85)[_0xb984('0x1b')](function(_0x2f2f02){logger['info'](_0xb984('0x32'),_0x2f2f02[_0xb984('0x16')]);emit(util['format']('user:%s',_0x2f2f02[_0xb984('0x16')]),_0xb984('0x39'),{'sessionId':_0x38a025});return _0x5d4be9[_0xb984('0x17')](0xc8)[_0xb984('0x2d')]({'error':![],'message':_0xb984('0x3a')});})['catch'](handleError(_0x5d4be9));};exports[_0xb984('0x3b')]=function(_0x40666f,_0x424f65){logger[_0xb984('0xf')](_0xb984('0x3c'),_0x40666f[_0xb984('0x2b')]);var _0x2097e6=holdValidation[_0xb984('0x9')](_0x40666f[_0xb984('0x2b')]);if(_0x2097e6[_0xb984('0x2c')]>0x0){return _0x424f65['status'](0x190)[_0xb984('0x2d')](_0x2097e6);}var _0x71880c=_0x40666f['body'][_0xb984('0x2e')];var _0x436597=_0x40666f[_0xb984('0x2b')][_0xb984('0x26')];return getAgent(_0x71880c)[_0xb984('0x1b')](function(_0x49dde7){logger[_0xb984('0xf')](_0xb984('0x32'),_0x49dde7[_0xb984('0x16')]);emit(util[_0xb984('0x33')]('user:%s',_0x49dde7[_0xb984('0x16')]),_0xb984('0x3d'),{'sessionId':_0x436597});return _0x424f65[_0xb984('0x17')](0xc8)[_0xb984('0x2d')]({'error':![],'message':_0xb984('0x3e')});})[_0xb984('0x1f')](handleError(_0x424f65));};exports[_0xb984('0x3f')]=function(_0x445f90,_0xc6389d){logger['info'](_0xb984('0x40'),_0x445f90[_0xb984('0x2b')]);var _0x3a7cbb=unholdValidation['validate'](_0x445f90[_0xb984('0x2b')]);if(_0x3a7cbb[_0xb984('0x2c')]>0x0){return _0xc6389d['status'](0x190)[_0xb984('0x2d')](_0x3a7cbb);}var _0x481eac=_0x445f90[_0xb984('0x2b')][_0xb984('0x2e')];var _0x5a1a34=_0x445f90[_0xb984('0x2b')][_0xb984('0x26')];return getAgent(_0x481eac)[_0xb984('0x1b')](function(_0x3ddeb5){logger[_0xb984('0xf')](_0xb984('0x32'),_0x3ddeb5['name']);emit(util[_0xb984('0x33')]('user:%s',_0x3ddeb5[_0xb984('0x16')]),_0xb984('0x41'),{'sessionId':_0x5a1a34});return _0xc6389d[_0xb984('0x17')](0xc8)['json']({'error':![],'message':'unhold\x20executed!'});})[_0xb984('0x1f')](handleError(_0xc6389d));};exports[_0xb984('0x42')]=function(_0x56ad15,_0x493a8b){logger[_0xb984('0xf')](_0xb984('0x43'),_0x493a8b[_0xb984('0x2b')]);var _0x3daaa0=callsValidation[_0xb984('0x9')](_0x56ad15[_0xb984('0x2b')]);if(_0x3daaa0['length']>0x0){return _0x493a8b['status'](0x190)[_0xb984('0x2d')](_0x3daaa0);}var _0x22ddf=_0x56ad15['body'][_0xb984('0x2e')];var _0x159835=respondWithRpcPromise(_0xb984('0x23'));var _0x317cd8=getAgent(_0x22ddf);return Promise['all']([_0x159835,_0x317cd8])['then'](function(_0x226db2){var _0x36a9eb=_0x226db2[0x0];var _0x2fc1f7=_0x226db2[0x1];var _0x29c79d=_[_0xb984('0x44')](_0x36a9eb[_0xb984('0x45')],function(_0x49ecfd){return _0x49ecfd[_0xb984('0x25')]==_0x2fc1f7['id'];});return _0x493a8b[_0xb984('0x17')](0xc8)[_0xb984('0x2d')]({'count':_0x29c79d[_0xb984('0x2c')],'rows':_0x29c79d});})[_0xb984('0x1f')](handleError(_0x493a8b));};exports[_0xb984('0x46')]=function(_0x575503,_0x55852d){logger['info'](_0xb984('0x47'),_0x575503[_0xb984('0x2b')]);var _0x36ca94=conferenceValidation[_0xb984('0x9')](_0x575503[_0xb984('0x2b')]);if(_0x36ca94['length']>0x0){return _0x55852d[_0xb984('0x17')](0x190)[_0xb984('0x2d')](_0x36ca94);}var _0x356442=_0x575503['body'][_0xb984('0x2e')];return getAgent(_0x356442)[_0xb984('0x1b')](function(_0x529e28){logger['info'](_0xb984('0x32'),_0x529e28['name']);emit(util['format'](_0xb984('0x34'),_0x529e28['name']),_0xb984('0x48'));return _0x55852d[_0xb984('0x17')](0xc8)[_0xb984('0x2d')]({'error':![],'message':_0xb984('0x49')});})[_0xb984('0x1f')](handleError(_0x55852d));};exports[_0xb984('0x4a')]=function(_0x145052,_0x1a81c3){logger[_0xb984('0xf')](_0xb984('0x4b'),_0x145052[_0xb984('0x2b')]);var _0x1d9213=transferValidation['validate'](_0x145052[_0xb984('0x2b')]);if(_0x1d9213[_0xb984('0x2c')]>0x0){return _0x1a81c3[_0xb984('0x17')](0x190)['json'](_0x1d9213);}var _0x54abb4=_0x145052[_0xb984('0x2b')][_0xb984('0x2e')];var _0x74fc95=_0x145052['body'][_0xb984('0x26')];var _0x35132b=_0x145052[_0xb984('0x2b')][_0xb984('0x4c')];return getAgent(_0x54abb4)[_0xb984('0x1b')](function(_0x1793e2){logger[_0xb984('0xf')](_0xb984('0x32'),_0x1793e2[_0xb984('0x16')]);emit(util[_0xb984('0x33')](_0xb984('0x34'),_0x1793e2[_0xb984('0x16')]),_0xb984('0x4d'),{'sessionId':_0x74fc95,'transferNumber':_0x35132b});return _0x1a81c3[_0xb984('0x17')](0xc8)['json']({'error':![],'message':_0xb984('0x4e')});})['catch'](handleError(_0x1a81c3));};
\ No newline at end of file
index 84d15d3..da62a53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['removeAgents','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/notify','/:id/send','send','/:id','update','delete','destroy','removeDispositions','removeAnswers'];(function(_0x349db8,_0xaef06e){var _0x98d89e=function(_0x52f049){while(--_0x52f049){_0x349db8['push'](_0x349db8['shift']());}};_0x98d89e(++_0xaef06e);}(_0x7096,0x10c));var _0x6709=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x7096[_0x2b5eae];return _0x5f3ac9;};'use strict';var multer=require('multer');var util=require(_0x6709('0x0'));var path=require('path');var timeout=require(_0x6709('0x1'));var express=require('express');var router=express[_0x6709('0x2')]();var fs_extra=require(_0x6709('0x3'));var auth=require(_0x6709('0x4'));var interaction=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var controller=require(_0x6709('0x7'));router[_0x6709('0x8')]('/',auth[_0x6709('0x9')](),controller[_0x6709('0xa')]);router[_0x6709('0x8')](_0x6709('0xb'),auth[_0x6709('0x9')](),controller[_0x6709('0xc')]);router['get']('/:id',auth[_0x6709('0x9')](),controller[_0x6709('0xd')]);router[_0x6709('0x8')](_0x6709('0xe'),auth[_0x6709('0x9')](),controller[_0x6709('0xf')]);router['get']('/:id/canned_answers',auth[_0x6709('0x9')](),controller[_0x6709('0x10')]);router[_0x6709('0x8')](_0x6709('0x11'),auth[_0x6709('0x9')](),controller[_0x6709('0x12')]);router[_0x6709('0x8')](_0x6709('0x13'),auth['isAuthenticated'](),controller[_0x6709('0x14')]);router[_0x6709('0x15')]('/',auth[_0x6709('0x9')](),controller[_0x6709('0x16')]);router['post'](_0x6709('0xe'),auth['isAuthenticated'](),controller[_0x6709('0x17')]);router['post'](_0x6709('0x18'),auth[_0x6709('0x9')](),controller[_0x6709('0x19')]);router[_0x6709('0x15')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x6709('0x15')](_0x6709('0x13'),auth['isAuthenticated'](),controller[_0x6709('0x1a')]);router[_0x6709('0x15')](_0x6709('0x1b'),controller['notify']);router[_0x6709('0x15')](_0x6709('0x1c'),auth[_0x6709('0x9')](),controller[_0x6709('0x1d')]);router['put'](_0x6709('0x1e'),auth[_0x6709('0x9')](),controller[_0x6709('0x1f')]);router[_0x6709('0x20')](_0x6709('0x1e'),auth[_0x6709('0x9')](),controller[_0x6709('0x21')]);router[_0x6709('0x20')](_0x6709('0xe'),auth[_0x6709('0x9')](),controller[_0x6709('0x22')]);router[_0x6709('0x20')]('/:id/canned_answers',auth[_0x6709('0x9')](),controller[_0x6709('0x23')]);router[_0x6709('0x20')]('/:id/users',auth[_0x6709('0x9')](),controller[_0x6709('0x24')]);module[_0x6709('0x25')]=router;
\ No newline at end of file
+var _0x93e9=['/describe','/:id','show','/:id/dispositions','/:id/canned_answers','/:id/applications','getApplications','post','create','addDisposition','addAnswer','/:id/users','addApplications','/:id/notify','/:id/send','send','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index'];(function(_0x137d1d,_0x35c663){var _0x485108=function(_0x108a2a){while(--_0x108a2a){_0x137d1d['push'](_0x137d1d['shift']());}};_0x485108(++_0x35c663);}(_0x93e9,0xcc));var _0x993e=function(_0x46bd1c,_0x5bbaf9){_0x46bd1c=_0x46bd1c-0x0;var _0x33da8c=_0x93e9[_0x46bd1c];return _0x33da8c;};'use strict';var multer=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var path=require(_0x993e('0x2'));var timeout=require(_0x993e('0x3'));var express=require(_0x993e('0x4'));var router=express[_0x993e('0x5')]();var fs_extra=require(_0x993e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x993e('0x7'));var controller=require(_0x993e('0x8'));router[_0x993e('0x9')]('/',auth[_0x993e('0xa')](),controller[_0x993e('0xb')]);router[_0x993e('0x9')](_0x993e('0xc'),auth[_0x993e('0xa')](),controller['describe']);router[_0x993e('0x9')](_0x993e('0xd'),auth[_0x993e('0xa')](),controller[_0x993e('0xe')]);router[_0x993e('0x9')](_0x993e('0xf'),auth[_0x993e('0xa')](),controller['getDispositions']);router[_0x993e('0x9')](_0x993e('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x993e('0x9')]('/:id/users',auth[_0x993e('0xa')](),controller['getAgents']);router['get'](_0x993e('0x11'),auth[_0x993e('0xa')](),controller[_0x993e('0x12')]);router[_0x993e('0x13')]('/',auth[_0x993e('0xa')](),controller[_0x993e('0x14')]);router[_0x993e('0x13')](_0x993e('0xf'),auth[_0x993e('0xa')](),controller[_0x993e('0x15')]);router[_0x993e('0x13')](_0x993e('0x10'),auth[_0x993e('0xa')](),controller[_0x993e('0x16')]);router[_0x993e('0x13')](_0x993e('0x17'),auth[_0x993e('0xa')](),controller['addAgents']);router[_0x993e('0x13')](_0x993e('0x11'),auth[_0x993e('0xa')](),controller[_0x993e('0x18')]);router[_0x993e('0x13')](_0x993e('0x19'),controller['notify']);router[_0x993e('0x13')](_0x993e('0x1a'),auth[_0x993e('0xa')](),controller[_0x993e('0x1b')]);router[_0x993e('0x1c')](_0x993e('0xd'),auth[_0x993e('0xa')](),controller[_0x993e('0x1d')]);router['delete'](_0x993e('0xd'),auth['isAuthenticated'](),controller[_0x993e('0x1e')]);router[_0x993e('0x1f')](_0x993e('0xf'),auth['isAuthenticated'](),controller[_0x993e('0x20')]);router[_0x993e('0x1f')](_0x993e('0x10'),auth[_0x993e('0xa')](),controller[_0x993e('0x21')]);router[_0x993e('0x1f')](_0x993e('0x17'),auth[_0x993e('0xa')](),controller[_0x993e('0x22')]);module[_0x993e('0x23')]=router;
\ No newline at end of file
index e0330e1..03242a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3544=['name','generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING'];(function(_0x9a8878,_0x2ef1b8){var _0x5f36a8=function(_0x5b6079){while(--_0x5b6079){_0x9a8878['push'](_0x9a8878['shift']());}};_0x5f36a8(++_0x2ef1b8);}(_0x3544,0x19e));var _0x4354=function(_0x2dd390,_0x1bc894){_0x2dd390=_0x2dd390-0x0;var _0x3afe47=_0x3544[_0x2dd390];return _0x3afe47;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x4354('0x0')]={'name':{'type':Sequelize[_0x4354('0x1')],'unique':_0x4354('0x2'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x4354('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0x4354('0x1')],'defaultValue':function(){return rs[_0x4354('0x3')]();}},'phone':{'type':Sequelize[_0x4354('0x1')]},'type':{'type':Sequelize[_0x4354('0x4')](_0x4354('0x5'),_0x4354('0x6'))},'accountSid':{'type':Sequelize[_0x4354('0x1')]},'baseUrl':{'type':Sequelize[_0x4354('0x1')]},'authToken':{'type':Sequelize[_0x4354('0x1')]},'notificationTemplate':{'type':Sequelize[_0x4354('0x7')],'defaultValue':function(){return _0x4354('0x8');}},'notificationSound':{'type':Sequelize[_0x4354('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x4354('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4354('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4354('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4354('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4354('0xa')],'comment':_0x4354('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x4354('0x9')],'defaultValue':![],'comment':_0x4354('0xc'),'set':function(_0x468554){if(!_0x468554){this[_0x4354('0xd')](_0x4354('0xe'),null);}this[_0x4354('0xd')](_0x4354('0xf'),_0x468554);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfe89=['STRING','name','generate','ENUM','twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xfe89,0x1c1));var _0x9fe8=function(_0x4a0567,_0x20a01c){_0x4a0567=_0x4a0567-0x0;var _0x1ade62=_0xfe89[_0x4a0567];return _0x1ade62;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x9fe8('0x0'));module['exports']={'name':{'type':Sequelize[_0x9fe8('0x1')],'unique':_0x9fe8('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x9fe8('0x1')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x9fe8('0x1')],'defaultValue':function(){return rs[_0x9fe8('0x3')]();}},'phone':{'type':Sequelize[_0x9fe8('0x1')]},'type':{'type':Sequelize[_0x9fe8('0x4')](_0x9fe8('0x5'),_0x9fe8('0x6'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x9fe8('0x1')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x9fe8('0x7');}},'notificationSound':{'type':Sequelize[_0x9fe8('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x9fe8('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9fe8('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9fe8('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9fe8('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9fe8('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9fe8('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x9fe8('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x9fe8('0x8')],'defaultValue':![],'comment':_0x9fe8('0xb'),'set':function(_0x3a6123){if(!_0x3a6123){this[_0x9fe8('0xc')](_0x9fe8('0xd'),null);}this[_0x9fe8('0xc')](_0x9fe8('0xe'),_0x3a6123);}},'description':{'type':Sequelize[_0x9fe8('0x1')]}};
\ No newline at end of file
index 426c2ae..5c00386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcba=['destroy','sendStatus','stack','map','WhatsappAccount','fieldName','type','key','name','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','include','findAll','rows','show','Pause','mandatoryDispositionPause','keys','rawAttributes','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','params','describe','addDisposition','Disposition','includeAll','removeDispositions','ids','addAnswer','WhatsappAccountId','CannedAnswer','getAnswers','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','findOne','User','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','priority','finally','send','json','getApplications','notify','account','sinch','statuses','state','WhatsappMessage','message_id','orderBy','Applications','asc','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','notifications','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','DESC','list','contact','WhatsappInteraction','interaction','applications','push','close','created','AttachmentId','UserId','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','user','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappAccount,\x20%s,\x20%s','result','catch','end','status','offset','undefined','limit','count','set','Content-Range','reject','save','update','get','WhatsappAccounts'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbcba,0x88));var _0xabcb=function(_0x181c1f,_0x307953){_0x181c1f=_0x181c1f-0x0;var _0x5010a7=_0xbcba[_0x181c1f];return _0x5010a7;};'use strict';var emlformat=require(_0xabcb('0x0'));var rimraf=require(_0xabcb('0x1'));var zipdir=require(_0xabcb('0x2'));var jsonpatch=require(_0xabcb('0x3'));var rp=require(_0xabcb('0x4'));var moment=require(_0xabcb('0x5'));var BPromise=require(_0xabcb('0x6'));var Mustache=require(_0xabcb('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xabcb('0x8'));var ejs=require(_0xabcb('0x9'));var fs=require('fs');var fs_extra=require(_0xabcb('0xa'));var _=require(_0xabcb('0xb'));var squel=require(_0xabcb('0xc'));var crypto=require(_0xabcb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xabcb('0xe'));var toCsv=require(_0xabcb('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xabcb('0xf'));var hardwareService=require(_0xabcb('0x10'));var logger=require('../../config/logger')(_0xabcb('0x11'));var utils=require(_0xabcb('0x12'));var config=require(_0xabcb('0x13'));var licenseUtil=require(_0xabcb('0x14'));var db=require(_0xabcb('0x15'))['db'];config[_0xabcb('0x16')]=_[_0xabcb('0x17')](config[_0xabcb('0x16')],{'host':_0xabcb('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappAccount.socket')[_0xabcb('0x19')](socket);var jayson=require(_0xabcb('0x1a'));var client=jayson[_0xabcb('0x1b')][_0xabcb('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x357df3,_0x2e4f7b,_0x6ed245,_0x14cf95){return new BPromise(function(_0x14d224,_0x132afd){var _0xf9c63a=_0x14cf95||client;return _0xf9c63a['request'](_0x357df3,_0x6ed245)[_0xabcb('0x1d')](function(_0x2e6a98){logger[_0xabcb('0x1e')]('WhatsappAccount,\x20%s,\x20%s',_0x2e4f7b,_0xabcb('0x1f'));logger[_0xabcb('0x20')](_0xabcb('0x21'),_0x2e4f7b,_0xabcb('0x1f'),JSON[_0xabcb('0x22')](_0x2e6a98));if(_0x2e6a98[_0xabcb('0x23')]){if(_0x2e6a98['error'][_0xabcb('0x24')]===0x1f4){logger[_0xabcb('0x23')]('WhatsappAccount,\x20%s,\x20%s',_0x2e4f7b,_0x2e6a98[_0xabcb('0x23')][_0xabcb('0x25')]);return _0x132afd(_0x2e6a98[_0xabcb('0x23')][_0xabcb('0x25')]);}logger['error'](_0xabcb('0x26'),_0x2e4f7b,_0x2e6a98[_0xabcb('0x23')][_0xabcb('0x25')]);return _0x14d224(_0x2e6a98[_0xabcb('0x23')][_0xabcb('0x25')]);}else{logger['info'](_0xabcb('0x26'),_0x2e4f7b,_0xabcb('0x1f'));_0x14d224(_0x2e6a98[_0xabcb('0x27')][_0xabcb('0x25')]);}})[_0xabcb('0x28')](function(_0x134811){logger[_0xabcb('0x23')]('WhatsappAccount,\x20%s,\x20%s',_0x2e4f7b,_0x134811);_0x132afd(_0x134811);});});}function respondWithStatusCode(_0x4537b4,_0x209452){_0x209452=_0x209452||0xcc;return function(_0x218eab){if(_0x218eab){return _0x4537b4['sendStatus'](_0x209452);}return _0x4537b4['status'](_0x209452)[_0xabcb('0x29')]();};}function respondWithResult(_0x29e42a,_0x53603f){_0x53603f=_0x53603f||0xc8;return function(_0x522af2){if(_0x522af2){return _0x29e42a[_0xabcb('0x2a')](_0x53603f)['json'](_0x522af2);}};}function respondWithFilteredResult(_0x129097,_0x32919b){return function(_0x516787){if(_0x516787){var _0x3e6c44=typeof _0x32919b[_0xabcb('0x2b')]===_0xabcb('0x2c')&&typeof _0x32919b[_0xabcb('0x2d')]===_0xabcb('0x2c');var _0x249a05=_0x516787['count'];var _0x2ffca5=_0x3e6c44?0x0:_0x32919b[_0xabcb('0x2b')];var _0x5d1a0c=_0x3e6c44?_0x516787[_0xabcb('0x2e')]:_0x32919b[_0xabcb('0x2b')]+_0x32919b[_0xabcb('0x2d')];var _0x20596d;if(_0x5d1a0c>=_0x249a05){_0x5d1a0c=_0x249a05;_0x20596d=0xc8;}else{_0x20596d=0xce;}_0x129097[_0xabcb('0x2a')](_0x20596d);return _0x129097[_0xabcb('0x2f')](_0xabcb('0x30'),_0x2ffca5+'-'+_0x5d1a0c+'/'+_0x249a05)['json'](_0x516787);}return null;};}function patchUpdates(_0x28105a){return function(_0x5ea728){try{jsonpatch['apply'](_0x5ea728,_0x28105a,!![]);}catch(_0x583a04){return BPromise[_0xabcb('0x31')](_0x583a04);}return _0x5ea728[_0xabcb('0x32')]();};}function saveUpdates(_0xa1d419,_0x24abe8){return function(_0x5de991){if(_0x5de991){return _0x5de991[_0xabcb('0x33')](_0xa1d419)[_0xabcb('0x1d')](function(_0x4a0bc1){return _0x4a0bc1;});}return null;};}function removeEntity(_0x15df4c,_0xe3eaec){return function(_0x1bdb3f){if(_0x1bdb3f){return _0x1bdb3f['destroy']()['then'](function(){var _0xa02caa=_0x1bdb3f[_0xabcb('0x34')]({'plain':!![]});var _0x2e86bf=_0xabcb('0x35');return db['UserProfileResource'][_0xabcb('0x36')]({'where':{'type':_0x2e86bf,'resourceId':_0xa02caa['id']}})[_0xabcb('0x1d')](function(){return _0x1bdb3f;});})[_0xabcb('0x1d')](function(){_0x15df4c[_0xabcb('0x2a')](0xcc)[_0xabcb('0x29')]();});}};}function handleEntityNotFound(_0x182e78,_0x377a20){return function(_0x2a72a4){if(!_0x2a72a4){_0x182e78[_0xabcb('0x37')](0x194);}return _0x2a72a4;};}function handleError(_0x3e19b7,_0x4bea5e){_0x4bea5e=_0x4bea5e||0x1f4;return function(_0x1f80d8){logger[_0xabcb('0x23')](_0x1f80d8[_0xabcb('0x38')]);if(_0x1f80d8['name']){delete _0x1f80d8['name'];}_0x3e19b7['status'](_0x4bea5e)['send'](_0x1f80d8);};}exports['index']=function(_0x2641ef,_0x3c9a59){var _0x2a8db8={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x442854={},_0x3a283f={'count':0x0,'rows':[]};var _0x3f5e2e=_[_0xabcb('0x39')](db[_0xabcb('0x3a')]['rawAttributes'],function(_0x3e2796){return{'name':_0x3e2796[_0xabcb('0x3b')],'type':_0x3e2796[_0xabcb('0x3c')][_0xabcb('0x3d')]};});_0x442854['model']=_[_0xabcb('0x39')](_0x3f5e2e,_0xabcb('0x3e'));_0x442854[_0xabcb('0x3f')]=_['keys'](_0x2641ef[_0xabcb('0x3f')]);_0x442854[_0xabcb('0x40')]=_[_0xabcb('0x41')](_0x442854[_0xabcb('0x42')],_0x442854[_0xabcb('0x3f')]);_0x2a8db8[_0xabcb('0x43')]=_[_0xabcb('0x41')](_0x442854[_0xabcb('0x42')],qs[_0xabcb('0x44')](_0x2641ef[_0xabcb('0x3f')][_0xabcb('0x44')]));_0x2a8db8[_0xabcb('0x43')]=_0x2a8db8[_0xabcb('0x43')][_0xabcb('0x45')]?_0x2a8db8[_0xabcb('0x43')]:_0x442854['model'];if(!_0x2641ef[_0xabcb('0x3f')][_0xabcb('0x46')](_0xabcb('0x47'))){_0x2a8db8[_0xabcb('0x2d')]=qs[_0xabcb('0x2d')](_0x2641ef[_0xabcb('0x3f')]['limit']);_0x2a8db8[_0xabcb('0x2b')]=qs['offset'](_0x2641ef[_0xabcb('0x3f')][_0xabcb('0x2b')]);}_0x2a8db8[_0xabcb('0x48')]=qs[_0xabcb('0x49')](_0x2641ef[_0xabcb('0x3f')]['sort']);_0x2a8db8[_0xabcb('0x4a')]=qs[_0xabcb('0x40')](_[_0xabcb('0x4b')](_0x2641ef['query'],_0x442854[_0xabcb('0x40')]),_0x3f5e2e);if(_0x2641ef[_0xabcb('0x3f')][_0xabcb('0x4c')]){_0x2a8db8[_0xabcb('0x4a')]=_[_0xabcb('0x4d')](_0x2a8db8[_0xabcb('0x4a')],{'$or':_[_0xabcb('0x39')](_0x3f5e2e,function(_0x2a642f){if(_0x2a642f['type']!=='VIRTUAL'){var _0x2ac85d={};_0x2ac85d[_0x2a642f[_0xabcb('0x3e')]]={'$like':'%'+_0x2641ef[_0xabcb('0x3f')][_0xabcb('0x4c')]+'%'};return _0x2ac85d;}})});}_0x2a8db8=_['merge']({},_0x2a8db8,_0x2641ef['options']);var _0x483461={'where':_0x2a8db8[_0xabcb('0x4a')]};return db[_0xabcb('0x3a')][_0xabcb('0x2e')](_0x483461)[_0xabcb('0x1d')](function(_0x19c278){_0x3a283f[_0xabcb('0x2e')]=_0x19c278;if(_0x2641ef['query']['includeAll']){_0x2a8db8[_0xabcb('0x4e')]=[{'all':!![]}];}return db[_0xabcb('0x3a')][_0xabcb('0x4f')](_0x2a8db8);})[_0xabcb('0x1d')](function(_0x45160b){_0x3a283f[_0xabcb('0x50')]=_0x45160b;return _0x3a283f;})[_0xabcb('0x1d')](respondWithFilteredResult(_0x3c9a59,_0x2a8db8))[_0xabcb('0x28')](handleError(_0x3c9a59,null));};exports[_0xabcb('0x51')]=function(_0x3fd31b,_0x8060a1){var _0x4abf96={'raw':![],'where':{'id':_0x3fd31b['params']['id']},'include':[{'model':db[_0xabcb('0x52')],'as':_0xabcb('0x53')}]},_0x5776c6={};_0x5776c6['model']=_[_0xabcb('0x54')](db[_0xabcb('0x3a')][_0xabcb('0x55')]);_0x5776c6['query']=_['keys'](_0x3fd31b['query']);_0x5776c6['filters']=_[_0xabcb('0x41')](_0x5776c6[_0xabcb('0x42')],_0x5776c6['query']);_0x4abf96[_0xabcb('0x43')]=_[_0xabcb('0x41')](_0x5776c6['model'],qs[_0xabcb('0x44')](_0x3fd31b[_0xabcb('0x3f')][_0xabcb('0x44')]));_0x4abf96['attributes']=_0x4abf96[_0xabcb('0x43')]['length']?_0x4abf96[_0xabcb('0x43')]:_0x5776c6[_0xabcb('0x42')];if(_0x3fd31b[_0xabcb('0x3f')]['includeAll']){_0x4abf96[_0xabcb('0x4e')]=[{'all':!![]}];}_0x4abf96=_[_0xabcb('0x4d')]({},_0x4abf96,_0x3fd31b[_0xabcb('0x56')]);return db[_0xabcb('0x3a')][_0xabcb('0x57')](_0x4abf96)[_0xabcb('0x1d')](handleEntityNotFound(_0x8060a1,null))['then'](respondWithResult(_0x8060a1,null))[_0xabcb('0x28')](handleError(_0x8060a1,null));};exports[_0xabcb('0x58')]=function(_0x2227e4,_0x84534){return db['WhatsappAccount']['create'](_0x2227e4[_0xabcb('0x59')],{})[_0xabcb('0x1d')](function(_0x1c08d8){var _0x545af4=_0x2227e4['user']['get']({'plain':!![]});if(!_0x545af4)throw new Error(_0xabcb('0x5a'));if(_0x545af4[_0xabcb('0x5b')]==='user'){var _0x4fc068=_0x1c08d8['get']({'plain':!![]});var _0x298ea4='WhatsappAccounts';return db[_0xabcb('0x5c')][_0xabcb('0x57')]({'where':{'name':_0x298ea4,'userProfileId':_0x545af4[_0xabcb('0x5d')]},'raw':!![]})[_0xabcb('0x1d')](function(_0x5ece8b){if(_0x5ece8b&&_0x5ece8b[_0xabcb('0x5e')]===0x0){return db[_0xabcb('0x5f')][_0xabcb('0x58')]({'name':_0x4fc068[_0xabcb('0x3e')],'resourceId':_0x4fc068['id'],'type':_0x5ece8b[_0xabcb('0x3e')],'sectionId':_0x5ece8b['id']},{})[_0xabcb('0x1d')](function(){return _0x1c08d8;});}else{return _0x1c08d8;}})[_0xabcb('0x28')](function(_0x22d904){logger[_0xabcb('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x22d904);throw _0x22d904;});}return _0x1c08d8;})[_0xabcb('0x1d')](respondWithResult(_0x84534,0xc9))[_0xabcb('0x28')](handleError(_0x84534,null));};exports[_0xabcb('0x33')]=function(_0x148c0d,_0x408656){if(_0x148c0d[_0xabcb('0x59')]['id']){delete _0x148c0d[_0xabcb('0x59')]['id'];}return db[_0xabcb('0x3a')][_0xabcb('0x57')]({'where':{'id':_0x148c0d[_0xabcb('0x60')]['id']},'include':[{'model':db[_0xabcb('0x52')],'as':_0xabcb('0x53')}]})['then'](handleEntityNotFound(_0x408656,null))['then'](saveUpdates(_0x148c0d[_0xabcb('0x59')],null))['then'](respondWithResult(_0x408656,null))[_0xabcb('0x28')](handleError(_0x408656,null));};exports[_0xabcb('0x36')]=function(_0x10d6d2,_0x40ec34){return db[_0xabcb('0x3a')][_0xabcb('0x57')]({'where':{'id':_0x10d6d2['params']['id']}})[_0xabcb('0x1d')](handleEntityNotFound(_0x40ec34,null))[_0xabcb('0x1d')](removeEntity(_0x40ec34,null))[_0xabcb('0x28')](handleError(_0x40ec34,null));};exports[_0xabcb('0x61')]=function(_0x4580eb,_0x3532cf){return db[_0xabcb('0x3a')][_0xabcb('0x61')]()['then'](respondWithResult(_0x3532cf,null))[_0xabcb('0x28')](handleError(_0x3532cf,null));};exports[_0xabcb('0x62')]=function(_0x5555dc,_0x2e5615,_0x39ef4b){if(_0x5555dc['body']['id']){delete _0x5555dc[_0xabcb('0x59')]['id'];}return db[_0xabcb('0x3a')]['find']({'where':{'id':_0x5555dc['params']['id']}})['then'](handleEntityNotFound(_0x2e5615,null))[_0xabcb('0x1d')](function(_0x401355){if(_0x401355){_0x5555dc['body']['WhatsappAccountId']=_0x401355['id'];return db[_0xabcb('0x63')][_0xabcb('0x58')](_0x5555dc[_0xabcb('0x59')]);}})[_0xabcb('0x1d')](respondWithResult(_0x2e5615,null))[_0xabcb('0x28')](handleError(_0x2e5615,null));};exports['getDispositions']=function(_0x1d26c1,_0x5311d5,_0x150d15){var _0x107d9a={'raw':![],'where':{}};var _0x3372a0={};var _0x46826b={'count':0x0,'rows':[]};return db[_0xabcb('0x3a')]['findOne']({'where':{'id':_0x1d26c1[_0xabcb('0x60')]['id']}})[_0xabcb('0x1d')](handleEntityNotFound(_0x5311d5,null))[_0xabcb('0x1d')](function(_0x153d58){if(_0x153d58){_0x3372a0[_0xabcb('0x42')]=_['keys'](db[_0xabcb('0x63')][_0xabcb('0x55')]);_0x3372a0['query']=_[_0xabcb('0x54')](_0x1d26c1['query']);_0x3372a0['filters']=_['intersection'](_0x3372a0[_0xabcb('0x42')],_0x3372a0[_0xabcb('0x3f')]);_0x107d9a['attributes']=_[_0xabcb('0x41')](_0x3372a0[_0xabcb('0x42')],qs[_0xabcb('0x44')](_0x1d26c1[_0xabcb('0x3f')][_0xabcb('0x44')]));_0x107d9a[_0xabcb('0x43')]=_0x107d9a[_0xabcb('0x43')]['length']?_0x107d9a[_0xabcb('0x43')]:_0x3372a0[_0xabcb('0x42')];if(!_0x1d26c1[_0xabcb('0x3f')][_0xabcb('0x46')]('nolimit')){_0x107d9a[_0xabcb('0x2d')]=qs[_0xabcb('0x2d')](_0x1d26c1[_0xabcb('0x3f')][_0xabcb('0x2d')]);_0x107d9a[_0xabcb('0x2b')]=qs['offset'](_0x1d26c1['query'][_0xabcb('0x2b')]);}_0x107d9a[_0xabcb('0x48')]=qs[_0xabcb('0x49')](_0x1d26c1[_0xabcb('0x3f')][_0xabcb('0x49')]);_0x107d9a['where']=qs['filters'](_[_0xabcb('0x4b')](_0x1d26c1[_0xabcb('0x3f')],_0x3372a0['filters']));_0x107d9a[_0xabcb('0x4a')]['WhatsappAccountId']=_0x153d58['id'];if(_0x1d26c1[_0xabcb('0x3f')][_0xabcb('0x4c')]){_0x107d9a[_0xabcb('0x4a')]=_[_0xabcb('0x4d')](_0x107d9a[_0xabcb('0x4a')],{'$or':_[_0xabcb('0x39')](_0x107d9a[_0xabcb('0x43')],function(_0x59cf16){var _0x207ddf={};_0x207ddf[_0x59cf16]={'$like':'%'+_0x1d26c1[_0xabcb('0x3f')][_0xabcb('0x4c')]+'%'};return _0x207ddf;})});}_0x107d9a=_['merge']({},_0x107d9a,_0x1d26c1['options']);return db['Disposition']['count']({'where':_0x107d9a['where']})['then'](function(_0x159fb7){_0x46826b['count']=_0x159fb7;if(_0x1d26c1['query'][_0xabcb('0x64')]){_0x107d9a['include']=[{'all':!![]}];}return db[_0xabcb('0x63')]['findAll'](_0x107d9a);})['then'](function(_0x5373ef){_0x46826b['rows']=_0x5373ef;return _0x46826b;});}})[_0xabcb('0x1d')](respondWithFilteredResult(_0x5311d5,_0x107d9a))[_0xabcb('0x28')](handleError(_0x5311d5,null));};exports[_0xabcb('0x65')]=function(_0x505828,_0x4b9ecc,_0x54c68e){return db['WhatsappAccount'][_0xabcb('0x57')]({'where':{'id':_0x505828[_0xabcb('0x60')]['id']}})['then'](handleEntityNotFound(_0x4b9ecc,null))[_0xabcb('0x1d')](function(_0x559df1){if(_0x559df1){return _0x559df1['removeDispositions'](_0x505828[_0xabcb('0x3f')][_0xabcb('0x66')]);}})[_0xabcb('0x1d')](respondWithStatusCode(_0x4b9ecc,null))[_0xabcb('0x28')](handleError(_0x4b9ecc,null));};exports[_0xabcb('0x67')]=function(_0x1128f8,_0x5565b4,_0x5eae0e){if(_0x1128f8[_0xabcb('0x59')]['id']){delete _0x1128f8['body']['id'];}return db[_0xabcb('0x3a')][_0xabcb('0x57')]({'where':{'id':_0x1128f8[_0xabcb('0x60')]['id']}})[_0xabcb('0x1d')](handleEntityNotFound(_0x5565b4,null))[_0xabcb('0x1d')](function(_0x2a28f9){if(_0x2a28f9){_0x1128f8[_0xabcb('0x59')][_0xabcb('0x68')]=_0x2a28f9['id'];return db[_0xabcb('0x69')][_0xabcb('0x58')](_0x1128f8['body']);}})[_0xabcb('0x1d')](respondWithResult(_0x5565b4,null))[_0xabcb('0x28')](handleError(_0x5565b4,null));};exports[_0xabcb('0x6a')]=function(_0x2fb7c5,_0x155749,_0x11c0ee){var _0x1d3b65={'raw':![],'where':{}};var _0x295a03={};var _0x94fc51={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x2fb7c5[_0xabcb('0x60')]['id']}})[_0xabcb('0x1d')](handleEntityNotFound(_0x155749,null))[_0xabcb('0x1d')](function(_0x38a599){if(_0x38a599){_0x295a03['model']=_[_0xabcb('0x54')](db[_0xabcb('0x69')][_0xabcb('0x55')]);_0x295a03[_0xabcb('0x3f')]=_[_0xabcb('0x54')](_0x2fb7c5['query']);_0x295a03[_0xabcb('0x40')]=_[_0xabcb('0x41')](_0x295a03[_0xabcb('0x42')],_0x295a03[_0xabcb('0x3f')]);_0x1d3b65[_0xabcb('0x43')]=_[_0xabcb('0x41')](_0x295a03[_0xabcb('0x42')],qs[_0xabcb('0x44')](_0x2fb7c5[_0xabcb('0x3f')][_0xabcb('0x44')]));_0x1d3b65['attributes']=_0x1d3b65[_0xabcb('0x43')]['length']?_0x1d3b65['attributes']:_0x295a03['model'];if(!_0x2fb7c5[_0xabcb('0x3f')][_0xabcb('0x46')](_0xabcb('0x47'))){_0x1d3b65['limit']=qs[_0xabcb('0x2d')](_0x2fb7c5[_0xabcb('0x3f')][_0xabcb('0x2d')]);_0x1d3b65['offset']=qs[_0xabcb('0x2b')](_0x2fb7c5['query'][_0xabcb('0x2b')]);}_0x1d3b65['order']=qs[_0xabcb('0x49')](_0x2fb7c5[_0xabcb('0x3f')]['sort']);_0x1d3b65[_0xabcb('0x4a')]=qs['filters'](_[_0xabcb('0x4b')](_0x2fb7c5[_0xabcb('0x3f')],_0x295a03[_0xabcb('0x40')]));_0x1d3b65[_0xabcb('0x4a')][_0xabcb('0x68')]=_0x38a599['id'];if(_0x2fb7c5[_0xabcb('0x3f')][_0xabcb('0x4c')]){_0x1d3b65[_0xabcb('0x4a')]=_['merge'](_0x1d3b65[_0xabcb('0x4a')],{'$or':_[_0xabcb('0x39')](_0x1d3b65['attributes'],function(_0x1cfa39){var _0x3bfd07={};_0x3bfd07[_0x1cfa39]={'$like':'%'+_0x2fb7c5[_0xabcb('0x3f')][_0xabcb('0x4c')]+'%'};return _0x3bfd07;})});}_0x1d3b65=_[_0xabcb('0x4d')]({},_0x1d3b65,_0x2fb7c5[_0xabcb('0x56')]);return db['CannedAnswer'][_0xabcb('0x2e')]({'where':_0x1d3b65[_0xabcb('0x4a')]})[_0xabcb('0x1d')](function(_0x5f0e66){_0x94fc51['count']=_0x5f0e66;if(_0x2fb7c5[_0xabcb('0x3f')][_0xabcb('0x64')]){_0x1d3b65[_0xabcb('0x4e')]=[{'all':!![]}];}return db[_0xabcb('0x69')][_0xabcb('0x4f')](_0x1d3b65);})[_0xabcb('0x1d')](function(_0xcec5e0){_0x94fc51[_0xabcb('0x50')]=_0xcec5e0;return _0x94fc51;});}})['then'](respondWithFilteredResult(_0x155749,_0x1d3b65))[_0xabcb('0x28')](handleError(_0x155749,null));};exports[_0xabcb('0x6b')]=function(_0x22c6ea,_0x57cf74,_0x470236){return db[_0xabcb('0x3a')][_0xabcb('0x57')]({'where':{'id':_0x22c6ea[_0xabcb('0x60')]['id']}})['then'](handleEntityNotFound(_0x57cf74,null))[_0xabcb('0x1d')](function(_0x4afce0){if(_0x4afce0){return _0x4afce0[_0xabcb('0x6b')](_0x22c6ea[_0xabcb('0x3f')][_0xabcb('0x66')]);}})['then'](respondWithStatusCode(_0x57cf74,null))[_0xabcb('0x28')](handleError(_0x57cf74,null));};exports[_0xabcb('0x6c')]=function(_0x4ba7db,_0x2c4530,_0xdaefa6){return db[_0xabcb('0x3a')][_0xabcb('0x57')]({'where':{'id':_0x4ba7db[_0xabcb('0x60')]['id']}})[_0xabcb('0x1d')](handleEntityNotFound(_0x2c4530,null))[_0xabcb('0x1d')](function(_0x456d7b){if(_0x456d7b){return _0x456d7b[_0xabcb('0x6c')](_0x4ba7db['body'][_0xabcb('0x66')],_['omit'](_0x4ba7db[_0xabcb('0x59')],['ids','id'])||{})[_0xabcb('0x6d')](function(_0x365f43){for(var _0x496fe0=0x0;_0x496fe0<_0x4ba7db['body'][_0xabcb('0x66')][_0xabcb('0x45')];_0x496fe0+=0x1){socket[_0xabcb('0x6e')](_0xabcb('0x6f'),{'UserId':Number(_0x4ba7db[_0xabcb('0x59')][_0xabcb('0x66')][_0x496fe0]),'WhatsappAccountId':Number(_0x4ba7db[_0xabcb('0x60')]['id'])});}return _0x365f43;});}})['then'](respondWithResult(_0x2c4530,null))['catch'](handleError(_0x2c4530,null));};exports[_0xabcb('0x70')]=function(_0x419c50,_0x24689a,_0x216828){return db['WhatsappAccount']['find']({'where':{'id':_0x419c50[_0xabcb('0x60')]['id']}})['then'](handleEntityNotFound(_0x24689a,null))['then'](function(_0x37a0d7){if(_0x37a0d7){return _0x37a0d7[_0xabcb('0x70')](_0x419c50[_0xabcb('0x3f')]['ids'])[_0xabcb('0x1d')](function(){if(_['isArray'](_0x419c50['query'][_0xabcb('0x66')])){for(var _0x3e3613=0x0;_0x3e3613<_0x419c50[_0xabcb('0x3f')][_0xabcb('0x66')]['length'];_0x3e3613+=0x1){socket[_0xabcb('0x6e')]('userWhatsappAccount:remove',{'UserId':Number(_0x419c50[_0xabcb('0x3f')][_0xabcb('0x66')][_0x3e3613]),'WhatsappAccountId':Number(_0x419c50['params']['id'])});}}else{socket[_0xabcb('0x6e')](_0xabcb('0x71'),{'UserId':Number(_0x419c50[_0xabcb('0x3f')][_0xabcb('0x66')]),'WhatsappAccountId':Number(_0x419c50[_0xabcb('0x60')]['id'])});}});}})[_0xabcb('0x1d')](respondWithStatusCode(_0x24689a,null))[_0xabcb('0x28')](handleError(_0x24689a,null));};exports['getAgents']=function(_0x58263c,_0x29f663,_0x4d2b7f){var _0x16020d={};var _0x554485={};var _0x514f6a;var _0x4ae505;return db[_0xabcb('0x3a')][_0xabcb('0x72')]({'where':{'id':_0x58263c['params']['id']}})[_0xabcb('0x1d')](handleEntityNotFound(_0x29f663,null))[_0xabcb('0x1d')](function(_0x44511b){if(_0x44511b){_0x514f6a=_0x44511b;_0x554485[_0xabcb('0x42')]=_[_0xabcb('0x54')](db[_0xabcb('0x73')][_0xabcb('0x55')]);_0x554485[_0xabcb('0x3f')]=_[_0xabcb('0x54')](_0x58263c[_0xabcb('0x3f')]);_0x554485[_0xabcb('0x40')]=_[_0xabcb('0x41')](_0x554485[_0xabcb('0x42')],_0x554485[_0xabcb('0x3f')]);_0x16020d['attributes']=_[_0xabcb('0x41')](_0x554485['model'],qs['fields'](_0x58263c['query'][_0xabcb('0x44')]));_0x16020d[_0xabcb('0x43')]=_0x16020d[_0xabcb('0x43')]['length']?_0x16020d['attributes']:_0x554485[_0xabcb('0x42')];_0x16020d[_0xabcb('0x48')]=qs[_0xabcb('0x49')](_0x58263c[_0xabcb('0x3f')][_0xabcb('0x49')]);_0x16020d['where']=qs[_0xabcb('0x40')](_['pick'](_0x58263c['query'],_0x554485['filters']));if(_0x58263c['query']['filter']){_0x16020d[_0xabcb('0x4a')]=_[_0xabcb('0x4d')](_0x16020d[_0xabcb('0x4a')],{'$or':_[_0xabcb('0x39')](_0x16020d[_0xabcb('0x43')],function(_0xdfd6ee){var _0x43ea43={};_0x43ea43[_0xdfd6ee]={'$like':'%'+_0x58263c[_0xabcb('0x3f')][_0xabcb('0x4c')]+'%'};return _0x43ea43;})});}_0x16020d=_[_0xabcb('0x4d')]({},_0x16020d,_0x58263c[_0xabcb('0x56')]);return _0x514f6a['getAgents'](_0x16020d);}})[_0xabcb('0x1d')](function(_0x222831){if(_0x222831){_0x4ae505=_0x222831['length'];if(!_0x58263c['query']['hasOwnProperty'](_0xabcb('0x47'))){_0x16020d[_0xabcb('0x2d')]=qs[_0xabcb('0x2d')](_0x58263c[_0xabcb('0x3f')]['limit']);_0x16020d[_0xabcb('0x2b')]=qs[_0xabcb('0x2b')](_0x58263c[_0xabcb('0x3f')][_0xabcb('0x2b')]);}return _0x514f6a['getAgents'](_0x16020d);}})[_0xabcb('0x1d')](function(_0x22da1e){if(_0x22da1e){return _0x22da1e?{'count':_0x4ae505,'rows':_0x22da1e}:null;}})[_0xabcb('0x1d')](respondWithResult(_0x29f663,null))['catch'](handleError(_0x29f663,null));};exports[_0xabcb('0x74')]=function(_0x5c2567,_0x503360){var _0x2cc866=_0x5c2567[_0xabcb('0x60')]['id'];var _0x1e43ee=_0x5c2567[_0xabcb('0x59')];var _0x47eb8c=0xc8;var _0x2faa89=null;return db['sequelize'][_0xabcb('0x75')]({'isolationLevel':db[_0xabcb('0x76')][_0xabcb('0x77')][_0xabcb('0x78')][_0xabcb('0x79')]},function(_0x5250bf){return db[_0xabcb('0x3a')][_0xabcb('0x72')]({'where':{'id':_0x2cc866},'transaction':_0x5250bf})[_0xabcb('0x1d')](function(_0x4a9596){if(_0x4a9596){return db[_0xabcb('0x7a')][_0xabcb('0x36')]({'where':{'WhatsappAccountId':_0x2cc866},'transaction':_0x5250bf})[_0xabcb('0x1d')](function(){var _0x103465=_[_0xabcb('0x39')](_0x1e43ee,function(_0x5daf2d){_0x5daf2d['WhatsappAccountId']=_0x2cc866;return _0x5daf2d;});return db[_0xabcb('0x7a')]['bulkCreate'](_0x103465,{'transaction':_0x5250bf});});}else{_0x47eb8c=0x194;_0x2faa89=[];}});})[_0xabcb('0x1d')](function(){if(_0x47eb8c!==0x194){return db[_0xabcb('0x7a')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x2cc866},'order':_0xabcb('0x7b')})[_0xabcb('0x1d')](function(_0xbb33fb){_0x2faa89=_0xbb33fb;});}})['catch'](function(_0x5c7f3e){_0x47eb8c=0x1f4;logger[_0xabcb('0x23')](_0x5c7f3e['stack']);if(_0x5c7f3e[_0xabcb('0x3e')]){delete _0x5c7f3e[_0xabcb('0x3e')];}_0x2faa89=_0x5c7f3e;})[_0xabcb('0x7c')](function(){if(_0x2faa89===null){_0x503360['sendStatus'](_0x47eb8c);}else{if(_0x47eb8c===0x1f4){_0x503360[_0xabcb('0x2a')](_0x47eb8c)[_0xabcb('0x7d')](_0x2faa89);}else{_0x503360[_0xabcb('0x2a')](_0x47eb8c)[_0xabcb('0x7e')](_0x2faa89);}}});};exports[_0xabcb('0x7f')]=function(_0x5e376b,_0x35cfe9,_0x118a3e){var _0x2dc0f6={};var _0x5da1c0={};var _0x4f0e3f;var _0x32e8e8;return db[_0xabcb('0x3a')][_0xabcb('0x72')]({'where':{'id':_0x5e376b['params']['id']}})['then'](handleEntityNotFound(_0x35cfe9,null))[_0xabcb('0x1d')](function(_0x2778d9){if(_0x2778d9){_0x4f0e3f=_0x2778d9;_0x5da1c0[_0xabcb('0x42')]=_['keys'](db['WhatsappApplication'][_0xabcb('0x55')]);_0x5da1c0[_0xabcb('0x3f')]=_[_0xabcb('0x54')](_0x5e376b['query']);_0x5da1c0[_0xabcb('0x40')]=_[_0xabcb('0x41')](_0x5da1c0['model'],_0x5da1c0['query']);_0x2dc0f6['attributes']=_['intersection'](_0x5da1c0[_0xabcb('0x42')],qs[_0xabcb('0x44')](_0x5e376b['query']['fields']));_0x2dc0f6[_0xabcb('0x43')]=_0x2dc0f6[_0xabcb('0x43')][_0xabcb('0x45')]?_0x2dc0f6[_0xabcb('0x43')]:_0x5da1c0[_0xabcb('0x42')];_0x2dc0f6[_0xabcb('0x48')]=qs['sort'](_0x5e376b[_0xabcb('0x3f')][_0xabcb('0x49')]);_0x2dc0f6[_0xabcb('0x4a')]=qs[_0xabcb('0x40')](_[_0xabcb('0x4b')](_0x5e376b['query'],_0x5da1c0[_0xabcb('0x40')]));if(_0x5e376b[_0xabcb('0x3f')][_0xabcb('0x4c')]){_0x2dc0f6['where']=_['merge'](_0x2dc0f6[_0xabcb('0x4a')],{'$or':_[_0xabcb('0x39')](_0x2dc0f6[_0xabcb('0x43')],function(_0x284ab8){var _0x21d11b={};_0x21d11b[_0x284ab8]={'$like':'%'+_0x5e376b['query'][_0xabcb('0x4c')]+'%'};return _0x21d11b;})});}_0x2dc0f6=_[_0xabcb('0x4d')]({},_0x2dc0f6,_0x5e376b['options']);return _0x4f0e3f[_0xabcb('0x7f')](_0x2dc0f6);}})[_0xabcb('0x1d')](function(_0x5e5783){if(_0x5e5783){_0x32e8e8=_0x5e5783['length'];if(!_0x5e376b['query'][_0xabcb('0x46')](_0xabcb('0x47'))){_0x2dc0f6['limit']=qs[_0xabcb('0x2d')](_0x5e376b[_0xabcb('0x3f')][_0xabcb('0x2d')]);_0x2dc0f6[_0xabcb('0x2b')]=qs[_0xabcb('0x2b')](_0x5e376b[_0xabcb('0x3f')][_0xabcb('0x2b')]);}return _0x4f0e3f['getApplications'](_0x2dc0f6);}})[_0xabcb('0x1d')](function(_0x2e97a0){if(_0x2e97a0){return _0x2e97a0?{'count':_0x32e8e8,'rows':_0x2e97a0}:null;}})[_0xabcb('0x1d')](respondWithResult(_0x35cfe9,null))[_0xabcb('0x28')](handleError(_0x35cfe9,null));};exports[_0xabcb('0x80')]=function(_0x341063,_0x793ad0,_0x21561e){var _0x1e8220={'channel':'whatsapp'};var _0x477c1c=[];var _0x41514e=[];var _0x3a37e2={};return db[_0xabcb('0x3a')][_0xabcb('0x57')]({'where':{'id':_0x341063['params']['id']},'include':[{'model':db[_0xabcb('0x7a')],'as':'Applications'}]})[_0xabcb('0x1d')](handleEntityNotFound(_0x793ad0,null))[_0xabcb('0x1d')](function(_0x575405){_0x1e8220[_0xabcb('0x81')]=_0x575405;if(_0x1e8220[_0xabcb('0x81')]&&_0x1e8220['account'][_0xabcb('0x3c')]===_0xabcb('0x82')&&_0x341063[_0xabcb('0x59')][_0xabcb('0x83')]){if(_0x341063[_0xabcb('0x59')][_0xabcb('0x83')][_0xabcb('0x45')]===0x0)return;if(_0x341063[_0xabcb('0x59')]['statuses'][0x0][_0xabcb('0x84')]!=='read')return;return db[_0xabcb('0x85')][_0xabcb('0x33')]({'read':!![],'readAt':_0x341063[_0xabcb('0x59')][_0xabcb('0x83')][0x0]['timestamp']},{'where':{'messageId':_0x341063[_0xabcb('0x59')]['statuses'][0x0][_0xabcb('0x86')]},'individualHooks':!![]})[_0xabcb('0x1d')](function(_0x176993){return _0x793ad0[_0xabcb('0x2a')](0xc8)[_0xabcb('0x7e')](_0x176993);});}_0x1e8220['applications']=_[_0xabcb('0x87')](_0x575405[_0xabcb('0x88')],['priority'],[_0xabcb('0x89')]);if(_0x1e8220['account'][_0xabcb('0x88')]){delete _0x1e8220['account'][_0xabcb('0x88')];}return db['CmContact']['describe']()[_0xabcb('0x1d')](function(_0x4acbc2){if(!_0x4acbc2){throw new db[(_0xabcb('0x8a'))][(_0xabcb('0x8b'))](_0xabcb('0x8c'));}_0x477c1c=_['difference'](_[_0xabcb('0x54')](_0x4acbc2),[_0xabcb('0x8d'),_0xabcb('0x8e')]);_0x41514e=_[_0xabcb('0x8f')](_['keys'](_0x4acbc2),[_0xabcb('0x8d'),_0xabcb('0x8e'),'CompanyId',_0xabcb('0x90')]);_0x1e8220[_0xabcb('0x59')]={'mapKey':_0xabcb('0x91')};if(_0x1e8220[_0xabcb('0x81')]&&_0x1e8220['account'][_0xabcb('0x3c')]===_0xabcb('0x92')){_0x1e8220['body'][_0xabcb('0x93')]=_0x341063[_0xabcb('0x59')][_0xabcb('0x94')][_0xabcb('0x95')](_0xabcb('0x96'),'');_0x1e8220['body'][_0xabcb('0x59')]=_0x341063[_0xabcb('0x59')][_0xabcb('0x97')];_0x1e8220[_0xabcb('0x59')][_0xabcb('0x98')]=_0x341063[_0xabcb('0x59')][_0xabcb('0x99')];}if(_0x1e8220['account']&&_0x1e8220[_0xabcb('0x81')][_0xabcb('0x3c')]==='sinch'){_0x1e8220[_0xabcb('0x59')][_0xabcb('0x93')]=_0x341063['body'][_0xabcb('0x9a')][0x0]['from'];_0x1e8220[_0xabcb('0x59')][_0xabcb('0x59')]=_0x341063[_0xabcb('0x59')][_0xabcb('0x9a')][0x0]['message'][_0xabcb('0x59')];_0x1e8220[_0xabcb('0x59')][_0xabcb('0x98')]=_0x341063[_0xabcb('0x59')][_0xabcb('0x9a')][0x0][_0xabcb('0x86')];}if(_0x1e8220['body']['id']){delete _0x1e8220['body']['id'];}if(_[_0xabcb('0x9b')](_0x1e8220['body'][_0xabcb('0x93')])){throw new db['Sequelize'][(_0xabcb('0x8b'))](_0xabcb('0x9c'));}if(_['isNil'](_0x1e8220['body'][_0xabcb('0x59')])||_0x1e8220[_0xabcb('0x59')]['body']===''){throw new db[(_0xabcb('0x8a'))][(_0xabcb('0x8b'))](_0xabcb('0x9d'));}if(_['isNil'](_0x1e8220['body'][_0xabcb('0x9e')])){throw new db[(_0xabcb('0x8a'))][(_0xabcb('0x8b'))](_0xabcb('0x9f')+_0x41514e);}if(!_[_0xabcb('0xa0')](_0x41514e,_0x1e8220[_0xabcb('0x59')][_0xabcb('0x9e')])){throw new db[(_0xabcb('0x8a'))][(_0xabcb('0x8b'))](_0xabcb('0xa1')+_0x41514e);}_0x3a37e2[_0x1e8220['body'][_0xabcb('0x9e')]]=_0x1e8220['body'][_0xabcb('0x93')];return db[_0xabcb('0xa2')][_0xabcb('0x57')]({'where':{'id':_0x1e8220[_0xabcb('0x81')][_0xabcb('0x90')]},'include':[{'model':db[_0xabcb('0xa3')],'as':_0xabcb('0xa4'),'where':_0x3a37e2,'limit':0x1,'order':[[_0xabcb('0x8e'),_0xabcb('0xa5')]]}]});})[_0xabcb('0x1d')](handleEntityNotFound(_0x793ad0,null))[_0xabcb('0x1d')](function(_0x3414bd){if(_0x3414bd){_0x1e8220[_0xabcb('0xa6')]=_['omit'](_0x3414bd,['Contacts']);if(_0x3414bd['Contacts']['length']){return _0x3414bd[_0xabcb('0xa4')][0x0];}var _0xabcdc3=_[_0xabcb('0x17')](_0x1e8220[_0xabcb('0x59')],{'firstName':_0x1e8220[_0xabcb('0x59')]['from'],'ListId':_0x3414bd['id']});_0xabcdc3[_0x1e8220[_0xabcb('0x59')]['mapKey']]=_0x1e8220['body'][_0xabcb('0x93')];return db[_0xabcb('0xa3')]['create'](_0xabcdc3,{'fields':_0x477c1c,'raw':!![]});}})['then'](handleEntityNotFound(_0x793ad0,null))['then'](function(_0x4f0dcd){if(_0x4f0dcd){_0x1e8220[_0xabcb('0xa7')]=_0x4f0dcd;var _0xbe3549={'ContactId':_0x4f0dcd['id'],'phone':_0x1e8220['body'][_0xabcb('0x93')],'WhatsappAccountId':_0x341063[_0xabcb('0x60')]['id']};var _0x48bdd2={'ContactId':_0x4f0dcd['id'],'WhatsappAccountId':_0x341063[_0xabcb('0x60')]['id'],'closed':![]};return db[_0xabcb('0xa8')][_0xabcb('0x57')]({'where':_0x48bdd2})[_0xabcb('0x1d')](function(_0x15f71a){if(_0x15f71a){return[_0x15f71a,![]];}return db[_0xabcb('0xa8')]['create'](_0xbe3549)[_0xabcb('0x1d')](function(_0x56bdf2){return[_0x56bdf2,!![]];});});}})['spread'](function(_0x5c1650,_0x21aad6){_0x1e8220[_0xabcb('0xa9')]=_0x5c1650[_0xabcb('0x34')]({'plain':!![]});_0x1e8220[_0xabcb('0xa9')]['created']=![];if(_0x21aad6){if(_0x1e8220['account']['autoclose']){_0x1e8220[_0xabcb('0xaa')][_0xabcb('0xab')]({'id':0x0,'priority':_0x1e8220[_0xabcb('0xaa')][_0xabcb('0x45')]+0x1,'app':_0xabcb('0xac'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x1e8220[_0xabcb('0xa9')][_0xabcb('0xad')]=!![];}return db['WhatsappMessage']['create']({'phone':_0x1e8220[_0xabcb('0x59')][_0xabcb('0x93')],'messageId':_0x1e8220[_0xabcb('0x59')][_0xabcb('0x98')],'body':_0x1e8220[_0xabcb('0x59')]['body'],'WhatsappAccountId':_0x341063[_0xabcb('0x60')]['id'],'WhatsappInteractionId':_0x5c1650['id'],'direction':'in','ContactId':_0x5c1650['ContactId'],'AttachmentId':_0x1e8220['body'][_0xabcb('0xae')]});})[_0xabcb('0x1d')](function(_0x13d586){_0x1e8220[_0xabcb('0x25')]=_0x13d586;if(_0x1e8220[_0xabcb('0xa9')][_0xabcb('0xaf')]){return db[_0xabcb('0x73')][_0xabcb('0x57')]({'attributes':['id','name'],'where':{'id':_0x1e8220[_0xabcb('0xa9')]['UserId']}})[_0xabcb('0x1d')](function(_0x60e7c0){if(_0x60e7c0){_0x1e8220[_0xabcb('0xaa')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x60e7c0[_0xabcb('0x3e')]+','+(_0x1e8220[_0xabcb('0x81')][_0xabcb('0xb0')]||0xa),'interval':_0xabcb('0xb1')});}return respondWithRpcPromise(_0xabcb('0xb2'),_0xabcb('0xb3'),_0x1e8220);});}return respondWithRpcPromise(_0xabcb('0xb2'),_0xabcb('0xb3'),_0x1e8220);})[_0xabcb('0x1d')](function(_0x3e89b6){if(_0x3e89b6){var _0x57b2a2=0xc8;var _0x40dadc=_0xabcb('0xb4');logger['info']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x40dadc,_0x57b2a2,'entity\x20found');logger['debug'](_0xabcb('0xb5'),_0x40dadc,_0x57b2a2,'entity\x20found',JSON[_0xabcb('0x22')](_0x3e89b6));if(_0x1e8220[_0xabcb('0x81')][_0xabcb('0x3c')]===_0xabcb('0x92')){return _0x793ad0[_0xabcb('0x2a')](_0x57b2a2)[_0xabcb('0x2f')](_0xabcb('0xb6'),_0xabcb('0xb7'))['send'](_0xabcb('0xb8'));}else{return _0x793ad0[_0xabcb('0x2a')](_0x57b2a2)[_0xabcb('0x7e')](_0x3e89b6);}}});})[_0xabcb('0x28')](handleError(_0x793ad0,null));};exports[_0xabcb('0x7d')]=function(_0x486fa3,_0x4f7c57,_0x1fb977){var _0x384d08,_0x1b3ed1,_0x3bf2b2;if(_[_0xabcb('0x9b')](_0x486fa3[_0xabcb('0x59')][_0xabcb('0x59')])||_0x486fa3['body'][_0xabcb('0x59')]===''){throw new db[(_0xabcb('0x8a'))][(_0xabcb('0x8b'))](_0xabcb('0x9d'));}if(_[_0xabcb('0x9b')](_0x486fa3[_0xabcb('0x59')]['to'])){throw new db[(_0xabcb('0x8a'))]['ValidationError'](_0xabcb('0xb9'));}_0x384d08=_0x486fa3['body']['to'];return db['WhatsappAccount'][_0xabcb('0x57')]({'where':{'id':_0x486fa3[_0xabcb('0x60')]['id']},'include':[{'model':db[_0xabcb('0xa2')],'as':'List','include':[{'model':db[_0xabcb('0xa3')],'as':'Contacts','where':{'mobile':_0x384d08},'limit':0x1,'order':[['updatedAt',_0xabcb('0xa5')]]}]}]})[_0xabcb('0x1d')](handleEntityNotFound(_0x4f7c57,null))[_0xabcb('0x1d')](function(_0x2ff704){if(_0x2ff704&&_0x2ff704[_0xabcb('0xba')]){_0x1b3ed1=_0x2ff704[_0xabcb('0x34')]({'plain':!![]});if(_0x1b3ed1[_0xabcb('0xba')]&&_0x1b3ed1[_0xabcb('0xba')]['Contacts'][_0xabcb('0x45')]){return _0x1b3ed1[_0xabcb('0xba')][_0xabcb('0xa4')][0x0];}return db['CmContact'][_0xabcb('0x58')](_[_0xabcb('0x17')](_0x486fa3[_0xabcb('0x59')],{'firstName':_0x384d08,'mobile':_0x384d08,'phone':_0x384d08,'ListId':_0x1b3ed1[_0xabcb('0x90')]}));}})['then'](handleEntityNotFound(_0x4f7c57,null))[_0xabcb('0x1d')](function(_0x38f3ae){if(_0x38f3ae){_0x3bf2b2=_0x38f3ae;return db[_0xabcb('0xa8')][_0xabcb('0x57')]({'where':{'ContactId':_0x3bf2b2['id'],'closed':![],'WhatsappAccountId':_0x1b3ed1['id']}})[_0xabcb('0x1d')](function(_0xf0874d){if(_0xf0874d){return[_0xf0874d,![]];}return db[_0xabcb('0xa8')][_0xabcb('0x58')]({'UserId':_0x486fa3[_0xabcb('0xbb')]['id'],'ContactId':_0x3bf2b2['id'],'WhatsappAccountId':_0x1b3ed1['id'],'phone':_0x384d08,'firstMsgDirection':'out','Messages':[_[_0xabcb('0x4d')](_0x486fa3[_0xabcb('0x59')],{'read':![],'body':_0x486fa3[_0xabcb('0x59')][_0xabcb('0x59')],'phone':_0x384d08,'WhatsappAccountId':_0x1b3ed1['id'],'UserId':_0x486fa3[_0xabcb('0xbb')]['id'],'ContactId':_0x3bf2b2['id']})]},{'include':[{'model':db[_0xabcb('0x85')],'as':_0xabcb('0xbc')}]})[_0xabcb('0x1d')](function(_0x1c5f76){return[_0x1c5f76,!![]];});});}})['spread'](function(_0x10c78f,_0x46e2dc){if(_0x46e2dc){return _0x10c78f;}return db[_0xabcb('0x85')][_0xabcb('0x58')](_['merge'](_0x486fa3['body'],{'read':![],'body':_0x486fa3[_0xabcb('0x59')][_0xabcb('0x59')],'phone':_0x384d08,'WhatsappAccountId':_0x1b3ed1['id'],'WhatsappInteractionId':_0x10c78f['id'],'UserId':_0x486fa3[_0xabcb('0xbb')]['id'],'ContactId':_0x3bf2b2['id']}))[_0xabcb('0x1d')](function(_0x2f0afc){_0x10c78f[_0xabcb('0xbd')][_0xabcb('0xbc')]=[];_0x10c78f[_0xabcb('0xbd')][_0xabcb('0xbc')][_0xabcb('0xab')](_0x2f0afc[_0xabcb('0xbd')]);return _0x10c78f;});})[_0xabcb('0x1d')](respondWithResult(_0x4f7c57,null))[_0xabcb('0x28')](handleError(_0x4f7c57,null));};
\ No newline at end of file
+var _0xa89a=['WhatsappMessage','message_id','applications','orderBy','Applications','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','mobile','from','From','replace','messageId','MessageSid','notifications','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','DESC','list','Contacts','defaults','contact','WhatsappInteraction','interaction','created','push','close','*,*,*,*','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','Start','receiveMessage','entity\x20found','debug','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','ListId','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./whatsappAccount.socket','http','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','UserProfileResource','name','mandatoryDispositionPause','map','fieldName','type','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','WhatsappAccount','rows','show','params','Pause','rawAttributes','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappAccounts','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','addAgents','spread','userWhatsappAccount:save','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','ISOLATION_LEVELS','WhatsappApplication','destroy','priority','finally','getApplications','notify','whatsapp','account','sinch','statuses','state'];(function(_0x6463a3,_0x2d0c31){var _0x3cc9a0=function(_0x52405f){while(--_0x52405f){_0x6463a3['push'](_0x6463a3['shift']());}};_0x3cc9a0(++_0x2d0c31);}(_0xa89a,0xf4));var _0xaa89=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xa89a[_0x18ab2a];return _0x16dcee;};'use strict';var emlformat=require(_0xaa89('0x0'));var rimraf=require(_0xaa89('0x1'));var zipdir=require(_0xaa89('0x2'));var jsonpatch=require(_0xaa89('0x3'));var rp=require(_0xaa89('0x4'));var moment=require(_0xaa89('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xaa89('0x6'));var util=require('util');var path=require('path');var sox=require(_0xaa89('0x7'));var csv=require(_0xaa89('0x8'));var ejs=require(_0xaa89('0x9'));var fs=require('fs');var fs_extra=require(_0xaa89('0xa'));var _=require(_0xaa89('0xb'));var squel=require(_0xaa89('0xc'));var crypto=require(_0xaa89('0xd'));var jsforce=require(_0xaa89('0xe'));var deskjs=require(_0xaa89('0xf'));var toCsv=require(_0xaa89('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xaa89('0x10'));var authService=require(_0xaa89('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xaa89('0x12'));var hardwareService=require(_0xaa89('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xaa89('0x14'));var config=require(_0xaa89('0x15'));var licenseUtil=require(_0xaa89('0x16'));var db=require('../../mysqldb')['db'];config[_0xaa89('0x17')]=_['defaults'](config[_0xaa89('0x17')],{'host':_0xaa89('0x18'),'port':0x18eb});var socket=require(_0xaa89('0x19'))(new Redis(config[_0xaa89('0x17')]));require(_0xaa89('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xaa89('0x1b')]({'port':0x232c});function respondWithRpcPromise(_0x4042f2,_0x249ced,_0x5c4183,_0x133b23){return new BPromise(function(_0x50bfe7,_0x5a0814){var _0x37e758=_0x133b23||client;return _0x37e758[_0xaa89('0x1c')](_0x4042f2,_0x5c4183)['then'](function(_0x3e2299){logger[_0xaa89('0x1d')](_0xaa89('0x1e'),_0x249ced,_0xaa89('0x1f'));logger['debug'](_0xaa89('0x20'),_0x249ced,_0xaa89('0x1f'),JSON[_0xaa89('0x21')](_0x3e2299));if(_0x3e2299[_0xaa89('0x22')]){if(_0x3e2299[_0xaa89('0x22')][_0xaa89('0x23')]===0x1f4){logger['error'](_0xaa89('0x1e'),_0x249ced,_0x3e2299[_0xaa89('0x22')][_0xaa89('0x24')]);return _0x5a0814(_0x3e2299[_0xaa89('0x22')]['message']);}logger[_0xaa89('0x22')](_0xaa89('0x1e'),_0x249ced,_0x3e2299[_0xaa89('0x22')][_0xaa89('0x24')]);return _0x50bfe7(_0x3e2299['error'][_0xaa89('0x24')]);}else{logger[_0xaa89('0x1d')](_0xaa89('0x1e'),_0x249ced,_0xaa89('0x1f'));_0x50bfe7(_0x3e2299[_0xaa89('0x25')][_0xaa89('0x24')]);}})[_0xaa89('0x26')](function(_0x2971df){logger['error'](_0xaa89('0x1e'),_0x249ced,_0x2971df);_0x5a0814(_0x2971df);});});}function respondWithStatusCode(_0x2d62da,_0x549ce8){_0x549ce8=_0x549ce8||0xcc;return function(_0x257926){if(_0x257926){return _0x2d62da[_0xaa89('0x27')](_0x549ce8);}return _0x2d62da[_0xaa89('0x28')](_0x549ce8)[_0xaa89('0x29')]();};}function respondWithResult(_0x23535a,_0xced5a7){_0xced5a7=_0xced5a7||0xc8;return function(_0x3243a9){if(_0x3243a9){return _0x23535a[_0xaa89('0x28')](_0xced5a7)[_0xaa89('0x2a')](_0x3243a9);}};}function respondWithFilteredResult(_0x402c1a,_0xe21098){return function(_0x3a142c){if(_0x3a142c){var _0x3b3c61=typeof _0xe21098[_0xaa89('0x2b')]===_0xaa89('0x2c')&&typeof _0xe21098[_0xaa89('0x2d')]===_0xaa89('0x2c');var _0x26254f=_0x3a142c[_0xaa89('0x2e')];var _0x14365a=_0x3b3c61?0x0:_0xe21098[_0xaa89('0x2b')];var _0x220699=_0x3b3c61?_0x3a142c[_0xaa89('0x2e')]:_0xe21098[_0xaa89('0x2b')]+_0xe21098[_0xaa89('0x2d')];var _0x5477a4;if(_0x220699>=_0x26254f){_0x220699=_0x26254f;_0x5477a4=0xc8;}else{_0x5477a4=0xce;}_0x402c1a['status'](_0x5477a4);return _0x402c1a[_0xaa89('0x2f')](_0xaa89('0x30'),_0x14365a+'-'+_0x220699+'/'+_0x26254f)['json'](_0x3a142c);}return null;};}function patchUpdates(_0x16aafa){return function(_0x47ac82){try{jsonpatch[_0xaa89('0x31')](_0x47ac82,_0x16aafa,!![]);}catch(_0x355dda){return BPromise['reject'](_0x355dda);}return _0x47ac82[_0xaa89('0x32')]();};}function saveUpdates(_0x4b6a65,_0x3e5af3){return function(_0x43e7e2){if(_0x43e7e2){return _0x43e7e2[_0xaa89('0x33')](_0x4b6a65)[_0xaa89('0x34')](function(_0x5e41c4){return _0x5e41c4;});}return null;};}function removeEntity(_0x205836,_0x8f6199){return function(_0x1ba294){if(_0x1ba294){return _0x1ba294['destroy']()[_0xaa89('0x34')](function(){var _0x51a4ff=_0x1ba294[_0xaa89('0x35')]({'plain':!![]});var _0x4fbe55='WhatsappAccounts';return db[_0xaa89('0x36')]['destroy']({'where':{'type':_0x4fbe55,'resourceId':_0x51a4ff['id']}})[_0xaa89('0x34')](function(){return _0x1ba294;});})[_0xaa89('0x34')](function(){_0x205836[_0xaa89('0x28')](0xcc)[_0xaa89('0x29')]();});}};}function handleEntityNotFound(_0x501e8d,_0xe30711){return function(_0x1f6888){if(!_0x1f6888){_0x501e8d[_0xaa89('0x27')](0x194);}return _0x1f6888;};}function handleError(_0x3d64b0,_0x2247de){_0x2247de=_0x2247de||0x1f4;return function(_0x44e6bb){logger['error'](_0x44e6bb['stack']);if(_0x44e6bb[_0xaa89('0x37')]){delete _0x44e6bb[_0xaa89('0x37')];}_0x3d64b0[_0xaa89('0x28')](_0x2247de)['send'](_0x44e6bb);};}exports['index']=function(_0x2c1388,_0x59a9c9){var _0x6d86da={'include':[{'model':db['Pause'],'as':_0xaa89('0x38')}]},_0x1f33ae={},_0x217b1f={'count':0x0,'rows':[]};var _0x3534f8=_[_0xaa89('0x39')](db['WhatsappAccount']['rawAttributes'],function(_0x16591a){return{'name':_0x16591a[_0xaa89('0x3a')],'type':_0x16591a[_0xaa89('0x3b')]['key']};});_0x1f33ae[_0xaa89('0x3c')]=_[_0xaa89('0x39')](_0x3534f8,'name');_0x1f33ae['query']=_[_0xaa89('0x3d')](_0x2c1388[_0xaa89('0x3e')]);_0x1f33ae[_0xaa89('0x3f')]=_[_0xaa89('0x40')](_0x1f33ae[_0xaa89('0x3c')],_0x1f33ae['query']);_0x6d86da[_0xaa89('0x41')]=_[_0xaa89('0x40')](_0x1f33ae['model'],qs[_0xaa89('0x42')](_0x2c1388[_0xaa89('0x3e')][_0xaa89('0x42')]));_0x6d86da[_0xaa89('0x41')]=_0x6d86da['attributes']['length']?_0x6d86da[_0xaa89('0x41')]:_0x1f33ae[_0xaa89('0x3c')];if(!_0x2c1388[_0xaa89('0x3e')][_0xaa89('0x43')](_0xaa89('0x44'))){_0x6d86da[_0xaa89('0x2d')]=qs[_0xaa89('0x2d')](_0x2c1388[_0xaa89('0x3e')]['limit']);_0x6d86da[_0xaa89('0x2b')]=qs[_0xaa89('0x2b')](_0x2c1388['query'][_0xaa89('0x2b')]);}_0x6d86da[_0xaa89('0x45')]=qs[_0xaa89('0x46')](_0x2c1388[_0xaa89('0x3e')][_0xaa89('0x46')]);_0x6d86da['where']=qs['filters'](_[_0xaa89('0x47')](_0x2c1388[_0xaa89('0x3e')],_0x1f33ae['filters']),_0x3534f8);if(_0x2c1388[_0xaa89('0x3e')]['filter']){_0x6d86da[_0xaa89('0x48')]=_['merge'](_0x6d86da[_0xaa89('0x48')],{'$or':_['map'](_0x3534f8,function(_0xb6bc05){if(_0xb6bc05[_0xaa89('0x3b')]!==_0xaa89('0x49')){var _0x42ba09={};_0x42ba09[_0xb6bc05[_0xaa89('0x37')]]={'$like':'%'+_0x2c1388[_0xaa89('0x3e')][_0xaa89('0x4a')]+'%'};return _0x42ba09;}})});}_0x6d86da=_[_0xaa89('0x4b')]({},_0x6d86da,_0x2c1388[_0xaa89('0x4c')]);var _0x220194={'where':_0x6d86da[_0xaa89('0x48')]};return db['WhatsappAccount']['count'](_0x220194)['then'](function(_0x1fc03b){_0x217b1f[_0xaa89('0x2e')]=_0x1fc03b;if(_0x2c1388[_0xaa89('0x3e')][_0xaa89('0x4d')]){_0x6d86da['include']=[{'all':!![]}];}return db[_0xaa89('0x4e')]['findAll'](_0x6d86da);})[_0xaa89('0x34')](function(_0x3bf446){_0x217b1f[_0xaa89('0x4f')]=_0x3bf446;return _0x217b1f;})[_0xaa89('0x34')](respondWithFilteredResult(_0x59a9c9,_0x6d86da))[_0xaa89('0x26')](handleError(_0x59a9c9,null));};exports[_0xaa89('0x50')]=function(_0x2a45f6,_0x88961b){var _0x5a9bad={'raw':![],'where':{'id':_0x2a45f6[_0xaa89('0x51')]['id']},'include':[{'model':db[_0xaa89('0x52')],'as':'mandatoryDispositionPause'}]},_0x4db9be={};_0x4db9be[_0xaa89('0x3c')]=_['keys'](db[_0xaa89('0x4e')][_0xaa89('0x53')]);_0x4db9be['query']=_[_0xaa89('0x3d')](_0x2a45f6['query']);_0x4db9be[_0xaa89('0x3f')]=_[_0xaa89('0x40')](_0x4db9be[_0xaa89('0x3c')],_0x4db9be[_0xaa89('0x3e')]);_0x5a9bad[_0xaa89('0x41')]=_[_0xaa89('0x40')](_0x4db9be['model'],qs[_0xaa89('0x42')](_0x2a45f6[_0xaa89('0x3e')]['fields']));_0x5a9bad[_0xaa89('0x41')]=_0x5a9bad[_0xaa89('0x41')][_0xaa89('0x54')]?_0x5a9bad[_0xaa89('0x41')]:_0x4db9be[_0xaa89('0x3c')];if(_0x2a45f6[_0xaa89('0x3e')][_0xaa89('0x4d')]){_0x5a9bad[_0xaa89('0x55')]=[{'all':!![]}];}_0x5a9bad=_[_0xaa89('0x4b')]({},_0x5a9bad,_0x2a45f6['options']);return db[_0xaa89('0x4e')][_0xaa89('0x56')](_0x5a9bad)['then'](handleEntityNotFound(_0x88961b,null))['then'](respondWithResult(_0x88961b,null))[_0xaa89('0x26')](handleError(_0x88961b,null));};exports[_0xaa89('0x57')]=function(_0x26c9ad,_0x32ea1a){return db['WhatsappAccount'][_0xaa89('0x57')](_0x26c9ad[_0xaa89('0x58')],{})[_0xaa89('0x34')](function(_0x1cb4d6){var _0x33bf1a=_0x26c9ad[_0xaa89('0x59')][_0xaa89('0x35')]({'plain':!![]});if(!_0x33bf1a)throw new Error(_0xaa89('0x5a'));if(_0x33bf1a[_0xaa89('0x5b')]==='user'){var _0x556cc5=_0x1cb4d6[_0xaa89('0x35')]({'plain':!![]});var _0x1e10f5=_0xaa89('0x5c');return db['UserProfileSection'][_0xaa89('0x56')]({'where':{'name':_0x1e10f5,'userProfileId':_0x33bf1a['userProfileId']},'raw':!![]})[_0xaa89('0x34')](function(_0x192525){if(_0x192525&&_0x192525['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x556cc5[_0xaa89('0x37')],'resourceId':_0x556cc5['id'],'type':_0x192525['name'],'sectionId':_0x192525['id']},{})['then'](function(){return _0x1cb4d6;});}else{return _0x1cb4d6;}})['catch'](function(_0x2b396f){logger[_0xaa89('0x22')](_0xaa89('0x5d'),_0x2b396f);throw _0x2b396f;});}return _0x1cb4d6;})[_0xaa89('0x34')](respondWithResult(_0x32ea1a,0xc9))[_0xaa89('0x26')](handleError(_0x32ea1a,null));};exports[_0xaa89('0x33')]=function(_0x4f6a7a,_0x20e107){if(_0x4f6a7a[_0xaa89('0x58')]['id']){delete _0x4f6a7a[_0xaa89('0x58')]['id'];}return db[_0xaa89('0x4e')][_0xaa89('0x56')]({'where':{'id':_0x4f6a7a['params']['id']},'include':[{'model':db[_0xaa89('0x52')],'as':_0xaa89('0x38')}]})[_0xaa89('0x34')](handleEntityNotFound(_0x20e107,null))[_0xaa89('0x34')](saveUpdates(_0x4f6a7a[_0xaa89('0x58')],null))[_0xaa89('0x34')](respondWithResult(_0x20e107,null))[_0xaa89('0x26')](handleError(_0x20e107,null));};exports['destroy']=function(_0x23931b,_0x5842f4){return db[_0xaa89('0x4e')][_0xaa89('0x56')]({'where':{'id':_0x23931b['params']['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x5842f4,null))[_0xaa89('0x34')](removeEntity(_0x5842f4,null))[_0xaa89('0x26')](handleError(_0x5842f4,null));};exports[_0xaa89('0x5e')]=function(_0x551b22,_0x350d2a){return db[_0xaa89('0x4e')][_0xaa89('0x5e')]()[_0xaa89('0x34')](respondWithResult(_0x350d2a,null))[_0xaa89('0x26')](handleError(_0x350d2a,null));};exports[_0xaa89('0x5f')]=function(_0x27f911,_0x1ca19b,_0x278abd){if(_0x27f911[_0xaa89('0x58')]['id']){delete _0x27f911[_0xaa89('0x58')]['id'];}return db[_0xaa89('0x4e')]['find']({'where':{'id':_0x27f911['params']['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x1ca19b,null))[_0xaa89('0x34')](function(_0x42cd4c){if(_0x42cd4c){_0x27f911[_0xaa89('0x58')][_0xaa89('0x60')]=_0x42cd4c['id'];return db[_0xaa89('0x61')][_0xaa89('0x57')](_0x27f911[_0xaa89('0x58')]);}})[_0xaa89('0x34')](respondWithResult(_0x1ca19b,null))['catch'](handleError(_0x1ca19b,null));};exports[_0xaa89('0x62')]=function(_0x513422,_0x519919,_0x35c546){var _0x28cde7={'raw':![],'where':{}};var _0x1df5bf={};var _0x528c66={'count':0x0,'rows':[]};return db[_0xaa89('0x4e')][_0xaa89('0x63')]({'where':{'id':_0x513422[_0xaa89('0x51')]['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x519919,null))['then'](function(_0xa73552){if(_0xa73552){_0x1df5bf[_0xaa89('0x3c')]=_[_0xaa89('0x3d')](db[_0xaa89('0x61')][_0xaa89('0x53')]);_0x1df5bf[_0xaa89('0x3e')]=_[_0xaa89('0x3d')](_0x513422[_0xaa89('0x3e')]);_0x1df5bf[_0xaa89('0x3f')]=_[_0xaa89('0x40')](_0x1df5bf[_0xaa89('0x3c')],_0x1df5bf[_0xaa89('0x3e')]);_0x28cde7[_0xaa89('0x41')]=_[_0xaa89('0x40')](_0x1df5bf[_0xaa89('0x3c')],qs[_0xaa89('0x42')](_0x513422[_0xaa89('0x3e')][_0xaa89('0x42')]));_0x28cde7[_0xaa89('0x41')]=_0x28cde7[_0xaa89('0x41')][_0xaa89('0x54')]?_0x28cde7[_0xaa89('0x41')]:_0x1df5bf[_0xaa89('0x3c')];if(!_0x513422['query'][_0xaa89('0x43')](_0xaa89('0x44'))){_0x28cde7['limit']=qs['limit'](_0x513422[_0xaa89('0x3e')]['limit']);_0x28cde7[_0xaa89('0x2b')]=qs[_0xaa89('0x2b')](_0x513422[_0xaa89('0x3e')]['offset']);}_0x28cde7[_0xaa89('0x45')]=qs[_0xaa89('0x46')](_0x513422[_0xaa89('0x3e')]['sort']);_0x28cde7[_0xaa89('0x48')]=qs[_0xaa89('0x3f')](_[_0xaa89('0x47')](_0x513422[_0xaa89('0x3e')],_0x1df5bf['filters']));_0x28cde7[_0xaa89('0x48')][_0xaa89('0x60')]=_0xa73552['id'];if(_0x513422[_0xaa89('0x3e')][_0xaa89('0x4a')]){_0x28cde7[_0xaa89('0x48')]=_[_0xaa89('0x4b')](_0x28cde7[_0xaa89('0x48')],{'$or':_['map'](_0x28cde7['attributes'],function(_0x4c04dd){var _0xd0d490={};_0xd0d490[_0x4c04dd]={'$like':'%'+_0x513422[_0xaa89('0x3e')][_0xaa89('0x4a')]+'%'};return _0xd0d490;})});}_0x28cde7=_[_0xaa89('0x4b')]({},_0x28cde7,_0x513422[_0xaa89('0x4c')]);return db[_0xaa89('0x61')][_0xaa89('0x2e')]({'where':_0x28cde7[_0xaa89('0x48')]})[_0xaa89('0x34')](function(_0x56b356){_0x528c66[_0xaa89('0x2e')]=_0x56b356;if(_0x513422[_0xaa89('0x3e')][_0xaa89('0x4d')]){_0x28cde7[_0xaa89('0x55')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x28cde7);})[_0xaa89('0x34')](function(_0x58a708){_0x528c66['rows']=_0x58a708;return _0x528c66;});}})['then'](respondWithFilteredResult(_0x519919,_0x28cde7))[_0xaa89('0x26')](handleError(_0x519919,null));};exports['removeDispositions']=function(_0x4a33ed,_0x8c1983,_0x3f67d5){return db[_0xaa89('0x4e')][_0xaa89('0x56')]({'where':{'id':_0x4a33ed[_0xaa89('0x51')]['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x8c1983,null))[_0xaa89('0x34')](function(_0x2ce137){if(_0x2ce137){return _0x2ce137[_0xaa89('0x64')](_0x4a33ed[_0xaa89('0x3e')]['ids']);}})[_0xaa89('0x34')](respondWithStatusCode(_0x8c1983,null))[_0xaa89('0x26')](handleError(_0x8c1983,null));};exports[_0xaa89('0x65')]=function(_0x1d5685,_0xabb18f,_0xe1f9e0){if(_0x1d5685[_0xaa89('0x58')]['id']){delete _0x1d5685[_0xaa89('0x58')]['id'];}return db[_0xaa89('0x4e')]['find']({'where':{'id':_0x1d5685[_0xaa89('0x51')]['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0xabb18f,null))[_0xaa89('0x34')](function(_0x3a075d){if(_0x3a075d){_0x1d5685[_0xaa89('0x58')][_0xaa89('0x60')]=_0x3a075d['id'];return db['CannedAnswer'][_0xaa89('0x57')](_0x1d5685[_0xaa89('0x58')]);}})[_0xaa89('0x34')](respondWithResult(_0xabb18f,null))[_0xaa89('0x26')](handleError(_0xabb18f,null));};exports['getAnswers']=function(_0x53b668,_0x120f55,_0x17b550){var _0x2ebb5b={'raw':![],'where':{}};var _0x1fa4cb={};var _0x2cfd87={'count':0x0,'rows':[]};return db[_0xaa89('0x4e')][_0xaa89('0x63')]({'where':{'id':_0x53b668[_0xaa89('0x51')]['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x120f55,null))[_0xaa89('0x34')](function(_0x4ca50c){if(_0x4ca50c){_0x1fa4cb[_0xaa89('0x3c')]=_['keys'](db[_0xaa89('0x66')][_0xaa89('0x53')]);_0x1fa4cb['query']=_[_0xaa89('0x3d')](_0x53b668[_0xaa89('0x3e')]);_0x1fa4cb[_0xaa89('0x3f')]=_[_0xaa89('0x40')](_0x1fa4cb[_0xaa89('0x3c')],_0x1fa4cb[_0xaa89('0x3e')]);_0x2ebb5b[_0xaa89('0x41')]=_[_0xaa89('0x40')](_0x1fa4cb[_0xaa89('0x3c')],qs[_0xaa89('0x42')](_0x53b668['query'][_0xaa89('0x42')]));_0x2ebb5b['attributes']=_0x2ebb5b[_0xaa89('0x41')]['length']?_0x2ebb5b[_0xaa89('0x41')]:_0x1fa4cb[_0xaa89('0x3c')];if(!_0x53b668['query'][_0xaa89('0x43')](_0xaa89('0x44'))){_0x2ebb5b[_0xaa89('0x2d')]=qs[_0xaa89('0x2d')](_0x53b668['query'][_0xaa89('0x2d')]);_0x2ebb5b[_0xaa89('0x2b')]=qs[_0xaa89('0x2b')](_0x53b668[_0xaa89('0x3e')][_0xaa89('0x2b')]);}_0x2ebb5b['order']=qs['sort'](_0x53b668[_0xaa89('0x3e')][_0xaa89('0x46')]);_0x2ebb5b[_0xaa89('0x48')]=qs[_0xaa89('0x3f')](_[_0xaa89('0x47')](_0x53b668[_0xaa89('0x3e')],_0x1fa4cb['filters']));_0x2ebb5b[_0xaa89('0x48')][_0xaa89('0x60')]=_0x4ca50c['id'];if(_0x53b668['query'][_0xaa89('0x4a')]){_0x2ebb5b[_0xaa89('0x48')]=_[_0xaa89('0x4b')](_0x2ebb5b[_0xaa89('0x48')],{'$or':_[_0xaa89('0x39')](_0x2ebb5b[_0xaa89('0x41')],function(_0x184cf7){var _0x297af4={};_0x297af4[_0x184cf7]={'$like':'%'+_0x53b668[_0xaa89('0x3e')][_0xaa89('0x4a')]+'%'};return _0x297af4;})});}_0x2ebb5b=_[_0xaa89('0x4b')]({},_0x2ebb5b,_0x53b668[_0xaa89('0x4c')]);return db[_0xaa89('0x66')]['count']({'where':_0x2ebb5b[_0xaa89('0x48')]})['then'](function(_0x543699){_0x2cfd87[_0xaa89('0x2e')]=_0x543699;if(_0x53b668['query'][_0xaa89('0x4d')]){_0x2ebb5b[_0xaa89('0x55')]=[{'all':!![]}];}return db[_0xaa89('0x66')]['findAll'](_0x2ebb5b);})['then'](function(_0x24a578){_0x2cfd87[_0xaa89('0x4f')]=_0x24a578;return _0x2cfd87;});}})[_0xaa89('0x34')](respondWithFilteredResult(_0x120f55,_0x2ebb5b))[_0xaa89('0x26')](handleError(_0x120f55,null));};exports[_0xaa89('0x67')]=function(_0x556358,_0x387c68,_0x2a5153){return db['WhatsappAccount'][_0xaa89('0x56')]({'where':{'id':_0x556358[_0xaa89('0x51')]['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x387c68,null))[_0xaa89('0x34')](function(_0x29812e){if(_0x29812e){return _0x29812e[_0xaa89('0x67')](_0x556358[_0xaa89('0x3e')][_0xaa89('0x68')]);}})[_0xaa89('0x34')](respondWithStatusCode(_0x387c68,null))[_0xaa89('0x26')](handleError(_0x387c68,null));};exports[_0xaa89('0x69')]=function(_0x1b062b,_0x44da0d,_0x3f32d3){return db[_0xaa89('0x4e')][_0xaa89('0x56')]({'where':{'id':_0x1b062b[_0xaa89('0x51')]['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x44da0d,null))['then'](function(_0x3e4250){if(_0x3e4250){return _0x3e4250[_0xaa89('0x69')](_0x1b062b[_0xaa89('0x58')][_0xaa89('0x68')],_['omit'](_0x1b062b['body'],[_0xaa89('0x68'),'id'])||{})[_0xaa89('0x6a')](function(_0x3504b0){for(var _0x37892a=0x0;_0x37892a<_0x1b062b[_0xaa89('0x58')]['ids'][_0xaa89('0x54')];_0x37892a+=0x1){socket['emit'](_0xaa89('0x6b'),{'UserId':Number(_0x1b062b[_0xaa89('0x58')][_0xaa89('0x68')][_0x37892a]),'WhatsappAccountId':Number(_0x1b062b[_0xaa89('0x51')]['id'])});}return _0x3504b0;});}})['then'](respondWithResult(_0x44da0d,null))[_0xaa89('0x26')](handleError(_0x44da0d,null));};exports['removeAgents']=function(_0x58cde6,_0x220fde,_0x3871c8){return db['WhatsappAccount'][_0xaa89('0x56')]({'where':{'id':_0x58cde6['params']['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x220fde,null))[_0xaa89('0x34')](function(_0x3c99ff){if(_0x3c99ff){return _0x3c99ff['removeAgents'](_0x58cde6['query'][_0xaa89('0x68')])[_0xaa89('0x34')](function(){if(_[_0xaa89('0x6c')](_0x58cde6[_0xaa89('0x3e')][_0xaa89('0x68')])){for(var _0x1f1247=0x0;_0x1f1247<_0x58cde6[_0xaa89('0x3e')][_0xaa89('0x68')][_0xaa89('0x54')];_0x1f1247+=0x1){socket[_0xaa89('0x6d')]('userWhatsappAccount:remove',{'UserId':Number(_0x58cde6[_0xaa89('0x3e')][_0xaa89('0x68')][_0x1f1247]),'WhatsappAccountId':Number(_0x58cde6[_0xaa89('0x51')]['id'])});}}else{socket[_0xaa89('0x6d')](_0xaa89('0x6e'),{'UserId':Number(_0x58cde6[_0xaa89('0x3e')][_0xaa89('0x68')]),'WhatsappAccountId':Number(_0x58cde6[_0xaa89('0x51')]['id'])});}});}})[_0xaa89('0x34')](respondWithStatusCode(_0x220fde,null))[_0xaa89('0x26')](handleError(_0x220fde,null));};exports[_0xaa89('0x6f')]=function(_0x3d14a1,_0x18b457,_0x313922){var _0xa3cd7c={};var _0x71a9fc={};var _0x183263;var _0x146f83;return db['WhatsappAccount'][_0xaa89('0x63')]({'where':{'id':_0x3d14a1[_0xaa89('0x51')]['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x18b457,null))[_0xaa89('0x34')](function(_0x58cb05){if(_0x58cb05){_0x183263=_0x58cb05;_0x71a9fc['model']=_[_0xaa89('0x3d')](db[_0xaa89('0x70')][_0xaa89('0x53')]);_0x71a9fc[_0xaa89('0x3e')]=_[_0xaa89('0x3d')](_0x3d14a1[_0xaa89('0x3e')]);_0x71a9fc[_0xaa89('0x3f')]=_[_0xaa89('0x40')](_0x71a9fc[_0xaa89('0x3c')],_0x71a9fc[_0xaa89('0x3e')]);_0xa3cd7c[_0xaa89('0x41')]=_[_0xaa89('0x40')](_0x71a9fc[_0xaa89('0x3c')],qs['fields'](_0x3d14a1[_0xaa89('0x3e')][_0xaa89('0x42')]));_0xa3cd7c[_0xaa89('0x41')]=_0xa3cd7c[_0xaa89('0x41')]['length']?_0xa3cd7c[_0xaa89('0x41')]:_0x71a9fc[_0xaa89('0x3c')];_0xa3cd7c[_0xaa89('0x45')]=qs[_0xaa89('0x46')](_0x3d14a1[_0xaa89('0x3e')]['sort']);_0xa3cd7c[_0xaa89('0x48')]=qs[_0xaa89('0x3f')](_[_0xaa89('0x47')](_0x3d14a1[_0xaa89('0x3e')],_0x71a9fc[_0xaa89('0x3f')]));if(_0x3d14a1[_0xaa89('0x3e')][_0xaa89('0x4a')]){_0xa3cd7c[_0xaa89('0x48')]=_[_0xaa89('0x4b')](_0xa3cd7c[_0xaa89('0x48')],{'$or':_[_0xaa89('0x39')](_0xa3cd7c[_0xaa89('0x41')],function(_0x3fc49b){var _0x3811a5={};_0x3811a5[_0x3fc49b]={'$like':'%'+_0x3d14a1[_0xaa89('0x3e')][_0xaa89('0x4a')]+'%'};return _0x3811a5;})});}_0xa3cd7c=_['merge']({},_0xa3cd7c,_0x3d14a1[_0xaa89('0x4c')]);return _0x183263[_0xaa89('0x6f')](_0xa3cd7c);}})[_0xaa89('0x34')](function(_0x300486){if(_0x300486){_0x146f83=_0x300486[_0xaa89('0x54')];if(!_0x3d14a1[_0xaa89('0x3e')][_0xaa89('0x43')](_0xaa89('0x44'))){_0xa3cd7c[_0xaa89('0x2d')]=qs[_0xaa89('0x2d')](_0x3d14a1[_0xaa89('0x3e')][_0xaa89('0x2d')]);_0xa3cd7c['offset']=qs[_0xaa89('0x2b')](_0x3d14a1['query']['offset']);}return _0x183263['getAgents'](_0xa3cd7c);}})[_0xaa89('0x34')](function(_0x49cb01){if(_0x49cb01){return _0x49cb01?{'count':_0x146f83,'rows':_0x49cb01}:null;}})['then'](respondWithResult(_0x18b457,null))[_0xaa89('0x26')](handleError(_0x18b457,null));};exports[_0xaa89('0x71')]=function(_0x5153f1,_0x1eebbc){var _0x534ac2=_0x5153f1[_0xaa89('0x51')]['id'];var _0x4d8e8a=_0x5153f1[_0xaa89('0x58')];var _0x35315e=0xc8;var _0x39effd=null;return db[_0xaa89('0x72')][_0xaa89('0x73')]({'isolationLevel':db['sequelize']['Transaction'][_0xaa89('0x74')]['READ_COMMITTED']},function(_0xde727b){return db[_0xaa89('0x4e')][_0xaa89('0x63')]({'where':{'id':_0x534ac2},'transaction':_0xde727b})['then'](function(_0x4ae0fa){if(_0x4ae0fa){return db[_0xaa89('0x75')][_0xaa89('0x76')]({'where':{'WhatsappAccountId':_0x534ac2},'transaction':_0xde727b})[_0xaa89('0x34')](function(){var _0x3e01aa=_[_0xaa89('0x39')](_0x4d8e8a,function(_0x43f909){_0x43f909[_0xaa89('0x60')]=_0x534ac2;return _0x43f909;});return db[_0xaa89('0x75')]['bulkCreate'](_0x3e01aa,{'transaction':_0xde727b});});}else{_0x35315e=0x194;_0x39effd=[];}});})[_0xaa89('0x34')](function(){if(_0x35315e!==0x194){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0x534ac2},'order':_0xaa89('0x77')})[_0xaa89('0x34')](function(_0x42847c){_0x39effd=_0x42847c;});}})[_0xaa89('0x26')](function(_0x53ff2c){_0x35315e=0x1f4;logger['error'](_0x53ff2c['stack']);if(_0x53ff2c['name']){delete _0x53ff2c['name'];}_0x39effd=_0x53ff2c;})[_0xaa89('0x78')](function(){if(_0x39effd===null){_0x1eebbc[_0xaa89('0x27')](_0x35315e);}else{if(_0x35315e===0x1f4){_0x1eebbc['status'](_0x35315e)['send'](_0x39effd);}else{_0x1eebbc[_0xaa89('0x28')](_0x35315e)[_0xaa89('0x2a')](_0x39effd);}}});};exports[_0xaa89('0x79')]=function(_0x2f22fc,_0x16ff0d,_0x4925de){var _0x21ab2a={};var _0x4256f2={};var _0x5c18e9;var _0x4a2c4d;return db[_0xaa89('0x4e')][_0xaa89('0x63')]({'where':{'id':_0x2f22fc['params']['id']}})[_0xaa89('0x34')](handleEntityNotFound(_0x16ff0d,null))['then'](function(_0x325d3c){if(_0x325d3c){_0x5c18e9=_0x325d3c;_0x4256f2[_0xaa89('0x3c')]=_['keys'](db[_0xaa89('0x75')]['rawAttributes']);_0x4256f2[_0xaa89('0x3e')]=_[_0xaa89('0x3d')](_0x2f22fc[_0xaa89('0x3e')]);_0x4256f2[_0xaa89('0x3f')]=_['intersection'](_0x4256f2['model'],_0x4256f2[_0xaa89('0x3e')]);_0x21ab2a['attributes']=_['intersection'](_0x4256f2[_0xaa89('0x3c')],qs[_0xaa89('0x42')](_0x2f22fc['query'][_0xaa89('0x42')]));_0x21ab2a[_0xaa89('0x41')]=_0x21ab2a[_0xaa89('0x41')][_0xaa89('0x54')]?_0x21ab2a[_0xaa89('0x41')]:_0x4256f2[_0xaa89('0x3c')];_0x21ab2a['order']=qs[_0xaa89('0x46')](_0x2f22fc[_0xaa89('0x3e')][_0xaa89('0x46')]);_0x21ab2a['where']=qs[_0xaa89('0x3f')](_[_0xaa89('0x47')](_0x2f22fc['query'],_0x4256f2[_0xaa89('0x3f')]));if(_0x2f22fc[_0xaa89('0x3e')][_0xaa89('0x4a')]){_0x21ab2a['where']=_[_0xaa89('0x4b')](_0x21ab2a[_0xaa89('0x48')],{'$or':_['map'](_0x21ab2a[_0xaa89('0x41')],function(_0x36d27c){var _0x115176={};_0x115176[_0x36d27c]={'$like':'%'+_0x2f22fc['query']['filter']+'%'};return _0x115176;})});}_0x21ab2a=_['merge']({},_0x21ab2a,_0x2f22fc[_0xaa89('0x4c')]);return _0x5c18e9['getApplications'](_0x21ab2a);}})['then'](function(_0x2ecf5c){if(_0x2ecf5c){_0x4a2c4d=_0x2ecf5c[_0xaa89('0x54')];if(!_0x2f22fc[_0xaa89('0x3e')]['hasOwnProperty'](_0xaa89('0x44'))){_0x21ab2a[_0xaa89('0x2d')]=qs[_0xaa89('0x2d')](_0x2f22fc[_0xaa89('0x3e')]['limit']);_0x21ab2a[_0xaa89('0x2b')]=qs[_0xaa89('0x2b')](_0x2f22fc['query'][_0xaa89('0x2b')]);}return _0x5c18e9[_0xaa89('0x79')](_0x21ab2a);}})[_0xaa89('0x34')](function(_0x382a55){if(_0x382a55){return _0x382a55?{'count':_0x4a2c4d,'rows':_0x382a55}:null;}})['then'](respondWithResult(_0x16ff0d,null))[_0xaa89('0x26')](handleError(_0x16ff0d,null));};exports[_0xaa89('0x7a')]=function(_0x5776f6,_0x2b0a04,_0x30f115){var _0x22d1ff={'channel':_0xaa89('0x7b')};var _0x23cba1=[];var _0x4e0088=[];var _0x11ad41={};return db[_0xaa89('0x4e')]['find']({'where':{'id':_0x5776f6[_0xaa89('0x51')]['id']},'include':[{'model':db['WhatsappApplication'],'as':'Applications'}]})[_0xaa89('0x34')](handleEntityNotFound(_0x2b0a04,null))[_0xaa89('0x34')](function(_0x260caa){_0x22d1ff[_0xaa89('0x7c')]=_0x260caa;if(_0x22d1ff[_0xaa89('0x7c')]&&_0x22d1ff['account'][_0xaa89('0x3b')]===_0xaa89('0x7d')&&_0x5776f6['body']['statuses']){if(_0x5776f6[_0xaa89('0x58')][_0xaa89('0x7e')][_0xaa89('0x54')]===0x0)return;if(_0x5776f6[_0xaa89('0x58')]['statuses'][0x0][_0xaa89('0x7f')]!=='read')return;return db[_0xaa89('0x80')][_0xaa89('0x33')]({'read':!![],'readAt':_0x5776f6[_0xaa89('0x58')][_0xaa89('0x7e')][0x0]['timestamp']},{'where':{'messageId':_0x5776f6[_0xaa89('0x58')][_0xaa89('0x7e')][0x0][_0xaa89('0x81')]},'individualHooks':!![]})['then'](function(_0x169ac0){return _0x2b0a04[_0xaa89('0x28')](0xc8)[_0xaa89('0x2a')](_0x169ac0);});}_0x22d1ff[_0xaa89('0x82')]=_[_0xaa89('0x83')](_0x260caa[_0xaa89('0x84')],['priority'],['asc']);if(_0x22d1ff[_0xaa89('0x7c')][_0xaa89('0x84')]){delete _0x22d1ff[_0xaa89('0x7c')][_0xaa89('0x84')];}return db['CmContact']['describe']()[_0xaa89('0x34')](function(_0x361f16){if(!_0x361f16){throw new db[(_0xaa89('0x85'))]['ValidationError'](_0xaa89('0x86'));}_0x23cba1=_['difference'](_[_0xaa89('0x3d')](_0x361f16),[_0xaa89('0x87'),_0xaa89('0x88')]);_0x4e0088=_[_0xaa89('0x89')](_['keys'](_0x361f16),[_0xaa89('0x87'),'updatedAt',_0xaa89('0x8a'),'ListId']);_0x22d1ff['body']={'mapKey':_0xaa89('0x8b')};if(_0x22d1ff[_0xaa89('0x7c')]&&_0x22d1ff[_0xaa89('0x7c')][_0xaa89('0x3b')]==='twilio'){_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x8c')]=_0x5776f6[_0xaa89('0x58')][_0xaa89('0x8d')][_0xaa89('0x8e')]('whatsapp:','');_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x58')]=_0x5776f6[_0xaa89('0x58')]['Body'];_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x8f')]=_0x5776f6[_0xaa89('0x58')][_0xaa89('0x90')];}if(_0x22d1ff[_0xaa89('0x7c')]&&_0x22d1ff[_0xaa89('0x7c')]['type']===_0xaa89('0x7d')){_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x8c')]=_0x5776f6[_0xaa89('0x58')][_0xaa89('0x91')][0x0]['from'];_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x58')]=_0x5776f6[_0xaa89('0x58')][_0xaa89('0x91')][0x0][_0xaa89('0x24')][_0xaa89('0x58')];_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x8f')]=_0x5776f6[_0xaa89('0x58')]['notifications'][0x0]['message_id'];}if(_0x22d1ff[_0xaa89('0x58')]['id']){delete _0x22d1ff[_0xaa89('0x58')]['id'];}if(_['isNil'](_0x22d1ff[_0xaa89('0x58')]['from'])){throw new db[(_0xaa89('0x85'))][(_0xaa89('0x92'))](_0xaa89('0x93'));}if(_['isNil'](_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x58')])||_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x58')]===''){throw new db[(_0xaa89('0x85'))][(_0xaa89('0x92'))](_0xaa89('0x94'));}if(_[_0xaa89('0x95')](_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x96')])){throw new db['Sequelize'][(_0xaa89('0x92'))](_0xaa89('0x97')+_0x4e0088);}if(!_['includes'](_0x4e0088,_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x96')])){throw new db[(_0xaa89('0x85'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4e0088);}_0x11ad41[_0x22d1ff[_0xaa89('0x58')]['mapKey']]=_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x8c')];return db[_0xaa89('0x98')][_0xaa89('0x56')]({'where':{'id':_0x22d1ff['account']['ListId']},'include':[{'model':db[_0xaa89('0x99')],'as':'Contacts','where':_0x11ad41,'limit':0x1,'order':[['updatedAt',_0xaa89('0x9a')]]}]});})['then'](handleEntityNotFound(_0x2b0a04,null))[_0xaa89('0x34')](function(_0x2fb344){if(_0x2fb344){_0x22d1ff[_0xaa89('0x9b')]=_['omit'](_0x2fb344,[_0xaa89('0x9c')]);if(_0x2fb344[_0xaa89('0x9c')]['length']){return _0x2fb344[_0xaa89('0x9c')][0x0];}var _0x4029c1=_[_0xaa89('0x9d')](_0x22d1ff[_0xaa89('0x58')],{'firstName':_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x8c')],'ListId':_0x2fb344['id']});_0x4029c1[_0x22d1ff[_0xaa89('0x58')]['mapKey']]=_0x22d1ff[_0xaa89('0x58')]['from'];return db['CmContact']['create'](_0x4029c1,{'fields':_0x23cba1,'raw':!![]});}})[_0xaa89('0x34')](handleEntityNotFound(_0x2b0a04,null))['then'](function(_0x5722a8){if(_0x5722a8){_0x22d1ff[_0xaa89('0x9e')]=_0x5722a8;var _0x166d18={'ContactId':_0x5722a8['id'],'phone':_0x22d1ff[_0xaa89('0x58')]['from'],'WhatsappAccountId':_0x5776f6[_0xaa89('0x51')]['id']};var _0x4ded32={'ContactId':_0x5722a8['id'],'WhatsappAccountId':_0x5776f6[_0xaa89('0x51')]['id'],'closed':![]};return db['WhatsappInteraction'][_0xaa89('0x56')]({'where':_0x4ded32})['then'](function(_0x57d697){if(_0x57d697){return[_0x57d697,![]];}return db[_0xaa89('0x9f')][_0xaa89('0x57')](_0x166d18)[_0xaa89('0x34')](function(_0x389c50){return[_0x389c50,!![]];});});}})[_0xaa89('0x6a')](function(_0x167dbe,_0x49eee4){_0x22d1ff[_0xaa89('0xa0')]=_0x167dbe[_0xaa89('0x35')]({'plain':!![]});_0x22d1ff[_0xaa89('0xa0')][_0xaa89('0xa1')]=![];if(_0x49eee4){if(_0x22d1ff[_0xaa89('0x7c')]['autoclose']){_0x22d1ff[_0xaa89('0x82')][_0xaa89('0xa2')]({'id':0x0,'priority':_0x22d1ff['applications'][_0xaa89('0x54')]+0x1,'app':_0xaa89('0xa3'),'appdata':'unmanaged','interval':_0xaa89('0xa4')});}_0x22d1ff[_0xaa89('0xa0')][_0xaa89('0xa1')]=!![];}return db[_0xaa89('0x80')][_0xaa89('0x57')]({'phone':_0x22d1ff['body'][_0xaa89('0x8c')],'messageId':_0x22d1ff['body'][_0xaa89('0x8f')],'body':_0x22d1ff[_0xaa89('0x58')][_0xaa89('0x58')],'WhatsappAccountId':_0x5776f6[_0xaa89('0x51')]['id'],'WhatsappInteractionId':_0x167dbe['id'],'direction':'in','ContactId':_0x167dbe[_0xaa89('0xa5')],'AttachmentId':_0x22d1ff['body'][_0xaa89('0xa6')]});})[_0xaa89('0x34')](function(_0x5455cf){_0x22d1ff[_0xaa89('0x24')]=_0x5455cf;if(_0x22d1ff[_0xaa89('0xa0')][_0xaa89('0xa7')]){return db[_0xaa89('0x70')][_0xaa89('0x56')]({'attributes':['id',_0xaa89('0x37')],'where':{'id':_0x22d1ff[_0xaa89('0xa0')][_0xaa89('0xa7')]}})[_0xaa89('0x34')](function(_0x43c017){if(_0x43c017){_0x22d1ff[_0xaa89('0x82')][_0xaa89('0xa8')]({'id':0x0,'priority':0x0,'app':_0xaa89('0xa9'),'appdata':_0x43c017['name']+','+(_0x22d1ff[_0xaa89('0x7c')][_0xaa89('0xaa')]||0xa),'interval':_0xaa89('0xa4')});}return respondWithRpcPromise('Start',_0xaa89('0xab'),_0x22d1ff);});}return respondWithRpcPromise(_0xaa89('0xac'),_0xaa89('0xab'),_0x22d1ff);})[_0xaa89('0x34')](function(_0x4a49c7){if(_0x4a49c7){var _0x1323cc=0xc8;var _0x3d7575=_0xaa89('0xad');logger[_0xaa89('0x1d')](_0xaa89('0x20'),_0x3d7575,_0x1323cc,_0xaa89('0xae'));logger[_0xaa89('0xaf')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x3d7575,_0x1323cc,_0xaa89('0xae'),JSON[_0xaa89('0x21')](_0x4a49c7));if(_0x22d1ff[_0xaa89('0x7c')][_0xaa89('0x3b')]==='twilio'){return _0x2b0a04[_0xaa89('0x28')](_0x1323cc)[_0xaa89('0x2f')](_0xaa89('0xb0'),_0xaa89('0xb1'))[_0xaa89('0xb2')](_0xaa89('0xb3'));}else{return _0x2b0a04[_0xaa89('0x28')](_0x1323cc)[_0xaa89('0x2a')](_0x4a49c7);}}});})['catch'](handleError(_0x2b0a04,null));};exports[_0xaa89('0xb2')]=function(_0x251f91,_0x1968ab,_0x2bbe31){var _0x3ea29d,_0x51e29d,_0x2c9a58;if(_[_0xaa89('0x95')](_0x251f91[_0xaa89('0x58')]['body'])||_0x251f91[_0xaa89('0x58')][_0xaa89('0x58')]===''){throw new db[(_0xaa89('0x85'))][(_0xaa89('0x92'))](_0xaa89('0x94'));}if(_[_0xaa89('0x95')](_0x251f91[_0xaa89('0x58')]['to'])){throw new db[(_0xaa89('0x85'))]['ValidationError'](_0xaa89('0xb4'));}_0x3ea29d=_0x251f91[_0xaa89('0x58')]['to'];return db[_0xaa89('0x4e')][_0xaa89('0x56')]({'where':{'id':_0x251f91[_0xaa89('0x51')]['id']},'include':[{'model':db[_0xaa89('0x98')],'as':_0xaa89('0xb5'),'include':[{'model':db[_0xaa89('0x99')],'as':'Contacts','where':{'mobile':_0x3ea29d},'limit':0x1,'order':[[_0xaa89('0x88'),_0xaa89('0x9a')]]}]}]})['then'](handleEntityNotFound(_0x1968ab,null))['then'](function(_0x3c36d5){if(_0x3c36d5&&_0x3c36d5[_0xaa89('0xb5')]){_0x51e29d=_0x3c36d5['get']({'plain':!![]});if(_0x51e29d[_0xaa89('0xb5')]&&_0x51e29d[_0xaa89('0xb5')][_0xaa89('0x9c')]['length']){return _0x51e29d[_0xaa89('0xb5')]['Contacts'][0x0];}return db['CmContact'][_0xaa89('0x57')](_[_0xaa89('0x9d')](_0x251f91['body'],{'firstName':_0x3ea29d,'mobile':_0x3ea29d,'phone':_0x3ea29d,'ListId':_0x51e29d[_0xaa89('0xb6')]}));}})[_0xaa89('0x34')](handleEntityNotFound(_0x1968ab,null))[_0xaa89('0x34')](function(_0x20e1b3){if(_0x20e1b3){_0x2c9a58=_0x20e1b3;return db[_0xaa89('0x9f')][_0xaa89('0x56')]({'where':{'ContactId':_0x2c9a58['id'],'closed':![],'WhatsappAccountId':_0x51e29d['id']}})[_0xaa89('0x34')](function(_0x5b4c5b){if(_0x5b4c5b){return[_0x5b4c5b,![]];}return db[_0xaa89('0x9f')]['create']({'UserId':_0x251f91[_0xaa89('0x59')]['id'],'ContactId':_0x2c9a58['id'],'WhatsappAccountId':_0x51e29d['id'],'phone':_0x3ea29d,'firstMsgDirection':_0xaa89('0xb7'),'Messages':[_[_0xaa89('0x4b')](_0x251f91['body'],{'read':![],'body':_0x251f91[_0xaa89('0x58')][_0xaa89('0x58')],'phone':_0x3ea29d,'WhatsappAccountId':_0x51e29d['id'],'UserId':_0x251f91[_0xaa89('0x59')]['id'],'ContactId':_0x2c9a58['id']})]},{'include':[{'model':db[_0xaa89('0x80')],'as':_0xaa89('0xb8')}]})[_0xaa89('0x34')](function(_0x40b901){return[_0x40b901,!![]];});});}})[_0xaa89('0x6a')](function(_0x415952,_0xd8525a){if(_0xd8525a){return _0x415952;}return db['WhatsappMessage'][_0xaa89('0x57')](_['merge'](_0x251f91['body'],{'read':![],'body':_0x251f91[_0xaa89('0x58')][_0xaa89('0x58')],'phone':_0x3ea29d,'WhatsappAccountId':_0x51e29d['id'],'WhatsappInteractionId':_0x415952['id'],'UserId':_0x251f91['user']['id'],'ContactId':_0x2c9a58['id']}))[_0xaa89('0x34')](function(_0x45d0e0){_0x415952[_0xaa89('0xb9')][_0xaa89('0xb8')]=[];_0x415952['dataValues'][_0xaa89('0xb8')][_0xaa89('0xa2')](_0x45d0e0[_0xaa89('0xb9')]);return _0x415952;});})[_0xaa89('0x34')](respondWithResult(_0x1968ab,null))[_0xaa89('0x26')](handleError(_0x1968ab,null));};
\ No newline at end of file
index 65ff08a..e8893d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e36=['events','WhatsappAccount','setMaxListeners','update','emit','hook'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x9e36,0x6c));var _0x69e3=function(_0x8720df,_0x3f41ea){_0x8720df=_0x8720df-0x0;var _0x44b435=_0x9e36[_0x8720df];return _0x44b435;};'use strict';var EventEmitter=require(_0x69e3('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0x69e3('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x69e3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x69e3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5f44ac){return function(_0x203560,_0x541a76,_0x15eac0){WhatsappAccountEvents[_0x69e3('0x4')](_0x5f44ac+':'+_0x203560['id'],_0x203560);WhatsappAccountEvents['emit'](_0x5f44ac,_0x203560);_0x15eac0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x69e3('0x5')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x485e=['exports','remove','emit','hook'];(function(_0x5c1cdc,_0x322014){var _0x2e8317=function(_0x2e9dfa){while(--_0x2e9dfa){_0x5c1cdc['push'](_0x5c1cdc['shift']());}};_0x2e8317(++_0x322014);}(_0x485e,0x191));var _0xe485=function(_0x1876b2,_0x5d0225){_0x1876b2=_0x1876b2-0x0;var _0x9fb1e0=_0x485e[_0x1876b2];return _0x9fb1e0;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require('../../mysqldb')['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xe485('0x0')};function emitEvent(_0x325e70){return function(_0x2d8b6f,_0xe6160f,_0x52b209){WhatsappAccountEvents[_0xe485('0x1')](_0x325e70+':'+_0x2d8b6f['id'],_0x2d8b6f);WhatsappAccountEvents['emit'](_0x325e70,_0x2d8b6f);_0x52b209(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0xe485('0x2')](e,emitEvent(event));}}module[_0xe485('0x3')]=WhatsappAccountEvents;
\ No newline at end of file
index 09aeb79..c674083 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb930=['util','../../config/logger','bluebird','request-promise','path','../../config/environment','exports','define','WhatsappAccount','whatsapp_accounts','lodash'];(function(_0x1196df,_0x21ae7f){var _0x58dd69=function(_0x522589){while(--_0x522589){_0x1196df['push'](_0x1196df['shift']());}};_0x58dd69(++_0x21ae7f);}(_0xb930,0xfc));var _0x0b93=function(_0x457f2d,_0x2f9a45){_0x457f2d=_0x457f2d-0x0;var _0x210c86=_0xb930[_0x457f2d];return _0x210c86;};'use strict';var _=require(_0x0b93('0x0'));var util=require(_0x0b93('0x1'));var logger=require(_0x0b93('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0b93('0x3'));var rp=require(_0x0b93('0x4'));var fs=require('fs');var path=require(_0x0b93('0x5'));var rimraf=require('rimraf');var config=require(_0x0b93('0x6'));var attributes=require('./whatsappAccount.attributes');module[_0x0b93('0x7')]=function(_0x5d7b2f,_0x2af0f1){return _0x5d7b2f[_0x0b93('0x8')](_0x0b93('0x9'),attributes,{'tableName':_0x0b93('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf976=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','lodash','util'];(function(_0x59ed58,_0x270955){var _0x28ae4a=function(_0x5826e4){while(--_0x5826e4){_0x59ed58['push'](_0x59ed58['shift']());}};_0x28ae4a(++_0x270955);}(_0xf976,0xe2));var _0x6f97=function(_0x23873e,_0x302ccd){_0x23873e=_0x23873e-0x0;var _0x28496c=_0xf976[_0x23873e];return _0x28496c;};'use strict';var _=require(_0x6f97('0x0'));var util=require(_0x6f97('0x1'));var logger=require(_0x6f97('0x2'))(_0x6f97('0x3'));var moment=require(_0x6f97('0x4'));var BPromise=require(_0x6f97('0x5'));var rp=require(_0x6f97('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6f97('0x7'));var attributes=require(_0x6f97('0x8'));module[_0x6f97('0x9')]=function(_0x47a68a,_0x372109){return _0x47a68a[_0x6f97('0xa')]('WhatsappAccount',attributes,{'tableName':_0x6f97('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 213c603..c2b1429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e04=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','include','map','model'];(function(_0x232b67,_0x3dc89e){var _0x39fcc0=function(_0x3e20c6){while(--_0x3e20c6){_0x232b67['push'](_0x232b67['shift']());}};_0x39fcc0(++_0x3dc89e);}(_0x3e04,0x14d));var _0x43e0=function(_0x3e7e96,_0x5683ca){_0x3e7e96=_0x3e7e96-0x0;var _0x13f6f0=_0x3e04[_0x3e7e96];return _0x13f6f0;};'use strict';var _=require('lodash');var util=require(_0x43e0('0x0'));var moment=require(_0x43e0('0x1'));var BPromise=require(_0x43e0('0x2'));var rs=require(_0x43e0('0x3'));var fs=require('fs');var Redis=require(_0x43e0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x43e0('0x5'));var logger=require(_0x43e0('0x6'))(_0x43e0('0x7'));var config=require(_0x43e0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x43e0('0x9')][_0x43e0('0xa')]({'port':0x232a});config[_0x43e0('0xb')]=_[_0x43e0('0xc')](config[_0x43e0('0xb')],{'host':_0x43e0('0xd'),'port':0x18eb});var socket=require(_0x43e0('0xe'))(new Redis(config['redis']));require(_0x43e0('0xf'))[_0x43e0('0x10')](socket);function respondWithRpcPromise(_0x5c802a,_0x13238f,_0x3cb329){return new BPromise(function(_0x3f5261,_0x3c3614){return client['request'](_0x5c802a,_0x3cb329)[_0x43e0('0x11')](function(_0x569dec){logger[_0x43e0('0x12')](_0x43e0('0x13'),_0x13238f,'request\x20sent');logger[_0x43e0('0x14')](_0x43e0('0x15'),_0x13238f,_0x43e0('0x16'),JSON[_0x43e0('0x17')](_0x569dec));if(_0x569dec[_0x43e0('0x18')]){if(_0x569dec[_0x43e0('0x18')]['code']===0x1f4){logger[_0x43e0('0x18')]('WhatsappAccount,\x20%s,\x20%s',_0x13238f,_0x569dec[_0x43e0('0x18')][_0x43e0('0x19')]);return _0x3c3614(_0x569dec[_0x43e0('0x18')][_0x43e0('0x19')]);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x13238f,_0x569dec[_0x43e0('0x18')][_0x43e0('0x19')]);return _0x3f5261(_0x569dec['error'][_0x43e0('0x19')]);}else{logger[_0x43e0('0x12')](_0x43e0('0x13'),_0x13238f,'request\x20sent');_0x3f5261(_0x569dec[_0x43e0('0x1a')][_0x43e0('0x19')]);}})[_0x43e0('0x1b')](function(_0x300eda){logger[_0x43e0('0x18')](_0x43e0('0x13'),_0x13238f,_0x300eda);_0x3c3614(_0x300eda);});});}exports[_0x43e0('0x1c')]=function(_0x5b8db5){var _0x5d8de7=this;return new Promise(function(_0x3d3c06,_0x27bce5){return db[_0x43e0('0x1d')][_0x43e0('0x1e')]({'raw':_0x5b8db5[_0x43e0('0x1f')]?_0x5b8db5[_0x43e0('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x5b8db5[_0x43e0('0x1f')]?_0x5b8db5[_0x43e0('0x1f')][_0x43e0('0x20')]||null:null,'attributes':_0x5b8db5[_0x43e0('0x1f')]?_0x5b8db5[_0x43e0('0x1f')][_0x43e0('0x21')]||null:null,'include':_0x5b8db5[_0x43e0('0x1f')]?_0x5b8db5['options'][_0x43e0('0x22')]?_[_0x43e0('0x23')](_0x5b8db5[_0x43e0('0x1f')][_0x43e0('0x22')],function(_0x2cf303){return{'model':db[_0x2cf303[_0x43e0('0x24')]],'as':_0x2cf303['as'],'attributes':_0x2cf303[_0x43e0('0x21')],'include':_0x2cf303[_0x43e0('0x22')]?_[_0x43e0('0x23')](_0x2cf303[_0x43e0('0x22')],function(_0x323c15){return{'model':db[_0x323c15[_0x43e0('0x24')]],'as':_0x323c15['as'],'attributes':_0x323c15['attributes'],'include':_0x323c15['include']?_[_0x43e0('0x23')](_0x323c15['include'],function(_0x45d53f){return{'model':db[_0x45d53f[_0x43e0('0x24')]],'as':_0x45d53f['as'],'attributes':_0x45d53f['attributes']};}):[]};}):[]};}):[]:[]})[_0x43e0('0x11')](function(_0x29a886){logger[_0x43e0('0x12')](_0x43e0('0x1c'),_0x5b8db5);logger[_0x43e0('0x14')](_0x43e0('0x1c'),_0x5b8db5,JSON[_0x43e0('0x17')](_0x29a886));_0x3d3c06(_0x29a886);})['catch'](function(_0x27f150){logger['error'](_0x43e0('0x1c'),_0x27f150[_0x43e0('0x19')],_0x5b8db5);_0x27bce5(_0x5d8de7[_0x43e0('0x18')](0x1f4,_0x27f150['message']));});});};
\ No newline at end of file
+var _0x48e4=['ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','include','map','model','stringify','util','moment','randomstring'];(function(_0xd2ec30,_0x188b29){var _0x59874e=function(_0x8e1277){while(--_0x8e1277){_0xd2ec30['push'](_0xd2ec30['shift']());}};_0x59874e(++_0x188b29);}(_0x48e4,0xdb));var _0x448e=function(_0x34731f,_0xa1a62e){_0x34731f=_0x34731f-0x0;var _0x5832f1=_0x48e4[_0x34731f];return _0x5832f1;};'use strict';var _=require('lodash');var util=require(_0x448e('0x0'));var moment=require(_0x448e('0x1'));var BPromise=require('bluebird');var rs=require(_0x448e('0x2'));var fs=require('fs');var Redis=require(_0x448e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x448e('0x4'));var logger=require('../../config/logger')(_0x448e('0x5'));var config=require(_0x448e('0x6'));var jayson=require(_0x448e('0x7'));var client=jayson[_0x448e('0x8')][_0x448e('0x9')]({'port':0x232a});config[_0x448e('0xa')]=_[_0x448e('0xb')](config[_0x448e('0xa')],{'host':_0x448e('0xc'),'port':0x18eb});var socket=require(_0x448e('0xd'))(new Redis(config[_0x448e('0xa')]));require(_0x448e('0xe'))[_0x448e('0xf')](socket);function respondWithRpcPromise(_0x380b7b,_0x4662fb,_0x407a3c){return new BPromise(function(_0xf1b350,_0x479abf){return client[_0x448e('0x10')](_0x380b7b,_0x407a3c)[_0x448e('0x11')](function(_0x56ef65){logger[_0x448e('0x12')](_0x448e('0x13'),_0x4662fb,'request\x20sent');logger[_0x448e('0x14')](_0x448e('0x15'),_0x4662fb,_0x448e('0x16'),JSON['stringify'](_0x56ef65));if(_0x56ef65[_0x448e('0x17')]){if(_0x56ef65[_0x448e('0x17')][_0x448e('0x18')]===0x1f4){logger[_0x448e('0x17')](_0x448e('0x13'),_0x4662fb,_0x56ef65[_0x448e('0x17')][_0x448e('0x19')]);return _0x479abf(_0x56ef65[_0x448e('0x17')][_0x448e('0x19')]);}logger['error'](_0x448e('0x13'),_0x4662fb,_0x56ef65[_0x448e('0x17')]['message']);return _0xf1b350(_0x56ef65[_0x448e('0x17')]['message']);}else{logger[_0x448e('0x12')](_0x448e('0x13'),_0x4662fb,_0x448e('0x16'));_0xf1b350(_0x56ef65['result'][_0x448e('0x19')]);}})[_0x448e('0x1a')](function(_0x3974e0){logger['error'](_0x448e('0x13'),_0x4662fb,_0x3974e0);_0x479abf(_0x3974e0);});});}exports[_0x448e('0x1b')]=function(_0x489f91){var _0x3cb55d=this;return new Promise(function(_0x1a67b1,_0x5b0a4b){return db[_0x448e('0x1c')][_0x448e('0x1d')]({'raw':_0x489f91[_0x448e('0x1e')]?_0x489f91[_0x448e('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x489f91[_0x448e('0x1e')]?_0x489f91[_0x448e('0x1e')][_0x448e('0x1f')]||null:null,'attributes':_0x489f91[_0x448e('0x1e')]?_0x489f91[_0x448e('0x1e')][_0x448e('0x20')]||null:null,'include':_0x489f91[_0x448e('0x1e')]?_0x489f91['options'][_0x448e('0x21')]?_[_0x448e('0x22')](_0x489f91[_0x448e('0x1e')][_0x448e('0x21')],function(_0x529627){return{'model':db[_0x529627[_0x448e('0x23')]],'as':_0x529627['as'],'attributes':_0x529627[_0x448e('0x20')],'include':_0x529627[_0x448e('0x21')]?_[_0x448e('0x22')](_0x529627[_0x448e('0x21')],function(_0x11edd4){return{'model':db[_0x11edd4[_0x448e('0x23')]],'as':_0x11edd4['as'],'attributes':_0x11edd4[_0x448e('0x20')],'include':_0x11edd4[_0x448e('0x21')]?_[_0x448e('0x22')](_0x11edd4[_0x448e('0x21')],function(_0x1fb2f5){return{'model':db[_0x1fb2f5['model']],'as':_0x1fb2f5['as'],'attributes':_0x1fb2f5[_0x448e('0x20')]};}):[]};}):[]};}):[]:[]})[_0x448e('0x11')](function(_0x3dafbf){logger[_0x448e('0x12')](_0x448e('0x1b'),_0x489f91);logger[_0x448e('0x14')](_0x448e('0x1b'),_0x489f91,JSON[_0x448e('0x24')](_0x3dafbf));_0x1a67b1(_0x3dafbf);})[_0x448e('0x1a')](function(_0x134bc4){logger[_0x448e('0x17')](_0x448e('0x1b'),_0x134bc4[_0x448e('0x19')],_0x489f91);_0x5b0a4b(_0x3cb55d['error'](0x1f4,_0x134bc4[_0x448e('0x19')]));});});};
\ No newline at end of file
index 1196055..f9f34fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f7=['remove','update','removeListener','register','length','./whatsappAccount.events','save'];(function(_0x3f73e4,_0x19d102){var _0x36637e=function(_0x1c3d68){while(--_0x1c3d68){_0x3f73e4['push'](_0x3f73e4['shift']());}};_0x36637e(++_0x19d102);}(_0x19f7,0x132));var _0x719f=function(_0x4beed0,_0x2ddabc){_0x4beed0=_0x4beed0-0x0;var _0x5a2703=_0x19f7[_0x4beed0];return _0x5a2703;};'use strict';var WhatsappAccountEvents=require(_0x719f('0x0'));var events=[_0x719f('0x1'),_0x719f('0x2'),_0x719f('0x3')];function createListener(_0x46dd49,_0x4f9615){return function(_0x32ef45){_0x4f9615['emit'](_0x46dd49,_0x32ef45);};}function removeListener(_0x33cfaf,_0x38bde7){return function(){WhatsappAccountEvents[_0x719f('0x4')](_0x33cfaf,_0x38bde7);};}exports[_0x719f('0x5')]=function(_0xe56eeb){for(var _0x4bdd85=0x0,_0x225681=events[_0x719f('0x6')];_0x4bdd85<_0x225681;_0x4bdd85++){var _0x2477e9=events[_0x4bdd85];var _0x4601e3=createListener('whatsappAccount:'+_0x2477e9,_0xe56eeb);WhatsappAccountEvents['on'](_0x2477e9,_0x4601e3);}};
\ No newline at end of file
+var _0x6620=['register','length','whatsappAccount:','./whatsappAccount.events','remove','update','removeListener'];(function(_0x4545a4,_0x2f9271){var _0x5b51ab=function(_0x2f688d){while(--_0x2f688d){_0x4545a4['push'](_0x4545a4['shift']());}};_0x5b51ab(++_0x2f9271);}(_0x6620,0x145));var _0x0662=function(_0x1431fa,_0x13ea9a){_0x1431fa=_0x1431fa-0x0;var _0xbfad85=_0x6620[_0x1431fa];return _0xbfad85;};'use strict';var WhatsappAccountEvents=require(_0x0662('0x0'));var events=['save',_0x0662('0x1'),_0x0662('0x2')];function createListener(_0x141358,_0x1aed98){return function(_0x3a228b){_0x1aed98['emit'](_0x141358,_0x3a228b);};}function removeListener(_0x3b6742,_0x18dac6){return function(){WhatsappAccountEvents[_0x0662('0x3')](_0x3b6742,_0x18dac6);};}exports[_0x0662('0x4')]=function(_0x5d9b4a){for(var _0x25929f=0x0,_0x41aadd=events[_0x0662('0x5')];_0x25929f<_0x41aadd;_0x25929f++){var _0x2bc560=events[_0x25929f];var _0x2584c0=createListener(_0x0662('0x6')+_0x2bc560,_0x5d9b4a);WhatsappAccountEvents['on'](_0x2bc560,_0x2584c0);}};
\ No newline at end of file
index 1ced1b7..804627e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c7e=['index','get','show','create','put','/:id','delete','destroy','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','isAuthenticated'];(function(_0x43f05f,_0x30c67c){var _0x438c52=function(_0x44171d){while(--_0x44171d){_0x43f05f['push'](_0x43f05f['shift']());}};_0x438c52(++_0x30c67c);}(_0x7c7e,0x13a));var _0xe7c7=function(_0x569866,_0x352e6a){_0x569866=_0x569866-0x0;var _0x1eb126=_0x7c7e[_0x569866];return _0x1eb126;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7c7('0x0'));var timeout=require(_0xe7c7('0x1'));var express=require('express');var router=express[_0xe7c7('0x2')]();var fs_extra=require(_0xe7c7('0x3'));var auth=require(_0xe7c7('0x4'));var interaction=require(_0xe7c7('0x5'));var config=require(_0xe7c7('0x6'));var controller=require(_0xe7c7('0x7'));router['get']('/',auth[_0xe7c7('0x8')](),controller[_0xe7c7('0x9')]);router[_0xe7c7('0xa')]('/:id',auth[_0xe7c7('0x8')](),controller[_0xe7c7('0xb')]);router['post']('/',auth[_0xe7c7('0x8')](),controller[_0xe7c7('0xc')]);router[_0xe7c7('0xd')](_0xe7c7('0xe'),auth[_0xe7c7('0x8')](),controller['update']);router[_0xe7c7('0xf')](_0xe7c7('0xe'),auth[_0xe7c7('0x8')](),controller[_0xe7c7('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x0aa8=['/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','show','post','put'];(function(_0x1dce05,_0x3d43f7){var _0x3dabb1=function(_0x415a5b){while(--_0x415a5b){_0x1dce05['push'](_0x1dce05['shift']());}};_0x3dabb1(++_0x3d43f7);}(_0x0aa8,0xcc));var _0x80aa=function(_0x2440fe,_0x281a11){_0x2440fe=_0x2440fe-0x0;var _0x5cf734=_0x0aa8[_0x2440fe];return _0x5cf734;};'use strict';var multer=require(_0x80aa('0x0'));var util=require(_0x80aa('0x1'));var path=require(_0x80aa('0x2'));var timeout=require(_0x80aa('0x3'));var express=require(_0x80aa('0x4'));var router=express[_0x80aa('0x5')]();var fs_extra=require(_0x80aa('0x6'));var auth=require(_0x80aa('0x7'));var interaction=require(_0x80aa('0x8'));var config=require(_0x80aa('0x9'));var controller=require(_0x80aa('0xa'));router[_0x80aa('0xb')]('/',auth[_0x80aa('0xc')](),controller['index']);router[_0x80aa('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x80aa('0xd')]);router[_0x80aa('0xe')]('/',auth[_0x80aa('0xc')](),controller['create']);router[_0x80aa('0xf')](_0x80aa('0x10'),auth[_0x80aa('0xc')](),controller['update']);router[_0x80aa('0x11')](_0x80aa('0x10'),auth[_0x80aa('0xc')](),controller[_0x80aa('0x12')]);module[_0x80aa('0x13')]=router;
\ No newline at end of file
index b72f34e..14f219a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84fc=['STRING','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x1601ef,_0x6c7009){var _0x1c8ddc=function(_0x308689){while(--_0x308689){_0x1601ef['push'](_0x1601ef['shift']());}};_0x1c8ddc(++_0x6c7009);}(_0x84fc,0x1a1));var _0xc84f=function(_0x1afda3,_0xf74e14){_0x1afda3=_0x1afda3-0x0;var _0x454b7c=_0x84fc[_0x1afda3];return _0x454b7c;};'use strict';var Sequelize=require(_0xc84f('0x0'));module[_0xc84f('0x1')]={'priority':{'type':Sequelize[_0xc84f('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc84f('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xc84f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xc84f('0x3')],'defaultValue':_0xc84f('0x5')}};
\ No newline at end of file
+var _0x6132=['noop','TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0x33b393,_0x243a60){var _0x331fd7=function(_0x3f1ecc){while(--_0x3f1ecc){_0x33b393['push'](_0x33b393['shift']());}};_0x331fd7(++_0x243a60);}(_0x6132,0x105));var _0x2613=function(_0x2ab407,_0x230531){_0x2ab407=_0x2ab407-0x0;var _0x4b6af9=_0x6132[_0x2ab407];return _0x4b6af9;};'use strict';var Sequelize=require(_0x2613('0x0'));module[_0x2613('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x2613('0x2')],'allowNull':![],'defaultValue':_0x2613('0x3')},'appdata':{'type':Sequelize[_0x2613('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x2613('0x2')],'defaultValue':_0x2613('0x5')}};
\ No newline at end of file
index 153b5dc..5c2c4d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4d9=['../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','index','WhatsappApplication','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','fields','includeAll','options','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x402731,_0x43c115){var _0x111736=function(_0x5a7044){while(--_0x5a7044){_0x402731['push'](_0x402731['shift']());}};_0x111736(++_0x43c115);}(_0xb4d9,0xce));var _0x9b4d=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xb4d9[_0x3e5086];return _0xfeb102;};'use strict';var emlformat=require(_0x9b4d('0x0'));var rimraf=require(_0x9b4d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9b4d('0x2'));var rp=require(_0x9b4d('0x3'));var moment=require(_0x9b4d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9b4d('0x5'));var util=require(_0x9b4d('0x6'));var path=require(_0x9b4d('0x7'));var sox=require(_0x9b4d('0x8'));var csv=require(_0x9b4d('0x9'));var ejs=require(_0x9b4d('0xa'));var fs=require('fs');var fs_extra=require(_0x9b4d('0xb'));var _=require(_0x9b4d('0xc'));var squel=require(_0x9b4d('0xd'));var crypto=require(_0x9b4d('0xe'));var jsforce=require(_0x9b4d('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x9b4d('0x9'));var querystring=require('querystring');var Papa=require(_0x9b4d('0x10'));var Redis=require('ioredis');var authService=require(_0x9b4d('0x11'));var qs=require(_0x9b4d('0x12'));var as=require(_0x9b4d('0x13'));var hardwareService=require(_0x9b4d('0x14'));var logger=require(_0x9b4d('0x15'))(_0x9b4d('0x16'));var utils=require(_0x9b4d('0x17'));var config=require(_0x9b4d('0x18'));var licenseUtil=require(_0x9b4d('0x19'));var db=require(_0x9b4d('0x1a'))['db'];function respondWithStatusCode(_0x1ea6b9,_0x312e95){_0x312e95=_0x312e95||0xcc;return function(_0x4881c4){if(_0x4881c4){return _0x1ea6b9[_0x9b4d('0x1b')](_0x312e95);}return _0x1ea6b9[_0x9b4d('0x1c')](_0x312e95)[_0x9b4d('0x1d')]();};}function respondWithResult(_0x3c4ae0,_0x5c5de2){_0x5c5de2=_0x5c5de2||0xc8;return function(_0x1dc9ee){if(_0x1dc9ee){return _0x3c4ae0['status'](_0x5c5de2)['json'](_0x1dc9ee);}};}function respondWithFilteredResult(_0x3e6921,_0x242de7){return function(_0x2660f2){if(_0x2660f2){var _0x1f9fb7=typeof _0x242de7[_0x9b4d('0x1e')]===_0x9b4d('0x1f')&&typeof _0x242de7['limit']==='undefined';var _0x66ddb9=_0x2660f2[_0x9b4d('0x20')];var _0x15e808=_0x1f9fb7?0x0:_0x242de7[_0x9b4d('0x1e')];var _0x1c52eb=_0x1f9fb7?_0x2660f2[_0x9b4d('0x20')]:_0x242de7[_0x9b4d('0x1e')]+_0x242de7[_0x9b4d('0x21')];var _0xd03471;if(_0x1c52eb>=_0x66ddb9){_0x1c52eb=_0x66ddb9;_0xd03471=0xc8;}else{_0xd03471=0xce;}_0x3e6921[_0x9b4d('0x1c')](_0xd03471);return _0x3e6921[_0x9b4d('0x22')](_0x9b4d('0x23'),_0x15e808+'-'+_0x1c52eb+'/'+_0x66ddb9)[_0x9b4d('0x24')](_0x2660f2);}return null;};}function patchUpdates(_0x2b03d6){return function(_0x12bc05){try{jsonpatch[_0x9b4d('0x25')](_0x12bc05,_0x2b03d6,!![]);}catch(_0x2c5d05){return BPromise[_0x9b4d('0x26')](_0x2c5d05);}return _0x12bc05[_0x9b4d('0x27')]();};}function saveUpdates(_0x35a282,_0x5ea613){return function(_0x3a698f){if(_0x3a698f){return _0x3a698f[_0x9b4d('0x28')](_0x35a282)[_0x9b4d('0x29')](function(_0x495676){return _0x495676;});}return null;};}function removeEntity(_0x38a0b6,_0x5daeda){return function(_0x478b5e){if(_0x478b5e){return _0x478b5e[_0x9b4d('0x2a')]()['then'](function(){_0x38a0b6[_0x9b4d('0x1c')](0xcc)[_0x9b4d('0x1d')]();});}};}function handleEntityNotFound(_0x5607b7,_0x15fe45){return function(_0xdd29f5){if(!_0xdd29f5){_0x5607b7[_0x9b4d('0x1b')](0x194);}return _0xdd29f5;};}function handleError(_0x495a31,_0x504b87){_0x504b87=_0x504b87||0x1f4;return function(_0x465013){logger[_0x9b4d('0x2b')](_0x465013['stack']);if(_0x465013[_0x9b4d('0x2c')]){delete _0x465013['name'];}_0x495a31[_0x9b4d('0x1c')](_0x504b87)['send'](_0x465013);};}exports[_0x9b4d('0x2d')]=function(_0x5dced4,_0x2fdd31){var _0xf006aa={},_0x5e9d1b={},_0x34ca4d={'count':0x0,'rows':[]};var _0x4a6ad8=_['map'](db[_0x9b4d('0x2e')][_0x9b4d('0x2f')],function(_0x4f9382){return{'name':_0x4f9382['fieldName'],'type':_0x4f9382[_0x9b4d('0x30')][_0x9b4d('0x31')]};});_0x5e9d1b[_0x9b4d('0x32')]=_[_0x9b4d('0x33')](_0x4a6ad8,_0x9b4d('0x2c'));_0x5e9d1b[_0x9b4d('0x34')]=_[_0x9b4d('0x35')](_0x5dced4[_0x9b4d('0x34')]);_0x5e9d1b[_0x9b4d('0x36')]=_[_0x9b4d('0x37')](_0x5e9d1b[_0x9b4d('0x32')],_0x5e9d1b[_0x9b4d('0x34')]);_0xf006aa[_0x9b4d('0x38')]=_[_0x9b4d('0x37')](_0x5e9d1b[_0x9b4d('0x32')],qs['fields'](_0x5dced4[_0x9b4d('0x34')]['fields']));_0xf006aa[_0x9b4d('0x38')]=_0xf006aa[_0x9b4d('0x38')][_0x9b4d('0x39')]?_0xf006aa[_0x9b4d('0x38')]:_0x5e9d1b[_0x9b4d('0x32')];if(!_0x5dced4[_0x9b4d('0x34')][_0x9b4d('0x3a')]('nolimit')){_0xf006aa[_0x9b4d('0x21')]=qs[_0x9b4d('0x21')](_0x5dced4[_0x9b4d('0x34')]['limit']);_0xf006aa['offset']=qs[_0x9b4d('0x1e')](_0x5dced4['query']['offset']);}_0xf006aa[_0x9b4d('0x3b')]=qs[_0x9b4d('0x3c')](_0x5dced4[_0x9b4d('0x34')][_0x9b4d('0x3c')]);_0xf006aa[_0x9b4d('0x3d')]=qs['filters'](_[_0x9b4d('0x3e')](_0x5dced4[_0x9b4d('0x34')],_0x5e9d1b['filters']),_0x4a6ad8);if(_0x5dced4[_0x9b4d('0x34')][_0x9b4d('0x3f')]){_0xf006aa[_0x9b4d('0x3d')]=_[_0x9b4d('0x40')](_0xf006aa[_0x9b4d('0x3d')],{'$or':_['map'](_0x4a6ad8,function(_0x4ce93e){if(_0x4ce93e[_0x9b4d('0x30')]!=='VIRTUAL'){var _0x232b87={};_0x232b87[_0x4ce93e[_0x9b4d('0x2c')]]={'$like':'%'+_0x5dced4['query'][_0x9b4d('0x3f')]+'%'};return _0x232b87;}})});}_0xf006aa=_['merge']({},_0xf006aa,_0x5dced4['options']);var _0x2d6432={'where':_0xf006aa['where']};return db[_0x9b4d('0x2e')][_0x9b4d('0x20')](_0x2d6432)[_0x9b4d('0x29')](function(_0x342ad3){_0x34ca4d[_0x9b4d('0x20')]=_0x342ad3;if(_0x5dced4[_0x9b4d('0x34')]['includeAll']){_0xf006aa[_0x9b4d('0x41')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x9b4d('0x42')](_0xf006aa);})[_0x9b4d('0x29')](function(_0x514825){_0x34ca4d[_0x9b4d('0x43')]=_0x514825;return _0x34ca4d;})[_0x9b4d('0x29')](respondWithFilteredResult(_0x2fdd31,_0xf006aa))[_0x9b4d('0x44')](handleError(_0x2fdd31,null));};exports[_0x9b4d('0x45')]=function(_0x4f250f,_0x4834a4){var _0x17a6f0={'raw':!![],'where':{'id':_0x4f250f['params']['id']}},_0x4d0da9={};_0x4d0da9['model']=_[_0x9b4d('0x35')](db[_0x9b4d('0x2e')]['rawAttributes']);_0x4d0da9[_0x9b4d('0x34')]=_[_0x9b4d('0x35')](_0x4f250f[_0x9b4d('0x34')]);_0x4d0da9['filters']=_[_0x9b4d('0x37')](_0x4d0da9[_0x9b4d('0x32')],_0x4d0da9['query']);_0x17a6f0[_0x9b4d('0x38')]=_[_0x9b4d('0x37')](_0x4d0da9['model'],qs[_0x9b4d('0x46')](_0x4f250f[_0x9b4d('0x34')]['fields']));_0x17a6f0[_0x9b4d('0x38')]=_0x17a6f0[_0x9b4d('0x38')]['length']?_0x17a6f0[_0x9b4d('0x38')]:_0x4d0da9[_0x9b4d('0x32')];if(_0x4f250f[_0x9b4d('0x34')][_0x9b4d('0x47')]){_0x17a6f0['include']=[{'all':!![]}];}_0x17a6f0=_[_0x9b4d('0x40')]({},_0x17a6f0,_0x4f250f[_0x9b4d('0x48')]);return db[_0x9b4d('0x2e')][_0x9b4d('0x49')](_0x17a6f0)[_0x9b4d('0x29')](handleEntityNotFound(_0x4834a4,null))[_0x9b4d('0x29')](respondWithResult(_0x4834a4,null))[_0x9b4d('0x44')](handleError(_0x4834a4,null));};exports[_0x9b4d('0x4a')]=function(_0x58a972,_0x5ad303){return db['WhatsappApplication'][_0x9b4d('0x4a')](_0x58a972['body'],{})[_0x9b4d('0x29')](respondWithResult(_0x5ad303,0xc9))[_0x9b4d('0x44')](handleError(_0x5ad303,null));};exports[_0x9b4d('0x28')]=function(_0xe43754,_0x5aa12a){if(_0xe43754[_0x9b4d('0x4b')]['id']){delete _0xe43754['body']['id'];}return db['WhatsappApplication'][_0x9b4d('0x49')]({'where':{'id':_0xe43754[_0x9b4d('0x4c')]['id']}})[_0x9b4d('0x29')](handleEntityNotFound(_0x5aa12a,null))[_0x9b4d('0x29')](saveUpdates(_0xe43754[_0x9b4d('0x4b')],null))[_0x9b4d('0x29')](respondWithResult(_0x5aa12a,null))[_0x9b4d('0x44')](handleError(_0x5aa12a,null));};exports['destroy']=function(_0x5b6fed,_0x24b43f){return db[_0x9b4d('0x2e')][_0x9b4d('0x49')]({'where':{'id':_0x5b6fed[_0x9b4d('0x4c')]['id']}})[_0x9b4d('0x29')](handleEntityNotFound(_0x24b43f,null))[_0x9b4d('0x29')](removeEntity(_0x24b43f,null))[_0x9b4d('0x44')](handleError(_0x24b43f,null));};
\ No newline at end of file
+var _0x5454=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','WhatsappApplication','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','limit','order','sort','where','pick','type','filter','merge','options','includeAll','include','findAll','rows','catch','create','body','find','params','fast-json-patch','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0x5454,0x15b));var _0x4545=function(_0x3a7f35,_0x568db1){_0x3a7f35=_0x3a7f35-0x0;var _0x354243=_0x5454[_0x3a7f35];return _0x354243;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4545('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4545('0x1'));var util=require(_0x4545('0x2'));var path=require(_0x4545('0x3'));var sox=require(_0x4545('0x4'));var csv=require('to-csv');var ejs=require(_0x4545('0x5'));var fs=require('fs');var fs_extra=require(_0x4545('0x6'));var _=require(_0x4545('0x7'));var squel=require(_0x4545('0x8'));var crypto=require(_0x4545('0x9'));var jsforce=require(_0x4545('0xa'));var deskjs=require(_0x4545('0xb'));var toCsv=require(_0x4545('0xc'));var querystring=require(_0x4545('0xd'));var Papa=require(_0x4545('0xe'));var Redis=require(_0x4545('0xf'));var authService=require(_0x4545('0x10'));var qs=require(_0x4545('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4545('0x12'));var logger=require(_0x4545('0x13'))(_0x4545('0x14'));var utils=require(_0x4545('0x15'));var config=require(_0x4545('0x16'));var licenseUtil=require(_0x4545('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3844a3,_0x20a4d8){_0x20a4d8=_0x20a4d8||0xcc;return function(_0x353e42){if(_0x353e42){return _0x3844a3[_0x4545('0x18')](_0x20a4d8);}return _0x3844a3[_0x4545('0x19')](_0x20a4d8)[_0x4545('0x1a')]();};}function respondWithResult(_0x3e7088,_0x347072){_0x347072=_0x347072||0xc8;return function(_0x36bb8e){if(_0x36bb8e){return _0x3e7088[_0x4545('0x19')](_0x347072)[_0x4545('0x1b')](_0x36bb8e);}};}function respondWithFilteredResult(_0x4b5700,_0xb10472){return function(_0x3577f5){if(_0x3577f5){var _0x2416b0=typeof _0xb10472[_0x4545('0x1c')]==='undefined'&&typeof _0xb10472['limit']===_0x4545('0x1d');var _0x29effa=_0x3577f5[_0x4545('0x1e')];var _0x2e13e0=_0x2416b0?0x0:_0xb10472[_0x4545('0x1c')];var _0x33393b=_0x2416b0?_0x3577f5[_0x4545('0x1e')]:_0xb10472[_0x4545('0x1c')]+_0xb10472['limit'];var _0x52a21c;if(_0x33393b>=_0x29effa){_0x33393b=_0x29effa;_0x52a21c=0xc8;}else{_0x52a21c=0xce;}_0x4b5700[_0x4545('0x19')](_0x52a21c);return _0x4b5700['set'](_0x4545('0x1f'),_0x2e13e0+'-'+_0x33393b+'/'+_0x29effa)[_0x4545('0x1b')](_0x3577f5);}return null;};}function patchUpdates(_0x67e408){return function(_0x6b3bc){try{jsonpatch[_0x4545('0x20')](_0x6b3bc,_0x67e408,!![]);}catch(_0x2a39cf){return BPromise[_0x4545('0x21')](_0x2a39cf);}return _0x6b3bc[_0x4545('0x22')]();};}function saveUpdates(_0x550dfb,_0x580b57){return function(_0x431b5d){if(_0x431b5d){return _0x431b5d['update'](_0x550dfb)[_0x4545('0x23')](function(_0x4f8a76){return _0x4f8a76;});}return null;};}function removeEntity(_0x293c18,_0x4c47c0){return function(_0x519489){if(_0x519489){return _0x519489[_0x4545('0x24')]()[_0x4545('0x23')](function(){_0x293c18[_0x4545('0x19')](0xcc)[_0x4545('0x1a')]();});}};}function handleEntityNotFound(_0x344633,_0x39eaa1){return function(_0x43033c){if(!_0x43033c){_0x344633[_0x4545('0x18')](0x194);}return _0x43033c;};}function handleError(_0xac3456,_0x2a6842){_0x2a6842=_0x2a6842||0x1f4;return function(_0x3e5807){logger[_0x4545('0x25')](_0x3e5807[_0x4545('0x26')]);if(_0x3e5807[_0x4545('0x27')]){delete _0x3e5807[_0x4545('0x27')];}_0xac3456[_0x4545('0x19')](_0x2a6842)['send'](_0x3e5807);};}exports[_0x4545('0x28')]=function(_0x2c256b,_0x853476){var _0x394a8e={},_0xb9c5ee={},_0x531250={'count':0x0,'rows':[]};var _0x157fe5=_[_0x4545('0x29')](db[_0x4545('0x2a')][_0x4545('0x2b')],function(_0x1da2a9){return{'name':_0x1da2a9[_0x4545('0x2c')],'type':_0x1da2a9['type'][_0x4545('0x2d')]};});_0xb9c5ee[_0x4545('0x2e')]=_[_0x4545('0x29')](_0x157fe5,_0x4545('0x27'));_0xb9c5ee[_0x4545('0x2f')]=_[_0x4545('0x30')](_0x2c256b[_0x4545('0x2f')]);_0xb9c5ee[_0x4545('0x31')]=_[_0x4545('0x32')](_0xb9c5ee[_0x4545('0x2e')],_0xb9c5ee[_0x4545('0x2f')]);_0x394a8e['attributes']=_[_0x4545('0x32')](_0xb9c5ee['model'],qs[_0x4545('0x33')](_0x2c256b[_0x4545('0x2f')]['fields']));_0x394a8e[_0x4545('0x34')]=_0x394a8e[_0x4545('0x34')][_0x4545('0x35')]?_0x394a8e[_0x4545('0x34')]:_0xb9c5ee[_0x4545('0x2e')];if(!_0x2c256b[_0x4545('0x2f')][_0x4545('0x36')]('nolimit')){_0x394a8e[_0x4545('0x37')]=qs[_0x4545('0x37')](_0x2c256b[_0x4545('0x2f')][_0x4545('0x37')]);_0x394a8e[_0x4545('0x1c')]=qs[_0x4545('0x1c')](_0x2c256b['query'][_0x4545('0x1c')]);}_0x394a8e[_0x4545('0x38')]=qs[_0x4545('0x39')](_0x2c256b[_0x4545('0x2f')][_0x4545('0x39')]);_0x394a8e[_0x4545('0x3a')]=qs[_0x4545('0x31')](_[_0x4545('0x3b')](_0x2c256b[_0x4545('0x2f')],_0xb9c5ee['filters']),_0x157fe5);if(_0x2c256b['query']['filter']){_0x394a8e[_0x4545('0x3a')]=_['merge'](_0x394a8e[_0x4545('0x3a')],{'$or':_[_0x4545('0x29')](_0x157fe5,function(_0x1d19f6){if(_0x1d19f6[_0x4545('0x3c')]!=='VIRTUAL'){var _0x5e54b7={};_0x5e54b7[_0x1d19f6[_0x4545('0x27')]]={'$like':'%'+_0x2c256b['query'][_0x4545('0x3d')]+'%'};return _0x5e54b7;}})});}_0x394a8e=_[_0x4545('0x3e')]({},_0x394a8e,_0x2c256b[_0x4545('0x3f')]);var _0x211092={'where':_0x394a8e[_0x4545('0x3a')]};return db['WhatsappApplication']['count'](_0x211092)[_0x4545('0x23')](function(_0x43c4ce){_0x531250[_0x4545('0x1e')]=_0x43c4ce;if(_0x2c256b['query'][_0x4545('0x40')]){_0x394a8e[_0x4545('0x41')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x4545('0x42')](_0x394a8e);})['then'](function(_0x239246){_0x531250[_0x4545('0x43')]=_0x239246;return _0x531250;})[_0x4545('0x23')](respondWithFilteredResult(_0x853476,_0x394a8e))[_0x4545('0x44')](handleError(_0x853476,null));};exports['show']=function(_0x1ca5d3,_0x632ec1){var _0x3d308e={'raw':!![],'where':{'id':_0x1ca5d3['params']['id']}},_0x299869={};_0x299869['model']=_[_0x4545('0x30')](db['WhatsappApplication'][_0x4545('0x2b')]);_0x299869[_0x4545('0x2f')]=_[_0x4545('0x30')](_0x1ca5d3[_0x4545('0x2f')]);_0x299869[_0x4545('0x31')]=_[_0x4545('0x32')](_0x299869[_0x4545('0x2e')],_0x299869[_0x4545('0x2f')]);_0x3d308e['attributes']=_[_0x4545('0x32')](_0x299869[_0x4545('0x2e')],qs[_0x4545('0x33')](_0x1ca5d3['query'][_0x4545('0x33')]));_0x3d308e[_0x4545('0x34')]=_0x3d308e[_0x4545('0x34')][_0x4545('0x35')]?_0x3d308e[_0x4545('0x34')]:_0x299869[_0x4545('0x2e')];if(_0x1ca5d3[_0x4545('0x2f')][_0x4545('0x40')]){_0x3d308e['include']=[{'all':!![]}];}_0x3d308e=_[_0x4545('0x3e')]({},_0x3d308e,_0x1ca5d3['options']);return db[_0x4545('0x2a')]['find'](_0x3d308e)[_0x4545('0x23')](handleEntityNotFound(_0x632ec1,null))[_0x4545('0x23')](respondWithResult(_0x632ec1,null))[_0x4545('0x44')](handleError(_0x632ec1,null));};exports['create']=function(_0x20f054,_0x2ece03){return db[_0x4545('0x2a')][_0x4545('0x45')](_0x20f054[_0x4545('0x46')],{})[_0x4545('0x23')](respondWithResult(_0x2ece03,0xc9))['catch'](handleError(_0x2ece03,null));};exports['update']=function(_0x499246,_0x563835){if(_0x499246[_0x4545('0x46')]['id']){delete _0x499246[_0x4545('0x46')]['id'];}return db[_0x4545('0x2a')][_0x4545('0x47')]({'where':{'id':_0x499246[_0x4545('0x48')]['id']}})[_0x4545('0x23')](handleEntityNotFound(_0x563835,null))[_0x4545('0x23')](saveUpdates(_0x499246['body'],null))['then'](respondWithResult(_0x563835,null))[_0x4545('0x44')](handleError(_0x563835,null));};exports[_0x4545('0x24')]=function(_0x33a6d2,_0x2946b5){return db[_0x4545('0x2a')][_0x4545('0x47')]({'where':{'id':_0x33a6d2['params']['id']}})[_0x4545('0x23')](handleEntityNotFound(_0x2946b5,null))[_0x4545('0x23')](removeEntity(_0x2946b5,null))['catch'](handleError(_0x2946b5,null));};
\ No newline at end of file
index 8366228..eb100cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5183=['../../config/logger','bluebird','request-promise','path','rimraf','exports','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x1850e2,_0x7dab61){var _0x1f5de4=function(_0x2cfb85){while(--_0x2cfb85){_0x1850e2['push'](_0x1850e2['shift']());}};_0x1f5de4(++_0x7dab61);}(_0x5183,0x13e));var _0x3518=function(_0x2ca8f1,_0x4b835f){_0x2ca8f1=_0x2ca8f1-0x0;var _0x1bd234=_0x5183[_0x2ca8f1];return _0x1bd234;};'use strict';var _=require(_0x3518('0x0'));var util=require(_0x3518('0x1'));var logger=require(_0x3518('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3518('0x3'));var rp=require(_0x3518('0x4'));var fs=require('fs');var path=require(_0x3518('0x5'));var rimraf=require(_0x3518('0x6'));var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module[_0x3518('0x7')]=function(_0x1031a9,_0x2c019c){return _0x1031a9['define']('WhatsappApplication',attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3518('0x8'),'collate':_0x3518('0x9')});};
\ No newline at end of file
+var _0x1cc7=['define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','request-promise','path','rimraf'];(function(_0x479c2c,_0x57b02b){var _0x230e80=function(_0x1d005b){while(--_0x1d005b){_0x479c2c['push'](_0x479c2c['shift']());}};_0x230e80(++_0x57b02b);}(_0x1cc7,0x15a));var _0x71cc=function(_0x3e018a,_0x23b40d){_0x3e018a=_0x3e018a-0x0;var _0xd3024e=_0x1cc7[_0x3e018a];return _0xd3024e;};'use strict';var _=require(_0x71cc('0x0'));var util=require(_0x71cc('0x1'));var logger=require(_0x71cc('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x71cc('0x3'));var fs=require('fs');var path=require(_0x71cc('0x4'));var rimraf=require(_0x71cc('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module['exports']=function(_0x27a175,_0x4ecf81){return _0x27a175[_0x71cc('0x6')](_0x71cc('0x7'),attributes,{'tableName':_0x71cc('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x71cc('0x9'),'collate':_0x71cc('0xa')});};
\ No newline at end of file
index 62e3056..3889e5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x14fb8c,_0x5c74f7){var _0x51343c=function(_0x4cb7c0){while(--_0x4cb7c0){_0x14fb8c['push'](_0x14fb8c['shift']());}};_0x51343c(++_0x5c74f7);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x31ad8d,_0x5115ea){_0x31ad8d=_0x31ad8d-0x0;var _0xb77b2=_0xd6d6[_0x31ad8d];return _0xb77b2;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var moment=require(_0x6d6d('0x2'));var BPromise=require(_0x6d6d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6d6d('0x4'));var db=require(_0x6d6d('0x5'))['db'];var utils=require(_0x6d6d('0x6'));var logger=require(_0x6d6d('0x7'))(_0x6d6d('0x8'));var config=require(_0x6d6d('0x9'));var jayson=require(_0x6d6d('0xa'));var client=jayson['client'][_0x6d6d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bf731,_0x44f83d,_0x18f824){return new BPromise(function(_0xd49f57,_0x408f88){return client[_0x6d6d('0xc')](_0x1bf731,_0x18f824)['then'](function(_0x51dd38){logger[_0x6d6d('0xd')](_0x6d6d('0xe'),_0x44f83d,_0x6d6d('0xf'));logger[_0x6d6d('0x10')](_0x6d6d('0x11'),_0x44f83d,'request\x20sent',JSON[_0x6d6d('0x12')](_0x51dd38));if(_0x51dd38[_0x6d6d('0x13')]){if(_0x51dd38['error']['code']===0x1f4){logger[_0x6d6d('0x13')](_0x6d6d('0xe'),_0x44f83d,_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);return _0x408f88(_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);}logger[_0x6d6d('0x13')](_0x6d6d('0xe'),_0x44f83d,_0x51dd38['error'][_0x6d6d('0x14')]);return _0xd49f57(_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);}else{logger[_0x6d6d('0xd')](_0x6d6d('0xe'),_0x44f83d,'request\x20sent');_0xd49f57(_0x51dd38[_0x6d6d('0x15')]['message']);}})[_0x6d6d('0x16')](function(_0x2cbc86){logger[_0x6d6d('0x13')]('WhatsappApplication,\x20%s,\x20%s',_0x44f83d,_0x2cbc86);_0x408f88(_0x2cbc86);});});}
\ No newline at end of file
+var _0xbd50=['WhatsappApplication,\x20%s,\x20%s','request\x20sent','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xbd50,0x196));var _0x0bd5=function(_0x56b878,_0x4be9aa){_0x56b878=_0x56b878-0x0;var _0x32b9ec=_0xbd50[_0x56b878];return _0x32b9ec;};'use strict';var _=require(_0x0bd5('0x0'));var util=require(_0x0bd5('0x1'));var moment=require(_0x0bd5('0x2'));var BPromise=require('bluebird');var rs=require(_0x0bd5('0x3'));var fs=require('fs');var Redis=require(_0x0bd5('0x4'));var db=require(_0x0bd5('0x5'))['db'];var utils=require(_0x0bd5('0x6'));var logger=require(_0x0bd5('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0bd5('0x8')][_0x0bd5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xcc6cfa,_0x2c0db1,_0x1b99f3){return new BPromise(function(_0x5ebe64,_0x47e78d){return client[_0x0bd5('0xa')](_0xcc6cfa,_0x1b99f3)[_0x0bd5('0xb')](function(_0x259f4c){logger['info'](_0x0bd5('0xc'),_0x2c0db1,_0x0bd5('0xd'));logger['debug'](_0x0bd5('0xe'),_0x2c0db1,_0x0bd5('0xd'),JSON['stringify'](_0x259f4c));if(_0x259f4c[_0x0bd5('0xf')]){if(_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x10')]===0x1f4){logger['error'](_0x0bd5('0xc'),_0x2c0db1,_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x11')]);return _0x47e78d(_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x11')]);}logger[_0x0bd5('0xf')](_0x0bd5('0xc'),_0x2c0db1,_0x259f4c[_0x0bd5('0xf')]['message']);return _0x5ebe64(_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x11')]);}else{logger['info'](_0x0bd5('0xc'),_0x2c0db1,_0x0bd5('0xd'));_0x5ebe64(_0x259f4c[_0x0bd5('0x12')][_0x0bd5('0x11')]);}})['catch'](function(_0x14f32c){logger[_0x0bd5('0xf')](_0x0bd5('0xc'),_0x2c0db1,_0x14f32c);_0x47e78d(_0x14f32c);});});}
\ No newline at end of file
index 468eb9e..be065b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cad=['whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0x8cad,0xfe));var _0xd8ca=function(_0x38ced4,_0x24263f){_0x38ced4=_0x38ced4-0x0;var _0x547c07=_0x8cad[_0x38ced4];return _0x547c07;};'use strict';var multer=require(_0xd8ca('0x0'));var util=require(_0xd8ca('0x1'));var path=require(_0xd8ca('0x2'));var timeout=require(_0xd8ca('0x3'));var express=require(_0xd8ca('0x4'));var router=express[_0xd8ca('0x5')]();var fs_extra=require(_0xd8ca('0x6'));var auth=require(_0xd8ca('0x7'));var interaction=require(_0xd8ca('0x8'));var config=require(_0xd8ca('0x9'));var controller=require(_0xd8ca('0xa'));router[_0xd8ca('0xb')]('/',auth[_0xd8ca('0xc')](),controller[_0xd8ca('0xd')]);router['get'](_0xd8ca('0xe'),auth[_0xd8ca('0xc')](),controller[_0xd8ca('0xf')]);router[_0xd8ca('0xb')](_0xd8ca('0x10'),auth['isAuthenticated'](),controller[_0xd8ca('0x11')]);router['get'](_0xd8ca('0x12'),auth[_0xd8ca('0xc')](),controller[_0xd8ca('0x13')]);router[_0xd8ca('0xb')](_0xd8ca('0x14'),auth[_0xd8ca('0xc')](),controller['download']);router[_0xd8ca('0x15')]('/',auth[_0xd8ca('0xc')](),controller[_0xd8ca('0x16')]);router[_0xd8ca('0x15')](_0xd8ca('0x12'),auth[_0xd8ca('0xc')](),controller[_0xd8ca('0x17')]);router[_0xd8ca('0x15')](_0xd8ca('0x18'),auth['isAuthenticated'](),interaction[_0xd8ca('0x19')](_0xd8ca('0x1a'),_0xd8ca('0x1b')),controller[_0xd8ca('0x1c')]);router[_0xd8ca('0x1d')](_0xd8ca('0x10'),auth[_0xd8ca('0xc')](),interaction[_0xd8ca('0x19')](_0xd8ca('0x1a'),_0xd8ca('0x1e')),controller['update']);router[_0xd8ca('0x1f')](_0xd8ca('0x10'),auth[_0xd8ca('0xc')](),interaction[_0xd8ca('0x19')]('whatsapp','whatsappinteraction:destroy'),controller[_0xd8ca('0x20')]);router['delete'](_0xd8ca('0x18'),auth[_0xd8ca('0xc')](),controller[_0xd8ca('0x21')]);module[_0xd8ca('0x22')]=router;
\ No newline at end of file
+var _0x8f9d=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','isAuthenticated','index','get','/describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','whatsapp','addTags','put','whatsappinteraction:update','destroy','removeTags','multer','path','express'];(function(_0x5a1826,_0x4dd07d){var _0x4b1240=function(_0x1c258e){while(--_0x1c258e){_0x5a1826['push'](_0x5a1826['shift']());}};_0x4b1240(++_0x4dd07d);}(_0x8f9d,0x93));var _0xd8f9=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x8f9d[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0xd8f9('0x0'));var util=require('util');var path=require(_0xd8f9('0x1'));var timeout=require('connect-timeout');var express=require(_0xd8f9('0x2'));var router=express[_0xd8f9('0x3')]();var fs_extra=require(_0xd8f9('0x4'));var auth=require(_0xd8f9('0x5'));var interaction=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var controller=require(_0xd8f9('0x8'));router['get']('/',auth[_0xd8f9('0x9')](),controller[_0xd8f9('0xa')]);router[_0xd8f9('0xb')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller['describe']);router[_0xd8f9('0xb')](_0xd8f9('0xd'),auth['isAuthenticated'](),controller[_0xd8f9('0xe')]);router['get']('/:id/messages',auth[_0xd8f9('0x9')](),controller[_0xd8f9('0xf')]);router[_0xd8f9('0xb')](_0xd8f9('0x10'),auth[_0xd8f9('0x9')](),controller[_0xd8f9('0x11')]);router[_0xd8f9('0x12')]('/',auth['isAuthenticated'](),controller[_0xd8f9('0x13')]);router['post'](_0xd8f9('0x14'),auth[_0xd8f9('0x9')](),controller[_0xd8f9('0x15')]);router['post'](_0xd8f9('0x16'),auth[_0xd8f9('0x9')](),interaction[_0xd8f9('0x17')](_0xd8f9('0x18'),'whatsappinteraction:addtags'),controller[_0xd8f9('0x19')]);router[_0xd8f9('0x1a')](_0xd8f9('0xd'),auth[_0xd8f9('0x9')](),interaction[_0xd8f9('0x17')](_0xd8f9('0x18'),_0xd8f9('0x1b')),controller['update']);router['delete'](_0xd8f9('0xd'),auth[_0xd8f9('0x9')](),interaction['tracked'](_0xd8f9('0x18'),'whatsappinteraction:destroy'),controller[_0xd8f9('0x1c')]);router['delete']('/:id/tags',auth['isAuthenticated'](),controller[_0xd8f9('0x1d')]);module['exports']=router;
\ No newline at end of file
index 7c49b40..5f609f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29af=['STRING','ENUM','out','BOOLEAN','sequelize','moment','exports','DATE'];(function(_0x58cfdb,_0x41e7f6){var _0x1277d7=function(_0x12c41a){while(--_0x12c41a){_0x58cfdb['push'](_0x58cfdb['shift']());}};_0x1277d7(++_0x41e7f6);}(_0x29af,0x134));var _0xf29a=function(_0x126da9,_0x7fcaa8){_0x126da9=_0x126da9-0x0;var _0x170d32=_0x29af[_0x126da9];return _0x170d32;};'use strict';var Sequelize=require(_0xf29a('0x0'));var moment=require(_0xf29a('0x1'));module[_0xf29a('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf29a('0x3')]},'disposition':{'type':Sequelize[_0xf29a('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xf29a('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xf29a('0x4')]},'read1stAt':{'type':Sequelize[_0xf29a('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf29a('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xf29a('0x5')]('in',_0xf29a('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xf29a('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xaf79=['DATE','STRING','ENUM','out','moment','exports','BOOLEAN'];(function(_0x599ee8,_0x4a848c){var _0x2887e3=function(_0x2e23d4){while(--_0x2e23d4){_0x599ee8['push'](_0x599ee8['shift']());}};_0x2887e3(++_0x4a848c);}(_0xaf79,0x82));var _0x9af7=function(_0x15e578,_0x3b2d6f){_0x15e578=_0x15e578-0x0;var _0x4a33c7=_0xaf79[_0x15e578];return _0x4a33c7;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9af7('0x0'));module[_0x9af7('0x1')]={'closed':{'type':Sequelize[_0x9af7('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9af7('0x3')]},'disposition':{'type':Sequelize[_0x9af7('0x4')]},'secondDisposition':{'type':Sequelize[_0x9af7('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x9af7('0x4')]},'phone':{'type':Sequelize[_0x9af7('0x4')]},'read1stAt':{'type':Sequelize[_0x9af7('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x9af7('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x9af7('0x5')]('in',_0x9af7('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9af7('0x2')],'defaultValue':![]}};
\ No newline at end of file
index e10258e..45dd735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3379=['download','unix','root','server','files','tmp','join','attachments','format','transcript-%d-%s.zip','User','CmContact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','Owner','Whatsapp','Account','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','end','status','json','undefined','limit','count','offset','Content-Range','save','update','then','destroy','sendStatus','error','stack','name','fullname','Tags','TagIds','split','forEach','catch','index','WhatsappInteraction','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','nolimit','order','sort','where','pick','select','field','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','from','left_join','users','whatsapp_interactions','cm_contacts','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','parseSearch','search','sqlOperator','conditions','length','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','body','some','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','resolve','user','role','i.WhatsappAccountId\x20IS\x20NULL','agent','toString','sequelize','merge','fields','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','push','all','show','includeAll','include','options','create','params','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findAll','rows','setTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags'];(function(_0xeba0d0,_0x4f9167){var _0x347550=function(_0x3105b5){while(--_0x3105b5){_0xeba0d0['push'](_0xeba0d0['shift']());}};_0x347550(++_0x4f9167);}(_0x3379,0x115));var _0x9337=function(_0xb3eee1,_0x3e1bda){_0xb3eee1=_0xb3eee1-0x0;var _0x276e54=_0x3379[_0xb3eee1];return _0x276e54;};'use strict';var emlformat=require(_0x9337('0x0'));var rimraf=require(_0x9337('0x1'));var zipdir=require(_0x9337('0x2'));var jsonpatch=require(_0x9337('0x3'));var rp=require('request-promise');var moment=require(_0x9337('0x4'));var BPromise=require(_0x9337('0x5'));var Mustache=require(_0x9337('0x6'));var util=require(_0x9337('0x7'));var path=require('path');var sox=require(_0x9337('0x8'));var csv=require(_0x9337('0x9'));var ejs=require(_0x9337('0xa'));var fs=require('fs');var fs_extra=require(_0x9337('0xb'));var _=require('lodash');var squel=require(_0x9337('0xc'));var crypto=require('crypto');var jsforce=require(_0x9337('0xd'));var deskjs=require(_0x9337('0xe'));var toCsv=require(_0x9337('0x9'));var querystring=require(_0x9337('0xf'));var Papa=require(_0x9337('0x10'));var Redis=require('ioredis');var authService=require(_0x9337('0x11'));var qs=require(_0x9337('0x12'));var as=require(_0x9337('0x13'));var pdf=require(_0x9337('0x14'));var hardwareService=require(_0x9337('0x15'));var logger=require('../../config/logger')(_0x9337('0x16'));var utils=require(_0x9337('0x17'));var config=require(_0x9337('0x18'));var licenseUtil=require(_0x9337('0x19'));var db=require(_0x9337('0x1a'))['db'];config[_0x9337('0x1b')]=_[_0x9337('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9337('0x1d'))(new Redis(config[_0x9337('0x1b')]));require(_0x9337('0x1e'))[_0x9337('0x1f')](socket);function respondWithStatusCode(_0x4c246d,_0x5d5d0f){_0x5d5d0f=_0x5d5d0f||0xcc;return function(_0x13515e){if(_0x13515e){return _0x4c246d['sendStatus'](_0x5d5d0f);}return _0x4c246d['status'](_0x5d5d0f)[_0x9337('0x20')]();};}function respondWithResult(_0x13a207,_0x21f587){_0x21f587=_0x21f587||0xc8;return function(_0x48644e){if(_0x48644e){return _0x13a207[_0x9337('0x21')](_0x21f587)[_0x9337('0x22')](_0x48644e);}};}function respondWithFilteredResult(_0x5e94a1,_0x5e49e7){return function(_0x424f11){if(_0x424f11){var _0x462196=typeof _0x5e49e7['offset']===_0x9337('0x23')&&typeof _0x5e49e7[_0x9337('0x24')]==='undefined';var _0xb93c38=_0x424f11[_0x9337('0x25')];var _0x5ab5dc=_0x462196?0x0:_0x5e49e7[_0x9337('0x26')];var _0x7c334f=_0x462196?_0x424f11['count']:_0x5e49e7['offset']+_0x5e49e7[_0x9337('0x24')];var _0x48f370;if(_0x7c334f>=_0xb93c38){_0x7c334f=_0xb93c38;_0x48f370=0xc8;}else{_0x48f370=0xce;}_0x5e94a1[_0x9337('0x21')](_0x48f370);return _0x5e94a1['set'](_0x9337('0x27'),_0x5ab5dc+'-'+_0x7c334f+'/'+_0xb93c38)['json'](_0x424f11);}return null;};}function patchUpdates(_0x571446){return function(_0x447a42){try{jsonpatch['apply'](_0x447a42,_0x571446,!![]);}catch(_0xe4b053){return BPromise['reject'](_0xe4b053);}return _0x447a42[_0x9337('0x28')]();};}function saveUpdates(_0x332238,_0x32d924){return function(_0x33498a){if(_0x33498a){return _0x33498a[_0x9337('0x29')](_0x332238)[_0x9337('0x2a')](function(_0x523b64){return _0x523b64;});}return null;};}function removeEntity(_0x55cdd6,_0x399f63){return function(_0x3eb4c4){if(_0x3eb4c4){return _0x3eb4c4[_0x9337('0x2b')]()[_0x9337('0x2a')](function(){_0x55cdd6['status'](0xcc)[_0x9337('0x20')]();});}};}function handleEntityNotFound(_0x48e884,_0x2e2c6e){return function(_0x3d4b08){if(!_0x3d4b08){_0x48e884[_0x9337('0x2c')](0x194);}return _0x3d4b08;};}function handleError(_0x148f54,_0x4da717){_0x4da717=_0x4da717||0x1f4;return function(_0x5bca1e){logger[_0x9337('0x2d')](_0x5bca1e[_0x9337('0x2e')]);if(_0x5bca1e[_0x9337('0x2f')]){delete _0x5bca1e[_0x9337('0x2f')];}_0x148f54[_0x9337('0x21')](_0x4da717)['send'](_0x5bca1e);};}function getInteractionUsers(_0x333b99,_0x590b04){return new BPromise(function(_0x2ba1d7,_0x4fa0e7){try{if(_0x590b04[_0x333b99['id']]){_0x333b99['Users']=_['map'](_0x590b04[_0x333b99['id']],function(_0x5b67c3){return{'id':_0x5b67c3['id'],'fullname':_0x5b67c3[_0x9337('0x30')]};});}}catch(_0x3f1006){_0x4fa0e7(_0x3f1006);}_0x2ba1d7(_0x333b99);});}function getInteractionTags(_0xd4afec,_0x8ca74c){return new BPromise(function(_0x251dfb,_0x4b0ee0){try{if(_0xd4afec['TagIds']){_0xd4afec[_0x9337('0x31')]=[];_0xd4afec[_0x9337('0x32')][_0x9337('0x33')](',')[_0x9337('0x34')](function(_0x139935){_0xd4afec[_0x9337('0x31')]['push'](_0x8ca74c[_0x139935]);});}delete _0xd4afec[_0x9337('0x32')];}catch(_0x21d3d9){_0x4b0ee0(_0x21d3d9);}_0x251dfb(_0xd4afec);});}function updateWhatsappInteraction(_0x3ca9d2,_0x5686e6,_0x356acf){return new BPromise(function(_0x55b529,_0x1ac3ef){return getInteractionUsers(_0x3ca9d2,_0x356acf)[_0x9337('0x2a')](function(_0x2b2571){return getInteractionTags(_0x2b2571,_0x5686e6);})[_0x9337('0x2a')](function(_0x4fb036){_0x55b529(_0x4fb036);})[_0x9337('0x35')](function(_0x1c5e55){_0x1ac3ef(_0x1c5e55);});});}exports[_0x9337('0x36')]=function(_0x3cf561,_0x19b436){var _0x1fbb16={},_0xfe1a77={},_0x27486f={'count':0x0,'rows':[]};var _0x4635da=_['map'](db[_0x9337('0x37')][_0x9337('0x38')],function(_0x58d239){return{'name':_0x58d239[_0x9337('0x39')],'type':_0x58d239[_0x9337('0x3a')][_0x9337('0x3b')]};});_0xfe1a77[_0x9337('0x3c')]=_['map'](_0x4635da,_0x9337('0x2f'));_0xfe1a77['query']=_[_0x9337('0x3d')](_0x3cf561[_0x9337('0x3e')]);_0xfe1a77[_0x9337('0x3f')]=_['intersection'](_0xfe1a77[_0x9337('0x3c')],_0xfe1a77['query']);_0x1fbb16['attributes']=_[_0x9337('0x40')](_0xfe1a77['model'],qs['fields'](_0x3cf561[_0x9337('0x3e')]['fields']));_0x1fbb16[_0x9337('0x41')]=_0x1fbb16['attributes']['length']?_0x1fbb16[_0x9337('0x41')]:_0xfe1a77['model'];if(!_0x3cf561['query']['hasOwnProperty'](_0x9337('0x42'))){_0x1fbb16[_0x9337('0x24')]=qs['limit'](_0x3cf561[_0x9337('0x3e')][_0x9337('0x24')]);_0x1fbb16[_0x9337('0x26')]=qs[_0x9337('0x26')](_0x3cf561['query'][_0x9337('0x26')]);}_0x1fbb16[_0x9337('0x43')]=qs[_0x9337('0x44')](_0x3cf561[_0x9337('0x3e')][_0x9337('0x44')]);_0x1fbb16[_0x9337('0x45')]=qs[_0x9337('0x3f')](_[_0x9337('0x46')](_0x3cf561['query'],_0xfe1a77[_0x9337('0x3f')]),_0x4635da);var _0x332265=[];var _0xe6562c=squel[_0x9337('0x47')]()[_0x9337('0x48')]('id')[_0x9337('0x48')](_0x9337('0x2f'))[_0x9337('0x48')]('color')['from'](_0x9337('0x49'));var _0x20c473=squel[_0x9337('0x47')]()['field'](_0x9337('0x4a'))[_0x9337('0x48')](_0x9337('0x4b'))[_0x9337('0x48')](_0x9337('0x4c'))[_0x9337('0x4d')]('user_has_whatsapp_interactions','ui')[_0x9337('0x4e')](_0x9337('0x4f'),'u','u.id\x20=\x20ui.UserId');var _0x55483f=squel[_0x9337('0x47')]()[_0x9337('0x4d')](_0x9337('0x50'),'i')[_0x9337('0x4e')](_0x9337('0x51'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x9337('0x4e')](_0x9337('0x4f'),'o',_0x9337('0x52'))[_0x9337('0x4e')](_0x9337('0x53'),'a',_0x9337('0x54'))[_0x9337('0x4e')](_0x9337('0x55'),'me',_0x9337('0x56'))[_0x9337('0x4e')](_0x9337('0x57'),'it',_0x9337('0x58'))[_0x9337('0x4e')](_0x9337('0x49'),'t',_0x9337('0x59'));var _0x4a387f=squel['expr']();var _0x25cb2e=[];var _0x42f35e=squel['expr']();var _0x2b094b;if(_0x3cf561[_0x9337('0x3e')]['search']){_0x2b094b=as[_0x9337('0x5a')](_0x3cf561[_0x9337('0x3e')][_0x9337('0x5b')]);var _0x163050=_0x2b094b[_0x9337('0x5c')];for(var _0x2e2c84=0x0;_0x2e2c84<_0x2b094b[_0x9337('0x5d')][_0x9337('0x5e')];_0x2e2c84++){var _0x1991e6=_0x2b094b['conditions'][_0x2e2c84];var _0x3cc5fb='i';var _0x338040=_['find'](_0x4635da,[_0x9337('0x2f'),_0x1991e6[_0x9337('0x48')]]);if(!_0x338040){switch(_0x1991e6[_0x9337('0x48')]){case _0x9337('0x5f'):if(_0x1991e6[_0x9337('0x60')]==0x1){_0x55483f['having']('`'+_0x1991e6['field']+_0x9337('0x61'));}else{_0x55483f[_0x9337('0x62')]('`'+_0x1991e6['field']+_0x9337('0x63'));}break;case _0x9337('0x64'):if(_0x1991e6[_0x9337('0x65')]===_0x9337('0x66')){if(_0x1991e6[_0x9337('0x60')][_0x9337('0x33')]('\x20')['length']>0x1){_0x4a387f[_0x163050]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x9337('0x67')](_0x1991e6[_0x9337('0x60')]),null);}else{var _0x51c04c='%'+_0x1991e6[_0x9337('0x60')]+'%';_0x4a387f[_0x163050](_0x9337('0x68'),_0x51c04c,_0x51c04c,_0x51c04c);}}else{_0x338040=_['find'](_0x4635da,[_0x9337('0x2f'),_0x9337('0x69')]);_0x1991e6[_0x9337('0x48')]=_0x9337('0x69');_0x27aa1d=as[_0x9337('0x6a')](_0x3cc5fb,_0x338040[_0x9337('0x3a')],_0x1991e6);_0x4a387f[_0x163050](_0x27aa1d[_0x9337('0x6b')],_0x27aa1d[_0x9337('0x60')][_0x9337('0x6c')],_0x27aa1d[_0x9337('0x60')][_0x9337('0x20')]);}break;case'Tag':var _0x5aa7e1=_0x1991e6[_0x9337('0x60')]['split'](',')[_0x9337('0x6d')](function(_0x35a799){return Number(_0x35a799);});_0x5aa7e1['forEach'](function(_0x106e92){_0x42f35e['or'](_0x9337('0x6e'),'%,'+_0x106e92+',%');});_0x25cb2e=_[_0x9337('0x6f')](_0x25cb2e,_0x5aa7e1);break;case'User':if(_0x1991e6[_0x9337('0x65')]===_0x9337('0x66')){_0x4a387f[_0x163050](_0x9337('0x70'),'%'+_0x1991e6[_0x9337('0x60')]+'%',null);}else{_0x338040=_[_0x9337('0x71')](_0x4635da,['name',_0x9337('0x72')]);_0x1991e6[_0x9337('0x48')]='UserId';_0x27aa1d=as[_0x9337('0x6a')](_0x3cc5fb,_0x338040[_0x9337('0x3a')],_0x1991e6);_0x4a387f[_0x163050](_0x27aa1d[_0x9337('0x6b')],_0x27aa1d[_0x9337('0x60')]['start'],_0x27aa1d[_0x9337('0x60')]['end']);}break;case _0x9337('0x73'):_0x27aa1d=as['buildExpression']('me',null,_0x1991e6);_0x4a387f[_0x163050](_0x27aa1d[_0x9337('0x6b')],_0x27aa1d['value'][_0x9337('0x6c')],_0x27aa1d[_0x9337('0x60')][_0x9337('0x20')]);break;}}else{var _0x27aa1d=as[_0x9337('0x6a')](_0x3cc5fb,_0x338040[_0x9337('0x3a')],_0x1991e6);_0x4a387f[_0x163050](_0x27aa1d[_0x9337('0x6b')],_0x27aa1d['value'][_0x9337('0x6c')],_0x27aa1d[_0x9337('0x60')]['end']);}}}else{var _0x450bdc=_(_0x3cf561[_0x9337('0x3e')])[_0x9337('0x3d')]()['map'](function(_0x30e73e){return _[_0x9337('0x74')](_0x4635da,[_0x9337('0x2f'),_0x30e73e])?_0x30e73e:undefined;})[_0x9337('0x75')]()['value']();if(!_[_0x9337('0x76')](_0x450bdc)){_0x450bdc[_0x9337('0x34')](function(_0x480ca8){if(_0x480ca8===_0x9337('0x77')){_0x55483f[_0x9337('0x45')](_0x9337('0x78'),[][_0x9337('0x79')](_0x3cf561[_0x9337('0x3e')][_0x480ca8]));}else if(_0x480ca8==='createdAt'){var _0x55d346=JSON['parse'](_0x3cf561[_0x9337('0x3e')][_0x480ca8])['$gte'];var _0x54747b=JSON[_0x9337('0x7a')](_0x3cf561[_0x9337('0x3e')][_0x480ca8])[_0x9337('0x7b')];_0x55483f['where'](_0x9337('0x7c'),_0x55d346,_0x54747b);}else{if(_0x3cf561[_0x9337('0x3e')][_0x480ca8]===_0x9337('0x7d')){_0x55483f[_0x9337('0x45')]('i.'+_0x480ca8+'\x20IS\x20NULL');}else{_0x55483f['where']('i.'+_0x480ca8+_0x9337('0x7e'),_0x3cf561[_0x9337('0x3e')][_0x480ca8]);}}});}if(_0x3cf561[_0x9337('0x3e')][_0x9337('0x7f')]){if(_0x3cf561[_0x9337('0x3e')][_0x9337('0x7f')]==0x1){_0x55483f[_0x9337('0x62')](_0x9337('0x80'));}else{_0x55483f[_0x9337('0x62')](_0x9337('0x81'));}}if(_0x3cf561[_0x9337('0x3e')][_0x9337('0x82')]){_0x25cb2e=_[_0x9337('0x83')](_0x3cf561[_0x9337('0x3e')][_0x9337('0x82')])?_0x3cf561[_0x9337('0x3e')]['tag']:new Array(_0x3cf561['query'][_0x9337('0x82')]);_0x25cb2e[_0x9337('0x34')](function(_0x523857){_0x42f35e['or'](_0x9337('0x6e'),'%,'+_0x523857+',%');});}if(_0x3cf561[_0x9337('0x3e')][_0x9337('0x84')]){var _0x2914b6=_0x3cf561[_0x9337('0x3e')][_0x9337('0x84')][_0x9337('0x85')]('\x5c','\x5c\x5c')[_0x9337('0x85')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x2914b6)){_0x4a387f['or'](_0x9337('0x86'),_0x2914b6+'%')['or'](_0x9337('0x87'),_0x2914b6+'%');}else{_0x4a387f['or'](_0x9337('0x88'),qs['getFullTextValue'](_0x2914b6))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x2914b6+'%');}}}_0x55483f[_0x9337('0x45')](_0x4a387f);_0x55483f['group'](_0x9337('0x89'));var _0x30269c={'type':db[_0x9337('0x8a')][_0x9337('0x8b')][_0x9337('0x8c')],'raw':!![]};var _0x365877=_0x55483f[_0x9337('0x8d')]();_0x365877[_0x9337('0x48')]('i.id');_0x365877[_0x9337('0x48')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9337('0x5f'));if(_0x1fbb16[_0x9337('0x43')]){_0x1fbb16[_0x9337('0x43')][_0x9337('0x34')](function(_0xc663b6){var _0x28fad1=_0xc663b6[0x0]===_0x9337('0x8e')?_0xc663b6[0x0]:'i.'+_0xc663b6[0x0];_0x55483f[_0x9337('0x43')](_0x28fad1,_0xc663b6[0x1]===_0x9337('0x8f')?![]:!![]);});}if(!_[_0x9337('0x76')](_0x25cb2e)){_0x55483f[_0x9337('0x62')](_0x42f35e);_0x365877[_0x9337('0x45')](_0x9337('0x90'),_0x25cb2e);}BPromise[_0x9337('0x91')]()['then'](function(){if(!_0x2b094b){if(_0x3cf561[_0x9337('0x3e')]['WhatsappAccountId'])return;_0x365877[_0x9337('0x45')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');_0x55483f[_0x9337('0x45')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x3cf561[_0x9337('0x92')][_0x9337('0x93')]!=='agent')return;return _0x3cf561[_0x9337('0x92')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0x9337('0x2a')](function(_0x1df2ae){if(_['isEmpty'](_0x1df2ae)){_0x365877[_0x9337('0x45')](_0x9337('0x94'));_0x55483f[_0x9337('0x45')](_0x9337('0x94'));}else{_0x365877[_0x9337('0x45')](_0x9337('0x78'),_[_0x9337('0x6d')](_0x1df2ae,'id'));_0x55483f[_0x9337('0x45')](_0x9337('0x78'),_[_0x9337('0x6d')](_0x1df2ae,'id'));}});})[_0x9337('0x2a')](function(){if(_0x3cf561[_0x9337('0x92')][_0x9337('0x93')]===_0x9337('0x95')&&!_0x2b094b&&!_0x3cf561[_0x9337('0x3e')]['WhatsappAccountId'])return[];return db['sequelize'][_0x9337('0x3e')](_0x365877[_0x9337('0x96')](),_0x30269c);})[_0x9337('0x2a')](function(_0x3a292d){_0x27486f[_0x9337('0x25')]=_0x3a292d['length'];if(_0x27486f[_0x9337('0x25')]===0x0)return[];return db[_0x9337('0x97')][_0x9337('0x3e')](_0xe6562c['toString'](),_0x30269c)[_0x9337('0x2a')](function(_0x326a7c){_0x332265=_['keyBy'](_0x326a7c,'id');_0x30269c=_[_0x9337('0x98')](_0x30269c,{'model':db[_0x9337('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3cf561[_0x9337('0x3e')][_0x9337('0x99')]){_0x1fbb16[_0x9337('0x41')]['forEach'](function(_0x587809){_0x55483f[_0x9337('0x48')]('i.'+_0x587809);});}else{_0x55483f[_0x9337('0x48')](_0x9337('0x9a'),_0x9337('0x5f'));_0x55483f['field'](_0x9337('0x9b'),_0x9337('0x9c'));_0x55483f[_0x9337('0x48')](_0x9337('0x9d'),_0x9337('0x9e'));_0x55483f[_0x9337('0x48')](_0x9337('0x9f'),_0x9337('0x8e'));_0x55483f[_0x9337('0x48')](_0x9337('0xa0'));_0x55483f[_0x9337('0x48')](_0x9337('0xa1'),_0x9337('0xa2'));_0x55483f['field'](_0x9337('0xa3'),_0x9337('0xa4'));_0x55483f['field'](_0x9337('0xa5'),_0x9337('0xa6'));_0x55483f['field'](_0x9337('0xa7'),_0x9337('0xa8'));_0x55483f[_0x9337('0x48')](_0x9337('0xa9'),_0x9337('0xaa'));_0x55483f[_0x9337('0x48')]('c.fax',_0x9337('0xab'));_0x55483f[_0x9337('0x48')](_0x9337('0xac'),_0x9337('0xad'));_0x55483f['field'](_0x9337('0xae'),_0x9337('0xaf'));_0x55483f['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x9337('0x32'));}if(_0x1fbb16[_0x9337('0x24')])_0x55483f[_0x9337('0x24')](_0x1fbb16['limit']);if(_0x1fbb16['offset'])_0x55483f['offset'](_0x1fbb16[_0x9337('0x26')]);return db[_0x9337('0x97')][_0x9337('0x3e')](_0x55483f[_0x9337('0x96')](),_0x30269c);})[_0x9337('0x2a')](function(_0x5caf77){if(_0x5caf77[_0x9337('0x5e')]>0x0)_0x20c473[_0x9337('0x45')](_0x9337('0xb0'),_[_0x9337('0x6d')](_0x5caf77,'id'));return db[_0x9337('0x97')]['query'](_0x20c473[_0x9337('0x96')](),_0x30269c)[_0x9337('0x2a')](function(_0xc6155a){var _0x53bb96=_['groupBy'](_0xc6155a,_0x9337('0xb1'));var _0x57a2a3=[];_0x5caf77[_0x9337('0x34')](function(_0x387c46){_0x57a2a3[_0x9337('0xb2')](updateWhatsappInteraction(_0x387c46,_0x332265,_0x53bb96));});return BPromise[_0x9337('0xb3')](_0x57a2a3);});});})[_0x9337('0x2a')](function(_0x11eaee){_0x27486f['rows']=_0x11eaee;return _0x27486f;})['then'](respondWithFilteredResult(_0x19b436,_0x1fbb16))[_0x9337('0x35')](handleError(_0x19b436,null));};exports[_0x9337('0xb4')]=function(_0x467848,_0xe9b87){var _0x2d2c53={'raw':![],'where':{'id':_0x467848['params']['id']}},_0x261a7b={};_0x261a7b[_0x9337('0x3c')]=_[_0x9337('0x3d')](db[_0x9337('0x37')]['rawAttributes']);_0x261a7b[_0x9337('0x3e')]=_[_0x9337('0x3d')](_0x467848[_0x9337('0x3e')]);_0x261a7b['filters']=_[_0x9337('0x40')](_0x261a7b['model'],_0x261a7b[_0x9337('0x3e')]);_0x2d2c53[_0x9337('0x41')]=_[_0x9337('0x40')](_0x261a7b[_0x9337('0x3c')],qs[_0x9337('0x99')](_0x467848['query'][_0x9337('0x99')]));_0x2d2c53[_0x9337('0x41')]=_0x2d2c53[_0x9337('0x41')][_0x9337('0x5e')]?_0x2d2c53['attributes']:_0x261a7b[_0x9337('0x3c')];if(_0x467848[_0x9337('0x3e')][_0x9337('0xb5')]){_0x2d2c53[_0x9337('0xb6')]=[{'all':!![]}];}_0x2d2c53=_[_0x9337('0x98')]({},_0x2d2c53,_0x467848[_0x9337('0xb7')]);return db[_0x9337('0x37')]['find'](_0x2d2c53)['then'](handleEntityNotFound(_0xe9b87,null))[_0x9337('0x2a')](respondWithResult(_0xe9b87,null))['catch'](handleError(_0xe9b87,null));};exports[_0x9337('0xb8')]=function(_0x28467f,_0x4cd237){return db['WhatsappInteraction'][_0x9337('0xb8')](_0x28467f['body'],{})['then'](respondWithResult(_0x4cd237,0xc9))[_0x9337('0x35')](handleError(_0x4cd237,null));};exports['update']=function(_0x2fa2a2,_0x1cf6af){if(_0x2fa2a2['body']['id']){delete _0x2fa2a2[_0x9337('0x73')]['id'];}return db[_0x9337('0x37')][_0x9337('0x71')]({'where':{'id':_0x2fa2a2[_0x9337('0xb9')]['id']}})['then'](handleEntityNotFound(_0x1cf6af,null))[_0x9337('0x2a')](saveUpdates(_0x2fa2a2['body'],null))[_0x9337('0x2a')](respondWithResult(_0x1cf6af,null))['catch'](handleError(_0x1cf6af,null));};exports[_0x9337('0x2b')]=function(_0x23f68c,_0x594cf4){return db[_0x9337('0x37')][_0x9337('0x71')]({'where':{'id':_0x23f68c[_0x9337('0xb9')]['id']}})[_0x9337('0x2a')](handleEntityNotFound(_0x594cf4,null))[_0x9337('0x2a')](removeEntity(_0x594cf4,null))[_0x9337('0x35')](handleError(_0x594cf4,null));};exports['describe']=function(_0x2ee792,_0xa0aeb8){return db[_0x9337('0x37')][_0x9337('0xba')]()[_0x9337('0x2a')](respondWithResult(_0xa0aeb8,null))[_0x9337('0x35')](handleError(_0xa0aeb8,null));};exports[_0x9337('0xbb')]=function(_0x6e0dda,_0x4b269e,_0x546168){return db[_0x9337('0xbc')]['find']({'where':{'id':_0x6e0dda[_0x9337('0xb9')]['id']}})['then'](handleEntityNotFound(_0x4b269e,null))[_0x9337('0x2a')](function(_0x1272f3){if(_0x1272f3){return _0x1272f3[_0x9337('0xbb')](_0x6e0dda[_0x9337('0x73')][_0x9337('0xbd')],_[_0x9337('0xbe')](_0x6e0dda[_0x9337('0x73')],[_0x9337('0xbd'),'id'])||{});}})['then'](respondWithResult(_0x4b269e,null))[_0x9337('0x35')](handleError(_0x4b269e,null));};exports[_0x9337('0xbf')]=function(_0x11ca8f,_0x23afac,_0x15d5b0){var _0x363db3={'raw':![],'where':{}};var _0x2ccd95={};var _0x5f2289={'count':0x0,'rows':[]};return db[_0x9337('0x37')]['findOne']({'where':{'id':_0x11ca8f[_0x9337('0xb9')]['id']}})[_0x9337('0x2a')](handleEntityNotFound(_0x23afac,null))['then'](function(_0x5a3699){if(_0x5a3699){_0x2ccd95[_0x9337('0x3c')]=_[_0x9337('0x3d')](db[_0x9337('0xbc')][_0x9337('0x38')]);_0x2ccd95[_0x9337('0x3e')]=_[_0x9337('0x3d')](_0x11ca8f[_0x9337('0x3e')]);_0x2ccd95[_0x9337('0x3f')]=_[_0x9337('0x40')](_0x2ccd95[_0x9337('0x3c')],_0x2ccd95[_0x9337('0x3e')]);_0x363db3[_0x9337('0x41')]=_[_0x9337('0x40')](_0x2ccd95[_0x9337('0x3c')],qs[_0x9337('0x99')](_0x11ca8f['query'][_0x9337('0x99')]));_0x363db3[_0x9337('0x41')]=_0x363db3[_0x9337('0x41')][_0x9337('0x5e')]?_0x363db3[_0x9337('0x41')]:_0x2ccd95[_0x9337('0x3c')];if(!_0x11ca8f[_0x9337('0x3e')]['hasOwnProperty']('nolimit')){_0x363db3['limit']=qs[_0x9337('0x24')](_0x11ca8f['query'][_0x9337('0x24')]);_0x363db3['offset']=qs[_0x9337('0x26')](_0x11ca8f[_0x9337('0x3e')]['offset']);}_0x363db3[_0x9337('0x43')]=qs[_0x9337('0x44')](_0x11ca8f['query'][_0x9337('0x44')]);_0x363db3[_0x9337('0x45')]=qs[_0x9337('0x3f')](_[_0x9337('0x46')](_0x11ca8f[_0x9337('0x3e')],_0x2ccd95['filters']));_0x363db3[_0x9337('0x45')][_0x9337('0xb1')]=_0x5a3699['id'];if(_0x11ca8f['query']['filter']){_0x363db3[_0x9337('0x45')]=_[_0x9337('0x98')](_0x363db3[_0x9337('0x45')],{'$or':_[_0x9337('0x6d')](_0x363db3['attributes'],function(_0x38eb3f){var _0x19e170={};_0x19e170[_0x38eb3f]={'$like':'%'+_0x11ca8f[_0x9337('0x3e')][_0x9337('0x84')]+'%'};return _0x19e170;})});}if(_0x11ca8f[_0x9337('0x3e')]['$gte']){var _0x3345d5=_0x11ca8f[_0x9337('0x3e')]['$gte'][_0x9337('0x33')](',');var _0x3fd212={};_0x3fd212[_0x3345d5[0x0]]={'$gte':moment(_0x3345d5[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x363db3[_0x9337('0x45')]=_[_0x9337('0x98')](_0x363db3[_0x9337('0x45')],_0x3fd212);}_0x363db3=_['merge']({},_0x363db3,_0x11ca8f['options']);return db['WhatsappMessage'][_0x9337('0x25')]({'where':_0x363db3[_0x9337('0x45')]})[_0x9337('0x2a')](function(_0x360af9){_0x5f2289[_0x9337('0x25')]=_0x360af9;if(_0x11ca8f[_0x9337('0x3e')]['includeAll']){_0x363db3[_0x9337('0xb6')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x9337('0xc0')](_0x363db3);})[_0x9337('0x2a')](function(_0x4cfe1e){_0x5f2289[_0x9337('0xc1')]=_0x4cfe1e;return _0x5f2289;});}})[_0x9337('0x2a')](respondWithFilteredResult(_0x23afac,_0x363db3))[_0x9337('0x35')](handleError(_0x23afac,null));};exports['addTags']=function(_0x311781,_0x418369,_0xaff51d){return db[_0x9337('0x37')][_0x9337('0x71')]({'where':{'id':_0x311781[_0x9337('0xb9')]['id']}})['then'](handleEntityNotFound(_0x418369,null))[_0x9337('0x2a')](function(_0x1e153f){if(_0x1e153f){return _0x1e153f[_0x9337('0xc2')](_0x311781[_0x9337('0x73')][_0x9337('0xbd')],_[_0x9337('0xbe')](_0x311781['body'],[_0x9337('0xbd'),'id'])||{})[_0x9337('0xc3')](function(){return db[_0x9337('0xc4')]['findAll']({'attributes':['id','name',_0x9337('0xc5')],'where':{'id':_0x311781[_0x9337('0x73')][_0x9337('0xbd')]}});})['then'](function(_0x121ad6){socket[_0x9337('0xc6')](_0x9337('0xc7'),{'id':Number(_0x311781['params']['id']),'tags':_0x121ad6||[]});return{'id':Number(_0x311781[_0x9337('0xb9')]['id']),'tags':_0x121ad6||[]};});}})['then'](respondWithResult(_0x418369,null))[_0x9337('0x35')](handleError(_0x418369,null));};exports[_0x9337('0xc8')]=function(_0x579a64,_0x461d76,_0x4faf9e){return db[_0x9337('0x37')]['find']({'where':{'id':_0x579a64[_0x9337('0xb9')]['id']}})[_0x9337('0x2a')](handleEntityNotFound(_0x461d76,null))[_0x9337('0x2a')](function(_0x3dbf2e){if(_0x3dbf2e){return _0x3dbf2e[_0x9337('0xc8')](_0x579a64[_0x9337('0x3e')][_0x9337('0xbd')]);}})[_0x9337('0x2a')](respondWithStatusCode(_0x461d76,null))[_0x9337('0x35')](handleError(_0x461d76,null));};exports[_0x9337('0xc9')]=function(_0x171ceb,_0x20276c){var _0x4ecd58=moment()[_0x9337('0xca')]()[_0x9337('0x96')]();var _0x5c6e82=path['join'](config[_0x9337('0xcb')],_0x9337('0xcc'),_0x9337('0xcd'),_0x9337('0xce'));var _0x25c11a=path[_0x9337('0xcf')](config['root'],_0x9337('0xcc'),'files',_0x9337('0xd0'));var _0x429afb=path[_0x9337('0xcf')](_0x5c6e82,_0x4ecd58);var _0x43dc31=util[_0x9337('0xd1')](_0x9337('0xd2'),_0x171ceb[_0x9337('0xb9')]['id'],_0x4ecd58);var _0x5d0a2a=path[_0x9337('0xcf')](_0x5c6e82,_0x43dc31);var _0x185e04=[];_0x185e04['push']({'model':db[_0x9337('0xd3')],'as':_0x9337('0xd3'),'attributes':['id',_0x9337('0x30')],'raw':!![]});_0x185e04['push']({'model':db[_0x9337('0xd4')],'as':_0x9337('0x64'),'attributes':['id',_0x9337('0xd5'),_0x9337('0xd6')],'raw':!![]});if(_0x171ceb['query']['attachments']){_0x185e04['push']({'model':db[_0x9337('0xd7')],'as':_0x9337('0xd7'),'raw':!![]});}var _0x2c701b=[{'model':db[_0x9337('0xbc')],'as':_0x9337('0xd8'),'attributes':['id',_0x9337('0x73'),_0x9337('0xd9'),_0x9337('0xda'),_0x9337('0xdb'),'read'],'include':_0x185e04}];_0x2c701b[_0x9337('0xb2')]({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0x9337('0x2f')]});_0x2c701b[_0x9337('0xb2')]({'model':db[_0x9337('0xd3')],'as':_0x9337('0xdc'),'attributes':['id',_0x9337('0x30')]});return db['WhatsappInteraction']['find']({'where':{'id':_0x171ceb['params']['id']},'include':_0x2c701b})[_0x9337('0x2a')](handleEntityNotFound(_0x20276c,null))[_0x9337('0x2a')](function(_0x487173){if(_0x487173){var _0x72513f=_0x487173['get']({'plain':!![]});fs['mkdirSync'](_0x429afb);var _0x1426c8={'channel':_0x9337('0xdd'),'account':_0x72513f[_0x9337('0xde')][_0x9337('0x2f')],'agent':_0x72513f[_0x9337('0xdc')]?_0x72513f[_0x9337('0xdc')]['fullname']:_0x9337('0xdf'),'createdAt':moment(_0x72513f['createdAt'])[_0x9337('0xd1')](_0x9337('0xe0'))['toString'](),'closedAt':_0x72513f['closed']?moment(_0x72513f[_0x9337('0xe1')])[_0x9337('0xd1')](_0x9337('0xe0'))[_0x9337('0x96')]():'','disposition':_0x72513f[_0x9337('0xe2')],'messages':_(_0x72513f[_0x9337('0xd8')])[_0x9337('0x84')]({'secret':![]})[_0x9337('0x6d')](function(_0x2edc11){if(_0x2edc11['Attachment']){var _0x3dea10=path[_0x9337('0xcf')](_0x25c11a,_0x2edc11['Attachment'][_0x9337('0xe3')]);if(fs[_0x9337('0xe4')](_0x3dea10)){fs[_0x9337('0xe5')](_0x3dea10)[_0x9337('0xe6')](fs[_0x9337('0xe7')](path['join'](_0x429afb,_0x2edc11[_0x9337('0xd7')][_0x9337('0xe3')])));}}return{'date':moment(_0x2edc11['createdAt'])[_0x9337('0xd1')](_0x9337('0xe0'))[_0x9337('0x96')](),'sender':_0x2edc11[_0x9337('0xda')]==='out'?_0x2edc11[_0x9337('0xd3')]?_0x2edc11[_0x9337('0xd3')][_0x9337('0x30')]:'System':_0x2edc11['Contact'][_0x9337('0xd5')]+(_0x2edc11[_0x9337('0x64')][_0x9337('0xd6')]?'\x20'+_0x2edc11[_0x9337('0x64')][_0x9337('0xd6')]:''),'body':_0x2edc11[_0x9337('0xd7')]?_0x2edc11['Attachment'][_0x9337('0xe3')]:_0x2edc11['body'],'direction':_0x2edc11['direction']==='out'?'A':'C','secret':_0x2edc11[_0x9337('0xdb')],'read':_0x2edc11['read'],'attachment':_0x2edc11[_0x9337('0xd7')]};})[_0x9337('0x60')]()};return ejs[_0x9337('0xe8')](path[_0x9337('0xcf')](config[_0x9337('0xcb')],_0x9337('0xcc'),_0x9337('0xe9'),_0x9337('0xea')),{'interaction':_0x1426c8})[_0x9337('0x2a')](function(_0x3d6eeb){var _0x378eb3=path[_0x9337('0xcf')](_0x429afb,_0x9337('0xeb')+_0x72513f['id']+'-'+_0x4ecd58+_0x9337('0xec'));var _0x181b7d={'path':_0x378eb3,'channel':'Whatsapp','interactionId':_0x72513f['id']};return pdf[_0x9337('0xed')](_0x3d6eeb,_0x181b7d);})[_0x9337('0x2a')](function(){return new BPromise(function(_0x123fe9,_0x435e13){zipdir(_0x429afb,{'saveTo':_0x5d0a2a},function(_0x5df9d6,_0x4bc2d7){if(_0x5df9d6)return _0x435e13(_0x5df9d6);return _0x123fe9(_0x4bc2d7);});})[_0x9337('0x2a')](function(){return new BPromise(function(_0x3caca5,_0x1d605b){rimraf(_0x429afb,function(_0x5488c0){if(_0x5488c0)_0x1d605b(_0x5488c0);return _0x3caca5();});});})[_0x9337('0x2a')](function(){return _0x20276c[_0x9337('0xc9')](_0x5d0a2a,_0x43dc31,function(_0x1e7c8c){if(_0x1e7c8c){console['log'](_0x9337('0xee'),_0x1e7c8c);}else{fs['unlinkSync'](_0x5d0a2a);}});});});}else{return _0x20276c[_0x9337('0x2c')](0xc8);}})['catch'](handleError(_0x20276c,null));};
\ No newline at end of file
+var _0x3dbb=['SELECT','clone','order','t.id\x20IN\x20?','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','i.WhatsappAccountId\x20IN\x20?','role','sequelize','toString','keyBy','merge','WhatsappInteraction','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','WhatsappInteractionId','all','rows','show','params','include','options','find','create','body','catch','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','hasOwnProperty','nolimit','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','addTags','setTags','omit','spread','whatsappInteractionTags:save','removeTags','download','unix','root','tmp','join','server','files','attachments','transcript-%d-%s.zip','push','User','firstName','lastName','Attachment','direction','secret','WhatsappAccount','Account','Owner','mkdirSync','Whatsapp','N.A.','closedAt','disposition','basename','existsSync','pipe','createWriteStream','out','System','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./whatsappInteraction.socket','register','status','end','offset','undefined','limit','count','set','json','apply','save','update','destroy','then','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','length','attributes','sort','where','pick','select','field','color','from','tools_tags','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','split','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','compact','isEmpty','concat','createdAt','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize'];(function(_0x3299ed,_0x39f65d){var _0x43c7a5=function(_0x2343b8){while(--_0x2343b8){_0x3299ed['push'](_0x3299ed['shift']());}};_0x43c7a5(++_0x39f65d);}(_0x3dbb,0x67));var _0xb3db=function(_0x4c9bee,_0x5400fc){_0x4c9bee=_0x4c9bee-0x0;var _0x443ad3=_0x3dbb[_0x4c9bee];return _0x443ad3;};'use strict';var emlformat=require(_0xb3db('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb3db('0x1'));var rp=require(_0xb3db('0x2'));var moment=require('moment');var BPromise=require(_0xb3db('0x3'));var Mustache=require(_0xb3db('0x4'));var util=require(_0xb3db('0x5'));var path=require(_0xb3db('0x6'));var sox=require('sox');var csv=require(_0xb3db('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb3db('0x8'));var squel=require(_0xb3db('0x9'));var crypto=require(_0xb3db('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xb3db('0xb'));var toCsv=require('to-csv');var querystring=require(_0xb3db('0xc'));var Papa=require(_0xb3db('0xd'));var Redis=require('ioredis');var authService=require(_0xb3db('0xe'));var qs=require(_0xb3db('0xf'));var as=require(_0xb3db('0x10'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xb3db('0x11'));var logger=require(_0xb3db('0x12'))(_0xb3db('0x13'));var utils=require(_0xb3db('0x14'));var config=require(_0xb3db('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xb3db('0x16'))['db'];config['redis']=_[_0xb3db('0x17')](config[_0xb3db('0x18')],{'host':_0xb3db('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb3db('0x18')]));require(_0xb3db('0x1a'))[_0xb3db('0x1b')](socket);function respondWithStatusCode(_0x594382,_0x3e43bd){_0x3e43bd=_0x3e43bd||0xcc;return function(_0x4666a9){if(_0x4666a9){return _0x594382['sendStatus'](_0x3e43bd);}return _0x594382[_0xb3db('0x1c')](_0x3e43bd)[_0xb3db('0x1d')]();};}function respondWithResult(_0x20b31f,_0x3cb72c){_0x3cb72c=_0x3cb72c||0xc8;return function(_0x38da8c){if(_0x38da8c){return _0x20b31f[_0xb3db('0x1c')](_0x3cb72c)['json'](_0x38da8c);}};}function respondWithFilteredResult(_0x415157,_0x40939f){return function(_0x5dd370){if(_0x5dd370){var _0x1e9e84=typeof _0x40939f[_0xb3db('0x1e')]===_0xb3db('0x1f')&&typeof _0x40939f[_0xb3db('0x20')]===_0xb3db('0x1f');var _0x498162=_0x5dd370[_0xb3db('0x21')];var _0x12b34f=_0x1e9e84?0x0:_0x40939f[_0xb3db('0x1e')];var _0x325d53=_0x1e9e84?_0x5dd370['count']:_0x40939f[_0xb3db('0x1e')]+_0x40939f[_0xb3db('0x20')];var _0x33e33a;if(_0x325d53>=_0x498162){_0x325d53=_0x498162;_0x33e33a=0xc8;}else{_0x33e33a=0xce;}_0x415157[_0xb3db('0x1c')](_0x33e33a);return _0x415157[_0xb3db('0x22')]('Content-Range',_0x12b34f+'-'+_0x325d53+'/'+_0x498162)[_0xb3db('0x23')](_0x5dd370);}return null;};}function patchUpdates(_0x47d23e){return function(_0x2e5937){try{jsonpatch[_0xb3db('0x24')](_0x2e5937,_0x47d23e,!![]);}catch(_0x1e618a){return BPromise['reject'](_0x1e618a);}return _0x2e5937[_0xb3db('0x25')]();};}function saveUpdates(_0x391598,_0x46c69a){return function(_0x2c8e16){if(_0x2c8e16){return _0x2c8e16[_0xb3db('0x26')](_0x391598)['then'](function(_0x4a37c4){return _0x4a37c4;});}return null;};}function removeEntity(_0x3db9a5,_0x40e400){return function(_0x96826){if(_0x96826){return _0x96826[_0xb3db('0x27')]()[_0xb3db('0x28')](function(){_0x3db9a5['status'](0xcc)[_0xb3db('0x1d')]();});}};}function handleEntityNotFound(_0x102434,_0x3c7533){return function(_0x13697d){if(!_0x13697d){_0x102434[_0xb3db('0x29')](0x194);}return _0x13697d;};}function handleError(_0x167bf6,_0x10e761){_0x10e761=_0x10e761||0x1f4;return function(_0x146ece){logger[_0xb3db('0x2a')](_0x146ece[_0xb3db('0x2b')]);if(_0x146ece[_0xb3db('0x2c')]){delete _0x146ece[_0xb3db('0x2c')];}_0x167bf6[_0xb3db('0x1c')](_0x10e761)[_0xb3db('0x2d')](_0x146ece);};}function getInteractionUsers(_0x2d2ae1,_0x2baf84){return new BPromise(function(_0x592210,_0x2e48f8){try{if(_0x2baf84[_0x2d2ae1['id']]){_0x2d2ae1[_0xb3db('0x2e')]=_[_0xb3db('0x2f')](_0x2baf84[_0x2d2ae1['id']],function(_0x25e7cc){return{'id':_0x25e7cc['id'],'fullname':_0x25e7cc[_0xb3db('0x30')]};});}}catch(_0x5a8ce6){_0x2e48f8(_0x5a8ce6);}_0x592210(_0x2d2ae1);});}function getInteractionTags(_0x5dfb8b,_0x24aed6){return new BPromise(function(_0xeed2ff,_0x44d45f){try{if(_0x5dfb8b[_0xb3db('0x31')]){_0x5dfb8b[_0xb3db('0x32')]=[];_0x5dfb8b[_0xb3db('0x31')]['split'](',')[_0xb3db('0x33')](function(_0x6ef71d){_0x5dfb8b[_0xb3db('0x32')]['push'](_0x24aed6[_0x6ef71d]);});}delete _0x5dfb8b[_0xb3db('0x31')];}catch(_0x253033){_0x44d45f(_0x253033);}_0xeed2ff(_0x5dfb8b);});}function updateWhatsappInteraction(_0x372f83,_0xc2d90,_0x480c89){return new BPromise(function(_0x5596ae,_0x2115d6){return getInteractionUsers(_0x372f83,_0x480c89)[_0xb3db('0x28')](function(_0x9796ac){return getInteractionTags(_0x9796ac,_0xc2d90);})[_0xb3db('0x28')](function(_0x4abca3){_0x5596ae(_0x4abca3);})['catch'](function(_0x3e59e0){_0x2115d6(_0x3e59e0);});});}exports['index']=function(_0x1ef3f8,_0x4cb038){var _0x4ab9df={},_0x32c237={},_0x5f56b5={'count':0x0,'rows':[]};var _0x555a20=_[_0xb3db('0x2f')](db['WhatsappInteraction'][_0xb3db('0x34')],function(_0x5b4ab0){return{'name':_0x5b4ab0[_0xb3db('0x35')],'type':_0x5b4ab0[_0xb3db('0x36')]['key']};});_0x32c237[_0xb3db('0x37')]=_[_0xb3db('0x2f')](_0x555a20,_0xb3db('0x2c'));_0x32c237[_0xb3db('0x38')]=_[_0xb3db('0x39')](_0x1ef3f8['query']);_0x32c237[_0xb3db('0x3a')]=_[_0xb3db('0x3b')](_0x32c237[_0xb3db('0x37')],_0x32c237[_0xb3db('0x38')]);_0x4ab9df['attributes']=_[_0xb3db('0x3b')](_0x32c237[_0xb3db('0x37')],qs['fields'](_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x3c')]));_0x4ab9df['attributes']=_0x4ab9df['attributes'][_0xb3db('0x3d')]?_0x4ab9df[_0xb3db('0x3e')]:_0x32c237['model'];if(!_0x1ef3f8['query']['hasOwnProperty']('nolimit')){_0x4ab9df[_0xb3db('0x20')]=qs[_0xb3db('0x20')](_0x1ef3f8[_0xb3db('0x38')]['limit']);_0x4ab9df[_0xb3db('0x1e')]=qs[_0xb3db('0x1e')](_0x1ef3f8[_0xb3db('0x38')]['offset']);}_0x4ab9df['order']=qs[_0xb3db('0x3f')](_0x1ef3f8['query'][_0xb3db('0x3f')]);_0x4ab9df[_0xb3db('0x40')]=qs[_0xb3db('0x3a')](_[_0xb3db('0x41')](_0x1ef3f8[_0xb3db('0x38')],_0x32c237['filters']),_0x555a20);var _0x31eee5=[];var _0x84b216=squel[_0xb3db('0x42')]()[_0xb3db('0x43')]('id')['field'](_0xb3db('0x2c'))[_0xb3db('0x43')](_0xb3db('0x44'))[_0xb3db('0x45')](_0xb3db('0x46'));var _0x21bf47=squel[_0xb3db('0x42')]()['field']('u.id')['field'](_0xb3db('0x47'))['field'](_0xb3db('0x48'))[_0xb3db('0x45')](_0xb3db('0x49'),'ui')[_0xb3db('0x4a')](_0xb3db('0x4b'),'u','u.id\x20=\x20ui.UserId');var _0xb092df=squel[_0xb3db('0x42')]()[_0xb3db('0x45')](_0xb3db('0x4c'),'i')[_0xb3db('0x4a')](_0xb3db('0x4d'),'c',_0xb3db('0x4e'))[_0xb3db('0x4a')](_0xb3db('0x4b'),'o',_0xb3db('0x4f'))[_0xb3db('0x4a')]('whatsapp_accounts','a',_0xb3db('0x50'))[_0xb3db('0x4a')](_0xb3db('0x51'),'me',_0xb3db('0x52'))[_0xb3db('0x4a')](_0xb3db('0x53'),'it',_0xb3db('0x54'))[_0xb3db('0x4a')](_0xb3db('0x46'),'t',_0xb3db('0x55'));var _0x19781f=squel[_0xb3db('0x56')]();var _0x5986f4=[];var _0x51fea3=squel[_0xb3db('0x56')]();var _0x3165c9;if(_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x57')]){_0x3165c9=as[_0xb3db('0x58')](_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x57')]);var _0x226456=_0x3165c9['sqlOperator'];for(var _0x58ce5c=0x0;_0x58ce5c<_0x3165c9[_0xb3db('0x59')][_0xb3db('0x3d')];_0x58ce5c++){var _0x5b6bca=_0x3165c9[_0xb3db('0x59')][_0x58ce5c];var _0x1b5bca='i';var _0x33c92d=_['find'](_0x555a20,[_0xb3db('0x2c'),_0x5b6bca[_0xb3db('0x43')]]);if(!_0x33c92d){switch(_0x5b6bca['field']){case _0xb3db('0x5a'):if(_0x5b6bca[_0xb3db('0x5b')]==0x1){_0xb092df[_0xb3db('0x5c')]('`'+_0x5b6bca[_0xb3db('0x43')]+_0xb3db('0x5d'));}else{_0xb092df['having']('`'+_0x5b6bca['field']+_0xb3db('0x5e'));}break;case _0xb3db('0x5f'):if(_0x5b6bca[_0xb3db('0x60')]==='$substring'){if(_0x5b6bca[_0xb3db('0x5b')]['split']('\x20')[_0xb3db('0x3d')]>0x1){_0x19781f[_0x226456](_0xb3db('0x61'),qs[_0xb3db('0x62')](_0x5b6bca[_0xb3db('0x5b')]),null);}else{var _0x4fdfc8='%'+_0x5b6bca[_0xb3db('0x5b')]+'%';_0x19781f[_0x226456](_0xb3db('0x63'),_0x4fdfc8,_0x4fdfc8,_0x4fdfc8);}}else{_0x33c92d=_['find'](_0x555a20,[_0xb3db('0x2c'),_0xb3db('0x64')]);_0x5b6bca[_0xb3db('0x43')]=_0xb3db('0x64');_0x41ab47=as[_0xb3db('0x65')](_0x1b5bca,_0x33c92d[_0xb3db('0x36')],_0x5b6bca);_0x19781f[_0x226456](_0x41ab47['text'],_0x41ab47[_0xb3db('0x5b')][_0xb3db('0x66')],_0x41ab47[_0xb3db('0x5b')]['end']);}break;case _0xb3db('0x67'):var _0x46025b=_0x5b6bca[_0xb3db('0x5b')][_0xb3db('0x68')](',')['map'](function(_0x2c6f08){return Number(_0x2c6f08);});_0x46025b[_0xb3db('0x33')](function(_0x62708f){_0x51fea3['or'](_0xb3db('0x69'),'%,'+_0x62708f+',%');});_0x5986f4=_[_0xb3db('0x6a')](_0x5986f4,_0x46025b);break;case'User':if(_0x5b6bca[_0xb3db('0x60')]===_0xb3db('0x6b')){_0x19781f[_0x226456](_0xb3db('0x6c'),'%'+_0x5b6bca[_0xb3db('0x5b')]+'%',null);}else{_0x33c92d=_['find'](_0x555a20,['name','UserId']);_0x5b6bca[_0xb3db('0x43')]=_0xb3db('0x6d');_0x41ab47=as[_0xb3db('0x65')](_0x1b5bca,_0x33c92d[_0xb3db('0x36')],_0x5b6bca);_0x19781f[_0x226456](_0x41ab47[_0xb3db('0x6e')],_0x41ab47[_0xb3db('0x5b')][_0xb3db('0x66')],_0x41ab47[_0xb3db('0x5b')]['end']);}break;case'body':_0x41ab47=as[_0xb3db('0x65')]('me',null,_0x5b6bca);_0x19781f[_0x226456](_0x41ab47[_0xb3db('0x6e')],_0x41ab47[_0xb3db('0x5b')]['start'],_0x41ab47['value']['end']);break;}}else{var _0x41ab47=as['buildExpression'](_0x1b5bca,_0x33c92d['type'],_0x5b6bca);_0x19781f[_0x226456](_0x41ab47[_0xb3db('0x6e')],_0x41ab47[_0xb3db('0x5b')][_0xb3db('0x66')],_0x41ab47[_0xb3db('0x5b')][_0xb3db('0x1d')]);}}}else{var _0x5baf0e=_(_0x1ef3f8[_0xb3db('0x38')])[_0xb3db('0x39')]()[_0xb3db('0x2f')](function(_0x322f70){return _[_0xb3db('0x6f')](_0x555a20,[_0xb3db('0x2c'),_0x322f70])?_0x322f70:undefined;})[_0xb3db('0x70')]()['value']();if(!_[_0xb3db('0x71')](_0x5baf0e)){_0x5baf0e[_0xb3db('0x33')](function(_0x3b9228){if(_0x3b9228==='WhatsappAccountId'){_0xb092df[_0xb3db('0x40')]('i.WhatsappAccountId\x20IN\x20?',[][_0xb3db('0x72')](_0x1ef3f8[_0xb3db('0x38')][_0x3b9228]));}else if(_0x3b9228===_0xb3db('0x73')){var _0x33f9eb=JSON['parse'](_0x1ef3f8[_0xb3db('0x38')][_0x3b9228])['$gte'];var _0x6a59c1=JSON['parse'](_0x1ef3f8[_0xb3db('0x38')][_0x3b9228])[_0xb3db('0x74')];_0xb092df[_0xb3db('0x40')](_0xb3db('0x75'),_0x33f9eb,_0x6a59c1);}else{if(_0x1ef3f8[_0xb3db('0x38')][_0x3b9228]===_0xb3db('0x76')){_0xb092df[_0xb3db('0x40')]('i.'+_0x3b9228+_0xb3db('0x77'));}else{_0xb092df[_0xb3db('0x40')]('i.'+_0x3b9228+_0xb3db('0x78'),_0x1ef3f8[_0xb3db('0x38')][_0x3b9228]);}}});}if(_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x79')]){if(_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x79')]==0x1){_0xb092df[_0xb3db('0x5c')](_0xb3db('0x7a'));}else{_0xb092df[_0xb3db('0x5c')]('`unreadMessages`\x20>\x200');}}if(_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x7b')]){_0x5986f4=_[_0xb3db('0x7c')](_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x7b')])?_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x7b')]:new Array(_0x1ef3f8[_0xb3db('0x38')]['tag']);_0x5986f4[_0xb3db('0x33')](function(_0xf050){_0x51fea3['or'](_0xb3db('0x69'),'%,'+_0xf050+',%');});}if(_0x1ef3f8['query']['filter']){var _0xa99691=_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x7d')][_0xb3db('0x7e')]('\x5c','\x5c\x5c')[_0xb3db('0x7e')](/'/g,'\x27\x27');if(qs[_0xb3db('0x7f')](_0xa99691)){_0x19781f['or'](_0xb3db('0x80'),_0xa99691+'%')['or'](_0xb3db('0x81'),_0xa99691+'%');}else{_0x19781f['or'](_0xb3db('0x82'),qs[_0xb3db('0x62')](_0xa99691))['or'](_0xb3db('0x83'),_0xa99691+'%');}}}_0xb092df[_0xb3db('0x40')](_0x19781f);_0xb092df[_0xb3db('0x84')](_0xb3db('0x85'));var _0x5f5605={'type':db[_0xb3db('0x86')]['QueryTypes'][_0xb3db('0x87')],'raw':!![]};var _0x2bebdb=_0xb092df[_0xb3db('0x88')]();_0x2bebdb['field'](_0xb3db('0x85'));_0x2bebdb['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xb3db('0x5a'));if(_0x4ab9df['order']){_0x4ab9df[_0xb3db('0x89')]['forEach'](function(_0x5851cc){var _0x48de31=_0x5851cc[0x0]==='contactName'?_0x5851cc[0x0]:'i.'+_0x5851cc[0x0];_0xb092df['order'](_0x48de31,_0x5851cc[0x1]==='DESC'?![]:!![]);});}if(!_[_0xb3db('0x71')](_0x5986f4)){_0xb092df[_0xb3db('0x5c')](_0x51fea3);_0x2bebdb[_0xb3db('0x40')](_0xb3db('0x8a'),_0x5986f4);}BPromise[_0xb3db('0x8b')]()[_0xb3db('0x28')](function(){if(!_0x3165c9){if(_0x1ef3f8[_0xb3db('0x38')][_0xb3db('0x8c')])return;_0x2bebdb[_0xb3db('0x40')](_0xb3db('0x8d'));_0xb092df[_0xb3db('0x40')](_0xb3db('0x8d'));return;}if(_0x1ef3f8[_0xb3db('0x8e')]['role']!==_0xb3db('0x8f'))return;return _0x1ef3f8[_0xb3db('0x8e')][_0xb3db('0x90')]({'attributes':['id'],'raw':!![]})[_0xb3db('0x28')](function(_0x18a16a){if(_[_0xb3db('0x71')](_0x18a16a)){_0x2bebdb['where']('i.WhatsappAccountId\x20IS\x20NULL');_0xb092df['where'](_0xb3db('0x91'));}else{_0x2bebdb['where']('i.WhatsappAccountId\x20IN\x20?',_[_0xb3db('0x2f')](_0x18a16a,'id'));_0xb092df['where'](_0xb3db('0x92'),_['map'](_0x18a16a,'id'));}});})[_0xb3db('0x28')](function(){if(_0x1ef3f8[_0xb3db('0x8e')][_0xb3db('0x93')]==='agent'&&!_0x3165c9&&!_0x1ef3f8[_0xb3db('0x38')]['WhatsappAccountId'])return[];return db[_0xb3db('0x94')][_0xb3db('0x38')](_0x2bebdb[_0xb3db('0x95')](),_0x5f5605);})['then'](function(_0x166746){_0x5f56b5['count']=_0x166746[_0xb3db('0x3d')];if(_0x5f56b5['count']===0x0)return[];return db[_0xb3db('0x94')][_0xb3db('0x38')](_0x84b216[_0xb3db('0x95')](),_0x5f5605)['then'](function(_0x3195ea){_0x31eee5=_[_0xb3db('0x96')](_0x3195ea,'id');_0x5f5605=_[_0xb3db('0x97')](_0x5f5605,{'model':db[_0xb3db('0x98')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1ef3f8['query']['fields']){_0x4ab9df['attributes'][_0xb3db('0x33')](function(_0x5a868f){_0xb092df[_0xb3db('0x43')]('i.'+_0x5a868f);});}else{_0xb092df[_0xb3db('0x43')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0xb092df[_0xb3db('0x43')]('a.key',_0xb3db('0x99'));_0xb092df[_0xb3db('0x43')](_0xb3db('0x9a'),_0xb3db('0x9b'));_0xb092df[_0xb3db('0x43')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0xb092df[_0xb3db('0x43')](_0xb3db('0x9c'));_0xb092df[_0xb3db('0x43')](_0xb3db('0x9d'),_0xb3db('0x9e'));_0xb092df[_0xb3db('0x43')](_0xb3db('0x9f'),_0xb3db('0xa0'));_0xb092df['field'](_0xb3db('0xa1'),_0xb3db('0xa2'));_0xb092df[_0xb3db('0x43')](_0xb3db('0xa3'),_0xb3db('0xa4'));_0xb092df[_0xb3db('0x43')](_0xb3db('0xa5'),'Contact.mobile');_0xb092df[_0xb3db('0x43')]('c.fax',_0xb3db('0xa6'));_0xb092df[_0xb3db('0x43')]('o.fullname',_0xb3db('0xa7'));_0xb092df[_0xb3db('0x43')](_0xb3db('0xa8'),_0xb3db('0xa9'));_0xb092df[_0xb3db('0x43')](_0xb3db('0xaa'),_0xb3db('0x31'));}if(_0x4ab9df[_0xb3db('0x20')])_0xb092df[_0xb3db('0x20')](_0x4ab9df[_0xb3db('0x20')]);if(_0x4ab9df[_0xb3db('0x1e')])_0xb092df['offset'](_0x4ab9df[_0xb3db('0x1e')]);return db[_0xb3db('0x94')][_0xb3db('0x38')](_0xb092df[_0xb3db('0x95')](),_0x5f5605);})[_0xb3db('0x28')](function(_0x27a5b8){if(_0x27a5b8[_0xb3db('0x3d')]>0x0)_0x21bf47[_0xb3db('0x40')]('ui.WhatsappInteractionId\x20IN\x20?',_[_0xb3db('0x2f')](_0x27a5b8,'id'));return db[_0xb3db('0x94')][_0xb3db('0x38')](_0x21bf47[_0xb3db('0x95')](),_0x5f5605)[_0xb3db('0x28')](function(_0x1ee6da){var _0xa65c86=_[_0xb3db('0xab')](_0x1ee6da,_0xb3db('0xac'));var _0x1eb2c4=[];_0x27a5b8['forEach'](function(_0x5df9a7){_0x1eb2c4['push'](updateWhatsappInteraction(_0x5df9a7,_0x31eee5,_0xa65c86));});return BPromise[_0xb3db('0xad')](_0x1eb2c4);});});})[_0xb3db('0x28')](function(_0x5b6589){_0x5f56b5[_0xb3db('0xae')]=_0x5b6589;return _0x5f56b5;})[_0xb3db('0x28')](respondWithFilteredResult(_0x4cb038,_0x4ab9df))['catch'](handleError(_0x4cb038,null));};exports[_0xb3db('0xaf')]=function(_0x4e9318,_0x33078c){var _0x5db6f0={'raw':![],'where':{'id':_0x4e9318[_0xb3db('0xb0')]['id']}},_0x37bc47={};_0x37bc47[_0xb3db('0x37')]=_[_0xb3db('0x39')](db[_0xb3db('0x98')][_0xb3db('0x34')]);_0x37bc47[_0xb3db('0x38')]=_[_0xb3db('0x39')](_0x4e9318[_0xb3db('0x38')]);_0x37bc47[_0xb3db('0x3a')]=_[_0xb3db('0x3b')](_0x37bc47[_0xb3db('0x37')],_0x37bc47[_0xb3db('0x38')]);_0x5db6f0['attributes']=_[_0xb3db('0x3b')](_0x37bc47[_0xb3db('0x37')],qs[_0xb3db('0x3c')](_0x4e9318[_0xb3db('0x38')]['fields']));_0x5db6f0['attributes']=_0x5db6f0['attributes']['length']?_0x5db6f0['attributes']:_0x37bc47[_0xb3db('0x37')];if(_0x4e9318[_0xb3db('0x38')]['includeAll']){_0x5db6f0[_0xb3db('0xb1')]=[{'all':!![]}];}_0x5db6f0=_[_0xb3db('0x97')]({},_0x5db6f0,_0x4e9318[_0xb3db('0xb2')]);return db['WhatsappInteraction'][_0xb3db('0xb3')](_0x5db6f0)[_0xb3db('0x28')](handleEntityNotFound(_0x33078c,null))[_0xb3db('0x28')](respondWithResult(_0x33078c,null))['catch'](handleError(_0x33078c,null));};exports[_0xb3db('0xb4')]=function(_0x596834,_0xb3d75d){return db['WhatsappInteraction'][_0xb3db('0xb4')](_0x596834[_0xb3db('0xb5')],{})[_0xb3db('0x28')](respondWithResult(_0xb3d75d,0xc9))[_0xb3db('0xb6')](handleError(_0xb3d75d,null));};exports[_0xb3db('0x26')]=function(_0x4144ce,_0x8d2f62){if(_0x4144ce[_0xb3db('0xb5')]['id']){delete _0x4144ce['body']['id'];}return db[_0xb3db('0x98')]['find']({'where':{'id':_0x4144ce[_0xb3db('0xb0')]['id']}})[_0xb3db('0x28')](handleEntityNotFound(_0x8d2f62,null))[_0xb3db('0x28')](saveUpdates(_0x4144ce[_0xb3db('0xb5')],null))[_0xb3db('0x28')](respondWithResult(_0x8d2f62,null))['catch'](handleError(_0x8d2f62,null));};exports['destroy']=function(_0x3a178b,_0x1dfd6e){return db[_0xb3db('0x98')][_0xb3db('0xb3')]({'where':{'id':_0x3a178b[_0xb3db('0xb0')]['id']}})[_0xb3db('0x28')](handleEntityNotFound(_0x1dfd6e,null))[_0xb3db('0x28')](removeEntity(_0x1dfd6e,null))['catch'](handleError(_0x1dfd6e,null));};exports[_0xb3db('0xb7')]=function(_0x170351,_0x5a575d){return db[_0xb3db('0x98')][_0xb3db('0xb7')]()['then'](respondWithResult(_0x5a575d,null))[_0xb3db('0xb6')](handleError(_0x5a575d,null));};exports[_0xb3db('0xb8')]=function(_0x2de5e4,_0x5383c4,_0x349037){return db[_0xb3db('0xb9')]['find']({'where':{'id':_0x2de5e4['params']['id']}})[_0xb3db('0x28')](handleEntityNotFound(_0x5383c4,null))[_0xb3db('0x28')](function(_0x1c0941){if(_0x1c0941){return _0x1c0941[_0xb3db('0xb8')](_0x2de5e4[_0xb3db('0xb5')][_0xb3db('0xba')],_['omit'](_0x2de5e4[_0xb3db('0xb5')],[_0xb3db('0xba'),'id'])||{});}})[_0xb3db('0x28')](respondWithResult(_0x5383c4,null))[_0xb3db('0xb6')](handleError(_0x5383c4,null));};exports[_0xb3db('0xbb')]=function(_0x2f0081,_0x1413e2,_0x3b4b8e){var _0x42395b={'raw':![],'where':{}};var _0x37f8c0={};var _0x232264={'count':0x0,'rows':[]};return db[_0xb3db('0x98')][_0xb3db('0xbc')]({'where':{'id':_0x2f0081[_0xb3db('0xb0')]['id']}})['then'](handleEntityNotFound(_0x1413e2,null))[_0xb3db('0x28')](function(_0x21f4dc){if(_0x21f4dc){_0x37f8c0[_0xb3db('0x37')]=_[_0xb3db('0x39')](db[_0xb3db('0xb9')]['rawAttributes']);_0x37f8c0[_0xb3db('0x38')]=_['keys'](_0x2f0081['query']);_0x37f8c0[_0xb3db('0x3a')]=_[_0xb3db('0x3b')](_0x37f8c0[_0xb3db('0x37')],_0x37f8c0[_0xb3db('0x38')]);_0x42395b[_0xb3db('0x3e')]=_['intersection'](_0x37f8c0[_0xb3db('0x37')],qs['fields'](_0x2f0081[_0xb3db('0x38')][_0xb3db('0x3c')]));_0x42395b[_0xb3db('0x3e')]=_0x42395b[_0xb3db('0x3e')][_0xb3db('0x3d')]?_0x42395b[_0xb3db('0x3e')]:_0x37f8c0[_0xb3db('0x37')];if(!_0x2f0081[_0xb3db('0x38')][_0xb3db('0xbd')](_0xb3db('0xbe'))){_0x42395b[_0xb3db('0x20')]=qs[_0xb3db('0x20')](_0x2f0081[_0xb3db('0x38')]['limit']);_0x42395b[_0xb3db('0x1e')]=qs[_0xb3db('0x1e')](_0x2f0081['query'][_0xb3db('0x1e')]);}_0x42395b['order']=qs[_0xb3db('0x3f')](_0x2f0081['query']['sort']);_0x42395b[_0xb3db('0x40')]=qs[_0xb3db('0x3a')](_[_0xb3db('0x41')](_0x2f0081['query'],_0x37f8c0['filters']));_0x42395b[_0xb3db('0x40')]['WhatsappInteractionId']=_0x21f4dc['id'];if(_0x2f0081[_0xb3db('0x38')][_0xb3db('0x7d')]){_0x42395b[_0xb3db('0x40')]=_[_0xb3db('0x97')](_0x42395b[_0xb3db('0x40')],{'$or':_[_0xb3db('0x2f')](_0x42395b[_0xb3db('0x3e')],function(_0x6ee986){var _0xb3faa3={};_0xb3faa3[_0x6ee986]={'$like':'%'+_0x2f0081[_0xb3db('0x38')][_0xb3db('0x7d')]+'%'};return _0xb3faa3;})});}if(_0x2f0081[_0xb3db('0x38')]['$gte']){var _0x2adf5f=_0x2f0081[_0xb3db('0x38')][_0xb3db('0xbf')]['split'](',');var _0x460a48={};_0x460a48[_0x2adf5f[0x0]]={'$gte':moment(_0x2adf5f[0x1])[_0xb3db('0xc0')](_0xb3db('0xc1'))};_0x42395b[_0xb3db('0x40')]=_[_0xb3db('0x97')](_0x42395b[_0xb3db('0x40')],_0x460a48);}_0x42395b=_['merge']({},_0x42395b,_0x2f0081[_0xb3db('0xb2')]);return db[_0xb3db('0xb9')][_0xb3db('0x21')]({'where':_0x42395b[_0xb3db('0x40')]})[_0xb3db('0x28')](function(_0xfee6e6){_0x232264[_0xb3db('0x21')]=_0xfee6e6;if(_0x2f0081[_0xb3db('0x38')][_0xb3db('0xc2')]){_0x42395b[_0xb3db('0xb1')]=[{'all':!![]}];}return db[_0xb3db('0xb9')][_0xb3db('0xc3')](_0x42395b);})['then'](function(_0x25ffa4){_0x232264[_0xb3db('0xae')]=_0x25ffa4;return _0x232264;});}})['then'](respondWithFilteredResult(_0x1413e2,_0x42395b))['catch'](handleError(_0x1413e2,null));};exports[_0xb3db('0xc4')]=function(_0x541123,_0x4fcb1b,_0x3716d2){return db[_0xb3db('0x98')]['find']({'where':{'id':_0x541123[_0xb3db('0xb0')]['id']}})[_0xb3db('0x28')](handleEntityNotFound(_0x4fcb1b,null))['then'](function(_0xfa3dbc){if(_0xfa3dbc){return _0xfa3dbc[_0xb3db('0xc5')](_0x541123[_0xb3db('0xb5')][_0xb3db('0xba')],_[_0xb3db('0xc6')](_0x541123['body'],[_0xb3db('0xba'),'id'])||{})[_0xb3db('0xc7')](function(){return db[_0xb3db('0x67')][_0xb3db('0xc3')]({'attributes':['id',_0xb3db('0x2c'),'color'],'where':{'id':_0x541123[_0xb3db('0xb5')]['ids']}});})[_0xb3db('0x28')](function(_0x328944){socket['emit'](_0xb3db('0xc8'),{'id':Number(_0x541123[_0xb3db('0xb0')]['id']),'tags':_0x328944||[]});return{'id':Number(_0x541123[_0xb3db('0xb0')]['id']),'tags':_0x328944||[]};});}})[_0xb3db('0x28')](respondWithResult(_0x4fcb1b,null))[_0xb3db('0xb6')](handleError(_0x4fcb1b,null));};exports['removeTags']=function(_0x54b66e,_0x1c6de8,_0x4263a3){return db[_0xb3db('0x98')]['find']({'where':{'id':_0x54b66e['params']['id']}})[_0xb3db('0x28')](handleEntityNotFound(_0x1c6de8,null))[_0xb3db('0x28')](function(_0xa52220){if(_0xa52220){return _0xa52220[_0xb3db('0xc9')](_0x54b66e[_0xb3db('0x38')][_0xb3db('0xba')]);}})[_0xb3db('0x28')](respondWithStatusCode(_0x1c6de8,null))[_0xb3db('0xb6')](handleError(_0x1c6de8,null));};exports[_0xb3db('0xca')]=function(_0x413d9e,_0x436834){var _0x35d5a8=moment()[_0xb3db('0xcb')]()[_0xb3db('0x95')]();var _0x3527db=path['join'](config[_0xb3db('0xcc')],'server','files',_0xb3db('0xcd'));var _0x590f73=path[_0xb3db('0xce')](config[_0xb3db('0xcc')],_0xb3db('0xcf'),_0xb3db('0xd0'),_0xb3db('0xd1'));var _0x498f65=path[_0xb3db('0xce')](_0x3527db,_0x35d5a8);var _0x1862ed=util[_0xb3db('0xc0')](_0xb3db('0xd2'),_0x413d9e[_0xb3db('0xb0')]['id'],_0x35d5a8);var _0x3ae6e9=path[_0xb3db('0xce')](_0x3527db,_0x1862ed);var _0x553994=[];_0x553994[_0xb3db('0xd3')]({'model':db[_0xb3db('0xd4')],'as':_0xb3db('0xd4'),'attributes':['id','fullname'],'raw':!![]});_0x553994['push']({'model':db['CmContact'],'as':_0xb3db('0x5f'),'attributes':['id',_0xb3db('0xd5'),_0xb3db('0xd6')],'raw':!![]});if(_0x413d9e[_0xb3db('0x38')][_0xb3db('0xd1')]){_0x553994[_0xb3db('0xd3')]({'model':db['Attachment'],'as':_0xb3db('0xd7'),'raw':!![]});}var _0x418464=[{'model':db[_0xb3db('0xb9')],'as':'Messages','attributes':['id',_0xb3db('0xb5'),_0xb3db('0x73'),_0xb3db('0xd8'),_0xb3db('0xd9'),'read'],'include':_0x553994}];_0x418464[_0xb3db('0xd3')]({'model':db[_0xb3db('0xda')],'as':_0xb3db('0xdb'),'attributes':['id',_0xb3db('0x2c')]});_0x418464[_0xb3db('0xd3')]({'model':db[_0xb3db('0xd4')],'as':_0xb3db('0xdc'),'attributes':['id',_0xb3db('0x30')]});return db[_0xb3db('0x98')][_0xb3db('0xb3')]({'where':{'id':_0x413d9e[_0xb3db('0xb0')]['id']},'include':_0x418464})[_0xb3db('0x28')](handleEntityNotFound(_0x436834,null))[_0xb3db('0x28')](function(_0x4b6b6c){if(_0x4b6b6c){var _0x4de9bf=_0x4b6b6c['get']({'plain':!![]});fs[_0xb3db('0xdd')](_0x498f65);var _0x1fad8e={'channel':_0xb3db('0xde'),'account':_0x4de9bf[_0xb3db('0xdb')]['name'],'agent':_0x4de9bf[_0xb3db('0xdc')]?_0x4de9bf[_0xb3db('0xdc')]['fullname']:_0xb3db('0xdf'),'createdAt':moment(_0x4de9bf['createdAt'])[_0xb3db('0xc0')](_0xb3db('0xc1'))[_0xb3db('0x95')](),'closedAt':_0x4de9bf['closed']?moment(_0x4de9bf[_0xb3db('0xe0')])[_0xb3db('0xc0')](_0xb3db('0xc1'))[_0xb3db('0x95')]():'','disposition':_0x4de9bf[_0xb3db('0xe1')],'messages':_(_0x4de9bf['Messages'])['filter']({'secret':![]})[_0xb3db('0x2f')](function(_0xcfaad6){if(_0xcfaad6[_0xb3db('0xd7')]){var _0x15a050=path[_0xb3db('0xce')](_0x590f73,_0xcfaad6['Attachment'][_0xb3db('0xe2')]);if(fs[_0xb3db('0xe3')](_0x15a050)){fs['createReadStream'](_0x15a050)[_0xb3db('0xe4')](fs[_0xb3db('0xe5')](path['join'](_0x498f65,_0xcfaad6[_0xb3db('0xd7')]['basename'])));}}return{'date':moment(_0xcfaad6[_0xb3db('0x73')])['format'](_0xb3db('0xc1'))[_0xb3db('0x95')](),'sender':_0xcfaad6['direction']===_0xb3db('0xe6')?_0xcfaad6[_0xb3db('0xd4')]?_0xcfaad6[_0xb3db('0xd4')][_0xb3db('0x30')]:_0xb3db('0xe7'):_0xcfaad6[_0xb3db('0x5f')][_0xb3db('0xd5')]+(_0xcfaad6['Contact'][_0xb3db('0xd6')]?'\x20'+_0xcfaad6[_0xb3db('0x5f')][_0xb3db('0xd6')]:''),'body':_0xcfaad6[_0xb3db('0xd7')]?_0xcfaad6[_0xb3db('0xd7')]['basename']:_0xcfaad6[_0xb3db('0xb5')],'direction':_0xcfaad6[_0xb3db('0xd8')]===_0xb3db('0xe6')?'A':'C','secret':_0xcfaad6[_0xb3db('0xd9')],'read':_0xcfaad6[_0xb3db('0x79')],'attachment':_0xcfaad6[_0xb3db('0xd7')]};})[_0xb3db('0x5b')]()};return ejs['renderFile'](path[_0xb3db('0xce')](config[_0xb3db('0xcc')],'server',_0xb3db('0xe8'),_0xb3db('0xe9')),{'interaction':_0x1fad8e})[_0xb3db('0x28')](function(_0x65ab41){var _0x20caf5=path[_0xb3db('0xce')](_0x498f65,_0xb3db('0xea')+_0x4de9bf['id']+'-'+_0x35d5a8+'.pdf');var _0x11138f={'path':_0x20caf5,'channel':'Whatsapp','interactionId':_0x4de9bf['id']};return pdf[_0xb3db('0xeb')](_0x65ab41,_0x11138f);})[_0xb3db('0x28')](function(){return new BPromise(function(_0x24f0df,_0x3ae614){zipdir(_0x498f65,{'saveTo':_0x3ae6e9},function(_0x102e76,_0x33af15){if(_0x102e76)return _0x3ae614(_0x102e76);return _0x24f0df(_0x33af15);});})[_0xb3db('0x28')](function(){return new BPromise(function(_0x51eb8c,_0x4a6ae0){rimraf(_0x498f65,function(_0x3b2494){if(_0x3b2494)_0x4a6ae0(_0x3b2494);return _0x51eb8c();});});})[_0xb3db('0x28')](function(){return _0x436834[_0xb3db('0xca')](_0x3ae6e9,_0x1862ed,function(_0x467bbe){if(_0x467bbe){console[_0xb3db('0xec')](_0xb3db('0xed'),_0x467bbe);}else{fs['unlinkSync'](_0x3ae6e9);}});});});}else{return _0x436834['sendStatus'](0xc8);}})[_0xb3db('0xb6')](handleError(_0x436834,null));};
\ No newline at end of file
index 66abd79..b5c5e0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f37=['events','../../mysqldb','WhatsappInteraction','setMaxListeners','save','update','getUsers','then','setDataValue','map','unreadMessages','length','emit','catch','hook','exports'];(function(_0x40927b,_0xf9b0a0){var _0x2635e8=function(_0x1f2b8c){while(--_0x1f2b8c){_0x40927b['push'](_0x40927b['shift']());}};_0x2635e8(++_0xf9b0a0);}(_0x8f37,0x190));var _0x78f3=function(_0x32a505,_0x929c3b){_0x32a505=_0x32a505-0x0;var _0x492a69=_0x8f37[_0x32a505];return _0x492a69;};'use strict';var EventEmitter=require(_0x78f3('0x0'));var WhatsappInteraction=require(_0x78f3('0x1'))['db'][_0x78f3('0x2')];var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x78f3('0x3')](0x0);var events={'afterCreate':_0x78f3('0x4'),'afterUpdate':_0x78f3('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1d59a5){return function(_0x4e9e4e,_0x3eaa33,_0x597b85){_0x4e9e4e[_0x78f3('0x6')]({'attributes':['id'],'raw':!![]})[_0x78f3('0x7')](function(_0x492dc7){_0x4e9e4e[_0x78f3('0x8')]('Users',_0x492dc7[_0x78f3('0x9')](function(_0x423223){return{'id':_0x423223['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x4e9e4e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x78f3('0x7')](function(_0x1678c4){_0x4e9e4e[_0x78f3('0x8')](_0x78f3('0xa'),_0x1678c4[_0x78f3('0xb')]);WhatsappInteractionEvents['emit'](_0x1d59a5+':'+_0x4e9e4e['id'],_0x4e9e4e);WhatsappInteractionEvents[_0x78f3('0xc')](_0x1d59a5,_0x4e9e4e);_0x597b85(null);})[_0x78f3('0xd')](_0x597b85(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x78f3('0xe')](e,emitEvent(event));}}module[_0x78f3('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xc4e6=['setMaxListeners','save','remove','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x4ce9fe,_0x5de08c){var _0x2ef542=function(_0x525fe4){while(--_0x525fe4){_0x4ce9fe['push'](_0x4ce9fe['shift']());}};_0x2ef542(++_0x5de08c);}(_0xc4e6,0x1d9));var _0x6c4e=function(_0x5ba74f,_0x200bf4){_0x5ba74f=_0x5ba74f-0x0;var _0x534d79=_0xc4e6[_0x5ba74f];return _0x534d79;};'use strict';var EventEmitter=require(_0x6c4e('0x0'));var WhatsappInteraction=require(_0x6c4e('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x6c4e('0x1'))['db'][_0x6c4e('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x6c4e('0x3')](0x0);var events={'afterCreate':_0x6c4e('0x4'),'afterUpdate':'update','afterDestroy':_0x6c4e('0x5')};function emitEvent(_0x358bfb){return function(_0x297887,_0x5d8d70,_0x266061){_0x297887['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x3355f9){_0x297887[_0x6c4e('0x6')](_0x6c4e('0x7'),_0x3355f9[_0x6c4e('0x8')](function(_0x3929d8){return{'id':_0x3929d8['id']};}));return WhatsappMessage[_0x6c4e('0x9')]({'where':{'WhatsappInteractionId':_0x297887['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6c4e('0xa')](function(_0x2231a7){_0x297887[_0x6c4e('0x6')](_0x6c4e('0xb'),_0x2231a7[_0x6c4e('0xc')]);WhatsappInteractionEvents[_0x6c4e('0xd')](_0x358bfb+':'+_0x297887['id'],_0x297887);WhatsappInteractionEvents['emit'](_0x358bfb,_0x297887);_0x266061(null);})['catch'](_0x266061(null));};}for(var e in events){if(events[_0x6c4e('0xe')](e)){var event=events[e];WhatsappInteraction[_0x6c4e('0xf')](e,emitEvent(event));}}module[_0x6c4e('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
index 4fa172f..0d7fd2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d50=['exports','define','WhatsappInteraction','whatsapp_interactions','closed','closedAt','format','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./whatsappInteraction.attributes'];(function(_0x53d71d,_0x5cfe75){var _0x1db02a=function(_0x4e029a){while(--_0x4e029a){_0x53d71d['push'](_0x53d71d['shift']());}};_0x1db02a(++_0x5cfe75);}(_0x2d50,0x106));var _0x02d5=function(_0x4c52ca,_0x3320a7){_0x4c52ca=_0x4c52ca-0x0;var _0x5ece7e=_0x2d50[_0x4c52ca];return _0x5ece7e;};'use strict';var _=require(_0x02d5('0x0'));var util=require(_0x02d5('0x1'));var logger=require(_0x02d5('0x2'))('api');var moment=require('moment');var BPromise=require(_0x02d5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x02d5('0x4'));var rimraf=require(_0x02d5('0x5'));var config=require(_0x02d5('0x6'));var attributes=require(_0x02d5('0x7'));module[_0x02d5('0x8')]=function(_0x485c37,_0x9c9820){return _0x485c37[_0x02d5('0x9')](_0x02d5('0xa'),attributes,{'tableName':_0x02d5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4bd172,_0x45f7c7,_0xf9c39b){if(_0x4bd172['changed'](_0x02d5('0xc'))){_0x4bd172[_0x02d5('0xd')]=moment()[_0x02d5('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0xf9c39b(null,_0x4bd172);}}});};
\ No newline at end of file
+var _0xaf60=['path','rimraf','../../config/environment','exports','define','WhatsappInteraction','whatsapp_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xaf60,0x108));var _0x0af6=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xaf60[_0x3e112d];return _0x531c31;};'use strict';var _=require('lodash');var util=require(_0x0af6('0x0'));var logger=require(_0x0af6('0x1'))(_0x0af6('0x2'));var moment=require(_0x0af6('0x3'));var BPromise=require(_0x0af6('0x4'));var rp=require(_0x0af6('0x5'));var fs=require('fs');var path=require(_0x0af6('0x6'));var rimraf=require(_0x0af6('0x7'));var config=require(_0x0af6('0x8'));var attributes=require('./whatsappInteraction.attributes');module[_0x0af6('0x9')]=function(_0x52adc5,_0x54189e){return _0x52adc5[_0x0af6('0xa')](_0x0af6('0xb'),attributes,{'tableName':_0x0af6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x9e12c7,_0x27de66,_0x4c93c9){if(_0x9e12c7[_0x0af6('0xd')](_0x0af6('0xe'))){_0x9e12c7[_0x0af6('0xf')]=moment()[_0x0af6('0x10')](_0x0af6('0x11'));}_0x4c93c9(null,_0x9e12c7);}}});};
\ No newline at end of file
index 331fb19..5e31f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82de=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults','redis','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','raw','attributes','limit','AddTagsToWhatsappInteraction','find','where','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird'];(function(_0xa041de,_0x3600e2){var _0x1d654c=function(_0x295d70){while(--_0x295d70){_0xa041de['push'](_0xa041de['shift']());}};_0x1d654c(++_0x3600e2);}(_0x82de,0x188));var _0xe82d=function(_0x5dc7bb,_0x3c2edc){_0x5dc7bb=_0x5dc7bb-0x0;var _0x3569c3=_0x82de[_0x5dc7bb];return _0x3569c3;};'use strict';var _=require(_0xe82d('0x0'));var util=require(_0xe82d('0x1'));var moment=require(_0xe82d('0x2'));var BPromise=require(_0xe82d('0x3'));var rs=require(_0xe82d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe82d('0x5'))['db'];var utils=require(_0xe82d('0x6'));var logger=require(_0xe82d('0x7'))(_0xe82d('0x8'));var config=require('../../config/environment');var jayson=require(_0xe82d('0x9'));var client=jayson['client'][_0xe82d('0xa')]({'port':0x232a});config['redis']=_[_0xe82d('0xb')](config[_0xe82d('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xe82d('0xd'))(new Redis(config['redis']));require(_0xe82d('0xe'))[_0xe82d('0xf')](socket);function respondWithRpcPromise(_0x3d00dd,_0x154939,_0x56fe53){return new BPromise(function(_0x55d415,_0x4e3d43){return client[_0xe82d('0x10')](_0x3d00dd,_0x56fe53)[_0xe82d('0x11')](function(_0x4f783c){logger[_0xe82d('0x12')](_0xe82d('0x13'),_0x154939,_0xe82d('0x14'));logger[_0xe82d('0x15')](_0xe82d('0x16'),_0x154939,_0xe82d('0x14'),JSON[_0xe82d('0x17')](_0x4f783c));if(_0x4f783c[_0xe82d('0x18')]){if(_0x4f783c[_0xe82d('0x18')]['code']===0x1f4){logger[_0xe82d('0x18')]('WhatsappInteraction,\x20%s,\x20%s',_0x154939,_0x4f783c['error'][_0xe82d('0x19')]);return _0x4e3d43(_0x4f783c[_0xe82d('0x18')]['message']);}logger[_0xe82d('0x18')](_0xe82d('0x13'),_0x154939,_0x4f783c[_0xe82d('0x18')][_0xe82d('0x19')]);return _0x55d415(_0x4f783c[_0xe82d('0x18')][_0xe82d('0x19')]);}else{logger['info'](_0xe82d('0x13'),_0x154939,_0xe82d('0x14'));_0x55d415(_0x4f783c[_0xe82d('0x1a')]['message']);}})[_0xe82d('0x1b')](function(_0x44558e){logger[_0xe82d('0x18')](_0xe82d('0x13'),_0x154939,_0x44558e);_0x4e3d43(_0x44558e);});});}exports[_0xe82d('0x1c')]=function(_0x1d7bf1){var _0x3c8b6f=this;return new Promise(function(_0x4fb6d8,_0x1777ed){return db[_0xe82d('0x1d')][_0xe82d('0x1e')](_0x1d7bf1['body'],{'raw':_0x1d7bf1[_0xe82d('0x1f')]?_0x1d7bf1[_0xe82d('0x1f')][_0xe82d('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d7bf1[_0xe82d('0x1f')]?_0x1d7bf1[_0xe82d('0x1f')]['where']||null:null,'attributes':_0x1d7bf1['options']?_0x1d7bf1[_0xe82d('0x1f')][_0xe82d('0x21')]||null:null,'limit':_0x1d7bf1[_0xe82d('0x1f')]?_0x1d7bf1[_0xe82d('0x1f')][_0xe82d('0x22')]||null:null})['then'](function(_0x34a624){logger['info'](_0xe82d('0x1c'),_0x1d7bf1);logger['debug'](_0xe82d('0x1c'),_0x1d7bf1,JSON['stringify'](_0x34a624));_0x4fb6d8(_0x34a624);})[_0xe82d('0x1b')](function(_0x927e01){logger[_0xe82d('0x18')](_0xe82d('0x1c'),_0x927e01[_0xe82d('0x19')],_0x1d7bf1);_0x1777ed(_0x3c8b6f['error'](0x1f4,_0x927e01['message']));});});};exports[_0xe82d('0x23')]=function(_0xe098f4){return new Promise(function(_0x9572d5,_0x4c8d73){return db['WhatsappInteraction'][_0xe82d('0x24')]({'where':_0xe098f4[_0xe82d('0x1f')]?_0xe098f4[_0xe82d('0x1f')][_0xe82d('0x25')]||null:null})[_0xe82d('0x11')](function(_0x2bf35d){if(_0x2bf35d){return _0x2bf35d[_0xe82d('0x26')](_0xe098f4[_0xe82d('0x27')][_0xe82d('0x28')],_[_0xe82d('0x29')](_0xe098f4['body'],[_0xe82d('0x28'),'id'])||{});}})[_0xe82d('0x2a')](function(_0x2abb43){logger[_0xe82d('0x12')]('AddTags',_0xe098f4);logger[_0xe82d('0x15')]('AddTags',_0xe098f4,JSON[_0xe82d('0x17')](_0x2abb43));_0x9572d5(_0x2abb43);})[_0xe82d('0x1b')](function(_0xd051ab){logger[_0xe82d('0x18')](_0xe82d('0x2b'),_0xd051ab[_0xe82d('0x19')],_0xe098f4);_0x4c8d73(_this[_0xe82d('0x18')](0x1f4,_0xd051ab['message']));});});};
\ No newline at end of file
+var _0xb260=['lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','socket.io-emitter','register','then','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','error','message','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','where','attributes','limit','info','stringify','AddTagsToWhatsappInteraction','addTags','ids','omit','AddTags','debug'];(function(_0x32ea5a,_0x111b20){var _0x2bb61f=function(_0x443646){while(--_0x443646){_0x32ea5a['push'](_0x32ea5a['shift']());}};_0x2bb61f(++_0x111b20);}(_0xb260,0x128));var _0x0b26=function(_0x20bfa9,_0x220243){_0x20bfa9=_0x20bfa9-0x0;var _0x135207=_0xb260[_0x20bfa9];return _0x135207;};'use strict';var _=require(_0x0b26('0x0'));var util=require('util');var moment=require(_0x0b26('0x1'));var BPromise=require(_0x0b26('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0b26('0x3'))['db'];var utils=require(_0x0b26('0x4'));var logger=require(_0x0b26('0x5'))(_0x0b26('0x6'));var config=require('../../config/environment');var jayson=require(_0x0b26('0x7'));var client=jayson[_0x0b26('0x8')][_0x0b26('0x9')]({'port':0x232a});config[_0x0b26('0xa')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0b26('0xb'))(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0x0b26('0xc')](socket);function respondWithRpcPromise(_0x36992a,_0x32e857,_0xfb67ff){return new BPromise(function(_0xb20093,_0x1f46d9){return client['request'](_0x36992a,_0xfb67ff)[_0x0b26('0xd')](function(_0x5bc8ef){logger['info'](_0x0b26('0xe'),_0x32e857,_0x0b26('0xf'));logger['debug'](_0x0b26('0x10'),_0x32e857,_0x0b26('0xf'),JSON['stringify'](_0x5bc8ef));if(_0x5bc8ef[_0x0b26('0x11')]){if(_0x5bc8ef[_0x0b26('0x11')]['code']===0x1f4){logger[_0x0b26('0x11')](_0x0b26('0xe'),_0x32e857,_0x5bc8ef[_0x0b26('0x11')][_0x0b26('0x12')]);return _0x1f46d9(_0x5bc8ef[_0x0b26('0x11')]['message']);}logger[_0x0b26('0x11')](_0x0b26('0xe'),_0x32e857,_0x5bc8ef['error'][_0x0b26('0x12')]);return _0xb20093(_0x5bc8ef['error'][_0x0b26('0x12')]);}else{logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x32e857,'request\x20sent');_0xb20093(_0x5bc8ef['result'][_0x0b26('0x12')]);}})[_0x0b26('0x13')](function(_0x1b9371){logger['error'](_0x0b26('0xe'),_0x32e857,_0x1b9371);_0x1f46d9(_0x1b9371);});});}exports[_0x0b26('0x14')]=function(_0x58c765){var _0x342046=this;return new Promise(function(_0x18c82f,_0x14fa06){return db[_0x0b26('0x15')][_0x0b26('0x16')](_0x58c765[_0x0b26('0x17')],{'raw':_0x58c765['options']?_0x58c765[_0x0b26('0x18')][_0x0b26('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x58c765[_0x0b26('0x18')]?_0x58c765[_0x0b26('0x18')][_0x0b26('0x1a')]||null:null,'attributes':_0x58c765[_0x0b26('0x18')]?_0x58c765['options'][_0x0b26('0x1b')]||null:null,'limit':_0x58c765[_0x0b26('0x18')]?_0x58c765['options'][_0x0b26('0x1c')]||null:null})[_0x0b26('0xd')](function(_0x369a1a){logger[_0x0b26('0x1d')](_0x0b26('0x14'),_0x58c765);logger['debug'](_0x0b26('0x14'),_0x58c765,JSON[_0x0b26('0x1e')](_0x369a1a));_0x18c82f(_0x369a1a);})[_0x0b26('0x13')](function(_0x2279df){logger[_0x0b26('0x11')](_0x0b26('0x14'),_0x2279df[_0x0b26('0x12')],_0x58c765);_0x14fa06(_0x342046[_0x0b26('0x11')](0x1f4,_0x2279df[_0x0b26('0x12')]));});});};exports[_0x0b26('0x1f')]=function(_0x3240ed){return new Promise(function(_0x50ac5e,_0x266579){return db['WhatsappInteraction']['find']({'where':_0x3240ed[_0x0b26('0x18')]?_0x3240ed[_0x0b26('0x18')][_0x0b26('0x1a')]||null:null})[_0x0b26('0xd')](function(_0x32e5ca){if(_0x32e5ca){return _0x32e5ca[_0x0b26('0x20')](_0x3240ed[_0x0b26('0x17')][_0x0b26('0x21')],_[_0x0b26('0x22')](_0x3240ed['body'],[_0x0b26('0x21'),'id'])||{});}})['spread'](function(_0xe56f0f){logger[_0x0b26('0x1d')](_0x0b26('0x23'),_0x3240ed);logger[_0x0b26('0x24')](_0x0b26('0x23'),_0x3240ed,JSON['stringify'](_0xe56f0f));_0x50ac5e(_0xe56f0f);})[_0x0b26('0x13')](function(_0x5c1ca5){logger['error'](_0x0b26('0x23'),_0x5c1ca5['message'],_0x3240ed);_0x266579(_this[_0x0b26('0x11')](0x1f4,_0x5c1ca5[_0x0b26('0x12')]));});});};
\ No newline at end of file
index ff2bbdc..c82e73a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef2=['update','removeListener','length','save','remove'];(function(_0x3477e4,_0x15897a){var _0x5c94d2=function(_0x40f316){while(--_0x40f316){_0x3477e4['push'](_0x3477e4['shift']());}};_0x5c94d2(++_0x15897a);}(_0x2ef2,0x1de));var _0x22ef=function(_0x409c8b,_0x4892d4){_0x409c8b=_0x409c8b-0x0;var _0x430500=_0x2ef2[_0x409c8b];return _0x430500;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x22ef('0x0'),_0x22ef('0x1'),_0x22ef('0x2')];function createListener(_0x4bb2f4,_0x17e2c6){return function(_0x2fb593){_0x17e2c6['emit'](_0x4bb2f4,_0x2fb593);};}function removeListener(_0x242fcb,_0x241f78){return function(){WhatsappInteractionEvents[_0x22ef('0x3')](_0x242fcb,_0x241f78);};}exports['register']=function(_0x441b5e){for(var _0x10c473=0x0,_0x2c0e18=events[_0x22ef('0x4')];_0x10c473<_0x2c0e18;_0x10c473++){var _0x1b5081=events[_0x10c473];var _0x553304=createListener('whatsappInteraction:'+_0x1b5081,_0x441b5e);WhatsappInteractionEvents['on'](_0x1b5081,_0x553304);}};
\ No newline at end of file
+var _0x9865=['register','whatsappInteraction:','save','remove','update','emit','removeListener'];(function(_0x5c568e,_0xc5e4b0){var _0x5aff74=function(_0x125fa6){while(--_0x125fa6){_0x5c568e['push'](_0x5c568e['shift']());}};_0x5aff74(++_0xc5e4b0);}(_0x9865,0xb1));var _0x5986=function(_0x27cb65,_0x10b7e9){_0x27cb65=_0x27cb65-0x0;var _0x381a5e=_0x9865[_0x27cb65];return _0x381a5e;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x5986('0x0'),_0x5986('0x1'),_0x5986('0x2')];function createListener(_0x39e631,_0xbc0f8f){return function(_0xf4dae8){_0xbc0f8f[_0x5986('0x3')](_0x39e631,_0xf4dae8);};}function removeListener(_0x411c15,_0x325795){return function(){WhatsappInteractionEvents[_0x5986('0x4')](_0x411c15,_0x325795);};}exports[_0x5986('0x5')]=function(_0x52dc9f){for(var _0x39b5ad=0x0,_0x4a0231=events['length'];_0x39b5ad<_0x4a0231;_0x39b5ad++){var _0x27ba26=events[_0x39b5ad];var _0xae442c=createListener(_0x5986('0x6')+_0x27ba26,_0x52dc9f);WhatsappInteractionEvents['on'](_0x27ba26,_0xae442c);}};
\ No newline at end of file
index 2579014..c2c56c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1182=['Router','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util','path','connect-timeout'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x1182,0xc7));var _0x2118=function(_0x125703,_0x46989c){_0x125703=_0x125703-0x0;var _0x1a954b=_0x1182[_0x125703];return _0x1a954b;};'use strict';var multer=require(_0x2118('0x0'));var util=require(_0x2118('0x1'));var path=require(_0x2118('0x2'));var timeout=require(_0x2118('0x3'));var express=require('express');var router=express[_0x2118('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2118('0x5'));var config=require(_0x2118('0x6'));var controller=require(_0x2118('0x7'));router[_0x2118('0x8')]('/',auth[_0x2118('0x9')](),controller['index']);router['get'](_0x2118('0xa'),auth['isAuthenticated'](),controller[_0x2118('0xb')]);router[_0x2118('0x8')](_0x2118('0xc'),auth[_0x2118('0x9')](),controller[_0x2118('0xd')]);router[_0x2118('0xe')]('/',auth[_0x2118('0x9')](),interaction[_0x2118('0xf')](_0x2118('0x10'),_0x2118('0x11')),controller[_0x2118('0x12')]);router[_0x2118('0xe')](_0x2118('0x13'),controller[_0x2118('0x14')]);router[_0x2118('0x15')](_0x2118('0xc'),auth['isAuthenticated'](),controller[_0x2118('0x16')]);router[_0x2118('0x15')](_0x2118('0x17'),auth[_0x2118('0x9')](),controller[_0x2118('0x18')]);router[_0x2118('0x15')](_0x2118('0x19'),auth['isAuthenticated'](),controller[_0x2118('0x1a')]);router['delete'](_0x2118('0xc'),auth[_0x2118('0x9')](),controller[_0x2118('0x1b')]);module[_0x2118('0x1c')]=router;
\ No newline at end of file
+var _0x7261=['get','describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','put','update','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','isAuthenticated','index'];(function(_0x3de461,_0x358019){var _0x1efe6e=function(_0x2ce5d9){while(--_0x2ce5d9){_0x3de461['push'](_0x3de461['shift']());}};_0x1efe6e(++_0x358019);}(_0x7261,0x19e));var _0x1726=function(_0x56e1b8,_0x353cfa){_0x56e1b8=_0x56e1b8-0x0;var _0x2d2158=_0x7261[_0x56e1b8];return _0x2d2158;};'use strict';var multer=require('multer');var util=require(_0x1726('0x0'));var path=require(_0x1726('0x1'));var timeout=require(_0x1726('0x2'));var express=require(_0x1726('0x3'));var router=express[_0x1726('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1726('0x5'));var interaction=require(_0x1726('0x6'));var config=require(_0x1726('0x7'));var controller=require(_0x1726('0x8'));router['get']('/',auth[_0x1726('0x9')](),controller[_0x1726('0xa')]);router[_0x1726('0xb')]('/describe',auth[_0x1726('0x9')](),controller[_0x1726('0xc')]);router['get'](_0x1726('0xd'),auth[_0x1726('0x9')](),controller[_0x1726('0xe')]);router[_0x1726('0xf')]('/',auth[_0x1726('0x9')](),interaction[_0x1726('0x10')](_0x1726('0x11'),_0x1726('0x12')),controller[_0x1726('0x13')]);router[_0x1726('0xf')](_0x1726('0x14'),controller['status']);router[_0x1726('0x15')](_0x1726('0xd'),auth[_0x1726('0x9')](),controller[_0x1726('0x16')]);router[_0x1726('0x15')]('/:id/accept',auth[_0x1726('0x9')](),controller['accept']);router[_0x1726('0x15')]('/:id/reject',auth[_0x1726('0x9')](),controller['reject']);router['delete']('/:id',auth[_0x1726('0x9')](),controller[_0x1726('0x17')]);module[_0x1726('0x18')]=router;
\ No newline at end of file
index 99dfaad..ca304b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2cc=['sequelize','medium','BOOLEAN','out','STRING','TEXT'];(function(_0xad57ee,_0x2823a6){var _0x3eaea9=function(_0x185650){while(--_0x185650){_0xad57ee['push'](_0xad57ee['shift']());}};_0x3eaea9(++_0x2823a6);}(_0xf2cc,0x186));var _0xcf2c=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xf2cc[_0x3ff085];return _0x2b68c3;};'use strict';var Sequelize=require(_0xcf2c('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0xcf2c('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xcf2c('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xcf2c('0x3')),'defaultValue':_0xcf2c('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xcf2c('0x4')](0xbe)},'phone':{'type':Sequelize[_0xcf2c('0x4')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xcf2c('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xcf2c('0x5')]}};
\ No newline at end of file
+var _0xcf12=['exports','medium','BOOLEAN','ENUM','out','STRING','DATE','TEXT'];(function(_0xa776cf,_0x85b6d){var _0x27fbe0=function(_0x4bcf32){while(--_0x4bcf32){_0xa776cf['push'](_0xa776cf['shift']());}};_0x27fbe0(++_0x85b6d);}(_0xcf12,0x140));var _0x2cf1=function(_0x56702b,_0x40ff47){_0x56702b=_0x56702b-0x0;var _0x2e68d8=_0xcf12[_0x56702b];return _0x2e68d8;};'use strict';var Sequelize=require('sequelize');module[_0x2cf1('0x0')]={'body':{'type':Sequelize['TEXT'](_0x2cf1('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x2cf1('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2cf1('0x3')]('in','out'),'defaultValue':_0x2cf1('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x2cf1('0x5')](0xbe)},'phone':{'type':Sequelize[_0x2cf1('0x5')]},'readAt':{'type':Sequelize[_0x2cf1('0x6')]},'secret':{'type':Sequelize[_0x2cf1('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x2cf1('0x5')]},'providerResponse':{'type':Sequelize[_0x2cf1('0x7')]}};
\ No newline at end of file
index 24fd5e2..98f29ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75a0=['rows','params','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','UserId','user','agent','get','WhatsappInteraction','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','info','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','User','fullname','email','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','WhatsappInteractionId','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','ContactId','sequelize','contact','internal','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','messageId','MessageStatus','eml-format','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','jayson/promise','client','http','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','index','map','WhatsappMessage','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x75a0,0x1d0));var _0x075a=function(_0x1e8dd5,_0x571f6d){_0x1e8dd5=_0x1e8dd5-0x0;var _0x9aa844=_0x75a0[_0x1e8dd5];return _0x9aa844;};'use strict';var emlformat=require(_0x075a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x075a('0x1'));var moment=require(_0x075a('0x2'));var BPromise=require(_0x075a('0x3'));var Mustache=require('mustache');var util=require(_0x075a('0x4'));var path=require(_0x075a('0x5'));var sox=require(_0x075a('0x6'));var csv=require('to-csv');var ejs=require(_0x075a('0x7'));var fs=require('fs');var fs_extra=require(_0x075a('0x8'));var _=require(_0x075a('0x9'));var squel=require(_0x075a('0xa'));var crypto=require(_0x075a('0xb'));var jsforce=require(_0x075a('0xc'));var deskjs=require(_0x075a('0xd'));var toCsv=require('to-csv');var querystring=require(_0x075a('0xe'));var Papa=require(_0x075a('0xf'));var Redis=require(_0x075a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x075a('0x11'));var as=require(_0x075a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x075a('0x13'));var utils=require(_0x075a('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x075a('0x15'))['db'];config[_0x075a('0x16')]=_['defaults'](config['redis'],{'host':_0x075a('0x17'),'port':0x18eb});var socket=require(_0x075a('0x18'))(new Redis(config[_0x075a('0x16')]));require(_0x075a('0x19'))['register'](socket);var jayson=require(_0x075a('0x1a'));var client=jayson[_0x075a('0x1b')][_0x075a('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x075a('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x46d226,_0x255e9c,_0xacbb6d,_0x848b26){return new BPromise(function(_0x199893,_0xb0784d){var _0x46f0ba=_0x848b26||client;return _0x46f0ba['request'](_0x46d226,_0xacbb6d)['then'](function(_0x44c0c6){logger['info'](_0x075a('0x1d'),_0x255e9c,_0x075a('0x1e'));logger[_0x075a('0x1f')](_0x075a('0x20'),_0x255e9c,_0x075a('0x1e'),JSON[_0x075a('0x21')](_0x44c0c6));if(_0x44c0c6[_0x075a('0x22')]){if(_0x44c0c6[_0x075a('0x22')][_0x075a('0x23')]===0x1f4){logger[_0x075a('0x22')](_0x075a('0x1d'),_0x255e9c,_0x44c0c6['error'][_0x075a('0x24')]);return _0xb0784d(_0x44c0c6[_0x075a('0x22')][_0x075a('0x24')]);}logger['error'](_0x075a('0x1d'),_0x255e9c,_0x44c0c6[_0x075a('0x22')][_0x075a('0x24')]);return _0x199893(_0x44c0c6[_0x075a('0x22')]['message']);}else{logger['info'](_0x075a('0x1d'),_0x255e9c,_0x075a('0x1e'));_0x199893(_0x44c0c6[_0x075a('0x25')][_0x075a('0x24')]);}})[_0x075a('0x26')](function(_0x370943){logger[_0x075a('0x22')](_0x075a('0x1d'),_0x255e9c,_0x370943);_0xb0784d(_0x370943);});});}function respondWithStatusCode(_0x4c1809,_0xf4ce81){_0xf4ce81=_0xf4ce81||0xcc;return function(_0x49dc89){if(_0x49dc89){return _0x4c1809[_0x075a('0x27')](_0xf4ce81);}return _0x4c1809[_0x075a('0x28')](_0xf4ce81)[_0x075a('0x29')]();};}function respondWithResult(_0x2828b5,_0x5cdaa4){_0x5cdaa4=_0x5cdaa4||0xc8;return function(_0x22eb6b){if(_0x22eb6b){return _0x2828b5['status'](_0x5cdaa4)['json'](_0x22eb6b);}};}function respondWithFilteredResult(_0x56b35a,_0x2614a7){return function(_0x20ed2f){if(_0x20ed2f){var _0x323f21=typeof _0x2614a7[_0x075a('0x2a')]==='undefined'&&typeof _0x2614a7['limit']==='undefined';var _0x4ee0be=_0x20ed2f[_0x075a('0x2b')];var _0x39fc56=_0x323f21?0x0:_0x2614a7[_0x075a('0x2a')];var _0x55e61b=_0x323f21?_0x20ed2f[_0x075a('0x2b')]:_0x2614a7[_0x075a('0x2a')]+_0x2614a7['limit'];var _0x5cf8a2;if(_0x55e61b>=_0x4ee0be){_0x55e61b=_0x4ee0be;_0x5cf8a2=0xc8;}else{_0x5cf8a2=0xce;}_0x56b35a[_0x075a('0x28')](_0x5cf8a2);return _0x56b35a['set'](_0x075a('0x2c'),_0x39fc56+'-'+_0x55e61b+'/'+_0x4ee0be)[_0x075a('0x2d')](_0x20ed2f);}return null;};}function patchUpdates(_0x553e86){return function(_0xf9b662){try{jsonpatch[_0x075a('0x2e')](_0xf9b662,_0x553e86,!![]);}catch(_0x3ce9ba){return BPromise[_0x075a('0x2f')](_0x3ce9ba);}return _0xf9b662[_0x075a('0x30')]();};}function saveUpdates(_0x4dda01,_0x1f7d39){return function(_0x79737c){if(_0x79737c){return _0x79737c[_0x075a('0x31')](_0x4dda01)[_0x075a('0x32')](function(_0x54a380){return _0x54a380;});}return null;};}function removeEntity(_0x3e6a41,_0x35e29a){return function(_0x555361){if(_0x555361){return _0x555361[_0x075a('0x33')]()['then'](function(){_0x3e6a41['status'](0xcc)[_0x075a('0x29')]();});}};}function handleEntityNotFound(_0x1e369a,_0x5f5b5a){return function(_0x27d2c3){if(!_0x27d2c3){_0x1e369a[_0x075a('0x27')](0x194);}return _0x27d2c3;};}function handleError(_0x4a07b8,_0x25f854){_0x25f854=_0x25f854||0x1f4;return function(_0x4c4dfb){logger['error'](_0x4c4dfb[_0x075a('0x34')]);if(_0x4c4dfb['name']){delete _0x4c4dfb['name'];}_0x4a07b8['status'](_0x25f854)['send'](_0x4c4dfb);};}exports[_0x075a('0x35')]=function(_0x320f9d,_0x198bdd){var _0x24fef={},_0x594545={},_0x1fea46={'count':0x0,'rows':[]};var _0x58b14c=_[_0x075a('0x36')](db[_0x075a('0x37')][_0x075a('0x38')],function(_0x565173){return{'name':_0x565173[_0x075a('0x39')],'type':_0x565173[_0x075a('0x3a')]['key']};});_0x594545[_0x075a('0x3b')]=_[_0x075a('0x36')](_0x58b14c,_0x075a('0x3c'));_0x594545['query']=_[_0x075a('0x3d')](_0x320f9d[_0x075a('0x3e')]);_0x594545[_0x075a('0x3f')]=_[_0x075a('0x40')](_0x594545[_0x075a('0x3b')],_0x594545[_0x075a('0x3e')]);_0x24fef[_0x075a('0x41')]=_[_0x075a('0x40')](_0x594545['model'],qs[_0x075a('0x42')](_0x320f9d['query'][_0x075a('0x42')]));_0x24fef['attributes']=_0x24fef[_0x075a('0x41')][_0x075a('0x43')]?_0x24fef[_0x075a('0x41')]:_0x594545[_0x075a('0x3b')];if(!_0x320f9d['query']['hasOwnProperty'](_0x075a('0x44'))){_0x24fef[_0x075a('0x45')]=qs[_0x075a('0x45')](_0x320f9d[_0x075a('0x3e')]['limit']);_0x24fef[_0x075a('0x2a')]=qs[_0x075a('0x2a')](_0x320f9d[_0x075a('0x3e')][_0x075a('0x2a')]);}_0x24fef['order']=qs[_0x075a('0x46')](_0x320f9d[_0x075a('0x3e')][_0x075a('0x46')]);_0x24fef[_0x075a('0x47')]=qs[_0x075a('0x3f')](_[_0x075a('0x48')](_0x320f9d['query'],_0x594545['filters']),_0x58b14c);if(_0x320f9d[_0x075a('0x3e')][_0x075a('0x49')]){_0x24fef[_0x075a('0x47')]=_[_0x075a('0x4a')](_0x24fef['where'],{'$or':_['map'](_0x58b14c,function(_0x405216){if(_0x405216['type']!==_0x075a('0x4b')){var _0x58fe0f={};_0x58fe0f[_0x405216[_0x075a('0x3c')]]={'$like':'%'+_0x320f9d[_0x075a('0x3e')][_0x075a('0x49')]+'%'};return _0x58fe0f;}})});}_0x24fef=_[_0x075a('0x4a')]({},_0x24fef,_0x320f9d[_0x075a('0x4c')]);var _0x52c29b={'where':_0x24fef[_0x075a('0x47')]};return db[_0x075a('0x37')][_0x075a('0x2b')](_0x52c29b)['then'](function(_0x3d6175){_0x1fea46[_0x075a('0x2b')]=_0x3d6175;if(_0x320f9d[_0x075a('0x3e')][_0x075a('0x4d')]){_0x24fef[_0x075a('0x4e')]=[{'all':!![]}];}return db[_0x075a('0x37')][_0x075a('0x4f')](_0x24fef);})[_0x075a('0x32')](function(_0x2fd70f){_0x1fea46[_0x075a('0x50')]=_0x2fd70f;return _0x1fea46;})[_0x075a('0x32')](respondWithFilteredResult(_0x198bdd,_0x24fef))[_0x075a('0x26')](handleError(_0x198bdd,null));};exports['show']=function(_0x30a7dc,_0x100788){var _0x1cf6eb={'raw':!![],'where':{'id':_0x30a7dc[_0x075a('0x51')]['id']}},_0x402102={};_0x402102[_0x075a('0x3b')]=_[_0x075a('0x3d')](db[_0x075a('0x37')]['rawAttributes']);_0x402102[_0x075a('0x3e')]=_['keys'](_0x30a7dc[_0x075a('0x3e')]);_0x402102[_0x075a('0x3f')]=_[_0x075a('0x40')](_0x402102[_0x075a('0x3b')],_0x402102[_0x075a('0x3e')]);_0x1cf6eb[_0x075a('0x41')]=_['intersection'](_0x402102[_0x075a('0x3b')],qs[_0x075a('0x42')](_0x30a7dc[_0x075a('0x3e')][_0x075a('0x42')]));_0x1cf6eb['attributes']=_0x1cf6eb['attributes']['length']?_0x1cf6eb['attributes']:_0x402102[_0x075a('0x3b')];if(_0x30a7dc['query'][_0x075a('0x4d')]){_0x1cf6eb['include']=[{'all':!![]}];}_0x1cf6eb=_[_0x075a('0x4a')]({},_0x1cf6eb,_0x30a7dc[_0x075a('0x4c')]);return db['WhatsappMessage'][_0x075a('0x52')](_0x1cf6eb)['then'](handleEntityNotFound(_0x100788,null))['then'](respondWithResult(_0x100788,null))[_0x075a('0x26')](handleError(_0x100788,null));};exports[_0x075a('0x53')]=function(_0x1368c6,_0x45f0a2){return db[_0x075a('0x37')][_0x075a('0x53')](_0x1368c6[_0x075a('0x54')],{})[_0x075a('0x32')](respondWithResult(_0x45f0a2,0xc9))[_0x075a('0x26')](handleError(_0x45f0a2,null));};exports[_0x075a('0x31')]=function(_0x4d8c72,_0x108780){if(_0x4d8c72[_0x075a('0x54')]['id']){delete _0x4d8c72[_0x075a('0x54')]['id'];}return db[_0x075a('0x37')][_0x075a('0x52')]({'where':{'id':_0x4d8c72[_0x075a('0x51')]['id']}})[_0x075a('0x32')](handleEntityNotFound(_0x108780,null))[_0x075a('0x32')](saveUpdates(_0x4d8c72[_0x075a('0x54')],null))[_0x075a('0x32')](respondWithResult(_0x108780,null))['catch'](handleError(_0x108780,null));};exports['destroy']=function(_0x1da199,_0x5793eb){return db[_0x075a('0x37')][_0x075a('0x52')]({'where':{'id':_0x1da199[_0x075a('0x51')]['id']}})[_0x075a('0x32')](handleEntityNotFound(_0x5793eb,null))[_0x075a('0x32')](removeEntity(_0x5793eb,null))[_0x075a('0x26')](handleError(_0x5793eb,null));};exports[_0x075a('0x55')]=function(_0xc9a29a,_0x373089){return db['WhatsappMessage']['describe']()[_0x075a('0x32')](respondWithResult(_0x373089,null))[_0x075a('0x26')](handleError(_0x373089,null));};var interaction_log=require('../../config/logger')(_0x075a('0x56'));exports[_0x075a('0x57')]=function(_0x528985,_0x15f04f,_0x408727){var _0x4b1e44={'agent':{},'channel':_0x075a('0x58')};if(_0x528985[_0x075a('0x54')]['id']){delete _0x528985[_0x075a('0x54')]['id'];}_0x528985[_0x075a('0x54')][_0x075a('0x59')]=!![];_0x528985[_0x075a('0x54')][_0x075a('0x5a')]=moment()[_0x075a('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0x528985[_0x075a('0x54')][_0x075a('0x5c')]=_0x528985['body'][_0x075a('0x5c')]||_0x528985[_0x075a('0x5d')]['id'];_0x4b1e44[_0x075a('0x5e')]['id']=_0x528985[_0x075a('0x54')][_0x075a('0x5c')];return db[_0x075a('0x37')][_0x075a('0x52')]({'where':{'id':_0x528985[_0x075a('0x51')]['id'],'UserId':null}})[_0x075a('0x32')](handleEntityNotFound(_0x15f04f,null))['then'](saveUpdates(_0x528985[_0x075a('0x54')],null))[_0x075a('0x32')](function(_0x3c0432){if(_0x3c0432){_0x4b1e44[_0x075a('0x24')]=_0x3c0432[_0x075a('0x5f')]({'plain':!![]});return db[_0x075a('0x60')]['find']({'where':{'id':_0x3c0432['WhatsappInteractionId']}});}return null;})[_0x075a('0x32')](handleEntityNotFound(_0x15f04f,null))[_0x075a('0x32')](function(_0x2c7373){if(_0x2c7373){return _0x2c7373[_0x075a('0x31')]({'UserId':_0x528985['body'][_0x075a('0x5c')],'read1stAt':_['isNil'](_0x2c7373[_0x075a('0x61')])?moment()['format'](_0x075a('0x62')):undefined});}return null;})[_0x075a('0x32')](function(_0x5aacad){if(_0x5aacad){_0x4b1e44[_0x075a('0x63')]=_0x5aacad[_0x075a('0x5f')]({'plain':!![]});interaction_log[_0x075a('0x64')](_0x075a('0x65'),_0x528985[_0x075a('0x5d')]['id'],_0x528985[_0x075a('0x5d')]['name'],_0x528985['user'][_0x075a('0x66')],_0x4b1e44[_0x075a('0x63')]['id'],_0x528985[_0x075a('0x54')]?JSON[_0x075a('0x21')](_0x528985['body']):'null');return respondWithRpcPromise(_0x075a('0x67'),'acceptMessage',_0x4b1e44);}return null;})[_0x075a('0x32')](function(_0x2252f8){var _0x4fe3bb=_0x075a('0x68')+_0x2252f8[_0x075a('0x24')]['ContactId'];return db['sequelize'][_0x075a('0x3e')](_0x4fe3bb,{'type':db[_0x075a('0x69')][_0x075a('0x6a')][_0x075a('0x6b')],'raw':!![]})[_0x075a('0x32')](function(_0x54c32e){return _0x54c32e;});})['then'](function(_0x25e93b){if(_0x25e93b){_0x4b1e44['message']['contact']=_0x25e93b[0x0];if(!_0x528985[_0x075a('0x54')][_0x075a('0x5c')])return;return db[_0x075a('0x6c')][_0x075a('0x52')]({'where':{'id':_0x528985[_0x075a('0x54')]['UserId'],'role':'agent'},'attributes':['id',_0x075a('0x3c'),_0x075a('0x6d'),_0x075a('0x6e'),'internal'],'raw':!![]});}return null;})['then'](function(_0x11b637){if(!_0x11b637)return null;_0x4b1e44['message'][_0x075a('0x5e')]=_0x11b637;return _0x4b1e44;})[_0x075a('0x32')](function(_0x5162e0){if(_0x5162e0){if(_0x528985['body'][_0x075a('0x6f')]){_0x4b1e44[_0x075a('0x24')]['interface']=util[_0x075a('0x5b')](_0x075a('0x70'),_0x528985['user'][_0x075a('0x3c')]);_0x4b1e44[_0x075a('0x24')][_0x075a('0x71')]=_0x4b1e44['channel'];_0x4b1e44[_0x075a('0x24')][_0x075a('0x72')]=_0x4b1e44[_0x075a('0x71')];_0x4b1e44['message'][_0x075a('0x73')]='accept';return respondWithRpcPromise('EventManager',_0x075a('0x74'),{'event':_0x075a('0x75'),'message':_0x4b1e44['message']},client9002)[_0x075a('0x32')](function(){return _0x4b1e44;});}return _0x4b1e44;}return null;})[_0x075a('0x32')](respondWithResult(_0x15f04f,null))[_0x075a('0x26')](handleError(_0x15f04f,null));};var interaction_log=require('../../config/logger')(_0x075a('0x56'));exports['reject']=function(_0x4c46ba,_0x43b68a,_0x58198f){var _0x2362ea={'agent':{},'channel':'whatsapp'};if(_0x4c46ba['body']['id']){delete _0x4c46ba[_0x075a('0x54')]['id'];}_0x4c46ba[_0x075a('0x54')][_0x075a('0x5c')]=_0x4c46ba[_0x075a('0x54')]['UserId']||_0x4c46ba[_0x075a('0x5d')]['id'];_0x2362ea[_0x075a('0x5e')]['id']=_0x4c46ba[_0x075a('0x54')][_0x075a('0x5c')];return db[_0x075a('0x37')][_0x075a('0x52')]({'where':{'id':_0x4c46ba[_0x075a('0x51')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x43b68a,null))[_0x075a('0x32')](function(_0x5acad3){if(_0x5acad3){_0x2362ea[_0x075a('0x24')]=_0x5acad3['get']({'plain':!![]});return db[_0x075a('0x60')][_0x075a('0x52')]({'where':{'id':_0x5acad3[_0x075a('0x76')]}});}return null;})['then'](handleEntityNotFound(_0x43b68a,null))[_0x075a('0x32')](function(_0x51e26c){if(_0x51e26c){_0x2362ea[_0x075a('0x63')]=_0x51e26c[_0x075a('0x5f')]({'plain':!![]});interaction_log['info'](_0x075a('0x77'),_0x4c46ba['user']['id'],_0x4c46ba[_0x075a('0x5d')][_0x075a('0x3c')],_0x4c46ba[_0x075a('0x5d')][_0x075a('0x66')],_0x2362ea[_0x075a('0x63')]['id'],_0x4c46ba[_0x075a('0x54')]?JSON[_0x075a('0x21')](_0x4c46ba[_0x075a('0x54')]):_0x075a('0x78'));return respondWithRpcPromise(_0x075a('0x79'),_0x075a('0x7a'),_0x2362ea);}return null;})[_0x075a('0x32')](function(_0x536dcb){var _0x382760=_0x075a('0x68')+_0x536dcb[_0x075a('0x24')][_0x075a('0x7b')];return db[_0x075a('0x7c')]['query'](_0x382760,{'type':db['Sequelize'][_0x075a('0x6a')]['SELECT'],'raw':!![]})[_0x075a('0x32')](function(_0x22eba3){return _0x22eba3;});})['then'](function(_0x3d6ea8){if(_0x3d6ea8){_0x2362ea['message'][_0x075a('0x7d')]=_0x3d6ea8[0x0];if(!_0x4c46ba['body'][_0x075a('0x5c')])return;return db[_0x075a('0x6c')][_0x075a('0x52')]({'where':{'id':_0x4c46ba[_0x075a('0x54')][_0x075a('0x5c')],'role':_0x075a('0x5e')},'attributes':['id','name',_0x075a('0x6d'),_0x075a('0x6e'),_0x075a('0x7e')],'raw':!![]});}return null;})[_0x075a('0x32')](function(_0x304f2e){if(!_0x304f2e)return null;_0x2362ea[_0x075a('0x24')][_0x075a('0x5e')]=_0x304f2e;return _0x2362ea;})[_0x075a('0x32')](function(_0x4f5f6e){if(_0x4f5f6e){_0x4f5f6e[_0x075a('0x24')]['interface']=util['format']('SIP/%s',_0x4c46ba[_0x075a('0x5d')][_0x075a('0x3c')]);_0x4f5f6e['message'][_0x075a('0x71')]=_0x2362ea[_0x075a('0x71')];_0x4f5f6e[_0x075a('0x24')][_0x075a('0x72')]=_0x2362ea[_0x075a('0x71')];_0x4f5f6e[_0x075a('0x24')]['event']=_0x075a('0x2f');respondWithRpcPromise(_0x075a('0x74'),_0x075a('0x74'),{'event':_0x075a('0x7f'),'message':_0x4f5f6e[_0x075a('0x24')]},client9002);return _0x2362ea;}return null;})['then'](respondWithResult(_0x43b68a,null))[_0x075a('0x26')](handleError(_0x43b68a,null));};exports['status']=function(_0x49e9f0,_0x53636b,_0x406d33){if(_0x49e9f0[_0x075a('0x54')]['id']){delete _0x49e9f0[_0x075a('0x54')]['id'];}var _0x17a27b;return db['WhatsappMessage'][_0x075a('0x52')]({'where':{'id':_0x49e9f0[_0x075a('0x51')]['id']}})[_0x075a('0x32')](handleEntityNotFound(_0x53636b,null))[_0x075a('0x32')](function(_0x19095d){if(_0x19095d){_0x17a27b=_0x19095d;return db[_0x075a('0x80')][_0x075a('0x52')]({'where':{'id':_0x19095d[_0x075a('0x81')]}});}})[_0x075a('0x32')](handleEntityNotFound(_0x53636b,null))[_0x075a('0x32')](function(_0x1ef825){if(_0x1ef825){logger[_0x075a('0x1f')](_0x075a('0x82'),_0x075a('0x28'),_0x075a('0x83'),_0x1ef825[_0x075a('0x3a')],util[_0x075a('0x84')](_0x49e9f0[_0x075a('0x54')],{'showHidden':![],'depth':null}));switch(_0x1ef825['type']){case _0x075a('0x85'):if(_0x49e9f0[_0x075a('0x54')]['MessageSid']&&_0x49e9f0[_0x075a('0x54')]['MessageSid']===_0x17a27b[_0x075a('0x86')]&&_0x49e9f0[_0x075a('0x54')][_0x075a('0x87')]&&_0x49e9f0[_0x075a('0x54')][_0x075a('0x87')]==='read'){return _0x17a27b[_0x075a('0x31')]({'read':!![]});}else{logger[_0x075a('0x22')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x075a('0x28'),_0x075a('0x85'),util[_0x075a('0x84')](_0x49e9f0[_0x075a('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x17a27b;}})[_0x075a('0x32')](respondWithResult(_0x53636b,null))['catch'](handleError(_0x53636b,null));};
\ No newline at end of file
+var _0x7a46=['jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','stack','name','send','WhatsappMessage','rawAttributes','fieldName','type','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','keys','find','create','body','destroy','whatsapp','read','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','interface','SIP/%s','motionChannel','channel','event','accept','EventManager','acceptmessage','whatsapp-interactions','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','contact','agent','rejectmessage','WhatsappAccount','WhatsappAccountId','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','register'];(function(_0x5823ff,_0x461efb){var _0x326556=function(_0x2cdb50){while(--_0x2cdb50){_0x5823ff['push'](_0x5823ff['shift']());}};_0x326556(++_0x461efb);}(_0x7a46,0xfb));var _0x67a4=function(_0x4c74ec,_0x482955){_0x4c74ec=_0x4c74ec-0x0;var _0x2fa807=_0x7a46[_0x4c74ec];return _0x2fa807;};'use strict';var emlformat=require(_0x67a4('0x0'));var rimraf=require(_0x67a4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x67a4('0x2'));var rp=require(_0x67a4('0x3'));var moment=require(_0x67a4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x67a4('0x5'));var util=require(_0x67a4('0x6'));var path=require(_0x67a4('0x7'));var sox=require(_0x67a4('0x8'));var csv=require('to-csv');var ejs=require(_0x67a4('0x9'));var fs=require('fs');var fs_extra=require(_0x67a4('0xa'));var _=require('lodash');var squel=require(_0x67a4('0xb'));var crypto=require(_0x67a4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x67a4('0xd'));var toCsv=require(_0x67a4('0xe'));var querystring=require(_0x67a4('0xf'));var Papa=require(_0x67a4('0x10'));var Redis=require('ioredis');var authService=require(_0x67a4('0x11'));var qs=require(_0x67a4('0x12'));var as=require(_0x67a4('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x67a4('0x14'))(_0x67a4('0x15'));var utils=require(_0x67a4('0x16'));var config=require(_0x67a4('0x17'));var licenseUtil=require(_0x67a4('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x67a4('0x19')](config['redis'],{'host':_0x67a4('0x1a'),'port':0x18eb});var socket=require(_0x67a4('0x1b'))(new Redis(config['redis']));require('./whatsappMessage.socket')[_0x67a4('0x1c')](socket);var jayson=require(_0x67a4('0x1d'));var client=jayson[_0x67a4('0x1e')][_0x67a4('0x1f')]({'port':0x232c});var client9002=jayson[_0x67a4('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5dd132,_0x4776a1,_0x4e13bf,_0x385044){return new BPromise(function(_0x31a6d7,_0x30d108){var _0x82f44f=_0x385044||client;return _0x82f44f[_0x67a4('0x20')](_0x5dd132,_0x4e13bf)[_0x67a4('0x21')](function(_0x5bcdda){logger[_0x67a4('0x22')](_0x67a4('0x23'),_0x4776a1,_0x67a4('0x24'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x4776a1,_0x67a4('0x24'),JSON[_0x67a4('0x25')](_0x5bcdda));if(_0x5bcdda[_0x67a4('0x26')]){if(_0x5bcdda['error']['code']===0x1f4){logger['error'](_0x67a4('0x23'),_0x4776a1,_0x5bcdda[_0x67a4('0x26')]['message']);return _0x30d108(_0x5bcdda['error'][_0x67a4('0x27')]);}logger[_0x67a4('0x26')](_0x67a4('0x23'),_0x4776a1,_0x5bcdda[_0x67a4('0x26')][_0x67a4('0x27')]);return _0x31a6d7(_0x5bcdda[_0x67a4('0x26')][_0x67a4('0x27')]);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x4776a1,_0x67a4('0x24'));_0x31a6d7(_0x5bcdda[_0x67a4('0x28')][_0x67a4('0x27')]);}})[_0x67a4('0x29')](function(_0x19d748){logger[_0x67a4('0x26')](_0x67a4('0x23'),_0x4776a1,_0x19d748);_0x30d108(_0x19d748);});});}function respondWithStatusCode(_0x51e862,_0x2cc1a9){_0x2cc1a9=_0x2cc1a9||0xcc;return function(_0x6f1459){if(_0x6f1459){return _0x51e862[_0x67a4('0x2a')](_0x2cc1a9);}return _0x51e862['status'](_0x2cc1a9)[_0x67a4('0x2b')]();};}function respondWithResult(_0x2ae6d6,_0x3dc5c6){_0x3dc5c6=_0x3dc5c6||0xc8;return function(_0x68a178){if(_0x68a178){return _0x2ae6d6[_0x67a4('0x2c')](_0x3dc5c6)[_0x67a4('0x2d')](_0x68a178);}};}function respondWithFilteredResult(_0x15ec0a,_0xfde5da){return function(_0x11826b){if(_0x11826b){var _0x4220d0=typeof _0xfde5da[_0x67a4('0x2e')]==='undefined'&&typeof _0xfde5da[_0x67a4('0x2f')]===_0x67a4('0x30');var _0x142ed0=_0x11826b[_0x67a4('0x31')];var _0x51f2b1=_0x4220d0?0x0:_0xfde5da[_0x67a4('0x2e')];var _0x3741ab=_0x4220d0?_0x11826b[_0x67a4('0x31')]:_0xfde5da['offset']+_0xfde5da['limit'];var _0x322655;if(_0x3741ab>=_0x142ed0){_0x3741ab=_0x142ed0;_0x322655=0xc8;}else{_0x322655=0xce;}_0x15ec0a[_0x67a4('0x2c')](_0x322655);return _0x15ec0a[_0x67a4('0x32')]('Content-Range',_0x51f2b1+'-'+_0x3741ab+'/'+_0x142ed0)[_0x67a4('0x2d')](_0x11826b);}return null;};}function patchUpdates(_0x5f00d3){return function(_0x4d812c){try{jsonpatch[_0x67a4('0x33')](_0x4d812c,_0x5f00d3,!![]);}catch(_0x16a996){return BPromise[_0x67a4('0x34')](_0x16a996);}return _0x4d812c[_0x67a4('0x35')]();};}function saveUpdates(_0x2deee1,_0x353e2c){return function(_0x187371){if(_0x187371){return _0x187371[_0x67a4('0x36')](_0x2deee1)['then'](function(_0xcc5ad){return _0xcc5ad;});}return null;};}function removeEntity(_0x369243,_0x593fac){return function(_0x264c8f){if(_0x264c8f){return _0x264c8f['destroy']()[_0x67a4('0x21')](function(){_0x369243[_0x67a4('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49e55f,_0x3d403e){return function(_0x45c888){if(!_0x45c888){_0x49e55f[_0x67a4('0x2a')](0x194);}return _0x45c888;};}function handleError(_0x113df1,_0x506648){_0x506648=_0x506648||0x1f4;return function(_0x7303a4){logger[_0x67a4('0x26')](_0x7303a4[_0x67a4('0x37')]);if(_0x7303a4['name']){delete _0x7303a4[_0x67a4('0x38')];}_0x113df1['status'](_0x506648)[_0x67a4('0x39')](_0x7303a4);};}exports['index']=function(_0x5ce96b,_0x36a743){var _0xe6f968={},_0x444b6f={},_0x53ab3e={'count':0x0,'rows':[]};var _0x5c4419=_['map'](db[_0x67a4('0x3a')][_0x67a4('0x3b')],function(_0x5bbd27){return{'name':_0x5bbd27[_0x67a4('0x3c')],'type':_0x5bbd27[_0x67a4('0x3d')]['key']};});_0x444b6f[_0x67a4('0x3e')]=_[_0x67a4('0x3f')](_0x5c4419,_0x67a4('0x38'));_0x444b6f['query']=_['keys'](_0x5ce96b[_0x67a4('0x40')]);_0x444b6f[_0x67a4('0x41')]=_[_0x67a4('0x42')](_0x444b6f[_0x67a4('0x3e')],_0x444b6f['query']);_0xe6f968['attributes']=_[_0x67a4('0x42')](_0x444b6f[_0x67a4('0x3e')],qs['fields'](_0x5ce96b[_0x67a4('0x40')][_0x67a4('0x43')]));_0xe6f968[_0x67a4('0x44')]=_0xe6f968[_0x67a4('0x44')][_0x67a4('0x45')]?_0xe6f968['attributes']:_0x444b6f[_0x67a4('0x3e')];if(!_0x5ce96b[_0x67a4('0x40')][_0x67a4('0x46')](_0x67a4('0x47'))){_0xe6f968[_0x67a4('0x2f')]=qs[_0x67a4('0x2f')](_0x5ce96b[_0x67a4('0x40')]['limit']);_0xe6f968[_0x67a4('0x2e')]=qs[_0x67a4('0x2e')](_0x5ce96b[_0x67a4('0x40')][_0x67a4('0x2e')]);}_0xe6f968[_0x67a4('0x48')]=qs[_0x67a4('0x49')](_0x5ce96b[_0x67a4('0x40')][_0x67a4('0x49')]);_0xe6f968[_0x67a4('0x4a')]=qs['filters'](_[_0x67a4('0x4b')](_0x5ce96b['query'],_0x444b6f[_0x67a4('0x41')]),_0x5c4419);if(_0x5ce96b['query'][_0x67a4('0x4c')]){_0xe6f968[_0x67a4('0x4a')]=_[_0x67a4('0x4d')](_0xe6f968[_0x67a4('0x4a')],{'$or':_[_0x67a4('0x3f')](_0x5c4419,function(_0x3abd48){if(_0x3abd48[_0x67a4('0x3d')]!==_0x67a4('0x4e')){var _0x5ae399={};_0x5ae399[_0x3abd48[_0x67a4('0x38')]]={'$like':'%'+_0x5ce96b[_0x67a4('0x40')][_0x67a4('0x4c')]+'%'};return _0x5ae399;}})});}_0xe6f968=_[_0x67a4('0x4d')]({},_0xe6f968,_0x5ce96b[_0x67a4('0x4f')]);var _0x1cfeb3={'where':_0xe6f968[_0x67a4('0x4a')]};return db[_0x67a4('0x3a')][_0x67a4('0x31')](_0x1cfeb3)[_0x67a4('0x21')](function(_0x3b6ac7){_0x53ab3e['count']=_0x3b6ac7;if(_0x5ce96b[_0x67a4('0x40')][_0x67a4('0x50')]){_0xe6f968[_0x67a4('0x51')]=[{'all':!![]}];}return db[_0x67a4('0x3a')]['findAll'](_0xe6f968);})[_0x67a4('0x21')](function(_0x17866e){_0x53ab3e[_0x67a4('0x52')]=_0x17866e;return _0x53ab3e;})[_0x67a4('0x21')](respondWithFilteredResult(_0x36a743,_0xe6f968))[_0x67a4('0x29')](handleError(_0x36a743,null));};exports[_0x67a4('0x53')]=function(_0x2aed1c,_0x528c16){var _0xd9e87={'raw':!![],'where':{'id':_0x2aed1c[_0x67a4('0x54')]['id']}},_0x13b466={};_0x13b466[_0x67a4('0x3e')]=_[_0x67a4('0x55')](db[_0x67a4('0x3a')][_0x67a4('0x3b')]);_0x13b466[_0x67a4('0x40')]=_[_0x67a4('0x55')](_0x2aed1c['query']);_0x13b466['filters']=_['intersection'](_0x13b466[_0x67a4('0x3e')],_0x13b466[_0x67a4('0x40')]);_0xd9e87[_0x67a4('0x44')]=_[_0x67a4('0x42')](_0x13b466['model'],qs[_0x67a4('0x43')](_0x2aed1c[_0x67a4('0x40')][_0x67a4('0x43')]));_0xd9e87[_0x67a4('0x44')]=_0xd9e87[_0x67a4('0x44')][_0x67a4('0x45')]?_0xd9e87[_0x67a4('0x44')]:_0x13b466[_0x67a4('0x3e')];if(_0x2aed1c['query']['includeAll']){_0xd9e87[_0x67a4('0x51')]=[{'all':!![]}];}_0xd9e87=_[_0x67a4('0x4d')]({},_0xd9e87,_0x2aed1c[_0x67a4('0x4f')]);return db[_0x67a4('0x3a')][_0x67a4('0x56')](_0xd9e87)[_0x67a4('0x21')](handleEntityNotFound(_0x528c16,null))[_0x67a4('0x21')](respondWithResult(_0x528c16,null))[_0x67a4('0x29')](handleError(_0x528c16,null));};exports[_0x67a4('0x57')]=function(_0x125abc,_0x5b7bf8){return db['WhatsappMessage'][_0x67a4('0x57')](_0x125abc[_0x67a4('0x58')],{})[_0x67a4('0x21')](respondWithResult(_0x5b7bf8,0xc9))['catch'](handleError(_0x5b7bf8,null));};exports['update']=function(_0x265c55,_0x20021f){if(_0x265c55[_0x67a4('0x58')]['id']){delete _0x265c55[_0x67a4('0x58')]['id'];}return db[_0x67a4('0x3a')]['find']({'where':{'id':_0x265c55[_0x67a4('0x54')]['id']}})['then'](handleEntityNotFound(_0x20021f,null))[_0x67a4('0x21')](saveUpdates(_0x265c55['body'],null))[_0x67a4('0x21')](respondWithResult(_0x20021f,null))[_0x67a4('0x29')](handleError(_0x20021f,null));};exports[_0x67a4('0x59')]=function(_0x577ae9,_0x1d20f1){return db['WhatsappMessage'][_0x67a4('0x56')]({'where':{'id':_0x577ae9[_0x67a4('0x54')]['id']}})[_0x67a4('0x21')](handleEntityNotFound(_0x1d20f1,null))[_0x67a4('0x21')](removeEntity(_0x1d20f1,null))[_0x67a4('0x29')](handleError(_0x1d20f1,null));};exports['describe']=function(_0x1d9eae,_0x10bd5f){return db[_0x67a4('0x3a')]['describe']()[_0x67a4('0x21')](respondWithResult(_0x10bd5f,null))['catch'](handleError(_0x10bd5f,null));};var interaction_log=require(_0x67a4('0x14'))('whatsapp-interactions');exports['accept']=function(_0x551a7f,_0x51f510,_0x43bbc9){var _0x3a21c7={'agent':{},'channel':_0x67a4('0x5a')};if(_0x551a7f[_0x67a4('0x58')]['id']){delete _0x551a7f['body']['id'];}_0x551a7f[_0x67a4('0x58')][_0x67a4('0x5b')]=!![];_0x551a7f[_0x67a4('0x58')]['readAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x551a7f[_0x67a4('0x58')][_0x67a4('0x5c')]=_0x551a7f['body'][_0x67a4('0x5c')]||_0x551a7f[_0x67a4('0x5d')]['id'];_0x3a21c7['agent']['id']=_0x551a7f[_0x67a4('0x58')][_0x67a4('0x5c')];return db[_0x67a4('0x3a')]['find']({'where':{'id':_0x551a7f['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x51f510,null))[_0x67a4('0x21')](saveUpdates(_0x551a7f[_0x67a4('0x58')],null))[_0x67a4('0x21')](function(_0x22d901){if(_0x22d901){_0x3a21c7['message']=_0x22d901[_0x67a4('0x5e')]({'plain':!![]});return db[_0x67a4('0x5f')][_0x67a4('0x56')]({'where':{'id':_0x22d901[_0x67a4('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x51f510,null))['then'](function(_0x216703){if(_0x216703){return _0x216703[_0x67a4('0x36')]({'UserId':_0x551a7f[_0x67a4('0x58')]['UserId'],'read1stAt':_['isNil'](_0x216703['read1stAt'])?moment()[_0x67a4('0x61')](_0x67a4('0x62')):undefined});}return null;})[_0x67a4('0x21')](function(_0x12a337){if(_0x12a337){_0x3a21c7['interaction']=_0x12a337[_0x67a4('0x5e')]({'plain':!![]});interaction_log[_0x67a4('0x22')](_0x67a4('0x63'),_0x551a7f['user']['id'],_0x551a7f['user'][_0x67a4('0x38')],_0x551a7f[_0x67a4('0x5d')][_0x67a4('0x64')],_0x3a21c7[_0x67a4('0x65')]['id'],_0x551a7f[_0x67a4('0x58')]?JSON['stringify'](_0x551a7f[_0x67a4('0x58')]):_0x67a4('0x66'));return respondWithRpcPromise(_0x67a4('0x67'),'acceptMessage',_0x3a21c7);}return null;})['then'](function(_0x1c7452){var _0x1aa96d=_0x67a4('0x68')+_0x1c7452[_0x67a4('0x27')][_0x67a4('0x69')];return db['sequelize']['query'](_0x1aa96d,{'type':db[_0x67a4('0x6a')][_0x67a4('0x6b')][_0x67a4('0x6c')],'raw':!![]})[_0x67a4('0x21')](function(_0x15cb68){return _0x15cb68;});})['then'](function(_0x54231f){if(_0x54231f){_0x3a21c7[_0x67a4('0x27')]['contact']=_0x54231f[0x0];if(!_0x551a7f[_0x67a4('0x58')][_0x67a4('0x5c')])return;return db[_0x67a4('0x6d')][_0x67a4('0x56')]({'where':{'id':_0x551a7f[_0x67a4('0x58')][_0x67a4('0x5c')],'role':'agent'},'attributes':['id','name',_0x67a4('0x6e'),_0x67a4('0x6f'),_0x67a4('0x70')],'raw':!![]});}return null;})['then'](function(_0x5533e2){if(!_0x5533e2)return null;_0x3a21c7[_0x67a4('0x27')]['agent']=_0x5533e2;return _0x3a21c7;})[_0x67a4('0x21')](function(_0x2f988f){if(_0x2f988f){if(_0x551a7f[_0x67a4('0x58')]['manual']){_0x3a21c7[_0x67a4('0x27')][_0x67a4('0x71')]=util[_0x67a4('0x61')](_0x67a4('0x72'),_0x551a7f['user'][_0x67a4('0x38')]);_0x3a21c7['message']['channel']=_0x3a21c7['channel'];_0x3a21c7[_0x67a4('0x27')][_0x67a4('0x73')]=_0x3a21c7[_0x67a4('0x74')];_0x3a21c7[_0x67a4('0x27')][_0x67a4('0x75')]=_0x67a4('0x76');return respondWithRpcPromise(_0x67a4('0x77'),'EventManager',{'event':_0x67a4('0x78'),'message':_0x3a21c7[_0x67a4('0x27')]},client9002)[_0x67a4('0x21')](function(){return _0x3a21c7;});}return _0x3a21c7;}return null;})['then'](respondWithResult(_0x51f510,null))[_0x67a4('0x29')](handleError(_0x51f510,null));};var interaction_log=require('../../config/logger')(_0x67a4('0x79'));exports[_0x67a4('0x34')]=function(_0x49dcb1,_0x5976c5,_0x26d3dc){var _0x2d9218={'agent':{},'channel':_0x67a4('0x5a')};if(_0x49dcb1[_0x67a4('0x58')]['id']){delete _0x49dcb1['body']['id'];}_0x49dcb1['body'][_0x67a4('0x5c')]=_0x49dcb1['body'][_0x67a4('0x5c')]||_0x49dcb1[_0x67a4('0x5d')]['id'];_0x2d9218['agent']['id']=_0x49dcb1['body'][_0x67a4('0x5c')];return db['WhatsappMessage'][_0x67a4('0x56')]({'where':{'id':_0x49dcb1['params']['id'],'UserId':null}})[_0x67a4('0x21')](handleEntityNotFound(_0x5976c5,null))[_0x67a4('0x21')](function(_0x11759b){if(_0x11759b){_0x2d9218['message']=_0x11759b[_0x67a4('0x5e')]({'plain':!![]});return db[_0x67a4('0x5f')][_0x67a4('0x56')]({'where':{'id':_0x11759b[_0x67a4('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x5976c5,null))[_0x67a4('0x21')](function(_0x52936f){if(_0x52936f){_0x2d9218[_0x67a4('0x65')]=_0x52936f[_0x67a4('0x5e')]({'plain':!![]});interaction_log[_0x67a4('0x22')](_0x67a4('0x7a'),_0x49dcb1['user']['id'],_0x49dcb1[_0x67a4('0x5d')][_0x67a4('0x38')],_0x49dcb1[_0x67a4('0x5d')][_0x67a4('0x64')],_0x2d9218[_0x67a4('0x65')]['id'],_0x49dcb1[_0x67a4('0x58')]?JSON[_0x67a4('0x25')](_0x49dcb1['body']):_0x67a4('0x66'));return respondWithRpcPromise(_0x67a4('0x7b'),_0x67a4('0x7c'),_0x2d9218);}return null;})[_0x67a4('0x21')](function(_0x174092){var _0x1bf488='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x174092[_0x67a4('0x27')][_0x67a4('0x69')];return db[_0x67a4('0x7d')]['query'](_0x1bf488,{'type':db[_0x67a4('0x6a')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x4aeb16){return _0x4aeb16;});})[_0x67a4('0x21')](function(_0x27fe70){if(_0x27fe70){_0x2d9218[_0x67a4('0x27')][_0x67a4('0x7e')]=_0x27fe70[0x0];if(!_0x49dcb1[_0x67a4('0x58')][_0x67a4('0x5c')])return;return db[_0x67a4('0x6d')]['find']({'where':{'id':_0x49dcb1[_0x67a4('0x58')][_0x67a4('0x5c')],'role':'agent'},'attributes':['id',_0x67a4('0x38'),_0x67a4('0x6e'),_0x67a4('0x6f'),'internal'],'raw':!![]});}return null;})[_0x67a4('0x21')](function(_0x59483b){if(!_0x59483b)return null;_0x2d9218[_0x67a4('0x27')][_0x67a4('0x7f')]=_0x59483b;return _0x2d9218;})[_0x67a4('0x21')](function(_0x339ae6){if(_0x339ae6){_0x339ae6[_0x67a4('0x27')]['interface']=util['format'](_0x67a4('0x72'),_0x49dcb1[_0x67a4('0x5d')][_0x67a4('0x38')]);_0x339ae6[_0x67a4('0x27')]['channel']=_0x2d9218[_0x67a4('0x74')];_0x339ae6[_0x67a4('0x27')][_0x67a4('0x73')]=_0x2d9218[_0x67a4('0x74')];_0x339ae6[_0x67a4('0x27')][_0x67a4('0x75')]=_0x67a4('0x34');respondWithRpcPromise(_0x67a4('0x77'),_0x67a4('0x77'),{'event':_0x67a4('0x80'),'message':_0x339ae6[_0x67a4('0x27')]},client9002);return _0x2d9218;}return null;})['then'](respondWithResult(_0x5976c5,null))[_0x67a4('0x29')](handleError(_0x5976c5,null));};exports[_0x67a4('0x2c')]=function(_0x15d86e,_0x2c5ba8,_0x4a8820){if(_0x15d86e[_0x67a4('0x58')]['id']){delete _0x15d86e[_0x67a4('0x58')]['id'];}var _0x365faf;return db[_0x67a4('0x3a')][_0x67a4('0x56')]({'where':{'id':_0x15d86e[_0x67a4('0x54')]['id']}})[_0x67a4('0x21')](handleEntityNotFound(_0x2c5ba8,null))[_0x67a4('0x21')](function(_0x537229){if(_0x537229){_0x365faf=_0x537229;return db[_0x67a4('0x81')]['find']({'where':{'id':_0x537229[_0x67a4('0x82')]}});}})['then'](handleEntityNotFound(_0x2c5ba8,null))[_0x67a4('0x21')](function(_0x455402){if(_0x455402){logger[_0x67a4('0x83')](_0x67a4('0x84'),_0x67a4('0x2c'),_0x67a4('0x85'),_0x455402['type'],util['inspect'](_0x15d86e[_0x67a4('0x58')],{'showHidden':![],'depth':null}));switch(_0x455402[_0x67a4('0x3d')]){case _0x67a4('0x86'):if(_0x15d86e[_0x67a4('0x58')][_0x67a4('0x87')]&&_0x15d86e[_0x67a4('0x58')][_0x67a4('0x87')]===_0x365faf[_0x67a4('0x88')]&&_0x15d86e[_0x67a4('0x58')][_0x67a4('0x89')]&&_0x15d86e[_0x67a4('0x58')]['MessageStatus']===_0x67a4('0x5b')){return _0x365faf['update']({'read':!![]});}else{logger[_0x67a4('0x26')](_0x67a4('0x8a'),_0x67a4('0x2c'),'twilio',util[_0x67a4('0x8b')](_0x15d86e['body'],{'showHidden':![],'depth':null}));}break;}return _0x365faf;}})[_0x67a4('0x21')](respondWithResult(_0x2c5ba8,null))[_0x67a4('0x29')](handleError(_0x2c5ba8,null));};
\ No newline at end of file
index 7bf4df3..55935dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b65=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x32f3d0,_0x18caa6){var _0x3cfb65=function(_0x1b97ba){while(--_0x1b97ba){_0x32f3d0['push'](_0x32f3d0['shift']());}};_0x3cfb65(++_0x18caa6);}(_0x2b65,0x131));var _0x52b6=function(_0x4c7149,_0x335342){_0x4c7149=_0x4c7149-0x0;var _0x200122=_0x2b65[_0x4c7149];return _0x200122;};'use strict';var EventEmitter=require(_0x52b6('0x0'));var WhatsappMessage=require(_0x52b6('0x1'))['db'][_0x52b6('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x52b6('0x3')](0x0);var events={'afterCreate':_0x52b6('0x4'),'afterUpdate':_0x52b6('0x5'),'afterDestroy':_0x52b6('0x6')};function emitEvent(_0x14f639){return function(_0x5582d0,_0x3b8e05,_0x2a1355){WhatsappMessageEvents[_0x52b6('0x7')](_0x14f639+':'+_0x5582d0['id'],_0x5582d0);WhatsappMessageEvents[_0x52b6('0x7')](_0x14f639,_0x5582d0);_0x2a1355(null);};}for(var e in events){if(events[_0x52b6('0x8')](e)){var event=events[e];WhatsappMessage[_0x52b6('0x9')](e,emitEvent(event));}}module[_0x52b6('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x0bb5=['events','../../mysqldb','save','update','remove','emit','hook','exports'];(function(_0x1bc013,_0x7771c6){var _0x55df36=function(_0x1c02e0){while(--_0x1c02e0){_0x1bc013['push'](_0x1bc013['shift']());}};_0x55df36(++_0x7771c6);}(_0x0bb5,0x148));var _0x50bb=function(_0x1d170d,_0x222248){_0x1d170d=_0x1d170d-0x0;var _0x992885=_0x0bb5[_0x1d170d];return _0x992885;};'use strict';var EventEmitter=require(_0x50bb('0x0'));var WhatsappMessage=require(_0x50bb('0x1'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x50bb('0x2'),'afterUpdate':_0x50bb('0x3'),'afterDestroy':_0x50bb('0x4')};function emitEvent(_0x117e36){return function(_0x29c72b,_0xfdc9d4,_0x451b4c){WhatsappMessageEvents[_0x50bb('0x5')](_0x117e36+':'+_0x29c72b['id'],_0x29c72b);WhatsappMessageEvents['emit'](_0x117e36,_0x29c72b);_0x451b4c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x50bb('0x6')](e,emitEvent(event));}}module[_0x50bb('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index 391cc69..c6d467f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae7a=['messageId','fti_whatsapp_messages','FULLTEXT','models','toLowerCase','direction','out','secret','isNil','UserId','WhatsappInteraction','WhatsappInteractionId','then','update','createdAt','find','WhatsappAccountId','type','twilio','accountSid','authToken','messages','create','body','phone','whatsapp:','remote','/api/whatsapp/messages/','token','sid','error','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','sinch','baseUrl','/whatsapp/v1/','/messages/','text','POST','Bearer\x20','application/json','message_id','statuses','catch','err','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','bluebird','request-promise','path','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages'];(function(_0x3fcdf5,_0x503ca0){var _0x2d0786=function(_0x1ee5e2){while(--_0x1ee5e2){_0x3fcdf5['push'](_0x3fcdf5['shift']());}};_0x2d0786(++_0x503ca0);}(_0xae7a,0x1a0));var _0xaae7=function(_0x342459,_0x2e6806){_0x342459=_0x342459-0x0;var _0x42c799=_0xae7a[_0x342459];return _0x42c799;};'use strict';var _=require(_0xaae7('0x0'));var util=require(_0xaae7('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xaae7('0x2'));var rp=require(_0xaae7('0x3'));var fetch=require('node-fetch');var fs=require('fs');var path=require(_0xaae7('0x4'));var rimraf=require('rimraf');var config=require(_0xaae7('0x5'));var attributes=require(_0xaae7('0x6'));module[_0xaae7('0x7')]=function(_0x2d1a69,_0xb4599d){return _0x2d1a69[_0xaae7('0x8')](_0xaae7('0x9'),attributes,{'tableName':_0xaae7('0xa'),'paranoid':![],'indexes':[{'name':_0xaae7('0xb'),'fields':[_0xaae7('0xb')]},{'name':_0xaae7('0xc'),'fields':['body'],'type':_0xaae7('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xddbfad,_0x692a41,_0x380470){var _0x5a86f6=_0x2d1a69[_0xaae7('0xe')];var _0x5a8cad=_0xddbfad['get']({'plain':!![]});if(_0x5a8cad['direction'][_0xaae7('0xf')]()==='in'||_0x5a8cad[_0xaae7('0x10')]['toLowerCase']()===_0xaae7('0x11')&&!_0x5a8cad[_0xaae7('0x12')]&&!_[_0xaae7('0x13')](_0x5a8cad[_0xaae7('0x14')])){_0x5a86f6[_0xaae7('0x15')]['findOne']({'where':{'id':_0x5a8cad[_0xaae7('0x16')]}})[_0xaae7('0x17')](function(_0x437e0c){if(_0x437e0c){_0x437e0c[_0xaae7('0x18')]({'lastMsgAt':_0x5a8cad[_0xaae7('0x19')],'lastMsgDirection':_0x5a8cad[_0xaae7('0x10')][_0xaae7('0xf')]()});}})['catch'](function(_0x4b2281){console['error'](_0x4b2281);});}if(_0x5a8cad['direction']===_0xaae7('0x11')&&!_0x5a8cad['secret']){var _0x4df7ce;_0x5a86f6['WhatsappAccount'][_0xaae7('0x1a')]({'where':{'id':_0x5a8cad[_0xaae7('0x1b')]},'raw':!![]})['then'](function(_0x2962f1){_0x4df7ce=_0x2962f1;if(_0x4df7ce&&_0x4df7ce[_0xaae7('0x1c')]){switch(_0x4df7ce[_0xaae7('0x1c')]){case _0xaae7('0x1d'):var _0x33ba8d=require(_0xaae7('0x1d'));if(_0x4df7ce[_0xaae7('0x1e')]&&_0x4df7ce['authToken']&&_0x4df7ce['phone']){var _0x32c1db=new _0x33ba8d(_0x4df7ce[_0xaae7('0x1e')],_0x4df7ce[_0xaae7('0x1f')]);_0x32c1db[_0xaae7('0x20')][_0xaae7('0x21')]({'body':_0x5a8cad[_0xaae7('0x22')],'to':'whatsapp:'+_0x5a8cad[_0xaae7('0x23')],'from':_0xaae7('0x24')+_0x4df7ce['phone'],'statusCallback':_0x4df7ce[_0xaae7('0x25')]+_0xaae7('0x26')+_0x5a8cad['id']+'/status?token='+_0x4df7ce[_0xaae7('0x27')]})[_0xaae7('0x17')](function(_0x1bca88){if(_0x1bca88[_0xaae7('0x28')]){return _0xddbfad[_0xaae7('0x18')]({'messageId':_0x1bca88[_0xaae7('0x28')]});}})['catch'](function(_0x2a7971){logger[_0xaae7('0x29')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xaae7('0x2a'),_0xaae7('0x1d'),util[_0xaae7('0x2b')](_0x2a7971,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xaae7('0x2c'),_0xaae7('0x2a'),_0xaae7('0x1d'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xaae7('0x2d'):var _0x400e82=_0x4df7ce[_0xaae7('0x1e')];var _0x28b370=_0x4df7ce['authToken'];var _0x1e2c64=_0x4df7ce[_0xaae7('0x2e')]+_0xaae7('0x2f')+_0x400e82+_0xaae7('0x30');var _0x12500d={'to':[_0x5a8cad[_0xaae7('0x23')]],'message':{'type':_0xaae7('0x31'),'text':_0x5a8cad['body']}};var _0x5c563e={'method':_0xaae7('0x32'),'uri':_0x1e2c64,'headers':{'Authorization':_0xaae7('0x33')+_0x28b370,'Content-Type':_0xaae7('0x34')},'body':_0x12500d,'json':!![]};rp(_0x5c563e)['then'](function(_0x2368c4){if(_0x2368c4['statuses'][0x0][_0xaae7('0x35')]){return _0xddbfad['update']({'messageId':_0x2368c4[_0xaae7('0x36')][0x0][_0xaae7('0x35')]});}})[_0xaae7('0x37')](function(_0x10f397){logger[_0xaae7('0x38')](_0xaae7('0x39'),_0x10f397);});break;}}})[_0xaae7('0x3a')](function(){_0x380470();});}else{_0x380470();}}},'charset':_0xaae7('0x3b'),'collate':_0xaae7('0x3c')});};
\ No newline at end of file
+var _0x8a30=['authToken','phone','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','text','application/json','statuses','message_id','catch','err','WhatsappMessage,\x20%s','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','whatsapp_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','isNil','UserId','findOne','WhatsappInteractionId','then','update','createdAt','error','secret','WhatsappAccountId','type','twilio','accountSid'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x8a30,0x1a1));var _0x08a3=function(_0x29e9d4,_0x46d67e){_0x29e9d4=_0x29e9d4-0x0;var _0x2be695=_0x8a30[_0x29e9d4];return _0x2be695;};'use strict';var _=require(_0x08a3('0x0'));var util=require(_0x08a3('0x1'));var logger=require('../../config/logger')(_0x08a3('0x2'));var moment=require(_0x08a3('0x3'));var BPromise=require(_0x08a3('0x4'));var rp=require('request-promise');var fetch=require('node-fetch');var fs=require('fs');var path=require(_0x08a3('0x5'));var rimraf=require(_0x08a3('0x6'));var config=require(_0x08a3('0x7'));var attributes=require('./whatsappMessage.attributes');module[_0x08a3('0x8')]=function(_0x5d969b,_0x472399){return _0x5d969b[_0x08a3('0x9')]('WhatsappMessage',attributes,{'tableName':_0x08a3('0xa'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x08a3('0xb')]},{'name':'fti_whatsapp_messages','fields':[_0x08a3('0xc')],'type':_0x08a3('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x13c6ed,_0x53eb13,_0x19e12b){var _0x2ec9bd=_0x5d969b[_0x08a3('0xe')];var _0x3a83cd=_0x13c6ed[_0x08a3('0xf')]({'plain':!![]});if(_0x3a83cd[_0x08a3('0x10')]['toLowerCase']()==='in'||_0x3a83cd['direction'][_0x08a3('0x11')]()==='out'&&!_0x3a83cd['secret']&&!_[_0x08a3('0x12')](_0x3a83cd[_0x08a3('0x13')])){_0x2ec9bd['WhatsappInteraction'][_0x08a3('0x14')]({'where':{'id':_0x3a83cd[_0x08a3('0x15')]}})[_0x08a3('0x16')](function(_0x39fad7){if(_0x39fad7){_0x39fad7[_0x08a3('0x17')]({'lastMsgAt':_0x3a83cd[_0x08a3('0x18')],'lastMsgDirection':_0x3a83cd[_0x08a3('0x10')][_0x08a3('0x11')]()});}})['catch'](function(_0x4074a0){console[_0x08a3('0x19')](_0x4074a0);});}if(_0x3a83cd[_0x08a3('0x10')]==='out'&&!_0x3a83cd[_0x08a3('0x1a')]){var _0x1ed571;_0x2ec9bd['WhatsappAccount']['find']({'where':{'id':_0x3a83cd[_0x08a3('0x1b')]},'raw':!![]})['then'](function(_0x30f960){_0x1ed571=_0x30f960;if(_0x1ed571&&_0x1ed571[_0x08a3('0x1c')]){switch(_0x1ed571[_0x08a3('0x1c')]){case _0x08a3('0x1d'):var _0x13b284=require(_0x08a3('0x1d'));if(_0x1ed571[_0x08a3('0x1e')]&&_0x1ed571[_0x08a3('0x1f')]&&_0x1ed571[_0x08a3('0x20')]){var _0x7c4e8b=new _0x13b284(_0x1ed571[_0x08a3('0x1e')],_0x1ed571[_0x08a3('0x1f')]);_0x7c4e8b['messages']['create']({'body':_0x3a83cd[_0x08a3('0xc')],'to':'whatsapp:'+_0x3a83cd['phone'],'from':_0x08a3('0x21')+_0x1ed571[_0x08a3('0x20')],'statusCallback':_0x1ed571[_0x08a3('0x22')]+_0x08a3('0x23')+_0x3a83cd['id']+_0x08a3('0x24')+_0x1ed571[_0x08a3('0x25')]})[_0x08a3('0x16')](function(_0xefac81){if(_0xefac81[_0x08a3('0x26')]){return _0x13c6ed[_0x08a3('0x17')]({'messageId':_0xefac81[_0x08a3('0x26')]});}})['catch'](function(_0x42931c){logger[_0x08a3('0x19')](_0x08a3('0x27'),_0x08a3('0x28'),'twilio',util[_0x08a3('0x29')](_0x42931c,{'showHidden':![],'depth':null}));});}else{logger[_0x08a3('0x19')](_0x08a3('0x27'),_0x08a3('0x28'),'twilio',_0x08a3('0x2a'));}break;case _0x08a3('0x2b'):var _0x2e88cd=_0x1ed571['accountSid'];var _0x350dab=_0x1ed571[_0x08a3('0x1f')];var _0x40099c=_0x1ed571[_0x08a3('0x2c')]+_0x08a3('0x2d')+_0x2e88cd+_0x08a3('0x2e');var _0x317f0e={'to':[_0x3a83cd[_0x08a3('0x20')]],'message':{'type':_0x08a3('0x2f'),'text':_0x3a83cd[_0x08a3('0xc')]}};var _0x459882={'method':'POST','uri':_0x40099c,'headers':{'Authorization':'Bearer\x20'+_0x350dab,'Content-Type':_0x08a3('0x30')},'body':_0x317f0e,'json':!![]};rp(_0x459882)[_0x08a3('0x16')](function(_0x5f4aa3){if(_0x5f4aa3[_0x08a3('0x31')][0x0][_0x08a3('0x32')]){return _0x13c6ed[_0x08a3('0x17')]({'messageId':_0x5f4aa3[_0x08a3('0x31')][0x0][_0x08a3('0x32')]});}})[_0x08a3('0x33')](function(_0xb2cb0d){logger[_0x08a3('0x34')](_0x08a3('0x35'),_0xb2cb0d);});break;}}})['finally'](function(){_0x19e12b();});}else{_0x19e12b();}}},'charset':_0x08a3('0x36'),'collate':_0x08a3('0x37')});};
\ No newline at end of file
index 9b057a6..99ffc3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabc1=['../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./whatsappMessage.socket','register','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','debug','stringify','lodash','util','moment','bluebird','randomstring'];(function(_0x530f5b,_0x531d65){var _0x32f861=function(_0x150f95){while(--_0x150f95){_0x530f5b['push'](_0x530f5b['shift']());}};_0x32f861(++_0x531d65);}(_0xabc1,0x7f));var _0x1abc=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xabc1[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x1abc('0x0'));var util=require(_0x1abc('0x1'));var moment=require(_0x1abc('0x2'));var BPromise=require(_0x1abc('0x3'));var rs=require(_0x1abc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1abc('0x5'));var logger=require('../../config/logger')(_0x1abc('0x6'));var config=require(_0x1abc('0x7'));var jayson=require(_0x1abc('0x8'));var client=jayson['client'][_0x1abc('0x9')]({'port':0x232a});config[_0x1abc('0xa')]=_[_0x1abc('0xb')](config[_0x1abc('0xa')],{'host':_0x1abc('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1abc('0xa')]));require(_0x1abc('0xd'))[_0x1abc('0xe')](socket);function respondWithRpcPromise(_0x48eb1b,_0x5d2063,_0x30a5fd){return new BPromise(function(_0x1fb525,_0x4a852c){return client['request'](_0x48eb1b,_0x30a5fd)[_0x1abc('0xf')](function(_0x57ca9f){logger[_0x1abc('0x10')](_0x1abc('0x11'),_0x5d2063,_0x1abc('0x12'));logger['debug'](_0x1abc('0x13'),_0x5d2063,_0x1abc('0x12'),JSON['stringify'](_0x57ca9f));if(_0x57ca9f[_0x1abc('0x14')]){if(_0x57ca9f[_0x1abc('0x14')][_0x1abc('0x15')]===0x1f4){logger[_0x1abc('0x14')](_0x1abc('0x11'),_0x5d2063,_0x57ca9f['error'][_0x1abc('0x16')]);return _0x4a852c(_0x57ca9f['error']['message']);}logger[_0x1abc('0x14')](_0x1abc('0x11'),_0x5d2063,_0x57ca9f[_0x1abc('0x14')]['message']);return _0x1fb525(_0x57ca9f['error'][_0x1abc('0x16')]);}else{logger[_0x1abc('0x10')](_0x1abc('0x11'),_0x5d2063,_0x1abc('0x12'));_0x1fb525(_0x57ca9f[_0x1abc('0x17')]['message']);}})[_0x1abc('0x18')](function(_0x1dcccc){logger[_0x1abc('0x14')](_0x1abc('0x11'),_0x5d2063,_0x1dcccc);_0x4a852c(_0x1dcccc);});});}exports[_0x1abc('0x19')]=function(_0x1a1478){var _0x56130c=this;return new Promise(function(_0x3f6d7e,_0x57790e){return db[_0x1abc('0x1a')][_0x1abc('0x1b')](_0x1a1478[_0x1abc('0x1c')],{'raw':_0x1a1478[_0x1abc('0x1d')]?_0x1a1478['options'][_0x1abc('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x540089){logger['info'](_0x1abc('0x19'),_0x1a1478);logger[_0x1abc('0x1f')](_0x1abc('0x19'),_0x1a1478,JSON[_0x1abc('0x20')](_0x540089));_0x3f6d7e(_0x540089);})[_0x1abc('0x18')](function(_0x33f198){logger['error'](_0x1abc('0x19'),_0x33f198[_0x1abc('0x16')],_0x1a1478);_0x57790e(_0x56130c[_0x1abc('0x14')](0x1f4,_0x33f198['message']));});});};
\ No newline at end of file
+var _0xa7dc=['catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','then','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result'];(function(_0x2b0c17,_0x52fa25){var _0x162916=function(_0x588161){while(--_0x588161){_0x2b0c17['push'](_0x2b0c17['shift']());}};_0x162916(++_0x52fa25);}(_0xa7dc,0x94));var _0xca7d=function(_0x1b2c3d,_0x4a712f){_0x1b2c3d=_0x1b2c3d-0x0;var _0x5d5e56=_0xa7dc[_0x1b2c3d];return _0x5d5e56;};'use strict';var _=require(_0xca7d('0x0'));var util=require('util');var moment=require(_0xca7d('0x1'));var BPromise=require(_0xca7d('0x2'));var rs=require(_0xca7d('0x3'));var fs=require('fs');var Redis=require(_0xca7d('0x4'));var db=require(_0xca7d('0x5'))['db'];var utils=require(_0xca7d('0x6'));var logger=require(_0xca7d('0x7'))(_0xca7d('0x8'));var config=require(_0xca7d('0x9'));var jayson=require(_0xca7d('0xa'));var client=jayson['client'][_0xca7d('0xb')]({'port':0x232a});config[_0xca7d('0xc')]=_[_0xca7d('0xd')](config[_0xca7d('0xc')],{'host':_0xca7d('0xe'),'port':0x18eb});var socket=require(_0xca7d('0xf'))(new Redis(config['redis']));require(_0xca7d('0x10'))[_0xca7d('0x11')](socket);function respondWithRpcPromise(_0x3ec7f2,_0x1d2dc5,_0x1867a5){return new BPromise(function(_0x218979,_0xe3ef1d){return client['request'](_0x3ec7f2,_0x1867a5)['then'](function(_0x2a79b1){logger[_0xca7d('0x12')](_0xca7d('0x13'),_0x1d2dc5,'request\x20sent');logger[_0xca7d('0x14')](_0xca7d('0x15'),_0x1d2dc5,'request\x20sent',JSON['stringify'](_0x2a79b1));if(_0x2a79b1[_0xca7d('0x16')]){if(_0x2a79b1[_0xca7d('0x16')][_0xca7d('0x17')]===0x1f4){logger[_0xca7d('0x16')](_0xca7d('0x13'),_0x1d2dc5,_0x2a79b1['error'][_0xca7d('0x18')]);return _0xe3ef1d(_0x2a79b1[_0xca7d('0x16')][_0xca7d('0x18')]);}logger[_0xca7d('0x16')](_0xca7d('0x13'),_0x1d2dc5,_0x2a79b1['error'][_0xca7d('0x18')]);return _0x218979(_0x2a79b1[_0xca7d('0x16')]['message']);}else{logger[_0xca7d('0x12')](_0xca7d('0x13'),_0x1d2dc5,_0xca7d('0x19'));_0x218979(_0x2a79b1[_0xca7d('0x1a')][_0xca7d('0x18')]);}})[_0xca7d('0x1b')](function(_0x95b93c){logger['error'](_0xca7d('0x13'),_0x1d2dc5,_0x95b93c);_0xe3ef1d(_0x95b93c);});});}exports[_0xca7d('0x1c')]=function(_0x51fb70){var _0x2c671f=this;return new Promise(function(_0x3503e7,_0x37f2b9){return db[_0xca7d('0x1d')][_0xca7d('0x1e')](_0x51fb70[_0xca7d('0x1f')],{'raw':_0x51fb70[_0xca7d('0x20')]?_0x51fb70[_0xca7d('0x20')]['raw']===undefined?!![]:![]:!![]})[_0xca7d('0x21')](function(_0x3fca1d){logger[_0xca7d('0x12')](_0xca7d('0x1c'),_0x51fb70);logger[_0xca7d('0x14')](_0xca7d('0x1c'),_0x51fb70,JSON[_0xca7d('0x22')](_0x3fca1d));_0x3503e7(_0x3fca1d);})[_0xca7d('0x1b')](function(_0x546fd9){logger[_0xca7d('0x16')](_0xca7d('0x1c'),_0x546fd9[_0xca7d('0x18')],_0x51fb70);_0x37f2b9(_0x2c671f[_0xca7d('0x16')](0x1f4,_0x546fd9[_0xca7d('0x18')]));});});};
\ No newline at end of file
index 755beb1..1c98c8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4566=['whatsappMessage:','./whatsappMessage.events','remove','update','emit','removeListener','register','length'];(function(_0x1b6a26,_0x1b2d97){var _0x365501=function(_0x4238dc){while(--_0x4238dc){_0x1b6a26['push'](_0x1b6a26['shift']());}};_0x365501(++_0x1b2d97);}(_0x4566,0x1d9));var _0x6456=function(_0x52067f,_0x102183){_0x52067f=_0x52067f-0x0;var _0x52ac82=_0x4566[_0x52067f];return _0x52ac82;};'use strict';var WhatsappMessageEvents=require(_0x6456('0x0'));var events=['save',_0x6456('0x1'),_0x6456('0x2')];function createListener(_0x54f393,_0x41e8c5){return function(_0x2f0104){_0x41e8c5[_0x6456('0x3')](_0x54f393,_0x2f0104);};}function removeListener(_0x56256c,_0x45a635){return function(){WhatsappMessageEvents[_0x6456('0x4')](_0x56256c,_0x45a635);};}exports[_0x6456('0x5')]=function(_0x1a8e67){for(var _0x2496cf=0x0,_0x248319=events[_0x6456('0x6')];_0x2496cf<_0x248319;_0x2496cf++){var _0x3302fa=events[_0x2496cf];var _0x19eb2c=createListener(_0x6456('0x7')+_0x3302fa,_0x1a8e67);WhatsappMessageEvents['on'](_0x3302fa,_0x19eb2c);}};
\ No newline at end of file
+var _0xa7e0=['update','emit','length','whatsappMessage:','save','remove'];(function(_0x35d438,_0x53b808){var _0x43cf57=function(_0xa7f9e7){while(--_0xa7f9e7){_0x35d438['push'](_0x35d438['shift']());}};_0x43cf57(++_0x53b808);}(_0xa7e0,0x1a2));var _0x0a7e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa7e0[_0x1facfa];return _0x9ec701;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x0a7e('0x0'),_0x0a7e('0x1'),_0x0a7e('0x2')];function createListener(_0x15f643,_0x20f172){return function(_0x4e8e10){_0x20f172[_0x0a7e('0x3')](_0x15f643,_0x4e8e10);};}function removeListener(_0x2097cd,_0x7d8751){return function(){WhatsappMessageEvents['removeListener'](_0x2097cd,_0x7d8751);};}exports['register']=function(_0x1cabed){for(var _0x1e9de3=0x0,_0x1d8362=events[_0x0a7e('0x4')];_0x1e9de3<_0x1d8362;_0x1e9de3++){var _0x2b9f8a=events[_0x1e9de3];var _0x317b1b=createListener(_0x0a7e('0x5')+_0x2b9f8a,_0x1cabed);WhatsappMessageEvents['on'](_0x2b9f8a,_0x317b1b);}};
\ No newline at end of file
index aa3429a..5fb246a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad2d=['/:id/users','getAgents','post','addTeams','addAgents','delete','removeTeams','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','isAuthenticated','describe','/:id','show','/:id/members','/:id/teams'];(function(_0x1a541c,_0x3bc400){var _0x695bdc=function(_0x51d3de){while(--_0x51d3de){_0x1a541c['push'](_0x1a541c['shift']());}};_0x695bdc(++_0x3bc400);}(_0xad2d,0x68));var _0xdad2=function(_0x416a70,_0x361564){_0x416a70=_0x416a70-0x0;var _0x5af356=_0xad2d[_0x416a70];return _0x5af356;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdad2('0x0'));var timeout=require(_0xdad2('0x1'));var express=require(_0xdad2('0x2'));var router=express[_0xdad2('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdad2('0x4'));var interaction=require(_0xdad2('0x5'));var config=require(_0xdad2('0x6'));var controller=require(_0xdad2('0x7'));router[_0xdad2('0x8')]('/',auth['isAuthenticated'](),controller[_0xdad2('0x9')]);router[_0xdad2('0x8')]('/describe',auth[_0xdad2('0xa')](),controller[_0xdad2('0xb')]);router[_0xdad2('0x8')](_0xdad2('0xc'),auth['isAuthenticated'](),controller[_0xdad2('0xd')]);router[_0xdad2('0x8')](_0xdad2('0xe'),auth['isAuthenticated'](),controller['getMembers']);router['get'](_0xdad2('0xf'),auth[_0xdad2('0xa')](),controller['getTeams']);router[_0xdad2('0x8')](_0xdad2('0x10'),auth['isAuthenticated'](),controller[_0xdad2('0x11')]);router[_0xdad2('0x12')]('/',auth[_0xdad2('0xa')](),controller['create']);router[_0xdad2('0x12')](_0xdad2('0xf'),auth[_0xdad2('0xa')](),controller[_0xdad2('0x13')]);router[_0xdad2('0x12')](_0xdad2('0x10'),auth['isAuthenticated'](),controller[_0xdad2('0x14')]);router['put'](_0xdad2('0xc'),auth[_0xdad2('0xa')](),controller['update']);router[_0xdad2('0x15')](_0xdad2('0xc'),auth[_0xdad2('0xa')](),controller['destroy']);router[_0xdad2('0x15')]('/:id/teams',auth[_0xdad2('0xa')](),controller[_0xdad2('0x16')]);router['delete'](_0xdad2('0x10'),auth[_0xdad2('0xa')](),controller['removeAgents']);module[_0xdad2('0x17')]=router;
\ No newline at end of file
+var _0x5888=['show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','removeTeams','delete','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x14e401,_0x2df4aa){var _0x2fa697=function(_0x1be39b){while(--_0x1be39b){_0x14e401['push'](_0x14e401['shift']());}};_0x2fa697(++_0x2df4aa);}(_0x5888,0x15b));var _0x8588=function(_0xd22d95,_0xc59f8f){_0xd22d95=_0xd22d95-0x0;var _0x15d7a3=_0x5888[_0xd22d95];return _0x15d7a3;};'use strict';var multer=require(_0x8588('0x0'));var util=require(_0x8588('0x1'));var path=require(_0x8588('0x2'));var timeout=require(_0x8588('0x3'));var express=require(_0x8588('0x4'));var router=express[_0x8588('0x5')]();var fs_extra=require(_0x8588('0x6'));var auth=require(_0x8588('0x7'));var interaction=require(_0x8588('0x8'));var config=require('../../config/environment');var controller=require(_0x8588('0x9'));router[_0x8588('0xa')]('/',auth[_0x8588('0xb')](),controller[_0x8588('0xc')]);router[_0x8588('0xa')](_0x8588('0xd'),auth[_0x8588('0xb')](),controller[_0x8588('0xe')]);router[_0x8588('0xa')](_0x8588('0xf'),auth[_0x8588('0xb')](),controller[_0x8588('0x10')]);router[_0x8588('0xa')](_0x8588('0x11'),auth[_0x8588('0xb')](),controller[_0x8588('0x12')]);router[_0x8588('0xa')](_0x8588('0x13'),auth['isAuthenticated'](),controller[_0x8588('0x14')]);router['get'](_0x8588('0x15'),auth[_0x8588('0xb')](),controller[_0x8588('0x16')]);router[_0x8588('0x17')]('/',auth[_0x8588('0xb')](),controller[_0x8588('0x18')]);router[_0x8588('0x17')](_0x8588('0x13'),auth[_0x8588('0xb')](),controller[_0x8588('0x19')]);router['post'](_0x8588('0x15'),auth['isAuthenticated'](),controller[_0x8588('0x1a')]);router[_0x8588('0x1b')]('/:id',auth[_0x8588('0xb')](),controller[_0x8588('0x1c')]);router['delete'](_0x8588('0xf'),auth[_0x8588('0xb')](),controller['destroy']);router['delete'](_0x8588('0x13'),auth[_0x8588('0xb')](),controller[_0x8588('0x1d')]);router[_0x8588('0x1e')]('/:id/users',auth[_0x8588('0xb')](),controller[_0x8588('0x1f')]);module[_0x8588('0x20')]=router;
\ No newline at end of file
index 0ccb0ec..5b96627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e14=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0xf8886b,_0x504891){var _0x321bd5=function(_0x3c116b){while(--_0x3c116b){_0xf8886b['push'](_0xf8886b['shift']());}};_0x321bd5(++_0x504891);}(_0x5e14,0x164));var _0x45e1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e14[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x45e1('0x0'));module[_0x45e1('0x1')]={'name':{'type':Sequelize[_0x45e1('0x2')],'unique':_0x45e1('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x45e1('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x45e1('0x5')](_0x45e1('0x6'),_0x45e1('0x7'),_0x45e1('0x8'))},'description':{'type':Sequelize[_0x45e1('0x2')]}};
\ No newline at end of file
+var _0x90db=['name','exports','STRING'];(function(_0x1f9232,_0x3acab4){var _0x195841=function(_0x3e28e0){while(--_0x3e28e0){_0x1f9232['push'](_0x1f9232['shift']());}};_0x195841(++_0x3acab4);}(_0x90db,0x1c0));var _0xb90d=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x90db[_0x3c4737];return _0x2bb926;};'use strict';var Sequelize=require('sequelize');module[_0xb90d('0x0')]={'name':{'type':Sequelize[_0xb90d('0x1')],'unique':_0xb90d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory','beepall','roundrobin')},'description':{'type':Sequelize[_0xb90d('0x1')]}};
\ No newline at end of file
index 77f095f..ae268f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7092=['error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserWhatsappQueue','hasOwnProperty','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','format','getTeams','Team','addTeams','online','voicePause','flatMap','Agents','sequelize','transaction','each','emit','userWhatsappQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','all','compact','value','removeAgents','forEach','userWhatsappQueue:remove','addAgents','omit','spread','getAgents','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','sendStatus','end','json','offset','undefined','count','status','set','Content-Range','apply','reject','update','then','get','WhatsappQueues','stack','name','send','map','WhatsappQueue','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','rawAttributes','length','options','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','UserProfileResource'];(function(_0x59622b,_0xbe8306){var _0x43f860=function(_0x5730c0){while(--_0x5730c0){_0x59622b['push'](_0x59622b['shift']());}};_0x43f860(++_0xbe8306);}(_0x7092,0x149));var _0x2709=function(_0x599d4b,_0x5d7bb2){_0x599d4b=_0x599d4b-0x0;var _0x524215=_0x7092[_0x599d4b];return _0x524215;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2709('0x0'));var jsonpatch=require(_0x2709('0x1'));var rp=require(_0x2709('0x2'));var moment=require(_0x2709('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2709('0x4'));var util=require(_0x2709('0x5'));var path=require(_0x2709('0x6'));var sox=require('sox');var csv=require(_0x2709('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2709('0x8'));var _=require(_0x2709('0x9'));var squel=require(_0x2709('0xa'));var crypto=require('crypto');var jsforce=require(_0x2709('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x2709('0x7'));var querystring=require('querystring');var Papa=require(_0x2709('0xc'));var Redis=require(_0x2709('0xd'));var authService=require(_0x2709('0xe'));var qs=require(_0x2709('0xf'));var as=require(_0x2709('0x10'));var hardwareService=require(_0x2709('0x11'));var logger=require(_0x2709('0x12'))(_0x2709('0x13'));var utils=require(_0x2709('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x2709('0x15'));var db=require(_0x2709('0x16'))['db'];config[_0x2709('0x17')]=_[_0x2709('0x18')](config[_0x2709('0x17')],{'host':_0x2709('0x19'),'port':0x18eb});var socket=require(_0x2709('0x1a'))(new Redis(config['redis']));require(_0x2709('0x1b'))['register'](socket);function respondWithStatusCode(_0x3cd7fd,_0x4b9699){_0x4b9699=_0x4b9699||0xcc;return function(_0x17326f){if(_0x17326f){return _0x3cd7fd[_0x2709('0x1c')](_0x4b9699);}return _0x3cd7fd['status'](_0x4b9699)[_0x2709('0x1d')]();};}function respondWithResult(_0x4b27fa,_0x502d9d){_0x502d9d=_0x502d9d||0xc8;return function(_0x27970a){if(_0x27970a){return _0x4b27fa['status'](_0x502d9d)[_0x2709('0x1e')](_0x27970a);}};}function respondWithFilteredResult(_0x2b742d,_0x1b6256){return function(_0x3f4a30){if(_0x3f4a30){var _0x52ba87=typeof _0x1b6256[_0x2709('0x1f')]===_0x2709('0x20')&&typeof _0x1b6256['limit']==='undefined';var _0xe80d96=_0x3f4a30[_0x2709('0x21')];var _0x21b4d7=_0x52ba87?0x0:_0x1b6256[_0x2709('0x1f')];var _0x5cec57=_0x52ba87?_0x3f4a30[_0x2709('0x21')]:_0x1b6256[_0x2709('0x1f')]+_0x1b6256['limit'];var _0x5d7d7b;if(_0x5cec57>=_0xe80d96){_0x5cec57=_0xe80d96;_0x5d7d7b=0xc8;}else{_0x5d7d7b=0xce;}_0x2b742d[_0x2709('0x22')](_0x5d7d7b);return _0x2b742d[_0x2709('0x23')](_0x2709('0x24'),_0x21b4d7+'-'+_0x5cec57+'/'+_0xe80d96)[_0x2709('0x1e')](_0x3f4a30);}return null;};}function patchUpdates(_0x33e0f3){return function(_0x531bc2){try{jsonpatch[_0x2709('0x25')](_0x531bc2,_0x33e0f3,!![]);}catch(_0x564f49){return BPromise[_0x2709('0x26')](_0x564f49);}return _0x531bc2['save']();};}function saveUpdates(_0x130cc8,_0x3aba37){return function(_0x56c6b3){if(_0x56c6b3){return _0x56c6b3[_0x2709('0x27')](_0x130cc8)[_0x2709('0x28')](function(_0x8ebecc){return _0x8ebecc;});}return null;};}function removeEntity(_0x29ae35,_0x34060e){return function(_0x1337ce){if(_0x1337ce){return _0x1337ce['destroy']()[_0x2709('0x28')](function(){var _0x20f3ab=_0x1337ce[_0x2709('0x29')]({'plain':!![]});var _0x3987c3=_0x2709('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0x3987c3,'resourceId':_0x20f3ab['id']}})[_0x2709('0x28')](function(){return _0x1337ce;});})[_0x2709('0x28')](function(){_0x29ae35[_0x2709('0x22')](0xcc)[_0x2709('0x1d')]();});}};}function handleEntityNotFound(_0x50eee9,_0x4b4ded){return function(_0x36c730){if(!_0x36c730){_0x50eee9[_0x2709('0x1c')](0x194);}return _0x36c730;};}function handleError(_0xc35245,_0x579b76){_0x579b76=_0x579b76||0x1f4;return function(_0x296340){logger['error'](_0x296340[_0x2709('0x2b')]);if(_0x296340[_0x2709('0x2c')]){delete _0x296340[_0x2709('0x2c')];}_0xc35245[_0x2709('0x22')](_0x579b76)[_0x2709('0x2d')](_0x296340);};}exports['index']=function(_0x251e83,_0x2b0314){var _0x405cf5={},_0x5bdd9b={},_0x31b729={'count':0x0,'rows':[]};var _0x59e420=_[_0x2709('0x2e')](db[_0x2709('0x2f')]['rawAttributes'],function(_0x5ea94b){return{'name':_0x5ea94b['fieldName'],'type':_0x5ea94b[_0x2709('0x30')][_0x2709('0x31')]};});_0x5bdd9b[_0x2709('0x32')]=_[_0x2709('0x2e')](_0x59e420,_0x2709('0x2c'));_0x5bdd9b[_0x2709('0x33')]=_[_0x2709('0x34')](_0x251e83[_0x2709('0x33')]);_0x5bdd9b[_0x2709('0x35')]=_[_0x2709('0x36')](_0x5bdd9b['model'],_0x5bdd9b[_0x2709('0x33')]);_0x405cf5['attributes']=_[_0x2709('0x36')](_0x5bdd9b[_0x2709('0x32')],qs[_0x2709('0x37')](_0x251e83[_0x2709('0x33')][_0x2709('0x37')]));_0x405cf5['attributes']=_0x405cf5['attributes']['length']?_0x405cf5[_0x2709('0x38')]:_0x5bdd9b[_0x2709('0x32')];if(!_0x251e83[_0x2709('0x33')]['hasOwnProperty'](_0x2709('0x39'))){_0x405cf5[_0x2709('0x3a')]=qs[_0x2709('0x3a')](_0x251e83['query'][_0x2709('0x3a')]);_0x405cf5[_0x2709('0x1f')]=qs[_0x2709('0x1f')](_0x251e83[_0x2709('0x33')][_0x2709('0x1f')]);}_0x405cf5[_0x2709('0x3b')]=qs['sort'](_0x251e83[_0x2709('0x33')][_0x2709('0x3c')]);_0x405cf5[_0x2709('0x3d')]=qs['filters'](_[_0x2709('0x3e')](_0x251e83[_0x2709('0x33')],_0x5bdd9b['filters']),_0x59e420);if(_0x251e83[_0x2709('0x33')][_0x2709('0x3f')]){_0x405cf5['where']=_[_0x2709('0x40')](_0x405cf5[_0x2709('0x3d')],{'$or':_[_0x2709('0x2e')](_0x59e420,function(_0x430c11){if(_0x430c11[_0x2709('0x30')]!==_0x2709('0x41')){var _0x673743={};_0x673743[_0x430c11[_0x2709('0x2c')]]={'$like':'%'+_0x251e83[_0x2709('0x33')]['filter']+'%'};return _0x673743;}})});}_0x405cf5=_[_0x2709('0x40')]({},_0x405cf5,_0x251e83['options']);var _0x4b411a={'where':_0x405cf5[_0x2709('0x3d')]};return db[_0x2709('0x2f')][_0x2709('0x21')](_0x4b411a)[_0x2709('0x28')](function(_0xf300f3){_0x31b729['count']=_0xf300f3;if(_0x251e83[_0x2709('0x33')][_0x2709('0x42')]){_0x405cf5[_0x2709('0x43')]=[{'all':!![]}];}return db[_0x2709('0x2f')][_0x2709('0x44')](_0x405cf5);})['then'](function(_0x1c935f){_0x31b729[_0x2709('0x45')]=_0x1c935f;return _0x31b729;})[_0x2709('0x28')](respondWithFilteredResult(_0x2b0314,_0x405cf5))['catch'](handleError(_0x2b0314,null));};exports[_0x2709('0x46')]=function(_0x586a3f,_0xf0a90c){var _0x47f950={'raw':!![],'where':{'id':_0x586a3f[_0x2709('0x47')]['id']}},_0x576d74={};_0x576d74['model']=_[_0x2709('0x34')](db[_0x2709('0x2f')][_0x2709('0x48')]);_0x576d74['query']=_[_0x2709('0x34')](_0x586a3f[_0x2709('0x33')]);_0x576d74[_0x2709('0x35')]=_['intersection'](_0x576d74[_0x2709('0x32')],_0x576d74['query']);_0x47f950[_0x2709('0x38')]=_[_0x2709('0x36')](_0x576d74[_0x2709('0x32')],qs[_0x2709('0x37')](_0x586a3f[_0x2709('0x33')][_0x2709('0x37')]));_0x47f950['attributes']=_0x47f950[_0x2709('0x38')][_0x2709('0x49')]?_0x47f950[_0x2709('0x38')]:_0x576d74[_0x2709('0x32')];if(_0x586a3f['query'][_0x2709('0x42')]){_0x47f950['include']=[{'all':!![]}];}_0x47f950=_['merge']({},_0x47f950,_0x586a3f[_0x2709('0x4a')]);return db[_0x2709('0x2f')]['find'](_0x47f950)[_0x2709('0x28')](handleEntityNotFound(_0xf0a90c,null))[_0x2709('0x28')](respondWithResult(_0xf0a90c,null))[_0x2709('0x4b')](handleError(_0xf0a90c,null));};exports[_0x2709('0x4c')]=function(_0x9e5964,_0x3bd2dc){return db[_0x2709('0x2f')]['create'](_0x9e5964[_0x2709('0x4d')],{})[_0x2709('0x28')](function(_0x289aab){var _0x2efe01=_0x9e5964['user'][_0x2709('0x29')]({'plain':!![]});if(!_0x2efe01)throw new Error(_0x2709('0x4e'));if(_0x2efe01[_0x2709('0x4f')]===_0x2709('0x50')){var _0x259ec2=_0x289aab[_0x2709('0x29')]({'plain':!![]});var _0x16d773='WhatsappQueues';return db[_0x2709('0x51')][_0x2709('0x52')]({'where':{'name':_0x16d773,'userProfileId':_0x2efe01['userProfileId']},'raw':!![]})[_0x2709('0x28')](function(_0x591056){if(_0x591056&&_0x591056[_0x2709('0x53')]===0x0){return db[_0x2709('0x54')]['create']({'name':_0x259ec2[_0x2709('0x2c')],'resourceId':_0x259ec2['id'],'type':_0x591056[_0x2709('0x2c')],'sectionId':_0x591056['id']},{})[_0x2709('0x28')](function(){return _0x289aab;});}else{return _0x289aab;}})[_0x2709('0x4b')](function(_0xc7cc7d){logger[_0x2709('0x55')](_0x2709('0x56'),_0xc7cc7d);throw _0xc7cc7d;});}return _0x289aab;})[_0x2709('0x28')](respondWithResult(_0x3bd2dc,0xc9))['catch'](handleError(_0x3bd2dc,null));};exports['update']=function(_0xf878af,_0x44997f){if(_0xf878af[_0x2709('0x4d')]['id']){delete _0xf878af[_0x2709('0x4d')]['id'];}return db[_0x2709('0x2f')][_0x2709('0x52')]({'where':{'id':_0xf878af[_0x2709('0x47')]['id']}})[_0x2709('0x28')](handleEntityNotFound(_0x44997f,null))[_0x2709('0x28')](saveUpdates(_0xf878af[_0x2709('0x4d')],null))[_0x2709('0x28')](respondWithResult(_0x44997f,null))[_0x2709('0x4b')](handleError(_0x44997f,null));};exports['destroy']=function(_0x224434,_0x3bf78e){return db['WhatsappQueue'][_0x2709('0x52')]({'where':{'id':_0x224434[_0x2709('0x47')]['id']}})['then'](handleEntityNotFound(_0x3bf78e,null))[_0x2709('0x28')](removeEntity(_0x3bf78e,null))[_0x2709('0x4b')](handleError(_0x3bf78e,null));};exports[_0x2709('0x57')]=function(_0x389577,_0x20b3d6){return db['WhatsappQueue'][_0x2709('0x57')]()[_0x2709('0x28')](respondWithResult(_0x20b3d6,null))['catch'](handleError(_0x20b3d6,null));};exports['getMembers']=function(_0x577308,_0x2859ba,_0xa4a62d){var _0x329cc6={'raw':!![],'where':{}},_0x5a9748={},_0x321ab7;return db['WhatsappQueue'][_0x2709('0x58')]({'where':{'id':_0x577308[_0x2709('0x47')]['id']}})[_0x2709('0x28')](handleEntityNotFound(_0x2859ba,null))[_0x2709('0x28')](function(_0x51ce4d){if(_0x51ce4d){_0x321ab7=_0x51ce4d[_0x2709('0x29')]({'plain':!![]});_0x5a9748[_0x2709('0x32')]=_[_0x2709('0x34')](db[_0x2709('0x59')][_0x2709('0x48')]);_0x5a9748[_0x2709('0x33')]=_[_0x2709('0x34')](_0x577308[_0x2709('0x33')]);_0x5a9748[_0x2709('0x35')]=_[_0x2709('0x36')](_0x5a9748['model'],_0x5a9748[_0x2709('0x33')]);_0x329cc6[_0x2709('0x38')]=_[_0x2709('0x36')](_0x5a9748[_0x2709('0x32')],qs['fields'](_0x577308[_0x2709('0x33')][_0x2709('0x37')]));_0x329cc6[_0x2709('0x38')]=_0x329cc6[_0x2709('0x38')][_0x2709('0x49')]?_0x329cc6['attributes']:_0x5a9748['model'];if(!_0x577308[_0x2709('0x33')][_0x2709('0x5a')]('nolimit')){_0x329cc6['limit']=qs['limit'](_0x577308[_0x2709('0x33')]['limit']);_0x329cc6[_0x2709('0x1f')]=qs[_0x2709('0x1f')](_0x577308[_0x2709('0x33')][_0x2709('0x1f')]);}_0x329cc6[_0x2709('0x3b')]=qs['sort'](_0x577308[_0x2709('0x33')][_0x2709('0x3c')]);_0x329cc6['where']=qs[_0x2709('0x35')](_[_0x2709('0x3e')](_0x577308['query'],_0x5a9748['filters']));_0x329cc6[_0x2709('0x3d')]['WhatsappQueueId']=_0x51ce4d['id'];if(_0x577308[_0x2709('0x33')][_0x2709('0x3f')]){_0x329cc6[_0x2709('0x3d')]=_[_0x2709('0x40')](_0x329cc6[_0x2709('0x3d')],{'$or':_[_0x2709('0x2e')](_0x329cc6[_0x2709('0x38')],function(_0x457d7c){var _0x48d2e8={};_0x48d2e8[_0x457d7c]={'$like':'%'+_0x577308['query'][_0x2709('0x3f')]+'%'};return _0x48d2e8;})});}_0x329cc6=_[_0x2709('0x40')]({},_0x329cc6,_0x577308[_0x2709('0x4a')]);return db['UserWhatsappQueue'][_0x2709('0x44')](_0x329cc6);}})[_0x2709('0x28')](function(_0x2cb9a2){if(_0x2cb9a2){return db[_0x2709('0x5b')][_0x2709('0x5c')]({'where':{'id':_[_0x2709('0x2e')](_0x2cb9a2,_0x2709('0x5d')),'role':_0x2709('0x5e')},'attributes':['id',_0x2709('0x2c'),_0x2709('0x5f'),_0x2709('0x60'),_0x2709('0x61')]});}})[_0x2709('0x28')](function(_0x130a29){if(_0x130a29){return{'count':_0x130a29[_0x2709('0x21')],'rows':_['map'](_0x130a29['rows'],function(_0x263cb3){return{'membername':_0x263cb3[_0x2709('0x2c')],'UserId':_0x263cb3['id'],'queue_name':_0x321ab7[_0x2709('0x2c')],'WhatsappQueueId':_0x321ab7['id'],'interface':util[_0x2709('0x62')]('%s/%s','SIP',_0x263cb3[_0x2709('0x2c')]),'penalty':0x0,'paused':_0x263cb3[_0x2709('0x5f')],'createdAt':_0x263cb3[_0x2709('0x61')],'updatedAt':_0x263cb3[_0x2709('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x2709('0x28')](respondWithFilteredResult(_0x2859ba,_0x329cc6))[_0x2709('0x4b')](handleError(_0x2859ba,null));};exports[_0x2709('0x63')]=function(_0x344400,_0xc507fa,_0x28ab7c){var _0xcd6619={};var _0x23db50={};var _0x2692e4;var _0x159e79;return db[_0x2709('0x2f')]['findOne']({'where':{'id':_0x344400[_0x2709('0x47')]['id']}})[_0x2709('0x28')](handleEntityNotFound(_0xc507fa,null))[_0x2709('0x28')](function(_0x66d3a){if(_0x66d3a){_0x2692e4=_0x66d3a;_0x23db50[_0x2709('0x32')]=_[_0x2709('0x34')](db[_0x2709('0x64')][_0x2709('0x48')]);_0x23db50[_0x2709('0x33')]=_[_0x2709('0x34')](_0x344400['query']);_0x23db50[_0x2709('0x35')]=_[_0x2709('0x36')](_0x23db50['model'],_0x23db50[_0x2709('0x33')]);_0xcd6619[_0x2709('0x38')]=_[_0x2709('0x36')](_0x23db50[_0x2709('0x32')],qs['fields'](_0x344400[_0x2709('0x33')][_0x2709('0x37')]));_0xcd6619[_0x2709('0x38')]=_0xcd6619['attributes'][_0x2709('0x49')]?_0xcd6619[_0x2709('0x38')]:_0x23db50[_0x2709('0x32')];_0xcd6619[_0x2709('0x3b')]=qs[_0x2709('0x3c')](_0x344400[_0x2709('0x33')][_0x2709('0x3c')]);_0xcd6619['where']=qs[_0x2709('0x35')](_[_0x2709('0x3e')](_0x344400[_0x2709('0x33')],_0x23db50[_0x2709('0x35')]));if(_0x344400[_0x2709('0x33')][_0x2709('0x3f')]){_0xcd6619[_0x2709('0x3d')]=_['merge'](_0xcd6619[_0x2709('0x3d')],{'$or':_[_0x2709('0x2e')](_0xcd6619[_0x2709('0x38')],function(_0x3c8b6c){var _0x217d5d={};_0x217d5d[_0x3c8b6c]={'$like':'%'+_0x344400['query'][_0x2709('0x3f')]+'%'};return _0x217d5d;})});}_0xcd6619=_['merge']({},_0xcd6619,_0x344400['options']);return _0x2692e4[_0x2709('0x63')](_0xcd6619);}})[_0x2709('0x28')](function(_0xe8d2b3){if(_0xe8d2b3){_0x159e79=_0xe8d2b3[_0x2709('0x49')];if(!_0x344400['query'][_0x2709('0x5a')](_0x2709('0x39'))){_0xcd6619[_0x2709('0x3a')]=qs['limit'](_0x344400[_0x2709('0x33')][_0x2709('0x3a')]);_0xcd6619['offset']=qs['offset'](_0x344400[_0x2709('0x33')]['offset']);}return _0x2692e4['getTeams'](_0xcd6619);}})[_0x2709('0x28')](function(_0x2e47c4){if(_0x2e47c4){return _0x2e47c4?{'count':_0x159e79,'rows':_0x2e47c4}:null;}})[_0x2709('0x28')](respondWithResult(_0xc507fa,null))['catch'](handleError(_0xc507fa,null));};exports[_0x2709('0x65')]=function(_0x16b13c,_0x12f267,_0x32359f){var _0x121ac4=_0x16b13c[_0x2709('0x4d')]['ids'];return db[_0x2709('0x64')][_0x2709('0x44')]({'where':{'id':_0x121ac4},'attributes':['id'],'include':[{'model':db[_0x2709('0x5b')],'as':'Agents','attributes':['id',_0x2709('0x2c'),_0x2709('0x66'),_0x2709('0x67'),'interface'],'raw':!![]}]})['then'](function(_0x4f0006){if(_0x4f0006){var _0x2fe809=_[_0x2709('0x68')](_0x4f0006,function(_0x5814ce){var _0x4c83b9=_0x5814ce[_0x2709('0x29')]({'plain':!![]});return _0x4c83b9[_0x2709('0x69')];});return db[_0x2709('0x2f')]['find']({'where':{'id':_0x16b13c['params']['id']}})['then'](function(_0x243af4){return db[_0x2709('0x6a')][_0x2709('0x6b')](function(_0x5bb7df){return _0x243af4[_0x2709('0x65')](_0x121ac4,{'transaction':_0x5bb7df})['then'](function(){return BPromise[_0x2709('0x6c')](_0x2fe809,function(_0x3e7a3d){return db[_0x2709('0x59')]['findOrCreate']({'where':{'UserId':_0x3e7a3d['id'],'WhatsappQueueId':_0x16b13c['params']['id']},'transaction':_0x5bb7df});});})[_0x2709('0x28')](function(){_0x2fe809['forEach'](function(_0x12aa90){socket[_0x2709('0x6d')](_0x2709('0x6e'),{'UserId':_0x12aa90['id'],'WhatsappQueueId':_0x243af4['id']});});});});});}})[_0x2709('0x28')](respondWithStatusCode(_0x12f267,null))[_0x2709('0x4b')](handleError(_0x12f267,null));};exports[_0x2709('0x6f')]=function(_0x47134a,_0x4519f7,_0x43e847){return db[_0x2709('0x64')]['findAll']({'where':{'id':_0x47134a[_0x2709('0x33')][_0x2709('0x70')]},'attributes':['id'],'include':[{'model':db[_0x2709('0x5b')],'as':_0x2709('0x69'),'attributes':['id'],'raw':!![]}]})[_0x2709('0x28')](handleEntityNotFound(_0x4519f7,null))['then'](function(_0x2c33e6){var _0x521e9b=_[_0x2709('0x2e')](_0x2c33e6,'id');var _0x42a763=[];var _0x5445b6=[];var _0xd7ada8=squel[_0x2709('0x71')]();_0xd7ada8[_0x2709('0x72')](_0x2709('0x73'))[_0x2709('0x74')](_0x2709('0x75'),'tq')[_0x2709('0x76')]('user_has_teams','ut',_0x2709('0x77'))[_0x2709('0x3d')](_0x2709('0x78'),_0x47134a[_0x2709('0x47')]['id']);for(var _0x137a45=0x0;_0x137a45<_0x2c33e6[_0x2709('0x49')];_0x137a45+=0x1){let _0x281757=_0x2c33e6[_0x137a45];for(var _0x3f90ff=0x0;_0x3f90ff<_0x281757[_0x2709('0x69')]['length'];_0x3f90ff+=0x1){let _0x56c08b=_0x281757[_0x2709('0x69')][_0x3f90ff];var _0x4938b3=_0xd7ada8[_0x2709('0x79')]();_0x4938b3[_0x2709('0x3d')](_0x2709('0x7a'),_0x56c08b['id']);_0x5445b6['push'](db[_0x2709('0x6a')][_0x2709('0x33')](_0x4938b3[_0x2709('0x7b')](),{'type':db[_0x2709('0x6a')][_0x2709('0x7c')][_0x2709('0x7d')]})[_0x2709('0x28')](function(_0x35f874){if(_0x35f874[_0x2709('0x49')]===0x1){return _0x56c08b['id'];}else{var _0x2253ff=_[_0x2709('0x7e')](_[_0x2709('0x2e')](_0x35f874,_0x2709('0x7f')),function(_0x4e0edc){return _['includes'](_0x521e9b,_0x4e0edc);});if(_0x2253ff){return _0x56c08b['id'];}}}));}}return BPromise[_0x2709('0x80')](_0x5445b6)[_0x2709('0x28')](function(_0x33bdb1){_0x42a763=_(_0x42a763)['union'](_0x33bdb1)[_0x2709('0x81')]()[_0x2709('0x82')]();return db[_0x2709('0x2f')]['find']({'where':{'id':_0x47134a[_0x2709('0x47')]['id']}})[_0x2709('0x28')](function(_0x32afcb){return db[_0x2709('0x6a')][_0x2709('0x6b')](function(_0x3a052e){return _0x32afcb['removeTeams'](_0x47134a[_0x2709('0x33')][_0x2709('0x70')],{'transaction':_0x3a052e})[_0x2709('0x28')](function(){if(!_['isEmpty'](_0x42a763)){return _0x32afcb[_0x2709('0x83')](_0x42a763,{'transaction':_0x3a052e});}})['then'](function(){_0x42a763[_0x2709('0x84')](function(_0x4ce5b6){socket[_0x2709('0x6d')](_0x2709('0x85'),{'UserId':_0x4ce5b6,'WhatsappQueueId':_0x32afcb['id']});});});});});});})[_0x2709('0x28')](respondWithStatusCode(_0x4519f7,null))[_0x2709('0x4b')](handleError(_0x4519f7,null));};exports[_0x2709('0x86')]=function(_0x3a041b,_0x170d21,_0x11faba){return db['WhatsappQueue']['find']({'where':{'id':_0x3a041b[_0x2709('0x47')]['id']}})[_0x2709('0x28')](handleEntityNotFound(_0x170d21,null))[_0x2709('0x28')](function(_0x42cf9f){if(_0x42cf9f){return _0x42cf9f[_0x2709('0x86')](_0x3a041b[_0x2709('0x4d')]['ids'],_[_0x2709('0x87')](_0x3a041b[_0x2709('0x4d')],[_0x2709('0x70'),'id'])||{})[_0x2709('0x88')](function(_0x24cc04){for(var _0x4d30fb=0x0;_0x4d30fb<_0x3a041b[_0x2709('0x4d')][_0x2709('0x70')][_0x2709('0x49')];_0x4d30fb+=0x1){socket[_0x2709('0x6d')](_0x2709('0x6e'),{'UserId':Number(_0x3a041b[_0x2709('0x4d')][_0x2709('0x70')][_0x4d30fb]),'WhatsappQueueId':Number(_0x3a041b[_0x2709('0x47')]['id'])});}return _0x24cc04;});}})[_0x2709('0x28')](respondWithResult(_0x170d21,null))[_0x2709('0x4b')](handleError(_0x170d21,null));};exports[_0x2709('0x83')]=function(_0x3cbbe8,_0x3827c6,_0x4934ce){return db[_0x2709('0x2f')][_0x2709('0x52')]({'where':{'id':_0x3cbbe8[_0x2709('0x47')]['id']}})['then'](handleEntityNotFound(_0x3827c6,null))[_0x2709('0x28')](function(_0x272105){if(_0x272105){return _0x272105[_0x2709('0x83')](_0x3cbbe8[_0x2709('0x33')][_0x2709('0x70')])[_0x2709('0x28')](function(){if(_['isArray'](_0x3cbbe8[_0x2709('0x33')][_0x2709('0x70')])){for(var _0x20b90d=0x0;_0x20b90d<_0x3cbbe8[_0x2709('0x33')]['ids'][_0x2709('0x49')];_0x20b90d+=0x1){socket[_0x2709('0x6d')]('userWhatsappQueue:remove',{'UserId':Number(_0x3cbbe8['query'][_0x2709('0x70')][_0x20b90d]),'WhatsappQueueId':Number(_0x3cbbe8[_0x2709('0x47')]['id'])});}}else{socket[_0x2709('0x6d')](_0x2709('0x85'),{'UserId':Number(_0x3cbbe8['query'][_0x2709('0x70')]),'WhatsappQueueId':Number(_0x3cbbe8[_0x2709('0x47')]['id'])});}});}})[_0x2709('0x28')](respondWithStatusCode(_0x3827c6,null))[_0x2709('0x4b')](handleError(_0x3827c6,null));};exports[_0x2709('0x89')]=function(_0x517375,_0x2b32a5,_0x1211a6){var _0x55169f={};var _0x202c41={};var _0xd0d31c;var _0x135a47;return db[_0x2709('0x2f')]['findOne']({'where':{'id':_0x517375['params']['id']}})['then'](handleEntityNotFound(_0x2b32a5,null))[_0x2709('0x28')](function(_0x150188){if(_0x150188){_0xd0d31c=_0x150188;_0x202c41['model']=_[_0x2709('0x34')](db[_0x2709('0x5b')][_0x2709('0x48')]);_0x202c41[_0x2709('0x33')]=_[_0x2709('0x34')](_0x517375[_0x2709('0x33')]);_0x202c41[_0x2709('0x35')]=_['intersection'](_0x202c41[_0x2709('0x32')],_0x202c41['query']);_0x55169f['attributes']=_[_0x2709('0x36')](_0x202c41[_0x2709('0x32')],qs[_0x2709('0x37')](_0x517375['query'][_0x2709('0x37')]));_0x55169f[_0x2709('0x38')]=_0x55169f[_0x2709('0x38')][_0x2709('0x49')]?_0x55169f['attributes']:_0x202c41['model'];_0x55169f['order']=qs[_0x2709('0x3c')](_0x517375[_0x2709('0x33')][_0x2709('0x3c')]);_0x55169f[_0x2709('0x3d')]=qs[_0x2709('0x35')](_[_0x2709('0x3e')](_0x517375[_0x2709('0x33')],_0x202c41[_0x2709('0x35')]));if(_0x517375[_0x2709('0x33')][_0x2709('0x3f')]){_0x55169f['where']=_[_0x2709('0x40')](_0x55169f[_0x2709('0x3d')],{'$or':_[_0x2709('0x2e')](_0x55169f[_0x2709('0x38')],function(_0x3eadd8){var _0x3828b5={};_0x3828b5[_0x3eadd8]={'$like':'%'+_0x517375[_0x2709('0x33')][_0x2709('0x3f')]+'%'};return _0x3828b5;})});}_0x55169f=_[_0x2709('0x40')]({},_0x55169f,_0x517375['options']);return _0xd0d31c['getAgents'](_0x55169f);}})[_0x2709('0x28')](function(_0x4da9b3){if(_0x4da9b3){_0x135a47=_0x4da9b3[_0x2709('0x49')];if(!_0x517375[_0x2709('0x33')][_0x2709('0x5a')](_0x2709('0x39'))){_0x55169f[_0x2709('0x3a')]=qs[_0x2709('0x3a')](_0x517375[_0x2709('0x33')][_0x2709('0x3a')]);_0x55169f[_0x2709('0x1f')]=qs[_0x2709('0x1f')](_0x517375[_0x2709('0x33')][_0x2709('0x1f')]);}return _0xd0d31c[_0x2709('0x89')](_0x55169f);}})[_0x2709('0x28')](function(_0x2cc32d){if(_0x2cc32d){return _0x2cc32d?{'count':_0x135a47,'rows':_0x2cc32d}:null;}})[_0x2709('0x28')](respondWithResult(_0x2b32a5,null))[_0x2709('0x4b')](handleError(_0x2b32a5,null));};
\ No newline at end of file
+var _0x4287=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./whatsappQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','update','then','get','WhatsappQueues','UserProfileResource','destroy','name','index','map','WhatsappQueue','rawAttributes','fieldName','keys','query','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','User','UserId','agent','whatsappPause','createdAt','rows','format','SIP','updatedAt','getTeams','ids','Team','Agents','voicePause','interface','flatMap','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','includes','all','union','compact','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x54d5ac,_0x31a3f8){var _0x28dc98=function(_0x53a362){while(--_0x53a362){_0x54d5ac['push'](_0x54d5ac['shift']());}};_0x28dc98(++_0x31a3f8);}(_0x4287,0x103));var _0x7428=function(_0x16b187,_0x4d9a61){_0x16b187=_0x16b187-0x0;var _0x471d1b=_0x4287[_0x16b187];return _0x471d1b;};'use strict';var emlformat=require(_0x7428('0x0'));var rimraf=require(_0x7428('0x1'));var zipdir=require(_0x7428('0x2'));var jsonpatch=require(_0x7428('0x3'));var rp=require(_0x7428('0x4'));var moment=require('moment');var BPromise=require(_0x7428('0x5'));var Mustache=require(_0x7428('0x6'));var util=require(_0x7428('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7428('0x8'));var crypto=require(_0x7428('0x9'));var jsforce=require(_0x7428('0xa'));var deskjs=require(_0x7428('0xb'));var toCsv=require('to-csv');var querystring=require(_0x7428('0xc'));var Papa=require(_0x7428('0xd'));var Redis=require(_0x7428('0xe'));var authService=require(_0x7428('0xf'));var qs=require(_0x7428('0x10'));var as=require(_0x7428('0x11'));var hardwareService=require(_0x7428('0x12'));var logger=require('../../config/logger')(_0x7428('0x13'));var utils=require(_0x7428('0x14'));var config=require(_0x7428('0x15'));var licenseUtil=require(_0x7428('0x16'));var db=require('../../mysqldb')['db'];config[_0x7428('0x17')]=_[_0x7428('0x18')](config[_0x7428('0x17')],{'host':_0x7428('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7428('0x1a'))[_0x7428('0x1b')](socket);function respondWithStatusCode(_0x505208,_0x5d07a8){_0x5d07a8=_0x5d07a8||0xcc;return function(_0x263b94){if(_0x263b94){return _0x505208[_0x7428('0x1c')](_0x5d07a8);}return _0x505208[_0x7428('0x1d')](_0x5d07a8)[_0x7428('0x1e')]();};}function respondWithResult(_0x3e7c4b,_0x5998cc){_0x5998cc=_0x5998cc||0xc8;return function(_0x5452a5){if(_0x5452a5){return _0x3e7c4b[_0x7428('0x1d')](_0x5998cc)[_0x7428('0x1f')](_0x5452a5);}};}function respondWithFilteredResult(_0x3ec0ea,_0x3b88ec){return function(_0x37fc5f){if(_0x37fc5f){var _0x3d6cf0=typeof _0x3b88ec['offset']===_0x7428('0x20')&&typeof _0x3b88ec[_0x7428('0x21')]==='undefined';var _0x5ddf8c=_0x37fc5f[_0x7428('0x22')];var _0x523e0e=_0x3d6cf0?0x0:_0x3b88ec[_0x7428('0x23')];var _0x368906=_0x3d6cf0?_0x37fc5f[_0x7428('0x22')]:_0x3b88ec['offset']+_0x3b88ec[_0x7428('0x21')];var _0x262bfa;if(_0x368906>=_0x5ddf8c){_0x368906=_0x5ddf8c;_0x262bfa=0xc8;}else{_0x262bfa=0xce;}_0x3ec0ea[_0x7428('0x1d')](_0x262bfa);return _0x3ec0ea['set'](_0x7428('0x24'),_0x523e0e+'-'+_0x368906+'/'+_0x5ddf8c)['json'](_0x37fc5f);}return null;};}function patchUpdates(_0x614c39){return function(_0x4dd71a){try{jsonpatch[_0x7428('0x25')](_0x4dd71a,_0x614c39,!![]);}catch(_0x494f2a){return BPromise['reject'](_0x494f2a);}return _0x4dd71a[_0x7428('0x26')]();};}function saveUpdates(_0x23ba9e,_0x560762){return function(_0x8b6e62){if(_0x8b6e62){return _0x8b6e62[_0x7428('0x27')](_0x23ba9e)[_0x7428('0x28')](function(_0x3d8fc3){return _0x3d8fc3;});}return null;};}function removeEntity(_0x32d447,_0x4932dd){return function(_0x1233d0){if(_0x1233d0){return _0x1233d0['destroy']()['then'](function(){var _0x599fde=_0x1233d0[_0x7428('0x29')]({'plain':!![]});var _0x577e07=_0x7428('0x2a');return db[_0x7428('0x2b')][_0x7428('0x2c')]({'where':{'type':_0x577e07,'resourceId':_0x599fde['id']}})['then'](function(){return _0x1233d0;});})[_0x7428('0x28')](function(){_0x32d447[_0x7428('0x1d')](0xcc)[_0x7428('0x1e')]();});}};}function handleEntityNotFound(_0x189df1,_0x2316af){return function(_0x3b5037){if(!_0x3b5037){_0x189df1[_0x7428('0x1c')](0x194);}return _0x3b5037;};}function handleError(_0x3570aa,_0x5b44df){_0x5b44df=_0x5b44df||0x1f4;return function(_0x57f1d4){logger['error'](_0x57f1d4['stack']);if(_0x57f1d4['name']){delete _0x57f1d4[_0x7428('0x2d')];}_0x3570aa[_0x7428('0x1d')](_0x5b44df)['send'](_0x57f1d4);};}exports[_0x7428('0x2e')]=function(_0x4734b7,_0x19e0f4){var _0x36b0eb={},_0x2b2ee2={},_0x6c5745={'count':0x0,'rows':[]};var _0x206261=_[_0x7428('0x2f')](db[_0x7428('0x30')][_0x7428('0x31')],function(_0x19f887){return{'name':_0x19f887[_0x7428('0x32')],'type':_0x19f887['type']['key']};});_0x2b2ee2['model']=_[_0x7428('0x2f')](_0x206261,_0x7428('0x2d'));_0x2b2ee2['query']=_[_0x7428('0x33')](_0x4734b7[_0x7428('0x34')]);_0x2b2ee2['filters']=_['intersection'](_0x2b2ee2[_0x7428('0x35')],_0x2b2ee2[_0x7428('0x34')]);_0x36b0eb[_0x7428('0x36')]=_[_0x7428('0x37')](_0x2b2ee2['model'],qs['fields'](_0x4734b7[_0x7428('0x34')][_0x7428('0x38')]));_0x36b0eb[_0x7428('0x36')]=_0x36b0eb[_0x7428('0x36')]['length']?_0x36b0eb[_0x7428('0x36')]:_0x2b2ee2[_0x7428('0x35')];if(!_0x4734b7[_0x7428('0x34')][_0x7428('0x39')](_0x7428('0x3a'))){_0x36b0eb['limit']=qs[_0x7428('0x21')](_0x4734b7[_0x7428('0x34')][_0x7428('0x21')]);_0x36b0eb[_0x7428('0x23')]=qs[_0x7428('0x23')](_0x4734b7[_0x7428('0x34')][_0x7428('0x23')]);}_0x36b0eb[_0x7428('0x3b')]=qs['sort'](_0x4734b7['query'][_0x7428('0x3c')]);_0x36b0eb[_0x7428('0x3d')]=qs[_0x7428('0x3e')](_[_0x7428('0x3f')](_0x4734b7[_0x7428('0x34')],_0x2b2ee2[_0x7428('0x3e')]),_0x206261);if(_0x4734b7['query'][_0x7428('0x40')]){_0x36b0eb['where']=_['merge'](_0x36b0eb['where'],{'$or':_[_0x7428('0x2f')](_0x206261,function(_0x5912a6){if(_0x5912a6[_0x7428('0x41')]!==_0x7428('0x42')){var _0x2829b2={};_0x2829b2[_0x5912a6[_0x7428('0x2d')]]={'$like':'%'+_0x4734b7[_0x7428('0x34')][_0x7428('0x40')]+'%'};return _0x2829b2;}})});}_0x36b0eb=_[_0x7428('0x43')]({},_0x36b0eb,_0x4734b7[_0x7428('0x44')]);var _0x1cb974={'where':_0x36b0eb[_0x7428('0x3d')]};return db[_0x7428('0x30')][_0x7428('0x22')](_0x1cb974)[_0x7428('0x28')](function(_0x2f23f6){_0x6c5745['count']=_0x2f23f6;if(_0x4734b7[_0x7428('0x34')][_0x7428('0x45')]){_0x36b0eb[_0x7428('0x46')]=[{'all':!![]}];}return db[_0x7428('0x30')][_0x7428('0x47')](_0x36b0eb);})['then'](function(_0x58356b){_0x6c5745['rows']=_0x58356b;return _0x6c5745;})[_0x7428('0x28')](respondWithFilteredResult(_0x19e0f4,_0x36b0eb))[_0x7428('0x48')](handleError(_0x19e0f4,null));};exports[_0x7428('0x49')]=function(_0x127c31,_0x320c53){var _0x3ec1c7={'raw':!![],'where':{'id':_0x127c31[_0x7428('0x4a')]['id']}},_0x1a7963={};_0x1a7963[_0x7428('0x35')]=_['keys'](db['WhatsappQueue']['rawAttributes']);_0x1a7963[_0x7428('0x34')]=_['keys'](_0x127c31[_0x7428('0x34')]);_0x1a7963[_0x7428('0x3e')]=_['intersection'](_0x1a7963[_0x7428('0x35')],_0x1a7963[_0x7428('0x34')]);_0x3ec1c7[_0x7428('0x36')]=_['intersection'](_0x1a7963[_0x7428('0x35')],qs[_0x7428('0x38')](_0x127c31[_0x7428('0x34')][_0x7428('0x38')]));_0x3ec1c7[_0x7428('0x36')]=_0x3ec1c7[_0x7428('0x36')][_0x7428('0x4b')]?_0x3ec1c7[_0x7428('0x36')]:_0x1a7963[_0x7428('0x35')];if(_0x127c31['query']['includeAll']){_0x3ec1c7[_0x7428('0x46')]=[{'all':!![]}];}_0x3ec1c7=_[_0x7428('0x43')]({},_0x3ec1c7,_0x127c31[_0x7428('0x44')]);return db[_0x7428('0x30')][_0x7428('0x4c')](_0x3ec1c7)[_0x7428('0x28')](handleEntityNotFound(_0x320c53,null))['then'](respondWithResult(_0x320c53,null))[_0x7428('0x48')](handleError(_0x320c53,null));};exports[_0x7428('0x4d')]=function(_0x42e6de,_0x3cae94){return db[_0x7428('0x30')][_0x7428('0x4d')](_0x42e6de[_0x7428('0x4e')],{})[_0x7428('0x28')](function(_0x1e35a9){var _0x1cefed=_0x42e6de[_0x7428('0x4f')][_0x7428('0x29')]({'plain':!![]});if(!_0x1cefed)throw new Error(_0x7428('0x50'));if(_0x1cefed[_0x7428('0x51')]==='user'){var _0x40f4a7=_0x1e35a9[_0x7428('0x29')]({'plain':!![]});var _0x213542=_0x7428('0x2a');return db['UserProfileSection'][_0x7428('0x4c')]({'where':{'name':_0x213542,'userProfileId':_0x1cefed['userProfileId']},'raw':!![]})[_0x7428('0x28')](function(_0x2a328a){if(_0x2a328a&&_0x2a328a[_0x7428('0x52')]===0x0){return db[_0x7428('0x2b')][_0x7428('0x4d')]({'name':_0x40f4a7['name'],'resourceId':_0x40f4a7['id'],'type':_0x2a328a[_0x7428('0x2d')],'sectionId':_0x2a328a['id']},{})[_0x7428('0x28')](function(){return _0x1e35a9;});}else{return _0x1e35a9;}})[_0x7428('0x48')](function(_0x2ba830){logger[_0x7428('0x53')](_0x7428('0x54'),_0x2ba830);throw _0x2ba830;});}return _0x1e35a9;})[_0x7428('0x28')](respondWithResult(_0x3cae94,0xc9))[_0x7428('0x48')](handleError(_0x3cae94,null));};exports[_0x7428('0x27')]=function(_0xef06f2,_0x1eab52){if(_0xef06f2[_0x7428('0x4e')]['id']){delete _0xef06f2['body']['id'];}return db[_0x7428('0x30')][_0x7428('0x4c')]({'where':{'id':_0xef06f2[_0x7428('0x4a')]['id']}})[_0x7428('0x28')](handleEntityNotFound(_0x1eab52,null))['then'](saveUpdates(_0xef06f2[_0x7428('0x4e')],null))['then'](respondWithResult(_0x1eab52,null))[_0x7428('0x48')](handleError(_0x1eab52,null));};exports['destroy']=function(_0x462373,_0x17deab){return db[_0x7428('0x30')][_0x7428('0x4c')]({'where':{'id':_0x462373['params']['id']}})['then'](handleEntityNotFound(_0x17deab,null))[_0x7428('0x28')](removeEntity(_0x17deab,null))[_0x7428('0x48')](handleError(_0x17deab,null));};exports[_0x7428('0x55')]=function(_0x43a2e1,_0xc3ac91){return db[_0x7428('0x30')]['describe']()[_0x7428('0x28')](respondWithResult(_0xc3ac91,null))[_0x7428('0x48')](handleError(_0xc3ac91,null));};exports[_0x7428('0x56')]=function(_0x3e4ef4,_0x991d21,_0x5c7ef6){var _0x580878={'raw':!![],'where':{}},_0x1625e5={},_0x56a398;return db[_0x7428('0x30')][_0x7428('0x57')]({'where':{'id':_0x3e4ef4[_0x7428('0x4a')]['id']}})[_0x7428('0x28')](handleEntityNotFound(_0x991d21,null))[_0x7428('0x28')](function(_0x123e4e){if(_0x123e4e){_0x56a398=_0x123e4e[_0x7428('0x29')]({'plain':!![]});_0x1625e5['model']=_['keys'](db[_0x7428('0x58')][_0x7428('0x31')]);_0x1625e5['query']=_[_0x7428('0x33')](_0x3e4ef4[_0x7428('0x34')]);_0x1625e5[_0x7428('0x3e')]=_[_0x7428('0x37')](_0x1625e5[_0x7428('0x35')],_0x1625e5[_0x7428('0x34')]);_0x580878[_0x7428('0x36')]=_[_0x7428('0x37')](_0x1625e5[_0x7428('0x35')],qs[_0x7428('0x38')](_0x3e4ef4['query']['fields']));_0x580878[_0x7428('0x36')]=_0x580878[_0x7428('0x36')][_0x7428('0x4b')]?_0x580878[_0x7428('0x36')]:_0x1625e5[_0x7428('0x35')];if(!_0x3e4ef4[_0x7428('0x34')][_0x7428('0x39')](_0x7428('0x3a'))){_0x580878['limit']=qs[_0x7428('0x21')](_0x3e4ef4['query']['limit']);_0x580878[_0x7428('0x23')]=qs[_0x7428('0x23')](_0x3e4ef4[_0x7428('0x34')][_0x7428('0x23')]);}_0x580878[_0x7428('0x3b')]=qs[_0x7428('0x3c')](_0x3e4ef4[_0x7428('0x34')][_0x7428('0x3c')]);_0x580878[_0x7428('0x3d')]=qs[_0x7428('0x3e')](_[_0x7428('0x3f')](_0x3e4ef4['query'],_0x1625e5[_0x7428('0x3e')]));_0x580878[_0x7428('0x3d')]['WhatsappQueueId']=_0x123e4e['id'];if(_0x3e4ef4[_0x7428('0x34')][_0x7428('0x40')]){_0x580878[_0x7428('0x3d')]=_['merge'](_0x580878[_0x7428('0x3d')],{'$or':_[_0x7428('0x2f')](_0x580878['attributes'],function(_0x208d50){var _0x11d77e={};_0x11d77e[_0x208d50]={'$like':'%'+_0x3e4ef4[_0x7428('0x34')][_0x7428('0x40')]+'%'};return _0x11d77e;})});}_0x580878=_['merge']({},_0x580878,_0x3e4ef4[_0x7428('0x44')]);return db['UserWhatsappQueue'][_0x7428('0x47')](_0x580878);}})['then'](function(_0x91c5c4){if(_0x91c5c4){return db[_0x7428('0x59')]['findAndCountAll']({'where':{'id':_['map'](_0x91c5c4,_0x7428('0x5a')),'role':_0x7428('0x5b')},'attributes':['id','name',_0x7428('0x5c'),'updatedAt',_0x7428('0x5d')]});}})[_0x7428('0x28')](function(_0x1a31f3){if(_0x1a31f3){return{'count':_0x1a31f3[_0x7428('0x22')],'rows':_[_0x7428('0x2f')](_0x1a31f3[_0x7428('0x5e')],function(_0x27d0a7){return{'membername':_0x27d0a7[_0x7428('0x2d')],'UserId':_0x27d0a7['id'],'queue_name':_0x56a398[_0x7428('0x2d')],'WhatsappQueueId':_0x56a398['id'],'interface':util[_0x7428('0x5f')]('%s/%s',_0x7428('0x60'),_0x27d0a7[_0x7428('0x2d')]),'penalty':0x0,'paused':_0x27d0a7[_0x7428('0x5c')],'createdAt':_0x27d0a7[_0x7428('0x5d')],'updatedAt':_0x27d0a7[_0x7428('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x7428('0x28')](respondWithFilteredResult(_0x991d21,_0x580878))[_0x7428('0x48')](handleError(_0x991d21,null));};exports[_0x7428('0x62')]=function(_0x5da59c,_0x25773a,_0x3ab8ae){var _0x574808={};var _0x26b0e9={};var _0x220a71;var _0x45ea7;return db[_0x7428('0x30')][_0x7428('0x57')]({'where':{'id':_0x5da59c['params']['id']}})[_0x7428('0x28')](handleEntityNotFound(_0x25773a,null))['then'](function(_0xef3dab){if(_0xef3dab){_0x220a71=_0xef3dab;_0x26b0e9['model']=_['keys'](db['Team'][_0x7428('0x31')]);_0x26b0e9[_0x7428('0x34')]=_[_0x7428('0x33')](_0x5da59c[_0x7428('0x34')]);_0x26b0e9[_0x7428('0x3e')]=_[_0x7428('0x37')](_0x26b0e9[_0x7428('0x35')],_0x26b0e9[_0x7428('0x34')]);_0x574808[_0x7428('0x36')]=_['intersection'](_0x26b0e9[_0x7428('0x35')],qs[_0x7428('0x38')](_0x5da59c[_0x7428('0x34')]['fields']));_0x574808[_0x7428('0x36')]=_0x574808[_0x7428('0x36')]['length']?_0x574808[_0x7428('0x36')]:_0x26b0e9[_0x7428('0x35')];_0x574808[_0x7428('0x3b')]=qs['sort'](_0x5da59c[_0x7428('0x34')][_0x7428('0x3c')]);_0x574808[_0x7428('0x3d')]=qs[_0x7428('0x3e')](_['pick'](_0x5da59c[_0x7428('0x34')],_0x26b0e9[_0x7428('0x3e')]));if(_0x5da59c['query']['filter']){_0x574808[_0x7428('0x3d')]=_['merge'](_0x574808['where'],{'$or':_[_0x7428('0x2f')](_0x574808[_0x7428('0x36')],function(_0xe60705){var _0x55ff53={};_0x55ff53[_0xe60705]={'$like':'%'+_0x5da59c[_0x7428('0x34')]['filter']+'%'};return _0x55ff53;})});}_0x574808=_[_0x7428('0x43')]({},_0x574808,_0x5da59c[_0x7428('0x44')]);return _0x220a71[_0x7428('0x62')](_0x574808);}})[_0x7428('0x28')](function(_0x424c2){if(_0x424c2){_0x45ea7=_0x424c2['length'];if(!_0x5da59c[_0x7428('0x34')][_0x7428('0x39')](_0x7428('0x3a'))){_0x574808['limit']=qs['limit'](_0x5da59c[_0x7428('0x34')][_0x7428('0x21')]);_0x574808['offset']=qs[_0x7428('0x23')](_0x5da59c[_0x7428('0x34')][_0x7428('0x23')]);}return _0x220a71['getTeams'](_0x574808);}})['then'](function(_0x169ddf){if(_0x169ddf){return _0x169ddf?{'count':_0x45ea7,'rows':_0x169ddf}:null;}})[_0x7428('0x28')](respondWithResult(_0x25773a,null))[_0x7428('0x48')](handleError(_0x25773a,null));};exports['addTeams']=function(_0x135f38,_0x292293,_0x54ab0a){var _0x52a39d=_0x135f38[_0x7428('0x4e')][_0x7428('0x63')];return db[_0x7428('0x64')][_0x7428('0x47')]({'where':{'id':_0x52a39d},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7428('0x65'),'attributes':['id','name','online',_0x7428('0x66'),_0x7428('0x67')],'raw':!![]}]})[_0x7428('0x28')](function(_0x597c89){if(_0x597c89){var _0x43ba52=_[_0x7428('0x68')](_0x597c89,function(_0x349817){var _0x193fe0=_0x349817[_0x7428('0x29')]({'plain':!![]});return _0x193fe0[_0x7428('0x65')];});return db[_0x7428('0x30')]['find']({'where':{'id':_0x135f38[_0x7428('0x4a')]['id']}})[_0x7428('0x28')](function(_0x37af6a){return db[_0x7428('0x69')][_0x7428('0x6a')](function(_0x2947b9){return _0x37af6a[_0x7428('0x6b')](_0x52a39d,{'transaction':_0x2947b9})[_0x7428('0x28')](function(){return BPromise[_0x7428('0x6c')](_0x43ba52,function(_0x404f4b){return db[_0x7428('0x58')][_0x7428('0x6d')]({'where':{'UserId':_0x404f4b['id'],'WhatsappQueueId':_0x135f38[_0x7428('0x4a')]['id']},'transaction':_0x2947b9});});})[_0x7428('0x28')](function(){_0x43ba52[_0x7428('0x6e')](function(_0x2f6282){socket[_0x7428('0x6f')](_0x7428('0x70'),{'UserId':_0x2f6282['id'],'WhatsappQueueId':_0x37af6a['id']});});});});});}})[_0x7428('0x28')](respondWithStatusCode(_0x292293,null))[_0x7428('0x48')](handleError(_0x292293,null));};exports[_0x7428('0x71')]=function(_0x181c93,_0x831d7e,_0x5f24ae){return db[_0x7428('0x64')][_0x7428('0x47')]({'where':{'id':_0x181c93[_0x7428('0x34')][_0x7428('0x63')]},'attributes':['id'],'include':[{'model':db[_0x7428('0x59')],'as':_0x7428('0x65'),'attributes':['id'],'raw':!![]}]})[_0x7428('0x28')](handleEntityNotFound(_0x831d7e,null))['then'](function(_0x978c66){var _0x5dd4cb=_[_0x7428('0x2f')](_0x978c66,'id');var _0x3c93a8=[];var _0x19983b=[];var _0x263f74=squel['select']();_0x263f74['field'](_0x7428('0x72'))[_0x7428('0x73')]('team_has_whatsapp_queues','tq')[_0x7428('0x74')](_0x7428('0x75'),'ut',_0x7428('0x76'))['where'](_0x7428('0x77'),_0x181c93[_0x7428('0x4a')]['id']);for(var _0x551e39=0x0;_0x551e39<_0x978c66['length'];_0x551e39+=0x1){let _0x307217=_0x978c66[_0x551e39];for(var _0x415bae=0x0;_0x415bae<_0x307217[_0x7428('0x65')][_0x7428('0x4b')];_0x415bae+=0x1){let _0x2a87db=_0x307217[_0x7428('0x65')][_0x415bae];var _0x4279b3=_0x263f74[_0x7428('0x78')]();_0x4279b3[_0x7428('0x3d')](_0x7428('0x79'),_0x2a87db['id']);_0x19983b[_0x7428('0x7a')](db[_0x7428('0x69')][_0x7428('0x34')](_0x4279b3[_0x7428('0x7b')](),{'type':db[_0x7428('0x69')][_0x7428('0x7c')][_0x7428('0x7d')]})[_0x7428('0x28')](function(_0x2d7f90){if(_0x2d7f90[_0x7428('0x4b')]===0x1){return _0x2a87db['id'];}else{var _0xb237f=_['every'](_[_0x7428('0x2f')](_0x2d7f90,'TeamId'),function(_0x5d3a3a){return _[_0x7428('0x7e')](_0x5dd4cb,_0x5d3a3a);});if(_0xb237f){return _0x2a87db['id'];}}}));}}return BPromise[_0x7428('0x7f')](_0x19983b)['then'](function(_0x5ce6be){_0x3c93a8=_(_0x3c93a8)[_0x7428('0x80')](_0x5ce6be)[_0x7428('0x81')]()['value']();return db['WhatsappQueue']['find']({'where':{'id':_0x181c93[_0x7428('0x4a')]['id']}})[_0x7428('0x28')](function(_0x5f4b0d){return db[_0x7428('0x69')][_0x7428('0x6a')](function(_0x457f0f){return _0x5f4b0d[_0x7428('0x71')](_0x181c93[_0x7428('0x34')][_0x7428('0x63')],{'transaction':_0x457f0f})['then'](function(){if(!_[_0x7428('0x82')](_0x3c93a8)){return _0x5f4b0d[_0x7428('0x83')](_0x3c93a8,{'transaction':_0x457f0f});}})['then'](function(){_0x3c93a8[_0x7428('0x6e')](function(_0x45c4b8){socket[_0x7428('0x6f')](_0x7428('0x84'),{'UserId':_0x45c4b8,'WhatsappQueueId':_0x5f4b0d['id']});});});});});});})[_0x7428('0x28')](respondWithStatusCode(_0x831d7e,null))['catch'](handleError(_0x831d7e,null));};exports[_0x7428('0x85')]=function(_0x434c22,_0x4ca247,_0x2a2ee4){return db[_0x7428('0x30')][_0x7428('0x4c')]({'where':{'id':_0x434c22[_0x7428('0x4a')]['id']}})[_0x7428('0x28')](handleEntityNotFound(_0x4ca247,null))[_0x7428('0x28')](function(_0xe6160b){if(_0xe6160b){return _0xe6160b['addAgents'](_0x434c22['body'][_0x7428('0x63')],_[_0x7428('0x86')](_0x434c22[_0x7428('0x4e')],[_0x7428('0x63'),'id'])||{})[_0x7428('0x87')](function(_0x2e1dbe){for(var _0xeee2bd=0x0;_0xeee2bd<_0x434c22[_0x7428('0x4e')][_0x7428('0x63')][_0x7428('0x4b')];_0xeee2bd+=0x1){socket[_0x7428('0x6f')](_0x7428('0x70'),{'UserId':Number(_0x434c22[_0x7428('0x4e')][_0x7428('0x63')][_0xeee2bd]),'WhatsappQueueId':Number(_0x434c22['params']['id'])});}return _0x2e1dbe;});}})['then'](respondWithResult(_0x4ca247,null))['catch'](handleError(_0x4ca247,null));};exports[_0x7428('0x83')]=function(_0x31f834,_0x37ebbb,_0x512cc4){return db['WhatsappQueue']['find']({'where':{'id':_0x31f834[_0x7428('0x4a')]['id']}})[_0x7428('0x28')](handleEntityNotFound(_0x37ebbb,null))[_0x7428('0x28')](function(_0x5e4477){if(_0x5e4477){return _0x5e4477[_0x7428('0x83')](_0x31f834[_0x7428('0x34')][_0x7428('0x63')])[_0x7428('0x28')](function(){if(_[_0x7428('0x88')](_0x31f834[_0x7428('0x34')][_0x7428('0x63')])){for(var _0x534a13=0x0;_0x534a13<_0x31f834['query'][_0x7428('0x63')][_0x7428('0x4b')];_0x534a13+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x31f834['query'][_0x7428('0x63')][_0x534a13]),'WhatsappQueueId':Number(_0x31f834['params']['id'])});}}else{socket[_0x7428('0x6f')]('userWhatsappQueue:remove',{'UserId':Number(_0x31f834[_0x7428('0x34')][_0x7428('0x63')]),'WhatsappQueueId':Number(_0x31f834[_0x7428('0x4a')]['id'])});}});}})[_0x7428('0x28')](respondWithStatusCode(_0x37ebbb,null))[_0x7428('0x48')](handleError(_0x37ebbb,null));};exports['getAgents']=function(_0x1c9422,_0x40ed6c,_0x437d06){var _0xb8623a={};var _0x3bd265={};var _0x200f57;var _0x2d1949;return db[_0x7428('0x30')][_0x7428('0x57')]({'where':{'id':_0x1c9422[_0x7428('0x4a')]['id']}})['then'](handleEntityNotFound(_0x40ed6c,null))[_0x7428('0x28')](function(_0x4fa119){if(_0x4fa119){_0x200f57=_0x4fa119;_0x3bd265[_0x7428('0x35')]=_[_0x7428('0x33')](db['User'][_0x7428('0x31')]);_0x3bd265['query']=_[_0x7428('0x33')](_0x1c9422['query']);_0x3bd265[_0x7428('0x3e')]=_['intersection'](_0x3bd265['model'],_0x3bd265[_0x7428('0x34')]);_0xb8623a[_0x7428('0x36')]=_[_0x7428('0x37')](_0x3bd265[_0x7428('0x35')],qs[_0x7428('0x38')](_0x1c9422[_0x7428('0x34')][_0x7428('0x38')]));_0xb8623a[_0x7428('0x36')]=_0xb8623a[_0x7428('0x36')][_0x7428('0x4b')]?_0xb8623a[_0x7428('0x36')]:_0x3bd265[_0x7428('0x35')];_0xb8623a[_0x7428('0x3b')]=qs[_0x7428('0x3c')](_0x1c9422[_0x7428('0x34')]['sort']);_0xb8623a[_0x7428('0x3d')]=qs[_0x7428('0x3e')](_[_0x7428('0x3f')](_0x1c9422[_0x7428('0x34')],_0x3bd265[_0x7428('0x3e')]));if(_0x1c9422[_0x7428('0x34')]['filter']){_0xb8623a[_0x7428('0x3d')]=_[_0x7428('0x43')](_0xb8623a[_0x7428('0x3d')],{'$or':_[_0x7428('0x2f')](_0xb8623a[_0x7428('0x36')],function(_0x321d25){var _0xecf2c3={};_0xecf2c3[_0x321d25]={'$like':'%'+_0x1c9422[_0x7428('0x34')][_0x7428('0x40')]+'%'};return _0xecf2c3;})});}_0xb8623a=_[_0x7428('0x43')]({},_0xb8623a,_0x1c9422[_0x7428('0x44')]);return _0x200f57[_0x7428('0x89')](_0xb8623a);}})[_0x7428('0x28')](function(_0xcbfc08){if(_0xcbfc08){_0x2d1949=_0xcbfc08['length'];if(!_0x1c9422['query'][_0x7428('0x39')](_0x7428('0x3a'))){_0xb8623a[_0x7428('0x21')]=qs[_0x7428('0x21')](_0x1c9422[_0x7428('0x34')][_0x7428('0x21')]);_0xb8623a[_0x7428('0x23')]=qs[_0x7428('0x23')](_0x1c9422[_0x7428('0x34')]['offset']);}return _0x200f57[_0x7428('0x89')](_0xb8623a);}})['then'](function(_0x536849){if(_0x536849){return _0x536849?{'count':_0x2d1949,'rows':_0x536849}:null;}})[_0x7428('0x28')](respondWithResult(_0x40ed6c,null))[_0x7428('0x48')](handleError(_0x40ed6c,null));};
\ No newline at end of file
index c05a5d0..1090321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7dd=['WhatsappQueue','setMaxListeners','save','update','remove','emit','hook','events'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xd7dd,0x117));var _0xdd7d=function(_0x2819a0,_0xb319c6){_0x2819a0=_0x2819a0-0x0;var _0x2947a7=_0xd7dd[_0x2819a0];return _0x2947a7;};'use strict';var EventEmitter=require(_0xdd7d('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xdd7d('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xdd7d('0x2')](0x0);var events={'afterCreate':_0xdd7d('0x3'),'afterUpdate':_0xdd7d('0x4'),'afterDestroy':_0xdd7d('0x5')};function emitEvent(_0x15e6c1){return function(_0x549c2b,_0x14df75,_0x25bfb8){WhatsappQueueEvents['emit'](_0x15e6c1+':'+_0x549c2b['id'],_0x549c2b);WhatsappQueueEvents[_0xdd7d('0x6')](_0x15e6c1,_0x549c2b);_0x25bfb8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xdd7d('0x7')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x73de=['WhatsappQueue','save','update','remove','hasOwnProperty','hook','events'];(function(_0x40a4ee,_0x515400){var _0x57c3cc=function(_0x4ba215){while(--_0x4ba215){_0x40a4ee['push'](_0x40a4ee['shift']());}};_0x57c3cc(++_0x515400);}(_0x73de,0x148));var _0xe73d=function(_0x2fc6de,_0x3bc455){_0x2fc6de=_0x2fc6de-0x0;var _0x16af63=_0x73de[_0x2fc6de];return _0x16af63;};'use strict';var EventEmitter=require(_0xe73d('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xe73d('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe73d('0x2'),'afterUpdate':_0xe73d('0x3'),'afterDestroy':_0xe73d('0x4')};function emitEvent(_0x19ef19){return function(_0xe0e4af,_0x546063,_0x37f0b6){WhatsappQueueEvents['emit'](_0x19ef19+':'+_0xe0e4af['id'],_0xe0e4af);WhatsappQueueEvents['emit'](_0x19ef19,_0xe0e4af);_0x37f0b6(null);};}for(var e in events){if(events[_0xe73d('0x5')](e)){var event=events[e];WhatsappQueue[_0xe73d('0x6')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 09d5208..478c9bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ac0=['bluebird','path','../../config/environment','exports','define','WhatsappQueue','whatsapp_queues','lodash','api','moment'];(function(_0x906c78,_0x38f979){var _0x324ad2=function(_0x429f87){while(--_0x429f87){_0x906c78['push'](_0x906c78['shift']());}};_0x324ad2(++_0x38f979);}(_0x8ac0,0x7f));var _0x08ac=function(_0x4deb61,_0x23eefc){_0x4deb61=_0x4deb61-0x0;var _0x318e98=_0x8ac0[_0x4deb61];return _0x318e98;};'use strict';var _=require(_0x08ac('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x08ac('0x1'));var moment=require(_0x08ac('0x2'));var BPromise=require(_0x08ac('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x08ac('0x4'));var rimraf=require('rimraf');var config=require(_0x08ac('0x5'));var attributes=require('./whatsappQueue.attributes');module[_0x08ac('0x6')]=function(_0x87b295,_0x3164a5){return _0x87b295[_0x08ac('0x7')](_0x08ac('0x8'),attributes,{'tableName':_0x08ac('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x26a0=['util','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueue.attributes','exports','whatsapp_queues','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x26a0,0x121));var _0x026a=function(_0x57aa21,_0x4b231a){_0x57aa21=_0x57aa21-0x0;var _0x14fb9e=_0x26a0[_0x57aa21];return _0x14fb9e;};'use strict';var _=require(_0x026a('0x0'));var util=require(_0x026a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x026a('0x2'));var BPromise=require(_0x026a('0x3'));var rp=require(_0x026a('0x4'));var fs=require('fs');var path=require(_0x026a('0x5'));var rimraf=require('rimraf');var config=require(_0x026a('0x6'));var attributes=require(_0x026a('0x7'));module[_0x026a('0x8')]=function(_0xa865d8,_0x5c34cb){return _0xa865d8['define']('WhatsappQueue',attributes,{'tableName':_0x026a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5dcee4..73eb712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f93=['find','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','./whatsappQueue.socket','register','request','then','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','WhatsappQueue,\x20%s,\x20%s','info','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','limit','map','model','include','ShowWhatsappQueue'];(function(_0x46db2,_0x298356){var _0x643fed=function(_0x493dde){while(--_0x493dde){_0x46db2['push'](_0x46db2['shift']());}};_0x643fed(++_0x298356);}(_0x7f93,0x10b));var _0x37f9=function(_0xafdea7,_0x4bc2ff){_0xafdea7=_0xafdea7-0x0;var _0x251354=_0x7f93[_0xafdea7];return _0x251354;};'use strict';var _=require('lodash');var util=require(_0x37f9('0x0'));var moment=require(_0x37f9('0x1'));var BPromise=require(_0x37f9('0x2'));var rs=require(_0x37f9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x37f9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x37f9('0x5'))(_0x37f9('0x6'));var config=require('../../config/environment');var jayson=require(_0x37f9('0x7'));var client=jayson[_0x37f9('0x8')][_0x37f9('0x9')]({'port':0x232a});config[_0x37f9('0xa')]=_[_0x37f9('0xb')](config[_0x37f9('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x37f9('0xc'))[_0x37f9('0xd')](socket);function respondWithRpcPromise(_0x5df8c7,_0x2f5e11,_0x141fa8){return new BPromise(function(_0x54a063,_0x2979de){return client[_0x37f9('0xe')](_0x5df8c7,_0x141fa8)[_0x37f9('0xf')](function(_0x388d11){logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x2f5e11,_0x37f9('0x10'));logger[_0x37f9('0x11')](_0x37f9('0x12'),_0x2f5e11,'request\x20sent',JSON[_0x37f9('0x13')](_0x388d11));if(_0x388d11['error']){if(_0x388d11['error']['code']===0x1f4){logger[_0x37f9('0x14')]('WhatsappQueue,\x20%s,\x20%s',_0x2f5e11,_0x388d11['error'][_0x37f9('0x15')]);return _0x2979de(_0x388d11[_0x37f9('0x14')][_0x37f9('0x15')]);}logger['error'](_0x37f9('0x16'),_0x2f5e11,_0x388d11[_0x37f9('0x14')][_0x37f9('0x15')]);return _0x54a063(_0x388d11[_0x37f9('0x14')]['message']);}else{logger[_0x37f9('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0x2f5e11,_0x37f9('0x10'));_0x54a063(_0x388d11['result'][_0x37f9('0x15')]);}})[_0x37f9('0x18')](function(_0x122672){logger['error'](_0x37f9('0x16'),_0x2f5e11,_0x122672);_0x2979de(_0x122672);});});}exports[_0x37f9('0x19')]=function(_0x2e403f){var _0x4a5f8=this;return new Promise(function(_0x41c302,_0x514821){return db[_0x37f9('0x1a')][_0x37f9('0x1b')]({'raw':_0x2e403f[_0x37f9('0x1c')]?_0x2e403f['options'][_0x37f9('0x1d')]===undefined?!![]:![]:!![],'where':_0x2e403f['options']?_0x2e403f[_0x37f9('0x1c')][_0x37f9('0x1e')]||null:null,'attributes':_0x2e403f[_0x37f9('0x1c')]?_0x2e403f[_0x37f9('0x1c')][_0x37f9('0x1f')]||null:null,'limit':_0x2e403f[_0x37f9('0x1c')]?_0x2e403f['options'][_0x37f9('0x20')]||null:null,'include':_0x2e403f[_0x37f9('0x1c')]?_0x2e403f[_0x37f9('0x1c')]['include']?_[_0x37f9('0x21')](_0x2e403f['options']['include'],function(_0x5bfdc3){return{'model':db[_0x5bfdc3[_0x37f9('0x22')]],'as':_0x5bfdc3['as'],'attributes':_0x5bfdc3['attributes'],'include':_0x5bfdc3[_0x37f9('0x23')]?_[_0x37f9('0x21')](_0x5bfdc3[_0x37f9('0x23')],function(_0x4a730a){return{'model':db[_0x4a730a[_0x37f9('0x22')]],'as':_0x4a730a['as'],'attributes':_0x4a730a['attributes'],'include':_0x4a730a[_0x37f9('0x23')]?_[_0x37f9('0x21')](_0x4a730a[_0x37f9('0x23')],function(_0x13c8e2){return{'model':db[_0x13c8e2[_0x37f9('0x22')]],'as':_0x13c8e2['as'],'attributes':_0x13c8e2[_0x37f9('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x37f9('0xf')](function(_0x201e0a){logger['info'](_0x37f9('0x19'),_0x2e403f);logger[_0x37f9('0x11')](_0x37f9('0x19'),_0x2e403f,JSON[_0x37f9('0x13')](_0x201e0a));_0x41c302(_0x201e0a);})[_0x37f9('0x18')](function(_0x67e149){logger[_0x37f9('0x14')](_0x37f9('0x19'),_0x67e149['message'],_0x2e403f);_0x514821(_0x4a5f8['error'](0x1f4,_0x67e149[_0x37f9('0x15')]));});});};exports[_0x37f9('0x24')]=function(_0xec4fb4){var _0x134196=this;return new Promise(function(_0x51e35b,_0x287335){return db[_0x37f9('0x1a')][_0x37f9('0x25')]({'raw':_0xec4fb4[_0x37f9('0x1c')]?_0xec4fb4[_0x37f9('0x1c')][_0x37f9('0x1d')]===undefined?!![]:![]:!![],'where':_0xec4fb4[_0x37f9('0x1c')]?_0xec4fb4[_0x37f9('0x1c')][_0x37f9('0x1e')]||null:null,'attributes':_0xec4fb4[_0x37f9('0x1c')]?_0xec4fb4['options'][_0x37f9('0x1f')]||null:null,'include':_0xec4fb4[_0x37f9('0x1c')]?_0xec4fb4[_0x37f9('0x1c')][_0x37f9('0x23')]?_['map'](_0xec4fb4[_0x37f9('0x1c')]['include'],function(_0xfe3199){return{'model':db[_0xfe3199[_0x37f9('0x22')]],'as':_0xfe3199['as'],'attributes':_0xfe3199['attributes'],'include':_0xfe3199[_0x37f9('0x23')]?_['map'](_0xfe3199['include'],function(_0x123e65){return{'model':db[_0x123e65[_0x37f9('0x22')]],'as':_0x123e65['as'],'attributes':_0x123e65[_0x37f9('0x1f')],'include':_0x123e65[_0x37f9('0x23')]?_[_0x37f9('0x21')](_0x123e65[_0x37f9('0x23')],function(_0x3388b7){return{'model':db[_0x3388b7['model']],'as':_0x3388b7['as'],'attributes':_0x3388b7[_0x37f9('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x37f9('0xf')](function(_0x45b52a){logger[_0x37f9('0x17')](_0x37f9('0x24'),_0xec4fb4);logger[_0x37f9('0x11')]('ShowWhatsappQueue',_0xec4fb4,JSON['stringify'](_0x45b52a));_0x51e35b(_0x45b52a);})[_0x37f9('0x18')](function(_0x64492a){logger[_0x37f9('0x14')](_0x37f9('0x24'),_0x64492a[_0x37f9('0x15')],_0xec4fb4);_0x287335(_0x134196[_0x37f9('0x14')](0x1f4,_0x64492a[_0x37f9('0x15')]));});});};
\ No newline at end of file
+var _0x3146=['ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','attributes','include','map','model','ShowWhatsappQueue','find','raw','lodash','util','moment','bluebird','randomstring'];(function(_0x109333,_0x5ce132){var _0x7eb389=function(_0x55b2fd){while(--_0x55b2fd){_0x109333['push'](_0x109333['shift']());}};_0x7eb389(++_0x5ce132);}(_0x3146,0x19d));var _0x6314=function(_0x2dad73,_0x4a35ff){_0x2dad73=_0x2dad73-0x0;var _0x47b20a=_0x3146[_0x2dad73];return _0x47b20a;};'use strict';var _=require(_0x6314('0x0'));var util=require(_0x6314('0x1'));var moment=require(_0x6314('0x2'));var BPromise=require(_0x6314('0x3'));var rs=require(_0x6314('0x4'));var fs=require('fs');var Redis=require(_0x6314('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6314('0x6'));var logger=require('../../config/logger')(_0x6314('0x7'));var config=require('../../config/environment');var jayson=require(_0x6314('0x8'));var client=jayson[_0x6314('0x9')][_0x6314('0xa')]({'port':0x232a});config[_0x6314('0xb')]=_['defaults'](config[_0x6314('0xb')],{'host':_0x6314('0xc'),'port':0x18eb});var socket=require(_0x6314('0xd'))(new Redis(config[_0x6314('0xb')]));require(_0x6314('0xe'))['register'](socket);function respondWithRpcPromise(_0x5a3917,_0x308cd7,_0x6a06f7){return new BPromise(function(_0xc17f1e,_0x5a162c){return client[_0x6314('0xf')](_0x5a3917,_0x6a06f7)[_0x6314('0x10')](function(_0x17ed39){logger[_0x6314('0x11')](_0x6314('0x12'),_0x308cd7,_0x6314('0x13'));logger[_0x6314('0x14')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x308cd7,_0x6314('0x13'),JSON[_0x6314('0x15')](_0x17ed39));if(_0x17ed39['error']){if(_0x17ed39[_0x6314('0x16')][_0x6314('0x17')]===0x1f4){logger[_0x6314('0x16')](_0x6314('0x12'),_0x308cd7,_0x17ed39['error'][_0x6314('0x18')]);return _0x5a162c(_0x17ed39[_0x6314('0x16')][_0x6314('0x18')]);}logger['error'](_0x6314('0x12'),_0x308cd7,_0x17ed39[_0x6314('0x16')][_0x6314('0x18')]);return _0xc17f1e(_0x17ed39['error'][_0x6314('0x18')]);}else{logger[_0x6314('0x11')](_0x6314('0x12'),_0x308cd7,'request\x20sent');_0xc17f1e(_0x17ed39[_0x6314('0x19')][_0x6314('0x18')]);}})[_0x6314('0x1a')](function(_0x2e0a73){logger[_0x6314('0x16')](_0x6314('0x12'),_0x308cd7,_0x2e0a73);_0x5a162c(_0x2e0a73);});});}exports[_0x6314('0x1b')]=function(_0x1aa7d6){var _0x3b5fc6=this;return new Promise(function(_0x275543,_0x3c742b){return db[_0x6314('0x1c')][_0x6314('0x1d')]({'raw':_0x1aa7d6['options']?_0x1aa7d6[_0x6314('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1aa7d6['options']?_0x1aa7d6[_0x6314('0x1e')]['where']||null:null,'attributes':_0x1aa7d6[_0x6314('0x1e')]?_0x1aa7d6[_0x6314('0x1e')][_0x6314('0x1f')]||null:null,'limit':_0x1aa7d6[_0x6314('0x1e')]?_0x1aa7d6[_0x6314('0x1e')]['limit']||null:null,'include':_0x1aa7d6[_0x6314('0x1e')]?_0x1aa7d6[_0x6314('0x1e')][_0x6314('0x20')]?_[_0x6314('0x21')](_0x1aa7d6[_0x6314('0x1e')][_0x6314('0x20')],function(_0x20873e){return{'model':db[_0x20873e[_0x6314('0x22')]],'as':_0x20873e['as'],'attributes':_0x20873e['attributes'],'include':_0x20873e[_0x6314('0x20')]?_[_0x6314('0x21')](_0x20873e[_0x6314('0x20')],function(_0x41ecdb){return{'model':db[_0x41ecdb[_0x6314('0x22')]],'as':_0x41ecdb['as'],'attributes':_0x41ecdb[_0x6314('0x1f')],'include':_0x41ecdb['include']?_[_0x6314('0x21')](_0x41ecdb['include'],function(_0x242836){return{'model':db[_0x242836[_0x6314('0x22')]],'as':_0x242836['as'],'attributes':_0x242836[_0x6314('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6314('0x10')](function(_0x5b5f0e){logger[_0x6314('0x11')](_0x6314('0x1b'),_0x1aa7d6);logger['debug'](_0x6314('0x1b'),_0x1aa7d6,JSON[_0x6314('0x15')](_0x5b5f0e));_0x275543(_0x5b5f0e);})[_0x6314('0x1a')](function(_0x3b8e4a){logger[_0x6314('0x16')](_0x6314('0x1b'),_0x3b8e4a[_0x6314('0x18')],_0x1aa7d6);_0x3c742b(_0x3b5fc6[_0x6314('0x16')](0x1f4,_0x3b8e4a[_0x6314('0x18')]));});});};exports[_0x6314('0x23')]=function(_0x219e9b){var _0x2875e5=this;return new Promise(function(_0x3b1d25,_0x33098d){return db[_0x6314('0x1c')][_0x6314('0x24')]({'raw':_0x219e9b['options']?_0x219e9b[_0x6314('0x1e')][_0x6314('0x25')]===undefined?!![]:![]:!![],'where':_0x219e9b[_0x6314('0x1e')]?_0x219e9b['options']['where']||null:null,'attributes':_0x219e9b['options']?_0x219e9b['options'][_0x6314('0x1f')]||null:null,'include':_0x219e9b[_0x6314('0x1e')]?_0x219e9b['options'][_0x6314('0x20')]?_[_0x6314('0x21')](_0x219e9b['options'][_0x6314('0x20')],function(_0x343e77){return{'model':db[_0x343e77[_0x6314('0x22')]],'as':_0x343e77['as'],'attributes':_0x343e77['attributes'],'include':_0x343e77['include']?_[_0x6314('0x21')](_0x343e77[_0x6314('0x20')],function(_0x51d1c0){return{'model':db[_0x51d1c0['model']],'as':_0x51d1c0['as'],'attributes':_0x51d1c0[_0x6314('0x1f')],'include':_0x51d1c0[_0x6314('0x20')]?_[_0x6314('0x21')](_0x51d1c0[_0x6314('0x20')],function(_0x29ff87){return{'model':db[_0x29ff87[_0x6314('0x22')]],'as':_0x29ff87['as'],'attributes':_0x29ff87[_0x6314('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f4c72){logger[_0x6314('0x11')](_0x6314('0x23'),_0x219e9b);logger[_0x6314('0x14')](_0x6314('0x23'),_0x219e9b,JSON[_0x6314('0x15')](_0x2f4c72));_0x3b1d25(_0x2f4c72);})[_0x6314('0x1a')](function(_0x2bd9cd){logger[_0x6314('0x16')](_0x6314('0x23'),_0x2bd9cd[_0x6314('0x18')],_0x219e9b);_0x33098d(_0x2875e5[_0x6314('0x16')](0x1f4,_0x2bd9cd['message']));});});};
\ No newline at end of file
index b24548b..ac96ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd550=['emit','length','whatsappQueue:','./whatsappQueue.events','remove','update'];(function(_0x2d12e0,_0x2d3109){var _0x275699=function(_0xf013fd){while(--_0xf013fd){_0x2d12e0['push'](_0x2d12e0['shift']());}};_0x275699(++_0x2d3109);}(_0xd550,0xed));var _0x0d55=function(_0x4680f3,_0x225329){_0x4680f3=_0x4680f3-0x0;var _0x3a3ed0=_0xd550[_0x4680f3];return _0x3a3ed0;};'use strict';var WhatsappQueueEvents=require(_0x0d55('0x0'));var events=['save',_0x0d55('0x1'),_0x0d55('0x2')];function createListener(_0x1d2712,_0x1db393){return function(_0x11532e){_0x1db393[_0x0d55('0x3')](_0x1d2712,_0x11532e);};}function removeListener(_0x347abd,_0x4b1332){return function(){WhatsappQueueEvents['removeListener'](_0x347abd,_0x4b1332);};}exports['register']=function(_0x17fcaa){for(var _0xf538a5=0x0,_0x1f4d53=events[_0x0d55('0x4')];_0xf538a5<_0x1f4d53;_0xf538a5++){var _0x1babb8=events[_0xf538a5];var _0x5be6d4=createListener(_0x0d55('0x5')+_0x1babb8,_0x17fcaa);WhatsappQueueEvents['on'](_0x1babb8,_0x5be6d4);}};
\ No newline at end of file
+var _0x5af5=['register','length','whatsappQueue:','./whatsappQueue.events','remove','update','removeListener'];(function(_0x37a0b4,_0x5adc7d){var _0x578168=function(_0x54a0b6){while(--_0x54a0b6){_0x37a0b4['push'](_0x37a0b4['shift']());}};_0x578168(++_0x5adc7d);}(_0x5af5,0x184));var _0x55af=function(_0x2e8ac2,_0x5f8f69){_0x2e8ac2=_0x2e8ac2-0x0;var _0x580b4a=_0x5af5[_0x2e8ac2];return _0x580b4a;};'use strict';var WhatsappQueueEvents=require(_0x55af('0x0'));var events=['save',_0x55af('0x1'),_0x55af('0x2')];function createListener(_0x228c3e,_0x93dfd9){return function(_0x29a10f){_0x93dfd9['emit'](_0x228c3e,_0x29a10f);};}function removeListener(_0x458ecc,_0x12fa49){return function(){WhatsappQueueEvents[_0x55af('0x3')](_0x458ecc,_0x12fa49);};}exports[_0x55af('0x4')]=function(_0x367531){for(var _0x37ce14=0x0,_0xe33970=events[_0x55af('0x5')];_0x37ce14<_0xe33970;_0x37ce14++){var _0x693908=events[_0x37ce14];var _0x579b4f=createListener(_0x55af('0x6')+_0x693908,_0x367531);WhatsappQueueEvents['on'](_0x693908,_0x579b4f);}};
\ No newline at end of file
index 1e30b90..b519ff5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd57d=['/:id','show','post','create','put','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x1e4f2f,_0x35edfa){var _0xccea89=function(_0x164386){while(--_0x164386){_0x1e4f2f['push'](_0x1e4f2f['shift']());}};_0xccea89(++_0x35edfa);}(_0xd57d,0x1bb));var _0xdd57=function(_0x4c4cc7,_0x32b629){_0x4c4cc7=_0x4c4cc7-0x0;var _0x15202c=_0xd57d[_0x4c4cc7];return _0x15202c;};'use strict';var multer=require(_0xdd57('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdd57('0x1'));var express=require('express');var router=express[_0xdd57('0x2')]();var fs_extra=require(_0xdd57('0x3'));var auth=require(_0xdd57('0x4'));var interaction=require(_0xdd57('0x5'));var config=require(_0xdd57('0x6'));var controller=require(_0xdd57('0x7'));router[_0xdd57('0x8')]('/',auth[_0xdd57('0x9')](),controller[_0xdd57('0xa')]);router[_0xdd57('0x8')](_0xdd57('0xb'),auth['isAuthenticated'](),controller[_0xdd57('0xc')]);router[_0xdd57('0x8')](_0xdd57('0xd'),auth[_0xdd57('0x9')](),controller[_0xdd57('0xe')]);router[_0xdd57('0xf')]('/',auth[_0xdd57('0x9')](),controller[_0xdd57('0x10')]);router[_0xdd57('0x11')]('/:id',auth[_0xdd57('0x9')](),controller['update']);router['delete'](_0xdd57('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xdd57('0x12')]=router;
\ No newline at end of file
+var _0x91ef=['exports','multer','util','path','express','Router','fs-extra','./whatsappQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','update','delete','destroy'];(function(_0x4924cc,_0x41aa28){var _0x40a18e=function(_0x268d81){while(--_0x268d81){_0x4924cc['push'](_0x4924cc['shift']());}};_0x40a18e(++_0x41aa28);}(_0x91ef,0x155));var _0xf91e=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x91ef[_0x36c5b0];return _0xf19333;};'use strict';var multer=require(_0xf91e('0x0'));var util=require(_0xf91e('0x1'));var path=require(_0xf91e('0x2'));var timeout=require('connect-timeout');var express=require(_0xf91e('0x3'));var router=express[_0xf91e('0x4')]();var fs_extra=require(_0xf91e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf91e('0x6'));router[_0xf91e('0x7')]('/',auth['isAuthenticated'](),controller[_0xf91e('0x8')]);router['get'](_0xf91e('0x9'),auth[_0xf91e('0xa')](),controller[_0xf91e('0xb')]);router[_0xf91e('0x7')](_0xf91e('0xc'),auth[_0xf91e('0xa')](),controller[_0xf91e('0xd')]);router[_0xf91e('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf91e('0xf')]('/:id',auth[_0xf91e('0xa')](),controller[_0xf91e('0x10')]);router[_0xf91e('0x11')](_0xf91e('0xc'),auth[_0xf91e('0xa')](),controller[_0xf91e('0x12')]);module[_0xf91e('0x13')]=router;
\ No newline at end of file
index 1850a9b..bd89743 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x2c6378,_0x4c95f1){var _0x72ed0=function(_0x3516ab){while(--_0x3516ab){_0x2c6378['push'](_0x2c6378['shift']());}};_0x72ed0(++_0x4c95f1);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x3a3864,_0x419d0a){var _0xb7d541=function(_0x1c7065){while(--_0x1c7065){_0x3a3864['push'](_0x3a3864['shift']());}};_0xb7d541(++_0x419d0a);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index bee0523..6f37a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['limit','order','sort','where','pick','VIRTUAL','filter','options','includeAll','findAll','rows','show','merge','find','create','body','params','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit'];(function(_0x1cef07,_0x1eb5f2){var _0x2f0a89=function(_0xdab0fe){while(--_0xdab0fe){_0x1cef07['push'](_0x1cef07['shift']());}};_0x2f0a89(++_0x1eb5f2);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x34f8ba,_0x2bb6a8){_0x34f8ba=_0x34f8ba-0x0;var _0xa5ed05=_0x4cf8[_0x34f8ba];return _0xa5ed05;};'use strict';var emlformat=require(_0x84cf('0x0'));var rimraf=require(_0x84cf('0x1'));var zipdir=require(_0x84cf('0x2'));var jsonpatch=require(_0x84cf('0x3'));var rp=require(_0x84cf('0x4'));var moment=require(_0x84cf('0x5'));var BPromise=require(_0x84cf('0x6'));var Mustache=require(_0x84cf('0x7'));var util=require(_0x84cf('0x8'));var path=require(_0x84cf('0x9'));var sox=require(_0x84cf('0xa'));var csv=require(_0x84cf('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x84cf('0xc'));var squel=require('squel');var crypto=require(_0x84cf('0xd'));var jsforce=require(_0x84cf('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x84cf('0xb'));var querystring=require(_0x84cf('0xf'));var Papa=require('papaparse');var Redis=require(_0x84cf('0x10'));var authService=require(_0x84cf('0x11'));var qs=require(_0x84cf('0x12'));var as=require(_0x84cf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84cf('0x14'))(_0x84cf('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x84cf('0x16'));var db=require(_0x84cf('0x17'))['db'];function respondWithStatusCode(_0x35f852,_0x33f83e){_0x33f83e=_0x33f83e||0xcc;return function(_0x172d04){if(_0x172d04){return _0x35f852[_0x84cf('0x18')](_0x33f83e);}return _0x35f852[_0x84cf('0x19')](_0x33f83e)[_0x84cf('0x1a')]();};}function respondWithResult(_0xced48,_0x250a19){_0x250a19=_0x250a19||0xc8;return function(_0x2fc41f){if(_0x2fc41f){return _0xced48[_0x84cf('0x19')](_0x250a19)[_0x84cf('0x1b')](_0x2fc41f);}};}function respondWithFilteredResult(_0x20e79c,_0x27261b){return function(_0x167c3e){if(_0x167c3e){var _0x464e70=typeof _0x27261b[_0x84cf('0x1c')]===_0x84cf('0x1d')&&typeof _0x27261b['limit']===_0x84cf('0x1d');var _0x5d6a93=_0x167c3e[_0x84cf('0x1e')];var _0x1abe2d=_0x464e70?0x0:_0x27261b[_0x84cf('0x1c')];var _0x13ba16=_0x464e70?_0x167c3e[_0x84cf('0x1e')]:_0x27261b['offset']+_0x27261b['limit'];var _0x42d6d4;if(_0x13ba16>=_0x5d6a93){_0x13ba16=_0x5d6a93;_0x42d6d4=0xc8;}else{_0x42d6d4=0xce;}_0x20e79c[_0x84cf('0x19')](_0x42d6d4);return _0x20e79c[_0x84cf('0x1f')](_0x84cf('0x20'),_0x1abe2d+'-'+_0x13ba16+'/'+_0x5d6a93)[_0x84cf('0x1b')](_0x167c3e);}return null;};}function patchUpdates(_0x5dda3f){return function(_0x39a37b){try{jsonpatch[_0x84cf('0x21')](_0x39a37b,_0x5dda3f,!![]);}catch(_0x3ca1be){return BPromise[_0x84cf('0x22')](_0x3ca1be);}return _0x39a37b[_0x84cf('0x23')]();};}function saveUpdates(_0x54405a,_0x42fa45){return function(_0x160f86){if(_0x160f86){return _0x160f86[_0x84cf('0x24')](_0x54405a)[_0x84cf('0x25')](function(_0x3e5e94){return _0x3e5e94;});}return null;};}function removeEntity(_0x29e9e1,_0x7feb4){return function(_0x4c9d1c){if(_0x4c9d1c){return _0x4c9d1c[_0x84cf('0x26')]()[_0x84cf('0x25')](function(){_0x29e9e1[_0x84cf('0x19')](0xcc)[_0x84cf('0x1a')]();});}};}function handleEntityNotFound(_0x1d220a,_0x44d4bf){return function(_0x3c7eda){if(!_0x3c7eda){_0x1d220a[_0x84cf('0x18')](0x194);}return _0x3c7eda;};}function handleError(_0x401aa4,_0x6797c0){_0x6797c0=_0x6797c0||0x1f4;return function(_0x5179c1){logger[_0x84cf('0x27')](_0x5179c1[_0x84cf('0x28')]);if(_0x5179c1[_0x84cf('0x29')]){delete _0x5179c1[_0x84cf('0x29')];}_0x401aa4['status'](_0x6797c0)[_0x84cf('0x2a')](_0x5179c1);};}exports['index']=function(_0x29455e,_0x4092fd){var _0x43b41b={},_0xc15298={},_0x51adcf={'count':0x0,'rows':[]};var _0x20de4b=_[_0x84cf('0x2b')](db[_0x84cf('0x2c')][_0x84cf('0x2d')],function(_0xb4fc5a){return{'name':_0xb4fc5a[_0x84cf('0x2e')],'type':_0xb4fc5a[_0x84cf('0x2f')][_0x84cf('0x30')]};});_0xc15298[_0x84cf('0x31')]=_['map'](_0x20de4b,'name');_0xc15298[_0x84cf('0x32')]=_[_0x84cf('0x33')](_0x29455e[_0x84cf('0x32')]);_0xc15298[_0x84cf('0x34')]=_[_0x84cf('0x35')](_0xc15298[_0x84cf('0x31')],_0xc15298[_0x84cf('0x32')]);_0x43b41b[_0x84cf('0x36')]=_['intersection'](_0xc15298[_0x84cf('0x31')],qs[_0x84cf('0x37')](_0x29455e['query'][_0x84cf('0x37')]));_0x43b41b['attributes']=_0x43b41b[_0x84cf('0x36')][_0x84cf('0x38')]?_0x43b41b[_0x84cf('0x36')]:_0xc15298[_0x84cf('0x31')];if(!_0x29455e[_0x84cf('0x32')]['hasOwnProperty'](_0x84cf('0x39'))){_0x43b41b['limit']=qs['limit'](_0x29455e[_0x84cf('0x32')][_0x84cf('0x3a')]);_0x43b41b['offset']=qs[_0x84cf('0x1c')](_0x29455e[_0x84cf('0x32')][_0x84cf('0x1c')]);}_0x43b41b[_0x84cf('0x3b')]=qs[_0x84cf('0x3c')](_0x29455e[_0x84cf('0x32')]['sort']);_0x43b41b[_0x84cf('0x3d')]=qs[_0x84cf('0x34')](_[_0x84cf('0x3e')](_0x29455e[_0x84cf('0x32')],_0xc15298[_0x84cf('0x34')]),_0x20de4b);if(_0x29455e[_0x84cf('0x32')]['filter']){_0x43b41b[_0x84cf('0x3d')]=_['merge'](_0x43b41b[_0x84cf('0x3d')],{'$or':_[_0x84cf('0x2b')](_0x20de4b,function(_0x3fa39a){if(_0x3fa39a[_0x84cf('0x2f')]!==_0x84cf('0x3f')){var _0x3897b0={};_0x3897b0[_0x3fa39a[_0x84cf('0x29')]]={'$like':'%'+_0x29455e[_0x84cf('0x32')][_0x84cf('0x40')]+'%'};return _0x3897b0;}})});}_0x43b41b=_['merge']({},_0x43b41b,_0x29455e[_0x84cf('0x41')]);var _0x516928={'where':_0x43b41b[_0x84cf('0x3d')]};return db[_0x84cf('0x2c')]['count'](_0x516928)[_0x84cf('0x25')](function(_0x531410){_0x51adcf[_0x84cf('0x1e')]=_0x531410;if(_0x29455e['query'][_0x84cf('0x42')]){_0x43b41b['include']=[{'all':!![]}];}return db[_0x84cf('0x2c')][_0x84cf('0x43')](_0x43b41b);})['then'](function(_0x847ce9){_0x51adcf[_0x84cf('0x44')]=_0x847ce9;return _0x51adcf;})[_0x84cf('0x25')](respondWithFilteredResult(_0x4092fd,_0x43b41b))['catch'](handleError(_0x4092fd,null));};exports[_0x84cf('0x45')]=function(_0x5f1b8e,_0x1c84e0){var _0x58b539={'raw':!![],'where':{'id':_0x5f1b8e['params']['id']}},_0x56b0e5={};_0x56b0e5[_0x84cf('0x31')]=_[_0x84cf('0x33')](db['WhatsappQueueReport'][_0x84cf('0x2d')]);_0x56b0e5['query']=_[_0x84cf('0x33')](_0x5f1b8e[_0x84cf('0x32')]);_0x56b0e5['filters']=_[_0x84cf('0x35')](_0x56b0e5['model'],_0x56b0e5[_0x84cf('0x32')]);_0x58b539['attributes']=_['intersection'](_0x56b0e5['model'],qs['fields'](_0x5f1b8e['query']['fields']));_0x58b539['attributes']=_0x58b539[_0x84cf('0x36')][_0x84cf('0x38')]?_0x58b539[_0x84cf('0x36')]:_0x56b0e5[_0x84cf('0x31')];if(_0x5f1b8e['query'][_0x84cf('0x42')]){_0x58b539['include']=[{'all':!![]}];}_0x58b539=_[_0x84cf('0x46')]({},_0x58b539,_0x5f1b8e[_0x84cf('0x41')]);return db[_0x84cf('0x2c')][_0x84cf('0x47')](_0x58b539)[_0x84cf('0x25')](handleEntityNotFound(_0x1c84e0,null))[_0x84cf('0x25')](respondWithResult(_0x1c84e0,null))['catch'](handleError(_0x1c84e0,null));};exports[_0x84cf('0x48')]=function(_0x2732bf,_0x4a4cf7){return db[_0x84cf('0x2c')][_0x84cf('0x48')](_0x2732bf[_0x84cf('0x49')],{})['then'](respondWithResult(_0x4a4cf7,0xc9))['catch'](handleError(_0x4a4cf7,null));};exports['update']=function(_0x1cf3f6,_0x104421){if(_0x1cf3f6[_0x84cf('0x49')]['id']){delete _0x1cf3f6[_0x84cf('0x49')]['id'];}return db[_0x84cf('0x2c')][_0x84cf('0x47')]({'where':{'id':_0x1cf3f6['params']['id']}})[_0x84cf('0x25')](handleEntityNotFound(_0x104421,null))['then'](saveUpdates(_0x1cf3f6[_0x84cf('0x49')],null))['then'](respondWithResult(_0x104421,null))['catch'](handleError(_0x104421,null));};exports[_0x84cf('0x26')]=function(_0xb1c3a8,_0x426df1){return db['WhatsappQueueReport']['find']({'where':{'id':_0xb1c3a8[_0x84cf('0x4a')]['id']}})[_0x84cf('0x25')](handleEntityNotFound(_0x426df1,null))[_0x84cf('0x25')](removeEntity(_0x426df1,null))[_0x84cf('0x4b')](handleError(_0x426df1,null));};exports[_0x84cf('0x4c')]=function(_0x4c2025,_0xcfe28f){return db[_0x84cf('0x2c')]['describe']()[_0x84cf('0x25')](respondWithResult(_0xcfe28f,null))['catch'](handleError(_0xcfe28f,null));};
\ No newline at end of file
+var _0xb62e=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','findAll','show','find','catch','create','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','type','key','model','query','keys','filters','attributes','fields'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb62e,0x1de));var _0xeb62=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xb62e[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0xeb62('0x0'));var rimraf=require(_0xeb62('0x1'));var zipdir=require(_0xeb62('0x2'));var jsonpatch=require(_0xeb62('0x3'));var rp=require('request-promise');var moment=require(_0xeb62('0x4'));var BPromise=require(_0xeb62('0x5'));var Mustache=require(_0xeb62('0x6'));var util=require(_0xeb62('0x7'));var path=require(_0xeb62('0x8'));var sox=require(_0xeb62('0x9'));var csv=require('to-csv');var ejs=require(_0xeb62('0xa'));var fs=require('fs');var fs_extra=require(_0xeb62('0xb'));var _=require(_0xeb62('0xc'));var squel=require('squel');var crypto=require(_0xeb62('0xd'));var jsforce=require(_0xeb62('0xe'));var deskjs=require(_0xeb62('0xf'));var toCsv=require(_0xeb62('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeb62('0x11'));var authService=require(_0xeb62('0x12'));var qs=require(_0xeb62('0x13'));var as=require(_0xeb62('0x14'));var hardwareService=require(_0xeb62('0x15'));var logger=require(_0xeb62('0x16'))(_0xeb62('0x17'));var utils=require(_0xeb62('0x18'));var config=require(_0xeb62('0x19'));var licenseUtil=require(_0xeb62('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x422daf,_0xcc11c4){_0xcc11c4=_0xcc11c4||0xcc;return function(_0x27671e){if(_0x27671e){return _0x422daf[_0xeb62('0x1b')](_0xcc11c4);}return _0x422daf['status'](_0xcc11c4)[_0xeb62('0x1c')]();};}function respondWithResult(_0x2fbad2,_0x23fb15){_0x23fb15=_0x23fb15||0xc8;return function(_0x4da178){if(_0x4da178){return _0x2fbad2[_0xeb62('0x1d')](_0x23fb15)[_0xeb62('0x1e')](_0x4da178);}};}function respondWithFilteredResult(_0x2fd4c7,_0x4ce9fa){return function(_0x1f6a1f){if(_0x1f6a1f){var _0x15b3e8=typeof _0x4ce9fa[_0xeb62('0x1f')]===_0xeb62('0x20')&&typeof _0x4ce9fa[_0xeb62('0x21')]===_0xeb62('0x20');var _0x1fb460=_0x1f6a1f[_0xeb62('0x22')];var _0x39b138=_0x15b3e8?0x0:_0x4ce9fa[_0xeb62('0x1f')];var _0x27efc8=_0x15b3e8?_0x1f6a1f[_0xeb62('0x22')]:_0x4ce9fa[_0xeb62('0x1f')]+_0x4ce9fa['limit'];var _0x38c5e4;if(_0x27efc8>=_0x1fb460){_0x27efc8=_0x1fb460;_0x38c5e4=0xc8;}else{_0x38c5e4=0xce;}_0x2fd4c7[_0xeb62('0x1d')](_0x38c5e4);return _0x2fd4c7[_0xeb62('0x23')](_0xeb62('0x24'),_0x39b138+'-'+_0x27efc8+'/'+_0x1fb460)[_0xeb62('0x1e')](_0x1f6a1f);}return null;};}function patchUpdates(_0x24cbf3){return function(_0x2ed96d){try{jsonpatch['apply'](_0x2ed96d,_0x24cbf3,!![]);}catch(_0x599d0b){return BPromise[_0xeb62('0x25')](_0x599d0b);}return _0x2ed96d[_0xeb62('0x26')]();};}function saveUpdates(_0x11ed9c,_0x13243f){return function(_0x122b15){if(_0x122b15){return _0x122b15['update'](_0x11ed9c)['then'](function(_0x4664ce){return _0x4664ce;});}return null;};}function removeEntity(_0x132861,_0x182781){return function(_0x395b70){if(_0x395b70){return _0x395b70['destroy']()['then'](function(){_0x132861[_0xeb62('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x448327,_0x4b0f46){return function(_0xfe3e16){if(!_0xfe3e16){_0x448327['sendStatus'](0x194);}return _0xfe3e16;};}function handleError(_0x3ac28c,_0x6bfbbc){_0x6bfbbc=_0x6bfbbc||0x1f4;return function(_0x46d1bb){logger['error'](_0x46d1bb[_0xeb62('0x27')]);if(_0x46d1bb[_0xeb62('0x28')]){delete _0x46d1bb[_0xeb62('0x28')];}_0x3ac28c[_0xeb62('0x1d')](_0x6bfbbc)[_0xeb62('0x29')](_0x46d1bb);};}exports[_0xeb62('0x2a')]=function(_0x511202,_0x192517){var _0x1616ee={},_0x57169a={},_0x157474={'count':0x0,'rows':[]};var _0x2b51b2=_[_0xeb62('0x2b')](db[_0xeb62('0x2c')][_0xeb62('0x2d')],function(_0x5195bf){return{'name':_0x5195bf['fieldName'],'type':_0x5195bf[_0xeb62('0x2e')][_0xeb62('0x2f')]};});_0x57169a[_0xeb62('0x30')]=_[_0xeb62('0x2b')](_0x2b51b2,_0xeb62('0x28'));_0x57169a[_0xeb62('0x31')]=_[_0xeb62('0x32')](_0x511202['query']);_0x57169a[_0xeb62('0x33')]=_['intersection'](_0x57169a['model'],_0x57169a[_0xeb62('0x31')]);_0x1616ee[_0xeb62('0x34')]=_['intersection'](_0x57169a[_0xeb62('0x30')],qs['fields'](_0x511202[_0xeb62('0x31')][_0xeb62('0x35')]));_0x1616ee['attributes']=_0x1616ee[_0xeb62('0x34')][_0xeb62('0x36')]?_0x1616ee['attributes']:_0x57169a[_0xeb62('0x30')];if(!_0x511202[_0xeb62('0x31')][_0xeb62('0x37')](_0xeb62('0x38'))){_0x1616ee['limit']=qs[_0xeb62('0x21')](_0x511202[_0xeb62('0x31')]['limit']);_0x1616ee['offset']=qs[_0xeb62('0x1f')](_0x511202[_0xeb62('0x31')]['offset']);}_0x1616ee[_0xeb62('0x39')]=qs[_0xeb62('0x3a')](_0x511202[_0xeb62('0x31')][_0xeb62('0x3a')]);_0x1616ee[_0xeb62('0x3b')]=qs[_0xeb62('0x33')](_[_0xeb62('0x3c')](_0x511202['query'],_0x57169a['filters']),_0x2b51b2);if(_0x511202[_0xeb62('0x31')][_0xeb62('0x3d')]){_0x1616ee[_0xeb62('0x3b')]=_[_0xeb62('0x3e')](_0x1616ee['where'],{'$or':_[_0xeb62('0x2b')](_0x2b51b2,function(_0x510c7d){if(_0x510c7d[_0xeb62('0x2e')]!==_0xeb62('0x3f')){var _0x2dac2f={};_0x2dac2f[_0x510c7d[_0xeb62('0x28')]]={'$like':'%'+_0x511202[_0xeb62('0x31')][_0xeb62('0x3d')]+'%'};return _0x2dac2f;}})});}_0x1616ee=_[_0xeb62('0x3e')]({},_0x1616ee,_0x511202[_0xeb62('0x40')]);var _0x5e8ef8={'where':_0x1616ee[_0xeb62('0x3b')]};return db[_0xeb62('0x2c')][_0xeb62('0x22')](_0x5e8ef8)[_0xeb62('0x41')](function(_0x5dd0e3){_0x157474['count']=_0x5dd0e3;if(_0x511202[_0xeb62('0x31')][_0xeb62('0x42')]){_0x1616ee['include']=[{'all':!![]}];}return db[_0xeb62('0x2c')][_0xeb62('0x43')](_0x1616ee);})['then'](function(_0x25e9f0){_0x157474['rows']=_0x25e9f0;return _0x157474;})[_0xeb62('0x41')](respondWithFilteredResult(_0x192517,_0x1616ee))['catch'](handleError(_0x192517,null));};exports[_0xeb62('0x44')]=function(_0x5dde1d,_0x2bf77f){var _0x609b2d={'raw':!![],'where':{'id':_0x5dde1d['params']['id']}},_0x317f50={};_0x317f50['model']=_[_0xeb62('0x32')](db[_0xeb62('0x2c')][_0xeb62('0x2d')]);_0x317f50[_0xeb62('0x31')]=_[_0xeb62('0x32')](_0x5dde1d['query']);_0x317f50[_0xeb62('0x33')]=_['intersection'](_0x317f50[_0xeb62('0x30')],_0x317f50['query']);_0x609b2d[_0xeb62('0x34')]=_['intersection'](_0x317f50[_0xeb62('0x30')],qs['fields'](_0x5dde1d[_0xeb62('0x31')][_0xeb62('0x35')]));_0x609b2d[_0xeb62('0x34')]=_0x609b2d[_0xeb62('0x34')][_0xeb62('0x36')]?_0x609b2d[_0xeb62('0x34')]:_0x317f50['model'];if(_0x5dde1d[_0xeb62('0x31')][_0xeb62('0x42')]){_0x609b2d['include']=[{'all':!![]}];}_0x609b2d=_['merge']({},_0x609b2d,_0x5dde1d['options']);return db['WhatsappQueueReport'][_0xeb62('0x45')](_0x609b2d)[_0xeb62('0x41')](handleEntityNotFound(_0x2bf77f,null))['then'](respondWithResult(_0x2bf77f,null))[_0xeb62('0x46')](handleError(_0x2bf77f,null));};exports[_0xeb62('0x47')]=function(_0x412e93,_0x16e262){return db[_0xeb62('0x2c')]['create'](_0x412e93[_0xeb62('0x48')],{})['then'](respondWithResult(_0x16e262,0xc9))[_0xeb62('0x46')](handleError(_0x16e262,null));};exports[_0xeb62('0x49')]=function(_0x7fb53f,_0x18c40d){if(_0x7fb53f[_0xeb62('0x48')]['id']){delete _0x7fb53f[_0xeb62('0x48')]['id'];}return db[_0xeb62('0x2c')][_0xeb62('0x45')]({'where':{'id':_0x7fb53f[_0xeb62('0x4a')]['id']}})[_0xeb62('0x41')](handleEntityNotFound(_0x18c40d,null))[_0xeb62('0x41')](saveUpdates(_0x7fb53f[_0xeb62('0x48')],null))['then'](respondWithResult(_0x18c40d,null))[_0xeb62('0x46')](handleError(_0x18c40d,null));};exports['destroy']=function(_0x4edd8c,_0x2dcb2d){return db[_0xeb62('0x2c')]['find']({'where':{'id':_0x4edd8c[_0xeb62('0x4a')]['id']}})[_0xeb62('0x41')](handleEntityNotFound(_0x2dcb2d,null))['then'](removeEntity(_0x2dcb2d,null))[_0xeb62('0x46')](handleError(_0x2dcb2d,null));};exports[_0xeb62('0x4b')]=function(_0x20b73b,_0x60617){return db[_0xeb62('0x2c')][_0xeb62('0x4b')]()[_0xeb62('0x41')](respondWithResult(_0x60617,null))[_0xeb62('0x46')](handleError(_0x60617,null));};
\ No newline at end of file
index da3297a..a595493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cc6=['util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','uniqueid'];(function(_0x3bb8e6,_0x1943e3){var _0x5a6bb0=function(_0x3f27dc){while(--_0x3f27dc){_0x3bb8e6['push'](_0x3bb8e6['shift']());}};_0x5a6bb0(++_0x1943e3);}(_0x0cc6,0x6e));var _0x60cc=function(_0x3cc6b4,_0x58b1aa){_0x3cc6b4=_0x3cc6b4-0x0;var _0x1c07b8=_0x0cc6[_0x3cc6b4];return _0x1c07b8;};'use strict';var _=require('lodash');var util=require(_0x60cc('0x0'));var logger=require(_0x60cc('0x1'))(_0x60cc('0x2'));var moment=require('moment');var BPromise=require(_0x60cc('0x3'));var rp=require(_0x60cc('0x4'));var fs=require('fs');var path=require(_0x60cc('0x5'));var rimraf=require('rimraf');var config=require(_0x60cc('0x6'));var attributes=require(_0x60cc('0x7'));module[_0x60cc('0x8')]=function(_0x51fd8e,_0x7ffe7e){return _0x51fd8e['define'](_0x60cc('0x9'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x60cc('0xa'),'fields':[_0x60cc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d01=['uniqueid','lodash','util','api','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','report_whatsapp_queue'];(function(_0x70d312,_0xd0dd5f){var _0x34a2f1=function(_0x31d6cf){while(--_0x31d6cf){_0x70d312['push'](_0x70d312['shift']());}};_0x34a2f1(++_0xd0dd5f);}(_0x4d01,0xc7));var _0x14d0=function(_0x13e724,_0x296739){_0x13e724=_0x13e724-0x0;var _0x334a44=_0x4d01[_0x13e724];return _0x334a44;};'use strict';var _=require(_0x14d0('0x0'));var util=require(_0x14d0('0x1'));var logger=require('../../config/logger')(_0x14d0('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x14d0('0x3'));var fs=require('fs');var path=require(_0x14d0('0x4'));var rimraf=require('rimraf');var config=require(_0x14d0('0x5'));var attributes=require(_0x14d0('0x6'));module['exports']=function(_0x573b68,_0x304d56){return _0x573b68['define']('WhatsappQueueReport',attributes,{'tableName':_0x14d0('0x7'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x14d0('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index b8e3ae2..7175dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a3=['message','info','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','debug','catch','UpdateWhatsappQueueReport','update','raw','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','then','WhatsappQueueReport,\x20%s,\x20%s','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x59d843,_0x193703){var _0x515228=function(_0x1179dd){while(--_0x1179dd){_0x59d843['push'](_0x59d843['shift']());}};_0x515228(++_0x193703);}(_0x61a3,0x1ef));var _0x361a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x61a3[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x361a('0x0'));var util=require(_0x361a('0x1'));var moment=require(_0x361a('0x2'));var BPromise=require('bluebird');var rs=require(_0x361a('0x3'));var fs=require('fs');var Redis=require(_0x361a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x361a('0x5'));var logger=require(_0x361a('0x6'))(_0x361a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x361a('0x8')][_0x361a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5cc8a2,_0x13f43d,_0x408335){return new BPromise(function(_0xbb1f1a,_0x463ee2){return client['request'](_0x5cc8a2,_0x408335)[_0x361a('0xa')](function(_0x574567){logger['info'](_0x361a('0xb'),_0x13f43d,'request\x20sent');logger['debug'](_0x361a('0xc'),_0x13f43d,_0x361a('0xd'),JSON[_0x361a('0xe')](_0x574567));if(_0x574567[_0x361a('0xf')]){if(_0x574567[_0x361a('0xf')][_0x361a('0x10')]===0x1f4){logger['error'](_0x361a('0xb'),_0x13f43d,_0x574567[_0x361a('0xf')][_0x361a('0x11')]);return _0x463ee2(_0x574567[_0x361a('0xf')][_0x361a('0x11')]);}logger[_0x361a('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x13f43d,_0x574567[_0x361a('0xf')][_0x361a('0x11')]);return _0xbb1f1a(_0x574567['error'][_0x361a('0x11')]);}else{logger[_0x361a('0x12')](_0x361a('0xb'),_0x13f43d,_0x361a('0xd'));_0xbb1f1a(_0x574567['result'][_0x361a('0x11')]);}})['catch'](function(_0x291a5b){logger['error'](_0x361a('0xb'),_0x13f43d,_0x291a5b);_0x463ee2(_0x291a5b);});});}exports[_0x361a('0x13')]=function(_0x2a4129){var _0x3cd9a7=this;return new Promise(function(_0x112060,_0xb987c3){return db[_0x361a('0x14')][_0x361a('0x15')](_0x2a4129[_0x361a('0x16')],{'raw':_0x2a4129[_0x361a('0x17')]?_0x2a4129[_0x361a('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x361a('0xa')](function(_0x114032){logger[_0x361a('0x12')](_0x361a('0x13'),_0x2a4129);logger[_0x361a('0x18')](_0x361a('0x13'),_0x2a4129,JSON[_0x361a('0xe')](_0x114032));_0x112060(_0x114032);})[_0x361a('0x19')](function(_0x8def74){logger[_0x361a('0xf')](_0x361a('0x13'),_0x8def74['message'],_0x2a4129);_0xb987c3(_0x3cd9a7[_0x361a('0xf')](0x1f4,_0x8def74[_0x361a('0x11')]));});});};exports[_0x361a('0x1a')]=function(_0x5749f3){var _0x19c0db=this;return new Promise(function(_0x455acf,_0x247261){return db[_0x361a('0x14')][_0x361a('0x1b')](_0x5749f3[_0x361a('0x16')],{'raw':_0x5749f3['options']?_0x5749f3[_0x361a('0x17')][_0x361a('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5749f3['options']?_0x5749f3[_0x361a('0x17')][_0x361a('0x1d')]||null:null,'attributes':_0x5749f3['options']?_0x5749f3[_0x361a('0x17')][_0x361a('0x1e')]||null:null,'limit':_0x5749f3[_0x361a('0x17')]?_0x5749f3[_0x361a('0x17')][_0x361a('0x1f')]||null:null})[_0x361a('0xa')](function(_0x55f378){logger[_0x361a('0x12')](_0x361a('0x1a'),_0x5749f3);logger[_0x361a('0x18')](_0x361a('0x1a'),_0x5749f3,JSON['stringify'](_0x55f378));_0x455acf(_0x55f378);})[_0x361a('0x19')](function(_0x8e2b40){logger['error'](_0x361a('0x1a'),_0x8e2b40[_0x361a('0x11')],_0x5749f3);_0x247261(_0x19c0db['error'](0x1f4,_0x8e2b40[_0x361a('0x11')]));});});};
\ No newline at end of file
+var _0x61fc=['stringify','UpdateWhatsappQueueReport','update','where','attributes','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw'];(function(_0x485565,_0x1b05b7){var _0x390025=function(_0x3cf12c){while(--_0x3cf12c){_0x485565['push'](_0x485565['shift']());}};_0x390025(++_0x1b05b7);}(_0x61fc,0x1ef));var _0xc61f=function(_0x17044c,_0x423f1d){_0x17044c=_0x17044c-0x0;var _0x415ccb=_0x61fc[_0x17044c];return _0x415ccb;};'use strict';var _=require(_0xc61f('0x0'));var util=require(_0xc61f('0x1'));var moment=require('moment');var BPromise=require(_0xc61f('0x2'));var rs=require(_0xc61f('0x3'));var fs=require('fs');var Redis=require(_0xc61f('0x4'));var db=require(_0xc61f('0x5'))['db'];var utils=require(_0xc61f('0x6'));var logger=require(_0xc61f('0x7'))(_0xc61f('0x8'));var config=require(_0xc61f('0x9'));var jayson=require(_0xc61f('0xa'));var client=jayson[_0xc61f('0xb')][_0xc61f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x29e183,_0x3daa5e,_0x49e353){return new BPromise(function(_0x47c88f,_0x5a66aa){return client['request'](_0x29e183,_0x49e353)[_0xc61f('0xd')](function(_0x1803be){logger[_0xc61f('0xe')](_0xc61f('0xf'),_0x3daa5e,_0xc61f('0x10'));logger[_0xc61f('0x11')](_0xc61f('0x12'),_0x3daa5e,_0xc61f('0x10'),JSON['stringify'](_0x1803be));if(_0x1803be[_0xc61f('0x13')]){if(_0x1803be[_0xc61f('0x13')][_0xc61f('0x14')]===0x1f4){logger[_0xc61f('0x13')](_0xc61f('0xf'),_0x3daa5e,_0x1803be[_0xc61f('0x13')]['message']);return _0x5a66aa(_0x1803be['error'][_0xc61f('0x15')]);}logger[_0xc61f('0x13')](_0xc61f('0xf'),_0x3daa5e,_0x1803be[_0xc61f('0x13')]['message']);return _0x47c88f(_0x1803be[_0xc61f('0x13')][_0xc61f('0x15')]);}else{logger[_0xc61f('0xe')](_0xc61f('0xf'),_0x3daa5e,'request\x20sent');_0x47c88f(_0x1803be[_0xc61f('0x16')][_0xc61f('0x15')]);}})[_0xc61f('0x17')](function(_0x1681d4){logger['error'](_0xc61f('0xf'),_0x3daa5e,_0x1681d4);_0x5a66aa(_0x1681d4);});});}exports[_0xc61f('0x18')]=function(_0x79ef7a){var _0x2799d0=this;return new Promise(function(_0x3a6824,_0x2439eb){return db[_0xc61f('0x19')][_0xc61f('0x1a')](_0x79ef7a[_0xc61f('0x1b')],{'raw':_0x79ef7a[_0xc61f('0x1c')]?_0x79ef7a[_0xc61f('0x1c')][_0xc61f('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x43123c){logger['info'](_0xc61f('0x18'),_0x79ef7a);logger['debug'](_0xc61f('0x18'),_0x79ef7a,JSON[_0xc61f('0x1e')](_0x43123c));_0x3a6824(_0x43123c);})[_0xc61f('0x17')](function(_0x59f573){logger[_0xc61f('0x13')](_0xc61f('0x18'),_0x59f573['message'],_0x79ef7a);_0x2439eb(_0x2799d0['error'](0x1f4,_0x59f573[_0xc61f('0x15')]));});});};exports[_0xc61f('0x1f')]=function(_0x4de078){var _0x24f395=this;return new Promise(function(_0x58643e,_0x162326){return db[_0xc61f('0x19')][_0xc61f('0x20')](_0x4de078[_0xc61f('0x1b')],{'raw':_0x4de078['options']?_0x4de078[_0xc61f('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4de078[_0xc61f('0x1c')]?_0x4de078[_0xc61f('0x1c')][_0xc61f('0x21')]||null:null,'attributes':_0x4de078[_0xc61f('0x1c')]?_0x4de078['options'][_0xc61f('0x22')]||null:null,'limit':_0x4de078[_0xc61f('0x1c')]?_0x4de078[_0xc61f('0x1c')]['limit']||null:null})[_0xc61f('0xd')](function(_0x11ef2f){logger[_0xc61f('0xe')](_0xc61f('0x1f'),_0x4de078);logger[_0xc61f('0x11')](_0xc61f('0x1f'),_0x4de078,JSON[_0xc61f('0x1e')](_0x11ef2f));_0x58643e(_0x11ef2f);})[_0xc61f('0x17')](function(_0x19b38a){logger[_0xc61f('0x13')](_0xc61f('0x1f'),_0x19b38a[_0xc61f('0x15')],_0x4de078);_0x162326(_0x24f395['error'](0x1f4,_0x19b38a[_0xc61f('0x15')]));});});};
\ No newline at end of file
index 5d954fc..c50cb8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f0b=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','post','create','put','update','delete'];(function(_0x3b0cf2,_0x12c795){var _0xa15ba6=function(_0x7caec8){while(--_0x7caec8){_0x3b0cf2['push'](_0x3b0cf2['shift']());}};_0xa15ba6(++_0x12c795);}(_0x8f0b,0xb6));var _0xb8f0=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x8f0b[_0x1e3c16];return _0x47a0c9;};'use strict';var multer=require(_0xb8f0('0x0'));var util=require('util');var path=require(_0xb8f0('0x1'));var timeout=require(_0xb8f0('0x2'));var express=require(_0xb8f0('0x3'));var router=express[_0xb8f0('0x4')]();var fs_extra=require(_0xb8f0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb8f0('0x6'));var config=require(_0xb8f0('0x7'));var controller=require('./whatsappTransferReport.controller');router[_0xb8f0('0x8')]('/',auth[_0xb8f0('0x9')](),controller[_0xb8f0('0xa')]);router[_0xb8f0('0x8')]('/describe',auth[_0xb8f0('0x9')](),controller[_0xb8f0('0xb')]);router[_0xb8f0('0x8')](_0xb8f0('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xb8f0('0xd')]('/',auth[_0xb8f0('0x9')](),controller[_0xb8f0('0xe')]);router[_0xb8f0('0xf')](_0xb8f0('0xc'),auth[_0xb8f0('0x9')](),controller[_0xb8f0('0x10')]);router[_0xb8f0('0x11')](_0xb8f0('0xc'),auth['isAuthenticated'](),controller[_0xb8f0('0x12')]);module[_0xb8f0('0x13')]=router;
\ No newline at end of file
+var _0x02e5=['create','put','update','destroy','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./whatsappTransferReport.controller','get','/describe','isAuthenticated','describe','/:id','show'];(function(_0x1e6f21,_0x3382cf){var _0xeca4a6=function(_0x987ac0){while(--_0x987ac0){_0x1e6f21['push'](_0x1e6f21['shift']());}};_0xeca4a6(++_0x3382cf);}(_0x02e5,0xb8));var _0x502e=function(_0x180c48,_0x281ef0){_0x180c48=_0x180c48-0x0;var _0x5f4692=_0x02e5[_0x180c48];return _0x5f4692;};'use strict';var multer=require(_0x502e('0x0'));var util=require(_0x502e('0x1'));var path=require(_0x502e('0x2'));var timeout=require(_0x502e('0x3'));var express=require(_0x502e('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x502e('0x5'));var interaction=require(_0x502e('0x6'));var config=require('../../config/environment');var controller=require(_0x502e('0x7'));router[_0x502e('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x502e('0x8')](_0x502e('0x9'),auth[_0x502e('0xa')](),controller[_0x502e('0xb')]);router[_0x502e('0x8')](_0x502e('0xc'),auth[_0x502e('0xa')](),controller[_0x502e('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x502e('0xe')]);router[_0x502e('0xf')](_0x502e('0xc'),auth[_0x502e('0xa')](),controller[_0x502e('0x10')]);router['delete'](_0x502e('0xc'),auth[_0x502e('0xa')](),controller[_0x502e('0x11')]);module['exports']=router;
\ No newline at end of file
index 77f3478..11344b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37e9=['ENUM','account','agent','queue','sequelize','exports','STRING'];(function(_0x26c034,_0x2eb977){var _0x3b3fa1=function(_0x2eea6a){while(--_0x2eea6a){_0x26c034['push'](_0x26c034['shift']());}};_0x3b3fa1(++_0x2eb977);}(_0x37e9,0x1e7));var _0x937e=function(_0x5b6ec9,_0x54e1c2){_0x5b6ec9=_0x5b6ec9-0x0;var _0x533b2d=_0x37e9[_0x5b6ec9];return _0x533b2d;};'use strict';var Sequelize=require(_0x937e('0x0'));module[_0x937e('0x1')]={'uniqueid':{'type':Sequelize[_0x937e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x937e('0x3')](_0x937e('0x4'),_0x937e('0x5'),_0x937e('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x419f=['account','agent','DATE','sequelize','exports','STRING','ENUM'];(function(_0x3dc1dc,_0x6e11bc){var _0x7fb17d=function(_0x3c3788){while(--_0x3c3788){_0x3dc1dc['push'](_0x3dc1dc['shift']());}};_0x7fb17d(++_0x6e11bc);}(_0x419f,0x176));var _0xf419=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x419f[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0xf419('0x0'));module[_0xf419('0x1')]={'uniqueid':{'type':Sequelize[_0xf419('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xf419('0x3')](_0xf419('0x4'),_0xf419('0x5'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xf419('0x6')]}};
\ No newline at end of file
index 7e52dd4..0909203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc36=['send','index','map','WhatsappTransferReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','reject','update','then','destroy','error','name'];(function(_0x114fe1,_0xa5423e){var _0x3b07b0=function(_0x4e6f4e){while(--_0x4e6f4e){_0x114fe1['push'](_0x114fe1['shift']());}};_0x3b07b0(++_0xa5423e);}(_0xbc36,0x169));var _0x6bc3=function(_0x5d1e04,_0x558633){_0x5d1e04=_0x5d1e04-0x0;var _0x2946a6=_0xbc36[_0x5d1e04];return _0x2946a6;};'use strict';var emlformat=require(_0x6bc3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6bc3('0x1'));var jsonpatch=require(_0x6bc3('0x2'));var rp=require(_0x6bc3('0x3'));var moment=require(_0x6bc3('0x4'));var BPromise=require(_0x6bc3('0x5'));var Mustache=require(_0x6bc3('0x6'));var util=require(_0x6bc3('0x7'));var path=require(_0x6bc3('0x8'));var sox=require(_0x6bc3('0x9'));var csv=require('to-csv');var ejs=require(_0x6bc3('0xa'));var fs=require('fs');var fs_extra=require(_0x6bc3('0xb'));var _=require('lodash');var squel=require(_0x6bc3('0xc'));var crypto=require(_0x6bc3('0xd'));var jsforce=require(_0x6bc3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6bc3('0xf'));var querystring=require(_0x6bc3('0x10'));var Papa=require(_0x6bc3('0x11'));var Redis=require(_0x6bc3('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6bc3('0x13'));var as=require(_0x6bc3('0x14'));var hardwareService=require(_0x6bc3('0x15'));var logger=require(_0x6bc3('0x16'))(_0x6bc3('0x17'));var utils=require(_0x6bc3('0x18'));var config=require(_0x6bc3('0x19'));var licenseUtil=require(_0x6bc3('0x1a'));var db=require(_0x6bc3('0x1b'))['db'];function respondWithStatusCode(_0x5a5173,_0xdbec2a){_0xdbec2a=_0xdbec2a||0xcc;return function(_0x5803c0){if(_0x5803c0){return _0x5a5173[_0x6bc3('0x1c')](_0xdbec2a);}return _0x5a5173['status'](_0xdbec2a)[_0x6bc3('0x1d')]();};}function respondWithResult(_0x422098,_0x5bca95){_0x5bca95=_0x5bca95||0xc8;return function(_0x2869d2){if(_0x2869d2){return _0x422098['status'](_0x5bca95)['json'](_0x2869d2);}};}function respondWithFilteredResult(_0x174bc8,_0x1f657b){return function(_0x3513d4){if(_0x3513d4){var _0xf57a10=typeof _0x1f657b[_0x6bc3('0x1e')]===_0x6bc3('0x1f')&&typeof _0x1f657b[_0x6bc3('0x20')]==='undefined';var _0x72e92c=_0x3513d4[_0x6bc3('0x21')];var _0x4c1894=_0xf57a10?0x0:_0x1f657b[_0x6bc3('0x1e')];var _0x1d27db=_0xf57a10?_0x3513d4[_0x6bc3('0x21')]:_0x1f657b[_0x6bc3('0x1e')]+_0x1f657b[_0x6bc3('0x20')];var _0x1a2a4a;if(_0x1d27db>=_0x72e92c){_0x1d27db=_0x72e92c;_0x1a2a4a=0xc8;}else{_0x1a2a4a=0xce;}_0x174bc8[_0x6bc3('0x22')](_0x1a2a4a);return _0x174bc8[_0x6bc3('0x23')](_0x6bc3('0x24'),_0x4c1894+'-'+_0x1d27db+'/'+_0x72e92c)[_0x6bc3('0x25')](_0x3513d4);}return null;};}function patchUpdates(_0x36ab2e){return function(_0x3f8b2d){try{jsonpatch['apply'](_0x3f8b2d,_0x36ab2e,!![]);}catch(_0x22652a){return BPromise[_0x6bc3('0x26')](_0x22652a);}return _0x3f8b2d['save']();};}function saveUpdates(_0x6ea9c7,_0x588b49){return function(_0x4210f3){if(_0x4210f3){return _0x4210f3[_0x6bc3('0x27')](_0x6ea9c7)[_0x6bc3('0x28')](function(_0x45995c){return _0x45995c;});}return null;};}function removeEntity(_0x3c748f,_0x453ada){return function(_0xc2df4){if(_0xc2df4){return _0xc2df4[_0x6bc3('0x29')]()[_0x6bc3('0x28')](function(){_0x3c748f[_0x6bc3('0x22')](0xcc)[_0x6bc3('0x1d')]();});}};}function handleEntityNotFound(_0x1e9a9c,_0x2f6a65){return function(_0x4bade2){if(!_0x4bade2){_0x1e9a9c[_0x6bc3('0x1c')](0x194);}return _0x4bade2;};}function handleError(_0x1ebd0b,_0x42f636){_0x42f636=_0x42f636||0x1f4;return function(_0x1ab236){logger[_0x6bc3('0x2a')](_0x1ab236['stack']);if(_0x1ab236['name']){delete _0x1ab236[_0x6bc3('0x2b')];}_0x1ebd0b['status'](_0x42f636)[_0x6bc3('0x2c')](_0x1ab236);};}exports[_0x6bc3('0x2d')]=function(_0x3dca98,_0x429d17){var _0x55c6aa={},_0x66fb54={},_0x62ba7b={'count':0x0,'rows':[]};var _0x14e998=_[_0x6bc3('0x2e')](db[_0x6bc3('0x2f')]['rawAttributes'],function(_0x416a7a){return{'name':_0x416a7a[_0x6bc3('0x30')],'type':_0x416a7a[_0x6bc3('0x31')][_0x6bc3('0x32')]};});_0x66fb54[_0x6bc3('0x33')]=_['map'](_0x14e998,_0x6bc3('0x2b'));_0x66fb54[_0x6bc3('0x34')]=_[_0x6bc3('0x35')](_0x3dca98[_0x6bc3('0x34')]);_0x66fb54[_0x6bc3('0x36')]=_[_0x6bc3('0x37')](_0x66fb54[_0x6bc3('0x33')],_0x66fb54[_0x6bc3('0x34')]);_0x55c6aa['attributes']=_[_0x6bc3('0x37')](_0x66fb54['model'],qs['fields'](_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x38')]));_0x55c6aa['attributes']=_0x55c6aa[_0x6bc3('0x39')][_0x6bc3('0x3a')]?_0x55c6aa[_0x6bc3('0x39')]:_0x66fb54[_0x6bc3('0x33')];if(!_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x3b')](_0x6bc3('0x3c'))){_0x55c6aa[_0x6bc3('0x20')]=qs[_0x6bc3('0x20')](_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x20')]);_0x55c6aa[_0x6bc3('0x1e')]=qs[_0x6bc3('0x1e')](_0x3dca98[_0x6bc3('0x34')]['offset']);}_0x55c6aa[_0x6bc3('0x3d')]=qs[_0x6bc3('0x3e')](_0x3dca98['query'][_0x6bc3('0x3e')]);_0x55c6aa['where']=qs[_0x6bc3('0x36')](_[_0x6bc3('0x3f')](_0x3dca98[_0x6bc3('0x34')],_0x66fb54[_0x6bc3('0x36')]),_0x14e998);if(_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x40')]){_0x55c6aa[_0x6bc3('0x41')]=_[_0x6bc3('0x42')](_0x55c6aa[_0x6bc3('0x41')],{'$or':_[_0x6bc3('0x2e')](_0x14e998,function(_0x3768d2){if(_0x3768d2['type']!==_0x6bc3('0x43')){var _0x13fa06={};_0x13fa06[_0x3768d2['name']]={'$like':'%'+_0x3dca98['query'][_0x6bc3('0x40')]+'%'};return _0x13fa06;}})});}_0x55c6aa=_[_0x6bc3('0x42')]({},_0x55c6aa,_0x3dca98[_0x6bc3('0x44')]);var _0x4b4fd9={'where':_0x55c6aa[_0x6bc3('0x41')]};return db[_0x6bc3('0x2f')]['count'](_0x4b4fd9)[_0x6bc3('0x28')](function(_0x5b2e5b){_0x62ba7b['count']=_0x5b2e5b;if(_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x45')]){_0x55c6aa[_0x6bc3('0x46')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0x6bc3('0x47')](_0x55c6aa);})['then'](function(_0x3766af){_0x62ba7b[_0x6bc3('0x48')]=_0x3766af;return _0x62ba7b;})[_0x6bc3('0x28')](respondWithFilteredResult(_0x429d17,_0x55c6aa))[_0x6bc3('0x49')](handleError(_0x429d17,null));};exports[_0x6bc3('0x4a')]=function(_0x27c083,_0x480a92){var _0x21c972={'raw':!![],'where':{'id':_0x27c083[_0x6bc3('0x4b')]['id']}},_0x4aa3f5={};_0x4aa3f5[_0x6bc3('0x33')]=_['keys'](db[_0x6bc3('0x2f')][_0x6bc3('0x4c')]);_0x4aa3f5['query']=_[_0x6bc3('0x35')](_0x27c083[_0x6bc3('0x34')]);_0x4aa3f5[_0x6bc3('0x36')]=_[_0x6bc3('0x37')](_0x4aa3f5[_0x6bc3('0x33')],_0x4aa3f5[_0x6bc3('0x34')]);_0x21c972['attributes']=_['intersection'](_0x4aa3f5['model'],qs[_0x6bc3('0x38')](_0x27c083[_0x6bc3('0x34')][_0x6bc3('0x38')]));_0x21c972[_0x6bc3('0x39')]=_0x21c972[_0x6bc3('0x39')]['length']?_0x21c972[_0x6bc3('0x39')]:_0x4aa3f5[_0x6bc3('0x33')];if(_0x27c083[_0x6bc3('0x34')][_0x6bc3('0x45')]){_0x21c972['include']=[{'all':!![]}];}_0x21c972=_[_0x6bc3('0x42')]({},_0x21c972,_0x27c083[_0x6bc3('0x44')]);return db['WhatsappTransferReport'][_0x6bc3('0x4d')](_0x21c972)[_0x6bc3('0x28')](handleEntityNotFound(_0x480a92,null))['then'](respondWithResult(_0x480a92,null))[_0x6bc3('0x49')](handleError(_0x480a92,null));};exports[_0x6bc3('0x4e')]=function(_0x4dbf22,_0x126cfe){return db[_0x6bc3('0x2f')][_0x6bc3('0x4e')](_0x4dbf22[_0x6bc3('0x4f')],{})['then'](respondWithResult(_0x126cfe,0xc9))[_0x6bc3('0x49')](handleError(_0x126cfe,null));};exports[_0x6bc3('0x27')]=function(_0x31383c,_0x15c969){if(_0x31383c[_0x6bc3('0x4f')]['id']){delete _0x31383c['body']['id'];}return db[_0x6bc3('0x2f')][_0x6bc3('0x4d')]({'where':{'id':_0x31383c['params']['id']}})[_0x6bc3('0x28')](handleEntityNotFound(_0x15c969,null))[_0x6bc3('0x28')](saveUpdates(_0x31383c['body'],null))['then'](respondWithResult(_0x15c969,null))[_0x6bc3('0x49')](handleError(_0x15c969,null));};exports['destroy']=function(_0x35c44d,_0x4f4461){return db['WhatsappTransferReport'][_0x6bc3('0x4d')]({'where':{'id':_0x35c44d[_0x6bc3('0x4b')]['id']}})[_0x6bc3('0x28')](handleEntityNotFound(_0x4f4461,null))[_0x6bc3('0x28')](removeEntity(_0x4f4461,null))[_0x6bc3('0x49')](handleError(_0x4f4461,null));};exports[_0x6bc3('0x50')]=function(_0x3eef48,_0x43569e){return db[_0x6bc3('0x2f')][_0x6bc3('0x50')]()[_0x6bc3('0x28')](respondWithResult(_0x43569e,null))['catch'](handleError(_0x43569e,null));};
\ No newline at end of file
+var _0x3940=['merge','VIRTUAL','options','includeAll','include','findAll','rows','rawAttributes','find','catch','create','body','params','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','WhatsappTransferReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter'];(function(_0x52768e,_0x49005a){var _0x2511eb=function(_0x41e4de){while(--_0x41e4de){_0x52768e['push'](_0x52768e['shift']());}};_0x2511eb(++_0x49005a);}(_0x3940,0xa6));var _0x0394=function(_0x29fa6f,_0x5310a4){_0x29fa6f=_0x29fa6f-0x0;var _0x302fa9=_0x3940[_0x29fa6f];return _0x302fa9;};'use strict';var emlformat=require(_0x0394('0x0'));var rimraf=require(_0x0394('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0394('0x2'));var rp=require('request-promise');var moment=require(_0x0394('0x3'));var BPromise=require(_0x0394('0x4'));var Mustache=require('mustache');var util=require(_0x0394('0x5'));var path=require('path');var sox=require(_0x0394('0x6'));var csv=require(_0x0394('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0394('0x8'));var _=require(_0x0394('0x9'));var squel=require('squel');var crypto=require(_0x0394('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x0394('0xb'));var toCsv=require(_0x0394('0x7'));var querystring=require(_0x0394('0xc'));var Papa=require(_0x0394('0xd'));var Redis=require(_0x0394('0xe'));var authService=require(_0x0394('0xf'));var qs=require(_0x0394('0x10'));var as=require(_0x0394('0x11'));var hardwareService=require(_0x0394('0x12'));var logger=require(_0x0394('0x13'))('api');var utils=require(_0x0394('0x14'));var config=require(_0x0394('0x15'));var licenseUtil=require(_0x0394('0x16'));var db=require(_0x0394('0x17'))['db'];function respondWithStatusCode(_0x56fe9a,_0x10e241){_0x10e241=_0x10e241||0xcc;return function(_0x7c3d40){if(_0x7c3d40){return _0x56fe9a[_0x0394('0x18')](_0x10e241);}return _0x56fe9a['status'](_0x10e241)[_0x0394('0x19')]();};}function respondWithResult(_0x53cc66,_0x461257){_0x461257=_0x461257||0xc8;return function(_0x2ec0b5){if(_0x2ec0b5){return _0x53cc66[_0x0394('0x1a')](_0x461257)[_0x0394('0x1b')](_0x2ec0b5);}};}function respondWithFilteredResult(_0x401ed0,_0x283f98){return function(_0x2d3caf){if(_0x2d3caf){var _0x512fb1=typeof _0x283f98[_0x0394('0x1c')]===_0x0394('0x1d')&&typeof _0x283f98[_0x0394('0x1e')]===_0x0394('0x1d');var _0x3d28d1=_0x2d3caf[_0x0394('0x1f')];var _0x208aa3=_0x512fb1?0x0:_0x283f98['offset'];var _0x51c1b2=_0x512fb1?_0x2d3caf[_0x0394('0x1f')]:_0x283f98['offset']+_0x283f98[_0x0394('0x1e')];var _0x2b0342;if(_0x51c1b2>=_0x3d28d1){_0x51c1b2=_0x3d28d1;_0x2b0342=0xc8;}else{_0x2b0342=0xce;}_0x401ed0[_0x0394('0x1a')](_0x2b0342);return _0x401ed0[_0x0394('0x20')](_0x0394('0x21'),_0x208aa3+'-'+_0x51c1b2+'/'+_0x3d28d1)[_0x0394('0x1b')](_0x2d3caf);}return null;};}function patchUpdates(_0x5d805c){return function(_0x3039f3){try{jsonpatch[_0x0394('0x22')](_0x3039f3,_0x5d805c,!![]);}catch(_0xf9a971){return BPromise[_0x0394('0x23')](_0xf9a971);}return _0x3039f3[_0x0394('0x24')]();};}function saveUpdates(_0x3d8985,_0x798a55){return function(_0x5c8129){if(_0x5c8129){return _0x5c8129[_0x0394('0x25')](_0x3d8985)[_0x0394('0x26')](function(_0x39d784){return _0x39d784;});}return null;};}function removeEntity(_0xdfe68b,_0x5bb7c0){return function(_0x2a96fa){if(_0x2a96fa){return _0x2a96fa[_0x0394('0x27')]()[_0x0394('0x26')](function(){_0xdfe68b[_0x0394('0x1a')](0xcc)[_0x0394('0x19')]();});}};}function handleEntityNotFound(_0x48f574,_0x2cac8c){return function(_0x4f2e2a){if(!_0x4f2e2a){_0x48f574[_0x0394('0x18')](0x194);}return _0x4f2e2a;};}function handleError(_0x18109b,_0x25d9f2){_0x25d9f2=_0x25d9f2||0x1f4;return function(_0x11b7ca){logger[_0x0394('0x28')](_0x11b7ca[_0x0394('0x29')]);if(_0x11b7ca[_0x0394('0x2a')]){delete _0x11b7ca[_0x0394('0x2a')];}_0x18109b[_0x0394('0x1a')](_0x25d9f2)['send'](_0x11b7ca);};}exports[_0x0394('0x2b')]=function(_0x3bf593,_0x100635){var _0x1188d3={},_0x150be9={},_0xe6a06={'count':0x0,'rows':[]};var _0x3e5ff7=_[_0x0394('0x2c')](db[_0x0394('0x2d')]['rawAttributes'],function(_0x1060b0){return{'name':_0x1060b0[_0x0394('0x2e')],'type':_0x1060b0[_0x0394('0x2f')]['key']};});_0x150be9[_0x0394('0x30')]=_['map'](_0x3e5ff7,_0x0394('0x2a'));_0x150be9[_0x0394('0x31')]=_[_0x0394('0x32')](_0x3bf593[_0x0394('0x31')]);_0x150be9[_0x0394('0x33')]=_[_0x0394('0x34')](_0x150be9[_0x0394('0x30')],_0x150be9[_0x0394('0x31')]);_0x1188d3[_0x0394('0x35')]=_[_0x0394('0x34')](_0x150be9['model'],qs[_0x0394('0x36')](_0x3bf593[_0x0394('0x31')][_0x0394('0x36')]));_0x1188d3[_0x0394('0x35')]=_0x1188d3[_0x0394('0x35')][_0x0394('0x37')]?_0x1188d3['attributes']:_0x150be9[_0x0394('0x30')];if(!_0x3bf593['query'][_0x0394('0x38')](_0x0394('0x39'))){_0x1188d3['limit']=qs[_0x0394('0x1e')](_0x3bf593[_0x0394('0x31')][_0x0394('0x1e')]);_0x1188d3[_0x0394('0x1c')]=qs[_0x0394('0x1c')](_0x3bf593['query'][_0x0394('0x1c')]);}_0x1188d3['order']=qs[_0x0394('0x3a')](_0x3bf593[_0x0394('0x31')][_0x0394('0x3a')]);_0x1188d3[_0x0394('0x3b')]=qs['filters'](_[_0x0394('0x3c')](_0x3bf593[_0x0394('0x31')],_0x150be9[_0x0394('0x33')]),_0x3e5ff7);if(_0x3bf593[_0x0394('0x31')][_0x0394('0x3d')]){_0x1188d3['where']=_[_0x0394('0x3e')](_0x1188d3[_0x0394('0x3b')],{'$or':_[_0x0394('0x2c')](_0x3e5ff7,function(_0x3f1bc5){if(_0x3f1bc5[_0x0394('0x2f')]!==_0x0394('0x3f')){var _0x33922b={};_0x33922b[_0x3f1bc5[_0x0394('0x2a')]]={'$like':'%'+_0x3bf593[_0x0394('0x31')][_0x0394('0x3d')]+'%'};return _0x33922b;}})});}_0x1188d3=_[_0x0394('0x3e')]({},_0x1188d3,_0x3bf593[_0x0394('0x40')]);var _0x442db4={'where':_0x1188d3[_0x0394('0x3b')]};return db[_0x0394('0x2d')][_0x0394('0x1f')](_0x442db4)[_0x0394('0x26')](function(_0x2cf18d){_0xe6a06[_0x0394('0x1f')]=_0x2cf18d;if(_0x3bf593[_0x0394('0x31')][_0x0394('0x41')]){_0x1188d3[_0x0394('0x42')]=[{'all':!![]}];}return db[_0x0394('0x2d')][_0x0394('0x43')](_0x1188d3);})[_0x0394('0x26')](function(_0x2d218f){_0xe6a06[_0x0394('0x44')]=_0x2d218f;return _0xe6a06;})[_0x0394('0x26')](respondWithFilteredResult(_0x100635,_0x1188d3))['catch'](handleError(_0x100635,null));};exports['show']=function(_0x36f44f,_0x5d8284){var _0x535327={'raw':!![],'where':{'id':_0x36f44f['params']['id']}},_0x3e97bd={};_0x3e97bd[_0x0394('0x30')]=_[_0x0394('0x32')](db[_0x0394('0x2d')][_0x0394('0x45')]);_0x3e97bd['query']=_[_0x0394('0x32')](_0x36f44f[_0x0394('0x31')]);_0x3e97bd[_0x0394('0x33')]=_[_0x0394('0x34')](_0x3e97bd[_0x0394('0x30')],_0x3e97bd[_0x0394('0x31')]);_0x535327[_0x0394('0x35')]=_[_0x0394('0x34')](_0x3e97bd[_0x0394('0x30')],qs[_0x0394('0x36')](_0x36f44f['query'][_0x0394('0x36')]));_0x535327[_0x0394('0x35')]=_0x535327[_0x0394('0x35')][_0x0394('0x37')]?_0x535327['attributes']:_0x3e97bd[_0x0394('0x30')];if(_0x36f44f['query'][_0x0394('0x41')]){_0x535327[_0x0394('0x42')]=[{'all':!![]}];}_0x535327=_[_0x0394('0x3e')]({},_0x535327,_0x36f44f[_0x0394('0x40')]);return db['WhatsappTransferReport'][_0x0394('0x46')](_0x535327)['then'](handleEntityNotFound(_0x5d8284,null))['then'](respondWithResult(_0x5d8284,null))[_0x0394('0x47')](handleError(_0x5d8284,null));};exports[_0x0394('0x48')]=function(_0x49a42c,_0xadc879){return db[_0x0394('0x2d')][_0x0394('0x48')](_0x49a42c[_0x0394('0x49')],{})['then'](respondWithResult(_0xadc879,0xc9))[_0x0394('0x47')](handleError(_0xadc879,null));};exports['update']=function(_0x172c3c,_0x57a8ce){if(_0x172c3c[_0x0394('0x49')]['id']){delete _0x172c3c[_0x0394('0x49')]['id'];}return db['WhatsappTransferReport'][_0x0394('0x46')]({'where':{'id':_0x172c3c[_0x0394('0x4a')]['id']}})[_0x0394('0x26')](handleEntityNotFound(_0x57a8ce,null))[_0x0394('0x26')](saveUpdates(_0x172c3c[_0x0394('0x49')],null))['then'](respondWithResult(_0x57a8ce,null))['catch'](handleError(_0x57a8ce,null));};exports[_0x0394('0x27')]=function(_0x1d3dd0,_0x28f3ca){return db[_0x0394('0x2d')][_0x0394('0x46')]({'where':{'id':_0x1d3dd0['params']['id']}})['then'](handleEntityNotFound(_0x28f3ca,null))[_0x0394('0x26')](removeEntity(_0x28f3ca,null))[_0x0394('0x47')](handleError(_0x28f3ca,null));};exports[_0x0394('0x4b')]=function(_0x225056,_0x3762ca){return db['WhatsappTransferReport'][_0x0394('0x4b')]()[_0x0394('0x26')](respondWithResult(_0x3762ca,null))[_0x0394('0x47')](handleError(_0x3762ca,null));};
\ No newline at end of file
index 00bfd3e..8b82f2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2922=['moment','bluebird','request-promise','path','rimraf','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','lodash','../../config/logger','api'];(function(_0x5c65ce,_0x5cf47c){var _0x4ce6d4=function(_0x2fb785){while(--_0x2fb785){_0x5c65ce['push'](_0x5c65ce['shift']());}};_0x4ce6d4(++_0x5cf47c);}(_0x2922,0x11b));var _0x2292=function(_0x5f1738,_0x4788cb){_0x5f1738=_0x5f1738-0x0;var _0x1910ca=_0x2922[_0x5f1738];return _0x1910ca;};'use strict';var _=require(_0x2292('0x0'));var util=require('util');var logger=require(_0x2292('0x1'))(_0x2292('0x2'));var moment=require(_0x2292('0x3'));var BPromise=require(_0x2292('0x4'));var rp=require(_0x2292('0x5'));var fs=require('fs');var path=require(_0x2292('0x6'));var rimraf=require(_0x2292('0x7'));var config=require('../../config/environment');var attributes=require(_0x2292('0x8'));module[_0x2292('0x9')]=function(_0x2a4296,_0x5af1cd){return _0x2a4296[_0x2292('0xa')](_0x2292('0xb'),attributes,{'tableName':_0x2292('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a9a=['moment','request-promise','path','rimraf','../../config/environment','exports','define','WhatsappTransferReport','uniqueid','lodash','../../config/logger','api'];(function(_0x58bdce,_0x303d99){var _0x296f62=function(_0x14cd6e){while(--_0x14cd6e){_0x58bdce['push'](_0x58bdce['shift']());}};_0x296f62(++_0x303d99);}(_0x2a9a,0x99));var _0xa2a9=function(_0x2eb140,_0x519316){_0x2eb140=_0x2eb140-0x0;var _0x3a02f0=_0x2a9a[_0x2eb140];return _0x3a02f0;};'use strict';var _=require(_0xa2a9('0x0'));var util=require('util');var logger=require(_0xa2a9('0x1'))(_0xa2a9('0x2'));var moment=require(_0xa2a9('0x3'));var BPromise=require('bluebird');var rp=require(_0xa2a9('0x4'));var fs=require('fs');var path=require(_0xa2a9('0x5'));var rimraf=require(_0xa2a9('0x6'));var config=require(_0xa2a9('0x7'));var attributes=require('./whatsappTransferReport.attributes');module[_0xa2a9('0x8')]=function(_0x3fc813,_0x44e934){return _0x3fc813[_0xa2a9('0x9')](_0xa2a9('0xa'),attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0xa2a9('0xb'),'fields':[_0xa2a9('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 4239500..4c9672d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2001=['rpc','../../config/environment','jayson/promise','client','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x4fe0a6,_0x12ae20){var _0xe3a8a5=function(_0x23b593){while(--_0x23b593){_0x4fe0a6['push'](_0x4fe0a6['shift']());}};_0xe3a8a5(++_0x12ae20);}(_0x2001,0xd6));var _0x1200=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x2001[_0x4b7895];return _0x264180;};'use strict';var _=require(_0x1200('0x0'));var util=require(_0x1200('0x1'));var moment=require('moment');var BPromise=require(_0x1200('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1200('0x3'));var db=require(_0x1200('0x4'))['db'];var utils=require(_0x1200('0x5'));var logger=require('../../config/logger')(_0x1200('0x6'));var config=require(_0x1200('0x7'));var jayson=require(_0x1200('0x8'));var client=jayson[_0x1200('0x9')][_0x1200('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4202a4,_0x22ede6,_0x1e4ccf){return new BPromise(function(_0x25e930,_0xe8781d){return client[_0x1200('0xb')](_0x4202a4,_0x1e4ccf)[_0x1200('0xc')](function(_0x2a1220){logger['info'](_0x1200('0xd'),_0x22ede6,_0x1200('0xe'));logger[_0x1200('0xf')](_0x1200('0x10'),_0x22ede6,_0x1200('0xe'),JSON[_0x1200('0x11')](_0x2a1220));if(_0x2a1220['error']){if(_0x2a1220[_0x1200('0x12')]['code']===0x1f4){logger[_0x1200('0x12')](_0x1200('0xd'),_0x22ede6,_0x2a1220['error'][_0x1200('0x13')]);return _0xe8781d(_0x2a1220[_0x1200('0x12')][_0x1200('0x13')]);}logger['error'](_0x1200('0xd'),_0x22ede6,_0x2a1220[_0x1200('0x12')][_0x1200('0x13')]);return _0x25e930(_0x2a1220[_0x1200('0x12')][_0x1200('0x13')]);}else{logger[_0x1200('0x14')](_0x1200('0xd'),_0x22ede6,_0x1200('0xe'));_0x25e930(_0x2a1220[_0x1200('0x15')]['message']);}})['catch'](function(_0x4b0ab4){logger['error'](_0x1200('0xd'),_0x22ede6,_0x4b0ab4);_0xe8781d(_0x4b0ab4);});});}
\ No newline at end of file
+var _0x8d1a=['code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3566b9,_0x312499){var _0x2f5c01=function(_0x1875c5){while(--_0x1875c5){_0x3566b9['push'](_0x3566b9['shift']());}};_0x2f5c01(++_0x312499);}(_0x8d1a,0x11a));var _0xa8d1=function(_0x45d76b,_0x1c6d73){_0x45d76b=_0x45d76b-0x0;var _0x3c3bb0=_0x8d1a[_0x45d76b];return _0x3c3bb0;};'use strict';var _=require('lodash');var util=require(_0xa8d1('0x0'));var moment=require(_0xa8d1('0x1'));var BPromise=require(_0xa8d1('0x2'));var rs=require(_0xa8d1('0x3'));var fs=require('fs');var Redis=require(_0xa8d1('0x4'));var db=require(_0xa8d1('0x5'))['db'];var utils=require(_0xa8d1('0x6'));var logger=require(_0xa8d1('0x7'))(_0xa8d1('0x8'));var config=require(_0xa8d1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa8d1('0xa')][_0xa8d1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40d4ed,_0x3e0045,_0x20c40b){return new BPromise(function(_0x1faf64,_0x3d6a82){return client[_0xa8d1('0xc')](_0x40d4ed,_0x20c40b)['then'](function(_0x228c94){logger[_0xa8d1('0xd')](_0xa8d1('0xe'),_0x3e0045,_0xa8d1('0xf'));logger['debug']('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x3e0045,'request\x20sent',JSON[_0xa8d1('0x10')](_0x228c94));if(_0x228c94[_0xa8d1('0x11')]){if(_0x228c94[_0xa8d1('0x11')][_0xa8d1('0x12')]===0x1f4){logger[_0xa8d1('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3e0045,_0x228c94['error']['message']);return _0x3d6a82(_0x228c94[_0xa8d1('0x11')]['message']);}logger[_0xa8d1('0x11')](_0xa8d1('0xe'),_0x3e0045,_0x228c94['error'][_0xa8d1('0x13')]);return _0x1faf64(_0x228c94[_0xa8d1('0x11')][_0xa8d1('0x13')]);}else{logger['info'](_0xa8d1('0xe'),_0x3e0045,_0xa8d1('0xf'));_0x1faf64(_0x228c94['result'][_0xa8d1('0x13')]);}})['catch'](function(_0x5dc5a9){logger['error'](_0xa8d1('0xe'),_0x3e0045,_0x5dc5a9);_0x3d6a82(_0x5dc5a9);});});}
\ No newline at end of file
index bfb9a38..2852470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf00e=['./config/environment','./config/logger','app','./config/pm2','./config/schedule/chat','./config/schedule/whatsapp','sequelize','sync','then','listen','start','info','Online\x20apps:','online','join','None','./config/seedDB','default','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./mysqldb','./rpc'];(function(_0x2b9b7f,_0x4d47df){var _0x4ed19a=function(_0x72b5ff){while(--_0x72b5ff){_0x2b9b7f['push'](_0x2b9b7f['shift']());}};_0x4ed19a(++_0x4d47df);}(_0xf00e,0x19c));var _0xef00=function(_0x3a203f,_0x1211a0){_0x3a203f=_0x3a203f-0x0;var _0x4248d2=_0xf00e[_0x3a203f];return _0x4248d2;};'use strict';var _=require('lodash');var mysqldb=require(_0xef00('0x0'));var rpc=require(_0xef00('0x1'));var config=require(_0xef00('0x2'));var logger=require(_0xef00('0x3'))(_0xef00('0x4'));var pm2=require(_0xef00('0x5'));var pm2Config=require('./config/pm2/config');var schedule=require('./config/schedule');var chat=require(_0xef00('0x6'));var whatsapp=require(_0xef00('0x7'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0xef00('0x8')][_0xef00('0x9')]()[_0xef00('0xa')](function(){return rpc[_0xef00('0xb')]();})['then'](function(_0xd96e0){logger['info'](_0xd96e0);return chat['start']();})[_0xef00('0xa')](function(){return whatsapp[_0xef00('0xc')]();})['then'](function(){return schedule[_0xef00('0xc')]();})[_0xef00('0xa')](function(){return transcribe[_0xef00('0xc')]();})[_0xef00('0xa')](function(_0x848611){logger[_0xef00('0xd')](_0x848611);return pm2['start'](pm2Config);})[_0xef00('0xa')](function(_0x328d5a){logger['info'](_0xef00('0xe'),_['map'](_['filter'](_0x328d5a,{'status':_0xef00('0xf')}),'name')['join']());logger[_0xef00('0xd')]('Offline\x20apps:',_['map'](_['filter'](_0x328d5a,function(_0x137b02){return _0x137b02['status']!==_0xef00('0xf');}),'name')[_0xef00('0x10')]()||_0xef00('0x11'));config['seedDB']&&require(_0xef00('0x12'))['default']();require('./config/license')[_0xef00('0x13')]();})['catch'](function(_0x46039f){logger[_0xef00('0x14')](_0xef00('0x15'),_0x46039f);process[_0xef00('0x16')](0x1);});}main();
\ No newline at end of file
+var _0xee10=['./config/schedule/chat','./config/schedule/whatsapp','sequelize','sync','then','listen','start','info','Online\x20apps:','filter','name','Offline\x20apps:','map','status','online','seedDB','./config/seedDB','./config/license','default','error','exit','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/schedule'];(function(_0x36e030,_0x65682b){var _0xf26989=function(_0x42232e){while(--_0x42232e){_0x36e030['push'](_0x36e030['shift']());}};_0xf26989(++_0x65682b);}(_0xee10,0x69));var _0x0ee1=function(_0x33dff0,_0x42960d){_0x33dff0=_0x33dff0-0x0;var _0x8a1455=_0xee10[_0x33dff0];return _0x8a1455;};'use strict';var _=require('lodash');var mysqldb=require(_0x0ee1('0x0'));var rpc=require(_0x0ee1('0x1'));var config=require(_0x0ee1('0x2'));var logger=require(_0x0ee1('0x3'))(_0x0ee1('0x4'));var pm2=require(_0x0ee1('0x5'));var pm2Config=require('./config/pm2/config');var schedule=require(_0x0ee1('0x6'));var chat=require(_0x0ee1('0x7'));var whatsapp=require(_0x0ee1('0x8'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x0ee1('0x9')][_0x0ee1('0xa')]()[_0x0ee1('0xb')](function(){return rpc[_0x0ee1('0xc')]();})[_0x0ee1('0xb')](function(_0x16bd5a){logger['info'](_0x16bd5a);return chat[_0x0ee1('0xd')]();})['then'](function(){return whatsapp[_0x0ee1('0xd')]();})['then'](function(){return schedule[_0x0ee1('0xd')]();})[_0x0ee1('0xb')](function(){return transcribe[_0x0ee1('0xd')]();})['then'](function(_0x3c0283){logger[_0x0ee1('0xe')](_0x3c0283);return pm2['start'](pm2Config);})[_0x0ee1('0xb')](function(_0x22c869){logger[_0x0ee1('0xe')](_0x0ee1('0xf'),_['map'](_[_0x0ee1('0x10')](_0x22c869,{'status':'online'}),_0x0ee1('0x11'))['join']());logger[_0x0ee1('0xe')](_0x0ee1('0x12'),_[_0x0ee1('0x13')](_[_0x0ee1('0x10')](_0x22c869,function(_0x32836f){return _0x32836f[_0x0ee1('0x14')]!==_0x0ee1('0x15');}),_0x0ee1('0x11'))['join']()||'None');config[_0x0ee1('0x16')]&&require(_0x0ee1('0x17'))['default']();require(_0x0ee1('0x18'))[_0x0ee1('0x19')]();})['catch'](function(_0xee7bdf){logger[_0x0ee1('0x1a')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0xee7bdf);process[_0x0ee1('0x1b')](0x1);});}main();
\ No newline at end of file
index 1a0b43b..cdcccc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b11=['pass','json','Wrong\x20credentials.','startsWith','authorization','Bearer','query','apikey','getUuid','sub','then','Setting','findOne','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','add','minutes','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','signToken','setTokenCookie','role','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','sign','secret','secrets','options','promisify','verify','toString','floor','now','apiKeyIat','HS512','../../mysqldb','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','crypto','util','moment','session','fullname','name','internal','permissions','md5secret','voicePause','chatPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableSettings','phoneBarPrefixRequired','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','params','closed','disposition','status','unmanaged','Unmanaged.','catch','headers','User','find','authenticate'];(function(_0x849736,_0x35e834){var _0x9c9f75=function(_0x6f7b77){while(--_0x6f7b77){_0x849736['push'](_0x849736['shift']());}};_0x9c9f75(++_0x35e834);}(_0x7b11,0x1be));var _0x17b1=function(_0x523a77,_0x509aa1){_0x523a77=_0x523a77-0x0;var _0x235bd4=_0x7b11[_0x523a77];return _0x235bd4;};'use strict';var db=require(_0x17b1('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0x17b1('0x1'));var licenseUtil=require(_0x17b1('0x2'));var encryptor=require(_0x17b1('0x3'));var _=require(_0x17b1('0x4'));var jwt=require(_0x17b1('0x5'));var expressJwt=require(_0x17b1('0x6'));var compose=require(_0x17b1('0x7'));var basicAuth=require('basic-auth');var crypto=require(_0x17b1('0x8'));var BPromise=require('bluebird');var util=require(_0x17b1('0x9'));var moment=require(_0x17b1('0xa'));var validateJwt=expressJwt({'secret':config['secrets'][_0x17b1('0xb')]});var userAttributes=['id','role',_0x17b1('0xc'),_0x17b1('0xd'),_0x17b1('0xe'),'email','userpic',_0x17b1('0xf'),_0x17b1('0x10'),_0x17b1('0x11'),_0x17b1('0x12'),'mailPause',_0x17b1('0x13'),_0x17b1('0x14'),_0x17b1('0x15'),_0x17b1('0x16'),_0x17b1('0x17'),_0x17b1('0x18'),_0x17b1('0x19'),_0x17b1('0x1a'),'allowmessenger',_0x17b1('0x1b'),_0x17b1('0x1c'),_0x17b1('0x1d'),'phoneBarAutoAnswerDelay',_0x17b1('0x1e'),_0x17b1('0x1f'),'phoneBarEnableDtmfTone',_0x17b1('0x20'),'phoneBarExpires',_0x17b1('0x21'),'phoneBarRemoteControl',_0x17b1('0x22'),'hotdesk',_0x17b1('0x23'),_0x17b1('0x24'),_0x17b1('0x25'),'settingsEnabled',_0x17b1('0x26'),_0x17b1('0x27'),_0x17b1('0x28'),_0x17b1('0x29'),'ignorePauseForPreviewCalls','selectRecallMeCampaign'];exports[_0x17b1('0x2a')]=function(){return this[_0x17b1('0x2b')](!![])[_0x17b1('0x2c')](function(_0x15067a,_0x2e9cef,_0x1ff23b){if(_0x15067a[_0x17b1('0x2d')]){_0x1ff23b();}else{return db[_0x17b1('0x2e')]['findOne']({'where':{'id':_0x15067a[_0x17b1('0x2f')]['id']},'attributes':['id',_0x17b1('0x30'),_0x17b1('0x31')],'raw':!![]})['then'](function(_0x4ef963){if(_0x4ef963&&_0x4ef963[_0x17b1('0x30')]){return _0x2e9cef[_0x17b1('0x32')](_0x4ef963[_0x17b1('0x31')]===_0x17b1('0x33')?0x195:0x193)['json']({'message':_0x4ef963[_0x17b1('0x31')]===_0x17b1('0x33')?_0x17b1('0x34'):'Forbidden.'});}else{_0x1ff23b();}})[_0x17b1('0x35')](function(_0x69556e){_0x1ff23b(_0x69556e);});}});};exports['isAuthenticated']=function isAuthenticated(_0x3f4e25){return compose()[_0x17b1('0x2c')](function(_0x1607a2,_0x490ca4,_0x43984a){var _0x2c6535;if(_0x1607a2[_0x17b1('0x36')]['authorization']){if(_['startsWith'](_0x1607a2[_0x17b1('0x36')]['authorization'],'Basic')){var _0x1f0461=basicAuth(_0x1607a2);db[_0x17b1('0x37')][_0x17b1('0x38')]({'where':{'name':_0x1f0461[_0x17b1('0xd')]}})['then'](function(_0x50a998){if(!_0x50a998||!_0x50a998[_0x17b1('0x39')](_0x1f0461[_0x17b1('0x3a')])){return _0x490ca4[_0x17b1('0x32')](0x191)[_0x17b1('0x3b')]({'message':_0x17b1('0x3c')});}_0x1607a2[_0x17b1('0x2d')]={'id':_0x50a998['id']};_0x43984a();})['catch'](function(_0x49ad12){_0x43984a(_0x49ad12);});}else if(_[_0x17b1('0x3d')](_0x1607a2[_0x17b1('0x36')][_0x17b1('0x3e')],_0x17b1('0x3f'))){validateJwt(_0x1607a2,_0x490ca4,_0x43984a);}else{if(_0x3f4e25){_0x43984a();}else{return _0x490ca4[_0x17b1('0x32')](0x193)[_0x17b1('0x3b')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x1607a2[_0x17b1('0x40')][_0x17b1('0x41')]){try{var _0x4fbe96={'audience':hardwareConf[_0x17b1('0x42')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x1607a2['query'][_0x17b1('0x41')],_0x4fbe96)['then'](function(_0x21fc1b){return db['User'][_0x17b1('0x38')]({'where':{'id':_0x21fc1b[_0x17b1('0x43')]}})[_0x17b1('0x44')](function(_0x4de5b6){_0x2c6535=_0x4de5b6;return db[_0x17b1('0x45')][_0x17b1('0x46')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x17b1('0x47')],'raw':!![]});})[_0x17b1('0x44')](function(_0x5457a4){if(!_0x2c6535||!_[_0x17b1('0x48')](_0x2c6535[_0x17b1('0x49')],_0x21fc1b[_0x17b1('0x4a')])){return _0x490ca4['status'](0x191)['json']({'message':_0x17b1('0x4b')});}if(_0x2c6535[_0x17b1('0x4c')]){return _0x490ca4[_0x17b1('0x32')](0x191)[_0x17b1('0x3b')]({'message':_0x17b1('0x4d')});}if(_0x2c6535['blocked']){if(_0x5457a4[_0x17b1('0x47')]>0x0){if(moment(_0x2c6535[_0x17b1('0x4e')])[_0x17b1('0x4f')](_0x5457a4['blockDuration'],_0x17b1('0x50'))>moment()){return _0x490ca4['status'](0x191)[_0x17b1('0x3b')]({'message':_0x17b1('0x4d')});}}else{return _0x490ca4['status'](0x191)[_0x17b1('0x3b')]({'message':_0x17b1('0x4d')});}}_0x1607a2[_0x17b1('0x2d')]={'id':_0x2c6535['id']};_0x43984a();});})[_0x17b1('0x35')](function(){return _0x490ca4[_0x17b1('0x32')](0x191)[_0x17b1('0x3b')]({'message':_0x17b1('0x4d')});});}catch(_0x5bfa48){_0x43984a(_0x5bfa48);}}else if(_0x3f4e25){_0x43984a();}else{return _0x490ca4[_0x17b1('0x32')](0x193)[_0x17b1('0x3b')]({'message':'Unknown\x20authorization\x20format'});}})[_0x17b1('0x2c')](function(_0x403ed5,_0x518885,_0x3d306b){if(_0x403ed5[_0x17b1('0x2d')]){db[_0x17b1('0x37')][_0x17b1('0x38')]({'where':{'id':_0x403ed5[_0x17b1('0x2d')]['id']},'attributes':userAttributes})[_0x17b1('0x44')](function(_0x518fb3){if(!_0x518fb3){return _0x518885[_0x17b1('0x32')](0x194)[_0x17b1('0x3b')]({'message':'User\x20not\x20found.'});}_0x403ed5[_0x17b1('0x2d')]=_0x518fb3;_0x3d306b();})[_0x17b1('0x35')](function(_0x35ba36){_0x3d306b(_0x35ba36);});}else if(_0x3f4e25){_0x3d306b();}else{return _0x518885[_0x17b1('0x32')](0x194)[_0x17b1('0x3b')]({'message':_0x17b1('0x51')});}});};exports[_0x17b1('0x52')]=function canUpdate(){return compose()[_0x17b1('0x2c')](function(_0xe4a52a,_0x4d47c8,_0x4d8f16){return licenseUtil[_0x17b1('0x53')]()['then'](function(_0x372dd0){if(_0x372dd0[_0x17b1('0x54')]){_0x4d8f16();}else{return _0x4d47c8[_0x17b1('0x32')](0x193)[_0x17b1('0x3b')]({'message':_0x17b1('0x55')});}})['catch'](function(_0x2f07cd){_0x4d8f16(_0x2f07cd);});});};exports[_0x17b1('0x56')]=function isWebrtcLicence(){return compose()[_0x17b1('0x2c')](function(_0x5b8f15,_0x1c6d14,_0x5565e6){return licenseUtil[_0x17b1('0x53')]()['then'](function(_0x52daad){if(_0x52daad[_0x17b1('0x57')]){_0x5565e6();}else{return _0x1c6d14[_0x17b1('0x32')](0x193)[_0x17b1('0x3b')]({'message':_0x17b1('0x55')});}})['catch'](function(_0x2d5deb){_0x5565e6(_0x2d5deb);});});};exports['isMiddleware']=function(_0x2798c5,_0x5f1076,_0x50a6d0){_0x2798c5[_0x17b1('0x58')]=!![];return _0x50a6d0();};exports[_0x17b1('0x59')]=function signToken(_0x467d32){return signJwt(_0x467d32);};exports[_0x17b1('0x5a')]=function(_0x117e47,_0x11ebc0){if(!_0x117e47['user']){return _0x11ebc0['status'](0x194)['json']({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x2abc1a={'payload':{'id':_0x117e47[_0x17b1('0x2d')]['id'],'role':_0x117e47[_0x17b1('0x2d')][_0x17b1('0x5b')]},'options':{'expiresIn':0x15180}};return signJwt(_0x2abc1a)[_0x17b1('0x44')](function(_0x3dca84){_0x11ebc0[_0x17b1('0x5c')](_0x17b1('0x5d'),_0x3dca84);_0x11ebc0[_0x17b1('0x5e')](_0x17b1('0x5f'));})[_0x17b1('0x35')](function(_0x4cc164){return _0x11ebc0[_0x17b1('0x32')](0x1f4)[_0x17b1('0x60')](_0x4cc164);});};exports[_0x17b1('0x61')]=function(_0xd7ee24){if(_[_0x17b1('0x62')](_0xd7ee24['apiKeyNonce'])||_['isNil'](_0xd7ee24['apiKeyIat'])){return null;}else{return createJwt(_0xd7ee24);}};exports[_0x17b1('0x63')]=function(_0x31e957){_0x31e957[_0x17b1('0x49')]=generateNonce();_0x31e957['apiKeyIat']=generateIssuedAt();return createJwt(_0x31e957);};exports[_0x17b1('0x64')]=function(_0xd22025,_0x3e938f){var _0xc5fd30=_0xd22025[_0x17b1('0x40')][_0x17b1('0x41')];if(_0xc5fd30){var _0x4bc16a={'nonce':_0x3e938f[_0x17b1('0x49')],'iat':_0x3e938f['apiKeyIat'],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x17b1('0x42')]()};return verifyJwt(_0xc5fd30,_0x4bc16a)['then'](function(){return generateApiKey(_0x3e938f);});}else{throw{'message':_0x17b1('0x65')};}};exports[_0x17b1('0x66')]=function(_0x4c32b5){var _0x457e24=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x457e24['test'](_0x4c32b5))throw new db[(_0x17b1('0x67'))][(_0x17b1('0x68'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x17b1('0x69')]=function(_0x248651,_0x436eff,_0x28905e){var _0x23302b=encryptor[_0x17b1('0x6a')](_0x436eff)[_0x17b1('0x6b')](',');for(var _0x42ff65=0x0;_0x42ff65<_0x28905e;_0x42ff65++){if(!_0x23302b[_0x42ff65])break;if(_0x248651['toLowerCase']()===_0x23302b[_0x42ff65][_0x17b1('0x6c')]()){var _0x51c1af=util['format'](_0x17b1('0x6d'),_0x28905e);if(_0x28905e===0x1){_0x51c1af=_0x17b1('0x6e');}throw new db['Sequelize'][(_0x17b1('0x68'))](_0x51c1af);}}return;};exports[_0x17b1('0x6f')]=function(_0x313a6d,_0x28145c){var _0x292449=_0x28145c?encryptor[_0x17b1('0x6a')](_0x28145c)['split'](','):[];if(_0x292449[_0x17b1('0x70')]===0x5){_0x292449['splice'](-0x1,0x1);}_0x292449[_0x17b1('0x71')](_0x313a6d);return encryptor[_0x17b1('0x72')](_0x292449['join'](','));};function signJwt(_0x5e368f){var _0x493409=BPromise['promisify'](jwt[_0x17b1('0x73')],{'context':jwt});var _0x2225ac=_0x5e368f[_0x17b1('0x74')]||config[_0x17b1('0x75')][_0x17b1('0xb')];return new BPromise(function(_0x7647fc,_0x17d682){_0x493409(_0x5e368f['payload'],_0x2225ac,_0x5e368f[_0x17b1('0x76')])['then'](function(_0x3685e2){_0x7647fc(_0x3685e2);})[_0x17b1('0x35')](function(_0x4cbbeb){_0x17d682(_0x4cbbeb);});});}function verifyJwt(_0x56f9f9,_0x2cf976,_0x574fbc){var _0x2bdf09=BPromise[_0x17b1('0x77')](jwt[_0x17b1('0x78')],{'context':jwt});var _0x24d847=_0x574fbc||config[_0x17b1('0x75')]['session'];return new BPromise(function(_0x3d4355,_0x4bf196){_0x2bdf09(_0x56f9f9,_0x24d847,_0x2cf976)[_0x17b1('0x44')](function(_0x4f8112){_0x3d4355(_0x4f8112);})[_0x17b1('0x35')](function(_0x25450d){_0x4bf196(_0x25450d);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0x17b1('0x79')]('hex');}function generateIssuedAt(){return Math[_0x17b1('0x7a')](Date[_0x17b1('0x7b')]()/0x3e8)[_0x17b1('0x79')]();}function createJwt(_0x34fbcf){var _0x3c6419={'payload':{'iat':_0x34fbcf[_0x17b1('0x7c')],'nonce':_0x34fbcf[_0x17b1('0x49')]},'options':{'algorithm':_0x17b1('0x7d'),'subject':_0x34fbcf['id'][_0x17b1('0x79')](),'issuer':hardwareConf[_0x17b1('0x42')](),'audience':hardwareConf[_0x17b1('0x42')]()}};return signJwt(_0x3c6419)['then'](function(_0x3c3ec5){return{'iat':_0x34fbcf[_0x17b1('0x7c')],'nonce':_0x34fbcf[_0x17b1('0x49')],'token':_0x3c3ec5};});}
\ No newline at end of file
+var _0x9113=['name','userpic','permissions','md5secret','mailPause','smsPause','openchannelPause','showWebBar','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','Forbidden.','catch','headers','authorization','startsWith','Basic','find','authenticate','json','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','User','sub','Setting','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','Invalid\x20API\x20access\x20key','blockedAt','add','User\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','role','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','validatePasswordPattern','test','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','Sequelize','updatePasswordsHistory','split','length','splice','encryptString','join','promisify','sign','secret','session','payload','options','secrets','toString','hex','now','HS512','../../config/environment','../../config/license/util','../encryptor','lodash','jsonwebtoken','crypto','bluebird','util','fullname'];(function(_0x4a0bf8,_0x15af44){var _0x76833d=function(_0xee432b){while(--_0xee432b){_0x4a0bf8['push'](_0x4a0bf8['shift']());}};_0x76833d(++_0x15af44);}(_0x9113,0x1cf));var _0x3911=function(_0x66a200,_0x570e25){_0x66a200=_0x66a200-0x0;var _0x241691=_0x9113[_0x66a200];return _0x241691;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0x3911('0x0'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0x3911('0x1'));var encryptor=require(_0x3911('0x2'));var _=require(_0x3911('0x3'));var jwt=require(_0x3911('0x4'));var expressJwt=require('express-jwt');var compose=require('composable-middleware');var basicAuth=require('basic-auth');var crypto=require(_0x3911('0x5'));var BPromise=require(_0x3911('0x6'));var util=require(_0x3911('0x7'));var moment=require('moment');var validateJwt=expressJwt({'secret':config['secrets']['session']});var userAttributes=['id','role',_0x3911('0x8'),_0x3911('0x9'),'internal','email',_0x3911('0xa'),_0x3911('0xb'),_0x3911('0xc'),'voicePause','chatPause',_0x3911('0xd'),'faxPause',_0x3911('0xe'),_0x3911('0xf'),'pauseType',_0x3911('0x10'),'lastLoginAt',_0x3911('0x11'),_0x3911('0x12'),'allowmessenger',_0x3911('0x13'),_0x3911('0x14'),'phoneBarAutoAnswer',_0x3911('0x15'),'phoneBarDnd',_0x3911('0x16'),_0x3911('0x17'),'phoneBarEnableSettings','phoneBarExpires',_0x3911('0x18'),_0x3911('0x19'),_0x3911('0x1a'),'hotdesk',_0x3911('0x1b'),_0x3911('0x1c'),_0x3911('0x1d'),_0x3911('0x1e'),_0x3911('0x1f'),_0x3911('0x20'),_0x3911('0x21'),_0x3911('0x22'),_0x3911('0x23'),'selectRecallMeCampaign'];exports['isChatInteractionAuthorized']=function(){return this[_0x3911('0x24')](!![])[_0x3911('0x25')](function(_0xf18265,_0x57353a,_0x51f29e){if(_0xf18265[_0x3911('0x26')]){_0x51f29e();}else{return db[_0x3911('0x27')][_0x3911('0x28')]({'where':{'id':_0xf18265[_0x3911('0x29')]['id']},'attributes':['id',_0x3911('0x2a'),_0x3911('0x2b')],'raw':!![]})[_0x3911('0x2c')](function(_0x550cc5){if(_0x550cc5&&_0x550cc5['closed']){return _0x57353a[_0x3911('0x2d')](_0x550cc5[_0x3911('0x2b')]==='unmanaged'?0x195:0x193)['json']({'message':_0x550cc5[_0x3911('0x2b')]===_0x3911('0x2e')?'Unmanaged.':_0x3911('0x2f')});}else{_0x51f29e();}})[_0x3911('0x30')](function(_0x5c565){_0x51f29e(_0x5c565);});}});};exports[_0x3911('0x24')]=function isAuthenticated(_0x42d983){return compose()[_0x3911('0x25')](function(_0x4d2bbc,_0x34259f,_0x326d03){var _0x21ba3b;if(_0x4d2bbc[_0x3911('0x31')][_0x3911('0x32')]){if(_[_0x3911('0x33')](_0x4d2bbc['headers'][_0x3911('0x32')],_0x3911('0x34'))){var _0x3ab972=basicAuth(_0x4d2bbc);db['User'][_0x3911('0x35')]({'where':{'name':_0x3ab972[_0x3911('0x9')]}})[_0x3911('0x2c')](function(_0x2891f9){if(!_0x2891f9||!_0x2891f9[_0x3911('0x36')](_0x3ab972['pass'])){return _0x34259f[_0x3911('0x2d')](0x191)[_0x3911('0x37')]({'message':_0x3911('0x38')});}_0x4d2bbc[_0x3911('0x26')]={'id':_0x2891f9['id']};_0x326d03();})[_0x3911('0x30')](function(_0x49d574){_0x326d03(_0x49d574);});}else if(_[_0x3911('0x33')](_0x4d2bbc[_0x3911('0x31')][_0x3911('0x32')],_0x3911('0x39'))){validateJwt(_0x4d2bbc,_0x34259f,_0x326d03);}else{if(_0x42d983){_0x326d03();}else{return _0x34259f[_0x3911('0x2d')](0x193)[_0x3911('0x37')]({'message':_0x3911('0x3a')});}}}else if(_0x4d2bbc[_0x3911('0x3b')][_0x3911('0x3c')]){try{var _0x5585dd={'audience':hardwareConf[_0x3911('0x3d')](),'issuer':hardwareConf[_0x3911('0x3d')]()};verifyJwt(_0x4d2bbc[_0x3911('0x3b')]['apikey'],_0x5585dd)['then'](function(_0x2a2bc8){return db[_0x3911('0x3e')][_0x3911('0x35')]({'where':{'id':_0x2a2bc8[_0x3911('0x3f')]}})[_0x3911('0x2c')](function(_0x45945e){_0x21ba3b=_0x45945e;return db[_0x3911('0x40')][_0x3911('0x28')]({'where':{'id':0x1},'attributes':[_0x3911('0x41'),_0x3911('0x42')],'raw':!![]});})[_0x3911('0x2c')](function(_0x1a39c6){if(!_0x21ba3b||!_[_0x3911('0x43')](_0x21ba3b[_0x3911('0x44')],_0x2a2bc8[_0x3911('0x45')])){return _0x34259f[_0x3911('0x2d')](0x191)[_0x3911('0x37')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x21ba3b['disabled']){return _0x34259f['status'](0x191)[_0x3911('0x37')]({'message':_0x3911('0x46')});}if(_0x21ba3b['blocked']){if(_0x1a39c6['blockDuration']>0x0){if(moment(_0x21ba3b[_0x3911('0x47')])[_0x3911('0x48')](_0x1a39c6[_0x3911('0x42')],'minutes')>moment()){return _0x34259f[_0x3911('0x2d')](0x191)['json']({'message':_0x3911('0x46')});}}else{return _0x34259f[_0x3911('0x2d')](0x191)[_0x3911('0x37')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x4d2bbc[_0x3911('0x26')]={'id':_0x21ba3b['id']};_0x326d03();});})[_0x3911('0x30')](function(){return _0x34259f[_0x3911('0x2d')](0x191)[_0x3911('0x37')]({'message':_0x3911('0x46')});});}catch(_0x5bf29c){_0x326d03(_0x5bf29c);}}else if(_0x42d983){_0x326d03();}else{return _0x34259f['status'](0x193)[_0x3911('0x37')]({'message':_0x3911('0x3a')});}})[_0x3911('0x25')](function(_0x33125e,_0x3fc828,_0x17ee51){if(_0x33125e[_0x3911('0x26')]){db[_0x3911('0x3e')]['find']({'where':{'id':_0x33125e[_0x3911('0x26')]['id']},'attributes':userAttributes})['then'](function(_0x5eaa9f){if(!_0x5eaa9f){return _0x3fc828[_0x3911('0x2d')](0x194)[_0x3911('0x37')]({'message':_0x3911('0x49')});}_0x33125e['user']=_0x5eaa9f;_0x17ee51();})['catch'](function(_0x11215d){_0x17ee51(_0x11215d);});}else if(_0x42d983){_0x17ee51();}else{return _0x3fc828[_0x3911('0x2d')](0x194)[_0x3911('0x37')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0x3911('0x4a')]=function canUpdate(){return compose()[_0x3911('0x25')](function(_0x5b6fb6,_0x12d6ca,_0x51498e){return licenseUtil[_0x3911('0x4b')]()[_0x3911('0x2c')](function(_0x3a9b68){if(_0x3a9b68[_0x3911('0x4c')]){_0x51498e();}else{return _0x12d6ca[_0x3911('0x2d')](0x193)[_0x3911('0x37')]({'message':_0x3911('0x4d')});}})[_0x3911('0x30')](function(_0x16a4f5){_0x51498e(_0x16a4f5);});});};exports[_0x3911('0x4e')]=function isWebrtcLicence(){return compose()['use'](function(_0x193f2d,_0x3ef915,_0x342807){return licenseUtil[_0x3911('0x4b')]()[_0x3911('0x2c')](function(_0x4ebba8){if(_0x4ebba8['webrtc']){_0x342807();}else{return _0x3ef915[_0x3911('0x2d')](0x193)['json']({'message':_0x3911('0x4d')});}})[_0x3911('0x30')](function(_0x1cba15){_0x342807(_0x1cba15);});});};exports[_0x3911('0x4f')]=function(_0x2d5b69,_0x3f6a90,_0x2bbc5e){_0x2d5b69[_0x3911('0x4f')]=!![];return _0x2bbc5e();};exports['signToken']=function signToken(_0x242f9e){return signJwt(_0x242f9e);};exports[_0x3911('0x50')]=function(_0x3dd2f3,_0x311f7a){if(!_0x3dd2f3['user']){return _0x311f7a['status'](0x194)[_0x3911('0x37')]({'message':_0x3911('0x51')});}var _0x5628b4={'payload':{'id':_0x3dd2f3['user']['id'],'role':_0x3dd2f3[_0x3911('0x26')][_0x3911('0x52')]},'options':{'expiresIn':0x15180}};return signJwt(_0x5628b4)[_0x3911('0x2c')](function(_0x8b33a7){_0x311f7a['cookie'](_0x3911('0x53'),_0x8b33a7);_0x311f7a[_0x3911('0x54')](_0x3911('0x55'));})[_0x3911('0x30')](function(_0x11fc8e){return _0x311f7a[_0x3911('0x2d')](0x1f4)[_0x3911('0x56')](_0x11fc8e);});};exports[_0x3911('0x57')]=function(_0x5222f9){if(_[_0x3911('0x58')](_0x5222f9[_0x3911('0x44')])||_['isNil'](_0x5222f9[_0x3911('0x59')])){return null;}else{return createJwt(_0x5222f9);}};exports[_0x3911('0x5a')]=function(_0x3f9291){_0x3f9291[_0x3911('0x44')]=generateNonce();_0x3f9291['apiKeyIat']=generateIssuedAt();return createJwt(_0x3f9291);};exports['regenerateApiKey']=function(_0x502139,_0x21b9be){var _0x146d3b=_0x502139[_0x3911('0x3b')][_0x3911('0x3c')];if(_0x146d3b){var _0x22ae63={'nonce':_0x21b9be[_0x3911('0x44')],'iat':_0x21b9be[_0x3911('0x59')],'audience':hardwareConf[_0x3911('0x3d')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x146d3b,_0x22ae63)['then'](function(){return generateApiKey(_0x21b9be);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x3911('0x5b')]=function(_0x3807e5){var _0x356ffb=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x356ffb[_0x3911('0x5c')](_0x3807e5))throw new db['Sequelize'][(_0x3911('0x5d'))](_0x3911('0x5e'));return;};exports[_0x3911('0x5f')]=function(_0x4c52d6,_0x191d2c,_0x5498a1){var _0x53610b=encryptor[_0x3911('0x60')](_0x191d2c)['split'](',');for(var _0x37c721=0x0;_0x37c721<_0x5498a1;_0x37c721++){if(!_0x53610b[_0x37c721])break;if(_0x4c52d6['toLowerCase']()===_0x53610b[_0x37c721][_0x3911('0x61')]()){var _0x54af75=util[_0x3911('0x62')](_0x3911('0x63'),_0x5498a1);if(_0x5498a1===0x1){_0x54af75='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0x3911('0x64'))][(_0x3911('0x5d'))](_0x54af75);}}return;};exports[_0x3911('0x65')]=function(_0x5c15f0,_0x3b068d){var _0x4cfe2d=_0x3b068d?encryptor[_0x3911('0x60')](_0x3b068d)[_0x3911('0x66')](','):[];if(_0x4cfe2d[_0x3911('0x67')]===0x5){_0x4cfe2d[_0x3911('0x68')](-0x1,0x1);}_0x4cfe2d['unshift'](_0x5c15f0);return encryptor[_0x3911('0x69')](_0x4cfe2d[_0x3911('0x6a')](','));};function signJwt(_0x293f7e){var _0x289dea=BPromise[_0x3911('0x6b')](jwt[_0x3911('0x6c')],{'context':jwt});var _0x5309c7=_0x293f7e[_0x3911('0x6d')]||config['secrets'][_0x3911('0x6e')];return new BPromise(function(_0x1b811f,_0x540f3c){_0x289dea(_0x293f7e[_0x3911('0x6f')],_0x5309c7,_0x293f7e[_0x3911('0x70')])[_0x3911('0x2c')](function(_0x389b62){_0x1b811f(_0x389b62);})['catch'](function(_0xef6653){_0x540f3c(_0xef6653);});});}function verifyJwt(_0x460384,_0x2cca5f,_0x525964){var _0x501edb=BPromise[_0x3911('0x6b')](jwt['verify'],{'context':jwt});var _0x17f95d=_0x525964||config[_0x3911('0x71')][_0x3911('0x6e')];return new BPromise(function(_0x57b7e1,_0x40e931){_0x501edb(_0x460384,_0x17f95d,_0x2cca5f)[_0x3911('0x2c')](function(_0x3c27ae){_0x57b7e1(_0x3c27ae);})[_0x3911('0x30')](function(_0x574ede){_0x40e931(_0x574ede);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0x3911('0x72')](_0x3911('0x73'));}function generateIssuedAt(){return Math['floor'](Date[_0x3911('0x74')]()/0x3e8)[_0x3911('0x72')]();}function createJwt(_0x2f13ca){var _0x9bd424={'payload':{'iat':_0x2f13ca['apiKeyIat'],'nonce':_0x2f13ca[_0x3911('0x44')]},'options':{'algorithm':_0x3911('0x75'),'subject':_0x2f13ca['id'][_0x3911('0x72')](),'issuer':hardwareConf[_0x3911('0x3d')](),'audience':hardwareConf[_0x3911('0x3d')]()}};return signJwt(_0x9bd424)[_0x3911('0x2c')](function(_0xb59165){return{'iat':_0x2f13ca['apiKeyIat'],'nonce':_0x2f13ca[_0x3911('0x44')],'token':_0xb59165};});}
\ No newline at end of file
index d533b46..76a091e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c8=['createDecipher','encryptString','utf8','base64','decryptString','secret','crypto','lodash','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','indexOf','hasOwnProperty','createWriteStream','data','update','binary','write','end','final','close','unlink','decryptFile'];(function(_0x20d08e,_0x4cc575){var _0x2cbd12=function(_0x3de355){while(--_0x3de355){_0x20d08e['push'](_0x20d08e['shift']());}};_0x2cbd12(++_0x4cc575);}(_0xc2c8,0x7e));var _0x8c2c=function(_0x86e4ad,_0x230ee4){_0x86e4ad=_0x86e4ad-0x0;var _0xdcf86b=_0xc2c8[_0x86e4ad];return _0xdcf86b;};'use strict';var crypto=require(_0x8c2c('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x8c2c('0x1'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x8c2c('0x2'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x8c2c('0x3')][_0x8c2c('0x4')],'algorithm':_0x8c2c('0x5')};const fileOptions={'algorithm':_0x8c2c('0x6')};if(config[_0x8c2c('0x7')]&&config[_0x8c2c('0x7')][_0x8c2c('0x8')]){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0x8c2c('0x8')]=config[_0x8c2c('0x7')][_0x8c2c('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x8c2c('0x9')](',\x20');logger['error'](config[_0x8c2c('0x7')]['algorithm'],_0x8c2c('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x5117cc){return AES_SUPPORTED_RX['test'](_0x5117cc);}function getSupportedCiphers(){return crypto[_0x8c2c('0xb')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x1992a5){return getSupportedCiphers()[_0x8c2c('0xc')](_0x1992a5)>-0x1;}function combineOptions(_0x499ed5){var _0x1846e0={};for(var _0x1c815c in fileOptions){if(fileOptions[_0x8c2c('0xd')](_0x1c815c)){_0x1846e0[_0x1c815c]=fileOptions[_0x1c815c];}}if(_0x499ed5){for(var _0x4744c3 in _0x499ed5){if(_0x499ed5['hasOwnProperty'](_0x4744c3)){_0x1846e0[_0x4744c3]=_0x499ed5[_0x4744c3];}}}return _0x1846e0;}exports['encryptFile']=function(_0x2cfff0,_0x478c08,_0x2de3b3,_0x5440b2){return new BPromise(function(_0x3de521,_0x2dc05c){_0x5440b2=combineOptions(_0x5440b2);var _0xf77bc1=new Buffer(_0x2de3b3);var _0x1b3d05=fs['createReadStream'](_0x2cfff0);var _0x6d930e=fs[_0x8c2c('0xe')](_0x478c08);var _0x2924ad=crypto['createCipher'](_0x5440b2[_0x8c2c('0x8')],_0xf77bc1);_0x1b3d05['on'](_0x8c2c('0xf'),function(_0x45a15f){var _0x48f86a=new Buffer(_0x2924ad[_0x8c2c('0x10')](_0x45a15f),_0x8c2c('0x11'));_0x6d930e[_0x8c2c('0x12')](_0x48f86a);});_0x1b3d05['on'](_0x8c2c('0x13'),function(){try{var _0x1678c4=new Buffer(_0x2924ad[_0x8c2c('0x14')]('binary'),_0x8c2c('0x11'));_0x6d930e[_0x8c2c('0x12')](_0x1678c4);_0x6d930e[_0x8c2c('0x13')]();_0x6d930e['on'](_0x8c2c('0x15'),function(){return _0x3de521(_0x478c08);});}catch(_0x425403){fs[_0x8c2c('0x16')](_0x478c08);return _0x2dc05c(_0x425403);}});});};exports[_0x8c2c('0x17')]=function(_0x39213c,_0x5f1911,_0xc08447,_0x4d6fbd){return new BPromise(function(_0x204d33,_0xd03453){_0x4d6fbd=combineOptions(_0x4d6fbd);var _0x2ce5a8=new Buffer(_0xc08447);var _0x27f158=fs['createReadStream'](_0x39213c);var _0xa72223=fs[_0x8c2c('0xe')](_0x5f1911);var _0x119e37=crypto[_0x8c2c('0x18')](_0x4d6fbd[_0x8c2c('0x8')],_0x2ce5a8);_0x27f158['on'](_0x8c2c('0xf'),function(_0x2ebcb3){var _0x160c1e=new Buffer(_0x119e37[_0x8c2c('0x10')](_0x2ebcb3),_0x8c2c('0x11'));_0xa72223[_0x8c2c('0x12')](_0x160c1e);});_0x27f158['on']('end',function(){try{var _0xcbe749=new Buffer(_0x119e37[_0x8c2c('0x14')](_0x8c2c('0x11')),_0x8c2c('0x11'));_0xa72223[_0x8c2c('0x12')](_0xcbe749);_0xa72223[_0x8c2c('0x13')]();_0xa72223['on'](_0x8c2c('0x15'),function(){return _0x204d33(_0x5f1911);});}catch(_0x59db9f){fs[_0x8c2c('0x16')](_0x5f1911);return _0xd03453(_0x59db9f);}});});};exports[_0x8c2c('0x19')]=function(_0x22b99f,_0x205b01,_0x599923){var _0x1b82ec=_0x599923||stringOptions['algorithm'];var _0x55eedc=_0x205b01||stringOptions['secret'];var _0x293d75=crypto['createCipher'](_0x1b82ec,_0x55eedc);var _0x439ec2=_0x293d75['update'](_0x22b99f,_0x8c2c('0x1a'),_0x8c2c('0x1b'));_0x439ec2+=_0x293d75['final'](_0x8c2c('0x1b'));return _0x439ec2;};exports[_0x8c2c('0x1c')]=function(_0x4d27c1,_0x177142,_0x18a7b1){var _0x770979=_0x18a7b1||stringOptions['algorithm'];var _0xbd5349=_0x177142||stringOptions[_0x8c2c('0x1d')];var _0x3e17a7=crypto[_0x8c2c('0x18')](_0x770979,_0xbd5349);var _0x39f73c=_0x3e17a7[_0x8c2c('0x10')](_0x4d27c1,_0x8c2c('0x1b'),_0x8c2c('0x1a'));_0x39f73c+=_0x3e17a7[_0x8c2c('0x14')](_0x8c2c('0x1a'));return _0x39f73c;};
\ No newline at end of file
+var _0xbc4f=['encryptFile','createReadStream','createWriteStream','data','update','binary','write','final','createDecipher','end','close','unlink','utf8','decryptString','base64','crypto','bluebird','lodash','app','secrets','session','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty'];(function(_0x254883,_0x4f0da6){var _0xb9e6ea=function(_0x30edf9){while(--_0x30edf9){_0x254883['push'](_0x254883['shift']());}};_0xb9e6ea(++_0x4f0da6);}(_0xbc4f,0x195));var _0xfbc4=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xbc4f[_0x1c546c];return _0x2cc384;};'use strict';var crypto=require(_0xfbc4('0x0'));var fs=require('fs');var BPromise=require(_0xfbc4('0x1'));var _=require(_0xfbc4('0x2'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0xfbc4('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xfbc4('0x4')][_0xfbc4('0x5')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0xfbc4('0x6')};if(config[_0xfbc4('0x7')]&&config[_0xfbc4('0x7')][_0xfbc4('0x8')]){var isSupported=isAlgorithmSupported(config[_0xfbc4('0x7')][_0xfbc4('0x8')]);if(isSupported){fileOptions[_0xfbc4('0x8')]=config[_0xfbc4('0x7')][_0xfbc4('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xfbc4('0x9')](',\x20');logger['error'](config['encrypt'][_0xfbc4('0x8')],_0xfbc4('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x35fe48){return AES_SUPPORTED_RX[_0xfbc4('0xb')](_0x35fe48);}function getSupportedCiphers(){return crypto[_0xfbc4('0xc')]()[_0xfbc4('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x53afd0){return getSupportedCiphers()['indexOf'](_0x53afd0)>-0x1;}function combineOptions(_0x49a6e3){var _0x457c51={};for(var _0x340118 in fileOptions){if(fileOptions['hasOwnProperty'](_0x340118)){_0x457c51[_0x340118]=fileOptions[_0x340118];}}if(_0x49a6e3){for(var _0x19904e in _0x49a6e3){if(_0x49a6e3[_0xfbc4('0xe')](_0x19904e)){_0x457c51[_0x19904e]=_0x49a6e3[_0x19904e];}}}return _0x457c51;}exports[_0xfbc4('0xf')]=function(_0x5805d0,_0x1ed8ed,_0x22d139,_0x3e2de3){return new BPromise(function(_0x5195ef,_0x51c4b0){_0x3e2de3=combineOptions(_0x3e2de3);var _0x40c23e=new Buffer(_0x22d139);var _0x15697d=fs[_0xfbc4('0x10')](_0x5805d0);var _0x50bc71=fs[_0xfbc4('0x11')](_0x1ed8ed);var _0x1397c3=crypto['createCipher'](_0x3e2de3['algorithm'],_0x40c23e);_0x15697d['on'](_0xfbc4('0x12'),function(_0x477c18){var _0x16eead=new Buffer(_0x1397c3[_0xfbc4('0x13')](_0x477c18),_0xfbc4('0x14'));_0x50bc71[_0xfbc4('0x15')](_0x16eead);});_0x15697d['on']('end',function(){try{var _0xef690e=new Buffer(_0x1397c3[_0xfbc4('0x16')](_0xfbc4('0x14')),_0xfbc4('0x14'));_0x50bc71[_0xfbc4('0x15')](_0xef690e);_0x50bc71['end']();_0x50bc71['on']('close',function(){return _0x5195ef(_0x1ed8ed);});}catch(_0x59131a){fs['unlink'](_0x1ed8ed);return _0x51c4b0(_0x59131a);}});});};exports['decryptFile']=function(_0x4d3632,_0x3ac6a7,_0x32fa74,_0x34caee){return new BPromise(function(_0x117bdb,_0x5741ce){_0x34caee=combineOptions(_0x34caee);var _0x5b925a=new Buffer(_0x32fa74);var _0x4c3835=fs[_0xfbc4('0x10')](_0x4d3632);var _0x365eb9=fs['createWriteStream'](_0x3ac6a7);var _0x29f133=crypto[_0xfbc4('0x17')](_0x34caee['algorithm'],_0x5b925a);_0x4c3835['on']('data',function(_0x21f30a){var _0xd46d16=new Buffer(_0x29f133[_0xfbc4('0x13')](_0x21f30a),_0xfbc4('0x14'));_0x365eb9['write'](_0xd46d16);});_0x4c3835['on'](_0xfbc4('0x18'),function(){try{var _0x4b3c2d=new Buffer(_0x29f133[_0xfbc4('0x16')](_0xfbc4('0x14')),_0xfbc4('0x14'));_0x365eb9['write'](_0x4b3c2d);_0x365eb9[_0xfbc4('0x18')]();_0x365eb9['on'](_0xfbc4('0x19'),function(){return _0x117bdb(_0x3ac6a7);});}catch(_0x37b52b){fs[_0xfbc4('0x1a')](_0x3ac6a7);return _0x5741ce(_0x37b52b);}});});};exports['encryptString']=function(_0x3924db,_0x18ec35,_0xa0c11f){var _0x5f340d=_0xa0c11f||stringOptions[_0xfbc4('0x8')];var _0xabf1fc=_0x18ec35||stringOptions['secret'];var _0x1840c2=crypto['createCipher'](_0x5f340d,_0xabf1fc);var _0x527ebf=_0x1840c2[_0xfbc4('0x13')](_0x3924db,_0xfbc4('0x1b'),'base64');_0x527ebf+=_0x1840c2[_0xfbc4('0x16')]('base64');return _0x527ebf;};exports[_0xfbc4('0x1c')]=function(_0x30ec21,_0x555e6a,_0x2c6240){var _0x248e9d=_0x2c6240||stringOptions[_0xfbc4('0x8')];var _0x56d51b=_0x555e6a||stringOptions['secret'];var _0x3b61b5=crypto[_0xfbc4('0x17')](_0x248e9d,_0x56d51b);var _0x2cb429=_0x3b61b5[_0xfbc4('0x13')](_0x30ec21,_0xfbc4('0x1d'),_0xfbc4('0x1b'));_0x2cb429+=_0x3b61b5[_0xfbc4('0x16')]('utf8');return _0x2cb429;};
\ No newline at end of file
index b72818f..1d9fc63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bb2=['Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','path','to-csv','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','splitSizeCsv','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','length','forEach','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.csv','mkdirSync','join','%s.%s','csv','writeFileSync','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed'];(function(_0x264b9b,_0xa1181e){var _0x4c7a0e=function(_0x4b77a0){while(--_0x4b77a0){_0x264b9b['push'](_0x264b9b['shift']());}};_0x4c7a0e(++_0xa1181e);}(_0x4bb2,0x19c));var _0x24bb=function(_0x3763ac,_0x49be83){_0x3763ac=_0x3763ac-0x0;var _0x2ee6e3=_0x4bb2[_0x3763ac];return _0x2ee6e3;};'use strict';var util=require('util');var path=require(_0x24bb('0x0'));var _=require('lodash');var csv=require(_0x24bb('0x1'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require(_0x24bb('0x2'))['db'];var dbH=require(_0x24bb('0x2'))[_0x24bb('0x3')];var logger=require(_0x24bb('0x4'))(_0x24bb('0x5'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x24bb('0x6')][0x3];var PATH=process[_0x24bb('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1b0dcf,_0x3ccc99){var _0x44bf22={'status':_0x1b0dcf};var _0xb8a27={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3ccc99){_0x44bf22[_0x24bb('0x7')]=_0x3ccc99;}return db[_0x24bb('0x8')]['update'](_0x44bf22,_0xb8a27);}function main(){var _0x36ea2c=0x1388;var _0x1c40d5;logger[_0x24bb('0x9')](util[_0x24bb('0xa')](_0x24bb('0xb'),EXTRACTED_REPORT_ID,_0x24bb('0xc')));return db[_0x24bb('0xd')][_0x24bb('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x24bb('0xf')]})[_0x24bb('0x10')](function(_0x24077b){if(_0x24077b){_0x1c40d5=_0x24077b;_0x36ea2c=_0x1c40d5['splitSizeCsv']||0x1388;}})[_0x24bb('0x10')](function(){return dbH[_0x24bb('0x11')]['query'](util[_0x24bb('0xa')](_0x24bb('0x12'),QUERY),{'type':dbH[_0x24bb('0x11')][_0x24bb('0x13')][_0x24bb('0x14')]});})[_0x24bb('0x10')](function(_0x3d5410){if(!_0x3d5410[0x0][_0x24bb('0x15')]){return analyticExtractedReport(_0x24bb('0x16'));}var _0x3d17b2=[];var _0x3cde4f=0x0;if(_0x1c40d5[_0x24bb('0x17')]){if(_0x3d5410&&_0x3d5410[_0x24bb('0x18')]){var _0x42d44c=_['range'](_0x3d5410[0x0][_0x24bb('0x15')]/_0x36ea2c);var _0x25b9b7=Number['isInteger'](_0x3d5410[0x0][_0x24bb('0x15')]/_0x36ea2c)?_0x3d5410[0x0][_0x24bb('0x15')]%_0x36ea2c:0x0;_0x42d44c[_0x24bb('0x19')](function(_0x4ac359){if(_0x4ac359>0x0){_0x3cde4f+=_0x36ea2c;}_0x3d17b2[_0x24bb('0x1a')](dbH[_0x24bb('0x11')][_0x24bb('0x1b')](util['format'](_0x24bb('0x1c'),QUERY,_0x36ea2c,_0x3cde4f),{'type':dbH[_0x24bb('0x11')][_0x24bb('0x13')][_0x24bb('0x14')]}));});if(_0x25b9b7>0x0){_0x3cde4f+=_0x36ea2c;_0x3d17b2[_0x24bb('0x1a')](dbH[_0x24bb('0x11')]['query'](util[_0x24bb('0xa')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x25b9b7,_0x3cde4f),{'type':dbH[_0x24bb('0x11')][_0x24bb('0x13')][_0x24bb('0x14')]}));}}}else{_0x3d17b2[_0x24bb('0x1a')](dbH[_0x24bb('0x11')][_0x24bb('0x1b')](QUERY,{'type':dbH['sequelize'][_0x24bb('0x13')][_0x24bb('0x14')]}));}var _0x1885f0=path[_0x24bb('0x1d')](PATH);var _0x2fdbe0=path['basename'](PATH,_0x24bb('0x1e'));var _0x3d0e83=_0x1c40d5[_0x24bb('0x17')]&&_0x3d17b2['length']>0x1;var _0x3ceee9=[];if(!fs['existsSync'](path['join'](_0x1885f0,_0x2fdbe0))&&_0x3d0e83){fs[_0x24bb('0x1f')](path[_0x24bb('0x20')](_0x1885f0,_0x2fdbe0));}return BPromise['each'](_0x3d17b2,function(_0xe99250){_0x3ceee9['push'](_0xe99250);})[_0x24bb('0x10')](function(){for(var _0x52c3c9=0x0;_0x52c3c9<_0x3ceee9[_0x24bb('0x18')];_0x52c3c9+=0x1){var _0x4b349a;var _0x348092=_0x3ceee9[_0x52c3c9];if(_0x3d0e83){_0x4b349a=path['join'](_0x1885f0,_0x2fdbe0,util[_0x24bb('0xa')]('%s%d.%s',_0x2fdbe0,_0x52c3c9,'csv'));}else{_0x4b349a=path['join'](_0x1885f0,util[_0x24bb('0xa')](_0x24bb('0x21'),_0x2fdbe0,_0x24bb('0x22')));}fs[_0x24bb('0x23')](_0x4b349a,csv(_0x348092));}})[_0x24bb('0x10')](function(){if(_0x3d0e83){return new Promise(function(_0x15875f){zipdir(path[_0x24bb('0x20')](_0x1885f0,_0x2fdbe0),{'saveTo':path['join'](_0x1885f0,util[_0x24bb('0xa')]('%s.%s',_0x2fdbe0,_0x24bb('0x24')))},function(_0x43f625,_0x328f97){rimraf(path[_0x24bb('0x20')](_0x1885f0,_0x2fdbe0),function(){});_0x15875f('zip\x20finished');});});}})[_0x24bb('0x10')](function(){logger[_0x24bb('0x9')](util[_0x24bb('0xa')](_0x24bb('0x25'),EXTRACTED_REPORT_ID,_0x24bb('0xc')));return analyticExtractedReport(_0x24bb('0x26'),_0x3d0e83?util[_0x24bb('0xa')](_0x24bb('0x21'),_0x2fdbe0,_0x3d0e83?_0x24bb('0x24'):'csv'):null);});})[_0x24bb('0x27')](function(_0x2e28d3){logger['info'](util[_0x24bb('0xa')](_0x24bb('0x28'),EXTRACTED_REPORT_ID,'CSV'),util[_0x24bb('0x29')](_0x2e28d3,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x24bb('0x2a'));})[_0x24bb('0x2b')](function(){process[_0x24bb('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x8083=['%s.%s','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','inspect','Failed','finally','exit','util','path','to-csv','bluebird','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','format','SELECT','num','Empty','length','range','isInteger','%s\x20limit\x20%d\x20OFFSET\x20%d','push','QueryTypes','dirname','basename','.csv','existsSync','join','each','csv'];(function(_0x385fed,_0x3a4757){var _0x52fa25=function(_0x3ae7a7){while(--_0x3ae7a7){_0x385fed['push'](_0x385fed['shift']());}};_0x52fa25(++_0x3a4757);}(_0x8083,0x18b));var _0x3808=function(_0x249f8c,_0xfb3946){_0x249f8c=_0x249f8c-0x0;var _0x5e224a=_0x8083[_0x249f8c];return _0x5e224a;};'use strict';var util=require(_0x3808('0x0'));var path=require(_0x3808('0x1'));var _=require('lodash');var csv=require(_0x3808('0x2'));var fs=require('fs');var BPromise=require(_0x3808('0x3'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require(_0x3808('0x4'))['db'];var dbH=require(_0x3808('0x4'))['dbH'];var logger=require(_0x3808('0x5'))(_0x3808('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x3808('0x7')][0x2]);var QUERY=process[_0x3808('0x7')][0x3];var PATH=process[_0x3808('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x362d65,_0x360367){var _0x539fa6={'status':_0x362d65};var _0x509c21={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x360367){_0x539fa6[_0x3808('0x8')]=_0x360367;}return db[_0x3808('0x9')][_0x3808('0xa')](_0x539fa6,_0x509c21);}function main(){var _0x17a789=0x1388;var _0x39d717;logger[_0x3808('0xb')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x3808('0xc')));return db[_0x3808('0xd')][_0x3808('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x3808('0xf'),_0x3808('0x10')]})[_0x3808('0x11')](function(_0x560b8a){if(_0x560b8a){_0x39d717=_0x560b8a;_0x17a789=_0x39d717[_0x3808('0x10')]||0x1388;}})[_0x3808('0x11')](function(){return dbH[_0x3808('0x12')][_0x3808('0x13')](util[_0x3808('0x14')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x3808('0x12')]['QueryTypes'][_0x3808('0x15')]});})[_0x3808('0x11')](function(_0x5e3407){if(!_0x5e3407[0x0][_0x3808('0x16')]){return analyticExtractedReport(_0x3808('0x17'));}var _0x129316=[];var _0xfd7f2b=0x0;if(_0x39d717['split']){if(_0x5e3407&&_0x5e3407[_0x3808('0x18')]){var _0x28084c=_[_0x3808('0x19')](_0x5e3407[0x0][_0x3808('0x16')]/_0x17a789);var _0x4eb0ba=Number[_0x3808('0x1a')](_0x5e3407[0x0][_0x3808('0x16')]/_0x17a789)?_0x5e3407[0x0][_0x3808('0x16')]%_0x17a789:0x0;_0x28084c['forEach'](function(_0x2e697e){if(_0x2e697e>0x0){_0xfd7f2b+=_0x17a789;}_0x129316['push'](dbH['sequelize']['query'](util[_0x3808('0x14')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x17a789,_0xfd7f2b),{'type':dbH[_0x3808('0x12')]['QueryTypes'][_0x3808('0x15')]}));});if(_0x4eb0ba>0x0){_0xfd7f2b+=_0x17a789;_0x129316['push'](dbH['sequelize'][_0x3808('0x13')](util['format'](_0x3808('0x1b'),QUERY,_0x4eb0ba,_0xfd7f2b),{'type':dbH[_0x3808('0x12')]['QueryTypes'][_0x3808('0x15')]}));}}}else{_0x129316[_0x3808('0x1c')](dbH[_0x3808('0x12')][_0x3808('0x13')](QUERY,{'type':dbH[_0x3808('0x12')][_0x3808('0x1d')]['SELECT']}));}var _0x24b09d=path[_0x3808('0x1e')](PATH);var _0x33a150=path[_0x3808('0x1f')](PATH,_0x3808('0x20'));var _0x33cf2e=_0x39d717['split']&&_0x129316[_0x3808('0x18')]>0x1;var _0x5b417c=[];if(!fs[_0x3808('0x21')](path[_0x3808('0x22')](_0x24b09d,_0x33a150))&&_0x33cf2e){fs['mkdirSync'](path[_0x3808('0x22')](_0x24b09d,_0x33a150));}return BPromise[_0x3808('0x23')](_0x129316,function(_0x48773d){_0x5b417c[_0x3808('0x1c')](_0x48773d);})['then'](function(){for(var _0x42fdf5=0x0;_0x42fdf5<_0x5b417c['length'];_0x42fdf5+=0x1){var _0x4a3e5d;var _0x23829b=_0x5b417c[_0x42fdf5];if(_0x33cf2e){_0x4a3e5d=path[_0x3808('0x22')](_0x24b09d,_0x33a150,util[_0x3808('0x14')]('%s%d.%s',_0x33a150,_0x42fdf5,_0x3808('0x24')));}else{_0x4a3e5d=path[_0x3808('0x22')](_0x24b09d,util[_0x3808('0x14')](_0x3808('0x25'),_0x33a150,_0x3808('0x24')));}fs[_0x3808('0x26')](_0x4a3e5d,csv(_0x23829b));}})[_0x3808('0x11')](function(){if(_0x33cf2e){return new Promise(function(_0x69ffaf){zipdir(path[_0x3808('0x22')](_0x24b09d,_0x33a150),{'saveTo':path['join'](_0x24b09d,util[_0x3808('0x14')](_0x3808('0x25'),_0x33a150,'zip'))},function(_0x879c76,_0x4bf11){rimraf(path[_0x3808('0x22')](_0x24b09d,_0x33a150),function(){});_0x69ffaf(_0x3808('0x27'));});});}})[_0x3808('0x11')](function(){logger[_0x3808('0xb')](util[_0x3808('0x14')](_0x3808('0x28'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x3808('0x29'),_0x33cf2e?util[_0x3808('0x14')](_0x3808('0x25'),_0x33a150,_0x33cf2e?_0x3808('0x2a'):_0x3808('0x24')):null);});})[_0x3808('0x2b')](function(_0xf883c){logger[_0x3808('0xb')](util[_0x3808('0x14')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x3808('0xc')),util[_0x3808('0x2c')](_0xf883c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x3808('0x2d'));})[_0x3808('0x2e')](function(){process[_0x3808('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index 241a853..22bd5e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e2=['all','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','interactionId','center','Interaction\x20Transcript','header','footer','pipe','createWriteStream','finish','error','end','lodash','util','path','moment','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','tableHeader','map','pick','toString','value','fill','length','auto','push','body','concat','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','pageBreak','before','margin','landscape','\x20/\x20','Arial','black','right','Empty','find','splitSizePdf','then','range','num','isInteger','sequelize','query','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','split','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','%s.%s','pdf'];(function(_0x544499,_0x4adf0e){var _0x1f22ba=function(_0x4a6079){while(--_0x4a6079){_0x544499['push'](_0x544499['shift']());}};_0x1f22ba(++_0x4adf0e);}(_0x98e2,0x185));var _0x298e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x98e2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x298e('0x0'));var fs=require('fs');var util=require(_0x298e('0x1'));var path=require(_0x298e('0x2'));var moment=require(_0x298e('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x298e('0x4'));var zipdir=require(_0x298e('0x5'));var rimraf=require(_0x298e('0x6'));var JSDOM=require(_0x298e('0x7'))[_0x298e('0x8')];var window=new JSDOM('')[_0x298e('0x9')];var BPromise=require(_0x298e('0xa'));var db=require(_0x298e('0xb'))['db'];var dbH=require(_0x298e('0xb'))[_0x298e('0xc')];var logger=require('../../config/logger')(_0x298e('0xd'));var EXTRACTED_REPORT_ID=Number(process[_0x298e('0xe')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x298e('0xe')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x298e('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x5dddb0,_0x310691){var _0x52125e={'status':_0x5dddb0};var _0x2ff086={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x310691){_0x52125e[_0x298e('0x10')]=_0x310691;}return db['AnalyticExtractedReport']['update'](_0x52125e,_0x2ff086);}function getHeaders(_0x54eaf8){return _['map'](_0x54eaf8,function(_0x1817e4){return{'text':_0x1817e4,'style':_0x298e('0x11')};});}function getRows(_0x19b10e,_0x325fa3){return _[_0x298e('0x12')](_0x325fa3,function(_0x3d324b){return _(_0x3d324b)[_0x298e('0x13')](_0x19b10e)[_0x298e('0x12')](function(_0x259766){return _0x259766?_[_0x298e('0x14')](_0x259766):'';})[_0x298e('0x15')]();});}function createTable(_0x263ac0,_0x3c2070){var _0x4814dd={'widths':_[_0x298e('0x16')](Array(_0x263ac0[_0x298e('0x17')]),0x91),'heights':function(_0x5e9f55){return _0x5e9f55===0x0?_0x298e('0x18'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x2c4af0=getHeaders(_0x263ac0);_0x4814dd['body'][_0x298e('0x19')](_0x2c4af0);var _0x3443b5=getRows(_0x263ac0,_0x3c2070);_0x4814dd[_0x298e('0x1a')]=_0x4814dd[_0x298e('0x1a')][_0x298e('0x1b')](_0x3443b5);return _0x4814dd;}function createTables(_0x544917){var _0x13ea0b=[];var _0x179b46=_[_0x298e('0x1c')](Object['keys'](_0x544917[0x0]),0x5);_0x179b46[_0x298e('0x1d')](function(_0x472274){_0x13ea0b['push'](createTable(_0x472274,_0x544917));});return _0x13ea0b;}function getPDFDocDefinition(_0x1fa19e){var _0x2977da=util[_0x298e('0x1e')](_0x298e('0x1f'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x298e('0x20')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x298e('0x21')])[_0x298e('0x1e')](FORMAT));var _0x26a229=[];for(var _0x300ac5=0x0;_0x300ac5<_0x1fa19e['length'];_0x300ac5++){var _0x7f61c8=[];if(_0x300ac5===0x0){_0x7f61c8[_0x298e('0x19')]({'text':_0x2977da,'style':'header'});}var _0x2018e5={'table':_0x1fa19e[_0x300ac5]};if(_0x300ac5>0x0){_0x2018e5[_0x298e('0x22')]=_0x298e('0x23');_0x2018e5[_0x298e('0x24')]=[0x0,0x46,0x0,0x0];}_0x7f61c8['push'](_0x2018e5);_0x26a229[_0x298e('0x19')](_0x7f61c8);}return{'pageSize':'A4','pageOrientation':_0x298e('0x25'),'content':_0x26a229,'footer':function(_0xb65d74,_0xd0bb92){return{'text':_0xb65d74[_0x298e('0x14')]()+_0x298e('0x26')+_0xd0bb92,'style':'footer'};},'defaultStyle':{'font':_0x298e('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x298e('0x28')},'footer':{'alignment':_0x298e('0x29'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x379fb4){var _0x2fe7e9=0x1388;var _0x903bb1;if(!_0x379fb4[0x0]['num']){return analyticExtractedReport(_0x298e('0x2a'));}return db['Setting'][_0x298e('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x298e('0x2c')]})['then'](function(_0x4b8901){if(_0x4b8901){_0x903bb1=_0x4b8901;_0x2fe7e9=_0x903bb1[_0x298e('0x2c')]||0x3e8;}})[_0x298e('0x2d')](function(){var _0xfc8bc1=[];var _0x563279=0x0;if(_0x903bb1['split']){if(_0x379fb4&&_0x379fb4[_0x298e('0x17')]){var _0x41a115=_[_0x298e('0x2e')](_0x379fb4[0x0][_0x298e('0x2f')]/_0x2fe7e9);var _0x5b6c72=Number[_0x298e('0x30')](_0x379fb4[0x0][_0x298e('0x2f')]/_0x2fe7e9)?_0x379fb4[0x0][_0x298e('0x2f')]%_0x2fe7e9:0x0;_0x41a115[_0x298e('0x1d')](function(_0x372246){if(_0x372246>0x0){_0x563279+=_0x2fe7e9;}_0xfc8bc1[_0x298e('0x19')](dbH[_0x298e('0x31')][_0x298e('0x32')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2fe7e9,_0x563279),{'type':dbH[_0x298e('0x31')][_0x298e('0x33')][_0x298e('0x34')]}));});if(_0x5b6c72>0x0){_0x563279+=_0x2fe7e9;_0xfc8bc1[_0x298e('0x19')](dbH['sequelize'][_0x298e('0x32')](util['format'](_0x298e('0x35'),QUERY,_0x5b6c72,_0x563279),{'type':dbH[_0x298e('0x31')]['QueryTypes']['SELECT']}));}}}else{_0xfc8bc1[_0x298e('0x19')](dbH[_0x298e('0x31')][_0x298e('0x32')](QUERY,{'type':dbH[_0x298e('0x31')]['QueryTypes'][_0x298e('0x34')]}));}var _0x126ddb=path[_0x298e('0x36')](PATH);var _0x393935=path[_0x298e('0x37')](PATH,'.pdf');var _0x3dbc61=_0x903bb1[_0x298e('0x38')]&&_0xfc8bc1[_0x298e('0x17')]>0x1;var _0x48f3b6=[];if(!fs[_0x298e('0x39')](path[_0x298e('0x3a')](_0x126ddb,_0x393935))&&_0x3dbc61){fs[_0x298e('0x3b')](path[_0x298e('0x3a')](_0x126ddb,_0x393935));}return BPromise[_0x298e('0x3c')](_0xfc8bc1,function(_0x5d025a){_0x48f3b6[_0x298e('0x19')](_0x5d025a);})[_0x298e('0x2d')](function(){var _0x472db8=[];for(var _0x276409=0x0;_0x276409<_0x48f3b6[_0x298e('0x17')];_0x276409+=0x1){var _0x573e06=_0x48f3b6[_0x276409];var _0x3232f1=createTables(_[_0x298e('0x3d')](_0x573e06));var _0x48185b;var _0x21a0e1=getPDFDocDefinition(_0x3232f1);var _0x494419=getPDFPrinter();var _0x4d870c=_0x494419[_0x298e('0x3e')](_0x21a0e1);if(_0x3dbc61){_0x48185b=path['join'](_0x126ddb,_0x393935,util[_0x298e('0x1e')](_0x298e('0x3f'),_0x393935,_0x276409,'pdf'));}else{_0x48185b=path[_0x298e('0x3a')](_0x126ddb,util['format'](_0x298e('0x40'),_0x393935,_0x298e('0x41')));}_0x472db8[_0x298e('0x19')](writePDFDocument(_0x4d870c,_0x48185b));}return Promise[_0x298e('0x42')](_0x472db8);})[_0x298e('0x2d')](function(){if(_0x3dbc61){return new Promise(function(_0x120547){zipdir(path[_0x298e('0x3a')](_0x126ddb,_0x393935),{'saveTo':path['join'](_0x126ddb,util[_0x298e('0x1e')](_0x298e('0x40'),_0x393935,_0x298e('0x43')))},function(){rimraf(path['join'](_0x126ddb,_0x393935),function(){});_0x120547('zip\x20finished');});});}})['then'](function(){if(!_0x3dbc61)return;rimraf(path['join'](_0x126ddb,_0x393935),function(){});})[_0x298e('0x2d')](function(){logger['info'](util[_0x298e('0x1e')](_0x298e('0x44'),EXTRACTED_REPORT_ID,_0x298e('0x45')));return analyticExtractedReport(_0x298e('0x46'),_0x3dbc61?util[_0x298e('0x1e')](_0x298e('0x40'),_0x393935,_0x3dbc61?_0x298e('0x43'):_0x298e('0x41')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x298e('0x47')](util[_0x298e('0x1e')](_0x298e('0x48'),EXTRACTED_REPORT_ID,_0x298e('0x45')));return db['AnalyticExtractedReport']['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x298e('0x2d')](function(_0x5a91ef){EXTRACTED_REPORT=_0x5a91ef;return dbH[_0x298e('0x31')]['query'](util['format'](_0x298e('0x49'),QUERY),{'type':dbH[_0x298e('0x31')][_0x298e('0x33')][_0x298e('0x34')]});})[_0x298e('0x2d')](extractReport)[_0x298e('0x4a')](function(_0x90eedc){logger[_0x298e('0x47')](util[_0x298e('0x1e')](_0x298e('0x4b'),EXTRACTED_REPORT_ID,'PDF'),util[_0x298e('0x4c')](_0x90eedc,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x298e('0x4d'));})['finally'](function(){process[_0x298e('0x4e')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3bec0a=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x298e('0x4f'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x298e('0x50')}});return _0x3bec0a;}function getPDFDocDefinitionFromHTML(_0x3c1767,_0x35d0ce){var _0x48bb50=util[_0x298e('0x1e')]('%s\x20#%d',_0x35d0ce['channel'],_0x35d0ce[_0x298e('0x51')]);var _0x6338dc=moment()[_0x298e('0x1e')]('YYYY-MM-DD')['toString']();var _0x44755a=htmlToPdfmake(_0x3c1767,{'window':window,'tableAutoSize':!![]});return{'content':[_0x44755a],'defaultStyle':{'font':_0x298e('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x298e('0x52'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x298e('0x52'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x298e('0x52')}},'header':function(){return[{'text':_0x298e('0x53'),'style':_0x298e('0x54')}];},'footer':function(_0x4297fe,_0x2c597a){return[{'text':util['format']('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x48bb50,_0x4297fe,_0x2c597a,_0x6338dc),'style':_0x298e('0x55')}];}};}function writePDFDocument(_0x5b48e7,_0x2fc384){return new Promise(function(_0x6ed5c8,_0x3c2914){var _0x3e5920=_0x5b48e7[_0x298e('0x56')](fs[_0x298e('0x57')](_0x2fc384));_0x3e5920['on'](_0x298e('0x58'),function(){_0x6ed5c8(_0x298e('0x58'));});_0x3e5920['on'](_0x298e('0x59'),function(_0x33cfe7){_0x3c2914(_0x33cfe7);});_0x5b48e7[_0x298e('0x5a')]();});}exports['createPdfFromHTML']=function(_0x3a7010,_0x12aa26){var _0x5339e4=getPDFPrinter();var _0x2b74ce=getPDFDocDefinitionFromHTML(_0x3a7010,_0x12aa26);var _0x8df04f=_0x5339e4[_0x298e('0x3e')](_0x2b74ce);return writePDFDocument(_0x8df04f,_0x12aa26[_0x298e('0x2')])['catch'](function(_0x361a6d){throw _0x361a6d;});};
\ No newline at end of file
+var _0x46b4=['createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','body','push','concat','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','header','pageBreak','before','margin','landscape','footer','black','right','num','Empty','Setting','splitSizePdf','then','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','basename','.pdf','split','existsSync','join','mkdirSync','each','flatten','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','interactionId','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','pipe'];(function(_0x40eddd,_0x3164f8){var _0x3c8220=function(_0x400f79){while(--_0x400f79){_0x40eddd['push'](_0x40eddd['shift']());}};_0x3c8220(++_0x3164f8);}(_0x46b4,0xc5));var _0x446b=function(_0xd2ca1,_0x269df5){_0xd2ca1=_0xd2ca1-0x0;var _0x5913b6=_0x46b4[_0xd2ca1];return _0x5913b6;};'use strict';var _=require(_0x446b('0x0'));var fs=require('fs');var util=require(_0x446b('0x1'));var path=require(_0x446b('0x2'));var moment=require(_0x446b('0x3'));var htmlToPdfmake=require(_0x446b('0x4'));var PdfPrinter=require(_0x446b('0x5'));var zipdir=require(_0x446b('0x6'));var rimraf=require(_0x446b('0x7'));var JSDOM=require(_0x446b('0x8'))[_0x446b('0x9')];var window=new JSDOM('')[_0x446b('0xa')];var BPromise=require(_0x446b('0xb'));var db=require(_0x446b('0xc'))['db'];var dbH=require(_0x446b('0xc'))[_0x446b('0xd')];var logger=require(_0x446b('0xe'))(_0x446b('0xf'));var EXTRACTED_REPORT_ID=Number(process[_0x446b('0x10')][0x2]);var QUERY=process[_0x446b('0x10')][0x3];var PATH=process[_0x446b('0x10')][0x4];var NAME=process[_0x446b('0x10')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3caebc,_0x52e30a){var _0x43340c={'status':_0x3caebc};var _0xe76393={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x52e30a){_0x43340c['savename']=_0x52e30a;}return db[_0x446b('0x11')][_0x446b('0x12')](_0x43340c,_0xe76393);}function getHeaders(_0x1bd8ae){return _[_0x446b('0x13')](_0x1bd8ae,function(_0x50541e){return{'text':_0x50541e,'style':_0x446b('0x14')};});}function getRows(_0x43ea8b,_0x3ce3da){return _[_0x446b('0x13')](_0x3ce3da,function(_0x1a65b3){return _(_0x1a65b3)['pick'](_0x43ea8b)[_0x446b('0x13')](function(_0x4286c2){return _0x4286c2?_[_0x446b('0x15')](_0x4286c2):'';})[_0x446b('0x16')]();});}function createTable(_0x5293f7,_0x5ec4bd){var _0x1b4ae6={'widths':_[_0x446b('0x17')](Array(_0x5293f7[_0x446b('0x18')]),0x91),'heights':function(_0xd4dd03){return _0xd4dd03===0x0?_0x446b('0x19'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5d1e3d=getHeaders(_0x5293f7);_0x1b4ae6[_0x446b('0x1a')][_0x446b('0x1b')](_0x5d1e3d);var _0x14d348=getRows(_0x5293f7,_0x5ec4bd);_0x1b4ae6[_0x446b('0x1a')]=_0x1b4ae6[_0x446b('0x1a')][_0x446b('0x1c')](_0x14d348);return _0x1b4ae6;}function createTables(_0x38f75b){var _0xf52658=[];var _0x3d0e24=_[_0x446b('0x1d')](Object['keys'](_0x38f75b[0x0]),0x5);_0x3d0e24[_0x446b('0x1e')](function(_0x439650){_0xf52658[_0x446b('0x1b')](createTable(_0x439650,_0x38f75b));});return _0xf52658;}function getPDFDocDefinition(_0x3fa79c){var _0x496f37=util[_0x446b('0x1f')](_0x446b('0x20'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x446b('0x21')])[_0x446b('0x1f')](FORMAT),moment(EXTRACTED_REPORT[_0x446b('0x22')])[_0x446b('0x1f')](FORMAT));var _0x46e1ba=[];for(var _0x48c5dd=0x0;_0x48c5dd<_0x3fa79c[_0x446b('0x18')];_0x48c5dd++){var _0x48a8d4=[];if(_0x48c5dd===0x0){_0x48a8d4['push']({'text':_0x496f37,'style':_0x446b('0x23')});}var _0x2d2a71={'table':_0x3fa79c[_0x48c5dd]};if(_0x48c5dd>0x0){_0x2d2a71[_0x446b('0x24')]=_0x446b('0x25');_0x2d2a71[_0x446b('0x26')]=[0x0,0x46,0x0,0x0];}_0x48a8d4[_0x446b('0x1b')](_0x2d2a71);_0x46e1ba[_0x446b('0x1b')](_0x48a8d4);}return{'pageSize':'A4','pageOrientation':_0x446b('0x27'),'content':_0x46e1ba,'footer':function(_0x587f18,_0x2af366){return{'text':_0x587f18[_0x446b('0x15')]()+'\x20/\x20'+_0x2af366,'style':_0x446b('0x28')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x446b('0x29')},'footer':{'alignment':_0x446b('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x3f89a9){var _0x33cd95=0x1388;var _0x36bfb1;if(!_0x3f89a9[0x0][_0x446b('0x2b')]){return analyticExtractedReport(_0x446b('0x2c'));}return db[_0x446b('0x2d')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x446b('0x2e')]})[_0x446b('0x2f')](function(_0x1a80b4){if(_0x1a80b4){_0x36bfb1=_0x1a80b4;_0x33cd95=_0x36bfb1[_0x446b('0x2e')]||0x3e8;}})[_0x446b('0x2f')](function(){var _0x16d9db=[];var _0xec726d=0x0;if(_0x36bfb1['split']){if(_0x3f89a9&&_0x3f89a9[_0x446b('0x18')]){var _0x43a3b7=_[_0x446b('0x30')](_0x3f89a9[0x0][_0x446b('0x2b')]/_0x33cd95);var _0xe3c1f1=Number[_0x446b('0x31')](_0x3f89a9[0x0][_0x446b('0x2b')]/_0x33cd95)?_0x3f89a9[0x0][_0x446b('0x2b')]%_0x33cd95:0x0;_0x43a3b7[_0x446b('0x1e')](function(_0x24334c){if(_0x24334c>0x0){_0xec726d+=_0x33cd95;}_0x16d9db['push'](dbH['sequelize'][_0x446b('0x32')](util['format'](_0x446b('0x33'),QUERY,_0x33cd95,_0xec726d),{'type':dbH[_0x446b('0x34')][_0x446b('0x35')][_0x446b('0x36')]}));});if(_0xe3c1f1>0x0){_0xec726d+=_0x33cd95;_0x16d9db[_0x446b('0x1b')](dbH[_0x446b('0x34')]['query'](util[_0x446b('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0xe3c1f1,_0xec726d),{'type':dbH['sequelize']['QueryTypes'][_0x446b('0x36')]}));}}}else{_0x16d9db['push'](dbH['sequelize'][_0x446b('0x32')](QUERY,{'type':dbH[_0x446b('0x34')][_0x446b('0x35')][_0x446b('0x36')]}));}var _0x1b8469=path['dirname'](PATH);var _0x1277c0=path[_0x446b('0x37')](PATH,_0x446b('0x38'));var _0x44b717=_0x36bfb1[_0x446b('0x39')]&&_0x16d9db[_0x446b('0x18')]>0x1;var _0x30c628=[];if(!fs[_0x446b('0x3a')](path[_0x446b('0x3b')](_0x1b8469,_0x1277c0))&&_0x44b717){fs[_0x446b('0x3c')](path[_0x446b('0x3b')](_0x1b8469,_0x1277c0));}return BPromise[_0x446b('0x3d')](_0x16d9db,function(_0x1cadb6){_0x30c628['push'](_0x1cadb6);})[_0x446b('0x2f')](function(){var _0x192709=[];for(var _0x32b86=0x0;_0x32b86<_0x30c628[_0x446b('0x18')];_0x32b86+=0x1){var _0x32192c=_0x30c628[_0x32b86];var _0x33337e=createTables(_[_0x446b('0x3e')](_0x32192c));var _0xca622a;var _0x4f29c5=getPDFDocDefinition(_0x33337e);var _0x2447fb=getPDFPrinter();var _0x31d200=_0x2447fb['createPdfKitDocument'](_0x4f29c5);if(_0x44b717){_0xca622a=path[_0x446b('0x3b')](_0x1b8469,_0x1277c0,util[_0x446b('0x1f')](_0x446b('0x3f'),_0x1277c0,_0x32b86,_0x446b('0x40')));}else{_0xca622a=path[_0x446b('0x3b')](_0x1b8469,util[_0x446b('0x1f')](_0x446b('0x41'),_0x1277c0,_0x446b('0x40')));}_0x192709[_0x446b('0x1b')](writePDFDocument(_0x31d200,_0xca622a));}return Promise[_0x446b('0x42')](_0x192709);})['then'](function(){if(_0x44b717){return new Promise(function(_0x4b2933){zipdir(path[_0x446b('0x3b')](_0x1b8469,_0x1277c0),{'saveTo':path[_0x446b('0x3b')](_0x1b8469,util[_0x446b('0x1f')](_0x446b('0x41'),_0x1277c0,_0x446b('0x43')))},function(){rimraf(path[_0x446b('0x3b')](_0x1b8469,_0x1277c0),function(){});_0x4b2933(_0x446b('0x44'));});});}})['then'](function(){if(!_0x44b717)return;rimraf(path['join'](_0x1b8469,_0x1277c0),function(){});})[_0x446b('0x2f')](function(){logger[_0x446b('0x45')](util[_0x446b('0x1f')](_0x446b('0x46'),EXTRACTED_REPORT_ID,_0x446b('0x47')));return analyticExtractedReport('Completed',_0x44b717?util[_0x446b('0x1f')](_0x446b('0x41'),_0x1277c0,_0x44b717?'zip':'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x446b('0x1f')](_0x446b('0x48'),EXTRACTED_REPORT_ID,_0x446b('0x47')));return db[_0x446b('0x11')][_0x446b('0x49')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x446b('0x2f')](function(_0x29d7e7){EXTRACTED_REPORT=_0x29d7e7;return dbH[_0x446b('0x34')][_0x446b('0x32')](util[_0x446b('0x1f')](_0x446b('0x4a'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x446b('0x36')]});})[_0x446b('0x2f')](extractReport)[_0x446b('0x4b')](function(_0x63ab04){logger[_0x446b('0x45')](util[_0x446b('0x1f')](_0x446b('0x4c'),EXTRACTED_REPORT_ID,'PDF'),util[_0x446b('0x4d')](_0x63ab04,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x446b('0x4e'));})[_0x446b('0x4f')](function(){process[_0x446b('0x50')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x405400=new PdfPrinter({'Arial':{'normal':__dirname+_0x446b('0x51'),'bold':__dirname+_0x446b('0x52'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x446b('0x53')}});return _0x405400;}function getPDFDocDefinitionFromHTML(_0x14e217,_0x41a67f){var _0x9d3007=util[_0x446b('0x1f')](_0x446b('0x54'),_0x41a67f['channel'],_0x41a67f[_0x446b('0x55')]);var _0x43d9ca=moment()[_0x446b('0x1f')](_0x446b('0x56'))[_0x446b('0x15')]();var _0x45b3c7=htmlToPdfmake(_0x14e217,{'window':window,'tableAutoSize':!![]});return{'content':[_0x45b3c7],'defaultStyle':{'font':_0x446b('0x57')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x446b('0x58'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x446b('0x58'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x446b('0x58')}},'header':function(){return[{'text':_0x446b('0x59'),'style':_0x446b('0x23')}];},'footer':function(_0x5b8423,_0x4283a1){return[{'text':util[_0x446b('0x1f')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x9d3007,_0x5b8423,_0x4283a1,_0x43d9ca),'style':_0x446b('0x28')}];}};}function writePDFDocument(_0x1b7605,_0x3cde54){return new Promise(function(_0x2c207e,_0x4aac53){var _0x5e3a4c=_0x1b7605[_0x446b('0x5a')](fs[_0x446b('0x5b')](_0x3cde54));_0x5e3a4c['on'](_0x446b('0x5c'),function(){_0x2c207e('finish');});_0x5e3a4c['on'](_0x446b('0x5d'),function(_0x32e8b6){_0x4aac53(_0x32e8b6);});_0x1b7605[_0x446b('0x5e')]();});}exports[_0x446b('0x5f')]=function(_0x22bbb7,_0x4042cb){var _0x3f4906=getPDFPrinter();var _0x55dff7=getPDFDocDefinitionFromHTML(_0x22bbb7,_0x4042cb);var _0x1e5523=_0x3f4906['createPdfKitDocument'](_0x55dff7);return writePDFDocument(_0x1e5523,_0x4042cb[_0x446b('0x2')])[_0x446b('0x4b')](function(_0x2301b7){throw _0x2301b7;});};
\ No newline at end of file
index 030bb59..dfd897b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf226=['XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','binary','zip','zip\x20finished','Completed','%s.%s','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format'];(function(_0x18242c,_0x17ef5f){var _0x47f808=function(_0x52f764){while(--_0x52f764){_0x18242c['push'](_0x18242c['shift']());}};_0x47f808(++_0x17ef5f);}(_0xf226,0x141));var _0x6f22=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf226[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x6f22('0x0'));var path=require(_0x6f22('0x1'));var _=require(_0x6f22('0x2'));var fs=require('fs');var json2xls=require(_0x6f22('0x3'));var BPromise=require(_0x6f22('0x4'));var zipdir=require(_0x6f22('0x5'));var rimraf=require(_0x6f22('0x6'));var db=require(_0x6f22('0x7'))['db'];var dbH=require(_0x6f22('0x7'))['dbH'];var logger=require('../../config/logger')(_0x6f22('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x6f22('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x48f111,_0x43cc84){var _0x23c654={'status':_0x48f111};var _0x14014d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x43cc84){_0x23c654[_0x6f22('0xa')]=_0x43cc84;}return db[_0x6f22('0xb')]['update'](_0x23c654,_0x14014d);}function main(){var _0x2a10f1=0x1388;var _0x34c09f;logger[_0x6f22('0xc')](util[_0x6f22('0xd')](_0x6f22('0xe'),EXTRACTED_REPORT_ID,_0x6f22('0xf')));return db[_0x6f22('0x10')][_0x6f22('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6f22('0x12'),'splitSizeXlsx']})['then'](function(_0x391354){if(_0x391354){_0x34c09f=_0x391354;_0x2a10f1=_0x34c09f[_0x6f22('0x13')]||0x1388;}})[_0x6f22('0x14')](function(){return dbH[_0x6f22('0x15')][_0x6f22('0x16')](util[_0x6f22('0xd')](_0x6f22('0x17'),QUERY),{'type':dbH[_0x6f22('0x15')][_0x6f22('0x18')][_0x6f22('0x19')]});})['then'](function(_0xefd78a){if(!_0xefd78a[0x0][_0x6f22('0x1a')]){return analyticExtractedReport('Empty');}var _0x3d9880=[];var _0x814277=0x0;if(_0x34c09f['split']){if(_0xefd78a&&_0xefd78a[_0x6f22('0x1b')]){var _0x568a1b=_['range'](_0xefd78a[0x0][_0x6f22('0x1a')]/_0x2a10f1);var _0x972dfd=Number['isInteger'](_0xefd78a[0x0]['num']/_0x2a10f1)?_0xefd78a[0x0]['num']%_0x2a10f1:0x0;_0x568a1b['forEach'](function(_0x23a950){if(_0x23a950>0x0){_0x814277+=_0x2a10f1;}_0x3d9880[_0x6f22('0x1c')](dbH[_0x6f22('0x15')][_0x6f22('0x16')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2a10f1,_0x814277),{'type':dbH['sequelize']['QueryTypes'][_0x6f22('0x19')]}));});if(_0x972dfd>0x0){_0x814277+=_0x2a10f1;_0x3d9880['push'](dbH[_0x6f22('0x15')][_0x6f22('0x16')](util[_0x6f22('0xd')](_0x6f22('0x1d'),QUERY,_0x972dfd,_0x814277),{'type':dbH['sequelize'][_0x6f22('0x18')][_0x6f22('0x19')]}));}}}else{_0x3d9880['push'](dbH[_0x6f22('0x15')][_0x6f22('0x16')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0x6f22('0x19')]}));}var _0x43e6c1=path[_0x6f22('0x1e')](PATH);var _0x5266a1=path[_0x6f22('0x1f')](PATH,_0x6f22('0x20'));var _0x241f9e=_0x34c09f['split']&&_0x3d9880[_0x6f22('0x1b')]>0x1;var _0x232ac5=[];if(!fs[_0x6f22('0x21')](path[_0x6f22('0x22')](_0x43e6c1,_0x5266a1))&&_0x241f9e){fs[_0x6f22('0x23')](path[_0x6f22('0x22')](_0x43e6c1,_0x5266a1));}return BPromise[_0x6f22('0x24')](_0x3d9880,function(_0x572313){_0x232ac5[_0x6f22('0x1c')](_0x572313);})['then'](function(){for(var _0x5be751=0x0;_0x5be751<_0x232ac5[_0x6f22('0x1b')];_0x5be751+=0x1){var _0xba754c;var _0x5b3307=_0x232ac5[_0x5be751];if(_0x241f9e){_0xba754c=path[_0x6f22('0x22')](_0x43e6c1,_0x5266a1,util[_0x6f22('0xd')](_0x6f22('0x25'),_0x5266a1,_0x5be751,'xlsx'));}else{_0xba754c=path[_0x6f22('0x22')](_0x43e6c1,util['format']('%s.%s',_0x5266a1,_0x6f22('0x26')));}fs['writeFileSync'](_0xba754c,json2xls(_0x5b3307),_0x6f22('0x27'));}})[_0x6f22('0x14')](function(){if(_0x241f9e){return new Promise(function(_0x47d0aa){zipdir(path['join'](_0x43e6c1,_0x5266a1),{'saveTo':path[_0x6f22('0x22')](_0x43e6c1,util[_0x6f22('0xd')]('%s.%s',_0x5266a1,_0x6f22('0x28')))},function(_0x169d72,_0x131701){rimraf(path[_0x6f22('0x22')](_0x43e6c1,_0x5266a1),function(){});_0x47d0aa(_0x6f22('0x29'));});});}})[_0x6f22('0x14')](function(){logger[_0x6f22('0xc')](util[_0x6f22('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x6f22('0xf')));return analyticExtractedReport(_0x6f22('0x2a'),_0x241f9e?util[_0x6f22('0xd')](_0x6f22('0x2b'),_0x5266a1,_0x241f9e?_0x6f22('0x28'):_0x6f22('0x26')):null);});})[_0x6f22('0x2c')](function(_0x1ca088){logger[_0x6f22('0xc')](util[_0x6f22('0xd')](_0x6f22('0x2d'),EXTRACTED_REPORT_ID,_0x6f22('0xf')),util['inspect'](_0x1ca088,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x6f22('0x2e'));})[_0x6f22('0x2f')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x58fd=['%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','XLSX','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','util','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','Empty','length','range','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.xlsx','split','mkdirSync','join','each','%s%d.%s','xlsx'];(function(_0x5de87a,_0x4d833f){var _0x3b6d9b=function(_0x8eff40){while(--_0x8eff40){_0x5de87a['push'](_0x5de87a['shift']());}};_0x3b6d9b(++_0x4d833f);}(_0x58fd,0x1cc));var _0xd58f=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x58fd[_0x3899d1];return _0xeb4a7d;};'use strict';var util=require(_0xd58f('0x0'));var path=require('path');var _=require(_0xd58f('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xd58f('0x2'));var zipdir=require(_0xd58f('0x3'));var rimraf=require(_0xd58f('0x4'));var db=require(_0xd58f('0x5'))['db'];var dbH=require(_0xd58f('0x5'))[_0xd58f('0x6')];var logger=require(_0xd58f('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xd58f('0x8')][0x2]);var QUERY=process[_0xd58f('0x8')][0x3];var PATH=process[_0xd58f('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5e001e,_0x572a08){var _0x4aad1c={'status':_0x5e001e};var _0x39291e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x572a08){_0x4aad1c[_0xd58f('0x9')]=_0x572a08;}return db[_0xd58f('0xa')][_0xd58f('0xb')](_0x4aad1c,_0x39291e);}function main(){var _0x13abf1=0x1388;var _0x487083;logger[_0xd58f('0xc')](util['format'](_0xd58f('0xd'),EXTRACTED_REPORT_ID,'XLSX'));return db[_0xd58f('0xe')][_0xd58f('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xd58f('0x10')]})['then'](function(_0x530d4e){if(_0x530d4e){_0x487083=_0x530d4e;_0x13abf1=_0x487083[_0xd58f('0x10')]||0x1388;}})[_0xd58f('0x11')](function(){return dbH[_0xd58f('0x12')][_0xd58f('0x13')](util[_0xd58f('0x14')](_0xd58f('0x15'),QUERY),{'type':dbH[_0xd58f('0x12')][_0xd58f('0x16')][_0xd58f('0x17')]});})[_0xd58f('0x11')](function(_0x499beb){if(!_0x499beb[0x0]['num']){return analyticExtractedReport(_0xd58f('0x18'));}var _0x4c2bb1=[];var _0x43d5ba=0x0;if(_0x487083['split']){if(_0x499beb&&_0x499beb[_0xd58f('0x19')]){var _0x4b2526=_[_0xd58f('0x1a')](_0x499beb[0x0][_0xd58f('0x1b')]/_0x13abf1);var _0x5453a3=Number[_0xd58f('0x1c')](_0x499beb[0x0]['num']/_0x13abf1)?_0x499beb[0x0][_0xd58f('0x1b')]%_0x13abf1:0x0;_0x4b2526[_0xd58f('0x1d')](function(_0x1b2067){if(_0x1b2067>0x0){_0x43d5ba+=_0x13abf1;}_0x4c2bb1[_0xd58f('0x1e')](dbH['sequelize'][_0xd58f('0x13')](util[_0xd58f('0x14')](_0xd58f('0x1f'),QUERY,_0x13abf1,_0x43d5ba),{'type':dbH['sequelize']['QueryTypes'][_0xd58f('0x17')]}));});if(_0x5453a3>0x0){_0x43d5ba+=_0x13abf1;_0x4c2bb1[_0xd58f('0x1e')](dbH[_0xd58f('0x12')][_0xd58f('0x13')](util[_0xd58f('0x14')](_0xd58f('0x1f'),QUERY,_0x5453a3,_0x43d5ba),{'type':dbH[_0xd58f('0x12')][_0xd58f('0x16')][_0xd58f('0x17')]}));}}}else{_0x4c2bb1[_0xd58f('0x1e')](dbH[_0xd58f('0x12')]['query'](QUERY,{'type':dbH[_0xd58f('0x12')]['QueryTypes'][_0xd58f('0x17')]}));}var _0xa8ad16=path[_0xd58f('0x20')](PATH);var _0x189971=path['basename'](PATH,_0xd58f('0x21'));var _0x49c731=_0x487083[_0xd58f('0x22')]&&_0x4c2bb1[_0xd58f('0x19')]>0x1;var _0x1e1bea=[];if(!fs['existsSync'](path['join'](_0xa8ad16,_0x189971))&&_0x49c731){fs[_0xd58f('0x23')](path[_0xd58f('0x24')](_0xa8ad16,_0x189971));}return BPromise[_0xd58f('0x25')](_0x4c2bb1,function(_0x4e63d1){_0x1e1bea[_0xd58f('0x1e')](_0x4e63d1);})[_0xd58f('0x11')](function(){for(var _0x4fbbd5=0x0;_0x4fbbd5<_0x1e1bea[_0xd58f('0x19')];_0x4fbbd5+=0x1){var _0x355e7d;var _0x7bf3bc=_0x1e1bea[_0x4fbbd5];if(_0x49c731){_0x355e7d=path['join'](_0xa8ad16,_0x189971,util[_0xd58f('0x14')](_0xd58f('0x26'),_0x189971,_0x4fbbd5,_0xd58f('0x27')));}else{_0x355e7d=path[_0xd58f('0x24')](_0xa8ad16,util[_0xd58f('0x14')](_0xd58f('0x28'),_0x189971,_0xd58f('0x27')));}fs[_0xd58f('0x29')](_0x355e7d,json2xls(_0x7bf3bc),'binary');}})[_0xd58f('0x11')](function(){if(_0x49c731){return new Promise(function(_0x17f799){zipdir(path[_0xd58f('0x24')](_0xa8ad16,_0x189971),{'saveTo':path[_0xd58f('0x24')](_0xa8ad16,util['format'](_0xd58f('0x28'),_0x189971,_0xd58f('0x2a')))},function(_0x2d7039,_0x593890){rimraf(path[_0xd58f('0x24')](_0xa8ad16,_0x189971),function(){});_0x17f799(_0xd58f('0x2b'));});});}})['then'](function(){logger[_0xd58f('0xc')](util[_0xd58f('0x14')](_0xd58f('0x2c'),EXTRACTED_REPORT_ID,_0xd58f('0x2d')));return analyticExtractedReport('Completed',_0x49c731?util['format'](_0xd58f('0x28'),_0x189971,_0x49c731?'zip':_0xd58f('0x27')):null);});})[_0xd58f('0x2e')](function(_0x5441c8){logger['info'](util[_0xd58f('0x14')](_0xd58f('0x2f'),EXTRACTED_REPORT_ID,_0xd58f('0x2d')),util['inspect'](_0x5441c8,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xd58f('0x30'));})[_0xd58f('0x31')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index 87724c6..40cced7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb07=['custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','bulkCreate','catch','error','rewrite','lodash','util','models','intervals','VoiceExtension','IntervalId','then','findAll','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','playback','hasOwnProperty','priority','extension','find','extensions','push','type','format','CDR(type)=%s','context','VoiceExtensionId','Set','CDR(routeid)=','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','appType'];(function(_0x49c00d,_0x2d6e9a){var _0xe68c91=function(_0x138285){while(--_0x138285){_0x49c00d['push'](_0x49c00d['shift']());}};_0xe68c91(++_0x2d6e9a);}(_0xfb07,0x137));var _0x7fb0=function(_0x1ad9ef,_0xa23e00){_0x1ad9ef=_0x1ad9ef-0x0;var _0x1a218b=_0xfb07[_0x1ad9ef];return _0x1a218b;};'use strict';var _=require(_0x7fb0('0x0'));var util=require(_0x7fb0('0x1'));function rewrite(_0x5540b7,_0x316d26){var _0x1d2b13=this;return _0x5540b7[_0x7fb0('0x2')]['Interval']['findAll']({'raw':!![]})['then'](function(_0x24515b){_0x1d2b13[_0x7fb0('0x3')]=_0x24515b;return _0x5540b7[_0x7fb0('0x2')][_0x7fb0('0x4')]['findAll']({'where':{'IntervalId':_0x316d26[_0x7fb0('0x5')]},'raw':!![]});})[_0x7fb0('0x6')](function(_0x52b24e){return _0x5540b7[_0x7fb0('0x2')][_0x7fb0('0x4')][_0x7fb0('0x7')]({'where':{'exten':{'$in':_[_0x7fb0('0x8')](_[_0x7fb0('0x9')](_0x52b24e,_0x7fb0('0xa')))}},'order':[{'raw':_0x7fb0('0xb')}],'raw':!![]});})[_0x7fb0('0x6')](function(_0x380ac4){var _0x43b68a=_[_0x7fb0('0xc')](_0x380ac4,{'priority':'1'});var _0xcd48db=_['filter'](_0x380ac4,{'isApp':0x1});var _0x418c5a=_['groupBy'](_0xcd48db,'exten');var _0x4fdbf7=['queue',_0x7fb0('0xd')];var _0x1c50ac=[];var _0xf61108=[];for(var _0x5a3659 in _0x418c5a){if(_0x418c5a[_0x7fb0('0xe')](_0x5a3659)){_0x1d2b13[_0x7fb0('0xf')]=0x2;_0x1d2b13['extensions']=[];_0x1d2b13[_0x7fb0('0x10')]=_[_0x7fb0('0x11')](_0x43b68a,{'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')]});_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':'Set','appdata':util[_0x7fb0('0x15')](_0x7fb0('0x16'),_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')]),'context':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x17')],'exten':_0x418c5a[_0x5a3659][0x0]['exten'],'priority':_0x1d2b13['priority']++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});if(_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')]==='inbound'){_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x1a')+_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')],'context':_0x418c5a[_0x5a3659][0x0]['context'],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13[_0x7fb0('0xf')]++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});}else if(_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')]===_0x7fb0('0x1b')){if(_0x1d2b13[_0x7fb0('0x10')]){_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':'Set','appdata':_0x7fb0('0x1c')+(_0x1d2b13[_0x7fb0('0x10')]['cutdigits']?_0x7fb0('0x1d')+_0x1d2b13[_0x7fb0('0x10')][_0x7fb0('0x1e')]+'}':_0x7fb0('0x1f')),'context':_0x418c5a[_0x5a3659][0x0]['context'],'exten':_0x418c5a[_0x5a3659][0x0]['exten'],'priority':_0x1d2b13[_0x7fb0('0xf')]++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});}_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':'Set','appdata':_0x7fb0('0x1a')+_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')],'context':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x17')],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13[_0x7fb0('0xf')]++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});var _0x216a7d=_0x1d2b13['priority']++;_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x20'),'appdata':_0x7fb0('0x21')+(_0x216a7d+0x2)+_0x7fb0('0x22')+(_0x216a7d+0x1)+')','context':_0x418c5a[_0x5a3659][0x0]['context'],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x216a7d,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});if(_0x1d2b13[_0x7fb0('0x10')]){_0x1d2b13['extensions'][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':'Set','appdata':_0x1d2b13[_0x7fb0('0x10')][_0x7fb0('0x1e')]?_0x7fb0('0x23')+_0x1d2b13['extension'][_0x7fb0('0x1e')]+'}':'CDR(prefix)=noprefix','context':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x17')],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13[_0x7fb0('0xf')]++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});}_0x1d2b13[_0x7fb0('0x12')]['push']({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x24')+_0x418c5a[_0x5a3659][0x0]['VoiceExtensionId'],'context':_0x418c5a[_0x5a3659][0x0]['context'],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13[_0x7fb0('0xf')]++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});if(_0x1d2b13[_0x7fb0('0x10')]&&_0x1d2b13[_0x7fb0('0x10')][_0x7fb0('0xe')](_0x7fb0('0x25'))&&_0x1d2b13[_0x7fb0('0x10')]['recordingFormat']!==_0x7fb0('0x26')){_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x27'),'context':_0x418c5a[_0x5a3659][0x0]['context'],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13['priority']++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});_0x1d2b13['extensions'][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x28')+_0x1d2b13['extension']['recordingFormat']||_0x7fb0('0x29'),'context':_0x418c5a[_0x5a3659][0x0]['context'],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13[_0x7fb0('0xf')]++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});}}_0x1d2b13['extensions']['push']({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x2a'),'context':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x17')],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13['priority']++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x2b'),'context':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x17')],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13['priority']++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});_0x1d2b13['extensions']['push']({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x2c'),'context':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x17')],'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'priority':_0x1d2b13[_0x7fb0('0xf')]++,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0]['VoiceExtensionId']});for(var _0x12c91e=0x0,_0x176d99=0x0;_0x12c91e<_0x418c5a[_0x5a3659][_0x7fb0('0x2d')];_0x12c91e+=0x1,_0x176d99=0x0){var _0x11bd98=_0x418c5a[_0x5a3659][_0x12c91e];if(_0x11bd98[_0x7fb0('0x14')]){_0x11bd98[_0x7fb0('0x14')]=_0x11bd98[_0x7fb0('0x14')][_0x7fb0('0x2e')]();}var _0x2f3618=[];var _0x8cf944=[];delete _0x11bd98['id'];delete _0x11bd98[_0x7fb0('0x2f')];delete _0x11bd98[_0x7fb0('0x30')];var _0x16669e=_0x11bd98[_0x7fb0('0x31')]!==_0x7fb0('0x32')?[_0x11bd98[_0x7fb0('0x31')]]:_0x11bd98[_0x7fb0('0x5')]?_[_0x7fb0('0x9')](_[_0x7fb0('0xc')](_0x1d2b13[_0x7fb0('0x3')],{'IntervalId':_0x11bd98[_0x7fb0('0x5')]}),_0x7fb0('0x31')):[];if(_0x11bd98['hasOwnProperty'](_0x7fb0('0x33'))){if(_0x11bd98[_0x7fb0('0x33')]&&_0x11bd98['tag']!=='--'){_0x2f3618['push']({'type':_0x11bd98[_0x7fb0('0x14')],'app':'Set','appdata':_0x7fb0('0x34')+_0x11bd98[_0x7fb0('0x33')],'context':_0x11bd98[_0x7fb0('0x17')],'exten':_0x11bd98['exten'],'priority':_0x16669e[_0x7fb0('0x2d')]+_0x1d2b13[_0x7fb0('0xf')]+_0x176d99++,'VoiceExtensionId':_0x11bd98[_0x7fb0('0x18')]});}}if(_0x11bd98[_0x7fb0('0x14')]===_0x7fb0('0x1b')&&_0x11bd98[_0x7fb0('0xe')](_0x7fb0('0x35'))){if(_0x11bd98[_0x7fb0('0x35')]){_0x2f3618['push']({'type':_0x11bd98[_0x7fb0('0x14')],'app':_0x7fb0('0x20'),'appdata':_0x7fb0('0x36')+_0x11bd98['callerID']+')','context':_0x11bd98[_0x7fb0('0x17')],'exten':_0x11bd98['exten'],'priority':_0x16669e['length']+_0x1d2b13['priority']+_0x176d99++,'VoiceExtensionId':_0x11bd98[_0x7fb0('0x18')]});}else{_0x2f3618[_0x7fb0('0x13')]({'type':_0x11bd98['type'],'app':_0x7fb0('0x20'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x11bd98['context'],'exten':_0x11bd98[_0x7fb0('0xa')],'priority':_0x16669e['length']+_0x1d2b13[_0x7fb0('0xf')]+_0x176d99++,'VoiceExtensionId':_0x11bd98[_0x7fb0('0x18')]});}}if(_0x11bd98['hasOwnProperty'](_0x7fb0('0x37'))){if(_0x4fdbf7[_0x7fb0('0x38')](_0x11bd98[_0x7fb0('0x39')][_0x7fb0('0x2e')]())>=0x0&&_0x11bd98[_0x7fb0('0x3a')]!==_0x7fb0('0x3b')){if(_0x11bd98[_0x7fb0('0x37')]){_0x2f3618[_0x7fb0('0x13')]({'type':_0x11bd98[_0x7fb0('0x14')],'app':_0x7fb0('0x20'),'appdata':_0x7fb0('0x3c'),'context':_0x11bd98[_0x7fb0('0x17')],'exten':_0x11bd98[_0x7fb0('0xa')],'priority':_0x16669e[_0x7fb0('0x2d')]+_0x1d2b13[_0x7fb0('0xf')]+_0x176d99++,'VoiceExtensionId':_0x11bd98['VoiceExtensionId']});_0x2f3618['push']({'type':_0x11bd98[_0x7fb0('0x14')],'app':_0x7fb0('0x19'),'appdata':_0x7fb0('0x3d'),'context':_0x11bd98['context'],'exten':_0x11bd98[_0x7fb0('0xa')],'priority':_0x16669e[_0x7fb0('0x2d')]+_0x1d2b13[_0x7fb0('0xf')]+_0x176d99++,'VoiceExtensionId':_0x11bd98[_0x7fb0('0x18')]});}else{_0x2f3618[_0x7fb0('0x13')]({'type':_0x11bd98[_0x7fb0('0x14')],'app':_0x7fb0('0x20'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x11bd98['context'],'exten':_0x11bd98[_0x7fb0('0xa')],'priority':_0x16669e[_0x7fb0('0x2d')]+_0x1d2b13['priority']+_0x176d99++,'VoiceExtensionId':_0x11bd98[_0x7fb0('0x18')]});_0x2f3618[_0x7fb0('0x13')]({'type':_0x11bd98[_0x7fb0('0x14')],'app':'Set','appdata':_0x7fb0('0x3e'),'context':_0x11bd98[_0x7fb0('0x17')],'exten':_0x11bd98[_0x7fb0('0xa')],'priority':_0x16669e[_0x7fb0('0x2d')]+_0x1d2b13[_0x7fb0('0xf')]+_0x176d99++,'VoiceExtensionId':_0x11bd98[_0x7fb0('0x18')]});}}}for(var _0x515d58=0x0;_0x515d58<_0x16669e[_0x7fb0('0x2d')];_0x515d58+=0x1){var _0x3f5e8e=_0x1d2b13[_0x7fb0('0xf')]+_0x16669e[_0x7fb0('0x2d')];var _0x50fa9a=_0x515d58===_0x16669e[_0x7fb0('0x2d')]-0x1?_0x1d2b13[_0x7fb0('0xf')]+_0x2f3618[_0x7fb0('0x2d')]+_0x8cf944[_0x7fb0('0x2d')]+0x2:_0x1d2b13['priority']+_0x515d58+0x1;_0x2f3618[_0x7fb0('0x3f')](_0x515d58,0x0,{'type':_0x11bd98[_0x7fb0('0x14')],'app':_0x7fb0('0x40'),'appdata':_0x16669e[_0x515d58]+'?'+_0x11bd98[_0x7fb0('0x17')]+_0x7fb0('0x41')+_0x3f5e8e+':'+_0x11bd98[_0x7fb0('0x17')]+_0x7fb0('0x41')+_0x50fa9a,'exten':_0x11bd98[_0x7fb0('0xa')],'context':_0x11bd98['context'],'priority':_0x1d2b13['priority']+_0x515d58,'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});}_0x11bd98['priority']=_0x2f3618[_0x7fb0('0x2d')]?_[_0x7fb0('0x42')](_0x2f3618)[_0x7fb0('0xf')]+0x1:_0x1d2b13['priority'];_0x1d2b13[_0x7fb0('0xf')]=(_0x8cf944['length']?_['last'](_0x8cf944)['priority']:_0x11bd98[_0x7fb0('0xf')])+0x1;_0x1d2b13[_0x7fb0('0x12')]=_[_0x7fb0('0x43')](_0x1d2b13[_0x7fb0('0x12')],_0x2f3618,[_0x11bd98],_0x8cf944);}_0x1d2b13[_0x7fb0('0x12')][_0x7fb0('0x13')]({'type':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x14')],'app':_0x7fb0('0x44'),'exten':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0xa')],'context':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x17')],'priority':_0x1d2b13['priority'],'VoiceExtensionId':_0x418c5a[_0x5a3659][0x0][_0x7fb0('0x18')]});_0x1c50ac[_0x7fb0('0x13')](_0x418c5a[_0x5a3659][0x0]['VoiceExtensionId']);_0xf61108=_[_0x7fb0('0x43')](_0xf61108,_0x1d2b13[_0x7fb0('0x12')]);}}return _0x5540b7[_0x7fb0('0x45')](function(_0x5b6db7){return _0x5540b7['models']['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':{'$in':_0x1c50ac}},'transaction':_0x5b6db7})[_0x7fb0('0x6')](function(_0x9b02de){return _0x5540b7['models'][_0x7fb0('0x4')][_0x7fb0('0x46')](_['sortBy'](_0xf61108,_0x7fb0('0xf')),{'transaction':_0x5b6db7});});});})[_0x7fb0('0x47')](function(_0x4e0c10){console[_0x7fb0('0x48')](_0x4e0c10);});}exports[_0x7fb0('0x49')]=rewrite;
\ No newline at end of file
+var _0x1db3=['XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','Hangup','transaction','destroy','sortBy','catch','rewrite','models','findAll','intervals','then','VoiceExtension','map','exten','filter','queue','playback','hasOwnProperty','priority','extension','find','extensions','push','type','Set','CDR(type)=%s','context','inbound','CDR(routeid)=','VoiceExtensionId','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','createdAt','*,*,*,*','interval','IntervalId','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','indexOf','toLowerCase','appType','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress'];(function(_0xbb4f06,_0x12bc4a){var _0x21c11b=function(_0x203b89){while(--_0x203b89){_0xbb4f06['push'](_0xbb4f06['shift']());}};_0x21c11b(++_0x12bc4a);}(_0x1db3,0x1cb));var _0x31db=function(_0x25c53e,_0x27b586){_0x25c53e=_0x25c53e-0x0;var _0x40d851=_0x1db3[_0x25c53e];return _0x40d851;};'use strict';var _=require('lodash');var util=require('util');function rewrite(_0x2b0f3d,_0x1192de){var _0x330bf0=this;return _0x2b0f3d[_0x31db('0x0')]['Interval'][_0x31db('0x1')]({'raw':!![]})['then'](function(_0x51b332){_0x330bf0[_0x31db('0x2')]=_0x51b332;return _0x2b0f3d['models']['VoiceExtension'][_0x31db('0x1')]({'where':{'IntervalId':_0x1192de['IntervalId']},'raw':!![]});})[_0x31db('0x3')](function(_0x1d8b0b){return _0x2b0f3d[_0x31db('0x0')][_0x31db('0x4')][_0x31db('0x1')]({'where':{'exten':{'$in':_['uniq'](_[_0x31db('0x5')](_0x1d8b0b,_0x31db('0x6')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})['then'](function(_0x27adf1){var _0x916862=_[_0x31db('0x7')](_0x27adf1,{'priority':'1'});var _0x3561fe=_[_0x31db('0x7')](_0x27adf1,{'isApp':0x1});var _0x1e6782=_['groupBy'](_0x3561fe,'exten');var _0x54329d=[_0x31db('0x8'),_0x31db('0x9')];var _0x5cdd59=[];var _0x1ee413=[];for(var _0x1d2a98 in _0x1e6782){if(_0x1e6782[_0x31db('0xa')](_0x1d2a98)){_0x330bf0[_0x31db('0xb')]=0x2;_0x330bf0['extensions']=[];_0x330bf0[_0x31db('0xc')]=_[_0x31db('0xd')](_0x916862,{'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')]});_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':util['format'](_0x31db('0x12'),_0x1e6782[_0x1d2a98][0x0]['type']),'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0]['VoiceExtensionId']});if(_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')]===_0x31db('0x14')){_0x330bf0['extensions'][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':_0x31db('0x15')+_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')],'context':_0x1e6782[_0x1d2a98][0x0]['context'],'exten':_0x1e6782[_0x1d2a98][0x0]['exten'],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});}else if(_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')]==='outbound'){if(_0x330bf0['extension']){_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':_0x31db('0x17')+(_0x330bf0[_0x31db('0xc')][_0x31db('0x18')]?_0x31db('0x19')+_0x330bf0[_0x31db('0xc')][_0x31db('0x18')]+'}':_0x31db('0x1a')),'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0['priority']++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0]['VoiceExtensionId']});}_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':'CDR(routeid)='+_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')],'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});var _0x4a1e11=_0x330bf0[_0x31db('0xb')]++;_0x330bf0['extensions'][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0]['type'],'app':_0x31db('0x1b'),'appdata':_0x31db('0x1c')+(_0x4a1e11+0x2)+_0x31db('0x1d')+(_0x4a1e11+0x1)+')','context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x4a1e11,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});if(_0x330bf0[_0x31db('0xc')]){_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':_0x330bf0[_0x31db('0xc')][_0x31db('0x18')]?'CDR(prefix)=${EXTEN:0:'+_0x330bf0[_0x31db('0xc')][_0x31db('0x18')]+'}':_0x31db('0x1e'),'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});}_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0]['type'],'app':'Set','appdata':'outboundrouteid='+_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')],'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0]['exten'],'priority':_0x330bf0['priority']++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});if(_0x330bf0['extension']&&_0x330bf0[_0x31db('0xc')][_0x31db('0xa')](_0x31db('0x1f'))&&_0x330bf0[_0x31db('0xc')][_0x31db('0x1f')]!==_0x31db('0x20')){_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0]['VoiceExtensionId']});_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0]['type'],'app':_0x31db('0x11'),'appdata':_0x31db('0x21')+_0x330bf0[_0x31db('0xc')][_0x31db('0x1f')]||_0x31db('0x22'),'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});}}_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':'Set','appdata':_0x31db('0x23'),'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0]['VoiceExtensionId']});_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':_0x31db('0x24'),'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'priority':_0x330bf0[_0x31db('0xb')]++,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});for(var _0x1019b7=0x0,_0x4894a5=0x0;_0x1019b7<_0x1e6782[_0x1d2a98][_0x31db('0x25')];_0x1019b7+=0x1,_0x4894a5=0x0){var _0x4db984=_0x1e6782[_0x1d2a98][_0x1019b7];if(_0x4db984[_0x31db('0x10')]){_0x4db984[_0x31db('0x10')]=_0x4db984[_0x31db('0x10')]['toLowerCase']();}var _0x42838d=[];var _0x45ff1c=[];delete _0x4db984['id'];delete _0x4db984[_0x31db('0x26')];delete _0x4db984['updatedAt'];var _0x323fcf=_0x4db984['interval']!==_0x31db('0x27')?[_0x4db984[_0x31db('0x28')]]:_0x4db984[_0x31db('0x29')]?_[_0x31db('0x5')](_[_0x31db('0x7')](_0x330bf0[_0x31db('0x2')],{'IntervalId':_0x4db984[_0x31db('0x29')]}),_0x31db('0x28')):[];if(_0x4db984[_0x31db('0xa')](_0x31db('0x2a'))){if(_0x4db984[_0x31db('0x2a')]&&_0x4db984[_0x31db('0x2a')]!=='--'){_0x42838d[_0x31db('0xf')]({'type':_0x4db984[_0x31db('0x10')],'app':_0x31db('0x11'),'appdata':_0x31db('0x2b')+_0x4db984[_0x31db('0x2a')],'context':_0x4db984[_0x31db('0x13')],'exten':_0x4db984[_0x31db('0x6')],'priority':_0x323fcf['length']+_0x330bf0[_0x31db('0xb')]+_0x4894a5++,'VoiceExtensionId':_0x4db984[_0x31db('0x16')]});}}if(_0x4db984['type']==='outbound'&&_0x4db984['hasOwnProperty']('callerID')){if(_0x4db984[_0x31db('0x2c')]){_0x42838d[_0x31db('0xf')]({'type':_0x4db984[_0x31db('0x10')],'app':_0x31db('0x1b'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x4db984['callerID']+')','context':_0x4db984[_0x31db('0x13')],'exten':_0x4db984['exten'],'priority':_0x323fcf[_0x31db('0x25')]+_0x330bf0[_0x31db('0xb')]+_0x4894a5++,'VoiceExtensionId':_0x4db984['VoiceExtensionId']});}else{_0x42838d[_0x31db('0xf')]({'type':_0x4db984[_0x31db('0x10')],'app':_0x31db('0x1b'),'appdata':_0x31db('0x2d'),'context':_0x4db984['context'],'exten':_0x4db984[_0x31db('0x6')],'priority':_0x323fcf['length']+_0x330bf0[_0x31db('0xb')]+_0x4894a5++,'VoiceExtensionId':_0x4db984['VoiceExtensionId']});}}if(_0x4db984['hasOwnProperty']('answer')){if(_0x54329d[_0x31db('0x2e')](_0x4db984['app'][_0x31db('0x2f')]())>=0x0&&_0x4db984[_0x31db('0x30')]!=='custom'){if(_0x4db984[_0x31db('0x31')]){_0x42838d['push']({'type':_0x4db984[_0x31db('0x10')],'app':_0x31db('0x1b'),'appdata':_0x31db('0x32'),'context':_0x4db984[_0x31db('0x13')],'exten':_0x4db984[_0x31db('0x6')],'priority':_0x323fcf['length']+_0x330bf0[_0x31db('0xb')]+_0x4894a5++,'VoiceExtensionId':_0x4db984[_0x31db('0x16')]});_0x42838d[_0x31db('0xf')]({'type':_0x4db984['type'],'app':'Set','appdata':_0x31db('0x33'),'context':_0x4db984[_0x31db('0x13')],'exten':_0x4db984[_0x31db('0x6')],'priority':_0x323fcf[_0x31db('0x25')]+_0x330bf0[_0x31db('0xb')]+_0x4894a5++,'VoiceExtensionId':_0x4db984[_0x31db('0x16')]});}else{_0x42838d[_0x31db('0xf')]({'type':_0x4db984[_0x31db('0x10')],'app':_0x31db('0x1b'),'appdata':_0x31db('0x34'),'context':_0x4db984[_0x31db('0x13')],'exten':_0x4db984['exten'],'priority':_0x323fcf[_0x31db('0x25')]+_0x330bf0[_0x31db('0xb')]+_0x4894a5++,'VoiceExtensionId':_0x4db984[_0x31db('0x16')]});_0x42838d['push']({'type':_0x4db984['type'],'app':_0x31db('0x11'),'appdata':_0x31db('0x35'),'context':_0x4db984[_0x31db('0x13')],'exten':_0x4db984[_0x31db('0x6')],'priority':_0x323fcf['length']+_0x330bf0[_0x31db('0xb')]+_0x4894a5++,'VoiceExtensionId':_0x4db984[_0x31db('0x16')]});}}}for(var _0x58d240=0x0;_0x58d240<_0x323fcf['length'];_0x58d240+=0x1){var _0x1f5037=_0x330bf0['priority']+_0x323fcf[_0x31db('0x25')];var _0x4d1515=_0x58d240===_0x323fcf['length']-0x1?_0x330bf0[_0x31db('0xb')]+_0x42838d[_0x31db('0x25')]+_0x45ff1c[_0x31db('0x25')]+0x2:_0x330bf0[_0x31db('0xb')]+_0x58d240+0x1;_0x42838d[_0x31db('0x36')](_0x58d240,0x0,{'type':_0x4db984['type'],'app':_0x31db('0x37'),'appdata':_0x323fcf[_0x58d240]+'?'+_0x4db984[_0x31db('0x13')]+_0x31db('0x38')+_0x1f5037+':'+_0x4db984['context']+_0x31db('0x38')+_0x4d1515,'exten':_0x4db984[_0x31db('0x6')],'context':_0x4db984[_0x31db('0x13')],'priority':_0x330bf0[_0x31db('0xb')]+_0x58d240,'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});}_0x4db984[_0x31db('0xb')]=_0x42838d[_0x31db('0x25')]?_[_0x31db('0x39')](_0x42838d)[_0x31db('0xb')]+0x1:_0x330bf0[_0x31db('0xb')];_0x330bf0[_0x31db('0xb')]=(_0x45ff1c[_0x31db('0x25')]?_[_0x31db('0x39')](_0x45ff1c)[_0x31db('0xb')]:_0x4db984[_0x31db('0xb')])+0x1;_0x330bf0[_0x31db('0xe')]=_['concat'](_0x330bf0[_0x31db('0xe')],_0x42838d,[_0x4db984],_0x45ff1c);}_0x330bf0[_0x31db('0xe')][_0x31db('0xf')]({'type':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x10')],'app':_0x31db('0x3a'),'exten':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x6')],'context':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x13')],'priority':_0x330bf0[_0x31db('0xb')],'VoiceExtensionId':_0x1e6782[_0x1d2a98][0x0][_0x31db('0x16')]});_0x5cdd59[_0x31db('0xf')](_0x1e6782[_0x1d2a98][0x0]['VoiceExtensionId']);_0x1ee413=_['concat'](_0x1ee413,_0x330bf0[_0x31db('0xe')]);}}return _0x2b0f3d[_0x31db('0x3b')](function(_0x28805c){return _0x2b0f3d[_0x31db('0x0')][_0x31db('0x4')][_0x31db('0x3c')]({'where':{'VoiceExtensionId':{'$in':_0x5cdd59}},'transaction':_0x28805c})['then'](function(_0x49cb4b){return _0x2b0f3d[_0x31db('0x0')][_0x31db('0x4')]['bulkCreate'](_[_0x31db('0x3d')](_0x1ee413,_0x31db('0xb')),{'transaction':_0x28805c});});});})[_0x31db('0x3e')](function(_0x3d4e71){console['error'](_0x3d4e71);});}exports[_0x31db('0x3f')]=rewrite;
\ No newline at end of file
index 9c97d4e..39473a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e3c=['Campaign','CmList','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!','parse','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','../../../mysqldb','../../../config/environment','api','defaults','redis','localhost','../../../api/cmContact/cmContact.socket','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','join','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','inspect','cm_hopper','fromQuery','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','insert','id\x20IN\x20?','str','calleridnum','cm_hopper_final','into','ListId\x20=\x20?','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','Lists','always','sequelize','query','VoiceQueueId','all','BlackLists','get'];(function(_0x503950,_0x5022eb){var _0x1657a9=function(_0x4c1e8f){while(--_0x4c1e8f){_0x503950['push'](_0x503950['shift']());}};_0x1657a9(++_0x5022eb);}(_0x6e3c,0x1d4));var _0xc6e3=function(_0x1237b4,_0x32f157){_0x1237b4=_0x1237b4-0x0;var _0x44ccc7=_0x6e3c[_0x1237b4];return _0x44ccc7;};'use strict';var BPromise=require(_0xc6e3('0x0'));var util=require(_0xc6e3('0x1'));var _=require(_0xc6e3('0x2'));var fs=require('fs');var squel=require(_0xc6e3('0x3'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0xc6e3('0x4'))['db'];var config=require(_0xc6e3('0x5'));var logger=require('../../../config/logger')(_0xc6e3('0x6'));config['redis']=_[_0xc6e3('0x7')](config[_0xc6e3('0x8')],{'host':_0xc6e3('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc6e3('0xa'))['register'](socket);try{if(!process[_0xc6e3('0xb')][0x2]||process[_0xc6e3('0xb')][0x2]===_0xc6e3('0xc')||process[_0xc6e3('0xb')][0x2]===_0xc6e3('0xd')){throw new Error(_0xc6e3('0xe'));}var FILEPATH=process['argv'][0x2];if(!process[_0xc6e3('0xb')][0x3]||process[_0xc6e3('0xb')][0x3]===_0xc6e3('0xc')||process['argv'][0x3]===_0xc6e3('0xd')||!process[_0xc6e3('0xb')][0x4]||process['argv'][0x4]===_0xc6e3('0xc')||process['argv'][0x4]===_0xc6e3('0xd')){throw new Error(_0xc6e3('0xf'));}var FIELDS=_[_0xc6e3('0x10')](process[_0xc6e3('0xb')][0x3][_0xc6e3('0x11')](','),process[_0xc6e3('0xb')][0x4][_0xc6e3('0x11')](','));if(!process['argv'][0x5]||process[_0xc6e3('0xb')][0x5]==='undefined'||process[_0xc6e3('0xb')][0x5]==='null'){throw new Error(_0xc6e3('0x12'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0xc6e3('0xb')][0x6]&&process[_0xc6e3('0xb')][0x6]!==_0xc6e3('0xc')&&process[_0xc6e3('0xb')][0x6]!==_0xc6e3('0xd')?process[_0xc6e3('0xb')][0x6]:null;var DUPLICATES=process[_0xc6e3('0xb')][0x7]&&process['argv'][0x7]!=='undefined'&&process['argv'][0x7]!==_0xc6e3('0xd')?process[_0xc6e3('0xb')][0x7]:null;if(!process[_0xc6e3('0xb')][0x8]||process[_0xc6e3('0xb')][0x8]===_0xc6e3('0xc')||process['argv'][0x8]===_0xc6e3('0xd')){throw new Error(_0xc6e3('0x13'));}var SOCKET_TIMESTAMP=process[_0xc6e3('0xb')][0x8];}catch(_0x108541){logger[_0xc6e3('0x14')](_0x108541);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x1312ae,_0x2155d,_0xcda467,_0x4d29e9){var _0x4a7239={'message':_0x2155d};_0x4a7239[_0x1312ae]=!![];if(_0xcda467){_0x4a7239['contact']=_0xcda467;}if(_0x4d29e9){_0x4a7239['index']=_0x4d29e9;}return _0x4a7239;}function isEmail(_0x15337a){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xc6e3('0x15')](_0x15337a);}function checkRow(_0x2bbf82,_0x39e0e1,_0x32c5ef){return new BPromise(function(_0x3327e8,_0x2a9a20){if(_[_0xc6e3('0x16')](_0x2bbf82)){return _0x2a9a20(handleCheckRowError(_0xc6e3('0x14'),_0xc6e3('0x17'),null,_0x32c5ef));}if(_0x2bbf82[_0xc6e3('0x18')]&&_0x2bbf82[_0xc6e3('0x18')][_0xc6e3('0x19')]){var _0x23bc8f=_[_0xc6e3('0x1a')](_0x2bbf82['errors'],'message')[_0xc6e3('0x1b')](';');return _0x2a9a20(handleCheckRowError(_0xc6e3('0x14'),_0x23bc8f,null,_0x32c5ef));}var _0xc10790={};for(var _0x2e17ab in FIELDS){if(FIELDS['hasOwnProperty'](_0x2e17ab)&&FIELDS[_0x2e17ab]){_0xc10790[_0x2e17ab]=_0x2bbf82[_0xc6e3('0x1c')][0x0][FIELDS[_0x2e17ab]]||_0x2bbf82[_0xc6e3('0x1c')][0x0]['\ufeff'+FIELDS[_0x2e17ab]];}}if(!_0xc10790[_0xc6e3('0x1d')]){return _0x2a9a20(handleCheckRowError(_0xc6e3('0x14'),_0xc6e3('0x1e'),null,_0x32c5ef));}if(!_0xc10790[_0xc6e3('0x1f')]){return _0x2a9a20(handleCheckRowError(_0xc6e3('0x14'),_0xc6e3('0x20'),null,_0x32c5ef));}if(_0xc10790[_0xc6e3('0x21')]){var _0x5e5797=moment(_0xc10790[_0xc6e3('0x21')],_0xc6e3('0x22'));if(!_0x5e5797['isValid']()){return _0x2a9a20(handleCheckRowError(_0xc6e3('0x14'),_0xc6e3('0x23'),null,_0x32c5ef));}}if(_0xc10790[_0xc6e3('0x24')]){if(!isEmail(_0xc10790[_0xc6e3('0x24')])){return _0x2a9a20(handleCheckRowError(_0xc6e3('0x14'),_0xc6e3('0x25'),null,_0x32c5ef));}}_0xc10790[_0xc6e3('0x26')]=LISTID;_0xc10790['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xc6e3('0x19')]&&_0x39e0e1){var _0x3cba06={};for(var _0x4f6136=0x0,_0x55f8b0=DUPLICATES[_0xc6e3('0x19')];_0x4f6136<_0x55f8b0;_0x4f6136+=0x1){_0x3cba06[DUPLICATES[_0x4f6136]]=_0xc10790[DUPLICATES[_0x4f6136]];}var _0x1e785f=_[_0xc6e3('0x27')](_0x39e0e1,_0x3cba06);if(_0x1e785f){return _0x2a9a20(handleCheckRowError(_0xc6e3('0x28'),_0xc6e3('0x29'),_0x1e785f,_0x32c5ef));}}return db[_0xc6e3('0x2a')][_0xc6e3('0x2b')](_0xc10790,{'raw':!![],'hooks':![],'fields':_[_0xc6e3('0x2c')](_0xc10790)})[_0xc6e3('0x2d')](function(_0x2430d9){if(DUPLICATES&&DUPLICATES[_0xc6e3('0x19')]&&_0x39e0e1){_0x39e0e1[_0xc6e3('0x2e')](_[_0xc6e3('0x2f')](_0xc10790,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2430d9['id'];return _0x3327e8();})[_0xc6e3('0x30')](function(_0x1160b9){return _0x2a9a20(handleCheckRowError('error',_0xc6e3('0x31')+(_0x1160b9[_0xc6e3('0x32')]||JSON[_0xc6e3('0x33')](_0x1160b9)),null,_0x32c5ef));});});}function checkHopper(){function _0x3e3958(){return function(_0x25196c){logger[_0xc6e3('0x14')](_0xc6e3('0x34'),_0xc6e3('0x35'),util[_0xc6e3('0x36')](_0x25196c,{'showHidden':![],'depth':null}));};}var _0x516460=function(_0x3e54ee,_0x1c6e4f){var _0x129320=squel['insert']()['into'](_0xc6e3('0x37'))[_0xc6e3('0x38')]([_0xc6e3('0x1f'),'scheduledAt',_0xc6e3('0x39'),_0xc6e3('0x26'),_0x1c6e4f,_0xc6e3('0x3a'),_0xc6e3('0x3b')],squel[_0xc6e3('0x3c')]()[_0xc6e3('0x3d')](_0xc6e3('0x1f'),_0xc6e3('0x1f'))[_0xc6e3('0x3d')](_0xc6e3('0x3e'),_0xc6e3('0x3f'))[_0xc6e3('0x3d')]('id',_0xc6e3('0x39'))[_0xc6e3('0x3d')](LISTID[_0xc6e3('0x40')](),_0xc6e3('0x26'))[_0xc6e3('0x3d')](_0x3e54ee['id']['toString'](),_0x1c6e4f)[_0xc6e3('0x3d')](_0xc6e3('0x3e'),_0xc6e3('0x3a'))[_0xc6e3('0x3d')](_0xc6e3('0x3e'),_0xc6e3('0x3b'))[_0xc6e3('0x41')](_0xc6e3('0x42'))[_0xc6e3('0x43')](_0xc6e3('0x44'))[_0xc6e3('0x43')]('ListId\x20=\x20?',LISTID[_0xc6e3('0x40')]())[_0xc6e3('0x43')](_0xc6e3('0x45'))[_0xc6e3('0x43')](_0xc6e3('0x46'),squel[_0xc6e3('0x3c')]()[_0xc6e3('0x3d')]('phone')[_0xc6e3('0x41')](_0xc6e3('0x37'))[_0xc6e3('0x43')](_0x1c6e4f+_0xc6e3('0x47'),_0x3e54ee['id'][_0xc6e3('0x40')]())))['toString']();return _0x129320;};var _0x4a9c68=function(_0x32a651,_0x4f810a){var _0x1f9f1f=squel[_0xc6e3('0x48')]()['into'](_0xc6e3('0x37'))[_0xc6e3('0x38')]([_0xc6e3('0x1f'),_0xc6e3('0x3f'),_0xc6e3('0x39'),_0xc6e3('0x26'),_0x4f810a,_0xc6e3('0x3a'),_0xc6e3('0x3b')],squel['select']()['field'](_0xc6e3('0x1f'),_0xc6e3('0x1f'))['field'](_0xc6e3('0x3e'),'scheduledAt')[_0xc6e3('0x3d')]('id',_0xc6e3('0x39'))[_0xc6e3('0x3d')](LISTID[_0xc6e3('0x40')](),'ListId')['field'](_0x32a651['id']['toString'](),_0x4f810a)[_0xc6e3('0x3d')](_0xc6e3('0x3e'),_0xc6e3('0x3a'))[_0xc6e3('0x3d')](_0xc6e3('0x3e'),_0xc6e3('0x3b'))['from']('cm_contacts')[_0xc6e3('0x43')]('deletedAt\x20IS\x20NULL')[_0xc6e3('0x43')]('ListId\x20=\x20?',LISTID['toString']())[_0xc6e3('0x43')](_0xc6e3('0x49'),squel[_0xc6e3('0x4a')](hopperContacts))[_0xc6e3('0x43')](_0xc6e3('0x45'))[_0xc6e3('0x43')](_0xc6e3('0x46'),squel[_0xc6e3('0x3c')]()[_0xc6e3('0x3d')](_0xc6e3('0x4b'))[_0xc6e3('0x41')](_0xc6e3('0x4c'))[_0xc6e3('0x43')](_0x4f810a+'\x20=\x20?',_0x32a651['id'][_0xc6e3('0x40')]()))[_0xc6e3('0x43')](_0xc6e3('0x46'),squel['select']()[_0xc6e3('0x3d')]('phone')[_0xc6e3('0x41')](_0xc6e3('0x37'))['where'](_0x4f810a+_0xc6e3('0x47'),_0x32a651['id'][_0xc6e3('0x40')]())))[_0xc6e3('0x40')]();return _0x1f9f1f;};function _0x226ebc(_0x5d8c9e,_0x4a446a){var _0x13ace2=squel['insert']()[_0xc6e3('0x4d')]('cm_hopper')[_0xc6e3('0x38')]([_0xc6e3('0x1f'),_0xc6e3('0x3f'),_0xc6e3('0x39'),_0xc6e3('0x26'),_0x4a446a,_0xc6e3('0x3a'),_0xc6e3('0x3b')],squel[_0xc6e3('0x3c')]()['field'](_0xc6e3('0x1f'),_0xc6e3('0x1f'))['field'](_0xc6e3('0x3e'),_0xc6e3('0x3f'))[_0xc6e3('0x3d')]('id',_0xc6e3('0x39'))[_0xc6e3('0x3d')](LISTID[_0xc6e3('0x40')](),_0xc6e3('0x26'))[_0xc6e3('0x3d')](_0x5d8c9e['id'][_0xc6e3('0x40')](),_0x4a446a)['field'](_0xc6e3('0x3e'),_0xc6e3('0x3a'))[_0xc6e3('0x3d')](_0xc6e3('0x3e'),_0xc6e3('0x3b'))[_0xc6e3('0x41')](_0xc6e3('0x42'))[_0xc6e3('0x43')](_0xc6e3('0x44'))['where'](_0xc6e3('0x4e'),LISTID[_0xc6e3('0x40')]())[_0xc6e3('0x43')](_0xc6e3('0x49'),squel[_0xc6e3('0x4a')](hopperContacts))[_0xc6e3('0x43')](_0xc6e3('0x45')))[_0xc6e3('0x40')]();return _0x13ace2;}function _0x3a50d6(_0x3d6172,_0x1b5cfa){var _0x4feb35=squel[_0xc6e3('0x48')]()[_0xc6e3('0x4d')](_0xc6e3('0x4f'))[_0xc6e3('0x38')](['phone','ContactId',_0xc6e3('0x26'),_0x1b5cfa,_0xc6e3('0x3a'),'updatedAt'],squel[_0xc6e3('0x3c')]()[_0xc6e3('0x3d')](_0xc6e3('0x1f'),_0xc6e3('0x1f'))[_0xc6e3('0x3d')]('id',_0xc6e3('0x39'))[_0xc6e3('0x3d')](LISTID[_0xc6e3('0x40')](),'ListId')[_0xc6e3('0x3d')](_0x3d6172['id']['toString'](),_0x1b5cfa)['field']('NOW()',_0xc6e3('0x3a'))[_0xc6e3('0x3d')](_0xc6e3('0x3e'),_0xc6e3('0x3b'))[_0xc6e3('0x41')](_0xc6e3('0x42'))['where'](_0xc6e3('0x44'))['where'](_0xc6e3('0x4e'),LISTID[_0xc6e3('0x40')]())[_0xc6e3('0x43')](_0xc6e3('0x49'),squel['str'](hopperContacts))[_0xc6e3('0x43')](_0xc6e3('0x45')))['toString']();return _0x4feb35;}return db[_0xc6e3('0x50')][_0xc6e3('0x51')]({'where':{'type':_0xc6e3('0x52')},'attributes':['id',_0xc6e3('0x53')],'include':[{'model':db['CmList'],'as':_0xc6e3('0x54'),'where':{'id':LISTID}}]})[_0xc6e3('0x2d')](function(_0x4933d3){var _0x124a85=[];if(_0x4933d3){var _0x1e350f;for(var _0x286918=0x0,_0x1b9044;_0x286918<_0x4933d3[_0xc6e3('0x19')];_0x286918+=0x1){_0x1b9044=_0x4933d3[_0x286918]['get']({'plain':!![]});switch(_0x1b9044['dialCheckDuplicateType']){case _0xc6e3('0x55'):_0x124a85['push'](db[_0xc6e3('0x56')][_0xc6e3('0x57')](_0x4a9c68(_0x1b9044,_0xc6e3('0x58')))[_0xc6e3('0x2d')](function(){})[_0xc6e3('0x30')](_0x3e3958()));break;case'onlyIfOpen':_0x124a85['push'](db[_0xc6e3('0x56')][_0xc6e3('0x57')](_0x516460(_0x1b9044,_0xc6e3('0x58')))[_0xc6e3('0x2d')](function(){})[_0xc6e3('0x30')](_0x3e3958()));break;default:_0x124a85[_0xc6e3('0x2e')](db[_0xc6e3('0x56')][_0xc6e3('0x57')](_0x226ebc(_0x1b9044,'VoiceQueueId'))['then'](function(){})['catch'](_0x3e3958()));}}}return _0x124a85;})[_0xc6e3('0x59')]()[_0xc6e3('0x2d')](function(){return db[_0xc6e3('0x50')]['findAll']({'where':{'type':_0xc6e3('0x52')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xc6e3('0x5a'),'where':{'id':LISTID}}]})[_0xc6e3('0x2d')](function(_0x5af965){var _0x4359a2=[];if(_0x5af965){var _0x535497;for(var _0x1988a4=0x0,_0x2ed2ba;_0x1988a4<_0x5af965['length'];_0x1988a4+=0x1){_0x2ed2ba=_0x5af965[_0x1988a4][_0xc6e3('0x5b')]({'plain':!![]});_0x4359a2['push'](db['sequelize']['query'](_0x3a50d6(_0x2ed2ba,_0xc6e3('0x58')))['then'](function(){})['catch'](_0x3e3958()));}}return _0x4359a2;})['all']();})[_0xc6e3('0x2d')](function(){return db[_0xc6e3('0x5c')]['findAll']({'attributes':['id',_0xc6e3('0x53')],'include':[{'model':db[_0xc6e3('0x5d')],'as':_0xc6e3('0x54'),'where':{'id':LISTID}}]})[_0xc6e3('0x2d')](function(_0x510bff){var _0x3244a2=[];if(_0x510bff){for(var _0xe0a703=0x0,_0x201bbd;_0xe0a703<_0x510bff[_0xc6e3('0x19')];_0xe0a703+=0x1){_0x201bbd=_0x510bff[_0xe0a703][_0xc6e3('0x5b')]({'plain':!![]});switch(_0x201bbd[_0xc6e3('0x53')]){case _0xc6e3('0x55'):_0x3244a2[_0xc6e3('0x2e')](db[_0xc6e3('0x56')][_0xc6e3('0x57')](_0x4a9c68(_0x201bbd,_0xc6e3('0x5e')))[_0xc6e3('0x2d')](function(){})[_0xc6e3('0x30')](_0x3e3958()));break;case'onlyIfOpen':_0x3244a2['push'](db[_0xc6e3('0x56')][_0xc6e3('0x57')](_0x516460(_0x201bbd,'CampaignId'))[_0xc6e3('0x2d')](function(){})[_0xc6e3('0x30')](_0x3e3958()));break;default:_0x3244a2[_0xc6e3('0x2e')](db[_0xc6e3('0x56')][_0xc6e3('0x57')](_0x226ebc(_0x201bbd,'CampaignId'))[_0xc6e3('0x2d')](function(){})[_0xc6e3('0x30')](_0x3e3958()));}}}return _0x3244a2;})[_0xc6e3('0x59')]();})[_0xc6e3('0x2d')](function(){return db[_0xc6e3('0x5c')]['findAll']({'attributes':['id'],'include':[{'model':db[_0xc6e3('0x5d')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xc6e3('0x2d')](function(_0x27e1bc){var _0x4f140d=[];if(_0x27e1bc){for(var _0x5b72b9=0x0,_0x4fca6b;_0x5b72b9<_0x27e1bc[_0xc6e3('0x19')];_0x5b72b9+=0x1){_0x4fca6b=_0x27e1bc[_0x5b72b9][_0xc6e3('0x5b')]({'plain':!![]});_0x4f140d[_0xc6e3('0x2e')](db[_0xc6e3('0x56')][_0xc6e3('0x57')](_0x3a50d6(_0x4fca6b,_0xc6e3('0x5e')))[_0xc6e3('0x2d')](function(){})[_0xc6e3('0x30')](_0x3e3958()));}}return _0x4f140d;})[_0xc6e3('0x59')]();})['catch'](function(_0x2928cc){logger[_0xc6e3('0x14')](_0xc6e3('0x5f'),_0xc6e3('0x60'),_0x2928cc[_0xc6e3('0x32')]);});}var processPromises=function(_0x1fb1f2){return BPromise[_0xc6e3('0x59')](promises)['then'](function(_0x2f5ac6){})[_0xc6e3('0x30')](function(_0x3cb023){logger['error'](_0xc6e3('0x61'),JSON[_0xc6e3('0x33')](_0x3cb023));})[_0xc6e3('0x62')](function(){socket[_0xc6e3('0x63')](_0xc6e3('0x64')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x1fb1f2){return _0x1fb1f2['resume']();}});};var endCsv=function(){return BPromise[_0xc6e3('0x65')]()[_0xc6e3('0x2d')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0xc6e3('0x63')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xc6e3('0x66')](FILEPATH);}catch(_0x5d3fde){logger[_0xc6e3('0x14')](_0xc6e3('0x67'),JSON[_0xc6e3('0x33')](_0x5d3fde));}finally{process[_0xc6e3('0x68')](0x0);}});};process['on'](_0xc6e3('0x69'),function(){logger['info'](_0xc6e3('0x6a'));endCsv();});function main(){return BPromise[_0xc6e3('0x65')]()[_0xc6e3('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xc6e3('0x11')](',');return db[_0xc6e3('0x2a')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0xbb53d6){var _0x4d673d=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xc6e3('0x6b')](_0x4d673d,{'header':!![],'skipEmptyLines':!![],'step':function(_0x35e914,_0x393b31){total+=0x1;var _0x13a521=total;promises[_0xc6e3('0x2e')](checkRow(_0x35e914,_0xbb53d6,_0x13a521)[_0xc6e3('0x2d')](function(){success+=0x1;})['catch'](function(_0x2f7814){if(_0x2f7814[_0xc6e3('0x14')]){errors+=0x1;delete _0x2f7814['error'];}else if(_0x2f7814[_0xc6e3('0x28')]){duplicates+=0x1;delete _0x2f7814[_0xc6e3('0x28')];}rows[_0xc6e3('0x2e')](_0x2f7814);}));if(total%0xc8===0x0){_0x393b31['pause']();return processPromises(_0x393b31);}},'complete':function(){return processPromises()[_0xc6e3('0x2d')](function(){logger[_0xc6e3('0x6c')](_0xc6e3('0x6d'));endCsv();});},'error':function(_0x3098cd,_0x493256){logger['info'](_0xc6e3('0x6e'),JSON[_0xc6e3('0x33')](_0x3098cd));endCsv();}});})['catch'](function(_0x4cfceb){logger['error'](_0xc6e3('0x6f'),JSON['stringify'](_0x4cfceb));});}main();
\ No newline at end of file
+var _0xa965=['CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','keys','push','pick','Error\x20while\x20creating\x20contact:\x20','checkHopper','insert','into','cm_hopper','scheduledAt','ContactId','createdAt','updatedAt','field','NOW()','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','toString','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','\x20=\x20?','fromQuery','from','id\x20IN\x20?','calleridnum','cm_hopper_final','cm_contacts','str','cm_hopper_black','VoiceQueue','findAll','outbound','CmList','Lists','then','get','always','sequelize','query','VoiceQueueId','catch','onlyIfOpen','all','BlackLists','Campaign','dialCheckDuplicateType','CampaignId','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','CSV\x20parsed\x20correctly!'];(function(_0x2eb5bc,_0x4634c6){var _0x51c7b1=function(_0x1af430){while(--_0x1af430){_0x2eb5bc['push'](_0x2eb5bc['shift']());}};_0x51c7b1(++_0x4634c6);}(_0xa965,0x71));var _0x5a96=function(_0x16bb0e,_0x343132){_0x16bb0e=_0x16bb0e-0x0;var _0x102b8b=_0xa965[_0x16bb0e];return _0x102b8b;};'use strict';var BPromise=require(_0x5a96('0x0'));var util=require(_0x5a96('0x1'));var _=require(_0x5a96('0x2'));var fs=require('fs');var squel=require(_0x5a96('0x3'));var Papa=require(_0x5a96('0x4'));var Redis=require(_0x5a96('0x5'));var db=require(_0x5a96('0x6'))['db'];var config=require(_0x5a96('0x7'));var logger=require(_0x5a96('0x8'))(_0x5a96('0x9'));config[_0x5a96('0xa')]=_[_0x5a96('0xb')](config[_0x5a96('0xa')],{'host':_0x5a96('0xc'),'port':0x18eb});var socket=require(_0x5a96('0xd'))(new Redis(config[_0x5a96('0xa')]));require(_0x5a96('0xe'))[_0x5a96('0xf')](socket);try{if(!process[_0x5a96('0x10')][0x2]||process[_0x5a96('0x10')][0x2]===_0x5a96('0x11')||process[_0x5a96('0x10')][0x2]===_0x5a96('0x12')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x5a96('0x10')][0x2];if(!process[_0x5a96('0x10')][0x3]||process[_0x5a96('0x10')][0x3]===_0x5a96('0x11')||process[_0x5a96('0x10')][0x3]===_0x5a96('0x12')||!process[_0x5a96('0x10')][0x4]||process[_0x5a96('0x10')][0x4]===_0x5a96('0x11')||process[_0x5a96('0x10')][0x4]===_0x5a96('0x12')){throw new Error(_0x5a96('0x13'));}var FIELDS=_[_0x5a96('0x14')](process[_0x5a96('0x10')][0x3]['split'](','),process[_0x5a96('0x10')][0x4]['split'](','));if(!process[_0x5a96('0x10')][0x5]||process[_0x5a96('0x10')][0x5]===_0x5a96('0x11')||process['argv'][0x5]===_0x5a96('0x12')){throw new Error(_0x5a96('0x15'));}var LISTID=process[_0x5a96('0x10')][0x5];var COMPANYID=process[_0x5a96('0x10')][0x6]&&process['argv'][0x6]!==_0x5a96('0x11')&&process['argv'][0x6]!==_0x5a96('0x12')?process[_0x5a96('0x10')][0x6]:null;var DUPLICATES=process[_0x5a96('0x10')][0x7]&&process[_0x5a96('0x10')][0x7]!==_0x5a96('0x11')&&process[_0x5a96('0x10')][0x7]!==_0x5a96('0x12')?process[_0x5a96('0x10')][0x7]:null;if(!process['argv'][0x8]||process['argv'][0x8]===_0x5a96('0x11')||process[_0x5a96('0x10')][0x8]==='null'){throw new Error(_0x5a96('0x16'));}var SOCKET_TIMESTAMP=process[_0x5a96('0x10')][0x8];}catch(_0x40b35f){logger[_0x5a96('0x17')](_0x40b35f);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x3dd598,_0xe68170,_0xcb2053,_0x54e2c0){var _0x5e852a={'message':_0xe68170};_0x5e852a[_0x3dd598]=!![];if(_0xcb2053){_0x5e852a[_0x5a96('0x18')]=_0xcb2053;}if(_0x54e2c0){_0x5e852a['index']=_0x54e2c0;}return _0x5e852a;}function isEmail(_0x4082a6){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x4082a6);}function checkRow(_0x5ec3d9,_0x21a0d2,_0x21a5af){return new BPromise(function(_0xaff38d,_0x34266e){if(_['isNil'](_0x5ec3d9)){return _0x34266e(handleCheckRowError(_0x5a96('0x17'),_0x5a96('0x19'),null,_0x21a5af));}if(_0x5ec3d9[_0x5a96('0x1a')]&&_0x5ec3d9[_0x5a96('0x1a')][_0x5a96('0x1b')]){var _0x4f1aef=_[_0x5a96('0x1c')](_0x5ec3d9[_0x5a96('0x1a')],_0x5a96('0x1d'))[_0x5a96('0x1e')](';');return _0x34266e(handleCheckRowError('error',_0x4f1aef,null,_0x21a5af));}var _0x518e0a={};for(var _0x5b268e in FIELDS){if(FIELDS[_0x5a96('0x1f')](_0x5b268e)&&FIELDS[_0x5b268e]){_0x518e0a[_0x5b268e]=_0x5ec3d9[_0x5a96('0x20')][0x0][FIELDS[_0x5b268e]]||_0x5ec3d9[_0x5a96('0x20')][0x0]['\ufeff'+FIELDS[_0x5b268e]];}}if(!_0x518e0a['firstName']){return _0x34266e(handleCheckRowError(_0x5a96('0x17'),_0x5a96('0x21'),null,_0x21a5af));}if(!_0x518e0a[_0x5a96('0x22')]){return _0x34266e(handleCheckRowError(_0x5a96('0x17'),_0x5a96('0x23'),null,_0x21a5af));}if(_0x518e0a[_0x5a96('0x24')]){var _0x4a94d3=moment(_0x518e0a[_0x5a96('0x24')],'YYYY-MM-DD');if(!_0x4a94d3['isValid']()){return _0x34266e(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x21a5af));}}if(_0x518e0a[_0x5a96('0x25')]){if(!isEmail(_0x518e0a[_0x5a96('0x25')])){return _0x34266e(handleCheckRowError(_0x5a96('0x17'),_0x5a96('0x26'),null,_0x21a5af));}}_0x518e0a[_0x5a96('0x27')]=LISTID;_0x518e0a[_0x5a96('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x5a96('0x1b')]&&_0x21a0d2){var _0xb91f9c={};for(var _0x5054af=0x0,_0x46e981=DUPLICATES[_0x5a96('0x1b')];_0x5054af<_0x46e981;_0x5054af+=0x1){_0xb91f9c[DUPLICATES[_0x5054af]]=_0x518e0a[DUPLICATES[_0x5054af]];}var _0x2973c7=_[_0x5a96('0x29')](_0x21a0d2,_0xb91f9c);if(_0x2973c7){return _0x34266e(handleCheckRowError(_0x5a96('0x2a'),_0x5a96('0x2b'),_0x2973c7,_0x21a5af));}}return db[_0x5a96('0x2c')]['create'](_0x518e0a,{'raw':!![],'hooks':![],'fields':_[_0x5a96('0x2d')](_0x518e0a)})['then'](function(_0xfe8957){if(DUPLICATES&&DUPLICATES[_0x5a96('0x1b')]&&_0x21a0d2){_0x21a0d2[_0x5a96('0x2e')](_[_0x5a96('0x2f')](_0x518e0a,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0xfe8957['id'];return _0xaff38d();})['catch'](function(_0x1bbfd6){return _0x34266e(handleCheckRowError('error',_0x5a96('0x30')+(_0x1bbfd6[_0x5a96('0x1d')]||JSON['stringify'](_0x1bbfd6)),null,_0x21a5af));});});}function checkHopper(){function _0x2ea599(){return function(_0x5f384e){logger[_0x5a96('0x17')]('cmContact',_0x5a96('0x31'),util['inspect'](_0x5f384e,{'showHidden':![],'depth':null}));};}var _0x251f45=function(_0x1aec73,_0x133b79){var _0x2a5ae1=squel[_0x5a96('0x32')]()[_0x5a96('0x33')](_0x5a96('0x34'))['fromQuery']([_0x5a96('0x22'),_0x5a96('0x35'),_0x5a96('0x36'),_0x5a96('0x27'),_0x133b79,_0x5a96('0x37'),_0x5a96('0x38')],squel['select']()[_0x5a96('0x39')](_0x5a96('0x22'),_0x5a96('0x22'))[_0x5a96('0x39')](_0x5a96('0x3a'),_0x5a96('0x35'))[_0x5a96('0x39')]('id',_0x5a96('0x36'))[_0x5a96('0x39')](LISTID['toString'](),'ListId')['field'](_0x1aec73['id']['toString'](),_0x133b79)[_0x5a96('0x39')]('NOW()','createdAt')['field']('NOW()',_0x5a96('0x38'))['from']('cm_contacts')[_0x5a96('0x3b')](_0x5a96('0x3c'))[_0x5a96('0x3b')](_0x5a96('0x3d'),LISTID[_0x5a96('0x3e')]())[_0x5a96('0x3b')](_0x5a96('0x3f'))[_0x5a96('0x3b')](_0x5a96('0x40'),squel[_0x5a96('0x41')]()[_0x5a96('0x39')](_0x5a96('0x22'))['from'](_0x5a96('0x34'))[_0x5a96('0x3b')](_0x133b79+_0x5a96('0x42'),_0x1aec73['id'][_0x5a96('0x3e')]())))[_0x5a96('0x3e')]();return _0x2a5ae1;};var _0x3f0367=function(_0x35f648,_0x2eae72){var _0x204a0c=squel['insert']()[_0x5a96('0x33')](_0x5a96('0x34'))[_0x5a96('0x43')]([_0x5a96('0x22'),_0x5a96('0x35'),_0x5a96('0x36'),'ListId',_0x2eae72,'createdAt',_0x5a96('0x38')],squel['select']()['field'](_0x5a96('0x22'),_0x5a96('0x22'))['field']('NOW()',_0x5a96('0x35'))['field']('id','ContactId')['field'](LISTID[_0x5a96('0x3e')](),_0x5a96('0x27'))['field'](_0x35f648['id'][_0x5a96('0x3e')](),_0x2eae72)[_0x5a96('0x39')]('NOW()',_0x5a96('0x37'))[_0x5a96('0x39')](_0x5a96('0x3a'),'updatedAt')[_0x5a96('0x44')]('cm_contacts')[_0x5a96('0x3b')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',LISTID[_0x5a96('0x3e')]())[_0x5a96('0x3b')](_0x5a96('0x45'),squel['str'](hopperContacts))[_0x5a96('0x3b')](_0x5a96('0x3f'))[_0x5a96('0x3b')](_0x5a96('0x40'),squel[_0x5a96('0x41')]()[_0x5a96('0x39')](_0x5a96('0x46'))[_0x5a96('0x44')](_0x5a96('0x47'))['where'](_0x2eae72+_0x5a96('0x42'),_0x35f648['id'][_0x5a96('0x3e')]()))[_0x5a96('0x3b')](_0x5a96('0x40'),squel['select']()[_0x5a96('0x39')]('phone')['from']('cm_hopper')[_0x5a96('0x3b')](_0x2eae72+_0x5a96('0x42'),_0x35f648['id'][_0x5a96('0x3e')]())))[_0x5a96('0x3e')]();return _0x204a0c;};function _0x3d951e(_0x117e6b,_0x32c1d7){var _0x2671e3=squel[_0x5a96('0x32')]()[_0x5a96('0x33')](_0x5a96('0x34'))['fromQuery']([_0x5a96('0x22'),_0x5a96('0x35'),_0x5a96('0x36'),'ListId',_0x32c1d7,_0x5a96('0x37'),_0x5a96('0x38')],squel['select']()['field']('phone',_0x5a96('0x22'))[_0x5a96('0x39')](_0x5a96('0x3a'),_0x5a96('0x35'))[_0x5a96('0x39')]('id',_0x5a96('0x36'))[_0x5a96('0x39')](LISTID[_0x5a96('0x3e')](),_0x5a96('0x27'))[_0x5a96('0x39')](_0x117e6b['id'][_0x5a96('0x3e')](),_0x32c1d7)[_0x5a96('0x39')](_0x5a96('0x3a'),_0x5a96('0x37'))[_0x5a96('0x39')](_0x5a96('0x3a'),_0x5a96('0x38'))[_0x5a96('0x44')](_0x5a96('0x48'))[_0x5a96('0x3b')](_0x5a96('0x3c'))[_0x5a96('0x3b')]('ListId\x20=\x20?',LISTID['toString']())[_0x5a96('0x3b')](_0x5a96('0x45'),squel[_0x5a96('0x49')](hopperContacts))[_0x5a96('0x3b')]('phone\x20IS\x20NOT\x20NULL'))[_0x5a96('0x3e')]();return _0x2671e3;}function _0x57c05f(_0x9c99dc,_0x2d083f){var _0x475ff8=squel[_0x5a96('0x32')]()[_0x5a96('0x33')](_0x5a96('0x4a'))[_0x5a96('0x43')]([_0x5a96('0x22'),_0x5a96('0x36'),_0x5a96('0x27'),_0x2d083f,_0x5a96('0x37'),_0x5a96('0x38')],squel[_0x5a96('0x41')]()[_0x5a96('0x39')]('phone',_0x5a96('0x22'))[_0x5a96('0x39')]('id',_0x5a96('0x36'))[_0x5a96('0x39')](LISTID[_0x5a96('0x3e')](),_0x5a96('0x27'))[_0x5a96('0x39')](_0x9c99dc['id'][_0x5a96('0x3e')](),_0x2d083f)[_0x5a96('0x39')](_0x5a96('0x3a'),_0x5a96('0x37'))[_0x5a96('0x39')]('NOW()',_0x5a96('0x38'))[_0x5a96('0x44')]('cm_contacts')[_0x5a96('0x3b')](_0x5a96('0x3c'))[_0x5a96('0x3b')](_0x5a96('0x3d'),LISTID['toString']())[_0x5a96('0x3b')](_0x5a96('0x45'),squel[_0x5a96('0x49')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x5a96('0x3e')]();return _0x475ff8;}return db[_0x5a96('0x4b')][_0x5a96('0x4c')]({'where':{'type':_0x5a96('0x4d')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x5a96('0x4e')],'as':_0x5a96('0x4f'),'where':{'id':LISTID}}]})[_0x5a96('0x50')](function(_0x1ae7fc){var _0x321600=[];if(_0x1ae7fc){var _0x1b13fc;for(var _0x199cac=0x0,_0x240fe2;_0x199cac<_0x1ae7fc[_0x5a96('0x1b')];_0x199cac+=0x1){_0x240fe2=_0x1ae7fc[_0x199cac][_0x5a96('0x51')]({'plain':!![]});switch(_0x240fe2['dialCheckDuplicateType']){case _0x5a96('0x52'):_0x321600['push'](db[_0x5a96('0x53')][_0x5a96('0x54')](_0x3f0367(_0x240fe2,_0x5a96('0x55')))[_0x5a96('0x50')](function(){})[_0x5a96('0x56')](_0x2ea599()));break;case _0x5a96('0x57'):_0x321600[_0x5a96('0x2e')](db['sequelize'][_0x5a96('0x54')](_0x251f45(_0x240fe2,_0x5a96('0x55')))['then'](function(){})[_0x5a96('0x56')](_0x2ea599()));break;default:_0x321600[_0x5a96('0x2e')](db[_0x5a96('0x53')][_0x5a96('0x54')](_0x3d951e(_0x240fe2,_0x5a96('0x55')))[_0x5a96('0x50')](function(){})[_0x5a96('0x56')](_0x2ea599()));}}}return _0x321600;})[_0x5a96('0x58')]()[_0x5a96('0x50')](function(){return db[_0x5a96('0x4b')][_0x5a96('0x4c')]({'where':{'type':_0x5a96('0x4d')},'attributes':['id'],'include':[{'model':db[_0x5a96('0x4e')],'as':_0x5a96('0x59'),'where':{'id':LISTID}}]})[_0x5a96('0x50')](function(_0xe7c805){var _0xab60ed=[];if(_0xe7c805){var _0x48149d;for(var _0x1d270b=0x0,_0x24b22b;_0x1d270b<_0xe7c805[_0x5a96('0x1b')];_0x1d270b+=0x1){_0x24b22b=_0xe7c805[_0x1d270b][_0x5a96('0x51')]({'plain':!![]});_0xab60ed[_0x5a96('0x2e')](db[_0x5a96('0x53')][_0x5a96('0x54')](_0x57c05f(_0x24b22b,_0x5a96('0x55')))[_0x5a96('0x50')](function(){})[_0x5a96('0x56')](_0x2ea599()));}}return _0xab60ed;})[_0x5a96('0x58')]();})[_0x5a96('0x50')](function(){return db[_0x5a96('0x5a')][_0x5a96('0x4c')]({'attributes':['id',_0x5a96('0x5b')],'include':[{'model':db[_0x5a96('0x4e')],'as':_0x5a96('0x4f'),'where':{'id':LISTID}}]})[_0x5a96('0x50')](function(_0x45f039){var _0x4c94ee=[];if(_0x45f039){for(var _0x29a996=0x0,_0x278f1c;_0x29a996<_0x45f039[_0x5a96('0x1b')];_0x29a996+=0x1){_0x278f1c=_0x45f039[_0x29a996][_0x5a96('0x51')]({'plain':!![]});switch(_0x278f1c[_0x5a96('0x5b')]){case _0x5a96('0x52'):_0x4c94ee[_0x5a96('0x2e')](db[_0x5a96('0x53')]['query'](_0x3f0367(_0x278f1c,_0x5a96('0x5c')))[_0x5a96('0x50')](function(){})[_0x5a96('0x56')](_0x2ea599()));break;case _0x5a96('0x57'):_0x4c94ee[_0x5a96('0x2e')](db['sequelize'][_0x5a96('0x54')](_0x251f45(_0x278f1c,_0x5a96('0x5c')))['then'](function(){})[_0x5a96('0x56')](_0x2ea599()));break;default:_0x4c94ee[_0x5a96('0x2e')](db[_0x5a96('0x53')][_0x5a96('0x54')](_0x3d951e(_0x278f1c,_0x5a96('0x5c')))[_0x5a96('0x50')](function(){})[_0x5a96('0x56')](_0x2ea599()));}}}return _0x4c94ee;})[_0x5a96('0x58')]();})['then'](function(){return db[_0x5a96('0x5a')][_0x5a96('0x4c')]({'attributes':['id'],'include':[{'model':db[_0x5a96('0x4e')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x5a96('0x50')](function(_0x3c6526){var _0x2c3c58=[];if(_0x3c6526){for(var _0x2bd034=0x0,_0x3df66a;_0x2bd034<_0x3c6526[_0x5a96('0x1b')];_0x2bd034+=0x1){_0x3df66a=_0x3c6526[_0x2bd034][_0x5a96('0x51')]({'plain':!![]});_0x2c3c58[_0x5a96('0x2e')](db['sequelize']['query'](_0x57c05f(_0x3df66a,_0x5a96('0x5c')))[_0x5a96('0x50')](function(){})[_0x5a96('0x56')](_0x2ea599()));}}return _0x2c3c58;})[_0x5a96('0x58')]();})['catch'](function(_0x5cd163){logger[_0x5a96('0x17')]('cmContact,\x20%s,\x20%s',_0x5a96('0x5d'),_0x5cd163[_0x5a96('0x1d')]);});}var processPromises=function(_0x21d719){return BPromise[_0x5a96('0x58')](promises)[_0x5a96('0x50')](function(_0x478f09){})['catch'](function(_0x179cc6){logger['error'](_0x5a96('0x5e'),JSON[_0x5a96('0x5f')](_0x179cc6));})[_0x5a96('0x60')](function(){socket[_0x5a96('0x61')](_0x5a96('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x21d719){return _0x21d719[_0x5a96('0x63')]();}});};var endCsv=function(){return BPromise[_0x5a96('0x64')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x5a96('0x50')](function(){socket[_0x5a96('0x61')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x5a96('0x65')](FILEPATH);}catch(_0x490dd8){logger[_0x5a96('0x17')](_0x5a96('0x66'),JSON['stringify'](_0x490dd8));}finally{process[_0x5a96('0x67')](0x0);}});};process['on']('SIGINT',function(){logger[_0x5a96('0x68')](_0x5a96('0x69'));endCsv();});function main(){return BPromise[_0x5a96('0x64')]()[_0x5a96('0x50')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x5a96('0x2c')][_0x5a96('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x5a96('0x50')](function(_0x145c56){var _0x657c58=fs[_0x5a96('0x6a')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x5a96('0x6b')](_0x657c58,{'header':!![],'skipEmptyLines':!![],'step':function(_0x1397e6,_0x52617f){total+=0x1;var _0x160d85=total;promises[_0x5a96('0x2e')](checkRow(_0x1397e6,_0x145c56,_0x160d85)[_0x5a96('0x50')](function(){success+=0x1;})[_0x5a96('0x56')](function(_0x2d99a8){if(_0x2d99a8[_0x5a96('0x17')]){errors+=0x1;delete _0x2d99a8[_0x5a96('0x17')];}else if(_0x2d99a8[_0x5a96('0x2a')]){duplicates+=0x1;delete _0x2d99a8[_0x5a96('0x2a')];}rows[_0x5a96('0x2e')](_0x2d99a8);}));if(total%0xc8===0x0){_0x52617f['pause']();return processPromises(_0x52617f);}},'complete':function(){return processPromises()[_0x5a96('0x50')](function(){logger[_0x5a96('0x68')](_0x5a96('0x6c'));endCsv();});},'error':function(_0x3831b3,_0x3dec92){logger[_0x5a96('0x68')](_0x5a96('0x6d'),JSON['stringify'](_0x3831b3));endCsv();}});})[_0x5a96('0x56')](function(_0x9d4224){logger[_0x5a96('0x17')](_0x5a96('0x6e'),JSON[_0x5a96('0x5f')](_0x9d4224));});}main();
\ No newline at end of file
index afce262..06ef88e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a44=['ioredis','../../../mysqldb','../../../config/environment','import','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','field','from','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','phone','scheduledat','ListId','createdAt','priority','recallme','fields','join','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.updatedAt','select','.CmListId','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','concat','keys','CompanyId','fromQuery',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','message','exit','push','code','sequelize','query','spread','catch','main','stringify','send','binding','socket_timestamp','root','server/files/tmp','.csv','header','writeFileSync','parse','data','length','rows','errors','hasOwnProperty','replace','isValid','isNaN','UserId','isNumber','includes','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','error','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','campaigns','each','then','finish','affectedRows','unlink','complete','argv','existsSync','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','path','lodash','papaparse','util','moment','squel'];(function(_0x461d9d,_0x1ea2a8){var _0x252bee=function(_0x4b4df4){while(--_0x4b4df4){_0x461d9d['push'](_0x461d9d['shift']());}};_0x252bee(++_0x1ea2a8);}(_0x4a44,0x80));var _0x44a4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4a44[_0x14add3];return _0x4a174f;};'use strict';var fs=require('fs');var path=require(_0x44a4('0x0'));var _=require(_0x44a4('0x1'));var Papa=require(_0x44a4('0x2'));var util=require(_0x44a4('0x3'));var BPromise=require('bluebird');var moment=require(_0x44a4('0x4'));var squel=require(_0x44a4('0x5'));var Redis=require(_0x44a4('0x6'));var db=require(_0x44a4('0x7'))['db'];var config=require(_0x44a4('0x8'));var logger=require('../../../config/logger')(_0x44a4('0x9'));config[_0x44a4('0xa')]=_['defaults'](config['redis'],{'host':_0x44a4('0xb'),'port':0x18eb});var socket=require(_0x44a4('0xc'))(new Redis(config[_0x44a4('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x44a4('0xd')](_0x44a4('0xe'));function isEmail(_0x594b5c){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x594b5c);}function selectNotIn(_0x33e75b,_0x1c7975,_0x5d98ba,_0xef0b7,_0x327bda){return squel['select']()[_0x44a4('0xf')]('phone')[_0x44a4('0x10')](_0xef0b7)['join'](_0x1c7975,null,_0x1c7975+_0x44a4('0x11')+_0xef0b7+'.'+_0x5d98ba)['where'](_0xef0b7+'.'+_0x5d98ba+_0x44a4('0x12')+_0x33e75b+'.'+_0x5d98ba)[_0x44a4('0x13')](_0x1c7975+_0x44a4('0x14')+_0x327bda['join']()+')');}function insertCmHopper(_0x4df2a9,_0x30591a,_0x50f918,_0x390866,_0xa97a48){var _0x401937=[_0x44a4('0x15'),'cm_contacts.scheduledat',_0x44a4('0x16'),_0x44a4('0x17'),_0x30591a+'.'+_0x390866,_0x44a4('0x18'),'cm_contacts.updatedAt',_0x44a4('0x19'),_0x44a4('0x1a'),'\x22'+_0xa97a48+'\x22'];return squel[_0x44a4('0x1b')]()[_0x44a4('0x1c')](_0x44a4('0x1d'))['fromQuery']([_0x44a4('0x1e'),_0x44a4('0x1f'),'ContactId',_0x44a4('0x20'),_0x390866,_0x44a4('0x21'),'updatedAt',_0x44a4('0x22'),'UserId',_0x44a4('0x23')],squel['select']()[_0x44a4('0x24')](_0x401937)[_0x44a4('0x10')](_0x30591a)[_0x44a4('0x25')](_0x44a4('0x26'),null,_0x44a4('0x27')+_0x30591a+'.CmListId')['join'](_0x50f918,null,_0x50f918+'.id\x20=\x20'+_0x30591a+'.'+_0x390866)['where'](_0x30591a+_0x44a4('0x28'),_0x4df2a9)[_0x44a4('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x44a4('0x13')](_0x44a4('0x29'),selectNotIn(_0x30591a,_0x50f918,_0x390866,'cm_hopper',[_0x44a4('0x2a'),_0x44a4('0x2b')]))[_0x44a4('0x13')](_0x44a4('0x29'),selectNotIn(_0x30591a,_0x50f918,_0x390866,_0x44a4('0x1d'),[_0x44a4('0x2a')])))[_0x44a4('0x2c')]();}function insertCmHopperBlack(_0x41b01f,_0x521975,_0x525dc3,_0x55ac89){var _0x5b90f6=[_0x44a4('0x15'),'cm_contacts.id',_0x44a4('0x17'),_0x521975+'.'+_0x55ac89,'cm_contacts.createdAt',_0x44a4('0x2d')];return squel[_0x44a4('0x1b')]()[_0x44a4('0x1c')]('cm_hopper_black')['fromQuery']([_0x44a4('0x1e'),'ContactId',_0x44a4('0x20'),_0x55ac89,_0x44a4('0x21'),'updatedAt'],squel[_0x44a4('0x2e')]()[_0x44a4('0x24')](_0x5b90f6)[_0x44a4('0x10')](_0x521975)[_0x44a4('0x25')](_0x44a4('0x26'),null,_0x44a4('0x27')+_0x521975+_0x44a4('0x2f'))[_0x44a4('0x25')](_0x525dc3,null,_0x525dc3+'.id\x20=\x20'+_0x521975+'.'+_0x55ac89)[_0x44a4('0x13')](_0x521975+'.CmListId\x20=\x20?',_0x41b01f)['where'](_0x44a4('0x30'),NOW)[_0x44a4('0x13')](_0x44a4('0x29'),squel[_0x44a4('0x2e')]()[_0x44a4('0xf')](_0x44a4('0x1e'))['from']('cm_hopper_black')[_0x44a4('0x13')](_0x44a4('0x31'),_0x41b01f)['where'](_0x55ac89+'\x20=\x20?',_0x521975+'.'+_0x55ac89)))['toString']();}function insertCmContact(_0x5f2161,_0x2ba5e1,_0x570ad9,_0x53e6c4){var _0x2e1314=_[_0x44a4('0x32')](_[_0x44a4('0x33')](_0x53e6c4),[_0x44a4('0x20'),_0x44a4('0x34'),_0x44a4('0x21'),'updatedAt']);return squel[_0x44a4('0x1b')]()[_0x44a4('0x1c')](_0x44a4('0x26'))[_0x44a4('0x35')](_0x2e1314,squel[_0x44a4('0x2e')]()['fields'](_0x2e1314)[_0x44a4('0x10')](_0x2ba5e1)['where']('('+_0x570ad9['join'](',')+_0x44a4('0x36'),squel['select']()[_0x44a4('0x24')](_0x570ad9)[_0x44a4('0x10')]('cm_contacts')[_0x44a4('0x13')](_0x44a4('0x31'),_0x5f2161)[_0x44a4('0x13')](_0x44a4('0x37')))[_0x44a4('0x13')](_0x44a4('0x38'),squel['select']()[_0x44a4('0xf')](_0x44a4('0x39'),_0x44a4('0x3a'))[_0x44a4('0x10')](_0x2ba5e1)[_0x44a4('0x3b')](_0x570ad9['join'](','))))[_0x44a4('0x2c')]();}function handleStop(){logger[_0x44a4('0x3c')](_0x44a4('0x3d'));stopped=!![];}function handleUncaughtException(_0x2962bb){logger['error'](_0x2962bb[_0x44a4('0x3e')]);process[_0x44a4('0x3f')](0x1);}function handleError(_0x13e52a,_0x2d5907){stats['errors'][_0x44a4('0x40')]({'name':_0x2d5907[_0x44a4('0x41')],'message':_0x2d5907[_0x44a4('0x3e')],'row':_0x13e52a});}function handleQuery(_0x3f4a92){logger['info'](_0x3f4a92);return db[_0x44a4('0x42')][_0x44a4('0x43')](_0x3f4a92)[_0x44a4('0x44')](function(_0x336f5c){results[_0x44a4('0x40')](_0x336f5c);})[_0x44a4('0x45')](function(_0x492480){logger['error'](_0x492480['message']);});}function main(_0x3a9850,_0x39c710,_0x3938e3,_0x52ed6d){logger[_0x44a4('0x3c')](_0x44a4('0x46'),_0x3a9850,JSON[_0x44a4('0x47')](_0x39c710));process[_0x44a4('0x48')]('start');var _0x4782be=_0x39c710[_0x44a4('0x49')];var _0x450c81=_0x39c710[_0x44a4('0x4a')];var _0x2f85d4=path[_0x44a4('0x25')](config[_0x44a4('0x4b')],_0x44a4('0x4c'),_0x450c81+_0x44a4('0x4d'));var _0x50fbae=_[_0x44a4('0x33')](_0x4782be)['join']();logger['info'](_0x44a4('0x4e'),_0x50fbae);fs[_0x44a4('0x4f')](_0x2f85d4,_0x50fbae+'\x0a');Papa[_0x44a4('0x50')](fs['createReadStream'](_0x3a9850),{'header':!![],'skipEmptyLines':!![],'step':function(_0x29c24a,_0x242e74){try{for(var _0x36cb65=0x0,_0x3e059c=[];_0x36cb65<_0x29c24a[_0x44a4('0x51')][_0x44a4('0x52')];_0x36cb65++){stats[_0x44a4('0x53')]+=0x1;if(_0x29c24a['errors'][_0x36cb65]){handleError(_0x29c24a['data'][_0x36cb65],_0x29c24a[_0x44a4('0x54')][_0x36cb65]);}else{var _0x282ef1=[];for(var _0x549aee in _0x4782be){if(_0x4782be[_0x44a4('0x55')](_0x549aee)){if(_0x29c24a[_0x44a4('0x51')][_0x36cb65][_0x4782be[_0x549aee]]){var _0x3e268a=_['trim'](_0x29c24a[_0x44a4('0x51')][_0x36cb65][_0x4782be[_0x549aee]][_0x44a4('0x56')](/"/g,'\x27'));switch(_0x549aee){case _0x44a4('0x1f'):var _0x406163=moment(_0x3e268a,_0x44a4('0xe'),!![]);if(_0x406163[_0x44a4('0x57')]()){_0x3e059c[_0x44a4('0x40')]('\x22'+_0x3e268a+'\x22');}else{_0x282ef1[_0x44a4('0x40')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x44a4('0x22'):var _0x42a874=parseInt(_0x3e268a);_0x3e268a=_[_0x44a4('0x58')](_0x42a874)||_0x42a874<0x0||_0x42a874>0x4?_0x52ed6d?0x3:0x2:_0x42a874;_0x3e059c['push']('\x22'+_0x3e268a+'\x22');break;case _0x44a4('0x59'):var _0x8a0e26=parseInt(_0x3e268a);if(_[_0x44a4('0x5a')](_0x8a0e26)&&_[_0x44a4('0x5b')](_0x3938e3,_0x8a0e26)){_0x3e059c[_0x44a4('0x40')]('\x22'+_0x8a0e26+'\x22');}else{_0x282ef1[_0x44a4('0x40')](_0x44a4('0x5c'));}break;case _0x44a4('0x5d'):if(isEmail(_0x3e268a)){_0x3e059c[_0x44a4('0x40')]('\x22'+_0x3e268a+'\x22');}else{_0x282ef1[_0x44a4('0x40')]('email\x20wrong\x20format');}break;case _0x44a4('0x5e'):var _0x2b13d7=moment(_0x3e268a,_0x44a4('0x5f'),!![]);if(_0x2b13d7[_0x44a4('0x57')]()){_0x3e059c[_0x44a4('0x40')]('\x22'+_0x3e268a+'\x22');}else{_0x282ef1['push'](_0x44a4('0x60'));}break;default:_0x3e059c[_0x44a4('0x40')]('\x22'+_0x3e268a+'\x22');}}else{switch(_0x549aee){case'firstName':case _0x44a4('0x1e'):_0x282ef1[_0x44a4('0x40')](_0x549aee+'\x20not\x20specified');break;default:_0x3e059c[_0x44a4('0x40')]('\x22\x22');}}}}if(_0x282ef1[_0x44a4('0x52')]){handleError(_0x29c24a[_0x44a4('0x51')][_0x36cb65],{'code':_0x44a4('0x61'),'message':_0x282ef1[_0x44a4('0x25')]()});}else{fs[_0x44a4('0x62')](_0x2f85d4,_0x3e059c[_0x44a4('0x25')]()+'\x0a');}_0x3e059c=[];}if(!(stats[_0x44a4('0x53')]%0xc8)){socket[_0x44a4('0x63')](_0x44a4('0x64')+_0x450c81,stats);stats[_0x44a4('0x54')]=[];}}if(stopped){logger[_0x44a4('0x3c')](_0x44a4('0x65'));_0x242e74[_0x44a4('0x66')]();}}catch(_0x16e4e1){handleError(_0x29c24a[_0x44a4('0x51')][_0x36cb65],{'code':_0x44a4('0x67'),'message':_0x16e4e1[_0x44a4('0x3e')]});logger[_0x44a4('0x68')](_0x44a4('0x69'),_0x16e4e1[_0x44a4('0x3e')]);}},'complete':function(){try{var _0x321a9a=[];var _0x5414c7=_0x44a4('0x26');if(_0x39c710['duplicates']&&_0x39c710[_0x44a4('0x6a')][_0x44a4('0x52')]){_0x5414c7='cm_contacts_'+_0x450c81;_0x321a9a[_0x44a4('0x40')](_0x44a4('0x6b')+_0x5414c7+_0x44a4('0x6c'));}var _0x337cdd=util[_0x44a4('0xd')](_0x44a4('0x6d'),_0x2f85d4,_0x5414c7,_0x50fbae,_0x39c710['ListId'],_0x39c710[_0x44a4('0x34')]||null,NOW,NOW);if(_['isNil'](_0x4782be[_0x44a4('0x1f')])){_0x337cdd+=_0x44a4('0x6e');}_0x321a9a[_0x44a4('0x40')](_0x337cdd);if(_0x39c710['duplicates']&&_0x39c710['duplicates']['length']){_0x321a9a['push'](insertCmContact(_0x39c710[_0x44a4('0x20')],_0x5414c7,_0x39c710['duplicates'],_0x4782be));_0x321a9a[_0x44a4('0x40')](_0x44a4('0x6f')+_0x5414c7+';');}_0x321a9a[_0x44a4('0x40')](insertCmHopper(_0x39c710[_0x44a4('0x20')],_0x44a4('0x70'),_0x44a4('0x71'),_0x44a4('0x72'),_0x52ed6d));_0x321a9a[_0x44a4('0x40')](insertCmHopperBlack(_0x39c710[_0x44a4('0x20')],'voice_queues_has_cm_blacklists',_0x44a4('0x71'),'VoiceQueueId'));_0x321a9a[_0x44a4('0x40')](insertCmHopper(_0x39c710[_0x44a4('0x20')],_0x44a4('0x73'),'campaigns',_0x44a4('0x74'),_0x52ed6d));_0x321a9a[_0x44a4('0x40')](insertCmHopperBlack(_0x39c710[_0x44a4('0x20')],_0x44a4('0x75'),_0x44a4('0x76'),'CampaignId'));BPromise[_0x44a4('0x77')](_0x321a9a,handleQuery)[_0x44a4('0x78')](function(_0x263863){stats[_0x44a4('0x79')]=!![];stats['affectedRows']=_0x39c710['duplicates']&&_0x39c710[_0x44a4('0x6a')]['length']?results[0x2][_0x44a4('0x7a')]:results[0x0][_0x44a4('0x7a')];socket[_0x44a4('0x63')]('contact:import:'+_0x450c81,stats);fs[_0x44a4('0x7b')](_0x3a9850);fs[_0x44a4('0x7b')](_0x2f85d4);process[_0x44a4('0x3f')](0x0);})[_0x44a4('0x45')](function(_0x5209b7){logger[_0x44a4('0x68')](_0x5209b7[_0x44a4('0x3e')]);process['exit'](0x1);});}catch(_0x5684cc){logger['error'](_0x44a4('0x7c'),_0x5684cc['message']);process['exit'](0x1);}},'error':function(_0x3c6f21,_0x4455b3,_0xd39ac8,_0x3717fc){throw new Error(_0x3717fc);}});}function validate(){if(process[_0x44a4('0x7d')]&&process[_0x44a4('0x7d')][_0x44a4('0x52')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x2c3637=path[_0x44a4('0x25')](config[_0x44a4('0x4b')],_0x44a4('0x4c'),process[_0x44a4('0x7d')][0x2]);if(!fs[_0x44a4('0x7e')](_0x2c3637)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x349a2d={};try{_0x349a2d=JSON[_0x44a4('0x50')](process['argv'][0x3]);if(!_0x349a2d[_0x44a4('0x49')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x349a2d[_0x44a4('0x49')][_0x44a4('0x1e')]){throw new Error(_0x44a4('0x7f'));}if(!_0x349a2d[_0x44a4('0x49')][_0x44a4('0x80')]){throw new Error(_0x44a4('0x81'));}var _0x1b40ab=0x0;if(_0x349a2d[_0x44a4('0x49')][_0x44a4('0x59')]){_0x1b40ab=0x1;}if(!_0x349a2d[_0x44a4('0x20')]){throw new Error(_0x44a4('0x82'));}}catch(_0x33efe6){throw new Error(_0x44a4('0x83'));}var _0x4f2131=[];try{_0x4f2131=_[_0x44a4('0x84')](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x378beb){logger['info']('No\x20agent\x20available');}main(_0x2c3637,_0x349a2d,_0x4f2131,_0x1b40ab);}validate();process['on'](_0x44a4('0x85'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0xc68d=['phone','from','join','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','where','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','cm_contacts.id','cm_hopper_black','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','toString','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','message','exit','errors','push','code','info','sequelize','spread','catch','error','main','stringify','send','start','socket_timestamp','root','server/files/tmp','.csv','header','writeFileSync','parse','data','length','rows','hasOwnProperty','trim','scheduledat','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../mysqldb','import','redis','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0xc68d,0xfe));var _0xdc68=function(_0x54e8e0,_0x6a3471){_0x54e8e0=_0x54e8e0-0x0;var _0x1f2cd6=_0xc68d[_0x54e8e0];return _0x1f2cd6;};'use strict';var fs=require('fs');var path=require(_0xdc68('0x0'));var _=require(_0xdc68('0x1'));var Papa=require(_0xdc68('0x2'));var util=require(_0xdc68('0x3'));var BPromise=require(_0xdc68('0x4'));var moment=require(_0xdc68('0x5'));var squel=require('squel');var Redis=require(_0xdc68('0x6'));var db=require(_0xdc68('0x7'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xdc68('0x8'));config[_0xdc68('0x9')]=_['defaults'](config[_0xdc68('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xdc68('0xa'))(new Redis(config[_0xdc68('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xdc68('0xb')](_0xdc68('0xc'));function isEmail(_0x5e5411){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xdc68('0xd')](_0x5e5411);}function selectNotIn(_0x4deb59,_0x2707e2,_0x6fd0f6,_0x55331e,_0xf803fa){return squel[_0xdc68('0xe')]()[_0xdc68('0xf')](_0xdc68('0x10'))[_0xdc68('0x11')](_0x55331e)[_0xdc68('0x12')](_0x2707e2,null,_0x2707e2+'.id\x20=\x20'+_0x55331e+'.'+_0x6fd0f6)['where'](_0x55331e+'.'+_0x6fd0f6+_0xdc68('0x13')+_0x4deb59+'.'+_0x6fd0f6)['where'](_0x2707e2+_0xdc68('0x14')+_0xf803fa[_0xdc68('0x12')]()+')');}function insertCmHopper(_0x41eb13,_0x4e3899,_0x31333e,_0x96eb9,_0xb00b92){var _0x2b5a45=[_0xdc68('0x15'),_0xdc68('0x16'),'cm_contacts.id',_0xdc68('0x17'),_0x4e3899+'.'+_0x96eb9,_0xdc68('0x18'),_0xdc68('0x19'),_0xdc68('0x1a'),_0xdc68('0x1b'),'\x22'+_0xb00b92+'\x22'];return squel[_0xdc68('0x1c')]()[_0xdc68('0x1d')](_0xdc68('0x1e'))[_0xdc68('0x1f')](['phone','scheduledat',_0xdc68('0x20'),_0xdc68('0x21'),_0x96eb9,_0xdc68('0x22'),_0xdc68('0x23'),_0xdc68('0x24'),_0xdc68('0x25'),_0xdc68('0x26')],squel[_0xdc68('0xe')]()[_0xdc68('0x27')](_0x2b5a45)[_0xdc68('0x11')](_0x4e3899)['join'](_0xdc68('0x28'),null,_0xdc68('0x29')+_0x4e3899+_0xdc68('0x2a'))[_0xdc68('0x12')](_0x31333e,null,_0x31333e+_0xdc68('0x2b')+_0x4e3899+'.'+_0x96eb9)[_0xdc68('0x2c')](_0x4e3899+_0xdc68('0x2d'),_0x41eb13)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0xdc68('0x2c')](_0xdc68('0x2e'),selectNotIn(_0x4e3899,_0x31333e,_0x96eb9,'cm_hopper',[_0xdc68('0x2f'),'\x22onlyIfOpen\x22']))['where'](_0xdc68('0x2e'),selectNotIn(_0x4e3899,_0x31333e,_0x96eb9,_0xdc68('0x1e'),[_0xdc68('0x2f')])))['toString']();}function insertCmHopperBlack(_0x562475,_0x2d2140,_0x4e2818,_0x62bc4e){var _0x3d07de=[_0xdc68('0x15'),_0xdc68('0x30'),'cm_contacts.ListId',_0x2d2140+'.'+_0x62bc4e,_0xdc68('0x18'),'cm_contacts.updatedAt'];return squel[_0xdc68('0x1c')]()[_0xdc68('0x1d')](_0xdc68('0x31'))[_0xdc68('0x1f')]([_0xdc68('0x10'),_0xdc68('0x20'),_0xdc68('0x21'),_0x62bc4e,_0xdc68('0x22'),_0xdc68('0x23')],squel['select']()['fields'](_0x3d07de)[_0xdc68('0x11')](_0x2d2140)[_0xdc68('0x12')](_0xdc68('0x28'),null,_0xdc68('0x29')+_0x2d2140+_0xdc68('0x2a'))[_0xdc68('0x12')](_0x4e2818,null,_0x4e2818+'.id\x20=\x20'+_0x2d2140+'.'+_0x62bc4e)[_0xdc68('0x2c')](_0x2d2140+_0xdc68('0x2d'),_0x562475)[_0xdc68('0x2c')](_0xdc68('0x32'),NOW)['where'](_0xdc68('0x2e'),squel['select']()[_0xdc68('0xf')](_0xdc68('0x10'))[_0xdc68('0x11')](_0xdc68('0x31'))['where'](_0xdc68('0x33'),_0x562475)[_0xdc68('0x2c')](_0x62bc4e+'\x20=\x20?',_0x2d2140+'.'+_0x62bc4e)))[_0xdc68('0x34')]();}function insertCmContact(_0x379785,_0xb4be10,_0x4aae13,_0x3502ac){var _0x5b709d=_[_0xdc68('0x35')](_[_0xdc68('0x36')](_0x3502ac),[_0xdc68('0x21'),_0xdc68('0x37'),_0xdc68('0x22'),_0xdc68('0x23')]);return squel[_0xdc68('0x1c')]()[_0xdc68('0x1d')](_0xdc68('0x28'))[_0xdc68('0x1f')](_0x5b709d,squel['select']()['fields'](_0x5b709d)['from'](_0xb4be10)['where']('('+_0x4aae13[_0xdc68('0x12')](',')+_0xdc68('0x38'),squel['select']()[_0xdc68('0x27')](_0x4aae13)[_0xdc68('0x11')](_0xdc68('0x28'))[_0xdc68('0x2c')]('ListId\x20=\x20?',_0x379785)[_0xdc68('0x2c')](_0xdc68('0x39')))[_0xdc68('0x2c')](_0xdc68('0x3a'),squel['select']()['field'](_0xdc68('0x3b'),_0xdc68('0x3c'))[_0xdc68('0x11')](_0xb4be10)['group'](_0x4aae13[_0xdc68('0x12')](','))))[_0xdc68('0x34')]();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x49f258){logger['error'](_0x49f258[_0xdc68('0x3d')]);process[_0xdc68('0x3e')](0x1);}function handleError(_0x54543b,_0x175b85){stats[_0xdc68('0x3f')][_0xdc68('0x40')]({'name':_0x175b85[_0xdc68('0x41')],'message':_0x175b85['message'],'row':_0x54543b});}function handleQuery(_0xa8b2e1){logger[_0xdc68('0x42')](_0xa8b2e1);return db[_0xdc68('0x43')]['query'](_0xa8b2e1)[_0xdc68('0x44')](function(_0xf7760d){results[_0xdc68('0x40')](_0xf7760d);})[_0xdc68('0x45')](function(_0x482228){logger[_0xdc68('0x46')](_0x482228[_0xdc68('0x3d')]);});}function main(_0x2442b3,_0x542a7b,_0x1d704b,_0x392786){logger['info'](_0xdc68('0x47'),_0x2442b3,JSON[_0xdc68('0x48')](_0x542a7b));process[_0xdc68('0x49')](_0xdc68('0x4a'));var _0x4acac9=_0x542a7b['binding'];var _0x3dd701=_0x542a7b[_0xdc68('0x4b')];var _0x3c6a11=path[_0xdc68('0x12')](config[_0xdc68('0x4c')],_0xdc68('0x4d'),_0x3dd701+_0xdc68('0x4e'));var _0x24fee1=_['keys'](_0x4acac9)[_0xdc68('0x12')]();logger['info'](_0xdc68('0x4f'),_0x24fee1);fs[_0xdc68('0x50')](_0x3c6a11,_0x24fee1+'\x0a');Papa[_0xdc68('0x51')](fs['createReadStream'](_0x2442b3),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3b99c8,_0x281a32){try{for(var _0xd75698=0x0,_0x200fcd=[];_0xd75698<_0x3b99c8[_0xdc68('0x52')][_0xdc68('0x53')];_0xd75698++){stats[_0xdc68('0x54')]+=0x1;if(_0x3b99c8[_0xdc68('0x3f')][_0xd75698]){handleError(_0x3b99c8['data'][_0xd75698],_0x3b99c8['errors'][_0xd75698]);}else{var _0x49b350=[];for(var _0x175751 in _0x4acac9){if(_0x4acac9[_0xdc68('0x55')](_0x175751)){if(_0x3b99c8[_0xdc68('0x52')][_0xd75698][_0x4acac9[_0x175751]]){var _0x32fce1=_[_0xdc68('0x56')](_0x3b99c8[_0xdc68('0x52')][_0xd75698][_0x4acac9[_0x175751]]['replace'](/"/g,'\x27'));switch(_0x175751){case _0xdc68('0x57'):var _0x285c0b=moment(_0x32fce1,_0xdc68('0xc'),!![]);if(_0x285c0b['isValid']()){_0x200fcd[_0xdc68('0x40')]('\x22'+_0x32fce1+'\x22');}else{_0x49b350[_0xdc68('0x40')](_0xdc68('0x58'));}break;case _0xdc68('0x24'):var _0x6d6e26=parseInt(_0x32fce1);_0x32fce1=_[_0xdc68('0x59')](_0x6d6e26)||_0x6d6e26<0x0||_0x6d6e26>0x4?_0x392786?0x3:0x2:_0x6d6e26;_0x200fcd[_0xdc68('0x40')]('\x22'+_0x32fce1+'\x22');break;case'UserId':var _0x436b37=parseInt(_0x32fce1);if(_['isNumber'](_0x436b37)&&_[_0xdc68('0x5a')](_0x1d704b,_0x436b37)){_0x200fcd[_0xdc68('0x40')]('\x22'+_0x436b37+'\x22');}else{_0x49b350['push'](_0xdc68('0x5b'));}break;case _0xdc68('0x5c'):if(isEmail(_0x32fce1)){_0x200fcd['push']('\x22'+_0x32fce1+'\x22');}else{_0x49b350[_0xdc68('0x40')](_0xdc68('0x5d'));}break;case'dateOfBirth':var _0x3ba38e=moment(_0x32fce1,_0xdc68('0x5e'),!![]);if(_0x3ba38e[_0xdc68('0x5f')]()){_0x200fcd[_0xdc68('0x40')]('\x22'+_0x32fce1+'\x22');}else{_0x49b350['push'](_0xdc68('0x60'));}break;default:_0x200fcd['push']('\x22'+_0x32fce1+'\x22');}}else{switch(_0x175751){case _0xdc68('0x61'):case _0xdc68('0x10'):_0x49b350[_0xdc68('0x40')](_0x175751+_0xdc68('0x62'));break;default:_0x200fcd[_0xdc68('0x40')]('\x22\x22');}}}}if(_0x49b350[_0xdc68('0x53')]){handleError(_0x3b99c8[_0xdc68('0x52')][_0xd75698],{'code':'SystemRow','message':_0x49b350['join']()});}else{fs[_0xdc68('0x63')](_0x3c6a11,_0x200fcd[_0xdc68('0x12')]()+'\x0a');}_0x200fcd=[];}if(!(stats[_0xdc68('0x54')]%0xc8)){socket[_0xdc68('0x64')](_0xdc68('0x65')+_0x3dd701,stats);stats[_0xdc68('0x3f')]=[];}}if(stopped){logger[_0xdc68('0x42')](_0xdc68('0x66'));_0x281a32[_0xdc68('0x67')]();}}catch(_0x447716){handleError(_0x3b99c8['data'][_0xd75698],{'code':_0xdc68('0x68'),'message':_0x447716[_0xdc68('0x3d')]});logger[_0xdc68('0x46')](_0xdc68('0x69'),_0x447716['message']);}},'complete':function(){try{var _0x5cd901=[];var _0x10535f=_0xdc68('0x28');if(_0x542a7b[_0xdc68('0x6a')]&&_0x542a7b[_0xdc68('0x6a')][_0xdc68('0x53')]){_0x10535f='cm_contacts_'+_0x3dd701;_0x5cd901['push'](_0xdc68('0x6b')+_0x10535f+_0xdc68('0x6c'));}var _0x4343e2=util[_0xdc68('0xb')]('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x3c6a11,_0x10535f,_0x24fee1,_0x542a7b[_0xdc68('0x21')],_0x542a7b[_0xdc68('0x37')]||null,NOW,NOW);if(_[_0xdc68('0x6d')](_0x4acac9['scheduledat'])){_0x4343e2+=_0xdc68('0x6e');}_0x5cd901[_0xdc68('0x40')](_0x4343e2);if(_0x542a7b[_0xdc68('0x6a')]&&_0x542a7b[_0xdc68('0x6a')]['length']){_0x5cd901[_0xdc68('0x40')](insertCmContact(_0x542a7b[_0xdc68('0x21')],_0x10535f,_0x542a7b['duplicates'],_0x4acac9));_0x5cd901[_0xdc68('0x40')](_0xdc68('0x6f')+_0x10535f+';');}_0x5cd901[_0xdc68('0x40')](insertCmHopper(_0x542a7b[_0xdc68('0x21')],_0xdc68('0x70'),_0xdc68('0x71'),'VoiceQueueId',_0x392786));_0x5cd901[_0xdc68('0x40')](insertCmHopperBlack(_0x542a7b[_0xdc68('0x21')],'voice_queues_has_cm_blacklists',_0xdc68('0x71'),_0xdc68('0x72')));_0x5cd901[_0xdc68('0x40')](insertCmHopper(_0x542a7b[_0xdc68('0x21')],_0xdc68('0x73'),_0xdc68('0x74'),_0xdc68('0x75'),_0x392786));_0x5cd901[_0xdc68('0x40')](insertCmHopperBlack(_0x542a7b[_0xdc68('0x21')],_0xdc68('0x76'),_0xdc68('0x74'),_0xdc68('0x75')));BPromise['each'](_0x5cd901,handleQuery)['then'](function(_0x53d258){stats[_0xdc68('0x77')]=!![];stats['affectedRows']=_0x542a7b['duplicates']&&_0x542a7b['duplicates'][_0xdc68('0x53')]?results[0x2]['affectedRows']:results[0x0][_0xdc68('0x78')];socket['emit']('contact:import:'+_0x3dd701,stats);fs[_0xdc68('0x79')](_0x2442b3);fs[_0xdc68('0x79')](_0x3c6a11);process[_0xdc68('0x3e')](0x0);})['catch'](function(_0x3a170f){logger[_0xdc68('0x46')](_0x3a170f['message']);process[_0xdc68('0x3e')](0x1);});}catch(_0x4865d6){logger[_0xdc68('0x46')]('complete',_0x4865d6[_0xdc68('0x3d')]);process[_0xdc68('0x3e')](0x1);}},'error':function(_0xf503a1,_0x4f420e,_0x38d83c,_0x419c8e){throw new Error(_0x419c8e);}});}function validate(){if(process[_0xdc68('0x7a')]&&process[_0xdc68('0x7a')][_0xdc68('0x53')]<0x4){throw new Error(_0xdc68('0x7b'));}var _0x16868a=path[_0xdc68('0x12')](config['root'],'server/files/tmp',process[_0xdc68('0x7a')][0x2]);if(!fs[_0xdc68('0x7c')](_0x16868a)){throw new Error(_0xdc68('0x7d'));}var _0x492560={};try{_0x492560=JSON[_0xdc68('0x51')](process[_0xdc68('0x7a')][0x3]);if(!_0x492560[_0xdc68('0x7e')]){throw new Error(_0xdc68('0x7f'));}if(!_0x492560['binding'][_0xdc68('0x10')]){throw new Error(_0xdc68('0x80'));}if(!_0x492560[_0xdc68('0x7e')][_0xdc68('0x61')]){throw new Error(_0xdc68('0x81'));}var _0x540a71=0x0;if(_0x492560['binding']['UserId']){_0x540a71=0x1;}if(!_0x492560[_0xdc68('0x21')]){throw new Error(_0xdc68('0x82'));}}catch(_0x47375e){throw new Error(_0xdc68('0x83'));}var _0x1c6984=[];try{_0x1c6984=_[_0xdc68('0x84')](JSON[_0xdc68('0x51')](process['argv'][0x4]),'id');}catch(_0x1f740a){logger[_0xdc68('0x42')]('No\x20agent\x20available');}main(_0x16868a,_0x492560,_0x1c6984,_0x540a71);}validate();process['on'](_0xdc68('0x85'),handleStop);process['on'](_0xdc68('0x86'),handleUncaughtException);
\ No newline at end of file
index 19563f2..c88be18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85aa=['getDescriptions','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','uniqueid','Date','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','UniqueId','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','duration','billableseconds','[xCALLY\x20Ticket]','toLowerCase','inbound','push','variable','queue','calleridnum','outbound','string','Outbound\x20Call','destcalleridnum'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x85aa,0x130));var _0xa85a=function(_0x2a8e2a,_0x518529){_0x2a8e2a=_0x2a8e2a-0x0;var _0x27eade=_0x85aa[_0x2a8e2a];return _0x27eade;};'use strict';exports['getSubjects']=function(_0x39225f,_0x32f0ce){var _0x19e00d=[{'type':'string','content':_0xa85a('0x0'),'variableName':null}];switch(_0x39225f[_0xa85a('0x1')]()){case'voice':switch(_0x32f0ce[_0xa85a('0x1')]()){case _0xa85a('0x2'):_0x19e00d[_0xa85a('0x3')]({'type':_0xa85a('0x4'),'content':'','variableName':_0xa85a('0x5')});_0x19e00d[_0xa85a('0x3')]({'type':_0xa85a('0x4'),'content':'','variableName':_0xa85a('0x6')});break;case _0xa85a('0x7'):_0x19e00d[_0xa85a('0x3')]({'type':_0xa85a('0x8'),'content':_0xa85a('0x9'),'variableName':null});_0x19e00d['push']({'type':_0xa85a('0x4'),'content':'','variableName':_0xa85a('0xa')});break;}}return _0x19e00d;};exports[_0xa85a('0xb')]=function(_0x364c34,_0x3aa246){var _0x55564e=[];switch(_0x364c34[_0xa85a('0x1')]()){case _0xa85a('0xc'):switch(_0x3aa246[_0xa85a('0x1')]()){case _0xa85a('0x2'):_0x55564e=[{'type':_0xa85a('0x8'),'content':_0xa85a('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0xf'),'keyType':'variable','variableName':_0xa85a('0x6')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x10'),'keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x11')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x12'),'keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x13')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x14'),'keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x5')},{'type':_0xa85a('0xe'),'content':'','key':'UniqueId','keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x15')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x16'),'keyType':'variable','variableName':_0xa85a('0x17')},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x18'),'keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x19')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x1a'),'keyType':_0xa85a('0x4'),'variableName':_0xa85a('0xa')},{'type':'string','content':_0xa85a('0x1b'),'key':null,'keyType':null,'variableName':null},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x1c'),'keyType':_0xa85a('0x4'),'variableName':'agentcalledAt'},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x1d'),'keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x1e')},{'type':'keyValue','content':'','key':_0xa85a('0x1f'),'keyType':_0xa85a('0x4'),'variableName':'agentcompleteAt'},{'type':_0xa85a('0xe'),'content':'','key':'Hold\x20Time','keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x20')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x21'),'keyType':_0xa85a('0x4'),'variableName':_0xa85a('0x22')}];break;case _0xa85a('0x7'):_0x55564e=[{'type':_0xa85a('0x8'),'content':_0xa85a('0xd'),'variableName':null},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x23'),'keyType':_0xa85a('0x4'),'keyContent':'','variableName':_0xa85a('0xa')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x24'),'keyType':'variable','keyContent':'','variableName':'membername'},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x25'),'keyType':'variable','keyContent':'','variableName':_0xa85a('0x15')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x16'),'keyType':_0xa85a('0x4'),'keyContent':'','variableName':_0xa85a('0x26')},{'type':_0xa85a('0x8'),'content':_0xa85a('0x1b')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x27'),'keyType':'variable','keyContent':'','variableName':_0xa85a('0x28')},{'type':_0xa85a('0xe'),'content':'','key':_0xa85a('0x29'),'keyType':_0xa85a('0x4'),'keyContent':'','variableName':'endtime'},{'type':'keyValue','content':'','key':_0xa85a('0x2a'),'keyType':'variable','keyContent':'','variableName':_0xa85a('0x2b')},{'type':_0xa85a('0xe'),'content':'','key':'Billable\x20Time','keyType':_0xa85a('0x4'),'keyContent':'','variableName':_0xa85a('0x2c')}];break;}}return _0x55564e;};
\ No newline at end of file
+var _0x978a=['Duration','duration','Billable\x20Time','getSubjects','string','voice','toLowerCase','inbound','push','queue','variable','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','Caller\x20Number','calleridnum','Caller\x20Name','keyValue','Call\x20To','Queue','uniqueid','Date','agentcalledAt','Agent\x20Name','***\x20Time\x20Info\x20***','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','starttime','Complete\x20Time','endtime'];(function(_0x4e028a,_0x2c8784){var _0x4ca1e0=function(_0x1cc50a){while(--_0x1cc50a){_0x4e028a['push'](_0x4e028a['shift']());}};_0x4ca1e0(++_0x2c8784);}(_0x978a,0xf3));var _0xa978=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x978a[_0x3dd15e];return _0x231fd0;};'use strict';exports[_0xa978('0x0')]=function(_0x4fe540,_0x1f3ffd){var _0x2629e6=[{'type':_0xa978('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x4fe540['toLowerCase']()){case _0xa978('0x2'):switch(_0x1f3ffd[_0xa978('0x3')]()){case _0xa978('0x4'):_0x2629e6[_0xa978('0x5')]({'type':'variable','content':'','variableName':_0xa978('0x6')});_0x2629e6[_0xa978('0x5')]({'type':_0xa978('0x7'),'content':'','variableName':'calleridnum'});break;case _0xa978('0x8'):_0x2629e6[_0xa978('0x5')]({'type':'string','content':_0xa978('0x9'),'variableName':null});_0x2629e6[_0xa978('0x5')]({'type':_0xa978('0x7'),'content':'','variableName':_0xa978('0xa')});break;}}return _0x2629e6;};exports[_0xa978('0xb')]=function(_0x2f19f0,_0x11867e){var _0x300965=[];switch(_0x2f19f0['toLowerCase']()){case _0xa978('0x2'):switch(_0x11867e[_0xa978('0x3')]()){case'inbound':_0x300965=[{'type':_0xa978('0x1'),'content':_0xa978('0xc'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xa978('0xd'),'keyType':_0xa978('0x7'),'variableName':_0xa978('0xe')},{'type':'keyValue','content':'','key':_0xa978('0xf'),'keyType':_0xa978('0x7'),'variableName':'calleridname'},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x11'),'keyType':'variable','variableName':'destexten'},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x12'),'keyType':_0xa978('0x7'),'variableName':_0xa978('0x6')},{'type':_0xa978('0x10'),'content':'','key':'UniqueId','keyType':'variable','variableName':_0xa978('0x13')},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x14'),'keyType':_0xa978('0x7'),'variableName':_0xa978('0x15')},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x16'),'keyType':_0xa978('0x7'),'variableName':'destcalleridname'},{'type':'keyValue','content':'','key':'Agent\x20Number','keyType':_0xa978('0x7'),'variableName':'destcalleridnum'},{'type':_0xa978('0x1'),'content':_0xa978('0x17'),'key':null,'keyType':null,'variableName':null},{'type':_0xa978('0x10'),'content':'','key':'Agent\x20Ring','keyType':_0xa978('0x7'),'variableName':_0xa978('0x15')},{'type':_0xa978('0x10'),'content':'','key':'Agent\x20Connect','keyType':_0xa978('0x7'),'variableName':_0xa978('0x18')},{'type':_0xa978('0x10'),'content':'','key':'Agent\x20Complete','keyType':_0xa978('0x7'),'variableName':_0xa978('0x19')},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x1a'),'keyType':_0xa978('0x7'),'variableName':_0xa978('0x1b')},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x1c'),'keyType':_0xa978('0x7'),'variableName':_0xa978('0x1d')}];break;case _0xa978('0x8'):_0x300965=[{'type':'string','content':_0xa978('0xc'),'variableName':null},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x1e'),'keyType':_0xa978('0x7'),'keyContent':'','variableName':_0xa978('0xa')},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x1f'),'keyType':_0xa978('0x7'),'keyContent':'','variableName':_0xa978('0x20')},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x21'),'keyType':_0xa978('0x7'),'keyContent':'','variableName':'uniqueid'},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x14'),'keyType':_0xa978('0x7'),'keyContent':'','variableName':_0xa978('0x22')},{'type':_0xa978('0x1'),'content':_0xa978('0x17')},{'type':_0xa978('0x10'),'content':'','key':'Answer\x20Time','keyType':_0xa978('0x7'),'keyContent':'','variableName':'answertime'},{'type':'keyValue','content':'','key':_0xa978('0x23'),'keyType':_0xa978('0x7'),'keyContent':'','variableName':_0xa978('0x24')},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x25'),'keyType':'variable','keyContent':'','variableName':_0xa978('0x26')},{'type':_0xa978('0x10'),'content':'','key':_0xa978('0x27'),'keyType':'variable','keyContent':'','variableName':'billableseconds'}];break;}}return _0x300965;};
\ No newline at end of file
index 0da515d..a87c2ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4b0=['query','clone','omit','html','fax','mobile','lodash','../../config/logger','fax-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','null','findOne','then','update','catch','error','tracked','user'];(function(_0x3f4a7c,_0x2853fd){var _0x5da74=function(_0x105ce1){while(--_0x105ce1){_0x3f4a7c['push'](_0x3f4a7c['shift']());}};_0x5da74(++_0x2853fd);}(_0xc4b0,0x114));var _0x0c4b=function(_0x4fda38,_0x44c823){_0x4fda38=_0x4fda38-0x0;var _0x16c06b=_0xc4b0[_0x4fda38];return _0x16c06b;};'use strict';var _=require(_0x0c4b('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x0c4b('0x1'))('openchannel-interactions'),'mail':require(_0x0c4b('0x1'))('mail-interactions'),'fax':require(_0x0c4b('0x1'))(_0x0c4b('0x2')),'sms':require(_0x0c4b('0x1'))('sms-interactions'),'chat':require('../../config/logger')(_0x0c4b('0x3')),'whatsapp':require('../../config/logger')(_0x0c4b('0x4'))};function getInteractionId(_0xa0a88d,_0x3f8984,_0x5067af){if(_0xa0a88d&&_0xa0a88d[_[_0x0c4b('0x5')](_0x5067af)+_0x0c4b('0x6')]){return _0xa0a88d[_['upperFirst'](_0x5067af)+'InteractionId'];}else if(_0xa0a88d&&_0xa0a88d['id']){return _0xa0a88d['id'];}else if(_0x3f8984&&_0x3f8984['id']){return _0x3f8984['id'];}else{return _0x0c4b('0x7');}}function log(_0x4ea8bc,_0x3a4485,_0x36c2d9,_0x47a651,_0x4bda69,_0x4427e9){loggers[_0x4bda69[_0x0c4b('0x8')]()][_0x4ea8bc](_0x0c4b('0x9'),_0x4427e9[_0x0c4b('0xa')](),_0x3a4485?_0x3a4485['id']:null,_0x3a4485?_0x3a4485[_0x0c4b('0xb')]:null,_0x3a4485?_0x3a4485['role']:null,getInteractionId(_0x36c2d9,_0x47a651,_0x4bda69),_0x36c2d9?JSON[_0x0c4b('0xc')](_0x36c2d9):_0x0c4b('0xd'));}function updateUser(_0x3b160e,_0x1370cf,_0x38463e,_0x531003,_0x46a98a){db[_['upperFirst'](_0x531003)+'Interaction'][_0x0c4b('0xe')]({'where':{'id':getInteractionId(_0x1370cf,_0x38463e,_0x531003)}})[_0x0c4b('0xf')](function(_0x1971e7){if(_0x1971e7){return _0x1971e7[_0x0c4b('0x10')]({'UserId':_0x3b160e?_0x3b160e['id']:null});}})[_0x0c4b('0xf')](function(_0x41c4a5){if(_0x41c4a5){log('info',_0x3b160e,_0x1370cf,_0x38463e,_0x531003,_0x46a98a);}})[_0x0c4b('0x11')](function(){log(_0x0c4b('0x12'),_0x3b160e,_0x1370cf,_0x38463e,_0x531003,_0x46a98a);});}exports[_0x0c4b('0x13')]=function(_0x49e9dd,_0x391c3a){return function(_0xa9472d,_0x935da1,_0x5dd250){var _0x3dfff1=_0xa9472d[_0x0c4b('0x14')];var _0x39f96d={};var _0x3ef37a=_0xa9472d[_0x0c4b('0x15')];if(_0x39f96d){_0x39f96d=_[_0x0c4b('0x16')](_0xa9472d['body']);_0x39f96d=_[_0x0c4b('0x17')](_0x39f96d,['body',_0x0c4b('0x18'),'phone',_0x0c4b('0x19'),_0x0c4b('0x1a')]);}updateUser(_0x3dfff1,_0x39f96d,_0x3ef37a,_0x49e9dd,_0x391c3a);_0x5dd250(null);};};
\ No newline at end of file
+var _0x561f=['null','Interaction','findOne','then','update','info','catch','error','tracked','user','query','clone','body','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','toUpperCase','name','role','stringify'];(function(_0x1f52f5,_0x404fcc){var _0x3921be=function(_0x3085b5){while(--_0x3085b5){_0x1f52f5['push'](_0x1f52f5['shift']());}};_0x3921be(++_0x404fcc);}(_0x561f,0x15b));var _0xf561=function(_0xfae2e9,_0xb613de){_0xfae2e9=_0xfae2e9-0x0;var _0x299b8a=_0x561f[_0xfae2e9];return _0x299b8a;};'use strict';var _=require(_0xf561('0x0'));var db=require(_0xf561('0x1'))['db'];var loggers={'openchannel':require(_0xf561('0x2'))('openchannel-interactions'),'mail':require('../../config/logger')(_0xf561('0x3')),'fax':require(_0xf561('0x2'))(_0xf561('0x4')),'sms':require(_0xf561('0x2'))(_0xf561('0x5')),'chat':require('../../config/logger')(_0xf561('0x6')),'whatsapp':require('../../config/logger')(_0xf561('0x7'))};function getInteractionId(_0x5afdb3,_0x46afd3,_0x35f017){if(_0x5afdb3&&_0x5afdb3[_[_0xf561('0x8')](_0x35f017)+_0xf561('0x9')]){return _0x5afdb3[_['upperFirst'](_0x35f017)+_0xf561('0x9')];}else if(_0x5afdb3&&_0x5afdb3['id']){return _0x5afdb3['id'];}else if(_0x46afd3&&_0x46afd3['id']){return _0x46afd3['id'];}else{return _0xf561('0xa');}}function log(_0x4fd0f9,_0x2bda5c,_0x5110e0,_0x32484f,_0x2cce16,_0x4ea3e5){loggers[_0x2cce16[_0xf561('0xb')]()][_0x4fd0f9]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4ea3e5[_0xf561('0xc')](),_0x2bda5c?_0x2bda5c['id']:null,_0x2bda5c?_0x2bda5c[_0xf561('0xd')]:null,_0x2bda5c?_0x2bda5c[_0xf561('0xe')]:null,getInteractionId(_0x5110e0,_0x32484f,_0x2cce16),_0x5110e0?JSON[_0xf561('0xf')](_0x5110e0):_0xf561('0x10'));}function updateUser(_0x15c0c1,_0x468a4c,_0x4e1d6,_0x5876bd,_0x513ac3){db[_[_0xf561('0x8')](_0x5876bd)+_0xf561('0x11')][_0xf561('0x12')]({'where':{'id':getInteractionId(_0x468a4c,_0x4e1d6,_0x5876bd)}})[_0xf561('0x13')](function(_0x1a6a10){if(_0x1a6a10){return _0x1a6a10[_0xf561('0x14')]({'UserId':_0x15c0c1?_0x15c0c1['id']:null});}})[_0xf561('0x13')](function(_0x5d4066){if(_0x5d4066){log(_0xf561('0x15'),_0x15c0c1,_0x468a4c,_0x4e1d6,_0x5876bd,_0x513ac3);}})[_0xf561('0x16')](function(){log(_0xf561('0x17'),_0x15c0c1,_0x468a4c,_0x4e1d6,_0x5876bd,_0x513ac3);});}exports[_0xf561('0x18')]=function(_0x548262,_0xd85bba){return function(_0x591e89,_0x3c6cae,_0x2a9bf1){var _0x156d3c=_0x591e89[_0xf561('0x19')];var _0x563f87={};var _0x281c51=_0x591e89[_0xf561('0x1a')];if(_0x563f87){_0x563f87=_[_0xf561('0x1b')](_0x591e89[_0xf561('0x1c')]);_0x563f87=_['omit'](_0x563f87,[_0xf561('0x1c'),_0xf561('0x1d'),_0xf561('0x1e'),_0xf561('0x1f'),_0xf561('0x20')]);}updateUser(_0x156d3c,_0x563f87,_0x281c51,_0x548262,_0xd85bba);_0x2a9bf1(null);};};
\ No newline at end of file
index d53447e..74c5402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x377d=['admin','crypto','util','composable-middleware','../../mysqldb','data1','license','split','createDecipher','aes-256-ctr','%s:%s:%s','update','base64','utf8','hasOwnProperty','use','License','findOne','then','count','status','format','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users'];(function(_0xeaf92d,_0x26a3bf){var _0x573a6a=function(_0x3214f1){while(--_0x3214f1){_0xeaf92d['push'](_0xeaf92d['shift']());}};_0x573a6a(++_0x26a3bf);}(_0x377d,0x1b1));var _0xd377=function(_0xfe21a1,_0x44a5d7){_0xfe21a1=_0xfe21a1-0x0;var _0x5841cd=_0x377d[_0xfe21a1];return _0x5841cd;};'use strict';var crypto=require(_0xd377('0x0'));var util=require(_0xd377('0x1'));var compose=require(_0xd377('0x2'));var db=require(_0xd377('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x2e427d,_0x4f4b8f){if(_0x2e427d&&_0x4f4b8f){if(_0x4f4b8f[_0xd377('0x4')]&&_0x4f4b8f[_0xd377('0x5')]){var _0x30a97a=_0x4f4b8f[_0xd377('0x4')];var _0x28f18c=_0x4f4b8f[_0xd377('0x5')];var _0x4e1088=_0x30a97a[_0xd377('0x6')]('-')[0x4];var _0x526337=_0x30a97a[_0xd377('0x6')]('-')[0x0];var _0x2015bc=crypto[_0xd377('0x7')](_0xd377('0x8'),util['format'](_0xd377('0x9'),_0x4e1088,_0x30a97a,_0x526337));var _0x5514f7=_0x2015bc[_0xd377('0xa')](_0x28f18c,_0xd377('0xb'),_0xd377('0xc'));_0x5514f7+=_0x2015bc['final']('utf8');var _0x5d5d8b=JSON['parse'](_0x5514f7);return _0x5d5d8b[_0xd377('0xd')](_0x2e427d)?_0x5d5d8b[_0x2e427d]:null;}}return null;}function isLimit(_0x1cdf25,_0xccfcb1,_0x340487,_0x2fb74d){var _0x156be7=_0xccfcb1;return compose()[_0xd377('0xe')](function(_0x52a499,_0x417ff2,_0x148c62){return db[_0xd377('0xf')][_0xd377('0x10')]({'where':{'id':0x1},'raw':!![]})[_0xd377('0x11')](function(_0x163ffd){var _0x282768=getValueFromLicense(_0x1cdf25,_0x163ffd);return _0x282768?_0x282768:_0x156be7;})[_0xd377('0x11')](function(_0xa8c5fe){_0x156be7=_0xa8c5fe;return _0x340487[_0xd377('0x12')](_0x2fb74d);})[_0xd377('0x11')](function(_0x14c357){if(_0x14c357>=_0x156be7){return _0x417ff2[_0xd377('0x13')](0x193)['json']({'message':util[_0xd377('0x14')](_0xd377('0x15'),_0x1cdf25)});}_0x148c62();})['catch'](function(_0x128d33){_0x148c62(_0x128d33);});});}function isUserLimit(){return isLimit(_0xd377('0x16'),0x1,db['User'],{'where':{'$or':[{'role':_0xd377('0x17')},{'role':'user'}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0xeeb2=['util','composable-middleware','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','crypto'];(function(_0x4482c6,_0x80d53a){var _0x545310=function(_0x170df2){while(--_0x170df2){_0x4482c6['push'](_0x4482c6['shift']());}};_0x545310(++_0x80d53a);}(_0xeeb2,0x117));var _0x2eeb=function(_0x525864,_0x1bb3ea){_0x525864=_0x525864-0x0;var _0x4f9964=_0xeeb2[_0x525864];return _0x4f9964;};'use strict';var crypto=require(_0x2eeb('0x0'));var util=require(_0x2eeb('0x1'));var compose=require(_0x2eeb('0x2'));var db=require('../../mysqldb')['db'];var config=require(_0x2eeb('0x3'));function getValueFromLicense(_0x43134c,_0x5f031b){if(_0x43134c&&_0x5f031b){if(_0x5f031b[_0x2eeb('0x4')]&&_0x5f031b[_0x2eeb('0x5')]){var _0x20d194=_0x5f031b['data1'];var _0x11c635=_0x5f031b['license'];var _0x47f6a5=_0x20d194[_0x2eeb('0x6')]('-')[0x4];var _0x43f4f1=_0x20d194['split']('-')[0x0];var _0x20d7d6=crypto[_0x2eeb('0x7')](_0x2eeb('0x8'),util[_0x2eeb('0x9')](_0x2eeb('0xa'),_0x47f6a5,_0x20d194,_0x43f4f1));var _0x31c13c=_0x20d7d6[_0x2eeb('0xb')](_0x11c635,_0x2eeb('0xc'),_0x2eeb('0xd'));_0x31c13c+=_0x20d7d6[_0x2eeb('0xe')](_0x2eeb('0xd'));var _0x5f4ccb=JSON[_0x2eeb('0xf')](_0x31c13c);return _0x5f4ccb[_0x2eeb('0x10')](_0x43134c)?_0x5f4ccb[_0x43134c]:null;}}return null;}function isLimit(_0x41aac3,_0xd6bf32,_0x33b634,_0x45aaad){var _0x2d7c0c=_0xd6bf32;return compose()[_0x2eeb('0x11')](function(_0x1fa850,_0x420722,_0x450037){return db['License']['findOne']({'where':{'id':0x1},'raw':!![]})['then'](function(_0x3a6c73){var _0x38209e=getValueFromLicense(_0x41aac3,_0x3a6c73);return _0x38209e?_0x38209e:_0x2d7c0c;})[_0x2eeb('0x12')](function(_0x4c977a){_0x2d7c0c=_0x4c977a;return _0x33b634[_0x2eeb('0x13')](_0x45aaad);})[_0x2eeb('0x12')](function(_0x376018){if(_0x376018>=_0x2d7c0c){return _0x420722[_0x2eeb('0x14')](0x193)[_0x2eeb('0x15')]({'message':util['format'](_0x2eeb('0x16'),_0x41aac3)});}_0x450037();})[_0x2eeb('0x17')](function(_0x486f33){_0x450037(_0x486f33);});});}function isUserLimit(){return isLimit(_0x2eeb('0x18'),0x1,db[_0x2eeb('0x19')],{'where':{'$or':[{'role':_0x2eeb('0x1a')},{'role':_0x2eeb('0x1b')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
index 92383d4..f13ff58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd967=['$eq','value','includes','$gt','$lte','days','format','YYYY-MM-DD','castTo','text','CAST(','\x20AS\x20','field','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','=\x20?','$ne','<>\x20?','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','$between','BETWEEN\x20?\x20AND\x20?','$substring','start','pop','utcOffset','add','hours','minutes','seconds','lodash','parseSearch','sqlOperator','and','replace','[$and]','[$or]','split','length','forEach','shift','indexOf','map','conditions','push','buildExpression','DATE','operator'];(function(_0x10d066,_0xd0a94e){var _0x1f05f5=function(_0x562242){while(--_0x562242){_0x10d066['push'](_0x10d066['shift']());}};_0x1f05f5(++_0xd0a94e);}(_0xd967,0xd6));var _0x7d96=function(_0x4d121d,_0x3fe733){_0x4d121d=_0x4d121d-0x0;var _0xffa031=_0xd967[_0x4d121d];return _0xffa031;};'use strict';var _=require(_0x7d96('0x0'));var moment=require('moment');exports[_0x7d96('0x1')]=function(_0x34e173){var _0x482031={'conditions':[]};_0x482031[_0x7d96('0x2')]=_['startsWith'](_0x34e173,'[$or]')?'or':_0x7d96('0x3');var _0x19e10b=_0x34e173[_0x7d96('0x4')](_0x7d96('0x5'),'')[_0x7d96('0x4')](_0x7d96('0x6'),'')[_0x7d96('0x7')]('||');for(var _0x2faa1f=0x0;_0x2faa1f<_0x19e10b[_0x7d96('0x8')];_0x2faa1f++){var _0x5b7f84=_0x19e10b[_0x2faa1f][_0x7d96('0x7')](':=');var _0x5c184b=_0x5b7f84[0x0];var _0x123639=_0x5b7f84['slice'](0x1);_0x123639[_0x7d96('0x9')](function(_0x38162f){var _0x531353=_0x38162f[_0x7d96('0x7')]('[')[_0x7d96('0xa')]();var _0x1bc52f=_0x38162f['match'](/\[(.*?)\]/g);_0x1bc52f['forEach'](function(_0x52b6f4){var _0x2958f7=_0x52b6f4['split']('[')['filter'](function(_0x58b956){return _0x58b956[_0x7d96('0xb')](']')>-0x1;})[_0x7d96('0xc')](function(_0x464167){return _0x464167[_0x7d96('0x7')](']')[0x0];})[0x0];_0x482031[_0x7d96('0xd')][_0x7d96('0xe')]({'field':_0x5c184b,'operator':_0x531353,'value':_0x2958f7});});});}return _0x482031;};exports[_0x7d96('0xf')]=function(_0x459015,_0x18a92f,_0x2e1f73){var _0x4cf233={};if(_0x18a92f===_0x7d96('0x10')){if(_0x2e1f73[_0x7d96('0x11')]===_0x7d96('0x12')){_0x2e1f73[_0x7d96('0x11')]='$between';_0x2e1f73[_0x7d96('0x13')]+=','+_0x2e1f73[_0x7d96('0x13')];}else if(_[_0x7d96('0x14')]([_0x7d96('0x15'),_0x7d96('0x16')],_0x2e1f73[_0x7d96('0x11')])){_0x2e1f73[_0x7d96('0x13')]=moment(_0x2e1f73['value'])['add'](0x1,_0x7d96('0x17'))[_0x7d96('0x18')](_0x7d96('0x19'));}}if(_0x2e1f73['castTo']){_0x18a92f=_0x2e1f73[_0x7d96('0x1a')];_0x4cf233[_0x7d96('0x1b')]=_0x7d96('0x1c')+_0x459015+'.'+_0x2e1f73['field']+_0x7d96('0x1d')+_0x2e1f73['castTo']+')\x20'+parseOperator(_0x2e1f73[_0x7d96('0x11')]);}else{_0x4cf233['text']=_0x459015+'.'+_0x2e1f73[_0x7d96('0x1e')]+'\x20'+parseOperator(_0x2e1f73[_0x7d96('0x11')]);}if(_['includes'](['$ne','$notIn'],_0x2e1f73[_0x7d96('0x11')]))_0x4cf233[_0x7d96('0x1b')]='('+_0x4cf233['text']+_0x7d96('0x1f')+_0x459015+'.'+_0x2e1f73[_0x7d96('0x1e')]+_0x7d96('0x20');_0x4cf233['value']=parseValue(_0x18a92f,_0x2e1f73[_0x7d96('0x11')],_0x2e1f73[_0x7d96('0x13')]);return _0x4cf233;};function parseOperator(_0x4e0dab){var _0x56a4c1;switch(_0x4e0dab){case _0x7d96('0x21'):_0x56a4c1=_0x7d96('0x22');break;case _0x7d96('0x23'):_0x56a4c1='NOT\x20IN\x20?';break;case _0x7d96('0x12'):_0x56a4c1=_0x7d96('0x24');break;case _0x7d96('0x25'):_0x56a4c1=_0x7d96('0x26');break;case'$substring':case _0x7d96('0x27'):case _0x7d96('0x28'):_0x56a4c1=_0x7d96('0x29');break;case _0x7d96('0x2a'):_0x56a4c1=_0x7d96('0x2b');break;case'$gt':_0x56a4c1=_0x7d96('0x2c');break;case'$lte':_0x56a4c1=_0x7d96('0x2d');break;case _0x7d96('0x2e'):_0x56a4c1=_0x7d96('0x2f');break;case _0x7d96('0x30'):_0x56a4c1=_0x7d96('0x31');break;}return _0x56a4c1;}function parseValue(_0x3ebba0,_0x1c6b71,_0x2ea033){var _0x5529da={'start':undefined,'end':undefined};switch(_0x1c6b71){case _0x7d96('0x21'):case _0x7d96('0x23'):_0x5529da['start']=_0x2ea033[_0x7d96('0x7')](',');break;case _0x7d96('0x32'):_0x5529da[_0x7d96('0x33')]='%'+_0x2ea033+'%';break;case _0x7d96('0x27'):_0x5529da[_0x7d96('0x33')]=_0x2ea033+'%';break;case'$endsWith':_0x5529da[_0x7d96('0x33')]='%'+_0x2ea033;break;case _0x7d96('0x30'):var _0x102410=_0x2ea033[_0x7d96('0x7')](',');var _0x2ea033=_0x102410['shift']();var _0x27f23c=_0x102410[_0x7d96('0x34')]();if(_0x3ebba0==='DATE'){_0x2ea033=moment(_0x2ea033)[_0x7d96('0x35')](0x0,!![])[_0x7d96('0x18')]();_0x27f23c=moment(_0x27f23c)['utcOffset'](0x0,!![])[_0x7d96('0x36')](0x17,_0x7d96('0x37'))[_0x7d96('0x36')](0x3b,_0x7d96('0x38'))[_0x7d96('0x36')](0x3b,_0x7d96('0x39'))[_0x7d96('0x18')]();}_0x5529da={'start':_0x2ea033,'end':_0x27f23c};break;default:_0x5529da['start']=_0x2ea033;break;}return _0x5529da;}
\ No newline at end of file
+var _0x009e=['shift','match','indexOf','push','DATE','operator','$eq','value','$gt','add','days','format','YYYY-MM-DD','castTo','text','\x20AS\x20','field','includes','$ne','$notIn','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','LIKE\x20?','$lt','<\x20?','$lte','<=\x20?','$gte','$between','BETWEEN\x20?\x20AND\x20?','start','pop','utcOffset','hours','seconds','moment','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','slice'];(function(_0x45707a,_0xe2cfcd){var _0x46c927=function(_0x266c89){while(--_0x266c89){_0x45707a['push'](_0x45707a['shift']());}};_0x46c927(++_0xe2cfcd);}(_0x009e,0x1f4));var _0xe009=function(_0x1cc9e8,_0x5debc2){_0x1cc9e8=_0x1cc9e8-0x0;var _0x5d81a2=_0x009e[_0x1cc9e8];return _0x5d81a2;};'use strict';var _=require('lodash');var moment=require(_0xe009('0x0'));exports['parseSearch']=function(_0x160484){var _0x298935={'conditions':[]};_0x298935[_0xe009('0x1')]=_[_0xe009('0x2')](_0x160484,_0xe009('0x3'))?'or':_0xe009('0x4');var _0x14680f=_0x160484[_0xe009('0x5')](_0xe009('0x6'),'')['replace']('[$or]','')[_0xe009('0x7')]('||');for(var _0xd92d85=0x0;_0xd92d85<_0x14680f[_0xe009('0x8')];_0xd92d85++){var _0x1f997e=_0x14680f[_0xd92d85][_0xe009('0x7')](':=');var _0x162f3f=_0x1f997e[0x0];var _0x11438e=_0x1f997e[_0xe009('0x9')](0x1);_0x11438e['forEach'](function(_0x243a10){var _0xb3520=_0x243a10['split']('[')[_0xe009('0xa')]();var _0x1b929b=_0x243a10[_0xe009('0xb')](/\[(.*?)\]/g);_0x1b929b['forEach'](function(_0x3fbb24){var _0x2ba0b1=_0x3fbb24[_0xe009('0x7')]('[')['filter'](function(_0xe1bb27){return _0xe1bb27[_0xe009('0xc')](']')>-0x1;})['map'](function(_0x262d3d){return _0x262d3d[_0xe009('0x7')](']')[0x0];})[0x0];_0x298935['conditions'][_0xe009('0xd')]({'field':_0x162f3f,'operator':_0xb3520,'value':_0x2ba0b1});});});}return _0x298935;};exports['buildExpression']=function(_0x252bbb,_0x2a3bc1,_0x43f6af){var _0x1d1b4f={};if(_0x2a3bc1===_0xe009('0xe')){if(_0x43f6af[_0xe009('0xf')]===_0xe009('0x10')){_0x43f6af[_0xe009('0xf')]='$between';_0x43f6af[_0xe009('0x11')]+=','+_0x43f6af[_0xe009('0x11')];}else if(_['includes']([_0xe009('0x12'),'$lte'],_0x43f6af[_0xe009('0xf')])){_0x43f6af[_0xe009('0x11')]=moment(_0x43f6af[_0xe009('0x11')])[_0xe009('0x13')](0x1,_0xe009('0x14'))[_0xe009('0x15')](_0xe009('0x16'));}}if(_0x43f6af[_0xe009('0x17')]){_0x2a3bc1=_0x43f6af[_0xe009('0x17')];_0x1d1b4f[_0xe009('0x18')]='CAST('+_0x252bbb+'.'+_0x43f6af['field']+_0xe009('0x19')+_0x43f6af[_0xe009('0x17')]+')\x20'+parseOperator(_0x43f6af['operator']);}else{_0x1d1b4f[_0xe009('0x18')]=_0x252bbb+'.'+_0x43f6af[_0xe009('0x1a')]+'\x20'+parseOperator(_0x43f6af[_0xe009('0xf')]);}if(_[_0xe009('0x1b')]([_0xe009('0x1c'),_0xe009('0x1d')],_0x43f6af[_0xe009('0xf')]))_0x1d1b4f[_0xe009('0x18')]='('+_0x1d1b4f[_0xe009('0x18')]+'\x20OR\x20'+_0x252bbb+'.'+_0x43f6af[_0xe009('0x1a')]+_0xe009('0x1e');_0x1d1b4f[_0xe009('0x11')]=parseValue(_0x2a3bc1,_0x43f6af[_0xe009('0xf')],_0x43f6af[_0xe009('0x11')]);return _0x1d1b4f;};function parseOperator(_0x10dfbe){var _0x134264;switch(_0x10dfbe){case _0xe009('0x1f'):_0x134264=_0xe009('0x20');break;case _0xe009('0x1d'):_0x134264=_0xe009('0x21');break;case _0xe009('0x10'):_0x134264=_0xe009('0x22');break;case _0xe009('0x1c'):_0x134264=_0xe009('0x23');break;case _0xe009('0x24'):case _0xe009('0x25'):case'$endsWith':_0x134264=_0xe009('0x26');break;case _0xe009('0x27'):_0x134264=_0xe009('0x28');break;case _0xe009('0x12'):_0x134264='>\x20?';break;case _0xe009('0x29'):_0x134264=_0xe009('0x2a');break;case _0xe009('0x2b'):_0x134264='>=\x20?';break;case _0xe009('0x2c'):_0x134264=_0xe009('0x2d');break;}return _0x134264;}function parseValue(_0x469ca4,_0x3133b2,_0x42e8e9){var _0x5d0382={'start':undefined,'end':undefined};switch(_0x3133b2){case _0xe009('0x1f'):case _0xe009('0x1d'):_0x5d0382['start']=_0x42e8e9['split'](',');break;case _0xe009('0x24'):_0x5d0382[_0xe009('0x2e')]='%'+_0x42e8e9+'%';break;case _0xe009('0x25'):_0x5d0382[_0xe009('0x2e')]=_0x42e8e9+'%';break;case'$endsWith':_0x5d0382[_0xe009('0x2e')]='%'+_0x42e8e9;break;case'$between':var _0x2da6e0=_0x42e8e9['split'](',');var _0x42e8e9=_0x2da6e0[_0xe009('0xa')]();var _0x400b89=_0x2da6e0[_0xe009('0x2f')]();if(_0x469ca4==='DATE'){_0x42e8e9=moment(_0x42e8e9)[_0xe009('0x30')](0x0,!![])[_0xe009('0x15')]();_0x400b89=moment(_0x400b89)[_0xe009('0x30')](0x0,!![])['add'](0x17,_0xe009('0x31'))[_0xe009('0x13')](0x3b,'minutes')['add'](0x3b,_0xe009('0x32'))[_0xe009('0x15')]();}_0x5d0382={'start':_0x42e8e9,'end':_0x400b89};break;default:_0x5d0382[_0xe009('0x2e')]=_0x42e8e9;break;}return _0x5d0382;}
\ No newline at end of file
index 8d46ead..32cec29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e63=['moment','parse','includes','keys','fields','filters','isEmpty','type','DATE','isPlainObject','$gte','format','utc','YYYY-MM-DD','name','uniqueid','isArray','split','limit','map','indexOf','cast','col','unsigned','substr','priority','ASC','omit','isObject','length','unset','hasOwnProperty','isNumeric','isEmail','match','getFullTextValue','forEach','replace','join','getOptions','$id','query','model','intersection','attributes','offset','order','sort','filter','object','value','where','merge','VIRTUAL','options','sequelize'];(function(_0x471fa2,_0x50aac5){var _0x136466=function(_0xa52927){while(--_0xa52927){_0x471fa2['push'](_0x471fa2['shift']());}};_0x136466(++_0x50aac5);}(_0x2e63,0x6f));var _0x32e6=function(_0x46ee3c,_0x1c08f0){_0x46ee3c=_0x46ee3c-0x0;var _0x530a97=_0x2e63[_0x46ee3c];return _0x530a97;};'use strict';var _=require('lodash');var sequelize=require(_0x32e6('0x0'));var moment=require(_0x32e6('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x489a4f){var _0x2ced58=['ne'];try{var _0x1a0569=JSON[_0x32e6('0x2')](_0x489a4f);var _0x4b6f6b=Object['keys'](_0x1a0569)[0x0];return _0x2ced58[_0x32e6('0x3')](_0x4b6f6b);}catch(_0x16c231){return![];}}function getOperatorValue(_0xcbb7af){var _0x1c33d9=JSON[_0x32e6('0x2')](_0xcbb7af);var _0xdc64ee=Object[_0x32e6('0x4')](_0x1c33d9)[0x0];var _0x56096c=_0x1c33d9[_0xdc64ee];return{['$'+_0xdc64ee]:_0x56096c};}exports[_0x32e6('0x5')]=function(_0x1decc8){var _0x4f0a57=null;if(_0x1decc8){_0x4f0a57=_0x1decc8['split'](',');}return _0x4f0a57;};exports[_0x32e6('0x6')]=function(_0x1e80a7,_0x47da09){var _0x57afe2={};if(!_[_0x32e6('0x7')](_0x1e80a7)){_['forOwn'](_0x1e80a7,function(_0x51fe98,_0x17b632){try{if(_0x47da09){var _0x5bebec=_['find'](_0x47da09,{'name':_0x17b632})||{};if(hasSequelizeOperator(_0x51fe98)){_0x57afe2[_0x17b632]=getOperatorValue(_0x51fe98);}else if(_0x5bebec[_0x32e6('0x8')]===_0x32e6('0x9')&&_[_0x32e6('0xa')](_0x51fe98)){var _0x350e81=JSON[_0x32e6('0x2')](_0x51fe98);var _0x29caed={'$gte':moment(moment(_0x350e81[_0x32e6('0xb')])[_0x32e6('0xc')]('YYYY-MM-DD'))[_0x32e6('0xd')]()[_0x32e6('0xc')](),'$lte':moment(moment(_0x350e81['$lte'])[_0x32e6('0xc')](_0x32e6('0xe')))[_0x32e6('0xd')]()['subtract'](0x1,'s')['format']()};_0x57afe2[_0x17b632]=_0x29caed;}else if(_0x5bebec[_0x32e6('0xf')]===_0x32e6('0x10')){_0x57afe2[_0x17b632]=_0x51fe98;}else{_0x57afe2[_0x17b632]=_[_0x32e6('0x11')](_0x51fe98)?_0x51fe98:JSON['parse'](_0x51fe98);}}else{_0x57afe2[_0x17b632]=_[_0x32e6('0x11')](_0x51fe98)?_0x51fe98:JSON[_0x32e6('0x2')](_0x51fe98);}}catch(_0x5a9845){_0x57afe2[_0x17b632]=_0x51fe98[_0x32e6('0x12')](',');}});}return _0x57afe2;};exports[_0x32e6('0x13')]=function(_0xb5c0c9){_0xb5c0c9=parseInt(_0xb5c0c9,0xa);if(!_0xb5c0c9||_0xb5c0c9<0x0){_0xb5c0c9=LIMIT_VALUE;}return _0xb5c0c9;};exports['offset']=function(_0x2d9424){_0x2d9424=parseInt(_0x2d9424,0xa);if(!_0x2d9424||_0x2d9424<0x0){_0x2d9424=0x0;}return _0x2d9424;};exports['sort']=function(_0x44a633){var _0x452bcc,_0x380bd7=null;if(_0x44a633){_0x452bcc=_0x44a633['split'](',');_0x380bd7=_[_0x32e6('0x14')](_0x452bcc,function(_0x5208a1){if(_0x5208a1[_0x32e6('0x15')]('-')===0x0){return[_0x5208a1==='priority'?sequelize[_0x32e6('0x16')](sequelize[_0x32e6('0x17')]('priority'),_0x32e6('0x18')):_0x5208a1[_0x32e6('0x19')](0x1),'DESC'];}else{return[_0x5208a1==='priority'?sequelize[_0x32e6('0x16')](sequelize[_0x32e6('0x17')](_0x32e6('0x1a')),'unsigned'):_0x5208a1,_0x32e6('0x1b')];}});}return _0x380bd7;};exports[_0x32e6('0x1c')]=function(_0x57016b,_0x42506c){if(_[_0x32e6('0x7')](_0x57016b)){return _0x57016b;}if(_[_0x32e6('0x11')](_0x57016b)){for(var _0x300a13=0x0;_0x300a13<_0x57016b['length'];_0x300a13+=0x1){_0x57016b[_0x300a13]=this[_0x32e6('0x1c')](_0x57016b[_0x300a13],_0x42506c);}return _0x57016b;}if(!_[_0x32e6('0x1d')](_0x57016b)){return _0x57016b;}if(_['isString'](_0x42506c)){_0x42506c=[_0x42506c];}if(!_[_0x32e6('0x11')](_0x42506c)){return _0x57016b;}for(var _0x3e731e=0x0;_0x3e731e<_0x42506c[_0x32e6('0x1e')];_0x3e731e+=0x1){_[_0x32e6('0x1f')](_0x57016b,_0x42506c[_0x3e731e]);}for(var _0xe3a176 in _0x57016b){if(_0x57016b[_0x32e6('0x20')](_0xe3a176)){_0x57016b[_0xe3a176]=this[_0x32e6('0x1c')](_0x57016b[_0xe3a176],_0x42506c);}}return _0x57016b;};exports[_0x32e6('0x21')]=function(_0x1717c3){return _0x1717c3['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0x32e6('0x22')]=function(_0x593292){return _0x593292[_0x32e6('0x23')](/^\S+@\S+$/)?!![]:![];};exports[_0x32e6('0x24')]=function(_0x2dc799){var _0x2f8c0b=[];_0x2dc799[_0x32e6('0x12')](/[ ,]+/)[_0x32e6('0x25')](function(_0x10edb5){_0x10edb5=_0x10edb5[_0x32e6('0x26')](/([^:]")"+/g,'$1');_0x10edb5='+'+_0x10edb5+'*';if(_0x10edb5[_0x32e6('0x3')]('@'))_0x10edb5='\x22'+_0x10edb5+'\x22';_0x2f8c0b['push'](_0x10edb5);});return _0x2f8c0b[_0x32e6('0x27')]('\x20');};exports[_0x32e6('0x28')]=function(_0x9d7820,_0x21d28f,_0x33152d){var _0x16b915={},_0x5b992c={};if(_0x21d28f['query'][_0x32e6('0x29')]){_0x21d28f[_0x32e6('0x2a')]['id']=_0x21d28f[_0x32e6('0x2a')][_0x32e6('0x29')];delete _0x21d28f[_0x32e6('0x2a')]['$id'];}_0x16b915[_0x32e6('0x2b')]=_[_0x32e6('0x14')](_0x9d7820,_0x32e6('0xf'));_0x16b915[_0x32e6('0x2a')]=_[_0x32e6('0x4')](_0x21d28f[_0x32e6('0x2a')]);_0x16b915['filters']=_[_0x32e6('0x2c')](_0x16b915[_0x32e6('0x2b')],_0x16b915['query']);_0x5b992c[_0x32e6('0x2d')]=_[_0x32e6('0x2c')](_0x16b915[_0x32e6('0x2b')],this[_0x32e6('0x5')](_0x21d28f['query']['fields']));_0x5b992c['attributes']=_0x5b992c[_0x32e6('0x2d')][_0x32e6('0x1e')]?_0x5b992c[_0x32e6('0x2d')]:_0x16b915['model'];if(!_0x21d28f['query'][_0x32e6('0x20')]('nolimit')){_0x5b992c['limit']=this[_0x32e6('0x13')](_0x21d28f[_0x32e6('0x2a')]['limit']);_0x5b992c[_0x32e6('0x2e')]=this[_0x32e6('0x2e')](_0x21d28f[_0x32e6('0x2a')]['offset']);}_0x5b992c[_0x32e6('0x2f')]=this[_0x32e6('0x30')](_0x21d28f[_0x32e6('0x2a')][_0x32e6('0x30')]);_0x5b992c['where']=this[_0x32e6('0x6')](_['pick'](_0x21d28f[_0x32e6('0x2a')],_0x16b915['filters']),_0x9d7820);if(_0x21d28f['query'][_0x32e6('0x31')]){var _0x4bb878=_0x9d7820;var _0x2153bc=_0x21d28f[_0x32e6('0x2a')][_0x32e6('0x31')];if(typeof _0x2153bc===_0x32e6('0x32')){_0x4bb878=_[_0x32e6('0x31')](_0x9d7820,function(_0x2da29a){return _[_0x32e6('0x3')](_0x2153bc['columns'],_0x2da29a['name']);});_0x2153bc=_0x2153bc[_0x32e6('0x33')];}_0x5b992c[_0x32e6('0x34')]=_[_0x32e6('0x35')](_0x5b992c['where'],{'$or':_['map'](_0x4bb878,function(_0x2bb68c){if(_0x2bb68c[_0x32e6('0x8')]!==_0x32e6('0x36')){if(_0x33152d){return sequelize[_0x32e6('0x34')](sequelize['fn']('lower',sequelize[_0x32e6('0x17')](_0x2bb68c[_0x32e6('0xf')])),{'$like':sequelize['fn']('lower','%'+_0x21d28f[_0x32e6('0x2a')][_0x32e6('0x31')]+'%')});}else{var _0x52d371={};_0x52d371[_0x2bb68c[_0x32e6('0xf')]]={'$like':'%'+_0x21d28f[_0x32e6('0x2a')]['filter']+'%'};return _0x52d371;}}})});}_0x5b992c=_[_0x32e6('0x35')]({},_0x5b992c,_0x21d28f[_0x32e6('0x37')]);return _0x5b992c;};
\ No newline at end of file
+var _0x13db=['fields','split','filters','isEmpty','forOwn','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','subtract','name','uniqueid','limit','offset','sort','map','indexOf','priority','col','unsigned','DESC','cast','ASC','omit','isArray','length','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','getFullTextValue','replace','join','query','$id','model','attributes','intersection','order','pick','filter','object','value','merge','where','VIRTUAL','lower','options','sequelize','parse','keys','includes'];(function(_0x13124e,_0x63a4a2){var _0x39a282=function(_0x4d9533){while(--_0x4d9533){_0x13124e['push'](_0x13124e['shift']());}};_0x39a282(++_0x63a4a2);}(_0x13db,0xa7));var _0xb13d=function(_0x4bb9a8,_0x24f8bf){_0x4bb9a8=_0x4bb9a8-0x0;var _0x44e29e=_0x13db[_0x4bb9a8];return _0x44e29e;};'use strict';var _=require('lodash');var sequelize=require(_0xb13d('0x0'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x217df9){var _0x25d5fb=['ne'];try{var _0x41cbf4=JSON[_0xb13d('0x1')](_0x217df9);var _0x560e1f=Object[_0xb13d('0x2')](_0x41cbf4)[0x0];return _0x25d5fb[_0xb13d('0x3')](_0x560e1f);}catch(_0x5869dc){return![];}}function getOperatorValue(_0x2ff386){var _0x147482=JSON['parse'](_0x2ff386);var _0x4fa44e=Object[_0xb13d('0x2')](_0x147482)[0x0];var _0x4f067c=_0x147482[_0x4fa44e];return{['$'+_0x4fa44e]:_0x4f067c};}exports[_0xb13d('0x4')]=function(_0x384b54){var _0x340dd3=null;if(_0x384b54){_0x340dd3=_0x384b54[_0xb13d('0x5')](',');}return _0x340dd3;};exports[_0xb13d('0x6')]=function(_0x295c70,_0x21447b){var _0x535fdf={};if(!_[_0xb13d('0x7')](_0x295c70)){_[_0xb13d('0x8')](_0x295c70,function(_0x41317b,_0x193261){try{if(_0x21447b){var _0x2e0edb=_['find'](_0x21447b,{'name':_0x193261})||{};if(hasSequelizeOperator(_0x41317b)){_0x535fdf[_0x193261]=getOperatorValue(_0x41317b);}else if(_0x2e0edb[_0xb13d('0x9')]===_0xb13d('0xa')&&_[_0xb13d('0xb')](_0x41317b)){var _0xfa7bf8=JSON[_0xb13d('0x1')](_0x41317b);var _0x7df9ac={'$gte':moment(moment(_0xfa7bf8[_0xb13d('0xc')])[_0xb13d('0xd')](_0xb13d('0xe')))[_0xb13d('0xf')]()[_0xb13d('0xd')](),'$lte':moment(moment(_0xfa7bf8['$lte'])[_0xb13d('0xd')](_0xb13d('0xe')))[_0xb13d('0xf')]()[_0xb13d('0x10')](0x1,'s')[_0xb13d('0xd')]()};_0x535fdf[_0x193261]=_0x7df9ac;}else if(_0x2e0edb[_0xb13d('0x11')]===_0xb13d('0x12')){_0x535fdf[_0x193261]=_0x41317b;}else{_0x535fdf[_0x193261]=_['isArray'](_0x41317b)?_0x41317b:JSON[_0xb13d('0x1')](_0x41317b);}}else{_0x535fdf[_0x193261]=_['isArray'](_0x41317b)?_0x41317b:JSON[_0xb13d('0x1')](_0x41317b);}}catch(_0x3bbd16){_0x535fdf[_0x193261]=_0x41317b[_0xb13d('0x5')](',');}});}return _0x535fdf;};exports[_0xb13d('0x13')]=function(_0x467c30){_0x467c30=parseInt(_0x467c30,0xa);if(!_0x467c30||_0x467c30<0x0){_0x467c30=LIMIT_VALUE;}return _0x467c30;};exports[_0xb13d('0x14')]=function(_0x37ec6a){_0x37ec6a=parseInt(_0x37ec6a,0xa);if(!_0x37ec6a||_0x37ec6a<0x0){_0x37ec6a=0x0;}return _0x37ec6a;};exports[_0xb13d('0x15')]=function(_0x1de978){var _0x518f37,_0xfc9362=null;if(_0x1de978){_0x518f37=_0x1de978[_0xb13d('0x5')](',');_0xfc9362=_[_0xb13d('0x16')](_0x518f37,function(_0x5ab243){if(_0x5ab243[_0xb13d('0x17')]('-')===0x0){return[_0x5ab243===_0xb13d('0x18')?sequelize['cast'](sequelize[_0xb13d('0x19')](_0xb13d('0x18')),_0xb13d('0x1a')):_0x5ab243['substr'](0x1),_0xb13d('0x1b')];}else{return[_0x5ab243===_0xb13d('0x18')?sequelize[_0xb13d('0x1c')](sequelize[_0xb13d('0x19')]('priority'),_0xb13d('0x1a')):_0x5ab243,_0xb13d('0x1d')];}});}return _0xfc9362;};exports[_0xb13d('0x1e')]=function(_0x40a9f6,_0x2154d3){if(_[_0xb13d('0x7')](_0x40a9f6)){return _0x40a9f6;}if(_[_0xb13d('0x1f')](_0x40a9f6)){for(var _0x4b5101=0x0;_0x4b5101<_0x40a9f6[_0xb13d('0x20')];_0x4b5101+=0x1){_0x40a9f6[_0x4b5101]=this[_0xb13d('0x1e')](_0x40a9f6[_0x4b5101],_0x2154d3);}return _0x40a9f6;}if(!_['isObject'](_0x40a9f6)){return _0x40a9f6;}if(_[_0xb13d('0x21')](_0x2154d3)){_0x2154d3=[_0x2154d3];}if(!_[_0xb13d('0x1f')](_0x2154d3)){return _0x40a9f6;}for(var _0x348f54=0x0;_0x348f54<_0x2154d3[_0xb13d('0x20')];_0x348f54+=0x1){_[_0xb13d('0x22')](_0x40a9f6,_0x2154d3[_0x348f54]);}for(var _0x40be06 in _0x40a9f6){if(_0x40a9f6[_0xb13d('0x23')](_0x40be06)){_0x40a9f6[_0x40be06]=this[_0xb13d('0x1e')](_0x40a9f6[_0x40be06],_0x2154d3);}}return _0x40a9f6;};exports[_0xb13d('0x24')]=function(_0x2225ae){return _0x2225ae[_0xb13d('0x25')](RegExp(_0xb13d('0x26')))?!![]:![];};exports['isEmail']=function(_0x53d1ba){return _0x53d1ba[_0xb13d('0x25')](/^\S+@\S+$/)?!![]:![];};exports[_0xb13d('0x27')]=function(_0x5aa3e4){var _0x57cca2=[];_0x5aa3e4[_0xb13d('0x5')](/[ ,]+/)['forEach'](function(_0x4f7b7b){_0x4f7b7b=_0x4f7b7b[_0xb13d('0x28')](/([^:]")"+/g,'$1');_0x4f7b7b='+'+_0x4f7b7b+'*';if(_0x4f7b7b['includes']('@'))_0x4f7b7b='\x22'+_0x4f7b7b+'\x22';_0x57cca2['push'](_0x4f7b7b);});return _0x57cca2[_0xb13d('0x29')]('\x20');};exports['getOptions']=function(_0x557997,_0x34da09,_0x4b8a17){var _0xf0e9d2={},_0x22b032={};if(_0x34da09[_0xb13d('0x2a')][_0xb13d('0x2b')]){_0x34da09[_0xb13d('0x2a')]['id']=_0x34da09[_0xb13d('0x2a')][_0xb13d('0x2b')];delete _0x34da09[_0xb13d('0x2a')][_0xb13d('0x2b')];}_0xf0e9d2[_0xb13d('0x2c')]=_[_0xb13d('0x16')](_0x557997,_0xb13d('0x11'));_0xf0e9d2[_0xb13d('0x2a')]=_[_0xb13d('0x2')](_0x34da09[_0xb13d('0x2a')]);_0xf0e9d2[_0xb13d('0x6')]=_['intersection'](_0xf0e9d2[_0xb13d('0x2c')],_0xf0e9d2[_0xb13d('0x2a')]);_0x22b032[_0xb13d('0x2d')]=_[_0xb13d('0x2e')](_0xf0e9d2[_0xb13d('0x2c')],this[_0xb13d('0x4')](_0x34da09[_0xb13d('0x2a')][_0xb13d('0x4')]));_0x22b032['attributes']=_0x22b032[_0xb13d('0x2d')][_0xb13d('0x20')]?_0x22b032[_0xb13d('0x2d')]:_0xf0e9d2[_0xb13d('0x2c')];if(!_0x34da09[_0xb13d('0x2a')][_0xb13d('0x23')]('nolimit')){_0x22b032[_0xb13d('0x13')]=this[_0xb13d('0x13')](_0x34da09['query'][_0xb13d('0x13')]);_0x22b032[_0xb13d('0x14')]=this[_0xb13d('0x14')](_0x34da09['query']['offset']);}_0x22b032[_0xb13d('0x2f')]=this['sort'](_0x34da09[_0xb13d('0x2a')]['sort']);_0x22b032['where']=this[_0xb13d('0x6')](_[_0xb13d('0x30')](_0x34da09[_0xb13d('0x2a')],_0xf0e9d2['filters']),_0x557997);if(_0x34da09['query'][_0xb13d('0x31')]){var _0xcdbf83=_0x557997;var _0x284147=_0x34da09['query'][_0xb13d('0x31')];if(typeof _0x284147===_0xb13d('0x32')){_0xcdbf83=_[_0xb13d('0x31')](_0x557997,function(_0x577d7d){return _[_0xb13d('0x3')](_0x284147['columns'],_0x577d7d[_0xb13d('0x11')]);});_0x284147=_0x284147[_0xb13d('0x33')];}_0x22b032['where']=_[_0xb13d('0x34')](_0x22b032[_0xb13d('0x35')],{'$or':_['map'](_0xcdbf83,function(_0x384aab){if(_0x384aab[_0xb13d('0x9')]!==_0xb13d('0x36')){if(_0x4b8a17){return sequelize[_0xb13d('0x35')](sequelize['fn'](_0xb13d('0x37'),sequelize['col'](_0x384aab['name'])),{'$like':sequelize['fn'](_0xb13d('0x37'),'%'+_0x34da09[_0xb13d('0x2a')][_0xb13d('0x31')]+'%')});}else{var _0x53e88a={};_0x53e88a[_0x384aab[_0xb13d('0x11')]]={'$like':'%'+_0x34da09[_0xb13d('0x2a')][_0xb13d('0x31')]+'%'};return _0x53e88a;}}})});}_0x22b032=_[_0xb13d('0x34')]({},_0x22b032,_0x34da09[_0xb13d('0x38')]);return _0x22b032;};
\ No newline at end of file
index fed7ea0..d2c58f6 100644 (file)
@@ -65,7 +65,7 @@ module.exports = {
     ip: process.env.AGIIP || '127.0.0.1',
   },
   // Seed database on startup
-  seedDB: true,
+  seedDB: false,
   google: {
     clientID: process.env.GOOGLE_ID || 'id',
     clientSecret: process.env.GOOGLE_SECRET || 'secret',
@@ -80,6 +80,5 @@ module.exports = {
   },
   encrypt: {
     algorithm: 'aes192'
-  },
-  licenseToken: '7faf5b2a-f030-58ca-33c9-8b3f1963d431'
+  }
 };
\ No newline at end of file
index 3f66bcf..95b9720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a02=['test','use','json\x20replacer','toISOString','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','50mb','json','initialize','express','serve-favicon','body-parser','cookie-parser','errorhandler','path','cors','moment','./environment','../mysqldb','get','env','set','appPath','join','root','public','development'];(function(_0x33aaec,_0x425c2a){var _0x485950=function(_0x1c4439){while(--_0x1c4439){_0x33aaec['push'](_0x33aaec['shift']());}};_0x485950(++_0x425c2a);}(_0x7a02,0x159));var _0x27a0=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x7a02[_0x2f45ea];return _0x485a84;};'use strict';var express=require(_0x27a0('0x0'));var favicon=require(_0x27a0('0x1'));var bodyParser=require(_0x27a0('0x2'));var methodOverride=require('method-override');var cookieParser=require(_0x27a0('0x3'));var errorHandler=require(_0x27a0('0x4'));var path=require(_0x27a0('0x5'));var passport=require('passport');var cors=require(_0x27a0('0x6'));var moment=require(_0x27a0('0x7'));var config=require(_0x27a0('0x8'));var db=require(_0x27a0('0x9'))['db'];exports['default']=function(_0x20135d){var _0x5c10ec=_0x20135d[_0x27a0('0xa')](_0x27a0('0xb'));if(_0x5c10ec==='production'){_0x20135d[_0x27a0('0xc')](_0x27a0('0xd'),path[_0x27a0('0xe')](config[_0x27a0('0xf')],_0x27a0('0x10')));}if(_0x5c10ec===_0x27a0('0x11')||_0x5c10ec===_0x27a0('0x12')){_0x20135d[_0x27a0('0xc')]('appPath',path[_0x27a0('0xe')](config[_0x27a0('0xf')],'client'));_0x20135d[_0x27a0('0x13')](errorHandler());}_0x20135d[_0x27a0('0xc')](_0x27a0('0x14'),function(_0x5ab815,_0x3c0cb3){if(this[_0x5ab815]instanceof Date){_0x3c0cb3=this[_0x5ab815][_0x27a0('0x15')]()['split']('.')[0x0]+'Z';}return _0x3c0cb3;});_0x20135d['use'](express[_0x27a0('0x16')](_0x20135d[_0x27a0('0xa')](_0x27a0('0xd'))));_0x20135d[_0x27a0('0xc')]('views',config[_0x27a0('0xf')]+_0x27a0('0x17'));_0x20135d[_0x27a0('0x18')](_0x27a0('0x19'),require(_0x27a0('0x1a'))[_0x27a0('0x1b')]);_0x20135d['set'](_0x27a0('0x1c'),_0x27a0('0x19'));_0x20135d[_0x27a0('0x13')](bodyParser[_0x27a0('0x1d')]({'limit':_0x27a0('0x1e'),'extended':!![]}));_0x20135d[_0x27a0('0x13')](bodyParser[_0x27a0('0x1f')]({'limit':_0x27a0('0x1e')}));_0x20135d[_0x27a0('0x13')](cors());_0x20135d['use'](methodOverride());_0x20135d[_0x27a0('0x13')](cookieParser());_0x20135d[_0x27a0('0x13')](passport[_0x27a0('0x20')]());};
\ No newline at end of file
+var _0x6b7c=['production','set','appPath','join','root','public','development','test','client','use','json\x20replacer','toISOString','split','static','views','/server/views','engine','html','ejs','renderFile','50mb','json','initialize','express','serve-favicon','body-parser','method-override','cors','moment','./environment','../mysqldb','default','get','env'];(function(_0x16e321,_0x14a3ba){var _0x4fa261=function(_0x5dccf8){while(--_0x5dccf8){_0x16e321['push'](_0x16e321['shift']());}};_0x4fa261(++_0x14a3ba);}(_0x6b7c,0x9f));var _0xc6b7=function(_0x58e92d,_0x1181bd){_0x58e92d=_0x58e92d-0x0;var _0x45d179=_0x6b7c[_0x58e92d];return _0x45d179;};'use strict';var express=require(_0xc6b7('0x0'));var favicon=require(_0xc6b7('0x1'));var bodyParser=require(_0xc6b7('0x2'));var methodOverride=require(_0xc6b7('0x3'));var cookieParser=require('cookie-parser');var errorHandler=require('errorhandler');var path=require('path');var passport=require('passport');var cors=require(_0xc6b7('0x4'));var moment=require(_0xc6b7('0x5'));var config=require(_0xc6b7('0x6'));var db=require(_0xc6b7('0x7'))['db'];exports[_0xc6b7('0x8')]=function(_0x18b332){var _0xb87b97=_0x18b332[_0xc6b7('0x9')](_0xc6b7('0xa'));if(_0xb87b97===_0xc6b7('0xb')){_0x18b332[_0xc6b7('0xc')](_0xc6b7('0xd'),path[_0xc6b7('0xe')](config[_0xc6b7('0xf')],_0xc6b7('0x10')));}if(_0xb87b97===_0xc6b7('0x11')||_0xb87b97===_0xc6b7('0x12')){_0x18b332[_0xc6b7('0xc')](_0xc6b7('0xd'),path['join'](config[_0xc6b7('0xf')],_0xc6b7('0x13')));_0x18b332[_0xc6b7('0x14')](errorHandler());}_0x18b332['set'](_0xc6b7('0x15'),function(_0x1f3ea9,_0x6c5e8b){if(this[_0x1f3ea9]instanceof Date){_0x6c5e8b=this[_0x1f3ea9][_0xc6b7('0x16')]()[_0xc6b7('0x17')]('.')[0x0]+'Z';}return _0x6c5e8b;});_0x18b332[_0xc6b7('0x14')](express[_0xc6b7('0x18')](_0x18b332['get'](_0xc6b7('0xd'))));_0x18b332[_0xc6b7('0xc')](_0xc6b7('0x19'),config['root']+_0xc6b7('0x1a'));_0x18b332[_0xc6b7('0x1b')](_0xc6b7('0x1c'),require(_0xc6b7('0x1d'))[_0xc6b7('0x1e')]);_0x18b332[_0xc6b7('0xc')]('view\x20engine',_0xc6b7('0x1c'));_0x18b332[_0xc6b7('0x14')](bodyParser['urlencoded']({'limit':_0xc6b7('0x1f'),'extended':!![]}));_0x18b332[_0xc6b7('0x14')](bodyParser[_0xc6b7('0x20')]({'limit':'50mb'}));_0x18b332[_0xc6b7('0x14')](cors());_0x18b332[_0xc6b7('0x14')](methodOverride());_0x18b332[_0xc6b7('0x14')](cookieParser());_0x18b332[_0xc6b7('0x14')](passport[_0xc6b7('0x21')]());};
\ No newline at end of file
index 032661f..d946630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf573=['hostname','macAddress','ipAddress','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','keys','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','model','join','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8'];(function(_0x4b288c,_0x4dea83){var _0x18e473=function(_0x478033){while(--_0x478033){_0x4b288c['push'](_0x4b288c['shift']());}};_0x18e473(++_0x4dea83);}(_0xf573,0x94));var _0x3f57=function(_0x493282,_0x46e148){_0x493282=_0x493282-0x0;var _0x4973e1=_0xf573[_0x493282];return _0x4973e1;};'use strict';var _=require(_0x3f57('0x0'));var os=require('os');var crypto=require(_0x3f57('0x1'));var machine=require(_0x3f57('0x2'));var exec=require(_0x3f57('0x3'))[_0x3f57('0x4')];var config=require('../environment');function getInterfaces(){var _0x3a4abd=[];var _0x5a5d2e=os['networkInterfaces']();var _0x34b092=_['orderBy'](_[_0x3f57('0x5')](_0x5a5d2e));for(var _0x198609=0x0;_0x198609<_0x34b092[_0x3f57('0x6')];_0x198609++){var _0x4bcf05=_0x5a5d2e[_0x34b092[_0x198609]][_0x3f57('0x7')](function(_0x4169f0){return _0x4169f0[_0x3f57('0x8')]===_0x3f57('0x9')&&_0x4169f0[_0x3f57('0xa')]===![];});_0x3a4abd=_0x3a4abd[_0x3f57('0xb')](_0x4bcf05);}return _0x3a4abd;}function getFirstInterface(){var _0x16f584=_[_0x3f57('0xc')](getInterfaces());return{'macAddress':_0x16f584&&_0x16f584[_0x3f57('0xd')]?_0x16f584['mac']:_0x3f57('0xe'),'ipAddress':_0x16f584&&_0x16f584['address']?_0x16f584[_0x3f57('0xf')]:_0x3f57('0x10')};}exports[_0x3f57('0x11')]=getFirstInterface;function getCPUhash(){var _0x10a4fb=_['orderBy'](os['cpus']()[_0x3f57('0x12')](function(_0x548498){return _0x548498[_0x3f57('0x13')];}))[_0x3f57('0x14')](':');return crypto[_0x3f57('0x15')](_0x3f57('0x16'))[_0x3f57('0x17')](_0x10a4fb)[_0x3f57('0x18')](_0x3f57('0x19'));}exports[_0x3f57('0x1a')]=function(){var _0x232e56=os[_0x3f57('0x1b')]();var _0x26ea7b=/[0-9a-f-]{36}/;if(config[_0x3f57('0x1c')]&&_0x26ea7b['test'](config[_0x3f57('0x1c')])){return config[_0x3f57('0x1c')];}else if(_0x232e56===_0x3f57('0x1d')){return exec(_0x3f57('0x1e'),{'encoding':_0x3f57('0x1f')})['replace']('\x0d\x0a','');}else{var _0x4f3929=getFirstInterface();var _0xa62f93=getCPUhash();var _0x55f39f=_0xa62f93+'|'+os[_0x3f57('0x20')]()+'|'+_0x4f3929[_0x3f57('0x21')]+'|'+_0x4f3929[_0x3f57('0x22')];var _0x40b05b=crypto[_0x3f57('0x15')](_0x3f57('0x16'))[_0x3f57('0x17')](_0x55f39f)[_0x3f57('0x18')](_0x3f57('0x19'));return _0x40b05b[_0x3f57('0x23')](0x0,0x8)+'-'+_0x40b05b[_0x3f57('0x23')](0x8,0xc)+'-'+_0x40b05b[_0x3f57('0x23')](0xc,0x10)+'-'+_0x40b05b[_0x3f57('0x23')](0x10,0x14)+'-'+_0x40b05b[_0x3f57('0x23')](0x14);}};
\ No newline at end of file
+var _0x5b99=['filter','family','IPv4','internal','concat','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','model','join','md5','digest','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','createHash','update','substring','crypto','bimedia-machine-uuid','child_process','../environment','networkInterfaces','orderBy','length'];(function(_0x4fb267,_0x50797e){var _0x572317=function(_0x5d49e8){while(--_0x5d49e8){_0x4fb267['push'](_0x4fb267['shift']());}};_0x572317(++_0x50797e);}(_0x5b99,0x13d));var _0x95b9=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5b99[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x95b9('0x0'));var machine=require(_0x95b9('0x1'));var exec=require(_0x95b9('0x2'))['execSync'];var config=require(_0x95b9('0x3'));function getInterfaces(){var _0x1cda1a=[];var _0x920178=os[_0x95b9('0x4')]();var _0x9832b=_[_0x95b9('0x5')](_['keys'](_0x920178));for(var _0x49ef4f=0x0;_0x49ef4f<_0x9832b[_0x95b9('0x6')];_0x49ef4f++){var _0x2a36e2=_0x920178[_0x9832b[_0x49ef4f]][_0x95b9('0x7')](function(_0x54ea9f){return _0x54ea9f[_0x95b9('0x8')]===_0x95b9('0x9')&&_0x54ea9f[_0x95b9('0xa')]===![];});_0x1cda1a=_0x1cda1a[_0x95b9('0xb')](_0x2a36e2);}return _0x1cda1a;}function getFirstInterface(){var _0x22e35c=_['head'](getInterfaces());return{'macAddress':_0x22e35c&&_0x22e35c[_0x95b9('0xc')]?_0x22e35c[_0x95b9('0xc')]:_0x95b9('0xd'),'ipAddress':_0x22e35c&&_0x22e35c[_0x95b9('0xe')]?_0x22e35c[_0x95b9('0xe')]:_0x95b9('0xf')};}exports[_0x95b9('0x10')]=getFirstInterface;function getCPUhash(){var _0x592949=_[_0x95b9('0x5')](os['cpus']()[_0x95b9('0x11')](function(_0x452e52){return _0x452e52[_0x95b9('0x12')];}))[_0x95b9('0x13')](':');return crypto['createHash'](_0x95b9('0x14'))['update'](_0x592949)[_0x95b9('0x15')](_0x95b9('0x16'));}exports[_0x95b9('0x17')]=function(){var _0x258370=os[_0x95b9('0x18')]();var _0x2104c7=/[0-9a-f-]{36}/;if(config[_0x95b9('0x19')]&&_0x2104c7[_0x95b9('0x1a')](config[_0x95b9('0x19')])){return config[_0x95b9('0x19')];}else if(_0x258370==='win32'){return exec(_0x95b9('0x1b'),{'encoding':_0x95b9('0x1c')})[_0x95b9('0x1d')]('\x0d\x0a','');}else{var _0x2c1b8c=getFirstInterface();var _0x1962f6=getCPUhash();var _0x5e2f58=_0x1962f6+'|'+os[_0x95b9('0x1e')]()+'|'+_0x2c1b8c[_0x95b9('0x1f')]+'|'+_0x2c1b8c[_0x95b9('0x20')];var _0x277b0d=crypto[_0x95b9('0x21')]('md5')[_0x95b9('0x22')](_0x5e2f58)[_0x95b9('0x15')](_0x95b9('0x16'));return _0x277b0d[_0x95b9('0x23')](0x0,0x8)+'-'+_0x277b0d[_0x95b9('0x23')](0x8,0xc)+'-'+_0x277b0d[_0x95b9('0x23')](0xc,0x10)+'-'+_0x277b0d[_0x95b9('0x23')](0x10,0x14)+'-'+_0x277b0d[_0x95b9('0x23')](0x14);}};
\ No newline at end of file
index dfda6dd..c5365b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd19d=['util','moment','bluebird','pkginfo','../../mysqldb','../../components/encryptor','../logger','license','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','version','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','then','catch','get','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','toUpperCase','encryptString','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default'];(function(_0x11ee4f,_0x4f98af){var _0x12f098=function(_0x3fd0d9){while(--_0x3fd0d9){_0x11ee4f['push'](_0x11ee4f['shift']());}};_0x12f098(++_0x4f98af);}(_0xd19d,0x78));var _0xdd19=function(_0x96be88,_0x2c01a4){_0x96be88=_0x96be88-0x0;var _0x1c14c0=_0xd19d[_0x96be88];return _0x1c14c0;};'use strict';var util=require(_0xdd19('0x0'));var moment=require(_0xdd19('0x1'));var rp=require('request-promise');var BPromise=require(_0xdd19('0x2'));var pkginfo=require(_0xdd19('0x3'))(module,'version');var db=require(_0xdd19('0x4'))['db'];var encryptor=require(_0xdd19('0x5'));var hardware=require('./hardware');var logger=require(_0xdd19('0x6'))(_0xdd19('0x7'));var HOST=_0xdd19('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x249ea9){return new BPromise(function(_0x3005f2,_0x6dfda3){var _0x3f066b=util['format'](_0xdd19('0x9'),HOST,_0x249ea9,module[_0xdd19('0xa')][_0xdd19('0xb')]);if(oldToken){_0x3f066b=util[_0xdd19('0xc')](_0xdd19('0xd'),HOST,_0x249ea9,module['exports'][_0xdd19('0xb')],oldToken);}var _0x119429={'uri':_0x3f066b,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x119429)[_0xdd19('0xe')](function(_0x3e19e5){_0x3005f2(_0x3e19e5);})[_0xdd19('0xf')](function(_0x294c1b){_0x6dfda3(_0x294c1b);});});}function manageLicense(_0x34a29b,_0x2094b3){var _0x5ed23b=_0x2094b3[_0xdd19('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x5ed23b[_0xdd19('0x11')]!==_0x34a29b&&!_0x5ed23b[_0xdd19('0x12')]){oldToken=_0x5ed23b[_0xdd19('0x11')];}httpRequest(_0x34a29b)[_0xdd19('0xe')](function(_0xf4155a){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0xf4155a['active']){isOldTokenSent=![];if(!_0x5ed23b[_0xdd19('0x7')]&&_0x5ed23b[_0xdd19('0x7')]!=_0xf4155a['license']||_0x5ed23b['license']&&_0x5ed23b[_0xdd19('0x12')]){logger[_0xdd19('0x13')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x5ed23b[_0xdd19('0x7')]&&!_0x5ed23b['data2']&&_0x5ed23b['license']!=_0xf4155a['license']){logger[_0xdd19('0x13')](_0xdd19('0x14'));}if(_0x5ed23b['license']&&!_0x5ed23b['data2']&&_0x5ed23b[_0xdd19('0x7')]==_0xf4155a[_0xdd19('0x7')]){return _0x2094b3;}return _0x2094b3[_0xdd19('0x15')]({'data1':_0x34a29b,'data2':null,'license':_0xf4155a[_0xdd19('0x7')]});}else{if(_0xf4155a[_0xdd19('0x7')]||_0x5ed23b[_0xdd19('0x7')]){if(!_0x5ed23b[_0xdd19('0x12')]){if(_0x5ed23b[_0xdd19('0x11')]==_0x34a29b){GRAY_PERIOD_REASON='Disabled';logger['info'](_0xdd19('0x16'));}else{GRAY_PERIOD_REASON=_0xdd19('0x17');logger[_0xdd19('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x5ed23b[_0xdd19('0x11')],_0x34a29b);}logger[_0xdd19('0x13')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0xdd19('0x18')](),moment()[_0xdd19('0xc')]('YYYY-MM-DD\x20HH:mm'));return _0x2094b3[_0xdd19('0x15')]({'data2':encryptor[_0xdd19('0x19')](moment()['format'](_0xdd19('0x1a')))});}else{if(moment()[_0xdd19('0x1b')](encryptor[_0xdd19('0x1c')](_0x5ed23b[_0xdd19('0x12')]),_0xdd19('0x1d'))>DAYS){logger[_0xdd19('0x13')](_0xdd19('0x1e'),moment()['format'](_0xdd19('0x1a')));isOldTokenSent=![];return _0x2094b3[_0xdd19('0x15')]({'data1':_0x34a29b,'data2':null,'license':null});}}}else{if(_0x5ed23b[_0xdd19('0x11')]!=_0x34a29b){logger[_0xdd19('0x13')](_0xdd19('0x1f'),_0x5ed23b[_0xdd19('0x11')],_0x34a29b);return _0x2094b3[_0xdd19('0x15')]({'data1':_0x34a29b,'data2':null,'license':null});}}}return _0x2094b3;})[_0xdd19('0xe')](function(_0x4ba8ba){_0x2094b3=_0x4ba8ba;})[_0xdd19('0xf')](function(_0x53888b){logger[_0xdd19('0x20')](_0x53888b[_0xdd19('0x21')]);})[_0xdd19('0x22')](function(){setTimeout(function(){manageLicense(hardware[_0xdd19('0x23')](),_0x2094b3);},TIME);});}function defaultLicense(){var _0x2fc75c=hardware[_0xdd19('0x23')]();if(_0x2fc75c){return db['License'][_0xdd19('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x2fc75c}})[_0xdd19('0x25')](function(_0x3f27d0,_0x2bc897){logger[_0xdd19('0x13')](_0xdd19('0x26'),_0x2fc75c);manageLicense(_0x2fc75c,_0x3f27d0);})[_0xdd19('0xf')](function(_0x3be28c){logger[_0xdd19('0x20')](_0x3be28c['message']);});}}exports[_0xdd19('0x27')]=defaultLicense;
\ No newline at end of file
+var _0xdaf1=['version','../../mysqldb','../../components/encryptor','./hardware','../logger','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','get','data2','data1','active','license','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','catch','error','message','finally','getUuid','License','findOrCreate','SERVICE\x20LICENSE\x20STARTED\x20%s','util','moment','pkginfo'];(function(_0x35dfcd,_0x453799){var _0x5ae3a9=function(_0x1f7d29){while(--_0x1f7d29){_0x35dfcd['push'](_0x35dfcd['shift']());}};_0x5ae3a9(++_0x453799);}(_0xdaf1,0xa5));var _0x1daf=function(_0x505a68,_0xa297b7){_0x505a68=_0x505a68-0x0;var _0x4caac6=_0xdaf1[_0x505a68];return _0x4caac6;};'use strict';var util=require(_0x1daf('0x0'));var moment=require(_0x1daf('0x1'));var rp=require('request-promise');var BPromise=require('bluebird');var pkginfo=require(_0x1daf('0x2'))(module,_0x1daf('0x3'));var db=require(_0x1daf('0x4'))['db'];var encryptor=require(_0x1daf('0x5'));var hardware=require(_0x1daf('0x6'));var logger=require(_0x1daf('0x7'))('license');var HOST=_0x1daf('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x32f16e){return new BPromise(function(_0x4a421f,_0x3ce4ea){var _0x2beb2f=util[_0x1daf('0x9')](_0x1daf('0xa'),HOST,_0x32f16e,module[_0x1daf('0xb')][_0x1daf('0x3')]);if(oldToken){_0x2beb2f=util[_0x1daf('0x9')](_0x1daf('0xc'),HOST,_0x32f16e,module[_0x1daf('0xb')][_0x1daf('0x3')],oldToken);}var _0x26b04d={'uri':_0x2beb2f,'method':_0x1daf('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x26b04d)[_0x1daf('0xe')](function(_0x49b745){_0x4a421f(_0x49b745);})['catch'](function(_0x41f078){_0x3ce4ea(_0x41f078);});});}function manageLicense(_0x5b8470,_0x4838fb){var _0x48f5f7=_0x4838fb[_0x1daf('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x48f5f7['data1']!==_0x5b8470&&!_0x48f5f7[_0x1daf('0x10')]){oldToken=_0x48f5f7[_0x1daf('0x11')];}httpRequest(_0x5b8470)[_0x1daf('0xe')](function(_0x102407){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x102407[_0x1daf('0x12')]){isOldTokenSent=![];if(!_0x48f5f7[_0x1daf('0x13')]&&_0x48f5f7[_0x1daf('0x13')]!=_0x102407[_0x1daf('0x13')]||_0x48f5f7[_0x1daf('0x13')]&&_0x48f5f7[_0x1daf('0x10')]){logger[_0x1daf('0x14')](_0x1daf('0x15'));}if(_0x48f5f7[_0x1daf('0x13')]&&!_0x48f5f7[_0x1daf('0x10')]&&_0x48f5f7[_0x1daf('0x13')]!=_0x102407[_0x1daf('0x13')]){logger[_0x1daf('0x14')](_0x1daf('0x16'));}if(_0x48f5f7[_0x1daf('0x13')]&&!_0x48f5f7['data2']&&_0x48f5f7[_0x1daf('0x13')]==_0x102407['license']){return _0x4838fb;}return _0x4838fb[_0x1daf('0x17')]({'data1':_0x5b8470,'data2':null,'license':_0x102407[_0x1daf('0x13')]});}else{if(_0x102407['license']||_0x48f5f7[_0x1daf('0x13')]){if(!_0x48f5f7[_0x1daf('0x10')]){if(_0x48f5f7[_0x1daf('0x11')]==_0x5b8470){GRAY_PERIOD_REASON=_0x1daf('0x18');logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x1daf('0x19');logger[_0x1daf('0x14')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x48f5f7[_0x1daf('0x11')],_0x5b8470);}logger['info'](_0x1daf('0x1a'),GRAY_PERIOD_REASON[_0x1daf('0x1b')](),moment()[_0x1daf('0x9')](_0x1daf('0x1c')));return _0x4838fb['update']({'data2':encryptor[_0x1daf('0x1d')](moment()['format'](_0x1daf('0x1c')))});}else{if(moment()[_0x1daf('0x1e')](encryptor['decryptString'](_0x48f5f7[_0x1daf('0x10')]),_0x1daf('0x1f'))>DAYS){logger[_0x1daf('0x14')](_0x1daf('0x20'),moment()[_0x1daf('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x4838fb[_0x1daf('0x17')]({'data1':_0x5b8470,'data2':null,'license':null});}}}else{if(_0x48f5f7[_0x1daf('0x11')]!=_0x5b8470){logger[_0x1daf('0x14')](_0x1daf('0x21'),_0x48f5f7['data1'],_0x5b8470);return _0x4838fb[_0x1daf('0x17')]({'data1':_0x5b8470,'data2':null,'license':null});}}}return _0x4838fb;})[_0x1daf('0xe')](function(_0x49b386){_0x4838fb=_0x49b386;})[_0x1daf('0x22')](function(_0x508505){logger[_0x1daf('0x23')](_0x508505[_0x1daf('0x24')]);})[_0x1daf('0x25')](function(){setTimeout(function(){manageLicense(hardware[_0x1daf('0x26')](),_0x4838fb);},TIME);});}function defaultLicense(){var _0x3a4378=hardware[_0x1daf('0x26')]();if(_0x3a4378){return db[_0x1daf('0x27')][_0x1daf('0x28')]({'where':{'id':0x1},'defaults':{'data1':_0x3a4378}})['spread'](function(_0x24cf24,_0x532b1a){logger['info'](_0x1daf('0x29'),_0x3a4378);manageLicense(_0x3a4378,_0x24cf24);})[_0x1daf('0x22')](function(_0x59bca1){logger['error'](_0x59bca1[_0x1daf('0x24')]);});}}exports['default']=defaultLicense;
\ No newline at end of file
index 55e71f7..19b7768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb5=['findAll','role','sequelize','COUNT','col','count','admin','user','telephone','users','forEach','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','lodash','moment','bluebird','../../components/encryptor','2027-01-01T00:00:00.000Z','getUuid','Breaking\x20license','License','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','parse','machineUuid','decryptString','gray','deadline','days','format','grayReason','changed','message'];(function(_0x3b76f7,_0x566c53){var _0x43984e=function(_0x164f77){while(--_0x164f77){_0x3b76f7['push'](_0x3b76f7['shift']());}};_0x43984e(++_0x566c53);}(_0x9cb5,0x144));var _0x59cb=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9cb5[_0x5b644e];return _0x49c6bf;};'use strict';var util=require('util');var _=require(_0x59cb('0x0'));var moment=require(_0x59cb('0x1'));var BPromise=require(_0x59cb('0x2'));var hardware=require('./hardware');var encryptor=require(_0x59cb('0x3'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x59cb('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x59cb('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x59cb('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x59cb('0x6'),'machineUuid':hardware[_0x59cb('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x3c6137){return new BPromise(function(_0x4ed7ae,_0x377893){return db[_0x59cb('0x7')]['find'](_[_0x59cb('0x8')](_0x3c6137,{'raw':!![],'where':{'id':0x1}}))[_0x59cb('0x9')](function(_0x24452f){return checkLicense(_0x24452f,null);})['then'](function(_0x85b0e9){_0x4ed7ae(_0x85b0e9);return;})[_0x59cb('0xa')](function(_0x379102){_0x377893(_0x379102);});});}function checkLicense(_0x343004,_0x3c42a5){if(!_0x343004){demoLicense[_0x59cb('0xb')]=_0x343004[_0x59cb('0xc')];return demoLicense;}try{var _0x2745cf=_0x3c42a5||_0x343004[_0x59cb('0xd')];if(_[_0x59cb('0xe')](_0x2745cf)){throw new Error(_0x59cb('0xf'));}var _0x23367f=_0x343004[_0x59cb('0xc')];var _0x3b3092=_0x343004[_0x59cb('0x10')];var _0x2dcf68=_0x23367f[_0x59cb('0x11')]('-')[0x4];var _0xe926e4=_0x23367f[_0x59cb('0x11')]('-')[0x0];var _0x54f98e=encryptor['decryptString'](_0x2745cf,util['format']('%s:%s:%s',_0x2dcf68,_0x23367f,_0xe926e4));var _0x2acc51=JSON[_0x59cb('0x12')](_0x54f98e);_0x2acc51['demo']=![];_0x2acc51[_0x59cb('0xb')]=_0x23367f;_0x2acc51[_0x59cb('0x13')]=hardware['getUuid']();if(_0x3b3092){var _0x1ffd7a=encryptor[_0x59cb('0x14')](_0x3b3092);_0x2acc51[_0x59cb('0x15')]=_0x1ffd7a;_0x2acc51[_0x59cb('0x16')]=moment(_0x1ffd7a)['add'](0x7,_0x59cb('0x17'))[_0x59cb('0x18')]();_0x2acc51[_0x59cb('0x19')]=_0x2acc51[_0x59cb('0xb')]!=_0x2acc51[_0x59cb('0x13')]?_0x59cb('0x1a'):'disabled';}return _0x2acc51;}catch(_0x4617cc){breakingLicense[_0x59cb('0xb')]=_0x343004['data1'];breakingLicense[_0x59cb('0x1b')]=_0x4617cc[_0x59cb('0x1b')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x49e361,_0x3e814d){getLicense()['then'](function(_0xb81f06){return db['User'][_0x59cb('0x1c')]({'attributes':[_0x59cb('0x1d'),[db[_0x59cb('0x1e')]['fn'](_0x59cb('0x1f'),db[_0x59cb('0x1e')][_0x59cb('0x20')](_0x59cb('0x1d'))),_0x59cb('0x21')]],'group':_0x59cb('0x1d'),'where':{'role':{'$or':[_0x59cb('0x22'),_0x59cb('0x23'),_0x59cb('0x24')]}},'raw':!![]})['then'](function(_0x2f01ec){var _0x352536={'user':_0xb81f06[_0x59cb('0x25')]||0x0,'telephone':_0xb81f06['telephones']||0x0};_0x2f01ec[_0x59cb('0x26')](function(_0x206ead){var _0x205ae8=_0x206ead['role']===_0x59cb('0x22')?_0x59cb('0x23'):_0x206ead['role'];_0x352536[_0x205ae8]-=_0x206ead['count'];if(_0x352536[_0x205ae8]<0x0)_0x352536[_0x205ae8]=0x0;});_0x49e361(_0x352536);return;});})[_0x59cb('0xa')](function(_0xe3e090){_0x3e814d(_0xe3e090);});});}function checkUserLimits(_0x433824){return new BPromise(function(_0x61a7d,_0x2f315c){getLimits()[_0x59cb('0x9')](function(_0x39fb92){var _0xcc5849=_[_0x59cb('0x27')](_[_0x59cb('0x28')](_0x433824,_0x59cb('0x1d')),[_0x59cb('0x22'),'user',_0x59cb('0x24')]);var _0x27e8bf=(_0xcc5849[_0x59cb('0x22')]||0x0)+(_0xcc5849[_0x59cb('0x23')]||0x0);var _0x20f35a=_0xcc5849[_0x59cb('0x24')]||0x0;if(_0x27e8bf>_0x39fb92[_0x59cb('0x23')])return _0x2f315c(_0x59cb('0x29'));if(_0x20f35a>_0x39fb92[_0x59cb('0x24')])return _0x2f315c(_0x59cb('0x2a'));return _0x61a7d();})[_0x59cb('0xa')](function(_0x24347e){_0x2f315c(_0x24347e);});});}module[_0x59cb('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x7889=['decryptString','format','%s:%s:%s','parse','demo','machineUuid','deadline','add','days','changed','disabled','User','role','sequelize','COUNT','count','admin','telephone','users','telephones','user','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','util','lodash','bluebird','../../components/encryptor','../../mysqldb','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','split'];(function(_0xfd262b,_0x1687d6){var _0x5114fd=function(_0x4c0491){while(--_0x4c0491){_0xfd262b['push'](_0xfd262b['shift']());}};_0x5114fd(++_0x1687d6);}(_0x7889,0x13f));var _0x9788=function(_0x4b5f80,_0x5ee919){_0x4b5f80=_0x4b5f80-0x0;var _0x5f461a=_0x7889[_0x4b5f80];return _0x5f461a;};'use strict';var util=require(_0x9788('0x0'));var _=require(_0x9788('0x1'));var moment=require('moment');var BPromise=require(_0x9788('0x2'));var hardware=require('./hardware');var encryptor=require(_0x9788('0x3'));var db=require(_0x9788('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x9788('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x9788('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x9788('0x7'),'machineUuid':hardware[_0x9788('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x3f1ced){return new BPromise(function(_0x4b45c6,_0x1e241b){return db[_0x9788('0x8')]['find'](_['defaults'](_0x3f1ced,{'raw':!![],'where':{'id':0x1}}))[_0x9788('0x9')](function(_0x30265e){return checkLicense(_0x30265e,null);})[_0x9788('0x9')](function(_0x584ada){_0x4b45c6(_0x584ada);return;})[_0x9788('0xa')](function(_0x200d0d){_0x1e241b(_0x200d0d);});});}function checkLicense(_0x3300e0,_0x6c0c84){if(!_0x3300e0){demoLicense[_0x9788('0xb')]=_0x3300e0[_0x9788('0xc')];return demoLicense;}try{var _0xcc7446=_0x6c0c84||_0x3300e0[_0x9788('0xd')];if(_[_0x9788('0xe')](_0xcc7446)){throw new Error(_0x9788('0xf'));}var _0x2ef6c2=_0x3300e0[_0x9788('0xc')];var _0x5472b8=_0x3300e0['data2'];var _0x9410ad=_0x2ef6c2[_0x9788('0x10')]('-')[0x4];var _0x12bb67=_0x2ef6c2[_0x9788('0x10')]('-')[0x0];var _0x59fe67=encryptor[_0x9788('0x11')](_0xcc7446,util[_0x9788('0x12')](_0x9788('0x13'),_0x9410ad,_0x2ef6c2,_0x12bb67));var _0x490d32=JSON[_0x9788('0x14')](_0x59fe67);_0x490d32[_0x9788('0x15')]=![];_0x490d32[_0x9788('0xb')]=_0x2ef6c2;_0x490d32[_0x9788('0x16')]=hardware[_0x9788('0x5')]();if(_0x5472b8){var _0x3feff6=encryptor[_0x9788('0x11')](_0x5472b8);_0x490d32['gray']=_0x3feff6;_0x490d32[_0x9788('0x17')]=moment(_0x3feff6)[_0x9788('0x18')](0x7,_0x9788('0x19'))[_0x9788('0x12')]();_0x490d32['grayReason']=_0x490d32[_0x9788('0xb')]!=_0x490d32['machineUuid']?_0x9788('0x1a'):_0x9788('0x1b');}return _0x490d32;}catch(_0x1fe329){breakingLicense[_0x9788('0xb')]=_0x3300e0[_0x9788('0xc')];breakingLicense['message']=_0x1fe329['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x1234f0,_0x322f0c){getLicense()[_0x9788('0x9')](function(_0x2a64e7){return db[_0x9788('0x1c')]['findAll']({'attributes':[_0x9788('0x1d'),[db[_0x9788('0x1e')]['fn'](_0x9788('0x1f'),db[_0x9788('0x1e')]['col'](_0x9788('0x1d'))),_0x9788('0x20')]],'group':_0x9788('0x1d'),'where':{'role':{'$or':[_0x9788('0x21'),'user',_0x9788('0x22')]}},'raw':!![]})[_0x9788('0x9')](function(_0x1362c0){var _0x58d893={'user':_0x2a64e7[_0x9788('0x23')]||0x0,'telephone':_0x2a64e7[_0x9788('0x24')]||0x0};_0x1362c0['forEach'](function(_0x3c5b19){var _0x59ceba=_0x3c5b19['role']===_0x9788('0x21')?_0x9788('0x25'):_0x3c5b19[_0x9788('0x1d')];_0x58d893[_0x59ceba]-=_0x3c5b19[_0x9788('0x20')];if(_0x58d893[_0x59ceba]<0x0)_0x58d893[_0x59ceba]=0x0;});_0x1234f0(_0x58d893);return;});})[_0x9788('0xa')](function(_0x137fea){_0x322f0c(_0x137fea);});});}function checkUserLimits(_0x4ad4e6){return new BPromise(function(_0x55e489,_0x423c45){getLimits()[_0x9788('0x9')](function(_0x49fe81){var _0xab2f60=_[_0x9788('0x26')](_[_0x9788('0x27')](_0x4ad4e6,_0x9788('0x1d')),['admin',_0x9788('0x25'),_0x9788('0x22')]);var _0x4e8bb9=(_0xab2f60[_0x9788('0x21')]||0x0)+(_0xab2f60['user']||0x0);var _0x304982=_0xab2f60[_0x9788('0x22')]||0x0;if(_0x4e8bb9>_0x49fe81[_0x9788('0x25')])return _0x423c45(_0x9788('0x28'));if(_0x304982>_0x49fe81[_0x9788('0x22')])return _0x423c45(_0x9788('0x29'));return _0x55e489();})[_0x9788('0xa')](function(_0x19f0f0){_0x423c45(_0x19f0f0);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 05640b1..43530ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['exports','app-id','secret'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0xefda,0x96));var _0xaefd=function(_0x5b9e29,_0x4df3a2){_0x5b9e29=_0x5b9e29-0x0;var _0x538af2=_0xefda[_0x5b9e29];return _0x538af2;};'use strict';module[_0xaefd('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0xaefd('0x1'),'GOOGLE_SECRET':_0xaefd('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0x0120=['secret','exports','http://localhost:9000','myappanuglar-secret','app-id'];(function(_0x887d60,_0x10f422){var _0x2de549=function(_0x348925){while(--_0x348925){_0x887d60['push'](_0x887d60['shift']());}};_0x2de549(++_0x10f422);}(_0x0120,0x6f));var _0x0012=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x0120[_0x432682];return _0x463d05;};'use strict';module[_0x0012('0x0')]={'DOMAIN':_0x0012('0x1'),'SESSION_SECRET':_0x0012('0x2'),'GOOGLE_ID':_0x0012('0x3'),'GOOGLE_SECRET':_0x0012('0x4'),'DEBUG':''};
\ No newline at end of file
index eba55d6..52e6de1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x470b=['format','%s-%s.log','message','replace','{{{','}}}','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','transports','File','%s-%s','error','info','Console','env','debugLevel','moment','winston','util','path','INFO','join','log','xcally'];(function(_0x413edf,_0xd58908){var _0x31f1df=function(_0x44a9ce){while(--_0x44a9ce){_0x413edf['push'](_0x413edf['shift']());}};_0x31f1df(++_0xd58908);}(_0x470b,0xd9));var _0xb470=function(_0x5a4a30,_0x302967){_0x5a4a30=_0x5a4a30-0x0;var _0x2803a1=_0x470b[_0x5a4a30];return _0x2803a1;};'use strict';var moment=require(_0xb470('0x0'));var winston=require(_0xb470('0x1'));var util=require(_0xb470('0x2'));var path=require(_0xb470('0x3'));var debugLevel=_0xb470('0x4');function filename(_0x47da1f,_0x468919){return path[_0xb470('0x5')]('/var',_0xb470('0x6'),_0xb470('0x7'),util[_0xb470('0x8')](_0xb470('0x9'),_0x47da1f,_0x468919));}function formatter(_0x3f983e,_0x564621){_0x564621['message']=_0x564621[_0xb470('0xa')][_0xb470('0xb')](/@@{/g,_0xb470('0xc'))[_0xb470('0xb')](/}@@/g,_0xb470('0xd'))[_0xb470('0xb')](/@{/g,'{{')[_0xb470('0xb')](/}@/g,'}}');return util[_0xb470('0x8')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()['format'](_0xb470('0xe')),_0x564621[_0xb470('0xf')][_0xb470('0x10')](),_0x3f983e,_0x564621[_0xb470('0xa')]);}module['exports']=function(_0x8b2f50){return new winston['Logger']({'transports':[new winston[(_0xb470('0x11'))][(_0xb470('0x12'))]({'name':util[_0xb470('0x8')](_0xb470('0x13'),_0x8b2f50,_0xb470('0x14')),'filename':filename(_0x8b2f50,_0xb470('0x14')),'level':_0xb470('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x18fc3d){return formatter(_0x8b2f50,_0x18fc3d);}}),new winston[(_0xb470('0x11'))][(_0xb470('0x12'))]({'name':util[_0xb470('0x8')](_0xb470('0x13'),_0x8b2f50,_0xb470('0x15')),'filename':filename(_0x8b2f50,_0xb470('0x15')),'level':_0xb470('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2c4fa0){return formatter(_0x8b2f50,_0x2c4fa0);}}),new winston['transports'][(_0xb470('0x16'))]({'level':process[_0xb470('0x17')][_0xb470('0x18')]||debugLevel,'json':![],'formatter':function(_0xd2eb8d){return formatter(_0x8b2f50,_0xd2eb8d);}})]});};
\ No newline at end of file
+var _0xc560=['level','toUpperCase','exports','File','%s-%s','error','transports','info','Console','debugLevel','moment','join','/var','log','xcally','format','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xc560,0x96));var _0x0c56=function(_0x478d2e,_0x2f2381){_0x478d2e=_0x478d2e-0x0;var _0x2f4c3=_0xc560[_0x478d2e];return _0x2f4c3;};'use strict';var moment=require(_0x0c56('0x0'));var winston=require('winston');var util=require('util');var path=require('path');var debugLevel='INFO';function filename(_0x30ffed,_0xdbd5c8){return path[_0x0c56('0x1')](_0x0c56('0x2'),_0x0c56('0x3'),_0x0c56('0x4'),util[_0x0c56('0x5')]('%s-%s.log',_0x30ffed,_0xdbd5c8));}function formatter(_0x509560,_0x5b2a8d){_0x5b2a8d['message']=_0x5b2a8d[_0x0c56('0x6')][_0x0c56('0x7')](/@@{/g,_0x0c56('0x8'))[_0x0c56('0x7')](/}@@/g,'}}}')[_0x0c56('0x7')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x0c56('0x5')](_0x0c56('0x9'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),_0x5b2a8d[_0x0c56('0xa')][_0x0c56('0xb')](),_0x509560,_0x5b2a8d[_0x0c56('0x6')]);}module[_0x0c56('0xc')]=function(_0x91c36d){return new winston['Logger']({'transports':[new winston['transports'][(_0x0c56('0xd'))]({'name':util[_0x0c56('0x5')](_0x0c56('0xe'),_0x91c36d,'error'),'filename':filename(_0x91c36d,_0x0c56('0xf')),'level':_0x0c56('0xf'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x25a9f0){return formatter(_0x91c36d,_0x25a9f0);}}),new winston[(_0x0c56('0x10'))][(_0x0c56('0xd'))]({'name':util[_0x0c56('0x5')](_0x0c56('0xe'),_0x91c36d,'info'),'filename':filename(_0x91c36d,_0x0c56('0x11')),'level':_0x0c56('0x11'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x8321d3){return formatter(_0x91c36d,_0x8321d3);}}),new winston[(_0x0c56('0x10'))][(_0x0c56('0x12'))]({'level':process['env'][_0x0c56('0x13')]||debugLevel,'json':![],'formatter':function(_0x2b4dfd){return formatter(_0x91c36d,_0x2b4dfd);}})]});};
\ No newline at end of file
index 2bd1dfe..9dfe4c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d9=['join','../../services/express/index.js','../../services/ami/index.js','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x00d9,0x1b8));var _0x900d=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x00d9[_0x243b59];return _0x3e1676;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':'express','script':path[_0x900d('0x0')](__dirname,_0x900d('0x1'))},{'name':'ami','script':path[_0x900d('0x0')](__dirname,_0x900d('0x2'))},{'name':_0x900d('0x3'),'script':path[_0x900d('0x0')](__dirname,_0x900d('0x4'))},{'name':_0x900d('0x5'),'script':path[_0x900d('0x0')](__dirname,_0x900d('0x6'))},{'name':_0x900d('0x7'),'script':path[_0x900d('0x0')](__dirname,_0x900d('0x8'))},{'name':_0x900d('0x9'),'script':path['join'](__dirname,'../../services/xdr/index.js')}]};module['exports']=config;
\ No newline at end of file
+var _0xd542=['../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','express','join','ami','agi'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0xd542,0x134));var _0x2d54=function(_0x339584,_0x36e584){_0x339584=_0x339584-0x0;var _0x2438e1=_0xd542[_0x339584];return _0x2438e1;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0x2d54('0x0'),'script':path[_0x2d54('0x1')](__dirname,'../../services/express/index.js')},{'name':_0x2d54('0x2'),'script':path[_0x2d54('0x1')](__dirname,'../../services/ami/index.js')},{'name':_0x2d54('0x3'),'script':path[_0x2d54('0x1')](__dirname,_0x2d54('0x4'))},{'name':_0x2d54('0x5'),'script':path[_0x2d54('0x1')](__dirname,_0x2d54('0x6'))},{'name':_0x2d54('0x7'),'script':path[_0x2d54('0x1')](__dirname,_0x2d54('0x8'))},{'name':_0x2d54('0x9'),'script':path[_0x2d54('0x1')](__dirname,_0x2d54('0xa'))}]};module[_0x2d54('0xb')]=config;
\ No newline at end of file
index 5041502..387dc83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f1=['./config','connected','then','start','disconnect','stop','restart','describe','delete','dump','pm2'];(function(_0x50289b,_0x2e242c){var _0x19a9b7=function(_0x39fd97){while(--_0x39fd97){_0x50289b['push'](_0x50289b['shift']());}};_0x19a9b7(++_0x2e242c);}(_0x41f1,0x1c2));var _0x141f=function(_0x57e18a,_0x199383){_0x57e18a=_0x57e18a-0x0;var _0x1181c7=_0x41f1[_0x57e18a];return _0x1181c7;};'use strict';var pm2=require(_0x141f('0x0'));var BPromise=require('bluebird');var config=require(_0x141f('0x1'));function connect(){return new BPromise(function(_0x5bb4a0,_0x4c2e65){return pm2['connect'](function(_0xaac583){if(_0xaac583){return _0x4c2e65(_0xaac583);}return _0x5bb4a0(_0x141f('0x2'));});});};exports['start']=function(_0x5b51f7){return connect()[_0x141f('0x3')](function(){return new BPromise(function(_0x45c46c,_0x377dd5){return pm2[_0x141f('0x4')](_0x5b51f7,function(_0x525c7f,_0x5cf173){if(_0x525c7f){return _0x377dd5(_0x525c7f);}pm2[_0x141f('0x5')]();return _0x45c46c(_0x5cf173);});});});};exports[_0x141f('0x6')]=function(_0x4e5048){return connect()['then'](function(){return new BPromise(function(_0x539dff,_0x293a70){return pm2['stop'](_0x4e5048,function(_0x1ae586,_0x1548a2){if(_0x1ae586){return _0x293a70(_0x1ae586);}pm2['disconnect']();return _0x539dff(_0x1548a2);});});});};exports['restart']=function(_0x3617d7){return connect()[_0x141f('0x3')](function(){return new BPromise(function(_0x17cc4a,_0x495e24){return pm2[_0x141f('0x7')](_0x3617d7,function(_0x5777c8,_0x5d218a){if(_0x5777c8){return _0x495e24(_0x5777c8);}pm2['disconnect']();return _0x17cc4a(_0x5d218a);});});});};exports['list']=function(){return connect()[_0x141f('0x3')](function(){return new BPromise(function(_0x1b15a3,_0x13b6fd){return pm2['list'](function(_0x2b000f,_0x24c846){if(_0x2b000f){return _0x13b6fd(_0x2b000f);}pm2[_0x141f('0x5')]();return _0x1b15a3(_0x24c846);});});});};exports['describe']=function(_0x22a836){return connect()['then'](function(){return new BPromise(function(_0x35612f,_0x38ce9b){return pm2[_0x141f('0x8')](_0x22a836,function(_0x1f7591,_0x56450a){if(_0x1f7591){return _0x38ce9b(_0x1f7591);}pm2['disconnect']();return _0x35612f(_0x56450a);});});});};exports[_0x141f('0x9')]=function(_0x478460){return connect()[_0x141f('0x3')](function(){return new BPromise(function(_0x298eae,_0x70409){return pm2[_0x141f('0x9')](_0x478460,function(_0x13527a,_0x5e0f15){if(_0x13527a){return _0x70409(_0x13527a);}pm2[_0x141f('0x5')]();return _0x298eae(_0x5e0f15);});});});};exports[_0x141f('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x2e2356,_0x99cdfc){return pm2[_0x141f('0xa')](function(_0x1ebaf0){if(_0x1ebaf0){return _0x99cdfc(_0x1ebaf0);}return _0x2e2356('saved');});});});};
\ No newline at end of file
+var _0x1f5f=['saved','bluebird','connected','start','then','disconnect','list','describe','delete','dump'];(function(_0x49dce8,_0x3c9366){var _0x16c33a=function(_0x314d7c){while(--_0x314d7c){_0x49dce8['push'](_0x49dce8['shift']());}};_0x16c33a(++_0x3c9366);}(_0x1f5f,0x169));var _0xf1f5=function(_0x45ecf0,_0x194e57){_0x45ecf0=_0x45ecf0-0x0;var _0x5f146b=_0x1f5f[_0x45ecf0];return _0x5f146b;};'use strict';var pm2=require('pm2');var BPromise=require(_0xf1f5('0x0'));var config=require('./config');function connect(){return new BPromise(function(_0x36aa52,_0x58c164){return pm2['connect'](function(_0x39a25e){if(_0x39a25e){return _0x58c164(_0x39a25e);}return _0x36aa52(_0xf1f5('0x1'));});});};exports[_0xf1f5('0x2')]=function(_0x5b1088){return connect()[_0xf1f5('0x3')](function(){return new BPromise(function(_0x1d2873,_0x18907a){return pm2[_0xf1f5('0x2')](_0x5b1088,function(_0x131820,_0xd49144){if(_0x131820){return _0x18907a(_0x131820);}pm2['disconnect']();return _0x1d2873(_0xd49144);});});});};exports['stop']=function(_0x3ef651){return connect()['then'](function(){return new BPromise(function(_0x1a0741,_0x48f375){return pm2['stop'](_0x3ef651,function(_0x1aa8d5,_0x4b9ab2){if(_0x1aa8d5){return _0x48f375(_0x1aa8d5);}pm2[_0xf1f5('0x4')]();return _0x1a0741(_0x4b9ab2);});});});};exports['restart']=function(_0x586123){return connect()[_0xf1f5('0x3')](function(){return new BPromise(function(_0x49288f,_0xa99a2c){return pm2['restart'](_0x586123,function(_0xd9a102,_0x2aabce){if(_0xd9a102){return _0xa99a2c(_0xd9a102);}pm2['disconnect']();return _0x49288f(_0x2aabce);});});});};exports[_0xf1f5('0x5')]=function(){return connect()[_0xf1f5('0x3')](function(){return new BPromise(function(_0x5f4fc3,_0x2273ea){return pm2[_0xf1f5('0x5')](function(_0xd759f,_0x22e365){if(_0xd759f){return _0x2273ea(_0xd759f);}pm2['disconnect']();return _0x5f4fc3(_0x22e365);});});});};exports[_0xf1f5('0x6')]=function(_0x37b486){return connect()[_0xf1f5('0x3')](function(){return new BPromise(function(_0x7f6699,_0x3fcead){return pm2['describe'](_0x37b486,function(_0x2b3750,_0x14ad9e){if(_0x2b3750){return _0x3fcead(_0x2b3750);}pm2[_0xf1f5('0x4')]();return _0x7f6699(_0x14ad9e);});});});};exports[_0xf1f5('0x7')]=function(_0x470fb5){return connect()[_0xf1f5('0x3')](function(){return new BPromise(function(_0x1a8a32,_0xf53406){return pm2['delete'](_0x470fb5,function(_0xff948a,_0x328083){if(_0xff948a){return _0xf53406(_0xff948a);}pm2[_0xf1f5('0x4')]();return _0x1a8a32(_0x328083);});});});};exports[_0xf1f5('0x8')]=function(){return connect()['then'](function(){return new BPromise(function(_0x59f1d4,_0x11ec94){return pm2[_0xf1f5('0x8')](function(_0x2f97f9){if(_0x2f97f9){return _0x11ec94(_0x2f97f9);}return _0x59f1d4(_0xf1f5('0x9'));});});});};
\ No newline at end of file
index c2ef388..dc4223e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1f0=['inspect','start','lodash','moment','ioredis','util','../../mysqldb','schedule','redis','defaults','Setting','find','chatTimeout','then','ChatInteraction','findAll','subtract','minutes','length','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions'];(function(_0x384ef7,_0xc587f5){var _0x573396=function(_0x5a6809){while(--_0x5a6809){_0x384ef7['push'](_0x384ef7['shift']());}};_0x573396(++_0xc587f5);}(_0xc1f0,0xa2));var _0x0c1f=function(_0x513b2c,_0x4cf8f7){_0x513b2c=_0x513b2c-0x0;var _0x5a8e07=_0xc1f0[_0x513b2c];return _0x5a8e07;};'use strict';var _=require(_0x0c1f('0x0'));var moment=require(_0x0c1f('0x1'));var Redis=require(_0x0c1f('0x2'));var util=require(_0x0c1f('0x3'));var config=require('../../config/environment');var db=require(_0x0c1f('0x4'))['db'];var logger=require('../logger')(_0x0c1f('0x5'));config[_0x0c1f('0x6')]=_[_0x0c1f('0x7')](config[_0x0c1f('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x11a25f=0x0;var _0xb45731=[];return db[_0x0c1f('0x8')][_0x0c1f('0x9')]({'raw':!![],'attributes':['id',_0x0c1f('0xa')],'where':{'id':0x1}})[_0x0c1f('0xb')](function(_0x3555bc){_0x11a25f=_0x3555bc[_0x0c1f('0xa')];if(_0x11a25f){return db[_0x0c1f('0xc')][_0x0c1f('0xd')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x0c1f('0xe')](_0x3555bc[_0x0c1f('0xa')],_0x0c1f('0xf'))}}});}else{return[];}})['then'](function(_0xba6a8d){if(_0xba6a8d&&_0xba6a8d[_0x0c1f('0x10')]){_0xb45731=_['map'](_0xba6a8d||[],'id');logger[_0x0c1f('0x11')](_0x0c1f('0x12'),_0xb45731[_0x0c1f('0x13')]());return db[_0x0c1f('0xc')][_0x0c1f('0x14')]({'closeReason':'system','disposition':_0x0c1f('0x15'),'closed':!![],'closedAt':moment()[_0x0c1f('0x16')](_0x0c1f('0x17'))},{'where':{'id':_0xb45731}});}})['then'](function(){if(_0xb45731&&_0xb45731[_0x0c1f('0x10')]){logger[_0x0c1f('0x11')](_0x0c1f('0x18'),_0xb45731[_0x0c1f('0x13')]());for(var _0x2ccedc=0x0;_0x2ccedc<_0xb45731[_0x0c1f('0x10')];_0x2ccedc++){io[_0x0c1f('0x19')](_0x0c1f('0x1a'),{'id':_0xb45731[_0x2ccedc],'closed':!![]});}}})[_0x0c1f('0x1b')](function(_0x5734dd){logger[_0x0c1f('0x1c')](_0x0c1f('0x1d'),_0x5734dd?util[_0x0c1f('0x1e')](_0x5734dd,{'showHidden':![],'depth':null}):'');});}exports[_0x0c1f('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xeaa2=['ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','findAll','lastMsgAt','subtract','minutes','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start'];(function(_0x830c19,_0x5ac8b0){var _0x5a6046=function(_0x276f26){while(--_0x276f26){_0x830c19['push'](_0x830c19['shift']());}};_0x5a6046(++_0x5ac8b0);}(_0xeaa2,0x1e0));var _0x2eaa=function(_0x2e1906,_0xa281e9){_0x2e1906=_0x2e1906-0x0;var _0x3ea10e=_0xeaa2[_0x2e1906];return _0x3ea10e;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require(_0x2eaa('0x0'));var util=require(_0x2eaa('0x1'));var config=require(_0x2eaa('0x2'));var db=require(_0x2eaa('0x3'))['db'];var logger=require(_0x2eaa('0x4'))(_0x2eaa('0x5'));config[_0x2eaa('0x6')]=_[_0x2eaa('0x7')](config['redis'],{'host':_0x2eaa('0x8'),'port':0x18eb});var io=require(_0x2eaa('0x9'))(new Redis(config[_0x2eaa('0x6')]));function closeInteractions(){var _0x1ffe75=0x0;var _0x2f3879=[];return db[_0x2eaa('0xa')][_0x2eaa('0xb')]({'raw':!![],'attributes':['id',_0x2eaa('0xc')],'where':{'id':0x1}})[_0x2eaa('0xd')](function(_0x3edd27){_0x1ffe75=_0x3edd27['chatTimeout'];if(_0x1ffe75){return db['ChatInteraction'][_0x2eaa('0xe')]({'raw':!![],'attributes':['id',_0x2eaa('0xf')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x2eaa('0x10')](_0x3edd27['chatTimeout'],_0x2eaa('0x11'))}}});}else{return[];}})[_0x2eaa('0xd')](function(_0x51afef){if(_0x51afef&&_0x51afef['length']){_0x2f3879=_[_0x2eaa('0x12')](_0x51afef||[],'id');logger[_0x2eaa('0x13')](_0x2eaa('0x14'),_0x2f3879[_0x2eaa('0x15')]());return db['ChatInteraction'][_0x2eaa('0x16')]({'closeReason':_0x2eaa('0x17'),'disposition':_0x2eaa('0x18'),'closed':!![],'closedAt':moment()[_0x2eaa('0x19')](_0x2eaa('0x1a'))},{'where':{'id':_0x2f3879}});}})[_0x2eaa('0xd')](function(){if(_0x2f3879&&_0x2f3879['length']){logger['info']('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x2f3879[_0x2eaa('0x15')]());for(var _0x3e1a96=0x0;_0x3e1a96<_0x2f3879['length'];_0x3e1a96++){io['emit'](_0x2eaa('0x1b'),{'id':_0x2f3879[_0x3e1a96],'closed':!![]});}}})['catch'](function(_0x24f2c8){logger[_0x2eaa('0x1c')](_0x2eaa('0x1d'),_0x24f2c8?util[_0x2eaa('0x1e')](_0x24f2c8,{'showHidden':![],'depth':null}):'');});}exports[_0x2eaa('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 39a5262..116167a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x209e=['no\x20report\x20id','Schedule','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','run\x20job','cron','isBetween','startAt','endAt','add','start','add\x20cron','stop\x20cron','active','update','update\x20cron','run','util','lodash','moment','cron-job-manager','jayson/promise','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','name','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','savename','%s.%s','basename','extname','join','existsSync','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','SendMail','then','error','error\x20mail','info','email\x20sent','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtractUnit','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s'];(function(_0x579a0f,_0x3e4451){var _0x461ee8=function(_0x18bfe){while(--_0x18bfe){_0x579a0f['push'](_0x579a0f['shift']());}};_0x461ee8(++_0x3e4451);}(_0x209e,0x18b));var _0xe209=function(_0x58cf6f,_0x179965){_0x58cf6f=_0x58cf6f-0x0;var _0x247419=_0x209e[_0x58cf6f];return _0x247419;};'use strict';var fs=require('fs');var util=require(_0xe209('0x0'));var path=require('path');var _=require(_0xe209('0x1'));var moment=require(_0xe209('0x2'));var CronJobManager=require(_0xe209('0x3'));var jayson=require(_0xe209('0x4'));var BPromise=require('bluebird');var logger=require('../logger')(_0xe209('0x5'));var db=require(_0xe209('0x6'))['db'];var analyticCustomReportController=require(_0xe209('0x7'));var analyticDefaultReportController=require(_0xe209('0x8'));var client=jayson['client'][_0xe209('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x357c0a,_0x2e0647){return function(){logger['info'](_0xe209('0xa'),_0x357c0a[_0xe209('0xb')]);var _0x26a960=!![];var _0x3d7133={'tls':{'rejectUnauthorized':![]}};if(_0x357c0a[_0xe209('0xc')][_0xe209('0xd')][_0xe209('0xe')]){_0x3d7133[_0xe209('0xe')]=_0x357c0a[_0xe209('0xc')][_0xe209('0xd')][_0xe209('0xe')];}else{_0x3d7133[_0xe209('0xf')]=_0x357c0a[_0xe209('0xc')][_0xe209('0xd')][_0xe209('0xf')];_0x3d7133[_0xe209('0x10')]=_0x357c0a[_0xe209('0xc')][_0xe209('0xd')][_0xe209('0x10')];_0x3d7133['secure']=_0x357c0a['MailAccount']['Smtp'][_0xe209('0x11')];}if(_0x357c0a[_0xe209('0xc')][_0xe209('0xd')][_0xe209('0x12')]){_0x3d7133[_0xe209('0x13')]={'user':_0x357c0a['MailAccount'][_0xe209('0xd')][_0xe209('0x14')],'pass':_0x357c0a[_0xe209('0xc')]['Smtp'][_0xe209('0x15')]};}var _0x2741cf={'account':_0x3d7133,'message':{'from':util[_0xe209('0x16')](_0xe209('0x17'),_0x357c0a[_0xe209('0xc')][_0xe209('0x18')],_0x357c0a[_0xe209('0xc')][_0xe209('0xb')]||_0x357c0a['MailAccount']['Smtp'][_0xe209('0x14')]),'to':_0x357c0a[_0xe209('0xb')],'cc':_0x357c0a['cc'],'bcc':_0x357c0a['bcc'],'subject':util['format'](_0xe209('0x19'),_0x2e0647['name'],_0x357c0a[_0xe209('0x1a')],_0x357c0a['subtractUnit'])}};var _0x498095=path['join'](__dirname,'../../files/reports');var _0x4c35fa=_0x2e0647[_0xe209('0x1b')];var _0x2f6a78=util['format'](_0xe209('0x1c'),path[_0xe209('0x1d')](_0x2e0647[_0xe209('0x1b')],path[_0xe209('0x1e')](_0x2e0647[_0xe209('0x1b')])),'zip');var _0x59f8b0=path[_0xe209('0x1f')](_0x498095,_0x4c35fa);var _0x5d04ea=path[_0xe209('0x1f')](_0x498095,_0x2f6a78);if(fs[_0xe209('0x20')](_0x59f8b0)){_0x2e0647['status']=_0xe209('0x21');_0x2741cf[_0xe209('0x22')][_0xe209('0x23')]=[{'filename':_0x4c35fa,'path':_0x59f8b0}];_0x2741cf[_0xe209('0x22')][_0xe209('0x24')]=util[_0xe209('0x16')](_0xe209('0x25'),JSON[_0xe209('0x26')](_0x2e0647,null,0x2));}else if(fs['existsSync'](_0x5d04ea)){_0x2e0647['status']=_0xe209('0x21');_0x2741cf[_0xe209('0x22')][_0xe209('0x23')]=[{'filename':_0x2f6a78,'path':_0x5d04ea}];}else{_0x2741cf[_0xe209('0x22')][_0xe209('0x24')]=_0xe209('0x27');if(!_0x357c0a[_0xe209('0x28')]){_0x26a960=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x26a960){return client['request'](_0xe209('0x29'),_0x2741cf)[_0xe209('0x2a')](function(_0x18f6ed){if(_0x18f6ed[_0xe209('0x2b')]){return logger['error'](_0xe209('0x2c'),JSON['stringify'](_0x18f6ed));}return logger[_0xe209('0x2d')](_0xe209('0x2e'));})[_0xe209('0x2f')](function(_0x2b475c){return logger[_0xe209('0x2b')](_0xe209('0x2c'),JSON[_0xe209('0x26')](_0x2b475c));});}};}function handleError(){return function(_0x2caa23){return logger['error'](JSON[_0xe209('0x26')](_0x2caa23));};}function handleResult(_0x21a107){return function(_0x547c30){logger[_0xe209('0x2d')](_0xe209('0x30'),JSON['stringify'](_0x547c30));if(_0x21a107['MailAccount']&&_0x21a107['MailAccount'][_0xe209('0xd')]&&!_['isNil'](_0x21a107['email'])){setTimeout(handleSendEmail(_0x21a107,_0x547c30),0x3c*0x3e8);}};}function handleJob(_0x5083af){return function(){try{if(_[_0xe209('0x31')](_0x5083af[_0xe209('0x1a')])){return logger[_0xe209('0x2d')](_0xe209('0x32'));}if(_[_0xe209('0x31')](_0x5083af['subtractUnit'])){return logger[_0xe209('0x2d')](_0xe209('0x33'));}var _0xe0178e={'startDate':moment()['subtract'](_0x5083af[_0xe209('0x1a')],_0x5083af[_0xe209('0x34')])[_0xe209('0x16')](_0xe209('0x35')),'endDate':moment()['format'](_0xe209('0x35')),'type':'scheduled','output':_0x5083af[_0xe209('0x36')],'name':_0x5083af['name']};if(!_['isNil'](_0x5083af[_0xe209('0x37')])){logger['info'](_0xe209('0x38'),_0x5083af[_0xe209('0x37')]);return analyticDefaultReportController[_0xe209('0x39')]({'id':_0x5083af[_0xe209('0x37')]},_0xe0178e)[_0xe209('0x2a')](handleResult(_0x5083af))['catch'](handleError());}if(!_['isNil'](_0x5083af[_0xe209('0x3a')])){logger[_0xe209('0x2d')](_0xe209('0x3b'),_0x5083af['CustomReportId']);return analyticCustomReportController[_0xe209('0x39')]({'id':_0x5083af['CustomReportId']},_0xe0178e)[_0xe209('0x2a')](handleResult(_0x5083af))['catch'](handleError());}}catch(_0x55bf3d){logger[_0xe209('0x2b')](JSON['stringify'](_0x55bf3d));}return logger[_0xe209('0x2d')](_0xe209('0x3c'));};}function getJobs(_0x2dba34){var _0x3ebac8={};if(_0x2dba34){_0x3ebac8['id']=_0x2dba34;}return db[_0xe209('0x3d')]['findAll']({'where':_0x3ebac8,'include':[{'model':db[_0xe209('0xc')],'attributes':['id',_0xe209('0x18'),'email'],'include':[{'model':db[_0xe209('0x3e')],'as':'Smtp'}]}]})[_0xe209('0x2a')](function(_0xaace4f){var _0x36f0ce=_[_0xe209('0x3f')](manager[_0xe209('0x40')]);var _0x5e1831=_[_0xe209('0x41')](_0xaace4f,function(_0x180611){return _0x180611['id'][_0xe209('0x42')]();});var _0x1584aa=_[_0xe209('0x43')](_0xaace4f,function(_0x1e76f1){return _0x1e76f1['id'][_0xe209('0x42')]();});var _0x51cd01=_0x2dba34?_0x5e1831:_[_0xe209('0x44')](_0x5e1831,_0x36f0ce);var _0x1ece3a=_[_0xe209('0x45')](_0x5e1831,_0x36f0ce);var _0x578cbd=_[_0xe209('0x44')](_0x36f0ce,_0x5e1831);var _0x4ae0d0;var _0x4aedda;for(_0x4ae0d0=0x0;_0x4ae0d0<_0x578cbd[_0xe209('0x46')]&&!_0x2dba34;_0x4ae0d0+=0x1){_0x4aedda=_0x578cbd[_0x4ae0d0]['toString']();if(manager[_0xe209('0x47')](_0x4aedda)){manager[_0xe209('0x48')](_0x4aedda);manager[_0xe209('0x49')](_0x4aedda);logger[_0xe209('0x2d')](_0xe209('0x4a'),_0x4aedda);}}logger[_0xe209('0x2d')](_0xe209('0x4b'),JSON[_0xe209('0x26')](_0x51cd01));for(_0x4ae0d0=0x0;_0x4ae0d0<_0x51cd01[_0xe209('0x46')];_0x4ae0d0+=0x1){_0x4aedda=_0x51cd01[_0x4ae0d0][_0xe209('0x42')]();logger[_0xe209('0x2d')](_0xe209('0x4c'),_0x4aedda);if(_0x2dba34){logger[_0xe209('0x2d')](_0xe209('0x4d'),_0x2dba34);logger['info'](JSON[_0xe209('0x26')](_0x1584aa[_0x4aedda]));BPromise['resolve']()[_0xe209('0x2a')](handleJob(_0x1584aa[_0x4aedda]));logger[_0xe209('0x2d')](_0xe209('0x4e'),_0x1584aa[_0x4aedda][_0xe209('0x18')],_0x1584aa[_0x4aedda][_0xe209('0x4f')]);}else if(_0x1584aa[_0x4aedda][_0xe209('0x4f')]&&_0x1584aa[_0x4aedda]['active']&&moment()[_0xe209('0x50')](_0x1584aa[_0x4aedda][_0xe209('0x51')],_0x1584aa[_0x4aedda][_0xe209('0x52')])){manager[_0xe209('0x53')](_0x4aedda,_0x1584aa[_0x4aedda][_0xe209('0x4f')],handleJob(_0x1584aa[_0x4aedda]));manager[_0xe209('0x54')](_0x4aedda);logger['info'](_0xe209('0x55'),_0x1584aa[_0x4aedda]['name'],_0x1584aa[_0x4aedda]['cron']);}else if(manager['exists'](_0x4aedda)){manager[_0xe209('0x48')](_0x4aedda);manager[_0xe209('0x49')](_0x4aedda);logger[_0xe209('0x2d')](_0xe209('0x56'),_0x1584aa[_0x4aedda]['name'],_0x1584aa[_0x4aedda][_0xe209('0x4f')]);}}for(_0x4ae0d0=0x0,_0x4aedda;_0x4ae0d0<_0x1ece3a[_0xe209('0x46')]&&!_0x2dba34;_0x4ae0d0+=0x1){_0x4aedda=_0x1ece3a[_0x4ae0d0][_0xe209('0x42')]();if(manager['exists'](_0x4aedda)){if(_0x1584aa[_0x4aedda][_0xe209('0x4f')]&&_0x1584aa[_0x4aedda][_0xe209('0x57')]&&moment()[_0xe209('0x50')](_0x1584aa[_0x4aedda][_0xe209('0x51')],_0x1584aa[_0x4aedda]['endAt'])){manager[_0xe209('0x58')](_0x4aedda,_0x1584aa[_0x4aedda][_0xe209('0x4f')],handleJob(_0x1584aa[_0x4aedda]));logger[_0xe209('0x2d')](_0xe209('0x59'),_0x1584aa[_0x4aedda][_0xe209('0x18')],_0x1584aa[_0x4aedda][_0xe209('0x4f')]);}else{manager[_0xe209('0x48')](_0x4aedda);manager['deleteJob'](_0x4aedda);logger[_0xe209('0x2d')](_0xe209('0x56'),_0x1584aa[_0x4aedda]['name'],_0x1584aa[_0x4aedda][_0xe209('0x4f')]);}}}})[_0xe209('0x2f')](function(_0x43850d){logger['error'](JSON[_0xe209('0x26')](_0x43850d));});}exports[_0xe209('0x5a')]=function(_0x27e350){return getJobs(_0x27e350);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x48ca=['Schedule','findAll','MailServerOut','then','jobs','map','toString','keyBy','difference','exists','stop','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','run\x20job','cron','isBetween','startAt','endAt','start','stop\x20cron','active','update\x20cron','util','moment','jayson/promise','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','name','email','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','extname','zip','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','existsSync','status','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','error\x20mail','email\x20sent','stringify','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','catch','exec\x20custom\x20report\x20id:%s','CustomReportId'];(function(_0x32fd50,_0x3b441e){var _0x5f1bf2=function(_0x29b688){while(--_0x29b688){_0x32fd50['push'](_0x32fd50['shift']());}};_0x5f1bf2(++_0x3b441e);}(_0x48ca,0x17f));var _0xa48c=function(_0x299f60,_0x29b669){_0x299f60=_0x299f60-0x0;var _0x162070=_0x48ca[_0x299f60];return _0x162070;};'use strict';var fs=require('fs');var util=require(_0xa48c('0x0'));var path=require('path');var _=require('lodash');var moment=require(_0xa48c('0x1'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xa48c('0x2'));var BPromise=require(_0xa48c('0x3'));var logger=require(_0xa48c('0x4'))(_0xa48c('0x5'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xa48c('0x6'));var analyticDefaultReportController=require(_0xa48c('0x7'));var client=jayson[_0xa48c('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x5e2288,_0x57cee0){return function(){logger['info'](_0xa48c('0x9'),_0x5e2288['email']);var _0x2ab6f4=!![];var _0x22876b={'tls':{'rejectUnauthorized':![]}};if(_0x5e2288[_0xa48c('0xa')][_0xa48c('0xb')][_0xa48c('0xc')]){_0x22876b[_0xa48c('0xc')]=_0x5e2288[_0xa48c('0xa')][_0xa48c('0xb')][_0xa48c('0xc')];}else{_0x22876b[_0xa48c('0xd')]=_0x5e2288['MailAccount'][_0xa48c('0xb')][_0xa48c('0xd')];_0x22876b[_0xa48c('0xe')]=_0x5e2288['MailAccount'][_0xa48c('0xb')]['port'];_0x22876b[_0xa48c('0xf')]=_0x5e2288[_0xa48c('0xa')][_0xa48c('0xb')][_0xa48c('0xf')];}if(_0x5e2288[_0xa48c('0xa')]['Smtp'][_0xa48c('0x10')]){_0x22876b[_0xa48c('0x11')]={'user':_0x5e2288['MailAccount']['Smtp'][_0xa48c('0x12')],'pass':_0x5e2288['MailAccount'][_0xa48c('0xb')][_0xa48c('0x13')]};}var _0x4f3c97={'account':_0x22876b,'message':{'from':util[_0xa48c('0x14')](_0xa48c('0x15'),_0x5e2288[_0xa48c('0xa')][_0xa48c('0x16')],_0x5e2288[_0xa48c('0xa')][_0xa48c('0x17')]||_0x5e2288[_0xa48c('0xa')][_0xa48c('0xb')][_0xa48c('0x12')]),'to':_0x5e2288['email'],'cc':_0x5e2288['cc'],'bcc':_0x5e2288['bcc'],'subject':util[_0xa48c('0x14')](_0xa48c('0x18'),_0x57cee0[_0xa48c('0x16')],_0x5e2288[_0xa48c('0x19')],_0x5e2288[_0xa48c('0x1a')])}};var _0x887276=path[_0xa48c('0x1b')](__dirname,_0xa48c('0x1c'));var _0x20dc13=_0x57cee0[_0xa48c('0x1d')];var _0xe28278=util[_0xa48c('0x14')]('%s.%s',path[_0xa48c('0x1e')](_0x57cee0[_0xa48c('0x1d')],path[_0xa48c('0x1f')](_0x57cee0[_0xa48c('0x1d')])),_0xa48c('0x20'));var _0x2a6d26=path[_0xa48c('0x1b')](_0x887276,_0x20dc13);var _0x51a3e6=path['join'](_0x887276,_0xe28278);if(fs['existsSync'](_0x2a6d26)){_0x57cee0['status']='Sent';_0x4f3c97[_0xa48c('0x21')][_0xa48c('0x22')]=[{'filename':_0x20dc13,'path':_0x2a6d26}];_0x4f3c97[_0xa48c('0x21')][_0xa48c('0x23')]=util[_0xa48c('0x14')](_0xa48c('0x24'),JSON['stringify'](_0x57cee0,null,0x2));}else if(fs[_0xa48c('0x25')](_0x51a3e6)){_0x57cee0[_0xa48c('0x26')]=_0xa48c('0x27');_0x4f3c97[_0xa48c('0x21')][_0xa48c('0x22')]=[{'filename':_0xe28278,'path':_0x51a3e6}];}else{_0x4f3c97[_0xa48c('0x21')][_0xa48c('0x23')]=_0xa48c('0x28');if(!_0x5e2288[_0xa48c('0x29')]){_0x2ab6f4=![];logger[_0xa48c('0x2a')](_0xa48c('0x2b'));}}if(_0x2ab6f4){return client[_0xa48c('0x2c')](_0xa48c('0x2d'),_0x4f3c97)['then'](function(_0x1f1806){if(_0x1f1806['error']){return logger[_0xa48c('0x2e')](_0xa48c('0x2f'),JSON['stringify'](_0x1f1806));}return logger[_0xa48c('0x2a')](_0xa48c('0x30'));})['catch'](function(_0x4ae0e9){return logger[_0xa48c('0x2e')](_0xa48c('0x2f'),JSON[_0xa48c('0x31')](_0x4ae0e9));});}};}function handleError(){return function(_0x1c8126){return logger['error'](JSON[_0xa48c('0x31')](_0x1c8126));};}function handleResult(_0x4e0941){return function(_0x211110){logger[_0xa48c('0x2a')](_0xa48c('0x32'),JSON[_0xa48c('0x31')](_0x211110));if(_0x4e0941[_0xa48c('0xa')]&&_0x4e0941[_0xa48c('0xa')][_0xa48c('0xb')]&&!_[_0xa48c('0x33')](_0x4e0941[_0xa48c('0x17')])){setTimeout(handleSendEmail(_0x4e0941,_0x211110),0x3c*0x3e8);}};}function handleJob(_0x809b6a){return function(){try{if(_['isNil'](_0x809b6a['subtractNumber'])){return logger[_0xa48c('0x2a')](_0xa48c('0x34'));}if(_['isNil'](_0x809b6a[_0xa48c('0x1a')])){return logger[_0xa48c('0x2a')]('subtractUnit\x20null\x20or\x20undefined');}var _0x244d50={'startDate':moment()[_0xa48c('0x35')](_0x809b6a[_0xa48c('0x19')],_0x809b6a[_0xa48c('0x1a')])[_0xa48c('0x14')](_0xa48c('0x36')),'endDate':moment()[_0xa48c('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x809b6a[_0xa48c('0x37')],'name':_0x809b6a[_0xa48c('0x16')]};if(!_[_0xa48c('0x33')](_0x809b6a['DefaultReportId'])){logger[_0xa48c('0x2a')](_0xa48c('0x38'),_0x809b6a[_0xa48c('0x39')]);return analyticDefaultReportController[_0xa48c('0x3a')]({'id':_0x809b6a[_0xa48c('0x39')]},_0x244d50)['then'](handleResult(_0x809b6a))[_0xa48c('0x3b')](handleError());}if(!_[_0xa48c('0x33')](_0x809b6a['CustomReportId'])){logger[_0xa48c('0x2a')](_0xa48c('0x3c'),_0x809b6a[_0xa48c('0x3d')]);return analyticCustomReportController[_0xa48c('0x3a')]({'id':_0x809b6a[_0xa48c('0x3d')]},_0x244d50)['then'](handleResult(_0x809b6a))[_0xa48c('0x3b')](handleError());}}catch(_0x4edfae){logger['error'](JSON['stringify'](_0x4edfae));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x14fcc1){var _0x28f50d={};if(_0x14fcc1){_0x28f50d['id']=_0x14fcc1;}return db[_0xa48c('0x3e')][_0xa48c('0x3f')]({'where':_0x28f50d,'include':[{'model':db[_0xa48c('0xa')],'attributes':['id',_0xa48c('0x16'),_0xa48c('0x17')],'include':[{'model':db[_0xa48c('0x40')],'as':_0xa48c('0xb')}]}]})[_0xa48c('0x41')](function(_0x311a65){var _0x36a665=_['keys'](manager[_0xa48c('0x42')]);var _0x217f5e=_[_0xa48c('0x43')](_0x311a65,function(_0xf1dc9f){return _0xf1dc9f['id'][_0xa48c('0x44')]();});var _0xd669c9=_[_0xa48c('0x45')](_0x311a65,function(_0x51dbab){return _0x51dbab['id']['toString']();});var _0x3b1861=_0x14fcc1?_0x217f5e:_['difference'](_0x217f5e,_0x36a665);var _0x51817b=_['intersection'](_0x217f5e,_0x36a665);var _0x4dc545=_[_0xa48c('0x46')](_0x36a665,_0x217f5e);var _0x5405a2;var _0x554f70;for(_0x5405a2=0x0;_0x5405a2<_0x4dc545['length']&&!_0x14fcc1;_0x5405a2+=0x1){_0x554f70=_0x4dc545[_0x5405a2][_0xa48c('0x44')]();if(manager[_0xa48c('0x47')](_0x554f70)){manager[_0xa48c('0x48')](_0x554f70);manager[_0xa48c('0x49')](_0x554f70);logger[_0xa48c('0x2a')](_0xa48c('0x4a'),_0x554f70);}}logger['info'](_0xa48c('0x4b'),JSON[_0xa48c('0x31')](_0x3b1861));for(_0x5405a2=0x0;_0x5405a2<_0x3b1861[_0xa48c('0x4c')];_0x5405a2+=0x1){_0x554f70=_0x3b1861[_0x5405a2][_0xa48c('0x44')]();logger[_0xa48c('0x2a')](_0xa48c('0x4d'),_0x554f70);if(_0x14fcc1){logger[_0xa48c('0x2a')](_0xa48c('0x4e'),_0x14fcc1);logger[_0xa48c('0x2a')](JSON[_0xa48c('0x31')](_0xd669c9[_0x554f70]));BPromise[_0xa48c('0x4f')]()['then'](handleJob(_0xd669c9[_0x554f70]));logger[_0xa48c('0x2a')](_0xa48c('0x50'),_0xd669c9[_0x554f70][_0xa48c('0x16')],_0xd669c9[_0x554f70]['cron']);}else if(_0xd669c9[_0x554f70][_0xa48c('0x51')]&&_0xd669c9[_0x554f70]['active']&&moment()[_0xa48c('0x52')](_0xd669c9[_0x554f70][_0xa48c('0x53')],_0xd669c9[_0x554f70][_0xa48c('0x54')])){manager['add'](_0x554f70,_0xd669c9[_0x554f70]['cron'],handleJob(_0xd669c9[_0x554f70]));manager[_0xa48c('0x55')](_0x554f70);logger[_0xa48c('0x2a')]('add\x20cron',_0xd669c9[_0x554f70][_0xa48c('0x16')],_0xd669c9[_0x554f70][_0xa48c('0x51')]);}else if(manager[_0xa48c('0x47')](_0x554f70)){manager[_0xa48c('0x48')](_0x554f70);manager[_0xa48c('0x49')](_0x554f70);logger[_0xa48c('0x2a')](_0xa48c('0x56'),_0xd669c9[_0x554f70][_0xa48c('0x16')],_0xd669c9[_0x554f70]['cron']);}}for(_0x5405a2=0x0,_0x554f70;_0x5405a2<_0x51817b[_0xa48c('0x4c')]&&!_0x14fcc1;_0x5405a2+=0x1){_0x554f70=_0x51817b[_0x5405a2][_0xa48c('0x44')]();if(manager['exists'](_0x554f70)){if(_0xd669c9[_0x554f70][_0xa48c('0x51')]&&_0xd669c9[_0x554f70][_0xa48c('0x57')]&&moment()[_0xa48c('0x52')](_0xd669c9[_0x554f70]['startAt'],_0xd669c9[_0x554f70][_0xa48c('0x54')])){manager['update'](_0x554f70,_0xd669c9[_0x554f70][_0xa48c('0x51')],handleJob(_0xd669c9[_0x554f70]));logger['info'](_0xa48c('0x58'),_0xd669c9[_0x554f70]['name'],_0xd669c9[_0x554f70][_0xa48c('0x51')]);}else{manager[_0xa48c('0x48')](_0x554f70);manager[_0xa48c('0x49')](_0x554f70);logger['info']('stop\x20cron',_0xd669c9[_0x554f70][_0xa48c('0x16')],_0xd669c9[_0x554f70][_0xa48c('0x51')]);}}}})[_0xa48c('0x3b')](function(_0x276855){logger[_0xa48c('0x2e')](JSON[_0xa48c('0x31')](_0x276855));});}exports['run']=function(_0x4de03f){return getJobs(_0x4de03f);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 490f865..0d4e7c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5525=['inspect','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','substring','info','format','data1','data2','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','sentiment','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Sentiment\x20Analysis\x20not\x20requested','Negative','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','push'];(function(_0x3f8b9c,_0x3eb203){var _0x362254=function(_0x3cdc5b){while(--_0x3cdc5b){_0x3f8b9c['push'](_0x3f8b9c['shift']());}};_0x362254(++_0x3eb203);}(_0x5525,0xd1));var _0x5552=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x5525[_0x40a045];return _0x1a687c;};var _=require(_0x5552('0x0'));var AWS=require(_0x5552('0x1'));var rp=require(_0x5552('0x2'));var util=require(_0x5552('0x3'));var BPromise=require(_0x5552('0x4'));var db=require(_0x5552('0x5'))['db'];var logger=require(_0x5552('0x6'))('transcribe');function getTranscriptionJob(_0x285566,_0x1a52e2,_0x5bc6fe,_0x28ce98){return new Promise(function(_0x3fe1fb,_0x96ff0a){var _0x1ce9f6=new AWS[(_0x5552('0x7'))]({'accessKeyId':_0x1a52e2,'secretAccessKey':_0x285566,'region':_0x5bc6fe});_0x1ce9f6[_0x5552('0x8')]({'TranscriptionJobName':_0x28ce98},function(_0x164626,_0x25a789){if(_0x164626){return _0x96ff0a(_0x164626);}else{return _0x3fe1fb(_0x25a789);}});});}function sentiment(_0x547022,_0x272ca1,_0x568e10,_0x12880a,_0x4aaf71){return new Promise(function(_0x364d20,_0x51075e){var _0x47d924=new AWS[(_0x5552('0x9'))]({'accessKeyId':_0x272ca1,'secretAccessKey':_0x547022,'region':_0x568e10});_0x47d924['detectSentiment']({'Text':_0x12880a,'LanguageCode':_0x4aaf71[_0x5552('0xa')](0x0,0x2)},function(_0x92444a,_0x237c11){if(_0x92444a){return _0x51075e(_0x92444a);}else{return _0x364d20(_0x237c11);}});});}function checkTranscribeJob(_0x37aff3,_0x2a183a,_0x4ee81a){var _0x194ca5;return new BPromise(function(_0x48b39e,_0x4e8550){logger[_0x5552('0xb')](util[_0x5552('0xc')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x37aff3['id'],_0x37aff3['transcribeName']));return getTranscriptionJob(_0x4ee81a[_0x5552('0xd')],_0x4ee81a[_0x5552('0xe')],_0x2a183a[_0x5552('0xf')],_0x37aff3[_0x5552('0x10')])[_0x5552('0x11')](function(_0x36b6e1){logger[_0x5552('0xb')](util[_0x5552('0xc')](_0x5552('0x12'),_0x37aff3['id'],_0x37aff3['transcribeName'],_0x36b6e1[_0x5552('0x13')][_0x5552('0x14')]));if(!_0x37aff3['fileText']){switch(_0x36b6e1['TranscriptionJob']['TranscriptionJobStatus']){case _0x5552('0x15'):var _0x5b1642={'transcribeStatus':_0x36b6e1['TranscriptionJob'][_0x5552('0x14')],'fileUri':_0x36b6e1[_0x5552('0x13')]['Transcript'][_0x5552('0x16')]};logger['info'](util[_0x5552('0xc')](_0x5552('0x17'),_0x37aff3['id']));return rp({'uri':_0x36b6e1['TranscriptionJob']['Transcript'][_0x5552('0x16')],'json':!![]})[_0x5552('0x11')](function(_0x4cc6e2){logger[_0x5552('0xb')](util[_0x5552('0xc')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x37aff3['id']));if(_0x4cc6e2&&_0x4cc6e2[_0x5552('0x18')]&&_0x4cc6e2[_0x5552('0x18')][_0x5552('0x19')]&&_0x4cc6e2[_0x5552('0x18')][_0x5552('0x19')][_0x5552('0x1a')]){_0x5b1642[_0x5552('0x1b')]='';for(var _0x59ad39=0x0;_0x59ad39<_0x4cc6e2[_0x5552('0x18')][_0x5552('0x19')][_0x5552('0x1a')];_0x59ad39++){_0x5b1642[_0x5552('0x1b')]+=_0x4cc6e2[_0x5552('0x18')][_0x5552('0x19')][_0x59ad39][_0x5552('0x1c')]+'';}}return _0x37aff3[_0x5552('0x1d')](_0x5b1642);})[_0x5552('0x11')](function(){logger['info'](util['format'](_0x5552('0x1e'),_0x37aff3['id']));if(!_0x37aff3[_0x5552('0x1f')]){throw new db[(_0x5552('0x20'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2a183a[_0x5552('0x21')]||!_0x2a183a['sentimentAccountId']||!_0x2a183a[_0x5552('0x22')]||!_0x2a183a[_0x5552('0x23')]||!_0x2a183a[_0x5552('0x24')]){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))](_0x5552('0x26'));}if(!_0x5b1642[_0x5552('0x1b')]){throw new Error(_0x5552('0x27'));}if(_0x2a183a[_0x5552('0x28')]===_0x4ee81a['id']){return _0x4ee81a;}else{return db[_0x5552('0x29')][_0x5552('0x2a')]({'where':{'id':_settings[_0x5552('0x28')]}});}})[_0x5552('0x11')](function(_0x3b9a1b){if(!_0x3b9a1b){throw new db[(_0x5552('0x20'))]['ValidationError'](_0x5552('0x2b'));}if(!_0x3b9a1b['data1']||!_0x3b9a1b[_0x5552('0xe')]){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))](_0x5552('0x2c'));}_0x194ca5=_0x3b9a1b;logger[_0x5552('0xb')](util[_0x5552('0xc')](_0x5552('0x2d'),_0x37aff3['id']));return sentiment(_0x194ca5['data1'],_0x194ca5[_0x5552('0xe')],_0x2a183a[_0x5552('0x22')],_0x5b1642[_0x5552('0x1b')],_0x2a183a['language']);})[_0x5552('0x11')](function(_0x2abf70){logger[_0x5552('0xb')](util['format'](_0x5552('0x2e'),_0x37aff3['id']));return _0x37aff3['update']({'sentiment':_0x2abf70[_0x5552('0x2f')],'sPositive':_0x2abf70[_0x5552('0x30')][_0x5552('0x31')],'sNegative':_0x2abf70['SentimentScore']['Negative'],'sMixed':_0x2abf70['SentimentScore'][_0x5552('0x32')],'sNeutral':_0x2abf70[_0x5552('0x30')][_0x5552('0x33')]});})[_0x5552('0x11')](function(){logger['info'](util['format'](_0x5552('0x1e'),_0x37aff3['id']));_0x48b39e();});case'FAILED':return _0x37aff3['update']({'transcribeStatus':_0x5552('0x34'),'failureReason':_0x36b6e1[_0x5552('0x13')]['FailureReason']})[_0x5552('0x11')](function(){logger[_0x5552('0xb')](util[_0x5552('0xc')](_0x5552('0x1e'),_0x37aff3['id']));_0x48b39e();});default:logger[_0x5552('0xb')](util[_0x5552('0xc')](_0x5552('0x35'),_0x37aff3['id']));break;}}else{return BPromise['resolve']()[_0x5552('0x11')](function(){if(!_0x37aff3[_0x5552('0x1f')]){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))](_0x5552('0x36'));}if(!_0x2a183a[_0x5552('0x21')]||!_0x2a183a[_0x5552('0x28')]||!_0x2a183a[_0x5552('0x22')]||!_0x2a183a[_0x5552('0x23')]||!_0x2a183a[_0x5552('0x24')]){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))](_0x5552('0x26'));}if(!_0x37aff3[_0x5552('0x1b')]){throw new Error(_0x5552('0x27'));}if(_0x2a183a[_0x5552('0x28')]===_0x4ee81a['id']){return _0x4ee81a;}else{return db['CloudProvider'][_0x5552('0x2a')]({'where':{'id':_settings[_0x5552('0x28')]}});}})[_0x5552('0x11')](function(_0x2bac4d){if(!_0x2bac4d){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2bac4d['data1']||!_0x2bac4d[_0x5552('0xe')]){throw new db['Sequelize'][(_0x5552('0x25'))](_0x5552('0x2c'));}_0x194ca5=_0x2bac4d;logger[_0x5552('0xb')](util[_0x5552('0xc')](_0x5552('0x2d'),_0x37aff3['id']));return sentiment(_0x194ca5[_0x5552('0xd')],_0x194ca5[_0x5552('0xe')],_0x2a183a[_0x5552('0x22')],_0x37aff3[_0x5552('0x1b')],_0x2a183a[_0x5552('0x23')]);})[_0x5552('0x11')](function(_0x3ab548){logger[_0x5552('0xb')](util[_0x5552('0xc')](_0x5552('0x2e'),_0x37aff3['id']));return _0x37aff3[_0x5552('0x1d')]({'sentiment':_0x3ab548[_0x5552('0x2f')],'sPositive':_0x3ab548['SentimentScore'][_0x5552('0x31')],'sNegative':_0x3ab548['SentimentScore'][_0x5552('0x37')],'sMixed':_0x3ab548[_0x5552('0x30')][_0x5552('0x32')],'sNeutral':_0x3ab548[_0x5552('0x30')][_0x5552('0x33')],'transcribeStatus':'COMPLETED'});})[_0x5552('0x11')](function(){logger[_0x5552('0xb')](util[_0x5552('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x37aff3['id']));_0x48b39e();});}})[_0x5552('0x38')](function(_0x471d0c){if(_0x471d0c){if(!_0x471d0c[_0x5552('0x39')]||_0x471d0c[_0x5552('0x39')]!=='SequelizeValidationError'){logger['error'](util[_0x5552('0xc')](_0x5552('0x3a'),_0x37aff3['id']),util['inspect'](_0x471d0c,{'showHidden':![],'depth':null}));}}_0x48b39e();});});}function checkTranscribe(){var _0x425538;var _0x2fcebd;var _0x20118a;return db[_0x5552('0x3b')]['findAll']({'where':{'transcribeStatus':_0x5552('0x3c')}})[_0x5552('0x11')](function(_0x1d083d){if(!_0x1d083d||!_0x1d083d[_0x5552('0x1a')]){throw new db['Sequelize'][(_0x5552('0x25'))](_0x5552('0x3d'));}_0x425538=_0x1d083d;return db[_0x5552('0x3e')][_0x5552('0x2a')]({'where':{'id':0x1}});})[_0x5552('0x11')](function(_0x5ce5d9){if(!_0x5ce5d9){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))](_0x5552('0x3f'));}_0x2fcebd=_0x5ce5d9;if(!_0x2fcebd[_0x5552('0x40')]||!_0x2fcebd[_0x5552('0x41')]||!_0x2fcebd[_0x5552('0xf')]||!_0x2fcebd['language']||!_0x2fcebd[_0x5552('0x24')]){throw new db[(_0x5552('0x20'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0x5552('0x29')][_0x5552('0x2a')]({'where':{'id':_0x2fcebd['transcribeAccountId']}});})[_0x5552('0x11')](function(_0x2cd4eb){if(!_0x2cd4eb){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2cd4eb['data1']||!_0x2cd4eb[_0x5552('0xe')]){throw new db[(_0x5552('0x20'))][(_0x5552('0x25'))](_0x5552('0x2c'));}_0x20118a=_0x2cd4eb;var _0x123f8b=[];_0x425538['forEach'](function(_0x628df1){_0x123f8b[_0x5552('0x42')](checkTranscribeJob(_0x628df1,_0x2fcebd,_0x20118a));});return BPromise['all'](_0x123f8b);})['catch'](function(_0xdd090){if(_0xdd090){if(!_0xdd090[_0x5552('0x39')]||_0xdd090[_0x5552('0x39')]!=='SequelizeValidationError'){logger['error'](util[_0x5552('0x43')](_0xdd090,{'showHidden':![],'depth':null}));}}});}exports[_0x5552('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x5106=['all','start','lodash','request-promise','bluebird','../../mysqldb','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','info','fileText','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','results','transcripts','length','transcript','update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Transcript\x20not\x20available','Sentiment','Mixed','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0x5106,0x116));var _0x6510=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5106[_0x321bb2];return _0x9c12ed;};var _=require(_0x6510('0x0'));var AWS=require('aws-sdk');var rp=require(_0x6510('0x1'));var util=require('util');var BPromise=require(_0x6510('0x2'));var db=require(_0x6510('0x3'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x25620c,_0x4465c2,_0x260ce8,_0xef50bb){return new Promise(function(_0x28cb6e,_0x2f5cb3){var _0x485cfa=new AWS['TranscribeService']({'accessKeyId':_0x4465c2,'secretAccessKey':_0x25620c,'region':_0x260ce8});_0x485cfa['getTranscriptionJob']({'TranscriptionJobName':_0xef50bb},function(_0x226e1a,_0x4822f8){if(_0x226e1a){return _0x2f5cb3(_0x226e1a);}else{return _0x28cb6e(_0x4822f8);}});});}function sentiment(_0x24e8bc,_0x51d9b8,_0x2f415a,_0x2c4c38,_0x340531){return new Promise(function(_0x586cea,_0x53a80e){var _0x1dcf14=new AWS[(_0x6510('0x4'))]({'accessKeyId':_0x51d9b8,'secretAccessKey':_0x24e8bc,'region':_0x2f415a});_0x1dcf14[_0x6510('0x5')]({'Text':_0x2c4c38,'LanguageCode':_0x340531[_0x6510('0x6')](0x0,0x2)},function(_0x4626ec,_0x5bb748){if(_0x4626ec){return _0x53a80e(_0x4626ec);}else{return _0x586cea(_0x5bb748);}});});}function checkTranscribeJob(_0x204789,_0x32a3f3,_0x1b78a8){var _0xa4ee91;return new BPromise(function(_0x197aed,_0x4900f2){logger['info'](util[_0x6510('0x7')](_0x6510('0x8'),_0x204789['id'],_0x204789[_0x6510('0x9')]));return getTranscriptionJob(_0x1b78a8[_0x6510('0xa')],_0x1b78a8[_0x6510('0xb')],_0x32a3f3['transcribeRegion'],_0x204789['transcribeName'])[_0x6510('0xc')](function(_0x423eda){logger[_0x6510('0xd')](util[_0x6510('0x7')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x204789['id'],_0x204789[_0x6510('0x9')],_0x423eda['TranscriptionJob']['TranscriptionJobStatus']));if(!_0x204789[_0x6510('0xe')]){switch(_0x423eda[_0x6510('0xf')][_0x6510('0x10')]){case'COMPLETED':var _0xf4a3c3={'transcribeStatus':_0x423eda[_0x6510('0xf')]['TranscriptionJobStatus'],'fileUri':_0x423eda[_0x6510('0xf')][_0x6510('0x11')][_0x6510('0x12')]};logger[_0x6510('0xd')](util[_0x6510('0x7')]('[RECORDING:%d]\x20Get\x20transcript',_0x204789['id']));return rp({'uri':_0x423eda[_0x6510('0xf')][_0x6510('0x11')]['TranscriptFileUri'],'json':!![]})[_0x6510('0xc')](function(_0x55416e){logger[_0x6510('0xd')](util[_0x6510('0x7')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x204789['id']));if(_0x55416e&&_0x55416e[_0x6510('0x13')]&&_0x55416e[_0x6510('0x13')][_0x6510('0x14')]&&_0x55416e[_0x6510('0x13')][_0x6510('0x14')]['length']){_0xf4a3c3[_0x6510('0xe')]='';for(var _0x257301=0x0;_0x257301<_0x55416e['results'][_0x6510('0x14')][_0x6510('0x15')];_0x257301++){_0xf4a3c3['fileText']+=_0x55416e[_0x6510('0x13')][_0x6510('0x14')][_0x257301][_0x6510('0x16')]+'';}}return _0x204789[_0x6510('0x17')](_0xf4a3c3);})[_0x6510('0xc')](function(){logger[_0x6510('0xd')](util[_0x6510('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x204789['id']));if(!_0x204789[_0x6510('0x18')]){throw new db[(_0x6510('0x19'))][(_0x6510('0x1a'))](_0x6510('0x1b'));}if(!_0x32a3f3[_0x6510('0x1c')]||!_0x32a3f3[_0x6510('0x1d')]||!_0x32a3f3[_0x6510('0x1e')]||!_0x32a3f3['language']||!_0x32a3f3[_0x6510('0x1f')]){throw new db['Sequelize']['ValidationError'](_0x6510('0x20'));}if(!_0xf4a3c3[_0x6510('0xe')]){throw new Error('Transcript\x20not\x20available');}if(_0x32a3f3[_0x6510('0x1d')]===_0x1b78a8['id']){return _0x1b78a8;}else{return db[_0x6510('0x21')][_0x6510('0x22')]({'where':{'id':_settings[_0x6510('0x1d')]}});}})[_0x6510('0xc')](function(_0x2a93fd){if(!_0x2a93fd){throw new db[(_0x6510('0x19'))][(_0x6510('0x1a'))](_0x6510('0x23'));}if(!_0x2a93fd['data1']||!_0x2a93fd['data2']){throw new db['Sequelize'][(_0x6510('0x1a'))]('Cloud\x20Provider\x20not\x20configured');}_0xa4ee91=_0x2a93fd;logger[_0x6510('0xd')](util[_0x6510('0x7')](_0x6510('0x24'),_0x204789['id']));return sentiment(_0xa4ee91['data1'],_0xa4ee91[_0x6510('0xb')],_0x32a3f3[_0x6510('0x1e')],_0xf4a3c3[_0x6510('0xe')],_0x32a3f3[_0x6510('0x25')]);})[_0x6510('0xc')](function(_0x52461e){logger[_0x6510('0xd')](util[_0x6510('0x7')](_0x6510('0x26'),_0x204789['id']));return _0x204789['update']({'sentiment':_0x52461e['Sentiment'],'sPositive':_0x52461e[_0x6510('0x27')][_0x6510('0x28')],'sNegative':_0x52461e[_0x6510('0x27')][_0x6510('0x29')],'sMixed':_0x52461e[_0x6510('0x27')]['Mixed'],'sNeutral':_0x52461e['SentimentScore'][_0x6510('0x2a')]});})[_0x6510('0xc')](function(){logger[_0x6510('0xd')](util['format'](_0x6510('0x2b'),_0x204789['id']));_0x197aed();});case _0x6510('0x2c'):return _0x204789['update']({'transcribeStatus':_0x6510('0x2c'),'failureReason':_0x423eda['TranscriptionJob']['FailureReason']})['then'](function(){logger[_0x6510('0xd')](util[_0x6510('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x204789['id']));_0x197aed();});default:logger[_0x6510('0xd')](util[_0x6510('0x7')](_0x6510('0x2d'),_0x204789['id']));break;}}else{return BPromise[_0x6510('0x2e')]()[_0x6510('0xc')](function(){if(!_0x204789['tempSentiment']){throw new db[(_0x6510('0x19'))][(_0x6510('0x1a'))](_0x6510('0x1b'));}if(!_0x32a3f3[_0x6510('0x1c')]||!_0x32a3f3[_0x6510('0x1d')]||!_0x32a3f3[_0x6510('0x1e')]||!_0x32a3f3[_0x6510('0x25')]||!_0x32a3f3[_0x6510('0x1f')]){throw new db[(_0x6510('0x19'))][(_0x6510('0x1a'))](_0x6510('0x20'));}if(!_0x204789[_0x6510('0xe')]){throw new Error(_0x6510('0x2f'));}if(_0x32a3f3['sentimentAccountId']===_0x1b78a8['id']){return _0x1b78a8;}else{return db[_0x6510('0x21')][_0x6510('0x22')]({'where':{'id':_settings[_0x6510('0x1d')]}});}})[_0x6510('0xc')](function(_0x9031f3){if(!_0x9031f3){throw new db[(_0x6510('0x19'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x9031f3[_0x6510('0xa')]||!_0x9031f3['data2']){throw new db['Sequelize'][(_0x6510('0x1a'))]('Cloud\x20Provider\x20not\x20configured');}_0xa4ee91=_0x9031f3;logger[_0x6510('0xd')](util[_0x6510('0x7')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x204789['id']));return sentiment(_0xa4ee91[_0x6510('0xa')],_0xa4ee91[_0x6510('0xb')],_0x32a3f3['sentimentRegion'],_0x204789[_0x6510('0xe')],_0x32a3f3[_0x6510('0x25')]);})[_0x6510('0xc')](function(_0x522974){logger[_0x6510('0xd')](util[_0x6510('0x7')](_0x6510('0x26'),_0x204789['id']));return _0x204789[_0x6510('0x17')]({'sentiment':_0x522974[_0x6510('0x30')],'sPositive':_0x522974[_0x6510('0x27')]['Positive'],'sNegative':_0x522974['SentimentScore'][_0x6510('0x29')],'sMixed':_0x522974[_0x6510('0x27')][_0x6510('0x31')],'sNeutral':_0x522974['SentimentScore'][_0x6510('0x2a')],'transcribeStatus':_0x6510('0x32')});})['then'](function(){logger[_0x6510('0xd')](util[_0x6510('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x204789['id']));_0x197aed();});}})[_0x6510('0x33')](function(_0x58841f){if(_0x58841f){if(!_0x58841f['name']||_0x58841f[_0x6510('0x34')]!==_0x6510('0x35')){logger[_0x6510('0x36')](util['format'](_0x6510('0x37'),_0x204789['id']),util[_0x6510('0x38')](_0x58841f,{'showHidden':![],'depth':null}));}}_0x197aed();});});}function checkTranscribe(){var _0x4dc9cd;var _0x50ac82;var _0x27b448;return db[_0x6510('0x39')][_0x6510('0x3a')]({'where':{'transcribeStatus':_0x6510('0x3b')}})[_0x6510('0xc')](function(_0x412303){if(!_0x412303||!_0x412303['length']){throw new db[(_0x6510('0x19'))]['ValidationError'](_0x6510('0x3c'));}_0x4dc9cd=_0x412303;return db[_0x6510('0x3d')][_0x6510('0x22')]({'where':{'id':0x1}});})['then'](function(_0x4c84c0){if(!_0x4c84c0){throw new db[(_0x6510('0x19'))]['ValidationError']('Settings\x20not\x20available');}_0x50ac82=_0x4c84c0;if(!_0x50ac82['transcribe']||!_0x50ac82[_0x6510('0x3e')]||!_0x50ac82[_0x6510('0x3f')]||!_0x50ac82[_0x6510('0x25')]||!_0x50ac82['bucket']){throw new db[(_0x6510('0x19'))][(_0x6510('0x1a'))](_0x6510('0x40'));}return db[_0x6510('0x21')][_0x6510('0x22')]({'where':{'id':_0x50ac82[_0x6510('0x3e')]}});})[_0x6510('0xc')](function(_0x527168){if(!_0x527168){throw new db[(_0x6510('0x19'))][(_0x6510('0x1a'))](_0x6510('0x23'));}if(!_0x527168[_0x6510('0xa')]||!_0x527168['data2']){throw new db['Sequelize'][(_0x6510('0x1a'))]('Cloud\x20Provider\x20not\x20configured');}_0x27b448=_0x527168;var _0x3fb0a5=[];_0x4dc9cd[_0x6510('0x41')](function(_0x2f0e08){_0x3fb0a5[_0x6510('0x42')](checkTranscribeJob(_0x2f0e08,_0x50ac82,_0x27b448));});return BPromise[_0x6510('0x43')](_0x3fb0a5);})['catch'](function(_0x48db69){if(_0x48db69){if(!_0x48db69['name']||_0x48db69[_0x6510('0x34')]!==_0x6510('0x35')){logger[_0x6510('0x36')](util['inspect'](_0x48db69,{'showHidden':![],'depth':null}));}}});}exports[_0x6510('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 3482bd1..d0f6815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe992=['YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','inspect','start','lodash','moment','ioredis','util','../../mysqldb','../logger','schedule','defaults','redis','WhatsappInteraction','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','format'];(function(_0x1d3a5d,_0x17fc32){var _0x257078=function(_0x482f3a){while(--_0x482f3a){_0x1d3a5d['push'](_0x1d3a5d['shift']());}};_0x257078(++_0x17fc32);}(_0xe992,0xf1));var _0x2e99=function(_0x3d3b76,_0x2b5ae1){_0x3d3b76=_0x3d3b76-0x0;var _0x382445=_0xe992[_0x3d3b76];return _0x382445;};'use strict';var _=require(_0x2e99('0x0'));var moment=require(_0x2e99('0x1'));var Redis=require(_0x2e99('0x2'));var util=require(_0x2e99('0x3'));var config=require('../../config/environment');var db=require(_0x2e99('0x4'))['db'];var logger=require(_0x2e99('0x5'))(_0x2e99('0x6'));config['redis']=_[_0x2e99('0x7')](config[_0x2e99('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2e99('0x8')]));function closeInteractions(){var _0x59d6de=[];return db[_0x2e99('0x9')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x2e99('0xa'))}}})[_0x2e99('0xb')](function(_0x1c92af){if(_0x1c92af&&_0x1c92af[_0x2e99('0xc')]){_0x59d6de=_[_0x2e99('0xd')](_0x1c92af||[],'id');logger[_0x2e99('0xe')](_0x2e99('0xf'),_0x59d6de[_0x2e99('0x10')]());return db[_0x2e99('0x9')][_0x2e99('0x11')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0x2e99('0x12')](_0x2e99('0x13'))},{'where':{'id':_0x59d6de}});}})[_0x2e99('0xb')](function(){if(_0x59d6de&&_0x59d6de[_0x2e99('0xc')]){logger[_0x2e99('0xe')](_0x2e99('0x14'),_0x59d6de[_0x2e99('0x10')]());for(var _0x81493d=0x0;_0x81493d<_0x59d6de['length'];_0x81493d++){io[_0x2e99('0x15')](_0x2e99('0x16'),{'id':_0x59d6de[_0x81493d],'closed':!![]});}}})[_0x2e99('0x17')](function(_0x34957f){logger['error']('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x34957f?util[_0x2e99('0x18')](_0x34957f,{'showHidden':![],'depth':null}):'');});}exports[_0x2e99('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x2cd0=['update','format','YYYY-MM-DD\x20HH:mm:ss','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction','hours','then','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join'];(function(_0x43ec67,_0x167029){var _0x5e70e8=function(_0x20472f){while(--_0x20472f){_0x43ec67['push'](_0x43ec67['shift']());}};_0x5e70e8(++_0x167029);}(_0x2cd0,0x10f));var _0x02cd=function(_0x2bf162,_0x1bde0d){_0x2bf162=_0x2bf162-0x0;var _0x26f83d=_0x2cd0[_0x2bf162];return _0x26f83d;};'use strict';var _=require(_0x02cd('0x0'));var moment=require(_0x02cd('0x1'));var Redis=require(_0x02cd('0x2'));var util=require(_0x02cd('0x3'));var config=require(_0x02cd('0x4'));var db=require(_0x02cd('0x5'))['db'];var logger=require(_0x02cd('0x6'))(_0x02cd('0x7'));config['redis']=_[_0x02cd('0x8')](config[_0x02cd('0x9')],{'host':_0x02cd('0xa'),'port':0x18eb});var io=require(_0x02cd('0xb'))(new Redis(config['redis']));function closeInteractions(){var _0x22bcc3=[];return db[_0x02cd('0xc')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x02cd('0xd'))}}})[_0x02cd('0xe')](function(_0x56b2de){if(_0x56b2de&&_0x56b2de['length']){_0x22bcc3=_[_0x02cd('0xf')](_0x56b2de||[],'id');logger[_0x02cd('0x10')](_0x02cd('0x11'),_0x22bcc3[_0x02cd('0x12')]());return db[_0x02cd('0xc')][_0x02cd('0x13')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0x02cd('0x14')](_0x02cd('0x15'))},{'where':{'id':_0x22bcc3}});}})[_0x02cd('0xe')](function(){if(_0x22bcc3&&_0x22bcc3[_0x02cd('0x16')]){logger[_0x02cd('0x10')](_0x02cd('0x17'),_0x22bcc3['join']());for(var _0x251568=0x0;_0x251568<_0x22bcc3['length'];_0x251568++){io[_0x02cd('0x18')]('whatsappInteraction:update',{'id':_0x22bcc3[_0x251568],'closed':!![]});}}})['catch'](function(_0x51f190){logger[_0x02cd('0x19')](_0x02cd('0x1a'),_0x51f190?util[_0x02cd('0x1b')](_0x51f190,{'showHidden':![],'depth':null}):'');});}exports[_0x02cd('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 2fef378..ff2049a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25f7=['Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','then','bulkCreate','log','contacts1','destroy','contacts2','CmHopper','finished\x20populating','hopper2','util','../mysqldb','push'];(function(_0x188d31,_0x576e87){var _0x30ed33=function(_0x15f9a5){while(--_0x15f9a5){_0x188d31['push'](_0x188d31['shift']());}};_0x30ed33(++_0x576e87);}(_0x25f7,0x19b));var _0x725f=function(_0x21d41f,_0x3e1b42){_0x21d41f=_0x21d41f-0x0;var _0x15d096=_0x25f7[_0x21d41f];return _0x15d096;};'use strict';var util=require(_0x725f('0x0'));var db=require(_0x725f('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x725f('0x2')]({'id':i,'firstName':_0x725f('0x3')+i,'lastName':_0x725f('0x4')+i,'phone':0xf879fb460+i,'email':_0x725f('0x5')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x725f('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x725f('0x6')](),'updatedAt':Date[_0x725f('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x725f('0x2')]({'id':i,'firstName':_0x725f('0x3')+i,'lastName':_0x725f('0x4')+i,'phone':0xf879fb460+i,'email':_0x725f('0x5')+i+_0x725f('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x725f('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x725f('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x725f('0x6')](),'updatedAt':Date[_0x725f('0x6')]()});}db[_0x725f('0x8')]['destroy']({'where':{}})[_0x725f('0x9')](function(){return db[_0x725f('0x8')][_0x725f('0xa')](contacts);})[_0x725f('0x9')](function(){console[_0x725f('0xb')]('finished\x20populating',_0x725f('0xc'));return db['CmHopper'][_0x725f('0xd')]({'where':{}});})[_0x725f('0x9')](function(){return db['CmHopper'][_0x725f('0xa')](hopper);})[_0x725f('0x9')](function(){console['log']('finished\x20populating','hopper1');return db['CmContact'][_0x725f('0xa')](contacts2);})[_0x725f('0x9')](function(){console['log']('finished\x20populating',_0x725f('0xe'));return db[_0x725f('0xf')][_0x725f('0xa')](hopper2);})[_0x725f('0x9')](function(){console[_0x725f('0xb')](_0x725f('0x10'),_0x725f('0x11'));})['catch'](function(_0x2d84aa){console[_0x725f('0xb')](_0x2d84aa);});
\ No newline at end of file
+var _0x50a2=['CmHopper','hopper1','CmContact','contacts2','hopper2','util','../mysqldb','push','Innocenzo','@xcally.com','now','Biondo','innocenzo.biondo','destroy','then','bulkCreate','log','finished\x20populating'];(function(_0x525af9,_0x4edd23){var _0x129fbf=function(_0x4f44fe){while(--_0x4f44fe){_0x525af9['push'](_0x525af9['shift']());}};_0x129fbf(++_0x4edd23);}(_0x50a2,0x149));var _0x250a=function(_0x87134,_0x28d676){_0x87134=_0x87134-0x0;var _0x2bf390=_0x50a2[_0x87134];return _0x2bf390;};'use strict';var util=require(_0x250a('0x0'));var db=require(_0x250a('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x250a('0x2')]({'id':i,'firstName':_0x250a('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x250a('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x250a('0x5')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x250a('0x3')+i,'lastName':_0x250a('0x6')+i,'phone':0xf879fb460+i,'email':_0x250a('0x7')+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x250a('0x5')](),'updatedAt':Date['now']()});}db['CmContact'][_0x250a('0x8')]({'where':{}})[_0x250a('0x9')](function(){return db['CmContact'][_0x250a('0xa')](contacts);})[_0x250a('0x9')](function(){console[_0x250a('0xb')](_0x250a('0xc'),'contacts1');return db[_0x250a('0xd')][_0x250a('0x8')]({'where':{}});})[_0x250a('0x9')](function(){return db[_0x250a('0xd')][_0x250a('0xa')](hopper);})['then'](function(){console['log'](_0x250a('0xc'),_0x250a('0xe'));return db[_0x250a('0xf')]['bulkCreate'](contacts2);})[_0x250a('0x9')](function(){console[_0x250a('0xb')](_0x250a('0xc'),_0x250a('0x10'));return db[_0x250a('0xd')][_0x250a('0xa')](hopper2);})[_0x250a('0x9')](function(){console['log'](_0x250a('0xc'),_0x250a('0x11'));})['catch'](function(_0x5f3f27){console[_0x250a('0xb')](_0x5f3f27);});
\ No newline at end of file
index 9ed26d7..705aea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7284=['User','bulkCreate','then','log','add\x20user','catch','format','agent','%s%s','friend','udp','wss','all','ulaw','yes','actpass','\x22%s\x22\x20<%s>'];(function(_0x291ecd,_0x5d9394){var _0x340dd9=function(_0x1baee9){while(--_0x1baee9){_0x291ecd['push'](_0x291ecd['shift']());}};_0x340dd9(++_0x5d9394);}(_0x7284,0x19e));var _0x4728=function(_0x4cdd0d,_0x4006b2){_0x4cdd0d=_0x4cdd0d-0x0;var _0x442f18=_0x7284[_0x4cdd0d];return _0x442f18;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0x4728('0x0')]('%s%s',_0x4728('0x1'),i),'fullname':util[_0x4728('0x0')](_0x4728('0x2'),_0x4728('0x1'),i),'email':util[_0x4728('0x0')]('%s%s@xcally.com',_0x4728('0x1'),i),'role':_0x4728('0x1'),'password':'password','internal':0xfa0+i,'type':_0x4728('0x3'),'transport':[_0x4728('0x4'),'ws',_0x4728('0x5')],'disallow':[_0x4728('0x6')],'allow':[_0x4728('0x7')],'defaultuser':util[_0x4728('0x0')]('%s%s','agent',i),'encryption':_0x4728('0x8'),'avpf':'yes','force_avp':_0x4728('0x8'),'icesupport':'yes','dtlsenable':_0x4728('0x8'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x4728('0x9'),'callerid':util[_0x4728('0x0')](_0x4728('0xa'),util[_0x4728('0x0')]('%s%s',_0x4728('0x1'),i),0xfa0+i)});}db[_0x4728('0xb')][_0x4728('0xc')](users)[_0x4728('0xd')](function(){console[_0x4728('0xe')](_0x4728('0xf'));})[_0x4728('0x10')](function(_0x3de363){console['log'](_0x3de363);});
\ No newline at end of file
+var _0x3518=['%s%s@xcally.com','password','friend','udp','wss','all','ulaw','%s%s','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','util','push','format','agent'];(function(_0x3f88cf,_0xbe4fd9){var _0x5c7a1e=function(_0x126b01){while(--_0x126b01){_0x3f88cf['push'](_0x3f88cf['shift']());}};_0x5c7a1e(++_0xbe4fd9);}(_0x3518,0x1c8));var _0x8351=function(_0x466bc5,_0x3a0f2a){_0x466bc5=_0x466bc5-0x0;var _0x138952=_0x3518[_0x466bc5];return _0x138952;};'use strict';var util=require(_0x8351('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x8351('0x1')]({'name':util[_0x8351('0x2')]('%s%s','agent',i),'fullname':util[_0x8351('0x2')]('%s%s',_0x8351('0x3'),i),'email':util['format'](_0x8351('0x4'),_0x8351('0x3'),i),'role':_0x8351('0x3'),'password':_0x8351('0x5'),'internal':0xfa0+i,'type':_0x8351('0x6'),'transport':[_0x8351('0x7'),'ws',_0x8351('0x8')],'disallow':[_0x8351('0x9')],'allow':[_0x8351('0xa')],'defaultuser':util[_0x8351('0x2')](_0x8351('0xb'),_0x8351('0x3'),i),'encryption':_0x8351('0xc'),'avpf':'yes','force_avp':_0x8351('0xc'),'icesupport':_0x8351('0xc'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x8351('0xd'),'dtlsprivatekey':_0x8351('0xe'),'dtlssetup':'actpass','callerid':util['format'](_0x8351('0xf'),util[_0x8351('0x2')](_0x8351('0xb'),_0x8351('0x3'),i),0xfa0+i)});}db[_0x8351('0x10')][_0x8351('0x11')](users)[_0x8351('0x12')](function(){console[_0x8351('0x13')]('add\x20user');})['catch'](function(_0xf45881){console[_0x8351('0x13')](_0xf45881);});
\ No newline at end of file
index ec2db22..798a97c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3974=['MailQueues','OpenchannelQueues','findAll','Telephones','resourceId','then','map','where','Campaign','format','user:%s','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','admin','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueue','FaxQueues','SmsQueue','MailQueue','WhatsappQueues','IvrCampaigns','agent','voice:inbound','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','SocketIO\x20','disconnect','DISCONNECTED','lodash','util','bluebird','name','Agents','User','role','telephone','type','ivr','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','SmsQueues'];(function(_0x12bdc4,_0x3443aa){var _0x5690be=function(_0x4ad8c9){while(--_0x4ad8c9){_0x12bdc4['push'](_0x12bdc4['shift']());}};_0x5690be(++_0x3443aa);}(_0x3974,0xbc));var _0x4397=function(_0x5e74d1,_0x4a72de){_0x5e74d1=_0x5e74d1-0x0;var _0x2ba4ef=_0x3974[_0x5e74d1];return _0x2ba4ef;};'use strict';var _=require(_0x4397('0x0'));var util=require(_0x4397('0x1'));var BPromise=require(_0x4397('0x2'));var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x4397('0x3')],'include':[{'as':_0x4397('0x4'),'model':db[_0x4397('0x5')],'attributes':['id',_0x4397('0x3'),_0x4397('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x4397('0x3')],'where':{'role':_0x4397('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x4397('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x4397('0x3')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x4397('0x3'),_0x4397('0x8')],'where':{'type':_0x4397('0x9')}};function getAssociatedResources(_0xc78051,_0x4c7790,_0x31c4b3){return db[_0x4397('0xa')][_0x4397('0xb')]({'where':{'name':_0xc78051,'userProfileId':_0x4c7790},'raw':!![]})['then'](function(_0x47e207){if(_0x47e207){if(_0x47e207[_0x4397('0xc')]){switch(_0xc78051){case _0x4397('0xd'):case _0x4397('0xe'):case'FaxQueues':case _0x4397('0xf'):case _0x4397('0x10'):case _0x4397('0x11'):case'WhatsappQueues':return db[_0x31c4b3][_0x4397('0x12')](queryQueues);case _0x4397('0x13'):return db[_0x31c4b3][_0x4397('0x12')](queryTelephones);case'Trunks':return db[_0x31c4b3][_0x4397('0x12')](queryTrunks);case'IvrCampaigns':return db[_0x31c4b3][_0x4397('0x12')](queryCampaigns);}}else{return db['UserProfileResource'][_0x4397('0x12')]({'attributes':[_0x4397('0x14')],'where':{'sectionId':_0x47e207['id']},'raw':!![]})[_0x4397('0x15')](function(_0x1aa61f){if(_0x1aa61f){var _0x172ce2={'where':{'id':_[_0x4397('0x16')](_0x1aa61f,'resourceId')},'raw':!![]};switch(_0x31c4b3){case _0x4397('0x5'):_0x172ce2[_0x4397('0x17')][_0x4397('0x6')]=_0x4397('0x7');break;case _0x4397('0x18'):_0x172ce2[_0x4397('0x17')][_0x4397('0x8')]=_0x4397('0x9');break;}return db[_0x31c4b3][_0x4397('0x12')](_0x172ce2);}else{return[];}});}}else{return[];}})['then'](function(_0x4d3284){return _0x4d3284;});}function joinOrLeaveQueues(_0xff27cd,_0x3a2810,_0x6ebced,_0xaf9b09){_0xff27cd[_0x3a2810](util['format']('%s:queue:%s',_0x6ebced,_0xaf9b09[_0x4397('0x3')]));if(_0xaf9b09[_0x4397('0x4')]){for(var _0x52bf64=0x0;_0x52bf64<_0xaf9b09['Agents']['length'];_0x52bf64+=0x1){_0xff27cd[_0x3a2810](util[_0x4397('0x19')](_0x4397('0x1a'),_0xaf9b09['Agents'][_0x52bf64][_0x4397('0x3')]));}}}function joinOrLeave(_0x3fef2b,_0x53d6d3,_0x2797d2){var _0x4d6de6;if(_0x3fef2b[_0x4397('0x1b')][_0x4397('0x1c')]['id']){db['User']['find']({'attributes':['id','name',_0x4397('0x6'),_0x4397('0x1d')],'where':{'id':_0x3fef2b[_0x4397('0x1b')][_0x4397('0x1c')]['id']},'include':[{'model':db[_0x4397('0x1e')],'as':_0x4397('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x4397('0x20')],'as':_0x4397('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x4397('0x22')],'as':_0x4397('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x4397('0x24')],'as':_0x4397('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x4397('0x26')],'as':_0x4397('0x27'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x4397('0x15')](function(_0x575536){if(_0x575536){_0x4d6de6=_0x575536;_0x3fef2b[_0x53d6d3](util[_0x4397('0x19')](_0x4397('0x1a'),_0x575536['name']));var _0x1e7d56=[];switch(_0x575536[_0x4397('0x6')]){case _0x4397('0x28'):_0x3fef2b[_0x53d6d3]('voice:inbound');_0x3fef2b[_0x53d6d3](_0x4397('0x29'));if(queryQueues[_0x4397('0x2a')](_0x4397('0x2b'))){delete queryQueues['include'];}_0x1e7d56[_0x4397('0x2c')](db['VoiceQueue'][_0x4397('0x12')](queryQueues));_0x1e7d56['push'](db[_0x4397('0x2d')][_0x4397('0x12')](queryQueues));_0x1e7d56[_0x4397('0x2c')](db[_0x4397('0x2e')][_0x4397('0x12')](queryQueues));_0x1e7d56[_0x4397('0x2c')](db['SmsQueue'][_0x4397('0x12')](queryQueues));_0x1e7d56[_0x4397('0x2c')](db['MailQueue']['findAll'](queryQueues));_0x1e7d56['push'](db[_0x4397('0x2f')][_0x4397('0x12')](queryQueues));_0x1e7d56[_0x4397('0x2c')](db[_0x4397('0x30')][_0x4397('0x12')](queryQueues));_0x1e7d56[_0x4397('0x2c')](db[_0x4397('0x5')]['findAll'](queryTelephones));_0x1e7d56['push'](db[_0x4397('0x31')][_0x4397('0x12')](queryTrunks));_0x1e7d56[_0x4397('0x2c')](db[_0x4397('0x18')]['findAll'](queryCampaigns));_0x1e7d56[_0x4397('0x2c')](db[_0x4397('0x5')][_0x4397('0x12')](queryAgents));break;case _0x4397('0x32'):_0x3fef2b[_0x53d6d3]('voice:inbound');_0x3fef2b[_0x53d6d3](_0x4397('0x29'));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources('VoiceQueues',_0x575536[_0x4397('0x1d')],_0x4397('0x33')));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources('ChatQueues',_0x575536['userProfileId'],_0x4397('0x2d')));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources(_0x4397('0x34'),_0x575536[_0x4397('0x1d')],_0x4397('0x2e')));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources('SmsQueues',_0x575536['userProfileId'],_0x4397('0x35')));_0x1e7d56['push'](getAssociatedResources(_0x4397('0x10'),_0x575536[_0x4397('0x1d')],_0x4397('0x36')));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources(_0x4397('0x11'),_0x575536[_0x4397('0x1d')],'OpenchannelQueue'));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources(_0x4397('0x37'),_0x575536['userProfileId'],_0x4397('0x30')));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources(_0x4397('0x13'),_0x575536['userProfileId'],'User'));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources('Trunks',_0x575536[_0x4397('0x1d')],_0x4397('0x31')));_0x1e7d56[_0x4397('0x2c')](getAssociatedResources(_0x4397('0x38'),_0x575536['userProfileId'],_0x4397('0x18')));_0x1e7d56[_0x4397('0x2c')](db[_0x4397('0x5')][_0x4397('0x12')](queryAgents));break;case _0x4397('0x39'):_0x3fef2b[_0x53d6d3](_0x4397('0x3a'));_0x3fef2b[_0x53d6d3]('voice:outbound');_0x1e7d56[_0x4397('0x2c')](_0x575536[_0x4397('0x3b')]({'attributes':['id',_0x4397('0x3')]}));_0x1e7d56['push'](_0x575536[_0x4397('0x3c')]({'attributes':['id',_0x4397('0x3')]}));_0x1e7d56[_0x4397('0x2c')](_0x575536[_0x4397('0x3d')]({'attributes':['id',_0x4397('0x3')]}));_0x1e7d56[_0x4397('0x2c')](_0x575536[_0x4397('0x3e')]({'attributes':['id','name']}));_0x1e7d56[_0x4397('0x2c')](_0x575536[_0x4397('0x3f')]({'attributes':['id',_0x4397('0x3')]}));_0x1e7d56['push'](_0x575536[_0x4397('0x40')]({'attributes':['id',_0x4397('0x3')]}));_0x1e7d56[_0x4397('0x2c')](_0x575536[_0x4397('0x41')]({'attributes':['id',_0x4397('0x3')]}));break;}return BPromise[_0x4397('0x42')](_0x1e7d56);}})[_0x4397('0x15')](function(_0x60bc33){if(_0x60bc33&&_0x60bc33[_0x4397('0x43')]){for(var _0x195d63=0x0;_0x195d63<_0x60bc33['length'];_0x195d63+=0x1){for(var _0x47a3fc=0x0;_0x47a3fc<_0x60bc33[_0x195d63][_0x4397('0x43')];_0x47a3fc+=0x1){switch(_0x195d63){case 0x0:joinOrLeaveQueues(_0x3fef2b,_0x53d6d3,_0x4397('0x44'),_0x60bc33[_0x195d63][_0x47a3fc]);break;case 0x1:joinOrLeaveQueues(_0x3fef2b,_0x53d6d3,_0x4397('0x45'),_0x60bc33[_0x195d63][_0x47a3fc]);break;case 0x2:joinOrLeaveQueues(_0x3fef2b,_0x53d6d3,_0x4397('0x46'),_0x60bc33[_0x195d63][_0x47a3fc]);break;case 0x3:joinOrLeaveQueues(_0x3fef2b,_0x53d6d3,_0x4397('0x47'),_0x60bc33[_0x195d63][_0x47a3fc]);break;case 0x4:joinOrLeaveQueues(_0x3fef2b,_0x53d6d3,_0x4397('0x48'),_0x60bc33[_0x195d63][_0x47a3fc]);break;case 0x5:joinOrLeaveQueues(_0x3fef2b,_0x53d6d3,'openchannel',_0x60bc33[_0x195d63][_0x47a3fc]);break;case 0x6:joinOrLeaveQueues(_0x3fef2b,_0x53d6d3,_0x4397('0x49'),_0x60bc33[_0x195d63][_0x47a3fc]);break;case 0x7:if(_0x4d6de6[_0x4397('0x6')]!=='agent')_0x3fef2b[_0x53d6d3](util['format'](_0x4397('0x4a'),_0x60bc33[_0x195d63][_0x47a3fc][_0x4397('0x3')]));break;case 0x8:if(_0x4d6de6[_0x4397('0x6')]!=='agent')_0x3fef2b[_0x53d6d3](util[_0x4397('0x19')](_0x4397('0x4b'),_0x60bc33[_0x195d63][_0x47a3fc]['name']));break;case 0x9:if(_0x4d6de6[_0x4397('0x6')]!=='agent')_0x3fef2b[_0x53d6d3](util[_0x4397('0x19')]('campaign:%s:%s',_0x60bc33[_0x195d63][_0x47a3fc][_0x4397('0x8')],_0x60bc33[_0x195d63][_0x47a3fc][_0x4397('0x3')]));break;case 0xa:_0x3fef2b[_0x53d6d3](util[_0x4397('0x19')](_0x4397('0x1a'),_0x60bc33[_0x195d63][_0x47a3fc][_0x4397('0x3')]));break;}}}}})[_0x4397('0x15')](function(){if(_0x53d6d3==='leave'){var _0x40e6e9=_[_0x4397('0x16')](_0x4d6de6[_0x4397('0x1f')],'id');return _0x4d6de6[_0x4397('0x4c')](_0x40e6e9)[_0x4397('0x15')](function(){for(var _0x4f6784=0x0;_0x4f6784<_0x40e6e9[_0x4397('0x43')];_0x4f6784+=0x1){_0x2797d2[_0x4397('0x4d')](_0x4397('0x4e'),{'ChatInteractionId':Number(_0x40e6e9[_0x4f6784]),'UserId':Number(_0x4d6de6['id'])});}});}})[_0x4397('0x15')](function(){if(_0x53d6d3===_0x4397('0x4f')){var _0x279304=_[_0x4397('0x16')](_0x4d6de6['MailInteractions'],'id');return _0x4d6de6['removeMailInteractions'](_0x279304)[_0x4397('0x15')](function(){for(var _0x190376=0x0;_0x190376<_0x279304[_0x4397('0x43')];_0x190376+=0x1){_0x2797d2[_0x4397('0x4d')](_0x4397('0x50'),{'MailInteractionId':Number(_0x279304[_0x190376]),'UserId':Number(_0x4d6de6['id'])});}});}})[_0x4397('0x15')](function(){if(_0x53d6d3===_0x4397('0x4f')){var _0x3dbf92=_[_0x4397('0x16')](_0x4d6de6['FaxInteractions'],'id');return _0x4d6de6['removeFaxInteractions'](_0x3dbf92)['then'](function(){for(var _0xa391b4=0x0;_0xa391b4<_0x3dbf92[_0x4397('0x43')];_0xa391b4+=0x1){_0x2797d2[_0x4397('0x4d')](_0x4397('0x51'),{'FaxInteractionId':Number(_0x3dbf92[_0xa391b4]),'UserId':Number(_0x4d6de6['id'])});}});}})[_0x4397('0x15')](function(){if(_0x53d6d3===_0x4397('0x4f')){var _0x493138=_[_0x4397('0x16')](_0x4d6de6['SmsInteractions'],'id');return _0x4d6de6[_0x4397('0x52')](_0x493138)[_0x4397('0x15')](function(){for(var _0x310c2a=0x0;_0x310c2a<_0x493138[_0x4397('0x43')];_0x310c2a+=0x1){_0x2797d2['emit'](_0x4397('0x53'),{'SmsInteractionId':Number(_0x493138[_0x310c2a]),'UserId':Number(_0x4d6de6['id'])});}});}})[_0x4397('0x15')](function(){if(_0x53d6d3===_0x4397('0x4f')){var _0x5ddf8c=_['map'](_0x4d6de6[_0x4397('0x27')],'id');return _0x4d6de6[_0x4397('0x54')](_0x5ddf8c)[_0x4397('0x15')](function(){for(var _0x5e527a=0x0;_0x5e527a<_0x5ddf8c[_0x4397('0x43')];_0x5e527a+=0x1){_0x2797d2[_0x4397('0x4d')](_0x4397('0x55'),{'OpenchannelInteractionId':Number(_0x5ddf8c[_0x5e527a]),'UserId':Number(_0x4d6de6['id'])});}});}})[_0x4397('0x15')](function(){if(_0x53d6d3==='leave'){var _0x553e8a=_[_0x4397('0x16')](_0x4d6de6[_0x4397('0x56')],'id');return _0x4d6de6[_0x4397('0x57')](_0x553e8a)[_0x4397('0x15')](function(){for(var _0x49ee88=0x0;_0x49ee88<_0x553e8a[_0x4397('0x43')];_0x49ee88+=0x1){_0x2797d2['emit'](_0x4397('0x58'),{'WhatsappInteractionId':Number(_0x553e8a[_0x49ee88]),'UserId':Number(_0x4d6de6['id'])});}});}})[_0x4397('0x59')](function(_0x294385){_0x3fef2b[_0x4397('0x5a')](_0x294385);});}}function onDisconnect(_0x292756,_0x2474ca){joinOrLeave(_0x292756,_0x4397('0x4f'),_0x2474ca);}function onConnect(_0x34a1de){joinOrLeave(_0x34a1de,_0x4397('0x5b'));}exports[_0x4397('0x5c')]=function(_0x5496b0){_0x5496b0['on'](_0x4397('0x5d'),function(_0x429c33){_0x429c33[_0x4397('0x5e')](0x0);_0x429c33[_0x4397('0x5f')]=_0x429c33[_0x4397('0x60')]['connection'][_0x4397('0x61')]+':'+_0x429c33[_0x4397('0x60')]['connection'][_0x4397('0x62')];_0x429c33['connectedAt']=new Date();_0x429c33['log']=function(_0x410f26){console[_0x4397('0x5a')](_0x4397('0x63')+_0x429c33['nsp'][_0x4397('0x3')]+'['+_0x429c33[_0x4397('0x5f')]+']',_0x410f26);};_0x429c33['on'](_0x4397('0x64'),function(){onDisconnect(_0x429c33,_0x5496b0);_0x429c33[_0x4397('0x5a')](_0x4397('0x65'));});onConnect(_0x429c33);_0x429c33[_0x4397('0x5a')]('CONNECTED');});};
\ No newline at end of file
+var _0x1691=['user_has_whatsapp_interactions:remove','log','join','default','connection','setMaxListeners','address','request','remotePort','connectedAt','SocketIO\x20','disconnect','CONNECTED','lodash','util','../mysqldb','./environment','name','Agents','User','role','agent','telephone','type','UserProfileSection','findOne','autoAssociation','ChatQueues','SmsQueues','MailQueues','Telephones','Trunks','findAll','UserProfileResource','resourceId','map','where','Campaign','%s:queue:%s','length','format','user:%s','query','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','then','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','VoiceQueues','VoiceQueue','FaxQueues','userProfileId','OpenchannelQueues','WhatsappQueues','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','all','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions'];(function(_0x56c936,_0x4042a9){var _0x45c055=function(_0x958cc5){while(--_0x958cc5){_0x56c936['push'](_0x56c936['shift']());}};_0x45c055(++_0x4042a9);}(_0x1691,0x1ed));var _0x1169=function(_0x103c64,_0x148b2d){_0x103c64=_0x103c64-0x0;var _0x23607c=_0x1691[_0x103c64];return _0x23607c;};'use strict';var _=require(_0x1169('0x0'));var util=require(_0x1169('0x1'));var BPromise=require('bluebird');var db=require(_0x1169('0x2'))['db'];var config=require(_0x1169('0x3'));var queryQueues={'attributes':['id',_0x1169('0x4')],'include':[{'as':_0x1169('0x5'),'model':db[_0x1169('0x6')],'attributes':['id',_0x1169('0x4'),_0x1169('0x7')],'raw':!![],'where':{'role':_0x1169('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x1169('0x9')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x1169('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x1169('0x4'),_0x1169('0xa')],'where':{'type':'ivr'}};function getAssociatedResources(_0x216548,_0x20440a,_0xe3a0bc){return db[_0x1169('0xb')][_0x1169('0xc')]({'where':{'name':_0x216548,'userProfileId':_0x20440a},'raw':!![]})['then'](function(_0x1a4400){if(_0x1a4400){if(_0x1a4400[_0x1169('0xd')]){switch(_0x216548){case'VoiceQueues':case _0x1169('0xe'):case'FaxQueues':case _0x1169('0xf'):case _0x1169('0x10'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0xe3a0bc]['findAll'](queryQueues);case _0x1169('0x11'):return db[_0xe3a0bc]['findAll'](queryTelephones);case _0x1169('0x12'):return db[_0xe3a0bc][_0x1169('0x13')](queryTrunks);case'IvrCampaigns':return db[_0xe3a0bc][_0x1169('0x13')](queryCampaigns);}}else{return db[_0x1169('0x14')][_0x1169('0x13')]({'attributes':[_0x1169('0x15')],'where':{'sectionId':_0x1a4400['id']},'raw':!![]})['then'](function(_0x4c4b90){if(_0x4c4b90){var _0x34462b={'where':{'id':_[_0x1169('0x16')](_0x4c4b90,_0x1169('0x15'))},'raw':!![]};switch(_0xe3a0bc){case _0x1169('0x6'):_0x34462b[_0x1169('0x17')][_0x1169('0x7')]=_0x1169('0x9');break;case _0x1169('0x18'):_0x34462b['where'][_0x1169('0xa')]='ivr';break;}return db[_0xe3a0bc][_0x1169('0x13')](_0x34462b);}else{return[];}});}}else{return[];}})['then'](function(_0x4d608a){return _0x4d608a;});}function joinOrLeaveQueues(_0x9c68cb,_0x54f260,_0x539535,_0x35f0be){_0x9c68cb[_0x54f260](util['format'](_0x1169('0x19'),_0x539535,_0x35f0be[_0x1169('0x4')]));if(_0x35f0be[_0x1169('0x5')]){for(var _0x1b6af6=0x0;_0x1b6af6<_0x35f0be[_0x1169('0x5')][_0x1169('0x1a')];_0x1b6af6+=0x1){_0x9c68cb[_0x54f260](util[_0x1169('0x1b')](_0x1169('0x1c'),_0x35f0be['Agents'][_0x1b6af6][_0x1169('0x4')]));}}}function joinOrLeave(_0x157691,_0x301646,_0x277f69){var _0x21e826;if(_0x157691['handshake']['query']['id']){db[_0x1169('0x6')]['find']({'attributes':['id',_0x1169('0x4'),_0x1169('0x7'),'userProfileId'],'where':{'id':_0x157691['handshake'][_0x1169('0x1d')]['id']},'include':[{'model':db[_0x1169('0x1e')],'as':_0x1169('0x1f'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x1169('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x1169('0x21')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x1169('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x1169('0x23')],'as':_0x1169('0x24'),'attributes':['id'],'raw':!![]}]})[_0x1169('0x25')](function(_0x40ad8b){if(_0x40ad8b){_0x21e826=_0x40ad8b;_0x157691[_0x301646](util[_0x1169('0x1b')](_0x1169('0x1c'),_0x40ad8b['name']));var _0x4dc1b2=[];switch(_0x40ad8b[_0x1169('0x7')]){case _0x1169('0x26'):_0x157691[_0x301646](_0x1169('0x27'));_0x157691[_0x301646](_0x1169('0x28'));if(queryQueues[_0x1169('0x29')](_0x1169('0x2a'))){delete queryQueues[_0x1169('0x2a')];}_0x4dc1b2['push'](db['VoiceQueue']['findAll'](queryQueues));_0x4dc1b2['push'](db['ChatQueue'][_0x1169('0x13')](queryQueues));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x2c')]['findAll'](queryQueues));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x2d')][_0x1169('0x13')](queryQueues));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x2e')][_0x1169('0x13')](queryQueues));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x2f')][_0x1169('0x13')](queryQueues));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x30')]['findAll'](queryQueues));_0x4dc1b2['push'](db[_0x1169('0x6')]['findAll'](queryTelephones));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x31')][_0x1169('0x13')](queryTrunks));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x18')]['findAll'](queryCampaigns));_0x4dc1b2[_0x1169('0x2b')](db['User'][_0x1169('0x13')](queryAgents));break;case'user':_0x157691[_0x301646](_0x1169('0x27'));_0x157691[_0x301646](_0x1169('0x28'));_0x4dc1b2[_0x1169('0x2b')](getAssociatedResources(_0x1169('0x32'),_0x40ad8b['userProfileId'],_0x1169('0x33')));_0x4dc1b2[_0x1169('0x2b')](getAssociatedResources(_0x1169('0xe'),_0x40ad8b['userProfileId'],'ChatQueue'));_0x4dc1b2[_0x1169('0x2b')](getAssociatedResources(_0x1169('0x34'),_0x40ad8b[_0x1169('0x35')],_0x1169('0x2c')));_0x4dc1b2[_0x1169('0x2b')](getAssociatedResources(_0x1169('0xf'),_0x40ad8b['userProfileId'],_0x1169('0x2d')));_0x4dc1b2['push'](getAssociatedResources(_0x1169('0x10'),_0x40ad8b[_0x1169('0x35')],'MailQueue'));_0x4dc1b2[_0x1169('0x2b')](getAssociatedResources(_0x1169('0x36'),_0x40ad8b[_0x1169('0x35')],_0x1169('0x2f')));_0x4dc1b2['push'](getAssociatedResources(_0x1169('0x37'),_0x40ad8b[_0x1169('0x35')],'WhatsappQueue'));_0x4dc1b2['push'](getAssociatedResources(_0x1169('0x11'),_0x40ad8b[_0x1169('0x35')],'User'));_0x4dc1b2['push'](getAssociatedResources('Trunks',_0x40ad8b['userProfileId'],_0x1169('0x31')));_0x4dc1b2[_0x1169('0x2b')](getAssociatedResources(_0x1169('0x38'),_0x40ad8b[_0x1169('0x35')],_0x1169('0x18')));_0x4dc1b2[_0x1169('0x2b')](db[_0x1169('0x6')][_0x1169('0x13')](queryAgents));break;case _0x1169('0x8'):_0x157691[_0x301646](_0x1169('0x27'));_0x157691[_0x301646](_0x1169('0x28'));_0x4dc1b2[_0x1169('0x2b')](_0x40ad8b[_0x1169('0x39')]({'attributes':['id','name']}));_0x4dc1b2[_0x1169('0x2b')](_0x40ad8b[_0x1169('0x3a')]({'attributes':['id',_0x1169('0x4')]}));_0x4dc1b2[_0x1169('0x2b')](_0x40ad8b[_0x1169('0x3b')]({'attributes':['id','name']}));_0x4dc1b2['push'](_0x40ad8b[_0x1169('0x3c')]({'attributes':['id',_0x1169('0x4')]}));_0x4dc1b2[_0x1169('0x2b')](_0x40ad8b[_0x1169('0x3d')]({'attributes':['id',_0x1169('0x4')]}));_0x4dc1b2['push'](_0x40ad8b['getOpenchannelQueues']({'attributes':['id',_0x1169('0x4')]}));_0x4dc1b2['push'](_0x40ad8b['getWhatsappQueues']({'attributes':['id',_0x1169('0x4')]}));break;}return BPromise[_0x1169('0x3e')](_0x4dc1b2);}})['then'](function(_0x35fa61){if(_0x35fa61&&_0x35fa61['length']){for(var _0x154993=0x0;_0x154993<_0x35fa61[_0x1169('0x1a')];_0x154993+=0x1){for(var _0x572430=0x0;_0x572430<_0x35fa61[_0x154993][_0x1169('0x1a')];_0x572430+=0x1){switch(_0x154993){case 0x0:joinOrLeaveQueues(_0x157691,_0x301646,_0x1169('0x3f'),_0x35fa61[_0x154993][_0x572430]);break;case 0x1:joinOrLeaveQueues(_0x157691,_0x301646,_0x1169('0x40'),_0x35fa61[_0x154993][_0x572430]);break;case 0x2:joinOrLeaveQueues(_0x157691,_0x301646,'fax',_0x35fa61[_0x154993][_0x572430]);break;case 0x3:joinOrLeaveQueues(_0x157691,_0x301646,_0x1169('0x41'),_0x35fa61[_0x154993][_0x572430]);break;case 0x4:joinOrLeaveQueues(_0x157691,_0x301646,_0x1169('0x42'),_0x35fa61[_0x154993][_0x572430]);break;case 0x5:joinOrLeaveQueues(_0x157691,_0x301646,_0x1169('0x43'),_0x35fa61[_0x154993][_0x572430]);break;case 0x6:joinOrLeaveQueues(_0x157691,_0x301646,_0x1169('0x44'),_0x35fa61[_0x154993][_0x572430]);break;case 0x7:if(_0x21e826['role']!==_0x1169('0x8'))_0x157691[_0x301646](util[_0x1169('0x1b')](_0x1169('0x45'),_0x35fa61[_0x154993][_0x572430][_0x1169('0x4')]));break;case 0x8:if(_0x21e826[_0x1169('0x7')]!==_0x1169('0x8'))_0x157691[_0x301646](util[_0x1169('0x1b')](_0x1169('0x46'),_0x35fa61[_0x154993][_0x572430][_0x1169('0x4')]));break;case 0x9:if(_0x21e826[_0x1169('0x7')]!==_0x1169('0x8'))_0x157691[_0x301646](util['format'](_0x1169('0x47'),_0x35fa61[_0x154993][_0x572430][_0x1169('0xa')],_0x35fa61[_0x154993][_0x572430]['name']));break;case 0xa:_0x157691[_0x301646](util[_0x1169('0x1b')](_0x1169('0x1c'),_0x35fa61[_0x154993][_0x572430][_0x1169('0x4')]));break;}}}}})[_0x1169('0x25')](function(){if(_0x301646===_0x1169('0x48')){var _0x54164d=_[_0x1169('0x16')](_0x21e826[_0x1169('0x1f')],'id');return _0x21e826[_0x1169('0x49')](_0x54164d)[_0x1169('0x25')](function(){for(var _0x32ab01=0x0;_0x32ab01<_0x54164d['length'];_0x32ab01+=0x1){_0x277f69[_0x1169('0x4a')](_0x1169('0x4b'),{'ChatInteractionId':Number(_0x54164d[_0x32ab01]),'UserId':Number(_0x21e826['id'])});}});}})[_0x1169('0x25')](function(){if(_0x301646===_0x1169('0x48')){var _0x20ff11=_[_0x1169('0x16')](_0x21e826[_0x1169('0x20')],'id');return _0x21e826[_0x1169('0x4c')](_0x20ff11)[_0x1169('0x25')](function(){for(var _0xe6897a=0x0;_0xe6897a<_0x20ff11['length'];_0xe6897a+=0x1){_0x277f69['emit'](_0x1169('0x4d'),{'MailInteractionId':Number(_0x20ff11[_0xe6897a]),'UserId':Number(_0x21e826['id'])});}});}})[_0x1169('0x25')](function(){if(_0x301646===_0x1169('0x48')){var _0x2ddc26=_[_0x1169('0x16')](_0x21e826['FaxInteractions'],'id');return _0x21e826[_0x1169('0x4e')](_0x2ddc26)[_0x1169('0x25')](function(){for(var _0xa2b703=0x0;_0xa2b703<_0x2ddc26[_0x1169('0x1a')];_0xa2b703+=0x1){_0x277f69[_0x1169('0x4a')](_0x1169('0x4f'),{'FaxInteractionId':Number(_0x2ddc26[_0xa2b703]),'UserId':Number(_0x21e826['id'])});}});}})[_0x1169('0x25')](function(){if(_0x301646===_0x1169('0x48')){var _0x5d9da2=_[_0x1169('0x16')](_0x21e826[_0x1169('0x50')],'id');return _0x21e826['removeSmsInteractions'](_0x5d9da2)['then'](function(){for(var _0x881854=0x0;_0x881854<_0x5d9da2[_0x1169('0x1a')];_0x881854+=0x1){_0x277f69[_0x1169('0x4a')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x5d9da2[_0x881854]),'UserId':Number(_0x21e826['id'])});}});}})[_0x1169('0x25')](function(){if(_0x301646===_0x1169('0x48')){var _0x4f6932=_[_0x1169('0x16')](_0x21e826[_0x1169('0x22')],'id');return _0x21e826[_0x1169('0x51')](_0x4f6932)[_0x1169('0x25')](function(){for(var _0x220ab9=0x0;_0x220ab9<_0x4f6932[_0x1169('0x1a')];_0x220ab9+=0x1){_0x277f69[_0x1169('0x4a')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4f6932[_0x220ab9]),'UserId':Number(_0x21e826['id'])});}});}})['then'](function(){if(_0x301646===_0x1169('0x48')){var _0x2ebe38=_[_0x1169('0x16')](_0x21e826[_0x1169('0x24')],'id');return _0x21e826[_0x1169('0x52')](_0x2ebe38)[_0x1169('0x25')](function(){for(var _0x2e2c14=0x0;_0x2e2c14<_0x2ebe38[_0x1169('0x1a')];_0x2e2c14+=0x1){_0x277f69['emit'](_0x1169('0x53'),{'WhatsappInteractionId':Number(_0x2ebe38[_0x2e2c14]),'UserId':Number(_0x21e826['id'])});}});}})['catch'](function(_0x224cac){_0x157691[_0x1169('0x54')](_0x224cac);});}}function onDisconnect(_0x429b80,_0x5da8ef){joinOrLeave(_0x429b80,'leave',_0x5da8ef);}function onConnect(_0x2cf9b7){joinOrLeave(_0x2cf9b7,_0x1169('0x55'));}exports[_0x1169('0x56')]=function(_0x44b33f){_0x44b33f['on'](_0x1169('0x57'),function(_0x9912e6){_0x9912e6[_0x1169('0x58')](0x0);_0x9912e6[_0x1169('0x59')]=_0x9912e6[_0x1169('0x5a')][_0x1169('0x57')]['remoteAddress']+':'+_0x9912e6[_0x1169('0x5a')][_0x1169('0x57')][_0x1169('0x5b')];_0x9912e6[_0x1169('0x5c')]=new Date();_0x9912e6['log']=function(_0x5726da){console[_0x1169('0x54')](_0x1169('0x5d')+_0x9912e6['nsp'][_0x1169('0x4')]+'['+_0x9912e6[_0x1169('0x59')]+']',_0x5726da);};_0x9912e6['on'](_0x1169('0x5e'),function(){onDisconnect(_0x9912e6,_0x44b33f);_0x9912e6['log']('DISCONNECTED');});onConnect(_0x9912e6);_0x9912e6[_0x1169('0x54')](_0x1169('0x5f'));});};
\ No newline at end of file
index 25ead4c..f59d15c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ab3=['../../mysqldb','jayson/promise','triggers','client','http','ChatInteraction','afterCreate','Chat','closedinteraction','ChatMessage','newmessage','Sms','newinteraction','afterUpdate','SmsMessage','Whatsapp','Fax','FaxInteraction','MailInteraction','Mail','MailMessage','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','Trigger,\x20%s','error','code','catch','get','motionChannel','event','direction','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SELECT','contact','UserId','interface','SIP/%s','name','agent','outgoingmessage','opened','sequelize','Sequelize','AfterCreate','closed','changed','substatus','query','format','AfterUpdate','find','fullname','email','internal','default','hasOwnProperty','model','callback','channel','toLowerCase','condition'];(function(_0x24354f,_0x4a77ba){var _0xeef777=function(_0x547377){while(--_0x547377){_0x24354f['push'](_0x24354f['shift']());}};_0xeef777(++_0x4a77ba);}(_0x6ab3,0xcc));var _0x36ab=function(_0x30d87a,_0xf3a07f){_0x30d87a=_0x30d87a-0x0;var _0x48f64b=_0x6ab3[_0x30d87a];return _0x48f64b;};'use strict';var util=require('util');var db=require(_0x36ab('0x0'))['db'];var jayson=require(_0x36ab('0x1'));var logger=require('../logger')(_0x36ab('0x2'));var client=jayson[_0x36ab('0x3')][_0x36ab('0x4')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x36ab('0x5'),'event':_0x36ab('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x36ab('0x7'),'model':'ChatInteraction','event':'afterUpdate','condition':_0x36ab('0x8'),'callback':afterUpdate},{'channel':'Chat','model':_0x36ab('0x9'),'event':'afterCreate','condition':_0x36ab('0xa'),'callback':afterCreateMessage},{'channel':_0x36ab('0xb'),'model':'SmsInteraction','event':_0x36ab('0x6'),'condition':_0x36ab('0xc'),'callback':afterCreate},{'channel':'Sms','model':'SmsInteraction','event':_0x36ab('0xd'),'condition':_0x36ab('0x8'),'callback':afterUpdate},{'channel':_0x36ab('0xb'),'model':_0x36ab('0xe'),'event':_0x36ab('0x6'),'condition':_0x36ab('0xa'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0x36ab('0x6'),'condition':_0x36ab('0xc'),'callback':afterCreate},{'channel':_0x36ab('0xf'),'model':'WhatsappInteraction','event':_0x36ab('0xd'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x36ab('0xf'),'model':'WhatsappMessage','event':_0x36ab('0x6'),'condition':_0x36ab('0xa'),'callback':afterCreateMessage},{'channel':_0x36ab('0x10'),'model':_0x36ab('0x11'),'event':_0x36ab('0x6'),'condition':_0x36ab('0xc'),'callback':afterCreate},{'channel':_0x36ab('0x10'),'model':'FaxInteraction','event':_0x36ab('0xd'),'condition':_0x36ab('0x8'),'callback':afterUpdate},{'channel':_0x36ab('0x10'),'model':'FaxMessage','event':_0x36ab('0x6'),'condition':_0x36ab('0xa'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x36ab('0x12'),'event':_0x36ab('0x6'),'condition':_0x36ab('0xc'),'callback':afterCreate},{'channel':_0x36ab('0x13'),'model':_0x36ab('0x12'),'event':_0x36ab('0xd'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x36ab('0x13'),'model':_0x36ab('0x14'),'event':_0x36ab('0x6'),'condition':_0x36ab('0xa'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x36ab('0x15'),'event':_0x36ab('0x6'),'condition':_0x36ab('0xc'),'callback':afterCreate},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0x36ab('0xd'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Openchannel','model':_0x36ab('0x16'),'event':_0x36ab('0x6'),'condition':_0x36ab('0xa'),'callback':afterCreateMessage}];function request(_0xd23ebf){return client[_0x36ab('0x17')](_0x36ab('0x18'),_0xd23ebf)[_0x36ab('0x19')](function(_0xd0829a){logger['info'](_0x36ab('0x1a'),_0x36ab('0x18'),_0xd0829a);if(_0xd0829a[_0x36ab('0x1b')]){if(_0xd0829a[_0x36ab('0x1b')][_0x36ab('0x1c')]===0x1f4){logger[_0x36ab('0x1b')](_0x36ab('0x1a'),_0x36ab('0x18'),_0xd0829a[_0x36ab('0x1b')]);}}})[_0x36ab('0x1d')](function(_0x214c52){logger[_0x36ab('0x1b')](_0x36ab('0x1a'),'EventManager',_0x214c52);});}function afterCreateMessage(_0x2ab43c){return function(_0x52ac71){_0x52ac71=_0x52ac71[_0x36ab('0x1e')]({'plain':!![]});_0x52ac71['channel']=_0x2ab43c;_0x52ac71[_0x36ab('0x1f')]=_0x2ab43c;_0x52ac71[_0x36ab('0x20')]=_0x52ac71[_0x36ab('0x21')];Promise[_0x36ab('0x22')]()['then'](function(){if(typeof _0x52ac71[_0x36ab('0x23')]===_0x36ab('0x24'))return null;var _0x4373cf=_0x36ab('0x25')+_0x52ac71[_0x36ab('0x23')];return db['sequelize']['query'](_0x4373cf,{'type':db['Sequelize'][_0x36ab('0x26')][_0x36ab('0x27')],'raw':!![]});})['then'](function(_0x68e9a){if(_0x68e9a){_0x52ac71[_0x36ab('0x28')]=_0x68e9a[0x0];}if(typeof _0x52ac71[_0x36ab('0x29')]===_0x36ab('0x24'))return;return getAgent(_0x52ac71['UserId']);})[_0x36ab('0x19')](function(_0x284d96){if(_0x284d96){_0x52ac71[_0x36ab('0x2a')]=util['format'](_0x36ab('0x2b'),_0x284d96[_0x36ab('0x2c')]);_0x52ac71[_0x36ab('0x2d')]=_0x284d96;_0x52ac71['channel']=_0x2ab43c;return request({'event':'incomingmessage','message':_0x52ac71});}else{return request({'event':_0x36ab('0x2e'),'message':_0x52ac71});}})[_0x36ab('0x1d')](function(_0x2ff0f3){logger['error'](_0x36ab('0x1a'),'AfterCreateMessage',_0x2ff0f3);});};}function afterCreate(_0x495195,_0x4b2a69){return function(_0x1604e0){_0x1604e0=_0x1604e0['get']({'plain':!![]});_0x1604e0['channel']=_0x495195;_0x1604e0[_0x36ab('0x1f')]=_0x495195;_0x1604e0['event']=_0x36ab('0x2f');Promise['resolve']()['then'](function(){var _0x25f414=_0x36ab('0x25')+_0x1604e0[_0x36ab('0x23')];return db[_0x36ab('0x30')]['query'](_0x25f414,{'type':db[_0x36ab('0x31')]['QueryTypes']['SELECT'],'raw':!![]});})['then'](function(_0x486ffe){if(_0x486ffe){_0x1604e0['contact']=_0x486ffe[0x0];}if(typeof _0x1604e0[_0x36ab('0x29')]===_0x36ab('0x24'))return;return getAgent(_0x1604e0[_0x36ab('0x29')]);})[_0x36ab('0x19')](function(_0x3922aa){if(_0x3922aa){_0x1604e0[_0x36ab('0x2a')]=util['format'](_0x36ab('0x2b'),_0x3922aa[_0x36ab('0x2c')]);_0x1604e0[_0x36ab('0x2d')]=_0x3922aa;}return request({'event':_0x4b2a69,'message':_0x1604e0});})[_0x36ab('0x1d')](function(_0x540929){logger[_0x36ab('0x1b')]('Trigger,\x20%s',_0x36ab('0x32'),_0x540929);});};}function afterUpdate(_0x5afeff){return function(_0x2811d4){var _0x30b33b=_0x2811d4['changed']('closed')&&_0x2811d4[_0x36ab('0x33')];var _0x1a741a=_0x2811d4[_0x36ab('0x34')]('substatus');if(_0x30b33b||_0x1a741a){var _0x2b8854=_0x30b33b?'closedinteraction':_0x36ab('0x35');var _0x3d0b4c=_0x2811d4[_0x36ab('0x1e')]({'plain':!![]});_0x3d0b4c['channel']=_0x5afeff;_0x3d0b4c['motionChannel']=_0x5afeff;_0x3d0b4c[_0x36ab('0x20')]=_0x30b33b?_0x36ab('0x33'):_0x36ab('0x35');var _0x4f9356='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3d0b4c[_0x36ab('0x23')];return db[_0x36ab('0x30')][_0x36ab('0x36')](_0x4f9356,{'type':db['Sequelize'][_0x36ab('0x26')]['SELECT'],'raw':!![]})[_0x36ab('0x19')](function(_0x5a771c){if(_0x5a771c){_0x3d0b4c[_0x36ab('0x28')]=_0x5a771c[0x0];}if(typeof _0x3d0b4c[_0x36ab('0x29')]==='undefined')return;return getAgent(_0x3d0b4c[_0x36ab('0x29')]);})[_0x36ab('0x19')](function(_0x582b25){if(_0x582b25){_0x3d0b4c[_0x36ab('0x2a')]=util[_0x36ab('0x37')](_0x36ab('0x2b'),_0x582b25[_0x36ab('0x2c')]);_0x3d0b4c[_0x36ab('0x2d')]=_0x582b25;}return request({'event':_0x2b8854,'message':_0x3d0b4c});})['catch'](function(_0x416d5d){logger[_0x36ab('0x1b')](_0x36ab('0x1a'),_0x36ab('0x38'),_0x416d5d);});}};}function getAgent(_0xdcd583){return db['User'][_0x36ab('0x39')]({'where':{'id':_0xdcd583},'attributes':['id',_0x36ab('0x2c'),_0x36ab('0x3a'),_0x36ab('0x3b'),_0x36ab('0x3c')],'raw':!![]})[_0x36ab('0x19')](function(_0x162e9b){return _0x162e9b;});}exports[_0x36ab('0x3d')]=function(){for(var _0x4e5f32=0x0;_0x4e5f32<triggers['length'];_0x4e5f32+=0x1){if(db[_0x36ab('0x3e')](triggers[_0x4e5f32][_0x36ab('0x3f')])){db[triggers[_0x4e5f32][_0x36ab('0x3f')]]['hook'](triggers[_0x4e5f32]['event'],triggers[_0x4e5f32][_0x36ab('0x40')](triggers[_0x4e5f32][_0x36ab('0x41')][_0x36ab('0x42')](),triggers[_0x4e5f32][_0x36ab('0x43')]));}}};
\ No newline at end of file
+var _0x0dc6=['info','EventManager','error','code','Trigger,\x20%s','get','event','direction','ContactId','undefined','sequelize','query','then','UserId','interface','SIP/%s','name','agent','incomingmessage','outgoingmessage','AfterCreateMessage','channel','motionChannel','opened','resolve','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','contact','format','catch','AfterCreate','changed','closed','substatus','QueryTypes','SELECT','AfterUpdate','User','find','email','default','model','toLowerCase','condition','../../mysqldb','jayson/promise','../logger','client','http','ChatInteraction','newinteraction','Chat','ChatMessage','afterCreate','newmessage','SmsInteraction','Sms','closedinteraction','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','afterUpdate','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage'];(function(_0x5992d2,_0x2b40db){var _0x5a0ddb=function(_0x4ad6f7){while(--_0x4ad6f7){_0x5992d2['push'](_0x5992d2['shift']());}};_0x5a0ddb(++_0x2b40db);}(_0x0dc6,0x70));var _0x60dc=function(_0x2d7836,_0x5a5412){_0x2d7836=_0x2d7836-0x0;var _0x491179=_0x0dc6[_0x2d7836];return _0x491179;};'use strict';var util=require('util');var db=require(_0x60dc('0x0'))['db'];var jayson=require(_0x60dc('0x1'));var logger=require(_0x60dc('0x2'))('triggers');var client=jayson[_0x60dc('0x3')][_0x60dc('0x4')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x60dc('0x5'),'event':'afterCreate','condition':_0x60dc('0x6'),'callback':afterCreate},{'channel':_0x60dc('0x7'),'model':_0x60dc('0x5'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':'Chat','model':_0x60dc('0x8'),'event':_0x60dc('0x9'),'condition':_0x60dc('0xa'),'callback':afterCreateMessage},{'channel':'Sms','model':_0x60dc('0xb'),'event':_0x60dc('0x9'),'condition':_0x60dc('0x6'),'callback':afterCreate},{'channel':_0x60dc('0xc'),'model':'SmsInteraction','event':'afterUpdate','condition':_0x60dc('0xd'),'callback':afterUpdate},{'channel':_0x60dc('0xc'),'model':'SmsMessage','event':_0x60dc('0x9'),'condition':_0x60dc('0xa'),'callback':afterCreateMessage},{'channel':_0x60dc('0xe'),'model':_0x60dc('0xf'),'event':'afterCreate','condition':_0x60dc('0x6'),'callback':afterCreate},{'channel':_0x60dc('0xe'),'model':_0x60dc('0xf'),'event':'afterUpdate','condition':_0x60dc('0xd'),'callback':afterUpdate},{'channel':_0x60dc('0xe'),'model':_0x60dc('0x10'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x60dc('0x11'),'model':_0x60dc('0x12'),'event':'afterCreate','condition':_0x60dc('0x6'),'callback':afterCreate},{'channel':_0x60dc('0x11'),'model':_0x60dc('0x12'),'event':'afterUpdate','condition':_0x60dc('0xd'),'callback':afterUpdate},{'channel':_0x60dc('0x11'),'model':'FaxMessage','event':_0x60dc('0x9'),'condition':_0x60dc('0xa'),'callback':afterCreateMessage},{'channel':_0x60dc('0x13'),'model':_0x60dc('0x14'),'event':_0x60dc('0x9'),'condition':_0x60dc('0x6'),'callback':afterCreate},{'channel':'Mail','model':_0x60dc('0x14'),'event':_0x60dc('0x15'),'condition':_0x60dc('0xd'),'callback':afterUpdate},{'channel':'Mail','model':_0x60dc('0x16'),'event':_0x60dc('0x9'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x60dc('0x17'),'model':_0x60dc('0x18'),'event':_0x60dc('0x9'),'condition':_0x60dc('0x6'),'callback':afterCreate},{'channel':'Openchannel','model':_0x60dc('0x18'),'event':_0x60dc('0x15'),'condition':_0x60dc('0xd'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x60dc('0x19'),'event':_0x60dc('0x9'),'condition':_0x60dc('0xa'),'callback':afterCreateMessage}];function request(_0x5825c5){return client['request']('EventManager',_0x5825c5)['then'](function(_0x319355){logger[_0x60dc('0x1a')]('Trigger,\x20%s',_0x60dc('0x1b'),_0x319355);if(_0x319355['error']){if(_0x319355[_0x60dc('0x1c')][_0x60dc('0x1d')]===0x1f4){logger[_0x60dc('0x1c')](_0x60dc('0x1e'),_0x60dc('0x1b'),_0x319355[_0x60dc('0x1c')]);}}})['catch'](function(_0x58963f){logger[_0x60dc('0x1c')](_0x60dc('0x1e'),_0x60dc('0x1b'),_0x58963f);});}function afterCreateMessage(_0x5b8142){return function(_0x1e3e98){_0x1e3e98=_0x1e3e98[_0x60dc('0x1f')]({'plain':!![]});_0x1e3e98['channel']=_0x5b8142;_0x1e3e98['motionChannel']=_0x5b8142;_0x1e3e98[_0x60dc('0x20')]=_0x1e3e98[_0x60dc('0x21')];Promise['resolve']()['then'](function(){if(typeof _0x1e3e98[_0x60dc('0x22')]===_0x60dc('0x23'))return null;var _0x10d911='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1e3e98[_0x60dc('0x22')];return db[_0x60dc('0x24')][_0x60dc('0x25')](_0x10d911,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]});})[_0x60dc('0x26')](function(_0x20d557){if(_0x20d557){_0x1e3e98['contact']=_0x20d557[0x0];}if(typeof _0x1e3e98[_0x60dc('0x27')]===_0x60dc('0x23'))return;return getAgent(_0x1e3e98[_0x60dc('0x27')]);})[_0x60dc('0x26')](function(_0x1af375){if(_0x1af375){_0x1e3e98[_0x60dc('0x28')]=util['format'](_0x60dc('0x29'),_0x1af375[_0x60dc('0x2a')]);_0x1e3e98[_0x60dc('0x2b')]=_0x1af375;_0x1e3e98['channel']=_0x5b8142;return request({'event':_0x60dc('0x2c'),'message':_0x1e3e98});}else{return request({'event':_0x60dc('0x2d'),'message':_0x1e3e98});}})['catch'](function(_0x3d80bb){logger[_0x60dc('0x1c')]('Trigger,\x20%s',_0x60dc('0x2e'),_0x3d80bb);});};}function afterCreate(_0xb7da65,_0x110fb2){return function(_0x57dffc){_0x57dffc=_0x57dffc['get']({'plain':!![]});_0x57dffc[_0x60dc('0x2f')]=_0xb7da65;_0x57dffc[_0x60dc('0x30')]=_0xb7da65;_0x57dffc[_0x60dc('0x20')]=_0x60dc('0x31');Promise[_0x60dc('0x32')]()[_0x60dc('0x26')](function(){var _0x13dcac=_0x60dc('0x33')+_0x57dffc[_0x60dc('0x22')];return db[_0x60dc('0x24')]['query'](_0x13dcac,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]});})[_0x60dc('0x26')](function(_0x3196e6){if(_0x3196e6){_0x57dffc[_0x60dc('0x34')]=_0x3196e6[0x0];}if(typeof _0x57dffc['UserId']===_0x60dc('0x23'))return;return getAgent(_0x57dffc['UserId']);})['then'](function(_0x5614ff){if(_0x5614ff){_0x57dffc['interface']=util[_0x60dc('0x35')]('SIP/%s',_0x5614ff[_0x60dc('0x2a')]);_0x57dffc['agent']=_0x5614ff;}return request({'event':_0x110fb2,'message':_0x57dffc});})[_0x60dc('0x36')](function(_0x5b5568){logger['error'](_0x60dc('0x1e'),_0x60dc('0x37'),_0x5b5568);});};}function afterUpdate(_0x38c978){return function(_0x1162e5){var _0x1d42c2=_0x1162e5[_0x60dc('0x38')](_0x60dc('0x39'))&&_0x1162e5[_0x60dc('0x39')];var _0x3ffe94=_0x1162e5[_0x60dc('0x38')](_0x60dc('0x3a'));if(_0x1d42c2||_0x3ffe94){var _0x218a87=_0x1d42c2?_0x60dc('0xd'):'substatus';var _0x420d89=_0x1162e5[_0x60dc('0x1f')]({'plain':!![]});_0x420d89[_0x60dc('0x2f')]=_0x38c978;_0x420d89[_0x60dc('0x30')]=_0x38c978;_0x420d89[_0x60dc('0x20')]=_0x1d42c2?'closed':_0x60dc('0x3a');var _0x2d1902=_0x60dc('0x33')+_0x420d89[_0x60dc('0x22')];return db['sequelize'][_0x60dc('0x25')](_0x2d1902,{'type':db['Sequelize'][_0x60dc('0x3b')][_0x60dc('0x3c')],'raw':!![]})['then'](function(_0xbdbc2f){if(_0xbdbc2f){_0x420d89[_0x60dc('0x34')]=_0xbdbc2f[0x0];}if(typeof _0x420d89[_0x60dc('0x27')]==='undefined')return;return getAgent(_0x420d89['UserId']);})[_0x60dc('0x26')](function(_0x1f24c9){if(_0x1f24c9){_0x420d89[_0x60dc('0x28')]=util['format'](_0x60dc('0x29'),_0x1f24c9[_0x60dc('0x2a')]);_0x420d89[_0x60dc('0x2b')]=_0x1f24c9;}return request({'event':_0x218a87,'message':_0x420d89});})[_0x60dc('0x36')](function(_0x505373){logger['error'](_0x60dc('0x1e'),_0x60dc('0x3d'),_0x505373);});}};}function getAgent(_0x4521a4){return db[_0x60dc('0x3e')][_0x60dc('0x3f')]({'where':{'id':_0x4521a4},'attributes':['id',_0x60dc('0x2a'),'fullname',_0x60dc('0x40'),'internal'],'raw':!![]})[_0x60dc('0x26')](function(_0x2040ee){return _0x2040ee;});}exports[_0x60dc('0x41')]=function(){for(var _0x5be059=0x0;_0x5be059<triggers['length'];_0x5be059+=0x1){if(db['hasOwnProperty'](triggers[_0x5be059][_0x60dc('0x42')])){db[triggers[_0x5be059][_0x60dc('0x42')]]['hook'](triggers[_0x5be059][_0x60dc('0x20')],triggers[_0x5be059]['callback'](triggers[_0x5be059]['channel'][_0x60dc('0x43')](),triggers[_0x5be059][_0x60dc('0x44')]));}}};
\ No newline at end of file
index 620a6db..73d765c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae8=['whatsapp','openchannel','getChannels','isValidChannel','includes','clearBlockUser','blockedAt','updateAttributes','getLicense','User','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','./license/util','voice','mail','chat','fax','sms'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x6ae8,0x1c4));var _0x86ae=function(_0x85cb49,_0x50a08a){_0x85cb49=_0x85cb49-0x0;var _0x52f463=_0x6ae8[_0x85cb49];return _0x52f463;};'use strict';var _=require(_0x86ae('0x0'));var BPromise=require(_0x86ae('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x86ae('0x2'));var channels=[_0x86ae('0x3'),_0x86ae('0x4'),_0x86ae('0x5'),_0x86ae('0x6'),_0x86ae('0x7'),_0x86ae('0x8'),_0x86ae('0x9')];exports[_0x86ae('0xa')]=function(){return channels;};exports[_0x86ae('0xb')]=function(_0x101a3c){_0x101a3c=_0x101a3c['toLowerCase']();return _[_0x86ae('0xc')](channels,_0x101a3c);};exports[_0x86ae('0xd')]=function(_0x5299a2,_0x413ca4,_0x550bad,_0x45e526){var _0x309df7={'loginAttempts':_0x413ca4,'blocked':_0x550bad};if(!_['isUndefined'](_0x45e526)){_0x309df7[_0x86ae('0xe')]=_0x45e526;}return _0x5299a2[_0x86ae('0xf')](_0x309df7);};exports[_0x86ae('0x10')]=function(_0x2d377d){return new BPromise(function(_0x115849,_0x1e2745){var _0x1326fb=0x0;if(_0x2d377d['role']!=='agent'){_0x115849(_0x2d377d);}db[_0x86ae('0x11')]['count']({'where':{'role':_0x86ae('0x12'),'online':!![],'id':{'$ne':_0x2d377d['id']}}})['then'](function(_0x1d36b4){_0x1326fb=_0x1d36b4;return util['getLicense']();})[_0x86ae('0x13')](function(_0x502cf4){if(_0x502cf4&&_0x502cf4[_0x86ae('0x14')]&&_0x1326fb>=_0x502cf4[_0x86ae('0x14')]){throw Error(_0x86ae('0x15'));}_0x115849(_0x2d377d);})[_0x86ae('0x16')](function(_0x539271){_0x1e2745(_0x539271);});});};
\ No newline at end of file
+var _0xa606=['whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','blockedAt','role','User','count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','../mysqldb','./license/util','voice','chat','fax','sms'];(function(_0x4b3374,_0x538679){var _0x4e1456=function(_0xc1f32f){while(--_0xc1f32f){_0x4b3374['push'](_0x4b3374['shift']());}};_0x4e1456(++_0x538679);}(_0xa606,0x186));var _0x6a60=function(_0x2f79bf,_0x17af8e){_0x2f79bf=_0x2f79bf-0x0;var _0x438858=_0xa606[_0x2f79bf];return _0x438858;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var db=require(_0x6a60('0x0'))['db'];var util=require(_0x6a60('0x1'));var channels=[_0x6a60('0x2'),'mail',_0x6a60('0x3'),_0x6a60('0x4'),_0x6a60('0x5'),_0x6a60('0x6'),_0x6a60('0x7')];exports[_0x6a60('0x8')]=function(){return channels;};exports[_0x6a60('0x9')]=function(_0x42b33a){_0x42b33a=_0x42b33a[_0x6a60('0xa')]();return _[_0x6a60('0xb')](channels,_0x42b33a);};exports[_0x6a60('0xc')]=function(_0x309301,_0x5727e9,_0x1736aa,_0x2efd15){var _0x13add1={'loginAttempts':_0x5727e9,'blocked':_0x1736aa};if(!_['isUndefined'](_0x2efd15)){_0x13add1[_0x6a60('0xd')]=_0x2efd15;}return _0x309301['updateAttributes'](_0x13add1);};exports['getLicense']=function(_0x1980e2){return new BPromise(function(_0xc60802,_0x9f2a54){var _0x4f26f1=0x0;if(_0x1980e2[_0x6a60('0xe')]!=='agent'){_0xc60802(_0x1980e2);}db[_0x6a60('0xf')][_0x6a60('0x10')]({'where':{'role':_0x6a60('0x11'),'online':!![],'id':{'$ne':_0x1980e2['id']}}})[_0x6a60('0x12')](function(_0x417cb0){_0x4f26f1=_0x417cb0;return util['getLicense']();})[_0x6a60('0x12')](function(_0x26854a){if(_0x26854a&&_0x26854a[_0x6a60('0x13')]&&_0x4f26f1>=_0x26854a[_0x6a60('0x13')]){throw Error(_0x6a60('0x14'));}_0xc60802(_0x1980e2);})[_0x6a60('0x15')](function(_0x26a530){_0x9f2a54(_0x26a530);});});};
\ No newline at end of file
index bb784f9..9680ec4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69c4=['exports','status','send'];(function(_0x1c3caf,_0x16a50e){var _0xeca520=function(_0x145642){while(--_0x145642){_0x1c3caf['push'](_0x1c3caf['shift']());}};_0xeca520(++_0x16a50e);}(_0x69c4,0xf0));var _0x469c=function(_0x25c33c,_0x3be695){_0x25c33c=_0x25c33c-0x0;var _0x309063=_0x69c4[_0x25c33c];return _0x309063;};'use strict';module[_0x469c('0x0')][0x194]=function pageNotFound(_0x1cd32a,_0x56a05f){var _0xb16abc='404';var _0x1bfd8a=0x194;var _0x2e6a68={'status':_0x1bfd8a};_0x56a05f[_0x469c('0x1')](_0x2e6a68['status']);_0x56a05f['render'](_0xb16abc,{},function(_0x33e3ca,_0x260cf8){if(_0x33e3ca){return _0x56a05f['status'](_0x2e6a68[_0x469c('0x1')])['json'](_0x2e6a68);}_0x56a05f[_0x469c('0x2')](_0x260cf8);});};
\ No newline at end of file
+var _0x17b6=['json','exports','status'];(function(_0x8560d3,_0x26a504){var _0x33b1b5=function(_0x3a2cad){while(--_0x3a2cad){_0x8560d3['push'](_0x8560d3['shift']());}};_0x33b1b5(++_0x26a504);}(_0x17b6,0xf7));var _0x617b=function(_0x4e8a0a,_0x370fc0){_0x4e8a0a=_0x4e8a0a-0x0;var _0x34e279=_0x17b6[_0x4e8a0a];return _0x34e279;};'use strict';module[_0x617b('0x0')][0x194]=function pageNotFound(_0xe7eac6,_0x5b75cf){var _0x5f4d50='404';var _0x5c2ad9=0x194;var _0xd2899a={'status':_0x5c2ad9};_0x5b75cf[_0x617b('0x1')](_0xd2899a[_0x617b('0x1')]);_0x5b75cf['render'](_0x5f4d50,{},function(_0x3b965e,_0x1cc83d){if(_0x3b965e){return _0x5b75cf['status'](_0xd2899a[_0x617b('0x1')])[_0x617b('0x2')](_0xd2899a);}_0x5b75cf['send'](_0x1cc83d);});};
\ No newline at end of file
index 5ee4542..428b46c 100644 (file)
@@ -7,6 +7,7 @@
 
     var  alignment="<%=alignment%>";
     var  verticalAlignment="<%=verticalAlignment%>";
+
     var  iframe_status = false;
 
     document.documentElement.style.setProperty('--xc-ws-div-color', '<%=div_color%>');
@@ -49,7 +50,7 @@
     <% if (alignment == 'right') { -%> // Right
         topChat_set(iframe_h, verticalAlignment);
         document.body.appendChild(div_tab);
-        var  html = '<div id="chat_tab_arrow"> <strong><</strong> </div> <span id="chat_tab_text" style="writing-mode: tb-rl; transform: rotate(-180deg);" flex><strong><%=labelText%></strong></span>';
+        var  html = '<div id="chat_tab_arrow"> <strong><</strong> </div> <span id="chat_tab_text" style="writing-mode: tb-rl; transform: rotate(-180deg);" flex><strong> CHAT </strong></span>';
         div_tab.innerHTML = html;
         
         div_tab.style.backgroundColor="<%=div_color%>";
@@ -97,7 +98,7 @@
     <% } else if (alignment == 'left') { -%> 
         topChat_set(iframe_h, verticalAlignment);
         document.body.appendChild(div_tab);
-        var  html='<div id="chat_tab_arrow"> <strong>></strong> </div><span id="chat_tab_text" style="writing-mode: tb-rl; transform: rotate(-180deg);" flex><strong><%=labelText%></strong></span>';
+        var  html='<div id="chat_tab_arrow"> <strong>></strong> </div><span id="chat_tab_text" style="writing-mode: tb-rl; transform: rotate(-180deg);" flex><strong> CHAT </strong></span>';
         div_tab.innerHTML=html;
 
         div_tab.style.backgroundColor="<%=div_color%>";
index b4b82ce..fe424c7 100644 (file)
@@ -153,14 +153,12 @@ module.exports = {
     return new BPromise(function(resolve) {
       var migration = new Migration(queryInterface);
 
-      // START CHAT WEBSITE
-      migration.addColumn('chat_websites', 'labelText', {
-        type: Sequelize.STRING,
-        defaultValue: 'CHAT'
+      // START int_dynamics365_configurations
+      migration.addColumn('int_dynamics365_configurations', 'moduleCreate', {
+        type: Sequelize.ENUM('contact', 'nothing'),
+        defaultValue: 'contact'
       });
-
-      // END CHAT WEBSITE
-
+      // END int_dynamics365_configurations 
 
       // START FINAL
       migration.final(resolve);
index 7be642c..1fd4c32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['MailAccountId','Imap','hasOne','Smtp','Dispositions','Answers','Interactions','List','ListId','TemplateId','mandatoryDispositionPause','mandatoryDispositionPauseId','Team','team_has_mail_queues','MailInteractionId','Account','mail_interaction_has_tags','Tags','Interaction','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','restrict','IntervalId','TagId','DashboardItem','Exntensions','FaxAccountId','fax_interaction_has_tags','ThroughTags','Users','FaxInteractionId','Attachment','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteraction','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','Pause','OpenchannelQueueId','OpenchannelInteractionId','Owner','openchannel_interaction_has_tags','ProactiveActions','ChatMessage','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','Attachments','team_has_chat_queues','ChatGroupId','CompanyId','Company','cm_contact_has_tags','CampaignId','OwnerId','All','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','ParentId','ChatApplications','FaxApplications','SmsApplications','Schedule','CustomReportId','whatsapp_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','Trigger','AnyCondition','TriggerAnyId','TriggerId','AnalyticFieldReport','DefaultReportId','Fields','MetricId','SalesforceAccount','Configurations','AccountId','SalesforceField','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Subjects','Field','VariableId','DeskAccount','DeskField','int_desk_configuration_has_tags','ZendeskAccount','ZendeskField','FreshdeskField','int_freshdesk_configuration_has_tags','VtigerConfiguration','FromId','SessionId','SmsQueueReport','ProjectId','MailQueues','ChatQueues','FaxQueues','SmsQueues','team_has_openchannel_queues','team_has_whatsapp_queues','TrunkId','TrunkBackupId','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromAgent','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','FromUserId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','CustomFields','Queues','userProfileId','UserProfileSections','sectionId','WhatsappAccountId','user_has_whatsapp_accounts','WhatsappMessage','WhatsappInteractionId','ToWhatsappAccountId','ToQueueId','exports','lodash','sequelize','defaultsDeep','motion2','xC@LL1234','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','xcall','127.0.0.1','database','password','options','username','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','Dashboard','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','ChatInteraction','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','Disposition','Condition','../api/condition/condition.model','Interval','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','JscriptyAnswerReport','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','OpenchannelTransferReport','SmsTransferReport','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','VoiceMail','cascade','UserId','hasMany','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','SmsInteractions','FaxInteractions','MailInteraction','WhatsappInteractions','UserNotifications','SenderId','belongsTo','belongsToMany','chat_group_has_users','Contacts','cm_user_has_contacts','cm_user_has_lists','user_has_teams','MailInteractions','user_has_mail_interactions','ChatInteractions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','UserMailQueue','OpenchannelQueues','WhatsappQueues','UserWhatsappQueue','ChatWebsite','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','SquareProjects','user_has_square_projects','ChanSpyId','Applications','Sounds','Members','VoiceQueueId','Hoppers','HopperHistories','CmHopperBlack','HopperBlacks','JscriptySessions','Trunk','TrunkBackup','Lists','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','VoiceQueueReport','QueueCalls','uniqueid','AgentReports','Contact','ContactId'];(function(_0x49af56,_0x451d7f){var _0x2a7238=function(_0x72cf75){while(--_0x72cf75){_0x49af56['push'](_0x49af56['shift']());}};_0x2a7238(++_0x451d7f);}(_0xa74f,0x9a));var _0xfa74=function(_0x142020,_0x1f7233){_0x142020=_0x142020-0x0;var _0x40da8f=_0xa74f[_0x142020];return _0x40da8f;};'use strict';var config=require('../config/environment');var Sequelize=require('sequelize');var _=require(_0xfa74('0x0'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0xfa74('0x1')]=_[_0xfa74('0x2')](config[_0xfa74('0x1')],{'database':_0xfa74('0x3'),'username':'xcall','password':_0xfa74('0x4'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xfa74('0x5')},'logging':![],'timezone':timezone[_0xfa74('0x6')](),'define':{'charset':_0xfa74('0x7'),'collate':_0xfa74('0x8')}}});config[_0xfa74('0x9')]=_[_0xfa74('0x2')](config['sequelizeHistory'],{'database':_0xfa74('0x3'),'username':_0xfa74('0xa'),'password':_0xfa74('0x4'),'options':{'host':_0xfa74('0xb'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xfa74('0x5')},'logging':![],'timezone':timezone[_0xfa74('0x6')](),'define':{'charset':'utf8','collate':_0xfa74('0x8')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xfa74('0x1')][_0xfa74('0xc')],config[_0xfa74('0x1')]['username'],config[_0xfa74('0x1')][_0xfa74('0xd')],config[_0xfa74('0x1')][_0xfa74('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0xfa74('0xc')],config[_0xfa74('0x9')][_0xfa74('0xf')],config[_0xfa74('0x9')][_0xfa74('0xd')],config['sequelizeHistory'][_0xfa74('0xe')])};db[_0xfa74('0x10')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x12'));db[_0xfa74('0x13')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x14'));db[_0xfa74('0x15')]=db['sequelize']['import'](_0xfa74('0x16'));db[_0xfa74('0x17')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x18'));db[_0xfa74('0x19')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x1a'));db[_0xfa74('0x1b')]=db[_0xfa74('0x1')]['import']('../api/voiceQueue/voiceQueue.model');db[_0xfa74('0x1c')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x1d'));db[_0xfa74('0x1e')]=db['sequelize']['import'](_0xfa74('0x1f'));db['VoiceMail']=db['sequelize']['import'](_0xfa74('0x20'));db[_0xfa74('0x21')]=db[_0xfa74('0x1')]['import']('../api/voiceMailMessage/voiceMailMessage.model');db[_0xfa74('0x22')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x23'));db['VoiceDialReport']=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/voiceDialReport/voiceDialReport.model');db[_0xfa74('0x24')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x25'));db['VoiceQueueReport']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x26'));db['MemberReport']=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x27'));db['Trunk']=db['sequelize'][_0xfa74('0x11')]('../api/trunk/trunk.model');db[_0xfa74('0x28')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x29'));db[_0xfa74('0x2a')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x2b'));db[_0xfa74('0x2c')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x2d'));db[_0xfa74('0x2e')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x2f'));db['UserMailQueue']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x30'));db[_0xfa74('0x31')]=db['sequelize']['import'](_0xfa74('0x32'));db[_0xfa74('0x33')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/userSmsQueue/userSmsQueue.model');db[_0xfa74('0x34')]=db[_0xfa74('0x1')]['import']('../api/userOpenchannelQueue/userOpenchannelQueue.model');db['UserWhatsappQueue']=db['sequelize']['import'](_0xfa74('0x35'));db[_0xfa74('0x36')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x37'));db[_0xfa74('0x38')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x39'));db['MailAccount']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x3a'));db[_0xfa74('0x3b')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/mailQueue/mailQueue.model');db[_0xfa74('0x3c')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x3d'));db['MailInteraction']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x3e'));db[_0xfa74('0x3f')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x40'));db[_0xfa74('0x41')]=db['sequelize']['import'](_0xfa74('0x42'));db[_0xfa74('0x43')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/mailQueueReport/mailQueueReport.model');db[_0xfa74('0x44')]=db[_0xfa74('0x1')]['import']('../api/dashboard/dashboard.model');db['DashboardItem']=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x45'));db[_0xfa74('0x46')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x47'));db[_0xfa74('0x48')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x49'));db[_0xfa74('0x4a')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/faxInteraction/faxInteraction.model');db[_0xfa74('0x4b')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x4c'));db[_0xfa74('0x4d')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x4e'));db[_0xfa74('0x4f')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x50'));db['SmsAccount']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x51'));db[_0xfa74('0x52')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x53'));db['SmsInteraction']=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/smsInteraction/smsInteraction.model');db[_0xfa74('0x54')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x55'));db[_0xfa74('0x56')]=db['sequelize']['import'](_0xfa74('0x57'));db[_0xfa74('0x58')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x59'));db[_0xfa74('0x5a')]=db['sequelize']['import'](_0xfa74('0x5b'));db[_0xfa74('0x5c')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x5d'));db[_0xfa74('0x5e')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/openchannelMessage/openchannelMessage.model');db[_0xfa74('0x5f')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x60'));db['ChatWebsite']=db['sequelize'][_0xfa74('0x11')]('../api/chatWebsite/chatWebsite.model');db[_0xfa74('0x61')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x62'));db[_0xfa74('0x63')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/chatApplication/chatApplication.model');db[_0xfa74('0x64')]=db['sequelize'][_0xfa74('0x11')]('../api/chatInteraction/chatInteraction.model');db['ChatMessage']=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/chatMessage/chatMessage.model');db['ChatOfflineMessage']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x65'));db[_0xfa74('0x66')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x67'));db[_0xfa74('0x68')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/chatGroup/chatGroup.model');db[_0xfa74('0x69')]=db[_0xfa74('0x1')]['import']('../api/chatProactiveAction/chatProactiveAction.model');db[_0xfa74('0x6a')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x6b'));db[_0xfa74('0x6c')]=db['sequelize'][_0xfa74('0x11')]('../api/cmContact/cmContact.model');db[_0xfa74('0x6d')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/cmHopper/cmHopper.model');db['CmHopperBlack']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x6e'));db[_0xfa74('0x6f')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x70'));db['CmHopperHistory']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x71'));db[_0xfa74('0x72')]=db['sequelize'][_0xfa74('0x11')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0xfa74('0x73')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x74'));db[_0xfa74('0x75')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x76'));db[_0xfa74('0x77')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x78'));db[_0xfa74('0x79')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/cannedAnswer/cannedAnswer.model');db[_0xfa74('0x7a')]=db[_0xfa74('0x1')]['import']('../api/disposition/disposition.model');db[_0xfa74('0x7b')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x7c'));db[_0xfa74('0x7d')]=db['sequelize'][_0xfa74('0x11')]('../api/interval/interval.model');db['Pause']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x7e'));db[_0xfa74('0x7f')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x80'));db[_0xfa74('0x81')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x82'));db['Schedule']=db[_0xfa74('0x1')]['import'](_0xfa74('0x83'));db[_0xfa74('0x84')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x85'));db[_0xfa74('0x86')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x87'));db[_0xfa74('0x88')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x89'));db['Trigger']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x8a'));db[_0xfa74('0x8b')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x8c'));db[_0xfa74('0x8d')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x8e'));db[_0xfa74('0x8f')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x90'));db[_0xfa74('0x91')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x92'));db[_0xfa74('0x93')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x94'));db[_0xfa74('0x95')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0xfa74('0x96')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x97'));db['AnalyticFieldReport']=db[_0xfa74('0x1')]['import']('../api/analyticFieldReport/analyticFieldReport.model');db[_0xfa74('0x98')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x99'));db['SalesforceAccount']=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x9a'));db[_0xfa74('0x9b')]=db[_0xfa74('0x1')]['import']('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x9c'));db[_0xfa74('0x9d')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x9e'));db[_0xfa74('0x9f')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xa0'));db[_0xfa74('0xa1')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xa2'));db['DeskAccount']=db['sequelize']['import'](_0xfa74('0xa3'));db[_0xfa74('0xa4')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xa5'));db['DeskField']=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/intDeskField/intDeskField.model');db[_0xfa74('0xa6')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0xa7'));db[_0xfa74('0xa8')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xa9'));db[_0xfa74('0xaa')]=db[_0xfa74('0x1')]['import']('../api/intZohoField/intZohoField.model');db['ZendeskAccount']=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0xfa74('0xab')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xac'));db['ZendeskField']=db[_0xfa74('0x1')]['import']('../api/intZendeskField/intZendeskField.model');db[_0xfa74('0xad')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xfa74('0xae')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xaf'));db['FreshdeskField']=db['sequelize']['import'](_0xfa74('0xb0'));db[_0xfa74('0xb1')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xb2'));db['VtigerConfiguration']=db['sequelize'][_0xfa74('0x11')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0xfa74('0xb3')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xb4'));db[_0xfa74('0xb5')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xb6'));db[_0xfa74('0xb7')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0xb8'));db[_0xfa74('0xb9')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xba'));db[_0xfa74('0xbb')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xbc'));db[_0xfa74('0xbd')]=db['sequelize']['import'](_0xfa74('0xbe'));db[_0xfa74('0xbf')]=db[_0xfa74('0x1')]['import']('../api/intDynamics365Field/intDynamics365Field.model');db[_0xfa74('0xc0')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xc1'));db[_0xfa74('0xc2')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xfa74('0xc3')]=db['sequelize']['import'](_0xfa74('0xc4'));db[_0xfa74('0x8d')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x8e'));db['Network']=db['sequelize'][_0xfa74('0x11')](_0xfa74('0xc5'));db[_0xfa74('0xc6')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xc7'));db['ChatInternalMessage']=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0xfa74('0xc8')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0xfa74('0xc9')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xca'));db[_0xfa74('0xcb')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xcc'));db['SmsQueueReport']=db['sequelize'][_0xfa74('0x11')]('../api/smsQueueReport/smsQueueReport.model');db[_0xfa74('0xcd')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xce'));db[_0xfa74('0xcf')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xd0'));db[_0xfa74('0xd1')]=db[_0xfa74('0x1')]['import']('../api/jscriptyProject/jscriptyProject.model');db['Setting']=db['sequelize'][_0xfa74('0x11')](_0xfa74('0xd2'));db['SquareOdbc']=db[_0xfa74('0x1')]['import'](_0xfa74('0xd3'));db[_0xfa74('0xd4')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xd5'));db[_0xfa74('0xd6')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xd7'));db[_0xfa74('0xd8')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xd9'));db['Team']=db[_0xfa74('0x1')]['import'](_0xfa74('0xda'));db[_0xfa74('0xdb')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xdc'));db[_0xfa74('0xdd')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xde'));db['Migration']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xdf'));db['Attachment']=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/attachment/attachment.model');db[_0xfa74('0xe0')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xe1'));db[_0xfa74('0xe2')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xe3'));db[_0xfa74('0xe4')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xe5'));db[_0xfa74('0xe6')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/faxTransferReport/faxTransferReport.model');db[_0xfa74('0xe7')]=db['sequelize'][_0xfa74('0x11')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xfa74('0xe8')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/smsTransferReport/smsTransferReport.model');db[_0xfa74('0xe9')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0xea'));db[_0xfa74('0xeb')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xec'));db[_0xfa74('0xed')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xee'));db[_0xfa74('0xef')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xf0'));db[_0xfa74('0xf1')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xf2'));db[_0xfa74('0xf3')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xf4'));db[_0xfa74('0xf5')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0xf6'));db[_0xfa74('0xf7')]=db['sequelize']['import'](_0xfa74('0xf8'));db[_0xfa74('0xf9')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xfa'));db['WhatsappMessage']=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0xfb'));db[_0xfa74('0xfc')]=db[_0xfa74('0x1')]['import'](_0xfa74('0xfd'));db[_0xfa74('0xfe')]=db[_0xfa74('0x1')][_0xfa74('0x11')]('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0xfa74('0xff')]=db[_0xfa74('0x1')]['import'](_0xfa74('0x100'));db[_0xfa74('0x101')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x102'));db[_0xfa74('0x103')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x104'));db[_0xfa74('0x105')]=db[_0xfa74('0x1')][_0xfa74('0x11')](_0xfa74('0x106'));db[_0xfa74('0x107')]=db['sequelize'][_0xfa74('0x11')](_0xfa74('0x108'));db[_0xfa74('0x10')]['hasOne'](db[_0xfa74('0x109')],{'as':'VoiceMail','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x10')][_0xfa74('0x10c')](db[_0xfa74('0x1c')],{'as':'Recordings','foreignKey':'UserId'});db[_0xfa74('0x10')][_0xfa74('0x10c')](db[_0xfa74('0x2a')],{'as':_0xfa74('0x10d'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x10')][_0xfa74('0x10c')](db[_0xfa74('0x17')],{'as':_0xfa74('0x10e'),'onDelete':'cascade','hooks':!![]});db['User'][_0xfa74('0x10c')](db[_0xfa74('0x6f')],{'as':_0xfa74('0x10f'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x10')][_0xfa74('0x10c')](db['CmHopperHistory'],{'as':_0xfa74('0x110'),'foreignKey':_0xfa74('0x10b')});db['User'][_0xfa74('0x10c')](db[_0xfa74('0x72')],{'as':_0xfa74('0x72'),'foreignKey':_0xfa74('0x10b')});db['User'][_0xfa74('0x10c')](db[_0xfa74('0x5c')],{'as':_0xfa74('0x111'),'foreignKey':'UserId'});db[_0xfa74('0x10')][_0xfa74('0x10c')](db[_0xfa74('0x64')],{'as':'ChatInteractions','foreignKey':_0xfa74('0x10b')});db['User'][_0xfa74('0x10c')](db['SmsInteraction'],{'as':_0xfa74('0x112'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x10')][_0xfa74('0x10c')](db[_0xfa74('0x4a')],{'as':_0xfa74('0x113'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x10')][_0xfa74('0x10c')](db[_0xfa74('0x114')],{'as':'MailInteractions','foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x10')][_0xfa74('0x10c')](db[_0xfa74('0xf9')],{'as':_0xfa74('0x115'),'foreignKey':'UserId'});db[_0xfa74('0x10')][_0xfa74('0x10c')](db['UserNotification'],{'as':_0xfa74('0x116'),'foreignKey':_0xfa74('0x117')});db['User'][_0xfa74('0x118')](db[_0xfa74('0xed')],{'as':'UserProfile','foreignKey':'userProfileId'});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0x68')],{'as':'Groups','through':_0xfa74('0x11a')});db[_0xfa74('0x10')][_0xfa74('0x119')](db['CmContact'],{'as':_0xfa74('0x11b'),'through':_0xfa74('0x11c')});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0xe9')],{'as':'Lists','through':_0xfa74('0x11d')});db[_0xfa74('0x10')][_0xfa74('0x119')](db['Team'],{'through':_0xfa74('0x11e')});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0x114')],{'as':_0xfa74('0x11f'),'through':_0xfa74('0x120')});db['User'][_0xfa74('0x119')](db[_0xfa74('0x64')],{'as':_0xfa74('0x121'),'through':'user_has_chat_interactions'});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0x4a')],{'as':'FaxInteractions','through':'user_has_fax_interactions'});db['User'][_0xfa74('0x119')](db['SmsInteraction'],{'as':_0xfa74('0x112'),'through':_0xfa74('0x122')});db['User'][_0xfa74('0x119')](db[_0xfa74('0x5c')],{'as':_0xfa74('0x111'),'through':_0xfa74('0x123')});db[_0xfa74('0x10')][_0xfa74('0x119')](db['WhatsappInteraction'],{'as':_0xfa74('0x115'),'through':_0xfa74('0x124')});db['User'][_0xfa74('0x119')](db['VoiceQueue'],{'as':_0xfa74('0x125'),'through':_0xfa74('0x2c'),'required':![]});db['User'][_0xfa74('0x119')](db[_0xfa74('0xeb')],{'as':_0xfa74('0x126'),'through':_0xfa74('0x107'),'required':![]});db['User'][_0xfa74('0x119')](db[_0xfa74('0x3b')],{'as':'MailQueues','through':_0xfa74('0x127'),'required':![]});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0x66')],{'as':'ChatQueues','through':'UserChatQueue','required':![],'hooks':!![]});db[_0xfa74('0x10')]['belongsToMany'](db[_0xfa74('0x4d')],{'as':'FaxQueues','through':_0xfa74('0x31'),'required':![]});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0x56')],{'as':'SmsQueues','through':_0xfa74('0x33'),'required':![]});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0x5f')],{'as':_0xfa74('0x128'),'through':_0xfa74('0x34'),'required':![]});db[_0xfa74('0x10')]['belongsToMany'](db[_0xfa74('0xff')],{'as':_0xfa74('0x129'),'through':_0xfa74('0x12a'),'required':![]});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0xe9')],{'through':_0xfa74('0x11d')});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0x12b')],{'as':_0xfa74('0x12c'),'through':_0xfa74('0x12d')});db[_0xfa74('0x10')]['belongsToMany'](db[_0xfa74('0x46')],{'as':'FaxAccounts','through':_0xfa74('0x12e')});db[_0xfa74('0x10')]['belongsToMany'](db[_0xfa74('0x12f')],{'as':_0xfa74('0x130'),'through':_0xfa74('0x131')});db['User'][_0xfa74('0x119')](db[_0xfa74('0x58')],{'as':_0xfa74('0x132'),'through':_0xfa74('0x133')});db[_0xfa74('0x10')]['belongsToMany'](db[_0xfa74('0x134')],{'as':'SmsAccounts','through':'user_has_sms_accounts'});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0xf5')],{'as':'WhatsappAccounts','through':'user_has_whatsapp_accounts'});db[_0xfa74('0x10')][_0xfa74('0x119')](db[_0xfa74('0xd4')],{'as':_0xfa74('0x135'),'through':_0xfa74('0x136')});db['VoiceChanSpy'][_0xfa74('0x10c')](db[_0xfa74('0x17')],{'as':'SpiedAgents','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x137')});db['VoiceContext'][_0xfa74('0x10c')](db['VoiceExtension'],{'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x17')][_0xfa74('0x10c')](db[_0xfa74('0x17')],{'as':_0xfa74('0x138'),'onDelete':'cascade'});db[_0xfa74('0x19')][_0xfa74('0x119')](db[_0xfa74('0x84')],{'as':_0xfa74('0x139'),'through':'moh_has_sounds'});db['VoiceQueue'][_0xfa74('0x10c')](db['UserVoiceQueueRt'],{'as':_0xfa74('0x13a'),'foreignKey':_0xfa74('0x13b')});db[_0xfa74('0x1b')][_0xfa74('0x10c')](db['CmHopper'],{'as':_0xfa74('0x13c'),'foreignKey':'VoiceQueueId'});db[_0xfa74('0x1b')][_0xfa74('0x10c')](db[_0xfa74('0x6f')],{'as':_0xfa74('0x10f'),'foreignKey':_0xfa74('0x13b')});db['VoiceQueue'][_0xfa74('0x10c')](db['CmHopperHistory'],{'as':_0xfa74('0x13d'),'foreignKey':'VoiceQueueId'});db[_0xfa74('0x1b')]['hasMany'](db[_0xfa74('0x72')],{'as':'ReportAgentPreview','foreignKey':_0xfa74('0x13b')});db['VoiceQueue'][_0xfa74('0x10c')](db[_0xfa74('0x13e')],{'as':_0xfa74('0x13f'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xfa74('0x10c')](db[_0xfa74('0xcb')],{'as':_0xfa74('0x140'),'foreignKey':_0xfa74('0x13b')});db['VoiceQueue'][_0xfa74('0x118')](db[_0xfa74('0x141')],{'as':_0xfa74('0x141'),'foreignKey':'TrunkId'});db[_0xfa74('0x1b')][_0xfa74('0x118')](db[_0xfa74('0x141')],{'as':_0xfa74('0x142'),'foreignKey':'TrunkBackupId'});db[_0xfa74('0x1b')][_0xfa74('0x118')](db[_0xfa74('0x7d')],{'as':_0xfa74('0x7d'),'foreignKey':'IntervalId'});db['VoiceQueue'][_0xfa74('0x118')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db['VoiceQueue'][_0xfa74('0x119')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x143'),'through':_0xfa74('0x144')});db[_0xfa74('0x1b')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':_0xfa74('0x2c')});db[_0xfa74('0x1b')][_0xfa74('0x119')](db['Team'],{'as':_0xfa74('0x146'),'through':_0xfa74('0x103')});db[_0xfa74('0x1b')]['belongsToMany'](db[_0xfa74('0xe9')],{'as':_0xfa74('0x147'),'through':_0xfa74('0x148')});db[_0xfa74('0x1c')][_0xfa74('0x118')](db['User'],{'as':'User','foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x1e')]['belongsTo'](db[_0xfa74('0x10')],{'as':_0xfa74('0x10'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x109')][_0xfa74('0x10c')](db['VoiceMailMessage'],{'as':_0xfa74('0x149'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x14a'),'sourceKey':_0xfa74('0x14b')});db[_0xfa74('0x21')]['belongsTo'](db['VoiceMail'],{'foreignKey':_0xfa74('0x14a'),'targetKey':_0xfa74('0x14b')});db['VoiceCallReport'][_0xfa74('0x10c')](db[_0xfa74('0x14c')],{'as':_0xfa74('0x14d'),'foreignKey':_0xfa74('0x14e'),'constraints':![]});db[_0xfa74('0x22')][_0xfa74('0x10c')](db['VoiceAgentReport'],{'as':_0xfa74('0x14f'),'foreignKey':'uniqueid','constraints':![]});db[_0xfa74('0x22')]['belongsTo'](db['User'],{'as':_0xfa74('0x10'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x22')][_0xfa74('0x118')](db['CmContact'],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0x36')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{'as':_0xfa74('0x12f'),'foreignKey':_0xfa74('0x152')});db[_0xfa74('0x38')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{'as':_0xfa74('0x12f'),'foreignKey':_0xfa74('0x152')});db[_0xfa74('0x12f')]['hasOne'](db[_0xfa74('0x36')],{'as':_0xfa74('0x153'),'onDelete':'cascade'});db[_0xfa74('0x12f')][_0xfa74('0x154')](db[_0xfa74('0x38')],{'as':_0xfa74('0x155'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x12f')][_0xfa74('0x10c')](db[_0xfa74('0x7a')],{'as':_0xfa74('0x156'),'foreignKey':_0xfa74('0x152'),'onDelete':'cascade'});db[_0xfa74('0x12f')][_0xfa74('0x10c')](db[_0xfa74('0x79')],{'as':_0xfa74('0x157'),'foreignKey':_0xfa74('0x152')});db[_0xfa74('0x12f')][_0xfa74('0x10c')](db[_0xfa74('0x3f')],{'as':_0xfa74('0x149'),'foreignKey':_0xfa74('0x152')});db[_0xfa74('0x12f')][_0xfa74('0x10c')](db[_0xfa74('0x114')],{'as':_0xfa74('0x158')});db[_0xfa74('0x12f')]['hasMany'](db[_0xfa74('0x41')],{'as':_0xfa74('0x138')});db['MailAccount'][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x12f')][_0xfa74('0x118')](db[_0xfa74('0x88')],{'as':_0xfa74('0x88'),'foreignKey':_0xfa74('0x15b')});db[_0xfa74('0x12f')][_0xfa74('0x118')](db['Pause'],{'as':_0xfa74('0x15c'),'foreignKey':_0xfa74('0x15d')});db[_0xfa74('0x12f')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':_0xfa74('0x131')});db[_0xfa74('0x3b')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':_0xfa74('0x127')});db[_0xfa74('0x3b')][_0xfa74('0x119')](db[_0xfa74('0x15e')],{'through':_0xfa74('0x15f'),'as':_0xfa74('0x146')});db[_0xfa74('0x114')][_0xfa74('0x10c')](db['MailMessage'],{'as':_0xfa74('0x149'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x160')});db[_0xfa74('0x114')]['belongsTo'](db[_0xfa74('0x12f')],{'as':_0xfa74('0x161'),'foreignKey':'MailAccountId'});db[_0xfa74('0x114')][_0xfa74('0x118')](db['CmContact'],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0x114')][_0xfa74('0x118')](db['User'],{'as':'Owner','foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x114')]['belongsToMany'](db[_0xfa74('0x86')],{'through':_0xfa74('0x162'),'as':_0xfa74('0x163')});db[_0xfa74('0x114')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':_0xfa74('0x162'),'as':'ThroughTags'});db['MailInteraction'][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':'Users','through':_0xfa74('0x120'),'foreignKey':_0xfa74('0x160')});db[_0xfa74('0x3f')][_0xfa74('0x10c')](db['Attachment'],{'as':'Attachments','onDelete':_0xfa74('0x10a')});db[_0xfa74('0x3f')][_0xfa74('0x118')](db['User'],{'as':_0xfa74('0x10')});db[_0xfa74('0x3f')][_0xfa74('0x118')](db[_0xfa74('0x6c')],{'onDelete':_0xfa74('0x10a'),'as':_0xfa74('0x150')});db[_0xfa74('0x3f')][_0xfa74('0x118')](db[_0xfa74('0x114')],{'as':_0xfa74('0x164'),'foreignKey':_0xfa74('0x160')});db[_0xfa74('0x3f')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x152')});db[_0xfa74('0x3f')][_0xfa74('0x118')](db[_0xfa74('0x12b')],{'as':_0xfa74('0x12b'),'foreignKey':_0xfa74('0x165')});db[_0xfa74('0x3f')][_0xfa74('0x118')](db[_0xfa74('0x166')],{'as':_0xfa74('0x166'),'foreignKey':_0xfa74('0x167')});db[_0xfa74('0x41')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'onDelete':_0xfa74('0x168')});db['MailApplication']['belongsTo'](db[_0xfa74('0x3b')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x41')]['belongsTo'](db[_0xfa74('0x12f')],{'onDelete':_0xfa74('0x168')});db['MailApplication']['belongsTo'](db['Interval'],{'onDelete':'restrict','foreignKey':_0xfa74('0x169')});db[_0xfa74('0x41')]['belongsTo'](db[_0xfa74('0x86')],{'onDelete':_0xfa74('0x168'),'foreignKey':_0xfa74('0x16a')});db[_0xfa74('0x43')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{});db[_0xfa74('0x43')][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db['MailQueueReport'][_0xfa74('0x118')](db[_0xfa74('0x6c')],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0x43')]['belongsTo'](db[_0xfa74('0x114')],{});db[_0xfa74('0x43')][_0xfa74('0x118')](db[_0xfa74('0x3f')],{});db[_0xfa74('0x43')]['belongsTo'](db[_0xfa74('0x10')],{});db[_0xfa74('0x43')]['belongsTo'](db[_0xfa74('0x3b')],{});db[_0xfa74('0x44')][_0xfa74('0x10c')](db[_0xfa74('0x16b')],{'as':'Items','onDelete':_0xfa74('0x10a')});db[_0xfa74('0x46')]['hasMany'](db[_0xfa74('0x7a')],{'as':_0xfa74('0x156'),'foreignKey':'FaxAccountId','onDelete':_0xfa74('0x10a')});db['FaxAccount'][_0xfa74('0x10c')](db[_0xfa74('0x79')],{'as':'Answers','foreignKey':'FaxAccountId'});db[_0xfa74('0x46')][_0xfa74('0x10c')](db['FaxInteraction'],{'as':_0xfa74('0x158')});db['FaxAccount']['hasMany'](db[_0xfa74('0x48')],{'as':_0xfa74('0x138')});db[_0xfa74('0x46')][_0xfa74('0x10c')](db[_0xfa74('0x17')],{'as':_0xfa74('0x16c'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x46')]['hasMany'](db['FaxMessage'],{'as':_0xfa74('0x149')});db[_0xfa74('0x46')][_0xfa74('0x118')](db[_0xfa74('0x141')],{'as':_0xfa74('0x141')});db[_0xfa74('0x46')][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x46')][_0xfa74('0x118')](db['Pause'],{'as':_0xfa74('0x15c'),'foreignKey':_0xfa74('0x15d')});db[_0xfa74('0x46')][_0xfa74('0x119')](db['User'],{'as':'Agents','through':_0xfa74('0x12e')});db['FaxApplication']['belongsTo'](db[_0xfa74('0x10')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x48')][_0xfa74('0x118')](db[_0xfa74('0x4d')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x48')][_0xfa74('0x118')](db[_0xfa74('0x46')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x48')][_0xfa74('0x118')](db[_0xfa74('0x86')],{'onDelete':_0xfa74('0x168'),'foreignKey':_0xfa74('0x16a')});db['FaxInteraction'][_0xfa74('0x10c')](db[_0xfa74('0x4b')],{'as':_0xfa74('0x149'),'onDelete':_0xfa74('0x10a'),'foreignKey':'FaxInteractionId'});db[_0xfa74('0x4a')]['belongsTo'](db[_0xfa74('0x46')],{'as':'Account','foreignKey':_0xfa74('0x16d')});db[_0xfa74('0x4a')][_0xfa74('0x118')](db['CmContact'],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0x4a')][_0xfa74('0x118')](db['User'],{'as':'Owner','foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x4a')][_0xfa74('0x119')](db['Tag'],{'through':_0xfa74('0x16e'),'as':'Tags'});db[_0xfa74('0x4a')]['belongsToMany'](db[_0xfa74('0x86')],{'through':'fax_interaction_has_tags','as':_0xfa74('0x16f')});db[_0xfa74('0x4a')]['belongsToMany'](db[_0xfa74('0x10')],{'as':_0xfa74('0x170'),'through':'user_has_fax_interactions','foreignKey':'FaxInteractionId'});db[_0xfa74('0x4b')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'onDelete':'cascade','as':'User'});db[_0xfa74('0x4b')][_0xfa74('0x118')](db[_0xfa74('0x4a')],{'as':_0xfa74('0x164'),'foreignKey':_0xfa74('0x171')});db['FaxMessage']['belongsTo'](db[_0xfa74('0x6c')],{'onDelete':_0xfa74('0x10a'),'as':_0xfa74('0x150')});db['FaxMessage'][_0xfa74('0x118')](db['Attachment'],{'as':_0xfa74('0x172'),'foreignKey':_0xfa74('0x173')});db[_0xfa74('0x4b')][_0xfa74('0x118')](db['FaxAccount'],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x16d')});db['FaxQueue']['belongsToMany'](db[_0xfa74('0x10')],{'as':'Agents','through':_0xfa74('0x31')});db[_0xfa74('0x4d')][_0xfa74('0x119')](db[_0xfa74('0x15e')],{'through':_0xfa74('0x174'),'as':_0xfa74('0x146')});db[_0xfa74('0x4f')][_0xfa74('0x118')](db[_0xfa74('0x46')],{});db[_0xfa74('0x4f')][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x4f')][_0xfa74('0x118')](db['CmContact'],{'as':_0xfa74('0x150'),'foreignKey':'ContactId'});db[_0xfa74('0x4f')][_0xfa74('0x118')](db['FaxInteraction'],{});db['FaxQueueReport'][_0xfa74('0x118')](db[_0xfa74('0x4b')],{});db['FaxQueueReport'][_0xfa74('0x118')](db[_0xfa74('0x10')],{});db['FaxQueueReport'][_0xfa74('0x118')](db['FaxQueue'],{});db[_0xfa74('0x134')][_0xfa74('0x10c')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xfa74('0x175'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x134')][_0xfa74('0x10c')](db['CannedAnswer'],{'as':_0xfa74('0x157'),'foreignKey':_0xfa74('0x175')});db[_0xfa74('0x134')][_0xfa74('0x10c')](db[_0xfa74('0x54')],{'as':_0xfa74('0x149'),'foreignKey':_0xfa74('0x175')});db[_0xfa74('0x134')][_0xfa74('0x10c')](db[_0xfa74('0x176')],{'as':_0xfa74('0x158')});db['SmsAccount'][_0xfa74('0x10c')](db[_0xfa74('0x52')],{'as':_0xfa74('0x138')});db['SmsAccount'][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x134')][_0xfa74('0x118')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xfa74('0x15d')});db[_0xfa74('0x134')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':'user_has_sms_accounts'});db[_0xfa74('0x52')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x52')]['belongsTo'](db[_0xfa74('0x56')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x52')]['belongsTo'](db[_0xfa74('0x134')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x52')][_0xfa74('0x118')](db[_0xfa74('0x7d')],{'onDelete':_0xfa74('0x168'),'foreignKey':_0xfa74('0x169')});db[_0xfa74('0x52')][_0xfa74('0x118')](db[_0xfa74('0x86')],{'onDelete':_0xfa74('0x168'),'foreignKey':_0xfa74('0x16a')});db[_0xfa74('0x176')][_0xfa74('0x10c')](db[_0xfa74('0x54')],{'as':_0xfa74('0x149'),'onDelete':'cascade','foreignKey':'SmsInteractionId'});db[_0xfa74('0x176')][_0xfa74('0x118')](db['SmsAccount'],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x175')});db[_0xfa74('0x176')][_0xfa74('0x118')](db['CmContact'],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0x176')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'as':'Owner','foreignKey':'UserId'});db[_0xfa74('0x176')][_0xfa74('0x119')](db['Tag'],{'through':_0xfa74('0x177'),'as':_0xfa74('0x163')});db[_0xfa74('0x176')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':'sms_interaction_has_tags','as':_0xfa74('0x16f')});db[_0xfa74('0x176')]['belongsToMany'](db[_0xfa74('0x10')],{'as':_0xfa74('0x170'),'through':_0xfa74('0x122'),'foreignKey':_0xfa74('0x178')});db[_0xfa74('0x54')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'as':'User'});db['SmsMessage']['belongsTo'](db[_0xfa74('0x6c')],{'onDelete':'cascade','as':'Contact'});db['SmsMessage'][_0xfa74('0x118')](db['SmsInteraction'],{'onDelete':_0xfa74('0x10a'),'as':_0xfa74('0x164'),'foreignKey':'SmsInteractionId'});db[_0xfa74('0x54')][_0xfa74('0x118')](db[_0xfa74('0x134')],{'as':'Account','foreignKey':_0xfa74('0x175')});db[_0xfa74('0x56')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':_0xfa74('0x33'),'foreignKey':_0xfa74('0x179')});db[_0xfa74('0x56')][_0xfa74('0x119')](db[_0xfa74('0x15e')],{'through':_0xfa74('0x17a'),'as':_0xfa74('0x146')});db[_0xfa74('0x58')][_0xfa74('0x10c')](db[_0xfa74('0x7a')],{'as':'Dispositions','foreignKey':_0xfa74('0x17b'),'onDelete':'cascade'});db[_0xfa74('0x58')][_0xfa74('0x10c')](db[_0xfa74('0x79')],{'as':_0xfa74('0x157'),'foreignKey':_0xfa74('0x17b')});db[_0xfa74('0x58')][_0xfa74('0x10c')](db[_0xfa74('0x5c')],{'as':_0xfa74('0x158'),'foreignKey':_0xfa74('0x17b')});db[_0xfa74('0x58')][_0xfa74('0x10c')](db[_0xfa74('0x5e')],{'as':'Messages','foreignKey':_0xfa74('0x17b')});db[_0xfa74('0x58')][_0xfa74('0x10c')](db[_0xfa74('0x5a')],{'as':_0xfa74('0x138'),'foreignKey':_0xfa74('0x17b')});db[_0xfa74('0x58')][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x58')]['belongsTo'](db[_0xfa74('0x17c')],{'as':_0xfa74('0x15c'),'foreignKey':_0xfa74('0x15d')});db[_0xfa74('0x58')]['belongsToMany'](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':_0xfa74('0x133')});db['OpenchannelApplication'][_0xfa74('0x118')](db[_0xfa74('0x10')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0x5a')]['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0xfa74('0x168'),'foreignKey':_0xfa74('0x17d')});db[_0xfa74('0x5a')][_0xfa74('0x118')](db[_0xfa74('0x58')],{'onDelete':'restrict','foreignKey':_0xfa74('0x17b')});db['OpenchannelApplication']['belongsTo'](db[_0xfa74('0x7d')],{'onDelete':'restrict','foreignKey':_0xfa74('0x169')});db[_0xfa74('0x5a')][_0xfa74('0x118')](db[_0xfa74('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xfa74('0x5c')][_0xfa74('0x10c')](db['OpenchannelMessage'],{'as':_0xfa74('0x149'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x17e')});db[_0xfa74('0x5c')][_0xfa74('0x118')](db['OpenchannelAccount'],{'as':_0xfa74('0x161'),'foreignKey':'OpenchannelAccountId'});db[_0xfa74('0x5c')][_0xfa74('0x118')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0xfa74('0x5c')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'as':_0xfa74('0x17f'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x5c')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':_0xfa74('0x180'),'as':_0xfa74('0x163')});db[_0xfa74('0x5c')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':'openchannel_interaction_has_tags','as':'ThroughTags'});db['OpenchannelInteraction']['belongsToMany'](db[_0xfa74('0x10')],{'as':_0xfa74('0x170'),'through':'user_has_openchannel_interactions','foreignKey':_0xfa74('0x17e')});db[_0xfa74('0x5e')]['belongsTo'](db[_0xfa74('0x10')],{'onDelete':'cascade','as':_0xfa74('0x10')});db[_0xfa74('0x5e')][_0xfa74('0x118')](db['CmContact'],{'onDelete':_0xfa74('0x10a'),'as':_0xfa74('0x150')});db[_0xfa74('0x5e')][_0xfa74('0x118')](db[_0xfa74('0x5c')],{'onDelete':_0xfa74('0x10a'),'as':'Interaction','foreignKey':_0xfa74('0x17e')});db[_0xfa74('0x5e')][_0xfa74('0x118')](db[_0xfa74('0x172')],{'as':_0xfa74('0x172'),'foreignKey':_0xfa74('0x173')});db[_0xfa74('0x5e')]['belongsTo'](db[_0xfa74('0x58')],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x17b')});db[_0xfa74('0x5f')][_0xfa74('0x119')](db['User'],{'as':_0xfa74('0x145'),'through':_0xfa74('0x34'),'foreignKey':_0xfa74('0x17d')});db[_0xfa74('0x5f')][_0xfa74('0x119')](db['Team'],{'through':'team_has_openchannel_queues','as':_0xfa74('0x146')});db[_0xfa74('0x12b')][_0xfa74('0x10c')](db['Disposition'],{'as':_0xfa74('0x156'),'foreignKey':_0xfa74('0x165'),'onDelete':'cascade'});db[_0xfa74('0x12b')]['hasMany'](db[_0xfa74('0x79')],{'as':_0xfa74('0x157'),'foreignKey':_0xfa74('0x165')});db[_0xfa74('0x12b')][_0xfa74('0x10c')](db[_0xfa74('0x69')],{'as':_0xfa74('0x181')});db['ChatWebsite'][_0xfa74('0x10c')](db['ChatInteraction'],{'as':_0xfa74('0x158')});db[_0xfa74('0x12b')][_0xfa74('0x10c')](db[_0xfa74('0x63')],{'as':_0xfa74('0x138')});db[_0xfa74('0x12b')][_0xfa74('0x10c')](db[_0xfa74('0x182')],{'as':_0xfa74('0x149')});db[_0xfa74('0x12b')]['belongsTo'](db[_0xfa74('0xe9')],{'as':'List','foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x12b')][_0xfa74('0x118')](db[_0xfa74('0x7d')],{'as':_0xfa74('0x7d'),'foreignKey':'IntervalId'});db[_0xfa74('0x12b')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{'as':'MailAccount','foreignKey':_0xfa74('0x152')});db[_0xfa74('0x12b')]['belongsTo'](db[_0xfa74('0x17c')],{'as':_0xfa74('0x15c'),'foreignKey':_0xfa74('0x15d')});db['ChatWebsite'][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':'Agents','through':_0xfa74('0x12d')});db['OpenchannelQueueReport'][_0xfa74('0x118')](db[_0xfa74('0x58')],{});db[_0xfa74('0x61')][_0xfa74('0x118')](db['CmList'],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x61')][_0xfa74('0x118')](db[_0xfa74('0x6c')],{'as':_0xfa74('0x150'),'foreignKey':'ContactId'});db[_0xfa74('0x61')][_0xfa74('0x118')](db[_0xfa74('0x5c')],{});db[_0xfa74('0x61')][_0xfa74('0x118')](db[_0xfa74('0x5e')],{});db['OpenchannelQueueReport'][_0xfa74('0x118')](db[_0xfa74('0x10')],{});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelQueue'],{});db[_0xfa74('0x63')]['belongsTo'](db[_0xfa74('0x10')],{'as':'Agent','foreignKey':'UserId','onDelete':_0xfa74('0x168')});db[_0xfa74('0x63')]['belongsTo'](db['ChatQueue'],{'as':_0xfa74('0x183'),'foreignKey':_0xfa74('0x184'),'onDelete':_0xfa74('0x168')});db['ChatApplication']['belongsTo'](db[_0xfa74('0x12b')],{'as':_0xfa74('0x185'),'foreignKey':_0xfa74('0x165'),'onDelete':_0xfa74('0x168')});db[_0xfa74('0x63')][_0xfa74('0x118')](db[_0xfa74('0x86')],{'onDelete':_0xfa74('0x168'),'foreignKey':'TagId'});db[_0xfa74('0x64')][_0xfa74('0x10c')](db[_0xfa74('0x182')],{'as':_0xfa74('0x149'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x186')});db[_0xfa74('0x64')][_0xfa74('0x118')](db[_0xfa74('0x12b')],{'as':_0xfa74('0x161'),'foreignKey':'ChatWebsiteId'});db[_0xfa74('0x64')][_0xfa74('0x118')](db['CmContact'],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db['ChatInteraction'][_0xfa74('0x118')](db['User'],{'as':_0xfa74('0x17f'),'foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x64')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':_0xfa74('0x187'),'as':_0xfa74('0x163')});db[_0xfa74('0x64')][_0xfa74('0x119')](db['Tag'],{'through':_0xfa74('0x187'),'as':'ThroughTags'});db['ChatInteraction'][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x170'),'through':_0xfa74('0x188'),'foreignKey':_0xfa74('0x186')});db[_0xfa74('0x182')][_0xfa74('0x118')](db['User'],{'onDelete':'cascade','as':_0xfa74('0x10')});db['ChatMessage'][_0xfa74('0x118')](db[_0xfa74('0x6c')],{'onDelete':'cascade','as':'Contact','foreignKey':_0xfa74('0x151')});db[_0xfa74('0x182')][_0xfa74('0x118')](db['ChatInteraction'],{'onDelete':'cascade','as':_0xfa74('0x164'),'foreignKey':_0xfa74('0x186')});db[_0xfa74('0x182')][_0xfa74('0x118')](db[_0xfa74('0x172')],{'as':_0xfa74('0x172'),'foreignKey':_0xfa74('0x173')});db[_0xfa74('0x182')][_0xfa74('0x118')](db[_0xfa74('0x12b')],{'as':_0xfa74('0x161'),'foreignKey':'ChatWebsiteId'});db['ChatOfflineMessage'][_0xfa74('0x10c')](db[_0xfa74('0x172')],{'as':_0xfa74('0x189'),'foreignKey':'ChatOfflineMessageId','onDelete':_0xfa74('0x10a'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':'Contact','foreignKey':'ContactId'});db[_0xfa74('0x166')]['belongsTo'](db['ChatWebsite'],{'as':'Account','foreignKey':'ChatWebsiteId'});db['ChatQueue'][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':'UserChatQueue','hooks':!![]});db[_0xfa74('0x66')][_0xfa74('0x119')](db['Team'],{'through':_0xfa74('0x18a'),'as':'Teams'});db[_0xfa74('0x68')][_0xfa74('0x10c')](db['ChatInternalMessage'],{'as':'Messages','foreignKey':_0xfa74('0x18b'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x68')][_0xfa74('0x119')](db['User'],{'as':'Members','through':_0xfa74('0x11a')});db[_0xfa74('0x69')][_0xfa74('0x118')](db[_0xfa74('0x12b')],{'as':_0xfa74('0x185'),'foreignKey':_0xfa74('0x165')});db[_0xfa74('0x6a')]['hasMany'](db[_0xfa74('0x6c')],{'as':'Contacts','foreignKey':_0xfa74('0x18c')});db[_0xfa74('0x6c')][_0xfa74('0x10c')](db['CmHopper'],{'as':_0xfa74('0x13c'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0x6c')][_0xfa74('0x10c')](db['CmHopperFinal'],{'as':_0xfa74('0x10f'),'foreignKey':'ContactId'});db[_0xfa74('0x6c')]['hasMany'](db['CmHopperHistory'],{'as':_0xfa74('0x13d'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0x6c')]['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xfa74('0x151')});db['CmContact']['hasMany'](db[_0xfa74('0xcb')],{'as':'JscriptySessions','foreignKey':_0xfa74('0x151')});db['CmContact'][_0xfa74('0x10c')](db[_0xfa74('0x5c')],{'as':_0xfa74('0x111'),'foreignKey':'ContactId','onDelete':_0xfa74('0x168')});db['CmContact'][_0xfa74('0x10c')](db['ChatInteraction'],{'as':_0xfa74('0x121'),'foreignKey':_0xfa74('0x151'),'onDelete':_0xfa74('0x168')});db[_0xfa74('0x6c')][_0xfa74('0x10c')](db[_0xfa74('0x176')],{'as':_0xfa74('0x112'),'foreignKey':_0xfa74('0x151'),'onDelete':_0xfa74('0x168')});db[_0xfa74('0x6c')]['hasMany'](db[_0xfa74('0x4a')],{'as':'FaxInteractions','foreignKey':_0xfa74('0x151'),'onDelete':_0xfa74('0x168')});db[_0xfa74('0x6c')][_0xfa74('0x10c')](db['MailInteraction'],{'as':_0xfa74('0x11f'),'foreignKey':'ContactId','onDelete':_0xfa74('0x168')});db[_0xfa74('0x6c')][_0xfa74('0x118')](db[_0xfa74('0x6a')],{'as':_0xfa74('0x18d'),'foreignKey':_0xfa74('0x18c')});db['CmContact'][_0xfa74('0x118')](db['CmList'],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x6c')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x170'),'through':_0xfa74('0x11c')});db['CmContact'][_0xfa74('0x119')](db[_0xfa74('0x86')],{'as':_0xfa74('0x163'),'through':_0xfa74('0x18e')});db[_0xfa74('0x6c')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':'cm_contact_has_tags','as':'ThroughTags'});db[_0xfa74('0x6d')][_0xfa74('0x118')](db['CmContact'],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x6d')]['belongsTo'](db[_0xfa74('0xe9')],{'as':'List','foreignKey':_0xfa74('0x15a'),'onDelete':_0xfa74('0x10a')});db['CmHopper'][_0xfa74('0x118')](db[_0xfa74('0x10')],{'as':'Agent','foreignKey':_0xfa74('0x10b')});db[_0xfa74('0x6d')][_0xfa74('0x118')](db[_0xfa74('0x1b')],{'as':_0xfa74('0x183'),'foreignKey':_0xfa74('0x13b'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x6d')][_0xfa74('0x118')](db[_0xfa74('0xdd')],{'as':_0xfa74('0xdd'),'foreignKey':_0xfa74('0x18f'),'onDelete':_0xfa74('0x10a')});db['CmHopper'][_0xfa74('0x118')](db[_0xfa74('0x10')],{'as':_0xfa74('0x17f'),'foreignKey':_0xfa74('0x190')});db[_0xfa74('0x13e')]['belongsTo'](db[_0xfa74('0x6c')],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151'),'onDelete':'cascade'});db[_0xfa74('0x13e')][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x13e')][_0xfa74('0x118')](db[_0xfa74('0x1b')],{'as':_0xfa74('0x183'),'foreignKey':'VoiceQueueId','onDelete':_0xfa74('0x10a')});db[_0xfa74('0x13e')]['belongsTo'](db['Campaign'],{'as':_0xfa74('0xdd'),'foreignKey':_0xfa74('0x18f'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x77')][_0xfa74('0x10c')](db[_0xfa74('0x7b')],{'as':{'plural':_0xfa74('0x191'),'singular':_0xfa74('0x192')},'foreignKey':_0xfa74('0x193'),'onDelete':_0xfa74('0x10a'),'hooks':!![]});db['Automation'][_0xfa74('0x10c')](db[_0xfa74('0x7b')],{'as':{'plural':_0xfa74('0x194'),'singular':'OneAny'},'foreignKey':_0xfa74('0x195'),'onDelete':'cascade','hooks':!![]});db[_0xfa74('0x77')][_0xfa74('0x10c')](db[_0xfa74('0x75')],{'as':_0xfa74('0x196'),'foreignKey':'AutomationId','onDelete':_0xfa74('0x10a'),'hooks':!![]});db[_0xfa74('0x7a')][_0xfa74('0x10c')](db[_0xfa74('0x7a')],{'as':_0xfa74('0x156'),'foreignKey':_0xfa74('0x197'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x7d')][_0xfa74('0x10c')](db[_0xfa74('0x7d')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':'cascade','hooks':!![],'required':![]});db[_0xfa74('0x7d')][_0xfa74('0x10c')](db[_0xfa74('0x17')],{'as':_0xfa74('0x10e'),'foreignKey':_0xfa74('0x169'),'onDelete':_0xfa74('0x168')});db[_0xfa74('0x7d')][_0xfa74('0x10c')](db['MailApplication'],{'as':'MailApplications','foreignKey':_0xfa74('0x169')});db[_0xfa74('0x7d')][_0xfa74('0x10c')](db[_0xfa74('0x63')],{'as':_0xfa74('0x198'),'foreignKey':_0xfa74('0x169')});db[_0xfa74('0x7d')][_0xfa74('0x10c')](db['FaxApplication'],{'as':_0xfa74('0x199'),'foreignKey':_0xfa74('0x169')});db[_0xfa74('0x7d')][_0xfa74('0x10c')](db[_0xfa74('0x52')],{'as':_0xfa74('0x19a'),'foreignKey':'IntervalId'});db[_0xfa74('0x19b')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{});db['Schedule'][_0xfa74('0x118')](db[_0xfa74('0x93')],{'foreignKey':'DefaultReportId'});db['Schedule'][_0xfa74('0x118')](db[_0xfa74('0x91')],{'foreignKey':_0xfa74('0x19c')});db[_0xfa74('0x84')][_0xfa74('0x119')](db[_0xfa74('0x19')],{'as':'Mohs','through':'moh_has_sounds','onDelete':_0xfa74('0x168')});db['Tag'][_0xfa74('0x119')](db[_0xfa74('0x6c')],{'through':'cm_contact_has_tags'});db[_0xfa74('0x86')][_0xfa74('0x119')](db[_0xfa74('0x64')],{'through':_0xfa74('0x187')});db[_0xfa74('0x86')][_0xfa74('0x119')](db[_0xfa74('0x114')],{'through':_0xfa74('0x162')});db['Tag'][_0xfa74('0x119')](db[_0xfa74('0x176')],{'through':_0xfa74('0x177')});db[_0xfa74('0x86')]['belongsToMany'](db['FaxInteraction'],{'through':_0xfa74('0x16e')});db['Tag']['belongsToMany'](db[_0xfa74('0x5c')],{'through':'openchannel_interaction_has_tags'});db[_0xfa74('0x86')]['belongsToMany'](db['WhatsappInteraction'],{'through':_0xfa74('0x19d')});db['Trigger'][_0xfa74('0x10c')](db[_0xfa74('0x7b')],{'as':{'plural':_0xfa74('0x19e'),'singular':_0xfa74('0x19f')},'foreignKey':_0xfa74('0x1a0'),'onDelete':_0xfa74('0x10a'),'hooks':!![]});db[_0xfa74('0x1a1')]['hasMany'](db[_0xfa74('0x7b')],{'as':{'plural':'AnyConditions','singular':_0xfa74('0x1a2')},'foreignKey':_0xfa74('0x1a3'),'onDelete':_0xfa74('0x10a'),'hooks':!![]});db['Trigger']['hasMany'](db['Action'],{'as':_0xfa74('0x196'),'foreignKey':_0xfa74('0x1a4'),'onDelete':_0xfa74('0x10a'),'hooks':!![]});db[_0xfa74('0x91')][_0xfa74('0x10c')](db[_0xfa74('0x1a5')],{'as':'Fields','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x19c'),'hooks':!![]});db[_0xfa74('0x93')][_0xfa74('0x10c')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1a6')});db[_0xfa74('0x96')][_0xfa74('0x10c')](db['AnalyticFieldReport'],{'as':_0xfa74('0x1a7'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1a8')});db[_0xfa74('0x1a5')][_0xfa74('0x118')](db['AnalyticMetric'],{'foreignKey':'MetricId'});db[_0xfa74('0x1a9')][_0xfa74('0x10c')](db[_0xfa74('0x9b')],{'as':_0xfa74('0x1aa'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0x9b')]['hasMany'](db[_0xfa74('0x1ac')],{'as':'Subjects','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0x9b')]['hasMany'](db[_0xfa74('0x1ac')],{'as':_0xfa74('0x1ae'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1af')});db['SalesforceConfiguration'][_0xfa74('0x10c')](db['SalesforceField'],{'as':_0xfa74('0x1a7'),'onDelete':'cascade','foreignKey':_0xfa74('0x1b0')});db['SalesforceConfiguration']['belongsTo'](db[_0xfa74('0x1a9')],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0x1ac')][_0xfa74('0x10c')](db[_0xfa74('0x1ac')],{'as':_0xfa74('0x1b1'),'foreignKey':'SubjectId'});db[_0xfa74('0x1ac')]['hasMany'](db[_0xfa74('0x1ac')],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0x1ac')]['hasMany'](db['SalesforceField'],{'as':'Field','foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0x1ac')][_0xfa74('0x118')](db[_0xfa74('0x8b')],{'as':'Variable','foreignKey':'VariableId'});db[_0xfa74('0x9d')][_0xfa74('0x10c')](db[_0xfa74('0x9f')],{'as':'Configurations','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1ab')});db['SugarcrmConfiguration'][_0xfa74('0x10c')](db[_0xfa74('0xa1')],{'as':_0xfa74('0x1b3'),'onDelete':'cascade','foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0x9f')][_0xfa74('0x10c')](db[_0xfa74('0xa1')],{'as':_0xfa74('0x1ae'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0x9f')][_0xfa74('0x10c')](db[_0xfa74('0xa1')],{'as':'Fields','onDelete':'cascade','foreignKey':'FieldId'});db[_0xfa74('0x9f')][_0xfa74('0x118')](db[_0xfa74('0x9d')],{'as':_0xfa74('0x161'),'foreignKey':'AccountId'});db[_0xfa74('0xa1')][_0xfa74('0x10c')](db['SugarcrmField'],{'as':_0xfa74('0x1b1'),'foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0xa1')]['hasMany'](db['SugarcrmField'],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0xa1')][_0xfa74('0x10c')](db[_0xfa74('0xa1')],{'as':_0xfa74('0x1b4'),'foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0xa1')][_0xfa74('0x118')](db[_0xfa74('0x8b')],{'as':_0xfa74('0x8b'),'foreignKey':_0xfa74('0x1b5')});db[_0xfa74('0x1b6')]['hasMany'](db[_0xfa74('0xa4')],{'as':_0xfa74('0x1aa'),'onDelete':'cascade','foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0xa4')][_0xfa74('0x10c')](db['DeskField'],{'as':_0xfa74('0x1b3'),'onDelete':_0xfa74('0x10a'),'foreignKey':'SubjectId'});db[_0xfa74('0xa4')][_0xfa74('0x10c')](db[_0xfa74('0x1b7')],{'as':_0xfa74('0x1ae'),'onDelete':'cascade','foreignKey':'DescriptionId'});db['DeskConfiguration'][_0xfa74('0x10c')](db[_0xfa74('0x1b7')],{'as':'Fields','onDelete':'cascade','foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0xa4')][_0xfa74('0x118')](db[_0xfa74('0x1b6')],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x1ab')});db['DeskConfiguration'][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':_0xfa74('0x1b8')});db[_0xfa74('0x1b7')][_0xfa74('0x10c')](db[_0xfa74('0x1b7')],{'as':_0xfa74('0x1b1'),'foreignKey':'SubjectId'});db[_0xfa74('0x1b7')][_0xfa74('0x10c')](db['DeskField'],{'as':'Description','foreignKey':_0xfa74('0x1af')});db['DeskField']['hasMany'](db[_0xfa74('0x1b7')],{'as':_0xfa74('0x1b4'),'foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0x1b7')][_0xfa74('0x118')](db[_0xfa74('0x8b')],{'as':_0xfa74('0x8b'),'foreignKey':'VariableId'});db[_0xfa74('0xa6')][_0xfa74('0x10c')](db[_0xfa74('0xa8')],{'as':_0xfa74('0x1aa'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0xa8')][_0xfa74('0x10c')](db['ZohoField'],{'as':_0xfa74('0x1b3'),'onDelete':_0xfa74('0x10a'),'foreignKey':'SubjectId'});db['ZohoConfiguration'][_0xfa74('0x10c')](db[_0xfa74('0xaa')],{'as':_0xfa74('0x1ae'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xfa74('0xa8')][_0xfa74('0x10c')](db[_0xfa74('0xaa')],{'as':_0xfa74('0x1a7'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1b0')});db['ZohoConfiguration'][_0xfa74('0x118')](db[_0xfa74('0xa6')],{'as':_0xfa74('0x161'),'foreignKey':'AccountId'});db['ZohoField']['hasMany'](db[_0xfa74('0xaa')],{'as':_0xfa74('0x1b1'),'foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0xaa')][_0xfa74('0x10c')](db['ZohoField'],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0xaa')]['hasMany'](db[_0xfa74('0xaa')],{'as':'Field','foreignKey':'FieldId'});db[_0xfa74('0xaa')][_0xfa74('0x118')](db[_0xfa74('0x8b')],{'as':_0xfa74('0x8b'),'foreignKey':_0xfa74('0x1b5')});db[_0xfa74('0x1b9')][_0xfa74('0x10c')](db[_0xfa74('0xab')],{'as':_0xfa74('0x1aa'),'onDelete':_0xfa74('0x10a'),'foreignKey':'AccountId'});db[_0xfa74('0xab')][_0xfa74('0x10c')](db[_0xfa74('0x1ba')],{'as':_0xfa74('0x1b3'),'foreignKey':'SubjectId'});db[_0xfa74('0xab')][_0xfa74('0x10c')](db[_0xfa74('0x1ba')],{'as':_0xfa74('0x1ae'),'foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0xfa74('0x10c')](db[_0xfa74('0x1ba')],{'as':_0xfa74('0x1a7'),'foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0xab')][_0xfa74('0x118')](db['ZendeskAccount'],{'as':_0xfa74('0x161'),'foreignKey':'AccountId'});db[_0xfa74('0xab')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':'int_zendesk_configuration_has_tags'});db['ZendeskField']['hasMany'](db['ZendeskField'],{'as':_0xfa74('0x1b1'),'foreignKey':'SubjectId'});db[_0xfa74('0x1ba')][_0xfa74('0x10c')](db[_0xfa74('0x1ba')],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0x1ba')][_0xfa74('0x10c')](db[_0xfa74('0x1ba')],{'as':'Field','foreignKey':'FieldId'});db['ZendeskField']['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0xfa74('0x1b5')});db['FreshdeskAccount'][_0xfa74('0x10c')](db['FreshdeskConfiguration'],{'as':_0xfa74('0x1aa'),'onDelete':_0xfa74('0x10a'),'foreignKey':'AccountId'});db['FreshdeskConfiguration'][_0xfa74('0x10c')](db['FreshdeskField'],{'as':_0xfa74('0x1b3'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xfa74('0xae')][_0xfa74('0x10c')](db[_0xfa74('0x1bb')],{'as':_0xfa74('0x1ae'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xfa74('0xae')][_0xfa74('0x10c')](db[_0xfa74('0x1bb')],{'as':_0xfa74('0x1a7'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1b0')});db['FreshdeskConfiguration'][_0xfa74('0x118')](db['FreshdeskAccount'],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x1ab')});db['FreshdeskConfiguration'][_0xfa74('0x119')](db['Tag'],{'through':_0xfa74('0x1bc')});db['FreshdeskField'][_0xfa74('0x10c')](db['FreshdeskField'],{'as':_0xfa74('0x1b1'),'foreignKey':'SubjectId'});db['FreshdeskField'][_0xfa74('0x10c')](db[_0xfa74('0x1bb')],{'as':'Description','foreignKey':_0xfa74('0x1af')});db['FreshdeskField'][_0xfa74('0x10c')](db[_0xfa74('0x1bb')],{'as':_0xfa74('0x1b4'),'foreignKey':_0xfa74('0x1b0')});db['FreshdeskField']['belongsTo'](db[_0xfa74('0x8b')],{'as':'Variable','foreignKey':_0xfa74('0x1b5')});db[_0xfa74('0xb1')][_0xfa74('0x10c')](db[_0xfa74('0x1bd')],{'as':_0xfa74('0x1aa'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0x1bd')][_0xfa74('0x10c')](db[_0xfa74('0xb3')],{'as':_0xfa74('0x1b3'),'foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0x1bd')][_0xfa74('0x10c')](db[_0xfa74('0xb3')],{'as':_0xfa74('0x1ae'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0x1bd')][_0xfa74('0x10c')](db['VtigerField'],{'as':_0xfa74('0x1a7'),'foreignKey':_0xfa74('0x1b0')});db['VtigerConfiguration'][_0xfa74('0x118')](db[_0xfa74('0xb1')],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0xb3')]['hasMany'](db[_0xfa74('0xb3')],{'as':_0xfa74('0x1b1'),'foreignKey':'SubjectId'});db[_0xfa74('0xb3')][_0xfa74('0x10c')](db[_0xfa74('0xb3')],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0xb3')][_0xfa74('0x10c')](db[_0xfa74('0xb3')],{'as':_0xfa74('0x1b4'),'foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0xb3')][_0xfa74('0x118')](db['Variable'],{'as':'Variable','foreignKey':_0xfa74('0x1b5')});db[_0xfa74('0xb5')]['hasMany'](db['ServicenowConfiguration'],{'as':'Configurations','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1ab')});db['ServicenowConfiguration'][_0xfa74('0x10c')](db[_0xfa74('0xb9')],{'as':_0xfa74('0x1b3'),'foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0xb7')][_0xfa74('0x10c')](db['ServicenowField'],{'as':_0xfa74('0x1ae'),'foreignKey':'DescriptionId'});db[_0xfa74('0xb7')][_0xfa74('0x10c')](db[_0xfa74('0xb9')],{'as':_0xfa74('0x1a7'),'foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0xb7')][_0xfa74('0x118')](db['ServicenowAccount'],{'as':'Account','foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0xb9')][_0xfa74('0x10c')](db[_0xfa74('0xb9')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xfa74('0xb9')][_0xfa74('0x10c')](db[_0xfa74('0xb9')],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0xb9')]['hasMany'](db[_0xfa74('0xb9')],{'as':_0xfa74('0x1b4'),'foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0xb9')][_0xfa74('0x118')](db[_0xfa74('0x8b')],{'as':'Variable','foreignKey':_0xfa74('0x1b5')});db[_0xfa74('0xbb')]['hasMany'](db[_0xfa74('0xbd')],{'as':_0xfa74('0x1aa'),'onDelete':_0xfa74('0x10a'),'foreignKey':'AccountId'});db['Dynamics365Configuration'][_0xfa74('0x10c')](db['Dynamics365Field'],{'as':_0xfa74('0x1b3'),'onDelete':_0xfa74('0x10a'),'foreignKey':'SubjectId'});db[_0xfa74('0xbd')][_0xfa74('0x10c')](db[_0xfa74('0xbf')],{'as':_0xfa74('0x1ae'),'onDelete':'cascade','foreignKey':_0xfa74('0x1af')});db['Dynamics365Configuration'][_0xfa74('0x10c')](db[_0xfa74('0xbf')],{'as':_0xfa74('0x1a7'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1b0')});db['Dynamics365Configuration'][_0xfa74('0x118')](db['Dynamics365Account'],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0xbf')]['hasMany'](db[_0xfa74('0xbf')],{'as':_0xfa74('0x1b1'),'foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0xbf')][_0xfa74('0x10c')](db['Dynamics365Field'],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0xbf')]['hasMany'](db[_0xfa74('0xbf')],{'as':_0xfa74('0x1b4'),'foreignKey':_0xfa74('0x1b0')});db[_0xfa74('0xbf')]['belongsTo'](db[_0xfa74('0x8b')],{'as':_0xfa74('0x8b'),'foreignKey':_0xfa74('0x1b5')});db[_0xfa74('0xc0')][_0xfa74('0x10c')](db['FreshsalesConfiguration'],{'as':_0xfa74('0x1aa'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1ab')});db[_0xfa74('0xc2')]['hasMany'](db['FreshsalesField'],{'as':_0xfa74('0x1b3'),'foreignKey':_0xfa74('0x1ad')});db[_0xfa74('0xc2')][_0xfa74('0x10c')](db[_0xfa74('0xc3')],{'as':_0xfa74('0x1ae'),'foreignKey':'DescriptionId'});db[_0xfa74('0xc2')]['hasMany'](db[_0xfa74('0xc3')],{'as':_0xfa74('0x1a7'),'foreignKey':_0xfa74('0x1b0')});db['FreshsalesConfiguration'][_0xfa74('0x118')](db[_0xfa74('0xc0')],{'as':'Account','foreignKey':_0xfa74('0x1ab')});db['FreshsalesField'][_0xfa74('0x10c')](db[_0xfa74('0xc3')],{'as':_0xfa74('0x1b1'),'foreignKey':'SubjectId'});db[_0xfa74('0xc3')][_0xfa74('0x10c')](db[_0xfa74('0xc3')],{'as':_0xfa74('0x1b2'),'foreignKey':_0xfa74('0x1af')});db[_0xfa74('0xc3')][_0xfa74('0x10c')](db[_0xfa74('0xc3')],{'as':_0xfa74('0x1b4'),'foreignKey':'FieldId'});db[_0xfa74('0xc3')]['belongsTo'](db[_0xfa74('0x8b')],{'as':_0xfa74('0x8b'),'foreignKey':_0xfa74('0x1b5')});db['ChatQueueReport'][_0xfa74('0x118')](db[_0xfa74('0x12b')],{});db['ChatQueueReport'][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0xc6')]['belongsTo'](db[_0xfa74('0x6c')],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db['ChatQueueReport'][_0xfa74('0x118')](db['ChatInteraction'],{});db[_0xfa74('0xc6')][_0xfa74('0x118')](db[_0xfa74('0x182')],{});db[_0xfa74('0xc6')]['belongsTo'](db[_0xfa74('0x10')],{});db['ChatQueueReport']['belongsTo'](db[_0xfa74('0x66')],{});db['ChatInternalMessage'][_0xfa74('0x118')](db[_0xfa74('0x10')],{'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1be')});db['ChatInternalMessage'][_0xfa74('0x118')](db[_0xfa74('0x10')],{'onDelete':_0xfa74('0x10a'),'foreignKey':'ToId'});db[_0xfa74('0xcb')][_0xfa74('0x10c')](db[_0xfa74('0xc9')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0xfa74('0xcb')][_0xfa74('0x10c')](db[_0xfa74('0xc8')],{'foreignKey':_0xfa74('0x1bf'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0x1c0')][_0xfa74('0x118')](db[_0xfa74('0x134')],{});db[_0xfa74('0x1c0')][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0x1c0')]['belongsTo'](db[_0xfa74('0x6c')],{'as':_0xfa74('0x150'),'foreignKey':'ContactId'});db['SmsQueueReport'][_0xfa74('0x118')](db[_0xfa74('0x176')],{});db[_0xfa74('0x1c0')][_0xfa74('0x118')](db['SmsMessage'],{});db[_0xfa74('0x1c0')][_0xfa74('0x118')](db['User'],{});db[_0xfa74('0x1c0')]['belongsTo'](db[_0xfa74('0x56')],{});db[_0xfa74('0xd1')][_0xfa74('0x10c')](db[_0xfa74('0xcb')],{'foreignKey':_0xfa74('0x1c1')});db[_0xfa74('0xd1')][_0xfa74('0x10c')](db['JscriptyQuestionReport'],{'foreignKey':'ProjectId'});db[_0xfa74('0xd1')]['hasMany'](db[_0xfa74('0xc8')],{'foreignKey':_0xfa74('0x1c1')});db[_0xfa74('0xd4')]['belongsToMany'](db[_0xfa74('0x10')],{'as':_0xfa74('0x170'),'through':_0xfa74('0x136')});db['Team']['belongsToMany'](db['User'],{'as':_0xfa74('0x145'),'through':_0xfa74('0x11e')});db[_0xfa74('0x15e')][_0xfa74('0x119')](db['VoiceQueue'],{'through':_0xfa74('0x103'),'as':_0xfa74('0x125')});db[_0xfa74('0x15e')]['belongsToMany'](db[_0xfa74('0x3b')],{'through':_0xfa74('0x15f'),'as':_0xfa74('0x1c2')});db[_0xfa74('0x15e')]['belongsToMany'](db[_0xfa74('0x66')],{'through':'team_has_chat_queues','as':_0xfa74('0x1c3')});db['Team']['belongsToMany'](db[_0xfa74('0x4d')],{'through':_0xfa74('0x174'),'as':_0xfa74('0x1c4')});db[_0xfa74('0x15e')][_0xfa74('0x119')](db[_0xfa74('0x56')],{'through':_0xfa74('0x17a'),'as':_0xfa74('0x1c5')});db['Team'][_0xfa74('0x119')](db['OpenchannelQueue'],{'through':_0xfa74('0x1c6'),'as':_0xfa74('0x128')});db['Team'][_0xfa74('0x119')](db[_0xfa74('0xff')],{'through':_0xfa74('0x1c7'),'as':'WhatsappQueues'});db[_0xfa74('0x15e')][_0xfa74('0x119')](db[_0xfa74('0xeb')],{'through':'TeamVoicePrefix','as':_0xfa74('0x126')});db[_0xfa74('0xdd')]['hasMany'](db['CmHopper'],{'as':'Hoppers','foreignKey':_0xfa74('0x18f')});db[_0xfa74('0xdd')][_0xfa74('0x10c')](db[_0xfa74('0x6f')],{'as':_0xfa74('0x10f'),'foreignKey':'CampaignId'});db[_0xfa74('0xdd')][_0xfa74('0x10c')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':'CampaignId'});db[_0xfa74('0xdd')][_0xfa74('0x10c')](db[_0xfa74('0x13e')],{'as':_0xfa74('0x13f'),'foreignKey':_0xfa74('0x18f')});db[_0xfa74('0xdd')][_0xfa74('0x118')](db[_0xfa74('0x141')],{'as':_0xfa74('0x141'),'foreignKey':_0xfa74('0x1c8')});db['Campaign'][_0xfa74('0x118')](db[_0xfa74('0x141')],{'as':_0xfa74('0x142'),'foreignKey':_0xfa74('0x1c9')});db[_0xfa74('0xdd')][_0xfa74('0x118')](db[_0xfa74('0x7d')],{'as':_0xfa74('0x7d'),'foreignKey':_0xfa74('0x169')});db[_0xfa74('0xdd')][_0xfa74('0x118')](db[_0xfa74('0xd4')],{'as':_0xfa74('0xd4'),'foreignKey':_0xfa74('0x1ca')});db[_0xfa74('0xdd')][_0xfa74('0x119')](db[_0xfa74('0xe9')],{'as':'Lists','through':'campaigns_has_cm_lists'});db[_0xfa74('0xdd')][_0xfa74('0x119')](db[_0xfa74('0xe9')],{'as':_0xfa74('0x147'),'through':_0xfa74('0x1cb')});db[_0xfa74('0x172')]['belongsTo'](db['ChatOfflineMessage'],{'as':_0xfa74('0x166'),'foreignKey':_0xfa74('0x167')});db['MailTransferReport'][_0xfa74('0x118')](db[_0xfa74('0x3f')],{});db[_0xfa74('0xe2')][_0xfa74('0x118')](db[_0xfa74('0x114')],{});db[_0xfa74('0xe2')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{'foreignKey':_0xfa74('0x1cc'),'as':_0xfa74('0x1cd')});db[_0xfa74('0xe2')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'foreignKey':'FromUserId','as':_0xfa74('0x1ce')});db[_0xfa74('0xe2')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'foreignKey':'ToUserId','as':_0xfa74('0x1cf')});db['MailTransferReport'][_0xfa74('0x118')](db[_0xfa74('0x3b')],{'foreignKey':_0xfa74('0x1d0'),'as':_0xfa74('0x1d1')});db[_0xfa74('0xe2')][_0xfa74('0x118')](db[_0xfa74('0x12f')],{'foreignKey':_0xfa74('0x1d2'),'as':_0xfa74('0x1d3')});db[_0xfa74('0xe4')][_0xfa74('0x118')](db[_0xfa74('0x182')],{});db[_0xfa74('0xe4')][_0xfa74('0x118')](db[_0xfa74('0x64')],{});db[_0xfa74('0xe4')]['belongsTo'](db[_0xfa74('0x12b')],{'foreignKey':_0xfa74('0x1d4'),'as':_0xfa74('0x1cd')});db[_0xfa74('0xe4')][_0xfa74('0x118')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xfa74('0xe4')]['belongsTo'](db[_0xfa74('0x10')],{'foreignKey':_0xfa74('0x1d5'),'as':'ToAgent'});db['ChatTransferReport'][_0xfa74('0x118')](db[_0xfa74('0x66')],{'foreignKey':_0xfa74('0x1d6'),'as':_0xfa74('0x1d1')});db[_0xfa74('0xe4')][_0xfa74('0x118')](db['ChatWebsite'],{'foreignKey':_0xfa74('0x1d7'),'as':_0xfa74('0x1d3')});db[_0xfa74('0xe6')]['belongsTo'](db[_0xfa74('0x4b')],{});db[_0xfa74('0xe6')][_0xfa74('0x118')](db[_0xfa74('0x4a')],{});db[_0xfa74('0xe6')][_0xfa74('0x118')](db[_0xfa74('0x46')],{'foreignKey':_0xfa74('0x1d8'),'as':_0xfa74('0x1cd')});db[_0xfa74('0xe6')][_0xfa74('0x118')](db['User'],{'foreignKey':_0xfa74('0x1d9'),'as':_0xfa74('0x1ce')});db[_0xfa74('0xe6')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'foreignKey':'ToUserId','as':_0xfa74('0x1cf')});db['FaxTransferReport'][_0xfa74('0x118')](db[_0xfa74('0x4d')],{'foreignKey':'ToFaxQueueId','as':_0xfa74('0x1d1')});db[_0xfa74('0xe6')]['belongsTo'](db[_0xfa74('0x46')],{'foreignKey':_0xfa74('0x1da'),'as':'ToAccount'});db[_0xfa74('0xe7')]['belongsTo'](db[_0xfa74('0x5e')],{});db[_0xfa74('0xe7')][_0xfa74('0x118')](db[_0xfa74('0x5c')],{});db[_0xfa74('0xe7')][_0xfa74('0x118')](db[_0xfa74('0x58')],{'foreignKey':_0xfa74('0x1db'),'as':'FromAccount'});db[_0xfa74('0xe7')][_0xfa74('0x118')](db['User'],{'foreignKey':_0xfa74('0x1d9'),'as':_0xfa74('0x1ce')});db[_0xfa74('0xe7')]['belongsTo'](db[_0xfa74('0x10')],{'foreignKey':_0xfa74('0x1d5'),'as':_0xfa74('0x1cf')});db[_0xfa74('0xe7')][_0xfa74('0x118')](db[_0xfa74('0x5f')],{'foreignKey':_0xfa74('0x1dc'),'as':'ToQueue'});db['OpenchannelTransferReport'][_0xfa74('0x118')](db['OpenchannelAccount'],{'foreignKey':_0xfa74('0x1dd'),'as':_0xfa74('0x1d3')});db[_0xfa74('0xe8')]['belongsTo'](db[_0xfa74('0x54')],{});db[_0xfa74('0xe8')][_0xfa74('0x118')](db[_0xfa74('0x176')],{});db[_0xfa74('0xe8')][_0xfa74('0x118')](db[_0xfa74('0x134')],{'foreignKey':_0xfa74('0x1de'),'as':_0xfa74('0x1cd')});db[_0xfa74('0xe8')][_0xfa74('0x118')](db['User'],{'foreignKey':_0xfa74('0x1d9'),'as':_0xfa74('0x1ce')});db[_0xfa74('0xe8')]['belongsTo'](db[_0xfa74('0x10')],{'foreignKey':'ToUserId','as':_0xfa74('0x1cf')});db[_0xfa74('0xe8')]['belongsTo'](db[_0xfa74('0x56')],{'foreignKey':_0xfa74('0x1df'),'as':'ToQueue'});db[_0xfa74('0xe8')][_0xfa74('0x118')](db[_0xfa74('0x134')],{'foreignKey':'ToSmsAccountId','as':_0xfa74('0x1d3')});db['CmList'][_0xfa74('0x10c')](db['Disposition'],{'as':_0xfa74('0x156'),'foreignKey':_0xfa74('0x15a'),'onDelete':'cascade'});db[_0xfa74('0xe9')][_0xfa74('0x10c')](db[_0xfa74('0x73')],{'as':_0xfa74('0x1e0'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0xe9')][_0xfa74('0x10c')](db['CmContact'],{'as':'Contacts','onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x15a')});db['CmList'][_0xfa74('0x10c')](db[_0xfa74('0x6f')],{'as':'HopperFinals','foreignKey':_0xfa74('0x15a')});db[_0xfa74('0xe9')][_0xfa74('0x10c')](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':_0xfa74('0x15a')});db[_0xfa74('0xe9')][_0xfa74('0x10c')](db['ReportAgentPreview'],{'as':_0xfa74('0x72'),'foreignKey':_0xfa74('0x15a')});db['CmList'][_0xfa74('0x119')](db['VoiceQueue'],{'as':_0xfa74('0x1e1'),'through':'voice_queues_has_cm_lists'});db['CmList']['belongsToMany'](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':_0xfa74('0x11d')});db[_0xfa74('0xeb')][_0xfa74('0x10c')](db[_0xfa74('0x17')],{'as':_0xfa74('0x10e'),'onDelete':'cascade'});db[_0xfa74('0xeb')][_0xfa74('0x119')](db['User'],{'as':_0xfa74('0x145'),'through':_0xfa74('0x107')});db[_0xfa74('0xeb')]['belongsToMany'](db[_0xfa74('0x15e')],{'through':_0xfa74('0x105'),'as':_0xfa74('0x146')});db[_0xfa74('0xed')][_0xfa74('0x10c')](db[_0xfa74('0x10')],{'as':'Users','foreignKey':_0xfa74('0x1e2')});db['UserProfile'][_0xfa74('0x10c')](db[_0xfa74('0xef')],{'as':_0xfa74('0x1e3'),'foreignKey':'userProfileId','onDelete':_0xfa74('0x10a')});db['UserProfileSection'][_0xfa74('0x10c')](db[_0xfa74('0xf1')],{'as':'Resources','foreignKey':_0xfa74('0x1e4'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0xf5')][_0xfa74('0x10c')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xfa74('0x1e5'),'onDelete':_0xfa74('0x10a')});db[_0xfa74('0xf5')][_0xfa74('0x10c')](db[_0xfa74('0x79')],{'as':'Answers','foreignKey':'WhatsappAccountId'});db[_0xfa74('0xf5')][_0xfa74('0x10c')](db['WhatsappMessage'],{'as':_0xfa74('0x149'),'foreignKey':_0xfa74('0x1e5')});db[_0xfa74('0xf5')][_0xfa74('0x10c')](db[_0xfa74('0xf9')],{'as':'Interactions'});db[_0xfa74('0xf5')][_0xfa74('0x10c')](db[_0xfa74('0xf7')],{'as':'Applications'});db[_0xfa74('0xf5')][_0xfa74('0x118')](db['CmList'],{'as':_0xfa74('0x159'),'foreignKey':_0xfa74('0x15a')});db[_0xfa74('0xf5')][_0xfa74('0x118')](db['Pause'],{'as':_0xfa74('0x15c'),'foreignKey':_0xfa74('0x15d')});db['WhatsappAccount'][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x145'),'through':_0xfa74('0x1e6')});db['WhatsappApplication'][_0xfa74('0x118')](db[_0xfa74('0x10')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0xf7')][_0xfa74('0x118')](db[_0xfa74('0xff')],{'onDelete':'restrict'});db[_0xfa74('0xf7')][_0xfa74('0x118')](db[_0xfa74('0xf5')],{'onDelete':_0xfa74('0x168')});db[_0xfa74('0xf7')][_0xfa74('0x118')](db[_0xfa74('0x7d')],{'onDelete':_0xfa74('0x168'),'foreignKey':_0xfa74('0x169')});db[_0xfa74('0xf7')]['belongsTo'](db[_0xfa74('0x86')],{'onDelete':_0xfa74('0x168'),'foreignKey':_0xfa74('0x16a')});db['WhatsappInteraction'][_0xfa74('0x10c')](db[_0xfa74('0x1e7')],{'as':_0xfa74('0x149'),'onDelete':_0xfa74('0x10a'),'foreignKey':_0xfa74('0x1e8')});db[_0xfa74('0xf9')][_0xfa74('0x118')](db['WhatsappAccount'],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x1e5')});db[_0xfa74('0xf9')][_0xfa74('0x118')](db[_0xfa74('0x6c')],{'as':_0xfa74('0x150'),'foreignKey':_0xfa74('0x151')});db[_0xfa74('0xf9')]['belongsTo'](db[_0xfa74('0x10')],{'as':_0xfa74('0x17f'),'foreignKey':_0xfa74('0x10b')});db['WhatsappInteraction'][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':_0xfa74('0x19d'),'as':_0xfa74('0x163')});db[_0xfa74('0xf9')][_0xfa74('0x119')](db[_0xfa74('0x86')],{'through':'whatsapp_interaction_has_tags','as':'ThroughTags'});db[_0xfa74('0xf9')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':_0xfa74('0x170'),'through':_0xfa74('0x124'),'foreignKey':_0xfa74('0x1e8')});db[_0xfa74('0x1e7')][_0xfa74('0x118')](db[_0xfa74('0x10')],{'as':_0xfa74('0x10')});db[_0xfa74('0x1e7')][_0xfa74('0x118')](db[_0xfa74('0x6c')],{'onDelete':'cascade','as':_0xfa74('0x150')});db[_0xfa74('0x1e7')][_0xfa74('0x118')](db[_0xfa74('0xf9')],{'onDelete':_0xfa74('0x10a'),'as':_0xfa74('0x164'),'foreignKey':_0xfa74('0x1e8')});db['WhatsappMessage']['belongsTo'](db[_0xfa74('0xf5')],{'as':_0xfa74('0x161'),'foreignKey':_0xfa74('0x1e5')});db[_0xfa74('0xfc')][_0xfa74('0x118')](db[_0xfa74('0xf5')],{});db['WhatsappQueueReport'][_0xfa74('0x118')](db[_0xfa74('0xe9')],{'as':'List','foreignKey':_0xfa74('0x15a')});db[_0xfa74('0xfc')]['belongsTo'](db[_0xfa74('0x6c')],{'as':'Contact','foreignKey':_0xfa74('0x151')});db[_0xfa74('0xfc')][_0xfa74('0x118')](db[_0xfa74('0xf9')],{});db[_0xfa74('0xfc')][_0xfa74('0x118')](db['WhatsappQueue'],{});db[_0xfa74('0xfc')][_0xfa74('0x118')](db[_0xfa74('0x1e7')],{});db[_0xfa74('0xfc')][_0xfa74('0x118')](db[_0xfa74('0x10')],{});db[_0xfa74('0xfe')][_0xfa74('0x118')](db[_0xfa74('0x1e7')],{});db[_0xfa74('0xfe')][_0xfa74('0x118')](db[_0xfa74('0xf9')],{});db['WhatsappTransferReport'][_0xfa74('0x118')](db[_0xfa74('0xf5')],{'foreignKey':'FromWhatsappAccountId','as':_0xfa74('0x1cd')});db[_0xfa74('0xfe')][_0xfa74('0x118')](db[_0xfa74('0xf5')],{'foreignKey':_0xfa74('0x1e9'),'as':'ToAccount'});db[_0xfa74('0xfe')][_0xfa74('0x118')](db[_0xfa74('0xff')],{'foreignKey':_0xfa74('0x1ea'),'as':_0xfa74('0x1d1')});db[_0xfa74('0xfe')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0xfa74('0x1ce')});db[_0xfa74('0xfe')]['belongsTo'](db['User'],{'foreignKey':_0xfa74('0x1d5'),'as':_0xfa74('0x1cf')});db[_0xfa74('0xff')][_0xfa74('0x119')](db[_0xfa74('0x10')],{'as':'Agents','through':'UserWhatsappQueue','foreignKey':'WhatsappQueueId'});db['WhatsappQueue']['belongsToMany'](db[_0xfa74('0x15e')],{'through':_0xfa74('0x1c7'),'as':_0xfa74('0x146')});module[_0xfa74('0x1eb')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x5c00=['CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','../api/template/template.model','Trigger','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','Setting','../api/setting/setting.model','SquareOdbc','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','Team','../api/team/team.model','../api/license/license.model','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','CloudProvider','../api/cloudProvider/cloudProvider.model','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','hasOne','VoiceMail','cascade','UserId','hasMany','VoiceRecording','Recordings','UserVoiceQueueRt','VoiceQueuesRt','Extensions','ReportAgentPreview','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_fax_interactions','user_has_sms_interactions','OpenchannelInteraction','VoiceQueues','MailQueue','ChatQueue','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','SpiedAgents','ChanSpyId','Applications','Sounds','Members','VoiceQueueId','HopperFinals','HopperHistories','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackup','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','Agents','Teams','TeamVoiceQueue','BlackLists','voice_queues_has_cm_blacklists','VoiceMailMessage','Messages','mailboxuser','mailbox','AgentReports','uniqueid','Contact','MailAccountId','Imap','Smtp','Dispositions','Answers','Interactions','List','ListId','Template','TemplateId','team_has_mail_queues','MailInteractionId','Account','Owner','Tag','mail_interaction_has_tags','Tags','ThroughTags','Users','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','FaxAccountId','Exntensions','TagId','fax_interaction_has_tags','FaxInteractionId','team_has_fax_queues','ContactId','SmsAccountId','SmsInteractionId','SmsQueueId','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','AttachmentId','team_has_openchannel_queues','Queue','ChatQueueId','Website','chat_interaction_has_tags','user_has_chat_interactions','ChatInteractionId','Attachments','UserChatQueue','team_has_chat_queues','ChatGroupId','CompanyId','Company','cm_user_has_contacts','cm_contact_has_tags','Agent','CampaignId','OwnerId','Automation','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','Intervals','ChatApplications','FaxApplications','SmsApplications','Schedule','AnalyticCustomReport','CustomReportId','Mohs','moh_has_sounds','sms_interaction_has_tags','whatsapp_interaction_has_tags','AllConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','SalesforceAccount','Configurations','AccountId','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Field','Variable','VariableId','SugarcrmAccount','Subject','Description','DeskField','int_desk_configuration_has_tags','int_zendesk_configuration_has_tags','FreshdeskField','FreshdeskAccount','int_freshdesk_configuration_has_tags','VtigerAccount','VtigerField','ServicenowConfiguration','ServicenowField','ToId','SessionId','ProjectId','JscriptyProject','user_has_square_projects','team_has_sms_queues','team_has_whatsapp_queues','VoicePrefixes','Hoppers','HopperBlacks','TrunkBackupId','SquareProjectId','Lists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToUserId','ToQueue','ToMailAccountId','FromChatWebsiteId','ToChatQueueId','ToChatWebsiteId','ToAccount','FromFaxAccountId','ToAgent','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsAccountId','CmCustomField','CustomFields','Queues','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','user_has_whatsapp_interactions','ToQueueId','WhatsappQueueId','exports','../config/environment','sequelize','lodash','determine','defaultsDeep','motion2','xcall','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','xC@LL1234','database','username','password','options','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','VoiceQueue','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model'];(function(_0x205559,_0x345dfd){var _0x190da4=function(_0x2ed47b){while(--_0x2ed47b){_0x205559['push'](_0x205559['shift']());}};_0x190da4(++_0x345dfd);}(_0x5c00,0x17e));var _0x05c0=function(_0x118749,_0x50e848){_0x118749=_0x118749-0x0;var _0x20d489=_0x5c00[_0x118749];return _0x20d489;};'use strict';var config=require(_0x05c0('0x0'));var Sequelize=require(_0x05c0('0x1'));var _=require(_0x05c0('0x2'));var jstz=require('jstz');var timezone=jstz[_0x05c0('0x3')]();config['sequelize']=_[_0x05c0('0x4')](config[_0x05c0('0x1')],{'database':_0x05c0('0x5'),'username':_0x05c0('0x6'),'password':'xC@LL1234','options':{'host':_0x05c0('0x7'),'port':0xcea,'dialect':_0x05c0('0x8'),'dialectOptions':{'charset':_0x05c0('0x9')},'logging':![],'timezone':timezone[_0x05c0('0xa')](),'define':{'charset':'utf8','collate':_0x05c0('0xb')}}});config[_0x05c0('0xc')]=_[_0x05c0('0x4')](config['sequelizeHistory'],{'database':_0x05c0('0x5'),'username':_0x05c0('0x6'),'password':_0x05c0('0xd'),'options':{'host':_0x05c0('0x7'),'port':0xcea,'dialect':_0x05c0('0x8'),'dialectOptions':{'charset':_0x05c0('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0x05c0('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0x05c0('0xe')],config[_0x05c0('0x1')][_0x05c0('0xf')],config['sequelize'][_0x05c0('0x10')],config['sequelize'][_0x05c0('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x05c0('0xc')][_0x05c0('0xe')],config[_0x05c0('0xc')][_0x05c0('0xf')],config[_0x05c0('0xc')][_0x05c0('0x10')],config[_0x05c0('0xc')]['options'])};db[_0x05c0('0x12')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x14'));db[_0x05c0('0x15')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x16'));db[_0x05c0('0x17')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x18'));db[_0x05c0('0x19')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x1a'));db[_0x05c0('0x1b')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0x05c0('0x1c')]=db[_0x05c0('0x1')]['import']('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x1d'));db[_0x05c0('0x1e')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x1f'));db['VoiceMail']=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/voiceMail/voiceMail.model');db['VoiceMailMessage']=db['sequelize']['import']('../api/voiceMailMessage/voiceMailMessage.model');db[_0x05c0('0x20')]=db[_0x05c0('0x1')]['import'](_0x05c0('0x21'));db[_0x05c0('0x22')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/voiceDialReport/voiceDialReport.model');db[_0x05c0('0x23')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x24'));db[_0x05c0('0x25')]=db[_0x05c0('0x1')]['import']('../api/voiceQueueReport/voiceQueueReport.model');db[_0x05c0('0x26')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x27'));db[_0x05c0('0x28')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x29'));db[_0x05c0('0x2a')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x2b'));db['UserVoiceQueueRt']=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x2c'));db[_0x05c0('0x2d')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x2e'));db['UserChatQueue']=db[_0x05c0('0x1')]['import'](_0x05c0('0x2f'));db[_0x05c0('0x30')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x31'));db[_0x05c0('0x32')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x33'));db[_0x05c0('0x34')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x35'));db[_0x05c0('0x36')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x37'));db[_0x05c0('0x38')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x39'));db[_0x05c0('0x3a')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x3b'));db[_0x05c0('0x3c')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x3d'));db[_0x05c0('0x3e')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x3f'));db['MailQueue']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x40'));db[_0x05c0('0x41')]=db['sequelize']['import'](_0x05c0('0x42'));db[_0x05c0('0x43')]=db[_0x05c0('0x1')]['import'](_0x05c0('0x44'));db[_0x05c0('0x45')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/mailMessage/mailMessage.model');db[_0x05c0('0x46')]=db[_0x05c0('0x1')]['import'](_0x05c0('0x47'));db[_0x05c0('0x48')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x49'));db[_0x05c0('0x4a')]=db[_0x05c0('0x1')]['import']('../api/dashboard/dashboard.model');db[_0x05c0('0x4b')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x4c'));db[_0x05c0('0x4d')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x4e'));db[_0x05c0('0x4f')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x50'));db[_0x05c0('0x51')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x52'));db[_0x05c0('0x53')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x54'));db[_0x05c0('0x55')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x56'));db[_0x05c0('0x57')]=db['sequelize']['import'](_0x05c0('0x58'));db[_0x05c0('0x59')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x5a'));db[_0x05c0('0x5b')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x5c'));db[_0x05c0('0x5d')]=db[_0x05c0('0x1')]['import'](_0x05c0('0x5e'));db[_0x05c0('0x5f')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/smsMessage/smsMessage.model');db[_0x05c0('0x60')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x61'));db['OpenchannelAccount']=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/openchannelAccount/openchannelAccount.model');db[_0x05c0('0x62')]=db['sequelize']['import'](_0x05c0('0x63'));db['OpenchannelInteraction']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x64'));db[_0x05c0('0x65')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/openchannelMessage/openchannelMessage.model');db[_0x05c0('0x66')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x67'));db[_0x05c0('0x68')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x69'));db[_0x05c0('0x6a')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x05c0('0x6b')]=db[_0x05c0('0x1')]['import']('../api/chatApplication/chatApplication.model');db[_0x05c0('0x6c')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x6d'));db[_0x05c0('0x6e')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/chatMessage/chatMessage.model');db[_0x05c0('0x6f')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x70'));db['ChatQueue']=db[_0x05c0('0x1')]['import'](_0x05c0('0x71'));db[_0x05c0('0x72')]=db['sequelize'][_0x05c0('0x13')]('../api/chatGroup/chatGroup.model');db[_0x05c0('0x73')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x74'));db[_0x05c0('0x75')]=db[_0x05c0('0x1')]['import'](_0x05c0('0x76'));db[_0x05c0('0x77')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x78'));db[_0x05c0('0x79')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x7a'));db[_0x05c0('0x7b')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x7c'));db[_0x05c0('0x7d')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x7e'));db[_0x05c0('0x7f')]=db[_0x05c0('0x1')]['import']('../api/cmHopperHistory/cmHopperHistory.model');db['ReportAgentPreview']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x80'));db['CmCustomField']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x81'));db[_0x05c0('0x82')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x83'));db['Automation']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x84'));db[_0x05c0('0x85')]=db['sequelize']['import']('../api/cannedAnswer/cannedAnswer.model');db[_0x05c0('0x86')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x87'));db[_0x05c0('0x88')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/condition/condition.model');db[_0x05c0('0x89')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x8a'));db[_0x05c0('0x8b')]=db['sequelize']['import'](_0x05c0('0x8c'));db[_0x05c0('0x8d')]=db['sequelize'][_0x05c0('0x13')]('../api/cdr/cdr.model');db['VoiceQueuesLog']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x8e'));db['Schedule']=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x8f'));db[_0x05c0('0x90')]=db['sequelize']['import']('../api/sound/sound.model');db['Tag']=db['sequelize'][_0x05c0('0x13')]('../api/tag/tag.model');db['Template']=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x91'));db[_0x05c0('0x92')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x93'));db['Variable']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x94'));db[_0x05c0('0x95')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x96'));db[_0x05c0('0x97')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/integrationReport/integrationReport.model');db['AnalyticCustomReport']=db[_0x05c0('0x1')]['import'](_0x05c0('0x98'));db[_0x05c0('0x99')]=db['sequelize'][_0x05c0('0x13')]('../api/analyticDefaultReport/analyticDefaultReport.model');db['AnalyticExtractedReport']=db['sequelize']['import'](_0x05c0('0x9a'));db[_0x05c0('0x9b')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/analyticMetric/analyticMetric.model');db[_0x05c0('0x9c')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x9d'));db[_0x05c0('0x9e')]=db['sequelize'][_0x05c0('0x13')]('../api/analyticTreeReport/analyticTreeReport.model');db['SalesforceAccount']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x9f'));db[_0x05c0('0xa0')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xa1'));db['SugarcrmAccount']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xa2'));db[_0x05c0('0xa3')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x05c0('0xa4')]=db[_0x05c0('0x1')]['import'](_0x05c0('0xa5'));db[_0x05c0('0xa6')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xa7'));db[_0x05c0('0xa8')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xa9'));db['DeskField']=db[_0x05c0('0x1')]['import'](_0x05c0('0xaa'));db[_0x05c0('0xab')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xac'));db[_0x05c0('0xad')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xae'));db[_0x05c0('0xaf')]=db['sequelize'][_0x05c0('0x13')]('../api/intZohoField/intZohoField.model');db[_0x05c0('0xb0')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xb1'));db[_0x05c0('0xb2')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xb3'));db[_0x05c0('0xb4')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/intZendeskField/intZendeskField.model');db['FreshdeskAccount']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xb5'));db[_0x05c0('0xb6')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xb7'));db['FreshdeskField']=db[_0x05c0('0x1')]['import'](_0x05c0('0xb8'));db['VtigerAccount']=db[_0x05c0('0x1')]['import'](_0x05c0('0xb9'));db[_0x05c0('0xba')]=db['sequelize'][_0x05c0('0x13')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db['VtigerField']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xbb'));db[_0x05c0('0xbc')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xbd'));db['ServicenowConfiguration']=db['sequelize']['import']('../api/intServicenowConfiguration/intServicenowConfiguration.model');db['ServicenowField']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xbe'));db[_0x05c0('0xbf')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xc0'));db[_0x05c0('0xc1')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xc2'));db[_0x05c0('0xc3')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/intDynamics365Field/intDynamics365Field.model');db[_0x05c0('0xc4')]=db['sequelize'][_0x05c0('0x13')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x05c0('0xc5')]=db[_0x05c0('0x1')]['import'](_0x05c0('0xc6'));db[_0x05c0('0xc7')]=db['sequelize'][_0x05c0('0x13')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x05c0('0x95')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/integration/integration.model');db['Network']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xc8'));db[_0x05c0('0xc9')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xca'));db[_0x05c0('0xcb')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xcc'));db[_0x05c0('0xcd')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0x05c0('0xce')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xcf'));db['JscriptySessionReport']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xd0'));db[_0x05c0('0xd1')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xd2'));db[_0x05c0('0xd3')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xd4'));db[_0x05c0('0xd5')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xd6'));db['JscriptyProject']=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/jscriptyProject/jscriptyProject.model');db[_0x05c0('0xd7')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xd8'));db[_0x05c0('0xd9')]=db['sequelize'][_0x05c0('0x13')]('../api/squareOdbc/squareOdbc.model');db[_0x05c0('0xda')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xdb'));db[_0x05c0('0xdc')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xdd'));db['SquareMessage']=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/squareMessage/squareMessage.model');db[_0x05c0('0xde')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xdf'));db['License']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xe0'));db[_0x05c0('0xe1')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xe2'));db['Migration']=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xe3'));db[_0x05c0('0xe4')]=db[_0x05c0('0x1')][_0x05c0('0x13')]('../api/attachment/attachment.model');db[_0x05c0('0xe5')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xe6'));db[_0x05c0('0xe7')]=db[_0x05c0('0x1')]['import'](_0x05c0('0xe8'));db[_0x05c0('0xe9')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xea'));db[_0x05c0('0xeb')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xec'));db[_0x05c0('0xed')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xee'));db[_0x05c0('0xef')]=db[_0x05c0('0x1')]['import'](_0x05c0('0xf0'));db[_0x05c0('0xf1')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xf2'));db[_0x05c0('0xf3')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xf4'));db[_0x05c0('0xf5')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0xf6'));db[_0x05c0('0xf7')]=db[_0x05c0('0x1')]['import'](_0x05c0('0xf8'));db[_0x05c0('0xf9')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xfa'));db[_0x05c0('0xfb')]=db['sequelize']['import'](_0x05c0('0xfc'));db[_0x05c0('0xfd')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0xfe'));db[_0x05c0('0xff')]=db['sequelize']['import'](_0x05c0('0x100'));db[_0x05c0('0x101')]=db[_0x05c0('0x1')]['import'](_0x05c0('0x102'));db[_0x05c0('0x103')]=db[_0x05c0('0x1')]['import'](_0x05c0('0x104'));db[_0x05c0('0x105')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x106'));db[_0x05c0('0x107')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x108'));db[_0x05c0('0x109')]=db['sequelize'][_0x05c0('0x13')]('../api/whatsappQueue/whatsappQueue.model');db[_0x05c0('0x10a')]=db['sequelize'][_0x05c0('0x13')](_0x05c0('0x10b'));db['TeamVoiceQueue']=db[_0x05c0('0x1')]['import'](_0x05c0('0x10c'));db[_0x05c0('0x10d')]=db[_0x05c0('0x1')][_0x05c0('0x13')](_0x05c0('0x10e'));db[_0x05c0('0x10f')]=db['sequelize']['import']('../api/userVoicePrefix/userVoicePrefix.model');db[_0x05c0('0x12')][_0x05c0('0x110')](db[_0x05c0('0x111')],{'as':_0x05c0('0x111'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x12')][_0x05c0('0x114')](db[_0x05c0('0x115')],{'as':_0x05c0('0x116'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x12')]['hasMany'](db[_0x05c0('0x117')],{'as':_0x05c0('0x118'),'foreignKey':_0x05c0('0x113')});db['User'][_0x05c0('0x114')](db[_0x05c0('0x19')],{'as':_0x05c0('0x119'),'onDelete':'cascade','hooks':!![]});db['User'][_0x05c0('0x114')](db[_0x05c0('0x7d')],{'as':'HopperFinals','foreignKey':_0x05c0('0x113')});db[_0x05c0('0x12')]['hasMany'](db[_0x05c0('0x7f')],{'as':'HopperHistory','foreignKey':_0x05c0('0x113')});db[_0x05c0('0x12')][_0x05c0('0x114')](db[_0x05c0('0x11a')],{'as':'ReportAgentPreview','foreignKey':_0x05c0('0x113')});db[_0x05c0('0x12')][_0x05c0('0x114')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':_0x05c0('0x113')});db['User'][_0x05c0('0x114')](db['ChatInteraction'],{'as':_0x05c0('0x11b'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x12')][_0x05c0('0x114')](db[_0x05c0('0x5d')],{'as':_0x05c0('0x11c'),'foreignKey':'UserId'});db['User'][_0x05c0('0x114')](db['FaxInteraction'],{'as':_0x05c0('0x11d'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x12')][_0x05c0('0x114')](db[_0x05c0('0x43')],{'as':_0x05c0('0x11e'),'foreignKey':'UserId'});db[_0x05c0('0x12')][_0x05c0('0x114')](db[_0x05c0('0x101')],{'as':_0x05c0('0x11f'),'foreignKey':'UserId'});db[_0x05c0('0x12')][_0x05c0('0x114')](db[_0x05c0('0xfb')],{'as':'UserNotifications','foreignKey':'SenderId'});db['User'][_0x05c0('0x120')](db[_0x05c0('0xf5')],{'as':_0x05c0('0xf5'),'foreignKey':_0x05c0('0x121')});db[_0x05c0('0x12')][_0x05c0('0x122')](db['ChatGroup'],{'as':_0x05c0('0x123'),'through':_0x05c0('0x124')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x77')],{'as':_0x05c0('0x125'),'through':'cm_user_has_contacts'});db['User'][_0x05c0('0x122')](db['CmList'],{'as':'Lists','through':_0x05c0('0x126')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0xde')],{'through':_0x05c0('0x127')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x43')],{'as':'MailInteractions','through':_0x05c0('0x128')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x6c')],{'as':_0x05c0('0x11b'),'through':'user_has_chat_interactions'});db['User'][_0x05c0('0x122')](db[_0x05c0('0x51')],{'as':_0x05c0('0x11d'),'through':_0x05c0('0x129')});db['User']['belongsToMany'](db[_0x05c0('0x5d')],{'as':_0x05c0('0x11c'),'through':_0x05c0('0x12a')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x12b')],{'as':'OpenchannelInteractions','through':'user_has_openchannel_interactions'});db[_0x05c0('0x12')]['belongsToMany'](db[_0x05c0('0x101')],{'as':'WhatsappInteractions','through':'user_has_whatsapp_interactions'});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x1c')],{'as':_0x05c0('0x12c'),'through':_0x05c0('0x2d'),'required':![]});db[_0x05c0('0x12')]['belongsToMany'](db['VoicePrefix'],{'as':'VoicePrefixes','through':_0x05c0('0x10f'),'required':![]});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x12d')],{'as':'MailQueues','through':_0x05c0('0x30'),'required':![]});db['User'][_0x05c0('0x122')](db[_0x05c0('0x12e')],{'as':_0x05c0('0x12f'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0x05c0('0x12')]['belongsToMany'](db[_0x05c0('0x55')],{'as':_0x05c0('0x130'),'through':_0x05c0('0x32'),'required':![]});db[_0x05c0('0x12')]['belongsToMany'](db[_0x05c0('0x60')],{'as':_0x05c0('0x131'),'through':_0x05c0('0x34'),'required':![]});db[_0x05c0('0x12')]['belongsToMany'](db['OpenchannelQueue'],{'as':_0x05c0('0x132'),'through':'UserOpenchannelQueue','required':![]});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x109')],{'as':_0x05c0('0x133'),'through':_0x05c0('0x38'),'required':![]});db['User'][_0x05c0('0x122')](db[_0x05c0('0xf1')],{'through':'cm_user_has_lists'});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x68')],{'as':_0x05c0('0x134'),'through':_0x05c0('0x135')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x4d')],{'as':'FaxAccounts','through':_0x05c0('0x136')});db['User'][_0x05c0('0x122')](db['MailAccount'],{'as':_0x05c0('0x137'),'through':_0x05c0('0x138')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x139')],{'as':_0x05c0('0x13a'),'through':'user_has_openchannel_accounts'});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0x59')],{'as':_0x05c0('0x13b'),'through':_0x05c0('0x13c')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0xfd')],{'as':_0x05c0('0x13d'),'through':_0x05c0('0x13e')});db[_0x05c0('0x12')][_0x05c0('0x122')](db[_0x05c0('0xda')],{'as':_0x05c0('0x13f'),'through':'user_has_square_projects'});db[_0x05c0('0x15')][_0x05c0('0x114')](db[_0x05c0('0x19')],{'as':_0x05c0('0x140'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x141')});db[_0x05c0('0x17')][_0x05c0('0x114')](db[_0x05c0('0x19')],{'onDelete':_0x05c0('0x112')});db[_0x05c0('0x19')]['hasMany'](db[_0x05c0('0x19')],{'as':_0x05c0('0x142'),'onDelete':'cascade'});db[_0x05c0('0x1b')]['belongsToMany'](db['Sound'],{'as':_0x05c0('0x143'),'through':'moh_has_sounds'});db[_0x05c0('0x1c')][_0x05c0('0x114')](db[_0x05c0('0x117')],{'as':_0x05c0('0x144'),'foreignKey':_0x05c0('0x145')});db[_0x05c0('0x1c')][_0x05c0('0x114')](db[_0x05c0('0x79')],{'as':'Hoppers','foreignKey':_0x05c0('0x145')});db['VoiceQueue']['hasMany'](db['CmHopperFinal'],{'as':_0x05c0('0x146'),'foreignKey':_0x05c0('0x145')});db[_0x05c0('0x1c')][_0x05c0('0x114')](db[_0x05c0('0x7f')],{'as':_0x05c0('0x147'),'foreignKey':'VoiceQueueId'});db[_0x05c0('0x1c')][_0x05c0('0x114')](db[_0x05c0('0x11a')],{'as':_0x05c0('0x11a'),'foreignKey':_0x05c0('0x145')});db[_0x05c0('0x1c')]['hasMany'](db[_0x05c0('0x7b')],{'as':'HopperBlacks','foreignKey':_0x05c0('0x145')});db[_0x05c0('0x1c')][_0x05c0('0x114')](db[_0x05c0('0x148')],{'as':_0x05c0('0x149'),'foreignKey':_0x05c0('0x145')});db[_0x05c0('0x1c')][_0x05c0('0x120')](db[_0x05c0('0x28')],{'as':_0x05c0('0x28'),'foreignKey':_0x05c0('0x14a')});db[_0x05c0('0x1c')][_0x05c0('0x120')](db[_0x05c0('0x28')],{'as':_0x05c0('0x14b'),'foreignKey':'TrunkBackupId'});db[_0x05c0('0x1c')]['belongsTo'](db[_0x05c0('0x89')],{'as':_0x05c0('0x89'),'foreignKey':_0x05c0('0x14c')});db['VoiceQueue'][_0x05c0('0x120')](db[_0x05c0('0x8b')],{'as':_0x05c0('0x14d'),'foreignKey':_0x05c0('0x14e')});db[_0x05c0('0x1c')][_0x05c0('0x122')](db['CmList'],{'as':'Lists','through':'voice_queues_has_cm_lists'});db[_0x05c0('0x1c')][_0x05c0('0x122')](db['User'],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x2d')});db['VoiceQueue'][_0x05c0('0x122')](db[_0x05c0('0xde')],{'as':_0x05c0('0x150'),'through':_0x05c0('0x151')});db[_0x05c0('0x1c')][_0x05c0('0x122')](db[_0x05c0('0xf1')],{'as':_0x05c0('0x152'),'through':_0x05c0('0x153')});db[_0x05c0('0x115')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x12'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x1e')][_0x05c0('0x120')](db['User'],{'as':'User','foreignKey':_0x05c0('0x113')});db[_0x05c0('0x111')]['hasMany'](db[_0x05c0('0x154')],{'as':_0x05c0('0x155'),'onDelete':_0x05c0('0x112'),'foreignKey':'mailboxuser','sourceKey':'mailbox'});db['VoiceMailMessage'][_0x05c0('0x120')](db[_0x05c0('0x111')],{'foreignKey':_0x05c0('0x156'),'targetKey':_0x05c0('0x157')});db[_0x05c0('0x20')][_0x05c0('0x114')](db[_0x05c0('0x25')],{'as':'QueueCalls','foreignKey':'uniqueid','constraints':![]});db[_0x05c0('0x20')]['hasMany'](db[_0x05c0('0x23')],{'as':_0x05c0('0x158'),'foreignKey':_0x05c0('0x159'),'constraints':![]});db[_0x05c0('0x20')]['belongsTo'](db['User'],{'as':'User','foreignKey':_0x05c0('0x113')});db[_0x05c0('0x20')]['belongsTo'](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':'ContactId'});db['MailServerIn'][_0x05c0('0x120')](db[_0x05c0('0x3e')],{'as':'MailAccount','foreignKey':_0x05c0('0x15b')});db[_0x05c0('0x3c')][_0x05c0('0x120')](db[_0x05c0('0x3e')],{'as':_0x05c0('0x3e'),'foreignKey':_0x05c0('0x15b')});db[_0x05c0('0x3e')][_0x05c0('0x110')](db['MailServerIn'],{'as':_0x05c0('0x15c'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x3e')][_0x05c0('0x110')](db[_0x05c0('0x3c')],{'as':_0x05c0('0x15d'),'onDelete':'cascade'});db[_0x05c0('0x3e')]['hasMany'](db[_0x05c0('0x86')],{'as':_0x05c0('0x15e'),'foreignKey':'MailAccountId','onDelete':'cascade'});db[_0x05c0('0x3e')]['hasMany'](db[_0x05c0('0x85')],{'as':_0x05c0('0x15f'),'foreignKey':_0x05c0('0x15b')});db['MailAccount'][_0x05c0('0x114')](db[_0x05c0('0x45')],{'as':_0x05c0('0x155'),'foreignKey':_0x05c0('0x15b')});db['MailAccount'][_0x05c0('0x114')](db[_0x05c0('0x43')],{'as':_0x05c0('0x160')});db[_0x05c0('0x3e')][_0x05c0('0x114')](db['MailApplication'],{'as':_0x05c0('0x142')});db[_0x05c0('0x3e')][_0x05c0('0x120')](db['CmList'],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0x3e')][_0x05c0('0x120')](db[_0x05c0('0x163')],{'as':_0x05c0('0x163'),'foreignKey':_0x05c0('0x164')});db[_0x05c0('0x3e')][_0x05c0('0x120')](db['Pause'],{'as':_0x05c0('0x14d'),'foreignKey':_0x05c0('0x14e')});db[_0x05c0('0x3e')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':'user_has_mail_accounts'});db[_0x05c0('0x12d')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x30')});db['MailQueue'][_0x05c0('0x122')](db[_0x05c0('0xde')],{'through':_0x05c0('0x165'),'as':_0x05c0('0x150')});db['MailInteraction'][_0x05c0('0x114')](db['MailMessage'],{'as':_0x05c0('0x155'),'onDelete':'cascade','foreignKey':_0x05c0('0x166')});db[_0x05c0('0x43')]['belongsTo'](db['MailAccount'],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x15b')});db['MailInteraction']['belongsTo'](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':'ContactId'});db[_0x05c0('0x43')][_0x05c0('0x120')](db['User'],{'as':_0x05c0('0x168'),'foreignKey':'UserId'});db[_0x05c0('0x43')]['belongsToMany'](db[_0x05c0('0x169')],{'through':_0x05c0('0x16a'),'as':_0x05c0('0x16b')});db[_0x05c0('0x43')][_0x05c0('0x122')](db['Tag'],{'through':_0x05c0('0x16a'),'as':_0x05c0('0x16c')});db[_0x05c0('0x43')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x16d'),'through':'user_has_mail_interactions','foreignKey':_0x05c0('0x166')});db[_0x05c0('0x45')][_0x05c0('0x114')](db[_0x05c0('0xe4')],{'as':'Attachments','onDelete':'cascade'});db[_0x05c0('0x45')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':'User'});db[_0x05c0('0x45')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'onDelete':'cascade','as':_0x05c0('0x15a')});db[_0x05c0('0x45')][_0x05c0('0x120')](db[_0x05c0('0x43')],{'as':_0x05c0('0x16e'),'foreignKey':_0x05c0('0x166')});db['MailMessage'][_0x05c0('0x120')](db[_0x05c0('0x3e')],{'as':'Account','foreignKey':_0x05c0('0x15b')});db[_0x05c0('0x45')][_0x05c0('0x120')](db[_0x05c0('0x68')],{'as':_0x05c0('0x68'),'foreignKey':_0x05c0('0x16f')});db[_0x05c0('0x45')][_0x05c0('0x120')](db[_0x05c0('0x6f')],{'as':_0x05c0('0x6f'),'foreignKey':_0x05c0('0x170')});db[_0x05c0('0x46')]['belongsTo'](db[_0x05c0('0x12')],{'onDelete':'restrict'});db['MailApplication'][_0x05c0('0x120')](db[_0x05c0('0x12d')],{'onDelete':_0x05c0('0x171')});db[_0x05c0('0x46')][_0x05c0('0x120')](db[_0x05c0('0x3e')],{'onDelete':'restrict'});db[_0x05c0('0x46')][_0x05c0('0x120')](db['Interval'],{'onDelete':_0x05c0('0x171'),'foreignKey':'IntervalId'});db[_0x05c0('0x46')][_0x05c0('0x120')](db[_0x05c0('0x169')],{'onDelete':_0x05c0('0x171'),'foreignKey':'TagId'});db[_0x05c0('0x48')][_0x05c0('0x120')](db['MailAccount'],{});db[_0x05c0('0x48')]['belongsTo'](db['CmList'],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162')});db['MailQueueReport']['belongsTo'](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':'ContactId'});db[_0x05c0('0x48')][_0x05c0('0x120')](db[_0x05c0('0x43')],{});db[_0x05c0('0x48')][_0x05c0('0x120')](db[_0x05c0('0x45')],{});db[_0x05c0('0x48')][_0x05c0('0x120')](db['User'],{});db[_0x05c0('0x48')][_0x05c0('0x120')](db[_0x05c0('0x12d')],{});db[_0x05c0('0x4a')][_0x05c0('0x114')](db[_0x05c0('0x4b')],{'as':'Items','onDelete':'cascade'});db['FaxAccount'][_0x05c0('0x114')](db[_0x05c0('0x86')],{'as':'Dispositions','foreignKey':_0x05c0('0x172'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x4d')][_0x05c0('0x114')](db['CannedAnswer'],{'as':_0x05c0('0x15f'),'foreignKey':'FaxAccountId'});db[_0x05c0('0x4d')][_0x05c0('0x114')](db[_0x05c0('0x51')],{'as':_0x05c0('0x160')});db[_0x05c0('0x4d')]['hasMany'](db[_0x05c0('0x4f')],{'as':_0x05c0('0x142')});db['FaxAccount'][_0x05c0('0x114')](db[_0x05c0('0x19')],{'as':_0x05c0('0x173'),'onDelete':_0x05c0('0x112')});db['FaxAccount'][_0x05c0('0x114')](db[_0x05c0('0x53')],{'as':_0x05c0('0x155')});db[_0x05c0('0x4d')][_0x05c0('0x120')](db[_0x05c0('0x28')],{'as':_0x05c0('0x28')});db[_0x05c0('0x4d')][_0x05c0('0x120')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x05c0('0x4d')]['belongsTo'](db[_0x05c0('0x8b')],{'as':_0x05c0('0x14d'),'foreignKey':_0x05c0('0x14e')});db[_0x05c0('0x4d')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':'user_has_fax_accounts'});db[_0x05c0('0x4f')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'onDelete':_0x05c0('0x171')});db['FaxApplication']['belongsTo'](db['FaxQueue'],{'onDelete':_0x05c0('0x171')});db[_0x05c0('0x4f')][_0x05c0('0x120')](db[_0x05c0('0x4d')],{'onDelete':_0x05c0('0x171')});db[_0x05c0('0x4f')][_0x05c0('0x120')](db[_0x05c0('0x169')],{'onDelete':_0x05c0('0x171'),'foreignKey':_0x05c0('0x174')});db[_0x05c0('0x51')][_0x05c0('0x114')](db[_0x05c0('0x53')],{'as':'Messages','onDelete':_0x05c0('0x112'),'foreignKey':'FaxInteractionId'});db['FaxInteraction'][_0x05c0('0x120')](db[_0x05c0('0x4d')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x172')});db['FaxInteraction']['belongsTo'](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':'ContactId'});db['FaxInteraction'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x168'),'foreignKey':'UserId'});db[_0x05c0('0x51')][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':_0x05c0('0x175'),'as':_0x05c0('0x16b')});db[_0x05c0('0x51')][_0x05c0('0x122')](db['Tag'],{'through':_0x05c0('0x175'),'as':_0x05c0('0x16c')});db[_0x05c0('0x51')][_0x05c0('0x122')](db['User'],{'as':_0x05c0('0x16d'),'through':_0x05c0('0x129'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'onDelete':_0x05c0('0x112'),'as':'User'});db[_0x05c0('0x53')][_0x05c0('0x120')](db[_0x05c0('0x51')],{'as':'Interaction','foreignKey':_0x05c0('0x176')});db[_0x05c0('0x53')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'onDelete':_0x05c0('0x112'),'as':_0x05c0('0x15a')});db[_0x05c0('0x53')]['belongsTo'](db[_0x05c0('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x05c0('0x53')]['belongsTo'](db[_0x05c0('0x4d')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x172')});db['FaxQueue'][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x32')});db[_0x05c0('0x55')][_0x05c0('0x122')](db[_0x05c0('0xde')],{'through':_0x05c0('0x177'),'as':_0x05c0('0x150')});db['FaxQueueReport'][_0x05c0('0x120')](db[_0x05c0('0x4d')],{});db[_0x05c0('0x57')][_0x05c0('0x120')](db[_0x05c0('0xf1')],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0x57')]['belongsTo'](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178')});db[_0x05c0('0x57')][_0x05c0('0x120')](db[_0x05c0('0x51')],{});db['FaxQueueReport']['belongsTo'](db['FaxMessage'],{});db[_0x05c0('0x57')][_0x05c0('0x120')](db['User'],{});db[_0x05c0('0x57')][_0x05c0('0x120')](db['FaxQueue'],{});db[_0x05c0('0x59')]['hasMany'](db[_0x05c0('0x86')],{'as':'Dispositions','foreignKey':_0x05c0('0x179'),'onDelete':'cascade'});db[_0x05c0('0x59')][_0x05c0('0x114')](db['CannedAnswer'],{'as':_0x05c0('0x15f'),'foreignKey':_0x05c0('0x179')});db['SmsAccount'][_0x05c0('0x114')](db[_0x05c0('0x5f')],{'as':_0x05c0('0x155'),'foreignKey':_0x05c0('0x179')});db[_0x05c0('0x59')][_0x05c0('0x114')](db[_0x05c0('0x5d')],{'as':_0x05c0('0x160')});db[_0x05c0('0x59')]['hasMany'](db[_0x05c0('0x5b')],{'as':'Applications'});db[_0x05c0('0x59')][_0x05c0('0x120')](db[_0x05c0('0xf1')],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0x59')][_0x05c0('0x120')](db[_0x05c0('0x8b')],{'as':'mandatoryDispositionPause','foreignKey':_0x05c0('0x14e')});db['SmsAccount'][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x13c')});db['SmsApplication'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'onDelete':'restrict'});db[_0x05c0('0x5b')][_0x05c0('0x120')](db[_0x05c0('0x60')],{'onDelete':'restrict'});db[_0x05c0('0x5b')]['belongsTo'](db[_0x05c0('0x59')],{'onDelete':_0x05c0('0x171')});db[_0x05c0('0x5b')][_0x05c0('0x120')](db[_0x05c0('0x89')],{'onDelete':'restrict','foreignKey':_0x05c0('0x14c')});db[_0x05c0('0x5b')][_0x05c0('0x120')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db['SmsInteraction'][_0x05c0('0x114')](db[_0x05c0('0x5f')],{'as':_0x05c0('0x155'),'onDelete':_0x05c0('0x112'),'foreignKey':'SmsInteractionId'});db[_0x05c0('0x5d')]['belongsTo'](db[_0x05c0('0x59')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x179')});db[_0x05c0('0x5d')][_0x05c0('0x120')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db['SmsInteraction'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x168'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x5d')][_0x05c0('0x122')](db['Tag'],{'through':'sms_interaction_has_tags','as':'Tags'});db[_0x05c0('0x5d')]['belongsToMany'](db[_0x05c0('0x169')],{'through':'sms_interaction_has_tags','as':_0x05c0('0x16c')});db[_0x05c0('0x5d')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x16d'),'through':_0x05c0('0x12a'),'foreignKey':_0x05c0('0x17a')});db[_0x05c0('0x5f')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x12')});db[_0x05c0('0x5f')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'onDelete':'cascade','as':'Contact'});db[_0x05c0('0x5f')][_0x05c0('0x120')](db[_0x05c0('0x5d')],{'onDelete':_0x05c0('0x112'),'as':_0x05c0('0x16e'),'foreignKey':_0x05c0('0x17a')});db[_0x05c0('0x5f')]['belongsTo'](db[_0x05c0('0x59')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x179')});db['SmsQueue'][_0x05c0('0x122')](db['User'],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x34'),'foreignKey':_0x05c0('0x17b')});db[_0x05c0('0x60')]['belongsToMany'](db['Team'],{'through':'team_has_sms_queues','as':'Teams'});db['OpenchannelAccount'][_0x05c0('0x114')](db[_0x05c0('0x86')],{'as':_0x05c0('0x15e'),'foreignKey':_0x05c0('0x17c'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x139')][_0x05c0('0x114')](db[_0x05c0('0x85')],{'as':'Answers','foreignKey':_0x05c0('0x17c')});db[_0x05c0('0x139')][_0x05c0('0x114')](db[_0x05c0('0x12b')],{'as':_0x05c0('0x160'),'foreignKey':_0x05c0('0x17c')});db['OpenchannelAccount'][_0x05c0('0x114')](db['OpenchannelMessage'],{'as':_0x05c0('0x155'),'foreignKey':'OpenchannelAccountId'});db[_0x05c0('0x139')][_0x05c0('0x114')](db[_0x05c0('0x62')],{'as':_0x05c0('0x142'),'foreignKey':_0x05c0('0x17c')});db[_0x05c0('0x139')][_0x05c0('0x120')](db['CmList'],{'as':'List','foreignKey':_0x05c0('0x162')});db['OpenchannelAccount'][_0x05c0('0x120')](db[_0x05c0('0x8b')],{'as':_0x05c0('0x14d'),'foreignKey':_0x05c0('0x14e')});db[_0x05c0('0x139')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':'Agents','through':_0x05c0('0x17d')});db['OpenchannelApplication'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'onDelete':_0x05c0('0x171')});db['OpenchannelApplication'][_0x05c0('0x120')](db['OpenchannelQueue'],{'onDelete':_0x05c0('0x171'),'foreignKey':_0x05c0('0x17e')});db[_0x05c0('0x62')][_0x05c0('0x120')](db[_0x05c0('0x139')],{'onDelete':'restrict','foreignKey':_0x05c0('0x17c')});db['OpenchannelApplication'][_0x05c0('0x120')](db['Interval'],{'onDelete':_0x05c0('0x171'),'foreignKey':_0x05c0('0x14c')});db[_0x05c0('0x62')][_0x05c0('0x120')](db[_0x05c0('0x169')],{'onDelete':_0x05c0('0x171'),'foreignKey':'TagId'});db[_0x05c0('0x12b')][_0x05c0('0x114')](db[_0x05c0('0x65')],{'as':'Messages','onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x17f')});db[_0x05c0('0x12b')][_0x05c0('0x120')](db[_0x05c0('0x139')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x17c')});db['OpenchannelInteraction']['belongsTo'](db[_0x05c0('0x77')],{'as':'Contact','foreignKey':'ContactId'});db[_0x05c0('0x12b')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x168'),'foreignKey':_0x05c0('0x113')});db['OpenchannelInteraction'][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':'openchannel_interaction_has_tags','as':_0x05c0('0x16b')});db[_0x05c0('0x12b')]['belongsToMany'](db[_0x05c0('0x169')],{'through':_0x05c0('0x180'),'as':'ThroughTags'});db['OpenchannelInteraction'][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':'Users','through':_0x05c0('0x181'),'foreignKey':'OpenchannelInteractionId'});db[_0x05c0('0x65')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'onDelete':_0x05c0('0x112'),'as':_0x05c0('0x12')});db[_0x05c0('0x65')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'onDelete':'cascade','as':_0x05c0('0x15a')});db['OpenchannelMessage'][_0x05c0('0x120')](db[_0x05c0('0x12b')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x05c0('0x17f')});db[_0x05c0('0x65')][_0x05c0('0x120')](db[_0x05c0('0xe4')],{'as':_0x05c0('0xe4'),'foreignKey':_0x05c0('0x182')});db[_0x05c0('0x65')][_0x05c0('0x120')](db[_0x05c0('0x139')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x17c')});db[_0x05c0('0x66')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':'Agents','through':_0x05c0('0x36'),'foreignKey':'OpenchannelQueueId'});db[_0x05c0('0x66')]['belongsToMany'](db[_0x05c0('0xde')],{'through':_0x05c0('0x183'),'as':_0x05c0('0x150')});db['ChatWebsite'][_0x05c0('0x114')](db[_0x05c0('0x86')],{'as':_0x05c0('0x15e'),'foreignKey':_0x05c0('0x16f'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x68')][_0x05c0('0x114')](db[_0x05c0('0x85')],{'as':_0x05c0('0x15f'),'foreignKey':_0x05c0('0x16f')});db[_0x05c0('0x68')][_0x05c0('0x114')](db[_0x05c0('0x73')],{'as':'ProactiveActions'});db['ChatWebsite'][_0x05c0('0x114')](db[_0x05c0('0x6c')],{'as':'Interactions'});db[_0x05c0('0x68')][_0x05c0('0x114')](db[_0x05c0('0x6b')],{'as':_0x05c0('0x142')});db['ChatWebsite'][_0x05c0('0x114')](db['ChatMessage'],{'as':_0x05c0('0x155')});db[_0x05c0('0x68')]['belongsTo'](db[_0x05c0('0xf1')],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0x68')][_0x05c0('0x120')](db['Interval'],{'as':'Interval','foreignKey':_0x05c0('0x14c')});db[_0x05c0('0x68')][_0x05c0('0x120')](db[_0x05c0('0x3e')],{'as':'MailAccount','foreignKey':_0x05c0('0x15b')});db[_0x05c0('0x68')]['belongsTo'](db[_0x05c0('0x8b')],{'as':_0x05c0('0x14d'),'foreignKey':_0x05c0('0x14e')});db[_0x05c0('0x68')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x135')});db[_0x05c0('0x6a')][_0x05c0('0x120')](db[_0x05c0('0x139')],{});db[_0x05c0('0x6a')][_0x05c0('0x120')](db[_0x05c0('0xf1')],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0x6a')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178')});db['OpenchannelQueueReport']['belongsTo'](db[_0x05c0('0x12b')],{});db[_0x05c0('0x6a')][_0x05c0('0x120')](db[_0x05c0('0x65')],{});db[_0x05c0('0x6a')][_0x05c0('0x120')](db[_0x05c0('0x12')],{});db[_0x05c0('0x6a')][_0x05c0('0x120')](db['OpenchannelQueue'],{});db[_0x05c0('0x6b')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':'Agent','foreignKey':_0x05c0('0x113'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x6b')]['belongsTo'](db['ChatQueue'],{'as':_0x05c0('0x184'),'foreignKey':_0x05c0('0x185'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x6b')]['belongsTo'](db[_0x05c0('0x68')],{'as':_0x05c0('0x186'),'foreignKey':_0x05c0('0x16f'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x6b')][_0x05c0('0x120')](db[_0x05c0('0x169')],{'onDelete':_0x05c0('0x171'),'foreignKey':'TagId'});db[_0x05c0('0x6c')][_0x05c0('0x114')](db[_0x05c0('0x6e')],{'as':_0x05c0('0x155'),'onDelete':'cascade','foreignKey':'ChatInteractionId'});db[_0x05c0('0x6c')]['belongsTo'](db[_0x05c0('0x68')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x16f')});db[_0x05c0('0x6c')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178')});db[_0x05c0('0x6c')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x168'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x6c')][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':'chat_interaction_has_tags','as':_0x05c0('0x16b')});db[_0x05c0('0x6c')][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':_0x05c0('0x187'),'as':'ThroughTags'});db[_0x05c0('0x6c')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x16d'),'through':_0x05c0('0x188'),'foreignKey':_0x05c0('0x189')});db[_0x05c0('0x6e')][_0x05c0('0x120')](db['User'],{'onDelete':_0x05c0('0x112'),'as':'User'});db[_0x05c0('0x6e')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'onDelete':_0x05c0('0x112'),'as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178')});db['ChatMessage'][_0x05c0('0x120')](db[_0x05c0('0x6c')],{'onDelete':_0x05c0('0x112'),'as':'Interaction','foreignKey':_0x05c0('0x189')});db[_0x05c0('0x6e')]['belongsTo'](db['Attachment'],{'as':_0x05c0('0xe4'),'foreignKey':_0x05c0('0x182')});db['ChatMessage'][_0x05c0('0x120')](db[_0x05c0('0x68')],{'as':'Account','foreignKey':_0x05c0('0x16f')});db[_0x05c0('0x6f')]['hasMany'](db[_0x05c0('0xe4')],{'as':_0x05c0('0x18a'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0x05c0('0x6f')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'onDelete':'cascade','as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178')});db[_0x05c0('0x6f')]['belongsTo'](db['ChatWebsite'],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x16f')});db[_0x05c0('0x12e')]['belongsToMany'](db[_0x05c0('0x12')],{'as':'Agents','through':_0x05c0('0x18b'),'hooks':!![]});db[_0x05c0('0x12e')][_0x05c0('0x122')](db[_0x05c0('0xde')],{'through':_0x05c0('0x18c'),'as':'Teams'});db[_0x05c0('0x72')][_0x05c0('0x114')](db[_0x05c0('0xcb')],{'as':_0x05c0('0x155'),'foreignKey':_0x05c0('0x18d'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x72')]['belongsToMany'](db['User'],{'as':_0x05c0('0x144'),'through':'chat_group_has_users'});db['ChatProactiveAction'][_0x05c0('0x120')](db[_0x05c0('0x68')],{'as':'Website','foreignKey':_0x05c0('0x16f')});db[_0x05c0('0x75')][_0x05c0('0x114')](db[_0x05c0('0x77')],{'as':_0x05c0('0x125'),'foreignKey':_0x05c0('0x18e')});db[_0x05c0('0x77')][_0x05c0('0x114')](db['CmHopper'],{'as':'Hoppers','foreignKey':_0x05c0('0x178')});db[_0x05c0('0x77')][_0x05c0('0x114')](db[_0x05c0('0x7d')],{'as':_0x05c0('0x146'),'foreignKey':_0x05c0('0x178')});db['CmContact'][_0x05c0('0x114')](db[_0x05c0('0x7f')],{'as':_0x05c0('0x147'),'foreignKey':_0x05c0('0x178')});db[_0x05c0('0x77')][_0x05c0('0x114')](db[_0x05c0('0x11a')],{'as':_0x05c0('0x11a'),'foreignKey':'ContactId'});db[_0x05c0('0x77')][_0x05c0('0x114')](db[_0x05c0('0x148')],{'as':'JscriptySessions','foreignKey':_0x05c0('0x178')});db['CmContact'][_0x05c0('0x114')](db[_0x05c0('0x12b')],{'as':'OpenchannelInteractions','foreignKey':_0x05c0('0x178'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x77')]['hasMany'](db[_0x05c0('0x6c')],{'as':_0x05c0('0x11b'),'foreignKey':_0x05c0('0x178'),'onDelete':'restrict'});db[_0x05c0('0x77')][_0x05c0('0x114')](db[_0x05c0('0x5d')],{'as':'SmsInteractions','foreignKey':_0x05c0('0x178'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x77')]['hasMany'](db[_0x05c0('0x51')],{'as':'FaxInteractions','foreignKey':_0x05c0('0x178'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x77')][_0x05c0('0x114')](db[_0x05c0('0x43')],{'as':_0x05c0('0x11e'),'foreignKey':_0x05c0('0x178'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x77')][_0x05c0('0x120')](db['CmCompany'],{'as':_0x05c0('0x18f'),'foreignKey':_0x05c0('0x18e')});db[_0x05c0('0x77')][_0x05c0('0x120')](db['CmList'],{'as':_0x05c0('0x161'),'foreignKey':'ListId','onDelete':_0x05c0('0x112')});db[_0x05c0('0x77')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x16d'),'through':_0x05c0('0x190')});db[_0x05c0('0x77')]['belongsToMany'](db[_0x05c0('0x169')],{'as':_0x05c0('0x16b'),'through':_0x05c0('0x191')});db[_0x05c0('0x77')][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':'cm_contact_has_tags','as':_0x05c0('0x16c')});db['CmHopper'][_0x05c0('0x120')](db['CmContact'],{'as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178'),'onDelete':'cascade'});db[_0x05c0('0x79')][_0x05c0('0x120')](db[_0x05c0('0xf1')],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x79')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x192'),'foreignKey':_0x05c0('0x113')});db['CmHopper'][_0x05c0('0x120')](db[_0x05c0('0x1c')],{'as':_0x05c0('0x184'),'foreignKey':_0x05c0('0x145'),'onDelete':'cascade'});db[_0x05c0('0x79')]['belongsTo'](db[_0x05c0('0xe1')],{'as':_0x05c0('0xe1'),'foreignKey':_0x05c0('0x193'),'onDelete':'cascade'});db[_0x05c0('0x79')]['belongsTo'](db['User'],{'as':_0x05c0('0x168'),'foreignKey':_0x05c0('0x194')});db[_0x05c0('0x7b')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':'ContactId','onDelete':_0x05c0('0x112')});db[_0x05c0('0x7b')][_0x05c0('0x120')](db['CmList'],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162'),'onDelete':_0x05c0('0x112')});db['CmHopperBlack'][_0x05c0('0x120')](db[_0x05c0('0x1c')],{'as':_0x05c0('0x184'),'foreignKey':_0x05c0('0x145'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x7b')]['belongsTo'](db['Campaign'],{'as':_0x05c0('0xe1'),'foreignKey':_0x05c0('0x193'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x195')][_0x05c0('0x114')](db[_0x05c0('0x88')],{'as':{'plural':_0x05c0('0x196'),'singular':_0x05c0('0x197')},'foreignKey':_0x05c0('0x198'),'onDelete':'cascade','hooks':!![]});db[_0x05c0('0x195')][_0x05c0('0x114')](db[_0x05c0('0x88')],{'as':{'plural':_0x05c0('0x199'),'singular':_0x05c0('0x19a')},'foreignKey':_0x05c0('0x19b'),'onDelete':_0x05c0('0x112'),'hooks':!![]});db[_0x05c0('0x195')]['hasMany'](db[_0x05c0('0x82')],{'as':_0x05c0('0x19c'),'foreignKey':_0x05c0('0x19d'),'onDelete':'cascade','hooks':!![]});db['Disposition'][_0x05c0('0x114')](db[_0x05c0('0x86')],{'as':_0x05c0('0x15e'),'foreignKey':'ParentId','onDelete':_0x05c0('0x112')});db['Interval'][_0x05c0('0x114')](db[_0x05c0('0x89')],{'as':_0x05c0('0x19e'),'foreignKey':_0x05c0('0x14c'),'onDelete':_0x05c0('0x112'),'hooks':!![],'required':![]});db[_0x05c0('0x89')][_0x05c0('0x114')](db[_0x05c0('0x19')],{'as':_0x05c0('0x119'),'foreignKey':'IntervalId','onDelete':'restrict'});db[_0x05c0('0x89')][_0x05c0('0x114')](db[_0x05c0('0x46')],{'as':'MailApplications','foreignKey':_0x05c0('0x14c')});db['Interval'][_0x05c0('0x114')](db['ChatApplication'],{'as':_0x05c0('0x19f'),'foreignKey':_0x05c0('0x14c')});db[_0x05c0('0x89')][_0x05c0('0x114')](db['FaxApplication'],{'as':_0x05c0('0x1a0'),'foreignKey':_0x05c0('0x14c')});db[_0x05c0('0x89')][_0x05c0('0x114')](db['SmsApplication'],{'as':_0x05c0('0x1a1'),'foreignKey':_0x05c0('0x14c')});db[_0x05c0('0x1a2')][_0x05c0('0x120')](db[_0x05c0('0x3e')],{});db[_0x05c0('0x1a2')][_0x05c0('0x120')](db[_0x05c0('0x99')],{'foreignKey':'DefaultReportId'});db[_0x05c0('0x1a2')]['belongsTo'](db[_0x05c0('0x1a3')],{'foreignKey':_0x05c0('0x1a4')});db[_0x05c0('0x90')][_0x05c0('0x122')](db[_0x05c0('0x1b')],{'as':_0x05c0('0x1a5'),'through':_0x05c0('0x1a6'),'onDelete':_0x05c0('0x171')});db[_0x05c0('0x169')][_0x05c0('0x122')](db['CmContact'],{'through':_0x05c0('0x191')});db[_0x05c0('0x169')]['belongsToMany'](db[_0x05c0('0x6c')],{'through':_0x05c0('0x187')});db[_0x05c0('0x169')][_0x05c0('0x122')](db[_0x05c0('0x43')],{'through':_0x05c0('0x16a')});db[_0x05c0('0x169')][_0x05c0('0x122')](db[_0x05c0('0x5d')],{'through':_0x05c0('0x1a7')});db['Tag'][_0x05c0('0x122')](db['FaxInteraction'],{'through':_0x05c0('0x175')});db['Tag'][_0x05c0('0x122')](db[_0x05c0('0x12b')],{'through':_0x05c0('0x180')});db[_0x05c0('0x169')]['belongsToMany'](db[_0x05c0('0x101')],{'through':_0x05c0('0x1a8')});db[_0x05c0('0x92')]['hasMany'](db[_0x05c0('0x88')],{'as':{'plural':_0x05c0('0x1a9'),'singular':'AllCondition'},'foreignKey':'TriggerAllId','onDelete':_0x05c0('0x112'),'hooks':!![]});db['Trigger'][_0x05c0('0x114')](db[_0x05c0('0x88')],{'as':{'plural':'AnyConditions','singular':_0x05c0('0x1aa')},'foreignKey':_0x05c0('0x1ab'),'onDelete':'cascade','hooks':!![]});db[_0x05c0('0x92')][_0x05c0('0x114')](db['Action'],{'as':'Actions','foreignKey':_0x05c0('0x1ac'),'onDelete':'cascade','hooks':!![]});db[_0x05c0('0x1a3')][_0x05c0('0x114')](db['AnalyticFieldReport'],{'as':_0x05c0('0x1ad'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1a4'),'hooks':!![]});db['AnalyticDefaultReport'][_0x05c0('0x114')](db[_0x05c0('0x9c')],{'as':'Fields','onDelete':'cascade','foreignKey':'DefaultReportId'});db['AnalyticMetric'][_0x05c0('0x114')](db[_0x05c0('0x9c')],{'as':_0x05c0('0x1ad'),'onDelete':_0x05c0('0x112'),'foreignKey':'MetricId'});db[_0x05c0('0x9c')][_0x05c0('0x120')](db[_0x05c0('0x9b')],{'foreignKey':_0x05c0('0x1ae')});db[_0x05c0('0x1af')][_0x05c0('0x114')](db[_0x05c0('0xa0')],{'as':_0x05c0('0x1b0'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xa0')][_0x05c0('0x114')](db[_0x05c0('0x1b2')],{'as':_0x05c0('0x1b3'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b4')});db['SalesforceConfiguration'][_0x05c0('0x114')](db[_0x05c0('0x1b2')],{'as':_0x05c0('0x1b5'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xa0')][_0x05c0('0x114')](db[_0x05c0('0x1b2')],{'as':_0x05c0('0x1ad'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b7')});db['SalesforceConfiguration'][_0x05c0('0x120')](db[_0x05c0('0x1af')],{'as':'Account','foreignKey':'AccountId'});db['SalesforceField'][_0x05c0('0x114')](db['SalesforceField'],{'as':'Subject','foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0x1b2')][_0x05c0('0x114')](db[_0x05c0('0x1b2')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x05c0('0x1b2')][_0x05c0('0x114')](db['SalesforceField'],{'as':_0x05c0('0x1b8'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0x1b2')][_0x05c0('0x120')](db[_0x05c0('0x1b9')],{'as':'Variable','foreignKey':_0x05c0('0x1ba')});db[_0x05c0('0x1bb')]['hasMany'](db[_0x05c0('0xa3')],{'as':_0x05c0('0x1b0'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b1')});db['SugarcrmConfiguration'][_0x05c0('0x114')](db[_0x05c0('0xa4')],{'as':_0x05c0('0x1b3'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b4')});db['SugarcrmConfiguration'][_0x05c0('0x114')](db[_0x05c0('0xa4')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x05c0('0x1b6')});db['SugarcrmConfiguration'][_0x05c0('0x114')](db['SugarcrmField'],{'as':_0x05c0('0x1ad'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b7')});db['SugarcrmConfiguration'][_0x05c0('0x120')](db[_0x05c0('0x1bb')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xa4')][_0x05c0('0x114')](db[_0x05c0('0xa4')],{'as':_0x05c0('0x1bc'),'foreignKey':'SubjectId'});db['SugarcrmField'][_0x05c0('0x114')](db['SugarcrmField'],{'as':_0x05c0('0x1bd'),'foreignKey':'DescriptionId'});db[_0x05c0('0xa4')][_0x05c0('0x114')](db['SugarcrmField'],{'as':_0x05c0('0x1b8'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0xa4')][_0x05c0('0x120')](db[_0x05c0('0x1b9')],{'as':'Variable','foreignKey':'VariableId'});db[_0x05c0('0xa6')]['hasMany'](db['DeskConfiguration'],{'as':_0x05c0('0x1b0'),'onDelete':_0x05c0('0x112'),'foreignKey':'AccountId'});db['DeskConfiguration'][_0x05c0('0x114')](db[_0x05c0('0x1be')],{'as':_0x05c0('0x1b3'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x05c0('0xa8')][_0x05c0('0x114')](db[_0x05c0('0x1be')],{'as':'Descriptions','onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xa8')][_0x05c0('0x114')](db[_0x05c0('0x1be')],{'as':_0x05c0('0x1ad'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b7')});db['DeskConfiguration']['belongsTo'](db['DeskAccount'],{'as':_0x05c0('0x167'),'foreignKey':'AccountId'});db[_0x05c0('0xa8')]['belongsToMany'](db['Tag'],{'through':_0x05c0('0x1bf')});db[_0x05c0('0x1be')]['hasMany'](db['DeskField'],{'as':'Subject','foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0x1be')][_0x05c0('0x114')](db[_0x05c0('0x1be')],{'as':_0x05c0('0x1bd'),'foreignKey':'DescriptionId'});db[_0x05c0('0x1be')]['hasMany'](db['DeskField'],{'as':_0x05c0('0x1b8'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0x1be')]['belongsTo'](db[_0x05c0('0x1b9')],{'as':_0x05c0('0x1b9'),'foreignKey':_0x05c0('0x1ba')});db[_0x05c0('0xab')][_0x05c0('0x114')](db[_0x05c0('0xad')],{'as':_0x05c0('0x1b0'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xad')][_0x05c0('0x114')](db[_0x05c0('0xaf')],{'as':_0x05c0('0x1b3'),'onDelete':_0x05c0('0x112'),'foreignKey':'SubjectId'});db['ZohoConfiguration']['hasMany'](db[_0x05c0('0xaf')],{'as':_0x05c0('0x1b5'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xad')][_0x05c0('0x114')](db[_0x05c0('0xaf')],{'as':_0x05c0('0x1ad'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0xad')][_0x05c0('0x120')](db['ZohoAccount'],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xaf')][_0x05c0('0x114')](db['ZohoField'],{'as':_0x05c0('0x1bc'),'foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0xaf')][_0x05c0('0x114')](db[_0x05c0('0xaf')],{'as':_0x05c0('0x1bd'),'foreignKey':_0x05c0('0x1b6')});db['ZohoField']['hasMany'](db[_0x05c0('0xaf')],{'as':'Field','foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0xaf')][_0x05c0('0x120')](db[_0x05c0('0x1b9')],{'as':_0x05c0('0x1b9'),'foreignKey':'VariableId'});db[_0x05c0('0xb0')][_0x05c0('0x114')](db[_0x05c0('0xb2')],{'as':_0x05c0('0x1b0'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xb2')][_0x05c0('0x114')](db[_0x05c0('0xb4')],{'as':_0x05c0('0x1b3'),'foreignKey':'SubjectId'});db['ZendeskConfiguration']['hasMany'](db[_0x05c0('0xb4')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x05c0('0x114')](db[_0x05c0('0xb4')],{'as':_0x05c0('0x1ad'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0xb2')][_0x05c0('0x120')](db[_0x05c0('0xb0')],{'as':_0x05c0('0x167'),'foreignKey':'AccountId'});db[_0x05c0('0xb2')][_0x05c0('0x122')](db['Tag'],{'through':_0x05c0('0x1c0')});db['ZendeskField'][_0x05c0('0x114')](db[_0x05c0('0xb4')],{'as':_0x05c0('0x1bc'),'foreignKey':_0x05c0('0x1b4')});db['ZendeskField'][_0x05c0('0x114')](db['ZendeskField'],{'as':'Description','foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xb4')]['hasMany'](db[_0x05c0('0xb4')],{'as':_0x05c0('0x1b8'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0xb4')][_0x05c0('0x120')](db[_0x05c0('0x1b9')],{'as':_0x05c0('0x1b9'),'foreignKey':_0x05c0('0x1ba')});db['FreshdeskAccount'][_0x05c0('0x114')](db['FreshdeskConfiguration'],{'as':_0x05c0('0x1b0'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xb6')]['hasMany'](db[_0x05c0('0x1c1')],{'as':_0x05c0('0x1b3'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0xb6')][_0x05c0('0x114')](db[_0x05c0('0x1c1')],{'as':'Descriptions','onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xb6')][_0x05c0('0x114')](db[_0x05c0('0x1c1')],{'as':_0x05c0('0x1ad'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0xb6')][_0x05c0('0x120')](db[_0x05c0('0x1c2')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x1b1')});db['FreshdeskConfiguration'][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':_0x05c0('0x1c3')});db[_0x05c0('0x1c1')]['hasMany'](db['FreshdeskField'],{'as':'Subject','foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0x1c1')][_0x05c0('0x114')](db['FreshdeskField'],{'as':_0x05c0('0x1bd'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0x1c1')][_0x05c0('0x114')](db[_0x05c0('0x1c1')],{'as':'Field','foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0x1c1')][_0x05c0('0x120')](db['Variable'],{'as':_0x05c0('0x1b9'),'foreignKey':_0x05c0('0x1ba')});db[_0x05c0('0x1c4')][_0x05c0('0x114')](db[_0x05c0('0xba')],{'as':'Configurations','onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b1')});db['VtigerConfiguration'][_0x05c0('0x114')](db[_0x05c0('0x1c5')],{'as':'Subjects','foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0xba')]['hasMany'](db['VtigerField'],{'as':_0x05c0('0x1b5'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xba')][_0x05c0('0x114')](db[_0x05c0('0x1c5')],{'as':_0x05c0('0x1ad'),'foreignKey':'FieldId'});db[_0x05c0('0xba')][_0x05c0('0x120')](db[_0x05c0('0x1c4')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0x1c5')][_0x05c0('0x114')](db[_0x05c0('0x1c5')],{'as':_0x05c0('0x1bc'),'foreignKey':'SubjectId'});db['VtigerField'][_0x05c0('0x114')](db[_0x05c0('0x1c5')],{'as':'Description','foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0x1c5')][_0x05c0('0x114')](db['VtigerField'],{'as':_0x05c0('0x1b8'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0x1c5')][_0x05c0('0x120')](db[_0x05c0('0x1b9')],{'as':_0x05c0('0x1b9'),'foreignKey':_0x05c0('0x1ba')});db[_0x05c0('0xbc')]['hasMany'](db[_0x05c0('0x1c6')],{'as':'Configurations','onDelete':_0x05c0('0x112'),'foreignKey':'AccountId'});db[_0x05c0('0x1c6')][_0x05c0('0x114')](db[_0x05c0('0x1c7')],{'as':_0x05c0('0x1b3'),'foreignKey':'SubjectId'});db['ServicenowConfiguration'][_0x05c0('0x114')](db['ServicenowField'],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ServicenowConfiguration']['hasMany'](db[_0x05c0('0x1c7')],{'as':_0x05c0('0x1ad'),'foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0x1c6')][_0x05c0('0x120')](db[_0x05c0('0xbc')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0x1c7')][_0x05c0('0x114')](db[_0x05c0('0x1c7')],{'as':_0x05c0('0x1bc'),'foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0x1c7')]['hasMany'](db[_0x05c0('0x1c7')],{'as':_0x05c0('0x1bd'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0x1c7')][_0x05c0('0x114')](db['ServicenowField'],{'as':'Field','foreignKey':_0x05c0('0x1b7')});db[_0x05c0('0x1c7')]['belongsTo'](db[_0x05c0('0x1b9')],{'as':_0x05c0('0x1b9'),'foreignKey':_0x05c0('0x1ba')});db[_0x05c0('0xbf')][_0x05c0('0x114')](db[_0x05c0('0xc1')],{'as':_0x05c0('0x1b0'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b1')});db['Dynamics365Configuration'][_0x05c0('0x114')](db[_0x05c0('0xc3')],{'as':_0x05c0('0x1b3'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b4')});db['Dynamics365Configuration'][_0x05c0('0x114')](db[_0x05c0('0xc3')],{'as':_0x05c0('0x1b5'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xc1')][_0x05c0('0x114')](db[_0x05c0('0xc3')],{'as':'Fields','onDelete':_0x05c0('0x112'),'foreignKey':'FieldId'});db[_0x05c0('0xc1')]['belongsTo'](db[_0x05c0('0xbf')],{'as':'Account','foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xc3')][_0x05c0('0x114')](db['Dynamics365Field'],{'as':'Subject','foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0xc3')][_0x05c0('0x114')](db[_0x05c0('0xc3')],{'as':_0x05c0('0x1bd'),'foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xc3')][_0x05c0('0x114')](db['Dynamics365Field'],{'as':_0x05c0('0x1b8'),'foreignKey':_0x05c0('0x1b7')});db['Dynamics365Field'][_0x05c0('0x120')](db[_0x05c0('0x1b9')],{'as':_0x05c0('0x1b9'),'foreignKey':'VariableId'});db[_0x05c0('0xc4')][_0x05c0('0x114')](db[_0x05c0('0xc5')],{'as':_0x05c0('0x1b0'),'onDelete':'cascade','foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xc5')][_0x05c0('0x114')](db['FreshsalesField'],{'as':_0x05c0('0x1b3'),'foreignKey':_0x05c0('0x1b4')});db['FreshsalesConfiguration'][_0x05c0('0x114')](db[_0x05c0('0xc7')],{'as':'Descriptions','foreignKey':_0x05c0('0x1b6')});db[_0x05c0('0xc5')][_0x05c0('0x114')](db[_0x05c0('0xc7')],{'as':_0x05c0('0x1ad'),'foreignKey':'FieldId'});db[_0x05c0('0xc5')][_0x05c0('0x120')](db[_0x05c0('0xc4')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x1b1')});db[_0x05c0('0xc7')]['hasMany'](db['FreshsalesField'],{'as':_0x05c0('0x1bc'),'foreignKey':_0x05c0('0x1b4')});db[_0x05c0('0xc7')][_0x05c0('0x114')](db[_0x05c0('0xc7')],{'as':_0x05c0('0x1bd'),'foreignKey':_0x05c0('0x1b6')});db['FreshsalesField'][_0x05c0('0x114')](db[_0x05c0('0xc7')],{'as':_0x05c0('0x1b8'),'foreignKey':'FieldId'});db[_0x05c0('0xc7')]['belongsTo'](db[_0x05c0('0x1b9')],{'as':'Variable','foreignKey':_0x05c0('0x1ba')});db[_0x05c0('0xc9')][_0x05c0('0x120')](db['ChatWebsite'],{});db[_0x05c0('0xc9')]['belongsTo'](db['CmList'],{'as':_0x05c0('0x161'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0xc9')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'as':'Contact','foreignKey':_0x05c0('0x178')});db[_0x05c0('0xc9')]['belongsTo'](db[_0x05c0('0x6c')],{});db[_0x05c0('0xc9')][_0x05c0('0x120')](db[_0x05c0('0x6e')],{});db['ChatQueueReport'][_0x05c0('0x120')](db['User'],{});db[_0x05c0('0xc9')][_0x05c0('0x120')](db['ChatQueue'],{});db[_0x05c0('0xcb')]['belongsTo'](db[_0x05c0('0x12')],{'onDelete':_0x05c0('0x112'),'foreignKey':'FromId'});db['ChatInternalMessage']['belongsTo'](db[_0x05c0('0x12')],{'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1c8')});db[_0x05c0('0x148')][_0x05c0('0x114')](db[_0x05c0('0xce')],{'foreignKey':_0x05c0('0x1c9'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0x148')]['hasMany'](db[_0x05c0('0xcd')],{'foreignKey':_0x05c0('0x1c9'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0xd1')][_0x05c0('0x120')](db['SmsAccount'],{});db[_0x05c0('0xd1')][_0x05c0('0x120')](db[_0x05c0('0xf1')],{'as':_0x05c0('0x161'),'foreignKey':'ListId'});db[_0x05c0('0xd1')]['belongsTo'](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':'ContactId'});db[_0x05c0('0xd1')][_0x05c0('0x120')](db[_0x05c0('0x5d')],{});db[_0x05c0('0xd1')][_0x05c0('0x120')](db[_0x05c0('0x5f')],{});db[_0x05c0('0xd1')][_0x05c0('0x120')](db[_0x05c0('0x12')],{});db[_0x05c0('0xd1')][_0x05c0('0x120')](db[_0x05c0('0x60')],{});db['JscriptyProject'][_0x05c0('0x114')](db[_0x05c0('0x148')],{'foreignKey':_0x05c0('0x1ca')});db[_0x05c0('0x1cb')][_0x05c0('0x114')](db[_0x05c0('0xce')],{'foreignKey':'ProjectId'});db[_0x05c0('0x1cb')][_0x05c0('0x114')](db['JscriptyAnswerReport'],{'foreignKey':_0x05c0('0x1ca')});db[_0x05c0('0xda')][_0x05c0('0x122')](db['User'],{'as':_0x05c0('0x16d'),'through':_0x05c0('0x1cc')});db['Team']['belongsToMany'](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x127')});db['Team'][_0x05c0('0x122')](db['VoiceQueue'],{'through':_0x05c0('0x151'),'as':_0x05c0('0x12c')});db[_0x05c0('0xde')][_0x05c0('0x122')](db[_0x05c0('0x12d')],{'through':_0x05c0('0x165'),'as':'MailQueues'});db[_0x05c0('0xde')][_0x05c0('0x122')](db['ChatQueue'],{'through':_0x05c0('0x18c'),'as':_0x05c0('0x12f')});db[_0x05c0('0xde')][_0x05c0('0x122')](db[_0x05c0('0x55')],{'through':_0x05c0('0x177'),'as':'FaxQueues'});db[_0x05c0('0xde')][_0x05c0('0x122')](db[_0x05c0('0x60')],{'through':_0x05c0('0x1cd'),'as':_0x05c0('0x131')});db[_0x05c0('0xde')][_0x05c0('0x122')](db[_0x05c0('0x66')],{'through':_0x05c0('0x183'),'as':_0x05c0('0x132')});db['Team']['belongsToMany'](db[_0x05c0('0x109')],{'through':_0x05c0('0x1ce'),'as':_0x05c0('0x133')});db[_0x05c0('0xde')]['belongsToMany'](db[_0x05c0('0xf3')],{'through':'TeamVoicePrefix','as':_0x05c0('0x1cf')});db[_0x05c0('0xe1')][_0x05c0('0x114')](db[_0x05c0('0x79')],{'as':_0x05c0('0x1d0'),'foreignKey':_0x05c0('0x193')});db[_0x05c0('0xe1')][_0x05c0('0x114')](db[_0x05c0('0x7d')],{'as':_0x05c0('0x146'),'foreignKey':_0x05c0('0x193')});db[_0x05c0('0xe1')][_0x05c0('0x114')](db[_0x05c0('0x7f')],{'as':_0x05c0('0x147'),'foreignKey':'CampaignId'});db[_0x05c0('0xe1')][_0x05c0('0x114')](db[_0x05c0('0x7b')],{'as':_0x05c0('0x1d1'),'foreignKey':_0x05c0('0x193')});db[_0x05c0('0xe1')]['belongsTo'](db[_0x05c0('0x28')],{'as':_0x05c0('0x28'),'foreignKey':_0x05c0('0x14a')});db['Campaign'][_0x05c0('0x120')](db['Trunk'],{'as':_0x05c0('0x14b'),'foreignKey':_0x05c0('0x1d2')});db[_0x05c0('0xe1')][_0x05c0('0x120')](db[_0x05c0('0x89')],{'as':_0x05c0('0x89'),'foreignKey':_0x05c0('0x14c')});db[_0x05c0('0xe1')][_0x05c0('0x120')](db[_0x05c0('0xda')],{'as':'SquareProject','foreignKey':_0x05c0('0x1d3')});db[_0x05c0('0xe1')][_0x05c0('0x122')](db[_0x05c0('0xf1')],{'as':_0x05c0('0x1d4'),'through':'campaigns_has_cm_lists'});db[_0x05c0('0xe1')][_0x05c0('0x122')](db[_0x05c0('0xf1')],{'as':'BlackLists','through':'campaigns_has_cm_blacklists'});db['Attachment'][_0x05c0('0x120')](db[_0x05c0('0x6f')],{'as':_0x05c0('0x6f'),'foreignKey':'ChatOfflineMessageId'});db[_0x05c0('0xe7')]['belongsTo'](db[_0x05c0('0x45')],{});db[_0x05c0('0xe7')][_0x05c0('0x120')](db['MailInteraction'],{});db[_0x05c0('0xe7')][_0x05c0('0x120')](db[_0x05c0('0x3e')],{'foreignKey':_0x05c0('0x1d5'),'as':_0x05c0('0x1d6')});db['MailTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d7'),'as':_0x05c0('0x1d8')});db['MailTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d9'),'as':'ToAgent'});db[_0x05c0('0xe7')][_0x05c0('0x120')](db[_0x05c0('0x12d')],{'foreignKey':'ToMailQueueId','as':_0x05c0('0x1da')});db['MailTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x3e')],{'foreignKey':_0x05c0('0x1db'),'as':'ToAccount'});db['ChatTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x6e')],{});db[_0x05c0('0xe9')][_0x05c0('0x120')](db[_0x05c0('0x6c')],{});db[_0x05c0('0xe9')][_0x05c0('0x120')](db[_0x05c0('0x68')],{'foreignKey':_0x05c0('0x1dc'),'as':_0x05c0('0x1d6')});db['ChatTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d7'),'as':_0x05c0('0x1d8')});db['ChatTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d9'),'as':'ToAgent'});db['ChatTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x12e')],{'foreignKey':_0x05c0('0x1dd'),'as':_0x05c0('0x1da')});db[_0x05c0('0xe9')][_0x05c0('0x120')](db[_0x05c0('0x68')],{'foreignKey':_0x05c0('0x1de'),'as':_0x05c0('0x1df')});db[_0x05c0('0xeb')][_0x05c0('0x120')](db[_0x05c0('0x53')],{});db['FaxTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x51')],{});db['FaxTransferReport']['belongsTo'](db[_0x05c0('0x4d')],{'foreignKey':_0x05c0('0x1e0'),'as':_0x05c0('0x1d6')});db[_0x05c0('0xeb')]['belongsTo'](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d7'),'as':_0x05c0('0x1d8')});db[_0x05c0('0xeb')]['belongsTo'](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d9'),'as':_0x05c0('0x1e1')});db[_0x05c0('0xeb')][_0x05c0('0x120')](db[_0x05c0('0x55')],{'foreignKey':_0x05c0('0x1e2'),'as':_0x05c0('0x1da')});db[_0x05c0('0xeb')][_0x05c0('0x120')](db[_0x05c0('0x4d')],{'foreignKey':_0x05c0('0x1e3'),'as':_0x05c0('0x1df')});db['OpenchannelTransferReport'][_0x05c0('0x120')](db['OpenchannelMessage'],{});db[_0x05c0('0xed')][_0x05c0('0x120')](db[_0x05c0('0x12b')],{});db[_0x05c0('0xed')][_0x05c0('0x120')](db[_0x05c0('0x139')],{'foreignKey':_0x05c0('0x1e4'),'as':_0x05c0('0x1d6')});db['OpenchannelTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d7'),'as':_0x05c0('0x1d8')});db[_0x05c0('0xed')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d9'),'as':'ToAgent'});db['OpenchannelTransferReport']['belongsTo'](db[_0x05c0('0x66')],{'foreignKey':_0x05c0('0x1e5'),'as':_0x05c0('0x1da')});db['OpenchannelTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x139')],{'foreignKey':_0x05c0('0x1e6'),'as':_0x05c0('0x1df')});db['SmsTransferReport']['belongsTo'](db[_0x05c0('0x5f')],{});db[_0x05c0('0xef')][_0x05c0('0x120')](db['SmsInteraction'],{});db[_0x05c0('0xef')][_0x05c0('0x120')](db[_0x05c0('0x59')],{'foreignKey':_0x05c0('0x1e7'),'as':_0x05c0('0x1d6')});db[_0x05c0('0xef')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d7'),'as':_0x05c0('0x1d8')});db[_0x05c0('0xef')]['belongsTo'](db['User'],{'foreignKey':_0x05c0('0x1d9'),'as':'ToAgent'});db[_0x05c0('0xef')][_0x05c0('0x120')](db[_0x05c0('0x60')],{'foreignKey':'ToSmsQueueId','as':'ToQueue'});db[_0x05c0('0xef')][_0x05c0('0x120')](db['SmsAccount'],{'foreignKey':_0x05c0('0x1e8'),'as':_0x05c0('0x1df')});db['CmList'][_0x05c0('0x114')](db['Disposition'],{'as':_0x05c0('0x15e'),'foreignKey':_0x05c0('0x162'),'onDelete':_0x05c0('0x112')});db[_0x05c0('0xf1')][_0x05c0('0x114')](db[_0x05c0('0x1e9')],{'as':_0x05c0('0x1ea'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0xf1')][_0x05c0('0x114')](db[_0x05c0('0x77')],{'as':_0x05c0('0x125'),'onDelete':'cascade','foreignKey':_0x05c0('0x162')});db[_0x05c0('0xf1')][_0x05c0('0x114')](db['CmHopperFinal'],{'as':_0x05c0('0x146'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0xf1')][_0x05c0('0x114')](db[_0x05c0('0x7f')],{'as':'HopperHistory','foreignKey':'ListId'});db[_0x05c0('0xf1')][_0x05c0('0x114')](db[_0x05c0('0x11a')],{'as':_0x05c0('0x11a'),'foreignKey':_0x05c0('0x162')});db[_0x05c0('0xf1')][_0x05c0('0x122')](db[_0x05c0('0x1c')],{'as':_0x05c0('0x1eb'),'through':'voice_queues_has_cm_lists'});db[_0x05c0('0xf1')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':'cm_user_has_lists'});db[_0x05c0('0xf3')][_0x05c0('0x114')](db[_0x05c0('0x19')],{'as':_0x05c0('0x119'),'onDelete':'cascade'});db[_0x05c0('0xf3')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x10f')});db[_0x05c0('0xf3')][_0x05c0('0x122')](db[_0x05c0('0xde')],{'through':_0x05c0('0x10d'),'as':_0x05c0('0x150')});db[_0x05c0('0xf5')][_0x05c0('0x114')](db[_0x05c0('0x12')],{'as':_0x05c0('0x16d'),'foreignKey':_0x05c0('0x121')});db[_0x05c0('0xf5')]['hasMany'](db['UserProfileSection'],{'as':_0x05c0('0x1ec'),'foreignKey':_0x05c0('0x121'),'onDelete':'cascade'});db[_0x05c0('0xf7')]['hasMany'](db['UserProfileResource'],{'as':_0x05c0('0x1ed'),'foreignKey':_0x05c0('0x1ee'),'onDelete':_0x05c0('0x112')});db['WhatsappAccount']['hasMany'](db[_0x05c0('0x86')],{'as':_0x05c0('0x15e'),'foreignKey':'WhatsappAccountId','onDelete':'cascade'});db[_0x05c0('0xfd')][_0x05c0('0x114')](db[_0x05c0('0x85')],{'as':_0x05c0('0x15f'),'foreignKey':'WhatsappAccountId'});db[_0x05c0('0xfd')][_0x05c0('0x114')](db[_0x05c0('0x103')],{'as':_0x05c0('0x155'),'foreignKey':_0x05c0('0x1ef')});db[_0x05c0('0xfd')][_0x05c0('0x114')](db[_0x05c0('0x101')],{'as':_0x05c0('0x160')});db['WhatsappAccount'][_0x05c0('0x114')](db[_0x05c0('0xff')],{'as':'Applications'});db[_0x05c0('0xfd')][_0x05c0('0x120')](db['CmList'],{'as':'List','foreignKey':_0x05c0('0x162')});db[_0x05c0('0xfd')][_0x05c0('0x120')](db[_0x05c0('0x8b')],{'as':_0x05c0('0x14d'),'foreignKey':_0x05c0('0x14e')});db[_0x05c0('0xfd')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x14f'),'through':_0x05c0('0x13e')});db[_0x05c0('0xff')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'onDelete':_0x05c0('0x171')});db[_0x05c0('0xff')][_0x05c0('0x120')](db[_0x05c0('0x109')],{'onDelete':_0x05c0('0x171')});db[_0x05c0('0xff')][_0x05c0('0x120')](db[_0x05c0('0xfd')],{'onDelete':_0x05c0('0x171')});db[_0x05c0('0xff')]['belongsTo'](db[_0x05c0('0x89')],{'onDelete':_0x05c0('0x171'),'foreignKey':_0x05c0('0x14c')});db[_0x05c0('0xff')][_0x05c0('0x120')](db['Tag'],{'onDelete':_0x05c0('0x171'),'foreignKey':_0x05c0('0x174')});db['WhatsappInteraction'][_0x05c0('0x114')](db[_0x05c0('0x103')],{'as':_0x05c0('0x155'),'onDelete':_0x05c0('0x112'),'foreignKey':_0x05c0('0x1f0')});db['WhatsappInteraction'][_0x05c0('0x120')](db[_0x05c0('0xfd')],{'as':_0x05c0('0x167'),'foreignKey':_0x05c0('0x1ef')});db[_0x05c0('0x101')][_0x05c0('0x120')](db['CmContact'],{'as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178')});db[_0x05c0('0x101')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':_0x05c0('0x168'),'foreignKey':_0x05c0('0x113')});db[_0x05c0('0x101')][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':_0x05c0('0x1a8'),'as':'Tags'});db['WhatsappInteraction'][_0x05c0('0x122')](db[_0x05c0('0x169')],{'through':_0x05c0('0x1a8'),'as':_0x05c0('0x16c')});db['WhatsappInteraction'][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':_0x05c0('0x16d'),'through':_0x05c0('0x1f1'),'foreignKey':'WhatsappInteractionId'});db[_0x05c0('0x103')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'as':'User'});db[_0x05c0('0x103')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'onDelete':_0x05c0('0x112'),'as':_0x05c0('0x15a')});db[_0x05c0('0x103')][_0x05c0('0x120')](db[_0x05c0('0x101')],{'onDelete':_0x05c0('0x112'),'as':'Interaction','foreignKey':_0x05c0('0x1f0')});db['WhatsappMessage'][_0x05c0('0x120')](db['WhatsappAccount'],{'as':_0x05c0('0x167'),'foreignKey':'WhatsappAccountId'});db[_0x05c0('0x105')]['belongsTo'](db[_0x05c0('0xfd')],{});db['WhatsappQueueReport'][_0x05c0('0x120')](db[_0x05c0('0xf1')],{'as':'List','foreignKey':_0x05c0('0x162')});db[_0x05c0('0x105')][_0x05c0('0x120')](db[_0x05c0('0x77')],{'as':_0x05c0('0x15a'),'foreignKey':_0x05c0('0x178')});db[_0x05c0('0x105')][_0x05c0('0x120')](db[_0x05c0('0x101')],{});db[_0x05c0('0x105')][_0x05c0('0x120')](db[_0x05c0('0x109')],{});db[_0x05c0('0x105')]['belongsTo'](db['WhatsappMessage'],{});db[_0x05c0('0x105')][_0x05c0('0x120')](db[_0x05c0('0x12')],{});db[_0x05c0('0x107')]['belongsTo'](db['WhatsappMessage'],{});db['WhatsappTransferReport']['belongsTo'](db[_0x05c0('0x101')],{});db[_0x05c0('0x107')][_0x05c0('0x120')](db['WhatsappAccount'],{'foreignKey':'FromWhatsappAccountId','as':_0x05c0('0x1d6')});db['WhatsappTransferReport'][_0x05c0('0x120')](db[_0x05c0('0xfd')],{'foreignKey':'ToWhatsappAccountId','as':_0x05c0('0x1df')});db[_0x05c0('0x107')][_0x05c0('0x120')](db['WhatsappQueue'],{'foreignKey':_0x05c0('0x1f2'),'as':_0x05c0('0x1da')});db['WhatsappTransferReport'][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d7'),'as':_0x05c0('0x1d8')});db[_0x05c0('0x107')][_0x05c0('0x120')](db[_0x05c0('0x12')],{'foreignKey':_0x05c0('0x1d9'),'as':_0x05c0('0x1e1')});db[_0x05c0('0x109')][_0x05c0('0x122')](db[_0x05c0('0x12')],{'as':'Agents','through':_0x05c0('0x38'),'foreignKey':_0x05c0('0x1f3')});db[_0x05c0('0x109')][_0x05c0('0x122')](db[_0x05c0('0xde')],{'through':_0x05c0('0x1ce'),'as':'Teams'});module[_0x05c0('0x1f4')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 57b397c..e11c856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e50=['./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','./api/intDynamics365Field','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/setting','/api/square/odbc','/api/square/projects','./api/squareProject','./api/squareRecording','./api/squareMessage','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','/api/cm/lists','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','./api/whatsappApplication','/api/whatsapp/interactions','/api/whatsapp/messages','/api/whatsapp/reports/transfer','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','./api/pm2','/api/webbar','/apidoc','static','join','root','/www','/demo','snippet','3.0.0','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','password','apiKey','firstName','street','mobile','fax','email','clientId','clientSecret','securityToken','code','token','channelSecret','accessToken','accessTokenSecret','consumerKey','consumerSecret','membername','calleridname','exten','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','localstationid','secret','registry','oldPassword','isPlainObject','length','replace','}@@','includes','path','express-winston','util','./errors','./config/environment','./config/logger','api','./safe-template','safeTemplate','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','url','statusCode','user','name','role','inspect','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','remoteAddress','responseTime','other','agent_name','test','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/screenRecording','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/trunks','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/accounts','./api/mailAccount','/api/mail/queues','/api/mail/substatuses','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/queues','./api/smsQueue','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/interactions','./api/chatInteraction','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','/api/cm/companies','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','./api/action','/api/canned_answers','/api/conditions','./api/condition','/api/intervals','/api/pauses','./api/pause','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','/api/tags','./api/tag','/api/templates','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intServicenowAccount','/api/integrations/servicenow/configurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e50,0x1ce));var _0x00e5=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x0e50[_0x49b207];return _0x2dc8fa;};'use strict';var _=require('lodash');var path=require(_0x00e5('0x0'));var express=require('express');var ewinston=require(_0x00e5('0x1'));var util=require(_0x00e5('0x2'));var errors=require(_0x00e5('0x3'));var config=require(_0x00e5('0x4'));var logger=require(_0x00e5('0x5'))(_0x00e5('0x6'));var authLogger=require(_0x00e5('0x5'))('auth');var safeTemplate=require(_0x00e5('0x7'))[_0x00e5('0x8')];exports['default']=function(_0x4788db){_0x4788db['use'](ewinston[_0x00e5('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4da818,_0x13e81e){var _0xfbc777=_0x00e5('0xa');if(!_[_0x00e5('0xb')](_0x4da818[_0x00e5('0xc')])){_0xfbc777+=_0x00e5('0xd');var _0x541307=_0x4da818[_0x00e5('0xc')];maskSensitiveData(_0x541307);}return safeTemplate(util[_0x00e5('0xe')](_0xfbc777,_0x4da818[_0x00e5('0xf')],_0x4da818[_0x00e5('0x10')][_0x00e5('0x11')]?_0x4da818[_0x00e5('0x10')][_0x00e5('0x11')]:_0x4da818[_0x00e5('0x12')]['remoteAddress']||_0x4da818['ip'],_0x4da818[_0x00e5('0x13')],_0x13e81e[_0x00e5('0x14')],_0x13e81e['responseTime'],_0x4da818[_0x00e5('0x15')]?_0x4da818[_0x00e5('0x15')]['id']:null,_0x4da818[_0x00e5('0x15')]?_0x4da818['user'][_0x00e5('0x16')]:null,_0x4da818['user']?_0x4da818[_0x00e5('0x15')][_0x00e5('0x17')]:null,_0x541307?util[_0x00e5('0x18')](_0x541307,![],null):''));}}));_0x4788db[_0x00e5('0x19')](ewinston[_0x00e5('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x15e42c,_0x2face7){var _0x3bea20=_0x00e5('0x1a');if(_0x15e42c['body']&&_0x15e42c['body'][_0x00e5('0x1b')]&&_0x15e42c[_0x00e5('0xc')][_0x00e5('0x1c')]){_0x3bea20=_0x00e5('0x1d');}return util[_0x00e5('0xe')](_0x3bea20,_0x15e42c['method'],_0x15e42c['headers'][_0x00e5('0x11')]?_0x15e42c[_0x00e5('0x10')][_0x00e5('0x11')]:_0x15e42c['connection'][_0x00e5('0x1e')]||_0x15e42c['ip'],_0x15e42c[_0x00e5('0x13')],_0x2face7[_0x00e5('0x14')],_0x2face7[_0x00e5('0x1f')],_0x15e42c[_0x00e5('0x15')]?_0x15e42c[_0x00e5('0x15')]['id']:null,_0x15e42c[_0x00e5('0x15')]?_0x15e42c['user'][_0x00e5('0x16')]:null,_0x15e42c['user']?_0x15e42c[_0x00e5('0x15')][_0x00e5('0x17')]:null,_0x15e42c['body']&&_0x15e42c[_0x00e5('0xc')][_0x00e5('0x1b')]?_0x15e42c[_0x00e5('0xc')][_0x00e5('0x1b')]:_0x00e5('0x20'),_0x15e42c['body']&&_0x15e42c[_0x00e5('0xc')]['agent_id']?_0x15e42c[_0x00e5('0xc')][_0x00e5('0x1c')]:'',_0x15e42c[_0x00e5('0xc')]&&_0x15e42c[_0x00e5('0xc')][_0x00e5('0x21')]?_0x15e42c[_0x00e5('0xc')]['agent_name']:'');},'ignoreRoute':function(_0x3abb23){var _0x43b572=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x43b572[_0x00e5('0x22')](_0x3abb23[_0x00e5('0x13')]);}}));_0x4788db[_0x00e5('0x19')](_0x00e5('0x23'),require(_0x00e5('0x24')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x25'),require(_0x00e5('0x26')));_0x4788db['use'](_0x00e5('0x27'),require(_0x00e5('0x28')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x29'),require(_0x00e5('0x2a')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x2b'),require(_0x00e5('0x2c')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x2d'),require(_0x00e5('0x2e')));_0x4788db['use'](_0x00e5('0x2f'),require('./api/voiceRecording'));_0x4788db['use']('/api/screen/recordings',require(_0x00e5('0x30')));_0x4788db[_0x00e5('0x19')]('/api/voice/mails',require(_0x00e5('0x31')));_0x4788db['use']('/api/voice/mails/messages',require(_0x00e5('0x32')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x33'),require(_0x00e5('0x34')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x35'),require(_0x00e5('0x36')));_0x4788db[_0x00e5('0x19')]('/api/voice/agents/reports',require(_0x00e5('0x37')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x38'),require(_0x00e5('0x39')));_0x4788db[_0x00e5('0x19')]('/api/members/reports',require('./api/memberReport'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x3a'),require(_0x00e5('0x3b')));_0x4788db[_0x00e5('0x19')]('/api/voice/transfers/reports',require(_0x00e5('0x3c')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x3d'),require('./api/mailServerOut'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x3e'),require(_0x00e5('0x3f')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x40'),require('./api/mailQueue'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x41'),require('./api/mailSubstatus'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x42'),require(_0x00e5('0x43')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x44'),require(_0x00e5('0x45')));_0x4788db[_0x00e5('0x19')]('/api/mail/applications',require(_0x00e5('0x46')));_0x4788db['use'](_0x00e5('0x47'),require(_0x00e5('0x48')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x49'),require(_0x00e5('0x4a')));_0x4788db[_0x00e5('0x19')]('/api/dashboards/items',require(_0x00e5('0x4b')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x4c'),require(_0x00e5('0x4d')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x4e'),require('./api/faxApplication'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x4f'),require(_0x00e5('0x50')));_0x4788db['use']('/api/fax/messages',require('./api/faxMessage'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x51'),require(_0x00e5('0x52')));_0x4788db[_0x00e5('0x19')]('/api/fax/reports/queue',require(_0x00e5('0x53')));_0x4788db['use'](_0x00e5('0x54'),require(_0x00e5('0x55')));_0x4788db['use'](_0x00e5('0x56'),require(_0x00e5('0x57')));_0x4788db['use']('/api/sms/interactions',require(_0x00e5('0x58')));_0x4788db['use']('/api/sms/messages',require('./api/smsMessage'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x59'),require(_0x00e5('0x5a')));_0x4788db[_0x00e5('0x19')]('/api/openchannel/accounts',require(_0x00e5('0x5b')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x5c'),require('./api/openchannelApplication'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x5d'),require('./api/openchannelInteraction'));_0x4788db['use'](_0x00e5('0x5e'),require(_0x00e5('0x5f')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x60'),require(_0x00e5('0x61')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x62'),require(_0x00e5('0x63')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x64'),require(_0x00e5('0x65')));_0x4788db[_0x00e5('0x19')]('/api/chat/applications',require('./api/chatApplication'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x66'),require(_0x00e5('0x67')));_0x4788db[_0x00e5('0x19')]('/api/chat/messages',require(_0x00e5('0x68')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x69'),require(_0x00e5('0x6a')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x6b'),require(_0x00e5('0x6c')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x6d'),require('./api/chatGroup'));_0x4788db['use'](_0x00e5('0x6e'),require('./api/chatProactiveAction'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x6f'),require('./api/cmCompany'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x70'),require(_0x00e5('0x71')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x72'),require(_0x00e5('0x73')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x74'),require(_0x00e5('0x75')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x76'),require(_0x00e5('0x77')));_0x4788db['use'](_0x00e5('0x78'),require(_0x00e5('0x79')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x7a'),require(_0x00e5('0x7b')));_0x4788db[_0x00e5('0x19')]('/api/actions',require(_0x00e5('0x7c')));_0x4788db[_0x00e5('0x19')]('/api/automations',require('./api/automation'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x7d'),require('./api/cannedAnswer'));_0x4788db[_0x00e5('0x19')]('/api/dispositions',require('./api/disposition'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x7e'),require(_0x00e5('0x7f')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x80'),require('./api/interval'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x81'),require(_0x00e5('0x82')));_0x4788db['use']('/api/cdr',require('./api/cdr'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x83'),require(_0x00e5('0x84')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x85'),require(_0x00e5('0x86')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x87'),require('./api/sound'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x88'),require(_0x00e5('0x89')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x8a'),require('./api/template'));_0x4788db['use'](_0x00e5('0x8b'),require(_0x00e5('0x8c')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x8d'),require(_0x00e5('0x8e')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x8f'),require(_0x00e5('0x90')));_0x4788db['use'](_0x00e5('0x91'),require(_0x00e5('0x92')));_0x4788db[_0x00e5('0x19')]('/api/analytics/custom_reports',require(_0x00e5('0x93')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x94'),require(_0x00e5('0x95')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x96'),require(_0x00e5('0x97')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x98'),require(_0x00e5('0x99')));_0x4788db[_0x00e5('0x19')]('/api/analytics/field_reports',require(_0x00e5('0x9a')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x9b'),require(_0x00e5('0x9c')));_0x4788db[_0x00e5('0x19')]('/api/integrations/salesforce/accounts',require(_0x00e5('0x9d')));_0x4788db['use'](_0x00e5('0x9e'),require('./api/intSalesforceConfiguration'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x9f'),require('./api/intSalesforceField'));_0x4788db[_0x00e5('0x19')](_0x00e5('0xa0'),require(_0x00e5('0xa1')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xa2'),require(_0x00e5('0xa3')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xa4'),require('./api/intSugarcrmField'));_0x4788db[_0x00e5('0x19')](_0x00e5('0xa5'),require(_0x00e5('0xa6')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xa7'),require('./api/intDeskConfiguration'));_0x4788db['use'](_0x00e5('0xa8'),require(_0x00e5('0xa9')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xaa'),require(_0x00e5('0xab')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xac'),require(_0x00e5('0xad')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xae'),require(_0x00e5('0xaf')));_0x4788db[_0x00e5('0x19')]('/api/integrations/zendesk/accounts',require(_0x00e5('0xb0')));_0x4788db['use'](_0x00e5('0xb1'),require(_0x00e5('0xb2')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xb3'),require(_0x00e5('0xb4')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xb5'),require(_0x00e5('0xb6')));_0x4788db['use'](_0x00e5('0xb7'),require(_0x00e5('0xb8')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xb9'),require(_0x00e5('0xba')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xbb'),require(_0x00e5('0xbc')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xbd'),require(_0x00e5('0xbe')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xbf'),require('./api/intVtigerField'));_0x4788db[_0x00e5('0x19')]('/api/integrations/servicenow/accounts',require(_0x00e5('0xc0')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xc1'),require(_0x00e5('0xc2')));_0x4788db[_0x00e5('0x19')]('/api/integrations/servicenow/fields',require(_0x00e5('0xc3')));_0x4788db['use'](_0x00e5('0xc4'),require('./api/intDynamics365Account'));_0x4788db['use'](_0x00e5('0xc5'),require(_0x00e5('0xc6')));_0x4788db['use']('/api/integrations/dynamics365/fields',require(_0x00e5('0xc7')));_0x4788db[_0x00e5('0x19')]('/api/integrations/freshsales/accounts',require('./api/intFreshsalesAccount'));_0x4788db['use'](_0x00e5('0xc8'),require(_0x00e5('0xc9')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xca'),require(_0x00e5('0xcb')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xcc'),require(_0x00e5('0xcd')));_0x4788db[_0x00e5('0x19')]('/api/chat/reports/queue',require(_0x00e5('0xce')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xcf'),require(_0x00e5('0xd0')));_0x4788db[_0x00e5('0x19')]('/api/jscripty/answers/reports',require(_0x00e5('0xd1')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xd2'),require(_0x00e5('0xd3')));_0x4788db[_0x00e5('0x19')]('/api/jscripty/sessions/reports',require(_0x00e5('0xd4')));_0x4788db['use'](_0x00e5('0xd5'),require(_0x00e5('0xd6')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xd7'),require('./api/squareReport'));_0x4788db[_0x00e5('0x19')](_0x00e5('0xd8'),require(_0x00e5('0xd9')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xda'),require('./api/jscriptyProject'));_0x4788db['use']('/api/settings',require(_0x00e5('0xdb')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xdc'),require('./api/squareOdbc'));_0x4788db[_0x00e5('0x19')](_0x00e5('0xdd'),require(_0x00e5('0xde')));_0x4788db[_0x00e5('0x19')]('/api/square/recordings',require(_0x00e5('0xdf')));_0x4788db['use']('/api/square/messages',require(_0x00e5('0xe0')));_0x4788db[_0x00e5('0x19')]('/api/teams',require(_0x00e5('0xe1')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xe2'),require(_0x00e5('0xe3')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xe4'),require(_0x00e5('0xe5')));_0x4788db['use'](_0x00e5('0xe6'),require('./api/migration'));_0x4788db[_0x00e5('0x19')]('/api/attachments',require(_0x00e5('0xe7')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xe8'),require(_0x00e5('0xe9')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xea'),require(_0x00e5('0xeb')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xec'),require(_0x00e5('0xed')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xee'),require(_0x00e5('0xef')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xf0'),require(_0x00e5('0xf1')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xf2'),require('./api/smsTransferReport'));_0x4788db[_0x00e5('0x19')](_0x00e5('0xf3'),require('./api/cmList'));_0x4788db[_0x00e5('0x19')](_0x00e5('0xf4'),require(_0x00e5('0xf5')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xf6'),require(_0x00e5('0xf7')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xf8'),require(_0x00e5('0xf9')));_0x4788db['use'](_0x00e5('0xfa'),require('./api/userProfileResource'));_0x4788db['use'](_0x00e5('0xfb'),require(_0x00e5('0xfc')));_0x4788db[_0x00e5('0x19')](_0x00e5('0xfd'),require(_0x00e5('0xfe')));_0x4788db['use']('/api/whatsapp/applications',require(_0x00e5('0xff')));_0x4788db['use'](_0x00e5('0x100'),require('./api/whatsappInteraction'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x101'),require('./api/whatsappMessage'));_0x4788db[_0x00e5('0x19')]('/api/whatsapp/reports/queue',require('./api/whatsappQueueReport'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x102'),require('./api/whatsappTransferReport'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x103'),require('./api/whatsappQueue'));_0x4788db['use'](_0x00e5('0x104'),require(_0x00e5('0x105')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x106'),require(_0x00e5('0x107')));_0x4788db['use'](_0x00e5('0x108'),require(_0x00e5('0x109')));_0x4788db['use'](_0x00e5('0x10a'),require(_0x00e5('0x10b')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x10c'),require(_0x00e5('0x10d')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x10e'),require(_0x00e5('0x10f')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x110'),require(_0x00e5('0x111')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x112'),require(_0x00e5('0x113')));_0x4788db[_0x00e5('0x19')]('/api/pm2',require(_0x00e5('0x114')));_0x4788db[_0x00e5('0x19')](_0x00e5('0x115'),require('./api/webbar'));_0x4788db[_0x00e5('0x19')](_0x00e5('0x116'),express[_0x00e5('0x117')](path['join'](config['root'],'/apidoc')));_0x4788db[_0x00e5('0x19')]('/www',express['static'](path[_0x00e5('0x118')](config[_0x00e5('0x119')],_0x00e5('0x11a'))));_0x4788db['use']('/demo',express[_0x00e5('0x117')](path[_0x00e5('0x118')](config['root'],_0x00e5('0x11b'))));_0x4788db['use']('/snippet',express[_0x00e5('0x117')](path[_0x00e5('0x118')](config[_0x00e5('0x119')],_0x00e5('0x11c'),_0x00e5('0x11d'))));_0x4788db[_0x00e5('0x19')]('/plugins',express['static'](path[_0x00e5('0x118')](config[_0x00e5('0x119')],_0x00e5('0x11e'))));_0x4788db[_0x00e5('0x11f')](_0x00e5('0x120'))[_0x00e5('0x121')](errors[0x194]);_0x4788db[_0x00e5('0x11f')]('/*')[_0x00e5('0x121')](function(_0x35fcac,_0x3d1319){_0x3d1319[_0x00e5('0x122')](path[_0x00e5('0x123')](_0x4788db[_0x00e5('0x121')]('appPath')+_0x00e5('0x124')));});};var sensitiveFields=['username',_0x00e5('0x125'),'newPassword',_0x00e5('0x126'),_0x00e5('0x127'),'lastName',_0x00e5('0x128'),'phone',_0x00e5('0x129'),_0x00e5('0x12a'),_0x00e5('0x12b'),_0x00e5('0x12c'),_0x00e5('0x12d'),_0x00e5('0x12e'),_0x00e5('0x12f'),'accessKey','tenantId',_0x00e5('0x130'),_0x00e5('0x131'),_0x00e5('0x132'),_0x00e5('0x133'),'authToken',_0x00e5('0x134'),_0x00e5('0x135'),_0x00e5('0x136'),_0x00e5('0x137'),'calleridnum',_0x00e5('0x138'),'vidaooApiKey',_0x00e5('0x139'),_0x00e5('0x13a'),_0x00e5('0x13b'),_0x00e5('0x13c'),_0x00e5('0x13d'),_0x00e5('0x15'),_0x00e5('0x13e'),'accountSid',_0x00e5('0x13f'),'dsn',_0x00e5('0x140'),_0x00e5('0x141'),_0x00e5('0x142')];function maskSensitiveData(_0x32938e){var _0x4912af=/(?!^)[\s\S](?!$)/g;if(!_[_0x00e5('0x143')](_0x32938e))return;for(var _0x4ffd23 in _0x32938e){if(_['isArray'](_0x32938e[_0x4ffd23])){for(var _0x1701da=0x0;_0x1701da<_0x32938e[_0x4ffd23][_0x00e5('0x144')];_0x1701da++){maskSensitiveData(_0x32938e[_0x4ffd23][_0x1701da]);}}else if(_[_0x00e5('0x143')](_0x32938e[_0x4ffd23])){maskSensitiveData(_0x32938e[_0x4ffd23]);}else if(_['isString'](_0x32938e[_0x4ffd23])){_0x32938e[_0x4ffd23]=_0x32938e[_0x4ffd23][_0x00e5('0x145')](/{{{/g,'@@{')[_0x00e5('0x145')](/}}}/g,_0x00e5('0x146'))[_0x00e5('0x145')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x00e5('0x147')](sensitiveFields,_0x4ffd23)){_0x32938e[_0x4ffd23]=_0x32938e[_0x4ffd23][_0x00e5('0x145')](_0x4912af,'*');}}}}
\ No newline at end of file
+var _0x7ab0=['api','auth','./safe-template','safeTemplate','default','use','body','\x20body=%s','format','headers','x-forwarded-for','connection','statusCode','responseTime','user','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','method','remoteAddress','agent_name','test','url','/api/users','/api/voice/chanspy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/applications','./api/faxApplication','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','/api/cm/contacts','./api/cmContact','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/condition','/api/intervals','./api/interval','/api/pauses','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','./api/variable','/api/integrations','./api/integration','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','./api/analyticTreeReport','/api/integrations/salesforce/accounts','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/configurations','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','./api/intFreshdeskField','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/square/odbc','./api/squareOdbc','./api/squareRecording','/api/square/messages','/api/teams','./api/team','/api/license','./api/license','./api/campaign','./api/migration','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','./api/realtime','./api/authLocal','/api/auth/google','./api/authGoogle','/api/rpc','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/snippet','3.0.0','/plugins','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','route','resolve','appPath','/index.html','password','newPassword','apiKey','mobile','clientSecret','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','localstationid','dsn','secret','registry','isPlainObject','isArray','length','isString','replace','@@{','includes','lodash','path','express','express-winston','util','./errors','./config/logger'];(function(_0x4e5dc9,_0x46c0ef){var _0x3c6e80=function(_0x5986fb){while(--_0x5986fb){_0x4e5dc9['push'](_0x4e5dc9['shift']());}};_0x3c6e80(++_0x46c0ef);}(_0x7ab0,0x135));var _0x07ab=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x7ab0[_0xefd519];return _0x4bb882;};'use strict';var _=require(_0x07ab('0x0'));var path=require(_0x07ab('0x1'));var express=require(_0x07ab('0x2'));var ewinston=require(_0x07ab('0x3'));var util=require(_0x07ab('0x4'));var errors=require(_0x07ab('0x5'));var config=require('./config/environment');var logger=require(_0x07ab('0x6'))(_0x07ab('0x7'));var authLogger=require(_0x07ab('0x6'))(_0x07ab('0x8'));var safeTemplate=require(_0x07ab('0x9'))[_0x07ab('0xa')];exports[_0x07ab('0xb')]=function(_0x5818eb){_0x5818eb[_0x07ab('0xc')](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x5cb031,_0x4f0632){var _0x213738='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x5cb031[_0x07ab('0xd')])){_0x213738+=_0x07ab('0xe');var _0x445469=_0x5cb031[_0x07ab('0xd')];maskSensitiveData(_0x445469);}return safeTemplate(util[_0x07ab('0xf')](_0x213738,_0x5cb031['method'],_0x5cb031[_0x07ab('0x10')][_0x07ab('0x11')]?_0x5cb031[_0x07ab('0x10')][_0x07ab('0x11')]:_0x5cb031[_0x07ab('0x12')]['remoteAddress']||_0x5cb031['ip'],_0x5cb031['url'],_0x4f0632[_0x07ab('0x13')],_0x4f0632[_0x07ab('0x14')],_0x5cb031['user']?_0x5cb031[_0x07ab('0x15')]['id']:null,_0x5cb031[_0x07ab('0x15')]?_0x5cb031[_0x07ab('0x15')][_0x07ab('0x16')]:null,_0x5cb031[_0x07ab('0x15')]?_0x5cb031[_0x07ab('0x15')][_0x07ab('0x17')]:null,_0x445469?util[_0x07ab('0x18')](_0x445469,![],null):''));}}));_0x5818eb[_0x07ab('0xc')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x5c6802,_0x5293ab){var _0x26ac87=_0x07ab('0x19');if(_0x5c6802[_0x07ab('0xd')]&&_0x5c6802[_0x07ab('0xd')][_0x07ab('0x1a')]&&_0x5c6802[_0x07ab('0xd')][_0x07ab('0x1b')]){_0x26ac87=_0x07ab('0x1c');}return util[_0x07ab('0xf')](_0x26ac87,_0x5c6802[_0x07ab('0x1d')],_0x5c6802[_0x07ab('0x10')][_0x07ab('0x11')]?_0x5c6802['headers'][_0x07ab('0x11')]:_0x5c6802[_0x07ab('0x12')][_0x07ab('0x1e')]||_0x5c6802['ip'],_0x5c6802['url'],_0x5293ab[_0x07ab('0x13')],_0x5293ab['responseTime'],_0x5c6802[_0x07ab('0x15')]?_0x5c6802[_0x07ab('0x15')]['id']:null,_0x5c6802[_0x07ab('0x15')]?_0x5c6802[_0x07ab('0x15')][_0x07ab('0x16')]:null,_0x5c6802[_0x07ab('0x15')]?_0x5c6802[_0x07ab('0x15')][_0x07ab('0x17')]:null,_0x5c6802[_0x07ab('0xd')]&&_0x5c6802['body'][_0x07ab('0x1a')]?_0x5c6802['body'][_0x07ab('0x1a')]:'other',_0x5c6802['body']&&_0x5c6802[_0x07ab('0xd')][_0x07ab('0x1b')]?_0x5c6802[_0x07ab('0xd')]['agent_id']:'',_0x5c6802[_0x07ab('0xd')]&&_0x5c6802[_0x07ab('0xd')][_0x07ab('0x1f')]?_0x5c6802[_0x07ab('0xd')]['agent_name']:'');},'ignoreRoute':function(_0x41485c){var _0x292760=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x292760[_0x07ab('0x20')](_0x41485c[_0x07ab('0x21')]);}}));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x22'),require('./api/user'));_0x5818eb['use'](_0x07ab('0x23'),require('./api/voiceChanSpy'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x24'),require(_0x07ab('0x25')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x26'),require(_0x07ab('0x27')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x28'),require(_0x07ab('0x29')));_0x5818eb[_0x07ab('0xc')]('/api/voice/queues',require('./api/voiceQueue'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x2a'),require(_0x07ab('0x2b')));_0x5818eb['use'](_0x07ab('0x2c'),require(_0x07ab('0x2d')));_0x5818eb['use']('/api/voice/mails',require(_0x07ab('0x2e')));_0x5818eb[_0x07ab('0xc')]('/api/voice/mails/messages',require(_0x07ab('0x2f')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x30'),require(_0x07ab('0x31')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x32'),require(_0x07ab('0x33')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x34'),require('./api/voiceAgentReport'));_0x5818eb['use']('/api/voice/queues/reports',require(_0x07ab('0x35')));_0x5818eb['use'](_0x07ab('0x36'),require(_0x07ab('0x37')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x38'),require(_0x07ab('0x39')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x3a'),require(_0x07ab('0x3b')));_0x5818eb[_0x07ab('0xc')]('/api/mail/out_servers',require('./api/mailServerOut'));_0x5818eb[_0x07ab('0xc')]('/api/mail/accounts',require('./api/mailAccount'));_0x5818eb['use'](_0x07ab('0x3c'),require(_0x07ab('0x3d')));_0x5818eb['use'](_0x07ab('0x3e'),require(_0x07ab('0x3f')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x40'),require(_0x07ab('0x41')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x42'),require(_0x07ab('0x43')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x44'),require('./api/mailApplication'));_0x5818eb[_0x07ab('0xc')]('/api/mail/reports/queue',require(_0x07ab('0x45')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x46'),require(_0x07ab('0x47')));_0x5818eb['use'](_0x07ab('0x48'),require(_0x07ab('0x49')));_0x5818eb[_0x07ab('0xc')]('/api/fax/accounts',require('./api/faxAccount'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x4a'),require(_0x07ab('0x4b')));_0x5818eb[_0x07ab('0xc')]('/api/fax/interactions',require(_0x07ab('0x4c')));_0x5818eb['use'](_0x07ab('0x4d'),require(_0x07ab('0x4e')));_0x5818eb['use']('/api/fax/queues',require('./api/faxQueue'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x4f'),require(_0x07ab('0x50')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x51'),require(_0x07ab('0x52')));_0x5818eb[_0x07ab('0xc')]('/api/sms/applications',require(_0x07ab('0x53')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x54'),require(_0x07ab('0x55')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x56'),require(_0x07ab('0x57')));_0x5818eb['use']('/api/sms/queues',require(_0x07ab('0x58')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x59'),require('./api/openchannelAccount'));_0x5818eb[_0x07ab('0xc')]('/api/openchannel/applications',require(_0x07ab('0x5a')));_0x5818eb[_0x07ab('0xc')]('/api/openchannel/interactions',require(_0x07ab('0x5b')));_0x5818eb['use'](_0x07ab('0x5c'),require(_0x07ab('0x5d')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x5e'),require(_0x07ab('0x5f')));_0x5818eb['use'](_0x07ab('0x60'),require('./api/chatWebsite'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x61'),require('./api/openchannelQueueReport'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x62'),require(_0x07ab('0x63')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x64'),require(_0x07ab('0x65')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x66'),require(_0x07ab('0x67')));_0x5818eb[_0x07ab('0xc')]('/api/chat/offline_messages',require(_0x07ab('0x68')));_0x5818eb['use'](_0x07ab('0x69'),require(_0x07ab('0x6a')));_0x5818eb['use'](_0x07ab('0x6b'),require(_0x07ab('0x6c')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x6d'),require(_0x07ab('0x6e')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x6f'),require('./api/cmCompany'));_0x5818eb['use'](_0x07ab('0x70'),require(_0x07ab('0x71')));_0x5818eb[_0x07ab('0xc')]('/api/cm/hopper',require('./api/cmHopper'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x72'),require('./api/cmHopperBlack'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x73'),require(_0x07ab('0x74')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x75'),require(_0x07ab('0x76')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x77'),require('./api/cmCustomField'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x78'),require('./api/action'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x79'),require(_0x07ab('0x7a')));_0x5818eb['use'](_0x07ab('0x7b'),require(_0x07ab('0x7c')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x7d'),require('./api/disposition'));_0x5818eb[_0x07ab('0xc')]('/api/conditions',require(_0x07ab('0x7e')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x7f'),require(_0x07ab('0x80')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x81'),require('./api/pause'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x82'),require(_0x07ab('0x83')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x84'),require(_0x07ab('0x85')));_0x5818eb['use']('/api/schedules',require('./api/schedule'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x86'),require(_0x07ab('0x87')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x88'),require(_0x07ab('0x89')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x8a'),require(_0x07ab('0x8b')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x8c'),require(_0x07ab('0x8d')));_0x5818eb[_0x07ab('0xc')]('/api/variables',require(_0x07ab('0x8e')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x8f'),require(_0x07ab('0x90')));_0x5818eb[_0x07ab('0xc')]('/api/integrations/reports',require(_0x07ab('0x91')));_0x5818eb[_0x07ab('0xc')]('/api/analytics/custom_reports',require(_0x07ab('0x92')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x93'),require(_0x07ab('0x94')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x95'),require(_0x07ab('0x96')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x97'),require('./api/analyticMetric'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x98'),require(_0x07ab('0x99')));_0x5818eb[_0x07ab('0xc')]('/api/analytics/tree_reports',require(_0x07ab('0x9a')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x9b'),require('./api/intSalesforceAccount'));_0x5818eb['use']('/api/integrations/salesforce/configurations',require('./api/intSalesforceConfiguration'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x9c'),require(_0x07ab('0x9d')));_0x5818eb[_0x07ab('0xc')]('/api/integrations/sugarcrm/accounts',require('./api/intSugarcrmAccount'));_0x5818eb['use'](_0x07ab('0x9e'),require('./api/intSugarcrmConfiguration'));_0x5818eb[_0x07ab('0xc')]('/api/integrations/sugarcrm/fields',require('./api/intSugarcrmField'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x9f'),require(_0x07ab('0xa0')));_0x5818eb[_0x07ab('0xc')]('/api/integrations/desk/configurations',require(_0x07ab('0xa1')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xa2'),require('./api/intDeskField'));_0x5818eb['use'](_0x07ab('0xa3'),require(_0x07ab('0xa4')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xa5'),require(_0x07ab('0xa6')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xa7'),require(_0x07ab('0xa8')));_0x5818eb['use'](_0x07ab('0xa9'),require(_0x07ab('0xaa')));_0x5818eb[_0x07ab('0xc')]('/api/integrations/zendesk/configurations',require(_0x07ab('0xab')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xac'),require(_0x07ab('0xad')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xae'),require('./api/intFreshdeskAccount'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xaf'),require(_0x07ab('0xb0')));_0x5818eb[_0x07ab('0xc')]('/api/integrations/freshdesk/fields',require(_0x07ab('0xb1')));_0x5818eb['use']('/api/integrations/vtiger/accounts',require('./api/intVtigerAccount'));_0x5818eb[_0x07ab('0xc')]('/api/integrations/vtiger/configurations',require(_0x07ab('0xb2')));_0x5818eb['use'](_0x07ab('0xb3'),require(_0x07ab('0xb4')));_0x5818eb['use'](_0x07ab('0xb5'),require(_0x07ab('0xb6')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xb7'),require('./api/intServicenowConfiguration'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xb8'),require(_0x07ab('0xb9')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xba'),require(_0x07ab('0xbb')));_0x5818eb['use'](_0x07ab('0xbc'),require(_0x07ab('0xbd')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xbe'),require('./api/intDynamics365Field'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xbf'),require('./api/intFreshsalesAccount'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xc0'),require(_0x07ab('0xc1')));_0x5818eb[_0x07ab('0xc')]('/api/integrations/freshsales/fields',require(_0x07ab('0xc2')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xc3'),require(_0x07ab('0xc4')));_0x5818eb['use'](_0x07ab('0xc5'),require('./api/chatQueueReport'));_0x5818eb['use'](_0x07ab('0xc6'),require('./api/chatInternalMessage'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xc7'),require('./api/jscriptyAnswerReport'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xc8'),require(_0x07ab('0xc9')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xca'),require('./api/jscriptySessionReport'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xcb'),require(_0x07ab('0xcc')));_0x5818eb['use'](_0x07ab('0xcd'),require(_0x07ab('0xce')));_0x5818eb[_0x07ab('0xc')]('/api/square/details/reports',require(_0x07ab('0xcf')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xd0'),require(_0x07ab('0xd1')));_0x5818eb['use']('/api/settings',require('./api/setting'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xd2'),require(_0x07ab('0xd3')));_0x5818eb[_0x07ab('0xc')]('/api/square/projects',require('./api/squareProject'));_0x5818eb[_0x07ab('0xc')]('/api/square/recordings',require(_0x07ab('0xd4')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xd5'),require('./api/squareMessage'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xd6'),require(_0x07ab('0xd7')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xd8'),require(_0x07ab('0xd9')));_0x5818eb[_0x07ab('0xc')]('/api/campaigns',require(_0x07ab('0xda')));_0x5818eb[_0x07ab('0xc')]('/api/migrations',require(_0x07ab('0xdb')));_0x5818eb['use']('/api/attachments',require('./api/attachment'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xdc'),require(_0x07ab('0xdd')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xde'),require(_0x07ab('0xdf')));_0x5818eb['use'](_0x07ab('0xe0'),require(_0x07ab('0xe1')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xe2'),require('./api/faxTransferReport'));_0x5818eb['use'](_0x07ab('0xe3'),require(_0x07ab('0xe4')));_0x5818eb['use'](_0x07ab('0xe5'),require(_0x07ab('0xe6')));_0x5818eb['use']('/api/cm/lists',require(_0x07ab('0xe7')));_0x5818eb[_0x07ab('0xc')]('/api/voice/prefixes',require(_0x07ab('0xe8')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xe9'),require(_0x07ab('0xea')));_0x5818eb['use'](_0x07ab('0xeb'),require('./api/userProfileSection'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xec'),require(_0x07ab('0xed')));_0x5818eb[_0x07ab('0xc')]('/api/userNotifications',require(_0x07ab('0xee')));_0x5818eb['use'](_0x07ab('0xef'),require(_0x07ab('0xf0')));_0x5818eb[_0x07ab('0xc')]('/api/whatsapp/applications',require(_0x07ab('0xf1')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xf2'),require(_0x07ab('0xf3')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xf4'),require(_0x07ab('0xf5')));_0x5818eb['use'](_0x07ab('0xf6'),require(_0x07ab('0xf7')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xf8'),require(_0x07ab('0xf9')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xfa'),require(_0x07ab('0xfb')));_0x5818eb['use']('/api/cloudProviders',require('./api/cloudProvider'));_0x5818eb['use']('/api/realtime',require(_0x07ab('0xfc')));_0x5818eb['use']('/api/auth/local',require(_0x07ab('0xfd')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0xfe'),require(_0x07ab('0xff')));_0x5818eb[_0x07ab('0xc')]('/api/jira',require('./api/jira'));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x100'),require('./api/rpc'));_0x5818eb['use']('/api/version',require(_0x07ab('0x101')));_0x5818eb['use'](_0x07ab('0x102'),require(_0x07ab('0x103')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x104'),require(_0x07ab('0x105')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x106'),require(_0x07ab('0x107')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x108'),express[_0x07ab('0x109')](path[_0x07ab('0x10a')](config[_0x07ab('0x10b')],_0x07ab('0x108'))));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x10c'),express[_0x07ab('0x109')](path[_0x07ab('0x10a')](config[_0x07ab('0x10b')],'/www')));_0x5818eb[_0x07ab('0xc')]('/demo',express[_0x07ab('0x109')](path[_0x07ab('0x10a')](config[_0x07ab('0x10b')],'/demo')));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x10d'),express[_0x07ab('0x109')](path[_0x07ab('0x10a')](config['root'],'snippet',_0x07ab('0x10e'))));_0x5818eb[_0x07ab('0xc')](_0x07ab('0x10f'),express[_0x07ab('0x109')](path[_0x07ab('0x10a')](config[_0x07ab('0x10b')],_0x07ab('0x110'))));_0x5818eb['route'](_0x07ab('0x111'))[_0x07ab('0x112')](errors[0x194]);_0x5818eb[_0x07ab('0x113')]('/*')[_0x07ab('0x112')](function(_0x33ca11,_0x35e46a){_0x35e46a['sendFile'](path[_0x07ab('0x114')](_0x5818eb[_0x07ab('0x112')](_0x07ab('0x115'))+_0x07ab('0x116')));});};var sensitiveFields=['username',_0x07ab('0x117'),_0x07ab('0x118'),_0x07ab('0x119'),'firstName','lastName','street','phone',_0x07ab('0x11a'),'fax','email','clientId',_0x07ab('0x11b'),'securityToken',_0x07ab('0x11c'),_0x07ab('0x11d'),_0x07ab('0x11e'),_0x07ab('0x11f'),_0x07ab('0x120'),_0x07ab('0x121'),_0x07ab('0x122'),_0x07ab('0x123'),_0x07ab('0x124'),_0x07ab('0x125'),_0x07ab('0x126'),_0x07ab('0x127'),_0x07ab('0x128'),_0x07ab('0x129'),_0x07ab('0x12a'),_0x07ab('0x12b'),_0x07ab('0x12c'),_0x07ab('0x12d'),_0x07ab('0x12e'),_0x07ab('0x12f'),_0x07ab('0x15'),_0x07ab('0x130'),'accountSid',_0x07ab('0x131'),_0x07ab('0x132'),_0x07ab('0x133'),_0x07ab('0x134'),'oldPassword'];function maskSensitiveData(_0x5c6b40){var _0x2ab2b6=/(?!^)[\s\S](?!$)/g;if(!_[_0x07ab('0x135')](_0x5c6b40))return;for(var _0x1c238c in _0x5c6b40){if(_[_0x07ab('0x136')](_0x5c6b40[_0x1c238c])){for(var _0x5c2be8=0x0;_0x5c2be8<_0x5c6b40[_0x1c238c][_0x07ab('0x137')];_0x5c2be8++){maskSensitiveData(_0x5c6b40[_0x1c238c][_0x5c2be8]);}}else if(_[_0x07ab('0x135')](_0x5c6b40[_0x1c238c])){maskSensitiveData(_0x5c6b40[_0x1c238c]);}else if(_[_0x07ab('0x138')](_0x5c6b40[_0x1c238c])){_0x5c6b40[_0x1c238c]=_0x5c6b40[_0x1c238c][_0x07ab('0x139')](/{{{/g,_0x07ab('0x13a'))[_0x07ab('0x139')](/}}}/g,'}@@')['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x07ab('0x13b')](sensitiveFields,_0x1c238c)){_0x5c6b40[_0x1c238c]=_0x5c6b40[_0x1c238c]['replace'](_0x2ab2b6,'*');}}}}
\ No newline at end of file
index 3253b2b..6d3886f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x956c=['lodash','../config/environment','listen','merge','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird'];(function(_0x56e8d5,_0x1f5f3e){var _0x229a87=function(_0x1675b0){while(--_0x1675b0){_0x56e8d5['push'](_0x56e8d5['shift']());}};_0x229a87(++_0x1f5f3e);}(_0x956c,0xe2));var _0xc956=function(_0x3717b0,_0x351746){_0x3717b0=_0x3717b0-0x0;var _0x5dce6=_0x956c[_0x3717b0];return _0x5dce6;};'use strict';var jayson=require(_0xc956('0x0'));var BPromise=require(_0xc956('0x1'));var _=require(_0xc956('0x2'));var config=require(_0xc956('0x3'));exports[_0xc956('0x4')]=function(){return new BPromise(function(_0x358826,_0xe47e46){var _0x56d2e6={};_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/user/user.rpc'));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/voiceExtension/voiceExtension.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x6')));_0x56d2e6=_['merge'](_0x56d2e6,require('../api/voiceRecording/voiceRecording.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x7')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x8')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x9')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0xa')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/memberReport/memberReport.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0xb')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0xc')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0xd')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0xe')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0xf')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x10')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x11')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x12')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x13')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x14')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x15')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/faxInteraction/faxInteraction.rpc'));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/faxMessage/faxMessage.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x16')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x17')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x18')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x19')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x1a')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/smsQueue/smsQueue.rpc'));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x1b')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x1c')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x1d')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x1e')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x1f')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x20')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x21')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x22')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x23')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x24')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x25')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x26')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x27')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x28')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x29')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x2a')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/sound/sound.rpc'));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x2b')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x2c')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/variable/variable.rpc'));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x2d')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x2e')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x2f')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x30')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x31')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x32')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x33')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x34')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x35')));_0x56d2e6=_['merge'](_0x56d2e6,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x36')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x37')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require('../api/setting/setting.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require('../api/squareOdbc/squareOdbc.rpc'));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x38')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x39')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x3a')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x3b')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x3c')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x3d')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x3e')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x3f')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x40')));_0x56d2e6=_['merge'](_0x56d2e6,require(_0xc956('0x41')));_0x56d2e6=_[_0xc956('0x5')](_0x56d2e6,require(_0xc956('0x42')));var _0x5dd8e9=jayson[_0xc956('0x43')](_0x56d2e6)[_0xc956('0x44')]();var _0x1e4323=config[_0xc956('0x45')][_0xc956('0x46')]||config[_0xc956('0x46')]+0x1;var _0x4db33f=config['rpc']['ip']||_0xc956('0x47');_0x5dd8e9['on']('error',function(_0x451a45){return _0xe47e46(_0x451a45);});_0x5dd8e9[_0xc956('0x4')](_0x1e4323,_0x4db33f,function(){console['log'](_0xc956('0x48'),_0x4db33f,_0x1e4323);require(_0xc956('0x49'))[_0xc956('0x4a')]();return _0x358826(_0xc956('0x4b')+_0x4db33f+':'+_0x1e4323);});});};
\ No newline at end of file
+var _0x5314=['http','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','bluebird','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/sound/sound.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server'];(function(_0x29542a,_0x484491){var _0x580180=function(_0x205bf7){while(--_0x205bf7){_0x29542a['push'](_0x29542a['shift']());}};_0x580180(++_0x484491);}(_0x5314,0x121));var _0x4531=function(_0x447324,_0x2e8f12){_0x447324=_0x447324-0x0;var _0x1e2640=_0x5314[_0x447324];return _0x1e2640;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x4531('0x0'));var _=require('lodash');var config=require(_0x4531('0x1'));exports[_0x4531('0x2')]=function(){return new BPromise(function(_0xeb3408,_0x5d15bf){var _0x2c20b8={};_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x4')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x5')));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x6')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x7')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x8')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x9')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0xa')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0xb')));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0xc')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0xd')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0xe')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0xf')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x10')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x11')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x12')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x13')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x14')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x15')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x16')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x17')));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x18')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x19')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x1a')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x1b')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x1c')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x1d')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x1e')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x1f')));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x20')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x21')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x22')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/chatQueue/chatQueue.rpc'));_0x2c20b8=_['merge'](_0x2c20b8,require('../api/cmContact/cmContact.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x23')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x24')));_0x2c20b8=_['merge'](_0x2c20b8,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x25')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x26')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/interval/interval.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/pause/pause.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x27')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/template/template.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x28')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x29')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x2a')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x2b')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x2c')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x2d')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x2e')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x2f')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x30')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x31')));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x32')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x33')));_0x2c20b8=_['merge'](_0x2c20b8,require('../api/squareReport/squareReport.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/setting/setting.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/squareOdbc/squareOdbc.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/squareProject/squareProject.rpc'));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x34')));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x35')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x36')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/attachment/attachment.rpc'));_0x2c20b8=_['merge'](_0x2c20b8,require(_0x4531('0x37')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x38')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x39')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x3a')));_0x2c20b8=_[_0x4531('0x3')](_0x2c20b8,require(_0x4531('0x3b')));var _0x8164c3=jayson[_0x4531('0x3c')](_0x2c20b8)[_0x4531('0x3d')]();var _0x1cdd51=config[_0x4531('0x3e')][_0x4531('0x3f')]||config[_0x4531('0x3f')]+0x1;var _0x2593ee=config[_0x4531('0x3e')]['ip']||_0x4531('0x40');_0x8164c3['on'](_0x4531('0x41'),function(_0x287a1a){return _0x5d15bf(_0x287a1a);});_0x8164c3[_0x4531('0x2')](_0x1cdd51,_0x2593ee,function(){console[_0x4531('0x42')](_0x4531('0x43'),_0x2593ee,_0x1cdd51);require(_0x4531('0x44'))['default']();return _0xeb3408(_0x4531('0x45')+_0x2593ee+':'+_0x1cdd51);});});};
\ No newline at end of file
index f2c1ae6..5ab2fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4213=['{\x20{\x20','\x20}\x20}','string','isArray','isPlainObject','keys','reduce','exports','safeTemplate','lodash'];(function(_0xb83e9f,_0x379ecc){var _0x3429b6=function(_0x25ce37){while(--_0x25ce37){_0xb83e9f['push'](_0xb83e9f['shift']());}};_0x3429b6(++_0x379ecc);}(_0x4213,0x77));var _0x3421=function(_0x48ff96,_0x5aaf5a){_0x48ff96=_0x48ff96-0x0;var _0x41c9dd=_0x4213[_0x48ff96];return _0x41c9dd;};var _=require(_0x3421('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x445ef6){return _0x445ef6==='{{'?_0x3421('0x1'):_0x3421('0x2');}function safeTemplate(_0x2613b6){var _0x153f3a=_0x2613b6;if(typeof _0x2613b6===_0x3421('0x3')){_0x153f3a=_0x2613b6['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x3421('0x4')](_0x2613b6)){_0x153f3a=_0x2613b6['map'](function(_0x459c5e){return safeTemplate(_0x459c5e);});}else if(_[_0x3421('0x5')](_0x2613b6)){_0x153f3a=Object[_0x3421('0x6')](_0x2613b6)[_0x3421('0x7')](function(_0x5469d8,_0x50e464){_0x5469d8[_0x50e464]=safeTemplate(_0x2613b6[_0x50e464]);return _0x5469d8;},{});}return _0x153f3a;}module[_0x3421('0x8')][_0x3421('0x9')]=safeTemplate;
\ No newline at end of file
+var _0xa571=['reduce','exports','lodash','{\x20{\x20','\x20}\x20}','string','map','isPlainObject','keys'];(function(_0x3c6044,_0x3d7c02){var _0x58bcee=function(_0x506f71){while(--_0x506f71){_0x3c6044['push'](_0x3c6044['shift']());}};_0x58bcee(++_0x3d7c02);}(_0xa571,0x107));var _0x1a57=function(_0x35819e,_0x788bb4){_0x35819e=_0x35819e-0x0;var _0x47670b=_0xa571[_0x35819e];return _0x47670b;};var _=require(_0x1a57('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x289e99){return _0x289e99==='{{'?_0x1a57('0x1'):_0x1a57('0x2');}function safeTemplate(_0x48485e){var _0x1a071f=_0x48485e;if(typeof _0x48485e===_0x1a57('0x3')){_0x1a071f=_0x48485e['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x48485e)){_0x1a071f=_0x48485e[_0x1a57('0x4')](function(_0x5067fa){return safeTemplate(_0x5067fa);});}else if(_[_0x1a57('0x5')](_0x48485e)){_0x1a071f=Object[_0x1a57('0x6')](_0x48485e)[_0x1a57('0x7')](function(_0x3c5352,_0x2492f5){_0x3c5352[_0x2492f5]=safeTemplate(_0x48485e[_0x2492f5]);return _0x3c5352;},{});}return _0x1a071f;}module[_0x1a57('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file
index b5c6259..bfd13a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3396=['label','util','lodash','EventEmitter','./reply','call','setEncoding','utf8','setTimeout','headers','emit','toLowerCase','substring','520-Invalid','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','startsWith','split','length','match','error','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','sendRequest','sync','prototype','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','hangup','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','sayDigits','SAY\x20DIGITS\x20%s\x20%s','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','noop'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3396,0x17d));var _0x6339=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3396[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x6339('0x0'));var _=require(_0x6339('0x1'));var EventEmitter=require('events')[_0x6339('0x2')];var AGIReply=require(_0x6339('0x3'));var AGIError=require('./error');function AGIChannel(_0x2b59a6){var _0x3e5a53=this,_0x2cca4f=new AGIReply(),_0x26d847=![],_0x26ff49={};EventEmitter[_0x6339('0x4')](_0x3e5a53);_0x2b59a6[_0x6339('0x5')](_0x6339('0x6'));_0x2b59a6[_0x6339('0x7')](0x8*0x3c*0x3c*0x3e8);_0x2cca4f['setEncoding'](_0x6339('0x6'));_0x2cca4f['on'](_0x6339('0x8'),function(_0x1b009c){for(var _0xda783 in _0x1b009c){_0x3e5a53[_0xda783]=_0x1b009c[_0xda783];}_0x3e5a53[_0x6339('0x9')]('ready');});_0x2cca4f['on']('line',function(_0x88de32){if(_0x88de32[_0x6339('0xa')]()=='hangup'){_0x3e5a53[_0x6339('0x9')]('hangup');return;}if(_0x88de32[_0x6339('0xb')](0x0,0xb)==_0x6339('0xc')){_0x26d847=!![];}if(_0x26d847){_0x26ff49['rx']+=_0x88de32+'\x0a';if(_0x88de32['search'](_0x6339('0xd'))!=-0x1){_0x26d847=![];}}else{_0x26ff49['rx']=_0x88de32;}if(_0x26d847){return;}if(typeof _0x26ff49['cb']==_0x6339('0xe')){var _0x5f2197=_0x26ff49['rx'][_0x6339('0xb')](0x0,0x3),_0x26c651=null,_0x1f3c82=null;_0x5f2197=parseInt(_0x5f2197);if(isNaN(_0x5f2197)){_0x26ff49['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x6339('0xf')});return;}if(_0x5f2197!=0xc8){_0x26ff49['cb'](null,{'code':_0x5f2197,'result':-0x1,'extra':'KO'});return;}_0x26c651=_0x26ff49['rx'][_0x6339('0xb')](0x4)[_0x6339('0x10')](_0x6339('0x11'),'');if(_0x26c651['indexOf']('\x20')!=-0x1){_0x26c651=_0x26c651[_0x6339('0x12')](0x0,_0x26c651['indexOf']('\x20'));}if(_[_0x6339('0x13')](_0x26c651,'-1')){_0x26c651=parseInt(_0x26c651);}_0x1f3c82=_0x26ff49['rx'][_0x6339('0x14')]('\x20');if(_0x1f3c82['length']==0x3){_0x1f3c82=_0x1f3c82[0x2]['substring'](0x1,_0x1f3c82[0x2][_0x6339('0x15')]-0x1);}else if(_0x1f3c82[_0x6339('0x15')]>0x3){var _0x3638a8=/\((.+)\)/;var _0x3fb4ae=_0x26ff49['rx'][_0x6339('0x16')](_0x3638a8);if(_0x3fb4ae){_0x1f3c82=_0x3fb4ae[0x1];}else{_0x1f3c82=null;}}else{_0x1f3c82=null;}_0x26ff49['cb'](null,{'code':_0x5f2197,'result':_0x26c651,'extra':_0x1f3c82});}});_0x2b59a6['on']('error',function(_0x373ba2){_0x3e5a53[_0x6339('0x9')](_0x6339('0x17'),new AGIError('E_AGI_SOCKET_ERROR',_0x373ba2['code']));});_0x2b59a6['on']('close',function(){_0x3e5a53[_0x6339('0x9')](_0x6339('0x18'),new AGIError(_0x6339('0x19')));});_0x2b59a6['on']('timeout',function(){_0x3e5a53[_0x6339('0x9')](_0x6339('0x1a'),new AGIError(_0x6339('0x1b')));_0x2b59a6[_0x6339('0x1c')]();});_0x2b59a6[_0x6339('0x1d')](_0x2cca4f);this[_0x6339('0x1e')]=function(_0x49303b,_0x96e14){var _0x49303b=_0x49303b||'',_0x96e14=typeof _0x96e14==_0x6339('0xe')?_0x96e14:new Function();_0x26ff49={'tx':_0x49303b,'rx':'','cb':_0x96e14};_0x2b59a6[_0x6339('0x1f')](_0x49303b+'\x0a');},this[_0x6339('0x18')]=function(){_0x2b59a6[_0x6339('0x1c')]();};}util[_0x6339('0x20')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x6339('0x21')]=function(_0x4e1244){return this[_0x6339('0x1e')][_0x6339('0x22')](this,_0x4e1244);};AGIChannel[_0x6339('0x23')]['answer']=function(){return this[_0x6339('0x21')](_0x6339('0x24'));};AGIChannel[_0x6339('0x23')][_0x6339('0x25')]=function(_0x550ac8,_0x18fc39,_0x17469f){_0x550ac8=_0x550ac8===undefined?_0x6339('0x26'):_0x550ac8;_0x18fc39=_0x18fc39===undefined?'5':_0x18fc39;_0x17469f=_0x17469f===undefined?'1':_0x17469f;return this[_0x6339('0x21')](util[_0x6339('0x27')](_0x6339('0x28'),_0x550ac8,_0x18fc39*0x3e8,_0x17469f));};AGIChannel[_0x6339('0x23')]['noop']=function(_0x474a51){_0x474a51=_0x474a51||_0x6339('0x29');return this[_0x6339('0x21')](util[_0x6339('0x27')]('VERBOSE\x20\x22%s\x22',_0x474a51));};AGIChannel[_0x6339('0x23')][_0x6339('0x2a')]=function(_0xf7ca1d,_0x344630){if(_[_0x6339('0x2b')](_0x344630)){return this[_0x6339('0x21')](util['format'](_0x6339('0x2c'),_0xf7ca1d,_0x344630[_0x6339('0x2d')](',')));}return this['sendRequest'](util[_0x6339('0x27')](_0x6339('0x2c'),_0xf7ca1d,_0x344630));};AGIChannel[_0x6339('0x23')][_0x6339('0x2e')]=function(_0x25aae8){return this[_0x6339('0x21')](util['format'](_0x6339('0x2f'),_0x25aae8));};AGIChannel[_0x6339('0x23')][_0x6339('0x30')]=function(_0x4a9781){return this[_0x6339('0x21')](util[_0x6339('0x27')](_0x6339('0x31'),_0x4a9781));};AGIChannel[_0x6339('0x23')][_0x6339('0x32')]=function(_0xb12b26){return this[_0x6339('0x21')](util[_0x6339('0x27')](_0x6339('0x33'),_0xb12b26));};AGIChannel['prototype'][_0x6339('0x34')]=function(){return this[_0x6339('0x21')]('HANGUP');};AGIChannel[_0x6339('0x23')][_0x6339('0x35')]=function(_0x4bc94e,_0x345010){var _0x331480=_[_0x6339('0x36')](_0x345010)||_[_0x6339('0x37')](_0x345010)?_0x345010[_0x6339('0x38')]():_0x345010;return this[_0x6339('0x21')](util[_0x6339('0x27')](_0x6339('0x39'),_0x4bc94e,_0x331480?_0x331480['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x6339('0x23')][_0x6339('0x3a')]=function(_0x37bf40,_0x350dfc){return this['sendRequest'](util['format']('SAY\x20NUMBER\x20%s\x20%s',_0x37bf40,_0x350dfc));};AGIChannel[_0x6339('0x23')][_0x6339('0x3b')]=function(_0x2fcddb,_0x34e26a){return this['sendRequest'](util[_0x6339('0x27')](_0x6339('0x3c'),_0x2fcddb,_0x34e26a));};AGIChannel[_0x6339('0x23')]['sayPhonetic']=function(_0x32a657,_0x4110e2){return this[_0x6339('0x21')](util[_0x6339('0x27')](_0x6339('0x3d'),_0x32a657,_0x4110e2));};AGIChannel[_0x6339('0x23')]['continueAt']=function(_0x3cc1fd,_0x3d1979,_0x394e76){_0x3d1979=_0x3d1979||this[_0x6339('0x3e')];_0x394e76=_0x394e76||0x1;this['setContext'](_0x3cc1fd);this[_0x6339('0x30')](_0x3d1979);this[_0x6339('0x32')](_0x394e76);return this['noop'](util[_0x6339('0x27')](_0x6339('0x3f'),_0x3cc1fd,_0x3d1979,_0x394e76));};AGIChannel[_0x6339('0x23')][_0x6339('0x40')]=function(_0x3ea5da){return this[_0x6339('0x21')](util[_0x6339('0x27')](_0x6339('0x41'),_0x3ea5da));};AGIChannel['prototype'][_0x6339('0x42')]=function(_0x461783,_0xfd9fb9,_0x1ac651,_0x4d0306,_0x299a7f,_0x2a2e7a){_0xfd9fb9=_0xfd9fb9||_0x6339('0x43');_0x1ac651=_0x1ac651||'';_0x4d0306=_0x4d0306===undefined?-0x1:_0x4d0306==='-1'?-0x1:_0x4d0306*0x3e8;_0x299a7f=_0x299a7f===undefined?'':'s='+_0x299a7f;_0x2a2e7a=_0x2a2e7a?_0x6339('0x44'):'';return this[_0x6339('0x21')](util[_0x6339('0x27')](_0x6339('0x45'),_0x461783,_0xfd9fb9,_0x1ac651,_0x4d0306,_0x2a2e7a,_0x299a7f));};AGIChannel[_0x6339('0x23')]['streamFile']=function(_0x529535,_0x252dad){_0x252dad=_0x252dad||'';return this[_0x6339('0x21')](util['format'](_0x6339('0x46'),_0x529535,_0x252dad));};AGIChannel[_0x6339('0x23')][_0x6339('0x47')]=function(_0x14b25b){return this['exec'](_0x6339('0x48'),_0x14b25b);};AGIChannel['prototype'][_0x6339('0x49')]=function(_0x42de05){return this[_0x6339('0x2a')]('WAIT',_0x42de05);};AGIChannel['prototype'][_0x6339('0x17')]=function(_0x2d94e6,_0x496aff){this[_0x6339('0x4a')](util[_0x6339('0x27')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x2d94e6['id'],_0x2d94e6[_0x6339('0x4b')],_0x496aff));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0xc748=['length','match','error','E_AGI_SOCKET_ERROR','code','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','function','close','inherits','prototype','sendRequest','command','sync','answer','ANSWER','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','util','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','no\x20code','replace','indexOf','substr','startsWith','split'];(function(_0x429b07,_0x1ff6e8){var _0x5e353e=function(_0x4fc3df){while(--_0x4fc3df){_0x429b07['push'](_0x429b07['shift']());}};_0x5e353e(++_0x1ff6e8);}(_0xc748,0x12a));var _0x8c74=function(_0x485865,_0x11d29a){_0x485865=_0x485865-0x0;var _0x11ef06=_0xc748[_0x485865];return _0x11ef06;};'use strict';var util=require(_0x8c74('0x0'));var _=require(_0x8c74('0x1'));var EventEmitter=require(_0x8c74('0x2'))[_0x8c74('0x3')];var AGIReply=require(_0x8c74('0x4'));var AGIError=require(_0x8c74('0x5'));function AGIChannel(_0x37ab3c){var _0x10a0de=this,_0x578804=new AGIReply(),_0x4f8c7d=![],_0x28a309={};EventEmitter[_0x8c74('0x6')](_0x10a0de);_0x37ab3c[_0x8c74('0x7')](_0x8c74('0x8'));_0x37ab3c[_0x8c74('0x9')](0x8*0x3c*0x3c*0x3e8);_0x578804[_0x8c74('0x7')](_0x8c74('0x8'));_0x578804['on'](_0x8c74('0xa'),function(_0x4fe1b4){for(var _0xe29344 in _0x4fe1b4){_0x10a0de[_0xe29344]=_0x4fe1b4[_0xe29344];}_0x10a0de[_0x8c74('0xb')](_0x8c74('0xc'));});_0x578804['on'](_0x8c74('0xd'),function(_0x5ab5d2){if(_0x5ab5d2[_0x8c74('0xe')]()==_0x8c74('0xf')){_0x10a0de['emit']('hangup');return;}if(_0x5ab5d2[_0x8c74('0x10')](0x0,0xb)==_0x8c74('0x11')){_0x4f8c7d=!![];}if(_0x4f8c7d){_0x28a309['rx']+=_0x5ab5d2+'\x0a';if(_0x5ab5d2[_0x8c74('0x12')](_0x8c74('0x13'))!=-0x1){_0x4f8c7d=![];}}else{_0x28a309['rx']=_0x5ab5d2;}if(_0x4f8c7d){return;}if(typeof _0x28a309['cb']=='function'){var _0x5b8511=_0x28a309['rx']['substring'](0x0,0x3),_0x18ab9c=null,_0x538b7b=null;_0x5b8511=parseInt(_0x5b8511);if(isNaN(_0x5b8511)){_0x28a309['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x8c74('0x14')});return;}if(_0x5b8511!=0xc8){_0x28a309['cb'](null,{'code':_0x5b8511,'result':-0x1,'extra':'KO'});return;}_0x18ab9c=_0x28a309['rx'][_0x8c74('0x10')](0x4)[_0x8c74('0x15')]('result=','');if(_0x18ab9c[_0x8c74('0x16')]('\x20')!=-0x1){_0x18ab9c=_0x18ab9c[_0x8c74('0x17')](0x0,_0x18ab9c[_0x8c74('0x16')]('\x20'));}if(_[_0x8c74('0x18')](_0x18ab9c,'-1')){_0x18ab9c=parseInt(_0x18ab9c);}_0x538b7b=_0x28a309['rx'][_0x8c74('0x19')]('\x20');if(_0x538b7b[_0x8c74('0x1a')]==0x3){_0x538b7b=_0x538b7b[0x2]['substring'](0x1,_0x538b7b[0x2][_0x8c74('0x1a')]-0x1);}else if(_0x538b7b[_0x8c74('0x1a')]>0x3){var _0x3b9cd9=/\((.+)\)/;var _0x1b4e28=_0x28a309['rx'][_0x8c74('0x1b')](_0x3b9cd9);if(_0x1b4e28){_0x538b7b=_0x1b4e28[0x1];}else{_0x538b7b=null;}}else{_0x538b7b=null;}_0x28a309['cb'](null,{'code':_0x5b8511,'result':_0x18ab9c,'extra':_0x538b7b});}});_0x37ab3c['on'](_0x8c74('0x1c'),function(_0x686be4){_0x10a0de[_0x8c74('0xb')](_0x8c74('0x1c'),new AGIError(_0x8c74('0x1d'),_0x686be4[_0x8c74('0x1e')]));});_0x37ab3c['on']('close',function(){_0x10a0de[_0x8c74('0xb')]('close',new AGIError(_0x8c74('0x1f')));});_0x37ab3c['on'](_0x8c74('0x20'),function(){_0x10a0de[_0x8c74('0xb')](_0x8c74('0x20'),new AGIError(_0x8c74('0x21')));_0x37ab3c[_0x8c74('0x22')]();});_0x37ab3c['pipe'](_0x578804);this['command']=function(_0x2a1674,_0x424a3f){var _0x2a1674=_0x2a1674||'',_0x424a3f=typeof _0x424a3f==_0x8c74('0x23')?_0x424a3f:new Function();_0x28a309={'tx':_0x2a1674,'rx':'','cb':_0x424a3f};_0x37ab3c['write'](_0x2a1674+'\x0a');},this[_0x8c74('0x24')]=function(){_0x37ab3c[_0x8c74('0x22')]();};}util[_0x8c74('0x25')](AGIChannel,EventEmitter);AGIChannel[_0x8c74('0x26')][_0x8c74('0x27')]=function(_0x1637f4){return this[_0x8c74('0x28')][_0x8c74('0x29')](this,_0x1637f4);};AGIChannel[_0x8c74('0x26')][_0x8c74('0x2a')]=function(){return this[_0x8c74('0x27')](_0x8c74('0x2b'));};AGIChannel['prototype'][_0x8c74('0x2c')]=function(_0x40ed71,_0x4fec16,_0x1577e5){_0x40ed71=_0x40ed71===undefined?'beep':_0x40ed71;_0x4fec16=_0x4fec16===undefined?'5':_0x4fec16;_0x1577e5=_0x1577e5===undefined?'1':_0x1577e5;return this['sendRequest'](util[_0x8c74('0x2d')](_0x8c74('0x2e'),_0x40ed71,_0x4fec16*0x3e8,_0x1577e5));};AGIChannel['prototype']['noop']=function(_0x5671a3){_0x5671a3=_0x5671a3||_0x8c74('0x2f');return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x30'),_0x5671a3));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x31')]=function(_0x481786,_0x5d9346){if(_['isArray'](_0x5d9346)){return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x32'),_0x481786,_0x5d9346[_0x8c74('0x33')](',')));}return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x32'),_0x481786,_0x5d9346));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x34')]=function(_0x8239ef){return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x35'),_0x8239ef));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x36')]=function(_0x109128){return this['sendRequest'](util[_0x8c74('0x2d')]('SET\x20EXTENSION\x20%s',_0x109128));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x37')]=function(_0x525867){return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x38'),_0x525867));};AGIChannel[_0x8c74('0x26')][_0x8c74('0xf')]=function(){return this[_0x8c74('0x27')](_0x8c74('0x39'));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x3a')]=function(_0x2305a6,_0x5501b0){var _0x1aac82=_['isBoolean'](_0x5501b0)||_[_0x8c74('0x3b')](_0x5501b0)?_0x5501b0[_0x8c74('0x3c')]():_0x5501b0;return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x3d'),_0x2305a6,_0x1aac82?_0x1aac82['toString']()[_0x8c74('0x15')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x8c74('0x3e')]=function(_0xfa5ed,_0x2b836a){return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x3f'),_0xfa5ed,_0x2b836a));};AGIChannel['prototype']['sayDigits']=function(_0x13ab91,_0x30cd9d){return this[_0x8c74('0x27')](util['format'](_0x8c74('0x40'),_0x13ab91,_0x30cd9d));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x41')]=function(_0x504e86,_0x406969){return this['sendRequest'](util['format'](_0x8c74('0x42'),_0x504e86,_0x406969));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x43')]=function(_0x7175d9,_0x1b1263,_0x4fc675){_0x1b1263=_0x1b1263||this[_0x8c74('0x44')];_0x4fc675=_0x4fc675||0x1;this[_0x8c74('0x34')](_0x7175d9);this[_0x8c74('0x36')](_0x1b1263);this[_0x8c74('0x37')](_0x4fc675);return this[_0x8c74('0x45')](util[_0x8c74('0x2d')](_0x8c74('0x46'),_0x7175d9,_0x1b1263,_0x4fc675));};AGIChannel['prototype'][_0x8c74('0x47')]=function(_0x272bc7){return this[_0x8c74('0x27')](util[_0x8c74('0x2d')](_0x8c74('0x48'),_0x272bc7));};AGIChannel[_0x8c74('0x26')]['recordFile']=function(_0x3b94a9,_0x3a986d,_0x49d72d,_0x2be4d0,_0x5297fd,_0x351cd0){_0x3a986d=_0x3a986d||_0x8c74('0x49');_0x49d72d=_0x49d72d||'';_0x2be4d0=_0x2be4d0===undefined?-0x1:_0x2be4d0==='-1'?-0x1:_0x2be4d0*0x3e8;_0x5297fd=_0x5297fd===undefined?'':'s='+_0x5297fd;_0x351cd0=_0x351cd0?_0x8c74('0x4a'):'';return this[_0x8c74('0x27')](util['format'](_0x8c74('0x4b'),_0x3b94a9,_0x3a986d,_0x49d72d,_0x2be4d0,_0x351cd0,_0x5297fd));};AGIChannel[_0x8c74('0x26')][_0x8c74('0x4c')]=function(_0x267f80,_0x3d7120){_0x3d7120=_0x3d7120||'';return this[_0x8c74('0x27')](util['format'](_0x8c74('0x4d'),_0x267f80,_0x3d7120));};AGIChannel['prototype'][_0x8c74('0x4e')]=function(_0x2b9f85){return this[_0x8c74('0x31')]('AGI',_0x2b9f85);};AGIChannel[_0x8c74('0x26')][_0x8c74('0x4f')]=function(_0x1d25c4){return this[_0x8c74('0x31')]('WAIT',_0x1d25c4);};AGIChannel[_0x8c74('0x26')]['error']=function(_0xf897a2,_0x3e0be4){this[_0x8c74('0x45')](util[_0x8c74('0x2d')](_0x8c74('0x50'),_0xf897a2['id'],_0xf897a2['label'],_0x3e0be4));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index b255cb5..4138e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84df=['format','apply','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push'];(function(_0x46d1af,_0x6558ff){var _0x16e939=function(_0x49551c){while(--_0x49551c){_0x46d1af['push'](_0x46d1af['shift']());}};_0x16e939(++_0x6558ff);}(_0x84df,0x1d8));var _0xf84d=function(_0x562362,_0x5d54f4){_0x562362=_0x562362-0x0;var _0x3a18ce=_0x84df[_0x562362];return _0x3a18ce;};'use strict';var util=require(_0xf84d('0x0'));var error={'E_AGI_UNDEFINED':_0xf84d('0x1'),'E_AGI_ARGUMENT_PORT':_0xf84d('0x2'),'E_AGI_SERVER_ERROR':_0xf84d('0x3'),'E_AGI_SERVER_CLOSE':_0xf84d('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0xf84d('0x5'),'E_AGI_SERVER_VOICE_DISABLED':_0xf84d('0x6'),'E_AGI_SOCKET_ERROR':_0xf84d('0x7'),'E_AGI_SOCKET_CLOSE':_0xf84d('0x8'),'E_AGI_SOCKET_TIMEOUT':_0xf84d('0x9'),'E_AGI_COMMAND_EMPTY':_0xf84d('0xa'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xf84d('0xb'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x16d91b){var _0x16d91b=_0x16d91b||null,_0x340985=_0x340985||[],_0xb017cc=0x1,_0x2d73d0='';if(!error[_0x16d91b]){_0x16d91b=_0xf84d('0xc');}_0x340985[_0xf84d('0xd')](error[_0x16d91b]);while(arguments[_0xb017cc]){_0x340985[_0xf84d('0xd')](arguments[_0xb017cc]);_0xb017cc++;}_0x2d73d0=util[_0xf84d('0xe')][_0xf84d('0xf')](util,_0x340985);this['message']=_0x2d73d0;this[_0xf84d('0x10')]=_0x16d91b;}module[_0xf84d('0x11')]=AGIError;
\ No newline at end of file
+var _0x594f=['Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','Missing\x20\x27ivr.entry\x27\x20menu.','format','apply','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.'];(function(_0x1f0724,_0x3a58bf){var _0x253ffb=function(_0x3b4c72){while(--_0x3b4c72){_0x1f0724['push'](_0x1f0724['shift']());}};_0x253ffb(++_0x3a58bf);}(_0x594f,0x66));var _0xf594=function(_0x5c904d,_0x125fc5){_0x5c904d=_0x5c904d-0x0;var _0x1a98e4=_0x594f[_0x5c904d];return _0x1a98e4;};'use strict';var util=require(_0xf594('0x0'));var error={'E_AGI_UNDEFINED':_0xf594('0x1'),'E_AGI_ARGUMENT_PORT':_0xf594('0x2'),'E_AGI_SERVER_ERROR':_0xf594('0x3'),'E_AGI_SERVER_CLOSE':_0xf594('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0xf594('0x5'),'E_AGI_SERVER_VOICE_DISABLED':_0xf594('0x6'),'E_AGI_SOCKET_ERROR':_0xf594('0x7'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0xf594('0x8'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0xf594('0x9')};function AGIError(_0xa6ee79){var _0xa6ee79=_0xa6ee79||null,_0x56c41a=_0x56c41a||[],_0x4a7994=0x1,_0x2da5b7='';if(!error[_0xa6ee79]){_0xa6ee79='E_AGI_UNDEFINED';}_0x56c41a['push'](error[_0xa6ee79]);while(arguments[_0x4a7994]){_0x56c41a['push'](arguments[_0x4a7994]);_0x4a7994++;}_0x2da5b7=util[_0xf594('0xa')][_0xf594('0xb')](util,_0x56c41a);this[_0xf594('0xc')]=_0x2da5b7;this[_0xf594('0xd')]=_0xa6ee79;}module[_0xf594('0xe')]=AGIError;
\ No newline at end of file
index c564c5a..5faa873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0af6=['agicommand','default','target','traverseBFS','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','../../../config/logger','agi','menu','getdigits','vertices','edges','prototype','addVertex','push','numberOfEdges','size','getVertex','no\x20vertex\x20found','info','length','no\x20edge/s\x20available','condition'];(function(_0x27e1d5,_0x337015){var _0x384ea8=function(_0x578c87){while(--_0x578c87){_0x27e1d5['push'](_0x27e1d5['shift']());}};_0x384ea8(++_0x337015);}(_0x0af6,0xfd));var _0x60af=function(_0x548627,_0x4ec392){_0x548627=_0x548627-0x0;var _0x844a84=_0x0af6[_0x548627];return _0x844a84;};'use strict';var _=require('lodash');var logger=require(_0x60af('0x0'))(_0x60af('0x1'));var verticesWithRetry=[_0x60af('0x2'),_0x60af('0x3'),'getsecretdigits'];var Graph=function(){this[_0x60af('0x4')]={};this[_0x60af('0x5')]={};this['numberOfEdges']=0x0;};Graph[_0x60af('0x6')][_0x60af('0x7')]=function(_0x1de2df){this['vertices'][_0x1de2df['id']]=_0x1de2df;this[_0x60af('0x5')][_0x1de2df['id']]=[];};Graph[_0x60af('0x6')]['addEdge']=function(_0x1001e6,_0x57e4d2,_0x4f9f75){this[_0x60af('0x5')][_0x1001e6][_0x60af('0x8')]({'target':_0x57e4d2,'condition':_0x4f9f75});this[_0x60af('0x9')]+=0x1;};Graph[_0x60af('0x6')][_0x60af('0xa')]=function(){return _['size'](this[_0x60af('0x4')]);};Graph[_0x60af('0x6')]['relations']=function(){return this[_0x60af('0x9')];};Graph['prototype'][_0x60af('0xb')]=function(_0x18f7e3){return this[_0x60af('0x4')][_0x18f7e3];};Graph['prototype']['traverseBFS']=function(_0xfa28bd,_0x11be95){if(!this[_0x60af('0x4')][_0xfa28bd]){return logger['info'](_0x60af('0xc'));}var _0x3fd875=_0x11be95(this[_0x60af('0x4')][_0xfa28bd]);if(!_0x3fd875){return logger[_0x60af('0xd')]('stop\x20traverse');}if(this[_0x60af('0x5')][_0xfa28bd][_0x60af('0xe')]===0x0){return logger[_0x60af('0xd')](_0x60af('0xf'));}for(var _0x5aac45=0x0,_0x504f25=[],_0x4133e3=![];_0x5aac45<this[_0x60af('0x5')][_0xfa28bd][_0x60af('0xe')];_0x5aac45+=0x1){if(this[_0x60af('0x5')][_0xfa28bd][_0x5aac45][_0x60af('0x10')]){_0x504f25=this['edges'][_0xfa28bd][_0x5aac45]['condition']['split'](',');for(var _0x4bb779=0x0;_0x4bb779<_0x504f25['length'];_0x4bb779+=0x1){if(this[_0x60af('0x4')][_0xfa28bd][_0x60af('0x11')]==='vswitch'&&_0x504f25[_0x4bb779]==='-'){_0x4133e3=this['edges'][_0xfa28bd][_0x5aac45]['target'];logger[_0x60af('0xd')](_0x60af('0x12'),_0x504f25[_0x4bb779],this[_0x60af('0x5')][_0xfa28bd][_0x5aac45][_0x60af('0x13')]);}else if(this[_0x60af('0x4')][_0xfa28bd]['agicommand']==='menu'&&_0x504f25[_0x4bb779]==='i'){_0x4133e3=this[_0x60af('0x5')][_0xfa28bd][_0x5aac45][_0x60af('0x13')];logger[_0x60af('0xd')]('invalid',_0x504f25[_0x4bb779],this[_0x60af('0x5')][_0xfa28bd][_0x5aac45][_0x60af('0x13')]);}if(_0x504f25[_0x4bb779]===_0x3fd875){return this['traverseBFS'](this[_0x60af('0x5')][_0xfa28bd][_0x5aac45]['target'],_0x11be95);}}}else{return this[_0x60af('0x14')](this['edges'][_0xfa28bd][_0x5aac45][_0x60af('0x13')],_0x11be95);}}if(_0x504f25[_0x60af('0xe')]){if(this[_0x60af('0x4')][_0xfa28bd][_0x60af('0x11')]===_0x60af('0x15')){if(_0x4133e3){return this[_0x60af('0x14')](_0x4133e3,_0x11be95);}return logger[_0x60af('0xd')](_0x60af('0x16'));}else if(_[_0x60af('0x17')](verticesWithRetry,this['vertices'][_0xfa28bd]['agicommand'])){if(_0x3fd875==='-'){return logger[_0x60af('0xd')](_0x60af('0x18'));}if(_0x4133e3&&_0x3fd875!=='t'){return this[_0x60af('0x14')](_0x4133e3,_0x11be95);}return this['traverseBFS'](_0xfa28bd,_0x11be95);}return logger['info'](_0x60af('0x19'));}};module[_0x60af('0x1a')]=Graph;
\ No newline at end of file
+var _0x7014=['no\x20edge/s\x20available','condition','split','agicommand','target','default','invalid','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','lodash','../../../config/logger','agi','menu','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x7014,0xec));var _0x4701=function(_0x565cdf,_0x1df3dd){_0x565cdf=_0x565cdf-0x0;var _0x2e9dfc=_0x7014[_0x565cdf];return _0x2e9dfc;};'use strict';var _=require(_0x4701('0x0'));var logger=require(_0x4701('0x1'))(_0x4701('0x2'));var verticesWithRetry=[_0x4701('0x3'),'getdigits',_0x4701('0x4')];var Graph=function(){this[_0x4701('0x5')]={};this[_0x4701('0x6')]={};this[_0x4701('0x7')]=0x0;};Graph[_0x4701('0x8')][_0x4701('0x9')]=function(_0x1508af){this['vertices'][_0x1508af['id']]=_0x1508af;this['edges'][_0x1508af['id']]=[];};Graph[_0x4701('0x8')][_0x4701('0xa')]=function(_0x325551,_0x4acc10,_0x3295e4){this[_0x4701('0x6')][_0x325551][_0x4701('0xb')]({'target':_0x4acc10,'condition':_0x3295e4});this['numberOfEdges']+=0x1;};Graph['prototype'][_0x4701('0xc')]=function(){return _[_0x4701('0xc')](this[_0x4701('0x5')]);};Graph[_0x4701('0x8')][_0x4701('0xd')]=function(){return this[_0x4701('0x7')];};Graph['prototype'][_0x4701('0xe')]=function(_0x1defcc){return this[_0x4701('0x5')][_0x1defcc];};Graph['prototype'][_0x4701('0xf')]=function(_0x117eed,_0x2a1251){if(!this[_0x4701('0x5')][_0x117eed]){return logger[_0x4701('0x10')](_0x4701('0x11'));}var _0x246129=_0x2a1251(this['vertices'][_0x117eed]);if(!_0x246129){return logger[_0x4701('0x10')](_0x4701('0x12'));}if(this[_0x4701('0x6')][_0x117eed][_0x4701('0x13')]===0x0){return logger[_0x4701('0x10')](_0x4701('0x14'));}for(var _0x59182f=0x0,_0x5ca5ed=[],_0x15e86b=![];_0x59182f<this[_0x4701('0x6')][_0x117eed][_0x4701('0x13')];_0x59182f+=0x1){if(this[_0x4701('0x6')][_0x117eed][_0x59182f][_0x4701('0x15')]){_0x5ca5ed=this[_0x4701('0x6')][_0x117eed][_0x59182f]['condition'][_0x4701('0x16')](',');for(var _0x1e397e=0x0;_0x1e397e<_0x5ca5ed[_0x4701('0x13')];_0x1e397e+=0x1){if(this[_0x4701('0x5')][_0x117eed][_0x4701('0x17')]==='vswitch'&&_0x5ca5ed[_0x1e397e]==='-'){_0x15e86b=this[_0x4701('0x6')][_0x117eed][_0x59182f][_0x4701('0x18')];logger[_0x4701('0x10')](_0x4701('0x19'),_0x5ca5ed[_0x1e397e],this[_0x4701('0x6')][_0x117eed][_0x59182f][_0x4701('0x18')]);}else if(this[_0x4701('0x5')][_0x117eed][_0x4701('0x17')]===_0x4701('0x3')&&_0x5ca5ed[_0x1e397e]==='i'){_0x15e86b=this['edges'][_0x117eed][_0x59182f][_0x4701('0x18')];logger[_0x4701('0x10')](_0x4701('0x1a'),_0x5ca5ed[_0x1e397e],this['edges'][_0x117eed][_0x59182f][_0x4701('0x18')]);}if(_0x5ca5ed[_0x1e397e]===_0x246129){return this[_0x4701('0xf')](this['edges'][_0x117eed][_0x59182f]['target'],_0x2a1251);}}}else{return this['traverseBFS'](this[_0x4701('0x6')][_0x117eed][_0x59182f][_0x4701('0x18')],_0x2a1251);}}if(_0x5ca5ed[_0x4701('0x13')]){if(this['vertices'][_0x117eed][_0x4701('0x17')]===_0x4701('0x1b')){if(_0x15e86b){return this[_0x4701('0xf')](_0x15e86b,_0x2a1251);}return logger[_0x4701('0x10')](_0x4701('0x1c'));}else if(_[_0x4701('0x1d')](verticesWithRetry,this[_0x4701('0x5')][_0x117eed][_0x4701('0x17')])){if(_0x246129==='-'){return logger['info'](_0x4701('0x1e'));}if(_0x15e86b&&_0x246129!=='t'){return this[_0x4701('0xf')](_0x15e86b,_0x2a1251);}return this['traverseBFS'](_0x117eed,_0x2a1251);}return logger[_0x4701('0x10')](_0x4701('0x1f'));}};module['exports']=Graph;
\ No newline at end of file
index 3fdadf1..71adcb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf540=['YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','connection','xml2json','lodash','syncho','util','../../config/environment','../../config/logger','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','agi','defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','root','agicommand','maxRetry','retry','omit','mxCell','hasOwnProperty','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','indexOf','agi_','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','hangup','production','start','joinAt'];(function(_0x53d985,_0x1cd580){var _0x34bdde=function(_0x34d312){while(--_0x34d312){_0x53d985['push'](_0x53d985['shift']());}};_0x34bdde(++_0x1cd580);}(_0xf540,0x7a));var _0x0f54=function(_0x1e26ed,_0x3e56cf){_0x1e26ed=_0x1e26ed-0x0;var _0x2f57c9=_0xf540[_0x1e26ed];return _0x2f57c9;};'use strict';var parser=require(_0x0f54('0x0'));var _=require(_0x0f54('0x1'));var syncho=require(_0x0f54('0x2'));var util=require(_0x0f54('0x3'));var moment=require('moment');var config=require(_0x0f54('0x4'));var logger=require(_0x0f54('0x5'))('agi');var utilLicense=require(_0x0f54('0x6'));var rpc=require(_0x0f54('0x7'));var mailRpc=require(_0x0f54('0x8'));var Graph=require(_0x0f54('0x9'));var Vertices=require(_0x0f54('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x0f54('0xb')]=_[_0x0f54('0xc')](config[_0x0f54('0xb')],{'ip':_0x0f54('0xd'),'port':0x11dd});function connectionHandler(_0x370c88){process[_0x0f54('0xe')](function(){syncho(function(){try{setChannelVariables(_0x370c88);agiHandler(_0x370c88);}catch(_0x546711){logger[_0x0f54('0xf')](_0x546711[_0x0f54('0x10')]);}});});}function listeningHandler(){console[_0x0f54('0x11')](_0x0f54('0x12'),config['agi'][_0x0f54('0x13')]);logger[_0x0f54('0x14')](util[_0x0f54('0x15')](_0x0f54('0x16'),config['agi']['ip'],config[_0x0f54('0xb')][_0x0f54('0x13')]));}function errorHandler(_0x3004f3){if(_0x3004f3&&_0x3004f3[_0x0f54('0x17')]&&_0x3004f3[_0x0f54('0x18')]){logger[_0x0f54('0xf')](util['format'](_0x0f54('0x19'),_0x3004f3[_0x0f54('0x17')],_0x3004f3['message']));}else{logger[_0x0f54('0xf')](util[_0x0f54('0x15')](_0x0f54('0x1a'),_0x3004f3[_0x0f54('0x10')]));}}function closeHandler(){logger[_0x0f54('0x14')](util[_0x0f54('0x15')](_0x0f54('0x1b'),this[_0x0f54('0x1c')],this[_0x0f54('0x1d')],this[_0x0f54('0x1e')],this[_0x0f54('0x1f')],this[_0x0f54('0x20')]));try{createSquareReport(this);}catch(_0x3973d6){logger[_0x0f54('0xf')](_0x3973d6['stack']);}}function timeoutHandler(){logger[_0x0f54('0x14')](util[_0x0f54('0x15')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x0f54('0x1c')],this[_0x0f54('0x1d')],this[_0x0f54('0x1e')],this[_0x0f54('0x1f')],this[_0x0f54('0x20')]));}function hangupHandler(){logger[_0x0f54('0x14')](util[_0x0f54('0x15')](_0x0f54('0x21'),this['arg_1'],this[_0x0f54('0x1d')],this[_0x0f54('0x1e')],this[_0x0f54('0x1f')],this[_0x0f54('0x20')]));this[_0x0f54('0x22')]=!![];}function getRoot(_0x5b98a7){return parser[_0x0f54('0x23')](_0x5b98a7,{'object':!![]})['mxGraphModel'][_0x0f54('0x24')];}function addVertex(_0x9bfac,_0x289ee4,_0x3a5110){_0x289ee4[_0x0f54('0x25')]=_0x3a5110;if(_0x289ee4['hasOwnProperty']('retry')){_0x289ee4[_0x0f54('0x26')]=parseInt(_0x289ee4[_0x0f54('0x27')],0xa);}_0x9bfac['addVertex'](_[_0x0f54('0x28')](_0x289ee4,_0x0f54('0x29')));}function initGraph(_0x171e04,_0x3d0c08){var _0x88809f=new Graph();for(var _0x55e644 in _0x171e04){if(_0x171e04[_0x0f54('0x2a')](_0x55e644)){if(_[_0x0f54('0x2b')](_0x171e04[_0x55e644])){for(var _0x31353c=0x0;_0x31353c<_0x171e04[_0x55e644][_0x0f54('0x2c')];_0x31353c+=0x1){addVertex(_0x88809f,_0x171e04[_0x55e644][_0x31353c],_0x55e644);}}else{addVertex(_0x88809f,_0x171e04[_0x55e644],_0x55e644);}}}for(var _0x535f0c=0x0;_0x535f0c<_0x3d0c08[_0x0f54('0x2c')];_0x535f0c+=0x1){if(_0x3d0c08[_0x535f0c][_0x0f54('0x2d')]&&_0x3d0c08[_0x535f0c][_0x0f54('0x2e')]){_0x88809f[_0x0f54('0x2f')](_0x3d0c08[_0x535f0c]['source'],_0x3d0c08[_0x535f0c][_0x0f54('0x2e')],_0x3d0c08[_0x535f0c][_0x0f54('0x30')]);}}return _0x88809f;}function getSquareProject(_0x706172,_0x509395){rpc[_0x0f54('0x31')](_0x706172)[_0x0f54('0x32')](function(_0x59eeec){_0x509395(null,_0x59eeec);})[_0x0f54('0x33')](function(_0x56d65f){_0x509395(null,_0x56d65f);});}function createSquareReport(_0x46f3a9,_0x22b1a2){rpc['createSquareReport'](_0x46f3a9)[_0x0f54('0x32')](function(_0x5c3a4f){if(_0x22b1a2){_0x22b1a2(null,_0x5c3a4f);}})['catch'](function(_0x17446f){if(_0x22b1a2){_0x22b1a2(null,_0x17446f);}});}function setChannelVariables(_0x577cbe){for(var _0x13a3b4 in _0x577cbe){if(_0x577cbe[_0x0f54('0x2a')](_0x13a3b4)){if(_0x13a3b4[_0x0f54('0x34')](_0x0f54('0x35'))===0x0){_0x577cbe[_0x13a3b4[_0x0f54('0x36')](0x4)]=_0x577cbe[_0x13a3b4];delete _0x577cbe[_0x13a3b4];}}}}function getLogFromObject(_0x8e8706){return util['inspect'](_0x8e8706,{'showHidden':![],'depth':null});}function agiHandler(_0x103f87){var _0x43f14c,_0x2d7a36,_0x212fbc,_0x30969d,_0x3e0aaf;logger[_0x0f54('0x37')](_0x0f54('0x38'),JSON[_0x0f54('0x39')](_0x103f87,null,0x2));logger[_0x0f54('0x14')](util[_0x0f54('0x15')](_0x0f54('0x3a'),_0x103f87[_0x0f54('0x1c')],_0x103f87[_0x0f54('0x1d')],_0x103f87['callerid'],_0x103f87[_0x0f54('0x1f')],_0x103f87[_0x0f54('0x20')]));_0x103f87['on'](_0x0f54('0xf'),errorHandler);_0x103f87['on'](_0x0f54('0x3b'),closeHandler);_0x103f87['on']('timeout',timeoutHandler);_0x103f87[_0x0f54('0x22')]=![];_0x103f87['on'](_0x0f54('0x3c'),hangupHandler);var _0x4fd112=getSquareProject['sync'](null,_0x103f87['arg_1']);if(_0x4fd112){if(_0x4fd112[_0x0f54('0x3d')]){_0x43f14c=getRoot(_0x4fd112[_0x0f54('0x3d')]);if(_0x43f14c&&_0x43f14c[_0x0f54('0x3e')]){logger[_0x0f54('0x37')]('root',JSON[_0x0f54('0x39')](_0x43f14c,null,0x2));_0x103f87[_0x0f54('0x3f')]=moment()[_0x0f54('0x15')](_0x0f54('0x40'));_0x2d7a36=initGraph(_[_0x0f54('0x28')](_0x43f14c,_0x0f54('0x29')),_0x43f14c[_0x0f54('0x29')]);_0x212fbc=new Vertices(_0x103f87,rpc,mailRpc);logger['info'](util[_0x0f54('0x15')](_0x0f54('0x41'),_0x103f87['arg_1'],_0x103f87[_0x0f54('0x1d')],_0x103f87[_0x0f54('0x1e')],_0x103f87['dnid'],_0x103f87[_0x0f54('0x20')]));_0x2d7a36[_0x0f54('0x42')](_0x43f14c[_0x0f54('0x3e')]['id'],function(_0x238593){try{_0x238593=_0x212fbc[_0x0f54('0x43')](_0x238593);logger[_0x0f54('0x37')](_0x0f54('0x44'),JSON[_0x0f54('0x39')](_0x238593,null,0x2));if(_0x238593[_0x0f54('0x25')]===_0x0f54('0x45')){logger[_0x0f54('0x14')](_0x0f54('0x46'));_0x103f87[_0x0f54('0x47')]=_0x238593[_0x0f54('0x47')]||_0x103f87['context'];_0x103f87['extension']=_0x238593[_0x0f54('0x48')];_0x103f87[_0x0f54('0x49')]=_0x238593[_0x0f54('0x49')]?_0x238593['priority']-0x1:0x1;return null;}else if(_0x238593&&_0x212fbc[_0x238593[_0x0f54('0x25')]]){_0x3e0aaf=_0x212fbc[_0x238593[_0x0f54('0x25')]](_0x238593);logger[_0x0f54('0x14')](_0x0f54('0x4a'),JSON[_0x0f54('0x39')](_0x3e0aaf,null,0x2));if(_0x3e0aaf&&_0x3e0aaf[_0x0f54('0x4b')]===AGI_CODE_SUCCESS&&_0x3e0aaf['result']!==AGI_RESULT_ERROR&&!_0x103f87['evtHangup']){logger[_0x0f54('0x37')]('response',getLogFromObject(_0x3e0aaf));return _[_0x0f54('0x4c')](_0x3e0aaf[_0x0f54('0x4d')])?null:_0x3e0aaf[_0x0f54('0x4d')][_0x0f54('0x4e')]();}else{logger['error']('response',getLogFromObject(_0x3e0aaf));return null;}}else{logger['error'](_0x0f54('0x4f'));return null;}}catch(_0xa3a3e5){logger['error'](_0xa3a3e5[_0x0f54('0x10')]);return null;}});if(_0x43f14c[_0x0f54('0x50')]){logger[_0x0f54('0x14')](util[_0x0f54('0x15')](_0x0f54('0x51'),_0x103f87[_0x0f54('0x1c')],_0x103f87[_0x0f54('0x1d')],_0x103f87[_0x0f54('0x1e')],_0x103f87[_0x0f54('0x1f')],_0x103f87['uniqueid']));_0x2d7a36[_0x0f54('0x42')](_0x43f14c[_0x0f54('0x50')]['id'],function(_0x4dd36a){try{_0x4dd36a=_0x212fbc[_0x0f54('0x43')](_0x4dd36a);logger[_0x0f54('0x37')](_0x0f54('0x44'),JSON[_0x0f54('0x39')](_0x4dd36a,null,0x2));if(_0x4dd36a&&_0x212fbc[_0x4dd36a[_0x0f54('0x25')]]){_0x3e0aaf=_0x212fbc[_0x4dd36a['agicommand']](_0x4dd36a);if(_0x3e0aaf){logger[_0x0f54('0x37')](_0x0f54('0x4a'),getLogFromObject(_0x3e0aaf));return _[_0x0f54('0x4c')](_0x3e0aaf[_0x0f54('0x4d')])?null:_0x3e0aaf[_0x0f54('0x4d')][_0x0f54('0x4e')]();}else{logger['error'](_0x0f54('0x4a'),getLogFromObject(_0x3e0aaf));return null;}}else{logger[_0x0f54('0xf')]('agicommand\x20not\x20found');return null;}}catch(_0x367d3b){logger[_0x0f54('0xf')](_0x367d3b['stack']);return null;}});}logger[_0x0f54('0x14')](util[_0x0f54('0x15')](_0x0f54('0x52'),_0x103f87['arg_1'],_0x103f87[_0x0f54('0x1d')],_0x103f87['callerid'],_0x103f87[_0x0f54('0x1f')],_0x103f87[_0x0f54('0x20')]));logger[_0x0f54('0x14')](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x103f87['context'],_0x103f87[_0x0f54('0x48')],parseInt(_0x103f87['priority'],0xa)+0x1));_0x103f87[_0x0f54('0x53')](_0x103f87[_0x0f54('0x47')],_0x103f87[_0x0f54('0x48')],parseInt(_0x103f87['priority'],0xa)+0x1);_0x103f87[_0x0f54('0x3b')]();}}else{logger['error'](util[_0x0f54('0x15')](_0x0f54('0x54'),_0x103f87['arg_1']));_0x103f87['continueAt'](_0x103f87[_0x0f54('0x47')],_0x103f87[_0x0f54('0x48')],parseInt(_0x103f87[_0x0f54('0x49')],0xa)+0x1);_0x103f87[_0x0f54('0x3b')]();}}else{logger[_0x0f54('0xf')](util['format'](_0x0f54('0x55'),_0x103f87[_0x0f54('0x1c')]));_0x103f87[_0x0f54('0x53')](_0x103f87[_0x0f54('0x47')],_0x103f87['extension'],parseInt(_0x103f87[_0x0f54('0x49')],0xa)+0x1);_0x103f87[_0x0f54('0x3b')]();}}function main(){var _0x40eaea;return utilLicense[_0x0f54('0x56')]()[_0x0f54('0x32')](function(_0x12fb73){if(_0x12fb73){if(_0x12fb73['voice']){if(_0x12fb73[_0x0f54('0x57')]&&_0x12fb73[_0x0f54('0x57')]>0x0){logger['info'](util['format'](_0x0f54('0x58'),_0x12fb73[_0x0f54('0x57')]));_0x40eaea=_0x12fb73[_0x0f54('0x57')];}else{logger['info'](_0x0f54('0x59'));}}else{logger[_0x0f54('0x14')](_0x0f54('0x5a'));_0x40eaea=-0x1;}}})[_0x0f54('0x33')](function(_0x5d01f4){logger['error']('[LICENSE]',_0x5d01f4[_0x0f54('0x10')]);})[_0x0f54('0x50')](function(){var _0x9d9aa=require(_0x0f54('0x5b'))(config[_0x0f54('0xb')][_0x0f54('0x13')],config[_0x0f54('0xb')]['ip'],_0x40eaea);_0x9d9aa['on'](_0x0f54('0xf'),errorHandler);_0x9d9aa['on']('listening',listeningHandler);_0x9d9aa['on'](_0x0f54('0x5c'),connectionHandler);_0x9d9aa['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0x375a=['info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','length','source','target','getSquareProject','createSquareReport','then','catch','indexOf','agi_','debug','stringify','timeout','hangup','sync','production','start','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','isUndefined','result','toString','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','agicommand\x20not\x20found','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','getLicense','[LICENSE]\x20CHANNELS:\x20%s','callysquare','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','listening','connection','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','nextTick','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port'];(function(_0x2df3c1,_0x35b259){var _0xbfaae3=function(_0x2447a1){while(--_0x2447a1){_0x2df3c1['push'](_0x2df3c1['shift']());}};_0xbfaae3(++_0x35b259);}(_0x375a,0xf5));var _0xa375=function(_0x3e5d2d,_0x4146b7){_0x3e5d2d=_0x3e5d2d-0x0;var _0x4a622d=_0x375a[_0x3e5d2d];return _0x4a622d;};'use strict';var parser=require(_0xa375('0x0'));var _=require(_0xa375('0x1'));var syncho=require(_0xa375('0x2'));var util=require(_0xa375('0x3'));var moment=require(_0xa375('0x4'));var config=require(_0xa375('0x5'));var logger=require(_0xa375('0x6'))(_0xa375('0x7'));var utilLicense=require(_0xa375('0x8'));var rpc=require(_0xa375('0x9'));var mailRpc=require(_0xa375('0xa'));var Graph=require(_0xa375('0xb'));var Vertices=require(_0xa375('0xc'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xa375('0xd')](config[_0xa375('0x7')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x3f236f){process[_0xa375('0xe')](function(){syncho(function(){try{setChannelVariables(_0x3f236f);agiHandler(_0x3f236f);}catch(_0x46bb52){logger[_0xa375('0xf')](_0x46bb52[_0xa375('0x10')]);}});});}function listeningHandler(){console['log'](_0xa375('0x11'),config['agi'][_0xa375('0x12')]);logger[_0xa375('0x13')](util[_0xa375('0x14')](_0xa375('0x15'),config[_0xa375('0x7')]['ip'],config[_0xa375('0x7')]['port']));}function errorHandler(_0x13bcd8){if(_0x13bcd8&&_0x13bcd8[_0xa375('0x16')]&&_0x13bcd8[_0xa375('0x17')]){logger[_0xa375('0xf')](util[_0xa375('0x14')](_0xa375('0x18'),_0x13bcd8[_0xa375('0x16')],_0x13bcd8[_0xa375('0x17')]));}else{logger[_0xa375('0xf')](util[_0xa375('0x14')](_0xa375('0x19'),_0x13bcd8['stack']));}}function closeHandler(){logger[_0xa375('0x13')](util[_0xa375('0x14')](_0xa375('0x1a'),this[_0xa375('0x1b')],this[_0xa375('0x1c')],this[_0xa375('0x1d')],this[_0xa375('0x1e')],this[_0xa375('0x1f')]));try{createSquareReport(this);}catch(_0x340d7d){logger['error'](_0x340d7d[_0xa375('0x10')]);}}function timeoutHandler(){logger[_0xa375('0x13')](util[_0xa375('0x14')](_0xa375('0x20'),this['arg_1'],this['calleridname'],this[_0xa375('0x1d')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0xa375('0x13')](util[_0xa375('0x14')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xa375('0x1b')],this[_0xa375('0x1c')],this[_0xa375('0x1d')],this[_0xa375('0x1e')],this[_0xa375('0x1f')]));this[_0xa375('0x21')]=!![];}function getRoot(_0xba3811){return parser[_0xa375('0x22')](_0xba3811,{'object':!![]})[_0xa375('0x23')][_0xa375('0x24')];}function addVertex(_0x6fc8f9,_0xcfbad0,_0x53f14a){_0xcfbad0[_0xa375('0x25')]=_0x53f14a;if(_0xcfbad0[_0xa375('0x26')](_0xa375('0x27'))){_0xcfbad0[_0xa375('0x28')]=parseInt(_0xcfbad0[_0xa375('0x27')],0xa);}_0x6fc8f9[_0xa375('0x29')](_[_0xa375('0x2a')](_0xcfbad0,_0xa375('0x2b')));}function initGraph(_0xd7559a,_0x15ccac){var _0x539fad=new Graph();for(var _0x146f26 in _0xd7559a){if(_0xd7559a[_0xa375('0x26')](_0x146f26)){if(_['isArray'](_0xd7559a[_0x146f26])){for(var _0xd9816=0x0;_0xd9816<_0xd7559a[_0x146f26][_0xa375('0x2c')];_0xd9816+=0x1){addVertex(_0x539fad,_0xd7559a[_0x146f26][_0xd9816],_0x146f26);}}else{addVertex(_0x539fad,_0xd7559a[_0x146f26],_0x146f26);}}}for(var _0xe71b3d=0x0;_0xe71b3d<_0x15ccac[_0xa375('0x2c')];_0xe71b3d+=0x1){if(_0x15ccac[_0xe71b3d][_0xa375('0x2d')]&&_0x15ccac[_0xe71b3d]['target']){_0x539fad['addEdge'](_0x15ccac[_0xe71b3d]['source'],_0x15ccac[_0xe71b3d][_0xa375('0x2e')],_0x15ccac[_0xe71b3d]['value']);}}return _0x539fad;}function getSquareProject(_0x4bbaa3,_0x5b5f1d){rpc[_0xa375('0x2f')](_0x4bbaa3)['then'](function(_0x59f431){_0x5b5f1d(null,_0x59f431);})['catch'](function(_0x4f5bb3){_0x5b5f1d(null,_0x4f5bb3);});}function createSquareReport(_0x40e105,_0x4b9061){rpc[_0xa375('0x30')](_0x40e105)[_0xa375('0x31')](function(_0x44eddf){if(_0x4b9061){_0x4b9061(null,_0x44eddf);}})[_0xa375('0x32')](function(_0x46d020){if(_0x4b9061){_0x4b9061(null,_0x46d020);}});}function setChannelVariables(_0x5bd7ad){for(var _0x13bc5d in _0x5bd7ad){if(_0x5bd7ad['hasOwnProperty'](_0x13bc5d)){if(_0x13bc5d[_0xa375('0x33')](_0xa375('0x34'))===0x0){_0x5bd7ad[_0x13bc5d['substring'](0x4)]=_0x5bd7ad[_0x13bc5d];delete _0x5bd7ad[_0x13bc5d];}}}}function getLogFromObject(_0x468a12){return util['inspect'](_0x468a12,{'showHidden':![],'depth':null});}function agiHandler(_0x57f158){var _0x4ca9df,_0x40dfa5,_0x567dde,_0x463422,_0x358862;logger[_0xa375('0x35')]('variables',JSON[_0xa375('0x36')](_0x57f158,null,0x2));logger['info'](util[_0xa375('0x14')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x57f158[_0xa375('0x1b')],_0x57f158[_0xa375('0x1c')],_0x57f158[_0xa375('0x1d')],_0x57f158['dnid'],_0x57f158[_0xa375('0x1f')]));_0x57f158['on']('error',errorHandler);_0x57f158['on']('close',closeHandler);_0x57f158['on'](_0xa375('0x37'),timeoutHandler);_0x57f158[_0xa375('0x21')]=![];_0x57f158['on'](_0xa375('0x38'),hangupHandler);var _0x218062=getSquareProject[_0xa375('0x39')](null,_0x57f158[_0xa375('0x1b')]);if(_0x218062){if(_0x218062[_0xa375('0x3a')]){_0x4ca9df=getRoot(_0x218062[_0xa375('0x3a')]);if(_0x4ca9df&&_0x4ca9df[_0xa375('0x3b')]){logger['debug']('root',JSON[_0xa375('0x36')](_0x4ca9df,null,0x2));_0x57f158[_0xa375('0x3c')]=moment()[_0xa375('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x40dfa5=initGraph(_[_0xa375('0x2a')](_0x4ca9df,_0xa375('0x2b')),_0x4ca9df['mxCell']);_0x567dde=new Vertices(_0x57f158,rpc,mailRpc);logger['info'](util['format'](_0xa375('0x3d'),_0x57f158[_0xa375('0x1b')],_0x57f158[_0xa375('0x1c')],_0x57f158['callerid'],_0x57f158[_0xa375('0x1e')],_0x57f158[_0xa375('0x1f')]));_0x40dfa5[_0xa375('0x3e')](_0x4ca9df[_0xa375('0x3b')]['id'],function(_0x5431cb){try{_0x5431cb=_0x567dde[_0xa375('0x3f')](_0x5431cb);logger[_0xa375('0x35')](_0xa375('0x40'),JSON[_0xa375('0x36')](_0x5431cb,null,0x2));if(_0x5431cb[_0xa375('0x25')]===_0xa375('0x41')){logger[_0xa375('0x13')](_0xa375('0x42'));_0x57f158[_0xa375('0x43')]=_0x5431cb[_0xa375('0x43')]||_0x57f158['context'];_0x57f158['extension']=_0x5431cb[_0xa375('0x44')];_0x57f158[_0xa375('0x45')]=_0x5431cb[_0xa375('0x45')]?_0x5431cb[_0xa375('0x45')]-0x1:0x1;return null;}else if(_0x5431cb&&_0x567dde[_0x5431cb[_0xa375('0x25')]]){_0x358862=_0x567dde[_0x5431cb['agicommand']](_0x5431cb);logger['info'](_0xa375('0x46'),JSON[_0xa375('0x36')](_0x358862,null,0x2));if(_0x358862&&_0x358862['code']===AGI_CODE_SUCCESS&&_0x358862['result']!==AGI_RESULT_ERROR&&!_0x57f158[_0xa375('0x21')]){logger[_0xa375('0x35')](_0xa375('0x46'),getLogFromObject(_0x358862));return _[_0xa375('0x47')](_0x358862[_0xa375('0x48')])?null:_0x358862[_0xa375('0x48')][_0xa375('0x49')]();}else{logger[_0xa375('0xf')](_0xa375('0x46'),getLogFromObject(_0x358862));return null;}}else{logger[_0xa375('0xf')]('agicommand\x20not\x20found');return null;}}catch(_0x4fcb96){logger[_0xa375('0xf')](_0x4fcb96[_0xa375('0x10')]);return null;}});if(_0x4ca9df['finally']){logger['info'](util[_0xa375('0x14')](_0xa375('0x4a'),_0x57f158[_0xa375('0x1b')],_0x57f158[_0xa375('0x1c')],_0x57f158[_0xa375('0x1d')],_0x57f158[_0xa375('0x1e')],_0x57f158[_0xa375('0x1f')]));_0x40dfa5[_0xa375('0x3e')](_0x4ca9df[_0xa375('0x4b')]['id'],function(_0x502a13){try{_0x502a13=_0x567dde['clear'](_0x502a13);logger[_0xa375('0x35')](_0xa375('0x40'),JSON[_0xa375('0x36')](_0x502a13,null,0x2));if(_0x502a13&&_0x567dde[_0x502a13[_0xa375('0x25')]]){_0x358862=_0x567dde[_0x502a13['agicommand']](_0x502a13);if(_0x358862){logger[_0xa375('0x35')](_0xa375('0x46'),getLogFromObject(_0x358862));return _[_0xa375('0x47')](_0x358862[_0xa375('0x48')])?null:_0x358862['result']['toString']();}else{logger[_0xa375('0xf')](_0xa375('0x46'),getLogFromObject(_0x358862));return null;}}else{logger[_0xa375('0xf')](_0xa375('0x4c'));return null;}}catch(_0x43a22d){logger[_0xa375('0xf')](_0x43a22d[_0xa375('0x10')]);return null;}});}logger['info'](util[_0xa375('0x14')](_0xa375('0x4d'),_0x57f158[_0xa375('0x1b')],_0x57f158[_0xa375('0x1c')],_0x57f158[_0xa375('0x1d')],_0x57f158[_0xa375('0x1e')],_0x57f158['uniqueid']));logger[_0xa375('0x13')](util[_0xa375('0x14')](_0xa375('0x4e'),_0x57f158[_0xa375('0x43')],_0x57f158['extension'],parseInt(_0x57f158[_0xa375('0x45')],0xa)+0x1));_0x57f158[_0xa375('0x4f')](_0x57f158[_0xa375('0x43')],_0x57f158['extension'],parseInt(_0x57f158[_0xa375('0x45')],0xa)+0x1);_0x57f158['close']();}}else{logger[_0xa375('0xf')](util[_0xa375('0x14')]('Project\x20%s\x20not\x20published',_0x57f158[_0xa375('0x1b')]));_0x57f158[_0xa375('0x4f')](_0x57f158['context'],_0x57f158[_0xa375('0x44')],parseInt(_0x57f158[_0xa375('0x45')],0xa)+0x1);_0x57f158[_0xa375('0x50')]();}}else{logger[_0xa375('0xf')](util['format']('Project\x20%s\x20not\x20found',_0x57f158[_0xa375('0x1b')]));_0x57f158[_0xa375('0x4f')](_0x57f158[_0xa375('0x43')],_0x57f158[_0xa375('0x44')],parseInt(_0x57f158[_0xa375('0x45')],0xa)+0x1);_0x57f158[_0xa375('0x50')]();}}function main(){var _0x42d09b;return utilLicense[_0xa375('0x51')]()[_0xa375('0x31')](function(_0x3d49f3){if(_0x3d49f3){if(_0x3d49f3['voice']){if(_0x3d49f3['callysquare']&&_0x3d49f3['callysquare']>0x0){logger['info'](util[_0xa375('0x14')](_0xa375('0x52'),_0x3d49f3[_0xa375('0x53')]));_0x42d09b=_0x3d49f3['callysquare'];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xa375('0x13')](_0xa375('0x54'));_0x42d09b=-0x1;}}})['catch'](function(_0x40aaf9){logger[_0xa375('0xf')](_0xa375('0x55'),_0x40aaf9['stack']);})['finally'](function(){var _0x13896d=require('./server')(config['agi'][_0xa375('0x12')],config[_0xa375('0x7')]['ip'],_0x42d09b);_0x13896d['on'](_0xa375('0xf'),errorHandler);_0x13896d['on'](_0xa375('0x56'),listeningHandler);_0x13896d['on'](_0xa375('0x57'),connectionHandler);_0x13896d['on'](_0xa375('0x50'),closeHandler);});}main();
\ No newline at end of file
index 6918e90..78338b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fad=['then','message','result','catch','jayson/promise','client','http','request'];(function(_0x5ad0d7,_0x2645f8){var _0xd83bd=function(_0x33d3bd){while(--_0x33d3bd){_0x5ad0d7['push'](_0x5ad0d7['shift']());}};_0xd83bd(++_0x2645f8);}(_0x4fad,0x17c));var _0xd4fa=function(_0xd047e1,_0x12d4d6){_0xd047e1=_0xd047e1-0x0;var _0x3c6056=_0x4fad[_0xd047e1];return _0x3c6056;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xd4fa('0x0'));var client=jayson[_0xd4fa('0x1')][_0xd4fa('0x2')]({'port':0x232b});function request(_0x40e496,_0x474b3a){return new BPromise(function(_0x49cc6a,_0x2ceb82){return client[_0xd4fa('0x3')](_0x40e496,_0x474b3a)[_0xd4fa('0x4')](function(_0x367352){if(_0x367352['error']){return _0x2ceb82(_0x367352['error'][_0xd4fa('0x5')]);}else{return _0x49cc6a(_0x367352[_0xd4fa('0x6')]);}})[_0xd4fa('0x7')](function(_0x476caa){return _0x2ceb82(_0x476caa);});});}exports['sendMailMessage']=function(_0x8c73ee,_0x53580d){return request('SendMail',{'account':_0x8c73ee,'message':_0x53580d});};
\ No newline at end of file
+var _0xd009=['result','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','then','error','message'];(function(_0x5436e3,_0x57dc4f){var _0x1d4bc2=function(_0x3ae6bb){while(--_0x3ae6bb){_0x5436e3['push'](_0x5436e3['shift']());}};_0x1d4bc2(++_0x57dc4f);}(_0xd009,0x1a7));var _0x9d00=function(_0xdd7ab5,_0x8e1625){_0xdd7ab5=_0xdd7ab5-0x0;var _0x22b698=_0xd009[_0xdd7ab5];return _0x22b698;};'use strict';var BPromise=require(_0x9d00('0x0'));var jayson=require(_0x9d00('0x1'));var client=jayson[_0x9d00('0x2')][_0x9d00('0x3')]({'port':0x232b});function request(_0x1ab53c,_0x47a344){return new BPromise(function(_0xbf3525,_0x49efad){return client['request'](_0x1ab53c,_0x47a344)[_0x9d00('0x4')](function(_0x42e9fc){if(_0x42e9fc['error']){return _0x49efad(_0x42e9fc[_0x9d00('0x5')][_0x9d00('0x6')]);}else{return _0xbf3525(_0x42e9fc[_0x9d00('0x7')]);}})['catch'](function(_0x2d2437){return _0x49efad(_0x2d2437);});});}exports[_0x9d00('0x8')]=function(_0x7a3ff6,_0x258a7f){return request(_0x9d00('0x9'),{'account':_0x7a3ff6,'message':_0x258a7f});};
\ No newline at end of file
index 0cbc24f..314639d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc68d=['_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','split','slice','trim','emit','headers','line','exports','stream','Transform'];(function(_0x1304a2,_0x3df85a){var _0x140bdf=function(_0x20f41b){while(--_0x20f41b){_0x1304a2['push'](_0x1304a2['shift']());}};_0x140bdf(++_0x3df85a);}(_0xc68d,0x17a));var _0xdc68=function(_0x4d48f6,_0x51cb22){_0x4d48f6=_0x4d48f6-0x0;var _0x384349=_0xc68d[_0x4d48f6];return _0x384349;};'use strict';var util=require('util');var Transform=require(_0xdc68('0x0'))[_0xdc68('0x1')];function AGIReply(_0x5798ca){Transform['call'](this,_0x5798ca);this[_0xdc68('0x2')]='';this[_0xdc68('0x3')]=![];}util[_0xdc68('0x4')](AGIReply,Transform);AGIReply[_0xdc68('0x5')][_0xdc68('0x6')]=function(_0x284911,_0x4957fc,_0x36f545){var _0x2709db='\x0a',_0x9507b2=['\x0a\x0a',_0xdc68('0x7')],_0x5204af=-0x1,_0x214161=-0x1,_0x40e8eb='',_0x6d2fb0=0x0,_0x5aefc7='',_0x537fff='';this[_0xdc68('0x2')]+=_0x284911[_0xdc68('0x8')]();_0x5aefc7=this[_0xdc68('0x2')];if(!this['_inBody']){_0x6d2fb0=0x0;while(_0x9507b2[_0x6d2fb0]){while((_0x214161=_0x5aefc7[_0xdc68('0x9')](_0x9507b2[_0x6d2fb0]))!=-0x1){_0x40e8eb=_0x9507b2[_0x6d2fb0];_0x537fff=_0x5aefc7[_0xdc68('0xa')](0x0,_0x214161);_0x5aefc7=_0x5aefc7[_0xdc68('0xa')](_0x214161+_0x40e8eb[_0xdc68('0xb')]);var _0x5a0bbc=_0x537fff[_0xdc68('0xc')](_0x2709db),_0x362273=0x0,_0x46207d={},_0x500a71='',_0x44775f='',_0x448d4a=-0x1;while(_0x5a0bbc[_0x362273]){_0x448d4a=_0x5a0bbc[_0x362273]['indexOf'](':');if(_0x448d4a!=-0x1){_0x500a71=_0x5a0bbc[_0x362273][_0xdc68('0xd')](0x0,_0x448d4a)[_0xdc68('0xe')]();_0x44775f=_0x5a0bbc[_0x362273][_0xdc68('0xd')](_0x448d4a+0x1)[_0xdc68('0xe')]();if(_0x500a71[_0xdc68('0xb')]>0x0){_0x46207d[_0x500a71]=_0x44775f;}}else{}_0x362273++;}this[_0xdc68('0xf')](_0xdc68('0x10'),_0x46207d);this['_inBody']=!![];}_0x6d2fb0++;}this[_0xdc68('0x2')]=_0x5aefc7;}else{while((_0x5204af=_0x5aefc7['indexOf'](_0x2709db))!=-0x1){_0x537fff=_0x5aefc7[_0xdc68('0xa')](0x0,_0x5204af);this['emit'](_0xdc68('0x11'),_0x537fff);_0x5aefc7=_0x5aefc7[_0xdc68('0xa')](_0x5204af+_0x2709db['length']);}this[_0xdc68('0x2')]=_0x5aefc7;}_0x36f545();};module[_0xdc68('0x12')]=AGIReply;
\ No newline at end of file
+var _0xbc9d=['substring','length','split','slice','trim','emit','headers','line','exports','util','stream','Transform','call','prototype','_transform','toString','_localBuffer','_inBody','indexOf'];(function(_0x5e927f,_0x5ed1f5){var _0x300b48=function(_0x223967){while(--_0x223967){_0x5e927f['push'](_0x5e927f['shift']());}};_0x300b48(++_0x5ed1f5);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x53ae66,_0x4d00fc){_0x53ae66=_0x53ae66-0x0;var _0x446592=_0xbc9d[_0x53ae66];return _0x446592;};'use strict';var util=require(_0xdbc9('0x0'));var Transform=require(_0xdbc9('0x1'))[_0xdbc9('0x2')];function AGIReply(_0x434f6e){Transform[_0xdbc9('0x3')](this,_0x434f6e);this['_localBuffer']='';this['_inBody']=![];}util['inherits'](AGIReply,Transform);AGIReply[_0xdbc9('0x4')][_0xdbc9('0x5')]=function(_0x3e63f1,_0x4a32b4,_0x6ab397){var _0x7c4c55='\x0a',_0x381a0e=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x4a9246=-0x1,_0x2dbd23=-0x1,_0x181f8a='',_0x3d4918=0x0,_0x4d6493='',_0x2c7ba5='';this['_localBuffer']+=_0x3e63f1[_0xdbc9('0x6')]();_0x4d6493=this[_0xdbc9('0x7')];if(!this[_0xdbc9('0x8')]){_0x3d4918=0x0;while(_0x381a0e[_0x3d4918]){while((_0x2dbd23=_0x4d6493[_0xdbc9('0x9')](_0x381a0e[_0x3d4918]))!=-0x1){_0x181f8a=_0x381a0e[_0x3d4918];_0x2c7ba5=_0x4d6493['substring'](0x0,_0x2dbd23);_0x4d6493=_0x4d6493[_0xdbc9('0xa')](_0x2dbd23+_0x181f8a[_0xdbc9('0xb')]);var _0xcc898=_0x2c7ba5[_0xdbc9('0xc')](_0x7c4c55),_0xd026bc=0x0,_0x34a15d={},_0x103d54='',_0x48bc83='',_0x567e71=-0x1;while(_0xcc898[_0xd026bc]){_0x567e71=_0xcc898[_0xd026bc][_0xdbc9('0x9')](':');if(_0x567e71!=-0x1){_0x103d54=_0xcc898[_0xd026bc][_0xdbc9('0xd')](0x0,_0x567e71)[_0xdbc9('0xe')]();_0x48bc83=_0xcc898[_0xd026bc][_0xdbc9('0xd')](_0x567e71+0x1)['trim']();if(_0x103d54[_0xdbc9('0xb')]>0x0){_0x34a15d[_0x103d54]=_0x48bc83;}}else{}_0xd026bc++;}this[_0xdbc9('0xf')](_0xdbc9('0x10'),_0x34a15d);this['_inBody']=!![];}_0x3d4918++;}this[_0xdbc9('0x7')]=_0x4d6493;}else{while((_0x4a9246=_0x4d6493[_0xdbc9('0x9')](_0x7c4c55))!=-0x1){_0x2c7ba5=_0x4d6493['substring'](0x0,_0x4a9246);this[_0xdbc9('0xf')](_0xdbc9('0x11'),_0x2c7ba5);_0x4d6493=_0x4d6493[_0xdbc9('0xa')](_0x4a9246+_0x7c4c55[_0xdbc9('0xb')]);}this[_0xdbc9('0x7')]=_0x4d6493;}_0x6ab397();};module[_0xdbc9('0x12')]=AGIReply;
\ No newline at end of file
index 78f4719..2183e70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5a5=['createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','CreateSquareMessage','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','UnpauseUser','agentLogout','bluebird','moment','lodash','util','jayson/promise','client','http','request','then','result','catch','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','ShowTrunk','getSoundById','ShowSound','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount'];(function(_0xec460,_0xd4244e){var _0x273ba0=function(_0x1f1dee){while(--_0x1f1dee){_0xec460['push'](_0xec460['shift']());}};_0x273ba0(++_0xd4244e);}(_0xa5a5,0x1dc));var _0x5a5a=function(_0x648163,_0x241576){_0x648163=_0x648163-0x0;var _0x199d4d=_0xa5a5[_0x648163];return _0x199d4d;};'use strict';var BPromise=require(_0x5a5a('0x0'));var moment=require(_0x5a5a('0x1'));var _=require(_0x5a5a('0x2'));var util=require(_0x5a5a('0x3'));var jayson=require(_0x5a5a('0x4'));var client=jayson[_0x5a5a('0x5')][_0x5a5a('0x6')]({'port':0x2329});function request(_0x582983,_0x2b9ca4){return new BPromise(function(_0x1d5e0a,_0x4e0d10){return client[_0x5a5a('0x7')](_0x582983,_0x2b9ca4)[_0x5a5a('0x8')](function(_0x4bc6d9){if(_0x4bc6d9['error']){return _0x4e0d10(_0x4bc6d9['error']['message']);}else{return _0x1d5e0a(_0x4bc6d9[_0x5a5a('0x9')]);}})[_0x5a5a('0xa')](function(_0x49d1df){return _0x4e0d10(_0x49d1df);});});}exports['getSquareProject']=function(_0x36e10d){return request(_0x5a5a('0xb'),{'options':{'raw':![],'where':{'name':_0x36e10d},'attributes':[_0x5a5a('0xc')]}});};exports[_0x5a5a('0xd')]=function(_0x28bc27){return request(_0x5a5a('0xe'),{'options':{'raw':![],'where':{'id':_0x28bc27},'include':[{'model':_0x5a5a('0xf'),'as':_0x5a5a('0x10')}],'attributes':['id',_0x5a5a('0x11'),_0x5a5a('0x12')]}});};exports['getSquareProjectById']=function(_0x1f8acd){return request(_0x5a5a('0xb'),{'options':{'where':{'id':_0x1f8acd},'attributes':[_0x5a5a('0x11')]}});};exports[_0x5a5a('0x13')]=function(_0x179387){return request(_0x5a5a('0x14'),{'options':{'where':{'id':_0x179387},'attributes':['name']}});};exports[_0x5a5a('0x15')]=function(_0x196809){return request(_0x5a5a('0x16'),{'options':{'where':{'id':_0x196809},'attributes':[_0x5a5a('0x11')]}});};exports[_0x5a5a('0x17')]=function(_0x235707){return request(_0x5a5a('0x18'),{'options':{'where':{'id':_0x235707},'attributes':[_0x5a5a('0x19')]}});};exports[_0x5a5a('0x1a')]=function(_0x32bdc8){return request(_0x5a5a('0x1b'),{'options':{'where':{'id':_0x32bdc8},'attributes':[_0x5a5a('0x11')]}});};exports['getTrunkById']=function(_0x2ef482){return request(_0x5a5a('0x1c'),{'options':{'where':{'id':_0x2ef482},'attributes':[_0x5a5a('0x11')]}});};exports[_0x5a5a('0x1d')]=function(_0x21b8f3){return request(_0x5a5a('0x1e'),{'options':{'where':{'id':_0x21b8f3},'attributes':['save_name']}});};exports[_0x5a5a('0x1f')]=function(_0x1da9f5){return request(_0x5a5a('0x20'),{'options':{'raw':![],'where':{'id':_0x1da9f5},'include':[{'model':_0x5a5a('0x21'),'as':_0x5a5a('0x22')}]}});};exports[_0x5a5a('0x23')]=function(_0x831f2e){return request(_0x5a5a('0x24'),{'options':{'where':{'id':_0x831f2e},'attributes':['id','name']}});};exports['createSmsMessage']=function(_0x3a6eb8){return request('CreateSmsMessage',{'body':_0x3a6eb8});};exports[_0x5a5a('0x25')]=function(_0x4505df){return request(_0x5a5a('0x26'),{'body':_0x4505df});};exports[_0x5a5a('0x27')]=function(_0x2c29df){return request('CreateSquareReport',{'body':_[_0x5a5a('0x28')](_0x2c29df,{'project_name':_0x2c29df['arg_1'],'prev_project_name':_0x2c29df['arg_2']||'','is_subproject':_0x2c29df['arg_2']?!![]:![],'leaveAt':moment()['format'](_0x5a5a('0x29'))})});};exports['createSquareRecording']=function(_0x3ee886){return request(_0x5a5a('0x2a'),{'body':_0x3ee886});};exports[_0x5a5a('0x2b')]=function(_0x1653e0){return request(_0x5a5a('0x2c'),{'body':_0x1653e0});};exports['createCmContact']=function(_0x2a7e16){return request(_0x5a5a('0x2d'),{'options':{'raw':![],'where':{'phone':_0x2a7e16[_0x5a5a('0x2e')],'ListId':_0x2a7e16[_0x5a5a('0x2f')]}}})[_0x5a5a('0x8')](function(_0x37693e){if(_0x37693e){return _0x37693e;}return request(_0x5a5a('0x30'),{'body':_0x2a7e16});});};exports[_0x5a5a('0x31')]=function(_0x51455b){return request(_0x5a5a('0x32'),{'options':{'where':{'id':_0x51455b},'attributes':[_0x5a5a('0x11')]}});};exports[_0x5a5a('0x33')]=function(_0x599dea,_0x165c70){return request(_0x5a5a('0x34'),{'body':{'interface':_0x165c70},'options':{'where':_0x599dea}});};exports[_0x5a5a('0x35')]=function(_0x12df06,_0x58a3bd,_0x38a35a){return request(_0x5a5a('0x36'),{'body':{'type':_0x58a3bd,'uniqueid':_0x38a35a},'options':{'where':_0x12df06}});};exports['agentUnpause']=function(_0x29c850){return request(_0x5a5a('0x37'),{'body':{},'options':{'where':_0x29c850}});};exports[_0x5a5a('0x38')]=function(_0x4f1841){return request('LogoutUser',{'body':{},'options':{'where':_0x4f1841}});};
\ No newline at end of file
+var _0x111a=['Smtp','email','getVariableById','ShowVariable','name','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','save_name','getIntervalById','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','phone','ListId','CreateCmContact','getPauseById','agentLogin','LoginUser','PauseUser','agentLogout','moment','lodash','util','client','http','request','then','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount'];(function(_0x42eea6,_0x125eec){var _0xcf414b=function(_0x39e6cb){while(--_0x39e6cb){_0x42eea6['push'](_0x42eea6['shift']());}};_0xcf414b(++_0x125eec);}(_0x111a,0x135));var _0xa111=function(_0x54c552,_0x4e99e8){_0x54c552=_0x54c552-0x0;var _0x35cfd4=_0x111a[_0x54c552];return _0x35cfd4;};'use strict';var BPromise=require('bluebird');var moment=require(_0xa111('0x0'));var _=require(_0xa111('0x1'));var util=require(_0xa111('0x2'));var jayson=require('jayson/promise');var client=jayson[_0xa111('0x3')][_0xa111('0x4')]({'port':0x2329});function request(_0x3209e5,_0x19e51d){return new BPromise(function(_0x55afc2,_0x42bfe2){return client[_0xa111('0x5')](_0x3209e5,_0x19e51d)[_0xa111('0x6')](function(_0x31ff70){if(_0x31ff70[_0xa111('0x7')]){return _0x42bfe2(_0x31ff70[_0xa111('0x7')][_0xa111('0x8')]);}else{return _0x55afc2(_0x31ff70[_0xa111('0x9')]);}})['catch'](function(_0x2d9ad8){return _0x42bfe2(_0x2d9ad8);});});}exports[_0xa111('0xa')]=function(_0x58f7e4){return request(_0xa111('0xb'),{'options':{'raw':![],'where':{'name':_0x58f7e4},'attributes':[_0xa111('0xc')]}});};exports[_0xa111('0xd')]=function(_0x107d26){return request(_0xa111('0xe'),{'options':{'raw':![],'where':{'id':_0x107d26},'include':[{'model':'MailServerOut','as':_0xa111('0xf')}],'attributes':['id','name',_0xa111('0x10')]}});};exports['getSquareProjectById']=function(_0x92dc71){return request(_0xa111('0xb'),{'options':{'where':{'id':_0x92dc71},'attributes':['name']}});};exports['getVoiceQueueById']=function(_0x163d73){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x163d73},'attributes':['name']}});};exports[_0xa111('0x11')]=function(_0x511862){return request(_0xa111('0x12'),{'options':{'where':{'id':_0x511862},'attributes':[_0xa111('0x13')]}});};exports[_0xa111('0x14')]=function(_0x35ffd9){return request(_0xa111('0x15'),{'options':{'where':{'id':_0x35ffd9},'attributes':[_0xa111('0x16')]}});};exports[_0xa111('0x17')]=function(_0x1e4c01){return request(_0xa111('0x18'),{'options':{'where':{'id':_0x1e4c01},'attributes':[_0xa111('0x13')]}});};exports[_0xa111('0x19')]=function(_0x38e46e){return request(_0xa111('0x1a'),{'options':{'where':{'id':_0x38e46e},'attributes':[_0xa111('0x13')]}});};exports['getSoundById']=function(_0x118c76){return request('ShowSound',{'options':{'where':{'id':_0x118c76},'attributes':[_0xa111('0x1b')]}});};exports[_0xa111('0x1c')]=function(_0x3bfcce){return request(_0xa111('0x1d'),{'options':{'raw':![],'where':{'id':_0x3bfcce},'include':[{'model':_0xa111('0x1e'),'as':'Intervals'}]}});};exports[_0xa111('0x1f')]=function(_0x5150a0){return request(_0xa111('0x20'),{'options':{'where':{'id':_0x5150a0},'attributes':['id','name']}});};exports[_0xa111('0x21')]=function(_0x4dbe82){return request(_0xa111('0x22'),{'body':_0x4dbe82});};exports[_0xa111('0x23')]=function(_0x52c99b){return request(_0xa111('0x24'),{'body':_0x52c99b});};exports[_0xa111('0x25')]=function(_0x308823){return request('CreateSquareReport',{'body':_[_0xa111('0x26')](_0x308823,{'project_name':_0x308823[_0xa111('0x27')],'prev_project_name':_0x308823[_0xa111('0x28')]||'','is_subproject':_0x308823['arg_2']?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0xa111('0x29')]=function(_0x274aee){return request(_0xa111('0x2a'),{'body':_0x274aee});};exports[_0xa111('0x2b')]=function(_0x2efb6c){return request(_0xa111('0x2c'),{'body':_0x2efb6c});};exports[_0xa111('0x2d')]=function(_0x5ad606){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x5ad606[_0xa111('0x2e')],'ListId':_0x5ad606[_0xa111('0x2f')]}}})[_0xa111('0x6')](function(_0x54c030){if(_0x54c030){return _0x54c030;}return request(_0xa111('0x30'),{'body':_0x5ad606});});};exports[_0xa111('0x31')]=function(_0x2a0051){return request('ShowPause',{'options':{'where':{'id':_0x2a0051},'attributes':[_0xa111('0x13')]}});};exports[_0xa111('0x32')]=function(_0x51b55a,_0x651619){return request(_0xa111('0x33'),{'body':{'interface':_0x651619},'options':{'where':_0x51b55a}});};exports['agentPause']=function(_0x53e082,_0x1d14f1,_0x18bd90){return request(_0xa111('0x34'),{'body':{'type':_0x1d14f1,'uniqueid':_0x18bd90},'options':{'where':_0x53e082}});};exports['agentUnpause']=function(_0x318e13){return request('UnpauseUser',{'body':{},'options':{'where':_0x318e13}});};exports[_0xa111('0x35')]=function(_0x3f7446){return request('LogoutUser',{'body':{},'options':{'where':_0x3f7446}});};
\ No newline at end of file
index 89d21c5..7298a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['exports'];(function(_0x46a3e8,_0x2e1b35){var _0xf1442e=function(_0x37b5d4){while(--_0x37b5d4){_0x46a3e8['push'](_0x46a3e8['shift']());}};_0xf1442e(++_0x2e1b35);}(_0xacf4,0xe7));var _0x4acf=function(_0x1fa04f,_0x5a792f){_0x1fa04f=_0x1fa04f-0x0;var _0x2bd31c=_0xacf4[_0x1fa04f];return _0x2bd31c;};var polly=require('./polly');var lex=require('./lex');module[_0x4acf('0x0')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xac0a=['exports'];(function(_0x3c6e48,_0x56b78f){var _0x5319e5=function(_0x5f4186){while(--_0x5f4186){_0x3c6e48['push'](_0x3c6e48['shift']());}};_0x5319e5(++_0x56b78f);}(_0xac0a,0x11e));var _0xaac0=function(_0x1a71cb,_0x5ca695){_0x1a71cb=_0x1a71cb-0x0;var _0x4fb562=_0xac0a[_0x1a71cb];return _0x4fb562;};var polly=require('./polly');var lex=require('./lex');module[_0xaac0('0x0')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 26ad3ae..c871b96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf109=['./lib/api','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xf109,0xce));var _0x9f10=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0xf109[_0x2283dc];return _0x16db90;};'use strict';var lex=require(_0x9f10('0x0'));module[_0x9f10('0x1')]=function(_0x44c4f2,_0x5d2950,_0x5b381d,_0x4cbc7a,_0x3659ce,_0x74f517){return lex(_0x44c4f2,_0x5d2950,_0x5b381d,_0x4cbc7a,_0x3659ce,_0x74f517);};
\ No newline at end of file
+var _0x4ea3=['./lib/api','exports'];(function(_0x283ff2,_0x24d4b5){var _0x3ecd24=function(_0x4e7ea4){while(--_0x4e7ea4){_0x283ff2['push'](_0x283ff2['shift']());}};_0x3ecd24(++_0x24d4b5);}(_0x4ea3,0x70));var _0x34ea=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x4ea3[_0x1ac595];return _0x455fff;};'use strict';var lex=require(_0x34ea('0x0'));module[_0x34ea('0x1')]=function(_0x324f65,_0x3ab582,_0x588172,_0x374ec1,_0x494b56,_0x269d4c){return lex(_0x324f65,_0x3ab582,_0x588172,_0x374ec1,_0x494b56,_0x269d4c);};
\ No newline at end of file
index f684341..affe489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x587d8b,_0x993eda){var _0x2faaf8=function(_0x5e0a42){while(--_0x5e0a42){_0x587d8b['push'](_0x587d8b['shift']());}};_0x2faaf8(++_0x993eda);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x1b01f9,_0x1277cd){var _0x2fbf5b=function(_0x2f9d9a){while(--_0x2f9d9a){_0x1b01f9['push'](_0x1b01f9['shift']());}};_0x2fbf5b(++_0x1277cd);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 5b56c24..b99c163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5b4=['exports','./lib/api'];(function(_0x3a4f18,_0x1af741){var _0x4c20fc=function(_0x27115f){while(--_0x27115f){_0x3a4f18['push'](_0x3a4f18['shift']());}};_0x4c20fc(++_0x1af741);}(_0xb5b4,0x131));var _0x4b5b=function(_0x1e48d3,_0x5d8c43){_0x1e48d3=_0x1e48d3-0x0;var _0x2852b1=_0xb5b4[_0x1e48d3];return _0x2852b1;};'use strict';var polly=require(_0x4b5b('0x0'));module[_0x4b5b('0x1')]=function(_0x30c4bc,_0x13a99b,_0x111230,_0x34d3a7,_0x21e94d,_0x2221fb,_0xd95533){return polly(_0x30c4bc,_0x13a99b,_0x111230,_0x34d3a7,_0x21e94d,_0x2221fb,_0xd95533);};
\ No newline at end of file
+var _0xf344=['./lib/api','exports'];(function(_0xb4cc12,_0x41436e){var _0x8593b5=function(_0x13b840){while(--_0x13b840){_0xb4cc12['push'](_0xb4cc12['shift']());}};_0x8593b5(++_0x41436e);}(_0xf344,0x118));var _0x4f34=function(_0x313c5e,_0x2194d3){_0x313c5e=_0x313c5e-0x0;var _0x597ce3=_0xf344[_0x313c5e];return _0x597ce3;};'use strict';var polly=require(_0x4f34('0x0'));module[_0x4f34('0x1')]=function(_0xd1b535,_0x3619d1,_0x32110f,_0x28b27a,_0x33e2ad,_0x2e4abc,_0xc525b7){return polly(_0xd1b535,_0x3619d1,_0x32110f,_0x28b27a,_0x33e2ad,_0x2e4abc,_0xc525b7);};
\ No newline at end of file
index 449375d..8055159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39fe=['bluebird','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','path'];(function(_0x545f0e,_0x4591e9){var _0x216cf4=function(_0x508629){while(--_0x508629){_0x545f0e['push'](_0x545f0e['shift']());}};_0x216cf4(++_0x4591e9);}(_0x39fe,0xe7));var _0xe39f=function(_0x2d67b4,_0x4ca8fe){_0x2d67b4=_0x2d67b4-0x0;var _0x4cd582=_0x39fe[_0x2d67b4];return _0x4cd582;};'use strict';var fs=require('fs');var path=require(_0xe39f('0x0'));var BPromise=require(_0xe39f('0x1'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0xe290df,_0x21af11,_0x3a35be){return new BPromise(function(_0x425253,_0x187a4a){_0xe290df['synthesizeSpeech'](_0x21af11,function(_0x1ace69,_0x5b3947){if(_0x1ace69){_0x187a4a(_0x1ace69);}else if(_0x5b3947){if(_0x5b3947[_0xe39f('0x2')]instanceof Buffer){fs[_0xe39f('0x3')](_0x3a35be,_0x5b3947[_0xe39f('0x2')],function(_0x2a3cad){if(_0x2a3cad){_0x187a4a(_0x2a3cad);}else{_0x425253();}});}else{_0x187a4a(new Error(_0xe39f('0x4')));}}else{_0x187a4a(new Error(_0xe39f('0x5')));}});});}module[_0xe39f('0x6')]=function(_0x2f8098,_0x1a6153,_0x3fe604,_0x311394,_0x2160b3,_0x507004,_0x350b4c){var _0xec0c03=new AWS['Polly']({'accessKeyId':_0x2f8098,'secretAccessKey':_0x1a6153,'region':_0x3fe604});var _0x1050d2={'Text':_0x2160b3,'TextType':_0x507004||_0xe39f('0x7'),'OutputFormat':'mp3','VoiceId':_0x311394};return pollyResult(_0xec0c03,_0x1050d2,_0x350b4c);};
\ No newline at end of file
+var _0x6727=['exports','Polly','text','mp3','bluebird','randomstring','aws-sdk','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x390228,_0x319481){var _0x1e3101=function(_0xee1edb){while(--_0xee1edb){_0x390228['push'](_0x390228['shift']());}};_0x1e3101(++_0x319481);}(_0x6727,0x1da));var _0x7672=function(_0x4cddd1,_0x3b49c8){_0x4cddd1=_0x4cddd1-0x0;var _0x3edb96=_0x6727[_0x4cddd1];return _0x3edb96;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x7672('0x0'));var rs=require(_0x7672('0x1'));var AWS=require(_0x7672('0x2'));function pollyResult(_0x5a1ee2,_0xaa94ba,_0x2f1264){return new BPromise(function(_0x114a26,_0x71feb7){_0x5a1ee2['synthesizeSpeech'](_0xaa94ba,function(_0x374a04,_0x59aa10){if(_0x374a04){_0x71feb7(_0x374a04);}else if(_0x59aa10){if(_0x59aa10[_0x7672('0x3')]instanceof Buffer){fs[_0x7672('0x4')](_0x2f1264,_0x59aa10[_0x7672('0x3')],function(_0x4d727c){if(_0x4d727c){_0x71feb7(_0x4d727c);}else{_0x114a26();}});}else{_0x71feb7(new Error(_0x7672('0x5')));}}else{_0x71feb7(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0x7672('0x6')]=function(_0x245121,_0x19d93a,_0x354732,_0x2e1707,_0x360dfd,_0x4295d7,_0x1c30d2){var _0x3f36dc=new AWS[(_0x7672('0x7'))]({'accessKeyId':_0x245121,'secretAccessKey':_0x19d93a,'region':_0x354732});var _0x3d0eaf={'Text':_0x360dfd,'TextType':_0x4295d7||_0x7672('0x8'),'OutputFormat':_0x7672('0x9'),'VoiceId':_0x2e1707};return pollyResult(_0x3f36dc,_0x3d0eaf,_0x1c30d2);};
\ No newline at end of file
index d16f6be..3b76310 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1a=['./lib/api','exports'];(function(_0x45547c,_0x35e962){var _0x5f1642=function(_0x258634){while(--_0x258634){_0x45547c['push'](_0x45547c['shift']());}};_0x5f1642(++_0x35e962);}(_0xaf1a,0xcc));var _0xaaf1=function(_0x3d9a76,_0x2127b5){_0x3d9a76=_0x3d9a76-0x0;var _0x2e9d5d=_0xaf1a[_0x3d9a76];return _0x2e9d5d;};'use strict';var asr=require(_0xaaf1('0x0'));module[_0xaaf1('0x1')]=function(_0x269c78,_0x2b5c56,_0x1333cd,_0x423342){return asr(_0x269c78,_0x2b5c56,_0x1333cd);};
\ No newline at end of file
+var _0xee2d=['exports'];(function(_0x1cabcd,_0x4129df){var _0x415c63=function(_0x409098){while(--_0x409098){_0x1cabcd['push'](_0x1cabcd['shift']());}};_0x415c63(++_0x4129df);}(_0xee2d,0xce));var _0xdee2=function(_0x8014c9,_0x39f2cc){_0x8014c9=_0x8014c9-0x0;var _0x459712=_0xee2d[_0x8014c9];return _0x459712;};'use strict';var asr=require('./lib/api');module[_0xdee2('0x0')]=function(_0x1d4fc5,_0xceb96f,_0x4b595e,_0x62d86c){return asr(_0x1d4fc5,_0xceb96f,_0x4b595e);};
\ No newline at end of file
index 2027282..e1b1507 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd246=['undefined','lang\x20should\x20be\x20a\x20string','base64','POST','LINEAR16','url','bluebird','https://speech.googleapis.com','exports','length','string','key\x20should\x20be\x20a\x20string'];(function(_0x473e3f,_0x2f0947){var _0x59399b=function(_0x26dece){while(--_0x26dece){_0x473e3f['push'](_0x473e3f['shift']());}};_0x59399b(++_0x2f0947);}(_0xd246,0xf5));var _0x6d24=function(_0x4f9e31,_0x19881c){_0x4f9e31=_0x4f9e31-0x0;var _0x2f9fc7=_0xd246[_0x4f9e31];return _0x2f9fc7;};'use strict';var url=require(_0x6d24('0x0'));var BPromise=require(_0x6d24('0x1'));var fs=require('fs');var host=_0x6d24('0x2');module[_0x6d24('0x3')]=function(_0x3e2217,_0x20310f,_0x1d0589){return new BPromise(function(_0x51c18f,_0x4e76e1){var _0xfa68f3;if(typeof _0x3e2217!=='string'||_0x3e2217[_0x6d24('0x4')]===0x0){return _0x4e76e1('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x20310f!==_0x6d24('0x5')||_0x20310f[_0x6d24('0x4')]===0x0){return _0x4e76e1(_0x6d24('0x6'));}if(typeof _0x1d0589!==_0x6d24('0x7')&&(typeof _0x1d0589!==_0x6d24('0x5')||_0x1d0589[_0x6d24('0x4')]===0x0)){return _0x4e76e1(_0x6d24('0x8'));}try{_0xfa68f3=fs['readFileSync'](_0x3e2217)['toString'](_0x6d24('0x9'));}catch(_0x519e5e){return _0x4e76e1(_0x519e5e);}return _0x51c18f({'method':_0x6d24('0xa'),'uri':host+'/v1/speech:recognize?key='+_0x20310f,'body':{'config':{'encoding':_0x6d24('0xb'),'sampleRateHertz':'8000','languageCode':_0x1d0589},'audio':{'content':_0xfa68f3}},'json':!![]});});};
\ No newline at end of file
+var _0xcf14=['8000','url','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16'];(function(_0x4b7469,_0x16f3ba){var _0x3d5572=function(_0x4170a6){while(--_0x4170a6){_0x4b7469['push'](_0x4b7469['shift']());}};_0x3d5572(++_0x16f3ba);}(_0xcf14,0xa1));var _0x4cf1=function(_0x10f5a8,_0x2324d0){_0x10f5a8=_0x10f5a8-0x0;var _0x25fd20=_0xcf14[_0x10f5a8];return _0x25fd20;};'use strict';var url=require(_0x4cf1('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host=_0x4cf1('0x1');module[_0x4cf1('0x2')]=function(_0x55e5b6,_0x3401df,_0x15f9b9){return new BPromise(function(_0x46add7,_0xc34979){var _0x5de7f1;if(typeof _0x55e5b6!==_0x4cf1('0x3')||_0x55e5b6[_0x4cf1('0x4')]===0x0){return _0xc34979(_0x4cf1('0x5'));}if(typeof _0x3401df!==_0x4cf1('0x3')||_0x3401df[_0x4cf1('0x4')]===0x0){return _0xc34979(_0x4cf1('0x6'));}if(typeof _0x15f9b9!==_0x4cf1('0x7')&&(typeof _0x15f9b9!=='string'||_0x15f9b9[_0x4cf1('0x4')]===0x0)){return _0xc34979(_0x4cf1('0x8'));}try{_0x5de7f1=fs[_0x4cf1('0x9')](_0x55e5b6)[_0x4cf1('0xa')](_0x4cf1('0xb'));}catch(_0x3722fa){return _0xc34979(_0x3722fa);}return _0x46add7({'method':_0x4cf1('0xc'),'uri':host+_0x4cf1('0xd')+_0x3401df,'body':{'config':{'encoding':_0x4cf1('0xe'),'sampleRateHertz':_0x4cf1('0xf'),'languageCode':_0x15f9b9},'audio':{'content':_0x5de7f1}},'json':!![]});});};
\ No newline at end of file
index fc4e03f..36903de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3837=['exports','./asr'];(function(_0x17d011,_0x441407){var _0x4c754a=function(_0x4cbf38){while(--_0x4cbf38){_0x17d011['push'](_0x17d011['shift']());}};_0x4c754a(++_0x441407);}(_0x3837,0x15f));var _0x7383=function(_0x357d5b,_0x473580){_0x357d5b=_0x357d5b-0x0;var _0x20f6cc=_0x3837[_0x357d5b];return _0x20f6cc;};var asr=require(_0x7383('0x0'));module[_0x7383('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xa485=['./asr'];(function(_0x164e76,_0x4446cc){var _0x44e4b4=function(_0xec3ea1){while(--_0xec3ea1){_0x164e76['push'](_0x164e76['shift']());}};_0x44e4b4(++_0x4446cc);}(_0xa485,0x170));var _0x5a48=function(_0x1f246f,_0x1f3cd8){_0x1f246f=_0x1f246f-0x0;var _0x2c393d=_0xa485[_0x1f246f];return _0x2c393d;};var asr=require(_0x5a48('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index f9e0736..f99e419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35da=['url','parse','util','./sestek','../../../config/logger','https:','host','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','end','protocol','WHAT_EVER','data','wav','error\x20convert','finish\x20to\x20convert','start','tmp','generate','writeFileSync','base64','then','chmodSync','777','toString','https://texttospeech.googleapis.com/v1/','input','voice','audioConfig','MP3','POST','resolve','.mp3','audioContent','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','asr','uri','results','map','transcript','join','alternatives','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','name','message','textRequest','stringify','result','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','.wav','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','nda','channelData','CustomActionData','Data','audiofile','dirName','bluebird','dialogflow','https','path','querystring','request-promise','randomstring','sox','google-tts-api'];(function(_0x5257bf,_0xf39844){var _0x30f32b=function(_0x252bff){while(--_0x252bff){_0x5257bf['push'](_0x5257bf['shift']());}};_0x30f32b(++_0xf39844);}(_0x35da,0x174));var _0xa35d=function(_0x22c208,_0x3d517f){_0x22c208=_0x22c208-0x0;var _0x1759c7=_0x35da[_0x22c208];return _0x1759c7;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xa35d('0x0'));var dialogflow=require(_0xa35d('0x1'));var fs=require('fs');var http=require('http');var https=require(_0xa35d('0x2'));var md5=require('md5');var path=require(_0xa35d('0x3'));var querystring=require(_0xa35d('0x4'));var rp=require(_0xa35d('0x5'));var rs=require(_0xa35d('0x6'));var sox=require(_0xa35d('0x7'));var tts=require(_0xa35d('0x8'));var urlParse=require(_0xa35d('0x9'))[_0xa35d('0xa')];var util=require(_0xa35d('0xb'));var aws=require('./aws');var google=require('./google');var sestek=require(_0xa35d('0xc'));var tilde=require('./tilde');var logger=require(_0xa35d('0xd'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0xb77997,_0x4f770f){return new BPromise(function(_0x59e79c,_0x5d3e36){var _0x227ca7=urlParse(_0xb77997);var _0x533521=_0x227ca7['protocol']===_0xa35d('0xe')?https:http;var _0x4e6094={'host':_0x227ca7[_0xa35d('0xf')],'path':_0x227ca7[_0xa35d('0x3')],'headers':{'user-agent':'WHAT_EVER'}};_0x533521[_0xa35d('0x10')](_0x4e6094,function(_0x5d57e5){if(_0x5d57e5[_0xa35d('0x11')]!==0xc8){logger[_0xa35d('0x12')](_0xa35d('0x13')+_0xb77997+_0xa35d('0x14')+_0x5d57e5[_0xa35d('0x11')]+'\x20('+_0x5d57e5[_0xa35d('0x15')]+')');_0x5d3e36(new Error(_0xa35d('0x13')+_0xb77997+'\x20failed,\x20status\x20code\x20=\x20'+_0x5d57e5[_0xa35d('0x11')]+'\x20('+_0x5d57e5['statusMessage']+')'));return;}var _0x216e0d=fs[_0xa35d('0x16')](_0x4f770f);_0x216e0d['on'](_0xa35d('0x17'),function(){logger[_0xa35d('0x18')](_0xa35d('0x19'));_0x216e0d[_0xa35d('0x1a')](_0x59e79c);});_0x216e0d['on'](_0xa35d('0x12'),function(_0x2b1553){fs[_0xa35d('0x1b')](_0x4f770f);logger[_0xa35d('0x12')](_0xa35d('0x1c'),_0x2b1553);_0x5d3e36(_0x2b1553);});_0x5d57e5['pipe'](_0x216e0d);})['on'](_0xa35d('0x12'),function(_0x48c568){logger[_0xa35d('0x12')](_0x48c568);_0x5d3e36(_0x48c568);})[_0xa35d('0x1d')]();});}function uploadFile(_0x4ee63a){return new BPromise(function(_0xa689c8,_0x99a03c){var _0x26ab3d=urlParse(_0x4ee63a);var _0x5e578e=_0x26ab3d[_0xa35d('0x1e')]===_0xa35d('0xe')?https:http;var _0x101106={'host':_0x26ab3d[_0xa35d('0xf')],'path':_0x26ab3d[_0xa35d('0x3')],'headers':{'user-agent':_0xa35d('0x1f')}};_0x5e578e[_0xa35d('0x10')](_0x101106,function(_0x1640ca){if(_0x1640ca[_0xa35d('0x11')]!==0xc8){_0x99a03c(new Error('request\x20to\x20'+_0x4ee63a+_0xa35d('0x14')+_0x1640ca['statusCode']+'\x20('+_0x1640ca['statusMessage']+')'));return;}var _0x3c4e05='';_0x1640ca['on'](_0xa35d('0x20'),function(_0x46e9af){_0x3c4e05+=_0x46e9af;});_0x1640ca['on'](_0xa35d('0x1d'),function(){_0xa689c8(_0x3c4e05);});})['on']('error',function(_0x190f93){_0x99a03c(_0x190f93);})['end']();});}function convertFile(_0x266fb2,_0x3b6fec){return new BPromise(function(_0xe1fb5b,_0x1b5868){var _0x1910c0=sox['transcode'](_0x266fb2,_0x3b6fec,{'sampleRate':0x1f40,'format':_0xa35d('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1910c0['on']('error',function(_0xc4bd0a){logger[_0xa35d('0x12')](_0xa35d('0x22'),_0xc4bd0a);_0x1b5868(_0xc4bd0a);});_0x1910c0['on'](_0xa35d('0x1d'),function(){logger[_0xa35d('0x18')](_0xa35d('0x23'));_0xe1fb5b();});_0x1910c0[_0xa35d('0x24')]();});}function base64Decode(_0xfd312f,_0x255d22){var _0x3ca785=path['resolve'](__dirname,_0xa35d('0x25'),rs[_0xa35d('0x26')](0x4)+'.wav');fs[_0xa35d('0x27')](_0x3ca785,_0xfd312f,_0xa35d('0x28'));return convertFile(_0x3ca785,_0x255d22)[_0xa35d('0x29')](function(){try{fs[_0xa35d('0x1b')](_0x3ca785);fs[_0xa35d('0x2a')](_0x255d22,_0xa35d('0x2b'));}catch(_0x5b7f7e){logger[_0xa35d('0x12')](_0x5b7f7e);}return _0x255d22['split']('.')[0x0];});}function base64Encode(_0x186c4d){var _0xdf5ab4=fs['readFileSync'](_0x186c4d);return new Buffer(_0xdf5ab4)[_0xa35d('0x2c')]('base64');}exports['googleCloudTTS']=function(_0x1eb9fa,_0x228c11,_0x88a407,_0x30a4e8,_0x22260a,_0x195026){var _0x52b1aa,_0x230fdd;var _0x3694e9=_0xa35d('0x2d');var _0x5d716a='?key='+_0x1eb9fa;var _0x23f000={};if(_0x228c11==='ssml'){_0x23f000[_0xa35d('0x2e')]={'ssml':_0x88a407};}else{_0x23f000[_0xa35d('0x2e')]={'text':_0x88a407};};_0x23f000[_0xa35d('0x2f')]={'languageCode':_0x30a4e8,'ssmlGender':_0x22260a};_0x23f000[_0xa35d('0x30')]={'audioEncoding':_0xa35d('0x31'),'sampleRateHertz':0x1f40};var _0xa4f407={'url':_0x3694e9+'text:synthesize'+_0x5d716a,'method':_0xa35d('0x32'),'json':!![],'body':_0x23f000};return rp(_0xa4f407)[_0xa35d('0x29')](function(_0x5c6d09){return new BPromise(function(_0x34ea,_0x58e8ef){_0x52b1aa=path[_0xa35d('0x33')](__dirname,_0xa35d('0x25'),rs[_0xa35d('0x26')](0x4)+_0xa35d('0x34'));var _0x3c7f47=Buffer['from'](_0x5c6d09[_0xa35d('0x35')],_0xa35d('0x28'));return fs['writeFile'](_0x52b1aa,_0x3c7f47,function(_0x59c64f){_0x58e8ef(_0x59c64f);},function(_0x2afcb0){fs[_0xa35d('0x2a')](_0x52b1aa,_0xa35d('0x2b'));_0x34ea(_0x2afcb0);});});})[_0xa35d('0x29')](function(_0x2a52a0){_0x230fdd=path[_0xa35d('0x33')](__dirname,'tmp',rs[_0xa35d('0x26')](0x4)+'.wav');return convertFile(_0x52b1aa,_0x230fdd);})[_0xa35d('0x29')](function(){try{fs[_0xa35d('0x1b')](_0x52b1aa);fs[_0xa35d('0x2a')](_0x230fdd,_0xa35d('0x2b'));}catch(_0x109d22){logger[_0xa35d('0x12')](_0x109d22);}logger[_0xa35d('0x18')]('googleCloudTTS\x20path',_0x230fdd[_0xa35d('0x36')]('.')[0x0]);return _0x230fdd[_0xa35d('0x36')]('.')[0x0];});};exports[_0xa35d('0x37')]=function(_0x4dd940,_0xace08d){var _0x38cb26=_0xa35d('0x38');var _0x5317bf,_0x4ff0f8;var _0x474180;var _0x568807={'encoding':_0xa35d('0x39'),'method':_0xa35d('0x32'),'timeout':0x2710,'url':_0x38cb26,'headers':{'Content-Type':_0xa35d('0x3a')},'body':_0xa35d('0x3b')+encodeURIComponent(JSON['stringify']([[['jQ1olc',JSON['stringify']([_0x4dd940,_0xace08d||'en',![],_0xa35d('0x3c')]),null,_0xa35d('0x3d')]]]))};return rp(_0x568807)[_0xa35d('0x29')](function(_0x582dd4){try{_0x474180=eval(_0x582dd4[_0xa35d('0x3e')](0x5))[0x0][0x2];}catch(_0x37aa24){throw new Error(_0xa35d('0x3f')+_0x582dd4[_0xa35d('0x20')]);}if(!_0x474180){if(_0x4dd940[_0xa35d('0x40')]>0xc8){throw new Error(_0xa35d('0x41'));}else{throw new Error('lang\x20\x22'+_0xace08d+_0xa35d('0x42'));}}try{_0x474180=eval(_0x474180)[0x0];}catch(_0x154d16){throw new Error(_0xa35d('0x3f')+res['data']);}const _0x42be75=_0x474180;_0x5317bf=path[_0xa35d('0x33')](__dirname,_0xa35d('0x25'),rs[_0xa35d('0x26')](0x4)+_0xa35d('0x34'));fs[_0xa35d('0x27')](_0x5317bf,_0x474180,{'encoding':_0xa35d('0x28')});_0x4ff0f8=path[_0xa35d('0x33')](__dirname,_0xa35d('0x25'),rs['generate'](0x4)+'.wav');return convertFile(_0x5317bf,_0x4ff0f8);})[_0xa35d('0x29')](function(){try{fs[_0xa35d('0x1b')](_0x5317bf);fs[_0xa35d('0x2a')](_0x4ff0f8,_0xa35d('0x2b'));}catch(_0x57ce08){logger[_0xa35d('0x12')](_0x57ce08);}logger['info']('goggleTTS\x20path',_0x4ff0f8[_0xa35d('0x36')]('.')[0x0]);return _0x4ff0f8[_0xa35d('0x36')]('.')[0x0];});};exports['googleASR']=function(_0x5d13f5,_0xc8d4a8,_0x2b535e){return google[_0xa35d('0x43')](_0x5d13f5,_0xc8d4a8,_0x2b535e)[_0xa35d('0x29')](function(_0x1d67a5){logger['info'](_0x1d67a5[_0xa35d('0x44')]);return rp(_0x1d67a5);})[_0xa35d('0x29')](function(_0x29bccb){var _0x13d821='';var _0x27985f=0x0;try{fs[_0xa35d('0x1b')](_0x5d13f5);}catch(_0x1b92ee){logger[_0xa35d('0x12')](_0x1b92ee);}if(_0x29bccb&&_0x29bccb[_0xa35d('0x45')]){_0x13d821=_0x29bccb['results'][_0xa35d('0x46')](function(_0x1b0f4b){return _0x1b0f4b&&_0x1b0f4b['alternatives'][0x0]&&_0x1b0f4b['alternatives'][0x0]['transcript']?_0x1b0f4b['alternatives'][0x0][_0xa35d('0x47')]:'';})[_0xa35d('0x48')]('\x0a');_0x27985f=_0x29bccb[_0xa35d('0x45')][_0xa35d('0x46')](function(_0x215ba4){return _0x215ba4&&_0x215ba4[_0xa35d('0x49')][0x0]&&_0x215ba4[_0xa35d('0x49')][0x0][_0xa35d('0x4a')]?_0x215ba4['alternatives'][0x0][_0xa35d('0x4a')]:0x0;})[_0xa35d('0x48')]('\x0a');}logger[_0xa35d('0x18')](_0xa35d('0x4b'),_0x13d821);logger[_0xa35d('0x18')](_0xa35d('0x4c'),_0x27985f);return{'transcript':_0x13d821,'confidence':_0x27985f};})[_0xa35d('0x4d')](function(_0x399e95){logger[_0xa35d('0x12')]('[%s]\x20%s:%s',_0x399e95[_0xa35d('0x11')],_0x399e95[_0xa35d('0x4e')],_0x399e95[_0xa35d('0x4f')]);});};exports['googleDialogflow']=function(_0x50959f,_0x16f403,_0x4a04b1,_0x23de64){var _0x3e8478=apiai(_0x16f403,{'language':_0x23de64||'en'});return _0x3e8478[_0xa35d('0x50')](_0x4a04b1,{'sessionId':md5(_0x50959f)})[_0xa35d('0x29')](function(_0x4bc24d){logger[_0xa35d('0x18')](JSON[_0xa35d('0x51')](_0x4bc24d));return{'source':_0x4bc24d[_0xa35d('0x52')]['source'],'resolvedQuery':_0x4bc24d[_0xa35d('0x52')][_0xa35d('0x53')],'action':_0x4bc24d[_0xa35d('0x52')][_0xa35d('0x54')],'actionIncomplete':_0x4bc24d[_0xa35d('0x52')][_0xa35d('0x55')],'speech':_0x4bc24d[_0xa35d('0x52')][_0xa35d('0x56')]['speech'],'score':_0x4bc24d['result'][_0xa35d('0x57')],'statusCode':_0x4bc24d[_0xa35d('0x58')][_0xa35d('0x59')],'endConversation':_0x4bc24d[_0xa35d('0x52')][_0xa35d('0x5a')]['endConversation']||![],'isFallbackIntent':_0x4bc24d[_0xa35d('0x52')]['metadata'][_0xa35d('0x5b')]};});};exports[_0xa35d('0x5c')]=function(_0x356b4d,_0x3a1c6c,_0x3a0f42,_0xcee247,_0x503632,_0x156853){var _0x4ee96c=_0xcee247[_0xa35d('0x5d')](/\\n/g,'\x0a');var _0xbe1476={'credentials':{'private_key':_0x4ee96c,'client_email':_0x3a0f42}};var _0x36b964=new dialogflow[(_0xa35d('0x5e'))](_0xbe1476);var _0x41c501=_0x36b964[_0xa35d('0x5f')](_0x3a1c6c,md5(_0x356b4d));var _0x491983={'session':_0x41c501,'queryInput':{'text':{'text':_0x503632,'languageCode':_0x156853}}};return _0x36b964[_0xa35d('0x60')](_0x491983)[_0xa35d('0x29')](function(_0x4c2a65){if(_0x4c2a65&&_0x4c2a65[_0xa35d('0x40')]){logger[_0xa35d('0x18')]('Dialogflow\x20V2\x20response:',JSON[_0xa35d('0x51')](_0x4c2a65));var _0x508274=_0x4c2a65[0x0];if(_0x508274){var _0x454a1d={'action':_0x508274[_0xa35d('0x61')][_0xa35d('0x54')],'allRequiredParamsPresent':_0x508274[_0xa35d('0x61')][_0xa35d('0x62')],'endConversation':_0x508274['queryResult'][_0xa35d('0x63')]&&_0x508274[_0xa35d('0x61')]['diagnosticInfo'][_0xa35d('0x64')]?_0x508274[_0xa35d('0x61')]['diagnosticInfo']['fields'][_0xa35d('0x65')][_0xa35d('0x66')]:![],'fulfillmentText':_0x508274[_0xa35d('0x61')][_0xa35d('0x67')],'intentName':_0x508274['queryResult'][_0xa35d('0x68')][_0xa35d('0x4e')],'intentDisplayName':_0x508274['queryResult'][_0xa35d('0x68')][_0xa35d('0x69')],'isFallbackIntent':_0x508274['queryResult'][_0xa35d('0x68')][_0xa35d('0x6a')],'languageCode':_0x508274[_0xa35d('0x61')][_0xa35d('0x6b')],'queryText':_0x508274[_0xa35d('0x61')][_0xa35d('0x6c')],'responseId':_0x508274[_0xa35d('0x6d')],'score':_0x508274[_0xa35d('0x61')][_0xa35d('0x6e')],'speech':_0x508274[_0xa35d('0x61')][_0xa35d('0x67')],'providerResponse':JSON[_0xa35d('0x51')](_0x4c2a65)};return _0x454a1d;}}});};exports[_0xa35d('0x6f')]=function(_0x569ebf,_0x3d208d,_0x49b101,_0x1018c2){return tilde[_0xa35d('0x43')](_0x569ebf,_0x3d208d,_0x49b101,_0x1018c2)[_0xa35d('0x29')](function(_0x4437ab){try{fs[_0xa35d('0x1b')](_0x569ebf);}catch(_0x29387a){logger[_0xa35d('0x12')](_0x29387a);}logger[_0xa35d('0x18')](_0xa35d('0x70'),_0x4437ab[_0xa35d('0x47')]);logger[_0xa35d('0x18')](_0xa35d('0x71'),_0x4437ab[_0xa35d('0x4a')]);return _0x4437ab;});};exports['awsPolly']=function(_0x558d01,_0x3d8468,_0x45673a,_0x45ca08,_0x4a70ad,_0x366995){var _0x1d6937=path[_0xa35d('0x33')](__dirname,_0xa35d('0x25'),rs[_0xa35d('0x26')](0x4)+_0xa35d('0x34'));var _0x48b1cb;return aws[_0xa35d('0x72')](_0x558d01,_0x3d8468,_0x45673a,_0x45ca08,_0x4a70ad,_0x366995,_0x1d6937)[_0xa35d('0x29')](function(){_0x48b1cb=path['resolve'](__dirname,_0xa35d('0x25'),rs[_0xa35d('0x26')](0x4)+_0xa35d('0x73'));return convertFile(_0x1d6937,_0x48b1cb);})[_0xa35d('0x29')](function(){try{fs['unlink'](_0x1d6937);fs[_0xa35d('0x2a')](_0x48b1cb,'777');}catch(_0x5204b5){logger[_0xa35d('0x12')](_0x5204b5);}return _0x48b1cb[_0xa35d('0x36')]('.')[0x0];});};exports['awsLex']=function(_0x2f2b76,_0x384114,_0x12a223,_0x27a344,_0xef3c96,_0x2feb2a){return aws['lex'](_0x2f2b76,_0x384114,_0x12a223,_0x27a344,_0xef3c96,_0x2feb2a)['then'](function(_0x1c9c0c){logger['info'](JSON['stringify'](_0x1c9c0c));return _0x1c9c0c;});};exports[_0xa35d('0x74')]=function(_0x5a7399,_0x3cdefc,_0x30b58a,_0x482296){var _0x166f07=util[_0xa35d('0x75')](_0xa35d('0x76'),ISPEECH_API,_0x5a7399,encodeURIComponent(_0x3cdefc),_0x30b58a,_0x482296);var _0x41c46b=path[_0xa35d('0x33')](__dirname,_0xa35d('0x25'),rs[_0xa35d('0x26')](0x4)+_0xa35d('0x34'));var _0x2d0f8d;return downloadFile(_0x166f07,_0x41c46b)[_0xa35d('0x29')](function(){_0x2d0f8d=path[_0xa35d('0x33')](__dirname,_0xa35d('0x25'),rs[_0xa35d('0x26')](0x4)+'.wav');return convertFile(_0x41c46b,_0x2d0f8d);})[_0xa35d('0x29')](function(){try{fs[_0xa35d('0x1b')](_0x41c46b);fs[_0xa35d('0x2a')](_0x2d0f8d,_0xa35d('0x2b'));}catch(_0x29f6c9){logger[_0xa35d('0x12')](_0x29f6c9);}return _0x2d0f8d['split']('.')[0x0];});};exports['ispeechASR']=function(_0xf12d34,_0x3f41fd,_0xc949a2,_0xf20e50){var _0x2ba106=util[_0xa35d('0x75')](_0xa35d('0x77'),ISPEECH_API,_0x3f41fd,_0xc949a2,base64Encode(_0xf12d34),_0xf20e50?util[_0xa35d('0x75')](_0xa35d('0x78'),encodeURIComponent(_0xf20e50)):'freeform=3');return uploadFile(_0x2ba106)[_0xa35d('0x29')](function(_0x28ec11){return querystring[_0xa35d('0xa')](_0x28ec11);});};exports['sestekNDA']=function(_0x5b5657,_0x52aaf0){return sestek[_0xa35d('0x79')](_0x5b5657,_0x52aaf0)[_0xa35d('0x29')](function(_0x26bcb5){logger[_0xa35d('0x18')](JSON[_0xa35d('0x51')](_0x26bcb5));var _0x16ab68={'speech':_0x26bcb5['text'],'action':_0x26bcb5['channelData']?_0x26bcb5[_0xa35d('0x7a')]['CustomAction']:undefined,'actiondata':_0x26bcb5[_0xa35d('0x7a')]?_0x26bcb5[_0xa35d('0x7a')][_0xa35d('0x7b')]:undefined};if(_0x26bcb5[_0xa35d('0x7a')]&&_0x26bcb5[_0xa35d('0x7a')]['AudioFromTts']){return base64Decode(_0x26bcb5[_0xa35d('0x7a')]['AudioFromTts'][_0xa35d('0x7c')],path[_0xa35d('0x33')](__dirname,_0xa35d('0x25'),rs['generate'](0x4)+_0xa35d('0x73')))[_0xa35d('0x29')](function(_0x3f9dce){_0x16ab68[_0xa35d('0x7d')]=_0x3f9dce;return _0x16ab68;});}return _0x16ab68;});};exports[_0xa35d('0x7e')]=function(){return __dirname;};
\ No newline at end of file
+var _0xd523=['googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','generate','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','bluebird','dialogflow','https','path','querystring','request-promise','randomstring','sox','url','parse','util','./aws','./google','./tilde','agi','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','close','download\x20error','pipe','end','host','get','statusMessage','data','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','.wav','base64','then','unlink','chmodSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','POST','.mp3','from','writeFile','777','googleCloudTTS\x20path','split'];(function(_0x34abca,_0x33b8d4){var _0x3d3472=function(_0x5ce42f){while(--_0x5ce42f){_0x34abca['push'](_0x34abca['shift']());}};_0x3d3472(++_0x33b8d4);}(_0xd523,0xde));var _0x3d52=function(_0x4ab03a,_0xfdd18b){_0x4ab03a=_0x4ab03a-0x0;var _0x10511a=_0xd523[_0x4ab03a];return _0x10511a;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x3d52('0x0'));var dialogflow=require(_0x3d52('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x3d52('0x2'));var md5=require('md5');var path=require(_0x3d52('0x3'));var querystring=require(_0x3d52('0x4'));var rp=require(_0x3d52('0x5'));var rs=require(_0x3d52('0x6'));var sox=require(_0x3d52('0x7'));var tts=require('google-tts-api');var urlParse=require(_0x3d52('0x8'))[_0x3d52('0x9')];var util=require(_0x3d52('0xa'));var aws=require(_0x3d52('0xb'));var google=require(_0x3d52('0xc'));var sestek=require('./sestek');var tilde=require(_0x3d52('0xd'));var logger=require('../../../config/logger')(_0x3d52('0xe'));var ISPEECH_API=_0x3d52('0xf');function downloadFile(_0x54cd5e,_0x5d9c5e){return new BPromise(function(_0x28c129,_0xd74728){var _0x441ae2=urlParse(_0x54cd5e);var _0x8dbb1e=_0x441ae2[_0x3d52('0x10')]===_0x3d52('0x11')?https:http;var _0x4755ea={'host':_0x441ae2['host'],'path':_0x441ae2[_0x3d52('0x3')],'headers':{'user-agent':_0x3d52('0x12')}};_0x8dbb1e['get'](_0x4755ea,function(_0x2029db){if(_0x2029db[_0x3d52('0x13')]!==0xc8){logger[_0x3d52('0x14')](_0x3d52('0x15')+_0x54cd5e+_0x3d52('0x16')+_0x2029db['statusCode']+'\x20('+_0x2029db['statusMessage']+')');_0xd74728(new Error(_0x3d52('0x15')+_0x54cd5e+_0x3d52('0x16')+_0x2029db[_0x3d52('0x13')]+'\x20('+_0x2029db['statusMessage']+')'));return;}var _0x4153f4=fs[_0x3d52('0x17')](_0x5d9c5e);_0x4153f4['on'](_0x3d52('0x18'),function(){logger[_0x3d52('0x19')]('finish\x20download\x20file');_0x4153f4[_0x3d52('0x1a')](_0x28c129);});_0x4153f4['on'](_0x3d52('0x14'),function(_0x21c57b){fs['unlink'](_0x5d9c5e);logger[_0x3d52('0x14')](_0x3d52('0x1b'),_0x21c57b);_0xd74728(_0x21c57b);});_0x2029db[_0x3d52('0x1c')](_0x4153f4);})['on'](_0x3d52('0x14'),function(_0x4217df){logger[_0x3d52('0x14')](_0x4217df);_0xd74728(_0x4217df);})[_0x3d52('0x1d')]();});}function uploadFile(_0x7f9791){return new BPromise(function(_0x5463ec,_0x487e5f){var _0x4a8f8c=urlParse(_0x7f9791);var _0x1e5857=_0x4a8f8c[_0x3d52('0x10')]==='https:'?https:http;var _0x2c05c5={'host':_0x4a8f8c[_0x3d52('0x1e')],'path':_0x4a8f8c[_0x3d52('0x3')],'headers':{'user-agent':_0x3d52('0x12')}};_0x1e5857[_0x3d52('0x1f')](_0x2c05c5,function(_0x3cdc01){if(_0x3cdc01[_0x3d52('0x13')]!==0xc8){_0x487e5f(new Error('request\x20to\x20'+_0x7f9791+_0x3d52('0x16')+_0x3cdc01[_0x3d52('0x13')]+'\x20('+_0x3cdc01[_0x3d52('0x20')]+')'));return;}var _0x12b74f='';_0x3cdc01['on'](_0x3d52('0x21'),function(_0x74aaa){_0x12b74f+=_0x74aaa;});_0x3cdc01['on'](_0x3d52('0x1d'),function(){_0x5463ec(_0x12b74f);});})['on']('error',function(_0xd053f6){_0x487e5f(_0xd053f6);})[_0x3d52('0x1d')]();});}function convertFile(_0x5b4216,_0x1cba68){return new BPromise(function(_0x25b62f,_0x2d751a){var _0x1cbdad=sox['transcode'](_0x5b4216,_0x1cba68,{'sampleRate':0x1f40,'format':_0x3d52('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1cbdad['on'](_0x3d52('0x14'),function(_0x2c5632){logger[_0x3d52('0x14')](_0x3d52('0x23'),_0x2c5632);_0x2d751a(_0x2c5632);});_0x1cbdad['on'](_0x3d52('0x1d'),function(){logger[_0x3d52('0x19')](_0x3d52('0x24'));_0x25b62f();});_0x1cbdad[_0x3d52('0x25')]();});}function base64Decode(_0x16d44f,_0x320017){var _0x588713=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs['generate'](0x4)+_0x3d52('0x28'));fs['writeFileSync'](_0x588713,_0x16d44f,_0x3d52('0x29'));return convertFile(_0x588713,_0x320017)[_0x3d52('0x2a')](function(){try{fs[_0x3d52('0x2b')](_0x588713);fs[_0x3d52('0x2c')](_0x320017,'777');}catch(_0x3e071f){logger[_0x3d52('0x14')](_0x3e071f);}return _0x320017['split']('.')[0x0];});}function base64Encode(_0x50bb9a){var _0x4958a3=fs['readFileSync'](_0x50bb9a);return new Buffer(_0x4958a3)['toString'](_0x3d52('0x29'));}exports[_0x3d52('0x2d')]=function(_0xa335c7,_0x5e3c92,_0x56252f,_0x22a7d1,_0x37de2a,_0x4d4e91){var _0x2c9e59,_0x56c5ca;var _0x34e8ec=_0x3d52('0x2e');var _0x516419=_0x3d52('0x2f')+_0xa335c7;var _0x2c205f={};if(_0x5e3c92==='ssml'){_0x2c205f['input']={'ssml':_0x56252f};}else{_0x2c205f[_0x3d52('0x30')]={'text':_0x56252f};};_0x2c205f[_0x3d52('0x31')]={'languageCode':_0x22a7d1,'ssmlGender':_0x37de2a};_0x2c205f[_0x3d52('0x32')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x3aeb8d={'url':_0x34e8ec+'text:synthesize'+_0x516419,'method':_0x3d52('0x33'),'json':!![],'body':_0x2c205f};return rp(_0x3aeb8d)[_0x3d52('0x2a')](function(_0x5a04e1){return new BPromise(function(_0x5e0712,_0x4460c6){_0x2c9e59=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x3d52('0x34'));var _0x115307=Buffer[_0x3d52('0x35')](_0x5a04e1['audioContent'],_0x3d52('0x29'));return fs[_0x3d52('0x36')](_0x2c9e59,_0x115307,function(_0x108fa2){_0x4460c6(_0x108fa2);},function(_0x4c1037){fs[_0x3d52('0x2c')](_0x2c9e59,_0x3d52('0x37'));_0x5e0712(_0x4c1037);});});})[_0x3d52('0x2a')](function(_0x508a05){_0x56c5ca=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs['generate'](0x4)+_0x3d52('0x28'));return convertFile(_0x2c9e59,_0x56c5ca);})[_0x3d52('0x2a')](function(){try{fs[_0x3d52('0x2b')](_0x2c9e59);fs[_0x3d52('0x2c')](_0x56c5ca,_0x3d52('0x37'));}catch(_0x3f447f){logger[_0x3d52('0x14')](_0x3f447f);}logger[_0x3d52('0x19')](_0x3d52('0x38'),_0x56c5ca[_0x3d52('0x39')]('.')[0x0]);return _0x56c5ca[_0x3d52('0x39')]('.')[0x0];});};exports[_0x3d52('0x3a')]=function(_0x580113,_0x8d1d3b){var _0x467db4=_0x3d52('0x3b');var _0xfac755,_0x1e39ed;var _0x41f63a;var _0x220b74={'encoding':'utf8','method':_0x3d52('0x33'),'timeout':0x2710,'url':_0x467db4,'headers':{'Content-Type':_0x3d52('0x3c')},'body':_0x3d52('0x3d')+encodeURIComponent(JSON[_0x3d52('0x3e')]([[[_0x3d52('0x3f'),JSON[_0x3d52('0x3e')]([_0x580113,_0x8d1d3b||'en',![],_0x3d52('0x40')]),null,_0x3d52('0x41')]]]))};return rp(_0x220b74)['then'](function(_0x137f0f){try{_0x41f63a=eval(_0x137f0f[_0x3d52('0x42')](0x5))[0x0][0x2];}catch(_0x10f104){throw new Error(_0x3d52('0x43')+_0x137f0f['data']);}if(!_0x41f63a){if(_0x580113['length']>0xc8){throw new Error(_0x3d52('0x44'));}else{throw new Error('lang\x20\x22'+_0x8d1d3b+_0x3d52('0x45'));}}try{_0x41f63a=eval(_0x41f63a)[0x0];}catch(_0x27f030){throw new Error(_0x3d52('0x43')+res[_0x3d52('0x21')]);}const _0x22025c=_0x41f63a;_0xfac755=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs['generate'](0x4)+_0x3d52('0x34'));fs['writeFileSync'](_0xfac755,_0x41f63a,{'encoding':_0x3d52('0x29')});_0x1e39ed=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs[_0x3d52('0x46')](0x4)+'.wav');return convertFile(_0xfac755,_0x1e39ed);})[_0x3d52('0x2a')](function(){try{fs[_0x3d52('0x2b')](_0xfac755);fs[_0x3d52('0x2c')](_0x1e39ed,_0x3d52('0x37'));}catch(_0x9dd2f3){logger[_0x3d52('0x14')](_0x9dd2f3);}logger[_0x3d52('0x19')](_0x3d52('0x47'),_0x1e39ed[_0x3d52('0x39')]('.')[0x0]);return _0x1e39ed[_0x3d52('0x39')]('.')[0x0];});};exports[_0x3d52('0x48')]=function(_0x56c41e,_0x106c38,_0x28ae7e){return google[_0x3d52('0x49')](_0x56c41e,_0x106c38,_0x28ae7e)[_0x3d52('0x2a')](function(_0x4d75f9){logger['info'](_0x4d75f9[_0x3d52('0x4a')]);return rp(_0x4d75f9);})['then'](function(_0x29fa0e){var _0x375358='';var _0x37ca78=0x0;try{fs[_0x3d52('0x2b')](_0x56c41e);}catch(_0x128188){logger[_0x3d52('0x14')](_0x128188);}if(_0x29fa0e&&_0x29fa0e[_0x3d52('0x4b')]){_0x375358=_0x29fa0e['results'][_0x3d52('0x4c')](function(_0x2a2873){return _0x2a2873&&_0x2a2873[_0x3d52('0x4d')][0x0]&&_0x2a2873[_0x3d52('0x4d')][0x0][_0x3d52('0x4e')]?_0x2a2873[_0x3d52('0x4d')][0x0]['transcript']:'';})['join']('\x0a');_0x37ca78=_0x29fa0e['results']['map'](function(_0x46b4ac){return _0x46b4ac&&_0x46b4ac[_0x3d52('0x4d')][0x0]&&_0x46b4ac[_0x3d52('0x4d')][0x0][_0x3d52('0x4f')]?_0x46b4ac[_0x3d52('0x4d')][0x0][_0x3d52('0x4f')]:0x0;})[_0x3d52('0x50')]('\x0a');}logger[_0x3d52('0x19')](_0x3d52('0x51'),_0x375358);logger[_0x3d52('0x19')](_0x3d52('0x52'),_0x37ca78);return{'transcript':_0x375358,'confidence':_0x37ca78};})[_0x3d52('0x53')](function(_0x2b34a6){logger[_0x3d52('0x14')](_0x3d52('0x54'),_0x2b34a6[_0x3d52('0x13')],_0x2b34a6[_0x3d52('0x55')],_0x2b34a6[_0x3d52('0x56')]);});};exports[_0x3d52('0x57')]=function(_0x6519c1,_0x5272a4,_0x8c9d48,_0x533e98){var _0x132d7c=apiai(_0x5272a4,{'language':_0x533e98||'en'});return _0x132d7c[_0x3d52('0x58')](_0x8c9d48,{'sessionId':md5(_0x6519c1)})[_0x3d52('0x2a')](function(_0x214d46){logger[_0x3d52('0x19')](JSON[_0x3d52('0x3e')](_0x214d46));return{'source':_0x214d46[_0x3d52('0x59')][_0x3d52('0x5a')],'resolvedQuery':_0x214d46[_0x3d52('0x59')][_0x3d52('0x5b')],'action':_0x214d46[_0x3d52('0x59')][_0x3d52('0x5c')],'actionIncomplete':_0x214d46[_0x3d52('0x59')][_0x3d52('0x5d')],'speech':_0x214d46['result'][_0x3d52('0x5e')][_0x3d52('0x5f')],'score':_0x214d46[_0x3d52('0x59')][_0x3d52('0x60')],'statusCode':_0x214d46[_0x3d52('0x61')][_0x3d52('0x62')],'endConversation':_0x214d46[_0x3d52('0x59')][_0x3d52('0x63')][_0x3d52('0x64')]||![],'isFallbackIntent':_0x214d46[_0x3d52('0x59')][_0x3d52('0x63')][_0x3d52('0x65')]};});};exports['googleDialogflowV2']=function(_0x363d7d,_0x454c04,_0x3e98e9,_0x43183d,_0x505e4f,_0x19b348){var _0x1a526d=_0x43183d[_0x3d52('0x66')](/\\n/g,'\x0a');var _0x593f38={'credentials':{'private_key':_0x1a526d,'client_email':_0x3e98e9}};var _0x54a1b5=new dialogflow[(_0x3d52('0x67'))](_0x593f38);var _0x3fa21e=_0x54a1b5[_0x3d52('0x68')](_0x454c04,md5(_0x363d7d));var _0x4151ee={'session':_0x3fa21e,'queryInput':{'text':{'text':_0x505e4f,'languageCode':_0x19b348}}};return _0x54a1b5[_0x3d52('0x69')](_0x4151ee)[_0x3d52('0x2a')](function(_0x27a8bf){if(_0x27a8bf&&_0x27a8bf[_0x3d52('0x6a')]){logger['info'](_0x3d52('0x6b'),JSON['stringify'](_0x27a8bf));var _0x26659d=_0x27a8bf[0x0];if(_0x26659d){var _0x36f23a={'action':_0x26659d[_0x3d52('0x6c')][_0x3d52('0x5c')],'allRequiredParamsPresent':_0x26659d[_0x3d52('0x6c')][_0x3d52('0x6d')],'endConversation':_0x26659d[_0x3d52('0x6c')]['diagnosticInfo']&&_0x26659d[_0x3d52('0x6c')][_0x3d52('0x6e')][_0x3d52('0x6f')]?_0x26659d[_0x3d52('0x6c')][_0x3d52('0x6e')][_0x3d52('0x6f')][_0x3d52('0x70')]['boolValue']:![],'fulfillmentText':_0x26659d[_0x3d52('0x6c')][_0x3d52('0x71')],'intentName':_0x26659d[_0x3d52('0x6c')][_0x3d52('0x72')][_0x3d52('0x55')],'intentDisplayName':_0x26659d[_0x3d52('0x6c')][_0x3d52('0x72')][_0x3d52('0x73')],'isFallbackIntent':_0x26659d[_0x3d52('0x6c')][_0x3d52('0x72')][_0x3d52('0x74')],'languageCode':_0x26659d['queryResult'][_0x3d52('0x75')],'queryText':_0x26659d[_0x3d52('0x6c')][_0x3d52('0x76')],'responseId':_0x26659d[_0x3d52('0x77')],'score':_0x26659d[_0x3d52('0x6c')]['intentDetectionConfidence'],'speech':_0x26659d[_0x3d52('0x6c')]['fulfillmentText'],'providerResponse':JSON[_0x3d52('0x3e')](_0x27a8bf)};return _0x36f23a;}}});};exports[_0x3d52('0x78')]=function(_0x1f53ab,_0x4e51e9,_0x327c74,_0x6189a0){return tilde[_0x3d52('0x49')](_0x1f53ab,_0x4e51e9,_0x327c74,_0x6189a0)[_0x3d52('0x2a')](function(_0x504017){try{fs[_0x3d52('0x2b')](_0x1f53ab);}catch(_0x536e03){logger[_0x3d52('0x14')](_0x536e03);}logger[_0x3d52('0x19')](_0x3d52('0x79'),_0x504017[_0x3d52('0x4e')]);logger[_0x3d52('0x19')](_0x3d52('0x7a'),_0x504017[_0x3d52('0x4f')]);return _0x504017;});};exports[_0x3d52('0x7b')]=function(_0x3ec923,_0x4fde14,_0x290c4c,_0x2efd15,_0x51efe1,_0x4b7ced){var _0x2f2e38=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs['generate'](0x4)+_0x3d52('0x34'));var _0x236b28;return aws[_0x3d52('0x7c')](_0x3ec923,_0x4fde14,_0x290c4c,_0x2efd15,_0x51efe1,_0x4b7ced,_0x2f2e38)[_0x3d52('0x2a')](function(){_0x236b28=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs[_0x3d52('0x46')](0x4)+_0x3d52('0x28'));return convertFile(_0x2f2e38,_0x236b28);})['then'](function(){try{fs[_0x3d52('0x2b')](_0x2f2e38);fs['chmodSync'](_0x236b28,'777');}catch(_0x96ecf0){logger[_0x3d52('0x14')](_0x96ecf0);}return _0x236b28[_0x3d52('0x39')]('.')[0x0];});};exports['awsLex']=function(_0x55dea6,_0x15f9cd,_0x5d042e,_0x1a6702,_0x5db259,_0x7dc3ab){return aws[_0x3d52('0x7d')](_0x55dea6,_0x15f9cd,_0x5d042e,_0x1a6702,_0x5db259,_0x7dc3ab)[_0x3d52('0x2a')](function(_0x209472){logger[_0x3d52('0x19')](JSON[_0x3d52('0x3e')](_0x209472));return _0x209472;});};exports[_0x3d52('0x7e')]=function(_0x17425c,_0x3dd02a,_0x4a2e69,_0x75cbe4){var _0x14c5ea=util[_0x3d52('0x7f')](_0x3d52('0x80'),ISPEECH_API,_0x17425c,encodeURIComponent(_0x3dd02a),_0x4a2e69,_0x75cbe4);var _0x89636d=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs[_0x3d52('0x46')](0x4)+'.mp3');var _0x317eb3;return downloadFile(_0x14c5ea,_0x89636d)[_0x3d52('0x2a')](function(){_0x317eb3=path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs[_0x3d52('0x46')](0x4)+'.wav');return convertFile(_0x89636d,_0x317eb3);})['then'](function(){try{fs[_0x3d52('0x2b')](_0x89636d);fs[_0x3d52('0x2c')](_0x317eb3,'777');}catch(_0x1d0e35){logger[_0x3d52('0x14')](_0x1d0e35);}return _0x317eb3[_0x3d52('0x39')]('.')[0x0];});};exports[_0x3d52('0x81')]=function(_0x43ace1,_0x2d9ed9,_0x441c52,_0x2a0368){var _0xb19afb=util[_0x3d52('0x7f')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x2d9ed9,_0x441c52,base64Encode(_0x43ace1),_0x2a0368?util[_0x3d52('0x7f')](_0x3d52('0x82'),encodeURIComponent(_0x2a0368)):_0x3d52('0x83'));return uploadFile(_0xb19afb)[_0x3d52('0x2a')](function(_0x30d77e){return querystring[_0x3d52('0x9')](_0x30d77e);});};exports[_0x3d52('0x84')]=function(_0x5748ce,_0x2716df){return sestek[_0x3d52('0x85')](_0x5748ce,_0x2716df)['then'](function(_0x162ca4){logger[_0x3d52('0x19')](JSON[_0x3d52('0x3e')](_0x162ca4));var _0x4153cf={'speech':_0x162ca4[_0x3d52('0x86')],'action':_0x162ca4[_0x3d52('0x87')]?_0x162ca4[_0x3d52('0x87')][_0x3d52('0x88')]:undefined,'actiondata':_0x162ca4[_0x3d52('0x87')]?_0x162ca4[_0x3d52('0x87')][_0x3d52('0x89')]:undefined};if(_0x162ca4[_0x3d52('0x87')]&&_0x162ca4['channelData'][_0x3d52('0x8a')]){return base64Decode(_0x162ca4['channelData']['AudioFromTts']['Data'],path[_0x3d52('0x26')](__dirname,_0x3d52('0x27'),rs['generate'](0x4)+_0x3d52('0x28')))[_0x3d52('0x2a')](function(_0x4e4122){_0x4153cf[_0x3d52('0x8b')]=_0x4e4122;return _0x4153cf;});}return _0x4153cf;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 24d8bf7..ea5baf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf822=['exports'];(function(_0x262e16,_0x24f29c){var _0x5e2c17=function(_0x2dbe16){while(--_0x2dbe16){_0x262e16['push'](_0x262e16['shift']());}};_0x5e2c17(++_0x24f29c);}(_0xf822,0xa1));var _0x2f82=function(_0x158ae4,_0x2fa346){_0x158ae4=_0x158ae4-0x0;var _0x4f6763=_0xf822[_0x158ae4];return _0x4f6763;};var nda=require('./nda');module[_0x2f82('0x0')]={'nda':nda};
\ No newline at end of file
+var _0x2156=['exports','./nda'];(function(_0xeeea8,_0x78a467){var _0x45d53f=function(_0x201c76){while(--_0x201c76){_0xeeea8['push'](_0xeeea8['shift']());}};_0x45d53f(++_0x78a467);}(_0x2156,0x77));var _0x6215=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x2156[_0x1d1779];return _0x2377e9;};var nda=require(_0x6215('0x0'));module[_0x6215('0x1')]={'nda':nda};
\ No newline at end of file
index 1ad77b9..bf387dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd07=['callerid','calleridname','dnid','extension','text','Bearer\x20','body','channelData','ProjectName','project','ndagenerate_audio','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','stringify','request-promise','url','POST','/token','password','username','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid'];(function(_0x4c9b8c,_0x1b7537){var _0x2462dd=function(_0x55a4a1){while(--_0x55a4a1){_0x4c9b8c['push'](_0x4c9b8c['shift']());}};_0x2462dd(++_0x1b7537);}(_0xfd07,0x104));var _0x7fd0=function(_0x5a79e2,_0x319b1a){_0x5a79e2=_0x5a79e2-0x0;var _0x266c45=_0xfd07[_0x5a79e2];return _0x266c45;};'use strict';var rp=require(_0x7fd0('0x0'));var url=require(_0x7fd0('0x1'));var logger=require('../../../../../config/logger')('agi');module['exports']=function(_0x50895a,_0x1eaaf3){var _0x38d42b={'method':_0x7fd0('0x2'),'uri':url['resolve'](_0x1eaaf3['ndauth_url'],_0x7fd0('0x3')),'form':{'grant_type':_0x7fd0('0x4'),'username':_0x1eaaf3[_0x7fd0('0x5')],'password':_0x1eaaf3[_0x7fd0('0x4')]},'json':!![]};return rp(_0x38d42b)['then'](function(_0x288561){var _0x3407b6={'method':_0x7fd0('0x2'),'uri':url['resolve'](_0x1eaaf3['ndassistant_url'],_0x7fd0('0x6')),'body':{'type':_0x1eaaf3['ndaactivity_type']||_0x7fd0('0x7'),'channelId':_0x7fd0('0x8'),'conversation':{'id':_0x50895a[_0x7fd0('0x9')]},'from':{'id':_0x50895a[_0x7fd0('0xa')],'name':_0x50895a[_0x7fd0('0xb')]},'recipient':{'id':_0x50895a[_0x7fd0('0xc')],'name':_0x50895a[_0x7fd0('0xd')]},'text':_0x1eaaf3[_0x7fd0('0xe')],'channelData':{}},'headers':{'Authorization':_0x7fd0('0xf')+_0x288561['access_token']},'json':!![]};if(_0x1eaaf3['project']){_0x3407b6[_0x7fd0('0x10')][_0x7fd0('0x11')][_0x7fd0('0x12')]=_0x1eaaf3[_0x7fd0('0x13')];}if(_0x1eaaf3[_0x7fd0('0x14')]=='1'){_0x3407b6[_0x7fd0('0x10')][_0x7fd0('0x11')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x7fd0('0x15')};}if(_0x1eaaf3[_0x7fd0('0x16')]){_0x3407b6[_0x7fd0('0x10')][_0x7fd0('0x11')][_0x7fd0('0x17')]=_0x1eaaf3[_0x7fd0('0x16')];if(_0x1eaaf3[_0x7fd0('0x18')]){_0x3407b6[_0x7fd0('0x10')]['channelData'][_0x7fd0('0x19')]=_0x1eaaf3[_0x7fd0('0x18')];}}logger['info'](JSON[_0x7fd0('0x1a')](_0x3407b6));return rp(_0x3407b6);});};
\ No newline at end of file
+var _0xaf80=['dnid','extension','text','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','info','request-promise','url','../../../../../config/logger','agi','POST','resolve','ndauth_url','/token','password','then','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','callerid','calleridname'];(function(_0x58a4fe,_0x11d439){var _0x697de2=function(_0xe38c14){while(--_0xe38c14){_0x58a4fe['push'](_0x58a4fe['shift']());}};_0x697de2(++_0x11d439);}(_0xaf80,0x1ef));var _0x0af8=function(_0x3709c2,_0x57758e){_0x3709c2=_0x3709c2-0x0;var _0x22b958=_0xaf80[_0x3709c2];return _0x22b958;};'use strict';var rp=require(_0x0af8('0x0'));var url=require(_0x0af8('0x1'));var logger=require(_0x0af8('0x2'))(_0x0af8('0x3'));module['exports']=function(_0x5bfb4e,_0x5bcd97){var _0x431bc8={'method':_0x0af8('0x4'),'uri':url[_0x0af8('0x5')](_0x5bcd97[_0x0af8('0x6')],_0x0af8('0x7')),'form':{'grant_type':_0x0af8('0x8'),'username':_0x5bcd97['username'],'password':_0x5bcd97['password']},'json':!![]};return rp(_0x431bc8)[_0x0af8('0x9')](function(_0x538c1c){var _0x207a9b={'method':_0x0af8('0x4'),'uri':url[_0x0af8('0x5')](_0x5bcd97['ndassistant_url'],_0x0af8('0xa')),'body':{'type':_0x5bcd97[_0x0af8('0xb')]||_0x0af8('0xc'),'channelId':'Nda','conversation':{'id':_0x5bfb4e['uniqueid']},'from':{'id':_0x5bfb4e[_0x0af8('0xd')],'name':_0x5bfb4e[_0x0af8('0xe')]},'recipient':{'id':_0x5bfb4e[_0x0af8('0xf')],'name':_0x5bfb4e[_0x0af8('0x10')]},'text':_0x5bcd97[_0x0af8('0x11')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x538c1c[_0x0af8('0x12')]},'json':!![]};if(_0x5bcd97[_0x0af8('0x13')]){_0x207a9b[_0x0af8('0x14')][_0x0af8('0x15')][_0x0af8('0x16')]=_0x5bcd97[_0x0af8('0x13')];}if(_0x5bcd97[_0x0af8('0x17')]=='1'){_0x207a9b['body']['channelData'][_0x0af8('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x0af8('0x19')};}if(_0x5bcd97[_0x0af8('0x1a')]){_0x207a9b[_0x0af8('0x14')][_0x0af8('0x15')][_0x0af8('0x1b')]=_0x5bcd97[_0x0af8('0x1a')];if(_0x5bcd97[_0x0af8('0x1c')]){_0x207a9b['body']['channelData']['CustomActionData']=_0x5bcd97[_0x0af8('0x1c')];}}logger[_0x0af8('0x1d')](JSON['stringify'](_0x207a9b));return rp(_0x207a9b);});};
\ No newline at end of file
index aa2e1af..5499e71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc754=['exports','./lib/api'];(function(_0x29eafb,_0x5b3960){var _0x3c0307=function(_0x38756c){while(--_0x38756c){_0x29eafb['push'](_0x29eafb['shift']());}};_0x3c0307(++_0x5b3960);}(_0xc754,0xc3));var _0x4c75=function(_0x4b9c52,_0x5c0110){_0x4b9c52=_0x4b9c52-0x0;var _0x488f75=_0xc754[_0x4b9c52];return _0x488f75;};'use strict';var asr=require(_0x4c75('0x0'));module[_0x4c75('0x1')]=function(_0x45c954,_0x11649a,_0x36d11d,_0x34b4b6){return asr(_0x45c954,_0x11649a,_0x36d11d,_0x34b4b6);};
\ No newline at end of file
+var _0x66be=['./lib/api'];(function(_0x713101,_0x43babe){var _0x1949f2=function(_0x1193e1){while(--_0x1193e1){_0x713101['push'](_0x713101['shift']());}};_0x1949f2(++_0x43babe);}(_0x66be,0x117));var _0xe66b=function(_0xa7ad0,_0x275917){_0xa7ad0=_0xa7ad0-0x0;var _0x21638e=_0x66be[_0xa7ad0];return _0x21638e;};'use strict';var asr=require(_0xe66b('0x0'));module['exports']=function(_0x550a0b,_0x402492,_0x51fa3f,_0x4bbab9){return asr(_0x550a0b,_0x402492,_0x51fa3f,_0x4bbab9);};
\ No newline at end of file
index 2d8146b..dff28ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','digest','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','close','EOS','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','Success.','info','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','Close\x20Tilde\x20ASR\x20socket','error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','bluebird','lodash','moment','crypto','../../../../../../config/logger','Tilde\x20URI'];(function(_0x4e6a25,_0x8d3a0d){var _0x830f50=function(_0xb7af4d){while(--_0xb7af4d){_0x4e6a25['push'](_0x4e6a25['shift']());}};_0x830f50(++_0x8d3a0d);}(_0x9879,0x6c));var _0x9987=function(_0x454a62,_0x14c5a2){_0x454a62=_0x454a62-0x0;var _0x18166f=_0x9879[_0x454a62];return _0x18166f;};'use strict';var BPromise=require(_0x9987('0x0'));var _=require(_0x9987('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x9987('0x2'));var crypto=require(_0x9987('0x3'));var logger=require(_0x9987('0x4'))('agi');module['exports']=function(_0x5dfec0,_0x24af76,_0xcbefd,_0x172080){return new BPromise(function(_0xab682a,_0x2bdeec){logger['info'](_0x9987('0x5'),_0x172080||_0x9987('0x6'));var _0x439fc6=new WebSocket(_0x172080||_0x9987('0x6'),{'perMessageDeflate':![]});var _0x5ea500='';var _0x5a6001='0';var _0x2101e2='1';var _0x11a212=_0x9987('0x7');function _0x3883e2(_0x4ac35f){var _0x47a721=crypto[_0x9987('0x8')](_0x9987('0x9'));_0x47a721['update'](_0x4ac35f);return _0x47a721[_0x9987('0xa')]('hex');}function _0x1208d1(){try{logger['info'](_0x9987('0xb'));var _0x2b096b=moment()[_0x9987('0xc')]();var _0x563de7=_0x3883e2(_0x2b096b+_0x24af76+_0xcbefd);_0x439fc6['send'](JSON[_0x9987('0xd')]({'appID':_0x24af76,'timestamp':_0x2b096b,'appKey':_0x563de7}));var _0x26d792=fs[_0x9987('0xe')](_0x5dfec0);_0x26d792['on'](_0x9987('0xf'),function(_0x5e566f){_0x439fc6[_0x9987('0x10')](_0x5e566f);});_0x26d792['on'](_0x9987('0x11'),function(){_0x439fc6[_0x9987('0x10')](_0x9987('0x12'));});}catch(_0x5c9f9d){logger['error'](_0x9987('0x13'),JSON[_0x9987('0xd')](_0x5c9f9d));_0x439fc6[_0x9987('0x14')]();}}function _0x3022db(_0x4fe182){try{if(_0x4fe182){var _0x1788b9=JSON[_0x9987('0x15')](_0x4fe182);switch(_0x1788b9[_0x9987('0x16')]){case 0x0:if(_0x1788b9[_0x9987('0x17')]){if(_0x1788b9[_0x9987('0x17')][_0x9987('0x18')]){logger['info'](_0x9987('0x19'),JSON[_0x9987('0xd')](_0x1788b9[_0x9987('0x17')]['hypotheses']));_0x5ea500=_0x1788b9['result'][_0x9987('0x1a')][0x0]['transcript'];_0x5a6001=_0x1788b9[_0x9987('0x17')]['hypotheses'][0x0][_0x9987('0x1b')];_0x2101e2='0';_0x11a212=_0x9987('0x1c');_0x439fc6[_0x9987('0x14')]();}}break;case 0x1:logger['info']('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x2101e2='1';_0x11a212=_0x9987('0x7');break;case 0x2:logger[_0x9987('0x1d')](_0x9987('0x1e'));_0x2101e2='2';_0x11a212=_0x9987('0x1e');break;case 0x9:logger[_0x9987('0x1d')](_0x9987('0x1f'));_0x2101e2='9';_0x11a212=_0x9987('0x1f');break;case 0xa:logger[_0x9987('0x1d')](_0x9987('0x20'));_0x2101e2='10';_0x11a212=_0x9987('0x20');break;case 0xb:logger[_0x9987('0x1d')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x2101e2='11';_0x11a212='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x2df4ed){logger['error']('Tilde\x20ASR\x20parse\x20error',JSON[_0x9987('0xd')](_0x2df4ed));_0x439fc6[_0x9987('0x14')]();}}function _0xd0a299(){logger[_0x9987('0x1d')](_0x9987('0x21'));_0xab682a({'transcript':_0x5ea500,'confidence':_0x5a6001,'status':_0x2101e2,'status_message':_0x11a212});}function _0x3e9dc5(_0xb86e01){logger[_0x9987('0x22')](_0x9987('0x23'));if(!_[_0x9987('0x24')](_0xb86e01)){logger[_0x9987('0x22')](_[_0x9987('0x25')](_0xb86e01)?JSON[_0x9987('0xd')](_0xb86e01):_0xb86e01);}}_0x439fc6['on']('open',_0x1208d1);_0x439fc6['on']('message',_0x3022db);_0x439fc6['on'](_0x9987('0x11'),_0xd0a299);_0x439fc6['on'](_0x9987('0x22'),_0x3e9dc5);});};
\ No newline at end of file
+var _0x2346=['send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','info','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','../../../../../../config/logger','agi','exports','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','hex','Open\x20Tilde\x20ASR\x20socket','unix'];(function(_0x439ec5,_0x184140){var _0xc81205=function(_0x13331a){while(--_0x13331a){_0x439ec5['push'](_0x439ec5['shift']());}};_0xc81205(++_0x184140);}(_0x2346,0x174));var _0x6234=function(_0x59943d,_0x2e751b){_0x59943d=_0x59943d-0x0;var _0x46ace9=_0x2346[_0x59943d];return _0x46ace9;};'use strict';var BPromise=require(_0x6234('0x0'));var _=require(_0x6234('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x6234('0x2'));var crypto=require('crypto');var logger=require(_0x6234('0x3'))(_0x6234('0x4'));module[_0x6234('0x5')]=function(_0x577a26,_0x44b134,_0x23c118,_0x452e87){return new BPromise(function(_0x127f65,_0x4e4591){logger['info'](_0x6234('0x6'),_0x452e87||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x3b17a8=new WebSocket(_0x452e87||_0x6234('0x7'),{'perMessageDeflate':![]});var _0x4f108c='';var _0x272d9b='0';var _0x781f3f='1';var _0x4a4cc8=_0x6234('0x8');function _0x33853c(_0x142734){var _0x1708f0=crypto[_0x6234('0x9')](_0x6234('0xa'));_0x1708f0[_0x6234('0xb')](_0x142734);return _0x1708f0['digest'](_0x6234('0xc'));}function _0x453964(){try{logger['info'](_0x6234('0xd'));var _0x447b46=moment()[_0x6234('0xe')]();var _0x32af2f=_0x33853c(_0x447b46+_0x44b134+_0x23c118);_0x3b17a8[_0x6234('0xf')](JSON[_0x6234('0x10')]({'appID':_0x44b134,'timestamp':_0x447b46,'appKey':_0x32af2f}));var _0x113140=fs[_0x6234('0x11')](_0x577a26);_0x113140['on'](_0x6234('0x12'),function(_0x5b1049){_0x3b17a8[_0x6234('0xf')](_0x5b1049);});_0x113140['on'](_0x6234('0x13'),function(){_0x3b17a8[_0x6234('0xf')](_0x6234('0x14'));});}catch(_0x34f6ea){logger[_0x6234('0x15')](_0x6234('0x16'),JSON[_0x6234('0x10')](_0x34f6ea));_0x3b17a8[_0x6234('0x17')]();}}function _0x55f86e(_0x1ddf5f){try{if(_0x1ddf5f){var _0x11a52c=JSON[_0x6234('0x18')](_0x1ddf5f);switch(_0x11a52c[_0x6234('0x19')]){case 0x0:if(_0x11a52c[_0x6234('0x1a')]){if(_0x11a52c['result'][_0x6234('0x1b')]){logger[_0x6234('0x1c')]('Tilde\x20ASR\x20hypoteses',JSON[_0x6234('0x10')](_0x11a52c[_0x6234('0x1a')][_0x6234('0x1d')]));_0x4f108c=_0x11a52c[_0x6234('0x1a')][_0x6234('0x1d')][0x0][_0x6234('0x1e')];_0x272d9b=_0x11a52c['result'][_0x6234('0x1d')][0x0]['likelihood'];_0x781f3f='0';_0x4a4cc8=_0x6234('0x1f');_0x3b17a8['terminate']();}}break;case 0x1:logger[_0x6234('0x1c')](_0x6234('0x8'));_0x781f3f='1';_0x4a4cc8='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger['info'](_0x6234('0x20'));_0x781f3f='2';_0x4a4cc8=_0x6234('0x20');break;case 0x9:logger[_0x6234('0x1c')](_0x6234('0x21'));_0x781f3f='9';_0x4a4cc8=_0x6234('0x21');break;case 0xa:logger['info'](_0x6234('0x22'));_0x781f3f='10';_0x4a4cc8='Authentication\x20failed.';break;case 0xb:logger[_0x6234('0x1c')](_0x6234('0x23'));_0x781f3f='11';_0x4a4cc8=_0x6234('0x23');}}}catch(_0xc570a5){logger[_0x6234('0x15')](_0x6234('0x24'),JSON['stringify'](_0xc570a5));_0x3b17a8['terminate']();}}function _0x4a343f(){logger[_0x6234('0x1c')](_0x6234('0x25'));_0x127f65({'transcript':_0x4f108c,'confidence':_0x272d9b,'status':_0x781f3f,'status_message':_0x4a4cc8});}function _0xa72adb(_0x22083b){logger['error'](_0x6234('0x26'));if(!_[_0x6234('0x27')](_0x22083b)){logger[_0x6234('0x15')](_[_0x6234('0x28')](_0x22083b)?JSON[_0x6234('0x10')](_0x22083b):_0x22083b);}}_0x3b17a8['on'](_0x6234('0x29'),_0x453964);_0x3b17a8['on'](_0x6234('0x2a'),_0x55f86e);_0x3b17a8['on']('close',_0x4a343f);_0x3b17a8['on'](_0x6234('0x15'),_0xa72adb);});};
\ No newline at end of file
index a7613ea..d5b39ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84b4=['./asr','exports'];(function(_0x455893,_0x909838){var _0x3851e8=function(_0x32ac8a){while(--_0x32ac8a){_0x455893['push'](_0x455893['shift']());}};_0x3851e8(++_0x909838);}(_0x84b4,0x14c));var _0x484b=function(_0x1cbbc6,_0x15b420){_0x1cbbc6=_0x1cbbc6-0x0;var _0x5686a5=_0x84b4[_0x1cbbc6];return _0x5686a5;};var asr=require(_0x484b('0x0'));module[_0x484b('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x300e=['exports'];(function(_0x29d4b5,_0x1913e2){var _0x3fbb01=function(_0x8b0a41){while(--_0x8b0a41){_0x29d4b5['push'](_0x29d4b5['shift']());}};_0x3fbb01(++_0x1913e2);}(_0x300e,0x16a));var _0xe300=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x300e[_0x5f0089];return _0x193892;};var asr=require('./asr');module[_0xe300('0x0')]={'asr':asr};
\ No newline at end of file
index d3e7fc6..9042c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d10=['EventEmitter','./error','./channel','127.0.0.1','call','error','E_AGI_ARGUMENT_PORT','createServer','listening','emit','connection','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','close','E_AGI_SERVER_CLOSE','inherits','exports','net','events'];(function(_0x141152,_0xe3d627){var _0x61664c=function(_0x326483){while(--_0x326483){_0x141152['push'](_0x141152['shift']());}};_0x61664c(++_0xe3d627);}(_0x0d10,0xae));var _0x00d1=function(_0x4d8666,_0x2ff19d){_0x4d8666=_0x4d8666-0x0;var _0x37175b=_0x0d10[_0x4d8666];return _0x37175b;};'use strict';var util=require('util');var net=require(_0x00d1('0x0'));var EventEmitter=require(_0x00d1('0x1'))[_0x00d1('0x2')];var AGIError=require(_0x00d1('0x3'));var AGIChannel=require(_0x00d1('0x4'));var AGIServer=function(_0x4a352c,_0x3210f6,_0x1c4fad){var _0x14133f=this,_0x4a352c=_0x4a352c||0x11dd,_0x3210f6=_0x3210f6||_0x00d1('0x5'),_0x1f0fb2=null,_0x40ccde=0x0;EventEmitter[_0x00d1('0x6')](_0x14133f);function _0x4c69c3(){if(!_0x4a352c){_0x14133f['emit'](_0x00d1('0x7'),new AGIError(_0x00d1('0x8')));return![];}_0x1f0fb2=net[_0x00d1('0x9')]();_0x1f0fb2['listen'](_0x4a352c,_0x3210f6);_0x1f0fb2['on'](_0x00d1('0xa'),function(){_0x14133f[_0x00d1('0xb')](_0x00d1('0xa'));});_0x1f0fb2['on'](_0x00d1('0xc'),function(_0x12917a){_0x1f0fb2['getConnections'](function(_0x27b2d3,_0xce2d15){if(_0x27b2d3){_0x14133f[_0x00d1('0xb')](_0x00d1('0x7'),new AGIError(_0x00d1('0xd'),_0x27b2d3));}else if(_0x1c4fad&&_0x1c4fad<0x0){_0x14133f['emit']('error',new AGIError(_0x00d1('0xe')));_0x12917a[_0x00d1('0xf')]();}else if(_0x1c4fad&&_0x1c4fad>0x0&&_0x1c4fad<_0xce2d15){_0x40ccde+=0x1;_0x14133f[_0x00d1('0xb')](_0x00d1('0x7'),new AGIError(_0x00d1('0x10'),_0x40ccde));_0x12917a[_0x00d1('0xf')]();}else{var _0x25ce7e=new AGIChannel(_0x12917a);_0x25ce7e['on'](_0x00d1('0x11'),function(){_0x14133f[_0x00d1('0xb')](_0x00d1('0xc'),_0x25ce7e);});}});});_0x1f0fb2['on'](_0x00d1('0x7'),function(_0xfcdf25){_0x14133f[_0x00d1('0xb')](_0x00d1('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0xfcdf25['code']));});_0x1f0fb2['on']('close',function(){_0x14133f[_0x00d1('0xb')](_0x00d1('0x12'),new AGIError(_0x00d1('0x13')));});}process['nextTick'](function(){_0x4c69c3();});};util[_0x00d1('0x14')](AGIServer,EventEmitter);module[_0x00d1('0x15')]=function(_0x5934bc,_0x21933e,_0x24448b){return new AGIServer(_0x5934bc,_0x21933e,_0x24448b);};
\ No newline at end of file
+var _0x7171=['createServer','listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','exports','net','events','./channel','127.0.0.1','emit','error','E_AGI_ARGUMENT_PORT'];(function(_0x283127,_0x54d4d5){var _0x43da5d=function(_0x10947f){while(--_0x10947f){_0x283127['push'](_0x283127['shift']());}};_0x43da5d(++_0x54d4d5);}(_0x7171,0xcb));var _0x1717=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7171[_0x167cc1];return _0x10bc4b;};'use strict';var util=require('util');var net=require(_0x1717('0x0'));var EventEmitter=require(_0x1717('0x1'))['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x1717('0x2'));var AGIServer=function(_0x3e10f5,_0x26c90a,_0x280d2e){var _0x3df904=this,_0x3e10f5=_0x3e10f5||0x11dd,_0x26c90a=_0x26c90a||_0x1717('0x3'),_0x42b172=null,_0x24b68c=0x0;EventEmitter['call'](_0x3df904);function _0x5dfac5(){if(!_0x3e10f5){_0x3df904[_0x1717('0x4')](_0x1717('0x5'),new AGIError(_0x1717('0x6')));return![];}_0x42b172=net[_0x1717('0x7')]();_0x42b172[_0x1717('0x8')](_0x3e10f5,_0x26c90a);_0x42b172['on'](_0x1717('0x9'),function(){_0x3df904['emit'](_0x1717('0x9'));});_0x42b172['on'](_0x1717('0xa'),function(_0x3597f4){_0x42b172[_0x1717('0xb')](function(_0x173ffa,_0x4bb5ec){if(_0x173ffa){_0x3df904[_0x1717('0x4')]('error',new AGIError(_0x1717('0xc'),_0x173ffa));}else if(_0x280d2e&&_0x280d2e<0x0){_0x3df904[_0x1717('0x4')](_0x1717('0x5'),new AGIError(_0x1717('0xd')));_0x3597f4[_0x1717('0xe')]();}else if(_0x280d2e&&_0x280d2e>0x0&&_0x280d2e<_0x4bb5ec){_0x24b68c+=0x1;_0x3df904[_0x1717('0x4')](_0x1717('0x5'),new AGIError(_0x1717('0xf'),_0x24b68c));_0x3597f4[_0x1717('0xe')]();}else{var _0x27e239=new AGIChannel(_0x3597f4);_0x27e239['on'](_0x1717('0x10'),function(){_0x3df904[_0x1717('0x4')](_0x1717('0xa'),_0x27e239);});}});});_0x42b172['on']('error',function(_0x4b5126){_0x3df904['emit'](_0x1717('0x5'),new AGIError('E_AGI_SERVER_ERROR',_0x4b5126[_0x1717('0x11')]));});_0x42b172['on'](_0x1717('0x12'),function(){_0x3df904['emit'](_0x1717('0x12'),new AGIError(_0x1717('0x13')));});}process['nextTick'](function(){_0x5dfac5();});};util['inherits'](AGIServer,EventEmitter);module[_0x1717('0x14')]=function(_0x29de13,_0x2e9d80,_0x576d74){return new AGIServer(_0x29de13,_0x2e9d80,_0x576d74);};
\ No newline at end of file
index 98c5f59..3493ae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa269=['Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','subproject','no\x20subproject\x20selected','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20no\x20stored','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','util','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','./scripts','/var/opt/motion2/server/files','menu','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProject','rpc','getSquareOdbc','getSquareOdbcById','dsn','getUser','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','interval','map','format','open','Error\x20getting\x20ODBC\x20connection\x20%s','query','info','Error\x20executing\x20query\x20%s','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','channel','arg_1','callerid','createSquareRecording','context','extension','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','getPauseById','agentUnpause','agent','agentLogout','agentLogin','internal','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','timeout','includes','POST','PUT','method','body','rawBody','parse','headers','rawHeaders','computedVariables','render','stringify','statusCode','statusMessage','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_lex_region','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','clear','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','%s.%s','setVariable','split','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','sync','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','no\x20text\x20configured','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','wait','answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','keys','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20selected','no\x20user\x20found','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','toUpperCase','out','speech','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','dialogflowV2','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','DIAL','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','getData','maxdigit','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','getdigits','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','awslex','no\x20bot\x20name\x20configured','bot','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','no\x20appid\x20configured','no\x20appsecret\x20configured','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','priority','condition','true','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME\x20%s\x20%s','hangup','ispeechasr','ispeech\x20%s\x20file\x20created','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','failure','no\x20operation\x20configured','operation','forEach','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20found','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','getPause','pause_id','agentPause','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','inspect','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','subject','service','host','port','secure','auth','user','template_id','Trying\x20SendMail\x20with\x20account\x20%s','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','start'];(function(_0x4be58d,_0x36b7bb){var _0x19f0f5=function(_0x1f7473){while(--_0x1f7473){_0x4be58d['push'](_0x4be58d['shift']());}};_0x19f0f5(++_0x36b7bb);}(_0xa269,0x1ef));var _0x9a26=function(_0x4a9622,_0x5a257c){_0x4a9622=_0x4a9622-0x0;var _0x12cc09=_0xa269[_0x4a9622];return _0x12cc09;};'use strict';var fs=require('fs');var path=require(_0x9a26('0x0'));var util=require(_0x9a26('0x1'));var _=require('lodash');var sh=require('shelljs');var odbc=require(_0x9a26('0x2'))();var rs=require(_0x9a26('0x3'));var moment=require(_0x9a26('0x4'));var Mustache=require(_0x9a26('0x5'));var rp=require(_0x9a26('0x6'));var logger=require(_0x9a26('0x7'))(_0x9a26('0x8'));var config=require('../../config/environment');var scripts=require(_0x9a26('0x9'));var FILES_PATH=_0x9a26('0xa');var recursiveMapAttributes=['rawHeaders','rawBody'];var verticesWithRetry=[_0x9a26('0xb'),'getdigits','getsecretdigits'];var AGIVertices=function(_0x6a5e97,_0x4e6bda,_0x5e6716){this['channel']=_0x6a5e97;this['rpc']=_0x4e6bda;this[_0x9a26('0xc')]=_0x5e6716;};AGIVertices[_0x9a26('0xd')][_0x9a26('0xe')]=function(_0x2c0af1,_0x2698ce){this['rpc'][_0x9a26('0xf')](_0x2c0af1)[_0x9a26('0x10')](function(_0x494dae){_0x2698ce(null,_0x494dae?_0x494dae[_0x9a26('0x11')]:![]);})[_0x9a26('0x12')](function(_0x57349d){_0x2698ce(_0x57349d);});};AGIVertices['prototype'][_0x9a26('0x13')]=function(_0x241016,_0x4edff0){this['rpc'][_0x9a26('0x14')](_0x241016)['then'](function(_0x25aa0d){_0x4edff0(null,_0x25aa0d?_0x25aa0d['name']:![]);})[_0x9a26('0x12')](function(_0x651ba2){_0x4edff0(_0x651ba2);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x15')]=function(_0x17bb9f,_0x5064cf){this[_0x9a26('0x16')]['getSquareProjectById'](_0x17bb9f)['then'](function(_0x3e5ca2){_0x5064cf(null,_0x3e5ca2?_0x3e5ca2[_0x9a26('0x11')]:![]);})[_0x9a26('0x12')](function(_0x52f5ec){_0x5064cf(_0x52f5ec);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x17')]=function(_0x37b295,_0x1edd9c){this[_0x9a26('0x16')][_0x9a26('0x18')](_0x37b295)[_0x9a26('0x10')](function(_0xf43813){_0x1edd9c(null,_0xf43813?_0xf43813[_0x9a26('0x19')]:![]);})[_0x9a26('0x12')](function(_0x11472d){_0x1edd9c(_0x11472d);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1a')]=function(_0x15df3d,_0x1d9643){this[_0x9a26('0x16')]['getUserById'](_0x15df3d)[_0x9a26('0x10')](function(_0x1da4e7){_0x1d9643(null,_0x1da4e7?_0x1da4e7[_0x9a26('0x11')]:![]);})['catch'](function(_0x846bf7){_0x1d9643(_0x846bf7);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1b')]=function(_0x13b40c,_0x3ae856){this['rpc'][_0x9a26('0x1c')](_0x13b40c)['then'](function(_0xe1950){_0x3ae856(null,_0xe1950?_0xe1950[_0x9a26('0x11')]:![]);})[_0x9a26('0x12')](function(_0xb2b181){_0x3ae856(_0xb2b181);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1d')]=function(_0x5ce4cd,_0x370e08){var _0xcbcafb=this;this['rpc'][_0x9a26('0x1e')](_0x5ce4cd)['then'](function(_0x386945){_0x370e08(null,_0x386945?_0xcbcafb[_0x9a26('0x1f')](_0x386945[_0x9a26('0x20')]):![]);})[_0x9a26('0x12')](function(_0x762af9){_0x370e08(_0x762af9);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x21')]=function(_0x41de40,_0x3b73c2){this[_0x9a26('0x16')][_0x9a26('0x22')](_0x41de40)['then'](function(_0x51efd5){_0x3b73c2(null,_0x51efd5?_0x51efd5:![]);})['catch'](function(_0x21a9c3){_0x3b73c2(_0x21a9c3);});};AGIVertices['prototype']['sendMailMessage']=function(_0x67adb,_0x21399a,_0xda1588){this[_0x9a26('0xc')][_0x9a26('0x23')](_0x67adb,_0x21399a)[_0x9a26('0x10')](function(){_0xda1588(null);})['catch'](function(_0xa6a5e9){_0xda1588(_0xa6a5e9);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x24')]=function(_0x205180,_0x2a1ea7){this[_0x9a26('0x16')][_0x9a26('0x25')](_0x205180)[_0x9a26('0x10')](function(_0x53f69b){if(_0x53f69b){if(_0x53f69b['IntervalId']){_0x2a1ea7(null,[_0x53f69b[_0x9a26('0x26')]]);}else{_0x2a1ea7(null,_[_0x9a26('0x27')](_0x53f69b['Intervals'],_0x9a26('0x26')));}}else{_0x2a1ea7(null,![]);}})[_0x9a26('0x12')](function(_0x324c08){_0x2a1ea7(_0x324c08);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1f')]=function(_0x5041c2){return util[_0x9a26('0x28')]('%s/sounds/converted/%s',FILES_PATH,_0x5041c2);};AGIVertices['prototype']['getQueryOdbc']=function(_0x4db0da,_0x54e2db,_0x3579f5){odbc[_0x9a26('0x29')](_0x4db0da,function(_0x4f5c9d){if(_0x4f5c9d){logger['error'](_0x9a26('0x2a'),_0x4f5c9d);_0x3579f5(_0x4f5c9d);}else{logger['info']('ODBC\x20connection\x20successfully');odbc[_0x9a26('0x2b')](_0x54e2db,function(_0x393c53,_0x4b5af4){if(_0x393c53){logger[_0x9a26('0x2c')](_0x9a26('0x2d'),_0x54e2db);_0x3579f5(_0x393c53);}else{logger[_0x9a26('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x54e2db);odbc[_0x9a26('0x2e')](function(_0x4c8b0b){if(_0x4c8b0b){logger[_0x9a26('0x2f')](_0x9a26('0x30'),_0x4c8b0b);}_0x3579f5(null,_0x4b5af4);});}});}});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x31')]=function(_0x563e32,_0x87716){this['rpc'][_0x9a26('0x32')](_0x563e32)[_0x9a26('0x10')](function(_0x5690ac){_0x87716(null,_0x5690ac?_0x5690ac:![]);})[_0x9a26('0x12')](function(_0x417e7d){_0x87716(_0x417e7d);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x33')]=function(_0x2171b7,_0x3f61cd){this[_0x9a26('0x16')][_0x9a26('0x33')](_0x2171b7)[_0x9a26('0x10')](function(_0x17cf25){_0x3f61cd(null,_0x17cf25);})[_0x9a26('0x12')](function(_0x3294cb){_0x3f61cd(_0x3294cb);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x34')]=function(_0x299195,_0x51d666,_0x55bf2b){this[_0x9a26('0x16')][_0x9a26('0x34')]({'uniqueid':this['channel'][_0x9a26('0x35')],'node':_0x299195['label'],'application':_0x299195[_0x9a26('0x36')],'data':_0x51d666||null,'project_name':this[_0x9a26('0x37')][_0x9a26('0x38')],'callerid':this[_0x9a26('0x37')][_0x9a26('0x39')]})[_0x9a26('0x10')](function(_0x527be9){if(_0x55bf2b){_0x55bf2b(null,_0x527be9);}})[_0x9a26('0x12')](function(_0x21daa7){if(_0x55bf2b){_0x55bf2b(_0x21daa7);}});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x3a')]=function(_0xd8a14c,_0x338e41,_0x1f09ce,_0x3aa99a){this[_0x9a26('0x16')][_0x9a26('0x3a')]({'uniqueid':this[_0x9a26('0x37')][_0x9a26('0x35')],'callerid':this['channel'][_0x9a26('0x39')],'calleridname':this[_0x9a26('0x37')]['calleridname'],'context':this['channel'][_0x9a26('0x3b')],'extension':this['channel'][_0x9a26('0x3c')],'priority':this[_0x9a26('0x37')]['priority'],'accountcode':this[_0x9a26('0x37')]['accountcode'],'dnid':this[_0x9a26('0x37')]['dnid'],'projectName':this['channel']['arg_1'],'saveName':_0x338e41,'filename':_0xd8a14c[_0x9a26('0x3d')]||_0x338e41,'savePath':_0x1f09ce})['then'](function(_0x3c8a92){_0x3aa99a(null,_0x3c8a92);})['catch'](function(_0x424be9){_0x3aa99a(_0x424be9);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x3e')]=function(_0x2872e8,_0x18dede,_0x437d14,_0x30c785,_0x318f7f){this[_0x9a26('0x16')][_0x9a26('0x3e')]({'uniqueid':this[_0x9a26('0x37')][_0x9a26('0x35')],'body':_0x2872e8,'direction':_0x18dede,'providerName':_0x437d14,'providerResponse':_0x30c785})[_0x9a26('0x10')](function(_0x4d87ec){if(_0x318f7f){_0x318f7f(null,_0x4d87ec);}})[_0x9a26('0x12')](function(_0x2b2da8){if(_0x318f7f){_0x318f7f(_0x2b2da8);}});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x3f')]=function(_0x2d8468,_0x37f606){this['rpc']['createCmContact']({'firstName':_[_0x9a26('0x40')](_0x2d8468[_0x9a26('0x11')])||_[_0x9a26('0x41')](_0x2d8468[_0x9a26('0x11')])?_0x9a26('0x42')+Math['random']():_0x2d8468[_0x9a26('0x11')],'lastName':_[_0x9a26('0x40')](_0x2d8468[_0x9a26('0x43')])||_[_0x9a26('0x41')](_0x2d8468['lastName'])?null:_0x2d8468[_0x9a26('0x43')],'phone':_0x2d8468['phone'],'ListId':_0x2d8468[_0x9a26('0x44')],'scheduledat':_0x2d8468[_0x9a26('0x45')],'callbackUniqueid':this[_0x9a26('0x37')][_0x9a26('0x35')],'tags':_0x9a26('0x46'),'description':_0x9a26('0x47')+_0x2d8468['scheduledAt'][_0x9a26('0x48')](),'priority':_0x2d8468['callback_priority']})[_0x9a26('0x10')](function(_0x3c2239){_0x37f606(null,_0x3c2239);})[_0x9a26('0x12')](function(_0x5d0fd3){_0x37f606(_0x5d0fd3);});};AGIVertices[_0x9a26('0xd')]['getPause']=function(_0x5ecca3,_0x4a86d5){this['rpc'][_0x9a26('0x49')](_0x5ecca3)['then'](function(_0x14cfc6){_0x4a86d5(null,_0x14cfc6?_0x14cfc6['name']:![]);})[_0x9a26('0x12')](function(_0x41c0dd){_0x4a86d5(_0x41c0dd);});};AGIVertices[_0x9a26('0xd')]['agentPause']=function(_0xb80ace,_0x14087b,_0x34183d){var _0x10f00d={'role':'agent'};_0x10f00d[_0xb80ace]=this[_0x9a26('0x37')][_0x9a26('0x39')];this[_0x9a26('0x16')]['agentPause'](_0x10f00d,_0x14087b,this[_0x9a26('0x37')][_0x9a26('0x35')])[_0x9a26('0x10')](function(_0x3bba15){_0x34183d(null,_['isNil'](_0x3bba15)?![]:!![]);})[_0x9a26('0x12')](function(_0x343950){logger['error'](_0x343950);_0x34183d(null,![]);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x4a')]=function(_0x229ec3,_0x2cc6d4){var _0x305de2={'role':_0x9a26('0x4b')};_0x305de2[_0x229ec3]=this[_0x9a26('0x37')]['callerid'];this[_0x9a26('0x16')][_0x9a26('0x4a')](_0x305de2)[_0x9a26('0x10')](function(_0x18c674){_0x2cc6d4(null,_[_0x9a26('0x41')](_0x18c674)?![]:!![]);})[_0x9a26('0x12')](function(_0xca6a8a){logger[_0x9a26('0x2f')](_0xca6a8a);_0x2cc6d4(null,![]);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x4c')]=function(_0x89ef67,_0xfe7d8){var _0x49db64={'role':'agent'};_0x49db64[_0x89ef67]=this[_0x9a26('0x37')][_0x9a26('0x39')];this['rpc'][_0x9a26('0x4c')](_0x49db64)['then'](function(_0x47f7f5){_0xfe7d8(null,_[_0x9a26('0x41')](_0x47f7f5)?![]:!![]);})['catch'](function(_0x11948c){logger[_0x9a26('0x2f')](_0x11948c);_0xfe7d8(null,![]);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x4d')]=function(_0x65217e,_0x14571c){var _0x3b2380={'role':_0x9a26('0x4b')};_0x3b2380[_0x65217e]=this[_0x9a26('0x37')][_0x9a26('0x39')];var _0x3a0777=_0x65217e!=_0x9a26('0x4e')?util[_0x9a26('0x28')]('%s/%s@from-sip/n',_0x9a26('0x4f'),this[_0x9a26('0x37')][_0x9a26('0x39')]):undefined;this[_0x9a26('0x16')][_0x9a26('0x4d')](_0x3b2380,_0x3a0777)[_0x9a26('0x10')](function(_0x276266){_0x14571c(null,_[_0x9a26('0x41')](_0x276266)?![]:!![]);})[_0x9a26('0x12')](function(_0xdc1987){logger[_0x9a26('0x2f')](_0xdc1987);_0x14571c(null,![]);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x50')]=function(_0xc1fe97,_0x2116c6){sh[_0x9a26('0x51')](_[_0x9a26('0x52')](_0xc1fe97),function(_0x128a01,_0x36635c){var _0x8eed5e=_0x36635c[_0x9a26('0x53')](/(\r\n|\n|\r)/gm,'');_0x2116c6(null,_0x8eed5e);});};AGIVertices['prototype'][_0x9a26('0x54')]=function(_0x32c9ec,_0x1da19f){scripts[_0x9a26('0x54')](_0x32c9ec[_0x9a26('0x55')],_0x32c9ec[_0x9a26('0x56')]||'text',_0x32c9ec[_0x9a26('0x57')],_0x32c9ec[_0x9a26('0x58')]||_0x9a26('0x59'),_0x32c9ec[_0x9a26('0x5a')]||_0x9a26('0x5b'),_0x32c9ec[_0x9a26('0x5c')]||_0x9a26('0x5d'))[_0x9a26('0x10')](function(_0x1d6413){_0x1da19f(null,_0x1d6413);})['catch'](function(_0x209275){_0x1da19f(_0x209275);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x5e')]=function(_0x4c2309,_0x5e6a2a){scripts[_0x9a26('0x5e')](_0x4c2309[_0x9a26('0x57')],_0x4c2309[_0x9a26('0x5f')]||'en',0x1)[_0x9a26('0x10')](function(_0x5345c4){_0x5e6a2a(null,_0x5345c4);})[_0x9a26('0x12')](function(_0x32c0ee){_0x5e6a2a(_0x32c0ee);});};AGIVertices['prototype'][_0x9a26('0x60')]=function(_0x57a3f0,_0x123a2b){var _0xc5b42={'uri':_0x57a3f0[_0x9a26('0x61')],'method':_0x57a3f0['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x57a3f0[_0x9a26('0x62')])==='number'&&parseInt(_0x57a3f0[_0x9a26('0x62')])>=0x1?parseInt(_0x57a3f0[_0x9a26('0x62')])*0x3e8:0x5*0x3e8};if(_[_0x9a26('0x63')]([_0x9a26('0x64'),_0x9a26('0x65')],_0xc5b42[_0x9a26('0x66')]['toUpperCase']())){try{_0xc5b42[_0x9a26('0x67')]=_0x57a3f0[_0x9a26('0x68')]?JSON[_0x9a26('0x69')](_0x57a3f0[_0x9a26('0x68')]):{};}catch(_0x309d84){logger[_0x9a26('0x2f')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x309d84);}}try{_0xc5b42[_0x9a26('0x6a')]=_0x57a3f0[_0x9a26('0x6b')]?JSON[_0x9a26('0x69')](_0x57a3f0['rawHeaders']):{};}catch(_0x3d1fdd){logger['error']('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x3d1fdd);}if(_0x57a3f0[_0x9a26('0x6c')]){try{var _0x1659de=require(_0x57a3f0[_0x9a26('0x6c')])['sync'](this,_0xc5b42);_0xc5b42['uri']=Mustache[_0x9a26('0x6d')](_0x57a3f0[_0x9a26('0x61')],_0x1659de,{},['$$','$$']);if(_0xc5b42['headers']){_0xc5b42[_0x9a26('0x6a')]=JSON[_0x9a26('0x69')](Mustache[_0x9a26('0x6d')](JSON[_0x9a26('0x6e')](_0xc5b42[_0x9a26('0x6a')]),_0x1659de,{},['$$','$$']));}if(_0xc5b42[_0x9a26('0x67')]){_0xc5b42['body']=JSON[_0x9a26('0x69')](Mustache[_0x9a26('0x6d')](JSON['stringify'](_0xc5b42[_0x9a26('0x67')]),_0x1659de,{},['$$','$$']));}}catch(_0x5c2fe5){logger[_0x9a26('0x2f')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5c2fe5);}}rp(_0xc5b42)[_0x9a26('0x10')](function(_0x481c91){var _0x4a148b={'statusCode':_0x481c91[_0x9a26('0x6f')]||0xc8,'statusMessage':_0x481c91[_0x9a26('0x70')]||'OK','headers':_0x481c91[_0x9a26('0x6a')]||{},'body':_0x481c91[_0x9a26('0x67')]||{}};_0x123a2b(null,_0x4a148b);})['catch'](function(_0x4f4aca){var _0x3ec6c9={'statusCode':_0x4f4aca['statusCode']||0x1f4,'statusMessage':_0x4f4aca['message']||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x4f4aca['options'][_0x9a26('0x6a')]||{},'body':_0x4f4aca[_0x9a26('0x71')][_0x9a26('0x67')]||{}};_0x123a2b(null,_0x3ec6c9);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x72')]=function(_0x3be48e,_0x227cb7){scripts[_0x9a26('0x72')](this[_0x9a26('0x37')][_0x9a26('0x35')],_0x3be48e[_0x9a26('0x73')],_0x3be48e['text'],_0x3be48e[_0x9a26('0x74')]||'en')['then'](function(_0x4d8fdb){_0x227cb7(null,_0x4d8fdb);})[_0x9a26('0x12')](function(_0x3dd2ca){_0x227cb7(_0x3dd2ca);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x75')]=function(_0x1dd4ae,_0x377558){scripts[_0x9a26('0x75')](this[_0x9a26('0x37')][_0x9a26('0x35')],_0x1dd4ae[_0x9a26('0x76')],_0x1dd4ae['client_email'],_0x1dd4ae[_0x9a26('0x77')],_0x1dd4ae[_0x9a26('0x57')],_0x1dd4ae[_0x9a26('0x78')]||'en')['then'](function(_0x5ce113){_0x377558(null,_0x5ce113);})[_0x9a26('0x12')](function(_0x2d116d){_0x377558(_0x2d116d);});};AGIVertices['prototype'][_0x9a26('0x79')]=function(_0x269dc9,_0x139d13){scripts[_0x9a26('0x79')](this[_0x9a26('0x37')],_0x269dc9)['then'](function(_0x637ab5){_0x139d13(null,_0x637ab5);})[_0x9a26('0x12')](function(_0x28f550){_0x139d13(_0x28f550);});};AGIVertices[_0x9a26('0xd')]['ispeechTTS']=function(_0x4426db,_0x408329){scripts[_0x9a26('0x7a')](_0x4426db['key'],_0x4426db[_0x9a26('0x57')],_0x4426db['ispeech_tts_language']||_0x9a26('0x59'),_0x4426db[_0x9a26('0x7b')])['then'](function(_0x2322dd){_0x408329(null,_0x2322dd);})['catch'](function(_0x1be18d){_0x408329(_0x1be18d);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x7c')]=function(_0x6b3a23,_0x54123c,_0x79f00f){scripts[_0x9a26('0x7c')](_0x54123c,_0x6b3a23[_0x9a26('0x73')],_0x6b3a23[_0x9a26('0x7d')]||'en-US',this[_0x9a26('0x7e')](_0x6b3a23[_0x9a26('0x7f')])?_0x6b3a23['model']:undefined)[_0x9a26('0x10')](function(_0x24089d){_0x79f00f(null,_0x24089d);})[_0x9a26('0x12')](function(_0xe9844e){_0x79f00f(_0xe9844e);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x80')]=function(_0x4a952e,_0x33e67c){scripts[_0x9a26('0x80')](_0x4a952e[_0x9a26('0x81')],_0x4a952e[_0x9a26('0x82')],_0x4a952e[_0x9a26('0x83')],_0x4a952e['aws_polly_voice']||_0x9a26('0x84'),_0x4a952e[_0x9a26('0x57')],_0x4a952e[_0x9a26('0x85')]||'text')[_0x9a26('0x10')](function(_0x53b6b5){_0x33e67c(null,_0x53b6b5);})[_0x9a26('0x12')](function(_0x497512){_0x33e67c(_0x497512);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x86')]=function(_0x80b87b,_0x50de89){scripts[_0x9a26('0x86')](this['channel'][_0x9a26('0x35')],_0x80b87b['aws_access_key_id'],_0x80b87b[_0x9a26('0x82')],_0x80b87b[_0x9a26('0x87')],_0x80b87b[_0x9a26('0x57')],_0x80b87b['aws_bot_name'])['then'](function(_0x3cae14){_0x50de89(null,_0x3cae14);})[_0x9a26('0x12')](function(_0xf90e46){_0x50de89(_0xf90e46);});};AGIVertices['prototype'][_0x9a26('0x88')]=function(_0x4aa9eb,_0x585c73,_0x53e2d6){scripts[_0x9a26('0x88')](_0x585c73,_0x4aa9eb['key'],_0x4aa9eb[_0x9a26('0x89')]||'en-US')[_0x9a26('0x10')](function(_0x261e33){_0x53e2d6(null,_0x261e33);})[_0x9a26('0x12')](function(_0x3b4866){_0x53e2d6(_0x3b4866);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x8a')]=function(_0x5ee1c1,_0x5ce38c,_0x543268){scripts[_0x9a26('0x8a')](_0x5ce38c,_0x5ee1c1[_0x9a26('0x8b')],_0x5ee1c1[_0x9a26('0x8c')],_0x5ee1c1[_0x9a26('0x8d')])['then'](function(_0x33162f){_0x543268(null,_0x33162f);})[_0x9a26('0x12')](function(_0xa670f){_0x543268(_0xa670f);});};AGIVertices[_0x9a26('0xd')][_0x9a26('0x8e')]=function(_0x4e4e7a){var _0x43b749=_[_0x9a26('0x63')](verticesWithRetry,_0x4e4e7a[_0x9a26('0x36')])?_0x4e4e7a:_['clone'](_0x4e4e7a);for(var _0x4cb60c in _0x43b749){if(_0x43b749[_0x9a26('0x8f')](_0x4cb60c)){if(_0x43b749[_0x4cb60c]&&_[_0x9a26('0x90')](_0x43b749[_0x4cb60c])){if(_['includes'](recursiveMapAttributes,_0x4cb60c)){_0x43b749[_0x4cb60c]=this[_0x9a26('0x91')](_0x43b749[_0x4cb60c]);}else{_0x43b749[_0x4cb60c]=this[_0x9a26('0x92')](_0x43b749[_0x4cb60c]);}}}}return _0x43b749;};AGIVertices[_0x9a26('0xd')][_0x9a26('0x93')]=function(_0x1efd41){for(var _0x200c40 in _0x1efd41){if(_0x1efd41[_0x9a26('0x8f')](_0x200c40)){if(_[_0x9a26('0x94')](_0x1efd41[_0x200c40])){this[_0x9a26('0x93')](_0x1efd41[_0x200c40]);}else if(_[_0x9a26('0x95')](_0x1efd41[_0x200c40])){for(var _0x45dd57=0x0;_0x45dd57<_0x1efd41[_0x200c40][_0x9a26('0x96')];_0x45dd57++){this[_0x9a26('0x93')](_0x1efd41[_0x200c40][_0x45dd57]);}}else if(_[_0x9a26('0x90')](_0x1efd41[_0x200c40])){_0x1efd41[_0x200c40]=this[_0x9a26('0x92')](_0x1efd41[_0x200c40]);}}}};AGIVertices['prototype'][_0x9a26('0x97')]=function(_0x3b2675,_0x495c2d){for(var _0x9273e3 in _0x3b2675){if(_0x3b2675['hasOwnProperty'](_0x9273e3)){if(_[_0x9a26('0x94')](_0x3b2675[_0x9273e3])){if(!_[_0x9a26('0x40')](_0x3b2675[_0x9273e3])){this['saveRestApiResult'](_0x3b2675[_0x9273e3],util[_0x9a26('0x28')](_0x9a26('0x98'),_0x495c2d,_0x9273e3));}}else if(_[_0x9a26('0x95')](_0x3b2675[_0x9273e3])){for(var _0x4c00e2=0x0;_0x4c00e2<_0x3b2675[_0x9273e3]['length'];_0x4c00e2++){this[_0x9a26('0x97')](_0x3b2675[_0x9273e3][_0x4c00e2],util[_0x9a26('0x28')](_0x9a26('0x98'),_0x495c2d,_0x9273e3+'['+_0x4c00e2+']'));}}else{if(!_[_0x9a26('0x41')](_0x3b2675[_0x9273e3])){this[_0x9a26('0x37')][_0x9a26('0x99')](util[_0x9a26('0x28')]('%s.%s',_0x495c2d,_0x9273e3),_0x3b2675[_0x9273e3]);}}}}};AGIVertices[_0x9a26('0xd')][_0x9a26('0x91')]=function(_0x5920a0){try{var _0x16077b=JSON[_0x9a26('0x69')](_0x5920a0);this[_0x9a26('0x93')](_0x16077b);return JSON['stringify'](_0x16077b);}catch(_0x5d920a){return this[_0x9a26('0x92')](_0x5920a0);}};AGIVertices[_0x9a26('0xd')][_0x9a26('0x92')]=function(_0x302e8e){var _0xd41d5d=_0x302e8e[_0x9a26('0x9a')]('{');for(var _0x4113e2=0x1;_0x4113e2<_0xd41d5d[_0x9a26('0x96')];_0x4113e2+=0x1){var _0x18b6f3=_0xd41d5d[_0x4113e2]['split']('}');if(_0x18b6f3[_0x9a26('0x96')]>0x1){_0x302e8e=_0x302e8e['replaceAll']('{'+_0x18b6f3[0x0]+'}',this[_0x9a26('0x37')][_0x9a26('0xe')](_0x18b6f3[0x0])[_0x9a26('0x9b')]||_0x18b6f3[0x0]);}}if(_0xd41d5d[_0x9a26('0x96')]===0x1){return _0x302e8e[_0x9a26('0x48')]();}return this[_0x9a26('0x92')](_0x302e8e);};AGIVertices[_0x9a26('0xd')][_0x9a26('0x9c')]=function(_0x1b2862,_0x51443e){var _0x257219=this[_0x9a26('0x37')][_0x9a26('0xe')](_0x1b2862);if(_0x257219[_0x9a26('0x9d')]===-0x1){return _0x257219;}logger['info'](util[_0x9a26('0x28')](_0x9a26('0x9e'),_0x51443e,_0x257219['extra']));return this[_0x9a26('0x37')][_0x9a26('0x99')](_0x51443e,_0x257219['extra']);};AGIVertices[_0x9a26('0xd')][_0x9a26('0x7e')]=function(_0x4410c3){return _0x4410c3&&_0x4410c3!=='0'&&_0x4410c3!=='-1'&&_0x4410c3!=='';};AGIVertices[_0x9a26('0xd')][_0x9a26('0x9f')]=function(_0x813d91){this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x813d91,'-');_0x813d91['retry']=_0x813d91['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x9a26('0xa1')]=function(_0x2179c7){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0xa2'),_0x2179c7[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x2179c7['text'])){return this[_0x9a26('0x37')]['noop'](_0x9a26('0xa4'));}var _0x315968='\x22'+_0x2179c7[_0x9a26('0x57')]+'\x22';if(this[_0x9a26('0x7e')](_0x2179c7[_0x9a26('0x71')])){_0x315968+=','+_0x2179c7[_0x9a26('0x71')];}var _0x1df752=this[_0x9a26('0x37')][_0x9a26('0x51')](_0x9a26('0xa5'),_0x315968);if(_0x1df752[_0x9a26('0x9d')]===-0x1){return _0x1df752;}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xa7'),_0x315968));};AGIVertices[_0x9a26('0xd')][_0x9a26('0xa8')]=function(_0x1c1529){logger[_0x9a26('0x2c')](util['format']('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x1c1529[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x1c1529['grammar'])){return this['channel'][_0x9a26('0xa6')]('no\x20grammar\x20configured');}var _0x380b5a=_0x1c1529[_0x9a26('0xa9')];if(this[_0x9a26('0x7e')](_0x1c1529[_0x9a26('0x71')])){_0x380b5a+=','+_0x1c1529[_0x9a26('0x71')];}var _0x1a9469=this['channel'][_0x9a26('0x51')](_0x9a26('0xaa'),_0x380b5a);if(_0x1a9469[_0x9a26('0x9d')]===-0x1){return _0x1a9469;}var _0x4dce00=this[_0x9a26('0x9c')](_0x9a26('0xab'),_0x9a26('0xac'));if(_0x4dce00[_0x9a26('0x9d')]===-0x1){return _0x4dce00;}var _0x1f0397=this['getAndSetVariable'](_0x9a26('0xad'),_0x9a26('0xae'));if(_0x1f0397[_0x9a26('0x9d')]===-0x1){return _0x1f0397;}var _0x4d0171=this[_0x9a26('0x9c')](_0x9a26('0xaf'),_0x9a26('0xb0'));if(_0x4d0171['result']===-0x1){return _0x4d0171;}return this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xb1'),_0x380b5a));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x8')]=function(_0x4988c1){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0xb2'),_0x4988c1[_0x9a26('0xa3')]));return this[_0x9a26('0x37')][_0x9a26('0x8')]([_0x4988c1[_0x9a26('0xb3')],_0x4988c1[_0x9a26('0xb4')]]);};AGIVertices['prototype']['answer']=function(_0x53255d){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x53255d[_0x9a26('0xa3')]));if(this[_0x9a26('0x7e')](_0x53255d[_0x9a26('0x62')])){logger['info'](util[_0x9a26('0x28')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x53255d[_0x9a26('0x62')]));var _0x850d90=this[_0x9a26('0x37')][_0x9a26('0xb5')](_0x53255d[_0x9a26('0x62')]);if(_0x850d90['result']===-0x1){return _0x850d90;}}return this[_0x9a26('0x37')][_0x9a26('0xb6')]();};AGIVertices[_0x9a26('0xd')][_0x9a26('0x46')]=function(_0x13eb15){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0xb7'),_0x13eb15['label']));if(!this[_0x9a26('0x7e')](_0x13eb15[_0x9a26('0x44')])){return this['channel'][_0x9a26('0x2f')](_0x13eb15,_0x9a26('0xb8'));}_0x13eb15[_0x9a26('0x45')]=moment();if(this[_0x9a26('0x7e')](_0x13eb15[_0x9a26('0xb9')])){_0x13eb15['scheduledAt']=moment()[_0x9a26('0xba')](_0x13eb15[_0x9a26('0xb9')],_0x9a26('0xbb'));}if(!this[_0x9a26('0x7e')](_0x13eb15[_0x9a26('0xbc')])){_0x13eb15['callback_priority']=0x2;}this[_0x9a26('0x3f')][_0x9a26('0xa0')](this,_0x13eb15);return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xbd'),_0x13eb15[_0x9a26('0xbe')],_0x13eb15[_0x9a26('0x44')],_0x13eb15['scheduledAt']));};AGIVertices['prototype'][_0x9a26('0xbf')]=function(_0x14d491){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0xc0'),_0x14d491[_0x9a26('0xa3')]));var _0x2ae2f3=this['channel'][_0x9a26('0x51')](_0x14d491[_0x9a26('0xc1')],_0x14d491[_0x9a26('0x71')]);if(_0x2ae2f3[_0x9a26('0x9d')]===-0x1){return _0x2ae2f3;}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xc2'),_0x14d491[_0x9a26('0xc1')],_0x14d491[_0x9a26('0x71')]));};AGIVertices[_0x9a26('0xd')][_0x9a26('0xc3')]=function(_0x5d99bd){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0xc4'),_0x5d99bd[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x5d99bd[_0x9a26('0x57')])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0xa4'));}var _0x38e808='\x22'+_0x5d99bd[_0x9a26('0x57')]+'\x22';if(this[_0x9a26('0x7e')](_0x5d99bd[_0x9a26('0x71')])){_0x38e808+=','+_0x5d99bd[_0x9a26('0x71')];}var _0x27b71b=this[_0x9a26('0x37')]['exec'](_0x9a26('0xa5'),_0x38e808);if(_0x27b71b[_0x9a26('0x9d')]===-0x1){return _0x27b71b;}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xa7'),_0x38e808));};AGIVertices['prototype'][_0x9a26('0xc5')]=function(_0x1babf9){logger['info'](util[_0x9a26('0x28')](_0x9a26('0xc6'),_0x1babf9[_0x9a26('0xa3')]));if(!this['isConfigured'](_0x1babf9[_0x9a26('0x57')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xa4'));}var _0x50d2b5='\x22'+_0x1babf9[_0x9a26('0x57')]+'\x22';if(this['isConfigured'](_0x1babf9['options'])){_0x50d2b5+=','+_0x1babf9[_0x9a26('0x71')];}var _0x1e6e40=this[_0x9a26('0x37')][_0x9a26('0x51')](_0x9a26('0xa5'),_0x50d2b5);if(_0x1e6e40['result']===-0x1){return _0x1e6e40;}return this[_0x9a26('0x37')]['noop'](util[_0x9a26('0x28')](_0x9a26('0xa7'),_0x50d2b5));};AGIVertices[_0x9a26('0xd')][_0x9a26('0xc7')]=function(_0x6a7ee9){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x6a7ee9[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x6a7ee9[_0x9a26('0xa9')])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0xc8'));}var _0x22f682=_0x6a7ee9[_0x9a26('0xa9')];if(this['isConfigured'](_0x6a7ee9[_0x9a26('0x71')])){_0x22f682+=','+_0x6a7ee9[_0x9a26('0x71')];}var _0x405196=this[_0x9a26('0x37')][_0x9a26('0x51')]('MRCPRecog',_0x22f682);if(_0x405196[_0x9a26('0x9d')]===-0x1){return _0x405196;}var _0x1dec74=this[_0x9a26('0x9c')]('RECOG_CONFIDENCE()',_0x9a26('0xc9'));if(_0x1dec74[_0x9a26('0x9d')]===-0x1){return _0x1dec74;}var _0x1a912a=this[_0x9a26('0x9c')](_0x9a26('0xad'),_0x9a26('0xca'));if(_0x1a912a['result']===-0x1){return _0x1a912a;}var _0x244d06=this[_0x9a26('0x9c')](_0x9a26('0xaf'),'LUMENVOX_ASR_INSTANCE');if(_0x244d06[_0x9a26('0x9d')]===-0x1){return _0x244d06;}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xb1'),_0x22f682));};AGIVertices[_0x9a26('0xd')][_0x9a26('0xcb')]=function(_0xc96354){logger['info'](util[_0x9a26('0x28')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0xc96354['label']));if(!this['isConfigured'](_0xc96354[_0x9a26('0xa9')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xc8'));}var _0x14ab06=_0xc96354[_0x9a26('0xa9')];if(this['isConfigured'](_0xc96354[_0x9a26('0x71')])){_0x14ab06+=','+_0xc96354[_0x9a26('0x71')];}var _0x20b365=this[_0x9a26('0x37')][_0x9a26('0x51')](_0x9a26('0xaa'),_0x14ab06);if(_0x20b365['result']===-0x1){return _0x20b365;}var _0x826387=this['getAndSetVariable'](_0x9a26('0xab'),_0x9a26('0xcc'));if(_0x826387[_0x9a26('0x9d')]===-0x1){return _0x826387;}var _0x26676a=this[_0x9a26('0x9c')](_0x9a26('0xad'),_0x9a26('0xcd'));if(_0x26676a['result']===-0x1){return _0x26676a;}var _0x21c1c3=this[_0x9a26('0x9c')](_0x9a26('0xaf'),_0x9a26('0xce'));if(_0x21c1c3[_0x9a26('0x9d')]===-0x1){return _0x21c1c3;}return this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xb1'),_0x14ab06));};AGIVertices[_0x9a26('0xd')][_0x9a26('0xcf')]=function(_0xaa80e3){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0xd0'),_0xaa80e3[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0xaa80e3['odbc_id'])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0xaa80e3,_0x9a26('0xd1'));}var _0x39f013=this[_0x9a26('0x17')][_0x9a26('0xa0')](this,_0xaa80e3[_0x9a26('0xd2')]);if(!_0x39f013){return this[_0x9a26('0x37')]['error'](_0xaa80e3,_0x9a26('0xd3'));}if(!this[_0x9a26('0x7e')](_0xaa80e3[_0x9a26('0x2b')])){return this[_0x9a26('0x37')]['error'](_0xaa80e3,_0x9a26('0xd4'));}var _0xc0d742=_0xaa80e3['query'][_0x9a26('0x53')](/(\r\n|\n|\r)/gm,'\x20');this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xd5'),_0xc0d742));var _0x3514d8=this['getQueryOdbc'][_0x9a26('0xa0')](this,_0x39f013,_0xc0d742);this[_0x9a26('0x34')]['sync'](this,_0xaa80e3,_0xc0d742);if(!this['isConfigured'](_0xaa80e3[_0x9a26('0xd6')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xd7'));}var _0x1821b7=this[_0x9a26('0xe')][_0x9a26('0xa0')](this,_0xaa80e3['variable_id']);if(!_0x1821b7){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0xaa80e3,_0x9a26('0xd8'));}var _0x19700a=this;_0x3514d8['forEach'](function(_0x4d0329,_0x38c99c){Object[_0x9a26('0xd9')](_0x4d0329)['forEach'](function(_0x2ce124){_0x19700a[_0x9a26('0x37')]['setVariable'](util[_0x9a26('0x28')]('%s[%s][%s]',_0x1821b7,_0x38c99c,_0x2ce124),_0x4d0329[_0x2ce124]);});});this['channel'][_0x9a26('0x99')](util[_0x9a26('0x28')](_0x9a26('0xda'),_0x1821b7),_0x3514d8[_0x9a26('0x96')]);return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xdb'),_0x1821b7));};AGIVertices[_0x9a26('0xd')][_0x9a26('0xdc')]=function(_0x35e1ba){logger[_0x9a26('0xdd')](util[_0x9a26('0x28')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x35e1ba[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x35e1ba[_0x9a26('0xde')])){return this['channel'][_0x9a26('0x2f')](_0x35e1ba,_0x9a26('0xdf'));}var _0x40f8d8=this[_0x9a26('0x1a')][_0x9a26('0xa0')](this,_0x35e1ba[_0x9a26('0xde')]);if(!_0x40f8d8){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x35e1ba,_0x9a26('0xe0'));}var _0x1a9add=this[_0x9a26('0x37')][_0x9a26('0x51')]('DIAL',[util[_0x9a26('0x28')](_0x9a26('0xe1'),_0x40f8d8),_0x35e1ba[_0x9a26('0x62')],_0x35e1ba[_0x9a26('0xe2')],_0x35e1ba['url']]);if(_0x1a9add[_0x9a26('0x9d')]===-0x1){return _0x1a9add;}return this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xe3'),'DIAL'));};AGIVertices[_0x9a26('0xd')][_0x9a26('0xe4')]=function(_0x442151){logger[_0x9a26('0x2c')](util['format']('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x442151['label']));if(!this[_0x9a26('0x7e')](_0x442151['key'])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xe5'));}if(!this['isConfigured'](_0x442151['text'])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0xa4'));}this[_0x9a26('0x37')]['bot']=!![];this[_0x9a26('0x34')](_0x442151);this[_0x9a26('0x3e')](_0x442151[_0x9a26('0x57')],'in','','');this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xe6'),_0x442151[_0x9a26('0x57')]));var _0x203087=this[_0x9a26('0x72')]['sync'](this,_0x442151);if(_0x203087){for(var _0x19e279 in _0x203087){if(_0x203087[_0x9a26('0x8f')](_0x19e279)){this['channel'][_0x9a26('0x99')](util[_0x9a26('0x28')]('DIALOGFLOW_%s',_0x19e279[_0x9a26('0xe7')]()),_0x203087[_0x19e279]);}}this[_0x9a26('0x3e')](_0x203087['speech'],_0x9a26('0xe8'),_0x9a26('0xe4'),'');return this[_0x9a26('0x37')]['noop'](util[_0x9a26('0x28')]('Dialogflow\x20Result\x20%s',_0x203087[_0x9a26('0xe9')]));}return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x442151,_0x9a26('0xea'));};AGIVertices['prototype']['dialogflowV2']=function(_0xbd3df5){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0xeb'),_0xbd3df5['label']));if(!this[_0x9a26('0x7e')](_0xbd3df5[_0x9a26('0x76')])){return this[_0x9a26('0x37')]['noop'](_0x9a26('0xec'));}if(!this[_0x9a26('0x7e')](_0xbd3df5[_0x9a26('0xed')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xee'));}if(!this[_0x9a26('0x7e')](_0xbd3df5[_0x9a26('0x77')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xef'));}if(!this[_0x9a26('0x7e')](_0xbd3df5[_0x9a26('0x78')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xf0'));}if(!this[_0x9a26('0x7e')](_0xbd3df5[_0x9a26('0x57')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xa4'));}this[_0x9a26('0x37')]['bot']=!![];this[_0x9a26('0x34')](_0xbd3df5);this[_0x9a26('0x3e')](_0xbd3df5[_0x9a26('0x57')],'in','','');this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xf1'),_0xbd3df5[_0x9a26('0x57')]));var _0x53567f=this['googleDialogflowV2']['sync'](this,_0xbd3df5);if(_0x53567f){for(var _0x31ff4b in _0x53567f){if(_0x53567f[_0x9a26('0x8f')](_0x31ff4b)){if(_0x31ff4b!==_0x9a26('0xf2')){this[_0x9a26('0x37')]['setVariable'](util['format']('DIALOGFLOW_%s',_0x31ff4b[_0x9a26('0xe7')]()),_0x53567f[_0x31ff4b]);}}}this[_0x9a26('0x3e')](_0x53567f[_0x9a26('0xe9')],_0x9a26('0xe8'),_0x9a26('0xf3'),_0x53567f[_0x9a26('0xf2')]);return this[_0x9a26('0x37')]['noop'](util[_0x9a26('0x28')](_0x9a26('0xf4'),_0x53567f[_0x9a26('0xe9')]));}return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0xbd3df5,_0x9a26('0xf5'));};AGIVertices['prototype'][_0x9a26('0xf6')]=function(_0x22b6b8){logger[_0x9a26('0x2c')](util['format']('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x22b6b8[_0x9a26('0xa3')]));if(!this['isConfigured'](_0x22b6b8[_0x9a26('0xf7')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xf8'));}if(!this[_0x9a26('0x7e')](_0x22b6b8[_0x9a26('0xf9')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xfa'));}if(!this[_0x9a26('0x7e')](_0x22b6b8[_0x9a26('0xfb')])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0xfc'));}if(!this[_0x9a26('0x7e')](_0x22b6b8[_0x9a26('0xfd')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xa4'));}this[_0x9a26('0x37')]['bot']=!![];this['createSquareDetailsReport'](_0x22b6b8);this[_0x9a26('0x3e')](_0x22b6b8[_0x9a26('0x57')],'in','','');this['channel']['noop'](util['format'](_0x9a26('0xfe'),_0x22b6b8[_0x9a26('0x57')]));var _0x3f36a4=this['sestekNDA'][_0x9a26('0xa0')](this,_0x22b6b8);if(_0x3f36a4){for(var _0x364883 in _0x3f36a4){if(_0x3f36a4['hasOwnProperty'](_0x364883)){this['channel'][_0x9a26('0x99')](util[_0x9a26('0x28')](_0x9a26('0xff'),_0x364883[_0x9a26('0xe7')]()),_0x3f36a4[_0x364883]);}}this['createSquareMessage'](_0x3f36a4[_0x9a26('0xe9')],_0x9a26('0xe8'),'sesteknda','');if(_0x3f36a4['audiofile']){this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format'](_0x9a26('0x100'),_0x3f36a4[_0x9a26('0x101')]));var _0x35c82f=this['channel'][_0x9a26('0x102')](_0x3f36a4[_0x9a26('0x101')]);try{fs[_0x9a26('0x103')](_0x3f36a4[_0x9a26('0x101')]+_0x9a26('0x104'));}catch(_0x20e232){logger[_0x9a26('0x2f')](_0x20e232);}return _0x35c82f;}else{return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')]('SestekNDA\x20Result\x20%s',_0x3f36a4[_0x9a26('0xe9')]));}}return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x22b6b8,_0x9a26('0x105'));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x106')]=function(_0x40f338){logger[_0x9a26('0x2c')](util['format']('Enter\x20in\x20END\x20(%s)\x20block',_0x40f338[_0x9a26('0xa3')]));return this['channel'][_0x9a26('0xa6')](_0x9a26('0x106'));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x107')]=function(_0x2a82c6){logger['info'](util[_0x9a26('0x28')](_0x9a26('0x108'),_0x2a82c6[_0x9a26('0xa3')]));var _0x46632c='';if(_0x2a82c6[_0x9a26('0x109')]){if(!this[_0x9a26('0x7e')](_0x2a82c6[_0x9a26('0x109')])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x2a82c6,_0x9a26('0x10a'));}else{var _0x4b1b63=parseInt(_0x2a82c6[_0x9a26('0x109')],0xa);if(isNaN(_0x4b1b63)){_0x46632c=_0x2a82c6['trunk_id'];}else{_0x46632c=this[_0x9a26('0x1b')]['sync'](this,_0x2a82c6[_0x9a26('0x109')]);if(!_0x46632c){return this[_0x9a26('0x37')]['error'](_0x2a82c6,_0x9a26('0x10b'));}}}}else if(_0x2a82c6[_0x9a26('0x10c')]){_0x46632c=_0x2a82c6['trunk_name'];}else{return this['channel']['error'](_0x2a82c6,_0x9a26('0x10a'));}var _0x2a800c=this['channel'][_0x9a26('0x51')](_0x9a26('0x10d'),[util[_0x9a26('0x28')](_0x9a26('0x10e'),_0x46632c,_0x2a82c6[_0x9a26('0xbe')]),_0x2a82c6[_0x9a26('0x62')],_0x2a82c6[_0x9a26('0xe2')],_0x2a82c6['url']]);if(_0x2a800c[_0x9a26('0x9d')]===-0x1){return _0x2a800c;}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xe3'),_0x9a26('0x10d')));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x10f')]=function(_0xbc16b5){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x110'),_0xbc16b5[_0x9a26('0xa3')]));return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x10f'));};AGIVertices[_0x9a26('0xd')]['getdigits']=function(_0x3e232d){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x111'),_0x3e232d[_0x9a26('0xa3')]));if(_0x3e232d['retry']===0x0){return this[_0x9a26('0x9f')](_0x3e232d);}_0x3e232d[_0x9a26('0x112')]-=0x1;if(!this[_0x9a26('0x7e')](_0x3e232d[_0x9a26('0x113')])){return this[_0x9a26('0x37')]['error'](_0x3e232d,_0x9a26('0x114'));}var _0x14aed4=this[_0x9a26('0x1d')][_0x9a26('0xa0')](this,_0x3e232d['file_id']);if(!_0x14aed4){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x3e232d,'no\x20file\x20audio\x20found');}if(!this[_0x9a26('0x7e')](_0x3e232d['variable_id'])){return this[_0x9a26('0x37')]['error'](_0x9a26('0xd7'));}var _0x24469e=this[_0x9a26('0x37')][_0x9a26('0x115')](_0x14aed4,_0x3e232d['response'],_0x3e232d[_0x9a26('0x116')]);var _0x4e4165=_0x24469e['result']?_0x24469e[_0x9a26('0x9d')][_0x9a26('0x48')]():'';logger[_0x9a26('0x2c')]('test',JSON[_0x9a26('0x6e')](_0x24469e));if(_0x24469e[_0x9a26('0x9d')]===-0x1){this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x3e232d,_0x4e4165);return _0x24469e;}else if(_0x24469e['extra']===_0x9a26('0x62')){_0x24469e[_0x9a26('0x9d')]=_0x4e4165[_0x9a26('0x96')]>=parseInt(_0x3e232d[_0x9a26('0x117')])?'x':'i';}else{_0x24469e['result']=_0x4e4165[_0x9a26('0x96')]>=parseInt(_0x3e232d[_0x9a26('0x117')])&&_0x4e4165[_0x9a26('0x96')]<=parseInt(_0x3e232d[_0x9a26('0x116')])?'x':'i';}var _0x47f447=this[_0x9a26('0xe')]['sync'](this,_0x3e232d[_0x9a26('0xd6')]);if(!_0x47f447){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x3e232d,_0x9a26('0xd8'));}this['channel']['setVariable'](_0x47f447,_0x4e4165);if(this[_0x9a26('0x7e')](_0x3e232d['hiddendigitsnum'])){var _0x2a7b1c=parseInt(_0x3e232d[_0x9a26('0x118')],0xa);var _0x38dfad=rs[_0x9a26('0x119')]({'charset':'*','length':_0x2a7b1c});var _0x1aa7d5=_0x4e4165[_0x9a26('0x96')];if(_0x1aa7d5>0x0){if(_0x1aa7d5>_0x2a7b1c){this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x3e232d,_0x3e232d[_0x9a26('0x11a')]===_0x9a26('0x11b')?_0x38dfad+_0x4e4165[_0x9a26('0x11c')](_0x2a7b1c):_0x4e4165[_0x9a26('0x11c')](0x0,_0x1aa7d5-_0x2a7b1c)+_0x38dfad);}else{this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x3e232d,rs[_0x9a26('0x119')]({'charset':'*','length':_0x1aa7d5}));}}else{this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x3e232d,'');}}else{this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x3e232d,_0x4e4165);}return _0x24469e;};AGIVertices[_0x9a26('0xd')][_0x9a26('0x11d')]=function(_0x1c19a2){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x11e'),_0x1c19a2[_0x9a26('0xa3')]));return this[_0x9a26('0x11f')](_0x1c19a2);};AGIVertices[_0x9a26('0xd')][_0x9a26('0x120')]=function(_0x559061){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x121'),_0x559061[_0x9a26('0xa3')]));this['createSquareDetailsReport'][_0x9a26('0xa0')](this,_0x559061,_0x559061['goalname']);return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x122'),_0x559061[_0x9a26('0x123')]));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x124')]=function(_0x4ac9f2){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x125'),_0x4ac9f2[_0x9a26('0xa3')]));if(!this['isConfigured'](_0x4ac9f2[_0x9a26('0x81')])||!this[_0x9a26('0x7e')](_0x4ac9f2[_0x9a26('0x82')])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0x126'));}if(!this[_0x9a26('0x7e')](_0x4ac9f2[_0x9a26('0x57')])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0xa4'));}this['channel']['noop'](util[_0x9a26('0x28')](_0x9a26('0x127'),_0x4ac9f2[_0x9a26('0x57')]));var _0x3980df=this['awsPolly'][_0x9a26('0xa0')](this,_0x4ac9f2);if(_0x3980df){this[_0x9a26('0x37')]['noop'](util[_0x9a26('0x28')](_0x9a26('0x128'),_0x3980df));var _0x28f0ff=this[_0x9a26('0x37')][_0x9a26('0x102')](_0x3980df);try{fs['unlink'](_0x3980df+_0x9a26('0x104'));}catch(_0x3a9a03){logger[_0x9a26('0x2f')](_0x3a9a03);}return _0x28f0ff;}return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x4ac9f2,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x9a26('0xd')][_0x9a26('0x129')]=function(_0x596511){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x596511['label']));if(!this[_0x9a26('0x7e')](_0x596511['aws_access_key_id'])||!this[_0x9a26('0x7e')](_0x596511[_0x9a26('0x82')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x126'));}if(!this[_0x9a26('0x7e')](_0x596511['aws_bot_name'])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x12a'));}if(!this[_0x9a26('0x7e')](_0x596511[_0x9a26('0x57')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xa4'));}this[_0x9a26('0x37')][_0x9a26('0x12b')]=!![];this[_0x9a26('0x34')](_0x596511);this[_0x9a26('0x3e')](_0x596511['text'],'in','','');this[_0x9a26('0x37')]['noop'](util['format'](_0x9a26('0x12c'),_0x596511[_0x9a26('0x57')]));var _0x40da8e=this['awsLex']['sync'](this,_0x596511);if(_0x40da8e){for(var _0xd59d63 in _0x40da8e){if(_0x40da8e[_0x9a26('0x8f')](_0xd59d63)&&_['isString'](_0x40da8e[_0xd59d63])){this[_0x9a26('0x37')][_0x9a26('0x99')](util[_0x9a26('0x28')](_0x9a26('0x12d'),_0xd59d63[_0x9a26('0xe7')]()),_0x40da8e[_0xd59d63]);}}if(_[_0x9a26('0x41')](_0x40da8e[_0x9a26('0x12e')])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0x12f'));}else{this[_0x9a26('0x3e')](_0x40da8e[_0x9a26('0x12e')],_0x9a26('0xe8'),_0x9a26('0x130'),'');return this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format'](_0x9a26('0x131'),_0x40da8e['message']));}}return this[_0x9a26('0x37')]['error'](_0x596511,_0x9a26('0x132'));};AGIVertices['prototype'][_0x9a26('0x133')]=function(_0x1f67de){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x134'),_0x1f67de[_0x9a26('0xa3')],_0x1f67de[_0x9a26('0x62')]));if(!this[_0x9a26('0x7e')](_0x1f67de[_0x9a26('0x73')])){return this['channel'][_0x9a26('0xa6')](_0x9a26('0xe5'));}var _0x3aeef9=_0x9a26('0x135');var _0x480366=util['format'](_0x9a26('0x136'),FILES_PATH,rs[_0x9a26('0x119')](0x4));var _0x5e5077=util['format']('%s.%s',_0x480366,_0x3aeef9);var _0x1c98dd=!![];if(_0x1f67de[_0x9a26('0x137')]===_0x9a26('0x138')){_0x1c98dd=![];}var _0x2e6164=this[_0x9a26('0x37')][_0x9a26('0x139')](_0x480366,_0x3aeef9,_0x1f67de['intKey'],_0x1f67de[_0x9a26('0x62')],undefined,_0x1c98dd);if(_0x2e6164['result']!==-0x1){this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')]('google\x20%s\x20file\x20created',_0x5e5077));var _0xcddfe=this[_0x9a26('0x88')][_0x9a26('0xa0')](this,_0x1f67de,_0x5e5077);if(_0xcddfe){for(var _0x261837 in _0xcddfe){if(_0xcddfe['hasOwnProperty'](_0x261837)){this['channel'][_0x9a26('0x99')](util[_0x9a26('0x28')](_0x9a26('0x13a'),_0x261837[_0x9a26('0xe7')]()),_0xcddfe[_0x261837]);}}return this[_0x9a26('0x37')]['noop'](util[_0x9a26('0x28')](_0x9a26('0x13b'),JSON[_0x9a26('0x6e')](_0xcddfe)));}}return _0x2e6164;};AGIVertices[_0x9a26('0xd')][_0x9a26('0x13c')]=function(_0x4a42e7){logger['info'](util[_0x9a26('0x28')]('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x4a42e7[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x4a42e7[_0x9a26('0x8b')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x13d'));}if(!this['isConfigured'](_0x4a42e7[_0x9a26('0x8c')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x13e'));}var _0x2c4750=_0x9a26('0x135');var _0x86d36c=util['format'](_0x9a26('0x136'),FILES_PATH,rs[_0x9a26('0x119')](0x4));var _0x2e2fef=util[_0x9a26('0x28')](_0x9a26('0x98'),_0x86d36c,_0x2c4750);var _0x5c41f2=!![];if(_0x4a42e7[_0x9a26('0x137')]===_0x9a26('0x138')){_0x5c41f2=![];}var _0x35c028=this[_0x9a26('0x37')][_0x9a26('0x139')](_0x86d36c,_0x2c4750,_0x4a42e7[_0x9a26('0x13f')],_0x4a42e7[_0x9a26('0x62')],undefined,_0x5c41f2);if(_0x35c028['result']!==-0x1){this['channel'][_0x9a26('0xa6')](util['format'](_0x9a26('0x140'),_0x2e2fef));var _0x4de664=this['tildeASR'][_0x9a26('0xa0')](this,_0x4a42e7,_0x2e2fef);if(_0x4de664){for(var _0x246b8f in _0x4de664){if(_0x4de664[_0x9a26('0x8f')](_0x246b8f)){this[_0x9a26('0x37')][_0x9a26('0x99')](util['format'](_0x9a26('0x141'),_0x246b8f[_0x9a26('0xe7')]()),_0x4de664[_0x246b8f]);}}return this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x142'),JSON[_0x9a26('0x6e')](_0x4de664)));}}return _0x35c028;};AGIVertices[_0x9a26('0xd')][_0x9a26('0x143')]=function(_0x1c50f2){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x144'),_0x1c50f2['label']));return this['channel'][_0x9a26('0x145')](_0x1c50f2[_0x9a26('0x3b')],_0x1c50f2['extension'],_0x1c50f2[_0x9a26('0x146')]);};AGIVertices[_0x9a26('0xd')]['gotoif']=function(_0x4b1e48){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x4b1e48[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x4b1e48[_0x9a26('0x147')])){return this[_0x9a26('0x37')]['error'](_0x4b1e48,'no\x20condition\x20configured');}try{var _0x295647=eval(_0x4b1e48[_0x9a26('0x147')])?_0x9a26('0x148'):'false';this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format'](_0x9a26('0x149'),_0x4b1e48[_0x9a26('0x147')],_0x295647));return{'code':0xc8,'result':_0x295647};}catch(_0x3cc4e8){return{'code':0xc8,'result':_0x9a26('0x14a')};}};AGIVertices[_0x9a26('0xd')][_0x9a26('0x14b')]=function(_0x150abb){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x14c'),_0x150abb[_0x9a26('0xa3')]));if(!this['isConfigured'](_0x150abb[_0x9a26('0x14d')])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x150abb,_0x9a26('0x14e'));}var _0xd7197=this['getIntervals'][_0x9a26('0xa0')](this,_0x150abb['interval_id']);if(!_0xd7197){return this['channel'][_0x9a26('0x2f')](_0x150abb,'no\x20intervals\x20found');}for(var _0x2445f3=0x0;_0x2445f3<_0xd7197[_0x9a26('0x96')];_0x2445f3+=0x1){var _0x401fec=this[_0x9a26('0x37')]['getVariable'](util[_0x9a26('0x28')]('IFTIME(%s?true:false)',_0xd7197[_0x2445f3]));if(_0x401fec[_0x9a26('0x9d')]===-0x1){return _0x401fec;}logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x14f'),_0xd7197[_0x2445f3],_0x401fec[_0x9a26('0x9b')]));if(_0x401fec['extra']===_0x9a26('0x148')){logger['info'](util[_0x9a26('0x28')](_0x9a26('0x14f'),_0xd7197[_0x2445f3],_0x9a26('0x148')));this[_0x9a26('0x37')]['noop'](util[_0x9a26('0x28')](_0x9a26('0x14f'),_0xd7197[_0x2445f3],_0x9a26('0x148')));return{'code':0xc8,'result':_0x9a26('0x148')};}else{logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x14f'),_0xd7197[_0x2445f3],_0x9a26('0x14a')));this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x14f'),_0xd7197[_0x2445f3],_0x9a26('0x14a')));}}return{'code':0xc8,'result':'false'};};AGIVertices['prototype'][_0x9a26('0x150')]=function(_0x1a80ac){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x1a80ac[_0x9a26('0xa3')]));return this[_0x9a26('0x37')]['hangup']();};AGIVertices[_0x9a26('0xd')][_0x9a26('0x151')]=function(_0x2206ad){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x2206ad['label']));if(!this[_0x9a26('0x7e')](_0x2206ad['key'])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xe5'));}var _0x41c6ff=_0x9a26('0x135');var _0x52d81b=util[_0x9a26('0x28')]('%s/recordings/%s',FILES_PATH,rs[_0x9a26('0x119')](0x4));var _0x286304=util['format'](_0x9a26('0x98'),_0x52d81b,_0x41c6ff);var _0x1a4892=!![];if(_0x2206ad[_0x9a26('0x137')]===_0x9a26('0x138')){_0x1a4892=![];}var _0x323de9=this[_0x9a26('0x37')][_0x9a26('0x139')](_0x52d81b,_0x41c6ff,_0x2206ad['intKey'],_0x2206ad[_0x9a26('0x62')],undefined,_0x1a4892);if(_0x323de9[_0x9a26('0x9d')]!==-0x1){this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x152'),_0x286304));var _0x2b1c1a=this[_0x9a26('0x7c')]['sync'](this,_0x2206ad,_0x286304);if(_0x2b1c1a){for(var _0x3bea50 in _0x2b1c1a){if(_0x2b1c1a['hasOwnProperty'](_0x3bea50)){this[_0x9a26('0x37')][_0x9a26('0x99')](util[_0x9a26('0x28')]('ISPEECH_ASR_%s',_0x3bea50['toUpperCase']()),_0x2b1c1a[_0x3bea50]);}}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')]('IspeechASR\x20Result\x20%s',JSON[_0x9a26('0x6e')](_0x2b1c1a)));}}return _0x323de9;};AGIVertices[_0x9a26('0xd')]['ispeechtts']=function(_0x3b394d){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x153'),_0x3b394d['label']));if(!this[_0x9a26('0x7e')](_0x3b394d[_0x9a26('0x73')])){return this[_0x9a26('0x37')]['noop'](_0x9a26('0xe5'));}if(!this[_0x9a26('0x7e')](_0x3b394d['text'])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xa4'));}this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x154'),_0x3b394d[_0x9a26('0x57')]));var _0x31a7ff=this[_0x9a26('0x7a')][_0x9a26('0xa0')](this,_0x3b394d);if(_0x31a7ff){this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format']('ispeech\x20%s\x20file\x20created',_0x31a7ff));var _0x13dc0a=this[_0x9a26('0x37')][_0x9a26('0x102')](_0x31a7ff,_0x3b394d[_0x9a26('0x13f')]);try{fs[_0x9a26('0x103')](_0x31a7ff+'.wav');}catch(_0x428fc4){logger[_0x9a26('0x2f')](_0x428fc4);}return _0x13dc0a;}return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x3b394d,_0x9a26('0x155'));};AGIVertices['prototype']['login']=function(_0x3cb423){logger['info'](util['format'](_0x9a26('0x156'),_0x3cb423[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x3cb423[_0x9a26('0x157')])){return this['channel']['error'](_0x3cb423,_0x9a26('0x158'));}logger['info'](util[_0x9a26('0x28')](_0x9a26('0x159'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x3cb423['findBy']));var _0x11ee29=this['agentLogin']['sync'](this,_0x3cb423['findBy']);if(_0x11ee29){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x15a'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x3cb423[_0x9a26('0x157')]));this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x3cb423[_0x9a26('0x157')]));return{'code':0xc8,'result':_0x9a26('0x15b')};}else{logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x15c'),this['channel'][_0x9a26('0x39')],_0x3cb423[_0x9a26('0x157')]));this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format'](_0x9a26('0x15c'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x3cb423[_0x9a26('0x157')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x9a26('0xd')][_0x9a26('0x15d')]=function(_0x90aa68){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x15e'),_0x90aa68[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x90aa68[_0x9a26('0x157')])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x90aa68,_0x9a26('0x158'));}logger['info'](util['format'](_0x9a26('0x159'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x90aa68[_0x9a26('0x157')]));var _0x8c2d88=this[_0x9a26('0x4c')][_0x9a26('0xa0')](this,_0x90aa68[_0x9a26('0x157')]);if(_0x8c2d88){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x15a'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x90aa68[_0x9a26('0x157')]));this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x9a26('0x37')]['callerid'],_0x90aa68['findBy']));return{'code':0xc8,'result':_0x9a26('0x15b')};}else{logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x15c'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x90aa68[_0x9a26('0x157')]));this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x15c'),this['channel']['callerid'],_0x90aa68[_0x9a26('0x157')]));return{'code':0xc8,'result':_0x9a26('0x15f')};}};AGIVertices['prototype']['math']=function(_0x4ea621){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x4ea621[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x4ea621['operation'])){return this['channel'][_0x9a26('0x2f')](_0x4ea621,_0x9a26('0x160'));}this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format']('math\x20%s',_0x4ea621[_0x9a26('0x161')]));var _0x32b00a=eval(_0x4ea621['operation']);if(!this[_0x9a26('0x7e')](_0x4ea621['variable_id'])){return this['channel']['noop'](_0x9a26('0xd7'));}var _0x4a01a2=this[_0x9a26('0xe')][_0x9a26('0xa0')](this,_0x4ea621[_0x9a26('0xd6')]);if(!_0x4a01a2){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x4ea621,_0x9a26('0xd8'));}if(_['isArray'](_0x32b00a)){var _0x3aba05=this;_0x32b00a[_0x9a26('0x162')](function(_0x51845f,_0x582abc){_0x3aba05[_0x9a26('0x37')][_0x9a26('0x99')](util['format'](_0x9a26('0x163'),_0x4a01a2,_0x582abc),_0x51845f);});return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x164'),_0x4a01a2));}else{return this[_0x9a26('0x37')][_0x9a26('0x99')](_0x4a01a2,_0x32b00a);}};AGIVertices[_0x9a26('0xd')][_0x9a26('0xb')]=function(_0x3a0150){logger['info'](util[_0x9a26('0x28')](_0x9a26('0x165'),_0x3a0150[_0x9a26('0xa3')]));if(_0x3a0150[_0x9a26('0x112')]===0x0){return this[_0x9a26('0x9f')](_0x3a0150);}_0x3a0150[_0x9a26('0x112')]-=0x1;if(!this[_0x9a26('0x7e')](_0x3a0150['file_id'])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x3a0150,_0x9a26('0x114'));}var _0x5e10d9=this[_0x9a26('0x1d')][_0x9a26('0xa0')](this,_0x3a0150['file_id']);if(!_0x5e10d9){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x3a0150,_0x9a26('0x166'));}var _0x4f32e5=this[_0x9a26('0x37')][_0x9a26('0x115')](_0x5e10d9,_0x3a0150['response'],_0x3a0150['digit']);var _0x24cc2d=_0x4f32e5[_0x9a26('0x9d')];if(_0x4f32e5['result']===-0x1){this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x3a0150,'-1');return _0x4f32e5;}else if(_0x4f32e5[_0x9a26('0x9b')]===_0x9a26('0x62')){_0x4f32e5[_0x9a26('0x9d')]=_0x4f32e5['result'][_0x9a26('0x96')]>0x0?_0x4f32e5[_0x9a26('0x9d')]:'t';}else if(_[_0x9a26('0x40')](_0x4f32e5['result'])){_0x4f32e5[_0x9a26('0x9d')]='#';_0x24cc2d='#';}if(!this[_0x9a26('0x7e')](_0x3a0150[_0x9a26('0xd6')])){this['channel'][_0x9a26('0xa6')](_0x9a26('0xd7'));}else{var _0x429db6=this['getVariable'][_0x9a26('0xa0')](this,_0x3a0150[_0x9a26('0xd6')]);if(!_0x429db6){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x3a0150,_0x9a26('0xd8'));}this[_0x9a26('0x37')]['setVariable'](_0x429db6,_0x24cc2d);}this[_0x9a26('0x34')]['sync'](this,_0x3a0150,_0x24cc2d);return _0x4f32e5;};AGIVertices[_0x9a26('0xd')][_0x9a26('0xa6')]=function(_0xd0b6a5){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x167'),_0xd0b6a5[_0x9a26('0xa3')]));return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0xd0b6a5['output']||_0xd0b6a5[_0x9a26('0xa3')]);};AGIVertices['prototype'][_0x9a26('0x168')]=function(_0x4f9530){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x169'),_0x4f9530['label']));if(!this[_0x9a26('0x7e')](_0x4f9530[_0x9a26('0x157')])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x4f9530,_0x9a26('0x158'));}logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x159'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x4f9530[_0x9a26('0x157')]));var _0xcfc8ab=this[_0x9a26('0x16a')][_0x9a26('0xa0')](this,_0x4f9530[_0x9a26('0x16b')]);var _0x4da9d3=this[_0x9a26('0x16c')][_0x9a26('0xa0')](this,_0x4f9530[_0x9a26('0x157')],_0xcfc8ab);if(_0x4da9d3){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x15a'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x4f9530[_0x9a26('0x157')]));this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x15a'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x4f9530[_0x9a26('0x157')]));return{'code':0xc8,'result':_0x9a26('0x15b')};}else{logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x9a26('0x37')][_0x9a26('0x39')],_0x4f9530[_0x9a26('0x157')]));this[_0x9a26('0x37')]['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x9a26('0x37')][_0x9a26('0x39')],_0x4f9530[_0x9a26('0x157')]));return{'code':0xc8,'result':_0x9a26('0x15f')};}};AGIVertices[_0x9a26('0xd')][_0x9a26('0x16d')]=function(_0xcaeb09){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x16e'),_0xcaeb09[_0x9a26('0xa3')]));if(!this['isConfigured'](_0xcaeb09[_0x9a26('0x113')])){return this['channel'][_0x9a26('0x2f')](_0xcaeb09,_0x9a26('0x114'));}var _0x27f02c=this[_0x9a26('0x1d')][_0x9a26('0xa0')](this,_0xcaeb09['file_id']);if(!_0x27f02c){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0xcaeb09,_0x9a26('0x166'));}var _0x49940d=this['channel'][_0x9a26('0x51')](_0x9a26('0x16f'),[_0x27f02c,_0xcaeb09[_0x9a26('0xe2')]]);if(_0x49940d[_0x9a26('0x9d')]===-0x1){return _0x49940d;}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xc2'),_0x9a26('0x16f'),_0x27f02c));};AGIVertices['prototype'][_0x9a26('0x170')]=function(_0x4f5c3a){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x171'),_0x4f5c3a[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x4f5c3a[_0x9a26('0x172')])){return this[_0x9a26('0x37')]['error'](_0x4f5c3a,_0x9a26('0x173'));}var _0x521bca='';var _0x141b44=parseInt(_0x4f5c3a[_0x9a26('0x172')],0xa);if(isNaN(_0x141b44)){_0x521bca=_0x4f5c3a[_0x9a26('0x172')];}else{_0x521bca=this[_0x9a26('0x13')][_0x9a26('0xa0')](this,_0x4f5c3a['queue_id']);if(!_0x521bca){return this[_0x9a26('0x37')]['error'](_0x4f5c3a,'no\x20queue\x20found');}}var _0x215f7d='';if(this[_0x9a26('0x7e')](_0x4f5c3a[_0x9a26('0x113')])){var _0x381158=this[_0x9a26('0x1d')][_0x9a26('0xa0')](this,_0x4f5c3a[_0x9a26('0x113')]);if(_0x381158){_0x215f7d=_0x381158;}}this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x4f5c3a,_0x521bca);if(_0x4f5c3a['opts'][_0x9a26('0x174')]('x')<0x0){_0x4f5c3a['opts']+='x';}if(_0x4f5c3a[_0x9a26('0xe2')][_0x9a26('0x174')]('X')<0x0){_0x4f5c3a[_0x9a26('0xe2')]+='X';}this[_0x9a26('0x37')][_0x9a26('0x99')](_0x9a26('0x175'),_0x521bca?_0x521bca[_0x9a26('0x176')]():'');var _0x34a7eb=this[_0x9a26('0x37')]['exec'](_0x9a26('0x177'),[_0x521bca,_0x4f5c3a[_0x9a26('0xe2')],_0x4f5c3a[_0x9a26('0x61')],_0x215f7d,_0x4f5c3a['timeout'],_0x4f5c3a[_0x9a26('0x8')],_0x4f5c3a['macro'],_0x4f5c3a[_0x9a26('0x178')],'',_0x4f5c3a[_0x9a26('0x179')]]);if(_0x34a7eb['result']===-0x1){return _0x34a7eb;}return this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xc2'),_0x9a26('0x177'),_0x521bca));};AGIVertices['prototype']['record']=function(_0x11b422){logger['info'](util['format'](_0x9a26('0x17a'),_0x11b422[_0x9a26('0xa3')]));var _0x2788e2=_0x11b422[_0x9a26('0x17b')]||'wav';var _0xbfb237=util[_0x9a26('0x28')](_0x9a26('0x17c'),this[_0x9a26('0x37')]['uniqueid'],rs[_0x9a26('0x119')](0x5));var _0x318322=util['format'](_0x9a26('0x17d'),FILES_PATH,_0xbfb237,_0x2788e2);var _0x1d027c=util[_0x9a26('0x28')](_0x9a26('0x136'),FILES_PATH,_0xbfb237);this[_0x9a26('0x3a')]['sync'](this,_0x11b422,_0xbfb237,_0x318322);this[_0x9a26('0x37')][_0x9a26('0x99')](_0x9a26('0x17e'),_0xbfb237);logger[_0x9a26('0x2c')](_0x9a26('0x17f'),_0x1d027c,_0x2788e2,_0x11b422[_0x9a26('0x180')],_0x11b422[_0x9a26('0x62')]);return this[_0x9a26('0x37')][_0x9a26('0x139')](_0x1d027c,_0x2788e2,_0x11b422[_0x9a26('0x180')],_0x11b422[_0x9a26('0x62')],undefined,!![]);};AGIVertices[_0x9a26('0xd')]['restapi']=function(_0x2ee771){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x181'),_0x2ee771[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x2ee771['url'])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x182'));}var _0x56895a=this[_0x9a26('0x60')][_0x9a26('0xa0')](this,_0x2ee771);logger[_0x9a26('0x2c')](util['format']('Response:',util[_0x9a26('0x183')](_0x56895a,{'showHidden':![],'depth':null})));if(!this[_0x9a26('0x7e')](_0x2ee771[_0x9a26('0xd6')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x3ee3fc=this[_0x9a26('0xe')][_0x9a26('0xa0')](this,_0x2ee771[_0x9a26('0xd6')]);if(!_0x3ee3fc){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x2ee771,_0x9a26('0xd8'));}this[_0x9a26('0x37')][_0x9a26('0x99')](util[_0x9a26('0x28')](_0x9a26('0x184'),_0x3ee3fc),_0x56895a[_0x9a26('0x6f')]?_0x56895a['statusCode']:_0x9a26('0x185'));this['channel']['setVariable'](util[_0x9a26('0x28')]('%s_STATUS_MESSAGE',_0x3ee3fc),_0x56895a['statusMessage']?_0x56895a[_0x9a26('0x70')]:'OK');if(_0x56895a['body']){try{this['saveRestApiResult'](_0x56895a[_0x9a26('0x67')],_0x3ee3fc);}catch(_0x132a2a){logger[_0x9a26('0x2f')](util[_0x9a26('0x28')](_0x9a26('0x186'),_0x3ee3fc));}}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xdb'),_0x3ee3fc));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x187')]=function(_0x18733c){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x188'),_0x18733c[_0x9a26('0xa3')]));return this[_0x9a26('0x37')][_0x9a26('0x189')](_0x18733c[_0x9a26('0x18a')][_0x9a26('0x53')](/\s+/g,''),_0x18733c[_0x9a26('0x180')]);};AGIVertices[_0x9a26('0xd')][_0x9a26('0x18b')]=function(_0x42462f){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x18c'),_0x42462f[_0x9a26('0xa3')]));return this['channel'][_0x9a26('0x18d')](_0x42462f[_0x9a26('0x18e')][_0x9a26('0x53')](/\s+/g,''),_0x42462f[_0x9a26('0x180')]);};AGIVertices['prototype'][_0x9a26('0x18f')]=function(_0x223efc){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x190'),_0x223efc[_0x9a26('0xa3')]));return this['channel'][_0x9a26('0x191')](_0x223efc[_0x9a26('0x57')],_0x223efc[_0x9a26('0x180')]);};AGIVertices['prototype']['sendMail']=function(_0x5857b9){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x192'),_0x5857b9['label']));if(!this[_0x9a26('0x7e')](_0x5857b9[_0x9a26('0x193')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')]('no\x20mail\x20account\x20configured');}var _0x32dc8c=this[_0x9a26('0x21')][_0x9a26('0xa0')](this,_0x5857b9['account_id']);if(!_0x32dc8c||!_0x32dc8c[_0x9a26('0x194')]){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x5857b9,_0x9a26('0x195'));}var _0x5916de={'from':util[_0x9a26('0x28')](_0x9a26('0x196'),_0x32dc8c['name'],_0x32dc8c[_0x9a26('0x197')]||_0x32dc8c[_0x9a26('0x194')]['user']),'to':_0x5857b9['to']||'','cc':_0x5857b9['cc']||'','bcc':_0x5857b9[_0x9a26('0x198')]||'','subject':_0x5857b9[_0x9a26('0x199')],'html':_0x5857b9[_0x9a26('0x57')],'text':_0x5857b9[_0x9a26('0x57')]};var _0x94d2cf={'tls':{'rejectUnauthorized':![]}};if(_0x32dc8c[_0x9a26('0x194')][_0x9a26('0x19a')]){_0x94d2cf[_0x9a26('0x19a')]=_0x32dc8c['Smtp']['service'];}else{_0x94d2cf['host']=_0x32dc8c['Smtp'][_0x9a26('0x19b')];_0x94d2cf['port']=_0x32dc8c[_0x9a26('0x194')][_0x9a26('0x19c')];_0x94d2cf[_0x9a26('0x19d')]=_0x32dc8c[_0x9a26('0x194')][_0x9a26('0x19d')];}if(_0x32dc8c[_0x9a26('0x194')]['authentication']){_0x94d2cf[_0x9a26('0x19e')]={'user':_0x32dc8c['Smtp'][_0x9a26('0x19f')],'pass':_0x32dc8c[_0x9a26('0x194')]['pass']};}if(this['isConfigured'](_0x5857b9[_0x9a26('0x1a0')])){}logger[_0x9a26('0xdd')]('sendMail\x20message',JSON[_0x9a26('0x6e')](_0x5916de));this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x5857b9,_0x5857b9['account_id']);this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x1a1'),_0x32dc8c[_0x9a26('0x11')]));this[_0x9a26('0x23')][_0x9a26('0xa0')](this,_0x94d2cf,_0x5916de);return this['channel'][_0x9a26('0xa6')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x9a26('0xd')]['sendFax']=function(_0x3f278d){logger['info'](util[_0x9a26('0x28')](_0x9a26('0x1a2'),_0x3f278d['label']));return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x1a3'));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1a4')]=function(_0x906412){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x1a5'),_0x906412['label']));if(!this[_0x9a26('0x7e')](_0x906412[_0x9a26('0x1a6')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x1a7'));}var _0x1f3af4=this[_0x9a26('0x31')][_0x9a26('0xa0')](this,_0x906412[_0x9a26('0x1a6')]);if(!_0x1f3af4){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x906412,_0x9a26('0x1a8'));}var _0x4a66f3={'body':_0x906412[_0x9a26('0x1a9')],'phone':_0x906412['to']||'','SmsAccountId':_0x1f3af4['id']};logger[_0x9a26('0xdd')](_0x9a26('0x1aa'),JSON['stringify'](_0x4a66f3));this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x906412,_0x906412[_0x9a26('0x1a6')]);this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format'](_0x9a26('0x1ab'),_0x1f3af4[_0x9a26('0x11')]));this[_0x9a26('0x33')][_0x9a26('0xa0')](this,_0x4a66f3);return this['channel'][_0x9a26('0xa6')](_0x9a26('0x1ac'));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1ad')]=function(_0x34b96d){logger[_0x9a26('0x2c')](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x34b96d[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x34b96d[_0x9a26('0xd6')])){return this['channel']['error'](_0x34b96d,_0x9a26('0x1ae'));}var _0x478f48=this[_0x9a26('0xe')]['sync'](this,_0x34b96d['variable_id']);if(!_0x478f48){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x34b96d,_0x9a26('0xd8'));}return this[_0x9a26('0x37')][_0x9a26('0x99')](_0x478f48,_0x34b96d[_0x9a26('0x1af')]);};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1b0')]=function(_0x643b71){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x1b1'),_0x643b71[_0x9a26('0xa3')]));this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x1b2'));if(_0x643b71[_0x9a26('0xb6')]===_0x9a26('0x1b3')){this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x1b4'));return this[_0x9a26('0x37')][_0x9a26('0xb6')]();}return this[_0x9a26('0x37')]['noop']('Skipped\x20Answer');};AGIVertices['prototype'][_0x9a26('0x1b5')]=function(_0x10a3b5){logger[_0x9a26('0x2c')](util['format']('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x10a3b5[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x10a3b5['project_id'])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x10a3b5,_0x9a26('0x1b6'));}var _0x25a24b=this[_0x9a26('0x15')][_0x9a26('0xa0')](this,_0x10a3b5[_0x9a26('0x1b7')]);if(!this[_0x9a26('0x7e')](_0x25a24b)){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x10a3b5,util[_0x9a26('0x28')](_0x9a26('0x1b8'),_0x10a3b5[_0x9a26('0x1b7')]));}if(_0x25a24b===this[_0x9a26('0x37')][_0x9a26('0x38')]){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x10a3b5,_0x9a26('0x1b9'));}this[_0x9a26('0x34')]['sync'](this,_0x10a3b5,_0x25a24b);var _0x32b293=this[_0x9a26('0x37')][_0x9a26('0x51')](_0x9a26('0x1ba'),util[_0x9a26('0x28')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x9a26('0x8')][_0x9a26('0x19b')]||_0x9a26('0x1bb'),_0x25a24b,this[_0x9a26('0x37')][_0x9a26('0x38')]));if(_0x32b293[_0x9a26('0x9d')]===-0x1){return _0x32b293;}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format']('Executed\x20command\x20%s\x20%s',_0x9a26('0x1ba'),_0x25a24b));};AGIVertices['prototype'][_0x9a26('0x1bc')]=function(_0x553868){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x1bd'),_0x553868[_0x9a26('0xa3')]));var _0x17a763=this[_0x9a26('0x50')][_0x9a26('0xa0')](this,_0x553868[_0x9a26('0xb3')]);this[_0x9a26('0x34')][_0x9a26('0xa0')](this,_0x553868,_0x553868['command']);if(this['isConfigured'](_0x553868[_0x9a26('0xd6')])){var _0x18ca6b=this[_0x9a26('0xe')][_0x9a26('0xa0')](this,_0x553868['variable_id']);if(_0x18ca6b){this[_0x9a26('0x37')][_0x9a26('0x99')](_0x18ca6b,_0x17a763);return this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x553868['command'],_0x18ca6b));}}return this[_0x9a26('0x37')][_0x9a26('0xa6')](util['format'](_0x9a26('0x1be'),_0x553868[_0x9a26('0xb3')]));};AGIVertices[_0x9a26('0xd')]['google_cloud_tts']=function(_0x531640){logger[_0x9a26('0x2c')](util['format'](_0x9a26('0x1bf'),_0x531640[_0x9a26('0xa3')]));_0x531640[_0x9a26('0x57')]=_0x531640['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x9a26('0x7e')](_0x531640[_0x9a26('0x55')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0x1c0'));}if(!this[_0x9a26('0x7e')](_0x531640[_0x9a26('0x57')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')]('no\x20text\x20configured');}this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x531640[_0x9a26('0x57')]));var _0x23a571=this['googleCloudTTS']['sync'](this,_0x531640);if(_0x23a571){this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x1c1'),_0x23a571));var _0xc665c3=this[_0x9a26('0x37')][_0x9a26('0x102')](_0x23a571);try{fs[_0x9a26('0x103')](_0x23a571+_0x9a26('0x104'));}catch(_0x27680f){logger[_0x9a26('0x2f')](_0x27680f);}return _0xc665c3;}return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x531640,_0x9a26('0x1c2'));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1c3')]=function(_0x17f4aa){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x1c4'),_0x17f4aa['label']));_0x17f4aa[_0x9a26('0x57')]=_0x17f4aa['text'][_0x9a26('0x53')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x9a26('0x7e')](_0x17f4aa[_0x9a26('0x57')])){return this[_0x9a26('0x37')][_0x9a26('0xa6')](_0x9a26('0xa4'));}this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')]('Trying\x20Google\x20TTS\x20%s',_0x17f4aa[_0x9a26('0x57')]));var _0x2eb5a7=this[_0x9a26('0x5e')][_0x9a26('0xa0')](this,_0x17f4aa);if(_0x2eb5a7){this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x1c5'),_0x2eb5a7));var _0x5ed2b3=this[_0x9a26('0x37')][_0x9a26('0x102')](_0x2eb5a7);try{fs[_0x9a26('0x103')](_0x2eb5a7+'.wav');}catch(_0x1e2213){logger[_0x9a26('0x2f')](_0x1e2213);}return _0x5ed2b3;}return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x17f4aa,_0x9a26('0x1c6'));};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1c7')]=function(_0x35370a){logger['info'](util[_0x9a26('0x28')](_0x9a26('0x1c8'),_0x35370a[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x35370a['findBy'])){return this['channel'][_0x9a26('0x2f')](_0x35370a,_0x9a26('0x158'));}logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x159'),this['channel'][_0x9a26('0x39')],_0x35370a[_0x9a26('0x157')]));var _0x5c98ef=this[_0x9a26('0x4a')][_0x9a26('0xa0')](this,_0x35370a[_0x9a26('0x157')]);if(_0x5c98ef){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x9a26('0x37')][_0x9a26('0x39')],_0x35370a['findBy']));this[_0x9a26('0x37')][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0x15a'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x35370a[_0x9a26('0x157')]));return{'code':0xc8,'result':_0x9a26('0x15b')};}else{logger['info'](util['format'](_0x9a26('0x15c'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x35370a['findBy']));this[_0x9a26('0x37')]['noop'](util[_0x9a26('0x28')](_0x9a26('0x15c'),this[_0x9a26('0x37')][_0x9a26('0x39')],_0x35370a[_0x9a26('0x157')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x9a26('0xd')][_0x9a26('0x1c9')]=function(_0x5c44b7){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x1ca'),_0x5c44b7[_0x9a26('0xa3')]));var _0x145cad=this[_0x9a26('0x37')]['exec'](_0x9a26('0x1cb'),[_0x5c44b7[_0x9a26('0x1cc')],_0x5c44b7['options']]);if(_0x145cad[_0x9a26('0x9d')]===-0x1){return _0x145cad;}return this['channel'][_0x9a26('0xa6')](util[_0x9a26('0x28')](_0x9a26('0xc2'),_0x9a26('0x1cb'),_0x5c44b7[_0x9a26('0x1cc')]));};AGIVertices['prototype'][_0x9a26('0x1cd')]=function(_0x42d7e2){logger[_0x9a26('0x2c')](util[_0x9a26('0x28')](_0x9a26('0x1ce'),_0x42d7e2[_0x9a26('0xa3')]));if(!this[_0x9a26('0x7e')](_0x42d7e2[_0x9a26('0xd6')])){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x42d7e2,_0x9a26('0x1ae'));}var _0x51a749=this[_0x9a26('0xe')][_0x9a26('0xa0')](this,_0x42d7e2[_0x9a26('0xd6')]);if(!_0x51a749){return this[_0x9a26('0x37')][_0x9a26('0x2f')](_0x42d7e2,_0x9a26('0xd8'));}var _0x3ec85e=this[_0x9a26('0x37')][_0x9a26('0xe')](_0x51a749);return{'code':0xc8,'result':_0x3ec85e[_0x9a26('0x9b')]?_0x3ec85e[_0x9a26('0x9b')]:'-'};};String[_0x9a26('0xd')]['replaceAll']=function(_0x24262d,_0x4e6fc0){return this[_0x9a26('0x9a')](_0x24262d)[_0x9a26('0x1cf')](_0x4e6fc0);};module['exports']=AGIVertices;
\ No newline at end of file
+var _0x35b1=['no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','join','path','util','shelljs','odbc','randomstring','moment','request-promise','../../config/logger','../../config/environment','./scripts','/var/opt/motion2/server/files','rawBody','menu','getsecretdigits','channel','mailRpc','prototype','getVariable','rpc','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSoundById','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','map','Intervals','interval','format','getQueryOdbc','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','callerid','createSquareRecording','calleridname','context','extension','priority','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','getPause','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','MALE','audioEncoding','MP3','googleTTS','google_tts_language','method','number','timeout','POST','toUpperCase','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','url','render','body','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','ispeechASR','ispeech_asr_language','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','googleASR','tildeASR','appsecret','uri','includes','clone','hasOwnProperty','isString','replaceAllVariables','recursiveNodeIndex','isPlainObject','length','saveRestApiResult','%s.%s','isArray','setVariable','replaceObjectAllVariables','stringify','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','retry','mrcpsynth','no\x20text\x20configured','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','callback_priority','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','grammar','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','getSquareOdbc','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','forEach','keys','%s_ROWS_COUNT','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20found','trunk_name','no\x20trunk\x20selected','SIP/%s/%s','Executed\x20command\x20%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','getdigits','file_id','no\x20file\x20audio\x20selected','getSound','no\x20file\x20audio\x20found','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','maxdigit','test','mindigit','no\x20variable\x20found','hiddendigitsnum','generate','hiddendigitspos','first','substr','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','googleasr','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','no\x20interval\x20configured','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','unlink','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','success','logout','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','PLAYBACK','queue','queue_id','no\x20queue\x20found','toLowerCase','QUEUE','macro','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','inspect','no\x20variable\x20selected\x20for\x20the\x20response','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','subject','service','host','port','secure','authentication','auth','user','pass','template_id','debug','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','sendFax','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block'];(function(_0x5e2751,_0x518a55){var _0x139a39=function(_0x4802db){while(--_0x4802db){_0x5e2751['push'](_0x5e2751['shift']());}};_0x139a39(++_0x518a55);}(_0x35b1,0x1e5));var _0x135b=function(_0xfb02c9,_0x43c274){_0xfb02c9=_0xfb02c9-0x0;var _0x9afb71=_0x35b1[_0xfb02c9];return _0x9afb71;};'use strict';var fs=require('fs');var path=require(_0x135b('0x0'));var util=require(_0x135b('0x1'));var _=require('lodash');var sh=require(_0x135b('0x2'));var odbc=require(_0x135b('0x3'))();var rs=require(_0x135b('0x4'));var moment=require(_0x135b('0x5'));var Mustache=require('mustache');var rp=require(_0x135b('0x6'));var logger=require(_0x135b('0x7'))('agi');var config=require(_0x135b('0x8'));var scripts=require(_0x135b('0x9'));var FILES_PATH=_0x135b('0xa');var recursiveMapAttributes=['rawHeaders',_0x135b('0xb')];var verticesWithRetry=[_0x135b('0xc'),'getdigits',_0x135b('0xd')];var AGIVertices=function(_0xf662b9,_0x5866ad,_0x1e4d19){this[_0x135b('0xe')]=_0xf662b9;this['rpc']=_0x5866ad;this[_0x135b('0xf')]=_0x1e4d19;};AGIVertices[_0x135b('0x10')][_0x135b('0x11')]=function(_0x4a85f3,_0xfe4889){this[_0x135b('0x12')][_0x135b('0x13')](_0x4a85f3)[_0x135b('0x14')](function(_0x3704f5){_0xfe4889(null,_0x3704f5?_0x3704f5[_0x135b('0x15')]:![]);})[_0x135b('0x16')](function(_0x3b9fc4){_0xfe4889(_0x3b9fc4);});};AGIVertices[_0x135b('0x10')][_0x135b('0x17')]=function(_0x120a2a,_0x243c9d){this[_0x135b('0x12')][_0x135b('0x18')](_0x120a2a)['then'](function(_0x5de003){_0x243c9d(null,_0x5de003?_0x5de003[_0x135b('0x15')]:![]);})[_0x135b('0x16')](function(_0x506529){_0x243c9d(_0x506529);});};AGIVertices[_0x135b('0x10')][_0x135b('0x19')]=function(_0x2c59bf,_0xcf6377){this[_0x135b('0x12')][_0x135b('0x1a')](_0x2c59bf)[_0x135b('0x14')](function(_0xbcc39d){_0xcf6377(null,_0xbcc39d?_0xbcc39d[_0x135b('0x15')]:![]);})[_0x135b('0x16')](function(_0x531251){_0xcf6377(_0x531251);});};AGIVertices[_0x135b('0x10')]['getSquareOdbc']=function(_0xcd59ff,_0x31641a){this['rpc'][_0x135b('0x1b')](_0xcd59ff)['then'](function(_0x290067){_0x31641a(null,_0x290067?_0x290067[_0x135b('0x1c')]:![]);})[_0x135b('0x16')](function(_0x425268){_0x31641a(_0x425268);});};AGIVertices['prototype'][_0x135b('0x1d')]=function(_0x4c93db,_0x2c47ea){this[_0x135b('0x12')][_0x135b('0x1e')](_0x4c93db)['then'](function(_0xf7a0a0){_0x2c47ea(null,_0xf7a0a0?_0xf7a0a0[_0x135b('0x15')]:![]);})['catch'](function(_0x47e37c){_0x2c47ea(_0x47e37c);});};AGIVertices[_0x135b('0x10')][_0x135b('0x1f')]=function(_0x453585,_0x21fcae){this[_0x135b('0x12')][_0x135b('0x20')](_0x453585)[_0x135b('0x14')](function(_0x406705){_0x21fcae(null,_0x406705?_0x406705['name']:![]);})['catch'](function(_0x883b9c){_0x21fcae(_0x883b9c);});};AGIVertices[_0x135b('0x10')]['getSound']=function(_0x14bbac,_0x329ac6){var _0x6a5b2c=this;this[_0x135b('0x12')][_0x135b('0x21')](_0x14bbac)[_0x135b('0x14')](function(_0xcff2b8){_0x329ac6(null,_0xcff2b8?_0x6a5b2c['getSoundPath'](_0xcff2b8[_0x135b('0x22')]):![]);})[_0x135b('0x16')](function(_0x1b14f2){_0x329ac6(_0x1b14f2);});};AGIVertices['prototype'][_0x135b('0x23')]=function(_0x431e58,_0xd6b44d){this['rpc'][_0x135b('0x24')](_0x431e58)[_0x135b('0x14')](function(_0xbdd700){_0xd6b44d(null,_0xbdd700?_0xbdd700:![]);})[_0x135b('0x16')](function(_0x38095c){_0xd6b44d(_0x38095c);});};AGIVertices['prototype'][_0x135b('0x25')]=function(_0x198b8f,_0x4aa39e,_0x10bbad){this['mailRpc'][_0x135b('0x25')](_0x198b8f,_0x4aa39e)[_0x135b('0x14')](function(){_0x10bbad(null);})[_0x135b('0x16')](function(_0x55edfc){_0x10bbad(_0x55edfc);});};AGIVertices[_0x135b('0x10')][_0x135b('0x26')]=function(_0x1c4967,_0x3d060b){this[_0x135b('0x12')][_0x135b('0x27')](_0x1c4967)['then'](function(_0x3ceba6){if(_0x3ceba6){if(_0x3ceba6['IntervalId']){_0x3d060b(null,[_0x3ceba6['interval']]);}else{_0x3d060b(null,_[_0x135b('0x28')](_0x3ceba6[_0x135b('0x29')],_0x135b('0x2a')));}}else{_0x3d060b(null,![]);}})[_0x135b('0x16')](function(_0x8ef4e8){_0x3d060b(_0x8ef4e8);});};AGIVertices[_0x135b('0x10')]['getSoundPath']=function(_0x35c76e){return util[_0x135b('0x2b')]('%s/sounds/converted/%s',FILES_PATH,_0x35c76e);};AGIVertices['prototype'][_0x135b('0x2c')]=function(_0x158ec5,_0x1c2f3c,_0x447e86){odbc['open'](_0x158ec5,function(_0x2aed2f){if(_0x2aed2f){logger[_0x135b('0x2d')](_0x135b('0x2e'),_0x2aed2f);_0x447e86(_0x2aed2f);}else{logger[_0x135b('0x2f')](_0x135b('0x30'));odbc[_0x135b('0x31')](_0x1c2f3c,function(_0x570e17,_0x582c9f){if(_0x570e17){logger[_0x135b('0x2f')](_0x135b('0x32'),_0x1c2f3c);_0x447e86(_0x570e17);}else{logger[_0x135b('0x2f')](_0x135b('0x33'),_0x1c2f3c);odbc[_0x135b('0x34')](function(_0x57d531){if(_0x57d531){logger[_0x135b('0x2d')](_0x135b('0x35'),_0x57d531);}_0x447e86(null,_0x582c9f);});}});}});};AGIVertices[_0x135b('0x10')][_0x135b('0x36')]=function(_0x3d3333,_0x270c36){this[_0x135b('0x12')][_0x135b('0x37')](_0x3d3333)[_0x135b('0x14')](function(_0x149a00){_0x270c36(null,_0x149a00?_0x149a00:![]);})[_0x135b('0x16')](function(_0x5d747d){_0x270c36(_0x5d747d);});};AGIVertices['prototype'][_0x135b('0x38')]=function(_0x1a1335,_0x595eac){this[_0x135b('0x12')][_0x135b('0x38')](_0x1a1335)[_0x135b('0x14')](function(_0x4b1a2c){_0x595eac(null,_0x4b1a2c);})[_0x135b('0x16')](function(_0x304d6d){_0x595eac(_0x304d6d);});};AGIVertices['prototype'][_0x135b('0x39')]=function(_0x5645cb,_0x47b766,_0x2e9ce1){this[_0x135b('0x12')][_0x135b('0x39')]({'uniqueid':this[_0x135b('0xe')][_0x135b('0x3a')],'node':_0x5645cb[_0x135b('0x3b')],'application':_0x5645cb[_0x135b('0x3c')],'data':_0x47b766||null,'project_name':this['channel']['arg_1'],'callerid':this[_0x135b('0xe')][_0x135b('0x3d')]})['then'](function(_0x1ea7e3){if(_0x2e9ce1){_0x2e9ce1(null,_0x1ea7e3);}})['catch'](function(_0x507508){if(_0x2e9ce1){_0x2e9ce1(_0x507508);}});};AGIVertices[_0x135b('0x10')][_0x135b('0x3e')]=function(_0x36753e,_0x221fad,_0x4a7cf2,_0x53af6e){this['rpc']['createSquareRecording']({'uniqueid':this[_0x135b('0xe')][_0x135b('0x3a')],'callerid':this[_0x135b('0xe')][_0x135b('0x3d')],'calleridname':this[_0x135b('0xe')][_0x135b('0x3f')],'context':this[_0x135b('0xe')][_0x135b('0x40')],'extension':this[_0x135b('0xe')][_0x135b('0x41')],'priority':this[_0x135b('0xe')][_0x135b('0x42')],'accountcode':this['channel']['accountcode'],'dnid':this[_0x135b('0xe')][_0x135b('0x43')],'projectName':this['channel']['arg_1'],'saveName':_0x221fad,'filename':_0x36753e[_0x135b('0x44')]||_0x221fad,'savePath':_0x4a7cf2})[_0x135b('0x14')](function(_0x2d3c70){_0x53af6e(null,_0x2d3c70);})['catch'](function(_0x5ee33a){_0x53af6e(_0x5ee33a);});};AGIVertices[_0x135b('0x10')]['createSquareMessage']=function(_0x456daa,_0x40da8b,_0x5e9ae7,_0x5cb585,_0x28ede7){this[_0x135b('0x12')][_0x135b('0x45')]({'uniqueid':this['channel'][_0x135b('0x3a')],'body':_0x456daa,'direction':_0x40da8b,'providerName':_0x5e9ae7,'providerResponse':_0x5cb585})[_0x135b('0x14')](function(_0x29ae6e){if(_0x28ede7){_0x28ede7(null,_0x29ae6e);}})['catch'](function(_0xc12939){if(_0x28ede7){_0x28ede7(_0xc12939);}});};AGIVertices[_0x135b('0x10')][_0x135b('0x46')]=function(_0x5d54e7,_0x5cdf5d){this[_0x135b('0x12')][_0x135b('0x46')]({'firstName':_[_0x135b('0x47')](_0x5d54e7[_0x135b('0x15')])||_[_0x135b('0x48')](_0x5d54e7['name'])?'callback_'+Math[_0x135b('0x49')]():_0x5d54e7['name'],'lastName':_[_0x135b('0x47')](_0x5d54e7[_0x135b('0x4a')])||_[_0x135b('0x48')](_0x5d54e7[_0x135b('0x4a')])?null:_0x5d54e7[_0x135b('0x4a')],'phone':_0x5d54e7[_0x135b('0x4b')],'ListId':_0x5d54e7[_0x135b('0x4c')],'scheduledat':_0x5d54e7[_0x135b('0x4d')],'callbackUniqueid':this['channel'][_0x135b('0x3a')],'tags':'callback','description':_0x135b('0x4e')+_0x5d54e7['scheduledAt'][_0x135b('0x4f')](),'priority':_0x5d54e7['callback_priority']})[_0x135b('0x14')](function(_0x2ed835){_0x5cdf5d(null,_0x2ed835);})[_0x135b('0x16')](function(_0x1d0b3f){_0x5cdf5d(_0x1d0b3f);});};AGIVertices[_0x135b('0x10')][_0x135b('0x50')]=function(_0x582bb4,_0x825044){this['rpc']['getPauseById'](_0x582bb4)[_0x135b('0x14')](function(_0xb05caf){_0x825044(null,_0xb05caf?_0xb05caf[_0x135b('0x15')]:![]);})['catch'](function(_0x45cf92){_0x825044(_0x45cf92);});};AGIVertices[_0x135b('0x10')][_0x135b('0x51')]=function(_0x4d455d,_0x522b09,_0x2e6248){var _0x4b800d={'role':_0x135b('0x52')};_0x4b800d[_0x4d455d]=this[_0x135b('0xe')][_0x135b('0x3d')];this[_0x135b('0x12')][_0x135b('0x51')](_0x4b800d,_0x522b09,this[_0x135b('0xe')][_0x135b('0x3a')])[_0x135b('0x14')](function(_0x2c9ff7){_0x2e6248(null,_['isNil'](_0x2c9ff7)?![]:!![]);})[_0x135b('0x16')](function(_0xa49884){logger['error'](_0xa49884);_0x2e6248(null,![]);});};AGIVertices['prototype'][_0x135b('0x53')]=function(_0x575f02,_0x586b50){var _0x3bea7a={'role':_0x135b('0x52')};_0x3bea7a[_0x575f02]=this[_0x135b('0xe')][_0x135b('0x3d')];this['rpc'][_0x135b('0x53')](_0x3bea7a)[_0x135b('0x14')](function(_0x2e3c1c){_0x586b50(null,_['isNil'](_0x2e3c1c)?![]:!![]);})[_0x135b('0x16')](function(_0x392eae){logger[_0x135b('0x2d')](_0x392eae);_0x586b50(null,![]);});};AGIVertices[_0x135b('0x10')][_0x135b('0x54')]=function(_0x221d99,_0x43106b){var _0x29782d={'role':_0x135b('0x52')};_0x29782d[_0x221d99]=this['channel'][_0x135b('0x3d')];this[_0x135b('0x12')][_0x135b('0x54')](_0x29782d)['then'](function(_0x1a910c){_0x43106b(null,_[_0x135b('0x48')](_0x1a910c)?![]:!![]);})['catch'](function(_0x4a9bf8){logger['error'](_0x4a9bf8);_0x43106b(null,![]);});};AGIVertices[_0x135b('0x10')][_0x135b('0x55')]=function(_0x40d051,_0x3689a9){var _0x576a9a={'role':_0x135b('0x52')};_0x576a9a[_0x40d051]=this[_0x135b('0xe')]['callerid'];var _0x2705a2=_0x40d051!=_0x135b('0x56')?util['format'](_0x135b('0x57'),'LOCAL',this[_0x135b('0xe')]['callerid']):undefined;this[_0x135b('0x12')][_0x135b('0x55')](_0x576a9a,_0x2705a2)['then'](function(_0xad5887){_0x3689a9(null,_[_0x135b('0x48')](_0xad5887)?![]:!![]);})['catch'](function(_0x5c932f){logger[_0x135b('0x2d')](_0x5c932f);_0x3689a9(null,![]);});};AGIVertices[_0x135b('0x10')][_0x135b('0x58')]=function(_0x12c3db,_0x196c68){sh[_0x135b('0x59')](_[_0x135b('0x5a')](_0x12c3db),function(_0x48c843,_0xb243d5){var _0x4be75f=_0xb243d5[_0x135b('0x5b')](/(\r\n|\n|\r)/gm,'');_0x196c68(null,_0x4be75f);});};AGIVertices['prototype'][_0x135b('0x5c')]=function(_0x3f0669,_0x56feb7){scripts[_0x135b('0x5c')](_0x3f0669[_0x135b('0x5d')],_0x3f0669[_0x135b('0x5e')]||_0x135b('0x5f'),_0x3f0669[_0x135b('0x5f')],_0x3f0669[_0x135b('0x60')]||_0x135b('0x61'),_0x3f0669['ssmlGender']||_0x135b('0x62'),_0x3f0669[_0x135b('0x63')]||_0x135b('0x64'))[_0x135b('0x14')](function(_0xb50a53){_0x56feb7(null,_0xb50a53);})[_0x135b('0x16')](function(_0x3933b9){_0x56feb7(_0x3933b9);});};AGIVertices[_0x135b('0x10')][_0x135b('0x65')]=function(_0x504198,_0x1c36de){scripts[_0x135b('0x65')](_0x504198['text'],_0x504198[_0x135b('0x66')]||'en',0x1)[_0x135b('0x14')](function(_0x399080){_0x1c36de(null,_0x399080);})[_0x135b('0x16')](function(_0x26eea1){_0x1c36de(_0x26eea1);});};AGIVertices[_0x135b('0x10')]['restAPI']=function(_0x55dd48,_0x241b21){var _0x14239d={'uri':_0x55dd48['url'],'method':_0x55dd48[_0x135b('0x67')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x55dd48['timeout'])===_0x135b('0x68')&&parseInt(_0x55dd48['timeout'])>=0x1?parseInt(_0x55dd48[_0x135b('0x69')])*0x3e8:0x5*0x3e8};if(_['includes']([_0x135b('0x6a'),'PUT'],_0x14239d[_0x135b('0x67')][_0x135b('0x6b')]())){try{_0x14239d['body']=_0x55dd48['rawBody']?JSON[_0x135b('0x6c')](_0x55dd48[_0x135b('0xb')]):{};}catch(_0x2d4ab3){logger['error'](_0x135b('0x6d'),_0x2d4ab3);}}try{_0x14239d[_0x135b('0x6e')]=_0x55dd48[_0x135b('0x6f')]?JSON['parse'](_0x55dd48[_0x135b('0x6f')]):{};}catch(_0x43cae6){logger['error'](_0x135b('0x70'),_0x43cae6);}if(_0x55dd48[_0x135b('0x71')]){try{var _0x46a35d=require(_0x55dd48[_0x135b('0x71')])[_0x135b('0x72')](this,_0x14239d);_0x14239d['uri']=Mustache['render'](_0x55dd48[_0x135b('0x73')],_0x46a35d,{},['$$','$$']);if(_0x14239d[_0x135b('0x6e')]){_0x14239d[_0x135b('0x6e')]=JSON[_0x135b('0x6c')](Mustache[_0x135b('0x74')](JSON['stringify'](_0x14239d[_0x135b('0x6e')]),_0x46a35d,{},['$$','$$']));}if(_0x14239d[_0x135b('0x75')]){_0x14239d[_0x135b('0x75')]=JSON['parse'](Mustache[_0x135b('0x74')](JSON['stringify'](_0x14239d[_0x135b('0x75')]),_0x46a35d,{},['$$','$$']));}}catch(_0x31403b){logger[_0x135b('0x2d')](_0x135b('0x76'),_0x31403b);}}rp(_0x14239d)[_0x135b('0x14')](function(_0x1fc8da){var _0x1eee0a={'statusCode':_0x1fc8da[_0x135b('0x77')]||0xc8,'statusMessage':_0x1fc8da[_0x135b('0x78')]||'OK','headers':_0x1fc8da[_0x135b('0x6e')]||{},'body':_0x1fc8da[_0x135b('0x75')]||{}};_0x241b21(null,_0x1eee0a);})[_0x135b('0x16')](function(_0x19f141){var _0x197d0e={'statusCode':_0x19f141[_0x135b('0x77')]||0x1f4,'statusMessage':_0x19f141[_0x135b('0x79')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x19f141['options'][_0x135b('0x6e')]||{},'body':_0x19f141[_0x135b('0x7a')]['body']||{}};_0x241b21(null,_0x197d0e);});};AGIVertices[_0x135b('0x10')][_0x135b('0x7b')]=function(_0x1723fc,_0x142401){scripts[_0x135b('0x7b')](this[_0x135b('0xe')][_0x135b('0x3a')],_0x1723fc[_0x135b('0x7c')],_0x1723fc[_0x135b('0x5f')],_0x1723fc[_0x135b('0x7d')]||'en')[_0x135b('0x14')](function(_0x1c8971){_0x142401(null,_0x1c8971);})[_0x135b('0x16')](function(_0x49411b){_0x142401(_0x49411b);});};AGIVertices[_0x135b('0x10')][_0x135b('0x7e')]=function(_0x485aeb,_0x1480e9){scripts[_0x135b('0x7e')](this['channel'][_0x135b('0x3a')],_0x485aeb[_0x135b('0x7f')],_0x485aeb[_0x135b('0x80')],_0x485aeb['private_key'],_0x485aeb[_0x135b('0x5f')],_0x485aeb[_0x135b('0x81')]||'en')[_0x135b('0x14')](function(_0x3e0a80){_0x1480e9(null,_0x3e0a80);})['catch'](function(_0xedbe){_0x1480e9(_0xedbe);});};AGIVertices['prototype'][_0x135b('0x82')]=function(_0x4e898a,_0x5086ff){scripts[_0x135b('0x82')](this['channel'],_0x4e898a)['then'](function(_0x1f9b48){_0x5086ff(null,_0x1f9b48);})['catch'](function(_0x4ae8f3){_0x5086ff(_0x4ae8f3);});};AGIVertices['prototype'][_0x135b('0x83')]=function(_0xc0f103,_0x2310ef){scripts[_0x135b('0x83')](_0xc0f103[_0x135b('0x7c')],_0xc0f103[_0x135b('0x5f')],_0xc0f103[_0x135b('0x84')]||_0x135b('0x61'),_0xc0f103['speed'])[_0x135b('0x14')](function(_0x5deab5){_0x2310ef(null,_0x5deab5);})[_0x135b('0x16')](function(_0x25a578){_0x2310ef(_0x25a578);});};AGIVertices[_0x135b('0x10')]['ispeechASR']=function(_0x2da919,_0x35fa7d,_0x26a8b5){scripts[_0x135b('0x85')](_0x35fa7d,_0x2da919[_0x135b('0x7c')],_0x2da919[_0x135b('0x86')]||_0x135b('0x61'),this['isConfigured'](_0x2da919[_0x135b('0x87')])?_0x2da919[_0x135b('0x87')]:undefined)[_0x135b('0x14')](function(_0x424b7d){_0x26a8b5(null,_0x424b7d);})[_0x135b('0x16')](function(_0x57a609){_0x26a8b5(_0x57a609);});};AGIVertices[_0x135b('0x10')][_0x135b('0x88')]=function(_0x4fe7ed,_0x3bd059){scripts['awsPolly'](_0x4fe7ed[_0x135b('0x89')],_0x4fe7ed[_0x135b('0x8a')],_0x4fe7ed[_0x135b('0x8b')],_0x4fe7ed['aws_polly_voice']||_0x135b('0x8c'),_0x4fe7ed['text'],_0x4fe7ed[_0x135b('0x8d')]||_0x135b('0x5f'))[_0x135b('0x14')](function(_0xbb870a){_0x3bd059(null,_0xbb870a);})[_0x135b('0x16')](function(_0x25933b){_0x3bd059(_0x25933b);});};AGIVertices[_0x135b('0x10')][_0x135b('0x8e')]=function(_0x31ba3c,_0x283b11){scripts[_0x135b('0x8e')](this['channel']['uniqueid'],_0x31ba3c[_0x135b('0x89')],_0x31ba3c[_0x135b('0x8a')],_0x31ba3c['aws_lex_region'],_0x31ba3c[_0x135b('0x5f')],_0x31ba3c['aws_bot_name'])[_0x135b('0x14')](function(_0x507645){_0x283b11(null,_0x507645);})['catch'](function(_0x16cf62){_0x283b11(_0x16cf62);});};AGIVertices[_0x135b('0x10')]['googleASR']=function(_0x46f146,_0x33b01b,_0x480d7c){scripts[_0x135b('0x8f')](_0x33b01b,_0x46f146[_0x135b('0x7c')],_0x46f146['google_asr_language']||'en-US')[_0x135b('0x14')](function(_0x49e33c){_0x480d7c(null,_0x49e33c);})[_0x135b('0x16')](function(_0x46e297){_0x480d7c(_0x46e297);});};AGIVertices[_0x135b('0x10')][_0x135b('0x90')]=function(_0x50dfa2,_0x67441e,_0xe911a5){scripts[_0x135b('0x90')](_0x67441e,_0x50dfa2['appid'],_0x50dfa2[_0x135b('0x91')],_0x50dfa2[_0x135b('0x92')])[_0x135b('0x14')](function(_0x4352e0){_0xe911a5(null,_0x4352e0);})[_0x135b('0x16')](function(_0x26ed7d){_0xe911a5(_0x26ed7d);});};AGIVertices['prototype']['clear']=function(_0x40f53c){var _0x5a4028=_[_0x135b('0x93')](verticesWithRetry,_0x40f53c[_0x135b('0x3c')])?_0x40f53c:_[_0x135b('0x94')](_0x40f53c);for(var _0x330f23 in _0x5a4028){if(_0x5a4028[_0x135b('0x95')](_0x330f23)){if(_0x5a4028[_0x330f23]&&_[_0x135b('0x96')](_0x5a4028[_0x330f23])){if(_['includes'](recursiveMapAttributes,_0x330f23)){_0x5a4028[_0x330f23]=this['replaceObjectAllVariables'](_0x5a4028[_0x330f23]);}else{_0x5a4028[_0x330f23]=this[_0x135b('0x97')](_0x5a4028[_0x330f23]);}}}}return _0x5a4028;};AGIVertices[_0x135b('0x10')][_0x135b('0x98')]=function(_0xd341){for(var _0xeb0590 in _0xd341){if(_0xd341[_0x135b('0x95')](_0xeb0590)){if(_[_0x135b('0x99')](_0xd341[_0xeb0590])){this[_0x135b('0x98')](_0xd341[_0xeb0590]);}else if(_['isArray'](_0xd341[_0xeb0590])){for(var _0x43ec91=0x0;_0x43ec91<_0xd341[_0xeb0590][_0x135b('0x9a')];_0x43ec91++){this['recursiveNodeIndex'](_0xd341[_0xeb0590][_0x43ec91]);}}else if(_[_0x135b('0x96')](_0xd341[_0xeb0590])){_0xd341[_0xeb0590]=this[_0x135b('0x97')](_0xd341[_0xeb0590]);}}}};AGIVertices[_0x135b('0x10')][_0x135b('0x9b')]=function(_0x2ff30c,_0x111dbd){for(var _0x2e165b in _0x2ff30c){if(_0x2ff30c['hasOwnProperty'](_0x2e165b)){if(_[_0x135b('0x99')](_0x2ff30c[_0x2e165b])){if(!_[_0x135b('0x47')](_0x2ff30c[_0x2e165b])){this[_0x135b('0x9b')](_0x2ff30c[_0x2e165b],util[_0x135b('0x2b')](_0x135b('0x9c'),_0x111dbd,_0x2e165b));}}else if(_[_0x135b('0x9d')](_0x2ff30c[_0x2e165b])){for(var _0x33421b=0x0;_0x33421b<_0x2ff30c[_0x2e165b][_0x135b('0x9a')];_0x33421b++){this[_0x135b('0x9b')](_0x2ff30c[_0x2e165b][_0x33421b],util[_0x135b('0x2b')](_0x135b('0x9c'),_0x111dbd,_0x2e165b+'['+_0x33421b+']'));}}else{if(!_[_0x135b('0x48')](_0x2ff30c[_0x2e165b])){this['channel'][_0x135b('0x9e')](util[_0x135b('0x2b')]('%s.%s',_0x111dbd,_0x2e165b),_0x2ff30c[_0x2e165b]);}}}}};AGIVertices[_0x135b('0x10')][_0x135b('0x9f')]=function(_0x4ede2a){try{var _0x3eebf7=JSON['parse'](_0x4ede2a);this[_0x135b('0x98')](_0x3eebf7);return JSON[_0x135b('0xa0')](_0x3eebf7);}catch(_0x1e2031){return this['replaceAllVariables'](_0x4ede2a);}};AGIVertices[_0x135b('0x10')][_0x135b('0x97')]=function(_0x4dba3c){var _0x40ec3f=_0x4dba3c[_0x135b('0xa1')]('{');for(var _0x234769=0x1;_0x234769<_0x40ec3f['length'];_0x234769+=0x1){var _0x5f3765=_0x40ec3f[_0x234769][_0x135b('0xa1')]('}');if(_0x5f3765['length']>0x1){_0x4dba3c=_0x4dba3c[_0x135b('0xa2')]('{'+_0x5f3765[0x0]+'}',this[_0x135b('0xe')]['getVariable'](_0x5f3765[0x0])[_0x135b('0xa3')]||_0x5f3765[0x0]);}}if(_0x40ec3f['length']===0x1){return _0x4dba3c[_0x135b('0x4f')]();}return this['replaceAllVariables'](_0x4dba3c);};AGIVertices[_0x135b('0x10')][_0x135b('0xa4')]=function(_0x1bda5e,_0x4061af){var _0x46325c=this[_0x135b('0xe')][_0x135b('0x11')](_0x1bda5e);if(_0x46325c[_0x135b('0xa5')]===-0x1){return _0x46325c;}logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0xa6'),_0x4061af,_0x46325c[_0x135b('0xa3')]));return this[_0x135b('0xe')][_0x135b('0x9e')](_0x4061af,_0x46325c[_0x135b('0xa3')]);};AGIVertices['prototype'][_0x135b('0xa7')]=function(_0x497dbd){return _0x497dbd&&_0x497dbd!=='0'&&_0x497dbd!=='-1'&&_0x497dbd!=='';};AGIVertices['prototype'][_0x135b('0xa8')]=function(_0x5d60d1){this[_0x135b('0x39')]['sync'](this,_0x5d60d1,'-');_0x5d60d1[_0x135b('0xa9')]=_0x5d60d1[_0x135b('0xa8')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x135b('0x10')][_0x135b('0xaa')]=function(_0x2cf1d3){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x2cf1d3['label']));if(!this[_0x135b('0xa7')](_0x2cf1d3[_0x135b('0x5f')])){return this[_0x135b('0xe')]['noop'](_0x135b('0xab'));}var _0x2b55d8='\x22'+_0x2cf1d3[_0x135b('0x5f')]+'\x22';if(this['isConfigured'](_0x2cf1d3[_0x135b('0x7a')])){_0x2b55d8+=','+_0x2cf1d3[_0x135b('0x7a')];}var _0x486844=this[_0x135b('0xe')]['exec'](_0x135b('0xac'),_0x2b55d8);if(_0x486844[_0x135b('0xa5')]===-0x1){return _0x486844;}return this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0xae'),_0x2b55d8));};AGIVertices[_0x135b('0x10')][_0x135b('0xaf')]=function(_0x252864){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x252864['label']));if(!this[_0x135b('0xa7')](_0x252864['grammar'])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xb0'));}var _0x1f939b=_0x252864['grammar'];if(this[_0x135b('0xa7')](_0x252864[_0x135b('0x7a')])){_0x1f939b+=','+_0x252864[_0x135b('0x7a')];}var _0x42713b=this[_0x135b('0xe')]['exec'](_0x135b('0xb1'),_0x1f939b);if(_0x42713b['result']===-0x1){return _0x42713b;}var _0x1511ed=this[_0x135b('0xa4')](_0x135b('0xb2'),_0x135b('0xb3'));if(_0x1511ed['result']===-0x1){return _0x1511ed;}var _0x40759a=this[_0x135b('0xa4')](_0x135b('0xb4'),_0x135b('0xb5'));if(_0x40759a[_0x135b('0xa5')]===-0x1){return _0x40759a;}var _0x738117=this[_0x135b('0xa4')](_0x135b('0xb6'),_0x135b('0xb7'));if(_0x738117[_0x135b('0xa5')]===-0x1){return _0x738117;}return this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0xb8'),_0x1f939b));};AGIVertices[_0x135b('0x10')][_0x135b('0xb9')]=function(_0x197e33){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0xba'),_0x197e33[_0x135b('0x3b')]));return this[_0x135b('0xe')]['agi']([_0x197e33['command'],_0x197e33[_0x135b('0xbb')]]);};AGIVertices[_0x135b('0x10')][_0x135b('0xbc')]=function(_0x57c61d){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0xbd'),_0x57c61d[_0x135b('0x3b')]));if(this[_0x135b('0xa7')](_0x57c61d[_0x135b('0x69')])){logger[_0x135b('0x2f')](util['format'](_0x135b('0xbe'),_0x57c61d[_0x135b('0x69')]));var _0xb79186=this[_0x135b('0xe')]['wait'](_0x57c61d[_0x135b('0x69')]);if(_0xb79186[_0x135b('0xa5')]===-0x1){return _0xb79186;}}return this[_0x135b('0xe')]['answer']();};AGIVertices['prototype'][_0x135b('0xbf')]=function(_0x27221d){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0xc0'),_0x27221d[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x27221d[_0x135b('0x4c')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x27221d,_0x135b('0xc1'));}_0x27221d[_0x135b('0x4d')]=moment();if(this[_0x135b('0xa7')](_0x27221d[_0x135b('0xc2')])){_0x27221d[_0x135b('0x4d')]=moment()[_0x135b('0xc3')](_0x27221d['delay'],'minutes');}if(!this[_0x135b('0xa7')](_0x27221d[_0x135b('0xc4')])){_0x27221d[_0x135b('0xc4')]=0x2;}this[_0x135b('0x46')][_0x135b('0x72')](this,_0x27221d);return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x27221d[_0x135b('0x4b')],_0x27221d[_0x135b('0x4c')],_0x27221d[_0x135b('0x4d')]));};AGIVertices[_0x135b('0x10')][_0x135b('0xc5')]=function(_0x30cc67){logger['info'](util[_0x135b('0x2b')](_0x135b('0xc6'),_0x30cc67[_0x135b('0x3b')]));var _0x183003=this[_0x135b('0xe')][_0x135b('0x59')](_0x30cc67[_0x135b('0xc7')],_0x30cc67['options']);if(_0x183003['result']===-0x1){return _0x183003;}return this[_0x135b('0xe')]['noop'](util['format'](_0x135b('0xc8'),_0x30cc67[_0x135b('0xc7')],_0x30cc67[_0x135b('0x7a')]));};AGIVertices['prototype']['lumenvoxtts']=function(_0x5636e3){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0xc9'),_0x5636e3[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x5636e3[_0x135b('0x5f')])){return this['channel'][_0x135b('0xad')](_0x135b('0xab'));}var _0x4e2f41='\x22'+_0x5636e3[_0x135b('0x5f')]+'\x22';if(this[_0x135b('0xa7')](_0x5636e3[_0x135b('0x7a')])){_0x4e2f41+=','+_0x5636e3[_0x135b('0x7a')];}var _0x234ee5=this[_0x135b('0xe')]['exec'](_0x135b('0xac'),_0x4e2f41);if(_0x234ee5[_0x135b('0xa5')]===-0x1){return _0x234ee5;}return this['channel']['noop'](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x4e2f41));};AGIVertices['prototype'][_0x135b('0xca')]=function(_0x5bd91a){logger[_0x135b('0x2f')](util['format'](_0x135b('0xcb'),_0x5bd91a['label']));if(!this[_0x135b('0xa7')](_0x5bd91a[_0x135b('0x5f')])){return this[_0x135b('0xe')][_0x135b('0xad')]('no\x20text\x20configured');}var _0x537197='\x22'+_0x5bd91a[_0x135b('0x5f')]+'\x22';if(this[_0x135b('0xa7')](_0x5bd91a[_0x135b('0x7a')])){_0x537197+=','+_0x5bd91a['options'];}var _0xdcd1f3=this[_0x135b('0xe')]['exec'](_0x135b('0xac'),_0x537197);if(_0xdcd1f3[_0x135b('0xa5')]===-0x1){return _0xdcd1f3;}return this['channel']['noop'](util['format'](_0x135b('0xae'),_0x537197));};AGIVertices[_0x135b('0x10')][_0x135b('0xcc')]=function(_0x6bd1ef){logger['info'](util[_0x135b('0x2b')](_0x135b('0xcd'),_0x6bd1ef['label']));if(!this[_0x135b('0xa7')](_0x6bd1ef[_0x135b('0xce')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xb0'));}var _0x2a4347=_0x6bd1ef[_0x135b('0xce')];if(this[_0x135b('0xa7')](_0x6bd1ef[_0x135b('0x7a')])){_0x2a4347+=','+_0x6bd1ef[_0x135b('0x7a')];}var _0x39972b=this[_0x135b('0xe')][_0x135b('0x59')](_0x135b('0xb1'),_0x2a4347);if(_0x39972b['result']===-0x1){return _0x39972b;}var _0x250626=this[_0x135b('0xa4')](_0x135b('0xb2'),_0x135b('0xcf'));if(_0x250626['result']===-0x1){return _0x250626;}var _0x50c80d=this[_0x135b('0xa4')](_0x135b('0xb4'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x50c80d[_0x135b('0xa5')]===-0x1){return _0x50c80d;}var _0x1f8626=this['getAndSetVariable'](_0x135b('0xb6'),_0x135b('0xd0'));if(_0x1f8626[_0x135b('0xa5')]===-0x1){return _0x1f8626;}return this[_0x135b('0xe')][_0x135b('0xad')](util['format'](_0x135b('0xb8'),_0x2a4347));};AGIVertices[_0x135b('0x10')][_0x135b('0xd1')]=function(_0x50e9e1){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0xd2'),_0x50e9e1[_0x135b('0x3b')]));if(!this['isConfigured'](_0x50e9e1[_0x135b('0xce')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xb0'));}var _0x564155=_0x50e9e1['grammar'];if(this['isConfigured'](_0x50e9e1[_0x135b('0x7a')])){_0x564155+=','+_0x50e9e1[_0x135b('0x7a')];}var _0x4e7110=this[_0x135b('0xe')]['exec'](_0x135b('0xb1'),_0x564155);if(_0x4e7110[_0x135b('0xa5')]===-0x1){return _0x4e7110;}var _0x324d5a=this['getAndSetVariable'](_0x135b('0xb2'),_0x135b('0xd3'));if(_0x324d5a[_0x135b('0xa5')]===-0x1){return _0x324d5a;}var _0x89e802=this[_0x135b('0xa4')]('RECOG_INPUT()',_0x135b('0xd4'));if(_0x89e802['result']===-0x1){return _0x89e802;}var _0x3d20d4=this[_0x135b('0xa4')](_0x135b('0xb6'),'SESTEK_ASR_INSTANCE');if(_0x3d20d4['result']===-0x1){return _0x3d20d4;}return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0xb8'),_0x564155));};AGIVertices[_0x135b('0x10')][_0x135b('0xd5')]=function(_0x3dfac3){logger['info'](util[_0x135b('0x2b')](_0x135b('0xd6'),_0x3dfac3[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x3dfac3[_0x135b('0xd7')])){return this[_0x135b('0xe')]['error'](_0x3dfac3,_0x135b('0xd8'));}var _0x40f61a=this[_0x135b('0xd9')][_0x135b('0x72')](this,_0x3dfac3['odbc_id']);if(!_0x40f61a){return this['channel'][_0x135b('0x2d')](_0x3dfac3,_0x135b('0xda'));}if(!this['isConfigured'](_0x3dfac3['query'])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3dfac3,_0x135b('0xdb'));}var _0x35ab87=_0x3dfac3['query'][_0x135b('0x5b')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x135b('0xad')](util['format'](_0x135b('0xdc'),_0x35ab87));var _0x2d96c6=this[_0x135b('0x2c')][_0x135b('0x72')](this,_0x40f61a,_0x35ab87);this[_0x135b('0x39')]['sync'](this,_0x3dfac3,_0x35ab87);if(!this[_0x135b('0xa7')](_0x3dfac3[_0x135b('0xdd')])){return this[_0x135b('0xe')][_0x135b('0xad')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x4423b4=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x3dfac3['variable_id']);if(!_0x4423b4){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3dfac3,'no\x20variable\x20found');}var _0x186107=this;_0x2d96c6[_0x135b('0xde')](function(_0x5b19ab,_0x3230fb){Object[_0x135b('0xdf')](_0x5b19ab)[_0x135b('0xde')](function(_0x516ff6){_0x186107[_0x135b('0xe')][_0x135b('0x9e')](util[_0x135b('0x2b')]('%s[%s][%s]',_0x4423b4,_0x3230fb,_0x516ff6),_0x5b19ab[_0x516ff6]);});});this[_0x135b('0xe')][_0x135b('0x9e')](util[_0x135b('0x2b')](_0x135b('0xe0'),_0x4423b4),_0x2d96c6[_0x135b('0x9a')]);return this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')]('variable\x20%s\x20set',_0x4423b4));};AGIVertices[_0x135b('0x10')]['dial']=function(_0x2fb2e3){logger['debug'](util[_0x135b('0x2b')](_0x135b('0xe1'),_0x2fb2e3[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x2fb2e3[_0x135b('0xe2')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x2fb2e3,'no\x20user\x20selected');}var _0x3d4d3a=this[_0x135b('0x1d')]['sync'](this,_0x2fb2e3[_0x135b('0xe2')]);if(!_0x3d4d3a){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x2fb2e3,_0x135b('0xe3'));}var _0x49aa4f=this[_0x135b('0xe')][_0x135b('0x59')](_0x135b('0xe4'),[util['format'](_0x135b('0xe5'),_0x3d4d3a),_0x2fb2e3['timeout'],_0x2fb2e3[_0x135b('0xe6')],_0x2fb2e3[_0x135b('0x73')]]);if(_0x49aa4f[_0x135b('0xa5')]===-0x1){return _0x49aa4f;}return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')]('Executed\x20command\x20%s',_0x135b('0xe4')));};AGIVertices[_0x135b('0x10')][_0x135b('0xe7')]=function(_0x596724){logger['info'](util['format'](_0x135b('0xe8'),_0x596724[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x596724['key'])){return this[_0x135b('0xe')]['noop'](_0x135b('0xe9'));}if(!this[_0x135b('0xa7')](_0x596724[_0x135b('0x5f')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this[_0x135b('0xe')]['bot']=!![];this[_0x135b('0x39')](_0x596724);this[_0x135b('0x45')](_0x596724[_0x135b('0x5f')],'in','','');this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0xea'),_0x596724[_0x135b('0x5f')]));var _0x3d2346=this['googleDialogflow'][_0x135b('0x72')](this,_0x596724);if(_0x3d2346){for(var _0x2e4371 in _0x3d2346){if(_0x3d2346[_0x135b('0x95')](_0x2e4371)){this['channel'][_0x135b('0x9e')](util[_0x135b('0x2b')](_0x135b('0xeb'),_0x2e4371['toUpperCase']()),_0x3d2346[_0x2e4371]);}}this['createSquareMessage'](_0x3d2346['speech'],_0x135b('0xec'),'dialogflow','');return this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0xed'),_0x3d2346[_0x135b('0xee')]));}return this[_0x135b('0xe')][_0x135b('0x2d')](_0x596724,_0x135b('0xef'));};AGIVertices[_0x135b('0x10')][_0x135b('0xf0')]=function(_0x3f7e09){logger[_0x135b('0x2f')](util['format']('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x3f7e09[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x3f7e09['dialogflowV2_project_id'])){return this[_0x135b('0xe')]['noop'](_0x135b('0xf1'));}if(!this[_0x135b('0xa7')](_0x3f7e09[_0x135b('0x80')])){return this[_0x135b('0xe')]['noop']('no\x20client_email\x20configured');}if(!this[_0x135b('0xa7')](_0x3f7e09[_0x135b('0xf2')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xf3'));}if(!this['isConfigured'](_0x3f7e09[_0x135b('0x81')])){return this['channel'][_0x135b('0xad')](_0x135b('0xf4'));}if(!this[_0x135b('0xa7')](_0x3f7e09[_0x135b('0x5f')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this[_0x135b('0xe')][_0x135b('0xf5')]=!![];this[_0x135b('0x39')](_0x3f7e09);this[_0x135b('0x45')](_0x3f7e09['text'],'in','','');this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0xf6'),_0x3f7e09['text']));var _0x7a31e7=this[_0x135b('0x7e')][_0x135b('0x72')](this,_0x3f7e09);if(_0x7a31e7){for(var _0x35ea08 in _0x7a31e7){if(_0x7a31e7[_0x135b('0x95')](_0x35ea08)){if(_0x35ea08!==_0x135b('0xf7')){this[_0x135b('0xe')][_0x135b('0x9e')](util[_0x135b('0x2b')](_0x135b('0xeb'),_0x35ea08[_0x135b('0x6b')]()),_0x7a31e7[_0x35ea08]);}}}this[_0x135b('0x45')](_0x7a31e7[_0x135b('0xee')],_0x135b('0xec'),_0x135b('0xf0'),_0x7a31e7[_0x135b('0xf7')]);return this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0xf8'),_0x7a31e7[_0x135b('0xee')]));}return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3f7e09,_0x135b('0xf9'));};AGIVertices['prototype'][_0x135b('0xfa')]=function(_0xb5cec4){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0xfb'),_0xb5cec4[_0x135b('0x3b')]));if(!this['isConfigured'](_0xb5cec4[_0x135b('0xfc')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xfd'));}if(!this[_0x135b('0xa7')](_0xb5cec4[_0x135b('0xfe')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xff'));}if(!this[_0x135b('0xa7')](_0xb5cec4[_0x135b('0x100')])){return this[_0x135b('0xe')]['noop']('no\x20password\x20configured');}if(!this[_0x135b('0xa7')](_0xb5cec4[_0x135b('0x101')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this[_0x135b('0xe')][_0x135b('0xf5')]=!![];this[_0x135b('0x39')](_0xb5cec4);this['createSquareMessage'](_0xb5cec4[_0x135b('0x5f')],'in','','');this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0x102'),_0xb5cec4[_0x135b('0x5f')]));var _0x29712a=this[_0x135b('0x82')][_0x135b('0x72')](this,_0xb5cec4);if(_0x29712a){for(var _0x3d615a in _0x29712a){if(_0x29712a[_0x135b('0x95')](_0x3d615a)){this[_0x135b('0xe')][_0x135b('0x9e')](util[_0x135b('0x2b')](_0x135b('0x103'),_0x3d615a[_0x135b('0x6b')]()),_0x29712a[_0x3d615a]);}}this[_0x135b('0x45')](_0x29712a[_0x135b('0xee')],_0x135b('0xec'),'sesteknda','');if(_0x29712a['audiofile']){this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0x104'),_0x29712a[_0x135b('0x105')]));var _0x565edf=this[_0x135b('0xe')][_0x135b('0x106')](_0x29712a[_0x135b('0x105')]);try{fs['unlink'](_0x29712a[_0x135b('0x105')]+_0x135b('0x107'));}catch(_0x3d1750){logger[_0x135b('0x2d')](_0x3d1750);}return _0x565edf;}else{return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x108'),_0x29712a[_0x135b('0xee')]));}}return this['channel'][_0x135b('0x2d')](_0xb5cec4,_0x135b('0x109'));};AGIVertices[_0x135b('0x10')][_0x135b('0x10a')]=function(_0x591847){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x10b'),_0x591847[_0x135b('0x3b')]));return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x10a'));};AGIVertices[_0x135b('0x10')][_0x135b('0x10c')]=function(_0x4c3cd9){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x10d'),_0x4c3cd9['label']));var _0x5f5755='';if(_0x4c3cd9[_0x135b('0x10e')]){if(!this[_0x135b('0xa7')](_0x4c3cd9[_0x135b('0x10e')])){return this[_0x135b('0xe')]['error'](_0x4c3cd9,'no\x20trunk\x20selected');}else{var _0x51e00d=parseInt(_0x4c3cd9[_0x135b('0x10e')],0xa);if(isNaN(_0x51e00d)){_0x5f5755=_0x4c3cd9[_0x135b('0x10e')];}else{_0x5f5755=this['getTrunk'][_0x135b('0x72')](this,_0x4c3cd9[_0x135b('0x10e')]);if(!_0x5f5755){return this['channel'][_0x135b('0x2d')](_0x4c3cd9,_0x135b('0x10f'));}}}}else if(_0x4c3cd9['trunk_name']){_0x5f5755=_0x4c3cd9[_0x135b('0x110')];}else{return this[_0x135b('0xe')][_0x135b('0x2d')](_0x4c3cd9,_0x135b('0x111'));}var _0x2f50a8=this[_0x135b('0xe')][_0x135b('0x59')](_0x135b('0xe4'),[util['format'](_0x135b('0x112'),_0x5f5755,_0x4c3cd9[_0x135b('0x4b')]),_0x4c3cd9[_0x135b('0x69')],_0x4c3cd9[_0x135b('0xe6')],_0x4c3cd9[_0x135b('0x73')]]);if(_0x2f50a8['result']===-0x1){return _0x2f50a8;}return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x113'),'DIAL'));};AGIVertices[_0x135b('0x10')]['finally']=function(_0x4911bb){logger['info'](util[_0x135b('0x2b')](_0x135b('0x114'),_0x4911bb[_0x135b('0x3b')]));return this['channel'][_0x135b('0xad')](_0x135b('0x115'));};AGIVertices[_0x135b('0x10')][_0x135b('0x116')]=function(_0x3e166c){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x3e166c['label']));if(_0x3e166c['retry']===0x0){return this['maxRetry'](_0x3e166c);}_0x3e166c[_0x135b('0xa9')]-=0x1;if(!this[_0x135b('0xa7')](_0x3e166c[_0x135b('0x117')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3e166c,_0x135b('0x118'));}var _0x1f890b=this[_0x135b('0x119')][_0x135b('0x72')](this,_0x3e166c[_0x135b('0x117')]);if(!_0x1f890b){return this['channel'][_0x135b('0x2d')](_0x3e166c,_0x135b('0x11a'));}if(!this[_0x135b('0xa7')](_0x3e166c[_0x135b('0xdd')])){return this['channel'][_0x135b('0x2d')](_0x135b('0x11b'));}var _0x38d151=this[_0x135b('0xe')][_0x135b('0x11c')](_0x1f890b,_0x3e166c[_0x135b('0x11d')],_0x3e166c[_0x135b('0x11e')]);var _0x27aba9=_0x38d151['result']?_0x38d151[_0x135b('0xa5')][_0x135b('0x4f')]():'';logger[_0x135b('0x2f')](_0x135b('0x11f'),JSON['stringify'](_0x38d151));if(_0x38d151[_0x135b('0xa5')]===-0x1){this[_0x135b('0x39')][_0x135b('0x72')](this,_0x3e166c,_0x27aba9);return _0x38d151;}else if(_0x38d151[_0x135b('0xa3')]===_0x135b('0x69')){_0x38d151['result']=_0x27aba9[_0x135b('0x9a')]>=parseInt(_0x3e166c[_0x135b('0x120')])?'x':'i';}else{_0x38d151[_0x135b('0xa5')]=_0x27aba9[_0x135b('0x9a')]>=parseInt(_0x3e166c['mindigit'])&&_0x27aba9[_0x135b('0x9a')]<=parseInt(_0x3e166c[_0x135b('0x11e')])?'x':'i';}var _0x2221fe=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x3e166c['variable_id']);if(!_0x2221fe){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3e166c,_0x135b('0x121'));}this[_0x135b('0xe')][_0x135b('0x9e')](_0x2221fe,_0x27aba9);if(this[_0x135b('0xa7')](_0x3e166c[_0x135b('0x122')])){var _0x2bd7ce=parseInt(_0x3e166c[_0x135b('0x122')],0xa);var _0x185062=rs[_0x135b('0x123')]({'charset':'*','length':_0x2bd7ce});var _0x25b465=_0x27aba9[_0x135b('0x9a')];if(_0x25b465>0x0){if(_0x25b465>_0x2bd7ce){this[_0x135b('0x39')][_0x135b('0x72')](this,_0x3e166c,_0x3e166c[_0x135b('0x124')]===_0x135b('0x125')?_0x185062+_0x27aba9[_0x135b('0x126')](_0x2bd7ce):_0x27aba9['substr'](0x0,_0x25b465-_0x2bd7ce)+_0x185062);}else{this[_0x135b('0x39')][_0x135b('0x72')](this,_0x3e166c,rs[_0x135b('0x123')]({'charset':'*','length':_0x25b465}));}}else{this[_0x135b('0x39')][_0x135b('0x72')](this,_0x3e166c,'');}}else{this['createSquareDetailsReport'][_0x135b('0x72')](this,_0x3e166c,_0x27aba9);}return _0x38d151;};AGIVertices['prototype']['getsecretdigits']=function(_0x151ed8){logger['info'](util['format']('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x151ed8[_0x135b('0x3b')]));return this['getdigits'](_0x151ed8);};AGIVertices[_0x135b('0x10')][_0x135b('0x127')]=function(_0xced1bb){logger['info'](util['format'](_0x135b('0x128'),_0xced1bb['label']));this[_0x135b('0x39')][_0x135b('0x72')](this,_0xced1bb,_0xced1bb[_0x135b('0x129')]);return this['channel'][_0x135b('0xad')](util['format']('GOAL\x20%s',_0xced1bb[_0x135b('0x129')]));};AGIVertices[_0x135b('0x10')]['awspolly']=function(_0x3de791){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x12a'),_0x3de791[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x3de791[_0x135b('0x89')])||!this[_0x135b('0xa7')](_0x3de791[_0x135b('0x8a')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x12b'));}if(!this['isConfigured'](_0x3de791['text'])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this[_0x135b('0xe')][_0x135b('0xad')](util['format'](_0x135b('0x12c'),_0x3de791[_0x135b('0x5f')]));var _0x3350fd=this[_0x135b('0x88')][_0x135b('0x72')](this,_0x3de791);if(_0x3350fd){this[_0x135b('0xe')]['noop'](util['format'](_0x135b('0x12d'),_0x3350fd));var _0x2caa5f=this['channel'][_0x135b('0x106')](_0x3350fd);try{fs['unlink'](_0x3350fd+_0x135b('0x107'));}catch(_0xad1f56){logger[_0x135b('0x2d')](_0xad1f56);}return _0x2caa5f;}return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3de791,_0x135b('0x12e'));};AGIVertices[_0x135b('0x10')]['awslex']=function(_0x93c8ab){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x12f'),_0x93c8ab[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x93c8ab['aws_access_key_id'])||!this['isConfigured'](_0x93c8ab['aws_secret_access_key'])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x12b'));}if(!this['isConfigured'](_0x93c8ab[_0x135b('0x130')])){return this[_0x135b('0xe')]['noop'](_0x135b('0x131'));}if(!this['isConfigured'](_0x93c8ab['text'])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this[_0x135b('0xe')][_0x135b('0xf5')]=!![];this[_0x135b('0x39')](_0x93c8ab);this[_0x135b('0x45')](_0x93c8ab['text'],'in','','');this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x132'),_0x93c8ab[_0x135b('0x5f')]));var _0x25d962=this[_0x135b('0x8e')][_0x135b('0x72')](this,_0x93c8ab);if(_0x25d962){for(var _0xfbf8d1 in _0x25d962){if(_0x25d962[_0x135b('0x95')](_0xfbf8d1)&&_[_0x135b('0x96')](_0x25d962[_0xfbf8d1])){this[_0x135b('0xe')][_0x135b('0x9e')](util['format'](_0x135b('0x133'),_0xfbf8d1[_0x135b('0x6b')]()),_0x25d962[_0xfbf8d1]);}}if(_[_0x135b('0x48')](_0x25d962['message'])){return this['channel']['noop'](_0x135b('0x134'));}else{this[_0x135b('0x45')](_0x25d962[_0x135b('0x79')],_0x135b('0xec'),_0x135b('0x135'),'');return this[_0x135b('0xe')][_0x135b('0xad')](util['format'](_0x135b('0x136'),_0x25d962[_0x135b('0x79')]));}}return this['channel'][_0x135b('0x2d')](_0x93c8ab,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0x135b('0x10')][_0x135b('0x137')]=function(_0x46a44a){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x46a44a['label'],_0x46a44a[_0x135b('0x69')]));if(!this[_0x135b('0xa7')](_0x46a44a[_0x135b('0x7c')])){return this[_0x135b('0xe')]['noop'](_0x135b('0xe9'));}var _0x5bac98='wav';var _0x5b3480=util[_0x135b('0x2b')](_0x135b('0x138'),FILES_PATH,rs[_0x135b('0x123')](0x4));var _0x464450=util[_0x135b('0x2b')](_0x135b('0x9c'),_0x5b3480,_0x5bac98);var _0x1ad038=!![];if(_0x46a44a[_0x135b('0x139')]===_0x135b('0x13a')){_0x1ad038=![];}var _0x1698a7=this[_0x135b('0xe')][_0x135b('0x13b')](_0x5b3480,_0x5bac98,_0x46a44a[_0x135b('0x13c')],_0x46a44a[_0x135b('0x69')],undefined,_0x1ad038);if(_0x1698a7[_0x135b('0xa5')]!==-0x1){this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')]('google\x20%s\x20file\x20created',_0x464450));var _0x39f6e2=this['googleASR'][_0x135b('0x72')](this,_0x46a44a,_0x464450);if(_0x39f6e2){for(var _0x272f30 in _0x39f6e2){if(_0x39f6e2[_0x135b('0x95')](_0x272f30)){this['channel'][_0x135b('0x9e')](util[_0x135b('0x2b')]('GOOGLE_ASR_%s',_0x272f30[_0x135b('0x6b')]()),_0x39f6e2[_0x272f30]);}}return this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x13d'),JSON[_0x135b('0xa0')](_0x39f6e2)));}}return _0x1698a7;};AGIVertices[_0x135b('0x10')][_0x135b('0x13e')]=function(_0x3f1f64){logger['info'](util[_0x135b('0x2b')](_0x135b('0x13f'),_0x3f1f64[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x3f1f64['appid'])){return this['channel'][_0x135b('0xad')](_0x135b('0x140'));}if(!this[_0x135b('0xa7')](_0x3f1f64[_0x135b('0x91')])){return this[_0x135b('0xe')]['noop'](_0x135b('0x141'));}var _0x1e1c03=_0x135b('0x142');var _0x2a7c58=util[_0x135b('0x2b')](_0x135b('0x138'),FILES_PATH,rs[_0x135b('0x123')](0x4));var _0x153f16=util[_0x135b('0x2b')](_0x135b('0x9c'),_0x2a7c58,_0x1e1c03);var _0x3c4ee3=!![];if(_0x3f1f64[_0x135b('0x139')]===_0x135b('0x13a')){_0x3c4ee3=![];}var _0x52325a=this['channel'][_0x135b('0x13b')](_0x2a7c58,_0x1e1c03,_0x3f1f64[_0x135b('0x13c')],_0x3f1f64[_0x135b('0x69')],undefined,_0x3c4ee3);if(_0x52325a[_0x135b('0xa5')]!==-0x1){this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x143'),_0x153f16));var _0x1e2736=this[_0x135b('0x90')][_0x135b('0x72')](this,_0x3f1f64,_0x153f16);if(_0x1e2736){for(var _0x189ad2 in _0x1e2736){if(_0x1e2736[_0x135b('0x95')](_0x189ad2)){this[_0x135b('0xe')]['setVariable'](util[_0x135b('0x2b')](_0x135b('0x144'),_0x189ad2[_0x135b('0x6b')]()),_0x1e2736[_0x189ad2]);}}return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x145'),JSON[_0x135b('0xa0')](_0x1e2736)));}}return _0x52325a;};AGIVertices['prototype'][_0x135b('0x146')]=function(_0x32c297){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x32c297[_0x135b('0x3b')]));return this['channel']['continueAt'](_0x32c297[_0x135b('0x40')],_0x32c297[_0x135b('0x41')],_0x32c297[_0x135b('0x42')]);};AGIVertices[_0x135b('0x10')][_0x135b('0x147')]=function(_0x11d504){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x148'),_0x11d504['label']));if(!this['isConfigured'](_0x11d504[_0x135b('0x149')])){return this['channel']['error'](_0x11d504,_0x135b('0x14a'));}try{var _0x5af800=eval(_0x11d504['condition'])?_0x135b('0x14b'):'false';this[_0x135b('0xe')][_0x135b('0xad')](util['format'](_0x135b('0x14c'),_0x11d504[_0x135b('0x149')],_0x5af800));return{'code':0xc8,'result':_0x5af800};}catch(_0x3b5554){return{'code':0xc8,'result':_0x135b('0x14d')};}};AGIVertices[_0x135b('0x10')][_0x135b('0x14e')]=function(_0x3872cc){logger[_0x135b('0x2f')](util['format']('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x3872cc[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x3872cc['interval_id'])){return this[_0x135b('0xe')]['error'](_0x3872cc,_0x135b('0x14f'));}var _0x564bbb=this[_0x135b('0x26')][_0x135b('0x72')](this,_0x3872cc['interval_id']);if(!_0x564bbb){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3872cc,'no\x20intervals\x20found');}for(var _0x51617c=0x0;_0x51617c<_0x564bbb[_0x135b('0x9a')];_0x51617c+=0x1){var _0x24a13d=this[_0x135b('0xe')]['getVariable'](util[_0x135b('0x2b')]('IFTIME(%s?true:false)',_0x564bbb[_0x51617c]));if(_0x24a13d[_0x135b('0xa5')]===-0x1){return _0x24a13d;}logger[_0x135b('0x2f')](util['format'](_0x135b('0x150'),_0x564bbb[_0x51617c],_0x24a13d[_0x135b('0xa3')]));if(_0x24a13d[_0x135b('0xa3')]==='true'){logger['info'](util[_0x135b('0x2b')](_0x135b('0x150'),_0x564bbb[_0x51617c],_0x135b('0x14b')));this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x150'),_0x564bbb[_0x51617c],'true'));return{'code':0xc8,'result':_0x135b('0x14b')};}else{logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x150'),_0x564bbb[_0x51617c],_0x135b('0x14d')));this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')]('IFTIME\x20%s\x20%s',_0x564bbb[_0x51617c],_0x135b('0x14d')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x135b('0x10')][_0x135b('0x151')]=function(_0x293c30){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x152'),_0x293c30[_0x135b('0x3b')]));return this[_0x135b('0xe')][_0x135b('0x151')]();};AGIVertices[_0x135b('0x10')]['ispeechasr']=function(_0x46268d){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x153'),_0x46268d[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x46268d[_0x135b('0x7c')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xe9'));}var _0x2196d1=_0x135b('0x142');var _0x364aff=util[_0x135b('0x2b')](_0x135b('0x138'),FILES_PATH,rs[_0x135b('0x123')](0x4));var _0x214349=util[_0x135b('0x2b')](_0x135b('0x9c'),_0x364aff,_0x2196d1);var _0x420553=!![];if(_0x46268d['beep']===_0x135b('0x13a')){_0x420553=![];}var _0x43d594=this[_0x135b('0xe')][_0x135b('0x13b')](_0x364aff,_0x2196d1,_0x46268d[_0x135b('0x13c')],_0x46268d[_0x135b('0x69')],undefined,_0x420553);if(_0x43d594[_0x135b('0xa5')]!==-0x1){this['channel']['noop'](util[_0x135b('0x2b')](_0x135b('0x154'),_0x214349));var _0x1e199b=this[_0x135b('0x85')][_0x135b('0x72')](this,_0x46268d,_0x214349);if(_0x1e199b){for(var _0x213aef in _0x1e199b){if(_0x1e199b[_0x135b('0x95')](_0x213aef)){this[_0x135b('0xe')][_0x135b('0x9e')](util[_0x135b('0x2b')](_0x135b('0x155'),_0x213aef[_0x135b('0x6b')]()),_0x1e199b[_0x213aef]);}}return this['channel']['noop'](util[_0x135b('0x2b')](_0x135b('0x156'),JSON['stringify'](_0x1e199b)));}}return _0x43d594;};AGIVertices['prototype']['ispeechtts']=function(_0x2a3ff9){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x157'),_0x2a3ff9[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x2a3ff9[_0x135b('0x7c')])){return this['channel'][_0x135b('0xad')](_0x135b('0xe9'));}if(!this['isConfigured'](_0x2a3ff9[_0x135b('0x5f')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this[_0x135b('0xe')]['noop'](util['format'](_0x135b('0x158'),_0x2a3ff9['text']));var _0x244fff=this[_0x135b('0x83')][_0x135b('0x72')](this,_0x2a3ff9);if(_0x244fff){this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x154'),_0x244fff));var _0x40952c=this[_0x135b('0xe')][_0x135b('0x106')](_0x244fff,_0x2a3ff9[_0x135b('0x13c')]);try{fs[_0x135b('0x159')](_0x244fff+_0x135b('0x107'));}catch(_0x1f2a98){logger['error'](_0x1f2a98);}return _0x40952c;}return this[_0x135b('0xe')][_0x135b('0x2d')](_0x2a3ff9,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x135b('0x10')][_0x135b('0x15a')]=function(_0x2b86fa){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x15b'),_0x2b86fa[_0x135b('0x3b')]));if(!this['isConfigured'](_0x2b86fa[_0x135b('0x15c')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x2b86fa,_0x135b('0x15d'));}logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x135b('0xe')][_0x135b('0x3d')],_0x2b86fa[_0x135b('0x15c')]));var _0x4c5dbf=this['agentLogin'][_0x135b('0x72')](this,_0x2b86fa['findBy']);if(_0x4c5dbf){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x15e'),this['channel']['callerid'],_0x2b86fa[_0x135b('0x15c')]));this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x15e'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x2b86fa[_0x135b('0x15c')]));return{'code':0xc8,'result':_0x135b('0x15f')};}else{logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x135b('0xe')][_0x135b('0x3d')],_0x2b86fa[_0x135b('0x15c')]));this[_0x135b('0xe')][_0x135b('0xad')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x135b('0xe')][_0x135b('0x3d')],_0x2b86fa[_0x135b('0x15c')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x135b('0x160')]=function(_0x56beb9){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x56beb9[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x56beb9[_0x135b('0x15c')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x56beb9,_0x135b('0x15d'));}logger['info'](util['format'](_0x135b('0x161'),this[_0x135b('0xe')]['callerid'],_0x56beb9[_0x135b('0x15c')]));var _0x2e7d43=this['agentLogout']['sync'](this,_0x56beb9[_0x135b('0x15c')]);if(_0x2e7d43){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x15e'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x56beb9['findBy']));this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x135b('0xe')][_0x135b('0x3d')],_0x56beb9[_0x135b('0x15c')]));return{'code':0xc8,'result':_0x135b('0x15f')};}else{logger['info'](util[_0x135b('0x2b')](_0x135b('0x162'),this[_0x135b('0xe')]['callerid'],_0x56beb9[_0x135b('0x15c')]));this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0x162'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x56beb9[_0x135b('0x15c')]));return{'code':0xc8,'result':_0x135b('0x163')};}};AGIVertices['prototype'][_0x135b('0x164')]=function(_0x4dacf6){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x165'),_0x4dacf6[_0x135b('0x3b')]));if(!this['isConfigured'](_0x4dacf6['operation'])){return this[_0x135b('0xe')]['error'](_0x4dacf6,_0x135b('0x166'));}this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0x167'),_0x4dacf6[_0x135b('0x168')]));var _0x412a47=eval(_0x4dacf6[_0x135b('0x168')]);if(!this[_0x135b('0xa7')](_0x4dacf6[_0x135b('0xdd')])){return this['channel'][_0x135b('0xad')](_0x135b('0x11b'));}var _0x2fdbbd=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x4dacf6['variable_id']);if(!_0x2fdbbd){return this[_0x135b('0xe')]['error'](_0x4dacf6,_0x135b('0x121'));}if(_[_0x135b('0x9d')](_0x412a47)){var _0x50484b=this;_0x412a47[_0x135b('0xde')](function(_0x31ec36,_0x469323){_0x50484b[_0x135b('0xe')]['setVariable'](util[_0x135b('0x2b')](_0x135b('0x169'),_0x2fdbbd,_0x469323),_0x31ec36);});return this['channel']['noop'](util[_0x135b('0x2b')](_0x135b('0x16a'),_0x2fdbbd));}else{return this[_0x135b('0xe')][_0x135b('0x9e')](_0x2fdbbd,_0x412a47);}};AGIVertices[_0x135b('0x10')][_0x135b('0xc')]=function(_0x13aa9a){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x16b'),_0x13aa9a['label']));if(_0x13aa9a[_0x135b('0xa9')]===0x0){return this[_0x135b('0xa8')](_0x13aa9a);}_0x13aa9a[_0x135b('0xa9')]-=0x1;if(!this['isConfigured'](_0x13aa9a['file_id'])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x13aa9a,_0x135b('0x118'));}var _0x54b9be=this[_0x135b('0x119')]['sync'](this,_0x13aa9a[_0x135b('0x117')]);if(!_0x54b9be){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x13aa9a,'no\x20file\x20audio\x20found');}var _0x31a572=this['channel'][_0x135b('0x11c')](_0x54b9be,_0x13aa9a['response'],_0x13aa9a[_0x135b('0x16c')]);var _0x42b0b3=_0x31a572[_0x135b('0xa5')];if(_0x31a572['result']===-0x1){this[_0x135b('0x39')][_0x135b('0x72')](this,_0x13aa9a,'-1');return _0x31a572;}else if(_0x31a572[_0x135b('0xa3')]===_0x135b('0x69')){_0x31a572['result']=_0x31a572[_0x135b('0xa5')]['length']>0x0?_0x31a572[_0x135b('0xa5')]:'t';}else if(_[_0x135b('0x47')](_0x31a572[_0x135b('0xa5')])){_0x31a572[_0x135b('0xa5')]='#';_0x42b0b3='#';}if(!this[_0x135b('0xa7')](_0x13aa9a[_0x135b('0xdd')])){this['channel'][_0x135b('0xad')](_0x135b('0x11b'));}else{var _0xad1b7a=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x13aa9a[_0x135b('0xdd')]);if(!_0xad1b7a){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x13aa9a,'no\x20variable\x20found');}this[_0x135b('0xe')][_0x135b('0x9e')](_0xad1b7a,_0x42b0b3);}this[_0x135b('0x39')]['sync'](this,_0x13aa9a,_0x42b0b3);return _0x31a572;};AGIVertices[_0x135b('0x10')][_0x135b('0xad')]=function(_0x1a8d1d){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x16d'),_0x1a8d1d[_0x135b('0x3b')]));return this[_0x135b('0xe')]['noop'](_0x1a8d1d[_0x135b('0x16e')]||_0x1a8d1d['label']);};AGIVertices[_0x135b('0x10')]['pause']=function(_0x276777){logger['info'](util['format'](_0x135b('0x16f'),_0x276777[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x276777[_0x135b('0x15c')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x276777,'no\x20find\x20by\x20configured');}logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x161'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x276777[_0x135b('0x15c')]));var _0x122fdf=this[_0x135b('0x50')][_0x135b('0x72')](this,_0x276777[_0x135b('0x170')]);var _0x519746=this[_0x135b('0x51')][_0x135b('0x72')](this,_0x276777[_0x135b('0x15c')],_0x122fdf);if(_0x519746){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x15e'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x276777[_0x135b('0x15c')]));this[_0x135b('0xe')]['noop'](util['format'](_0x135b('0x15e'),this['channel'][_0x135b('0x3d')],_0x276777['findBy']));return{'code':0xc8,'result':_0x135b('0x15f')};}else{logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x135b('0x3d')],_0x276777['findBy']));this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x15e'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x276777['findBy']));return{'code':0xc8,'result':_0x135b('0x163')};}};AGIVertices[_0x135b('0x10')]['playback']=function(_0x501963){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x501963['label']));if(!this['isConfigured'](_0x501963[_0x135b('0x117')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x501963,_0x135b('0x118'));}var _0x56690a=this['getSound'][_0x135b('0x72')](this,_0x501963[_0x135b('0x117')]);if(!_0x56690a){return this['channel']['error'](_0x501963,_0x135b('0x11a'));}var _0x474b19=this['channel'][_0x135b('0x59')](_0x135b('0x171'),[_0x56690a,_0x501963[_0x135b('0xe6')]]);if(_0x474b19['result']===-0x1){return _0x474b19;}return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0xc8'),_0x135b('0x171'),_0x56690a));};AGIVertices['prototype'][_0x135b('0x172')]=function(_0x42569d){logger['info'](util[_0x135b('0x2b')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x42569d[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x42569d[_0x135b('0x173')])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x42569d,'no\x20queue\x20selected');}var _0x1e0087='';var _0x21ff1d=parseInt(_0x42569d[_0x135b('0x173')],0xa);if(isNaN(_0x21ff1d)){_0x1e0087=_0x42569d[_0x135b('0x173')];}else{_0x1e0087=this[_0x135b('0x17')][_0x135b('0x72')](this,_0x42569d[_0x135b('0x173')]);if(!_0x1e0087){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x42569d,_0x135b('0x174'));}}var _0xa7354='';if(this[_0x135b('0xa7')](_0x42569d[_0x135b('0x117')])){var _0x631c61=this[_0x135b('0x119')]['sync'](this,_0x42569d[_0x135b('0x117')]);if(_0x631c61){_0xa7354=_0x631c61;}}this[_0x135b('0x39')]['sync'](this,_0x42569d,_0x1e0087);if(_0x42569d['opts']['indexOf']('x')<0x0){_0x42569d[_0x135b('0xe6')]+='x';}if(_0x42569d[_0x135b('0xe6')]['indexOf']('X')<0x0){_0x42569d['opts']+='X';}this[_0x135b('0xe')][_0x135b('0x9e')]('XMCS-QUEUE',_0x1e0087?_0x1e0087[_0x135b('0x175')]():'');var _0x2c9727=this[_0x135b('0xe')][_0x135b('0x59')](_0x135b('0x176'),[_0x1e0087,_0x42569d['opts'],_0x42569d['url'],_0xa7354,_0x42569d['timeout'],_0x42569d['agi'],_0x42569d[_0x135b('0x177')],_0x42569d['gosub'],'',_0x42569d['position']]);if(_0x2c9727[_0x135b('0xa5')]===-0x1){return _0x2c9727;}return this[_0x135b('0xe')][_0x135b('0xad')](util['format'](_0x135b('0xc8'),_0x135b('0x176'),_0x1e0087));};AGIVertices[_0x135b('0x10')]['record']=function(_0xe84897){logger['info'](util['format'](_0x135b('0x178'),_0xe84897[_0x135b('0x3b')]));var _0x300ad0=_0xe84897[_0x135b('0x179')]||_0x135b('0x142');var _0x678bfe=util[_0x135b('0x2b')](_0x135b('0x17a'),this[_0x135b('0xe')][_0x135b('0x3a')],rs[_0x135b('0x123')](0x5));var _0x54323b=util['format'](_0x135b('0x17b'),FILES_PATH,_0x678bfe,_0x300ad0);var _0x104ba3=util[_0x135b('0x2b')]('%s/recordings/%s',FILES_PATH,_0x678bfe);this[_0x135b('0x3e')][_0x135b('0x72')](this,_0xe84897,_0x678bfe,_0x54323b);this['channel']['setVariable'](_0x135b('0x17c'),_0x678bfe);logger[_0x135b('0x2f')](_0x135b('0x17d'),_0x104ba3,_0x300ad0,_0xe84897[_0x135b('0x17e')],_0xe84897['timeout']);return this[_0x135b('0xe')][_0x135b('0x13b')](_0x104ba3,_0x300ad0,_0xe84897[_0x135b('0x17e')],_0xe84897[_0x135b('0x69')],undefined,!![]);};AGIVertices[_0x135b('0x10')][_0x135b('0x17f')]=function(_0x3abb22){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x180'),_0x3abb22[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x3abb22[_0x135b('0x73')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x181'));}var _0x4b09bd=this[_0x135b('0x182')]['sync'](this,_0x3abb22);logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Response:',util[_0x135b('0x183')](_0x4b09bd,{'showHidden':![],'depth':null})));if(!this[_0x135b('0xa7')](_0x3abb22[_0x135b('0xdd')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x184'));}var _0x1264a4=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x3abb22[_0x135b('0xdd')]);if(!_0x1264a4){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x3abb22,_0x135b('0x121'));}this[_0x135b('0xe')][_0x135b('0x9e')](util['format']('%s_STATUS_CODE',_0x1264a4),_0x4b09bd[_0x135b('0x77')]?_0x4b09bd['statusCode']:_0x135b('0x185'));this[_0x135b('0xe')][_0x135b('0x9e')](util[_0x135b('0x2b')](_0x135b('0x186'),_0x1264a4),_0x4b09bd[_0x135b('0x78')]?_0x4b09bd[_0x135b('0x78')]:'OK');if(_0x4b09bd[_0x135b('0x75')]){try{this[_0x135b('0x9b')](_0x4b09bd[_0x135b('0x75')],_0x1264a4);}catch(_0x12c7c6){logger[_0x135b('0x2d')](util[_0x135b('0x2b')](_0x135b('0x187'),_0x1264a4));}}return this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x188'),_0x1264a4));};AGIVertices[_0x135b('0x10')]['saydigits']=function(_0x568df2){logger[_0x135b('0x2f')](util['format'](_0x135b('0x189'),_0x568df2[_0x135b('0x3b')]));return this[_0x135b('0xe')]['sayDigits'](_0x568df2[_0x135b('0x18a')][_0x135b('0x5b')](/\s+/g,''),_0x568df2[_0x135b('0x17e')]);};AGIVertices[_0x135b('0x10')][_0x135b('0x18b')]=function(_0x21c7fa){logger['info'](util[_0x135b('0x2b')](_0x135b('0x18c'),_0x21c7fa['label']));return this[_0x135b('0xe')][_0x135b('0x18d')](_0x21c7fa[_0x135b('0x68')][_0x135b('0x5b')](/\s+/g,''),_0x21c7fa['escape_digits']);};AGIVertices[_0x135b('0x10')]['sayphonetic']=function(_0x1734a9){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x18e'),_0x1734a9[_0x135b('0x3b')]));return this[_0x135b('0xe')][_0x135b('0x18f')](_0x1734a9[_0x135b('0x5f')],_0x1734a9[_0x135b('0x17e')]);};AGIVertices[_0x135b('0x10')][_0x135b('0x190')]=function(_0x56682e){logger[_0x135b('0x2f')](util['format'](_0x135b('0x191'),_0x56682e[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x56682e[_0x135b('0x192')])){return this['channel'][_0x135b('0xad')](_0x135b('0x193'));}var _0x4fdf43=this[_0x135b('0x23')][_0x135b('0x72')](this,_0x56682e[_0x135b('0x192')]);if(!_0x4fdf43||!_0x4fdf43[_0x135b('0x194')]){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x56682e,_0x135b('0x195'));}var _0x1fd818={'from':util[_0x135b('0x2b')](_0x135b('0x196'),_0x4fdf43[_0x135b('0x15')],_0x4fdf43[_0x135b('0x197')]||_0x4fdf43[_0x135b('0x194')]['user']),'to':_0x56682e['to']||'','cc':_0x56682e['cc']||'','bcc':_0x56682e['bcc']||'','subject':_0x56682e[_0x135b('0x198')],'html':_0x56682e['text'],'text':_0x56682e['text']};var _0x4593ab={'tls':{'rejectUnauthorized':![]}};if(_0x4fdf43[_0x135b('0x194')][_0x135b('0x199')]){_0x4593ab[_0x135b('0x199')]=_0x4fdf43[_0x135b('0x194')][_0x135b('0x199')];}else{_0x4593ab[_0x135b('0x19a')]=_0x4fdf43[_0x135b('0x194')]['host'];_0x4593ab[_0x135b('0x19b')]=_0x4fdf43[_0x135b('0x194')][_0x135b('0x19b')];_0x4593ab[_0x135b('0x19c')]=_0x4fdf43[_0x135b('0x194')][_0x135b('0x19c')];}if(_0x4fdf43[_0x135b('0x194')][_0x135b('0x19d')]){_0x4593ab[_0x135b('0x19e')]={'user':_0x4fdf43[_0x135b('0x194')][_0x135b('0x19f')],'pass':_0x4fdf43[_0x135b('0x194')][_0x135b('0x1a0')]};}if(this[_0x135b('0xa7')](_0x56682e[_0x135b('0x1a1')])){}logger[_0x135b('0x1a2')](_0x135b('0x1a3'),JSON[_0x135b('0xa0')](_0x1fd818));this[_0x135b('0x39')][_0x135b('0x72')](this,_0x56682e,_0x56682e[_0x135b('0x192')]);this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0x1a4'),_0x4fdf43[_0x135b('0x15')]));this['sendMailMessage'][_0x135b('0x72')](this,_0x4593ab,_0x1fd818);return this['channel'][_0x135b('0xad')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0x135b('0x1a5')]=function(_0x5580b8){logger[_0x135b('0x2f')](util[_0x135b('0x2b')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x5580b8['label']));return this[_0x135b('0xe')][_0x135b('0xad')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0x135b('0x10')][_0x135b('0x1a6')]=function(_0x4dd75b){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x1a7'),_0x4dd75b[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x4dd75b[_0x135b('0x1a8')])){return this[_0x135b('0xe')]['noop'](_0x135b('0x1a9'));}var _0x2773f5=this[_0x135b('0x36')][_0x135b('0x72')](this,_0x4dd75b[_0x135b('0x1a8')]);if(!_0x2773f5){return this[_0x135b('0xe')]['error'](_0x4dd75b,_0x135b('0x1aa'));}var _0x540102={'body':_0x4dd75b['sms_text'],'phone':_0x4dd75b['to']||'','SmsAccountId':_0x2773f5['id']};logger[_0x135b('0x1a2')](_0x135b('0x1ab'),JSON['stringify'](_0x540102));this['createSquareDetailsReport']['sync'](this,_0x4dd75b,_0x4dd75b[_0x135b('0x1a8')]);this['channel']['noop'](util['format'](_0x135b('0x1ac'),_0x2773f5['name']));this['createSmsMessage'][_0x135b('0x72')](this,_0x540102);return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x1ad'));};AGIVertices[_0x135b('0x10')][_0x135b('0x1ae')]=function(_0x2ce2c4){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x1af'),_0x2ce2c4['label']));if(!this[_0x135b('0xa7')](_0x2ce2c4['variable_id'])){return this[_0x135b('0xe')]['error'](_0x2ce2c4,'no\x20variable\x20selected');}var _0x17f72d=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x2ce2c4['variable_id']);if(!_0x17f72d){return this['channel'][_0x135b('0x2d')](_0x2ce2c4,'no\x20variable\x20found');}return this['channel']['setVariable'](_0x17f72d,_0x2ce2c4[_0x135b('0x1b0')]);};AGIVertices[_0x135b('0x10')][_0x135b('0x1b1')]=function(_0x48af62){logger[_0x135b('0x2f')](util['format'](_0x135b('0x1b2'),_0x48af62[_0x135b('0x3b')]));this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x1b3'));if(_0x48af62[_0x135b('0xbc')]===_0x135b('0x1b4')){this[_0x135b('0xe')]['noop'](_0x135b('0x1b5'));return this[_0x135b('0xe')][_0x135b('0xbc')]();}return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x1b6'));};AGIVertices['prototype'][_0x135b('0x1b7')]=function(_0x20b884){logger['info'](util[_0x135b('0x2b')](_0x135b('0x1b8'),_0x20b884['label']));if(!this[_0x135b('0xa7')](_0x20b884['project_id'])){return this[_0x135b('0xe')][_0x135b('0x2d')](_0x20b884,'no\x20subproject\x20selected');}var _0x25dda5=this[_0x135b('0x19')]['sync'](this,_0x20b884['project_id']);if(!this['isConfigured'](_0x25dda5)){return this['channel'][_0x135b('0x2d')](_0x20b884,util['format'](_0x135b('0x1b9'),_0x20b884['project_id']));}if(_0x25dda5===this[_0x135b('0xe')]['arg_1']){return this[_0x135b('0xe')]['error'](_0x20b884,_0x135b('0x1ba'));}this[_0x135b('0x39')][_0x135b('0x72')](this,_0x20b884,_0x25dda5);var _0x847bc7=this[_0x135b('0xe')][_0x135b('0x59')](_0x135b('0x1bb'),util[_0x135b('0x2b')](_0x135b('0x1bc'),config[_0x135b('0xb9')][_0x135b('0x19a')]||_0x135b('0x1bd'),_0x25dda5,this[_0x135b('0xe')]['arg_1']));if(_0x847bc7[_0x135b('0xa5')]===-0x1){return _0x847bc7;}return this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')]('Executed\x20command\x20%s\x20%s','AGI',_0x25dda5));};AGIVertices[_0x135b('0x10')][_0x135b('0x1be')]=function(_0x340113){logger['info'](util[_0x135b('0x2b')](_0x135b('0x1bf'),_0x340113[_0x135b('0x3b')]));var _0x22c81a=this[_0x135b('0x58')][_0x135b('0x72')](this,_0x340113[_0x135b('0x1c0')]);this[_0x135b('0x39')][_0x135b('0x72')](this,_0x340113,_0x340113[_0x135b('0x1c0')]);if(this[_0x135b('0xa7')](_0x340113[_0x135b('0xdd')])){var _0x3eb131=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x340113[_0x135b('0xdd')]);if(_0x3eb131){this[_0x135b('0xe')][_0x135b('0x9e')](_0x3eb131,_0x22c81a);return this['channel'][_0x135b('0xad')](util['format'](_0x135b('0x1c1'),_0x340113['command'],_0x3eb131));}}return this[_0x135b('0xe')]['noop'](util[_0x135b('0x2b')](_0x135b('0x1c2'),_0x340113[_0x135b('0x1c0')]));};AGIVertices[_0x135b('0x10')][_0x135b('0x1c3')]=function(_0x1d12c7){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x1c4'),_0x1d12c7[_0x135b('0x3b')]));_0x1d12c7[_0x135b('0x5f')]=_0x1d12c7['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x135b('0xa7')](_0x1d12c7[_0x135b('0x5d')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0x1c5'));}if(!this[_0x135b('0xa7')](_0x1d12c7[_0x135b('0x5f')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this['channel'][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x1c6'),_0x1d12c7[_0x135b('0x5f')]));var _0x55d458=this['googleCloudTTS']['sync'](this,_0x1d12c7);if(_0x55d458){this['channel']['noop'](util[_0x135b('0x2b')](_0x135b('0x1c7'),_0x55d458));var _0x4ea453=this[_0x135b('0xe')][_0x135b('0x106')](_0x55d458);try{fs[_0x135b('0x159')](_0x55d458+_0x135b('0x107'));}catch(_0xb20bb3){logger[_0x135b('0x2d')](_0xb20bb3);}return _0x4ea453;}return this['channel'][_0x135b('0x2d')](_0x1d12c7,_0x135b('0x1c8'));};AGIVertices['prototype'][_0x135b('0x1c9')]=function(_0x1bc430){logger['info'](util['format'](_0x135b('0x1ca'),_0x1bc430['label']));_0x1bc430['text']=_0x1bc430[_0x135b('0x5f')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x135b('0xa7')](_0x1bc430[_0x135b('0x5f')])){return this[_0x135b('0xe')][_0x135b('0xad')](_0x135b('0xab'));}this[_0x135b('0xe')][_0x135b('0xad')](util['format']('Trying\x20Google\x20TTS\x20%s',_0x1bc430[_0x135b('0x5f')]));var _0x27a951=this[_0x135b('0x65')]['sync'](this,_0x1bc430);if(_0x27a951){this[_0x135b('0xe')][_0x135b('0xad')](util[_0x135b('0x2b')](_0x135b('0x1cb'),_0x27a951));var _0x580f75=this[_0x135b('0xe')][_0x135b('0x106')](_0x27a951);try{fs[_0x135b('0x159')](_0x27a951+_0x135b('0x107'));}catch(_0x130f4a){logger[_0x135b('0x2d')](_0x130f4a);}return _0x580f75;}return this[_0x135b('0xe')]['error'](_0x1bc430,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x135b('0x10')][_0x135b('0x1cc')]=function(_0x4d1a24){logger['info'](util['format']('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x4d1a24[_0x135b('0x3b')]));if(!this['isConfigured'](_0x4d1a24[_0x135b('0x15c')])){return this['channel'][_0x135b('0x2d')](_0x4d1a24,'no\x20find\x20by\x20configured');}logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x161'),this['channel'][_0x135b('0x3d')],_0x4d1a24[_0x135b('0x15c')]));var _0x2b49fd=this[_0x135b('0x53')][_0x135b('0x72')](this,_0x4d1a24[_0x135b('0x15c')]);if(_0x2b49fd){logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x15e'),this['channel'][_0x135b('0x3d')],_0x4d1a24[_0x135b('0x15c')]));this[_0x135b('0xe')][_0x135b('0xad')](util['format'](_0x135b('0x15e'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x4d1a24[_0x135b('0x15c')]));return{'code':0xc8,'result':_0x135b('0x15f')};}else{logger[_0x135b('0x2f')](util[_0x135b('0x2b')](_0x135b('0x162'),this[_0x135b('0xe')][_0x135b('0x3d')],_0x4d1a24['findBy']));this['channel'][_0x135b('0xad')](util['format'](_0x135b('0x162'),this[_0x135b('0xe')]['callerid'],_0x4d1a24[_0x135b('0x15c')]));return{'code':0xc8,'result':_0x135b('0x163')};}};AGIVertices['prototype'][_0x135b('0x1cd')]=function(_0x584bdd){logger['info'](util[_0x135b('0x2b')](_0x135b('0x1ce'),_0x584bdd[_0x135b('0x3b')]));var _0x187358=this[_0x135b('0xe')][_0x135b('0x59')]('VOICEMAIL',[_0x584bdd[_0x135b('0x1cf')],_0x584bdd[_0x135b('0x7a')]]);if(_0x187358['result']===-0x1){return _0x187358;}return this['channel']['noop'](util['format'](_0x135b('0xc8'),_0x135b('0x1d0'),_0x584bdd[_0x135b('0x1cf')]));};AGIVertices[_0x135b('0x10')][_0x135b('0x1d1')]=function(_0x4b0a55){logger['info'](util[_0x135b('0x2b')](_0x135b('0x1d2'),_0x4b0a55[_0x135b('0x3b')]));if(!this[_0x135b('0xa7')](_0x4b0a55['variable_id'])){return this['channel'][_0x135b('0x2d')](_0x4b0a55,_0x135b('0x1d3'));}var _0x356525=this[_0x135b('0x11')][_0x135b('0x72')](this,_0x4b0a55[_0x135b('0xdd')]);if(!_0x356525){return this['channel']['error'](_0x4b0a55,'no\x20variable\x20found');}var _0x1a7e74=this['channel']['getVariable'](_0x356525);return{'code':0xc8,'result':_0x1a7e74[_0x135b('0xa3')]?_0x1a7e74['extra']:'-'};};String[_0x135b('0x10')][_0x135b('0xa2')]=function(_0x2b3a51,_0x30082c){return this[_0x135b('0xa1')](_0x2b3a51)[_0x135b('0x1d4')](_0x30082c);};module['exports']=AGIVertices;
\ No newline at end of file
index 0aa1b73..68eb2af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f7=['error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','acw','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','../ami','../../../config/logger','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','getAgent','then','voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','lastPauseAt','format','uniqueid','updateAcw','timer','update','catch'];(function(_0x23f57c,_0x26e532){var _0x415f09=function(_0x360f88){while(--_0x360f88){_0x23f57c['push'](_0x23f57c['shift']());}};_0x415f09(++_0x26e532);}(_0xe4f7,0x1cb));var _0x7e4f=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xe4f7[_0x4b369d];return _0x571a98;};'use strict';var util=require(_0x7e4f('0x0'));var _=require(_0x7e4f('0x1'));var moment=require('moment');var ami=require(_0x7e4f('0x2'));var logger=require(_0x7e4f('0x3'))('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x7e4f('0x4'));function Acw(_0x39abc2){this[_0x7e4f('0x5')]=_0x39abc2[_0x7e4f('0x5')];this[_0x7e4f('0x6')]=_0x39abc2[_0x7e4f('0x6')];this['timers']=_0x39abc2[_0x7e4f('0x7')];this[_0x7e4f('0x8')]={};ami['on'](_0x7e4f('0x9'),this[_0x7e4f('0xa')][_0x7e4f('0xb')](this));ami['on'](_0x7e4f('0xc'),this[_0x7e4f('0xd')][_0x7e4f('0xb')](this));ami['on'](_0x7e4f('0xe'),this[_0x7e4f('0xf')]['bind'](this));ami['on']('agentringnoanswer',this[_0x7e4f('0x10')][_0x7e4f('0xb')](this));ami['on'](_0x7e4f('0x11'),this[_0x7e4f('0x12')][_0x7e4f('0xb')](this));ami['on'](_0x7e4f('0x13'),this[_0x7e4f('0x14')][_0x7e4f('0xb')](this));ami['on'](_0x7e4f('0x15'),this[_0x7e4f('0x16')][_0x7e4f('0xb')](this));}function getDiff(_0x23dee7){var _0x42bbe5=moment()[_0x7e4f('0x17')](0x0);var _0x2c97b5=moment(_0x23dee7)[_0x7e4f('0x17')](0x0);return _0x42bbe5[_0x7e4f('0x18')](_0x2c97b5,_0x7e4f('0x19'));}Acw[_0x7e4f('0x1a')][_0x7e4f('0x1b')]=function(_0x43c4f8){try{var _0xd137b7=this;var _0x56b613=this['channels'][_0x43c4f8][_0x7e4f('0x1c')];var _0x164c27=this[_0x7e4f('0x8')][_0x43c4f8][_0x7e4f('0x1d')];var _0x38b2be=this[_0x7e4f('0x5')][_0x164c27];var _0x5697f1=![];var _0x18b2ef=_0x7e4f('0x1e');if(_0x38b2be[_0x7e4f('0x1f')]){if(_0x38b2be[_0x7e4f('0x20')][_0x7e4f('0x21')]){_0x5697f1=!![];_0x18b2ef=_0x38b2be[_0x7e4f('0x20')][_0x7e4f('0x21')];}}ami['Action']({'action':_0x7e4f('0x22'),'interface':_0x56b613,'paused':!![],'reason':_0x18b2ef})['then'](function(_0x2ecb60){if(_0xd137b7['agents'][_0x56b613]){return RpcUser[_0x7e4f('0x23')](_0xd137b7[_0x7e4f('0x6')][_0x56b613]['id'])[_0x7e4f('0x24')](function(_0x4ee9fd){if(_0x4ee9fd&&!_0x4ee9fd[_0x7e4f('0x25')]){logger[_0x7e4f('0x26')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x43c4f8,_0x56b613,_0x164c27);var _0xec487b=_0xd137b7[_0x7e4f('0x8')][_0x43c4f8][_0x7e4f('0x27')]&&_0xd137b7[_0x7e4f('0x8')][_0x43c4f8][_0x7e4f('0x28')]?_0xd137b7[_0x7e4f('0x8')][_0x43c4f8]['destlinkedid']:_0x43c4f8;return RpcUser[_0x7e4f('0x29')](_0xd137b7[_0x7e4f('0x6')][_0x56b613],_0x18b2ef,_0xec487b)['then'](function(_0x5d8548){if(!_0x5697f1){_0xd137b7[_0x7e4f('0x7')][_0x56b613]={};logger[_0x7e4f('0x26')](_0x7e4f('0x2a'),_0x43c4f8,_0xd137b7[_0x7e4f('0x5')][_0x164c27][_0x7e4f('0x2b')],_0x56b613,_0x164c27);_0xd137b7[_0x7e4f('0x7')][_0x56b613]['timer']=setTimeout(_0xd137b7['stopAcw'][_0x7e4f('0xb')](_0xd137b7,_0x56b613),_0xd137b7[_0x7e4f('0x5')][_0x164c27][_0x7e4f('0x2b')]*0x3e8);_0xd137b7[_0x7e4f('0x7')][_0x56b613][_0x7e4f('0x2c')]=moment()[_0x7e4f('0x2d')]('YYYY-MM-DD\x20HH:mm:ss');_0xd137b7[_0x7e4f('0x7')][_0x56b613][_0x7e4f('0x2e')]=_0x43c4f8;_0xd137b7[_0x7e4f('0x7')][_0x56b613][_0x7e4f('0x1d')]=_0x164c27;_0xd137b7['timers'][_0x56b613][_0x7e4f('0x2f')]=function(){var _0x3a7336=getDiff(_0xd137b7[_0x7e4f('0x7')][_0x56b613][_0x7e4f('0x2c')]);clearTimeout(_0xd137b7[_0x7e4f('0x7')][_0x56b613][_0x7e4f('0x30')]);_0xd137b7['timers'][_0x56b613][_0x7e4f('0x30')]=![];RpcVoiceAgentReport[_0x7e4f('0x31')]({'acwtime':_0x3a7336},_0xd137b7[_0x7e4f('0x7')][_0x56b613][_0x7e4f('0x2e')],_0x56b613)[_0x7e4f('0x24')](function(_0x568edc){logger[_0x7e4f('0x26')]('[%s][UPDATE][ACWTIME:%s]',_0x43c4f8,_0x3a7336,_0x568edc);})[_0x7e4f('0x32')](function(_0x3877dc){logger[_0x7e4f('0x33')](_0x7e4f('0x34'),_0x43c4f8,_0x3877dc);});delete _0xd137b7[_0x7e4f('0x7')][_0x56b613];};}});}else{logger[_0x7e4f('0x26')](_0x7e4f('0x35'),_0x43c4f8,_0x56b613,_0x164c27);}});}})[_0x7e4f('0x32')](function(_0x576c97){logger[_0x7e4f('0x33')](_0x7e4f('0x2a'),_0x43c4f8,_0xd137b7['voiceQueues'][_0x164c27]['acwTimeout'],_0x56b613,_0x164c27);})[_0x7e4f('0x36')](function(){delete _0xd137b7['channels'][_0x43c4f8];});}catch(_0x49f728){logger['error']('[ACW][START]\x20%s',_0x49f728['message']);}};Acw[_0x7e4f('0x1a')][_0x7e4f('0x37')]=function(_0x204926){try{var _0x3bd598=this;if(_0x3bd598[_0x7e4f('0x7')][_0x204926]){_0x3bd598[_0x7e4f('0x7')][_0x204926][_0x7e4f('0x30')]=![];var _0x185f69=_0x3bd598[_0x7e4f('0x7')][_0x204926][_0x7e4f('0x2e')];var _0x52924e=_0x3bd598[_0x7e4f('0x7')][_0x204926][_0x7e4f('0x1d')];var _0x27d2f6=_0x3bd598[_0x7e4f('0x5')][_0x52924e]['acwTimeout'];logger[_0x7e4f('0x26')](_0x7e4f('0x38'),_0x185f69,_0x204926);RpcUser[_0x7e4f('0x39')](this[_0x7e4f('0x6')][_0x204926]);RpcVoiceAgentReport[_0x7e4f('0x31')]({'acwtime':_0x27d2f6,'agentacw':!![]},_0x185f69,_0x204926)[_0x7e4f('0x24')](function(_0x593570){logger[_0x7e4f('0x26')]('[%s][UPDATE][ACWTIME:%s]',_0x185f69,_0x27d2f6,_0x593570);})['catch'](function(_0x3dff9d){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x185f69,_0x3dff9d);});}else{logger[_0x7e4f('0x33')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x204926);if(_0x3bd598[_0x7e4f('0x7')]){logger['info'](_0x7e4f('0x3a'),JSON[_0x7e4f('0x3b')](_0x3bd598[_0x7e4f('0x7')]));}}}catch(_0xcd0e1d){logger[_0x7e4f('0x33')](_0x7e4f('0x3c'),_0xcd0e1d[_0x7e4f('0x3d')]);}};Acw[_0x7e4f('0x1a')][_0x7e4f('0xa')]=function(_0x221f6){try{if(this[_0x7e4f('0x5')][_0x221f6[_0x7e4f('0x1d')]]&&(this[_0x7e4f('0x5')][_0x221f6[_0x7e4f('0x1d')]][_0x7e4f('0x3e')]||this[_0x7e4f('0x5')][_0x221f6[_0x7e4f('0x1d')]][_0x7e4f('0x1f')])){if(this[_0x7e4f('0x6')][_0x221f6['interface']]){this[_0x7e4f('0x8')][_0x221f6[_0x7e4f('0x2e')]]={'queue':_0x221f6['queue'],'interface':_0x221f6['interface'],'destlinkedid':_0x221f6[_0x7e4f('0x28')]};}}}catch(_0x1f6b8a){logger[_0x7e4f('0x33')](_0x7e4f('0x3f'),_0x1f6b8a[_0x7e4f('0x3d')]);}};Acw[_0x7e4f('0x1a')][_0x7e4f('0x16')]=function(_0x36f5dd){try{if(this[_0x7e4f('0x5')][_0x36f5dd[_0x7e4f('0x1d')]]&&(this[_0x7e4f('0x5')][_0x36f5dd[_0x7e4f('0x1d')]]['acw']||this['voiceQueues'][_0x36f5dd[_0x7e4f('0x1d')]][_0x7e4f('0x1f')])){if(this[_0x7e4f('0x6')][_0x36f5dd[_0x7e4f('0x1c')]]){this[_0x7e4f('0x8')][_0x36f5dd[_0x7e4f('0x2e')]]={'queue':_0x36f5dd[_0x7e4f('0x1d')],'interface':_0x36f5dd[_0x7e4f('0x1c')]};}}}catch(_0x23ff67){logger[_0x7e4f('0x33')](_0x7e4f('0x40'),_0x23ff67['message']);}};Acw[_0x7e4f('0x1a')]['syncHangupRequest']=function(_0x1f3bb1){try{if(this[_0x7e4f('0x8')][_0x1f3bb1[_0x7e4f('0x2e')]]&&_[_0x7e4f('0x41')](this[_0x7e4f('0x8')][_0x1f3bb1[_0x7e4f('0x2e')]]['attended'])){logger['info'](_0x7e4f('0x42'),_0x1f3bb1[_0x7e4f('0x2e')]);this[_0x7e4f('0x1b')](_0x1f3bb1[_0x7e4f('0x2e')]);}else if(this[_0x7e4f('0x8')][_0x1f3bb1[_0x7e4f('0x43')]]&&_[_0x7e4f('0x41')](this['channels'][_0x1f3bb1[_0x7e4f('0x43')]][_0x7e4f('0x27')])){logger['info']('[%s][HANGUP:LINKEDID]',_0x1f3bb1['linkedid']);this[_0x7e4f('0x1b')](_0x1f3bb1[_0x7e4f('0x43')]);}}catch(_0x29d809){logger['error'](_0x7e4f('0x44'),_0x29d809[_0x7e4f('0x3d')]);}};Acw[_0x7e4f('0x1a')][_0x7e4f('0xf')]=function(_0x3db2fd){try{if(this['channels'][_0x3db2fd['uniqueid']]&&this['channels'][_0x3db2fd[_0x7e4f('0x2e')]]['attended']){logger['info'](_0x7e4f('0x45'),_0x3db2fd['uniqueid']);this['startAcw'](_0x3db2fd[_0x7e4f('0x2e')]);}else if(this['channels'][_0x3db2fd[_0x7e4f('0x43')]]&&this['channels'][_0x3db2fd['linkedid']][_0x7e4f('0x27')]){logger[_0x7e4f('0x26')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x3db2fd[_0x7e4f('0x43')]);this[_0x7e4f('0x1b')](_0x3db2fd[_0x7e4f('0x43')]);}}catch(_0x47f8d4){logger[_0x7e4f('0x33')](_0x7e4f('0x46'),_0x47f8d4['message']);}};Acw['prototype'][_0x7e4f('0x12')]=function(_0x57529b){try{if(!_[_0x7e4f('0x47')](this[_0x7e4f('0x8')][_0x57529b[_0x7e4f('0x48')]])){this[_0x7e4f('0x1b')](_0x57529b[_0x7e4f('0x48')]);if(this[_0x7e4f('0x8')][_0x57529b[_0x7e4f('0x49')]]){this['channels'][_0x57529b[_0x7e4f('0x49')]]['attended']=!![];this[_0x7e4f('0x8')][_0x57529b['transfertargetuniqueid']]=this['channels'][_0x57529b['secondtransfereruniqueid']];delete this[_0x7e4f('0x8')][_0x57529b[_0x7e4f('0x49')]];}}else if(!_['isNil'](this['channels'][_0x57529b[_0x7e4f('0x4a')]])){this[_0x7e4f('0x1b')](_0x57529b['transfertargetuniqueid']);if(this['channels'][_0x57529b[_0x7e4f('0x4b')]]){this[_0x7e4f('0x8')][_0x57529b[_0x7e4f('0x4b')]][_0x7e4f('0x27')]=!![];this[_0x7e4f('0x8')][_0x57529b[_0x7e4f('0x48')]]=this[_0x7e4f('0x8')][_0x57529b[_0x7e4f('0x4b')]];delete this[_0x7e4f('0x8')][_0x57529b[_0x7e4f('0x4b')]];}}}catch(_0x4f927a){logger[_0x7e4f('0x33')](_0x7e4f('0x4c'),_0x4f927a['message']);}};Acw[_0x7e4f('0x1a')]['syncBlindTransfer']=function(_0x27d5c0){try{if(this['channels'][_0x27d5c0[_0x7e4f('0x4d')]]){logger[_0x7e4f('0x26')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x27d5c0[_0x7e4f('0x4d')]));this['startAcw'](_0x27d5c0[_0x7e4f('0x4d')]);}else if(this['channels'][_0x27d5c0[_0x7e4f('0x4e')]]){logger['info'](_0x7e4f('0x4f'),JSON[_0x7e4f('0x3b')](_0x27d5c0[_0x7e4f('0x4e')]));this['startAcw'](_0x27d5c0[_0x7e4f('0x4e')]);}}catch(_0x4a539e){logger[_0x7e4f('0x33')]('[ACW][syncBlindTransfer]\x20%s',_0x4a539e[_0x7e4f('0x3d')]);}};Acw[_0x7e4f('0x1a')][_0x7e4f('0x10')]=function(_0x4349e1){try{if(this[_0x7e4f('0x5')][_0x4349e1['queue']]&&this[_0x7e4f('0x5')][_0x4349e1['queue']][_0x7e4f('0x50')]===_0x7e4f('0x51')){if(this[_0x7e4f('0x6')][_0x4349e1['interface']]){logger['info'](_0x7e4f('0x52'),_0x4349e1[_0x7e4f('0x2e')],_0x4349e1[_0x7e4f('0x1c')],_0x4349e1[_0x7e4f('0x1d')]);return RpcUser[_0x7e4f('0x29')](this[_0x7e4f('0x6')][_0x4349e1[_0x7e4f('0x1c')]],_0x7e4f('0x53'),_0x4349e1[_0x7e4f('0x2e')]);}}}catch(_0x200aa7){logger['error'](_0x7e4f('0x54'),_0x200aa7[_0x7e4f('0x3d')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0x42fd=['updateAcw','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','prototype','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnect]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','transfertargetuniqueid','secondtransfereruniqueid','origtransfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','savePause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid'];(function(_0x25d2fb,_0x18a774){var _0x1ded53=function(_0x4c0715){while(--_0x4c0715){_0x25d2fb['push'](_0x25d2fb['shift']());}};_0x1ded53(++_0x18a774);}(_0x42fd,0xd5));var _0xd42f=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x42fd[_0x3b5250];return _0xc844a1;};'use strict';var util=require('util');var _=require(_0xd42f('0x0'));var moment=require(_0xd42f('0x1'));var ami=require(_0xd42f('0x2'));var logger=require(_0xd42f('0x3'))(_0xd42f('0x4'));var RpcUser=require(_0xd42f('0x5'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x47ba1e){this['voiceQueues']=_0x47ba1e[_0xd42f('0x6')];this[_0xd42f('0x7')]=_0x47ba1e[_0xd42f('0x7')];this[_0xd42f('0x8')]=_0x47ba1e['timers'];this[_0xd42f('0x9')]={};ami['on'](_0xd42f('0xa'),this[_0xd42f('0xb')][_0xd42f('0xc')](this));ami['on']('hanguprequest',this[_0xd42f('0xd')][_0xd42f('0xc')](this));ami['on']('hangup',this[_0xd42f('0xe')]['bind'](this));ami['on']('agentringnoanswer',this[_0xd42f('0xf')]['bind'](this));ami['on'](_0xd42f('0x10'),this[_0xd42f('0x11')]['bind'](this));ami['on']('blindtransfer',this[_0xd42f('0x12')][_0xd42f('0xc')](this));ami['on']('custom:agentConnectPreview',this[_0xd42f('0x13')][_0xd42f('0xc')](this));}function getDiff(_0x110228){var _0x307b5d=moment()['milliseconds'](0x0);var _0x450878=moment(_0x110228)[_0xd42f('0x14')](0x0);return _0x307b5d[_0xd42f('0x15')](_0x450878,_0xd42f('0x16'));}Acw['prototype'][_0xd42f('0x17')]=function(_0x1d397f){try{var _0x1ec4d9=this;var _0x9a7661=this[_0xd42f('0x9')][_0x1d397f][_0xd42f('0x18')];var _0x2973fd=this[_0xd42f('0x9')][_0x1d397f][_0xd42f('0x19')];var _0x2b57cc=this[_0xd42f('0x6')][_0x2973fd];var _0x278253=![];var _0x2614b2='ACW';if(_0x2b57cc[_0xd42f('0x1a')]){if(_0x2b57cc[_0xd42f('0x1b')]['name']){_0x278253=!![];_0x2614b2=_0x2b57cc[_0xd42f('0x1b')][_0xd42f('0x1c')];}}ami[_0xd42f('0x1d')]({'action':_0xd42f('0x1e'),'interface':_0x9a7661,'paused':!![],'reason':_0x2614b2})[_0xd42f('0x1f')](function(_0x35904b){if(_0x1ec4d9['agents'][_0x9a7661]){return RpcUser[_0xd42f('0x20')](_0x1ec4d9['agents'][_0x9a7661]['id'])[_0xd42f('0x1f')](function(_0x3b7206){if(_0x3b7206&&!_0x3b7206[_0xd42f('0x21')]){logger[_0xd42f('0x22')](_0xd42f('0x23'),_0x1d397f,_0x9a7661,_0x2973fd);var _0x364a89=_0x1ec4d9[_0xd42f('0x9')][_0x1d397f][_0xd42f('0x24')]&&_0x1ec4d9[_0xd42f('0x9')][_0x1d397f][_0xd42f('0x25')]?_0x1ec4d9[_0xd42f('0x9')][_0x1d397f][_0xd42f('0x25')]:_0x1d397f;return RpcUser['savePause'](_0x1ec4d9[_0xd42f('0x7')][_0x9a7661],_0x2614b2,_0x364a89)[_0xd42f('0x1f')](function(_0x4901fb){if(!_0x278253){_0x1ec4d9['timers'][_0x9a7661]={};logger[_0xd42f('0x22')](_0xd42f('0x26'),_0x1d397f,_0x1ec4d9[_0xd42f('0x6')][_0x2973fd][_0xd42f('0x27')],_0x9a7661,_0x2973fd);_0x1ec4d9[_0xd42f('0x8')][_0x9a7661][_0xd42f('0x28')]=setTimeout(_0x1ec4d9['stopAcw'][_0xd42f('0xc')](_0x1ec4d9,_0x9a7661),_0x1ec4d9[_0xd42f('0x6')][_0x2973fd]['acwTimeout']*0x3e8);_0x1ec4d9[_0xd42f('0x8')][_0x9a7661][_0xd42f('0x29')]=moment()[_0xd42f('0x2a')](_0xd42f('0x2b'));_0x1ec4d9[_0xd42f('0x8')][_0x9a7661][_0xd42f('0x2c')]=_0x1d397f;_0x1ec4d9[_0xd42f('0x8')][_0x9a7661][_0xd42f('0x19')]=_0x2973fd;_0x1ec4d9['timers'][_0x9a7661][_0xd42f('0x2d')]=function(){var _0x395817=getDiff(_0x1ec4d9[_0xd42f('0x8')][_0x9a7661]['lastPauseAt']);clearTimeout(_0x1ec4d9[_0xd42f('0x8')][_0x9a7661][_0xd42f('0x28')]);_0x1ec4d9[_0xd42f('0x8')][_0x9a7661][_0xd42f('0x28')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x395817},_0x1ec4d9['timers'][_0x9a7661][_0xd42f('0x2c')],_0x9a7661)['then'](function(_0x2289a0){logger[_0xd42f('0x22')](_0xd42f('0x2e'),_0x1d397f,_0x395817,_0x2289a0);})[_0xd42f('0x2f')](function(_0x36f09c){logger['error'](_0xd42f('0x30'),_0x1d397f,_0x36f09c);});delete _0x1ec4d9[_0xd42f('0x8')][_0x9a7661];};}});}else{logger[_0xd42f('0x22')](_0xd42f('0x31'),_0x1d397f,_0x9a7661,_0x2973fd);}});}})[_0xd42f('0x2f')](function(_0x415117){logger[_0xd42f('0x32')](_0xd42f('0x26'),_0x1d397f,_0x1ec4d9[_0xd42f('0x6')][_0x2973fd][_0xd42f('0x27')],_0x9a7661,_0x2973fd);})[_0xd42f('0x33')](function(){delete _0x1ec4d9['channels'][_0x1d397f];});}catch(_0x543fb7){logger[_0xd42f('0x32')](_0xd42f('0x34'),_0x543fb7['message']);}};Acw[_0xd42f('0x35')][_0xd42f('0x36')]=function(_0x5efd94){try{var _0x2e48f5=this;if(_0x2e48f5[_0xd42f('0x8')][_0x5efd94]){_0x2e48f5['timers'][_0x5efd94][_0xd42f('0x28')]=![];var _0x477952=_0x2e48f5[_0xd42f('0x8')][_0x5efd94][_0xd42f('0x2c')];var _0x24f7ae=_0x2e48f5[_0xd42f('0x8')][_0x5efd94][_0xd42f('0x19')];var _0x444a46=_0x2e48f5[_0xd42f('0x6')][_0x24f7ae][_0xd42f('0x27')];logger[_0xd42f('0x22')](_0xd42f('0x37'),_0x477952,_0x5efd94);RpcUser[_0xd42f('0x38')](this[_0xd42f('0x7')][_0x5efd94]);RpcVoiceAgentReport[_0xd42f('0x39')]({'acwtime':_0x444a46,'agentacw':!![]},_0x477952,_0x5efd94)[_0xd42f('0x1f')](function(_0x11a4f1){logger[_0xd42f('0x22')](_0xd42f('0x2e'),_0x477952,_0x444a46,_0x11a4f1);})['catch'](function(_0x5294f8){logger[_0xd42f('0x32')](_0xd42f('0x30'),_0x477952,_0x5294f8);});}else{logger[_0xd42f('0x32')](_0xd42f('0x3a'),_0x5efd94);if(_0x2e48f5['timers']){logger[_0xd42f('0x22')](_0xd42f('0x3b'),JSON['stringify'](_0x2e48f5[_0xd42f('0x8')]));}}}catch(_0x11fe05){logger[_0xd42f('0x32')](_0xd42f('0x3c'),_0x11fe05[_0xd42f('0x3d')]);}};Acw['prototype'][_0xd42f('0xb')]=function(_0x3943aa){try{if(this['voiceQueues'][_0x3943aa['queue']]&&(this[_0xd42f('0x6')][_0x3943aa[_0xd42f('0x19')]][_0xd42f('0x4')]||this[_0xd42f('0x6')][_0x3943aa[_0xd42f('0x19')]][_0xd42f('0x1a')])){if(this[_0xd42f('0x7')][_0x3943aa[_0xd42f('0x18')]]){this[_0xd42f('0x9')][_0x3943aa['uniqueid']]={'queue':_0x3943aa['queue'],'interface':_0x3943aa[_0xd42f('0x18')],'destlinkedid':_0x3943aa['destlinkedid']};}}}catch(_0x680d9e){logger[_0xd42f('0x32')](_0xd42f('0x3e'),_0x680d9e['message']);}};Acw['prototype'][_0xd42f('0x13')]=function(_0x1d185f){try{if(this[_0xd42f('0x6')][_0x1d185f[_0xd42f('0x19')]]&&(this['voiceQueues'][_0x1d185f['queue']][_0xd42f('0x4')]||this[_0xd42f('0x6')][_0x1d185f[_0xd42f('0x19')]][_0xd42f('0x1a')])){if(this[_0xd42f('0x7')][_0x1d185f[_0xd42f('0x18')]]){this[_0xd42f('0x9')][_0x1d185f[_0xd42f('0x2c')]]={'queue':_0x1d185f[_0xd42f('0x19')],'interface':_0x1d185f[_0xd42f('0x18')]};}}}catch(_0x486f6d){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x486f6d[_0xd42f('0x3d')]);}};Acw[_0xd42f('0x35')][_0xd42f('0xd')]=function(_0x1d5c12){try{if(this[_0xd42f('0x9')][_0x1d5c12[_0xd42f('0x2c')]]&&_[_0xd42f('0x3f')](this[_0xd42f('0x9')][_0x1d5c12['uniqueid']][_0xd42f('0x24')])){logger[_0xd42f('0x22')](_0xd42f('0x40'),_0x1d5c12[_0xd42f('0x2c')]);this[_0xd42f('0x17')](_0x1d5c12[_0xd42f('0x2c')]);}else if(this[_0xd42f('0x9')][_0x1d5c12[_0xd42f('0x41')]]&&_['isUndefined'](this[_0xd42f('0x9')][_0x1d5c12[_0xd42f('0x41')]]['attended'])){logger[_0xd42f('0x22')](_0xd42f('0x42'),_0x1d5c12[_0xd42f('0x41')]);this['startAcw'](_0x1d5c12[_0xd42f('0x41')]);}}catch(_0x11e3ab){logger[_0xd42f('0x32')](_0xd42f('0x43'),_0x11e3ab[_0xd42f('0x3d')]);}};Acw['prototype']['syncHangup']=function(_0x3a013d){try{if(this[_0xd42f('0x9')][_0x3a013d[_0xd42f('0x2c')]]&&this[_0xd42f('0x9')][_0x3a013d[_0xd42f('0x2c')]][_0xd42f('0x24')]){logger[_0xd42f('0x22')](_0xd42f('0x44'),_0x3a013d[_0xd42f('0x2c')]);this[_0xd42f('0x17')](_0x3a013d[_0xd42f('0x2c')]);}else if(this[_0xd42f('0x9')][_0x3a013d[_0xd42f('0x41')]]&&this[_0xd42f('0x9')][_0x3a013d['linkedid']][_0xd42f('0x24')]){logger[_0xd42f('0x22')](_0xd42f('0x45'),_0x3a013d[_0xd42f('0x41')]);this['startAcw'](_0x3a013d[_0xd42f('0x41')]);}}catch(_0x3661e7){logger[_0xd42f('0x32')](_0xd42f('0x46'),_0x3661e7[_0xd42f('0x3d')]);}};Acw[_0xd42f('0x35')][_0xd42f('0x11')]=function(_0x21baf4){try{if(!_[_0xd42f('0x47')](this[_0xd42f('0x9')][_0x21baf4[_0xd42f('0x48')]])){this[_0xd42f('0x17')](_0x21baf4[_0xd42f('0x48')]);if(this['channels'][_0x21baf4['secondtransfereruniqueid']]){this[_0xd42f('0x9')][_0x21baf4['secondtransfereruniqueid']]['attended']=!![];this['channels'][_0x21baf4[_0xd42f('0x49')]]=this[_0xd42f('0x9')][_0x21baf4[_0xd42f('0x4a')]];delete this['channels'][_0x21baf4[_0xd42f('0x4a')]];}}else if(!_['isNil'](this['channels'][_0x21baf4[_0xd42f('0x49')]])){this[_0xd42f('0x17')](_0x21baf4[_0xd42f('0x49')]);if(this['channels'][_0x21baf4[_0xd42f('0x4b')]]){this[_0xd42f('0x9')][_0x21baf4[_0xd42f('0x4b')]][_0xd42f('0x24')]=!![];this[_0xd42f('0x9')][_0x21baf4['transfereeuniqueid']]=this[_0xd42f('0x9')][_0x21baf4[_0xd42f('0x4b')]];delete this['channels'][_0x21baf4[_0xd42f('0x4b')]];}}}catch(_0x39e0a1){logger[_0xd42f('0x32')]('[ACW][syncAttendedTransfer]\x20%s',_0x39e0a1[_0xd42f('0x3d')]);}};Acw['prototype'][_0xd42f('0x12')]=function(_0x441c6d){try{if(this['channels'][_0x441c6d['transfereruniqueid']]){logger[_0xd42f('0x22')](_0xd42f('0x4c'),JSON[_0xd42f('0x4d')](_0x441c6d[_0xd42f('0x4e')]));this[_0xd42f('0x17')](_0x441c6d['transfereruniqueid']);}else if(this[_0xd42f('0x9')][_0x441c6d[_0xd42f('0x4f')]]){logger[_0xd42f('0x22')](_0xd42f('0x50'),JSON[_0xd42f('0x4d')](_0x441c6d['transfererlinkedid']));this[_0xd42f('0x17')](_0x441c6d[_0xd42f('0x4f')]);}}catch(_0x51a4e4){logger[_0xd42f('0x32')](_0xd42f('0x51'),_0x51a4e4[_0xd42f('0x3d')]);}};Acw[_0xd42f('0x35')][_0xd42f('0xf')]=function(_0x546319){try{if(this[_0xd42f('0x6')][_0x546319[_0xd42f('0x19')]]&&this[_0xd42f('0x6')][_0x546319[_0xd42f('0x19')]][_0xd42f('0x52')]===_0xd42f('0x53')){if(this['agents'][_0x546319['interface']]){logger[_0xd42f('0x22')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x546319['uniqueid'],_0x546319['interface'],_0x546319[_0xd42f('0x19')]);return RpcUser[_0xd42f('0x54')](this[_0xd42f('0x7')][_0x546319['interface']],'Auto-Pause',_0x546319[_0xd42f('0x2c')]);}}}catch(_0x5ba005){logger[_0xd42f('0x32')](_0xd42f('0x55'),_0x5ba005[_0xd42f('0x3d')]);}};module['exports']=Acw;
\ No newline at end of file
index 2efa04b..56fe8db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','exports','asterisk-manager','bluebird','../../config/logger','ami','../../config/environment','asterisk','port','username','password','Action','promisify','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus'];(function(_0x1111dc,_0x4adace){var _0x58c32e=function(_0x237aae){while(--_0x237aae){_0x1111dc['push'](_0x1111dc['shift']());}};_0x58c32e(++_0x4adace);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Manager=require(_0x0d8b('0x0'));var BPromise=require(_0x0d8b('0x1'));var moment=require('moment');var util=require('util');var _=require('lodash');var logger=require(_0x0d8b('0x2'))(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var ami=new Manager(config[_0x0d8b('0x5')][_0x0d8b('0x6')],config['asterisk']['ip'],config['asterisk'][_0x0d8b('0x7')],config[_0x0d8b('0x5')][_0x0d8b('0x8')],!![]);ami['keepConnected']();ami[_0x0d8b('0x9')]=BPromise[_0x0d8b('0xa')](ami['action']);function error(_0x129310){logger[_0x0d8b('0xb')](util[_0x0d8b('0xc')](_0x0d8b('0xd'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port'],util[_0x0d8b('0xe')](_0x129310,![],null)));}function close(){logger['error'](util[_0x0d8b('0xc')](_0x0d8b('0xf'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')]));}ami[_0x0d8b('0x10')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x11')});};};ami[_0x0d8b('0x12')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x13')});};};ami[_0x0d8b('0x14')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x15')});};};ami[_0x0d8b('0x16')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x17')});};};ami[_0x0d8b('0x18')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x19')});};};function connect(_0x4586c2){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x1b'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config['asterisk'][_0x0d8b('0x6')]));ami[_0x0d8b('0x1c')](_0x0d8b('0xb'),error);ami[_0x0d8b('0x1c')](_0x0d8b('0x1d'),close);}ami['on'](_0x0d8b('0x1e'),connect);ami['on'](_0x0d8b('0x1f'),function(_0x352c17){logger['info'](util['format'](_0x0d8b('0x20'),config['asterisk']['username'],config['asterisk']['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')],util[_0x0d8b('0xe')](_0x352c17,![],null)));});ami['on'](_0x0d8b('0x21'),function(_0x221071){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x22'),config[_0x0d8b('0x5')]['username'],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port']));return BPromise[_0x0d8b('0x23')]()['then'](ami[_0x0d8b('0x10')]())[_0x0d8b('0x24')](ami[_0x0d8b('0x12')]())['then'](ami['actionSipPeerStatus']())[_0x0d8b('0x24')](ami[_0x0d8b('0x16')]())['then'](ami[_0x0d8b('0x18')]())['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x25'),util['inspect'](_0x1b2b59,{'showHidden':![],'depth':null}));});});ami[_0x0d8b('0x1c')]('error',error);ami[_0x0d8b('0x1c')]('close',close);module[_0x0d8b('0x26')]=ami;
\ No newline at end of file
+var _0xbaf0=['once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','then','actionSipShowRegistry','catch','[ami.js][fullybooted]','exports','bluebird','moment','util','lodash','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s'];(function(_0x59c8bf,_0x8ebd29){var _0x111039=function(_0x536ac3){while(--_0x536ac3){_0x59c8bf['push'](_0x59c8bf['shift']());}};_0x111039(++_0x8ebd29);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0x0baf('0x0'));var moment=require(_0x0baf('0x1'));var util=require(_0x0baf('0x2'));var _=require(_0x0baf('0x3'));var logger=require(_0x0baf('0x4'))(_0x0baf('0x5'));var config=require('../../config/environment');var ami=new Manager(config[_0x0baf('0x6')][_0x0baf('0x7')],config[_0x0baf('0x6')]['ip'],config[_0x0baf('0x6')][_0x0baf('0x8')],config[_0x0baf('0x6')][_0x0baf('0x9')],!![]);ami[_0x0baf('0xa')]();ami[_0x0baf('0xb')]=BPromise['promisify'](ami[_0x0baf('0xc')]);function error(_0x5f20aa){logger[_0x0baf('0xd')](util[_0x0baf('0xe')](_0x0baf('0xf'),config[_0x0baf('0x6')][_0x0baf('0x8')],config[_0x0baf('0x6')]['ip'],config[_0x0baf('0x6')][_0x0baf('0x7')],util[_0x0baf('0x10')](_0x5f20aa,![],null)));}function close(){logger[_0x0baf('0xd')](util[_0x0baf('0xe')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk'][_0x0baf('0x8')],config[_0x0baf('0x6')]['ip'],config[_0x0baf('0x6')][_0x0baf('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x0baf('0xb')]({'action':'sipshowregistry'});};};ami[_0x0baf('0x11')]=function(){return function(){return ami[_0x0baf('0xb')]({'action':_0x0baf('0x12')});};};ami[_0x0baf('0x13')]=function(){return function(){return ami[_0x0baf('0xb')]({'action':_0x0baf('0x14')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x0baf('0x15')});};};ami[_0x0baf('0x16')]=function(){return function(){return ami[_0x0baf('0xb')]({'action':_0x0baf('0x17')});};};function connect(_0x2cf7da){logger[_0x0baf('0x18')](util['format'](_0x0baf('0x19'),config[_0x0baf('0x6')][_0x0baf('0x8')],config[_0x0baf('0x6')]['ip'],config[_0x0baf('0x6')][_0x0baf('0x7')]));ami['once']('error',error);ami[_0x0baf('0x1a')](_0x0baf('0x1b'),close);}ami['on'](_0x0baf('0x1c'),connect);ami['on'](_0x0baf('0x1d'),function(_0x1fa92b){logger[_0x0baf('0x18')](util[_0x0baf('0xe')](_0x0baf('0x1e'),config[_0x0baf('0x6')][_0x0baf('0x8')],config['asterisk']['ip'],config[_0x0baf('0x6')]['port'],util[_0x0baf('0x10')](_0x1fa92b,![],null)));});ami['on']('fullybooted',function(_0x4de74c){logger[_0x0baf('0x18')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x0baf('0x6')][_0x0baf('0x8')],config[_0x0baf('0x6')]['ip'],config[_0x0baf('0x6')][_0x0baf('0x7')]));return BPromise['resolve']()[_0x0baf('0x1f')](ami[_0x0baf('0x20')]())[_0x0baf('0x1f')](ami[_0x0baf('0x11')]())[_0x0baf('0x1f')](ami[_0x0baf('0x13')]())[_0x0baf('0x1f')](ami['actionQueueSummary']())[_0x0baf('0x1f')](ami[_0x0baf('0x16')]())[_0x0baf('0x21')](function(_0x265915){logger['error'](_0x0baf('0x22'),util[_0x0baf('0x10')](_0x265915,{'showHidden':![],'depth':null}));});});ami['once'](_0x0baf('0xd'),error);ami[_0x0baf('0x1a')](_0x0baf('0x1b'),close);module[_0x0baf('0x23')]=ami;
\ No newline at end of file
index 9520367..7d8dfe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xb7e7,0x121));var _0x7b7e=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0xb7e7[_0x4b2863];return _0x567d67;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
+var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x48c4ef,_0x319d44){var _0x435715=function(_0x925d50){while(--_0x925d50){_0x48c4ef['push'](_0x48c4ef['shift']());}};_0x435715(++_0x319d44);}(_0x9bde,0xe1));var _0xe9bd=function(_0x1197d7,_0x48d1ae){_0x1197d7=_0x1197d7-0x0;var _0x4ee15a=_0x9bde[_0x1197d7];return _0x4ee15a;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var client=jayson['client'][_0xe9bd('0x2')]({'port':0x2329});client[_0xe9bd('0x3')]=function(_0x131f6a,_0x1c1b34){return new BPromise(function(_0x10822d,_0x1a4d14){return client[_0xe9bd('0x4')](_0x131f6a,_0x1c1b34)['then'](function(_0x4763e9){logger[_0xe9bd('0x5')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x1c1b34,_0x4763e9);if(_0x4763e9[_0xe9bd('0x8')]){logger[_0xe9bd('0x8')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x4763e9[_0xe9bd('0x8')][_0xe9bd('0x9')],_0x1c1b34);return _0x1a4d14(_0x4763e9['error']['message']);}else{return _0x10822d(_0x4763e9[_0xe9bd('0xa')]);}})[_0xe9bd('0xb')](function(_0x2601ac){logger['error'](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x2601ac,_0x1c1b34);return _0x1a4d14(_0x2601ac);});});};module[_0xe9bd('0xc')]=client;
\ No newline at end of file
index 513658a..a805f68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a09=['VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','prototype','getCaller','\x22%s\x22\x20<%s>','name','dialCutDigit','substring','getQueue','util','moment','isNil','string','voiceQueue','Contact','phone','firstName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId'];(function(_0x336d75,_0x31764d){var _0x43b5e3=function(_0xa20758){while(--_0xa20758){_0x336d75['push'](_0x336d75['shift']());}};_0x43b5e3(++_0x31764d);}(_0x2a09,0x1b6));var _0x92a0=function(_0xd49dfd,_0x45aace){_0xd49dfd=_0xd49dfd-0x0;var _0x4dbf0b=_0x2a09[_0xd49dfd];return _0x4dbf0b;};'use strict';var util=require(_0x92a0('0x0'));var _=require('lodash');var moment=require(_0x92a0('0x1'));function checkNameSurname(_0x278826,_0x1019c5,_0x38ea7e){var _0x48a57f='';if(!_[_0x92a0('0x2')](_0x1019c5)&&'string'===typeof _0x1019c5){_0x48a57f+=_0x1019c5;}if(!_[_0x92a0('0x2')](_0x38ea7e)&&_0x92a0('0x3')===typeof _0x38ea7e){_0x48a57f+='\x20'+_0x38ea7e;}if(_0x48a57f!==''){return _0x48a57f;}return _0x278826;}function Action(_0x3aeb83,_0x3ea4dc,_0x1b692e){this[_0x92a0('0x4')]=_0x3aeb83;this['uniqueid']=_0x1b692e||undefined;this['name']=checkNameSurname(_0x3ea4dc[_0x92a0('0x5')][_0x92a0('0x6')],_0x3ea4dc['Contact'][_0x92a0('0x7')],_0x3ea4dc[_0x92a0('0x5')]['lastName']);this[_0x92a0('0x8')]=_0x3ea4dc[_0x92a0('0x5')][_0x92a0('0x6')];this[_0x92a0('0x9')]=_0x3aeb83['name'];this[_0x92a0('0xa')]=_0x3ea4dc[_0x92a0('0xa')]||![];this[_0x92a0('0xb')]=_0x3aeb83[_0x92a0('0xb')];this[_0x92a0('0xc')]=_0x3aeb83[_0x92a0('0xc')]||0x3;this[_0x92a0('0xd')]=_0x3ea4dc[_0x92a0('0xd')];this[_0x92a0('0xe')]=_0x3ea4dc[_0x92a0('0xe')];this[_0x92a0('0xf')]=_0x3ea4dc['countcongestionretry'];this[_0x92a0('0x10')]=_0x3ea4dc['countnoanswerretry'];this[_0x92a0('0x11')]=_0x3ea4dc['countnosuchnumberretry'];this['countdropretry']=_0x3ea4dc[_0x92a0('0x12')];this['countabandonedretry']=_0x3ea4dc['countabandonedretry'];this[_0x92a0('0x13')]=_0x3ea4dc[_0x92a0('0x13')];this['countagentrejectretry']=_0x3ea4dc[_0x92a0('0x14')];this[_0x92a0('0x15')]=_0x3ea4dc[_0x92a0('0x15')];this['ListId']=_0x3ea4dc[_0x92a0('0x16')];this[_0x92a0('0x17')]=_0x3ea4dc['UserId'];this[_0x92a0('0x18')]=_0x3ea4dc[_0x92a0('0x18')];this['CampaignId']=_0x3ea4dc[_0x92a0('0x19')];this[_0x92a0('0x1a')]=_0x3ea4dc['id'];this[_0x92a0('0x1b')]=_0x3ea4dc[_0x92a0('0x5')][_0x92a0('0x7')]||'';this[_0x92a0('0x1c')]=moment()[_0x92a0('0x1d')](_0x92a0('0x1e'));this[_0x92a0('0x1f')]=_0x3ea4dc[_0x92a0('0x1f')];this['callbackuniqueid']=_0x3ea4dc[_0x92a0('0x20')];this[_0x92a0('0x21')]=_0x3ea4dc[_0x92a0('0x21')];this[_0x92a0('0x22')]=_0x3ea4dc[_0x92a0('0x22')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0x92a0('0x23')][_0x92a0('0x24')]=function(){return util['format'](_0x92a0('0x25'),this[_0x92a0('0x26')],this[_0x92a0('0x4')][_0x92a0('0x27')]>0x0?this['number'][_0x92a0('0x28')](this[_0x92a0('0x4')][_0x92a0('0x27')]):this['number']);};Action[_0x92a0('0x23')][_0x92a0('0x29')]=function(){return this['queue'];};module['exports']=Action;
\ No newline at end of file
+var _0x7362=['CampaignId','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','prototype','\x22%s\x22\x20<%s>','substring','dialCutDigit','getQueue','exports','lodash','moment','isNil','string','voiceQueue','name','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId'];(function(_0x32c83f,_0x4cb2d6){var _0x15e3cd=function(_0xc75568){while(--_0xc75568){_0x32c83f['push'](_0x32c83f['shift']());}};_0x15e3cd(++_0x4cb2d6);}(_0x7362,0x1b3));var _0x2736=function(_0xcccb0c,_0x49332c){_0xcccb0c=_0xcccb0c-0x0;var _0x40a677=_0x7362[_0xcccb0c];return _0x40a677;};'use strict';var util=require('util');var _=require(_0x2736('0x0'));var moment=require(_0x2736('0x1'));function checkNameSurname(_0x37ca6b,_0x2d8324,_0x3f8ad7){var _0x2a5c53='';if(!_[_0x2736('0x2')](_0x2d8324)&&_0x2736('0x3')===typeof _0x2d8324){_0x2a5c53+=_0x2d8324;}if(!_[_0x2736('0x2')](_0x3f8ad7)&&_0x2736('0x3')===typeof _0x3f8ad7){_0x2a5c53+='\x20'+_0x3f8ad7;}if(_0x2a5c53!==''){return _0x2a5c53;}return _0x37ca6b;}function Action(_0x19edc5,_0x5978de,_0x34d43c){this[_0x2736('0x4')]=_0x19edc5;this['uniqueid']=_0x34d43c||undefined;this[_0x2736('0x5')]=checkNameSurname(_0x5978de[_0x2736('0x6')][_0x2736('0x7')],_0x5978de[_0x2736('0x6')][_0x2736('0x8')],_0x5978de['Contact'][_0x2736('0x9')]);this[_0x2736('0xa')]=_0x5978de['Contact']['phone'];this[_0x2736('0xb')]=_0x19edc5[_0x2736('0x5')];this[_0x2736('0xc')]=_0x5978de[_0x2736('0xc')]||![];this[_0x2736('0xd')]=_0x19edc5[_0x2736('0xd')];this[_0x2736('0xe')]=_0x19edc5[_0x2736('0xe')]||0x3;this[_0x2736('0xf')]=_0x5978de[_0x2736('0xf')];this[_0x2736('0x10')]=_0x5978de[_0x2736('0x10')];this[_0x2736('0x11')]=_0x5978de[_0x2736('0x11')];this[_0x2736('0x12')]=_0x5978de[_0x2736('0x12')];this[_0x2736('0x13')]=_0x5978de[_0x2736('0x13')];this[_0x2736('0x14')]=_0x5978de[_0x2736('0x14')];this[_0x2736('0x15')]=_0x5978de[_0x2736('0x15')];this[_0x2736('0x16')]=_0x5978de[_0x2736('0x16')];this[_0x2736('0x17')]=_0x5978de['countagentrejectretry'];this['ContactId']=_0x5978de[_0x2736('0x18')];this[_0x2736('0x19')]=_0x5978de[_0x2736('0x19')];this['UserId']=_0x5978de['UserId'];this[_0x2736('0x1a')]=_0x5978de[_0x2736('0x1a')];this[_0x2736('0x1b')]=_0x5978de[_0x2736('0x1b')];this['idHopper']=_0x5978de['id'];this[_0x2736('0x1c')]=_0x5978de['Contact']['firstName']||'';this[_0x2736('0x1d')]=moment()['format'](_0x2736('0x1e'));this[_0x2736('0x1f')]=_0x5978de[_0x2736('0x1f')];this[_0x2736('0x20')]=_0x5978de['callbackuniqueid'];this[_0x2736('0x21')]=_0x5978de[_0x2736('0x21')];this[_0x2736('0x22')]=_0x5978de[_0x2736('0x22')];this['originatecalleridnum']='';this[_0x2736('0x23')]='';}Action[_0x2736('0x24')]['getCaller']=function(){return util['format'](_0x2736('0x25'),this[_0x2736('0x5')],this['voiceQueue']['dialCutDigit']>0x0?this[_0x2736('0xa')][_0x2736('0x26')](this[_0x2736('0x4')][_0x2736('0x27')]):this[_0x2736('0xa')]);};Action[_0x2736('0x24')][_0x2736('0x28')]=function(){return this[_0x2736('0xb')];};module[_0x2736('0x29')]=Action;
\ No newline at end of file
index f9c6d84..a7fe68f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43a1=['countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','responsetime','answertime','endtime','format','ringtime','holdtime','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal'];(function(_0x23ce40,_0xcc9a2){var _0x169e30=function(_0x5d8733){while(--_0x5d8733){_0x23ce40['push'](_0x23ce40['shift']());}};_0x169e30(++_0xcc9a2);}(_0x43a1,0xec));var _0x143a=function(_0x52ed18,_0x722adb){_0x52ed18=_0x52ed18-0x0;var _0x5d0a9e=_0x43a1[_0x52ed18];return _0x5d0a9e;};'use strict';var util=require(_0x143a('0x0'));var _=require(_0x143a('0x1'));var moment=require(_0x143a('0x2'));function getSeconds(_0x5cbc63,_0xde866b){var _0x47b36d=moment(_0x5cbc63)[_0x143a('0x3')](0x0);var _0x598d71=moment(_0xde866b)[_0x143a('0x3')](0x0);return _0x47b36d[_0x143a('0x4')](_0x598d71,_0x143a('0x5'));}function AgentComplete(_0x129a88,_0x33c563){this[_0x143a('0x6')]=0x4;this[_0x143a('0x7')]=_0x143a('0x8');this[_0x143a('0x9')]=_0x129a88[_0x143a('0x9')];this[_0x143a('0xa')]=_0x129a88['type'];this['campaigntype']=_0x129a88[_0x143a('0xa')]===_0x143a('0xb')?'queue':_0x129a88[_0x143a('0xa')];this[_0x143a('0xc')]=_0x129a88[_0x143a('0xc')];this[_0x143a('0xd')]=_0x129a88[_0x143a('0xd')];this[_0x143a('0xe')]=_0x129a88[_0x143a('0xe')];this[_0x143a('0xf')]=_0x129a88[_0x143a('0xc')]+_0x129a88[_0x143a('0xd')]+_0x129a88[_0x143a('0xe')]+_0x129a88['countnosuchnumberretry']+_0x129a88[_0x143a('0x10')]+_0x129a88[_0x143a('0x11')]+_0x129a88[_0x143a('0x12')]+_0x129a88[_0x143a('0x13')];this[_0x143a('0x14')]=_0x129a88[_0x143a('0x14')];this[_0x143a('0x10')]=_0x129a88[_0x143a('0x10')];this[_0x143a('0x11')]=_0x129a88[_0x143a('0x11')];this[_0x143a('0x12')]=_0x129a88['countmachineretry'];this[_0x143a('0x13')]=_0x129a88[_0x143a('0x13')];this['uniqueid']=_0x33c563[_0x143a('0x15')];this['calleridname']=_0x129a88['name'];this['calleridnum']=_0x129a88['number'];this['starttime']=_0x129a88['starttime'];this['responsetime']=_0x129a88[_0x143a('0x16')];this[_0x143a('0x17')]=_0x129a88[_0x143a('0x17')];this[_0x143a('0x18')]=moment()[_0x143a('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x143a('0x1a')]=getSeconds(_0x129a88['responsetime'],_0x129a88['starttime']);this[_0x143a('0x1b')]=getSeconds(_0x129a88[_0x143a('0x17')],_0x129a88['responsetime']);this[_0x143a('0x1c')]=getSeconds(this[_0x143a('0x18')],_0x129a88[_0x143a('0x17')]);this['queue']=_0x33c563[_0x143a('0x1d')];this['membername']=_0x33c563[_0x143a('0x1e')];this[_0x143a('0x1f')]=_0x33c563['reason'];this['callback']=_0x129a88[_0x143a('0x20')];this[_0x143a('0x21')]=_0x129a88['callbackuniqueid'];this[_0x143a('0x22')]=_0x129a88['callbackat'];this[_0x143a('0x23')]=_0x129a88[_0x143a('0x23')];this['ContactId']=_0x129a88['ContactId'];this[_0x143a('0x24')]=_0x129a88['ListId'];this[_0x143a('0x25')]=_0x129a88[_0x143a('0x25')];this[_0x143a('0x26')]=_0x129a88[_0x143a('0x26')];this[_0x143a('0x27')]=_0x129a88[_0x143a('0x27')];this[_0x143a('0x28')]=_0x129a88[_0x143a('0x28')]||'';this[_0x143a('0x29')]=_0x129a88['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x5eca=['milliseconds','seconds','state','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','endtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','exports','util','lodash','moment'];(function(_0x5b1c50,_0x56e694){var _0x2d379b=function(_0x981b9c){while(--_0x981b9c){_0x5b1c50['push'](_0x5b1c50['shift']());}};_0x2d379b(++_0x56e694);}(_0x5eca,0x138));var _0xa5ec=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5eca[_0x19950b];return _0x3c6b41;};'use strict';var util=require(_0xa5ec('0x0'));var _=require(_0xa5ec('0x1'));var moment=require(_0xa5ec('0x2'));function getSeconds(_0x1c52df,_0x52c6c4){var _0x1d8f44=moment(_0x1c52df)[_0xa5ec('0x3')](0x0);var _0x21fb78=moment(_0x52c6c4)['milliseconds'](0x0);return _0x1d8f44['diff'](_0x21fb78,_0xa5ec('0x4'));}function AgentComplete(_0x697ec0,_0x120bac){this[_0xa5ec('0x5')]=0x4;this['statedesc']=_0xa5ec('0x6');this[_0xa5ec('0x7')]=_0x697ec0[_0xa5ec('0x7')];this[_0xa5ec('0x8')]=_0x697ec0[_0xa5ec('0x8')];this[_0xa5ec('0x9')]=_0x697ec0[_0xa5ec('0x8')]==='outbound'?_0xa5ec('0xa'):_0x697ec0[_0xa5ec('0x8')];this[_0xa5ec('0xb')]=_0x697ec0[_0xa5ec('0xb')];this[_0xa5ec('0xc')]=_0x697ec0['countcongestionretry'];this[_0xa5ec('0xd')]=_0x697ec0[_0xa5ec('0xd')];this[_0xa5ec('0xe')]=_0x697ec0[_0xa5ec('0xb')]+_0x697ec0[_0xa5ec('0xc')]+_0x697ec0['countnoanswerretry']+_0x697ec0[_0xa5ec('0xf')]+_0x697ec0['countdropretry']+_0x697ec0['countabandonedretry']+_0x697ec0[_0xa5ec('0x10')]+_0x697ec0[_0xa5ec('0x11')];this[_0xa5ec('0xf')]=_0x697ec0[_0xa5ec('0xf')];this[_0xa5ec('0x12')]=_0x697ec0[_0xa5ec('0x12')];this['countabandonedretry']=_0x697ec0[_0xa5ec('0x13')];this[_0xa5ec('0x10')]=_0x697ec0['countmachineretry'];this[_0xa5ec('0x11')]=_0x697ec0[_0xa5ec('0x11')];this[_0xa5ec('0x14')]=_0x120bac['uniqueid'];this[_0xa5ec('0x15')]=_0x697ec0[_0xa5ec('0x16')];this[_0xa5ec('0x17')]=_0x697ec0['number'];this[_0xa5ec('0x18')]=_0x697ec0[_0xa5ec('0x18')];this['responsetime']=_0x697ec0[_0xa5ec('0x19')];this['answertime']=_0x697ec0[_0xa5ec('0x1a')];this['endtime']=moment()[_0xa5ec('0x1b')](_0xa5ec('0x1c'));this['ringtime']=getSeconds(_0x697ec0[_0xa5ec('0x19')],_0x697ec0[_0xa5ec('0x18')]);this[_0xa5ec('0x1d')]=getSeconds(_0x697ec0[_0xa5ec('0x1a')],_0x697ec0[_0xa5ec('0x19')]);this[_0xa5ec('0x1e')]=getSeconds(this[_0xa5ec('0x1f')],_0x697ec0['answertime']);this['queue']=_0x120bac[_0xa5ec('0xa')];this[_0xa5ec('0x20')]=_0x120bac['membername'];this[_0xa5ec('0x21')]=_0x120bac['reason'];this[_0xa5ec('0x22')]=_0x697ec0[_0xa5ec('0x22')];this[_0xa5ec('0x23')]=_0x697ec0[_0xa5ec('0x23')];this['callbackat']=_0x697ec0[_0xa5ec('0x24')];this[_0xa5ec('0x25')]=_0x697ec0[_0xa5ec('0x25')];this[_0xa5ec('0x26')]=_0x697ec0[_0xa5ec('0x26')];this[_0xa5ec('0x27')]=_0x697ec0[_0xa5ec('0x27')];this[_0xa5ec('0x28')]=_0x697ec0['UserId'];this[_0xa5ec('0x29')]=_0x697ec0[_0xa5ec('0x29')];this[_0xa5ec('0x2a')]=_0x697ec0[_0xa5ec('0x2a')];this[_0xa5ec('0x2b')]=_0x697ec0['originatecalleridnum']||'';this['originatecalleridname']=_0x697ec0['originatecalleridname']||'';}module[_0xa5ec('0x2c')]=AgentComplete;
\ No newline at end of file
index ad377ae..7062276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4944=['CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','ListId','UserId','VoiceQueueId'];(function(_0x23179d,_0xbcae35){var _0x31ae33=function(_0x2e6b58){while(--_0x2e6b58){_0x23179d['push'](_0x23179d['shift']());}};_0x31ae33(++_0xbcae35);}(_0x4944,0x6d));var _0x4494=function(_0x3960b5,_0x46a76a){_0x3960b5=_0x3960b5-0x0;var _0x5067fb=_0x4944[_0x3960b5];return _0x5067fb;};'use strict';var util=require(_0x4494('0x0'));var _=require('lodash');var moment=require(_0x4494('0x1'));function getSeconds(_0x39932f,_0x2578d3){var _0x138f00=moment(_0x39932f)[_0x4494('0x2')](0x0);var _0x5074d9=moment(_0x2578d3)[_0x4494('0x2')](0x0);return _0x138f00['diff'](_0x5074d9,_0x4494('0x3'));}function Final(_0x1c2a03){this[_0x4494('0x4')]=_0x1c2a03[_0x4494('0x4')];this[_0x4494('0x5')]=_0x1c2a03[_0x4494('0x5')];this[_0x4494('0x6')]=_0x1c2a03[_0x4494('0x6')];this[_0x4494('0x7')]=_0x1c2a03['type']===_0x4494('0x8')?_0x4494('0x9'):_0x1c2a03[_0x4494('0x6')];this[_0x4494('0xa')]=_0x1c2a03['countbusyretry'];this['countcongestionretry']=_0x1c2a03[_0x4494('0xb')];this[_0x4494('0xc')]=_0x1c2a03[_0x4494('0xc')];this['countglobal']=_0x1c2a03['countbusyretry']+_0x1c2a03[_0x4494('0xb')]+_0x1c2a03[_0x4494('0xc')]+_0x1c2a03[_0x4494('0xd')]+_0x1c2a03[_0x4494('0xe')]+_0x1c2a03[_0x4494('0xf')]+_0x1c2a03[_0x4494('0x10')]+_0x1c2a03['countagentrejectretry'];this[_0x4494('0xd')]=_0x1c2a03[_0x4494('0xd')];this[_0x4494('0xe')]=_0x1c2a03[_0x4494('0xe')];this[_0x4494('0xf')]=_0x1c2a03[_0x4494('0xf')];this[_0x4494('0x10')]=_0x1c2a03['countmachineretry'];this[_0x4494('0x11')]=_0x1c2a03['countagentrejectretry'];this['queue']=_0x1c2a03[_0x4494('0x9')];this[_0x4494('0x12')]=_0x1c2a03['calleridname'];this['calleridnum']=_0x1c2a03[_0x4494('0x13')];this['starttime']=_0x1c2a03[_0x4494('0x14')];this[_0x4494('0x15')]=_0x1c2a03['responsetime'];this[_0x4494('0x16')]=_0x1c2a03['responsetime'];this[_0x4494('0x17')]=_0x1c2a03[_0x4494('0x17')]||0x0;this['holdtime']=_0x1c2a03['holdtime']||0x0;this[_0x4494('0x18')]=_0x1c2a03[_0x4494('0x18')]||0x0;this[_0x4494('0x19')]=_0x1c2a03[_0x4494('0x19')];this[_0x4494('0x1a')]=_0x1c2a03[_0x4494('0x1a')];this[_0x4494('0x1b')]=_0x1c2a03[_0x4494('0x1b')];this['recallme']=_0x1c2a03['recallme'];this['ContactId']=_0x1c2a03['ContactId'];this[_0x4494('0x1c')]=_0x1c2a03[_0x4494('0x1c')];this[_0x4494('0x1d')]=_0x1c2a03[_0x4494('0x1d')];this['VoiceQueueId']=_0x1c2a03[_0x4494('0x1e')];this[_0x4494('0x1f')]=_0x1c2a03['CampaignId'];this[_0x4494('0x20')]=_0x1c2a03[_0x4494('0x20')]||'';this[_0x4494('0x21')]=_0x1c2a03['originatecalleridname']||'';}module[_0x4494('0x22')]=Final;
\ No newline at end of file
+var _0xac9d=['outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype'];(function(_0x1a3eb1,_0x5188d5){var _0x29efec=function(_0x34f0da){while(--_0x34f0da){_0x1a3eb1['push'](_0x1a3eb1['shift']());}};_0x29efec(++_0x5188d5);}(_0xac9d,0x14d));var _0xdac9=function(_0x4cd9c6,_0x766862){_0x4cd9c6=_0x4cd9c6-0x0;var _0x53a566=_0xac9d[_0x4cd9c6];return _0x53a566;};'use strict';var util=require(_0xdac9('0x0'));var _=require(_0xdac9('0x1'));var moment=require(_0xdac9('0x2'));function getSeconds(_0x1e6d33,_0x12390c){var _0x27eb7c=moment(_0x1e6d33)[_0xdac9('0x3')](0x0);var _0x1b967e=moment(_0x12390c)['milliseconds'](0x0);return _0x27eb7c[_0xdac9('0x4')](_0x1b967e,'seconds');}function Final(_0x3d56ae){this[_0xdac9('0x5')]=_0x3d56ae[_0xdac9('0x5')];this[_0xdac9('0x6')]=_0x3d56ae[_0xdac9('0x6')];this[_0xdac9('0x7')]=_0x3d56ae['type'];this[_0xdac9('0x8')]=_0x3d56ae['type']===_0xdac9('0x9')?_0xdac9('0xa'):_0x3d56ae[_0xdac9('0x7')];this[_0xdac9('0xb')]=_0x3d56ae[_0xdac9('0xb')];this[_0xdac9('0xc')]=_0x3d56ae[_0xdac9('0xc')];this[_0xdac9('0xd')]=_0x3d56ae[_0xdac9('0xd')];this['countglobal']=_0x3d56ae[_0xdac9('0xb')]+_0x3d56ae[_0xdac9('0xc')]+_0x3d56ae['countnoanswerretry']+_0x3d56ae[_0xdac9('0xe')]+_0x3d56ae[_0xdac9('0xf')]+_0x3d56ae[_0xdac9('0x10')]+_0x3d56ae['countmachineretry']+_0x3d56ae[_0xdac9('0x11')];this[_0xdac9('0xe')]=_0x3d56ae[_0xdac9('0xe')];this['countdropretry']=_0x3d56ae['countdropretry'];this[_0xdac9('0x10')]=_0x3d56ae[_0xdac9('0x10')];this['countmachineretry']=_0x3d56ae[_0xdac9('0x12')];this[_0xdac9('0x11')]=_0x3d56ae[_0xdac9('0x11')];this[_0xdac9('0xa')]=_0x3d56ae[_0xdac9('0xa')];this[_0xdac9('0x13')]=_0x3d56ae[_0xdac9('0x13')];this[_0xdac9('0x14')]=_0x3d56ae['calleridnum'];this[_0xdac9('0x15')]=_0x3d56ae[_0xdac9('0x15')];this['responsetime']=_0x3d56ae[_0xdac9('0x16')];this[_0xdac9('0x17')]=_0x3d56ae[_0xdac9('0x16')];this[_0xdac9('0x18')]=_0x3d56ae['ringtime']||0x0;this['holdtime']=_0x3d56ae[_0xdac9('0x19')]||0x0;this[_0xdac9('0x1a')]=_0x3d56ae[_0xdac9('0x1a')]||0x0;this[_0xdac9('0x1b')]=_0x3d56ae['callback'];this[_0xdac9('0x1c')]=_0x3d56ae[_0xdac9('0x1c')];this[_0xdac9('0x1d')]=_0x3d56ae[_0xdac9('0x1d')];this[_0xdac9('0x1e')]=_0x3d56ae[_0xdac9('0x1e')];this[_0xdac9('0x1f')]=_0x3d56ae[_0xdac9('0x1f')];this[_0xdac9('0x20')]=_0x3d56ae[_0xdac9('0x20')];this['UserId']=_0x3d56ae[_0xdac9('0x21')];this[_0xdac9('0x22')]=_0x3d56ae[_0xdac9('0x22')];this[_0xdac9('0x23')]=_0x3d56ae['CampaignId'];this[_0xdac9('0x24')]=_0x3d56ae['originatecalleridnum']||'';this[_0xdac9('0x25')]=_0x3d56ae[_0xdac9('0x25')]||'';}module['exports']=Final;
\ No newline at end of file
index c384b64..1ca5ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1079=['Answer','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','number','starttime','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','IVR','reason','callback','callbackuniqueid','recallme','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','seconds','state','statedesc'];(function(_0x27ffd5,_0x35b5d4){var _0x4b5810=function(_0x4ddf07){while(--_0x4ddf07){_0x27ffd5['push'](_0x27ffd5['shift']());}};_0x4b5810(++_0x35b5d4);}(_0x1079,0xef));var _0x9107=function(_0x46c318,_0x3a5b3f){_0x46c318=_0x46c318-0x0;var _0x143050=_0x1079[_0x46c318];return _0x143050;};'use strict';var util=require(_0x9107('0x0'));var _=require(_0x9107('0x1'));var moment=require(_0x9107('0x2'));function getSeconds(_0x441fe1,_0x2e28bf){var _0x6bb2f8=moment(_0x441fe1)[_0x9107('0x3')](0x0);var _0x806acf=moment(_0x2e28bf)[_0x9107('0x3')](0x0);return _0x6bb2f8['diff'](_0x806acf,_0x9107('0x4'));}function Hangup(_0x5c1095,_0x6686f1){this[_0x9107('0x5')]=0x4;this[_0x9107('0x6')]=_0x9107('0x7');this[_0x9107('0x8')]=_0x5c1095[_0x9107('0x8')];this[_0x9107('0x9')]=_0x5c1095[_0x9107('0x9')];this['campaigntype']=_0x5c1095['type']===_0x9107('0xa')?_0x9107('0xb'):_0x5c1095[_0x9107('0x9')];this[_0x9107('0xc')]=_0x5c1095['countbusyretry'];this[_0x9107('0xd')]=_0x5c1095['countcongestionretry'];this['countnoanswerretry']=_0x5c1095['countnoanswerretry'];this[_0x9107('0xe')]=_0x5c1095['countbusyretry']+_0x5c1095[_0x9107('0xd')]+_0x5c1095['countnoanswerretry']+_0x5c1095[_0x9107('0xf')]+_0x5c1095[_0x9107('0x10')]+_0x5c1095[_0x9107('0x11')]+_0x5c1095[_0x9107('0x12')]+_0x5c1095[_0x9107('0x13')];this[_0x9107('0xf')]=_0x5c1095[_0x9107('0xf')];this[_0x9107('0x10')]=_0x5c1095[_0x9107('0x10')];this[_0x9107('0x11')]=_0x5c1095[_0x9107('0x11')];this[_0x9107('0x12')]=_0x5c1095[_0x9107('0x12')];this[_0x9107('0x13')]=_0x5c1095[_0x9107('0x13')];this[_0x9107('0x14')]=_0x6686f1[_0x9107('0x14')];this[_0x9107('0x15')]=_0x5c1095['name'];this['calleridnum']=_0x5c1095[_0x9107('0x16')];this[_0x9107('0x17')]=_0x5c1095[_0x9107('0x17')];this[_0x9107('0x18')]=_0x5c1095['responsetime'];this['endtime']=moment()[_0x9107('0x19')](_0x9107('0x1a'));this[_0x9107('0x1b')]=getSeconds(_0x5c1095[_0x9107('0x18')],_0x5c1095[_0x9107('0x17')]);this[_0x9107('0x1c')]=0x0;this[_0x9107('0x1d')]=getSeconds(this['endtime'],_0x5c1095[_0x9107('0x18')]);this[_0x9107('0xb')]=_0x5c1095[_0x9107('0xb')];this[_0x9107('0x1e')]=_0x9107('0x1f');this[_0x9107('0x20')]=_0x6686f1['cause-txt'];this['callback']=_0x5c1095[_0x9107('0x21')];this[_0x9107('0x22')]=_0x5c1095[_0x9107('0x22')];this['callbackat']=_0x5c1095['callbackat'];this[_0x9107('0x23')]=_0x5c1095['recallme'];this['ContactId']=_0x5c1095['ContactId'];this[_0x9107('0x24')]=_0x5c1095[_0x9107('0x24')];this[_0x9107('0x25')]=_0x5c1095[_0x9107('0x25')];this[_0x9107('0x26')]=_0x5c1095[_0x9107('0x26')];this[_0x9107('0x27')]=_0x5c1095[_0x9107('0x27')];}module[_0x9107('0x28')]=Hangup;
\ No newline at end of file
+var _0x83f9=['countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0x33c723,_0xdf10ae){var _0x24c89e=function(_0x188a9e){while(--_0x188a9e){_0x33c723['push'](_0x33c723['shift']());}};_0x24c89e(++_0xdf10ae);}(_0x83f9,0x18b));var _0x983f=function(_0x436b3d,_0x1ecf78){_0x436b3d=_0x436b3d-0x0;var _0x1cbc9c=_0x83f9[_0x436b3d];return _0x1cbc9c;};'use strict';var util=require(_0x983f('0x0'));var _=require(_0x983f('0x1'));var moment=require(_0x983f('0x2'));function getSeconds(_0xe37607,_0x4be0da){var _0x58cca4=moment(_0xe37607)[_0x983f('0x3')](0x0);var _0x29930f=moment(_0x4be0da)['milliseconds'](0x0);return _0x58cca4[_0x983f('0x4')](_0x29930f,_0x983f('0x5'));}function Hangup(_0x181061,_0x18d200){this['state']=0x4;this[_0x983f('0x6')]=_0x983f('0x7');this[_0x983f('0x8')]=_0x181061[_0x983f('0x8')];this[_0x983f('0x9')]=_0x181061[_0x983f('0x9')];this[_0x983f('0xa')]=_0x181061['type']==='outbound'?_0x983f('0xb'):_0x181061['type'];this[_0x983f('0xc')]=_0x181061[_0x983f('0xc')];this[_0x983f('0xd')]=_0x181061[_0x983f('0xd')];this[_0x983f('0xe')]=_0x181061[_0x983f('0xe')];this[_0x983f('0xf')]=_0x181061['countbusyretry']+_0x181061['countcongestionretry']+_0x181061[_0x983f('0xe')]+_0x181061[_0x983f('0x10')]+_0x181061[_0x983f('0x11')]+_0x181061[_0x983f('0x12')]+_0x181061[_0x983f('0x13')]+_0x181061[_0x983f('0x14')];this[_0x983f('0x10')]=_0x181061['countnosuchnumberretry'];this['countdropretry']=_0x181061[_0x983f('0x11')];this[_0x983f('0x12')]=_0x181061['countabandonedretry'];this[_0x983f('0x13')]=_0x181061[_0x983f('0x13')];this[_0x983f('0x14')]=_0x181061[_0x983f('0x14')];this[_0x983f('0x15')]=_0x18d200[_0x983f('0x15')];this[_0x983f('0x16')]=_0x181061[_0x983f('0x17')];this[_0x983f('0x18')]=_0x181061[_0x983f('0x19')];this[_0x983f('0x1a')]=_0x181061[_0x983f('0x1a')];this['responsetime']=_0x181061[_0x983f('0x1b')];this[_0x983f('0x1c')]=moment()[_0x983f('0x1d')](_0x983f('0x1e'));this['ringtime']=getSeconds(_0x181061[_0x983f('0x1b')],_0x181061['starttime']);this['holdtime']=0x0;this[_0x983f('0x1f')]=getSeconds(this[_0x983f('0x1c')],_0x181061[_0x983f('0x1b')]);this[_0x983f('0xb')]=_0x181061[_0x983f('0xb')];this[_0x983f('0x20')]=_0x983f('0x21');this[_0x983f('0x22')]=_0x18d200[_0x983f('0x23')];this[_0x983f('0x24')]=_0x181061[_0x983f('0x24')];this['callbackuniqueid']=_0x181061[_0x983f('0x25')];this['callbackat']=_0x181061[_0x983f('0x26')];this[_0x983f('0x27')]=_0x181061[_0x983f('0x27')];this[_0x983f('0x28')]=_0x181061[_0x983f('0x28')];this['ListId']=_0x181061[_0x983f('0x29')];this[_0x983f('0x2a')]=_0x181061[_0x983f('0x2a')];this[_0x983f('0x2b')]=_0x181061['VoiceQueueId'];this[_0x983f('0x2c')]=_0x181061[_0x983f('0x2c')];}module[_0x983f('0x2d')]=Hangup;
\ No newline at end of file
index 725f485..01aba16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe4d=['callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','countdropretry','countabandonedretry','countmachineretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime'];(function(_0x6a3ba4,_0x17531e){var _0x3e7272=function(_0x61cd3e){while(--_0x61cd3e){_0x6a3ba4['push'](_0x6a3ba4['shift']());}};_0x3e7272(++_0x17531e);}(_0xbe4d,0x1bb));var _0xdbe4=function(_0x553577,_0x11d0b2){_0x553577=_0x553577-0x0;var _0x44e2f5=_0xbe4d[_0x553577];return _0x44e2f5;};'use strict';var util=require(_0xdbe4('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x259a59,_0x4fc91c){var _0x153958=moment(_0x259a59)['milliseconds'](0x0);var _0x33cc6f=moment(_0x4fc91c)['milliseconds'](0x0);return _0x153958[_0xdbe4('0x1')](_0x33cc6f,_0xdbe4('0x2'));}function History(_0x34763f){this[_0xdbe4('0x3')]=_0x34763f[_0xdbe4('0x3')];this[_0xdbe4('0x4')]=_0x34763f[_0xdbe4('0x4')]||undefined;this[_0xdbe4('0x5')]=_0x34763f[_0xdbe4('0x5')];this[_0xdbe4('0x6')]=_0x34763f[_0xdbe4('0x5')]===_0xdbe4('0x7')?_0xdbe4('0x8'):_0x34763f[_0xdbe4('0x5')];this[_0xdbe4('0x9')]=_0x34763f['countbusyretry'];this[_0xdbe4('0xa')]=_0x34763f[_0xdbe4('0xa')];this['countnoanswerretry']=_0x34763f[_0xdbe4('0xb')];this['countglobal']=_0x34763f[_0xdbe4('0x9')]+_0x34763f[_0xdbe4('0xa')]+_0x34763f[_0xdbe4('0xb')]+_0x34763f[_0xdbe4('0xc')]+_0x34763f['countdropretry']+_0x34763f['countabandonedretry']+_0x34763f['countmachineretry']+_0x34763f[_0xdbe4('0xd')];this[_0xdbe4('0xc')]=_0x34763f[_0xdbe4('0xc')];this[_0xdbe4('0xe')]=_0x34763f['countdropretry'];this[_0xdbe4('0xf')]=_0x34763f[_0xdbe4('0xf')];this[_0xdbe4('0x10')]=_0x34763f[_0xdbe4('0x10')];this[_0xdbe4('0xd')]=_0x34763f[_0xdbe4('0xd')];this[_0xdbe4('0x8')]=_0x34763f[_0xdbe4('0x8')];this[_0xdbe4('0x11')]=_0x34763f[_0xdbe4('0x12')];this[_0xdbe4('0x13')]=_0x34763f[_0xdbe4('0x14')];this[_0xdbe4('0x15')]=_0x34763f[_0xdbe4('0x15')];this[_0xdbe4('0x16')]=_0x34763f[_0xdbe4('0x16')];this[_0xdbe4('0x17')]=_0x34763f[_0xdbe4('0x16')];this[_0xdbe4('0x18')]=getSeconds(_0x34763f['responsetime'],_0x34763f[_0xdbe4('0x15')]);this['holdtime']=0x0;this['talktime']=0x0;this[_0xdbe4('0x19')]=_0x34763f[_0xdbe4('0x19')];this[_0xdbe4('0x1a')]=_0x34763f['callbackuniqueid'];this[_0xdbe4('0x1b')]=_0x34763f['callbackat'];this['recallme']=_0x34763f[_0xdbe4('0x1c')];this['ContactId']=_0x34763f['ContactId'];this[_0xdbe4('0x1d')]=_0x34763f[_0xdbe4('0x1d')];this[_0xdbe4('0x1e')]=_0x34763f[_0xdbe4('0x1e')];this[_0xdbe4('0x1f')]=_0x34763f[_0xdbe4('0x1f')];this[_0xdbe4('0x20')]=_0x34763f[_0xdbe4('0x20')];this[_0xdbe4('0x21')]=_0x34763f['originatecalleridnum']||'';this[_0xdbe4('0x22')]=_0x34763f[_0xdbe4('0x22')]||'';}module[_0xdbe4('0x23')]=History;
\ No newline at end of file
+var _0x9d8c=['countmachineretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry'];(function(_0x54a5f5,_0x5209ca){var _0x55a25a=function(_0x2a91fc){while(--_0x2a91fc){_0x54a5f5['push'](_0x54a5f5['shift']());}};_0x55a25a(++_0x5209ca);}(_0x9d8c,0x1a6));var _0xc9d8=function(_0x2f2766,_0x22aded){_0x2f2766=_0x2f2766-0x0;var _0x417fe3=_0x9d8c[_0x2f2766];return _0x417fe3;};'use strict';var util=require('util');var _=require(_0xc9d8('0x0'));var moment=require(_0xc9d8('0x1'));function getSeconds(_0x21b6cb,_0x52bfd2){var _0x1269c1=moment(_0x21b6cb)[_0xc9d8('0x2')](0x0);var _0x49ac25=moment(_0x52bfd2)[_0xc9d8('0x2')](0x0);return _0x1269c1[_0xc9d8('0x3')](_0x49ac25,_0xc9d8('0x4'));}function History(_0x40c581){this[_0xc9d8('0x5')]=_0x40c581[_0xc9d8('0x5')];this[_0xc9d8('0x6')]=_0x40c581['scheduledat']||undefined;this[_0xc9d8('0x7')]=_0x40c581['type'];this[_0xc9d8('0x8')]=_0x40c581[_0xc9d8('0x7')]===_0xc9d8('0x9')?_0xc9d8('0xa'):_0x40c581[_0xc9d8('0x7')];this[_0xc9d8('0xb')]=_0x40c581[_0xc9d8('0xb')];this['countcongestionretry']=_0x40c581[_0xc9d8('0xc')];this[_0xc9d8('0xd')]=_0x40c581[_0xc9d8('0xd')];this['countglobal']=_0x40c581['countbusyretry']+_0x40c581[_0xc9d8('0xc')]+_0x40c581[_0xc9d8('0xd')]+_0x40c581[_0xc9d8('0xe')]+_0x40c581[_0xc9d8('0xf')]+_0x40c581[_0xc9d8('0x10')]+_0x40c581['countmachineretry']+_0x40c581[_0xc9d8('0x11')];this[_0xc9d8('0xe')]=_0x40c581[_0xc9d8('0xe')];this[_0xc9d8('0xf')]=_0x40c581[_0xc9d8('0xf')];this[_0xc9d8('0x10')]=_0x40c581[_0xc9d8('0x10')];this['countmachineretry']=_0x40c581[_0xc9d8('0x12')];this[_0xc9d8('0x11')]=_0x40c581[_0xc9d8('0x11')];this[_0xc9d8('0xa')]=_0x40c581[_0xc9d8('0xa')];this[_0xc9d8('0x13')]=_0x40c581[_0xc9d8('0x14')];this[_0xc9d8('0x15')]=_0x40c581[_0xc9d8('0x16')];this['starttime']=_0x40c581[_0xc9d8('0x17')];this[_0xc9d8('0x18')]=_0x40c581[_0xc9d8('0x18')];this[_0xc9d8('0x19')]=_0x40c581[_0xc9d8('0x18')];this[_0xc9d8('0x1a')]=getSeconds(_0x40c581['responsetime'],_0x40c581[_0xc9d8('0x17')]);this[_0xc9d8('0x1b')]=0x0;this[_0xc9d8('0x1c')]=0x0;this[_0xc9d8('0x1d')]=_0x40c581[_0xc9d8('0x1d')];this[_0xc9d8('0x1e')]=_0x40c581[_0xc9d8('0x1e')];this[_0xc9d8('0x1f')]=_0x40c581[_0xc9d8('0x1f')];this[_0xc9d8('0x20')]=_0x40c581['recallme'];this['ContactId']=_0x40c581[_0xc9d8('0x21')];this['ListId']=_0x40c581[_0xc9d8('0x22')];this['UserId']=_0x40c581[_0xc9d8('0x23')];this[_0xc9d8('0x24')]=_0x40c581[_0xc9d8('0x24')];this[_0xc9d8('0x25')]=_0x40c581[_0xc9d8('0x25')];this[_0xc9d8('0x26')]=_0x40c581['originatecalleridnum']||'';this[_0xc9d8('0x27')]=_0x40c581[_0xc9d8('0x27')]||'';}module['exports']=History;
\ No newline at end of file
index 1b22ceb..67c17b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2da=['outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','ivr','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20predictive','handlePredictive','outbound','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','stack','length','undefined','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','talking','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','starttime','clearZombieChannels','[uniqueid]','[actions]','prototype','isNil','Action','status','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','catch','checkIsBlackList','then','[checkIsBlackList]\x20','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','saveInDb','ContactId','UserId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','reachable','variable','amdstatus','exten','xcally-motion-dialer','value','outboundAnswerCallsDay','state','statedesc','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','dialAMDActive','uniqueid','Machine','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','CampaignId','[rescheduleContact][Machine]','HANGUP','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countnoanswerretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','dialMachineRetryFrequency','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','AnswerAGI','dialQueueProject','cause-txt','Unknow','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','TIMEOUT','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','endtime','syncNewExten','channel','actionid','strategy','paused','stateinterface','locked','push','pick','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[booked][unlock3]','syncCampaigns','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','Failure','INTERVAL_IS_EMPTY','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','handleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','[syncCampaigns]','\x5cw{0,','replace','random','match','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-VOICEQUEUEID','tags','createdAt','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialPrefix','trim','substring','dialCutDigit','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','syncOriginateResponse','response','callProgressDetecting','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','getDataPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','queueStatusComplete:\x20','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','Agent','voicePause','run','unlockContact','[rescheduleContact][dialRecallInQueue]','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','Contact.phone','[actionOriginateIvr]\x20','dialLimitQueue','not_inuse','dialOrderByScheduledAt','[countReScheduled]\x20','tryOriginatePredictive','[handlePredictive][limitChannel]','RUNNING','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','interval\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperBlack','./history','./agentComplete','./queueCallerAbandon','./hangup','XCALLY_IP_AGI','rrmemory','roundrobin','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncAgentComplete','custom:queuesummary','syncQueueSummary','hangup','syncHangup','newexten','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','available','loggedIn','pTalking','sumBillable','sumHoldTime','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','outboundAnswerAgiCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay'];(function(_0x5b39ad,_0xdab682){var _0x1d4c17=function(_0x466cb0){while(--_0x466cb0){_0x5b39ad['push'](_0x5b39ad['shift']());}};_0x1d4c17(++_0xdab682);}(_0xf2da,0x1ac));var _0xaf2d=function(_0x4001ad,_0x1e22dd){_0x4001ad=_0x4001ad-0x0;var _0x4c7ec2=_0xf2da[_0x4001ad];return _0x4c7ec2;};'use strict';var util=require(_0xaf2d('0x0'));var _=require(_0xaf2d('0x1'));var BPromise=require(_0xaf2d('0x2'));var uuid=require(_0xaf2d('0x3'));var moment=require(_0xaf2d('0x4'));var rr=require('rr');var md5=require(_0xaf2d('0x5'));var Redis=require(_0xaf2d('0x6'));var ut=require(_0xaf2d('0x7'));var config=require(_0xaf2d('0x8'));var logger=require(_0xaf2d('0x9'))(_0xaf2d('0xa'));var loggerBooked=require(_0xaf2d('0x9'))(_0xaf2d('0xb'));var loggerPredictive=require(_0xaf2d('0x9'))(_0xaf2d('0xc'));var loggerPredictiveCalls=require(_0xaf2d('0x9'))(_0xaf2d('0xd'));var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require(_0xaf2d('0xe'));config[_0xaf2d('0xf')]=_[_0xaf2d('0x10')](config[_0xaf2d('0xf')],{'host':_0xaf2d('0x11'),'port':0x18eb});var io=require(_0xaf2d('0x12'))(new Redis(config[_0xaf2d('0xf')]));var cmHopper=require(_0xaf2d('0x13'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0xaf2d('0x14'));var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require('./action');var History=require(_0xaf2d('0x15'));var Final=require('./final');var AgentComplete=require(_0xaf2d('0x16'));var QueueCallerAbandon=require(_0xaf2d('0x17'));var Hangup=require(_0xaf2d('0x18'));var ipAgi=process['env'][_0xaf2d('0x19')]||'127.0.0.1';var strategy={'rrmemory':_0xaf2d('0x1a'),'roundrobin':_0xaf2d('0x1b')};var Sequence=function(){};Sequence['prototype'][_0xaf2d('0x1c')]=function(_0x10f020){this[_0xaf2d('0x1d')]=this[_0xaf2d('0x1d')]?this[_0xaf2d('0x1d')][_0xaf2d('0x1e')](_0x10f020):_0x10f020();};function Dialer(_0x3fd7a,_0x147eff){this[_0xaf2d('0x1f')]=new Sequence();this[_0xaf2d('0x20')]=_0x147eff;this[_0xaf2d('0x21')]=_0x3fd7a[_0xaf2d('0x21')];this[_0xaf2d('0x22')]=_0x3fd7a[_0xaf2d('0x22')];this[_0xaf2d('0x23')]=_0x3fd7a[_0xaf2d('0x23')];this[_0xaf2d('0x24')]=_0x3fd7a[_0xaf2d('0x24')];this[_0xaf2d('0x25')]=config[_0xaf2d('0x25')]||0x2;this[_0xaf2d('0x26')]={};this[_0xaf2d('0x27')]={};this[_0xaf2d('0x28')]={};this[_0xaf2d('0x29')]={};this[_0xaf2d('0x2a')]={};this[_0xaf2d('0x2b')]={};this[_0xaf2d('0x2c')]={};this[_0xaf2d('0x2d')]={};this[_0xaf2d('0x2e')]={};this[_0xaf2d('0x2f')]={};ami['on'](_0xaf2d('0x30'),this[_0xaf2d('0x31')][_0xaf2d('0x32')](this));ami['on'](_0xaf2d('0x33'),this[_0xaf2d('0x34')][_0xaf2d('0x32')](this));ami['on'](_0xaf2d('0x35'),this['syncOriginateResponse'][_0xaf2d('0x32')](this));ami['on']('agentcomplete',this[_0xaf2d('0x36')][_0xaf2d('0x32')](this));ami['on'](_0xaf2d('0x37'),this[_0xaf2d('0x38')][_0xaf2d('0x32')](this));ami['on'](_0xaf2d('0x39'),this[_0xaf2d('0x3a')][_0xaf2d('0x32')](this));ami['on'](_0xaf2d('0x3b'),this['syncNewExten'][_0xaf2d('0x32')](this));ami['on']('varset',this[_0xaf2d('0x3c')]['bind'](this));ami['on'](_0xaf2d('0x3d'),this[_0xaf2d('0x3e')][_0xaf2d('0x32')](this));ami['on'](_0xaf2d('0x3f'),this[_0xaf2d('0x40')][_0xaf2d('0x32')](this));this[_0xaf2d('0x41')]();this[_0xaf2d('0x42')]();}function isNotNull(_0x225bea){return _0x225bea!==null&&!_[_0xaf2d('0x43')](_0x225bea);}function checkIsLoggedIn(_0xb1408a,_0xb368cd){return function(){if(_0xb368cd<=0x0){_0xb1408a[_0xaf2d('0x44')]=_0xaf2d('0x45');throw _0xb1408a[_0xaf2d('0x46')]+_0xaf2d('0x47');}};}function isActive(_0x3330aa){return _0x3330aa;}function checkIsActive(_0x1ed993,_0x1b1815){return function(){if(!isActive(_0x1b1815)){_0x1ed993[_0xaf2d('0x44')]=_0xaf2d('0x48');throw _0x1ed993['name']+_0xaf2d('0x49');}};}function checkInterval(_0x51442c){return function(){if(!isNotNull(_0x51442c[_0xaf2d('0x4a')])){_0x51442c[_0xaf2d('0x44')]=_0xaf2d('0x4b');throw _0x51442c[_0xaf2d('0x46')]+_0xaf2d('0x4c');}if(!isNotNull(_0x51442c[_0xaf2d('0x4a')][_0xaf2d('0x4d')])){_0x51442c['message']=_0xaf2d('0x4b');throw _0x51442c[_0xaf2d('0x46')]+_0xaf2d('0x4c');}if(!isNotNull(_[_0xaf2d('0x4e')](_0x51442c[_0xaf2d('0x4a')]['Intervals']))){_0x51442c[_0xaf2d('0x44')]=_0xaf2d('0x4b');throw _0x51442c[_0xaf2d('0x46')]+_0xaf2d('0x4c');}};}function msgResponse(_0x313b56,_0x1719aa,_0x1fdf53){return{'action':_0x313b56,'response':_0x1719aa,'message':_0x1fdf53,'stack':_0x1fdf53};}function myreject(_0x3d806a){return function(_0x218fa3){return _0x3d806a(msgResponse(_0xaf2d('0x4f'),_0xaf2d('0x50'),JSON[_0xaf2d('0x51')](_0x218fa3)));};}function getSeconds(_0x418137,_0x4bb6cb){var _0x54a3b4=moment(_0x418137)[_0xaf2d('0x52')](0x0);var _0x3f144d=moment(_0x4bb6cb)[_0xaf2d('0x52')](0x0);return _0x54a3b4[_0xaf2d('0x53')](_0x3f144d,_0xaf2d('0x54'));}function emit(_0x1584bc,_0x212e99,_0xf12364){io['to'](_0x1584bc)[_0xaf2d('0x55')](_0x212e99,_0xf12364);}function emitVoiceQueueSummary(_0x36dbfa){if(_0x36dbfa[_0xaf2d('0x56')]==='outbound'){var _0x3125b6={'id':_0x36dbfa['id'],'name':_0x36dbfa['name'],'strategy':_0x36dbfa['strategy'],'answered':_0x36dbfa['answered'],'available':_0x36dbfa[_0xaf2d('0x57')],'loggedIn':_0x36dbfa[_0xaf2d('0x58')],'pTalking':_0x36dbfa[_0xaf2d('0x59')],'sumBillable':_0x36dbfa[_0xaf2d('0x5a')],'sumDuration':_0x36dbfa['sumDuration'],'sumHoldTime':_0x36dbfa[_0xaf2d('0x5b')]||0x0,'talking':_0x36dbfa['talking'],'total':_0x36dbfa['total'],'type':_0x36dbfa[_0xaf2d('0x56')],'unmanaged':_0x36dbfa[_0xaf2d('0x5c')],'abandoned':_0x36dbfa[_0xaf2d('0x5d')],'waiting':_0x36dbfa[_0xaf2d('0x5e')],'loggedInDb':_0x36dbfa[_0xaf2d('0x5f')],'dialActive':_0x36dbfa[_0xaf2d('0x60')],'dialMethod':_0x36dbfa[_0xaf2d('0x61')],'dialOriginateCallerIdName':_0x36dbfa[_0xaf2d('0x62')],'dialOriginateCallerIdNumber':_0x36dbfa[_0xaf2d('0x63')],'dialOriginateTimeout':_0x36dbfa['dialOriginateTimeout'],'dialPrefix':_0x36dbfa['dialPrefix'],'outboundAnswerAgiCallsDay':_0x36dbfa[_0xaf2d('0x64')],'outboundAnswerCallsDay':_0x36dbfa['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x36dbfa['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x36dbfa['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x36dbfa['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x36dbfa['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x36dbfa[_0xaf2d('0x65')],'outboundDropCallsDayTimeout':_0x36dbfa[_0xaf2d('0x66')],'outboundNoAnswerCallsDay':_0x36dbfa[_0xaf2d('0x67')],'outboundNoSuchCallsDay':_0x36dbfa[_0xaf2d('0x68')],'outboundOriginateFailureCallsDay':_0x36dbfa[_0xaf2d('0x69')],'outboundReCallsDay':_0x36dbfa[_0xaf2d('0x6a')],'outboundRejectCallsDay':_0x36dbfa[_0xaf2d('0x6b')],'outboundUnknownCallsDay':_0x36dbfa[_0xaf2d('0x6c')],'predictiveIntervalAnsweredCalls':_0x36dbfa[_0xaf2d('0x6d')],'predictiveIntervalAvgHoldtime':_0x36dbfa[_0xaf2d('0x6e')],'predictiveIntervalAvgTalktime':_0x36dbfa[_0xaf2d('0x6f')],'predictiveIntervalDroppedCallsCallersExit':_0x36dbfa[_0xaf2d('0x70')],'predictiveIntervalDroppedCallsTimeout':_0x36dbfa[_0xaf2d('0x71')],'predictiveIntervalErlangCalls':_0x36dbfa[_0xaf2d('0x72')],'predictiveIntervalErlangCallsDroppedCalls':_0x36dbfa[_0xaf2d('0x73')],'predictiveIntervalHitRate':_0x36dbfa[_0xaf2d('0x74')],'predictiveIntervalMultiplicativeFactor':_0x36dbfa[_0xaf2d('0x75')],'predictiveIntervalPauses':_0x36dbfa[_0xaf2d('0x76')],'predictiveIntervalAvailable':_0x36dbfa[_0xaf2d('0x77')],'predictiveIntervalTotalCalls':_0x36dbfa[_0xaf2d('0x78')],'message':_0x36dbfa['message'],'originated':_0x36dbfa[_0xaf2d('0x79')],'erlangCalls':_0x36dbfa['erlangCalls'],'erlangCallToSecond':_0x36dbfa[_0xaf2d('0x7a')],'erlangAbandonmentRate':_0x36dbfa[_0xaf2d('0x7b')],'erlangBusyFactor':_0x36dbfa[_0xaf2d('0x7c')],'startPredictive':_0x36dbfa[_0xaf2d('0x2b')],'startProgressive':_0x36dbfa['startProgressive']};if(_0x36dbfa['Trunk']){_0x3125b6['Trunk']={'id':_0x36dbfa[_0xaf2d('0x7d')]['id'],'name':_0x36dbfa[_0xaf2d('0x7d')][_0xaf2d('0x46')],'active':_0x36dbfa[_0xaf2d('0x7d')][_0xaf2d('0x7e')],'callerid':_0x36dbfa[_0xaf2d('0x7d')][_0xaf2d('0x7f')]};}if(_0x36dbfa['Interval']){_0x3125b6[_0xaf2d('0x4a')]={'id':_0x36dbfa['Interval']['id'],'name':_0x36dbfa[_0xaf2d('0x4a')][_0xaf2d('0x46')]};}var _0x1551d1=md5(JSON[_0xaf2d('0x51')](_0x3125b6));if(_0x36dbfa['md5']!==_0x1551d1){_0x36dbfa[_0xaf2d('0x5')]=_0x1551d1;emit(util[_0xaf2d('0x80')](_0xaf2d('0x81'),_0x3125b6[_0xaf2d('0x46')]),'voice_queue:save',_0x3125b6);}}}function emitCampaignSummary(_0x2a6f0a){if(_0x2a6f0a[_0xaf2d('0x56')]===_0xaf2d('0x82')){emit(util[_0xaf2d('0x80')]('campaign:ivr:%s',_0x2a6f0a['name']),'campaign:save',_0x2a6f0a);}}function checkGetDataPredictive(_0x72d148){if(isNotNull(_0x72d148)&&!_[_0xaf2d('0x4e')](_0x72d148)){loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x84'));loggerPredictive['info'](_0xaf2d('0x85'),_0x72d148[_0xaf2d('0x78')]);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x86'),_0x72d148[_0xaf2d('0x6d')]);loggerPredictive[_0xaf2d('0x83')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x72d148[_0xaf2d('0x71')]);loggerPredictive['info'](_0xaf2d('0x87'),_0x72d148[_0xaf2d('0x70')]);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x88'),_0x72d148[_0xaf2d('0x6e')]);loggerPredictive[_0xaf2d('0x83')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x72d148[_0xaf2d('0x6f')]);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x89'));if(_0x72d148[_0xaf2d('0x78')]>0x0){if(!_[_0xaf2d('0x43')](_0x72d148['predictiveIntervalAvgTalktime'])&&_0x72d148[_0xaf2d('0x6f')]>0x0){return!![];}loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x8a'));if(!_[_0xaf2d('0x43')](_0x72d148[_0xaf2d('0x6e')])&&_0x72d148[_0xaf2d('0x6e')]>0x0){return!![];}loggerPredictive[_0xaf2d('0x83')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x8b'));}}else{loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x8c'));}return![];}function mergeDataErlangB(_0x111e94){return function(_0x4d9e0f){loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x8d'));loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x8e'),_0x4d9e0f[_0xaf2d('0x8f')]);loggerPredictive['info'](_0xaf2d('0x90'),_0x4d9e0f[_0xaf2d('0x7a')]);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x91'),_0x4d9e0f[_0xaf2d('0x7b')]);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x92'),_0x4d9e0f[_0xaf2d('0x7c')]);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x91'),_0x4d9e0f['erlangAbandonmentRate']);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x89'));_[_0xaf2d('0x93')](_0x111e94,_0x4d9e0f);};}function getDiff(_0x3154fa){var _0x204953=moment()[_0xaf2d('0x52')](0x0);var _0xd7b8a2=moment(_0x3154fa)[_0xaf2d('0x52')](0x0);return _0x204953[_0xaf2d('0x53')](_0xd7b8a2,'seconds');}function ifInterval(_0x3ac037,_0x2c7b81){if(_['isUndefined'](_0x2c7b81)){return![];}return getDiff(_0x2c7b81)<_0x3ac037*0x3c;}function freeVariablesPredictive(_0x39c007){if(isNotNull(_0x39c007)){if(!_['isUndefined'](_0x39c007['startProgressive'])){_0x39c007[_0xaf2d('0x2c')]=undefined;loggerPredictive[_0xaf2d('0x83')](_0x39c007[_0xaf2d('0x46')],'clearing\x20variable\x20start\x20progressive');}if(!_['isUndefined'](_0x39c007[_0xaf2d('0x2b')])){_0x39c007[_0xaf2d('0x2b')]=undefined;loggerPredictive[_0xaf2d('0x83')](_0x39c007['name'],_0xaf2d('0x94'));}if(!_[_0xaf2d('0x43')](_0x39c007['handlePredictive'])){clearInterval(_0x39c007[_0xaf2d('0x95')]);_0x39c007[_0xaf2d('0x95')]=undefined;loggerPredictive['info'](_0x39c007[_0xaf2d('0x46')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x90f419,_0xd8dfe){if(_0xd8dfe===0x0){return 0x0;}var _0xcc923b=0x1;for(var _0x97e9d9=0x1;_0x97e9d9<=_0xd8dfe;_0x97e9d9+=0x1){_0xcc923b=0x1+_0xcc923b*_0x97e9d9/_0x90f419;}return 0x1/_0xcc923b;}function isVoiceQueueOutbound(_0xc163ff){return _0xc163ff===_0xaf2d('0x96');}function isNotPreview(_0x71edcc){return _0x71edcc!==_0xaf2d('0x20');}function isCampaignIvr(_0x28f6cd){return _0x28f6cd==='ivr';}function getCallerId(_0x2dd843,_0x7a2a21,_0xb3c534){if(!_[_0xaf2d('0x43')](_0xb3c534)&&typeof _0xb3c534==='string'&&!_[_0xaf2d('0x4e')](_0xb3c534)){if(!_[_0xaf2d('0x43')](_0x7a2a21)&&typeof _0x7a2a21===_0xaf2d('0x97')&&!_['isEmpty'](_0x7a2a21)){return util[_0xaf2d('0x80')](_0xaf2d('0x98'),_0x7a2a21,_0xb3c534);}return util[_0xaf2d('0x80')](_0xaf2d('0x98'),_0xb3c534,_0xb3c534);}if(!_['isUndefined'](_0x2dd843)&&typeof _0x2dd843==='string'&&!_[_0xaf2d('0x4e')](_0x2dd843)){return _0x2dd843;}return _0xaf2d('0x99');}function loggerCatchQueueSummary(_0xffa8a4,_0x245416){return function(_0xef0932){freeVariablesPredictive(_0x245416);emitVoiceQueueSummary(_0x245416);emitCampaignSummary(_0x245416);loggerSyncQueueSummary['error'](_0xffa8a4,util[_0xaf2d('0x9a')](_0xef0932,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x4203e7,_0x5d3f26){return function(_0x1bdaa0){loggerPredictive[_0xaf2d('0x9b')](_0x5d3f26[_0xaf2d('0x46')],_0x4203e7);loggerPredictive[_0xaf2d('0x9b')](_0x1bdaa0[_0xaf2d('0x9c')]);freeVariablesPredictive(_0x5d3f26);};}function loggerCatch(_0x2c33b6){return function(_0x8df689){logger[_0xaf2d('0x9b')](_0x2c33b6,util[_0xaf2d('0x9a')](_0x8df689,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4049a8){return _0x4049a8&&!_[_0xaf2d('0x43')](_0x4049a8)&&_0x4049a8[_0xaf2d('0x9d')]>0x0;}function decremetOriginate(_0x58237b){if(!_['isUndefined'](_0x58237b)&&_0x58237b!==null){if(typeof _0x58237b[_0xaf2d('0x79')]!==_0xaf2d('0x9e')){if(_0x58237b['originated']>0x0){_0x58237b[_0xaf2d('0x79')]-=0x1;}else{logger[_0xaf2d('0x9b')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xaf2d('0x9b')](_0xaf2d('0x9f'));}}function checkContactLowerLimitOriginate(_0x2b3508,_0x48b6fc,_0x7c1aeb){if(_0x48b6fc>_0x7c1aeb){for(var _0x348703=0x0;_0x348703<_0x48b6fc-_0x7c1aeb;_0x348703+=0x1){decremetOriginate(_0x2b3508);}}}function loggerGetContactDialer(_0x2d2faf,_0x28fba0,_0x57d294){return function(_0x229cb8){checkContactLowerLimitOriginate(_0x28fba0,_0x57d294,0x0);logger[_0xaf2d('0x9b')](_0x2d2faf,util[_0xaf2d('0x9a')](_0x229cb8,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x25ac52){return function(_0x24153d){if(isNotNull(_0x24153d)&&isNotNull(_0x24153d[0x0])){if(_0x24153d[0x0][_0xaf2d('0xa0')]>0x0){_0x25ac52[_0xaf2d('0x44')]=_0xaf2d('0xa1');logger[_0xaf2d('0x83')](_0xaf2d('0xa2')+_0x25ac52['name'],_0x24153d[0x0][_0xaf2d('0xa0')],_0xaf2d('0xa3'));}else{_0x25ac52['message']=_0xaf2d('0xa4');logger[_0xaf2d('0x83')](_0xaf2d('0xa5')+_0x25ac52[_0xaf2d('0x46')]);}}};}function notSendMessagesQueue(_0x2876b3){if(_0x2876b3[_0xaf2d('0xa6')]){freeVariablesPredictive(_0x2876b3);if(_0x2876b3[_0xaf2d('0x79')]===0x0&&_0x2876b3[_0xaf2d('0xa7')]===0x0&&_0x2876b3[_0xaf2d('0x5e')]===0x0&&(_0x2876b3['pTalking']||0x0)===0x0){_0x2876b3['sendMessageOneNotActive']=![];_0x2876b3[_0xaf2d('0x57')]=0x0;_0x2876b3['message']=_0xaf2d('0x48');loggerSyncQueueSummary[_0xaf2d('0x9b')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2876b3['name'],_0xaf2d('0xa8'));}else{_0x2876b3['message']='IS_DISACTIVED';loggerSyncQueueSummary[_0xaf2d('0x9b')](_0xaf2d('0xa9'),_0x2876b3['name'],_0xaf2d('0xaa'));}emitVoiceQueueSummary(_0x2876b3);}}function notSendMessagesCampaign(_0x394205){if(_0x394205['sendMessageOneNotActive']){if(_0x394205[_0xaf2d('0x79')]===0x0){_0x394205[_0xaf2d('0xa6')]=![];_0x394205['message']=_0xaf2d('0x48');loggerSyncQueueSummary[_0xaf2d('0x9b')](_0xaf2d('0xab'),_0x394205[_0xaf2d('0x46')],_0xaf2d('0xa8'));}else{_0x394205[_0xaf2d('0x44')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xaf2d('0x9b')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x394205[_0xaf2d('0x46')],_0xaf2d('0xaa'));}emitCampaignSummary(_0x394205);}}function createObjHistory(_0x2fb471,_0x49e2eb,_0xa8a072,_0x2c836d,_0x52e0a0){_0x2fb471['message']=_0xa8a072;var _0x1c9364=new Action(_0x2fb471,_0x49e2eb);var _0x436acc=new History(_0x1c9364);_0x436acc['state']=_0x2c836d;_0x436acc['statedesc']=_0x52e0a0;_0x436acc['endtime']=_0x1c9364[_0xaf2d('0xac')];return _0x436acc;}Dialer['prototype'][_0xaf2d('0x42')]=function(){var _0x475481=this;setInterval(function(){_0x475481[_0xaf2d('0xad')](_0x475481[_0xaf2d('0x29')],_0xaf2d('0xae'));_0x475481[_0xaf2d('0xad')](_0x475481[_0xaf2d('0x27')],_0xaf2d('0xaf'));},0x32c8);};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xad')]=function(_0x48248a,_0x5ff79e){var _0x57859f=this;for(var _0x2483df in _0x48248a){if(typeof _0x48248a[_0x2483df]!==_0xaf2d('0x9e')){this[_0xaf2d('0x1f')]['enqueue'](function(){if(!_[_0xaf2d('0xb1')](_0x48248a[_0x2483df])){return ami[_0xaf2d('0xb2')]({'action':_0xaf2d('0xb3'),'channel':_0x48248a[_0x2483df]['channel']})['catch'](function(_0x3faef2){if(_0x3faef2['message']===_0xaf2d('0xb4')){setTimeout(function(){if(_0x48248a[_0x2483df]&&_0x48248a[_0x2483df][_0xaf2d('0x56')]!==_0xaf2d('0x82')){_0x57859f[_0xaf2d('0xb5')](_0x57859f['voiceQueues'][_0x48248a[_0x2483df][_0xaf2d('0xb6')]]);logger['error']('[Dialer][checkChannel]',_0x5ff79e,_0x2483df,_0x48248a[_0x2483df][_0xaf2d('0xb6')]);delete _0x48248a[_0x2483df];}if(_0x48248a[_0x2483df]&&_0x48248a[_0x2483df][_0xaf2d('0x56')]===_0xaf2d('0x82')){_0x57859f[_0xaf2d('0xb5')](_0x57859f['campaigns'][_0x48248a[_0x2483df][_0xaf2d('0xb6')]]);logger[_0xaf2d('0x9b')](_0xaf2d('0xb7'),_0x5ff79e,_0x2483df,_0x48248a[_0x2483df]['queue']);delete _0x48248a[_0x2483df];}},0x2328);}});}});}}};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xb8')]=function(_0x5c0643){return BPromise[_0xaf2d('0xb9')]()['then'](cmHopper['countReScheduled'](_0x5c0643))[_0xaf2d('0xba')](loggerCatch('[countReScheduled]\x20'));};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xbb')]=function(_0x301299){return BPromise[_0xaf2d('0xb9')]()[_0xaf2d('0xbc')](cmHopperBlack[_0xaf2d('0xbb')](_0x301299))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xbd')));};Dialer[_0xaf2d('0xb0')]['checkIsBlackListIvr']=function(_0x54ecac){return BPromise[_0xaf2d('0xb9')]()[_0xaf2d('0xbc')](cmHopperBlack['checkIsBlackListIvr'](_0x54ecac))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xbe')));};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xbf')]=function(_0x556710){return BPromise['resolve']()[_0xaf2d('0xbc')](cmHopperHistory[_0xaf2d('0xc0')](_0x556710))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xc1')));};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xc2')]=function(_0x49f338){return BPromise[_0xaf2d('0xb9')]()[_0xaf2d('0xbc')](cmHopper[_0xaf2d('0xc2')](_0x49f338))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xc3')));};Dialer[_0xaf2d('0xb0')]['unlockContact']=function(_0x4f9990,_0x8fc067,_0x4dd7c1){return BPromise[_0xaf2d('0xb9')]()['then'](cmHopper['unlockContact'](_0x4f9990,_0x8fc067,_0x4dd7c1))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xc4')));};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xc5')]=function(_0xb1c8b0,_0x576dc7,_0x18a70c,_0x3f8830,_0x3f534d){return BPromise[_0xaf2d('0xb9')]()[_0xaf2d('0xbc')](cmHopper[_0xaf2d('0xc5')](_0xb1c8b0,_0x576dc7,_0x18a70c,_0x3f8830))['catch'](function(_0x128a5c){_0x3f534d[_0xaf2d('0xc6')]-=_0x18a70c;_0x3f534d[_0xaf2d('0xc6')]=_0x3f534d[_0xaf2d('0xc6')]>0x0?_0x3f534d[_0xaf2d('0xc6')]:0x0;loggerCatch(_0xaf2d('0xc7'))(_0x128a5c);});};Dialer['prototype'][_0xaf2d('0xc8')]=function(_0x49c188,_0x277df6,_0x1a8cb3,_0x384fcb){return BPromise[_0xaf2d('0xb9')]()['then'](cmHopper[_0xaf2d('0xc8')](_0x49c188,_0x277df6,_0x1a8cb3))['catch'](function(_0x16f528){_0x384fcb[_0xaf2d('0xc6')]-=_0x277df6;_0x384fcb[_0xaf2d('0xc6')]=_0x384fcb[_0xaf2d('0xc6')]>0x0?_0x384fcb[_0xaf2d('0xc6')]:0x0;loggerCatch(_0xaf2d('0xc9'))(_0x16f528);});};Dialer['prototype'][_0xaf2d('0xca')]=function(_0x11594b){return BPromise[_0xaf2d('0xb9')]()['then'](voiceQueueRt['getVoiceQueueRtPauses'](_0x11594b))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xcb')));};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xcc')]=function(_0x381a1a){return BPromise['resolve']()[_0xaf2d('0xbc')](cmHopper[_0xaf2d('0xcc')](_0x381a1a))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xcd')));};Dialer['prototype'][_0xaf2d('0xce')]=function(_0x19df30){return BPromise[_0xaf2d('0xb9')]()[_0xaf2d('0xbc')](cmHopperHistory[_0xaf2d('0xce')](_0x19df30))[_0xaf2d('0xba')](loggerCatch('[createHistory]\x20'));};Dialer[_0xaf2d('0xb0')]['updateOriginated']=function(_0x45f555){if(!_[_0xaf2d('0x43')](_0x45f555)&&_0x45f555!==null){if(typeof _0x45f555[_0xaf2d('0x79')]!==_0xaf2d('0x9e')){if(_0x45f555[_0xaf2d('0x79')]>0x0){_0x45f555[_0xaf2d('0x79')]-=0x1;}else{logger[_0xaf2d('0x9b')](_0xaf2d('0xcf'));}}}else{logger[_0xaf2d('0x9b')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xd0')]=function(_0x2a0b6a,_0x3ee50a){var _0x539e45=this;return function(_0x188ee1){_0x539e45[_0xaf2d('0xb5')](_0x3ee50a);logger[_0xaf2d('0x9b')](_0x2a0b6a,util[_0xaf2d('0x9a')](_0x188ee1,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0xaf2d('0xd1')]=function(_0x27d544,_0x706446,_0x23196){var _0x34e0b6={'state':0x19,'statedesc':'notFound'};this[_0xaf2d('0xb5')](_0x706446);this[_0xaf2d('0xd2')](_[_0xaf2d('0x93')](_0x34e0b6,_['pick'](_0x23196,[_0xaf2d('0xd3'),'ListId',_0xaf2d('0xd4'),_0xaf2d('0xd5'),'CampaignId'])),_0xaf2d('0xd6'),_0xaf2d('0xd7'));logger[_0xaf2d('0x9b')](_0x27d544);};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xd8')]=function(_0xcb5566){return _0xcb5566===_0xaf2d('0xd9');};Dialer['prototype'][_0xaf2d('0xda')]=function(_0x13beef){return!_[_0xaf2d('0x43')](_0x13beef)&&_0x13beef&&!_[_0xaf2d('0x43')](_0x13beef[_0xaf2d('0x46')])&&!_['isUndefined'](_0x13beef[_0xaf2d('0x7e')])&&_0x13beef['active']&&(this['trunks'][util[_0xaf2d('0x80')](_0xaf2d('0xdb'),_0x13beef[_0xaf2d('0x46')])]['status']===_0xaf2d('0xdc')||this[_0xaf2d('0x24')][util[_0xaf2d('0x80')](_0xaf2d('0xdb'),_0x13beef[_0xaf2d('0x46')])][_0xaf2d('0xb3')]==='unmonitored');};Dialer['prototype'][_0xaf2d('0xd2')]=function(_0x3cf7a7,_0x47dbe7,_0xbddbe3){this[_0xaf2d('0xce')](_0x3cf7a7)[_0xaf2d('0xba')](loggerCatch(_0x47dbe7));this[_0xaf2d('0xcc')](_0x3cf7a7)[_0xaf2d('0xba')](loggerCatch(_0xbddbe3));};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x3c')]=function(_0x1762d4){var _0x3407cc=this['uniqueId'][_0x1762d4['uniqueid']];var _0xe9ecbd;if(!_['isNil'](_0x1762d4)&&!_['isNil'](_0x1762d4[_0xaf2d('0xdd')])&&!_['isNil'](_0x1762d4[_0xaf2d('0xdd')][_0xaf2d('0xde')])&&_0x1762d4[_0xaf2d('0xdf')]===_0xaf2d('0xe0')&&_0x3407cc){if(_0x3407cc[_0xaf2d('0x56')]!==_0xaf2d('0x82')&&this[_0xaf2d('0x21')][_0x3407cc[_0xaf2d('0xb6')]]['dialAMDActive']&&_0x1762d4[_0xaf2d('0xe1')]==='HANGUP'){delete this[_0xaf2d('0x29')][_0x1762d4['uniqueid']];this[_0xaf2d('0xb5')](this[_0xaf2d('0x21')][_0x3407cc[_0xaf2d('0xb6')]]);this[_0xaf2d('0x21')][_0x3407cc[_0xaf2d('0xb6')]][_0xaf2d('0xe2')]+=0x1;this[_0xaf2d('0x21')][_0x3407cc[_0xaf2d('0xb6')]]['outboundAnswerAgiCallsDay']+=0x1;_0xe9ecbd=new Hangup(_0x3407cc,_0x1762d4);_0xe9ecbd[_0xaf2d('0xe3')]=0x12;_0xe9ecbd[_0xaf2d('0xe4')]=_0xaf2d('0xe5');_0xe9ecbd[_0xaf2d('0xe6')]=_0xaf2d('0xe7');ami[_0xaf2d('0x55')](_0xaf2d('0xe8'),ut[_0xaf2d('0xe9')](_0xe9ecbd,_0xaf2d('0xea')));this[_0xaf2d('0xd2')](_0xe9ecbd,'[syncHangupInAMD][createHistory]','[syncHangupInAMD]');}if(_0x3407cc[_0xaf2d('0x56')]!=='ivr'&&this['voiceQueues'][_0x3407cc[_0xaf2d('0xb6')]][_0xaf2d('0xeb')]&&_0x1762d4['value']==='MACHINE'){var _0x4aef54=this;return new BPromise(function(_0x1693bf,_0x3f709d){delete _0x4aef54[_0xaf2d('0x29')][_0x1762d4[_0xaf2d('0xec')]];_0x4aef54[_0xaf2d('0xb5')](_0x4aef54[_0xaf2d('0x21')][_0x3407cc[_0xaf2d('0xb6')]]);_0x4aef54[_0xaf2d('0x21')][_0x3407cc[_0xaf2d('0xb6')]][_0xaf2d('0xe2')]+=0x1;_0x4aef54[_0xaf2d('0x21')][_0x3407cc['queue']][_0xaf2d('0x64')]+=0x1;var _0xf9a184=_0x4aef54[_0xaf2d('0x21')][_0x3407cc[_0xaf2d('0xb6')]];var _0x52ad7d=new Hangup(_0x3407cc,_0x1762d4);_0x52ad7d['state']=0x13;_0x52ad7d['statedesc']=_0xaf2d('0xed');_0x52ad7d[_0xaf2d('0xe6')]=_0xaf2d('0xe7');_0x52ad7d['countmachineretry']+=0x1;_0x52ad7d[_0xaf2d('0xee')]+=0x1;_0x52ad7d['amd']=!![];ami[_0xaf2d('0x55')](_0xaf2d('0xe8'),ut[_0xaf2d('0xe9')](_0x52ad7d,_0xaf2d('0xea')));_0x4aef54[_0xaf2d('0xce')](_0x52ad7d)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xef')));if(_0x52ad7d[_0xaf2d('0xf0')]+_0x52ad7d[_0xaf2d('0xf1')]+_0x52ad7d['countnoanswerretry']+_0x52ad7d[_0xaf2d('0xf2')]+_0x52ad7d[_0xaf2d('0xf3')]+_0x52ad7d[_0xaf2d('0xf4')]+_0x52ad7d[_0xaf2d('0xf5')]+_0x52ad7d[_0xaf2d('0xf6')]>=_0xf9a184[_0xaf2d('0xf7')]){_0x4aef54['stateGlobal'](_0x52ad7d,_0x1693bf,_0x3f709d,'reason19\x20machine....');}else{if(_0x52ad7d[_0xaf2d('0xf5')]>=_0xf9a184['dialMachineMaxRetry']){_0x4aef54['createStateFinal'](_0x52ad7d,_0x1693bf,_0x3f709d,_0xaf2d('0xf8'));}else{_0x4aef54[_0xaf2d('0xc2')]({'active':![],'countmachineretry':_0x52ad7d[_0xaf2d('0xf5')],'scheduledat':moment()[_0xaf2d('0xf9')](_0xf9a184['dialMachineRetryFrequency'],_0xaf2d('0xfa'))[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x52ad7d['ContactId'],'ListId':_0x52ad7d[_0xaf2d('0xfc')],'VoiceQueueId':_0x52ad7d[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x52ad7d[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xfe')));_0x1693bf({'reschedule':0x1});}}});}if(_0x3407cc[_0xaf2d('0x56')]==='ivr'&&this[_0xaf2d('0x22')][_0x3407cc['queue']]['dialAMDActive']&&_0x1762d4['value']===_0xaf2d('0xff')){delete this[_0xaf2d('0x29')][_0x1762d4[_0xaf2d('0xec')]];this[_0xaf2d('0xb5')](this[_0xaf2d('0x22')][_0x3407cc[_0xaf2d('0xb6')]]);_0xe9ecbd=new Hangup(_0x3407cc,_0x1762d4);_0xe9ecbd[_0xaf2d('0xe3')]=0x12;_0xe9ecbd['statedesc']='HangupInAMD';_0xe9ecbd['membername']=_0xaf2d('0xe7');ami[_0xaf2d('0x55')](_0xaf2d('0xe8'),ut[_0xaf2d('0xe9')](_0xe9ecbd,_0xaf2d('0xea')));this['saveInDb'](_0xe9ecbd,_0xaf2d('0x100'),_0xaf2d('0x101'));}if(_0x3407cc[_0xaf2d('0x56')]===_0xaf2d('0x82')&&this[_0xaf2d('0x22')][_0x3407cc[_0xaf2d('0xb6')]][_0xaf2d('0xeb')]&&_0x1762d4[_0xaf2d('0xe1')]==='MACHINE'){var _0x4aef54=this;return new BPromise(function(_0xf15285,_0x16af3e){delete _0x4aef54['uniqueId'][_0x1762d4['uniqueid']];_0x4aef54[_0xaf2d('0xb5')](_0x4aef54[_0xaf2d('0x22')][_0x3407cc[_0xaf2d('0xb6')]]);_0x4aef54[_0xaf2d('0x22')][_0x3407cc[_0xaf2d('0xb6')]]['outboundAnswerCallsDay']+=0x1;_0x4aef54[_0xaf2d('0x22')][_0x3407cc[_0xaf2d('0xb6')]][_0xaf2d('0x64')]+=0x1;var _0x49f853=_0x4aef54[_0xaf2d('0x22')][_0x3407cc[_0xaf2d('0xb6')]];var _0x241154=new Hangup(_0x3407cc,_0x1762d4);_0x241154[_0xaf2d('0xe3')]=0x13;_0x241154[_0xaf2d('0xe4')]=_0xaf2d('0xed');_0x241154['membername']=_0xaf2d('0xe7');_0x241154[_0xaf2d('0xf5')]+=0x1;_0x241154[_0xaf2d('0xee')]+=0x1;_0x241154[_0xaf2d('0xea')]=!![];ami['emit']('custom:amd',ut['buildObj'](_0x241154,'amd'));_0x4aef54[_0xaf2d('0xce')](_0x241154)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xef')));if(_0x241154['countbusyretry']+_0x241154[_0xaf2d('0xf1')]+_0x241154[_0xaf2d('0x102')]+_0x241154[_0xaf2d('0xf2')]+_0x241154[_0xaf2d('0xf3')]+_0x241154[_0xaf2d('0xf4')]+_0x241154['countmachineretry']+_0x241154[_0xaf2d('0xf6')]>=_0x49f853[_0xaf2d('0xf7')]){_0x4aef54[_0xaf2d('0x103')](_0x241154,_0xf15285,_0x16af3e,_0xaf2d('0x104'));}else{if(_0x241154['countmachineretry']>=_0x49f853[_0xaf2d('0x105')]){_0x4aef54[_0xaf2d('0x106')](_0x241154,_0xf15285,_0x16af3e,_0xaf2d('0xf8'));}else{_0x4aef54[_0xaf2d('0xc2')]({'active':![],'countmachineretry':_0x241154['countmachineretry'],'scheduledat':moment()['add'](_0x49f853[_0xaf2d('0x107')],_0xaf2d('0xfa'))[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x241154[_0xaf2d('0xd3')],'ListId':_0x241154[_0xaf2d('0xfc')],'VoiceQueueId':_0x241154[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x241154[_0xaf2d('0xfd')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0xf15285({'reschedule':0x1});}}});}}};Dialer[_0xaf2d('0xb0')]['syncHangup']=function(_0x492314){var _0x487c81=this[_0xaf2d('0x29')][_0x492314[_0xaf2d('0xec')]];var _0x53148c=this;var _0x3116ea;if(_0x487c81&&_0x487c81[_0xaf2d('0x56')]===_0xaf2d('0x82')){delete this[_0xaf2d('0x29')][_0x492314[_0xaf2d('0xec')]];this[_0xaf2d('0xb5')](this[_0xaf2d('0x22')][_0x487c81[_0xaf2d('0xb6')]]);this[_0xaf2d('0x22')][_0x487c81[_0xaf2d('0xb6')]][_0xaf2d('0x108')]+=0x1;_0x3116ea=new Hangup(_0x487c81,_0x492314);this[_0xaf2d('0xce')](_0x3116ea)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x109')));this[_0xaf2d('0xcc')](_0x3116ea)['catch'](loggerCatch(_0xaf2d('0x10a')));}if(_0x487c81&&_0x487c81[_0xaf2d('0x56')]!==_0xaf2d('0x82')&&isNotNull(this[_0xaf2d('0x21')][_0x487c81[_0xaf2d('0xb6')]]['dialQueueProject'])){delete this[_0xaf2d('0x29')][_0x492314['uniqueid']];this[_0xaf2d('0xb5')](this[_0xaf2d('0x21')][_0x487c81[_0xaf2d('0xb6')]]);this[_0xaf2d('0x21')][_0x487c81[_0xaf2d('0xb6')]][_0xaf2d('0xe2')]+=0x1;this[_0xaf2d('0x21')][_0x487c81[_0xaf2d('0xb6')]]['outboundAnswerAgiCallsDay']+=0x1;_0x3116ea=new Hangup(_0x487c81,_0x492314);_0x3116ea[_0xaf2d('0xe3')]=0x10;_0x3116ea[_0xaf2d('0xe4')]=_0xaf2d('0x10b');_0x3116ea[_0xaf2d('0xe6')]='AGI';this[_0xaf2d('0xce')](_0x3116ea)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x109')));this[_0xaf2d('0xcc')](_0x3116ea)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x10a')));}if(_0x487c81&&_0x487c81['type']!=='ivr'&&!isNotNull(this['voiceQueues'][_0x487c81[_0xaf2d('0xb6')]][_0xaf2d('0x10c')])){delete this[_0xaf2d('0x29')][_0x492314['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0x487c81[_0xaf2d('0xb6')]]);this[_0xaf2d('0x21')][_0x487c81['queue']][_0xaf2d('0x6c')]+=0x1;_0x3116ea=new Hangup(_0x487c81,_0x492314);_0x3116ea[_0xaf2d('0xe3')]=0xc;_0x3116ea[_0xaf2d('0xe4')]=_0x492314[_0xaf2d('0x10d')];_0x3116ea[_0xaf2d('0xe6')]=_0xaf2d('0x10e');this[_0xaf2d('0xce')](_0x3116ea)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x109')));this['moveContactManagedDialer'](_0x3116ea)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer['prototype'][_0xaf2d('0x36')]=function(_0x2a99b9){var _0x2507a5=this['uniqueId'][_0x2a99b9[_0xaf2d('0xec')]];var _0x1ab9d6=this;if(this[_0xaf2d('0x21')][_0x2a99b9[_0xaf2d('0xb6')]]){if(_0x2507a5&&_0x2507a5['type']!==_0xaf2d('0x82')){delete this['uniqueId'][_0x2a99b9[_0xaf2d('0xec')]];this['voiceQueues'][_0x2a99b9['queue']][_0xaf2d('0xe2')]+=0x1;var _0x59e030=new AgentComplete(_0x2507a5,_0x2a99b9);if(_0x2a99b9[_0xaf2d('0x10f')]==='agent'){_0x59e030[_0xaf2d('0x110')]=this[_0xaf2d('0x21')][_0x2a99b9[_0xaf2d('0xb6')]][_0xaf2d('0x111')]&&this['voiceQueues'][_0x2a99b9[_0xaf2d('0xb6')]][_0xaf2d('0x112')]?moment()[_0xaf2d('0x80')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this['createHistory'](_0x59e030)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x113')));this[_0xaf2d('0xcc')](_0x59e030)[_0xaf2d('0xba')](loggerCatch('[syncAgentComplete]'));}}};Dialer['prototype'][_0xaf2d('0x31')]=function(_0x47bc2a){if(this[_0xaf2d('0x21')][_0x47bc2a[_0xaf2d('0xb6')]]){if(this['uniqueId'][_0x47bc2a[_0xaf2d('0xec')]]&&this[_0xaf2d('0x29')][_0x47bc2a['uniqueid']][_0xaf2d('0x56')]!==_0xaf2d('0x82')){this['updateOriginated'](this['voiceQueues'][_0x47bc2a[_0xaf2d('0xb6')]]);this[_0xaf2d('0x29')][_0x47bc2a[_0xaf2d('0xec')]][_0xaf2d('0x114')]=moment()[_0xaf2d('0x80')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x115')]=function(_0x184697){this[_0xaf2d('0xce')](_0x184697)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x113')));this[_0xaf2d('0xcc')](_0x184697)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x116')));};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x34')]=function(_0x493ff){var _0x5e9699=this[_0xaf2d('0x29')][_0x493ff[_0xaf2d('0xec')]];var _0x193b66=this;if(this[_0xaf2d('0x21')][_0x493ff[_0xaf2d('0xb6')]]){if(_0x5e9699&&_0x5e9699[_0xaf2d('0x56')]!==_0xaf2d('0x82')){delete this[_0xaf2d('0x29')][_0x493ff[_0xaf2d('0xec')]];this[_0xaf2d('0xb5')](this[_0xaf2d('0x21')][_0x493ff['queue']]);_0x5e9699[_0xaf2d('0x117')]=moment()[_0xaf2d('0x80')]('YYYY-MM-DD\x20HH:mm:ss');var _0x53cb78=new QueueCallerAbandon(_0x5e9699,_0x493ff);if(getSeconds(_0x5e9699['droptime'],_0x5e9699[_0xaf2d('0x118')])>=_0x5e9699[_0xaf2d('0x119')]){this['voiceQueues'][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x71')]+=0x1;this[_0xaf2d('0x21')][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x66')]+=0x1;this[_0xaf2d('0x21')][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x73')]+=0x1;_0x53cb78[_0xaf2d('0xe3')]=0xa;_0x53cb78[_0xaf2d('0xe4')]=_0xaf2d('0x11a');_0x53cb78['dropreason']=_0xaf2d('0x11b');_0x53cb78['agiafterat']=this[_0xaf2d('0x21')][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x111')]?moment()[_0xaf2d('0x80')](_0xaf2d('0xfb')):undefined;_0x53cb78[_0xaf2d('0xf3')]+=0x1;_0x53cb78[_0xaf2d('0xee')]+=0x1;if(_0x53cb78[_0xaf2d('0xf3')]>=this[_0xaf2d('0x21')][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x11c')]){this[_0xaf2d('0x115')](_0x53cb78);}else{this[_0xaf2d('0xc2')]({'active':![],'countdropretry':_0x53cb78[_0xaf2d('0xf3')],'scheduledat':moment()['add'](this[_0xaf2d('0x21')][_0x493ff[_0xaf2d('0xb6')]]['dialDropRetryFrequency'],_0xaf2d('0xfa'))[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x5e9699['ContactId'],'ListId':_0x5e9699[_0xaf2d('0xfc')],'VoiceQueueId':_0x5e9699[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x5e9699['CampaignId']||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x11d')));var _0x14570f=new History(_0x53cb78);_0x14570f[_0xaf2d('0xe3')]=0xa;_0x14570f[_0xaf2d('0xe4')]=_0xaf2d('0x11a');_0x14570f[_0xaf2d('0xac')]=moment()[_0xaf2d('0x80')](_0xaf2d('0xfb'));_0x14570f['endtime']=_0x14570f[_0xaf2d('0xac')];_0x14570f[_0xaf2d('0x11e')]=_0x53cb78[_0xaf2d('0x11e')];_0x14570f[_0xaf2d('0x11f')]=_0x53cb78['calleridnum'];this[_0xaf2d('0xce')](_0x14570f)[_0xaf2d('0xba')](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this['voiceQueues'][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x70')]+=0x1;this[_0xaf2d('0x21')][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x65')]+=0x1;_0x53cb78['state']=0xb;_0x53cb78[_0xaf2d('0xe4')]=_0xaf2d('0x120');_0x53cb78['dropreason']=_0xaf2d('0x121');_0x53cb78[_0xaf2d('0xf4')]+=0x1;_0x53cb78[_0xaf2d('0xee')]+=0x1;if(_0x53cb78[_0xaf2d('0xf4')]>=this['voiceQueues'][_0x493ff[_0xaf2d('0xb6')]][_0xaf2d('0x122')]){this[_0xaf2d('0x115')](_0x53cb78);}else{this[_0xaf2d('0xc2')]({'active':![],'countabandonedretry':_0x53cb78[_0xaf2d('0xf4')],'scheduledat':moment()['add'](this[_0xaf2d('0x21')][_0x493ff['queue']][_0xaf2d('0x123')],'minutes')[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x5e9699[_0xaf2d('0xd3')],'ListId':_0x5e9699['ListId'],'VoiceQueueId':_0x5e9699[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x5e9699[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x124')));var _0x14570f=new History(_0x53cb78);_0x14570f['state']=0xb;_0x14570f[_0xaf2d('0xe4')]=_0xaf2d('0x120');_0x14570f[_0xaf2d('0xac')]=moment()[_0xaf2d('0x80')](_0xaf2d('0xfb'));_0x14570f[_0xaf2d('0x125')]=_0x14570f[_0xaf2d('0xac')];_0x14570f[_0xaf2d('0x11e')]=_0x53cb78[_0xaf2d('0x11e')];_0x14570f['calleridnum']=_0x53cb78['calleridnum'];this[_0xaf2d('0xce')](_0x14570f)[_0xaf2d('0xba')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x126')]=function(_0x399fd8){if(this[_0xaf2d('0x27')][_0x399fd8['uniqueid']]){this['actions'][_0x399fd8[_0xaf2d('0xec')]][_0xaf2d('0x127')]=_0x399fd8[_0xaf2d('0x127')];}if(this[_0xaf2d('0x29')][_0x399fd8[_0xaf2d('0xec')]]){this[_0xaf2d('0x29')][_0x399fd8[_0xaf2d('0xec')]][_0xaf2d('0x127')]=_0x399fd8[_0xaf2d('0x127')];}};Dialer['prototype']['syncQueueMember']=function(_0x553bbd){if(strategy[this[_0xaf2d('0x21')][this['actions'][_0x553bbd[_0xaf2d('0x128')]][_0xaf2d('0xb6')]][_0xaf2d('0x129')]]===_0xaf2d('0x1b')){if(this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]]&&_[_0xaf2d('0xb1')](this[_0xaf2d('0x27')][_0x553bbd['actionid']]['locked'])&&_0x553bbd[_0xaf2d('0xb3')]==='1'&&_0x553bbd[_0xaf2d('0x12a')]==='0'){if(this[_0xaf2d('0x23')][_0x553bbd[_0xaf2d('0x12b')]]){if(!this[_0xaf2d('0x23')][_0x553bbd[_0xaf2d('0x12b')]][_0xaf2d('0x12c')]){this[_0xaf2d('0x23')][_0x553bbd[_0xaf2d('0x12b')]][_0xaf2d('0x12c')]=!![];this['actions'][_0x553bbd['actionid']]['locked']=!![];this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]][_0xaf2d('0x12b')]=_0x553bbd[_0xaf2d('0x12b')];}}}}else if((strategy[this['voiceQueues'][this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]][_0xaf2d('0xb6')]][_0xaf2d('0x129')]]||_0xaf2d('0x1a'))===_0xaf2d('0x1a')){if(this[_0xaf2d('0x27')][_0x553bbd['actionid']]){if(this[_0xaf2d('0x23')][_0x553bbd[_0xaf2d('0x12b')]]){this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]][_0xaf2d('0x12b')]=_0x553bbd[_0xaf2d('0x12b')];if(_[_0xaf2d('0xb1')](this['queueBooked'][this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]][_0xaf2d('0xb6')]])){this[_0xaf2d('0x2e')][this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]]['queue']]=[];}this['queueBooked'][this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]][_0xaf2d('0xb6')]][_0xaf2d('0x12d')](_[_0xaf2d('0x93')](_[_0xaf2d('0x12e')](this[_0xaf2d('0x27')][_0x553bbd[_0xaf2d('0x128')]],['idHopper',_0xaf2d('0x12b')]),{'status':_0x553bbd['status'],'paused':_0x553bbd[_0xaf2d('0x12a')]}));}}}};function unlockQueueStatus(_0x47701f,_0x512c5a){setTimeout(function(){if(_['isUndefined'](_0x47701f['queueStatusComplete'])){loggerBooked['error'](_0xaf2d('0x12f'),_0x512c5a);}_0x47701f[_0xaf2d('0x130')]=!![];loggerBooked[_0xaf2d('0x83')](_0xaf2d('0x131'),_0x512c5a,JSON[_0xaf2d('0x51')](_[_0xaf2d('0x12e')](_0x47701f,['name',_0xaf2d('0x130')])));},0x1f3);}Dialer[_0xaf2d('0xb0')][_0xaf2d('0x40')]=function(_0x434aa2){var _0x40a74c=this;var _0x19ca03=_0x40a74c[_0xaf2d('0x21')][_0x40a74c[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']];if(strategy[this[_0xaf2d('0x21')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']][_0xaf2d('0x129')]]===_0xaf2d('0x1b')){if(this[_0xaf2d('0x27')][_0x434aa2['actionid']]&&this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0x12b')]){this[_0xaf2d('0x20')]['run'](this['actions'][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0x132')],this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0x12b')])['catch'](function(_0x347c78){logger['error'](_0xaf2d('0x133'),util[_0xaf2d('0x9a')](_0x347c78,{'showHidden':![],'depth':null}));})[_0xaf2d('0x1e')](function(){_0x40a74c[_0xaf2d('0xb5')](_0x40a74c['voiceQueues'][_0x40a74c[_0xaf2d('0x27')][_0x434aa2['actionid']][_0xaf2d('0xb6')]]);_0x40a74c[_0xaf2d('0x23')][_0x40a74c[_0xaf2d('0x27')][_0x434aa2['actionid']][_0xaf2d('0x12b')]][_0xaf2d('0x12c')]=![];delete _0x40a74c[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]];unlockQueueStatus(_0x19ca03);});}else{this[_0xaf2d('0xb5')](this[_0xaf2d('0x21')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x434aa2['actionid']][_0xaf2d('0xd3')],'ListId':this['actions'][_0x434aa2['actionid']][_0xaf2d('0xfc')],'VoiceQueueId':this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xd5')]||undefined,'CampaignId':this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x134')));delete this[_0xaf2d('0x27')][_0x434aa2['actionid']];unlockQueueStatus(_0x19ca03);}}else if((strategy[this['voiceQueues'][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]][_0xaf2d('0x129')]]||_0xaf2d('0x1a'))==='rrmemory'){var _0x3864f6;if(this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]&&!_[_0xaf2d('0x4e')](this['queueBooked'][this['actions'][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]])){if(this['queueBookedRR'][_0x40a74c[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']]){this['queueBookedRR'][_0x40a74c[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]=this[_0xaf2d('0x2f')][this['actions'][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]?this[_0xaf2d('0x2f')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]:this['queueBooked'][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']]?this[_0xaf2d('0x2e')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']][_0xaf2d('0x135')]||0x0:0x0;}this[_0xaf2d('0x2e')][this[_0xaf2d('0x27')][_0x434aa2['actionid']]['queue']][_0xaf2d('0x135')]=this[_0xaf2d('0x2f')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']];for(var _0x4e178a=0x0;_0x4e178a<this[_0xaf2d('0x2e')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]][_0xaf2d('0x9d')];_0x4e178a+=0x1){_0x3864f6=rr(this['queueBooked'][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]);this[_0xaf2d('0x2f')][_0x40a74c['actions'][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]=this[_0xaf2d('0x2e')][this['actions'][_0x434aa2[_0xaf2d('0x128')]]['queue']]['_rr'];if(_0x3864f6[_0xaf2d('0xb3')]==='1'&&_0x3864f6[_0xaf2d('0x12a')]==='0'){break;}}if(!_[_0xaf2d('0xb1')](_0x3864f6)){this[_0xaf2d('0x23')][_0x3864f6[_0xaf2d('0x12b')]][_0xaf2d('0x136')]=_['isUndefined'](this[_0xaf2d('0x23')][_0x3864f6[_0xaf2d('0x12b')]][_0xaf2d('0x136')])?!![]:this[_0xaf2d('0x23')][_0x3864f6[_0xaf2d('0x12b')]][_0xaf2d('0x136')];}loggerBooked['info'](_0xaf2d('0x137'),_0x434aa2[_0xaf2d('0x128')],'Agent:\x20',JSON[_0xaf2d('0x51')](_[_0xaf2d('0x12e')](this[_0xaf2d('0x23')][_0x3864f6['stateinterface']],[_0xaf2d('0x46'),_0xaf2d('0x136')])),_0xaf2d('0x138'),JSON[_0xaf2d('0x51')](_0x3864f6[_0xaf2d('0x132')]));if(!_[_0xaf2d('0xb1')](_0x3864f6)&&_0x3864f6[_0xaf2d('0xb3')]==='1'&&_0x3864f6[_0xaf2d('0x12a')]==='0'&&this[_0xaf2d('0x23')][_0x3864f6[_0xaf2d('0x12b')]][_0xaf2d('0x136')]){this[_0xaf2d('0x23')][_0x3864f6['stateinterface']]['unlockRR']=![];this['queueBooked'][_0x40a74c[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']]=[];this[_0xaf2d('0x20')]['run'](_0x3864f6[_0xaf2d('0x132')],_0x3864f6[_0xaf2d('0x12b')])[_0xaf2d('0xba')](function(_0x5a9877){logger['error'](_0xaf2d('0x133'),util[_0xaf2d('0x9a')](_0x5a9877,{'showHidden':![],'depth':null}));})['finally'](function(){_0x40a74c[_0xaf2d('0xb5')](_0x40a74c[_0xaf2d('0x21')][_0x40a74c[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['queue']]);setTimeout(function(){_0x40a74c[_0xaf2d('0x23')][_0x3864f6[_0xaf2d('0x12b')]]['unlockRR']=!![];loggerBooked['info'](_0xaf2d('0x139'),_0x434aa2[_0xaf2d('0x128')],'Agent:\x20',JSON[_0xaf2d('0x51')](_[_0xaf2d('0x12e')](_0x40a74c[_0xaf2d('0x23')][_0x3864f6[_0xaf2d('0x12b')]],[_0xaf2d('0x46'),_0xaf2d('0x136')])),_0xaf2d('0x138'),JSON[_0xaf2d('0x51')](_0x3864f6[_0xaf2d('0x132')]));},0xc7);delete _0x40a74c[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]];unlockQueueStatus(_0x19ca03,_0x434aa2[_0xaf2d('0x128')]);});}else{loggerBooked['info'](_0xaf2d('0x13a'));this['updateOriginated'](this[_0xaf2d('0x21')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xd3')],'ListId':this[_0xaf2d('0x27')][_0x434aa2['actionid']][_0xaf2d('0xfc')],'VoiceQueueId':this[_0xaf2d('0x27')][_0x434aa2['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['CampaignId']||undefined})[_0xaf2d('0xba')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xaf2d('0x27')][_0x434aa2['actionid']];unlockQueueStatus(_0x19ca03);}}else{loggerBooked[_0xaf2d('0x83')](_0xaf2d('0x13b'));this[_0xaf2d('0xb5')](this[_0xaf2d('0x21')][this['actions'][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]);this[_0xaf2d('0xc2')]({'active':![],'ContactId':this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xd3')],'ListId':this['actions'][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xfc')],'VoiceQueueId':this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xd5')]||undefined,'CampaignId':this[_0xaf2d('0x27')][_0x434aa2['actionid']][_0xaf2d('0xfd')]||undefined})['catch'](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]];unlockQueueStatus(_0x19ca03);}}else{loggerBooked[_0xaf2d('0x83')](_0xaf2d('0x13c'));this[_0xaf2d('0xb5')](this[_0xaf2d('0x21')][this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xb6')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xaf2d('0x27')][_0x434aa2[_0xaf2d('0x128')]]['ContactId'],'ListId':this['actions'][_0x434aa2[_0xaf2d('0x128')]][_0xaf2d('0xfc')],'VoiceQueueId':this['actions'][_0x434aa2['actionid']][_0xaf2d('0xd5')]||undefined,'CampaignId':this[_0xaf2d('0x27')][_0x434aa2['actionid']][_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this['actions'][_0x434aa2[_0xaf2d('0x128')]];unlockQueueStatus(_0x19ca03);}};Dialer[_0xaf2d('0xb0')]['loopCampaigns']=function(){var _0xecd5d9=this;return BPromise['resolve']()[_0xaf2d('0xbc')](cmHopper['resetActiveCalls']({}))[_0xaf2d('0xbc')](function(){setInterval(function(){_0xecd5d9[_0xaf2d('0x13d')]();},0x3e8);});};Dialer[_0xaf2d('0xb0')]['checkIsTrunkReachable']=function(_0x41d493){var _0x137db1=this;return function(){if(!_0x137db1['isTrunkReachable'](_0x41d493[_0xaf2d('0x7d')])){if(!_0x137db1[_0xaf2d('0xda')](_0x41d493[_0xaf2d('0x13e')])){_0x41d493['message']='TRUNK_IS_NOT_REACHABLE';throw _0x41d493['name']+_0xaf2d('0x13f');}}};};Dialer['prototype'][_0xaf2d('0x140')]=function(_0x1bed72,_0x54d8bf,_0x588208,_0x254ceb){var _0x442adb=this;return function(){var _0x241cfe=!![];return _0x442adb['ifTime'](_0x1bed72,_0x54d8bf,_0x588208,_0x254ceb,_0x241cfe);};};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x141')]=function(_0x1cfc56,_0x4dbc6d,_0x1214ef,_0x4d017e){var _0x1d6495=this;return function(){var _0xde0d6=![];return _0x1d6495[_0xaf2d('0x142')](_0x1cfc56[_0xaf2d('0x4d')],_0x4dbc6d,_0x1214ef,_0x4d017e,_0xde0d6);};};Dialer['prototype'][_0xaf2d('0x142')]=function(_0x9a842c,_0x1b3524,_0x2ca57f,_0x1a3bb1,_0x6ca75f){var _0x5069fd=[];return new BPromise(function(_0x4e7722,_0x481fb1){if(!isNotNull(_0x9a842c)){_0x1a3bb1['message']=_0xaf2d('0x4b');return _0x481fb1(msgResponse('ifTime',_0xaf2d('0x143'),_0x2ca57f+'\x20Intervals\x20is\x20null\x20'));}if(_[_0xaf2d('0x4e')](_0x9a842c)){_0x1a3bb1['message']=_0xaf2d('0x144');return _0x481fb1(msgResponse(_0xaf2d('0x142'),'Failure',_0x2ca57f+'\x20Intervals\x20is\x20empty\x20'));}if(_0x1b3524&&_[_0xaf2d('0x43')](config[_0xaf2d('0x145')][_0x1b3524])){_0x1a3bb1[_0xaf2d('0x44')]=_0xaf2d('0x146');return _0x481fb1(msgResponse('ifTime',_0xaf2d('0x143'),_0x2ca57f+_0xaf2d('0x147')+_0x1b3524));}if(_[_0xaf2d('0x148')](_0x9a842c)){for(var _0x2547dd=0x0;_0x2547dd<_0x9a842c['length'];_0x2547dd+=0x1){_0x5069fd[_0xaf2d('0x12d')](ami[_0xaf2d('0xb2')]({'action':_0xaf2d('0x149'),'command':util[_0xaf2d('0x80')](_0xaf2d('0x14a'),_0x9a842c[_0x2547dd][_0xaf2d('0x14b')],!_[_0xaf2d('0x43')](config['timezones'][_0x1b3524])?_0x1b3524:'')})[_0xaf2d('0xbc')](function(_0x4765f2){return _0x4765f2[_0xaf2d('0x14c')][_0xaf2d('0x14d')]('true')>=0x0;})[_0xaf2d('0xba')](myreject(_0x481fb1)));}}else{_0x5069fd[_0xaf2d('0x12d')](ami[_0xaf2d('0xb2')]({'action':_0xaf2d('0x149'),'command':util[_0xaf2d('0x80')](_0xaf2d('0x14a'),_0x9a842c,!_[_0xaf2d('0x43')](config[_0xaf2d('0x145')][_0x1b3524])?_0x1b3524:'')})['then'](function(_0x55f9a0){return _0x55f9a0['content'][_0xaf2d('0x14d')](_0xaf2d('0x14e'))>=0x0;})[_0xaf2d('0xba')](myreject(_0x481fb1)));}BPromise[_0xaf2d('0x14f')](_0x5069fd)[_0xaf2d('0xbc')](function(_0x444ac7){var _0xf154ff=_[_0xaf2d('0x150')](_0x444ac7);if(_0xf154ff){return _0x4e7722(_0xf154ff);}else{_0x1a3bb1[_0xaf2d('0x44')]=_0x6ca75f?_0xaf2d('0x151'):_0xaf2d('0x152');return _0x481fb1(msgResponse('[ifTime][promiseAll]',_0xaf2d('0x143'),_0xaf2d('0x153')+_0x6ca75f+'\x20'+_0x2ca57f+_0xaf2d('0x154')+util['inspect'](_0x9a842c,{'showHidden':![],'depth':null})+_0xaf2d('0x155')+_0x1b3524));}})['catch'](function(_0x58d498){return _0x481fb1(msgResponse(_0xaf2d('0x142'),'Failure',JSON[_0xaf2d('0x51')](_0x58d498)));});});};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x156')]=function(_0xa29c83){var _0x442020=this;return function(){switch(_0xa29c83['dialMethod']){case _0xaf2d('0x157'):freeVariablesPredictive(_0xa29c83);_0x442020[_0xaf2d('0x158')](_0xa29c83,0x1);break;case _0xaf2d('0x159'):freeVariablesPredictive(_0xa29c83);_0x442020[_0xaf2d('0x158')](_0xa29c83,_0xa29c83[_0xaf2d('0x15a')]);break;case _0xaf2d('0xc'):_0x442020[_0xaf2d('0xc')](_0xa29c83);break;case _0xaf2d('0xb'):freeVariablesPredictive(_0xa29c83);_0x442020[_0xaf2d('0x158')](_0xa29c83,0x1);break;default:freeVariablesPredictive(_0xa29c83);logger[_0xaf2d('0x9b')]('Queue',_0xa29c83[_0xaf2d('0x46')],'method\x20not\x20recognized');}};};Dialer[_0xaf2d('0xb0')]['launchHandleIvr']=function(_0x529b9e){var _0x586d4e=this;return function(){_0x586d4e[_0xaf2d('0x15b')](_0x529b9e);};};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x38')]=function(_0x135daf){var _0x52704b=this;if(isNotPreview(_0x135daf['dialMethod'])){if(isVoiceQueueOutbound(_0x135daf['type'])&&isActive(_0x135daf[_0xaf2d('0x60')])){_0x135daf[_0xaf2d('0xa6')]=!![];BPromise[_0xaf2d('0xb9')]()[_0xaf2d('0xbc')](checkIsLoggedIn(_0x135daf,_0x135daf[_0xaf2d('0x58')]))[_0xaf2d('0xbc')](checkIsActive(_0x135daf,_0x135daf[_0xaf2d('0x60')]))[_0xaf2d('0xbc')](checkInterval(_0x135daf))[_0xaf2d('0xbc')](_0x52704b['checkIsTrunkReachable'](_0x135daf))[_0xaf2d('0xbc')](_0x52704b[_0xaf2d('0x140')](_0x135daf[_0xaf2d('0x15c')],_0x135daf[_0xaf2d('0x15d')],_0x135daf[_0xaf2d('0x46')],_0x135daf))[_0xaf2d('0xbc')](_0x52704b['checkIfTimeIntervals'](_0x135daf['Interval'],_0x135daf[_0xaf2d('0x15d')],_0x135daf[_0xaf2d('0x46')],_0x135daf))['then'](_0x52704b[_0xaf2d('0x156')](_0x135daf))[_0xaf2d('0xba')](loggerCatchQueueSummary(_0xaf2d('0x15e'),_0x135daf));}else{notSendMessagesQueue(_0x135daf);}}else{freeVariablesPredictive(_0x135daf);}};Dialer['prototype'][_0xaf2d('0x13d')]=function(){var _0x807ca3=this;var _0x23cc8a;for(var _0xe2a73d in this['campaigns']){if(typeof this['campaigns'][_0xe2a73d]!=='undefined'){_0x23cc8a=this['campaigns'][_0xe2a73d];if(isCampaignIvr(_0x23cc8a['type'])&&isActive(_0x23cc8a['active'])){_0x23cc8a[_0xaf2d('0xa6')]=!![];BPromise[_0xaf2d('0xb9')]()['then'](checkIsActive(_0x23cc8a,_0x23cc8a['active']))['then'](checkInterval(_0x23cc8a))['then'](_0x807ca3['checkIsTrunkReachable'](_0x23cc8a))[_0xaf2d('0xbc')](_0x807ca3[_0xaf2d('0x140')](_0x23cc8a[_0xaf2d('0x15c')],_0x23cc8a['dialTimezone'],_0x23cc8a['name'],_0x23cc8a))[_0xaf2d('0xbc')](_0x807ca3['checkIfTimeIntervals'](_0x23cc8a['Interval'],_0x23cc8a[_0xaf2d('0x15d')],_0x23cc8a[_0xaf2d('0x46')],_0x23cc8a))[_0xaf2d('0xbc')](_0x807ca3['launchHandleIvr'](_0x23cc8a))[_0xaf2d('0xba')](loggerCatchQueueSummary(_0xaf2d('0x15f'),_0x23cc8a));}else{notSendMessagesCampaign(_0x23cc8a);}}}};function getCallerIdRandom(_0x3f36b1,_0x4ae86f){var _0x4fe2c7;var _0x3ecc74;var _0x3a15b8;if(_0x4ae86f<=0x0){_0x4ae86f=0x1;}_0x4fe2c7=new RegExp(_0xaf2d('0x160')+_0x4ae86f+'}$');_0x3ecc74=Math['pow'](0xa,_0x4ae86f-0x1);_0x3a15b8=Math['pow'](0xa,_0x4ae86f)-0x1;return util[_0xaf2d('0x80')]('%s',_[_0xaf2d('0x161')](_0x3f36b1,_0x4fe2c7,_[_0xaf2d('0x162')](_0x3ecc74,_0x3a15b8)));}function extractCalleridName(_0x21c20e){var _0x16cc9b=_0x21c20e[_0xaf2d('0x163')](/"(.*?)"/);return _0x16cc9b?_0x16cc9b[0x1]:_0x21c20e;}function extractCalleridNumber(_0x4949bd){var _0x5ad84=_0x4949bd['match'](/<(.*?)>/);return _0x5ad84?_0x5ad84[0x1]:_0x4949bd;}Dialer[_0xaf2d('0xb0')]['actionOriginate']=function(_0x4a9236,_0x382151){var _0x1bbd6b=this;var _0x3d4313=uuid['v4']();this[_0xaf2d('0x27')][_0x3d4313]=new Action(_0x4a9236,_0x382151,_0x3d4313);return new BPromise(function(_0x4fb9f8,_0x4e87a1){if(_[_0xaf2d('0x43')](_0x4a9236)&&typeof _0x4a9236!==_0xaf2d('0x164')){return _0x4e87a1(msgResponse(_0xaf2d('0x165'),'Failure',_0xaf2d('0x166')));}if(_[_0xaf2d('0x43')](_0x382151[_0xaf2d('0x167')]['phone'])||_0x382151[_0xaf2d('0x167')][_0xaf2d('0x168')]===null){return _0x4e87a1(msgResponse('originate',_0xaf2d('0x143'),_0xaf2d('0x169')));}var _0x910d78={'XMD-CALLERID':_0x1bbd6b['actions'][_0x3d4313][_0xaf2d('0x16a')](),'XMD-AGI':_0x4a9236[_0xaf2d('0x10c')]?util[_0xaf2d('0x80')](_0xaf2d('0x16b'),ipAgi,_0x4a9236['dialQueueProject']):_0xaf2d('0x16c'),'XMD-AGIAFTER':_0x4a9236[_0xaf2d('0x111')]?util[_0xaf2d('0x80')](_0xaf2d('0x16b'),ipAgi,_0x4a9236[_0xaf2d('0x111')]):_0xaf2d('0x16c'),'XMD-QUEUE':_0x4a9236['type']===_0xaf2d('0x96')?util[_0xaf2d('0x80')]('\x22%s,%s%s,,,%s\x22',_0x4a9236[_0xaf2d('0x46')],_0x4a9236[_0xaf2d('0x16d')]||'',_0x4a9236[_0xaf2d('0x112')]?'c':'',_0x4a9236['dialQueueTimeout']||0x3):_0xaf2d('0x16c'),'XMD-CONTACTID':_0x382151['ContactId'],'XMD-CDRTYPE':_0xaf2d('0xa'),'CALLERID(all)':_0x1bbd6b[_0xaf2d('0x27')][_0x3d4313][_0xaf2d('0x16a')](),'XMD-AMD':_0x4a9236[_0xaf2d('0xeb')]?_0xaf2d('0x16e'):_0xaf2d('0x16c'),'XMD-DESTINATION':_0xaf2d('0xe0')};if(_0x4a9236[_0xaf2d('0xeb')]){_0x910d78[_0xaf2d('0x16f')]=_0x4a9236[_0xaf2d('0x170')]||0x9c4;_0x910d78['XMD-AMDGREETING']=_0x4a9236['dialAMDGreeting']||0x5dc;_0x910d78[_0xaf2d('0x171')]=_0x4a9236[_0xaf2d('0x172')]||0x320;_0x910d78[_0xaf2d('0x173')]=_0x4a9236[_0xaf2d('0x174')]||0x1388;_0x910d78[_0xaf2d('0x175')]=_0x4a9236[_0xaf2d('0x176')]||0x64;_0x910d78[_0xaf2d('0x177')]=_0x4a9236[_0xaf2d('0x178')]||0x32;_0x910d78[_0xaf2d('0x179')]=_0x4a9236[_0xaf2d('0x17a')]||0x3;_0x910d78[_0xaf2d('0x17b')]=_0x4a9236['dialAMDSilenceThreshold']||0x100;_0x910d78['XMD-AMDMAXIMUMWORDLENGTH']=_0x4a9236['dialAMDMaximumWordLength']||0x1388;}if(_0x4a9236[_0xaf2d('0x56')]==='outbound'){_0x910d78[_0xaf2d('0x17c')]=_0x382151[_0xaf2d('0xd5')];}else{_0x910d78['XMD-CAMPAIGNID']=_0x382151[_0xaf2d('0xfd')];}for(var _0x23aea6 in _0x382151['Contact']){if(typeof _0x382151[_0xaf2d('0x167')][_0x23aea6]!==_0xaf2d('0x9e')){if(isNotNull(_0x382151[_0xaf2d('0x167')][_0x23aea6])&&_0x23aea6!=='id'&&_0x23aea6!==_0xaf2d('0x17d')&&_0x23aea6!==_0xaf2d('0x17e')&&_0x23aea6!==_0xaf2d('0x17f')){_0x910d78[util[_0xaf2d('0x80')](_0xaf2d('0x180'),_0xaf2d('0x181'),_['toUpper'](_0x23aea6))]=_0x382151[_0xaf2d('0x167')][_0x23aea6];}}}var _0x34b837=_0x1bbd6b[_0xaf2d('0xda')](_0x4a9236[_0xaf2d('0x7d')])?getCallerId(_0x4a9236[_0xaf2d('0x7d')][_0xaf2d('0x7f')],_0x4a9236[_0xaf2d('0x62')],_0x4a9236[_0xaf2d('0x182')]>0x0?getCallerIdRandom(_0x4a9236[_0xaf2d('0x63')],_0x4a9236[_0xaf2d('0x182')]):_0x4a9236[_0xaf2d('0x63')]):getCallerId(_[_0xaf2d('0xb1')](_0x4a9236[_0xaf2d('0x13e')])?_0x4a9236[_0xaf2d('0x7d')][_0xaf2d('0x7f')]:_0x4a9236[_0xaf2d('0x13e')][_0xaf2d('0x7f')],_0x4a9236[_0xaf2d('0x62')],_0x4a9236[_0xaf2d('0x182')]>0x0?getCallerIdRandom(_0x4a9236[_0xaf2d('0x63')],_0x4a9236[_0xaf2d('0x182')]):_0x4a9236[_0xaf2d('0x63')]);if(_0x34b837){_0x910d78[_0xaf2d('0x183')]=_0x1bbd6b['actions'][_0x3d4313][_0xaf2d('0x184')]=extractCalleridName(_0x34b837);_0x910d78[_0xaf2d('0x185')]=_0x1bbd6b['actions'][_0x3d4313][_0xaf2d('0x186')]=extractCalleridNumber(_0x34b837);}return ami['Action']({'actionid':_0x3d4313,'action':'originate','channel':_0x1bbd6b['isTrunkReachable'](_0x4a9236['Trunk'])?util[_0xaf2d('0x80')](_0xaf2d('0x187'),_0x4a9236[_0xaf2d('0x7d')][_0xaf2d('0x46')],isNotNull(_0x4a9236[_0xaf2d('0x188')])?_0x4a9236[_0xaf2d('0x188')][_0xaf2d('0x189')]()||'':'',_0x4a9236['dialCutDigit']>0x0?_0x382151[_0xaf2d('0x167')][_0xaf2d('0x168')][_0xaf2d('0x18a')](_0x4a9236[_0xaf2d('0x18b')]):_0x382151[_0xaf2d('0x167')][_0xaf2d('0x168')]):util[_0xaf2d('0x80')](_0xaf2d('0x187'),_[_0xaf2d('0xb1')](_0x4a9236['TrunkBackup'])?_0x4a9236[_0xaf2d('0x7d')][_0xaf2d('0x46')]:_0x4a9236[_0xaf2d('0x13e')][_0xaf2d('0x46')],isNotNull(_0x4a9236[_0xaf2d('0x188')])?_0x4a9236[_0xaf2d('0x188')][_0xaf2d('0x189')]()||'':'',_0x4a9236['dialCutDigit']>0x0?_0x382151[_0xaf2d('0x167')][_0xaf2d('0x168')][_0xaf2d('0x18a')](_0x4a9236['dialCutDigit']):_0x382151['Contact'][_0xaf2d('0x168')]),'callerid':_0x34b837,'Exten':_0xaf2d('0xe0'),'Context':_0xaf2d('0x18c'),'Priority':'1','variable':_0x910d78,'timeout':(_0x4a9236['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x3d4313})[_0xaf2d('0xbc')](function(_0x228977){return _0x4fb9f8(_0x228977);})[_0xaf2d('0xba')](function(_0x3eab74){_0x4a9236['outboundOriginateFailureCallsDay']+=0x1;var _0x5d3122=new History(_0x1bbd6b[_0xaf2d('0x27')][_0x3d4313]);logger[_0xaf2d('0x9b')](util['format'](_0xaf2d('0x18d'),JSON[_0xaf2d('0x51')](_0x3eab74)));_0x5d3122['state']=0xe;_0x5d3122['statedesc']=_0xaf2d('0x18e');_0x5d3122[_0xaf2d('0xac')]=moment()['format'](_0xaf2d('0xfb'));_0x5d3122[_0xaf2d('0x125')]=_0x5d3122[_0xaf2d('0xac')];_0x1bbd6b[_0xaf2d('0xce')](_0x5d3122)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x18f')));_0x1bbd6b[_0xaf2d('0xcc')](_0x5d3122)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x18f')))[_0xaf2d('0x1e')](function(){delete _0x1bbd6b[_0xaf2d('0x27')][_0x3d4313];return _0x4e87a1(msgResponse(_0xaf2d('0x165'),_0xaf2d('0x50'),_0xaf2d('0x190')));});});});};Dialer['prototype'][_0xaf2d('0x191')]=function(_0x48d377){var _0x476b60=this['actions'][_0x48d377[_0xaf2d('0x128')]];if(_0x476b60){delete this['actions'][_0x48d377[_0xaf2d('0x128')]];_0x476b60[_0xaf2d('0x118')]=moment()[_0xaf2d('0x80')](_0xaf2d('0xfb'));var _0x2a4ced=_0x476b60[_0xaf2d('0x56')]==='ivr'?this[_0xaf2d('0x22')][_0x476b60[_0xaf2d('0xb6')]]:this[_0xaf2d('0x21')][_0x476b60['getQueue']()];if(!this[_0xaf2d('0xd8')](_0x48d377[_0xaf2d('0x192')])){this[_0xaf2d('0xb5')](_0x2a4ced);return this[_0xaf2d('0x193')](_0x476b60,_0x2a4ced,_0x48d377)[_0xaf2d('0xba')](loggerCatch('[callProgressDetecting]\x20'));}this[_0xaf2d('0x29')][_0x48d377[_0xaf2d('0xec')]]=_0x476b60;}};Dialer[_0xaf2d('0xb0')]['checkRetriveMax']=function(_0x3a5eee,_0x21cdba,_0x12ce7f){var _0x321e0a=new History(_0x21cdba);if(_0x321e0a[_0xaf2d('0xf0')]+_0x321e0a[_0xaf2d('0xf1')]+_0x321e0a[_0xaf2d('0x102')]+_0x321e0a['countnosuchnumberretry']+_0x321e0a[_0xaf2d('0xf3')]+_0x321e0a[_0xaf2d('0xf4')]+_0x321e0a[_0xaf2d('0xf5')]+_0x321e0a[_0xaf2d('0xf6')]>=_0x12ce7f[_0xaf2d('0xf7')]-0x1){return!![];}switch(_0x3a5eee){case 0x3:if(_0x321e0a[_0xaf2d('0x102')]>=_0x12ce7f['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0xaf2d('0xc2')]({'active':![],'countnoanswerretry':_0x321e0a['countnoanswerretry']+=0x1,'scheduledat':moment()['add'](_0x12ce7f['dialNoAnswerRetryFrequency'],_0xaf2d('0xfa'))[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x321e0a['ContactId'],'ListId':_0x321e0a[_0xaf2d('0xfc')],'VoiceQueueId':_0x321e0a[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x321e0a[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x194')));break;case 0x5:if(_0x321e0a['countbusyretry']>=_0x12ce7f[_0xaf2d('0x195')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x321e0a['countbusyretry']+=0x1,'scheduledat':moment()[_0xaf2d('0xf9')](_0x12ce7f[_0xaf2d('0x196')],_0xaf2d('0xfa'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x321e0a[_0xaf2d('0xd3')],'ListId':_0x321e0a['ListId'],'VoiceQueueId':_0x321e0a[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x321e0a['CampaignId']||undefined})[_0xaf2d('0xba')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x321e0a[_0xaf2d('0xf1')]>=_0x12ce7f[_0xaf2d('0x197')]-0x1){return!![];}this[_0xaf2d('0xc2')]({'active':![],'countcongestionretry':_0x321e0a[_0xaf2d('0xf1')]+=0x1,'scheduledat':moment()[_0xaf2d('0xf9')](_0x12ce7f['dialCongestionRetryFrequency'],_0xaf2d('0xfa'))['format'](_0xaf2d('0xfb')),'ContactId':_0x321e0a[_0xaf2d('0xd3')],'ListId':_0x321e0a[_0xaf2d('0xfc')],'VoiceQueueId':_0x321e0a[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x321e0a[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x198')));break;case 0x0:if(_0x321e0a[_0xaf2d('0xf2')]>=_0x12ce7f[_0xaf2d('0x199')]-0x1){return!![];}else{this[_0xaf2d('0xc2')]({'active':![],'countnosuchnumberretry':_0x321e0a[_0xaf2d('0xf2')]+=0x1,'scheduledat':moment()[_0xaf2d('0xf9')](_0x12ce7f[_0xaf2d('0x19a')],_0xaf2d('0xfa'))[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x321e0a[_0xaf2d('0xd3')],'ListId':_0x321e0a[_0xaf2d('0xfc')],'VoiceQueueId':_0x321e0a['VoiceQueueId']||undefined,'CampaignId':_0x321e0a[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x19b')));}break;case 0xa:if(_0x321e0a['countdropretry']>=_0x12ce7f[_0xaf2d('0x11c')]-0x1){return!![];}this[_0xaf2d('0xc2')]({'active':![],'countdropretry':_0x321e0a['countdropretry']+=0x1,'scheduledat':moment()[_0xaf2d('0xf9')](_0x12ce7f['dialDropRetryFrequency'],'minutes')[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x321e0a['ContactId'],'ListId':_0x321e0a[_0xaf2d('0xfc')],'VoiceQueueId':_0x321e0a['VoiceQueueId']||undefined,'CampaignId':_0x321e0a[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x321e0a[_0xaf2d('0xf4')]>=_0x12ce7f[_0xaf2d('0x122')]-0x1){return!![];}this[_0xaf2d('0xc2')]({'active':![],'countabandonedretry':_0x321e0a[_0xaf2d('0xf4')]+=0x1,'scheduledat':moment()[_0xaf2d('0xf9')](_0x12ce7f[_0xaf2d('0x123')],_0xaf2d('0xfa'))[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x321e0a[_0xaf2d('0xd3')],'ListId':_0x321e0a[_0xaf2d('0xfc')],'VoiceQueueId':_0x321e0a[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x321e0a[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x124')));break;case 0x13:if(_0x321e0a[_0xaf2d('0xf5')]>=_0x12ce7f[_0xaf2d('0x105')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x321e0a[_0xaf2d('0xf5')]+=0x1,'scheduledat':moment()[_0xaf2d('0xf9')](_0x12ce7f[_0xaf2d('0x107')],'minutes')['format'](_0xaf2d('0xfb')),'ContactId':_0x321e0a[_0xaf2d('0xd3')],'ListId':_0x321e0a[_0xaf2d('0xfc')],'VoiceQueueId':_0x321e0a[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x321e0a[_0xaf2d('0xfd')]||undefined})['catch'](loggerCatch(_0xaf2d('0xfe')));break;case 0x14:if(_0x321e0a[_0xaf2d('0xf6')]>=_0x12ce7f[_0xaf2d('0x19c')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x321e0a['countagentrejectretry']+=0x1,'scheduledat':moment()[_0xaf2d('0xf9')](_0x12ce7f['dialAgentRejectRetryFrequency'],_0xaf2d('0xfa'))[_0xaf2d('0x80')](_0xaf2d('0xfb')),'ContactId':_0x321e0a[_0xaf2d('0xd3')],'ListId':_0x321e0a[_0xaf2d('0xfc')],'VoiceQueueId':_0x321e0a[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x321e0a['CampaignId']||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x19d')));break;default:return!![];}};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x193')]=function(_0x3baf41,_0x1a3741,_0x5bcd49){var _0x10603d=this;var _0x3c6a74=new History(_0x3baf41);return new BPromise(function(_0x49a58d,_0x1ee38b){if(_[_0xaf2d('0x43')](_0x1a3741)&&typeof _0x1a3741!=='object'){return _0x1ee38b(msgResponse(_0xaf2d('0x19e'),'Failure',_0xaf2d('0x19f')));}if(_['isUndefined'](_0x5bcd49)&&typeof _0x5bcd49!==_0xaf2d('0x164')){return _0x1ee38b(msgResponse('[callProgressDetecting]',_0xaf2d('0x143'),_0xaf2d('0x1a0')));}switch(_0x5bcd49[_0xaf2d('0x10f')]){case'0':_0x1a3741[_0xaf2d('0x68')]+=0x1;_0x3c6a74['state']=0x0;_0x3c6a74['statedesc']=_0xaf2d('0x1a1');_0x3c6a74[_0xaf2d('0xf2')]+=0x1;_0x3c6a74[_0xaf2d('0xee')]+=0x1;ami[_0xaf2d('0x55')](_0xaf2d('0x1a2'),ut[_0xaf2d('0xe9')](_0x3baf41,_0xaf2d('0x1a3')));_0x10603d['createHistory'](_0x3c6a74)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0xef')));if(_0x10603d[_0xaf2d('0x1a4')](0x0,_0x3baf41,_0x1a3741)){if(_0x3c6a74[_0xaf2d('0xf2')]>=_0x1a3741[_0xaf2d('0x199')]){_0x10603d[_0xaf2d('0x106')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1a5'));}else{_0x10603d['stateGlobal'](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1a5'));}}break;case'3':_0x1a3741['outboundNoAnswerCallsDay']+=0x1;_0x3c6a74[_0xaf2d('0xe3')]=0x3;_0x3c6a74[_0xaf2d('0xe4')]=_0xaf2d('0x1a6');_0x3c6a74['countnoanswerretry']+=0x1;_0x3c6a74[_0xaf2d('0xee')]+=0x1;ami[_0xaf2d('0x55')](_0xaf2d('0x1a7'),ut[_0xaf2d('0xe9')](_0x3baf41,_0xaf2d('0x1a8')));_0x10603d[_0xaf2d('0xce')](_0x3c6a74)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1a9')));if(_0x10603d[_0xaf2d('0x1a4')](0x3,_0x3baf41,_0x1a3741)){if(_0x3c6a74[_0xaf2d('0x102')]>=_0x1a3741[_0xaf2d('0x1aa')]){_0x10603d[_0xaf2d('0x106')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1ab'));}else{_0x10603d['stateGlobal'](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1ab'));}}break;case'5':_0x1a3741[_0xaf2d('0x1ac')]+=0x1;_0x3c6a74[_0xaf2d('0xe3')]=0x5;_0x3c6a74[_0xaf2d('0xe4')]=_0xaf2d('0x1ad');_0x3c6a74['countbusyretry']+=0x1;_0x3c6a74[_0xaf2d('0xee')]+=0x1;ami[_0xaf2d('0x55')](_0xaf2d('0x1ae'),ut[_0xaf2d('0xe9')](_0x3baf41,_0xaf2d('0x1af')));_0x10603d['createHistory'](_0x3c6a74)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1b0')));if(_0x10603d[_0xaf2d('0x1a4')](0x5,_0x3baf41,_0x1a3741)){if(_0x3c6a74['countbusyretry']>=_0x1a3741[_0xaf2d('0x195')]){_0x10603d[_0xaf2d('0x106')](_0x3c6a74,_0x49a58d,_0x1ee38b,'reason\x205\x20busy');}else{_0x10603d[_0xaf2d('0x103')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1b1'));}}break;case'8':_0x1a3741[_0xaf2d('0x1b2')]+=0x1;_0x3c6a74['state']=0x8;_0x3c6a74[_0xaf2d('0xe4')]=_0xaf2d('0x1b3');_0x3c6a74['countcongestionretry']+=0x1;_0x3c6a74[_0xaf2d('0xee')]+=0x1;ami[_0xaf2d('0x55')]('custom:agentcongestion',ut['buildObj'](_0x3baf41,'congestion'));_0x10603d[_0xaf2d('0xce')](_0x3c6a74)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1b4')));if(_0x10603d[_0xaf2d('0x1a4')](0x8,_0x3baf41,_0x1a3741)){if(_0x3c6a74[_0xaf2d('0xf1')]>=_0x1a3741[_0xaf2d('0x197')]){_0x10603d[_0xaf2d('0x106')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1b5'));}else{_0x10603d[_0xaf2d('0x103')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1b5'));}}break;case'11':_0x1a3741[_0xaf2d('0x1b6')]+=0x1;_0x3c6a74[_0xaf2d('0xe3')]=0xb;_0x3c6a74[_0xaf2d('0xe4')]='Abandoned';_0x3c6a74[_0xaf2d('0xf4')]+=0x1;_0x3c6a74[_0xaf2d('0xee')]+=0x1;_0x10603d[_0xaf2d('0xce')](_0x3c6a74)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1b7')));if(_0x10603d[_0xaf2d('0x1a4')](0xb,_0x3baf41,_0x1a3741)){if(_0x3c6a74[_0xaf2d('0xf4')]>=_0x1a3741['dialAbandonedMaxRetry']){_0x10603d[_0xaf2d('0x106')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1b8'));}else{_0x10603d[_0xaf2d('0x103')](_0x3c6a74,_0x49a58d,_0x1ee38b,'reason\x2011\x20abandoned');}}break;case'20':_0x1a3741[_0xaf2d('0x6b')]+=0x1;_0x3c6a74[_0xaf2d('0xe3')]=0x14;_0x3c6a74['statedesc']=_0xaf2d('0x1b9');_0x3c6a74[_0xaf2d('0xf6')]+=0x1;_0x3c6a74[_0xaf2d('0xee')]+=0x1;ami['emit']('custom:agentreject',ut['buildObj'](_0x3baf41,'agentreject'));_0x10603d[_0xaf2d('0xce')](_0x3c6a74)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1ba')));if(_0x10603d[_0xaf2d('0x1a4')](0x14,_0x3baf41,_0x1a3741)){if(_0x3c6a74[_0xaf2d('0xf6')]>=_0x1a3741['dialAgentRejectMaxRetry']){_0x10603d['createStateFinal'](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1bb'));}else{_0x10603d['stateGlobal'](_0x3c6a74,_0x49a58d,_0x1ee38b,_0xaf2d('0x1bb'));}}break;default:_0x1a3741[_0xaf2d('0x6c')]+=0x1;_0x3c6a74[_0xaf2d('0xe3')]=0xc;_0x3c6a74[_0xaf2d('0xe4')]=_0x5bcd49[_0xaf2d('0x10f')];_0x10603d[_0xaf2d('0xce')](_0x3c6a74)[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1bc')));if(_0x10603d[_0xaf2d('0x1a4')](_0x5bcd49['reason'],_0x3baf41,_0x1a3741)){if(_0x3c6a74[_0xaf2d('0xf0')]+_0x3c6a74['countcongestionretry']+_0x3c6a74[_0xaf2d('0x102')]+_0x3c6a74[_0xaf2d('0xf2')]+_0x3c6a74[_0xaf2d('0xf3')]+_0x3c6a74[_0xaf2d('0xf4')]+_0x3c6a74[_0xaf2d('0xf5')]+_0x3c6a74[_0xaf2d('0xf6')]>=_0x1a3741[_0xaf2d('0xf7')]){_0x10603d[_0xaf2d('0x103')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0x5bcd49[_0xaf2d('0x10f')]);}else{_0x10603d[_0xaf2d('0x106')](_0x3c6a74,_0x49a58d,_0x1ee38b,_0x5bcd49[_0xaf2d('0x10f')]);}}}});};Dialer['prototype'][_0xaf2d('0x103')]=function(_0x1fdd70,_0x15301e,_0x533d4a,_0x178e6d){var _0x5f3cda=new Final(_0x1fdd70);_0x5f3cda[_0xaf2d('0xe3')]=0xf;_0x5f3cda['statedesc']=_0xaf2d('0x1bd');this[_0xaf2d('0x106')](_0x5f3cda,_0x15301e,_0x533d4a,_0x178e6d);};Dialer[_0xaf2d('0xb0')]['createStateFinal']=function(_0x126d26,_0x643891,_0x3959f4,_0x58091c){this[_0xaf2d('0xcc')](_0x126d26)[_0xaf2d('0xbc')](function(){return _0x643891(msgResponse(_0xaf2d('0x19e'),'Success',_0x58091c));})['catch'](function(){return _0x3959f4(msgResponse('[moveContactManagedDialer][0]','Failure',_0xaf2d('0x1be')));});};Dialer[_0xaf2d('0xb0')][_0xaf2d('0xc')]=function(_0x3bb5e2){var _0x5af8d9=_0x3bb5e2[_0xaf2d('0x1bf')]/0x64;var _0x51fb9f=_0x3bb5e2[_0xaf2d('0x66')]/(_0x3bb5e2[_0xaf2d('0x66')]+_0x3bb5e2[_0xaf2d('0xe2')]);var _0x240e9c=Math['round'](_0x3bb5e2[_0xaf2d('0x77')]*(_0x3bb5e2[_0xaf2d('0x1c0')]/0x64));var _0x3d493f=Math[_0xaf2d('0x1c1')](_0x3bb5e2[_0xaf2d('0x77')]*(_0x3bb5e2[_0xaf2d('0x1c2')]/0x64));var _0x521027=_0x3bb5e2['available']+_0x3bb5e2[_0xaf2d('0xa7')];var _0xecca0c=Math['floor'](_0x3bb5e2[_0xaf2d('0x8f')]*_0x3bb5e2['erlangAbandonmentRate']*_0x3bb5e2[_0xaf2d('0x74')]*_0x3bb5e2[_0xaf2d('0x75')]);if(_['isUndefined'](_0x3bb5e2['startProgressive'])){if(!_[_0xaf2d('0x43')](_0x3bb5e2[_0xaf2d('0x2b')])){_0x3bb5e2[_0xaf2d('0x2b')]=undefined;loggerPredictive['error'](_0xaf2d('0x1c3'),_0xaf2d('0x1c4'));}if(!_[_0xaf2d('0x43')](_0x3bb5e2[_0xaf2d('0x95')])){loggerPredictive[_0xaf2d('0x9b')](_0xaf2d('0x1c3'),_0xaf2d('0x1c5'));clearInterval(_0x3bb5e2[_0xaf2d('0x95')]);_0x3bb5e2[_0xaf2d('0x95')]=undefined;}_0x3bb5e2[_0xaf2d('0x2c')]=moment()[_0xaf2d('0x80')](_0xaf2d('0xfb'));loggerPredictive[_0xaf2d('0x83')](_0x3bb5e2[_0xaf2d('0x46')],_0xaf2d('0x1c6'),_0x3bb5e2[_0xaf2d('0x2c')]);this[_0xaf2d('0x158')](_0x3bb5e2,0x1);}else if(ifInterval(_0x3bb5e2[_0xaf2d('0x1c7')],_0x3bb5e2[_0xaf2d('0x2c')])){this['handlePower'](_0x3bb5e2,0x1);loggerPredictiveCalls[_0xaf2d('0x83')](_0xaf2d('0x1c8'),_0x3bb5e2[_0xaf2d('0x2c')],_0x3bb5e2[_0xaf2d('0x46')]);_0x3bb5e2['erlangCalls']=0x0;_0x3bb5e2[_0xaf2d('0x73')]=0x0;}else if(_0x5af8d9<_0x51fb9f&&_0x3bb5e2['dialPredictiveOptimization']===_0xaf2d('0x1c9')){freeVariablesPredictive(_0x3bb5e2);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x1ca'),_0xaf2d('0x1cb'),_0x51fb9f,_0xaf2d('0x2c'),_0x3bb5e2[_0xaf2d('0x46')]);}else if(_0xecca0c<_0x3bb5e2[_0xaf2d('0x73')]&&_0x3bb5e2[_0xaf2d('0x1cc')]===_0xaf2d('0x1c9')){freeVariablesPredictive(_0x3bb5e2);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x1cd'),_0xaf2d('0x1ce'),_0xecca0c,_0xaf2d('0x1cf'),_0x3bb5e2[_0xaf2d('0x73')],_0xaf2d('0x2c'),_0x3bb5e2['name']);}else if(!ifInterval(_0x3bb5e2[_0xaf2d('0x1c7')],_0x3bb5e2[_0xaf2d('0x2c')])&&_[_0xaf2d('0x43')](_0x3bb5e2['startPredictive'])&&!_[_0xaf2d('0x43')](_0x3bb5e2[_0xaf2d('0x2c')])){_0x3bb5e2[_0xaf2d('0x2b')]=moment()[_0xaf2d('0x80')](_0xaf2d('0xfb'));loggerPredictive['info'](_0x3bb5e2[_0xaf2d('0x46')],'started\x20in\x20predictive\x20at',_0x3bb5e2[_0xaf2d('0x2b')]);this['averageHandleTime'](_0x3bb5e2['dialPredictiveInterval'])[_0xaf2d('0xbc')](this['getDataPredictive'](_0x3bb5e2))[_0xaf2d('0xbc')](mergeDataErlangB(_0x3bb5e2))[_0xaf2d('0xbc')](this[_0xaf2d('0x1d0')](_0x3bb5e2))['catch'](loggerCatchPredictive(_0xaf2d('0x1d1'),_0x3bb5e2));}else if(!ifInterval(_0x3bb5e2[_0xaf2d('0x1c7')],_0x3bb5e2[_0xaf2d('0x2b')])){_0x3bb5e2['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x3bb5e2[_0xaf2d('0x2b')]=moment()['format'](_0xaf2d('0xfb'));loggerPredictive['info'](_0x3bb5e2['name'],_0xaf2d('0x1d2'),_0x3bb5e2[_0xaf2d('0x2b')]);clearInterval(_0x3bb5e2[_0xaf2d('0x95')]);_0x3bb5e2[_0xaf2d('0x95')]=undefined;this[_0xaf2d('0xbf')](_0x3bb5e2[_0xaf2d('0x1c7')])[_0xaf2d('0xbc')](this[_0xaf2d('0x1d3')](_0x3bb5e2))['then'](mergeDataErlangB(_0x3bb5e2))['then'](this[_0xaf2d('0x1d0')](_0x3bb5e2))[_0xaf2d('0xba')](loggerCatchPredictive(_0xaf2d('0x1d4'),_0x3bb5e2));}else if(_0x3bb5e2[_0xaf2d('0x77')]&&_0x521027<_0x3bb5e2['predictiveIntervalAvailable']-_0x3d493f){freeVariablesPredictive(_0x3bb5e2);loggerPredictive[_0xaf2d('0x83')](_0x3bb5e2[_0xaf2d('0x46')],_0xaf2d('0x1d5'),_0x521027,_0xaf2d('0x1d6'),_0x3bb5e2[_0xaf2d('0x77')],'-',_0x3d493f,'=',_0x3bb5e2[_0xaf2d('0x77')]-_0x3d493f,')');}else if(_0x3bb5e2['predictiveIntervalAvailable']&&_0x521027>_0x3bb5e2['predictiveIntervalAvailable']+_0x240e9c){freeVariablesPredictive(_0x3bb5e2);loggerPredictive[_0xaf2d('0x83')](_0x3bb5e2[_0xaf2d('0x46')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x521027,_0xaf2d('0x1d7'),_0x3bb5e2['predictiveIntervalAvailable'],'+',_0x240e9c,'=',_0x3bb5e2[_0xaf2d('0x77')]+_0x240e9c,')');}};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x1d3')]=function(_0x272719){var _0x43d33b=this;return function(_0x5bc267){return new BPromise(function(_0x4c68da,_0x267845){_[_0xaf2d('0x93')](_0x272719,_0x5bc267[0x0]);if(checkGetDataPredictive(_0x5bc267[0x0])){var _0x4d8d23=_0x272719[_0xaf2d('0x77')]=_0x272719[_0xaf2d('0xa7')]+_0x272719[_0xaf2d('0x57')];var _0x557dd5=_0x272719[_0xaf2d('0x1c7')]*0x3c;var _0x1cb4f8=_0x5bc267[0x0][_0xaf2d('0x6f')]+_0x5bc267[0x0][_0xaf2d('0x6e')];var _0x4871d1=(_0x5bc267[0x0][_0xaf2d('0x6d')]+_0x5bc267[0x0][_0xaf2d('0x71')]+_0x5bc267[0x0][_0xaf2d('0x70')])/_0x5bc267[0x0][_0xaf2d('0x78')];_0x272719['predictiveIntervalHitRate']=_0x4871d1>0x0?_0x4871d1:0x1;switch(_0x272719['dialPredictiveOptimization']){case _0xaf2d('0x1c9'):var _0x13ce0b=_0x272719['dialPredictiveOptimizationPercentage']/0x64;return _0x43d33b[_0xaf2d('0x1d8')](_0x4d8d23,_0x557dd5,_0x1cb4f8,_0x4871d1,_0x13ce0b)[_0xaf2d('0xbc')](function(_0x112754){return _0x4c68da(_0x112754);});case _0xaf2d('0x1d9'):var _0x5b8635=_0x272719[_0xaf2d('0x1bf')]/0x64;return _0x43d33b[_0xaf2d('0x1da')](_0x4d8d23,_0x557dd5,_0x1cb4f8,_0x4871d1,_0x5b8635)[_0xaf2d('0xbc')](function(_0x3a9b0b){return _0x4c68da(_0x3a9b0b);});default:return _0x267845(msgResponse(_0xaf2d('0x1db'),_0xaf2d('0x143'),_0xaf2d('0x1dc')));}}else{return _0x267845(msgResponse('[getDataPredictive]',_0xaf2d('0x143'),'check\x20failure'));}});};};Dialer['prototype'][_0xaf2d('0x1dd')]=function(_0x39ddd5){var _0x49e793=this;return function(_0x255d0b){return new BPromise(function(_0x3c21f7,_0x388879){_[_0xaf2d('0x93')](_0x39ddd5,_0x255d0b[0x0]);if(checkGetDataPredictive(_0x255d0b[0x0])){loggerPredictive['info'](JSON[_0xaf2d('0x51')](_0x255d0b[0x0]));if(_0x39ddd5[_0xaf2d('0x1cc')]===_0xaf2d('0x1c9')){return _0x49e793[_0xaf2d('0xca')](_0x39ddd5['id'])[_0xaf2d('0xbc')](function(_0xeec753){var _0x3ce064=_0x39ddd5['loggedIn']-_0xeec753[0x0][_0xaf2d('0x1de')];var _0x4437d9=_0x39ddd5[_0xaf2d('0x1c7')]*0x3c;var _0x50fec6=_0x255d0b[0x0][_0xaf2d('0x6f')]+_0x255d0b[0x0]['predictiveIntervalAvgHoldtime'];var _0x4fbb0a=(_0x255d0b[0x0][_0xaf2d('0x6d')]+_0x255d0b[0x0][_0xaf2d('0x71')]+_0x255d0b[0x0][_0xaf2d('0x70')])/_0x255d0b[0x0]['predictiveIntervalTotalCalls'];var _0x5e6234=_0x39ddd5[_0xaf2d('0x1bf')]/0x64;_0x39ddd5['predictiveIntervalPauses']=_0xeec753[0x0][_0xaf2d('0x1de')]||0x0;_0x39ddd5[_0xaf2d('0x74')]=_0x4fbb0a>0x0?_0x4fbb0a:0x1;return _0x49e793['abandonmentRate'](_0x3ce064,_0x4437d9,_0x50fec6,_0x4fbb0a,_0x5e6234);})['then'](function(_0x4b9c9c){return _0x3c21f7(_0x4b9c9c);})[_0xaf2d('0xba')](function(_0x50cb92){return _0x388879(msgResponse('[CatchErlangB]',_0xaf2d('0x143'),JSON[_0xaf2d('0x51')](_0x50cb92)));});}if(_0x39ddd5['dialPredictiveOptimization']===_0xaf2d('0x1d9')){return _0x49e793[_0xaf2d('0xca')](_0x39ddd5['id'])[_0xaf2d('0xbc')](function(_0x34cebd){var _0xe2d1a0=_0x39ddd5[_0xaf2d('0x58')]-_0x34cebd[0x0][_0xaf2d('0x1de')];var _0x58dad3=_0x39ddd5[_0xaf2d('0x1c7')]*0x3c;var _0x386aa7=_0x255d0b[0x0]['predictiveIntervalAvgTalktime']+_0x255d0b[0x0][_0xaf2d('0x6e')];var _0x1111ab=(_0x255d0b[0x0][_0xaf2d('0x6d')]+_0x255d0b[0x0][_0xaf2d('0x71')]+_0x255d0b[0x0][_0xaf2d('0x70')])/_0x255d0b[0x0][_0xaf2d('0x78')];var _0x55036b=_0x39ddd5[_0xaf2d('0x1bf')]/0x64;_0x39ddd5[_0xaf2d('0x76')]=_0x34cebd[0x0][_0xaf2d('0x1de')]||0x0;_0x39ddd5['predictiveIntervalHitRate']=_0x1111ab>0x0?_0x1111ab:0x1;return _0x49e793[_0xaf2d('0x1da')](_0xe2d1a0,_0x58dad3,_0x386aa7,_0x1111ab,_0x55036b);})[_0xaf2d('0xbc')](function(_0x2658d4){return _0x3c21f7(_0x2658d4);})[_0xaf2d('0xba')](function(_0x40100b){return _0x388879(msgResponse(_0xaf2d('0x1df'),_0xaf2d('0x143'),JSON['stringify'](_0x40100b)));});}}else{return _0x388879(msgResponse('[getDataPredictive]',_0xaf2d('0x143'),'check\x20failure'));}});};};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x1d0')]=function(_0x439832){var _0x9add21=this;return function(){var _0x161906=0x0;var _0x33421d=Math[_0xaf2d('0x1e0')](_0x439832['erlangCallToSecond']*0x3e8);if(_0x33421d>0x0){_0x33421d=_0x33421d<0x64?0x64:_0x33421d;loggerPredictive[_0xaf2d('0x83')](_0x439832[_0xaf2d('0x46')],'one\x20call\x20every:',_0x33421d,_0xaf2d('0x52'));_0x439832[_0xaf2d('0x95')]=setInterval(function(){_0x9add21['handlePredictive'](_0x439832);loggerPredictiveCalls['info'](_0xaf2d('0x1e1'),_0x161906+=0x1);},_0x33421d);}else{loggerPredictive['info'](_0x439832[_0xaf2d('0x46')],_0xaf2d('0x1e2'));}};};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x1e3')]=function(_0x5e4762,_0x17fe00){var _0x32ecf5=this;return function(_0x1cde88){if(_[_0xaf2d('0x4e')](_0x1cde88)){if(_[_0xaf2d('0xb1')](_0x17fe00[_0xaf2d('0xd4')])||!_0x17fe00[_0xaf2d('0x1e4')]){if(_0x5e4762[_0xaf2d('0x61')]===_0xaf2d('0xb')){_0x5e4762[_0xaf2d('0x130')]=_[_0xaf2d('0x43')](_0x5e4762[_0xaf2d('0x130')])?!![]:_0x5e4762[_0xaf2d('0x130')];var _0x81af8a=uuid['v4']();_0x32ecf5[_0xaf2d('0x27')][_0x81af8a]=new Action(_0x5e4762,_0x17fe00,_0x81af8a);loggerBooked[_0xaf2d('0x83')]('[booked][checkContactBlack]',_0x81af8a,_0xaf2d('0x1e5'),JSON['stringify'](_0x5e4762['queueStatusComplete']),_0xaf2d('0x1e6'),_0x5e4762['name']);if(_0x5e4762[_0xaf2d('0x130')]){_0x5e4762[_0xaf2d('0x130')]=![];_0x32ecf5[_0xaf2d('0x2e')][_0x32ecf5['actions'][_0x81af8a][_0xaf2d('0xb6')]]=[];ami[_0xaf2d('0xb2')]({'actionid':_0x81af8a,'action':'queuestatus','queue':_0x5e4762[_0xaf2d('0x46')]})[_0xaf2d('0xba')](function(){_0x32ecf5[_0xaf2d('0xb5')](_0x5e4762);_0x32ecf5['rescheduleContact']({'active':![],'ContactId':_0x32ecf5[_0xaf2d('0x27')][_0x81af8a][_0xaf2d('0xd3')],'ListId':_0x32ecf5['actions'][_0x81af8a][_0xaf2d('0xfc')],'VoiceQueueId':_0x32ecf5['actions'][_0x81af8a][_0xaf2d('0xd5')]||undefined,'CampaignId':_0x32ecf5[_0xaf2d('0x27')][_0x81af8a][_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1e7')));delete _0x32ecf5[_0xaf2d('0x27')][_0x81af8a];});}else{loggerBooked[_0xaf2d('0x83')](_0xaf2d('0x1e8'),JSON['stringify'](_0x5e4762['queueStatusComplete']),_0xaf2d('0x1e6'),_0x5e4762['name']);_0x32ecf5[_0xaf2d('0xb5')](_0x5e4762);_0x32ecf5[_0xaf2d('0xc2')]({'active':![],'ContactId':_0x32ecf5[_0xaf2d('0x27')][_0x81af8a][_0xaf2d('0xd3')],'ListId':_0x32ecf5['actions'][_0x81af8a][_0xaf2d('0xfc')],'VoiceQueueId':_0x32ecf5['actions'][_0x81af8a]['VoiceQueueId']||undefined,'CampaignId':_0x32ecf5['actions'][_0x81af8a][_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x32ecf5[_0xaf2d('0x27')][_0x81af8a];}}else{return _0x32ecf5['actionOriginate'](_0x5e4762,_0x17fe00);}}else{if(getDiff(_0x17fe00[_0xaf2d('0x1e9')])<_0x5e4762['dialRecallMeTimeout']*0x3c){if(_0x17fe00[_0xaf2d('0x1ea')]&&!_0x17fe00[_0xaf2d('0x1ea')][_0xaf2d('0x1eb')]){_0x32ecf5['preview'][_0xaf2d('0x1ec')](_0x17fe00['id'])['finally'](function(){_0x32ecf5[_0xaf2d('0xb5')](_0x5e4762);});}else{_0x32ecf5[_0xaf2d('0x1ed')]({'active':![]},_0x17fe00['id'],0x1)[_0xaf2d('0x1e')](function(){_0x32ecf5['updateOriginated'](_0x5e4762);});}}else{_0x5e4762[_0xaf2d('0x6a')]+=0x1;_0x32ecf5[_0xaf2d('0xb5')](_0x5e4762);if(_0x5e4762['dialRecallInQueue']){_0x32ecf5[_0xaf2d('0xc2')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x17fe00[_0xaf2d('0xd3')],'ListId':_0x17fe00[_0xaf2d('0xfc')],'VoiceQueueId':_0x17fe00[_0xaf2d('0xd5')]||undefined,'CampaignId':_0x17fe00[_0xaf2d('0xfd')]||undefined})[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1ee')));_0x32ecf5[_0xaf2d('0xce')](createObjHistory(_0x5e4762,_0x17fe00,'RECALLINQUEUE',0x17,_0xaf2d('0x1ef')))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x1f0')));}else{_0x32ecf5[_0xaf2d('0xd2')](createObjHistory(_0x5e4762,_0x17fe00,_0xaf2d('0x1f1'),0x16,'RecallFailedTimeout'),'[Originate][HistoryRecallClose][historyCatch]',_0xaf2d('0x1f2'));}}}}else{_0x5e4762[_0xaf2d('0x1f3')]+=0x1;_0x32ecf5[_0xaf2d('0xd2')](createObjHistory(_0x5e4762,_0x17fe00,_0xaf2d('0x1f4'),0xd,_0xaf2d('0x1f5')),_0xaf2d('0x1f6'),_0xaf2d('0x1f7'));throw _0xaf2d('0x1f8');}};};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x15b')]=function(_0x507926){var _0x575a3e=this;var _0x1966e4=_0x507926[_0xaf2d('0x1f9')]-_0x507926['originated']-_0x507926['temp'];emitCampaignSummary(_0x507926);if(_0x1966e4>0x0){if(_0x1966e4>this[_0xaf2d('0x25')]){_0x1966e4=this[_0xaf2d('0x25')];}_0x507926[_0xaf2d('0xc6')]+=_0x1966e4;this['getContactDialerIvr'](_0x507926['id'],_0x1966e4,_0x507926['dialOrderByScheduledAt'],_0x507926)[_0xaf2d('0xbc')](function(_0xbee7e0){_0x507926[_0xaf2d('0xc6')]-=_0x1966e4;_0x507926[_0xaf2d('0xc6')]=_0x507926[_0xaf2d('0xc6')]>0x0?_0x507926[_0xaf2d('0xc6')]:0x0;if(!checkContactEmpty(_0xbee7e0)){_0x507926[_0xaf2d('0x44')]='AVAILABLE_CONTACTS_FINISHED';logger['info']('[getContactCampaign2][Empty]'+_0x507926[_0xaf2d('0x46')]);}else{_0x507926[_0xaf2d('0x79')]+=_0xbee7e0['length'];_0x507926['message']='RUNNING';for(var _0xa12b89=0x0;_0xa12b89<_0xbee7e0[_0xaf2d('0x9d')];_0xa12b89+=0x1){_0x507926[_0xaf2d('0x1fa')]+=0x1;if(_[_0xaf2d('0xb1')](_0xbee7e0[_0xa12b89])||_[_0xaf2d('0xb1')](_0xbee7e0[_0xa12b89]['Contact'])||_['isNil'](_0xbee7e0[_0xa12b89][_0xaf2d('0x167')][_0xaf2d('0x168')])){_0x575a3e['emptyContact'](_0xaf2d('0x1fb'),_0x507926,_0xbee7e0[_0xa12b89]);}else{_0x575a3e[_0xaf2d('0x1fc')](_[_0xaf2d('0x12e')](_0xbee7e0[_0xa12b89],['CampaignId',_0xaf2d('0x1fd')]))[_0xaf2d('0xbc')](_0x575a3e[_0xaf2d('0x1e3')](_0x507926,_0xbee7e0[_0xa12b89]))[_0xaf2d('0xba')](_0x575a3e[_0xaf2d('0xd0')](_0xaf2d('0x1fe'),_0x507926));}}}})['catch'](loggerGetContactDialer('[getContactCampaign2]',_0x507926,_0x1966e4));}};Dialer['prototype'][_0xaf2d('0x158')]=function(_0x27b7c0,_0x3d09d9){var _0xdb4baa=this;var _0x342776=[];var _0x3cea16=_0x3d09d9>=0x1?_0x3d09d9:0x1;if(_0x27b7c0['dialMethod']===_0xaf2d('0xb')){_0x3cea16=0x1;}var _0x25f588=Math[_0xaf2d('0x1e0')](_0x27b7c0[_0xaf2d('0x57')]*_0x3cea16)-_0x27b7c0[_0xaf2d('0x79')]-_0x27b7c0['temp'];emitVoiceQueueSummary(_0x27b7c0);if(_0x27b7c0[_0xaf2d('0x1ff')]>0x0){var _0x413c4d=_0x27b7c0[_0xaf2d('0x1ff')]-_0x27b7c0['originated']-_0x27b7c0[_0xaf2d('0xa7')]-_0x27b7c0[_0xaf2d('0xc6')]-_0x27b7c0[_0xaf2d('0x59')];if(_0x25f588>_0x413c4d){_0x25f588=_0x413c4d;}}if(_0x25f588>0x0){if(_0x27b7c0[_0xaf2d('0x61')]===_0xaf2d('0xb')){_0x25f588=0x1;}if(_0x25f588>this['maxNumberOriginate']){_0x25f588=this['maxNumberOriginate'];}_0x27b7c0[_0xaf2d('0xc6')]+=_0x25f588;for(var _0x40735a in this['agents']){if(typeof this[_0xaf2d('0x23')][_0x40735a]!==_0xaf2d('0x9e')){if(this[_0xaf2d('0x23')][_0x40735a]['state']===_0xaf2d('0x200')&&this[_0xaf2d('0x23')][_0x40735a][_0xaf2d('0xb3')]===_0xaf2d('0xdc')){_0x342776[_0xaf2d('0x12d')](this[_0xaf2d('0x23')][_0x40735a]['id']);}}}this[_0xaf2d('0xc5')](_0x27b7c0['id'],_0x342776,_0x25f588,_0x27b7c0[_0xaf2d('0x201')],_0x27b7c0)[_0xaf2d('0xbc')](function(_0x1a04f0){_0x27b7c0[_0xaf2d('0xc6')]-=_0x25f588;_0x27b7c0[_0xaf2d('0xc6')]=_0x27b7c0[_0xaf2d('0xc6')]>0x0?_0x27b7c0[_0xaf2d('0xc6')]:0x0;if(!checkContactEmpty(_0x1a04f0)){_0xdb4baa[_0xaf2d('0xb8')](_0x27b7c0)['then'](sendMessageReschedule(_0x27b7c0))[_0xaf2d('0xba')](loggerCatch(_0xaf2d('0x202')));}else{_0x27b7c0['originated']+=_0x1a04f0[_0xaf2d('0x9d')];_0x27b7c0[_0xaf2d('0x44')]=_0x27b7c0[_0xaf2d('0x61')]===_0xaf2d('0xb')?_0xaf2d('0x16e'):'RUNNING';for(var _0x1584a0=0x0;_0x1584a0<_0x1a04f0[_0xaf2d('0x9d')];_0x1584a0+=0x1){if(_[_0xaf2d('0xb1')](_0x1a04f0[_0x1584a0])||_[_0xaf2d('0xb1')](_0x1a04f0[_0x1584a0][_0xaf2d('0x167')])||_['isNil'](_0x1a04f0[_0x1584a0][_0xaf2d('0x167')]['phone'])){_0xdb4baa[_0xaf2d('0xd1')](_0xaf2d('0x1fb'),_0x27b7c0,_0x1a04f0[_0x1584a0]);}else{_0xdb4baa[_0xaf2d('0xbb')](_[_0xaf2d('0x12e')](_0x1a04f0[_0x1584a0],[_0xaf2d('0xd5'),_0xaf2d('0x1fd')]))[_0xaf2d('0xbc')](_0xdb4baa[_0xaf2d('0x1e3')](_0x27b7c0,_0x1a04f0[_0x1584a0]))['catch'](_0xdb4baa[_0xaf2d('0xd0')](_0xaf2d('0x1fb'),_0x27b7c0));}}}})[_0xaf2d('0xba')](loggerGetContactDialer('[getContactDialer2]',_0x27b7c0,_0x25f588));}};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x95')]=function(_0x12ddfa){if(_0x12ddfa['dialLimitQueue']>0x0){var _0x5ec207=_0x12ddfa[_0xaf2d('0x1ff')]-_0x12ddfa[_0xaf2d('0x79')]-_0x12ddfa[_0xaf2d('0xa7')];if(_0x5ec207>0x0){this[_0xaf2d('0x203')](_0x12ddfa);}else{loggerPredictiveCalls[_0xaf2d('0x83')](_0xaf2d('0x204'));}}else{this[_0xaf2d('0x203')](_0x12ddfa);}};Dialer[_0xaf2d('0xb0')]['tryOriginatePredictive']=function(_0x1cbd6e){var _0x38e1bf=this;var _0x2b836c=[];_0x1cbd6e['originated']+=0x1;for(var _0x3b7e02 in this[_0xaf2d('0x23')]){if(typeof this[_0xaf2d('0x23')][_0x3b7e02]!==_0xaf2d('0x9e')){if(this['agents'][_0x3b7e02][_0xaf2d('0xe3')]===_0xaf2d('0x200')&&this[_0xaf2d('0x23')][_0x3b7e02]['status']===_0xaf2d('0xdc')){_0x2b836c['push'](this[_0xaf2d('0x23')][_0x3b7e02]['id']);}}}this[_0xaf2d('0xc5')](_0x1cbd6e['id'],_0x2b836c,0x1,_0x1cbd6e[_0xaf2d('0x201')],_0x1cbd6e)['then'](function(_0x15a2f7){if(!checkContactEmpty(_0x15a2f7)){checkContactLowerLimitOriginate(_0x1cbd6e,0x1,0x0);_0x38e1bf[_0xaf2d('0xb8')](_0x1cbd6e)[_0xaf2d('0xbc')](sendMessageReschedule(_0x1cbd6e))[_0xaf2d('0xba')](loggerCatch('[countReScheduled]\x20'));}else{_0x1cbd6e['message']=_0xaf2d('0x205');if(_['isNil'](_0x15a2f7[0x0])||_[_0xaf2d('0xb1')](_0x15a2f7[0x0][_0xaf2d('0x167')])||_[_0xaf2d('0xb1')](_0x15a2f7[0x0][_0xaf2d('0x167')][_0xaf2d('0x168')])){_0x38e1bf[_0xaf2d('0xd1')](_0xaf2d('0x1fb'),_0x1cbd6e,_0x15a2f7[0x0]);}else{_0x38e1bf['checkIsBlackList'](_[_0xaf2d('0x12e')](_0x15a2f7[0x0],['VoiceQueueId',_0xaf2d('0x1fd')]))[_0xaf2d('0xbc')](_0x38e1bf[_0xaf2d('0x1e3')](_0x1cbd6e,_0x15a2f7[0x0]))[_0xaf2d('0xba')](_0x38e1bf[_0xaf2d('0xd0')]('[actionOriginatePredictive]\x20',_0x1cbd6e));}}})[_0xaf2d('0xba')](loggerGetContactDialer(_0xaf2d('0x206'),_0x1cbd6e,0x1));emitVoiceQueueSummary(_0x1cbd6e);};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x1d8')]=function(_0x1a6507,_0x5d69f9,_0x24b30a,_0x257244,_0x540f9a,_0x27c7e6){loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x207'));loggerPredictive[_0xaf2d('0x83')]('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1a6507);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x208'),_0x5d69f9);loggerPredictive[_0xaf2d('0x83')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x24b30a);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x209'),_0x257244);loggerPredictive['info'](_0xaf2d('0x20a'),_0x540f9a);loggerPredictive['info'](_0xaf2d('0x89'));return new BPromise(function(_0x1023fd,_0x2d6d59){if(_0x1a6507<=0x0||isNaN(_0x1a6507)){return _0x2d6d59(msgResponse(_0xaf2d('0x20b'),_0xaf2d('0x50'),'m\x20=\x20'+_0x1a6507));}if(_0x24b30a<=0x0||isNaN(_0x24b30a)){return _0x2d6d59(msgResponse('[abandonmentRate]',_0xaf2d('0x50'),_0xaf2d('0x20c')+_0x24b30a));}if(_0x257244<=0x0||isNaN(_0x257244)){return _0x2d6d59(msgResponse(_0xaf2d('0x20b'),_0xaf2d('0x50'),_0xaf2d('0x20d')+_0x257244));}if(_0x5d69f9<=0x0||isNaN(_0x5d69f9)){return _0x2d6d59(msgResponse(_0xaf2d('0x20b'),'Error','interval\x20=\x20'+_0x5d69f9));}if(_0x540f9a<=0x0||isNaN(_0x540f9a)){return _0x2d6d59(msgResponse(_0xaf2d('0x20b'),_0xaf2d('0x50'),_0xaf2d('0x20e')+_0x540f9a));}_0x27c7e6=_0x27c7e6||0x0;var _0x2a46ed=0x1/_0x24b30a;var _0x1cdc58=0x0;var _0x48f62c=0x0;var _0x12e6a3=0x0;var _0x43aa40=0x0;for(var _0x5d30a5=0x0;_0x12e6a3<_0x540f9a;_0x5d30a5+=0x1){_0x48f62c=_0x5d30a5/_0x5d69f9;_0x1cdc58=(_0x257244*_0x48f62c+_0x27c7e6)/_0x2a46ed;_0x12e6a3=erlangb(_0x1cdc58,_0x1a6507);_0x43aa40=_0x1cdc58/_0x1a6507*(0x1-erlangb(_0x1cdc58,_0x1a6507));}return _0x1023fd({'erlangCalls':_0x5d30a5,'erlangCallToSecond':_0x5d69f9/_0x5d30a5,'erlangAbandonmentRate':_0x12e6a3,'erlangBusyFactor':_0x43aa40});});};Dialer[_0xaf2d('0xb0')][_0xaf2d('0x1da')]=function(_0x317f70,_0x3103c1,_0x221392,_0x1b79b1,_0x1ec318,_0x3f9f29){loggerPredictive['info']('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x20f'),_0x317f70);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3103c1);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x210'),_0x221392);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x209'),_0x1b79b1);loggerPredictive[_0xaf2d('0x83')](_0xaf2d('0x211'),_0x1ec318);loggerPredictive[_0xaf2d('0x83')]('---------------------------');return new BPromise(function(_0x3035f9,_0x290b26){if(_0x317f70<=0x0||isNaN(_0x317f70)){return _0x290b26(msgResponse(_0xaf2d('0x212'),_0xaf2d('0x50'),_0xaf2d('0x213')+_0x317f70));}if(_0x221392<=0x0||isNaN(_0x221392)){return _0x290b26(msgResponse(_0xaf2d('0x212'),_0xaf2d('0x50'),_0xaf2d('0x20c')+_0x221392));}if(_0x1b79b1<=0x0||isNaN(_0x1b79b1)){return _0x290b26(msgResponse(_0xaf2d('0x212'),_0xaf2d('0x50'),_0xaf2d('0x20d')+_0x1b79b1));}if(_0x3103c1<=0x0||isNaN(_0x3103c1)){return _0x290b26(msgResponse('[busyFactor]',_0xaf2d('0x50'),_0xaf2d('0x214')+_0x3103c1));}if(_0x1ec318<=0x0||isNaN(_0x1ec318)){return _0x290b26(msgResponse(_0xaf2d('0x212'),_0xaf2d('0x50'),'Umin\x20=\x20'+_0x1ec318));}_0x3f9f29=_0x3f9f29||0x0;var _0xf324bb=0x1/_0x221392;var _0x5b4bc6=0x0;var _0x13c6a2=0x0;var _0x5d8fe6=0x0;var _0x58d6a1=0x0;for(var _0x9213f3=0x0;_0x58d6a1<_0x1ec318;_0x9213f3+=0x1){_0x13c6a2=_0x9213f3/_0x3103c1;_0x5b4bc6=(_0x1b79b1*_0x13c6a2+_0x3f9f29)/_0xf324bb;_0x5d8fe6=erlangb(_0x5b4bc6,_0x317f70);_0x58d6a1=_0x5b4bc6/_0x317f70*(0x1-erlangb(_0x5b4bc6,_0x317f70));}return _0x3035f9({'erlangCalls':_0x9213f3,'erlangCallToSecond':_0x3103c1/_0x9213f3,'erlangAbandonmentRate':_0x5d8fe6,'erlangBusyFactor':_0x58d6a1});});};module[_0xaf2d('0x215')]=Dialer;
\ No newline at end of file
+var _0x666d=['outbound','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','originated','erlangCalls','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','campaign:save','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','---------------------------','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','stack','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','inspect','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','isNil','Action','catch','No\x20such\x20channel','updateOriginated','voiceQueues','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','[countReScheduled]\x20','checkIsBlackList','resolve','then','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact]','isSuccess','Success','isTrunkReachable','status','reachable','SIP/%s','unmonitored','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','value','state','statedesc','HangupInAMD','membername','AMD','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','Machine','countmachineretry','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','HANGUP','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countbusyretry','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','outboundUnknownCallsDay','cause-txt','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','channel','actionid','locked','paused','stateinterface','push','pick','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','\x20Intervals\x20is\x20null\x20','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','command','iftime\x20%s,%s','interval','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','progressive','power','handlePower','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','launchHandleIvr','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkDialMethod','[syncQueueSummary]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','createdAt','%s%s','XMD-','toUpper','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropRetryFrequency','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMinThreshold','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','available','dialPredictiveOptimization','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','merge','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','Agent','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','maxNumberOriginate','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','syncQueueSummary','redis','defaults','localhost','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','campaigns','agents','trunks','actions','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','bind','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','\x20NOT\x20Active','INTERVAL_IS_NULL','Interval','Intervals','\x20INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','type'];(function(_0x334771,_0x33918b){var _0x592781=function(_0x421c47){while(--_0x421c47){_0x334771['push'](_0x334771['shift']());}};_0x592781(++_0x33918b);}(_0x666d,0x1d6));var _0xd666=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0x666d[_0x1d24eb];return _0x1dc576;};'use strict';var util=require(_0xd666('0x0'));var _=require(_0xd666('0x1'));var BPromise=require(_0xd666('0x2'));var uuid=require(_0xd666('0x3'));var moment=require(_0xd666('0x4'));var rr=require('rr');var md5=require(_0xd666('0x5'));var Redis=require('ioredis');var ut=require('../preview/util/util');var config=require(_0xd666('0x6'));var logger=require(_0xd666('0x7'))(_0xd666('0x8'));var loggerBooked=require('../../../config/logger')(_0xd666('0x9'));var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require('../../../config/logger')(_0xd666('0xa'));var loggerSyncQueueSummary=require(_0xd666('0x7'))(_0xd666('0xb'));var ami=require('../ami');config[_0xd666('0xc')]=_[_0xd666('0xd')](config[_0xd666('0xc')],{'host':_0xd666('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0xd666('0xf'));var cmHopperBlack=require(_0xd666('0x10'));var voiceQueueRt=require(_0xd666('0x11'));var Action=require(_0xd666('0x12'));var History=require(_0xd666('0x13'));var Final=require(_0xd666('0x14'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0xd666('0x15'));var Hangup=require(_0xd666('0x16'));var ipAgi=process[_0xd666('0x17')][_0xd666('0x18')]||_0xd666('0x19');var strategy={'rrmemory':_0xd666('0x1a'),'roundrobin':_0xd666('0x1b')};var Sequence=function(){};Sequence[_0xd666('0x1c')][_0xd666('0x1d')]=function(_0x3bcc0d){this[_0xd666('0x1e')]=this['tail']?this[_0xd666('0x1e')][_0xd666('0x1f')](_0x3bcc0d):_0x3bcc0d();};function Dialer(_0x43c529,_0x386699){this[_0xd666('0x20')]=new Sequence();this[_0xd666('0x21')]=_0x386699;this['voiceQueues']=_0x43c529['voiceQueues'];this[_0xd666('0x22')]=_0x43c529[_0xd666('0x22')];this['agents']=_0x43c529[_0xd666('0x23')];this[_0xd666('0x24')]=_0x43c529['trunks'];this['maxNumberOriginate']=config['maxNumberOriginate']||0x2;this['channels']={};this[_0xd666('0x25')]={};this['contactsId']={};this[_0xd666('0x26')]={};this[_0xd666('0x27')]={};this[_0xd666('0x28')]={};this[_0xd666('0x29')]={};this[_0xd666('0x2a')]={};this[_0xd666('0x2b')]={};this[_0xd666('0x2c')]={};ami['on'](_0xd666('0x2d'),this[_0xd666('0x2e')]['bind'](this));ami['on'](_0xd666('0x2f'),this[_0xd666('0x30')]['bind'](this));ami['on'](_0xd666('0x31'),this[_0xd666('0x32')][_0xd666('0x33')](this));ami['on'](_0xd666('0x34'),this[_0xd666('0x35')][_0xd666('0x33')](this));ami['on'](_0xd666('0x36'),this[_0xd666('0xb')][_0xd666('0x33')](this));ami['on'](_0xd666('0x37'),this[_0xd666('0x38')]['bind'](this));ami['on']('newexten',this[_0xd666('0x39')][_0xd666('0x33')](this));ami['on'](_0xd666('0x3a'),this[_0xd666('0x3b')][_0xd666('0x33')](this));ami['on'](_0xd666('0x3c'),this[_0xd666('0x3d')][_0xd666('0x33')](this));ami['on'](_0xd666('0x3e'),this[_0xd666('0x3f')][_0xd666('0x33')](this));this[_0xd666('0x40')]();this[_0xd666('0x41')]();}function isNotNull(_0x40a2a1){return _0x40a2a1!==null&&!_[_0xd666('0x42')](_0x40a2a1);}function checkIsLoggedIn(_0x4ef3d3,_0xfc6c1d){return function(){if(_0xfc6c1d<=0x0){_0x4ef3d3['message']=_0xd666('0x43');throw _0x4ef3d3[_0xd666('0x44')]+_0xd666('0x45');}};}function isActive(_0x11694e){return _0x11694e;}function checkIsActive(_0x1ff78c,_0x58700e){return function(){if(!isActive(_0x58700e)){_0x1ff78c[_0xd666('0x46')]=_0xd666('0x47');throw _0x1ff78c[_0xd666('0x44')]+_0xd666('0x48');}};}function checkInterval(_0x2b65ef){return function(){if(!isNotNull(_0x2b65ef['Interval'])){_0x2b65ef['message']=_0xd666('0x49');throw _0x2b65ef[_0xd666('0x44')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x2b65ef[_0xd666('0x4a')][_0xd666('0x4b')])){_0x2b65ef[_0xd666('0x46')]=_0xd666('0x49');throw _0x2b65ef[_0xd666('0x44')]+_0xd666('0x4c');}if(!isNotNull(_[_0xd666('0x4d')](_0x2b65ef[_0xd666('0x4a')][_0xd666('0x4b')]))){_0x2b65ef[_0xd666('0x46')]=_0xd666('0x49');throw _0x2b65ef[_0xd666('0x44')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x44d103,_0x273239,_0x6059a){return{'action':_0x44d103,'response':_0x273239,'message':_0x6059a,'stack':_0x6059a};}function myreject(_0x4e4232){return function(_0x11c3a0){return _0x4e4232(msgResponse(_0xd666('0x4e'),_0xd666('0x4f'),JSON[_0xd666('0x50')](_0x11c3a0)));};}function getSeconds(_0xb0abd3,_0x403936){var _0x4441c8=moment(_0xb0abd3)[_0xd666('0x51')](0x0);var _0xf218d4=moment(_0x403936)[_0xd666('0x51')](0x0);return _0x4441c8[_0xd666('0x52')](_0xf218d4,'seconds');}function emit(_0x2da6ec,_0x3c1cec,_0x333c93){io['to'](_0x2da6ec)[_0xd666('0x53')](_0x3c1cec,_0x333c93);}function emitVoiceQueueSummary(_0x48214f){if(_0x48214f[_0xd666('0x54')]===_0xd666('0x55')){var _0x2a5685={'id':_0x48214f['id'],'name':_0x48214f[_0xd666('0x44')],'strategy':_0x48214f[_0xd666('0x56')],'answered':_0x48214f[_0xd666('0x57')],'available':_0x48214f['available'],'loggedIn':_0x48214f[_0xd666('0x58')],'pTalking':_0x48214f[_0xd666('0x59')],'sumBillable':_0x48214f[_0xd666('0x5a')],'sumDuration':_0x48214f[_0xd666('0x5b')],'sumHoldTime':_0x48214f['sumHoldTime']||0x0,'talking':_0x48214f[_0xd666('0x5c')],'total':_0x48214f[_0xd666('0x5d')],'type':_0x48214f[_0xd666('0x54')],'unmanaged':_0x48214f['unmanaged'],'abandoned':_0x48214f[_0xd666('0x5e')],'waiting':_0x48214f[_0xd666('0x5f')],'loggedInDb':_0x48214f[_0xd666('0x60')],'dialActive':_0x48214f[_0xd666('0x61')],'dialMethod':_0x48214f[_0xd666('0x62')],'dialOriginateCallerIdName':_0x48214f['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x48214f[_0xd666('0x63')],'dialOriginateTimeout':_0x48214f[_0xd666('0x64')],'dialPrefix':_0x48214f[_0xd666('0x65')],'outboundAnswerAgiCallsDay':_0x48214f[_0xd666('0x66')],'outboundAnswerCallsDay':_0x48214f[_0xd666('0x67')],'outboundBlacklistCallsDay':_0x48214f['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x48214f[_0xd666('0x68')],'outboundCongestionCallsDay':_0x48214f[_0xd666('0x69')],'outboundDropCallsDayACS':_0x48214f[_0xd666('0x6a')],'outboundDropCallsDayCallersExit':_0x48214f[_0xd666('0x6b')],'outboundDropCallsDayTimeout':_0x48214f[_0xd666('0x6c')],'outboundNoAnswerCallsDay':_0x48214f[_0xd666('0x6d')],'outboundNoSuchCallsDay':_0x48214f[_0xd666('0x6e')],'outboundOriginateFailureCallsDay':_0x48214f[_0xd666('0x6f')],'outboundReCallsDay':_0x48214f[_0xd666('0x70')],'outboundRejectCallsDay':_0x48214f['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x48214f['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x48214f['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x48214f[_0xd666('0x71')],'predictiveIntervalAvgTalktime':_0x48214f[_0xd666('0x72')],'predictiveIntervalDroppedCallsCallersExit':_0x48214f['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x48214f[_0xd666('0x73')],'predictiveIntervalErlangCalls':_0x48214f['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x48214f['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x48214f['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x48214f[_0xd666('0x74')],'predictiveIntervalPauses':_0x48214f['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x48214f[_0xd666('0x75')],'predictiveIntervalTotalCalls':_0x48214f['predictiveIntervalTotalCalls'],'message':_0x48214f['message'],'originated':_0x48214f[_0xd666('0x76')],'erlangCalls':_0x48214f[_0xd666('0x77')],'erlangCallToSecond':_0x48214f['erlangCallToSecond'],'erlangAbandonmentRate':_0x48214f['erlangAbandonmentRate'],'erlangBusyFactor':_0x48214f[_0xd666('0x78')],'startPredictive':_0x48214f[_0xd666('0x28')],'startProgressive':_0x48214f[_0xd666('0x29')]};if(_0x48214f[_0xd666('0x79')]){_0x2a5685['Trunk']={'id':_0x48214f[_0xd666('0x79')]['id'],'name':_0x48214f[_0xd666('0x79')][_0xd666('0x44')],'active':_0x48214f[_0xd666('0x79')][_0xd666('0x7a')],'callerid':_0x48214f[_0xd666('0x79')][_0xd666('0x7b')]};}if(_0x48214f[_0xd666('0x4a')]){_0x2a5685['Interval']={'id':_0x48214f['Interval']['id'],'name':_0x48214f['Interval'][_0xd666('0x44')]};}var _0x56bd22=md5(JSON[_0xd666('0x50')](_0x2a5685));if(_0x48214f[_0xd666('0x5')]!==_0x56bd22){_0x48214f[_0xd666('0x5')]=_0x56bd22;emit(util[_0xd666('0x7c')](_0xd666('0x7d'),_0x2a5685[_0xd666('0x44')]),_0xd666('0x7e'),_0x2a5685);}}}function emitCampaignSummary(_0x194e42){if(_0x194e42[_0xd666('0x54')]===_0xd666('0x7f')){emit(util[_0xd666('0x7c')](_0xd666('0x80'),_0x194e42[_0xd666('0x44')]),_0xd666('0x81'),_0x194e42);}}function checkGetDataPredictive(_0x5f20bc){if(isNotNull(_0x5f20bc)&&!_['isEmpty'](_0x5f20bc)){loggerPredictive[_0xd666('0x82')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xd666('0x82')](_0xd666('0x83'),_0x5f20bc[_0xd666('0x84')]);loggerPredictive[_0xd666('0x82')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5f20bc[_0xd666('0x85')]);loggerPredictive['info']('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5f20bc['predictiveIntervalDroppedCallsTimeout']);loggerPredictive['info'](_0xd666('0x86'),_0x5f20bc[_0xd666('0x87')]);loggerPredictive['info'](_0xd666('0x88'),_0x5f20bc[_0xd666('0x71')]);loggerPredictive[_0xd666('0x82')](_0xd666('0x89'),_0x5f20bc[_0xd666('0x72')]);loggerPredictive['info']('---------------------------');if(_0x5f20bc[_0xd666('0x84')]>0x0){if(!_[_0xd666('0x42')](_0x5f20bc[_0xd666('0x72')])&&_0x5f20bc[_0xd666('0x72')]>0x0){return!![];}loggerPredictive[_0xd666('0x82')](_0xd666('0x8a'));if(!_[_0xd666('0x42')](_0x5f20bc[_0xd666('0x71')])&&_0x5f20bc[_0xd666('0x71')]>0x0){return!![];}loggerPredictive[_0xd666('0x82')](_0xd666('0x8b'));}else{loggerPredictive['info'](_0xd666('0x8c'));}}else{loggerPredictive['info'](_0xd666('0x8d'));}return![];}function mergeDataErlangB(_0x3eaac8){return function(_0x489ba1){loggerPredictive['info'](_0xd666('0x8e'));loggerPredictive['info'](_0xd666('0x8f'),_0x489ba1[_0xd666('0x77')]);loggerPredictive[_0xd666('0x82')](_0xd666('0x90'),_0x489ba1[_0xd666('0x91')]);loggerPredictive[_0xd666('0x82')](_0xd666('0x92'),_0x489ba1[_0xd666('0x93')]);loggerPredictive[_0xd666('0x82')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x489ba1[_0xd666('0x78')]);loggerPredictive[_0xd666('0x82')](_0xd666('0x92'),_0x489ba1[_0xd666('0x93')]);loggerPredictive[_0xd666('0x82')](_0xd666('0x94'));_['merge'](_0x3eaac8,_0x489ba1);};}function getDiff(_0x303db3){var _0x44fef3=moment()['milliseconds'](0x0);var _0x978a49=moment(_0x303db3)[_0xd666('0x51')](0x0);return _0x44fef3[_0xd666('0x52')](_0x978a49,'seconds');}function ifInterval(_0x3f8e69,_0x3b25f9){if(_['isUndefined'](_0x3b25f9)){return![];}return getDiff(_0x3b25f9)<_0x3f8e69*0x3c;}function freeVariablesPredictive(_0x31e514){if(isNotNull(_0x31e514)){if(!_['isUndefined'](_0x31e514[_0xd666('0x29')])){_0x31e514['startProgressive']=undefined;loggerPredictive[_0xd666('0x82')](_0x31e514[_0xd666('0x44')],_0xd666('0x95'));}if(!_[_0xd666('0x42')](_0x31e514[_0xd666('0x28')])){_0x31e514[_0xd666('0x28')]=undefined;loggerPredictive[_0xd666('0x82')](_0x31e514[_0xd666('0x44')],_0xd666('0x96'));}if(!_[_0xd666('0x42')](_0x31e514[_0xd666('0x97')])){clearInterval(_0x31e514['handlePredictive']);_0x31e514[_0xd666('0x97')]=undefined;loggerPredictive[_0xd666('0x82')](_0x31e514['name'],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x17f08e,_0x1267fe){if(_0x1267fe===0x0){return 0x0;}var _0x4a4801=0x1;for(var _0x5321bb=0x1;_0x5321bb<=_0x1267fe;_0x5321bb+=0x1){_0x4a4801=0x1+_0x4a4801*_0x5321bb/_0x17f08e;}return 0x1/_0x4a4801;}function isVoiceQueueOutbound(_0x1363e6){return _0x1363e6===_0xd666('0x55');}function isNotPreview(_0x26e1ef){return _0x26e1ef!==_0xd666('0x21');}function isCampaignIvr(_0xfbaa39){return _0xfbaa39===_0xd666('0x7f');}function getCallerId(_0x2338bd,_0x4f0f35,_0x5a241a){if(!_['isUndefined'](_0x5a241a)&&typeof _0x5a241a===_0xd666('0x98')&&!_['isEmpty'](_0x5a241a)){if(!_[_0xd666('0x42')](_0x4f0f35)&&typeof _0x4f0f35===_0xd666('0x98')&&!_['isEmpty'](_0x4f0f35)){return util['format'](_0xd666('0x99'),_0x4f0f35,_0x5a241a);}return util[_0xd666('0x7c')]('\x22%s\x22\x20<%s>',_0x5a241a,_0x5a241a);}if(!_[_0xd666('0x42')](_0x2338bd)&&typeof _0x2338bd==='string'&&!_[_0xd666('0x4d')](_0x2338bd)){return _0x2338bd;}return _0xd666('0x9a');}function loggerCatchQueueSummary(_0x402575,_0x5f2e92){return function(_0x2ff289){freeVariablesPredictive(_0x5f2e92);emitVoiceQueueSummary(_0x5f2e92);emitCampaignSummary(_0x5f2e92);loggerSyncQueueSummary[_0xd666('0x9b')](_0x402575,util['inspect'](_0x2ff289,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x6fe261,_0x2ca12a){return function(_0x5239be){loggerPredictive[_0xd666('0x9b')](_0x2ca12a[_0xd666('0x44')],_0x6fe261);loggerPredictive[_0xd666('0x9b')](_0x5239be[_0xd666('0x9c')]);freeVariablesPredictive(_0x2ca12a);};}function loggerCatch(_0x218e1f){return function(_0x68ba6b){logger[_0xd666('0x9b')](_0x218e1f,util['inspect'](_0x68ba6b,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x303cf7){return _0x303cf7&&!_[_0xd666('0x42')](_0x303cf7)&&_0x303cf7[_0xd666('0x9d')]>0x0;}function decremetOriginate(_0x321039){if(!_[_0xd666('0x42')](_0x321039)&&_0x321039!==null){if(typeof _0x321039[_0xd666('0x76')]!==_0xd666('0x9e')){if(_0x321039[_0xd666('0x76')]>0x0){_0x321039[_0xd666('0x76')]-=0x1;}else{logger[_0xd666('0x9b')](_0xd666('0x9f'));}}}else{logger['error'](_0xd666('0xa0'));}}function checkContactLowerLimitOriginate(_0x551c45,_0x30353b,_0x345b0a){if(_0x30353b>_0x345b0a){for(var _0x5e4dd1=0x0;_0x5e4dd1<_0x30353b-_0x345b0a;_0x5e4dd1+=0x1){decremetOriginate(_0x551c45);}}}function loggerGetContactDialer(_0x3b03bc,_0x405bdf,_0x40064c){return function(_0x420ed3){checkContactLowerLimitOriginate(_0x405bdf,_0x40064c,0x0);logger[_0xd666('0x9b')](_0x3b03bc,util[_0xd666('0xa1')](_0x420ed3,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x40e26){return function(_0x13b1c6){if(isNotNull(_0x13b1c6)&&isNotNull(_0x13b1c6[0x0])){if(_0x13b1c6[0x0][_0xd666('0xa2')]>0x0){_0x40e26[_0xd666('0x46')]=_0xd666('0xa3');logger[_0xd666('0x82')](_0xd666('0xa4')+_0x40e26['name'],_0x13b1c6[0x0][_0xd666('0xa2')],_0xd666('0xa5'));}else{_0x40e26[_0xd666('0x46')]=_0xd666('0xa6');logger[_0xd666('0x82')](_0xd666('0xa7')+_0x40e26[_0xd666('0x44')]);}}};}function notSendMessagesQueue(_0x349e1c){if(_0x349e1c[_0xd666('0xa8')]){freeVariablesPredictive(_0x349e1c);if(_0x349e1c[_0xd666('0x76')]===0x0&&_0x349e1c[_0xd666('0x5c')]===0x0&&_0x349e1c[_0xd666('0x5f')]===0x0&&(_0x349e1c[_0xd666('0x59')]||0x0)===0x0){_0x349e1c[_0xd666('0xa8')]=![];_0x349e1c['available']=0x0;_0x349e1c['message']='NOT_ACTIVE';loggerSyncQueueSummary['error'](_0xd666('0xa9'),_0x349e1c['name'],_0xd666('0xaa'));}else{_0x349e1c[_0xd666('0x46')]=_0xd666('0xab');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x349e1c[_0xd666('0x44')],_0xd666('0xac'));}emitVoiceQueueSummary(_0x349e1c);}}function notSendMessagesCampaign(_0x3fcdc9){if(_0x3fcdc9['sendMessageOneNotActive']){if(_0x3fcdc9['originated']===0x0){_0x3fcdc9[_0xd666('0xa8')]=![];_0x3fcdc9['message']=_0xd666('0x47');loggerSyncQueueSummary[_0xd666('0x9b')](_0xd666('0xad'),_0x3fcdc9[_0xd666('0x44')],_0xd666('0xaa'));}else{_0x3fcdc9[_0xd666('0x46')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xd666('0x9b')](_0xd666('0xad'),_0x3fcdc9[_0xd666('0x44')],_0xd666('0xac'));}emitCampaignSummary(_0x3fcdc9);}}function createObjHistory(_0x2bfdf8,_0xc11355,_0xe4d4d4,_0x440504,_0x29a2ca){_0x2bfdf8[_0xd666('0x46')]=_0xe4d4d4;var _0x2fda34=new Action(_0x2bfdf8,_0xc11355);var _0x515e5d=new History(_0x2fda34);_0x515e5d['state']=_0x440504;_0x515e5d['statedesc']=_0x29a2ca;_0x515e5d[_0xd666('0xae')]=_0x2fda34[_0xd666('0xaf')];return _0x515e5d;}Dialer[_0xd666('0x1c')]['loopClearZombieChannels']=function(){var _0x2fa70a=this;setInterval(function(){_0x2fa70a[_0xd666('0xb0')](_0x2fa70a[_0xd666('0x26')],_0xd666('0xb1'));_0x2fa70a[_0xd666('0xb0')](_0x2fa70a[_0xd666('0x25')],_0xd666('0xb2'));},0x32c8);};Dialer['prototype'][_0xd666('0xb0')]=function(_0x52847a,_0x5cf1ab){var _0xddb27=this;for(var _0x158f13 in _0x52847a){if(typeof _0x52847a[_0x158f13]!==_0xd666('0x9e')){this['sequence'][_0xd666('0x1d')](function(){if(!_[_0xd666('0xb3')](_0x52847a[_0x158f13])){return ami[_0xd666('0xb4')]({'action':'status','channel':_0x52847a[_0x158f13]['channel']})[_0xd666('0xb5')](function(_0x4f1da7){if(_0x4f1da7[_0xd666('0x46')]===_0xd666('0xb6')){setTimeout(function(){if(_0x52847a[_0x158f13]&&_0x52847a[_0x158f13][_0xd666('0x54')]!==_0xd666('0x7f')){_0xddb27[_0xd666('0xb7')](_0xddb27[_0xd666('0xb8')][_0x52847a[_0x158f13][_0xd666('0xb9')]]);logger[_0xd666('0x9b')](_0xd666('0xba'),_0x5cf1ab,_0x158f13,_0x52847a[_0x158f13]['queue']);delete _0x52847a[_0x158f13];}if(_0x52847a[_0x158f13]&&_0x52847a[_0x158f13][_0xd666('0x54')]===_0xd666('0x7f')){_0xddb27[_0xd666('0xb7')](_0xddb27['campaigns'][_0x52847a[_0x158f13][_0xd666('0xb9')]]);logger[_0xd666('0x9b')](_0xd666('0xbb'),_0x5cf1ab,_0x158f13,_0x52847a[_0x158f13][_0xd666('0xb9')]);delete _0x52847a[_0x158f13];}},0x2328);}});}});}}};Dialer[_0xd666('0x1c')][_0xd666('0xbc')]=function(_0x5e86ab){return BPromise['resolve']()['then'](cmHopper[_0xd666('0xbc')](_0x5e86ab))[_0xd666('0xb5')](loggerCatch(_0xd666('0xbd')));};Dialer['prototype'][_0xd666('0xbe')]=function(_0xce2e40){return BPromise[_0xd666('0xbf')]()[_0xd666('0xc0')](cmHopperBlack[_0xd666('0xbe')](_0xce2e40))['catch'](loggerCatch(_0xd666('0xc1')));};Dialer[_0xd666('0x1c')][_0xd666('0xc2')]=function(_0x50f8ed){return BPromise['resolve']()[_0xd666('0xc0')](cmHopperBlack[_0xd666('0xc2')](_0x50f8ed))[_0xd666('0xb5')](loggerCatch(_0xd666('0xc3')));};Dialer[_0xd666('0x1c')][_0xd666('0xc4')]=function(_0x4cab4a){return BPromise[_0xd666('0xbf')]()['then'](cmHopperHistory[_0xd666('0xc5')](_0x4cab4a))[_0xd666('0xb5')](loggerCatch(_0xd666('0xc6')));};Dialer[_0xd666('0x1c')][_0xd666('0xc7')]=function(_0x83491c){return BPromise[_0xd666('0xbf')]()['then'](cmHopper[_0xd666('0xc7')](_0x83491c))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0xd666('0x1c')][_0xd666('0xc8')]=function(_0x315877,_0x59472c,_0x2561bc){return BPromise[_0xd666('0xbf')]()['then'](cmHopper[_0xd666('0xc8')](_0x315877,_0x59472c,_0x2561bc))['catch'](loggerCatch(_0xd666('0xc9')));};Dialer[_0xd666('0x1c')][_0xd666('0xca')]=function(_0x3ac9a7,_0x508edf,_0x1740f5,_0x4379c8,_0x65e54a){return BPromise['resolve']()['then'](cmHopper[_0xd666('0xca')](_0x3ac9a7,_0x508edf,_0x1740f5,_0x4379c8))['catch'](function(_0x3d2530){_0x65e54a[_0xd666('0xcb')]-=_0x1740f5;_0x65e54a[_0xd666('0xcb')]=_0x65e54a[_0xd666('0xcb')]>0x0?_0x65e54a['temp']:0x0;loggerCatch(_0xd666('0xcc'))(_0x3d2530);});};Dialer[_0xd666('0x1c')][_0xd666('0xcd')]=function(_0x325453,_0xe1732b,_0x326e80,_0x31e841){return BPromise[_0xd666('0xbf')]()[_0xd666('0xc0')](cmHopper[_0xd666('0xcd')](_0x325453,_0xe1732b,_0x326e80))['catch'](function(_0x3eb0de){_0x31e841[_0xd666('0xcb')]-=_0xe1732b;_0x31e841['temp']=_0x31e841[_0xd666('0xcb')]>0x0?_0x31e841[_0xd666('0xcb')]:0x0;loggerCatch(_0xd666('0xce'))(_0x3eb0de);});};Dialer[_0xd666('0x1c')][_0xd666('0xcf')]=function(_0x4e7c61){return BPromise[_0xd666('0xbf')]()['then'](voiceQueueRt[_0xd666('0xcf')](_0x4e7c61))[_0xd666('0xb5')](loggerCatch(_0xd666('0xd0')));};Dialer[_0xd666('0x1c')][_0xd666('0xd1')]=function(_0x41a6cf){return BPromise[_0xd666('0xbf')]()[_0xd666('0xc0')](cmHopper['moveContactManagedDialer'](_0x41a6cf))['catch'](loggerCatch(_0xd666('0xd2')));};Dialer['prototype'][_0xd666('0xd3')]=function(_0x4739e1){return BPromise[_0xd666('0xbf')]()[_0xd666('0xc0')](cmHopperHistory['createHistory'](_0x4739e1))['catch'](loggerCatch(_0xd666('0xd4')));};Dialer[_0xd666('0x1c')][_0xd666('0xb7')]=function(_0x572554){if(!_[_0xd666('0x42')](_0x572554)&&_0x572554!==null){if(typeof _0x572554[_0xd666('0x76')]!==_0xd666('0x9e')){if(_0x572554['originated']>0x0){_0x572554[_0xd666('0x76')]-=0x1;}else{logger['error'](_0xd666('0xd5'));}}}else{logger[_0xd666('0x9b')](_0xd666('0xd6'));}};Dialer[_0xd666('0x1c')][_0xd666('0xd7')]=function(_0xcd509,_0x45d84e){var _0xdf3df6=this;return function(_0x2d66fa){_0xdf3df6['updateOriginated'](_0x45d84e);logger[_0xd666('0x9b')](_0xcd509,util[_0xd666('0xa1')](_0x2d66fa,{'showHidden':![],'depth':null}));};};Dialer[_0xd666('0x1c')][_0xd666('0xd8')]=function(_0x13d3db,_0x51312b,_0x1b902f){var _0x4df27f={'state':0x19,'statedesc':_0xd666('0xd9')};this[_0xd666('0xb7')](_0x51312b);this[_0xd666('0xda')](_['merge'](_0x4df27f,_['pick'](_0x1b902f,[_0xd666('0xdb'),_0xd666('0xdc'),_0xd666('0xdd'),_0xd666('0xde'),_0xd666('0xdf')])),'[emptyContact][createHistory]',_0xd666('0xe0'));logger[_0xd666('0x9b')](_0x13d3db);};Dialer[_0xd666('0x1c')][_0xd666('0xe1')]=function(_0x232fc8){return _0x232fc8===_0xd666('0xe2');};Dialer[_0xd666('0x1c')][_0xd666('0xe3')]=function(_0x2eb73e){return!_[_0xd666('0x42')](_0x2eb73e)&&_0x2eb73e&&!_[_0xd666('0x42')](_0x2eb73e['name'])&&!_[_0xd666('0x42')](_0x2eb73e[_0xd666('0x7a')])&&_0x2eb73e[_0xd666('0x7a')]&&(this[_0xd666('0x24')][util[_0xd666('0x7c')]('SIP/%s',_0x2eb73e[_0xd666('0x44')])][_0xd666('0xe4')]===_0xd666('0xe5')||this[_0xd666('0x24')][util[_0xd666('0x7c')](_0xd666('0xe6'),_0x2eb73e[_0xd666('0x44')])][_0xd666('0xe4')]===_0xd666('0xe7'));};Dialer[_0xd666('0x1c')][_0xd666('0xda')]=function(_0x22e6b9,_0x2b2be6,_0xfc5e7f){this[_0xd666('0xd3')](_0x22e6b9)[_0xd666('0xb5')](loggerCatch(_0x2b2be6));this['moveContactManagedDialer'](_0x22e6b9)[_0xd666('0xb5')](loggerCatch(_0xfc5e7f));};Dialer[_0xd666('0x1c')][_0xd666('0x3b')]=function(_0x57b21c){var _0x3635c5=this['uniqueId'][_0x57b21c[_0xd666('0xe8')]];var _0x254f12;if(!_['isNil'](_0x57b21c)&&!_[_0xd666('0xb3')](_0x57b21c[_0xd666('0xe9')])&&!_[_0xd666('0xb3')](_0x57b21c[_0xd666('0xe9')][_0xd666('0xea')])&&_0x57b21c[_0xd666('0xeb')]===_0xd666('0xec')&&_0x3635c5){if(_0x3635c5[_0xd666('0x54')]!==_0xd666('0x7f')&&this['voiceQueues'][_0x3635c5[_0xd666('0xb9')]]['dialAMDActive']&&_0x57b21c[_0xd666('0xed')]==='HANGUP'){delete this[_0xd666('0x26')][_0x57b21c['uniqueid']];this[_0xd666('0xb7')](this['voiceQueues'][_0x3635c5[_0xd666('0xb9')]]);this[_0xd666('0xb8')][_0x3635c5[_0xd666('0xb9')]]['outboundAnswerCallsDay']+=0x1;this['voiceQueues'][_0x3635c5['queue']][_0xd666('0x66')]+=0x1;_0x254f12=new Hangup(_0x3635c5,_0x57b21c);_0x254f12[_0xd666('0xee')]=0x12;_0x254f12[_0xd666('0xef')]=_0xd666('0xf0');_0x254f12[_0xd666('0xf1')]=_0xd666('0xf2');ami[_0xd666('0x53')]('custom:amd',ut[_0xd666('0xf3')](_0x254f12,_0xd666('0xf4')));this[_0xd666('0xda')](_0x254f12,_0xd666('0xf5'),_0xd666('0xf6'));}if(_0x3635c5['type']!=='ivr'&&this[_0xd666('0xb8')][_0x3635c5[_0xd666('0xb9')]][_0xd666('0xf7')]&&_0x57b21c[_0xd666('0xed')]==='MACHINE'){var _0x335a2f=this;return new BPromise(function(_0x17b7ab,_0x2585f6){delete _0x335a2f['uniqueId'][_0x57b21c[_0xd666('0xe8')]];_0x335a2f['updateOriginated'](_0x335a2f[_0xd666('0xb8')][_0x3635c5[_0xd666('0xb9')]]);_0x335a2f[_0xd666('0xb8')][_0x3635c5[_0xd666('0xb9')]]['outboundAnswerCallsDay']+=0x1;_0x335a2f[_0xd666('0xb8')][_0x3635c5['queue']][_0xd666('0x66')]+=0x1;var _0x7a834b=_0x335a2f[_0xd666('0xb8')][_0x3635c5[_0xd666('0xb9')]];var _0x566e2d=new Hangup(_0x3635c5,_0x57b21c);_0x566e2d['state']=0x13;_0x566e2d[_0xd666('0xef')]=_0xd666('0xf8');_0x566e2d[_0xd666('0xf1')]=_0xd666('0xf2');_0x566e2d[_0xd666('0xf9')]+=0x1;_0x566e2d[_0xd666('0xfa')]+=0x1;_0x566e2d[_0xd666('0xf4')]=!![];ami['emit'](_0xd666('0xfb'),ut['buildObj'](_0x566e2d,'amd'));_0x335a2f[_0xd666('0xd3')](_0x566e2d)[_0xd666('0xb5')](loggerCatch(_0xd666('0xfc')));if(_0x566e2d['countbusyretry']+_0x566e2d[_0xd666('0xfd')]+_0x566e2d[_0xd666('0xfe')]+_0x566e2d[_0xd666('0xff')]+_0x566e2d[_0xd666('0x100')]+_0x566e2d[_0xd666('0x101')]+_0x566e2d[_0xd666('0xf9')]+_0x566e2d[_0xd666('0x102')]>=_0x7a834b[_0xd666('0x103')]){_0x335a2f[_0xd666('0x104')](_0x566e2d,_0x17b7ab,_0x2585f6,_0xd666('0x105'));}else{if(_0x566e2d['countmachineretry']>=_0x7a834b[_0xd666('0x106')]){_0x335a2f[_0xd666('0x107')](_0x566e2d,_0x17b7ab,_0x2585f6,_0xd666('0x108'));}else{_0x335a2f['rescheduleContact']({'active':![],'countmachineretry':_0x566e2d[_0xd666('0xf9')],'scheduledat':moment()[_0xd666('0x109')](_0x7a834b[_0xd666('0x10a')],_0xd666('0x10b'))[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x566e2d[_0xd666('0xdb')],'ListId':_0x566e2d[_0xd666('0xdc')],'VoiceQueueId':_0x566e2d[_0xd666('0xde')]||undefined,'CampaignId':_0x566e2d[_0xd666('0xdf')]||undefined})['catch'](loggerCatch(_0xd666('0x10d')));_0x17b7ab({'reschedule':0x1});}}});}if(_0x3635c5[_0xd666('0x54')]===_0xd666('0x7f')&&this[_0xd666('0x22')][_0x3635c5[_0xd666('0xb9')]]['dialAMDActive']&&_0x57b21c[_0xd666('0xed')]===_0xd666('0x10e')){delete this[_0xd666('0x26')][_0x57b21c['uniqueid']];this[_0xd666('0xb7')](this[_0xd666('0x22')][_0x3635c5[_0xd666('0xb9')]]);_0x254f12=new Hangup(_0x3635c5,_0x57b21c);_0x254f12[_0xd666('0xee')]=0x12;_0x254f12[_0xd666('0xef')]=_0xd666('0xf0');_0x254f12['membername']=_0xd666('0xf2');ami[_0xd666('0x53')](_0xd666('0xfb'),ut[_0xd666('0xf3')](_0x254f12,_0xd666('0xf4')));this[_0xd666('0xda')](_0x254f12,_0xd666('0x10f'),_0xd666('0x110'));}if(_0x3635c5[_0xd666('0x54')]==='ivr'&&this[_0xd666('0x22')][_0x3635c5[_0xd666('0xb9')]][_0xd666('0xf7')]&&_0x57b21c[_0xd666('0xed')]==='MACHINE'){var _0x335a2f=this;return new BPromise(function(_0x21eee5,_0x4d2ff9){delete _0x335a2f[_0xd666('0x26')][_0x57b21c[_0xd666('0xe8')]];_0x335a2f[_0xd666('0xb7')](_0x335a2f[_0xd666('0x22')][_0x3635c5[_0xd666('0xb9')]]);_0x335a2f[_0xd666('0x22')][_0x3635c5['queue']][_0xd666('0x67')]+=0x1;_0x335a2f['campaigns'][_0x3635c5['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x28eed3=_0x335a2f[_0xd666('0x22')][_0x3635c5[_0xd666('0xb9')]];var _0x1350c2=new Hangup(_0x3635c5,_0x57b21c);_0x1350c2[_0xd666('0xee')]=0x13;_0x1350c2[_0xd666('0xef')]=_0xd666('0xf8');_0x1350c2[_0xd666('0xf1')]=_0xd666('0xf2');_0x1350c2[_0xd666('0xf9')]+=0x1;_0x1350c2[_0xd666('0xfa')]+=0x1;_0x1350c2['amd']=!![];ami[_0xd666('0x53')](_0xd666('0xfb'),ut['buildObj'](_0x1350c2,'amd'));_0x335a2f[_0xd666('0xd3')](_0x1350c2)[_0xd666('0xb5')](loggerCatch(_0xd666('0xfc')));if(_0x1350c2[_0xd666('0x111')]+_0x1350c2[_0xd666('0xfd')]+_0x1350c2[_0xd666('0xfe')]+_0x1350c2[_0xd666('0xff')]+_0x1350c2[_0xd666('0x100')]+_0x1350c2[_0xd666('0x101')]+_0x1350c2['countmachineretry']+_0x1350c2['countagentrejectretry']>=_0x28eed3[_0xd666('0x103')]){_0x335a2f['stateGlobal'](_0x1350c2,_0x21eee5,_0x4d2ff9,_0xd666('0x105'));}else{if(_0x1350c2[_0xd666('0xf9')]>=_0x28eed3[_0xd666('0x106')]){_0x335a2f[_0xd666('0x107')](_0x1350c2,_0x21eee5,_0x4d2ff9,_0xd666('0x108'));}else{_0x335a2f[_0xd666('0xc7')]({'active':![],'countmachineretry':_0x1350c2[_0xd666('0xf9')],'scheduledat':moment()[_0xd666('0x109')](_0x28eed3[_0xd666('0x10a')],_0xd666('0x10b'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x1350c2[_0xd666('0xdb')],'ListId':_0x1350c2[_0xd666('0xdc')],'VoiceQueueId':_0x1350c2[_0xd666('0xde')]||undefined,'CampaignId':_0x1350c2[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch('[rescheduleContact][Machine]'));_0x21eee5({'reschedule':0x1});}}});}}};Dialer[_0xd666('0x1c')][_0xd666('0x38')]=function(_0x2baff1){var _0x7684a9=this[_0xd666('0x26')][_0x2baff1['uniqueid']];var _0xb6cc8a=this;var _0x579e6e;if(_0x7684a9&&_0x7684a9[_0xd666('0x54')]===_0xd666('0x7f')){delete this['uniqueId'][_0x2baff1[_0xd666('0xe8')]];this[_0xd666('0xb7')](this[_0xd666('0x22')][_0x7684a9[_0xd666('0xb9')]]);this[_0xd666('0x22')][_0x7684a9[_0xd666('0xb9')]]['ivrAnswerCallsDay']+=0x1;_0x579e6e=new Hangup(_0x7684a9,_0x2baff1);this[_0xd666('0xd3')](_0x579e6e)[_0xd666('0xb5')](loggerCatch(_0xd666('0x112')));this['moveContactManagedDialer'](_0x579e6e)['catch'](loggerCatch(_0xd666('0x113')));}if(_0x7684a9&&_0x7684a9[_0xd666('0x54')]!==_0xd666('0x7f')&&isNotNull(this[_0xd666('0xb8')][_0x7684a9[_0xd666('0xb9')]][_0xd666('0x114')])){delete this[_0xd666('0x26')][_0x2baff1['uniqueid']];this[_0xd666('0xb7')](this['voiceQueues'][_0x7684a9[_0xd666('0xb9')]]);this['voiceQueues'][_0x7684a9[_0xd666('0xb9')]][_0xd666('0x67')]+=0x1;this[_0xd666('0xb8')][_0x7684a9[_0xd666('0xb9')]][_0xd666('0x66')]+=0x1;_0x579e6e=new Hangup(_0x7684a9,_0x2baff1);_0x579e6e[_0xd666('0xee')]=0x10;_0x579e6e['statedesc']='AnswerAGI';_0x579e6e[_0xd666('0xf1')]='AGI';this[_0xd666('0xd3')](_0x579e6e)[_0xd666('0xb5')](loggerCatch(_0xd666('0x112')));this[_0xd666('0xd1')](_0x579e6e)['catch'](loggerCatch(_0xd666('0x113')));}if(_0x7684a9&&_0x7684a9[_0xd666('0x54')]!=='ivr'&&!isNotNull(this['voiceQueues'][_0x7684a9[_0xd666('0xb9')]][_0xd666('0x114')])){delete this[_0xd666('0x26')][_0x2baff1[_0xd666('0xe8')]];this[_0xd666('0xb7')](this[_0xd666('0xb8')][_0x7684a9[_0xd666('0xb9')]]);this[_0xd666('0xb8')][_0x7684a9[_0xd666('0xb9')]][_0xd666('0x115')]+=0x1;_0x579e6e=new Hangup(_0x7684a9,_0x2baff1);_0x579e6e[_0xd666('0xee')]=0xc;_0x579e6e[_0xd666('0xef')]=_0x2baff1[_0xd666('0x116')];_0x579e6e[_0xd666('0xf1')]=_0xd666('0x117');this['createHistory'](_0x579e6e)[_0xd666('0xb5')](loggerCatch(_0xd666('0x112')));this[_0xd666('0xd1')](_0x579e6e)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer[_0xd666('0x1c')][_0xd666('0x35')]=function(_0x3cd928){var _0x130e77=this[_0xd666('0x26')][_0x3cd928[_0xd666('0xe8')]];var _0x164179=this;if(this[_0xd666('0xb8')][_0x3cd928[_0xd666('0xb9')]]){if(_0x130e77&&_0x130e77[_0xd666('0x54')]!=='ivr'){delete this[_0xd666('0x26')][_0x3cd928['uniqueid']];this[_0xd666('0xb8')][_0x3cd928[_0xd666('0xb9')]][_0xd666('0x67')]+=0x1;var _0x3e45d8=new AgentComplete(_0x130e77,_0x3cd928);if(_0x3cd928[_0xd666('0x118')]===_0xd666('0x119')){_0x3e45d8[_0xd666('0x11a')]=this['voiceQueues'][_0x3cd928[_0xd666('0xb9')]][_0xd666('0x11b')]&&this['voiceQueues'][_0x3cd928[_0xd666('0xb9')]][_0xd666('0x11c')]?moment()[_0xd666('0x7c')](_0xd666('0x10c')):undefined;}this[_0xd666('0xd3')](_0x3e45d8)['catch'](loggerCatch(_0xd666('0x11d')));this['moveContactManagedDialer'](_0x3e45d8)[_0xd666('0xb5')](loggerCatch(_0xd666('0x11e')));}}};Dialer[_0xd666('0x1c')][_0xd666('0x2e')]=function(_0x452940){if(this[_0xd666('0xb8')][_0x452940[_0xd666('0xb9')]]){if(this[_0xd666('0x26')][_0x452940[_0xd666('0xe8')]]&&this[_0xd666('0x26')][_0x452940[_0xd666('0xe8')]]['type']!==_0xd666('0x7f')){this[_0xd666('0xb7')](this[_0xd666('0xb8')][_0x452940[_0xd666('0xb9')]]);this[_0xd666('0x26')][_0x452940[_0xd666('0xe8')]][_0xd666('0x11f')]=moment()[_0xd666('0x7c')](_0xd666('0x10c'));}}};Dialer[_0xd666('0x1c')][_0xd666('0x120')]=function(_0x314370){this[_0xd666('0xd3')](_0x314370)[_0xd666('0xb5')](loggerCatch(_0xd666('0x11d')));this[_0xd666('0xd1')](_0x314370)[_0xd666('0xb5')](loggerCatch(_0xd666('0x121')));};Dialer[_0xd666('0x1c')]['syncQueueCallerAbandon']=function(_0x382d06){var _0x49573b=this['uniqueId'][_0x382d06[_0xd666('0xe8')]];var _0x3a9824=this;if(this[_0xd666('0xb8')][_0x382d06[_0xd666('0xb9')]]){if(_0x49573b&&_0x49573b[_0xd666('0x54')]!=='ivr'){delete this['uniqueId'][_0x382d06[_0xd666('0xe8')]];this[_0xd666('0xb7')](this[_0xd666('0xb8')][_0x382d06[_0xd666('0xb9')]]);_0x49573b[_0xd666('0x122')]=moment()[_0xd666('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');var _0x532e13=new QueueCallerAbandon(_0x49573b,_0x382d06);if(getSeconds(_0x49573b[_0xd666('0x122')],_0x49573b[_0xd666('0x123')])>=_0x49573b[_0xd666('0x124')]){this[_0xd666('0xb8')][_0x382d06['queue']][_0xd666('0x73')]+=0x1;this[_0xd666('0xb8')][_0x382d06[_0xd666('0xb9')]][_0xd666('0x6c')]+=0x1;this[_0xd666('0xb8')][_0x382d06[_0xd666('0xb9')]][_0xd666('0x125')]+=0x1;_0x532e13[_0xd666('0xee')]=0xa;_0x532e13[_0xd666('0xef')]=_0xd666('0x126');_0x532e13[_0xd666('0x127')]=_0xd666('0x128');_0x532e13[_0xd666('0x11a')]=this['voiceQueues'][_0x382d06['queue']][_0xd666('0x11b')]?moment()[_0xd666('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x532e13[_0xd666('0x100')]+=0x1;_0x532e13[_0xd666('0xfa')]+=0x1;if(_0x532e13[_0xd666('0x100')]>=this['voiceQueues'][_0x382d06['queue']][_0xd666('0x129')]){this[_0xd666('0x120')](_0x532e13);}else{this[_0xd666('0xc7')]({'active':![],'countdropretry':_0x532e13['countdropretry'],'scheduledat':moment()[_0xd666('0x109')](this[_0xd666('0xb8')][_0x382d06[_0xd666('0xb9')]]['dialDropRetryFrequency'],_0xd666('0x10b'))[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x49573b[_0xd666('0xdb')],'ListId':_0x49573b[_0xd666('0xdc')],'VoiceQueueId':_0x49573b['VoiceQueueId']||undefined,'CampaignId':_0x49573b[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x12a')));var _0x545cf7=new History(_0x532e13);_0x545cf7['state']=0xa;_0x545cf7[_0xd666('0xef')]='Drop';_0x545cf7[_0xd666('0xaf')]=moment()[_0xd666('0x7c')](_0xd666('0x10c'));_0x545cf7[_0xd666('0xae')]=_0x545cf7[_0xd666('0xaf')];_0x545cf7[_0xd666('0x12b')]=_0x532e13['calleridname'];_0x545cf7[_0xd666('0x12c')]=_0x532e13[_0xd666('0x12c')];this[_0xd666('0xd3')](_0x545cf7)[_0xd666('0xb5')](loggerCatch(_0xd666('0x12d')));}}else{this['voiceQueues'][_0x382d06[_0xd666('0xb9')]][_0xd666('0x87')]+=0x1;this[_0xd666('0xb8')][_0x382d06['queue']][_0xd666('0x6b')]+=0x1;_0x532e13['state']=0xb;_0x532e13[_0xd666('0xef')]=_0xd666('0x12e');_0x532e13['dropreason']=_0xd666('0x12f');_0x532e13[_0xd666('0x101')]+=0x1;_0x532e13[_0xd666('0xfa')]+=0x1;if(_0x532e13[_0xd666('0x101')]>=this[_0xd666('0xb8')][_0x382d06[_0xd666('0xb9')]][_0xd666('0x130')]){this[_0xd666('0x120')](_0x532e13);}else{this[_0xd666('0xc7')]({'active':![],'countabandonedretry':_0x532e13[_0xd666('0x101')],'scheduledat':moment()[_0xd666('0x109')](this[_0xd666('0xb8')][_0x382d06['queue']][_0xd666('0x131')],_0xd666('0x10b'))[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x49573b['ContactId'],'ListId':_0x49573b[_0xd666('0xdc')],'VoiceQueueId':_0x49573b['VoiceQueueId']||undefined,'CampaignId':_0x49573b[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x132')));var _0x545cf7=new History(_0x532e13);_0x545cf7[_0xd666('0xee')]=0xb;_0x545cf7['statedesc']=_0xd666('0x12e');_0x545cf7[_0xd666('0xaf')]=moment()[_0xd666('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');_0x545cf7[_0xd666('0xae')]=_0x545cf7[_0xd666('0xaf')];_0x545cf7[_0xd666('0x12b')]=_0x532e13[_0xd666('0x12b')];_0x545cf7[_0xd666('0x12c')]=_0x532e13[_0xd666('0x12c')];this[_0xd666('0xd3')](_0x545cf7)[_0xd666('0xb5')](loggerCatch(_0xd666('0x133')));}}}}};Dialer[_0xd666('0x1c')]['syncNewExten']=function(_0x3812f1){if(this['actions'][_0x3812f1[_0xd666('0xe8')]]){this[_0xd666('0x25')][_0x3812f1[_0xd666('0xe8')]][_0xd666('0x134')]=_0x3812f1[_0xd666('0x134')];}if(this[_0xd666('0x26')][_0x3812f1[_0xd666('0xe8')]]){this['uniqueId'][_0x3812f1[_0xd666('0xe8')]][_0xd666('0x134')]=_0x3812f1[_0xd666('0x134')];}};Dialer[_0xd666('0x1c')]['syncQueueMember']=function(_0x3764b9){if(strategy[this[_0xd666('0xb8')][this[_0xd666('0x25')][_0x3764b9[_0xd666('0x135')]]['queue']][_0xd666('0x56')]]==='roundrobin'){if(this[_0xd666('0x25')][_0x3764b9[_0xd666('0x135')]]&&_['isNil'](this['actions'][_0x3764b9['actionid']][_0xd666('0x136')])&&_0x3764b9['status']==='1'&&_0x3764b9[_0xd666('0x137')]==='0'){if(this[_0xd666('0x23')][_0x3764b9['stateinterface']]){if(!this[_0xd666('0x23')][_0x3764b9[_0xd666('0x138')]][_0xd666('0x136')]){this[_0xd666('0x23')][_0x3764b9[_0xd666('0x138')]][_0xd666('0x136')]=!![];this[_0xd666('0x25')][_0x3764b9['actionid']][_0xd666('0x136')]=!![];this[_0xd666('0x25')][_0x3764b9['actionid']][_0xd666('0x138')]=_0x3764b9[_0xd666('0x138')];}}}}else if((strategy[this['voiceQueues'][this[_0xd666('0x25')][_0x3764b9['actionid']][_0xd666('0xb9')]][_0xd666('0x56')]]||'rrmemory')===_0xd666('0x1a')){if(this[_0xd666('0x25')][_0x3764b9[_0xd666('0x135')]]){if(this[_0xd666('0x23')][_0x3764b9[_0xd666('0x138')]]){this[_0xd666('0x25')][_0x3764b9['actionid']][_0xd666('0x138')]=_0x3764b9['stateinterface'];if(_[_0xd666('0xb3')](this[_0xd666('0x2b')][this[_0xd666('0x25')][_0x3764b9[_0xd666('0x135')]][_0xd666('0xb9')]])){this['queueBooked'][this[_0xd666('0x25')][_0x3764b9['actionid']]['queue']]=[];}this[_0xd666('0x2b')][this[_0xd666('0x25')][_0x3764b9['actionid']]['queue']][_0xd666('0x139')](_['merge'](_[_0xd666('0x13a')](this[_0xd666('0x25')][_0x3764b9['actionid']],[_0xd666('0x13b'),'stateinterface']),{'status':_0x3764b9[_0xd666('0xe4')],'paused':_0x3764b9[_0xd666('0x137')]}));}}}};function unlockQueueStatus(_0xfd580e,_0x826d8b){setTimeout(function(){if(_[_0xd666('0x42')](_0xfd580e[_0xd666('0x13c')])){loggerBooked['error'](_0xd666('0x13d'),_0x826d8b);}_0xfd580e['queueStatusComplete']=!![];loggerBooked['info'](_0xd666('0x13e'),_0x826d8b,JSON['stringify'](_[_0xd666('0x13a')](_0xfd580e,[_0xd666('0x44'),_0xd666('0x13c')])));},0x1f3);}Dialer['prototype'][_0xd666('0x3f')]=function(_0x5a4397){var _0x253424=this;var _0x1c41f0=_0x253424[_0xd666('0xb8')][_0x253424['actions'][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]];if(strategy[this['voiceQueues'][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]['strategy']]===_0xd666('0x1b')){if(this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]&&this[_0xd666('0x25')][_0x5a4397['actionid']][_0xd666('0x138')]){this[_0xd666('0x21')][_0xd666('0x13f')](this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0x13b')],this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0x138')])['catch'](function(_0x2c8532){logger[_0xd666('0x9b')](_0xd666('0x140'),util[_0xd666('0xa1')](_0x2c8532,{'showHidden':![],'depth':null}));})[_0xd666('0x1f')](function(){_0x253424[_0xd666('0xb7')](_0x253424[_0xd666('0xb8')][_0x253424[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]);_0x253424[_0xd666('0x23')][_0x253424['actions'][_0x5a4397[_0xd666('0x135')]]['stateinterface']]['locked']=![];delete _0x253424[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]];unlockQueueStatus(_0x1c41f0);});}else{this[_0xd666('0xb7')](this[_0xd666('0xb8')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xdb')],'ListId':this['actions'][_0x5a4397[_0xd666('0x135')]]['ListId'],'VoiceQueueId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xde')]||undefined,'CampaignId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x141')));delete this['actions'][_0x5a4397['actionid']];unlockQueueStatus(_0x1c41f0);}}else if((strategy[this[_0xd666('0xb8')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]][_0xd666('0x56')]]||_0xd666('0x1a'))===_0xd666('0x1a')){var _0x456fc1;if(this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]&&!_[_0xd666('0x4d')](this[_0xd666('0x2b')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['queue']])){if(this[_0xd666('0x2c')][_0x253424[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]){this[_0xd666('0x2c')][_0x253424[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['queue']]=this[_0xd666('0x2c')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['queue']]?this[_0xd666('0x2c')][this['actions'][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]:this['queueBooked'][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]?this[_0xd666('0x2b')][this['actions'][_0x5a4397['actionid']][_0xd666('0xb9')]][_0xd666('0x142')]||0x0:0x0;}this[_0xd666('0x2b')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]][_0xd666('0x142')]=this['queueBookedRR'][this['actions'][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]];for(var _0x27fad5=0x0;_0x27fad5<this['queueBooked'][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['queue']][_0xd666('0x9d')];_0x27fad5+=0x1){_0x456fc1=rr(this[_0xd666('0x2b')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]);this[_0xd666('0x2c')][_0x253424[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['queue']]=this[_0xd666('0x2b')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['queue']]['_rr'];if(_0x456fc1[_0xd666('0xe4')]==='1'&&_0x456fc1[_0xd666('0x137')]==='0'){break;}}if(!_[_0xd666('0xb3')](_0x456fc1)){this[_0xd666('0x23')][_0x456fc1[_0xd666('0x138')]][_0xd666('0x143')]=_[_0xd666('0x42')](this[_0xd666('0x23')][_0x456fc1[_0xd666('0x138')]][_0xd666('0x143')])?!![]:this[_0xd666('0x23')][_0x456fc1[_0xd666('0x138')]][_0xd666('0x143')];}loggerBooked[_0xd666('0x82')]('[booked][RR]',_0x5a4397[_0xd666('0x135')],_0xd666('0x144'),JSON['stringify'](_['pick'](this[_0xd666('0x23')][_0x456fc1[_0xd666('0x138')]],[_0xd666('0x44'),_0xd666('0x143')])),_0xd666('0x145'),JSON[_0xd666('0x50')](_0x456fc1[_0xd666('0x13b')]));if(!_[_0xd666('0xb3')](_0x456fc1)&&_0x456fc1[_0xd666('0xe4')]==='1'&&_0x456fc1[_0xd666('0x137')]==='0'&&this['agents'][_0x456fc1[_0xd666('0x138')]][_0xd666('0x143')]){this['agents'][_0x456fc1[_0xd666('0x138')]][_0xd666('0x143')]=![];this[_0xd666('0x2b')][_0x253424[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]=[];this[_0xd666('0x21')][_0xd666('0x13f')](_0x456fc1['idHopper'],_0x456fc1['stateinterface'])['catch'](function(_0x5140d8){logger['error'](_0xd666('0x140'),util[_0xd666('0xa1')](_0x5140d8,{'showHidden':![],'depth':null}));})['finally'](function(){_0x253424[_0xd666('0xb7')](_0x253424[_0xd666('0xb8')][_0x253424[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]);setTimeout(function(){_0x253424[_0xd666('0x23')][_0x456fc1[_0xd666('0x138')]][_0xd666('0x143')]=!![];loggerBooked[_0xd666('0x82')](_0xd666('0x146'),_0x5a4397[_0xd666('0x135')],'Agent:\x20',JSON[_0xd666('0x50')](_[_0xd666('0x13a')](_0x253424[_0xd666('0x23')][_0x456fc1[_0xd666('0x138')]],[_0xd666('0x44'),_0xd666('0x143')])),'contactAgent-idHopper:\x20',JSON[_0xd666('0x50')](_0x456fc1['idHopper']));},0xc7);delete _0x253424['actions'][_0x5a4397[_0xd666('0x135')]];unlockQueueStatus(_0x1c41f0,_0x5a4397['actionid']);});}else{loggerBooked[_0xd666('0x82')](_0xd666('0x147'));this[_0xd666('0xb7')](this[_0xd666('0xb8')][this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xdb')],'ListId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xdc')],'VoiceQueueId':this['actions'][_0x5a4397['actionid']][_0xd666('0xde')]||undefined,'CampaignId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x5a4397[_0xd666('0x135')]];unlockQueueStatus(_0x1c41f0);}}else{loggerBooked[_0xd666('0x82')](_0xd666('0x148'));this['updateOriginated'](this['voiceQueues'][this[_0xd666('0x25')][_0x5a4397['actionid']][_0xd666('0xb9')]]);this[_0xd666('0xc7')]({'active':![],'ContactId':this['actions'][_0x5a4397['actionid']][_0xd666('0xdb')],'ListId':this[_0xd666('0x25')][_0x5a4397['actionid']][_0xd666('0xdc')],'VoiceQueueId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x5a4397[_0xd666('0x135')]]['CampaignId']||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x149')));delete this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]];unlockQueueStatus(_0x1c41f0);}}else{loggerBooked[_0xd666('0x82')]('[booked][unlock3]');this[_0xd666('0xb7')](this['voiceQueues'][this['actions'][_0x5a4397[_0xd666('0x135')]][_0xd666('0xb9')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xd666('0x25')][_0x5a4397['actionid']]['ContactId'],'ListId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]][_0xd666('0xdc')],'VoiceQueueId':this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x5a4397[_0xd666('0x135')]]['CampaignId']||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x14a')));delete this[_0xd666('0x25')][_0x5a4397[_0xd666('0x135')]];unlockQueueStatus(_0x1c41f0);}};Dialer[_0xd666('0x1c')][_0xd666('0x40')]=function(){var _0x2611c4=this;return BPromise[_0xd666('0xbf')]()['then'](cmHopper[_0xd666('0x14b')]({}))['then'](function(){setInterval(function(){_0x2611c4[_0xd666('0x14c')]();},0x3e8);});};Dialer[_0xd666('0x1c')]['checkIsTrunkReachable']=function(_0x3679de){var _0x5de98b=this;return function(){if(!_0x5de98b['isTrunkReachable'](_0x3679de[_0xd666('0x79')])){if(!_0x5de98b[_0xd666('0xe3')](_0x3679de[_0xd666('0x14d')])){_0x3679de[_0xd666('0x46')]='TRUNK_IS_NOT_REACHABLE';throw _0x3679de[_0xd666('0x44')]+_0xd666('0x14e');}}};};Dialer[_0xd666('0x1c')][_0xd666('0x14f')]=function(_0x2c45ae,_0x345756,_0x1e2250,_0x52c54a){var _0x28cf79=this;return function(){var _0x286f64=!![];return _0x28cf79[_0xd666('0x150')](_0x2c45ae,_0x345756,_0x1e2250,_0x52c54a,_0x286f64);};};Dialer['prototype'][_0xd666('0x151')]=function(_0x1e3554,_0x5a8aa0,_0x392b81,_0x15ccef){var _0x22a746=this;return function(){var _0x3c4960=![];return _0x22a746[_0xd666('0x150')](_0x1e3554[_0xd666('0x4b')],_0x5a8aa0,_0x392b81,_0x15ccef,_0x3c4960);};};Dialer[_0xd666('0x1c')][_0xd666('0x150')]=function(_0x3a645f,_0x2e0862,_0x35b534,_0x3a9c34,_0x5092c6){var _0xb29c7e=[];return new BPromise(function(_0x1d4a9e,_0x54ba10){if(!isNotNull(_0x3a645f)){_0x3a9c34[_0xd666('0x46')]=_0xd666('0x49');return _0x54ba10(msgResponse(_0xd666('0x150'),'Failure',_0x35b534+_0xd666('0x152')));}if(_['isEmpty'](_0x3a645f)){_0x3a9c34['message']='INTERVAL_IS_EMPTY';return _0x54ba10(msgResponse(_0xd666('0x150'),_0xd666('0x153'),_0x35b534+_0xd666('0x154')));}if(_0x2e0862&&_[_0xd666('0x42')](config[_0xd666('0x155')][_0x2e0862])){_0x3a9c34[_0xd666('0x46')]=_0xd666('0x156');return _0x54ba10(msgResponse(_0xd666('0x150'),_0xd666('0x153'),_0x35b534+'\x20Timezone\x20unknow\x20'+_0x2e0862));}if(_['isArray'](_0x3a645f)){for(var _0x540585=0x0;_0x540585<_0x3a645f[_0xd666('0x9d')];_0x540585+=0x1){_0xb29c7e[_0xd666('0x139')](ami[_0xd666('0xb4')]({'action':_0xd666('0x157'),'command':util[_0xd666('0x7c')](_0xd666('0x158'),_0x3a645f[_0x540585][_0xd666('0x159')],!_[_0xd666('0x42')](config[_0xd666('0x155')][_0x2e0862])?_0x2e0862:'')})[_0xd666('0xc0')](function(_0x40ccda){return _0x40ccda[_0xd666('0x15a')][_0xd666('0x15b')]('true')>=0x0;})[_0xd666('0xb5')](myreject(_0x54ba10)));}}else{_0xb29c7e['push'](ami[_0xd666('0xb4')]({'action':_0xd666('0x157'),'command':util[_0xd666('0x7c')](_0xd666('0x158'),_0x3a645f,!_[_0xd666('0x42')](config[_0xd666('0x155')][_0x2e0862])?_0x2e0862:'')})[_0xd666('0xc0')](function(_0x4d2420){return _0x4d2420[_0xd666('0x15a')]['indexOf'](_0xd666('0x15c'))>=0x0;})['catch'](myreject(_0x54ba10)));}BPromise[_0xd666('0x15d')](_0xb29c7e)[_0xd666('0xc0')](function(_0x177ea4){var _0x320bb6=_[_0xd666('0x15e')](_0x177ea4);if(_0x320bb6){return _0x1d4a9e(_0x320bb6);}else{_0x3a9c34[_0xd666('0x46')]=_0x5092c6?_0xd666('0x15f'):_0xd666('0x160');return _0x54ba10(msgResponse(_0xd666('0x161'),'Failure',_0xd666('0x162')+_0x5092c6+'\x20'+_0x35b534+_0xd666('0x163')+util[_0xd666('0xa1')](_0x3a645f,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x2e0862));}})['catch'](function(_0x5613bf){return _0x54ba10(msgResponse(_0xd666('0x150'),_0xd666('0x153'),JSON[_0xd666('0x50')](_0x5613bf)));});});};Dialer[_0xd666('0x1c')]['checkDialMethod']=function(_0x5a6719){var _0x3af263=this;return function(){switch(_0x5a6719[_0xd666('0x62')]){case _0xd666('0x164'):freeVariablesPredictive(_0x5a6719);_0x3af263['handlePower'](_0x5a6719,0x1);break;case _0xd666('0x165'):freeVariablesPredictive(_0x5a6719);_0x3af263[_0xd666('0x166')](_0x5a6719,_0x5a6719[_0xd666('0x167')]);break;case _0xd666('0x168'):_0x3af263[_0xd666('0x168')](_0x5a6719);break;case _0xd666('0x9'):freeVariablesPredictive(_0x5a6719);_0x3af263[_0xd666('0x166')](_0x5a6719,0x1);break;default:freeVariablesPredictive(_0x5a6719);logger['error'](_0xd666('0x169'),_0x5a6719[_0xd666('0x44')],_0xd666('0x16a'));}};};Dialer[_0xd666('0x1c')][_0xd666('0x16b')]=function(_0x3b42d8){var _0x24530f=this;return function(){_0x24530f['handleIvr'](_0x3b42d8);};};Dialer[_0xd666('0x1c')]['syncQueueSummary']=function(_0x4865bc){var _0x2c0b9e=this;if(isNotPreview(_0x4865bc['dialMethod'])){if(isVoiceQueueOutbound(_0x4865bc['type'])&&isActive(_0x4865bc[_0xd666('0x61')])){_0x4865bc['sendMessageOneNotActive']=!![];BPromise[_0xd666('0xbf')]()[_0xd666('0xc0')](checkIsLoggedIn(_0x4865bc,_0x4865bc['loggedIn']))[_0xd666('0xc0')](checkIsActive(_0x4865bc,_0x4865bc[_0xd666('0x61')]))[_0xd666('0xc0')](checkInterval(_0x4865bc))[_0xd666('0xc0')](_0x2c0b9e[_0xd666('0x16c')](_0x4865bc))[_0xd666('0xc0')](_0x2c0b9e[_0xd666('0x14f')](_0x4865bc[_0xd666('0x16d')],_0x4865bc[_0xd666('0x16e')],_0x4865bc[_0xd666('0x44')],_0x4865bc))[_0xd666('0xc0')](_0x2c0b9e['checkIfTimeIntervals'](_0x4865bc[_0xd666('0x4a')],_0x4865bc['dialTimezone'],_0x4865bc[_0xd666('0x44')],_0x4865bc))[_0xd666('0xc0')](_0x2c0b9e[_0xd666('0x16f')](_0x4865bc))[_0xd666('0xb5')](loggerCatchQueueSummary(_0xd666('0x170'),_0x4865bc));}else{notSendMessagesQueue(_0x4865bc);}}else{freeVariablesPredictive(_0x4865bc);}};Dialer[_0xd666('0x1c')][_0xd666('0x14c')]=function(){var _0x4971d2=this;var _0x202917;for(var _0x476c59 in this[_0xd666('0x22')]){if(typeof this[_0xd666('0x22')][_0x476c59]!==_0xd666('0x9e')){_0x202917=this[_0xd666('0x22')][_0x476c59];if(isCampaignIvr(_0x202917['type'])&&isActive(_0x202917[_0xd666('0x7a')])){_0x202917[_0xd666('0xa8')]=!![];BPromise[_0xd666('0xbf')]()[_0xd666('0xc0')](checkIsActive(_0x202917,_0x202917[_0xd666('0x7a')]))[_0xd666('0xc0')](checkInterval(_0x202917))['then'](_0x4971d2['checkIsTrunkReachable'](_0x202917))['then'](_0x4971d2[_0xd666('0x14f')](_0x202917[_0xd666('0x16d')],_0x202917[_0xd666('0x16e')],_0x202917[_0xd666('0x44')],_0x202917))[_0xd666('0xc0')](_0x4971d2[_0xd666('0x151')](_0x202917['Interval'],_0x202917[_0xd666('0x16e')],_0x202917[_0xd666('0x44')],_0x202917))[_0xd666('0xc0')](_0x4971d2[_0xd666('0x16b')](_0x202917))['catch'](loggerCatchQueueSummary('[syncCampaigns]',_0x202917));}else{notSendMessagesCampaign(_0x202917);}}}};function getCallerIdRandom(_0xe30738,_0xe29d86){var _0x429b65;var _0x22d7f8;var _0x476a00;if(_0xe29d86<=0x0){_0xe29d86=0x1;}_0x429b65=new RegExp(_0xd666('0x171')+_0xe29d86+'}$');_0x22d7f8=Math[_0xd666('0x172')](0xa,_0xe29d86-0x1);_0x476a00=Math[_0xd666('0x172')](0xa,_0xe29d86)-0x1;return util[_0xd666('0x7c')]('%s',_[_0xd666('0x173')](_0xe30738,_0x429b65,_[_0xd666('0x174')](_0x22d7f8,_0x476a00)));}function extractCalleridName(_0x469eea){var _0x291565=_0x469eea[_0xd666('0x175')](/"(.*?)"/);return _0x291565?_0x291565[0x1]:_0x469eea;}function extractCalleridNumber(_0x484d3c){var _0xdb10b2=_0x484d3c[_0xd666('0x175')](/<(.*?)>/);return _0xdb10b2?_0xdb10b2[0x1]:_0x484d3c;}Dialer[_0xd666('0x1c')][_0xd666('0x176')]=function(_0x7c2336,_0x2b2082){var _0x4df978=this;var _0x236220=uuid['v4']();this[_0xd666('0x25')][_0x236220]=new Action(_0x7c2336,_0x2b2082,_0x236220);return new BPromise(function(_0x5d5614,_0x5f08f1){if(_[_0xd666('0x42')](_0x7c2336)&&typeof _0x7c2336!==_0xd666('0x177')){return _0x5f08f1(msgResponse(_0xd666('0x178'),'Failure','voiceQueue\x20is\x20undefine'));}if(_[_0xd666('0x42')](_0x2b2082[_0xd666('0x179')][_0xd666('0x17a')])||_0x2b2082[_0xd666('0x179')][_0xd666('0x17a')]===null){return _0x5f08f1(msgResponse('originate',_0xd666('0x153'),'contact\x20is\x20undefine'));}var _0x470886={'XMD-CALLERID':_0x4df978['actions'][_0x236220][_0xd666('0x17b')](),'XMD-AGI':_0x7c2336[_0xd666('0x114')]?util[_0xd666('0x7c')](_0xd666('0x17c'),ipAgi,_0x7c2336['dialQueueProject']):_0xd666('0x17d'),'XMD-AGIAFTER':_0x7c2336[_0xd666('0x11b')]?util[_0xd666('0x7c')](_0xd666('0x17c'),ipAgi,_0x7c2336[_0xd666('0x11b')]):'NONE','XMD-QUEUE':_0x7c2336[_0xd666('0x54')]===_0xd666('0x55')?util[_0xd666('0x7c')]('\x22%s,%s%s,,,%s\x22',_0x7c2336[_0xd666('0x44')],_0x7c2336[_0xd666('0x17e')]||'',_0x7c2336[_0xd666('0x11c')]?'c':'',_0x7c2336[_0xd666('0x124')]||0x3):_0xd666('0x17d'),'XMD-CONTACTID':_0x2b2082[_0xd666('0xdb')],'XMD-CDRTYPE':_0xd666('0x8'),'CALLERID(all)':_0x4df978[_0xd666('0x25')][_0x236220][_0xd666('0x17b')](),'XMD-AMD':_0x7c2336[_0xd666('0xf7')]?_0xd666('0x17f'):_0xd666('0x17d'),'XMD-DESTINATION':_0xd666('0xec')};if(_0x7c2336[_0xd666('0xf7')]){_0x470886[_0xd666('0x180')]=_0x7c2336['dialAMDInitialSilence']||0x9c4;_0x470886[_0xd666('0x181')]=_0x7c2336[_0xd666('0x182')]||0x5dc;_0x470886[_0xd666('0x183')]=_0x7c2336[_0xd666('0x184')]||0x320;_0x470886[_0xd666('0x185')]=_0x7c2336['dialAMDTotalAnalysisTime']||0x1388;_0x470886[_0xd666('0x186')]=_0x7c2336[_0xd666('0x187')]||0x64;_0x470886[_0xd666('0x188')]=_0x7c2336[_0xd666('0x189')]||0x32;_0x470886[_0xd666('0x18a')]=_0x7c2336[_0xd666('0x18b')]||0x3;_0x470886[_0xd666('0x18c')]=_0x7c2336[_0xd666('0x18d')]||0x100;_0x470886[_0xd666('0x18e')]=_0x7c2336['dialAMDMaximumWordLength']||0x1388;}if(_0x7c2336['type']===_0xd666('0x55')){_0x470886[_0xd666('0x18f')]=_0x2b2082[_0xd666('0xde')];}else{_0x470886[_0xd666('0x190')]=_0x2b2082['CampaignId'];}for(var _0x3971d2 in _0x2b2082['Contact']){if(typeof _0x2b2082[_0xd666('0x179')][_0x3971d2]!==_0xd666('0x9e')){if(isNotNull(_0x2b2082['Contact'][_0x3971d2])&&_0x3971d2!=='id'&&_0x3971d2!=='tags'&&_0x3971d2!==_0xd666('0x191')&&_0x3971d2!=='updatedAt'){_0x470886[util[_0xd666('0x7c')](_0xd666('0x192'),_0xd666('0x193'),_[_0xd666('0x194')](_0x3971d2))]=_0x2b2082['Contact'][_0x3971d2];}}}var _0x47edd3=_0x4df978[_0xd666('0xe3')](_0x7c2336[_0xd666('0x79')])?getCallerId(_0x7c2336[_0xd666('0x79')][_0xd666('0x7b')],_0x7c2336[_0xd666('0x195')],_0x7c2336[_0xd666('0x196')]>0x0?getCallerIdRandom(_0x7c2336[_0xd666('0x63')],_0x7c2336[_0xd666('0x196')]):_0x7c2336['dialOriginateCallerIdNumber']):getCallerId(_['isNil'](_0x7c2336['TrunkBackup'])?_0x7c2336[_0xd666('0x79')][_0xd666('0x7b')]:_0x7c2336[_0xd666('0x14d')]['callerid'],_0x7c2336[_0xd666('0x195')],_0x7c2336['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x7c2336[_0xd666('0x63')],_0x7c2336[_0xd666('0x196')]):_0x7c2336[_0xd666('0x63')]);if(_0x47edd3){_0x470886[_0xd666('0x197')]=_0x4df978['actions'][_0x236220][_0xd666('0x198')]=extractCalleridName(_0x47edd3);_0x470886['XMD-ORIGINATECALLERIDNUM']=_0x4df978[_0xd666('0x25')][_0x236220][_0xd666('0x199')]=extractCalleridNumber(_0x47edd3);}return ami[_0xd666('0xb4')]({'actionid':_0x236220,'action':_0xd666('0x178'),'channel':_0x4df978[_0xd666('0xe3')](_0x7c2336[_0xd666('0x79')])?util['format'](_0xd666('0x19a'),_0x7c2336[_0xd666('0x79')][_0xd666('0x44')],isNotNull(_0x7c2336[_0xd666('0x65')])?_0x7c2336[_0xd666('0x65')][_0xd666('0x19b')]()||'':'',_0x7c2336[_0xd666('0x19c')]>0x0?_0x2b2082[_0xd666('0x179')][_0xd666('0x17a')][_0xd666('0x19d')](_0x7c2336[_0xd666('0x19c')]):_0x2b2082[_0xd666('0x179')]['phone']):util[_0xd666('0x7c')](_0xd666('0x19a'),_[_0xd666('0xb3')](_0x7c2336[_0xd666('0x14d')])?_0x7c2336[_0xd666('0x79')][_0xd666('0x44')]:_0x7c2336[_0xd666('0x14d')]['name'],isNotNull(_0x7c2336[_0xd666('0x65')])?_0x7c2336[_0xd666('0x65')][_0xd666('0x19b')]()||'':'',_0x7c2336['dialCutDigit']>0x0?_0x2b2082[_0xd666('0x179')][_0xd666('0x17a')][_0xd666('0x19d')](_0x7c2336[_0xd666('0x19c')]):_0x2b2082[_0xd666('0x179')][_0xd666('0x17a')]),'callerid':_0x47edd3,'Exten':_0xd666('0xec'),'Context':'from-sip','Priority':'1','variable':_0x470886,'timeout':(_0x7c2336['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x236220})[_0xd666('0xc0')](function(_0x396647){return _0x5d5614(_0x396647);})[_0xd666('0xb5')](function(_0x3f0e7d){_0x7c2336['outboundOriginateFailureCallsDay']+=0x1;var _0x3e6b86=new History(_0x4df978['actions'][_0x236220]);logger[_0xd666('0x9b')](util[_0xd666('0x7c')](_0xd666('0x19e'),JSON[_0xd666('0x50')](_0x3f0e7d)));_0x3e6b86['state']=0xe;_0x3e6b86[_0xd666('0xef')]=_0xd666('0x19f');_0x3e6b86[_0xd666('0xaf')]=moment()[_0xd666('0x7c')](_0xd666('0x10c'));_0x3e6b86[_0xd666('0xae')]=_0x3e6b86[_0xd666('0xaf')];_0x4df978[_0xd666('0xd3')](_0x3e6b86)[_0xd666('0xb5')](loggerCatch(_0xd666('0x1a0')));_0x4df978[_0xd666('0xd1')](_0x3e6b86)[_0xd666('0xb5')](loggerCatch(_0xd666('0x1a0')))[_0xd666('0x1f')](function(){delete _0x4df978[_0xd666('0x25')][_0x236220];return _0x5f08f1(msgResponse(_0xd666('0x178'),_0xd666('0x4f'),_0xd666('0x1a1')));});});});};Dialer[_0xd666('0x1c')][_0xd666('0x32')]=function(_0x48169e){var _0x3ac424=this[_0xd666('0x25')][_0x48169e['actionid']];if(_0x3ac424){delete this['actions'][_0x48169e[_0xd666('0x135')]];_0x3ac424[_0xd666('0x123')]=moment()[_0xd666('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5a6c56=_0x3ac424[_0xd666('0x54')]==='ivr'?this[_0xd666('0x22')][_0x3ac424['queue']]:this[_0xd666('0xb8')][_0x3ac424['getQueue']()];if(!this[_0xd666('0xe1')](_0x48169e['response'])){this[_0xd666('0xb7')](_0x5a6c56);return this[_0xd666('0x1a2')](_0x3ac424,_0x5a6c56,_0x48169e)[_0xd666('0xb5')](loggerCatch(_0xd666('0x1a3')));}this[_0xd666('0x26')][_0x48169e[_0xd666('0xe8')]]=_0x3ac424;}};Dialer[_0xd666('0x1c')][_0xd666('0x1a4')]=function(_0x41b4cc,_0x28fc82,_0x403dd2){var _0x25533e=new History(_0x28fc82);if(_0x25533e[_0xd666('0x111')]+_0x25533e[_0xd666('0xfd')]+_0x25533e[_0xd666('0xfe')]+_0x25533e[_0xd666('0xff')]+_0x25533e[_0xd666('0x100')]+_0x25533e[_0xd666('0x101')]+_0x25533e['countmachineretry']+_0x25533e[_0xd666('0x102')]>=_0x403dd2[_0xd666('0x103')]-0x1){return!![];}switch(_0x41b4cc){case 0x3:if(_0x25533e['countnoanswerretry']>=_0x403dd2[_0xd666('0x1a5')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x25533e[_0xd666('0xfe')]+=0x1,'scheduledat':moment()[_0xd666('0x109')](_0x403dd2[_0xd666('0x1a6')],_0xd666('0x10b'))[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x25533e['ContactId'],'ListId':_0x25533e['ListId'],'VoiceQueueId':_0x25533e[_0xd666('0xde')]||undefined,'CampaignId':_0x25533e[_0xd666('0xdf')]||undefined})['catch'](loggerCatch(_0xd666('0x1a7')));break;case 0x5:if(_0x25533e[_0xd666('0x111')]>=_0x403dd2[_0xd666('0x1a8')]-0x1){return!![];}this[_0xd666('0xc7')]({'active':![],'countbusyretry':_0x25533e[_0xd666('0x111')]+=0x1,'scheduledat':moment()[_0xd666('0x109')](_0x403dd2[_0xd666('0x1a9')],'minutes')[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x25533e['ContactId'],'ListId':_0x25533e[_0xd666('0xdc')],'VoiceQueueId':_0x25533e[_0xd666('0xde')]||undefined,'CampaignId':_0x25533e[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x1aa')));break;case 0x8:if(_0x25533e[_0xd666('0xfd')]>=_0x403dd2[_0xd666('0x1ab')]-0x1){return!![];}this[_0xd666('0xc7')]({'active':![],'countcongestionretry':_0x25533e[_0xd666('0xfd')]+=0x1,'scheduledat':moment()[_0xd666('0x109')](_0x403dd2[_0xd666('0x1ac')],_0xd666('0x10b'))[_0xd666('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x25533e[_0xd666('0xdb')],'ListId':_0x25533e[_0xd666('0xdc')],'VoiceQueueId':_0x25533e[_0xd666('0xde')]||undefined,'CampaignId':_0x25533e[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x25533e[_0xd666('0xff')]>=_0x403dd2['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0xd666('0xc7')]({'active':![],'countnosuchnumberretry':_0x25533e[_0xd666('0xff')]+=0x1,'scheduledat':moment()[_0xd666('0x109')](_0x403dd2[_0xd666('0x1ad')],_0xd666('0x10b'))[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x25533e[_0xd666('0xdb')],'ListId':_0x25533e[_0xd666('0xdc')],'VoiceQueueId':_0x25533e[_0xd666('0xde')]||undefined,'CampaignId':_0x25533e[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x1ae')));}break;case 0xa:if(_0x25533e['countdropretry']>=_0x403dd2[_0xd666('0x129')]-0x1){return!![];}this[_0xd666('0xc7')]({'active':![],'countdropretry':_0x25533e[_0xd666('0x100')]+=0x1,'scheduledat':moment()[_0xd666('0x109')](_0x403dd2[_0xd666('0x1af')],'minutes')['format'](_0xd666('0x10c')),'ContactId':_0x25533e[_0xd666('0xdb')],'ListId':_0x25533e['ListId'],'VoiceQueueId':_0x25533e[_0xd666('0xde')]||undefined,'CampaignId':_0x25533e[_0xd666('0xdf')]||undefined})['catch'](loggerCatch(_0xd666('0x12a')));break;case 0xb:if(_0x25533e[_0xd666('0x101')]>=_0x403dd2[_0xd666('0x130')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x25533e[_0xd666('0x101')]+=0x1,'scheduledat':moment()[_0xd666('0x109')](_0x403dd2[_0xd666('0x131')],'minutes')[_0xd666('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x25533e['ContactId'],'ListId':_0x25533e['ListId'],'VoiceQueueId':_0x25533e['VoiceQueueId']||undefined,'CampaignId':_0x25533e[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x25533e[_0xd666('0xf9')]>=_0x403dd2[_0xd666('0x106')]-0x1){return!![];}this[_0xd666('0xc7')]({'active':![],'countmachineretry':_0x25533e[_0xd666('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x403dd2[_0xd666('0x10a')],_0xd666('0x10b'))[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x25533e[_0xd666('0xdb')],'ListId':_0x25533e[_0xd666('0xdc')],'VoiceQueueId':_0x25533e[_0xd666('0xde')]||undefined,'CampaignId':_0x25533e[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x25533e['countagentrejectretry']>=_0x403dd2['dialAgentRejectMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x25533e['countagentrejectretry']+=0x1,'scheduledat':moment()[_0xd666('0x109')](_0x403dd2[_0xd666('0x1b0')],_0xd666('0x10b'))[_0xd666('0x7c')](_0xd666('0x10c')),'ContactId':_0x25533e[_0xd666('0xdb')],'ListId':_0x25533e[_0xd666('0xdc')],'VoiceQueueId':_0x25533e[_0xd666('0xde')]||undefined,'CampaignId':_0x25533e['CampaignId']||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x1b1')));break;default:return!![];}};Dialer['prototype']['callProgressDetecting']=function(_0x57e772,_0x308b59,_0x23a6bb){var _0x2db646=this;var _0x30f771=new History(_0x57e772);return new BPromise(function(_0x35ba50,_0x4db5de){if(_[_0xd666('0x42')](_0x308b59)&&typeof _0x308b59!==_0xd666('0x177')){return _0x4db5de(msgResponse(_0xd666('0x1b2'),_0xd666('0x153'),_0xd666('0x1b3')));}if(_[_0xd666('0x42')](_0x23a6bb)&&typeof _0x23a6bb!==_0xd666('0x177')){return _0x4db5de(msgResponse(_0xd666('0x1b2'),_0xd666('0x153'),_0xd666('0x1b4')));}switch(_0x23a6bb['reason']){case'0':_0x308b59['outboundNoSuchCallsDay']+=0x1;_0x30f771[_0xd666('0xee')]=0x0;_0x30f771[_0xd666('0xef')]='NoSuchNumber';_0x30f771[_0xd666('0xff')]+=0x1;_0x30f771[_0xd666('0xfa')]+=0x1;ami[_0xd666('0x53')](_0xd666('0x1b5'),ut['buildObj'](_0x57e772,_0xd666('0x1b6')));_0x2db646['createHistory'](_0x30f771)[_0xd666('0xb5')](loggerCatch(_0xd666('0xfc')));if(_0x2db646[_0xd666('0x1a4')](0x0,_0x57e772,_0x308b59)){if(_0x30f771[_0xd666('0xff')]>=_0x308b59[_0xd666('0x1b7')]){_0x2db646['createStateFinal'](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1b8'));}else{_0x2db646[_0xd666('0x104')](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1b8'));}}break;case'3':_0x308b59[_0xd666('0x6d')]+=0x1;_0x30f771[_0xd666('0xee')]=0x3;_0x30f771[_0xd666('0xef')]=_0xd666('0x1b9');_0x30f771[_0xd666('0xfe')]+=0x1;_0x30f771['countglobal']+=0x1;ami['emit'](_0xd666('0x1ba'),ut[_0xd666('0xf3')](_0x57e772,_0xd666('0x1bb')));_0x2db646['createHistory'](_0x30f771)[_0xd666('0xb5')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x2db646[_0xd666('0x1a4')](0x3,_0x57e772,_0x308b59)){if(_0x30f771['countnoanswerretry']>=_0x308b59[_0xd666('0x1a5')]){_0x2db646[_0xd666('0x107')](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1bc'));}else{_0x2db646[_0xd666('0x104')](_0x30f771,_0x35ba50,_0x4db5de,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x308b59[_0xd666('0x68')]+=0x1;_0x30f771[_0xd666('0xee')]=0x5;_0x30f771[_0xd666('0xef')]=_0xd666('0x1bd');_0x30f771[_0xd666('0x111')]+=0x1;_0x30f771[_0xd666('0xfa')]+=0x1;ami[_0xd666('0x53')](_0xd666('0x1be'),ut['buildObj'](_0x57e772,'busy'));_0x2db646['createHistory'](_0x30f771)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x2db646[_0xd666('0x1a4')](0x5,_0x57e772,_0x308b59)){if(_0x30f771['countbusyretry']>=_0x308b59[_0xd666('0x1a8')]){_0x2db646['createStateFinal'](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1bf'));}else{_0x2db646[_0xd666('0x104')](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1bf'));}}break;case'8':_0x308b59[_0xd666('0x69')]+=0x1;_0x30f771[_0xd666('0xee')]=0x8;_0x30f771[_0xd666('0xef')]=_0xd666('0x1c0');_0x30f771[_0xd666('0xfd')]+=0x1;_0x30f771[_0xd666('0xfa')]+=0x1;ami[_0xd666('0x53')](_0xd666('0x1c1'),ut[_0xd666('0xf3')](_0x57e772,_0xd666('0x1c2')));_0x2db646['createHistory'](_0x30f771)[_0xd666('0xb5')](loggerCatch(_0xd666('0x1c3')));if(_0x2db646[_0xd666('0x1a4')](0x8,_0x57e772,_0x308b59)){if(_0x30f771[_0xd666('0xfd')]>=_0x308b59['dialCongestionMaxRetry']){_0x2db646['createStateFinal'](_0x30f771,_0x35ba50,_0x4db5de,'reason\x208\x20congestion');}else{_0x2db646['stateGlobal'](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1c4'));}}break;case'11':_0x308b59[_0xd666('0x1c5')]+=0x1;_0x30f771['state']=0xb;_0x30f771[_0xd666('0xef')]=_0xd666('0x12e');_0x30f771['countabandonedretry']+=0x1;_0x30f771[_0xd666('0xfa')]+=0x1;_0x2db646['createHistory'](_0x30f771)[_0xd666('0xb5')](loggerCatch(_0xd666('0x133')));if(_0x2db646[_0xd666('0x1a4')](0xb,_0x57e772,_0x308b59)){if(_0x30f771[_0xd666('0x101')]>=_0x308b59['dialAbandonedMaxRetry']){_0x2db646[_0xd666('0x107')](_0x30f771,_0x35ba50,_0x4db5de,'reason\x2011\x20abandoned');}else{_0x2db646['stateGlobal'](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1c6'));}}break;case'20':_0x308b59['outboundRejectCallsDay']+=0x1;_0x30f771['state']=0x14;_0x30f771[_0xd666('0xef')]=_0xd666('0x1c7');_0x30f771['countagentrejectretry']+=0x1;_0x30f771[_0xd666('0xfa')]+=0x1;ami[_0xd666('0x53')](_0xd666('0x1c8'),ut['buildObj'](_0x57e772,_0xd666('0x1c9')));_0x2db646[_0xd666('0xd3')](_0x30f771)[_0xd666('0xb5')](loggerCatch(_0xd666('0x1ca')));if(_0x2db646['checkRetriveMax'](0x14,_0x57e772,_0x308b59)){if(_0x30f771['countagentrejectretry']>=_0x308b59['dialAgentRejectMaxRetry']){_0x2db646[_0xd666('0x107')](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1cb'));}else{_0x2db646[_0xd666('0x104')](_0x30f771,_0x35ba50,_0x4db5de,_0xd666('0x1cb'));}}break;default:_0x308b59[_0xd666('0x115')]+=0x1;_0x30f771[_0xd666('0xee')]=0xc;_0x30f771['statedesc']=_0x23a6bb[_0xd666('0x118')];_0x2db646[_0xd666('0xd3')](_0x30f771)[_0xd666('0xb5')](loggerCatch(_0xd666('0x1cc')));if(_0x2db646['checkRetriveMax'](_0x23a6bb[_0xd666('0x118')],_0x57e772,_0x308b59)){if(_0x30f771[_0xd666('0x111')]+_0x30f771[_0xd666('0xfd')]+_0x30f771['countnoanswerretry']+_0x30f771[_0xd666('0xff')]+_0x30f771['countdropretry']+_0x30f771[_0xd666('0x101')]+_0x30f771[_0xd666('0xf9')]+_0x30f771['countagentrejectretry']>=_0x308b59['dialGlobalMaxRetry']){_0x2db646['stateGlobal'](_0x30f771,_0x35ba50,_0x4db5de,_0x23a6bb[_0xd666('0x118')]);}else{_0x2db646['createStateFinal'](_0x30f771,_0x35ba50,_0x4db5de,_0x23a6bb[_0xd666('0x118')]);}}}});};Dialer[_0xd666('0x1c')]['stateGlobal']=function(_0xfe76e3,_0x1acb70,_0x5dc857,_0x2d6628){var _0x5caf0f=new Final(_0xfe76e3);_0x5caf0f[_0xd666('0xee')]=0xf;_0x5caf0f[_0xd666('0xef')]=_0xd666('0x1cd');this[_0xd666('0x107')](_0x5caf0f,_0x1acb70,_0x5dc857,_0x2d6628);};Dialer['prototype'][_0xd666('0x107')]=function(_0x45f387,_0x2d2711,_0xf4eca6,_0xc63895){this[_0xd666('0xd1')](_0x45f387)[_0xd666('0xc0')](function(){return _0x2d2711(msgResponse('[callProgressDetecting]','Success',_0xc63895));})[_0xd666('0xb5')](function(){return _0xf4eca6(msgResponse(_0xd666('0x1ce'),_0xd666('0x153'),_0xd666('0x1cf')));});};Dialer[_0xd666('0x1c')][_0xd666('0x168')]=function(_0x381f2c){var _0x4c9604=_0x381f2c[_0xd666('0x1d0')]/0x64;var _0x2e144e=_0x381f2c[_0xd666('0x6c')]/(_0x381f2c[_0xd666('0x6c')]+_0x381f2c['outboundAnswerCallsDay']);var _0x4b4621=Math['round'](_0x381f2c[_0xd666('0x75')]*(_0x381f2c['predictiveIntervalMaxThreshold']/0x64));var _0x2e8964=Math[_0xd666('0x1d1')](_0x381f2c['predictiveIntervalAvailable']*(_0x381f2c[_0xd666('0x1d2')]/0x64));var _0x47bfde=_0x381f2c['available']+_0x381f2c[_0xd666('0x5c')];var _0x289cf0=Math[_0xd666('0x1d3')](_0x381f2c[_0xd666('0x77')]*_0x381f2c[_0xd666('0x93')]*_0x381f2c[_0xd666('0x1d4')]*_0x381f2c['predictiveIntervalMultiplicativeFactor']);if(_[_0xd666('0x42')](_0x381f2c[_0xd666('0x29')])){if(!_[_0xd666('0x42')](_0x381f2c[_0xd666('0x28')])){_0x381f2c[_0xd666('0x28')]=undefined;loggerPredictive[_0xd666('0x9b')](_0xd666('0x1d5'),_0xd666('0x1d6'));}if(!_['isUndefined'](_0x381f2c[_0xd666('0x97')])){loggerPredictive[_0xd666('0x9b')](_0xd666('0x1d5'),_0xd666('0x1d7'));clearInterval(_0x381f2c[_0xd666('0x97')]);_0x381f2c[_0xd666('0x97')]=undefined;}_0x381f2c[_0xd666('0x29')]=moment()[_0xd666('0x7c')](_0xd666('0x10c'));loggerPredictive[_0xd666('0x82')](_0x381f2c[_0xd666('0x44')],'collection\x20data\x20in\x20progressive\x20at',_0x381f2c[_0xd666('0x29')]);this[_0xd666('0x166')](_0x381f2c,0x1);}else if(ifInterval(_0x381f2c[_0xd666('0x1d8')],_0x381f2c[_0xd666('0x29')])){this[_0xd666('0x166')](_0x381f2c,0x1);loggerPredictiveCalls[_0xd666('0x82')]('[startMethodPredictive][StartProgressive][Loop]',_0x381f2c['startProgressive'],_0x381f2c['name']);_0x381f2c['erlangCalls']=0x0;_0x381f2c[_0xd666('0x125')]=0x0;}else if(_0x4c9604<_0x2e144e&&_0x381f2c['dialPredictiveOptimization']===_0xd666('0x1d9')){freeVariablesPredictive(_0x381f2c);loggerPredictive[_0xd666('0x82')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0xd666('0x1da'),_0x2e144e,_0xd666('0x29'),_0x381f2c[_0xd666('0x44')]);}else if(_0x289cf0<_0x381f2c[_0xd666('0x125')]&&_0x381f2c['dialPredictiveOptimization']===_0xd666('0x1d9')){freeVariablesPredictive(_0x381f2c);loggerPredictive['info'](_0xd666('0x1db'),_0xd666('0x1dc'),_0x289cf0,_0xd666('0x1dd'),_0x381f2c['predictiveIntervalErlangCallsDroppedCalls'],_0xd666('0x29'),_0x381f2c[_0xd666('0x44')]);}else if(!ifInterval(_0x381f2c['dialPredictiveInterval'],_0x381f2c[_0xd666('0x29')])&&_['isUndefined'](_0x381f2c[_0xd666('0x28')])&&!_[_0xd666('0x42')](_0x381f2c['startProgressive'])){_0x381f2c['startPredictive']=moment()[_0xd666('0x7c')](_0xd666('0x10c'));loggerPredictive['info'](_0x381f2c[_0xd666('0x44')],_0xd666('0x1de'),_0x381f2c['startPredictive']);this[_0xd666('0xc4')](_0x381f2c[_0xd666('0x1d8')])[_0xd666('0xc0')](this[_0xd666('0x1df')](_0x381f2c))[_0xd666('0xc0')](mergeDataErlangB(_0x381f2c))[_0xd666('0xc0')](this[_0xd666('0x1e0')](_0x381f2c))['catch'](loggerCatchPredictive(_0xd666('0x1e1'),_0x381f2c));}else if(!ifInterval(_0x381f2c[_0xd666('0x1d8')],_0x381f2c['startPredictive'])){_0x381f2c[_0xd666('0x125')]=0x0;_0x381f2c[_0xd666('0x28')]=moment()[_0xd666('0x7c')](_0xd666('0x10c'));loggerPredictive[_0xd666('0x82')](_0x381f2c[_0xd666('0x44')],_0xd666('0x1e2'),_0x381f2c[_0xd666('0x28')]);clearInterval(_0x381f2c[_0xd666('0x97')]);_0x381f2c[_0xd666('0x97')]=undefined;this[_0xd666('0xc4')](_0x381f2c[_0xd666('0x1d8')])['then'](this[_0xd666('0x1df')](_0x381f2c))['then'](mergeDataErlangB(_0x381f2c))[_0xd666('0xc0')](this[_0xd666('0x1e0')](_0x381f2c))[_0xd666('0xb5')](loggerCatchPredictive(_0xd666('0x1e3'),_0x381f2c));}else if(_0x381f2c[_0xd666('0x75')]&&_0x47bfde<_0x381f2c[_0xd666('0x75')]-_0x2e8964){freeVariablesPredictive(_0x381f2c);loggerPredictive[_0xd666('0x82')](_0x381f2c['name'],_0xd666('0x1e4'),_0x47bfde,_0xd666('0x1e5'),_0x381f2c[_0xd666('0x75')],'-',_0x2e8964,'=',_0x381f2c[_0xd666('0x75')]-_0x2e8964,')');}else if(_0x381f2c[_0xd666('0x75')]&&_0x47bfde>_0x381f2c['predictiveIntervalAvailable']+_0x4b4621){freeVariablesPredictive(_0x381f2c);loggerPredictive[_0xd666('0x82')](_0x381f2c[_0xd666('0x44')],_0xd666('0x1e4'),_0x47bfde,_0xd666('0x1e6'),_0x381f2c[_0xd666('0x75')],'+',_0x4b4621,'=',_0x381f2c[_0xd666('0x75')]+_0x4b4621,')');}};Dialer['prototype'][_0xd666('0x1df')]=function(_0xc4e362){var _0x322052=this;return function(_0x30604d){return new BPromise(function(_0xbd7375,_0x47ebd2){_['merge'](_0xc4e362,_0x30604d[0x0]);if(checkGetDataPredictive(_0x30604d[0x0])){var _0x47e08a=_0xc4e362[_0xd666('0x75')]=_0xc4e362[_0xd666('0x5c')]+_0xc4e362[_0xd666('0x1e7')];var _0x541882=_0xc4e362[_0xd666('0x1d8')]*0x3c;var _0x127d31=_0x30604d[0x0][_0xd666('0x72')]+_0x30604d[0x0][_0xd666('0x71')];var _0x240a09=(_0x30604d[0x0][_0xd666('0x85')]+_0x30604d[0x0][_0xd666('0x73')]+_0x30604d[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x30604d[0x0][_0xd666('0x84')];_0xc4e362[_0xd666('0x1d4')]=_0x240a09>0x0?_0x240a09:0x1;switch(_0xc4e362[_0xd666('0x1e8')]){case _0xd666('0x1d9'):var _0x130328=_0xc4e362[_0xd666('0x1d0')]/0x64;return _0x322052[_0xd666('0x1e9')](_0x47e08a,_0x541882,_0x127d31,_0x240a09,_0x130328)[_0xd666('0xc0')](function(_0x350069){return _0xbd7375(_0x350069);});case _0xd666('0x1ea'):var _0x16c36e=_0xc4e362['dialPredictiveOptimizationPercentage']/0x64;return _0x322052[_0xd666('0x1eb')](_0x47e08a,_0x541882,_0x127d31,_0x240a09,_0x16c36e)[_0xd666('0xc0')](function(_0x4ce706){return _0xbd7375(_0x4ce706);});default:return _0x47ebd2(msgResponse(_0xd666('0x1ec'),_0xd666('0x153'),_0xd666('0x1ed')));}}else{return _0x47ebd2(msgResponse(_0xd666('0x1ec'),_0xd666('0x153'),_0xd666('0x1ee')));}});};};Dialer[_0xd666('0x1c')][_0xd666('0x1ef')]=function(_0x26ed2f){var _0xe8da89=this;return function(_0x2509b0){return new BPromise(function(_0x3dee1e,_0x798580){_[_0xd666('0x1f0')](_0x26ed2f,_0x2509b0[0x0]);if(checkGetDataPredictive(_0x2509b0[0x0])){loggerPredictive[_0xd666('0x82')](JSON['stringify'](_0x2509b0[0x0]));if(_0x26ed2f[_0xd666('0x1e8')]===_0xd666('0x1d9')){return _0xe8da89[_0xd666('0xcf')](_0x26ed2f['id'])[_0xd666('0xc0')](function(_0x5c7cd5){var _0x4ba604=_0x26ed2f[_0xd666('0x58')]-_0x5c7cd5[0x0][_0xd666('0x1f1')];var _0x2c9ae3=_0x26ed2f[_0xd666('0x1d8')]*0x3c;var _0x7ebf5d=_0x2509b0[0x0]['predictiveIntervalAvgTalktime']+_0x2509b0[0x0][_0xd666('0x71')];var _0x220d29=(_0x2509b0[0x0][_0xd666('0x85')]+_0x2509b0[0x0][_0xd666('0x73')]+_0x2509b0[0x0][_0xd666('0x87')])/_0x2509b0[0x0][_0xd666('0x84')];var _0xdf7b56=_0x26ed2f[_0xd666('0x1d0')]/0x64;_0x26ed2f[_0xd666('0x1f2')]=_0x5c7cd5[0x0][_0xd666('0x1f1')]||0x0;_0x26ed2f['predictiveIntervalHitRate']=_0x220d29>0x0?_0x220d29:0x1;return _0xe8da89[_0xd666('0x1e9')](_0x4ba604,_0x2c9ae3,_0x7ebf5d,_0x220d29,_0xdf7b56);})[_0xd666('0xc0')](function(_0xcefd57){return _0x3dee1e(_0xcefd57);})[_0xd666('0xb5')](function(_0x7a9597){return _0x798580(msgResponse(_0xd666('0x1f3'),_0xd666('0x153'),JSON[_0xd666('0x50')](_0x7a9597)));});}if(_0x26ed2f[_0xd666('0x1e8')]==='agentBusyFactor'){return _0xe8da89[_0xd666('0xcf')](_0x26ed2f['id'])[_0xd666('0xc0')](function(_0x45c4d1){var _0x2572c5=_0x26ed2f[_0xd666('0x58')]-_0x45c4d1[0x0]['outboundQueuePauses'];var _0x136865=_0x26ed2f[_0xd666('0x1d8')]*0x3c;var _0x10c9f0=_0x2509b0[0x0][_0xd666('0x72')]+_0x2509b0[0x0]['predictiveIntervalAvgHoldtime'];var _0x33d2fc=(_0x2509b0[0x0][_0xd666('0x85')]+_0x2509b0[0x0][_0xd666('0x73')]+_0x2509b0[0x0][_0xd666('0x87')])/_0x2509b0[0x0][_0xd666('0x84')];var _0x3a8746=_0x26ed2f['dialPredictiveOptimizationPercentage']/0x64;_0x26ed2f[_0xd666('0x1f2')]=_0x45c4d1[0x0]['outboundQueuePauses']||0x0;_0x26ed2f['predictiveIntervalHitRate']=_0x33d2fc>0x0?_0x33d2fc:0x1;return _0xe8da89[_0xd666('0x1eb')](_0x2572c5,_0x136865,_0x10c9f0,_0x33d2fc,_0x3a8746);})[_0xd666('0xc0')](function(_0x1882b2){return _0x3dee1e(_0x1882b2);})[_0xd666('0xb5')](function(_0x35f716){return _0x798580(msgResponse('[CatchErlangB]',_0xd666('0x153'),JSON[_0xd666('0x50')](_0x35f716)));});}}else{return _0x798580(msgResponse(_0xd666('0x1ec'),'Failure',_0xd666('0x1ee')));}});};};Dialer[_0xd666('0x1c')][_0xd666('0x1e0')]=function(_0x72c8e8){var _0x280014=this;return function(){var _0x307fe3=0x0;var _0x30df13=Math[_0xd666('0x1d3')](_0x72c8e8[_0xd666('0x91')]*0x3e8);if(_0x30df13>0x0){_0x30df13=_0x30df13<0x64?0x64:_0x30df13;loggerPredictive[_0xd666('0x82')](_0x72c8e8['name'],_0xd666('0x1f4'),_0x30df13,'milliseconds');_0x72c8e8['handlePredictive']=setInterval(function(){_0x280014['handlePredictive'](_0x72c8e8);loggerPredictiveCalls[_0xd666('0x82')](_0xd666('0x1f5'),_0x307fe3+=0x1);},_0x30df13);}else{loggerPredictive[_0xd666('0x82')](_0x72c8e8['name'],_0xd666('0x1f6'));}};};Dialer[_0xd666('0x1c')][_0xd666('0x1f7')]=function(_0xe67391,_0x53f90c){var _0x64441e=this;return function(_0x521f70){if(_[_0xd666('0x4d')](_0x521f70)){if(_[_0xd666('0xb3')](_0x53f90c[_0xd666('0xdd')])||!_0x53f90c['recallme']){if(_0xe67391['dialMethod']===_0xd666('0x9')){_0xe67391['queueStatusComplete']=_[_0xd666('0x42')](_0xe67391[_0xd666('0x13c')])?!![]:_0xe67391[_0xd666('0x13c')];var _0x4dae40=uuid['v4']();_0x64441e[_0xd666('0x25')][_0x4dae40]=new Action(_0xe67391,_0x53f90c,_0x4dae40);loggerBooked['info'](_0xd666('0x1f8'),_0x4dae40,'queueStatusComplete:\x20',JSON[_0xd666('0x50')](_0xe67391[_0xd666('0x13c')]),_0xd666('0x1f9'),_0xe67391[_0xd666('0x44')]);if(_0xe67391[_0xd666('0x13c')]){_0xe67391['queueStatusComplete']=![];_0x64441e[_0xd666('0x2b')][_0x64441e[_0xd666('0x25')][_0x4dae40][_0xd666('0xb9')]]=[];ami[_0xd666('0xb4')]({'actionid':_0x4dae40,'action':_0xd666('0x1fa'),'queue':_0xe67391['name']})[_0xd666('0xb5')](function(){_0x64441e[_0xd666('0xb7')](_0xe67391);_0x64441e[_0xd666('0xc7')]({'active':![],'ContactId':_0x64441e[_0xd666('0x25')][_0x4dae40][_0xd666('0xdb')],'ListId':_0x64441e[_0xd666('0x25')][_0x4dae40][_0xd666('0xdc')],'VoiceQueueId':_0x64441e[_0xd666('0x25')][_0x4dae40]['VoiceQueueId']||undefined,'CampaignId':_0x64441e[_0xd666('0x25')][_0x4dae40][_0xd666('0xdf')]||undefined})['catch'](loggerCatch(_0xd666('0x1fb')));delete _0x64441e[_0xd666('0x25')][_0x4dae40];});}else{loggerBooked['info'](_0xd666('0x1fc'),JSON[_0xd666('0x50')](_0xe67391[_0xd666('0x13c')]),_0xd666('0x1f9'),_0xe67391[_0xd666('0x44')]);_0x64441e[_0xd666('0xb7')](_0xe67391);_0x64441e[_0xd666('0xc7')]({'active':![],'ContactId':_0x64441e['actions'][_0x4dae40][_0xd666('0xdb')],'ListId':_0x64441e[_0xd666('0x25')][_0x4dae40][_0xd666('0xdc')],'VoiceQueueId':_0x64441e[_0xd666('0x25')][_0x4dae40][_0xd666('0xde')]||undefined,'CampaignId':_0x64441e[_0xd666('0x25')][_0x4dae40][_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x64441e[_0xd666('0x25')][_0x4dae40];}}else{return _0x64441e[_0xd666('0x176')](_0xe67391,_0x53f90c);}}else{if(getDiff(_0x53f90c[_0xd666('0x1fd')])<_0xe67391[_0xd666('0x1fe')]*0x3c){if(_0x53f90c[_0xd666('0x1ff')]&&!_0x53f90c[_0xd666('0x1ff')][_0xd666('0x200')]){_0x64441e[_0xd666('0x21')][_0xd666('0x13f')](_0x53f90c['id'])[_0xd666('0x1f')](function(){_0x64441e[_0xd666('0xb7')](_0xe67391);});}else{_0x64441e[_0xd666('0xc8')]({'active':![]},_0x53f90c['id'],0x1)[_0xd666('0x1f')](function(){_0x64441e[_0xd666('0xb7')](_0xe67391);});}}else{_0xe67391['outboundReCallsDay']+=0x1;_0x64441e[_0xd666('0xb7')](_0xe67391);if(_0xe67391['dialRecallInQueue']){_0x64441e[_0xd666('0xc7')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x53f90c['ContactId'],'ListId':_0x53f90c['ListId'],'VoiceQueueId':_0x53f90c[_0xd666('0xde')]||undefined,'CampaignId':_0x53f90c[_0xd666('0xdf')]||undefined})[_0xd666('0xb5')](loggerCatch(_0xd666('0x201')));_0x64441e[_0xd666('0xd3')](createObjHistory(_0xe67391,_0x53f90c,_0xd666('0x202'),0x17,_0xd666('0x203')))[_0xd666('0xb5')](loggerCatch(_0xd666('0x204')));}else{_0x64441e[_0xd666('0xda')](createObjHistory(_0xe67391,_0x53f90c,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),'[Originate][HistoryRecallClose][historyCatch]',_0xd666('0x205'));}}}}else{_0xe67391[_0xd666('0x206')]+=0x1;_0x64441e['saveInDb'](createObjHistory(_0xe67391,_0x53f90c,_0xd666('0x207'),0xd,_0xd666('0x208')),_0xd666('0x209'),_0xd666('0x20a'));throw _0xd666('0x20b');}};};Dialer[_0xd666('0x1c')]['handleIvr']=function(_0x24c85a){var _0x57e8f7=this;var _0x37c185=_0x24c85a[_0xd666('0x20c')]-_0x24c85a[_0xd666('0x76')]-_0x24c85a[_0xd666('0xcb')];emitCampaignSummary(_0x24c85a);if(_0x37c185>0x0){if(_0x37c185>this[_0xd666('0x20d')]){_0x37c185=this[_0xd666('0x20d')];}_0x24c85a[_0xd666('0xcb')]+=_0x37c185;this[_0xd666('0xcd')](_0x24c85a['id'],_0x37c185,_0x24c85a[_0xd666('0x20e')],_0x24c85a)[_0xd666('0xc0')](function(_0xc254c7){_0x24c85a[_0xd666('0xcb')]-=_0x37c185;_0x24c85a['temp']=_0x24c85a[_0xd666('0xcb')]>0x0?_0x24c85a[_0xd666('0xcb')]:0x0;if(!checkContactEmpty(_0xc254c7)){_0x24c85a['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0xd666('0x82')](_0xd666('0x20f')+_0x24c85a[_0xd666('0x44')]);}else{_0x24c85a[_0xd666('0x76')]+=_0xc254c7[_0xd666('0x9d')];_0x24c85a[_0xd666('0x46')]='RUNNING';for(var _0x3269b3=0x0;_0x3269b3<_0xc254c7[_0xd666('0x9d')];_0x3269b3+=0x1){_0x24c85a[_0xd666('0x210')]+=0x1;if(_['isNil'](_0xc254c7[_0x3269b3])||_[_0xd666('0xb3')](_0xc254c7[_0x3269b3][_0xd666('0x179')])||_[_0xd666('0xb3')](_0xc254c7[_0x3269b3][_0xd666('0x179')]['phone'])){_0x57e8f7['emptyContact'](_0xd666('0x211'),_0x24c85a,_0xc254c7[_0x3269b3]);}else{_0x57e8f7[_0xd666('0xc2')](_['pick'](_0xc254c7[_0x3269b3],[_0xd666('0xdf'),_0xd666('0x212')]))[_0xd666('0xc0')](_0x57e8f7[_0xd666('0x1f7')](_0x24c85a,_0xc254c7[_0x3269b3]))[_0xd666('0xb5')](_0x57e8f7[_0xd666('0xd7')](_0xd666('0x213'),_0x24c85a));}}}})[_0xd666('0xb5')](loggerGetContactDialer(_0xd666('0x214'),_0x24c85a,_0x37c185));}};Dialer[_0xd666('0x1c')][_0xd666('0x166')]=function(_0x5770c0,_0x39a1ab){var _0x2cbbe6=this;var _0x490505=[];var _0x17bfd6=_0x39a1ab>=0x1?_0x39a1ab:0x1;if(_0x5770c0[_0xd666('0x62')]===_0xd666('0x9')){_0x17bfd6=0x1;}var _0x307e5d=Math['floor'](_0x5770c0[_0xd666('0x1e7')]*_0x17bfd6)-_0x5770c0[_0xd666('0x76')]-_0x5770c0[_0xd666('0xcb')];emitVoiceQueueSummary(_0x5770c0);if(_0x5770c0[_0xd666('0x215')]>0x0){var _0x45e33b=_0x5770c0[_0xd666('0x215')]-_0x5770c0[_0xd666('0x76')]-_0x5770c0[_0xd666('0x5c')]-_0x5770c0[_0xd666('0xcb')]-_0x5770c0[_0xd666('0x59')];if(_0x307e5d>_0x45e33b){_0x307e5d=_0x45e33b;}}if(_0x307e5d>0x0){if(_0x5770c0['dialMethod']===_0xd666('0x9')){_0x307e5d=0x1;}if(_0x307e5d>this[_0xd666('0x20d')]){_0x307e5d=this['maxNumberOriginate'];}_0x5770c0['temp']+=_0x307e5d;for(var _0x4b20f7 in this[_0xd666('0x23')]){if(typeof this[_0xd666('0x23')][_0x4b20f7]!==_0xd666('0x9e')){if(this['agents'][_0x4b20f7][_0xd666('0xee')]===_0xd666('0x216')&&this[_0xd666('0x23')][_0x4b20f7][_0xd666('0xe4')]===_0xd666('0xe5')){_0x490505[_0xd666('0x139')](this[_0xd666('0x23')][_0x4b20f7]['id']);}}}this['getContactDialer'](_0x5770c0['id'],_0x490505,_0x307e5d,_0x5770c0[_0xd666('0x20e')],_0x5770c0)[_0xd666('0xc0')](function(_0x2d04aa){_0x5770c0['temp']-=_0x307e5d;_0x5770c0[_0xd666('0xcb')]=_0x5770c0[_0xd666('0xcb')]>0x0?_0x5770c0[_0xd666('0xcb')]:0x0;if(!checkContactEmpty(_0x2d04aa)){_0x2cbbe6[_0xd666('0xbc')](_0x5770c0)['then'](sendMessageReschedule(_0x5770c0))[_0xd666('0xb5')](loggerCatch(_0xd666('0xbd')));}else{_0x5770c0['originated']+=_0x2d04aa[_0xd666('0x9d')];_0x5770c0[_0xd666('0x46')]=_0x5770c0[_0xd666('0x62')]===_0xd666('0x9')?'ACTIVE':'RUNNING';for(var _0x3a7fc6=0x0;_0x3a7fc6<_0x2d04aa['length'];_0x3a7fc6+=0x1){if(_[_0xd666('0xb3')](_0x2d04aa[_0x3a7fc6])||_[_0xd666('0xb3')](_0x2d04aa[_0x3a7fc6]['Contact'])||_['isNil'](_0x2d04aa[_0x3a7fc6][_0xd666('0x179')][_0xd666('0x17a')])){_0x2cbbe6[_0xd666('0xd8')](_0xd666('0x211'),_0x5770c0,_0x2d04aa[_0x3a7fc6]);}else{_0x2cbbe6[_0xd666('0xbe')](_[_0xd666('0x13a')](_0x2d04aa[_0x3a7fc6],[_0xd666('0xde'),'Contact.phone']))[_0xd666('0xc0')](_0x2cbbe6[_0xd666('0x1f7')](_0x5770c0,_0x2d04aa[_0x3a7fc6]))[_0xd666('0xb5')](_0x2cbbe6[_0xd666('0xd7')]('[actionOriginate]\x20',_0x5770c0));}}}})[_0xd666('0xb5')](loggerGetContactDialer('[getContactDialer2]',_0x5770c0,_0x307e5d));}};Dialer['prototype'][_0xd666('0x97')]=function(_0x1ad1e4){if(_0x1ad1e4[_0xd666('0x215')]>0x0){var _0x210742=_0x1ad1e4['dialLimitQueue']-_0x1ad1e4[_0xd666('0x76')]-_0x1ad1e4[_0xd666('0x5c')];if(_0x210742>0x0){this[_0xd666('0x217')](_0x1ad1e4);}else{loggerPredictiveCalls[_0xd666('0x82')](_0xd666('0x218'));}}else{this[_0xd666('0x217')](_0x1ad1e4);}};Dialer['prototype'][_0xd666('0x217')]=function(_0x34d2da){var _0x421f79=this;var _0x130d82=[];_0x34d2da[_0xd666('0x76')]+=0x1;for(var _0x400650 in this[_0xd666('0x23')]){if(typeof this[_0xd666('0x23')][_0x400650]!==_0xd666('0x9e')){if(this['agents'][_0x400650][_0xd666('0xee')]==='not_inuse'&&this[_0xd666('0x23')][_0x400650][_0xd666('0xe4')]==='reachable'){_0x130d82[_0xd666('0x139')](this[_0xd666('0x23')][_0x400650]['id']);}}}this[_0xd666('0xca')](_0x34d2da['id'],_0x130d82,0x1,_0x34d2da[_0xd666('0x20e')],_0x34d2da)[_0xd666('0xc0')](function(_0x571f48){if(!checkContactEmpty(_0x571f48)){checkContactLowerLimitOriginate(_0x34d2da,0x1,0x0);_0x421f79[_0xd666('0xbc')](_0x34d2da)[_0xd666('0xc0')](sendMessageReschedule(_0x34d2da))['catch'](loggerCatch(_0xd666('0xbd')));}else{_0x34d2da['message']='RUNNING';if(_['isNil'](_0x571f48[0x0])||_[_0xd666('0xb3')](_0x571f48[0x0][_0xd666('0x179')])||_[_0xd666('0xb3')](_0x571f48[0x0][_0xd666('0x179')][_0xd666('0x17a')])){_0x421f79['emptyContact']('[actionOriginate]\x20',_0x34d2da,_0x571f48[0x0]);}else{_0x421f79['checkIsBlackList'](_[_0xd666('0x13a')](_0x571f48[0x0],['VoiceQueueId',_0xd666('0x212')]))['then'](_0x421f79['checkContactBlack'](_0x34d2da,_0x571f48[0x0]))['catch'](_0x421f79[_0xd666('0xd7')](_0xd666('0x219'),_0x34d2da));}}})[_0xd666('0xb5')](loggerGetContactDialer(_0xd666('0x21a'),_0x34d2da,0x1));emitVoiceQueueSummary(_0x34d2da);};Dialer[_0xd666('0x1c')][_0xd666('0x1e9')]=function(_0xcbc797,_0x2abfe1,_0x271076,_0x44edb5,_0x1b0cd6,_0x5031a2){loggerPredictive[_0xd666('0x82')](_0xd666('0x21b'));loggerPredictive[_0xd666('0x82')]('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xcbc797);loggerPredictive[_0xd666('0x82')](_0xd666('0x21c'),_0x2abfe1);loggerPredictive['info']('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x271076);loggerPredictive[_0xd666('0x82')](_0xd666('0x21d'),_0x44edb5);loggerPredictive[_0xd666('0x82')](_0xd666('0x21e'),_0x1b0cd6);loggerPredictive[_0xd666('0x82')]('---------------------------');return new BPromise(function(_0x2209e1,_0x29622b){if(_0xcbc797<=0x0||isNaN(_0xcbc797)){return _0x29622b(msgResponse(_0xd666('0x21f'),_0xd666('0x4f'),_0xd666('0x220')+_0xcbc797));}if(_0x271076<=0x0||isNaN(_0x271076)){return _0x29622b(msgResponse('[abandonmentRate]',_0xd666('0x4f'),_0xd666('0x221')+_0x271076));}if(_0x44edb5<=0x0||isNaN(_0x44edb5)){return _0x29622b(msgResponse(_0xd666('0x21f'),'Error','p\x20=\x20'+_0x44edb5));}if(_0x2abfe1<=0x0||isNaN(_0x2abfe1)){return _0x29622b(msgResponse('[abandonmentRate]',_0xd666('0x4f'),_0xd666('0x222')+_0x2abfe1));}if(_0x1b0cd6<=0x0||isNaN(_0x1b0cd6)){return _0x29622b(msgResponse(_0xd666('0x21f'),_0xd666('0x4f'),_0xd666('0x223')+_0x1b0cd6));}_0x5031a2=_0x5031a2||0x0;var _0x156f39=0x1/_0x271076;var _0x4dc4fd=0x0;var _0x2f2507=0x0;var _0x5c4e93=0x0;var _0x5096a3=0x0;for(var _0x21ab58=0x0;_0x5c4e93<_0x1b0cd6;_0x21ab58+=0x1){_0x2f2507=_0x21ab58/_0x2abfe1;_0x4dc4fd=(_0x44edb5*_0x2f2507+_0x5031a2)/_0x156f39;_0x5c4e93=erlangb(_0x4dc4fd,_0xcbc797);_0x5096a3=_0x4dc4fd/_0xcbc797*(0x1-erlangb(_0x4dc4fd,_0xcbc797));}return _0x2209e1({'erlangCalls':_0x21ab58,'erlangCallToSecond':_0x2abfe1/_0x21ab58,'erlangAbandonmentRate':_0x5c4e93,'erlangBusyFactor':_0x5096a3});});};Dialer[_0xd666('0x1c')][_0xd666('0x1eb')]=function(_0x4f67b0,_0x33e3f6,_0x1d0815,_0x155442,_0x18e647,_0x4b428b){loggerPredictive['info'](_0xd666('0x224'));loggerPredictive[_0xd666('0x82')](_0xd666('0x225'),_0x4f67b0);loggerPredictive[_0xd666('0x82')](_0xd666('0x21c'),_0x33e3f6);loggerPredictive['info'](_0xd666('0x226'),_0x1d0815);loggerPredictive[_0xd666('0x82')](_0xd666('0x21d'),_0x155442);loggerPredictive[_0xd666('0x82')](_0xd666('0x227'),_0x18e647);loggerPredictive[_0xd666('0x82')](_0xd666('0x94'));return new BPromise(function(_0x1d571e,_0x4bf97e){if(_0x4f67b0<=0x0||isNaN(_0x4f67b0)){return _0x4bf97e(msgResponse(_0xd666('0x228'),_0xd666('0x4f'),'m\x20=\x20'+_0x4f67b0));}if(_0x1d0815<=0x0||isNaN(_0x1d0815)){return _0x4bf97e(msgResponse(_0xd666('0x228'),'Error',_0xd666('0x221')+_0x1d0815));}if(_0x155442<=0x0||isNaN(_0x155442)){return _0x4bf97e(msgResponse('[busyFactor]',_0xd666('0x4f'),'p\x20=\x20'+_0x155442));}if(_0x33e3f6<=0x0||isNaN(_0x33e3f6)){return _0x4bf97e(msgResponse(_0xd666('0x228'),_0xd666('0x4f'),'interval\x20=\x20'+_0x33e3f6));}if(_0x18e647<=0x0||isNaN(_0x18e647)){return _0x4bf97e(msgResponse('[busyFactor]',_0xd666('0x4f'),_0xd666('0x229')+_0x18e647));}_0x4b428b=_0x4b428b||0x0;var _0x3e78e0=0x1/_0x1d0815;var _0x8fcf02=0x0;var _0x331497=0x0;var _0x4fc576=0x0;var _0x3335cf=0x0;for(var _0x4fc7e3=0x0;_0x3335cf<_0x18e647;_0x4fc7e3+=0x1){_0x331497=_0x4fc7e3/_0x33e3f6;_0x8fcf02=(_0x155442*_0x331497+_0x4b428b)/_0x3e78e0;_0x4fc576=erlangb(_0x8fcf02,_0x4f67b0);_0x3335cf=_0x8fcf02/_0x4f67b0*(0x1-erlangb(_0x8fcf02,_0x4f67b0));}return _0x1d571e({'erlangCalls':_0x4fc7e3,'erlangCallToSecond':_0x33e3f6/_0x4fc7e3,'erlangAbandonmentRate':_0x4fc576,'erlangBusyFactor':_0x3335cf});});};module[_0xd666('0x22a')]=Dialer;
\ No newline at end of file
index 738e631..73c64fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c2=['scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countnosuchnumberretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','droptime','endtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','milliseconds','diff','seconds'];(function(_0x2d2258,_0x2ce510){var _0x18e155=function(_0x11949e){while(--_0x11949e){_0x2d2258['push'](_0x2d2258['shift']());}};_0x18e155(++_0x2ce510);}(_0x43c2,0x13c));var _0x243c=function(_0x2ca348,_0x17f1b2){_0x2ca348=_0x2ca348-0x0;var _0xf93152=_0x43c2[_0x2ca348];return _0xf93152;};'use strict';var util=require('util');var _=require(_0x243c('0x0'));var moment=require('moment');function getSeconds(_0x4ce4dd,_0x212cd2){var _0x436ad9=moment(_0x4ce4dd)[_0x243c('0x1')](0x0);var _0xbb6c8f=moment(_0x212cd2)[_0x243c('0x1')](0x0);return _0x436ad9[_0x243c('0x2')](_0xbb6c8f,_0x243c('0x3'));}function QueueCallerAbandon(_0x5ad4bc,_0x841af4){this[_0x243c('0x4')]=_0x5ad4bc[_0x243c('0x4')];this[_0x243c('0x5')]=_0x5ad4bc[_0x243c('0x5')];this[_0x243c('0x6')]=_0x5ad4bc[_0x243c('0x5')]===_0x243c('0x7')?_0x243c('0x8'):_0x5ad4bc[_0x243c('0x5')];this[_0x243c('0x9')]=_0x5ad4bc[_0x243c('0x9')];this['countcongestionretry']=_0x5ad4bc[_0x243c('0xa')];this['countnoanswerretry']=_0x5ad4bc[_0x243c('0xb')];this[_0x243c('0xc')]=_0x5ad4bc[_0x243c('0x9')]+_0x5ad4bc[_0x243c('0xa')]+_0x5ad4bc[_0x243c('0xb')]+_0x5ad4bc['countnosuchnumberretry']+_0x5ad4bc[_0x243c('0xd')]+_0x5ad4bc[_0x243c('0xe')]+_0x5ad4bc[_0x243c('0xf')]+_0x5ad4bc['countagentrejectretry'];this['countnosuchnumberretry']=_0x5ad4bc[_0x243c('0x10')];this[_0x243c('0xd')]=_0x5ad4bc['countdropretry'];this[_0x243c('0xe')]=_0x5ad4bc[_0x243c('0xe')];this[_0x243c('0xf')]=_0x5ad4bc[_0x243c('0xf')];this['countagentrejectretry']=_0x5ad4bc[_0x243c('0x11')];this[_0x243c('0x12')]=_0x841af4[_0x243c('0x12')];this['calleridname']=_0x5ad4bc[_0x243c('0x13')];this[_0x243c('0x14')]=_0x5ad4bc[_0x243c('0x15')];this[_0x243c('0x16')]=_0x5ad4bc[_0x243c('0x16')];this['responsetime']=_0x5ad4bc[_0x243c('0x17')];this[_0x243c('0x18')]=_0x5ad4bc[_0x243c('0x18')];this[_0x243c('0x19')]=this[_0x243c('0x18')];this['ringtime']=getSeconds(_0x5ad4bc[_0x243c('0x17')],_0x5ad4bc['starttime']);this['holdtime']=getSeconds(this[_0x243c('0x18')],_0x5ad4bc[_0x243c('0x17')]);this['talktime']=0x0;this[_0x243c('0x8')]=_0x841af4[_0x243c('0x8')];this[_0x243c('0x1a')]=_0x841af4['connectedlinename'];this[_0x243c('0x1b')]=_0x841af4['reason'];this['callback']=_0x5ad4bc[_0x243c('0x1c')];this[_0x243c('0x1d')]=_0x5ad4bc[_0x243c('0x1d')];this[_0x243c('0x1e')]=_0x5ad4bc[_0x243c('0x1e')];this[_0x243c('0x1f')]=_0x5ad4bc[_0x243c('0x1f')];this[_0x243c('0x20')]=_0x5ad4bc[_0x243c('0x20')];this[_0x243c('0x21')]=_0x5ad4bc[_0x243c('0x21')];this[_0x243c('0x22')]=_0x5ad4bc[_0x243c('0x22')];this[_0x243c('0x23')]=_0x5ad4bc[_0x243c('0x23')];this[_0x243c('0x24')]=_0x5ad4bc[_0x243c('0x24')];this[_0x243c('0x25')]=_0x5ad4bc[_0x243c('0x25')]||'';this[_0x243c('0x26')]=_0x5ad4bc[_0x243c('0x26')]||'';}module[_0x243c('0x27')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x28b7=['seconds','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x28b7,0x128));var _0x728b=function(_0x13a0b0,_0x5b4f02){_0x13a0b0=_0x13a0b0-0x0;var _0x9cb7eb=_0x28b7[_0x13a0b0];return _0x9cb7eb;};'use strict';var util=require(_0x728b('0x0'));var _=require(_0x728b('0x1'));var moment=require(_0x728b('0x2'));function getSeconds(_0x49d493,_0x371f9d){var _0xd76d9e=moment(_0x49d493)[_0x728b('0x3')](0x0);var _0x45ecc7=moment(_0x371f9d)[_0x728b('0x3')](0x0);return _0xd76d9e[_0x728b('0x4')](_0x45ecc7,_0x728b('0x5'));}function QueueCallerAbandon(_0x5a183c,_0x2abbc7){this['scheduledat']=_0x5a183c[_0x728b('0x6')];this[_0x728b('0x7')]=_0x5a183c[_0x728b('0x7')];this['campaigntype']=_0x5a183c[_0x728b('0x7')]===_0x728b('0x8')?_0x728b('0x9'):_0x5a183c['type'];this[_0x728b('0xa')]=_0x5a183c[_0x728b('0xa')];this[_0x728b('0xb')]=_0x5a183c[_0x728b('0xb')];this['countnoanswerretry']=_0x5a183c[_0x728b('0xc')];this['countglobal']=_0x5a183c[_0x728b('0xa')]+_0x5a183c[_0x728b('0xb')]+_0x5a183c[_0x728b('0xc')]+_0x5a183c['countnosuchnumberretry']+_0x5a183c['countdropretry']+_0x5a183c[_0x728b('0xd')]+_0x5a183c[_0x728b('0xe')]+_0x5a183c[_0x728b('0xf')];this[_0x728b('0x10')]=_0x5a183c[_0x728b('0x10')];this['countdropretry']=_0x5a183c['countdropretry'];this[_0x728b('0xd')]=_0x5a183c[_0x728b('0xd')];this[_0x728b('0xe')]=_0x5a183c[_0x728b('0xe')];this[_0x728b('0xf')]=_0x5a183c[_0x728b('0xf')];this[_0x728b('0x11')]=_0x2abbc7['uniqueid'];this[_0x728b('0x12')]=_0x5a183c[_0x728b('0x13')];this[_0x728b('0x14')]=_0x5a183c[_0x728b('0x15')];this['starttime']=_0x5a183c[_0x728b('0x16')];this[_0x728b('0x17')]=_0x5a183c[_0x728b('0x17')];this[_0x728b('0x18')]=_0x5a183c[_0x728b('0x18')];this['endtime']=this[_0x728b('0x18')];this[_0x728b('0x19')]=getSeconds(_0x5a183c['responsetime'],_0x5a183c[_0x728b('0x16')]);this[_0x728b('0x1a')]=getSeconds(this[_0x728b('0x18')],_0x5a183c[_0x728b('0x17')]);this[_0x728b('0x1b')]=0x0;this[_0x728b('0x9')]=_0x2abbc7[_0x728b('0x9')];this[_0x728b('0x1c')]=_0x2abbc7[_0x728b('0x1d')];this[_0x728b('0x1e')]=_0x2abbc7[_0x728b('0x1e')];this[_0x728b('0x1f')]=_0x5a183c[_0x728b('0x1f')];this[_0x728b('0x20')]=_0x5a183c[_0x728b('0x20')];this['callbackat']=_0x5a183c[_0x728b('0x21')];this[_0x728b('0x22')]=_0x5a183c[_0x728b('0x22')];this[_0x728b('0x23')]=_0x5a183c[_0x728b('0x23')];this[_0x728b('0x24')]=_0x5a183c[_0x728b('0x24')];this[_0x728b('0x25')]=_0x5a183c[_0x728b('0x25')];this[_0x728b('0x26')]=_0x5a183c[_0x728b('0x26')];this[_0x728b('0x27')]=_0x5a183c[_0x728b('0x27')];this['originatecalleridnum']=_0x5a183c[_0x728b('0x28')]||'';this[_0x728b('0x29')]=_0x5a183c[_0x728b('0x29')]||'';}module[_0x728b('0x2a')]=QueueCallerAbandon;
\ No newline at end of file
index cedc537..2b6eb68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x4b20ac,_0x39ae53){var _0x27f823=function(_0x3bb9f9){while(--_0x3bb9f9){_0x4b20ac['push'](_0x4b20ac['shift']());}};_0x27f823(++_0x39ae53);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x3c61b3,_0x5910a6){var _0x5e5914=function(_0x44a83a){while(--_0x44a83a){_0x3c61b3['push'](_0x3c61b3['shift']());}};_0x5e5914(++_0x5910a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index afcccc7..62e3979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['syncHangup','syncOriginateResponse','context','from-voip-provider','hasOwnProperty','uniqueid','channel','name','\x20syncNewchannel\x20','info','prototype','syncVarSet','variable','value','syncNewState','channelstatedesc','syncNewExten','syncFaxStatus','operation','status','localstationid','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','create','parse','notify','.pdf','\x20notify\x20','stringify','catch','error','\x20receiveFax\x20','pick','response','AttachmentId','update','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','message','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','addVariables','ext','isTrunkReachable','isNil','active','trunks','SIP/%s','reachable','unmonitored','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','tiff2pdf','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','actions','syncNewchannel','bind','varset','receivefax','syncReceiveFax'];(function(_0x16051a,_0x5e4326){var _0x35d20d=function(_0x52b02e){while(--_0x52b02e){_0x16051a['push'](_0x16051a['shift']());}};_0x35d20d(++_0x5e4326);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0xf06a7e,_0x5134ff){_0xf06a7e=_0xf06a7e-0x0;var _0xf4e93f=_0xe1e3[_0xf06a7e];return _0xf4e93f;};'use strict';var util=require(_0x3e1e('0x0'));var _=require(_0x3e1e('0x1'));var BPromise=require('bluebird');var uuid=require(_0x3e1e('0x2'));var moment=require('moment');var path=require('path');var tiff2pdf=require(_0x3e1e('0x3'));var gs=require('./util/gs');var logger=require(_0x3e1e('0x4'))(_0x3e1e('0x5'));var ami=require(_0x3e1e('0x6'));var rpcDb=require(_0x3e1e('0x7'));var Channel=require(_0x3e1e('0x8'));var ut=require(_0x3e1e('0x9'));var Action=require('./action');var faxAccount=require(_0x3e1e('0xa'));var attachment=require(_0x3e1e('0xb'));var faxMessage=require(_0x3e1e('0xc'));function Fax(_0xa67e35){this[_0x3e1e('0xd')]={};this[_0x3e1e('0xe')]=_0xa67e35['faxAccounts'];this['trunks']=_0xa67e35['trunks'];this[_0x3e1e('0xf')]={};ami['on']('newchannel',this[_0x3e1e('0x10')][_0x3e1e('0x11')](this));ami['on'](_0x3e1e('0x12'),this['syncVarSet'][_0x3e1e('0x11')](this));ami['on']('newstate',this['syncNewState']['bind'](this));ami['on']('newexten',this['syncNewExten'][_0x3e1e('0x11')](this));ami['on']('faxstatus',this['syncFaxStatus'][_0x3e1e('0x11')](this));ami['on'](_0x3e1e('0x13'),this[_0x3e1e('0x14')]['bind'](this));ami['on']('hangup',this[_0x3e1e('0x15')][_0x3e1e('0x11')](this));ami['on']('originateresponse',this[_0x3e1e('0x16')][_0x3e1e('0x11')](this));}Fax['prototype'][_0x3e1e('0x10')]=function(_0x4d0feb){if(_0x4d0feb[_0x3e1e('0x17')]===_0x3e1e('0x18')){for(var _0x1d786c in this[_0x3e1e('0xe')]){if(this[_0x3e1e('0xe')][_0x3e1e('0x19')](_0x1d786c)){if(_0x4d0feb['exten']===this['faxAccounts'][_0x1d786c]['localstationid']){this[_0x3e1e('0xd')][_0x4d0feb[_0x3e1e('0x1a')]]={};this[_0x3e1e('0xd')][_0x4d0feb['uniqueid']][_0x3e1e('0x1b')]=_0x4d0feb['channel'];this[_0x3e1e('0xd')][_0x4d0feb[_0x3e1e('0x1a')]]['id']=this[_0x3e1e('0xe')][_0x1d786c]['id'];this['channels'][_0x4d0feb[_0x3e1e('0x1a')]][_0x3e1e('0x1c')]=this[_0x3e1e('0xe')][_0x1d786c]['name'];logger['info'](_0x4d0feb[_0x3e1e('0x1a')],_0x3e1e('0x1d'));}}}}if(this['actions'][_0x4d0feb[_0x3e1e('0x1a')]]){this[_0x3e1e('0xd')][_0x4d0feb[_0x3e1e('0x1a')]]={};this[_0x3e1e('0xd')][_0x4d0feb[_0x3e1e('0x1a')]][_0x3e1e('0x1b')]=_0x4d0feb[_0x3e1e('0x1b')];logger[_0x3e1e('0x1e')](_0x4d0feb['uniqueid'],'\x20syncNewchannel\x20');}};Fax[_0x3e1e('0x1f')][_0x3e1e('0x20')]=function(_0x55db8f){if(this['channels'][_0x55db8f['uniqueid']]){for(var _0x1a33bb in _0x55db8f[_0x3e1e('0x21')]){if(_0x55db8f['variable'][_0x3e1e('0x19')](_0x1a33bb)){this['channels'][_0x55db8f[_0x3e1e('0x1a')]][_0x1a33bb]=_0x55db8f[_0x3e1e('0x22')];}}}};Fax['prototype'][_0x3e1e('0x23')]=function(_0x210a84){if(this[_0x3e1e('0xd')][_0x210a84['uniqueid']]){this[_0x3e1e('0xd')][_0x210a84['uniqueid']]['channelstate']=_0x210a84['channelstate'];this[_0x3e1e('0xd')][_0x210a84['uniqueid']]['channelstatedesc']=_0x210a84[_0x3e1e('0x24')];}};Fax[_0x3e1e('0x1f')][_0x3e1e('0x25')]=function(_0x233b18){if(this[_0x3e1e('0xd')][_0x233b18['uniqueid']]){for(var _0x5522ba in _0x233b18['variable']){if(_0x233b18['variable'][_0x3e1e('0x19')](_0x5522ba)){this[_0x3e1e('0xd')][_0x233b18[_0x3e1e('0x1a')]][_0x5522ba]=_0x233b18[_0x3e1e('0x22')];}}}};Fax[_0x3e1e('0x1f')][_0x3e1e('0x26')]=function(_0x135d83){if(this[_0x3e1e('0xd')][_0x135d83['uniqueid']]){this[_0x3e1e('0xd')][_0x135d83[_0x3e1e('0x1a')]]['operation']=_0x135d83[_0x3e1e('0x27')];this[_0x3e1e('0xd')][_0x135d83[_0x3e1e('0x1a')]][_0x3e1e('0x28')]=_0x135d83['status'];this['channels'][_0x135d83[_0x3e1e('0x1a')]][_0x3e1e('0x29')]=_0x135d83['localstationid'];this[_0x3e1e('0xd')][_0x135d83[_0x3e1e('0x1a')]]['filename']=_0x135d83[_0x3e1e('0x2a')];logger[_0x3e1e('0x1e')](_0x135d83[_0x3e1e('0x1a')],_0x3e1e('0x2b'));}};Fax[_0x3e1e('0x1f')]['syncReceiveFax']=function(_0x1da527){var _0x42556a=this;if(this[_0x3e1e('0xd')][_0x1da527[_0x3e1e('0x1a')]]){var _0x51d779=this[_0x3e1e('0xd')][_0x1da527[_0x3e1e('0x1a')]]['id'];this[_0x3e1e('0xd')][_0x1da527[_0x3e1e('0x1a')]][_0x3e1e('0x2c')]=_0x1da527[_0x3e1e('0x2c')];this[_0x3e1e('0xd')][_0x1da527['uniqueid']][_0x3e1e('0x2d')]=_0x1da527['pagestransferred'];this['channels'][_0x1da527[_0x3e1e('0x1a')]][_0x3e1e('0x29')]=_0x1da527[_0x3e1e('0x29')];this['channels'][_0x1da527[_0x3e1e('0x1a')]][_0x3e1e('0x2e')]=_0x1da527['resolution'];this[_0x3e1e('0xd')][_0x1da527[_0x3e1e('0x1a')]]['transferrate']=_0x1da527['transferrate'];this[_0x3e1e('0xd')][_0x1da527['uniqueid']]['filename']=_0x1da527[_0x3e1e('0x2a')];this[_0x3e1e('0xd')][_0x1da527[_0x3e1e('0x1a')]][_0x3e1e('0x2f')]=_0x1da527[_0x3e1e('0x2f')];if(this['channels'][_0x1da527['uniqueid']][_0x3e1e('0x2d')]>0x0){tiff2pdf(_0x1da527[_0x3e1e('0x2a')],_0x3e1e('0x30'),function(_0x52e227){logger[_0x3e1e('0x1e')](_0x1da527[_0x3e1e('0x1a')],_0x3e1e('0x31'),_0x52e227['message']);attachment[_0x3e1e('0x32')]({'name':path['parse'](_0x1da527['filename'])[_0x3e1e('0x1c')],'basename':path[_0x3e1e('0x33')](_0x1da527[_0x3e1e('0x2a')])[_0x3e1e('0x1c')]+'.pdf','type':'application/pdf'})['then'](function(_0x593996){faxAccount[_0x3e1e('0x34')](_0x51d779,{'from':_0x1da527[_0x3e1e('0x2f')],'mapKey':'fax','body':path['parse'](_0x1da527[_0x3e1e('0x2a')])[_0x3e1e('0x1c')]+_0x3e1e('0x35'),'AttachmentId':_0x593996['id']})['catch'](function(_0x30f1d0){logger['error'](_0x1da527[_0x3e1e('0x1a')],_0x3e1e('0x36'),JSON[_0x3e1e('0x37')](_0x30f1d0));});})[_0x3e1e('0x38')](function(_0x28338a){logger[_0x3e1e('0x39')](_0x1da527['uniqueid'],_0x3e1e('0x3a'),JSON[_0x3e1e('0x37')](_0x28338a));});});}logger['info'](_0x1da527[_0x3e1e('0x1a')],_0x3e1e('0x3a'));}};Fax['prototype'][_0x3e1e('0x16')]=function(_0x347b3f){if(this[_0x3e1e('0xf')][_0x347b3f[_0x3e1e('0x1a')]]){_['merge'](this[_0x3e1e('0xd')][_0x347b3f[_0x3e1e('0x1a')]],_[_0x3e1e('0x3b')](_0x347b3f,[_0x3e1e('0x3c'),'reason']));}};function updateStatus(_0xbeaf39){if(_0xbeaf39[_0x3e1e('0x3d')]){faxMessage[_0x3e1e('0x3e')](_0xbeaf39[_0x3e1e('0x3d')],{'failMessage':_0x3e1e('0x3f')})[_0x3e1e('0x40')](function(_0x2d1fe9){ut[_0x3e1e('0x41')]('[Fax][Message][Error][Updated]',_0x2d1fe9);})[_0x3e1e('0x38')](function(_0x48b5e7){ut['logger']('[Fax][Message][Error][NoUpdate1]',_0x48b5e7);});}else{ut[_0x3e1e('0x41')](_0x3e1e('0x42'));}}Fax['prototype'][_0x3e1e('0x43')]=function(_0x592733,_0x5b2416,_0x3eaf76){var _0x58d425=this;var _0x56f69f={};if(_0x5b2416){_0x56f69f={'read':_0x5b2416};}else{_0x56f69f={'failMessage':_0x3eaf76};}if(this['actions'][_0x592733][_0x3e1e('0x3d')]){faxMessage[_0x3e1e('0x3e')](this[_0x3e1e('0xf')][_0x592733][_0x3e1e('0x3d')],_0x56f69f)[_0x3e1e('0x40')](function(_0xe18f8a){ut[_0x3e1e('0x41')]('[Fax][Message][Updated]',_0xe18f8a);})[_0x3e1e('0x38')](function(_0x5f5587){ut[_0x3e1e('0x41')](_0x3e1e('0x44'),_0x5f5587);})[_0x3e1e('0x45')](function(){delete _0x58d425['channels'][_0x592733];delete _0x58d425['actions'][_0x592733];});}else{ut[_0x3e1e('0x41')](_0x3e1e('0x46'));delete this['channels'][_0x592733];delete this[_0x3e1e('0xf')][_0x592733];}};Fax['prototype']['syncHangup']=function(_0x284cc7){var _0x3451ed=this;if(this['channels'][_0x284cc7[_0x3e1e('0x1a')]]){if(this['actions'][_0x284cc7['uniqueid']]){this[_0x3e1e('0xd')][_0x284cc7['uniqueid']]['id']=this[_0x3e1e('0xf')][_0x284cc7['uniqueid']]['id'];this[_0x3e1e('0xd')][_0x284cc7['uniqueid']][_0x3e1e('0x1c')]=this[_0x3e1e('0xf')][_0x284cc7['uniqueid']]['name'];}logger['info'](_0x284cc7[_0x3e1e('0x1a')],this[_0x3e1e('0xf')][_0x284cc7[_0x3e1e('0x1a')]]?'\x20hangup\x20sendFile\x20':_0x3e1e('0x47'),JSON[_0x3e1e('0x37')](this[_0x3e1e('0xd')][_0x284cc7['uniqueid']]));if(this['actions'][_0x284cc7[_0x3e1e('0x1a')]]){if(this['channels'][_0x284cc7[_0x3e1e('0x1a')]][_0x3e1e('0x48')]>0x0&&this[_0x3e1e('0xd')][_0x284cc7['uniqueid']][_0x3e1e('0x49')]==='SUCCESS'){this[_0x3e1e('0x43')](_0x284cc7[_0x3e1e('0x1a')],!![]);}else{this['updateStatus'](_0x284cc7[_0x3e1e('0x1a')],![],this['channels'][_0x284cc7[_0x3e1e('0x1a')]]['faxstatusstring']?_0x3e1e('0x4a')+this['channels'][_0x284cc7[_0x3e1e('0x1a')]][_0x3e1e('0x4b')]:_0x3e1e('0x4c'));}}}};Fax['prototype'][_0x3e1e('0x4d')]=function(_0x1fbcfc){var _0x4e6957=this;return new BPromise(function(_0x238ce0,_0x583535){_0x4e6957['execOriginate'](_0x1fbcfc,_0x4e6957['faxAccounts'][_0x1fbcfc[_0x3e1e('0x4e')]])[_0x3e1e('0x40')](function(_0x384ee6){ut[_0x3e1e('0x41')](_0x3e1e('0x4f'),_0x384ee6);_0x238ce0(ut[_0x3e1e('0x50')](_0x3e1e('0x51')));})['catch'](function(_0x30830d){ut[_0x3e1e('0x41')](_0x3e1e('0x52'),_0x30830d);updateStatus(_0x1fbcfc);_0x583535(ut[_0x3e1e('0x50')](_0x3e1e('0x53')));});});};Fax[_0x3e1e('0x1f')][_0x3e1e('0x54')]=function(_0x4314d3){var _0x4c3d6b=this;return new BPromise(function(_0x580192,_0x3d26b2){var _0x27c3d2=_0x4c3d6b[_0x3e1e('0x55')](_0x4c3d6b[_0x3e1e('0xe')][_0x4314d3[_0x3e1e('0x4e')]][_0x3e1e('0x56')],_0x4314d3);if(_0x27c3d2[_0x3e1e('0x57')]){_0x580192(ut[_0x3e1e('0x50')](_0x3e1e('0x58')));}else{_0x3d26b2(ut[_0x3e1e('0x50')](_0x27c3d2[_0x3e1e('0x50')]));}});};function originate(_0x50ba57,_0x5e148e,_0x5581ee){return new BPromise(function(_0x20bc4d,_0x29ddc4){if(_0x5581ee){var _0x477e64=util[_0x3e1e('0x59')](_0x3e1e('0x5a'),path['parse'](_0x50ba57[_0x3e1e('0x5b')])[_0x3e1e('0x1c')],_0x50ba57[_0x3e1e('0x5b')]);gs[_0x3e1e('0x5c')](_0x477e64)[_0x3e1e('0x40')](function(){_0x50ba57['path']=util[_0x3e1e('0x59')](_0x3e1e('0x5d'),path[_0x3e1e('0x33')](_0x50ba57[_0x3e1e('0x5b')])[_0x3e1e('0x5e')],path[_0x3e1e('0x33')](_0x50ba57['path'])[_0x3e1e('0x1c')]);_0x5e148e[_0x3e1e('0x5f')]=_0x50ba57[_0x3e1e('0x5b')];ut[_0x3e1e('0x41')](_0x3e1e('0x60'),'');ami[_0x3e1e('0x61')](ut['variablesAction'](_0x50ba57,_0x5e148e))[_0x3e1e('0x40')](function(_0x468fd2){_0x20bc4d(_0x468fd2);})[_0x3e1e('0x38')](function(_0x109407){_0x29ddc4(_0x109407);});})[_0x3e1e('0x38')](function(_0x12e315){_0x29ddc4(_0x12e315);});}else{ami['Action'](ut[_0x3e1e('0x62')](_0x50ba57,_0x5e148e))['then'](function(_0x167544){_0x20bc4d(_0x167544);})[_0x3e1e('0x38')](function(_0x5c7565){_0x29ddc4(_0x5c7565);});}});}Fax[_0x3e1e('0x1f')][_0x3e1e('0x63')]=function(_0x98def8,_0x43f2b4){var _0x49b219=this;return new BPromise(function(_0x381b57,_0x4a7dcc){var _0x2d6bb0=uuid['v4']();var _0x7f1301=ut[_0x3e1e('0x64')](_0x98def8,_0x43f2b4);_0x49b219[_0x3e1e('0xf')][_0x2d6bb0]=new Action(_0x2d6bb0,_0x43f2b4,_0x98def8);var _0x2ef476=_0x49b219[_0x3e1e('0xf')][_0x2d6bb0];if(path['parse'](_0x98def8[_0x3e1e('0x5b')])[_0x3e1e('0x65')]===_0x3e1e('0x35')){originate(_0x2ef476,_0x7f1301,!![])[_0x3e1e('0x40')](function(_0x4b4fd4){_0x381b57(_0x4b4fd4);})[_0x3e1e('0x38')](function(_0x11eb0a){_0x4a7dcc(_0x11eb0a);});}else{originate(_0x2ef476,_0x7f1301,![])[_0x3e1e('0x40')](function(_0x405671){_0x381b57(_0x405671);})['catch'](function(_0x2211c6){_0x4a7dcc(_0x2211c6);});}});};Fax[_0x3e1e('0x1f')][_0x3e1e('0x66')]=function(_0x2161a4){return!_[_0x3e1e('0x67')](_0x2161a4)&&!_[_0x3e1e('0x67')](_0x2161a4['name'])&&!_['isNil'](_0x2161a4['active'])&&_0x2161a4[_0x3e1e('0x68')]&&!_['isNil'](this[_0x3e1e('0x69')][util['format'](_0x3e1e('0x6a'),_0x2161a4[_0x3e1e('0x1c')])])&&!_[_0x3e1e('0x67')](this[_0x3e1e('0x69')][util['format'](_0x3e1e('0x6a'),_0x2161a4['name'])][_0x3e1e('0x28')])&&(this['trunks'][util[_0x3e1e('0x59')](_0x3e1e('0x6a'),_0x2161a4['name'])][_0x3e1e('0x28')]===_0x3e1e('0x6b')||this[_0x3e1e('0x69')][util['format']('SIP/%s',_0x2161a4[_0x3e1e('0x1c')])][_0x3e1e('0x28')]===_0x3e1e('0x6c'));};Fax['prototype'][_0x3e1e('0x55')]=function(_0x51f83f,_0x57c99b){if(!this['isTrunkReachable'](_0x51f83f)){ut[_0x3e1e('0x41')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0x3e1e('0x67')](_0x51f83f)?'':_0x51f83f[_0x3e1e('0x1c')]+_0x3e1e('0x6d'));return{'isValid':![],'message':_0x3e1e('0x6e')};}if(_[_0x3e1e('0x67')](_0x57c99b[_0x3e1e('0x5')])){ut[_0x3e1e('0x41')](_0x3e1e('0x6f'),JSON[_0x3e1e('0x37')](_0x57c99b));return{'isValid':![],'message':'Empty\x20Fax'};}if(_['isNil'](_0x57c99b[_0x3e1e('0x5b')])){ut[_0x3e1e('0x41')](_0x3e1e('0x70'),JSON[_0x3e1e('0x37')](_0x57c99b));return{'isValid':![],'message':_0x3e1e('0x71')};}return{'isValid':!![],'message':_0x3e1e('0x72')};};module[_0x3e1e('0x73')]=Fax;
\ No newline at end of file
+var _0x3266=['uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','../ami','./channel','./util/util','./action','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','faxstatus','syncReceiveFax','hangup','syncHangup','originateresponse','hasOwnProperty','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','variable','value','channelstate','channelstatedesc','syncFaxStatus','operation','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','notify','fax','catch','error','stringify','\x20receiveFax\x20','merge','pick','response','AttachmentId','update','SENDING\x20FAILED\x20','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','execOriginate','FaxAccountId','then','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','format','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','ext','isNil','active','status','SIP/%s','reachable','[Fax][checkTrunk][Trunk\x20not\x20work]','Trunk\x20not\x20working','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','lodash','bluebird'];(function(_0x4a5851,_0x4316df){var _0x284f7f=function(_0x724f18){while(--_0x724f18){_0x4a5851['push'](_0x4a5851['shift']());}};_0x284f7f(++_0x4316df);}(_0x3266,0x6a));var _0x6326=function(_0x44b3bd,_0x44c97d){_0x44b3bd=_0x44b3bd-0x0;var _0x1efc4a=_0x3266[_0x44b3bd];return _0x1efc4a;};'use strict';var util=require(_0x6326('0x0'));var _=require(_0x6326('0x1'));var BPromise=require(_0x6326('0x2'));var uuid=require(_0x6326('0x3'));var moment=require(_0x6326('0x4'));var path=require(_0x6326('0x5'));var tiff2pdf=require(_0x6326('0x6'));var gs=require(_0x6326('0x7'));var logger=require(_0x6326('0x8'))('fax');var ami=require(_0x6326('0x9'));var rpcDb=require('./rpcDb');var Channel=require(_0x6326('0xa'));var ut=require(_0x6326('0xb'));var Action=require(_0x6326('0xc'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x6326('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x2af571){this[_0x6326('0xe')]={};this[_0x6326('0xf')]=_0x2af571[_0x6326('0xf')];this[_0x6326('0x10')]=_0x2af571['trunks'];this[_0x6326('0x11')]={};ami['on'](_0x6326('0x12'),this[_0x6326('0x13')][_0x6326('0x14')](this));ami['on'](_0x6326('0x15'),this[_0x6326('0x16')][_0x6326('0x14')](this));ami['on'](_0x6326('0x17'),this[_0x6326('0x18')][_0x6326('0x14')](this));ami['on']('newexten',this['syncNewExten'][_0x6326('0x14')](this));ami['on'](_0x6326('0x19'),this['syncFaxStatus'][_0x6326('0x14')](this));ami['on']('receivefax',this[_0x6326('0x1a')][_0x6326('0x14')](this));ami['on'](_0x6326('0x1b'),this[_0x6326('0x1c')][_0x6326('0x14')](this));ami['on'](_0x6326('0x1d'),this['syncOriginateResponse'][_0x6326('0x14')](this));}Fax['prototype']['syncNewchannel']=function(_0x55dd9f){if(_0x55dd9f['context']==='from-voip-provider'){for(var _0x58e960 in this[_0x6326('0xf')]){if(this[_0x6326('0xf')][_0x6326('0x1e')](_0x58e960)){if(_0x55dd9f['exten']===this['faxAccounts'][_0x58e960][_0x6326('0x1f')]){this[_0x6326('0xe')][_0x55dd9f[_0x6326('0x20')]]={};this[_0x6326('0xe')][_0x55dd9f[_0x6326('0x20')]][_0x6326('0x21')]=_0x55dd9f[_0x6326('0x21')];this['channels'][_0x55dd9f[_0x6326('0x20')]]['id']=this['faxAccounts'][_0x58e960]['id'];this[_0x6326('0xe')][_0x55dd9f[_0x6326('0x20')]][_0x6326('0x22')]=this[_0x6326('0xf')][_0x58e960][_0x6326('0x22')];logger[_0x6326('0x23')](_0x55dd9f[_0x6326('0x20')],_0x6326('0x24'));}}}}if(this[_0x6326('0x11')][_0x55dd9f[_0x6326('0x20')]]){this[_0x6326('0xe')][_0x55dd9f['uniqueid']]={};this[_0x6326('0xe')][_0x55dd9f[_0x6326('0x20')]]['channel']=_0x55dd9f['channel'];logger['info'](_0x55dd9f[_0x6326('0x20')],'\x20syncNewchannel\x20');}};Fax[_0x6326('0x25')][_0x6326('0x16')]=function(_0x5a907f){if(this[_0x6326('0xe')][_0x5a907f[_0x6326('0x20')]]){for(var _0xb68fec in _0x5a907f[_0x6326('0x26')]){if(_0x5a907f[_0x6326('0x26')][_0x6326('0x1e')](_0xb68fec)){this[_0x6326('0xe')][_0x5a907f[_0x6326('0x20')]][_0xb68fec]=_0x5a907f[_0x6326('0x27')];}}}};Fax[_0x6326('0x25')][_0x6326('0x18')]=function(_0x2a8873){if(this[_0x6326('0xe')][_0x2a8873[_0x6326('0x20')]]){this[_0x6326('0xe')][_0x2a8873[_0x6326('0x20')]]['channelstate']=_0x2a8873[_0x6326('0x28')];this[_0x6326('0xe')][_0x2a8873[_0x6326('0x20')]]['channelstatedesc']=_0x2a8873[_0x6326('0x29')];}};Fax['prototype']['syncNewExten']=function(_0xfb6b62){if(this[_0x6326('0xe')][_0xfb6b62[_0x6326('0x20')]]){for(var _0x103b1c in _0xfb6b62[_0x6326('0x26')]){if(_0xfb6b62[_0x6326('0x26')][_0x6326('0x1e')](_0x103b1c)){this[_0x6326('0xe')][_0xfb6b62[_0x6326('0x20')]][_0x103b1c]=_0xfb6b62[_0x6326('0x27')];}}}};Fax[_0x6326('0x25')][_0x6326('0x2a')]=function(_0x55aa3b){if(this[_0x6326('0xe')][_0x55aa3b[_0x6326('0x20')]]){this['channels'][_0x55aa3b[_0x6326('0x20')]][_0x6326('0x2b')]=_0x55aa3b[_0x6326('0x2b')];this['channels'][_0x55aa3b[_0x6326('0x20')]]['status']=_0x55aa3b['status'];this[_0x6326('0xe')][_0x55aa3b[_0x6326('0x20')]][_0x6326('0x1f')]=_0x55aa3b['localstationid'];this[_0x6326('0xe')][_0x55aa3b['uniqueid']][_0x6326('0x2c')]=_0x55aa3b['filename'];logger[_0x6326('0x23')](_0x55aa3b[_0x6326('0x20')],_0x6326('0x2d'));}};Fax[_0x6326('0x25')][_0x6326('0x1a')]=function(_0x207fb1){var _0x4f6c8a=this;if(this[_0x6326('0xe')][_0x207fb1[_0x6326('0x20')]]){var _0x489f05=this[_0x6326('0xe')][_0x207fb1['uniqueid']]['id'];this['channels'][_0x207fb1[_0x6326('0x20')]][_0x6326('0x2e')]=_0x207fb1[_0x6326('0x2e')];this[_0x6326('0xe')][_0x207fb1[_0x6326('0x20')]][_0x6326('0x2f')]=_0x207fb1['pagestransferred'];this['channels'][_0x207fb1[_0x6326('0x20')]]['localstationid']=_0x207fb1[_0x6326('0x1f')];this['channels'][_0x207fb1[_0x6326('0x20')]][_0x6326('0x30')]=_0x207fb1[_0x6326('0x30')];this[_0x6326('0xe')][_0x207fb1[_0x6326('0x20')]][_0x6326('0x31')]=_0x207fb1[_0x6326('0x31')];this[_0x6326('0xe')][_0x207fb1[_0x6326('0x20')]][_0x6326('0x2c')]=_0x207fb1[_0x6326('0x2c')];this['channels'][_0x207fb1[_0x6326('0x20')]]['calleridnum']=_0x207fb1[_0x6326('0x32')];if(this[_0x6326('0xe')][_0x207fb1[_0x6326('0x20')]][_0x6326('0x2f')]>0x0){tiff2pdf(_0x207fb1['filename'],_0x6326('0x33'),function(_0x255a70){logger['info'](_0x207fb1[_0x6326('0x20')],_0x6326('0x34'),_0x255a70[_0x6326('0x35')]);attachment[_0x6326('0x36')]({'name':path['parse'](_0x207fb1[_0x6326('0x2c')])[_0x6326('0x22')],'basename':path[_0x6326('0x37')](_0x207fb1[_0x6326('0x2c')])[_0x6326('0x22')]+_0x6326('0x38'),'type':_0x6326('0x39')})['then'](function(_0x2f6a90){faxAccount[_0x6326('0x3a')](_0x489f05,{'from':_0x207fb1[_0x6326('0x32')],'mapKey':_0x6326('0x3b'),'body':path['parse'](_0x207fb1[_0x6326('0x2c')])['name']+_0x6326('0x38'),'AttachmentId':_0x2f6a90['id']})[_0x6326('0x3c')](function(_0x119559){logger[_0x6326('0x3d')](_0x207fb1[_0x6326('0x20')],'\x20notify\x20',JSON[_0x6326('0x3e')](_0x119559));});})['catch'](function(_0x5e0e2f){logger[_0x6326('0x3d')](_0x207fb1[_0x6326('0x20')],'\x20receiveFax\x20',JSON[_0x6326('0x3e')](_0x5e0e2f));});});}logger[_0x6326('0x23')](_0x207fb1[_0x6326('0x20')],_0x6326('0x3f'));}};Fax[_0x6326('0x25')]['syncOriginateResponse']=function(_0x4af0ee){if(this[_0x6326('0x11')][_0x4af0ee[_0x6326('0x20')]]){_[_0x6326('0x40')](this[_0x6326('0xe')][_0x4af0ee[_0x6326('0x20')]],_[_0x6326('0x41')](_0x4af0ee,[_0x6326('0x42'),'reason']));}};function updateStatus(_0x1b5f5b){if(_0x1b5f5b[_0x6326('0x43')]){faxMessage[_0x6326('0x44')](_0x1b5f5b[_0x6326('0x43')],{'failMessage':_0x6326('0x45')})['then'](function(_0x189bef){ut['logger'](_0x6326('0x46'),_0x189bef);})[_0x6326('0x3c')](function(_0x585dec){ut[_0x6326('0x47')]('[Fax][Message][Error][NoUpdate1]',_0x585dec);});}else{ut[_0x6326('0x47')](_0x6326('0x48'));}}Fax[_0x6326('0x25')][_0x6326('0x49')]=function(_0x58731d,_0x42c8bc,_0xbe6b3e){var _0x5c3641=this;var _0x39f3b1={};if(_0x42c8bc){_0x39f3b1={'read':_0x42c8bc};}else{_0x39f3b1={'failMessage':_0xbe6b3e};}if(this[_0x6326('0x11')][_0x58731d][_0x6326('0x43')]){faxMessage['update'](this[_0x6326('0x11')][_0x58731d][_0x6326('0x43')],_0x39f3b1)['then'](function(_0x16e606){ut['logger'](_0x6326('0x4a'),_0x16e606);})[_0x6326('0x3c')](function(_0x3e9825){ut[_0x6326('0x47')](_0x6326('0x4b'),_0x3e9825);})[_0x6326('0x4c')](function(){delete _0x5c3641[_0x6326('0xe')][_0x58731d];delete _0x5c3641['actions'][_0x58731d];});}else{ut['logger']('[Fax][Message][NoUpdate2]');delete this[_0x6326('0xe')][_0x58731d];delete this['actions'][_0x58731d];}};Fax[_0x6326('0x25')][_0x6326('0x1c')]=function(_0xcae454){var _0x35c648=this;if(this[_0x6326('0xe')][_0xcae454['uniqueid']]){if(this[_0x6326('0x11')][_0xcae454[_0x6326('0x20')]]){this['channels'][_0xcae454[_0x6326('0x20')]]['id']=this[_0x6326('0x11')][_0xcae454[_0x6326('0x20')]]['id'];this[_0x6326('0xe')][_0xcae454[_0x6326('0x20')]][_0x6326('0x22')]=this[_0x6326('0x11')][_0xcae454[_0x6326('0x20')]][_0x6326('0x22')];}logger[_0x6326('0x23')](_0xcae454['uniqueid'],this[_0x6326('0x11')][_0xcae454[_0x6326('0x20')]]?_0x6326('0x4d'):_0x6326('0x4e'),JSON['stringify'](this['channels'][_0xcae454[_0x6326('0x20')]]));if(this[_0x6326('0x11')][_0xcae454[_0x6326('0x20')]]){if(this[_0x6326('0xe')][_0xcae454[_0x6326('0x20')]]['faxpages']>0x0&&this['channels'][_0xcae454[_0x6326('0x20')]][_0x6326('0x19')]===_0x6326('0x4f')){this[_0x6326('0x49')](_0xcae454['uniqueid'],!![]);}else{this[_0x6326('0x49')](_0xcae454[_0x6326('0x20')],![],this[_0x6326('0xe')][_0xcae454[_0x6326('0x20')]][_0x6326('0x50')]?_0x6326('0x51')+this['channels'][_0xcae454[_0x6326('0x20')]]['faxstatusstring']:_0x6326('0x52'));}}}};Fax[_0x6326('0x25')]['send']=function(_0x14d66c){var _0x56fb58=this;return new BPromise(function(_0x222e39,_0x3b6de7){_0x56fb58[_0x6326('0x53')](_0x14d66c,_0x56fb58[_0x6326('0xf')][_0x14d66c[_0x6326('0x54')]])[_0x6326('0x55')](function(_0xa2928e){ut[_0x6326('0x47')]('[Fax][execOriginate][success]',_0xa2928e);_0x222e39(ut[_0x6326('0x35')](_0x6326('0x56')));})[_0x6326('0x3c')](function(_0x5ade98){ut[_0x6326('0x47')]('[Fax][execOriginate][failure]',_0x5ade98);updateStatus(_0x14d66c);_0x3b6de7(ut[_0x6326('0x35')](_0x6326('0x57')));});});};Fax[_0x6326('0x25')][_0x6326('0x58')]=function(_0x3894cf){var _0x4f0305=this;return new BPromise(function(_0x468e7d,_0x564332){var _0x4ae3a9=_0x4f0305[_0x6326('0x59')](_0x4f0305[_0x6326('0xf')][_0x3894cf[_0x6326('0x54')]][_0x6326('0x5a')],_0x3894cf);if(_0x4ae3a9['isValid']){_0x468e7d(ut['message']('Trunk\x20Reachable'));}else{_0x564332(ut['message'](_0x4ae3a9[_0x6326('0x35')]));}});};function originate(_0x5044ab,_0x303fef,_0x5f6273){return new BPromise(function(_0x54730e,_0x4c1d7e){if(_0x5f6273){var _0x5401cf=util[_0x6326('0x5b')]('gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit',path[_0x6326('0x37')](_0x5044ab['path'])['name'],_0x5044ab['path']);gs['execute'](_0x5401cf)[_0x6326('0x55')](function(){_0x5044ab['path']=util[_0x6326('0x5b')](_0x6326('0x5c'),path['parse'](_0x5044ab[_0x6326('0x5')])['dir'],path[_0x6326('0x37')](_0x5044ab[_0x6326('0x5')])[_0x6326('0x22')]);_0x303fef[_0x6326('0x5d')]=_0x5044ab[_0x6326('0x5')];ut[_0x6326('0x47')](_0x6326('0x5e'),'');ami[_0x6326('0x5f')](ut[_0x6326('0x60')](_0x5044ab,_0x303fef))[_0x6326('0x55')](function(_0x22d139){_0x54730e(_0x22d139);})[_0x6326('0x3c')](function(_0x3bc5f3){_0x4c1d7e(_0x3bc5f3);});})[_0x6326('0x3c')](function(_0x34e30f){_0x4c1d7e(_0x34e30f);});}else{ami[_0x6326('0x5f')](ut[_0x6326('0x60')](_0x5044ab,_0x303fef))['then'](function(_0x5a7e91){_0x54730e(_0x5a7e91);})['catch'](function(_0x4839bf){_0x4c1d7e(_0x4839bf);});}});}Fax[_0x6326('0x25')]['execOriginate']=function(_0x5d9796,_0x571e38){var _0x5a6b0c=this;return new BPromise(function(_0x565706,_0x5a1a9f){var _0xe845d6=uuid['v4']();var _0x5d664c=ut['addVariables'](_0x5d9796,_0x571e38);_0x5a6b0c[_0x6326('0x11')][_0xe845d6]=new Action(_0xe845d6,_0x571e38,_0x5d9796);var _0x2bfc43=_0x5a6b0c[_0x6326('0x11')][_0xe845d6];if(path['parse'](_0x5d9796[_0x6326('0x5')])[_0x6326('0x61')]===_0x6326('0x38')){originate(_0x2bfc43,_0x5d664c,!![])[_0x6326('0x55')](function(_0x3e9477){_0x565706(_0x3e9477);})['catch'](function(_0x3bff09){_0x5a1a9f(_0x3bff09);});}else{originate(_0x2bfc43,_0x5d664c,![])['then'](function(_0x5c2e68){_0x565706(_0x5c2e68);})[_0x6326('0x3c')](function(_0x4fa150){_0x5a1a9f(_0x4fa150);});}});};Fax['prototype']['isTrunkReachable']=function(_0x491f2e){return!_['isNil'](_0x491f2e)&&!_['isNil'](_0x491f2e['name'])&&!_[_0x6326('0x62')](_0x491f2e[_0x6326('0x63')])&&_0x491f2e[_0x6326('0x63')]&&!_[_0x6326('0x62')](this['trunks'][util['format']('SIP/%s',_0x491f2e[_0x6326('0x22')])])&&!_[_0x6326('0x62')](this['trunks'][util[_0x6326('0x5b')]('SIP/%s',_0x491f2e['name'])][_0x6326('0x64')])&&(this[_0x6326('0x10')][util[_0x6326('0x5b')](_0x6326('0x65'),_0x491f2e[_0x6326('0x22')])][_0x6326('0x64')]===_0x6326('0x66')||this['trunks'][util['format']('SIP/%s',_0x491f2e[_0x6326('0x22')])]['status']==='unmonitored');};Fax[_0x6326('0x25')][_0x6326('0x59')]=function(_0x53bbc3,_0x1fa91d){if(!this['isTrunkReachable'](_0x53bbc3)){ut['logger'](_0x6326('0x67'),_[_0x6326('0x62')](_0x53bbc3)?'':_0x53bbc3['name']+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x6326('0x68')};}if(_[_0x6326('0x62')](_0x1fa91d[_0x6326('0x3b')])){ut[_0x6326('0x47')]('[Fax][checkTrunk][Empty\x20Fax]',JSON['stringify'](_0x1fa91d));return{'isValid':![],'message':_0x6326('0x69')};}if(_[_0x6326('0x62')](_0x1fa91d[_0x6326('0x5')])){ut[_0x6326('0x47')](_0x6326('0x6a'),JSON[_0x6326('0x3e')](_0x1fa91d));return{'isValid':![],'message':_0x6326('0x6b')};}return{'isValid':!![],'message':_0x6326('0x6c')};};module['exports']=Fax;
\ No newline at end of file
index 34a80dc..0a7b9ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bef=['notify','resolve','then','catch','[Notify]\x20','util','../../../config/logger','preview','lodash','../rpc/faxAccount','inspect'];(function(_0x377b61,_0x34bf88){var _0x18dde1=function(_0x15abcf){while(--_0x15abcf){_0x377b61['push'](_0x377b61['shift']());}};_0x18dde1(++_0x34bf88);}(_0x4bef,0x1a7));var _0xf4be=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x4bef[_0x2faddb];return _0x273c05;};'use strict';var util=require(_0xf4be('0x0'));var BPromise=require('bluebird');var logger=require(_0xf4be('0x1'))(_0xf4be('0x2'));var _=require(_0xf4be('0x3'));var faxAccount=require(_0xf4be('0x4'));function loggerCatch(_0x293eaf){return function(_0x45e864){logger['error'](_0x293eaf,util[_0xf4be('0x5')](_0x45e864,{'showHidden':![],'depth':null}));};}exports[_0xf4be('0x6')]=function(_0x51989e,_0xa0ab69){return BPromise[_0xf4be('0x7')]()[_0xf4be('0x8')](faxAccount[_0xf4be('0x6')](_0x51989e,_0xa0ab69))[_0xf4be('0x9')](loggerCatch(_0xf4be('0xa')));};
\ No newline at end of file
+var _0xcc95=['catch','[Notify]\x20','bluebird','../../../config/logger','preview','error','inspect','notify','resolve','then'];(function(_0x4eb238,_0x327d0b){var _0x488524=function(_0xa920a8){while(--_0xa920a8){_0x4eb238['push'](_0x4eb238['shift']());}};_0x488524(++_0x327d0b);}(_0xcc95,0xde));var _0x5cc9=function(_0x4953da,_0x5adaca){_0x4953da=_0x4953da-0x0;var _0x2d3780=_0xcc95[_0x4953da];return _0x2d3780;};'use strict';var util=require('util');var BPromise=require(_0x5cc9('0x0'));var logger=require(_0x5cc9('0x1'))(_0x5cc9('0x2'));var _=require('lodash');var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0xb4beef){return function(_0x317a45){logger[_0x5cc9('0x3')](_0xb4beef,util[_0x5cc9('0x4')](_0x317a45,{'showHidden':![],'depth':null}));};}exports[_0x5cc9('0x5')]=function(_0x16c98a,_0x5b4ddf){return BPromise[_0x5cc9('0x6')]()[_0x5cc9('0x7')](faxAccount[_0x5cc9('0x5')](_0x16c98a,_0x5b4ddf))[_0x5cc9('0x8')](loggerCatch(_0x5cc9('0x9')));};
\ No newline at end of file
index 6eec876..48516ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c25=['\x20Error\x20:','inspect','../../../../config/logger','bluebird','child_process','exec','execute','info','Exec\x20gs'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x6c25,0x1d6));var _0x56c2=function(_0x5211cd,_0x266b93){_0x5211cd=_0x5211cd-0x0;var _0x366c0f=_0x6c25[_0x5211cd];return _0x366c0f;};'use strict';var util=require('util');var logger=require(_0x56c2('0x0'))('fax');var BPromise=require(_0x56c2('0x1'));var exec=require(_0x56c2('0x2'))[_0x56c2('0x3')];exports[_0x56c2('0x4')]=function(_0x46c31d){return new BPromise(function(_0x452198,_0x49adc5){exec(_0x46c31d,function(_0x59a2bf,_0x1aa03f,_0x593f2f){logger[_0x56c2('0x5')]('Exec\x20gs',_0x1aa03f);if(_0x59a2bf){logger['info'](_0x56c2('0x6'),_0x56c2('0x7'),util[_0x56c2('0x8')](_0x59a2bf,{'showHidden':![],'depth':null}),_0x1aa03f,_0x593f2f);_0x49adc5(_0x59a2bf);}_0x452198(_0x1aa03f);});});};
\ No newline at end of file
+var _0xfc12=['../../../../config/logger','fax','child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','util'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0xfc12,0xc7));var _0x2fc1=function(_0x3cb782,_0x885b23){_0x3cb782=_0x3cb782-0x0;var _0x1ab6d7=_0xfc12[_0x3cb782];return _0x1ab6d7;};'use strict';var util=require(_0x2fc1('0x0'));var logger=require(_0x2fc1('0x1'))(_0x2fc1('0x2'));var BPromise=require('bluebird');var exec=require(_0x2fc1('0x3'))[_0x2fc1('0x4')];exports[_0x2fc1('0x5')]=function(_0x532cfe){return new BPromise(function(_0x184a30,_0x26b845){exec(_0x532cfe,function(_0x414ae0,_0xd2e0fa,_0x33c7a9){logger[_0x2fc1('0x6')](_0x2fc1('0x7'),_0xd2e0fa);if(_0x414ae0){logger['info'](_0x2fc1('0x7'),_0x2fc1('0x8'),util[_0x2fc1('0x9')](_0x414ae0,{'showHidden':![],'depth':null}),_0xd2e0fa,_0x33c7a9);_0x26b845(_0x414ae0);}_0x184a30(_0xd2e0fa);});});};
\ No newline at end of file
index 98e6aaa..c3cb235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e65=['modem','gateway','faxdetect','t38timeout','localstationid','path','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','lodash','moment','../../../../config/logger','fax','message','logger','info','inspect','ecm','headerinfo','maxrate','format'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x2e65,0x1bc));var _0x52e6=function(_0x4bb581,_0x6f7037){_0x4bb581=_0x4bb581-0x0;var _0x316bf5=_0x2e65[_0x4bb581];return _0x316bf5;};'use strict';var util=require('util');var _=require(_0x52e6('0x0'));var moment=require(_0x52e6('0x1'));var logger=require(_0x52e6('0x2'))(_0x52e6('0x3'));exports[_0x52e6('0x4')]=function(_0x49d923){return{'message':_0x49d923};};exports[_0x52e6('0x5')]=function(_0x16d937,_0xea98f3){logger[_0x52e6('0x6')](_0x16d937,util[_0x52e6('0x7')](_0xea98f3,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x1c2034,_0x4dac1c){var _0x31e0b1={'XMF-ECM':_0x4dac1c[_0x52e6('0x8')],'XMF-HEADERINFO':_0x4dac1c[_0x52e6('0x9')],'XMF-MINRATE':_0x4dac1c['minrate'],'XMF-MAXRATE':_0x4dac1c[_0x52e6('0xa')],'XMF-MODEM':util[_0x52e6('0xb')]('\x22%s\x22',_0x4dac1c[_0x52e6('0xc')]),'XMF-GATEWAY':_0x4dac1c[_0x52e6('0xd')],'XMF-FAXDETECT':_0x4dac1c[_0x52e6('0xe')],'XMF-T38TIMEOUT':_0x4dac1c[_0x52e6('0xf')],'XMF-LOCALSTATIONID':_0x4dac1c[_0x52e6('0x10')],'XMF-PATH':_0x1c2034[_0x52e6('0x11')]};return _0x31e0b1;};exports['variablesAction']=function(_0x35c481,_0x24baaf){return{'actionid':_0x35c481[_0x52e6('0x12')],'action':_0x52e6('0x13'),'channel':_0x35c481[_0x52e6('0x14')],'Exten':_0x52e6('0x15'),'Context':_0x52e6('0x16'),'Priority':'1','callerid':util[_0x52e6('0xb')](_0x52e6('0x17'),_0x35c481[_0x52e6('0x9')]?_0x35c481[_0x52e6('0x9')]:'',_0x35c481['localstationid']),'variable':_0x24baaf,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x35c481[_0x52e6('0x12')]};};
\ No newline at end of file
+var _0x5a86=['path','variablesAction','uniqueid','originate','xcally-motion-fax','\x22%s\x22\x20<%s>','headerinfo','util','../../../../config/logger','fax','logger','addVariables','ecm','format','\x22%s\x22','modem','gateway','faxdetect','localstationid'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x5a86,0x124));var _0x65a8=function(_0x5cacc2,_0x1652fd){_0x5cacc2=_0x5cacc2-0x0;var _0x1da1e2=_0x5a86[_0x5cacc2];return _0x1da1e2;};'use strict';var util=require(_0x65a8('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0x65a8('0x1'))(_0x65a8('0x2'));exports['message']=function(_0x5b42d5){return{'message':_0x5b42d5};};exports[_0x65a8('0x3')]=function(_0xc4c30,_0x511cfc){logger['info'](_0xc4c30,util['inspect'](_0x511cfc,{'showHidden':![],'depth':null}));};exports[_0x65a8('0x4')]=function(_0xbd1c27,_0x368c02){var _0x121f6f={'XMF-ECM':_0x368c02[_0x65a8('0x5')],'XMF-HEADERINFO':_0x368c02['headerinfo'],'XMF-MINRATE':_0x368c02['minrate'],'XMF-MAXRATE':_0x368c02['maxrate'],'XMF-MODEM':util[_0x65a8('0x6')](_0x65a8('0x7'),_0x368c02[_0x65a8('0x8')]),'XMF-GATEWAY':_0x368c02[_0x65a8('0x9')],'XMF-FAXDETECT':_0x368c02[_0x65a8('0xa')],'XMF-T38TIMEOUT':_0x368c02['t38timeout'],'XMF-LOCALSTATIONID':_0x368c02[_0x65a8('0xb')],'XMF-PATH':_0xbd1c27[_0x65a8('0xc')]};return _0x121f6f;};exports[_0x65a8('0xd')]=function(_0x5960ef,_0x48c75f){return{'actionid':_0x5960ef[_0x65a8('0xe')],'action':_0x65a8('0xf'),'channel':_0x5960ef['channel'],'Exten':_0x65a8('0x10'),'Context':'from-sip','Priority':'1','callerid':util['format'](_0x65a8('0x11'),_0x5960ef['headerinfo']?_0x5960ef[_0x65a8('0x12')]:'',_0x5960ef[_0x65a8('0xb')]),'variable':_0x48c75f,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x5960ef['uniqueid']};};
\ No newline at end of file
index 298dd36..6fee5e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc37d=['getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','[index.js][initParams]','inspect','error','[index.js][main]','util','./server','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/dynamics365','../../config/logger','get','hour','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','initTriggers','initTemplates','getZendeskAccounts','initZendeskAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts'];(function(_0x420a02,_0x91fee){var _0x46ad48=function(_0x5411e4){while(--_0x5411e4){_0x420a02['push'](_0x420a02['shift']());}};_0x46ad48(++_0x91fee);}(_0xc37d,0x174));var _0xdc37=function(_0x1f76e5,_0x682177){_0x1f76e5=_0x1f76e5-0x0;var _0x52a6f3=_0xc37d[_0x1f76e5];return _0x52a6f3;};'use strict';var BPromise=require('bluebird');var util=require(_0xdc37('0x0'));var moment=require('moment');var server=require(_0xdc37('0x1'));var Realtime=require(_0xdc37('0x2'));var Report=require(_0xdc37('0x3'));var Acw=require(_0xdc37('0x4'));var Trigger=require(_0xdc37('0x5'));var Dialer=require(_0xdc37('0x6'));var Preview=require(_0xdc37('0x7'));var Fax=require(_0xdc37('0x8'));var user=require(_0xdc37('0x9'));var voiceQueue=require(_0xdc37('0xa'));var voiceQueueReport=require(_0xdc37('0xb'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0xdc37('0xc'));var trigger=require(_0xdc37('0xd'));var template=require(_0xdc37('0xe'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0xdc37('0xf'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0xdc37('0x10'));var zendesk=require(_0xdc37('0x11'));var salesforce=require(_0xdc37('0x12'));var sugarcrm=require(_0xdc37('0x13'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0xdc37('0x14'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0xdc37('0x15'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0xdc37('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0xdc37('0x17'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xdc37('0x18')](_0xdc37('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xdc37('0x18')](_0xdc37('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user[_0xdc37('0x1a')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x1c')]())[_0xdc37('0x1b')](user[_0xdc37('0x1d')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x1e')]())[_0xdc37('0x1b')](trunk[_0xdc37('0x1f')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x20')]())[_0xdc37('0x1b')](voiceQueue[_0xdc37('0x21')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x22')]())[_0xdc37('0x1b')](trigger['getTriggers']())[_0xdc37('0x1b')](realtime[_0xdc37('0x23')]())[_0xdc37('0x1b')](template['getTemplates']())[_0xdc37('0x1b')](realtime[_0xdc37('0x24')]())[_0xdc37('0x1b')](zendesk[_0xdc37('0x25')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x26')]())['then'](salesforce['getSalesforceAccounts']())['then'](realtime['initSalesforceAccounts']())[_0xdc37('0x1b')](sugarcrm[_0xdc37('0x27')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x28')]())['then'](freshdesk[_0xdc37('0x29')]())['then'](realtime[_0xdc37('0x2a')]())['then'](desk[_0xdc37('0x2b')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x2c')]())[_0xdc37('0x1b')](zoho['getZohoAccounts']())['then'](realtime[_0xdc37('0x2d')]())[_0xdc37('0x1b')](vtiger[_0xdc37('0x2e')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x2f')]())[_0xdc37('0x1b')](freshsales[_0xdc37('0x30')]())['then'](realtime['initFreshsalesAccounts']())[_0xdc37('0x1b')](servicenow[_0xdc37('0x31')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x32')]())[_0xdc37('0x1b')](dynamics365[_0xdc37('0x33')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x34')]())['then'](campaign[_0xdc37('0x35')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x36')]())['then'](voiceExtension[_0xdc37('0x37')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x38')]())['then'](faxAccount['getFaxAccounts']())[_0xdc37('0x1b')](realtime[_0xdc37('0x39')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0xdc37('0x3a')]()[_0xdc37('0x1b')](voiceQueueReport[_0xdc37('0x3b')]())['then'](realtime[_0xdc37('0x3c')]())['then'](cmHopperHistory['getVoiceQueueHopperHistory']())[_0xdc37('0x1b')](realtime[_0xdc37('0x3d')]())[_0xdc37('0x1b')](cmHopperHistory['getCampaignHopperHistory']())[_0xdc37('0x1b')](realtime[_0xdc37('0x3e')]())[_0xdc37('0x1b')](voiceCallReport[_0xdc37('0x3f')]())[_0xdc37('0x1b')](realtime[_0xdc37('0x40')]())[_0xdc37('0x41')](function(_0x44f5e4){logger['error'](_0xdc37('0x42'),util[_0xdc37('0x43')](_0x44f5e4,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0xdc37('0x1b')](function(_0x1aa28e){return initRealtime();})[_0xdc37('0x1b')](function(){return initParams();})[_0xdc37('0x1b')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0xdc37('0x41')](function(_0x212629){logger[_0xdc37('0x44')](_0xdc37('0x45'),util[_0xdc37('0x43')](_0x212629,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x1b0f=['./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','../../config/logger','hour','get','then','getAgents','initAgents','initTelephones','getTrunks','initTrunks','getVoiceQueues','getTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getServicenowAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','resolve','getVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','sync','[index.js][main]','bluebird','util','./realtime','./report','./acw','./dialer','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho'];(function(_0x37bd46,_0x2cd9de){var _0x560101=function(_0x447878){while(--_0x447878){_0x37bd46['push'](_0x37bd46['shift']());}};_0x560101(++_0x2cd9de);}(_0x1b0f,0x13e));var _0xf1b0=function(_0x24e28d,_0x55ca60){_0x24e28d=_0x24e28d-0x0;var _0x399a88=_0x1b0f[_0x24e28d];return _0x399a88;};'use strict';var BPromise=require(_0xf1b0('0x0'));var util=require(_0xf1b0('0x1'));var moment=require('moment');var server=require('./server');var Realtime=require(_0xf1b0('0x2'));var Report=require(_0xf1b0('0x3'));var Acw=require(_0xf1b0('0x4'));var Trigger=require('./trigger');var Dialer=require(_0xf1b0('0x5'));var Preview=require(_0xf1b0('0x6'));var Fax=require('./fax');var user=require(_0xf1b0('0x7'));var voiceQueue=require(_0xf1b0('0x8'));var voiceQueueReport=require(_0xf1b0('0x9'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0xf1b0('0xa'));var trigger=require(_0xf1b0('0xb'));var template=require(_0xf1b0('0xc'));var cmHopperHistory=require(_0xf1b0('0xd'));var campaign=require(_0xf1b0('0xe'));var voiceExtension=require(_0xf1b0('0xf'));var faxAccount=require(_0xf1b0('0x10'));var zendesk=require(_0xf1b0('0x11'));var salesforce=require(_0xf1b0('0x12'));var sugarcrm=require(_0xf1b0('0x13'));var freshdesk=require(_0xf1b0('0x14'));var desk=require('./rpc/integrations/desk');var zoho=require(_0xf1b0('0x15'));var vtiger=require(_0xf1b0('0x16'));var freshsales=require(_0xf1b0('0x17'));var servicenow=require(_0xf1b0('0x18'));var dynamics365=require('./rpc/integrations/dynamics365');var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0xf1b0('0x19'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get'](_0xf1b0('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xf1b0('0x1b')](_0xf1b0('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0xf1b0('0x1c')](user[_0xf1b0('0x1d')]())['then'](realtime[_0xf1b0('0x1e')]())['then'](user['getTelephones']())['then'](realtime[_0xf1b0('0x1f')]())['then'](trunk[_0xf1b0('0x20')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x21')]())[_0xf1b0('0x1c')](voiceQueue[_0xf1b0('0x22')]())[_0xf1b0('0x1c')](realtime['initVoiceQueues']())[_0xf1b0('0x1c')](trigger['getTriggers']())['then'](realtime['initTriggers']())[_0xf1b0('0x1c')](template[_0xf1b0('0x23')]())[_0xf1b0('0x1c')](realtime['initTemplates']())['then'](zendesk[_0xf1b0('0x24')]())['then'](realtime[_0xf1b0('0x25')]())['then'](salesforce[_0xf1b0('0x26')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x27')]())['then'](sugarcrm[_0xf1b0('0x28')]())[_0xf1b0('0x1c')](realtime['initSugarcrmAccounts']())['then'](freshdesk[_0xf1b0('0x29')]())[_0xf1b0('0x1c')](realtime['initFreshdeskAccounts']())[_0xf1b0('0x1c')](desk[_0xf1b0('0x2a')]())[_0xf1b0('0x1c')](realtime['initDeskAccounts']())[_0xf1b0('0x1c')](zoho[_0xf1b0('0x2b')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x2c')]())[_0xf1b0('0x1c')](vtiger[_0xf1b0('0x2d')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x2e')]())['then'](freshsales['getFreshsalesAccounts']())['then'](realtime['initFreshsalesAccounts']())[_0xf1b0('0x1c')](servicenow[_0xf1b0('0x2f')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x30')]())['then'](dynamics365['getDynamics365Accounts']())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x31')]())['then'](campaign[_0xf1b0('0x32')]())['then'](realtime[_0xf1b0('0x33')]())[_0xf1b0('0x1c')](voiceExtension[_0xf1b0('0x34')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x35')]())[_0xf1b0('0x1c')](faxAccount['getFaxAccounts']())[_0xf1b0('0x1c')](realtime['initFaxAccounts']())[_0xf1b0('0x1c')](function(){return realtime;});}function initParams(){return BPromise[_0xf1b0('0x36')]()['then'](voiceQueueReport[_0xf1b0('0x37')]())[_0xf1b0('0x1c')](realtime['initVoiceQueueReports']())[_0xf1b0('0x1c')](cmHopperHistory[_0xf1b0('0x38')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x39')]())[_0xf1b0('0x1c')](cmHopperHistory[_0xf1b0('0x3a')]())[_0xf1b0('0x1c')](realtime['initCampaignHopperHistory']())[_0xf1b0('0x1c')](voiceCallReport[_0xf1b0('0x3b')]())[_0xf1b0('0x1c')](realtime[_0xf1b0('0x3c')]())[_0xf1b0('0x3d')](function(_0xfabb90){logger[_0xf1b0('0x3e')](_0xf1b0('0x3f'),util[_0xf1b0('0x40')](_0xfabb90,{'showHidden':![],'depth':null}));});}function main(){return server[_0xf1b0('0x41')](realtime,preview,fax)[_0xf1b0('0x1c')](function(_0x298dad){return initRealtime();})[_0xf1b0('0x1c')](function(){return initParams();})['then'](function(){report[_0xf1b0('0x42')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x14660a){logger[_0xf1b0('0x3e')](_0xf1b0('0x43'),util[_0xf1b0('0x40')](_0x14660a,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 396026a..a1587ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['stateTime','status','address','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','md5','prototype','updateStatusRealtime','not_inuse','inuse','talking','statePause','toNumber','format','fullname','stringify','user:%s','emit','user:save','user:presence','exports','lodash','util','moment','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','email','accountcode','state','unknown'];(function(_0x166e71,_0x3a1cd4){var _0x2ebc75=function(_0x4889d9){while(--_0x4889d9){_0x166e71['push'](_0x166e71['shift']());}};_0x2ebc75(++_0x3a1cd4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));config['redis']=_[_0x0a9e('0x4')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x6'),'port':0x18eb});var io=require(_0x0a9e('0x7'))(new Redis(config[_0x0a9e('0x5')]));function Agent(_0x57b080){this['id']=_0x57b080['id']||0x0;this[_0x0a9e('0x8')]=_0x57b080[_0x0a9e('0x8')]||'';this[_0x0a9e('0x9')]=_0x57b080['email']||'';this['accountcode']=_0x57b080[_0x0a9e('0xa')]||'';this['fullname']=_0x57b080['fullname']||'';this[_0x0a9e('0xb')]=_0x0a9e('0xc');this[_0x0a9e('0xd')]=0x0;this[_0x0a9e('0xe')]=_0x0a9e('0xc');this[_0x0a9e('0xf')]='';this['phone']='';this['mobile']='';this['interface']='';this['online']=_0x57b080[_0x0a9e('0x10')]||![];this[_0x0a9e('0x11')]=_0x0a9e('0xc');this[_0x0a9e('0x12')]=0x0;this[_0x0a9e('0x13')]='';this[_0x0a9e('0x14')]='';this['onhold']=![];this[_0x0a9e('0x15')]=![];this[_0x0a9e('0x16')]='';}Agent[_0x0a9e('0x17')][_0x0a9e('0x18')]=function(_0x44dcfd){var _0x4d5611;if(_0x44dcfd&&_0x44dcfd['state']){_0x4d5611=_0x44dcfd[_0x0a9e('0xb')]['toLowerCase']();switch(_0x4d5611){case _0x0a9e('0x19'):_0x4d5611='idle';break;case _0x0a9e('0x1a'):_0x4d5611=_0x0a9e('0x1b');break;}}if(_0x4d5611&&this['voiceStatus']!==_0x4d5611||_0x44dcfd[_0x0a9e('0x1c')]){this['voiceStatusTime']=_[_0x0a9e('0x1d')](moment()[_0x0a9e('0x1e')]('x'));}if(_0x4d5611){this[_0x0a9e('0x11')]=_0x4d5611;}var _0x205fd6={'id':this['id'],'name':this[_0x0a9e('0x8')],'email':this[_0x0a9e('0x9')],'accountcode':this[_0x0a9e('0xa')],'fullname':this[_0x0a9e('0x1f')],'state':this[_0x0a9e('0xb')],'stateTime':this[_0x0a9e('0xd')],'status':this[_0x0a9e('0xe')],'address':this[_0x0a9e('0xf')],'online':this['online'],'voiceStatus':this[_0x0a9e('0x11')],'voiceStatusTime':this[_0x0a9e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x0a9e('0x14')],'interface':this['interface'],'onhold':this['onhold']};var _0x3a02e1=md5(JSON[_0x0a9e('0x20')](_0x205fd6));if(this[_0x0a9e('0x16')]!==_0x3a02e1){this[_0x0a9e('0x16')]=_0x3a02e1;io['to'](util['format'](_0x0a9e('0x21'),_0x205fd6[_0x0a9e('0x8')]))[_0x0a9e('0x22')](_0x0a9e('0x23'),_0x205fd6);io[_0x0a9e('0x22')](_0x0a9e('0x24'),_0x205fd6);}};module[_0x0a9e('0x25')]=Agent;
\ No newline at end of file
+var _0xa9e0=['stateTime','status','address','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','md5','prototype','updateStatusRealtime','not_inuse','inuse','talking','statePause','toNumber','format','fullname','stringify','user:%s','emit','user:save','user:presence','exports','lodash','util','moment','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','email','accountcode','state','unknown'];(function(_0x1c60bd,_0x207c9b){var _0xc46ef9=function(_0x271c57){while(--_0x271c57){_0x1c60bd['push'](_0x1c60bd['shift']());}};_0xc46ef9(++_0x207c9b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));config['redis']=_[_0x0a9e('0x4')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x6'),'port':0x18eb});var io=require(_0x0a9e('0x7'))(new Redis(config[_0x0a9e('0x5')]));function Agent(_0x57b080){this['id']=_0x57b080['id']||0x0;this[_0x0a9e('0x8')]=_0x57b080[_0x0a9e('0x8')]||'';this[_0x0a9e('0x9')]=_0x57b080['email']||'';this['accountcode']=_0x57b080[_0x0a9e('0xa')]||'';this['fullname']=_0x57b080['fullname']||'';this[_0x0a9e('0xb')]=_0x0a9e('0xc');this[_0x0a9e('0xd')]=0x0;this[_0x0a9e('0xe')]=_0x0a9e('0xc');this[_0x0a9e('0xf')]='';this['phone']='';this['mobile']='';this['interface']='';this['online']=_0x57b080[_0x0a9e('0x10')]||![];this[_0x0a9e('0x11')]=_0x0a9e('0xc');this[_0x0a9e('0x12')]=0x0;this[_0x0a9e('0x13')]='';this[_0x0a9e('0x14')]='';this['onhold']=![];this[_0x0a9e('0x15')]=![];this[_0x0a9e('0x16')]='';}Agent[_0x0a9e('0x17')][_0x0a9e('0x18')]=function(_0x44dcfd){var _0x4d5611;if(_0x44dcfd&&_0x44dcfd['state']){_0x4d5611=_0x44dcfd[_0x0a9e('0xb')]['toLowerCase']();switch(_0x4d5611){case _0x0a9e('0x19'):_0x4d5611='idle';break;case _0x0a9e('0x1a'):_0x4d5611=_0x0a9e('0x1b');break;}}if(_0x4d5611&&this['voiceStatus']!==_0x4d5611||_0x44dcfd[_0x0a9e('0x1c')]){this['voiceStatusTime']=_[_0x0a9e('0x1d')](moment()[_0x0a9e('0x1e')]('x'));}if(_0x4d5611){this[_0x0a9e('0x11')]=_0x4d5611;}var _0x205fd6={'id':this['id'],'name':this[_0x0a9e('0x8')],'email':this[_0x0a9e('0x9')],'accountcode':this[_0x0a9e('0xa')],'fullname':this[_0x0a9e('0x1f')],'state':this[_0x0a9e('0xb')],'stateTime':this[_0x0a9e('0xd')],'status':this[_0x0a9e('0xe')],'address':this[_0x0a9e('0xf')],'online':this['online'],'voiceStatus':this[_0x0a9e('0x11')],'voiceStatusTime':this[_0x0a9e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x0a9e('0x14')],'interface':this['interface'],'onhold':this['onhold']};var _0x3a02e1=md5(JSON[_0x0a9e('0x20')](_0x205fd6));if(this[_0x0a9e('0x16')]!==_0x3a02e1){this[_0x0a9e('0x16')]=_0x3a02e1;io['to'](util['format'](_0x0a9e('0x21'),_0x205fd6[_0x0a9e('0x8')]))[_0x0a9e('0x22')](_0x0a9e('0x23'),_0x205fd6);io[_0x0a9e('0x22')](_0x0a9e('0x24'),_0x205fd6);}};module[_0x0a9e('0x25')]=Agent;
\ No newline at end of file
index 0d89f97..10afb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e34=['dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x0e34,0x7c));var _0x40e3=function(_0x16b405,_0x4663c6){_0x16b405=_0x16b405-0x0;var _0x2331a6=_0x0e34[_0x16b405];return _0x2331a6;};'use strict';function Campaign(_0x2b17c1){this['id']=_0x2b17c1['id']||0x0;this[_0x40e3('0x0')]=_0x2b17c1[_0x40e3('0x0')]||'';this[_0x40e3('0x1')]=_0x2b17c1[_0x40e3('0x1')]||_0x40e3('0x2');this[_0x40e3('0x3')]=0x0;this[_0x40e3('0x4')]=0x0;this[_0x40e3('0x5')]=0x0;this[_0x40e3('0x6')]=0x0;this[_0x40e3('0x7')]='';this[_0x40e3('0x8')]=!![];this[_0x40e3('0x9')]=_0x2b17c1[_0x40e3('0x9')];this[_0x40e3('0xa')]=_0x2b17c1[_0x40e3('0xa')];this['dialTimezone']=_0x2b17c1[_0x40e3('0xb')]||null;this[_0x40e3('0xc')]=_0x2b17c1[_0x40e3('0xc')]?_0x2b17c1[_0x40e3('0xc')]:null;this[_0x40e3('0xd')]=_0x2b17c1[_0x40e3('0xd')];this['dialOriginateCallerIdNumber']=_0x2b17c1[_0x40e3('0xe')];this[_0x40e3('0xf')]=_0x2b17c1[_0x40e3('0xf')]||0x1e;this['dialCongestionMaxRetry']=_0x2b17c1[_0x40e3('0x10')];this[_0x40e3('0x11')]=_0x2b17c1['dialCongestionRetryFrequency'];this[_0x40e3('0x12')]=_0x2b17c1['dialBusyMaxRetry'];this[_0x40e3('0x13')]=_0x2b17c1[_0x40e3('0x13')];this[_0x40e3('0x14')]=_0x2b17c1['dialNoAnswerMaxRetry'];this[_0x40e3('0x15')]=_0x2b17c1[_0x40e3('0x15')];this[_0x40e3('0x16')]=_0x2b17c1[_0x40e3('0x16')];this['dialNoSuchNumberMaxRetry']=_0x2b17c1[_0x40e3('0x17')]||0x3;this[_0x40e3('0x18')]=_0x2b17c1[_0x40e3('0x18')]||0x96;this[_0x40e3('0x19')]=_0x2b17c1[_0x40e3('0x19')]||0x3;this[_0x40e3('0x1a')]=_0x2b17c1[_0x40e3('0x1a')]||0x96;this[_0x40e3('0x1b')]=_0x2b17c1['dialAbandonedMaxRetry']||0x3;this[_0x40e3('0x1c')]=_0x2b17c1[_0x40e3('0x1c')]||0x96;this[_0x40e3('0x1d')]=_0x2b17c1[_0x40e3('0x1d')]||0x3;this[_0x40e3('0x1e')]=_0x2b17c1[_0x40e3('0x1e')]||0x96;this[_0x40e3('0x1f')]=_0x2b17c1['dialAgentRejectMaxRetry']||0x3;this[_0x40e3('0x20')]=_0x2b17c1['dialAgentRejectRetryFrequency']||0x96;this[_0x40e3('0x21')]=_0x2b17c1[_0x40e3('0x21')]||'DESC';this[_0x40e3('0x22')]=_0x2b17c1['dialPrefix']||undefined;this[_0x40e3('0x23')]=_0x2b17c1['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x40e3('0x24')]=_0x2b17c1['dialCutDigit']||undefined;this[_0x40e3('0x25')]=_0x2b17c1[_0x40e3('0x25')]?_0x2b17c1[_0x40e3('0x25')]:undefined;this['Trunk']=_0x2b17c1[_0x40e3('0x26')]?_0x2b17c1[_0x40e3('0x26')]:undefined;this['Interval']=_0x2b17c1[_0x40e3('0x27')]?_0x2b17c1[_0x40e3('0x27')]:undefined;this[_0x40e3('0x28')]=_0x2b17c1[_0x40e3('0x28')]?_0x2b17c1[_0x40e3('0x28')]:undefined;this[_0x40e3('0x29')]=_0x2b17c1[_0x40e3('0x28')]?_0x2b17c1[_0x40e3('0x28')][_0x40e3('0x0')]:undefined;this['dialAMDActive']=_0x2b17c1[_0x40e3('0x2a')]||![];this[_0x40e3('0x2b')]=_0x2b17c1[_0x40e3('0x2b')];this['dialAMDGreeting']=_0x2b17c1[_0x40e3('0x2c')];this[_0x40e3('0x2d')]=_0x2b17c1['dialAMDAfterGreetingSilence'];this['dialAMDTotalAnalysisTime']=_0x2b17c1[_0x40e3('0x2e')];this['dialAMDMinWordLength']=_0x2b17c1[_0x40e3('0x2f')];this['dialAMDBetweenWordsSilence']=_0x2b17c1[_0x40e3('0x30')];this[_0x40e3('0x31')]=_0x2b17c1[_0x40e3('0x31')];this['dialAMDSilenceThreshold']=_0x2b17c1[_0x40e3('0x32')];this['dialAMDMaximumWordLength']=_0x2b17c1[_0x40e3('0x33')];}module['exports']=Campaign;
\ No newline at end of file
+var _0x456f=['dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','temp','ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry'];(function(_0x3f26a1,_0x267aed){var _0x485837=function(_0x210f05){while(--_0x210f05){_0x3f26a1['push'](_0x3f26a1['shift']());}};_0x485837(++_0x267aed);}(_0x456f,0x108));var _0xf456=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x456f[_0x3dd15e];return _0x231fd0;};'use strict';function Campaign(_0x25f1b3){this['id']=_0x25f1b3['id']||0x0;this[_0xf456('0x0')]=_0x25f1b3[_0xf456('0x0')]||'';this[_0xf456('0x1')]=_0x25f1b3[_0xf456('0x1')]||'campaign';this['originated']=0x0;this[_0xf456('0x2')]=0x0;this[_0xf456('0x3')]=0x0;this[_0xf456('0x4')]=0x0;this['message']='';this[_0xf456('0x5')]=!![];this[_0xf456('0x6')]=_0x25f1b3[_0xf456('0x6')];this[_0xf456('0x7')]=_0x25f1b3['limitCalls'];this['dialTimezone']=_0x25f1b3[_0xf456('0x8')]||null;this[_0xf456('0x9')]=_0x25f1b3[_0xf456('0x9')]?_0x25f1b3['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x25f1b3[_0xf456('0xa')];this[_0xf456('0xb')]=_0x25f1b3['dialOriginateCallerIdNumber'];this[_0xf456('0xc')]=_0x25f1b3[_0xf456('0xc')]||0x1e;this['dialCongestionMaxRetry']=_0x25f1b3['dialCongestionMaxRetry'];this[_0xf456('0xd')]=_0x25f1b3['dialCongestionRetryFrequency'];this['dialBusyMaxRetry']=_0x25f1b3[_0xf456('0xe')];this['dialBusyRetryFrequency']=_0x25f1b3[_0xf456('0xf')];this[_0xf456('0x10')]=_0x25f1b3[_0xf456('0x10')];this[_0xf456('0x11')]=_0x25f1b3['dialNoAnswerRetryFrequency'];this[_0xf456('0x12')]=_0x25f1b3['dialGlobalMaxRetry'];this[_0xf456('0x13')]=_0x25f1b3[_0xf456('0x13')]||0x3;this[_0xf456('0x14')]=_0x25f1b3[_0xf456('0x14')]||0x96;this['dialDropMaxRetry']=_0x25f1b3[_0xf456('0x15')]||0x3;this[_0xf456('0x16')]=_0x25f1b3[_0xf456('0x16')]||0x96;this[_0xf456('0x17')]=_0x25f1b3[_0xf456('0x17')]||0x3;this[_0xf456('0x18')]=_0x25f1b3[_0xf456('0x18')]||0x96;this[_0xf456('0x19')]=_0x25f1b3[_0xf456('0x19')]||0x3;this[_0xf456('0x1a')]=_0x25f1b3['dialMachineRetryFrequency']||0x96;this[_0xf456('0x1b')]=_0x25f1b3[_0xf456('0x1b')]||0x3;this[_0xf456('0x1c')]=_0x25f1b3[_0xf456('0x1c')]||0x96;this[_0xf456('0x1d')]=_0x25f1b3[_0xf456('0x1d')]||'DESC';this['dialPrefix']=_0x25f1b3[_0xf456('0x1e')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x25f1b3[_0xf456('0x1f')]||undefined;this[_0xf456('0x20')]=_0x25f1b3[_0xf456('0x20')]||undefined;this[_0xf456('0x21')]=_0x25f1b3[_0xf456('0x21')]?_0x25f1b3['TrunkBackup']:undefined;this[_0xf456('0x22')]=_0x25f1b3['Trunk']?_0x25f1b3[_0xf456('0x22')]:undefined;this[_0xf456('0x23')]=_0x25f1b3[_0xf456('0x23')]?_0x25f1b3['Interval']:undefined;this['SquareProject']=_0x25f1b3[_0xf456('0x24')]?_0x25f1b3[_0xf456('0x24')]:undefined;this['dialQueueProject']=_0x25f1b3[_0xf456('0x24')]?_0x25f1b3['SquareProject']['name']:undefined;this[_0xf456('0x25')]=_0x25f1b3[_0xf456('0x25')]||![];this[_0xf456('0x26')]=_0x25f1b3[_0xf456('0x26')];this[_0xf456('0x27')]=_0x25f1b3[_0xf456('0x27')];this[_0xf456('0x28')]=_0x25f1b3[_0xf456('0x28')];this[_0xf456('0x29')]=_0x25f1b3[_0xf456('0x29')];this[_0xf456('0x2a')]=_0x25f1b3[_0xf456('0x2a')];this[_0xf456('0x2b')]=_0x25f1b3[_0xf456('0x2b')];this[_0xf456('0x2c')]=_0x25f1b3[_0xf456('0x2c')];this[_0xf456('0x2d')]=_0x25f1b3['dialAMDSilenceThreshold'];this[_0xf456('0x2e')]=_0x25f1b3[_0xf456('0x2e')];}module[_0xf456('0x2f')]=Campaign;
\ No newline at end of file
index 56ac871..97199ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x969e=['tag','disposition','monitor','monitorFilename','queue','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','calleridnum','calleridname','connectedlinenum','uniqueid','linkedid','exten','answered','endtime','unmanaged','abandoned','lastdata','billableseconds','holdtime'];(function(_0x19c159,_0x1ae8b1){var _0x130c46=function(_0x4bb240){while(--_0x4bb240){_0x19c159['push'](_0x19c159['shift']());}};_0x130c46(++_0x1ae8b1);}(_0x969e,0x136));var _0xe969=function(_0x5650c1,_0x1e4ece){_0x5650c1=_0x5650c1-0x0;var _0x144e41=_0x969e[_0x5650c1];return _0x144e41;};'use strict';function Channel(){this[_0xe969('0x0')]=null;this[_0xe969('0x1')]='';this['destinationchannel']='';this[_0xe969('0x2')]=0x0;this[_0xe969('0x3')]='';this[_0xe969('0x4')]=undefined;this['connectedlinename']=undefined;this['accountcode']=0x0;this['context']='';this[_0xe969('0x5')]=0x0;this[_0xe969('0x6')]=0x0;this[_0xe969('0x7')]=0x0;this[_0xe969('0x8')]=![];this['answertime']=null;this[_0xe969('0x9')]=null;this[_0xe969('0xa')]=![];this[_0xe969('0xb')]=![];this['lastapplication']='';this[_0xe969('0xc')]='';this['duration']=0x0;this[_0xe969('0xd')]=0x0;this[_0xe969('0xe')]=0x0;this['type']=null;this[_0xe969('0xf')]=null;this[_0xe969('0x10')]=null;this[_0xe969('0x11')]=![];this[_0xe969('0x12')]=null;this[_0xe969('0x13')]=null;this['monitors']=[];this[_0xe969('0x14')]=undefined;this[_0xe969('0x15')]=undefined;this[_0xe969('0x16')]=undefined;this[_0xe969('0x17')]=0x0;}module[_0xe969('0x18')]=Channel;
\ No newline at end of file
+var _0x2d0b=['type','monitorFilename','transferconnectedlinenum','transferType','mohtime','channel','destinationchannel','calleridnum','connectedlinenum','connectedlinename','accountcode','context','linkedid','answered','answertime','endtime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime'];(function(_0x36fd50,_0xbf6ae4){var _0x1c2514=function(_0x53bcbf){while(--_0x53bcbf){_0x36fd50['push'](_0x36fd50['shift']());}};_0x1c2514(++_0xbf6ae4);}(_0x2d0b,0x102));var _0xb2d0=function(_0x34bf9d,_0xe22f1a){_0x34bf9d=_0x34bf9d-0x0;var _0x992181=_0x2d0b[_0x34bf9d];return _0x992181;};'use strict';function Channel(){this['starttime']=null;this[_0xb2d0('0x0')]='';this[_0xb2d0('0x1')]='';this[_0xb2d0('0x2')]=0x0;this['calleridname']='';this[_0xb2d0('0x3')]=undefined;this[_0xb2d0('0x4')]=undefined;this[_0xb2d0('0x5')]=0x0;this[_0xb2d0('0x6')]='';this['uniqueid']=0x0;this[_0xb2d0('0x7')]=0x0;this['exten']=0x0;this[_0xb2d0('0x8')]=![];this[_0xb2d0('0x9')]=null;this[_0xb2d0('0xa')]=null;this[_0xb2d0('0xb')]=![];this[_0xb2d0('0xc')]=![];this[_0xb2d0('0xd')]='';this[_0xb2d0('0xe')]='';this[_0xb2d0('0xf')]=0x0;this[_0xb2d0('0x10')]=0x0;this[_0xb2d0('0x11')]=0x0;this[_0xb2d0('0x12')]=null;this['tag']=null;this['disposition']=null;this['monitor']=![];this[_0xb2d0('0x13')]=null;this['queue']=null;this['monitors']=[];this['transfercalleridnum']=undefined;this[_0xb2d0('0x14')]=undefined;this[_0xb2d0('0x15')]=undefined;this[_0xb2d0('0x16')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 973fca0..d57cc9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b4e=['username','authType','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name'];(function(_0x36feba,_0x541932){var _0x358e41=function(_0x3dc247){while(--_0x3dc247){_0x36feba['push'](_0x36feba['shift']());}};_0x358e41(++_0x541932);}(_0x5b4e,0xaf));var _0xe5b4=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x5b4e[_0x4a9fb1];return _0x348672;};'use strict';function DeskAccount(_0xc849b7){this['id']=_0xc849b7['id']||0x0;this[_0xe5b4('0x0')]=_0xc849b7['name']||'';this[_0xe5b4('0x1')]=_0xc849b7[_0xe5b4('0x1')]||'';this['remoteUri']=_0xc849b7['remoteUri']||'';this[_0xe5b4('0x2')]=_0xc849b7[_0xe5b4('0x2')]||'';this['password']=_0xc849b7['password']||'';this[_0xe5b4('0x3')]=_0xc849b7[_0xe5b4('0x3')]||'';this[_0xe5b4('0x4')]=_0xc849b7['consumerSecret']||'';this['token']=_0xc849b7[_0xe5b4('0x5')]||'';this[_0xe5b4('0x6')]=_0xc849b7[_0xe5b4('0x6')]||'';this[_0xe5b4('0x7')]=_0xc849b7[_0xe5b4('0x7')]||'';this[_0xe5b4('0x8')]=_0xc849b7[_0xe5b4('0x8')]||'';this[_0xe5b4('0x9')]=_0xc849b7['Configurations']||{};}module[_0xe5b4('0xa')]=DeskAccount;
\ No newline at end of file
+var _0xa8d5=['username','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret','type','serverUrl','Configurations','name'];(function(_0x3ba422,_0x53303c){var _0x20b5dd=function(_0x10b8a7){while(--_0x10b8a7){_0x3ba422['push'](_0x3ba422['shift']());}};_0x20b5dd(++_0x53303c);}(_0xa8d5,0x16a));var _0x5a8d=function(_0x526b5b,_0x6aad6){_0x526b5b=_0x526b5b-0x0;var _0xeb219d=_0xa8d5[_0x526b5b];return _0xeb219d;};'use strict';function DeskAccount(_0x56543f){this['id']=_0x56543f['id']||0x0;this['name']=_0x56543f[_0x5a8d('0x0')]||'';this['username']=_0x56543f[_0x5a8d('0x1')]||'';this['remoteUri']=_0x56543f[_0x5a8d('0x2')]||'';this[_0x5a8d('0x3')]=_0x56543f[_0x5a8d('0x3')]||'';this[_0x5a8d('0x4')]=_0x56543f[_0x5a8d('0x4')]||'';this[_0x5a8d('0x5')]=_0x56543f[_0x5a8d('0x5')]||'';this['consumerSecret']=_0x56543f[_0x5a8d('0x6')]||'';this['token']=_0x56543f['token']||'';this[_0x5a8d('0x7')]=_0x56543f[_0x5a8d('0x7')]||'';this[_0x5a8d('0x8')]=_0x56543f[_0x5a8d('0x8')]||'';this[_0x5a8d('0x9')]=_0x56543f[_0x5a8d('0x9')]||'';this['Configurations']=_0x56543f[_0x5a8d('0xa')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
index cbbb433..4e57f04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['exports','name','username','password','remoteUri','clientSecret','serverUrl','Configurations'];(function(_0x35de33,_0x3fd324){var _0x1d11da=function(_0x453ad3){while(--_0x453ad3){_0x35de33['push'](_0x35de33['shift']());}};_0x1d11da(++_0x3fd324);}(_0xd64b,0xc1));var _0xbd64=function(_0x15f9c6,_0x4a344e){_0x15f9c6=_0x15f9c6-0x0;var _0xe1874e=_0xd64b[_0x15f9c6];return _0xe1874e;};'use strict';function Dynamics365Account(_0x272488){this['id']=_0x272488['id']||0x0;this['name']=_0x272488[_0xbd64('0x0')]||'';this['username']=_0x272488[_0xbd64('0x1')]||'';this[_0xbd64('0x2')]=_0x272488[_0xbd64('0x2')]||'';this[_0xbd64('0x3')]=_0x272488[_0xbd64('0x3')]||'';this['tenantId']=_0x272488['tenantId']||'';this['clientId']=_0x272488['clientId']||'';this[_0xbd64('0x4')]=_0x272488[_0xbd64('0x4')]||{};this[_0xbd64('0x5')]=_0x272488[_0xbd64('0x5')]||'';this[_0xbd64('0x6')]=_0x272488[_0xbd64('0x6')]||{};}module[_0xbd64('0x7')]=Dynamics365Account;
\ No newline at end of file
+var _0xa571=['Configurations','exports','name','username','password','tenantId','clientId','clientSecret','serverUrl'];(function(_0x33de54,_0x5434b9){var _0x18fe1f=function(_0x3fe66c){while(--_0x3fe66c){_0x33de54['push'](_0x33de54['shift']());}};_0x18fe1f(++_0x5434b9);}(_0xa571,0x107));var _0x1a57=function(_0x1aa5eb,_0x4efec4){_0x1aa5eb=_0x1aa5eb-0x0;var _0x45f0fa=_0xa571[_0x1aa5eb];return _0x45f0fa;};'use strict';function Dynamics365Account(_0x2046d8){this['id']=_0x2046d8['id']||0x0;this[_0x1a57('0x0')]=_0x2046d8[_0x1a57('0x0')]||'';this[_0x1a57('0x1')]=_0x2046d8['username']||'';this[_0x1a57('0x2')]=_0x2046d8[_0x1a57('0x2')]||'';this['remoteUri']=_0x2046d8['remoteUri']||'';this[_0x1a57('0x3')]=_0x2046d8['tenantId']||'';this[_0x1a57('0x4')]=_0x2046d8[_0x1a57('0x4')]||'';this[_0x1a57('0x5')]=_0x2046d8[_0x1a57('0x5')]||{};this[_0x1a57('0x6')]=_0x2046d8[_0x1a57('0x6')]||'';this['Configurations']=_0x2046d8[_0x1a57('0x7')]||{};}module[_0x1a57('0x8')]=Dynamics365Account;
\ No newline at end of file
index 8cb8dce..c7f028a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b49=['faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x9b49,0x16d));var _0x99b4=function(_0x38eb23,_0x196e8b){_0x38eb23=_0x38eb23-0x0;var _0x48506a=_0x9b49[_0x38eb23];return _0x48506a;};'use strict';function FaxAccount(_0x33f069){this['id']=_0x33f069['id']||0x0;this[_0x99b4('0x0')]=_0x33f069['name']||'';this[_0x99b4('0x1')]=_0x33f069[_0x99b4('0x1')];this[_0x99b4('0x2')]=_0x33f069[_0x99b4('0x2')];this[_0x99b4('0x3')]=_0x33f069[_0x99b4('0x3')];this[_0x99b4('0x4')]=_0x33f069[_0x99b4('0x4')];this[_0x99b4('0x5')]=_0x33f069['minrate']||0x960;this[_0x99b4('0x6')]=_0x33f069[_0x99b4('0x6')]||0x3840;this[_0x99b4('0x7')]=_0x33f069[_0x99b4('0x7')]||_0x99b4('0x8');this['gateway']=_0x33f069['gateway']||'no';this[_0x99b4('0x9')]=_0x33f069[_0x99b4('0x9')]||'no';this[_0x99b4('0xa')]=_0x33f069['t38timeout']||0x1388;this[_0x99b4('0xb')]=_0x33f069[_0x99b4('0xb')]||_0x99b4('0xc');this[_0x99b4('0xd')]=_0x33f069[_0x99b4('0xd')]?_0x33f069[_0x99b4('0xd')]:undefined;this[_0x99b4('0xe')]=_0x33f069[_0x99b4('0xe')];this['key']=_0x33f069[_0x99b4('0xf')];}module[_0x99b4('0x10')]=FaxAccount;
\ No newline at end of file
+var _0x5ef3=['Trunk','ListId','key','exports','name','description','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','SIP'];(function(_0x16e73a,_0x146629){var _0x187aa1=function(_0x26eb2f){while(--_0x26eb2f){_0x16e73a['push'](_0x16e73a['shift']());}};_0x187aa1(++_0x146629);}(_0x5ef3,0x18a));var _0x35ef=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0x5ef3[_0x725b8e];return _0x43ac45;};'use strict';function FaxAccount(_0x3f2ecb){this['id']=_0x3f2ecb['id']||0x0;this['name']=_0x3f2ecb[_0x35ef('0x0')]||'';this[_0x35ef('0x1')]=_0x3f2ecb[_0x35ef('0x1')];this['ecm']=_0x3f2ecb['ecm'];this['headerinfo']=_0x3f2ecb['headerinfo'];this[_0x35ef('0x2')]=_0x3f2ecb[_0x35ef('0x2')];this[_0x35ef('0x3')]=_0x3f2ecb[_0x35ef('0x3')]||0x960;this[_0x35ef('0x4')]=_0x3f2ecb[_0x35ef('0x4')]||0x3840;this[_0x35ef('0x5')]=_0x3f2ecb[_0x35ef('0x5')]||'v17,v27,v29';this[_0x35ef('0x6')]=_0x3f2ecb['gateway']||'no';this['faxdetect']=_0x3f2ecb[_0x35ef('0x7')]||'no';this[_0x35ef('0x8')]=_0x3f2ecb['t38timeout']||0x1388;this[_0x35ef('0x9')]=_0x3f2ecb[_0x35ef('0x9')]||_0x35ef('0xa');this[_0x35ef('0xb')]=_0x3f2ecb[_0x35ef('0xb')]?_0x3f2ecb[_0x35ef('0xb')]:undefined;this['ListId']=_0x3f2ecb[_0x35ef('0xc')];this['key']=_0x3f2ecb[_0x35ef('0xd')];}module[_0x35ef('0xe')]=FaxAccount;
\ No newline at end of file
index bee82fe..f17ab51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9139=['remoteUri','serverUrl','Configurations','exports','name','username','token'];(function(_0x215638,_0x4125c6){var _0x4eb0eb=function(_0x403c8){while(--_0x403c8){_0x215638['push'](_0x215638['shift']());}};_0x4eb0eb(++_0x4125c6);}(_0x9139,0x90));var _0x9913=function(_0x21a62d,_0x1b6745){_0x21a62d=_0x21a62d-0x0;var _0x5afb32=_0x9139[_0x21a62d];return _0x5afb32;};'use strict';function FreshdeskAccount(_0x2baf94){this['id']=_0x2baf94['id']||0x0;this[_0x9913('0x0')]=_0x2baf94[_0x9913('0x0')]||'';this[_0x9913('0x1')]=_0x2baf94['username']||'';this['apiKey']=_0x2baf94[_0x9913('0x2')]||'';this[_0x9913('0x3')]=_0x2baf94[_0x9913('0x3')]||'';this[_0x9913('0x4')]=_0x2baf94[_0x9913('0x4')]||'';this[_0x9913('0x5')]=_0x2baf94[_0x9913('0x5')]||{};}module[_0x9913('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0xde7e=['name','username','apiKey','token','remoteUri','serverUrl','exports'];(function(_0x44d869,_0x49425f){var _0x1ed521=function(_0x2c2968){while(--_0x2c2968){_0x44d869['push'](_0x44d869['shift']());}};_0x1ed521(++_0x49425f);}(_0xde7e,0xcb));var _0xede7=function(_0x37aee6,_0x44189d){_0x37aee6=_0x37aee6-0x0;var _0x7b00f7=_0xde7e[_0x37aee6];return _0x7b00f7;};'use strict';function FreshdeskAccount(_0x2727bc){this['id']=_0x2727bc['id']||0x0;this[_0xede7('0x0')]=_0x2727bc['name']||'';this[_0xede7('0x1')]=_0x2727bc['username']||'';this[_0xede7('0x2')]=_0x2727bc[_0xede7('0x3')]||'';this['remoteUri']=_0x2727bc[_0xede7('0x4')]||'';this[_0xede7('0x5')]=_0x2727bc[_0xede7('0x5')]||'';this['Configurations']=_0x2727bc['Configurations']||{};}module[_0xede7('0x6')]=FreshdeskAccount;
\ No newline at end of file
index afc9ea6..2ebf820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d7=['exports','name','username','remoteUri','serverUrl'];(function(_0x15d5d6,_0x423fda){var _0xb47cd4=function(_0x327130){while(--_0x327130){_0x15d5d6['push'](_0x15d5d6['shift']());}};_0xb47cd4(++_0x423fda);}(_0x20d7,0x146));var _0x720d=function(_0x817da3,_0x4be305){_0x817da3=_0x817da3-0x0;var _0x4db911=_0x20d7[_0x817da3];return _0x4db911;};'use strict';function FreshsalesAccount(_0x2c7afc){this['id']=_0x2c7afc['id']||0x0;this['name']=_0x2c7afc[_0x720d('0x0')]||'';this[_0x720d('0x1')]=_0x2c7afc[_0x720d('0x1')]||'';this['apiKey']=_0x2c7afc['token']||'';this['remoteUri']=_0x2c7afc[_0x720d('0x2')]||'';this[_0x720d('0x3')]=_0x2c7afc['serverUrl']||'';this['Configurations']=_0x2c7afc['Configurations']||{};}module[_0x720d('0x4')]=FreshsalesAccount;
\ No newline at end of file
+var _0xf360=['remoteUri','serverUrl','Configurations','exports','name','username','token'];(function(_0x5ef905,_0x564b87){var _0x367808=function(_0x14f487){while(--_0x14f487){_0x5ef905['push'](_0x5ef905['shift']());}};_0x367808(++_0x564b87);}(_0xf360,0x9e));var _0x0f36=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xf360[_0x59ee6f];return _0x4c0979;};'use strict';function FreshsalesAccount(_0x18c229){this['id']=_0x18c229['id']||0x0;this[_0x0f36('0x0')]=_0x18c229[_0x0f36('0x0')]||'';this['username']=_0x18c229[_0x0f36('0x1')]||'';this['apiKey']=_0x18c229[_0x0f36('0x2')]||'';this[_0x0f36('0x3')]=_0x18c229[_0x0f36('0x3')]||'';this['serverUrl']=_0x18c229[_0x0f36('0x4')]||'';this[_0x0f36('0x5')]=_0x18c229[_0x0f36('0x5')]||{};}module[_0x0f36('0x6')]=FreshsalesAccount;
\ No newline at end of file
index b9a2434..4b94bd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7743=['inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','position','count','queuecallerabandonAt','queuecallercomplete','queuecallerexit','queuecallerexitAt','connectedlinename','context','priority','holdtime','assigned','lastAssignedTo','motionChannel','voice','mohtime','variables','exports','type'];(function(_0x18a342,_0xe3c72f){var _0x10be3a=function(_0x2c0e14){while(--_0x2c0e14){_0x18a342['push'](_0x18a342['shift']());}};_0x10be3a(++_0xe3c72f);}(_0x7743,0xbf));var _0x3774=function(_0x2d72fd,_0x1a93f5){_0x2d72fd=_0x2d72fd-0x0;var _0x5a6119=_0x7743[_0x2d72fd];return _0x5a6119;};'use strict';function QueueReport(){this[_0x3774('0x0')]=_0x3774('0x1');this[_0x3774('0x2')]='';this[_0x3774('0x3')]='';this[_0x3774('0x4')]='';this[_0x3774('0x5')]='';this[_0x3774('0x6')]=null;this['queuecallerleaveAt']=null;this[_0x3774('0x7')]=0x1;this[_0x3774('0x8')]=0x1;this['queuecallerabandon']=![];this[_0x3774('0x9')]=null;this[_0x3774('0xa')]=![];this['queuecallercompleteAt']=null;this[_0x3774('0xb')]=![];this[_0x3774('0xc')]=null;this['originalposition']=0x1;this['channel']='';this['connectedlinenum']='';this[_0x3774('0xd')]='';this['accountcode']='';this[_0x3774('0xe')]='';this['exten']='';this[_0x3774('0xf')]='';this[_0x3774('0x10')]=0x0;this[_0x3774('0x11')]=![];this[_0x3774('0x12')]='';this[_0x3774('0x13')]=_0x3774('0x14');this[_0x3774('0x15')]=0x0;this[_0x3774('0x16')]={};}module[_0x3774('0x17')]=QueueReport;
\ No newline at end of file
+var _0xb574=['queuecallerjoinAt','position','count','queuecallercomplete','queuecallercompleteAt','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority','assigned','lastAssignedTo','mohtime','variables','exports','type','uniqueid','calleridnum','queue'];(function(_0x364cf8,_0x146b9b){var _0x6a59ee=function(_0x3d81eb){while(--_0x3d81eb){_0x364cf8['push'](_0x364cf8['shift']());}};_0x6a59ee(++_0x146b9b);}(_0xb574,0x183));var _0x4b57=function(_0x477218,_0x4a94e){_0x477218=_0x477218-0x0;var _0x37a100=_0xb574[_0x477218];return _0x37a100;};'use strict';function QueueReport(){this[_0x4b57('0x0')]='inbound';this[_0x4b57('0x1')]='';this[_0x4b57('0x2')]='';this['calleridname']='';this[_0x4b57('0x3')]='';this[_0x4b57('0x4')]=null;this['queuecallerleaveAt']=null;this[_0x4b57('0x5')]=0x1;this[_0x4b57('0x6')]=0x1;this['queuecallerabandon']=![];this['queuecallerabandonAt']=null;this[_0x4b57('0x7')]=![];this[_0x4b57('0x8')]=null;this['queuecallerexit']=![];this[_0x4b57('0x9')]=null;this[_0x4b57('0xa')]=0x1;this[_0x4b57('0xb')]='';this[_0x4b57('0xc')]='';this[_0x4b57('0xd')]='';this[_0x4b57('0xe')]='';this[_0x4b57('0xf')]='';this[_0x4b57('0x10')]='';this[_0x4b57('0x11')]='';this['holdtime']=0x0;this[_0x4b57('0x12')]=![];this[_0x4b57('0x13')]='';this['motionChannel']='voice';this[_0x4b57('0x14')]=0x0;this[_0x4b57('0x15')]={};}module[_0x4b57('0x16')]=QueueReport;
\ No newline at end of file
index 7e1a391..7ee355f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f19=['integrationTab','serverUrl','Configurations','name','username','remoteUri','password','clientSecret','securityToken','type'];(function(_0xd5de03,_0x5d0ddf){var _0x38e2d7=function(_0x1850b8){while(--_0x1850b8){_0xd5de03['push'](_0xd5de03['shift']());}};_0x38e2d7(++_0x5d0ddf);}(_0x3f19,0x157));var _0x93f1=function(_0x169e53,_0x46be55){_0x169e53=_0x169e53-0x0;var _0x252bb3=_0x3f19[_0x169e53];return _0x252bb3;};'use strict';function SalesforceAccount(_0xdee31){this['id']=_0xdee31['id']||0x0;this[_0x93f1('0x0')]=_0xdee31[_0x93f1('0x0')]||'';this[_0x93f1('0x1')]=_0xdee31[_0x93f1('0x1')]||'';this[_0x93f1('0x2')]=_0xdee31['remoteUri']||'';this['password']=_0xdee31[_0x93f1('0x3')]||'';this['clientId']=_0xdee31['clientId']||'';this['clientSecret']=_0xdee31[_0x93f1('0x4')]||'';this[_0x93f1('0x5')]=_0xdee31[_0x93f1('0x5')]||'';this['type']=_0xdee31[_0x93f1('0x6')]||_0x93f1('0x7');this[_0x93f1('0x8')]=_0xdee31[_0x93f1('0x8')]||'';this[_0x93f1('0x9')]=_0xdee31[_0x93f1('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0x7c93=['integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type'];(function(_0x90ae4b,_0x40a3b6){var _0x23e212=function(_0xdf876b){while(--_0xdf876b){_0x90ae4b['push'](_0x90ae4b['shift']());}};_0x23e212(++_0x40a3b6);}(_0x7c93,0xc4));var _0x37c9=function(_0x4caddb,_0x55ad66){_0x4caddb=_0x4caddb-0x0;var _0x409038=_0x7c93[_0x4caddb];return _0x409038;};'use strict';function SalesforceAccount(_0x13c234){this['id']=_0x13c234['id']||0x0;this[_0x37c9('0x0')]=_0x13c234[_0x37c9('0x0')]||'';this[_0x37c9('0x1')]=_0x13c234[_0x37c9('0x1')]||'';this[_0x37c9('0x2')]=_0x13c234[_0x37c9('0x2')]||'';this[_0x37c9('0x3')]=_0x13c234[_0x37c9('0x3')]||'';this[_0x37c9('0x4')]=_0x13c234[_0x37c9('0x4')]||'';this[_0x37c9('0x5')]=_0x13c234[_0x37c9('0x5')]||'';this[_0x37c9('0x6')]=_0x13c234[_0x37c9('0x6')]||'';this[_0x37c9('0x7')]=_0x13c234['type']||_0x37c9('0x8');this[_0x37c9('0x9')]=_0x13c234[_0x37c9('0x9')]||'';this[_0x37c9('0xa')]=_0x13c234[_0x37c9('0xa')]||{};}module[_0x37c9('0xb')]=SalesforceAccount;
\ No newline at end of file
index eedab5a..35aa94c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5211=['password','remoteUri','serverUrl','Configurations','name','username'];(function(_0x44c9cb,_0x2d75b5){var _0x3cca7e=function(_0x10d509){while(--_0x10d509){_0x44c9cb['push'](_0x44c9cb['shift']());}};_0x3cca7e(++_0x2d75b5);}(_0x5211,0x17e));var _0x1521=function(_0x3a9a02,_0x5cc056){_0x3a9a02=_0x3a9a02-0x0;var _0x4610b4=_0x5211[_0x3a9a02];return _0x4610b4;};'use strict';function ServicenowAccount(_0xd74872){this['id']=_0xd74872['id']||0x0;this['name']=_0xd74872[_0x1521('0x0')]||'';this['username']=_0xd74872[_0x1521('0x1')]||'';this[_0x1521('0x2')]=_0xd74872[_0x1521('0x2')]||'';this[_0x1521('0x3')]=_0xd74872[_0x1521('0x3')]||'';this[_0x1521('0x4')]=_0xd74872[_0x1521('0x4')]||'';this[_0x1521('0x5')]=_0xd74872[_0x1521('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0x6960=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x6960,0xea));var _0x0696=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x6960[_0x4565bf];return _0x5610ba;};'use strict';function ServicenowAccount(_0x3d147b){this['id']=_0x3d147b['id']||0x0;this[_0x0696('0x0')]=_0x3d147b[_0x0696('0x0')]||'';this['username']=_0x3d147b[_0x0696('0x1')]||'';this[_0x0696('0x2')]=_0x3d147b[_0x0696('0x2')]||'';this[_0x0696('0x3')]=_0x3d147b[_0x0696('0x3')]||'';this[_0x0696('0x4')]=_0x3d147b[_0x0696('0x4')]||'';this[_0x0696('0x5')]=_0x3d147b[_0x0696('0x5')]||{};}module[_0x0696('0x6')]=ServicenowAccount;
\ No newline at end of file
index 4942acf..b683bdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca8=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x5448e2,_0x1c9af4){var _0x4f9a2f=function(_0x3b6936){while(--_0x3b6936){_0x5448e2['push'](_0x5448e2['shift']());}};_0x4f9a2f(++_0x1c9af4);}(_0x9ca8,0x123));var _0x89ca=function(_0x18e52b,_0x1fae35){_0x18e52b=_0x18e52b-0x0;var _0x3d3062=_0x9ca8[_0x18e52b];return _0x3d3062;};'use strict';function SugarcrmAccount(_0x407206){this['id']=_0x407206['id']||0x0;this[_0x89ca('0x0')]=_0x407206['name']||'';this[_0x89ca('0x1')]=_0x407206[_0x89ca('0x1')]||'';this[_0x89ca('0x2')]=_0x407206[_0x89ca('0x2')]||'';this[_0x89ca('0x3')]=_0x407206['remoteUri']||'';this[_0x89ca('0x4')]=_0x407206[_0x89ca('0x4')]||'';this[_0x89ca('0x5')]=_0x407206[_0x89ca('0x5')]||{};}module[_0x89ca('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x5d74=['name','username','remoteUri','serverUrl','Configurations'];(function(_0x24cc51,_0xf74dc9){var _0x3e83e8=function(_0xd67b8b){while(--_0xd67b8b){_0x24cc51['push'](_0x24cc51['shift']());}};_0x3e83e8(++_0xf74dc9);}(_0x5d74,0x14a));var _0x45d7=function(_0x14952f,_0x3cccad){_0x14952f=_0x14952f-0x0;var _0xc2c163=_0x5d74[_0x14952f];return _0xc2c163;};'use strict';function SugarcrmAccount(_0x379ad6){this['id']=_0x379ad6['id']||0x0;this['name']=_0x379ad6[_0x45d7('0x0')]||'';this[_0x45d7('0x1')]=_0x379ad6[_0x45d7('0x1')]||'';this['password']=_0x379ad6['password']||'';this[_0x45d7('0x2')]=_0x379ad6[_0x45d7('0x2')]||'';this[_0x45d7('0x3')]=_0x379ad6[_0x45d7('0x3')]||'';this[_0x45d7('0x4')]=_0x379ad6['Configurations']||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index 5ba5110..2ed8ab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a9=['state','unknown','stateTime','status','address','exports','name','accountcode'];(function(_0x42e465,_0x31344d){var _0x5ce301=function(_0x2fe75b){while(--_0x2fe75b){_0x42e465['push'](_0x42e465['shift']());}};_0x5ce301(++_0x31344d);}(_0x18a9,0x17e));var _0x918a=function(_0x3a31ac,_0x5e2c44){_0x3a31ac=_0x3a31ac-0x0;var _0x2aa2bc=_0x18a9[_0x3a31ac];return _0x2aa2bc;};'use strict';function Telephone(_0x1ccacd){this['id']=_0x1ccacd['id']||0x0;this['name']=_0x1ccacd[_0x918a('0x0')]||'';this['accountcode']=_0x1ccacd[_0x918a('0x1')]||'';this[_0x918a('0x2')]=_0x918a('0x3');this[_0x918a('0x4')]=0x0;this[_0x918a('0x5')]=_0x918a('0x3');this[_0x918a('0x6')]='';}module[_0x918a('0x7')]=Telephone;
\ No newline at end of file
+var _0x4ee4=['exports','name','accountcode','state','unknown','stateTime','status','address'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4ee4,0x179));var _0x44ee=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x4ee4[_0x24061a];return _0x82054e;};'use strict';function Telephone(_0x1cf93a){this['id']=_0x1cf93a['id']||0x0;this[_0x44ee('0x0')]=_0x1cf93a[_0x44ee('0x0')]||'';this[_0x44ee('0x1')]=_0x1cf93a['accountcode']||'';this[_0x44ee('0x2')]=_0x44ee('0x3');this[_0x44ee('0x4')]=0x0;this[_0x44ee('0x5')]=_0x44ee('0x3');this[_0x44ee('0x6')]='';}module[_0x44ee('0x7')]=Telephone;
\ No newline at end of file
index da1800d..3c36154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x3f23b6,_0xe7b3a9){var _0x25b32f=function(_0x47259f){while(--_0x47259f){_0x3f23b6['push'](_0x3f23b6['shift']());}};_0x25b32f(++_0xe7b3a9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x1887dc,_0x50eabf){var _0x162100=function(_0x215dee){while(--_0x215dee){_0x1887dc['push'](_0x1887dc['shift']());}};_0x162100(++_0x50eabf);}(_0xb10b,0x12a));var _0xbb10=function(_0x5c6210,_0x1310b7){_0x5c6210=_0x5c6210-0x0;var _0xe4c7a1=_0xb10b[_0x5c6210];return _0xe4c7a1;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index 3bdcc88..9d6410d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x2f3d1d,_0x2d7a5c){var _0xaedc28=function(_0xd182d9){while(--_0xd182d9){_0x2f3d1d['push'](_0x2f3d1d['shift']());}};_0xaedc28(++_0x2d7a5c);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x54c310,_0x100667){_0x54c310=_0x54c310-0x0;var _0x471a52=_0x9ffd[_0x54c310];return _0x471a52;};'use strict';function Trigger(_0x4c26a1){this['id']=_0x4c26a1['id']||0x0;this[_0xd9ff('0x0')]=_0x4c26a1[_0xd9ff('0x0')]||'';this['channel']=_0x4c26a1[_0xd9ff('0x1')]||_0xd9ff('0x2');this[_0xd9ff('0x3')]=_0x4c26a1[_0xd9ff('0x3')]||![];this['AllConditions']=_0x4c26a1[_0xd9ff('0x4')]||[];this[_0xd9ff('0x5')]=_0x4c26a1['AnyConditions']||[];this[_0xd9ff('0x6')]=_0x4c26a1[_0xd9ff('0x6')]||[];}module[_0xd9ff('0x7')]=Trigger;
\ No newline at end of file
+var _0x5f2f=['AnyConditions','Actions','exports','name','channel','voice','status'];(function(_0x5efcb0,_0x1cce28){var _0x2a986c=function(_0x2c4242){while(--_0x2c4242){_0x5efcb0['push'](_0x5efcb0['shift']());}};_0x2a986c(++_0x1cce28);}(_0x5f2f,0x73));var _0xf5f2=function(_0x8fb035,_0x217b6d){_0x8fb035=_0x8fb035-0x0;var _0x3a678d=_0x5f2f[_0x8fb035];return _0x3a678d;};'use strict';function Trigger(_0x7c86d8){this['id']=_0x7c86d8['id']||0x0;this[_0xf5f2('0x0')]=_0x7c86d8[_0xf5f2('0x0')]||'';this[_0xf5f2('0x1')]=_0x7c86d8[_0xf5f2('0x1')]||_0xf5f2('0x2');this[_0xf5f2('0x3')]=_0x7c86d8[_0xf5f2('0x3')]||![];this['AllConditions']=_0x7c86d8['AllConditions']||[];this[_0xf5f2('0x4')]=_0x7c86d8[_0xf5f2('0x4')]||[];this[_0xf5f2('0x5')]=_0x7c86d8[_0xf5f2('0x5')]||[];}module[_0xf5f2('0x6')]=Trigger;
\ No newline at end of file
index 573f32f..4328471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf64=['domain','domainport','refresh','registrationtime','address','defaultuser','exports','active','name','unknown','stateTime','status','registry','indexOf','split','host','port'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xcf64,0x16c));var _0x4cf6=function(_0x43f1ac,_0x28baeb){_0x43f1ac=_0x43f1ac-0x0;var _0x2dfdc7=_0xcf64[_0x43f1ac];return _0x2dfdc7;};'use strict';function Trunk(_0x4032d1){this['id']=_0x4032d1['id']||0x0;this['active']=_0x4032d1[_0x4cf6('0x0')]||![];this[_0x4cf6('0x1')]=_0x4032d1[_0x4cf6('0x1')]||'';this['state']=_0x4cf6('0x2');this[_0x4cf6('0x3')]=0x0;this[_0x4cf6('0x4')]='unknown';this[_0x4cf6('0x5')]=_0x4032d1['registry']&&_0x4032d1[_0x4cf6('0x5')][_0x4cf6('0x6')](':')?_0x4032d1[_0x4cf6('0x5')][_0x4cf6('0x7')](':')[0x0]:'';this[_0x4cf6('0x8')]='';this[_0x4cf6('0x9')]='';this[_0x4cf6('0xa')]='';this[_0x4cf6('0xb')]='';this[_0x4cf6('0xc')]='';this['stateRegistry']='unknown';this[_0x4cf6('0xd')]='';this[_0x4cf6('0xe')]='';this['defaultuser']=_0x4032d1[_0x4cf6('0xf')]||'';}module[_0x4cf6('0x10')]=Trunk;
\ No newline at end of file
+var _0xc84a=['unknown','stateTime','registry','host','port','domainport','refresh','registrationtime','address','defaultuser','active','name','state'];(function(_0x32c7b0,_0x5d6483){var _0x132104=function(_0x4f0169){while(--_0x4f0169){_0x32c7b0['push'](_0x32c7b0['shift']());}};_0x132104(++_0x5d6483);}(_0xc84a,0xda));var _0xac84=function(_0x555f2e,_0xa78b7){_0x555f2e=_0x555f2e-0x0;var _0x12e782=_0xc84a[_0x555f2e];return _0x12e782;};'use strict';function Trunk(_0x660a86){this['id']=_0x660a86['id']||0x0;this[_0xac84('0x0')]=_0x660a86[_0xac84('0x0')]||![];this[_0xac84('0x1')]=_0x660a86['name']||'';this[_0xac84('0x2')]=_0xac84('0x3');this[_0xac84('0x4')]=0x0;this['status']=_0xac84('0x3');this[_0xac84('0x5')]=_0x660a86[_0xac84('0x5')]&&_0x660a86[_0xac84('0x5')]['indexOf'](':')?_0x660a86[_0xac84('0x5')]['split'](':')[0x0]:'';this[_0xac84('0x6')]='';this[_0xac84('0x7')]='';this['domain']='';this[_0xac84('0x8')]='';this[_0xac84('0x9')]='';this['stateRegistry']=_0xac84('0x3');this[_0xac84('0xa')]='';this[_0xac84('0xb')]='';this['defaultuser']=_0x660a86[_0xac84('0xc')]||'';}module['exports']=Trunk;
\ No newline at end of file
index 97fa640..72b6a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e4b=['recordingFormat','mandatoryDisposition','exten'];(function(_0x590b61,_0x4c4335){var _0x1a14dc=function(_0x2ff4f6){while(--_0x2ff4f6){_0x590b61['push'](_0x590b61['shift']());}};_0x1a14dc(++_0x4c4335);}(_0x8e4b,0x1ac));var _0xb8e4=function(_0x7eee7,_0x3779a1){_0x7eee7=_0x7eee7-0x0;var _0x469f62=_0x8e4b[_0x7eee7];return _0x469f62;};'use strict';function voiceExtension(_0x1baed6){this['id']=_0x1baed6['id']||0x0;this[_0xb8e4('0x0')]=_0x1baed6['exten']||'';this[_0xb8e4('0x1')]=_0x1baed6[_0xb8e4('0x1')]||'none';this[_0xb8e4('0x2')]=_0x1baed6[_0xb8e4('0x2')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0xa2cf=['exports','recordingFormat','none'];(function(_0x24062e,_0x30c60e){var _0x566214=function(_0x764a4d){while(--_0x764a4d){_0x24062e['push'](_0x24062e['shift']());}};_0x566214(++_0x30c60e);}(_0xa2cf,0x175));var _0xfa2c=function(_0x331762,_0x4d2a85){_0x331762=_0x331762-0x0;var _0x3d2855=_0xa2cf[_0x331762];return _0x3d2855;};'use strict';function voiceExtension(_0x458829){this['id']=_0x458829['id']||0x0;this['exten']=_0x458829['exten']||'';this[_0xfa2c('0x0')]=_0x458829[_0xfa2c('0x0')]||_0xfa2c('0x1');this['mandatoryDisposition']=_0x458829['mandatoryDisposition']||![];}module[_0xfa2c('0x2')]=voiceExtension;
\ No newline at end of file
index 8a59688..fa870b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff62=['dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','name','monitor_format','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','loggedIn','available','acw','acwTimeout','autopause','message','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency'];(function(_0x6ff984,_0x52fbd1){var _0x1b8400=function(_0x15ce8c){while(--_0x15ce8c){_0x6ff984['push'](_0x6ff984['shift']());}};_0x1b8400(++_0x52fbd1);}(_0xff62,0xb4));var _0x2ff6=function(_0x45ad39,_0x1709b3){_0x45ad39=_0x45ad39-0x0;var _0x2a5772=_0xff62[_0x45ad39];return _0x2a5772;};'use strict';var statusDesc=[_0x2ff6('0x0'),_0x2ff6('0x1'),'inuse','busy',_0x2ff6('0x2'),_0x2ff6('0x3'),_0x2ff6('0x4'),_0x2ff6('0x5'),_0x2ff6('0x6')];var monitorFormat={'wav':_0x2ff6('0x7'),'wav49':_0x2ff6('0x8'),'gsm':_0x2ff6('0x9')};var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};function VoiceQueue(_0xc1a83f){this['id']=_0xc1a83f['id']||0x0;this[_0x2ff6('0xa')]=_0xc1a83f['name']||'';this[_0x2ff6('0xb')]=_0xc1a83f[_0x2ff6('0xb')]||'';this['type']=_0xc1a83f['type']||_0x2ff6('0xc');this[_0x2ff6('0xd')]=0x0;this[_0x2ff6('0xe')]=0x0;this[_0x2ff6('0xf')]=0x0;this[_0x2ff6('0x10')]=0x0;this[_0x2ff6('0x11')]=0x0;this[_0x2ff6('0x12')]=0x0;this[_0x2ff6('0x13')]=0x0;this[_0x2ff6('0x14')]=0x0;this['abandoned']=0x0;this[_0x2ff6('0x15')]=0x0;this[_0x2ff6('0x16')]=0x0;this['acw']=_0xc1a83f[_0x2ff6('0x17')]||![];this[_0x2ff6('0x18')]=_0xc1a83f[_0x2ff6('0x18')]||0xa;this['autopause']=_0xc1a83f[_0x2ff6('0x19')]||'no';this['sendMessageOneNotActive']=!![];this[_0x2ff6('0x1a')]='';this[_0x2ff6('0x1b')]=0x0;this['temp']=0x0;this[_0x2ff6('0x1c')]=_0xc1a83f[_0x2ff6('0x1c')]||null;this[_0x2ff6('0x1d')]=_0xc1a83f['dialGlobalInterval']?_0xc1a83f[_0x2ff6('0x1d')]:null;this['dialActive']=_0xc1a83f[_0x2ff6('0x1e')];this[_0x2ff6('0x1f')]=_0xc1a83f[_0x2ff6('0x1f')]||_0x2ff6('0x20');this[_0x2ff6('0x21')]=_0xc1a83f[_0x2ff6('0x21')]||0x0;this[_0x2ff6('0x22')]=_0xc1a83f[_0x2ff6('0x22')]||0x0;this['dialPowerLevel']=_0xc1a83f[_0x2ff6('0x23')]||0x1;this['dialPredictiveOptimization']=_0xc1a83f[_0x2ff6('0x24')]||_0x2ff6('0x25');this[_0x2ff6('0x26')]=_0xc1a83f[_0x2ff6('0x26')]||0.03;this[_0x2ff6('0x27')]=_0xc1a83f[_0x2ff6('0x27')]||0x258;this[_0x2ff6('0x28')]=_0xc1a83f[_0x2ff6('0x28')]||'anonymous';this['dialOriginateCallerIdNumber']=_0xc1a83f[_0x2ff6('0x29')]||'anonymous';this['dialOriginateTimeout']=_0xc1a83f[_0x2ff6('0x2a')]||0x1e;this['dialQueueOptions']=_0xc1a83f[_0x2ff6('0x2b')]||_0x2ff6('0x2c');this['dialQueueTimeout']=_0xc1a83f['dialQueueTimeout']||0x3;this[_0x2ff6('0x2d')]=_0xc1a83f['dialQueueProject']||undefined;this[_0x2ff6('0x2e')]=_0xc1a83f[_0x2ff6('0x2e')]||0x3;this[_0x2ff6('0x2f')]=_0xc1a83f[_0x2ff6('0x2f')]||0x96;this[_0x2ff6('0x30')]=_0xc1a83f['dialBusyMaxRetry']||0x3;this[_0x2ff6('0x31')]=_0xc1a83f[_0x2ff6('0x31')]||0x96;this[_0x2ff6('0x32')]=_0xc1a83f[_0x2ff6('0x32')]||0x3;this[_0x2ff6('0x33')]=_0xc1a83f['dialNoAnswerRetryFrequency']||0x96;this[_0x2ff6('0x34')]=_0xc1a83f['dialNoSuchNumberMaxRetry']||0x3;this[_0x2ff6('0x35')]=_0xc1a83f[_0x2ff6('0x35')]||0x96;this[_0x2ff6('0x36')]=_0xc1a83f[_0x2ff6('0x36')]||0x3;this['dialDropRetryFrequency']=_0xc1a83f[_0x2ff6('0x37')]||0x96;this[_0x2ff6('0x38')]=_0xc1a83f[_0x2ff6('0x38')]||0x3;this[_0x2ff6('0x39')]=_0xc1a83f[_0x2ff6('0x39')]||0x96;this['dialMachineMaxRetry']=_0xc1a83f[_0x2ff6('0x3a')]||0x3;this[_0x2ff6('0x3b')]=_0xc1a83f['dialMachineRetryFrequency']||0x96;this[_0x2ff6('0x3c')]=_0xc1a83f[_0x2ff6('0x3c')]||0x3;this[_0x2ff6('0x3d')]=_0xc1a83f['dialAgentRejectRetryFrequency']||0x96;this[_0x2ff6('0x3e')]=_0xc1a83f[_0x2ff6('0x3e')]||0x4;this[_0x2ff6('0x3f')]=_0xc1a83f[_0x2ff6('0x3f')]?_0xc1a83f[_0x2ff6('0x3f')]:undefined;this['TrunkBackup']=_0xc1a83f[_0x2ff6('0x40')]?_0xc1a83f[_0x2ff6('0x40')]:undefined;this[_0x2ff6('0x41')]=_0xc1a83f[_0x2ff6('0x41')]||undefined;this[_0x2ff6('0x42')]=_0xc1a83f[_0x2ff6('0x42')]?_0xc1a83f[_0x2ff6('0x42')]:undefined;this['dialOrderByScheduledAt']=_0xc1a83f[_0x2ff6('0x43')]||_0x2ff6('0x44');this[_0x2ff6('0x45')]=_0xc1a83f['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x2ff6('0x46')]=_0xc1a83f[_0x2ff6('0x46')]||undefined;this[_0x2ff6('0x47')]=strategy[_0xc1a83f[_0x2ff6('0x47')]]||_0x2ff6('0x48');this[_0x2ff6('0x49')]=!![];this['dialAMDActive']=_0xc1a83f[_0x2ff6('0x4a')]||![];this[_0x2ff6('0x4b')]=_0xc1a83f[_0x2ff6('0x4b')];this[_0x2ff6('0x4c')]=_0xc1a83f[_0x2ff6('0x4c')];this['dialAMDAfterGreetingSilence']=_0xc1a83f['dialAMDAfterGreetingSilence'];this[_0x2ff6('0x4d')]=_0xc1a83f[_0x2ff6('0x4d')];this[_0x2ff6('0x4e')]=_0xc1a83f[_0x2ff6('0x4e')];this['dialAMDBetweenWordsSilence']=_0xc1a83f[_0x2ff6('0x4f')];this[_0x2ff6('0x50')]=_0xc1a83f[_0x2ff6('0x50')];this[_0x2ff6('0x51')]=_0xc1a83f[_0x2ff6('0x51')];this[_0x2ff6('0x52')]=_0xc1a83f[_0x2ff6('0x52')];this[_0x2ff6('0x53')]=0x0;this['pTalking']=0x0;this['timeout']=_0xc1a83f[_0x2ff6('0x54')];this[_0x2ff6('0x55')]=0x0;this[_0x2ff6('0x56')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this['outboundBusyCallsDay']=0x0;this[_0x2ff6('0x57')]=0x0;this[_0x2ff6('0x58')]=0x0;this[_0x2ff6('0x59')]=0x0;this['outboundBlacklistCallsDay']=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0x2ff6('0x5a')]=0x0;this[_0x2ff6('0x5b')]=0x0;this[_0x2ff6('0x5c')]=0x0;this[_0x2ff6('0x5d')]=0x0;this['outboundAbandonedDay']=0x0;this['startProgressive']=undefined;this[_0x2ff6('0x5e')]=undefined;this[_0x2ff6('0x5f')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x2ff6('0x60')]=0x0;this[_0x2ff6('0x61')]=0x0;this[_0x2ff6('0x62')]=0x0;this[_0x2ff6('0x63')]=0x0;this[_0x2ff6('0x64')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x2ff6('0x65')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0x2ff6('0x66')]=_0xc1a83f['dialPredictiveIntervalMaxThreshold']||0x14;this[_0x2ff6('0x67')]=_0xc1a83f[_0x2ff6('0x68')]||0xa;this[_0x2ff6('0x69')]=0x0;this[_0x2ff6('0x6a')]=0x0;this[_0x2ff6('0x6b')]=0x1;this[_0x2ff6('0x6c')]=0x0;this[_0x2ff6('0x6d')]=0x0;this[_0x2ff6('0x6e')]=0x0;this[_0x2ff6('0x6f')]=0x0;this[_0x2ff6('0x70')]=_0xc1a83f[_0x2ff6('0x70')]||0x1e;this[_0x2ff6('0x71')]=_0xc1a83f['dialRecallInQueue']||![];this['dialPreviewAutoRecallMe']=!!_0xc1a83f[_0x2ff6('0x72')]||![];this[_0x2ff6('0x73')]=_0xc1a83f[_0x2ff6('0x73')]||undefined;this[_0x2ff6('0x74')]=_0xc1a83f[_0x2ff6('0x74')]||![];this[_0x2ff6('0x75')]=_0xc1a83f[_0x2ff6('0x75')]||![];this[_0x2ff6('0xb')]=monitorFormat[_0xc1a83f[_0x2ff6('0xb')]]?monitorFormat[_0xc1a83f[_0x2ff6('0xb')]]:undefined;this['mandatoryDisposition']=_0xc1a83f[_0x2ff6('0x76')]||![];this[_0x2ff6('0x77')]=_0xc1a83f[_0x2ff6('0x77')]?_0xc1a83f[_0x2ff6('0x77')]:undefined;}module[_0x2ff6('0x78')]=VoiceQueue;
\ No newline at end of file
+var _0x41fa=['unavailable','ringinuse','onhold','wav','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','talking','total','answered','sumDuration','unmanaged','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundReCallsDay','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','busy','invalid'];(function(_0xfb0cfd,_0x500179){var _0x2fd8aa=function(_0xccb501){while(--_0xccb501){_0xfb0cfd['push'](_0xfb0cfd['shift']());}};_0x2fd8aa(++_0x500179);}(_0x41fa,0x159));var _0xa41f=function(_0x4c3afd,_0x3e7a45){_0x4c3afd=_0x4c3afd-0x0;var _0x4e2ef3=_0x41fa[_0x4c3afd];return _0x4e2ef3;};'use strict';var statusDesc=[_0xa41f('0x0'),'not_inuse','inuse',_0xa41f('0x1'),_0xa41f('0x2'),_0xa41f('0x3'),'ringing',_0xa41f('0x4'),_0xa41f('0x5')];var monitorFormat={'wav':_0xa41f('0x6'),'wav49':'wav49','gsm':_0xa41f('0x7')};var strategy={'rrmemory':_0xa41f('0x8'),'roundrobin':_0xa41f('0x9')};function VoiceQueue(_0x14ad55){this['id']=_0x14ad55['id']||0x0;this[_0xa41f('0xa')]=_0x14ad55['name']||'';this[_0xa41f('0xb')]=_0x14ad55[_0xa41f('0xb')]||'';this['type']=_0x14ad55[_0xa41f('0xc')]||_0xa41f('0xd');this['waiting']=0x0;this[_0xa41f('0xe')]=0x0;this[_0xa41f('0xf')]=0x0;this[_0xa41f('0x10')]=0x0;this[_0xa41f('0x11')]=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0xa41f('0x12')]=0x0;this['abandoned']=0x0;this[_0xa41f('0x13')]=0x0;this[_0xa41f('0x14')]=0x0;this[_0xa41f('0x15')]=_0x14ad55['acw']||![];this['acwTimeout']=_0x14ad55[_0xa41f('0x16')]||0xa;this[_0xa41f('0x17')]=_0x14ad55[_0xa41f('0x17')]||'no';this[_0xa41f('0x18')]=!![];this[_0xa41f('0x19')]='';this[_0xa41f('0x1a')]=0x0;this[_0xa41f('0x1b')]=0x0;this[_0xa41f('0x1c')]=_0x14ad55['dialTimezone']||null;this[_0xa41f('0x1d')]=_0x14ad55[_0xa41f('0x1d')]?_0x14ad55[_0xa41f('0x1d')]:null;this[_0xa41f('0x1e')]=_0x14ad55[_0xa41f('0x1e')];this[_0xa41f('0x1f')]=_0x14ad55[_0xa41f('0x1f')]||'progressive';this['dialLimitChannel']=_0x14ad55[_0xa41f('0x20')]||0x0;this[_0xa41f('0x21')]=_0x14ad55[_0xa41f('0x21')]||0x0;this['dialPowerLevel']=_0x14ad55[_0xa41f('0x22')]||0x1;this['dialPredictiveOptimization']=_0x14ad55[_0xa41f('0x23')]||_0xa41f('0x24');this['dialPredictiveOptimizationPercentage']=_0x14ad55[_0xa41f('0x25')]||0.03;this[_0xa41f('0x26')]=_0x14ad55[_0xa41f('0x26')]||0x258;this['dialOriginateCallerIdName']=_0x14ad55[_0xa41f('0x27')]||_0xa41f('0x28');this['dialOriginateCallerIdNumber']=_0x14ad55['dialOriginateCallerIdNumber']||_0xa41f('0x28');this[_0xa41f('0x29')]=_0x14ad55[_0xa41f('0x29')]||0x1e;this[_0xa41f('0x2a')]=_0x14ad55[_0xa41f('0x2a')]||_0xa41f('0x2b');this['dialQueueTimeout']=_0x14ad55['dialQueueTimeout']||0x3;this[_0xa41f('0x2c')]=_0x14ad55[_0xa41f('0x2c')]||undefined;this[_0xa41f('0x2d')]=_0x14ad55[_0xa41f('0x2d')]||0x3;this[_0xa41f('0x2e')]=_0x14ad55[_0xa41f('0x2e')]||0x96;this['dialBusyMaxRetry']=_0x14ad55[_0xa41f('0x2f')]||0x3;this[_0xa41f('0x30')]=_0x14ad55[_0xa41f('0x30')]||0x96;this[_0xa41f('0x31')]=_0x14ad55[_0xa41f('0x31')]||0x3;this[_0xa41f('0x32')]=_0x14ad55[_0xa41f('0x32')]||0x96;this[_0xa41f('0x33')]=_0x14ad55[_0xa41f('0x33')]||0x3;this[_0xa41f('0x34')]=_0x14ad55[_0xa41f('0x34')]||0x96;this['dialDropMaxRetry']=_0x14ad55[_0xa41f('0x35')]||0x3;this[_0xa41f('0x36')]=_0x14ad55[_0xa41f('0x36')]||0x96;this[_0xa41f('0x37')]=_0x14ad55[_0xa41f('0x37')]||0x3;this[_0xa41f('0x38')]=_0x14ad55[_0xa41f('0x38')]||0x96;this[_0xa41f('0x39')]=_0x14ad55[_0xa41f('0x39')]||0x3;this[_0xa41f('0x3a')]=_0x14ad55[_0xa41f('0x3a')]||0x96;this['dialAgentRejectMaxRetry']=_0x14ad55[_0xa41f('0x3b')]||0x3;this[_0xa41f('0x3c')]=_0x14ad55[_0xa41f('0x3c')]||0x96;this['dialGlobalMaxRetry']=_0x14ad55[_0xa41f('0x3d')]||0x4;this['Trunk']=_0x14ad55[_0xa41f('0x3e')]?_0x14ad55[_0xa41f('0x3e')]:undefined;this['TrunkBackup']=_0x14ad55[_0xa41f('0x3f')]?_0x14ad55[_0xa41f('0x3f')]:undefined;this[_0xa41f('0x40')]=_0x14ad55['dialPrefix']||undefined;this[_0xa41f('0x41')]=_0x14ad55[_0xa41f('0x41')]?_0x14ad55[_0xa41f('0x41')]:undefined;this[_0xa41f('0x42')]=_0x14ad55['dialOrderByScheduledAt']||'DESC';this[_0xa41f('0x43')]=_0x14ad55['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xa41f('0x44')]=_0x14ad55[_0xa41f('0x44')]||undefined;this[_0xa41f('0x45')]=strategy[_0x14ad55[_0xa41f('0x45')]]||_0xa41f('0x8');this['queueStatusComplete']=!![];this['dialAMDActive']=_0x14ad55['dialAMDActive']||![];this[_0xa41f('0x46')]=_0x14ad55[_0xa41f('0x46')];this[_0xa41f('0x47')]=_0x14ad55[_0xa41f('0x47')];this[_0xa41f('0x48')]=_0x14ad55[_0xa41f('0x48')];this['dialAMDTotalAnalysisTime']=_0x14ad55['dialAMDTotalAnalysisTime'];this[_0xa41f('0x49')]=_0x14ad55[_0xa41f('0x49')];this['dialAMDBetweenWordsSilence']=_0x14ad55[_0xa41f('0x4a')];this[_0xa41f('0x4b')]=_0x14ad55[_0xa41f('0x4b')];this[_0xa41f('0x4c')]=_0x14ad55[_0xa41f('0x4c')];this[_0xa41f('0x4d')]=_0x14ad55[_0xa41f('0x4d')];this[_0xa41f('0x4e')]=0x0;this[_0xa41f('0x4f')]=0x0;this[_0xa41f('0x50')]=_0x14ad55[_0xa41f('0x50')];this[_0xa41f('0x51')]=0x0;this[_0xa41f('0x52')]=0x0;this[_0xa41f('0x53')]=0x0;this[_0xa41f('0x54')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xa41f('0x55')]=0x0;this[_0xa41f('0x56')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xa41f('0x57')]=0x0;this[_0xa41f('0x58')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this['outboundDropCallsDayACS']=0x0;this[_0xa41f('0x59')]=0x0;this['outboundAbandonedDay']=0x0;this['startProgressive']=undefined;this[_0xa41f('0x5a')]=undefined;this[_0xa41f('0x5b')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xa41f('0x5c')]=0x0;this[_0xa41f('0x5d')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0xa41f('0x5e')]=0x0;this[_0xa41f('0x5f')]=0x0;this[_0xa41f('0x60')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0xa41f('0x61')]=_0x14ad55[_0xa41f('0x62')]||0x14;this[_0xa41f('0x63')]=_0x14ad55[_0xa41f('0x62')]||0xa;this[_0xa41f('0x64')]=0x0;this[_0xa41f('0x65')]=0x0;this[_0xa41f('0x66')]=0x1;this[_0xa41f('0x67')]=0x0;this[_0xa41f('0x68')]=0x0;this[_0xa41f('0x69')]=0x0;this[_0xa41f('0x6a')]=0x0;this['dialRecallMeTimeout']=_0x14ad55[_0xa41f('0x6b')]||0x1e;this[_0xa41f('0x6c')]=_0x14ad55[_0xa41f('0x6c')]||![];this[_0xa41f('0x6d')]=!!_0x14ad55['dialPreviewAutoRecallMe']||![];this['dialQueueProject2']=_0x14ad55[_0xa41f('0x6e')]||undefined;this[_0xa41f('0x6f')]=_0x14ad55[_0xa41f('0x6f')]||![];this[_0xa41f('0x70')]=_0x14ad55[_0xa41f('0x70')]||![];this[_0xa41f('0xb')]=monitorFormat[_0x14ad55['monitor_format']]?monitorFormat[_0x14ad55[_0xa41f('0xb')]]:undefined;this[_0xa41f('0x71')]=_0x14ad55[_0xa41f('0x71')]||![];this['mandatoryDispositionPause']=_0x14ad55[_0xa41f('0x72')]?_0x14ad55[_0xa41f('0x72')]:undefined;}module[_0xa41f('0x73')]=VoiceQueue;
\ No newline at end of file
index 8df5390..7bca310 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x171a=['serverUrl','Configurations','exports','name','username','accessKey','remoteUri'];(function(_0x2282c6,_0x416ca0){var _0x2ffcf6=function(_0x30924c){while(--_0x30924c){_0x2282c6['push'](_0x2282c6['shift']());}};_0x2ffcf6(++_0x416ca0);}(_0x171a,0x1f4));var _0xa171=function(_0x476031,_0x41aef3){_0x476031=_0x476031-0x0;var _0x4950fb=_0x171a[_0x476031];return _0x4950fb;};'use strict';function VtigerAccount(_0x5937ac){this['id']=_0x5937ac['id']||0x0;this[_0xa171('0x0')]=_0x5937ac[_0xa171('0x0')]||'';this[_0xa171('0x1')]=_0x5937ac['username']||'';this['accessKey']=_0x5937ac[_0xa171('0x2')]||'';this[_0xa171('0x3')]=_0x5937ac['remoteUri']||'';this[_0xa171('0x4')]=_0x5937ac[_0xa171('0x4')]||'';this[_0xa171('0x5')]=_0x5937ac['Configurations']||{};}module[_0xa171('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x0c1c=['accessKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x51edce,_0x147274){var _0x50eec0=function(_0x42026e){while(--_0x42026e){_0x51edce['push'](_0x51edce['shift']());}};_0x50eec0(++_0x147274);}(_0x0c1c,0x83));var _0xc0c1=function(_0x223c0d,_0x3ec04d){_0x223c0d=_0x223c0d-0x0;var _0x207827=_0x0c1c[_0x223c0d];return _0x207827;};'use strict';function VtigerAccount(_0x185e8d){this['id']=_0x185e8d['id']||0x0;this[_0xc0c1('0x0')]=_0x185e8d[_0xc0c1('0x0')]||'';this[_0xc0c1('0x1')]=_0x185e8d[_0xc0c1('0x1')]||'';this['accessKey']=_0x185e8d[_0xc0c1('0x2')]||'';this['remoteUri']=_0x185e8d[_0xc0c1('0x3')]||'';this['serverUrl']=_0x185e8d[_0xc0c1('0x4')]||'';this[_0xc0c1('0x5')]=_0x185e8d[_0xc0c1('0x5')]||{};}module[_0xc0c1('0x6')]=VtigerAccount;
\ No newline at end of file
index 0a92019..a193bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f6d=['exports','name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations'];(function(_0x3dbb87,_0x47419d){var _0x141ca0=function(_0x3c101c){while(--_0x3c101c){_0x3dbb87['push'](_0x3dbb87['shift']());}};_0x141ca0(++_0x47419d);}(_0x8f6d,0x135));var _0xd8f6=function(_0x31e7c6,_0x2b3c96){_0x31e7c6=_0x31e7c6-0x0;var _0x2ca721=_0x8f6d[_0x31e7c6];return _0x2ca721;};'use strict';function ZendeskAccount(_0x1acf2c){this['id']=_0x1acf2c['id']||0x0;this['name']=_0x1acf2c[_0xd8f6('0x0')]||'';this['username']=_0x1acf2c[_0xd8f6('0x1')]||'';this[_0xd8f6('0x2')]=_0x1acf2c['password']||'';this[_0xd8f6('0x3')]=_0x1acf2c[_0xd8f6('0x3')]||'';this['remoteUri']=_0x1acf2c[_0xd8f6('0x4')]||'';this[_0xd8f6('0x5')]=_0x1acf2c[_0xd8f6('0x5')]||'';this[_0xd8f6('0x6')]=_0x1acf2c['type']||_0xd8f6('0x7');this[_0xd8f6('0x8')]=_0x1acf2c[_0xd8f6('0x8')]||'';this[_0xd8f6('0x9')]=_0x1acf2c['Configurations']||{};}module[_0xd8f6('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0x7f8a=['username','password','token','remoteUri','authType','type','serverUrl','Configurations','exports'];(function(_0x2d589c,_0x7e17d){var _0x5475ee=function(_0x58403f){while(--_0x58403f){_0x2d589c['push'](_0x2d589c['shift']());}};_0x5475ee(++_0x7e17d);}(_0x7f8a,0x1d4));var _0xa7f8=function(_0x174fa6,_0x148ddb){_0x174fa6=_0x174fa6-0x0;var _0x51c2e2=_0x7f8a[_0x174fa6];return _0x51c2e2;};'use strict';function ZendeskAccount(_0x34171b){this['id']=_0x34171b['id']||0x0;this['name']=_0x34171b['name']||'';this['username']=_0x34171b[_0xa7f8('0x0')]||'';this[_0xa7f8('0x1')]=_0x34171b[_0xa7f8('0x1')]||'';this[_0xa7f8('0x2')]=_0x34171b['token']||'';this[_0xa7f8('0x3')]=_0x34171b['remoteUri']||'';this[_0xa7f8('0x4')]=_0x34171b[_0xa7f8('0x4')]||'';this[_0xa7f8('0x5')]=_0x34171b[_0xa7f8('0x5')]||'integrationTab';this[_0xa7f8('0x6')]=_0x34171b[_0xa7f8('0x6')]||'';this[_0xa7f8('0x7')]=_0x34171b[_0xa7f8('0x7')]||{};}module[_0xa7f8('0x8')]=ZendeskAccount;
\ No newline at end of file
index ff3b650..48311ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dcf=['code','Configurations','name','description','host','zone','clientId','clientSecret','serverUrl'];(function(_0x562329,_0x5e433a){var _0x5d82f5=function(_0x3697fd){while(--_0x3697fd){_0x562329['push'](_0x562329['shift']());}};_0x5d82f5(++_0x5e433a);}(_0x2dcf,0x1bb));var _0xf2dc=function(_0x1aab31,_0x25f342){_0x1aab31=_0x1aab31-0x0;var _0x43c454=_0x2dcf[_0x1aab31];return _0x43c454;};'use strict';function ZohoAccount(_0x3dae96){this['id']=_0x3dae96['id']||0x0;this['name']=_0x3dae96[_0xf2dc('0x0')]||'';this['description']=_0x3dae96[_0xf2dc('0x1')]||'';this[_0xf2dc('0x2')]=_0x3dae96[_0xf2dc('0x2')]||'';this[_0xf2dc('0x3')]=_0x3dae96[_0xf2dc('0x3')]||'';this[_0xf2dc('0x4')]=_0x3dae96['clientId']||'';this[_0xf2dc('0x5')]=_0x3dae96['clientSecret']||'';this[_0xf2dc('0x6')]=_0x3dae96['serverUrl']||'';this['code']=_0x3dae96[_0xf2dc('0x7')]||'';this['refreshToken']=_0x3dae96['refreshToken']||'';this[_0xf2dc('0x8')]=_0x3dae96[_0xf2dc('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x4a3f=['clientSecret','serverUrl','code','refreshToken','Configurations','exports','host','zone','clientId'];(function(_0x4c9d76,_0x4f0b6f){var _0x5bb97d=function(_0x16a463){while(--_0x16a463){_0x4c9d76['push'](_0x4c9d76['shift']());}};_0x5bb97d(++_0x4f0b6f);}(_0x4a3f,0x8d));var _0xf4a3=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x4a3f[_0x2c7618];return _0x5ce3f0;};'use strict';function ZohoAccount(_0x2eb41b){this['id']=_0x2eb41b['id']||0x0;this['name']=_0x2eb41b['name']||'';this['description']=_0x2eb41b['description']||'';this[_0xf4a3('0x0')]=_0x2eb41b[_0xf4a3('0x0')]||'';this[_0xf4a3('0x1')]=_0x2eb41b['zone']||'';this[_0xf4a3('0x2')]=_0x2eb41b[_0xf4a3('0x2')]||'';this[_0xf4a3('0x3')]=_0x2eb41b[_0xf4a3('0x3')]||'';this[_0xf4a3('0x4')]=_0x2eb41b[_0xf4a3('0x4')]||'';this[_0xf4a3('0x5')]=_0x2eb41b['code']||'';this['refreshToken']=_0x2eb41b[_0xf4a3('0x6')]||'';this['Configurations']=_0x2eb41b[_0xf4a3('0x7')]||{};}module[_0xf4a3('0x8')]=ZohoAccount;
\ No newline at end of file
index a9ba9f8..7b2694e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7db2=['membername','Agent','SIP/%s','phone','Contact','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','util','lodash','moment','isNil','string','uniqueid','idContact','name','type'];(function(_0x1ac6ec,_0x1f81fc){var _0x48a489=function(_0xf38b04){while(--_0xf38b04){_0x1ac6ec['push'](_0x1ac6ec['shift']());}};_0x48a489(++_0x1f81fc);}(_0x7db2,0x97));var _0x27db=function(_0x1d9273,_0x1cedc7){_0x1d9273=_0x1d9273-0x0;var _0x1741fe=_0x7db2[_0x1d9273];return _0x1741fe;};'use strict';var util=require(_0x27db('0x0'));var _=require(_0x27db('0x1'));var moment=require(_0x27db('0x2'));function checkNameSurname(_0x3d2b41,_0x16c328,_0x8dc261){var _0x5f1a48='';if(!_[_0x27db('0x3')](_0x16c328)&&'string'===typeof _0x16c328){_0x5f1a48+=_0x16c328;}if(!_[_0x27db('0x3')](_0x8dc261)&&_0x27db('0x4')===typeof _0x8dc261){_0x5f1a48+='\x20'+_0x8dc261;}if(_0x5f1a48!==''){return _0x5f1a48;}return _0x3d2b41;}function Action(_0x1997d8,_0x57acf9,_0x14066f,_0x5c0320,_0x549532){this[_0x27db('0x5')]=_0x14066f||undefined;this[_0x27db('0x6')]=_0x1997d8['id'];this['queue']=_0x57acf9[_0x27db('0x7')];this[_0x27db('0x8')]=_0x57acf9['type'];this['campaigntype']='queue';this['dialAnswer']=![];this[_0x27db('0x9')]=_[_0x27db('0x3')](_0x1997d8[_0x27db('0xa')])?undefined:_0x1997d8[_0x27db('0xa')][_0x27db('0x7')];this['channelAgent']=this[_0x27db('0x9')]?util['format'](_0x27db('0xb'),this['membername']):_0x5c0320||undefined;this['calleridname']=checkNameSurname(_0x1997d8['Contact'][_0x27db('0xc')],_0x1997d8[_0x27db('0xd')][_0x27db('0xe')],_0x1997d8[_0x27db('0xd')][_0x27db('0xf')]);this[_0x27db('0x10')]=_0x1997d8['active']||![];this[_0x27db('0x11')]=_0x1997d8['Contact'][_0x27db('0xc')];this[_0x27db('0x12')]=_0x1997d8[_0x27db('0x12')];this[_0x27db('0x13')]=_0x1997d8[_0x27db('0x13')]||0x0;this[_0x27db('0x14')]=_0x1997d8['countcongestionretry']||0x0;this[_0x27db('0x15')]=_0x1997d8[_0x27db('0x15')]||0x0;this[_0x27db('0x16')]=(_0x1997d8[_0x27db('0x13')]||0x0)+(_0x1997d8[_0x27db('0x14')]||0x0)+(_0x1997d8[_0x27db('0x15')]||0x0)+(_0x1997d8[_0x27db('0x17')]||0x0)+(_0x1997d8[_0x27db('0x18')]||0x0)+(_0x1997d8[_0x27db('0x19')]||0x0)+(_0x1997d8[_0x27db('0x1a')]||0x0)+(_0x1997d8[_0x27db('0x1b')]||0x0);this[_0x27db('0x17')]=_0x1997d8['countnosuchnumberretry']||0x0;this['countdropretry']=_0x1997d8[_0x27db('0x18')]||0x0;this[_0x27db('0x19')]=_0x1997d8[_0x27db('0x19')]||0x0;this['countmachineretry']=_0x1997d8[_0x27db('0x1a')]||0x0;this[_0x27db('0x1b')]=_0x1997d8[_0x27db('0x1b')]||0x0;this[_0x27db('0x1c')]=_0x1997d8[_0x27db('0x1c')];this['callbackuniqueid']=_0x1997d8[_0x27db('0x1d')];this[_0x27db('0x1e')]=_0x1997d8[_0x27db('0x1e')];this[_0x27db('0x1f')]=_0x1997d8['recallme'];this['ContactId']=_0x1997d8[_0x27db('0x20')];this[_0x27db('0x21')]=_0x1997d8[_0x27db('0x21')];this['UserId']=_[_0x27db('0x3')](_0x1997d8[_0x27db('0xa')])?_0x1997d8[_0x27db('0x22')]:_0x1997d8[_0x27db('0xa')]['id'];this[_0x27db('0x23')]=_0x1997d8['VoiceQueueId'];this[_0x27db('0x24')]='';this[_0x27db('0x25')]='';}Action[_0x27db('0x26')]['getCaller']=function(){return util['format'](_0x27db('0x27'),this['calleridname'],this['number']);};module['exports']=Action;
\ No newline at end of file
+var _0xba7e=['countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','callback','callbackuniqueid','ContactId','ListId','UserId','VoiceQueueId','prototype','\x22%s\x22\x20<%s>','number','exports','util','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','Agent','channelAgent','format','SIP/%s','membername','calleridname','Contact','lastName','active','calleridnum','scheduledat'];(function(_0x13dd57,_0x35c57a){var _0xe0e303=function(_0x4d8e23){while(--_0x4d8e23){_0x13dd57['push'](_0x13dd57['shift']());}};_0xe0e303(++_0x35c57a);}(_0xba7e,0x1cb));var _0xeba7=function(_0x543bf6,_0x763bd7){_0x543bf6=_0x543bf6-0x0;var _0x4187b3=_0xba7e[_0x543bf6];return _0x4187b3;};'use strict';var util=require(_0xeba7('0x0'));var _=require('lodash');var moment=require(_0xeba7('0x1'));function checkNameSurname(_0x519282,_0x3c8b4b,_0x33631f){var _0x3be013='';if(!_[_0xeba7('0x2')](_0x3c8b4b)&&'string'===typeof _0x3c8b4b){_0x3be013+=_0x3c8b4b;}if(!_[_0xeba7('0x2')](_0x33631f)&&_0xeba7('0x3')===typeof _0x33631f){_0x3be013+='\x20'+_0x33631f;}if(_0x3be013!==''){return _0x3be013;}return _0x519282;}function Action(_0x50bb96,_0x17be12,_0x4127ba,_0x3c5470,_0x310754){this[_0xeba7('0x4')]=_0x4127ba||undefined;this[_0xeba7('0x5')]=_0x50bb96['id'];this[_0xeba7('0x6')]=_0x17be12[_0xeba7('0x7')];this['type']=_0x17be12[_0xeba7('0x8')];this[_0xeba7('0x9')]=_0xeba7('0x6');this['dialAnswer']=![];this['membername']=_[_0xeba7('0x2')](_0x50bb96['Agent'])?undefined:_0x50bb96[_0xeba7('0xa')]['name'];this[_0xeba7('0xb')]=this['membername']?util[_0xeba7('0xc')](_0xeba7('0xd'),this[_0xeba7('0xe')]):_0x3c5470||undefined;this[_0xeba7('0xf')]=checkNameSurname(_0x50bb96[_0xeba7('0x10')]['phone'],_0x50bb96[_0xeba7('0x10')]['firstName'],_0x50bb96[_0xeba7('0x10')][_0xeba7('0x11')]);this[_0xeba7('0x12')]=_0x50bb96[_0xeba7('0x12')]||![];this[_0xeba7('0x13')]=_0x50bb96[_0xeba7('0x10')]['phone'];this[_0xeba7('0x14')]=_0x50bb96['scheduledat'];this[_0xeba7('0x15')]=_0x50bb96[_0xeba7('0x15')]||0x0;this['countcongestionretry']=_0x50bb96[_0xeba7('0x16')]||0x0;this['countnoanswerretry']=_0x50bb96['countnoanswerretry']||0x0;this[_0xeba7('0x17')]=(_0x50bb96[_0xeba7('0x15')]||0x0)+(_0x50bb96[_0xeba7('0x16')]||0x0)+(_0x50bb96[_0xeba7('0x18')]||0x0)+(_0x50bb96[_0xeba7('0x19')]||0x0)+(_0x50bb96['countdropretry']||0x0)+(_0x50bb96[_0xeba7('0x1a')]||0x0)+(_0x50bb96[_0xeba7('0x1b')]||0x0)+(_0x50bb96['countagentrejectretry']||0x0);this['countnosuchnumberretry']=_0x50bb96[_0xeba7('0x19')]||0x0;this['countdropretry']=_0x50bb96[_0xeba7('0x1c')]||0x0;this[_0xeba7('0x1a')]=_0x50bb96['countabandonedretry']||0x0;this['countmachineretry']=_0x50bb96[_0xeba7('0x1b')]||0x0;this[_0xeba7('0x1d')]=_0x50bb96[_0xeba7('0x1d')]||0x0;this[_0xeba7('0x1e')]=_0x50bb96[_0xeba7('0x1e')];this[_0xeba7('0x1f')]=_0x50bb96[_0xeba7('0x1f')];this['callbackat']=_0x50bb96['callbackat'];this['recallme']=_0x50bb96['recallme'];this[_0xeba7('0x20')]=_0x50bb96[_0xeba7('0x20')];this[_0xeba7('0x21')]=_0x50bb96[_0xeba7('0x21')];this[_0xeba7('0x22')]=_['isNil'](_0x50bb96[_0xeba7('0xa')])?_0x50bb96[_0xeba7('0x22')]:_0x50bb96[_0xeba7('0xa')]['id'];this[_0xeba7('0x23')]=_0x50bb96[_0xeba7('0x23')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0xeba7('0x24')]['getCaller']=function(){return util[_0xeba7('0xc')](_0xeba7('0x25'),this[_0xeba7('0xf')],this[_0xeba7('0x26')]);};module[_0xeba7('0x27')]=Action;
\ No newline at end of file
index c59ed31..b1a2dbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa630=['[getContactRecallMe]','IsNotLoggedIn','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','unlockAgent','activeContact','ANSWER','responsetime','uniqueid','\x20Queue','custom:agentconnect','connect','acw','buildAcw','custom:agentcomplete','buildObj','complete','total','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','linkedid','countbusyretry','busy','[callProgressDetectingCustomer][logBusy]','Global','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','scheduledAt','dialBusyRetryFrequency','NOANSWER','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countabandonedretry','dialAbandonedRetryFrequency','outboundUnknownCallsDay','cause-txt','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','dialstatus','amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','isEmpty','execCall','[Preview][execCall][success]','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Call\x20failed','outboundBlacklistCallsDay','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','getContactPreview','recallme','validateContact','checkIsBlackList','Contact.phone','Call\x20unsuccessful','[Preview][getContactPreview]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','substring','dialCutDigit','dialRandomLastDigitCallerIdNumber','getCallerId','getCallerIdRandom','originatecalleridname','extractCalleridName','extractCalleridNumber','merge','toLowerVariables','[originated][increment]','actionid','lookAgent','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','starttime','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','syncDialEnd','variables','keys','variable','addVariable','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','util','lodash','moment','ioredis','../../../config/logger','preview','actionPreview','../ami','./action','./util/util','redis','defaults','localhost','prototype','enqueue','tail','finally','sequence','voiceQueues','trunks','actions','agents','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','loopCampaigns','emit','type','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','abandoned','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangBusyFactor','startPredictive','Trunk','name','callerid','Interval','stringify','md5','voice_queue:save','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice:queue:%s','voice_queue_channel:remove','sendMessageOneNotActive','originated','message','NOT_ACTIVE','logger','\x20is\x20not\x20active','IS_DISACTIVED','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20disactive','syncCampaigns','campaignsPreview','clockClearZombieChannels','hasOwnProperty','booked','outbound','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','info','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','ListId','Action','status','channel','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][Preview]','getContactRecallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','[RecallMe]','catch','disableContact','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','logCustomer','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal'];(function(_0x300011,_0x2c2d52){var _0x3f34d0=function(_0x2bf076){while(--_0x2bf076){_0x300011['push'](_0x300011['shift']());}};_0x3f34d0(++_0x2c2d52);}(_0xa630,0xbe));var _0x0a63=function(_0x12d0ed,_0x44149b){_0x12d0ed=_0x12d0ed-0x0;var _0x2cef8c=_0xa630[_0x12d0ed];return _0x2cef8c;};'use strict';var util=require(_0x0a63('0x0'));var _=require(_0x0a63('0x1'));var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0x0a63('0x2'));var md5=require('md5');var Redis=require(_0x0a63('0x3'));var config=require('../../../config/environment');var logger=require(_0x0a63('0x4'))(_0x0a63('0x5'));var loggerAction=require(_0x0a63('0x4'))(_0x0a63('0x6'));var ami=require(_0x0a63('0x7'));var rpcDb=require('./rpcDb');var Action=require(_0x0a63('0x8'));var ut=require(_0x0a63('0x9'));config[_0x0a63('0xa')]=_[_0x0a63('0xb')](config[_0x0a63('0xa')],{'host':_0x0a63('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a63('0xa')]));var Sequence=function(){};Sequence[_0x0a63('0xd')][_0x0a63('0xe')]=function(_0x218142){this[_0x0a63('0xf')]=this[_0x0a63('0xf')]?this[_0x0a63('0xf')][_0x0a63('0x10')](_0x218142):_0x218142();};function Preview(_0x258511){this[_0x0a63('0x11')]=new Sequence();this['campaignsPreview']=_0x258511[_0x0a63('0x12')];this[_0x0a63('0x13')]=_0x258511[_0x0a63('0x13')];this[_0x0a63('0x14')]={};this['agents']=_0x258511[_0x0a63('0x15')];this['clockClearZombieChannels']=0x0;ami['on'](_0x0a63('0x16'),this[_0x0a63('0x17')][_0x0a63('0x18')](this));ami['on'](_0x0a63('0x19'),this[_0x0a63('0x1a')][_0x0a63('0x18')](this));ami['on'](_0x0a63('0x1b'),this[_0x0a63('0x1c')]['bind'](this));ami['on'](_0x0a63('0x1d'),this['syncDialEnd'][_0x0a63('0x18')](this));ami['on'](_0x0a63('0x1e'),this[_0x0a63('0x1f')][_0x0a63('0x18')](this));ami['on'](_0x0a63('0x20'),this[_0x0a63('0x21')][_0x0a63('0x18')](this));ami['on'](_0x0a63('0x22'),this[_0x0a63('0x23')][_0x0a63('0x18')](this));ami['on'](_0x0a63('0x24'),this['syncBlindTransfer']['bind'](this));this[_0x0a63('0x25')](this['campaignsPreview']);}function emit(_0x2fc87c,_0x5937df,_0x58513d){io['to'](_0x2fc87c)[_0x0a63('0x26')](_0x5937df,_0x58513d);}function emitCampaignPreview(_0x145625){if(_0x145625[_0x0a63('0x27')]==='outbound'){var _0x398a16={'id':_0x145625['id'],'name':_0x145625['name'],'strategy':_0x145625[_0x0a63('0x28')],'answered':_0x145625[_0x0a63('0x29')],'available':_0x145625[_0x0a63('0x2a')],'loggedIn':_0x145625[_0x0a63('0x2b')],'pTalking':_0x145625[_0x0a63('0x2c')],'sumBillable':_0x145625[_0x0a63('0x2d')],'sumDuration':_0x145625[_0x0a63('0x2e')],'sumHoldTime':_0x145625[_0x0a63('0x2f')]||0x0,'talking':_0x145625['talking'],'total':_0x145625['total'],'type':_0x145625['type'],'unmanaged':_0x145625['unmanaged'],'abandoned':_0x145625[_0x0a63('0x30')],'waiting':_0x145625['waiting'],'loggedInDb':_0x145625['loggedInDb'],'dialActive':_0x145625[_0x0a63('0x31')],'dialMethod':_0x145625[_0x0a63('0x32')],'dialOriginateCallerIdName':_0x145625[_0x0a63('0x33')],'dialOriginateCallerIdNumber':_0x145625[_0x0a63('0x34')],'dialOriginateTimeout':_0x145625['dialOriginateTimeout'],'dialPrefix':_0x145625[_0x0a63('0x35')],'outboundAnswerAgiCallsDay':_0x145625[_0x0a63('0x36')],'outboundAnswerCallsDay':_0x145625[_0x0a63('0x37')],'outboundBlacklistCallsDay':_0x145625['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x145625[_0x0a63('0x38')],'outboundCongestionCallsDay':_0x145625[_0x0a63('0x39')],'outboundDropCallsDayACS':_0x145625[_0x0a63('0x3a')],'outboundDropCallsDayCallersExit':_0x145625[_0x0a63('0x3b')],'outboundDropCallsDayTimeout':_0x145625[_0x0a63('0x3c')],'outboundNoAnswerCallsDay':_0x145625[_0x0a63('0x3d')],'outboundNoSuchCallsDay':_0x145625[_0x0a63('0x3e')],'outboundOriginateFailureCallsDay':_0x145625[_0x0a63('0x3f')],'outboundReCallsDay':_0x145625['outboundReCallsDay'],'outboundRejectCallsDay':_0x145625[_0x0a63('0x40')],'outboundUnknownCallsDay':_0x145625['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x145625[_0x0a63('0x41')],'predictiveIntervalAnsweredCalls':_0x145625[_0x0a63('0x42')],'predictiveIntervalAvgHoldtime':_0x145625[_0x0a63('0x43')],'predictiveIntervalAvgTalktime':_0x145625[_0x0a63('0x44')],'predictiveIntervalDroppedCallsCallersExit':_0x145625[_0x0a63('0x45')],'predictiveIntervalDroppedCallsTimeout':_0x145625['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x145625[_0x0a63('0x46')],'predictiveIntervalErlangCallsDroppedCalls':_0x145625[_0x0a63('0x47')],'predictiveIntervalHitRate':_0x145625[_0x0a63('0x48')],'predictiveIntervalMultiplicativeFactor':_0x145625[_0x0a63('0x49')],'predictiveIntervalPauses':_0x145625['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x145625[_0x0a63('0x4a')],'predictiveIntervalTotalCalls':_0x145625[_0x0a63('0x4b')],'message':_0x145625['message'],'originated':_0x145625['originated'],'erlangCalls':_0x145625[_0x0a63('0x4c')],'erlangCallToSecond':_0x145625['erlangCallToSecond'],'erlangAbandonmentRate':_0x145625['erlangAbandonmentRate'],'erlangBusyFactor':_0x145625[_0x0a63('0x4d')],'startPredictive':_0x145625[_0x0a63('0x4e')],'startProgressive':_0x145625['startProgressive']};if(_0x145625[_0x0a63('0x4f')]){_0x398a16[_0x0a63('0x4f')]={'id':_0x145625[_0x0a63('0x4f')]['id'],'name':_0x145625[_0x0a63('0x4f')][_0x0a63('0x50')],'active':_0x145625['Trunk']['active'],'callerid':_0x145625[_0x0a63('0x4f')][_0x0a63('0x51')]};}if(_0x145625[_0x0a63('0x52')]){_0x398a16[_0x0a63('0x52')]={'id':_0x145625[_0x0a63('0x52')]['id'],'name':_0x145625[_0x0a63('0x52')]['name']};}var _0x307fe2=md5(JSON[_0x0a63('0x53')](_0x398a16));if(_0x145625['md5']!==_0x307fe2){_0x145625[_0x0a63('0x54')]=_0x307fe2;emit(util['format']('voice:queue:%s',_0x398a16[_0x0a63('0x50')]),_0x0a63('0x55'),_0x398a16);}}}function emitVoiceQueueChannelRemove(_0xdc602c){logger['info'](_0x0a63('0x56'),JSON[_0x0a63('0x53')](_0xdc602c));emit(util[_0x0a63('0x57')](_0x0a63('0x58'),_0xdc602c[_0x0a63('0x50')]),_0x0a63('0x59'),_0xdc602c);io[_0x0a63('0x26')]('voice_queue_presence:remove',_0xdc602c);}function notSendMessagesQueue(_0x368454){if(_0x368454[_0x0a63('0x5a')]){if(_0x368454[_0x0a63('0x5b')]===0x0&&_0x368454['pTalking']===0x0){_0x368454['sendMessageOneNotActive']=![];_0x368454[_0x0a63('0x2a')]=0x0;_0x368454['paused']=0x0;_0x368454[_0x0a63('0x5c')]=_0x0a63('0x5d');ut[_0x0a63('0x5e')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x368454[_0x0a63('0x50')]+_0x0a63('0x5f'));}else{_0x368454[_0x0a63('0x5c')]=_0x0a63('0x60');ut['logger'](_0x0a63('0x61'),_0x368454[_0x0a63('0x50')]+_0x0a63('0x62'));}emitCampaignPreview(_0x368454);}}Preview[_0x0a63('0xd')][_0x0a63('0x25')]=function(){var _0x38cfe4=this;setInterval(function(){_0x38cfe4['syncCampaigns']();},0x7cf);};Preview[_0x0a63('0xd')][_0x0a63('0x63')]=function(){var _0x347a0b=this[_0x0a63('0x64')];this[_0x0a63('0x65')]+=0x1;for(var _0x2482ca in _0x347a0b){if(_0x347a0b[_0x0a63('0x66')](_0x2482ca)&&(_0x347a0b[_0x2482ca][_0x0a63('0x32')]===_0x0a63('0x5')||_0x347a0b[_0x2482ca][_0x0a63('0x32')]===_0x0a63('0x67'))&&_0x347a0b[_0x2482ca][_0x0a63('0x27')]===_0x0a63('0x68')){if(this[_0x0a63('0x65')]>0x7){this[_0x0a63('0x65')]=0x0;this[_0x0a63('0x69')]();}}if(_0x347a0b[_0x0a63('0x66')](_0x2482ca)&&_0x347a0b[_0x2482ca][_0x0a63('0x32')]==='preview'&&_0x347a0b[_0x2482ca][_0x0a63('0x27')]==='outbound'){if(_0x347a0b[_0x2482ca]['dialActive']){this[_0x0a63('0x6a')](_0x347a0b[_0x2482ca]);if(_0x347a0b[_0x2482ca][_0x0a63('0x6b')])this[_0x0a63('0x6c')](_0x347a0b[_0x2482ca]);}else{notSendMessagesQueue(_0x347a0b[_0x2482ca]);}}}};Preview[_0x0a63('0xd')][_0x0a63('0x6d')]=function(_0x9c89ed){var _0x397624=this;this[_0x0a63('0x11')][_0x0a63('0xe')](function(){if(!_[_0x0a63('0x6e')](_0x397624[_0x0a63('0x14')][_0x9c89ed])){loggerAction[_0x0a63('0x6f')](_0x0a63('0x70'),_0x9c89ed,_0x0a63('0x71'),_0x397624[_0x0a63('0x14')][_0x9c89ed][_0x0a63('0x72')],_0x0a63('0x73'),JSON[_0x0a63('0x53')](_0x397624[_0x0a63('0x64')][_0x397624[_0x0a63('0x14')][_0x9c89ed]['queue']][_0x0a63('0x5b')]),_0x0a63('0x74'),JSON['stringify'](_0x397624['campaignsPreview'][_0x397624['actions'][_0x9c89ed]['queue']][_0x0a63('0x2c')]),JSON[_0x0a63('0x53')](_0x397624['actions'][_0x9c89ed][_0x0a63('0x75')]),JSON['stringify'](_[_0x0a63('0x76')](_0x397624[_0x0a63('0x14')][_0x9c89ed],['contactId','UserId','VoiceQueueId',_0x0a63('0x77')])));return ami[_0x0a63('0x78')]({'action':_0x0a63('0x79'),'channel':_0x397624[_0x0a63('0x14')][_0x9c89ed][_0x0a63('0x7a')]})['catch'](function(_0x1d6008){if(_0x1d6008[_0x0a63('0x5c')]===_0x0a63('0x7b')){setTimeout(function(){if(_0x397624[_0x0a63('0x14')][_0x9c89ed]){ut[_0x0a63('0x7c')](_0x397624['campaignsPreview'][_0x397624[_0x0a63('0x14')][_0x9c89ed][_0x0a63('0x72')]],_0x0a63('0x7d'));if(_0x397624[_0x0a63('0x14')][_0x9c89ed]['dialAnswer']===!![]){ut[_0x0a63('0x7e')](_0x397624[_0x0a63('0x64')][_0x397624[_0x0a63('0x14')][_0x9c89ed][_0x0a63('0x72')]],_0x0a63('0x7d'));ut[_0x0a63('0x7f')]('[Dialer][checkChannel][pTalking][Preview]'+_0x9c89ed,_0x397624[_0x0a63('0x14')][_0x9c89ed][_0x0a63('0x72')]);}ut[_0x0a63('0x7f')](_0x0a63('0x80')+_0x9c89ed,_0x397624['actions'][_0x9c89ed]['queue']);delete _0x397624[_0x0a63('0x14')][_0x9c89ed];}},0x2328);}});}});};Preview[_0x0a63('0xd')][_0x0a63('0x69')]=function(){var _0x2f32ae=this;loggerAction[_0x0a63('0x6f')]('[action]',_['size'](this['actions']));for(var _0x42c1bb in this['actions']){if(_0x2f32ae[_0x0a63('0x14')][_0x0a63('0x66')](_0x42c1bb)){_0x2f32ae[_0x0a63('0x6d')](_0x42c1bb);}}};Preview['prototype']['recallMe']=function(_0x2d63c6){var _0x226279=this;rpcDb[_0x0a63('0x81')](_0x2d63c6['id'],ut[_0x0a63('0x82')](this[_0x0a63('0x15')]))[_0x0a63('0x83')](function(_0x21502e){if(!_[_0x0a63('0x6e')](_0x21502e)){for(var _0xe454ef=0x0;_0xe454ef<_0x21502e[_0x0a63('0x84')];_0xe454ef+=0x1){if(ut[_0x0a63('0x85')](_0x21502e[_0xe454ef][_0x0a63('0x86')])<_0x2d63c6[_0x0a63('0x87')]*0x3c){if(_0x21502e[_0xe454ef][_0x0a63('0x88')]&&!_0x21502e[_0xe454ef]['Agent']['voicePause']){_0x226279[_0x0a63('0x89')](_0x21502e[_0xe454ef]['id'])[_0x0a63('0x83')](ut['logger2'](_0x0a63('0x8a')))[_0x0a63('0x8b')](ut['logger2'](_0x0a63('0x8a')));}else{rpcDb[_0x0a63('0x8c')](_0x21502e[_0xe454ef]['id']);}}else{var _0x5e5495=new Action(_0x21502e[_0xe454ef],_0x2d63c6);_0x5e5495['starttime']=moment()[_0x0a63('0x57')](_0x0a63('0x8d'));_0x2d63c6[_0x0a63('0x8e')]+=0x1;ut['logCustomer'](_0x5e5495,0x17,_0x0a63('0x8f'));if(_0x2d63c6[_0x0a63('0x90')]){rpcDb[_0x0a63('0x91')](ut[_0x0a63('0x92')](_0x21502e[_0xe454ef]));rpcDb[_0x0a63('0x93')](_0x5e5495,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0x0a63('0x94')](_0x5e5495,0x16,_0x0a63('0x95'));rpcDb[_0x0a63('0x93')](_0x5e5495,_0x0a63('0x96'));rpcDb[_0x0a63('0x97')](_0x5e5495,_0x0a63('0x96'));}}}}})[_0x0a63('0x8b')](ut['logger2'](_0x0a63('0x98')));};Preview[_0x0a63('0xd')][_0x0a63('0x6a')]=function(_0x1155f1){_0x1155f1[_0x0a63('0x5a')]=!![];if(ut[_0x0a63('0x99')](_0x1155f1[_0x0a63('0x2b')])){_0x1155f1[_0x0a63('0x5c')]='AGENTS_NOT_LOGGED';}else if(!ut['isActive'](_0x1155f1[_0x0a63('0x31')])){_0x1155f1[_0x0a63('0x5c')]=_0x0a63('0x5d');}else if(!this[_0x0a63('0x9a')](_0x1155f1[_0x0a63('0x4f')])){if(!this['isTrunkReachable'](_0x1155f1[_0x0a63('0x9b')])){_0x1155f1[_0x0a63('0x5c')]=_0x0a63('0x9c');}else{_0x1155f1[_0x0a63('0x5c')]=_0x0a63('0x9d');}}else{_0x1155f1[_0x0a63('0x5c')]=_0x0a63('0x9d');}emitCampaignPreview(_0x1155f1);};Preview[_0x0a63('0xd')][_0x0a63('0x9e')]=function(_0x35083d,_0x4acde8,_0x485969){var _0x25276f=this;var _0x5f33b2=this[_0x0a63('0x14')][_0x4acde8];var _0x34d88a=this['campaignsPreview'][_0x5f33b2['queue']];var _0x480acb;if(_0x34d88a){switch(_0x485969){case'1':_0x34d88a[_0x0a63('0x3e')]+=0x1;_0x5f33b2[_0x0a63('0x9f')]+=0x1;_0x5f33b2[_0x0a63('0xa0')]=ut[_0x0a63('0xa1')](_0x5f33b2);ut[_0x0a63('0x94')](_0x5f33b2,0x0,_0x0a63('0xa2'));ami['emit']('custom:agentnosuchnumber',ut['buildObj'](_0x5f33b2,_0x0a63('0xa3')));rpcDb[_0x0a63('0x93')](_0x5f33b2,_0x0a63('0xa4'));if(ut[_0x0a63('0xa1')](_0x5f33b2)>=_0x34d88a['dialGlobalMaxRetry']){_0x480acb=ut[_0x0a63('0xa5')](_0x5f33b2,0xf,'Global');rpcDb['createCustomerFinal'](_0x480acb,_0x0a63('0xa6'));}else{if(_0x5f33b2['countnosuchnumberretry']>=_0x34d88a[_0x0a63('0xa7')]){rpcDb[_0x0a63('0x97')](_0x5f33b2,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x0a63('0xa8')](ut['scheduledAt'](_0x5f33b2,_0x0a63('0x9f'),_0x34d88a['dialNoSuchNumberRetryFrequency']),_0x5f33b2[_0x0a63('0xa9')],_0x5f33b2[_0x0a63('0xaa')]);}}delete this[_0x0a63('0x14')][_0x35083d['linkedid']];break;case _0x0a63('0xab'):var _0x2df35e=moment()[_0x0a63('0x57')](_0x0a63('0x8d'));_0x5f33b2[_0x0a63('0xac')]=_0x2df35e;_0x5f33b2['answertime']=_0x2df35e;_0x5f33b2['dialAnswer']=!![];_0x34d88a['pTalking']+=0x1;logger[_0x0a63('0x6f')]('[syncHangup][talking][increment]',_0x5f33b2[_0x0a63('0xad')],_0x0a63('0xae'),_0x34d88a[_0x0a63('0x50')],_0x0a63('0x74'),_0x34d88a['pTalking']);ami[_0x0a63('0x26')](_0x0a63('0xaf'),ut['buildObj'](_0x5f33b2,_0x0a63('0xb0'),this[_0x0a63('0x64')][_0x5f33b2[_0x0a63('0x72')]]));if(_0x34d88a[_0x0a63('0xb1')]){ami[_0x0a63('0x26')]('custom:agentConnectPreview',ut[_0x0a63('0xb2')](_0x5f33b2));}break;case'16':ami[_0x0a63('0x26')](_0x0a63('0xb3'),ut['buildObj'](_0x5f33b2,'complete',this['campaignsPreview'][_0x5f33b2[_0x0a63('0x72')]]));emitVoiceQueueChannelRemove(ut[_0x0a63('0xb4')](_0x5f33b2,_0x0a63('0xb5')));_0x34d88a[_0x0a63('0x37')]+=0x1;_0x34d88a[_0x0a63('0xb6')]+=0x1;_0x34d88a[_0x0a63('0x29')]+=0x1;ut[_0x0a63('0x7e')](_0x34d88a,_0x0a63('0xb7'));_0x5f33b2[_0x0a63('0xa0')]=ut[_0x0a63('0xa1')](_0x5f33b2);ut['logCustomer'](_0x5f33b2,0x4,_0x0a63('0xb8'));rpcDb[_0x0a63('0x93')](_0x5f33b2,_0x0a63('0xb9'));rpcDb[_0x0a63('0x97')](_0x5f33b2,_0x0a63('0xba'));rpcDb[_0x0a63('0xbb')](_0x5f33b2);_0x34d88a['sumDuration']+=_0x5f33b2['talktime'];_0x34d88a[_0x0a63('0x2d')]+=_0x5f33b2[_0x0a63('0xbc')];logger[_0x0a63('0x6f')](_0x0a63('0xbd'),_0x5f33b2['uniqueid'],_0x0a63('0xae'),_0x34d88a['name'],_0x0a63('0x74'),_0x34d88a[_0x0a63('0x2c')]);delete this[_0x0a63('0x14')][_0x35083d[_0x0a63('0xbe')]];break;case'BUSY':_0x34d88a[_0x0a63('0x38')]+=0x1;_0x5f33b2[_0x0a63('0xbf')]+=0x1;_0x5f33b2[_0x0a63('0xa0')]=ut[_0x0a63('0xa1')](_0x5f33b2);ut['logCustomer'](_0x5f33b2,0x5,'Busy');ami[_0x0a63('0x26')]('custom:agentbusy',ut[_0x0a63('0xb4')](_0x5f33b2,_0x0a63('0xc0')));rpcDb[_0x0a63('0x93')](_0x5f33b2,_0x0a63('0xc1'));if(ut[_0x0a63('0xa1')](_0x5f33b2)>=_0x34d88a['dialGlobalMaxRetry']){_0x480acb=ut[_0x0a63('0xa5')](_0x5f33b2,0xf,_0x0a63('0xc2'));rpcDb[_0x0a63('0x97')](_0x480acb,_0x0a63('0xc3'));}else{if(_0x5f33b2[_0x0a63('0xbf')]>=_0x34d88a[_0x0a63('0xc4')]){rpcDb[_0x0a63('0x97')](_0x5f33b2,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x0a63('0xa8')](ut[_0x0a63('0xc5')](_0x5f33b2,_0x0a63('0xbf'),_0x34d88a[_0x0a63('0xc6')]),_0x5f33b2['unlockAgent'],_0x5f33b2[_0x0a63('0xaa')]);}}break;case _0x0a63('0xc7'):_0x34d88a[_0x0a63('0x3d')]+=0x1;_0x5f33b2['countnoanswerretry']+=0x1;_0x5f33b2[_0x0a63('0xa0')]=ut[_0x0a63('0xa1')](_0x5f33b2);ut[_0x0a63('0x94')](_0x5f33b2,0x3,'NoAnswer');ami[_0x0a63('0x26')](_0x0a63('0xc8'),ut[_0x0a63('0xb4')](_0x5f33b2,_0x0a63('0xc9')));rpcDb[_0x0a63('0x93')](_0x5f33b2,_0x0a63('0xca'));if(ut[_0x0a63('0xa1')](_0x5f33b2)>=_0x34d88a[_0x0a63('0xcb')]){_0x480acb=ut[_0x0a63('0xa5')](_0x5f33b2,0xf,_0x0a63('0xc2'));rpcDb[_0x0a63('0x97')](_0x480acb,_0x0a63('0xcc'));}else{if(_0x5f33b2[_0x0a63('0xcd')]>=_0x34d88a[_0x0a63('0xce')]){rpcDb[_0x0a63('0x97')](_0x5f33b2,_0x0a63('0xca'));}else{rpcDb['rescheduleContact'](ut[_0x0a63('0xc5')](_0x5f33b2,'countnoanswerretry',_0x34d88a[_0x0a63('0xcf')]),_0x5f33b2[_0x0a63('0xa9')],_0x5f33b2['activeContact']);}}break;case _0x0a63('0xd0'):_0x34d88a[_0x0a63('0x39')]+=0x1;_0x5f33b2[_0x0a63('0xd1')]+=0x1;_0x5f33b2[_0x0a63('0xa0')]=ut[_0x0a63('0xa1')](_0x5f33b2);ut[_0x0a63('0x94')](_0x5f33b2,0x8,_0x0a63('0xd2'));ami[_0x0a63('0x26')](_0x0a63('0xd3'),ut['buildObj'](_0x5f33b2,_0x0a63('0xd4')));rpcDb['createCustomerHistory'](_0x5f33b2,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0x0a63('0xa1')](_0x5f33b2)>=_0x34d88a[_0x0a63('0xcb')]){_0x480acb=ut[_0x0a63('0xa5')](_0x5f33b2,0xf,_0x0a63('0xc2'));rpcDb['createCustomerFinal'](_0x480acb,_0x0a63('0xd5'));}else{if(_0x5f33b2['countcongestionretry']>=_0x34d88a['dialCongestionMaxRetry']){rpcDb[_0x0a63('0x97')](_0x5f33b2,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0x0a63('0xc5')](_0x5f33b2,_0x0a63('0xd1'),_0x34d88a[_0x0a63('0xc6')]),_0x5f33b2[_0x0a63('0xa9')],_0x5f33b2['activeContact']);}}break;case _0x0a63('0xd6'):_0x34d88a['outboundRejectCallsDay']+=0x1;_0x5f33b2[_0x0a63('0xd7')]+=0x1;_0x5f33b2['countglobal']=ut[_0x0a63('0xa1')](_0x5f33b2);ut['logCustomer'](_0x5f33b2,0x14,_0x0a63('0xd8'));ami[_0x0a63('0x26')](_0x0a63('0xd9'),ut[_0x0a63('0xb4')](_0x5f33b2,_0x0a63('0xda')));rpcDb[_0x0a63('0x93')](_0x5f33b2,_0x0a63('0xdb'));if(ut[_0x0a63('0xa1')](_0x5f33b2)>=_0x34d88a[_0x0a63('0xcb')]){_0x480acb=ut['cloneAction'](_0x5f33b2,0x14,_0x0a63('0xd8'));rpcDb['createCustomerFinal'](_0x480acb,_0x0a63('0xdc'));}else{if(_0x5f33b2[_0x0a63('0xd7')]>=_0x34d88a[_0x0a63('0xdd')]){rpcDb[_0x0a63('0x97')](_0x5f33b2,_0x0a63('0xdc'));}else{rpcDb['rescheduleContact'](ut[_0x0a63('0xc5')](_0x5f33b2,_0x0a63('0xd7'),_0x34d88a[_0x0a63('0xde')]),_0x5f33b2[_0x0a63('0xa9')],_0x5f33b2['activeContact']);}}break;case _0x0a63('0xdf'):_0x34d88a[_0x0a63('0x41')]+=0x1;_0x5f33b2['countabandonedretry']+=0x1;_0x5f33b2[_0x0a63('0xa0')]=ut[_0x0a63('0xa1')](_0x5f33b2);ut['logCustomer'](_0x5f33b2,0xb,_0x0a63('0xe0'));rpcDb[_0x0a63('0x93')](_0x5f33b2,'[callProgressDetectingCustomer][logAbandoned]');if(ut['totalGlobal'](_0x5f33b2)>=_0x34d88a[_0x0a63('0xcb')]){_0x480acb=ut[_0x0a63('0xa5')](_0x5f33b2,0xf,_0x0a63('0xc2'));rpcDb[_0x0a63('0x97')](_0x480acb,_0x0a63('0xe1'));}else{if(_0x5f33b2[_0x0a63('0xe2')]>=_0x34d88a[_0x0a63('0xe3')]){rpcDb['createCustomerFinal'](_0x5f33b2,_0x0a63('0xe1'));}else{rpcDb[_0x0a63('0xa8')](ut['scheduledAt'](_0x5f33b2,_0x0a63('0xe4'),_0x34d88a[_0x0a63('0xe5')]),_0x5f33b2[_0x0a63('0xa9')],_0x5f33b2[_0x0a63('0xaa')]);}}break;case'18':_0x34d88a[_0x0a63('0xe6')]+=0x1;_0x5f33b2['countmachineretry']+=0x1;_0x5f33b2['countglobal']=ut[_0x0a63('0xa1')](_0x5f33b2);ut[_0x0a63('0x94')](_0x5f33b2,0x12,_0x35083d[_0x0a63('0xe7')]||_0x35083d['dialstatus']);ami['emit'](_0x0a63('0xe8'),ut['buildObj'](_0x5f33b2,'amd'));rpcDb[_0x0a63('0x93')](_0x5f33b2,_0x0a63('0xe9'));if(ut[_0x0a63('0xa1')](_0x5f33b2)>=_0x34d88a[_0x0a63('0xcb')]){_0x480acb=ut['cloneAction'](_0x5f33b2,0xf,'Global');rpcDb[_0x0a63('0x97')](_0x480acb,_0x0a63('0xe9'));}else{rpcDb['createCustomerFinal'](_0x5f33b2,_0x0a63('0xe9'));}delete this[_0x0a63('0x14')][_0x35083d[_0x0a63('0xbe')]];break;case'19':_0x34d88a['outboundUnknownCallsDay']+=0x1;_0x5f33b2[_0x0a63('0xa0')]=ut[_0x0a63('0xa1')](_0x5f33b2);ut['logCustomer'](_0x5f33b2,0x13,_0x35083d[_0x0a63('0xe7')]||_0x35083d[_0x0a63('0xea')]);ami[_0x0a63('0x26')](_0x0a63('0xe8'),ut[_0x0a63('0xb4')](_0x5f33b2,_0x0a63('0xeb')));rpcDb[_0x0a63('0x93')](_0x5f33b2,_0x0a63('0xec'));if(ut[_0x0a63('0xa1')](_0x5f33b2)>=_0x34d88a[_0x0a63('0xcb')]){_0x480acb=ut[_0x0a63('0xa5')](_0x5f33b2,0xf,_0x0a63('0xc2'));rpcDb[_0x0a63('0x97')](_0x480acb,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0x0a63('0x97')](_0x5f33b2,_0x0a63('0xec'));}delete this[_0x0a63('0x14')][_0x35083d[_0x0a63('0xbe')]];break;default:if(_0x5f33b2[_0x0a63('0x75')]){ut['decrementTalkink'](_0x34d88a,_0x0a63('0xed'));ut['loggerError'](_0x0a63('0xee')+_0x34d88a['name'],_0x35083d);}_0x34d88a['outboundUnknownCallsDay']+=0x1;_0x5f33b2['countglobal']=ut[_0x0a63('0xa1')](_0x5f33b2);ut[_0x0a63('0x94')](_0x5f33b2,0xc,_0x35083d['cause-txt']||_0x35083d[_0x0a63('0xea')]);rpcDb['createCustomerHistory'](_0x5f33b2,_0x0a63('0xef'));if(ut['totalGlobal'](_0x5f33b2)>=_0x34d88a[_0x0a63('0xcb')]){_0x480acb=ut['cloneAction'](_0x5f33b2,0xf,_0x0a63('0xc2'));rpcDb[_0x0a63('0x97')](_0x480acb,_0x0a63('0xf0'));}else{rpcDb[_0x0a63('0x97')](_0x5f33b2,_0x0a63('0xf0'));}delete this[_0x0a63('0x14')][_0x35083d[_0x0a63('0xbe')]];}if(!(_0x5f33b2['dialAnswer']&&_0x485969==='16')){ut['updateOriginated'](_0x34d88a,_0x0a63('0xf1'));logger[_0x0a63('0x6f')](_0x0a63('0xf2'),_0x5f33b2[_0x0a63('0xad')],_0x0a63('0xae'),_0x34d88a['name'],_0x0a63('0x73'),_0x34d88a['originated']);}if(_0x485969!==_0x0a63('0xab')){delete this[_0x0a63('0x14')][_0x35083d[_0x0a63('0xbe')]];delete this['actions'][_0x35083d[_0x0a63('0xf3')]];}}};Preview['prototype'][_0x0a63('0xf4')]=function(_0x427188,_0x12a8cd,_0x4d6476){if(_[_0x0a63('0xf5')](_0x12a8cd)&&_0x0a63('0xf6')!==typeof _0x12a8cd){return;}if(_[_0x0a63('0xf5')](_0x4d6476)&&_0x0a63('0xf6')!==typeof _0x4d6476){return;}switch(_0x4d6476[_0x0a63('0xf7')]){case'0':ut[_0x0a63('0xf8')](_0x427188,0x0,'NoSuchNumber');rpcDb[_0x0a63('0xf9')](_0x427188,_0x0a63('0xfa'));break;case'3':ut[_0x0a63('0xf8')](_0x427188,0x3,'NoAnswer');rpcDb[_0x0a63('0xf9')](_0x427188,_0x0a63('0xfb'));break;case'5':ut['logAgent'](_0x427188,0x5,_0x0a63('0xfc'));rpcDb[_0x0a63('0xf9')](_0x427188,_0x0a63('0xfd'));break;case'8':ut[_0x0a63('0xf8')](_0x427188,0x8,_0x0a63('0xd2'));rpcDb[_0x0a63('0xf9')](_0x427188,_0x0a63('0xfe'));break;case'22':ut[_0x0a63('0xf8')](_0x427188,0x16,'AnswerAGI');rpcDb[_0x0a63('0xf9')](_0x427188,_0x0a63('0xff'));break;default:ut[_0x0a63('0xf8')](_0x427188,0xc,_0x4d6476[_0x0a63('0xf7')]);rpcDb[_0x0a63('0xf9')](_0x427188,'[callProgressDetectingAgent][logCongestion]');}ut[_0x0a63('0x7c')](_0x12a8cd,_0x0a63('0x100'));logger[_0x0a63('0x6f')](_0x0a63('0x101'),_0x427188[_0x0a63('0xad')],_0x0a63('0xae'),_0x12a8cd['name'],'originated:\x20',_0x12a8cd[_0x0a63('0x5b')]);delete this['actions'][_0x427188['uniqueid']];};Preview[_0x0a63('0xd')][_0x0a63('0x102')]=function(_0x49e374,_0x2d6918,_0x85bc7d,_0x2827ba,_0x1e6ce9){var _0x2f3999=this;return new BPromise(function(_0x2d9cca,_0x2fac62){if(_[_0x0a63('0x6e')](_0x2d6918)||_[_0x0a63('0x6e')](_0x2d6918[_0x0a63('0x103')])||_['isNil'](_0x2d6918[_0x0a63('0x103')][_0x0a63('0x104')])||_[_0x0a63('0x6e')](_0x2d6918[_0x0a63('0x105')])){_0x2fac62(ut['message'](_0x0a63('0x106'),_0x2827ba,_0x1e6ce9));return;}var _0x35becd=uuid['v4']();var _0x5d98e2=_0x2f3999[_0x0a63('0x64')][_0x2d6918[_0x0a63('0x71')][_0x0a63('0x50')]];var _0x495c5e=_0x85bc7d?_0x2f3999[_0x0a63('0x15')][_0x85bc7d]['id']:undefined;_0x2f3999[_0x0a63('0x14')][_0x35becd]=new Action(_0x2d6918,_0x5d98e2,_0x35becd,_0x85bc7d,_0x495c5e);var _0x304326=_0x2f3999[_0x0a63('0x14')][_0x35becd];_0x304326[_0x0a63('0xa9')]=_0x2827ba;_0x304326[_0x0a63('0xaa')]=_0x1e6ce9;_0x304326['lookAgent']=_0x85bc7d;if(_[_0x0a63('0x107')](_0x49e374)){_0x2f3999[_0x0a63('0x108')](_0x304326,_0x5d98e2,_0x2d6918,_0x85bc7d)[_0x0a63('0x83')](function(_0x2dc71a){logger[_0x0a63('0x6f')](_0x0a63('0x109'),'Queue:\x20'+_0x304326[_0x0a63('0x72')]+_0x0a63('0x10a')+_0x304326[_0x0a63('0x10b')],JSON['stringify'](_0x2dc71a));ami[_0x0a63('0x26')](_0x0a63('0x10c'),ut[_0x0a63('0xb4')](_0x304326,_0x0a63('0x10d'),_0x2f3999['campaignsPreview'][_0x304326[_0x0a63('0x72')]]));_0x2d9cca(ut[_0x0a63('0x5c')]('Calling'));})[_0x0a63('0x8b')](function(_0x36114e){ut[_0x0a63('0x5e')]('[Preview][execCall][failure]',_0x36114e);_0x2fac62(ut[_0x0a63('0x5c')](_0x0a63('0x10e'),_0x2827ba,_0x1e6ce9));});}else{_0x5d98e2[_0x0a63('0x10f')]+=0x1;ut[_0x0a63('0x110')](_0x304326);rpcDb['createHistory'](_0x304326,_0x0a63('0x111'));delete _0x2f3999['actions'][_0x35becd];_0x2fac62(ut[_0x0a63('0x5c')](_0x0a63('0x112'),_0x2827ba,_0x1e6ce9));}});};Preview[_0x0a63('0xd')]['isTrunkReachable']=function(_0x34de1c){return!_['isNil'](_0x34de1c)&&!_['isNil'](_0x34de1c[_0x0a63('0x50')])&&!_['isNil'](_0x34de1c[_0x0a63('0x113')])&&_0x34de1c[_0x0a63('0x113')]&&!_[_0x0a63('0x6e')](this[_0x0a63('0x13')][util[_0x0a63('0x57')](_0x0a63('0x114'),_0x34de1c['name'])])&&!_[_0x0a63('0x6e')](this[_0x0a63('0x13')][util[_0x0a63('0x57')](_0x0a63('0x114'),_0x34de1c[_0x0a63('0x50')])][_0x0a63('0x79')])&&(this[_0x0a63('0x13')][util[_0x0a63('0x57')](_0x0a63('0x114'),_0x34de1c[_0x0a63('0x50')])][_0x0a63('0x79')]===_0x0a63('0x115')||this[_0x0a63('0x13')][util[_0x0a63('0x57')](_0x0a63('0x114'),_0x34de1c[_0x0a63('0x50')])][_0x0a63('0x79')]===_0x0a63('0x116'));};Preview[_0x0a63('0xd')][_0x0a63('0x89')]=function(_0x5df424,_0x136618){var _0x590930=this;return new BPromise(function(_0x78b19f,_0x490556){_0x590930[_0x0a63('0x117')](_0x5df424,_0x136618)[_0x0a63('0x83')](function(_0x1f4881){_0x78b19f(_['pick'](_0x1f4881,['message']));})[_0x0a63('0x8b')](function(_0x526f8f){if(_0x526f8f[_0x0a63('0x118')]){rpcDb[_0x0a63('0x119')](_0x5df424);}if(_0x526f8f[_0x0a63('0x113')]){rpcDb['disableContact'](_0x5df424);}_0x490556(_[_0x0a63('0x76')](_0x526f8f,['message']));});});};Preview[_0x0a63('0xd')][_0x0a63('0x117')]=function(_0x135fc4,_0x279a38){var _0x53e677=this;return new BPromise(function(_0x372bf7,_0x4ff767){var _0xa3cfd5,_0x3f1428;rpcDb[_0x0a63('0x11a')](_0x135fc4)[_0x0a63('0x83')](function(_0x2e6dd3){if(!_[_0x0a63('0x6e')](_0x2e6dd3[0x0])){_0x3f1428=_0x2e6dd3[0x0][_0x0a63('0x11b')]?![]:!![];_0xa3cfd5=_0x2e6dd3[0x0][_0x0a63('0x11b')]?!![]:![];_0xa3cfd5=_0x279a38?!![]:_0xa3cfd5;}var _0xf94da0=_0x53e677[_0x0a63('0x11c')](_0x2e6dd3);if(_0xf94da0['isValid']){rpcDb[_0x0a63('0x11d')](_[_0x0a63('0x76')](_0x2e6dd3[0x0],['VoiceQueueId',_0x0a63('0x11e')]))['then'](function(_0x670e91){_0x53e677[_0x0a63('0x102')](_0x670e91,_0x2e6dd3[0x0],_0x279a38,_0x3f1428,_0xa3cfd5)[_0x0a63('0x83')](function(_0x4fa910){_0x372bf7(_0x4fa910);})[_0x0a63('0x8b')](function(_0x1f9ca6){_0x4ff767(_0x1f9ca6);});})[_0x0a63('0x8b')](function(_0xfd34d4){ut[_0x0a63('0x5e')]('[Preview][checkIsBlackList]',_0xfd34d4);_0x4ff767(ut['message'](_0x0a63('0x11f'),_0x3f1428,_0xa3cfd5));});}else{_0x4ff767(ut[_0x0a63('0x5c')](_0xf94da0[_0x0a63('0x5c')],_0x3f1428,_0xa3cfd5));}})['catch'](function(_0x2ca8a9){ut[_0x0a63('0x5e')](_0x0a63('0x120'),_0x2ca8a9);_0x4ff767(ut[_0x0a63('0x5c')](_0x0a63('0x11f'),![],!![]));});});};Preview[_0x0a63('0xd')][_0x0a63('0x11c')]=function(_0x584cbc){if(_[_0x0a63('0x6e')](_0x584cbc)||_[_0x0a63('0x107')](_0x584cbc)||!_['isNil'](_0x584cbc[0x0]['Agent'])&&_[_0x0a63('0x6e')](_0x584cbc[0x0][_0x0a63('0x88')][_0x0a63('0x50')])){ut['logger']('[Preview][validateContact][Empty\x20Contact]',_0x584cbc);return{'isValid':![],'message':_0x0a63('0x121')};}var _0x2d40a2=this[_0x0a63('0x64')][_0x584cbc[0x0]['Queue']['name']];_0x2d40a2[_0x0a63('0x5c')]=_0x0a63('0x9d');if(_[_0x0a63('0x6e')](_0x2d40a2)){ut['logger'](_0x0a63('0x122'),_0x2d40a2);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x0a63('0x9a')](_0x2d40a2[_0x0a63('0x4f')])){ut['logger'](_0x0a63('0x123'),_0x0a63('0x124')+_0x2d40a2[_0x0a63('0x50')]+_0x0a63('0x125'));if(!this[_0x0a63('0x9a')](_0x2d40a2['TrunkBackup'])){ut[_0x0a63('0x5e')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x2d40a2[_0x0a63('0x50')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0x0a63('0x126')};}}if(!ut[_0x0a63('0x127')](_0x2d40a2[_0x0a63('0x31')])){ut[_0x0a63('0x5e')](_0x0a63('0x128'),_0x2d40a2[_0x0a63('0x50')]+_0x0a63('0x129'));return{'isValid':![],'message':_0x0a63('0x124')+_0x2d40a2[_0x0a63('0x50')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0x0a63('0x12a')};};Preview[_0x0a63('0xd')]['execCall']=function(_0x276050,_0x2ffef0,_0x63755e,_0xf9a532){var _0x547032=this;return new BPromise(function(_0x392c07,_0x523a7e){var _0x58fc99=_0x276050[_0x0a63('0xad')];var _0x38f1d7=_0x547032[_0x0a63('0x9a')](_0x2ffef0[_0x0a63('0x4f')])?util[_0x0a63('0x57')](_0x0a63('0x12b'),_0x2ffef0['Trunk'][_0x0a63('0x50')],_[_0x0a63('0x6e')](_0x2ffef0[_0x0a63('0x35')])?'':_0x2ffef0[_0x0a63('0x35')][_0x0a63('0x12c')]()||'',_0x2ffef0['dialCutDigit']>0x0?_0x63755e[_0x0a63('0x103')][_0x0a63('0x104')][_0x0a63('0x12d')](_0x2ffef0[_0x0a63('0x12e')]):_0x63755e['Contact'][_0x0a63('0x104')]):util['format'](_0x0a63('0x12b'),_['isNil'](_0x2ffef0[_0x0a63('0x9b')])?_0x2ffef0[_0x0a63('0x4f')][_0x0a63('0x50')]:_0x2ffef0['TrunkBackup'][_0x0a63('0x50')],_[_0x0a63('0x6e')](_0x2ffef0[_0x0a63('0x35')])?'':_0x2ffef0['dialPrefix'][_0x0a63('0x12c')]()||'',_0x2ffef0[_0x0a63('0x12e')]>0x0?_0x63755e[_0x0a63('0x103')][_0x0a63('0x104')][_0x0a63('0x12d')](_0x2ffef0[_0x0a63('0x12e')]):_0x63755e[_0x0a63('0x103')][_0x0a63('0x104')]);var _0x1251df=_0x547032[_0x0a63('0x9a')](_0x2ffef0[_0x0a63('0x4f')])?ut['getCallerId'](_0x2ffef0[_0x0a63('0x4f')][_0x0a63('0x51')],_0x2ffef0['dialOriginateCallerIdName'],_0x2ffef0[_0x0a63('0x12f')]>0x0?ut['getCallerIdRandom'](_0x2ffef0[_0x0a63('0x34')],_0x2ffef0[_0x0a63('0x12f')]):_0x2ffef0[_0x0a63('0x34')]):ut[_0x0a63('0x130')](_[_0x0a63('0x6e')](_0x2ffef0[_0x0a63('0x9b')])?_0x2ffef0[_0x0a63('0x4f')][_0x0a63('0x51')]:_0x2ffef0[_0x0a63('0x9b')]['callerid'],_0x2ffef0[_0x0a63('0x33')],_0x2ffef0[_0x0a63('0x12f')]>0x0?ut[_0x0a63('0x131')](_0x2ffef0[_0x0a63('0x34')],_0x2ffef0[_0x0a63('0x12f')]):_0x2ffef0[_0x0a63('0x34')]);if(_0x1251df){_0x276050[_0x0a63('0x132')]=ut[_0x0a63('0x133')](_0x1251df);_0x276050['originatecalleridnum']=ut[_0x0a63('0x134')](_0x1251df);}var _0x28e34e=ut['addVariables'](_0x2ffef0,_0x63755e,_0x38f1d7,_0x1251df,_0x58fc99,_0x276050);_[_0x0a63('0x135')](_0x276050,ut[_0x0a63('0x136')](_0x28e34e));_0x276050['starttime']=moment()[_0x0a63('0x57')]('YYYY-MM-DD\x20HH:mm:ss');ami['Action'](ut['variablesAction'](_0x276050,_0x2ffef0,_0x28e34e,_0x276050[_0x0a63('0xaa')],_0xf9a532))[_0x0a63('0x83')](function(_0xfe9f3d){_0x2ffef0['originated']+=0x1;logger['info'](_0x0a63('0x137'),_0x58fc99,_0x0a63('0xae'),_0x2ffef0[_0x0a63('0x50')],_0x0a63('0x73'),_0x2ffef0['originated']);_0x392c07(_0xfe9f3d);})[_0x0a63('0x8b')](function(_0x340389){ut[_0x0a63('0xf8')](_0x276050,0xe,'OriginateError');rpcDb[_0x0a63('0xf9')](_0x276050,'[originateFailure][logOriginateFailure]');_0x523a7e(_0x340389);});});};Preview[_0x0a63('0xd')][_0x0a63('0x1f')]=function(_0x5d7b3d){if(this['actions'][_0x5d7b3d[_0x0a63('0xbe')]]){this[_0x0a63('0x14')][_0x5d7b3d['linkedid']][_0x0a63('0x7a')]=_0x5d7b3d[_0x0a63('0x7a')];}};Preview[_0x0a63('0xd')][_0x0a63('0x17')]=function(_0x1db9db){var _0x434e20=this;var _0x52b861=this[_0x0a63('0x14')][_0x1db9db[_0x0a63('0x138')]];if(_0x52b861){if(_0x52b861[_0x0a63('0x139')]&&this[_0x0a63('0x15')][_0x52b861[_0x0a63('0x139')]]){ut[_0x0a63('0x13a')](_0x52b861,this[_0x0a63('0x15')][_0x52b861[_0x0a63('0x139')]][_0x0a63('0x50')],this['agents'][_0x52b861[_0x0a63('0x139')]]['id']);}var _0x52c170=_[_0x0a63('0x13b')](_0x52b861);_0x52c170[_0x0a63('0xac')]=moment()['format'](_0x0a63('0x8d'));var _0x578422=_0x434e20[_0x0a63('0x64')][_0x52b861['queue']];if(ut[_0x0a63('0x13c')](_0x1db9db[_0x0a63('0x13d')])){if(_0x52b861['unlockAgent']){rpcDb['unlockContact'](_0x52b861[_0x0a63('0x10b')]);}if(_0x52b861['activeContact']){rpcDb[_0x0a63('0x8c')](_0x52b861['idContact']);}ami[_0x0a63('0x26')](_0x0a63('0x13e'),ut[_0x0a63('0xb4')](_0x52b861,_0x0a63('0x13f'),this[_0x0a63('0x64')][_0x52b861['queue']]));this['callProgressDetectingAgent'](_0x52c170,_0x578422,_0x1db9db);}else{_0x52b861[_0x0a63('0x140')]=moment()[_0x0a63('0x57')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0x0a63('0xf8')](_0x52c170,0x4,'Answer');rpcDb['createAgentHistory'](_0x52c170,_0x0a63('0x141'));}}};Preview[_0x0a63('0xd')]['syncHangup']=function(_0x1f6d7d){var _0x49a5bc=this;var _0x47095b=this[_0x0a63('0x14')][_0x1f6d7d[_0x0a63('0xbe')]];var _0x587823;if(_0x47095b){_0x587823=this[_0x0a63('0x64')][_0x47095b[_0x0a63('0x72')]];logger['info'](_0x0a63('0x142'),_0x1f6d7d[_0x0a63('0xbe')],_0x0a63('0xae'),_0x587823[_0x0a63('0x50')],_0x0a63('0x74'),_0x587823[_0x0a63('0x2c')]);}if(this[_0x0a63('0x14')][_0x1f6d7d[_0x0a63('0xbe')]]&&_0x1f6d7d[_0x0a63('0xbe')]!==_0x1f6d7d['uniqueid']){if(_0x1f6d7d[_0x0a63('0x143')]==='16'&&this[_0x0a63('0x14')][_0x1f6d7d['linkedid']][_0x0a63('0x75')]){this[_0x0a63('0x9e')](_0x1f6d7d,_0x1f6d7d[_0x0a63('0xbe')],_0x1f6d7d[_0x0a63('0x143')]);}else if(this['actions'][_0x1f6d7d['linkedid']][_0x0a63('0x75')]){logger['info'](_0x0a63('0x144'),_0x1f6d7d[_0x0a63('0xbe')],_0x1f6d7d['cause'],_0x0a63('0xae'),_0x587823[_0x0a63('0x50')],'pTalking:\x20',_0x587823[_0x0a63('0x2c')]);this[_0x0a63('0x9e')](_0x1f6d7d,_0x1f6d7d['linkedid'],_0x1f6d7d[_0x0a63('0x143')]);}}else if(_0x47095b&&_[_0x0a63('0x6e')](_0x47095b[_0x0a63('0x145')])&&_0x587823[_0x0a63('0x146')]&&_0x1f6d7d[_0x0a63('0xbe')]===_0x1f6d7d[_0x0a63('0xad')]&&_[_0x0a63('0x6e')](_0x1f6d7d[_0x0a63('0xf7')])&&_0x1f6d7d[_0x0a63('0x143')]==='16'&&_0x1f6d7d[_0x0a63('0x147')]==='6'&&_[_0x0a63('0xf5')](_0x47095b[_0x0a63('0x148')])){if(_0x47095b[_0x0a63('0xa9')]){rpcDb['unlockContact'](_0x47095b[_0x0a63('0x10b')]);}if(_0x47095b[_0x0a63('0xaa')]){rpcDb[_0x0a63('0x8c')](_0x47095b[_0x0a63('0x10b')]);}_0x1f6d7d[_0x0a63('0xf7')]='22';this[_0x0a63('0xf4')](_0x47095b,_0x587823,_0x1f6d7d);}else if(_0x47095b&&_0x47095b[_0x0a63('0x148')]){if(_0x1f6d7d[_0x0a63('0x143')]==='16'&&this[_0x0a63('0x14')][_0x1f6d7d['linkedid']][_0x0a63('0x75')]){logger[_0x0a63('0x6f')](_0x0a63('0x149'),_0x1f6d7d[_0x0a63('0xbe')],_0x1f6d7d['cause'],_0x0a63('0xae'),_0x587823[_0x0a63('0x50')],'pTalking:\x20',_0x587823['pTalking']);this['callProgressDetectingCustomer'](_0x1f6d7d,_0x1f6d7d[_0x0a63('0xbe')],_0x1f6d7d[_0x0a63('0x143')]);}else if(this[_0x0a63('0x14')][_0x1f6d7d[_0x0a63('0xbe')]][_0x0a63('0x75')]){logger['info'](_0x0a63('0x144'),_0x1f6d7d[_0x0a63('0xbe')],_0x1f6d7d[_0x0a63('0x143')],_0x0a63('0xae'),_0x587823[_0x0a63('0x50')],'pTalking:\x20',_0x587823[_0x0a63('0x2c')]);this[_0x0a63('0x9e')](_0x1f6d7d,_0x1f6d7d[_0x0a63('0xbe')],_0x1f6d7d['cause']);}}};Preview['prototype'][_0x0a63('0x14a')]=function(_0x39db5f){if(this[_0x0a63('0x14')][_0x39db5f[_0x0a63('0xf3')]]&&_0x39db5f[_0x0a63('0xf3')]!==_0x39db5f['destuniqueid']){this[_0x0a63('0x9e')](_0x39db5f,_0x39db5f[_0x0a63('0xf3')],_0x39db5f[_0x0a63('0xea')]);}};Preview[_0x0a63('0xd')][_0x0a63('0x1c')]=function(_0x5d48bd){if(this[_0x0a63('0x14')][_0x5d48bd[_0x0a63('0xbe')]]&&_0x5d48bd[_0x0a63('0xbe')]!==_0x5d48bd['uniqueid']&&!this['actions'][_0x5d48bd[_0x0a63('0xbe')]][_0x0a63('0x75')]){if(_0x5d48bd[_0x0a63('0x143')]==='1'){this[_0x0a63('0x9e')](_0x5d48bd,_0x5d48bd[_0x0a63('0xbe')],_0x5d48bd['cause']);}}};Preview['prototype']['addVariable']=function(_0x399edb,_0x50478c,_0x31db12){if(this[_0x0a63('0x14')][_0x399edb]){if(_['isNil'](this['actions'][_0x399edb][_0x0a63('0x14b')])){this[_0x0a63('0x14')][_0x399edb]['variables']={};}this[_0x0a63('0x14')][_0x399edb][_0x0a63('0x14b')][_0x50478c]=_0x31db12;}};Preview[_0x0a63('0xd')]['syncVarSet']=function(_0x52f729){try{if(!_['isNil'](_0x52f729)){if(ut['filterKey'](_[_0x0a63('0x14c')](_0x52f729[_0x0a63('0x14d')])[0x0])){this[_0x0a63('0x14e')](_0x52f729[_0x0a63('0xad')],_[_0x0a63('0x14c')](_0x52f729[_0x0a63('0x14d')])[0x0],_0x52f729['value']);}}}catch(_0x37fa44){logger[_0x0a63('0x14f')](_0x0a63('0x150'),util[_0x0a63('0x151')](_0x37fa44,{'showHidden':![],'depth':null}));}};Preview[_0x0a63('0xd')][_0x0a63('0x23')]=function(_0x1f12af){if(_0x1f12af){if(this[_0x0a63('0x14')][_0x1f12af[_0x0a63('0x152')]]){this['actions'][_0x1f12af[_0x0a63('0x152')]]['transfer']=!![];}}};Preview['prototype'][_0x0a63('0x153')]=function(_0x5b110b){if(_0x5b110b){if(this[_0x0a63('0x14')][_0x5b110b['transfererlinkedid']]){this['actions'][_0x5b110b[_0x0a63('0x154')]][_0x0a63('0x148')]=!![];}}};module[_0x0a63('0x155')]=Preview;
\ No newline at end of file
+var _0xdc97=['syncOriginateResponse','bind','hangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','blindtransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','emit','outbound','strategy','answered','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','waiting','loggedInDb','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','message','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','format','name','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','originated','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','prototype','syncCampaigns','hasOwnProperty','type','clearZombieChannels','dialMethod','dialActive','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','sequence','isNil','Queue','originated:\x20','queue','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','size','getContactRecallMe','length','dialRecallMeTimeout','Agent','voicePause','run','then','logger2','catch','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerFinal','IsNotLoggedIn','isActive','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','pTalking:\x20','custom:agentconnect','connect','custom:agentConnectPreview','custom:agentcomplete','complete','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','sumDuration','talktime','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','CONGESTION','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','cause-txt','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','dialstatus','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','outboundUnknownCallsDay','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','ANSWER','destlinkedid','isUndefined','object','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','createAgentHistory','[callProgressDetectingAgent][logBusy]','Congestion','AnswerAGI','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','lookAgent','isEmpty','execCall','\x20IdHopper:\x20','idContact','custom:agentcalled','Calling','Call\x20failed','logBlacklist','createHistory','Contact\x20in\x20black\x20List','SIP/%s','status','unmonitored','execRun','unlock','getContactPreview','recallme','validateContact','isValid','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','SIP/%s/%s%s','trim','phone','dialCutDigit','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','merge','toLowerVariables','starttime','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','channel','actionid','logLookAgent','clone','responsetime','isFailure','response','unlockContact','custom:agentringnoanswer','rejected','Answer','syncHangup','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','addVariable','variables','filterKey','variable','keys','value','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','moment','ioredis','../../../config/environment','preview','../../../config/logger','actionPreview','../ami','./action','defaults','redis','localhost','socket.io-emitter','enqueue','tail','finally','trunks','actions','agents','clockClearZombieChannels','originateresponse'];(function(_0x20c108,_0x2cf8ba){var _0x10ce40=function(_0x35bd1f){while(--_0x35bd1f){_0x20c108['push'](_0x20c108['shift']());}};_0x10ce40(++_0x2cf8ba);}(_0xdc97,0x13b));var _0x7dc9=function(_0x19a2c5,_0x22d97e){_0x19a2c5=_0x19a2c5-0x0;var _0x5e6550=_0xdc97[_0x19a2c5];return _0x5e6550;};'use strict';var util=require(_0x7dc9('0x0'));var _=require(_0x7dc9('0x1'));var BPromise=require(_0x7dc9('0x2'));var uuid=require('uuid');var moment=require(_0x7dc9('0x3'));var md5=require('md5');var Redis=require(_0x7dc9('0x4'));var config=require(_0x7dc9('0x5'));var logger=require('../../../config/logger')(_0x7dc9('0x6'));var loggerAction=require(_0x7dc9('0x7'))(_0x7dc9('0x8'));var ami=require(_0x7dc9('0x9'));var rpcDb=require('./rpcDb');var Action=require(_0x7dc9('0xa'));var ut=require('./util/util');config['redis']=_[_0x7dc9('0xb')](config[_0x7dc9('0xc')],{'host':_0x7dc9('0xd'),'port':0x18eb});var io=require(_0x7dc9('0xe'))(new Redis(config[_0x7dc9('0xc')]));var Sequence=function(){};Sequence['prototype'][_0x7dc9('0xf')]=function(_0x44fe24){this[_0x7dc9('0x10')]=this[_0x7dc9('0x10')]?this[_0x7dc9('0x10')][_0x7dc9('0x11')](_0x44fe24):_0x44fe24();};function Preview(_0x1e336a){this['sequence']=new Sequence();this['campaignsPreview']=_0x1e336a['voiceQueues'];this['trunks']=_0x1e336a[_0x7dc9('0x12')];this[_0x7dc9('0x13')]={};this['agents']=_0x1e336a[_0x7dc9('0x14')];this[_0x7dc9('0x15')]=0x0;ami['on'](_0x7dc9('0x16'),this[_0x7dc9('0x17')][_0x7dc9('0x18')](this));ami['on'](_0x7dc9('0x19'),this['syncHangup'][_0x7dc9('0x18')](this));ami['on'](_0x7dc9('0x1a'),this[_0x7dc9('0x1b')][_0x7dc9('0x18')](this));ami['on'](_0x7dc9('0x1c'),this[_0x7dc9('0x1d')][_0x7dc9('0x18')](this));ami['on'](_0x7dc9('0x1e'),this[_0x7dc9('0x1f')]['bind'](this));ami['on'](_0x7dc9('0x20'),this['syncVarSet'][_0x7dc9('0x18')](this));ami['on'](_0x7dc9('0x21'),this['syncAttendedTransfer'][_0x7dc9('0x18')](this));ami['on'](_0x7dc9('0x22'),this[_0x7dc9('0x23')][_0x7dc9('0x18')](this));this[_0x7dc9('0x24')](this[_0x7dc9('0x25')]);}function emit(_0x2dad65,_0x2895f5,_0x155cc4){io['to'](_0x2dad65)[_0x7dc9('0x26')](_0x2895f5,_0x155cc4);}function emitCampaignPreview(_0x576681){if(_0x576681['type']===_0x7dc9('0x27')){var _0x5981e2={'id':_0x576681['id'],'name':_0x576681['name'],'strategy':_0x576681[_0x7dc9('0x28')],'answered':_0x576681[_0x7dc9('0x29')],'available':_0x576681['available'],'loggedIn':_0x576681[_0x7dc9('0x2a')],'pTalking':_0x576681[_0x7dc9('0x2b')],'sumBillable':_0x576681[_0x7dc9('0x2c')],'sumDuration':_0x576681['sumDuration'],'sumHoldTime':_0x576681[_0x7dc9('0x2d')]||0x0,'talking':_0x576681[_0x7dc9('0x2e')],'total':_0x576681[_0x7dc9('0x2f')],'type':_0x576681['type'],'unmanaged':_0x576681['unmanaged'],'abandoned':_0x576681['abandoned'],'waiting':_0x576681[_0x7dc9('0x30')],'loggedInDb':_0x576681[_0x7dc9('0x31')],'dialActive':_0x576681['dialActive'],'dialMethod':_0x576681['dialMethod'],'dialOriginateCallerIdName':_0x576681[_0x7dc9('0x32')],'dialOriginateCallerIdNumber':_0x576681['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x576681[_0x7dc9('0x33')],'dialPrefix':_0x576681[_0x7dc9('0x34')],'outboundAnswerAgiCallsDay':_0x576681[_0x7dc9('0x35')],'outboundAnswerCallsDay':_0x576681[_0x7dc9('0x36')],'outboundBlacklistCallsDay':_0x576681[_0x7dc9('0x37')],'outboundBusyCallsDay':_0x576681[_0x7dc9('0x38')],'outboundCongestionCallsDay':_0x576681[_0x7dc9('0x39')],'outboundDropCallsDayACS':_0x576681[_0x7dc9('0x3a')],'outboundDropCallsDayCallersExit':_0x576681[_0x7dc9('0x3b')],'outboundDropCallsDayTimeout':_0x576681[_0x7dc9('0x3c')],'outboundNoAnswerCallsDay':_0x576681[_0x7dc9('0x3d')],'outboundNoSuchCallsDay':_0x576681[_0x7dc9('0x3e')],'outboundOriginateFailureCallsDay':_0x576681['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x576681['outboundReCallsDay'],'outboundRejectCallsDay':_0x576681['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x576681['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x576681['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x576681['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x576681['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x576681['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x576681[_0x7dc9('0x3f')],'predictiveIntervalDroppedCallsTimeout':_0x576681[_0x7dc9('0x40')],'predictiveIntervalErlangCalls':_0x576681[_0x7dc9('0x41')],'predictiveIntervalErlangCallsDroppedCalls':_0x576681[_0x7dc9('0x42')],'predictiveIntervalHitRate':_0x576681[_0x7dc9('0x43')],'predictiveIntervalMultiplicativeFactor':_0x576681[_0x7dc9('0x44')],'predictiveIntervalPauses':_0x576681['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x576681['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x576681['predictiveIntervalTotalCalls'],'message':_0x576681[_0x7dc9('0x45')],'originated':_0x576681['originated'],'erlangCalls':_0x576681[_0x7dc9('0x46')],'erlangCallToSecond':_0x576681[_0x7dc9('0x47')],'erlangAbandonmentRate':_0x576681[_0x7dc9('0x48')],'erlangBusyFactor':_0x576681[_0x7dc9('0x49')],'startPredictive':_0x576681[_0x7dc9('0x4a')],'startProgressive':_0x576681[_0x7dc9('0x4b')]};if(_0x576681[_0x7dc9('0x4c')]){_0x5981e2[_0x7dc9('0x4c')]={'id':_0x576681['Trunk']['id'],'name':_0x576681[_0x7dc9('0x4c')]['name'],'active':_0x576681[_0x7dc9('0x4c')][_0x7dc9('0x4d')],'callerid':_0x576681[_0x7dc9('0x4c')][_0x7dc9('0x4e')]};}if(_0x576681['Interval']){_0x5981e2[_0x7dc9('0x4f')]={'id':_0x576681['Interval']['id'],'name':_0x576681[_0x7dc9('0x4f')]['name']};}var _0x590bed=md5(JSON[_0x7dc9('0x50')](_0x5981e2));if(_0x576681[_0x7dc9('0x51')]!==_0x590bed){_0x576681[_0x7dc9('0x51')]=_0x590bed;emit(util[_0x7dc9('0x52')]('voice:queue:%s',_0x5981e2[_0x7dc9('0x53')]),_0x7dc9('0x54'),_0x5981e2);}}}function emitVoiceQueueChannelRemove(_0x138f33){logger[_0x7dc9('0x55')](_0x7dc9('0x56'),JSON[_0x7dc9('0x50')](_0x138f33));emit(util[_0x7dc9('0x52')](_0x7dc9('0x57'),_0x138f33[_0x7dc9('0x53')]),_0x7dc9('0x58'),_0x138f33);io[_0x7dc9('0x26')](_0x7dc9('0x59'),_0x138f33);}function notSendMessagesQueue(_0x5a94b5){if(_0x5a94b5[_0x7dc9('0x5a')]){if(_0x5a94b5[_0x7dc9('0x5b')]===0x0&&_0x5a94b5[_0x7dc9('0x2b')]===0x0){_0x5a94b5[_0x7dc9('0x5a')]=![];_0x5a94b5['available']=0x0;_0x5a94b5[_0x7dc9('0x5c')]=0x0;_0x5a94b5[_0x7dc9('0x45')]=_0x7dc9('0x5d');ut[_0x7dc9('0x5e')](_0x7dc9('0x5f'),_0x5a94b5[_0x7dc9('0x53')]+'\x20is\x20not\x20active');}else{_0x5a94b5['message']=_0x7dc9('0x60');ut[_0x7dc9('0x5e')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x5a94b5[_0x7dc9('0x53')]+'\x20is\x20disactive');}emitCampaignPreview(_0x5a94b5);}}Preview[_0x7dc9('0x61')][_0x7dc9('0x24')]=function(){var _0x3bca9c=this;setInterval(function(){_0x3bca9c['syncCampaigns']();},0x7cf);};Preview[_0x7dc9('0x61')][_0x7dc9('0x62')]=function(){var _0x1929b6=this[_0x7dc9('0x25')];this[_0x7dc9('0x15')]+=0x1;for(var _0x23499a in _0x1929b6){if(_0x1929b6[_0x7dc9('0x63')](_0x23499a)&&(_0x1929b6[_0x23499a]['dialMethod']===_0x7dc9('0x6')||_0x1929b6[_0x23499a]['dialMethod']==='booked')&&_0x1929b6[_0x23499a][_0x7dc9('0x64')]===_0x7dc9('0x27')){if(this[_0x7dc9('0x15')]>0x7){this[_0x7dc9('0x15')]=0x0;this[_0x7dc9('0x65')]();}}if(_0x1929b6[_0x7dc9('0x63')](_0x23499a)&&_0x1929b6[_0x23499a][_0x7dc9('0x66')]===_0x7dc9('0x6')&&_0x1929b6[_0x23499a][_0x7dc9('0x64')]==='outbound'){if(_0x1929b6[_0x23499a][_0x7dc9('0x67')]){this[_0x7dc9('0x68')](_0x1929b6[_0x23499a]);if(_0x1929b6[_0x23499a][_0x7dc9('0x69')])this[_0x7dc9('0x6a')](_0x1929b6[_0x23499a]);}else{notSendMessagesQueue(_0x1929b6[_0x23499a]);}}}};Preview[_0x7dc9('0x61')][_0x7dc9('0x6b')]=function(_0x575393){var _0x3774cb=this;this[_0x7dc9('0x6c')]['enqueue'](function(){if(!_[_0x7dc9('0x6d')](_0x3774cb[_0x7dc9('0x13')][_0x575393])){loggerAction[_0x7dc9('0x55')]('[clearZombieChannels][talking]',_0x575393,_0x7dc9('0x6e'),_0x3774cb['actions'][_0x575393]['queue'],_0x7dc9('0x6f'),JSON[_0x7dc9('0x50')](_0x3774cb[_0x7dc9('0x25')][_0x3774cb['actions'][_0x575393]['queue']][_0x7dc9('0x5b')]),'pTalking:\x20',JSON[_0x7dc9('0x50')](_0x3774cb[_0x7dc9('0x25')][_0x3774cb['actions'][_0x575393][_0x7dc9('0x70')]][_0x7dc9('0x2b')]),JSON[_0x7dc9('0x50')](_0x3774cb[_0x7dc9('0x13')][_0x575393][_0x7dc9('0x71')]),JSON[_0x7dc9('0x50')](_[_0x7dc9('0x72')](_0x3774cb[_0x7dc9('0x13')][_0x575393],[_0x7dc9('0x73'),_0x7dc9('0x74'),_0x7dc9('0x75'),_0x7dc9('0x76')])));return ami[_0x7dc9('0x77')]({'action':'status','channel':_0x3774cb[_0x7dc9('0x13')][_0x575393]['channel']})['catch'](function(_0x446103){if(_0x446103[_0x7dc9('0x45')]===_0x7dc9('0x78')){setTimeout(function(){if(_0x3774cb[_0x7dc9('0x13')][_0x575393]){ut[_0x7dc9('0x79')](_0x3774cb['campaignsPreview'][_0x3774cb[_0x7dc9('0x13')][_0x575393][_0x7dc9('0x70')]],_0x7dc9('0x7a'));if(_0x3774cb['actions'][_0x575393][_0x7dc9('0x71')]===!![]){ut[_0x7dc9('0x7b')](_0x3774cb[_0x7dc9('0x25')][_0x3774cb[_0x7dc9('0x13')][_0x575393][_0x7dc9('0x70')]],_0x7dc9('0x7a'));ut['loggerError'](_0x7dc9('0x7c')+_0x575393,_0x3774cb[_0x7dc9('0x13')][_0x575393][_0x7dc9('0x70')]);}ut[_0x7dc9('0x7d')](_0x7dc9('0x7e')+_0x575393,_0x3774cb[_0x7dc9('0x13')][_0x575393][_0x7dc9('0x70')]);delete _0x3774cb[_0x7dc9('0x13')][_0x575393];}},0x2328);}});}});};Preview[_0x7dc9('0x61')][_0x7dc9('0x65')]=function(){var _0x329950=this;loggerAction[_0x7dc9('0x55')]('[action]',_[_0x7dc9('0x7f')](this[_0x7dc9('0x13')]));for(var _0x38df9a in this[_0x7dc9('0x13')]){if(_0x329950[_0x7dc9('0x13')]['hasOwnProperty'](_0x38df9a)){_0x329950[_0x7dc9('0x6b')](_0x38df9a);}}};Preview[_0x7dc9('0x61')][_0x7dc9('0x6a')]=function(_0x17ed6c){var _0x2a1db8=this;rpcDb[_0x7dc9('0x80')](_0x17ed6c['id'],ut['agentReadyId'](this['agents']))['then'](function(_0x25bdee){if(!_[_0x7dc9('0x6d')](_0x25bdee)){for(var _0x32a64f=0x0;_0x32a64f<_0x25bdee[_0x7dc9('0x81')];_0x32a64f+=0x1){if(ut['getDiff'](_0x25bdee[_0x32a64f]['scheduledat'])<_0x17ed6c[_0x7dc9('0x82')]*0x3c){if(_0x25bdee[_0x32a64f][_0x7dc9('0x83')]&&!_0x25bdee[_0x32a64f][_0x7dc9('0x83')][_0x7dc9('0x84')]){_0x2a1db8[_0x7dc9('0x85')](_0x25bdee[_0x32a64f]['id'])[_0x7dc9('0x86')](ut[_0x7dc9('0x87')]('[RecallMe]'))[_0x7dc9('0x88')](ut[_0x7dc9('0x87')](_0x7dc9('0x89')));}else{rpcDb[_0x7dc9('0x8a')](_0x25bdee[_0x32a64f]['id']);}}else{var _0x4683b3=new Action(_0x25bdee[_0x32a64f],_0x17ed6c);_0x4683b3['starttime']=moment()[_0x7dc9('0x52')](_0x7dc9('0x8b'));_0x17ed6c[_0x7dc9('0x8c')]+=0x1;ut[_0x7dc9('0x8d')](_0x4683b3,0x17,_0x7dc9('0x8e'));if(_0x17ed6c[_0x7dc9('0x8f')]){rpcDb[_0x7dc9('0x90')](ut[_0x7dc9('0x91')](_0x25bdee[_0x32a64f]));rpcDb[_0x7dc9('0x92')](_0x4683b3,_0x7dc9('0x93'));}else{ut[_0x7dc9('0x8d')](_0x4683b3,0x16,_0x7dc9('0x94'));rpcDb[_0x7dc9('0x92')](_0x4683b3,'[HistoryRecallClose]');rpcDb[_0x7dc9('0x95')](_0x4683b3,'[HistoryRecallClose]');}}}}})[_0x7dc9('0x88')](ut[_0x7dc9('0x87')]('[getContactRecallMe]'));};Preview[_0x7dc9('0x61')][_0x7dc9('0x68')]=function(_0x50e9a9){_0x50e9a9[_0x7dc9('0x5a')]=!![];if(ut[_0x7dc9('0x96')](_0x50e9a9[_0x7dc9('0x2a')])){_0x50e9a9['message']='AGENTS_NOT_LOGGED';}else if(!ut[_0x7dc9('0x97')](_0x50e9a9[_0x7dc9('0x67')])){_0x50e9a9[_0x7dc9('0x45')]=_0x7dc9('0x5d');}else if(!this[_0x7dc9('0x98')](_0x50e9a9[_0x7dc9('0x4c')])){if(!this[_0x7dc9('0x98')](_0x50e9a9[_0x7dc9('0x99')])){_0x50e9a9[_0x7dc9('0x45')]='TRUNK_IS_NOT_REACHABLE';}else{_0x50e9a9[_0x7dc9('0x45')]=_0x7dc9('0x9a');}}else{_0x50e9a9[_0x7dc9('0x45')]='ACTIVE';}emitCampaignPreview(_0x50e9a9);};Preview['prototype'][_0x7dc9('0x9b')]=function(_0x117444,_0x123fa8,_0x2cf485){var _0x59f3bd=this;var _0x4c7c6b=this[_0x7dc9('0x13')][_0x123fa8];var _0x182bc6=this[_0x7dc9('0x25')][_0x4c7c6b[_0x7dc9('0x70')]];var _0x5d211b;if(_0x182bc6){switch(_0x2cf485){case'1':_0x182bc6[_0x7dc9('0x3e')]+=0x1;_0x4c7c6b[_0x7dc9('0x9c')]+=0x1;_0x4c7c6b[_0x7dc9('0x9d')]=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut[_0x7dc9('0x8d')](_0x4c7c6b,0x0,_0x7dc9('0x9f'));ami[_0x7dc9('0x26')]('custom:agentnosuchnumber',ut[_0x7dc9('0xa0')](_0x4c7c6b,_0x7dc9('0xa1')));rpcDb['createCustomerHistory'](_0x4c7c6b,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0x7dc9('0x9e')](_0x4c7c6b)>=_0x182bc6['dialGlobalMaxRetry']){_0x5d211b=ut[_0x7dc9('0xa2')](_0x4c7c6b,0xf,_0x7dc9('0xa3'));rpcDb[_0x7dc9('0x95')](_0x5d211b,_0x7dc9('0xa4'));}else{if(_0x4c7c6b[_0x7dc9('0x9c')]>=_0x182bc6[_0x7dc9('0xa5')]){rpcDb[_0x7dc9('0x95')](_0x4c7c6b,_0x7dc9('0xa4'));}else{rpcDb[_0x7dc9('0xa6')](ut[_0x7dc9('0xa7')](_0x4c7c6b,'countnosuchnumberretry',_0x182bc6[_0x7dc9('0xa8')]),_0x4c7c6b[_0x7dc9('0xa9')],_0x4c7c6b[_0x7dc9('0xaa')]);}}delete this['actions'][_0x117444[_0x7dc9('0xab')]];break;case'ANSWER':var _0x5904c6=moment()[_0x7dc9('0x52')](_0x7dc9('0x8b'));_0x4c7c6b['responsetime']=_0x5904c6;_0x4c7c6b[_0x7dc9('0xac')]=_0x5904c6;_0x4c7c6b['dialAnswer']=!![];_0x182bc6['pTalking']+=0x1;logger[_0x7dc9('0x55')](_0x7dc9('0xad'),_0x4c7c6b[_0x7dc9('0xae')],_0x7dc9('0xaf'),_0x182bc6['name'],_0x7dc9('0xb0'),_0x182bc6[_0x7dc9('0x2b')]);ami[_0x7dc9('0x26')](_0x7dc9('0xb1'),ut[_0x7dc9('0xa0')](_0x4c7c6b,_0x7dc9('0xb2'),this[_0x7dc9('0x25')][_0x4c7c6b[_0x7dc9('0x70')]]));if(_0x182bc6['acw']){ami['emit'](_0x7dc9('0xb3'),ut['buildAcw'](_0x4c7c6b));}break;case'16':ami[_0x7dc9('0x26')](_0x7dc9('0xb4'),ut[_0x7dc9('0xa0')](_0x4c7c6b,_0x7dc9('0xb5'),this['campaignsPreview'][_0x4c7c6b[_0x7dc9('0x70')]]));emitVoiceQueueChannelRemove(ut[_0x7dc9('0xa0')](_0x4c7c6b,'complete'));_0x182bc6[_0x7dc9('0x36')]+=0x1;_0x182bc6[_0x7dc9('0x2f')]+=0x1;_0x182bc6[_0x7dc9('0x29')]+=0x1;ut[_0x7dc9('0x7b')](_0x182bc6,'[16]');_0x4c7c6b[_0x7dc9('0x9d')]=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut['logCustomer'](_0x4c7c6b,0x4,'Answer');rpcDb[_0x7dc9('0x92')](_0x4c7c6b,_0x7dc9('0xb6'));rpcDb['createCustomerFinal'](_0x4c7c6b,_0x7dc9('0xb7'));rpcDb['crateCustomerReportQueue'](_0x4c7c6b);_0x182bc6[_0x7dc9('0xb8')]+=_0x4c7c6b[_0x7dc9('0xb9')];_0x182bc6[_0x7dc9('0x2c')]+=_0x4c7c6b['talktime'];logger[_0x7dc9('0x55')](_0x7dc9('0xba'),_0x4c7c6b[_0x7dc9('0xae')],'\x20Queue',_0x182bc6[_0x7dc9('0x53')],'pTalking:\x20',_0x182bc6['pTalking']);delete this[_0x7dc9('0x13')][_0x117444[_0x7dc9('0xab')]];break;case _0x7dc9('0xbb'):_0x182bc6[_0x7dc9('0x38')]+=0x1;_0x4c7c6b[_0x7dc9('0xbc')]+=0x1;_0x4c7c6b['countglobal']=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut[_0x7dc9('0x8d')](_0x4c7c6b,0x5,_0x7dc9('0xbd'));ami[_0x7dc9('0x26')](_0x7dc9('0xbe'),ut['buildObj'](_0x4c7c6b,_0x7dc9('0xbf')));rpcDb[_0x7dc9('0x92')](_0x4c7c6b,_0x7dc9('0xc0'));if(ut[_0x7dc9('0x9e')](_0x4c7c6b)>=_0x182bc6['dialGlobalMaxRetry']){_0x5d211b=ut[_0x7dc9('0xa2')](_0x4c7c6b,0xf,'Global');rpcDb['createCustomerFinal'](_0x5d211b,_0x7dc9('0xc1'));}else{if(_0x4c7c6b['countbusyretry']>=_0x182bc6[_0x7dc9('0xc2')]){rpcDb[_0x7dc9('0x95')](_0x4c7c6b,_0x7dc9('0xc0'));}else{rpcDb[_0x7dc9('0xa6')](ut[_0x7dc9('0xa7')](_0x4c7c6b,_0x7dc9('0xbc'),_0x182bc6['dialBusyRetryFrequency']),_0x4c7c6b[_0x7dc9('0xa9')],_0x4c7c6b[_0x7dc9('0xaa')]);}}break;case _0x7dc9('0xc3'):_0x182bc6[_0x7dc9('0x3d')]+=0x1;_0x4c7c6b[_0x7dc9('0xc4')]+=0x1;_0x4c7c6b['countglobal']=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut['logCustomer'](_0x4c7c6b,0x3,_0x7dc9('0xc5'));ami[_0x7dc9('0x26')](_0x7dc9('0xc6'),ut['buildObj'](_0x4c7c6b,_0x7dc9('0xc7')));rpcDb[_0x7dc9('0x92')](_0x4c7c6b,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x7dc9('0x9e')](_0x4c7c6b)>=_0x182bc6[_0x7dc9('0xc8')]){_0x5d211b=ut[_0x7dc9('0xa2')](_0x4c7c6b,0xf,_0x7dc9('0xa3'));rpcDb['createCustomerFinal'](_0x5d211b,_0x7dc9('0xc9'));}else{if(_0x4c7c6b['countnoanswerretry']>=_0x182bc6[_0x7dc9('0xca')]){rpcDb[_0x7dc9('0x95')](_0x4c7c6b,_0x7dc9('0xcb'));}else{rpcDb['rescheduleContact'](ut[_0x7dc9('0xa7')](_0x4c7c6b,_0x7dc9('0xc4'),_0x182bc6[_0x7dc9('0xcc')]),_0x4c7c6b['unlockAgent'],_0x4c7c6b['activeContact']);}}break;case _0x7dc9('0xcd'):_0x182bc6[_0x7dc9('0x39')]+=0x1;_0x4c7c6b['countcongestionretry']+=0x1;_0x4c7c6b['countglobal']=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut[_0x7dc9('0x8d')](_0x4c7c6b,0x8,'Congestion');ami[_0x7dc9('0x26')]('custom:agentcongestion',ut[_0x7dc9('0xa0')](_0x4c7c6b,_0x7dc9('0xce')));rpcDb[_0x7dc9('0x92')](_0x4c7c6b,_0x7dc9('0xcf'));if(ut[_0x7dc9('0x9e')](_0x4c7c6b)>=_0x182bc6[_0x7dc9('0xc8')]){_0x5d211b=ut['cloneAction'](_0x4c7c6b,0xf,_0x7dc9('0xa3'));rpcDb[_0x7dc9('0x95')](_0x5d211b,_0x7dc9('0xd0'));}else{if(_0x4c7c6b[_0x7dc9('0xd1')]>=_0x182bc6[_0x7dc9('0xd2')]){rpcDb['createCustomerFinal'](_0x4c7c6b,_0x7dc9('0xcf'));}else{rpcDb[_0x7dc9('0xa6')](ut[_0x7dc9('0xa7')](_0x4c7c6b,_0x7dc9('0xd1'),_0x182bc6['dialBusyRetryFrequency']),_0x4c7c6b[_0x7dc9('0xa9')],_0x4c7c6b[_0x7dc9('0xaa')]);}}break;case'CANCEL':_0x182bc6[_0x7dc9('0xd3')]+=0x1;_0x4c7c6b['countagentrejectretry']+=0x1;_0x4c7c6b[_0x7dc9('0x9d')]=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut[_0x7dc9('0x8d')](_0x4c7c6b,0x14,_0x7dc9('0xd4'));ami[_0x7dc9('0x26')](_0x7dc9('0xd5'),ut[_0x7dc9('0xa0')](_0x4c7c6b,_0x7dc9('0xd6')));rpcDb['createCustomerHistory'](_0x4c7c6b,_0x7dc9('0xd7'));if(ut[_0x7dc9('0x9e')](_0x4c7c6b)>=_0x182bc6[_0x7dc9('0xc8')]){_0x5d211b=ut[_0x7dc9('0xa2')](_0x4c7c6b,0x14,_0x7dc9('0xd4'));rpcDb['createCustomerFinal'](_0x5d211b,_0x7dc9('0xd8'));}else{if(_0x4c7c6b[_0x7dc9('0xd9')]>=_0x182bc6[_0x7dc9('0xda')]){rpcDb[_0x7dc9('0x95')](_0x4c7c6b,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0x7dc9('0xa6')](ut['scheduledAt'](_0x4c7c6b,_0x7dc9('0xd9'),_0x182bc6['dialAgentRejectRetryFrequency']),_0x4c7c6b[_0x7dc9('0xa9')],_0x4c7c6b[_0x7dc9('0xaa')]);}}break;case _0x7dc9('0xdb'):_0x182bc6[_0x7dc9('0xdc')]+=0x1;_0x4c7c6b[_0x7dc9('0xdd')]+=0x1;_0x4c7c6b[_0x7dc9('0x9d')]=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut[_0x7dc9('0x8d')](_0x4c7c6b,0xb,_0x7dc9('0xde'));rpcDb[_0x7dc9('0x92')](_0x4c7c6b,_0x7dc9('0xdf'));if(ut[_0x7dc9('0x9e')](_0x4c7c6b)>=_0x182bc6['dialGlobalMaxRetry']){_0x5d211b=ut[_0x7dc9('0xa2')](_0x4c7c6b,0xf,_0x7dc9('0xa3'));rpcDb[_0x7dc9('0x95')](_0x5d211b,_0x7dc9('0xdf'));}else{if(_0x4c7c6b['countabandonedetry']>=_0x182bc6[_0x7dc9('0xe0')]){rpcDb[_0x7dc9('0x95')](_0x4c7c6b,_0x7dc9('0xdf'));}else{rpcDb[_0x7dc9('0xa6')](ut['scheduledAt'](_0x4c7c6b,_0x7dc9('0xdd'),_0x182bc6[_0x7dc9('0xe1')]),_0x4c7c6b[_0x7dc9('0xa9')],_0x4c7c6b['activeContact']);}}break;case'18':_0x182bc6['outboundUnknownCallsDay']+=0x1;_0x4c7c6b[_0x7dc9('0xe2')]+=0x1;_0x4c7c6b[_0x7dc9('0x9d')]=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut[_0x7dc9('0x8d')](_0x4c7c6b,0x12,_0x117444[_0x7dc9('0xe3')]||_0x117444['dialstatus']);ami[_0x7dc9('0x26')](_0x7dc9('0xe4'),ut[_0x7dc9('0xa0')](_0x4c7c6b,_0x7dc9('0xe5')));rpcDb['createCustomerHistory'](_0x4c7c6b,_0x7dc9('0xe6'));if(ut['totalGlobal'](_0x4c7c6b)>=_0x182bc6[_0x7dc9('0xc8')]){_0x5d211b=ut['cloneAction'](_0x4c7c6b,0xf,_0x7dc9('0xa3'));rpcDb[_0x7dc9('0x95')](_0x5d211b,_0x7dc9('0xe6'));}else{rpcDb['createCustomerFinal'](_0x4c7c6b,_0x7dc9('0xe6'));}delete this[_0x7dc9('0x13')][_0x117444['linkedid']];break;case'19':_0x182bc6['outboundUnknownCallsDay']+=0x1;_0x4c7c6b[_0x7dc9('0x9d')]=ut['totalGlobal'](_0x4c7c6b);ut['logCustomer'](_0x4c7c6b,0x13,_0x117444[_0x7dc9('0xe3')]||_0x117444[_0x7dc9('0xe7')]);ami[_0x7dc9('0x26')]('custom:amd',ut['buildObj'](_0x4c7c6b,'amd'));rpcDb[_0x7dc9('0x92')](_0x4c7c6b,_0x7dc9('0xe8'));if(ut[_0x7dc9('0x9e')](_0x4c7c6b)>=_0x182bc6[_0x7dc9('0xc8')]){_0x5d211b=ut['cloneAction'](_0x4c7c6b,0xf,'Global');rpcDb[_0x7dc9('0x95')](_0x5d211b,_0x7dc9('0xe8'));}else{rpcDb[_0x7dc9('0x95')](_0x4c7c6b,'[callProgressDetectingCustomer][machine]');}delete this['actions'][_0x117444[_0x7dc9('0xab')]];break;default:if(_0x4c7c6b['dialAnswer']){ut[_0x7dc9('0x7b')](_0x182bc6,_0x7dc9('0xe9'));ut['loggerError'](_0x7dc9('0xea')+_0x182bc6[_0x7dc9('0x53')],_0x117444);}_0x182bc6[_0x7dc9('0xeb')]+=0x1;_0x4c7c6b[_0x7dc9('0x9d')]=ut[_0x7dc9('0x9e')](_0x4c7c6b);ut[_0x7dc9('0x8d')](_0x4c7c6b,0xc,_0x117444[_0x7dc9('0xe3')]||_0x117444[_0x7dc9('0xe7')]);rpcDb['createCustomerHistory'](_0x4c7c6b,_0x7dc9('0xec'));if(ut['totalGlobal'](_0x4c7c6b)>=_0x182bc6[_0x7dc9('0xc8')]){_0x5d211b=ut['cloneAction'](_0x4c7c6b,0xf,_0x7dc9('0xa3'));rpcDb[_0x7dc9('0x95')](_0x5d211b,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x7dc9('0x95')](_0x4c7c6b,_0x7dc9('0xed'));}delete this[_0x7dc9('0x13')][_0x117444[_0x7dc9('0xab')]];}if(!(_0x4c7c6b[_0x7dc9('0x71')]&&_0x2cf485==='16')){ut['updateOriginated'](_0x182bc6,_0x7dc9('0xee'));logger['info'](_0x7dc9('0xef'),_0x4c7c6b[_0x7dc9('0xae')],_0x7dc9('0xaf'),_0x182bc6[_0x7dc9('0x53')],'originated:\x20',_0x182bc6[_0x7dc9('0x5b')]);}if(_0x2cf485!==_0x7dc9('0xf0')){delete this['actions'][_0x117444[_0x7dc9('0xab')]];delete this[_0x7dc9('0x13')][_0x117444[_0x7dc9('0xf1')]];}}};Preview[_0x7dc9('0x61')]['callProgressDetectingAgent']=function(_0x3bbeee,_0x43a729,_0x330bf7){if(_[_0x7dc9('0xf2')](_0x43a729)&&_0x7dc9('0xf3')!==typeof _0x43a729){return;}if(_['isUndefined'](_0x330bf7)&&_0x7dc9('0xf3')!==typeof _0x330bf7){return;}switch(_0x330bf7[_0x7dc9('0xf4')]){case'0':ut[_0x7dc9('0xf5')](_0x3bbeee,0x0,_0x7dc9('0x9f'));rpcDb['createAgentHistory'](_0x3bbeee,_0x7dc9('0xf6'));break;case'3':ut['logAgent'](_0x3bbeee,0x3,'NoAnswer');rpcDb['createAgentHistory'](_0x3bbeee,_0x7dc9('0xf7'));break;case'5':ut[_0x7dc9('0xf5')](_0x3bbeee,0x5,_0x7dc9('0xbd'));rpcDb[_0x7dc9('0xf8')](_0x3bbeee,_0x7dc9('0xf9'));break;case'8':ut[_0x7dc9('0xf5')](_0x3bbeee,0x8,_0x7dc9('0xfa'));rpcDb[_0x7dc9('0xf8')](_0x3bbeee,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x7dc9('0xf5')](_0x3bbeee,0x16,_0x7dc9('0xfb'));rpcDb[_0x7dc9('0xf8')](_0x3bbeee,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut[_0x7dc9('0xf5')](_0x3bbeee,0xc,_0x330bf7[_0x7dc9('0xf4')]);rpcDb[_0x7dc9('0xf8')](_0x3bbeee,_0x7dc9('0xfc'));}ut[_0x7dc9('0x79')](_0x43a729,_0x7dc9('0xfd'));logger[_0x7dc9('0x55')](_0x7dc9('0xfe'),_0x3bbeee[_0x7dc9('0xae')],_0x7dc9('0xaf'),_0x43a729[_0x7dc9('0x53')],_0x7dc9('0x6f'),_0x43a729[_0x7dc9('0x5b')]);delete this[_0x7dc9('0x13')][_0x3bbeee[_0x7dc9('0xae')]];};Preview[_0x7dc9('0x61')][_0x7dc9('0xff')]=function(_0x809ae5,_0x4158eb,_0x26868d,_0x5e5ed6,_0x179bfd){var _0x530e6f=this;return new BPromise(function(_0x12c10b,_0x56e1ba){if(_['isNil'](_0x4158eb)||_[_0x7dc9('0x6d')](_0x4158eb[_0x7dc9('0x100')])||_['isNil'](_0x4158eb[_0x7dc9('0x100')]['phone'])||_[_0x7dc9('0x6d')](_0x4158eb[_0x7dc9('0x75')])){_0x56e1ba(ut['message']('Contact\x20is\x20undefined',_0x5e5ed6,_0x179bfd));return;}var _0x338c78=uuid['v4']();var _0xfb704a=_0x530e6f[_0x7dc9('0x25')][_0x4158eb[_0x7dc9('0x6e')]['name']];var _0x204694=_0x26868d?_0x530e6f[_0x7dc9('0x14')][_0x26868d]['id']:undefined;_0x530e6f['actions'][_0x338c78]=new Action(_0x4158eb,_0xfb704a,_0x338c78,_0x26868d,_0x204694);var _0x2df2c0=_0x530e6f[_0x7dc9('0x13')][_0x338c78];_0x2df2c0['unlockAgent']=_0x5e5ed6;_0x2df2c0['activeContact']=_0x179bfd;_0x2df2c0[_0x7dc9('0x101')]=_0x26868d;if(_[_0x7dc9('0x102')](_0x809ae5)){_0x530e6f[_0x7dc9('0x103')](_0x2df2c0,_0xfb704a,_0x4158eb,_0x26868d)[_0x7dc9('0x86')](function(_0x559cfc){logger[_0x7dc9('0x55')]('[Preview][execCall][success]','Queue:\x20'+_0x2df2c0[_0x7dc9('0x70')]+_0x7dc9('0x104')+_0x2df2c0[_0x7dc9('0x105')],JSON[_0x7dc9('0x50')](_0x559cfc));ami[_0x7dc9('0x26')](_0x7dc9('0x106'),ut[_0x7dc9('0xa0')](_0x2df2c0,'called',_0x530e6f[_0x7dc9('0x25')][_0x2df2c0[_0x7dc9('0x70')]]));_0x12c10b(ut[_0x7dc9('0x45')](_0x7dc9('0x107')));})[_0x7dc9('0x88')](function(_0x17c063){ut[_0x7dc9('0x5e')]('[Preview][execCall][failure]',_0x17c063);_0x56e1ba(ut[_0x7dc9('0x45')](_0x7dc9('0x108'),_0x5e5ed6,_0x179bfd));});}else{_0xfb704a[_0x7dc9('0x37')]+=0x1;ut[_0x7dc9('0x109')](_0x2df2c0);rpcDb[_0x7dc9('0x10a')](_0x2df2c0,'[Blacklist][error]');delete _0x530e6f[_0x7dc9('0x13')][_0x338c78];_0x56e1ba(ut['message'](_0x7dc9('0x10b'),_0x5e5ed6,_0x179bfd));}});};Preview[_0x7dc9('0x61')]['isTrunkReachable']=function(_0x438d70){return!_[_0x7dc9('0x6d')](_0x438d70)&&!_[_0x7dc9('0x6d')](_0x438d70[_0x7dc9('0x53')])&&!_[_0x7dc9('0x6d')](_0x438d70[_0x7dc9('0x4d')])&&_0x438d70['active']&&!_[_0x7dc9('0x6d')](this[_0x7dc9('0x12')][util['format'](_0x7dc9('0x10c'),_0x438d70[_0x7dc9('0x53')])])&&!_['isNil'](this['trunks'][util[_0x7dc9('0x52')](_0x7dc9('0x10c'),_0x438d70[_0x7dc9('0x53')])]['status'])&&(this[_0x7dc9('0x12')][util['format'](_0x7dc9('0x10c'),_0x438d70[_0x7dc9('0x53')])][_0x7dc9('0x10d')]==='reachable'||this[_0x7dc9('0x12')][util['format']('SIP/%s',_0x438d70[_0x7dc9('0x53')])][_0x7dc9('0x10d')]===_0x7dc9('0x10e'));};Preview[_0x7dc9('0x61')][_0x7dc9('0x85')]=function(_0x56d169,_0x510a56){var _0x26f2b3=this;return new BPromise(function(_0x46162c,_0x13e685){_0x26f2b3[_0x7dc9('0x10f')](_0x56d169,_0x510a56)['then'](function(_0x42706e){_0x46162c(_['pick'](_0x42706e,[_0x7dc9('0x45')]));})['catch'](function(_0x393ea7){if(_0x393ea7[_0x7dc9('0x110')]){rpcDb['unlockContact'](_0x56d169);}if(_0x393ea7[_0x7dc9('0x4d')]){rpcDb[_0x7dc9('0x8a')](_0x56d169);}_0x13e685(_[_0x7dc9('0x72')](_0x393ea7,[_0x7dc9('0x45')]));});});};Preview[_0x7dc9('0x61')]['execRun']=function(_0x2491ea,_0x1ec900){var _0x34f00c=this;return new BPromise(function(_0x220625,_0x4b3637){var _0x435eb3,_0x43f718;rpcDb[_0x7dc9('0x111')](_0x2491ea)[_0x7dc9('0x86')](function(_0x48be46){if(!_['isNil'](_0x48be46[0x0])){_0x43f718=_0x48be46[0x0]['recallme']?![]:!![];_0x435eb3=_0x48be46[0x0][_0x7dc9('0x112')]?!![]:![];_0x435eb3=_0x1ec900?!![]:_0x435eb3;}var _0x30e562=_0x34f00c[_0x7dc9('0x113')](_0x48be46);if(_0x30e562[_0x7dc9('0x114')]){rpcDb['checkIsBlackList'](_[_0x7dc9('0x72')](_0x48be46[0x0],['VoiceQueueId','Contact.phone']))['then'](function(_0x2e1bf9){_0x34f00c[_0x7dc9('0xff')](_0x2e1bf9,_0x48be46[0x0],_0x1ec900,_0x43f718,_0x435eb3)[_0x7dc9('0x86')](function(_0x1c8358){_0x220625(_0x1c8358);})['catch'](function(_0x5025c2){_0x4b3637(_0x5025c2);});})['catch'](function(_0x4640f0){ut[_0x7dc9('0x5e')](_0x7dc9('0x115'),_0x4640f0);_0x4b3637(ut[_0x7dc9('0x45')](_0x7dc9('0x116'),_0x43f718,_0x435eb3));});}else{_0x4b3637(ut[_0x7dc9('0x45')](_0x30e562['message'],_0x43f718,_0x435eb3));}})[_0x7dc9('0x88')](function(_0x34ef15){ut[_0x7dc9('0x5e')](_0x7dc9('0x117'),_0x34ef15);_0x4b3637(ut[_0x7dc9('0x45')](_0x7dc9('0x116'),![],!![]));});});};Preview[_0x7dc9('0x61')]['validateContact']=function(_0x4c59ea){if(_[_0x7dc9('0x6d')](_0x4c59ea)||_[_0x7dc9('0x102')](_0x4c59ea)||!_[_0x7dc9('0x6d')](_0x4c59ea[0x0]['Agent'])&&_[_0x7dc9('0x6d')](_0x4c59ea[0x0][_0x7dc9('0x83')][_0x7dc9('0x53')])){ut[_0x7dc9('0x5e')](_0x7dc9('0x118'),_0x4c59ea);return{'isValid':![],'message':_0x7dc9('0x119')};}var _0x25a6f9=this[_0x7dc9('0x25')][_0x4c59ea[0x0][_0x7dc9('0x6e')][_0x7dc9('0x53')]];_0x25a6f9[_0x7dc9('0x45')]=_0x7dc9('0x9a');if(_[_0x7dc9('0x6d')](_0x25a6f9)){ut[_0x7dc9('0x5e')]('[Preview][validateContact][Empty\x20Campaign]',_0x25a6f9);return{'isValid':![],'message':_0x7dc9('0x11a')};}if(!this[_0x7dc9('0x98')](_0x25a6f9[_0x7dc9('0x4c')])){ut[_0x7dc9('0x5e')](_0x7dc9('0x11b'),_0x7dc9('0x11c')+_0x25a6f9['name']+_0x7dc9('0x11d'));if(!this[_0x7dc9('0x98')](_0x25a6f9[_0x7dc9('0x99')])){ut[_0x7dc9('0x5e')](_0x7dc9('0x11b'),_0x25a6f9['name']+_0x7dc9('0x11e'));return{'isValid':![],'message':_0x7dc9('0x11f')};}}if(!ut['isActive'](_0x25a6f9[_0x7dc9('0x67')])){ut['logger'](_0x7dc9('0x120'),_0x25a6f9[_0x7dc9('0x53')]+_0x7dc9('0x121'));return{'isValid':![],'message':_0x7dc9('0x11c')+_0x25a6f9[_0x7dc9('0x53')]+_0x7dc9('0x121')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview['prototype'][_0x7dc9('0x103')]=function(_0x163919,_0x5c4a53,_0x2310bd,_0x44ec1b){var _0x3529c3=this;return new BPromise(function(_0x3c3c04,_0x143efb){var _0x468b00=_0x163919[_0x7dc9('0xae')];var _0x4185ab=_0x3529c3[_0x7dc9('0x98')](_0x5c4a53[_0x7dc9('0x4c')])?util['format'](_0x7dc9('0x122'),_0x5c4a53[_0x7dc9('0x4c')][_0x7dc9('0x53')],_['isNil'](_0x5c4a53[_0x7dc9('0x34')])?'':_0x5c4a53[_0x7dc9('0x34')][_0x7dc9('0x123')]()||'',_0x5c4a53['dialCutDigit']>0x0?_0x2310bd[_0x7dc9('0x100')][_0x7dc9('0x124')]['substring'](_0x5c4a53[_0x7dc9('0x125')]):_0x2310bd[_0x7dc9('0x100')][_0x7dc9('0x124')]):util[_0x7dc9('0x52')](_0x7dc9('0x122'),_[_0x7dc9('0x6d')](_0x5c4a53[_0x7dc9('0x99')])?_0x5c4a53[_0x7dc9('0x4c')][_0x7dc9('0x53')]:_0x5c4a53[_0x7dc9('0x99')][_0x7dc9('0x53')],_[_0x7dc9('0x6d')](_0x5c4a53[_0x7dc9('0x34')])?'':_0x5c4a53[_0x7dc9('0x34')][_0x7dc9('0x123')]()||'',_0x5c4a53[_0x7dc9('0x125')]>0x0?_0x2310bd[_0x7dc9('0x100')]['phone']['substring'](_0x5c4a53[_0x7dc9('0x125')]):_0x2310bd[_0x7dc9('0x100')][_0x7dc9('0x124')]);var _0x125242=_0x3529c3['isTrunkReachable'](_0x5c4a53[_0x7dc9('0x4c')])?ut[_0x7dc9('0x126')](_0x5c4a53[_0x7dc9('0x4c')][_0x7dc9('0x4e')],_0x5c4a53[_0x7dc9('0x32')],_0x5c4a53[_0x7dc9('0x127')]>0x0?ut[_0x7dc9('0x128')](_0x5c4a53['dialOriginateCallerIdNumber'],_0x5c4a53[_0x7dc9('0x127')]):_0x5c4a53[_0x7dc9('0x129')]):ut[_0x7dc9('0x126')](_['isNil'](_0x5c4a53[_0x7dc9('0x99')])?_0x5c4a53['Trunk'][_0x7dc9('0x4e')]:_0x5c4a53[_0x7dc9('0x99')][_0x7dc9('0x4e')],_0x5c4a53[_0x7dc9('0x32')],_0x5c4a53[_0x7dc9('0x127')]>0x0?ut[_0x7dc9('0x128')](_0x5c4a53['dialOriginateCallerIdNumber'],_0x5c4a53[_0x7dc9('0x127')]):_0x5c4a53[_0x7dc9('0x129')]);if(_0x125242){_0x163919[_0x7dc9('0x12a')]=ut[_0x7dc9('0x12b')](_0x125242);_0x163919[_0x7dc9('0x12c')]=ut['extractCalleridNumber'](_0x125242);}var _0x5d84b1=ut['addVariables'](_0x5c4a53,_0x2310bd,_0x4185ab,_0x125242,_0x468b00,_0x163919);_[_0x7dc9('0x12d')](_0x163919,ut[_0x7dc9('0x12e')](_0x5d84b1));_0x163919[_0x7dc9('0x12f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');ami[_0x7dc9('0x77')](ut['variablesAction'](_0x163919,_0x5c4a53,_0x5d84b1,_0x163919[_0x7dc9('0xaa')],_0x44ec1b))[_0x7dc9('0x86')](function(_0x5bb362){_0x5c4a53['originated']+=0x1;logger['info'](_0x7dc9('0x130'),_0x468b00,_0x7dc9('0xaf'),_0x5c4a53[_0x7dc9('0x53')],_0x7dc9('0x6f'),_0x5c4a53[_0x7dc9('0x5b')]);_0x3c3c04(_0x5bb362);})[_0x7dc9('0x88')](function(_0x112461){ut[_0x7dc9('0xf5')](_0x163919,0xe,_0x7dc9('0x131'));rpcDb[_0x7dc9('0xf8')](_0x163919,_0x7dc9('0x132'));_0x143efb(_0x112461);});});};Preview[_0x7dc9('0x61')][_0x7dc9('0x1f')]=function(_0x593fa1){if(this['actions'][_0x593fa1[_0x7dc9('0xab')]]){this[_0x7dc9('0x13')][_0x593fa1[_0x7dc9('0xab')]][_0x7dc9('0x133')]=_0x593fa1[_0x7dc9('0x133')];}};Preview[_0x7dc9('0x61')][_0x7dc9('0x17')]=function(_0x32a792){var _0x2033ea=this;var _0x1194b5=this[_0x7dc9('0x13')][_0x32a792[_0x7dc9('0x134')]];if(_0x1194b5){if(_0x1194b5['lookAgent']&&this[_0x7dc9('0x14')][_0x1194b5[_0x7dc9('0x101')]]){ut[_0x7dc9('0x135')](_0x1194b5,this[_0x7dc9('0x14')][_0x1194b5[_0x7dc9('0x101')]][_0x7dc9('0x53')],this[_0x7dc9('0x14')][_0x1194b5[_0x7dc9('0x101')]]['id']);}var _0x3ea91e=_[_0x7dc9('0x136')](_0x1194b5);_0x3ea91e[_0x7dc9('0x137')]=moment()[_0x7dc9('0x52')](_0x7dc9('0x8b'));var _0x3ca6ce=_0x2033ea[_0x7dc9('0x25')][_0x1194b5['queue']];if(ut[_0x7dc9('0x138')](_0x32a792[_0x7dc9('0x139')])){if(_0x1194b5[_0x7dc9('0xa9')]){rpcDb[_0x7dc9('0x13a')](_0x1194b5[_0x7dc9('0x105')]);}if(_0x1194b5['activeContact']){rpcDb[_0x7dc9('0x8a')](_0x1194b5[_0x7dc9('0x105')]);}ami[_0x7dc9('0x26')](_0x7dc9('0x13b'),ut['buildObj'](_0x1194b5,_0x7dc9('0x13c'),this[_0x7dc9('0x25')][_0x1194b5[_0x7dc9('0x70')]]));this['callProgressDetectingAgent'](_0x3ea91e,_0x3ca6ce,_0x32a792);}else{_0x1194b5[_0x7dc9('0x12f')]=moment()['format'](_0x7dc9('0x8b'));ut['logAgent'](_0x3ea91e,0x4,_0x7dc9('0x13d'));rpcDb[_0x7dc9('0xf8')](_0x3ea91e,'[callProgressDetectingAgent][logAnswer]');}}};Preview['prototype'][_0x7dc9('0x13e')]=function(_0x151c57){var _0x3e7472=this;var _0x2dd442=this[_0x7dc9('0x13')][_0x151c57[_0x7dc9('0xab')]];var _0x413f4d;if(_0x2dd442){_0x413f4d=this['campaignsPreview'][_0x2dd442[_0x7dc9('0x70')]];logger[_0x7dc9('0x55')]('[syncHangup][talking]',_0x151c57[_0x7dc9('0xab')],_0x7dc9('0xaf'),_0x413f4d[_0x7dc9('0x53')],'pTalking:\x20',_0x413f4d[_0x7dc9('0x2b')]);}if(this['actions'][_0x151c57[_0x7dc9('0xab')]]&&_0x151c57[_0x7dc9('0xab')]!==_0x151c57['uniqueid']){if(_0x151c57[_0x7dc9('0x13f')]==='16'&&this['actions'][_0x151c57[_0x7dc9('0xab')]][_0x7dc9('0x71')]){this[_0x7dc9('0x9b')](_0x151c57,_0x151c57[_0x7dc9('0xab')],_0x151c57[_0x7dc9('0x13f')]);}else if(this['actions'][_0x151c57[_0x7dc9('0xab')]][_0x7dc9('0x71')]){logger[_0x7dc9('0x55')](_0x7dc9('0x140'),_0x151c57[_0x7dc9('0xab')],_0x151c57['cause'],_0x7dc9('0xaf'),_0x413f4d[_0x7dc9('0x53')],_0x7dc9('0xb0'),_0x413f4d[_0x7dc9('0x2b')]);this['callProgressDetectingCustomer'](_0x151c57,_0x151c57['linkedid'],_0x151c57['cause']);}}else if(_0x2dd442&&_[_0x7dc9('0x6d')](_0x2dd442[_0x7dc9('0x141')])&&_0x413f4d[_0x7dc9('0x142')]&&_0x151c57['linkedid']===_0x151c57[_0x7dc9('0xae')]&&_[_0x7dc9('0x6d')](_0x151c57[_0x7dc9('0xf4')])&&_0x151c57[_0x7dc9('0x13f')]==='16'&&_0x151c57[_0x7dc9('0x143')]==='6'&&_[_0x7dc9('0xf2')](_0x2dd442[_0x7dc9('0x144')])){if(_0x2dd442[_0x7dc9('0xa9')]){rpcDb[_0x7dc9('0x13a')](_0x2dd442[_0x7dc9('0x105')]);}if(_0x2dd442['activeContact']){rpcDb[_0x7dc9('0x8a')](_0x2dd442[_0x7dc9('0x105')]);}_0x151c57[_0x7dc9('0xf4')]='22';this['callProgressDetectingAgent'](_0x2dd442,_0x413f4d,_0x151c57);}else if(_0x2dd442&&_0x2dd442[_0x7dc9('0x144')]){if(_0x151c57[_0x7dc9('0x13f')]==='16'&&this[_0x7dc9('0x13')][_0x151c57[_0x7dc9('0xab')]]['dialAnswer']){logger[_0x7dc9('0x55')](_0x7dc9('0x145'),_0x151c57['linkedid'],_0x151c57['cause'],'\x20Queue',_0x413f4d['name'],_0x7dc9('0xb0'),_0x413f4d[_0x7dc9('0x2b')]);this[_0x7dc9('0x9b')](_0x151c57,_0x151c57['linkedid'],_0x151c57[_0x7dc9('0x13f')]);}else if(this[_0x7dc9('0x13')][_0x151c57[_0x7dc9('0xab')]]['dialAnswer']){logger['info'](_0x7dc9('0x140'),_0x151c57[_0x7dc9('0xab')],_0x151c57[_0x7dc9('0x13f')],'\x20Queue',_0x413f4d[_0x7dc9('0x53')],_0x7dc9('0xb0'),_0x413f4d[_0x7dc9('0x2b')]);this[_0x7dc9('0x9b')](_0x151c57,_0x151c57[_0x7dc9('0xab')],_0x151c57[_0x7dc9('0x13f')]);}}};Preview[_0x7dc9('0x61')][_0x7dc9('0x1d')]=function(_0x3ac91d){if(this['actions'][_0x3ac91d[_0x7dc9('0xf1')]]&&_0x3ac91d['destlinkedid']!==_0x3ac91d['destuniqueid']){this[_0x7dc9('0x9b')](_0x3ac91d,_0x3ac91d[_0x7dc9('0xf1')],_0x3ac91d[_0x7dc9('0xe7')]);}};Preview[_0x7dc9('0x61')][_0x7dc9('0x1b')]=function(_0x1b617c){if(this[_0x7dc9('0x13')][_0x1b617c[_0x7dc9('0xab')]]&&_0x1b617c[_0x7dc9('0xab')]!==_0x1b617c['uniqueid']&&!this['actions'][_0x1b617c[_0x7dc9('0xab')]][_0x7dc9('0x71')]){if(_0x1b617c[_0x7dc9('0x13f')]==='1'){this[_0x7dc9('0x9b')](_0x1b617c,_0x1b617c[_0x7dc9('0xab')],_0x1b617c['cause']);}}};Preview[_0x7dc9('0x61')][_0x7dc9('0x146')]=function(_0x4f4e80,_0x476da8,_0x450ca7){if(this['actions'][_0x4f4e80]){if(_[_0x7dc9('0x6d')](this['actions'][_0x4f4e80][_0x7dc9('0x147')])){this['actions'][_0x4f4e80][_0x7dc9('0x147')]={};}this[_0x7dc9('0x13')][_0x4f4e80][_0x7dc9('0x147')][_0x476da8]=_0x450ca7;}};Preview[_0x7dc9('0x61')]['syncVarSet']=function(_0x5def76){try{if(!_[_0x7dc9('0x6d')](_0x5def76)){if(ut[_0x7dc9('0x148')](_['keys'](_0x5def76[_0x7dc9('0x149')])[0x0])){this[_0x7dc9('0x146')](_0x5def76[_0x7dc9('0xae')],_[_0x7dc9('0x14a')](_0x5def76[_0x7dc9('0x149')])[0x0],_0x5def76[_0x7dc9('0x14b')]);}}}catch(_0x2f3282){logger['error'](_0x7dc9('0x14c'),util[_0x7dc9('0x14d')](_0x2f3282,{'showHidden':![],'depth':null}));}};Preview[_0x7dc9('0x61')][_0x7dc9('0x14e')]=function(_0x5e7cf2){if(_0x5e7cf2){if(this[_0x7dc9('0x13')][_0x5e7cf2[_0x7dc9('0x14f')]]){this[_0x7dc9('0x13')][_0x5e7cf2[_0x7dc9('0x14f')]][_0x7dc9('0x144')]=!![];}}};Preview['prototype'][_0x7dc9('0x23')]=function(_0x276c04){if(_0x276c04){if(this[_0x7dc9('0x13')][_0x276c04[_0x7dc9('0x150')]]){this[_0x7dc9('0x13')][_0x276c04[_0x7dc9('0x150')]][_0x7dc9('0x144')]=!![];}}};module[_0x7dc9('0x151')]=Preview;
\ No newline at end of file
index 9d18d9f..86c949a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb687=['lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','resolve','createHistory','catch','[createHistory]\x20','then','moveContactManagedDialer','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerHistory','rescheduleContact','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercompleteAt','endtime','membername','context','from-sip','exten','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','../../../config/logger','preview'];(function(_0x7891e3,_0x307220){var _0x101f6e=function(_0x50547f){while(--_0x50547f){_0x7891e3['push'](_0x7891e3['shift']());}};_0x101f6e(++_0x307220);}(_0xb687,0x67));var _0x7b68=function(_0x4921c8,_0x31f422){_0x4921c8=_0x4921c8-0x0;var _0x3b610a=_0xb687[_0x4921c8];return _0x3b610a;};'use strict';var util=require(_0x7b68('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b68('0x1'))(_0x7b68('0x2'));var _=require(_0x7b68('0x3'));var cmHopper=require(_0x7b68('0x4'));var cmHopperFinal=require(_0x7b68('0x5'));var cmHopperHistory=require(_0x7b68('0x6'));var cmHopperBlack=require(_0x7b68('0x7'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x7b68('0x8'));var voiceQueueReport=require(_0x7b68('0x9'));function loggerCatch(_0x271e06){return function(_0x24d19e){logger['error'](_0x271e06,util['inspect'](_0x24d19e,{'showHidden':![],'depth':null}));};}function create(_0x1b8e01){return BPromise[_0x7b68('0xa')]()['then'](cmHopperHistory[_0x7b68('0xb')](_0x1b8e01))[_0x7b68('0xc')](loggerCatch(_0x7b68('0xd')));}function createAgent(_0x3bf83e){return BPromise[_0x7b68('0xa')]()[_0x7b68('0xe')](agentReportPreview['createHistory'](_0x3bf83e))[_0x7b68('0xc')](loggerCatch(_0x7b68('0xd')));}function moveContact(_0x50f07a){return BPromise[_0x7b68('0xa')]()['then'](cmHopper[_0x7b68('0xf')](_0x50f07a,!![]))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));}exports['checkIsBlackList']=function(_0x245817){return BPromise[_0x7b68('0xa')]()[_0x7b68('0xe')](cmHopperBlack['checkIsBlackList'](_0x245817))[_0x7b68('0xc')](loggerCatch(_0x7b68('0x10')));};exports[_0x7b68('0x11')]=function(_0x2efd28){return BPromise[_0x7b68('0xa')]()[_0x7b68('0xe')](cmHopper[_0x7b68('0x11')](_0x2efd28))[_0x7b68('0xc')](loggerCatch(_0x7b68('0x12')));};exports[_0x7b68('0xb')]=function(_0xc62bda,_0x4e9e02){create(_0xc62bda)[_0x7b68('0xc')](loggerCatch(_0x4e9e02));moveContact(_0xc62bda)[_0x7b68('0xc')](loggerCatch(_0x4e9e02));};exports['createAgentHistory']=function(_0x1a934d,_0x407793){createAgent(_0x1a934d)[_0x7b68('0xc')](loggerCatch(_0x407793));};exports[_0x7b68('0x13')]=function(_0x13695f,_0x31495d){create(_0x13695f)[_0x7b68('0xc')](loggerCatch(_0x31495d));};exports['createCustomerFinal']=function(_0x1b17d2,_0x2aeb03){moveContact(_0x1b17d2)[_0x7b68('0xc')](loggerCatch(_0x2aeb03));};exports[_0x7b68('0x14')]=function(_0x4fb956,_0x3ed148,_0x1fe377){if(_0x3ed148){_0x4fb956['UserId']=null;}if(_0x1fe377){_0x4fb956[_0x7b68('0x15')]=![];}return BPromise[_0x7b68('0xa')]()[_0x7b68('0xe')](cmHopper[_0x7b68('0x14')](_0x4fb956))['catch'](loggerCatch(_0x7b68('0x16')));};exports[_0x7b68('0x17')]=function(_0x5f12c0){return BPromise[_0x7b68('0xa')]()['then'](cmHopper[_0x7b68('0x17')](_0x5f12c0))[_0x7b68('0xc')](loggerCatch(_0x7b68('0x18')));};exports[_0x7b68('0x19')]=function(_0x243612){return BPromise[_0x7b68('0xa')]()[_0x7b68('0xe')](cmHopper[_0x7b68('0x19')]({'UserId':null},_0x243612,0x1))[_0x7b68('0xc')](loggerCatch(_0x7b68('0x1a')));};exports[_0x7b68('0x1b')]=function(_0x34e3cc){return BPromise[_0x7b68('0xa')]()['then'](cmHopper[_0x7b68('0x19')]({'active':![]},_0x34e3cc,0x1))[_0x7b68('0xc')](loggerCatch(_0x7b68('0x1c')));};exports[_0x7b68('0x1d')]=function(_0x15adab){var _0x5fddf4={};_0x5fddf4[_0x7b68('0x1e')]=_0x15adab[_0x7b68('0x1e')];_0x5fddf4['uniqueid']=_0x15adab['uniqueid'];_0x5fddf4[_0x7b68('0x1f')]=_0x15adab[_0x7b68('0x1f')];_0x5fddf4[_0x7b68('0x20')]=_0x15adab[_0x7b68('0x20')];_0x5fddf4[_0x7b68('0x21')]=_0x15adab[_0x7b68('0x21')];_0x5fddf4[_0x7b68('0x22')]=_0x15adab[_0x7b68('0x23')];_0x5fddf4[_0x7b68('0x24')]=_0x15adab[_0x7b68('0x23')];_0x5fddf4['queuecallercomplete']=0x1;_0x5fddf4[_0x7b68('0x25')]=_0x15adab[_0x7b68('0x26')];_0x5fddf4['connectedlinename']=_0x15adab[_0x7b68('0x27')];_0x5fddf4[_0x7b68('0x28')]=_0x7b68('0x29');_0x5fddf4[_0x7b68('0x2a')]='xcally-motion-preview';_0x5fddf4['holdtime']=0x0;_0x5fddf4[_0x7b68('0x2b')]=0x1;_0x5fddf4[_0x7b68('0x2c')]=_0x15adab['membername'];_0x5fddf4[_0x7b68('0x2d')]=_0x7b68('0x2e');return BPromise[_0x7b68('0xa')]()['then'](voiceQueueReport[_0x7b68('0x2f')](_0x5fddf4))['catch'](loggerCatch(_0x7b68('0x30')));};exports[_0x7b68('0x31')]=function(_0x197ab8,_0x3cac80){return BPromise['resolve']()[_0x7b68('0xe')](cmHopper[_0x7b68('0x31')](_0x197ab8,_0x3cac80))[_0x7b68('0xc')](loggerCatch(_0x7b68('0x32')));};exports[_0x7b68('0x33')]=function(_0x20a079){return BPromise[_0x7b68('0xa')]()[_0x7b68('0xe')](cmHopper['rescheduleContact'](_0x20a079,!![],!![]))[_0x7b68('0xc')](loggerCatch(_0x7b68('0x34')));};
\ No newline at end of file
+var _0xed6b=['disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','endtime','connectedlinename','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','inspect','resolve','then','catch','[createHistory]\x20','createHistory','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerFinal','rescheduleContact','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20'];(function(_0x2461ec,_0xd693c3){var _0x3ba75c=function(_0x5ef7eb){while(--_0x5ef7eb){_0x2461ec['push'](_0x2461ec['shift']());}};_0x3ba75c(++_0xd693c3);}(_0xed6b,0x156));var _0xbed6=function(_0x1a11b4,_0x4e18f5){_0x1a11b4=_0x1a11b4-0x0;var _0x178b54=_0xed6b[_0x1a11b4];return _0x178b54;};'use strict';var util=require(_0xbed6('0x0'));var BPromise=require(_0xbed6('0x1'));var logger=require(_0xbed6('0x2'))(_0xbed6('0x3'));var _=require('lodash');var cmHopper=require(_0xbed6('0x4'));var cmHopperFinal=require(_0xbed6('0x5'));var cmHopperHistory=require(_0xbed6('0x6'));var cmHopperBlack=require(_0xbed6('0x7'));var voiceQueueRt=require(_0xbed6('0x8'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0xbed6('0x9'));function loggerCatch(_0x39fe33){return function(_0x2e5619){logger[_0xbed6('0xa')](_0x39fe33,util[_0xbed6('0xb')](_0x2e5619,{'showHidden':![],'depth':null}));};}function create(_0x46fc2d){return BPromise[_0xbed6('0xc')]()[_0xbed6('0xd')](cmHopperHistory['createHistory'](_0x46fc2d))[_0xbed6('0xe')](loggerCatch(_0xbed6('0xf')));}function createAgent(_0x3cf1fa){return BPromise['resolve']()[_0xbed6('0xd')](agentReportPreview[_0xbed6('0x10')](_0x3cf1fa))[_0xbed6('0xe')](loggerCatch(_0xbed6('0xf')));}function moveContact(_0x157638){return BPromise[_0xbed6('0xc')]()[_0xbed6('0xd')](cmHopper[_0xbed6('0x11')](_0x157638,!![]))[_0xbed6('0xe')](loggerCatch(_0xbed6('0x12')));}exports['checkIsBlackList']=function(_0x3f7fcd){return BPromise[_0xbed6('0xc')]()['then'](cmHopperBlack[_0xbed6('0x13')](_0x3f7fcd))[_0xbed6('0xe')](loggerCatch(_0xbed6('0x14')));};exports[_0xbed6('0x15')]=function(_0x33a9e2){return BPromise[_0xbed6('0xc')]()[_0xbed6('0xd')](cmHopper['getContactPreview'](_0x33a9e2))['catch'](loggerCatch('[getContactPreview]\x20'));};exports[_0xbed6('0x10')]=function(_0x170a7d,_0xc9093e){create(_0x170a7d)[_0xbed6('0xe')](loggerCatch(_0xc9093e));moveContact(_0x170a7d)[_0xbed6('0xe')](loggerCatch(_0xc9093e));};exports[_0xbed6('0x16')]=function(_0x8c9102,_0x339376){createAgent(_0x8c9102)[_0xbed6('0xe')](loggerCatch(_0x339376));};exports['createCustomerHistory']=function(_0x7bc680,_0x1cbf23){create(_0x7bc680)['catch'](loggerCatch(_0x1cbf23));};exports[_0xbed6('0x17')]=function(_0x20d052,_0x4e6c50){moveContact(_0x20d052)[_0xbed6('0xe')](loggerCatch(_0x4e6c50));};exports['rescheduleContact']=function(_0x32a459,_0x45cef1,_0x1a8789){if(_0x45cef1){_0x32a459['UserId']=null;}if(_0x1a8789){_0x32a459['active']=![];}return BPromise[_0xbed6('0xc')]()[_0xbed6('0xd')](cmHopper[_0xbed6('0x18')](_0x32a459))[_0xbed6('0xe')](loggerCatch('[rescheduleContact]\x20'));};exports[_0xbed6('0x19')]=function(_0x2da8fd){return BPromise[_0xbed6('0xc')]()['then'](cmHopper[_0xbed6('0x19')](_0x2da8fd))['catch'](loggerCatch(_0xbed6('0x1a')));};exports[_0xbed6('0x1b')]=function(_0xf09bb7){return BPromise['resolve']()[_0xbed6('0xd')](cmHopper[_0xbed6('0x1b')]({'UserId':null},_0xf09bb7,0x1))[_0xbed6('0xe')](loggerCatch(_0xbed6('0x1c')));};exports[_0xbed6('0x1d')]=function(_0x2e9f85){return BPromise[_0xbed6('0xc')]()['then'](cmHopper[_0xbed6('0x1b')]({'active':![]},_0x2e9f85,0x1))[_0xbed6('0xe')](loggerCatch('[activeContact]\x20'));};exports[_0xbed6('0x1e')]=function(_0x524e1e){var _0x9052fb={};_0x9052fb[_0xbed6('0x1f')]=_0x524e1e[_0xbed6('0x1f')];_0x9052fb[_0xbed6('0x20')]=_0x524e1e[_0xbed6('0x20')];_0x9052fb[_0xbed6('0x21')]=_0x524e1e[_0xbed6('0x21')];_0x9052fb['calleridname']=_0x524e1e[_0xbed6('0x22')];_0x9052fb[_0xbed6('0x23')]=_0x524e1e[_0xbed6('0x23')];_0x9052fb[_0xbed6('0x24')]=_0x524e1e[_0xbed6('0x25')];_0x9052fb['queuecallerleaveAt']=_0x524e1e['answertime'];_0x9052fb['queuecallercomplete']=0x1;_0x9052fb['queuecallercompleteAt']=_0x524e1e[_0xbed6('0x26')];_0x9052fb[_0xbed6('0x27')]=_0x524e1e['membername'];_0x9052fb[_0xbed6('0x28')]=_0xbed6('0x29');_0x9052fb[_0xbed6('0x2a')]=_0xbed6('0x2b');_0x9052fb[_0xbed6('0x2c')]=0x0;_0x9052fb[_0xbed6('0x2d')]=0x1;_0x9052fb[_0xbed6('0x2e')]=_0x524e1e['membername'];_0x9052fb[_0xbed6('0x2f')]=_0xbed6('0x30');return BPromise['resolve']()[_0xbed6('0xd')](voiceQueueReport[_0xbed6('0x31')](_0x9052fb))[_0xbed6('0xe')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0xbed6('0x32')]=function(_0x17a4ed,_0x354312){return BPromise[_0xbed6('0xc')]()[_0xbed6('0xd')](cmHopper['getContactRecallMe'](_0x17a4ed,_0x354312))['catch'](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0xbed6('0x33')]=function(_0x50c1c0){return BPromise[_0xbed6('0xc')]()[_0xbed6('0xd')](cmHopper[_0xbed6('0x18')](_0x50c1c0,!![],!![]))[_0xbed6('0xe')](loggerCatch(_0xbed6('0x34')));};
\ No newline at end of file
index 285651a..f74e307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6542=['scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','lastevent','interface','motionChannel','voice','mandatoryDisposition','buildAcw','queue','not_inuse','status','push','getDiff','diff','createBody','CampaignId','filterKey','idContact','campaigntype','dialAnswer','countbusyretry','countnoanswerretry','countglobal','callback','callbackuniqueid','recallme','sipcallid','xmd-queue','xmd-phone','xmd-listid','xmd-dialoptions','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosjitterbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridNumber','match','util','lodash','preview','env','milliseconds','seconds','error','inspect','logger','info','loggerError','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','U(xcally-mixmonitor-context)','dialQueueProject','dialQueueProject2','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','updatedAt','%s%s','XMD-','toUpper','toLower','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','starttime','responsetime','endtime','logAgent','state','ringtime','logLookAgent','UserId','logCustomer','statedesc','answertime','isFailure','Failure','variablesAction','RECALL','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','scheduledAt','active'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x6542,0x1cf));var _0x2654=function(_0x4f209c,_0x1f8acc){_0x4f209c=_0x4f209c-0x0;var _0x13c8c0=_0x6542[_0x4f209c];return _0x13c8c0;};'use strict';var util=require(_0x2654('0x0'));var _=require(_0x2654('0x1'));var moment=require('moment');var logger=require('../../../../config/logger')(_0x2654('0x2'));var ipAgi=process[_0x2654('0x3')]['XCALLY_IP_AGI']||'127.0.0.1';function getSeconds(_0x16cd0d,_0x511641){var _0x52b9bf=moment(_0x16cd0d)[_0x2654('0x4')](0x0);var _0xd21be5=moment(_0x511641)[_0x2654('0x4')](0x0);return _0x52b9bf['diff'](_0xd21be5,_0x2654('0x5'));}exports['loggerCatch']=function(_0x34687d){return function(_0x2ddeb){logger[_0x2654('0x6')](_0x34687d,util[_0x2654('0x7')](_0x2ddeb,{'showHidden':![],'depth':null}));};};exports[_0x2654('0x8')]=function(_0x53124d,_0x153d0a){logger[_0x2654('0x9')](_0x53124d,util['inspect'](_0x153d0a,{'showHidden':![],'depth':null}));};exports[_0x2654('0xa')]=function(_0x39f837,_0x2d0977){logger[_0x2654('0x6')](_0x39f837,util[_0x2654('0x7')](_0x2d0977,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x40075e){return function(_0x5b87ab){logger[_0x2654('0x9')](_0x40075e,util[_0x2654('0x7')](_0x5b87ab,{'showHidden':![],'depth':null}));};};exports[_0x2654('0xb')]=function(_0x753c4a,_0x4adf39,_0x2a840e){return{'message':_0x753c4a,'unlock':_0x4adf39,'active':_0x2a840e};};exports[_0x2654('0xc')]=function(_0x248b69,_0x434857,_0x2b3175){if(!_[_0x2654('0xd')](_0x2b3175)&&_0x2654('0xe')===typeof _0x2b3175&&!_[_0x2654('0xf')](_0x2b3175)){if(!_['isUndefined'](_0x434857)&&_0x2654('0xe')===typeof _0x434857&&!_[_0x2654('0xf')](_0x434857)){return util[_0x2654('0x10')]('\x22%s\x22\x20<%s>',_0x434857,_0x2b3175);}return util[_0x2654('0x10')](_0x2654('0x11'),_0x2b3175,_0x2b3175);}if(!_[_0x2654('0xd')](_0x248b69)&&_0x2654('0xe')===typeof _0x248b69&&!_['isEmpty'](_0x248b69)){return _0x248b69;}return'\x22\x22\x20<>';};exports[_0x2654('0x12')]=function(_0x5d1fd3){if(_[_0x2654('0x13')](_0x5d1fd3)){return![];}return _0x5d1fd3;};exports[_0x2654('0x14')]=function(_0xe89707,_0x5c9d0d,_0xb4cfef,_0x6b06e8,_0x159e81,_0x341472){var _0x4b6557={'XMD-QUEUE':_0x5c9d0d[_0x2654('0x15')]?_0x5c9d0d[_0x2654('0x15')]['name']:'','XMD-CALLERID':_0x6b06e8,'XMD-CALLERID-PREVIEW':_0x341472?util[_0x2654('0x10')](_0x2654('0x11'),_0x341472[_0x2654('0x16')],_0x341472[_0x2654('0x17')]):_0x6b06e8,'XMD-DIALID':_0x159e81,'XMD-CONTACTID':_0x5c9d0d[_0x2654('0x18')],'XMD-CDRTYPE':_0x2654('0x19'),'CALLERID(all)':_0x6b06e8,'XMD-VOICEQUEUEID':_0x5c9d0d[_0x2654('0x1a')],'XMD-DIALCHANNEL':_0xb4cfef,'XMD-DIALTIMEOUT':_0xe89707[_0x2654('0x1b')]||0x1e,'XMD-DIALOPTIONS':util[_0x2654('0x10')](_0x2654('0x1c'),_0xe89707['dialQueueProject2']?'g':'',_[_0x2654('0xf')](_0xe89707['monitor_format'])?'':_0x2654('0x1d')),'XMD-DIALURL':_0xe89707['dialPreviewUrl']||'','XMD-AGI':_0xe89707['dialQueueProject']?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0xe89707[_0x2654('0x1e')]):'NONE','XMD-AGIAFTER':_0xe89707[_0x2654('0x1f')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0xe89707[_0x2654('0x1f')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x341472?_0x341472['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x341472?_0x341472[_0x2654('0x20')]:'','XMD-DESTINATION':_0x2654('0x21'),'SIPADDHEADER':_0x2654('0x22')};if(!_[_0x2654('0xf')](_0xe89707[_0x2654('0x23')])){_0x4b6557[util[_0x2654('0x10')]('%s',_0x2654('0x24'))]=_0xe89707['monitor_format'];_0x4b6557[util[_0x2654('0x10')]('%s',_0x2654('0x25'))]=_0x159e81;}if(_0x5c9d0d&&_0x5c9d0d['Contact']){for(var _0x3e284f in _0x5c9d0d[_0x2654('0x26')]){if(_0x5c9d0d[_0x2654('0x26')][_0x2654('0x27')](_0x3e284f)){if(!_[_0x2654('0x13')](_0x5c9d0d[_0x2654('0x26')][_0x3e284f])&&_0x3e284f!=='id'&&_0x3e284f!==_0x2654('0x28')&&_0x3e284f!=='createdAt'&&_0x3e284f!==_0x2654('0x29')){_0x4b6557[util[_0x2654('0x10')](_0x2654('0x2a'),_0x2654('0x2b'),_[_0x2654('0x2c')](_0x3e284f))]=_0x5c9d0d[_0x2654('0x26')][_0x3e284f];}}}}return _0x4b6557;};exports['toLowerVariables']=function(_0x19e8bf){var _0x45c92b={};for(var _0xa3c278 in _0x19e8bf){if(_0x19e8bf[_0x2654('0x27')](_0xa3c278)){_0x45c92b[util['format']('%s',_[_0x2654('0x2d')](_0xa3c278))]=_0x19e8bf[_0xa3c278];}}return{'variables':_0x45c92b};};exports['updateOriginated']=function(_0x5b10ad,_0x50ddf7){if(!_[_0x2654('0x13')](_0x5b10ad)){if(_0x5b10ad['hasOwnProperty'](_0x2654('0x2e'))){if(_0x5b10ad['originated']>0x0){_0x5b10ad['originated']-=0x1;}else{logger[_0x2654('0x6')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x50ddf7);}}}else{logger[_0x2654('0x6')](_0x2654('0x2f'),_0x50ddf7);}};exports['logBlacklist']=function(_0x3aea19){var _0x11230c=moment()['format'](_0x2654('0x30'));_0x3aea19['state']=0xd;_0x3aea19['statedesc']='Blacklist';_0x3aea19[_0x2654('0x31')]=_0x11230c;_0x3aea19[_0x2654('0x32')]=_0x11230c;_0x3aea19[_0x2654('0x33')]=_0x11230c;};exports[_0x2654('0x34')]=function(_0x37230b,_0x5a17d0,_0x469ca0){var _0x4708e7=moment()[_0x2654('0x10')](_0x2654('0x30'));_0x37230b[_0x2654('0x35')]=_0x5a17d0;_0x37230b['statedesc']=_0x469ca0;_0x37230b[_0x2654('0x32')]=_0x4708e7;_0x37230b[_0x2654('0x36')]=getSeconds(_0x37230b[_0x2654('0x32')],_0x37230b[_0x2654('0x31')]);};exports[_0x2654('0x37')]=function(_0x3b0b2b,_0x381116,_0x4b36fe){_0x3b0b2b['membername']=_0x381116;_0x3b0b2b[_0x2654('0x38')]=_0x4b36fe;};exports[_0x2654('0x39')]=function(_0x4cbfa1,_0x165710,_0x262ef6){var _0x48608c=moment()[_0x2654('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x4cbfa1[_0x2654('0x35')]=_0x165710;_0x4cbfa1[_0x2654('0x3a')]=_0x262ef6;_0x4cbfa1[_0x2654('0x32')]=_0x4cbfa1[_0x2654('0x32')]?_0x4cbfa1['responsetime']:_0x48608c;_0x4cbfa1[_0x2654('0x33')]=_0x4cbfa1[_0x2654('0x33')]?_0x4cbfa1['endtime']:_0x48608c;_0x4cbfa1[_0x2654('0x36')]=getSeconds(_0x4cbfa1[_0x2654('0x32')]||0x0,_0x4cbfa1[_0x2654('0x31')]||0x0);_0x4cbfa1['talktime']=_0x4cbfa1[_0x2654('0x3b')]?getSeconds(_0x4cbfa1[_0x2654('0x33')],_0x4cbfa1[_0x2654('0x3b')]):0x0;};exports[_0x2654('0x3c')]=function(_0x19e3e4){return _0x19e3e4===_0x2654('0x3d');};exports[_0x2654('0x3e')]=function(_0x32b1c3,_0x2d6916,_0x3b0f65,_0x472d85,_0x13c6ac){var _0x38ccd1=_0x472d85?_0x2654('0x3f'):_0x32b1c3['calleridname'];_0x38ccd1=_0x13c6ac?'BOOKED':_0x38ccd1;return{'actionid':_0x32b1c3[_0x2654('0x40')],'action':_0x2654('0x41'),'channel':_0x32b1c3[_0x2654('0x42')],'callerid':util[_0x2654('0x10')](_0x2654('0x11'),_0x38ccd1,_0x32b1c3[_0x2654('0x17')]),'Exten':'xcally-motion-preview','Context':_0x2654('0x43'),'Priority':'1','variable':_0x3b0f65,'timeout':(_0x2d6916[_0x2654('0x44')]||0x1e)*0x3e8,'async':!![],'channelid':_0x32b1c3['uniqueid']};};exports[_0x2654('0x45')]=function(_0x12606f){return _0x12606f['countbusyretry']+_0x12606f[_0x2654('0x46')]+_0x12606f['countnoanswerretry']+_0x12606f[_0x2654('0x47')]+_0x12606f[_0x2654('0x48')];};exports[_0x2654('0x49')]=function(_0x4b4b01){var _0x23bcf1=_[_0x2654('0x4a')](_0x4b4b01);_0x23bcf1[_0x2654('0x35')]=0xf;_0x23bcf1[_0x2654('0x3a')]='Global';return _0x23bcf1;};exports[_0x2654('0x4b')]=function(_0x59a809,_0x92d6a,_0x37a03e){var _0x3a58ab={};_0x3a58ab[_0x92d6a]=_0x59a809[_0x92d6a];_0x3a58ab[_0x2654('0x4c')]=![];_0x3a58ab[_0x2654('0x4d')]=moment()[_0x2654('0x4e')](_0x37a03e,_0x2654('0x4f'))[_0x2654('0x10')](_0x2654('0x30'));_0x3a58ab[_0x2654('0x18')]=_0x59a809[_0x2654('0x18')];_0x3a58ab[_0x2654('0x50')]=_0x59a809[_0x2654('0x50')];_0x3a58ab[_0x2654('0x1a')]=_0x59a809['VoiceQueueId']||undefined;return _0x3a58ab;};exports[_0x2654('0x51')]=function(_0x297687,_0x4995de){if(!_[_0x2654('0x13')](_0x297687)){if(_0x297687[_0x2654('0x52')]>0x0){_0x297687['pTalking']-=0x1;}else{logger['error'](_0x4995de,_0x2654('0x53'));}}else{logger[_0x2654('0x6')](_0x4995de,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports['IsNotLoggedIn']=function(_0x9e183){if(_0x9e183<=0x0){return!![];}return![];};exports['buildObj']=function(_0x579560,_0x56fb5f,_0x15aa24){_0x579560[_0x2654('0x54')]=_0x56fb5f;_0x579560['name']=_0x579560['queue'];_0x579560[_0x2654('0x55')]=_0x579560[_0x2654('0x42')];_0x579560[_0x2654('0x56')]=_0x2654('0x57');if(_0x15aa24){_0x579560[_0x2654('0x58')]=_0x15aa24['mandatoryDisposition'];}return _0x579560;};exports[_0x2654('0x59')]=function(_0x178927){var _0x214a02={};_0x214a02[_0x2654('0x5a')]=_0x178927['queue'];_0x214a02[_0x2654('0x55')]=_0x178927[_0x2654('0x42')];_0x214a02[_0x2654('0x40')]=_0x178927[_0x2654('0x40')];return _0x214a02;};exports['agentReadyId']=function(_0x266069){var _0x567c04=[];for(var _0x211190 in _0x266069){if(_0x266069['hasOwnProperty'](_0x211190)){if(!_[_0x2654('0x13')](_0x266069[_0x211190])&&_0x266069[_0x211190][_0x2654('0x35')]===_0x2654('0x5b')&&_0x266069[_0x211190][_0x2654('0x5c')]==='reachable'){_0x567c04[_0x2654('0x5d')](_0x266069[_0x211190]['id']);}}}return _0x567c04;};exports[_0x2654('0x5e')]=function(_0x1136a9){var _0x3c57db=moment()[_0x2654('0x4')](0x0);var _0x165d01=moment(_0x1136a9)[_0x2654('0x4')](0x0);return _0x3c57db[_0x2654('0x5f')](_0x165d01,_0x2654('0x5'));};exports[_0x2654('0x60')]=function(_0x3f4572){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3f4572[_0x2654('0x18')],'ListId':_0x3f4572[_0x2654('0x50')],'VoiceQueueId':_0x3f4572[_0x2654('0x1a')]||undefined,'CampaignId':_0x3f4572[_0x2654('0x61')]||undefined};};exports[_0x2654('0x62')]=function(_0x26e003){if(_0x26e003==='uniqueid'||_0x26e003===_0x2654('0x63')||_0x26e003==='queue'||_0x26e003==='type'||_0x26e003===_0x2654('0x64')||_0x26e003===_0x2654('0x65')||_0x26e003==='membername'||_0x26e003===_0x2654('0x42')||_0x26e003==='calleridname'||_0x26e003===_0x2654('0x4c')||_0x26e003===_0x2654('0x17')||_0x26e003===_0x2654('0x4d')||_0x26e003===_0x2654('0x66')||_0x26e003===_0x2654('0x46')||_0x26e003===_0x2654('0x67')||_0x26e003===_0x2654('0x68')||_0x26e003===_0x2654('0x69')||_0x26e003===_0x2654('0x6a')||_0x26e003==='callbackat'||_0x26e003===_0x2654('0x6b')||_0x26e003===_0x2654('0x18')||_0x26e003===_0x2654('0x50')||_0x26e003===_0x2654('0x38')||_0x26e003==='VoiceQueueId'||_0x26e003===_0x2654('0x6c')||_0x26e003==='xmd-voicequeueid'||_0x26e003===_0x2654('0x6d')||_0x26e003===_0x2654('0x6e')||_0x26e003===_0x2654('0x6f')||_0x26e003==='xmd-dialurl'||_0x26e003==='xmd-dialtimeout'||_0x26e003===_0x2654('0x70')||_0x26e003==='xmd-dialid'||_0x26e003===_0x2654('0x71')||_0x26e003===_0x2654('0x72')||_0x26e003===_0x2654('0x73')||_0x26e003===_0x2654('0x74')||_0x26e003==='xmd-agiafter'||_0x26e003===_0x2654('0x75')||_0x26e003===_0x2654('0x76')||_0x26e003===_0x2654('0x77')||_0x26e003===_0x2654('0x78')||_0x26e003==='rtpaudioqosjitterbridged'||_0x26e003===_0x2654('0x79')||_0x26e003===_0x2654('0x7a')||_0x26e003==='rtpaudioqosrtt'||_0x26e003===_0x2654('0x7b')||_0x26e003===_0x2654('0x76')||_0x26e003===_0x2654('0x77')||_0x26e003===_0x2654('0x78')||_0x26e003===_0x2654('0x7c')||_0x26e003===_0x2654('0x79')||_0x26e003===_0x2654('0x7a')||_0x26e003===_0x2654('0x7d')||_0x26e003==='rtpaudioqosrttbridged'||_0x26e003===_0x2654('0x7e')||_0x26e003===_0x2654('0x7f')||_0x26e003==='state'||_0x26e003===_0x2654('0x3a')){return![];}return!![];};exports[_0x2654('0x80')]=function(_0x2a06f2,_0xd23981){var _0x4231fd,_0x81a9d0,_0x2b8d0a;if(_0xd23981<=0x0){_0xd23981=0x1;}_0x4231fd=new RegExp(_0x2654('0x81')+_0xd23981+'}$');_0x81a9d0=Math[_0x2654('0x82')](0xa,_0xd23981-0x1);_0x2b8d0a=Math['pow'](0xa,_0xd23981)-0x1;return util[_0x2654('0x10')]('%s',_[_0x2654('0x83')](_0x2a06f2,_0x4231fd,_[_0x2654('0x84')](_0x81a9d0,_0x2b8d0a)));};exports['extractCalleridName']=function(_0x4e8366){var _0x263785=_0x4e8366['match'](/"(.*?)"/);return _0x263785?_0x263785[0x1]:_0x4e8366;};exports[_0x2654('0x85')]=function(_0x52734b){var _0x782889=_0x52734b[_0x2654('0x86')](/<(.*?)>/);return _0x782889?_0x782889[0x1]:_0x52734b;};
\ No newline at end of file
+var _0x233d=['rtpaudioqosloss','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','extractCalleridName','match','extractCalleridNumber','util','lodash','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','loggerCatch','error','inspect','logger','info','logger2','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','updatedAt','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','YYYY-MM-DD\x20HH:mm:ss','ringtime','logLookAgent','membername','logCustomer','talktime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','timeout','totalGlobal','countcongestionretry','countnosuchnumberretry','cloneAction','clone','Global','active','scheduledat','add','minutes','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','interface','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','seconds','createBody','filterKey','idContact','type','dialAnswer','countbusyretry','countglobal','callbackuniqueid','callbackat','recallme','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-cdrtype','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged'];(function(_0x50e40b,_0x338d17){var _0x2608b7=function(_0x4ded5e){while(--_0x4ded5e){_0x50e40b['push'](_0x50e40b['shift']());}};_0x2608b7(++_0x338d17);}(_0x233d,0x121));var _0xd233=function(_0x44b346,_0xeb097d){_0x44b346=_0x44b346-0x0;var _0x1c2f2b=_0x233d[_0x44b346];return _0x1c2f2b;};'use strict';var util=require(_0xd233('0x0'));var _=require(_0xd233('0x1'));var moment=require('moment');var logger=require(_0xd233('0x2'))(_0xd233('0x3'));var ipAgi=process[_0xd233('0x4')][_0xd233('0x5')]||_0xd233('0x6');function getSeconds(_0x1f57c4,_0x3b37c7){var _0x327151=moment(_0x1f57c4)[_0xd233('0x7')](0x0);var _0x5671c0=moment(_0x3b37c7)[_0xd233('0x7')](0x0);return _0x327151[_0xd233('0x8')](_0x5671c0,'seconds');}exports[_0xd233('0x9')]=function(_0x54c84c){return function(_0x51d06f){logger[_0xd233('0xa')](_0x54c84c,util[_0xd233('0xb')](_0x51d06f,{'showHidden':![],'depth':null}));};};exports[_0xd233('0xc')]=function(_0x155b47,_0x3e89cb){logger[_0xd233('0xd')](_0x155b47,util[_0xd233('0xb')](_0x3e89cb,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x34b51d,_0x5515a7){logger[_0xd233('0xa')](_0x34b51d,util[_0xd233('0xb')](_0x5515a7,{'showHidden':![],'depth':null}));};exports[_0xd233('0xe')]=function(_0x4593e1){return function(_0x54c6b2){logger[_0xd233('0xd')](_0x4593e1,util[_0xd233('0xb')](_0x54c6b2,{'showHidden':![],'depth':null}));};};exports[_0xd233('0xf')]=function(_0x14f78f,_0x195fb8,_0x3cfb00){return{'message':_0x14f78f,'unlock':_0x195fb8,'active':_0x3cfb00};};exports[_0xd233('0x10')]=function(_0x539934,_0x2f52c2,_0x59f9b3){if(!_[_0xd233('0x11')](_0x59f9b3)&&_0xd233('0x12')===typeof _0x59f9b3&&!_[_0xd233('0x13')](_0x59f9b3)){if(!_[_0xd233('0x11')](_0x2f52c2)&&_0xd233('0x12')===typeof _0x2f52c2&&!_['isEmpty'](_0x2f52c2)){return util[_0xd233('0x14')](_0xd233('0x15'),_0x2f52c2,_0x59f9b3);}return util[_0xd233('0x14')](_0xd233('0x15'),_0x59f9b3,_0x59f9b3);}if(!_['isUndefined'](_0x539934)&&_0xd233('0x12')===typeof _0x539934&&!_[_0xd233('0x13')](_0x539934)){return _0x539934;}return _0xd233('0x16');};exports['isActive']=function(_0x15f69a){if(_[_0xd233('0x17')](_0x15f69a)){return![];}return _0x15f69a;};exports[_0xd233('0x18')]=function(_0x2dacb7,_0x588b89,_0x373330,_0x2bf759,_0x3bfd9d,_0x26e98a){var _0x22eed1={'XMD-QUEUE':_0x588b89[_0xd233('0x19')]?_0x588b89[_0xd233('0x19')][_0xd233('0x1a')]:'','XMD-CALLERID':_0x2bf759,'XMD-CALLERID-PREVIEW':_0x26e98a?util[_0xd233('0x14')](_0xd233('0x15'),_0x26e98a[_0xd233('0x1b')],_0x26e98a[_0xd233('0x1c')]):_0x2bf759,'XMD-DIALID':_0x3bfd9d,'XMD-CONTACTID':_0x588b89[_0xd233('0x1d')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x2bf759,'XMD-VOICEQUEUEID':_0x588b89[_0xd233('0x1e')],'XMD-DIALCHANNEL':_0x373330,'XMD-DIALTIMEOUT':_0x2dacb7[_0xd233('0x1f')]||0x1e,'XMD-DIALOPTIONS':util[_0xd233('0x14')](_0xd233('0x20'),_0x2dacb7[_0xd233('0x21')]?'g':'',_['isEmpty'](_0x2dacb7[_0xd233('0x22')])?'':_0xd233('0x23')),'XMD-DIALURL':_0x2dacb7[_0xd233('0x24')]||'','XMD-AGI':_0x2dacb7[_0xd233('0x25')]?util[_0xd233('0x14')](_0xd233('0x26'),ipAgi,_0x2dacb7[_0xd233('0x25')]):_0xd233('0x27'),'XMD-AGIAFTER':_0x2dacb7['dialQueueProject2']?util[_0xd233('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x2dacb7[_0xd233('0x21')]):_0xd233('0x27'),'XMD-ORIGINATECALLERIDNUM':_0x26e98a?_0x26e98a[_0xd233('0x28')]:'','XMD-ORIGINATECALLERIDNAME':_0x26e98a?_0x26e98a[_0xd233('0x29')]:'','XMD-DESTINATION':_0xd233('0x2a'),'SIPADDHEADER':_0xd233('0x2b')};if(!_[_0xd233('0x13')](_0x2dacb7[_0xd233('0x22')])){_0x22eed1[util[_0xd233('0x14')]('%s',_0xd233('0x2c'))]=_0x2dacb7[_0xd233('0x22')];_0x22eed1[util[_0xd233('0x14')]('%s',_0xd233('0x2d'))]=_0x3bfd9d;}if(_0x588b89&&_0x588b89['Contact']){for(var _0x545dfb in _0x588b89[_0xd233('0x2e')]){if(_0x588b89[_0xd233('0x2e')][_0xd233('0x2f')](_0x545dfb)){if(!_[_0xd233('0x17')](_0x588b89[_0xd233('0x2e')][_0x545dfb])&&_0x545dfb!=='id'&&_0x545dfb!==_0xd233('0x30')&&_0x545dfb!=='createdAt'&&_0x545dfb!==_0xd233('0x31')){_0x22eed1[util[_0xd233('0x14')]('%s%s',_0xd233('0x32'),_[_0xd233('0x33')](_0x545dfb))]=_0x588b89[_0xd233('0x2e')][_0x545dfb];}}}}return _0x22eed1;};exports[_0xd233('0x34')]=function(_0x41bddd){var _0x1b1146={};for(var _0x2718e8 in _0x41bddd){if(_0x41bddd[_0xd233('0x2f')](_0x2718e8)){_0x1b1146[util[_0xd233('0x14')]('%s',_[_0xd233('0x35')](_0x2718e8))]=_0x41bddd[_0x2718e8];}}return{'variables':_0x1b1146};};exports[_0xd233('0x36')]=function(_0x27084e,_0x18a4b9){if(!_[_0xd233('0x17')](_0x27084e)){if(_0x27084e['hasOwnProperty'](_0xd233('0x37'))){if(_0x27084e['originated']>0x0){_0x27084e[_0xd233('0x37')]-=0x1;}else{logger[_0xd233('0xa')](_0xd233('0x38'),_0x18a4b9);}}}else{logger[_0xd233('0xa')](_0xd233('0x39'),_0x18a4b9);}};exports['logBlacklist']=function(_0x4efd75){var _0x4d4735=moment()[_0xd233('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x4efd75[_0xd233('0x3a')]=0xd;_0x4efd75[_0xd233('0x3b')]=_0xd233('0x3c');_0x4efd75[_0xd233('0x3d')]=_0x4d4735;_0x4efd75[_0xd233('0x3e')]=_0x4d4735;_0x4efd75[_0xd233('0x3f')]=_0x4d4735;};exports[_0xd233('0x40')]=function(_0x3dd8cc,_0x3653fb,_0x4183ab){var _0x187dc0=moment()['format'](_0xd233('0x41'));_0x3dd8cc[_0xd233('0x3a')]=_0x3653fb;_0x3dd8cc[_0xd233('0x3b')]=_0x4183ab;_0x3dd8cc[_0xd233('0x3e')]=_0x187dc0;_0x3dd8cc[_0xd233('0x42')]=getSeconds(_0x3dd8cc['responsetime'],_0x3dd8cc['starttime']);};exports[_0xd233('0x43')]=function(_0x5d578f,_0x7ce6f9,_0x5d780e){_0x5d578f[_0xd233('0x44')]=_0x7ce6f9;_0x5d578f['UserId']=_0x5d780e;};exports[_0xd233('0x45')]=function(_0x2ebc82,_0x5eb1e3,_0x14a1d8){var _0x498068=moment()[_0xd233('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x2ebc82[_0xd233('0x3a')]=_0x5eb1e3;_0x2ebc82[_0xd233('0x3b')]=_0x14a1d8;_0x2ebc82[_0xd233('0x3e')]=_0x2ebc82['responsetime']?_0x2ebc82[_0xd233('0x3e')]:_0x498068;_0x2ebc82[_0xd233('0x3f')]=_0x2ebc82[_0xd233('0x3f')]?_0x2ebc82[_0xd233('0x3f')]:_0x498068;_0x2ebc82['ringtime']=getSeconds(_0x2ebc82[_0xd233('0x3e')]||0x0,_0x2ebc82[_0xd233('0x3d')]||0x0);_0x2ebc82[_0xd233('0x46')]=_0x2ebc82['answertime']?getSeconds(_0x2ebc82['endtime'],_0x2ebc82['answertime']):0x0;};exports[_0xd233('0x47')]=function(_0x4a7433){return _0x4a7433===_0xd233('0x48');};exports[_0xd233('0x49')]=function(_0x2a65cc,_0x454384,_0x51e13b,_0x3360a9,_0x5b00f1){var _0x202e94=_0x3360a9?_0xd233('0x4a'):_0x2a65cc[_0xd233('0x1b')];_0x202e94=_0x5b00f1?_0xd233('0x4b'):_0x202e94;return{'actionid':_0x2a65cc[_0xd233('0x4c')],'action':_0xd233('0x4d'),'channel':_0x2a65cc[_0xd233('0x4e')],'callerid':util[_0xd233('0x14')]('\x22%s\x22\x20<%s>',_0x202e94,_0x2a65cc[_0xd233('0x1c')]),'Exten':_0xd233('0x2a'),'Context':'from-sip','Priority':'1','variable':_0x51e13b,'timeout':(_0x454384[_0xd233('0x4f')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2a65cc[_0xd233('0x4c')]};};exports[_0xd233('0x50')]=function(_0xee7e79){return _0xee7e79['countbusyretry']+_0xee7e79[_0xd233('0x51')]+_0xee7e79['countnoanswerretry']+_0xee7e79['countagentrejectretry']+_0xee7e79[_0xd233('0x52')];};exports[_0xd233('0x53')]=function(_0x2a2408){var _0x561c1a=_[_0xd233('0x54')](_0x2a2408);_0x561c1a[_0xd233('0x3a')]=0xf;_0x561c1a[_0xd233('0x3b')]=_0xd233('0x55');return _0x561c1a;};exports['scheduledAt']=function(_0x321723,_0x4bad93,_0x7e63f1){var _0x32dc8c={};_0x32dc8c[_0x4bad93]=_0x321723[_0x4bad93];_0x32dc8c[_0xd233('0x56')]=![];_0x32dc8c[_0xd233('0x57')]=moment()[_0xd233('0x58')](_0x7e63f1,_0xd233('0x59'))[_0xd233('0x14')](_0xd233('0x41'));_0x32dc8c[_0xd233('0x1d')]=_0x321723[_0xd233('0x1d')];_0x32dc8c[_0xd233('0x5a')]=_0x321723[_0xd233('0x5a')];_0x32dc8c[_0xd233('0x1e')]=_0x321723[_0xd233('0x1e')]||undefined;return _0x32dc8c;};exports['decrementTalkink']=function(_0x10029d,_0x20d5f3){if(!_[_0xd233('0x17')](_0x10029d)){if(_0x10029d[_0xd233('0x5b')]>0x0){_0x10029d[_0xd233('0x5b')]-=0x1;}else{logger[_0xd233('0xa')](_0x20d5f3,_0xd233('0x5c'));}}else{logger[_0xd233('0xa')](_0x20d5f3,_0xd233('0x5d'));}};exports[_0xd233('0x5e')]=function(_0x327e7e){if(_0x327e7e<=0x0){return!![];}return![];};exports['buildObj']=function(_0x1409b0,_0x23963b,_0x4f4cf4){_0x1409b0[_0xd233('0x5f')]=_0x23963b;_0x1409b0['name']=_0x1409b0[_0xd233('0x60')];_0x1409b0[_0xd233('0x61')]=_0x1409b0['channelAgent'];_0x1409b0['motionChannel']='voice';if(_0x4f4cf4){_0x1409b0[_0xd233('0x62')]=_0x4f4cf4['mandatoryDisposition'];}return _0x1409b0;};exports[_0xd233('0x63')]=function(_0x35b236){var _0x45065c={};_0x45065c['queue']=_0x35b236[_0xd233('0x60')];_0x45065c['interface']=_0x35b236[_0xd233('0x4e')];_0x45065c['uniqueid']=_0x35b236[_0xd233('0x4c')];return _0x45065c;};exports[_0xd233('0x64')]=function(_0x490c65){var _0x477f2f=[];for(var _0xbc5423 in _0x490c65){if(_0x490c65[_0xd233('0x2f')](_0xbc5423)){if(!_[_0xd233('0x17')](_0x490c65[_0xbc5423])&&_0x490c65[_0xbc5423][_0xd233('0x3a')]===_0xd233('0x65')&&_0x490c65[_0xbc5423][_0xd233('0x66')]==='reachable'){_0x477f2f['push'](_0x490c65[_0xbc5423]['id']);}}}return _0x477f2f;};exports['getDiff']=function(_0x44f27c){var _0x28c89a=moment()[_0xd233('0x7')](0x0);var _0x317689=moment(_0x44f27c)['milliseconds'](0x0);return _0x28c89a[_0xd233('0x8')](_0x317689,_0xd233('0x67'));};exports[_0xd233('0x68')]=function(_0x41ea97){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x41ea97[_0xd233('0x1d')],'ListId':_0x41ea97[_0xd233('0x5a')],'VoiceQueueId':_0x41ea97[_0xd233('0x1e')]||undefined,'CampaignId':_0x41ea97['CampaignId']||undefined};};exports[_0xd233('0x69')]=function(_0x2ec670){if(_0x2ec670===_0xd233('0x4c')||_0x2ec670===_0xd233('0x6a')||_0x2ec670==='queue'||_0x2ec670===_0xd233('0x6b')||_0x2ec670==='campaigntype'||_0x2ec670===_0xd233('0x6c')||_0x2ec670==='membername'||_0x2ec670==='channelAgent'||_0x2ec670===_0xd233('0x1b')||_0x2ec670===_0xd233('0x56')||_0x2ec670===_0xd233('0x1c')||_0x2ec670===_0xd233('0x57')||_0x2ec670===_0xd233('0x6d')||_0x2ec670===_0xd233('0x51')||_0x2ec670==='countnoanswerretry'||_0x2ec670===_0xd233('0x6e')||_0x2ec670==='callback'||_0x2ec670===_0xd233('0x6f')||_0x2ec670===_0xd233('0x70')||_0x2ec670===_0xd233('0x71')||_0x2ec670==='ContactId'||_0x2ec670===_0xd233('0x5a')||_0x2ec670===_0xd233('0x72')||_0x2ec670===_0xd233('0x1e')||_0x2ec670===_0xd233('0x73')||_0x2ec670===_0xd233('0x74')||_0x2ec670===_0xd233('0x75')||_0x2ec670==='xmd-phone'||_0x2ec670===_0xd233('0x76')||_0x2ec670===_0xd233('0x77')||_0x2ec670===_0xd233('0x78')||_0x2ec670===_0xd233('0x79')||_0x2ec670===_0xd233('0x7a')||_0x2ec670===_0xd233('0x7b')||_0x2ec670==='xmd-contactid'||_0x2ec670===_0xd233('0x7c')||_0x2ec670==='xmd-callerid'||_0x2ec670==='xmd-agiafter'||_0x2ec670==='xmd-agi'||_0x2ec670==='rtpaudioqos'||_0x2ec670===_0xd233('0x7d')||_0x2ec670===_0xd233('0x7e')||_0x2ec670===_0xd233('0x7f')||_0x2ec670==='rtpaudioqosloss'||_0x2ec670===_0xd233('0x80')||_0x2ec670===_0xd233('0x81')||_0x2ec670===_0xd233('0x82')||_0x2ec670==='rtpaudioqos'||_0x2ec670===_0xd233('0x7d')||_0x2ec670===_0xd233('0x7e')||_0x2ec670===_0xd233('0x7f')||_0x2ec670===_0xd233('0x83')||_0x2ec670===_0xd233('0x80')||_0x2ec670==='rtpaudioqosrtt'||_0x2ec670===_0xd233('0x82')||_0x2ec670==='bridgepeer'||_0x2ec670===_0xd233('0x84')||_0x2ec670===_0xd233('0x3a')||_0x2ec670===_0xd233('0x3b')){return![];}return!![];};exports[_0xd233('0x85')]=function(_0x2e928c,_0x397f00){var _0x196b86,_0x3cfdb2,_0x3ac458;if(_0x397f00<=0x0){_0x397f00=0x1;}_0x196b86=new RegExp(_0xd233('0x86')+_0x397f00+'}$');_0x3cfdb2=Math[_0xd233('0x87')](0xa,_0x397f00-0x1);_0x3ac458=Math[_0xd233('0x87')](0xa,_0x397f00)-0x1;return util[_0xd233('0x14')]('%s',_[_0xd233('0x88')](_0x2e928c,_0x196b86,_['random'](_0x3cfdb2,_0x3ac458)));};exports[_0xd233('0x89')]=function(_0x61e9f0){var _0x1db5fa=_0x61e9f0[_0xd233('0x8a')](/"(.*?)"/);return _0x1db5fa?_0x1db5fa[0x1]:_0x61e9f0;};exports[_0xd233('0x8b')]=function(_0x53c936){var _0x357edf=_0x53c936[_0xd233('0x8a')](/<(.*?)>/);return _0x357edf?_0x357edf[0x1]:_0x53c936;};
\ No newline at end of file
index 3475345..19dc171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb98e=['string','boolean','queuepause','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd'];(function(_0x53caa9,_0x47b062){var _0x59829e=function(_0x2c7e70){while(--_0x2c7e70){_0x53caa9['push'](_0x53caa9['shift']());}};_0x59829e(++_0x47b062);}(_0xb98e,0x133));var _0xeb98=function(_0x487245,_0x1f7420){_0x487245=_0x487245-0x0;var _0x161c86=_0xb98e[_0x487245];return _0x161c86;};'use strict';exports[_0xeb98('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xeb98('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0xeb98('0x2'),'required':![]}};exports['queueremove']={'queue':{'type':_0xeb98('0x1'),'required':!![]},'interface':{'type':_0xeb98('0x1'),'required':!![]}};exports[_0xeb98('0x3')]={'interface':{'type':'string','required':!![]},'paused':{'type':_0xeb98('0x2')},'reason':{'type':_0xeb98('0x1'),'required':![]}};exports['reload']={'module':{'type':'string','required':![]}};exports[_0xeb98('0x4')]={'uniqueid':{'type':'string','required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0xeb98('0x1'),'required':!![]},'filename':{'type':_0xeb98('0x1')},'format':{'type':_0xeb98('0x1')},'mixmonitorid':{'type':_0xeb98('0x1')}};exports[_0xeb98('0x5')]={'uniqueid':{'type':_0xeb98('0x1'),'required':!![]}};exports[_0xeb98('0x6')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0xeb98('0x1')}};
\ No newline at end of file
+var _0xc421=['queueadd','string','number','boolean','queueremove','queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect'];(function(_0x479509,_0x1daf8a){var _0x382da8=function(_0x39d77c){while(--_0x39d77c){_0x479509['push'](_0x479509['shift']());}};_0x382da8(++_0x1daf8a);}(_0xc421,0xe7));var _0x1c42=function(_0x577648,_0x156c97){_0x577648=_0x577648-0x0;var _0x4c067e=_0xc421[_0x577648];return _0x4c067e;};'use strict';exports[_0x1c42('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0x1c42('0x1'),'required':!![]},'membername':{'type':_0x1c42('0x1'),'required':!![]},'penalty':{'type':_0x1c42('0x2'),'required':![]},'paused':{'type':_0x1c42('0x3'),'required':![]}};exports[_0x1c42('0x4')]={'queue':{'type':_0x1c42('0x1'),'required':!![]},'interface':{'type':_0x1c42('0x1'),'required':!![]}};exports[_0x1c42('0x5')]={'interface':{'type':_0x1c42('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x1c42('0x1'),'required':![]}};exports[_0x1c42('0x6')]={'module':{'type':_0x1c42('0x1'),'required':![]}};exports[_0x1c42('0x7')]={'uniqueid':{'type':_0x1c42('0x1'),'required':!![]}};exports[_0x1c42('0x8')]={'uniqueid':{'type':_0x1c42('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x1c42('0x1')},'mixmonitorid':{'type':_0x1c42('0x1')}};exports[_0x1c42('0x9')]={'uniqueid':{'type':_0x1c42('0x1'),'required':!![]}};exports[_0x1c42('0xa')]={'uniqueid':{'type':_0x1c42('0x1'),'required':!![]},'exten':{'type':_0x1c42('0x1'),'required':!![]},'context':{'type':_0x1c42('0x1')}};
\ No newline at end of file
index 5990773..f997b99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4131=['initVoiceCallReports','duration','ANSWERED','billableseconds','SquareProject','initVoiceExtensions','initFaxAccounts','exports','bluebird','util','lodash','moment','../model/telephone','../model/trunk','../model/voiceQueue','../model/campaign','../model/voiceExtension','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/dynamics365Account','agents','telephones','trunks','voiceQueues','campaigns','templates','outbound','voiceExtensions','outboundChannels','settings','zendeskAccounts','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','hasOwnProperty','format','SIP/%s','name','mapKeys','isNil','interface','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerAgiCallsDay','prototype','mergeFromDatabase','initAgents','isUndefined','initTelephones','length','initVoiceQueues','initTriggers','triggers','initZendeskAccounts','initZohoAccounts','initSugarcrmAccounts','sugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','uniqueid','queue','queuecallerabandon','diff','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallerjoinAt','queuecallercomplete','queuecallercompleteAt','queuecallerleaveAt'];(function(_0xd816e2,_0x5edac2){var _0x1f5924=function(_0x1bcbf0){while(--_0x1bcbf0){_0xd816e2['push'](_0xd816e2['shift']());}};_0x1f5924(++_0x5edac2);}(_0x4131,0x12b));var _0x1413=function(_0x5341ff,_0x1de6df){_0x5341ff=_0x5341ff-0x0;var _0x53be58=_0x4131[_0x5341ff];return _0x53be58;};'use strict';var BPromise=require(_0x1413('0x0'));var util=require(_0x1413('0x1'));var _=require(_0x1413('0x2'));var moment=require(_0x1413('0x3'));var Agent=require('../model/agent');var Telephone=require(_0x1413('0x4'));var Trunk=require(_0x1413('0x5'));var VoiceQueue=require(_0x1413('0x6'));var Trigger=require('../model/trigger');var Template=require('../model/template');var Campaign=require(_0x1413('0x7'));var VoiceExtension=require(_0x1413('0x8'));var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require(_0x1413('0x9'));var FreshdeskAccount=require(_0x1413('0xa'));var SugarcrmAccount=require(_0x1413('0xb'));var ZohoAccount=require(_0x1413('0xc'));var DeskAccount=require(_0x1413('0xd'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x1413('0xe'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x1413('0xf')]={};this[_0x1413('0x10')]={};this[_0x1413('0x11')]={};this[_0x1413('0x12')]={};this['triggers']={};this[_0x1413('0x13')]={};this[_0x1413('0x14')]={};this[_0x1413('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x1413('0x16')]={};this['channels']={};this['queueChannels']={};this[_0x1413('0x17')]={};this['timers']={};this[_0x1413('0x18')]={};this[_0x1413('0x19')]={};this[_0x1413('0x1a')]={};this['sugarcrmAccounts']={};this[_0x1413('0x1b')]={};this[_0x1413('0x1c')]={};this[_0x1413('0x1d')]={};this['vtigerAccounts']={};this[_0x1413('0x1e')]={};this[_0x1413('0x1f')]={};this[_0x1413('0x20')]={};this[_0x1413('0x21')]={};};function freeIsNotKey(_0x171232,_0xb6de44,_0x46a7c2){var _0x362cb6=_['mapKeys'](_0x171232,function(_0x46d289,_0x241560){return _0x46d289[_0x46a7c2];});for(var _0x438fa1 in _0xb6de44){if(_0xb6de44[_0x1413('0x22')](_0x438fa1)){if(!_0x362cb6[_0x438fa1]){delete _0xb6de44[_0x438fa1];}}}}function freeIsNotKeySip(_0x4db89b,_0x4ab64c){var _0x49cca6=_['mapKeys'](_0x4db89b,function(_0x586ae3,_0x3f4c19){return util[_0x1413('0x23')](_0x1413('0x24'),_0x586ae3[_0x1413('0x25')]);});for(var _0x3db46e in _0x4ab64c){if(_0x4ab64c['hasOwnProperty'](_0x3db46e)){if(!_0x49cca6[_0x3db46e]){delete _0x4ab64c[_0x3db46e];}}}}function freeIsNotKeyAgent(_0x4bdbf7,_0x37a8d8){var _0x38a5b1=_[_0x1413('0x26')](_0x4bdbf7,function(_0x58fb4d,_0xb1e49c){var _0x21d8de=_[_0x1413('0x27')](_0x58fb4d[_0x1413('0x28')])?util[_0x1413('0x23')](_0x1413('0x24'),_0x58fb4d[_0x1413('0x25')]):_0x58fb4d[_0x1413('0x28')];return _0x21d8de;});for(var _0x127074 in _0x37a8d8){if(_0x37a8d8[_0x1413('0x22')](_0x127074)){if(!_0x38a5b1[_0x127074]){delete _0x37a8d8[_0x127074];}}}}function clearVoiceCallReports(_0x2d2013){_0x2d2013[_0x1413('0x29')]=0x0;_0x2d2013[_0x1413('0x2a')]=0x0;_0x2d2013[_0x1413('0x2b')]=0x0;_0x2d2013[_0x1413('0x2c')]=0x0;_0x2d2013[_0x1413('0x2d')]=0x0;}function clearCampaigns(_0x53104b){if(!_[_0x1413('0x2e')](_0x53104b)){for(var _0x49acb8 in _0x53104b){if(_0x53104b[_0x1413('0x22')](_0x49acb8)){_0x53104b[_0x49acb8][_0x1413('0x2f')]=0x0;_0x53104b[_0x49acb8][_0x1413('0x30')]=0x0;}}}}function clearVoiceQueues(_0x29e566){if(!_[_0x1413('0x2e')](_0x29e566)){for(var _0x34a970 in _0x29e566){if(_0x29e566[_0x1413('0x22')](_0x34a970)){_0x29e566[_0x34a970][_0x1413('0x29')]=0x0;_0x29e566[_0x34a970][_0x1413('0x2a')]=0x0;_0x29e566[_0x34a970][_0x1413('0x31')]=0x0;_0x29e566[_0x34a970][_0x1413('0x32')]=0x0;_0x29e566[_0x34a970][_0x1413('0x2b')]=0x0;_0x29e566[_0x34a970]['sumDuration']=0x0;_0x29e566[_0x34a970]['sumBillable']=0x0;_0x29e566[_0x34a970]['outboundAnswerAgiCallsDay']=0x0;_0x29e566[_0x34a970]['outboundNoAnswerCallsDay']=0x0;_0x29e566[_0x34a970]['outboundBusyCallsDay']=0x0;_0x29e566[_0x34a970][_0x1413('0x33')]=0x0;_0x29e566[_0x34a970][_0x1413('0x34')]=0x0;_0x29e566[_0x34a970][_0x1413('0x35')]=0x0;_0x29e566[_0x34a970][_0x1413('0x36')]=0x0;_0x29e566[_0x34a970]['outboundDropCallsDayCallersExit']=0x0;_0x29e566[_0x34a970]['outboundBlacklistCallsDay']=0x0;_0x29e566[_0x34a970]['outboundOriginateFailureCallsDay']=0x0;_0x29e566[_0x34a970][_0x1413('0x37')]=0x0;_0x29e566[_0x34a970][_0x1413('0x38')]=0x0;_0x29e566[_0x34a970][_0x1413('0x39')]=0x0;_0x29e566[_0x34a970]['outboundAnswerCallsDay']=0x0;_0x29e566[_0x34a970]['queueStatusComplete']=!![];}}}}Realtime[_0x1413('0x3a')][_0x1413('0x3b')]=function(_0x49ddad,_0x458a36){for(var _0x15d999 in _0x458a36){if(_0x49ddad['hasOwnProperty'](_0x15d999)){_0x49ddad[_0x15d999]=_0x458a36[_0x15d999];}}};Realtime[_0x1413('0x3a')][_0x1413('0x3c')]=function(){var _0x5047fd=this;return function(_0x1adc69){if(_0x1adc69){freeIsNotKeyAgent(_0x1adc69,_0x5047fd[_0x1413('0xf')]);for(var _0x316425=0x0,_0x10ffcf={},_0x570430={};_0x316425<_0x1adc69['length'];_0x316425+=0x1){_0x10ffcf=_0x1adc69[_0x316425];var _0x523894=_[_0x1413('0x27')](_0x10ffcf[_0x1413('0x28')])?util[_0x1413('0x23')](_0x1413('0x24'),_0x10ffcf['name']):_0x10ffcf[_0x1413('0x28')];if(_[_0x1413('0x3d')](_0x5047fd[_0x1413('0xf')][_0x523894])){_0x5047fd[_0x1413('0xf')][_0x523894]=new Agent(_0x10ffcf);}else{_0x5047fd['mergeFromDatabase'](_0x5047fd[_0x1413('0xf')][_0x523894],_0x10ffcf);}}}return _0x5047fd['agents'];};};Realtime[_0x1413('0x3a')][_0x1413('0x3e')]=function(){var _0x1a8a2a=this;return function(_0x2b8798){if(_0x2b8798){freeIsNotKeySip(_0x2b8798,_0x1a8a2a[_0x1413('0x10')]);for(var _0x43701e=0x0,_0x347377={},_0x3da1d5={};_0x43701e<_0x2b8798[_0x1413('0x3f')];_0x43701e+=0x1){_0x347377=_0x2b8798[_0x43701e];if(_[_0x1413('0x3d')](_0x1a8a2a[_0x1413('0x10')][util['format'](_0x1413('0x24'),_0x347377['name'])])){_0x1a8a2a[_0x1413('0x10')][util[_0x1413('0x23')](_0x1413('0x24'),_0x347377[_0x1413('0x25')])]=new Telephone(_0x347377);}else{_0x1a8a2a['mergeFromDatabase'](_0x1a8a2a[_0x1413('0x10')][util[_0x1413('0x23')](_0x1413('0x24'),_0x347377[_0x1413('0x25')])],_0x347377);}}}return _0x1a8a2a[_0x1413('0x10')];};};Realtime[_0x1413('0x3a')]['initTrunks']=function(){var _0x45ff10=this;return function(_0x40eb47){if(_0x40eb47){freeIsNotKeySip(_0x40eb47,_0x45ff10[_0x1413('0x11')]);for(var _0x19f81b=0x0,_0x1111d6={},_0x385e41={};_0x19f81b<_0x40eb47[_0x1413('0x3f')];_0x19f81b+=0x1){_0x1111d6=_0x40eb47[_0x19f81b];if(_['isUndefined'](_0x45ff10[_0x1413('0x11')][util['format'](_0x1413('0x24'),_0x1111d6[_0x1413('0x25')])])){_0x45ff10['trunks'][util[_0x1413('0x23')]('SIP/%s',_0x1111d6[_0x1413('0x25')])]=new Trunk(_0x1111d6);}else{_0x45ff10[_0x1413('0x3b')](_0x45ff10['trunks'][util['format'](_0x1413('0x24'),_0x1111d6[_0x1413('0x25')])],_0x1111d6);}}}return _0x45ff10[_0x1413('0x11')];};};Realtime[_0x1413('0x3a')][_0x1413('0x40')]=function(){var _0x343699=this;return function(_0x331fcd){if(_0x331fcd){freeIsNotKey(_0x331fcd,_0x343699['voiceQueues'],'name');for(var _0x3d5b1e=0x0,_0x22b0b5={},_0x5ffdf1={};_0x3d5b1e<_0x331fcd[_0x1413('0x3f')];_0x3d5b1e+=0x1){_0x22b0b5=_0x331fcd[_0x3d5b1e];if(_['isUndefined'](_0x343699[_0x1413('0x12')][_0x22b0b5['name']])){_0x343699[_0x1413('0x12')][_0x22b0b5[_0x1413('0x25')]]=new VoiceQueue(_0x22b0b5);}else{_0x343699[_0x1413('0x3b')](_0x343699[_0x1413('0x12')][_0x22b0b5[_0x1413('0x25')]],_0x22b0b5);}}}return _0x343699[_0x1413('0x12')];};};Realtime['prototype'][_0x1413('0x41')]=function(){var _0x457959=this;return function(_0x5f1d06){if(_0x5f1d06){freeIsNotKey(_0x5f1d06,_0x457959['triggers'],'id');for(var _0x332db6=0x0,_0x2a6d07={},_0x3947c9={};_0x332db6<_0x5f1d06['length'];_0x332db6+=0x1){_0x2a6d07=_0x5f1d06[_0x332db6];if(_[_0x1413('0x3d')](_0x457959['triggers'][_0x2a6d07['id']])){_0x457959[_0x1413('0x42')][_0x2a6d07['id']]=new Trigger(_0x2a6d07);}else{_0x457959[_0x1413('0x3b')](_0x457959['triggers'][_0x2a6d07['id']],_0x2a6d07);}}}return _0x457959[_0x1413('0x42')];};};Realtime[_0x1413('0x3a')]['initTemplates']=function(){var _0x46101a=this;return function(_0x5688a8){if(_0x5688a8){freeIsNotKey(_0x5688a8,_0x46101a[_0x1413('0x14')],'id');for(var _0x408eef=0x0,_0x4bb72f={},_0x5d5d81={};_0x408eef<_0x5688a8[_0x1413('0x3f')];_0x408eef+=0x1){_0x4bb72f=_0x5688a8[_0x408eef];if(_['isUndefined'](_0x46101a['templates'][_0x4bb72f['id']])){_0x46101a[_0x1413('0x14')][_0x4bb72f['id']]=new Template(_0x4bb72f);}else{_0x46101a[_0x1413('0x3b')](_0x46101a[_0x1413('0x14')][_0x4bb72f['id']],_0x4bb72f);}}}return _0x46101a[_0x1413('0x14')];};};Realtime[_0x1413('0x3a')][_0x1413('0x43')]=function(){var _0x353c60=this;return function(_0xf74582){if(_0xf74582){freeIsNotKey(_0xf74582,_0x353c60['zendeskAccounts'],'id');for(var _0xd3cd1=0x0,_0x393390={},_0x1b99f1={};_0xd3cd1<_0xf74582['length'];_0xd3cd1+=0x1){_0x393390=_0xf74582[_0xd3cd1];if(_[_0x1413('0x3d')](_0x353c60['zendeskAccounts'][_0x393390['id']])){_0x353c60[_0x1413('0x19')][_0x393390['id']]=new ZendeskAccount(_0x393390);}else{_0x353c60[_0x1413('0x3b')](_0x353c60[_0x1413('0x19')][_0x393390['id']],_0x393390);}}}return _0x353c60[_0x1413('0x19')];};};Realtime[_0x1413('0x3a')]['initSalesforceAccounts']=function(){var _0x2ab441=this;return function(_0x403804){if(_0x403804){freeIsNotKey(_0x403804,_0x2ab441[_0x1413('0x1a')],'id');for(var _0x513bc2=0x0,_0x4cf7a4={},_0x4deec6={};_0x513bc2<_0x403804[_0x1413('0x3f')];_0x513bc2+=0x1){_0x4cf7a4=_0x403804[_0x513bc2];if(_[_0x1413('0x3d')](_0x2ab441['salesforceAccounts'][_0x4cf7a4['id']])){_0x2ab441[_0x1413('0x1a')][_0x4cf7a4['id']]=new SalesforceAccount(_0x4cf7a4);}else{_0x2ab441[_0x1413('0x3b')](_0x2ab441['salesforceAccounts'][_0x4cf7a4['id']],_0x4cf7a4);}}}return _0x2ab441[_0x1413('0x1a')];};};Realtime[_0x1413('0x3a')]['initFreshdeskAccounts']=function(){var _0x47305c=this;return function(_0x1ed6f1){if(_0x1ed6f1){freeIsNotKey(_0x1ed6f1,_0x47305c[_0x1413('0x1b')],'id');for(var _0x4b5e34=0x0,_0x5b2e3d={},_0x1c6843={};_0x4b5e34<_0x1ed6f1[_0x1413('0x3f')];_0x4b5e34+=0x1){_0x5b2e3d=_0x1ed6f1[_0x4b5e34];if(_[_0x1413('0x3d')](_0x47305c[_0x1413('0x1b')][_0x5b2e3d['id']])){_0x47305c[_0x1413('0x1b')][_0x5b2e3d['id']]=new FreshdeskAccount(_0x5b2e3d);}else{_0x47305c[_0x1413('0x3b')](_0x47305c[_0x1413('0x1b')][_0x5b2e3d['id']],_0x5b2e3d);}}}return _0x47305c['freshdeskAccounts'];};};Realtime[_0x1413('0x3a')][_0x1413('0x44')]=function(){var _0x13a8ef=this;return function(_0x35cbc3){if(_0x35cbc3){freeIsNotKey(_0x35cbc3,_0x13a8ef['zohoAccounts'],'id');for(var _0x1f9003=0x0,_0x529a6b={},_0x1c4942={};_0x1f9003<_0x35cbc3[_0x1413('0x3f')];_0x1f9003+=0x1){_0x529a6b=_0x35cbc3[_0x1f9003];if(_['isUndefined'](_0x13a8ef[_0x1413('0x1c')][_0x529a6b['id']])){_0x13a8ef['zohoAccounts'][_0x529a6b['id']]=new ZohoAccount(_0x529a6b);}else{_0x13a8ef['mergeFromDatabase'](_0x13a8ef[_0x1413('0x1c')][_0x529a6b['id']],_0x529a6b);}}}return _0x13a8ef['zohoAccounts'];};};Realtime['prototype']['initDeskAccounts']=function(){var _0x1f92c4=this;return function(_0x4189ae){if(_0x4189ae){freeIsNotKey(_0x4189ae,_0x1f92c4[_0x1413('0x1d')],'id');for(var _0x2a0979=0x0,_0x41b317={},_0x245c46={};_0x2a0979<_0x4189ae[_0x1413('0x3f')];_0x2a0979+=0x1){_0x41b317=_0x4189ae[_0x2a0979];if(_['isUndefined'](_0x1f92c4['deskAccounts'][_0x41b317['id']])){_0x1f92c4['deskAccounts'][_0x41b317['id']]=new DeskAccount(_0x41b317);}else{_0x1f92c4[_0x1413('0x3b')](_0x1f92c4[_0x1413('0x1d')][_0x41b317['id']],_0x41b317);}}}return _0x1f92c4[_0x1413('0x1d')];};};Realtime['prototype'][_0x1413('0x45')]=function(){var _0x425b8c=this;return function(_0x3ac2f0){if(_0x3ac2f0){freeIsNotKey(_0x3ac2f0,_0x425b8c['sugarcrmAccounts'],'id');for(var _0x4a04f9=0x0,_0x28f859={},_0x3e90aa={};_0x4a04f9<_0x3ac2f0[_0x1413('0x3f')];_0x4a04f9+=0x1){_0x28f859=_0x3ac2f0[_0x4a04f9];if(_[_0x1413('0x3d')](_0x425b8c[_0x1413('0x46')][_0x28f859['id']])){_0x425b8c[_0x1413('0x46')][_0x28f859['id']]=new SugarcrmAccount(_0x28f859);}else{_0x425b8c['mergeFromDatabase'](_0x425b8c[_0x1413('0x46')][_0x28f859['id']],_0x28f859);}}}return _0x425b8c[_0x1413('0x46')];};};Realtime[_0x1413('0x3a')][_0x1413('0x47')]=function(){var _0x408be6=this;return function(_0x253787){if(_0x253787){freeIsNotKey(_0x253787,_0x408be6[_0x1413('0x48')],'id');for(var _0x3dfe00=0x0,_0x4123d1={},_0x33399b={};_0x3dfe00<_0x253787[_0x1413('0x3f')];_0x3dfe00+=0x1){_0x4123d1=_0x253787[_0x3dfe00];if(_[_0x1413('0x3d')](_0x408be6[_0x1413('0x48')][_0x4123d1['id']])){_0x408be6[_0x1413('0x48')][_0x4123d1['id']]=new VtigerAccount(_0x4123d1);}else{_0x408be6[_0x1413('0x3b')](_0x408be6[_0x1413('0x48')][_0x4123d1['id']],_0x4123d1);}}}return _0x408be6[_0x1413('0x48')];};};Realtime[_0x1413('0x3a')]['initServicenowAccounts']=function(){var _0x3c4589=this;return function(_0x36e570){if(_0x36e570){freeIsNotKey(_0x36e570,_0x3c4589[_0x1413('0x1e')],'id');for(var _0x26950f=0x0,_0x4e7e57={},_0x53af90={};_0x26950f<_0x36e570['length'];_0x26950f+=0x1){_0x4e7e57=_0x36e570[_0x26950f];if(_[_0x1413('0x3d')](_0x3c4589[_0x1413('0x1e')][_0x4e7e57['id']])){_0x3c4589[_0x1413('0x1e')][_0x4e7e57['id']]=new ServicenowAccount(_0x4e7e57);}else{_0x3c4589[_0x1413('0x3b')](_0x3c4589[_0x1413('0x1e')][_0x4e7e57['id']],_0x4e7e57);}}}return _0x3c4589['servicenowAccounts'];};};Realtime[_0x1413('0x3a')][_0x1413('0x49')]=function(){var _0x26018b=this;return function(_0x2b65ff){if(_0x2b65ff){freeIsNotKey(_0x2b65ff,_0x26018b[_0x1413('0x1f')],'id');for(var _0x44e57d=0x0,_0x1a0840={},_0x5328ba={};_0x44e57d<_0x2b65ff[_0x1413('0x3f')];_0x44e57d+=0x1){_0x1a0840=_0x2b65ff[_0x44e57d];if(_[_0x1413('0x3d')](_0x26018b[_0x1413('0x1f')][_0x1a0840['id']])){_0x26018b[_0x1413('0x1f')][_0x1a0840['id']]=new Dynamics365Account(_0x1a0840);}else{_0x26018b[_0x1413('0x3b')](_0x26018b[_0x1413('0x1f')][_0x1a0840['id']],_0x1a0840);}}}return _0x26018b['dynamics365Accounts'];};};Realtime[_0x1413('0x3a')][_0x1413('0x4a')]=function(){var _0x3d3ebd=this;return function(_0x43205a){if(_0x43205a){freeIsNotKey(_0x43205a,_0x3d3ebd[_0x1413('0x20')],'id');for(var _0x568672=0x0,_0x39bcc4={},_0x234370={};_0x568672<_0x43205a[_0x1413('0x3f')];_0x568672+=0x1){_0x39bcc4=_0x43205a[_0x568672];if(_[_0x1413('0x3d')](_0x3d3ebd['freshsalesAccounts'][_0x39bcc4['id']])){_0x3d3ebd[_0x1413('0x20')][_0x39bcc4['id']]=new FreshsalesAccount(_0x39bcc4);}else{_0x3d3ebd[_0x1413('0x3b')](_0x3d3ebd[_0x1413('0x20')][_0x39bcc4['id']],_0x39bcc4);}}}return _0x3d3ebd[_0x1413('0x20')];};};Realtime[_0x1413('0x3a')][_0x1413('0x4b')]=function(){var _0xdf08d8=this;return function(_0x5f266a){for(var _0x565cf8=0x0;_0x565cf8<_0x5f266a[_0x1413('0x3f')];_0x565cf8+=0x1){_[_0x1413('0x4c')](_0xdf08d8[_0x1413('0x12')][_0x5f266a[_0x565cf8][_0x1413('0x25')]],_0x5f266a[_0x565cf8]);}return _0xdf08d8['voiceQueues'];};};Realtime[_0x1413('0x3a')][_0x1413('0x4d')]=function(){var _0x17d0a1=this;return function(_0x271868){clearVoiceQueues(_0x17d0a1['voiceQueues']);if(_0x271868){_0x271868=_['groupBy'](_0x271868,_0x1413('0x4e'));for(var _0x2b2797 in _0x271868){if(_0x271868[_0x1413('0x22')](_0x2b2797)){var _0x1988e3={};for(var _0x313b68=0x0;_0x313b68<_0x271868[_0x2b2797][_0x1413('0x3f')];_0x313b68+=0x1){var _0x1933e1=_0x271868[_0x2b2797][_0x313b68][_0x1413('0x4f')];if(_0x17d0a1[_0x1413('0x12')][_0x1933e1]){if(_0x271868[_0x2b2797][_0x313b68]['queuecallerexit']){_0x17d0a1['voiceQueues'][_0x1933e1][_0x1413('0x31')]+=0x1;}if(_0x271868[_0x2b2797][_0x313b68][_0x1413('0x50')]){_0x17d0a1['voiceQueues'][_0x1933e1][_0x1413('0x32')]+=0x1;}_0x17d0a1[_0x1413('0x12')][_0x1933e1]['sumHoldTime']+=moment(_0x271868[_0x2b2797][_0x313b68]['queuecallerleaveAt'])[_0x1413('0x51')](moment(_0x271868[_0x2b2797][_0x313b68]['queuecallerjoinAt']),_0x1413('0x52'))||0x0;if(_0x313b68===_0x271868[_0x2b2797][_0x1413('0x3f')]-0x1){_0x17d0a1[_0x1413('0x12')][_0x1933e1]['sumDuration']+=moment(_0x271868[_0x2b2797][_0x313b68]['queuecallercompleteAt']||_0x271868[_0x2b2797][_0x313b68][_0x1413('0x53')]||_0x271868[_0x2b2797][_0x313b68][_0x1413('0x54')])[_0x1413('0x51')](moment(_0x271868[_0x2b2797][_0x313b68][_0x1413('0x55')]),_0x1413('0x52'))||0x0;_0x17d0a1[_0x1413('0x12')][_0x1933e1][_0x1413('0x29')]+=0x1;if(_0x271868[_0x2b2797][_0x313b68][_0x1413('0x56')]){_0x17d0a1[_0x1413('0x12')][_0x1933e1][_0x1413('0x2a')]+=0x1;_0x17d0a1['voiceQueues'][_0x1933e1][_0x1413('0x2d')]+=moment(_0x271868[_0x2b2797][_0x313b68][_0x1413('0x57')])[_0x1413('0x51')](moment(_0x271868[_0x2b2797][_0x313b68][_0x1413('0x58')]),_0x1413('0x52'))||0x0;}}else{_0x17d0a1[_0x1413('0x12')][_0x1933e1][_0x1413('0x2c')]+=_0x17d0a1[_0x1413('0x12')][_0x1933e1][_0x1413('0x2b')]||0x0;}}}}}}return _0x17d0a1[_0x1413('0x12')];};};Realtime[_0x1413('0x3a')][_0x1413('0x59')]=function(){var _0x23e0ad=this;return function(_0x5de74f){clearVoiceCallReports(_0x23e0ad['outbound']);if(_0x5de74f){for(var _0x444e0d=0x0;_0x444e0d<_0x5de74f[_0x1413('0x3f')];_0x444e0d+=0x1){_0x23e0ad[_0x1413('0x15')]['total']+=0x1;_0x23e0ad[_0x1413('0x15')]['sumDuration']+=_0x5de74f[_0x444e0d][_0x1413('0x5a')];if(_0x5de74f[_0x444e0d]['disposition']===_0x1413('0x5b')){_0x23e0ad[_0x1413('0x15')][_0x1413('0x2a')]+=0x1;_0x23e0ad['outbound'][_0x1413('0x2b')]+=_0x5de74f[_0x444e0d][_0x1413('0x5a')]-_0x5de74f[_0x444e0d][_0x1413('0x5c')]||0x0;_0x23e0ad[_0x1413('0x15')][_0x1413('0x2d')]+=_0x5de74f[_0x444e0d][_0x1413('0x5c')];}}}return _0x23e0ad['outbound'];};};Realtime[_0x1413('0x3a')]['initCampaigns']=function(){var _0xf55b1f=this;return function(_0x4f19b1){if(_0x4f19b1){freeIsNotKey(_0x4f19b1,_0xf55b1f['campaigns'],_0x1413('0x25'));for(var _0x3b154c=0x0,_0x2160b6={};_0x3b154c<_0x4f19b1[_0x1413('0x3f')];_0x3b154c+=0x1){_0x2160b6=_0x4f19b1[_0x3b154c];if(_[_0x1413('0x3d')](_0xf55b1f[_0x1413('0x13')][_0x2160b6[_0x1413('0x25')]])){_0xf55b1f[_0x1413('0x13')][_0x2160b6['name']]=new Campaign(_0x2160b6);}else{_0xf55b1f[_0x1413('0x3b')](_0xf55b1f[_0x1413('0x13')][_0x2160b6[_0x1413('0x25')]],_0x2160b6);_0xf55b1f[_0x1413('0x13')][_0x2160b6[_0x1413('0x25')]]['dialQueueProject']=_0x2160b6[_0x1413('0x5d')]?_0x2160b6[_0x1413('0x5d')]['name']:undefined;}}}return _0xf55b1f[_0x1413('0x13')];};};Realtime[_0x1413('0x3a')][_0x1413('0x5e')]=function(){var _0x4001ef=this;return function(_0x5c123c){if(_0x5c123c){freeIsNotKey(_0x5c123c,_0x4001ef[_0x1413('0x16')],'id');for(var _0x14ceb4=0x0,_0x19e0d9={};_0x14ceb4<_0x5c123c['length'];_0x14ceb4+=0x1){_0x19e0d9=_0x5c123c[_0x14ceb4];if(_['isUndefined'](_0x4001ef[_0x1413('0x16')][_0x19e0d9['id']])){_0x4001ef['voiceExtensions'][_0x19e0d9['id']]=new VoiceExtension(_0x19e0d9);}else{_0x4001ef['mergeFromDatabase'](_0x4001ef['voiceExtensions'][_0x19e0d9['id']],_0x19e0d9);}}}return _0x4001ef[_0x1413('0x16')];};};Realtime[_0x1413('0x3a')]['initCampaignHopperHistory']=function(){var _0x550b09=this;return function(_0x2d010e){clearCampaigns(_0x550b09['campaigns']);for(var _0x3737f5=0x0;_0x3737f5<_0x2d010e[_0x1413('0x3f')];_0x3737f5+=0x1){_['merge'](_0x550b09['campaigns'][_0x2d010e[_0x3737f5][_0x1413('0x25')]],_0x2d010e[_0x3737f5]);}return _0x550b09['campaigns'];};};Realtime['prototype'][_0x1413('0x5f')]=function(){var _0x507896=this;return function(_0x399ad0){if(_0x399ad0){freeIsNotKey(_0x399ad0,_0x507896[_0x1413('0x21')],'id');for(var _0x4978fa=0x0,_0x1ffa54={},_0x3bd646={};_0x4978fa<_0x399ad0[_0x1413('0x3f')];_0x4978fa+=0x1){_0x1ffa54=_0x399ad0[_0x4978fa];if(_[_0x1413('0x3d')](_0x507896[_0x1413('0x21')][_0x1ffa54['id']])){_0x507896[_0x1413('0x21')][_0x1ffa54['id']]=new FaxAccount(_0x1ffa54);}else{_0x507896[_0x1413('0x3b')](_0x507896['faxAccounts'][_0x1ffa54['id']],_0x1ffa54);}}}return _0x507896[_0x1413('0x21')];};};module[_0x1413('0x60')]=Realtime;
\ No newline at end of file
+var _0xad48=['uniqueid','queue','queuecallerabandon','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallerjoinAt','queuecallercomplete','queuecallercompleteAt','diff','initVoiceCallReports','disposition','duration','billableseconds','initCampaigns','campaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','merge','initFaxAccounts','exports','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','sumHoldTime','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','total','answered','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','prototype','mergeFromDatabase','initAgents','length','isUndefined','initTelephones','initTrunks','initTriggers','initZendeskAccounts','zendeskAccounts','freshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','initVoiceQueueHopperHistory','groupBy'];(function(_0xd4c41d,_0x20ecb8){var _0x50e588=function(_0x21a96f){while(--_0x21a96f){_0xd4c41d['push'](_0xd4c41d['shift']());}};_0x50e588(++_0x20ecb8);}(_0xad48,0x1ce));var _0x8ad4=function(_0x18ef81,_0x1a4170){_0x18ef81=_0x18ef81-0x0;var _0x57cc86=_0xad48[_0x18ef81];return _0x57cc86;};'use strict';var BPromise=require(_0x8ad4('0x0'));var util=require(_0x8ad4('0x1'));var _=require(_0x8ad4('0x2'));var moment=require(_0x8ad4('0x3'));var Agent=require(_0x8ad4('0x4'));var Telephone=require(_0x8ad4('0x5'));var Trunk=require(_0x8ad4('0x6'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require('../model/trigger');var Template=require(_0x8ad4('0x7'));var Campaign=require(_0x8ad4('0x8'));var VoiceExtension=require(_0x8ad4('0x9'));var ZendeskAccount=require(_0x8ad4('0xa'));var SalesforceAccount=require(_0x8ad4('0xb'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x8ad4('0xc'));var DeskAccount=require(_0x8ad4('0xd'));var VtigerAccount=require(_0x8ad4('0xe'));var ServicenowAccount=require(_0x8ad4('0xf'));var Dynamics365Account=require(_0x8ad4('0x10'));var FreshsalesAccount=require(_0x8ad4('0x11'));var FaxAccount=require(_0x8ad4('0x12'));var Realtime=function(){this[_0x8ad4('0x13')]={};this[_0x8ad4('0x14')]={};this[_0x8ad4('0x15')]={};this[_0x8ad4('0x16')]={};this[_0x8ad4('0x17')]={};this['campaigns']={};this[_0x8ad4('0x18')]={};this[_0x8ad4('0x19')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x8ad4('0x1a')]={};this[_0x8ad4('0x1b')]={};this[_0x8ad4('0x1c')]={};this[_0x8ad4('0x1d')]={};this[_0x8ad4('0x1e')]={};this[_0x8ad4('0x1f')]={};this['zendeskAccounts']={};this[_0x8ad4('0x20')]={};this[_0x8ad4('0x21')]={};this['freshdeskAccounts']={};this[_0x8ad4('0x22')]={};this[_0x8ad4('0x23')]={};this['vtigerAccounts']={};this['servicenowAccounts']={};this[_0x8ad4('0x24')]={};this[_0x8ad4('0x25')]={};this[_0x8ad4('0x26')]={};};function freeIsNotKey(_0xec36a6,_0x45af66,_0x2b2978){var _0x530f18=_[_0x8ad4('0x27')](_0xec36a6,function(_0x51148e,_0x1d0673){return _0x51148e[_0x2b2978];});for(var _0x908de7 in _0x45af66){if(_0x45af66[_0x8ad4('0x28')](_0x908de7)){if(!_0x530f18[_0x908de7]){delete _0x45af66[_0x908de7];}}}}function freeIsNotKeySip(_0xbd8d7e,_0x53a90d){var _0x57c513=_[_0x8ad4('0x27')](_0xbd8d7e,function(_0x163dff,_0x1186b2){return util[_0x8ad4('0x29')](_0x8ad4('0x2a'),_0x163dff[_0x8ad4('0x2b')]);});for(var _0x29ec32 in _0x53a90d){if(_0x53a90d['hasOwnProperty'](_0x29ec32)){if(!_0x57c513[_0x29ec32]){delete _0x53a90d[_0x29ec32];}}}}function freeIsNotKeyAgent(_0xabe9ac,_0x4ca019){var _0x32150a=_['mapKeys'](_0xabe9ac,function(_0x2f2d22,_0xc2de39){var _0x2a002a=_[_0x8ad4('0x2c')](_0x2f2d22[_0x8ad4('0x2d')])?util[_0x8ad4('0x29')](_0x8ad4('0x2a'),_0x2f2d22['name']):_0x2f2d22[_0x8ad4('0x2d')];return _0x2a002a;});for(var _0x30e5ea in _0x4ca019){if(_0x4ca019[_0x8ad4('0x28')](_0x30e5ea)){if(!_0x32150a[_0x30e5ea]){delete _0x4ca019[_0x30e5ea];}}}}function clearVoiceCallReports(_0x14e638){_0x14e638['total']=0x0;_0x14e638['answered']=0x0;_0x14e638[_0x8ad4('0x2e')]=0x0;_0x14e638['sumDuration']=0x0;_0x14e638[_0x8ad4('0x2f')]=0x0;}function clearCampaigns(_0x56cb48){if(!_[_0x8ad4('0x30')](_0x56cb48)){for(var _0xfb6d7c in _0x56cb48){if(_0x56cb48['hasOwnProperty'](_0xfb6d7c)){_0x56cb48[_0xfb6d7c][_0x8ad4('0x31')]=0x0;_0x56cb48[_0xfb6d7c][_0x8ad4('0x32')]=0x0;}}}}function clearVoiceQueues(_0x24bb8a){if(!_[_0x8ad4('0x30')](_0x24bb8a)){for(var _0x10aac8 in _0x24bb8a){if(_0x24bb8a[_0x8ad4('0x28')](_0x10aac8)){_0x24bb8a[_0x10aac8][_0x8ad4('0x33')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x34')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x35')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x36')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x2e')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x37')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x2f')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x38')]=0x0;_0x24bb8a[_0x10aac8]['outboundNoAnswerCallsDay']=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x39')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x3a')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x3b')]=0x0;_0x24bb8a[_0x10aac8]['outboundUnknownCallsDay']=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x3c')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x3d')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x3e')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x3f')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x40')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x41')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x38')]=0x0;_0x24bb8a[_0x10aac8][_0x8ad4('0x42')]=0x0;_0x24bb8a[_0x10aac8]['queueStatusComplete']=!![];}}}}Realtime[_0x8ad4('0x43')][_0x8ad4('0x44')]=function(_0x23c3b5,_0x49b50e){for(var _0x4a3161 in _0x49b50e){if(_0x23c3b5[_0x8ad4('0x28')](_0x4a3161)){_0x23c3b5[_0x4a3161]=_0x49b50e[_0x4a3161];}}};Realtime[_0x8ad4('0x43')][_0x8ad4('0x45')]=function(){var _0x1b478d=this;return function(_0x459f09){if(_0x459f09){freeIsNotKeyAgent(_0x459f09,_0x1b478d['agents']);for(var _0x1222f0=0x0,_0x41d6d2={},_0x5065a9={};_0x1222f0<_0x459f09[_0x8ad4('0x46')];_0x1222f0+=0x1){_0x41d6d2=_0x459f09[_0x1222f0];var _0x40fca6=_['isNil'](_0x41d6d2[_0x8ad4('0x2d')])?util[_0x8ad4('0x29')](_0x8ad4('0x2a'),_0x41d6d2['name']):_0x41d6d2[_0x8ad4('0x2d')];if(_[_0x8ad4('0x47')](_0x1b478d[_0x8ad4('0x13')][_0x40fca6])){_0x1b478d[_0x8ad4('0x13')][_0x40fca6]=new Agent(_0x41d6d2);}else{_0x1b478d['mergeFromDatabase'](_0x1b478d[_0x8ad4('0x13')][_0x40fca6],_0x41d6d2);}}}return _0x1b478d[_0x8ad4('0x13')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x48')]=function(){var _0x4cca33=this;return function(_0x1dc443){if(_0x1dc443){freeIsNotKeySip(_0x1dc443,_0x4cca33[_0x8ad4('0x14')]);for(var _0x4b8169=0x0,_0x5548d6={},_0x341d5e={};_0x4b8169<_0x1dc443[_0x8ad4('0x46')];_0x4b8169+=0x1){_0x5548d6=_0x1dc443[_0x4b8169];if(_[_0x8ad4('0x47')](_0x4cca33[_0x8ad4('0x14')][util[_0x8ad4('0x29')](_0x8ad4('0x2a'),_0x5548d6['name'])])){_0x4cca33['telephones'][util[_0x8ad4('0x29')](_0x8ad4('0x2a'),_0x5548d6[_0x8ad4('0x2b')])]=new Telephone(_0x5548d6);}else{_0x4cca33['mergeFromDatabase'](_0x4cca33['telephones'][util['format']('SIP/%s',_0x5548d6[_0x8ad4('0x2b')])],_0x5548d6);}}}return _0x4cca33[_0x8ad4('0x14')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x49')]=function(){var _0x50f9b1=this;return function(_0x1cb864){if(_0x1cb864){freeIsNotKeySip(_0x1cb864,_0x50f9b1[_0x8ad4('0x15')]);for(var _0x2c67db=0x0,_0x253828={},_0x4b099c={};_0x2c67db<_0x1cb864[_0x8ad4('0x46')];_0x2c67db+=0x1){_0x253828=_0x1cb864[_0x2c67db];if(_[_0x8ad4('0x47')](_0x50f9b1['trunks'][util[_0x8ad4('0x29')](_0x8ad4('0x2a'),_0x253828['name'])])){_0x50f9b1['trunks'][util['format'](_0x8ad4('0x2a'),_0x253828[_0x8ad4('0x2b')])]=new Trunk(_0x253828);}else{_0x50f9b1['mergeFromDatabase'](_0x50f9b1['trunks'][util['format'](_0x8ad4('0x2a'),_0x253828[_0x8ad4('0x2b')])],_0x253828);}}}return _0x50f9b1[_0x8ad4('0x15')];};};Realtime[_0x8ad4('0x43')]['initVoiceQueues']=function(){var _0x32dea4=this;return function(_0x2194ee){if(_0x2194ee){freeIsNotKey(_0x2194ee,_0x32dea4['voiceQueues'],_0x8ad4('0x2b'));for(var _0x4e1f0d=0x0,_0x431bd4={},_0x47ce96={};_0x4e1f0d<_0x2194ee[_0x8ad4('0x46')];_0x4e1f0d+=0x1){_0x431bd4=_0x2194ee[_0x4e1f0d];if(_[_0x8ad4('0x47')](_0x32dea4[_0x8ad4('0x16')][_0x431bd4[_0x8ad4('0x2b')]])){_0x32dea4[_0x8ad4('0x16')][_0x431bd4['name']]=new VoiceQueue(_0x431bd4);}else{_0x32dea4[_0x8ad4('0x44')](_0x32dea4[_0x8ad4('0x16')][_0x431bd4[_0x8ad4('0x2b')]],_0x431bd4);}}}return _0x32dea4[_0x8ad4('0x16')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x4a')]=function(){var _0x50155e=this;return function(_0x3a46b1){if(_0x3a46b1){freeIsNotKey(_0x3a46b1,_0x50155e[_0x8ad4('0x17')],'id');for(var _0x376c18=0x0,_0x4513dc={},_0x87ae68={};_0x376c18<_0x3a46b1[_0x8ad4('0x46')];_0x376c18+=0x1){_0x4513dc=_0x3a46b1[_0x376c18];if(_['isUndefined'](_0x50155e[_0x8ad4('0x17')][_0x4513dc['id']])){_0x50155e[_0x8ad4('0x17')][_0x4513dc['id']]=new Trigger(_0x4513dc);}else{_0x50155e[_0x8ad4('0x44')](_0x50155e['triggers'][_0x4513dc['id']],_0x4513dc);}}}return _0x50155e[_0x8ad4('0x17')];};};Realtime[_0x8ad4('0x43')]['initTemplates']=function(){var _0x4ec12f=this;return function(_0x5d01c5){if(_0x5d01c5){freeIsNotKey(_0x5d01c5,_0x4ec12f[_0x8ad4('0x18')],'id');for(var _0x390de4=0x0,_0x52a7b7={},_0x389265={};_0x390de4<_0x5d01c5['length'];_0x390de4+=0x1){_0x52a7b7=_0x5d01c5[_0x390de4];if(_['isUndefined'](_0x4ec12f['templates'][_0x52a7b7['id']])){_0x4ec12f[_0x8ad4('0x18')][_0x52a7b7['id']]=new Template(_0x52a7b7);}else{_0x4ec12f['mergeFromDatabase'](_0x4ec12f[_0x8ad4('0x18')][_0x52a7b7['id']],_0x52a7b7);}}}return _0x4ec12f[_0x8ad4('0x18')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x4b')]=function(){var _0x31744f=this;return function(_0x1cbdfb){if(_0x1cbdfb){freeIsNotKey(_0x1cbdfb,_0x31744f[_0x8ad4('0x4c')],'id');for(var _0x710243=0x0,_0x133952={},_0x3db1a9={};_0x710243<_0x1cbdfb['length'];_0x710243+=0x1){_0x133952=_0x1cbdfb[_0x710243];if(_[_0x8ad4('0x47')](_0x31744f[_0x8ad4('0x4c')][_0x133952['id']])){_0x31744f[_0x8ad4('0x4c')][_0x133952['id']]=new ZendeskAccount(_0x133952);}else{_0x31744f[_0x8ad4('0x44')](_0x31744f[_0x8ad4('0x4c')][_0x133952['id']],_0x133952);}}}return _0x31744f[_0x8ad4('0x4c')];};};Realtime[_0x8ad4('0x43')]['initSalesforceAccounts']=function(){var _0x3eea39=this;return function(_0xec07fa){if(_0xec07fa){freeIsNotKey(_0xec07fa,_0x3eea39[_0x8ad4('0x20')],'id');for(var _0x43255e=0x0,_0x5866ec={},_0x3e9ed1={};_0x43255e<_0xec07fa[_0x8ad4('0x46')];_0x43255e+=0x1){_0x5866ec=_0xec07fa[_0x43255e];if(_[_0x8ad4('0x47')](_0x3eea39[_0x8ad4('0x20')][_0x5866ec['id']])){_0x3eea39[_0x8ad4('0x20')][_0x5866ec['id']]=new SalesforceAccount(_0x5866ec);}else{_0x3eea39[_0x8ad4('0x44')](_0x3eea39[_0x8ad4('0x20')][_0x5866ec['id']],_0x5866ec);}}}return _0x3eea39[_0x8ad4('0x20')];};};Realtime[_0x8ad4('0x43')]['initFreshdeskAccounts']=function(){var _0x13190a=this;return function(_0x425360){if(_0x425360){freeIsNotKey(_0x425360,_0x13190a[_0x8ad4('0x4d')],'id');for(var _0x15e9ed=0x0,_0xa5274f={},_0x4636e5={};_0x15e9ed<_0x425360[_0x8ad4('0x46')];_0x15e9ed+=0x1){_0xa5274f=_0x425360[_0x15e9ed];if(_[_0x8ad4('0x47')](_0x13190a[_0x8ad4('0x4d')][_0xa5274f['id']])){_0x13190a[_0x8ad4('0x4d')][_0xa5274f['id']]=new FreshdeskAccount(_0xa5274f);}else{_0x13190a['mergeFromDatabase'](_0x13190a[_0x8ad4('0x4d')][_0xa5274f['id']],_0xa5274f);}}}return _0x13190a[_0x8ad4('0x4d')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x4e')]=function(){var _0x376850=this;return function(_0x45ebdd){if(_0x45ebdd){freeIsNotKey(_0x45ebdd,_0x376850[_0x8ad4('0x22')],'id');for(var _0x42445d=0x0,_0x52912c={},_0x1d689d={};_0x42445d<_0x45ebdd[_0x8ad4('0x46')];_0x42445d+=0x1){_0x52912c=_0x45ebdd[_0x42445d];if(_[_0x8ad4('0x47')](_0x376850[_0x8ad4('0x22')][_0x52912c['id']])){_0x376850[_0x8ad4('0x22')][_0x52912c['id']]=new ZohoAccount(_0x52912c);}else{_0x376850[_0x8ad4('0x44')](_0x376850[_0x8ad4('0x22')][_0x52912c['id']],_0x52912c);}}}return _0x376850[_0x8ad4('0x22')];};};Realtime['prototype'][_0x8ad4('0x4f')]=function(){var _0x413854=this;return function(_0x371c60){if(_0x371c60){freeIsNotKey(_0x371c60,_0x413854[_0x8ad4('0x23')],'id');for(var _0x201dd7=0x0,_0x473ab2={},_0x5871b1={};_0x201dd7<_0x371c60[_0x8ad4('0x46')];_0x201dd7+=0x1){_0x473ab2=_0x371c60[_0x201dd7];if(_[_0x8ad4('0x47')](_0x413854['deskAccounts'][_0x473ab2['id']])){_0x413854['deskAccounts'][_0x473ab2['id']]=new DeskAccount(_0x473ab2);}else{_0x413854['mergeFromDatabase'](_0x413854[_0x8ad4('0x23')][_0x473ab2['id']],_0x473ab2);}}}return _0x413854[_0x8ad4('0x23')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x50')]=function(){var _0x3163cf=this;return function(_0x4e78c6){if(_0x4e78c6){freeIsNotKey(_0x4e78c6,_0x3163cf[_0x8ad4('0x21')],'id');for(var _0x15e56a=0x0,_0x57c484={},_0x5a0fb2={};_0x15e56a<_0x4e78c6[_0x8ad4('0x46')];_0x15e56a+=0x1){_0x57c484=_0x4e78c6[_0x15e56a];if(_[_0x8ad4('0x47')](_0x3163cf[_0x8ad4('0x21')][_0x57c484['id']])){_0x3163cf[_0x8ad4('0x21')][_0x57c484['id']]=new SugarcrmAccount(_0x57c484);}else{_0x3163cf[_0x8ad4('0x44')](_0x3163cf[_0x8ad4('0x21')][_0x57c484['id']],_0x57c484);}}}return _0x3163cf[_0x8ad4('0x21')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x51')]=function(){var _0x2952c1=this;return function(_0x4d7b69){if(_0x4d7b69){freeIsNotKey(_0x4d7b69,_0x2952c1['vtigerAccounts'],'id');for(var _0x1d0206=0x0,_0x120c4b={},_0x6c60d4={};_0x1d0206<_0x4d7b69[_0x8ad4('0x46')];_0x1d0206+=0x1){_0x120c4b=_0x4d7b69[_0x1d0206];if(_[_0x8ad4('0x47')](_0x2952c1[_0x8ad4('0x52')][_0x120c4b['id']])){_0x2952c1[_0x8ad4('0x52')][_0x120c4b['id']]=new VtigerAccount(_0x120c4b);}else{_0x2952c1[_0x8ad4('0x44')](_0x2952c1[_0x8ad4('0x52')][_0x120c4b['id']],_0x120c4b);}}}return _0x2952c1['vtigerAccounts'];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x53')]=function(){var _0x3a7f0f=this;return function(_0x5f2996){if(_0x5f2996){freeIsNotKey(_0x5f2996,_0x3a7f0f[_0x8ad4('0x54')],'id');for(var _0x287113=0x0,_0x595130={},_0x29f698={};_0x287113<_0x5f2996[_0x8ad4('0x46')];_0x287113+=0x1){_0x595130=_0x5f2996[_0x287113];if(_[_0x8ad4('0x47')](_0x3a7f0f[_0x8ad4('0x54')][_0x595130['id']])){_0x3a7f0f[_0x8ad4('0x54')][_0x595130['id']]=new ServicenowAccount(_0x595130);}else{_0x3a7f0f[_0x8ad4('0x44')](_0x3a7f0f['servicenowAccounts'][_0x595130['id']],_0x595130);}}}return _0x3a7f0f['servicenowAccounts'];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x55')]=function(){var _0x1bab49=this;return function(_0x351fac){if(_0x351fac){freeIsNotKey(_0x351fac,_0x1bab49['dynamics365Accounts'],'id');for(var _0x5314a1=0x0,_0x332712={},_0x5982eb={};_0x5314a1<_0x351fac[_0x8ad4('0x46')];_0x5314a1+=0x1){_0x332712=_0x351fac[_0x5314a1];if(_[_0x8ad4('0x47')](_0x1bab49[_0x8ad4('0x24')][_0x332712['id']])){_0x1bab49[_0x8ad4('0x24')][_0x332712['id']]=new Dynamics365Account(_0x332712);}else{_0x1bab49[_0x8ad4('0x44')](_0x1bab49[_0x8ad4('0x24')][_0x332712['id']],_0x332712);}}}return _0x1bab49[_0x8ad4('0x24')];};};Realtime['prototype']['initFreshsalesAccounts']=function(){var _0xa8bae9=this;return function(_0x4f26c7){if(_0x4f26c7){freeIsNotKey(_0x4f26c7,_0xa8bae9[_0x8ad4('0x25')],'id');for(var _0x288079=0x0,_0x54c168={},_0x537bed={};_0x288079<_0x4f26c7['length'];_0x288079+=0x1){_0x54c168=_0x4f26c7[_0x288079];if(_['isUndefined'](_0xa8bae9['freshsalesAccounts'][_0x54c168['id']])){_0xa8bae9[_0x8ad4('0x25')][_0x54c168['id']]=new FreshsalesAccount(_0x54c168);}else{_0xa8bae9[_0x8ad4('0x44')](_0xa8bae9[_0x8ad4('0x25')][_0x54c168['id']],_0x54c168);}}}return _0xa8bae9[_0x8ad4('0x25')];};};Realtime['prototype'][_0x8ad4('0x56')]=function(){var _0x660da5=this;return function(_0x9baab8){for(var _0x5254b5=0x0;_0x5254b5<_0x9baab8['length'];_0x5254b5+=0x1){_['merge'](_0x660da5[_0x8ad4('0x16')][_0x9baab8[_0x5254b5][_0x8ad4('0x2b')]],_0x9baab8[_0x5254b5]);}return _0x660da5[_0x8ad4('0x16')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x546901=this;return function(_0x2bb368){clearVoiceQueues(_0x546901[_0x8ad4('0x16')]);if(_0x2bb368){_0x2bb368=_[_0x8ad4('0x57')](_0x2bb368,_0x8ad4('0x58'));for(var _0x7b4c42 in _0x2bb368){if(_0x2bb368[_0x8ad4('0x28')](_0x7b4c42)){var _0x2d9247={};for(var _0x313b78=0x0;_0x313b78<_0x2bb368[_0x7b4c42][_0x8ad4('0x46')];_0x313b78+=0x1){var _0x37c619=_0x2bb368[_0x7b4c42][_0x313b78][_0x8ad4('0x59')];if(_0x546901[_0x8ad4('0x16')][_0x37c619]){if(_0x2bb368[_0x7b4c42][_0x313b78]['queuecallerexit']){_0x546901[_0x8ad4('0x16')][_0x37c619][_0x8ad4('0x35')]+=0x1;}if(_0x2bb368[_0x7b4c42][_0x313b78][_0x8ad4('0x5a')]){_0x546901['voiceQueues'][_0x37c619]['abandoned']+=0x1;}_0x546901[_0x8ad4('0x16')][_0x37c619][_0x8ad4('0x2e')]+=moment(_0x2bb368[_0x7b4c42][_0x313b78]['queuecallerleaveAt'])['diff'](moment(_0x2bb368[_0x7b4c42][_0x313b78]['queuecallerjoinAt']),_0x8ad4('0x5b'))||0x0;if(_0x313b78===_0x2bb368[_0x7b4c42]['length']-0x1){_0x546901[_0x8ad4('0x16')][_0x37c619]['sumDuration']+=moment(_0x2bb368[_0x7b4c42][_0x313b78]['queuecallercompleteAt']||_0x2bb368[_0x7b4c42][_0x313b78][_0x8ad4('0x5c')]||_0x2bb368[_0x7b4c42][_0x313b78][_0x8ad4('0x5d')])['diff'](moment(_0x2bb368[_0x7b4c42][_0x313b78][_0x8ad4('0x5e')]),_0x8ad4('0x5b'))||0x0;_0x546901[_0x8ad4('0x16')][_0x37c619][_0x8ad4('0x33')]+=0x1;if(_0x2bb368[_0x7b4c42][_0x313b78][_0x8ad4('0x5f')]){_0x546901[_0x8ad4('0x16')][_0x37c619]['answered']+=0x1;_0x546901[_0x8ad4('0x16')][_0x37c619]['sumBillable']+=moment(_0x2bb368[_0x7b4c42][_0x313b78][_0x8ad4('0x60')])[_0x8ad4('0x61')](moment(_0x2bb368[_0x7b4c42][_0x313b78]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x546901[_0x8ad4('0x16')][_0x37c619]['sumDuration']+=_0x546901['voiceQueues'][_0x37c619][_0x8ad4('0x2e')]||0x0;}}}}}}return _0x546901[_0x8ad4('0x16')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x62')]=function(){var _0x8cce4a=this;return function(_0x33a08f){clearVoiceCallReports(_0x8cce4a['outbound']);if(_0x33a08f){for(var _0x4455a6=0x0;_0x4455a6<_0x33a08f[_0x8ad4('0x46')];_0x4455a6+=0x1){_0x8cce4a[_0x8ad4('0x19')][_0x8ad4('0x33')]+=0x1;_0x8cce4a[_0x8ad4('0x19')][_0x8ad4('0x37')]+=_0x33a08f[_0x4455a6]['duration'];if(_0x33a08f[_0x4455a6][_0x8ad4('0x63')]==='ANSWERED'){_0x8cce4a[_0x8ad4('0x19')][_0x8ad4('0x34')]+=0x1;_0x8cce4a[_0x8ad4('0x19')]['sumHoldTime']+=_0x33a08f[_0x4455a6][_0x8ad4('0x64')]-_0x33a08f[_0x4455a6][_0x8ad4('0x65')]||0x0;_0x8cce4a[_0x8ad4('0x19')][_0x8ad4('0x2f')]+=_0x33a08f[_0x4455a6][_0x8ad4('0x65')];}}}return _0x8cce4a['outbound'];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x66')]=function(){var _0x155e84=this;return function(_0x45a484){if(_0x45a484){freeIsNotKey(_0x45a484,_0x155e84['campaigns'],_0x8ad4('0x2b'));for(var _0x1dba3c=0x0,_0x32dbba={};_0x1dba3c<_0x45a484[_0x8ad4('0x46')];_0x1dba3c+=0x1){_0x32dbba=_0x45a484[_0x1dba3c];if(_[_0x8ad4('0x47')](_0x155e84['campaigns'][_0x32dbba[_0x8ad4('0x2b')]])){_0x155e84[_0x8ad4('0x67')][_0x32dbba[_0x8ad4('0x2b')]]=new Campaign(_0x32dbba);}else{_0x155e84[_0x8ad4('0x44')](_0x155e84['campaigns'][_0x32dbba[_0x8ad4('0x2b')]],_0x32dbba);_0x155e84['campaigns'][_0x32dbba['name']]['dialQueueProject']=_0x32dbba[_0x8ad4('0x68')]?_0x32dbba[_0x8ad4('0x68')][_0x8ad4('0x2b')]:undefined;}}}return _0x155e84[_0x8ad4('0x67')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x69')]=function(){var _0x46c78f=this;return function(_0x36c247){if(_0x36c247){freeIsNotKey(_0x36c247,_0x46c78f['voiceExtensions'],'id');for(var _0x1b5686=0x0,_0x4d54c4={};_0x1b5686<_0x36c247[_0x8ad4('0x46')];_0x1b5686+=0x1){_0x4d54c4=_0x36c247[_0x1b5686];if(_[_0x8ad4('0x47')](_0x46c78f['voiceExtensions'][_0x4d54c4['id']])){_0x46c78f['voiceExtensions'][_0x4d54c4['id']]=new VoiceExtension(_0x4d54c4);}else{_0x46c78f['mergeFromDatabase'](_0x46c78f[_0x8ad4('0x1a')][_0x4d54c4['id']],_0x4d54c4);}}}return _0x46c78f[_0x8ad4('0x1a')];};};Realtime[_0x8ad4('0x43')][_0x8ad4('0x6a')]=function(){var _0x4e15d3=this;return function(_0x5a0f9d){clearCampaigns(_0x4e15d3['campaigns']);for(var _0x295d0c=0x0;_0x295d0c<_0x5a0f9d[_0x8ad4('0x46')];_0x295d0c+=0x1){_[_0x8ad4('0x6b')](_0x4e15d3[_0x8ad4('0x67')][_0x5a0f9d[_0x295d0c][_0x8ad4('0x2b')]],_0x5a0f9d[_0x295d0c]);}return _0x4e15d3[_0x8ad4('0x67')];};};Realtime['prototype'][_0x8ad4('0x6c')]=function(){var _0x1dd0de=this;return function(_0x29de74){if(_0x29de74){freeIsNotKey(_0x29de74,_0x1dd0de['faxAccounts'],'id');for(var _0x43ce87=0x0,_0xe0cd4c={},_0x1611c7={};_0x43ce87<_0x29de74[_0x8ad4('0x46')];_0x43ce87+=0x1){_0xe0cd4c=_0x29de74[_0x43ce87];if(_[_0x8ad4('0x47')](_0x1dd0de[_0x8ad4('0x26')][_0xe0cd4c['id']])){_0x1dd0de[_0x8ad4('0x26')][_0xe0cd4c['id']]=new FaxAccount(_0xe0cd4c);}else{_0x1dd0de[_0x8ad4('0x44')](_0x1dd0de[_0x8ad4('0x26')][_0xe0cd4c['id']],_0xe0cd4c);}}}return _0x1dd0de[_0x8ad4('0x26')];};};module[_0x8ad4('0x6d')]=Realtime;
\ No newline at end of file
index 240010c..d605af3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89df=['../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','./voiceDialReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','connectedlinenum','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create','match','keys','length','split','getAgentByInternal','calleridnum','outbound','internal','destination','exten','dialer','lastapplication','queue','lastdata','from-voip-provider','callerid','context','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','type','getCallType','UserId','membername','monitorFilename','filename','createdAt','monitors','connectedlinename','xcally-motion-dialer','isArray','startsWith','Local','substring','indexOf','phone','lastIndexOf','exports','lodash','moment','util','../../../config/environment','../ami'];(function(_0x3d8163,_0x5470c4){var _0x49db86=function(_0x2542cb){while(--_0x2542cb){_0x3d8163['push'](_0x3d8163['shift']());}};_0x49db86(++_0x5470c4);}(_0x89df,0x121));var _0xf89d=function(_0x491f65,_0x2fed56){_0x491f65=_0x491f65-0x0;var _0x2113a1=_0x89df[_0x491f65];return _0x2113a1;};'use strict';var _=require(_0xf89d('0x0'));var moment=require(_0xf89d('0x1'));var util=require(_0xf89d('0x2'));var config=require(_0xf89d('0x3'));var ami=require(_0xf89d('0x4'));var RpcVoiceAgentReport=require(_0xf89d('0x5'));var RpcVoiceCallReport=require(_0xf89d('0x6'));var RpcVoiceDialReport=require(_0xf89d('0x7'));var RpcMemberReport=require(_0xf89d('0x8'));var RpcVoiceQueueReport=require(_0xf89d('0x9'));var RpcVoiceRecording=require(_0xf89d('0xa'));var RpcVoiceTransferReport=require(_0xf89d('0xb'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0xf89d('0xc'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0xf89d('0xd'));var UserReport=require('./userReport');function Report(_0x4ed8e4){this[_0xf89d('0xe')]=_0x4ed8e4;this[_0xf89d('0xf')]=_0x4ed8e4[_0xf89d('0xf')];this[_0xf89d('0x10')]=_0x4ed8e4[_0xf89d('0x10')];}Report[_0xf89d('0x11')][_0xf89d('0x12')]=function(_0x251de2){var _0x5c0900=new VoiceQueueReport(this[_0xf89d('0xe')]);var _0x4e21e2=new VoiceAgentReport(this[_0xf89d('0xe')]);var _0x50edb1=new VoiceDialReport(this[_0xf89d('0xe')]);var _0x150833=new VoiceCallReport(this[_0xf89d('0xe')]);var _0x46b917=new UserReport(this[_0xf89d('0xe')]);if(config[_0xf89d('0x13')]&&config['xdr'][_0xf89d('0x14')]){ami['on'](_0xf89d('0x15'),this[_0xf89d('0x16')][_0xf89d('0x17')](this));ami['on'](_0xf89d('0x18'),this[_0xf89d('0x19')][_0xf89d('0x17')](this));ami['on'](_0xf89d('0x1a'),this[_0xf89d('0x1b')][_0xf89d('0x17')](this));ami['on'](_0xf89d('0x1c'),this[_0xf89d('0x1d')][_0xf89d('0x17')](this));ami['on'](_0xf89d('0x1e'),this[_0xf89d('0x1f')][_0xf89d('0x17')](this));ami['on'](_0xf89d('0x20'),this[_0xf89d('0x21')][_0xf89d('0x17')](this));}};Report[_0xf89d('0x11')][_0xf89d('0x22')]=function(_0x1324de){var _0x3e4fb3;_0x3e4fb3=_[_0xf89d('0x23')](this[_0xf89d('0xf')],function(_0x45348c){return _0x45348c[_0xf89d('0x24')]==_0x1324de||_0x45348c[_0xf89d('0x25')]==_0x1324de;});if(_[_0xf89d('0x26')](_0x3e4fb3)){var _0x1d9059=_[_0xf89d('0x23')](this['telephones'],function(_0x62a45c){return _0x62a45c[_0xf89d('0x24')]==_0x1324de||_0x62a45c['name']==_0x1324de;});if(_0x1d9059){_0x3e4fb3=_[_0xf89d('0x23')](this[_0xf89d('0xf')],function(_0x3dfcfb){return _0x3dfcfb[_0xf89d('0x27')]==util[_0xf89d('0x28')](_0xf89d('0x29'),_0x1d9059[_0xf89d('0x25')]);});}}return _0x3e4fb3;};Report[_0xf89d('0x11')][_0xf89d('0x16')]=function(_0x5f12ce){for(var _0x166585=0x0;_0x166585<_0x5f12ce['length'];_0x166585+=0x1){var _0x1907dd=this['findAgent'](_0x5f12ce[_0x166585][_0xf89d('0x2a')]);if(_0x1907dd){_0x5f12ce[_0x166585]['accountcode']=_0x1907dd[_0xf89d('0x24')];_0x5f12ce[_0x166585]['assigned']=!![];_0x5f12ce[_0x166585][_0xf89d('0x2b')]=_0x1907dd[_0xf89d('0x25')];_0x5f12ce[_0x166585][_0xf89d('0x27')]=_[_0xf89d('0x26')](_0x1907dd['interface'])?util[_0xf89d('0x28')](_0xf89d('0x29'),_0x1907dd[_0xf89d('0x25')]):_0x1907dd['interface'];if(_0x5f12ce[_0x166585][_0xf89d('0x2c')]){_0x5f12ce[_0x166585][_0xf89d('0x2d')]=moment()[_0xf89d('0x28')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x5f12ce[_0x166585][_0xf89d('0x2e')]){_0x5f12ce[_0x166585][_0xf89d('0x2f')]=moment()[_0xf89d('0x28')](_0xf89d('0x30'));}RpcMemberReport[_0xf89d('0x16')](_0x5f12ce[_0x166585]);}RpcVoiceQueueReport[_0xf89d('0x31')](_0x5f12ce[_0x166585]);}};function extractCalleridNumber(_0x39929b){var _0x3e0b9b=_0x39929b[_0xf89d('0x32')](/<(.*?)>/);return _0x3e0b9b?_0x3e0b9b[0x1]:_0x39929b;}Report[_0xf89d('0x11')]['getAgentByInternal']=function(_0x47240f){for(var _0x3c86e9=0x0;_0x3c86e9<Object[_0xf89d('0x33')](this[_0xf89d('0xf')])[_0xf89d('0x34')];_0x3c86e9++){var _0xbc063a=Object[_0xf89d('0x33')](this[_0xf89d('0xf')])[_0x3c86e9];var _0x2a7153=this[_0xf89d('0xf')][_0xbc063a];if(_0x2a7153['accountcode']===Number(_0x47240f))return _0x2a7153;}return null;};Report[_0xf89d('0x11')]['getCallType']=function(_0xb3bb5e){var _0x249d1f=_0xb3bb5e['channel'][_0xf89d('0x35')]('-')[0x0];var _0x5d700e=this['agents'][_0x249d1f];if(!_0x5d700e)_0x5d700e=this[_0xf89d('0x36')](_0xb3bb5e[_0xf89d('0x37')]);return!_0x5d700e?_0xf89d('0x38'):_0xf89d('0x39');};Report[_0xf89d('0x11')][_0xf89d('0x19')]=function(_0x237b04){_0x237b04[_0xf89d('0x3a')]=_0x237b04['destination']||_0x237b04[_0xf89d('0x3b')];if(_0x237b04['type']==_0xf89d('0x3c')){_0x237b04[_0xf89d('0x3d')]=_0xf89d('0x3e');_0x237b04[_0xf89d('0x3f')]=_0x237b04[_0xf89d('0x3e')];if(_0x237b04['context']==_0xf89d('0x40')){_0x237b04[_0xf89d('0x24')]='';_0x237b04[_0xf89d('0x3a')]=extractCalleridNumber(_0x237b04[_0xf89d('0x41')]);}else if(_0x237b04[_0xf89d('0x42')]==_0xf89d('0x43')){if(_0x237b04[_0xf89d('0x3a')]==_0xf89d('0x44')){_0x237b04[_0xf89d('0x3a')]=extractCalleridNumber(_0x237b04[_0xf89d('0x45')]);_0x237b04[_0xf89d('0x37')]=_0x237b04[_0xf89d('0x46')];_0x237b04['destinationchannel']=[_0x237b04[_0xf89d('0x47')],_0x237b04[_0xf89d('0x47')]=_0x237b04['destinationchannel']][0x0];_0x237b04['callerid']=_0x237b04[_0xf89d('0x45')];}else{_0x237b04[_0xf89d('0x3a')]=_0x237b04[_0xf89d('0x37')];_0x237b04[_0xf89d('0x37')]=_0x237b04[_0xf89d('0x46')];if(_0x237b04[_0xf89d('0x48')]==_0xf89d('0x49')){_0x237b04[_0xf89d('0x24')]=_0x237b04[_0xf89d('0x2a')];}else{_0x237b04[_0xf89d('0x24')]='';}}}}else{_0x237b04[_0xf89d('0x41')]=util[_0xf89d('0x28')](_0xf89d('0x4a'),_0x237b04[_0xf89d('0x4b')],_0x237b04[_0xf89d('0x37')]);}if(RpcVoiceTransferReport[_0xf89d('0x4c')][_0x237b04[_0xf89d('0x4d')]]){var _0x332adf=RpcVoiceTransferReport[_0xf89d('0x4c')][_0x237b04['linkedid']];_0x332adf[_0xf89d('0x4e')]=_0x237b04[_0xf89d('0x4f')];RpcVoiceTransferReport[_0xf89d('0x1f')](_0x332adf);delete RpcVoiceTransferReport['transfers'][_0x237b04[_0xf89d('0x4d')]];}if(_[_0xf89d('0x26')](_0x237b04[_0xf89d('0x50')])){_0x237b04['type']=this[_0xf89d('0x51')](_0x237b04);}if(_[_0xf89d('0x26')](_0x237b04[_0xf89d('0x52')])){var _0x5df7f5=_0x237b04[_0xf89d('0x47')]['split']('-')[0x0];var _0x1cd27d=this[_0xf89d('0xf')][_0x5df7f5];if(!_0x1cd27d)_0x1cd27d=this['getAgentByInternal'](_0x237b04[_0xf89d('0x24')]);if(_0x1cd27d){_0x237b04[_0xf89d('0x52')]=_0x1cd27d['id'];_0x237b04[_0xf89d('0x53')]=_0x1cd27d['name'];}}RpcVoiceCallReport['create'](_0x237b04);if(_0x237b04['monitor']){for(var _0x99a7b5=0x0;_0x99a7b5<_0x237b04['monitors'][_0xf89d('0x34')];_0x99a7b5+=0x1){_0x237b04[_0xf89d('0x54')]=_0x237b04['monitors'][_0x99a7b5][_0xf89d('0x55')];_0x237b04[_0xf89d('0x56')]=_0x237b04[_0xf89d('0x57')][_0x99a7b5][_0xf89d('0x56')];if(_0x237b04[_0xf89d('0x3b')]=='xcally-motion-preview'){_0x237b04[_0xf89d('0x37')]=_0x237b04[_0xf89d('0x2a')];_0x237b04['calleridname']=_0x237b04[_0xf89d('0x58')];_0x237b04[_0xf89d('0x2a')]=_0x237b04[_0xf89d('0x24')];_0x237b04[_0xf89d('0x58')]=_0x237b04[_0xf89d('0x53')];_0x237b04[_0xf89d('0x3b')]=_0x237b04[_0xf89d('0x46')];}else if(_0x237b04[_0xf89d('0x3b')]==_0xf89d('0x59')){_0x237b04[_0xf89d('0x37')]=_0x237b04[_0xf89d('0x3a')];_0x237b04[_0xf89d('0x3b')]=_0x237b04[_0xf89d('0x46')];}RpcVoiceRecording['create'](_0x237b04);}}};Report[_0xf89d('0x11')][_0xf89d('0x1b')]=function(_0x3b13c9){if(_[_0xf89d('0x5a')](_0x3b13c9)){_0x3b13c9['forEach'](function(_0x3002db){RpcVoiceAgentReport[_0xf89d('0x31')](_0x3002db);});}else{RpcVoiceAgentReport[_0xf89d('0x31')](_0x3b13c9);}};Report[_0xf89d('0x11')][_0xf89d('0x1d')]=function(_0x32d8c8){RpcVoiceDialReport[_0xf89d('0x31')](_0x32d8c8);var _0x165aa6;var _0x5414a3;var _0x11b53a=_0x32d8c8[_0xf89d('0x47')];if(_[_0xf89d('0x5b')](_0x11b53a,_0xf89d('0x5c'))){_0x5414a3=_0x11b53a[_0xf89d('0x5d')](_0x11b53a[_0xf89d('0x5e')]('/')+0x1,_0x11b53a['indexOf']('@'));_0x165aa6=_[_0xf89d('0x23')](this[_0xf89d('0xf')],function(_0x4eb994){return _0x4eb994['mobile']==_0x5414a3||_0x4eb994[_0xf89d('0x5f')]==_0x5414a3||_0x4eb994[_0xf89d('0x24')]==_0x5414a3;});}else{_0x5414a3=_0x11b53a[_0xf89d('0x5d')](_0x11b53a[_0xf89d('0x5e')]('/')+0x1,_0x11b53a[_0xf89d('0x60')]('-'));_0x165aa6=this[_0xf89d('0x22')](_0x5414a3);}if(_0x165aa6){_0x32d8c8[_0xf89d('0x27')]=_[_0xf89d('0x26')](_0x165aa6[_0xf89d('0x27')])?util[_0xf89d('0x28')](_0xf89d('0x29'),_0x165aa6[_0xf89d('0x25')]):_0x165aa6[_0xf89d('0x27')];_0x32d8c8['membername']=_0x165aa6[_0xf89d('0x25')];_0x32d8c8[_0xf89d('0x24')]=_0x165aa6[_0xf89d('0x24')];RpcMemberReport[_0xf89d('0x1d')](_0x32d8c8);}};Report[_0xf89d('0x11')][_0xf89d('0x1f')]=function(_0x295089){RpcVoiceTransferReport[_0xf89d('0x4c')][_0x295089['transfererlinkedid']]=_0x295089;};Report['prototype']['attendedTransfer']=function(_0x508f87){RpcVoiceTransferReport[_0xf89d('0x21')](_0x508f87);};module[_0xf89d('0x61')]=Report;
\ No newline at end of file
+var _0xe2d1=['context','from-voip-provider','xcally-motion-preview','destinationchannel','callerid','originatecalleridnum','disposition','ANSWERED','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','UserId','split','membername','monitors','monitorFilename','filename','createdAt','connectedlinename','isArray','forEach','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf','SIP/%s','transfererlinkedid','lodash','moment','util','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','voiceQueueReport','bind','voiceCallReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','format','length','connectedlinenum','assigned','interface','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','getAgentByInternal','keys','getCallType','channel','calleridnum','outbound','destination','exten','type','dialer','lastapplication','lastdata','queue'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xe2d1,0x1e7));var _0x1e2d=function(_0x156ae2,_0x234d38){_0x156ae2=_0x156ae2-0x0;var _0xf0a22c=_0xe2d1[_0x156ae2];return _0xf0a22c;};'use strict';var _=require(_0x1e2d('0x0'));var moment=require(_0x1e2d('0x1'));var util=require(_0x1e2d('0x2'));var config=require('../../../config/environment');var ami=require(_0x1e2d('0x3'));var RpcVoiceAgentReport=require(_0x1e2d('0x4'));var RpcVoiceCallReport=require(_0x1e2d('0x5'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x1e2d('0x6'));var RpcVoiceQueueReport=require(_0x1e2d('0x7'));var RpcVoiceRecording=require(_0x1e2d('0x8'));var RpcVoiceTransferReport=require(_0x1e2d('0x9'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0x1e2d('0xa'));var VoiceAgentReport=require(_0x1e2d('0xb'));var VoiceDialReport=require(_0x1e2d('0xc'));var UserReport=require(_0x1e2d('0xd'));function Report(_0x1b0c11){this[_0x1e2d('0xe')]=_0x1b0c11;this[_0x1e2d('0xf')]=_0x1b0c11[_0x1e2d('0xf')];this[_0x1e2d('0x10')]=_0x1b0c11[_0x1e2d('0x10')];}Report[_0x1e2d('0x11')][_0x1e2d('0x12')]=function(_0x538d81){var _0x1f3070=new VoiceQueueReport(this[_0x1e2d('0xe')]);var _0x574d1a=new VoiceAgentReport(this[_0x1e2d('0xe')]);var _0x4de4d2=new VoiceDialReport(this[_0x1e2d('0xe')]);var _0x3f4287=new VoiceCallReport(this['realtime']);var _0x20c67d=new UserReport(this[_0x1e2d('0xe')]);if(config['xdr']&&config[_0x1e2d('0x13')][_0x1e2d('0x14')]){ami['on']('custom:voiceQueueReport',this[_0x1e2d('0x15')][_0x1e2d('0x16')](this));ami['on']('custom:voiceCallReport',this[_0x1e2d('0x17')][_0x1e2d('0x16')](this));ami['on']('custom:voiceAgentReport',this[_0x1e2d('0x18')][_0x1e2d('0x16')](this));ami['on'](_0x1e2d('0x19'),this[_0x1e2d('0x1a')]['bind'](this));ami['on'](_0x1e2d('0x1b'),this[_0x1e2d('0x1c')][_0x1e2d('0x16')](this));ami['on'](_0x1e2d('0x1d'),this[_0x1e2d('0x1e')][_0x1e2d('0x16')](this));}};Report[_0x1e2d('0x11')][_0x1e2d('0x1f')]=function(_0x48bd75){var _0x312f8e;_0x312f8e=_[_0x1e2d('0x20')](this[_0x1e2d('0xf')],function(_0x32ef28){return _0x32ef28[_0x1e2d('0x21')]==_0x48bd75||_0x32ef28[_0x1e2d('0x22')]==_0x48bd75;});if(_[_0x1e2d('0x23')](_0x312f8e)){var _0x236647=_[_0x1e2d('0x20')](this[_0x1e2d('0x10')],function(_0x1905ae){return _0x1905ae['accountcode']==_0x48bd75||_0x1905ae[_0x1e2d('0x22')]==_0x48bd75;});if(_0x236647){_0x312f8e=_[_0x1e2d('0x20')](this[_0x1e2d('0xf')],function(_0x15f1ae){return _0x15f1ae['interface']==util[_0x1e2d('0x24')]('SIP/%s',_0x236647[_0x1e2d('0x22')]);});}}return _0x312f8e;};Report['prototype'][_0x1e2d('0x15')]=function(_0x500950){for(var _0x26e335=0x0;_0x26e335<_0x500950[_0x1e2d('0x25')];_0x26e335+=0x1){var _0xd187b=this[_0x1e2d('0x1f')](_0x500950[_0x26e335][_0x1e2d('0x26')]);if(_0xd187b){_0x500950[_0x26e335][_0x1e2d('0x21')]=_0xd187b[_0x1e2d('0x21')];_0x500950[_0x26e335][_0x1e2d('0x27')]=!![];_0x500950[_0x26e335]['lastAssignedTo']=_0xd187b['name'];_0x500950[_0x26e335][_0x1e2d('0x28')]=_[_0x1e2d('0x23')](_0xd187b[_0x1e2d('0x28')])?util['format']('SIP/%s',_0xd187b['name']):_0xd187b[_0x1e2d('0x28')];if(_0x500950[_0x26e335]['queuecallercomplete']){_0x500950[_0x26e335][_0x1e2d('0x29')]=moment()[_0x1e2d('0x24')](_0x1e2d('0x2a'));}if(_0x500950[_0x26e335][_0x1e2d('0x2b')]){_0x500950[_0x26e335][_0x1e2d('0x2c')]=moment()['format'](_0x1e2d('0x2a'));}RpcMemberReport['voiceQueueReport'](_0x500950[_0x26e335]);}RpcVoiceQueueReport[_0x1e2d('0x2d')](_0x500950[_0x26e335]);}};function extractCalleridNumber(_0x11f090){var _0x2bf363=_0x11f090['match'](/<(.*?)>/);return _0x2bf363?_0x2bf363[0x1]:_0x11f090;}Report[_0x1e2d('0x11')][_0x1e2d('0x2e')]=function(_0x284e87){for(var _0x364901=0x0;_0x364901<Object[_0x1e2d('0x2f')](this['agents'])[_0x1e2d('0x25')];_0x364901++){var _0xe6f1a2=Object[_0x1e2d('0x2f')](this[_0x1e2d('0xf')])[_0x364901];var _0x491e2c=this[_0x1e2d('0xf')][_0xe6f1a2];if(_0x491e2c[_0x1e2d('0x21')]===Number(_0x284e87))return _0x491e2c;}return null;};Report[_0x1e2d('0x11')][_0x1e2d('0x30')]=function(_0x269d17){var _0x47bc72=_0x269d17[_0x1e2d('0x31')]['split']('-')[0x0];var _0x19aceb=this[_0x1e2d('0xf')][_0x47bc72];if(!_0x19aceb)_0x19aceb=this['getAgentByInternal'](_0x269d17[_0x1e2d('0x32')]);return!_0x19aceb?_0x1e2d('0x33'):'internal';};Report['prototype'][_0x1e2d('0x17')]=function(_0x3c8368){_0x3c8368[_0x1e2d('0x34')]=_0x3c8368['destination']||_0x3c8368[_0x1e2d('0x35')];if(_0x3c8368[_0x1e2d('0x36')]==_0x1e2d('0x37')){_0x3c8368[_0x1e2d('0x38')]='queue';_0x3c8368[_0x1e2d('0x39')]=_0x3c8368[_0x1e2d('0x3a')];if(_0x3c8368[_0x1e2d('0x3b')]==_0x1e2d('0x3c')){_0x3c8368[_0x1e2d('0x21')]='';_0x3c8368[_0x1e2d('0x34')]=extractCalleridNumber(_0x3c8368['callerid']);}else if(_0x3c8368['context']=='from-sip'){if(_0x3c8368['destination']==_0x1e2d('0x3d')){_0x3c8368[_0x1e2d('0x34')]=extractCalleridNumber(_0x3c8368['calleridpreview']);_0x3c8368[_0x1e2d('0x32')]=_0x3c8368['originatecalleridnum'];_0x3c8368[_0x1e2d('0x3e')]=[_0x3c8368[_0x1e2d('0x31')],_0x3c8368[_0x1e2d('0x31')]=_0x3c8368[_0x1e2d('0x3e')]][0x0];_0x3c8368[_0x1e2d('0x3f')]=_0x3c8368['calleridpreview'];}else{_0x3c8368[_0x1e2d('0x34')]=_0x3c8368[_0x1e2d('0x32')];_0x3c8368['calleridnum']=_0x3c8368[_0x1e2d('0x40')];if(_0x3c8368[_0x1e2d('0x41')]==_0x1e2d('0x42')){_0x3c8368[_0x1e2d('0x21')]=_0x3c8368[_0x1e2d('0x26')];}else{_0x3c8368[_0x1e2d('0x21')]='';}}}}else{_0x3c8368['callerid']=util[_0x1e2d('0x24')]('\x22%s\x22\x20<%s>',_0x3c8368[_0x1e2d('0x43')],_0x3c8368[_0x1e2d('0x32')]);}if(RpcVoiceTransferReport[_0x1e2d('0x44')][_0x3c8368[_0x1e2d('0x45')]]){var _0x527334=RpcVoiceTransferReport['transfers'][_0x3c8368[_0x1e2d('0x45')]];_0x527334[_0x1e2d('0x46')]=_0x3c8368[_0x1e2d('0x47')];RpcVoiceTransferReport[_0x1e2d('0x1c')](_0x527334);delete RpcVoiceTransferReport[_0x1e2d('0x44')][_0x3c8368[_0x1e2d('0x45')]];}if(_[_0x1e2d('0x23')](_0x3c8368[_0x1e2d('0x36')])){_0x3c8368[_0x1e2d('0x36')]=this[_0x1e2d('0x30')](_0x3c8368);}if(_[_0x1e2d('0x23')](_0x3c8368[_0x1e2d('0x48')])){var _0x14e7bb=_0x3c8368[_0x1e2d('0x31')][_0x1e2d('0x49')]('-')[0x0];var _0x4b6b7b=this['agents'][_0x14e7bb];if(!_0x4b6b7b)_0x4b6b7b=this['getAgentByInternal'](_0x3c8368[_0x1e2d('0x21')]);if(_0x4b6b7b){_0x3c8368[_0x1e2d('0x48')]=_0x4b6b7b['id'];_0x3c8368[_0x1e2d('0x4a')]=_0x4b6b7b[_0x1e2d('0x22')];}}RpcVoiceCallReport[_0x1e2d('0x2d')](_0x3c8368);if(_0x3c8368['monitor']){for(var _0x8c6ef3=0x0;_0x8c6ef3<_0x3c8368[_0x1e2d('0x4b')][_0x1e2d('0x25')];_0x8c6ef3+=0x1){_0x3c8368[_0x1e2d('0x4c')]=_0x3c8368['monitors'][_0x8c6ef3][_0x1e2d('0x4d')];_0x3c8368[_0x1e2d('0x4e')]=_0x3c8368['monitors'][_0x8c6ef3][_0x1e2d('0x4e')];if(_0x3c8368[_0x1e2d('0x35')]==_0x1e2d('0x3d')){_0x3c8368[_0x1e2d('0x32')]=_0x3c8368[_0x1e2d('0x26')];_0x3c8368['calleridname']=_0x3c8368[_0x1e2d('0x4f')];_0x3c8368[_0x1e2d('0x26')]=_0x3c8368[_0x1e2d('0x21')];_0x3c8368['connectedlinename']=_0x3c8368[_0x1e2d('0x4a')];_0x3c8368[_0x1e2d('0x35')]=_0x3c8368[_0x1e2d('0x40')];}else if(_0x3c8368[_0x1e2d('0x35')]=='xcally-motion-dialer'){_0x3c8368[_0x1e2d('0x32')]=_0x3c8368[_0x1e2d('0x34')];_0x3c8368[_0x1e2d('0x35')]=_0x3c8368[_0x1e2d('0x40')];}RpcVoiceRecording['create'](_0x3c8368);}}};Report[_0x1e2d('0x11')][_0x1e2d('0x18')]=function(_0x2f9644){if(_[_0x1e2d('0x50')](_0x2f9644)){_0x2f9644[_0x1e2d('0x51')](function(_0x110cac){RpcVoiceAgentReport['create'](_0x110cac);});}else{RpcVoiceAgentReport['create'](_0x2f9644);}};Report[_0x1e2d('0x11')][_0x1e2d('0x1a')]=function(_0x14ab51){RpcVoiceDialReport[_0x1e2d('0x2d')](_0x14ab51);var _0x2b312c;var _0x1108a6;var _0x241a1a=_0x14ab51[_0x1e2d('0x31')];if(_[_0x1e2d('0x52')](_0x241a1a,_0x1e2d('0x53'))){_0x1108a6=_0x241a1a[_0x1e2d('0x54')](_0x241a1a['indexOf']('/')+0x1,_0x241a1a[_0x1e2d('0x55')]('@'));_0x2b312c=_[_0x1e2d('0x20')](this['agents'],function(_0x8d1b56){return _0x8d1b56[_0x1e2d('0x56')]==_0x1108a6||_0x8d1b56[_0x1e2d('0x57')]==_0x1108a6||_0x8d1b56[_0x1e2d('0x21')]==_0x1108a6;});}else{_0x1108a6=_0x241a1a[_0x1e2d('0x54')](_0x241a1a[_0x1e2d('0x55')]('/')+0x1,_0x241a1a[_0x1e2d('0x58')]('-'));_0x2b312c=this[_0x1e2d('0x1f')](_0x1108a6);}if(_0x2b312c){_0x14ab51[_0x1e2d('0x28')]=_['isNil'](_0x2b312c[_0x1e2d('0x28')])?util['format'](_0x1e2d('0x59'),_0x2b312c[_0x1e2d('0x22')]):_0x2b312c[_0x1e2d('0x28')];_0x14ab51[_0x1e2d('0x4a')]=_0x2b312c[_0x1e2d('0x22')];_0x14ab51[_0x1e2d('0x21')]=_0x2b312c[_0x1e2d('0x21')];RpcMemberReport[_0x1e2d('0x1a')](_0x14ab51);}};Report['prototype'][_0x1e2d('0x1c')]=function(_0xcf9dfb){RpcVoiceTransferReport[_0x1e2d('0x44')][_0xcf9dfb[_0x1e2d('0x5a')]]=_0xcf9dfb;};Report['prototype'][_0x1e2d('0x1e')]=function(_0x4ab340){RpcVoiceTransferReport['attendedTransfer'](_0x4ab340);};module['exports']=Report;
\ No newline at end of file
index 9b87aaa..9edf7cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92b0=['phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','catch','error','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','find','stateRegistry','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','debug','[userReport][devicestatechange]','inuse','local','toLowerCase','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','substring','indexOf','mobile'];(function(_0x33e6c7,_0x300c24){var _0x24cd35=function(_0x277f45){while(--_0x277f45){_0x33e6c7['push'](_0x33e6c7['shift']());}};_0x24cd35(++_0x300c24);}(_0x92b0,0xa7));var _0x092b=function(_0x3ff32f,_0x1ea978){_0x3ff32f=_0x3ff32f-0x0;var _0x13472d=_0x92b0[_0x3ff32f];return _0x13472d;};'use strict';var _=require(_0x092b('0x0'));var moment=require(_0x092b('0x1'));var util=require(_0x092b('0x2'));var Redis=require(_0x092b('0x3'));var BPromise=require(_0x092b('0x4'));var config=require(_0x092b('0x5'));var logger=require('../../../config/logger')(_0x092b('0x6'));var ami=require('../ami');config[_0x092b('0x7')]=_[_0x092b('0x8')](config['redis'],{'host':_0x092b('0x9'),'port':0x18eb});var io=require(_0x092b('0xa'))(new Redis(config[_0x092b('0x7')]));function UserReport(_0x1784a5){this[_0x092b('0xb')]=_0x1784a5[_0x092b('0xb')];this[_0x092b('0xc')]=_0x1784a5[_0x092b('0xc')];this['telephones']=_0x1784a5[_0x092b('0xd')];ami['on']('registryentry',this[_0x092b('0xe')][_0x092b('0xf')](this));ami['on'](_0x092b('0x10'),this[_0x092b('0xe')][_0x092b('0xf')](this));ami['on'](_0x092b('0x11'),this[_0x092b('0x12')]['bind'](this));ami['on'](_0x092b('0x13'),this[_0x092b('0x14')][_0x092b('0xf')](this));return this[_0x092b('0x15')]();}function showSipRegistrations(){Promise[_0x092b('0x16')]()[_0x092b('0x17')](ami['actionSipShowRegistry']())[_0x092b('0x18')](function(_0x592638){logger[_0x092b('0x19')]('[userReport][sipshowregistry]',util[_0x092b('0x1a')](_0x592638,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x092b('0x16')]()['then'](ami[_0x092b('0x1b')]())[_0x092b('0x18')](function(_0x227162){logger[_0x092b('0x19')](_0x092b('0x1c'),util[_0x092b('0x1a')](_0x227162,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x092b('0x16')]()['then'](ami[_0x092b('0x1d')]())['catch'](function(_0x2fd743){logger[_0x092b('0x19')](_0x092b('0x1e'),util['inspect'](_0x2fd743,{'showHidden':![],'depth':null}));});}UserReport[_0x092b('0x1f')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x092b('0x16')]()['then'](showSipRegistrations())['then'](listDeviceStates())[_0x092b('0x17')](showPeersStatus());},0x32c8);};UserReport[_0x092b('0x1f')]['isNotNull']=function(_0x3e322d){return _0x3e322d!==null&&!_[_0x092b('0x20')](_0x3e322d);};UserReport[_0x092b('0x1f')][_0x092b('0x21')]=function(_0x586eb1,_0x28dc39,_0x485353){io['to'](_0x586eb1)[_0x092b('0x21')](_0x28dc39,_0x485353);};UserReport['prototype']['syncRegistry']=function(_0x56d474){try{if(this[_0x092b('0x22')](_0x56d474)){logger[_0x092b('0x23')](_0x092b('0x24'),_0x56d474[_0x092b('0x25')],_0x56d474[_0x092b('0x26')]);logger['debug'](_0x092b('0x27'),util[_0x092b('0x1a')](_0x56d474,{'showHidden':![],'depth':null}));var _0x3a9900=_[_0x092b('0x28')](this[_0x092b('0xb')],{'defaultuser':_0x56d474['username']});if(_0x3a9900){_0x56d474[_0x092b('0x29')]=_0x56d474[_0x092b('0x26')];_['merge'](_0x3a9900,_[_0x092b('0x2a')](_0x56d474,[_0x092b('0x2b'),_0x092b('0x2c'),_0x092b('0x25'),_0x092b('0x26')]));logger['debug'](_0x092b('0x2d'),util[_0x092b('0x1a')](_0x3a9900,{'showHidden':![],'depth':null}));this[_0x092b('0x21')](util['format'](_0x092b('0x2e'),_0x3a9900[_0x092b('0x2f')]),'trunk:save',_0x3a9900);}}}catch(_0x504afe){logger[_0x092b('0x19')]('[userReport][registry]',util[_0x092b('0x1a')](_0x504afe,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x092b('0x12')]=function(_0x3b5f55){try{if(this[_0x092b('0x22')](_0x3b5f55)){logger['info'](_0x092b('0x30'),_0x3b5f55[_0x092b('0x31')],_0x3b5f55[_0x092b('0x26')]);logger[_0x092b('0x32')](_0x092b('0x33'),util[_0x092b('0x1a')](_0x3b5f55,{'showHidden':![],'depth':null}));if(this['agents'][_0x3b5f55['device']]){if(!this['agents'][_0x3b5f55[_0x092b('0x31')]]['local']||_0x3b5f55['state']['toLowerCase']()==_0x092b('0x34')){this[_0x092b('0xc')][_0x3b5f55[_0x092b('0x31')]][_0x092b('0x35')]=![];if(this[_0x092b('0xc')][_0x3b5f55[_0x092b('0x31')]][_0x092b('0x26')]!==_0x3b5f55['state'][_0x092b('0x36')]()){this[_0x092b('0xc')][_0x3b5f55[_0x092b('0x31')]][_0x092b('0x37')]=_[_0x092b('0x38')](moment()[_0x092b('0x39')]('x'));}this[_0x092b('0xc')][_0x3b5f55['device']][_0x092b('0x26')]=_0x3b5f55['state'][_0x092b('0x36')]();this['agents'][_0x3b5f55[_0x092b('0x31')]][_0x092b('0x3a')](_0x3b5f55);}}else if(this[_0x092b('0xd')][_0x3b5f55[_0x092b('0x31')]]){if(this[_0x092b('0xd')][_0x3b5f55['device']][_0x092b('0x26')]!==_0x3b5f55['state'][_0x092b('0x36')]()){this['telephones'][_0x3b5f55['device']][_0x092b('0x37')]=_[_0x092b('0x38')](moment()['format']('x'));}this[_0x092b('0xd')][_0x3b5f55[_0x092b('0x31')]][_0x092b('0x26')]=_0x3b5f55[_0x092b('0x26')]['toLowerCase']();logger[_0x092b('0x32')](_0x092b('0x3b'),util['inspect'](this[_0x092b('0xd')][_0x3b5f55['device']],{'showHidden':![],'depth':null}));this[_0x092b('0x21')](util[_0x092b('0x39')](_0x092b('0x3c'),this[_0x092b('0xd')][_0x3b5f55[_0x092b('0x31')]]['name']),'telephone:save',this[_0x092b('0xd')][_0x3b5f55[_0x092b('0x31')]]);}else if(this[_0x092b('0xb')][_0x3b5f55[_0x092b('0x31')]]){if(this[_0x092b('0xb')][_0x3b5f55['device']][_0x092b('0x26')]!==_0x3b5f55[_0x092b('0x26')][_0x092b('0x36')]()){this[_0x092b('0xb')][_0x3b5f55['device']]['stateTime']=_[_0x092b('0x38')](moment()['format']('x'));}this[_0x092b('0xb')][_0x3b5f55[_0x092b('0x31')]][_0x092b('0x26')]=_0x3b5f55[_0x092b('0x26')][_0x092b('0x36')]();logger[_0x092b('0x32')](_0x092b('0x3d'),util[_0x092b('0x1a')](this[_0x092b('0xb')][_0x3b5f55[_0x092b('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x092b('0x39')](_0x092b('0x2e'),this[_0x092b('0xb')][_0x3b5f55['device']]['name']),_0x092b('0x3e'),this[_0x092b('0xb')][_0x3b5f55[_0x092b('0x31')]]);}else if(_[_0x092b('0x3f')](_0x3b5f55['device'],'Local')){var _0x359840=_0x3b5f55[_0x092b('0x31')];var _0x158ef0=_0x359840[_0x092b('0x40')](_0x359840[_0x092b('0x41')]('/')+0x1,_0x359840[_0x092b('0x41')]('@'));var _0x1f5929=_[_0x092b('0x28')](this[_0x092b('0xc')],function(_0x34ea06){return _0x34ea06[_0x092b('0x42')]==_0x158ef0||_0x34ea06[_0x092b('0x43')]==_0x158ef0||_0x34ea06[_0x092b('0x44')]==_0x158ef0;});if(_0x1f5929){if(_0x1f5929[_0x092b('0x26')]!==_0x3b5f55[_0x092b('0x26')][_0x092b('0x36')]()){_0x1f5929[_0x092b('0x37')]=_[_0x092b('0x38')](moment()['format']('x'));}_0x1f5929['state']=_0x3b5f55['state'][_0x092b('0x36')]();_0x1f5929['local']=!![];_0x1f5929['updateStatusRealtime'](_0x3b5f55);}}}}catch(_0x33d8e1){logger[_0x092b('0x19')](_0x092b('0x33'),util[_0x092b('0x1a')](_0x33d8e1,{'showHidden':![],'depth':null}));}};UserReport[_0x092b('0x1f')][_0x092b('0x14')]=function(_0xb7165a){try{if(this[_0x092b('0x22')](_0xb7165a)&&this[_0x092b('0x22')](_0xb7165a['peerstatus'])){logger[_0x092b('0x23')](_0x092b('0x45'),_0xb7165a[_0x092b('0x46')],_0xb7165a['address'],_0xb7165a['peerstatus']);logger['debug'](_0x092b('0x47'),util[_0x092b('0x1a')](_0xb7165a,{'showHidden':![],'depth':null}));if(this['agents'][_0xb7165a[_0x092b('0x46')]]){if(!this[_0x092b('0xc')][_0xb7165a['peer']][_0x092b('0x35')]||_0xb7165a['peerstatus'][_0x092b('0x36')]()==_0x092b('0x48')){this[_0x092b('0xc')][_0xb7165a[_0x092b('0x46')]]['local']=![];this[_0x092b('0xc')][_0xb7165a[_0x092b('0x46')]][_0x092b('0x49')]=_0xb7165a['peerstatus'][_0x092b('0x36')]();this[_0x092b('0xc')][_0xb7165a['peer']][_0x092b('0x4a')]=_0xb7165a[_0x092b('0x4a')];this[_0x092b('0xc')][_0xb7165a['peer']][_0x092b('0x3a')](_0xb7165a);}}else if(this[_0x092b('0xd')][_0xb7165a['peer']]){this[_0x092b('0xd')][_0xb7165a[_0x092b('0x46')]][_0x092b('0x49')]=_0xb7165a['peerstatus']['toLowerCase']();this[_0x092b('0xd')][_0xb7165a[_0x092b('0x46')]][_0x092b('0x4a')]=_0xb7165a[_0x092b('0x4a')];logger[_0x092b('0x32')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x092b('0x1a')](this['telephones'][_0xb7165a[_0x092b('0x46')]],{'showHidden':![],'depth':null}));this[_0x092b('0x21')](util[_0x092b('0x39')](_0x092b('0x3c'),this[_0x092b('0xd')][_0xb7165a[_0x092b('0x46')]]['name']),_0x092b('0x4b'),this['telephones'][_0xb7165a[_0x092b('0x46')]]);}else if(this[_0x092b('0xb')][_0xb7165a[_0x092b('0x46')]]){this['trunks'][_0xb7165a['peer']][_0x092b('0x49')]=_0xb7165a[_0x092b('0x13')][_0x092b('0x36')]();this[_0x092b('0xb')][_0xb7165a[_0x092b('0x46')]][_0x092b('0x4a')]=_0xb7165a['address'];logger['debug'](_0x092b('0x4c'),util[_0x092b('0x1a')](this[_0x092b('0xb')][_0xb7165a[_0x092b('0x46')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x092b('0x39')](_0x092b('0x2e'),this['trunks'][_0xb7165a['peer']][_0x092b('0x2f')]),_0x092b('0x3e'),this[_0x092b('0xb')][_0xb7165a['peer']]);}}}catch(_0x5bbade){logger[_0x092b('0x19')]('[userReport][peerstatus]',util[_0x092b('0x1a')](_0x5bbade,{'showHidden':![],'depth':null}));}};module[_0x092b('0x4d')]=UserReport;
\ No newline at end of file
+var _0xecb8=['[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','startsWith','Local','substring','indexOf','phone','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','bluebird','ami','../ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','find','stateRegistry','omit','event','actionid'];(function(_0x2153a2,_0x2054f0){var _0x23fcc6=function(_0x461611){while(--_0x461611){_0x2153a2['push'](_0x2153a2['shift']());}};_0x23fcc6(++_0x2054f0);}(_0xecb8,0xb3));var _0x8ecb=function(_0x39b94d,_0x59c0f7){_0x39b94d=_0x39b94d-0x0;var _0x5c8165=_0xecb8[_0x39b94d];return _0x5c8165;};'use strict';var _=require(_0x8ecb('0x0'));var moment=require(_0x8ecb('0x1'));var util=require(_0x8ecb('0x2'));var Redis=require('ioredis');var BPromise=require(_0x8ecb('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x8ecb('0x4'));var ami=require(_0x8ecb('0x5'));config[_0x8ecb('0x6')]=_[_0x8ecb('0x7')](config[_0x8ecb('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x8ecb('0x8'))(new Redis(config[_0x8ecb('0x6')]));function UserReport(_0x2ded14){this[_0x8ecb('0x9')]=_0x2ded14[_0x8ecb('0x9')];this[_0x8ecb('0xa')]=_0x2ded14[_0x8ecb('0xa')];this[_0x8ecb('0xb')]=_0x2ded14[_0x8ecb('0xb')];ami['on'](_0x8ecb('0xc'),this['syncRegistry'][_0x8ecb('0xd')](this));ami['on'](_0x8ecb('0xe'),this[_0x8ecb('0xf')][_0x8ecb('0xd')](this));ami['on'](_0x8ecb('0x10'),this[_0x8ecb('0x11')][_0x8ecb('0xd')](this));ami['on']('peerstatus',this[_0x8ecb('0x12')][_0x8ecb('0xd')](this));return this[_0x8ecb('0x13')]();}function showSipRegistrations(){Promise[_0x8ecb('0x14')]()[_0x8ecb('0x15')](ami['actionSipShowRegistry']())[_0x8ecb('0x16')](function(_0x5208ff){logger[_0x8ecb('0x17')](_0x8ecb('0x18'),util[_0x8ecb('0x19')](_0x5208ff,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8ecb('0x14')]()[_0x8ecb('0x15')](ami[_0x8ecb('0x1a')]())[_0x8ecb('0x16')](function(_0x4be53e){logger[_0x8ecb('0x17')](_0x8ecb('0x1b'),util[_0x8ecb('0x19')](_0x4be53e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x8ecb('0x14')]()[_0x8ecb('0x15')](ami[_0x8ecb('0x1c')]())[_0x8ecb('0x16')](function(_0x7a6874){logger[_0x8ecb('0x17')](_0x8ecb('0x1d'),util[_0x8ecb('0x19')](_0x7a6874,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x8ecb('0x13')]=function(){setInterval(function(){BPromise[_0x8ecb('0x14')]()[_0x8ecb('0x15')](showSipRegistrations())[_0x8ecb('0x15')](listDeviceStates())[_0x8ecb('0x15')](showPeersStatus());},0x32c8);};UserReport[_0x8ecb('0x1e')]['isNotNull']=function(_0x33db74){return _0x33db74!==null&&!_['isUndefined'](_0x33db74);};UserReport[_0x8ecb('0x1e')][_0x8ecb('0x1f')]=function(_0x159854,_0x39585c,_0x3bcf49){io['to'](_0x159854)['emit'](_0x39585c,_0x3bcf49);};UserReport[_0x8ecb('0x1e')][_0x8ecb('0xf')]=function(_0x5d3c4a){try{if(this[_0x8ecb('0x20')](_0x5d3c4a)){logger[_0x8ecb('0x21')](_0x8ecb('0x22'),_0x5d3c4a[_0x8ecb('0x23')],_0x5d3c4a[_0x8ecb('0x24')]);logger[_0x8ecb('0x25')]('[userReport][registry]',util['inspect'](_0x5d3c4a,{'showHidden':![],'depth':null}));var _0x5b388d=_[_0x8ecb('0x26')](this[_0x8ecb('0x9')],{'defaultuser':_0x5d3c4a[_0x8ecb('0x23')]});if(_0x5b388d){_0x5d3c4a[_0x8ecb('0x27')]=_0x5d3c4a[_0x8ecb('0x24')];_['merge'](_0x5b388d,_[_0x8ecb('0x28')](_0x5d3c4a,[_0x8ecb('0x29'),_0x8ecb('0x2a'),_0x8ecb('0x23'),_0x8ecb('0x24')]));logger['debug'](_0x8ecb('0x2b'),util['inspect'](_0x5b388d,{'showHidden':![],'depth':null}));this[_0x8ecb('0x1f')](util['format'](_0x8ecb('0x2c'),_0x5b388d[_0x8ecb('0x2d')]),_0x8ecb('0x2e'),_0x5b388d);}}}catch(_0x39d95f){logger[_0x8ecb('0x17')](_0x8ecb('0x2f'),util[_0x8ecb('0x19')](_0x39d95f,{'showHidden':![],'depth':null}));}};UserReport[_0x8ecb('0x1e')][_0x8ecb('0x11')]=function(_0x282dda){try{if(this['isNotNull'](_0x282dda)){logger[_0x8ecb('0x21')](_0x8ecb('0x30'),_0x282dda[_0x8ecb('0x31')],_0x282dda['state']);logger[_0x8ecb('0x25')](_0x8ecb('0x32'),util[_0x8ecb('0x19')](_0x282dda,{'showHidden':![],'depth':null}));if(this[_0x8ecb('0xa')][_0x282dda[_0x8ecb('0x31')]]){if(!this['agents'][_0x282dda['device']][_0x8ecb('0x33')]||_0x282dda[_0x8ecb('0x24')][_0x8ecb('0x34')]()=='inuse'){this[_0x8ecb('0xa')][_0x282dda[_0x8ecb('0x31')]]['local']=![];if(this['agents'][_0x282dda['device']][_0x8ecb('0x24')]!==_0x282dda['state'][_0x8ecb('0x34')]()){this[_0x8ecb('0xa')][_0x282dda[_0x8ecb('0x31')]][_0x8ecb('0x35')]=_[_0x8ecb('0x36')](moment()[_0x8ecb('0x37')]('x'));}this[_0x8ecb('0xa')][_0x282dda[_0x8ecb('0x31')]][_0x8ecb('0x24')]=_0x282dda[_0x8ecb('0x24')]['toLowerCase']();this[_0x8ecb('0xa')][_0x282dda['device']][_0x8ecb('0x38')](_0x282dda);}}else if(this[_0x8ecb('0xb')][_0x282dda[_0x8ecb('0x31')]]){if(this[_0x8ecb('0xb')][_0x282dda[_0x8ecb('0x31')]]['state']!==_0x282dda[_0x8ecb('0x24')][_0x8ecb('0x34')]()){this[_0x8ecb('0xb')][_0x282dda[_0x8ecb('0x31')]][_0x8ecb('0x35')]=_['toNumber'](moment()['format']('x'));}this[_0x8ecb('0xb')][_0x282dda[_0x8ecb('0x31')]][_0x8ecb('0x24')]=_0x282dda['state'][_0x8ecb('0x34')]();logger[_0x8ecb('0x25')](_0x8ecb('0x39'),util[_0x8ecb('0x19')](this[_0x8ecb('0xb')][_0x282dda[_0x8ecb('0x31')]],{'showHidden':![],'depth':null}));this[_0x8ecb('0x1f')](util[_0x8ecb('0x37')](_0x8ecb('0x3a'),this[_0x8ecb('0xb')][_0x282dda[_0x8ecb('0x31')]][_0x8ecb('0x2d')]),_0x8ecb('0x3b'),this[_0x8ecb('0xb')][_0x282dda[_0x8ecb('0x31')]]);}else if(this['trunks'][_0x282dda[_0x8ecb('0x31')]]){if(this[_0x8ecb('0x9')][_0x282dda['device']][_0x8ecb('0x24')]!==_0x282dda[_0x8ecb('0x24')][_0x8ecb('0x34')]()){this[_0x8ecb('0x9')][_0x282dda[_0x8ecb('0x31')]]['stateTime']=_[_0x8ecb('0x36')](moment()['format']('x'));}this['trunks'][_0x282dda[_0x8ecb('0x31')]][_0x8ecb('0x24')]=_0x282dda['state']['toLowerCase']();logger[_0x8ecb('0x25')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x8ecb('0x19')](this[_0x8ecb('0x9')][_0x282dda[_0x8ecb('0x31')]],{'showHidden':![],'depth':null}));this[_0x8ecb('0x1f')](util['format'](_0x8ecb('0x2c'),this['trunks'][_0x282dda[_0x8ecb('0x31')]]['name']),_0x8ecb('0x2e'),this['trunks'][_0x282dda[_0x8ecb('0x31')]]);}else if(_[_0x8ecb('0x3c')](_0x282dda[_0x8ecb('0x31')],_0x8ecb('0x3d'))){var _0x4a7bc8=_0x282dda[_0x8ecb('0x31')];var _0x54dc91=_0x4a7bc8[_0x8ecb('0x3e')](_0x4a7bc8[_0x8ecb('0x3f')]('/')+0x1,_0x4a7bc8[_0x8ecb('0x3f')]('@'));var _0x18e9ef=_[_0x8ecb('0x26')](this[_0x8ecb('0xa')],function(_0x17020d){return _0x17020d['mobile']==_0x54dc91||_0x17020d[_0x8ecb('0x40')]==_0x54dc91||_0x17020d['accountcode']==_0x54dc91;});if(_0x18e9ef){if(_0x18e9ef['state']!==_0x282dda['state']['toLowerCase']()){_0x18e9ef['stateTime']=_[_0x8ecb('0x36')](moment()[_0x8ecb('0x37')]('x'));}_0x18e9ef['state']=_0x282dda[_0x8ecb('0x24')][_0x8ecb('0x34')]();_0x18e9ef[_0x8ecb('0x33')]=!![];_0x18e9ef['updateStatusRealtime'](_0x282dda);}}}}catch(_0x5adb59){logger['error'](_0x8ecb('0x32'),util[_0x8ecb('0x19')](_0x5adb59,{'showHidden':![],'depth':null}));}};UserReport[_0x8ecb('0x1e')][_0x8ecb('0x12')]=function(_0x1ad252){try{if(this[_0x8ecb('0x20')](_0x1ad252)&&this[_0x8ecb('0x20')](_0x1ad252[_0x8ecb('0x41')])){logger['info'](_0x8ecb('0x42'),_0x1ad252['peer'],_0x1ad252['address'],_0x1ad252['peerstatus']);logger[_0x8ecb('0x25')]('[userReport][peerstatus]',util[_0x8ecb('0x19')](_0x1ad252,{'showHidden':![],'depth':null}));if(this[_0x8ecb('0xa')][_0x1ad252[_0x8ecb('0x43')]]){if(!this[_0x8ecb('0xa')][_0x1ad252[_0x8ecb('0x43')]][_0x8ecb('0x33')]||_0x1ad252[_0x8ecb('0x41')][_0x8ecb('0x34')]()==_0x8ecb('0x44')){this[_0x8ecb('0xa')][_0x1ad252[_0x8ecb('0x43')]][_0x8ecb('0x33')]=![];this[_0x8ecb('0xa')][_0x1ad252['peer']][_0x8ecb('0x45')]=_0x1ad252[_0x8ecb('0x41')]['toLowerCase']();this[_0x8ecb('0xa')][_0x1ad252[_0x8ecb('0x43')]]['address']=_0x1ad252[_0x8ecb('0x46')];this[_0x8ecb('0xa')][_0x1ad252[_0x8ecb('0x43')]][_0x8ecb('0x38')](_0x1ad252);}}else if(this[_0x8ecb('0xb')][_0x1ad252[_0x8ecb('0x43')]]){this['telephones'][_0x1ad252[_0x8ecb('0x43')]][_0x8ecb('0x45')]=_0x1ad252[_0x8ecb('0x41')][_0x8ecb('0x34')]();this[_0x8ecb('0xb')][_0x1ad252[_0x8ecb('0x43')]]['address']=_0x1ad252[_0x8ecb('0x46')];logger['debug'](_0x8ecb('0x47'),util['inspect'](this['telephones'][_0x1ad252[_0x8ecb('0x43')]],{'showHidden':![],'depth':null}));this[_0x8ecb('0x1f')](util[_0x8ecb('0x37')](_0x8ecb('0x3a'),this[_0x8ecb('0xb')][_0x1ad252[_0x8ecb('0x43')]][_0x8ecb('0x2d')]),_0x8ecb('0x3b'),this[_0x8ecb('0xb')][_0x1ad252[_0x8ecb('0x43')]]);}else if(this[_0x8ecb('0x9')][_0x1ad252[_0x8ecb('0x43')]]){this['trunks'][_0x1ad252['peer']]['status']=_0x1ad252['peerstatus'][_0x8ecb('0x34')]();this[_0x8ecb('0x9')][_0x1ad252['peer']]['address']=_0x1ad252['address'];logger[_0x8ecb('0x25')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x8ecb('0x9')][_0x1ad252[_0x8ecb('0x43')]],{'showHidden':![],'depth':null}));this[_0x8ecb('0x1f')](util[_0x8ecb('0x37')](_0x8ecb('0x2c'),this[_0x8ecb('0x9')][_0x1ad252[_0x8ecb('0x43')]][_0x8ecb('0x2d')]),_0x8ecb('0x2e'),this['trunks'][_0x1ad252[_0x8ecb('0x43')]]);}}}catch(_0x3b1e13){logger[_0x8ecb('0x17')](_0x8ecb('0x48'),util[_0x8ecb('0x19')](_0x3b1e13,{'showHidden':![],'depth':null}));}};module[_0x8ecb('0x49')]=UserReport;
\ No newline at end of file
index ff37ee1..8529bf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x127af0,_0x2127fb){var _0x28902a=function(_0x3a9dc0){while(--_0x3a9dc0){_0x127af0['push'](_0x127af0['shift']());}};_0x28902a(++_0x2127fb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x22cbe3,_0x7c319c){var _0x2399eb=function(_0x1baf07){while(--_0x1baf07){_0x22cbe3['push'](_0x22cbe3['shift']());}};_0x2399eb(++_0x7c319c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
index 967066a..1bd2ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1f5=['length','resolve','isEmpty','getSettings','then','stopRecordingOnTransfer','StopMixMonitor','Action','catch','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transferType','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','extension','transfereruniqueid','BLIND','transfererchannel','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','util','path','ioredis','../../../config/logger','ami','../ami','../rpc/setting','queue','agi','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','bind','newexten','newchannel','syncNewChannel','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','debug','linkedid','merge','keys','context','from-sip','channel','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','split','name','accountcode','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','pick','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','syncNewExten','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','includes','lastdata','set','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','calleridnum','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','connectedlinename','destinationchannel','toNumber','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','.wav49','replace','.WAV','monitorFilename','monitors','push','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','callerid','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','user:agentcomplete'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xe1f5,0x1b7));var _0x5e1f=function(_0x25a6a2,_0x32e35f){_0x25a6a2=_0x25a6a2-0x0;var _0xb6b822=_0xe1f5[_0x25a6a2];return _0xb6b822;};'use strict';var _=require(_0x5e1f('0x0'));var moment=require('moment');var util=require(_0x5e1f('0x1'));var path=require(_0x5e1f('0x2'));var Redis=require(_0x5e1f('0x3'));var config=require('../../../config/environment');var logger=require(_0x5e1f('0x4'))(_0x5e1f('0x5'));var ami=require(_0x5e1f('0x6'));var Channel=require('../model/channel');var RpcSetting=require(_0x5e1f('0x7'));var applications=['set',_0x5e1f('0x8'),_0x5e1f('0x9'),'dial',_0x5e1f('0xa'),_0x5e1f('0xb')];var dispositions=[_0x5e1f('0xc'),_0x5e1f('0xd'),'FAILED',_0x5e1f('0xc'),_0x5e1f('0xc'),_0x5e1f('0xc'),_0x5e1f('0xe'),_0x5e1f('0xf'),'FAILED',_0x5e1f('0xd'),_0x5e1f('0xd')];config['redis']=_[_0x5e1f('0x10')](config[_0x5e1f('0x11')],{'host':_0x5e1f('0x12'),'port':0x18eb});var io=require(_0x5e1f('0x13'))(new Redis(config[_0x5e1f('0x11')]));function VoiceCallReport(_0x3a1227){this[_0x5e1f('0x14')]=_0x3a1227['channels'];this[_0x5e1f('0x15')]=_0x3a1227[_0x5e1f('0x15')];this[_0x5e1f('0x16')]={};ami['on'](_0x5e1f('0x17'),this['syncNewExten'][_0x5e1f('0x18')](this));ami['on'](_0x5e1f('0x19'),this['syncNewExten'][_0x5e1f('0x18')](this));ami['on'](_0x5e1f('0x1a'),this[_0x5e1f('0x1b')][_0x5e1f('0x18')](this));ami['on']('newstate',this['syncNewState'][_0x5e1f('0x18')](this));ami['on'](_0x5e1f('0x1c'),this[_0x5e1f('0x1d')][_0x5e1f('0x18')](this));ami['on']('hangup',this[_0x5e1f('0x1e')][_0x5e1f('0x18')](this));ami['on'](_0x5e1f('0x1f'),this[_0x5e1f('0x20')]['bind'](this));ami['on'](_0x5e1f('0x21'),this[_0x5e1f('0x22')][_0x5e1f('0x18')](this));ami['on']('blindtransfer',this[_0x5e1f('0x23')]['bind'](this));ami['on']('musiconholdstart',this['syncMusicOnHoldStart'][_0x5e1f('0x18')](this));ami['on'](_0x5e1f('0x24'),this[_0x5e1f('0x25')][_0x5e1f('0x18')](this));try{logger[_0x5e1f('0x26')](_0x5e1f('0x27'));ami[_0x5e1f('0x28')]();}catch(_0xb302f7){logger[_0x5e1f('0x29')](_0x5e1f('0x2a'),util[_0x5e1f('0x2b')](_0xb302f7,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x5e1f('0x2c')][_0x5e1f('0x2d')]=function(_0x44448f){return _0x44448f!==null&&!_[_0x5e1f('0x2e')](_0x44448f);};VoiceCallReport['prototype'][_0x5e1f('0x2f')]=function(_0x152f98,_0x467628,_0x36da6c){io['to'](_0x152f98)['emit'](_0x467628,_0x36da6c);};VoiceCallReport[_0x5e1f('0x2c')][_0x5e1f('0x20')]=function(_0x1c46a0){try{if(this[_0x5e1f('0x2d')](_0x1c46a0)){logger[_0x5e1f('0x26')](_0x5e1f('0x30'),_0x1c46a0[_0x5e1f('0x31')],_0x1c46a0[_0x5e1f('0x32')],_0x1c46a0['calleridnum']);logger[_0x5e1f('0x33')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x1c46a0[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x1c46a0,{'showHidden':![],'depth':null}));if(_0x1c46a0[_0x5e1f('0x31')]===_0x1c46a0[_0x5e1f('0x34')]){if(!_[_0x5e1f('0x2e')](this[_0x5e1f('0x14')][_0x1c46a0[_0x5e1f('0x31')]])){_[_0x5e1f('0x35')](this[_0x5e1f('0x14')][_0x1c46a0[_0x5e1f('0x31')]],_['pick'](_0x1c46a0,_[_0x5e1f('0x36')](this['channels'][_0x1c46a0[_0x5e1f('0x31')]])));}}if(_0x1c46a0[_0x5e1f('0x37')]===_0x5e1f('0x38')){if(this[_0x5e1f('0x15')][_0x1c46a0[_0x5e1f('0x39')]['split']('-')[0x0]]){if(_0x1c46a0[_0x5e1f('0x3a')]==_0x5e1f('0x3b')){this[_0x5e1f('0x15')][_0x1c46a0[_0x5e1f('0x39')]['split']('-')[0x0]][_0x5e1f('0x3c')]=_0x1c46a0[_0x5e1f('0x3d')];this['emit'](util[_0x5e1f('0x3e')](_0x5e1f('0x3f'),this[_0x5e1f('0x15')][_0x1c46a0['channel'][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x41')]),'user:agentconnect',{'destaccountcode':this[_0x5e1f('0x15')][_0x1c46a0[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x42')],'destconnectedlinenum':_0x1c46a0['connectedlinenum']});}}}}}catch(_0x3b3f94){logger[_0x5e1f('0x29')]('[%s][voiceCallReport][newcallerid]',_0x1c46a0['uniqueid'],util[_0x5e1f('0x2b')](_0x3b3f94,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5e1f('0x2c')][_0x5e1f('0x1b')]=function(_0x5afcb9){try{if(this[_0x5e1f('0x2d')](_0x5afcb9)){logger[_0x5e1f('0x33')](_0x5e1f('0x43'),_0x5afcb9[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x5afcb9,{'showHidden':![],'depth':null}));if(this[_0x5e1f('0x14')][_0x5afcb9[_0x5e1f('0x31')]])return;if(_0x5afcb9[_0x5e1f('0x39')]===_0x5e1f('0x44'))return;if(_0x5afcb9[_0x5e1f('0x31')]!==_0x5afcb9['linkedid']&&!this[_0x5e1f('0x16')][_0x5afcb9[_0x5e1f('0x34')]])return;logger['info']('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x5afcb9[_0x5e1f('0x31')],_0x5afcb9[_0x5e1f('0x37')],_0x5afcb9['exten']);this['channels'][_0x5afcb9[_0x5e1f('0x31')]]=new Channel();this[_0x5e1f('0x14')][_0x5afcb9['uniqueid']][_0x5e1f('0x45')]=moment()[_0x5e1f('0x3e')](_0x5e1f('0x46'));this[_0x5e1f('0x14')][_0x5afcb9[_0x5e1f('0x31')]][_0x5e1f('0x47')]=dispositions[_['toNumber'](_0x5afcb9[_0x5e1f('0x48')])];_[_0x5e1f('0x35')](this[_0x5e1f('0x14')][_0x5afcb9['uniqueid']],_[_0x5e1f('0x49')](_0x5afcb9,_['keys'](this[_0x5e1f('0x14')][_0x5afcb9[_0x5e1f('0x31')]])));if(_0x5afcb9['context']===_0x5e1f('0x38')){if(this[_0x5e1f('0x15')][_0x5afcb9[_0x5e1f('0x39')]['split']('-')[0x0]]){if(_[_0x5e1f('0x2e')](this[_0x5e1f('0x15')][_0x5afcb9['channel'][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x3c')])){this[_0x5e1f('0x15')][_0x5afcb9['channel'][_0x5e1f('0x40')]('-')[0x0]]['destconnectedlinenum']=_0x5afcb9[_0x5e1f('0x3a')];logger[_0x5e1f('0x33')](_0x5e1f('0x4a'),_0x5afcb9[_0x5e1f('0x31')],util[_0x5e1f('0x2b')]({'id':this['agents'][_0x5afcb9[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0x5e1f('0x15')][_0x5afcb9['channel']['split']('-')[0x0]][_0x5e1f('0x42')],'destconnectedlinenum':_0x5afcb9[_0x5e1f('0x3a')]},{'showHidden':![],'depth':null}));this[_0x5e1f('0x2f')](util[_0x5e1f('0x3e')]('user:%s',this[_0x5e1f('0x15')][_0x5afcb9[_0x5e1f('0x39')]['split']('-')[0x0]][_0x5e1f('0x41')]),'user:agentconnect',{'id':this[_0x5e1f('0x15')][_0x5afcb9[_0x5e1f('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x5afcb9['channel']['split']('-')[0x0]][_0x5e1f('0x42')],'destconnectedlinenum':_0x5afcb9[_0x5e1f('0x3a')]});}}}}}catch(_0x148683){logger[_0x5e1f('0x29')](_0x5e1f('0x4b'),_0x5afcb9[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x148683,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x5e1f('0x4c')]=function(_0x1ea946){try{if(this[_0x5e1f('0x2d')](_0x1ea946)){logger[_0x5e1f('0x33')](_0x5e1f('0x4d'),_0x1ea946[_0x5e1f('0x31')],util['inspect'](_0x1ea946,{'showHidden':![],'depth':null}));if(_0x1ea946[_0x5e1f('0x39')]===_0x5e1f('0x44')||_0x1ea946['exten']==='h')return;if(_0x1ea946['uniqueid']===_0x1ea946['linkedid']||this[_0x5e1f('0x16')][_0x1ea946[_0x5e1f('0x34')]]){_0x1ea946['application']=_0x1ea946[_0x5e1f('0x4e')][_0x5e1f('0x4f')]();_0x1ea946[_0x5e1f('0x50')]=_0x1ea946['appdata']&&_0x1ea946[_0x5e1f('0x51')][_0x5e1f('0x52')](_0x5e1f('0x53'))?_0x1ea946['appdata']:(_0x1ea946[_0x5e1f('0x51')]||_0x1ea946[_0x5e1f('0x50')])[_0x5e1f('0x4f')]();logger['info'](_0x5e1f('0x54'),_0x1ea946[_0x5e1f('0x31')],_0x1ea946['application'],_0x1ea946[_0x5e1f('0x50')]);if(_[_0x5e1f('0x2e')](this[_0x5e1f('0x14')][_0x1ea946[_0x5e1f('0x31')]])){this[_0x5e1f('0x14')][_0x1ea946['uniqueid']]=new Channel();this['channels'][_0x1ea946[_0x5e1f('0x31')]][_0x5e1f('0x45')]=_0x1ea946['duration']?moment()[_0x5e1f('0x55')](moment['duration'](_0x1ea946[_0x5e1f('0x56')])[_0x5e1f('0x57')](),'seconds')[_0x5e1f('0x3e')](_0x5e1f('0x46')):moment()[_0x5e1f('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x5e1f('0x14')][_0x1ea946['uniqueid']]['disposition']='NO\x20ANSWER';}_['merge'](this[_0x5e1f('0x14')][_0x1ea946[_0x5e1f('0x31')]],_[_0x5e1f('0x49')](_0x1ea946,_[_0x5e1f('0x36')](this[_0x5e1f('0x14')][_0x1ea946[_0x5e1f('0x31')]])));if(_[_0x5e1f('0x58')](applications,_0x1ea946['application'])){this[_0x5e1f('0x14')][_0x1ea946[_0x5e1f('0x31')]]['lastapplication']=_0x1ea946[_0x5e1f('0x4e')];this[_0x5e1f('0x14')][_0x1ea946[_0x5e1f('0x31')]][_0x5e1f('0x59')]=_0x1ea946['applicationdata'];if(_0x1ea946['application']===_0x5e1f('0x5a')&&_[_0x5e1f('0x52')](_0x1ea946[_0x5e1f('0x50')][_0x5e1f('0x4f')](),_0x5e1f('0x5b'))){var _0x10820b=_0x1ea946['applicationdata'][_0x5e1f('0x40')]('=');var _0x58d77d=_0x10820b[0x0][_0x5e1f('0x4f')]()[_0x5e1f('0x5c')](/cdr\((.*)\)/);if(_0x58d77d){if(_0x58d77d[0x1]===_0x5e1f('0x5d')&&!_[_0x5e1f('0x5e')](this['channels'][_0x1ea946['uniqueid']][_0x58d77d[0x1]]))return;this[_0x5e1f('0x14')][_0x1ea946['uniqueid']][_0x58d77d[0x1]]=_0x10820b[0x1];}}else if(_0x1ea946[_0x5e1f('0x4e')]===_0x5e1f('0x8')){this[_0x5e1f('0x14')][_0x1ea946[_0x5e1f('0x31')]][_0x5e1f('0x8')]=_0x1ea946['applicationdata']['split'](',')[0x0];}}}}}catch(_0x5d0e1b){logger[_0x5e1f('0x29')](_0x5e1f('0x5f'),_0x1ea946[_0x5e1f('0x31')],util['inspect'](_0x5d0e1b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5e1f('0x2c')][_0x5e1f('0x60')]=function(_0x13b8ab){try{if(this[_0x5e1f('0x2d')](_0x13b8ab)){logger[_0x5e1f('0x26')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x13b8ab[_0x5e1f('0x31')],_0x13b8ab[_0x5e1f('0x34')],_0x13b8ab['calleridname'],_0x13b8ab[_0x5e1f('0x61')]);logger[_0x5e1f('0x33')](_0x5e1f('0x62'),_0x13b8ab['uniqueid'],util[_0x5e1f('0x2b')](_0x13b8ab,{'showHidden':![],'depth':null}));if(_0x13b8ab[_0x5e1f('0x48')]!=='6')return;if(_0x13b8ab[_0x5e1f('0x31')]!==_0x13b8ab[_0x5e1f('0x34')]){var _0xf1ecf9=moment();if(this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]]){if(!this['channels'][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x63')]){this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x63')]=!![];this['channels'][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x64')]=_0xf1ecf9[_0x5e1f('0x3e')](_0x5e1f('0x46'));if(this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x45')]){this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x65')]=_0xf1ecf9[_0x5e1f('0x66')](this['channels'][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x45')],_0x5e1f('0x57'));}}this[_0x5e1f('0x14')][_0x13b8ab['linkedid']]['linkedid']=_0x13b8ab[_0x5e1f('0x31')];if(_0x13b8ab[_0x5e1f('0x61')]!==_0x5e1f('0x3b')){this[_0x5e1f('0x14')][_0x13b8ab['linkedid']][_0x5e1f('0x3d')]=_0x13b8ab[_0x5e1f('0x61')];}this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x67')]=_0x13b8ab[_0x5e1f('0x32')];this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x68')]=_0x13b8ab[_0x5e1f('0x39')];this[_0x5e1f('0x14')][_0x13b8ab['linkedid']][_0x5e1f('0x47')]=dispositions[_[_0x5e1f('0x69')](_0x13b8ab[_0x5e1f('0x48')])];if(this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]){this['channels'][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x6a')]=this['agents'][_0x13b8ab[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]['id'];this[_0x5e1f('0x14')][_0x13b8ab['linkedid']]['membername']=this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x41')];}}if(this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]]){if(!this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]]['answered']){this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]]['answered']=!![];this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]]['answertime']=_0xf1ecf9[_0x5e1f('0x3e')](_0x5e1f('0x46'));if(this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]]['starttime']){this['channels'][_0x13b8ab['uniqueid']]['holdtime']=_0xf1ecf9[_0x5e1f('0x66')](this['channels'][_0x13b8ab['uniqueid']][_0x5e1f('0x45')],'seconds');}}if(_0x13b8ab[_0x5e1f('0x61')]!==_0x5e1f('0x3b')){this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]]['connectedlinenum']=_0x13b8ab[_0x5e1f('0x61')];}this[_0x5e1f('0x14')][_0x13b8ab['uniqueid']][_0x5e1f('0x67')]=_0x13b8ab[_0x5e1f('0x32')];this['channels'][_0x13b8ab[_0x5e1f('0x31')]][_0x5e1f('0x68')]=_0x13b8ab['channel'];this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]][_0x5e1f('0x47')]=dispositions[_[_0x5e1f('0x69')](_0x13b8ab[_0x5e1f('0x48')])];}}else{if(this[_0x5e1f('0x14')][_0x13b8ab['uniqueid']]){if(this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]){this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]][_0x5e1f('0x6a')]=this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')]['split']('-')[0x0]]['id'];this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x31')]][_0x5e1f('0x6b')]=this[_0x5e1f('0x15')][_0x13b8ab['channel'][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x41')];}}}if(_0x13b8ab['context']===_0x5e1f('0x38')){if(this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]){this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]['destconnectedlinenum']=_0x13b8ab[_0x5e1f('0x3a')];var _0x58792c,_0x5e43a3;if(this['channels'][_0x13b8ab[_0x5e1f('0x31')]]){_0x58792c=this['channels'][_0x13b8ab[_0x5e1f('0x31')]]['routealias'];_0x5e43a3=this['channels'][_0x13b8ab['uniqueid']][_0x5e1f('0x8')];}else if(this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]]){_0x58792c=this[_0x5e1f('0x14')][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x6c')];_0x5e43a3=this['channels'][_0x13b8ab[_0x5e1f('0x34')]][_0x5e1f('0x8')];}logger[_0x5e1f('0x33')](_0x5e1f('0x6d'),_0x13b8ab[_0x5e1f('0x31')],util[_0x5e1f('0x2b')]({'id':this[_0x5e1f('0x15')][_0x13b8ab['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x42')],'destconnectedlinenum':_0x13b8ab[_0x5e1f('0x3a')],'routealias':_0x58792c,'queue':_0x5e43a3||undefined},{'showHidden':![],'depth':null}));this[_0x5e1f('0x2f')](util[_0x5e1f('0x3e')](_0x5e1f('0x3f'),this[_0x5e1f('0x15')][_0x13b8ab[_0x5e1f('0x39')]['split']('-')[0x0]][_0x5e1f('0x41')]),_0x5e1f('0x6e'),{'id':this[_0x5e1f('0x15')][_0x13b8ab['channel']['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x13b8ab['channel'][_0x5e1f('0x40')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x13b8ab['exten'],'routealias':_0x58792c,'queue':_0x5e43a3||undefined});}}}}catch(_0x3e2959){logger[_0x5e1f('0x29')](_0x5e1f('0x6f'),_0x13b8ab[_0x5e1f('0x31')],util['inspect'](_0x3e2959,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMixMonitorFilename']=function(_0x32f0c1,_0x31c372){try{if(this[_0x5e1f('0x14')][_0x32f0c1]){logger[_0x5e1f('0x26')](_0x5e1f('0x70'),_0x32f0c1,_0x31c372);this[_0x5e1f('0x14')][_0x32f0c1]['monitor']=!![];if(_[_0x5e1f('0x71')](_0x31c372,_0x5e1f('0x72'))){_0x31c372=_0x31c372[_0x5e1f('0x73')]('.wav49',_0x5e1f('0x74'));}this['channels'][_0x32f0c1][_0x5e1f('0x75')]=_0x31c372;var _0x29b848=_['find'](this[_0x5e1f('0x14')][_0x32f0c1][_0x5e1f('0x76')],{'filename':_0x31c372});if(_[_0x5e1f('0x5e')](_0x29b848)){this[_0x5e1f('0x14')][_0x32f0c1]['monitors'][_0x5e1f('0x77')]({'filename':_0x31c372,'createdAt':moment()[_0x5e1f('0x3e')](_0x5e1f('0x46')),'mixmonitorid':'','status':'rec'});}}}catch(_0x23e32c){logger[_0x5e1f('0x29')](_0x5e1f('0x78'),_0x32f0c1,util[_0x5e1f('0x2b')](_0x23e32c,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x5e1f('0x1d')]=function(_0x1b51bb){try{if(this[_0x5e1f('0x2d')](_0x1b51bb)){logger[_0x5e1f('0x33')](_0x5e1f('0x79'),_0x1b51bb['uniqueid'],util[_0x5e1f('0x2b')](_0x1b51bb,{'showHidden':![],'depth':null}));if(this[_0x5e1f('0x14')][_0x1b51bb['uniqueid']]&&_0x1b51bb[_0x5e1f('0x39')]!=_0x5e1f('0x44')){if(this['isNotNull'](_0x1b51bb[_0x5e1f('0x7a')])){if(this[_0x5e1f('0x2d')](_0x1b51bb[_0x5e1f('0x7a')]['mixmonitor_filename'])){logger['info'](_0x5e1f('0x7b'),_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);this[_0x5e1f('0x7d')](_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);}else if(this['isNotNull'](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x7e')])){logger[_0x5e1f('0x26')](_0x5e1f('0x7f'),_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);this['channels'][_0x1b51bb[_0x5e1f('0x31')]][_0x5e1f('0x61')]=_0x1b51bb[_0x5e1f('0x7c')];}else if(this[_0x5e1f('0x2d')](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x80')])){logger[_0x5e1f('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x1b51bb['uniqueid'],_0x1b51bb[_0x5e1f('0x7c')]);this[_0x5e1f('0x14')][_0x1b51bb[_0x5e1f('0x31')]][_0x5e1f('0x81')]=_0x1b51bb[_0x5e1f('0x7c')];}else if(this[_0x5e1f('0x2d')](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x82')])){logger[_0x5e1f('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);this['channels'][_0x1b51bb['uniqueid']]['type']=_0x1b51bb[_0x5e1f('0x7c')];}else if(this['isNotNull'](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x83')])){logger[_0x5e1f('0x26')](_0x5e1f('0x84'),_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')][_0x5e1f('0x40')](',')[0x0]);this['channels'][_0x1b51bb[_0x5e1f('0x31')]][_0x5e1f('0x8')]=_0x1b51bb[_0x5e1f('0x7c')][_0x5e1f('0x40')](',')[0x0];}else if(this['isNotNull'](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x85')])){logger['info'](_0x5e1f('0x86'),_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);this[_0x5e1f('0x14')][_0x1b51bb[_0x5e1f('0x31')]][_0x5e1f('0x87')]=_0x1b51bb[_0x5e1f('0x7c')];}else if(this['isNotNull'](_0x1b51bb['variable']['xmd-destination'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);this['channels'][_0x1b51bb[_0x5e1f('0x31')]]['destination']=_0x1b51bb['value'];}else if(this[_0x5e1f('0x2d')](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x88')])){logger[_0x5e1f('0x26')](_0x5e1f('0x89'),_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb['value']);this['channels'][_0x1b51bb[_0x5e1f('0x31')]][_0x5e1f('0x8a')]=_0x1b51bb['value'];}else if(this[_0x5e1f('0x2d')](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x8b')])){logger[_0x5e1f('0x26')](_0x5e1f('0x8c'),_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);this[_0x5e1f('0x14')][_0x1b51bb[_0x5e1f('0x31')]][_0x5e1f('0x8')]=_0x1b51bb[_0x5e1f('0x7c')];}else if(this[_0x5e1f('0x2d')](_0x1b51bb[_0x5e1f('0x7a')][_0x5e1f('0x8d')])){logger[_0x5e1f('0x26')](_0x5e1f('0x8e'),_0x1b51bb[_0x5e1f('0x31')],_0x1b51bb[_0x5e1f('0x7c')]);this[_0x5e1f('0x14')][_0x1b51bb[_0x5e1f('0x31')]][_0x5e1f('0x8f')]=_0x1b51bb['value'];}}}else if(this[_0x5e1f('0x2d')](_0x1b51bb[_0x5e1f('0x7a')]['mixmonitor_filename'])){if(_0x1b51bb['value']){var _0x12e273=path['parse'](_0x1b51bb[_0x5e1f('0x7c')])[_0x5e1f('0x41')];logger[_0x5e1f('0x26')](_0x5e1f('0x7b'),_0x12e273,_0x1b51bb[_0x5e1f('0x7c')]);this['syncMixMonitorFilename'](_0x12e273,_0x1b51bb[_0x5e1f('0x7c')]);}}else if(this['channels'][_0x1b51bb[_0x5e1f('0x34')]]){if(this[_0x5e1f('0x2d')](_0x1b51bb['variable'])){if(this[_0x5e1f('0x2d')](_0x1b51bb['variable'][_0x5e1f('0x8d')])){logger[_0x5e1f('0x26')](_0x5e1f('0x8e'),_0x1b51bb[_0x5e1f('0x34')],_0x1b51bb[_0x5e1f('0x7c')]);this['channels'][_0x1b51bb['linkedid']][_0x5e1f('0x90')]=_0x1b51bb['value'];}}}}}catch(_0xdd3a4e){logger[_0x5e1f('0x29')](_0x5e1f('0x91'),_0x1b51bb['uniqueid'],util[_0x5e1f('0x2b')](_0xdd3a4e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5e1f('0x2c')]['syncHangup']=function(_0x3c28b7){try{if(this[_0x5e1f('0x2d')](_0x3c28b7)){logger[_0x5e1f('0x33')]('[%s][voiceCallReport][hangup]\x20event:',_0x3c28b7[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x3c28b7,{'showHidden':![],'depth':null}));if(this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]]){if(this['channels'][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]]['linkedid']]){this['channels'][this['blindTransfers'][_0x3c28b7[_0x5e1f('0x34')]]['linkedid']]['uniqueid']=_0x3c28b7[_0x5e1f('0x31')];this['channels'][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x34')]][_0x5e1f('0x63')]=this[_0x5e1f('0x14')][_0x3c28b7['uniqueid']]['answered'];this['channels'][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x34')]]['answertime']=this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x64')];this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x34')]][_0x5e1f('0x68')]=this['channels'][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x34')]][_0x5e1f('0x39')];this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]]['linkedid']][_0x5e1f('0x47')]=this['channels'][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x47')];this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]]=this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x34')]];delete this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7['linkedid']][_0x5e1f('0x34')]];}else if(this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]]){this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]][_0x5e1f('0x31')]=[this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]][_0x5e1f('0x34')],this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7['linkedid']][_0x5e1f('0x31')]][_0x5e1f('0x34')]=this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]][_0x5e1f('0x31')]][0x0];this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]]['answered']=this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x63')];this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]]['uniqueid']]['answertime']=this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x64')];this['channels'][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]][_0x5e1f('0x68')]=this[_0x5e1f('0x14')][this['blindTransfers'][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]][_0x5e1f('0x39')];this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]][_0x5e1f('0x31')]][_0x5e1f('0x47')]=this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x47')];this['channels'][_0x3c28b7[_0x5e1f('0x31')]]=this[_0x5e1f('0x14')][this['blindTransfers'][_0x3c28b7['linkedid']][_0x5e1f('0x31')]];delete this[_0x5e1f('0x14')][this[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x34')]]['uniqueid']];}}if(this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]]){logger['info'](_0x5e1f('0x92'),_0x3c28b7[_0x5e1f('0x31')],_0x3c28b7[_0x5e1f('0x93')]);var _0x1946f9=moment();this[_0x5e1f('0x14')][_0x3c28b7['uniqueid']][_0x5e1f('0x94')]=_0x1946f9[_0x5e1f('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x56')]=_0x1946f9['diff'](this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x45')],_0x5e1f('0x57'));if(this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x63')]){this['channels'][_0x3c28b7['uniqueid']]['billableseconds']=_0x1946f9['diff'](this[_0x5e1f('0x14')][_0x3c28b7['uniqueid']]['answertime'],_0x5e1f('0x57'));this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x65')]=this[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]][_0x5e1f('0x56')]-this[_0x5e1f('0x14')][_0x3c28b7['uniqueid']][_0x5e1f('0x95')];}if(_0x3c28b7['context']===_0x5e1f('0x38')){if(this['agents'][_0x3c28b7['channel'][_0x5e1f('0x40')]('-')[0x0]]){this[_0x5e1f('0x15')][_0x3c28b7[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]=_[_0x5e1f('0x96')](this[_0x5e1f('0x15')][_0x3c28b7[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]],[_0x5e1f('0x3c')]);logger[_0x5e1f('0x33')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x3c28b7['uniqueid'],util[_0x5e1f('0x2b')]({'id':this['agents'][_0x3c28b7['channel'][_0x5e1f('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0x5e1f('0x15')][_0x3c28b7[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x5e1f('0x2f')](util[_0x5e1f('0x3e')]('user:%s',this[_0x5e1f('0x15')][_0x3c28b7[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x41')]),_0x5e1f('0x97'),{'id':this[_0x5e1f('0x15')][_0x3c28b7[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x3c28b7[_0x5e1f('0x39')][_0x5e1f('0x40')]('-')[0x0]][_0x5e1f('0x42')]});for(var _0x53dce5=0x0;_0x53dce5<Object[_0x5e1f('0x36')](this[_0x5e1f('0x15')])[_0x5e1f('0x98')];_0x53dce5++){var _0x21d38e=Object[_0x5e1f('0x36')](this[_0x5e1f('0x15')])[_0x53dce5];var _0x4abaac=this[_0x5e1f('0x15')][_0x21d38e];if(_0x4abaac[_0x5e1f('0x42')]===Number(_0x3c28b7['connectedlinenum'])){this[_0x5e1f('0x2f')](util['format']('user:%s',_0x4abaac[_0x5e1f('0x41')]),_0x5e1f('0x97'),{'id':_0x4abaac['id'],'destaccountcode':_0x4abaac[_0x5e1f('0x42')],'transfer':this['channels'][_0x3c28b7[_0x5e1f('0x31')]]['transferType']});break;}}}}var _0x4700c5=this;Promise[_0x5e1f('0x99')]()['then'](function(){var _0x5015da=_0x4700c5[_0x5e1f('0x14')][_0x3c28b7['uniqueid']];if(typeof _0x5015da['transferType']==='undefined')return;if(_[_0x5e1f('0x9a')](_0x5015da[_0x5e1f('0x76')]))return;return RpcSetting[_0x5e1f('0x9b')]()[_0x5e1f('0x9c')](function(_0xc74d78){if(!_0xc74d78[_0x5e1f('0x9d')])return;return Promise[_0x5e1f('0x99')]()[_0x5e1f('0x9c')](function(){return ami['Action']({'action':_0x5e1f('0x9e'),'channel':_0x5015da['channel']})['catch'](function(){});})['then'](function(){return ami[_0x5e1f('0x9f')]({'action':_0x5e1f('0x9e'),'channel':_0x5015da[_0x5e1f('0x68')]})[_0x5e1f('0xa0')](function(){})[_0x5e1f('0xa1')](function(){var _0x1697bd=_0x4700c5[_0x5e1f('0x15')][_0x5015da[_0x5e1f('0x68')][_0x5e1f('0x40')]('-')[0x0]];if(!_0x1697bd)return;io['emit'](_0x5e1f('0xa2'),{'agentId':_0x1697bd['id'],'uniqueid':_0x5015da['uniqueid']});});});});})[_0x5e1f('0x9c')](function(){if(_0x3c28b7[_0x5e1f('0xa3')]===_0x5e1f('0xa4')){_0x4700c5[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x31')]]=_0x3c28b7;}else{if(_0x4700c5[_0x5e1f('0x14')][_0x3c28b7['uniqueid']][_0x5e1f('0x5d')]===_0x5e1f('0xa5')&&_0x4700c5[_0x5e1f('0x16')][_0x3c28b7['uniqueid']]){_0x4700c5[_0x5e1f('0x14')][_0x3c28b7['uniqueid']]['uniqueid']=[_0x4700c5['channels'][_0x3c28b7['uniqueid']][_0x5e1f('0x34')],_0x4700c5['channels'][_0x3c28b7['uniqueid']][_0x5e1f('0x34')]=_0x4700c5[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]]['uniqueid']][0x0];delete _0x4700c5[_0x5e1f('0x16')][_0x3c28b7[_0x5e1f('0x31')]];}}logger[_0x5e1f('0x33')](_0x5e1f('0xa6'),_0x3c28b7['uniqueid'],util[_0x5e1f('0x2b')](_0x4700c5['channels'][_0x3c28b7['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x5e1f('0x2f')]('custom:voiceCallReport',_0x4700c5[_0x5e1f('0x14')][_0x3c28b7[_0x5e1f('0x31')]]);delete _0x4700c5['channels'][_0x3c28b7['uniqueid']];});}}}catch(_0x4dd039){logger[_0x5e1f('0x29')](_0x5e1f('0xa7'),_0x3c28b7['uniqueid'],util[_0x5e1f('0x2b')](_0x4dd039,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x5e1f('0x22')]=function(_0x10f6bc){try{if(this[_0x5e1f('0x2d')](_0x10f6bc)){logger['info'](_0x5e1f('0xa8'),_0x10f6bc[_0x5e1f('0x31')],_0x10f6bc[_0x5e1f('0xa9')],_0x10f6bc[_0x5e1f('0xaa')]);logger[_0x5e1f('0x33')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x10f6bc['uniqueid'],util[_0x5e1f('0x2b')](_0x10f6bc,{'showHidden':![],'depth':null}));var _0x568289;if(this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xab')]]){this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xab')]][_0x5e1f('0xac')]=_0x10f6bc[_0x5e1f('0xa9')];this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xab')]][_0x5e1f('0xad')]=_0x10f6bc[_0x5e1f('0xaa')];if(this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xae')]]){_0x568289=this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xae')]];this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xae')]]=this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xab')]];this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xab')]]=_0x568289;}this['channels'][_0x10f6bc[_0x5e1f('0xae')]][_0x5e1f('0xaf')]=_0x5e1f('0xb0');}else if(this[_0x5e1f('0x14')][_0x10f6bc['transfertargetuniqueid']]){this[_0x5e1f('0x14')][_0x10f6bc['transfertargetuniqueid']]['transfercalleridnum']=_0x10f6bc[_0x5e1f('0xa9')];this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb1')]][_0x5e1f('0xad')]=_0x10f6bc[_0x5e1f('0xaa')];if(this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb2')]]){_0x568289=this[_0x5e1f('0x14')][_0x10f6bc['origtransfereruniqueid']];this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb2')]]=this[_0x5e1f('0x14')][_0x10f6bc['transfertargetuniqueid']];this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb1')]]=_0x568289;}this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb1')]][_0x5e1f('0xaf')]=_0x5e1f('0xb0');}if((this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb2')]]||this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb3')]])&&this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xae')]]){var _0xc1ad22=_[_0x5e1f('0xb4')]([this['channels'][_0x10f6bc[_0x5e1f('0xb2')]],this['channels'][_0x10f6bc[_0x5e1f('0xb3')]],this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xae')]]],function(_0x5bf034){return _0x5bf034&&_0x5bf034[_0x5e1f('0x5d')]==='outbound'&&_0x5bf034['routeid'];});if(_0xc1ad22){if(this[_0x5e1f('0x14')][_0x10f6bc['origtransfereruniqueid']])this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb2')]][_0x5e1f('0xaf')]=_0x5e1f('0xb0');if(this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb3')]])this[_0x5e1f('0x14')][_0x10f6bc[_0x5e1f('0xb3')]][_0x5e1f('0xaf')]=_0x5e1f('0xb0');this['channels'][_0x10f6bc[_0x5e1f('0xae')]][_0x5e1f('0xaf')]=_0x5e1f('0xb0');}}}}catch(_0x44364f){logger[_0x5e1f('0x29')](_0x5e1f('0xb5'),_0x10f6bc[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x44364f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5e1f('0x2c')][_0x5e1f('0x23')]=function(_0xd74ab9){try{if(this[_0x5e1f('0x2d')](_0xd74ab9)){logger['info'](_0x5e1f('0xb6'),_0xd74ab9[_0x5e1f('0x31')],_0xd74ab9['transfereecalleridnum'],_0xd74ab9['extension']);logger[_0x5e1f('0x33')](_0x5e1f('0xb7'),_0xd74ab9[_0x5e1f('0x31')],util['inspect'](_0xd74ab9,{'showHidden':![],'depth':null}));if(this[_0x5e1f('0x14')][_0xd74ab9['transfereeuniqueid']]){this[_0x5e1f('0x14')][_0xd74ab9['transfereeuniqueid']]['transfercalleridnum']=_0xd74ab9[_0x5e1f('0xb8')];this[_0x5e1f('0x14')][_0xd74ab9['transfereeuniqueid']][_0x5e1f('0xad')]=_0xd74ab9[_0x5e1f('0xb9')];this[_0x5e1f('0x14')][_0xd74ab9['transfereeuniqueid']][_0x5e1f('0xaf')]='BLIND';this[_0x5e1f('0x1e')]({'event':_0x5e1f('0xa4'),'uniqueid':_0xd74ab9['transfereeuniqueid'],'linkedid':_0xd74ab9[_0x5e1f('0xba')],'context':_0xd74ab9[_0x5e1f('0x37')],'channel':_0xd74ab9['transfererchannel']});}else{this[_0x5e1f('0x14')][_0xd74ab9[_0x5e1f('0xba')]][_0x5e1f('0xaf')]=_0x5e1f('0xbb');this[_0x5e1f('0x1e')]({'event':_0x5e1f('0xa4'),'uniqueid':_0xd74ab9[_0x5e1f('0xba')],'linkedid':_0xd74ab9[_0x5e1f('0xab')],'context':_0xd74ab9['context'],'channel':_0xd74ab9[_0x5e1f('0xbc')]});}}}catch(_0x217876){logger[_0x5e1f('0x29')]('[%s][voiceCallReport][blindtransfer]',_0xd74ab9[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x217876,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x5e1f('0xbd')]=function(_0x494d34){try{if(this[_0x5e1f('0x2d')](_0x494d34)){logger[_0x5e1f('0x33')](_0x5e1f('0xbe'),_0x494d34[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x494d34,{'showHidden':![],'depth':null}));if(this[_0x5e1f('0x14')][_0x494d34['uniqueid']]){if(!_[_0x5e1f('0x5e')](this[_0x5e1f('0x14')][_0x494d34['uniqueid']]['answertime'])){this[_0x5e1f('0x14')][_0x494d34[_0x5e1f('0x31')]][_0x5e1f('0xbf')]=moment()[_0x5e1f('0x3e')](_0x5e1f('0x46'));logger[_0x5e1f('0x26')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x494d34[_0x5e1f('0x31')],this[_0x5e1f('0x14')][_0x494d34[_0x5e1f('0x31')]][_0x5e1f('0xbf')]);}}}}catch(_0x4787a5){logger[_0x5e1f('0x29')]('[%s][voiceCallReport][musiconholdstart]',_0x494d34['uniqueid'],util[_0x5e1f('0x2b')](_0x4787a5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5e1f('0x2c')][_0x5e1f('0x25')]=function(_0x1f70e4){try{if(this[_0x5e1f('0x2d')](_0x1f70e4)){logger['debug'](_0x5e1f('0xc0'),_0x1f70e4[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x1f70e4,{'showHidden':![],'depth':null}));if(this[_0x5e1f('0x14')][_0x1f70e4[_0x5e1f('0x31')]]){if(!_[_0x5e1f('0x5e')](this[_0x5e1f('0x14')][_0x1f70e4[_0x5e1f('0x31')]]['mohstarttime'])){this['channels'][_0x1f70e4['uniqueid']][_0x5e1f('0xc1')]+=moment()[_0x5e1f('0xc2')](0x0)[_0x5e1f('0x66')](this[_0x5e1f('0x14')][_0x1f70e4[_0x5e1f('0x31')]][_0x5e1f('0xbf')],_0x5e1f('0x57'));logger['info'](_0x5e1f('0xc3'),_0x1f70e4[_0x5e1f('0x31')],this[_0x5e1f('0x14')][_0x1f70e4['uniqueid']][_0x5e1f('0xc1')]);delete this['channels'][_0x1f70e4[_0x5e1f('0x31')]]['mohstarttime'];}}}}catch(_0x1a34b5){logger['error']('[%s][voiceCallReport][musiconholdstop]',_0x1f70e4[_0x5e1f('0x31')],util[_0x5e1f('0x2b')](_0x1a34b5,{'showHidden':![],'depth':null}));}};module[_0x5e1f('0xc4')]=VoiceCallReport;
\ No newline at end of file
+var _0x48f8=['monitors','push','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','duration','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','undefined','isEmpty','getSettings','then','Action','StopMixMonitor','finally','webbar:stopmonitors','event','BlindTransfer','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereruniqueid','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','[voiceCallReport][coreshowchannels]','isNotNull','isUndefined','prototype','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','keys','context','from-sip','channel','split','exten','connectedlinenum','user:%s','user:agentconnect','accountcode','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','pick','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','format','name','error','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','starttime','subtract','merge','includes','lastdata','startsWith','match','type','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','diff','seconds','xcally-motion-preview','connectedlinename','destinationchannel','UserId','answertime','holdtime','toNumber','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','find'];(function(_0xf18736,_0xca380e){var _0x20482f=function(_0x23ac15){while(--_0x23ac15){_0xf18736['push'](_0xf18736['shift']());}};_0x20482f(++_0xca380e);}(_0x48f8,0x11f));var _0x848f=function(_0x1e1121,_0x1deb8b){_0x1e1121=_0x1e1121-0x0;var _0x490105=_0x48f8[_0x1e1121];return _0x490105;};'use strict';var _=require('lodash');var moment=require(_0x848f('0x0'));var util=require(_0x848f('0x1'));var path=require('path');var Redis=require(_0x848f('0x2'));var config=require(_0x848f('0x3'));var logger=require(_0x848f('0x4'))(_0x848f('0x5'));var ami=require(_0x848f('0x6'));var Channel=require(_0x848f('0x7'));var RpcSetting=require('../rpc/setting');var applications=[_0x848f('0x8'),_0x848f('0x9'),_0x848f('0xa'),_0x848f('0xb'),_0x848f('0xc'),_0x848f('0xd')];var dispositions=[_0x848f('0xe'),_0x848f('0xf'),_0x848f('0xf'),_0x848f('0xe'),'NO\x20ANSWER',_0x848f('0xe'),'ANSWERED',_0x848f('0x10'),'FAILED','FAILED',_0x848f('0xf')];config[_0x848f('0x11')]=_[_0x848f('0x12')](config[_0x848f('0x11')],{'host':_0x848f('0x13'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x848f('0x11')]));function VoiceCallReport(_0x31e4d3){this['channels']=_0x31e4d3[_0x848f('0x14')];this[_0x848f('0x15')]=_0x31e4d3[_0x848f('0x15')];this[_0x848f('0x16')]={};ami['on'](_0x848f('0x17'),this[_0x848f('0x18')]['bind'](this));ami['on'](_0x848f('0x19'),this[_0x848f('0x18')]['bind'](this));ami['on']('newchannel',this['syncNewChannel'][_0x848f('0x1a')](this));ami['on'](_0x848f('0x1b'),this[_0x848f('0x1c')][_0x848f('0x1a')](this));ami['on'](_0x848f('0x1d'),this[_0x848f('0x1e')][_0x848f('0x1a')](this));ami['on'](_0x848f('0x1f'),this[_0x848f('0x20')][_0x848f('0x1a')](this));ami['on'](_0x848f('0x21'),this[_0x848f('0x22')][_0x848f('0x1a')](this));ami['on'](_0x848f('0x23'),this[_0x848f('0x24')]['bind'](this));ami['on'](_0x848f('0x25'),this['syncBlindTransfer'][_0x848f('0x1a')](this));ami['on']('musiconholdstart',this[_0x848f('0x26')][_0x848f('0x1a')](this));ami['on']('musiconholdstop',this[_0x848f('0x27')][_0x848f('0x1a')](this));try{logger[_0x848f('0x28')](_0x848f('0x29'));ami['actionCoreShowChannels']();}catch(_0x3283b5){logger['error'](_0x848f('0x2a'),util['inspect'](_0x3283b5,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x848f('0x2b')]=function(_0x2170e7){return _0x2170e7!==null&&!_[_0x848f('0x2c')](_0x2170e7);};VoiceCallReport[_0x848f('0x2d')][_0x848f('0x2e')]=function(_0x583596,_0x97275a,_0x47b13a){io['to'](_0x583596)[_0x848f('0x2e')](_0x97275a,_0x47b13a);};VoiceCallReport[_0x848f('0x2d')][_0x848f('0x22')]=function(_0xe07995){try{if(this[_0x848f('0x2b')](_0xe07995)){logger[_0x848f('0x28')](_0x848f('0x2f'),_0xe07995[_0x848f('0x30')],_0xe07995[_0x848f('0x31')],_0xe07995[_0x848f('0x32')]);logger[_0x848f('0x33')](_0x848f('0x34'),_0xe07995[_0x848f('0x30')],util[_0x848f('0x35')](_0xe07995,{'showHidden':![],'depth':null}));if(_0xe07995[_0x848f('0x30')]===_0xe07995[_0x848f('0x36')]){if(!_[_0x848f('0x2c')](this['channels'][_0xe07995[_0x848f('0x30')]])){_['merge'](this['channels'][_0xe07995['uniqueid']],_['pick'](_0xe07995,_[_0x848f('0x37')](this[_0x848f('0x14')][_0xe07995[_0x848f('0x30')]])));}}if(_0xe07995[_0x848f('0x38')]===_0x848f('0x39')){if(this[_0x848f('0x15')][_0xe07995[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]){if(_0xe07995[_0x848f('0x3c')]=='xcally-motion-preview'){this[_0x848f('0x15')][_0xe07995[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['destconnectedlinenum']=_0xe07995[_0x848f('0x3d')];this['emit'](util['format'](_0x848f('0x3e'),this[_0x848f('0x15')][_0xe07995[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['name']),_0x848f('0x3f'),{'destaccountcode':this['agents'][_0xe07995['channel'][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x40')],'destconnectedlinenum':_0xe07995['connectedlinenum']});}}}}}catch(_0x4f30c0){logger['error']('[%s][voiceCallReport][newcallerid]',_0xe07995[_0x848f('0x30')],util[_0x848f('0x35')](_0x4f30c0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x848f('0x2d')][_0x848f('0x41')]=function(_0x27bd69){try{if(this[_0x848f('0x2b')](_0x27bd69)){logger['debug'](_0x848f('0x42'),_0x27bd69[_0x848f('0x30')],util[_0x848f('0x35')](_0x27bd69,{'showHidden':![],'depth':null}));if(this[_0x848f('0x14')][_0x27bd69[_0x848f('0x30')]])return;if(_0x27bd69[_0x848f('0x3a')]===_0x848f('0x43'))return;if(_0x27bd69[_0x848f('0x30')]!==_0x27bd69[_0x848f('0x36')]&&!this['blindTransfers'][_0x27bd69[_0x848f('0x36')]])return;logger['info'](_0x848f('0x44'),_0x27bd69['uniqueid'],_0x27bd69[_0x848f('0x38')],_0x27bd69[_0x848f('0x3c')]);this[_0x848f('0x14')][_0x27bd69[_0x848f('0x30')]]=new Channel();this[_0x848f('0x14')][_0x27bd69[_0x848f('0x30')]]['starttime']=moment()['format'](_0x848f('0x45'));this[_0x848f('0x14')][_0x27bd69['uniqueid']][_0x848f('0x46')]=dispositions[_['toNumber'](_0x27bd69[_0x848f('0x47')])];_['merge'](this[_0x848f('0x14')][_0x27bd69[_0x848f('0x30')]],_[_0x848f('0x48')](_0x27bd69,_[_0x848f('0x37')](this[_0x848f('0x14')][_0x27bd69[_0x848f('0x30')]])));if(_0x27bd69[_0x848f('0x38')]===_0x848f('0x39')){if(this[_0x848f('0x15')][_0x27bd69['channel'][_0x848f('0x3b')]('-')[0x0]]){if(_[_0x848f('0x2c')](this[_0x848f('0x15')][_0x27bd69[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x49')])){this[_0x848f('0x15')][_0x27bd69[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x49')]=_0x27bd69[_0x848f('0x3c')];logger[_0x848f('0x33')](_0x848f('0x4a'),_0x27bd69[_0x848f('0x30')],util[_0x848f('0x35')]({'id':this[_0x848f('0x15')][_0x27bd69[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x27bd69[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x40')],'destconnectedlinenum':_0x27bd69[_0x848f('0x3c')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x848f('0x4b')](_0x848f('0x3e'),this[_0x848f('0x15')][_0x27bd69['channel'][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x4c')]),'user:agentconnect',{'id':this[_0x848f('0x15')][_0x27bd69[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x848f('0x15')][_0x27bd69[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x40')],'destconnectedlinenum':_0x27bd69[_0x848f('0x3c')]});}}}}}catch(_0x3c8b4e){logger[_0x848f('0x4d')](_0x848f('0x4e'),_0x27bd69[_0x848f('0x30')],util[_0x848f('0x35')](_0x3c8b4e,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewExten']=function(_0x2b6ce2){try{if(this['isNotNull'](_0x2b6ce2)){logger[_0x848f('0x33')](_0x848f('0x4f'),_0x2b6ce2[_0x848f('0x30')],util[_0x848f('0x35')](_0x2b6ce2,{'showHidden':![],'depth':null}));if(_0x2b6ce2[_0x848f('0x3a')]===_0x848f('0x43')||_0x2b6ce2[_0x848f('0x3c')]==='h')return;if(_0x2b6ce2['uniqueid']===_0x2b6ce2[_0x848f('0x36')]||this[_0x848f('0x16')][_0x2b6ce2['linkedid']]){_0x2b6ce2[_0x848f('0x50')]=_0x2b6ce2['application'][_0x848f('0x51')]();_0x2b6ce2[_0x848f('0x52')]=_0x2b6ce2[_0x848f('0x53')]&&_0x2b6ce2['appdata']['startsWith']('CDR(routeAlias)')?_0x2b6ce2[_0x848f('0x53')]:(_0x2b6ce2[_0x848f('0x53')]||_0x2b6ce2[_0x848f('0x52')])[_0x848f('0x51')]();logger[_0x848f('0x28')](_0x848f('0x54'),_0x2b6ce2[_0x848f('0x30')],_0x2b6ce2['application'],_0x2b6ce2[_0x848f('0x52')]);if(_[_0x848f('0x2c')](this['channels'][_0x2b6ce2['uniqueid']])){this['channels'][_0x2b6ce2['uniqueid']]=new Channel();this['channels'][_0x2b6ce2['uniqueid']][_0x848f('0x55')]=_0x2b6ce2['duration']?moment()[_0x848f('0x56')](moment['duration'](_0x2b6ce2['duration'])['seconds'](),'seconds')[_0x848f('0x4b')](_0x848f('0x45')):moment()[_0x848f('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x2b6ce2[_0x848f('0x30')]][_0x848f('0x46')]=_0x848f('0xe');}_[_0x848f('0x57')](this[_0x848f('0x14')][_0x2b6ce2['uniqueid']],_[_0x848f('0x48')](_0x2b6ce2,_['keys'](this['channels'][_0x2b6ce2[_0x848f('0x30')]])));if(_[_0x848f('0x58')](applications,_0x2b6ce2[_0x848f('0x50')])){this[_0x848f('0x14')][_0x2b6ce2['uniqueid']]['lastapplication']=_0x2b6ce2['application'];this['channels'][_0x2b6ce2[_0x848f('0x30')]][_0x848f('0x59')]=_0x2b6ce2[_0x848f('0x52')];if(_0x2b6ce2[_0x848f('0x50')]==='set'&&_[_0x848f('0x5a')](_0x2b6ce2[_0x848f('0x52')][_0x848f('0x51')](),'cdr(')){var _0x119722=_0x2b6ce2[_0x848f('0x52')][_0x848f('0x3b')]('=');var _0x276f00=_0x119722[0x0][_0x848f('0x51')]()[_0x848f('0x5b')](/cdr\((.*)\)/);if(_0x276f00){if(_0x276f00[0x1]===_0x848f('0x5c')&&!_[_0x848f('0x5d')](this[_0x848f('0x14')][_0x2b6ce2[_0x848f('0x30')]][_0x276f00[0x1]]))return;this[_0x848f('0x14')][_0x2b6ce2['uniqueid']][_0x276f00[0x1]]=_0x119722[0x1];}}else if(_0x2b6ce2[_0x848f('0x50')]==='queue'){this['channels'][_0x2b6ce2[_0x848f('0x30')]]['queue']=_0x2b6ce2[_0x848f('0x52')][_0x848f('0x3b')](',')[0x0];}}}}}catch(_0x319106){logger[_0x848f('0x4d')](_0x848f('0x5e'),_0x2b6ce2[_0x848f('0x30')],util[_0x848f('0x35')](_0x319106,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x848f('0x2d')]['syncNewState']=function(_0x3e7b10){try{if(this[_0x848f('0x2b')](_0x3e7b10)){logger['info'](_0x848f('0x5f'),_0x3e7b10[_0x848f('0x30')],_0x3e7b10[_0x848f('0x36')],_0x3e7b10[_0x848f('0x31')],_0x3e7b10[_0x848f('0x32')]);logger[_0x848f('0x33')](_0x848f('0x60'),_0x3e7b10['uniqueid'],util[_0x848f('0x35')](_0x3e7b10,{'showHidden':![],'depth':null}));if(_0x3e7b10[_0x848f('0x47')]!=='6')return;if(_0x3e7b10[_0x848f('0x30')]!==_0x3e7b10[_0x848f('0x36')]){var _0x202313=moment();if(this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]]){if(!this['channels'][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x61')]){this[_0x848f('0x14')][_0x3e7b10['linkedid']][_0x848f('0x61')]=!![];this['channels'][_0x3e7b10[_0x848f('0x36')]]['answertime']=_0x202313['format'](_0x848f('0x45'));if(this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x55')]){this[_0x848f('0x14')][_0x3e7b10['linkedid']]['holdtime']=_0x202313[_0x848f('0x62')](this[_0x848f('0x14')][_0x3e7b10['linkedid']][_0x848f('0x55')],_0x848f('0x63'));}}this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x36')]=_0x3e7b10[_0x848f('0x30')];if(_0x3e7b10[_0x848f('0x32')]!==_0x848f('0x64')){this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x3d')]=_0x3e7b10['calleridnum'];}this[_0x848f('0x14')][_0x3e7b10['linkedid']][_0x848f('0x65')]=_0x3e7b10['calleridname'];this['channels'][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x66')]=_0x3e7b10['channel'];this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x46')]=dispositions[_['toNumber'](_0x3e7b10[_0x848f('0x47')])];if(this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]){this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x67')]=this['agents'][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['id'];this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]]['membername']=this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['name'];}}if(this[_0x848f('0x14')][_0x3e7b10['uniqueid']]){if(!this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x30')]][_0x848f('0x61')]){this[_0x848f('0x14')][_0x3e7b10['uniqueid']][_0x848f('0x61')]=!![];this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x30')]][_0x848f('0x68')]=_0x202313[_0x848f('0x4b')](_0x848f('0x45'));if(this[_0x848f('0x14')][_0x3e7b10['uniqueid']][_0x848f('0x55')]){this['channels'][_0x3e7b10[_0x848f('0x30')]][_0x848f('0x69')]=_0x202313[_0x848f('0x62')](this['channels'][_0x3e7b10['uniqueid']][_0x848f('0x55')],_0x848f('0x63'));}}if(_0x3e7b10[_0x848f('0x32')]!=='xcally-motion-preview'){this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x30')]][_0x848f('0x3d')]=_0x3e7b10['calleridnum'];}this[_0x848f('0x14')][_0x3e7b10['uniqueid']]['connectedlinename']=_0x3e7b10[_0x848f('0x31')];this[_0x848f('0x14')][_0x3e7b10['uniqueid']][_0x848f('0x66')]=_0x3e7b10[_0x848f('0x3a')];this['channels'][_0x3e7b10[_0x848f('0x30')]][_0x848f('0x46')]=dispositions[_[_0x848f('0x6a')](_0x3e7b10[_0x848f('0x47')])];}}else{if(this[_0x848f('0x14')][_0x3e7b10['uniqueid']]){if(this[_0x848f('0x15')][_0x3e7b10['channel']['split']('-')[0x0]]){this['channels'][_0x3e7b10['uniqueid']][_0x848f('0x67')]=this[_0x848f('0x15')][_0x3e7b10['channel'][_0x848f('0x3b')]('-')[0x0]]['id'];this['channels'][_0x3e7b10[_0x848f('0x30')]][_0x848f('0x6b')]=this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')]['split']('-')[0x0]][_0x848f('0x4c')];}}}if(_0x3e7b10[_0x848f('0x38')]===_0x848f('0x39')){if(this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]){this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')]['split']('-')[0x0]]['destconnectedlinenum']=_0x3e7b10[_0x848f('0x3c')];var _0x56528d,_0x130762;if(this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x30')]]){_0x56528d=this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x30')]][_0x848f('0x6c')];_0x130762=this[_0x848f('0x14')][_0x3e7b10['uniqueid']][_0x848f('0x9')];}else if(this[_0x848f('0x14')][_0x3e7b10['linkedid']]){_0x56528d=this[_0x848f('0x14')][_0x3e7b10[_0x848f('0x36')]][_0x848f('0x6c')];_0x130762=this['channels'][_0x3e7b10[_0x848f('0x36')]]['queue'];}logger[_0x848f('0x33')](_0x848f('0x6d'),_0x3e7b10[_0x848f('0x30')],util[_0x848f('0x35')]({'id':this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x3e7b10[_0x848f('0x3c')],'routealias':_0x56528d,'queue':_0x130762||undefined},{'showHidden':![],'depth':null}));this[_0x848f('0x2e')](util['format'](_0x848f('0x3e'),this[_0x848f('0x15')][_0x3e7b10['channel']['split']('-')[0x0]][_0x848f('0x4c')]),'user:agentconnect',{'id':this['agents'][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x848f('0x15')][_0x3e7b10[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x40')],'destconnectedlinenum':_0x3e7b10[_0x848f('0x3c')],'routealias':_0x56528d,'queue':_0x130762||undefined});}}}}catch(_0x413d82){logger[_0x848f('0x4d')](_0x848f('0x6e'),_0x3e7b10[_0x848f('0x30')],util[_0x848f('0x35')](_0x413d82,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x848f('0x2d')][_0x848f('0x6f')]=function(_0x279a2e,_0xf988e9){try{if(this['channels'][_0x279a2e]){logger[_0x848f('0x28')](_0x848f('0x70'),_0x279a2e,_0xf988e9);this[_0x848f('0x14')][_0x279a2e][_0x848f('0x71')]=!![];if(_[_0x848f('0x72')](_0xf988e9,_0x848f('0x73'))){_0xf988e9=_0xf988e9[_0x848f('0x74')]('.wav49',_0x848f('0x75'));}this['channels'][_0x279a2e]['monitorFilename']=_0xf988e9;var _0x4517b1=_[_0x848f('0x76')](this[_0x848f('0x14')][_0x279a2e][_0x848f('0x77')],{'filename':_0xf988e9});if(_[_0x848f('0x5d')](_0x4517b1)){this[_0x848f('0x14')][_0x279a2e][_0x848f('0x77')][_0x848f('0x78')]({'filename':_0xf988e9,'createdAt':moment()[_0x848f('0x4b')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':'rec'});}}}catch(_0x2ce232){logger['error']('[%s][voiceCallReport][mixMonitorFilename]',_0x279a2e,util[_0x848f('0x35')](_0x2ce232,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x848f('0x1e')]=function(_0x3b8a9c){try{if(this[_0x848f('0x2b')](_0x3b8a9c)){logger['debug'](_0x848f('0x79'),_0x3b8a9c[_0x848f('0x30')],util[_0x848f('0x35')](_0x3b8a9c,{'showHidden':![],'depth':null}));if(this['channels'][_0x3b8a9c['uniqueid']]&&_0x3b8a9c[_0x848f('0x3a')]!=_0x848f('0x43')){if(this['isNotNull'](_0x3b8a9c['variable'])){if(this['isNotNull'](_0x3b8a9c[_0x848f('0x7a')]['mixmonitor_filename'])){logger['info'](_0x848f('0x7b'),_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c[_0x848f('0x7c')]);this[_0x848f('0x6f')](_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c['value']);}else if(this[_0x848f('0x2b')](_0x3b8a9c['variable'][_0x848f('0x7d')])){logger[_0x848f('0x28')](_0x848f('0x7e'),_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c[_0x848f('0x7c')]);this[_0x848f('0x14')][_0x3b8a9c[_0x848f('0x30')]]['calleridnum']=_0x3b8a9c[_0x848f('0x7c')];}else if(this[_0x848f('0x2b')](_0x3b8a9c[_0x848f('0x7a')]['xmd-callerid'])){logger[_0x848f('0x28')](_0x848f('0x7f'),_0x3b8a9c['uniqueid'],_0x3b8a9c['value']);this[_0x848f('0x14')][_0x3b8a9c[_0x848f('0x30')]][_0x848f('0x80')]=_0x3b8a9c[_0x848f('0x7c')];}else if(this[_0x848f('0x2b')](_0x3b8a9c[_0x848f('0x7a')]['xmd-cdrtype'])){logger[_0x848f('0x28')](_0x848f('0x81'),_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c[_0x848f('0x7c')]);this[_0x848f('0x14')][_0x3b8a9c[_0x848f('0x30')]][_0x848f('0x5c')]=_0x3b8a9c[_0x848f('0x7c')];}else if(this['isNotNull'](_0x3b8a9c[_0x848f('0x7a')][_0x848f('0x82')])){logger[_0x848f('0x28')](_0x848f('0x83'),_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c[_0x848f('0x7c')][_0x848f('0x3b')](',')[0x0]);this['channels'][_0x3b8a9c['uniqueid']][_0x848f('0x9')]=_0x3b8a9c['value'][_0x848f('0x3b')](',')[0x0];}else if(this[_0x848f('0x2b')](_0x3b8a9c['variable'][_0x848f('0x84')])){logger[_0x848f('0x28')](_0x848f('0x85'),_0x3b8a9c['uniqueid'],_0x3b8a9c[_0x848f('0x7c')]);this[_0x848f('0x14')][_0x3b8a9c[_0x848f('0x30')]][_0x848f('0x86')]=_0x3b8a9c[_0x848f('0x7c')];}else if(this['isNotNull'](_0x3b8a9c[_0x848f('0x7a')][_0x848f('0x87')])){logger[_0x848f('0x28')](_0x848f('0x88'),_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c[_0x848f('0x7c')]);this['channels'][_0x3b8a9c['uniqueid']][_0x848f('0x89')]=_0x3b8a9c[_0x848f('0x7c')];}else if(this[_0x848f('0x2b')](_0x3b8a9c[_0x848f('0x7a')]['xmd-callerid-preview'])){logger[_0x848f('0x28')](_0x848f('0x8a'),_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c[_0x848f('0x7c')]);this['channels'][_0x3b8a9c[_0x848f('0x30')]]['calleridpreview']=_0x3b8a9c['value'];}else if(this[_0x848f('0x2b')](_0x3b8a9c[_0x848f('0x7a')][_0x848f('0x8b')])){logger[_0x848f('0x28')](_0x848f('0x8c'),_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c['value']);this[_0x848f('0x14')][_0x3b8a9c['uniqueid']][_0x848f('0x9')]=_0x3b8a9c[_0x848f('0x7c')];}else if(this[_0x848f('0x2b')](_0x3b8a9c[_0x848f('0x7a')][_0x848f('0x8d')])){logger[_0x848f('0x28')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x3b8a9c[_0x848f('0x30')],_0x3b8a9c[_0x848f('0x7c')]);this[_0x848f('0x14')][_0x3b8a9c['uniqueid']][_0x848f('0x8e')]=_0x3b8a9c[_0x848f('0x7c')];}}}else if(this['isNotNull'](_0x3b8a9c[_0x848f('0x7a')]['mixmonitor_filename'])){if(_0x3b8a9c[_0x848f('0x7c')]){var _0x4cc686=path[_0x848f('0x8f')](_0x3b8a9c[_0x848f('0x7c')])[_0x848f('0x4c')];logger['info'](_0x848f('0x7b'),_0x4cc686,_0x3b8a9c['value']);this['syncMixMonitorFilename'](_0x4cc686,_0x3b8a9c[_0x848f('0x7c')]);}}else if(this[_0x848f('0x14')][_0x3b8a9c[_0x848f('0x36')]]){if(this[_0x848f('0x2b')](_0x3b8a9c[_0x848f('0x7a')])){if(this[_0x848f('0x2b')](_0x3b8a9c['variable'][_0x848f('0x8d')])){logger[_0x848f('0x28')](_0x848f('0x90'),_0x3b8a9c[_0x848f('0x36')],_0x3b8a9c[_0x848f('0x7c')]);this[_0x848f('0x14')][_0x3b8a9c[_0x848f('0x36')]][_0x848f('0x91')]=_0x3b8a9c[_0x848f('0x7c')];}}}}}catch(_0x31b069){logger[_0x848f('0x4d')](_0x848f('0x92'),_0x3b8a9c[_0x848f('0x30')],util[_0x848f('0x35')](_0x31b069,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x848f('0x2d')][_0x848f('0x20')]=function(_0x2b7ca5){try{if(this[_0x848f('0x2b')](_0x2b7ca5)){logger['debug'](_0x848f('0x93'),_0x2b7ca5['uniqueid'],util['inspect'](_0x2b7ca5,{'showHidden':![],'depth':null}));if(this[_0x848f('0x16')][_0x2b7ca5['linkedid']]){if(this['channels'][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x36')]]){this['channels'][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]]['linkedid']][_0x848f('0x30')]=_0x2b7ca5[_0x848f('0x30')];this[_0x848f('0x14')][this['blindTransfers'][_0x2b7ca5[_0x848f('0x36')]]['linkedid']][_0x848f('0x61')]=this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x61')];this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]]['linkedid']][_0x848f('0x68')]=this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]]['answertime'];this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x36')]][_0x848f('0x66')]=this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5['linkedid']][_0x848f('0x36')]][_0x848f('0x3a')];this[_0x848f('0x14')][this['blindTransfers'][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x36')]][_0x848f('0x46')]=this[_0x848f('0x14')][_0x2b7ca5['uniqueid']][_0x848f('0x46')];this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]]=this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x36')]];delete this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x36')]];}else if(this[_0x848f('0x14')][this['blindTransfers'][_0x2b7ca5[_0x848f('0x36')]]['uniqueid']]){this['channels'][this[_0x848f('0x16')][_0x2b7ca5['linkedid']][_0x848f('0x30')]]['uniqueid']=[this['channels'][this['blindTransfers'][_0x2b7ca5['linkedid']]['uniqueid']][_0x848f('0x36')],this['channels'][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x30')]][_0x848f('0x36')]=this['channels'][this['blindTransfers'][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x30')]][_0x848f('0x30')]][0x0];this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5['linkedid']][_0x848f('0x30')]][_0x848f('0x61')]=this['channels'][_0x2b7ca5['uniqueid']]['answered'];this['channels'][this[_0x848f('0x16')][_0x2b7ca5['linkedid']][_0x848f('0x30')]]['answertime']=this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x68')];this[_0x848f('0x14')][this['blindTransfers'][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x30')]][_0x848f('0x66')]=this['channels'][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x30')]]['channel'];this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5['linkedid']][_0x848f('0x30')]]['disposition']=this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]]['disposition'];this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]]=this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]]['uniqueid']];delete this[_0x848f('0x14')][this[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x36')]][_0x848f('0x30')]];}}if(this['channels'][_0x2b7ca5[_0x848f('0x30')]]){logger['info'](_0x848f('0x94'),_0x2b7ca5[_0x848f('0x30')],_0x2b7ca5[_0x848f('0x95')]);var _0x1b88d4=moment();this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x96')]=_0x1b88d4[_0x848f('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x97')]=_0x1b88d4[_0x848f('0x62')](this[_0x848f('0x14')][_0x2b7ca5['uniqueid']][_0x848f('0x55')],'seconds');if(this[_0x848f('0x14')][_0x2b7ca5['uniqueid']][_0x848f('0x61')]){this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x98')]=_0x1b88d4[_0x848f('0x62')](this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x68')],_0x848f('0x63'));this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x69')]=this[_0x848f('0x14')][_0x2b7ca5['uniqueid']]['duration']-this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]]['billableseconds'];}if(_0x2b7ca5[_0x848f('0x38')]===_0x848f('0x39')){if(this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]){this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]=_[_0x848f('0x99')](this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')]['split']('-')[0x0]],[_0x848f('0x49')]);logger[_0x848f('0x33')](_0x848f('0x9a'),_0x2b7ca5[_0x848f('0x30')],util[_0x848f('0x35')]({'id':this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x40')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x848f('0x4b')](_0x848f('0x3e'),this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x4c')]),_0x848f('0x9b'),{'id':this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x848f('0x15')][_0x2b7ca5[_0x848f('0x3a')][_0x848f('0x3b')]('-')[0x0]][_0x848f('0x40')]});for(var _0x9edf2=0x0;_0x9edf2<Object[_0x848f('0x37')](this[_0x848f('0x15')])[_0x848f('0x9c')];_0x9edf2++){var _0x140197=Object[_0x848f('0x37')](this[_0x848f('0x15')])[_0x9edf2];var _0x391709=this[_0x848f('0x15')][_0x140197];if(_0x391709[_0x848f('0x40')]===Number(_0x2b7ca5['connectedlinenum'])){this[_0x848f('0x2e')](util[_0x848f('0x4b')](_0x848f('0x3e'),_0x391709[_0x848f('0x4c')]),'user:agentcomplete',{'id':_0x391709['id'],'destaccountcode':_0x391709[_0x848f('0x40')],'transfer':this[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x9d')]});break;}}}}var _0x2d0e03=this;Promise[_0x848f('0x9e')]()['then'](function(){var _0x5019d7=_0x2d0e03['channels'][_0x2b7ca5['uniqueid']];if(typeof _0x5019d7[_0x848f('0x9d')]===_0x848f('0x9f'))return;if(_[_0x848f('0xa0')](_0x5019d7[_0x848f('0x77')]))return;return RpcSetting[_0x848f('0xa1')]()[_0x848f('0xa2')](function(_0x1a52b1){if(!_0x1a52b1['stopRecordingOnTransfer'])return;return Promise['resolve']()['then'](function(){return ami[_0x848f('0xa3')]({'action':_0x848f('0xa4'),'channel':_0x5019d7[_0x848f('0x3a')]})['catch'](function(){});})[_0x848f('0xa2')](function(){return ami[_0x848f('0xa3')]({'action':_0x848f('0xa4'),'channel':_0x5019d7[_0x848f('0x66')]})['catch'](function(){})[_0x848f('0xa5')](function(){var _0x339a81=_0x2d0e03[_0x848f('0x15')][_0x5019d7['destinationchannel'][_0x848f('0x3b')]('-')[0x0]];if(!_0x339a81)return;io[_0x848f('0x2e')](_0x848f('0xa6'),{'agentId':_0x339a81['id'],'uniqueid':_0x5019d7[_0x848f('0x30')]});});});});})[_0x848f('0xa2')](function(){if(_0x2b7ca5[_0x848f('0xa7')]===_0x848f('0xa8')){_0x2d0e03[_0x848f('0x16')][_0x2b7ca5[_0x848f('0x30')]]=_0x2b7ca5;}else{if(_0x2d0e03[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x5c')]==='outbound'&&_0x2d0e03['blindTransfers'][_0x2b7ca5[_0x848f('0x30')]]){_0x2d0e03['channels'][_0x2b7ca5['uniqueid']]['uniqueid']=[_0x2d0e03[_0x848f('0x14')][_0x2b7ca5['uniqueid']][_0x848f('0x36')],_0x2d0e03['channels'][_0x2b7ca5[_0x848f('0x30')]][_0x848f('0x36')]=_0x2d0e03[_0x848f('0x14')][_0x2b7ca5['uniqueid']][_0x848f('0x30')]][0x0];delete _0x2d0e03[_0x848f('0x16')][_0x2b7ca5['uniqueid']];}}logger['debug'](_0x848f('0xa9'),_0x2b7ca5[_0x848f('0x30')],util[_0x848f('0x35')](_0x2d0e03[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceCallReport',_0x2d0e03[_0x848f('0x14')][_0x2b7ca5[_0x848f('0x30')]]);delete _0x2d0e03[_0x848f('0x14')][_0x2b7ca5['uniqueid']];});}}}catch(_0x5c0d00){logger[_0x848f('0x4d')](_0x848f('0xaa'),_0x2b7ca5[_0x848f('0x30')],util[_0x848f('0x35')](_0x5c0d00,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncAttendedTransfer']=function(_0x11d758){try{if(this[_0x848f('0x2b')](_0x11d758)){logger[_0x848f('0x28')](_0x848f('0xab'),_0x11d758[_0x848f('0x30')],_0x11d758[_0x848f('0xac')],_0x11d758[_0x848f('0xad')]);logger[_0x848f('0x33')](_0x848f('0xae'),_0x11d758[_0x848f('0x30')],util[_0x848f('0x35')](_0x11d758,{'showHidden':![],'depth':null}));var _0x3edfd8;if(this[_0x848f('0x14')][_0x11d758[_0x848f('0xaf')]]){this[_0x848f('0x14')][_0x11d758[_0x848f('0xaf')]][_0x848f('0xb0')]=_0x11d758[_0x848f('0xac')];this[_0x848f('0x14')][_0x11d758[_0x848f('0xaf')]][_0x848f('0xb1')]=_0x11d758[_0x848f('0xad')];if(this[_0x848f('0x14')][_0x11d758[_0x848f('0xb2')]]){_0x3edfd8=this[_0x848f('0x14')][_0x11d758[_0x848f('0xb2')]];this[_0x848f('0x14')][_0x11d758['secondtransfereruniqueid']]=this[_0x848f('0x14')][_0x11d758[_0x848f('0xaf')]];this['channels'][_0x11d758[_0x848f('0xaf')]]=_0x3edfd8;}this[_0x848f('0x14')][_0x11d758[_0x848f('0xb2')]][_0x848f('0x9d')]=_0x848f('0xb3');}else if(this[_0x848f('0x14')][_0x11d758[_0x848f('0xb4')]]){this['channels'][_0x11d758[_0x848f('0xb4')]][_0x848f('0xb0')]=_0x11d758['origtransferercalleridnum'];this['channels'][_0x11d758[_0x848f('0xb4')]][_0x848f('0xb1')]=_0x11d758[_0x848f('0xad')];if(this[_0x848f('0x14')][_0x11d758[_0x848f('0xb5')]]){_0x3edfd8=this[_0x848f('0x14')][_0x11d758[_0x848f('0xb5')]];this[_0x848f('0x14')][_0x11d758[_0x848f('0xb5')]]=this['channels'][_0x11d758[_0x848f('0xb4')]];this[_0x848f('0x14')][_0x11d758[_0x848f('0xb4')]]=_0x3edfd8;}this[_0x848f('0x14')][_0x11d758[_0x848f('0xb4')]][_0x848f('0x9d')]=_0x848f('0xb3');}if((this[_0x848f('0x14')][_0x11d758[_0x848f('0xb5')]]||this[_0x848f('0x14')][_0x11d758[_0x848f('0xb6')]])&&this[_0x848f('0x14')][_0x11d758['secondtransfereruniqueid']]){var _0x4f2572=_[_0x848f('0xb7')]([this[_0x848f('0x14')][_0x11d758[_0x848f('0xb5')]],this[_0x848f('0x14')][_0x11d758[_0x848f('0xb6')]],this[_0x848f('0x14')][_0x11d758[_0x848f('0xb2')]]],function(_0x5337df){return _0x5337df&&_0x5337df[_0x848f('0x5c')]==='outbound'&&_0x5337df[_0x848f('0xb8')];});if(_0x4f2572){if(this[_0x848f('0x14')][_0x11d758[_0x848f('0xb5')]])this[_0x848f('0x14')][_0x11d758['origtransfereruniqueid']]['transferType']='ATTENDED';if(this['channels'][_0x11d758[_0x848f('0xb6')]])this[_0x848f('0x14')][_0x11d758[_0x848f('0xb6')]]['transferType']=_0x848f('0xb3');this[_0x848f('0x14')][_0x11d758[_0x848f('0xb2')]]['transferType']=_0x848f('0xb3');}}}}catch(_0x58b1d6){logger['error'](_0x848f('0xb9'),_0x11d758[_0x848f('0x30')],util[_0x848f('0x35')](_0x58b1d6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x848f('0x2d')][_0x848f('0xba')]=function(_0x589461){try{if(this[_0x848f('0x2b')](_0x589461)){logger[_0x848f('0x28')](_0x848f('0xbb'),_0x589461[_0x848f('0x30')],_0x589461[_0x848f('0xbc')],_0x589461[_0x848f('0xbd')]);logger['debug'](_0x848f('0xbe'),_0x589461[_0x848f('0x30')],util['inspect'](_0x589461,{'showHidden':![],'depth':null}));if(this[_0x848f('0x14')][_0x589461[_0x848f('0xaf')]]){this['channels'][_0x589461[_0x848f('0xaf')]]['transfercalleridnum']=_0x589461[_0x848f('0xbc')];this[_0x848f('0x14')][_0x589461[_0x848f('0xaf')]]['transferconnectedlinenum']=_0x589461[_0x848f('0xbd')];this[_0x848f('0x14')][_0x589461[_0x848f('0xaf')]][_0x848f('0x9d')]='BLIND';this['syncHangup']({'event':_0x848f('0xa8'),'uniqueid':_0x589461[_0x848f('0xaf')],'linkedid':_0x589461[_0x848f('0xbf')],'context':_0x589461[_0x848f('0x38')],'channel':_0x589461['transfererchannel']});}else{this[_0x848f('0x14')][_0x589461[_0x848f('0xbf')]][_0x848f('0x9d')]=_0x848f('0xc0');this[_0x848f('0x20')]({'event':_0x848f('0xa8'),'uniqueid':_0x589461[_0x848f('0xbf')],'linkedid':_0x589461['transfereeuniqueid'],'context':_0x589461['context'],'channel':_0x589461['transfererchannel']});}}}catch(_0x5f33b2){logger[_0x848f('0x4d')](_0x848f('0xc1'),_0x589461['uniqueid'],util[_0x848f('0x35')](_0x5f33b2,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x848f('0x26')]=function(_0x8e4992){try{if(this[_0x848f('0x2b')](_0x8e4992)){logger[_0x848f('0x33')](_0x848f('0xc2'),_0x8e4992[_0x848f('0x30')],util[_0x848f('0x35')](_0x8e4992,{'showHidden':![],'depth':null}));if(this[_0x848f('0x14')][_0x8e4992['uniqueid']]){if(!_[_0x848f('0x5d')](this['channels'][_0x8e4992[_0x848f('0x30')]][_0x848f('0x68')])){this[_0x848f('0x14')][_0x8e4992['uniqueid']]['mohstarttime']=moment()[_0x848f('0x4b')](_0x848f('0x45'));logger['info'](_0x848f('0xc3'),_0x8e4992[_0x848f('0x30')],this[_0x848f('0x14')][_0x8e4992['uniqueid']][_0x848f('0xc4')]);}}}}catch(_0x362aba){logger['error'](_0x848f('0xc5'),_0x8e4992[_0x848f('0x30')],util[_0x848f('0x35')](_0x362aba,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x848f('0x2d')]['syncMusicOnHoldStop']=function(_0x67dc1c){try{if(this[_0x848f('0x2b')](_0x67dc1c)){logger[_0x848f('0x33')](_0x848f('0xc6'),_0x67dc1c[_0x848f('0x30')],util[_0x848f('0x35')](_0x67dc1c,{'showHidden':![],'depth':null}));if(this[_0x848f('0x14')][_0x67dc1c[_0x848f('0x30')]]){if(!_[_0x848f('0x5d')](this[_0x848f('0x14')][_0x67dc1c[_0x848f('0x30')]][_0x848f('0xc4')])){this[_0x848f('0x14')][_0x67dc1c[_0x848f('0x30')]][_0x848f('0xc7')]+=moment()['milliseconds'](0x0)[_0x848f('0x62')](this[_0x848f('0x14')][_0x67dc1c[_0x848f('0x30')]][_0x848f('0xc4')],_0x848f('0x63'));logger[_0x848f('0x28')](_0x848f('0xc8'),_0x67dc1c['uniqueid'],this[_0x848f('0x14')][_0x67dc1c['uniqueid']][_0x848f('0xc7')]);delete this[_0x848f('0x14')][_0x67dc1c[_0x848f('0x30')]]['mohstarttime'];}}}}catch(_0x215cd9){logger['error'](_0x848f('0xc9'),_0x67dc1c['uniqueid'],util[_0x848f('0x35')](_0x215cd9,{'showHidden':![],'depth':null}));}};module[_0x848f('0xca')]=VoiceCallReport;
\ No newline at end of file
index de7014d..3bdecbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20c8=['[%s][voiceDialReport][newexten]\x20event:','toLowerCase','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','[%s][voiceDialReport][newexten]','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','omit','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','lastevent','connect','lastIndexOf','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','endtime','duration','diff','seconds','total','answered','holdtime','starttime','billableseconds','sumBillable','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid','[%s][voiceDialReport][hangup]'];(function(_0x5e1410,_0x538566){var _0x5da9d1=function(_0x34d94a){while(--_0x34d94a){_0x5e1410['push'](_0x5e1410['shift']());}};_0x5da9d1(++_0x538566);}(_0x20c8,0xf8));var _0x820c=function(_0xc4e1b6,_0x2e25cd){_0xc4e1b6=_0xc4e1b6-0x0;var _0x1a3f92=_0x20c8[_0xc4e1b6];return _0x1a3f92;};'use strict';var _=require(_0x820c('0x0'));var moment=require('moment');var util=require(_0x820c('0x1'));var Redis=require(_0x820c('0x2'));var config=require(_0x820c('0x3'));var logger=require(_0x820c('0x4'))(_0x820c('0x5'));var ami=require(_0x820c('0x6'));config['redis']=_[_0x820c('0x7')](config[_0x820c('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x820c('0x9'))(new Redis(config[_0x820c('0x8')]));function VoiceDialReport(_0x10ad89){this[_0x820c('0xa')]=_0x10ad89[_0x820c('0xb')];this[_0x820c('0xc')]=_0x10ad89[_0x820c('0xc')];this[_0x820c('0xd')]={};this[_0x820c('0xe')]={};ami['on'](_0x820c('0xf'),this['syncDialBegin'][_0x820c('0x10')](this));ami['on'](_0x820c('0x11'),this[_0x820c('0x12')][_0x820c('0x10')](this));ami['on'](_0x820c('0x13'),this[_0x820c('0x14')][_0x820c('0x10')](this));ami['on'](_0x820c('0x15'),this[_0x820c('0x16')][_0x820c('0x10')](this));ami['on'](_0x820c('0x17'),this[_0x820c('0x18')][_0x820c('0x10')](this));}VoiceDialReport[_0x820c('0x19')][_0x820c('0x1a')]=function(_0x4ee6bf){return _0x4ee6bf!==null&&!_[_0x820c('0x1b')](_0x4ee6bf);};VoiceDialReport[_0x820c('0x19')][_0x820c('0x1c')]=function(_0x136890,_0x22fec0,_0x3a2163){io['to'](_0x136890)[_0x820c('0x1c')](_0x22fec0,_0x3a2163);};VoiceDialReport[_0x820c('0x19')][_0x820c('0x1d')]=function(_0x5a6c2b){try{if(this['isNotNull'](_0x5a6c2b)){logger[_0x820c('0x1e')](_0x820c('0x1f'),_0x5a6c2b['uniqueid'],util['inspect'](_0x5a6c2b,{'showHidden':![],'depth':null}));if(this[_0x820c('0xa')][_0x5a6c2b[_0x820c('0x20')]]){_[_0x820c('0x21')](this[_0x820c('0xa')][_0x5a6c2b[_0x820c('0x20')]],{'starttime':moment()['format'](_0x820c('0x22')),'lastevent':_0x820c('0x23'),'interface':_0x5a6c2b[_0x820c('0x24')][_0x820c('0x25')](0x0,_0x5a6c2b['channel']['lastIndexOf']('-')),'membername':_0x5a6c2b[_0x820c('0x24')][_0x820c('0x25')](_0x5a6c2b[_0x820c('0x24')]['lastIndexOf']('/')+0x1,_0x5a6c2b[_0x820c('0x24')]['lastIndexOf']('-'))},_[_0x820c('0x26')](_0x5a6c2b,['event',_0x820c('0x27')]));logger[_0x820c('0x28')](_0x820c('0x29'),_0x5a6c2b[_0x820c('0x20')],this[_0x820c('0xa')][_0x5a6c2b[_0x820c('0x20')]][_0x820c('0x2a')],this[_0x820c('0xa')][_0x5a6c2b[_0x820c('0x20')]][_0x820c('0x2b')]);logger[_0x820c('0x1e')](_0x820c('0x2c'),_0x5a6c2b['uniqueid'],util[_0x820c('0x2d')](this[_0x820c('0xa')][_0x5a6c2b[_0x820c('0x20')]],{'showHidden':![],'depth':null}));if(this[_0x820c('0xd')][_0x5a6c2b[_0x820c('0x20')]])_['merge'](this[_0x820c('0xa')][_0x5a6c2b[_0x820c('0x20')]],this[_0x820c('0xd')][_0x5a6c2b['uniqueid']]);this[_0x820c('0x1c')](_0x820c('0x2e'),_0x820c('0x2f'),this[_0x820c('0xa')][_0x5a6c2b['uniqueid']]);logger['debug'](_0x820c('0x30'),_0x5a6c2b['uniqueid'],util[_0x820c('0x2d')](this['channels'][_0x5a6c2b[_0x820c('0x20')]],{'showHidden':![],'depth':null}));ami[_0x820c('0x1c')]('custom:dialbegin',this[_0x820c('0xa')][_0x5a6c2b['uniqueid']]);}}}catch(_0x21ebd6){logger[_0x820c('0x31')]('[%s][voiceDialReport][dialbegin]',_0x5a6c2b[_0x820c('0x20')],util[_0x820c('0x2d')](_0x21ebd6,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x820c('0x19')]['syncDialEnd']=function(_0x4184d8){try{if(this[_0x820c('0x1a')](_0x4184d8)){logger['debug'](_0x820c('0x32'),_0x4184d8['uniqueid'],util[_0x820c('0x2d')](_0x4184d8,{'showHidden':![],'depth':null}));if(this[_0x820c('0xa')][_0x4184d8[_0x820c('0x20')]]){this['channels'][_0x4184d8['uniqueid']]['dialstatus']=_0x4184d8[_0x820c('0x33')];if(_0x4184d8[_0x820c('0x33')]===_0x820c('0x34')){this[_0x820c('0xa')][_0x4184d8['uniqueid']][_0x820c('0x35')]=_0x4184d8[_0x820c('0x35')];this[_0x820c('0xa')][_0x4184d8[_0x820c('0x20')]][_0x820c('0x36')]=_0x4184d8[_0x820c('0x36')];this[_0x820c('0xa')][_0x4184d8['uniqueid']][_0x820c('0x37')]=moment()[_0x820c('0x38')](_0x820c('0x22'));this[_0x820c('0xa')][_0x4184d8[_0x820c('0x20')]][_0x820c('0x39')]=_0x820c('0x3a');logger[_0x820c('0x28')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x4184d8['uniqueid'],_0x4184d8[_0x820c('0x24')]['substring'](_0x4184d8['channel'][_0x820c('0x3b')]('/')+0x1,_0x4184d8['channel'][_0x820c('0x3b')]('-')));logger['debug'](_0x820c('0x3c'),_0x4184d8[_0x820c('0x20')],util[_0x820c('0x2d')](this[_0x820c('0xa')][_0x4184d8[_0x820c('0x20')]],{'showHidden':![],'depth':null}));ami[_0x820c('0x1c')]('custom:dialconnect',this[_0x820c('0xa')][_0x4184d8[_0x820c('0x20')]]);}logger['debug'](_0x820c('0x3d'),_0x4184d8[_0x820c('0x20')],util[_0x820c('0x2d')](this[_0x820c('0xa')][_0x4184d8[_0x820c('0x20')]],{'showHidden':![],'depth':null}));this[_0x820c('0x1c')](_0x820c('0x2e'),_0x820c('0x2f'),this[_0x820c('0xa')][_0x4184d8[_0x820c('0x20')]]);}}}catch(_0x47325){logger[_0x820c('0x31')](_0x820c('0x3e'),_0x4184d8[_0x820c('0x20')],util[_0x820c('0x2d')](_0x47325,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x820c('0x14')]=function(_0x229e91){try{if(this[_0x820c('0x1a')](_0x229e91)){logger[_0x820c('0x1e')](_0x820c('0x3f'),_0x229e91[_0x820c('0x20')],util['inspect'](_0x229e91,{'showHidden':![],'depth':null}));this[_0x820c('0x40')](_0x229e91[_0x820c('0x20')],_[_0x820c('0x41')](_0x229e91['variable'])[0x0],_0x229e91[_0x820c('0x42')]);if(this['isNotNull'](_0x229e91[_0x820c('0x43')])&&this[_0x820c('0x1a')](_0x229e91[_0x820c('0x43')][_0x820c('0x44')])){if(_['isUndefined'](this['channels'][_0x229e91[_0x820c('0x20')]])){this[_0x820c('0xa')][_0x229e91['uniqueid']]={'routeId':_0x229e91[_0x820c('0x42')],'variables':this[_0x820c('0xe')][_0x229e91[_0x820c('0x20')]],'motionChannel':'voice'};logger['info'](_0x820c('0x45'),_0x229e91[_0x820c('0x20')],_0x229e91[_0x820c('0x43')]['outboundrouteid'],_[_0x820c('0x41')](_0x229e91[_0x820c('0x43')])[0x0],_0x229e91[_0x820c('0x42')]);logger['debug'](_0x820c('0x46'),_0x229e91[_0x820c('0x20')],util[_0x820c('0x2d')](this[_0x820c('0xa')][_0x229e91[_0x820c('0x20')]],{'showHidden':![],'depth':null}));this[_0x820c('0x1c')]('voice:outbound',_0x820c('0x2f'),this[_0x820c('0xa')][_0x229e91[_0x820c('0x20')]]);}}}}catch(_0x493a33){logger[_0x820c('0x31')](_0x820c('0x47'),_0x229e91[_0x820c('0x20')],util[_0x820c('0x2d')](_0x493a33,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x820c('0x19')][_0x820c('0x40')]=function(_0x136fbd,_0x4b0fb9,_0x375776){var _0x3d0e14=[_0x820c('0x48'),_0x820c('0x49'),_0x820c('0x4a'),_0x820c('0x4b'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x820c('0x4c'),_0x820c('0x4d'),_0x820c('0x4e'),'sipuri',_0x820c('0x4f'),_0x820c('0x50'),_0x820c('0x51'),_0x820c('0x52'),'memberinterface',_0x820c('0x53'),_0x820c('0x2a'),_0x820c('0x54'),_0x820c('0x55')];if(!_[_0x820c('0x56')](_0x4b0fb9)&&!_[_0x820c('0x57')](_0x3d0e14,_0x4b0fb9)){if(_[_0x820c('0x1b')](this['variables'][_0x136fbd])){this[_0x820c('0xe')][_0x136fbd]={};}this[_0x820c('0xe')][_0x136fbd][_0x4b0fb9]=_0x375776;}};VoiceDialReport[_0x820c('0x19')][_0x820c('0x18')]=function(_0x589a9d){try{if(this[_0x820c('0x1a')](_0x589a9d)){logger[_0x820c('0x1e')](_0x820c('0x58'),_0x589a9d[_0x820c('0x20')],util['inspect'](_0x589a9d,{'showHidden':![],'depth':null}));if(this[_0x820c('0xa')][_0x589a9d['uniqueid']]){logger['info']('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x589a9d[_0x820c('0x20')],_0x589a9d['cause-txt']);this['channels'][_0x589a9d[_0x820c('0x20')]][_0x820c('0x59')]=moment()[_0x820c('0x38')](_0x820c('0x22'));this[_0x820c('0xa')][_0x589a9d['uniqueid']][_0x820c('0x5a')]=moment(this['channels'][_0x589a9d[_0x820c('0x20')]][_0x820c('0x59')])[_0x820c('0x5b')](this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]]['starttime'],_0x820c('0x5c'));this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]][_0x820c('0x39')]='complete';this[_0x820c('0xc')][_0x820c('0x5d')]+=0x1;if(this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]][_0x820c('0x37')]){this[_0x820c('0xc')][_0x820c('0x5e')]+=0x1;this['channels'][_0x589a9d[_0x820c('0x20')]][_0x820c('0x5f')]=moment(this['channels'][_0x589a9d['uniqueid']][_0x820c('0x37')])[_0x820c('0x5b')](this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]][_0x820c('0x60')],_0x820c('0x5c'));this['channels'][_0x589a9d['uniqueid']][_0x820c('0x61')]=moment(this['channels'][_0x589a9d[_0x820c('0x20')]][_0x820c('0x59')])['diff'](this['channels'][_0x589a9d[_0x820c('0x20')]]['answertime'],'seconds');this['outbound']['sumHoldTime']+=this['channels'][_0x589a9d[_0x820c('0x20')]][_0x820c('0x5f')]||0x0;this[_0x820c('0xc')][_0x820c('0x62')]+=this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]][_0x820c('0x61')];}this['outbound'][_0x820c('0x63')]+=this[_0x820c('0xa')][_0x589a9d['uniqueid']]['duration'];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x589a9d[_0x820c('0x20')],util[_0x820c('0x2d')](this[_0x820c('0xa')][_0x589a9d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x820c('0x1c')](_0x820c('0x64'),this['channels'][_0x589a9d[_0x820c('0x20')]]);logger[_0x820c('0x1e')](_0x820c('0x65'),_0x589a9d[_0x820c('0x20')],util[_0x820c('0x2d')](this['channels'][_0x589a9d[_0x820c('0x20')]],{'showHidden':![],'depth':null}));ami[_0x820c('0x1c')](_0x820c('0x66'),this[_0x820c('0xa')][_0x589a9d['uniqueid']]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x589a9d['uniqueid'],util[_0x820c('0x2d')](this['channels'][_0x589a9d[_0x820c('0x20')]],{'showHidden':![],'depth':null}));this[_0x820c('0x1c')](_0x820c('0x2e'),_0x820c('0x67'),this['outbound']);logger[_0x820c('0x28')](_0x820c('0x68'),JSON[_0x820c('0x69')](this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]]));logger[_0x820c('0x1e')](_0x820c('0x6a'),_0x589a9d[_0x820c('0x20')],util['inspect'](this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]],{'showHidden':![],'depth':null}));this['emit'](_0x820c('0x2e'),'voice_outbound_channel:remove',this[_0x820c('0xa')][_0x589a9d[_0x820c('0x20')]]);delete this['channels'][_0x589a9d[_0x820c('0x20')]];}else if(this[_0x820c('0xa')][_0x589a9d[_0x820c('0x6b')]]){this[_0x820c('0xa')][_0x589a9d[_0x820c('0x6b')]]['uniqueid']=this[_0x820c('0xa')][_0x589a9d[_0x820c('0x6b')]]['destuniqueid'];}if(this['variables'][_0x589a9d[_0x820c('0x20')]]){delete this[_0x820c('0xe')][_0x589a9d['uniqueid']];}}}catch(_0x57b0fe){logger[_0x820c('0x31')](_0x820c('0x6c'),_0x589a9d[_0x820c('0x20')],util[_0x820c('0x2d')](_0x57b0fe,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x820c('0x19')]['syncNewExten']=function(_0x57285b){try{if(this[_0x820c('0x1a')](_0x57285b)){logger[_0x820c('0x1e')](_0x820c('0x6d'),_0x57285b[_0x820c('0x20')],util[_0x820c('0x2d')](_0x57285b,{'showHidden':![],'depth':null}));if(_0x57285b['application'][_0x820c('0x6e')]()==='set'){_0x57285b[_0x820c('0x6f')]=(_0x57285b['appdata']||_0x57285b[_0x820c('0x6f')])[_0x820c('0x6e')]();if(_[_0x820c('0x70')](_0x57285b[_0x820c('0x6f')],_0x820c('0x71'))){if(_[_0x820c('0x1b')](this['applications'][_0x57285b[_0x820c('0x20')]]))this[_0x820c('0xd')][_0x57285b['uniqueid']]={};logger[_0x820c('0x28')](_0x820c('0x72'),_0x57285b[_0x820c('0x20')],_0x57285b[_0x820c('0x73')],_0x57285b[_0x820c('0x6f')]);var _0xe7d79=_0x57285b[_0x820c('0x6f')][_0x820c('0x74')]('=');var _0x21dc09=_0xe7d79[0x0]['match'](/cdr\((.*)\)/);if(_0x21dc09)this[_0x820c('0xd')][_0x57285b[_0x820c('0x20')]][_0x21dc09[0x1]]=_0xe7d79[0x1];}}}}catch(_0x4cff37){logger['error'](_0x820c('0x75'),_0x57285b[_0x820c('0x20')],util['inspect'](_0x4cff37,{'showHidden':![],'depth':null}));}};module[_0x820c('0x76')]=VoiceDialReport;
\ No newline at end of file
+var _0xe1fa=['varset','syncNewExten','syncHangup','isUndefined','prototype','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','substring','channel','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','inspect','voice:outbound','error','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','starttime','seconds','complete','total','answered','answertime','diff','sumHoldTime','holdtime','sumBillable','billableseconds','sumDuration','duration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','split','match','exports','moment','../../../config/logger','ami','../ami','localhost','socket.io-emitter','redis','channels','outboundChannels','outbound','applications','variables','syncDialBegin','bind','syncDialEnd'];(function(_0x3d45c6,_0xe70143){var _0x272e62=function(_0x488a57){while(--_0x488a57){_0x3d45c6['push'](_0x3d45c6['shift']());}};_0x272e62(++_0xe70143);}(_0xe1fa,0xd9));var _0xae1f=function(_0x173f28,_0x27bee3){_0x173f28=_0x173f28-0x0;var _0x25ad06=_0xe1fa[_0x173f28];return _0x25ad06;};'use strict';var _=require('lodash');var moment=require(_0xae1f('0x0'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xae1f('0x1'))(_0xae1f('0x2'));var ami=require(_0xae1f('0x3'));config['redis']=_['defaults'](config['redis'],{'host':_0xae1f('0x4'),'port':0x18eb});var io=require(_0xae1f('0x5'))(new Redis(config[_0xae1f('0x6')]));function VoiceDialReport(_0x18178c){this[_0xae1f('0x7')]=_0x18178c[_0xae1f('0x8')];this[_0xae1f('0x9')]=_0x18178c[_0xae1f('0x9')];this[_0xae1f('0xa')]={};this[_0xae1f('0xb')]={};ami['on']('dialbegin',this[_0xae1f('0xc')][_0xae1f('0xd')](this));ami['on']('dialend',this[_0xae1f('0xe')][_0xae1f('0xd')](this));ami['on'](_0xae1f('0xf'),this['syncVarSet'][_0xae1f('0xd')](this));ami['on']('newexten',this[_0xae1f('0x10')][_0xae1f('0xd')](this));ami['on']('hangup',this[_0xae1f('0x11')]['bind'](this));}VoiceDialReport['prototype']['isNotNull']=function(_0x2ffdd1){return _0x2ffdd1!==null&&!_[_0xae1f('0x12')](_0x2ffdd1);};VoiceDialReport[_0xae1f('0x13')]['emit']=function(_0x5ae8e3,_0x53c6ba,_0x21ac83){io['to'](_0x5ae8e3)[_0xae1f('0x14')](_0x53c6ba,_0x21ac83);};VoiceDialReport[_0xae1f('0x13')]['syncDialBegin']=function(_0x1e81c3){try{if(this[_0xae1f('0x15')](_0x1e81c3)){logger[_0xae1f('0x16')](_0xae1f('0x17'),_0x1e81c3[_0xae1f('0x18')],util['inspect'](_0x1e81c3,{'showHidden':![],'depth':null}));if(this[_0xae1f('0x7')][_0x1e81c3['uniqueid']]){_[_0xae1f('0x19')](this[_0xae1f('0x7')][_0x1e81c3[_0xae1f('0x18')]],{'starttime':moment()[_0xae1f('0x1a')](_0xae1f('0x1b')),'lastevent':_0xae1f('0x1c'),'interface':_0x1e81c3['channel'][_0xae1f('0x1d')](0x0,_0x1e81c3[_0xae1f('0x1e')][_0xae1f('0x1f')]('-')),'membername':_0x1e81c3['channel'][_0xae1f('0x1d')](_0x1e81c3[_0xae1f('0x1e')]['lastIndexOf']('/')+0x1,_0x1e81c3[_0xae1f('0x1e')][_0xae1f('0x1f')]('-'))},_[_0xae1f('0x20')](_0x1e81c3,[_0xae1f('0x21'),_0xae1f('0x22')]));logger[_0xae1f('0x23')](_0xae1f('0x24'),_0x1e81c3[_0xae1f('0x18')],this[_0xae1f('0x7')][_0x1e81c3['uniqueid']][_0xae1f('0x25')],this[_0xae1f('0x7')][_0x1e81c3[_0xae1f('0x18')]]['interface']);logger['debug']('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x1e81c3[_0xae1f('0x18')],util[_0xae1f('0x26')](this[_0xae1f('0x7')][_0x1e81c3['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xae1f('0xa')][_0x1e81c3['uniqueid']])_[_0xae1f('0x19')](this[_0xae1f('0x7')][_0x1e81c3[_0xae1f('0x18')]],this[_0xae1f('0xa')][_0x1e81c3[_0xae1f('0x18')]]);this[_0xae1f('0x14')](_0xae1f('0x27'),'voice_outbound_channel:save',this[_0xae1f('0x7')][_0x1e81c3[_0xae1f('0x18')]]);logger[_0xae1f('0x16')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x1e81c3['uniqueid'],util[_0xae1f('0x26')](this[_0xae1f('0x7')][_0x1e81c3['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xae1f('0x14')]('custom:dialbegin',this[_0xae1f('0x7')][_0x1e81c3[_0xae1f('0x18')]]);}}}catch(_0x105169){logger[_0xae1f('0x28')]('[%s][voiceDialReport][dialbegin]',_0x1e81c3[_0xae1f('0x18')],util[_0xae1f('0x26')](_0x105169,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xae1f('0xe')]=function(_0x2578ea){try{if(this['isNotNull'](_0x2578ea)){logger[_0xae1f('0x16')](_0xae1f('0x29'),_0x2578ea['uniqueid'],util['inspect'](_0x2578ea,{'showHidden':![],'depth':null}));if(this[_0xae1f('0x7')][_0x2578ea['uniqueid']]){this[_0xae1f('0x7')][_0x2578ea['uniqueid']][_0xae1f('0x2a')]=_0x2578ea[_0xae1f('0x2a')];if(_0x2578ea[_0xae1f('0x2a')]===_0xae1f('0x2b')){this['channels'][_0x2578ea[_0xae1f('0x18')]]['connectedlinenum']=_0x2578ea['connectedlinenum'];this[_0xae1f('0x7')][_0x2578ea['uniqueid']]['connectedlinename']=_0x2578ea[_0xae1f('0x2c')];this['channels'][_0x2578ea['uniqueid']]['answertime']=moment()[_0xae1f('0x1a')](_0xae1f('0x1b'));this['channels'][_0x2578ea[_0xae1f('0x18')]][_0xae1f('0x2d')]=_0xae1f('0x2e');logger[_0xae1f('0x23')](_0xae1f('0x2f'),_0x2578ea[_0xae1f('0x18')],_0x2578ea[_0xae1f('0x1e')][_0xae1f('0x1d')](_0x2578ea[_0xae1f('0x1e')][_0xae1f('0x1f')]('/')+0x1,_0x2578ea['channel'][_0xae1f('0x1f')]('-')));logger[_0xae1f('0x16')](_0xae1f('0x30'),_0x2578ea[_0xae1f('0x18')],util[_0xae1f('0x26')](this['channels'][_0x2578ea[_0xae1f('0x18')]],{'showHidden':![],'depth':null}));ami[_0xae1f('0x14')](_0xae1f('0x31'),this['channels'][_0x2578ea[_0xae1f('0x18')]]);}logger[_0xae1f('0x16')](_0xae1f('0x32'),_0x2578ea['uniqueid'],util['inspect'](this[_0xae1f('0x7')][_0x2578ea['uniqueid']],{'showHidden':![],'depth':null}));this[_0xae1f('0x14')](_0xae1f('0x27'),_0xae1f('0x33'),this[_0xae1f('0x7')][_0x2578ea['uniqueid']]);}}}catch(_0x242953){logger[_0xae1f('0x28')](_0xae1f('0x34'),_0x2578ea[_0xae1f('0x18')],util[_0xae1f('0x26')](_0x242953,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xae1f('0x13')]['syncVarSet']=function(_0x8754a3){try{if(this[_0xae1f('0x15')](_0x8754a3)){logger[_0xae1f('0x16')](_0xae1f('0x35'),_0x8754a3[_0xae1f('0x18')],util['inspect'](_0x8754a3,{'showHidden':![],'depth':null}));this[_0xae1f('0x36')](_0x8754a3['uniqueid'],_['keys'](_0x8754a3[_0xae1f('0x37')])[0x0],_0x8754a3[_0xae1f('0x38')]);if(this[_0xae1f('0x15')](_0x8754a3['variable'])&&this[_0xae1f('0x15')](_0x8754a3[_0xae1f('0x37')][_0xae1f('0x39')])){if(_[_0xae1f('0x12')](this[_0xae1f('0x7')][_0x8754a3['uniqueid']])){this[_0xae1f('0x7')][_0x8754a3[_0xae1f('0x18')]]={'routeId':_0x8754a3[_0xae1f('0x38')],'variables':this[_0xae1f('0xb')][_0x8754a3[_0xae1f('0x18')]],'motionChannel':_0xae1f('0x3a')};logger[_0xae1f('0x23')](_0xae1f('0x3b'),_0x8754a3[_0xae1f('0x18')],_0x8754a3['variable'][_0xae1f('0x39')],_['keys'](_0x8754a3['variable'])[0x0],_0x8754a3[_0xae1f('0x38')]);logger[_0xae1f('0x16')](_0xae1f('0x3c'),_0x8754a3[_0xae1f('0x18')],util['inspect'](this[_0xae1f('0x7')][_0x8754a3[_0xae1f('0x18')]],{'showHidden':![],'depth':null}));this[_0xae1f('0x14')](_0xae1f('0x27'),_0xae1f('0x33'),this[_0xae1f('0x7')][_0x8754a3[_0xae1f('0x18')]]);}}}}catch(_0x259cd4){logger[_0xae1f('0x28')](_0xae1f('0x3d'),_0x8754a3[_0xae1f('0x18')],util[_0xae1f('0x26')](_0x259cd4,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xae1f('0x13')][_0xae1f('0x36')]=function(_0xcd9ca8,_0x1d2189,_0x153ad5){var _0x3d0f91=[_0xae1f('0x3e'),_0xae1f('0x3f'),_0xae1f('0x40'),_0xae1f('0x41'),_0xae1f('0x42'),'rtpaudioqoslossbridged',_0xae1f('0x43'),_0xae1f('0x44'),'sipcallid',_0xae1f('0x45'),_0xae1f('0x46'),_0xae1f('0x47'),_0xae1f('0x48'),_0xae1f('0x49'),_0xae1f('0x4a'),_0xae1f('0x4b'),_0xae1f('0x25'),_0xae1f('0x4c'),'memberrealtime'];if(!_['isNil'](_0x1d2189)&&!_[_0xae1f('0x4d')](_0x3d0f91,_0x1d2189)){if(_[_0xae1f('0x12')](this[_0xae1f('0xb')][_0xcd9ca8])){this[_0xae1f('0xb')][_0xcd9ca8]={};}this[_0xae1f('0xb')][_0xcd9ca8][_0x1d2189]=_0x153ad5;}};VoiceDialReport[_0xae1f('0x13')][_0xae1f('0x11')]=function(_0x21ed58){try{if(this[_0xae1f('0x15')](_0x21ed58)){logger[_0xae1f('0x16')](_0xae1f('0x4e'),_0x21ed58[_0xae1f('0x18')],util[_0xae1f('0x26')](_0x21ed58,{'showHidden':![],'depth':null}));if(this['channels'][_0x21ed58[_0xae1f('0x18')]]){logger['info'](_0xae1f('0x4f'),_0x21ed58['uniqueid'],_0x21ed58[_0xae1f('0x50')]);this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]][_0xae1f('0x51')]=moment()['format'](_0xae1f('0x1b'));this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]]['duration']=moment(this['channels'][_0x21ed58[_0xae1f('0x18')]][_0xae1f('0x51')])['diff'](this[_0xae1f('0x7')][_0x21ed58['uniqueid']][_0xae1f('0x52')],_0xae1f('0x53'));this['channels'][_0x21ed58[_0xae1f('0x18')]]['lastevent']=_0xae1f('0x54');this[_0xae1f('0x9')][_0xae1f('0x55')]+=0x1;if(this[_0xae1f('0x7')][_0x21ed58['uniqueid']]['answertime']){this[_0xae1f('0x9')][_0xae1f('0x56')]+=0x1;this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]]['holdtime']=moment(this['channels'][_0x21ed58['uniqueid']][_0xae1f('0x57')])[_0xae1f('0x58')](this['channels'][_0x21ed58[_0xae1f('0x18')]][_0xae1f('0x52')],_0xae1f('0x53'));this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]]['billableseconds']=moment(this[_0xae1f('0x7')][_0x21ed58['uniqueid']]['endtime'])[_0xae1f('0x58')](this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]][_0xae1f('0x57')],_0xae1f('0x53'));this['outbound'][_0xae1f('0x59')]+=this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]][_0xae1f('0x5a')]||0x0;this[_0xae1f('0x9')][_0xae1f('0x5b')]+=this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]][_0xae1f('0x5c')];}this[_0xae1f('0x9')][_0xae1f('0x5d')]+=this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]][_0xae1f('0x5e')];logger[_0xae1f('0x16')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x21ed58['uniqueid'],util[_0xae1f('0x26')](this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]],{'showHidden':![],'depth':null}));ami['emit'](_0xae1f('0x5f'),this[_0xae1f('0x7')][_0x21ed58['uniqueid']]);logger[_0xae1f('0x16')](_0xae1f('0x60'),_0x21ed58[_0xae1f('0x18')],util[_0xae1f('0x26')](this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]],{'showHidden':![],'depth':null}));ami['emit'](_0xae1f('0x61'),this['channels'][_0x21ed58[_0xae1f('0x18')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x21ed58[_0xae1f('0x18')],util[_0xae1f('0x26')](this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x18')]],{'showHidden':![],'depth':null}));this['emit'](_0xae1f('0x27'),_0xae1f('0x62'),this[_0xae1f('0x9')]);logger[_0xae1f('0x23')](_0xae1f('0x63'),JSON['stringify'](this['channels'][_0x21ed58[_0xae1f('0x18')]]));logger[_0xae1f('0x16')](_0xae1f('0x64'),_0x21ed58[_0xae1f('0x18')],util['inspect'](this[_0xae1f('0x7')][_0x21ed58['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xae1f('0x27'),_0xae1f('0x65'),this[_0xae1f('0x7')][_0x21ed58['uniqueid']]);delete this['channels'][_0x21ed58[_0xae1f('0x18')]];}else if(this[_0xae1f('0x7')][_0x21ed58['linkedid']]){this[_0xae1f('0x7')][_0x21ed58[_0xae1f('0x66')]]['uniqueid']=this['channels'][_0x21ed58[_0xae1f('0x66')]][_0xae1f('0x67')];}if(this['variables'][_0x21ed58['uniqueid']]){delete this['variables'][_0x21ed58['uniqueid']];}}}catch(_0x34c5ad){logger[_0xae1f('0x28')](_0xae1f('0x68'),_0x21ed58[_0xae1f('0x18')],util['inspect'](_0x34c5ad,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xae1f('0x13')][_0xae1f('0x10')]=function(_0x5c8533){try{if(this[_0xae1f('0x15')](_0x5c8533)){logger['debug'](_0xae1f('0x69'),_0x5c8533[_0xae1f('0x18')],util[_0xae1f('0x26')](_0x5c8533,{'showHidden':![],'depth':null}));if(_0x5c8533[_0xae1f('0x6a')][_0xae1f('0x6b')]()===_0xae1f('0x6c')){_0x5c8533[_0xae1f('0x6d')]=(_0x5c8533[_0xae1f('0x6e')]||_0x5c8533['applicationdata'])[_0xae1f('0x6b')]();if(_[_0xae1f('0x6f')](_0x5c8533[_0xae1f('0x6d')],_0xae1f('0x70'))){if(_[_0xae1f('0x12')](this['applications'][_0x5c8533[_0xae1f('0x18')]]))this[_0xae1f('0xa')][_0x5c8533[_0xae1f('0x18')]]={};logger[_0xae1f('0x23')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x5c8533[_0xae1f('0x18')],_0x5c8533['application'],_0x5c8533['applicationdata']);var _0x486db5=_0x5c8533['applicationdata'][_0xae1f('0x71')]('=');var _0xd46109=_0x486db5[0x0][_0xae1f('0x72')](/cdr\((.*)\)/);if(_0xd46109)this[_0xae1f('0xa')][_0x5c8533[_0xae1f('0x18')]][_0xd46109[0x1]]=_0x486db5[0x1];}}}}catch(_0x17bd78){logger['error']('[%s][voiceDialReport][newexten]',_0x5c8533[_0xae1f('0x18')],util[_0xae1f('0x26')](_0x17bd78,{'showHidden':![],'depth':null}));}};module[_0xae1f('0x73')]=VoiceDialReport;
\ No newline at end of file
index eaf024c..13b6105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb518=['queue','[voiceQueueReport][queuesummary]\x20event:','countBy','callers','toNumber','loggedin','loggedIn','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','uniqueid','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','merge','pick','keys','push','syncQueueCallerAbandon','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','lastAssignedTo','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','channel','linkedid','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceQueueReport][hangup]','length','sumHoldTime','diff','sumDuration','milliseconds','total','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','custom:voiceQueueReport','transfereeuniqueid','secondtransfererexten','ATTENDED','secondtransfereruniqueid','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDEDTRANSFER','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','toLowerCase','set','applicationdata','appdata','startsWith','CDR(routeAlias)','cdr(','application','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/logger','ami','../ami','../model/queueReport','defaults','redis','localhost','socket.io-emitter','prototype','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','queuesummary','queuesummarycomplete','syncQueueSummaryComplete','bind','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','queuecallerleave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','hangup','syncHangup','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','enqueue','isNil','Action','status','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','variables','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save','format','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','sumBillable','unmanaged','abandoned','Trunk','name','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','clearZombieChannels','queues','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','syncQueueSummary'];(function(_0x1dd7a1,_0x14b7ac){var _0x24c7d2=function(_0x114cca){while(--_0x114cca){_0x1dd7a1['push'](_0x1dd7a1['shift']());}};_0x24c7d2(++_0x14b7ac);}(_0xb518,0x17c));var _0x8b51=function(_0x4d21b1,_0x7d4de3){_0x4d21b1=_0x4d21b1-0x0;var _0x1be7a3=_0xb518[_0x4d21b1];return _0x1be7a3;};'use strict';var _=require(_0x8b51('0x0'));var moment=require(_0x8b51('0x1'));var util=require(_0x8b51('0x2'));var md5=require(_0x8b51('0x3'));var Redis=require(_0x8b51('0x4'));var config=require('../../../config/environment');var logger=require(_0x8b51('0x5'))(_0x8b51('0x6'));var ami=require(_0x8b51('0x7'));var QueueReport=require(_0x8b51('0x8'));config['redis']=_[_0x8b51('0x9')](config[_0x8b51('0xa')],{'host':_0x8b51('0xb'),'port':0x18eb});var io=require(_0x8b51('0xc'))(new Redis(config[_0x8b51('0xa')]));var Sequence=function(){};Sequence[_0x8b51('0xd')]['enqueue']=function(_0xefcc62){this[_0x8b51('0xe')]=this[_0x8b51('0xe')]?this['tail'][_0x8b51('0xf')](_0xefcc62):_0xefcc62();};function VoiceQueueReport(_0x3f9f18){this[_0x8b51('0x10')]=new Sequence();this[_0x8b51('0x11')]={};this['agents']=_0x3f9f18[_0x8b51('0x12')];this[_0x8b51('0x13')]=_0x3f9f18[_0x8b51('0x14')];this['voiceQueues']=_0x3f9f18[_0x8b51('0x15')];this[_0x8b51('0x16')]=!![];this[_0x8b51('0x17')]=_0x3f9f18[_0x8b51('0x17')];this['variables']={};ami['on'](_0x8b51('0x18'),this['syncQueueSummary']['bind'](this));ami['on'](_0x8b51('0x19'),this[_0x8b51('0x1a')][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x1c'),this[_0x8b51('0x1d')][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x1e'),this['syncQueueCallerAbandon'][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x1f'),this['syncQueueCallerLeave'][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x20'),this[_0x8b51('0x21')]['bind'](this));ami['on'](_0x8b51('0x22'),this[_0x8b51('0x23')][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x24'),this['syncVarSet'][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x25'),this[_0x8b51('0x26')]['bind'](this));ami['on']('fullybooted',this['syncFullyBooted'][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x27'),this[_0x8b51('0x28')][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x29'),this[_0x8b51('0x2a')]['bind'](this));ami['on'](_0x8b51('0x2b'),this[_0x8b51('0x2c')][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x2d'),this[_0x8b51('0x2e')][_0x8b51('0x1b')](this));ami['on'](_0x8b51('0x2f'),this[_0x8b51('0x30')][_0x8b51('0x1b')](this));this[_0x8b51('0x31')]();this[_0x8b51('0x32')]();}function clearChannels(_0x3a1120){if(!_['isEmpty'](_0x3a1120)){for(var _0xb23566 in _0x3a1120){if(_0x3a1120[_0x8b51('0x33')](_0xb23566)){delete _0x3a1120[_0xb23566];}}}}function clearCampaigns(_0x2f7a34){if(!_['isEmpty'](_0x2f7a34)){for(var _0xf17f40 in _0x2f7a34){if(_0x2f7a34[_0x8b51('0x33')](_0xf17f40)){_0x2f7a34[_0xf17f40][_0x8b51('0x34')]=0x0;}}}}function clearVoiceQueues(_0x37a5d4){if(!_['isEmpty'](_0x37a5d4)){for(var _0x586978 in _0x37a5d4){if(_0x37a5d4['hasOwnProperty'](_0x586978)){_0x37a5d4[_0x586978][_0x8b51('0x34')]=0x0;_0x37a5d4[_0x586978][_0x8b51('0x35')]=0x0;_0x37a5d4[_0x586978][_0x8b51('0x36')]=0x0;_0x37a5d4[_0x586978][_0x8b51('0x37')]=0x0;_0x37a5d4[_0x586978][_0x8b51('0x38')]=!![];}}}}function clearAgentBooked(_0x656afc){if(!_['isEmpty'](_0x656afc)){for(var _0x3babd3 in _0x656afc){if(_0x656afc[_0x8b51('0x33')](_0x3babd3)){_0x656afc[_0x3babd3][_0x8b51('0x39')]=!![];}}}}VoiceQueueReport[_0x8b51('0xd')]['clearZombieChannels']=function(){var _0x3ac1a5=this;for(var _0x2af979 in this['channels']){if(this[_0x8b51('0x13')][_0x8b51('0x33')](_0x2af979)&&!this['channels'][_0x2af979]['switch']){this[_0x8b51('0x10')][_0x8b51('0x3a')](function(){if(!_[_0x8b51('0x3b')](_0x3ac1a5[_0x8b51('0x13')][_0x2af979])){return ami[_0x8b51('0x3c')]({'action':_0x8b51('0x3d'),'channel':_0x3ac1a5[_0x8b51('0x13')][_0x2af979]['channel']})[_0x8b51('0x3e')](function(_0x950c40){if(_0x950c40[_0x8b51('0x3f')]===_0x8b51('0x40')){setTimeout(function(){if(_0x3ac1a5[_0x8b51('0x13')][_0x2af979]){delete _0x3ac1a5[_0x8b51('0x13')][_0x2af979];logger[_0x8b51('0x41')](_0x8b51('0x42'),_0x2af979,util[_0x8b51('0x43')](_0x950c40,{'showHidden':![],'depth':null}));}if(_0x3ac1a5[_0x8b51('0x11')][_0x2af979]){delete _0x3ac1a5['queueReports'][_0x2af979];logger[_0x8b51('0x41')](_0x8b51('0x44'),_0x2af979,util['inspect'](_0x950c40,{'showHidden':![],'depth':null}));}if(_0x3ac1a5[_0x8b51('0x45')][_0x2af979]){delete _0x3ac1a5[_0x8b51('0x45')][_0x2af979];logger[_0x8b51('0x41')]('[%s][voiceQueueReport][checkVariables]',_0x2af979,util[_0x8b51('0x43')](_0x950c40,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x8b51('0x46')]=function(){logger[_0x8b51('0x41')](_0x8b51('0x47'));clearChannels(this[_0x8b51('0x13')]);this[_0x8b51('0x48')](this[_0x8b51('0x11')]);clearAgentBooked(this[_0x8b51('0x12')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x8b51('0x17')]);};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x48')]=function(_0x471d7f){var _0x365f50=this;if(!_['isEmpty'](_0x471d7f)){for(var _0x52aad5 in _0x471d7f){if(_0x471d7f[_0x8b51('0x33')](_0x52aad5)){_0x365f50[_0x8b51('0x49')](_0x471d7f[_0x52aad5],_0x8b51('0x4a'));delete _0x471d7f[_0x52aad5];}}}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x4b')]=function(_0x17752a,_0x4619d5,_0x47bccd){io['to'](_0x17752a)[_0x8b51('0x4b')](_0x4619d5,_0x47bccd);};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x4c')]=function(_0x43b296,_0x566038){logger[_0x8b51('0x4d')](_0x8b51('0x4e')+_0x566038+_0x8b51('0x4f'),_0x43b296['uniqueid'],util[_0x8b51('0x43')](_0x43b296,{'showHidden':![],'depth':null}));this[_0x8b51('0x4b')](util['format'](_0x8b51('0x50'),_0x43b296['name']),_0x8b51('0x51'),_0x43b296);io['emit'](_0x8b51('0x52'),_0x43b296);};VoiceQueueReport['prototype'][_0x8b51('0x49')]=function(_0x4c5de1,_0x4a7e54){logger[_0x8b51('0x4d')](_0x8b51('0x4e')+_0x4a7e54+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x4c5de1['uniqueid'],util[_0x8b51('0x43')](_0x4c5de1,{'showHidden':![],'depth':null}));this[_0x8b51('0x4b')](util[_0x8b51('0x53')](_0x8b51('0x50'),_0x4c5de1['name']),_0x8b51('0x54'),_0x4c5de1);io[_0x8b51('0x4b')](_0x8b51('0x55'),_0x4c5de1);};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x56')]=function(_0x48d65f,_0x3b019d){if(_0x48d65f[_0x8b51('0x57')]===_0x8b51('0x58')){var _0x2d0a4e={'id':_0x48d65f['id'],'name':_0x48d65f['name'],'strategy':_0x48d65f[_0x8b51('0x59')],'answered':_0x48d65f[_0x8b51('0x5a')],'available':_0x48d65f[_0x8b51('0x5b')],'loggedIn':_0x48d65f['loggedIn'],'pTalking':_0x48d65f[_0x8b51('0x36')],'sumBillable':_0x48d65f[_0x8b51('0x5c')],'sumDuration':_0x48d65f['sumDuration'],'sumHoldTime':_0x48d65f['sumHoldTime']||0x0,'talking':_0x48d65f[_0x8b51('0x35')],'total':_0x48d65f['total'],'type':_0x48d65f['type'],'unmanaged':_0x48d65f[_0x8b51('0x5d')],'abandoned':_0x48d65f[_0x8b51('0x5e')],'waiting':_0x48d65f[_0x8b51('0x37')]};if(_0x48d65f['Trunk']){_0x2d0a4e[_0x8b51('0x5f')]={'id':_0x48d65f[_0x8b51('0x5f')]['id'],'name':_0x48d65f['Trunk'][_0x8b51('0x60')],'active':_0x48d65f[_0x8b51('0x5f')][_0x8b51('0x61')],'callerid':_0x48d65f[_0x8b51('0x5f')][_0x8b51('0x62')]};}if(_0x48d65f['Interval']){_0x2d0a4e[_0x8b51('0x63')]={'id':_0x48d65f[_0x8b51('0x63')]['id'],'name':_0x48d65f[_0x8b51('0x63')][_0x8b51('0x60')]};}var _0x290da0=md5(JSON[_0x8b51('0x64')](_0x2d0a4e));if(_0x48d65f[_0x8b51('0x3')]!==_0x290da0){_0x48d65f[_0x8b51('0x3')]=_0x290da0;logger[_0x8b51('0x4d')](_0x8b51('0x65')+_0x3b019d+_0x8b51('0x66'),util[_0x8b51('0x43')](_0x2d0a4e,{'showHidden':![],'depth':null}));this['emit'](util[_0x8b51('0x53')](_0x8b51('0x50'),_0x2d0a4e[_0x8b51('0x60')]),_0x8b51('0x67'),_0x2d0a4e);}}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x68')]=function(_0x38f58c){return _0x38f58c!==null&&!_[_0x8b51('0x69')](_0x38f58c);};VoiceQueueReport['prototype'][_0x8b51('0x32')]=function(){var _0x542b94=this;setInterval(function(){_0x542b94[_0x8b51('0x6a')]();ami[_0x8b51('0x3c')]({'action':_0x8b51('0x6b')})['catch'](function(_0x298e96){logger['error'](_0x8b51('0x6c'),util[_0x8b51('0x43')](_0x298e96,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x31')]=function(){var _0x4adb6a=this;setInterval(function(){if(_0x4adb6a[_0x8b51('0x16')]){return ami[_0x8b51('0x3c')]({'action':_0x8b51('0x18')})[_0x8b51('0x6d')](function(_0x5821b5){_0x4adb6a[_0x8b51('0x16')]=![];})[_0x8b51('0x3e')](function(_0x3ec1aa){logger[_0x8b51('0x41')](_0x8b51('0x6e'),util['inspect'](_0x3ec1aa,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x6f')]=function(_0x31773e){try{if(this[_0x8b51('0x68')](_0x31773e)&&this['isNotNull'](_0x31773e[_0x8b51('0x70')])){logger[_0x8b51('0x4d')](_0x8b51('0x71'),util[_0x8b51('0x43')](_0x31773e,{'showHidden':![],'depth':null}));if(this[_0x8b51('0x15')][_0x31773e['queue']]){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0x31773e[_0x8b51('0x70')]);var _0x479bca=_[_0x8b51('0x72')](this['channels'],_0x8b51('0x70'))[_0x31773e[_0x8b51('0x70')]]||0x0;var _0x23fa26=_0x479bca-_0x31773e[_0x8b51('0x73')];if(this['voiceQueues'][_0x31773e[_0x8b51('0x70')]][_0x8b51('0x37')]!==_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x73')])||this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]]['loggedIn']!==_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x75')])||this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]][_0x8b51('0x5b')]!==_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x5b')])||this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]]['talking']!==_0x23fa26){this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]][_0x8b51('0x37')]=_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x73')]);this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]][_0x8b51('0x76')]=_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x75')]);this[_0x8b51('0x15')][_0x31773e['queue']][_0x8b51('0x5b')]=_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x5b')]);this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]][_0x8b51('0x35')]=_0x23fa26>0x0?_0x23fa26:0x0;this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]][_0x8b51('0x35')]=this[_0x8b51('0x15')][_0x31773e['queue']][_0x8b51('0x35')]>_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x75')])?_[_0x8b51('0x74')](_0x31773e[_0x8b51('0x75')]):this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]][_0x8b51('0x35')];this[_0x8b51('0x56')](this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]],'queuesummary');}logger['debug'](_0x8b51('0x77'),util[_0x8b51('0x43')](this[_0x8b51('0x15')][_0x31773e[_0x8b51('0x70')]],{'showHidden':![],'depth':null}));ami[_0x8b51('0x4b')](_0x8b51('0x78'),this['voiceQueues'][_0x31773e[_0x8b51('0x70')]]);}}}catch(_0x13d8a8){logger[_0x8b51('0x41')](_0x8b51('0x6e'),util['inspect'](_0x13d8a8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x1a')]=function(_0x5a3d05){logger[_0x8b51('0x4d')](_0x8b51('0x79'),util['inspect'](_0x5a3d05,{'showHidden':![],'depth':null}));this[_0x8b51('0x16')]=!![];};VoiceQueueReport[_0x8b51('0xd')]['syncQueueCallerJoin']=function(_0x16c1dd){try{if(this[_0x8b51('0x68')](_0x16c1dd)){logger['debug'](_0x8b51('0x7a'),_0x16c1dd['uniqueid'],util[_0x8b51('0x43')](_0x16c1dd,{'showHidden':![],'depth':null}));if(_[_0x8b51('0x69')](this[_0x8b51('0x11')][_0x16c1dd[_0x8b51('0x7b')]]))this[_0x8b51('0x11')][_0x16c1dd[_0x8b51('0x7b')]]=[];if(_[_0x8b51('0x69')](this['channels'][_0x16c1dd[_0x8b51('0x7b')]]))this[_0x8b51('0x13')][_0x16c1dd[_0x8b51('0x7b')]]={};var _0x566769=new QueueReport();_0x566769[_0x8b51('0x60')]=_0x16c1dd[_0x8b51('0x70')];_0x566769[_0x8b51('0x57')]=this[_0x8b51('0x15')][_0x566769['name']]&&this[_0x8b51('0x15')][_0x566769[_0x8b51('0x60')]][_0x8b51('0x57')]?this['voiceQueues'][_0x566769[_0x8b51('0x60')]][_0x8b51('0x57')]||_0x8b51('0x58'):_0x8b51('0x58');_0x566769['queue']=_0x16c1dd['queue'];_0x566769[_0x8b51('0x7c')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));_0x566769[_0x8b51('0x7e')]=_0x16c1dd[_0x8b51('0x7e')];_0x566769[_0x8b51('0x7f')]=_0x16c1dd['count'];_0x566769[_0x8b51('0x7b')]=_0x16c1dd['uniqueid'];_0x566769[_0x8b51('0x80')]=this[_0x8b51('0x13')][_0x16c1dd[_0x8b51('0x7b')]][_0x8b51('0x80')];logger[_0x8b51('0x81')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x566769[_0x8b51('0x60')],_0x566769[_0x8b51('0x57')]);_[_0x8b51('0x82')](_0x566769,_[_0x8b51('0x83')](_0x16c1dd,_[_0x8b51('0x84')](_0x566769)));this[_0x8b51('0x11')][_0x16c1dd[_0x8b51('0x7b')]][_0x8b51('0x85')](_0x566769);this[_0x8b51('0x13')][_0x16c1dd[_0x8b51('0x7b')]]=_0x566769;this['emitVoiceQueueChannelSave'](_0x566769,_0x8b51('0x1c'));}}catch(_0x42e613){logger['error'](_0x8b51('0x7a'),_0x16c1dd[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x42e613,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8b51('0x86')]=function(_0x13d8ce){try{if(this[_0x8b51('0x68')](_0x13d8ce)){logger[_0x8b51('0x4d')](_0x8b51('0x87'),_0x13d8ce[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x13d8ce,{'showHidden':![],'depth':null}));if(this[_0x8b51('0x11')][_0x13d8ce[_0x8b51('0x7b')]]){var _0x512ed8=_[_0x8b51('0x88')](this['queueReports'][_0x13d8ce[_0x8b51('0x7b')]]);_0x512ed8[_0x8b51('0x89')]=![];_0x512ed8[_0x8b51('0x8a')]=null;_0x512ed8['holdtime']=_0x13d8ce[_0x8b51('0x8b')];_0x512ed8[_0x8b51('0x8c')]=_0x13d8ce['originalposition'];_0x512ed8['queuecallerabandon']=!![];_0x512ed8[_0x8b51('0x8d')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));_0x512ed8[_0x8b51('0x8e')]='ABANDONED';_0x512ed8['lastAssignedTo']=null;logger[_0x8b51('0x81')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x512ed8[_0x8b51('0x60')],_0x512ed8['type']);this[_0x8b51('0x13')][_0x13d8ce[_0x8b51('0x7b')]]=_0x512ed8;this[_0x8b51('0x49')](_0x512ed8,_0x8b51('0x1e'));}}}catch(_0x4be865){logger['error'](_0x8b51('0x87'),_0x13d8ce[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x4be865,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8b51('0x8f')]=function(_0x2ab9ec){try{if(this['isNotNull'](_0x2ab9ec)){logger['debug'](_0x8b51('0x90'),_0x2ab9ec['uniqueid'],util[_0x8b51('0x43')](_0x2ab9ec,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2ab9ec[_0x8b51('0x7b')]]){var _0x349c0a=_[_0x8b51('0x88')](this['queueReports'][_0x2ab9ec[_0x8b51('0x7b')]]);_0x349c0a[_0x8b51('0x91')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));_0x349c0a[_0x8b51('0x92')]=_0x2ab9ec[_0x8b51('0x92')];_0x349c0a[_0x8b51('0x93')]=_0x2ab9ec[_0x8b51('0x93')];logger[_0x8b51('0x81')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x349c0a['name'],_0x349c0a['type'],_0x2ab9ec[_0x8b51('0x92')],_0x2ab9ec[_0x8b51('0x93')]);this[_0x8b51('0x13')][_0x2ab9ec['uniqueid']]=_0x349c0a;this[_0x8b51('0x4c')](_0x349c0a,_0x8b51('0x1f'));}}}catch(_0x1424ac){logger[_0x8b51('0x41')](_0x8b51('0x90'),_0x2ab9ec[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x1424ac,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x23')]=function(_0x5e63a8){try{if(this[_0x8b51('0x68')](_0x5e63a8)){logger[_0x8b51('0x4d')]('[%s][voiceQueueReport][agentconnect]',_0x5e63a8[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x5e63a8,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5e63a8[_0x8b51('0x7b')]]){var _0x31eb74=_[_0x8b51('0x88')](this[_0x8b51('0x11')][_0x5e63a8[_0x8b51('0x7b')]]);_0x31eb74[_0x8b51('0x89')]=!![];_0x31eb74[_0x8b51('0x8e')]='COMPLETEDBYAGENT';logger['info'](_0x8b51('0x94'),_0x31eb74[_0x8b51('0x60')],_0x31eb74['type']);}}}catch(_0x8faca0){logger['error']('[%s][voiceQueueReport][agentconnect]',_0x5e63a8[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x8faca0,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8b51('0x21')]=function(_0x4918b7){try{if(this[_0x8b51('0x68')](_0x4918b7)){logger[_0x8b51('0x4d')]('[%s][voiceQueueReport][agentcomplete]',_0x4918b7[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x4918b7,{'showHidden':![],'depth':null}));if(this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x7b')]]){var _0x4f408c=_['last'](this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x7b')]]);_0x4f408c[_0x8b51('0x1e')]=![];_0x4f408c[_0x8b51('0x8d')]=null;_0x4f408c[_0x8b51('0x95')]=!![];_0x4f408c[_0x8b51('0x96')]=_0x4918b7[_0x8b51('0x97')];_0x4f408c[_0x8b51('0x8b')]=_0x4918b7['holdtime'];_0x4f408c['queuecallercomplete']=!![];_0x4f408c[_0x8b51('0x98')]=![];_0x4f408c[_0x8b51('0x99')]=null;if(!_0x4f408c[_0x8b51('0x9a')]){if(_0x4918b7[_0x8b51('0x9b')]==_0x8b51('0x9a')){_0x4f408c[_0x8b51('0x8e')]=_0x8b51('0x9c');logger[_0x8b51('0x81')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x4f408c[_0x8b51('0x60')],_0x4f408c['type']);}else{if(_['startsWith'](_0x4918b7[_0x8b51('0x9d')]['toLowerCase'](),'local/')){if(this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x9e')]]){var _0x11da81=_[_0x8b51('0x88')](this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x9e')]]);_0x11da81['queuecallercomplete']=![];_0x11da81['queuecallerexit']=!![];_0x11da81[_0x8b51('0x99')]=moment(_0x4f408c[_0x8b51('0x7c')])[_0x8b51('0x9f')](_0x4918b7[_0x8b51('0x8b')],_0x8b51('0xa0'))[_0x8b51('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x11da81[_0x8b51('0x8e')]=_0x8b51('0xa1');_0x11da81[_0x8b51('0x9a')]=!![];_0x11da81[_0x8b51('0xa2')]=_0x8b51('0xa3');_0x11da81[_0x8b51('0xa4')]=_0x4918b7[_0x8b51('0xa5')];_0x11da81[_0x8b51('0xa6')]=_0x4918b7[_0x8b51('0x7b')];logger[_0x8b51('0x81')](_0x8b51('0xa7'),_0x11da81[_0x8b51('0x60')],_0x11da81[_0x8b51('0x57')]);var _0x24fa0d=this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x9e')]];this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x9e')]]=this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x7b')]];this[_0x8b51('0x11')][_0x4918b7[_0x8b51('0x7b')]]=_0x24fa0d;}}else{_0x4f408c[_0x8b51('0x8e')]=_0x8b51('0xa8')+_0x4918b7[_0x8b51('0x9b')]['toUpperCase']();logger[_0x8b51('0x81')](_0x8b51('0xa9'),_0x4f408c['name'],_0x4f408c[_0x8b51('0x57')],_0x4f408c[_0x8b51('0x8e')]);}}}this[_0x8b51('0x13')][_0x4918b7[_0x8b51('0x7b')]]=_0x4f408c;this[_0x8b51('0x49')](_0x4f408c,_0x8b51('0x20'));}}}catch(_0x119210){logger['error']('[%s][voiceQueueReport][agentcomplete]',_0x4918b7[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x119210,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0xaa')]=function(_0x1a42e7){try{if(this[_0x8b51('0x68')](_0x1a42e7)){logger[_0x8b51('0x4d')](_0x8b51('0xab'),_0x1a42e7[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x1a42e7,{'showHidden':![],'depth':null}));this[_0x8b51('0xac')](_0x1a42e7[_0x8b51('0x7b')],_[_0x8b51('0x84')](_0x1a42e7[_0x8b51('0xad')])[0x0],_0x1a42e7[_0x8b51('0xae')]);if(this[_0x8b51('0x11')][_0x1a42e7[_0x8b51('0x7b')]]){var _0x50acc9=_[_0x8b51('0x88')](this['queueReports'][_0x1a42e7[_0x8b51('0x7b')]]);if(_0x50acc9){if(this[_0x8b51('0x68')](_0x1a42e7['variable'])&&this[_0x8b51('0x68')](_0x1a42e7['variable'][_0x8b51('0xaf')])){switch(_0x1a42e7[_0x8b51('0xae')]){case _0x8b51('0xb0'):_0x50acc9[_0x8b51('0x98')]=![];_0x50acc9[_0x8b51('0x99')]=null;break;case _0x8b51('0xb1'):_0x50acc9[_0x8b51('0xb2')]=_0x8b51('0xb3');_0x50acc9[_0x8b51('0x98')]=!![];_0x50acc9['queuecallerexitAt']=moment()['format'](_0x8b51('0x7d'));_0x50acc9[_0x8b51('0x91')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));logger[_0x8b51('0x4d')](_0x8b51('0xb4'),_0x1a42e7['uniqueid'],util[_0x8b51('0x43')](_0x50acc9,{'showHidden':![],'depth':null}));ami[_0x8b51('0x4b')](_0x8b51('0xb5'),_0x50acc9);break;default:_0x50acc9['queuecallerexit']=!![];_0x50acc9[_0x8b51('0x99')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));_0x50acc9[_0x8b51('0x91')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));}_0x50acc9[_0x8b51('0x1e')]=![];_0x50acc9['queuecallerabandonAt']=null;_0x50acc9[_0x8b51('0x8e')]=_0x1a42e7[_0x8b51('0xae')];this[_0x8b51('0x13')][_0x1a42e7[_0x8b51('0x7b')]]=_0x50acc9;this[_0x8b51('0x49')](_0x50acc9,'varset');}else if(this['isNotNull'](_0x1a42e7['variable'])&&this[_0x8b51('0x68')](_0x1a42e7['variable']['queueposition'])){if(!_0x50acc9['queuecallerabandon']){_0x50acc9[_0x8b51('0x98')]=!![];_0x50acc9[_0x8b51('0x99')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));_0x50acc9[_0x8b51('0x8e')]='EXITWITHKEY';_0x50acc9[_0x8b51('0x91')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));this[_0x8b51('0x13')][_0x1a42e7['uniqueid']]=_0x50acc9;}}logger['info'](_0x8b51('0xb6'),_0x1a42e7[_0x8b51('0x7b')],_0x50acc9['name'],_0x50acc9[_0x8b51('0x57')],_[_0x8b51('0x84')](_0x1a42e7[_0x8b51('0xad')])[0x0],_0x1a42e7[_0x8b51('0xae')]);_0x50acc9[_0x8b51('0x45')]=this[_0x8b51('0x45')][_0x1a42e7[_0x8b51('0x7b')]];}}}}catch(_0x58784e){logger[_0x8b51('0x41')](_0x8b51('0xab'),_0x1a42e7[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x58784e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0xac')]=function(_0x42acca,_0x33f4a0,_0x4ee3bb){var _0x1678d5=[_0x8b51('0xb7'),_0x8b51('0xb8'),'rtpaudioqosjitter','rtpaudioqosjitterbridged',_0x8b51('0xb9'),'rtpaudioqoslossbridged',_0x8b51('0xba'),_0x8b51('0xbb'),_0x8b51('0xbc'),'sipuri',_0x8b51('0xbd'),_0x8b51('0xbe'),_0x8b51('0xbf'),_0x8b51('0xc0'),_0x8b51('0xc1'),_0x8b51('0xc2'),_0x8b51('0x97'),_0x8b51('0xc3'),_0x8b51('0xc4')];if(!_[_0x8b51('0x3b')](_0x33f4a0)&&!_[_0x8b51('0xc5')](_0x1678d5,_0x33f4a0)){if(_['isUndefined'](this['variables'][_0x42acca])){this[_0x8b51('0x45')][_0x42acca]={};}this[_0x8b51('0x45')][_0x42acca][_0x33f4a0]=_0x4ee3bb;}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x26')]=function(_0xdbb837){try{if(this[_0x8b51('0x68')](_0xdbb837)){logger[_0x8b51('0x4d')](_0x8b51('0xc6'),_0xdbb837[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0xdbb837,{'showHidden':![],'depth':null}));if(this['queueReports'][_0xdbb837[_0x8b51('0x7b')]]){for(var _0x1c3f84=0x0,_0x40d771={};_0x1c3f84<this[_0x8b51('0x11')][_0xdbb837['uniqueid']][_0x8b51('0xc7')];_0x1c3f84+=0x1){_0x40d771=this[_0x8b51('0x11')][_0xdbb837[_0x8b51('0x7b')]][_0x1c3f84];if(this['voiceQueues'][_0x40d771[_0x8b51('0x70')]]){if(_0x40d771[_0x8b51('0x98')]&&_0x40d771[_0x8b51('0x9a')]!=!![]){this[_0x8b51('0x15')][_0x40d771[_0x8b51('0x70')]][_0x8b51('0x5d')]+=0x1;}if(_0x40d771[_0x8b51('0x1e')]){this[_0x8b51('0x15')][_0x40d771[_0x8b51('0x70')]][_0x8b51('0x5e')]+=0x1;}this[_0x8b51('0x15')][_0x40d771['queue']][_0x8b51('0xc8')]+=moment(_0x40d771[_0x8b51('0x91')])[_0x8b51('0xc9')](_0x40d771[_0x8b51('0x7c')],_0x8b51('0xa0'))||0x0;if(_0x1c3f84===this[_0x8b51('0x11')][_0xdbb837[_0x8b51('0x7b')]]['length']-0x1){this[_0x8b51('0x15')][_0x40d771[_0x8b51('0x70')]][_0x8b51('0xca')]+=moment()[_0x8b51('0xcb')](0x0)[_0x8b51('0xc9')](_0x40d771['queuecallerjoinAt'],_0x8b51('0xa0'));this[_0x8b51('0x15')][_0x40d771[_0x8b51('0x70')]][_0x8b51('0xcc')]+=0x1;if(_0x40d771['queuecallercomplete']){this['voiceQueues'][_0x40d771[_0x8b51('0x70')]][_0x8b51('0x5a')]+=0x1;this['voiceQueues'][_0x40d771[_0x8b51('0x70')]][_0x8b51('0x5c')]+=moment()[_0x8b51('0xcb')](0x0)[_0x8b51('0xc9')](_0x40d771[_0x8b51('0x91')],'seconds');_0x40d771[_0x8b51('0x8a')]=moment()[_0x8b51('0x53')](_0x8b51('0x7d'));_0x40d771[_0x8b51('0x98')]=![];_0x40d771[_0x8b51('0x99')]=null;}if(_0x40d771[_0x8b51('0x98')]&&_0x40d771[_0x8b51('0x9a')]!=!![]){_0x40d771[_0x8b51('0xb2')]=_0x8b51('0x5d');logger['debug'](_0x8b51('0xcd'),_0xdbb837['uniqueid'],util['inspect'](_0x40d771,{'showHidden':![],'depth':null}));ami[_0x8b51('0x4b')](_0x8b51('0xce'),_0x40d771);}if(_0x40d771[_0x8b51('0x1e')]){_0x40d771['lastevent']=_0x8b51('0x5e');logger[_0x8b51('0x4d')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0xdbb837['uniqueid'],util[_0x8b51('0x43')](_0x40d771,{'showHidden':![],'depth':null}));ami[_0x8b51('0x4b')](_0x8b51('0xcf'),_0x40d771);}}else{this[_0x8b51('0x15')][_0x40d771[_0x8b51('0x70')]]['sumDuration']+=this[_0x8b51('0x15')][_0x40d771[_0x8b51('0x70')]][_0x8b51('0xc8')];}logger['info'](_0x8b51('0xd0'),_0xdbb837['uniqueid'],_0x40d771[_0x8b51('0x60')],_0x40d771[_0x8b51('0x57')],_0xdbb837[_0x8b51('0xd1')]);this[_0x8b51('0x13')][_0xdbb837[_0x8b51('0x7b')]]=_0x40d771;this[_0x8b51('0x49')](_0x40d771,_0x8b51('0x25'));this[_0x8b51('0x56')](this[_0x8b51('0x15')][_0x40d771['queue']],_0x8b51('0x25'));}}logger[_0x8b51('0x4d')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0xdbb837[_0x8b51('0x7b')],util['inspect'](this[_0x8b51('0x11')][_0xdbb837[_0x8b51('0x7b')]],{'showHidden':![],'depth':null}));ami[_0x8b51('0x4b')](_0x8b51('0xd2'),this[_0x8b51('0x11')][_0xdbb837[_0x8b51('0x7b')]]);delete this[_0x8b51('0x11')][_0xdbb837['uniqueid']];delete this[_0x8b51('0x13')][_0xdbb837[_0x8b51('0x7b')]];}if(this[_0x8b51('0x45')][_0xdbb837[_0x8b51('0x7b')]]){delete this[_0x8b51('0x45')][_0xdbb837['uniqueid']];}}}catch(_0x4522c2){logger[_0x8b51('0x41')](_0x8b51('0xc6'),_0xdbb837[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x4522c2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x2e')]=function(_0x164f0e){try{if(this[_0x8b51('0x68')](_0x164f0e)){logger['debug']('[%s][voiceQueueReport][attendedtransfer]',_0x164f0e[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x164f0e,{'showHidden':![],'depth':null}));var _0x460bcd;if(this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xd3')]]){_0x460bcd=_[_0x8b51('0x88')](this['queueReports'][_0x164f0e['transfereeuniqueid']]);_0x460bcd[_0x8b51('0xa4')]=_0x164f0e[_0x8b51('0xd4')];_0x460bcd[_0x8b51('0xa6')]=_0x164f0e['secondtransfereruniqueid'];_0x460bcd[_0x8b51('0x8e')]='ATTENDEDTRANSFER';_0x460bcd[_0x8b51('0x9a')]=!![];_0x460bcd['transfertype']=_0x8b51('0xd5');if(this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xd6')]]){var _0xfa4cce=this['queueReports'][_0x164f0e[_0x8b51('0xd6')]];this['queueReports'][_0x164f0e[_0x8b51('0xd6')]]=this[_0x8b51('0x11')][_0x164f0e['transfereeuniqueid']];this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xd3')]]=_0xfa4cce;var _0x1f9f13=_['last'](this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xd3')]]);_0x1f9f13[_0x8b51('0xd7')]=!![];}logger[_0x8b51('0x81')](_0x8b51('0xd8'),_0x164f0e['uniqueid'],_0x460bcd[_0x8b51('0x60')],_0x460bcd[_0x8b51('0x57')],_0x460bcd['transferexten'],_0x460bcd['transferuniqueid']);}else if(this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xd9')]]){_0x460bcd=_['last'](this['queueReports'][_0x164f0e[_0x8b51('0xd9')]]);_0x460bcd[_0x8b51('0xa4')]=_0x164f0e[_0x8b51('0xda')];_0x460bcd[_0x8b51('0xa6')]=_0x164f0e[_0x8b51('0xdb')];_0x460bcd[_0x8b51('0x8e')]=_0x8b51('0xdc');_0x460bcd[_0x8b51('0x9a')]=!![];_0x460bcd[_0x8b51('0xa2')]=_0x8b51('0xd5');if(this['queueReports'][_0x164f0e['origtransfereruniqueid']]){var _0xfa4cce=this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xdb')]];this['queueReports'][_0x164f0e[_0x8b51('0xdb')]]=this[_0x8b51('0x11')][_0x164f0e['transfertargetuniqueid']];this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xd9')]]=_0xfa4cce;var _0x1f9f13=_[_0x8b51('0x88')](this[_0x8b51('0x11')][_0x164f0e[_0x8b51('0xd9')]]);_0x1f9f13[_0x8b51('0xd7')]=!![];}logger[_0x8b51('0x81')](_0x8b51('0xd8'),_0x164f0e[_0x8b51('0x7b')],_0x460bcd[_0x8b51('0x60')],_0x460bcd['type'],_0x460bcd[_0x8b51('0xa4')],_0x460bcd[_0x8b51('0xa6')]);}}}catch(_0x4775dd){logger[_0x8b51('0x41')](_0x8b51('0xdd'),_0x164f0e['uniqueid'],util['inspect'](_0x4775dd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x30')]=function(_0x235e8a){try{if(this[_0x8b51('0x68')](_0x235e8a)){logger[_0x8b51('0x4d')](_0x8b51('0xde'),_0x235e8a[_0x8b51('0x7b')],util['inspect'](_0x235e8a,{'showHidden':![],'depth':null}));if(this[_0x8b51('0x11')][_0x235e8a['transfereeuniqueid']]){var _0x5dab73=_['last'](this[_0x8b51('0x11')][_0x235e8a['transfereeuniqueid']]);_0x5dab73[_0x8b51('0x8e')]=_0x8b51('0xdf');_0x5dab73[_0x8b51('0x9a')]=!![];_0x5dab73[_0x8b51('0xa2')]=_0x8b51('0xe0');_0x5dab73['transferexten']=_0x235e8a[_0x8b51('0xe1')];_0x5dab73[_0x8b51('0xa6')]=_0x235e8a[_0x8b51('0xd3')];logger[_0x8b51('0x81')](_0x8b51('0xe2'),_0x235e8a['uniqueid'],_0x5dab73['name'],_0x5dab73[_0x8b51('0x57')],_0x5dab73[_0x8b51('0xa4')],_0x5dab73[_0x8b51('0xa6')]);this[_0x8b51('0x26')]({'event':'BlindTransfer','uniqueid':_0x235e8a['transfereeuniqueid'],'context':_0x235e8a[_0x8b51('0xe3')],'channel':_0x235e8a[_0x8b51('0xe4')]});}}}catch(_0x159e85){logger[_0x8b51('0x41')](_0x8b51('0xde'),_0x235e8a[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x159e85,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x2a')]=function(_0x1e6ebc){try{if(this[_0x8b51('0x68')](_0x1e6ebc)){logger[_0x8b51('0x4d')](_0x8b51('0xe5'),_0x1e6ebc[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x1e6ebc,{'showHidden':![],'depth':null}));if(this[_0x8b51('0x11')][_0x1e6ebc[_0x8b51('0x7b')]]){var _0x57bf3d=_[_0x8b51('0x88')](this[_0x8b51('0x11')][_0x1e6ebc[_0x8b51('0x7b')]]);if(!_['isNil'](_0x57bf3d['queuecallerleaveAt'])){_0x57bf3d[_0x8b51('0xe6')]=moment()[_0x8b51('0x53')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x8b51('0x81')](_0x8b51('0xe7'),_0x1e6ebc[_0x8b51('0x7b')],_0x57bf3d[_0x8b51('0xe6')]);}}}}catch(_0x1c123d){logger[_0x8b51('0x41')]('[%s][voiceQueueReport][musiconholdstart]',_0x1e6ebc[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x1c123d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x2c')]=function(_0x12a71b){try{if(this[_0x8b51('0x68')](_0x12a71b)){logger['debug'](_0x8b51('0xe8'),_0x12a71b['uniqueid'],util[_0x8b51('0x43')](_0x12a71b,{'showHidden':![],'depth':null}));if(this[_0x8b51('0x11')][_0x12a71b[_0x8b51('0x7b')]]){var _0x572dce=_[_0x8b51('0x88')](this[_0x8b51('0x11')][_0x12a71b[_0x8b51('0x7b')]]);if(!_[_0x8b51('0x3b')](_0x572dce['mohstarttime'])){_0x572dce[_0x8b51('0xe9')]+=moment()[_0x8b51('0xcb')](0x0)[_0x8b51('0xc9')](_0x572dce[_0x8b51('0xe6')],_0x8b51('0xa0'));logger['info'](_0x8b51('0xea'),_0x12a71b['uniqueid'],_0x572dce[_0x8b51('0xe9')]);delete _0x572dce[_0x8b51('0xe6')];}}}}catch(_0x39fc2c){logger['error'](_0x8b51('0xe8'),_0x12a71b[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x39fc2c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b51('0xd')][_0x8b51('0x28')]=function(_0xe06f9a){try{if(this[_0x8b51('0x68')](_0xe06f9a)){logger['debug'](_0x8b51('0xeb'),_0xe06f9a[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0xe06f9a,{'showHidden':![],'depth':null}));if(_0xe06f9a['application'][_0x8b51('0xec')]()===_0x8b51('0xed')){_0xe06f9a[_0x8b51('0xee')]=_0xe06f9a[_0x8b51('0xef')]&&_0xe06f9a[_0x8b51('0xef')][_0x8b51('0xf0')](_0x8b51('0xf1'))?_0xe06f9a[_0x8b51('0xef')]:(_0xe06f9a[_0x8b51('0xef')]||_0xe06f9a[_0x8b51('0xee')])[_0x8b51('0xec')]();if(_[_0x8b51('0xf0')](_0xe06f9a[_0x8b51('0xee')][_0x8b51('0xec')](),_0x8b51('0xf2'))){logger[_0x8b51('0x81')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0xe06f9a[_0x8b51('0x7b')],_0xe06f9a[_0x8b51('0xf3')],_0xe06f9a[_0x8b51('0xee')]);if(_['isUndefined'](this['channels'][_0xe06f9a[_0x8b51('0x7b')]]))this['channels'][_0xe06f9a['uniqueid']]={};var _0x575cab=_0xe06f9a['applicationdata']['split']('=');var _0x2e17ec=_0x575cab[0x0][_0x8b51('0xec')]()['match'](/cdr\((.*)\)/);if(_0x2e17ec)this[_0x8b51('0x13')][_0xe06f9a[_0x8b51('0x7b')]][_0x2e17ec[0x1]]=_0x575cab[0x1];}}}}catch(_0x208206){logger[_0x8b51('0x41')](_0x8b51('0xf4'),_0xe06f9a[_0x8b51('0x7b')],util[_0x8b51('0x43')](_0x208206,{'showHidden':![],'depth':null}));}};module[_0x8b51('0xf5')]=VoiceQueueReport;
\ No newline at end of file
+var _0x2436=['application','split','match','exports','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','redis','defaults','localhost','prototype','tail','finally','sequence','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','varset','hangup','fullybooted','syncFullyBooted','newexten','syncNewExten','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','waiting','queueStatusComplete','clearZombieChannels','switch','enqueue','isNil','Action','status','channel','catch','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','queueReports','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','type','inbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','talking','unmanaged','Trunk','Interval',']\x20sending\x20voice_queue:save\x20event:','isNotNull','isUndefined','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','queuesummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','push','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerabandon','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','toLowerCase','linkedid','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','value','variable','queuestatus','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','memberrealtime','syncHangup','[%s][voiceQueueReport][hangup]','abandoned','diff','queuecallerjoinAt','length','total','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','emitVoiceQueueSummary','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','syncAttendedTransfer','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','mohtime','milliseconds','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s'];(function(_0x5ecff9,_0x473070){var _0x5e1415=function(_0x3c34a1){while(--_0x3c34a1){_0x5ecff9['push'](_0x5ecff9['shift']());}};_0x5e1415(++_0x473070);}(_0x2436,0x1e2));var _0x6243=function(_0x3b08b,_0x21cf47){_0x3b08b=_0x3b08b-0x0;var _0x86382e=_0x2436[_0x3b08b];return _0x86382e;};'use strict';var _=require('lodash');var moment=require(_0x6243('0x0'));var util=require(_0x6243('0x1'));var md5=require(_0x6243('0x2'));var Redis=require(_0x6243('0x3'));var config=require(_0x6243('0x4'));var logger=require(_0x6243('0x5'))('ami');var ami=require('../ami');var QueueReport=require('../model/queueReport');config[_0x6243('0x6')]=_[_0x6243('0x7')](config['redis'],{'host':_0x6243('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6243('0x6')]));var Sequence=function(){};Sequence[_0x6243('0x9')]['enqueue']=function(_0x54c4e5){this[_0x6243('0xa')]=this[_0x6243('0xa')]?this[_0x6243('0xa')][_0x6243('0xb')](_0x54c4e5):_0x54c4e5();};function VoiceQueueReport(_0x264a42){this[_0x6243('0xc')]=new Sequence();this['queueReports']={};this[_0x6243('0xd')]=_0x264a42[_0x6243('0xd')];this[_0x6243('0xe')]=_0x264a42[_0x6243('0xf')];this['voiceQueues']=_0x264a42[_0x6243('0x10')];this[_0x6243('0x11')]=!![];this['campaigns']=_0x264a42[_0x6243('0x12')];this[_0x6243('0x13')]={};ami['on']('queuesummary',this[_0x6243('0x14')][_0x6243('0x15')](this));ami['on'](_0x6243('0x16'),this['syncQueueSummaryComplete'][_0x6243('0x15')](this));ami['on']('queuecallerjoin',this[_0x6243('0x17')][_0x6243('0x15')](this));ami['on']('queuecallerabandon',this[_0x6243('0x18')]['bind'](this));ami['on'](_0x6243('0x19'),this[_0x6243('0x1a')][_0x6243('0x15')](this));ami['on'](_0x6243('0x1b'),this[_0x6243('0x1c')][_0x6243('0x15')](this));ami['on'](_0x6243('0x1d'),this['syncAgentConnect'][_0x6243('0x15')](this));ami['on'](_0x6243('0x1e'),this['syncVarSet']['bind'](this));ami['on'](_0x6243('0x1f'),this['syncHangup'][_0x6243('0x15')](this));ami['on'](_0x6243('0x20'),this[_0x6243('0x21')]['bind'](this));ami['on'](_0x6243('0x22'),this[_0x6243('0x23')]['bind'](this));ami['on']('musiconholdstart',this[_0x6243('0x24')]['bind'](this));ami['on'](_0x6243('0x25'),this[_0x6243('0x26')][_0x6243('0x15')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x6243('0x27'),this['syncBlindTransfer'][_0x6243('0x15')](this));this[_0x6243('0x28')]();this['loopQueueShow']();}function clearChannels(_0x50fb0e){if(!_[_0x6243('0x29')](_0x50fb0e)){for(var _0x1c9045 in _0x50fb0e){if(_0x50fb0e[_0x6243('0x2a')](_0x1c9045)){delete _0x50fb0e[_0x1c9045];}}}}function clearCampaigns(_0x698f7f){if(!_[_0x6243('0x29')](_0x698f7f)){for(var _0x45bc71 in _0x698f7f){if(_0x698f7f[_0x6243('0x2a')](_0x45bc71)){_0x698f7f[_0x45bc71][_0x6243('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x590037){if(!_['isEmpty'](_0x590037)){for(var _0x419e1d in _0x590037){if(_0x590037[_0x6243('0x2a')](_0x419e1d)){_0x590037[_0x419e1d]['originated']=0x0;_0x590037[_0x419e1d]['talking']=0x0;_0x590037[_0x419e1d]['pTalking']=0x0;_0x590037[_0x419e1d][_0x6243('0x2c')]=0x0;_0x590037[_0x419e1d][_0x6243('0x2d')]=!![];}}}}function clearAgentBooked(_0x56807d){if(!_[_0x6243('0x29')](_0x56807d)){for(var _0x2858a4 in _0x56807d){if(_0x56807d['hasOwnProperty'](_0x2858a4)){_0x56807d[_0x2858a4]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0x6243('0x2e')]=function(){var _0x4b5736=this;for(var _0x3a0b2d in this[_0x6243('0xe')]){if(this[_0x6243('0xe')][_0x6243('0x2a')](_0x3a0b2d)&&!this[_0x6243('0xe')][_0x3a0b2d][_0x6243('0x2f')]){this[_0x6243('0xc')][_0x6243('0x30')](function(){if(!_[_0x6243('0x31')](_0x4b5736[_0x6243('0xe')][_0x3a0b2d])){return ami[_0x6243('0x32')]({'action':_0x6243('0x33'),'channel':_0x4b5736['channels'][_0x3a0b2d][_0x6243('0x34')]})[_0x6243('0x35')](function(_0x58f473){if(_0x58f473['message']===_0x6243('0x36')){setTimeout(function(){if(_0x4b5736[_0x6243('0xe')][_0x3a0b2d]){delete _0x4b5736[_0x6243('0xe')][_0x3a0b2d];logger[_0x6243('0x37')](_0x6243('0x38'),_0x3a0b2d,util[_0x6243('0x39')](_0x58f473,{'showHidden':![],'depth':null}));}if(_0x4b5736['queueReports'][_0x3a0b2d]){delete _0x4b5736['queueReports'][_0x3a0b2d];logger[_0x6243('0x37')](_0x6243('0x3a'),_0x3a0b2d,util[_0x6243('0x39')](_0x58f473,{'showHidden':![],'depth':null}));}if(_0x4b5736[_0x6243('0x13')][_0x3a0b2d]){delete _0x4b5736[_0x6243('0x13')][_0x3a0b2d];logger[_0x6243('0x37')](_0x6243('0x3b'),_0x3a0b2d,util[_0x6243('0x39')](_0x58f473,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x21')]=function(){logger[_0x6243('0x37')](_0x6243('0x3c'));clearChannels(this[_0x6243('0xe')]);this[_0x6243('0x3d')](this[_0x6243('0x3e')]);clearAgentBooked(this[_0x6243('0xd')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x6243('0x12')]);};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x3d')]=function(_0x1918ea){var _0x3b409a=this;if(!_[_0x6243('0x29')](_0x1918ea)){for(var _0x30467f in _0x1918ea){if(_0x1918ea[_0x6243('0x2a')](_0x30467f)){_0x3b409a['emitVoiceQueueChannelRemove'](_0x1918ea[_0x30467f],_0x6243('0x3f'));delete _0x1918ea[_0x30467f];}}}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x40')]=function(_0x5ce485,_0x4d20c5,_0x41eec1){io['to'](_0x5ce485)[_0x6243('0x40')](_0x4d20c5,_0x41eec1);};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x41')]=function(_0x704483,_0x451d40){logger[_0x6243('0x42')](_0x6243('0x43')+_0x451d40+_0x6243('0x44'),_0x704483[_0x6243('0x45')],util[_0x6243('0x39')](_0x704483,{'showHidden':![],'depth':null}));this[_0x6243('0x40')](util[_0x6243('0x46')](_0x6243('0x47'),_0x704483[_0x6243('0x48')]),'voice_queue_channel:save',_0x704483);io['emit']('voice_queue_presence:save',_0x704483);};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x49')]=function(_0x6535bb,_0x207dd8){logger['debug']('[%s][voiceQueueReport]['+_0x207dd8+_0x6243('0x4a'),_0x6535bb[_0x6243('0x45')],util[_0x6243('0x39')](_0x6535bb,{'showHidden':![],'depth':null}));this['emit'](util[_0x6243('0x46')](_0x6243('0x47'),_0x6535bb[_0x6243('0x48')]),_0x6243('0x4b'),_0x6535bb);io['emit']('voice_queue_presence:remove',_0x6535bb);};VoiceQueueReport[_0x6243('0x9')]['emitVoiceQueueSummary']=function(_0x2dd95,_0x647d69){if(_0x2dd95[_0x6243('0x4c')]===_0x6243('0x4d')){var _0x3b994a={'id':_0x2dd95['id'],'name':_0x2dd95['name'],'strategy':_0x2dd95[_0x6243('0x4e')],'answered':_0x2dd95[_0x6243('0x4f')],'available':_0x2dd95[_0x6243('0x50')],'loggedIn':_0x2dd95[_0x6243('0x51')],'pTalking':_0x2dd95[_0x6243('0x52')],'sumBillable':_0x2dd95[_0x6243('0x53')],'sumDuration':_0x2dd95[_0x6243('0x54')],'sumHoldTime':_0x2dd95['sumHoldTime']||0x0,'talking':_0x2dd95[_0x6243('0x55')],'total':_0x2dd95['total'],'type':_0x2dd95['type'],'unmanaged':_0x2dd95[_0x6243('0x56')],'abandoned':_0x2dd95['abandoned'],'waiting':_0x2dd95[_0x6243('0x2c')]};if(_0x2dd95['Trunk']){_0x3b994a[_0x6243('0x57')]={'id':_0x2dd95['Trunk']['id'],'name':_0x2dd95[_0x6243('0x57')][_0x6243('0x48')],'active':_0x2dd95[_0x6243('0x57')]['active'],'callerid':_0x2dd95[_0x6243('0x57')]['callerid']};}if(_0x2dd95['Interval']){_0x3b994a[_0x6243('0x58')]={'id':_0x2dd95[_0x6243('0x58')]['id'],'name':_0x2dd95['Interval']['name']};}var _0x159a7e=md5(JSON['stringify'](_0x3b994a));if(_0x2dd95[_0x6243('0x2')]!==_0x159a7e){_0x2dd95[_0x6243('0x2')]=_0x159a7e;logger[_0x6243('0x42')]('[voiceQueueReport]['+_0x647d69+_0x6243('0x59'),util['inspect'](_0x3b994a,{'showHidden':![],'depth':null}));this['emit'](util[_0x6243('0x46')](_0x6243('0x47'),_0x3b994a[_0x6243('0x48')]),'voice_queue:save',_0x3b994a);}}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x5a')]=function(_0x21b5fc){return _0x21b5fc!==null&&!_[_0x6243('0x5b')](_0x21b5fc);};VoiceQueueReport['prototype']['loopQueueShow']=function(){var _0x5e4167=this;setInterval(function(){_0x5e4167[_0x6243('0x2e')]();ami[_0x6243('0x32')]({'action':'queues'})[_0x6243('0x35')](function(_0x938835){logger[_0x6243('0x37')](_0x6243('0x5c'),util[_0x6243('0x39')](_0x938835,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x6243('0x9')]['loopQueueSummary']=function(){var _0x1b5642=this;setInterval(function(){if(_0x1b5642[_0x6243('0x11')]){return ami[_0x6243('0x32')]({'action':'queuesummary'})[_0x6243('0x5d')](function(_0xf9a845){_0x1b5642[_0x6243('0x11')]=![];})[_0x6243('0x35')](function(_0x1220bc){logger[_0x6243('0x37')](_0x6243('0x5e'),util['inspect'](_0x1220bc,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x6243('0x14')]=function(_0x1e5f21){try{if(this[_0x6243('0x5a')](_0x1e5f21)&&this[_0x6243('0x5a')](_0x1e5f21[_0x6243('0x5f')])){logger[_0x6243('0x42')](_0x6243('0x60'),util[_0x6243('0x39')](_0x1e5f21,{'showHidden':![],'depth':null}));if(this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]]){logger[_0x6243('0x61')](_0x6243('0x62'),_0x1e5f21['queue']);var _0x22ac45=_[_0x6243('0x63')](this[_0x6243('0xe')],'queue')[_0x1e5f21[_0x6243('0x5f')]]||0x0;var _0x295b89=_0x22ac45-_0x1e5f21[_0x6243('0x64')];if(this[_0x6243('0x10')][_0x1e5f21['queue']][_0x6243('0x2c')]!==_['toNumber'](_0x1e5f21[_0x6243('0x64')])||this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x51')]!==_[_0x6243('0x65')](_0x1e5f21[_0x6243('0x66')])||this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x50')]!==_['toNumber'](_0x1e5f21[_0x6243('0x50')])||this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x55')]!==_0x295b89){this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x2c')]=_[_0x6243('0x65')](_0x1e5f21['callers']);this[_0x6243('0x10')][_0x1e5f21['queue']]['loggedIn']=_[_0x6243('0x65')](_0x1e5f21['loggedin']);this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x50')]=_[_0x6243('0x65')](_0x1e5f21[_0x6243('0x50')]);this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x55')]=_0x295b89>0x0?_0x295b89:0x0;this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x55')]=this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]][_0x6243('0x55')]>_[_0x6243('0x65')](_0x1e5f21['loggedin'])?_[_0x6243('0x65')](_0x1e5f21[_0x6243('0x66')]):this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]]['talking'];this['emitVoiceQueueSummary'](this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]],_0x6243('0x67'));}logger['debug'](_0x6243('0x68'),util[_0x6243('0x39')](this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]],{'showHidden':![],'depth':null}));ami[_0x6243('0x40')](_0x6243('0x69'),this[_0x6243('0x10')][_0x1e5f21[_0x6243('0x5f')]]);}}}catch(_0x34faad){logger[_0x6243('0x37')](_0x6243('0x5e'),util[_0x6243('0x39')](_0x34faad,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x6243('0x6a')]=function(_0x37761f){logger['debug'](_0x6243('0x6b'),util[_0x6243('0x39')](_0x37761f,{'showHidden':![],'depth':null}));this[_0x6243('0x11')]=!![];};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x17')]=function(_0x141616){try{if(this['isNotNull'](_0x141616)){logger[_0x6243('0x42')](_0x6243('0x6c'),_0x141616['uniqueid'],util[_0x6243('0x39')](_0x141616,{'showHidden':![],'depth':null}));if(_[_0x6243('0x5b')](this['queueReports'][_0x141616['uniqueid']]))this[_0x6243('0x3e')][_0x141616[_0x6243('0x45')]]=[];if(_[_0x6243('0x5b')](this['channels'][_0x141616[_0x6243('0x45')]]))this['channels'][_0x141616[_0x6243('0x45')]]={};var _0x3cdc47=new QueueReport();_0x3cdc47[_0x6243('0x48')]=_0x141616['queue'];_0x3cdc47[_0x6243('0x4c')]=this[_0x6243('0x10')][_0x3cdc47[_0x6243('0x48')]]&&this[_0x6243('0x10')][_0x3cdc47[_0x6243('0x48')]]['type']?this[_0x6243('0x10')][_0x3cdc47[_0x6243('0x48')]][_0x6243('0x4c')]||_0x6243('0x4d'):'inbound';_0x3cdc47[_0x6243('0x5f')]=_0x141616[_0x6243('0x5f')];_0x3cdc47['queuecallerjoinAt']=moment()[_0x6243('0x46')](_0x6243('0x6d'));_0x3cdc47[_0x6243('0x6e')]=_0x141616['position'];_0x3cdc47[_0x6243('0x6f')]=_0x141616['count'];_0x3cdc47['uniqueid']=_0x141616[_0x6243('0x45')];_0x3cdc47[_0x6243('0x70')]=this['channels'][_0x141616[_0x6243('0x45')]][_0x6243('0x70')];logger['info'](_0x6243('0x71'),_0x3cdc47[_0x6243('0x48')],_0x3cdc47[_0x6243('0x4c')]);_[_0x6243('0x72')](_0x3cdc47,_['pick'](_0x141616,_[_0x6243('0x73')](_0x3cdc47)));this[_0x6243('0x3e')][_0x141616[_0x6243('0x45')]][_0x6243('0x74')](_0x3cdc47);this['channels'][_0x141616[_0x6243('0x45')]]=_0x3cdc47;this['emitVoiceQueueChannelSave'](_0x3cdc47,_0x6243('0x75'));}}catch(_0x19d7ba){logger['error'](_0x6243('0x6c'),_0x141616['uniqueid'],util[_0x6243('0x39')](_0x19d7ba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x18')]=function(_0x48d2f3){try{if(this['isNotNull'](_0x48d2f3)){logger[_0x6243('0x42')](_0x6243('0x76'),_0x48d2f3['uniqueid'],util[_0x6243('0x39')](_0x48d2f3,{'showHidden':![],'depth':null}));if(this[_0x6243('0x3e')][_0x48d2f3['uniqueid']]){var _0x513045=_[_0x6243('0x77')](this['queueReports'][_0x48d2f3['uniqueid']]);_0x513045[_0x6243('0x78')]=![];_0x513045[_0x6243('0x79')]=null;_0x513045[_0x6243('0x7a')]=_0x48d2f3[_0x6243('0x7a')];_0x513045['originalposition']=_0x48d2f3[_0x6243('0x7b')];_0x513045['queuecallerabandon']=!![];_0x513045[_0x6243('0x7c')]=moment()[_0x6243('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x513045[_0x6243('0x7d')]=_0x6243('0x7e');_0x513045[_0x6243('0x7f')]=null;logger[_0x6243('0x61')](_0x6243('0x80'),_0x513045['name'],_0x513045[_0x6243('0x4c')]);this[_0x6243('0xe')][_0x48d2f3[_0x6243('0x45')]]=_0x513045;this['emitVoiceQueueChannelRemove'](_0x513045,_0x6243('0x81'));}}}catch(_0x467cff){logger[_0x6243('0x37')](_0x6243('0x76'),_0x48d2f3[_0x6243('0x45')],util[_0x6243('0x39')](_0x467cff,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x1a')]=function(_0x4438b1){try{if(this[_0x6243('0x5a')](_0x4438b1)){logger[_0x6243('0x42')](_0x6243('0x82'),_0x4438b1[_0x6243('0x45')],util[_0x6243('0x39')](_0x4438b1,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4438b1[_0x6243('0x45')]]){var _0x14fcfa=_[_0x6243('0x77')](this[_0x6243('0x3e')][_0x4438b1[_0x6243('0x45')]]);_0x14fcfa[_0x6243('0x83')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x14fcfa[_0x6243('0x84')]=_0x4438b1[_0x6243('0x84')];_0x14fcfa['connectedlinename']=_0x4438b1[_0x6243('0x85')];logger[_0x6243('0x61')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x14fcfa[_0x6243('0x48')],_0x14fcfa['type'],_0x4438b1[_0x6243('0x84')],_0x4438b1['connectedlinename']);this[_0x6243('0xe')][_0x4438b1[_0x6243('0x45')]]=_0x14fcfa;this[_0x6243('0x41')](_0x14fcfa,_0x6243('0x19'));}}}catch(_0x321fed){logger[_0x6243('0x37')](_0x6243('0x82'),_0x4438b1[_0x6243('0x45')],util['inspect'](_0x321fed,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x6243('0x86')]=function(_0x167144){try{if(this[_0x6243('0x5a')](_0x167144)){logger[_0x6243('0x42')](_0x6243('0x87'),_0x167144[_0x6243('0x45')],util[_0x6243('0x39')](_0x167144,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x167144['uniqueid']]){var _0x9b3bde=_[_0x6243('0x77')](this['queueReports'][_0x167144['uniqueid']]);_0x9b3bde[_0x6243('0x78')]=!![];_0x9b3bde[_0x6243('0x7d')]=_0x6243('0x88');logger[_0x6243('0x61')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x9b3bde[_0x6243('0x48')],_0x9b3bde[_0x6243('0x4c')]);}}}catch(_0x144f7c){logger[_0x6243('0x37')](_0x6243('0x87'),_0x167144[_0x6243('0x45')],util[_0x6243('0x39')](_0x144f7c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x1c')]=function(_0x123935){try{if(this[_0x6243('0x5a')](_0x123935)){logger['debug'](_0x6243('0x89'),_0x123935[_0x6243('0x45')],util[_0x6243('0x39')](_0x123935,{'showHidden':![],'depth':null}));if(this[_0x6243('0x3e')][_0x123935['uniqueid']]){var _0x2cdac0=_[_0x6243('0x77')](this[_0x6243('0x3e')][_0x123935[_0x6243('0x45')]]);_0x2cdac0[_0x6243('0x81')]=![];_0x2cdac0[_0x6243('0x7c')]=null;_0x2cdac0[_0x6243('0x8a')]=!![];_0x2cdac0[_0x6243('0x7f')]=_0x123935[_0x6243('0x8b')];_0x2cdac0[_0x6243('0x7a')]=_0x123935[_0x6243('0x7a')];_0x2cdac0['queuecallercomplete']=!![];_0x2cdac0[_0x6243('0x8c')]=![];_0x2cdac0[_0x6243('0x8d')]=null;if(!_0x2cdac0[_0x6243('0x8e')]){if(_0x123935['reason']==_0x6243('0x8e')){_0x2cdac0[_0x6243('0x7d')]=_0x6243('0x8f');logger[_0x6243('0x61')](_0x6243('0x90'),_0x2cdac0['name'],_0x2cdac0[_0x6243('0x4c')]);}else{if(_['startsWith'](_0x123935['channel'][_0x6243('0x91')](),'local/')){if(this[_0x6243('0x3e')][_0x123935[_0x6243('0x92')]]){var _0x5713d6=_[_0x6243('0x77')](this[_0x6243('0x3e')][_0x123935['linkedid']]);_0x5713d6[_0x6243('0x78')]=![];_0x5713d6[_0x6243('0x8c')]=!![];_0x5713d6['queuecallerexitAt']=moment(_0x2cdac0['queuecallerjoinAt'])[_0x6243('0x93')](_0x123935['holdtime'],_0x6243('0x94'))[_0x6243('0x46')](_0x6243('0x6d'));_0x5713d6[_0x6243('0x7d')]=_0x6243('0x95');_0x5713d6[_0x6243('0x8e')]=!![];_0x5713d6[_0x6243('0x96')]=_0x6243('0x97');_0x5713d6[_0x6243('0x98')]=_0x123935[_0x6243('0x99')];_0x5713d6[_0x6243('0x9a')]=_0x123935[_0x6243('0x45')];logger[_0x6243('0x61')](_0x6243('0x9b'),_0x5713d6[_0x6243('0x48')],_0x5713d6[_0x6243('0x4c')]);var _0x40a5e8=this[_0x6243('0x3e')][_0x123935[_0x6243('0x92')]];this['queueReports'][_0x123935[_0x6243('0x92')]]=this[_0x6243('0x3e')][_0x123935[_0x6243('0x45')]];this[_0x6243('0x3e')][_0x123935[_0x6243('0x45')]]=_0x40a5e8;}}else{_0x2cdac0[_0x6243('0x7d')]=_0x6243('0x9c')+_0x123935[_0x6243('0x9d')]['toUpperCase']();logger[_0x6243('0x61')](_0x6243('0x9e'),_0x2cdac0[_0x6243('0x48')],_0x2cdac0[_0x6243('0x4c')],_0x2cdac0[_0x6243('0x7d')]);}}}this['channels'][_0x123935[_0x6243('0x45')]]=_0x2cdac0;this[_0x6243('0x49')](_0x2cdac0,_0x6243('0x1b'));}}}catch(_0x537657){logger[_0x6243('0x37')](_0x6243('0x89'),_0x123935[_0x6243('0x45')],util[_0x6243('0x39')](_0x537657,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x9f')]=function(_0x60f3bd){try{if(this[_0x6243('0x5a')](_0x60f3bd)){logger[_0x6243('0x42')](_0x6243('0xa0'),_0x60f3bd[_0x6243('0x45')],util[_0x6243('0x39')](_0x60f3bd,{'showHidden':![],'depth':null}));this[_0x6243('0xa1')](_0x60f3bd[_0x6243('0x45')],_[_0x6243('0x73')](_0x60f3bd['variable'])[0x0],_0x60f3bd[_0x6243('0xa2')]);if(this['queueReports'][_0x60f3bd[_0x6243('0x45')]]){var _0x98c078=_['last'](this[_0x6243('0x3e')][_0x60f3bd[_0x6243('0x45')]]);if(_0x98c078){if(this[_0x6243('0x5a')](_0x60f3bd[_0x6243('0xa3')])&&this[_0x6243('0x5a')](_0x60f3bd[_0x6243('0xa3')][_0x6243('0xa4')])){switch(_0x60f3bd[_0x6243('0xa2')]){case _0x6243('0xa5'):_0x98c078['queuecallerexit']=![];_0x98c078[_0x6243('0x8d')]=null;break;case'TIMEOUT':_0x98c078[_0x6243('0xa6')]=_0x6243('0xa7');_0x98c078[_0x6243('0x8c')]=!![];_0x98c078[_0x6243('0x8d')]=moment()[_0x6243('0x46')](_0x6243('0x6d'));_0x98c078[_0x6243('0x83')]=moment()['format'](_0x6243('0x6d'));logger[_0x6243('0x42')](_0x6243('0xa8'),_0x60f3bd['uniqueid'],util['inspect'](_0x98c078,{'showHidden':![],'depth':null}));ami[_0x6243('0x40')](_0x6243('0xa9'),_0x98c078);break;default:_0x98c078[_0x6243('0x8c')]=!![];_0x98c078[_0x6243('0x8d')]=moment()[_0x6243('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x98c078[_0x6243('0x83')]=moment()[_0x6243('0x46')]('YYYY-MM-DD\x20HH:mm:ss');}_0x98c078['queuecallerabandon']=![];_0x98c078[_0x6243('0x7c')]=null;_0x98c078[_0x6243('0x7d')]=_0x60f3bd[_0x6243('0xa2')];this['channels'][_0x60f3bd['uniqueid']]=_0x98c078;this['emitVoiceQueueChannelRemove'](_0x98c078,'varset');}else if(this[_0x6243('0x5a')](_0x60f3bd[_0x6243('0xa3')])&&this[_0x6243('0x5a')](_0x60f3bd[_0x6243('0xa3')]['queueposition'])){if(!_0x98c078[_0x6243('0x81')]){_0x98c078[_0x6243('0x8c')]=!![];_0x98c078[_0x6243('0x8d')]=moment()['format'](_0x6243('0x6d'));_0x98c078[_0x6243('0x7d')]=_0x6243('0xaa');_0x98c078[_0x6243('0x83')]=moment()[_0x6243('0x46')](_0x6243('0x6d'));this[_0x6243('0xe')][_0x60f3bd[_0x6243('0x45')]]=_0x98c078;}}logger['info'](_0x6243('0xab'),_0x60f3bd[_0x6243('0x45')],_0x98c078[_0x6243('0x48')],_0x98c078['type'],_[_0x6243('0x73')](_0x60f3bd[_0x6243('0xa3')])[0x0],_0x60f3bd[_0x6243('0xa2')]);_0x98c078[_0x6243('0x13')]=this['variables'][_0x60f3bd['uniqueid']];}}}}catch(_0x4a0dfe){logger[_0x6243('0x37')](_0x6243('0xa0'),_0x60f3bd[_0x6243('0x45')],util['inspect'](_0x4a0dfe,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0xa1')]=function(_0x504cda,_0x3a8444,_0x33c5c5){var _0x51ca14=[_0x6243('0xac'),'rtpaudioqosbridged',_0x6243('0xad'),_0x6243('0xae'),_0x6243('0xaf'),_0x6243('0xb0'),_0x6243('0xb1'),_0x6243('0xb2'),_0x6243('0xb3'),'sipuri',_0x6243('0xb4'),_0x6243('0xb5'),_0x6243('0xb6'),'memberdynamic',_0x6243('0xb7'),_0x6243('0xb8'),_0x6243('0x8b'),_0x6243('0xb9'),_0x6243('0xba')];if(!_[_0x6243('0x31')](_0x3a8444)&&!_['includes'](_0x51ca14,_0x3a8444)){if(_['isUndefined'](this['variables'][_0x504cda])){this[_0x6243('0x13')][_0x504cda]={};}this[_0x6243('0x13')][_0x504cda][_0x3a8444]=_0x33c5c5;}};VoiceQueueReport['prototype'][_0x6243('0xbb')]=function(_0x32768e){try{if(this[_0x6243('0x5a')](_0x32768e)){logger[_0x6243('0x42')](_0x6243('0xbc'),_0x32768e[_0x6243('0x45')],util[_0x6243('0x39')](_0x32768e,{'showHidden':![],'depth':null}));if(this[_0x6243('0x3e')][_0x32768e[_0x6243('0x45')]]){for(var _0x5ebbcd=0x0,_0x23c780={};_0x5ebbcd<this['queueReports'][_0x32768e[_0x6243('0x45')]]['length'];_0x5ebbcd+=0x1){_0x23c780=this[_0x6243('0x3e')][_0x32768e[_0x6243('0x45')]][_0x5ebbcd];if(this[_0x6243('0x10')][_0x23c780['queue']]){if(_0x23c780[_0x6243('0x8c')]&&_0x23c780[_0x6243('0x8e')]!=!![]){this[_0x6243('0x10')][_0x23c780['queue']]['unmanaged']+=0x1;}if(_0x23c780[_0x6243('0x81')]){this[_0x6243('0x10')][_0x23c780[_0x6243('0x5f')]][_0x6243('0xbd')]+=0x1;}this[_0x6243('0x10')][_0x23c780[_0x6243('0x5f')]]['sumHoldTime']+=moment(_0x23c780['queuecallerleaveAt'])[_0x6243('0xbe')](_0x23c780[_0x6243('0xbf')],_0x6243('0x94'))||0x0;if(_0x5ebbcd===this[_0x6243('0x3e')][_0x32768e[_0x6243('0x45')]][_0x6243('0xc0')]-0x1){this[_0x6243('0x10')][_0x23c780['queue']][_0x6243('0x54')]+=moment()['milliseconds'](0x0)['diff'](_0x23c780[_0x6243('0xbf')],_0x6243('0x94'));this[_0x6243('0x10')][_0x23c780[_0x6243('0x5f')]][_0x6243('0xc1')]+=0x1;if(_0x23c780['queuecallercomplete']){this[_0x6243('0x10')][_0x23c780[_0x6243('0x5f')]][_0x6243('0x4f')]+=0x1;this['voiceQueues'][_0x23c780[_0x6243('0x5f')]][_0x6243('0x53')]+=moment()['milliseconds'](0x0)[_0x6243('0xbe')](_0x23c780['queuecallerleaveAt'],_0x6243('0x94'));_0x23c780[_0x6243('0x79')]=moment()[_0x6243('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x23c780[_0x6243('0x8c')]=![];_0x23c780['queuecallerexitAt']=null;}if(_0x23c780[_0x6243('0x8c')]&&_0x23c780[_0x6243('0x8e')]!=!![]){_0x23c780[_0x6243('0xa6')]=_0x6243('0x56');logger[_0x6243('0x42')](_0x6243('0xc2'),_0x32768e[_0x6243('0x45')],util[_0x6243('0x39')](_0x23c780,{'showHidden':![],'depth':null}));ami[_0x6243('0x40')](_0x6243('0xc3'),_0x23c780);}if(_0x23c780[_0x6243('0x81')]){_0x23c780[_0x6243('0xa6')]=_0x6243('0xbd');logger[_0x6243('0x42')](_0x6243('0xc4'),_0x32768e[_0x6243('0x45')],util[_0x6243('0x39')](_0x23c780,{'showHidden':![],'depth':null}));ami['emit'](_0x6243('0xc5'),_0x23c780);}}else{this[_0x6243('0x10')][_0x23c780[_0x6243('0x5f')]]['sumDuration']+=this['voiceQueues'][_0x23c780[_0x6243('0x5f')]]['sumHoldTime'];}logger[_0x6243('0x61')](_0x6243('0xc6'),_0x32768e[_0x6243('0x45')],_0x23c780['name'],_0x23c780[_0x6243('0x4c')],_0x32768e[_0x6243('0xc7')]);this[_0x6243('0xe')][_0x32768e[_0x6243('0x45')]]=_0x23c780;this['emitVoiceQueueChannelRemove'](_0x23c780,_0x6243('0x1f'));this[_0x6243('0xc8')](this[_0x6243('0x10')][_0x23c780[_0x6243('0x5f')]],_0x6243('0x1f'));}}logger[_0x6243('0x42')](_0x6243('0xc9'),_0x32768e[_0x6243('0x45')],util[_0x6243('0x39')](this[_0x6243('0x3e')][_0x32768e['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x6243('0xca'),this[_0x6243('0x3e')][_0x32768e[_0x6243('0x45')]]);delete this['queueReports'][_0x32768e[_0x6243('0x45')]];delete this[_0x6243('0xe')][_0x32768e[_0x6243('0x45')]];}if(this[_0x6243('0x13')][_0x32768e[_0x6243('0x45')]]){delete this[_0x6243('0x13')][_0x32768e[_0x6243('0x45')]];}}}catch(_0x1e6dd3){logger[_0x6243('0x37')](_0x6243('0xbc'),_0x32768e[_0x6243('0x45')],util[_0x6243('0x39')](_0x1e6dd3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0xcb')]=function(_0x1f4ca4){try{if(this['isNotNull'](_0x1f4ca4)){logger[_0x6243('0x42')](_0x6243('0xcc'),_0x1f4ca4[_0x6243('0x45')],util[_0x6243('0x39')](_0x1f4ca4,{'showHidden':![],'depth':null}));var _0x1f9930;if(this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xcd')]]){_0x1f9930=_['last'](this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xcd')]]);_0x1f9930[_0x6243('0x98')]=_0x1f4ca4[_0x6243('0xce')];_0x1f9930[_0x6243('0x9a')]=_0x1f4ca4[_0x6243('0xcf')];_0x1f9930[_0x6243('0x7d')]=_0x6243('0xd0');_0x1f9930[_0x6243('0x8e')]=!![];_0x1f9930[_0x6243('0x96')]=_0x6243('0xd1');if(this[_0x6243('0x3e')][_0x1f4ca4['secondtransfereruniqueid']]){var _0xf0ffb1=this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xcf')]];this['queueReports'][_0x1f4ca4[_0x6243('0xcf')]]=this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xcd')]];this['queueReports'][_0x1f4ca4[_0x6243('0xcd')]]=_0xf0ffb1;var _0x48bae1=_['last'](this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xcd')]]);_0x48bae1[_0x6243('0x2f')]=!![];}logger[_0x6243('0x61')](_0x6243('0xd2'),_0x1f4ca4[_0x6243('0x45')],_0x1f9930[_0x6243('0x48')],_0x1f9930[_0x6243('0x4c')],_0x1f9930['transferexten'],_0x1f9930[_0x6243('0x9a')]);}else if(this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xd3')]]){_0x1f9930=_[_0x6243('0x77')](this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xd3')]]);_0x1f9930[_0x6243('0x98')]=_0x1f4ca4[_0x6243('0xd4')];_0x1f9930['transferuniqueid']=_0x1f4ca4['origtransfereruniqueid'];_0x1f9930[_0x6243('0x7d')]=_0x6243('0xd0');_0x1f9930['transfer']=!![];_0x1f9930['transfertype']=_0x6243('0xd1');if(this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xd5')]]){var _0xf0ffb1=this[_0x6243('0x3e')][_0x1f4ca4['origtransfereruniqueid']];this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xd5')]]=this[_0x6243('0x3e')][_0x1f4ca4['transfertargetuniqueid']];this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xd3')]]=_0xf0ffb1;var _0x48bae1=_[_0x6243('0x77')](this[_0x6243('0x3e')][_0x1f4ca4[_0x6243('0xd3')]]);_0x48bae1[_0x6243('0x2f')]=!![];}logger[_0x6243('0x61')](_0x6243('0xd2'),_0x1f4ca4[_0x6243('0x45')],_0x1f9930[_0x6243('0x48')],_0x1f9930['type'],_0x1f9930['transferexten'],_0x1f9930['transferuniqueid']);}}}catch(_0x1081a8){logger[_0x6243('0x37')](_0x6243('0xcc'),_0x1f4ca4[_0x6243('0x45')],util[_0x6243('0x39')](_0x1081a8,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x6243('0xd6')]=function(_0x14e134){try{if(this['isNotNull'](_0x14e134)){logger[_0x6243('0x42')](_0x6243('0xd7'),_0x14e134[_0x6243('0x45')],util[_0x6243('0x39')](_0x14e134,{'showHidden':![],'depth':null}));if(this[_0x6243('0x3e')][_0x14e134['transfereeuniqueid']]){var _0x185193=_[_0x6243('0x77')](this[_0x6243('0x3e')][_0x14e134[_0x6243('0xcd')]]);_0x185193['queuecallerexitreason']=_0x6243('0xd8');_0x185193[_0x6243('0x8e')]=!![];_0x185193[_0x6243('0x96')]=_0x6243('0xd9');_0x185193[_0x6243('0x98')]=_0x14e134[_0x6243('0xda')];_0x185193[_0x6243('0x9a')]=_0x14e134[_0x6243('0xcd')];logger[_0x6243('0x61')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x14e134[_0x6243('0x45')],_0x185193[_0x6243('0x48')],_0x185193[_0x6243('0x4c')],_0x185193[_0x6243('0x98')],_0x185193[_0x6243('0x9a')]);this['syncHangup']({'event':_0x6243('0xdb'),'uniqueid':_0x14e134[_0x6243('0xcd')],'context':_0x14e134[_0x6243('0xdc')],'channel':_0x14e134[_0x6243('0xdd')]});}}}catch(_0x5902af){logger['error'](_0x6243('0xd7'),_0x14e134[_0x6243('0x45')],util[_0x6243('0x39')](_0x5902af,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x24')]=function(_0x473462){try{if(this['isNotNull'](_0x473462)){logger[_0x6243('0x42')](_0x6243('0xde'),_0x473462[_0x6243('0x45')],util[_0x6243('0x39')](_0x473462,{'showHidden':![],'depth':null}));if(this[_0x6243('0x3e')][_0x473462[_0x6243('0x45')]]){var _0x500796=_['last'](this[_0x6243('0x3e')][_0x473462[_0x6243('0x45')]]);if(!_[_0x6243('0x31')](_0x500796[_0x6243('0x83')])){_0x500796['mohstarttime']=moment()[_0x6243('0x46')](_0x6243('0x6d'));logger[_0x6243('0x61')](_0x6243('0xdf'),_0x473462['uniqueid'],_0x500796[_0x6243('0xe0')]);}}}}catch(_0x529eee){logger[_0x6243('0x37')](_0x6243('0xde'),_0x473462[_0x6243('0x45')],util[_0x6243('0x39')](_0x529eee,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')][_0x6243('0x26')]=function(_0x5b380d){try{if(this[_0x6243('0x5a')](_0x5b380d)){logger[_0x6243('0x42')](_0x6243('0xe1'),_0x5b380d['uniqueid'],util[_0x6243('0x39')](_0x5b380d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5b380d[_0x6243('0x45')]]){var _0x194d54=_['last'](this['queueReports'][_0x5b380d[_0x6243('0x45')]]);if(!_[_0x6243('0x31')](_0x194d54[_0x6243('0xe0')])){_0x194d54[_0x6243('0xe2')]+=moment()[_0x6243('0xe3')](0x0)[_0x6243('0xbe')](_0x194d54[_0x6243('0xe0')],'seconds');logger[_0x6243('0x61')](_0x6243('0xe4'),_0x5b380d[_0x6243('0x45')],_0x194d54[_0x6243('0xe2')]);delete _0x194d54[_0x6243('0xe0')];}}}}catch(_0x2c584e){logger[_0x6243('0x37')](_0x6243('0xe1'),_0x5b380d[_0x6243('0x45')],util[_0x6243('0x39')](_0x2c584e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x6243('0x9')]['syncNewExten']=function(_0x39065b){try{if(this['isNotNull'](_0x39065b)){logger[_0x6243('0x42')](_0x6243('0xe5'),_0x39065b[_0x6243('0x45')],util[_0x6243('0x39')](_0x39065b,{'showHidden':![],'depth':null}));if(_0x39065b['application'][_0x6243('0x91')]()==='set'){_0x39065b[_0x6243('0xe6')]=_0x39065b[_0x6243('0xe7')]&&_0x39065b[_0x6243('0xe7')][_0x6243('0xe8')](_0x6243('0xe9'))?_0x39065b[_0x6243('0xe7')]:(_0x39065b[_0x6243('0xe7')]||_0x39065b[_0x6243('0xe6')])['toLowerCase']();if(_['startsWith'](_0x39065b[_0x6243('0xe6')][_0x6243('0x91')](),'cdr(')){logger[_0x6243('0x61')](_0x6243('0xea'),_0x39065b[_0x6243('0x45')],_0x39065b[_0x6243('0xeb')],_0x39065b[_0x6243('0xe6')]);if(_[_0x6243('0x5b')](this[_0x6243('0xe')][_0x39065b[_0x6243('0x45')]]))this[_0x6243('0xe')][_0x39065b[_0x6243('0x45')]]={};var _0x75dfb3=_0x39065b[_0x6243('0xe6')][_0x6243('0xec')]('=');var _0x53d238=_0x75dfb3[0x0][_0x6243('0x91')]()[_0x6243('0xed')](/cdr\((.*)\)/);if(_0x53d238)this[_0x6243('0xe')][_0x39065b[_0x6243('0x45')]][_0x53d238[0x1]]=_0x75dfb3[0x1];}}}}catch(_0x29b825){logger[_0x6243('0x37')]('[%s][voiceQueueReport][newexten]',_0x39065b['uniqueid'],util[_0x6243('0x39')](_0x29b825,{'showHidden':![],'depth':null}));}};module[_0x6243('0xee')]=VoiceQueueReport;
\ No newline at end of file
index b7c32a8..d48b2ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cff=['campaign','queue','Request','CreateReportAgentPreview','../client','createHistory'];(function(_0x498cf0,_0x394333){var _0x5011f1=function(_0x33c1ff){while(--_0x33c1ff){_0x498cf0['push'](_0x498cf0['shift']());}};_0x5011f1(++_0x394333);}(_0x6cff,0x118));var _0xf6cf=function(_0x352401,_0x5c29d3){_0x352401=_0x352401-0x0;var _0x2982c5=_0x6cff[_0x352401];return _0x2982c5;};'use strict';var client=require(_0xf6cf('0x0'));exports[_0xf6cf('0x1')]=function(_0x570b8e){return function(){_0x570b8e[_0xf6cf('0x2')]=_0x570b8e[_0xf6cf('0x3')];return client[_0xf6cf('0x4')]('CreateReportAgentPreview',{'body':_0x570b8e,'log':_0xf6cf('0x5')});};};
\ No newline at end of file
+var _0xa208=['CreateReportAgentPreview','createHistory','queue'];(function(_0x2495de,_0x5d3969){var _0x50aa47=function(_0x515a43){while(--_0x515a43){_0x2495de['push'](_0x2495de['shift']());}};_0x50aa47(++_0x5d3969);}(_0xa208,0x199));var _0x8a20=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa208[_0x1cfa0d];return _0xe33279;};'use strict';var client=require('../client');exports[_0x8a20('0x0')]=function(_0x11e1f1){return function(){_0x11e1f1['campaign']=_0x11e1f1[_0x8a20('0x1')];return client['Request'](_0x8a20('0x2'),{'body':_0x11e1f1,'log':_0x8a20('0x2')});};};
\ No newline at end of file
index 7233b21..c23708d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2af=['Request','CreateAttachment','../client','create'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xb2af,0xd2));var _0xfb2a=function(_0x4241f8,_0x58971a){_0x4241f8=_0x4241f8-0x0;var _0x4f9681=_0xb2af[_0x4241f8];return _0x4f9681;};'use strict';var client=require(_0xfb2a('0x0'));exports[_0xfb2a('0x1')]=function(_0xf5c2e0){return client[_0xfb2a('0x2')]('CreateAttachment',{'body':_0xf5c2e0,'log':_0xfb2a('0x3')});};
\ No newline at end of file
+var _0x887b=['CreateAttachment','../client','create','Request'];(function(_0x58fdfd,_0x46f063){var _0x3a4613=function(_0x4b6a77){while(--_0x4b6a77){_0x58fdfd['push'](_0x58fdfd['shift']());}};_0x3a4613(++_0x46f063);}(_0x887b,0x185));var _0xb887=function(_0x3c3632,_0x5d1e27){_0x3c3632=_0x3c3632-0x0;var _0x47a439=_0x887b[_0x3c3632];return _0x47a439;};'use strict';var client=require(_0xb887('0x0'));exports[_0xb887('0x1')]=function(_0x2ee33d){return client[_0xb887('0x2')](_0xb887('0x3'),{'body':_0x2ee33d,'log':_0xb887('0x3')});};
\ No newline at end of file
index 2ca1b50..86405ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0xdd2540,_0x138f66){var _0x1f0dab=function(_0x34a4bd){while(--_0x34a4bd){_0xdd2540['push'](_0xdd2540['shift']());}};_0x1f0dab(++_0x138f66);}(_0x7a54,0x106));var _0x47a5=function(_0x51245a,_0x3dfce8){_0x51245a=_0x51245a-0x0;var _0x4acf1e=_0x7a54[_0x51245a];return _0x4acf1e;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x167082,_0x5cd23a){var _0xcddbcc=function(_0x58ada6){while(--_0x58ada6){_0x167082['push'](_0x167082['shift']());}};_0xcddbcc(++_0x5cd23a);}(_0x326f,0xd1));var _0xf326=function(_0x18fa03,_0x205e7b){_0x18fa03=_0x18fa03-0x0;var _0x2373ef=_0x326f[_0x18fa03];return _0x2373ef;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index 49c1280..6c7cc36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda2=['createContact','Request','CreateCmContact','GetCmContact','../client'];(function(_0x2c6120,_0x1f3e60){var _0x5fb114=function(_0x45a72d){while(--_0x45a72d){_0x2c6120['push'](_0x2c6120['shift']());}};_0x5fb114(++_0x1f3e60);}(_0xeda2,0x9a));var _0x2eda=function(_0x56b878,_0x4be9aa){_0x56b878=_0x56b878-0x0;var _0x32b9ec=_0xeda2[_0x56b878];return _0x32b9ec;};'use strict';var client=require(_0x2eda('0x0'));exports[_0x2eda('0x1')]=function(_0x4f8889){return function(){return client[_0x2eda('0x2')](_0x2eda('0x3'),{'body':_0x4f8889,'log':_0x2eda('0x3')});};};exports['getContacts']=function(_0x29fc06){return function(){return client[_0x2eda('0x2')](_0x2eda('0x4'),{'options':_0x29fc06,'log':_0x2eda('0x4')});};};
\ No newline at end of file
+var _0x11d8=['Request','CreateCmContact','getContacts','GetCmContact','../client','createContact'];(function(_0x2e26e9,_0x217ec6){var _0x54adea=function(_0x20cb35){while(--_0x20cb35){_0x2e26e9['push'](_0x2e26e9['shift']());}};_0x54adea(++_0x217ec6);}(_0x11d8,0x1e4));var _0x811d=function(_0x47c5bf,_0x45977e){_0x47c5bf=_0x47c5bf-0x0;var _0x11b779=_0x11d8[_0x47c5bf];return _0x11b779;};'use strict';var client=require(_0x811d('0x0'));exports[_0x811d('0x1')]=function(_0x58ba4d){return function(){return client[_0x811d('0x2')]('CreateCmContact',{'body':_0x58ba4d,'log':_0x811d('0x3')});};};exports[_0x811d('0x4')]=function(_0x585611){return function(){return client[_0x811d('0x2')]('GetCmContact',{'options':_0x585611,'log':_0x811d('0x5')});};};
\ No newline at end of file
index 863b818..016ecb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe78f=['getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','../client','moment','lodash','getContacts','Request','CmContact','Contact','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','priority','scheduledat','ASC','GetContactDialer','getContactDialerIvr','DESC','moveContactManagedDialer','campaign','MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','getCmHopper','unlockContact'];(function(_0x306626,_0x425e93){var _0x466728=function(_0x3b3478){while(--_0x3b3478){_0x306626['push'](_0x306626['shift']());}};_0x466728(++_0x425e93);}(_0xe78f,0x1d3));var _0xfe78=function(_0x11bdff,_0x33d3a4){_0x11bdff=_0x11bdff-0x0;var _0x2f19a1=_0xe78f[_0x11bdff];return _0x2f19a1;};'use strict';var client=require(_0xfe78('0x0'));var moment=require(_0xfe78('0x1'));var _=require(_0xfe78('0x2'));exports[_0xfe78('0x3')]=function(_0x487753,_0x5ad2eb){return function(){return client[_0xfe78('0x4')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x487753},'include':[{'model':_0xfe78('0x5'),'as':_0xfe78('0x6')}],'limit':_0x5ad2eb,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x372747,_0x3ce930,_0x4a966c){return function(){return client[_0xfe78('0x4')](_0xfe78('0x7'),{'body':_0x372747,'options':{'where':{'VoiceQueueId':_0x3ce930,'scheduledat':{'$lte':moment()[_0xfe78('0x8')](_0xfe78('0x9'))}},'limit':_0x4a966c},'log':_0xfe78('0x7')});};};exports[_0xfe78('0xa')]=function(_0x56747b){return function(){return client[_0xfe78('0x4')](_0xfe78('0x7'),{'body':_0x56747b,'options':{'where':{'ContactId':_0x56747b[_0xfe78('0xb')],'ListId':_0x56747b['ListId'],'VoiceQueueId':_0x56747b[_0xfe78('0xc')],'CampaignId':_0x56747b[_0xfe78('0xd')]}},'log':_0xfe78('0xa')});};};exports[_0xfe78('0xe')]=function(_0x2fcaab,_0x3727fa,_0xbde925){return function(){return client['Request'](_0xfe78('0xf'),{'options':{'where':{'VoiceQueueId':_0x2fcaab,'ListId':_0x3727fa,'ContactId':_0xbde925}},'log':_0xfe78('0xf')});};};exports[_0xfe78('0x10')]=function(_0x3aaaaa,_0x9167b6,_0x1c92be,_0xa496cd){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3aaaaa,'active':![],'scheduledat':{'$lte':moment()[_0xfe78('0x8')](_0xfe78('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x9167b6}}]},'order':[[_0xfe78('0x11'),'DESC'],[_0xfe78('0x12'),_0xa496cd],['id',_0xfe78('0x13')]],'raw':!![],'limit':_0x1c92be},'log':_0xfe78('0x14')});};};exports[_0xfe78('0x15')]=function(_0x15a980,_0x86a009,_0x58490d){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x15a980,'active':![],'scheduledat':{'$lte':moment()[_0xfe78('0x8')](_0xfe78('0x9'))}},'include':[{'model':'CmContact','as':_0xfe78('0x6')}],'order':[['priority',_0xfe78('0x16')],[_0xfe78('0x12'),_0x58490d],['id',_0xfe78('0x13')]],'raw':!![],'limit':_0x86a009},'log':'GetContactDialerIvr'});};};exports[_0xfe78('0x17')]=function(_0x3b1f70,_0x2429c5){return function(){_0x3b1f70[_0xfe78('0x18')]=_0x3b1f70['queue'];return client['Request'](_0xfe78('0x19'),{'body':_0x3b1f70,'options':{'where':{'ContactId':_0x3b1f70[_0xfe78('0xb')],'ListId':_0x3b1f70[_0xfe78('0x1a')],'VoiceQueueId':_0x3b1f70[_0xfe78('0xc')],'CampaignId':_0x3b1f70[_0xfe78('0xd')],'active':_0x2429c5?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0xfe78('0x1b')]=function(_0x278c3e){return function(){return client[_0xfe78('0x4')](_0xfe78('0x1c'),{'options':{'where':{'VoiceQueueId':_0x278c3e['id']?_0x278c3e['id']||null:null}},'log':_0xfe78('0x1b')});};};exports[_0xfe78('0x1d')]=function(_0x2ae9a4){return function(){return client[_0xfe78('0x4')](_0xfe78('0x1e'),{'options':{'where':{'id':_0x2ae9a4},'include':[{'model':_0xfe78('0x5'),'as':_0xfe78('0x6')},{'model':_0xfe78('0x1f'),'as':_0xfe78('0x20'),'attributes':['id',_0xfe78('0x21')]},{'model':_0xfe78('0x22'),'as':'Queue','attributes':['id','name']}],'raw':!![]},'log':_0xfe78('0x23')});};};exports[_0xfe78('0x24')]=function(_0x28add3,_0x3c7d2d,_0x42d74c){return function(){return client['Request'](_0xfe78('0x7'),{'body':_0x28add3,'options':{'where':{'id':_0x3c7d2d},'limit':_0x42d74c},'log':_0xfe78('0x7')});};};exports[_0xfe78('0x25')]=function(_0x48b236,_0x2cfbb5){return function(){return client[_0xfe78('0x4')](_0xfe78('0x26'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x48b236,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xfe78('0x9'))},'UserId':{'$in':_0x2cfbb5}},'order':[[_0xfe78('0x11'),'DESC'],[_0xfe78('0x12'),'DESC'],['id',_0xfe78('0x13')]],'include':[{'model':_0xfe78('0x5'),'as':'Contact'},{'model':_0xfe78('0x1f'),'as':_0xfe78('0x20'),'attributes':['id','name',_0xfe78('0x27')]}],'group':_0xfe78('0x28'),'raw':!![]},'log':_0xfe78('0x14')});};};exports[_0xfe78('0x29')]=function(_0x4a84ba){return function(){return client['Request']('ResetActiveCalls',{'body':_0x4a84ba,'options':{},'log':'ResetActiveCalls'});};};
\ No newline at end of file
+var _0x1f52=['unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','../client','lodash','getContacts','Request','GetCmHopper','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','CampaignId','rescheduleContact','DestroyCmHopper','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','CmContact','GetContactDialerIvr','moveContactManagedDialer','campaign','VoiceQueueId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue'];(function(_0x532f48,_0x249950){var _0x58c8a6=function(_0x15c4e1){while(--_0x15c4e1){_0x532f48['push'](_0x532f48['shift']());}};_0x58c8a6(++_0x249950);}(_0x1f52,0x85));var _0x21f5=function(_0x64c483,_0x2c6ad8){_0x64c483=_0x64c483-0x0;var _0x2f78c6=_0x1f52[_0x64c483];return _0x2f78c6;};'use strict';var client=require(_0x21f5('0x0'));var moment=require('moment');var _=require(_0x21f5('0x1'));exports[_0x21f5('0x2')]=function(_0x36c361,_0x590e60){return function(){return client[_0x21f5('0x3')](_0x21f5('0x4'),{'options':{'where':{'VoiceQueueId':_0x36c361},'include':[{'model':'CmContact','as':_0x21f5('0x5')}],'limit':_0x590e60,'raw':![]},'log':_0x21f5('0x6')});};};exports[_0x21f5('0x7')]=function(_0x8e90fe,_0xe38cad,_0x11359e){return function(){return client[_0x21f5('0x3')](_0x21f5('0x8'),{'body':_0x8e90fe,'options':{'where':{'VoiceQueueId':_0xe38cad,'scheduledat':{'$lte':moment()[_0x21f5('0x9')](_0x21f5('0xa'))}},'limit':_0x11359e},'log':_0x21f5('0x8')});};};exports['rescheduleContact']=function(_0x3d6009){return function(){return client[_0x21f5('0x3')](_0x21f5('0x8'),{'body':_0x3d6009,'options':{'where':{'ContactId':_0x3d6009[_0x21f5('0xb')],'ListId':_0x3d6009[_0x21f5('0xc')],'VoiceQueueId':_0x3d6009['VoiceQueueId'],'CampaignId':_0x3d6009[_0x21f5('0xd')]}},'log':_0x21f5('0xe')});};};exports['destroyContact']=function(_0x344b1e,_0x1fdc04,_0x5f5cc6){return function(){return client[_0x21f5('0x3')](_0x21f5('0xf'),{'options':{'where':{'VoiceQueueId':_0x344b1e,'ListId':_0x1fdc04,'ContactId':_0x5f5cc6}},'log':_0x21f5('0xf')});};};exports['getContactDialer']=function(_0xc7378f,_0x3515f7,_0x547ef4,_0x3c56ab){return function(){return client[_0x21f5('0x3')](_0x21f5('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xc7378f,'active':![],'scheduledat':{'$lte':moment()[_0x21f5('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x3515f7}}]},'order':[[_0x21f5('0x11'),_0x21f5('0x12')],[_0x21f5('0x13'),_0x3c56ab],['id',_0x21f5('0x14')]],'raw':!![],'limit':_0x547ef4},'log':_0x21f5('0x10')});};};exports[_0x21f5('0x15')]=function(_0x334642,_0x1d2b35,_0x52da6f){return function(){return client[_0x21f5('0x3')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x334642,'active':![],'scheduledat':{'$lte':moment()[_0x21f5('0x9')](_0x21f5('0xa'))}},'include':[{'model':_0x21f5('0x16'),'as':_0x21f5('0x5')}],'order':[[_0x21f5('0x11'),'DESC'],[_0x21f5('0x13'),_0x52da6f],['id',_0x21f5('0x14')]],'raw':!![],'limit':_0x1d2b35},'log':_0x21f5('0x17')});};};exports[_0x21f5('0x18')]=function(_0x58305e,_0xeebb9){return function(){_0x58305e[_0x21f5('0x19')]=_0x58305e['queue'];return client['Request']('MoveContactManagedDialer',{'body':_0x58305e,'options':{'where':{'ContactId':_0x58305e['ContactId'],'ListId':_0x58305e[_0x21f5('0xc')],'VoiceQueueId':_0x58305e[_0x21f5('0x1a')],'CampaignId':_0x58305e['CampaignId'],'active':_0xeebb9?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x21f5('0x1b')]=function(_0x320bd6){return function(){return client['Request'](_0x21f5('0x1c'),{'options':{'where':{'VoiceQueueId':_0x320bd6['id']?_0x320bd6['id']||null:null}},'log':_0x21f5('0x1b')});};};exports[_0x21f5('0x1d')]=function(_0xd39629){return function(){return client[_0x21f5('0x3')](_0x21f5('0x1e'),{'options':{'where':{'id':_0xd39629},'include':[{'model':'CmContact','as':_0x21f5('0x5')},{'model':_0x21f5('0x1f'),'as':_0x21f5('0x20'),'attributes':['id',_0x21f5('0x21')]},{'model':_0x21f5('0x22'),'as':'Queue','attributes':['id','name']}],'raw':!![]},'log':_0x21f5('0x6')});};};exports[_0x21f5('0x23')]=function(_0x306dbf,_0x55589a,_0x517788){return function(){return client['Request'](_0x21f5('0x8'),{'body':_0x306dbf,'options':{'where':{'id':_0x55589a},'limit':_0x517788},'log':_0x21f5('0x8')});};};exports[_0x21f5('0x24')]=function(_0x45f476,_0x384d00){return function(){return client[_0x21f5('0x3')](_0x21f5('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x45f476,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x21f5('0xa'))},'UserId':{'$in':_0x384d00}},'order':[[_0x21f5('0x11'),_0x21f5('0x12')],[_0x21f5('0x13'),'DESC'],['id',_0x21f5('0x14')]],'include':[{'model':_0x21f5('0x16'),'as':_0x21f5('0x5')},{'model':_0x21f5('0x1f'),'as':_0x21f5('0x20'),'attributes':['id','name',_0x21f5('0x26')]}],'group':_0x21f5('0x27'),'raw':!![]},'log':'GetContactDialer'});};};exports[_0x21f5('0x28')]=function(_0xae6b6a){return function(){return client[_0x21f5('0x3')]('ResetActiveCalls',{'body':_0xae6b6a,'options':{},'log':_0x21f5('0x29')});};};
\ No newline at end of file
index 9cfbfb4..8e3a530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['GetCmHopperBlack','VoiceQueueId','Contact','checkIsBlackListIvr','CampaignId','../client','checkIsBlackList'];(function(_0x7cd8c8,_0x21a2d7){var _0x449d7c=function(_0x132790){while(--_0x132790){_0x7cd8c8['push'](_0x7cd8c8['shift']());}};_0x449d7c(++_0x21a2d7);}(_0x13f6,0x124));var _0x613f=function(_0x163f9f,_0x558415){_0x163f9f=_0x163f9f-0x0;var _0x34dabc=_0x13f6[_0x163f9f];return _0x34dabc;};'use strict';var client=require(_0x613f('0x0'));exports[_0x613f('0x1')]=function(_0x5f1b3e){return function(){return client['Request'](_0x613f('0x2'),{'options':{'where':{'VoiceQueueId':_0x5f1b3e[_0x613f('0x3')],'phone':_0x5f1b3e[_0x613f('0x4')]['phone']},'raw':![]},'log':_0x613f('0x2')});};};exports[_0x613f('0x5')]=function(_0x20af2f){return function(){return client['Request'](_0x613f('0x2'),{'options':{'where':{'CampaignId':_0x20af2f[_0x613f('0x6')],'phone':_0x20af2f['Contact']['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0xdb94=['Contact','phone','CampaignId','../client','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x131d27,_0x38d399){var _0x81e37c=function(_0x4d7e0a){while(--_0x4d7e0a){_0x131d27['push'](_0x131d27['shift']());}};_0x81e37c(++_0x38d399);}(_0xdb94,0xab));var _0x4db9=function(_0x24f249,_0xc79393){_0x24f249=_0x24f249-0x0;var _0x345e5c=_0xdb94[_0x24f249];return _0x345e5c;};'use strict';var client=require(_0x4db9('0x0'));exports[_0x4db9('0x1')]=function(_0xd9669b){return function(){return client[_0x4db9('0x2')](_0x4db9('0x3'),{'options':{'where':{'VoiceQueueId':_0xd9669b['VoiceQueueId'],'phone':_0xd9669b[_0x4db9('0x4')][_0x4db9('0x5')]},'raw':![]},'log':'GetCmHopperBlack'});};};exports['checkIsBlackListIvr']=function(_0x209f80){return function(){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x209f80[_0x4db9('0x6')],'phone':_0x209f80['Contact'][_0x4db9('0x5')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index 227caf8..d961287 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a2=['Request','CreateCmHopperFinal','../client','campaign','queue'];(function(_0x41f316,_0x2131ea){var _0x5ca110=function(_0x2d9bb7){while(--_0x2d9bb7){_0x41f316['push'](_0x41f316['shift']());}};_0x5ca110(++_0x2131ea);}(_0xa0a2,0xd4));var _0x2a0a=function(_0x2b1551,_0x1776fe){_0x2b1551=_0x2b1551-0x0;var _0x2fc2a1=_0xa0a2[_0x2b1551];return _0x2fc2a1;};'use strict';var client=require(_0x2a0a('0x0'));exports['createContact']=function(_0x5bd485){return function(){_0x5bd485[_0x2a0a('0x1')]=_0x5bd485[_0x2a0a('0x2')];return client[_0x2a0a('0x3')](_0x2a0a('0x4'),{'body':_0x5bd485,'log':_0x2a0a('0x4')});};};
\ No newline at end of file
+var _0xaa50=['CreateCmHopperFinal','../client','createContact','campaign','queue','Request'];(function(_0x2244ca,_0x243620){var _0xf6e01a=function(_0x5b9ab7){while(--_0x5b9ab7){_0x2244ca['push'](_0x2244ca['shift']());}};_0xf6e01a(++_0x243620);}(_0xaa50,0x145));var _0x0aa5=function(_0x54b8e9,_0x55a1e3){_0x54b8e9=_0x54b8e9-0x0;var _0x26fbbf=_0xaa50[_0x54b8e9];return _0x26fbbf;};'use strict';var client=require(_0x0aa5('0x0'));exports[_0x0aa5('0x1')]=function(_0x44daef){return function(){_0x44daef[_0x0aa5('0x2')]=_0x44daef[_0x0aa5('0x3')];return client[_0x0aa5('0x4')](_0x0aa5('0x5'),{'body':_0x44daef,'log':_0x0aa5('0x5')});};};
\ No newline at end of file
index 854e354..dcf4809 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74b6=['format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','GetCampaignHopperHistory','endOf','../client','createHistory','campaign','queue','Request','avgHandleTime','AvgHandleTime','subtract','minutes'];(function(_0x37756b,_0x24db76){var _0x46efec=function(_0x319807){while(--_0x319807){_0x37756b['push'](_0x37756b['shift']());}};_0x46efec(++_0x24db76);}(_0x74b6,0x195));var _0x674b=function(_0x2599b1,_0x1e4159){_0x2599b1=_0x2599b1-0x0;var _0x48ebbd=_0x74b6[_0x2599b1];return _0x48ebbd;};'use strict';var client=require(_0x674b('0x0'));var moment=require('moment');exports[_0x674b('0x1')]=function(_0x54e6e6){return function(){_0x54e6e6[_0x674b('0x2')]=_0x54e6e6[_0x674b('0x3')];return client[_0x674b('0x4')]('CreateCmHopperHistory',{'body':_0x54e6e6,'log':'CreateCmHopperHistory'});};};exports[_0x674b('0x5')]=function(_0x231e4a){return function(){return client[_0x674b('0x4')](_0x674b('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x674b('0x7')](_0x231e4a,_0x674b('0x8'))[_0x674b('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x674b('0x9')](_0x674b('0xa'))]}},'raw':![]},'log':_0x674b('0xb')});};};exports[_0x674b('0xc')]=function(_0x5c3faf){return function(){return client[_0x674b('0x4')](_0x674b('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x674b('0xe')](_0x674b('0xf'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf']('day')[_0x674b('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':'queue'},'raw':![]},'log':_0x674b('0xd')});};};exports['getCampaignHopperHistory']=function(_0x37483b){return function(){return client[_0x674b('0x4')](_0x674b('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x674b('0xe')](_0x674b('0xf'))[_0x674b('0x9')](_0x674b('0xa')),moment()[_0x674b('0x11')](_0x674b('0xf'))[_0x674b('0x9')](_0x674b('0xa'))]},'campaigntype':'ivr'},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0x2d1a=['startOf','day','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','ivr','GetCampaignHopperHistory','createHistory','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory'];(function(_0xd2f05b,_0x13f170){var _0x21a0f4=function(_0x3bf832){while(--_0x3bf832){_0xd2f05b['push'](_0xd2f05b['shift']());}};_0x21a0f4(++_0x13f170);}(_0x2d1a,0x1bc));var _0xa2d1=function(_0xca581e,_0x5975df){_0xca581e=_0xca581e-0x0;var _0x5ddecd=_0x2d1a[_0xca581e];return _0x5ddecd;};'use strict';var client=require('../client');var moment=require('moment');exports[_0xa2d1('0x0')]=function(_0x49947a){return function(){_0x49947a['campaign']=_0x49947a[_0xa2d1('0x1')];return client[_0xa2d1('0x2')](_0xa2d1('0x3'),{'body':_0x49947a,'log':_0xa2d1('0x3')});};};exports[_0xa2d1('0x4')]=function(_0x4b28b6){return function(){return client[_0xa2d1('0x2')](_0xa2d1('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0xa2d1('0x6')](_0x4b28b6,_0xa2d1('0x7'))[_0xa2d1('0x8')](_0xa2d1('0x9')),moment()[_0xa2d1('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0xa2d1('0xa')});};};exports[_0xa2d1('0xb')]=function(_0xb8d1){return function(){return client['Request']('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xa2d1('0xc')](_0xa2d1('0xd'))[_0xa2d1('0x8')](_0xa2d1('0x9')),moment()[_0xa2d1('0xe')](_0xa2d1('0xd'))[_0xa2d1('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xa2d1('0x1')},'raw':![]},'log':_0xa2d1('0xf')});};};exports[_0xa2d1('0x10')]=function(_0xc89ec8){return function(){return client['Request']('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xa2d1('0xc')](_0xa2d1('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xa2d1('0xe')]('day')['format'](_0xa2d1('0x9'))]},'campaigntype':_0xa2d1('0x11')},'raw':![]},'log':_0xa2d1('0x12')});};};
\ No newline at end of file
index b246a51..cd95b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['../client','getFaxAccounts','Request','GetFaxAccount','description','ecm','localstationid','minrate','maxrate','modem','gateway','tech','TrunkId','key','Trunk','name','callerid','active','getFaxAccount','NotifyFaxAccount'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x32f4,0x154));var _0x432f=function(_0x1c7377,_0x8a8698){_0x1c7377=_0x1c7377-0x0;var _0x5d03e3=_0x32f4[_0x1c7377];return _0x5d03e3;};'use strict';var client=require(_0x432f('0x0'));exports[_0x432f('0x1')]=function(){return function(){return client[_0x432f('0x2')](_0x432f('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x432f('0x4'),_0x432f('0x5'),'headerinfo',_0x432f('0x6'),_0x432f('0x7'),_0x432f('0x8'),_0x432f('0x9'),_0x432f('0xa'),'faxdetect','t38timeout',_0x432f('0xb'),_0x432f('0xc'),'ListId',_0x432f('0xd')],'include':[{'model':'Trunk','as':_0x432f('0xe'),'attributes':['id',_0x432f('0xf'),_0x432f('0x10'),_0x432f('0x11')]}]},'log':_0x432f('0x12')});};};exports['notify']=function(_0x23fd9d,_0x5758d7){return client[_0x432f('0x2')]('NotifyFaxAccount',{'account':{'id':_0x23fd9d},'body':_0x5758d7,'log':_0x432f('0x13')});};
\ No newline at end of file
+var _0x7d14=['TrunkId','key','Trunk','callerid','active','getFaxAccount','notify','Request','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','name','description','ecm','localstationid','minrate','maxrate','modem','gateway'];(function(_0x1d7c48,_0x3eae96){var _0x1f5eef=function(_0x3446f5){while(--_0x3446f5){_0x1d7c48['push'](_0x1d7c48['shift']());}};_0x1f5eef(++_0x3eae96);}(_0x7d14,0x6d));var _0x47d1=function(_0x3f54e1,_0x2aac41){_0x3f54e1=_0x3f54e1-0x0;var _0x5a0d29=_0x7d14[_0x3f54e1];return _0x5a0d29;};'use strict';var client=require(_0x47d1('0x0'));exports[_0x47d1('0x1')]=function(){return function(){return client['Request'](_0x47d1('0x2'),{'options':{'raw':![],'attributes':['id',_0x47d1('0x3'),_0x47d1('0x4'),_0x47d1('0x5'),'headerinfo',_0x47d1('0x6'),_0x47d1('0x7'),_0x47d1('0x8'),_0x47d1('0x9'),_0x47d1('0xa'),'faxdetect','t38timeout','tech',_0x47d1('0xb'),'ListId',_0x47d1('0xc')],'include':[{'model':_0x47d1('0xd'),'as':_0x47d1('0xd'),'attributes':['id',_0x47d1('0x3'),_0x47d1('0xe'),_0x47d1('0xf')]}]},'log':_0x47d1('0x10')});};};exports[_0x47d1('0x11')]=function(_0x37f6dd,_0x1f48e2){return client[_0x47d1('0x12')](_0x47d1('0x13'),{'account':{'id':_0x37f6dd},'body':_0x1f48e2,'log':_0x47d1('0x13')});};
\ No newline at end of file
index 8572565..9ddff64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd680=['UpdateFaxMessage','../client','update','Request'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0xd680,0x165));var _0x0d68=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd680[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x0d68('0x0'));exports[_0x0d68('0x1')]=function(_0x56a603,_0x37a016){return client[_0x0d68('0x2')](_0x0d68('0x3'),{'body':_0x37a016,'options':{'where':{'AttachmentId':_0x56a603}},'log':_0x0d68('0x3')});};
\ No newline at end of file
+var _0xf40a=['update','Request','UpdateFaxMessage'];(function(_0x5a3b40,_0x8e5346){var _0x121847=function(_0x51243d){while(--_0x51243d){_0x5a3b40['push'](_0x5a3b40['shift']());}};_0x121847(++_0x8e5346);}(_0xf40a,0x177));var _0xaf40=function(_0x7d20a1,_0x1eb4b0){_0x7d20a1=_0x7d20a1-0x0;var _0x4abebe=_0xf40a[_0x7d20a1];return _0x4abebe;};'use strict';var client=require('../client');exports[_0xaf40('0x0')]=function(_0xf9454d,_0x1b3a03){return client[_0xaf40('0x1')](_0xaf40('0x2'),{'body':_0x1b3a03,'options':{'where':{'AttachmentId':_0xf9454d}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index f725f7b..e3ff08b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ee=['../../client','Request','name','description','password','remoteUri','authType','serverUrl','Configurations','DeskField','Subjects','type','content','variableName','Variable','keyType','Fields','customField','Tag','GetDeskAccount'];(function(_0x17c270,_0x4b8b4e){var _0x4f0e14=function(_0x496787){while(--_0x496787){_0x17c270['push'](_0x17c270['shift']());}};_0x4f0e14(++_0x4b8b4e);}(_0xa6ee,0x1e0));var _0xea6e=function(_0x5b0cd8,_0xed3912){_0x5b0cd8=_0x5b0cd8-0x0;var _0x46923a=_0xa6ee[_0x5b0cd8];return _0x46923a;};'use strict';var client=require(_0xea6e('0x0'));exports['getDeskAccounts']=function(){return function(_0x5d296e){return client[_0xea6e('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0xea6e('0x2'),_0xea6e('0x3'),'username',_0xea6e('0x4'),_0xea6e('0x5'),_0xea6e('0x6'),'type',_0xea6e('0x7')],'include':[{'model':'DeskConfiguration','as':_0xea6e('0x8'),'attributes':['id','name'],'include':[{'model':_0xea6e('0x9'),'as':_0xea6e('0xa'),'attributes':['id',_0xea6e('0xb'),_0xea6e('0xc'),_0xea6e('0xd')],'include':[{'model':'Variable','as':_0xea6e('0xe'),'attributes':['id','name']}]},{'model':'DeskField','as':'Descriptions','attributes':['id',_0xea6e('0xb'),'content','key',_0xea6e('0xf'),'keyContent',_0xea6e('0xd')],'include':[{'model':_0xea6e('0xe'),'as':_0xea6e('0xe'),'attributes':['id',_0xea6e('0x2')]}]},{'model':_0xea6e('0x9'),'as':_0xea6e('0x10'),'attributes':['id','type',_0xea6e('0xc'),'idField','nameField',_0xea6e('0x11'),_0xea6e('0xd')],'include':[{'model':_0xea6e('0xe'),'as':_0xea6e('0xe'),'attributes':['id',_0xea6e('0x2')]}]},{'model':_0xea6e('0x12'),'as':'Tags','attributes':['id','name']}]}]},'log':_0xea6e('0x13')});};};
\ No newline at end of file
+var _0x9b8a=['username','remoteUri','authType','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','keyType','keyContent','Fields','idField','nameField','Tags','../../client','getDeskAccounts','GetDeskAccount','name','description'];(function(_0x582246,_0xa45179){var _0x2bcbcd=function(_0x116659){while(--_0x116659){_0x582246['push'](_0x582246['shift']());}};_0x2bcbcd(++_0xa45179);}(_0x9b8a,0x145));var _0xa9b8=function(_0xdfca8d,_0x377316){_0xdfca8d=_0xdfca8d-0x0;var _0x1cbe00=_0x9b8a[_0xdfca8d];return _0x1cbe00;};'use strict';var client=require(_0xa9b8('0x0'));exports[_0xa9b8('0x1')]=function(){return function(_0x165744){return client['Request'](_0xa9b8('0x2'),{'options':{'raw':![],'attributes':['id',_0xa9b8('0x3'),_0xa9b8('0x4'),_0xa9b8('0x5'),'password',_0xa9b8('0x6'),_0xa9b8('0x7'),'type',_0xa9b8('0x8')],'include':[{'model':_0xa9b8('0x9'),'as':_0xa9b8('0xa'),'attributes':['id',_0xa9b8('0x3')],'include':[{'model':_0xa9b8('0xb'),'as':_0xa9b8('0xc'),'attributes':['id','type',_0xa9b8('0xd'),_0xa9b8('0xe')],'include':[{'model':_0xa9b8('0xf'),'as':_0xa9b8('0xf'),'attributes':['id',_0xa9b8('0x3')]}]},{'model':'DeskField','as':'Descriptions','attributes':['id','type',_0xa9b8('0xd'),'key',_0xa9b8('0x10'),_0xa9b8('0x11'),'variableName'],'include':[{'model':'Variable','as':_0xa9b8('0xf'),'attributes':['id',_0xa9b8('0x3')]}]},{'model':_0xa9b8('0xb'),'as':_0xa9b8('0x12'),'attributes':['id','type','content',_0xa9b8('0x13'),_0xa9b8('0x14'),'customField',_0xa9b8('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa9b8('0x3')]}]},{'model':'Tag','as':_0xa9b8('0x15'),'attributes':['id',_0xa9b8('0x3')]}]}]},'log':_0xa9b8('0x2')});};};
\ No newline at end of file
index 6663167..16f4b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x912f=['username','clientId','clientSecret','serverUrl','Dynamics365Configuration','ticketType','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name'];(function(_0x26d26f,_0x302cce){var _0x5c8c0e=function(_0x519b9d){while(--_0x519b9d){_0x26d26f['push'](_0x26d26f['shift']());}};_0x5c8c0e(++_0x302cce);}(_0x912f,0xc3));var _0xf912=function(_0x503285,_0x3653ad){_0x503285=_0x503285-0x0;var _0x217639=_0x912f[_0x503285];return _0x217639;};'use strict';var client=require(_0xf912('0x0'));exports[_0xf912('0x1')]=function(){return function(_0x83fbc3){return client[_0xf912('0x2')](_0xf912('0x3'),{'options':{'raw':![],'attributes':['id',_0xf912('0x4'),_0xf912('0x5'),'password','remoteUri','tenantId',_0xf912('0x6'),_0xf912('0x7'),_0xf912('0x8'),'description'],'include':[{'model':_0xf912('0x9'),'as':'Configurations','attributes':['id',_0xf912('0x4'),_0xf912('0xa')],'include':[{'model':_0xf912('0xb'),'as':_0xf912('0xc'),'attributes':['id',_0xf912('0xd'),_0xf912('0xe'),_0xf912('0xf')],'include':[{'model':_0xf912('0x10'),'as':_0xf912('0x10'),'attributes':['id',_0xf912('0x4')]}]},{'model':_0xf912('0xb'),'as':_0xf912('0x11'),'attributes':['id',_0xf912('0xd'),_0xf912('0xe'),_0xf912('0x12'),_0xf912('0x13'),_0xf912('0x14'),_0xf912('0xf')],'include':[{'model':_0xf912('0x10'),'as':_0xf912('0x10'),'attributes':['id',_0xf912('0x4')]}]},{'model':'Dynamics365Field','as':_0xf912('0x15'),'attributes':['id','type',_0xf912('0xe'),_0xf912('0x16'),_0xf912('0x17'),_0xf912('0x18'),_0xf912('0xf')],'include':[{'model':_0xf912('0x10'),'as':_0xf912('0x10'),'attributes':['id',_0xf912('0x4')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0x6423=['name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Dynamics365Configuration','moduleCreate','Dynamics365Field','Subjects','type','content','Variable','key','keyType','keyContent','variableName','Fields','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account'];(function(_0x3466b8,_0xb54e11){var _0x13fb5d=function(_0x4d8f33){while(--_0x4d8f33){_0x3466b8['push'](_0x3466b8['shift']());}};_0x13fb5d(++_0xb54e11);}(_0x6423,0x140));var _0x3642=function(_0x248af8,_0x44ef4f){_0x248af8=_0x248af8-0x0;var _0x2ea068=_0x6423[_0x248af8];return _0x2ea068;};'use strict';var client=require(_0x3642('0x0'));exports[_0x3642('0x1')]=function(){return function(_0x14748e){return client[_0x3642('0x2')](_0x3642('0x3'),{'options':{'raw':![],'attributes':['id',_0x3642('0x4'),_0x3642('0x5'),_0x3642('0x6'),_0x3642('0x7'),_0x3642('0x8'),_0x3642('0x9'),_0x3642('0xa'),_0x3642('0xb'),'description'],'include':[{'model':_0x3642('0xc'),'as':'Configurations','attributes':['id',_0x3642('0x4'),'ticketType',_0x3642('0xd')],'include':[{'model':_0x3642('0xe'),'as':_0x3642('0xf'),'attributes':['id',_0x3642('0x10'),_0x3642('0x11'),'variableName'],'include':[{'model':_0x3642('0x12'),'as':_0x3642('0x12'),'attributes':['id',_0x3642('0x4')]}]},{'model':'Dynamics365Field','as':'Descriptions','attributes':['id','type',_0x3642('0x11'),_0x3642('0x13'),_0x3642('0x14'),_0x3642('0x15'),_0x3642('0x16')],'include':[{'model':_0x3642('0x12'),'as':'Variable','attributes':['id',_0x3642('0x4')]}]},{'model':_0x3642('0xe'),'as':_0x3642('0x17'),'attributes':['id',_0x3642('0x10'),_0x3642('0x11'),_0x3642('0x18'),_0x3642('0x19'),_0x3642('0x1a'),'variableName'],'include':[{'model':_0x3642('0x12'),'as':_0x3642('0x12'),'attributes':['id','name']}]}]}]},'log':_0x3642('0x3')});};};
\ No newline at end of file
index eb9bd83..3ca59bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98b7=['Configurations','Tag','FreshdeskField','Subjects','type','content','variableName','Variable','key','idField','nameField','customField','name','../../client','getFreshdeskAccounts','Request','apiKey','remoteUri','serverUrl','FreshdeskConfiguration'];(function(_0x3b19ea,_0x518b6b){var _0x40ece9=function(_0x3a3386){while(--_0x3a3386){_0x3b19ea['push'](_0x3b19ea['shift']());}};_0x40ece9(++_0x518b6b);}(_0x98b7,0xc1));var _0x798b=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x98b7[_0x2c91e9];return _0x13f0ff;};'use strict';var client=require(_0x798b('0x0'));exports[_0x798b('0x1')]=function(){return function(_0x622719){return client[_0x798b('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id','name','username',_0x798b('0x3'),_0x798b('0x4'),_0x798b('0x5')],'include':[{'model':_0x798b('0x6'),'as':_0x798b('0x7'),'attributes':['id','name'],'include':[{'model':_0x798b('0x8'),'attributes':['id','name']},{'model':_0x798b('0x9'),'as':_0x798b('0xa'),'attributes':['id',_0x798b('0xb'),_0x798b('0xc'),_0x798b('0xd')],'include':[{'model':'Variable','as':_0x798b('0xe'),'attributes':['id','name']}]},{'model':_0x798b('0x9'),'as':'Descriptions','attributes':['id',_0x798b('0xb'),_0x798b('0xc'),_0x798b('0xf'),'keyType','keyContent',_0x798b('0xd')],'include':[{'model':_0x798b('0xe'),'as':_0x798b('0xe'),'attributes':['id','name']}]},{'model':_0x798b('0x9'),'as':'Fields','attributes':['id',_0x798b('0xb'),'content',_0x798b('0x10'),_0x798b('0x11'),_0x798b('0x12'),_0x798b('0xd')],'include':[{'model':_0x798b('0xe'),'as':_0x798b('0xe'),'attributes':['id',_0x798b('0x13')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0x866a=['Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','customField','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','apiKey','remoteUri','serverUrl','Configurations','Tag','FreshdeskField'];(function(_0x32ad86,_0x16f53b){var _0x2abba1=function(_0x59af5b){while(--_0x59af5b){_0x32ad86['push'](_0x32ad86['shift']());}};_0x2abba1(++_0x16f53b);}(_0x866a,0x156));var _0xa866=function(_0x5bac10,_0x436643){_0x5bac10=_0x5bac10-0x0;var _0x362c49=_0x866a[_0x5bac10];return _0x362c49;};'use strict';var client=require('../../client');exports[_0xa866('0x0')]=function(){return function(_0x477469){return client[_0xa866('0x1')](_0xa866('0x2'),{'options':{'raw':![],'attributes':['id',_0xa866('0x3'),'username',_0xa866('0x4'),_0xa866('0x5'),_0xa866('0x6')],'include':[{'model':'FreshdeskConfiguration','as':_0xa866('0x7'),'attributes':['id',_0xa866('0x3')],'include':[{'model':_0xa866('0x8'),'attributes':['id',_0xa866('0x3')]},{'model':_0xa866('0x9'),'as':_0xa866('0xa'),'attributes':['id',_0xa866('0xb'),_0xa866('0xc'),_0xa866('0xd')],'include':[{'model':_0xa866('0xe'),'as':'Variable','attributes':['id',_0xa866('0x3')]}]},{'model':_0xa866('0x9'),'as':_0xa866('0xf'),'attributes':['id','type',_0xa866('0xc'),_0xa866('0x10'),_0xa866('0x11'),_0xa866('0x12'),_0xa866('0xd')],'include':[{'model':_0xa866('0xe'),'as':'Variable','attributes':['id',_0xa866('0x3')]}]},{'model':_0xa866('0x9'),'as':_0xa866('0x13'),'attributes':['id',_0xa866('0xb'),'content',_0xa866('0x14'),'nameField',_0xa866('0x15'),'variableName'],'include':[{'model':_0xa866('0xe'),'as':_0xa866('0xe'),'attributes':['id',_0xa866('0x3')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 3eeda39..86e3ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4873=['getFreshsalesAccounts','GetFreshsalesAccount','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','name','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','key','../../client'];(function(_0x6381dd,_0x429ce4){var _0x6d0cbc=function(_0x397f8c){while(--_0x397f8c){_0x6381dd['push'](_0x6381dd['shift']());}};_0x6d0cbc(++_0x429ce4);}(_0x4873,0x1df));var _0x3487=function(_0x43547e,_0x309b53){_0x43547e=_0x43547e-0x0;var _0x41b5d1=_0x4873[_0x43547e];return _0x41b5d1;};'use strict';var client=require(_0x3487('0x0'));exports[_0x3487('0x1')]=function(){return function(_0x332e18){return client['Request'](_0x3487('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0x3487('0x3'),_0x3487('0x4'),_0x3487('0x5')],'include':[{'model':_0x3487('0x6'),'as':_0x3487('0x7'),'attributes':['id',_0x3487('0x8')],'include':[{'model':_0x3487('0x9'),'as':_0x3487('0xa'),'attributes':['id','type',_0x3487('0xb'),_0x3487('0xc')],'include':[{'model':_0x3487('0xd'),'as':_0x3487('0xd'),'attributes':['id',_0x3487('0x8')]}]},{'model':'FreshsalesField','as':_0x3487('0xe'),'attributes':['id','type',_0x3487('0xb'),_0x3487('0xf'),'keyType','keyContent',_0x3487('0xc')],'include':[{'model':_0x3487('0xd'),'as':'Variable','attributes':['id',_0x3487('0x8')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0xb091=['Subjects','content','variableName','Variable','Descriptions','type','key','keyType','GetFreshsalesccount','getFreshsalesAccounts','Request','GetFreshsalesAccount','username','serverUrl','FreshsalesConfiguration','name','FreshsalesField'];(function(_0x430df7,_0x2b2bf2){var _0x5ea74b=function(_0x395fcb){while(--_0x395fcb){_0x430df7['push'](_0x430df7['shift']());}};_0x5ea74b(++_0x2b2bf2);}(_0xb091,0x16e));var _0x1b09=function(_0x2f1073,_0xcfd0ea){_0x2f1073=_0x2f1073-0x0;var _0x3f1984=_0xb091[_0x2f1073];return _0x3f1984;};'use strict';var client=require('../../client');exports[_0x1b09('0x0')]=function(){return function(_0x12cc7c){return client[_0x1b09('0x1')](_0x1b09('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x1b09('0x3'),'apiKey','remoteUri',_0x1b09('0x4')],'include':[{'model':_0x1b09('0x5'),'as':'Configurations','attributes':['id',_0x1b09('0x6')],'include':[{'model':_0x1b09('0x7'),'as':_0x1b09('0x8'),'attributes':['id','type',_0x1b09('0x9'),_0x1b09('0xa')],'include':[{'model':_0x1b09('0xb'),'as':_0x1b09('0xb'),'attributes':['id',_0x1b09('0x6')]}]},{'model':_0x1b09('0x7'),'as':_0x1b09('0xc'),'attributes':['id',_0x1b09('0xd'),_0x1b09('0x9'),_0x1b09('0xe'),_0x1b09('0xf'),'keyContent',_0x1b09('0xa')],'include':[{'model':_0x1b09('0xb'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x1b09('0x10')});};};
\ No newline at end of file
index da67b12..7ff143b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc19f=['clientId','clientSecret','securityToken','serverUrl','name','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','Variable','SalesforceField','Fields','GetSalesforceAccount','Request','username','password','remoteUri'];(function(_0x2912b8,_0x45dc16){var _0xd538d6=function(_0xb3099c){while(--_0xb3099c){_0x2912b8['push'](_0x2912b8['shift']());}};_0xd538d6(++_0x45dc16);}(_0xc19f,0x164));var _0xfc19=function(_0xb7e116,_0x3125ba){_0xb7e116=_0xb7e116-0x0;var _0x41e33f=_0xc19f[_0xb7e116];return _0x41e33f;};'use strict';var client=require('../../client');exports['getSalesforceAccounts']=function(){return function(_0x242816){return client[_0xfc19('0x0')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id','name',_0xfc19('0x1'),_0xfc19('0x2'),_0xfc19('0x3'),_0xfc19('0x4'),_0xfc19('0x5'),_0xfc19('0x6'),_0xfc19('0x7'),'type'],'include':[{'model':'SalesforceConfiguration','as':'Configurations','attributes':['id',_0xfc19('0x8'),_0xfc19('0x9'),_0xfc19('0xa'),_0xfc19('0xb'),_0xfc19('0xc'),_0xfc19('0xd'),_0xfc19('0xe'),_0xfc19('0xf')],'include':[{'model':'SalesforceField','as':'Subjects','include':[{'model':_0xfc19('0x10'),'as':_0xfc19('0x10'),'attributes':['id','name']}]},{'model':_0xfc19('0x11'),'as':'Descriptions','include':[{'model':_0xfc19('0x10'),'as':_0xfc19('0x10'),'attributes':['id','name']}]},{'model':_0xfc19('0x11'),'as':_0xfc19('0x12'),'include':[{'model':'Variable','as':_0xfc19('0x10'),'attributes':['id',_0xfc19('0x8')]}]}]}]},'log':_0xfc19('0x13')});};};
\ No newline at end of file
+var _0xd276=['moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','GetSalesforceAccount','../../client','getSalesforceAccounts','Request','name','username','password','remoteUri','clientSecret','securityToken','type','SalesforceConfiguration','moduleSearch'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0xd276,0xfc));var _0x6d27=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xd276[_0x220dbb];return _0x2b77de;};'use strict';var client=require(_0x6d27('0x0'));exports[_0x6d27('0x1')]=function(){return function(_0x365735){return client[_0x6d27('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x6d27('0x3'),_0x6d27('0x4'),_0x6d27('0x5'),_0x6d27('0x6'),'clientId',_0x6d27('0x7'),_0x6d27('0x8'),'serverUrl',_0x6d27('0x9')],'include':[{'model':_0x6d27('0xa'),'as':'Configurations','attributes':['id','name',_0x6d27('0xb'),_0x6d27('0xc'),_0x6d27('0xd'),_0x6d27('0xe'),_0x6d27('0xf'),_0x6d27('0x10'),_0x6d27('0x11')],'include':[{'model':_0x6d27('0x12'),'as':_0x6d27('0x13'),'include':[{'model':_0x6d27('0x14'),'as':'Variable','attributes':['id',_0x6d27('0x3')]}]},{'model':'SalesforceField','as':_0x6d27('0x15'),'include':[{'model':_0x6d27('0x14'),'as':_0x6d27('0x14'),'attributes':['id',_0x6d27('0x3')]}]},{'model':_0x6d27('0x12'),'as':_0x6d27('0x16'),'include':[{'model':_0x6d27('0x14'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x6d27('0x17')});};};
\ No newline at end of file
index 1b0d6ba..ee7660d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['type','variableName','Variable','keyType','Fields','content','nameField','GetServicenowkAccount','../../client','Request','name','description','username','password','email','serverUrl','ServicenowConfiguration','ServicenowField'];(function(_0x3f31b7,_0x3d6443){var _0x56a372=function(_0x148066){while(--_0x148066){_0x3f31b7['push'](_0x3f31b7['shift']());}};_0x56a372(++_0x3d6443);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xee2f('0x0'));exports['getServicenowAccounts']=function(){return function(_0x521787){return client[_0xee2f('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id',_0xee2f('0x2'),_0xee2f('0x3'),_0xee2f('0x4'),_0xee2f('0x5'),_0xee2f('0x6'),'remoteUri',_0xee2f('0x7')],'include':[{'model':_0xee2f('0x8'),'as':'Configurations','attributes':['id',_0xee2f('0x2')],'include':[{'model':_0xee2f('0x9'),'as':'Subjects','attributes':['id',_0xee2f('0xa'),'content',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':'Descriptions','attributes':['id','type','content','key',_0xee2f('0xd'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0xee2f('0xc'),'attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':_0xee2f('0xe'),'attributes':['id',_0xee2f('0xa'),_0xee2f('0xf'),'idField',_0xee2f('0x10'),'customField',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]}]}]},'log':_0xee2f('0x11')});};};
\ No newline at end of file
+var _0x814b=['variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','type','content'];(function(_0x32ce2f,_0x28273e){var _0x3a5b31=function(_0x4fe3ed){while(--_0x4fe3ed){_0x32ce2f['push'](_0x32ce2f['shift']());}};_0x3a5b31(++_0x28273e);}(_0x814b,0x1a2));var _0xb814=function(_0x34ed48,_0x2cc995){_0x34ed48=_0x34ed48-0x0;var _0x37da5c=_0x814b[_0x34ed48];return _0x37da5c;};'use strict';var client=require(_0xb814('0x0'));exports[_0xb814('0x1')]=function(){return function(_0x434f30){return client[_0xb814('0x2')](_0xb814('0x3'),{'options':{'raw':![],'attributes':['id',_0xb814('0x4'),'description',_0xb814('0x5'),_0xb814('0x6'),_0xb814('0x7'),_0xb814('0x8'),_0xb814('0x9')],'include':[{'model':_0xb814('0xa'),'as':'Configurations','attributes':['id',_0xb814('0x4')],'include':[{'model':_0xb814('0xb'),'as':'Subjects','attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0xe')],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]},{'model':_0xb814('0xb'),'as':_0xb814('0x10'),'attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0x11'),'keyType',_0xb814('0x12'),'variableName'],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]},{'model':_0xb814('0xb'),'as':_0xb814('0x13'),'attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0x14'),_0xb814('0x15'),_0xb814('0x16'),_0xb814('0xe')],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]}]}]},'log':_0xb814('0x17')});};};
\ No newline at end of file
index d57a3e5..815a125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['serverUrl','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','name','Fields','idField','nameField','Request','GetSugarcrmAccount','password','remoteUri'];(function(_0x485bec,_0x283261){var _0x55554a=function(_0x254fcf){while(--_0x254fcf){_0x485bec['push'](_0x485bec['shift']());}};_0x55554a(++_0x283261);}(_0x1a85,0x178));var _0x51a8=function(_0x1499c4,_0x57c5c3){_0x1499c4=_0x1499c4-0x0;var _0x3cf45a=_0x1a85[_0x1499c4];return _0x3cf45a;};'use strict';var client=require('../../client');exports['getSugarcrmAccounts']=function(){return function(_0x305f18){return client[_0x51a8('0x0')](_0x51a8('0x1'),{'options':{'raw':![],'attributes':['id','name','username',_0x51a8('0x2'),_0x51a8('0x3'),_0x51a8('0x4')],'include':[{'model':'SugarcrmConfiguration','as':_0x51a8('0x5'),'attributes':['id','name'],'include':[{'model':_0x51a8('0x6'),'as':'Subjects','attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),'variableName'],'include':[{'model':_0x51a8('0x9'),'as':'Variable','attributes':['id','name']}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0xa'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0xb'),_0x51a8('0xc'),_0x51a8('0xd'),_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id',_0x51a8('0xf')]}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0x10'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0x11'),_0x51a8('0x12'),'customField',_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id','name']}]}]}]},'log':_0x51a8('0x1')});};};
\ No newline at end of file
+var _0x2ef3=['SugarcrmField','Descriptions','keyType','keyContent','Fields','idField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','password','remoteUri','SugarcrmConfiguration','Configurations','Subjects','type','content','variableName','Variable'];(function(_0x4c0512,_0xb7bc9d){var _0x5569b0=function(_0x1aa7fb){while(--_0x1aa7fb){_0x4c0512['push'](_0x4c0512['shift']());}};_0x5569b0(++_0xb7bc9d);}(_0x2ef3,0xba));var _0x32ef=function(_0x53f88f,_0x13129b){_0x53f88f=_0x53f88f-0x0;var _0x463be3=_0x2ef3[_0x53f88f];return _0x463be3;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(_0x47513a){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),'username',_0x32ef('0x5'),_0x32ef('0x6'),'serverUrl'],'include':[{'model':_0x32ef('0x7'),'as':_0x32ef('0x8'),'attributes':['id','name'],'include':[{'model':'SugarcrmField','as':_0x32ef('0x9'),'attributes':['id',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc')],'include':[{'model':_0x32ef('0xd'),'as':_0x32ef('0xd'),'attributes':['id',_0x32ef('0x4')]}]},{'model':_0x32ef('0xe'),'as':_0x32ef('0xf'),'attributes':['id',_0x32ef('0xa'),'content','key',_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0xc')],'include':[{'model':_0x32ef('0xd'),'as':'Variable','attributes':['id',_0x32ef('0x4')]}]},{'model':'SugarcrmField','as':_0x32ef('0x12'),'attributes':['id','type',_0x32ef('0xb'),_0x32ef('0x13'),'nameField','customField',_0x32ef('0xc')],'include':[{'model':'Variable','as':_0x32ef('0xd'),'attributes':['id',_0x32ef('0x4')]}]}]}]},'log':_0x32ef('0x3')});};};
\ No newline at end of file
index efb93c4..4e142eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82df=['Variable','Descriptions','key','Fields','idField','nameField','customField','Request','GetVtigerAccount','name','description','serverUrl','Configurations','VtigerField','Subjects','type','content','variableName'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x82df,0x139));var _0xf82d=function(_0x7f1644,_0x268f86){_0x7f1644=_0x7f1644-0x0;var _0x5518b0=_0x82df[_0x7f1644];return _0x5518b0;};'use strict';var client=require('../../client');exports['getVtigerAccounts']=function(){return function(_0x552450){return client[_0xf82d('0x0')](_0xf82d('0x1'),{'options':{'raw':![],'attributes':['id',_0xf82d('0x2'),_0xf82d('0x3'),'username','accessKey','remoteUri',_0xf82d('0x4')],'include':[{'model':'VtigerConfiguration','as':_0xf82d('0x5'),'attributes':['id',_0xf82d('0x2')],'include':[{'model':_0xf82d('0x6'),'as':_0xf82d('0x7'),'attributes':['id',_0xf82d('0x8'),_0xf82d('0x9'),_0xf82d('0xa')],'include':[{'model':_0xf82d('0xb'),'as':_0xf82d('0xb'),'attributes':['id','name']}]},{'model':_0xf82d('0x6'),'as':_0xf82d('0xc'),'attributes':['id',_0xf82d('0x8'),_0xf82d('0x9'),_0xf82d('0xd'),'keyType','keyContent',_0xf82d('0xa')],'include':[{'model':_0xf82d('0xb'),'as':_0xf82d('0xb'),'attributes':['id','name']}]},{'model':_0xf82d('0x6'),'as':_0xf82d('0xe'),'attributes':['id',_0xf82d('0x8'),_0xf82d('0x9'),_0xf82d('0xf'),_0xf82d('0x10'),_0xf82d('0x11'),_0xf82d('0xa')],'include':[{'model':_0xf82d('0xb'),'as':_0xf82d('0xb'),'attributes':['id',_0xf82d('0x2')]}]}]}]},'log':_0xf82d('0x1')});};};
\ No newline at end of file
+var _0xf755=['remoteUri','serverUrl','VtigerConfiguration','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','key','keyContent','Fields','nameField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','accessKey'];(function(_0x2a7b8e,_0x50ffce){var _0x29b5c8=function(_0x131fe0){while(--_0x131fe0){_0x2a7b8e['push'](_0x2a7b8e['shift']());}};_0x29b5c8(++_0x50ffce);}(_0xf755,0x1f2));var _0x5f75=function(_0x5bd542,_0xfd3e3e){_0x5bd542=_0x5bd542-0x0;var _0x2384d6=_0xf755[_0x5bd542];return _0x2384d6;};'use strict';var client=require(_0x5f75('0x0'));exports[_0x5f75('0x1')]=function(){return function(_0x5597c7){return client[_0x5f75('0x2')](_0x5f75('0x3'),{'options':{'raw':![],'attributes':['id',_0x5f75('0x4'),_0x5f75('0x5'),_0x5f75('0x6'),_0x5f75('0x7'),_0x5f75('0x8'),_0x5f75('0x9')],'include':[{'model':_0x5f75('0xa'),'as':'Configurations','attributes':['id',_0x5f75('0x4')],'include':[{'model':_0x5f75('0xb'),'as':_0x5f75('0xc'),'attributes':['id',_0x5f75('0xd'),_0x5f75('0xe'),_0x5f75('0xf')],'include':[{'model':_0x5f75('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0x5f75('0xb'),'as':_0x5f75('0x11'),'attributes':['id',_0x5f75('0xd'),_0x5f75('0xe'),_0x5f75('0x12'),'keyType',_0x5f75('0x13'),_0x5f75('0xf')],'include':[{'model':_0x5f75('0x10'),'as':_0x5f75('0x10'),'attributes':['id',_0x5f75('0x4')]}]},{'model':_0x5f75('0xb'),'as':_0x5f75('0x14'),'attributes':['id',_0x5f75('0xd'),'content','idField',_0x5f75('0x15'),'customField',_0x5f75('0xf')],'include':[{'model':_0x5f75('0x10'),'as':_0x5f75('0x10'),'attributes':['id',_0x5f75('0x4')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index 046eb05..a089b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ef=['remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','name','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','customField','getZendeskAccounts','Request','GetZendeskAccount','password','token'];(function(_0x294624,_0x35b510){var _0xac5264=function(_0x1aba52){while(--_0x1aba52){_0x294624['push'](_0x294624['shift']());}};_0xac5264(++_0x35b510);}(_0x27ef,0x1b3));var _0xf27e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x27ef[_0x2b4411];return _0x8e41ef;};'use strict';var client=require('../../client');exports[_0xf27e('0x0')]=function(){return function(_0x49a209){return client[_0xf27e('0x1')](_0xf27e('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0xf27e('0x3'),_0xf27e('0x4'),_0xf27e('0x5'),_0xf27e('0x6'),_0xf27e('0x7'),_0xf27e('0x8')],'include':[{'model':_0xf27e('0x9'),'as':_0xf27e('0xa'),'attributes':['id',_0xf27e('0xb')],'include':[{'model':'Tag','attributes':['id',_0xf27e('0xb')]},{'model':_0xf27e('0xc'),'as':_0xf27e('0xd'),'attributes':['id',_0xf27e('0x8'),_0xf27e('0xe'),_0xf27e('0xf')],'include':[{'model':_0xf27e('0x10'),'as':_0xf27e('0x10'),'attributes':['id',_0xf27e('0xb')]}]},{'model':_0xf27e('0xc'),'as':_0xf27e('0x11'),'attributes':['id',_0xf27e('0x8'),_0xf27e('0xe'),_0xf27e('0x12'),_0xf27e('0x13'),_0xf27e('0x14'),_0xf27e('0xf')],'include':[{'model':_0xf27e('0x10'),'as':_0xf27e('0x10'),'attributes':['id',_0xf27e('0xb')]}]},{'model':_0xf27e('0xc'),'as':'Fields','attributes':['id',_0xf27e('0x8'),_0xf27e('0xe'),'idField','nameField',_0xf27e('0x15'),_0xf27e('0xf')],'include':[{'model':'Variable','as':_0xf27e('0x10'),'attributes':['id','name']}]}]}]},'log':_0xf27e('0x2')});};};
\ No newline at end of file
+var _0xe7ef=['Fields','idField','nameField','../../client','Request','GetZendeskAccount','name','username','password','token','remoteUri','authType','type','Configurations','ZendeskField','Subjects','Variable','Descriptions','content','key','keyType','keyContent','variableName'];(function(_0x580169,_0xc75381){var _0x32ec3f=function(_0x29c8b6){while(--_0x29c8b6){_0x580169['push'](_0x580169['shift']());}};_0x32ec3f(++_0xc75381);}(_0xe7ef,0x12e));var _0xfe7e=function(_0x5d1f44,_0x56e362){_0x5d1f44=_0x5d1f44-0x0;var _0x719899=_0xe7ef[_0x5d1f44];return _0x719899;};'use strict';var client=require(_0xfe7e('0x0'));exports['getZendeskAccounts']=function(){return function(_0x3a8318){return client[_0xfe7e('0x1')](_0xfe7e('0x2'),{'options':{'raw':![],'attributes':['id',_0xfe7e('0x3'),_0xfe7e('0x4'),_0xfe7e('0x5'),_0xfe7e('0x6'),_0xfe7e('0x7'),_0xfe7e('0x8'),'serverUrl',_0xfe7e('0x9')],'include':[{'model':'ZendeskConfiguration','as':_0xfe7e('0xa'),'attributes':['id',_0xfe7e('0x3')],'include':[{'model':'Tag','attributes':['id',_0xfe7e('0x3')]},{'model':_0xfe7e('0xb'),'as':_0xfe7e('0xc'),'attributes':['id',_0xfe7e('0x9'),'content','variableName'],'include':[{'model':_0xfe7e('0xd'),'as':_0xfe7e('0xd'),'attributes':['id',_0xfe7e('0x3')]}]},{'model':_0xfe7e('0xb'),'as':_0xfe7e('0xe'),'attributes':['id',_0xfe7e('0x9'),_0xfe7e('0xf'),_0xfe7e('0x10'),_0xfe7e('0x11'),_0xfe7e('0x12'),_0xfe7e('0x13')],'include':[{'model':_0xfe7e('0xd'),'as':_0xfe7e('0xd'),'attributes':['id',_0xfe7e('0x3')]}]},{'model':'ZendeskField','as':_0xfe7e('0x14'),'attributes':['id',_0xfe7e('0x9'),'content',_0xfe7e('0x15'),_0xfe7e('0x16'),'customField','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xfe7e('0x3')]}]}]}]},'log':_0xfe7e('0x2')});};};
\ No newline at end of file
index 55fb042..c123d88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1119=['variableName','Variable','Descriptions','type','key','keyType','keyContent','Fields','content','nameField','../../client','getZohoAccounts','GetZohoAccount','name','description','host','zone','clientId','code','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','ZohoField','Subjects'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1119,0x136));var _0x9111=function(_0x15f590,_0x42b288){_0x15f590=_0x15f590-0x0;var _0x53671c=_0x1119[_0x15f590];return _0x53671c;};'use strict';var client=require(_0x9111('0x0'));exports[_0x9111('0x1')]=function(){return function(_0x274d11){return client['Request'](_0x9111('0x2'),{'options':{'raw':![],'attributes':['id',_0x9111('0x3'),_0x9111('0x4'),_0x9111('0x5'),_0x9111('0x6'),_0x9111('0x7'),'clientSecret','serverUrl',_0x9111('0x8'),'refreshToken'],'include':[{'model':_0x9111('0x9'),'as':_0x9111('0xa'),'attributes':['id',_0x9111('0x3'),_0x9111('0xb'),_0x9111('0xc'),'description'],'include':[{'model':_0x9111('0xd'),'as':_0x9111('0xe'),'attributes':['id','type','content',_0x9111('0xf')],'include':[{'model':_0x9111('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':'ZohoField','as':_0x9111('0x11'),'attributes':['id',_0x9111('0x12'),'content',_0x9111('0x13'),_0x9111('0x14'),_0x9111('0x15'),_0x9111('0xf')],'include':[{'model':_0x9111('0x10'),'as':_0x9111('0x10'),'attributes':['id',_0x9111('0x3')]}]},{'model':_0x9111('0xd'),'as':_0x9111('0x16'),'attributes':['id',_0x9111('0x12'),_0x9111('0x17'),'idField',_0x9111('0x18'),'customField',_0x9111('0xf')],'include':[{'model':'Variable','as':_0x9111('0x10'),'attributes':['id',_0x9111('0x3')]}]}]}]},'log':_0x9111('0x2')});};};
\ No newline at end of file
+var _0x3d8a=['clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','key','Fields','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId'];(function(_0x477a31,_0x1f788b){var _0x211601=function(_0x2adf76){while(--_0x2adf76){_0x477a31['push'](_0x477a31['shift']());}};_0x211601(++_0x1f788b);}(_0x3d8a,0xea));var _0xa3d8=function(_0x9cbf24,_0xbddfc5){_0x9cbf24=_0x9cbf24-0x0;var _0x43e6c2=_0x3d8a[_0x9cbf24];return _0x43e6c2;};'use strict';var client=require(_0xa3d8('0x0'));exports[_0xa3d8('0x1')]=function(){return function(_0x367626){return client[_0xa3d8('0x2')](_0xa3d8('0x3'),{'options':{'raw':![],'attributes':['id',_0xa3d8('0x4'),_0xa3d8('0x5'),_0xa3d8('0x6'),_0xa3d8('0x7'),_0xa3d8('0x8'),_0xa3d8('0x9'),_0xa3d8('0xa'),_0xa3d8('0xb'),_0xa3d8('0xc')],'include':[{'model':_0xa3d8('0xd'),'as':_0xa3d8('0xe'),'attributes':['id',_0xa3d8('0x4'),_0xa3d8('0xf'),'moduleSearch',_0xa3d8('0x5')],'include':[{'model':_0xa3d8('0x10'),'as':_0xa3d8('0x11'),'attributes':['id',_0xa3d8('0x12'),_0xa3d8('0x13'),_0xa3d8('0x14')],'include':[{'model':_0xa3d8('0x15'),'as':'Variable','attributes':['id',_0xa3d8('0x4')]}]},{'model':_0xa3d8('0x10'),'as':_0xa3d8('0x16'),'attributes':['id',_0xa3d8('0x12'),'content',_0xa3d8('0x17'),'keyType','keyContent',_0xa3d8('0x14')],'include':[{'model':'Variable','as':_0xa3d8('0x15'),'attributes':['id',_0xa3d8('0x4')]}]},{'model':'ZohoField','as':_0xa3d8('0x18'),'attributes':['id',_0xa3d8('0x12'),_0xa3d8('0x13'),'idField',_0xa3d8('0x19'),_0xa3d8('0x1a'),_0xa3d8('0x14')],'include':[{'model':_0xa3d8('0x15'),'as':_0xa3d8('0x15'),'attributes':['id',_0xa3d8('0x4')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 03a5071..d8d59b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcfb=['outbound','dialstring','moment','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','Request','starttime','endtime','seconds'];(function(_0x539fb2,_0x5b6718){var _0x4d583d=function(_0x55fa69){while(--_0x55fa69){_0x539fb2['push'](_0x539fb2['shift']());}};_0x4d583d(++_0x5b6718);}(_0xfcfb,0x9d));var _0xbfcf=function(_0x5c4a87,_0x35cd28){_0x5c4a87=_0x5c4a87-0x0;var _0x1a8c55=_0xfcfb[_0x5c4a87];return _0x1a8c55;};'use strict';var moment=require(_0xbfcf('0x0'));var _=require('lodash');var util=require(_0xbfcf('0x1'));var client=require(_0xbfcf('0x2'));exports[_0xbfcf('0x3')]=function(_0x492785){var _0x369235=_0x492785[_0xbfcf('0x4')]||_0x492785[_0xbfcf('0x5')];return client['Request'](_0xbfcf('0x6'),{'body':{'channel':_0xbfcf('0x7'),'membername':_0x492785[_0xbfcf('0x8')],'interface':_[_0xbfcf('0x9')](_0x492785[_0xbfcf('0xa')])?util[_0xbfcf('0xb')](_0xbfcf('0xc'),_0x492785[_0xbfcf('0x8')]):_0x492785['interface'],'type':_0xbfcf('0xd'),'enterAt':_0x492785[_0xbfcf('0xe')],'exitAt':_0x369235,'duration':moment(_0x369235)[_0xbfcf('0xf')](_0x492785[_0xbfcf('0xe')],'seconds'),'data1':_0xbfcf('0x10'),'data2':_0x492785[_0xbfcf('0x11')],'data3':_0x492785[_0xbfcf('0x12')],'data4':null,'data5':_0x492785[_0xbfcf('0x13')],'role':_0xbfcf('0x14'),'internal':_0x492785[_0xbfcf('0x15')]?_[_0xbfcf('0x16')](_0x492785[_0xbfcf('0x15')]):undefined,'uniqueid':_0x492785[_0xbfcf('0x17')]},'log':_0xbfcf('0x6')});};exports[_0xbfcf('0x18')]=function(_0x1ad84a){return client[_0xbfcf('0x19')](_0xbfcf('0x6'),{'body':{'channel':_0xbfcf('0x7'),'membername':_0x1ad84a['membername'],'interface':_0x1ad84a[_0xbfcf('0xa')],'type':_0xbfcf('0xd'),'enterAt':_0x1ad84a[_0xbfcf('0x1a')],'exitAt':_0x1ad84a[_0xbfcf('0x1b')],'duration':moment(_0x1ad84a[_0xbfcf('0x1b')])[_0xbfcf('0xf')](_0x1ad84a[_0xbfcf('0x1a')],_0xbfcf('0x1c'))>=0x0?moment(_0x1ad84a[_0xbfcf('0x1b')])['diff'](_0x1ad84a[_0xbfcf('0x1a')],_0xbfcf('0x1c')):null,'data1':_0xbfcf('0x1d'),'data2':_0x1ad84a['accountcode'],'data3':_0x1ad84a[_0xbfcf('0x12')],'data4':_0x1ad84a[_0xbfcf('0x1e')]||null,'role':'agent','internal':_0x1ad84a[_0xbfcf('0x15')]?_[_0xbfcf('0x16')](_0x1ad84a[_0xbfcf('0x15')]):undefined,'uniqueid':_0x1ad84a['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0xa8b0=['starttime','endtime','seconds','exten','dialstring','uniqueid','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','SIP/%s','TALKING','diff','queuecallerleaveAt','calleridnum','queue','agent','toNumber','accountcode','voiceDialReport','interface'];(function(_0x4c1a03,_0xcce217){var _0x1525e1=function(_0x20c733){while(--_0x20c733){_0x4c1a03['push'](_0x4c1a03['shift']());}};_0x1525e1(++_0xcce217);}(_0xa8b0,0xa8));var _0x0a8b=function(_0x34232c,_0x18e61d){_0x34232c=_0x34232c-0x0;var _0x4d4f4e=_0xa8b0[_0x34232c];return _0x4d4f4e;};'use strict';var moment=require('moment');var _=require('lodash');var util=require(_0x0a8b('0x0'));var client=require(_0x0a8b('0x1'));exports[_0x0a8b('0x2')]=function(_0x33f5ff){var _0x9b8f58=_0x33f5ff[_0x0a8b('0x3')]||_0x33f5ff[_0x0a8b('0x4')];return client[_0x0a8b('0x5')](_0x0a8b('0x6'),{'body':{'channel':_0x0a8b('0x7'),'membername':_0x33f5ff[_0x0a8b('0x8')],'interface':_[_0x0a8b('0x9')](_0x33f5ff['interface'])?util['format'](_0x0a8b('0xa'),_0x33f5ff['lastAssignedTo']):_0x33f5ff['interface'],'type':_0x0a8b('0xb'),'enterAt':_0x33f5ff['queuecallerleaveAt'],'exitAt':_0x9b8f58,'duration':moment(_0x9b8f58)[_0x0a8b('0xc')](_0x33f5ff[_0x0a8b('0xd')],'seconds'),'data1':'inbound','data2':_0x33f5ff[_0x0a8b('0xe')],'data3':_0x33f5ff['exten'],'data4':null,'data5':_0x33f5ff[_0x0a8b('0xf')],'role':_0x0a8b('0x10'),'internal':_0x33f5ff['accountcode']?_[_0x0a8b('0x11')](_0x33f5ff[_0x0a8b('0x12')]):undefined,'uniqueid':_0x33f5ff['uniqueid']},'log':_0x0a8b('0x6')});};exports[_0x0a8b('0x13')]=function(_0x5d081b){return client[_0x0a8b('0x5')](_0x0a8b('0x6'),{'body':{'channel':_0x0a8b('0x7'),'membername':_0x5d081b['membername'],'interface':_0x5d081b[_0x0a8b('0x14')],'type':_0x0a8b('0xb'),'enterAt':_0x5d081b[_0x0a8b('0x15')],'exitAt':_0x5d081b[_0x0a8b('0x16')],'duration':moment(_0x5d081b[_0x0a8b('0x16')])[_0x0a8b('0xc')](_0x5d081b[_0x0a8b('0x15')],_0x0a8b('0x17'))>=0x0?moment(_0x5d081b[_0x0a8b('0x16')])[_0x0a8b('0xc')](_0x5d081b[_0x0a8b('0x15')],_0x0a8b('0x17')):null,'data1':'outbound','data2':_0x5d081b['accountcode'],'data3':_0x5d081b[_0x0a8b('0x18')],'data4':_0x5d081b[_0x0a8b('0x19')]||null,'role':_0x0a8b('0x10'),'internal':_0x5d081b[_0x0a8b('0x12')]?_[_0x0a8b('0x11')](_0x5d081b['accountcode']):undefined,'uniqueid':_0x5d081b[_0x0a8b('0x1a')]},'log':_0x0a8b('0x6')});};
\ No newline at end of file
index 878c096..86cbc49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd86f=['../client','getSettings','Request','ShowSetting','stopRecordingOnTransfer','GetSettings'];(function(_0x20dc69,_0xa3781d){var _0x1f2725=function(_0xc54cf1){while(--_0xc54cf1){_0x20dc69['push'](_0x20dc69['shift']());}};_0x1f2725(++_0xa3781d);}(_0xd86f,0xf6));var _0xfd86=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0xd86f[_0x16b9ed];return _0x66b1f8;};'use strict';var client=require(_0xfd86('0x0'));exports[_0xfd86('0x1')]=function(){return client[_0xfd86('0x2')](_0xfd86('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xfd86('0x4')]},'log':_0xfd86('0x5')});};
\ No newline at end of file
+var _0xe5b5=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','GetSettings'];(function(_0x7e44d8,_0x23a630){var _0x24b9fe=function(_0x239e57){while(--_0x239e57){_0x7e44d8['push'](_0x7e44d8['shift']());}};_0x24b9fe(++_0x23a630);}(_0xe5b5,0x73));var _0x5e5b=function(_0x187d80,_0x5b793f){_0x187d80=_0x187d80-0x0;var _0x498a77=_0xe5b5[_0x187d80];return _0x498a77;};'use strict';var client=require('../client');exports[_0x5e5b('0x0')]=function(){return client[_0x5e5b('0x1')](_0x5e5b('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x5e5b('0x3')]},'log':_0x5e5b('0x4')});};
\ No newline at end of file
index 9c0678b..808c623 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35ee=['name','html','../client','getTemplates','Request','GetTemplate'];(function(_0x403a4b,_0x130fe1){var _0x5d7284=function(_0x3ecc93){while(--_0x3ecc93){_0x403a4b['push'](_0x403a4b['shift']());}};_0x5d7284(++_0x130fe1);}(_0x35ee,0x1ee));var _0xe35e=function(_0x4b7117,_0x539c71){_0x4b7117=_0x4b7117-0x0;var _0x84ebd5=_0x35ee[_0x4b7117];return _0x84ebd5;};'use strict';var client=require(_0xe35e('0x0'));exports[_0xe35e('0x1')]=function(_0x51262c){return function(_0x27b99a){return client[_0xe35e('0x2')](_0xe35e('0x3'),{'options':{'raw':!![],'attributes':['id',_0xe35e('0x4'),_0xe35e('0x5')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x60c9=['name','html','../client','getTemplates','Request','GetTemplate'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x60c9,0x116));var _0x960c=function(_0x310a15,_0x108d52){_0x310a15=_0x310a15-0x0;var _0x1d07a1=_0x60c9[_0x310a15];return _0x1d07a1;};'use strict';var client=require(_0x960c('0x0'));exports[_0x960c('0x1')]=function(_0x19db24){return function(_0x249a2a){return client[_0x960c('0x2')](_0x960c('0x3'),{'options':{'raw':!![],'attributes':['id',_0x960c('0x4'),_0x960c('0x5')]},'log':_0x960c('0x3')});};};
\ No newline at end of file
index 29fc504..3a5b4ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb2=['action','data1','data3','data4','data5','data6','data7','GetTrigger','getTriggers','Request','name','channel','status','Condition','AllConditions','field','operator','value','Action','Actions'];(function(_0x3b8869,_0x479d87){var _0x42b3a2=function(_0x20cad7){while(--_0x20cad7){_0x3b8869['push'](_0x3b8869['shift']());}};_0x42b3a2(++_0x479d87);}(_0x5eb2,0x6c));var _0x25eb=function(_0x38cb37,_0x499145){_0x38cb37=_0x38cb37-0x0;var _0x2efd84=_0x5eb2[_0x38cb37];return _0x2efd84;};'use strict';var client=require('../client');exports[_0x25eb('0x0')]=function(_0x43a967){return function(_0x6833c7){return client[_0x25eb('0x1')]('GetTrigger',{'options':{'raw':![],'attributes':['id',_0x25eb('0x2'),_0x25eb('0x3'),_0x25eb('0x4')],'include':[{'model':_0x25eb('0x5'),'as':_0x25eb('0x6'),'attributes':['id','field','operator','value']},{'model':_0x25eb('0x5'),'as':'AnyConditions','attributes':['id',_0x25eb('0x7'),_0x25eb('0x8'),_0x25eb('0x9')]},{'model':_0x25eb('0xa'),'as':_0x25eb('0xb'),'attributes':['id',_0x25eb('0xc'),_0x25eb('0xd'),'data2',_0x25eb('0xe'),_0x25eb('0xf'),_0x25eb('0x10'),_0x25eb('0x11'),_0x25eb('0x12')]}]},'log':_0x25eb('0x13')});};};
\ No newline at end of file
+var _0x883e=['status','AllConditions','value','Condition','AnyConditions','operator','Action','Actions','action','data1','data2','data5','data6','data7','../client','Request','GetTrigger','name','channel'];(function(_0x371efd,_0x42ecc9){var _0x138c51=function(_0x27c776){while(--_0x27c776){_0x371efd['push'](_0x371efd['shift']());}};_0x138c51(++_0x42ecc9);}(_0x883e,0x151));var _0xe883=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x883e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xe883('0x0'));exports['getTriggers']=function(_0xfa5995){return function(_0x4bf115){return client[_0xe883('0x1')](_0xe883('0x2'),{'options':{'raw':![],'attributes':['id',_0xe883('0x3'),_0xe883('0x4'),_0xe883('0x5')],'include':[{'model':'Condition','as':_0xe883('0x6'),'attributes':['id','field','operator',_0xe883('0x7')]},{'model':_0xe883('0x8'),'as':_0xe883('0x9'),'attributes':['id','field',_0xe883('0xa'),_0xe883('0x7')]},{'model':_0xe883('0xb'),'as':_0xe883('0xc'),'attributes':['id',_0xe883('0xd'),_0xe883('0xe'),_0xe883('0xf'),'data3','data4',_0xe883('0x10'),_0xe883('0x11'),_0xe883('0x12')]}]},'log':_0xe883('0x2')});};};
\ No newline at end of file
index d8ab745..ce6ceef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3512=['defaultuser','GetTrunk','../client','getTrunks','name','registry'];(function(_0x194710,_0x3d9f73){var _0x41ab88=function(_0x4621d2){while(--_0x4621d2){_0x194710['push'](_0x194710['shift']());}};_0x41ab88(++_0x3d9f73);}(_0x3512,0x9e));var _0x2351=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x3512[_0x59ee6f];return _0x4c0979;};'use strict';var client=require(_0x2351('0x0'));exports[_0x2351('0x1')]=function(_0x1a1e61){return function(_0x18b4cd){return client['Request']('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x2351('0x2'),_0x2351('0x3'),_0x2351('0x4')]},'log':_0x2351('0x5')});};};
\ No newline at end of file
+var _0x503c=['defaultuser','GetTrunk','name'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x503c,0x1bd));var _0xc503=function(_0x4ea1c0,_0x151643){_0x4ea1c0=_0x4ea1c0-0x0;var _0x58ada1=_0x503c[_0x4ea1c0];return _0x58ada1;};'use strict';var client=require('../client');exports['getTrunks']=function(_0x50b330){return function(_0x521653){return client['Request'](_0xc503('0x0'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xc503('0x1'),'registry',_0xc503('0x2')]},'log':_0xc503('0x0')});};};
\ No newline at end of file
index 684042e..443e3b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x5ca84f,_0x4bfa49){var _0x220f3=function(_0xfdfb8f){while(--_0xfdfb8f){_0x5ca84f['push'](_0x5ca84f['shift']());}};_0x220f3(++_0x4bfa49);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'where':{'role':_0x3071('0x2')},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),'accountcode',_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),_0x3071('0xb'),_0x3071('0xc'),_0x3071('0xd')]},'log':_0x3071('0xe')});};};exports[_0x3071('0xf')]=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x3071('0x3'),_0x3071('0x10'),_0x3071('0x11')]},'log':_0x3071('0xf')});};};exports[_0x3071('0x12')]=function(_0x4a470a,_0x2ace21,_0x11a7ee){return client[_0x3071('0x0')](_0x3071('0x13'),{'body':{'type':_0x2ace21,'uniqueid':_0x11a7ee},'options':{'where':{'id':_0x4a470a['id']}},'log':_0x3071('0x12')});};exports['saveUnpause']=function(_0x5330a8){return client[_0x3071('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5330a8['id']}},'log':_0x3071('0x12')});};exports[_0x3071('0x14')]=function(_0x5d4883){return client[_0x3071('0x0')]('ShowUser',{'options':{'raw':![],'where':{'role':_0x3071('0x2'),'id':_0x5d4883},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),_0x3071('0x10'),_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),'interface']},'log':_0x3071('0x14')});};
\ No newline at end of file
+var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x12a959,_0x485b76){var _0x762b66=function(_0x21045e){while(--_0x21045e){_0x12a959['push'](_0x12a959['shift']());}};_0x762b66(++_0x485b76);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
index a3e889a..e4ab5c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a5=['update','UpdateVoiceAgentReport','create','Request','CreateVoiceAgentReport'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x25a5,0x10b));var _0x525a=function(_0x21f318,_0x53c037){_0x21f318=_0x21f318-0x0;var _0x2d9675=_0x25a5[_0x21f318];return _0x2d9675;};'use strict';var client=require('../client');exports[_0x525a('0x0')]=function(_0x506714){return client[_0x525a('0x1')]('CreateVoiceAgentReport',{'body':_0x506714,'log':_0x525a('0x2')});};exports[_0x525a('0x3')]=function(_0x3ef5c6,_0x376356,_0x3fb605){return client[_0x525a('0x1')](_0x525a('0x4'),{'body':_0x3ef5c6,'options':{'where':{'uniqueid':_0x376356,'interface':_0x3fb605,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0x4356=['UpdateVoiceAgentReport','../client','create','Request','CreateVoiceAgentReport'];(function(_0x1ef5cb,_0x3a9a73){var _0x198a87=function(_0x2b0f6a){while(--_0x2b0f6a){_0x1ef5cb['push'](_0x1ef5cb['shift']());}};_0x198a87(++_0x3a9a73);}(_0x4356,0x150));var _0x6435=function(_0x1d5dc5,_0x238990){_0x1d5dc5=_0x1d5dc5-0x0;var _0x2db555=_0x4356[_0x1d5dc5];return _0x2db555;};'use strict';var client=require(_0x6435('0x0'));exports[_0x6435('0x1')]=function(_0x12bb16){return client[_0x6435('0x2')]('CreateVoiceAgentReport',{'body':_0x12bb16,'log':_0x6435('0x3')});};exports['update']=function(_0x1a958a,_0x397fee,_0x6cbcf6){return client[_0x6435('0x2')](_0x6435('0x4'),{'body':_0x1a958a,'options':{'where':{'uniqueid':_0x397fee,'interface':_0x6cbcf6,'agentcomplete':!![]}},'log':_0x6435('0x4')});};
\ No newline at end of file
index d2e1e35..2a07919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c6f=['Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','type','disposition','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create'];(function(_0xe9d92a,_0x1b4309){var _0x24367e=function(_0x36181d){while(--_0x36181d){_0xe9d92a['push'](_0xe9d92a['shift']());}};_0x24367e(++_0x1b4309);}(_0x9c6f,0x16b));var _0xf9c6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c6f[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xf9c6('0x0'));var util=require(_0xf9c6('0x1'));var _=require(_0xf9c6('0x2'));var client=require(_0xf9c6('0x3'));exports[_0xf9c6('0x4')]=function(_0x413c87){return client[_0xf9c6('0x5')](_0xf9c6('0x6'),{'body':_[_0xf9c6('0x7')](_0x413c87,{'source':_0x413c87[_0xf9c6('0x8')],'destinationcontext':_0x413c87[_0xf9c6('0x9')],'callerid':_0x413c87[_0xf9c6('0xa')],'amaflags':_0xf9c6('0xb')}),'log':_0xf9c6('0x6')});};exports[_0xf9c6('0xc')]=function(){return function(){return client[_0xf9c6('0x5')](_0xf9c6('0xd'),{'options':{'where':{'type':[_0xf9c6('0xe')],'createdAt':{'$between':[moment()[_0xf9c6('0xf')](_0xf9c6('0x10'))[_0xf9c6('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0xf9c6('0x10'))[_0xf9c6('0x11')](_0xf9c6('0x12'))]}},'attributes':[_0xf9c6('0x13'),_0xf9c6('0x14'),'duration',_0xf9c6('0x15')]},'log':_0xf9c6('0x16')});};};
\ No newline at end of file
+var _0x7213=['day','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','GetVoiceCallReports','util','lodash','../client','merge','context','DOCUMENTATION','CreateVoiceCallReport','Request','outbound','startOf'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x7213,0xf2));var _0x3721=function(_0x3a2a58,_0x896506){_0x3a2a58=_0x3a2a58-0x0;var _0x26a459=_0x7213[_0x3a2a58];return _0x26a459;};'use strict';var moment=require('moment');var util=require(_0x3721('0x0'));var _=require(_0x3721('0x1'));var client=require(_0x3721('0x2'));exports['create']=function(_0x45babf){return client['Request']('CreateVoiceCallReport',{'body':_[_0x3721('0x3')](_0x45babf,{'source':_0x45babf['calleridnum'],'destinationcontext':_0x45babf[_0x3721('0x4')],'callerid':_0x45babf['callerid'],'amaflags':_0x3721('0x5')}),'log':_0x3721('0x6')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x3721('0x7')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x3721('0x8')],'createdAt':{'$between':[moment()[_0x3721('0x9')](_0x3721('0xa'))['format'](_0x3721('0xb')),moment()[_0x3721('0xc')](_0x3721('0xa'))['format']('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x3721('0xd'),_0x3721('0xe'),_0x3721('0xf'),_0x3721('0x10')]},'log':_0x3721('0x11')});};};
\ No newline at end of file
index 44cefea..edc338d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c3a=['../client','create','Request','CreateVoiceDialReport'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x4c3a,0x1a8));var _0xa4c3=function(_0x9a87df,_0x216aa4){_0x9a87df=_0x9a87df-0x0;var _0x4f64b4=_0x4c3a[_0x9a87df];return _0x4f64b4;};'use strict';var client=require(_0xa4c3('0x0'));exports[_0xa4c3('0x1')]=function(_0x33dc7c){return client[_0xa4c3('0x2')](_0xa4c3('0x3'),{'body':_0x33dc7c,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x42df=['CreateVoiceDialReport','../client'];(function(_0x25bd58,_0x1ce92d){var _0x3e9034=function(_0xb1769d){while(--_0xb1769d){_0x25bd58['push'](_0x25bd58['shift']());}};_0x3e9034(++_0x1ce92d);}(_0x42df,0x87));var _0xf42d=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x42df[_0x40a045];return _0x1a687c;};'use strict';var client=require(_0xf42d('0x0'));exports['create']=function(_0x573c5d){return client['Request'](_0xf42d('0x1'),{'body':_0x573c5d,'log':_0xf42d('0x1')});};
\ No newline at end of file
index 41417ce..fa825fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f2f=['recordingFormat','../client','getVoiceExtensions'];(function(_0x2e5636,_0x2b9540){var _0x4d7371=function(_0x28e14c){while(--_0x28e14c){_0x2e5636['push'](_0x2e5636['shift']());}};_0x4d7371(++_0x2b9540);}(_0x6f2f,0xbe));var _0xf6f2=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x6f2f[_0x4d613c];return _0x301fe3;};'use strict';var client=require(_0xf6f2('0x0'));exports[_0xf6f2('0x1')]=function(){return function(){return client['Request']('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id','exten',_0xf6f2('0x2')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0xdb76=['exten','../client','getVoiceExtensions','Request','GetVoiceExtension'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xdb76,0x1be));var _0x6db7=function(_0x27dca8,_0x7d2b57){_0x27dca8=_0x27dca8-0x0;var _0x50e878=_0xdb76[_0x27dca8];return _0x50e878;};'use strict';var client=require(_0x6db7('0x0'));exports[_0x6db7('0x1')]=function(){return function(){return client[_0x6db7('0x2')](_0x6db7('0x3'),{'options':{'raw':!![],'attributes':['id',_0x6db7('0x4'),'recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0x6db7('0x1')});};};
\ No newline at end of file
index 0902621..35e4afe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8af=['dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','Trunk','callerid','active','Pause','TrunkBackup','Interval','Intervals','getVoiceQueues','../client','Request','GetVoiceQueue','name','acw','autopause','monitor_format','type','dialActive','dialLimitQueue','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','timeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupClient','strategy'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf8af,0x8b));var _0xff8a=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xf8af[_0x17d9e3];return _0x14192d;};'use strict';var client=require(_0xff8a('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0xff8a('0x1')](_0xff8a('0x2'),{'options':{'raw':![],'attributes':['id',_0xff8a('0x3'),_0xff8a('0x4'),'acwTimeout',_0xff8a('0x5'),_0xff8a('0x6'),_0xff8a('0x7'),_0xff8a('0x8'),'dialMethod','dialLimitChannel',_0xff8a('0x9'),'dialPowerLevel',_0xff8a('0xa'),_0xff8a('0xb'),_0xff8a('0xc'),_0xff8a('0xd'),_0xff8a('0xe'),_0xff8a('0xf'),_0xff8a('0x10'),_0xff8a('0x11'),_0xff8a('0x12'),_0xff8a('0x13'),_0xff8a('0x14'),'dialBusyMaxRetry',_0xff8a('0x15'),_0xff8a('0x16'),_0xff8a('0x17'),'dialGlobalMaxRetry',_0xff8a('0x18'),_0xff8a('0x19'),_0xff8a('0x1a'),_0xff8a('0x1b'),_0xff8a('0x1c'),'dialAMDInitialSilence',_0xff8a('0x1d'),_0xff8a('0x1e'),_0xff8a('0x1f'),_0xff8a('0x20'),'dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength',_0xff8a('0x21'),'dialRecallMeTimeout',_0xff8a('0x22'),_0xff8a('0x23'),'dialAgiAfterHangupAgent',_0xff8a('0x24'),'dialQueueProject2','monitor_format',_0xff8a('0x25'),_0xff8a('0x26'),_0xff8a('0x27'),'dialNoSuchNumberMaxRetry',_0xff8a('0x28'),'dialDropMaxRetry',_0xff8a('0x29'),'dialAbandonedMaxRetry',_0xff8a('0x2a'),_0xff8a('0x2b'),_0xff8a('0x2c'),_0xff8a('0x2d'),_0xff8a('0x2e'),_0xff8a('0x2f'),_0xff8a('0x30'),_0xff8a('0x31'),_0xff8a('0x32')],'include':[{'model':_0xff8a('0x33'),'as':_0xff8a('0x33'),'attributes':['id',_0xff8a('0x3'),_0xff8a('0x34'),_0xff8a('0x35')]},{'model':_0xff8a('0x36'),'as':'mandatoryDispositionPause','attributes':['id',_0xff8a('0x3')]},{'model':_0xff8a('0x33'),'as':_0xff8a('0x37'),'attributes':['id',_0xff8a('0x3'),'callerid',_0xff8a('0x35')]},{'model':'Interval','as':_0xff8a('0x38'),'attributes':['id',_0xff8a('0x3')],'include':[{'model':_0xff8a('0x38'),'as':_0xff8a('0x39'),'attributes':['id',_0xff8a('0x3'),'interval']}]}]},'log':_0xff8a('0x3a')});};};
\ No newline at end of file
+var _0xe978=['dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','timeout','dialRecallInQueue','dialOrderByScheduledAt','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPreviewAutoRecallMe','Trunk','name','callerid','active','Pause','mandatoryDispositionPause','Interval','Intervals','interval','../client','getVoiceQueues','Request','acw','acwTimeout','autopause','monitor_format','type'];(function(_0x3f7614,_0x328bbd){var _0x4298b1=function(_0x341448){while(--_0x341448){_0x3f7614['push'](_0x3f7614['shift']());}};_0x4298b1(++_0x328bbd);}(_0xe978,0x70));var _0x8e97=function(_0x4fb884,_0x1287a0){_0x4fb884=_0x4fb884-0x0;var _0x190093=_0xe978[_0x4fb884];return _0x190093;};'use strict';var client=require(_0x8e97('0x0'));exports[_0x8e97('0x1')]=function(){return function(){return client[_0x8e97('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id','name',_0x8e97('0x3'),_0x8e97('0x4'),_0x8e97('0x5'),_0x8e97('0x6'),_0x8e97('0x7'),'dialActive',_0x8e97('0x8'),_0x8e97('0x9'),_0x8e97('0xa'),_0x8e97('0xb'),_0x8e97('0xc'),'dialPredictiveOptimizationPercentage',_0x8e97('0xd'),'dialOriginateCallerIdName',_0x8e97('0xe'),_0x8e97('0xf'),_0x8e97('0x10'),'dialQueueTimeout',_0x8e97('0x11'),_0x8e97('0x12'),_0x8e97('0x13'),_0x8e97('0x14'),_0x8e97('0x15'),_0x8e97('0x16'),_0x8e97('0x17'),_0x8e97('0x18'),_0x8e97('0x19'),_0x8e97('0x1a'),_0x8e97('0x1b'),'dialCheckDuplicateType',_0x8e97('0x1c'),_0x8e97('0x1d'),_0x8e97('0x1e'),_0x8e97('0x1f'),'dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength',_0x8e97('0x20'),'dialRecallMeTimeout',_0x8e97('0x21'),_0x8e97('0x22'),'dialAgiAfterHangupAgent','dialAgiAfterHangupClient',_0x8e97('0x23'),_0x8e97('0x6'),_0x8e97('0x24'),_0x8e97('0x25'),_0x8e97('0x26'),_0x8e97('0x27'),_0x8e97('0x28'),_0x8e97('0x29'),_0x8e97('0x2a'),'dialAbandonedMaxRetry',_0x8e97('0x2b'),_0x8e97('0x2c'),_0x8e97('0x2d'),_0x8e97('0x2e'),_0x8e97('0x2f'),_0x8e97('0x30'),_0x8e97('0x31'),'dialPredictiveIntervalMinThreshold',_0x8e97('0x32')],'include':[{'model':_0x8e97('0x33'),'as':_0x8e97('0x33'),'attributes':['id',_0x8e97('0x34'),_0x8e97('0x35'),_0x8e97('0x36')]},{'model':_0x8e97('0x37'),'as':_0x8e97('0x38'),'attributes':['id',_0x8e97('0x34')]},{'model':_0x8e97('0x33'),'as':'TrunkBackup','attributes':['id','name','callerid',_0x8e97('0x36')]},{'model':_0x8e97('0x39'),'as':_0x8e97('0x39'),'attributes':['id',_0x8e97('0x34')],'include':[{'model':_0x8e97('0x39'),'as':_0x8e97('0x3a'),'attributes':['id',_0x8e97('0x34'),_0x8e97('0x3b')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index cd60d2c..d27cc96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x50a6b6,_0x4f34c9){var _0x384594=function(_0x58abd3){while(--_0x58abd3){_0x50a6b6['push'](_0x50a6b6['shift']());}};_0x384594(++_0x4f34c9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x50a3d8,_0xf348c9){var _0x1fe117=function(_0x4912e5){while(--_0x4912e5){_0x50a3d8['push'](_0x50a3d8['shift']());}};_0x1fe117(++_0xf348c9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 51fb2bc..b40a470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19e4=['Request','GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0x2302bb,_0x2151b6){var _0x49221c=function(_0x383519){while(--_0x383519){_0x2302bb['push'](_0x2302bb['shift']());}};_0x49221c(++_0x2151b6);}(_0x19e4,0x10e));var _0x419e=function(_0x1991c6,_0x3b5842){_0x1991c6=_0x1991c6-0x0;var _0x26ea15=_0x19e4[_0x1991c6];return _0x26ea15;};'use strict';var client=require(_0x419e('0x0'));exports[_0x419e('0x1')]=function(_0x118a70){return function(){return client[_0x419e('0x2')](_0x419e('0x3'),{'options':{'where':{'VoiceQueueId':_0x118a70,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x924a=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x4a34e0,_0x29ff2f){var _0xb5ce1d=function(_0x225c39){while(--_0x225c39){_0x4a34e0['push'](_0x4a34e0['shift']());}};_0xb5ce1d(++_0x29ff2f);}(_0x924a,0x1df));var _0xa924=function(_0x2a0d32,_0x522c89){_0x2a0d32=_0x2a0d32-0x0;var _0xfc1b6=_0x924a[_0x2a0d32];return _0xfc1b6;};'use strict';var client=require(_0xa924('0x0'));exports[_0xa924('0x1')]=function(_0x157c48){return function(){return client[_0xa924('0x2')](_0xa924('0x3'),{'options':{'where':{'VoiceQueueId':_0x157c48,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
index 1aa58ef..4cf0d4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x30116c,_0x55e615){var _0x39dd28=function(_0xef0bcd){while(--_0xef0bcd){_0x30116c['push'](_0x30116c['shift']());}};_0x39dd28(++_0x55e615);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x4f8b92,_0x495ed2){var _0x3e86ad=function(_0x15424e){while(--_0x15424e){_0x4f8b92['push'](_0x4f8b92['shift']());}};_0x3e86ad(++_0x495ed2);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index 5c6008d..9e07394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dbb=['CreateVoiceTransferReport','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','transfers','blindTransfer','Request','result','transfererchannel','transferercalleridnum','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','isexternal','context','extension','blind'];(function(_0xad04bd,_0x2a9b54){var _0x5e73dd=function(_0x4a164e){while(--_0x4a164e){_0xad04bd['push'](_0xad04bd['shift']());}};_0x5e73dd(++_0x2a9b54);}(_0x7dbb,0x1f2));var _0xb7db=function(_0x37d07c,_0x465292){_0x37d07c=_0x37d07c-0x0;var _0x2f3a99=_0x7dbb[_0x37d07c];return _0x2f3a99;};'use strict';var client=require('../client');exports[_0xb7db('0x0')]={};exports[_0xb7db('0x1')]=function(_0x143759){return client[_0xb7db('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x143759[_0xb7db('0x3')],'transfererchannel':_0x143759[_0xb7db('0x4')],'transferercalleridnum':_0x143759[_0xb7db('0x5')],'transferercalleridname':_0x143759['transferercalleridname'],'transfererconnectedlinenum':_0x143759[_0xb7db('0x6')],'transfererconnectedlinename':_0x143759[_0xb7db('0x7')],'transfereraccountcode':_0x143759['transfereraccountcode'],'transferercontext':_0x143759[_0xb7db('0x8')],'transfererexten':_0x143759[_0xb7db('0x9')],'transfererlinkedid':_0x143759[_0xb7db('0xa')],'transfereechannel':_0x143759[_0xb7db('0xb')],'transfereecalleridnum':_0x143759[_0xb7db('0xc')],'transfereecalleridname':_0x143759[_0xb7db('0xd')],'transfereeconnectedlinenum':_0x143759[_0xb7db('0xe')],'transfereeconnectedlinename':_0x143759[_0xb7db('0xf')],'transfereeaccountcode':_0x143759[_0xb7db('0x10')],'transfereecontext':_0x143759[_0xb7db('0x11')],'transfereeexten':_0x143759['transfereeexten'],'transfereelinkedid':_0x143759['transfereelinkedid'],'isexternal':_0x143759[_0xb7db('0x12')],'context':_0x143759[_0xb7db('0x13')],'extension':_0x143759[_0xb7db('0x14')],'type':_0xb7db('0x15')},'log':_0xb7db('0x16')});};exports['attendedTransfer']=function(_0x2d100c){return client[_0xb7db('0x2')](_0xb7db('0x16'),{'body':{'result':_0x2d100c[_0xb7db('0x3')],'transfererchannel':_0x2d100c[_0xb7db('0x17')],'transferercalleridnum':_0x2d100c[_0xb7db('0x18')],'transferercalleridname':_0x2d100c[_0xb7db('0x19')],'transfererconnectedlinenum':_0x2d100c[_0xb7db('0x1a')],'transfererconnectedlinename':_0x2d100c[_0xb7db('0x1b')],'transfereraccountcode':_0x2d100c[_0xb7db('0x1c')],'transferercontext':_0x2d100c[_0xb7db('0x1d')],'transfererexten':_0x2d100c[_0xb7db('0x1e')],'transfererlinkedid':_0x2d100c[_0xb7db('0x1f')],'transfereechannel':_0x2d100c[_0xb7db('0x20')],'transfereecalleridnum':_0x2d100c[_0xb7db('0x21')],'transfereecalleridname':_0x2d100c['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x2d100c[_0xb7db('0x22')],'transfereeconnectedlinename':_0x2d100c['transfertargetconnectedlinename'],'transfereeaccountcode':_0x2d100c['transfertargetaccountcode'],'transfereecontext':_0x2d100c[_0xb7db('0x23')],'transfereeexten':_0x2d100c[_0xb7db('0x24')],'transfereelinkedid':_0x2d100c[_0xb7db('0x25')],'isexternal':_0x2d100c[_0xb7db('0x12')],'context':_0x2d100c[_0xb7db('0x26')],'extension':_0x2d100c[_0xb7db('0x27')],'type':'attended'},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0x5d23=['transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','CreateVoiceTransferReport','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransfererexten','transfers','Request','result','transfererchannel','transferercalleridnum','transferercalleridname','transfereraccountcode','transferercontext','transfererexten'];(function(_0x308bc6,_0x564ec7){var _0x422fcf=function(_0x8451a8){while(--_0x8451a8){_0x308bc6['push'](_0x308bc6['shift']());}};_0x422fcf(++_0x564ec7);}(_0x5d23,0x6c));var _0x35d2=function(_0xe49176,_0x410ffd){_0xe49176=_0xe49176-0x0;var _0x428483=_0x5d23[_0xe49176];return _0x428483;};'use strict';var client=require('../client');exports[_0x35d2('0x0')]={};exports['blindTransfer']=function(_0xb8dd8b){return client[_0x35d2('0x1')]('CreateVoiceTransferReport',{'body':{'result':_0xb8dd8b[_0x35d2('0x2')],'transfererchannel':_0xb8dd8b[_0x35d2('0x3')],'transferercalleridnum':_0xb8dd8b[_0x35d2('0x4')],'transferercalleridname':_0xb8dd8b[_0x35d2('0x5')],'transfererconnectedlinenum':_0xb8dd8b['transfererconnectedlinenum'],'transfererconnectedlinename':_0xb8dd8b['transfererconnectedlinename'],'transfereraccountcode':_0xb8dd8b[_0x35d2('0x6')],'transferercontext':_0xb8dd8b[_0x35d2('0x7')],'transfererexten':_0xb8dd8b[_0x35d2('0x8')],'transfererlinkedid':_0xb8dd8b['transfererlinkedid'],'transfereechannel':_0xb8dd8b[_0x35d2('0x9')],'transfereecalleridnum':_0xb8dd8b[_0x35d2('0xa')],'transfereecalleridname':_0xb8dd8b[_0x35d2('0xb')],'transfereeconnectedlinenum':_0xb8dd8b[_0x35d2('0xc')],'transfereeconnectedlinename':_0xb8dd8b['transfereeconnectedlinename'],'transfereeaccountcode':_0xb8dd8b[_0x35d2('0xd')],'transfereecontext':_0xb8dd8b[_0x35d2('0xe')],'transfereeexten':_0xb8dd8b[_0x35d2('0xf')],'transfereelinkedid':_0xb8dd8b[_0x35d2('0x10')],'isexternal':_0xb8dd8b[_0x35d2('0x11')],'context':_0xb8dd8b[_0x35d2('0x12')],'extension':_0xb8dd8b[_0x35d2('0x13')],'type':_0x35d2('0x14')},'log':_0x35d2('0x15')});};exports[_0x35d2('0x16')]=function(_0x1af992){return client[_0x35d2('0x1')]('CreateVoiceTransferReport',{'body':{'result':_0x1af992['result'],'transfererchannel':_0x1af992[_0x35d2('0x17')],'transferercalleridnum':_0x1af992[_0x35d2('0x18')],'transferercalleridname':_0x1af992[_0x35d2('0x19')],'transfererconnectedlinenum':_0x1af992[_0x35d2('0x1a')],'transfererconnectedlinename':_0x1af992['secondtransfererconnectedlinename'],'transfereraccountcode':_0x1af992[_0x35d2('0x1b')],'transferercontext':_0x1af992[_0x35d2('0x1c')],'transfererexten':_0x1af992[_0x35d2('0x1d')],'transfererlinkedid':_0x1af992['origtransfererlinkedid'],'transfereechannel':_0x1af992[_0x35d2('0x1e')],'transfereecalleridnum':_0x1af992[_0x35d2('0x1f')],'transfereecalleridname':_0x1af992[_0x35d2('0x20')],'transfereeconnectedlinenum':_0x1af992[_0x35d2('0x21')],'transfereeconnectedlinename':_0x1af992[_0x35d2('0x22')],'transfereeaccountcode':_0x1af992['transfertargetaccountcode'],'transfereecontext':_0x1af992[_0x35d2('0x23')],'transfereeexten':_0x1af992[_0x35d2('0x24')],'transfereelinkedid':_0x1af992[_0x35d2('0x25')],'isexternal':_0x1af992[_0x35d2('0x11')],'context':_0x1af992['origtransferercontext'],'extension':_0x1af992[_0x35d2('0x26')],'type':'attended'},'log':_0x35d2('0x15')});};
\ No newline at end of file
index dcac744..8c0f3ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','find','undefined','values','channels','length','username','voicechannel','map','channel','format','filename','uniqueid','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','then','StopMixMonitor','destinationchannel','%s.%s','wav','status','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','Redirect','context','telephones','trunks','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','emit','checkAfterSend','server','http','127.0.0.1','log','lodash','validate','bluebird','moment','../../../config/environment','../properties','../ami','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','pause','QueuePause','isConnected','asterisk','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','message','catch','error','Command','content','voiceQueues','hasOwnProperty','strategy','available','sumBillable','sumDuration','sumHoldTime','total','type','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime'];(function(_0x57a402,_0x40596b){var _0x753a36=function(_0x13b76b){while(--_0x13b76b){_0x57a402['push'](_0x57a402['shift']());}};_0x753a36(++_0x40596b);}(_0x326f,0xd1));var _0xf326=function(_0x166025,_0x331cf5){_0x166025=_0x166025-0x0;var _0x4d8308=_0x326f[_0x166025];return _0x4d8308;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var jayson=require('jayson/promise');var schema=require(_0xf326('0x1'));var BPromise=require(_0xf326('0x2'));var moment=require(_0xf326('0x3'));var config=require(_0xf326('0x4'));var properties=require(_0xf326('0x5'));var ami=require(_0xf326('0x6'));exports[_0xf326('0x7')]=function(_0xf1c243,_0x1b5a56,_0x3ace29){return new BPromise(function(_0x4c2249,_0x3c254d){var _0x3851eb={'QueuePause':function(_0x165f95){return new Promise(function(_0x1e7b8a,_0x515bfa){var _0x4c206c=util['format'](_0xf326('0x8'),_0xf326('0x9'),_0x165f95[_0xf326('0xa')]);if(_0xf1c243[_0xf326('0xb')]&&_0xf1c243[_0xf326('0xb')][_0x4c206c]&&_0xf1c243['timers'][_0x4c206c][_0xf326('0xc')]){_0xf1c243['timers'][_0x4c206c][_0xf326('0xd')]();}if(_0xf1c243['agents'][_0x4c206c]){_0xf1c243[_0xf326('0xe')][_0x4c206c]['updateStatusRealtime']({'statePause':_0x165f95[_0xf326('0xf')]?!![]:![]});}_0x1e7b8a({'code':0xc8,'message':_0xf326('0x10')});});},'Reload':function(_0x4b3966){var _0x342fe5=this;return new Promise(function(_0x472632,_0x3504eb){if(ami[_0xf326('0x11')]()==![]){return _0x3504eb(_0x342fe5['error'](0x1f4,[config[_0xf326('0x12')]['ip'],config['asterisk']['username'],_0xf326('0x13')][_0xf326('0x14')]('\x20')));}_0x4b3966=_[_0xf326('0x15')](_0x4b3966,_[_0xf326('0x16')](properties[_0xf326('0x17')]));_0x4b3966[_0xf326('0x18')]=_0xf326('0x19');return ami[_0xf326('0x1a')](_0x4b3966)['then'](function(_0x3ad7da){_0x472632({'code':0xc8,'message':_0x3ad7da[_0xf326('0x1b')]});})[_0xf326('0x1c')](function(_0x31ffb9){_0x3504eb(_0x342fe5[_0xf326('0x1d')](0x1f5,_0x31ffb9[_0xf326('0x1b')]));});});},'Command':function(_0x4d3d41){var _0x4a5b6c=this;return new Promise(function(_0x56ad41,_0x16e605){if(ami[_0xf326('0x11')]()==![]){return _0x16e605(_0x4a5b6c['error'](0x1f4,[config['asterisk']['ip'],config[_0xf326('0x12')]['username'],'ami\x20disconnected'][_0xf326('0x14')]('\x20')));}_0x4d3d41=_[_0xf326('0x15')](_0x4d3d41,'command');_0x4d3d41['action']=_0xf326('0x1e');return ami[_0xf326('0x1a')](_0x4d3d41)['then'](function(_0x337ed5){_0x56ad41({'code':0xc8,'message':_0x337ed5[_0xf326('0x1f')]});})[_0xf326('0x1c')](function(_0x295752){_0x16e605(_0x4a5b6c[_0xf326('0x1d')](0x1f5,_0x295752[_0xf326('0x1b')]));});});},'VoiceQueues':function(_0x5ce532){return new Promise(function(_0x55b9f4,_0x4f31f6){var _0x520d85=[];for(var _0x1a2c4e in _0xf1c243[_0xf326('0x20')]){if(_0xf1c243[_0xf326('0x20')][_0xf326('0x21')](_0x1a2c4e)){var _0x410237=_0xf1c243['voiceQueues'][_0x1a2c4e];var _0x201d28={'id':_0x410237['id'],'name':_0x410237[_0xf326('0xa')],'strategy':_0x410237[_0xf326('0x22')],'answered':_0x410237['answered'],'available':_0x410237[_0xf326('0x23')],'loggedIn':_0x410237['loggedIn'],'pTalking':_0x410237['pTalking'],'sumBillable':_0x410237[_0xf326('0x24')],'sumDuration':_0x410237[_0xf326('0x25')],'sumHoldTime':_0x410237[_0xf326('0x26')]||0x0,'talking':_0x410237['talking'],'total':_0x410237[_0xf326('0x27')],'type':_0x410237[_0xf326('0x28')],'unmanaged':_0x410237['unmanaged'],'abandoned':_0x410237[_0xf326('0x29')],'waiting':_0x410237[_0xf326('0x2a')],'loggedInDb':_0x410237[_0xf326('0x2b')]};if(_0x410237[_0xf326('0x28')]===_0xf326('0x2c')){_0x201d28[_0xf326('0x2d')]=_0x410237[_0xf326('0x2d')];_0x201d28[_0xf326('0x2e')]=_0x410237[_0xf326('0x2e')];_0x201d28[_0xf326('0x2f')]=_0x410237['dialOriginateCallerIdName'];_0x201d28[_0xf326('0x30')]=_0x410237[_0xf326('0x30')];_0x201d28[_0xf326('0x31')]=_0x410237['dialOriginateTimeout'];_0x201d28[_0xf326('0x32')]=_0x410237[_0xf326('0x32')];_0x201d28[_0xf326('0x33')]=_0x410237['temp'];_0x201d28['outboundAnswerAgiCallsDay']=_0x410237[_0xf326('0x34')];_0x201d28[_0xf326('0x35')]=_0x410237[_0xf326('0x35')];_0x201d28[_0xf326('0x36')]=_0x410237[_0xf326('0x36')];_0x201d28[_0xf326('0x37')]=_0x410237[_0xf326('0x37')];_0x201d28[_0xf326('0x38')]=_0x410237['outboundCongestionCallsDay'];_0x201d28[_0xf326('0x39')]=_0x410237[_0xf326('0x39')];_0x201d28['outboundDropCallsDayCallersExit']=_0x410237[_0xf326('0x3a')];_0x201d28['outboundDropCallsDayTimeout']=_0x410237[_0xf326('0x3b')];_0x201d28['outboundNoAnswerCallsDay']=_0x410237['outboundNoAnswerCallsDay'];_0x201d28[_0xf326('0x3c')]=_0x410237['outboundNoSuchCallsDay'];_0x201d28[_0xf326('0x3d')]=_0x410237['outboundOriginateFailureCallsDay'];_0x201d28[_0xf326('0x3e')]=_0x410237[_0xf326('0x3e')];_0x201d28[_0xf326('0x3f')]=_0x410237['outboundRejectCallsDay'];_0x201d28[_0xf326('0x40')]=_0x410237[_0xf326('0x40')];_0x201d28['predictiveIntervalAnsweredCalls']=_0x410237[_0xf326('0x41')];_0x201d28[_0xf326('0x42')]=_0x410237[_0xf326('0x42')];_0x201d28[_0xf326('0x43')]=_0x410237['predictiveIntervalAvgTalktime'];_0x201d28[_0xf326('0x44')]=_0x410237[_0xf326('0x44')];_0x201d28[_0xf326('0x45')]=_0x410237[_0xf326('0x45')];_0x201d28[_0xf326('0x46')]=_0x410237['predictiveIntervalErlangCalls'];_0x201d28[_0xf326('0x47')]=_0x410237[_0xf326('0x47')];_0x201d28['predictiveIntervalHitRate']=_0x410237['predictiveIntervalHitRate'];_0x201d28[_0xf326('0x48')]=_0x410237['predictiveIntervalMultiplicativeFactor'];_0x201d28['predictiveIntervalPauses']=_0x410237[_0xf326('0x49')];_0x201d28['predictiveIntervalAvailable']=_0x410237[_0xf326('0x4a')];_0x201d28[_0xf326('0x4b')]=_0x410237[_0xf326('0x4b')];_0x201d28[_0xf326('0x1b')]=_0x410237['message'];_0x201d28[_0xf326('0x4c')]=_0x410237[_0xf326('0x4c')];_0x201d28[_0xf326('0x4d')]=_0x410237[_0xf326('0x4d')];_0x201d28[_0xf326('0x4e')]=_0x410237[_0xf326('0x4e')];_0x201d28[_0xf326('0x4f')]=_0x410237[_0xf326('0x4f')];_0x201d28[_0xf326('0x50')]=_0x410237[_0xf326('0x50')];_0x201d28[_0xf326('0x51')]=_0x410237[_0xf326('0x51')];_0x201d28['startProgressive']=_0x410237[_0xf326('0x52')];}if(_0x410237[_0xf326('0x53')]){_0x201d28[_0xf326('0x53')]={'id':_0x410237[_0xf326('0x53')]['id'],'name':_0x410237[_0xf326('0x53')][_0xf326('0xa')],'active':_0x410237['Trunk'][_0xf326('0x54')],'callerid':_0x410237[_0xf326('0x53')]['callerid']};}if(_0x410237[_0xf326('0x55')]){_0x201d28[_0xf326('0x55')]={'id':_0x410237[_0xf326('0x55')]['id'],'name':_0x410237[_0xf326('0x55')][_0xf326('0xa')]};}_0x520d85['push'](_0x201d28);}}_0x55b9f4({'count':_0x520d85['length'],'rows':_0x520d85});});},'UpdateVoiceQueue':function(_0x184a74){return new Promise(function(_0x44e101,_0x5ed62e){var _0x4bd865=_[_0xf326('0x56')](_0xf1c243[_0xf326('0x20')],{'id':parseInt(_0x184a74['id'])});var _0x21c98e=_['omit'](_0x184a74,['id']);if(_0x4bd865){for(var _0x301e65 in _0x21c98e){if(typeof _0x21c98e[_0x301e65]!==_0xf326('0x57')&&typeof _0x4bd865[_0x301e65]!==_0xf326('0x57')){_0x4bd865[_0x301e65]=_0x21c98e[_0x301e65];}}_0x44e101(_0x4bd865);}else{_0x5ed62e();}});},'VoiceChannels':function(_0xc43507){return new Promise(function(_0xc99be,_0x2d9bba){var _0x12792c=_[_0xf326('0x58')](_0xf1c243[_0xf326('0x59')]);_0xc99be({'count':_0x12792c[_0xf326('0x5a')],'rows':_0x12792c});});},'VoiceChannelMixMonitor':function(_0x1c76c8){var _0xa1ba7a=this;return new Promise(function(_0x1beef7,_0x395b1e){if(ami[_0xf326('0x11')]()==![]){return _0x395b1e(_0xa1ba7a['error'](0x1f4,[config[_0xf326('0x12')]['ip'],config[_0xf326('0x12')][_0xf326('0x5b')],_0xf326('0x13')]['join']('\x20')));}var _0x10f437=schema(properties[_0xf326('0x5c')])[_0xf326('0x1')](_0x1c76c8);if(_0x10f437[_0xf326('0x5a')]>0x0){return _0x395b1e(_0xa1ba7a['error'](0x1f4,_[_0xf326('0x5d')](_0x10f437,_0xf326('0x1b'))[_0xf326('0x14')](',\x20')));}var _0x451ac7=_[_0xf326('0x56')](_0xf1c243['channels'],{'uniqueid':_0x1c76c8['uniqueid']});if(_0x451ac7&&_0x451ac7[_0xf326('0x5e')]){var _0x38ff64=util[_0xf326('0x5f')]('%s.%s',_0x1c76c8[_0xf326('0x60')]||_0x1c76c8[_0xf326('0x61')],_0x1c76c8[_0xf326('0x5f')]||'wav');return ami['Action']({'action':_0xf326('0x62'),'channel':_0x451ac7['channel'],'file':_0x38ff64,'options':_0xf326('0x63')})['then'](function(_0x458e5f){var _0x7ee57=_[_0xf326('0x56')](_0x451ac7[_0xf326('0x64')],{'filename':_0xf326('0x65')+_0x38ff64[_0xf326('0x66')]()});if(_[_0xf326('0x67')](_0x7ee57)){_0x451ac7['monitors'][_0xf326('0x68')]({'filename':_0xf326('0x65')+_0x38ff64[_0xf326('0x66')](),'createdAt':moment()['format'](_0xf326('0x69')),'mixmonitorid':_0x458e5f[_0xf326('0x6a')],'status':_0xf326('0x6b')});}else{_0x7ee57[_0xf326('0x6a')]=_0x458e5f[_0xf326('0x6a')];_0x7ee57['status']=_0xf326('0x6b');}_0x1beef7({'code':0xc8,'message':[_0x1c76c8[_0xf326('0x61')],_0xf326('0x6c'),_0x458e5f[_0xf326('0x6a')]]['join']('\x20'),'mixmonitorid':_0x458e5f[_0xf326('0x6a')]});})[_0xf326('0x1c')](function(_0x227850){_0x395b1e(_0xa1ba7a[_0xf326('0x1d')](0x1f5,[_0x1c76c8['uniqueid'],_0x227850['message'][_0xf326('0x66')]()][_0xf326('0x14')]('\x20')));});}else{return _0x395b1e(_0xa1ba7a['error'](0x1f5,_0xf326('0x6d')));}});},'VoiceChannelStopMixMonitor':function(_0x29de71){var _0x316609=this;return new Promise(function(_0x1258d1,_0x5765b0){if(ami[_0xf326('0x11')]()==![]){return _0x5765b0(_0x316609['error'](0x1f4,[config['asterisk']['ip'],config[_0xf326('0x12')]['username'],_0xf326('0x13')][_0xf326('0x14')]('\x20')));}var _0x2ceb57=schema(properties['voicechannel'])['validate'](_0x29de71);if(_0x2ceb57[_0xf326('0x5a')]>0x0){return _0x5765b0(_0x316609[_0xf326('0x1d')](0x1f4,_[_0xf326('0x5d')](_0x2ceb57,'message')[_0xf326('0x14')](',\x20')));}var _0x487020=_[_0xf326('0x56')](_0xf1c243[_0xf326('0x59')],{'uniqueid':_0x29de71[_0xf326('0x61')]});if(_0x487020){return BPromise[_0xf326('0x6e')]()[_0xf326('0x6f')](function(){if(_0x487020[_0xf326('0x5e')]){return ami[_0xf326('0x1a')]({'action':_0xf326('0x70'),'channel':_0x487020[_0xf326('0x5e')],'mixmonitorid':_0x29de71[_0xf326('0x6a')]})[_0xf326('0x1c')](function(_0x1e56fb){});}})[_0xf326('0x6f')](function(){if(_0x487020['destinationchannel']){return ami[_0xf326('0x1a')]({'action':'StopMixMonitor','channel':_0x487020[_0xf326('0x71')],'mixmonitorid':_0x29de71[_0xf326('0x6a')]})['catch'](function(_0x2b770c){});}})['then'](function(_0x3255b2){var _0xd55246=_[_0xf326('0x56')](_0x487020[_0xf326('0x64')],{'mixmonitorid':_0x29de71[_0xf326('0x6a')]});if(_0xd55246){_0xd55246['status']='stop';}})[_0xf326('0x6f')](function(){var _0x32fe3a=util[_0xf326('0x5f')](_0xf326('0x72'),_0x29de71[_0xf326('0x60')]||_0x29de71['uniqueid'],_0x29de71[_0xf326('0x5f')]||_0xf326('0x73'));var _0x4aadc9=_['find'](_0x487020['monitors'],{'filename':_0xf326('0x65')+_0x32fe3a[_0xf326('0x66')]()});if(_0x4aadc9){_0x4aadc9[_0xf326('0x74')]=_0xf326('0x75');}})[_0xf326('0x6f')](function(){_0x1258d1({'code':0xc8,'message':[_0x29de71[_0xf326('0x61')],_0xf326('0x76')]['join']('\x20')});})[_0xf326('0x1c')](function(_0x588d26){_0x5765b0(_0x316609[_0xf326('0x1d')](0x1f5,[_0x29de71[_0xf326('0x61')],_0x588d26['message'][_0xf326('0x66')]()]['join']('\x20')));});}else{return _0x5765b0(_0x316609['error'](0x1f5,_0xf326('0x6d')));}});},'VoiceQueuesChannels':function(_0x540fa0){return new Promise(function(_0x78ba34,_0x3411a4){var _0x461059=_[_0xf326('0x58')](_0xf1c243[_0xf326('0x77')]);_0x78ba34({'count':_0x461059['length'],'rows':_0x461059});});},'VoiceQueuesChannel':function(_0x4a053c){var _0x48d84a=this;return new Promise(function(_0xeeea57,_0x307441){var _0x229a34=schema(properties[_0xf326('0x78')])[_0xf326('0x1')](_0x4a053c);if(_0x229a34['length']>0x0){return _0x307441(_0x48d84a[_0xf326('0x1d')](0x1f4,_[_0xf326('0x5d')](_0x229a34,_0xf326('0x1b'))['join'](',\x20')));}var _0x567492=_[_0xf326('0x56')](_0xf1c243[_0xf326('0x77')],{'uniqueid':_0x4a053c['uniqueid']});if(_0x567492){_0xeeea57(_0x567492);}else{return _0x307441(_0x48d84a['error'](0x1f5,_0xf326('0x6d')));}});},'VoiceQueuesChannelHangup':function(_0x5ba28d){var _0xc3a897=this;return new Promise(function(_0x4ae744,_0x5c390c){if(ami['isConnected']()==![]){return _0x5c390c(_0xc3a897[_0xf326('0x1d')](0x1f4,[config[_0xf326('0x12')]['ip'],config[_0xf326('0x12')]['username'],_0xf326('0x13')][_0xf326('0x14')]('\x20')));}var _0x35e34d=schema(properties[_0xf326('0x79')])[_0xf326('0x1')](_0x5ba28d);if(_0x35e34d[_0xf326('0x5a')]>0x0){return _0x5c390c(_0xc3a897[_0xf326('0x1d')](0x1f4,_[_0xf326('0x5d')](_0x35e34d,_0xf326('0x1b'))['join'](',\x20')));}var _0x34c3cf=_['find'](_0xf1c243[_0xf326('0x77')],{'uniqueid':_0x5ba28d[_0xf326('0x61')]});if(_0x34c3cf&&_0x34c3cf[_0xf326('0x5e')]){return ami['Action']({'action':_0xf326('0x7a'),'channel':_0x34c3cf[_0xf326('0x5e')]})[_0xf326('0x6f')](function(_0x4dc8d7){_0x4ae744({'code':0xc8,'message':[_0x5ba28d[_0xf326('0x61')],_0x4dc8d7[_0xf326('0x1b')][_0xf326('0x66')]()][_0xf326('0x14')]('\x20')});})['catch'](function(_0x3addac){_0x5c390c(_0xc3a897['error'](0x1f5,[_0x5ba28d['uniqueid'],_0x3addac[_0xf326('0x1b')][_0xf326('0x66')]()]['join']('\x20')));});}else{return _0x5c390c(_0xc3a897['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x2bd990){var _0x543689=this;return new Promise(function(_0x102d03,_0x37a564){if(ami[_0xf326('0x11')]()==![]){return _0x37a564(_0x543689[_0xf326('0x1d')](0x1f4,[config[_0xf326('0x12')]['ip'],config[_0xf326('0x12')]['username'],_0xf326('0x13')][_0xf326('0x14')]('\x20')));}var _0x5f1724=schema(properties['voicequeuechannelredirect'])[_0xf326('0x1')](_0x2bd990);if(_0x5f1724['length']>0x0){return _0x37a564(_0x543689[_0xf326('0x1d')](0x1f4,_[_0xf326('0x5d')](_0x5f1724,_0xf326('0x1b'))[_0xf326('0x14')](',\x20')));}var _0x19d676=_[_0xf326('0x56')](_0xf1c243[_0xf326('0x77')],{'uniqueid':_0x2bd990[_0xf326('0x61')]});if(_0x19d676&&_0x19d676[_0xf326('0x5e')]){return ami['Action']({'action':_0xf326('0x7b'),'channel':_0x19d676[_0xf326('0x5e')],'exten':_0x2bd990['exten'],'context':_0x2bd990[_0xf326('0x7c')]||_0x19d676['context'],'priority':0x1})[_0xf326('0x6f')](function(_0x34fe36){_0x102d03({'code':0xc8,'message':[_0x2bd990[_0xf326('0x61')],_0x34fe36['message'][_0xf326('0x66')]()][_0xf326('0x14')]('\x20')});})[_0xf326('0x1c')](function(_0x1de866){_0x37a564(_0x543689[_0xf326('0x1d')](0x1f5,[_0x2bd990[_0xf326('0x61')],_0x1de866[_0xf326('0x1b')][_0xf326('0x66')]()][_0xf326('0x14')]('\x20')));});}else{return _0x37a564(_0x543689[_0xf326('0x1d')](0x1f5,_0xf326('0x6d')));}});},'Agents':function(_0x32b2ea){return new Promise(function(_0x452e28,_0x3abcff){var _0x1f990d=_['values'](_0xf1c243[_0xf326('0xe')]);_0x452e28({'count':_0x1f990d[_0xf326('0x5a')],'rows':_0x1f990d});});},'Telephones':function(_0x4829ae){return new Promise(function(_0x438daa,_0x424be4){var _0x5c1686=_[_0xf326('0x58')](_0xf1c243[_0xf326('0x7d')]);_0x438daa({'count':_0x5c1686[_0xf326('0x5a')],'rows':_0x5c1686});});},'Trunks':function(_0x8dbd96){return new Promise(function(_0x2ab607,_0x35c228){var _0x1bb7cc=_['values'](_0xf1c243[_0xf326('0x7e')]);_0x2ab607({'count':_0x1bb7cc[_0xf326('0x5a')],'rows':_0x1bb7cc});});},'OutboundChannels':function(_0x323fb1){return new Promise(function(_0x3c33d1,_0x316c8e){var _0x1d50e2=_[_0xf326('0x58')](_0xf1c243[_0xf326('0x7f')]);_0x3c33d1({'count':_0x1d50e2['length'],'rows':_0x1d50e2});});},'Outbound':function(_0xa8e05b){return new Promise(function(_0x2e2103,_0x49c3da){_0x2e2103(_0xf1c243[_0xf326('0x2c')]);});},'Campaigns':function(_0x4b2295){return new Promise(function(_0x2be05a,_0x24a08e){var _0x16bc97=_[_0xf326('0x58')](_0xf1c243[_0xf326('0x80')]);_0x2be05a({'count':_0x16bc97[_0xf326('0x5a')],'rows':_0x16bc97});});},'VoiceQueuesPreview':function(_0xf66b70){var _0x1eb29d=this;return new Promise(function(_0x3afd5e,_0x13e03b){_0x1b5a56[_0xf326('0x81')](_0xf66b70['id'])[_0xf326('0x6f')](function(_0x3d0c8b){_0x3afd5e({'code':0xc8,'message':_0x3d0c8b[_0xf326('0x1b')]});})['catch'](function(_0x2bb6f0){_0x13e03b(_0x1eb29d[_0xf326('0x1d')](0x1f4,_0x2bb6f0[_0xf326('0x1b')]));});});},'EventManager':function(_0x3d3bd4){var _0xdb2ad8=this;return new Promise(function(_0x550f34,_0x1ec128){if(!_0x3d3bd4[_0xf326('0x82')]){return _0x1ec128(_0xdb2ad8[_0xf326('0x1d')](0x1f4,_0xf326('0x83')));}ami[_0xf326('0x84')]('custom:'+_0x3d3bd4['event'],_0x3d3bd4[_0xf326('0x1b')]);_0x550f34({'code':0xc8,'message':_0x3d3bd4});});},'FaxAccounts':function(_0x47c347){return new Promise(function(_0xedbcf2,_0x143965){var _0x29610a=_['values'](_0xf1c243['faxAccounts']);_0xedbcf2({'count':_0x29610a[_0xf326('0x5a')],'rows':_0x29610a});});},'SendFax':function(_0x2d92e4){var _0x167ac9=this;return new Promise(function(_0x34870c,_0x40230c){_0x3ace29['send'](_0x2d92e4)[_0xf326('0x6f')](function(_0x428eae){_0x34870c({'code':0xc8,'message':_0x428eae[_0xf326('0x1b')]});})['catch'](function(_0x4cc620){_0x40230c(_0x167ac9['error'](0x1f4,_0x4cc620[_0xf326('0x1b')]));});});},'CheckAfterSend':function(_0x17c96c){var _0x2d275d=this;return new Promise(function(_0x30922e,_0x58ef98){_0x3ace29[_0xf326('0x85')](_0x17c96c)[_0xf326('0x6f')](function(_0x598a93){_0x30922e({'code':0xc8,'message':_0x598a93['message']});})[_0xf326('0x1c')](function(_0x228c81){_0x58ef98(_0x2d275d[_0xf326('0x1d')](0x1f4,_0x228c81['message']));});});}};var _0xd85b34=jayson[_0xf326('0x86')](_0x3851eb)[_0xf326('0x87')]();_0xd85b34['on']('error',function(_0x39d16d){return _0x3c254d(_0x39d16d);});_0xd85b34[_0xf326('0x7')](0x232a,_0xf326('0x88'),function(){console[_0xf326('0x89')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x4c2249('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0xa23f=['isConnected','error','asterisk','username','ami\x20disconnected','join','pick','module','action','Reload','Action','then','command','content','message','voiceQueues','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','callerid','Interval','length','find','omit','undefined','values','channels','validate','map','uniqueid','channel','%s.%s','filename','wav','MixMonitor','monitors','/var/spool/asterisk/monitor/','isNil','push','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','MixMonitor\x20Success','toLowerCase','Channel\x20doesn\x27t\x20exist','resolve','destinationchannel','StopMixMonitor','catch','stop','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','campaigns','run','custom:','event','faxAccounts','send','checkAfterSend','server','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','bluebird','moment','../../../config/environment','../properties','listen','format','%s/%s','SIP','timers','timer','updateAcw','agents','pause','QueuePause'];(function(_0x1a7924,_0x2fa6b1){var _0x8dc793=function(_0xc9968f){while(--_0xc9968f){_0x1a7924['push'](_0x1a7924['shift']());}};_0x8dc793(++_0x2fa6b1);}(_0xa23f,0x7c));var _0xfa23=function(_0xe408cf,_0x49d7f8){_0xe408cf=_0xe408cf-0x0;var _0xe42d57=_0xa23f[_0xe408cf];return _0xe42d57;};'use strict';var _=require(_0xfa23('0x0'));var util=require(_0xfa23('0x1'));var jayson=require('jayson/promise');var schema=require('validate');var BPromise=require(_0xfa23('0x2'));var moment=require(_0xfa23('0x3'));var config=require(_0xfa23('0x4'));var properties=require(_0xfa23('0x5'));var ami=require('../ami');exports[_0xfa23('0x6')]=function(_0x53d8c8,_0x210057,_0x2df2f5){return new BPromise(function(_0x4c3f4,_0x3696ef){var _0x4fb6e6={'QueuePause':function(_0x5a7882){return new Promise(function(_0x59d53e,_0x19a1ac){var _0x4066a2=util[_0xfa23('0x7')](_0xfa23('0x8'),_0xfa23('0x9'),_0x5a7882['name']);if(_0x53d8c8['timers']&&_0x53d8c8[_0xfa23('0xa')][_0x4066a2]&&_0x53d8c8['timers'][_0x4066a2][_0xfa23('0xb')]){_0x53d8c8['timers'][_0x4066a2][_0xfa23('0xc')]();}if(_0x53d8c8[_0xfa23('0xd')][_0x4066a2]){_0x53d8c8[_0xfa23('0xd')][_0x4066a2]['updateStatusRealtime']({'statePause':_0x5a7882[_0xfa23('0xe')]?!![]:![]});}_0x59d53e({'code':0xc8,'message':_0xfa23('0xf')});});},'Reload':function(_0x46f991){var _0x5ea9ca=this;return new Promise(function(_0x56f927,_0x17e782){if(ami[_0xfa23('0x10')]()==![]){return _0x17e782(_0x5ea9ca[_0xfa23('0x11')](0x1f4,[config[_0xfa23('0x12')]['ip'],config['asterisk'][_0xfa23('0x13')],_0xfa23('0x14')][_0xfa23('0x15')]('\x20')));}_0x46f991=_[_0xfa23('0x16')](_0x46f991,_['keys'](properties[_0xfa23('0x17')]));_0x46f991[_0xfa23('0x18')]=_0xfa23('0x19');return ami[_0xfa23('0x1a')](_0x46f991)[_0xfa23('0x1b')](function(_0x4e5b77){_0x56f927({'code':0xc8,'message':_0x4e5b77['message']});})['catch'](function(_0x445bd0){_0x17e782(_0x5ea9ca[_0xfa23('0x11')](0x1f5,_0x445bd0['message']));});});},'Command':function(_0x9effe6){var _0x2c456b=this;return new Promise(function(_0x1eb87e,_0x54bb04){if(ami[_0xfa23('0x10')]()==![]){return _0x54bb04(_0x2c456b[_0xfa23('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xfa23('0x12')][_0xfa23('0x13')],_0xfa23('0x14')][_0xfa23('0x15')]('\x20')));}_0x9effe6=_[_0xfa23('0x16')](_0x9effe6,_0xfa23('0x1c'));_0x9effe6[_0xfa23('0x18')]='Command';return ami[_0xfa23('0x1a')](_0x9effe6)[_0xfa23('0x1b')](function(_0x34a2ce){_0x1eb87e({'code':0xc8,'message':_0x34a2ce[_0xfa23('0x1d')]});})['catch'](function(_0x4500a2){_0x54bb04(_0x2c456b['error'](0x1f5,_0x4500a2[_0xfa23('0x1e')]));});});},'VoiceQueues':function(_0x1abb42){return new Promise(function(_0x2481e9,_0x26bdce){var _0x3362f3=[];for(var _0x1340d9 in _0x53d8c8[_0xfa23('0x1f')]){if(_0x53d8c8[_0xfa23('0x1f')]['hasOwnProperty'](_0x1340d9)){var _0x2ae826=_0x53d8c8['voiceQueues'][_0x1340d9];var _0x1ae38a={'id':_0x2ae826['id'],'name':_0x2ae826['name'],'strategy':_0x2ae826['strategy'],'answered':_0x2ae826[_0xfa23('0x20')],'available':_0x2ae826[_0xfa23('0x21')],'loggedIn':_0x2ae826[_0xfa23('0x22')],'pTalking':_0x2ae826[_0xfa23('0x23')],'sumBillable':_0x2ae826[_0xfa23('0x24')],'sumDuration':_0x2ae826[_0xfa23('0x25')],'sumHoldTime':_0x2ae826[_0xfa23('0x26')]||0x0,'talking':_0x2ae826['talking'],'total':_0x2ae826[_0xfa23('0x27')],'type':_0x2ae826['type'],'unmanaged':_0x2ae826[_0xfa23('0x28')],'abandoned':_0x2ae826[_0xfa23('0x29')],'waiting':_0x2ae826['waiting'],'loggedInDb':_0x2ae826[_0xfa23('0x2a')]};if(_0x2ae826[_0xfa23('0x2b')]===_0xfa23('0x2c')){_0x1ae38a[_0xfa23('0x2d')]=_0x2ae826[_0xfa23('0x2d')];_0x1ae38a[_0xfa23('0x2e')]=_0x2ae826[_0xfa23('0x2e')];_0x1ae38a[_0xfa23('0x2f')]=_0x2ae826[_0xfa23('0x2f')];_0x1ae38a['dialOriginateCallerIdNumber']=_0x2ae826[_0xfa23('0x30')];_0x1ae38a['dialOriginateTimeout']=_0x2ae826[_0xfa23('0x31')];_0x1ae38a[_0xfa23('0x32')]=_0x2ae826[_0xfa23('0x32')];_0x1ae38a[_0xfa23('0x33')]=_0x2ae826[_0xfa23('0x33')];_0x1ae38a[_0xfa23('0x34')]=_0x2ae826[_0xfa23('0x34')];_0x1ae38a[_0xfa23('0x35')]=_0x2ae826[_0xfa23('0x35')];_0x1ae38a['outboundBlacklistCallsDay']=_0x2ae826[_0xfa23('0x36')];_0x1ae38a['outboundBusyCallsDay']=_0x2ae826[_0xfa23('0x37')];_0x1ae38a[_0xfa23('0x38')]=_0x2ae826[_0xfa23('0x38')];_0x1ae38a[_0xfa23('0x39')]=_0x2ae826[_0xfa23('0x39')];_0x1ae38a[_0xfa23('0x3a')]=_0x2ae826[_0xfa23('0x3a')];_0x1ae38a['outboundDropCallsDayTimeout']=_0x2ae826[_0xfa23('0x3b')];_0x1ae38a[_0xfa23('0x3c')]=_0x2ae826[_0xfa23('0x3c')];_0x1ae38a[_0xfa23('0x3d')]=_0x2ae826['outboundNoSuchCallsDay'];_0x1ae38a['outboundOriginateFailureCallsDay']=_0x2ae826['outboundOriginateFailureCallsDay'];_0x1ae38a[_0xfa23('0x3e')]=_0x2ae826[_0xfa23('0x3e')];_0x1ae38a['outboundRejectCallsDay']=_0x2ae826[_0xfa23('0x3f')];_0x1ae38a[_0xfa23('0x40')]=_0x2ae826[_0xfa23('0x40')];_0x1ae38a['predictiveIntervalAnsweredCalls']=_0x2ae826[_0xfa23('0x41')];_0x1ae38a['predictiveIntervalAvgHoldtime']=_0x2ae826[_0xfa23('0x42')];_0x1ae38a[_0xfa23('0x43')]=_0x2ae826[_0xfa23('0x43')];_0x1ae38a[_0xfa23('0x44')]=_0x2ae826[_0xfa23('0x44')];_0x1ae38a[_0xfa23('0x45')]=_0x2ae826['predictiveIntervalDroppedCallsTimeout'];_0x1ae38a[_0xfa23('0x46')]=_0x2ae826[_0xfa23('0x46')];_0x1ae38a[_0xfa23('0x47')]=_0x2ae826[_0xfa23('0x47')];_0x1ae38a['predictiveIntervalHitRate']=_0x2ae826[_0xfa23('0x48')];_0x1ae38a[_0xfa23('0x49')]=_0x2ae826[_0xfa23('0x49')];_0x1ae38a[_0xfa23('0x4a')]=_0x2ae826[_0xfa23('0x4a')];_0x1ae38a[_0xfa23('0x4b')]=_0x2ae826['predictiveIntervalAvailable'];_0x1ae38a[_0xfa23('0x4c')]=_0x2ae826['predictiveIntervalTotalCalls'];_0x1ae38a['message']=_0x2ae826[_0xfa23('0x1e')];_0x1ae38a[_0xfa23('0x4d')]=_0x2ae826['originated'];_0x1ae38a[_0xfa23('0x4e')]=_0x2ae826[_0xfa23('0x4e')];_0x1ae38a[_0xfa23('0x4f')]=_0x2ae826['erlangCallToSecond'];_0x1ae38a[_0xfa23('0x50')]=_0x2ae826[_0xfa23('0x50')];_0x1ae38a[_0xfa23('0x51')]=_0x2ae826['erlangBusyFactor'];_0x1ae38a['startPredictive']=_0x2ae826[_0xfa23('0x52')];_0x1ae38a['startProgressive']=_0x2ae826[_0xfa23('0x53')];}if(_0x2ae826[_0xfa23('0x54')]){_0x1ae38a[_0xfa23('0x54')]={'id':_0x2ae826['Trunk']['id'],'name':_0x2ae826[_0xfa23('0x54')][_0xfa23('0x55')],'active':_0x2ae826[_0xfa23('0x54')][_0xfa23('0x56')],'callerid':_0x2ae826['Trunk'][_0xfa23('0x57')]};}if(_0x2ae826[_0xfa23('0x58')]){_0x1ae38a[_0xfa23('0x58')]={'id':_0x2ae826['Interval']['id'],'name':_0x2ae826['Interval'][_0xfa23('0x55')]};}_0x3362f3['push'](_0x1ae38a);}}_0x2481e9({'count':_0x3362f3[_0xfa23('0x59')],'rows':_0x3362f3});});},'UpdateVoiceQueue':function(_0x3bddca){return new Promise(function(_0x12b986,_0xf8b228){var _0x2fbf18=_[_0xfa23('0x5a')](_0x53d8c8['voiceQueues'],{'id':parseInt(_0x3bddca['id'])});var _0xd2345d=_[_0xfa23('0x5b')](_0x3bddca,['id']);if(_0x2fbf18){for(var _0x36a795 in _0xd2345d){if(typeof _0xd2345d[_0x36a795]!==_0xfa23('0x5c')&&typeof _0x2fbf18[_0x36a795]!==_0xfa23('0x5c')){_0x2fbf18[_0x36a795]=_0xd2345d[_0x36a795];}}_0x12b986(_0x2fbf18);}else{_0xf8b228();}});},'VoiceChannels':function(_0xf8b8c7){return new Promise(function(_0x4aba2a,_0x9e8cb6){var _0x36a02c=_[_0xfa23('0x5d')](_0x53d8c8[_0xfa23('0x5e')]);_0x4aba2a({'count':_0x36a02c[_0xfa23('0x59')],'rows':_0x36a02c});});},'VoiceChannelMixMonitor':function(_0x4bfe28){var _0x1fbdff=this;return new Promise(function(_0x213fcd,_0x18afb9){if(ami['isConnected']()==![]){return _0x18afb9(_0x1fbdff[_0xfa23('0x11')](0x1f4,[config[_0xfa23('0x12')]['ip'],config[_0xfa23('0x12')][_0xfa23('0x13')],_0xfa23('0x14')][_0xfa23('0x15')]('\x20')));}var _0x709755=schema(properties['voicechannel'])[_0xfa23('0x5f')](_0x4bfe28);if(_0x709755['length']>0x0){return _0x18afb9(_0x1fbdff[_0xfa23('0x11')](0x1f4,_[_0xfa23('0x60')](_0x709755,_0xfa23('0x1e'))[_0xfa23('0x15')](',\x20')));}var _0x12a984=_[_0xfa23('0x5a')](_0x53d8c8['channels'],{'uniqueid':_0x4bfe28[_0xfa23('0x61')]});if(_0x12a984&&_0x12a984[_0xfa23('0x62')]){var _0x2ec20b=util[_0xfa23('0x7')](_0xfa23('0x63'),_0x4bfe28[_0xfa23('0x64')]||_0x4bfe28[_0xfa23('0x61')],_0x4bfe28['format']||_0xfa23('0x65'));return ami[_0xfa23('0x1a')]({'action':_0xfa23('0x66'),'channel':_0x12a984[_0xfa23('0x62')],'file':_0x2ec20b,'options':'ai(mixmonitorid)'})[_0xfa23('0x1b')](function(_0x9bf852){var _0xe6cf80=_[_0xfa23('0x5a')](_0x12a984[_0xfa23('0x67')],{'filename':_0xfa23('0x68')+_0x2ec20b['toLowerCase']()});if(_[_0xfa23('0x69')](_0xe6cf80)){_0x12a984['monitors'][_0xfa23('0x6a')]({'filename':_0xfa23('0x68')+_0x2ec20b['toLowerCase'](),'createdAt':moment()[_0xfa23('0x7')](_0xfa23('0x6b')),'mixmonitorid':_0x9bf852['mixmonitorid'],'status':_0xfa23('0x6c')});}else{_0xe6cf80[_0xfa23('0x6d')]=_0x9bf852['mixmonitorid'];_0xe6cf80[_0xfa23('0x6e')]=_0xfa23('0x6c');}_0x213fcd({'code':0xc8,'message':[_0x4bfe28[_0xfa23('0x61')],_0xfa23('0x6f'),_0x9bf852['mixmonitorid']][_0xfa23('0x15')]('\x20'),'mixmonitorid':_0x9bf852[_0xfa23('0x6d')]});})['catch'](function(_0x2d1c75){_0x18afb9(_0x1fbdff[_0xfa23('0x11')](0x1f5,[_0x4bfe28[_0xfa23('0x61')],_0x2d1c75[_0xfa23('0x1e')][_0xfa23('0x70')]()][_0xfa23('0x15')]('\x20')));});}else{return _0x18afb9(_0x1fbdff['error'](0x1f5,_0xfa23('0x71')));}});},'VoiceChannelStopMixMonitor':function(_0x3a7fcb){var _0x10eb86=this;return new Promise(function(_0x5d479e,_0x125c46){if(ami[_0xfa23('0x10')]()==![]){return _0x125c46(_0x10eb86[_0xfa23('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xfa23('0x12')][_0xfa23('0x13')],_0xfa23('0x14')][_0xfa23('0x15')]('\x20')));}var _0x378d29=schema(properties['voicechannel'])['validate'](_0x3a7fcb);if(_0x378d29[_0xfa23('0x59')]>0x0){return _0x125c46(_0x10eb86[_0xfa23('0x11')](0x1f4,_[_0xfa23('0x60')](_0x378d29,_0xfa23('0x1e'))['join'](',\x20')));}var _0x5275d6=_[_0xfa23('0x5a')](_0x53d8c8[_0xfa23('0x5e')],{'uniqueid':_0x3a7fcb[_0xfa23('0x61')]});if(_0x5275d6){return BPromise[_0xfa23('0x72')]()['then'](function(){if(_0x5275d6[_0xfa23('0x62')]){return ami[_0xfa23('0x1a')]({'action':'StopMixMonitor','channel':_0x5275d6[_0xfa23('0x62')],'mixmonitorid':_0x3a7fcb[_0xfa23('0x6d')]})['catch'](function(_0x13af06){});}})[_0xfa23('0x1b')](function(){if(_0x5275d6[_0xfa23('0x73')]){return ami[_0xfa23('0x1a')]({'action':_0xfa23('0x74'),'channel':_0x5275d6[_0xfa23('0x73')],'mixmonitorid':_0x3a7fcb['mixmonitorid']})[_0xfa23('0x75')](function(_0x591953){});}})[_0xfa23('0x1b')](function(_0x263f8c){var _0x192d28=_[_0xfa23('0x5a')](_0x5275d6[_0xfa23('0x67')],{'mixmonitorid':_0x3a7fcb[_0xfa23('0x6d')]});if(_0x192d28){_0x192d28[_0xfa23('0x6e')]=_0xfa23('0x76');}})[_0xfa23('0x1b')](function(){var _0x4e05f0=util[_0xfa23('0x7')]('%s.%s',_0x3a7fcb[_0xfa23('0x64')]||_0x3a7fcb[_0xfa23('0x61')],_0x3a7fcb['format']||'wav');var _0x3f6070=_['find'](_0x5275d6[_0xfa23('0x67')],{'filename':_0xfa23('0x68')+_0x4e05f0[_0xfa23('0x70')]()});if(_0x3f6070){_0x3f6070[_0xfa23('0x6e')]=_0xfa23('0x76');}})[_0xfa23('0x1b')](function(){_0x5d479e({'code':0xc8,'message':[_0x3a7fcb[_0xfa23('0x61')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0xfa23('0x75')](function(_0x1e540d){_0x125c46(_0x10eb86[_0xfa23('0x11')](0x1f5,[_0x3a7fcb[_0xfa23('0x61')],_0x1e540d['message'][_0xfa23('0x70')]()]['join']('\x20')));});}else{return _0x125c46(_0x10eb86[_0xfa23('0x11')](0x1f5,_0xfa23('0x71')));}});},'VoiceQueuesChannels':function(_0x20c757){return new Promise(function(_0x279d86,_0x74a9aa){var _0x3bf459=_[_0xfa23('0x5d')](_0x53d8c8[_0xfa23('0x77')]);_0x279d86({'count':_0x3bf459[_0xfa23('0x59')],'rows':_0x3bf459});});},'VoiceQueuesChannel':function(_0x4130cf){var _0x5c3a1e=this;return new Promise(function(_0x5b1337,_0x146e12){var _0x53fac6=schema(properties[_0xfa23('0x78')])['validate'](_0x4130cf);if(_0x53fac6[_0xfa23('0x59')]>0x0){return _0x146e12(_0x5c3a1e[_0xfa23('0x11')](0x1f4,_['map'](_0x53fac6,_0xfa23('0x1e'))['join'](',\x20')));}var _0x4e0a93=_[_0xfa23('0x5a')](_0x53d8c8[_0xfa23('0x77')],{'uniqueid':_0x4130cf['uniqueid']});if(_0x4e0a93){_0x5b1337(_0x4e0a93);}else{return _0x146e12(_0x5c3a1e[_0xfa23('0x11')](0x1f5,_0xfa23('0x71')));}});},'VoiceQueuesChannelHangup':function(_0x2bd0f9){var _0x41287e=this;return new Promise(function(_0x3da38c,_0x1f359a){if(ami[_0xfa23('0x10')]()==![]){return _0x1f359a(_0x41287e['error'](0x1f4,[config[_0xfa23('0x12')]['ip'],config[_0xfa23('0x12')][_0xfa23('0x13')],_0xfa23('0x14')][_0xfa23('0x15')]('\x20')));}var _0x4c525f=schema(properties[_0xfa23('0x79')])['validate'](_0x2bd0f9);if(_0x4c525f['length']>0x0){return _0x1f359a(_0x41287e['error'](0x1f4,_[_0xfa23('0x60')](_0x4c525f,_0xfa23('0x1e'))[_0xfa23('0x15')](',\x20')));}var _0x4bdfee=_[_0xfa23('0x5a')](_0x53d8c8[_0xfa23('0x77')],{'uniqueid':_0x2bd0f9['uniqueid']});if(_0x4bdfee&&_0x4bdfee[_0xfa23('0x62')]){return ami[_0xfa23('0x1a')]({'action':_0xfa23('0x7a'),'channel':_0x4bdfee[_0xfa23('0x62')]})['then'](function(_0x5ef233){_0x3da38c({'code':0xc8,'message':[_0x2bd0f9[_0xfa23('0x61')],_0x5ef233['message'][_0xfa23('0x70')]()][_0xfa23('0x15')]('\x20')});})[_0xfa23('0x75')](function(_0x4a77e5){_0x1f359a(_0x41287e[_0xfa23('0x11')](0x1f5,[_0x2bd0f9[_0xfa23('0x61')],_0x4a77e5[_0xfa23('0x1e')][_0xfa23('0x70')]()][_0xfa23('0x15')]('\x20')));});}else{return _0x1f359a(_0x41287e[_0xfa23('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x1f2103){var _0x1f28a0=this;return new Promise(function(_0x37548a,_0x37d22c){if(ami[_0xfa23('0x10')]()==![]){return _0x37d22c(_0x1f28a0[_0xfa23('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xfa23('0x12')][_0xfa23('0x13')],'ami\x20disconnected'][_0xfa23('0x15')]('\x20')));}var _0x1f3286=schema(properties[_0xfa23('0x7b')])[_0xfa23('0x5f')](_0x1f2103);if(_0x1f3286[_0xfa23('0x59')]>0x0){return _0x37d22c(_0x1f28a0['error'](0x1f4,_[_0xfa23('0x60')](_0x1f3286,'message')['join'](',\x20')));}var _0x5e54bf=_['find'](_0x53d8c8[_0xfa23('0x77')],{'uniqueid':_0x1f2103['uniqueid']});if(_0x5e54bf&&_0x5e54bf[_0xfa23('0x62')]){return ami[_0xfa23('0x1a')]({'action':_0xfa23('0x7c'),'channel':_0x5e54bf[_0xfa23('0x62')],'exten':_0x1f2103[_0xfa23('0x7d')],'context':_0x1f2103[_0xfa23('0x7e')]||_0x5e54bf[_0xfa23('0x7e')],'priority':0x1})[_0xfa23('0x1b')](function(_0x53d266){_0x37548a({'code':0xc8,'message':[_0x1f2103[_0xfa23('0x61')],_0x53d266['message'][_0xfa23('0x70')]()][_0xfa23('0x15')]('\x20')});})['catch'](function(_0x2c4684){_0x37d22c(_0x1f28a0[_0xfa23('0x11')](0x1f5,[_0x1f2103['uniqueid'],_0x2c4684[_0xfa23('0x1e')]['toLowerCase']()][_0xfa23('0x15')]('\x20')));});}else{return _0x37d22c(_0x1f28a0['error'](0x1f5,_0xfa23('0x71')));}});},'Agents':function(_0x500dde){return new Promise(function(_0xea852,_0x249322){var _0x5751f5=_[_0xfa23('0x5d')](_0x53d8c8[_0xfa23('0xd')]);_0xea852({'count':_0x5751f5[_0xfa23('0x59')],'rows':_0x5751f5});});},'Telephones':function(_0x4c19d3){return new Promise(function(_0xf65690,_0x518e4d){var _0xfee428=_[_0xfa23('0x5d')](_0x53d8c8[_0xfa23('0x7f')]);_0xf65690({'count':_0xfee428[_0xfa23('0x59')],'rows':_0xfee428});});},'Trunks':function(_0x58f34e){return new Promise(function(_0x3e0a3e,_0x4aa9ba){var _0x30c836=_['values'](_0x53d8c8[_0xfa23('0x80')]);_0x3e0a3e({'count':_0x30c836[_0xfa23('0x59')],'rows':_0x30c836});});},'OutboundChannels':function(_0x70ba0f){return new Promise(function(_0x376b22,_0x3b5c4b){var _0x51e5fc=_[_0xfa23('0x5d')](_0x53d8c8['outboundChannels']);_0x376b22({'count':_0x51e5fc['length'],'rows':_0x51e5fc});});},'Outbound':function(_0x1bf189){return new Promise(function(_0x2c1e16,_0x37710e){_0x2c1e16(_0x53d8c8[_0xfa23('0x2c')]);});},'Campaigns':function(_0x49d168){return new Promise(function(_0x367701,_0x3ee296){var _0x1d300b=_[_0xfa23('0x5d')](_0x53d8c8[_0xfa23('0x81')]);_0x367701({'count':_0x1d300b[_0xfa23('0x59')],'rows':_0x1d300b});});},'VoiceQueuesPreview':function(_0x2bdc8e){var _0x331c65=this;return new Promise(function(_0x2afcf4,_0x1d657d){_0x210057[_0xfa23('0x82')](_0x2bdc8e['id'])[_0xfa23('0x1b')](function(_0x561942){_0x2afcf4({'code':0xc8,'message':_0x561942[_0xfa23('0x1e')]});})[_0xfa23('0x75')](function(_0x250869){_0x1d657d(_0x331c65[_0xfa23('0x11')](0x1f4,_0x250869[_0xfa23('0x1e')]));});});},'EventManager':function(_0x1cb225){var _0x43ea=this;return new Promise(function(_0x5a4ec3,_0x16ad12){if(!_0x1cb225['event']){return _0x16ad12(_0x43ea['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0xfa23('0x83')+_0x1cb225[_0xfa23('0x84')],_0x1cb225[_0xfa23('0x1e')]);_0x5a4ec3({'code':0xc8,'message':_0x1cb225});});},'FaxAccounts':function(_0x4da911){return new Promise(function(_0x413eff,_0x1d5f64){var _0x28ed8c=_[_0xfa23('0x5d')](_0x53d8c8[_0xfa23('0x85')]);_0x413eff({'count':_0x28ed8c['length'],'rows':_0x28ed8c});});},'SendFax':function(_0x1633eb){var _0x45c355=this;return new Promise(function(_0x19acfa,_0x154e8c){_0x2df2f5[_0xfa23('0x86')](_0x1633eb)[_0xfa23('0x1b')](function(_0x5618ed){_0x19acfa({'code':0xc8,'message':_0x5618ed['message']});})['catch'](function(_0x590f3f){_0x154e8c(_0x45c355[_0xfa23('0x11')](0x1f4,_0x590f3f[_0xfa23('0x1e')]));});});},'CheckAfterSend':function(_0x27fedb){var _0xa547c4=this;return new Promise(function(_0xed12f2,_0x5d4222){_0x2df2f5[_0xfa23('0x87')](_0x27fedb)[_0xfa23('0x1b')](function(_0x36b9c5){_0xed12f2({'code':0xc8,'message':_0x36b9c5['message']});})[_0xfa23('0x75')](function(_0x4cb34a){_0x5d4222(_0xa547c4['error'](0x1f4,_0x4cb34a[_0xfa23('0x1e')]));});});}};var _0x31b96e=jayson[_0xfa23('0x88')](_0x4fb6e6)[_0xfa23('0x89')]();_0x31b96e['on']('error',function(_0x6bdaf0){return _0x3696ef(_0x6bdaf0);});_0x31b96e[_0xfa23('0x6')](0x232a,'127.0.0.1',function(){console[_0xfa23('0x8a')](_0xfa23('0x8b'),0x232a);return _0x4c3f4('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 2ac5ffb..977be7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['data1','data2','isNil','data5','xmd-contactid','data3','split','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','mobile','fax','ListId','createdAt','updatedAt','resolve','getContacts','then','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','destcalleridname','Unknown','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','push','format','user:%s','trigger:%s','action','toLowerCase','merge','length','lodash','bluebird','ioredis','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','emit','exec'];(function(_0x44f9a6,_0x564d9c){var _0x3e72b0=function(_0x2b66bb){while(--_0x2b66bb){_0x44f9a6['push'](_0x44f9a6['shift']());}};_0x3e72b0(++_0x564d9c);}(_0x9a19,0x114));var _0x99a1=function(_0x337748,_0x402b05){_0x337748=_0x337748-0x0;var _0x3bb03f=_0x9a19[_0x337748];return _0x3bb03f;};'use strict';var _=require(_0x99a1('0x0'));var BPromise=require(_0x99a1('0x1'));var Redis=require(_0x99a1('0x2'));var util=require('util');var config=require(_0x99a1('0x3'));var logger=require(_0x99a1('0x4'))(_0x99a1('0x5'));var cmContactRpc=require(_0x99a1('0x6'));config[_0x99a1('0x7')]=_[_0x99a1('0x8')](config[_0x99a1('0x7')],{'host':_0x99a1('0x9'),'port':0x18eb});var io=require(_0x99a1('0xa'))(new Redis(config[_0x99a1('0x7')]));function emit(_0x65045d,_0x523b9e,_0x4d2a5c,_0x5aa6c2,_0x56f50){logger[_0x99a1('0xb')]('[CM][%s][%s]',_0x65045d,_0x523b9e['id'],_0x4d2a5c,_0x5aa6c2,JSON['stringify'](_0x56f50));io['to'](_0x4d2a5c)[_0x99a1('0xc')](_0x5aa6c2,_0x56f50);}exports[_0x99a1('0xd')]=function(_0x23db53,_0x26473f,_0x1551a1,_0x537032){var _0x28ee99,_0xdd29e1;var _0x27d65f={};var _0x418dee=Number(_0x1551a1[_0x99a1('0xe')]);var _0x1bc7aa=_0x1551a1[_0x99a1('0xf')]?Boolean(Number(_0x1551a1[_0x99a1('0xf')])):![];var _0xf713b9;var _0x40c19c=![];if(!_[_0x99a1('0x10')](_0x1551a1[_0x99a1('0x11')])){if(_0x1551a1[_0x99a1('0x11')]=='1')_0x40c19c=!![];}if(!_0x40c19c){if(_0x537032[_0x99a1('0x12')]){_0x27d65f['id']=_0x537032[_0x99a1('0x12')];}}if(!_0x27d65f['id']){_0x27d65f['ListId']=_0x418dee;_0xf713b9=_0x1551a1[_0x99a1('0x13')]&&_0x1551a1[_0x99a1('0x13')]!=='0'?_0x1551a1[_0x99a1('0x13')][_0x99a1('0x14')](','):[_0x99a1('0x15')];_0x27d65f[_0x99a1('0x16')]=_[_0x99a1('0x17')](_0xf713b9,function(_0x4e645b){var _0x4f049c={};_0x4f049c[_0x4e645b]=_0x537032[_0x99a1('0x18')]?_0x537032[_0x99a1('0x19')]:_0x537032[_0x99a1('0x1a')];return _0x4f049c;});}var _0x1fcd00=['id',_0x99a1('0x1b'),_0x99a1('0x1c'),_0x99a1('0x15'),_0x99a1('0x1d'),_0x99a1('0x1e'),_0x99a1('0x1f'),_0x99a1('0x20'),'scheduledAt',_0x99a1('0x21')];var _0x20007e=_['union'](_0x1fcd00,_0xf713b9);BPromise[_0x99a1('0x22')]()['then'](cmContactRpc[_0x99a1('0x23')]({'attributes':_0x20007e,'where':_0x27d65f}))[_0x99a1('0x24')](function(_0x2d6f20){_0xdd29e1=_0x2d6f20;if(!_[_0x99a1('0x25')](_0xdd29e1)){if(_0xdd29e1['length']===0x1){_0x28ee99=_0xdd29e1[0x0];logger[_0x99a1('0xb')](_0x99a1('0x26'),_0x537032['uniqueid'],_0x26473f['id'],_0x28ee99['id']);}else{logger[_0x99a1('0xb')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x537032[_0x99a1('0x27')],_0x26473f['id'],_[_0x99a1('0x17')](_0xdd29e1,'id')[_0x99a1('0x28')](','));}return;}else{logger[_0x99a1('0xb')](_0x99a1('0x29'),_0x537032[_0x99a1('0x27')],_0x26473f['id']);var _0x4fe7f7={'ListId':_0x418dee};var _0x114b38=_0x1551a1['data4']&&_0x1551a1['data4']!=='0'?_0x1551a1[_0x99a1('0x2a')]:_0x99a1('0x15');if(_0x1bc7aa){logger[_0x99a1('0xb')](_0x99a1('0x2b'),_0x537032[_0x99a1('0x27')],_0x26473f['id']);_0x4fe7f7[_0x114b38]=_[_0x99a1('0x10')](_0x537032[_0x99a1('0x18')])?_0x537032['calleridnum']:_0x537032[_0x99a1('0x19')];if(_['isNil'](_0x537032[_0x99a1('0x18')])){_0x4fe7f7[_0x99a1('0x1b')]=_0x537032[_0x99a1('0x2c')]&&_0x537032['calleridname']!==_0x99a1('0x2d')?_0x537032[_0x99a1('0x2c')]:'Unknown';}else{_0x4fe7f7[_0x99a1('0x1b')]=_0x537032[_0x99a1('0x2e')]&&_0x537032[_0x99a1('0x2e')]!==_0x99a1('0x2d')?_0x537032[_0x99a1('0x2e')]:_0x99a1('0x2f');}return BPromise[_0x99a1('0x22')]()[_0x99a1('0x24')](cmContactRpc['createContact'](_0x4fe7f7))['then'](function(_0x3fa342){_0x28ee99=_0x3fa342;_0xdd29e1['push'](_0x3fa342);if(_0x28ee99){logger[_0x99a1('0xb')](_0x99a1('0x30'),_0x537032['uniqueid'],_0x26473f['id'],_0x28ee99['id']);}return;});}else{logger[_0x99a1('0xb')](_0x99a1('0x31'),_0x537032[_0x99a1('0x27')],_0x26473f['id']);_0x4fe7f7[_0x114b38]=_[_0x99a1('0x10')](_0x537032[_0x99a1('0x18')])?_0x537032[_0x99a1('0x1a')]:_0x537032[_0x99a1('0x19')];if(_[_0x99a1('0x10')](_0x537032[_0x99a1('0x18')])){_0x4fe7f7[_0x99a1('0x1b')]=_0x537032[_0x99a1('0x2c')]&&_0x537032[_0x99a1('0x2c')]!==_0x99a1('0x2d')?_0x537032[_0x99a1('0x2c')]:'Unknown';}else{_0x4fe7f7['firstName']=_0x537032[_0x99a1('0x2e')]&&_0x537032[_0x99a1('0x2e')]!==_0x99a1('0x2d')?_0x537032[_0x99a1('0x2e')]:_0x99a1('0x2f');}_0x28ee99=_0x4fe7f7;_0xdd29e1[_0x99a1('0x32')](_0x4fe7f7);return;}}})[_0x99a1('0x24')](function(){if(_0x23db53){emit(_0x537032['uniqueid'],_0x26473f,util[_0x99a1('0x33')](_0x99a1('0x34'),_0x23db53['name']),util[_0x99a1('0x33')](_0x99a1('0x35'),_0x1551a1[_0x99a1('0x36')][_0x99a1('0x37')]()),{'evt':_[_0x99a1('0x38')](_0x537032,{'autoCreate':_0x1bc7aa}),'contact':_0x28ee99===undefined?{}:_0x28ee99,'contacts':_0xdd29e1[_0x99a1('0x39')]===0x0?undefined:_0xdd29e1});}});};
\ No newline at end of file
+var _0xfd28=['lastName','phone','mobile','createdAt','updatedAt','union','resolve','getContacts','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','Unknown','destcalleridname','then','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','toLowerCase','merge','bluebird','ioredis','../../../../config/environment','trigger','../../rpc/cmContact','redis','localhost','socket.io-emitter','info','stringify','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','routeId','destcalleridnum','firstName'];(function(_0x1a2f6d,_0x3d02d2){var _0x3a73fe=function(_0x2c0f96){while(--_0x2c0f96){_0x1a2f6d['push'](_0x1a2f6d['shift']());}};_0x3a73fe(++_0x3d02d2);}(_0xfd28,0x148));var _0x8fd2=function(_0x5756c6,_0x58290a){_0x5756c6=_0x5756c6-0x0;var _0x4b5806=_0xfd28[_0x5756c6];return _0x4b5806;};'use strict';var _=require('lodash');var BPromise=require(_0x8fd2('0x0'));var Redis=require(_0x8fd2('0x1'));var util=require('util');var config=require(_0x8fd2('0x2'));var logger=require('../../../../config/logger')(_0x8fd2('0x3'));var cmContactRpc=require(_0x8fd2('0x4'));config[_0x8fd2('0x5')]=_['defaults'](config[_0x8fd2('0x5')],{'host':_0x8fd2('0x6'),'port':0x18eb});var io=require(_0x8fd2('0x7'))(new Redis(config[_0x8fd2('0x5')]));function emit(_0x2f0afc,_0x4bdc1a,_0x53d938,_0x10fccf,_0x466c3d){logger[_0x8fd2('0x8')]('[CM][%s][%s]',_0x2f0afc,_0x4bdc1a['id'],_0x53d938,_0x10fccf,JSON[_0x8fd2('0x9')](_0x466c3d));io['to'](_0x53d938)['emit'](_0x10fccf,_0x466c3d);}exports[_0x8fd2('0xa')]=function(_0x5aabf0,_0x34ae5c,_0x4fdf0b,_0x1ca2a1){var _0x5244ed,_0x1b6558;var _0x5caf78={};var _0x4706b2=Number(_0x4fdf0b[_0x8fd2('0xb')]);var _0xfd78d=_0x4fdf0b[_0x8fd2('0xc')]?Boolean(Number(_0x4fdf0b[_0x8fd2('0xc')])):![];var _0xe9ec20;var _0x1e214c=![];if(!_[_0x8fd2('0xd')](_0x4fdf0b[_0x8fd2('0xe')])){if(_0x4fdf0b[_0x8fd2('0xe')]=='1')_0x1e214c=!![];}if(!_0x1e214c){if(_0x1ca2a1[_0x8fd2('0xf')]){_0x5caf78['id']=_0x1ca2a1[_0x8fd2('0xf')];}}if(!_0x5caf78['id']){_0x5caf78[_0x8fd2('0x10')]=_0x4706b2;_0xe9ec20=_0x4fdf0b[_0x8fd2('0x11')]&&_0x4fdf0b[_0x8fd2('0x11')]!=='0'?_0x4fdf0b['data3'][_0x8fd2('0x12')](','):['phone'];_0x5caf78['$or']=_['map'](_0xe9ec20,function(_0x3b79f3){var _0x530866={};_0x530866[_0x3b79f3]=_0x1ca2a1[_0x8fd2('0x13')]?_0x1ca2a1[_0x8fd2('0x14')]:_0x1ca2a1['calleridnum'];return _0x530866;});}var _0xabbeb4=['id',_0x8fd2('0x15'),_0x8fd2('0x16'),_0x8fd2('0x17'),_0x8fd2('0x18'),'fax','ListId',_0x8fd2('0x19'),'scheduledAt',_0x8fd2('0x1a')];var _0x490b39=_[_0x8fd2('0x1b')](_0xabbeb4,_0xe9ec20);BPromise[_0x8fd2('0x1c')]()['then'](cmContactRpc[_0x8fd2('0x1d')]({'attributes':_0x490b39,'where':_0x5caf78}))['then'](function(_0xd3981f){_0x1b6558=_0xd3981f;if(!_[_0x8fd2('0x1e')](_0x1b6558)){if(_0x1b6558['length']===0x1){_0x5244ed=_0x1b6558[0x0];logger[_0x8fd2('0x8')](_0x8fd2('0x1f'),_0x1ca2a1[_0x8fd2('0x20')],_0x34ae5c['id'],_0x5244ed['id']);}else{logger['info'](_0x8fd2('0x21'),_0x1ca2a1[_0x8fd2('0x20')],_0x34ae5c['id'],_[_0x8fd2('0x22')](_0x1b6558,'id')[_0x8fd2('0x23')](','));}return;}else{logger[_0x8fd2('0x8')](_0x8fd2('0x24'),_0x1ca2a1[_0x8fd2('0x20')],_0x34ae5c['id']);var _0x398925={'ListId':_0x4706b2};var _0x1456b4=_0x4fdf0b[_0x8fd2('0x25')]&&_0x4fdf0b[_0x8fd2('0x25')]!=='0'?_0x4fdf0b[_0x8fd2('0x25')]:_0x8fd2('0x17');if(_0xfd78d){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x1ca2a1[_0x8fd2('0x20')],_0x34ae5c['id']);_0x398925[_0x1456b4]=_[_0x8fd2('0xd')](_0x1ca2a1[_0x8fd2('0x13')])?_0x1ca2a1['calleridnum']:_0x1ca2a1[_0x8fd2('0x14')];if(_[_0x8fd2('0xd')](_0x1ca2a1[_0x8fd2('0x13')])){_0x398925[_0x8fd2('0x15')]=_0x1ca2a1[_0x8fd2('0x26')]&&_0x1ca2a1[_0x8fd2('0x26')]!==_0x8fd2('0x27')?_0x1ca2a1['calleridname']:_0x8fd2('0x28');}else{_0x398925[_0x8fd2('0x15')]=_0x1ca2a1[_0x8fd2('0x29')]&&_0x1ca2a1[_0x8fd2('0x29')]!==_0x8fd2('0x27')?_0x1ca2a1[_0x8fd2('0x29')]:_0x8fd2('0x28');}return BPromise['resolve']()['then'](cmContactRpc['createContact'](_0x398925))[_0x8fd2('0x2a')](function(_0x216350){_0x5244ed=_0x216350;_0x1b6558[_0x8fd2('0x2b')](_0x216350);if(_0x5244ed){logger[_0x8fd2('0x8')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x1ca2a1['uniqueid'],_0x34ae5c['id'],_0x5244ed['id']);}return;});}else{logger[_0x8fd2('0x8')](_0x8fd2('0x2c'),_0x1ca2a1[_0x8fd2('0x20')],_0x34ae5c['id']);_0x398925[_0x1456b4]=_[_0x8fd2('0xd')](_0x1ca2a1[_0x8fd2('0x13')])?_0x1ca2a1['calleridnum']:_0x1ca2a1[_0x8fd2('0x14')];if(_['isNil'](_0x1ca2a1[_0x8fd2('0x13')])){_0x398925['firstName']=_0x1ca2a1[_0x8fd2('0x26')]&&_0x1ca2a1['calleridname']!==_0x8fd2('0x27')?_0x1ca2a1[_0x8fd2('0x26')]:_0x8fd2('0x28');}else{_0x398925['firstName']=_0x1ca2a1[_0x8fd2('0x29')]&&_0x1ca2a1['destcalleridname']!==_0x8fd2('0x27')?_0x1ca2a1[_0x8fd2('0x29')]:_0x8fd2('0x28');}_0x5244ed=_0x398925;_0x1b6558['push'](_0x398925);return;}}})[_0x8fd2('0x2a')](function(){if(_0x5aabf0){emit(_0x1ca2a1[_0x8fd2('0x20')],_0x34ae5c,util[_0x8fd2('0x2d')]('user:%s',_0x5aabf0[_0x8fd2('0x2e')]),util[_0x8fd2('0x2d')](_0x8fd2('0x2f'),_0x4fdf0b['action'][_0x8fd2('0x30')]()),{'evt':_[_0x8fd2('0x31')](_0x1ca2a1,{'autoCreate':_0xfd78d}),'contact':_0x5244ed===undefined?{}:_0x5244ed,'contacts':_0x1b6558['length']===0x0?undefined:_0x1b6558});}});};
\ No newline at end of file
index 05855f7..74a864a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2799=['contactmanager','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','buildUri','data3','isNil','data4','location','windowWidth','data5','800','windowHeight','data6','winapp','winApplication','name','format','jscripty','user:%s','trigger:%s','toLowerCase','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','channel','AllConditions','every','checkConditions','AnyConditions','some','field','account','chat','ChatWebsiteId','operator','AccountId','value','interaction','message','event','agent','membername','lastevent','mailSubstatus','null','substatus','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','trigger','../ami','defaults','redis','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','prototype','emit','info','stringify','motionChannel','voice','checkTriggers','interface','hasOwnProperty','checkTrigger','merge','variables','length','Actions','action'];(function(_0x532112,_0x37d94b){var _0x23e5fb=function(_0x690ac8){while(--_0x690ac8){_0x532112['push'](_0x532112['shift']());}};_0x23e5fb(++_0x37d94b);}(_0x2799,0x1b8));var _0x9279=function(_0x1b5682,_0x3984e2){_0x1b5682=_0x1b5682-0x0;var _0x16b8cd=_0x2799[_0x1b5682];return _0x16b8cd;};'use strict';var util=require(_0x9279('0x0'));var _=require(_0x9279('0x1'));var url=require(_0x9279('0x2'));var Mustache=require(_0x9279('0x3'));var Redis=require(_0x9279('0x4'));var urlforward=require(_0x9279('0x5'));var integration=require(_0x9279('0x6'));var cmContact=require(_0x9279('0x7'));var script=require(_0x9279('0x8'));var config=require(_0x9279('0x9'));var logger=require('../../../config/logger')(_0x9279('0xa'));var ami=require(_0x9279('0xb'));config['redis']=_[_0x9279('0xc')](config[_0x9279('0xd')],{'host':_0x9279('0xe'),'port':0x18eb});var io=require(_0x9279('0xf'))(new Redis(config[_0x9279('0xd')]));var operators={'equals':function(_0x2fc459,_0x321454){return _0x2fc459==_0x321454;},'not_equals':function(_0x5bdd22,_0x518b20){return _0x5bdd22!=_0x518b20;}};var barAndWebActions=[_0x9279('0x10'),_0x9279('0x2'),'winapp'];function Trigger(_0x4918f7){this[_0x9279('0x11')]=_0x4918f7[_0x9279('0x11')];this[_0x9279('0x12')]=_0x4918f7[_0x9279('0x12')];this[_0x9279('0x13')]=_0x4918f7[_0x9279('0x13')];this['templates']=_0x4918f7[_0x9279('0x14')];this[_0x9279('0x15')]=_0x4918f7['voiceExtensions'];this[_0x9279('0x16')]=_0x4918f7[_0x9279('0x16')];this[_0x9279('0x17')]=_0x4918f7[_0x9279('0x17')];this[_0x9279('0x18')]=_0x4918f7[_0x9279('0x18')];this[_0x9279('0x19')]=_0x4918f7['sugarcrmAccounts'];this[_0x9279('0x1a')]=_0x4918f7[_0x9279('0x1a')];this[_0x9279('0x1b')]=_0x4918f7[_0x9279('0x1b')];this[_0x9279('0x1c')]=_0x4918f7[_0x9279('0x1c')];this['servicenowAccounts']=_0x4918f7[_0x9279('0x1d')];this[_0x9279('0x1e')]=_0x4918f7[_0x9279('0x1e')];this[_0x9279('0x1f')]=_0x4918f7[_0x9279('0x1f')];this[_0x9279('0x20')]={'zendesk':this[_0x9279('0x16')],'salesforce':this[_0x9279('0x18')],'freshdesk':this[_0x9279('0x17')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0x9279('0x1a')],'desk':this[_0x9279('0x1b')],'vtiger':this[_0x9279('0x1c')],'dynamics365':this[_0x9279('0x1e')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x9279('0x1d')]};ami['on'](_0x9279('0x21'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x24'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on']('custom:agentringnoanswer',this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x25'),this['syncCustomEvent'][_0x9279('0x23')](this));ami['on'](_0x9279('0x26'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x27'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x28'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x29'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x2a'),this[_0x9279('0x22')]['bind'](this));ami['on']('custom:amd',this[_0x9279('0x22')]['bind'](this));ami['on'](_0x9279('0x2b'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x2c'),this[_0x9279('0x22')]['bind'](this));ami['on']('custom:dialbegin',this[_0x9279('0x2d')][_0x9279('0x23')](this));ami['on'](_0x9279('0x2e'),this[_0x9279('0x2d')][_0x9279('0x23')](this));ami['on'](_0x9279('0x2f'),this[_0x9279('0x2d')][_0x9279('0x23')](this));ami['on'](_0x9279('0x30'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on']('custom:closedinteraction',this[_0x9279('0x22')]['bind'](this));ami['on'](_0x9279('0x31'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x32'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x33'),this[_0x9279('0x22')][_0x9279('0x23')](this));ami['on'](_0x9279('0x34'),this['syncCustomEvent'][_0x9279('0x23')](this));ami['on']('custom:rejectmessage',this[_0x9279('0x22')]['bind'](this));}Trigger[_0x9279('0x35')][_0x9279('0x36')]=function(_0x4f83a7,_0x25337d,_0x8f0160){logger[_0x9279('0x37')](_0x4f83a7,_0x25337d,JSON[_0x9279('0x38')](_0x8f0160));io['to'](_0x4f83a7)['emit'](_0x25337d,_0x8f0160);};Trigger[_0x9279('0x35')][_0x9279('0x22')]=function(_0x48a780){var _0x1a326c=_['clone'](_0x48a780);if(typeof _0x1a326c[_0x9279('0x39')]==='undefined'){_0x1a326c['motionChannel']=_0x9279('0x3a');}this[_0x9279('0x3b')](_0x1a326c);};Trigger[_0x9279('0x35')][_0x9279('0x2d')]=function(_0x34ac5c){if(this[_0x9279('0x12')][_0x34ac5c[_0x9279('0x3c')]]){this[_0x9279('0x22')](_0x34ac5c);}};Trigger['prototype']['checkTriggers']=function(_0x389d7d){var _0x4def09;for(var _0x574090 in this['triggers']){if(this['triggers'][_0x9279('0x3d')](_0x574090)){if(this['triggers'][_0x574090]['status']){_0x4def09=this[_0x9279('0x3e')](this[_0x9279('0x11')][_0x574090],_0x389d7d);if(_0x4def09){_[_0x9279('0x3f')](_0x389d7d,_0x389d7d[_0x9279('0x40')]);for(var _0x11068f=0x0,_0x3c90d0,_0x55cfc4,_0x4a1954;_0x11068f<this[_0x9279('0x11')][_0x574090]['Actions'][_0x9279('0x41')];_0x11068f+=0x1){_0x3c90d0=this[_0x9279('0x11')][_0x574090][_0x9279('0x42')][_0x11068f];if(this[_0x9279('0x12')][_0x389d7d[_0x9279('0x3c')]]){switch(_0x3c90d0[_0x9279('0x43')]['toLowerCase']()){case _0x9279('0x44'):break;case'motionbar':case _0x9279('0x45'):var _0x2dcd75={};switch(barAndWebActions[_0x3c90d0[_0x9279('0x46')]]){case'popup':_0x2dcd75[_0x9279('0x47')]=_0x3c90d0[_0x9279('0x48')];_0x2dcd75[_0x9279('0x49')]=this[_0x9279('0x14')][_0x3c90d0['data2']]?Mustache[_0x9279('0x4a')](this[_0x9279('0x14')][_0x3c90d0['data2']]['html'],_0x389d7d):_0x9279('0x4b');break;case'url':_0x2dcd75['uri']=this[_0x9279('0x4c')](_0x3c90d0[_0x9279('0x48')],_0x389d7d,_['isNil'](_0x3c90d0['data3'])?!![]:parseInt(_0x3c90d0[_0x9279('0x4d')],0xa));if(_[_0x9279('0x4e')](_0x3c90d0[_0x9279('0x4f')])){_0x2dcd75[_0x9279('0x50')]='0';}else{_0x2dcd75['uriLocation']=_0x3c90d0[_0x9279('0x4f')];_0x2dcd75[_0x9279('0x51')]=_[_0x9279('0x4e')](_0x3c90d0[_0x9279('0x52')])?_0x9279('0x53'):_0x3c90d0[_0x9279('0x52')];_0x2dcd75[_0x9279('0x54')]=_['isNil'](_0x3c90d0[_0x9279('0x55')])?'600':_0x3c90d0['data6'];}break;case _0x9279('0x56'):_0x2dcd75[_0x9279('0x57')]=_0x3c90d0[_0x9279('0x48')]?Mustache['render'](_0x3c90d0[_0x9279('0x48')],_0x389d7d):'';_0x2dcd75['winArguments']=_0x3c90d0[_0x9279('0x4d')]?Mustache[_0x9279('0x4a')](_0x3c90d0[_0x9279('0x4d')],_0x389d7d):'';break;}this[_0x9279('0x36')](util['format']('user:%s',this[_0x9279('0x12')][_0x389d7d[_0x9279('0x3c')]][_0x9279('0x58')]),util[_0x9279('0x59')]('trigger:%s:%s',_0x3c90d0[_0x9279('0x43')]['toLowerCase'](),barAndWebActions[_0x3c90d0[_0x9279('0x46')]]),_[_0x9279('0x3f')](_0x2dcd75,_0x389d7d));break;case _0x9279('0x5a'):this[_0x9279('0x36')](util[_0x9279('0x59')](_0x9279('0x5b'),this[_0x9279('0x12')][_0x389d7d['interface']][_0x9279('0x58')]),util[_0x9279('0x59')](_0x9279('0x5c'),_0x3c90d0[_0x9279('0x43')][_0x9279('0x5d')]()),_[_0x9279('0x3f')]({'ProjectId':parseInt(_0x3c90d0['data1'],0xa)},_0x389d7d));break;default:this[_0x9279('0x36')](util[_0x9279('0x59')]('user:%s',this[_0x9279('0x12')][_0x389d7d[_0x9279('0x3c')]][_0x9279('0x58')]),util[_0x9279('0x59')]('trigger:%s',_0x3c90d0[_0x9279('0x43')][_0x9279('0x5d')]()),_[_0x9279('0x3f')]({},_0x3c90d0,_0x389d7d));}}switch(_0x3c90d0[_0x9279('0x43')][_0x9279('0x5d')]()){case _0x9279('0x44'):cmContact[_0x9279('0x5e')](this['agents'][_0x389d7d[_0x9279('0x3c')]],this[_0x9279('0x11')][_0x574090],_0x3c90d0,_0x389d7d);break;case _0x9279('0x5f'):integration['exec'](_0x3c90d0,_0x389d7d,this['accounts'],this['agents'][_0x389d7d[_0x9279('0x3c')]],this['voiceQueues'][_0x389d7d[_0x9279('0x60')]],this[_0x9279('0x15')][_0x389d7d[_0x9279('0x61')]]);break;case _0x9279('0x62'):urlforward['exec'](_0x3c90d0,_0x389d7d);break;case _0x9279('0x63'):script[_0x9279('0x5e')](_0x3c90d0,_0x389d7d);break;}}}}}}};Trigger['prototype'][_0x9279('0x4c')]=function(_0x42d38e,_0x5ec894,_0x318beb){var _0x55304a=url[_0x9279('0x64')](Mustache[_0x9279('0x4a')](_0x42d38e,_0x5ec894),!![]);if(_0x318beb){_[_0x9279('0x3f')](_0x55304a[_0x9279('0x65')],_0x5ec894);}delete _0x55304a[_0x9279('0x66')];var _0x455c00=url[_0x9279('0x59')](_0x55304a);_0x455c00=_0x455c00[_0x9279('0x67')](/\/\?/g,'?');return _0x455c00;};Trigger['prototype'][_0x9279('0x3e')]=function(_0x219593,_0x11f466){var _0x325aa4=!![];var _0x3cd55f=!![];var _0x3dada6=![];if(_0x219593[_0x9279('0x68')]===_0x11f466[_0x9279('0x39')]){_0x3dada6=!![];}if(_0x219593[_0x9279('0x69')]['length']){_0x325aa4=_[_0x9279('0x6a')](_0x219593[_0x9279('0x69')],this[_0x9279('0x6b')](_0x11f466,_0x219593[_0x9279('0x68')]));}if(_0x219593[_0x9279('0x6c')]['length']){_0x3cd55f=_[_0x9279('0x6d')](_0x219593['AnyConditions'],this[_0x9279('0x6b')](_0x11f466,_0x219593[_0x9279('0x68')]));}return _0x3dada6&&_0x325aa4&&_0x3cd55f;};Trigger[_0x9279('0x35')][_0x9279('0x6b')]=function(_0x2e05c8,_0xe9d093){return function(_0x6d2e8f){switch(_0x6d2e8f[_0x9279('0x6e')]){case _0x9279('0x6f'):if(_0x2e05c8[_0x9279('0x68')]===_0xe9d093){if(_0xe9d093===_0x9279('0x70')){return _0x2e05c8[_0x9279('0x71')]?operators[_0x6d2e8f[_0x9279('0x72')]](Number(_0x6d2e8f['value']),_0x2e05c8[_0x9279('0x71')]):![];}else{return _0x2e05c8[_['upperFirst'](_0xe9d093)+_0x9279('0x73')]?operators[_0x6d2e8f[_0x9279('0x72')]](Number(_0x6d2e8f[_0x9279('0x74')]),_0x2e05c8[_['upperFirst'](_0xe9d093)+_0x9279('0x73')]):![];}}break;case _0x9279('0x75'):case _0x9279('0x76'):if(_0x2e05c8[_0x9279('0x68')]===_0xe9d093){return _0x2e05c8[_0x9279('0x77')]?operators[_0x6d2e8f['operator']](_0x6d2e8f[_0x9279('0x74')],_0x2e05c8[_0x9279('0x77')]):![];}break;case _0x9279('0x60'):return _0x2e05c8['queue']?operators[_0x6d2e8f['operator']](_0x6d2e8f[_0x9279('0x74')],_0x2e05c8[_0x9279('0x60')]):![];case _0x9279('0x78'):return _0x2e05c8[_0x9279('0x79')]?operators[_0x6d2e8f[_0x9279('0x72')]](_0x6d2e8f[_0x9279('0x74')],_0x2e05c8[_0x9279('0x79')]):![];case _0x9279('0x7a'):return _0x2e05c8[_0x9279('0x7a')]?operators[_0x6d2e8f[_0x9279('0x72')]](_0x6d2e8f['value'],_0x2e05c8['lastevent']):![];case'routeId':return _0x2e05c8[_0x9279('0x61')]?operators[_0x6d2e8f[_0x9279('0x72')]](_0x6d2e8f[_0x9279('0x74')],_0x2e05c8[_0x9279('0x61')]):![];case _0x9279('0x7b'):if(_0x6d2e8f[_0x9279('0x74')]===_0x9279('0x7c'))_0x6d2e8f['value']=null;return typeof _0x2e05c8[_0x9279('0x7d')]!=='undefined'?operators[_0x6d2e8f[_0x9279('0x72')]](_0x6d2e8f[_0x9279('0x74')],_0x2e05c8[_0x9279('0x7d')]):![];}return![];};};module[_0x9279('0x7e')]=Trigger;
\ No newline at end of file
+var _0x8b40=['stringify','emit','clone','motionChannel','voice','agents','interface','checkTriggers','status','checkTrigger','merge','variables','Actions','length','action','motionbar','data1','data2','render','html','template\x20not\x20found','buildUri','isNil','data3','data4','location','uriLocation','data5','800','windowHeight','data6','600','format','user:%s','jscripty','trigger:%s','toLowerCase','name','contactmanager','integration','exec','queue','script','parse','query','search','replace','channel','AllConditions','checkConditions','AnyConditions','some','account','chat','ChatWebsiteId','operator','value','AccountId','upperFirst','interaction','message','event','membername','lastevent','routeId','mailSubstatus','null','substatus','undefined','exports','util','url','./urlforward','./integration','./cmContact','./script','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','winapp','triggers','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialend','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','prototype','info'];(function(_0x26c848,_0x3b9209){var _0x16aeb1=function(_0x45a5ee){while(--_0x45a5ee){_0x26c848['push'](_0x26c848['shift']());}};_0x16aeb1(++_0x3b9209);}(_0x8b40,0x1ab));var _0x08b4=function(_0x4051e8,_0x449184){_0x4051e8=_0x4051e8-0x0;var _0x317ad6=_0x8b40[_0x4051e8];return _0x317ad6;};'use strict';var util=require(_0x08b4('0x0'));var _=require('lodash');var url=require(_0x08b4('0x1'));var Mustache=require('mustache');var Redis=require('ioredis');var urlforward=require(_0x08b4('0x2'));var integration=require(_0x08b4('0x3'));var cmContact=require(_0x08b4('0x4'));var script=require(_0x08b4('0x5'));var config=require('../../../config/environment');var logger=require(_0x08b4('0x6'))(_0x08b4('0x7'));var ami=require(_0x08b4('0x8'));config[_0x08b4('0x9')]=_[_0x08b4('0xa')](config['redis'],{'host':_0x08b4('0xb'),'port':0x18eb});var io=require(_0x08b4('0xc'))(new Redis(config[_0x08b4('0x9')]));var operators={'equals':function(_0x46465d,_0x4b34ad){return _0x46465d==_0x4b34ad;},'not_equals':function(_0x44ce43,_0x45b808){return _0x44ce43!=_0x45b808;}};var barAndWebActions=[_0x08b4('0xd'),_0x08b4('0x1'),_0x08b4('0xe')];function Trigger(_0x3b46e7){this[_0x08b4('0xf')]=_0x3b46e7['triggers'];this['agents']=_0x3b46e7['agents'];this[_0x08b4('0x10')]=_0x3b46e7[_0x08b4('0x10')];this[_0x08b4('0x11')]=_0x3b46e7[_0x08b4('0x11')];this[_0x08b4('0x12')]=_0x3b46e7['voiceExtensions'];this[_0x08b4('0x13')]=_0x3b46e7['zendeskAccounts'];this[_0x08b4('0x14')]=_0x3b46e7[_0x08b4('0x14')];this[_0x08b4('0x15')]=_0x3b46e7[_0x08b4('0x15')];this[_0x08b4('0x16')]=_0x3b46e7[_0x08b4('0x16')];this[_0x08b4('0x17')]=_0x3b46e7[_0x08b4('0x17')];this[_0x08b4('0x18')]=_0x3b46e7['deskAccounts'];this[_0x08b4('0x19')]=_0x3b46e7[_0x08b4('0x19')];this[_0x08b4('0x1a')]=_0x3b46e7[_0x08b4('0x1a')];this['dynamics365Accounts']=_0x3b46e7[_0x08b4('0x1b')];this[_0x08b4('0x1c')]=_0x3b46e7[_0x08b4('0x1c')];this[_0x08b4('0x1d')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x08b4('0x15')],'freshdesk':this[_0x08b4('0x14')],'sugarcrm':this[_0x08b4('0x16')],'zoho':this[_0x08b4('0x17')],'desk':this[_0x08b4('0x18')],'vtiger':this[_0x08b4('0x19')],'dynamics365':this['dynamics365Accounts'],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x08b4('0x1a')]};ami['on'](_0x08b4('0x1e'),this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on']('custom:agentconnect',this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on'](_0x08b4('0x21'),this[_0x08b4('0x1f')]['bind'](this));ami['on'](_0x08b4('0x22'),this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on']('custom:agentnosuchnumber',this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on'](_0x08b4('0x23'),this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on']('custom:agentbusy',this['syncCustomEvent'][_0x08b4('0x20')](this));ami['on'](_0x08b4('0x24'),this['syncCustomEvent']['bind'](this));ami['on'](_0x08b4('0x25'),this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on'](_0x08b4('0x26'),this[_0x08b4('0x1f')]['bind'](this));ami['on'](_0x08b4('0x27'),this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on'](_0x08b4('0x28'),this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on']('custom:dialbegin',this[_0x08b4('0x29')][_0x08b4('0x20')](this));ami['on']('custom:dialconnect',this['syncAgentDial'][_0x08b4('0x20')](this));ami['on'](_0x08b4('0x2a'),this[_0x08b4('0x29')][_0x08b4('0x20')](this));ami['on']('custom:newinteraction',this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on']('custom:closedinteraction',this[_0x08b4('0x1f')][_0x08b4('0x20')](this));ami['on'](_0x08b4('0x2b'),this[_0x08b4('0x1f')]['bind'](this));ami['on'](_0x08b4('0x2c'),this[_0x08b4('0x1f')]['bind'](this));ami['on'](_0x08b4('0x2d'),this['syncCustomEvent']['bind'](this));ami['on'](_0x08b4('0x2e'),this['syncCustomEvent'][_0x08b4('0x20')](this));ami['on']('custom:rejectmessage',this[_0x08b4('0x1f')]['bind'](this));}Trigger[_0x08b4('0x2f')]['emit']=function(_0x43fb30,_0x53e27b,_0x5ed07c){logger[_0x08b4('0x30')](_0x43fb30,_0x53e27b,JSON[_0x08b4('0x31')](_0x5ed07c));io['to'](_0x43fb30)[_0x08b4('0x32')](_0x53e27b,_0x5ed07c);};Trigger[_0x08b4('0x2f')][_0x08b4('0x1f')]=function(_0x4a7747){var _0xf11751=_[_0x08b4('0x33')](_0x4a7747);if(typeof _0xf11751[_0x08b4('0x34')]==='undefined'){_0xf11751[_0x08b4('0x34')]=_0x08b4('0x35');}this['checkTriggers'](_0xf11751);};Trigger['prototype'][_0x08b4('0x29')]=function(_0x4f286f){if(this[_0x08b4('0x36')][_0x4f286f[_0x08b4('0x37')]]){this['syncCustomEvent'](_0x4f286f);}};Trigger[_0x08b4('0x2f')][_0x08b4('0x38')]=function(_0x110bf2){var _0x4904d2;for(var _0x3c92c2 in this[_0x08b4('0xf')]){if(this['triggers']['hasOwnProperty'](_0x3c92c2)){if(this[_0x08b4('0xf')][_0x3c92c2][_0x08b4('0x39')]){_0x4904d2=this[_0x08b4('0x3a')](this['triggers'][_0x3c92c2],_0x110bf2);if(_0x4904d2){_[_0x08b4('0x3b')](_0x110bf2,_0x110bf2[_0x08b4('0x3c')]);for(var _0x232b71=0x0,_0x322c32,_0x1f3f35,_0x16206f;_0x232b71<this['triggers'][_0x3c92c2][_0x08b4('0x3d')][_0x08b4('0x3e')];_0x232b71+=0x1){_0x322c32=this[_0x08b4('0xf')][_0x3c92c2][_0x08b4('0x3d')][_0x232b71];if(this[_0x08b4('0x36')][_0x110bf2[_0x08b4('0x37')]]){switch(_0x322c32[_0x08b4('0x3f')]['toLowerCase']()){case'contactmanager':break;case _0x08b4('0x40'):case'browser':var _0xd4f6a={};switch(barAndWebActions[_0x322c32[_0x08b4('0x41')]]){case _0x08b4('0xd'):_0xd4f6a['TemplateId']=_0x322c32[_0x08b4('0x42')];_0xd4f6a['html']=this[_0x08b4('0x11')][_0x322c32[_0x08b4('0x42')]]?Mustache[_0x08b4('0x43')](this[_0x08b4('0x11')][_0x322c32['data2']][_0x08b4('0x44')],_0x110bf2):_0x08b4('0x45');break;case _0x08b4('0x1'):_0xd4f6a['uri']=this[_0x08b4('0x46')](_0x322c32[_0x08b4('0x42')],_0x110bf2,_[_0x08b4('0x47')](_0x322c32[_0x08b4('0x48')])?!![]:parseInt(_0x322c32['data3'],0xa));if(_[_0x08b4('0x47')](_0x322c32[_0x08b4('0x49')])){_0xd4f6a[_0x08b4('0x4a')]='0';}else{_0xd4f6a[_0x08b4('0x4b')]=_0x322c32['data4'];_0xd4f6a['windowWidth']=_[_0x08b4('0x47')](_0x322c32[_0x08b4('0x4c')])?_0x08b4('0x4d'):_0x322c32[_0x08b4('0x4c')];_0xd4f6a[_0x08b4('0x4e')]=_[_0x08b4('0x47')](_0x322c32[_0x08b4('0x4f')])?_0x08b4('0x50'):_0x322c32[_0x08b4('0x4f')];}break;case _0x08b4('0xe'):_0xd4f6a['winApplication']=_0x322c32[_0x08b4('0x42')]?Mustache[_0x08b4('0x43')](_0x322c32[_0x08b4('0x42')],_0x110bf2):'';_0xd4f6a['winArguments']=_0x322c32[_0x08b4('0x48')]?Mustache[_0x08b4('0x43')](_0x322c32[_0x08b4('0x48')],_0x110bf2):'';break;}this[_0x08b4('0x32')](util[_0x08b4('0x51')](_0x08b4('0x52'),this['agents'][_0x110bf2[_0x08b4('0x37')]]['name']),util[_0x08b4('0x51')]('trigger:%s:%s',_0x322c32[_0x08b4('0x3f')]['toLowerCase'](),barAndWebActions[_0x322c32[_0x08b4('0x41')]]),_['merge'](_0xd4f6a,_0x110bf2));break;case _0x08b4('0x53'):this[_0x08b4('0x32')](util[_0x08b4('0x51')]('user:%s',this[_0x08b4('0x36')][_0x110bf2[_0x08b4('0x37')]]['name']),util['format'](_0x08b4('0x54'),_0x322c32[_0x08b4('0x3f')][_0x08b4('0x55')]()),_[_0x08b4('0x3b')]({'ProjectId':parseInt(_0x322c32['data1'],0xa)},_0x110bf2));break;default:this[_0x08b4('0x32')](util[_0x08b4('0x51')](_0x08b4('0x52'),this[_0x08b4('0x36')][_0x110bf2[_0x08b4('0x37')]][_0x08b4('0x56')]),util[_0x08b4('0x51')]('trigger:%s',_0x322c32[_0x08b4('0x3f')][_0x08b4('0x55')]()),_[_0x08b4('0x3b')]({},_0x322c32,_0x110bf2));}}switch(_0x322c32[_0x08b4('0x3f')][_0x08b4('0x55')]()){case _0x08b4('0x57'):cmContact['exec'](this[_0x08b4('0x36')][_0x110bf2[_0x08b4('0x37')]],this[_0x08b4('0xf')][_0x3c92c2],_0x322c32,_0x110bf2);break;case _0x08b4('0x58'):integration[_0x08b4('0x59')](_0x322c32,_0x110bf2,this[_0x08b4('0x1d')],this[_0x08b4('0x36')][_0x110bf2[_0x08b4('0x37')]],this['voiceQueues'][_0x110bf2[_0x08b4('0x5a')]],this[_0x08b4('0x12')][_0x110bf2['routeId']]);break;case'urlforward':urlforward[_0x08b4('0x59')](_0x322c32,_0x110bf2);break;case _0x08b4('0x5b'):script[_0x08b4('0x59')](_0x322c32,_0x110bf2);break;}}}}}}};Trigger[_0x08b4('0x2f')][_0x08b4('0x46')]=function(_0x3f555d,_0x303891,_0x3744ee){var _0x482ced=url[_0x08b4('0x5c')](Mustache[_0x08b4('0x43')](_0x3f555d,_0x303891),!![]);if(_0x3744ee){_[_0x08b4('0x3b')](_0x482ced[_0x08b4('0x5d')],_0x303891);}delete _0x482ced[_0x08b4('0x5e')];var _0x11f481=url[_0x08b4('0x51')](_0x482ced);_0x11f481=_0x11f481[_0x08b4('0x5f')](/\/\?/g,'?');return _0x11f481;};Trigger[_0x08b4('0x2f')][_0x08b4('0x3a')]=function(_0x1ff1e8,_0x72aa84){var _0x4cbaf0=!![];var _0x50197a=!![];var _0x58f9e2=![];if(_0x1ff1e8[_0x08b4('0x60')]===_0x72aa84[_0x08b4('0x34')]){_0x58f9e2=!![];}if(_0x1ff1e8['AllConditions']['length']){_0x4cbaf0=_['every'](_0x1ff1e8[_0x08b4('0x61')],this[_0x08b4('0x62')](_0x72aa84,_0x1ff1e8['channel']));}if(_0x1ff1e8[_0x08b4('0x63')][_0x08b4('0x3e')]){_0x50197a=_[_0x08b4('0x64')](_0x1ff1e8['AnyConditions'],this[_0x08b4('0x62')](_0x72aa84,_0x1ff1e8[_0x08b4('0x60')]));}return _0x58f9e2&&_0x4cbaf0&&_0x50197a;};Trigger['prototype'][_0x08b4('0x62')]=function(_0x39e4b7,_0x1e7d5b){return function(_0x8f4ac7){switch(_0x8f4ac7['field']){case _0x08b4('0x65'):if(_0x39e4b7[_0x08b4('0x60')]===_0x1e7d5b){if(_0x1e7d5b===_0x08b4('0x66')){return _0x39e4b7[_0x08b4('0x67')]?operators[_0x8f4ac7[_0x08b4('0x68')]](Number(_0x8f4ac7[_0x08b4('0x69')]),_0x39e4b7[_0x08b4('0x67')]):![];}else{return _0x39e4b7[_['upperFirst'](_0x1e7d5b)+_0x08b4('0x6a')]?operators[_0x8f4ac7[_0x08b4('0x68')]](Number(_0x8f4ac7['value']),_0x39e4b7[_[_0x08b4('0x6b')](_0x1e7d5b)+_0x08b4('0x6a')]):![];}}break;case _0x08b4('0x6c'):case _0x08b4('0x6d'):if(_0x39e4b7['channel']===_0x1e7d5b){return _0x39e4b7[_0x08b4('0x6e')]?operators[_0x8f4ac7[_0x08b4('0x68')]](_0x8f4ac7[_0x08b4('0x69')],_0x39e4b7['event']):![];}break;case _0x08b4('0x5a'):return _0x39e4b7[_0x08b4('0x5a')]?operators[_0x8f4ac7[_0x08b4('0x68')]](_0x8f4ac7[_0x08b4('0x69')],_0x39e4b7['queue']):![];case'agent':return _0x39e4b7[_0x08b4('0x6f')]?operators[_0x8f4ac7[_0x08b4('0x68')]](_0x8f4ac7[_0x08b4('0x69')],_0x39e4b7['membername']):![];case'lastevent':return _0x39e4b7[_0x08b4('0x70')]?operators[_0x8f4ac7[_0x08b4('0x68')]](_0x8f4ac7[_0x08b4('0x69')],_0x39e4b7[_0x08b4('0x70')]):![];case _0x08b4('0x71'):return _0x39e4b7[_0x08b4('0x71')]?operators[_0x8f4ac7['operator']](_0x8f4ac7['value'],_0x39e4b7[_0x08b4('0x71')]):![];case _0x08b4('0x72'):if(_0x8f4ac7[_0x08b4('0x69')]===_0x08b4('0x73'))_0x8f4ac7['value']=null;return typeof _0x39e4b7[_0x08b4('0x74')]!==_0x08b4('0x75')?operators[_0x8f4ac7[_0x08b4('0x68')]](_0x8f4ac7[_0x08b4('0x69')],_0x39e4b7[_0x08b4('0x74')]):![];}return![];};};module[_0x08b4('0x76')]=Trigger;
\ No newline at end of file
index 0cd5c37..e7c076f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','custom_fields','variable','variableName','idField','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','recordingURL','The\x20User\x20ID\x20is:','destcalleridnum','Ticket\x20created!','[OUTBOUND]','unmanaged','lastevent','Recording\x20is\x20enabled!','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','total_entries','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','%s/users/me','debug','stringify','authType','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5fc3,0xa8));var _0x35fc=function(_0x43e4b3,_0x1444de){_0x43e4b3=_0x43e4b3-0x0;var _0x10c655=_0x5fc3[_0x43e4b3];return _0x10c655;};'use strict';var _=require(_0x35fc('0x0'));var rp=require(_0x35fc('0x1'));var md5=require('md5');var util=require(_0x35fc('0x2'));var Redis=require(_0x35fc('0x3'));var intUtil=require(_0x35fc('0x4'));var config=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('desk');config[_0x35fc('0x7')]=_[_0x35fc('0x8')](config[_0x35fc('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x35fc('0x7')]));function emit(_0x508b32,_0x16e153,_0x27524f){io['to'](_0x508b32)[_0x35fc('0x9')](_0x16e153,_0x27524f);}var headers={'Content-Type':_0x35fc('0xa'),'Accept':_0x35fc('0xa')};function getUser(_0xf9d3a6,_0x2051ab){if(intUtil['validateEmail'](_0x2051ab)===!![]){logger[_0x35fc('0xb')](_0x35fc('0xc'),_0x2051ab);return request({'uri':util['format'](_0x35fc('0xd'),_0xf9d3a6[_0x35fc('0xe')])})['then'](function(_0xda83fb){if(_0xda83fb[_0x35fc('0xf')]){return _['find'](_0xda83fb['_embedded'][_0x35fc('0x10')],{'email':_0x2051ab});}})['then'](function(_0x397738){if(_0x397738){logger[_0x35fc('0xb')](_0x35fc('0x11'));return _0x397738;}else{logger[_0x35fc('0xb')](_0x35fc('0x12'));return request({'uri':util['format']('%s/users/me',_0xf9d3a6['remoteUri'])});}});}else{logger['info'](_0x35fc('0x13'));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x15'),_0xf9d3a6[_0x35fc('0xe')])});}}function request(_0x227a49){logger[_0x35fc('0x16')]('[HTTP]',JSON[_0x35fc('0x17')](_0x227a49));return rp(_[_0x35fc('0x8')](_0x227a49,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x41e165){var _0x363e47;if(_0x41e165[_0x35fc('0x18')]==='basic'){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x19'),_0x41e165[_0x35fc('0x1a')],_0x41e165['password']);}else if(_0x41e165[_0x35fc('0x18')]===_0x35fc('0x1b')){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x1c'),_0x41e165[_0x35fc('0x1a')],_0x41e165[_0x35fc('0x1b')]);}return util[_0x35fc('0x14')](_0x35fc('0x1d'),new Buffer(_0x363e47)[_0x35fc('0x1e')](_0x35fc('0x1f')));}function getEndUser(_0x5bd2b8,_0x323aee,_0xd5399f){logger[_0x35fc('0xb')](_0x35fc('0x20'),_0xd5399f);return request({'uri':util[_0x35fc('0x14')]('%s/customers/search',_0x5bd2b8[_0x35fc('0xe')]),'qs':{'phone':_0xd5399f}})[_0x35fc('0x21')](function(_0x561bf8){if(_0x561bf8[_0x35fc('0xf')]){logger[_0x35fc('0xb')](_0x35fc('0x22'));return _0x561bf8['_embedded'][_0x35fc('0x10')][0x0];}else{logger['info'](_0x35fc('0x23'));return request({'uri':util[_0x35fc('0x14')]('%s/customers',_0x5bd2b8['remoteUri']),'method':_0x35fc('0x24'),'body':{'first_name':_0x323aee,'title':_0x323aee,'phone_numbers':[{'type':'work','value':_0xd5399f}]}});}});}function getTags(_0x274208,_0x1a5d92){var _0x57001c=[];if(_0x274208&&_0x274208[_0x35fc('0x25')]>0x0){_0x57001c=_[_0x35fc('0x26')](_0x274208,_0x1a5d92);}return _0x57001c;}function getCustomFields(_0x383837,_0x9f3c8a){var _0x3735da=[];var _0x134dfa={'custom_fields':{}};if(_0x383837[_0x35fc('0x25')]>0x0){_[_0x35fc('0x27')](_0x383837,function(_0x54aedc){if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc['type'])&&_0x54aedc[_0x35fc('0x2b')]&&!_0x54aedc[_0x35fc('0x2c')]){_0x134dfa[_0x54aedc[_0x35fc('0x2b')][_0x35fc('0x2d')]()]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc[_0x35fc('0x2f')])&&_0x54aedc['idField']&&_0x54aedc['customField']){_0x134dfa[_0x35fc('0x30')][_0x54aedc['idField']]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_0x54aedc[_0x35fc('0x2f')]===_0x35fc('0x31')&&_0x54aedc[_0x35fc('0x32')]&&_0x54aedc[_0x35fc('0x33')]&&_0x54aedc['customField']){_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]][_0x35fc('0x1e')]());}else if(_0x54aedc[_0x35fc('0x2f')]==='customVariable'&&_0x54aedc[_0x35fc('0x34')]&&_0x54aedc[_0x35fc('0x34')][_0x35fc('0x35')]&&_0x54aedc['idField']&&_0x54aedc[_0x35fc('0x2c')]){_0x9f3c8a[_0x54aedc['Variable'][_0x35fc('0x35')][_0x35fc('0x2d')]()]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc['Variable']['name']['toLowerCase']()][_0x35fc('0x1e')]());}});}if(_0x134dfa['priority']){_0x134dfa[_0x35fc('0x36')]=Number(_0x134dfa['priority']);}return _0x134dfa;}function getTicket(_0x9c6b65,_0x1f2d66,_0x2ca9ac,_0x22b724,_0x1c10e0){logger[_0x35fc('0xb')](_0x35fc('0x37'));var _0x4ec0dc=_[_0x35fc('0x38')]({'subject':intUtil[_0x35fc('0x39')](_0x22b724['Subjects'],_0x1c10e0,'\x20'),'type':_0x35fc('0x3a'),'status':_0x35fc('0x3b'),'labels':[_0x35fc('0x3c'),_0x35fc('0x3d'),_0x35fc('0x3e')][_0x35fc('0x3f')](getTags(_0x22b724['Tags'],_0x35fc('0x35'))),'description':intUtil[_0x35fc('0x39')](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0x35fc('0x41'),_0x1f2d66['id']),'class':_0x35fc('0x42')}},'message':{'direction':'in','body':intUtil['getString'](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a')}},getCustomFields(_0x22b724[_0x35fc('0x43')],_0x1c10e0));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x44'),_0x9c6b65[_0x35fc('0xe')],_0x2ca9ac['id']),'method':_0x35fc('0x24'),'body':_0x4ec0dc});}exports[_0x35fc('0x45')]=function(_0x3ec51f,_0x5a7e9e,_0x596e83,_0x210d5d,_0x36fcf9,_0x4fdc6d){var _0x5c2e5c,_0x4ff202;_0x4fdc6d[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x4fdc6d['remoteUri']);_0x4fdc6d[_0x35fc('0x47')]=intUtil[_0x35fc('0x46')](_0x4fdc6d[_0x35fc('0x47')]);if(_0x36fcf9&&_0x36fcf9[_0x35fc('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x5a7e9e['recordingURL']=util['format'](_0x35fc('0x49'),_0x4fdc6d[_0x35fc('0x47')],_0x5a7e9e['uniqueid'],md5(_0x5a7e9e[_0x35fc('0x4a')]));}else{_0x5a7e9e['recordingURL']='';}headers[_0x35fc('0x4b')]=getAuth(_0x4fdc6d);return getUser(_0x4fdc6d,_0x210d5d[_0x35fc('0x4c')])[_0x35fc('0x21')](function(_0x2de5d1){_0x5c2e5c=_0x2de5d1;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x5c2e5c['id']);return getEndUser(_0x4fdc6d,_0x5a7e9e[_0x35fc('0x4d')],_0x5a7e9e[_0x35fc('0x4e')]);})['then'](function(_0x18181b){_0x4ff202=_0x18181b;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x4ff202['id']);return getTicket(_0x4fdc6d,_0x5c2e5c,_0x4ff202,_0x596e83,_0x5a7e9e);})[_0x35fc('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){logger[_0x35fc('0xb')]('Ticket\x20created!');logger['info'](_0x35fc('0x50'),_0x5bc8c3['id']);switch(_0x4fdc6d[_0x35fc('0x2f')]){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x53'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d['name']),_0x35fc('0x55'),{'recordId':_0x5bc8c3['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d[_0x35fc('0x35')]),_0x35fc('0x58'),{'uri':util[_0x35fc('0x14')](_0x35fc('0x59'),_0x5bc8c3['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x52'),_0x35fc('0x5b'));}}})['catch'](function(_0x553ed6){console[_0x35fc('0x5a')](_0x553ed6);logger[_0x35fc('0x5a')](_0x35fc('0x52'),JSON[_0x35fc('0x17')](_0x553ed6));});};exports[_0x35fc('0x5c')]=function(_0x3e6494,_0x4a4798,_0x4f024c,_0x388521,_0x19b2ce,_0x395d63,_0x38bc78){var _0x5b2595,_0x467980;_0x395d63[_0x35fc('0xe')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0xe')]);_0x395d63[_0x35fc('0x47')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0x47')]);if(_0x38bc78&&_0x38bc78[_0x35fc('0x5d')]&&_0x38bc78[_0x35fc('0x5d')]!==_0x35fc('0x5e')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4a4798[_0x35fc('0x5f')]=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x395d63[_0x35fc('0x47')],_0x4a4798[_0x35fc('0x4a')],md5(_0x4a4798[_0x35fc('0x4a')]));}headers[_0x35fc('0x4b')]=getAuth(_0x395d63);return getUser(_0x395d63,_0x388521[_0x35fc('0x4c')])['then'](function(_0x2d9d45){_0x5b2595=_0x2d9d45;logger[_0x35fc('0xb')](_0x35fc('0x60'),_0x5b2595['id']);return getEndUser(_0x395d63,_0x4a4798['destcalleridname'],_0x4a4798[_0x35fc('0x61')]);})[_0x35fc('0x21')](function(_0x47fb1a){_0x467980=_0x47fb1a;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x467980['id']);return getTicket(_0x395d63,_0x5b2595,_0x467980,_0x4f024c,_0x4a4798);})[_0x35fc('0x21')](function(_0x1c4c33){if(_0x1c4c33){logger[_0x35fc('0xb')](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x1c4c33['id']);switch(_0x395d63['type']){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:desk:display',{'recordId':_0x1c4c33['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x395d63[_0x35fc('0xe')],_0x1c4c33['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x63'),_0x35fc('0x5b'));}}})['catch'](function(_0x458eb8){logger[_0x35fc('0x5a')](_0x35fc('0x63'),JSON[_0x35fc('0x17')](_0x458eb8));});};exports[_0x35fc('0x64')]=function(_0x1d0e53,_0x27071b,_0x2127e0,_0x462ceb,_0x4c3ace,_0x35d7c8){var _0x47c75f,_0xfbd737;_0x35d7c8[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x35d7c8[_0x35fc('0xe')]);_0x35d7c8['serverUrl']=intUtil[_0x35fc('0x46')](_0x35d7c8['serverUrl']);if(_0x4c3ace&&_0x4c3ace['monitor_format']){logger['info']('['+_0x27071b[_0x35fc('0x65')]['toUpperCase']()+']',_0x35fc('0x66'));_0x27071b['recordingURL']=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35d7c8[_0x35fc('0x47')],_0x27071b[_0x35fc('0x4a')],md5(_0x27071b[_0x35fc('0x4a')]));}else{_0x27071b[_0x35fc('0x5f')]='';}headers['Authorization']=getAuth(_0x35d7c8);return getUser(_0x35d7c8)[_0x35fc('0x21')](function(_0x1e2214){_0x47c75f=_0x1e2214;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x47c75f['id']);return getEndUser(_0x35d7c8,_0x27071b[_0x35fc('0x4d')],_0x27071b[_0x35fc('0x4e')]);})[_0x35fc('0x21')](function(_0x3c1b56){_0xfbd737=_0x3c1b56;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0xfbd737['id']);return getTicket(_0x35d7c8,_0x47c75f,_0xfbd737,_0x2127e0,_0x27071b);})[_0x35fc('0x21')](function(_0x4464d5){if(_0x4464d5){logger['info'](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x4464d5['id']);}})['catch'](function(_0x1c88d8){logger[_0x35fc('0x5a')]('['+_0x27071b['lastevent']['toUpperCase']()+']',JSON[_0x35fc('0x17')](_0x1c88d8));});};
\ No newline at end of file
+var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe14b,0x93));var _0xbe14=function(_0x484873,_0x4d1ba2){_0x484873=_0x484873-0x0;var _0x2bc607=_0xe14b[_0x484873];return _0x2bc607;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
index 181b36d..c106c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07fd=['systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','userId','systemuserid','userEmail','destcalleridnum','/systemusers(','headers','odata-entityid','lastIndexOf','enduserId','message','toLowerCase','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','type','nameField','customField','substring','indexOf','ticketType','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','phonecalls','calleridnum','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','stripTrailingSlash','serverUrl','unmanaged','outbound','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','inspect','lodash','request-promise','./util','ioredis','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','GET'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x07fd,0x1c4));var _0xd07f=function(_0x228c80,_0x567133){_0x228c80=_0x228c80-0x0;var _0x380ec3=_0x07fd[_0x228c80];return _0x380ec3;};'use strict';var _=require(_0xd07f('0x0'));var BPromise=require('bluebird');var rp=require(_0xd07f('0x1'));var util=require('util');var intUtil=require(_0xd07f('0x2'));var md5=require('md5');var Redis=require(_0xd07f('0x3'));var logger=require('../../../../config/logger')(_0xd07f('0x4'));var config=require(_0xd07f('0x5'));config[_0xd07f('0x6')]=_[_0xd07f('0x7')](config[_0xd07f('0x6')],{'host':_0xd07f('0x8'),'port':0x18eb});var io=require(_0xd07f('0x9'))(new Redis(config[_0xd07f('0x6')]));function getAuthToken(_0xf66fdd,_0x1d31ab,_0x59ab6b){var _0x15249b={'method':_0xd07f('0xa'),'uri':_0x1d31ab,'form':{'client_id':_0xf66fdd[_0xd07f('0xb')],'resource':_0xf66fdd[_0xd07f('0xc')],'username':_0xf66fdd[_0xd07f('0xd')],'password':_0xf66fdd['password'],'grant_type':_0xd07f('0xe'),'client_secret':_0xf66fdd[_0xd07f('0xf')]},'json':!![]};return rp(_0x15249b)[_0xd07f('0x10')](function(_0x40dc85){return _0x40dc85[_0xd07f('0x11')];})[_0xd07f('0x12')](function(_0x1e7a63){logger[_0xd07f('0x13')]('['+[_0x59ab6b[_0xd07f('0x14')]()]+_0xd07f('0x15'));return _0x1e7a63['message'];});}function getUser(_0x26bae3,_0x463ca9,_0x1bff4b,_0x3bc611,_0x5d0093,_0x1a189f){return new BPromise(function(_0x64062e,_0x1a79a3){return getAuthToken(_0x463ca9,_0x3bc611,_0x1a189f)['then'](function(_0x44ce46){var _0x1d22cd={'method':_0xd07f('0x16'),'uri':_0x5d0093+_0xd07f('0x17'),'headers':{'Authorization':_0xd07f('0x18')+_0x44ce46,'OData-Version':_0xd07f('0x19')},'json':!![]};return rp(_0x1d22cd);})[_0xd07f('0x10')](function(_0x472cb2){var _0x251a4b=_0x472cb2[_0xd07f('0x1a')];var _0x2bcaa6=![];var _0x47e936=null;if(!_[_0xd07f('0x1b')](_0x1bff4b)){if(intUtil['validateEmail'](_0x1bff4b[_0xd07f('0x1c')])){_0x26bae3['userEmail']=_0x1bff4b[_0xd07f('0x1c')];for(_0x47e936=0x0;_0x47e936<_0x251a4b[_0xd07f('0x1d')];_0x47e936++){if(_0x251a4b[_0x47e936][_0xd07f('0x1e')]===_0x1bff4b[_0xd07f('0x1c')]&&!_0x251a4b[_0x47e936][_0xd07f('0x1f')]){_0x2bcaa6=!![];logger[_0xd07f('0x20')]('['+[_0x1a189f[_0xd07f('0x14')]()]+_0xd07f('0x21')+_0x251a4b[_0x47e936]['systemuserid']+'!');_0x26bae3[_0xd07f('0x22')]=_0x251a4b[_0x47e936][_0xd07f('0x23')];}}}}if(!_0x2bcaa6){logger['info']('['+[_0x1a189f[_0xd07f('0x14')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x26bae3[_0xd07f('0x24')]=_0x463ca9[_0xd07f('0xd')];for(_0x47e936=0x0;_0x47e936<_0x251a4b['length'];_0x47e936++){if(_0x251a4b[_0x47e936][_0xd07f('0x1e')]===_0x463ca9[_0xd07f('0xd')]){_0x26bae3[_0xd07f('0x22')]=_0x251a4b[_0x47e936]['systemuserid'];}}}_0x64062e(_0x26bae3);})['catch'](function(_0x55e8eb){_0x1a79a3(_0x55e8eb['message']);});});}function createEndUser(_0x3d8262,_0xa3bbf8,_0x4f300c,_0x2ecd66,_0x29372f,_0x3e6ea9){return new BPromise(function(_0x17fe61,_0x2d5a18){return getAuthToken(_0xa3bbf8,_0x4f300c,_0x3e6ea9)['then'](function(_0x2fa43e){var _0x102bf5=_0x3e6ea9['toLowerCase']()==='outbound'?_0x29372f[_0xd07f('0x25')]:_0x29372f['calleridnum'];var _0x1b6d0b={'method':_0xd07f('0xa'),'uri':_0x2ecd66+'contacts','body':{'telephone1':_0x102bf5,'fullname':_0x102bf5,'firstname':_0x102bf5,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xd07f('0x26')+_0x3d8262[_0xd07f('0x22')]+')'},'headers':{'Authorization':_0xd07f('0x18')+_0x2fa43e,'OData-Version':_0xd07f('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x1b6d0b);})['then'](function(_0x1bc6bd){var _0x2f2e6e=_0x1bc6bd[_0xd07f('0x27')][_0xd07f('0x28')];var _0x5a750a=_0x2f2e6e['substring'](_0x2f2e6e['lastIndexOf']('(')+0x1,_0x2f2e6e[_0xd07f('0x29')](')'));_0x3d8262[_0xd07f('0x2a')]=_0x5a750a;_0x17fe61(_0x3d8262);})[_0xd07f('0x12')](function(_0x2d3d8a){_0x2d5a18(_0x2d3d8a[_0xd07f('0x2b')]);});});}function getEndUser(_0x56bcbc,_0x300c88,_0xa4ec0a,_0xd9c5cb,_0xcf24b6,_0x2498a3){return new BPromise(function(_0x1dfce4,_0x4359f7){var _0x303426=_0x2498a3[_0xd07f('0x2c')]()==='outbound'?_0xcf24b6[_0xd07f('0x25')]:_0xcf24b6['calleridnum'];return getAuthToken(_0x300c88,_0xa4ec0a,_0x2498a3)[_0xd07f('0x10')](function(_0x5b8486){var _0x2b627c={'method':_0xd07f('0x16'),'uri':_0xd9c5cb+_0xd07f('0x2d')+_0x303426['replace']('+','%2b')+'\x27','headers':{'Authorization':_0xd07f('0x18')+_0x5b8486,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2b627c);})[_0xd07f('0x10')](function(_0xa505a0){var _0x3abb5e=null;if(_0xa505a0){var _0x3fff40=_0xa505a0[_0xd07f('0x1a')];var _0x27536d=![];for(_0x3abb5e=0x0;_0x3abb5e<_0x3fff40[_0xd07f('0x1d')];_0x3abb5e++){if(_0x3fff40[_0x3abb5e][_0xd07f('0x2e')]===_0x303426){_0x27536d=!![];_0x56bcbc[_0xd07f('0x2a')]=_0x3fff40[_0x3abb5e][_0xd07f('0x2f')];}}if(_0x27536d){_0x1dfce4(_0x56bcbc);}else{return createEndUser(_0x56bcbc,_0x300c88,_0xa4ec0a,_0xd9c5cb,_0xcf24b6,_0x2498a3)[_0xd07f('0x10')](function(_0x3f7453){logger[_0xd07f('0x20')]('['+[_0x2498a3[_0xd07f('0x14')]()]+_0xd07f('0x30'),_0x3f7453[_0xd07f('0x2a')]);_0x1dfce4(_0x3f7453);});}}else{return createEndUser(_0x56bcbc,_0x300c88,_0xa4ec0a,_0xd9c5cb,_0xcf24b6,_0x2498a3)[_0xd07f('0x10')](function(_0x17f38b){logger[_0xd07f('0x20')]('['+[_0x2498a3['toUpperCase']()]+_0xd07f('0x31'),_0x17f38b[_0xd07f('0x2a')]);_0x1dfce4(_0x17f38b);});}});});}function getCustomFields(_0x52f0d8,_0x1988ad,_0x447feb){var _0x4945be={};if(_0x52f0d8[_0xd07f('0x1d')]>0x0){_[_0xd07f('0x32')](_0x52f0d8,function(_0x51922b){if(_[_0xd07f('0x33')]([_0xd07f('0x34'),_0xd07f('0x35')],_0x51922b[_0xd07f('0x36')])&&_0x51922b[_0xd07f('0x37')]&&!_0x51922b[_0xd07f('0x38')]){var _0x20b02d=_0x51922b['idField'][_0xd07f('0x2c')]();var _0x1f5d62=_0x20b02d[_0xd07f('0x39')](0x0,_0x20b02d[_0xd07f('0x3a')]('_'));var _0x102ebf=_0x20b02d[_0xd07f('0x39')](_0x20b02d[_0xd07f('0x3a')]('_')+0x1);if(_0x1f5d62===_0x447feb){_0x4945be[_0x102ebf]=_0x51922b['content'];}}});}return _0x4945be;}function getTicket(_0x56613c,_0x210f0e,_0x840e3,_0x598c00,_0x11087a,_0x410957,_0x1e6a55){return new BPromise(function(_0xa1443,_0x4f1863){var _0x18679b;return getAuthToken(_0x210f0e,_0x840e3,_0x1e6a55)[_0xd07f('0x10')](function(_0x28105d){if(_0x410957[_0xd07f('0x3b')]==='incident'){_0x18679b={'method':_0xd07f('0xa'),'uri':_0x598c00+_0xd07f('0x3c'),'body':Object[_0xd07f('0x3d')]({},{'title':intUtil[_0xd07f('0x3e')](_0x410957[_0xd07f('0x3f')],_0x11087a,'\x20'),'description':intUtil[_0xd07f('0x3e')](_0x410957[_0xd07f('0x40')],_0x11087a,'\x0a'),'customerid_contact@odata.bind':_0xd07f('0x41')+_0x56613c[_0xd07f('0x2a')]+')','ownerid@odata.bind':_0xd07f('0x26')+_0x56613c[_0xd07f('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x410957[_0xd07f('0x42')],_0x11087a,_0x410957[_0xd07f('0x3b')])),'headers':{'Authorization':'Bearer\x20'+_0x28105d,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x410957[_0xd07f('0x3b')]===_0xd07f('0x43')){_0x18679b={'method':_0xd07f('0xa'),'uri':_0x598c00+_0xd07f('0x44'),'body':Object[_0xd07f('0x3d')]({},{'subject':intUtil[_0xd07f('0x3e')](_0x410957['Subjects'],_0x11087a,'\x20'),'phonenumber':String(_0x11087a[_0xd07f('0x45')]),'description':intUtil[_0xd07f('0x3e')](_0x410957[_0xd07f('0x40')],_0x11087a,'\x0a'),'regardingobjectid_contact@odata.bind':_0xd07f('0x41')+_0x56613c[_0xd07f('0x2a')]+')','ownerid@odata.bind':_0xd07f('0x26')+_0x56613c['userId']+')','directioncode':_0x56613c[_0xd07f('0x46')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xd07f('0x26')+_0x56613c[_0xd07f('0x22')]+')','participationtypemask':_0x56613c['callDirection']===_0xd07f('0x47')?0x2:0x1},{'partyid_contact@odata.bind':_0xd07f('0x41')+_0x56613c[_0xd07f('0x2a')]+')','participationtypemask':_0x56613c[_0xd07f('0x46')]===_0xd07f('0x47')?0x1:0x2}]},getCustomFields(_0x410957[_0xd07f('0x42')],_0x11087a,_0x410957[_0xd07f('0x3b')])),'headers':{'Authorization':_0xd07f('0x18')+_0x28105d,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x18679b);})[_0xd07f('0x10')](function(_0x41a960){var _0xdd7668=_0x41a960[_0xd07f('0x27')][_0xd07f('0x28')];var _0x104471=_0xdd7668[_0xd07f('0x39')](_0xdd7668[_0xd07f('0x29')]('(')+0x1,_0xdd7668[_0xd07f('0x29')](')'));_0x56613c[_0xd07f('0x48')]=_0x104471;_0xa1443(_0x56613c);})[_0xd07f('0x12')](function(_0x15d295){_0x4f1863(_0x15d295[_0xd07f('0x2b')]);});});}function emit(_0x2c8c9d,_0x2e3e34,_0x2881a2,_0x11ef93){var _0x111422={'uri':util[_0xd07f('0x49')](_0xd07f('0x4a'),_0x2c8c9d,_0x2881a2,_0x11ef93)};io['to'](util[_0xd07f('0x49')](_0xd07f('0x4b'),_0x2e3e34))['emit']('trigger:browser:url',_0x111422);}exports['cs']=function(_0x3bcd4c,_0x3bda42,_0x34d542,_0x310b54,_0x2e6173,_0x318c30,_0x4c924a,_0x360b9c){var _0x212778={};_0x318c30[_0xd07f('0xc')]=intUtil['stripTrailingSlash'](_0x318c30[_0xd07f('0xc')]);_0x318c30['serverUrl']=intUtil[_0xd07f('0x4c')](_0x318c30[_0xd07f('0x4d')]);_0x212778[_0xd07f('0x46')]=_0x360b9c==='queue'||_0x360b9c===_0xd07f('0x4e')?_0xd07f('0x47'):_0xd07f('0x4f');var _0xdbe063=util[_0xd07f('0x49')](_0xd07f('0x50'),_0x318c30[_0xd07f('0xc')]);var _0x2ae99a=util[_0xd07f('0x49')](_0xd07f('0x51'),_0x318c30['tenantId']);var _0x84b0e3=util[_0xd07f('0x49')](_0xd07f('0x52'),_0x318c30[_0xd07f('0x4d')],_0x3bda42[_0xd07f('0x53')],md5(_0x3bda42[_0xd07f('0x53')]));if(_0x2e6173&&_0x2e6173[_0xd07f('0x54')]){logger[_0xd07f('0x20')](_0xd07f('0x55'),_0xd07f('0x56'));_0x3bda42[_0xd07f('0x57')]=_0x84b0e3;}else if(_0x4c924a&&_0x4c924a[_0xd07f('0x58')]&&_0x4c924a['recordingFormat']!=='none'){logger[_0xd07f('0x20')](_0xd07f('0x59'),'Recording\x20is\x20enabled!');_0x3bda42[_0xd07f('0x57')]=_0x84b0e3;}else{_0x3bda42['recordingURL']='';}return getUser(_0x212778,_0x318c30,_0x310b54,_0x2ae99a,_0xdbe063,_0x360b9c)['then'](function(_0x59bc51){logger['info']('['+_0x360b9c[_0xd07f('0x14')]()+']\x20The\x20User\x20ID\x20is:',_0x59bc51[_0xd07f('0x22')]);logger[_0xd07f('0x20')]('['+_0x360b9c['toUpperCase']()+_0xd07f('0x5a'),_0x59bc51['userEmail']);return getEndUser(_0x59bc51,_0x318c30,_0x2ae99a,_0xdbe063,_0x3bda42,_0x360b9c);})['then'](function(_0x164a19){logger['info']('['+_0x360b9c[_0xd07f('0x14')]()+_0xd07f('0x5b'),_0x164a19[_0xd07f('0x2a')]);logger[_0xd07f('0x20')]('['+_0x360b9c[_0xd07f('0x14')]()+_0xd07f('0x5c'),_0x3bda42[_0xd07f('0x45')]);return getTicket(_0x164a19,_0x318c30,_0x2ae99a,_0xdbe063,_0x3bda42,_0x34d542,_0x360b9c);})['then'](function(_0x2a39a9){logger['info'](util[_0xd07f('0x49')]('['+_0x360b9c[_0xd07f('0x14')]()+_0xd07f('0x5d'),_0x34d542[_0xd07f('0x3b')],_0x2a39a9[_0xd07f('0x48')]));logger[_0xd07f('0x20')](util[_0xd07f('0x49')]('['+_0x360b9c[_0xd07f('0x14')]()+']\x20Call\x20direction:\x20%s',_0x360b9c));if(_0x360b9c!==_0xd07f('0x4e')){logger[_0xd07f('0x20')]('['+_0x360b9c[_0xd07f('0x14')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x318c30['remoteUri'],_0x310b54['name'],_0x34d542[_0xd07f('0x3b')],_0x2a39a9[_0xd07f('0x48')]);}})[_0xd07f('0x12')](function(_0x5b5b49){logger[_0xd07f('0x13')]('['+_0x360b9c[_0xd07f('0x14')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0xd07f('0x5e')](_0x5b5b49,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x8cd9=['POST','remoteUri','username','password','clientSecret','then','error','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','value','isNil','email','userEmail','length','isdisabled','info',']\x20Agent\x20found\x20',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','catch','outbound','destcalleridnum','/systemusers(','Bearer\x20','headers','odata-entityid','substring','lastIndexOf','enduserId','toLowerCase','calleridnum','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','includes','string','customField','indexOf','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','userId','Fields','phonecall','queue','callDirection','phonecalls','ticketId','format','trigger:browser:url','stripTrailingSlash','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','[QUEUE]','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','lodash','bluebird','./util','md5','ioredis','../../../../config/logger','../../../../config/environment','defaults','redis','localhost','socket.io-emitter'];(function(_0x2ddb6d,_0x25d45b){var _0x56c103=function(_0x4f73c4){while(--_0x4f73c4){_0x2ddb6d['push'](_0x2ddb6d['shift']());}};_0x56c103(++_0x25d45b);}(_0x8cd9,0x112));var _0x98cd=function(_0x4798bf,_0x283738){_0x4798bf=_0x4798bf-0x0;var _0x579bbe=_0x8cd9[_0x4798bf];return _0x579bbe;};'use strict';var _=require(_0x98cd('0x0'));var BPromise=require(_0x98cd('0x1'));var rp=require('request-promise');var util=require('util');var intUtil=require(_0x98cd('0x2'));var md5=require(_0x98cd('0x3'));var Redis=require(_0x98cd('0x4'));var logger=require(_0x98cd('0x5'))('dynamics365');var config=require(_0x98cd('0x6'));config['redis']=_[_0x98cd('0x7')](config[_0x98cd('0x8')],{'host':_0x98cd('0x9'),'port':0x18eb});var io=require(_0x98cd('0xa'))(new Redis(config[_0x98cd('0x8')]));function getAuthToken(_0x15cadf,_0x58f8b6,_0x3c9e11){var _0x2833e8={'method':_0x98cd('0xb'),'uri':_0x58f8b6,'form':{'client_id':_0x15cadf['clientId'],'resource':_0x15cadf[_0x98cd('0xc')],'username':_0x15cadf[_0x98cd('0xd')],'password':_0x15cadf['password'],'grant_type':_0x98cd('0xe'),'client_secret':_0x15cadf[_0x98cd('0xf')]},'json':!![]};return rp(_0x2833e8)[_0x98cd('0x10')](function(_0x27a01c){return _0x27a01c['access_token'];})['catch'](function(_0xb74f84){logger[_0x98cd('0x11')]('['+[_0x3c9e11[_0x98cd('0x12')]()]+_0x98cd('0x13'));return _0xb74f84[_0x98cd('0x14')];});}function getUser(_0x5615ee,_0x1919b8,_0x5ad36b,_0x45ffed,_0xb7a3b2,_0x33d2fe){return new BPromise(function(_0x13bb5e,_0x5a8651){return getAuthToken(_0x1919b8,_0x45ffed,_0x33d2fe)['then'](function(_0x58f3ef){var _0xc0eac5={'method':'GET','uri':_0xb7a3b2+_0x98cd('0x15'),'headers':{'Authorization':'Bearer\x20'+_0x58f3ef,'OData-Version':_0x98cd('0x16')},'json':!![]};return rp(_0xc0eac5);})[_0x98cd('0x10')](function(_0x36cf4a){var _0x486149=_0x36cf4a[_0x98cd('0x17')];var _0x302300=![];var _0x4c2979=null;if(!_[_0x98cd('0x18')](_0x5ad36b)){if(intUtil['validateEmail'](_0x5ad36b[_0x98cd('0x19')])){_0x5615ee[_0x98cd('0x1a')]=_0x5ad36b['email'];for(_0x4c2979=0x0;_0x4c2979<_0x486149[_0x98cd('0x1b')];_0x4c2979++){if(_0x486149[_0x4c2979]['internalemailaddress']===_0x5ad36b[_0x98cd('0x19')]&&!_0x486149[_0x4c2979][_0x98cd('0x1c')]){_0x302300=!![];logger[_0x98cd('0x1d')]('['+[_0x33d2fe['toUpperCase']()]+_0x98cd('0x1e')+_0x486149[_0x4c2979]['systemuserid']+'!');_0x5615ee['userId']=_0x486149[_0x4c2979]['systemuserid'];}}}}if(!_0x302300){logger[_0x98cd('0x1d')]('['+[_0x33d2fe[_0x98cd('0x12')]()]+_0x98cd('0x1f'));_0x5615ee[_0x98cd('0x1a')]=_0x1919b8[_0x98cd('0xd')];for(_0x4c2979=0x0;_0x4c2979<_0x486149[_0x98cd('0x1b')];_0x4c2979++){if(_0x486149[_0x4c2979][_0x98cd('0x20')]===_0x1919b8[_0x98cd('0xd')]){_0x5615ee['userId']=_0x486149[_0x4c2979]['systemuserid'];}}}_0x13bb5e(_0x5615ee);})[_0x98cd('0x21')](function(_0x4f3bd8){_0x5a8651(_0x4f3bd8['message']);});});}function createEndUser(_0x3da296,_0xfd1203,_0x22d75f,_0x531645,_0x57d19d,_0x44a25a){return new BPromise(function(_0x19ae88,_0x43abf7){return getAuthToken(_0xfd1203,_0x22d75f,_0x44a25a)[_0x98cd('0x10')](function(_0x41b775){var _0x28d309=_0x44a25a['toLowerCase']()===_0x98cd('0x22')?_0x57d19d[_0x98cd('0x23')]:_0x57d19d['calleridnum'];var _0x45d04d={'method':'POST','uri':_0x531645+'contacts','body':{'telephone1':_0x28d309,'fullname':_0x28d309,'firstname':_0x28d309,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x98cd('0x24')+_0x3da296['userId']+')'},'headers':{'Authorization':_0x98cd('0x25')+_0x41b775,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x45d04d);})[_0x98cd('0x10')](function(_0xb9cde4){var _0xaeeda2=_0xb9cde4[_0x98cd('0x26')][_0x98cd('0x27')];var _0x4c8ca1=_0xaeeda2[_0x98cd('0x28')](_0xaeeda2[_0x98cd('0x29')]('(')+0x1,_0xaeeda2[_0x98cd('0x29')](')'));_0x3da296[_0x98cd('0x2a')]=_0x4c8ca1;_0x19ae88(_0x3da296);})[_0x98cd('0x21')](function(_0x28fac2){_0x43abf7(_0x28fac2['message']);});});}function getEndUser(_0x27b3c8,_0x14251e,_0x49e6ca,_0x5dd2fc,_0x486e6a,_0x2d39f0,_0x12ac79){var _0x33b8e7=_0x2d39f0[_0x98cd('0x2b')]()===_0x98cd('0x22')?_0x486e6a[_0x98cd('0x23')]:_0x486e6a[_0x98cd('0x2c')];return getAuthToken(_0x14251e,_0x49e6ca,_0x2d39f0)[_0x98cd('0x10')](function(_0x452630){var _0x452e9a={'method':_0x98cd('0x2d'),'uri':_0x5dd2fc+_0x98cd('0x2e')+_0x33b8e7[_0x98cd('0x2f')]('+',_0x98cd('0x30'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x452630,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x452e9a);})[_0x98cd('0x10')](function(_0x57ae86){var _0x2e4912=![];if(!_0x57ae86)return _0x2e4912;var _0x49f701=_0x57ae86[_0x98cd('0x17')];for(var _0x3d00a1=0x0;_0x3d00a1<_0x49f701[_0x98cd('0x1b')];_0x3d00a1++){if(_0x49f701[_0x3d00a1][_0x98cd('0x31')]===_0x33b8e7){_0x2e4912=!![];_0x27b3c8[_0x98cd('0x2a')]=_0x49f701[_0x3d00a1]['contactid'];}}return _0x2e4912;})[_0x98cd('0x10')](function(_0x130994){if(_0x130994)return _0x27b3c8;if(_0x12ac79===_0x98cd('0x32')){logger[_0x98cd('0x1d')]('['+[_0x2d39f0[_0x98cd('0x12')]()]+_0x98cd('0x33'));return _0x27b3c8;}return createEndUser(_0x27b3c8,_0x14251e,_0x49e6ca,_0x5dd2fc,_0x486e6a,_0x2d39f0)[_0x98cd('0x10')](function(_0x116104){logger[_0x98cd('0x1d')]('['+[_0x2d39f0['toUpperCase']()]+_0x98cd('0x34'),_0x116104[_0x98cd('0x2a')]);return _0x116104;});});}function getCustomFields(_0x4bbadf,_0x32af8a,_0x49bc42){var _0x310265={};if(_0x4bbadf[_0x98cd('0x1b')]>0x0){_['forEach'](_0x4bbadf,function(_0x1a8fc5){if(_[_0x98cd('0x35')]([_0x98cd('0x36'),'picklist'],_0x1a8fc5['type'])&&_0x1a8fc5['nameField']&&!_0x1a8fc5[_0x98cd('0x37')]){var _0x36c161=_0x1a8fc5['idField'][_0x98cd('0x2b')]();var _0x294cc0=_0x36c161[_0x98cd('0x28')](0x0,_0x36c161[_0x98cd('0x38')]('_'));var _0x8aa2f2=_0x36c161['substring'](_0x36c161[_0x98cd('0x38')]('_')+0x1);if(_0x294cc0===_0x49bc42){_0x310265[_0x8aa2f2]=_0x1a8fc5['content'];}}});}return _0x310265;}function getTicket(_0x3f1bfa,_0x36ac1e,_0x358e2e,_0x114fa2,_0x199b16,_0x59c9b1,_0x391d53){return new BPromise(function(_0x4f2b2b,_0x4f35b0){var _0x268416;return getAuthToken(_0x36ac1e,_0x358e2e,_0x391d53)['then'](function(_0xb9bd22){if(_0x59c9b1[_0x98cd('0x39')]===_0x98cd('0x3a')){_0x268416={'method':'POST','uri':_0x114fa2+_0x98cd('0x3b'),'body':Object[_0x98cd('0x3c')]({},{'title':intUtil[_0x98cd('0x3d')](_0x59c9b1[_0x98cd('0x3e')],_0x199b16,'\x20'),'description':intUtil[_0x98cd('0x3d')](_0x59c9b1[_0x98cd('0x3f')],_0x199b16,'\x0a'),'customerid_contact@odata.bind':_0x3f1bfa[_0x98cd('0x2a')]?_0x98cd('0x40')+_0x3f1bfa[_0x98cd('0x2a')]+')':undefined,'ownerid@odata.bind':_0x98cd('0x24')+_0x3f1bfa[_0x98cd('0x41')]+')','caseorigincode':'1'},getCustomFields(_0x59c9b1[_0x98cd('0x42')],_0x199b16,_0x59c9b1[_0x98cd('0x39')])),'headers':{'Authorization':_0x98cd('0x25')+_0xb9bd22,'OData-Version':_0x98cd('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x59c9b1['ticketType']===_0x98cd('0x43')){var _0x3f8852=_0x3f1bfa[_0x98cd('0x2a')]?[{'partyid_systemuser@odata.bind':_0x98cd('0x24')+_0x3f1bfa[_0x98cd('0x41')]+')','participationtypemask':_0x3f1bfa['callDirection']===_0x98cd('0x44')?0x2:0x1},{'partyid_contact@odata.bind':_0x98cd('0x40')+_0x3f1bfa[_0x98cd('0x2a')]+')','participationtypemask':_0x3f1bfa['callDirection']==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x98cd('0x24')+_0x3f1bfa['userId']+')','participationtypemask':_0x3f1bfa[_0x98cd('0x45')]===_0x98cd('0x44')?0x2:0x1}];_0x268416={'method':_0x98cd('0xb'),'uri':_0x114fa2+_0x98cd('0x46'),'body':Object[_0x98cd('0x3c')]({},{'subject':intUtil[_0x98cd('0x3d')](_0x59c9b1[_0x98cd('0x3e')],_0x199b16,'\x20'),'phonenumber':String(_0x199b16[_0x98cd('0x2c')]),'description':intUtil[_0x98cd('0x3d')](_0x59c9b1[_0x98cd('0x3f')],_0x199b16,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3f1bfa[_0x98cd('0x2a')]?_0x98cd('0x40')+_0x3f1bfa[_0x98cd('0x2a')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x3f1bfa['userId']+')','directioncode':_0x3f1bfa[_0x98cd('0x45')]===_0x98cd('0x44')?![]:!![],'phonecall_activity_parties':_0x3f8852},getCustomFields(_0x59c9b1[_0x98cd('0x42')],_0x199b16,_0x59c9b1[_0x98cd('0x39')])),'headers':{'Authorization':_0x98cd('0x25')+_0xb9bd22,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x268416);})['then'](function(_0x3a07c2){var _0x32da82=_0x3a07c2['headers'][_0x98cd('0x27')];var _0x27a661=_0x32da82['substring'](_0x32da82[_0x98cd('0x29')]('(')+0x1,_0x32da82[_0x98cd('0x29')](')'));_0x3f1bfa[_0x98cd('0x47')]=_0x27a661;_0x4f2b2b(_0x3f1bfa);})['catch'](function(_0x109187){_0x4f35b0(_0x109187[_0x98cd('0x14')]);});});}function emit(_0x3f3c79,_0x8120d1,_0x41d4ad,_0x32c6ac){var _0x1f8638={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x3f3c79,_0x41d4ad,_0x32c6ac)};io['to'](util[_0x98cd('0x48')]('user:%s',_0x8120d1))['emit'](_0x98cd('0x49'),_0x1f8638);}exports['cs']=function(_0x15092e,_0x143ce2,_0x58456c,_0xcdbb30,_0x1240db,_0x21c579,_0x533adb,_0x3128ba){var _0x2b40ce={};_0x21c579[_0x98cd('0xc')]=intUtil['stripTrailingSlash'](_0x21c579['remoteUri']);_0x21c579['serverUrl']=intUtil[_0x98cd('0x4a')](_0x21c579['serverUrl']);_0x2b40ce[_0x98cd('0x45')]=_0x3128ba===_0x98cd('0x44')||_0x3128ba===_0x98cd('0x4b')?_0x98cd('0x44'):_0x98cd('0x22');var _0x5c28b9=util[_0x98cd('0x48')](_0x98cd('0x4c'),_0x21c579['remoteUri']);var _0x5e4bf1=util[_0x98cd('0x48')](_0x98cd('0x4d'),_0x21c579[_0x98cd('0x4e')]);var _0x522474=util[_0x98cd('0x48')](_0x98cd('0x4f'),_0x21c579[_0x98cd('0x50')],_0x143ce2['uniqueid'],md5(_0x143ce2[_0x98cd('0x51')]));if(_0x1240db&&_0x1240db[_0x98cd('0x52')]){logger[_0x98cd('0x1d')](_0x98cd('0x53'),'Recording\x20is\x20enabled!');_0x143ce2['recordingURL']=_0x522474;}else if(_0x533adb&&_0x533adb[_0x98cd('0x54')]&&_0x533adb[_0x98cd('0x54')]!==_0x98cd('0x55')){logger['info'](_0x98cd('0x56'),'Recording\x20is\x20enabled!');_0x143ce2['recordingURL']=_0x522474;}else{_0x143ce2[_0x98cd('0x57')]='';}return getUser(_0x2b40ce,_0x21c579,_0xcdbb30,_0x5e4bf1,_0x5c28b9,_0x3128ba)[_0x98cd('0x10')](function(_0x5a9002){logger[_0x98cd('0x1d')]('['+_0x3128ba[_0x98cd('0x12')]()+_0x98cd('0x58'),_0x5a9002[_0x98cd('0x41')]);logger[_0x98cd('0x1d')]('['+_0x3128ba[_0x98cd('0x12')]()+_0x98cd('0x59'),_0x5a9002[_0x98cd('0x1a')]);return getEndUser(_0x5a9002,_0x21c579,_0x5e4bf1,_0x5c28b9,_0x143ce2,_0x3128ba,_0x58456c[_0x98cd('0x5a')]);})[_0x98cd('0x10')](function(_0x4f5530){logger[_0x98cd('0x1d')]('['+_0x3128ba[_0x98cd('0x12')]()+_0x98cd('0x5b'),_0x4f5530['enduserId']);logger[_0x98cd('0x1d')]('['+_0x3128ba[_0x98cd('0x12')]()+_0x98cd('0x5c'),_0x143ce2['calleridnum']);return getTicket(_0x4f5530,_0x21c579,_0x5e4bf1,_0x5c28b9,_0x143ce2,_0x58456c,_0x3128ba);})[_0x98cd('0x10')](function(_0x4f993d){logger['info'](util[_0x98cd('0x48')]('['+_0x3128ba['toUpperCase']()+_0x98cd('0x5d'),_0x58456c[_0x98cd('0x39')],_0x4f993d[_0x98cd('0x47')]));logger[_0x98cd('0x1d')](util[_0x98cd('0x48')]('['+_0x3128ba[_0x98cd('0x12')]()+']\x20Call\x20direction:\x20%s',_0x3128ba));if(_0x3128ba!=='unmanaged'){logger['info']('['+_0x3128ba[_0x98cd('0x12')]()+']',_0x98cd('0x5e'));emit(_0x21c579['remoteUri'],_0xcdbb30['name'],_0x58456c['ticketType'],_0x4f993d['ticketId']);}})['catch'](function(_0x39ba00){logger['error']('['+_0x3128ba['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',util['inspect'](_0x39ba00,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 946d63b..c8fc6b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e1=['Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','push','idField','toString','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','%s/helpdesk/tickets/%d','unmanaged','lastevent','toUpperCase','The\x20User\x20ID\x20is:','calleridnum','lodash','request-promise','md5','util','ioredis','../../../../config/logger','defaults','localhost','socket.io-emitter','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','getString','Subjects','Descriptions','<br>','name','custom_fields','mapValues','keyBy','value','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','contact','email','%s/api/v2/agents/me'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x44e1,0x91));var _0x144e=function(_0x4717b8,_0x331c49){_0x4717b8=_0x4717b8-0x0;var _0x42a536=_0x44e1[_0x4717b8];return _0x42a536;};'use strict';var _=require(_0x144e('0x0'));var rp=require(_0x144e('0x1'));var md5=require(_0x144e('0x2'));var util=require(_0x144e('0x3'));var Redis=require(_0x144e('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x144e('0x5'))('freshdesk');config['redis']=_[_0x144e('0x6')](config['redis'],{'host':_0x144e('0x7'),'port':0x18eb});var io=require(_0x144e('0x8'))(new Redis(config[_0x144e('0x9')]));var headers={'Content-Type':_0x144e('0xa'),'Accept':_0x144e('0xa')};function emit(_0x111d82,_0x4b41b1,_0xbb98d9){io['to'](_0x111d82)[_0x144e('0xb')](_0x4b41b1,_0xbb98d9);}function getTicket(_0x1d4af8,_0x386845,_0x346bad,_0x17ed2c,_0x40eda8){logger[_0x144e('0xc')](_0x144e('0xd'));var _0x28ab14=_[_0x144e('0xe')]({'responder_id':_0x386845['id'],'requester_id':_0x346bad['id'],'name':util[_0x144e('0xf')](_0x144e('0x10'),_0x40eda8['calleridname']),'phone':_0x40eda8['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x144e('0x11')](_0x17ed2c[_0x144e('0x12')],_0x40eda8,'\x20'),'description':intUtil[_0x144e('0x11')](_0x17ed2c[_0x144e('0x13')],_0x40eda8,_0x144e('0x14')),'tags':getTags(_0x17ed2c['Tags'],_0x144e('0x15'))},getCustomFields(_0x17ed2c['Fields'],_0x40eda8));_0x28ab14[_0x144e('0x16')]=_[_0x144e('0x17')](_[_0x144e('0x18')](_0x28ab14[_0x144e('0x16')],'id'),_0x144e('0x19'));return request({'uri':util[_0x144e('0xf')]('%s/api/v2/tickets',_0x1d4af8[_0x144e('0x1a')]),'method':_0x144e('0x1b'),'body':_0x28ab14})[_0x144e('0x1c')](function(_0x5caae0){logger[_0x144e('0xc')](_0x144e('0x1d'));return _0x5caae0;});}function getUser(_0x3ce1b7,_0x363052){if(intUtil[_0x144e('0x1e')](_0x363052)){return request({'uri':util[_0x144e('0xf')](_0x144e('0x1f'),_0x3ce1b7[_0x144e('0x1a')]),'qs':{'email':_0x363052}})['then'](function(_0x4669ee){if(_0x4669ee[_0x144e('0x20')]){logger[_0x144e('0xc')](_0x144e('0x21'));return _['find'](_0x4669ee,function(_0x204186){return _0x204186[_0x144e('0x22')][_0x144e('0x23')]===_0x363052;});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x144e('0x24'),_0x3ce1b7[_0x144e('0x1a')])})['then'](function(_0x119fd3){logger['info'](_0x144e('0x25'));return _0x119fd3;});}});}else{logger[_0x144e('0xc')](_0x144e('0x26'));return request({'uri':util['format'](_0x144e('0x24'),_0x3ce1b7[_0x144e('0x1a')])})['then'](function(_0x5319fb){logger[_0x144e('0xc')](_0x144e('0x25'));return _0x5319fb;});}}function getEndUser(_0x2c8bd0,_0x18f101,_0x4bdd84){logger[_0x144e('0xc')](_0x144e('0x27'),_0x4bdd84);return request({'uri':util[_0x144e('0xf')](_0x144e('0x28'),_0x2c8bd0[_0x144e('0x1a')]),'qs':{'phone':_0x4bdd84}})[_0x144e('0x1c')](function(_0x3f7819){if(_0x3f7819[_0x144e('0x20')]){logger['info']('Enduser\x20found!');return _['find'](_0x3f7819,{'phone':_0x4bdd84});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x144e('0xf')]('%s/api/v2/contacts',_0x2c8bd0[_0x144e('0x1a')]),'method':'POST','body':{'name':_0x18f101,'phone':_0x4bdd84}})[_0x144e('0x1c')](function(_0x329235){logger[_0x144e('0xc')](_0x144e('0x29'));return _0x329235;});}});}function getAuth(_0x3f6d7a){return util['format'](_0x144e('0x2a'),new Buffer(_0x3f6d7a[_0x144e('0x2b')]+':X')['toString']('base64'));}function request(_0x634bd0){logger['debug'](_0x144e('0x2c'),JSON[_0x144e('0x2d')](_0x634bd0));return rp(_[_0x144e('0x6')](_0x634bd0,{'method':_0x144e('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x2c5228,_0x2f0a67){var _0x369787=[];if(_0x2c5228&&_0x2c5228['length']>0x0){_0x369787=_[_0x144e('0x2f')](_0x2c5228,_0x2f0a67);}return _0x369787;}function getCustomFields(_0x409c7e,_0x3dddaf){var _0x4d9ccf=[];var _0x11dce8={'custom_fields':[]};if(_0x409c7e[_0x144e('0x20')]>0x0){_[_0x144e('0x30')](_0x409c7e,function(_0x1fbeaf){if(_[_0x144e('0x31')]([_0x144e('0x32'),_0x144e('0x33')],_0x1fbeaf['type'])&&_0x1fbeaf[_0x144e('0x34')]&&!_0x1fbeaf[_0x144e('0x35')]){_0x11dce8[_0x1fbeaf[_0x144e('0x34')][_0x144e('0x36')]()]=_0x1fbeaf[_0x144e('0x37')]['toString']();}else if(_[_0x144e('0x31')](['string',_0x144e('0x33')],_0x1fbeaf[_0x144e('0x38')])&&_0x1fbeaf['idField']&&_0x1fbeaf[_0x144e('0x35')]){_0x11dce8['custom_fields'][_0x144e('0x39')]({'id':_0x1fbeaf[_0x144e('0x3a')],'value':_0x1fbeaf[_0x144e('0x37')][_0x144e('0x3b')]()});}else if(_0x1fbeaf[_0x144e('0x38')]==='variable'&&_0x1fbeaf['variableName']&&_0x1fbeaf[_0x144e('0x3a')]&&_0x1fbeaf[_0x144e('0x35')]){_0x3dddaf[_0x1fbeaf[_0x144e('0x3c')]]&&_0x11dce8['custom_fields']['push']({'id':_0x1fbeaf[_0x144e('0x3a')],'value':_0x3dddaf[_0x1fbeaf['variableName']][_0x144e('0x3b')]()});}else if(_0x1fbeaf[_0x144e('0x38')]===_0x144e('0x3d')&&_0x1fbeaf[_0x144e('0x3e')]&&_0x1fbeaf[_0x144e('0x3e')][_0x144e('0x15')]&&_0x1fbeaf[_0x144e('0x3a')]&&_0x1fbeaf[_0x144e('0x35')]){_0x3dddaf[_0x1fbeaf[_0x144e('0x3e')][_0x144e('0x15')][_0x144e('0x36')]()]&&_0x11dce8[_0x144e('0x16')][_0x144e('0x39')]({'id':_0x1fbeaf[_0x144e('0x3a')],'value':_0x3dddaf[_0x1fbeaf[_0x144e('0x3e')][_0x144e('0x15')][_0x144e('0x36')]()][_0x144e('0x3b')]()});}});}return _0x11dce8;}exports['queue']=function(_0x1c21c1,_0x1bedf2,_0x3e5ac8,_0x5012c3,_0x2f7aa0,_0x381a7f){var _0x36f893,_0x1478c2;_0x381a7f[_0x144e('0x1a')]=intUtil[_0x144e('0x3f')](_0x381a7f[_0x144e('0x1a')]);_0x381a7f[_0x144e('0x40')]=intUtil[_0x144e('0x3f')](_0x381a7f['serverUrl']);if(_0x2f7aa0&&_0x2f7aa0[_0x144e('0x41')]){logger['info'](_0x144e('0x42'),_0x144e('0x43'));_0x1bedf2[_0x144e('0x44')]=util[_0x144e('0xf')](_0x144e('0x45'),_0x381a7f[_0x144e('0x40')],_0x1bedf2[_0x144e('0x46')],md5(_0x1bedf2[_0x144e('0x46')]));}else{_0x1bedf2[_0x144e('0x44')]='';}headers[_0x144e('0x47')]=getAuth(_0x381a7f);return getUser(_0x381a7f,_0x5012c3[_0x144e('0x23')])[_0x144e('0x1c')](function(_0xaab517){_0x36f893=_0xaab517;logger[_0x144e('0xc')]('The\x20User\x20ID\x20is:',_0x36f893['id']);return getEndUser(_0x381a7f,_0x1bedf2[_0x144e('0x48')],_0x1bedf2['calleridnum']);})['then'](function(_0x676c72){_0x1478c2=_0x676c72;logger['info'](_0x144e('0x49'),_0x1478c2['id']);return getTicket(_0x381a7f,_0x36f893,_0x1478c2,_0x3e5ac8,_0x1bedf2);})[_0x144e('0x1c')](function(_0x2cf301){if(_0x2cf301&&_0x2cf301['id']){logger['info'](_0x144e('0x1d'));logger['info'](_0x144e('0x4a'),_0x2cf301['id']);logger[_0x144e('0xc')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x144e('0xf')](_0x144e('0x4b'),_0x5012c3[_0x144e('0x15')]),_0x144e('0x4c'),{'uri':util[_0x144e('0xf')]('%s/helpdesk/tickets/%d',_0x381a7f[_0x144e('0x1a')],_0x2cf301['id'])});}})[_0x144e('0x4d')](function(_0x508b45){logger[_0x144e('0x4e')]('[QUEUE]',JSON[_0x144e('0x2d')](_0x508b45));});};exports[_0x144e('0x4f')]=function(_0x1d367b,_0x521d85,_0x5c7d79,_0x2a9512,_0x37086d,_0x503989,_0x551fdd){var _0x48699e,_0x5c1f27;_0x503989['remoteUri']=intUtil[_0x144e('0x3f')](_0x503989[_0x144e('0x1a')]);_0x503989[_0x144e('0x40')]=intUtil[_0x144e('0x3f')](_0x503989[_0x144e('0x40')]);if(_0x551fdd&&_0x551fdd[_0x144e('0x50')]&&_0x551fdd[_0x144e('0x50')]!==_0x144e('0x51')){logger[_0x144e('0xc')](_0x144e('0x52'),'Recording\x20is\x20enabled!');_0x521d85[_0x144e('0x44')]=util[_0x144e('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x503989[_0x144e('0x40')],_0x521d85[_0x144e('0x46')],md5(_0x521d85[_0x144e('0x46')]));}headers[_0x144e('0x47')]=getAuth(_0x503989);return getUser(_0x503989,_0x2a9512[_0x144e('0x23')])[_0x144e('0x1c')](function(_0x43d787){_0x48699e=_0x43d787;logger[_0x144e('0xc')]('The\x20User\x20ID\x20is:',_0x48699e['id']);return getEndUser(_0x503989,_0x521d85[_0x144e('0x53')],_0x521d85[_0x144e('0x54')]);})[_0x144e('0x1c')](function(_0x3ccfad){_0x5c1f27=_0x3ccfad;logger[_0x144e('0xc')](_0x144e('0x49'),_0x5c1f27['id']);return getTicket(_0x503989,_0x48699e,_0x5c1f27,_0x5c7d79,_0x521d85);})['then'](function(_0x4dcbc5){if(_0x4dcbc5&&_0x4dcbc5['id']){logger[_0x144e('0xc')](_0x144e('0x1d'));logger[_0x144e('0xc')](_0x144e('0x4a'),_0x4dcbc5['id']);logger[_0x144e('0xc')](_0x144e('0x52'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x2a9512[_0x144e('0x15')]),'trigger:browser:url',{'uri':util['format'](_0x144e('0x55'),_0x503989[_0x144e('0x1a')],_0x4dcbc5['id'])});}})[_0x144e('0x4d')](function(_0x95a581){logger[_0x144e('0x4e')]('[OUTBOUND]',JSON[_0x144e('0x2d')](_0x95a581));});};exports[_0x144e('0x56')]=function(_0x461860,_0x5c16b2,_0x3db046,_0x26a2b7,_0xe5747f,_0xdfec9b){var _0x267245,_0x453fff;_0xdfec9b[_0x144e('0x1a')]=intUtil[_0x144e('0x3f')](_0xdfec9b[_0x144e('0x1a')]);_0xdfec9b['serverUrl']=intUtil[_0x144e('0x3f')](_0xdfec9b['serverUrl']);if(_0xe5747f&&_0xe5747f['monitor_format']){logger[_0x144e('0xc')]('['+_0x5c16b2[_0x144e('0x57')][_0x144e('0x58')]()+']',_0x144e('0x43'));_0x5c16b2[_0x144e('0x44')]=util[_0x144e('0xf')](_0x144e('0x45'),_0xdfec9b['serverUrl'],_0x5c16b2['uniqueid'],md5(_0x5c16b2['uniqueid']));}else{_0x5c16b2[_0x144e('0x44')]='';}headers[_0x144e('0x47')]=getAuth(_0xdfec9b);return getUser(_0xdfec9b,'')[_0x144e('0x1c')](function(_0x10abb7){_0x267245=_0x10abb7;logger['info'](_0x144e('0x59'),_0x267245['id']);return getEndUser(_0xdfec9b,_0x5c16b2[_0x144e('0x48')],_0x5c16b2[_0x144e('0x5a')]);})[_0x144e('0x1c')](function(_0x2db614){_0x453fff=_0x2db614;logger['info'](_0x144e('0x49'),_0x453fff['id']);return getTicket(_0xdfec9b,_0x267245,_0x453fff,_0x3db046,_0x5c16b2);})['then'](function(_0x457fba){if(_0x457fba){logger[_0x144e('0xc')](_0x144e('0x1d'));logger[_0x144e('0xc')](_0x144e('0x4a'),_0x457fba['id']);}})[_0x144e('0x4d')](function(_0x7eca13){logger[_0x144e('0x4e')]('['+_0x5c16b2['lastevent'][_0x144e('0x58')]()+']',JSON['stringify'](_0x7eca13));});};
\ No newline at end of file
+var _0x5a4b=['redis','defaults','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','custom_fields','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','base64','debug','[HTTP]','stringify','GET','forEach','string','picklist','type','nameField','toLowerCase','toString','includes','push','content','variable','variableName','idField','customField','customVariable','Variable','name','queue','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','lastevent','toUpperCase','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger'];(function(_0x1a2d2f,_0x52319f){var _0x1d0459=function(_0x117ea2){while(--_0x117ea2){_0x1a2d2f['push'](_0x1a2d2f['shift']());}};_0x1d0459(++_0x52319f);}(_0x5a4b,0x10d));var _0xb5a4=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x5a4b[_0x2070da];return _0x4f9fe1;};'use strict';var _=require('lodash');var rp=require(_0xb5a4('0x0'));var md5=require(_0xb5a4('0x1'));var util=require(_0xb5a4('0x2'));var Redis=require(_0xb5a4('0x3'));var intUtil=require(_0xb5a4('0x4'));var config=require(_0xb5a4('0x5'));var logger=require(_0xb5a4('0x6'))('freshdesk');config[_0xb5a4('0x7')]=_[_0xb5a4('0x8')](config[_0xb5a4('0x7')],{'host':_0xb5a4('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb5a4('0x7')]));var headers={'Content-Type':_0xb5a4('0xa'),'Accept':_0xb5a4('0xa')};function emit(_0x21862a,_0x27825a,_0x1f9313){io['to'](_0x21862a)[_0xb5a4('0xb')](_0x27825a,_0x1f9313);}function getTicket(_0x5801cb,_0x4db728,_0x1b138a,_0x348e0b,_0x41d46f){logger[_0xb5a4('0xc')](_0xb5a4('0xd'));var _0x599aa7=_[_0xb5a4('0xe')]({'responder_id':_0x4db728['id'],'requester_id':_0x1b138a['id'],'name':util['format'](_0xb5a4('0xf'),_0x41d46f[_0xb5a4('0x10')]),'phone':_0x41d46f[_0xb5a4('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb5a4('0x12')](_0x348e0b[_0xb5a4('0x13')],_0x41d46f,'\x20'),'description':intUtil['getString'](_0x348e0b[_0xb5a4('0x14')],_0x41d46f,_0xb5a4('0x15')),'tags':getTags(_0x348e0b[_0xb5a4('0x16')],'name')},getCustomFields(_0x348e0b['Fields'],_0x41d46f));_0x599aa7[_0xb5a4('0x17')]=_['mapValues'](_['keyBy'](_0x599aa7[_0xb5a4('0x17')],'id'),'value');return request({'uri':util[_0xb5a4('0x18')](_0xb5a4('0x19'),_0x5801cb[_0xb5a4('0x1a')]),'method':_0xb5a4('0x1b'),'body':_0x599aa7})[_0xb5a4('0x1c')](function(_0x421aac){logger[_0xb5a4('0xc')](_0xb5a4('0x1d'));return _0x421aac;});}function getUser(_0x5136e0,_0x2ec1a7){if(intUtil[_0xb5a4('0x1e')](_0x2ec1a7)){return request({'uri':util[_0xb5a4('0x18')]('%s/api/v2/agents',_0x5136e0[_0xb5a4('0x1a')]),'qs':{'email':_0x2ec1a7}})[_0xb5a4('0x1c')](function(_0x255235){if(_0x255235['length']){logger['info'](_0xb5a4('0x1f'));return _['find'](_0x255235,function(_0x25205a){return _0x25205a[_0xb5a4('0x20')][_0xb5a4('0x21')]===_0x2ec1a7;});}else{logger[_0xb5a4('0xc')](_0xb5a4('0x22'));return request({'uri':util[_0xb5a4('0x18')]('%s/api/v2/agents/me',_0x5136e0[_0xb5a4('0x1a')])})[_0xb5a4('0x1c')](function(_0x22eefd){logger['info']('Admin\x20account\x20selected.');return _0x22eefd;});}});}else{logger['info'](_0xb5a4('0x23'));return request({'uri':util[_0xb5a4('0x18')](_0xb5a4('0x24'),_0x5136e0[_0xb5a4('0x1a')])})[_0xb5a4('0x1c')](function(_0x3cfe10){logger[_0xb5a4('0xc')](_0xb5a4('0x25'));return _0x3cfe10;});}}function getEndUser(_0x110645,_0x155b4b,_0x8f7b63){logger[_0xb5a4('0xc')](_0xb5a4('0x26'),_0x8f7b63);return request({'uri':util[_0xb5a4('0x18')](_0xb5a4('0x27'),_0x110645[_0xb5a4('0x1a')]),'qs':{'phone':_0x8f7b63}})[_0xb5a4('0x1c')](function(_0x19de64){if(_0x19de64[_0xb5a4('0x28')]){logger[_0xb5a4('0xc')](_0xb5a4('0x29'));return _[_0xb5a4('0x2a')](_0x19de64,{'phone':_0x8f7b63});}else{logger[_0xb5a4('0xc')](_0xb5a4('0x2b'));return request({'uri':util[_0xb5a4('0x18')]('%s/api/v2/contacts',_0x110645[_0xb5a4('0x1a')]),'method':_0xb5a4('0x1b'),'body':{'name':_0x155b4b,'phone':_0x8f7b63}})['then'](function(_0x3ff7b2){logger[_0xb5a4('0xc')]('Enduser\x20created.');return _0x3ff7b2;});}});}function getAuth(_0x3b4e6a){return util['format'](_0xb5a4('0x2c'),new Buffer(_0x3b4e6a['apiKey']+':X')['toString'](_0xb5a4('0x2d')));}function request(_0xf7e6e6){logger[_0xb5a4('0x2e')](_0xb5a4('0x2f'),JSON[_0xb5a4('0x30')](_0xf7e6e6));return rp(_[_0xb5a4('0x8')](_0xf7e6e6,{'method':_0xb5a4('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x223a6b,_0x291acb){var _0x172a70=[];if(_0x223a6b&&_0x223a6b[_0xb5a4('0x28')]>0x0){_0x172a70=_['map'](_0x223a6b,_0x291acb);}return _0x172a70;}function getCustomFields(_0x1e2e6f,_0x256a2c){var _0x1d3582=[];var _0x492227={'custom_fields':[]};if(_0x1e2e6f[_0xb5a4('0x28')]>0x0){_[_0xb5a4('0x32')](_0x1e2e6f,function(_0x2abea0){if(_['includes']([_0xb5a4('0x33'),_0xb5a4('0x34')],_0x2abea0[_0xb5a4('0x35')])&&_0x2abea0[_0xb5a4('0x36')]&&!_0x2abea0['customField']){_0x492227[_0x2abea0[_0xb5a4('0x36')][_0xb5a4('0x37')]()]=_0x2abea0['content'][_0xb5a4('0x38')]();}else if(_[_0xb5a4('0x39')]([_0xb5a4('0x33'),'picklist'],_0x2abea0[_0xb5a4('0x35')])&&_0x2abea0['idField']&&_0x2abea0['customField']){_0x492227[_0xb5a4('0x17')][_0xb5a4('0x3a')]({'id':_0x2abea0['idField'],'value':_0x2abea0[_0xb5a4('0x3b')][_0xb5a4('0x38')]()});}else if(_0x2abea0['type']===_0xb5a4('0x3c')&&_0x2abea0[_0xb5a4('0x3d')]&&_0x2abea0[_0xb5a4('0x3e')]&&_0x2abea0[_0xb5a4('0x3f')]){_0x256a2c[_0x2abea0[_0xb5a4('0x3d')]]&&_0x492227[_0xb5a4('0x17')][_0xb5a4('0x3a')]({'id':_0x2abea0[_0xb5a4('0x3e')],'value':_0x256a2c[_0x2abea0[_0xb5a4('0x3d')]][_0xb5a4('0x38')]()});}else if(_0x2abea0['type']===_0xb5a4('0x40')&&_0x2abea0[_0xb5a4('0x41')]&&_0x2abea0[_0xb5a4('0x41')][_0xb5a4('0x42')]&&_0x2abea0[_0xb5a4('0x3e')]&&_0x2abea0[_0xb5a4('0x3f')]){_0x256a2c[_0x2abea0[_0xb5a4('0x41')][_0xb5a4('0x42')][_0xb5a4('0x37')]()]&&_0x492227[_0xb5a4('0x17')][_0xb5a4('0x3a')]({'id':_0x2abea0['idField'],'value':_0x256a2c[_0x2abea0[_0xb5a4('0x41')][_0xb5a4('0x42')][_0xb5a4('0x37')]()][_0xb5a4('0x38')]()});}});}return _0x492227;}exports[_0xb5a4('0x43')]=function(_0x5af704,_0x1ca403,_0x45c238,_0x311a5c,_0x2d8166,_0x58d992){var _0x4314f7,_0x2ca9fa;_0x58d992[_0xb5a4('0x1a')]=intUtil['stripTrailingSlash'](_0x58d992['remoteUri']);_0x58d992[_0xb5a4('0x44')]=intUtil['stripTrailingSlash'](_0x58d992['serverUrl']);if(_0x2d8166&&_0x2d8166[_0xb5a4('0x45')]){logger['info'](_0xb5a4('0x46'),_0xb5a4('0x47'));_0x1ca403['recordingURL']=util[_0xb5a4('0x18')](_0xb5a4('0x48'),_0x58d992[_0xb5a4('0x44')],_0x1ca403['uniqueid'],md5(_0x1ca403[_0xb5a4('0x49')]));}else{_0x1ca403[_0xb5a4('0x4a')]='';}headers['Authorization']=getAuth(_0x58d992);return getUser(_0x58d992,_0x311a5c[_0xb5a4('0x21')])[_0xb5a4('0x1c')](function(_0x37ffb0){_0x4314f7=_0x37ffb0;logger[_0xb5a4('0xc')](_0xb5a4('0x4b'),_0x4314f7['id']);return getEndUser(_0x58d992,_0x1ca403[_0xb5a4('0x10')],_0x1ca403[_0xb5a4('0x11')]);})[_0xb5a4('0x1c')](function(_0x4f335b){_0x2ca9fa=_0x4f335b;logger[_0xb5a4('0xc')](_0xb5a4('0x4c'),_0x2ca9fa['id']);return getTicket(_0x58d992,_0x4314f7,_0x2ca9fa,_0x45c238,_0x1ca403);})[_0xb5a4('0x1c')](function(_0x38b05c){if(_0x38b05c&&_0x38b05c['id']){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x38b05c['id']);logger[_0xb5a4('0xc')](_0xb5a4('0x46'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb5a4('0x18')](_0xb5a4('0x4d'),_0x311a5c[_0xb5a4('0x42')]),_0xb5a4('0x4e'),{'uri':util[_0xb5a4('0x18')](_0xb5a4('0x4f'),_0x58d992[_0xb5a4('0x1a')],_0x38b05c['id'])});}})[_0xb5a4('0x50')](function(_0x10508c){logger[_0xb5a4('0x51')](_0xb5a4('0x46'),JSON[_0xb5a4('0x30')](_0x10508c));});};exports['outbound']=function(_0x837317,_0x5e5a92,_0x92c835,_0x597ff6,_0x392f31,_0xfe77cf,_0x12bb53){var _0x45e6e6,_0xde1d01;_0xfe77cf[_0xb5a4('0x1a')]=intUtil['stripTrailingSlash'](_0xfe77cf[_0xb5a4('0x1a')]);_0xfe77cf[_0xb5a4('0x44')]=intUtil[_0xb5a4('0x52')](_0xfe77cf[_0xb5a4('0x44')]);if(_0x12bb53&&_0x12bb53[_0xb5a4('0x53')]&&_0x12bb53['recordingFormat']!==_0xb5a4('0x54')){logger[_0xb5a4('0xc')](_0xb5a4('0x55'),_0xb5a4('0x47'));_0x5e5a92['recordingURL']=util[_0xb5a4('0x18')](_0xb5a4('0x48'),_0xfe77cf[_0xb5a4('0x44')],_0x5e5a92[_0xb5a4('0x49')],md5(_0x5e5a92['uniqueid']));}headers[_0xb5a4('0x56')]=getAuth(_0xfe77cf);return getUser(_0xfe77cf,_0x597ff6['email'])[_0xb5a4('0x1c')](function(_0x49c731){_0x45e6e6=_0x49c731;logger[_0xb5a4('0xc')](_0xb5a4('0x4b'),_0x45e6e6['id']);return getEndUser(_0xfe77cf,_0x5e5a92[_0xb5a4('0x57')],_0x5e5a92[_0xb5a4('0x58')]);})[_0xb5a4('0x1c')](function(_0xf7c686){_0xde1d01=_0xf7c686;logger[_0xb5a4('0xc')]('The\x20Enduser\x20ID\x20is:',_0xde1d01['id']);return getTicket(_0xfe77cf,_0x45e6e6,_0xde1d01,_0x92c835,_0x5e5a92);})[_0xb5a4('0x1c')](function(_0x3f7bd7){if(_0x3f7bd7&&_0x3f7bd7['id']){logger['info'](_0xb5a4('0x1d'));logger[_0xb5a4('0xc')](_0xb5a4('0x59'),_0x3f7bd7['id']);logger[_0xb5a4('0xc')](_0xb5a4('0x55'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb5a4('0x18')](_0xb5a4('0x4d'),_0x597ff6[_0xb5a4('0x42')]),_0xb5a4('0x4e'),{'uri':util[_0xb5a4('0x18')](_0xb5a4('0x4f'),_0xfe77cf[_0xb5a4('0x1a')],_0x3f7bd7['id'])});}})[_0xb5a4('0x50')](function(_0x151d29){logger[_0xb5a4('0x51')](_0xb5a4('0x55'),JSON['stringify'](_0x151d29));});};exports['unmanaged']=function(_0x135fac,_0x324e24,_0x304355,_0x515337,_0x2bf84f,_0x5b8fdd){var _0x542fd8,_0x540877;_0x5b8fdd[_0xb5a4('0x1a')]=intUtil['stripTrailingSlash'](_0x5b8fdd[_0xb5a4('0x1a')]);_0x5b8fdd[_0xb5a4('0x44')]=intUtil[_0xb5a4('0x52')](_0x5b8fdd[_0xb5a4('0x44')]);if(_0x2bf84f&&_0x2bf84f[_0xb5a4('0x45')]){logger['info']('['+_0x324e24[_0xb5a4('0x5a')]['toUpperCase']()+']',_0xb5a4('0x47'));_0x324e24[_0xb5a4('0x4a')]=util['format'](_0xb5a4('0x48'),_0x5b8fdd[_0xb5a4('0x44')],_0x324e24[_0xb5a4('0x49')],md5(_0x324e24[_0xb5a4('0x49')]));}else{_0x324e24[_0xb5a4('0x4a')]='';}headers[_0xb5a4('0x56')]=getAuth(_0x5b8fdd);return getUser(_0x5b8fdd,'')['then'](function(_0x41b686){_0x542fd8=_0x41b686;logger['info'](_0xb5a4('0x4b'),_0x542fd8['id']);return getEndUser(_0x5b8fdd,_0x324e24['calleridname'],_0x324e24[_0xb5a4('0x11')]);})[_0xb5a4('0x1c')](function(_0x1bb63d){_0x540877=_0x1bb63d;logger['info'](_0xb5a4('0x4c'),_0x540877['id']);return getTicket(_0x5b8fdd,_0x542fd8,_0x540877,_0x304355,_0x324e24);})['then'](function(_0x9740c2){if(_0x9740c2){logger[_0xb5a4('0xc')](_0xb5a4('0x1d'));logger[_0xb5a4('0xc')]('The\x20Ticket\x20ID\x20is:',_0x9740c2['id']);}})[_0xb5a4('0x50')](function(_0x2318e7){logger['error']('['+_0x324e24[_0xb5a4('0x5a')][_0xb5a4('0x5b')]()+']',JSON[_0xb5a4('0x30')](_0x2318e7));});};
\ No newline at end of file
index a3b14c1..f9f5dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb85=['YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','message','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','ticketId','task','user:%s','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','util','moment','bluebird','./util','../../../../config/environment','freshsales','redis','localhost','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','/api/selector/owners','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','User\x20found:','userId','userEmail','toUpperCase','/api/lookup?q=','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','then','endUserId','Contact\x20found\x20mobile_number:','Contact\x20created:','POST','/api/contacts'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0xcb85,0x122));var _0x5cb8=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xcb85[_0x24237f];return _0x48298e;};'use strict';var _=require('lodash');var rp=require(_0x5cb8('0x0'));var md5=require(_0x5cb8('0x1'));var util=require(_0x5cb8('0x2'));var moment=require(_0x5cb8('0x3'));var Promise=require(_0x5cb8('0x4'));var Redis=require('ioredis');var intUtil=require(_0x5cb8('0x5'));var config=require(_0x5cb8('0x6'));var logger=require('../../../../config/logger')(_0x5cb8('0x7'));config['redis']=_['defaults'](config[_0x5cb8('0x8')],{'host':_0x5cb8('0x9'),'port':0x18eb});var io=require(_0x5cb8('0xa'))(new Redis(config[_0x5cb8('0x8')]));function getAdminId(_0x896243,_0x2d48ab,_0x494d2c,_0x20c20c){return new Promise(function(_0x5c640c,_0x51fb85){var _0x5b89c8=![];var _0x45a80f={'method':_0x5cb8('0xb'),'uri':_0x20c20c+'/api/selector/owners','json':!![]};_0x45a80f[_0x5cb8('0xc')]=_0x494d2c;logger[_0x5cb8('0xd')](_0x5cb8('0xe'));return rp(_0x45a80f)['then'](function(_0x2c303e){if(_0x2c303e){var _0x5b7d9c=_0x2c303e[_0x5cb8('0xf')];var _0xbb2b86=null;for(_0xbb2b86=0x0;_0xbb2b86<_0x5b7d9c[_0x5cb8('0x10')];_0xbb2b86++){if(_0x5b7d9c[_0xbb2b86][_0x5cb8('0x11')]===_0x896243[_0x5cb8('0x12')]){_0x896243[_0x5cb8('0x13')]=_0x5b7d9c[_0xbb2b86]['id'];_0x5b89c8=!![];}}if(_0x5b89c8){logger['info'](_0x5cb8('0x14'),_0x896243[_0x5cb8('0x13')]);_0x5c640c(_0x896243);}else{_0x51fb85({'statusCode':0x194,'message':_0x5cb8('0x15')});}}else{_0x51fb85({'statusCode':0x194,'message':_0x5cb8('0x15')});}})[_0x5cb8('0x16')](function(_0x15e9d4){logger[_0x5cb8('0x17')]('['+[_0x2d48ab['toUpperCase']()]+']',_0x15e9d4['message']);_0x51fb85(_0x15e9d4);});});}function getUser(_0x5ed9d2,_0x27476d,_0x57a0e7){return function(_0x58a896){return new Promise(function(_0x4dcc06,_0x295f2b){var _0x3a8ba9={'method':_0x5cb8('0xb'),'uri':_0x57a0e7+_0x5cb8('0x18'),'json':!![]};_0x3a8ba9[_0x5cb8('0xc')]=_0x27476d;logger['info'](_0x5cb8('0x19'));return rp(_0x3a8ba9)['then'](function(_0x37726e){if(_0x37726e){var _0x26d297=_0x37726e[_0x5cb8('0xf')];var _0x4a9347=![];var _0x33772b=null;if(_0x58a896[_0x5cb8('0x1a')]!==null){logger['info'](_0x5cb8('0x1b'),_0x58a896[_0x5cb8('0x1a')]);_0x58a896['userEmail']=_0x58a896[_0x5cb8('0x1a')];for(_0x33772b=0x0;_0x33772b<_0x26d297['length'];_0x33772b++){if(_0x26d297[_0x33772b][_0x5cb8('0x11')]===_0x58a896['agentEmail']){_0x4a9347=!![];_0x58a896['userId']=_0x26d297[_0x33772b]['id'];logger[_0x5cb8('0xd')](_0x5cb8('0x1c'),_0x58a896[_0x5cb8('0x1d')]);}}}if(!_0x4a9347){logger['info']('Admin\x20selected');_0x58a896[_0x5cb8('0x1e')]=_0x58a896['adminEmail'];_0x58a896[_0x5cb8('0x1d')]=_0x58a896['adminId'];_0x4a9347=!![];}if(_0x4a9347){_0x4dcc06(_0x58a896);}else{_0x295f2b({'statusCode':0x194,'message':_0x5cb8('0x15')});}}else{_0x295f2b({'statusCode':0x194,'message':_0x5cb8('0x15')});}})[_0x5cb8('0x16')](function(_0x2b683f){logger['error']('['+[_0x5ed9d2[_0x5cb8('0x1f')]()]+']',_0x2b683f['message']);_0x295f2b(_0x2b683f);});});};}function searchContact(_0xc2495f,_0x909d46,_0x408939,_0x752d93){return new Promise(function(_0x59831e,_0x566494){var _0x55bc93={'method':_0x5cb8('0xb'),'headers':_0x909d46,'uri':_0xc2495f+_0x5cb8('0x20')+_0x752d93+_0x5cb8('0x21')+_0x408939+_0x5cb8('0x22'),'json':!![]};rp(_0x55bc93)['then'](function(_0x372185){var _0x3bae22=_['find'](_0x372185['contacts'][_0x5cb8('0x23')],[_0x408939,_0x752d93]);_0x59831e(_0x3bae22);})[_0x5cb8('0x16')](function(_0x2eb45a){_0x566494(_0x2eb45a);});});}function getEndUser(_0x2d0e65,_0x5a21e1,_0x9e159){return function(_0x40a176){return new Promise(function(_0x552cb3,_0x3a11cb){logger['info'](util[_0x5cb8('0x24')](_0x5cb8('0x25'),_0x40a176[_0x5cb8('0x26')]));searchContact(_0x9e159,_0x5a21e1,_0x5cb8('0x27'),_0x40a176[_0x5cb8('0x26')])[_0x5cb8('0x28')](function(_0x1dc3db){if(_0x1dc3db){_0x40a176[_0x5cb8('0x29')]=_0x1dc3db['id'];logger[_0x5cb8('0xd')](_0x5cb8('0x2a'),_0x40a176[_0x5cb8('0x29')]);return _0x552cb3(_0x40a176);}searchContact(_0x9e159,_0x5a21e1,'work_number',_0x40a176[_0x5cb8('0x26')])['then'](function(_0x1c5403){if(_0x1c5403){_0x40a176['endUserId']=_0x1c5403['id'];logger[_0x5cb8('0xd')]('Contact\x20found\x20work_number:',_0x40a176[_0x5cb8('0x29')]);return _0x552cb3(_0x40a176);}createEndUser(_0x40a176,_0x2d0e65,_0x5a21e1,_0x9e159)[_0x5cb8('0x28')](function(_0x45e650){logger['info'](_0x5cb8('0x2b'),_0x45e650['endUserId']);return _0x552cb3(_0x45e650);});});})[_0x5cb8('0x16')](function(_0x444156){_0x3a11cb(_0x444156);});});};}function createEndUser(_0x1cdf74,_0x152bc8,_0x4f7392,_0x320a92){return new Promise(function(_0x590c44,_0x197dad){var _0x3aed25=moment();var _0x567cb6={'method':_0x5cb8('0x2c'),'uri':_0x320a92+_0x5cb8('0x2d'),'body':{'contact':{'last_name':_0x1cdf74[_0x5cb8('0x26')],'work_number':_0x1cdf74['contactNumber'],'mobile_number':_0x1cdf74[_0x5cb8('0x26')],'owner_id':_0x1cdf74[_0x5cb8('0x1d')],'created_at':_0x3aed25['format'](_0x5cb8('0x2e'))}},'json':!![]};_0x567cb6['headers']=_0x4f7392;logger[_0x5cb8('0xd')](_0x5cb8('0x2f'));return rp(_0x567cb6)[_0x5cb8('0x28')](function(_0x3b3904){_0x1cdf74[_0x5cb8('0x29')]=_0x3b3904[_0x5cb8('0x30')]['id'];_0x590c44(_0x1cdf74);})['catch'](function(_0x3ddef2){logger[_0x5cb8('0x17')]('['+[_0x152bc8[_0x5cb8('0x1f')]()]+']',_0x3ddef2[_0x5cb8('0x31')]);_0x197dad(_0x3ddef2[_0x5cb8('0x31')]);});});}function getTicket(_0x49cc3b,_0x40ce45,_0x441235,_0x29e3a9,_0x54dee0){return function(_0x265da0){logger[_0x5cb8('0xd')](_0x5cb8('0x32'));return new Promise(function(_0xa80ea3,_0x3ab54d){var _0x1381a2=moment();var _0x133d83={'method':_0x5cb8('0x2c'),'uri':_0x441235+_0x5cb8('0x33'),'body':{'title':intUtil[_0x5cb8('0x34')](_0x29e3a9[_0x5cb8('0x35')],_0x54dee0,'\x20'),'description':intUtil[_0x5cb8('0x34')](_0x29e3a9[_0x5cb8('0x36')],_0x54dee0,'\x0a'),'owner_id':_0x265da0['userId'],'creater_id':_0x265da0['adminId'],'targetable_id':_0x265da0[_0x5cb8('0x29')],'targetable_type':'Contact','created_at':_0x1381a2[_0x5cb8('0x24')](_0x5cb8('0x2e')),'due_date':_0x1381a2['add'](0x1e,'m')[_0x5cb8('0x24')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x133d83[_0x5cb8('0xc')]=_0x40ce45;return rp(_0x133d83)[_0x5cb8('0x28')](function(_0xa69db3){_0x265da0[_0x5cb8('0x37')]=_0xa69db3[_0x5cb8('0x38')]['id'];logger[_0x5cb8('0xd')]('Task\x20created:',_0x265da0[_0x5cb8('0x37')]);_0xa80ea3(_0x265da0);})['catch'](function(_0x427f04){logger[_0x5cb8('0x17')]('['+[_0x49cc3b[_0x5cb8('0x1f')]()]+']',_0x427f04[_0x5cb8('0x31')]);_0x3ab54d(_0x427f04['message']);});});};}function emit(_0x16499c,_0x4e552e,_0x36ea06){var _0x221090={'uri':_0x16499c+'/contacts/'+_0x36ea06};io['to'](util[_0x5cb8('0x24')](_0x5cb8('0x39'),_0x4e552e))[_0x5cb8('0x3a')]('trigger:browser:url',_0x221090);}exports['cs']=function(_0x49eb72,_0x5987ea,_0x5c19e1,_0x1bd481,_0x223df9,_0x2aeeef,_0x2edc56,_0x7d88d7){var _0x3f0dc2={};var _0x4959d0={'Authorization':_0x5cb8('0x3b')+_0x2aeeef[_0x5cb8('0x3c')]};_0x2aeeef[_0x5cb8('0x3d')]=intUtil[_0x5cb8('0x3e')](_0x2aeeef[_0x5cb8('0x3d')]);_0x2aeeef[_0x5cb8('0x3f')]=intUtil[_0x5cb8('0x3e')](_0x2aeeef['serverUrl']);var _0x477303=_0x2aeeef[_0x5cb8('0x3d')];_0x3f0dc2[_0x5cb8('0x12')]=_0x2aeeef[_0x5cb8('0x40')];_0x3f0dc2[_0x5cb8('0x26')]=_0x7d88d7[_0x5cb8('0x41')]()===_0x5cb8('0x42')?_0x5987ea[_0x5cb8('0x43')]:_0x5987ea['calleridnum'];_0x3f0dc2[_0x5cb8('0x44')]=_0x7d88d7==='queue'||_0x7d88d7==='unmanaged'?_0x5cb8('0x45'):'outbound';if(_0x1bd481){_0x3f0dc2[_0x5cb8('0x1a')]=_0x1bd481[_0x5cb8('0x11')];}var _0x3dab4c=util[_0x5cb8('0x24')](_0x5cb8('0x46'),_0x2aeeef[_0x5cb8('0x3f')],_0x5987ea[_0x5cb8('0x47')],md5(_0x5987ea[_0x5cb8('0x47')]));if(_0x223df9&&_0x223df9[_0x5cb8('0x48')]){logger[_0x5cb8('0xd')](_0x5cb8('0x49'),_0x5cb8('0x4a'));_0x5987ea['recordingURL']=_0x3dab4c;}else if(_0x2edc56&&_0x2edc56[_0x5cb8('0x4b')]&&_0x2edc56[_0x5cb8('0x4b')]!==_0x5cb8('0x4c')){logger[_0x5cb8('0xd')](_0x5cb8('0x4d'),_0x5cb8('0x4a'));_0x5987ea[_0x5cb8('0x4e')]=_0x3dab4c;}else{_0x5987ea[_0x5cb8('0x4e')]='';}return getAdminId(_0x3f0dc2,_0x7d88d7,_0x4959d0,_0x477303)[_0x5cb8('0x28')](getUser(_0x7d88d7,_0x4959d0,_0x477303))['then'](getEndUser(_0x7d88d7,_0x4959d0,_0x477303))[_0x5cb8('0x28')](getTicket(_0x7d88d7,_0x4959d0,_0x477303,_0x5c19e1,_0x5987ea))[_0x5cb8('0x28')](function(_0x18f14a){logger[_0x5cb8('0xd')](util['format'](_0x5cb8('0x4f'),_0x18f14a[_0x5cb8('0x37')]));if(_0x7d88d7!==_0x5cb8('0x50')){logger['info']('['+[_0x7d88d7['toUpperCase']()]+']',_0x5cb8('0x51'));emit(_0x477303,_0x1bd481['name'],_0x18f14a['endUserId']);}})['catch'](function(_0x149cba){logger[_0x5cb8('0x17')]('['+[_0x7d88d7[_0x5cb8('0x1f')]()]+_0x5cb8('0x52'),util[_0x5cb8('0x53')](_0x149cba,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xa9d0=['catch','error','toUpperCase','message','GET','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','/api/tasks','getString','Descriptions','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','/api/selector/owners','headers','info','then','users','length','email','adminEmail','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found'];(function(_0x1d6e21,_0x74504f){var _0x24b7df=function(_0x369c9e){while(--_0x369c9e){_0x1d6e21['push'](_0x1d6e21['shift']());}};_0x24b7df(++_0x74504f);}(_0xa9d0,0x90));var _0x0a9d=function(_0x5b1698,_0x4624a8){_0x5b1698=_0x5b1698-0x0;var _0x1b416e=_0xa9d0[_0x5b1698];return _0x1b416e;};'use strict';var _=require(_0x0a9d('0x0'));var rp=require('request-promise');var md5=require(_0x0a9d('0x1'));var util=require(_0x0a9d('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require('ioredis');var intUtil=require(_0x0a9d('0x3'));var config=require(_0x0a9d('0x4'));var logger=require(_0x0a9d('0x5'))('freshsales');config[_0x0a9d('0x6')]=_[_0x0a9d('0x7')](config['redis'],{'host':_0x0a9d('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9d('0x6')]));function getAdminId(_0x118757,_0xab4b3e,_0x52a40a,_0x113eea){return new Promise(function(_0x3accd3,_0x49173c){var _0x184a8f=![];var _0x3efc5d={'method':'GET','uri':_0x113eea+_0x0a9d('0x9'),'json':!![]};_0x3efc5d[_0x0a9d('0xa')]=_0x52a40a;logger[_0x0a9d('0xb')]('Getting\x20admin\x20information');return rp(_0x3efc5d)[_0x0a9d('0xc')](function(_0x1dd5b2){if(_0x1dd5b2){var _0x4a5b14=_0x1dd5b2[_0x0a9d('0xd')];var _0x19d88d=null;for(_0x19d88d=0x0;_0x19d88d<_0x4a5b14[_0x0a9d('0xe')];_0x19d88d++){if(_0x4a5b14[_0x19d88d][_0x0a9d('0xf')]===_0x118757[_0x0a9d('0x10')]){_0x118757['adminId']=_0x4a5b14[_0x19d88d]['id'];_0x184a8f=!![];}}if(_0x184a8f){logger[_0x0a9d('0xb')](_0x0a9d('0x11'),_0x118757[_0x0a9d('0x12')]);_0x3accd3(_0x118757);}else{_0x49173c({'statusCode':0x194,'message':_0x0a9d('0x13')});}}else{_0x49173c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x0a9d('0x14')](function(_0x54e4a9){logger[_0x0a9d('0x15')]('['+[_0xab4b3e[_0x0a9d('0x16')]()]+']',_0x54e4a9[_0x0a9d('0x17')]);_0x49173c(_0x54e4a9);});});}function getUser(_0x364008,_0x32fb7f,_0x480cc7){return function(_0x4dbc27){return new Promise(function(_0x1fee0a,_0x471ad6){var _0x255722={'method':_0x0a9d('0x18'),'uri':_0x480cc7+_0x0a9d('0x9'),'json':!![]};_0x255722['headers']=_0x32fb7f;logger[_0x0a9d('0xb')]('Getting\x20user\x20list');return rp(_0x255722)[_0x0a9d('0xc')](function(_0x940385){if(_0x940385){var _0x256d04=_0x940385[_0x0a9d('0xd')];var _0x122eee=![];var _0x425c06=null;if(_0x4dbc27[_0x0a9d('0x19')]!==null){logger['info'](_0x0a9d('0x1a'),_0x4dbc27[_0x0a9d('0x19')]);_0x4dbc27[_0x0a9d('0x1b')]=_0x4dbc27[_0x0a9d('0x19')];for(_0x425c06=0x0;_0x425c06<_0x256d04['length'];_0x425c06++){if(_0x256d04[_0x425c06]['email']===_0x4dbc27[_0x0a9d('0x19')]){_0x122eee=!![];_0x4dbc27[_0x0a9d('0x1c')]=_0x256d04[_0x425c06]['id'];logger[_0x0a9d('0xb')](_0x0a9d('0x1d'),_0x4dbc27[_0x0a9d('0x1c')]);}}}if(!_0x122eee){logger[_0x0a9d('0xb')](_0x0a9d('0x1e'));_0x4dbc27[_0x0a9d('0x1b')]=_0x4dbc27[_0x0a9d('0x10')];_0x4dbc27[_0x0a9d('0x1c')]=_0x4dbc27[_0x0a9d('0x12')];_0x122eee=!![];}if(_0x122eee){_0x1fee0a(_0x4dbc27);}else{_0x471ad6({'statusCode':0x194,'message':_0x0a9d('0x13')});}}else{_0x471ad6({'statusCode':0x194,'message':_0x0a9d('0x13')});}})[_0x0a9d('0x14')](function(_0x3359d3){logger['error']('['+[_0x364008[_0x0a9d('0x16')]()]+']',_0x3359d3[_0x0a9d('0x17')]);_0x471ad6(_0x3359d3);});});};}function searchContact(_0x13bc99,_0x5b315a,_0xa7f9c7,_0x23eee1){return new Promise(function(_0x2cf073,_0x3d83fb){var _0x479670={'method':'GET','headers':_0x5b315a,'uri':_0x13bc99+_0x0a9d('0x1f')+_0x23eee1+_0x0a9d('0x20')+_0xa7f9c7+_0x0a9d('0x21'),'json':!![]};rp(_0x479670)[_0x0a9d('0xc')](function(_0x57c78c){var _0x2795ef=_['find'](_0x57c78c[_0x0a9d('0x22')][_0x0a9d('0x22')],[_0xa7f9c7,_0x23eee1]);_0x2cf073(_0x2795ef);})['catch'](function(_0x378c91){_0x3d83fb(_0x378c91);});});}function getEndUser(_0x4d3a8e,_0x23f06b,_0x4651e3){return function(_0x3000fa){return new Promise(function(_0x969f84,_0x10089d){logger[_0x0a9d('0xb')](util[_0x0a9d('0x23')]('Searching\x20contact\x20with\x20phone\x20%s',_0x3000fa[_0x0a9d('0x24')]));searchContact(_0x4651e3,_0x23f06b,_0x0a9d('0x25'),_0x3000fa[_0x0a9d('0x24')])['then'](function(_0x5936fa){if(_0x5936fa){_0x3000fa[_0x0a9d('0x26')]=_0x5936fa['id'];logger[_0x0a9d('0xb')](_0x0a9d('0x27'),_0x3000fa[_0x0a9d('0x26')]);return _0x969f84(_0x3000fa);}searchContact(_0x4651e3,_0x23f06b,_0x0a9d('0x28'),_0x3000fa['contactNumber'])[_0x0a9d('0xc')](function(_0x2dcbe8){if(_0x2dcbe8){_0x3000fa[_0x0a9d('0x26')]=_0x2dcbe8['id'];logger[_0x0a9d('0xb')](_0x0a9d('0x29'),_0x3000fa[_0x0a9d('0x26')]);return _0x969f84(_0x3000fa);}createEndUser(_0x3000fa,_0x4d3a8e,_0x23f06b,_0x4651e3)[_0x0a9d('0xc')](function(_0x54134f){logger[_0x0a9d('0xb')](_0x0a9d('0x2a'),_0x54134f[_0x0a9d('0x26')]);return _0x969f84(_0x54134f);});});})[_0x0a9d('0x14')](function(_0x47750b){_0x10089d(_0x47750b);});});};}function createEndUser(_0x21fdf5,_0x854030,_0x5cfb93,_0x3fb2ae){return new Promise(function(_0x2a1c8c,_0x1e53de){var _0x219697=moment();var _0x298dc8={'method':'POST','uri':_0x3fb2ae+_0x0a9d('0x2b'),'body':{'contact':{'last_name':_0x21fdf5[_0x0a9d('0x24')],'work_number':_0x21fdf5[_0x0a9d('0x24')],'mobile_number':_0x21fdf5['contactNumber'],'owner_id':_0x21fdf5['userId'],'created_at':_0x219697[_0x0a9d('0x23')](_0x0a9d('0x2c'))}},'json':!![]};_0x298dc8[_0x0a9d('0xa')]=_0x5cfb93;logger[_0x0a9d('0xb')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x298dc8)[_0x0a9d('0xc')](function(_0x417715){_0x21fdf5['endUserId']=_0x417715['contact']['id'];_0x2a1c8c(_0x21fdf5);})[_0x0a9d('0x14')](function(_0x2813d0){logger[_0x0a9d('0x15')]('['+[_0x854030[_0x0a9d('0x16')]()]+']',_0x2813d0[_0x0a9d('0x17')]);_0x1e53de(_0x2813d0[_0x0a9d('0x17')]);});});}function getTicket(_0x344cf6,_0x1f82cf,_0x58f36f,_0x32fb31,_0x4c5e1f){return function(_0x796e8d){logger[_0x0a9d('0xb')]('Creating\x20new\x20task');return new Promise(function(_0x3f8efc,_0x48689c){var _0xf82e7c=moment();var _0x3b309a={'method':'POST','uri':_0x58f36f+_0x0a9d('0x2d'),'body':{'title':intUtil[_0x0a9d('0x2e')](_0x32fb31['Subjects'],_0x4c5e1f,'\x20'),'description':intUtil['getString'](_0x32fb31[_0x0a9d('0x2f')],_0x4c5e1f,'\x0a'),'owner_id':_0x796e8d['userId'],'creater_id':_0x796e8d[_0x0a9d('0x12')],'targetable_id':_0x796e8d[_0x0a9d('0x26')],'targetable_type':'Contact','created_at':_0xf82e7c[_0x0a9d('0x23')](_0x0a9d('0x2c')),'due_date':_0xf82e7c[_0x0a9d('0x30')](0x1e,'m')['format'](_0x0a9d('0x2c'))},'json':!![]};_0x3b309a[_0x0a9d('0xa')]=_0x1f82cf;return rp(_0x3b309a)[_0x0a9d('0xc')](function(_0x227572){_0x796e8d[_0x0a9d('0x31')]=_0x227572[_0x0a9d('0x32')]['id'];logger[_0x0a9d('0xb')](_0x0a9d('0x33'),_0x796e8d[_0x0a9d('0x31')]);_0x3f8efc(_0x796e8d);})[_0x0a9d('0x14')](function(_0x1ae406){logger[_0x0a9d('0x15')]('['+[_0x344cf6[_0x0a9d('0x16')]()]+']',_0x1ae406[_0x0a9d('0x17')]);_0x48689c(_0x1ae406['message']);});});};}function emit(_0x4fbf1d,_0x2184d2,_0x24a02d){var _0x56f3c1={'uri':_0x4fbf1d+_0x0a9d('0x34')+_0x24a02d};io['to'](util[_0x0a9d('0x23')](_0x0a9d('0x35'),_0x2184d2))[_0x0a9d('0x36')](_0x0a9d('0x37'),_0x56f3c1);}exports['cs']=function(_0x4fb97b,_0x93ebf8,_0x25c306,_0x34a31c,_0x4fce5d,_0x243f73,_0x45a990,_0x37e490){var _0x4c331a={};var _0x1d05d1={'Authorization':_0x0a9d('0x38')+_0x243f73[_0x0a9d('0x39')]};_0x243f73[_0x0a9d('0x3a')]=intUtil[_0x0a9d('0x3b')](_0x243f73['remoteUri']);_0x243f73[_0x0a9d('0x3c')]=intUtil[_0x0a9d('0x3b')](_0x243f73[_0x0a9d('0x3c')]);var _0x21f797=_0x243f73[_0x0a9d('0x3a')];_0x4c331a['adminEmail']=_0x243f73[_0x0a9d('0x3d')];_0x4c331a['contactNumber']=_0x37e490[_0x0a9d('0x3e')]()===_0x0a9d('0x3f')?_0x93ebf8[_0x0a9d('0x40')]:_0x93ebf8['calleridnum'];_0x4c331a[_0x0a9d('0x41')]=_0x37e490===_0x0a9d('0x42')||_0x37e490===_0x0a9d('0x43')?_0x0a9d('0x42'):_0x0a9d('0x3f');if(_0x34a31c){_0x4c331a[_0x0a9d('0x19')]=_0x34a31c[_0x0a9d('0xf')];}var _0x1d4656=util[_0x0a9d('0x23')](_0x0a9d('0x44'),_0x243f73[_0x0a9d('0x3c')],_0x93ebf8[_0x0a9d('0x45')],md5(_0x93ebf8['uniqueid']));if(_0x4fce5d&&_0x4fce5d[_0x0a9d('0x46')]){logger[_0x0a9d('0xb')](_0x0a9d('0x47'),_0x0a9d('0x48'));_0x93ebf8[_0x0a9d('0x49')]=_0x1d4656;}else if(_0x45a990&&_0x45a990[_0x0a9d('0x4a')]&&_0x45a990[_0x0a9d('0x4a')]!==_0x0a9d('0x4b')){logger[_0x0a9d('0xb')](_0x0a9d('0x4c'),_0x0a9d('0x48'));_0x93ebf8[_0x0a9d('0x49')]=_0x1d4656;}else{_0x93ebf8['recordingURL']='';}return getAdminId(_0x4c331a,_0x37e490,_0x1d05d1,_0x21f797)['then'](getUser(_0x37e490,_0x1d05d1,_0x21f797))[_0x0a9d('0xc')](getEndUser(_0x37e490,_0x1d05d1,_0x21f797))[_0x0a9d('0xc')](getTicket(_0x37e490,_0x1d05d1,_0x21f797,_0x25c306,_0x93ebf8))[_0x0a9d('0xc')](function(_0x8f32f){logger[_0x0a9d('0xb')](util[_0x0a9d('0x23')](_0x0a9d('0x4d'),_0x8f32f['ticketId']));if(_0x37e490!=='unmanaged'){logger[_0x0a9d('0xb')]('['+[_0x37e490[_0x0a9d('0x16')]()]+']',_0x0a9d('0x4e'));emit(_0x21f797,_0x34a31c[_0x0a9d('0x4f')],_0x8f32f[_0x0a9d('0x26')]);}})[_0x0a9d('0x14')](function(_0x36f889){logger[_0x0a9d('0x15')]('['+[_0x37e490['toUpperCase']()]+_0x0a9d('0x50'),util[_0x0a9d('0x51')](_0x36f889,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 875bf9c..fd0ae0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf80b=['includes','data1','toLowerCase','data2','find','Configurations','queue','routeId','log','EVENT\x20UNKNOWN','vtiger','unknown\x20integration','error','format','../../../../config/logger','[EXEC]','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','dynamics365','freshsales','servicenow','exec'];(function(_0x5b4ad8,_0x2af0ec){var _0x5373b7=function(_0x9b8df1){while(--_0x9b8df1){_0x5b4ad8['push'](_0x5b4ad8['shift']());}};_0x5373b7(++_0x2af0ec);}(_0xf80b,0x165));var _0xbf80=function(_0x33ef3d,_0x41f0e5){_0x33ef3d=_0x33ef3d-0x0;var _0x36b6e1=_0xf80b[_0x33ef3d];return _0x36b6e1;};'use strict';var _=require('lodash');var util=require(_0xbf80('0x0'));var zendesk=require(_0xbf80('0x1'));var salesforce=require(_0xbf80('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xbf80('0x3'));var zoho=require(_0xbf80('0x4'));var desk=require(_0xbf80('0x5'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require('./dynamics365');var freshsales=require(_0xbf80('0x6'));var integrations=[_0xbf80('0x7'),_0xbf80('0x8'),_0xbf80('0x9'),_0xbf80('0xa'),_0xbf80('0xb'),_0xbf80('0xc'),'vtiger',_0xbf80('0xd'),_0xbf80('0xe'),_0xbf80('0xf')];exports[_0xbf80('0x10')]=function(_0x243bf8,_0xfcd74b,_0x31fe00,_0x2e079e,_0x3e51da,_0x45a135){if(_0x31fe00){if(_[_0xbf80('0x11')](integrations,_0x243bf8[_0xbf80('0x12')][_0xbf80('0x13')]())){try{var _0x281370=null;var _0x41995f='';var _0x661419=_0x31fe00[_0x243bf8[_0xbf80('0x12')][_0xbf80('0x13')]()];if(_0x661419){var _0x5922be=_0x661419[_0x243bf8[_0xbf80('0x14')]];if(_0x5922be){var _0x284e72=_[_0xbf80('0x15')](_0x5922be[_0xbf80('0x16')],{'id':parseInt(_0x243bf8['data3'],0xa)});if(_0x284e72){if(_0x2e079e){if(_0x3e51da&&_0xfcd74b[_0xbf80('0x17')]){_0x41995f=_0xbf80('0x17');}else if(_0xfcd74b[_0xbf80('0x18')]){_0x41995f='outbound';}else{console[_0xbf80('0x19')](_0xbf80('0x1a'),_0xfcd74b);}}else{_0x41995f='unmanaged';}switch(_0x243bf8[_0xbf80('0x12')]['toLowerCase']()){case _0xbf80('0x7'):zendesk[_0x41995f](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135);break;case _0xbf80('0x8'):salesforce[_0x41995f](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135);break;case _0xbf80('0x9'):sugarcrm[_0x41995f](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135);break;case _0xbf80('0xa'):freshdesk[_0x41995f](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135);break;case _0xbf80('0xb'):zoho[_0x41995f](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135);break;case _0xbf80('0xc'):desk[_0x41995f](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135);break;case _0xbf80('0x1b'):vtiger[_0x41995f](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135);break;case _0xbf80('0xe'):freshsales['cs'](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135,_0x41995f);break;case _0xbf80('0xf'):servicenow['cs'](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135,_0x41995f);break;case'dynamics365':dynamics365['cs'](_0x243bf8,_0xfcd74b,_0x284e72,_0x2e079e,_0x3e51da,_0x5922be,_0x45a135,_0x41995f);break;default:console[_0xbf80('0x19')](_0xbf80('0x1c'));}}else{_0x281370=require('../../../../config/logger')(_0x243bf8[_0xbf80('0x12')][_0xbf80('0x13')]());_0x281370[_0xbf80('0x1d')]('[EXEC]',util[_0xbf80('0x1e')]('%s\x20configuration\x20#%s\x20not\x20found',_0x243bf8['data1']['toLowerCase'](),_0x243bf8['data3']));}}else{_0x281370=require(_0xbf80('0x1f'))(_0x243bf8['data1'][_0xbf80('0x13')]());_0x281370[_0xbf80('0x1d')](_0xbf80('0x20'),util['format'](_0xbf80('0x21'),_0x243bf8[_0xbf80('0x12')][_0xbf80('0x13')](),_0x243bf8[_0xbf80('0x14')]));}}else{}}catch(_0x3ba3da){console[_0xbf80('0x1d')](_0x3ba3da);}}}};
\ No newline at end of file
+var _0xd9ef=['routeId','EVENT\x20UNKNOWN','unmanaged','log','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','lodash','util','./salesforce','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue'];(function(_0x1ab3a0,_0x601035){var _0x3b470a=function(_0x1dc331){while(--_0x1dc331){_0x1ab3a0['push'](_0x1ab3a0['shift']());}};_0x3b470a(++_0x601035);}(_0xd9ef,0x95));var _0xfd9e=function(_0x53e65f,_0x5b7041){_0x53e65f=_0x53e65f-0x0;var _0x153221=_0xd9ef[_0x53e65f];return _0x153221;};'use strict';var _=require(_0xfd9e('0x0'));var util=require(_0xfd9e('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0xfd9e('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require('./zoho');var desk=require(_0xfd9e('0x3'));var vtiger=require(_0xfd9e('0x4'));var servicenow=require(_0xfd9e('0x5'));var dynamics365=require(_0xfd9e('0x6'));var freshsales=require(_0xfd9e('0x7'));var integrations=[_0xfd9e('0x8'),_0xfd9e('0x9'),_0xfd9e('0xa'),_0xfd9e('0xb'),_0xfd9e('0xc'),_0xfd9e('0xd'),_0xfd9e('0xe'),_0xfd9e('0xf'),'freshsales',_0xfd9e('0x10')];exports[_0xfd9e('0x11')]=function(_0x5c517b,_0x49130f,_0x3d6859,_0x260793,_0x5c7bf2,_0x41a9ab){if(_0x3d6859){if(_[_0xfd9e('0x12')](integrations,_0x5c517b[_0xfd9e('0x13')][_0xfd9e('0x14')]())){try{var _0x36dab3=null;var _0x5c2f96='';var _0x3d76bb=_0x3d6859[_0x5c517b[_0xfd9e('0x13')][_0xfd9e('0x14')]()];if(_0x3d76bb){var _0x9a3da1=_0x3d76bb[_0x5c517b[_0xfd9e('0x15')]];if(_0x9a3da1){var _0x5087b8=_[_0xfd9e('0x16')](_0x9a3da1[_0xfd9e('0x17')],{'id':parseInt(_0x5c517b[_0xfd9e('0x18')],0xa)});if(_0x5087b8){if(_0x260793){if(_0x5c7bf2&&_0x49130f[_0xfd9e('0x19')]){_0x5c2f96='queue';}else if(_0x49130f[_0xfd9e('0x1a')]){_0x5c2f96='outbound';}else{console['log'](_0xfd9e('0x1b'),_0x49130f);}}else{_0x5c2f96=_0xfd9e('0x1c');}switch(_0x5c517b[_0xfd9e('0x13')]['toLowerCase']()){case _0xfd9e('0x8'):zendesk[_0x5c2f96](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab);break;case _0xfd9e('0x9'):salesforce[_0x5c2f96](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab);break;case _0xfd9e('0xa'):sugarcrm[_0x5c2f96](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab);break;case _0xfd9e('0xb'):freshdesk[_0x5c2f96](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab);break;case _0xfd9e('0xc'):zoho[_0x5c2f96](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab);break;case _0xfd9e('0xd'):desk[_0x5c2f96](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab);break;case _0xfd9e('0xe'):vtiger[_0x5c2f96](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab);break;case'freshsales':freshsales['cs'](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab,_0x5c2f96);break;case _0xfd9e('0x10'):servicenow['cs'](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab,_0x5c2f96);break;case _0xfd9e('0xf'):dynamics365['cs'](_0x5c517b,_0x49130f,_0x5087b8,_0x260793,_0x5c7bf2,_0x9a3da1,_0x41a9ab,_0x5c2f96);break;default:console[_0xfd9e('0x1d')](_0xfd9e('0x1e'));}}else{_0x36dab3=require(_0xfd9e('0x1f'))(_0x5c517b[_0xfd9e('0x13')][_0xfd9e('0x14')]());_0x36dab3[_0xfd9e('0x20')](_0xfd9e('0x21'),util[_0xfd9e('0x22')]('%s\x20configuration\x20#%s\x20not\x20found',_0x5c517b[_0xfd9e('0x13')][_0xfd9e('0x14')](),_0x5c517b[_0xfd9e('0x18')]));}}else{_0x36dab3=require(_0xfd9e('0x1f'))(_0x5c517b[_0xfd9e('0x13')]['toLowerCase']());_0x36dab3[_0xfd9e('0x20')](_0xfd9e('0x21'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x5c517b[_0xfd9e('0x13')][_0xfd9e('0x14')](),_0x5c517b[_0xfd9e('0x15')]));}}else{}}catch(_0x16768a){console[_0xfd9e('0x20')](_0x16768a);}}}};
\ No newline at end of file
index 8404e54..74ebcd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f4f=['lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','defaults','redis','emit','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','endUserType','contact','lead','WhoId','account','WhatId','Case','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','additionalSearchContact','merge','$or','Contact','cloneDeep','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','Caller\x20-\x20%s','format','Company','No\x20Company','forEach','includes','string','idField','toString','variable','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','https://login.salesforce.com','clientSecret','login','Connection\x20established.','queue','serverUrl','remoteUri','stripTrailingSlash','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','newTab','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','trigger:salesforce:display','trigger:browser:url','instanceUrl','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','toUpperCase','calleridnum'];(function(_0x5b8a39,_0x18eb9c){var _0x12394d=function(_0x1f646a){while(--_0x1f646a){_0x5b8a39['push'](_0x5b8a39['shift']());}};_0x12394d(++_0x18eb9c);}(_0x3f4f,0x84));var _0xf3f4=function(_0x1d90e9,_0x5c0560){_0x1d90e9=_0x1d90e9-0x0;var _0x5b6181=_0x3f4f[_0x1d90e9];return _0x5b6181;};'use strict';var _=require('lodash');var rp=require(_0xf3f4('0x0'));var moment=require(_0xf3f4('0x1'));var BPromise=require('bluebird');var md5=require(_0xf3f4('0x2'));var jsforce=require('jsforce');var util=require(_0xf3f4('0x3'));var Redis=require(_0xf3f4('0x4'));var intUtil=require(_0xf3f4('0x5'));var config=require(_0xf3f4('0x6'));var logger=require(_0xf3f4('0x7'))(_0xf3f4('0x8'));config['redis']=_[_0xf3f4('0x9')](config[_0xf3f4('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf3f4('0xa')]));function emit(_0x341b60,_0x59974b,_0x32cf3b){io['to'](_0x341b60)[_0xf3f4('0xb')](_0x59974b,_0x32cf3b);}function getTicket(_0x155f8b,_0x20907a,_0x5b4fbd,_0x587717,_0x8982dc,_0x466fb3,_0x5396e1,_0x46b779){var _0x17c536=Object[_0xf3f4('0xc')]({},{'OwnerId':_0x20907a['id'],'Subject':intUtil[_0xf3f4('0xd')](_0x587717[_0xf3f4('0xe')],_0x8982dc,'\x20'),'Description':intUtil[_0xf3f4('0xd')](_0x587717[_0xf3f4('0xf')],_0x8982dc,'\x0a')},getCustomFields(_0x466fb3,_0x8982dc));if(_0x5b4fbd){if(_0x587717[_0xf3f4('0x10')]===_0xf3f4('0x11')){_0x17c536[_0xf3f4('0x12')]=moment[_0xf3f4('0x13')]();_0x17c536[_0xf3f4('0x14')]=![];_0x17c536['IsRecurrence']=![];if(_0x5b4fbd[_0xf3f4('0x15')]===_0xf3f4('0x16')||_0x5b4fbd[_0xf3f4('0x15')]===_0xf3f4('0x17')){_0x17c536[_0xf3f4('0x18')]=_0x5b4fbd['id'];}else if(_0x5b4fbd[_0xf3f4('0x15')]===_0xf3f4('0x19')){_0x17c536[_0xf3f4('0x1a')]=_0x5b4fbd['id'];}}else if(_0x587717['ticketType']===_0xf3f4('0x1b')){if(_0x5b4fbd[_0xf3f4('0x15')]==='contact'){_0x17c536['ContactId']=_0x5b4fbd['id'];}else if(_0x5b4fbd['endUserType']===_0xf3f4('0x19')){_0x17c536[_0xf3f4('0x1c')]=_0x5b4fbd['id'];}else if(_0x5b4fbd[_0xf3f4('0x15')]===_0xf3f4('0x17')&&_0x587717[_0xf3f4('0x1d')]){_0x17c536[_0x587717[_0xf3f4('0x1d')]]=_0x5b4fbd['id'];}else{logger[_0xf3f4('0x1e')](_0xf3f4('0x1f'));}}}return _0x5396e1[_0xf3f4('0x20')](_0x587717['ticketType'])[_0xf3f4('0x21')](_0x17c536);}function getUser(_0x1032a4,_0x2d606d,_0x3130fe){if(!_[_0xf3f4('0x22')](_0x2d606d)&&intUtil['validateEmail'](_0x2d606d)){var _0x1fd933={'Email':_0x2d606d};var _0x39e710={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3130fe[_0xf3f4('0x20')](_0xf3f4('0x23'))[_0xf3f4('0x24')](_0x1fd933,_0x39e710)[_0xf3f4('0x25')]()[_0xf3f4('0x26')](function(_0x1746cb){if(_0x1746cb[_0xf3f4('0x27')]){var _0xf13f6d=_[_0xf3f4('0x24')](_0x1746cb,function(_0x5545ea){return _0x5545ea[_0xf3f4('0x28')]===_0x2d606d;});if(_0xf13f6d){logger[_0xf3f4('0x1e')](_0xf3f4('0x29'),_0x2d606d);return BPromise[_0xf3f4('0x2a')]({'id':_0xf13f6d['Id'],'name':_0xf13f6d[_0xf3f4('0x2b')]});}}else{logger['info'](_0xf3f4('0x2c'),_0x2d606d);return _0x3130fe[_0xf3f4('0x2d')]()[_0xf3f4('0x26')](function(_0x185f79){return BPromise[_0xf3f4('0x2a')]({'id':_0x185f79[_0xf3f4('0x2e')],'name':_0x185f79[_0xf3f4('0x2f')]});});}});}else{logger[_0xf3f4('0x1e')](_0xf3f4('0x2c'),_0x2d606d);return _0x3130fe[_0xf3f4('0x2d')]()['then'](function(_0x1c2062){return BPromise[_0xf3f4('0x2a')]({'id':_0x1c2062[_0xf3f4('0x2e')],'name':_0x1c2062[_0xf3f4('0x2f')]});});}}function getEndUser(_0x5db413,_0x5b44c7,_0x548154,_0x244d7c,_0x482adc){var _0x7977bf={'$or':{'Phone':_0x244d7c}};var _0x5a2b98={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xf3f4('0x26')](function(){logger['info'](_0xf3f4('0x30'),_0x244d7c,_0x5b44c7[_0xf3f4('0x31')]);switch(_0x5b44c7['moduleSearch']){case _0xf3f4('0x32'):var _0x423411=_['cloneDeep'](_0x7977bf);if(_0x5b44c7[_0xf3f4('0x33')]){var _0x296595={};_0x296595[_0x5b44c7[_0xf3f4('0x33')]]=_0x244d7c;_[_0xf3f4('0x34')](_0x423411[_0xf3f4('0x35')],_0x296595);}return _0x482adc[_0xf3f4('0x20')](_0xf3f4('0x36'))['find'](_0x423411,_0x5a2b98)[_0xf3f4('0x25')]()[_0xf3f4('0x26')](function(_0x9cb92c){if(_0x9cb92c&&_0x9cb92c[_0xf3f4('0x27')]){return _0x9cb92c;}else{var _0x510bf9=_[_0xf3f4('0x37')](_0x7977bf);if(_0x5b44c7['additionalSearchLead']){var _0x4a4624={};_0x4a4624[_0x5b44c7[_0xf3f4('0x38')]]=_0x244d7c;_[_0xf3f4('0x34')](_0x510bf9[_0xf3f4('0x35')],_0x4a4624);}return _0x482adc['sobject'](_0xf3f4('0x39'))[_0xf3f4('0x24')](_0x510bf9,_0x5a2b98);}});case _0xf3f4('0x3a'):var _0xa2a9ac=_['cloneDeep'](_0x7977bf);if(_0x5b44c7['additionalSearchAccount']){var _0x296595={};_0x296595[_0x5b44c7[_0xf3f4('0x3b')]]=_0x244d7c;_[_0xf3f4('0x34')](_0xa2a9ac[_0xf3f4('0x35')],_0x296595);}return _0x482adc[_0xf3f4('0x20')](_0xf3f4('0x3c'))[_0xf3f4('0x24')](_0xa2a9ac,_0x5a2b98)[_0xf3f4('0x25')]()[_0xf3f4('0x26')](function(_0x2ab811){if(_0x2ab811&&_0x2ab811['length']){return _0x2ab811;}else{var _0x320ae8=_['cloneDeep'](_0x7977bf);if(_0x5b44c7[_0xf3f4('0x33')]){var _0x175fed={};_0x175fed[_0x5b44c7[_0xf3f4('0x33')]]=_0x244d7c;_[_0xf3f4('0x34')](_0x320ae8[_0xf3f4('0x35')],_0x175fed);}return _0x482adc['sobject']('Contact')['find'](_0x320ae8,_0x5a2b98)[_0xf3f4('0x26')](function(_0x1b420b){if(_0x1b420b&&_0x1b420b[_0xf3f4('0x27')]){return _0x1b420b;}else{var _0x155e00=_[_0xf3f4('0x37')](_0x7977bf);if(_0x5b44c7['additionalSearchLead']){var _0x17a01e={};_0x17a01e[_0x5b44c7[_0xf3f4('0x38')]]=_0x244d7c;_[_0xf3f4('0x34')](_0x155e00['$or'],_0x17a01e);}return _0x482adc[_0xf3f4('0x20')](_0xf3f4('0x39'))[_0xf3f4('0x24')](_0x155e00,_0x5a2b98);}});}});case _0xf3f4('0x16'):var _0x423411=_['cloneDeep'](_0x7977bf);if(_0x5b44c7[_0xf3f4('0x33')]){var _0x296595={};_0x296595[_0x5b44c7[_0xf3f4('0x33')]]=_0x244d7c;_[_0xf3f4('0x34')](_0x423411[_0xf3f4('0x35')],_0x296595);}return _0x482adc[_0xf3f4('0x20')](_0xf3f4('0x36'))[_0xf3f4('0x24')](_0x423411,_0x5a2b98)[_0xf3f4('0x25')]();case'lead':var _0x4bf06a=_[_0xf3f4('0x37')](_0x7977bf);if(_0x5b44c7[_0xf3f4('0x38')]){var _0x296595={};_0x296595[_0x5b44c7['additionalSearchLead']]=_0x244d7c;_[_0xf3f4('0x34')](_0x4bf06a[_0xf3f4('0x35')],_0x296595);}return _0x482adc['sobject'](_0xf3f4('0x39'))[_0xf3f4('0x24')](_0x4bf06a,_0x5a2b98);case'account':var _0xa2a9ac=_[_0xf3f4('0x37')](_0x7977bf);if(_0x5b44c7[_0xf3f4('0x3b')]){var _0x296595={};_0x296595[_0x5b44c7[_0xf3f4('0x3b')]]=_0x244d7c;_[_0xf3f4('0x34')](_0xa2a9ac[_0xf3f4('0x35')],_0x296595);}return _0x482adc[_0xf3f4('0x20')](_0xf3f4('0x3c'))[_0xf3f4('0x24')](_0xa2a9ac,_0x5a2b98);default:return null;}})[_0xf3f4('0x26')](function(_0x615e5){if(_0x615e5&&_0x615e5['length']){var _0x15b03e=_['first'](_0x615e5);if(_0x15b03e){return BPromise['resolve']({'id':_0x15b03e['Id'],'name':_0x15b03e[_0xf3f4('0x2b')],'phone':_0x15b03e[_0xf3f4('0x3d')],'endUserType':_0x15b03e[_0xf3f4('0x3e')][_0xf3f4('0x3f')][_0xf3f4('0x40')]()});}}})[_0xf3f4('0x26')](function(_0x42c16d){if(_0x42c16d){logger[_0xf3f4('0x1e')](_0xf3f4('0x41'),_0x42c16d['endUserType'],_0x244d7c);return BPromise[_0xf3f4('0x2a')](_0x42c16d);}else{logger[_0xf3f4('0x1e')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x244d7c);var _0x239e65={'Phone':_0x244d7c};if(_0x5b44c7[_0xf3f4('0x42')]){if(_0x5b44c7[_0xf3f4('0x42')]===_0xf3f4('0x16')){logger['info'](_0xf3f4('0x43'),_0x244d7c,_0x5b44c7[_0xf3f4('0x42')]);_0x239e65[_0xf3f4('0x44')]=_0x548154!==_0xf3f4('0x45')?_0x548154:util['format'](_0xf3f4('0x46'),_0x244d7c);}else if(_0x5b44c7[_0xf3f4('0x42')]==='lead'){logger[_0xf3f4('0x1e')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x244d7c,_0x5b44c7[_0xf3f4('0x42')]);_0x239e65[_0xf3f4('0x44')]=_0x548154!==_0xf3f4('0x45')?_0x548154:util[_0xf3f4('0x47')](_0xf3f4('0x46'),_0x244d7c);_0x239e65[_0xf3f4('0x48')]=_0xf3f4('0x49');}else if(_0x5b44c7[_0xf3f4('0x42')]===_0xf3f4('0x19')){logger[_0xf3f4('0x1e')](_0xf3f4('0x43'),_0x244d7c,_0x5b44c7['moduleCreate']);_0x239e65[_0xf3f4('0x2b')]=_0x548154!==_0xf3f4('0x45')?_0x548154:util[_0xf3f4('0x47')]('Caller\x20-\x20%s',_0x244d7c);}else{return null;}}return _0x482adc[_0xf3f4('0x20')](_['upperFirst'](_0x5b44c7[_0xf3f4('0x42')]))[_0xf3f4('0x21')](_0x239e65)[_0xf3f4('0x26')](function(_0x1c5297){return BPromise['resolve']({'id':_0x1c5297['id'],'endUserType':_0x5b44c7[_0xf3f4('0x42')]});});}});}function getCustomFields(_0x1e7db7,_0x302080){var _0x72285e={};if(_0x1e7db7[_0xf3f4('0x27')]>0x0){_[_0xf3f4('0x4a')](_0x1e7db7,function(_0x3cd29c){if(_[_0xf3f4('0x4b')]([_0xf3f4('0x4c'),'picklist'],_0x3cd29c[_0xf3f4('0x3f')])&&_0x3cd29c[_0xf3f4('0x4d')]){_0x72285e[_0x3cd29c[_0xf3f4('0x4d')]]=_0x3cd29c['content'][_0xf3f4('0x4e')]();}else if(_0x3cd29c['type']===_0xf3f4('0x4f')&&_0x3cd29c[_0xf3f4('0x50')]&&_0x3cd29c[_0xf3f4('0x4d')]){_0x302080[_0x3cd29c[_0xf3f4('0x50')]]&&(_0x72285e[_0x3cd29c[_0xf3f4('0x4d')]]=_0x302080[_0x3cd29c[_0xf3f4('0x50')]][_0xf3f4('0x4e')]());}else if(_0x3cd29c[_0xf3f4('0x3f')]===_0xf3f4('0x51')&&_0x3cd29c[_0xf3f4('0x52')]&&_0x3cd29c['Variable'][_0xf3f4('0x53')]&&_0x3cd29c['idField']){_0x302080[_0x3cd29c[_0xf3f4('0x52')][_0xf3f4('0x53')]['toLowerCase']()]&&(_0x72285e[_0x3cd29c[_0xf3f4('0x4d')]]=_0x302080[_0x3cd29c[_0xf3f4('0x52')][_0xf3f4('0x53')]['toLowerCase']()]['toString']());}});}return _0x72285e;}function getConnection(_0x201857){var _0x735916=_0x201857[_0xf3f4('0x54')][_0xf3f4('0x55')](_0x201857[_0xf3f4('0x56')]);var _0x4a07dc=new jsforce[(_0xf3f4('0x57'))]({'oauth2':{'loginUrl':_0x201857['remoteUri']||_0xf3f4('0x58'),'clientId':_0x201857['clientId'],'clientSecret':_0x201857[_0xf3f4('0x59')]}});return _0x4a07dc[_0xf3f4('0x5a')](_0x201857['username'],_0x735916)[_0xf3f4('0x26')](function(){logger[_0xf3f4('0x1e')](_0xf3f4('0x5b'));return _0x4a07dc;});}exports[_0xf3f4('0x5c')]=function(_0x1bdfe3,_0xccd4e0,_0x195525,_0xbdd4e0,_0x4b7b06,_0x3fa924){var _0x307639,_0x7605ae,_0x34e82a,_0x15d6f8;_0x3fa924[_0xf3f4('0x5d')]=intUtil['stripTrailingSlash'](_0x3fa924[_0xf3f4('0x5d')]);_0x3fa924[_0xf3f4('0x5e')]=intUtil[_0xf3f4('0x5f')](_0x3fa924[_0xf3f4('0x5e')]);if(_0x4b7b06&&_0x4b7b06[_0xf3f4('0x60')]){logger[_0xf3f4('0x1e')]('[QUEUE]','Recording\x20is\x20enabled!');_0xccd4e0['recordingURL']=util['format'](_0xf3f4('0x61'),_0x3fa924['serverUrl'],_0xccd4e0[_0xf3f4('0x62')],md5(_0xccd4e0['uniqueid']));}else{_0xccd4e0[_0xf3f4('0x63')]='';}return getConnection(_0x3fa924)[_0xf3f4('0x26')](function(_0x5354f5){_0x15d6f8=_0x5354f5;return getUser(_0x3fa924,_0xbdd4e0[_0xf3f4('0x64')],_0x15d6f8);})[_0xf3f4('0x26')](function(_0x47bb96){_0x307639=_0x47bb96;return getEndUser(_0x3fa924,_0x195525,_0xccd4e0[_0xf3f4('0x65')],_0xccd4e0['calleridnum'],_0x15d6f8);})[_0xf3f4('0x26')](function(_0x33fc5c){_0x7605ae=_0x33fc5c;return getTicket(_0x3fa924,_0x307639,_0x7605ae,_0x195525,_0xccd4e0,_0x195525[_0xf3f4('0x66')],_0x15d6f8,_0xf3f4('0x5c'));})['then'](function(_0x5c6f38){_0x34e82a=_0x5c6f38;logger['info'](_0xf3f4('0x67'),_0x34e82a['id']);logger[_0xf3f4('0x1e')](_0xf3f4('0x68'),_0x34e82a['id'],_0xbdd4e0[_0xf3f4('0x53')],_0x3fa924['type']);switch(_0x3fa924[_0xf3f4('0x3f')]){case _0xf3f4('0x69'):emit(util['format'](_0xf3f4('0x6a'),_0xbdd4e0['name']),'trigger:salesforce:display',{'recordId':_0x34e82a['id']});break;case _0xf3f4('0x6b'):emit(util[_0xf3f4('0x47')](_0xf3f4('0x6a'),_0xbdd4e0[_0xf3f4('0x53')]),'trigger:browser:url',{'uri':util[_0xf3f4('0x47')](_0xf3f4('0x6c'),_0x15d6f8['instanceUrl'],_0x34e82a['id'])});break;default:logger[_0xf3f4('0x6d')](_0xf3f4('0x6e'));}})[_0xf3f4('0x6f')](function(_0x544e30){logger[_0xf3f4('0x6d')](_0xf3f4('0x70'),_0x544e30);});};exports['outbound']=function(_0x8f6c59,_0x191d40,_0x138ece,_0x3933a1,_0x33d682,_0x5a9e12,_0x110f7c){var _0x31c5ee,_0x3d7cda,_0x3160c8,_0xfa124b;_0x5a9e12['serverUrl']=intUtil[_0xf3f4('0x5f')](_0x5a9e12[_0xf3f4('0x5d')]);_0x5a9e12['remoteUri']=intUtil[_0xf3f4('0x5f')](_0x5a9e12['remoteUri']);if(_0x110f7c&&_0x110f7c[_0xf3f4('0x71')]&&_0x110f7c[_0xf3f4('0x71')]!==_0xf3f4('0x72')){logger['info']('[OUTBOUND]',_0xf3f4('0x73'));_0x191d40[_0xf3f4('0x63')]=util[_0xf3f4('0x47')](_0xf3f4('0x61'),_0x5a9e12[_0xf3f4('0x5d')],_0x191d40[_0xf3f4('0x62')],md5(_0x191d40[_0xf3f4('0x62')]));}return getConnection(_0x5a9e12)[_0xf3f4('0x26')](function(_0x1c322e){_0xfa124b=_0x1c322e;return getUser(_0x5a9e12,_0x3933a1['email'],_0xfa124b);})[_0xf3f4('0x26')](function(_0x15bddc){_0x31c5ee=_0x15bddc;return getEndUser(_0x5a9e12,_0x138ece,_0x191d40[_0xf3f4('0x74')],_0x191d40[_0xf3f4('0x75')],_0xfa124b);})[_0xf3f4('0x26')](function(_0x10b5c1){_0x3d7cda=_0x10b5c1;return getTicket(_0x5a9e12,_0x31c5ee,_0x3d7cda,_0x138ece,_0x191d40,_0x138ece[_0xf3f4('0x66')],_0xfa124b,'outbound');})[_0xf3f4('0x26')](function(_0x4dbe44){_0x3160c8=_0x4dbe44;logger[_0xf3f4('0x1e')](_0xf3f4('0x76'),_0x3160c8['id']);logger['info']('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x3160c8['id'],_0x3933a1[_0xf3f4('0x53')],_0x5a9e12[_0xf3f4('0x3f')]);switch(_0x5a9e12[_0xf3f4('0x3f')]){case _0xf3f4('0x69'):emit(util[_0xf3f4('0x47')](_0xf3f4('0x6a'),_0x3933a1['name']),_0xf3f4('0x77'),{'recordId':_0x3160c8['id']});break;case _0xf3f4('0x6b'):emit(util['format'](_0xf3f4('0x6a'),_0x3933a1[_0xf3f4('0x53')]),_0xf3f4('0x78'),{'uri':util[_0xf3f4('0x47')](_0xf3f4('0x6c'),_0xfa124b[_0xf3f4('0x79')],_0x3160c8['id'])});break;default:logger[_0xf3f4('0x6d')](_0xf3f4('0x7a'),_0xf3f4('0x7b'));}})[_0xf3f4('0x6f')](function(_0x3ca125){logger['error']('[OUTBOUND]',_0x3ca125);});};exports['unmanaged']=function(_0x2d7ad4,_0x4dbac0,_0x35791c,_0x45be83,_0x32a730,_0x57f41c){var _0x57db1a,_0x45d4a7,_0x15a7fd,_0x5b1b2c;_0x57f41c[_0xf3f4('0x5d')]=intUtil[_0xf3f4('0x5f')](_0x57f41c[_0xf3f4('0x5d')]);_0x57f41c[_0xf3f4('0x5e')]=intUtil[_0xf3f4('0x5f')](_0x57f41c[_0xf3f4('0x5e')]);if(_0x32a730&&_0x32a730[_0xf3f4('0x60')]){logger[_0xf3f4('0x1e')]('['+_0x4dbac0['lastevent'][_0xf3f4('0x7c')]()+']',_0xf3f4('0x73'));_0x4dbac0[_0xf3f4('0x63')]=util['format'](_0xf3f4('0x61'),_0x57f41c['serverUrl'],_0x4dbac0[_0xf3f4('0x62')],md5(_0x4dbac0[_0xf3f4('0x62')]));}else{_0x4dbac0[_0xf3f4('0x63')]='';}return getConnection(_0x57f41c)[_0xf3f4('0x26')](function(_0x452057){_0x5b1b2c=_0x452057;if(!_[_0xf3f4('0x22')](_0x45be83)){return getUser(_0x57f41c,_0x45be83['name'],_0x5b1b2c);}else{return getUser(_0x57f41c,null,_0x5b1b2c);}})[_0xf3f4('0x26')](function(_0x34ec01){_0x57db1a=_0x34ec01;return getEndUser(_0x57f41c,_0x35791c,_0x4dbac0[_0xf3f4('0x65')],_0x4dbac0[_0xf3f4('0x7d')],_0x5b1b2c);})['then'](function(_0x5804e8){_0x45d4a7=_0x5804e8;return getTicket(_0x57f41c,_0x57db1a,_0x45d4a7,_0x35791c,_0x4dbac0,_0x35791c[_0xf3f4('0x66')],_0x5b1b2c);})[_0xf3f4('0x26')](function(_0x5437b4){_0x15a7fd=_0x5437b4;logger[_0xf3f4('0x1e')]('['+_0x4dbac0[_0xf3f4('0x7e')][_0xf3f4('0x7c')]()+_0xf3f4('0x7f'),_0x15a7fd['id']);logger[_0xf3f4('0x1e')]('['+_0x4dbac0[_0xf3f4('0x7e')][_0xf3f4('0x7c')]()+_0xf3f4('0x80'),_0x57f41c[_0xf3f4('0x3f')]);})['catch'](function(_0xcf4768){logger[_0xf3f4('0x6d')]('['+_0x4dbac0[_0xf3f4('0x7e')][_0xf3f4('0x7c')]()+']',_0xcf4768);});};
\ No newline at end of file
+var _0xf5ad=['Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','trigger:salesforce:display','trigger:browser:url','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','lastevent','toUpperCase','calleridnum',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','md5','jsforce','util','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','assign','Subjects','Descriptions','ticketType','Task','utc','IsReminderSet','IsRecurrence','endUserType','contact','WhoId','account','WhatId','Case','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','isNil','sobject','execute','then','find','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','length','additionalSearchLead','Lead','additionalSearchAccount','Account','first','Phone','attributes','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','LastName','<unknown>','format','Caller\x20-\x20%s','lead','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','upperFirst','includes','string','picklist','type','idField','content','toString','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','user:%s','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','outbound','recordingFormat','none','destcalleridname','destcalleridnum'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf5ad,0x8a));var _0xdf5a=function(_0x12af36,_0x57970d){_0x12af36=_0x12af36-0x0;var _0x12564e=_0xf5ad[_0x12af36];return _0x12564e;};'use strict';var _=require(_0xdf5a('0x0'));var rp=require(_0xdf5a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0xdf5a('0x2'));var jsforce=require(_0xdf5a('0x3'));var util=require(_0xdf5a('0x4'));var Redis=require('ioredis');var intUtil=require(_0xdf5a('0x5'));var config=require(_0xdf5a('0x6'));var logger=require(_0xdf5a('0x7'))(_0xdf5a('0x8'));config[_0xdf5a('0x9')]=_[_0xdf5a('0xa')](config['redis'],{'host':_0xdf5a('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x2fca98,_0x4e2610,_0x2e0718){io['to'](_0x2fca98)['emit'](_0x4e2610,_0x2e0718);}function getTicket(_0x2b479a,_0x22d290,_0x41f368,_0x325b92,_0xcbdb01,_0x2466aa,_0x389bab,_0x309269){var _0x550ae5=Object[_0xdf5a('0xc')]({},{'OwnerId':_0x22d290['id'],'Subject':intUtil['getString'](_0x325b92[_0xdf5a('0xd')],_0xcbdb01,'\x20'),'Description':intUtil['getString'](_0x325b92[_0xdf5a('0xe')],_0xcbdb01,'\x0a')},getCustomFields(_0x2466aa,_0xcbdb01));if(_0x41f368){if(_0x325b92[_0xdf5a('0xf')]===_0xdf5a('0x10')){_0x550ae5['ActivityDate']=moment[_0xdf5a('0x11')]();_0x550ae5[_0xdf5a('0x12')]=![];_0x550ae5[_0xdf5a('0x13')]=![];if(_0x41f368[_0xdf5a('0x14')]===_0xdf5a('0x15')||_0x41f368['endUserType']==='lead'){_0x550ae5[_0xdf5a('0x16')]=_0x41f368['id'];}else if(_0x41f368[_0xdf5a('0x14')]===_0xdf5a('0x17')){_0x550ae5[_0xdf5a('0x18')]=_0x41f368['id'];}}else if(_0x325b92[_0xdf5a('0xf')]===_0xdf5a('0x19')){if(_0x41f368[_0xdf5a('0x14')]===_0xdf5a('0x15')){_0x550ae5['ContactId']=_0x41f368['id'];}else if(_0x41f368[_0xdf5a('0x14')]===_0xdf5a('0x17')){_0x550ae5['AccountId']=_0x41f368['id'];}else if(_0x41f368[_0xdf5a('0x14')]==='lead'&&_0x325b92[_0xdf5a('0x1a')]){_0x550ae5[_0x325b92[_0xdf5a('0x1a')]]=_0x41f368['id'];}else{logger[_0xdf5a('0x1b')](_0xdf5a('0x1c'));}}}return _0x389bab['sobject'](_0x325b92[_0xdf5a('0xf')])[_0xdf5a('0x1d')](_0x550ae5);}function getUser(_0x562da9,_0x1e7a34,_0x170e42){if(!_[_0xdf5a('0x1e')](_0x1e7a34)&&intUtil['validateEmail'](_0x1e7a34)){var _0x59a077={'Email':_0x1e7a34};var _0x509517={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x170e42[_0xdf5a('0x1f')]('User')['find'](_0x59a077,_0x509517)[_0xdf5a('0x20')]()[_0xdf5a('0x21')](function(_0x1754ef){if(_0x1754ef['length']){var _0x161b41=_[_0xdf5a('0x22')](_0x1754ef,function(_0x401d9c){return _0x401d9c['Email']===_0x1e7a34;});if(_0x161b41){logger['info']('Agent\x20%s\x20found.',_0x1e7a34);return BPromise[_0xdf5a('0x23')]({'id':_0x161b41['Id'],'name':_0x161b41[_0xdf5a('0x24')]});}}else{logger[_0xdf5a('0x1b')](_0xdf5a('0x25'),_0x1e7a34);return _0x170e42['identity']()[_0xdf5a('0x21')](function(_0x30908a){return BPromise[_0xdf5a('0x23')]({'id':_0x30908a[_0xdf5a('0x26')],'name':_0x30908a[_0xdf5a('0x27')]});});}});}else{logger[_0xdf5a('0x1b')](_0xdf5a('0x25'),_0x1e7a34);return _0x170e42[_0xdf5a('0x28')]()['then'](function(_0x217dad){return BPromise[_0xdf5a('0x23')]({'id':_0x217dad[_0xdf5a('0x26')],'name':_0x217dad[_0xdf5a('0x27')]});});}}function getEndUser(_0x1cb0c1,_0x4997d0,_0x5c6167,_0x3c935f,_0x247786){var _0x91827f={'$or':{'Phone':_0x3c935f}};var _0x59f5d7={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xdf5a('0x21')](function(){logger[_0xdf5a('0x1b')](_0xdf5a('0x29'),_0x3c935f,_0x4997d0['moduleSearch']);switch(_0x4997d0['moduleSearch']){case _0xdf5a('0x2a'):var _0x4bd891=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0[_0xdf5a('0x2c')]){var _0x489537={};_0x489537[_0x4997d0[_0xdf5a('0x2c')]]=_0x3c935f;_[_0xdf5a('0x2d')](_0x4bd891[_0xdf5a('0x2e')],_0x489537);}return _0x247786[_0xdf5a('0x1f')](_0xdf5a('0x2f'))['find'](_0x4bd891,_0x59f5d7)[_0xdf5a('0x20')]()[_0xdf5a('0x21')](function(_0x9a7c8f){if(_0x9a7c8f&&_0x9a7c8f[_0xdf5a('0x30')]){return _0x9a7c8f;}else{var _0x5e3beb=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0['additionalSearchLead']){var _0x5745cf={};_0x5745cf[_0x4997d0[_0xdf5a('0x31')]]=_0x3c935f;_[_0xdf5a('0x2d')](_0x5e3beb[_0xdf5a('0x2e')],_0x5745cf);}return _0x247786[_0xdf5a('0x1f')](_0xdf5a('0x32'))[_0xdf5a('0x22')](_0x5e3beb,_0x59f5d7);}});case'account_contact_lead':var _0x3fc53c=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0[_0xdf5a('0x33')]){var _0x489537={};_0x489537[_0x4997d0[_0xdf5a('0x33')]]=_0x3c935f;_[_0xdf5a('0x2d')](_0x3fc53c[_0xdf5a('0x2e')],_0x489537);}return _0x247786['sobject'](_0xdf5a('0x34'))[_0xdf5a('0x22')](_0x3fc53c,_0x59f5d7)[_0xdf5a('0x20')]()[_0xdf5a('0x21')](function(_0x566764){if(_0x566764&&_0x566764[_0xdf5a('0x30')]){return _0x566764;}else{var _0x32512b=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0[_0xdf5a('0x2c')]){var _0xcc32f4={};_0xcc32f4[_0x4997d0['additionalSearchContact']]=_0x3c935f;_[_0xdf5a('0x2d')](_0x32512b['$or'],_0xcc32f4);}return _0x247786[_0xdf5a('0x1f')]('Contact')[_0xdf5a('0x22')](_0x32512b,_0x59f5d7)[_0xdf5a('0x21')](function(_0x24b378){if(_0x24b378&&_0x24b378[_0xdf5a('0x30')]){return _0x24b378;}else{var _0x5c9f22=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0[_0xdf5a('0x31')]){var _0x28f2ff={};_0x28f2ff[_0x4997d0[_0xdf5a('0x31')]]=_0x3c935f;_['merge'](_0x5c9f22['$or'],_0x28f2ff);}return _0x247786[_0xdf5a('0x1f')](_0xdf5a('0x32'))['find'](_0x5c9f22,_0x59f5d7);}});}});case _0xdf5a('0x15'):var _0x4bd891=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0['additionalSearchContact']){var _0x489537={};_0x489537[_0x4997d0[_0xdf5a('0x2c')]]=_0x3c935f;_['merge'](_0x4bd891[_0xdf5a('0x2e')],_0x489537);}return _0x247786[_0xdf5a('0x1f')](_0xdf5a('0x2f'))[_0xdf5a('0x22')](_0x4bd891,_0x59f5d7)[_0xdf5a('0x20')]();case'lead':var _0x4a6492=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0['additionalSearchLead']){var _0x489537={};_0x489537[_0x4997d0[_0xdf5a('0x31')]]=_0x3c935f;_[_0xdf5a('0x2d')](_0x4a6492[_0xdf5a('0x2e')],_0x489537);}return _0x247786[_0xdf5a('0x1f')](_0xdf5a('0x32'))['find'](_0x4a6492,_0x59f5d7);case _0xdf5a('0x17'):var _0x3fc53c=_[_0xdf5a('0x2b')](_0x91827f);if(_0x4997d0[_0xdf5a('0x33')]){var _0x489537={};_0x489537[_0x4997d0[_0xdf5a('0x33')]]=_0x3c935f;_['merge'](_0x3fc53c[_0xdf5a('0x2e')],_0x489537);}return _0x247786[_0xdf5a('0x1f')](_0xdf5a('0x34'))['find'](_0x3fc53c,_0x59f5d7);default:return null;}})[_0xdf5a('0x21')](function(_0xf73cfc){if(_0xf73cfc&&_0xf73cfc[_0xdf5a('0x30')]){var _0x514f51=_[_0xdf5a('0x35')](_0xf73cfc);if(_0x514f51){return BPromise[_0xdf5a('0x23')]({'id':_0x514f51['Id'],'name':_0x514f51[_0xdf5a('0x24')],'phone':_0x514f51[_0xdf5a('0x36')],'endUserType':_0x514f51[_0xdf5a('0x37')]['type'][_0xdf5a('0x38')]()});}}})[_0xdf5a('0x21')](function(_0x46f36e){if(_0x46f36e){logger[_0xdf5a('0x1b')](_0xdf5a('0x39'),_0x46f36e[_0xdf5a('0x14')],_0x3c935f);return BPromise[_0xdf5a('0x23')](_0x46f36e);}else{logger[_0xdf5a('0x1b')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x3c935f);var _0xbfb15b={'Phone':_0x3c935f};if(_0x4997d0['moduleCreate']){if(_0x4997d0[_0xdf5a('0x3a')]===_0xdf5a('0x15')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x3c935f,_0x4997d0['moduleCreate']);_0xbfb15b[_0xdf5a('0x3b')]=_0x5c6167!==_0xdf5a('0x3c')?_0x5c6167:util[_0xdf5a('0x3d')](_0xdf5a('0x3e'),_0x3c935f);}else if(_0x4997d0['moduleCreate']===_0xdf5a('0x3f')){logger[_0xdf5a('0x1b')](_0xdf5a('0x40'),_0x3c935f,_0x4997d0[_0xdf5a('0x3a')]);_0xbfb15b[_0xdf5a('0x3b')]=_0x5c6167!=='<unknown>'?_0x5c6167:util['format']('Caller\x20-\x20%s',_0x3c935f);_0xbfb15b[_0xdf5a('0x41')]='No\x20Company';}else if(_0x4997d0[_0xdf5a('0x3a')]===_0xdf5a('0x17')){logger[_0xdf5a('0x1b')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x3c935f,_0x4997d0['moduleCreate']);_0xbfb15b[_0xdf5a('0x24')]=_0x5c6167!==_0xdf5a('0x3c')?_0x5c6167:util['format'](_0xdf5a('0x3e'),_0x3c935f);}else{return null;}}return _0x247786[_0xdf5a('0x1f')](_[_0xdf5a('0x42')](_0x4997d0[_0xdf5a('0x3a')]))[_0xdf5a('0x1d')](_0xbfb15b)['then'](function(_0x2239f4){return BPromise[_0xdf5a('0x23')]({'id':_0x2239f4['id'],'endUserType':_0x4997d0['moduleCreate']});});}});}function getCustomFields(_0x3c55ab,_0x3f5377){var _0x4cf824={};if(_0x3c55ab[_0xdf5a('0x30')]>0x0){_['forEach'](_0x3c55ab,function(_0x454c46){if(_[_0xdf5a('0x43')]([_0xdf5a('0x44'),_0xdf5a('0x45')],_0x454c46[_0xdf5a('0x46')])&&_0x454c46[_0xdf5a('0x47')]){_0x4cf824[_0x454c46['idField']]=_0x454c46[_0xdf5a('0x48')][_0xdf5a('0x49')]();}else if(_0x454c46[_0xdf5a('0x46')]==='variable'&&_0x454c46[_0xdf5a('0x4a')]&&_0x454c46[_0xdf5a('0x47')]){_0x3f5377[_0x454c46[_0xdf5a('0x4a')]]&&(_0x4cf824[_0x454c46[_0xdf5a('0x47')]]=_0x3f5377[_0x454c46[_0xdf5a('0x4a')]][_0xdf5a('0x49')]());}else if(_0x454c46[_0xdf5a('0x46')]===_0xdf5a('0x4b')&&_0x454c46[_0xdf5a('0x4c')]&&_0x454c46['Variable'][_0xdf5a('0x4d')]&&_0x454c46[_0xdf5a('0x47')]){_0x3f5377[_0x454c46[_0xdf5a('0x4c')]['name'][_0xdf5a('0x38')]()]&&(_0x4cf824[_0x454c46['idField']]=_0x3f5377[_0x454c46[_0xdf5a('0x4c')][_0xdf5a('0x4d')][_0xdf5a('0x38')]()]['toString']());}});}return _0x4cf824;}function getConnection(_0x2720f7){var _0x38dc28=_0x2720f7[_0xdf5a('0x4e')][_0xdf5a('0x4f')](_0x2720f7[_0xdf5a('0x50')]);var _0x5211b3=new jsforce[(_0xdf5a('0x51'))]({'oauth2':{'loginUrl':_0x2720f7[_0xdf5a('0x52')]||_0xdf5a('0x53'),'clientId':_0x2720f7[_0xdf5a('0x54')],'clientSecret':_0x2720f7[_0xdf5a('0x55')]}});return _0x5211b3[_0xdf5a('0x56')](_0x2720f7[_0xdf5a('0x57')],_0x38dc28)[_0xdf5a('0x21')](function(){logger[_0xdf5a('0x1b')](_0xdf5a('0x58'));return _0x5211b3;});}exports[_0xdf5a('0x59')]=function(_0x5c776c,_0x6c9cae,_0x3862fb,_0x41e07b,_0x1586e0,_0x17f443){var _0x1f3c39,_0x514591,_0x25f03a,_0x3e29a4;_0x17f443[_0xdf5a('0x5a')]=intUtil[_0xdf5a('0x5b')](_0x17f443[_0xdf5a('0x5a')]);_0x17f443[_0xdf5a('0x52')]=intUtil[_0xdf5a('0x5b')](_0x17f443[_0xdf5a('0x52')]);if(_0x1586e0&&_0x1586e0[_0xdf5a('0x5c')]){logger[_0xdf5a('0x1b')](_0xdf5a('0x5d'),_0xdf5a('0x5e'));_0x6c9cae[_0xdf5a('0x5f')]=util[_0xdf5a('0x3d')](_0xdf5a('0x60'),_0x17f443['serverUrl'],_0x6c9cae['uniqueid'],md5(_0x6c9cae[_0xdf5a('0x61')]));}else{_0x6c9cae[_0xdf5a('0x5f')]='';}return getConnection(_0x17f443)[_0xdf5a('0x21')](function(_0x237e1f){_0x3e29a4=_0x237e1f;return getUser(_0x17f443,_0x41e07b[_0xdf5a('0x62')],_0x3e29a4);})[_0xdf5a('0x21')](function(_0x2f816d){_0x1f3c39=_0x2f816d;return getEndUser(_0x17f443,_0x3862fb,_0x6c9cae[_0xdf5a('0x63')],_0x6c9cae['calleridnum'],_0x3e29a4);})[_0xdf5a('0x21')](function(_0x431fac){_0x514591=_0x431fac;return getTicket(_0x17f443,_0x1f3c39,_0x514591,_0x3862fb,_0x6c9cae,_0x3862fb['Fields'],_0x3e29a4,_0xdf5a('0x59'));})[_0xdf5a('0x21')](function(_0x17578e){_0x25f03a=_0x17578e;logger[_0xdf5a('0x1b')](_0xdf5a('0x64'),_0x25f03a['id']);logger[_0xdf5a('0x1b')](_0xdf5a('0x65'),_0x25f03a['id'],_0x41e07b['name'],_0x17f443[_0xdf5a('0x46')]);switch(_0x17f443['type']){case _0xdf5a('0x66'):emit(util[_0xdf5a('0x3d')]('user:%s',_0x41e07b[_0xdf5a('0x4d')]),'trigger:salesforce:display',{'recordId':_0x25f03a['id']});break;case _0xdf5a('0x67'):emit(util[_0xdf5a('0x3d')](_0xdf5a('0x68'),_0x41e07b[_0xdf5a('0x4d')]),'trigger:browser:url',{'uri':util['format'](_0xdf5a('0x69'),_0x3e29a4[_0xdf5a('0x6a')],_0x25f03a['id'])});break;default:logger[_0xdf5a('0x6b')](_0xdf5a('0x6c'));}})['catch'](function(_0x2a2ff0){logger['error'](_0xdf5a('0x5d'),_0x2a2ff0);});};exports[_0xdf5a('0x6d')]=function(_0x44414e,_0x1721b3,_0x3d4002,_0x2e1716,_0x1e7c47,_0x271cb5,_0x41dccb){var _0x7df606,_0x2b4d00,_0x5e53a7,_0x33d7db;_0x271cb5[_0xdf5a('0x5a')]=intUtil['stripTrailingSlash'](_0x271cb5[_0xdf5a('0x5a')]);_0x271cb5[_0xdf5a('0x52')]=intUtil['stripTrailingSlash'](_0x271cb5[_0xdf5a('0x52')]);if(_0x41dccb&&_0x41dccb[_0xdf5a('0x6e')]&&_0x41dccb['recordingFormat']!==_0xdf5a('0x6f')){logger[_0xdf5a('0x1b')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x1721b3[_0xdf5a('0x5f')]=util[_0xdf5a('0x3d')](_0xdf5a('0x60'),_0x271cb5[_0xdf5a('0x5a')],_0x1721b3['uniqueid'],md5(_0x1721b3[_0xdf5a('0x61')]));}return getConnection(_0x271cb5)[_0xdf5a('0x21')](function(_0x53e841){_0x33d7db=_0x53e841;return getUser(_0x271cb5,_0x2e1716[_0xdf5a('0x62')],_0x33d7db);})[_0xdf5a('0x21')](function(_0x384602){_0x7df606=_0x384602;return getEndUser(_0x271cb5,_0x3d4002,_0x1721b3[_0xdf5a('0x70')],_0x1721b3[_0xdf5a('0x71')],_0x33d7db);})[_0xdf5a('0x21')](function(_0xe6bbf5){_0x2b4d00=_0xe6bbf5;return getTicket(_0x271cb5,_0x7df606,_0x2b4d00,_0x3d4002,_0x1721b3,_0x3d4002[_0xdf5a('0x72')],_0x33d7db,'outbound');})['then'](function(_0x266b8d){_0x5e53a7=_0x266b8d;logger[_0xdf5a('0x1b')](_0xdf5a('0x73'),_0x5e53a7['id']);logger[_0xdf5a('0x1b')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x5e53a7['id'],_0x2e1716[_0xdf5a('0x4d')],_0x271cb5[_0xdf5a('0x46')]);switch(_0x271cb5['type']){case'integrationTab':emit(util[_0xdf5a('0x3d')]('user:%s',_0x2e1716['name']),_0xdf5a('0x74'),{'recordId':_0x5e53a7['id']});break;case _0xdf5a('0x67'):emit(util[_0xdf5a('0x3d')](_0xdf5a('0x68'),_0x2e1716['name']),_0xdf5a('0x75'),{'uri':util['format'](_0xdf5a('0x69'),_0x33d7db['instanceUrl'],_0x5e53a7['id'])});break;default:logger[_0xdf5a('0x6b')](_0xdf5a('0x76'),_0xdf5a('0x77'));}})[_0xdf5a('0x78')](function(_0x11637a){logger['error']('[OUTBOUND]',_0x11637a);});};exports[_0xdf5a('0x79')]=function(_0x416b82,_0x379b5b,_0x5d6357,_0x839216,_0x2c3fb3,_0x38394e){var _0x33cc74,_0x2dfb14,_0x4bb880,_0x1b4918;_0x38394e[_0xdf5a('0x5a')]=intUtil[_0xdf5a('0x5b')](_0x38394e[_0xdf5a('0x5a')]);_0x38394e[_0xdf5a('0x52')]=intUtil[_0xdf5a('0x5b')](_0x38394e[_0xdf5a('0x52')]);if(_0x2c3fb3&&_0x2c3fb3[_0xdf5a('0x5c')]){logger[_0xdf5a('0x1b')]('['+_0x379b5b[_0xdf5a('0x7a')][_0xdf5a('0x7b')]()+']','Recording\x20is\x20enabled!');_0x379b5b[_0xdf5a('0x5f')]=util['format'](_0xdf5a('0x60'),_0x38394e[_0xdf5a('0x5a')],_0x379b5b[_0xdf5a('0x61')],md5(_0x379b5b[_0xdf5a('0x61')]));}else{_0x379b5b[_0xdf5a('0x5f')]='';}return getConnection(_0x38394e)[_0xdf5a('0x21')](function(_0x3730fb){_0x1b4918=_0x3730fb;if(!_[_0xdf5a('0x1e')](_0x839216)){return getUser(_0x38394e,_0x839216[_0xdf5a('0x4d')],_0x1b4918);}else{return getUser(_0x38394e,null,_0x1b4918);}})['then'](function(_0x3a35e3){_0x33cc74=_0x3a35e3;return getEndUser(_0x38394e,_0x5d6357,_0x379b5b[_0xdf5a('0x63')],_0x379b5b[_0xdf5a('0x7c')],_0x1b4918);})['then'](function(_0x294633){_0x2dfb14=_0x294633;return getTicket(_0x38394e,_0x33cc74,_0x2dfb14,_0x5d6357,_0x379b5b,_0x5d6357[_0xdf5a('0x72')],_0x1b4918);})[_0xdf5a('0x21')](function(_0x39bbb6){_0x4bb880=_0x39bbb6;logger['info']('['+_0x379b5b['lastevent'][_0xdf5a('0x7b')]()+']\x20Ticket\x20%s\x20created.',_0x4bb880['id']);logger['info']('['+_0x379b5b[_0xdf5a('0x7a')]['toUpperCase']()+_0xdf5a('0x7d'),_0x38394e[_0xdf5a('0x46')]);})[_0xdf5a('0x78')](function(_0x3742da){logger[_0xdf5a('0x6b')]('['+_0x379b5b[_0xdf5a('0x7a')][_0xdf5a('0x7b')]()+']',_0x3742da);});};
\ No newline at end of file
index 7fdfb6a..56762c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af4=[']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','name','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','username','password','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','isNil','email','adminEmail','destcalleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','[QUEUE]','recordingFormat','Recording\x20is\x20enabled!','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','inspect','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','redis','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','info','catch','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','result','active','true','sys_id','userId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','System','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','toString','idField','type','variable','variableName','customVariable','Variable','outbound','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','Incident\x20-\x20','ticketNumber','push','all'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x5af4,0x13e));var _0x45af=function(_0x34dc9e,_0x148065){_0x34dc9e=_0x34dc9e-0x0;var _0x5dc611=_0x5af4[_0x34dc9e];return _0x5dc611;};'use strict';var _=require('lodash');var Promise=require(_0x45af('0x0'));var rp=require(_0x45af('0x1'));var util=require(_0x45af('0x2'));var md5=require(_0x45af('0x3'));var Redis=require(_0x45af('0x4'));var intUtil=require(_0x45af('0x5'));var config=require(_0x45af('0x6'));var logger=require('../../../../config/logger')('servicenow');config[_0x45af('0x7')]=_['defaults'](config[_0x45af('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x45af('0x7')]));function getAdminUser(_0x50410f,_0x588624,_0xf31e9f,_0x5ad242,_0x494676,_0x97f6fc){return new Promise(function(_0x5e650e,_0x3e7a15){var _0x5e62bf={'method':_0x45af('0x8'),'uri':_0x5ad242+_0x45af('0x9')+'&'+_0x494676+'&'+_0x97f6fc,'auth':_0x588624,'json':!![]};return rp(_0x5e62bf)[_0x45af('0xa')](function(_0x27f1fc){if(_0x27f1fc['result'][_0x45af('0xb')]>0x0){_0xf31e9f[_0x45af('0xc')]=_0x27f1fc['result'][0x0]['sys_id'];}logger[_0x45af('0xd')]('['+[_0x50410f['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0xf31e9f);_0x5e650e(_0xf31e9f);})[_0x45af('0xe')](function(_0xccd4ab){logger[_0x45af('0xf')]('['+[_0x50410f[_0x45af('0x10')]()]+']',_0xccd4ab[_0x45af('0x11')]);_0x3e7a15(_0xccd4ab[_0x45af('0x11')]);});});}function getUser(_0x31bc95,_0x15c961,_0x385266,_0x526166,_0x406b54){return function(_0x5234eb){logger['info']('['+[_0x31bc95[_0x45af('0x10')]()]+_0x45af('0x12'),_0x5234eb);return new Promise(function(_0x650d6,_0x2f8f5b){if(intUtil[_0x45af('0x13')](_0x5234eb[_0x45af('0x14')])){var _0xd937a6={'method':'GET','uri':_0x385266+'sys_user?sysparm_query=email%3D'+_0x5234eb['userEmail']+'&'+_0x526166+'&'+_0x406b54,'auth':_0x15c961,'json':!![]};logger[_0x45af('0xd')]('['+[_0x31bc95['toUpperCase']()]+_0x45af('0x15'),_0xd937a6);return rp(_0xd937a6)['then'](function(_0x4f15bd){logger['info']('['+[_0x31bc95[_0x45af('0x10')]()]+_0x45af('0x16'),_0x4f15bd);if(_0x4f15bd[_0x45af('0x17')]['length']>0x0&&String(_0x4f15bd[_0x45af('0x17')][0x0][_0x45af('0x18')])===_0x45af('0x19')){_0x5234eb['userId']=_0x4f15bd['result'][0x0][_0x45af('0x1a')];}else{_0x5234eb[_0x45af('0x1b')]=_0x5234eb[_0x45af('0xc')];_0x5234eb['userEmail']=_0x5234eb['adminEmail'];}logger[_0x45af('0xd')]('['+[_0x31bc95[_0x45af('0x10')]()]+_0x45af('0x1c'),_0x5234eb);_0x650d6(_0x5234eb);})[_0x45af('0xe')](function(_0x5b7705){logger['error']('['+[_0x31bc95[_0x45af('0x10')]()]+']',_0x5b7705[_0x45af('0x11')]);_0x2f8f5b(_0x5b7705[_0x45af('0x11')]);});}else{logger[_0x45af('0xd')]('['+[_0x31bc95['toUpperCase']()]+_0x45af('0x1d'));_0x5234eb['userId']=_0x5234eb[_0x45af('0xc')];_0x5234eb[_0x45af('0x14')]=_0x5234eb['adminEmail'];_0x650d6(_0x5234eb);}});};}function createEndUser(_0x2880bc,_0x3310f8,_0x32ebe6,_0x4997ff,_0x5e1e02){logger['info']('['+[_0x2880bc[_0x45af('0x10')]()]+_0x45af('0x1e'),_0x32ebe6);return new Promise(function(_0x5c9436,_0x2cc9bc){var _0x1f4615={'method':_0x45af('0x1f'),'uri':_0x4997ff+'sys_user?'+_0x5e1e02,'body':{'user_name':_0x32ebe6[_0x45af('0x20')],'roles':_0x45af('0x21'),'first_name':_0x32ebe6[_0x45af('0x20')],'active':'true','date_format':_0x45af('0x22'),'phone':_0x32ebe6[_0x45af('0x20')]},'auth':_0x3310f8,'json':!![]};return rp(_0x1f4615)[_0x45af('0xa')](function(_0x9b1ce){logger[_0x45af('0xd')]('['+[_0x2880bc[_0x45af('0x10')]()]+'],\x20EndUser\x20schema',_0x9b1ce[_0x45af('0x17')]);_0x32ebe6['endUserId']=_0x9b1ce[_0x45af('0x17')]['sys_id'];_0x5c9436(_0x32ebe6);})['catch'](function(_0x3cf262){logger[_0x45af('0xf')]('['+[_0x2880bc['toUpperCase']()]+']',_0x3cf262['message']);_0x2cc9bc(_0x3cf262['message']);});});}function getEndUser(_0x43dad6,_0xc9583e,_0x306107,_0x3e705e,_0x52bf9f){return function(_0x46f9d4){logger[_0x45af('0xd')]('['+[_0x43dad6[_0x45af('0x10')]()]+_0x45af('0x23'),_0x46f9d4);return new Promise(function(_0x4aa62a,_0x380d76){var _0x117ac8={'method':_0x45af('0x8'),'uri':_0x306107+_0x45af('0x24')+_0x46f9d4['endUserNumber']+'&'+_0x3e705e+'&'+_0x52bf9f,'auth':_0xc9583e,'json':!![]};return rp(_0x117ac8)['then'](function(_0xda5b44){if(_0xda5b44['result'][_0x45af('0xb')]>0x0){_0x46f9d4[_0x45af('0x25')]=_0xda5b44[_0x45af('0x17')][0x0][_0x45af('0x1a')];logger[_0x45af('0xd')]('['+[_0x43dad6[_0x45af('0x10')]()]+_0x45af('0x26'),_0x46f9d4);_0x4aa62a(_0x46f9d4);}else{return createEndUser(_0x43dad6,_0xc9583e,_0x46f9d4,_0x306107,_0x3e705e)[_0x45af('0xa')](function(_0x25f573){logger[_0x45af('0xd')]('['+[_0x43dad6[_0x45af('0x10')]()]+_0x45af('0x27'),_0x25f573);_0x4aa62a(_0x25f573);});}})[_0x45af('0xe')](function(_0x5252ad){logger[_0x45af('0xf')]('['+[_0x43dad6['toUpperCase']()]+']',_0x5252ad['message']);_0x380d76(_0x5252ad[_0x45af('0x11')]);});});};}function getCustomFields(_0x582496,_0x331939){var _0x27053b={};if(_0x582496[_0x45af('0xb')]>0x0){_[_0x45af('0x28')](_0x582496,function(_0x3d92f3){if(_[_0x45af('0x29')]([_0x45af('0x2a'),_0x45af('0x2b')],_0x3d92f3['type'])&&_0x3d92f3[_0x45af('0x2c')]&&!_0x3d92f3[_0x45af('0x2d')]){_0x27053b[_0x3d92f3[_0x45af('0x2c')][_0x45af('0x2e')]()]=_0x3d92f3[_0x45af('0x2f')][_0x45af('0x30')]();}else if(_['includes']([_0x45af('0x2a'),'picklist'],_0x3d92f3['type'])&&_0x3d92f3[_0x45af('0x31')]&&_0x3d92f3['customField']){_0x27053b[_0x3d92f3[_0x45af('0x31')][_0x45af('0x2e')]()]=_0x3d92f3[_0x45af('0x2f')][_0x45af('0x30')]();}else if(_0x3d92f3[_0x45af('0x32')]===_0x45af('0x33')&&_0x3d92f3[_0x45af('0x34')]&&_0x3d92f3[_0x45af('0x31')]&&_0x3d92f3['customField']){_0x27053b[_0x3d92f3[_0x45af('0x31')][_0x45af('0x2e')]()]=_0x331939[_0x3d92f3['variableName']][_0x45af('0x30')]();}else if(_0x3d92f3[_0x45af('0x32')]===_0x45af('0x35')&&_0x3d92f3[_0x45af('0x36')]&&_0x3d92f3[_0x45af('0x36')]['name']&&_0x3d92f3[_0x45af('0x31')]&&_0x3d92f3[_0x45af('0x2d')]){_0x27053b[_0x3d92f3[_0x45af('0x31')][_0x45af('0x2e')]()]=_0x331939[_0x3d92f3[_0x45af('0x36')]['name'][_0x45af('0x2e')]()][_0x45af('0x30')]();}});}return _0x27053b;}function getTicket(_0x5289da,_0xd423bd,_0x224c18,_0x2f8b9d,_0x59f6be,_0x4e174c){return function(_0x446110){logger['info']('['+[_0x5289da[_0x45af('0x10')]()]+']\x20getTicket\x20input\x20crm',_0x446110);return new Promise(function(_0x341728,_0x48fc77){var _0x24f201=_0x5289da[_0x45af('0x2e')]()===_0x45af('0x37')?_0x446110['userId']:_0x446110[_0x45af('0x25')];var _0x2a4695={'method':_0x45af('0x1f'),'uri':_0x224c18+'incident'+'?'+_0x4e174c,'body':Object['assign']({},{'active':'true','caller_id':_0x24f201,'assigned_to':_0x446110[_0x45af('0x1b')],'short_description':intUtil['getString'](_0x2f8b9d[_0x45af('0x38')],_0x59f6be,'\x20'),'description':intUtil['getString'](_0x2f8b9d[_0x45af('0x39')],_0x59f6be,'\x0a')},getCustomFields(_0x2f8b9d['Fields'],_0x59f6be)),'auth':_0xd423bd,'json':!![]};return rp(_0x2a4695)[_0x45af('0xa')](function(_0x541652){logger[_0x45af('0xd')]('['+[_0x5289da[_0x45af('0x10')]()]+_0x45af('0x3a'),_0x541652['result']);_0x446110[_0x45af('0x3b')]=_0x541652[_0x45af('0x17')]['sys_id'];_0x446110['ticketNumber']=_0x541652[_0x45af('0x17')][_0x45af('0x3c')];logger[_0x45af('0xd')]('['+[_0x5289da[_0x45af('0x10')]()]+_0x45af('0x3d'),_0x446110);_0x341728(_0x446110);})['catch'](function(_0xeced20){logger[_0x45af('0xf')]('['+[_0x5289da[_0x45af('0x10')]()]+']',_0xeced20[_0x45af('0x11')]);_0x48fc77(_0xeced20[_0x45af('0x11')]);});});};}function createRemoteTag(_0x59f547,_0x48f03b,_0x490d67,_0x512899){return new Promise(function(_0x5e31a2,_0x3b5c7b){var _0x579c62={'method':'POST','uri':_0x490d67+_0x45af('0x3e')+'?'+_0x512899,'body':{'short_description':_0x59f547,'global':!![],'active':!![],'name':_0x59f547},'auth':_0x48f03b,'json':!![]};return rp(_0x579c62)['then'](function(_0x165f80){var _0x429c6c=_0x165f80[_0x45af('0x17')][_0x45af('0x1a')];_0x5e31a2(_0x429c6c);});});}function getRemoteTag(_0x533fe8,_0x24e87d,_0x32797e,_0x5d9801,_0x4a346c){return new Promise(function(_0x5bdcca,_0x3b421f){var _0x1e154c={'method':_0x45af('0x8'),'uri':_0x32797e+_0x45af('0x3e')+_0x45af('0x3f')+_0x533fe8+'&'+_0x5d9801,'auth':_0x24e87d,'json':!![]};return rp(_0x1e154c)[_0x45af('0xa')](function(_0x4f6be6){if(_0x4f6be6[_0x45af('0x17')][_0x45af('0xb')]>0x0){var _0x275ca2=_0x4f6be6[_0x45af('0x17')][0x0][_0x45af('0x1a')];_0x5bdcca(_0x275ca2);}else{return createRemoteTag(_0x533fe8,_0x24e87d,_0x32797e,_0x5d9801)[_0x45af('0xa')](function(_0x4e0e10){_0x5bdcca(_0x4e0e10);});}});});}function assignTagToIncident(_0x3764f8,_0x536ef0,_0x5779b5,_0x2c6393,_0x422d90){return new Promise(function(_0x486f3e,_0x21fe4e){var _0x4d2b51={'method':_0x45af('0x1f'),'uri':_0x5779b5+_0x45af('0x40')+'?'+_0x422d90,'body':{'label':_0x3764f8,'table':_0x45af('0x41'),'id_type':'Incident','table_key':_0x2c6393['ticketId'],'title':_0x45af('0x42')+_0x2c6393[_0x45af('0x43')],'id_display':_0x2c6393[_0x45af('0x43')]},'auth':_0x536ef0,'json':!![]};return rp(_0x4d2b51)[_0x45af('0xa')](function(_0xdc790c){_0x486f3e();})[_0x45af('0xe')](function(){_0x486f3e();});});}function manageTags(_0x19c758,_0x1b82fc,_0x304028,_0x5dea8b,_0x3a5f39,_0x4acb31,_0x5db7c4){return new Promise(function(_0x4c310c,_0xd9b78a){var _0x12ae11=[];_0x1b82fc['forEach'](function(_0x255721){_0x12ae11[_0x45af('0x44')](getRemoteTag(_0x255721,_0x304028,_0x5dea8b,_0x4acb31,_0x5db7c4));});return Promise[_0x45af('0x45')](_0x12ae11)[_0x45af('0xa')](function(_0x3e66e9){if(_0x3e66e9[_0x45af('0xb')]){logger[_0x45af('0xd')]('['+[_0x19c758[_0x45af('0x10')]()]+_0x45af('0x46'),_0x3e66e9);var _0x367079=[];_0x3e66e9['forEach'](function(_0x2defca){_0x367079['push'](assignTagToIncident(_0x2defca,_0x304028,_0x5dea8b,_0x3a5f39,_0x4acb31));});return Promise[_0x45af('0x45')](_0x367079)[_0x45af('0xa')](function(){_0x4c310c();})[_0x45af('0xe')](function(){_0x4c310c();});}else{_0x4c310c();}});});}function getTags(_0xbf072f,_0x434a15,_0x2ca7d1,_0x501497,_0x3a696a,_0x313521){return function(_0x275f23){return new Promise(function(_0x3aa9ac,_0x2a9b4d){var _0x235bc2=[];var _0x2cbea7=_0x501497[_0x45af('0x47')];if(_0x2cbea7&&_0x2cbea7[_0x45af('0xb')]>0x0){_0x235bc2=_['map'](_0x2cbea7,_0x45af('0x48'));}if(_0x235bc2[_0x45af('0xb')]>0x0){return manageTags(_0xbf072f,_0x235bc2,_0x434a15,_0x2ca7d1,_0x275f23,_0x3a696a,_0x313521)['then'](function(){_0x3aa9ac(_0x275f23);});}else{_0x3aa9ac(_0x275f23);}});};}function emit(_0x4589d3,_0x4cee46,_0x24915b){var _0x4884d1='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x45af('0x49');var _0x4cc9d0={'uri':_0x4589d3+_0x45af('0x4a')+_0x24915b+_0x4884d1};io['to'](util[_0x45af('0x4b')](_0x45af('0x4c'),_0x4cee46))['emit']('trigger:browser:url',_0x4cc9d0);}exports['cs']=function(_0x3e3c92,_0x274216,_0x5f01a5,_0x45ef2c,_0x5c4dbf,_0x23e3a7,_0x42ecf7,_0x2afc9b){var _0x2b025b={};var _0x345007={'user':_0x23e3a7[_0x45af('0x4d')],'pass':_0x23e3a7[_0x45af('0x4e')]};var _0x4101a7='sysparm_limit=1';var _0x39abbb=_0x45af('0x4f');_0x23e3a7[_0x45af('0x50')]=intUtil['stripTrailingSlash'](_0x23e3a7['remoteUri']);_0x23e3a7[_0x45af('0x51')]=intUtil[_0x45af('0x52')](_0x23e3a7[_0x45af('0x51')]);var _0x2bb300=util[_0x45af('0x4b')]('%s/api/now/table/',_0x23e3a7[_0x45af('0x50')]);_0x2b025b['userEmail']=!_[_0x45af('0x53')](_0x45ef2c)?_0x45ef2c[_0x45af('0x54')]:null;_0x2b025b[_0x45af('0x55')]=_0x23e3a7[_0x45af('0x54')];_0x2b025b[_0x45af('0x20')]=_0x2afc9b[_0x45af('0x2e')]()===_0x45af('0x37')?_0x274216[_0x45af('0x56')]:_0x274216['calleridnum'];_0x2b025b['callDirection']=_0x2afc9b===_0x45af('0x57')||_0x2afc9b===_0x45af('0x58')?_0x45af('0x57'):_0x45af('0x37');var _0x386a96=util[_0x45af('0x4b')](_0x45af('0x59'),_0x23e3a7[_0x45af('0x51')],_0x274216['uniqueid'],md5(_0x274216['uniqueid']));if(_0x5c4dbf&&_0x5c4dbf['monitor_format']){logger[_0x45af('0xd')](_0x45af('0x5a'),'Recording\x20is\x20enabled!');_0x274216['recordingURL']=_0x386a96;}else if(_0x42ecf7&&_0x42ecf7[_0x45af('0x5b')]&&_0x42ecf7[_0x45af('0x5b')]!=='none'){logger[_0x45af('0xd')]('[OUTBOUND]',_0x45af('0x5c'));_0x274216[_0x45af('0x5d')]=_0x386a96;}else{_0x274216['recordingURL']='';}return getAdminUser(_0x2afc9b,_0x345007,_0x2b025b,_0x2bb300,_0x39abbb,_0x4101a7)[_0x45af('0xa')](getUser(_0x2afc9b,_0x345007,_0x2bb300,_0x39abbb,_0x4101a7))['then'](getEndUser(_0x2afc9b,_0x345007,_0x2bb300,_0x39abbb,_0x4101a7))[_0x45af('0xa')](getTicket(_0x2afc9b,_0x345007,_0x2bb300,_0x5f01a5,_0x274216,_0x39abbb))['then'](function(_0x5e1f8d){logger[_0x45af('0xd')](util[_0x45af('0x4b')](_0x45af('0x5e'),_0x5e1f8d['ticketId']));logger[_0x45af('0xd')](util['format'](_0x45af('0x5f'),_0x2afc9b));if(_0x2afc9b!==_0x45af('0x58')){logger[_0x45af('0xd')]('['+[_0x2afc9b[_0x45af('0x10')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x23e3a7[_0x45af('0x50')],_0x45ef2c[_0x45af('0x48')],_0x5e1f8d[_0x45af('0x3b')]);}})[_0x45af('0xe')](function(_0x1665d3){logger[_0x45af('0xf')]('['+[_0x2afc9b[_0x45af('0x10')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x45af('0x60')](_0x1665d3,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xcdd8=['string','type','nameField','customField','toLowerCase','content','idField','toString','variableName','customVariable','Variable','name','outbound','incident','assign','true','Subjects','getString','Descriptions','Fields','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','forEach','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','isNil','email','destcalleridnum','callDirection','queue','unmanaged','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','servicenow','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','userId','sys_id','adminEmail','],\x20getUser\x20crm','catch','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','includes'];(function(_0x533840,_0x2b78f1){var _0x3487b8=function(_0x2a3501){while(--_0x2a3501){_0x533840['push'](_0x533840['shift']());}};_0x3487b8(++_0x2b78f1);}(_0xcdd8,0xaf));var _0x8cdd=function(_0x22df13,_0x50643f){_0x22df13=_0x22df13-0x0;var _0x2a34ca=_0xcdd8[_0x22df13];return _0x2a34ca;};'use strict';var _=require('lodash');var Promise=require(_0x8cdd('0x0'));var rp=require(_0x8cdd('0x1'));var util=require(_0x8cdd('0x2'));var md5=require(_0x8cdd('0x3'));var Redis=require(_0x8cdd('0x4'));var intUtil=require(_0x8cdd('0x5'));var config=require(_0x8cdd('0x6'));var logger=require('../../../../config/logger')(_0x8cdd('0x7'));config[_0x8cdd('0x8')]=_['defaults'](config[_0x8cdd('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x8cdd('0x9'))(new Redis(config[_0x8cdd('0x8')]));function getAdminUser(_0x5a5dae,_0x595f2e,_0x2606aa,_0x5d5221,_0x50f3c4,_0xcfbf22){return new Promise(function(_0x4be304,_0x3ac82d){var _0x1c1cf6={'method':_0x8cdd('0xa'),'uri':_0x5d5221+_0x8cdd('0xb')+'&'+_0x50f3c4+'&'+_0xcfbf22,'auth':_0x595f2e,'json':!![]};return rp(_0x1c1cf6)[_0x8cdd('0xc')](function(_0xf00e80){if(_0xf00e80[_0x8cdd('0xd')][_0x8cdd('0xe')]>0x0){_0x2606aa[_0x8cdd('0xf')]=_0xf00e80['result'][0x0]['sys_id'];}logger[_0x8cdd('0x10')]('['+[_0x5a5dae[_0x8cdd('0x11')]()]+_0x8cdd('0x12'),_0x2606aa);_0x4be304(_0x2606aa);})['catch'](function(_0x37efc1){logger[_0x8cdd('0x13')]('['+[_0x5a5dae['toUpperCase']()]+']',_0x37efc1[_0x8cdd('0x14')]);_0x3ac82d(_0x37efc1[_0x8cdd('0x14')]);});});}function getUser(_0x1738e4,_0x35bdfb,_0x1a7bd3,_0x4508dd,_0x1ed76e){return function(_0x291595){logger['info']('['+[_0x1738e4['toUpperCase']()]+'],\x20getUser\x20input\x20crm',_0x291595);return new Promise(function(_0x3da88a,_0x2d7da4){if(intUtil[_0x8cdd('0x15')](_0x291595[_0x8cdd('0x16')])){var _0x3dfc3a={'method':_0x8cdd('0xa'),'uri':_0x1a7bd3+_0x8cdd('0x17')+_0x291595[_0x8cdd('0x16')]+'&'+_0x4508dd+'&'+_0x1ed76e,'auth':_0x35bdfb,'json':!![]};logger['info']('['+[_0x1738e4[_0x8cdd('0x11')]()]+_0x8cdd('0x18'),_0x3dfc3a);return rp(_0x3dfc3a)[_0x8cdd('0xc')](function(_0x1d12cf){logger[_0x8cdd('0x10')]('['+[_0x1738e4[_0x8cdd('0x11')]()]+_0x8cdd('0x19'),_0x1d12cf);if(_0x1d12cf[_0x8cdd('0xd')][_0x8cdd('0xe')]>0x0&&String(_0x1d12cf[_0x8cdd('0xd')][0x0]['active'])==='true'){_0x291595[_0x8cdd('0x1a')]=_0x1d12cf[_0x8cdd('0xd')][0x0][_0x8cdd('0x1b')];}else{_0x291595[_0x8cdd('0x1a')]=_0x291595[_0x8cdd('0xf')];_0x291595[_0x8cdd('0x16')]=_0x291595[_0x8cdd('0x1c')];}logger[_0x8cdd('0x10')]('['+[_0x1738e4[_0x8cdd('0x11')]()]+_0x8cdd('0x1d'),_0x291595);_0x3da88a(_0x291595);})[_0x8cdd('0x1e')](function(_0x22f401){logger['error']('['+[_0x1738e4[_0x8cdd('0x11')]()]+']',_0x22f401[_0x8cdd('0x14')]);_0x2d7da4(_0x22f401[_0x8cdd('0x14')]);});}else{logger[_0x8cdd('0x10')]('['+[_0x1738e4[_0x8cdd('0x11')]()]+']\x20using\x20admin\x20profile');_0x291595[_0x8cdd('0x1a')]=_0x291595[_0x8cdd('0xf')];_0x291595[_0x8cdd('0x16')]=_0x291595[_0x8cdd('0x1c')];_0x3da88a(_0x291595);}});};}function createEndUser(_0x4ffae6,_0x1f86f8,_0x1ed942,_0x390d03,_0x3fa290){logger[_0x8cdd('0x10')]('['+[_0x4ffae6[_0x8cdd('0x11')]()]+_0x8cdd('0x1f'),_0x1ed942);return new Promise(function(_0x3ecf7d,_0x5854bf){var _0x322cac={'method':_0x8cdd('0x20'),'uri':_0x390d03+_0x8cdd('0x21')+_0x3fa290,'body':{'user_name':_0x1ed942[_0x8cdd('0x22')],'roles':_0x8cdd('0x23'),'first_name':_0x1ed942[_0x8cdd('0x22')],'active':'true','date_format':_0x8cdd('0x24'),'phone':_0x1ed942[_0x8cdd('0x22')]},'auth':_0x1f86f8,'json':!![]};return rp(_0x322cac)[_0x8cdd('0xc')](function(_0x34ee07){logger[_0x8cdd('0x10')]('['+[_0x4ffae6[_0x8cdd('0x11')]()]+_0x8cdd('0x25'),_0x34ee07[_0x8cdd('0xd')]);_0x1ed942[_0x8cdd('0x26')]=_0x34ee07[_0x8cdd('0xd')]['sys_id'];_0x3ecf7d(_0x1ed942);})[_0x8cdd('0x1e')](function(_0x2cbfc5){logger[_0x8cdd('0x13')]('['+[_0x4ffae6['toUpperCase']()]+']',_0x2cbfc5[_0x8cdd('0x14')]);_0x5854bf(_0x2cbfc5[_0x8cdd('0x14')]);});});}function getEndUser(_0x1b2f18,_0x10434a,_0x931699,_0x59883b,_0x22adbe){return function(_0x2478cb){logger['info']('['+[_0x1b2f18['toUpperCase']()]+_0x8cdd('0x27'),_0x2478cb);return new Promise(function(_0x57a7e4,_0xda059c){var _0x70186={'method':_0x8cdd('0xa'),'uri':_0x931699+'sys_user?sysparm_query=phone%3D'+_0x2478cb['endUserNumber']+'&'+_0x59883b+'&'+_0x22adbe,'auth':_0x10434a,'json':!![]};return rp(_0x70186)['then'](function(_0x1ea0a4){if(_0x1ea0a4[_0x8cdd('0xd')]['length']>0x0){_0x2478cb[_0x8cdd('0x26')]=_0x1ea0a4['result'][0x0]['sys_id'];logger[_0x8cdd('0x10')]('['+[_0x1b2f18[_0x8cdd('0x11')]()]+_0x8cdd('0x28'),_0x2478cb);_0x57a7e4(_0x2478cb);}else{return createEndUser(_0x1b2f18,_0x10434a,_0x2478cb,_0x931699,_0x59883b)[_0x8cdd('0xc')](function(_0x4c4031){logger[_0x8cdd('0x10')]('['+[_0x1b2f18['toUpperCase']()]+_0x8cdd('0x29'),_0x4c4031);_0x57a7e4(_0x4c4031);});}})['catch'](function(_0x43f75d){logger[_0x8cdd('0x13')]('['+[_0x1b2f18[_0x8cdd('0x11')]()]+']',_0x43f75d['message']);_0xda059c(_0x43f75d[_0x8cdd('0x14')]);});});};}function getCustomFields(_0x107a01,_0x4a6854){var _0x8648db={};if(_0x107a01[_0x8cdd('0xe')]>0x0){_['forEach'](_0x107a01,function(_0x997a98){if(_[_0x8cdd('0x2a')]([_0x8cdd('0x2b'),'picklist'],_0x997a98[_0x8cdd('0x2c')])&&_0x997a98[_0x8cdd('0x2d')]&&!_0x997a98[_0x8cdd('0x2e')]){_0x8648db[_0x997a98['nameField'][_0x8cdd('0x2f')]()]=_0x997a98[_0x8cdd('0x30')]['toString']();}else if(_[_0x8cdd('0x2a')](['string','picklist'],_0x997a98[_0x8cdd('0x2c')])&&_0x997a98[_0x8cdd('0x31')]&&_0x997a98['customField']){_0x8648db[_0x997a98['idField'][_0x8cdd('0x2f')]()]=_0x997a98['content'][_0x8cdd('0x32')]();}else if(_0x997a98[_0x8cdd('0x2c')]==='variable'&&_0x997a98[_0x8cdd('0x33')]&&_0x997a98[_0x8cdd('0x31')]&&_0x997a98[_0x8cdd('0x2e')]){_0x8648db[_0x997a98[_0x8cdd('0x31')][_0x8cdd('0x2f')]()]=_0x4a6854[_0x997a98['variableName']][_0x8cdd('0x32')]();}else if(_0x997a98[_0x8cdd('0x2c')]===_0x8cdd('0x34')&&_0x997a98[_0x8cdd('0x35')]&&_0x997a98[_0x8cdd('0x35')][_0x8cdd('0x36')]&&_0x997a98[_0x8cdd('0x31')]&&_0x997a98[_0x8cdd('0x2e')]){_0x8648db[_0x997a98[_0x8cdd('0x31')][_0x8cdd('0x2f')]()]=_0x4a6854[_0x997a98[_0x8cdd('0x35')][_0x8cdd('0x36')][_0x8cdd('0x2f')]()][_0x8cdd('0x32')]();}});}return _0x8648db;}function getTicket(_0x54fc5e,_0x564af5,_0x2549ef,_0x32de00,_0x40e88a,_0x4292f3){return function(_0x1eb632){logger[_0x8cdd('0x10')]('['+[_0x54fc5e[_0x8cdd('0x11')]()]+']\x20getTicket\x20input\x20crm',_0x1eb632);return new Promise(function(_0x4c65ff,_0x5535a8){var _0x418e67=_0x54fc5e[_0x8cdd('0x2f')]()===_0x8cdd('0x37')?_0x1eb632[_0x8cdd('0x1a')]:_0x1eb632[_0x8cdd('0x26')];var _0x5ebab5={'method':_0x8cdd('0x20'),'uri':_0x2549ef+_0x8cdd('0x38')+'?'+_0x4292f3,'body':Object[_0x8cdd('0x39')]({},{'active':_0x8cdd('0x3a'),'caller_id':_0x418e67,'assigned_to':_0x1eb632[_0x8cdd('0x1a')],'short_description':intUtil['getString'](_0x32de00[_0x8cdd('0x3b')],_0x40e88a,'\x20'),'description':intUtil[_0x8cdd('0x3c')](_0x32de00[_0x8cdd('0x3d')],_0x40e88a,'\x0a')},getCustomFields(_0x32de00[_0x8cdd('0x3e')],_0x40e88a)),'auth':_0x564af5,'json':!![]};return rp(_0x5ebab5)[_0x8cdd('0xc')](function(_0x4a1bde){logger['info']('['+[_0x54fc5e[_0x8cdd('0x11')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x4a1bde['result']);_0x1eb632[_0x8cdd('0x3f')]=_0x4a1bde['result']['sys_id'];_0x1eb632[_0x8cdd('0x40')]=_0x4a1bde[_0x8cdd('0xd')]['number'];logger[_0x8cdd('0x10')]('['+[_0x54fc5e[_0x8cdd('0x11')]()]+_0x8cdd('0x41'),_0x1eb632);_0x4c65ff(_0x1eb632);})[_0x8cdd('0x1e')](function(_0x121ebe){logger[_0x8cdd('0x13')]('['+[_0x54fc5e['toUpperCase']()]+']',_0x121ebe[_0x8cdd('0x14')]);_0x5535a8(_0x121ebe['message']);});});};}function createRemoteTag(_0x4e70e7,_0x3240b2,_0xc8de83,_0x95465e){return new Promise(function(_0x519490,_0x461ad8){var _0x470e76={'method':_0x8cdd('0x20'),'uri':_0xc8de83+_0x8cdd('0x42')+'?'+_0x95465e,'body':{'short_description':_0x4e70e7,'global':!![],'active':!![],'name':_0x4e70e7},'auth':_0x3240b2,'json':!![]};return rp(_0x470e76)[_0x8cdd('0xc')](function(_0x2ed71b){var _0x2e1c3f=_0x2ed71b[_0x8cdd('0xd')][_0x8cdd('0x1b')];_0x519490(_0x2e1c3f);});});}function getRemoteTag(_0x439c4a,_0x16802f,_0x1779b9,_0x1b660d,_0xdfc93b){return new Promise(function(_0x538fe2,_0x5164ff){var _0x5326e6={'method':'GET','uri':_0x1779b9+_0x8cdd('0x42')+_0x8cdd('0x43')+_0x439c4a+'&'+_0x1b660d,'auth':_0x16802f,'json':!![]};return rp(_0x5326e6)[_0x8cdd('0xc')](function(_0x206c01){if(_0x206c01[_0x8cdd('0xd')][_0x8cdd('0xe')]>0x0){var _0x3213c9=_0x206c01[_0x8cdd('0xd')][0x0][_0x8cdd('0x1b')];_0x538fe2(_0x3213c9);}else{return createRemoteTag(_0x439c4a,_0x16802f,_0x1779b9,_0x1b660d)[_0x8cdd('0xc')](function(_0x24705e){_0x538fe2(_0x24705e);});}});});}function assignTagToIncident(_0x559d1e,_0x482f62,_0x175d4f,_0x105e9e,_0x559084){return new Promise(function(_0x582ae2,_0x3482d3){var _0xe26eb0={'method':_0x8cdd('0x20'),'uri':_0x175d4f+_0x8cdd('0x44')+'?'+_0x559084,'body':{'label':_0x559d1e,'table':_0x8cdd('0x38'),'id_type':_0x8cdd('0x45'),'table_key':_0x105e9e[_0x8cdd('0x3f')],'title':'Incident\x20-\x20'+_0x105e9e[_0x8cdd('0x40')],'id_display':_0x105e9e[_0x8cdd('0x40')]},'auth':_0x482f62,'json':!![]};return rp(_0xe26eb0)[_0x8cdd('0xc')](function(_0x2986c7){_0x582ae2();})[_0x8cdd('0x1e')](function(){_0x582ae2();});});}function manageTags(_0x973f71,_0x537440,_0x42f8dc,_0x23ba3c,_0x410b7f,_0x17000e,_0xcc29a6){return new Promise(function(_0x35bcd0,_0x1e4eb5){var _0x20ce84=[];_0x537440[_0x8cdd('0x46')](function(_0x1feddc){_0x20ce84['push'](getRemoteTag(_0x1feddc,_0x42f8dc,_0x23ba3c,_0x17000e,_0xcc29a6));});return Promise[_0x8cdd('0x47')](_0x20ce84)['then'](function(_0x3b02d5){if(_0x3b02d5[_0x8cdd('0xe')]){logger[_0x8cdd('0x10')]('['+[_0x973f71[_0x8cdd('0x11')]()]+_0x8cdd('0x48'),_0x3b02d5);var _0x416f9f=[];_0x3b02d5[_0x8cdd('0x46')](function(_0x2c3806){_0x416f9f[_0x8cdd('0x49')](assignTagToIncident(_0x2c3806,_0x42f8dc,_0x23ba3c,_0x410b7f,_0x17000e));});return Promise[_0x8cdd('0x47')](_0x416f9f)[_0x8cdd('0xc')](function(){_0x35bcd0();})[_0x8cdd('0x1e')](function(){_0x35bcd0();});}else{_0x35bcd0();}});});}function getTags(_0x4065be,_0x305e02,_0x395aea,_0x1343d7,_0x569338,_0x2c2852){return function(_0x360e9a){return new Promise(function(_0x3f3a2e,_0x222b0e){var _0x10455b=[];var _0x553ea3=_0x1343d7[_0x8cdd('0x4a')];if(_0x553ea3&&_0x553ea3[_0x8cdd('0xe')]>0x0){_0x10455b=_[_0x8cdd('0x4b')](_0x553ea3,_0x8cdd('0x36'));}if(_0x10455b[_0x8cdd('0xe')]>0x0){return manageTags(_0x4065be,_0x10455b,_0x305e02,_0x395aea,_0x360e9a,_0x569338,_0x2c2852)['then'](function(){_0x3f3a2e(_0x360e9a);});}else{_0x3f3a2e(_0x360e9a);}});};}function emit(_0x36192f,_0x42a09b,_0x5c0444){var _0x58d9cd='%26sysparm_record_target%3Dincident'+_0x8cdd('0x4c')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x8cdd('0x4d');var _0x63343d={'uri':_0x36192f+_0x8cdd('0x4e')+_0x5c0444+_0x58d9cd};io['to'](util['format'](_0x8cdd('0x4f'),_0x42a09b))[_0x8cdd('0x50')](_0x8cdd('0x51'),_0x63343d);}exports['cs']=function(_0xe5b551,_0x1d9bd5,_0x24c254,_0x2b6d0b,_0x940025,_0x4f7c6c,_0x4e3e9c,_0x26b75b){var _0x2e65b8={};var _0x5c4482={'user':_0x4f7c6c[_0x8cdd('0x52')],'pass':_0x4f7c6c[_0x8cdd('0x53')]};var _0x308605=_0x8cdd('0x54');var _0x3abad3=_0x8cdd('0x55');_0x4f7c6c[_0x8cdd('0x56')]=intUtil[_0x8cdd('0x57')](_0x4f7c6c['remoteUri']);_0x4f7c6c[_0x8cdd('0x58')]=intUtil['stripTrailingSlash'](_0x4f7c6c[_0x8cdd('0x58')]);var _0x4f1e42=util['format']('%s/api/now/table/',_0x4f7c6c[_0x8cdd('0x56')]);_0x2e65b8[_0x8cdd('0x16')]=!_[_0x8cdd('0x59')](_0x2b6d0b)?_0x2b6d0b[_0x8cdd('0x5a')]:null;_0x2e65b8['adminEmail']=_0x4f7c6c['email'];_0x2e65b8[_0x8cdd('0x22')]=_0x26b75b[_0x8cdd('0x2f')]()===_0x8cdd('0x37')?_0x1d9bd5[_0x8cdd('0x5b')]:_0x1d9bd5['calleridnum'];_0x2e65b8[_0x8cdd('0x5c')]=_0x26b75b===_0x8cdd('0x5d')||_0x26b75b===_0x8cdd('0x5e')?'queue':_0x8cdd('0x37');var _0x380afd=util[_0x8cdd('0x5f')](_0x8cdd('0x60'),_0x4f7c6c[_0x8cdd('0x58')],_0x1d9bd5[_0x8cdd('0x61')],md5(_0x1d9bd5[_0x8cdd('0x61')]));if(_0x940025&&_0x940025['monitor_format']){logger[_0x8cdd('0x10')](_0x8cdd('0x62'),'Recording\x20is\x20enabled!');_0x1d9bd5[_0x8cdd('0x63')]=_0x380afd;}else if(_0x4e3e9c&&_0x4e3e9c[_0x8cdd('0x64')]&&_0x4e3e9c[_0x8cdd('0x64')]!==_0x8cdd('0x65')){logger[_0x8cdd('0x10')](_0x8cdd('0x66'),_0x8cdd('0x67'));_0x1d9bd5[_0x8cdd('0x63')]=_0x380afd;}else{_0x1d9bd5[_0x8cdd('0x63')]='';}return getAdminUser(_0x26b75b,_0x5c4482,_0x2e65b8,_0x4f1e42,_0x3abad3,_0x308605)[_0x8cdd('0xc')](getUser(_0x26b75b,_0x5c4482,_0x4f1e42,_0x3abad3,_0x308605))[_0x8cdd('0xc')](getEndUser(_0x26b75b,_0x5c4482,_0x4f1e42,_0x3abad3,_0x308605))[_0x8cdd('0xc')](getTicket(_0x26b75b,_0x5c4482,_0x4f1e42,_0x24c254,_0x1d9bd5,_0x3abad3))[_0x8cdd('0xc')](function(_0x36d4db){logger[_0x8cdd('0x10')](util['format'](_0x8cdd('0x68'),_0x36d4db[_0x8cdd('0x3f')]));logger[_0x8cdd('0x10')](util[_0x8cdd('0x5f')](_0x8cdd('0x69'),_0x26b75b));if(_0x26b75b!==_0x8cdd('0x5e')){logger[_0x8cdd('0x10')]('['+[_0x26b75b[_0x8cdd('0x11')]()]+']',_0x8cdd('0x6a'));emit(_0x4f7c6c[_0x8cdd('0x56')],_0x2b6d0b['name'],_0x36d4db['ticketId']);}})['catch'](function(_0x35b156){logger[_0x8cdd('0x13')]('['+[_0x26b75b[_0x8cdd('0x11')]()]+_0x8cdd('0x6b'),util[_0x8cdd('0x6c')](_0x35b156,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index f1973e1..b4f5fef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68ae=['resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','get_entry_list','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','type','string','customField','nameField','toLowerCase','content','custom_fields','customVariable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Calls','queue','remoteUri','stripTrailingSlash','uri','%s/service/v4_1/rest.php','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','contacts','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]','user:%s','error','outbound','serverUrl','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','users','version','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','toUpperCase','calleridname','The\x20Ticket\x20ID\x20is:','request-promise','bluebird','util','./util','../../../../config/logger','sugarcrm','redis','defaults','localhost','POST','emit','info','Creating\x20new\x20ticket...','name','getString','created_by','Descriptions','toISOString','slice','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','variableName','push','idField','set_entry','JSON','stringify','Basic\x20%s','apiKey','toString','base64','get_server_info','Getting\x20agent\x20with\x20name','Employees','format','user_name','then','entry_list','find','name_value_list','value','Agent\x20found!'];(function(_0x31ade7,_0x4a2dab){var _0x1b20ad=function(_0x46b0fc){while(--_0x46b0fc){_0x31ade7['push'](_0x31ade7['shift']());}};_0x1b20ad(++_0x4a2dab);}(_0x68ae,0x125));var _0xe68a=function(_0x22ee33,_0x2c8e36){_0x22ee33=_0x22ee33-0x0;var _0x408486=_0x68ae[_0x22ee33];return _0x408486;};'use strict';var _=require('lodash');var rp=require(_0xe68a('0x0'));var BPromise=require(_0xe68a('0x1'));var md5=require('md5');var util=require(_0xe68a('0x2'));var Redis=require('ioredis');var intUtil=require(_0xe68a('0x3'));var config=require('../../../../config/environment');var logger=require(_0xe68a('0x4'))(_0xe68a('0x5'));config[_0xe68a('0x6')]=_[_0xe68a('0x7')](config['redis'],{'host':_0xe68a('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe68a('0x6')]));var def={'method':_0xe68a('0x9'),'json':!![]};function emit(_0x49bfab,_0x162e0e,_0x5e3f58){io['to'](_0x49bfab)[_0xe68a('0xa')](_0x162e0e,_0x5e3f58);}function getTicket(_0xe67f8c,_0x172b90,_0x2bbdfe,_0x213b05,_0x46b992,_0xd0c5f4,_0x32b797,_0x38ae84){logger[_0xe68a('0xb')](_0xe68a('0xc'));var _0x13289c=new Date();var _0x39f6a0=[{'name':_0xe68a('0xd'),'value':intUtil[_0xe68a('0xe')](_0x213b05['Subjects'],_0x46b992,'\x20')},{'name':'assigned_user_id','value':_0x172b90['id']},{'name':_0xe68a('0xf'),'value':_0x172b90['id']},{'name':'description','value':intUtil[_0xe68a('0xe')](_0x213b05[_0xe68a('0x10')],_0x46b992,'\x0a')},{'name':'date_start','value':_0x13289c[_0xe68a('0x11')]()[_0xe68a('0x12')](0x0,0x13)['replace']('T','\x20')},{'name':_0xe68a('0x13'),'value':'0'},{'name':_0xe68a('0x14'),'value':'15'},{'name':_0xe68a('0x15'),'value':_0x2bbdfe['id']},{'name':_0xe68a('0x16'),'value':_0xe68a('0x17')},{'name':_0xe68a('0x18'),'value':_0x2bbdfe[_0xe68a('0xd')]},{'name':_0xe68a('0x19'),'value':_0x38ae84}];if(_0xd0c5f4[_0xe68a('0x1a')]){_[_0xe68a('0x1b')](_0xd0c5f4,function(_0x227336){if(_0x46b992[_0x227336[_0xe68a('0x1c')]]){_0x39f6a0[_0xe68a('0x1d')]({'name':_0x227336[_0xe68a('0x1e')],'value':_0x46b992[_0x227336[_0xe68a('0x1c')]]});}});}return request({'form':{'method':_0xe68a('0x1f'),'input_type':_0xe68a('0x20'),'response_type':_0xe68a('0x20'),'rest_data':JSON[_0xe68a('0x21')]({'session':_0x32b797['id'],'module_name':'Calls','name_value_list':_0x39f6a0})}});}function getAuth(_0x5252d1){return util['format'](_0xe68a('0x22'),new Buffer(_0x5252d1[_0xe68a('0x23')]+':X')[_0xe68a('0x24')](_0xe68a('0x25')));}function getServerInfo(_0x44c1dc){return request({'form':{'method':_0xe68a('0x26'),'input_type':_0xe68a('0x20'),'response_type':_0xe68a('0x20'),'rest_data':JSON['stringify']({'session':_0x44c1dc['id']})}});}function getUser(_0x201a6b,_0x50d2c2,_0x31ffab){if(!_['isNil'](_0x50d2c2)){logger['info'](_0xe68a('0x27'),_0x50d2c2);return request({'form':{'method':'get_entry_list','input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x31ffab['id'],'module_name':_0xe68a('0x28'),'query':util[_0xe68a('0x29')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x50d2c2),'order_by':'','offset':'0','select_fields':['id',_0xe68a('0xd'),_0xe68a('0x2a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xe68a('0x2b')](function(_0x374387){if(_0x374387[_0xe68a('0x2c')][_0xe68a('0x1a')]){var _0x5606c1=_[_0xe68a('0x2d')](_0x374387[_0xe68a('0x2c')],function(_0x841cf8){return _0x841cf8[_0xe68a('0x2e')][_0xe68a('0x2a')][_0xe68a('0x2f')]===_0x50d2c2;});if(_0x5606c1){logger[_0xe68a('0xb')](_0xe68a('0x30'));return BPromise[_0xe68a('0x31')]({'id':_0x5606c1[_0xe68a('0x2e')]['id'][_0xe68a('0x2f')],'name':_0x5606c1[_0xe68a('0x2e')][_0xe68a('0xd')][_0xe68a('0x2f')]});}}logger[_0xe68a('0xb')](_0xe68a('0x32'));return BPromise['resolve']({'id':_0x31ffab['name_value_list'][_0xe68a('0x33')][_0xe68a('0x2f')],'name':_0x31ffab[_0xe68a('0x2e')]['user_name'][_0xe68a('0x2f')]});});}else{logger[_0xe68a('0xb')](_0xe68a('0x34'));return BPromise[_0xe68a('0x31')]({'id':_0x31ffab[_0xe68a('0x2e')][_0xe68a('0x33')][_0xe68a('0x2f')],'name':_0x31ffab[_0xe68a('0x2e')][_0xe68a('0x2a')][_0xe68a('0x2f')]});}}function getEndUser(_0x52ed01,_0x4075bf,_0x457fc4,_0x33e93b){logger[_0xe68a('0xb')](_0xe68a('0x35'),_0x457fc4);return request({'form':{'method':_0xe68a('0x36'),'input_type':_0xe68a('0x20'),'response_type':_0xe68a('0x20'),'rest_data':JSON['stringify']({'session':_0x33e93b['id'],'module_name':_0xe68a('0x17'),'query':util[_0xe68a('0x29')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x457fc4),'order_by':'','offset':'0','select_fields':['id',_0xe68a('0xd'),_0xe68a('0x37')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xe68a('0x2b')](function(_0x12f9a1){if(_0x12f9a1['entry_list']['length']){var _0x15d97b=_[_0xe68a('0x2d')](_0x12f9a1[_0xe68a('0x2c')],function(_0xc764c6){return _0xc764c6[_0xe68a('0x2e')][_0xe68a('0x37')][_0xe68a('0x2f')]===_0x457fc4;});if(_0x15d97b){logger['info']('Enduser\x20found!');return BPromise['resolve']({'id':_0x15d97b['name_value_list']['id'][_0xe68a('0x2f')],'name':_0x15d97b[_0xe68a('0x2e')][_0xe68a('0xd')][_0xe68a('0x2f')],'phone':_0x15d97b[_0xe68a('0x2e')][_0xe68a('0x37')][_0xe68a('0x2f')]});}}else{logger['info'](_0xe68a('0x38'));return request({'form':{'method':'set_entry','input_type':_0xe68a('0x20'),'response_type':_0xe68a('0x20'),'rest_data':JSON[_0xe68a('0x21')]({'session':_0x33e93b['id'],'module_name':_0xe68a('0x17'),'name_value_list':[{'name':'first_name','value':_0x4075bf!==_0xe68a('0x39')?_0x4075bf:util[_0xe68a('0x29')](_0xe68a('0x3a'),_0x457fc4)},{'name':'phone_home','value':_0x457fc4}]})}})['then'](function(_0x1fea91){logger['info'](_0xe68a('0x3b'));return BPromise[_0xe68a('0x31')]({'id':_0x1fea91['id'],'name':_0x1fea91[_0xe68a('0x2c')]['first_name'][_0xe68a('0x2f')],'phone':_0x1fea91[_0xe68a('0x2c')][_0xe68a('0x37')][_0xe68a('0x2f')]});});}});}function request(_0x499170){logger[_0xe68a('0x3c')](_0xe68a('0x3d'),JSON['stringify'](_0x499170));return rp(_[_0xe68a('0x3e')](def,_0x499170));}function getTags(_0x33cf1b,_0x45e2bd){var _0x47e16c=[];if(_0x33cf1b&&_0x33cf1b[_0xe68a('0x1a')]>0x0){_0x47e16c=_['map'](_0x33cf1b,_0x45e2bd);}return _0x47e16c;}function getCustomFields(_0x428cb9,_0x229160){var _0x353745=[];var _0xa5ad9d={'custom_fields':[]};if(_0x428cb9[_0xe68a('0x1a')]>0x0){_[_0xe68a('0x1b')](_0x428cb9,function(_0x1d35f2){if(_0x1d35f2[_0xe68a('0x3f')]===_0xe68a('0x40')&&_0x1d35f2['nameField']&&!_0x1d35f2[_0xe68a('0x41')]){_0xa5ad9d[_0x1d35f2[_0xe68a('0x42')][_0xe68a('0x43')]()]=_0x1d35f2[_0xe68a('0x44')][_0xe68a('0x24')]();}else if(_0x1d35f2[_0xe68a('0x3f')]===_0xe68a('0x40')&&_0x1d35f2[_0xe68a('0x1e')]&&_0x1d35f2['customField']){_0xa5ad9d[_0xe68a('0x45')]['push']({'id':_0x1d35f2[_0xe68a('0x1e')],'value':_0x1d35f2[_0xe68a('0x44')]['toString']()});}else if(_0x1d35f2[_0xe68a('0x3f')]==='variable'&&_0x1d35f2[_0xe68a('0x1c')]&&_0x1d35f2[_0xe68a('0x1e')]&&_0x1d35f2[_0xe68a('0x41')]){_0x229160[_0x1d35f2[_0xe68a('0x1c')]]&&_0xa5ad9d[_0xe68a('0x45')][_0xe68a('0x1d')]({'id':_0x1d35f2[_0xe68a('0x1e')],'value':_0x229160[_0x1d35f2[_0xe68a('0x1c')]][_0xe68a('0x24')]()});}else if(_0x1d35f2['type']===_0xe68a('0x46')&&_0x1d35f2[_0xe68a('0x47')]&&_0x1d35f2[_0xe68a('0x47')][_0xe68a('0xd')]&&_0x1d35f2[_0xe68a('0x1e')]&&_0x1d35f2[_0xe68a('0x41')]){_0x229160[_0x1d35f2[_0xe68a('0x47')][_0xe68a('0xd')][_0xe68a('0x43')]()]&&_0xa5ad9d['custom_fields'][_0xe68a('0x1d')]({'id':_0x1d35f2[_0xe68a('0x1e')],'value':_0x229160[_0x1d35f2[_0xe68a('0x47')][_0xe68a('0xd')][_0xe68a('0x43')]()]['toString']()});}});}return _0xa5ad9d;}function getConnection(_0x554720){return request({'method':_0xe68a('0x9'),'form':{'method':_0xe68a('0x48'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x554720['username'],'password':_0x554720[_0xe68a('0x49')],'encryption':_0xe68a('0x4a')},'application':_0xe68a('0x4b')})}})[_0xe68a('0x2b')](function(_0x55aa1b){var _0x2947f7=_0x55aa1b;if(_0x2947f7['id']){def[_0xe68a('0x4c')]=_0x2947f7['id'];return BPromise['resolve'](_0x2947f7);}else{throw new Error(util[_0xe68a('0x29')]('Account\x20%d\x20is\x20not\x20valid',_0x554720['id']));}});}function setRelationship(_0x2b4112,_0xb56edf,_0x360543,_0x9cf629){return request({'form':{'method':'set_relationship','input_type':_0xe68a('0x20'),'response_type':_0xe68a('0x20'),'rest_data':JSON[_0xe68a('0x21')]({'session':_0x2b4112['id'],'module_name':_0xe68a('0x4d'),'module_id':_0x360543['id'],'link_field_name':_0x9cf629,'related_ids':[_0xb56edf['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xe68a('0x4e')]=function(_0x24f137,_0x4f6f7d,_0x11052a,_0x14bf76,_0x31e9cc,_0x3792bb){var _0x471771,_0x30afc9,_0x2720c5,_0x3a06c3;_0x3792bb[_0xe68a('0x4f')]=intUtil[_0xe68a('0x50')](_0x3792bb[_0xe68a('0x4f')]);_0x3792bb['serverUrl']=intUtil['stripTrailingSlash'](_0x3792bb['serverUrl']);def[_0xe68a('0x51')]=util['format'](_0xe68a('0x52'),_0x3792bb[_0xe68a('0x4f')]);if(_0x31e9cc&&_0x31e9cc[_0xe68a('0x53')]){logger[_0xe68a('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x4f6f7d[_0xe68a('0x54')]=util[_0xe68a('0x29')](_0xe68a('0x55'),_0x3792bb['serverUrl'],_0x4f6f7d[_0xe68a('0x56')],md5(_0x4f6f7d['uniqueid']));}else{_0x4f6f7d[_0xe68a('0x54')]='';}return getConnection(_0x3792bb)[_0xe68a('0x2b')](function(_0x571421){_0x3a06c3=_0x571421;return getUser(_0x3792bb,_0x14bf76['name'],_0x3a06c3);})[_0xe68a('0x2b')](function(_0x128ddf){_0x471771=_0x128ddf;logger['info'](_0xe68a('0x57'),_0x471771['id']);return getEndUser(_0x3792bb,_0x4f6f7d['calleridname'],_0x4f6f7d[_0xe68a('0x58')],_0x3a06c3);})['then'](function(_0x5b2fdc){_0x30afc9=_0x5b2fdc;logger[_0xe68a('0xb')](_0xe68a('0x59'),_0x30afc9['id']);return getTicket(_0x3792bb,_0x471771,_0x30afc9,_0x11052a,_0x4f6f7d,_0x11052a[_0xe68a('0x5a')],_0x3a06c3,_0xe68a('0x5b'));})[_0xe68a('0x2b')](function(_0x390496){_0x2720c5=_0x390496;logger[_0xe68a('0xb')](_0xe68a('0x5c'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2720c5['id']);return setRelationship(_0x3a06c3,_0x471771,_0x2720c5,'users');})[_0xe68a('0x2b')](function(){return setRelationship(_0x3a06c3,_0x30afc9,_0x2720c5,_0xe68a('0x5d'));})['then'](function(){return getServerInfo(_0x3a06c3);})[_0xe68a('0x2b')](function(_0x347ff4){var _0x4785f2=parseInt(_0x347ff4['version'][_0xe68a('0x5e')](0x0));var _0x3d5522=util['format'](_0xe68a('0x5f'),_0x3792bb[_0xe68a('0x4f')],_0x2720c5['id']);if(_0x4785f2>0x6){_0x3d5522=util['format'](_0xe68a('0x60'),_0x3792bb[_0xe68a('0x4f')],_0x2720c5['id']);}logger[_0xe68a('0xb')](_0xe68a('0x61'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xe68a('0x29')](_0xe68a('0x62'),_0x14bf76[_0xe68a('0xd')]),'trigger:browser:url',{'uri':_0x3d5522});})['catch'](function(_0x3d01cc){logger[_0xe68a('0x63')](_0xe68a('0x61'),JSON[_0xe68a('0x21')](_0x3d01cc));});};exports[_0xe68a('0x64')]=function(_0x34c5bf,_0x4f47b9,_0x3ca14e,_0x240b2a,_0x2ff5f0,_0x58a04f,_0x240c74){var _0x4c8ef3,_0x5f5d64,_0x3a0ef9,_0xd819c7;_0x58a04f[_0xe68a('0x4f')]=intUtil['stripTrailingSlash'](_0x58a04f['remoteUri']);_0x58a04f[_0xe68a('0x65')]=intUtil[_0xe68a('0x50')](_0x58a04f[_0xe68a('0x65')]);def[_0xe68a('0x51')]=util[_0xe68a('0x29')](_0xe68a('0x52'),_0x58a04f[_0xe68a('0x4f')]);if(_0x240c74&&_0x240c74[_0xe68a('0x66')]&&_0x240c74[_0xe68a('0x66')]!==_0xe68a('0x67')){logger['info'](_0xe68a('0x68'),_0xe68a('0x69'));_0x4f47b9[_0xe68a('0x54')]=util[_0xe68a('0x29')](_0xe68a('0x55'),_0x58a04f[_0xe68a('0x65')],_0x4f47b9['uniqueid'],md5(_0x4f47b9[_0xe68a('0x56')]));}return getConnection(_0x58a04f)['then'](function(_0x153abc){_0xd819c7=_0x153abc;return getUser(_0x58a04f,_0x240b2a[_0xe68a('0xd')],_0xd819c7);})['then'](function(_0xfab295){_0x4c8ef3=_0xfab295;logger['info'](_0xe68a('0x57'),_0x4c8ef3['id']);return getEndUser(_0x58a04f,_0x4f47b9[_0xe68a('0x6a')],_0x4f47b9['destcalleridnum'],_0xd819c7);})['then'](function(_0xb421ec){_0x5f5d64=_0xb421ec;logger['info'](_0xe68a('0x59'),_0x5f5d64['id']);return getTicket(_0x58a04f,_0x4c8ef3,_0x5f5d64,_0x3ca14e,_0x4f47b9,_0x3ca14e['Fields'],_0xd819c7,'Outbound');})[_0xe68a('0x2b')](function(_0x3837e8){_0x3a0ef9=_0x3837e8;logger['info'](_0xe68a('0x5c'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x3a0ef9['id']);return setRelationship(_0xd819c7,_0x4c8ef3,_0x3a0ef9,_0xe68a('0x6b'));})[_0xe68a('0x2b')](function(){return setRelationship(_0xd819c7,_0x5f5d64,_0x3a0ef9,_0xe68a('0x5d'));})[_0xe68a('0x2b')](function(){return getServerInfo(_0xd819c7);})[_0xe68a('0x2b')](function(_0xbe2fdf){var _0x5a076c=parseInt(_0xbe2fdf[_0xe68a('0x6c')][_0xe68a('0x5e')](0x0));var _0x83d699=util[_0xe68a('0x29')](_0xe68a('0x5f'),_0x58a04f[_0xe68a('0x4f')],_0x3a0ef9['id']);if(_0x5a076c>0x6){_0x83d699=util[_0xe68a('0x29')](_0xe68a('0x60'),_0x58a04f[_0xe68a('0x4f')],_0x3a0ef9['id']);}logger[_0xe68a('0xb')](_0xe68a('0x68'),_0xe68a('0x6d'));emit(util['format'](_0xe68a('0x62'),_0x240b2a[_0xe68a('0xd')]),'trigger:browser:url',{'uri':_0x83d699});})[_0xe68a('0x6e')](function(_0x297edd){logger['error'](_0xe68a('0x68'),JSON[_0xe68a('0x21')](_0x297edd));});};exports['unmanaged']=function(_0x1ed4ba,_0x263866,_0x272f7f,_0x161e03,_0x266218,_0x3b1b4a){var _0x2379a3,_0x5411c4,_0x30b86c,_0x5b7c37;_0x3b1b4a[_0xe68a('0x4f')]=intUtil[_0xe68a('0x50')](_0x3b1b4a[_0xe68a('0x4f')]);_0x3b1b4a['serverUrl']=intUtil[_0xe68a('0x50')](_0x3b1b4a[_0xe68a('0x65')]);def[_0xe68a('0x51')]=util[_0xe68a('0x29')](_0xe68a('0x52'),_0x3b1b4a[_0xe68a('0x4f')]);if(_0x266218&&_0x266218['monitor_format']){logger[_0xe68a('0xb')]('['+_0x263866['lastevent'][_0xe68a('0x6f')]()+']',_0xe68a('0x69'));_0x263866[_0xe68a('0x54')]=util[_0xe68a('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3b1b4a[_0xe68a('0x65')],_0x263866['uniqueid'],md5(_0x263866['uniqueid']));}else{_0x263866['recordingURL']='';}return getConnection(_0x3b1b4a)[_0xe68a('0x2b')](function(_0xe67e88){_0x5b7c37=_0xe67e88;if(!_['isNil'](_0x161e03)){return getUser(_0x3b1b4a,_0x161e03[_0xe68a('0xd')],_0x5b7c37);}else{return getUser(_0x3b1b4a,null,_0x5b7c37);}})[_0xe68a('0x2b')](function(_0x54c32c){_0x2379a3=_0x54c32c;logger['info']('The\x20User\x20ID\x20is:',_0x2379a3['id']);return getEndUser(_0x3b1b4a,_0x263866[_0xe68a('0x70')],_0x263866[_0xe68a('0x58')],_0x5b7c37);})['then'](function(_0x116342){_0x5411c4=_0x116342;logger['info'](_0xe68a('0x59'),_0x5411c4['id']);return getTicket(_0x3b1b4a,_0x2379a3,_0x5411c4,_0x272f7f,_0x263866,_0x272f7f[_0xe68a('0x5a')],_0x5b7c37,'Inbound');})[_0xe68a('0x2b')](function(_0x233412){_0x30b86c=_0x233412;logger['info'](_0xe68a('0x5c'));logger['info'](_0xe68a('0x71'),_0x30b86c['id']);return setRelationship(_0x5b7c37,_0x2379a3,_0x30b86c,_0xe68a('0x6b'));})[_0xe68a('0x2b')](function(){return setRelationship(_0x5b7c37,_0x5411c4,_0x30b86c,_0xe68a('0x5d'));})[_0xe68a('0x2b')](function(){return getServerInfo(_0x5b7c37);})[_0xe68a('0x6e')](function(_0xf84197){logger[_0xe68a('0x63')]('['+_0x263866['lastevent']['toUpperCase']()+']',JSON[_0xe68a('0x21')](_0xf84197));});};
\ No newline at end of file
+var _0xbbe3=['username','password','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','contacts','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','unmanaged','monitor_format','lastevent','toUpperCase','isNil','lodash','bluebird','md5','util','./util','../../../../config/logger','redis','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','getString','Subjects','assigned_user_id','created_by','Descriptions','toISOString','slice','replace','duration_minutes','parent_id','parent_type','Contacts','name','direction','variableName','push','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','length','find','name_value_list','value','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','then','phone_home','Enduser\x20found!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','first_name','merge','map','type','string','nameField','customField','toLowerCase','content','custom_fields','variable','customVariable','Variable','POST'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xbbe3,0x18f));var _0x3bbe=function(_0xac8c5a,_0x1063a8){_0xac8c5a=_0xac8c5a-0x0;var _0x5a56d9=_0xbbe3[_0xac8c5a];return _0x5a56d9;};'use strict';var _=require(_0x3bbe('0x0'));var rp=require('request-promise');var BPromise=require(_0x3bbe('0x1'));var md5=require(_0x3bbe('0x2'));var util=require(_0x3bbe('0x3'));var Redis=require('ioredis');var intUtil=require(_0x3bbe('0x4'));var config=require('../../../../config/environment');var logger=require(_0x3bbe('0x5'))('sugarcrm');config['redis']=_['defaults'](config[_0x3bbe('0x6')],{'host':_0x3bbe('0x7'),'port':0x18eb});var io=require(_0x3bbe('0x8'))(new Redis(config[_0x3bbe('0x6')]));var def={'method':'POST','json':!![]};function emit(_0x33b450,_0x144df1,_0x11491a){io['to'](_0x33b450)[_0x3bbe('0x9')](_0x144df1,_0x11491a);}function getTicket(_0x5bbbd3,_0x1f54d6,_0x1d6a47,_0x562483,_0x10de60,_0x5d187a,_0x4a2779,_0x3d3eea){logger[_0x3bbe('0xa')](_0x3bbe('0xb'));var _0x38ec40=new Date();var _0x394bfd=[{'name':'name','value':intUtil[_0x3bbe('0xc')](_0x562483[_0x3bbe('0xd')],_0x10de60,'\x20')},{'name':_0x3bbe('0xe'),'value':_0x1f54d6['id']},{'name':_0x3bbe('0xf'),'value':_0x1f54d6['id']},{'name':'description','value':intUtil[_0x3bbe('0xc')](_0x562483[_0x3bbe('0x10')],_0x10de60,'\x0a')},{'name':'date_start','value':_0x38ec40[_0x3bbe('0x11')]()[_0x3bbe('0x12')](0x0,0x13)[_0x3bbe('0x13')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x3bbe('0x14'),'value':'15'},{'name':_0x3bbe('0x15'),'value':_0x1d6a47['id']},{'name':_0x3bbe('0x16'),'value':_0x3bbe('0x17')},{'name':'parent_name','value':_0x1d6a47[_0x3bbe('0x18')]},{'name':_0x3bbe('0x19'),'value':_0x3d3eea}];if(_0x5d187a['length']){_['forEach'](_0x5d187a,function(_0x4db49d){if(_0x10de60[_0x4db49d[_0x3bbe('0x1a')]]){_0x394bfd[_0x3bbe('0x1b')]({'name':_0x4db49d[_0x3bbe('0x1c')],'value':_0x10de60[_0x4db49d[_0x3bbe('0x1a')]]});}});}return request({'form':{'method':_0x3bbe('0x1d'),'input_type':_0x3bbe('0x1e'),'response_type':_0x3bbe('0x1e'),'rest_data':JSON[_0x3bbe('0x1f')]({'session':_0x4a2779['id'],'module_name':_0x3bbe('0x20'),'name_value_list':_0x394bfd})}});}function getAuth(_0x545dcc){return util[_0x3bbe('0x21')](_0x3bbe('0x22'),new Buffer(_0x545dcc[_0x3bbe('0x23')]+':X')[_0x3bbe('0x24')](_0x3bbe('0x25')));}function getServerInfo(_0x11f68e){return request({'form':{'method':_0x3bbe('0x26'),'input_type':'JSON','response_type':_0x3bbe('0x1e'),'rest_data':JSON[_0x3bbe('0x1f')]({'session':_0x11f68e['id']})}});}function getUser(_0x2eeb4e,_0x27dc41,_0x95f006){if(!_['isNil'](_0x27dc41)){logger[_0x3bbe('0xa')](_0x3bbe('0x27'),_0x27dc41);return request({'form':{'method':'get_entry_list','input_type':_0x3bbe('0x1e'),'response_type':_0x3bbe('0x1e'),'rest_data':JSON[_0x3bbe('0x1f')]({'session':_0x95f006['id'],'module_name':_0x3bbe('0x28'),'query':util['format'](_0x3bbe('0x29'),_0x27dc41),'order_by':'','offset':'0','select_fields':['id','name',_0x3bbe('0x2a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x9bf86a){if(_0x9bf86a[_0x3bbe('0x2b')][_0x3bbe('0x2c')]){var _0x5733c7=_[_0x3bbe('0x2d')](_0x9bf86a['entry_list'],function(_0x44f519){return _0x44f519[_0x3bbe('0x2e')][_0x3bbe('0x2a')][_0x3bbe('0x2f')]===_0x27dc41;});if(_0x5733c7){logger['info']('Agent\x20found!');return BPromise[_0x3bbe('0x30')]({'id':_0x5733c7[_0x3bbe('0x2e')]['id'][_0x3bbe('0x2f')],'name':_0x5733c7['name_value_list'][_0x3bbe('0x18')][_0x3bbe('0x2f')]});}}logger[_0x3bbe('0xa')](_0x3bbe('0x31'));return BPromise[_0x3bbe('0x30')]({'id':_0x95f006[_0x3bbe('0x2e')][_0x3bbe('0x32')][_0x3bbe('0x2f')],'name':_0x95f006[_0x3bbe('0x2e')][_0x3bbe('0x2a')][_0x3bbe('0x2f')]});});}else{logger[_0x3bbe('0xa')](_0x3bbe('0x33'));return BPromise[_0x3bbe('0x30')]({'id':_0x95f006[_0x3bbe('0x2e')][_0x3bbe('0x32')][_0x3bbe('0x2f')],'name':_0x95f006[_0x3bbe('0x2e')][_0x3bbe('0x2a')]['value']});}}function getEndUser(_0x234a21,_0x52d1b9,_0x32f149,_0x5bbe92){logger[_0x3bbe('0xa')](_0x3bbe('0x34'),_0x32f149);return request({'form':{'method':'get_entry_list','input_type':'JSON','response_type':_0x3bbe('0x1e'),'rest_data':JSON[_0x3bbe('0x1f')]({'session':_0x5bbe92['id'],'module_name':'Contacts','query':util['format']('contacts.phone_home\x20=\x20\x22%s\x22',_0x32f149),'order_by':'','offset':'0','select_fields':['id',_0x3bbe('0x18'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3bbe('0x35')](function(_0x6d339){if(_0x6d339[_0x3bbe('0x2b')][_0x3bbe('0x2c')]){var _0x3a7f44=_[_0x3bbe('0x2d')](_0x6d339[_0x3bbe('0x2b')],function(_0x48be9c){return _0x48be9c['name_value_list'][_0x3bbe('0x36')][_0x3bbe('0x2f')]===_0x32f149;});if(_0x3a7f44){logger[_0x3bbe('0xa')](_0x3bbe('0x37'));return BPromise[_0x3bbe('0x30')]({'id':_0x3a7f44[_0x3bbe('0x2e')]['id'][_0x3bbe('0x2f')],'name':_0x3a7f44[_0x3bbe('0x2e')]['name'][_0x3bbe('0x2f')],'phone':_0x3a7f44[_0x3bbe('0x2e')][_0x3bbe('0x36')][_0x3bbe('0x2f')]});}}else{logger[_0x3bbe('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x3bbe('0x1d'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x3bbe('0x1f')]({'session':_0x5bbe92['id'],'module_name':'Contacts','name_value_list':[{'name':'first_name','value':_0x52d1b9!==_0x3bbe('0x38')?_0x52d1b9:util[_0x3bbe('0x21')](_0x3bbe('0x39'),_0x32f149)},{'name':_0x3bbe('0x36'),'value':_0x32f149}]})}})['then'](function(_0x4baad8){logger['info'](_0x3bbe('0x3a'));return BPromise[_0x3bbe('0x30')]({'id':_0x4baad8['id'],'name':_0x4baad8[_0x3bbe('0x2b')][_0x3bbe('0x3b')][_0x3bbe('0x2f')],'phone':_0x4baad8[_0x3bbe('0x2b')][_0x3bbe('0x36')][_0x3bbe('0x2f')]});});}});}function request(_0x141dd9){logger['debug']('[HTTP]',JSON['stringify'](_0x141dd9));return rp(_[_0x3bbe('0x3c')](def,_0x141dd9));}function getTags(_0x2674ea,_0x3c53fc){var _0x28cc0a=[];if(_0x2674ea&&_0x2674ea[_0x3bbe('0x2c')]>0x0){_0x28cc0a=_[_0x3bbe('0x3d')](_0x2674ea,_0x3c53fc);}return _0x28cc0a;}function getCustomFields(_0x3d74c3,_0x42bbcb){var _0x3c2a6b=[];var _0x3a9431={'custom_fields':[]};if(_0x3d74c3[_0x3bbe('0x2c')]>0x0){_['forEach'](_0x3d74c3,function(_0x1e97c4){if(_0x1e97c4[_0x3bbe('0x3e')]===_0x3bbe('0x3f')&&_0x1e97c4[_0x3bbe('0x40')]&&!_0x1e97c4[_0x3bbe('0x41')]){_0x3a9431[_0x1e97c4['nameField'][_0x3bbe('0x42')]()]=_0x1e97c4[_0x3bbe('0x43')]['toString']();}else if(_0x1e97c4[_0x3bbe('0x3e')]==='string'&&_0x1e97c4[_0x3bbe('0x1c')]&&_0x1e97c4['customField']){_0x3a9431[_0x3bbe('0x44')][_0x3bbe('0x1b')]({'id':_0x1e97c4['idField'],'value':_0x1e97c4[_0x3bbe('0x43')][_0x3bbe('0x24')]()});}else if(_0x1e97c4['type']===_0x3bbe('0x45')&&_0x1e97c4[_0x3bbe('0x1a')]&&_0x1e97c4[_0x3bbe('0x1c')]&&_0x1e97c4[_0x3bbe('0x41')]){_0x42bbcb[_0x1e97c4['variableName']]&&_0x3a9431[_0x3bbe('0x44')][_0x3bbe('0x1b')]({'id':_0x1e97c4['idField'],'value':_0x42bbcb[_0x1e97c4[_0x3bbe('0x1a')]][_0x3bbe('0x24')]()});}else if(_0x1e97c4[_0x3bbe('0x3e')]===_0x3bbe('0x46')&&_0x1e97c4[_0x3bbe('0x47')]&&_0x1e97c4[_0x3bbe('0x47')]['name']&&_0x1e97c4[_0x3bbe('0x1c')]&&_0x1e97c4[_0x3bbe('0x41')]){_0x42bbcb[_0x1e97c4['Variable']['name']['toLowerCase']()]&&_0x3a9431['custom_fields'][_0x3bbe('0x1b')]({'id':_0x1e97c4[_0x3bbe('0x1c')],'value':_0x42bbcb[_0x1e97c4['Variable'][_0x3bbe('0x18')][_0x3bbe('0x42')]()][_0x3bbe('0x24')]()});}});}return _0x3a9431;}function getConnection(_0x35c666){return request({'method':_0x3bbe('0x48'),'form':{'method':'login','input_type':_0x3bbe('0x1e'),'response_type':'JSON','rest_data':JSON[_0x3bbe('0x1f')]({'user_auth':{'user_name':_0x35c666[_0x3bbe('0x49')],'password':_0x35c666[_0x3bbe('0x4a')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20integration'})}})[_0x3bbe('0x35')](function(_0x696266){var _0x1c593d=_0x696266;if(_0x1c593d['id']){def['sessionID']=_0x1c593d['id'];return BPromise[_0x3bbe('0x30')](_0x1c593d);}else{throw new Error(util[_0x3bbe('0x21')](_0x3bbe('0x4b'),_0x35c666['id']));}});}function setRelationship(_0x4e11f4,_0x36c8ef,_0xb002ef,_0x290718){return request({'form':{'method':_0x3bbe('0x4c'),'input_type':'JSON','response_type':_0x3bbe('0x1e'),'rest_data':JSON[_0x3bbe('0x1f')]({'session':_0x4e11f4['id'],'module_name':_0x3bbe('0x20'),'module_id':_0xb002ef['id'],'link_field_name':_0x290718,'related_ids':[_0x36c8ef['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x3bbe('0x4d')]=function(_0x17ccfb,_0x5bcb83,_0xaa43c5,_0x4744b6,_0x46effd,_0x1e03c3){var _0x2b0ff3,_0x239579,_0x30f48f,_0x204604;_0x1e03c3[_0x3bbe('0x4e')]=intUtil[_0x3bbe('0x4f')](_0x1e03c3[_0x3bbe('0x4e')]);_0x1e03c3[_0x3bbe('0x50')]=intUtil[_0x3bbe('0x4f')](_0x1e03c3[_0x3bbe('0x50')]);def[_0x3bbe('0x51')]=util['format'](_0x3bbe('0x52'),_0x1e03c3[_0x3bbe('0x4e')]);if(_0x46effd&&_0x46effd['monitor_format']){logger[_0x3bbe('0xa')](_0x3bbe('0x53'),'Recording\x20is\x20enabled!');_0x5bcb83[_0x3bbe('0x54')]=util[_0x3bbe('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1e03c3[_0x3bbe('0x50')],_0x5bcb83[_0x3bbe('0x55')],md5(_0x5bcb83[_0x3bbe('0x55')]));}else{_0x5bcb83[_0x3bbe('0x54')]='';}return getConnection(_0x1e03c3)[_0x3bbe('0x35')](function(_0x519432){_0x204604=_0x519432;return getUser(_0x1e03c3,_0x4744b6[_0x3bbe('0x18')],_0x204604);})[_0x3bbe('0x35')](function(_0x216b55){_0x2b0ff3=_0x216b55;logger[_0x3bbe('0xa')](_0x3bbe('0x56'),_0x2b0ff3['id']);return getEndUser(_0x1e03c3,_0x5bcb83[_0x3bbe('0x57')],_0x5bcb83[_0x3bbe('0x58')],_0x204604);})[_0x3bbe('0x35')](function(_0xf73408){_0x239579=_0xf73408;logger[_0x3bbe('0xa')](_0x3bbe('0x59'),_0x239579['id']);return getTicket(_0x1e03c3,_0x2b0ff3,_0x239579,_0xaa43c5,_0x5bcb83,_0xaa43c5[_0x3bbe('0x5a')],_0x204604,_0x3bbe('0x5b'));})[_0x3bbe('0x35')](function(_0x140729){_0x30f48f=_0x140729;logger['info'](_0x3bbe('0x5c'));logger['info'](_0x3bbe('0x5d'),_0x30f48f['id']);return setRelationship(_0x204604,_0x2b0ff3,_0x30f48f,_0x3bbe('0x5e'));})[_0x3bbe('0x35')](function(){return setRelationship(_0x204604,_0x239579,_0x30f48f,'contacts');})[_0x3bbe('0x35')](function(){return getServerInfo(_0x204604);})[_0x3bbe('0x35')](function(_0x20090d){var _0x36ab80=parseInt(_0x20090d[_0x3bbe('0x5f')][_0x3bbe('0x60')](0x0));var _0x4b1ee5=util['format'](_0x3bbe('0x61'),_0x1e03c3[_0x3bbe('0x4e')],_0x30f48f['id']);if(_0x36ab80>0x6){_0x4b1ee5=util[_0x3bbe('0x21')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x1e03c3['remoteUri'],_0x30f48f['id']);}logger['info'](_0x3bbe('0x53'),_0x3bbe('0x62'));emit(util[_0x3bbe('0x21')](_0x3bbe('0x63'),_0x4744b6[_0x3bbe('0x18')]),_0x3bbe('0x64'),{'uri':_0x4b1ee5});})[_0x3bbe('0x65')](function(_0x6ce1f5){logger[_0x3bbe('0x66')](_0x3bbe('0x53'),JSON['stringify'](_0x6ce1f5));});};exports[_0x3bbe('0x67')]=function(_0x2b3648,_0x63ab6b,_0x403050,_0x457cb8,_0x4ddfcb,_0x5afda5,_0x38fc45){var _0x542e6a,_0x301414,_0x3c2161,_0x63b0ff;_0x5afda5[_0x3bbe('0x4e')]=intUtil[_0x3bbe('0x4f')](_0x5afda5['remoteUri']);_0x5afda5[_0x3bbe('0x50')]=intUtil[_0x3bbe('0x4f')](_0x5afda5[_0x3bbe('0x50')]);def['uri']=util[_0x3bbe('0x21')](_0x3bbe('0x52'),_0x5afda5['remoteUri']);if(_0x38fc45&&_0x38fc45[_0x3bbe('0x68')]&&_0x38fc45[_0x3bbe('0x68')]!==_0x3bbe('0x69')){logger[_0x3bbe('0xa')](_0x3bbe('0x6a'),_0x3bbe('0x6b'));_0x63ab6b[_0x3bbe('0x54')]=util[_0x3bbe('0x21')](_0x3bbe('0x6c'),_0x5afda5[_0x3bbe('0x50')],_0x63ab6b[_0x3bbe('0x55')],md5(_0x63ab6b['uniqueid']));}return getConnection(_0x5afda5)['then'](function(_0xe585d9){_0x63b0ff=_0xe585d9;return getUser(_0x5afda5,_0x457cb8[_0x3bbe('0x18')],_0x63b0ff);})[_0x3bbe('0x35')](function(_0xf80bfe){_0x542e6a=_0xf80bfe;logger[_0x3bbe('0xa')](_0x3bbe('0x56'),_0x542e6a['id']);return getEndUser(_0x5afda5,_0x63ab6b[_0x3bbe('0x6d')],_0x63ab6b[_0x3bbe('0x6e')],_0x63b0ff);})[_0x3bbe('0x35')](function(_0x495c6d){_0x301414=_0x495c6d;logger[_0x3bbe('0xa')]('The\x20Enduser\x20ID\x20is:',_0x301414['id']);return getTicket(_0x5afda5,_0x542e6a,_0x301414,_0x403050,_0x63ab6b,_0x403050[_0x3bbe('0x5a')],_0x63b0ff,'Outbound');})[_0x3bbe('0x35')](function(_0x155d0e){_0x3c2161=_0x155d0e;logger[_0x3bbe('0xa')](_0x3bbe('0x5c'));logger[_0x3bbe('0xa')](_0x3bbe('0x5d'),_0x3c2161['id']);return setRelationship(_0x63b0ff,_0x542e6a,_0x3c2161,'users');})[_0x3bbe('0x35')](function(){return setRelationship(_0x63b0ff,_0x301414,_0x3c2161,_0x3bbe('0x6f'));})['then'](function(){return getServerInfo(_0x63b0ff);})['then'](function(_0x584a88){var _0x450142=parseInt(_0x584a88[_0x3bbe('0x5f')]['charAt'](0x0));var _0x352d19=util['format'](_0x3bbe('0x61'),_0x5afda5[_0x3bbe('0x4e')],_0x3c2161['id']);if(_0x450142>0x6){_0x352d19=util[_0x3bbe('0x21')](_0x3bbe('0x70'),_0x5afda5[_0x3bbe('0x4e')],_0x3c2161['id']);}logger[_0x3bbe('0xa')](_0x3bbe('0x6a'),_0x3bbe('0x62'));emit(util['format'](_0x3bbe('0x63'),_0x457cb8['name']),_0x3bbe('0x64'),{'uri':_0x352d19});})[_0x3bbe('0x65')](function(_0x2959c8){logger['error'](_0x3bbe('0x6a'),JSON[_0x3bbe('0x1f')](_0x2959c8));});};exports[_0x3bbe('0x71')]=function(_0x3a2780,_0x36724f,_0x2d75e9,_0x4341ef,_0x4608e8,_0x469a9c){var _0x8ec4c9,_0x3e0b25,_0x5e21fc,_0x41b0c1;_0x469a9c[_0x3bbe('0x4e')]=intUtil[_0x3bbe('0x4f')](_0x469a9c['remoteUri']);_0x469a9c[_0x3bbe('0x50')]=intUtil[_0x3bbe('0x4f')](_0x469a9c[_0x3bbe('0x50')]);def[_0x3bbe('0x51')]=util[_0x3bbe('0x21')]('%s/service/v4_1/rest.php',_0x469a9c[_0x3bbe('0x4e')]);if(_0x4608e8&&_0x4608e8[_0x3bbe('0x72')]){logger['info']('['+_0x36724f[_0x3bbe('0x73')][_0x3bbe('0x74')]()+']','Recording\x20is\x20enabled!');_0x36724f[_0x3bbe('0x54')]=util[_0x3bbe('0x21')](_0x3bbe('0x6c'),_0x469a9c[_0x3bbe('0x50')],_0x36724f['uniqueid'],md5(_0x36724f[_0x3bbe('0x55')]));}else{_0x36724f[_0x3bbe('0x54')]='';}return getConnection(_0x469a9c)[_0x3bbe('0x35')](function(_0x277939){_0x41b0c1=_0x277939;if(!_[_0x3bbe('0x75')](_0x4341ef)){return getUser(_0x469a9c,_0x4341ef[_0x3bbe('0x18')],_0x41b0c1);}else{return getUser(_0x469a9c,null,_0x41b0c1);}})[_0x3bbe('0x35')](function(_0x523c7c){_0x8ec4c9=_0x523c7c;logger[_0x3bbe('0xa')]('The\x20User\x20ID\x20is:',_0x8ec4c9['id']);return getEndUser(_0x469a9c,_0x36724f[_0x3bbe('0x57')],_0x36724f[_0x3bbe('0x58')],_0x41b0c1);})[_0x3bbe('0x35')](function(_0x2a09a8){_0x3e0b25=_0x2a09a8;logger['info'](_0x3bbe('0x59'),_0x3e0b25['id']);return getTicket(_0x469a9c,_0x8ec4c9,_0x3e0b25,_0x2d75e9,_0x36724f,_0x2d75e9[_0x3bbe('0x5a')],_0x41b0c1,_0x3bbe('0x5b'));})[_0x3bbe('0x35')](function(_0x23735d){_0x5e21fc=_0x23735d;logger[_0x3bbe('0xa')](_0x3bbe('0x5c'));logger[_0x3bbe('0xa')](_0x3bbe('0x5d'),_0x5e21fc['id']);return setRelationship(_0x41b0c1,_0x8ec4c9,_0x5e21fc,_0x3bbe('0x5e'));})[_0x3bbe('0x35')](function(){return setRelationship(_0x41b0c1,_0x3e0b25,_0x5e21fc,_0x3bbe('0x6f'));})[_0x3bbe('0x35')](function(){return getServerInfo(_0x41b0c1);})[_0x3bbe('0x65')](function(_0x3596df){logger[_0x3bbe('0x66')]('['+_0x36724f[_0x3bbe('0x73')][_0x3bbe('0x74')]()+']',JSON['stringify'](_0x3596df));});};
\ No newline at end of file
index 25d9d41..a77ca54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61f1=['content','variable','variableName','customVariable','Variable','name','toLowerCase','keyValue','key','format','keyContent','keyType','%s:\x20%s','join','stripTrailingSlash','substring','lastIndexOf','isNil','test','lodash','length','sortBy','type','string','push'];(function(_0x2b29a1,_0x23dcd4){var _0x34ea07=function(_0x4568f5){while(--_0x4568f5){_0x2b29a1['push'](_0x2b29a1['shift']());}};_0x34ea07(++_0x23dcd4);}(_0x61f1,0x1a3));var _0x161f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x61f1[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x161f('0x0'));var util=require('util');exports['getString']=function(_0x334020,_0x2ccd8d,_0x4391ab){var _0xe833b2=[];if(_0x334020[_0x161f('0x1')]>0x0){var _0x20f911=_[_0x161f('0x2')](_0x334020,['id']);for(var _0x4698c8=0x0;_0x4698c8<_0x20f911[_0x161f('0x1')];_0x4698c8++){var _0x456c49=_0x20f911[_0x4698c8];if(_0x456c49[_0x161f('0x3')]===_0x161f('0x4')){_0xe833b2[_0x161f('0x5')](_0x456c49[_0x161f('0x6')]);}else if(_0x456c49[_0x161f('0x3')]===_0x161f('0x7')&&_0x456c49[_0x161f('0x8')]){_0x2ccd8d[_0x456c49[_0x161f('0x8')]]&&_0xe833b2[_0x161f('0x5')](_0x2ccd8d[_0x456c49[_0x161f('0x8')]]['toString']());}else if(_0x456c49[_0x161f('0x3')]===_0x161f('0x9')&&_0x456c49[_0x161f('0xa')]&&_0x456c49['Variable'][_0x161f('0xb')]){_0x2ccd8d[_0x456c49[_0x161f('0xa')]['name'][_0x161f('0xc')]()]&&_0xe833b2['push'](_0x2ccd8d[_0x456c49[_0x161f('0xa')][_0x161f('0xb')][_0x161f('0xc')]()]['toString']());}else if(_0x456c49[_0x161f('0x3')]===_0x161f('0xd')){if(_0x456c49['keyType']===_0x161f('0x4')&&_0x456c49[_0x161f('0xe')]){_0xe833b2[_0x161f('0x5')](util[_0x161f('0xf')]('%s:\x20%s',_0x456c49[_0x161f('0xe')],_0x456c49[_0x161f('0x10')]));}else if(_0x456c49[_0x161f('0x11')]===_0x161f('0x7')&&_0x456c49[_0x161f('0x8')]&&_0x456c49[_0x161f('0xe')]){_0x2ccd8d[_0x456c49[_0x161f('0x8')]]&&_0xe833b2['push'](util[_0x161f('0xf')](_0x161f('0x12'),_0x456c49[_0x161f('0xe')],_0x2ccd8d[_0x456c49[_0x161f('0x8')]]));}else if(_0x456c49[_0x161f('0x11')]===_0x161f('0x9')&&_0x456c49['Variable']&&_0x456c49[_0x161f('0xa')][_0x161f('0xb')]&&_0x456c49[_0x161f('0xe')]){_0x2ccd8d[_0x456c49[_0x161f('0xa')][_0x161f('0xb')][_0x161f('0xc')]()]&&_0xe833b2['push'](util[_0x161f('0xf')](_0x161f('0x12'),_0x456c49[_0x161f('0xe')],_0x2ccd8d[_0x456c49[_0x161f('0xa')][_0x161f('0xb')]['toLowerCase']()]));}}}}return _0xe833b2[_0x161f('0x13')](_0x4391ab);};exports[_0x161f('0x14')]=function(_0x1b1174){var _0x5b0f83=_0x1b1174['slice'](-0x1);if(_0x5b0f83==='/'){_0x1b1174=_0x1b1174[_0x161f('0x15')](0x0,_0x1b1174[_0x161f('0x16')](_0x5b0f83));}return _0x1b1174;};exports['validateEmail']=function(_0x2f1315){if(!_[_0x161f('0x17')](_0x2f1315)&&_0x2f1315!==''){var _0x54e083=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x54e083[_0x161f('0x18')](String(_0x2f1315)[_0x161f('0xc')]());}else{return![];}};
\ No newline at end of file
+var _0x3a87=['validateEmail','test','lodash','util','getString','sortBy','length','type','string','content','variable','variableName','push','Variable','toLowerCase','name','toString','keyValue','keyType','key','format','%s:\x20%s','customVariable','join','stripTrailingSlash','substring'];(function(_0x29263a,_0x4fd6b1){var _0xc2cd6a=function(_0x3df3dc){while(--_0x3df3dc){_0x29263a['push'](_0x29263a['shift']());}};_0xc2cd6a(++_0x4fd6b1);}(_0x3a87,0xb8));var _0x73a8=function(_0x3653c7,_0xadb356){_0x3653c7=_0x3653c7-0x0;var _0x58a021=_0x3a87[_0x3653c7];return _0x58a021;};'use strict';var _=require(_0x73a8('0x0'));var util=require(_0x73a8('0x1'));exports[_0x73a8('0x2')]=function(_0x2f969f,_0x3a525e,_0x15385b){var _0x1165cf=[];if(_0x2f969f['length']>0x0){var _0x4b6a12=_[_0x73a8('0x3')](_0x2f969f,['id']);for(var _0x4404df=0x0;_0x4404df<_0x4b6a12[_0x73a8('0x4')];_0x4404df++){var _0x692d5a=_0x4b6a12[_0x4404df];if(_0x692d5a[_0x73a8('0x5')]===_0x73a8('0x6')){_0x1165cf['push'](_0x692d5a[_0x73a8('0x7')]);}else if(_0x692d5a[_0x73a8('0x5')]===_0x73a8('0x8')&&_0x692d5a[_0x73a8('0x9')]){_0x3a525e[_0x692d5a['variableName']]&&_0x1165cf[_0x73a8('0xa')](_0x3a525e[_0x692d5a['variableName']]['toString']());}else if(_0x692d5a[_0x73a8('0x5')]==='customVariable'&&_0x692d5a[_0x73a8('0xb')]&&_0x692d5a['Variable']['name']){_0x3a525e[_0x692d5a['Variable']['name'][_0x73a8('0xc')]()]&&_0x1165cf[_0x73a8('0xa')](_0x3a525e[_0x692d5a['Variable'][_0x73a8('0xd')]['toLowerCase']()][_0x73a8('0xe')]());}else if(_0x692d5a['type']===_0x73a8('0xf')){if(_0x692d5a[_0x73a8('0x10')]===_0x73a8('0x6')&&_0x692d5a[_0x73a8('0x11')]){_0x1165cf[_0x73a8('0xa')](util[_0x73a8('0x12')]('%s:\x20%s',_0x692d5a[_0x73a8('0x11')],_0x692d5a['keyContent']));}else if(_0x692d5a[_0x73a8('0x10')]===_0x73a8('0x8')&&_0x692d5a[_0x73a8('0x9')]&&_0x692d5a[_0x73a8('0x11')]){_0x3a525e[_0x692d5a[_0x73a8('0x9')]]&&_0x1165cf[_0x73a8('0xa')](util[_0x73a8('0x12')](_0x73a8('0x13'),_0x692d5a['key'],_0x3a525e[_0x692d5a[_0x73a8('0x9')]]));}else if(_0x692d5a[_0x73a8('0x10')]===_0x73a8('0x14')&&_0x692d5a[_0x73a8('0xb')]&&_0x692d5a[_0x73a8('0xb')][_0x73a8('0xd')]&&_0x692d5a[_0x73a8('0x11')]){_0x3a525e[_0x692d5a[_0x73a8('0xb')][_0x73a8('0xd')][_0x73a8('0xc')]()]&&_0x1165cf[_0x73a8('0xa')](util['format'](_0x73a8('0x13'),_0x692d5a[_0x73a8('0x11')],_0x3a525e[_0x692d5a[_0x73a8('0xb')][_0x73a8('0xd')][_0x73a8('0xc')]()]));}}}}return _0x1165cf[_0x73a8('0x15')](_0x15385b);};exports[_0x73a8('0x16')]=function(_0x2112cc){var _0x5a4a60=_0x2112cc['slice'](-0x1);if(_0x5a4a60==='/'){_0x2112cc=_0x2112cc[_0x73a8('0x17')](0x0,_0x2112cc['lastIndexOf'](_0x5a4a60));}return _0x2112cc;};exports[_0x73a8('0x18')]=function(_0x488021){if(!_['isNil'](_0x488021)&&_0x488021!==''){var _0x328646=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x328646[_0x73a8('0x19')](String(_0x488021)[_0x73a8('0xc')]());}else{return![];}};
\ No newline at end of file
index 9a10a08..66e1a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x3636ac,_0x55f9c2){var _0x1589e9=function(_0x494d62){while(--_0x494d62){_0x3636ac['push'](_0x3636ac['shift']());}};_0x1589e9(++_0x55f9c2);}(_0xe706,0xa3));var _0x6e70=function(_0x5f2acc,_0x47fcfd){_0x5f2acc=_0x5f2acc-0x0;var _0x1ec79c=_0xe706[_0x5f2acc];return _0x1ec79c;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index 6cf7510..67a9a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7377=['[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Ticket\x20ID\x20is:','integrationTab','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','Authorization','The\x20User\x20ID\x20is:','calleridname','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','zendesk','redis','localhost','emit','application/json','Creating\x20new\x20ticket...','format','POST','merge','Tags','name','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','info','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','Basic\x20%s','toString','base64','debug','stringify','defaults','length','map','forEach','string','picklist','nameField','customField','content','includes','type','idField','custom_fields','push','variable','variableName','customVariable','Variable','toLowerCase','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch'];(function(_0x2302a1,_0x4bc33d){var _0x413cae=function(_0x233632){while(--_0x233632){_0x2302a1['push'](_0x2302a1['shift']());}};_0x413cae(++_0x4bc33d);}(_0x7377,0x160));var _0x7737=function(_0x1654cd,_0x47919c){_0x1654cd=_0x1654cd-0x0;var _0x40668e=_0x7377[_0x1654cd];return _0x40668e;};'use strict';var _=require(_0x7737('0x0'));var rp=require(_0x7737('0x1'));var md5=require(_0x7737('0x2'));var util=require(_0x7737('0x3'));var Redis=require(_0x7737('0x4'));var intUtil=require(_0x7737('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x7737('0x6'));config[_0x7737('0x7')]=_['defaults'](config[_0x7737('0x7')],{'host':_0x7737('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7737('0x7')]));function emit(_0xa26155,_0x405a01,_0x5121f4){io['to'](_0xa26155)[_0x7737('0x9')](_0x405a01,_0x5121f4);}var headers={'Content-Type':'application/json','Accept':_0x7737('0xa')};function getTicket(_0xafccd9,_0x363c5b,_0x2e8cd6,_0x4c13ae,_0x29cf7a){logger['info'](_0x7737('0xb'));return request({'uri':util[_0x7737('0xc')]('%s/tickets.json',_0xafccd9['remoteUri']),'method':_0x7737('0xd'),'body':{'ticket':_[_0x7737('0xe')]({'requester_id':_0x2e8cd6['id'],'submitter_id':_0x363c5b?_0x363c5b['id']:undefined,'assignee_id':_0x363c5b?_0x363c5b['id']:undefined,'tags':getTags(_0x4c13ae[_0x7737('0xf')],_0x7737('0x10')),'subject':intUtil['getString'](_0x4c13ae['Subjects'],_0x29cf7a,'\x20'),'description':intUtil[_0x7737('0x11')](_0x4c13ae[_0x7737('0x12')],_0x29cf7a,'\x0a'),'comment':{'public':![],'body':intUtil[_0x7737('0x11')](_0x4c13ae[_0x7737('0x12')],_0x29cf7a,'\x0a')}},getCustomFields(_0x4c13ae[_0x7737('0x13')],_0x29cf7a))}})[_0x7737('0x14')](function(_0x8f3c96){logger['info'](_0x7737('0x15'));return _0x8f3c96[_0x7737('0x16')];});}function getUser(_0x58c7d3,_0x20391b){if(intUtil['validateEmail'](_0x20391b)){logger[_0x7737('0x17')](_0x7737('0x18'),_0x20391b);return request({'uri':util[_0x7737('0xc')](_0x7737('0x19'),_0x58c7d3[_0x7737('0x1a')]),'qs':{'query':util['format'](_0x7737('0x1b'),_0x20391b)}})['then'](function(_0x18ff99){if(_0x18ff99[_0x7737('0x1c')]){logger[_0x7737('0x17')](_0x7737('0x1d'));return _['find'](_0x18ff99[_0x7737('0x1e')],{'email':_0x20391b,'role':_0x7737('0x1f')});}else{logger[_0x7737('0x17')](_0x7737('0x20'));return request({'uri':util['format'](_0x7737('0x21'),_0x58c7d3['remoteUri'])})[_0x7737('0x14')](function(_0xdd3427){logger[_0x7737('0x17')](_0x7737('0x22'));return _0xdd3427[_0x7737('0x23')];});}});}else{logger[_0x7737('0x17')](_0x7737('0x20'));return request({'uri':util[_0x7737('0xc')](_0x7737('0x21'),_0x58c7d3[_0x7737('0x1a')])})[_0x7737('0x14')](function(_0x488cce){logger[_0x7737('0x17')]('Admin\x20account\x20selected.');return _0x488cce[_0x7737('0x23')];});}}function getEndUser(_0x2f93c9,_0x64f04,_0x396dfc){logger['info'](_0x7737('0x24'),_0x396dfc);return request({'uri':util[_0x7737('0xc')](_0x7737('0x19'),_0x2f93c9[_0x7737('0x1a')]),'qs':{'query':util[_0x7737('0xc')](_0x7737('0x25'),_0x396dfc)}})[_0x7737('0x14')](function(_0x29343f){var _0x923a31;if(_0x29343f[_0x7737('0x1e')]['length']){_0x29343f['results']=_[_0x7737('0x26')](_0x29343f[_0x7737('0x1e')],{'suspended':![],'role':_0x7737('0x27')});if(_0x29343f[_0x7737('0x1e')]['length']){_0x923a31=_[_0x7737('0x28')](_0x29343f[_0x7737('0x1e')]);}}if(_0x923a31){logger[_0x7737('0x17')]('Enduser\x20found!');return _0x923a31;}else{logger[_0x7737('0x17')](_0x7737('0x29'));return request({'uri':util[_0x7737('0xc')](_0x7737('0x2a'),_0x2f93c9['remoteUri']),'method':_0x7737('0xd'),'body':{'user':{'role':_0x7737('0x27'),'name':util[_0x7737('0xc')](_0x7737('0x2b'),_0x64f04||_0x396dfc),'phone':_0x396dfc}}})[_0x7737('0x14')](function(_0x4ed7a2){logger['info'](_0x7737('0x2c'));return _0x4ed7a2['user'];});}});}function getAuth(_0x511610){var _0x4ac875;if(_0x511610[_0x7737('0x2d')]===_0x7737('0x2e')){_0x4ac875=util[_0x7737('0xc')](_0x7737('0x2f'),_0x511610[_0x7737('0x30')],_0x511610[_0x7737('0x2e')]);}else if(_0x511610['authType']===_0x7737('0x31')){_0x4ac875=util[_0x7737('0xc')]('%s/token:%s',_0x511610['username'],_0x511610[_0x7737('0x31')]);}return util[_0x7737('0xc')](_0x7737('0x32'),new Buffer(_0x4ac875)[_0x7737('0x33')](_0x7737('0x34')));}function request(_0xcc391a){logger[_0x7737('0x35')]('[HTTP]',JSON[_0x7737('0x36')](_0xcc391a));return rp(_[_0x7737('0x37')](_0xcc391a,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x185be1,_0x2e6d45){var _0x879053=[];if(_0x185be1&&_0x185be1[_0x7737('0x38')]>0x0){_0x879053=_[_0x7737('0x39')](_0x185be1,_0x2e6d45);}return _0x879053;}function getCustomFields(_0x37c4a9,_0x3940ec){var _0x30488d=[];var _0x19c273={'custom_fields':[]};if(_0x37c4a9[_0x7737('0x38')]>0x0){_[_0x7737('0x3a')](_0x37c4a9,function(_0x2fc0f6){if(_['includes']([_0x7737('0x3b'),_0x7737('0x3c')],_0x2fc0f6['type'])&&_0x2fc0f6[_0x7737('0x3d')]&&!_0x2fc0f6[_0x7737('0x3e')]){_0x19c273[_0x2fc0f6[_0x7737('0x3d')]['toLowerCase']()]=_0x2fc0f6[_0x7737('0x3f')]['toString']();}else if(_[_0x7737('0x40')]([_0x7737('0x3b'),'picklist'],_0x2fc0f6[_0x7737('0x41')])&&_0x2fc0f6[_0x7737('0x42')]&&_0x2fc0f6[_0x7737('0x3e')]){_0x19c273[_0x7737('0x43')][_0x7737('0x44')]({'id':_0x2fc0f6[_0x7737('0x42')],'value':_0x2fc0f6[_0x7737('0x3f')][_0x7737('0x33')]()});}else if(_0x2fc0f6[_0x7737('0x41')]===_0x7737('0x45')&&_0x2fc0f6[_0x7737('0x46')]&&_0x2fc0f6[_0x7737('0x42')]&&_0x2fc0f6[_0x7737('0x3e')]){_0x3940ec[_0x2fc0f6[_0x7737('0x46')]]&&_0x19c273[_0x7737('0x43')][_0x7737('0x44')]({'id':_0x2fc0f6[_0x7737('0x42')],'value':_0x3940ec[_0x2fc0f6[_0x7737('0x46')]][_0x7737('0x33')]()});}else if(_0x2fc0f6['type']===_0x7737('0x47')&&_0x2fc0f6[_0x7737('0x48')]&&_0x2fc0f6[_0x7737('0x48')][_0x7737('0x10')]&&_0x2fc0f6['idField']&&_0x2fc0f6[_0x7737('0x3e')]){_0x3940ec[_0x2fc0f6[_0x7737('0x48')][_0x7737('0x10')][_0x7737('0x49')]()]&&_0x19c273[_0x7737('0x43')][_0x7737('0x44')]({'id':_0x2fc0f6[_0x7737('0x42')],'value':_0x3940ec[_0x2fc0f6[_0x7737('0x48')][_0x7737('0x10')][_0x7737('0x49')]()][_0x7737('0x33')]()});}});}return _0x19c273;}exports['queue']=function(_0x228db9,_0x59de6e,_0x170b04,_0x28131f,_0x5c76bd,_0x609250){var _0x14cb16,_0xfb0840;_0x609250[_0x7737('0x1a')]=intUtil[_0x7737('0x4a')](_0x609250['remoteUri']);_0x609250['serverUrl']=intUtil[_0x7737('0x4a')](_0x609250[_0x7737('0x4b')]);if(_0x5c76bd&&_0x5c76bd[_0x7737('0x4c')]){logger[_0x7737('0x17')](_0x7737('0x4d'),_0x7737('0x4e'));_0x59de6e['recordingURL']=util['format'](_0x7737('0x4f'),_0x609250['serverUrl'],_0x59de6e[_0x7737('0x50')],md5(_0x59de6e[_0x7737('0x50')]));}else{_0x59de6e[_0x7737('0x51')]='';}headers['Authorization']=getAuth(_0x609250);return getUser(_0x609250,_0x28131f[_0x7737('0x52')])[_0x7737('0x14')](function(_0x36cbe9){_0x14cb16=_0x36cbe9;logger['info']('The\x20User\x20ID\x20is:',_0x14cb16['id']);return getEndUser(_0x609250,_0x59de6e['calleridname'],_0x59de6e[_0x7737('0x53')]);})['then'](function(_0x40fbce){_0xfb0840=_0x40fbce;logger['info'](_0x7737('0x54'),_0xfb0840['id']);return getTicket(_0x609250,_0x14cb16,_0xfb0840,_0x170b04,_0x59de6e);})[_0x7737('0x14')](function(_0x297ebc){if(_0x297ebc){logger[_0x7737('0x17')]('The\x20Ticket\x20ID\x20is:',_0x297ebc['id']);switch(_0x609250[_0x7737('0x41')]){case'integrationTab':logger[_0x7737('0x17')]('[QUEUE]',_0x7737('0x55'));return request({'uri':util['format'](_0x7737('0x56'),_0x609250['remoteUri'],_0x14cb16['id'],_0x297ebc['id']),'method':'POST'});case _0x7737('0x57'):logger['info'](_0x7737('0x4d'),_0x7737('0x58'));emit(util['format'](_0x7737('0x59'),_0x28131f[_0x7737('0x10')]),_0x7737('0x5a'),{'uri':util[_0x7737('0xc')]('%s/agent/tickets/%s',_0x609250[_0x7737('0x1a')][_0x7737('0x5b')](_0x7737('0x5c'),''),_0x297ebc['id'])});break;default:logger[_0x7737('0x5d')](_0x7737('0x4d'),_0x7737('0x5e'));}}})[_0x7737('0x5f')](function(_0x32eb40){logger[_0x7737('0x5d')](_0x7737('0x60'),util['inspect'](_0x32eb40,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x4a9f6b,_0x38d904,_0x373d8b,_0xe68bc3,_0x7f1a48,_0x500449,_0x2336b1){var _0xc97937,_0x31c593;_0x500449['remoteUri']=intUtil['stripTrailingSlash'](_0x500449['remoteUri']);_0x500449[_0x7737('0x4b')]=intUtil[_0x7737('0x4a')](_0x500449[_0x7737('0x4b')]);if(_0x2336b1&&_0x2336b1[_0x7737('0x61')]&&_0x2336b1[_0x7737('0x61')]!==_0x7737('0x62')){logger[_0x7737('0x17')](_0x7737('0x63'),'Recording\x20is\x20enabled!');_0x38d904[_0x7737('0x51')]=util[_0x7737('0xc')](_0x7737('0x4f'),_0x500449[_0x7737('0x4b')],_0x38d904[_0x7737('0x50')],md5(_0x38d904[_0x7737('0x50')]));}headers['Authorization']=getAuth(_0x500449);return getUser(_0x500449,_0xe68bc3[_0x7737('0x52')])[_0x7737('0x14')](function(_0x1b9142){_0xc97937=_0x1b9142;logger[_0x7737('0x17')]('The\x20User\x20ID\x20is:',_0xc97937['id']);return getEndUser(_0x500449,_0x38d904[_0x7737('0x64')],_0x38d904['destcalleridnum']);})['then'](function(_0x2cbd34){_0x31c593=_0x2cbd34;logger[_0x7737('0x17')](_0x7737('0x54'),_0x31c593['id']);return getTicket(_0x500449,_0xc97937,_0x31c593,_0x373d8b,_0x38d904);})['then'](function(_0x5a60d3){if(_0x5a60d3){logger[_0x7737('0x17')](_0x7737('0x65'),_0x5a60d3['id']);switch(_0x500449[_0x7737('0x41')]){case _0x7737('0x66'):logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format'](_0x7737('0x56'),_0x500449['remoteUri'],_0xc97937['id'],_0x5a60d3['id']),'method':_0x7737('0xd')});case _0x7737('0x57'):logger[_0x7737('0x17')]('[OUTBOUND]',_0x7737('0x58'));emit(util[_0x7737('0xc')](_0x7737('0x59'),_0xe68bc3[_0x7737('0x10')]),_0x7737('0x5a'),{'uri':util[_0x7737('0xc')](_0x7737('0x67'),_0x500449[_0x7737('0x1a')][_0x7737('0x5b')]('/api/v2',''),_0x5a60d3['id'])});break;default:logger[_0x7737('0x5d')](_0x7737('0x63'),_0x7737('0x5e'));}}})['catch'](function(_0x21e5cf){logger['error'](_0x7737('0x68'),util[_0x7737('0x69')](_0x21e5cf,{'showHidden':!![],'depth':null}));});};exports[_0x7737('0x6a')]=function(_0x510a49,_0x2ca02a,_0xc1cb5b,_0x4a4fdb,_0x3a4e8d,_0x4bc1f6){var _0x5e892d,_0x5c43bf;_0x4bc1f6[_0x7737('0x1a')]=intUtil[_0x7737('0x4a')](_0x4bc1f6[_0x7737('0x1a')]);_0x4bc1f6[_0x7737('0x4b')]=intUtil[_0x7737('0x4a')](_0x4bc1f6[_0x7737('0x4b')]);if(_0x3a4e8d&&_0x3a4e8d['monitor_format']){logger[_0x7737('0x17')]('['+_0x2ca02a['lastevent']['toUpperCase']()+']',_0x7737('0x4e'));_0x2ca02a[_0x7737('0x51')]=util['format'](_0x7737('0x4f'),_0x4bc1f6[_0x7737('0x4b')],_0x2ca02a[_0x7737('0x50')],md5(_0x2ca02a[_0x7737('0x50')]));}else{_0x2ca02a['recordingURL']='';}headers[_0x7737('0x6b')]=getAuth(_0x4bc1f6);return getUser(_0x4bc1f6)[_0x7737('0x14')](function(_0x160620){_0x5e892d=_0x160620;logger['info'](_0x7737('0x6c'),_0x5e892d['id']);return getEndUser(_0x4bc1f6,_0x2ca02a[_0x7737('0x6d')],_0x2ca02a['calleridnum']);})[_0x7737('0x14')](function(_0xb81394){_0x5c43bf=_0xb81394;logger[_0x7737('0x17')]('The\x20Enduser\x20ID\x20is:',_0x5c43bf['id']);return getTicket(_0x4bc1f6,_0x5e892d,_0x5c43bf,_0xc1cb5b,_0x2ca02a);})[_0x7737('0x14')](function(_0x2fcf2f){if(_0x2fcf2f){logger[_0x7737('0x17')](_0x7737('0x65'),_0x2fcf2f['id']);}})[_0x7737('0x5f')](function(_0x435c7a){logger['error']('['+_0x2ca02a[_0x7737('0x6e')][_0x7737('0x6f')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x7737('0x69')](_0x435c7a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x844b=['Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','recordingURL','replace','unmanaged','lastevent','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','calleridname','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','./util','../../../../config/logger','zendesk','redis','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','remoteUri','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','[HTTP]','defaults','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x844b,0x1bf));var _0xb844=function(_0x263a2f,_0x1e81e3){_0x263a2f=_0x263a2f-0x0;var _0x8020e8=_0x844b[_0x263a2f];return _0x8020e8;};'use strict';var _=require('lodash');var rp=require(_0xb844('0x0'));var md5=require(_0xb844('0x1'));var util=require(_0xb844('0x2'));var Redis=require(_0xb844('0x3'));var intUtil=require(_0xb844('0x4'));var config=require('../../../../config/environment');var logger=require(_0xb844('0x5'))(_0xb844('0x6'));config[_0xb844('0x7')]=_['defaults'](config[_0xb844('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xb844('0x8'))(new Redis(config[_0xb844('0x7')]));function emit(_0x45d796,_0x410184,_0x136ce5){io['to'](_0x45d796)[_0xb844('0x9')](_0x410184,_0x136ce5);}var headers={'Content-Type':_0xb844('0xa'),'Accept':_0xb844('0xa')};function getTicket(_0x18a985,_0x4d1881,_0x4572c9,_0x8cd7b4,_0x2475b1){logger['info'](_0xb844('0xb'));return request({'uri':util['format']('%s/tickets.json',_0x18a985[_0xb844('0xc')]),'method':'POST','body':{'ticket':_[_0xb844('0xd')]({'requester_id':_0x4572c9['id'],'submitter_id':_0x4d1881?_0x4d1881['id']:undefined,'assignee_id':_0x4d1881?_0x4d1881['id']:undefined,'tags':getTags(_0x8cd7b4[_0xb844('0xe')],_0xb844('0xf')),'subject':intUtil[_0xb844('0x10')](_0x8cd7b4[_0xb844('0x11')],_0x2475b1,'\x20'),'description':intUtil['getString'](_0x8cd7b4[_0xb844('0x12')],_0x2475b1,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x8cd7b4[_0xb844('0x12')],_0x2475b1,'\x0a')}},getCustomFields(_0x8cd7b4[_0xb844('0x13')],_0x2475b1))}})[_0xb844('0x14')](function(_0x46a701){logger[_0xb844('0x15')](_0xb844('0x16'));return _0x46a701['ticket'];});}function getUser(_0xd52fc3,_0x4b8bbb){if(intUtil[_0xb844('0x17')](_0x4b8bbb)){logger[_0xb844('0x15')](_0xb844('0x18'),_0x4b8bbb);return request({'uri':util[_0xb844('0x19')](_0xb844('0x1a'),_0xd52fc3[_0xb844('0xc')]),'qs':{'query':util['format']('type:user\x20role:agent\x20email:%s',_0x4b8bbb)}})[_0xb844('0x14')](function(_0x2192d4){if(_0x2192d4['count']){logger[_0xb844('0x15')]('Agent\x20found!');return _[_0xb844('0x1b')](_0x2192d4['results'],{'email':_0x4b8bbb,'role':_0xb844('0x1c')});}else{logger['info'](_0xb844('0x1d'));return request({'uri':util[_0xb844('0x19')](_0xb844('0x1e'),_0xd52fc3[_0xb844('0xc')])})['then'](function(_0x1bda53){logger[_0xb844('0x15')](_0xb844('0x1f'));return _0x1bda53[_0xb844('0x20')];});}});}else{logger['info'](_0xb844('0x1d'));return request({'uri':util['format'](_0xb844('0x1e'),_0xd52fc3[_0xb844('0xc')])})[_0xb844('0x14')](function(_0x31e6a0){logger[_0xb844('0x15')](_0xb844('0x1f'));return _0x31e6a0[_0xb844('0x20')];});}}function getEndUser(_0x273b66,_0x17479f,_0x11a364){logger[_0xb844('0x15')](_0xb844('0x21'),_0x11a364);return request({'uri':util[_0xb844('0x19')]('%s/search.json',_0x273b66[_0xb844('0xc')]),'qs':{'query':util[_0xb844('0x19')](_0xb844('0x22'),_0x11a364)}})[_0xb844('0x14')](function(_0x108269){var _0x1484ac;if(_0x108269[_0xb844('0x23')][_0xb844('0x24')]){_0x108269['results']=_[_0xb844('0x25')](_0x108269['results'],{'suspended':![],'role':_0xb844('0x26')});if(_0x108269[_0xb844('0x23')]['length']){_0x1484ac=_[_0xb844('0x27')](_0x108269['results']);}}if(_0x1484ac){logger['info'](_0xb844('0x28'));return _0x1484ac;}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format']('%s/users.json',_0x273b66['remoteUri']),'method':'POST','body':{'user':{'role':_0xb844('0x26'),'name':util['format'](_0xb844('0x29'),_0x17479f||_0x11a364),'phone':_0x11a364}}})[_0xb844('0x14')](function(_0x548378){logger[_0xb844('0x15')](_0xb844('0x2a'));return _0x548378[_0xb844('0x20')];});}});}function getAuth(_0x5c7eb7){var _0x413c99;if(_0x5c7eb7[_0xb844('0x2b')]===_0xb844('0x2c')){_0x413c99=util[_0xb844('0x19')](_0xb844('0x2d'),_0x5c7eb7[_0xb844('0x2e')],_0x5c7eb7[_0xb844('0x2c')]);}else if(_0x5c7eb7[_0xb844('0x2b')]===_0xb844('0x2f')){_0x413c99=util['format'](_0xb844('0x30'),_0x5c7eb7[_0xb844('0x2e')],_0x5c7eb7[_0xb844('0x2f')]);}return util['format'](_0xb844('0x31'),new Buffer(_0x413c99)[_0xb844('0x32')](_0xb844('0x33')));}function request(_0x32ef2f){logger['debug'](_0xb844('0x34'),JSON['stringify'](_0x32ef2f));return rp(_[_0xb844('0x35')](_0x32ef2f,{'method':_0xb844('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x1aaaa8,_0x3c224c){var _0x580deb=[];if(_0x1aaaa8&&_0x1aaaa8[_0xb844('0x24')]>0x0){_0x580deb=_[_0xb844('0x37')](_0x1aaaa8,_0x3c224c);}return _0x580deb;}function getCustomFields(_0x25f709,_0x3fa6f6){var _0x27296c=[];var _0xcdeeed={'custom_fields':[]};if(_0x25f709['length']>0x0){_[_0xb844('0x38')](_0x25f709,function(_0x1ac9f5){if(_[_0xb844('0x39')](['string',_0xb844('0x3a')],_0x1ac9f5[_0xb844('0x3b')])&&_0x1ac9f5[_0xb844('0x3c')]&&!_0x1ac9f5[_0xb844('0x3d')]){_0xcdeeed[_0x1ac9f5[_0xb844('0x3c')][_0xb844('0x3e')]()]=_0x1ac9f5[_0xb844('0x3f')][_0xb844('0x32')]();}else if(_[_0xb844('0x39')](['string',_0xb844('0x3a')],_0x1ac9f5[_0xb844('0x3b')])&&_0x1ac9f5[_0xb844('0x40')]&&_0x1ac9f5['customField']){_0xcdeeed[_0xb844('0x41')][_0xb844('0x42')]({'id':_0x1ac9f5[_0xb844('0x40')],'value':_0x1ac9f5[_0xb844('0x3f')][_0xb844('0x32')]()});}else if(_0x1ac9f5['type']===_0xb844('0x43')&&_0x1ac9f5[_0xb844('0x44')]&&_0x1ac9f5[_0xb844('0x40')]&&_0x1ac9f5[_0xb844('0x3d')]){_0x3fa6f6[_0x1ac9f5['variableName']]&&_0xcdeeed[_0xb844('0x41')][_0xb844('0x42')]({'id':_0x1ac9f5[_0xb844('0x40')],'value':_0x3fa6f6[_0x1ac9f5['variableName']][_0xb844('0x32')]()});}else if(_0x1ac9f5[_0xb844('0x3b')]===_0xb844('0x45')&&_0x1ac9f5[_0xb844('0x46')]&&_0x1ac9f5[_0xb844('0x46')][_0xb844('0xf')]&&_0x1ac9f5[_0xb844('0x40')]&&_0x1ac9f5[_0xb844('0x3d')]){_0x3fa6f6[_0x1ac9f5[_0xb844('0x46')]['name'][_0xb844('0x3e')]()]&&_0xcdeeed['custom_fields']['push']({'id':_0x1ac9f5[_0xb844('0x40')],'value':_0x3fa6f6[_0x1ac9f5[_0xb844('0x46')][_0xb844('0xf')]['toLowerCase']()][_0xb844('0x32')]()});}});}return _0xcdeeed;}exports['queue']=function(_0x45f159,_0x309edf,_0x124bcf,_0x538b20,_0x14563,_0x23fddc){var _0x43375a,_0x112da1;_0x23fddc[_0xb844('0xc')]=intUtil[_0xb844('0x47')](_0x23fddc[_0xb844('0xc')]);_0x23fddc[_0xb844('0x48')]=intUtil[_0xb844('0x47')](_0x23fddc['serverUrl']);if(_0x14563&&_0x14563[_0xb844('0x49')]){logger[_0xb844('0x15')](_0xb844('0x4a'),_0xb844('0x4b'));_0x309edf['recordingURL']=util[_0xb844('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x23fddc[_0xb844('0x48')],_0x309edf[_0xb844('0x4c')],md5(_0x309edf[_0xb844('0x4c')]));}else{_0x309edf['recordingURL']='';}headers[_0xb844('0x4d')]=getAuth(_0x23fddc);return getUser(_0x23fddc,_0x538b20[_0xb844('0x4e')])[_0xb844('0x14')](function(_0x15c344){_0x43375a=_0x15c344;logger[_0xb844('0x15')](_0xb844('0x4f'),_0x43375a['id']);return getEndUser(_0x23fddc,_0x309edf['calleridname'],_0x309edf[_0xb844('0x50')]);})[_0xb844('0x14')](function(_0x32e9ba){_0x112da1=_0x32e9ba;logger[_0xb844('0x15')](_0xb844('0x51'),_0x112da1['id']);return getTicket(_0x23fddc,_0x43375a,_0x112da1,_0x124bcf,_0x309edf);})[_0xb844('0x14')](function(_0x2e09b4){if(_0x2e09b4){logger[_0xb844('0x15')](_0xb844('0x52'),_0x2e09b4['id']);switch(_0x23fddc[_0xb844('0x3b')]){case _0xb844('0x53'):logger[_0xb844('0x15')]('[QUEUE]',_0xb844('0x54'));return request({'uri':util['format'](_0xb844('0x55'),_0x23fddc[_0xb844('0xc')],_0x43375a['id'],_0x2e09b4['id']),'method':_0xb844('0x56')});case'newTab':logger[_0xb844('0x15')](_0xb844('0x4a'),_0xb844('0x57'));emit(util[_0xb844('0x19')](_0xb844('0x58'),_0x538b20[_0xb844('0xf')]),_0xb844('0x59'),{'uri':util[_0xb844('0x19')](_0xb844('0x5a'),_0x23fddc['remoteUri']['replace'](_0xb844('0x5b'),''),_0x2e09b4['id'])});break;default:logger[_0xb844('0x5c')]('[QUEUE]',_0xb844('0x5d'));}}})[_0xb844('0x5e')](function(_0x5326c7){logger[_0xb844('0x5c')](_0xb844('0x5f'),util[_0xb844('0x60')](_0x5326c7,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x543f36,_0x1284e3,_0x53417a,_0x109580,_0xa37c95,_0x3eceaa,_0x31413a){var _0x682666,_0x50380f;_0x3eceaa[_0xb844('0xc')]=intUtil[_0xb844('0x47')](_0x3eceaa[_0xb844('0xc')]);_0x3eceaa[_0xb844('0x48')]=intUtil['stripTrailingSlash'](_0x3eceaa[_0xb844('0x48')]);if(_0x31413a&&_0x31413a['recordingFormat']&&_0x31413a[_0xb844('0x61')]!==_0xb844('0x62')){logger[_0xb844('0x15')](_0xb844('0x63'),_0xb844('0x4b'));_0x1284e3[_0xb844('0x64')]=util[_0xb844('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3eceaa[_0xb844('0x48')],_0x1284e3[_0xb844('0x4c')],md5(_0x1284e3[_0xb844('0x4c')]));}headers[_0xb844('0x4d')]=getAuth(_0x3eceaa);return getUser(_0x3eceaa,_0x109580[_0xb844('0x4e')])[_0xb844('0x14')](function(_0x56ee37){_0x682666=_0x56ee37;logger[_0xb844('0x15')](_0xb844('0x4f'),_0x682666['id']);return getEndUser(_0x3eceaa,_0x1284e3['destcalleridname'],_0x1284e3['destcalleridnum']);})[_0xb844('0x14')](function(_0x44c36b){_0x50380f=_0x44c36b;logger[_0xb844('0x15')](_0xb844('0x51'),_0x50380f['id']);return getTicket(_0x3eceaa,_0x682666,_0x50380f,_0x53417a,_0x1284e3);})['then'](function(_0x329a9f){if(_0x329a9f){logger[_0xb844('0x15')]('The\x20Ticket\x20ID\x20is:',_0x329a9f['id']);switch(_0x3eceaa[_0xb844('0x3b')]){case _0xb844('0x53'):logger['info']('[OUTBOUND]',_0xb844('0x54'));return request({'uri':util[_0xb844('0x19')](_0xb844('0x55'),_0x3eceaa[_0xb844('0xc')],_0x682666['id'],_0x329a9f['id']),'method':_0xb844('0x56')});case'newTab':logger[_0xb844('0x15')](_0xb844('0x63'),_0xb844('0x57'));emit(util['format'](_0xb844('0x58'),_0x109580[_0xb844('0xf')]),'trigger:browser:url',{'uri':util[_0xb844('0x19')](_0xb844('0x5a'),_0x3eceaa[_0xb844('0xc')][_0xb844('0x65')](_0xb844('0x5b'),''),_0x329a9f['id'])});break;default:logger[_0xb844('0x5c')](_0xb844('0x63'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xb844('0x5e')](function(_0x50a07b){logger[_0xb844('0x5c')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xb844('0x60')](_0x50a07b,{'showHidden':!![],'depth':null}));});};exports[_0xb844('0x66')]=function(_0x14cbc7,_0x70e368,_0x2dafdf,_0x5dfe7f,_0x483c75,_0x343bf2){var _0x3a89a8,_0x502e49;_0x343bf2[_0xb844('0xc')]=intUtil[_0xb844('0x47')](_0x343bf2['remoteUri']);_0x343bf2['serverUrl']=intUtil['stripTrailingSlash'](_0x343bf2[_0xb844('0x48')]);if(_0x483c75&&_0x483c75[_0xb844('0x49')]){logger['info']('['+_0x70e368[_0xb844('0x67')]['toUpperCase']()+']',_0xb844('0x4b'));_0x70e368[_0xb844('0x64')]=util[_0xb844('0x19')](_0xb844('0x68'),_0x343bf2[_0xb844('0x48')],_0x70e368[_0xb844('0x4c')],md5(_0x70e368[_0xb844('0x4c')]));}else{_0x70e368[_0xb844('0x64')]='';}headers[_0xb844('0x4d')]=getAuth(_0x343bf2);return getUser(_0x343bf2)['then'](function(_0x1d9081){_0x3a89a8=_0x1d9081;logger[_0xb844('0x15')](_0xb844('0x4f'),_0x3a89a8['id']);return getEndUser(_0x343bf2,_0x70e368[_0xb844('0x69')],_0x70e368['calleridnum']);})[_0xb844('0x14')](function(_0x5c1d87){_0x502e49=_0x5c1d87;logger[_0xb844('0x15')](_0xb844('0x51'),_0x502e49['id']);return getTicket(_0x343bf2,_0x3a89a8,_0x502e49,_0x2dafdf,_0x70e368);})[_0xb844('0x14')](function(_0x1e0030){if(_0x1e0030){logger['info']('The\x20Ticket\x20ID\x20is:',_0x1e0030['id']);}})['catch'](function(_0x6fa2a0){logger['error']('['+_0x70e368[_0xb844('0x67')][_0xb844('0x6a')]()+']'+_0xb844('0x6b'),util[_0xb844('0x60')](_0x6fa2a0,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 0e7894d..acc5687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f02=['recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','Outbound','user:%s','trigger:browser:url','unmanaged','toUpperCase','calleridname','request-promise','md5','util','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','length','forEach','includes','string','type','idField','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','clientId','clientSecret','refresh_token','then','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','isArrayLikeObject','users','findIndex','Using\x20the\x20admin\x20account!','Administrator','profile','user','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','Error:\x20','log','CREATE\x20ERROR','GET','Zoho-oauthtoken\x20','moduleSearch','uri','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','nothing','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Description','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','utc','answertime','endtime','YYYY-MM-DDTHH:mm:ss','starttime','mm:ss','lastevent','called','Call_Result','Called','complete','Answered','rejected','Rejected','abandoned','Abandoned','Timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Inbound','merge','/crm/v2/Calls','err','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','/crm/EntityInfo.do?module=Calls&id='];(function(_0x17976c,_0x1e7a52){var _0xf83a5e=function(_0x4efbae){while(--_0x4efbae){_0x17976c['push'](_0x17976c['shift']());}};_0xf83a5e(++_0x1e7a52);}(_0x8f02,0xa1));var _0x28f0=function(_0x250fcf,_0xfd088c){_0x250fcf=_0x250fcf-0x0;var _0x222243=_0x8f02[_0x250fcf];return _0x222243;};'use strict';var _=require('lodash');var rp=require(_0x28f0('0x0'));var md5=require(_0x28f0('0x1'));var util=require(_0x28f0('0x2'));var intUtil=require(_0x28f0('0x3'));var moment=require('moment');var Redis=require(_0x28f0('0x4'));var BPromise=require(_0x28f0('0x5'));var config=require(_0x28f0('0x6'));var logger=require(_0x28f0('0x7'))(_0x28f0('0x8'));config[_0x28f0('0x9')]=_[_0x28f0('0xa')](config[_0x28f0('0x9')],{'host':_0x28f0('0xb'),'port':0x18eb});var io=require(_0x28f0('0xc'))(new Redis(config[_0x28f0('0x9')]));function emit(_0x326221,_0x17f589,_0x47b633){io['to'](_0x326221)[_0x28f0('0xd')](_0x17f589,_0x47b633);}function request(_0x557298){logger[_0x28f0('0xe')]('[HTTP]',JSON['stringify'](_0x557298));return rp(_0x557298);}function getCustomFields(_0x1b0a58,_0x3fead1){var _0x598067={};if(_0x1b0a58[_0x28f0('0xf')]>0x0){_[_0x28f0('0x10')](_0x1b0a58,function(_0x598188){if(_[_0x28f0('0x11')]([_0x28f0('0x12'),'picklist'],_0x598188[_0x28f0('0x13')])&&_0x598188[_0x28f0('0x14')]){_0x598067[_0x598188[_0x28f0('0x14')]]=_0x598188['content'][_0x28f0('0x15')]();}else if(_0x598188['type']===_0x28f0('0x16')&&_0x598188[_0x28f0('0x17')]&&_0x598188['idField']&&_0x3fead1[_0x598188['variableName']]){_0x598067[_0x598188[_0x28f0('0x14')]]=_0x3fead1[_0x598188['variableName']]['toString']();}else if(_0x598188[_0x28f0('0x13')]===_0x28f0('0x18')&&_0x598188[_0x28f0('0x19')]&&_0x598188[_0x28f0('0x19')][_0x28f0('0x1a')]&&_0x598188[_0x28f0('0x14')]&&_0x3fead1[_0x598188[_0x28f0('0x19')][_0x28f0('0x1a')][_0x28f0('0x1b')]()]){_0x598067[_0x598188[_0x28f0('0x14')]]=_0x3fead1[_0x598188[_0x28f0('0x19')][_0x28f0('0x1a')][_0x28f0('0x1b')]()][_0x28f0('0x15')]();}});}return _0x598067;}function getName(_0x12f415){if(_0x12f415[_0x28f0('0x1c')]('\x20')>0x0){var _0x46dc89=_0x12f415[_0x28f0('0x1d')](/ (.+)/);if(_0x46dc89[0x1]){return _0x46dc89;}}return[_0x12f415,_0x12f415];}var accountsTokens={};function getAccessToken(_0x20da1b){return new Promise(function(_0x2b4405,_0x28ceeb){if(!_[_0x28f0('0x1e')](accountsTokens[_0x20da1b['id']])&&!_[_0x28f0('0x1e')](accountsTokens[_0x20da1b['id']]['access_token'])){if(moment()['isBefore'](accountsTokens[_0x20da1b['id']]['expires_in'])){_0x2b4405(accountsTokens[_0x20da1b['id']][_0x28f0('0x1f')]);}}var _0x5a6aa6;switch(_0x20da1b[_0x28f0('0x20')]){case'US':_0x5a6aa6=_0x28f0('0x21');break;case'AU':_0x5a6aa6=_0x28f0('0x22');break;case'EU':_0x5a6aa6=_0x28f0('0x23');break;case'IN':_0x5a6aa6=_0x28f0('0x24');break;case'CN':_0x5a6aa6=_0x28f0('0x25');break;default:_0x5a6aa6=_0x28f0('0x23');break;}var _0x2af8c3={'method':_0x28f0('0x26'),'uri':_0x5a6aa6+'/oauth/v2/token','qs':{'refresh_token':_0x20da1b['refreshToken'],'client_id':_0x20da1b[_0x28f0('0x27')],'client_secret':_0x20da1b[_0x28f0('0x28')],'grant_type':_0x28f0('0x29')},'json':!![]};return rp(_0x2af8c3)[_0x28f0('0x2a')](function(_0x4d32d1){accountsTokens[_0x20da1b['id']]={'access_token':_0x4d32d1[_0x28f0('0x1f')],'expires_in':moment()['add'](_0x4d32d1['expires_in'],_0x28f0('0x2b'))};_0x2b4405(_0x4d32d1[_0x28f0('0x1f')]);})[_0x28f0('0x2c')](function(_0x22d6c3){logger[_0x28f0('0x2d')](_0x28f0('0x2e'),_0x22d6c3[_0x28f0('0x2f')]);_0x28ceeb(_0x22d6c3);});});}function getUser(_0x4c4661,_0x525a09,_0x2592be,_0x3a88a8){logger[_0x28f0('0x30')](_0x28f0('0x31'));return request({'method':'GET','uri':util[_0x28f0('0x32')](_0x28f0('0x33'),_0x525a09),'qs':{'type':_0x28f0('0x34')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4c4661},'json':!![]})[_0x28f0('0x2a')](function(_0x15abde){if(_0x15abde['users']){var _0x6cecdb=-0x1;if(_[_0x28f0('0x35')](_0x15abde[_0x28f0('0x36')])){if(!_['isNil'](_0x3a88a8)){_0x6cecdb=_[_0x28f0('0x37')](_0x15abde[_0x28f0('0x36')],function(_0x16aa96){return _0x16aa96['email']===_0x3a88a8;});}if(_0x6cecdb>=0x0){logger[_0x28f0('0x30')]('Agent\x20found!');}else{logger['info'](_0x28f0('0x38'));_0x6cecdb=_['findIndex'](_0x15abde['users'],function(_0x56ed56){return _0x56ed56['profile'][_0x28f0('0x1a')]===_0x28f0('0x39');});}return _0x15abde[_0x28f0('0x36')][_0x6cecdb];}else{if(_0x15abde['user'][_0x28f0('0x3a')][_0x28f0('0x1a')]===_0x28f0('0x39')){logger[_0x28f0('0x30')]('Using\x20the\x20admin\x20account!');user=_0x15abde[_0x28f0('0x3b')];return user;}else{logger[_0x28f0('0x2d')](_0x28f0('0x3c'),JSON[_0x28f0('0x3d')](_0x15abde));throw new Error(_0x28f0('0x3e')+JSON[_0x28f0('0x3d')](_0x15abde));}}}else{logger['error'](_0x28f0('0x3c'),JSON[_0x28f0('0x3d')](_0x15abde));throw new Error(_0x28f0('0x3e')+JSON[_0x28f0('0x3d')](_0x15abde));}})[_0x28f0('0x2c')](function(_0x4add13){console[_0x28f0('0x2d')](_0x4add13);});}function getZohoUser(_0x6d5ec6,_0x56df55){return new BPromise(function(_0x1d65ce,_0x2f80d1){request(_0x6d5ec6)[_0x28f0('0x2a')](function(_0x111747){var _0x59958d=null;if(_0x111747){_0x59958d=_0x111747[_0x28f0('0x3f')][0x0];_0x59958d[_0x28f0('0x40')]=_0x56df55;}_0x1d65ce(_0x59958d);})[_0x28f0('0x2c')](function(_0x1d4c39){_0x2f80d1(_0x1d4c39);});});}function createEndUser(_0x4c9934,_0x4fe562,_0x2fa4a9,_0x3e553e,_0x205a19,_0x431f71){var _0x2fa4a9=getName(_0x2fa4a9);return request({'method':_0x28f0('0x26'),'uri':_0x28f0('0x41')+_0x4fe562+'/crm/v2/'+_[_0x28f0('0x42')](_0x431f71[_0x28f0('0x43')])+'s','body':{'data':[{'Last_Name':_0x2fa4a9[0x1],'First_Name':_0x2fa4a9[0x0],'Phone':_0x3e553e,'Owner':{'name':!_[_0x28f0('0x1e')](_0x205a19['role'][_0x28f0('0x1a')])?_0x205a19[_0x28f0('0x44')][_0x28f0('0x1a')]:!_[_0x28f0('0x1e')](_0x205a19[_0x28f0('0x45')])?_0x205a19[_0x28f0('0x45')]+'\x20'+_0x205a19[_0x28f0('0x46')]:_0x205a19['last_name'],'id':_0x205a19['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4c9934},'json':!![]})[_0x28f0('0x2a')](function(_0x985871){if(_0x985871&&_0x985871[_0x28f0('0x3f')][0x0][_0x28f0('0x47')]===_0x28f0('0x48')){var _0x34bbe7=_0x985871[_0x28f0('0x3f')][0x0][_0x28f0('0x49')];_0x34bbe7[_0x28f0('0x40')]=_['startCase'](_0x431f71[_0x28f0('0x43')])+'s';return _0x34bbe7;}logger['error']('The\x20failing\x20result\x20is',JSON[_0x28f0('0x3d')](data));throw new Error(_0x28f0('0x4a')+JSON[_0x28f0('0x3d')](data));})[_0x28f0('0x2c')](function(_0x273502){console[_0x28f0('0x4b')](_0x28f0('0x4c'),_0x273502);});}function getEndUser(_0x308ea0,_0x1d9949,_0x2590ce,_0x2ac07e,_0x5b3c81,_0x31c427,_0x5e9fdb){var _0x24e3c1={'method':_0x28f0('0x4d'),'uri':'','headers':{'Authorization':_0x28f0('0x4e')+_0x308ea0},'json':!![]};switch(_0x5e9fdb[_0x28f0('0x4f')]){case'contact_lead':_0x24e3c1[_0x28f0('0x50')]=_0x28f0('0x41')+_0x1d9949+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x5b3c81+'))';return getZohoUser(_0x24e3c1,_0x28f0('0x51'))[_0x28f0('0x2a')](function(_0x3319c2){if(_0x3319c2)return _0x3319c2;_0x24e3c1[_0x28f0('0x50')]=_0x28f0('0x41')+_0x1d9949+_0x28f0('0x52')+_0x5b3c81+'))';return getZohoUser(_0x24e3c1,_0x28f0('0x53'))[_0x28f0('0x2a')](function(_0x2cd47){if(_0x2cd47)return _0x2cd47;if(_0x5e9fdb[_0x28f0('0x43')]!='nothing'){return createEndUser(_0x308ea0,_0x1d9949,_0x2ac07e,_0x5b3c81,_0x31c427,_0x5e9fdb);}else{return{};}});});break;case _0x28f0('0x54'):_0x24e3c1['uri']=_0x28f0('0x41')+_0x1d9949+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x5b3c81+'))';return getZohoUser(_0x24e3c1,_0x28f0('0x51'))['then'](function(_0x264c84){if(_0x264c84)return _0x264c84;if(_0x5e9fdb[_0x28f0('0x43')]!=_0x28f0('0x55')){return createEndUser(_0x308ea0,_0x1d9949,_0x2ac07e,_0x5b3c81,_0x31c427,_0x5e9fdb);}else{return{};}});break;case'lead':_0x24e3c1[_0x28f0('0x50')]=_0x28f0('0x41')+_0x1d9949+_0x28f0('0x52')+_0x5b3c81+'))';return getZohoUser(_0x24e3c1,_0x28f0('0x53'))[_0x28f0('0x2a')](function(_0x3328c6){if(_0x3328c6)return _0x3328c6;if(_0x5e9fdb[_0x28f0('0x43')]!=_0x28f0('0x55')){return createEndUser(_0x308ea0,_0x1d9949,_0x2ac07e,_0x5b3c81,_0x31c427,_0x5e9fdb);}else{return{};}});break;}}function getCall(_0xff44e5,_0x254115,_0x11cf78,_0x4ec5df,_0xa6c6c4,_0x5c3b35,_0x5d73df,_0xe34e66){logger[_0x28f0('0x30')](_0x28f0('0x56'));var _0x28a508={};_0x28a508[_0x28f0('0x57')]={'name':!_[_0x28f0('0x1e')](_0x4ec5df[_0x28f0('0x44')][_0x28f0('0x1a')])&&!_['isNil'](_0x4ec5df[_0x28f0('0x3a')]['name'])&&_0x4ec5df[_0x28f0('0x3a')][_0x28f0('0x1a')]===_0x28f0('0x58')?_0x4ec5df[_0x28f0('0x44')][_0x28f0('0x1a')]:!_[_0x28f0('0x1e')](_0x4ec5df[_0x28f0('0x45')])?_0x4ec5df[_0x28f0('0x45')]+'\x20'+_0x4ec5df[_0x28f0('0x46')]:_0x4ec5df[_0x28f0('0x46')],'id':_0x4ec5df['id']};_0x28a508[_0x28f0('0x59')]=intUtil[_0x28f0('0x5a')](_0x5c3b35['Subjects'],_0x5d73df,'\x20');_0x28a508[_0x28f0('0x5b')]=intUtil['getString'](_0x5c3b35['Descriptions'],_0x5d73df,'\x0a');if(_0xa6c6c4[_0x28f0('0x40')]===_0x28f0('0x51')){_0x28a508['Who_Id']={'name':!_[_0x28f0('0x1e')](_0xa6c6c4[_0x28f0('0x5c')])?_0xa6c6c4[_0x28f0('0x5c')]:!_[_0x28f0('0x1e')](_0xa6c6c4[_0x28f0('0x5d')])?_0xa6c6c4[_0x28f0('0x5d')]+'\x20'+_0xa6c6c4[_0x28f0('0x5e')]:_0xa6c6c4[_0x28f0('0x5e')],'id':_0xa6c6c4['id']};}if(_0xa6c6c4['enduserType']==='Leads'){_0x28a508[_0x28f0('0x5f')]={'name':!_['isNil'](_0xa6c6c4['Full_Name'])?_0xa6c6c4[_0x28f0('0x5c')]:!_[_0x28f0('0x1e')](_0xa6c6c4[_0x28f0('0x5d')])?_0xa6c6c4[_0x28f0('0x5d')]+'\x20'+_0xa6c6c4[_0x28f0('0x5e')]:_0xa6c6c4[_0x28f0('0x5e')],'id':_0xa6c6c4['id']};_0x28a508[_0x28f0('0x60')]=_[_0x28f0('0x42')](_0xa6c6c4[_0x28f0('0x40')]);}if(_0x5d73df[_0x28f0('0x61')]){_0x28a508['Call_Duration']=moment[_0x28f0('0x62')](parseInt(_0x5d73df[_0x28f0('0x61')])*0x3e8)[_0x28f0('0x32')]('mm:ss');}else if(_0x5d73df[_0x28f0('0x63')]&&_0x5d73df[_0x28f0('0x64')]){_0x28a508['Call_Duration']=moment[_0x28f0('0x62')](moment(_0x5d73df[_0x28f0('0x64')],_0x28f0('0x65'))['diff'](moment(_0x5d73df[_0x28f0('0x66')],_0x28f0('0x65'))))[_0x28f0('0x32')](_0x28f0('0x67'));}switch(_0x5d73df[_0x28f0('0x68')]){case _0x28f0('0x69'):_0x28a508[_0x28f0('0x6a')]=_0x28f0('0x6b');break;case _0x28f0('0x6c'):case'connect':_0x28a508['Call_Result']=_0x28f0('0x6d');break;case _0x28f0('0x6e'):_0x28a508[_0x28f0('0x6a')]=_0x28f0('0x6f');break;case _0x28f0('0x70'):_0x28a508['Call_Result']=_0x28f0('0x71');break;case'timeout':_0x28a508[_0x28f0('0x6a')]=_0x28f0('0x72');default:}_0x28a508[_0x28f0('0x73')]=(_0xe34e66===_0x28f0('0x74')?moment(_0x5d73df['starttime'])['format'](_0x28f0('0x65')):moment(_0x5d73df[_0x28f0('0x75')])[_0x28f0('0x32')](_0x28f0('0x65')))||moment()['format']('YYYY-MM-DDTHH:mm:ss');_0x28a508[_0x28f0('0x76')]=_0xe34e66||_0x28f0('0x77');_0x28a508=_[_0x28f0('0x78')](_0x28a508,getCustomFields(_0x5c3b35['Fields'],_0x5d73df));return request({'method':'POST','uri':_0x28f0('0x41')+_0x254115+_0x28f0('0x79'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0xff44e5},'body':{'data':[_0x28a508]},'json':!![]})[_0x28f0('0x2a')](function(_0x186ebf){if(_0x186ebf&&_0x186ebf[_0x28f0('0x3f')][0x0][_0x28f0('0x47')]===_0x28f0('0x48')){logger[_0x28f0('0x30')]('Call\x20created!');return{'id':_0x186ebf[_0x28f0('0x3f')][0x0][_0x28f0('0x49')]['id']};}})[_0x28f0('0x2c')](function(_0x37bf4a){logger[_0x28f0('0x30')]('err',_0x37bf4a[_0x28f0('0x2f')]);console[_0x28f0('0x4b')](_0x28f0('0x7a'),_0x37bf4a);});}exports['queue']=function(_0xd79b3b,_0xbb531d,_0x477406,_0x576f7b,_0x5687cb,_0xb35fa8){var _0x361b1c,_0x2f7443,_0xdb2452;_0xb35fa8['host']=intUtil[_0x28f0('0x7b')](_0xb35fa8[_0x28f0('0x7c')]);_0xb35fa8[_0x28f0('0x7d')]=intUtil[_0x28f0('0x7b')](_0xb35fa8[_0x28f0('0x7d')]);if(_0x5687cb&&_0x5687cb[_0x28f0('0x7e')]){logger['info'](_0x28f0('0x7f'),_0x28f0('0x80'));_0xbb531d[_0x28f0('0x81')]=_0xb35fa8[_0x28f0('0x7d')]+_0x28f0('0x82')+_0xbb531d[_0x28f0('0x83')]+'/downloads?type=uniqueid&token='+md5(_0xbb531d[_0x28f0('0x83')]);}else{_0xbb531d[_0x28f0('0x81')]='';}var _0x310b2d=_0xb35fa8[_0x28f0('0x7c')]===_0x28f0('0x84')?'eu':_0x28f0('0x85');return getAccessToken(_0xb35fa8)[_0x28f0('0x2a')](function(_0x3302c9){_0xdb2452=_0x3302c9;return getUser(_0xdb2452,_0x310b2d,_0xb35fa8,_0x576f7b[_0x28f0('0x86')]);})[_0x28f0('0x2a')](function(_0x53dfbf){_0x361b1c=_0x53dfbf;logger[_0x28f0('0x30')](_0x28f0('0x87'),_0x361b1c['id']);return getEndUser(_0xdb2452,_0x310b2d,_0xb35fa8,_0xbb531d['calleridname'],_0xbb531d[_0x28f0('0x88')],_0x361b1c,_0x477406);})[_0x28f0('0x2a')](function(_0xc0e57){_0x2f7443=_0xc0e57;return getCall(_0xdb2452,_0x310b2d,_0xb35fa8,_0x361b1c,_0x2f7443,_0x477406,_0xbb531d,_0x28f0('0x77'));})['then'](function(_0x5beadd){if(_0x5beadd){logger[_0x28f0('0x30')](_0x28f0('0x89'),_0x5beadd['id']);logger[_0x28f0('0x30')](_0x28f0('0x7f'),_0x28f0('0x8a'));emit(util[_0x28f0('0x32')]('user:%s',_0x576f7b[_0x28f0('0x1a')]),'trigger:browser:url',{'uri':_0x28f0('0x8b')+_0xb35fa8[_0x28f0('0x7c')]+_0x28f0('0x8c')+_0x5beadd['id']});}})[_0x28f0('0x2c')](function(_0x5eff2d){logger[_0x28f0('0x2d')](_0x28f0('0x7f'),JSON[_0x28f0('0x3d')](_0x5eff2d));});};exports[_0x28f0('0x74')]=function(_0x5f0c28,_0x3fd141,_0x44d12a,_0x213cc3,_0x9381ae,_0x5de81d,_0x299d10){var _0x5d85d6,_0x290312,_0x22d38c;_0x5de81d[_0x28f0('0x7c')]=intUtil[_0x28f0('0x7b')](_0x5de81d[_0x28f0('0x7c')]);_0x5de81d['serverUrl']=intUtil[_0x28f0('0x7b')](_0x5de81d['serverUrl']);if(_0x299d10&&_0x299d10['recordingFormat']&&_0x299d10[_0x28f0('0x8d')]!==_0x28f0('0x8e')){logger[_0x28f0('0x30')](_0x28f0('0x8f'),_0x28f0('0x80'));_0x3fd141['recordingURL']=_0x5de81d[_0x28f0('0x7d')]+_0x28f0('0x82')+_0x3fd141[_0x28f0('0x83')]+_0x28f0('0x90')+md5(_0x3fd141[_0x28f0('0x83')]);}var _0x2cc239=_0x5de81d[_0x28f0('0x7c')]===_0x28f0('0x84')?'eu':_0x28f0('0x85');return getAccessToken(_0x5de81d)[_0x28f0('0x2a')](function(_0x2bed75){_0x22d38c=_0x2bed75;return getUser(_0x22d38c,_0x2cc239,_0x5de81d,_0x213cc3['email']);})[_0x28f0('0x2a')](function(_0x1205c7){_0x5d85d6=_0x1205c7;logger['info'](_0x28f0('0x87'),_0x5d85d6['id']);return getEndUser(_0x22d38c,_0x2cc239,_0x5de81d,_0x3fd141['destcalleridname'],_0x3fd141['destcalleridnum'],_0x5d85d6,_0x44d12a);})[_0x28f0('0x2a')](function(_0x3e9a34){_0x290312=_0x3e9a34;return getCall(_0x22d38c,_0x2cc239,_0x5de81d,_0x5d85d6,_0x290312,_0x44d12a,_0x3fd141,_0x28f0('0x91'));})['then'](function(_0x2a9d87){if(_0x2a9d87){logger['info'](_0x28f0('0x89'),_0x2a9d87['id']);logger[_0x28f0('0x30')](_0x28f0('0x8f'),_0x28f0('0x8a'));emit(util['format'](_0x28f0('0x92'),_0x213cc3[_0x28f0('0x1a')]),_0x28f0('0x93'),{'uri':_0x28f0('0x8b')+_0x5de81d[_0x28f0('0x7c')]+'/crm/EntityInfo.do?module=Calls&id='+_0x2a9d87['id']});}})[_0x28f0('0x2c')](function(_0x4600c7){logger['error'](_0x28f0('0x8f'),JSON[_0x28f0('0x3d')](_0x4600c7));});};exports[_0x28f0('0x94')]=function(_0xd6b221,_0x59e998,_0x1ed207,_0x3013a4,_0x91176d,_0x398ce4){var _0x2b8234,_0x8be75b,_0x4bcee3;_0x398ce4[_0x28f0('0x7c')]=intUtil[_0x28f0('0x7b')](_0x398ce4['host']);_0x398ce4[_0x28f0('0x7d')]=intUtil['stripTrailingSlash'](_0x398ce4[_0x28f0('0x7d')]);if(_0x91176d&&_0x91176d['monitor_format']){logger[_0x28f0('0x30')]('['+_0x59e998['lastevent'][_0x28f0('0x95')]()+']',_0x28f0('0x80'));_0x59e998[_0x28f0('0x81')]=_0x398ce4[_0x28f0('0x7d')]+'/api/voice/recordings/'+_0x59e998[_0x28f0('0x83')]+_0x28f0('0x90')+md5(_0x59e998[_0x28f0('0x83')]);}else{_0x59e998[_0x28f0('0x81')]='';}var _0x7550c8=_0x398ce4[_0x28f0('0x7c')]===_0x28f0('0x84')?'eu':_0x28f0('0x85');return getAccessToken(_0x398ce4)[_0x28f0('0x2a')](function(_0x5781f9){_0x4bcee3=_0x5781f9;return getUser(_0x4bcee3,_0x7550c8,_0x398ce4);})['then'](function(_0x7875ad){_0x2b8234=_0x7875ad;logger['info']('The\x20User\x20ID\x20is:',_0x2b8234['id']);return getEndUser(_0x4bcee3,_0x7550c8,_0x398ce4,_0x59e998[_0x28f0('0x96')],_0x59e998[_0x28f0('0x88')],_0x2b8234,_0x1ed207);})[_0x28f0('0x2a')](function(_0x2814c8){_0x8be75b=_0x2814c8;return getCall(_0x4bcee3,_0x7550c8,_0x398ce4,_0x2b8234,_0x8be75b,_0x1ed207,_0x59e998,'Inbound');})[_0x28f0('0x2a')](function(_0x5108f0){if(_0x5108f0){logger[_0x28f0('0x30')](_0x28f0('0x89'),_0x5108f0['id']);}})[_0x28f0('0x2c')](function(_0x40d67e){logger[_0x28f0('0x2d')]('['+_0x59e998[_0x28f0('0x68')][_0x28f0('0x95')]()+']',JSON[_0x28f0('0x3d')](_0x40d67e));});};
\ No newline at end of file
+var _0x2a5e=['/crm/v2/','moduleCreate','first_name','last_name','Zoho-oauthtoken\x20','code','details','enduserType','Error:\x20','CREATE\x20ERROR','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','lead','nothing','Creating\x20new\x20call...','Owner','administrator','role','Description','getString','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','startCase','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','lastevent','Call_Result','Called','complete','connect','Answered','rejected','Abandoned','timeout','Timeout','Call_Start_Time','starttime','agentcalledAt','Call_Type','merge','Fields','Call\x20created!','err','log','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','destcalleridnum','Outbound','[OUTBOUND]','unmanaged','/downloads?type=uniqueid&token=','Inbound','toUpperCase','lodash','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','defaults','localhost','redis','debug','[HTTP]','includes','picklist','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','isBefore','expires_in','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','findIndex','info','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','stringify','data','https://www.zohoapis.'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2a5e,0xf6));var _0xe2a5=function(_0x1c6df8,_0x2dda0c){_0x1c6df8=_0x1c6df8-0x0;var _0x6d09e4=_0x2a5e[_0x1c6df8];return _0x6d09e4;};'use strict';var _=require(_0xe2a5('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xe2a5('0x1'));var intUtil=require(_0xe2a5('0x2'));var moment=require(_0xe2a5('0x3'));var Redis=require(_0xe2a5('0x4'));var BPromise=require(_0xe2a5('0x5'));var config=require(_0xe2a5('0x6'));var logger=require(_0xe2a5('0x7'))(_0xe2a5('0x8'));config['redis']=_[_0xe2a5('0x9')](config['redis'],{'host':_0xe2a5('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe2a5('0xb')]));function emit(_0x28a022,_0x893c7e,_0x38ae2b){io['to'](_0x28a022)['emit'](_0x893c7e,_0x38ae2b);}function request(_0x2b8382){logger[_0xe2a5('0xc')](_0xe2a5('0xd'),JSON['stringify'](_0x2b8382));return rp(_0x2b8382);}function getCustomFields(_0x5e56d1,_0x56b9a6){var _0x172788={};if(_0x5e56d1['length']>0x0){_['forEach'](_0x5e56d1,function(_0x20e3a7){if(_[_0xe2a5('0xe')](['string',_0xe2a5('0xf')],_0x20e3a7[_0xe2a5('0x10')])&&_0x20e3a7[_0xe2a5('0x11')]){_0x172788[_0x20e3a7['idField']]=_0x20e3a7[_0xe2a5('0x12')][_0xe2a5('0x13')]();}else if(_0x20e3a7['type']==='variable'&&_0x20e3a7[_0xe2a5('0x14')]&&_0x20e3a7[_0xe2a5('0x11')]&&_0x56b9a6[_0x20e3a7['variableName']]){_0x172788[_0x20e3a7[_0xe2a5('0x11')]]=_0x56b9a6[_0x20e3a7[_0xe2a5('0x14')]][_0xe2a5('0x13')]();}else if(_0x20e3a7[_0xe2a5('0x10')]===_0xe2a5('0x15')&&_0x20e3a7['Variable']&&_0x20e3a7[_0xe2a5('0x16')][_0xe2a5('0x17')]&&_0x20e3a7[_0xe2a5('0x11')]&&_0x56b9a6[_0x20e3a7['Variable'][_0xe2a5('0x17')][_0xe2a5('0x18')]()]){_0x172788[_0x20e3a7[_0xe2a5('0x11')]]=_0x56b9a6[_0x20e3a7[_0xe2a5('0x16')][_0xe2a5('0x17')]['toLowerCase']()]['toString']();}});}return _0x172788;}function getName(_0x5aca14){if(_0x5aca14[_0xe2a5('0x19')]('\x20')>0x0){var _0x28b66e=_0x5aca14[_0xe2a5('0x1a')](/ (.+)/);if(_0x28b66e[0x1]){return _0x28b66e;}}return[_0x5aca14,_0x5aca14];}var accountsTokens={};function getAccessToken(_0x10f25c){return new Promise(function(_0x27ac77,_0xe48c96){if(!_[_0xe2a5('0x1b')](accountsTokens[_0x10f25c['id']])&&!_['isNil'](accountsTokens[_0x10f25c['id']]['access_token'])){if(moment()[_0xe2a5('0x1c')](accountsTokens[_0x10f25c['id']][_0xe2a5('0x1d')])){_0x27ac77(accountsTokens[_0x10f25c['id']][_0xe2a5('0x1e')]);}}var _0x419152;switch(_0x10f25c[_0xe2a5('0x1f')]){case'US':_0x419152=_0xe2a5('0x20');break;case'AU':_0x419152='https://accounts.zoho.com.au';break;case'EU':_0x419152='https://accounts.zoho.eu';break;case'IN':_0x419152=_0xe2a5('0x21');break;case'CN':_0x419152=_0xe2a5('0x22');break;default:_0x419152=_0xe2a5('0x23');break;}var _0x101d85={'method':_0xe2a5('0x24'),'uri':_0x419152+_0xe2a5('0x25'),'qs':{'refresh_token':_0x10f25c['refreshToken'],'client_id':_0x10f25c[_0xe2a5('0x26')],'client_secret':_0x10f25c[_0xe2a5('0x27')],'grant_type':_0xe2a5('0x28')},'json':!![]};return rp(_0x101d85)[_0xe2a5('0x29')](function(_0x1616a6){accountsTokens[_0x10f25c['id']]={'access_token':_0x1616a6['access_token'],'expires_in':moment()[_0xe2a5('0x2a')](_0x1616a6[_0xe2a5('0x1d')],_0xe2a5('0x2b'))};_0x27ac77(_0x1616a6[_0xe2a5('0x1e')]);})[_0xe2a5('0x2c')](function(_0x212c07){logger[_0xe2a5('0x2d')](_0xe2a5('0x2e'),_0x212c07[_0xe2a5('0x2f')]);_0xe48c96(_0x212c07);});});}function getUser(_0x270b56,_0x532996,_0x470ef2,_0x4714ce){logger['info']('Search\x20user');return request({'method':_0xe2a5('0x30'),'uri':util[_0xe2a5('0x31')](_0xe2a5('0x32'),_0x532996),'qs':{'type':_0xe2a5('0x33')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x270b56},'json':!![]})[_0xe2a5('0x29')](function(_0x26a76d){if(_0x26a76d[_0xe2a5('0x34')]){var _0x5c99c9=-0x1;if(_[_0xe2a5('0x35')](_0x26a76d[_0xe2a5('0x34')])){if(!_[_0xe2a5('0x1b')](_0x4714ce)){_0x5c99c9=_[_0xe2a5('0x36')](_0x26a76d[_0xe2a5('0x34')],function(_0x49a163){return _0x49a163['email']===_0x4714ce;});}if(_0x5c99c9>=0x0){logger[_0xe2a5('0x37')](_0xe2a5('0x38'));}else{logger['info'](_0xe2a5('0x39'));_0x5c99c9=_[_0xe2a5('0x36')](_0x26a76d[_0xe2a5('0x34')],function(_0x46b188){return _0x46b188[_0xe2a5('0x3a')][_0xe2a5('0x17')]===_0xe2a5('0x3b');});}return _0x26a76d[_0xe2a5('0x34')][_0x5c99c9];}else{if(_0x26a76d[_0xe2a5('0x3c')][_0xe2a5('0x3a')]['name']==='Administrator'){logger[_0xe2a5('0x37')](_0xe2a5('0x39'));user=_0x26a76d[_0xe2a5('0x3c')];return user;}else{logger[_0xe2a5('0x2d')](_0xe2a5('0x3d'),JSON['stringify'](_0x26a76d));throw new Error(_0xe2a5('0x3e')+JSON[_0xe2a5('0x3f')](_0x26a76d));}}}else{logger[_0xe2a5('0x2d')](_0xe2a5('0x3d'),JSON[_0xe2a5('0x3f')](_0x26a76d));throw new Error(_0xe2a5('0x3e')+JSON[_0xe2a5('0x3f')](_0x26a76d));}})['catch'](function(_0x57a7fe){console[_0xe2a5('0x2d')](_0x57a7fe);});}function getZohoUser(_0x3f1f7a,_0x40c27e){return new BPromise(function(_0x4bac43,_0x45eb5a){request(_0x3f1f7a)[_0xe2a5('0x29')](function(_0x26c50b){var _0x2ef9d1=null;if(_0x26c50b){_0x2ef9d1=_0x26c50b[_0xe2a5('0x40')][0x0];_0x2ef9d1['enduserType']=_0x40c27e;}_0x4bac43(_0x2ef9d1);})[_0xe2a5('0x2c')](function(_0x176b51){_0x45eb5a(_0x176b51);});});}function createEndUser(_0x42d968,_0x502454,_0x28eb0a,_0x474145,_0x2230e2,_0x3fdf67){var _0x28eb0a=getName(_0x28eb0a);return request({'method':'POST','uri':_0xe2a5('0x41')+_0x502454+_0xe2a5('0x42')+_['startCase'](_0x3fdf67[_0xe2a5('0x43')])+'s','body':{'data':[{'Last_Name':_0x28eb0a[0x1],'First_Name':_0x28eb0a[0x0],'Phone':_0x474145,'Owner':{'name':!_[_0xe2a5('0x1b')](_0x2230e2['role'][_0xe2a5('0x17')])?_0x2230e2['role'][_0xe2a5('0x17')]:!_[_0xe2a5('0x1b')](_0x2230e2[_0xe2a5('0x44')])?_0x2230e2['first_name']+'\x20'+_0x2230e2[_0xe2a5('0x45')]:_0x2230e2[_0xe2a5('0x45')],'id':_0x2230e2['id']}}]},'headers':{'Authorization':_0xe2a5('0x46')+_0x42d968},'json':!![]})[_0xe2a5('0x29')](function(_0x557d19){if(_0x557d19&&_0x557d19[_0xe2a5('0x40')][0x0][_0xe2a5('0x47')]==='SUCCESS'){var _0x53e060=_0x557d19['data'][0x0][_0xe2a5('0x48')];_0x53e060[_0xe2a5('0x49')]=_['startCase'](_0x3fdf67['moduleCreate'])+'s';return _0x53e060;}logger['error'](_0xe2a5('0x3d'),JSON[_0xe2a5('0x3f')](data));throw new Error(_0xe2a5('0x4a')+JSON[_0xe2a5('0x3f')](data));})[_0xe2a5('0x2c')](function(_0x2cca53){console['log'](_0xe2a5('0x4b'),_0x2cca53);});}function getEndUser(_0x221de7,_0x3f4fdb,_0x46fd7e,_0x4f2e3d,_0x1c50d9,_0x41c70f,_0x3212a9){var _0x23a080={'method':_0xe2a5('0x30'),'uri':'','headers':{'Authorization':_0xe2a5('0x46')+_0x221de7},'json':!![]};switch(_0x3212a9[_0xe2a5('0x4c')]){case'contact_lead':_0x23a080[_0xe2a5('0x4d')]=_0xe2a5('0x41')+_0x3f4fdb+_0xe2a5('0x4e')+_0x1c50d9+'))';return getZohoUser(_0x23a080,_0xe2a5('0x4f'))[_0xe2a5('0x29')](function(_0x5973bb){if(_0x5973bb)return _0x5973bb;_0x23a080['uri']=_0xe2a5('0x41')+_0x3f4fdb+_0xe2a5('0x50')+_0x1c50d9+'))';return getZohoUser(_0x23a080,_0xe2a5('0x51'))['then'](function(_0x40273a){if(_0x40273a)return _0x40273a;if(_0x3212a9[_0xe2a5('0x43')]!='nothing'){return createEndUser(_0x221de7,_0x3f4fdb,_0x4f2e3d,_0x1c50d9,_0x41c70f,_0x3212a9);}else{return{};}});});break;case _0xe2a5('0x52'):_0x23a080['uri']=_0xe2a5('0x41')+_0x3f4fdb+_0xe2a5('0x4e')+_0x1c50d9+'))';return getZohoUser(_0x23a080,'Contacts')[_0xe2a5('0x29')](function(_0xee803f){if(_0xee803f)return _0xee803f;if(_0x3212a9[_0xe2a5('0x43')]!='nothing'){return createEndUser(_0x221de7,_0x3f4fdb,_0x4f2e3d,_0x1c50d9,_0x41c70f,_0x3212a9);}else{return{};}});break;case _0xe2a5('0x53'):_0x23a080[_0xe2a5('0x4d')]=_0xe2a5('0x41')+_0x3f4fdb+_0xe2a5('0x50')+_0x1c50d9+'))';return getZohoUser(_0x23a080,_0xe2a5('0x51'))['then'](function(_0x45ebff){if(_0x45ebff)return _0x45ebff;if(_0x3212a9[_0xe2a5('0x43')]!=_0xe2a5('0x54')){return createEndUser(_0x221de7,_0x3f4fdb,_0x4f2e3d,_0x1c50d9,_0x41c70f,_0x3212a9);}else{return{};}});break;}}function getCall(_0x1b5e9e,_0x599ae4,_0x248784,_0x3630ca,_0x14c365,_0x2acb09,_0x557feb,_0x112d5d){logger[_0xe2a5('0x37')](_0xe2a5('0x55'));var _0x49623c={};_0x49623c[_0xe2a5('0x56')]={'name':!_['isNil'](_0x3630ca['role']['name'])&&!_[_0xe2a5('0x1b')](_0x3630ca[_0xe2a5('0x3a')][_0xe2a5('0x17')])&&_0x3630ca['profile']['name']===_0xe2a5('0x57')?_0x3630ca[_0xe2a5('0x58')][_0xe2a5('0x17')]:!_[_0xe2a5('0x1b')](_0x3630ca['first_name'])?_0x3630ca['first_name']+'\x20'+_0x3630ca[_0xe2a5('0x45')]:_0x3630ca[_0xe2a5('0x45')],'id':_0x3630ca['id']};_0x49623c['Subject']=intUtil['getString'](_0x2acb09['Subjects'],_0x557feb,'\x20');_0x49623c[_0xe2a5('0x59')]=intUtil[_0xe2a5('0x5a')](_0x2acb09[_0xe2a5('0x5b')],_0x557feb,'\x0a');if(_0x14c365['enduserType']===_0xe2a5('0x4f')){_0x49623c[_0xe2a5('0x5c')]={'name':!_[_0xe2a5('0x1b')](_0x14c365[_0xe2a5('0x5d')])?_0x14c365[_0xe2a5('0x5d')]:!_[_0xe2a5('0x1b')](_0x14c365[_0xe2a5('0x5e')])?_0x14c365['First_Name']+'\x20'+_0x14c365['Last_Name']:_0x14c365[_0xe2a5('0x5f')],'id':_0x14c365['id']};}if(_0x14c365[_0xe2a5('0x49')]==='Leads'){_0x49623c[_0xe2a5('0x60')]={'name':!_[_0xe2a5('0x1b')](_0x14c365[_0xe2a5('0x5d')])?_0x14c365[_0xe2a5('0x5d')]:!_[_0xe2a5('0x1b')](_0x14c365[_0xe2a5('0x5e')])?_0x14c365[_0xe2a5('0x5e')]+'\x20'+_0x14c365[_0xe2a5('0x5f')]:_0x14c365['Last_Name'],'id':_0x14c365['id']};_0x49623c[_0xe2a5('0x61')]=_[_0xe2a5('0x62')](_0x14c365[_0xe2a5('0x49')]);}if(_0x557feb[_0xe2a5('0x63')]){_0x49623c[_0xe2a5('0x64')]=moment[_0xe2a5('0x65')](parseInt(_0x557feb[_0xe2a5('0x63')])*0x3e8)[_0xe2a5('0x31')](_0xe2a5('0x66'));}else if(_0x557feb[_0xe2a5('0x67')]&&_0x557feb[_0xe2a5('0x68')]){_0x49623c['Call_Duration']=moment[_0xe2a5('0x65')](moment(_0x557feb[_0xe2a5('0x68')],_0xe2a5('0x69'))['diff'](moment(_0x557feb['starttime'],_0xe2a5('0x69'))))[_0xe2a5('0x31')](_0xe2a5('0x66'));}switch(_0x557feb[_0xe2a5('0x6a')]){case'called':_0x49623c[_0xe2a5('0x6b')]=_0xe2a5('0x6c');break;case _0xe2a5('0x6d'):case _0xe2a5('0x6e'):_0x49623c[_0xe2a5('0x6b')]=_0xe2a5('0x6f');break;case _0xe2a5('0x70'):_0x49623c[_0xe2a5('0x6b')]='Rejected';break;case'abandoned':_0x49623c[_0xe2a5('0x6b')]=_0xe2a5('0x71');break;case _0xe2a5('0x72'):_0x49623c[_0xe2a5('0x6b')]=_0xe2a5('0x73');default:}_0x49623c[_0xe2a5('0x74')]=(_0x112d5d==='outbound'?moment(_0x557feb[_0xe2a5('0x75')])[_0xe2a5('0x31')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x557feb[_0xe2a5('0x76')])[_0xe2a5('0x31')](_0xe2a5('0x69')))||moment()[_0xe2a5('0x31')](_0xe2a5('0x69'));_0x49623c[_0xe2a5('0x77')]=_0x112d5d||'Inbound';_0x49623c=_[_0xe2a5('0x78')](_0x49623c,getCustomFields(_0x2acb09[_0xe2a5('0x79')],_0x557feb));return request({'method':_0xe2a5('0x24'),'uri':'https://www.zohoapis.'+_0x599ae4+'/crm/v2/Calls','headers':{'Authorization':_0xe2a5('0x46')+_0x1b5e9e},'body':{'data':[_0x49623c]},'json':!![]})['then'](function(_0x5bbccd){if(_0x5bbccd&&_0x5bbccd['data'][0x0][_0xe2a5('0x47')]==='SUCCESS'){logger[_0xe2a5('0x37')](_0xe2a5('0x7a'));return{'id':_0x5bbccd[_0xe2a5('0x40')][0x0][_0xe2a5('0x48')]['id']};}})[_0xe2a5('0x2c')](function(_0x4f813d){logger[_0xe2a5('0x37')](_0xe2a5('0x7b'),_0x4f813d[_0xe2a5('0x2f')]);console[_0xe2a5('0x7c')](_0xe2a5('0x7b'),_0x4f813d);});}exports[_0xe2a5('0x7d')]=function(_0x1866d0,_0x288639,_0x1d3f26,_0x474341,_0x45e9b8,_0x3edeef){var _0x569aa9,_0x474fb9,_0x498515;_0x3edeef[_0xe2a5('0x7e')]=intUtil[_0xe2a5('0x7f')](_0x3edeef['host']);_0x3edeef[_0xe2a5('0x80')]=intUtil['stripTrailingSlash'](_0x3edeef[_0xe2a5('0x80')]);if(_0x45e9b8&&_0x45e9b8[_0xe2a5('0x81')]){logger[_0xe2a5('0x37')](_0xe2a5('0x82'),_0xe2a5('0x83'));_0x288639[_0xe2a5('0x84')]=_0x3edeef[_0xe2a5('0x80')]+_0xe2a5('0x85')+_0x288639[_0xe2a5('0x86')]+'/downloads?type=uniqueid&token='+md5(_0x288639['uniqueid']);}else{_0x288639[_0xe2a5('0x84')]='';}var _0x523f1c=_0x3edeef[_0xe2a5('0x7e')]===_0xe2a5('0x87')?'eu':_0xe2a5('0x88');return getAccessToken(_0x3edeef)['then'](function(_0x29235f){_0x498515=_0x29235f;return getUser(_0x498515,_0x523f1c,_0x3edeef,_0x474341[_0xe2a5('0x89')]);})['then'](function(_0x3ff427){_0x569aa9=_0x3ff427;logger[_0xe2a5('0x37')](_0xe2a5('0x8a'),_0x569aa9['id']);return getEndUser(_0x498515,_0x523f1c,_0x3edeef,_0x288639[_0xe2a5('0x8b')],_0x288639[_0xe2a5('0x8c')],_0x569aa9,_0x1d3f26);})[_0xe2a5('0x29')](function(_0x9818da){_0x474fb9=_0x9818da;return getCall(_0x498515,_0x523f1c,_0x3edeef,_0x569aa9,_0x474fb9,_0x1d3f26,_0x288639,'Inbound');})[_0xe2a5('0x29')](function(_0x213d7d){if(_0x213d7d){logger[_0xe2a5('0x37')](_0xe2a5('0x8d'),_0x213d7d['id']);logger[_0xe2a5('0x37')]('[QUEUE]',_0xe2a5('0x8e'));emit(util[_0xe2a5('0x31')](_0xe2a5('0x8f'),_0x474341[_0xe2a5('0x17')]),_0xe2a5('0x90'),{'uri':'https://crm.'+_0x3edeef['host']+_0xe2a5('0x91')+_0x213d7d['id']});}})[_0xe2a5('0x2c')](function(_0x50cd77){logger['error'](_0xe2a5('0x82'),JSON[_0xe2a5('0x3f')](_0x50cd77));});};exports[_0xe2a5('0x92')]=function(_0x2e42ab,_0xa1a0fd,_0x32e1a7,_0xe21fea,_0x17a7ee,_0x52c324,_0xcc5ac8){var _0x42a584,_0x4f9a49,_0x2d75fd;_0x52c324['host']=intUtil[_0xe2a5('0x7f')](_0x52c324[_0xe2a5('0x7e')]);_0x52c324[_0xe2a5('0x80')]=intUtil['stripTrailingSlash'](_0x52c324[_0xe2a5('0x80')]);if(_0xcc5ac8&&_0xcc5ac8[_0xe2a5('0x93')]&&_0xcc5ac8['recordingFormat']!==_0xe2a5('0x94')){logger[_0xe2a5('0x37')]('[OUTBOUND]',_0xe2a5('0x83'));_0xa1a0fd[_0xe2a5('0x84')]=_0x52c324['serverUrl']+_0xe2a5('0x85')+_0xa1a0fd[_0xe2a5('0x86')]+'/downloads?type=uniqueid&token='+md5(_0xa1a0fd[_0xe2a5('0x86')]);}var _0x26e6a6=_0x52c324['host']===_0xe2a5('0x87')?'eu':'com';return getAccessToken(_0x52c324)['then'](function(_0x590343){_0x2d75fd=_0x590343;return getUser(_0x2d75fd,_0x26e6a6,_0x52c324,_0xe21fea[_0xe2a5('0x89')]);})[_0xe2a5('0x29')](function(_0x23ed5a){_0x42a584=_0x23ed5a;logger[_0xe2a5('0x37')](_0xe2a5('0x8a'),_0x42a584['id']);return getEndUser(_0x2d75fd,_0x26e6a6,_0x52c324,_0xa1a0fd['destcalleridname'],_0xa1a0fd[_0xe2a5('0x95')],_0x42a584,_0x32e1a7);})[_0xe2a5('0x29')](function(_0x14dcbd){_0x4f9a49=_0x14dcbd;return getCall(_0x2d75fd,_0x26e6a6,_0x52c324,_0x42a584,_0x4f9a49,_0x32e1a7,_0xa1a0fd,_0xe2a5('0x96'));})[_0xe2a5('0x29')](function(_0x191d5a){if(_0x191d5a){logger[_0xe2a5('0x37')](_0xe2a5('0x8d'),_0x191d5a['id']);logger[_0xe2a5('0x37')](_0xe2a5('0x97'),_0xe2a5('0x8e'));emit(util[_0xe2a5('0x31')](_0xe2a5('0x8f'),_0xe21fea[_0xe2a5('0x17')]),_0xe2a5('0x90'),{'uri':'https://crm.'+_0x52c324[_0xe2a5('0x7e')]+_0xe2a5('0x91')+_0x191d5a['id']});}})['catch'](function(_0x4f7290){logger[_0xe2a5('0x2d')](_0xe2a5('0x97'),JSON[_0xe2a5('0x3f')](_0x4f7290));});};exports[_0xe2a5('0x98')]=function(_0x3eed37,_0x5749e2,_0x52f5ac,_0x369688,_0x5a23cc,_0x22c7ac){var _0x5c1384,_0x1fb4cf,_0xe1a970;_0x22c7ac['host']=intUtil['stripTrailingSlash'](_0x22c7ac[_0xe2a5('0x7e')]);_0x22c7ac[_0xe2a5('0x80')]=intUtil[_0xe2a5('0x7f')](_0x22c7ac[_0xe2a5('0x80')]);if(_0x5a23cc&&_0x5a23cc[_0xe2a5('0x81')]){logger[_0xe2a5('0x37')]('['+_0x5749e2[_0xe2a5('0x6a')]['toUpperCase']()+']',_0xe2a5('0x83'));_0x5749e2['recordingURL']=_0x22c7ac[_0xe2a5('0x80')]+_0xe2a5('0x85')+_0x5749e2[_0xe2a5('0x86')]+_0xe2a5('0x99')+md5(_0x5749e2[_0xe2a5('0x86')]);}else{_0x5749e2[_0xe2a5('0x84')]='';}var _0x2d51d4=_0x22c7ac[_0xe2a5('0x7e')]===_0xe2a5('0x87')?'eu':_0xe2a5('0x88');return getAccessToken(_0x22c7ac)[_0xe2a5('0x29')](function(_0x437bb0){_0xe1a970=_0x437bb0;return getUser(_0xe1a970,_0x2d51d4,_0x22c7ac);})[_0xe2a5('0x29')](function(_0x396e4e){_0x5c1384=_0x396e4e;logger[_0xe2a5('0x37')](_0xe2a5('0x8a'),_0x5c1384['id']);return getEndUser(_0xe1a970,_0x2d51d4,_0x22c7ac,_0x5749e2[_0xe2a5('0x8b')],_0x5749e2[_0xe2a5('0x8c')],_0x5c1384,_0x52f5ac);})['then'](function(_0x2501b0){_0x1fb4cf=_0x2501b0;return getCall(_0xe1a970,_0x2d51d4,_0x22c7ac,_0x5c1384,_0x1fb4cf,_0x52f5ac,_0x5749e2,_0xe2a5('0x9a'));})[_0xe2a5('0x29')](function(_0x5aa29a){if(_0x5aa29a){logger[_0xe2a5('0x37')](_0xe2a5('0x8d'),_0x5aa29a['id']);}})[_0xe2a5('0x2c')](function(_0x530b87){logger[_0xe2a5('0x2d')]('['+_0x5749e2[_0xe2a5('0x6a')][_0xe2a5('0x9b')]()+']',JSON[_0xe2a5('0x3f')](_0x530b87));});};
\ No newline at end of file
index 9fba2ca..7f9e0dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc39c=['info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger','trigger','exec','data2','data3','render','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s'];(function(_0x12790c,_0x39f8c8){var _0x4a4c50=function(_0x4dfe2e){while(--_0x4dfe2e){_0x12790c['push'](_0x12790c['shift']());}};_0x4a4c50(++_0x39f8c8);}(_0xc39c,0x1be));var _0xcc39=function(_0x4b75b6,_0x107523){_0x4b75b6=_0x4b75b6-0x0;var _0xff2e6c=_0xc39c[_0x4b75b6];return _0xff2e6c;};'use strict';var util=require('util');var sh=require(_0xcc39('0x0'));var Mustache=require(_0xcc39('0x1'));var logger=require(_0xcc39('0x2'))(_0xcc39('0x3'));exports[_0xcc39('0x4')]=function(_0x27fa24,_0x12ddae){var _0x7849c4=_0x27fa24[_0xcc39('0x5')]?_0x27fa24[_0xcc39('0x5')]:'Script';var _0x2360a5=_0x27fa24[_0xcc39('0x6')]?Mustache[_0xcc39('0x7')](_0x27fa24[_0xcc39('0x6')],_0x12ddae):_0x12ddae;sh[_0xcc39('0x4')](_0x2360a5,function(_0xe5b5ea,_0xe7d92b,_0x30f6a4){if(_0xe5b5ea!==0x0){logger['error'](util[_0xcc39('0x8')](_0xcc39('0x9'),_0x7849c4,_0x2360a5,_0xe5b5ea,_0x30f6a4));}else{logger[_0xcc39('0xa')](util[_0xcc39('0x8')](_0xcc39('0xb'),_0x7849c4,_0x2360a5,_0xe7d92b));}});};
\ No newline at end of file
+var _0x7638=['data3','render','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger','exec','data2','Script'];(function(_0x15cb1a,_0x11d320){var _0x4c73a0=function(_0x21f746){while(--_0x21f746){_0x15cb1a['push'](_0x15cb1a['shift']());}};_0x4c73a0(++_0x11d320);}(_0x7638,0x1da));var _0x8763=function(_0x5bc4d6,_0x5f4919){_0x5bc4d6=_0x5bc4d6-0x0;var _0x56424e=_0x7638[_0x5bc4d6];return _0x56424e;};'use strict';var util=require('util');var sh=require(_0x8763('0x0'));var Mustache=require(_0x8763('0x1'));var logger=require(_0x8763('0x2'))('trigger');exports[_0x8763('0x3')]=function(_0x1b289c,_0x1a80b1){var _0x2a35d7=_0x1b289c[_0x8763('0x4')]?_0x1b289c[_0x8763('0x4')]:_0x8763('0x5');var _0xe006d4=_0x1b289c[_0x8763('0x6')]?Mustache[_0x8763('0x7')](_0x1b289c[_0x8763('0x6')],_0x1a80b1):_0x1a80b1;sh[_0x8763('0x3')](_0xe006d4,function(_0x2cc3a0,_0x4b8f3c,_0x140dde){if(_0x2cc3a0!==0x0){logger[_0x8763('0x8')](util['format'](_0x8763('0x9'),_0x2a35d7,_0xe006d4,_0x2cc3a0,_0x140dde));}else{logger['info'](util[_0x8763('0xa')](_0x8763('0xb'),_0x2a35d7,_0xe006d4,_0x4b8f3c));}});};
\ No newline at end of file
index 365a6da..7569038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e4=['parse','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','format','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','message','request-promise','util','lodash','mustache','../../../../config/logger','exec','toUpperCase','data2','data5','number','headers','render','data6','error','stack','data1','GET','DELETE','POST','data7'];(function(_0x3e3f3f,_0x40b1f3){var _0x48cbc9=function(_0x631150){while(--_0x631150){_0x3e3f3f['push'](_0x3e3f3f['shift']());}};_0x48cbc9(++_0x40b1f3);}(_0x34e4,0xd3));var _0x434e=function(_0x529d84,_0x15165f){_0x529d84=_0x529d84-0x0;var _0x10973e=_0x34e4[_0x529d84];return _0x10973e;};'use strict';var rp=require(_0x434e('0x0'));var util=require(_0x434e('0x1'));var _=require(_0x434e('0x2'));var Mustache=require(_0x434e('0x3'));var logger=require(_0x434e('0x4'))('trigger');exports[_0x434e('0x5')]=function(_0x42f42b,_0x18dee5){var _0x2b80b5,_0x250bd6;var _0xbba235={'method':_0x42f42b['data1'][_0x434e('0x6')](),'uri':Mustache['render'](_0x42f42b[_0x434e('0x7')],_0x18dee5),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x42f42b[_0x434e('0x8')])===_0x434e('0x9')&&parseInt(_0x42f42b[_0x434e('0x8')])>=0x1&&parseInt(_0x42f42b[_0x434e('0x8')])<=0xa?parseInt(_0x42f42b['data5'])*0x3e8:0x5*0x3e8};try{_0xbba235[_0x434e('0xa')]=_0x42f42b['data6']?JSON['parse'](Mustache[_0x434e('0xb')](_0x42f42b[_0x434e('0xc')],_0x18dee5)):{};}catch(_0x48255c){logger[_0x434e('0xd')](_0x48255c[_0x434e('0xe')]);}switch(_0x42f42b[_0x434e('0xf')][_0x434e('0x6')]()){case _0x434e('0x10'):case _0x434e('0x11'):_0x2b80b5=null;_0xbba235['qs']=_0x18dee5;break;case _0x434e('0x12'):case'PUT':if(_0x42f42b[_0x434e('0x13')]){try{_0x2b80b5=JSON[_0x434e('0x14')](Mustache[_0x434e('0xb')](_0x42f42b[_0x434e('0x13')],_0x18dee5));_0xbba235[_0x434e('0x15')]=_0x2b80b5;}catch(_0x2dbd85){logger[_0x434e('0xd')](_0x2dbd85['stack']);logger[_0x434e('0xd')](_0x434e('0x16'));}}else{_0x2b80b5=_0x18dee5;_0xbba235['body']=_0x2b80b5;}break;}logger[_0x434e('0x17')](util['format'](_0x434e('0x18'),_0x42f42b[_0x434e('0xf')],_0x42f42b[_0x434e('0x7')],JSON[_0x434e('0x19')](_0xbba235)));rp(_0xbba235)[_0x434e('0x1a')](function(_0x47f44f){_0x2b80b5=!_['isNil'](_0x2b80b5)?',\x20request\x20body:\x20'+_0x2b80b5:'';_0x250bd6=typeof _0x47f44f[_0x434e('0x15')]===_0x434e('0x1b')?JSON[_0x434e('0x19')](_0x47f44f[_0x434e('0x15')]):_0x47f44f[_0x434e('0x15')];logger[_0x434e('0x17')](util['format'](_0x434e('0x1c'),_0x42f42b[_0x434e('0xf')],_0x42f42b[_0x434e('0x7')],_0x47f44f[_0x434e('0x1d')],_0x250bd6));})['catch'](function(_0x1bebec){logger['error'](util[_0x434e('0x1e')](_0x434e('0x1f'),_0x42f42b['data1'],_0x42f42b[_0x434e('0x7')],_0x1bebec['statusCode'],_0x1bebec['name'],_0x1bebec[_0x434e('0x20')]));});};
\ No newline at end of file
+var _0x34de=['%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','toUpperCase','render','data2','data5','headers','data6','error','stack','data1','GET','DELETE','POST','PUT','data7','parse','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format'];(function(_0x8eeaff,_0x49995b){var _0xec99a9=function(_0x36dc4a){while(--_0x36dc4a){_0x8eeaff['push'](_0x8eeaff['shift']());}};_0xec99a9(++_0x49995b);}(_0x34de,0x167));var _0xe34d=function(_0x4f340f,_0x14c4cf){_0x4f340f=_0x4f340f-0x0;var _0x599b85=_0x34de[_0x4f340f];return _0x599b85;};'use strict';var rp=require(_0xe34d('0x0'));var util=require(_0xe34d('0x1'));var _=require(_0xe34d('0x2'));var Mustache=require(_0xe34d('0x3'));var logger=require(_0xe34d('0x4'))(_0xe34d('0x5'));exports[_0xe34d('0x6')]=function(_0x2f5f70,_0x2d5a5f){var _0x194a95,_0x2f84ca;var _0x2a6e94={'method':_0x2f5f70['data1'][_0xe34d('0x7')](),'uri':Mustache[_0xe34d('0x8')](_0x2f5f70[_0xe34d('0x9')],_0x2d5a5f),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x2f5f70[_0xe34d('0xa')])==='number'&&parseInt(_0x2f5f70[_0xe34d('0xa')])>=0x1&&parseInt(_0x2f5f70[_0xe34d('0xa')])<=0xa?parseInt(_0x2f5f70[_0xe34d('0xa')])*0x3e8:0x5*0x3e8};try{_0x2a6e94[_0xe34d('0xb')]=_0x2f5f70[_0xe34d('0xc')]?JSON['parse'](Mustache['render'](_0x2f5f70[_0xe34d('0xc')],_0x2d5a5f)):{};}catch(_0xe56513){logger[_0xe34d('0xd')](_0xe56513[_0xe34d('0xe')]);}switch(_0x2f5f70[_0xe34d('0xf')]['toUpperCase']()){case _0xe34d('0x10'):case _0xe34d('0x11'):_0x194a95=null;_0x2a6e94['qs']=_0x2d5a5f;break;case _0xe34d('0x12'):case _0xe34d('0x13'):if(_0x2f5f70[_0xe34d('0x14')]){try{_0x194a95=JSON[_0xe34d('0x15')](Mustache[_0xe34d('0x8')](_0x2f5f70[_0xe34d('0x14')],_0x2d5a5f));_0x2a6e94[_0xe34d('0x16')]=_0x194a95;}catch(_0x435de7){logger[_0xe34d('0xd')](_0x435de7[_0xe34d('0xe')]);logger[_0xe34d('0xd')](_0xe34d('0x17'));}}else{_0x194a95=_0x2d5a5f;_0x2a6e94[_0xe34d('0x16')]=_0x194a95;}break;}logger[_0xe34d('0x18')](util[_0xe34d('0x19')](_0xe34d('0x1a'),_0x2f5f70[_0xe34d('0xf')],_0x2f5f70['data2'],JSON[_0xe34d('0x1b')](_0x2a6e94)));rp(_0x2a6e94)[_0xe34d('0x1c')](function(_0x1be7cb){_0x194a95=!_[_0xe34d('0x1d')](_0x194a95)?',\x20request\x20body:\x20'+_0x194a95:'';_0x2f84ca=typeof _0x1be7cb[_0xe34d('0x16')]==='object'?JSON[_0xe34d('0x1b')](_0x1be7cb['body']):_0x1be7cb[_0xe34d('0x16')];logger[_0xe34d('0x18')](util['format'](_0xe34d('0x1e'),_0x2f5f70[_0xe34d('0xf')],_0x2f5f70[_0xe34d('0x9')],_0x1be7cb[_0xe34d('0x1f')],_0x2f84ca));})[_0xe34d('0x20')](function(_0x7c49e5){logger[_0xe34d('0xd')](util[_0xe34d('0x19')](_0xe34d('0x21'),_0x2f5f70[_0xe34d('0xf')],_0x2f5f70['data2'],_0x7c49e5[_0xe34d('0x1f')],_0x7c49e5[_0xe34d('0x22')],_0x7c49e5['message']));});};
\ No newline at end of file
index f3760b5..4255b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd78=['rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','client','http'];(function(_0x1da4c7,_0x5f0d76){var _0x583f63=function(_0x3bd5e9){while(--_0x3bd5e9){_0x1da4c7['push'](_0x1da4c7['shift']());}};_0x583f63(++_0x5f0d76);}(_0xdd78,0x16e));var _0x8dd7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd78[_0x3dd15e];return _0x231fd0;};'use strict';var jayson=require(_0x8dd7('0x0'));var BPromise=require(_0x8dd7('0x1'));var logger=require(_0x8dd7('0x2'))(_0x8dd7('0x3'));var client=jayson[_0x8dd7('0x4')][_0x8dd7('0x5')]({'port':0x2329});client['Request']=function(_0x557d86,_0xd4762d){return new BPromise(function(_0x2302fb,_0x132280){return client['request'](_0x557d86,_0xd4762d)['then'](function(_0x534cbe){logger['debug'](_0x8dd7('0x6'),'routing',_0x557d86,_0xd4762d,_0x534cbe);if(_0x534cbe['error']){logger[_0x8dd7('0x7')]('rpc',_0x8dd7('0x3'),_0x557d86,_0x534cbe[_0x8dd7('0x7')]['message'],_0xd4762d);return _0x132280(_0x534cbe[_0x8dd7('0x7')][_0x8dd7('0x8')]);}else{return _0x2302fb(_0x534cbe[_0x8dd7('0x9')]);}})[_0x8dd7('0xa')](function(_0x81e975){logger[_0x8dd7('0x7')](_0x8dd7('0x6'),_0x8dd7('0x3'),_0x557d86,_0x81e975,_0xd4762d);return _0x132280(_0x81e975);});});};module[_0x8dd7('0xb')]=client;
\ No newline at end of file
+var _0x1624=['error','message','result','catch','exports','../../config/logger','client','Request','request','then','debug','rpc','routing'];(function(_0x4408e0,_0x2319c9){var _0x78b241=function(_0x2eb99b){while(--_0x2eb99b){_0x4408e0['push'](_0x4408e0['shift']());}};_0x78b241(++_0x2319c9);}(_0x1624,0x1bf));var _0x4162=function(_0x39d63b,_0x259b5c){_0x39d63b=_0x39d63b-0x0;var _0x3c7d64=_0x1624[_0x39d63b];return _0x3c7d64;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x4162('0x0'))('routing');var client=jayson[_0x4162('0x1')]['http']({'port':0x2329});client[_0x4162('0x2')]=function(_0x38b49c,_0x55cdf1){return new BPromise(function(_0x11b2ca,_0x3b157a){return client[_0x4162('0x3')](_0x38b49c,_0x55cdf1)[_0x4162('0x4')](function(_0x3d2226){logger[_0x4162('0x5')](_0x4162('0x6'),_0x4162('0x7'),_0x38b49c,_0x55cdf1,_0x3d2226);if(_0x3d2226[_0x4162('0x8')]){logger[_0x4162('0x8')](_0x4162('0x6'),_0x4162('0x7'),_0x38b49c,_0x3d2226[_0x4162('0x8')][_0x4162('0x9')],_0x55cdf1);return _0x3b157a(_0x3d2226['error'][_0x4162('0x9')]);}else{return _0x11b2ca(_0x3d2226[_0x4162('0xa')]);}})[_0x4162('0xb')](function(_0xb72556){logger[_0x4162('0x8')]('rpc',_0x4162('0x7'),_0x38b49c,_0xb72556,_0x55cdf1);return _0x3b157a(_0xb72556);});});};module[_0x4162('0xc')]=client;
\ No newline at end of file
index 4b0958d..dd13871 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36be=['./rpc/mailAccount','./rpc/setting','resolve','getMailAccounts','then','initMailAccounts','refresh','mailAccounts','listen','getSettings','catch','log','bluebird','./server','./lib/email'];(function(_0xf2628e,_0x521bf7){var _0x13863a=function(_0x2b04ab){while(--_0x2b04ab){_0xf2628e['push'](_0xf2628e['shift']());}};_0x13863a(++_0x521bf7);}(_0x36be,0x1ce));var _0xe36b=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x36be[_0x46698a];return _0x356db0;};'use strict';var BPromise=require(_0xe36b('0x0'));var server=require(_0xe36b('0x1'));var Realtime=require('./realtime');var EmailChannel=require(_0xe36b('0x2'));var mailAccount=require(_0xe36b('0x3'));var setting=require(_0xe36b('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xe36b('0x5')]()['then'](mailAccount[_0xe36b('0x6')]())[_0xe36b('0x7')](realtime[_0xe36b('0x8')]())[_0xe36b('0x7')](function(){email[_0xe36b('0x9')](realtime[_0xe36b('0xa')]);return realtime;});}function main(){return server[_0xe36b('0xb')](realtime,email)['then'](function(){return initRealtime();})[_0xe36b('0x7')](function(){return setting[_0xe36b('0xc')]();})['then'](function(_0x3dd548){return setInterval(initRealtime,_0x3dd548['loginMailFrequency']*0x3e8);})[_0xe36b('0xd')](function(_0x433a60){console[_0xe36b('0xe')](_0x433a60);});}main();
\ No newline at end of file
+var _0xf5ff=['./lib/email','./rpc/mailAccount','getMailAccounts','then','initMailAccounts','refresh','getSettings','loginMailFrequency','catch','log','bluebird','./realtime'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0xf5ff,0xbe));var _0xff5f=function(_0x427592,_0x487b3f){_0x427592=_0x427592-0x0;var _0x59534a=_0xf5ff[_0x427592];return _0x59534a;};'use strict';var BPromise=require(_0xff5f('0x0'));var server=require('./server');var Realtime=require(_0xff5f('0x1'));var EmailChannel=require(_0xff5f('0x2'));var mailAccount=require(_0xff5f('0x3'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise['resolve']()['then'](mailAccount[_0xff5f('0x4')]())[_0xff5f('0x5')](realtime[_0xff5f('0x6')]())[_0xff5f('0x5')](function(){email[_0xff5f('0x7')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0xff5f('0x5')](function(){return initRealtime();})[_0xff5f('0x5')](function(){return setting[_0xff5f('0x8')]();})[_0xff5f('0x5')](function(_0x49e70e){return setInterval(initRealtime,_0x49e70e[_0xff5f('0x9')]*0x3e8);})[_0xff5f('0xa')](function(_0x2bdade){console[_0xff5f('0xb')](_0x2bdade);});}main();
\ No newline at end of file
index 7f9c68c..8a413f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c83=['md5','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','status','messageStatus','total','stringify','refresh','hasOwnProperty','handleImapBox','bind','end','handleImapEnd','isNil','disabled','connected','messages','handleImapEmail','firstName','lastName','from','notify','then','info','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','handleImapError','error','sendMail','send','verifySmtp','Smtp','verify','lodash','moment'];(function(_0x31d15b,_0x3dadc4){var _0x2f05d5=function(_0x11c159){while(--_0x11c159){_0x31d15b['push'](_0x31d15b['shift']());}};_0x2f05d5(++_0x3dadc4);}(_0x3c83,0x171));var _0x33c8=function(_0x13a8ca,_0x46e095){_0x13a8ca=_0x13a8ca-0x0;var _0x4d2432=_0x3c83[_0x13a8ca];return _0x4d2432;};'use strict';var _=require(_0x33c8('0x0'));var moment=require(_0x33c8('0x1'));var BPromise=require('bluebird');var md5=require(_0x33c8('0x2'));var Redis=require('ioredis');var config=require(_0x33c8('0x3'));var logger=require(_0x33c8('0x4'))(_0x33c8('0x5'));config[_0x33c8('0x6')]=_[_0x33c8('0x7')](config[_0x33c8('0x6')],{'host':_0x33c8('0x8'),'port':0x18eb});var io=require(_0x33c8('0x9'))(new Redis(config[_0x33c8('0x6')]));var EmailImap=require(_0x33c8('0xa'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x33c8('0xb'));var md5Accounts={};function EmailChannel(_0xaa541e){logger['info'](_0x33c8('0xc'));this[_0x33c8('0xd')]=_0xaa541e['mailAccounts'];this[_0x33c8('0xe')]={};this[_0x33c8('0xf')]=new EmailSmtp();}EmailChannel[_0x33c8('0x10')][_0x33c8('0x11')]=function(_0x1a057e){var _0x31fa68=this[_0x33c8('0xd')][_0x1a057e];var _0x2b0cab={'id':_0x31fa68['id'],'name':_0x31fa68[_0x33c8('0x12')],'key':_0x31fa68[_0x33c8('0x13')],'active':_0x31fa68[_0x33c8('0x14')],'Imap':{'status':_0x31fa68[_0x33c8('0x15')][_0x33c8('0x16')],'messageStatus':_0x31fa68['Imap'][_0x33c8('0x17')],'total':_0x31fa68[_0x33c8('0x15')][_0x33c8('0x18')]}};if(_['isNil'](md5Accounts[_0x1a057e])){md5Accounts[_0x1a057e]={};}var _0x78225f=md5(JSON[_0x33c8('0x19')](_0x2b0cab));if(md5Accounts[_0x1a057e][_0x33c8('0x2')]!==_0x78225f){md5Accounts[_0x1a057e][_0x33c8('0x2')]=_0x78225f;io['emit']('mailAccount:update',_0x2b0cab);}};EmailChannel[_0x33c8('0x10')][_0x33c8('0x1a')]=function(_0x4f83c6){for(var _0x31a0b5 in _0x4f83c6){if(_0x4f83c6[_0x33c8('0x1b')](_0x31a0b5)){if(_0x4f83c6[_0x31a0b5][_0x33c8('0x15')]&&_0x4f83c6[_0x31a0b5][_0x33c8('0x14')]){var _0x21a0a2=_0x4f83c6[_0x31a0b5][_0x33c8('0x15')];if(!this[_0x33c8('0xe')][_0x33c8('0x1b')](_0x21a0a2['id'])){this[_0x33c8('0xe')][_0x21a0a2['id']]=new EmailImap(_0x21a0a2,_0x4f83c6[_0x31a0b5][_0x33c8('0x5')]);this['imapAccounts'][_0x21a0a2['id']]['on']('box',this[_0x33c8('0x1c')][_0x33c8('0x1d')](this,_0x31a0b5));this[_0x33c8('0xe')][_0x21a0a2['id']]['on'](_0x33c8('0x5'),this['handleImapEmail'][_0x33c8('0x1d')](this,_0x31a0b5));this['imapAccounts'][_0x21a0a2['id']]['on'](_0x33c8('0x1e'),this[_0x33c8('0x1f')][_0x33c8('0x1d')](this,_0x31a0b5));this['imapAccounts'][_0x21a0a2['id']]['on']('error',this['handleImapError'][_0x33c8('0x1d')](this,_0x31a0b5));}}else{if(_[_0x33c8('0x20')](this[_0x33c8('0xd')][_0x31a0b5][_0x33c8('0x15')])){this[_0x33c8('0xd')][_0x31a0b5][_0x33c8('0x15')]={};}this['mailAccounts'][_0x31a0b5][_0x33c8('0x15')][_0x33c8('0x16')]=_0x33c8('0x21');this[_0x33c8('0xd')][_0x31a0b5][_0x33c8('0x15')][_0x33c8('0x17')]='';this['emit'](_0x31a0b5);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x40b79e,_0x2b3191){if(this['mailAccounts'][_0x40b79e]){this[_0x33c8('0xd')][_0x40b79e][_0x33c8('0x15')][_0x33c8('0x16')]=_0x33c8('0x22');this[_0x33c8('0xd')][_0x40b79e]['Imap'][_0x33c8('0x17')]=_0x2b3191[_0x33c8('0x12')];if(_0x2b3191[_0x33c8('0x23')]){this[_0x33c8('0xd')][_0x40b79e]['Imap'][_0x33c8('0x18')]=_0x2b3191[_0x33c8('0x23')][_0x33c8('0x18')];}return this[_0x33c8('0x11')](_0x40b79e);}};EmailChannel[_0x33c8('0x10')][_0x33c8('0x24')]=function(_0x5dec20,_0x521a4c){logger['info']('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x521a4c[_0x33c8('0x25')],_0x521a4c[_0x33c8('0x26')],_0x521a4c[_0x33c8('0x27')],_0x5dec20);if(this[_0x33c8('0xd')][_0x5dec20]){return mailAccount[_0x33c8('0x28')](_0x5dec20,_0x521a4c)[_0x33c8('0x29')](function(_0x1794ac){if(_0x1794ac){logger[_0x33c8('0x2a')]('Mail\x20accepted\x20from\x20routing');}})[_0x33c8('0x2b')](function(_0x573430){logger['error'](_0x33c8('0x2c'),JSON[_0x33c8('0x19')](_0x573430));});}};EmailChannel[_0x33c8('0x10')][_0x33c8('0x1f')]=function(_0x24c2a9){if(this['mailAccounts'][_0x24c2a9]&&this[_0x33c8('0xd')][_0x24c2a9]['Imap']){if(this[_0x33c8('0xe')][this[_0x33c8('0xd')][_0x24c2a9][_0x33c8('0x15')]['id']]){delete this[_0x33c8('0xe')][this['mailAccounts'][_0x24c2a9][_0x33c8('0x15')]['id']];}this[_0x33c8('0xd')][_0x24c2a9]['Imap'][_0x33c8('0x2d')]=moment();this['emit'](_0x24c2a9);}};EmailChannel[_0x33c8('0x10')][_0x33c8('0x2e')]=function(_0x3fd44a,_0x5744f3){if(this['mailAccounts'][_0x3fd44a]){this['mailAccounts'][_0x3fd44a][_0x33c8('0x15')][_0x33c8('0x16')]=_0x33c8('0x2f');this['mailAccounts'][_0x3fd44a][_0x33c8('0x15')][_0x33c8('0x17')]=_0x5744f3;return this[_0x33c8('0x11')](_0x3fd44a);}};EmailChannel[_0x33c8('0x10')][_0x33c8('0x30')]=function(_0xb1de91,_0x526ace){return this[_0x33c8('0xf')][_0x33c8('0x31')](_0xb1de91,_0x526ace);};EmailChannel['prototype'][_0x33c8('0x32')]=function(_0x209ce0){var _0x542f9f=this;if(this[_0x33c8('0xd')][_0x209ce0['id']]){if(_[_0x33c8('0x20')](this[_0x33c8('0xd')][_0x209ce0['id']][_0x33c8('0x33')])){this['mailAccounts'][_0x209ce0['id']]['Smtp']={};}this[_0x33c8('0xd')][_0x209ce0['id']]['Smtp'][_0x33c8('0x2d')]=moment();return new BPromise(function(_0x269068,_0xd48339){return _0x542f9f['smtp'][_0x33c8('0x34')](_0x209ce0)['then'](function(_0x5e3d5b){_0x542f9f[_0x33c8('0xd')][_0x209ce0['id']]['Smtp']['status']='verified';_0x542f9f[_0x33c8('0xd')][_0x209ce0['id']][_0x33c8('0x33')]['messageStatus']='';_0x542f9f[_0x33c8('0x11')](_0x209ce0['id']);_0x269068(_0x5e3d5b);})[_0x33c8('0x2b')](function(_0x25f48b){_0x542f9f[_0x33c8('0xd')][_0x209ce0['id']][_0x33c8('0x33')][_0x33c8('0x16')]=_0x33c8('0x2f');_0x542f9f[_0x33c8('0xd')][_0x209ce0['id']][_0x33c8('0x33')][_0x33c8('0x17')]=_0x25f48b;_0x542f9f[_0x33c8('0x11')](_0x209ce0['id']);_0xd48339(_0x25f48b);});});}return this[_0x33c8('0xf')][_0x33c8('0x34')](_0x209ce0);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0x68d3=['total','isNil','stringify','emit','mailAccount:update','refresh','hasOwnProperty','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','mailAccounts','messages','firstName','lastName','from','notify','then','catch','smtp','send','verifySmtp','Smtp','lastSync','verify','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','./imap','./smtp','info','imapAccounts','prototype','key','active','status','Imap','messageStatus'];(function(_0x13e8e3,_0x16b5fa){var _0x47036f=function(_0x3a81ef){while(--_0x3a81ef){_0x13e8e3['push'](_0x13e8e3['shift']());}};_0x47036f(++_0x16b5fa);}(_0x68d3,0x1e8));var _0x368d=function(_0x4bf542,_0x4ff30a){_0x4bf542=_0x4bf542-0x0;var _0x1b1e39=_0x68d3[_0x4bf542];return _0x1b1e39;};'use strict';var _=require('lodash');var moment=require(_0x368d('0x0'));var BPromise=require(_0x368d('0x1'));var md5=require(_0x368d('0x2'));var Redis=require(_0x368d('0x3'));var config=require(_0x368d('0x4'));var logger=require(_0x368d('0x5'))(_0x368d('0x6'));config[_0x368d('0x7')]=_['defaults'](config[_0x368d('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x368d('0x7')]));var EmailImap=require(_0x368d('0x8'));var EmailSmtp=require(_0x368d('0x9'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x33c735){logger[_0x368d('0xa')]('start\x20email\x20channel');this['mailAccounts']=_0x33c735['mailAccounts'];this[_0x368d('0xb')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0x368d('0xc')]['emit']=function(_0x527108){var _0x1cc879=this['mailAccounts'][_0x527108];var _0x33f0c6={'id':_0x1cc879['id'],'name':_0x1cc879['name'],'key':_0x1cc879[_0x368d('0xd')],'active':_0x1cc879[_0x368d('0xe')],'Imap':{'status':_0x1cc879['Imap'][_0x368d('0xf')],'messageStatus':_0x1cc879[_0x368d('0x10')][_0x368d('0x11')],'total':_0x1cc879[_0x368d('0x10')][_0x368d('0x12')]}};if(_[_0x368d('0x13')](md5Accounts[_0x527108])){md5Accounts[_0x527108]={};}var _0xea0af2=md5(JSON[_0x368d('0x14')](_0x33f0c6));if(md5Accounts[_0x527108][_0x368d('0x2')]!==_0xea0af2){md5Accounts[_0x527108][_0x368d('0x2')]=_0xea0af2;io[_0x368d('0x15')](_0x368d('0x16'),_0x33f0c6);}};EmailChannel[_0x368d('0xc')][_0x368d('0x17')]=function(_0x189d1b){for(var _0x445c9e in _0x189d1b){if(_0x189d1b['hasOwnProperty'](_0x445c9e)){if(_0x189d1b[_0x445c9e]['Imap']&&_0x189d1b[_0x445c9e][_0x368d('0xe')]){var _0x2bef45=_0x189d1b[_0x445c9e][_0x368d('0x10')];if(!this[_0x368d('0xb')][_0x368d('0x18')](_0x2bef45['id'])){this[_0x368d('0xb')][_0x2bef45['id']]=new EmailImap(_0x2bef45,_0x189d1b[_0x445c9e][_0x368d('0x6')]);this[_0x368d('0xb')][_0x2bef45['id']]['on']('box',this[_0x368d('0x19')][_0x368d('0x1a')](this,_0x445c9e));this['imapAccounts'][_0x2bef45['id']]['on'](_0x368d('0x6'),this[_0x368d('0x1b')]['bind'](this,_0x445c9e));this['imapAccounts'][_0x2bef45['id']]['on'](_0x368d('0x1c'),this[_0x368d('0x1d')][_0x368d('0x1a')](this,_0x445c9e));this[_0x368d('0xb')][_0x2bef45['id']]['on'](_0x368d('0x1e'),this[_0x368d('0x1f')][_0x368d('0x1a')](this,_0x445c9e));}}else{if(_[_0x368d('0x13')](this[_0x368d('0x20')][_0x445c9e][_0x368d('0x10')])){this[_0x368d('0x20')][_0x445c9e]['Imap']={};}this[_0x368d('0x20')][_0x445c9e][_0x368d('0x10')][_0x368d('0xf')]='disabled';this['mailAccounts'][_0x445c9e][_0x368d('0x10')][_0x368d('0x11')]='';this['emit'](_0x445c9e);}}}};EmailChannel[_0x368d('0xc')]['handleImapBox']=function(_0x3515f1,_0x3f1fe7){if(this[_0x368d('0x20')][_0x3515f1]){this['mailAccounts'][_0x3515f1][_0x368d('0x10')][_0x368d('0xf')]='connected';this[_0x368d('0x20')][_0x3515f1][_0x368d('0x10')][_0x368d('0x11')]=_0x3f1fe7['name'];if(_0x3f1fe7[_0x368d('0x21')]){this['mailAccounts'][_0x3515f1]['Imap'][_0x368d('0x12')]=_0x3f1fe7[_0x368d('0x21')][_0x368d('0x12')];}return this[_0x368d('0x15')](_0x3515f1);}};EmailChannel[_0x368d('0xc')][_0x368d('0x1b')]=function(_0x355591,_0x488c89){logger[_0x368d('0xa')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x488c89[_0x368d('0x22')],_0x488c89[_0x368d('0x23')],_0x488c89[_0x368d('0x24')],_0x355591);if(this[_0x368d('0x20')][_0x355591]){return mailAccount[_0x368d('0x25')](_0x355591,_0x488c89)[_0x368d('0x26')](function(_0x388489){if(_0x388489){logger[_0x368d('0xa')]('Mail\x20accepted\x20from\x20routing');}})[_0x368d('0x27')](function(_0x5c23f6){logger[_0x368d('0x1e')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x368d('0x14')](_0x5c23f6));});}};EmailChannel[_0x368d('0xc')][_0x368d('0x1d')]=function(_0x9c7a49){if(this[_0x368d('0x20')][_0x9c7a49]&&this[_0x368d('0x20')][_0x9c7a49][_0x368d('0x10')]){if(this['imapAccounts'][this[_0x368d('0x20')][_0x9c7a49][_0x368d('0x10')]['id']]){delete this[_0x368d('0xb')][this[_0x368d('0x20')][_0x9c7a49]['Imap']['id']];}this[_0x368d('0x20')][_0x9c7a49]['Imap']['lastSync']=moment();this['emit'](_0x9c7a49);}};EmailChannel[_0x368d('0xc')][_0x368d('0x1f')]=function(_0x4fbd66,_0x506778){if(this['mailAccounts'][_0x4fbd66]){this['mailAccounts'][_0x4fbd66]['Imap']['status']='error';this['mailAccounts'][_0x4fbd66][_0x368d('0x10')][_0x368d('0x11')]=_0x506778;return this[_0x368d('0x15')](_0x4fbd66);}};EmailChannel['prototype']['sendMail']=function(_0x8a1dd3,_0x348376){return this[_0x368d('0x28')][_0x368d('0x29')](_0x8a1dd3,_0x348376);};EmailChannel[_0x368d('0xc')][_0x368d('0x2a')]=function(_0x35fc01){var _0x43c28b=this;if(this[_0x368d('0x20')][_0x35fc01['id']]){if(_[_0x368d('0x13')](this['mailAccounts'][_0x35fc01['id']][_0x368d('0x2b')])){this[_0x368d('0x20')][_0x35fc01['id']][_0x368d('0x2b')]={};}this['mailAccounts'][_0x35fc01['id']][_0x368d('0x2b')][_0x368d('0x2c')]=moment();return new BPromise(function(_0x4a0789,_0x13f022){return _0x43c28b[_0x368d('0x28')][_0x368d('0x2d')](_0x35fc01)[_0x368d('0x26')](function(_0x5e3035){_0x43c28b[_0x368d('0x20')][_0x35fc01['id']]['Smtp']['status']='verified';_0x43c28b[_0x368d('0x20')][_0x35fc01['id']]['Smtp'][_0x368d('0x11')]='';_0x43c28b[_0x368d('0x15')](_0x35fc01['id']);_0x4a0789(_0x5e3035);})[_0x368d('0x27')](function(_0x347d8a){_0x43c28b[_0x368d('0x20')][_0x35fc01['id']]['Smtp'][_0x368d('0xf')]=_0x368d('0x1e');_0x43c28b[_0x368d('0x20')][_0x35fc01['id']][_0x368d('0x2b')][_0x368d('0x11')]=_0x347d8a;_0x43c28b[_0x368d('0x15')](_0x35fc01['id']);_0x13f022(_0x347d8a);});});}return this[_0x368d('0x28')][_0x368d('0x2d')](_0x35fc01);};module['exports']=EmailChannel;
\ No newline at end of file
index 2f06885..85fdea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b9a=['box','readUnseen','handleCloseBox','UNSEEN','handleReadUnseen','fetch','message','error','handleFetchEnd','closeBox','handleFetchMessage','body','handleMessageBody','handleMessageAttributes','handleMessageEnd','handleSimpleParser','handleFetchError','textCode','upperFirst','exports','path','util','imap','lodash','randomstring','mailparser','simpleParser','iconv','events','email','mailbox','INBOX','account','once','handleReady','end','handleEnd','handleError','connect','inherits','prototype','getAccount','connTimeout','authTimeout','isNil','service','user','password','host','port','tls','required','openBox','handleOpenBox','bind','emit'];(function(_0x378e5b,_0x53150e){var _0x2b6565=function(_0x264654){while(--_0x264654){_0x378e5b['push'](_0x378e5b['shift']());}};_0x2b6565(++_0x53150e);}(_0x2b9a,0x164));var _0xa2b9=function(_0x1d9f6e,_0xfbe768){_0x1d9f6e=_0x1d9f6e-0x0;var _0x2b4912=_0x2b9a[_0x1d9f6e];return _0x2b4912;};'use strict';var fs=require('fs');var path=require(_0xa2b9('0x0'));var util=require(_0xa2b9('0x1'));var Imap=require(_0xa2b9('0x2'));var _=require(_0xa2b9('0x3'));var rs=require(_0xa2b9('0x4'));var simpleParser=require(_0xa2b9('0x5'))[_0xa2b9('0x6')];var Iconv=require(_0xa2b9('0x7'))['Iconv'];var EventEmitter=require(_0xa2b9('0x8'))['EventEmitter'];var utils=require('./utils');var logger=require('../../../config/logger')(_0xa2b9('0x9'));function EmailImap(_0x3d9948,_0x174d96){this[_0xa2b9('0xa')]=_0xa2b9('0xb');this[_0xa2b9('0xc')]=this['getAccount'](_0x3d9948,_0x174d96);this[_0xa2b9('0x2')]=new Imap(this[_0xa2b9('0xc')]);this[_0xa2b9('0x2')][_0xa2b9('0xd')]('ready',this[_0xa2b9('0xe')]['bind'](this));this[_0xa2b9('0x2')]['once'](_0xa2b9('0xf'),this[_0xa2b9('0x10')]['bind'](this));this[_0xa2b9('0x2')]['on']('error',this[_0xa2b9('0x11')]['bind'](this));this['imap'][_0xa2b9('0x12')]();}util[_0xa2b9('0x13')](EmailImap,EventEmitter);EmailImap[_0xa2b9('0x14')][_0xa2b9('0x15')]=function(_0xa73733,_0x1a16cd){var _0xc74b3c={'connTimeout':_0xa73733[_0xa2b9('0x16')]?_0xa73733[_0xa2b9('0x16')]*0x3e8:0x2710,'authTimeout':_0xa73733['authTimeout']?_0xa73733[_0xa2b9('0x17')]*0x3e8:0x1388};if(_[_0xa2b9('0x18')](_0xa73733[_0xa2b9('0x19')])){if(_0xa73733['authentication']){_0xc74b3c[_0xa2b9('0x1a')]=_0xa73733[_0xa2b9('0x1a')];_0xc74b3c[_0xa2b9('0x1b')]=_0xa73733['password'];}_0xc74b3c[_0xa2b9('0x1c')]=_0xa73733[_0xa2b9('0x1c')];_0xc74b3c[_0xa2b9('0x1d')]=_0xa73733[_0xa2b9('0x1d')]||0x3e1;if(_0xa73733['tls']){_0xc74b3c[_0xa2b9('0x1e')]=!![];}else{_0xc74b3c['tls']=![];_0xc74b3c['autotls']=_0xa2b9('0x1f');}}else{_0xc74b3c['user']=_0xa73733[_0xa2b9('0x1a')];_0xc74b3c[_0xa2b9('0x1b')]=_0xa73733['password'];_0xc74b3c[_0xa2b9('0x1c')]=utils['getHost'](_0xa73733[_0xa2b9('0x19')]);_0xc74b3c[_0xa2b9('0x1d')]=0x3e1;_0xc74b3c['tls']=!![];}_0xc74b3c[_0xa2b9('0x9')]=_0x1a16cd||_0xa73733[_0xa2b9('0x1a')]||'anonymous@xcally.com';return _0xc74b3c;};EmailImap['prototype'][_0xa2b9('0xe')]=function(){this[_0xa2b9('0x2')][_0xa2b9('0x20')](this['mailbox'],![],this[_0xa2b9('0x21')][_0xa2b9('0x22')](this));};EmailImap['prototype'][_0xa2b9('0x21')]=function(_0xee1e,_0x2e5ce9){if(_0xee1e){this[_0xa2b9('0x11')](_0xee1e,!![]);}else{this[_0xa2b9('0x23')](_0xa2b9('0x24'),_0x2e5ce9);this[_0xa2b9('0x25')]();}};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x26')]=function(_0x3a17bf){if(_0x3a17bf){this[_0xa2b9('0x11')](_0x3a17bf,!![]);}else{this['imap']['end']();}};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x25')]=function(){this[_0xa2b9('0x2')]['search']([_0xa2b9('0x27')],this[_0xa2b9('0x28')][_0xa2b9('0x22')](this));};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x28')]=function(_0x1bffba,_0x200816){if(_0x1bffba){this[_0xa2b9('0x11')](_0x1bffba,!![]);}else{if(_0x200816['length']){try{var _0x1b76c5=this['imap'][_0xa2b9('0x29')](_0x200816,{'bodies':'','markSeen':!![]});_0x1b76c5['on'](_0xa2b9('0x2a'),this['handleFetchMessage'][_0xa2b9('0x22')](this));_0x1b76c5[_0xa2b9('0xd')](_0xa2b9('0x2b'),this['handleFetchError'][_0xa2b9('0x22')](this));_0x1b76c5[_0xa2b9('0xd')](_0xa2b9('0xf'),this[_0xa2b9('0x2c')][_0xa2b9('0x22')](this));}catch(_0x52b369){logger[_0xa2b9('0x2b')](_0x52b369);}}else{this['imap'][_0xa2b9('0x2d')](!![],this['handleCloseBox'][_0xa2b9('0x22')](this));}}};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x2e')]=function(_0x5578d7,_0x28138e){_0x5578d7['on'](_0xa2b9('0x2f'),this[_0xa2b9('0x30')][_0xa2b9('0x22')](this));_0x5578d7[_0xa2b9('0xd')]('attributes',this[_0xa2b9('0x31')][_0xa2b9('0x22')](this));_0x5578d7['once'](_0xa2b9('0xf'),this[_0xa2b9('0x32')][_0xa2b9('0x22')](this));};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x30')]=function(_0x11ce61,_0x5b8d2c){simpleParser(_0x11ce61,{'Iconv':Iconv},this['handleSimpleParser'][_0xa2b9('0x22')](this));};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x31')]=function(_0x2dd096){};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x32')]=function(){};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x33')]=function(_0x3a29c5,_0x38557a){if(_0x3a29c5){logger['error'](_0x3a29c5);}else{var _0x5171a9=this;utils['parser'](this[_0xa2b9('0xc')],_0x38557a,function(_0x657877){_0x5171a9['emit']('email',_0x657877);});}};EmailImap['prototype'][_0xa2b9('0x2c')]=function(){this[_0xa2b9('0x2')][_0xa2b9('0x2d')](!![],this['handleCloseBox'][_0xa2b9('0x22')](this));};EmailImap['prototype'][_0xa2b9('0x34')]=function(_0x162d8d){this[_0xa2b9('0x11')](_0x162d8d);this['imap'][_0xa2b9('0x2d')](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0xa2b9('0x14')][_0xa2b9('0x10')]=function(){this[_0xa2b9('0x23')](_0xa2b9('0xf'));};EmailImap[_0xa2b9('0x14')]['handleError']=function(_0x3dbb06,_0x457783){logger['error'](_0xa2b9('0x11'),this[_0xa2b9('0xc')][_0xa2b9('0x9')],JSON['stringify'](_0x3dbb06));var _0x33c874='';if(_0x3dbb06){if(_0x3dbb06[_0xa2b9('0x35')]){_0x33c874=_0x3dbb06[_0xa2b9('0x35')];}else{for(var _0x2353bf in _0x3dbb06){if(_0x3dbb06['hasOwnProperty'](_0x2353bf)){_0x33c874+=_[_0xa2b9('0x36')](_0x2353bf)+':\x20'+_0x3dbb06[_0x2353bf]+'\x0a';}}}}if(_0x457783){this[_0xa2b9('0x2')]['end']();}else{this[_0xa2b9('0x23')](_0xa2b9('0x2b'),_0x33c874);this[_0xa2b9('0x23')]('end');}};module[_0xa2b9('0x37')]=EmailImap;
\ No newline at end of file
+var _0xad72=['mailbox','INBOX','account','getAccount','ready','handleReady','bind','end','error','handleError','connect','prototype','connTimeout','authTimeout','service','user','password','host','port','tls','autotls','required','email','anonymous@xcally.com','openBox','handleOpenBox','emit','handleCloseBox','readUnseen','handleReadUnseen','length','fetch','once','handleFetchError','handleFetchEnd','closeBox','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','stringify','textCode','upperFirst','exports','path','util','imap','randomstring','mailparser','iconv','Iconv','EventEmitter'];(function(_0x52e48a,_0x594fc5){var _0x31f9ee=function(_0x228336){while(--_0x228336){_0x52e48a['push'](_0x52e48a['shift']());}};_0x31f9ee(++_0x594fc5);}(_0xad72,0x198));var _0x2ad7=function(_0x506af9,_0x5281a8){_0x506af9=_0x506af9-0x0;var _0x120e27=_0xad72[_0x506af9];return _0x120e27;};'use strict';var fs=require('fs');var path=require(_0x2ad7('0x0'));var util=require(_0x2ad7('0x1'));var Imap=require(_0x2ad7('0x2'));var _=require('lodash');var rs=require(_0x2ad7('0x3'));var simpleParser=require(_0x2ad7('0x4'))['simpleParser'];var Iconv=require(_0x2ad7('0x5'))[_0x2ad7('0x6')];var EventEmitter=require('events')[_0x2ad7('0x7')];var utils=require('./utils');var logger=require('../../../config/logger')('email');function EmailImap(_0x22f6ef,_0x104cf0){this[_0x2ad7('0x8')]=_0x2ad7('0x9');this[_0x2ad7('0xa')]=this[_0x2ad7('0xb')](_0x22f6ef,_0x104cf0);this[_0x2ad7('0x2')]=new Imap(this['account']);this[_0x2ad7('0x2')]['once'](_0x2ad7('0xc'),this[_0x2ad7('0xd')][_0x2ad7('0xe')](this));this[_0x2ad7('0x2')]['once'](_0x2ad7('0xf'),this['handleEnd'][_0x2ad7('0xe')](this));this[_0x2ad7('0x2')]['on'](_0x2ad7('0x10'),this[_0x2ad7('0x11')][_0x2ad7('0xe')](this));this[_0x2ad7('0x2')][_0x2ad7('0x12')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x2ad7('0x13')][_0x2ad7('0xb')]=function(_0x417f10,_0x5f0112){var _0x1cdd8a={'connTimeout':_0x417f10['connTimeout']?_0x417f10[_0x2ad7('0x14')]*0x3e8:0x2710,'authTimeout':_0x417f10[_0x2ad7('0x15')]?_0x417f10[_0x2ad7('0x15')]*0x3e8:0x1388};if(_['isNil'](_0x417f10[_0x2ad7('0x16')])){if(_0x417f10['authentication']){_0x1cdd8a['user']=_0x417f10[_0x2ad7('0x17')];_0x1cdd8a['password']=_0x417f10[_0x2ad7('0x18')];}_0x1cdd8a[_0x2ad7('0x19')]=_0x417f10[_0x2ad7('0x19')];_0x1cdd8a[_0x2ad7('0x1a')]=_0x417f10['port']||0x3e1;if(_0x417f10[_0x2ad7('0x1b')]){_0x1cdd8a[_0x2ad7('0x1b')]=!![];}else{_0x1cdd8a[_0x2ad7('0x1b')]=![];_0x1cdd8a[_0x2ad7('0x1c')]=_0x2ad7('0x1d');}}else{_0x1cdd8a['user']=_0x417f10[_0x2ad7('0x17')];_0x1cdd8a[_0x2ad7('0x18')]=_0x417f10[_0x2ad7('0x18')];_0x1cdd8a[_0x2ad7('0x19')]=utils['getHost'](_0x417f10[_0x2ad7('0x16')]);_0x1cdd8a['port']=0x3e1;_0x1cdd8a[_0x2ad7('0x1b')]=!![];}_0x1cdd8a[_0x2ad7('0x1e')]=_0x5f0112||_0x417f10[_0x2ad7('0x17')]||_0x2ad7('0x1f');return _0x1cdd8a;};EmailImap[_0x2ad7('0x13')][_0x2ad7('0xd')]=function(){this[_0x2ad7('0x2')][_0x2ad7('0x20')](this[_0x2ad7('0x8')],![],this[_0x2ad7('0x21')][_0x2ad7('0xe')](this));};EmailImap[_0x2ad7('0x13')]['handleOpenBox']=function(_0x52014d,_0xa8ceac){if(_0x52014d){this[_0x2ad7('0x11')](_0x52014d,!![]);}else{this[_0x2ad7('0x22')]('box',_0xa8ceac);this['readUnseen']();}};EmailImap[_0x2ad7('0x13')][_0x2ad7('0x23')]=function(_0x4ccf80){if(_0x4ccf80){this[_0x2ad7('0x11')](_0x4ccf80,!![]);}else{this[_0x2ad7('0x2')][_0x2ad7('0xf')]();}};EmailImap[_0x2ad7('0x13')][_0x2ad7('0x24')]=function(){this[_0x2ad7('0x2')]['search'](['UNSEEN'],this[_0x2ad7('0x25')]['bind'](this));};EmailImap['prototype'][_0x2ad7('0x25')]=function(_0x57af75,_0x4dcba6){if(_0x57af75){this['handleError'](_0x57af75,!![]);}else{if(_0x4dcba6[_0x2ad7('0x26')]){try{var _0x5ece61=this[_0x2ad7('0x2')][_0x2ad7('0x27')](_0x4dcba6,{'bodies':'','markSeen':!![]});_0x5ece61['on']('message',this['handleFetchMessage']['bind'](this));_0x5ece61[_0x2ad7('0x28')]('error',this[_0x2ad7('0x29')][_0x2ad7('0xe')](this));_0x5ece61[_0x2ad7('0x28')](_0x2ad7('0xf'),this[_0x2ad7('0x2a')]['bind'](this));}catch(_0x380109){logger[_0x2ad7('0x10')](_0x380109);}}else{this['imap'][_0x2ad7('0x2b')](!![],this[_0x2ad7('0x23')]['bind'](this));}}};EmailImap[_0x2ad7('0x13')]['handleFetchMessage']=function(_0x106510,_0x4f9907){_0x106510['on']('body',this[_0x2ad7('0x2c')][_0x2ad7('0xe')](this));_0x106510[_0x2ad7('0x28')](_0x2ad7('0x2d'),this[_0x2ad7('0x2e')][_0x2ad7('0xe')](this));_0x106510[_0x2ad7('0x28')](_0x2ad7('0xf'),this['handleMessageEnd'][_0x2ad7('0xe')](this));};EmailImap[_0x2ad7('0x13')][_0x2ad7('0x2c')]=function(_0x3a1a6b,_0x572bd8){simpleParser(_0x3a1a6b,{'Iconv':Iconv},this['handleSimpleParser'][_0x2ad7('0xe')](this));};EmailImap[_0x2ad7('0x13')]['handleMessageAttributes']=function(_0x4695ab){};EmailImap[_0x2ad7('0x13')][_0x2ad7('0x2f')]=function(){};EmailImap['prototype']['handleSimpleParser']=function(_0x100113,_0x1d72e3){if(_0x100113){logger[_0x2ad7('0x10')](_0x100113);}else{var _0x5dad23=this;utils['parser'](this[_0x2ad7('0xa')],_0x1d72e3,function(_0x259b51){_0x5dad23['emit'](_0x2ad7('0x1e'),_0x259b51);});}};EmailImap[_0x2ad7('0x13')][_0x2ad7('0x2a')]=function(){this['imap'][_0x2ad7('0x2b')](!![],this[_0x2ad7('0x23')]['bind'](this));};EmailImap[_0x2ad7('0x13')][_0x2ad7('0x29')]=function(_0x7d2196){this['handleError'](_0x7d2196);this[_0x2ad7('0x2')][_0x2ad7('0x2b')](!![],this[_0x2ad7('0x23')][_0x2ad7('0xe')](this));};EmailImap[_0x2ad7('0x13')]['handleEnd']=function(){this[_0x2ad7('0x22')](_0x2ad7('0xf'));};EmailImap[_0x2ad7('0x13')]['handleError']=function(_0x17a31b,_0x27d502){logger[_0x2ad7('0x10')](_0x2ad7('0x11'),this[_0x2ad7('0xa')][_0x2ad7('0x1e')],JSON[_0x2ad7('0x30')](_0x17a31b));var _0xe31d37='';if(_0x17a31b){if(_0x17a31b[_0x2ad7('0x31')]){_0xe31d37=_0x17a31b[_0x2ad7('0x31')];}else{for(var _0x409f5b in _0x17a31b){if(_0x17a31b['hasOwnProperty'](_0x409f5b)){_0xe31d37+=_[_0x2ad7('0x32')](_0x409f5b)+':\x20'+_0x17a31b[_0x409f5b]+'\x0a';}}}}if(_0x27d502){this[_0x2ad7('0x2')][_0x2ad7('0xf')]();}else{this[_0x2ad7('0x22')](_0x2ad7('0x10'),_0xe31d37);this[_0x2ad7('0x22')](_0x2ad7('0xf'));}};module[_0x2ad7('0x33')]=EmailImap;
\ No newline at end of file
index e1366a3..04ebf2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3683=['toString','verify','exports','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x3683,0x7b));var _0x3368=function(_0x2aadfb,_0xd54c66){_0x2aadfb=_0x2aadfb-0x0;var _0x16b159=_0x3683[_0x2aadfb];return _0x16b159;};'use strict';var nodemailer=require('nodemailer');var BPromise=require(_0x3368('0x0'));var inlineBase64=require(_0x3368('0x1'));function EmailSmtp(){}EmailSmtp[_0x3368('0x2')][_0x3368('0x3')]=function(_0x287598,_0x30b7d1){return new BPromise(function(_0x26080d,_0x3da281){var _0x14fc73=nodemailer[_0x3368('0x4')](_0x287598);_0x14fc73[_0x3368('0x5')](_0x3368('0x6'),inlineBase64());_0x14fc73['sendMail'](_0x30b7d1,function(_0x1e45aa,_0x411f4d){if(_0x1e45aa){_0x3da281(_0x1e45aa[_0x3368('0x7')]());}else{_0x26080d(_0x411f4d);}});});};EmailSmtp[_0x3368('0x2')][_0x3368('0x8')]=function(_0x1dfe0e){return new BPromise(function(_0x367aea,_0x1d6f0d){var _0x3732a8=nodemailer[_0x3368('0x4')](_0x1dfe0e);_0x3732a8[_0x3368('0x8')](function(_0x1952c0,_0x26b56d){if(_0x1952c0){_0x1d6f0d(_0x1952c0[_0x3368('0x7')]());}else{if(_0x26b56d){_0x367aea(_0x26b56d);}else{_0x1d6f0d('Not\x20verifired');}}});});};module[_0x3368('0x9')]=EmailSmtp;
\ No newline at end of file
+var _0xcb2c=['use','compile','toString','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcb2c,0x87));var _0xccb2=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xcb2c[_0x5b561d];return _0x431060;};'use strict';var nodemailer=require(_0xccb2('0x0'));var BPromise=require('bluebird');var inlineBase64=require(_0xccb2('0x1'));function EmailSmtp(){}EmailSmtp[_0xccb2('0x2')][_0xccb2('0x3')]=function(_0x352b33,_0xfb4cc5){return new BPromise(function(_0x1d17e6,_0xef3dd6){var _0x14f452=nodemailer[_0xccb2('0x4')](_0x352b33);_0x14f452[_0xccb2('0x5')](_0xccb2('0x6'),inlineBase64());_0x14f452['sendMail'](_0xfb4cc5,function(_0xc1c95a,_0x5db723){if(_0xc1c95a){_0xef3dd6(_0xc1c95a[_0xccb2('0x7')]());}else{_0x1d17e6(_0x5db723);}});});};EmailSmtp[_0xccb2('0x2')]['verify']=function(_0x5509b7){return new BPromise(function(_0x4e2c71,_0x2a0655){var _0x49a2bf=nodemailer[_0xccb2('0x4')](_0x5509b7);_0x49a2bf['verify'](function(_0x32c60b,_0x33087e){if(_0x32c60b){_0x2a0655(_0x32c60b[_0xccb2('0x7')]());}else{if(_0x33087e){_0x4e2c71(_0x33087e);}else{_0x2a0655(_0xccb2('0x8'));}}});});};module[_0xccb2('0x9')]=EmailSmtp;
\ No newline at end of file
index daced18..7aa0f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['lodash','randomstring','path','util','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','@xcally.com','name','substring','indexOf','split','length','join','Anonymous','pop','isEmpty','generate','html','replace','includes','<img','attachments','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originCc','originTo','bcc','attach','type','attachment-','format','%s-%s','root','server/files/attachments/','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','isAutoreply','from','messageId','inReplyTo','textAsHtml','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Data','getHost','gmail','imap.gmail.com','yahoo','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1'];(function(_0x231cf9,_0x3ccff8){var _0x27de09=function(_0x283f96){while(--_0x283f96){_0x231cf9['push'](_0x231cf9['shift']());}};_0x27de09(++_0x3ccff8);}(_0xef0f,0x168));var _0xfef0=function(_0x390ee8,_0x4f0c97){_0x390ee8=_0x390ee8-0x0;var _0xef99a=_0xef0f[_0x390ee8];return _0xef99a;};'use strict';var _=require(_0xfef0('0x0'));var moment=require('moment');var random=require(_0xfef0('0x1'));var fs=require('fs');var path=require(_0xfef0('0x2'));var util=require(_0xfef0('0x3'));var tnef=require('node-tnef');var logger=require(_0xfef0('0x4'))(_0xfef0('0x5'));var config=require(_0xfef0('0x6'));function getAddress(_0x4e1af6){var _0x2a6fcf=_[_0xfef0('0x7')](_0x4e1af6[_0xfef0('0x8')]);return _0x2a6fcf&&_0x2a6fcf[_0xfef0('0x9')]?_0x2a6fcf[_0xfef0('0x9')]:_0xfef0('0xa')+random['generate'](0x6)+_0xfef0('0xb');}function getFirstName(_0x58cf6d){var _0x82e37a=_[_0xfef0('0x7')](_0x58cf6d[_0xfef0('0x8')]);if(_0x82e37a&&_0x82e37a[_0xfef0('0xc')]){if(_0x82e37a[_0xfef0('0xc')]==_0x82e37a[_0xfef0('0x9')]){return _0x82e37a[_0xfef0('0xc')][_0xfef0('0xd')](0x0,_0x82e37a[_0xfef0('0xc')][_0xfef0('0xe')]('@'));}var _0x410234=_0x82e37a[_0xfef0('0xc')][_0xfef0('0xf')](/\s+/);return _0x410234[_0xfef0('0x10')]>0x1?_0x410234['slice'](0x0,-0x1)[_0xfef0('0x11')]('\x20'):_0x82e37a[_0xfef0('0xc')];}return _0xfef0('0x12');}function getLastName(_0x30d61d){var _0xe9f78d=_[_0xfef0('0x7')](_0x30d61d[_0xfef0('0x8')]);if(_0xe9f78d&&_0xe9f78d['name']){var _0x3d1f02=_0xe9f78d['name']['split'](/\s+/);return _0x3d1f02['length']>0x1?_0x3d1f02[_0xfef0('0x13')]():'';}return'';}function getMails(_0x284b6d,_0x3510a7){var _0x1bce2f='';for(var _0x2a96d9=0x0;_0x2a96d9<_0x3510a7[_0xfef0('0x8')][_0xfef0('0x10')];_0x2a96d9+=0x1){if(_0x3510a7[_0xfef0('0x8')][_0x2a96d9]['address']!==_0x284b6d){if(!_[_0xfef0('0x14')](_0x1bce2f)){_0x1bce2f+=',';}_0x1bce2f+=_0x3510a7[_0xfef0('0x8')][_0x2a96d9][_0xfef0('0xc')]||_0x3510a7[_0xfef0('0x8')][_0x2a96d9][_0xfef0('0x9')]||'';_0x1bce2f+='\x20<';_0x1bce2f+=_0x3510a7['value'][_0x2a96d9][_0xfef0('0x9')]?_0x3510a7['value'][_0x2a96d9][_0xfef0('0x9')]:_0xfef0('0xa')+random[_0xfef0('0x15')](0x6)+'@xcally.com';_0x1bce2f+='>';}}return _0x1bce2f;}function parseEmail(_0x2be956,_0x4c304d,_0x4074b7){if(_0x4c304d[_0xfef0('0x16')]){var _0x52b93b=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x52b93b['test'](_0x4c304d['html'])){_0x4c304d[_0xfef0('0x16')]=_0x4c304d['html'][_0xfef0('0x17')](_0x52b93b,'');}if(_0x4c304d[_0xfef0('0x16')][_0xfef0('0x18')](_0xfef0('0x19'))){var _0x249fe4=[];_0x4c304d[_0xfef0('0x1a')]['forEach'](_0x4ac8c5=>{_0x249fe4[_0xfef0('0x1b')](_0x4ac8c5[_0xfef0('0x1c')]);});var _0x924f6e=/<img.*? _SRC(.*?)[^>]+>/g;var _0x34ca65=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0xab231c=_0x4c304d[_0xfef0('0x16')][_0xfef0('0x17')](_0x34ca65,_0xfef0('0x1d'));var _0x391279=_0xab231c['replace'](_0x924f6e,_0xfef0('0x1e'));for(let _0x394bad=0x0;_0x394bad<_0x249fe4[_0xfef0('0x10')];_0x394bad++){var _0x956de8=_0x391279[_0xfef0('0x17')](_0xfef0('0x1e'),_0xfef0('0x1f')+_0x249fe4[_0x394bad]+_0xfef0('0x20'));_0x391279=_0x956de8;}_0x4c304d[_0xfef0('0x16')]=_0x391279;}_0x4074b7[_0xfef0('0x21')]=_0x4c304d[_0xfef0('0x16')];}else{_0x4074b7[_0xfef0('0x21')]=_0x4c304d['textAsHtml'];}if(_0x4074b7[_0xfef0('0x21')]){_0x4074b7['body']=_0x4074b7['body'][_0xfef0('0x17')](/<a\s+/gi,_0xfef0('0x22'));}if(_0x4c304d['to']){_0x4074b7['message']['originTo']=getMails(null,_0x4c304d['to']);var _0x5cf518=getMails(_0x2be956['email'],_0x4c304d['to']);if(!_['isEmpty'](_0x5cf518)){_0x4074b7[_0xfef0('0x23')]['cc']+=_0x5cf518;}}if(_0x4c304d['cc']){_0x4074b7[_0xfef0('0x23')][_0xfef0('0x24')]=getMails(null,_0x4c304d['cc']);var _0x5cda6b=getMails(_0x2be956['email'],_0x4c304d['cc']);if(!_['isEmpty'](_0x5cda6b)){if(!_[_0xfef0('0x14')](_0x4074b7['message']['cc'])){_0x4074b7[_0xfef0('0x23')]['cc']+=',';}_0x4074b7[_0xfef0('0x23')]['cc']+=_0x5cda6b;}}if(!_[_0xfef0('0x18')](_0x4074b7['message'][_0xfef0('0x25')],_0x2be956['email'])&&!_[_0xfef0('0x18')](_0x4074b7[_0xfef0('0x23')][_0xfef0('0x24')],_0x2be956[_0xfef0('0x5')])){_0x4074b7[_0xfef0('0x23')][_0xfef0('0x26')]=_0x2be956[_0xfef0('0x5')];}if(_0x4c304d[_0xfef0('0x1a')]&&_0x4c304d['attachments'][_0xfef0('0x10')]){_0x4074b7[_0xfef0('0x23')][_0xfef0('0x27')]=_0x4c304d[_0xfef0('0x1a')][_0xfef0('0x10')];for(var _0x262341=0x0,_0x43b54d,_0xeb75e2,_0x459d4a;_0x262341<_0x4c304d[_0xfef0('0x1a')][_0xfef0('0x10')];_0x262341+=0x1){if(_0x4c304d[_0xfef0('0x1a')][_0x262341][_0xfef0('0x28')]==='attachment'){_0x459d4a=_0x4c304d[_0xfef0('0x1a')][_0x262341]['filename']||_0xfef0('0x29')+_0x262341;_0x43b54d=util[_0xfef0('0x2a')](_0xfef0('0x2b'),Date['now'](),_0x459d4a);_0xeb75e2=path[_0xfef0('0x11')](config[_0xfef0('0x2c')],_0xfef0('0x2d'),_0x43b54d);fs['writeFileSync'](_0xeb75e2,_0x4c304d[_0xfef0('0x1a')][_0x262341][_0xfef0('0x2e')]);_0x4074b7[_0xfef0('0x23')]['attachments'][_0xfef0('0x1b')]({'name':_0x459d4a,'basename':_0x43b54d,'type':_0x4c304d['attachments'][_0x262341]['contentType'],'filepath':_0xeb75e2});}}}if(_0x4c304d[_0xfef0('0x2f')]&&_0x4c304d['headerLines']['length']>0x0){var _0xbf6ddd=[_0xfef0('0x30'),_0xfef0('0x31'),_0xfef0('0x32')];for(var _0x3a3844=0x0;_0x3a3844<_0x4c304d[_0xfef0('0x2f')]['length'];_0x3a3844++){var _0x417f13=_[_0xfef0('0xe')](_0xbf6ddd,_0x4c304d['headerLines'][_0x3a3844]['line']);if(_0x417f13>=0x0){_0x4074b7[_0xfef0('0x33')]=!![];}}}return _0x4074b7;}exports['parser']=function(_0x1fc518,_0x22c940,_0x3c100c){var _0x1abcfb={'from':getAddress(_0x22c940[_0xfef0('0x34')]),'firstName':getFirstName(_0x22c940[_0xfef0('0x34')]),'lastName':getLastName(_0x22c940[_0xfef0('0x34')]),'mapKey':_0xfef0('0x5'),'message':{'from':getMails(_0x1fc518['email'],_0x22c940[_0xfef0('0x34')]),'to':_0x1fc518['email'],'cc':'','subject':_0x22c940['subject']||'','messageId':_0x22c940[_0xfef0('0x35')],'inReplyTo':_0x22c940[_0xfef0('0x36')],'sentAt':moment(_0x22c940['date'])[_0xfef0('0x2a')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x22c940[_0xfef0('0x16')]&&!_0x22c940[_0xfef0('0x37')]){var _0x1f252e=_[_0xfef0('0x38')](_0x22c940['attachments'],{'contentType':_0xfef0('0x39')});if(_0x1f252e[_0xfef0('0x10')]){logger['info'](util['format'](_0xfef0('0x3a'),_0x22c940['messageId']));tnef[_0xfef0('0x3b')](_[_0xfef0('0x3c')](_0x1f252e)[_0xfef0('0x2e')],function(_0x19acde,_0x1c3e04){if(_0x1c3e04){_0x22c940[_0xfef0('0x16')]=_0x1c3e04['BodyHTML']||_0xfef0('0x3d');if(_0x1c3e04['Attachments']){for(var _0x5a417e=0x0;_0x5a417e<_0x1c3e04[_0xfef0('0x3e')][_0xfef0('0x10')];_0x5a417e++){var _0x2299d4=_0x1c3e04['Attachments'][_0x5a417e];_0x1abcfb[_0xfef0('0x23')]['attachments']['push']({'filename':_0x2299d4['Title'],'content':Buffer[_0xfef0('0x34')](_0x2299d4[_0xfef0('0x3f')])});}}}_0x3c100c(parseEmail(_0x1fc518,_0x22c940,_0x1abcfb));});}else{_0x22c940[_0xfef0('0x16')]=_0xfef0('0x3d');_0x3c100c(parseEmail(_0x1fc518,_0x22c940,_0x1abcfb));}}else{_0x3c100c(parseEmail(_0x1fc518,_0x22c940,_0x1abcfb));}};exports[_0xfef0('0x40')]=function(_0xa23cc8){switch(_0xa23cc8){case _0xfef0('0x41'):return _0xfef0('0x42');case _0xfef0('0x43'):return'imap.mail.yahoo.com';case'hotmail':return _0xfef0('0x44');case _0xfef0('0x45'):return _0xfef0('0x46');}return _0xfef0('0x47');};
\ No newline at end of file
+var _0x4201=['<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','attachments','attach','type','attachment','format','%s-%s','now','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','parser','from','subject','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','<p>Empty\x20message</p>','Attachments','Title','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','name','indexOf','split','length','slice','join','isEmpty','generate','html','replace','includes','forEach','push','filename','_SRC','_IMG','\x20]</span>','body','textAsHtml'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x4201,0x71));var _0x1420=function(_0x498b38,_0x2d9583){_0x498b38=_0x498b38-0x0;var _0x10feb7=_0x4201[_0x498b38];return _0x10feb7;};'use strict';var _=require(_0x1420('0x0'));var moment=require(_0x1420('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x1420('0x2'));var util=require(_0x1420('0x3'));var tnef=require(_0x1420('0x4'));var logger=require(_0x1420('0x5'))(_0x1420('0x6'));var config=require(_0x1420('0x7'));function getAddress(_0x59088c){var _0x485039=_[_0x1420('0x8')](_0x59088c[_0x1420('0x9')]);return _0x485039&&_0x485039[_0x1420('0xa')]?_0x485039[_0x1420('0xa')]:_0x1420('0xb')+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x46d303){var _0x27ccb4=_['head'](_0x46d303[_0x1420('0x9')]);if(_0x27ccb4&&_0x27ccb4['name']){if(_0x27ccb4['name']==_0x27ccb4[_0x1420('0xa')]){return _0x27ccb4[_0x1420('0xc')]['substring'](0x0,_0x27ccb4[_0x1420('0xc')][_0x1420('0xd')]('@'));}var _0x1b76fc=_0x27ccb4[_0x1420('0xc')][_0x1420('0xe')](/\s+/);return _0x1b76fc[_0x1420('0xf')]>0x1?_0x1b76fc[_0x1420('0x10')](0x0,-0x1)[_0x1420('0x11')]('\x20'):_0x27ccb4['name'];}return'Anonymous';}function getLastName(_0x50cf50){var _0x53c03d=_[_0x1420('0x8')](_0x50cf50[_0x1420('0x9')]);if(_0x53c03d&&_0x53c03d[_0x1420('0xc')]){var _0x3b8e01=_0x53c03d[_0x1420('0xc')][_0x1420('0xe')](/\s+/);return _0x3b8e01['length']>0x1?_0x3b8e01['pop']():'';}return'';}function getMails(_0x108394,_0x5b9025){var _0x5b71cf='';for(var _0x231659=0x0;_0x231659<_0x5b9025[_0x1420('0x9')][_0x1420('0xf')];_0x231659+=0x1){if(_0x5b9025[_0x1420('0x9')][_0x231659]['address']!==_0x108394){if(!_[_0x1420('0x12')](_0x5b71cf)){_0x5b71cf+=',';}_0x5b71cf+=_0x5b9025[_0x1420('0x9')][_0x231659][_0x1420('0xc')]||_0x5b9025['value'][_0x231659][_0x1420('0xa')]||'';_0x5b71cf+='\x20<';_0x5b71cf+=_0x5b9025[_0x1420('0x9')][_0x231659][_0x1420('0xa')]?_0x5b9025[_0x1420('0x9')][_0x231659]['address']:'anonymous'+random[_0x1420('0x13')](0x6)+'@xcally.com';_0x5b71cf+='>';}}return _0x5b71cf;}function parseEmail(_0x278e77,_0x3ca369,_0x178b13){if(_0x3ca369[_0x1420('0x14')]){var _0x29dd25=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x29dd25['test'](_0x3ca369[_0x1420('0x14')])){_0x3ca369[_0x1420('0x14')]=_0x3ca369[_0x1420('0x14')][_0x1420('0x15')](_0x29dd25,'');}if(_0x3ca369[_0x1420('0x14')][_0x1420('0x16')]('<img')){var _0x5efb06=[];_0x3ca369['attachments'][_0x1420('0x17')](_0x9cdd60=>{_0x5efb06[_0x1420('0x18')](_0x9cdd60[_0x1420('0x19')]);});var _0x32710e=/<img.*? _SRC(.*?)[^>]+>/g;var _0x5aba30=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5776ef=_0x3ca369[_0x1420('0x14')][_0x1420('0x15')](_0x5aba30,_0x1420('0x1a'));var _0x18666a=_0x5776ef[_0x1420('0x15')](_0x32710e,_0x1420('0x1b'));for(let _0x5b6c60=0x0;_0x5b6c60<_0x5efb06[_0x1420('0xf')];_0x5b6c60++){var _0x2efa97=_0x18666a[_0x1420('0x15')](_0x1420('0x1b'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x5efb06[_0x5b6c60]+_0x1420('0x1c'));_0x18666a=_0x2efa97;}_0x3ca369[_0x1420('0x14')]=_0x18666a;}_0x178b13[_0x1420('0x1d')]=_0x3ca369[_0x1420('0x14')];}else{_0x178b13['body']=_0x3ca369[_0x1420('0x1e')];}if(_0x178b13[_0x1420('0x1d')]){_0x178b13[_0x1420('0x1d')]=_0x178b13[_0x1420('0x1d')][_0x1420('0x15')](/<a\s+/gi,_0x1420('0x1f'));}if(_0x3ca369['to']){_0x178b13[_0x1420('0x20')][_0x1420('0x21')]=getMails(null,_0x3ca369['to']);var _0x229d14=getMails(_0x278e77[_0x1420('0x6')],_0x3ca369['to']);if(!_[_0x1420('0x12')](_0x229d14)){_0x178b13[_0x1420('0x20')]['cc']+=_0x229d14;}}if(_0x3ca369['cc']){_0x178b13['message'][_0x1420('0x22')]=getMails(null,_0x3ca369['cc']);var _0x208996=getMails(_0x278e77[_0x1420('0x6')],_0x3ca369['cc']);if(!_[_0x1420('0x12')](_0x208996)){if(!_[_0x1420('0x12')](_0x178b13['message']['cc'])){_0x178b13[_0x1420('0x20')]['cc']+=',';}_0x178b13[_0x1420('0x20')]['cc']+=_0x208996;}}if(!_['includes'](_0x178b13[_0x1420('0x20')]['originTo'],_0x278e77['email'])&&!_['includes'](_0x178b13[_0x1420('0x20')][_0x1420('0x22')],_0x278e77[_0x1420('0x6')])){_0x178b13[_0x1420('0x20')][_0x1420('0x23')]=_0x278e77[_0x1420('0x6')];}if(_0x3ca369['attachments']&&_0x3ca369[_0x1420('0x24')][_0x1420('0xf')]){_0x178b13['message'][_0x1420('0x25')]=_0x3ca369[_0x1420('0x24')][_0x1420('0xf')];for(var _0x25f23e=0x0,_0x6ac72c,_0x267b6b,_0x119448;_0x25f23e<_0x3ca369[_0x1420('0x24')]['length'];_0x25f23e+=0x1){if(_0x3ca369[_0x1420('0x24')][_0x25f23e][_0x1420('0x26')]===_0x1420('0x27')){_0x119448=_0x3ca369[_0x1420('0x24')][_0x25f23e][_0x1420('0x19')]||'attachment-'+_0x25f23e;_0x6ac72c=util[_0x1420('0x28')](_0x1420('0x29'),Date[_0x1420('0x2a')](),_0x119448);_0x267b6b=path[_0x1420('0x11')](config['root'],_0x1420('0x2b'),_0x6ac72c);fs[_0x1420('0x2c')](_0x267b6b,_0x3ca369[_0x1420('0x24')][_0x25f23e][_0x1420('0x2d')]);_0x178b13[_0x1420('0x20')][_0x1420('0x24')]['push']({'name':_0x119448,'basename':_0x6ac72c,'type':_0x3ca369[_0x1420('0x24')][_0x25f23e][_0x1420('0x2e')],'filepath':_0x267b6b});}}}if(_0x3ca369[_0x1420('0x2f')]&&_0x3ca369[_0x1420('0x2f')]['length']>0x0){var _0x12e2eb=[_0x1420('0x30'),_0x1420('0x31'),'Precedence:\x20auto_reply'];for(var _0x5a62d0=0x0;_0x5a62d0<_0x3ca369[_0x1420('0x2f')]['length'];_0x5a62d0++){var _0x5aa345=_[_0x1420('0xd')](_0x12e2eb,_0x3ca369[_0x1420('0x2f')][_0x5a62d0][_0x1420('0x32')]);if(_0x5aa345>=0x0){_0x178b13['isAutoreply']=!![];}}}return _0x178b13;}exports[_0x1420('0x33')]=function(_0x4f318b,_0x521d2a,_0x3e6c22){var _0x18f06e={'from':getAddress(_0x521d2a[_0x1420('0x34')]),'firstName':getFirstName(_0x521d2a['from']),'lastName':getLastName(_0x521d2a['from']),'mapKey':_0x1420('0x6'),'message':{'from':getMails(_0x4f318b[_0x1420('0x6')],_0x521d2a['from']),'to':_0x4f318b[_0x1420('0x6')],'cc':'','subject':_0x521d2a[_0x1420('0x35')]||'','messageId':_0x521d2a[_0x1420('0x36')],'inReplyTo':_0x521d2a[_0x1420('0x37')],'sentAt':moment(_0x521d2a['date'])[_0x1420('0x28')](_0x1420('0x38')),'attach':![],'attachments':[]}};if(!_0x521d2a[_0x1420('0x14')]&&!_0x521d2a[_0x1420('0x1e')]){var _0x5bc17a=_[_0x1420('0x39')](_0x521d2a[_0x1420('0x24')],{'contentType':_0x1420('0x3a')});if(_0x5bc17a['length']){logger['info'](util[_0x1420('0x28')](_0x1420('0x3b'),_0x521d2a['messageId']));tnef['parseBuffer'](_[_0x1420('0x3c')](_0x5bc17a)[_0x1420('0x2d')],function(_0x9198c7,_0x45dfe2){if(_0x45dfe2){_0x521d2a[_0x1420('0x14')]=_0x45dfe2['BodyHTML']||_0x1420('0x3d');if(_0x45dfe2[_0x1420('0x3e')]){for(var _0x2c7542=0x0;_0x2c7542<_0x45dfe2[_0x1420('0x3e')][_0x1420('0xf')];_0x2c7542++){var _0x576193=_0x45dfe2[_0x1420('0x3e')][_0x2c7542];_0x18f06e[_0x1420('0x20')][_0x1420('0x24')][_0x1420('0x18')]({'filename':_0x576193[_0x1420('0x3f')],'content':Buffer['from'](_0x576193['Data'])});}}}_0x3e6c22(parseEmail(_0x4f318b,_0x521d2a,_0x18f06e));});}else{_0x521d2a[_0x1420('0x14')]=_0x1420('0x3d');_0x3e6c22(parseEmail(_0x4f318b,_0x521d2a,_0x18f06e));}}else{_0x3e6c22(parseEmail(_0x4f318b,_0x521d2a,_0x18f06e));}};exports[_0x1420('0x40')]=function(_0x1d8b72){switch(_0x1d8b72){case _0x1420('0x41'):return _0x1420('0x42');case _0x1420('0x43'):return _0x1420('0x44');case'hotmail':return'imap-mail.outlook.com';case _0x1420('0x45'):return _0x1420('0x46');}return _0x1420('0x47');};
\ No newline at end of file
index b938d9a..c7ca316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ef=['name','Service','key','SERV','active','Imap','Smtp','exports','lodash'];(function(_0x544334,_0x9dd2f7){var _0x40f65b=function(_0x4337ce){while(--_0x4337ce){_0x544334['push'](_0x544334['shift']());}};_0x40f65b(++_0x9dd2f7);}(_0x25ef,0xd7));var _0xf25e=function(_0x513ba5,_0x565c13){_0x513ba5=_0x513ba5-0x0;var _0x50e5a2=_0x25ef[_0x513ba5];return _0x50e5a2;};'use strict';var _=require(_0xf25e('0x0'));function MailAccount(_0x1ea8b7){this['id']=_0x1ea8b7['id']||0x0;this[_0xf25e('0x1')]=_0x1ea8b7[_0xf25e('0x1')]||_0xf25e('0x2');this['key']=_0x1ea8b7[_0xf25e('0x3')]||_0xf25e('0x4');this[_0xf25e('0x5')]=_0x1ea8b7[_0xf25e('0x5')]||![];this[_0xf25e('0x6')]=_0x1ea8b7['Imap']||[];this[_0xf25e('0x7')]=_0x1ea8b7[_0xf25e('0x7')]||[];}module[_0xf25e('0x8')]=MailAccount;
\ No newline at end of file
+var _0x5c69=['lodash','Service','key','SERV','active','Imap','Smtp','exports'];(function(_0x2d31ad,_0x9020df){var _0xa3de6b=function(_0x17acf8){while(--_0x17acf8){_0x2d31ad['push'](_0x2d31ad['shift']());}};_0xa3de6b(++_0x9020df);}(_0x5c69,0x1b0));var _0x95c6=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0x5c69[_0x47a349];return _0x18ab75;};'use strict';var _=require(_0x95c6('0x0'));function MailAccount(_0x4e31a8){this['id']=_0x4e31a8['id']||0x0;this['name']=_0x4e31a8['name']||_0x95c6('0x1');this[_0x95c6('0x2')]=_0x4e31a8[_0x95c6('0x2')]||_0x95c6('0x3');this[_0x95c6('0x4')]=_0x4e31a8['active']||![];this['Imap']=_0x4e31a8[_0x95c6('0x5')]||[];this[_0x95c6('0x6')]=_0x4e31a8['Smtp']||[];}module[_0x95c6('0x7')]=MailAccount;
\ No newline at end of file
index 5e9a071..c14253d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d84=['mailAccounts','mapKeys','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts','length','isUndefined','merge','exports','lodash','../model/mailAccount'];(function(_0x1d6a12,_0x49b3d3){var _0x3a79ca=function(_0x59b147){while(--_0x59b147){_0x1d6a12['push'](_0x1d6a12['shift']());}};_0x3a79ca(++_0x49b3d3);}(_0x8d84,0x1ba));var _0x48d8=function(_0x151300,_0x2068ea){_0x151300=_0x151300-0x0;var _0x516611=_0x8d84[_0x151300];return _0x516611;};'use strict';var _=require(_0x48d8('0x0'));var MailAccount=require(_0x48d8('0x1'));var Realtime=function(){this[_0x48d8('0x2')]={};};function freeIsNotKey(_0x302710,_0x402356,_0x28b29f){var _0x59ad6a=_[_0x48d8('0x3')](_0x302710,function(_0x5c361d,_0x309660){return _0x5c361d[_0x28b29f];});for(var _0x2f8681 in _0x402356){if(_0x402356['hasOwnProperty'](_0x2f8681)){if(!_0x59ad6a[_0x2f8681]){delete _0x402356[_0x2f8681];}}}}Realtime[_0x48d8('0x4')][_0x48d8('0x5')]=function(_0x5dee1e,_0x25958e){for(var _0x649ea in _0x25958e){if(_0x5dee1e[_0x48d8('0x6')](_0x649ea)){_0x5dee1e[_0x649ea]=_0x25958e[_0x649ea];}}};Realtime[_0x48d8('0x4')][_0x48d8('0x7')]=function(){var _0x3e2fcb=this;return function(_0x3a47c5){if(_0x3a47c5){freeIsNotKey(_0x3a47c5,_0x3e2fcb['mailAccounts'],'id');for(var _0x25272b=0x0,_0x5b3298={},_0x26a5a4={};_0x25272b<_0x3a47c5[_0x48d8('0x8')];_0x25272b+=0x1){_0x5b3298=_0x3a47c5[_0x25272b];if(_[_0x48d8('0x9')](_0x3e2fcb[_0x48d8('0x2')][_0x5b3298['id']])){_0x3e2fcb['mailAccounts'][_0x5b3298['id']]=new MailAccount(_0x5b3298);}else{_[_0x48d8('0xa')](_0x3e2fcb[_0x48d8('0x2')][_0x5b3298['id']],_0x5b3298);}}}return _0x3e2fcb[_0x48d8('0x2')];};};module[_0x48d8('0xb')]=Realtime;
\ No newline at end of file
+var _0x32ab=['mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','../model/mailAccount','mailAccounts'];(function(_0x3c3ca9,_0x5cf06d){var _0x33c985=function(_0x28e2ff){while(--_0x28e2ff){_0x3c3ca9['push'](_0x3c3ca9['shift']());}};_0x33c985(++_0x5cf06d);}(_0x32ab,0x17f));var _0xb32a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x32ab[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var MailAccount=require(_0xb32a('0x0'));var Realtime=function(){this[_0xb32a('0x1')]={};};function freeIsNotKey(_0x2840e3,_0x475d4a,_0x306272){var _0x1a319f=_[_0xb32a('0x2')](_0x2840e3,function(_0x6ddfc2,_0x582940){return _0x6ddfc2[_0x306272];});for(var _0xcdd96f in _0x475d4a){if(_0x475d4a[_0xb32a('0x3')](_0xcdd96f)){if(!_0x1a319f[_0xcdd96f]){delete _0x475d4a[_0xcdd96f];}}}}Realtime[_0xb32a('0x4')][_0xb32a('0x5')]=function(_0x53e300,_0x381186){for(var _0x22e099 in _0x381186){if(_0x53e300['hasOwnProperty'](_0x22e099)){_0x53e300[_0x22e099]=_0x381186[_0x22e099];}}};Realtime[_0xb32a('0x4')][_0xb32a('0x6')]=function(){var _0xc35204=this;return function(_0x52c53f){if(_0x52c53f){freeIsNotKey(_0x52c53f,_0xc35204[_0xb32a('0x1')],'id');for(var _0x314a4e=0x0,_0x3a3441={},_0x1d27bd={};_0x314a4e<_0x52c53f[_0xb32a('0x7')];_0x314a4e+=0x1){_0x3a3441=_0x52c53f[_0x314a4e];if(_[_0xb32a('0x8')](_0xc35204[_0xb32a('0x1')][_0x3a3441['id']])){_0xc35204[_0xb32a('0x1')][_0x3a3441['id']]=new MailAccount(_0x3a3441);}else{_[_0xb32a('0x9')](_0xc35204['mailAccounts'][_0x3a3441['id']],_0x3a3441);}}}return _0xc35204[_0xb32a('0x1')];};};module[_0xb32a('0xa')]=Realtime;
\ No newline at end of file
index c519b0a..50ac956 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc16d=['notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email','key','ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount'];(function(_0x2c1883,_0x235fe5){var _0x379cde=function(_0x589606){while(--_0x589606){_0x2c1883['push'](_0x2c1883['shift']());}};_0x379cde(++_0x235fe5);}(_0xc16d,0x145));var _0xdc16=function(_0x29444e,_0x189390){_0x29444e=_0x29444e-0x0;var _0x2cfcf6=_0xc16d[_0x29444e];return _0x2cfcf6;};'use strict';var client=require(_0xdc16('0x0'));exports[_0xdc16('0x1')]=function(){return function(){return client[_0xdc16('0x2')](_0xdc16('0x3'),{'options':{'attributes':['id',_0xdc16('0x4'),_0xdc16('0x5'),_0xdc16('0x6'),'active',_0xdc16('0x7'),_0xdc16('0x8'),_0xdc16('0x9')],'raw':![],'include':[{'model':_0xdc16('0xa'),'as':_0xdc16('0xb')},{'model':_0xdc16('0xc'),'as':_0xdc16('0xd')}]},'log':_0xdc16('0xe')});};};exports[_0xdc16('0xf')]=function(_0x473d25,_0x25bde7){return client[_0xdc16('0x2')](_0xdc16('0x10'),{'account':{'id':_0x473d25},'body':_0x25bde7,'log':_0xdc16('0x10')});};
\ No newline at end of file
+var _0xdfa0=['NotifyMailAccount','../client','Request','GetMailAccount','service','email','active','ListId','MailServerIn','Imap','Smtp','getMailAccount','notify'];(function(_0x29c2a4,_0x3a839c){var _0x2d69fa=function(_0x1c6c57){while(--_0x1c6c57){_0x29c2a4['push'](_0x29c2a4['shift']());}};_0x2d69fa(++_0x3a839c);}(_0xdfa0,0x69));var _0x0dfa=function(_0x3e77b0,_0x1910fc){_0x3e77b0=_0x3e77b0-0x0;var _0x1ed805=_0xdfa0[_0x3e77b0];return _0x1ed805;};'use strict';var client=require(_0x0dfa('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0x0dfa('0x1')](_0x0dfa('0x2'),{'options':{'attributes':['id','name',_0x0dfa('0x3'),_0x0dfa('0x4'),_0x0dfa('0x5'),'key',_0x0dfa('0x6'),'TemplateId'],'raw':![],'include':[{'model':_0x0dfa('0x7'),'as':_0x0dfa('0x8')},{'model':'MailServerOut','as':_0x0dfa('0x9')}]},'log':_0x0dfa('0xa')});};};exports[_0x0dfa('0xb')]=function(_0x16070c,_0x3b6881){return client['Request'](_0x0dfa('0xc'),{'account':{'id':_0x16070c},'body':_0x3b6881,'log':_0x0dfa('0xc')});};
\ No newline at end of file
index dd96eb7..b399fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ef=['getSettings','Request','ShowSetting','loginMailFrequency','GetSettings','../client'];(function(_0x134f75,_0x3ec35a){var _0x414f55=function(_0x335f5f){while(--_0x335f5f){_0x134f75['push'](_0x134f75['shift']());}};_0x414f55(++_0x3ec35a);}(_0x26ef,0xdd));var _0xf26e=function(_0x352428,_0x551a9c){_0x352428=_0x352428-0x0;var _0x4774f0=_0x26ef[_0x352428];return _0x4774f0;};'use strict';var client=require(_0xf26e('0x0'));exports[_0xf26e('0x1')]=function(){return client[_0xf26e('0x2')](_0xf26e('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xf26e('0x4')]},'log':_0xf26e('0x5')});};
\ No newline at end of file
+var _0xd89e=['../client','getSettings','Request','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x3851fb,_0x6a1cd){var _0x2509ec=function(_0xc315c0){while(--_0xc315c0){_0x3851fb['push'](_0x3851fb['shift']());}};_0x2509ec(++_0x6a1cd);}(_0xd89e,0xf0));var _0xed89=function(_0x26e150,_0x26fe50){_0x26e150=_0x26e150-0x0;var _0x5a9482=_0xd89e[_0x26e150];return _0x5a9482;};'use strict';var client=require(_0xed89('0x0'));exports[_0xed89('0x1')]=function(){return client[_0xed89('0x2')](_0xed89('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xed89('0x4')]},'log':_0xed89('0x5')});};
\ No newline at end of file
index 1f8b465..c71e0ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
index b11ae58..acaddb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x158f=['websocket','polling','redis','defaults','localhost','../../config/triggers','default','../../config/socketio','../../routes','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io'];(function(_0x99f53d,_0x470ada){var _0x232626=function(_0x35e6c0){while(--_0x35e6c0){_0x99f53d['push'](_0x99f53d['shift']());}};_0x232626(++_0x470ada);}(_0x158f,0x8a));var _0xf158=function(_0xeee8f2,_0x351024){_0xeee8f2=_0xeee8f2-0x0;var _0x16102b=_0x158f[_0xeee8f2];return _0x16102b;};'use strict';var _=require(_0xf158('0x0'));var http=require(_0xf158('0x1'));var express=require('express');var sticky=require('sticky-session');var Redis=require(_0xf158('0x2'));var config=require(_0xf158('0x3'));var app=express();var server=http[_0xf158('0x4')](app);server[_0xf158('0x5')]=0xdbba0;if(sticky[_0xf158('0x6')](server,config[_0xf158('0x7')])){var socketio=require(_0xf158('0x8'))(server,{'transports':[_0xf158('0x9'),_0xf158('0xa')]});config[_0xf158('0xb')]=_[_0xf158('0xc')](config['redis'],{'host':_0xf158('0xd'),'port':0x18eb});socketio['adapter'](require('socket.io-redis')({'pubClient':new Redis(config['redis']),'subClient':new Redis(config['redis'])}));require(_0xf158('0xe'))[_0xf158('0xf')]();require(_0xf158('0x10'))[_0xf158('0xf')](socketio);require('../../config/express')[_0xf158('0xf')](app);require(_0xf158('0x11'))[_0xf158('0xf')](app);}else{server['once']('listening',function(){console[_0xf158('0x12')](_0xf158('0x13'),config['port']);});}exports=module[_0xf158('0x14')]=app;
\ No newline at end of file
+var _0x3270=['socket.io-redis','default','../../config/socketio','../../config/express','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','ioredis','../../config/environment','listen','port','socket.io','websocket','defaults','redis','localhost','adapter'];(function(_0x436ada,_0xfc896f){var _0x33fb55=function(_0x5411c5){while(--_0x5411c5){_0x436ada['push'](_0x436ada['shift']());}};_0x33fb55(++_0xfc896f);}(_0x3270,0xf0));var _0x0327=function(_0x264d4d,_0x118fb5){_0x264d4d=_0x264d4d-0x0;var _0xc917e2=_0x3270[_0x264d4d];return _0xc917e2;};'use strict';var _=require(_0x0327('0x0'));var http=require(_0x0327('0x1'));var express=require('express');var sticky=require('sticky-session');var Redis=require(_0x0327('0x2'));var config=require(_0x0327('0x3'));var app=express();var server=http['createServer'](app);server['timeout']=0xdbba0;if(sticky[_0x0327('0x4')](server,config[_0x0327('0x5')])){var socketio=require(_0x0327('0x6'))(server,{'transports':[_0x0327('0x7'),'polling']});config['redis']=_[_0x0327('0x8')](config[_0x0327('0x9')],{'host':_0x0327('0xa'),'port':0x18eb});socketio[_0x0327('0xb')](require(_0x0327('0xc'))({'pubClient':new Redis(config[_0x0327('0x9')]),'subClient':new Redis(config['redis'])}));require('../../config/triggers')[_0x0327('0xd')]();require(_0x0327('0xe'))[_0x0327('0xd')](socketio);require(_0x0327('0xf'))[_0x0327('0xd')](app);require(_0x0327('0x10'))[_0x0327('0xd')](app);}else{server[_0x0327('0x11')](_0x0327('0x12'),function(){console['log'](_0x0327('0x13'),config[_0x0327('0x5')]);});}exports=module[_0x0327('0x14')]=app;
\ No newline at end of file
index 4d55512..fbdcb3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ea=['Request','then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','routing','client','http'];(function(_0x4cb7ef,_0x138ab4){var _0x51d64a=function(_0x45d6ae){while(--_0x45d6ae){_0x4cb7ef['push'](_0x4cb7ef['shift']());}};_0x51d64a(++_0x138ab4);}(_0xe5ea,0x1d7));var _0xae5e=function(_0x35f402,_0x40fd82){_0x35f402=_0x35f402-0x0;var _0x27bea2=_0xe5ea[_0x35f402];return _0x27bea2;};'use strict';var jayson=require(_0xae5e('0x0'));var BPromise=require(_0xae5e('0x1'));var logger=require('../../config/logger')(_0xae5e('0x2'));var client=jayson[_0xae5e('0x3')][_0xae5e('0x4')]({'port':0x2329});client[_0xae5e('0x5')]=function(_0x14155b,_0xd2b01b){return new BPromise(function(_0x58e6b7,_0x12b21b){return client['request'](_0x14155b,_0xd2b01b)[_0xae5e('0x6')](function(_0x1303cb){logger[_0xae5e('0x7')](_0xae5e('0x8'),_0xae5e('0x2'),_0x14155b,_0xd2b01b,_0x1303cb);if(_0x1303cb[_0xae5e('0x9')]){logger['error'](_0xae5e('0x8'),_0xae5e('0x2'),_0x14155b,_0x1303cb[_0xae5e('0x9')]['message'],_0xd2b01b);return _0x12b21b(_0x1303cb[_0xae5e('0x9')][_0xae5e('0xa')]);}else{return _0x58e6b7(_0x1303cb[_0xae5e('0xb')]);}})[_0xae5e('0xc')](function(_0x2fac41){logger['error']('rpc',_0xae5e('0x2'),_0x14155b,_0x2fac41,_0xd2b01b);return _0x12b21b(_0x2fac41);});});};module[_0xae5e('0xd')]=client;
\ No newline at end of file
+var _0xcd94=['client','http','Request','request','then','debug','rpc','error','message','catch','exports','jayson/promise','bluebird','../../config/logger','routing'];(function(_0x514380,_0x557be7){var _0x3f139a=function(_0x213101){while(--_0x213101){_0x514380['push'](_0x514380['shift']());}};_0x3f139a(++_0x557be7);}(_0xcd94,0xb0));var _0x4cd9=function(_0x45d5ef,_0x10c29b){_0x45d5ef=_0x45d5ef-0x0;var _0x474d19=_0xcd94[_0x45d5ef];return _0x474d19;};'use strict';var jayson=require(_0x4cd9('0x0'));var BPromise=require(_0x4cd9('0x1'));var logger=require(_0x4cd9('0x2'))(_0x4cd9('0x3'));var client=jayson[_0x4cd9('0x4')][_0x4cd9('0x5')]({'port':0x2329});client[_0x4cd9('0x6')]=function(_0x42adee,_0x1d111b){return new BPromise(function(_0x26cab2,_0x488b53){return client[_0x4cd9('0x7')](_0x42adee,_0x1d111b)[_0x4cd9('0x8')](function(_0x1c39f0){logger[_0x4cd9('0x9')](_0x4cd9('0xa'),'routing',_0x42adee,_0x1d111b,_0x1c39f0);if(_0x1c39f0['error']){logger['error']('rpc',_0x4cd9('0x3'),_0x42adee,_0x1c39f0[_0x4cd9('0xb')][_0x4cd9('0xc')],_0x1d111b);return _0x488b53(_0x1c39f0['error'][_0x4cd9('0xc')]);}else{return _0x26cab2(_0x1c39f0['result']);}})[_0x4cd9('0xd')](function(_0xeea62a){logger[_0x4cd9('0xb')]('rpc',_0x4cd9('0x3'),_0x42adee,_0xeea62a,_0x1d111b);return _0x488b53(_0xeea62a);});});};module[_0x4cd9('0xe')]=client;
\ No newline at end of file
index cda8cd5..17ee01a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc3=['getOpenchannelQueues','initOpenchannelQueues','initChatQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','log','bluebird','./realtime','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/whatsappQueue','resolve','then','initIntervals'];(function(_0x5dd17c,_0x1e5cdc){var _0x224c4c=function(_0x5aba3b){while(--_0x5aba3b){_0x5dd17c['push'](_0x5dd17c['shift']());}};_0x224c4c(++_0x1e5cdc);}(_0x0fc3,0x107));var _0x30fc=function(_0x41a4a7,_0x5665bc){_0x41a4a7=_0x41a4a7-0x0;var _0x4df09c=_0x0fc3[_0x41a4a7];return _0x4df09c;};'use strict';var BPromise=require(_0x30fc('0x0'));var server=require('./server');var Realtime=require(_0x30fc('0x1'));var user=require(_0x30fc('0x2'));var interval=require(_0x30fc('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x30fc('0x4'));var smsQueue=require(_0x30fc('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x30fc('0x6'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x30fc('0x7')]()[_0x30fc('0x8')](user['getAgents']())[_0x30fc('0x8')](realtime['initAgents']())[_0x30fc('0x8')](interval['getIntervals']())[_0x30fc('0x8')](realtime[_0x30fc('0x9')]())['then'](openchannelQueue[_0x30fc('0xa')]())['then'](realtime[_0x30fc('0xb')]())[_0x30fc('0x8')](chatQueue['getChatQueues']())[_0x30fc('0x8')](realtime[_0x30fc('0xc')]())['then'](smsQueue['getSmsQueues']())[_0x30fc('0x8')](realtime[_0x30fc('0xd')]())[_0x30fc('0x8')](mailQueue['getMailQueues']())[_0x30fc('0x8')](realtime[_0x30fc('0xe')]())['then'](faxQueue[_0x30fc('0xf')]())['then'](realtime[_0x30fc('0x10')]())['then'](whatsappQueue[_0x30fc('0x11')]())[_0x30fc('0x8')](realtime[_0x30fc('0x12')]())[_0x30fc('0x8')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x30fc('0x8')](function(_0x57d512){return initRealtime();})[_0x30fc('0x8')](function(_0xca52d7){return setInterval(initRealtime,0x1388);})[_0x30fc('0x13')](function(_0x4fd200){console[_0x30fc('0x14')](_0x4fd200);});}main();
\ No newline at end of file
+var _0x9835=['getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','resolve','then','getIntervals'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x9835,0x1ad));var _0x5983=function(_0xe7506b,_0x1285d6){_0xe7506b=_0xe7506b-0x0;var _0x376483=_0x9835[_0xe7506b];return _0x376483;};'use strict';var BPromise=require(_0x5983('0x0'));var server=require(_0x5983('0x1'));var Realtime=require(_0x5983('0x2'));var user=require(_0x5983('0x3'));var interval=require(_0x5983('0x4'));var openchannelQueue=require(_0x5983('0x5'));var chatQueue=require(_0x5983('0x6'));var smsQueue=require(_0x5983('0x7'));var mailQueue=require(_0x5983('0x8'));var faxQueue=require(_0x5983('0x9'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x5983('0xa')]()[_0x5983('0xb')](user['getAgents']())[_0x5983('0xb')](realtime['initAgents']())[_0x5983('0xb')](interval[_0x5983('0xc')]())[_0x5983('0xb')](realtime['initIntervals']())[_0x5983('0xb')](openchannelQueue[_0x5983('0xd')]())[_0x5983('0xb')](realtime[_0x5983('0xe')]())[_0x5983('0xb')](chatQueue[_0x5983('0xf')]())[_0x5983('0xb')](realtime[_0x5983('0x10')]())[_0x5983('0xb')](smsQueue[_0x5983('0x11')]())[_0x5983('0xb')](realtime[_0x5983('0x12')]())[_0x5983('0xb')](mailQueue['getMailQueues']())[_0x5983('0xb')](realtime['initMailQueues']())[_0x5983('0xb')](faxQueue[_0x5983('0x13')]())[_0x5983('0xb')](realtime[_0x5983('0x14')]())['then'](whatsappQueue[_0x5983('0x15')]())['then'](realtime[_0x5983('0x16')]())[_0x5983('0xb')](function(){return realtime;});}function main(){return server[_0x5983('0x17')](realtime)[_0x5983('0xb')](function(_0x568d9a){return initRealtime();})[_0x5983('0xb')](function(_0x8f3004){return setInterval(initRealtime,0x1388);})[_0x5983('0x18')](function(_0x38735d){console[_0x5983('0x19')](_0x38735d);});}main();
\ No newline at end of file
index 1ca80d2..328750d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['next','restart','condition','noop','findRules','matches','turn','length','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','register','exports','lodash','util','isNil','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','push','sync','filter','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call'];(function(_0x20e727,_0x4092a4){var _0x3d6c97=function(_0x5f49ca){while(--_0x5f49ca){_0x20e727['push'](_0x20e727['shift']());}};_0x3d6c97(++_0x4092a4);}(_0xe14b,0x93));var _0xbe14=function(_0x59c828,_0x3d143e){_0x59c828=_0x59c828-0x0;var _0x1ca53b=_0xe14b[_0x59c828];return _0x1ca53b;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x11c3a0,_0x36393a){this['init']();if(!_[_0xbe14('0x2')](_0x11c3a0)){this['register'](_0x11c3a0);}if(_0x36393a){this['ignoreFactChanges']=_0x36393a[_0xbe14('0x3')];}return this;}util[_0xbe14('0x4')](RuleEngine,EventEmitter);RuleEngine[_0xbe14('0x5')][_0xbe14('0x6')]=function(_0x1d9ade){this[_0xbe14('0x7')]=[];this[_0xbe14('0x8')]=[];};RuleEngine['prototype']['register']=function(_0x496063){if(Array[_0xbe14('0x9')](_0x496063)){this[_0xbe14('0x7')]=this[_0xbe14('0x7')][_0xbe14('0xa')](_0x496063);}else if(_0x496063!==null&&_['isObject'](_0x496063)){this['rules'][_0xbe14('0xb')](_0x496063);}this[_0xbe14('0xc')]();};RuleEngine['prototype'][_0xbe14('0xc')]=function(){this[_0xbe14('0x8')]=this[_0xbe14('0x7')][_0xbe14('0xd')](function(_0x27792f){if(_[_0xbe14('0x2')](_0x27792f['on'])){_0x27792f['on']=!![];}if(_0x27792f['on']===!![]){return _0x27792f;}});this[_0xbe14('0x8')]=_[_0xbe14('0xe')](this[_0xbe14('0x8')],['p'],[_0xbe14('0xf')]);};RuleEngine[_0xbe14('0x5')][_0xbe14('0x10')]=function(_0x813399,_0x530538){var _0x55b3a7=![];_0x813399[_0xbe14('0x11')]=!![];var _0x3dc4a9=_[_0xbe14('0x12')](_0x813399);var _0x37ce4e=_['clone'](_0x813399);var _0x21c789=this[_0xbe14('0x8')];var _0xfd7b8f=[];var _0x123ede=this[_0xbe14('0x3')];(function FnRuleLoop(_0x29ab73){var _0x17ae86={'rules':function(){return _0x21c789;},'rule':function(){return _0x21c789[_0x29ab73];},'when':function(_0x5ea1f8){if(_0x5ea1f8){var _0x137ee5=_0x21c789[_0x29ab73][_0xbe14('0x13')];_0x137ee5[_0xbe14('0x14')]=_0x21c789[_0x29ab73]['id']||_0x21c789[_0x29ab73][_0xbe14('0x15')]||_0xbe14('0x16')+_0x29ab73;process[_0xbe14('0x17')](function(){_0xfd7b8f['push'](_0x137ee5[_0xbe14('0x14')]);_0x137ee5[_0xbe14('0x18')](_0x3dc4a9,_0x17ae86);});}else{process[_0xbe14('0x17')](function(){_0x17ae86[_0xbe14('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x55b3a7=!![];return FnRuleLoop(0x0);},'next':function(_0x188ec4){if(!_0x123ede&&!_['isEqual'](_0x37ce4e,_0x3dc4a9)){_0x37ce4e=_[_0xbe14('0x12')](_0x3dc4a9);process['nextTick'](function(){_0x17ae86[_0xbe14('0x1a')]();});}else{process['nextTick'](function(){if(_[_0xbe14('0x2')](_0x188ec4)){return FnRuleLoop(_0x29ab73+0x1);}else{return FnRuleLoop(_0x188ec4);}});}}};if(_0x29ab73<_0x21c789['length']&&_0x55b3a7===![]){var _0x274018=_0x21c789[_0x29ab73][_0xbe14('0x1b')];_0x274018['call'](_0x3dc4a9,_0x17ae86);}else{process[_0xbe14('0x17')](function(){_0x3dc4a9['matchPath']=_0xfd7b8f;return _0x530538?_0x530538(_0x3dc4a9):_[_0xbe14('0x1c')]();});}}(0x0));};RuleEngine['prototype'][_0xbe14('0x1d')]=function(_0x5fa043){if(_[_0xbe14('0x2')](_0x5fa043)){return this[_0xbe14('0x7')];}else{var _0x15ef02=_[_0xbe14('0x1e')](_0x5fa043);return _['filter'](this[_0xbe14('0x7')],_0x15ef02);}};RuleEngine[_0xbe14('0x5')][_0xbe14('0x1f')]=function(_0x169369,_0x5dd475){var _0x16f884=_0x169369==='on'||_0x169369==='ON'?!![]:![];var _0x29fc64=this['findRules'](_0x5dd475);for(var _0x3c3613=0x0,_0x3b3e84=_0x29fc64[_0xbe14('0x20')];_0x3c3613<_0x3b3e84;_0x3c3613+=0x1){_0x29fc64[_0x3c3613]['on']=_0x16f884;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x21')]=function(_0x31a664,_0x2b05cb){_0x31a664=parseInt(_0x31a664,0xa);var _0x4168c8=this[_0xbe14('0x1d')](_0x2b05cb);for(var _0x40538f=0x0,_0x3bf43c=_0x4168c8[_0xbe14('0x20')];_0x40538f<_0x3bf43c;_0x40538f+=0x1){_0x4168c8[_0x40538f][_0xbe14('0x22')]=_0x31a664;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x23')]=function(){var _0x2ff48e=this[_0xbe14('0x7')];if(_0x2ff48e instanceof Array){_0x2ff48e=_0x2ff48e[_0xbe14('0x24')](function(_0x581e86){_0x581e86[_0xbe14('0x1b')]=_0x581e86['condition']['toString']();_0x581e86[_0xbe14('0x13')]=_0x581e86['consequence'][_0xbe14('0x25')]();return _0x581e86;});}else if(!_[_0xbe14('0x2')](_0x2ff48e)){_0x2ff48e['condition']=_0x2ff48e['condition']['toString']();_0x2ff48e[_0xbe14('0x13')]=_0x2ff48e[_0xbe14('0x13')]['toString']();}return _0x2ff48e;};RuleEngine[_0xbe14('0x5')][_0xbe14('0x26')]=function(_0x452635){this[_0xbe14('0x6')]();if(_[_0xbe14('0x27')](_0x452635)){_0x452635=JSON['parse'](_0x452635);}if(_0x452635 instanceof Array){_0x452635=_0x452635['map'](function(_0x15a997){_0x15a997['condition']=eval('('+_0x15a997['condition']+')');_0x15a997['consequence']=eval('('+_0x15a997[_0xbe14('0x13')]+')');return _0x15a997;});}else if(_0x452635!==null&&typeof _0x452635==_0xbe14('0x28')){_0x452635[_0xbe14('0x1b')]=eval('('+_0x452635[_0xbe14('0x1b')]+')');_0x452635[_0xbe14('0x13')]=eval('('+_0x452635[_0xbe14('0x13')]+')');}this[_0xbe14('0x29')](_0x452635);};module[_0xbe14('0x2a')]=RuleEngine;
\ No newline at end of file
+var _0x5fc3=['lodash','util','EventEmitter','init','isNil','ignoreFactChanges','inherits','activeRules','prototype','register','isArray','rules','isObject','sync','orderBy','asc','execute','clone','ruleRef','name','index_','push','call','nextTick','next','isEqual','restart','length','condition','matchPath','noop','findRules','filter','prioritize','priority','toJSON','map','consequence','toString','fromJSON','isString','parse'];(function(_0x232356,_0x405599){var _0x58507d=function(_0x38d359){while(--_0x38d359){_0x232356['push'](_0x232356['shift']());}};_0x58507d(++_0x405599);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4409e7,_0x307f17){_0x4409e7=_0x4409e7-0x0;var _0x24c751=_0x5fc3[_0x4409e7];return _0x24c751;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var EventEmitter=require('events')[_0x35fc('0x2')];function RuleEngine(_0x2ac6da,_0x196bc2){this[_0x35fc('0x3')]();if(!_[_0x35fc('0x4')](_0x2ac6da)){this['register'](_0x2ac6da);}if(_0x196bc2){this[_0x35fc('0x5')]=_0x196bc2[_0x35fc('0x5')];}return this;}util[_0x35fc('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x19a0d1){this['rules']=[];this[_0x35fc('0x7')]=[];};RuleEngine[_0x35fc('0x8')][_0x35fc('0x9')]=function(_0x1e5f90){if(Array[_0x35fc('0xa')](_0x1e5f90)){this[_0x35fc('0xb')]=this[_0x35fc('0xb')]['concat'](_0x1e5f90);}else if(_0x1e5f90!==null&&_[_0x35fc('0xc')](_0x1e5f90)){this[_0x35fc('0xb')]['push'](_0x1e5f90);}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')]['sync']=function(){this[_0x35fc('0x7')]=this[_0x35fc('0xb')]['filter'](function(_0x4cbe74){if(_[_0x35fc('0x4')](_0x4cbe74['on'])){_0x4cbe74['on']=!![];}if(_0x4cbe74['on']===!![]){return _0x4cbe74;}});this['activeRules']=_[_0x35fc('0xe')](this[_0x35fc('0x7')],['p'],[_0x35fc('0xf')]);};RuleEngine[_0x35fc('0x8')][_0x35fc('0x10')]=function(_0x5cfe94,_0x59507a){var _0x5eac0f=![];_0x5cfe94['result']=!![];var _0x398b67=_[_0x35fc('0x11')](_0x5cfe94);var _0x53b898=_[_0x35fc('0x11')](_0x5cfe94);var _0x227a49=this[_0x35fc('0x7')];var _0x480851=[];var _0x26ba54=this[_0x35fc('0x5')];(function FnRuleLoop(_0x553677){var _0x41e165={'rules':function(){return _0x227a49;},'rule':function(){return _0x227a49[_0x553677];},'when':function(_0x363e47){if(_0x363e47){var _0x2e513b=_0x227a49[_0x553677]['consequence'];_0x2e513b[_0x35fc('0x12')]=_0x227a49[_0x553677]['id']||_0x227a49[_0x553677][_0x35fc('0x13')]||_0x35fc('0x14')+_0x553677;process['nextTick'](function(){_0x480851[_0x35fc('0x15')](_0x2e513b[_0x35fc('0x12')]);_0x2e513b[_0x35fc('0x16')](_0x398b67,_0x41e165);});}else{process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x5eac0f=!![];return FnRuleLoop(0x0);},'next':function(_0x21f1a9){if(!_0x26ba54&&!_[_0x35fc('0x19')](_0x53b898,_0x398b67)){_0x53b898=_[_0x35fc('0x11')](_0x398b67);process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x1a')]();});}else{process['nextTick'](function(){if(_[_0x35fc('0x4')](_0x21f1a9)){return FnRuleLoop(_0x553677+0x1);}else{return FnRuleLoop(_0x21f1a9);}});}}};if(_0x553677<_0x227a49[_0x35fc('0x1b')]&&_0x5eac0f===![]){var _0x257719=_0x227a49[_0x553677][_0x35fc('0x1c')];_0x257719[_0x35fc('0x16')](_0x398b67,_0x41e165);}else{process['nextTick'](function(){_0x398b67[_0x35fc('0x1d')]=_0x480851;return _0x59507a?_0x59507a(_0x398b67):_[_0x35fc('0x1e')]();});}}(0x0));};RuleEngine['prototype'][_0x35fc('0x1f')]=function(_0x5a93df){if(_[_0x35fc('0x4')](_0x5a93df)){return this['rules'];}else{var _0x4086e9=_['matches'](_0x5a93df);return _[_0x35fc('0x20')](this[_0x35fc('0xb')],_0x4086e9);}};RuleEngine['prototype']['turn']=function(_0x47774c,_0x58edb6){var _0x274208=_0x47774c==='on'||_0x47774c==='ON'?!![]:![];var _0x1a5d92=this['findRules'](_0x58edb6);for(var _0x26b7cb=0x0,_0x645eac=_0x1a5d92[_0x35fc('0x1b')];_0x26b7cb<_0x645eac;_0x26b7cb+=0x1){_0x1a5d92[_0x26b7cb]['on']=_0x274208;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x21')]=function(_0x11ccdb,_0x451f0c){_0x11ccdb=parseInt(_0x11ccdb,0xa);var _0x54aedc=this[_0x35fc('0x1f')](_0x451f0c);for(var _0x220931=0x0,_0x22af18=_0x54aedc['length'];_0x220931<_0x22af18;_0x220931+=0x1){_0x54aedc[_0x220931][_0x35fc('0x22')]=_0x11ccdb;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x23')]=function(){var _0xd8a4ca=this[_0x35fc('0xb')];if(_0xd8a4ca instanceof Array){_0xd8a4ca=_0xd8a4ca[_0x35fc('0x24')](function(_0x37b435){_0x37b435[_0x35fc('0x1c')]=_0x37b435[_0x35fc('0x1c')]['toString']();_0x37b435['consequence']=_0x37b435[_0x35fc('0x25')]['toString']();return _0x37b435;});}else if(!_[_0x35fc('0x4')](_0xd8a4ca)){_0xd8a4ca[_0x35fc('0x1c')]=_0xd8a4ca[_0x35fc('0x1c')][_0x35fc('0x26')]();_0xd8a4ca[_0x35fc('0x25')]=_0xd8a4ca[_0x35fc('0x25')]['toString']();}return _0xd8a4ca;};RuleEngine[_0x35fc('0x8')][_0x35fc('0x27')]=function(_0x46b9ef){this[_0x35fc('0x3')]();if(_[_0x35fc('0x28')](_0x46b9ef)){_0x46b9ef=JSON[_0x35fc('0x29')](_0x46b9ef);}if(_0x46b9ef instanceof Array){_0x46b9ef=_0x46b9ef['map'](function(_0x2483be){_0x2483be[_0x35fc('0x1c')]=eval('('+_0x2483be[_0x35fc('0x1c')]+')');_0x2483be['consequence']=eval('('+_0x2483be[_0x35fc('0x25')]+')');return _0x2483be;});}else if(_0x46b9ef!==null&&typeof _0x46b9ef=='object'){_0x46b9ef[_0x35fc('0x1c')]=eval('('+_0x46b9ef[_0x35fc('0x1c')]+')');_0x46b9ef[_0x35fc('0x25')]=eval('('+_0x46b9ef[_0x35fc('0x25')]+')');}this['register'](_0x46b9ef);};module['exports']=RuleEngine;
\ No newline at end of file
index 856a86f..02b54fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59cc=['then','error','message','result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request'];(function(_0x1c064e,_0xc334a1){var _0x468ab9=function(_0x59d5d0){while(--_0x59d5d0){_0x1c064e['push'](_0x1c064e['shift']());}};_0x468ab9(++_0xc334a1);}(_0x59cc,0xd3));var _0xc59c=function(_0x2ccc86,_0x58ac8a){_0x2ccc86=_0x2ccc86-0x0;var _0x52b217=_0x59cc[_0x2ccc86];return _0x52b217;};'use strict';var BPromise=require(_0xc59c('0x0'));var jayson=require(_0xc59c('0x1'));var client=jayson[_0xc59c('0x2')][_0xc59c('0x3')]({'port':0x232b});function request(_0x2c4f90,_0x713a3){return new BPromise(function(_0x3e6938,_0x49c7c0){return client[_0xc59c('0x4')](_0x2c4f90,_0x713a3)[_0xc59c('0x5')](function(_0xd9807d){if(_0xd9807d[_0xc59c('0x6')]){return _0x49c7c0(_0xd9807d[_0xc59c('0x6')][_0xc59c('0x7')]);}else{return _0x3e6938(_0xd9807d[_0xc59c('0x8')]);}})[_0xc59c('0x9')](function(_0x3d9d37){return _0x49c7c0(_0x3d9d37);});});}exports[_0xc59c('0xa')]=function(_0x180f5c,_0x4331a5){return request(_0xc59c('0xb'),{'account':_0x180f5c,'message':_0x4331a5});};
\ No newline at end of file
+var _0x4fff=['then','error','message','result','catch','sendMailMessage','jayson/promise','client','request'];(function(_0x4a0371,_0x66cdac){var _0x1fa549=function(_0x8c41f0){while(--_0x8c41f0){_0x4a0371['push'](_0x4a0371['shift']());}};_0x1fa549(++_0x66cdac);}(_0x4fff,0xf9));var _0xf4ff=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4fff[_0x3bf83f];return _0x22c4a9;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xf4ff('0x0'));var client=jayson[_0xf4ff('0x1')]['http']({'port':0x232b});function request(_0x41d038,_0x3ad12c){return new BPromise(function(_0x3d2f27,_0x406f02){return client[_0xf4ff('0x2')](_0x41d038,_0x3ad12c)[_0xf4ff('0x3')](function(_0x282fd3){if(_0x282fd3[_0xf4ff('0x4')]){return _0x406f02(_0x282fd3[_0xf4ff('0x4')][_0xf4ff('0x5')]);}else{return _0x3d2f27(_0x282fd3[_0xf4ff('0x6')]);}})[_0xf4ff('0x7')](function(_0x295f8e){return _0x406f02(_0x295f8e);});});}exports[_0xf4ff('0x8')]=function(_0x3350f1,_0x30f5f2){return request('SendMail',{'account':_0x3350f1,'message':_0x30f5f2});};
\ No newline at end of file
index e5d2141..424e618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6741=['faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','working','idle','updateRealtime','mail','chat','fax','sms','whatsapp','length','Status','StatusTime','toNumber','format','chatCurrentCapacity','mailCurrentCapacity','smsStatusTime','stringify','emit','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','faxStatus','faxStatusTime'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x6741,0x1d6));var _0x1674=function(_0x2410cf,_0x21ec58){_0x2410cf=_0x2410cf-0x0;var _0x7f1541=_0x6741[_0x2410cf];return _0x7f1541;};'use strict';var _=require(_0x1674('0x0'));var moment=require(_0x1674('0x1'));var md5=require(_0x1674('0x2'));var Redis=require(_0x1674('0x3'));var config=require(_0x1674('0x4'));config[_0x1674('0x5')]=_[_0x1674('0x6')](config[_0x1674('0x5')],{'host':_0x1674('0x7'),'port':0x18eb});var io=require(_0x1674('0x8'))(new Redis(config[_0x1674('0x5')]));function Agent(_0x345144){this['id']=_0x345144['id']||0x0;this[_0x1674('0x9')]=_0x345144[_0x1674('0x9')]||'';this[_0x1674('0xa')]=_0x345144[_0x1674('0xa')]||!![];this[_0x1674('0xb')]=_0x345144['voicePause']||![];this[_0x1674('0xc')]=_0x345144[_0x1674('0xc')]||![];this[_0x1674('0xd')]=_0x345144[_0x1674('0xd')]||![];this['faxPause']=_0x345144[_0x1674('0xe')]||![];this[_0x1674('0xf')]=_0x345144[_0x1674('0xf')]||![];this[_0x1674('0x10')]=_0x345144[_0x1674('0x10')]||![];this[_0x1674('0x11')]='unknown';this[_0x1674('0x12')]=0x0;this[_0x1674('0x13')]=_0x345144['chatCapacity']||0x0;this['chatCurrentCapacity']=0x0;this[_0x1674('0x14')]=_0x1674('0x15');this[_0x1674('0x16')]=0x0;this[_0x1674('0x17')]=_0x345144[_0x1674('0x17')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x1674('0x18')]=_0x1674('0x15');this[_0x1674('0x19')]=0x0;this['faxCapacity']=_0x345144[_0x1674('0x1a')]||0x0;this[_0x1674('0x1b')]=0x0;this[_0x1674('0x1c')]=_0x1674('0x15');this['smsStatusTime']=0x0;this['smsCapacity']=_0x345144[_0x1674('0x1d')]||0x0;this[_0x1674('0x1e')]=0x0;this[_0x1674('0x1f')]=_0x1674('0x15');this[_0x1674('0x20')]=0x0;this['whatsappCapacity']=_0x345144[_0x1674('0x21')]||0x0;this[_0x1674('0x22')]=0x0;this[_0x1674('0x23')]='unknown';this['openchannelStatusTime']=0x0;this[_0x1674('0x24')]=_0x345144[_0x1674('0x24')]||0x0;this['openchannelCurrentCapacity']=0x0;this['busy']=![];this[_0x1674('0x25')]=undefined;this[_0x1674('0x2')]='';this['updateRealtime']();}Agent[_0x1674('0x26')][_0x1674('0x27')]=function(_0x28175a){if(this[_0x28175a+_0x1674('0x28')]>0x0){if(this[_0x28175a+_0x1674('0x29')]>0x0&&this[_0x28175a+'CurrentCapacity']>=this[_0x28175a+_0x1674('0x29')]){return'maxcapacity';}else{return _0x1674('0x2a');}}else{return _0x1674('0x2b');}};Agent['prototype'][_0x1674('0x2c')]=function(){var _0x25f4ce=[_0x1674('0x2d'),_0x1674('0x2e'),'openchannel',_0x1674('0x2f'),_0x1674('0x30'),_0x1674('0x31')];for(var _0x1ea6e6=0x0;_0x1ea6e6<_0x25f4ce[_0x1674('0x32')];_0x1ea6e6+=0x1){var _0x5e778b=this['getChannelStatus'](_0x25f4ce[_0x1ea6e6]);if(this[_0x25f4ce[_0x1ea6e6]+_0x1674('0x33')]!==_0x5e778b){this[_0x25f4ce[_0x1ea6e6]+_0x1674('0x34')]=_[_0x1674('0x35')](moment()[_0x1674('0x36')]('x'));}this[_0x25f4ce[_0x1ea6e6]+_0x1674('0x33')]=_0x5e778b;}var _0x19a072={'id':this['id'],'name':this[_0x1674('0x9')],'online':this[_0x1674('0xa')],'voicePause':this[_0x1674('0xb')],'chatPause':this['chatPause'],'mailPause':this[_0x1674('0xd')],'smsPause':this[_0x1674('0xf')],'faxPause':this['faxPause'],'openchannelPause':this[_0x1674('0x10')],'chatStatus':this[_0x1674('0x11')],'chatStatusTime':this[_0x1674('0x12')],'chatCapacity':this[_0x1674('0x13')],'chatCurrentCapacity':this[_0x1674('0x37')],'mailStatus':this[_0x1674('0x14')],'mailStatusTime':this[_0x1674('0x16')],'mailCapacity':this[_0x1674('0x17')],'mailCurrentCapacity':this[_0x1674('0x38')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x1674('0x19')],'faxCapacity':this[_0x1674('0x1a')],'faxCurrentCapacity':this[_0x1674('0x1b')],'smsStatus':this[_0x1674('0x1c')],'smsStatusTime':this[_0x1674('0x39')],'smsCapacity':this[_0x1674('0x1d')],'smsCurrentCapacity':this[_0x1674('0x1e')],'whatsappStatus':this[_0x1674('0x1f')],'whatsappStatusTime':this[_0x1674('0x20')],'whatsappCapacity':this[_0x1674('0x21')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0x1674('0x24')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this['busy'],'busyQueue':this[_0x1674('0x25')]};var _0x2ba1b1=md5(JSON[_0x1674('0x3a')](_0x19a072));if(this[_0x1674('0x2')]!==_0x2ba1b1){this[_0x1674('0x2')]=_0x2ba1b1;io[_0x1674('0x3b')](_0x1674('0x3c'),_0x19a072);}};module[_0x1674('0x3d')]=Agent;
\ No newline at end of file
+var _0x3ebb=['chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelCapacity','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','whatsapp','Status','StatusTime','toNumber','format','faxPause','chatStatus','faxStatus','openchannelStatus','openchannelCurrentCapacity','stringify','lodash','moment','md5','../../../config/environment','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','smsPause','openchannelPause','chatStatusTime'];(function(_0x4a0dc1,_0x20bba8){var _0x2d2282=function(_0x1022a0){while(--_0x1022a0){_0x4a0dc1['push'](_0x4a0dc1['shift']());}};_0x2d2282(++_0x20bba8);}(_0x3ebb,0xcd));var _0xb3eb=function(_0xa9ca12,_0x298b91){_0xa9ca12=_0xa9ca12-0x0;var _0x482119=_0x3ebb[_0xa9ca12];return _0x482119;};'use strict';var _=require(_0xb3eb('0x0'));var moment=require(_0xb3eb('0x1'));var md5=require(_0xb3eb('0x2'));var Redis=require('ioredis');var config=require(_0xb3eb('0x3'));config[_0xb3eb('0x4')]=_['defaults'](config[_0xb3eb('0x4')],{'host':_0xb3eb('0x5'),'port':0x18eb});var io=require(_0xb3eb('0x6'))(new Redis(config[_0xb3eb('0x4')]));function Agent(_0x512baf){this['id']=_0x512baf['id']||0x0;this['name']=_0x512baf[_0xb3eb('0x7')]||'';this[_0xb3eb('0x8')]=_0x512baf[_0xb3eb('0x8')]||!![];this['voicePause']=_0x512baf[_0xb3eb('0x9')]||![];this[_0xb3eb('0xa')]=_0x512baf[_0xb3eb('0xa')]||![];this[_0xb3eb('0xb')]=_0x512baf[_0xb3eb('0xb')]||![];this['faxPause']=_0x512baf['faxPause']||![];this[_0xb3eb('0xc')]=_0x512baf['smsPause']||![];this[_0xb3eb('0xd')]=_0x512baf[_0xb3eb('0xd')]||![];this['chatStatus']='unknown';this[_0xb3eb('0xe')]=0x0;this[_0xb3eb('0xf')]=_0x512baf[_0xb3eb('0xf')]||0x0;this[_0xb3eb('0x10')]=0x0;this[_0xb3eb('0x11')]=_0xb3eb('0x12');this[_0xb3eb('0x13')]=0x0;this[_0xb3eb('0x14')]=_0x512baf['mailCapacity']||0x0;this[_0xb3eb('0x15')]=0x0;this['faxStatus']=_0xb3eb('0x12');this[_0xb3eb('0x16')]=0x0;this[_0xb3eb('0x17')]=_0x512baf[_0xb3eb('0x17')]||0x0;this[_0xb3eb('0x18')]=0x0;this[_0xb3eb('0x19')]=_0xb3eb('0x12');this[_0xb3eb('0x1a')]=0x0;this[_0xb3eb('0x1b')]=_0x512baf['smsCapacity']||0x0;this[_0xb3eb('0x1c')]=0x0;this[_0xb3eb('0x1d')]=_0xb3eb('0x12');this[_0xb3eb('0x1e')]=0x0;this['whatsappCapacity']=_0x512baf[_0xb3eb('0x1f')]||0x0;this[_0xb3eb('0x20')]=0x0;this['openchannelStatus']=_0xb3eb('0x12');this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x512baf[_0xb3eb('0x21')]||0x0;this['openchannelCurrentCapacity']=0x0;this['busy']=![];this[_0xb3eb('0x22')]=undefined;this[_0xb3eb('0x2')]='';this[_0xb3eb('0x23')]();}Agent[_0xb3eb('0x24')][_0xb3eb('0x25')]=function(_0x11977f){if(this[_0x11977f+_0xb3eb('0x26')]>0x0){if(this[_0x11977f+'Capacity']>0x0&&this[_0x11977f+_0xb3eb('0x26')]>=this[_0x11977f+_0xb3eb('0x27')]){return _0xb3eb('0x28');}else{return _0xb3eb('0x29');}}else{return _0xb3eb('0x2a');}};Agent[_0xb3eb('0x24')][_0xb3eb('0x23')]=function(){var _0x5b3fc1=[_0xb3eb('0x2b'),'chat','openchannel','fax','sms',_0xb3eb('0x2c')];for(var _0x5cb0bf=0x0;_0x5cb0bf<_0x5b3fc1['length'];_0x5cb0bf+=0x1){var _0x76ab1d=this['getChannelStatus'](_0x5b3fc1[_0x5cb0bf]);if(this[_0x5b3fc1[_0x5cb0bf]+_0xb3eb('0x2d')]!==_0x76ab1d){this[_0x5b3fc1[_0x5cb0bf]+_0xb3eb('0x2e')]=_[_0xb3eb('0x2f')](moment()[_0xb3eb('0x30')]('x'));}this[_0x5b3fc1[_0x5cb0bf]+_0xb3eb('0x2d')]=_0x76ab1d;}var _0x176f1f={'id':this['id'],'name':this[_0xb3eb('0x7')],'online':this[_0xb3eb('0x8')],'voicePause':this[_0xb3eb('0x9')],'chatPause':this[_0xb3eb('0xa')],'mailPause':this[_0xb3eb('0xb')],'smsPause':this[_0xb3eb('0xc')],'faxPause':this[_0xb3eb('0x31')],'openchannelPause':this[_0xb3eb('0xd')],'chatStatus':this[_0xb3eb('0x32')],'chatStatusTime':this[_0xb3eb('0xe')],'chatCapacity':this[_0xb3eb('0xf')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0xb3eb('0x11')],'mailStatusTime':this[_0xb3eb('0x13')],'mailCapacity':this[_0xb3eb('0x14')],'mailCurrentCapacity':this[_0xb3eb('0x15')],'faxStatus':this[_0xb3eb('0x33')],'faxStatusTime':this[_0xb3eb('0x16')],'faxCapacity':this[_0xb3eb('0x17')],'faxCurrentCapacity':this[_0xb3eb('0x18')],'smsStatus':this[_0xb3eb('0x19')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0xb3eb('0x1b')],'smsCurrentCapacity':this[_0xb3eb('0x1c')],'whatsappStatus':this[_0xb3eb('0x1d')],'whatsappStatusTime':this[_0xb3eb('0x1e')],'whatsappCapacity':this[_0xb3eb('0x1f')],'whatsappCurrentCapacity':this[_0xb3eb('0x20')],'openchannelStatus':this[_0xb3eb('0x34')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0xb3eb('0x21')],'openchannelCurrentCapacity':this[_0xb3eb('0x35')],'busy':this['busy'],'busyQueue':this[_0xb3eb('0x22')]};var _0x2f5129=md5(JSON[_0xb3eb('0x36')](_0x176f1f));if(this[_0xb3eb('0x2')]!==_0x2f5129){this[_0xb3eb('0x2')]=_0x2f5129;io['emit']('user:save',_0x176f1f);}};module['exports']=Agent;
\ No newline at end of file
index b459251..cd75f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda94=['loggedIn','paused','online','chatPause','available','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map'];(function(_0x4be9c7,_0x1cad22){var _0x496f15=function(_0x4b9cbd){while(--_0x4b9cbd){_0x4be9c7['push'](_0x4be9c7['shift']());}};_0x496f15(++_0x1cad22);}(_0xda94,0x1ae));var _0x4da9=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0xda94[_0x101e7b];return _0x4995c0;};'use strict';var _=require(_0x4da9('0x0'));var md5=require(_0x4da9('0x1'));var util=require(_0x4da9('0x2'));var Redis=require(_0x4da9('0x3'));var config=require(_0x4da9('0x4'));config[_0x4da9('0x5')]=_[_0x4da9('0x6')](config['redis'],{'host':_0x4da9('0x7'),'port':0x18eb});var io=require(_0x4da9('0x8'))(new Redis(config['redis']));function ChatQueue(_0x5c8838){this['id']=_0x5c8838['id']||0x0;this[_0x4da9('0x9')]=_0x5c8838[_0x4da9('0x9')]||'';this[_0x4da9('0xa')]=_0x5c8838[_0x4da9('0xa')]||0xa;this['strategy']=_0x5c8838[_0x4da9('0xb')]||'beepall';this[_0x4da9('0xc')]=_0x5c8838[_0x4da9('0xc')];this[_0x4da9('0xd')]={};this[_0x4da9('0xe')]=0x0;this['md5']='';this[_0x4da9('0xf')]();this[_0x4da9('0x10')]();}ChatQueue[_0x4da9('0x11')][_0x4da9('0xf')]=function(){var _0x2c2a5b=this['mapAgentsId'][_0x4da9('0x12')];this[_0x4da9('0xd')]=_[_0x4da9('0x13')](this[_0x4da9('0xc')],'id');this['mapAgentsId'][_0x4da9('0x12')]=_0x2c2a5b;};ChatQueue[_0x4da9('0x11')][_0x4da9('0x10')]=function(){this[_0x4da9('0x14')]=0x0;this[_0x4da9('0x15')]=0x0;for(var _0x4737a2=0x0;_0x4737a2<this['Agents']['length'];_0x4737a2+=0x1){if(this['Agents'][_0x4737a2][_0x4da9('0x16')]){this[_0x4da9('0x14')]+=0x1;}if(this[_0x4da9('0xc')][_0x4737a2][_0x4da9('0x17')]){this[_0x4da9('0x15')]+=0x1;}}this['available']=this['loggedIn']-this[_0x4da9('0x15')];this['available']=this[_0x4da9('0x18')]>=0x0?this[_0x4da9('0x18')]:0x0;var _0x28147d={'id':this['id'],'available':this[_0x4da9('0x18')],'loggedIn':this[_0x4da9('0x14')],'name':this['name'],'paused':this[_0x4da9('0x15')],'waiting':this[_0x4da9('0xe')]};var _0x4be2e7=md5(JSON['stringify'](_0x28147d));if(this[_0x4da9('0x1')]!==_0x4be2e7){this[_0x4da9('0x1')]=_0x4be2e7;io['to'](util[_0x4da9('0x19')](_0x4da9('0x1a'),_0x28147d['name']))[_0x4da9('0x1b')](_0x4da9('0x1c'),_0x28147d);}};module[_0x4da9('0x1d')]=ChatQueue;
\ No newline at end of file
+var _0xfcb9=['waiting','updateRealtime','prototype','updateRouting','loggedIn','paused','length','online','available','stringify','format','chat:queue:%s','chat_queue:save','md5','../../../config/environment','redis','defaults','socket.io-emitter','name','strategy','beepall','Agents','mapAgentsId'];(function(_0x3cc05d,_0x4b8f88){var _0x28b736=function(_0x369b0e){while(--_0x369b0e){_0x3cc05d['push'](_0x3cc05d['shift']());}};_0x28b736(++_0x4b8f88);}(_0xfcb9,0x10a));var _0x9fcb=function(_0x5446aa,_0x2fc8ec){_0x5446aa=_0x5446aa-0x0;var _0x418bb1=_0xfcb9[_0x5446aa];return _0x418bb1;};'use strict';var _=require('lodash');var md5=require(_0x9fcb('0x0'));var util=require('util');var Redis=require('ioredis');var config=require(_0x9fcb('0x1'));config[_0x9fcb('0x2')]=_[_0x9fcb('0x3')](config[_0x9fcb('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0x9fcb('0x4'))(new Redis(config[_0x9fcb('0x2')]));function ChatQueue(_0x26b0a1){this['id']=_0x26b0a1['id']||0x0;this['name']=_0x26b0a1[_0x9fcb('0x5')]||'';this['timeout']=_0x26b0a1['timeout']||0xa;this['strategy']=_0x26b0a1[_0x9fcb('0x6')]||_0x9fcb('0x7');this[_0x9fcb('0x8')]=_0x26b0a1[_0x9fcb('0x8')];this[_0x9fcb('0x9')]={};this[_0x9fcb('0xa')]=0x0;this['md5']='';this['updateRouting']();this[_0x9fcb('0xb')]();}ChatQueue[_0x9fcb('0xc')][_0x9fcb('0xd')]=function(){var _0xe2bda0=this['mapAgentsId']['_rr'];this['mapAgentsId']=_['map'](this[_0x9fcb('0x8')],'id');this['mapAgentsId']['_rr']=_0xe2bda0;};ChatQueue[_0x9fcb('0xc')][_0x9fcb('0xb')]=function(){this[_0x9fcb('0xe')]=0x0;this[_0x9fcb('0xf')]=0x0;for(var _0x3512c2=0x0;_0x3512c2<this['Agents'][_0x9fcb('0x10')];_0x3512c2+=0x1){if(this['Agents'][_0x3512c2][_0x9fcb('0x11')]){this[_0x9fcb('0xe')]+=0x1;}if(this[_0x9fcb('0x8')][_0x3512c2]['chatPause']){this[_0x9fcb('0xf')]+=0x1;}}this[_0x9fcb('0x12')]=this['loggedIn']-this[_0x9fcb('0xf')];this[_0x9fcb('0x12')]=this['available']>=0x0?this[_0x9fcb('0x12')]:0x0;var _0x28d94c={'id':this['id'],'available':this[_0x9fcb('0x12')],'loggedIn':this[_0x9fcb('0xe')],'name':this[_0x9fcb('0x5')],'paused':this['paused'],'waiting':this[_0x9fcb('0xa')]};var _0x55aefc=md5(JSON[_0x9fcb('0x13')](_0x28d94c));if(this[_0x9fcb('0x0')]!==_0x55aefc){this[_0x9fcb('0x0')]=_0x55aefc;io['to'](util[_0x9fcb('0x14')](_0x9fcb('0x15'),_0x28d94c[_0x9fcb('0x5')]))['emit'](_0x9fcb('0x16'),_0x28d94c);}};module['exports']=ChatQueue;
\ No newline at end of file
index b306fa9..989003a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ca=['updateRealtime','loggedIn','paused','length','online','faxPause','available','waiting','stringify','format','fax:queue:%s','fax_queue:save','exports','lodash','md5','../../../config/environment','redis','defaults','name','timeout','strategy','beepall','Agents','mapAgentsId','prototype','updateRouting','_rr','map'];(function(_0x4390f7,_0x38b36f){var _0x322888=function(_0x384763){while(--_0x384763){_0x4390f7['push'](_0x4390f7['shift']());}};_0x322888(++_0x38b36f);}(_0x11ca,0xed));var _0xa11c=function(_0x57dffc,_0x536a41){_0x57dffc=_0x57dffc-0x0;var _0x2410d1=_0x11ca[_0x57dffc];return _0x2410d1;};'use strict';var _=require(_0xa11c('0x0'));var md5=require(_0xa11c('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0xa11c('0x2'));config[_0xa11c('0x3')]=_[_0xa11c('0x4')](config[_0xa11c('0x3')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa11c('0x3')]));function FaxQueue(_0x5980a3){this['id']=_0x5980a3['id']||0x0;this[_0xa11c('0x5')]=_0x5980a3[_0xa11c('0x5')]||'';this['timeout']=_0x5980a3[_0xa11c('0x6')]||0xa;this[_0xa11c('0x7')]=_0x5980a3[_0xa11c('0x7')]||_0xa11c('0x8');this[_0xa11c('0x9')]=_0x5980a3['Agents'];this[_0xa11c('0xa')]={};this['waiting']=0x0;this[_0xa11c('0x1')]='';this['updateRouting']();this['updateRealtime']();}FaxQueue[_0xa11c('0xb')][_0xa11c('0xc')]=function(){var _0x1294ec=this[_0xa11c('0xa')][_0xa11c('0xd')];this[_0xa11c('0xa')]=_[_0xa11c('0xe')](this['Agents'],'id');this['mapAgentsId'][_0xa11c('0xd')]=_0x1294ec;};FaxQueue[_0xa11c('0xb')][_0xa11c('0xf')]=function(){this[_0xa11c('0x10')]=0x0;this[_0xa11c('0x11')]=0x0;for(var _0x59c56d=0x0;_0x59c56d<this[_0xa11c('0x9')][_0xa11c('0x12')];_0x59c56d+=0x1){if(this[_0xa11c('0x9')][_0x59c56d][_0xa11c('0x13')]){this[_0xa11c('0x10')]+=0x1;}if(this['Agents'][_0x59c56d][_0xa11c('0x14')]){this[_0xa11c('0x11')]+=0x1;}}this[_0xa11c('0x15')]=this[_0xa11c('0x10')]-this['paused'];this[_0xa11c('0x15')]=this[_0xa11c('0x15')]>=0x0?this[_0xa11c('0x15')]:0x0;var _0x52999c={'id':this['id'],'available':this[_0xa11c('0x15')],'loggedIn':this[_0xa11c('0x10')],'name':this['name'],'paused':this[_0xa11c('0x11')],'waiting':this[_0xa11c('0x16')]};var _0x1fac65=md5(JSON[_0xa11c('0x17')](_0x52999c));if(this['md5']!==_0x1fac65){this['md5']=_0x1fac65;io['to'](util[_0xa11c('0x18')](_0xa11c('0x19'),_0x52999c['name']))['emit'](_0xa11c('0x1a'),_0x52999c);}};module[_0xa11c('0x1b')]=FaxQueue;
\ No newline at end of file
+var _0xc0b6=['../../../config/environment','redis','defaults','localhost','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','map','prototype','loggedIn','paused','length','faxPause','available','name','stringify','format','fax:queue:%s','emit','exports','lodash','md5','util'];(function(_0x13a82a,_0x47413c){var _0x11d3c7=function(_0x42987a){while(--_0x42987a){_0x13a82a['push'](_0x13a82a['shift']());}};_0x11d3c7(++_0x47413c);}(_0xc0b6,0x13c));var _0x6c0b=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xc0b6[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x6c0b('0x0'));var md5=require(_0x6c0b('0x1'));var util=require(_0x6c0b('0x2'));var Redis=require('ioredis');var config=require(_0x6c0b('0x3'));config[_0x6c0b('0x4')]=_[_0x6c0b('0x5')](config[_0x6c0b('0x4')],{'host':_0x6c0b('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6c0b('0x4')]));function FaxQueue(_0x12495c){this['id']=_0x12495c['id']||0x0;this['name']=_0x12495c['name']||'';this[_0x6c0b('0x7')]=_0x12495c[_0x6c0b('0x7')]||0xa;this[_0x6c0b('0x8')]=_0x12495c[_0x6c0b('0x8')]||_0x6c0b('0x9');this[_0x6c0b('0xa')]=_0x12495c[_0x6c0b('0xa')];this['mapAgentsId']={};this[_0x6c0b('0xb')]=0x0;this[_0x6c0b('0x1')]='';this[_0x6c0b('0xc')]();this[_0x6c0b('0xd')]();}FaxQueue['prototype']['updateRouting']=function(){var _0x443f0c=this[_0x6c0b('0xe')][_0x6c0b('0xf')];this['mapAgentsId']=_[_0x6c0b('0x10')](this['Agents'],'id');this[_0x6c0b('0xe')][_0x6c0b('0xf')]=_0x443f0c;};FaxQueue[_0x6c0b('0x11')][_0x6c0b('0xd')]=function(){this[_0x6c0b('0x12')]=0x0;this[_0x6c0b('0x13')]=0x0;for(var _0x44f2fc=0x0;_0x44f2fc<this[_0x6c0b('0xa')][_0x6c0b('0x14')];_0x44f2fc+=0x1){if(this[_0x6c0b('0xa')][_0x44f2fc]['online']){this['loggedIn']+=0x1;}if(this[_0x6c0b('0xa')][_0x44f2fc][_0x6c0b('0x15')]){this[_0x6c0b('0x13')]+=0x1;}}this[_0x6c0b('0x16')]=this['loggedIn']-this[_0x6c0b('0x13')];this['available']=this[_0x6c0b('0x16')]>=0x0?this[_0x6c0b('0x16')]:0x0;var _0x47815a={'id':this['id'],'available':this[_0x6c0b('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x6c0b('0x17')],'paused':this[_0x6c0b('0x13')],'waiting':this[_0x6c0b('0xb')]};var _0x217ee1=md5(JSON[_0x6c0b('0x18')](_0x47815a));if(this[_0x6c0b('0x1')]!==_0x217ee1){this[_0x6c0b('0x1')]=_0x217ee1;io['to'](util[_0x6c0b('0x19')](_0x6c0b('0x1a'),_0x47815a[_0x6c0b('0x17')]))[_0x6c0b('0x1b')]('fax_queue:save',_0x47815a);}};module[_0x6c0b('0x1c')]=FaxQueue;
\ No newline at end of file
index 417bbef..d3f1e5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74c8=['exports','name','Intervals'];(function(_0x46f286,_0x34c7e4){var _0x3c32ab=function(_0x257bf9){while(--_0x257bf9){_0x46f286['push'](_0x46f286['shift']());}};_0x3c32ab(++_0x34c7e4);}(_0x74c8,0xb8));var _0x874c=function(_0x58db08,_0x741471){_0x58db08=_0x58db08-0x0;var _0x4946db=_0x74c8[_0x58db08];return _0x4946db;};'use strict';function Interval(_0x45440d){this['id']=_0x45440d['id']||0x0;this['name']=_0x45440d[_0x874c('0x0')]||'';this[_0x874c('0x1')]=_0x45440d[_0x874c('0x1')]||{};}module[_0x874c('0x2')]=Interval;
\ No newline at end of file
+var _0x0bf8=['exports','name','Intervals'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0bf8,0x8e));var _0x80bf=function(_0xeff2c3,_0x3a5a82){_0xeff2c3=_0xeff2c3-0x0;var _0x2cade6=_0x0bf8[_0xeff2c3];return _0x2cade6;};'use strict';function Interval(_0x76722a){this['id']=_0x76722a['id']||0x0;this[_0x80bf('0x0')]=_0x76722a[_0x80bf('0x0')]||'';this['Intervals']=_0x76722a[_0x80bf('0x1')]||{};}module[_0x80bf('0x2')]=Interval;
\ No newline at end of file
index 08c541d..0b2a39f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8773=['prototype','_rr','loggedIn','length','mailPause','paused','available','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x8773,0x1c0));var _0x3877=function(_0x114ca7,_0x2ce49d){_0x114ca7=_0x114ca7-0x0;var _0x169af2=_0x8773[_0x114ca7];return _0x169af2;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x3877('0x0'));var Redis=require(_0x3877('0x1'));var config=require(_0x3877('0x2'));config[_0x3877('0x3')]=_[_0x3877('0x4')](config[_0x3877('0x3')],{'host':_0x3877('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3877('0x3')]));function MailQueue(_0x2098bc){this['id']=_0x2098bc['id']||0x0;this[_0x3877('0x6')]=_0x2098bc[_0x3877('0x6')]||'';this[_0x3877('0x7')]=_0x2098bc[_0x3877('0x7')]||0xa;this[_0x3877('0x8')]=_0x2098bc[_0x3877('0x8')]||_0x3877('0x9');this[_0x3877('0xa')]=_0x2098bc[_0x3877('0xa')];this[_0x3877('0xb')]={};this[_0x3877('0xc')]=0x0;this[_0x3877('0xd')]='';this[_0x3877('0xe')]();this[_0x3877('0xf')]();}MailQueue[_0x3877('0x10')][_0x3877('0xe')]=function(){var _0x20c8f7=this[_0x3877('0xb')]['_rr'];this[_0x3877('0xb')]=_['map'](this[_0x3877('0xa')],'id');this['mapAgentsId'][_0x3877('0x11')]=_0x20c8f7;};MailQueue[_0x3877('0x10')]['updateRealtime']=function(){this[_0x3877('0x12')]=0x0;this['paused']=0x0;for(var _0x5d97ec=0x0;_0x5d97ec<this[_0x3877('0xa')][_0x3877('0x13')];_0x5d97ec+=0x1){if(this['Agents'][_0x5d97ec]['online']){this['loggedIn']+=0x1;}if(this['Agents'][_0x5d97ec][_0x3877('0x14')]){this[_0x3877('0x15')]+=0x1;}}this['available']=this[_0x3877('0x12')]-this[_0x3877('0x15')];this[_0x3877('0x16')]=this[_0x3877('0x16')]>=0x0?this[_0x3877('0x16')]:0x0;var _0x1f705d={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0x3877('0x6')],'paused':this[_0x3877('0x15')],'waiting':this[_0x3877('0xc')]};var _0x3a230c=md5(JSON[_0x3877('0x17')](_0x1f705d));if(this[_0x3877('0xd')]!==_0x3a230c){this[_0x3877('0xd')]=_0x3a230c;io['to'](util[_0x3877('0x18')](_0x3877('0x19'),_0x1f705d[_0x3877('0x6')]))[_0x3877('0x1a')](_0x3877('0x1b'),_0x1f705d);}};module[_0x3877('0x1c')]=MailQueue;
\ No newline at end of file
+var _0x4fc1=['socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','_rr','map','prototype','updateRealtime','loggedIn','paused','length','online','mailPause','available','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults'];(function(_0x170554,_0x30e422){var _0x206ece=function(_0xd6138d){while(--_0xd6138d){_0x170554['push'](_0x170554['shift']());}};_0x206ece(++_0x30e422);}(_0x4fc1,0x143));var _0x14fc=function(_0x43e6bd,_0x271d07){_0x43e6bd=_0x43e6bd-0x0;var _0x39aeda=_0x4fc1[_0x43e6bd];return _0x39aeda;};'use strict';var _=require(_0x14fc('0x0'));var md5=require(_0x14fc('0x1'));var util=require(_0x14fc('0x2'));var Redis=require(_0x14fc('0x3'));var config=require(_0x14fc('0x4'));config[_0x14fc('0x5')]=_[_0x14fc('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x14fc('0x7'))(new Redis(config[_0x14fc('0x5')]));function MailQueue(_0x22fd09){this['id']=_0x22fd09['id']||0x0;this[_0x14fc('0x8')]=_0x22fd09[_0x14fc('0x8')]||'';this['timeout']=_0x22fd09[_0x14fc('0x9')]||0xa;this[_0x14fc('0xa')]=_0x22fd09[_0x14fc('0xa')]||'beepall';this[_0x14fc('0xb')]=_0x22fd09[_0x14fc('0xb')];this[_0x14fc('0xc')]={};this[_0x14fc('0xd')]=0x0;this[_0x14fc('0x1')]='';this[_0x14fc('0xe')]();this['updateRealtime']();}MailQueue['prototype'][_0x14fc('0xe')]=function(){var _0x1462f3=this['mapAgentsId'][_0x14fc('0xf')];this['mapAgentsId']=_[_0x14fc('0x10')](this['Agents'],'id');this['mapAgentsId'][_0x14fc('0xf')]=_0x1462f3;};MailQueue[_0x14fc('0x11')][_0x14fc('0x12')]=function(){this[_0x14fc('0x13')]=0x0;this[_0x14fc('0x14')]=0x0;for(var _0x11ff5b=0x0;_0x11ff5b<this['Agents'][_0x14fc('0x15')];_0x11ff5b+=0x1){if(this[_0x14fc('0xb')][_0x11ff5b][_0x14fc('0x16')]){this['loggedIn']+=0x1;}if(this[_0x14fc('0xb')][_0x11ff5b][_0x14fc('0x17')]){this[_0x14fc('0x14')]+=0x1;}}this[_0x14fc('0x18')]=this[_0x14fc('0x13')]-this[_0x14fc('0x14')];this['available']=this[_0x14fc('0x18')]>=0x0?this['available']:0x0;var _0x315a88={'id':this['id'],'available':this[_0x14fc('0x18')],'loggedIn':this[_0x14fc('0x13')],'name':this[_0x14fc('0x8')],'paused':this[_0x14fc('0x14')],'waiting':this[_0x14fc('0xd')]};var _0x4a4b3e=md5(JSON['stringify'](_0x315a88));if(this[_0x14fc('0x1')]!==_0x4a4b3e){this[_0x14fc('0x1')]=_0x4a4b3e;io['to'](util[_0x14fc('0x19')](_0x14fc('0x1a'),_0x315a88[_0x14fc('0x8')]))[_0x14fc('0x1b')](_0x14fc('0x1c'),_0x315a88);}};module[_0x14fc('0x1d')]=MailQueue;
\ No newline at end of file
index f86413d..6b04a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0x1261,0x144));var _0x1126=function(_0x547fcb,_0x8fda67){_0x547fcb=_0x547fcb-0x0;var _0x275d17=_0x1261[_0x547fcb];return _0x275d17;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x4b91c4,_0x23f35f){var _0x25cb80=function(_0x48e283){while(--_0x48e283){_0x4b91c4['push'](_0x4b91c4['shift']());}};_0x25cb80(++_0x23f35f);}(_0x1261,0x144));var _0x1126=function(_0x4d0be7,_0xe3a0d0){_0x4d0be7=_0x4d0be7-0x0;var _0x2a4910=_0x1261[_0x4d0be7];return _0x2a4910;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 8b6cff4..196aa8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x447b=['length','online','smsPause','available','loggedIn','waiting','stringify','format','sms:queue:%s','emit','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','paused'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x447b,0xe4));var _0xb447=function(_0x38b277,_0x3fd172){_0x38b277=_0x38b277-0x0;var _0x448ece=_0x447b[_0x38b277];return _0x448ece;};'use strict';var _=require(_0xb447('0x0'));var md5=require(_0xb447('0x1'));var util=require('util');var Redis=require(_0xb447('0x2'));var config=require(_0xb447('0x3'));config[_0xb447('0x4')]=_[_0xb447('0x5')](config[_0xb447('0x4')],{'host':_0xb447('0x6'),'port':0x18eb});var io=require(_0xb447('0x7'))(new Redis(config[_0xb447('0x4')]));function SmsQueue(_0x7b0a81){this['id']=_0x7b0a81['id']||0x0;this[_0xb447('0x8')]=_0x7b0a81['name']||'';this['timeout']=_0x7b0a81[_0xb447('0x9')]||0xa;this['strategy']=_0x7b0a81[_0xb447('0xa')]||_0xb447('0xb');this[_0xb447('0xc')]=_0x7b0a81[_0xb447('0xc')];this[_0xb447('0xd')]={};this['waiting']=0x0;this[_0xb447('0x1')]='';this[_0xb447('0xe')]();this[_0xb447('0xf')]();}SmsQueue[_0xb447('0x10')]['updateRouting']=function(){var _0xf02e17=this[_0xb447('0xd')][_0xb447('0x11')];this[_0xb447('0xd')]=_[_0xb447('0x12')](this[_0xb447('0xc')],'id');this[_0xb447('0xd')][_0xb447('0x11')]=_0xf02e17;};SmsQueue[_0xb447('0x10')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0xb447('0x13')]=0x0;for(var _0x56b103=0x0;_0x56b103<this['Agents'][_0xb447('0x14')];_0x56b103+=0x1){if(this[_0xb447('0xc')][_0x56b103][_0xb447('0x15')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x56b103][_0xb447('0x16')]){this['paused']+=0x1;}}this[_0xb447('0x17')]=this['loggedIn']-this[_0xb447('0x13')];this[_0xb447('0x17')]=this[_0xb447('0x17')]>=0x0?this[_0xb447('0x17')]:0x0;var _0x1552bd={'id':this['id'],'available':this[_0xb447('0x17')],'loggedIn':this[_0xb447('0x18')],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb447('0x19')]};var _0x1fcd14=md5(JSON[_0xb447('0x1a')](_0x1552bd));if(this['md5']!==_0x1fcd14){this[_0xb447('0x1')]=_0x1fcd14;io['to'](util[_0xb447('0x1b')](_0xb447('0x1c'),_0x1552bd[_0xb447('0x8')]))[_0xb447('0x1d')]('sms_queue:save',_0x1552bd);}};module[_0xb447('0x1e')]=SmsQueue;
\ No newline at end of file
+var _0xed95=['stringify','emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','loggedIn','paused','length','available','name'];(function(_0x12e448,_0x4ed0e5){var _0x2293c7=function(_0x311a8c){while(--_0x311a8c){_0x12e448['push'](_0x12e448['shift']());}};_0x2293c7(++_0x4ed0e5);}(_0xed95,0xb9));var _0x5ed9=function(_0x11878e,_0x1bc772){_0x11878e=_0x11878e-0x0;var _0x3f240b=_0xed95[_0x11878e];return _0x3f240b;};'use strict';var _=require(_0x5ed9('0x0'));var md5=require(_0x5ed9('0x1'));var util=require(_0x5ed9('0x2'));var Redis=require(_0x5ed9('0x3'));var config=require(_0x5ed9('0x4'));config[_0x5ed9('0x5')]=_[_0x5ed9('0x6')](config[_0x5ed9('0x5')],{'host':_0x5ed9('0x7'),'port':0x18eb});var io=require(_0x5ed9('0x8'))(new Redis(config[_0x5ed9('0x5')]));function SmsQueue(_0x15b734){this['id']=_0x15b734['id']||0x0;this['name']=_0x15b734['name']||'';this[_0x5ed9('0x9')]=_0x15b734[_0x5ed9('0x9')]||0xa;this[_0x5ed9('0xa')]=_0x15b734[_0x5ed9('0xa')]||_0x5ed9('0xb');this[_0x5ed9('0xc')]=_0x15b734['Agents'];this['mapAgentsId']={};this[_0x5ed9('0xd')]=0x0;this[_0x5ed9('0x1')]='';this[_0x5ed9('0xe')]();this[_0x5ed9('0xf')]();}SmsQueue['prototype']['updateRouting']=function(){var _0x28e087=this[_0x5ed9('0x10')][_0x5ed9('0x11')];this[_0x5ed9('0x10')]=_['map'](this[_0x5ed9('0xc')],'id');this[_0x5ed9('0x10')][_0x5ed9('0x11')]=_0x28e087;};SmsQueue['prototype']['updateRealtime']=function(){this[_0x5ed9('0x12')]=0x0;this[_0x5ed9('0x13')]=0x0;for(var _0x5e952c=0x0;_0x5e952c<this[_0x5ed9('0xc')][_0x5ed9('0x14')];_0x5e952c+=0x1){if(this['Agents'][_0x5e952c]['online']){this[_0x5ed9('0x12')]+=0x1;}if(this[_0x5ed9('0xc')][_0x5e952c]['smsPause']){this[_0x5ed9('0x13')]+=0x1;}}this[_0x5ed9('0x15')]=this['loggedIn']-this[_0x5ed9('0x13')];this[_0x5ed9('0x15')]=this['available']>=0x0?this['available']:0x0;var _0x5a3ac1={'id':this['id'],'available':this['available'],'loggedIn':this[_0x5ed9('0x12')],'name':this[_0x5ed9('0x16')],'paused':this[_0x5ed9('0x13')],'waiting':this[_0x5ed9('0xd')]};var _0x4b510b=md5(JSON[_0x5ed9('0x17')](_0x5a3ac1));if(this[_0x5ed9('0x1')]!==_0x4b510b){this['md5']=_0x4b510b;io['to'](util['format']('sms:queue:%s',_0x5a3ac1[_0x5ed9('0x16')]))[_0x5ed9('0x18')]('sms_queue:save',_0x5a3ac1);}};module[_0x5ed9('0x19')]=SmsQueue;
\ No newline at end of file
index c332b9e..91417bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ae=['loggedIn','paused','online','whatsappPause','available','name','waiting','stringify','format','whatsapp:queue:%s','whatsapp_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','strategy','beepall','Agents','updateRouting','prototype','mapAgentsId','_rr','map'];(function(_0x1c50dc,_0x25c0f2){var _0x26e273=function(_0x45d40d){while(--_0x45d40d){_0x1c50dc['push'](_0x1c50dc['shift']());}};_0x26e273(++_0x25c0f2);}(_0x04ae,0x167));var _0xe04a=function(_0x32a9ba,_0x457be9){_0x32a9ba=_0x32a9ba-0x0;var _0x154951=_0x04ae[_0x32a9ba];return _0x154951;};'use strict';var _=require(_0xe04a('0x0'));var md5=require(_0xe04a('0x1'));var util=require(_0xe04a('0x2'));var Redis=require(_0xe04a('0x3'));var config=require(_0xe04a('0x4'));config[_0xe04a('0x5')]=_[_0xe04a('0x6')](config[_0xe04a('0x5')],{'host':_0xe04a('0x7'),'port':0x18eb});var io=require(_0xe04a('0x8'))(new Redis(config[_0xe04a('0x5')]));function WhatsappQueue(_0x59ccb4){this['id']=_0x59ccb4['id']||0x0;this['name']=_0x59ccb4['name']||'';this[_0xe04a('0x9')]=_0x59ccb4['timeout']||0xa;this[_0xe04a('0xa')]=_0x59ccb4['strategy']||_0xe04a('0xb');this[_0xe04a('0xc')]=_0x59ccb4['Agents'];this['mapAgentsId']={};this['waiting']=0x0;this[_0xe04a('0x1')]='';this[_0xe04a('0xd')]();this['updateRealtime']();}WhatsappQueue[_0xe04a('0xe')]['updateRouting']=function(){var _0x3d8318=this[_0xe04a('0xf')][_0xe04a('0x10')];this['mapAgentsId']=_[_0xe04a('0x11')](this['Agents'],'id');this[_0xe04a('0xf')]['_rr']=_0x3d8318;};WhatsappQueue[_0xe04a('0xe')]['updateRealtime']=function(){this[_0xe04a('0x12')]=0x0;this[_0xe04a('0x13')]=0x0;for(var _0x557842=0x0;_0x557842<this[_0xe04a('0xc')]['length'];_0x557842+=0x1){if(this[_0xe04a('0xc')][_0x557842][_0xe04a('0x14')]){this[_0xe04a('0x12')]+=0x1;}if(this[_0xe04a('0xc')][_0x557842][_0xe04a('0x15')]){this[_0xe04a('0x13')]+=0x1;}}this[_0xe04a('0x16')]=this[_0xe04a('0x12')]-this[_0xe04a('0x13')];this[_0xe04a('0x16')]=this[_0xe04a('0x16')]>=0x0?this[_0xe04a('0x16')]:0x0;var _0xa8a2de={'id':this['id'],'available':this[_0xe04a('0x16')],'loggedIn':this[_0xe04a('0x12')],'name':this[_0xe04a('0x17')],'paused':this['paused'],'waiting':this[_0xe04a('0x18')]};var _0x54d6e2=md5(JSON[_0xe04a('0x19')](_0xa8a2de));if(this[_0xe04a('0x1')]!==_0x54d6e2){this[_0xe04a('0x1')]=_0x54d6e2;io['to'](util[_0xe04a('0x1a')](_0xe04a('0x1b'),_0xa8a2de[_0xe04a('0x17')]))['emit'](_0xe04a('0x1c'),_0xa8a2de);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x182c=['Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','whatsappPause','available','waiting','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','ioredis','defaults','localhost','redis','name','timeout','strategy'];(function(_0x2959e2,_0x4e5817){var _0x1ea436=function(_0x47e26b){while(--_0x47e26b){_0x2959e2['push'](_0x2959e2['shift']());}};_0x1ea436(++_0x4e5817);}(_0x182c,0x8c));var _0xc182=function(_0x39a71e,_0x128d6c){_0x39a71e=_0x39a71e-0x0;var _0x1d62fb=_0x182c[_0x39a71e];return _0x1d62fb;};'use strict';var _=require(_0xc182('0x0'));var md5=require(_0xc182('0x1'));var util=require(_0xc182('0x2'));var Redis=require(_0xc182('0x3'));var config=require('../../../config/environment');config['redis']=_[_0xc182('0x4')](config['redis'],{'host':_0xc182('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc182('0x6')]));function WhatsappQueue(_0x2963d3){this['id']=_0x2963d3['id']||0x0;this['name']=_0x2963d3[_0xc182('0x7')]||'';this['timeout']=_0x2963d3[_0xc182('0x8')]||0xa;this[_0xc182('0x9')]=_0x2963d3[_0xc182('0x9')]||'beepall';this[_0xc182('0xa')]=_0x2963d3[_0xc182('0xa')];this[_0xc182('0xb')]={};this['waiting']=0x0;this[_0xc182('0x1')]='';this[_0xc182('0xc')]();this[_0xc182('0xd')]();}WhatsappQueue[_0xc182('0xe')][_0xc182('0xc')]=function(){var _0x168581=this[_0xc182('0xb')][_0xc182('0xf')];this['mapAgentsId']=_[_0xc182('0x10')](this[_0xc182('0xa')],'id');this['mapAgentsId'][_0xc182('0xf')]=_0x168581;};WhatsappQueue['prototype'][_0xc182('0xd')]=function(){this[_0xc182('0x11')]=0x0;this[_0xc182('0x12')]=0x0;for(var _0x2761a5=0x0;_0x2761a5<this[_0xc182('0xa')][_0xc182('0x13')];_0x2761a5+=0x1){if(this[_0xc182('0xa')][_0x2761a5][_0xc182('0x14')]){this[_0xc182('0x11')]+=0x1;}if(this[_0xc182('0xa')][_0x2761a5][_0xc182('0x15')]){this[_0xc182('0x12')]+=0x1;}}this[_0xc182('0x16')]=this[_0xc182('0x11')]-this[_0xc182('0x12')];this[_0xc182('0x16')]=this[_0xc182('0x16')]>=0x0?this['available']:0x0;var _0x4f7c96={'id':this['id'],'available':this[_0xc182('0x16')],'loggedIn':this[_0xc182('0x11')],'name':this[_0xc182('0x7')],'paused':this[_0xc182('0x12')],'waiting':this[_0xc182('0x17')]};var _0x294a4c=md5(JSON[_0xc182('0x18')](_0x4f7c96));if(this[_0xc182('0x1')]!==_0x294a4c){this['md5']=_0x294a4c;io['to'](util[_0xc182('0x19')](_0xc182('0x1a'),_0x4f7c96['name']))[_0xc182('0x1b')](_0xc182('0x1c'),_0x4f7c96);}};module[_0xc182('0x1d')]=WhatsappQueue;
\ No newline at end of file
index 33b5c40..2265f31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x34a403,_0xb78489){var _0x2dc53e=function(_0x38e991){while(--_0x38e991){_0x34a403['push'](_0x34a403['shift']());}};_0x2dc53e(++_0xb78489);}(_0xb10b,0x12a));var _0xbb10=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xb10b[_0x88cd7b];return _0x56fcc8;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
index 91ae86e..5ad0d35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf81=['UpdateChatInteraction','updateChatInteraction','addTags','Request','AddTagsToChatInteraction','../client','update'];(function(_0x3a16d4,_0x23ecda){var _0x31ea9c=function(_0x35fea8){while(--_0x35fea8){_0x3a16d4['push'](_0x3a16d4['shift']());}};_0x31ea9c(++_0x23ecda);}(_0xcf81,0x17f));var _0x1cf8=function(_0x297701,_0x5682f9){_0x297701=_0x297701-0x0;var _0x103c69=_0xcf81[_0x297701];return _0x103c69;};'use strict';var client=require(_0x1cf8('0x0'));exports[_0x1cf8('0x1')]=function(_0xc6bc9e,_0x26c648){return client['Request'](_0x1cf8('0x2'),{'body':_0x26c648,'options':{'where':{'id':_0xc6bc9e}},'log':_0x1cf8('0x3')});};exports[_0x1cf8('0x4')]=function(_0x1c40ba,_0xf1ae53){return client[_0x1cf8('0x5')](_0x1cf8('0x6'),{'body':_0xf1ae53,'options':{'where':{'id':_0x1c40ba}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x6df0=['update','Request','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client'];(function(_0x3d3768,_0x37fe74){var _0x2abf4f=function(_0x4d5764){while(--_0x4d5764){_0x3d3768['push'](_0x3d3768['shift']());}};_0x2abf4f(++_0x37fe74);}(_0x6df0,0x92));var _0x06df=function(_0x330723,_0x8de382){_0x330723=_0x330723-0x0;var _0x60c546=_0x6df0[_0x330723];return _0x60c546;};'use strict';var client=require(_0x06df('0x0'));exports[_0x06df('0x1')]=function(_0x5c4726,_0x52628a){return client[_0x06df('0x2')]('UpdateChatInteraction',{'body':_0x52628a,'options':{'where':{'id':_0x5c4726}},'log':_0x06df('0x3')});};exports[_0x06df('0x4')]=function(_0x56a459,_0x10cb79){return client[_0x06df('0x2')](_0x06df('0x5'),{'body':_0x10cb79,'options':{'where':{'id':_0x56a459}},'log':_0x06df('0x6')});};
\ No newline at end of file
index 2529947..f13f57c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ca2=['CreateChatMessage','../client','create'];(function(_0x3bf194,_0x342216){var _0x105954=function(_0x40732d){while(--_0x40732d){_0x3bf194['push'](_0x3bf194['shift']());}};_0x105954(++_0x342216);}(_0x7ca2,0x1ba));var _0x27ca=function(_0x2687a0,_0x55d724){_0x2687a0=_0x2687a0-0x0;var _0x102ec8=_0x7ca2[_0x2687a0];return _0x102ec8;};'use strict';var client=require(_0x27ca('0x0'));exports[_0x27ca('0x1')]=function(_0x172993){return client['Request'](_0x27ca('0x2'),{'body':_0x172993,'log':'createChatMessage'});};
\ No newline at end of file
+var _0x729f=['CreateChatMessage','createChatMessage','create','Request'];(function(_0x402e79,_0x54c19a){var _0x62a5d8=function(_0x3037ea){while(--_0x3037ea){_0x402e79['push'](_0x402e79['shift']());}};_0x62a5d8(++_0x54c19a);}(_0x729f,0x176));var _0xf729=function(_0x841803,_0x306ef9){_0x841803=_0x841803-0x0;var _0x68aaa4=_0x729f[_0x841803];return _0x68aaa4;};'use strict';var client=require('../client');exports[_0xf729('0x0')]=function(_0x1ad2da){return client[_0xf729('0x1')](_0xf729('0x2'),{'body':_0x1ad2da,'log':_0xf729('0x3')});};
\ No newline at end of file
index d71d03c..b86b046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cd6=['User','online','chatPause','../client','getChatQueues','GetChatQueue','name','strategy'];(function(_0x3b3eac,_0x4eaa6c){var _0x58ea85=function(_0x44b86f){while(--_0x44b86f){_0x3b3eac['push'](_0x3b3eac['shift']());}};_0x58ea85(++_0x4eaa6c);}(_0x0cd6,0x113));var _0x60cd=function(_0x4b26b5,_0x4f71fd){_0x4b26b5=_0x4b26b5-0x0;var _0x4dec71=_0x0cd6[_0x4b26b5];return _0x4dec71;};'use strict';var client=require(_0x60cd('0x0'));exports[_0x60cd('0x1')]=function(){return function(){return client['Request'](_0x60cd('0x2'),{'options':{'raw':![],'attributes':['id',_0x60cd('0x3'),'timeout',_0x60cd('0x4')],'include':[{'model':_0x60cd('0x5'),'as':'Agents','attributes':['id','name',_0x60cd('0x6'),_0x60cd('0x7')]}]},'log':_0x60cd('0x1')});};};
\ No newline at end of file
+var _0xae53=['name','strategy','User','Agents','online','getChatQueues','../client','Request','GetChatQueue'];(function(_0x50836f,_0x32c61b){var _0x31704f=function(_0x3ae920){while(--_0x3ae920){_0x50836f['push'](_0x50836f['shift']());}};_0x31704f(++_0x32c61b);}(_0xae53,0x16e));var _0x3ae5=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xae53[_0x27af45];return _0x18df21;};'use strict';var client=require(_0x3ae5('0x0'));exports['getChatQueues']=function(){return function(){return client[_0x3ae5('0x1')](_0x3ae5('0x2'),{'options':{'raw':![],'attributes':['id',_0x3ae5('0x3'),'timeout',_0x3ae5('0x4')],'include':[{'model':_0x3ae5('0x5'),'as':_0x3ae5('0x6'),'attributes':['id',_0x3ae5('0x3'),_0x3ae5('0x7'),'chatPause']}]},'log':_0x3ae5('0x8')});};};
\ No newline at end of file
index fb80b96..0587c53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d5b=['CreateChatQueueReport','update','Request','UpdateChatQueueReport','../client','create'];(function(_0x172b83,_0x3a4946){var _0x3d2f86=function(_0x2e2d12){while(--_0x2e2d12){_0x172b83['push'](_0x172b83['shift']());}};_0x3d2f86(++_0x3a4946);}(_0x1d5b,0x13c));var _0xb1d5=function(_0x50c68c,_0xc67a15){_0x50c68c=_0x50c68c-0x0;var _0x495654=_0x1d5b[_0x50c68c];return _0x495654;};'use strict';var client=require(_0xb1d5('0x0'));exports[_0xb1d5('0x1')]=function(_0x1a1089){return client['Request'](_0xb1d5('0x2'),{'body':_0x1a1089,'log':'CreateChatQueueReport'});};exports[_0xb1d5('0x3')]=function(_0x1a673c,_0xa12a1e){return client[_0xb1d5('0x4')]('UpdateChatQueueReport',{'body':_0xa12a1e,'options':{'where':{'uniqueid':_0x1a673c},'order':[['id','DESC']],'limit':0x1},'log':_0xb1d5('0x5')});};
\ No newline at end of file
+var _0x3fb7=['update','UpdateChatQueueReport','DESC','create','Request','CreateChatQueueReport'];(function(_0xbe47d8,_0x3158f3){var _0x195887=function(_0x1802e3){while(--_0x1802e3){_0xbe47d8['push'](_0xbe47d8['shift']());}};_0x195887(++_0x3158f3);}(_0x3fb7,0x189));var _0x73fb=function(_0x5b58b6,_0x1f777c){_0x5b58b6=_0x5b58b6-0x0;var _0x49821a=_0x3fb7[_0x5b58b6];return _0x49821a;};'use strict';var client=require('../client');exports[_0x73fb('0x0')]=function(_0x58700a){return client[_0x73fb('0x1')](_0x73fb('0x2'),{'body':_0x58700a,'log':'CreateChatQueueReport'});};exports[_0x73fb('0x3')]=function(_0x58f523,_0x309b77){return client[_0x73fb('0x1')](_0x73fb('0x4'),{'body':_0x309b77,'options':{'where':{'uniqueid':_0x58f523},'order':[['id',_0x73fb('0x5')]],'limit':0x1},'log':_0x73fb('0x4')});};
\ No newline at end of file
index a5de18b..6c02c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x5ca5bc,_0x5b8a9d){var _0x26ca86=function(_0x1ad9a6){while(--_0x1ad9a6){_0x5ca5bc['push'](_0x5ca5bc['shift']());}};_0x26ca86(++_0x5b8a9d);}(_0x7a54,0x106));var _0x47a5=function(_0x22cb0d,_0x3f53ac){_0x22cb0d=_0x22cb0d-0x0;var _0x2154a5=_0x7a54[_0x22cb0d];return _0x2154a5;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x2efbd5,_0x33aef8){var _0x2ec8d4=function(_0xf0b7af){while(--_0xf0b7af){_0x2efbd5['push'](_0x2efbd5['shift']());}};_0x2ec8d4(++_0x33aef8);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index 90a12df..348ca88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f15=['CreateFaxMessage','createFaxMessage','create'];(function(_0x16c01a,_0x3f2299){var _0x9c3c4c=function(_0x4c5740){while(--_0x4c5740){_0x16c01a['push'](_0x16c01a['shift']());}};_0x9c3c4c(++_0x3f2299);}(_0x9f15,0x95));var _0x59f1=function(_0x35ead7,_0x453d3a){_0x35ead7=_0x35ead7-0x0;var _0x33b761=_0x9f15[_0x35ead7];return _0x33b761;};'use strict';var client=require('../client');exports[_0x59f1('0x0')]=function(_0xe2c373){return client['Request'](_0x59f1('0x1'),{'body':_0xe2c373,'log':_0x59f1('0x2')});};
\ No newline at end of file
+var _0x46ae=['CreateFaxMessage','createFaxMessage','create'];(function(_0x41d6c5,_0x2d3a76){var _0x4131ba=function(_0xf9fed6){while(--_0xf9fed6){_0x41d6c5['push'](_0x41d6c5['shift']());}};_0x4131ba(++_0x2d3a76);}(_0x46ae,0x140));var _0xe46a=function(_0x498760,_0xc61e1d){_0x498760=_0x498760-0x0;var _0x3dceef=_0x46ae[_0x498760];return _0x3dceef;};'use strict';var client=require('../client');exports[_0xe46a('0x0')]=function(_0x3d6d2a){return client['Request'](_0xe46a('0x1'),{'body':_0x3d6d2a,'log':_0xe46a('0x2')});};
\ No newline at end of file
index 67cd677..61ed6fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe79b=['Request','GetFaxQueue','name','User','online','faxPause','../client','getFaxQueues'];(function(_0x3257a0,_0x3bd371){var _0x2846cb=function(_0x5d6823){while(--_0x5d6823){_0x3257a0['push'](_0x3257a0['shift']());}};_0x2846cb(++_0x3bd371);}(_0xe79b,0x10e));var _0xbe79=function(_0x44c768,_0x552a5e){_0x44c768=_0x44c768-0x0;var _0x55daf5=_0xe79b[_0x44c768];return _0x55daf5;};'use strict';var client=require(_0xbe79('0x0'));exports[_0xbe79('0x1')]=function(){return function(){return client[_0xbe79('0x2')](_0xbe79('0x3'),{'options':{'raw':![],'attributes':['id',_0xbe79('0x4'),'timeout','strategy'],'include':[{'model':_0xbe79('0x5'),'as':'Agents','attributes':['id','name',_0xbe79('0x6'),_0xbe79('0x7')]}]},'log':_0xbe79('0x1')});};};
\ No newline at end of file
+var _0xde0c=['online','../client','getFaxQueues','Request','GetFaxQueue','name','strategy','User','Agents'];(function(_0x1c8c3e,_0x388f9d){var _0x244708=function(_0x3829eb){while(--_0x3829eb){_0x1c8c3e['push'](_0x1c8c3e['shift']());}};_0x244708(++_0x388f9d);}(_0xde0c,0x145));var _0xcde0=function(_0x326e70,_0x501082){_0x326e70=_0x326e70-0x0;var _0x8cc79=_0xde0c[_0x326e70];return _0x8cc79;};'use strict';var client=require(_0xcde0('0x0'));exports[_0xcde0('0x1')]=function(){return function(){return client[_0xcde0('0x2')](_0xcde0('0x3'),{'options':{'raw':![],'attributes':['id',_0xcde0('0x4'),'timeout',_0xcde0('0x5')],'include':[{'model':_0xcde0('0x6'),'as':_0xcde0('0x7'),'attributes':['id',_0xcde0('0x4'),_0xcde0('0x8'),'faxPause']}]},'log':_0xcde0('0x1')});};};
\ No newline at end of file
index d9fedc9..5159e4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f4d=['Request','DESC','../client','CreateFaxQueueReport'];(function(_0x41d89e,_0x4f9f29){var _0x5f3ff5=function(_0x149ba0){while(--_0x149ba0){_0x41d89e['push'](_0x41d89e['shift']());}};_0x5f3ff5(++_0x4f9f29);}(_0x6f4d,0x6e));var _0xd6f4=function(_0x57aed1,_0x34f681){_0x57aed1=_0x57aed1-0x0;var _0x141cd4=_0x6f4d[_0x57aed1];return _0x141cd4;};'use strict';var client=require(_0xd6f4('0x0'));exports['create']=function(_0x214e61){return client['Request'](_0xd6f4('0x1'),{'body':_0x214e61,'log':_0xd6f4('0x1')});};exports['update']=function(_0x591cab,_0xd60aba){return client[_0xd6f4('0x2')]('UpdateFaxQueueReport',{'body':_0xd60aba,'options':{'where':{'uniqueid':_0x591cab},'order':[['id',_0xd6f4('0x3')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0x30cf=['Request','UpdateFaxQueueReport','DESC','../client','CreateFaxQueueReport'];(function(_0x14fcdf,_0x17f76c){var _0x18592c=function(_0xc62e0e){while(--_0xc62e0e){_0x14fcdf['push'](_0x14fcdf['shift']());}};_0x18592c(++_0x17f76c);}(_0x30cf,0xad));var _0xf30c=function(_0x4a1ccd,_0x4e69c6){_0x4a1ccd=_0x4a1ccd-0x0;var _0x4a04f9=_0x30cf[_0x4a1ccd];return _0x4a04f9;};'use strict';var client=require(_0xf30c('0x0'));exports['create']=function(_0x1725af){return client['Request'](_0xf30c('0x1'),{'body':_0x1725af,'log':'CreateFaxQueueReport'});};exports['update']=function(_0x580bc0,_0x430fa7){return client[_0xf30c('0x2')](_0xf30c('0x3'),{'body':_0x430fa7,'options':{'where':{'uniqueid':_0x580bc0},'order':[['id',_0xf30c('0x4')]],'limit':0x1},'log':_0xf30c('0x3')});};
\ No newline at end of file
index 9d9e6a5..e66ef4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe217=['interval','../client','getIntervals','GetInterval','name','Intervals'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0xe217,0xa3));var _0x7e21=function(_0x540de6,_0x594803){_0x540de6=_0x540de6-0x0;var _0x1df335=_0xe217[_0x540de6];return _0x1df335;};'use strict';var client=require(_0x7e21('0x0'));exports[_0x7e21('0x1')]=function(){return function(){return client['Request'](_0x7e21('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x7e21('0x3')],'include':[{'model':'Interval','as':_0x7e21('0x4'),'attributes':['id',_0x7e21('0x3'),_0x7e21('0x5')]}]},'log':_0x7e21('0x1')});};};
\ No newline at end of file
+var _0x49f0=['Intervals','interval','../client','getIntervals','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x49f0,0x174));var _0x049f=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x49f0[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0x049f('0x0'));exports[_0x049f('0x1')]=function(){return function(){return client['Request']('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x049f('0x2')],'include':[{'model':'Interval','as':_0x049f('0x3'),'attributes':['id',_0x049f('0x2'),_0x049f('0x4')]}]},'log':_0x049f('0x1')});};};
\ No newline at end of file
index d928ee4..8bdabfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065e=['UpdateMailInteraction','updateMailInteraction','addTagsToChatInteraction','../client','Request'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x065e,0x1a7));var _0xe065=function(_0x3db5a3,_0x55994c){_0x3db5a3=_0x3db5a3-0x0;var _0x1afffe=_0x065e[_0x3db5a3];return _0x1afffe;};'use strict';var client=require(_0xe065('0x0'));exports['update']=function(_0x549f09,_0x59293c){return client[_0xe065('0x1')](_0xe065('0x2'),{'body':_0x59293c,'options':{'where':{'id':_0x549f09}},'log':_0xe065('0x3')});};exports['addTags']=function(_0x4964fa,_0x4610a3){return client[_0xe065('0x1')]('AddTagsToMailInteraction',{'body':_0x4610a3,'options':{'where':{'id':_0x4964fa}},'log':_0xe065('0x4')});};
\ No newline at end of file
+var _0x160f=['UpdateMailInteraction','updateMailInteraction','addTags','Request','addTagsToChatInteraction','../client','update'];(function(_0x2bdf29,_0x40cab0){var _0x60cb83=function(_0x4bc761){while(--_0x4bc761){_0x2bdf29['push'](_0x2bdf29['shift']());}};_0x60cb83(++_0x40cab0);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xf160('0x0'));exports[_0xf160('0x1')]=function(_0x2d4cde,_0x2966aa){return client['Request'](_0xf160('0x2'),{'body':_0x2966aa,'options':{'where':{'id':_0x2d4cde}},'log':_0xf160('0x3')});};exports[_0xf160('0x4')]=function(_0x3b2d7b,_0x194331){return client[_0xf160('0x5')]('AddTagsToMailInteraction',{'body':_0x194331,'options':{'where':{'id':_0x3b2d7b}},'log':_0xf160('0x6')});};
\ No newline at end of file
index 4c74a33..bf32554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1957=['createMailMessage','../client','Request'];(function(_0x2e18e9,_0x3243e1){var _0x11e541=function(_0x1efe96){while(--_0x1efe96){_0x2e18e9['push'](_0x2e18e9['shift']());}};_0x11e541(++_0x3243e1);}(_0x1957,0x151));var _0x7195=function(_0x1bb0b8,_0x24add2){_0x1bb0b8=_0x1bb0b8-0x0;var _0x22fc67=_0x1957[_0x1bb0b8];return _0x22fc67;};'use strict';var client=require(_0x7195('0x0'));exports['create']=function(_0x4f5d17){return client[_0x7195('0x1')]('CreateMailMessage',{'body':_0x4f5d17,'log':_0x7195('0x2')});};
\ No newline at end of file
+var _0x8cbf=['Request','CreateMailMessage','../client','create'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8cbf,0x122));var _0xf8cb=function(_0x5d3535,_0x51a00d){_0x5d3535=_0x5d3535-0x0;var _0x3235e4=_0x8cbf[_0x5d3535];return _0x3235e4;};'use strict';var client=require(_0xf8cb('0x0'));exports[_0xf8cb('0x1')]=function(_0x2d0718){return client[_0xf8cb('0x2')](_0xf8cb('0x3'),{'body':_0x2d0718,'log':'createMailMessage'});};
\ No newline at end of file
index ee71f00..6c28cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef1c=['Agents','online','mailPause','../client','getMailQueues','name','timeout','strategy','User'];(function(_0x153949,_0x244acf){var _0x1fdc6a=function(_0x49392f){while(--_0x49392f){_0x153949['push'](_0x153949['shift']());}};_0x1fdc6a(++_0x244acf);}(_0xef1c,0x78));var _0xcef1=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xef1c[_0x4b369d];return _0x571a98;};'use strict';var client=require(_0xcef1('0x0'));exports[_0xcef1('0x1')]=function(){return function(){return client['Request']('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0xcef1('0x2'),_0xcef1('0x3'),_0xcef1('0x4')],'include':[{'model':_0xcef1('0x5'),'as':_0xcef1('0x6'),'attributes':['id',_0xcef1('0x2'),_0xcef1('0x7'),_0xcef1('0x8')]}]},'log':_0xcef1('0x1')});};};
\ No newline at end of file
+var _0x8479=['mailPause','../client','getMailQueues','Request','timeout','strategy','User','Agents'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x8479,0x131));var _0x9847=function(_0x33b99c,_0x583dda){_0x33b99c=_0x33b99c-0x0;var _0x3fc604=_0x8479[_0x33b99c];return _0x3fc604;};'use strict';var client=require(_0x9847('0x0'));exports[_0x9847('0x1')]=function(){return function(){return client[_0x9847('0x2')]('GetMailQueue',{'options':{'raw':![],'attributes':['id','name',_0x9847('0x3'),_0x9847('0x4')],'include':[{'model':_0x9847('0x5'),'as':_0x9847('0x6'),'attributes':['id','name','online',_0x9847('0x7')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
index 900bde2..99defaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f6f=['DESC','../client','create','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x5342fd,_0x3f3b42){var _0x2120cc=function(_0x24bd17){while(--_0x24bd17){_0x5342fd['push'](_0x5342fd['shift']());}};_0x2120cc(++_0x3f3b42);}(_0x9f6f,0x1b3));var _0xf9f6=function(_0x4378a4,_0x2e0df9){_0x4378a4=_0x4378a4-0x0;var _0x412bc8=_0x9f6f[_0x4378a4];return _0x412bc8;};'use strict';var client=require(_0xf9f6('0x0'));exports[_0xf9f6('0x1')]=function(_0x8ae7e9){return client[_0xf9f6('0x2')](_0xf9f6('0x3'),{'body':_0x8ae7e9,'log':'CreateMailQueueReport'});};exports[_0xf9f6('0x4')]=function(_0x5c4725,_0xc1bc60){return client['Request'](_0xf9f6('0x5'),{'body':_0xc1bc60,'options':{'where':{'uniqueid':_0x5c4725},'order':[['id',_0xf9f6('0x6')]],'limit':0x1},'log':_0xf9f6('0x5')});};
\ No newline at end of file
+var _0xfd9c=['Request','update','UpdateMailQueueReport','DESC','../client','create'];(function(_0x49dad5,_0x4385fd){var _0x1ca500=function(_0x1d0b0e){while(--_0x1d0b0e){_0x49dad5['push'](_0x49dad5['shift']());}};_0x1ca500(++_0x4385fd);}(_0xfd9c,0x18a));var _0xcfd9=function(_0x1597e2,_0x388d3e){_0x1597e2=_0x1597e2-0x0;var _0x4c8c0a=_0xfd9c[_0x1597e2];return _0x4c8c0a;};'use strict';var client=require(_0xcfd9('0x0'));exports[_0xcfd9('0x1')]=function(_0x505843){return client[_0xcfd9('0x2')]('CreateMailQueueReport',{'body':_0x505843,'log':'CreateMailQueueReport'});};exports[_0xcfd9('0x3')]=function(_0x21323f,_0x10f395){return client['Request'](_0xcfd9('0x4'),{'body':_0x10f395,'options':{'where':{'uniqueid':_0x21323f},'order':[['id',_0xcfd9('0x5')]],'limit':0x1},'log':_0xcfd9('0x4')});};
\ No newline at end of file
index f92bf7c..d584821 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a7f=['AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','UpdateOpenchannelInteraction','updateOpenchannelInteraction','Request'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x3a7f,0xb0));var _0xf3a7=function(_0xae92ac,_0x52280f){_0xae92ac=_0xae92ac-0x0;var _0x26b0fa=_0x3a7f[_0xae92ac];return _0x26b0fa;};'use strict';var client=require(_0xf3a7('0x0'));exports['update']=function(_0x54f25e,_0x33a76b){return client['Request'](_0xf3a7('0x1'),{'body':_0x33a76b,'options':{'where':{'id':_0x54f25e}},'log':_0xf3a7('0x2')});};exports['addTags']=function(_0x4146df,_0x183994){return client[_0xf3a7('0x3')](_0xf3a7('0x4'),{'body':_0x183994,'options':{'where':{'id':_0x4146df}},'log':_0xf3a7('0x5')});};
\ No newline at end of file
+var _0x828a=['Request','UpdateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client'];(function(_0x1c4731,_0x45af67){var _0x16e5a2=function(_0x4031b6){while(--_0x4031b6){_0x1c4731['push'](_0x1c4731['shift']());}};_0x16e5a2(++_0x45af67);}(_0x828a,0xef));var _0xa828=function(_0x28e199,_0x15a15c){_0x28e199=_0x28e199-0x0;var _0x574bd0=_0x828a[_0x28e199];return _0x574bd0;};'use strict';var client=require(_0xa828('0x0'));exports['update']=function(_0xaaca06,_0x51b516){return client[_0xa828('0x1')](_0xa828('0x2'),{'body':_0x51b516,'options':{'where':{'id':_0xaaca06}},'log':'updateOpenchannelInteraction'});};exports[_0xa828('0x3')]=function(_0xde62f4,_0x2cf302){return client['Request'](_0xa828('0x4'),{'body':_0x2cf302,'options':{'where':{'id':_0xde62f4}},'log':_0xa828('0x5')});};
\ No newline at end of file
index 3c88736..5abd3bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f2f=['Request','create'];(function(_0x2fe7b0,_0x39c02b){var _0x456c3d=function(_0x44041e){while(--_0x44041e){_0x2fe7b0['push'](_0x2fe7b0['shift']());}};_0x456c3d(++_0x39c02b);}(_0x6f2f,0x145));var _0xf6f2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x6f2f[_0x3ab51d];return _0x29a04e;};'use strict';var client=require('../client');exports[_0xf6f2('0x0')]=function(_0x44bc5e){return client[_0xf6f2('0x1')]('CreateOpenchannelMessage',{'body':_0x44bc5e,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x3ebd=['CreateOpenchannelMessage','createOpenchannelMessage','../client','create','Request'];(function(_0xa4cb10,_0xc6067b){var _0x10625b=function(_0x1968ba){while(--_0x1968ba){_0xa4cb10['push'](_0xa4cb10['shift']());}};_0x10625b(++_0xc6067b);}(_0x3ebd,0x174));var _0xd3eb=function(_0x114d1f,_0x55548e){_0x114d1f=_0x114d1f-0x0;var _0x5b91d4=_0x3ebd[_0x114d1f];return _0x5b91d4;};'use strict';var client=require(_0xd3eb('0x0'));exports[_0xd3eb('0x1')]=function(_0x2b0bfe){return client[_0xd3eb('0x2')](_0xd3eb('0x3'),{'body':_0x2b0bfe,'log':_0xd3eb('0x4')});};
\ No newline at end of file
index 1568524..1bebeed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c93=['Agents','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','strategy','User'];(function(_0x6c6d17,_0x203165){var _0x425f24=function(_0x3fb7df){while(--_0x3fb7df){_0x6c6d17['push'](_0x6c6d17['shift']());}};_0x425f24(++_0x203165);}(_0x3c93,0x19c));var _0x33c9=function(_0x145b0a,_0x466b3c){_0x145b0a=_0x145b0a-0x0;var _0x33c4c2=_0x3c93[_0x145b0a];return _0x33c4c2;};'use strict';var client=require(_0x33c9('0x0'));exports[_0x33c9('0x1')]=function(){return function(){return client[_0x33c9('0x2')](_0x33c9('0x3'),{'options':{'raw':![],'attributes':['id',_0x33c9('0x4'),_0x33c9('0x5'),_0x33c9('0x6')],'include':[{'model':_0x33c9('0x7'),'as':_0x33c9('0x8'),'attributes':['id','name','online',_0x33c9('0x9')]}]},'log':_0x33c9('0x1')});};};
\ No newline at end of file
+var _0xe4ae=['User','online','../client','getOpenchannelQueues','GetOpenchannelQueue','name','timeout','strategy'];(function(_0x27dac4,_0x31d0c1){var _0x18700d=function(_0x1db241){while(--_0x1db241){_0x27dac4['push'](_0x27dac4['shift']());}};_0x18700d(++_0x31d0c1);}(_0xe4ae,0x182));var _0xee4a=function(_0x15b5eb,_0x40704a){_0x15b5eb=_0x15b5eb-0x0;var _0x52ad1=_0xe4ae[_0x15b5eb];return _0x52ad1;};'use strict';var client=require(_0xee4a('0x0'));exports[_0xee4a('0x1')]=function(){return function(){return client['Request'](_0xee4a('0x2'),{'options':{'raw':![],'attributes':['id',_0xee4a('0x3'),_0xee4a('0x4'),_0xee4a('0x5')],'include':[{'model':_0xee4a('0x6'),'as':'Agents','attributes':['id',_0xee4a('0x3'),_0xee4a('0x7'),'openchannelPause']}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
index 3c3ce0c..5e8d968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3946=['create','Request','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport'];(function(_0x55dfbe,_0x3c17b1){var _0x3c90aa=function(_0x354003){while(--_0x354003){_0x55dfbe['push'](_0x55dfbe['shift']());}};_0x3c90aa(++_0x3c17b1);}(_0x3946,0x1d0));var _0x6394=function(_0x338fe6,_0x325063){_0x338fe6=_0x338fe6-0x0;var _0x17ed6d=_0x3946[_0x338fe6];return _0x17ed6d;};'use strict';var client=require('../client');exports[_0x6394('0x0')]=function(_0x450139){return client[_0x6394('0x1')](_0x6394('0x2'),{'body':_0x450139,'log':_0x6394('0x2')});};exports['update']=function(_0x18ead0,_0x2dbc9b){return client[_0x6394('0x1')](_0x6394('0x3'),{'body':_0x2dbc9b,'options':{'where':{'uniqueid':_0x18ead0},'order':[['id','DESC']],'limit':0x1},'log':_0x6394('0x3')});};
\ No newline at end of file
+var _0xa8e2=['DESC','create','Request','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport'];(function(_0x247aab,_0x6d308){var _0x198cd0=function(_0x2bf3a4){while(--_0x2bf3a4){_0x247aab['push'](_0x247aab['shift']());}};_0x198cd0(++_0x6d308);}(_0xa8e2,0xa6));var _0x2a8e=function(_0x5e88ee,_0x40a41c){_0x5e88ee=_0x5e88ee-0x0;var _0x411a69=_0xa8e2[_0x5e88ee];return _0x411a69;};'use strict';var client=require('../client');exports[_0x2a8e('0x0')]=function(_0x3f0432){return client[_0x2a8e('0x1')](_0x2a8e('0x2'),{'body':_0x3f0432,'log':'CreateOpenchannelQueueReport'});};exports['update']=function(_0x368eb6,_0x3c742a){return client[_0x2a8e('0x1')](_0x2a8e('0x3'),{'body':_0x3c742a,'options':{'where':{'uniqueid':_0x368eb6},'order':[['id',_0x2a8e('0x4')]],'limit':0x1},'log':_0x2a8e('0x3')});};
\ No newline at end of file
index 2f00910..a37b85a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd58c=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','updateSmsInteraction'];(function(_0x3a0c4f,_0x5dd1a3){var _0x247049=function(_0x144695){while(--_0x144695){_0x3a0c4f['push'](_0x3a0c4f['shift']());}};_0x247049(++_0x5dd1a3);}(_0xd58c,0xb6));var _0xcd58=function(_0x2395cc,_0x159ebe){_0x2395cc=_0x2395cc-0x0;var _0x380e6f=_0xd58c[_0x2395cc];return _0x380e6f;};'use strict';var client=require(_0xcd58('0x0'));exports[_0xcd58('0x1')]=function(_0x240323,_0x4dbe25){return client[_0xcd58('0x2')]('UpdateSmsInteraction',{'body':_0x4dbe25,'options':{'where':{'id':_0x240323}},'log':_0xcd58('0x3')});};exports['addTags']=function(_0xe6c68,_0x2a22bd){return client[_0xcd58('0x2')](_0xcd58('0x4'),{'body':_0x2a22bd,'options':{'where':{'id':_0xe6c68}},'log':_0xcd58('0x5')});};
\ No newline at end of file
+var _0xe79a=['addTags','AddTagsToSmsInteraction','Request','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x3055df,_0xeda7cf){var _0x1e14d9=function(_0x37b1cb){while(--_0x37b1cb){_0x3055df['push'](_0x3055df['shift']());}};_0x1e14d9(++_0xeda7cf);}(_0xe79a,0x70));var _0xae79=function(_0x2e937e,_0x925b29){_0x2e937e=_0x2e937e-0x0;var _0xb9cb1b=_0xe79a[_0x2e937e];return _0xb9cb1b;};'use strict';var client=require('../client');exports['update']=function(_0x15325f,_0x51f320){return client[_0xae79('0x0')](_0xae79('0x1'),{'body':_0x51f320,'options':{'where':{'id':_0x15325f}},'log':_0xae79('0x2')});};exports[_0xae79('0x3')]=function(_0x492be8,_0x33b85d){return client[_0xae79('0x0')](_0xae79('0x4'),{'body':_0x33b85d,'options':{'where':{'id':_0x492be8}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
index d1b44a0..e6246d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d2=['CreateSmsMessage','createSmsMessage','../client','create','Request'];(function(_0x53b398,_0x39bfd8){var _0x32c9ed=function(_0x5f5c4f){while(--_0x5f5c4f){_0x53b398['push'](_0x53b398['shift']());}};_0x32c9ed(++_0x39bfd8);}(_0x99d2,0x142));var _0x299d=function(_0x4bb72f,_0x442957){_0x4bb72f=_0x4bb72f-0x0;var _0xd7b1ba=_0x99d2[_0x4bb72f];return _0xd7b1ba;};'use strict';var client=require(_0x299d('0x0'));exports[_0x299d('0x1')]=function(_0x7fc932){return client[_0x299d('0x2')](_0x299d('0x3'),{'body':_0x7fc932,'log':_0x299d('0x4')});};
\ No newline at end of file
+var _0xf09c=['create','Request','CreateSmsMessage','createSmsMessage'];(function(_0x3a94f7,_0x4bca3f){var _0x56e268=function(_0x3fa4d0){while(--_0x3fa4d0){_0x3a94f7['push'](_0x3a94f7['shift']());}};_0x56e268(++_0x4bca3f);}(_0xf09c,0xd8));var _0xcf09=function(_0x4b6114,_0x503279){_0x4b6114=_0x4b6114-0x0;var _0x50605b=_0xf09c[_0x4b6114];return _0x50605b;};'use strict';var client=require('../client');exports[_0xcf09('0x0')]=function(_0x57c1d9){return client[_0xcf09('0x1')](_0xcf09('0x2'),{'body':_0x57c1d9,'log':_0xcf09('0x3')});};
\ No newline at end of file
index c0ccbb1..4402fda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x19e880,_0x1e9d9f){var _0x9034be=function(_0x524722){while(--_0x524722){_0x19e880['push'](_0x19e880['shift']());}};_0x9034be(++_0x1e9d9f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1b1a3b,_0x52a88a){_0x1b1a3b=_0x1b1a3b-0x0;var _0x385347=_0xcb91[_0x1b1a3b];return _0x385347;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x1ad469,_0x24b617){var _0x34e5cd=function(_0x41852a){while(--_0x41852a){_0x1ad469['push'](_0x1ad469['shift']());}};_0x34e5cd(++_0x24b617);}(_0x70e0,0x17b));var _0x070e=function(_0x32e3e4,_0x29001c){_0x32e3e4=_0x32e3e4-0x0;var _0x1fa0f1=_0x70e0[_0x32e3e4];return _0x1fa0f1;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x070e('0x3'),_0x070e('0x4')],'include':[{'model':_0x070e('0x5'),'as':_0x070e('0x6'),'attributes':['id','name',_0x070e('0x7'),'smsPause']}]},'log':_0x070e('0x1')});};};
\ No newline at end of file
index 80a3270..226c0ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x1783c8,_0x2eba8c){var _0x5b518d=function(_0x2328e6){while(--_0x2328e6){_0x1783c8['push'](_0x1783c8['shift']());}};_0x5b518d(++_0x2eba8c);}(_0x3e74,0x175));var _0x43e7=function(_0x21993c,_0x1e638f){_0x21993c=_0x21993c-0x0;var _0xad0a4b=_0x3e74[_0x21993c];return _0xad0a4b;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
+var _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0x2b661c,_0x3c1d59){var _0x258b32=function(_0x453b3a){while(--_0x453b3a){_0x2b661c['push'](_0x2b661c['shift']());}};_0x258b32(++_0x3c1d59);}(_0x70e0,0x17b));var _0x070e=function(_0x30f7bf,_0x30ff82){_0x30f7bf=_0x30f7bf-0x0;var _0x46979d=_0x70e0[_0x30f7bf];return _0x46979d;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateSmsQueueReport',{'body':_0x198c2e,'log':_0x070e('0x2')});};exports[_0x070e('0x3')]=function(_0x277d32,_0x2593e5){return client['Request'](_0x070e('0x4'),{'body':_0x2593e5,'options':{'where':{'uniqueid':_0x277d32},'order':[['id','DESC']],'limit':0x1},'log':_0x070e('0x4')});};
\ No newline at end of file
index cf9e303..024a349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x398c90,_0x5e7d93){var _0x99f3e7=function(_0x5b0ee0){while(--_0x5b0ee0){_0x398c90['push'](_0x398c90['shift']());}};_0x99f3e7(++_0x5e7d93);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0xe1e02d,_0x564fa9){var _0x45285d=function(_0x47a117){while(--_0x47a117){_0xe1e02d['push'](_0xe1e02d['shift']());}};_0x45285d(++_0x564fa9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 92187f0..56566f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e65=['addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x5c6cf4,_0x35b93b){var _0xf1fb8c=function(_0x1cdee1){while(--_0x1cdee1){_0x5c6cf4['push'](_0x5c6cf4['shift']());}};_0xf1fb8c(++_0x35b93b);}(_0x2e65,0x193));var _0x52e6=function(_0x1a7550,_0x1edace){_0x1a7550=_0x1a7550-0x0;var _0x426e22=_0x2e65[_0x1a7550];return _0x426e22;};'use strict';var client=require(_0x52e6('0x0'));exports[_0x52e6('0x1')]=function(_0x33c60c,_0x120587){return client[_0x52e6('0x2')](_0x52e6('0x3'),{'body':_0x120587,'options':{'where':{'id':_0x33c60c}},'log':_0x52e6('0x4')});};exports[_0x52e6('0x5')]=function(_0x47912f,_0x383919){return client[_0x52e6('0x2')](_0x52e6('0x6'),{'body':_0x383919,'options':{'where':{'id':_0x47912f}},'log':_0x52e6('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','../client','update'];(function(_0x1d4449,_0x495153){var _0x4dcde3=function(_0x36d549){while(--_0x36d549){_0x1d4449['push'](_0x1d4449['shift']());}};_0x4dcde3(++_0x495153);}(_0x7a54,0x106));var _0x47a5=function(_0x51450b,_0x58f9d6){_0x51450b=_0x51450b-0x0;var _0x2404cc=_0x7a54[_0x51450b];return _0x2404cc;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateWhatsappInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index c3c902e..6846aaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fa3=['create','CreateWhatsappMessage','createWhatsappMessage'];(function(_0x271537,_0x8b7b3b){var _0x19dc22=function(_0x459bbf){while(--_0x459bbf){_0x271537['push'](_0x271537['shift']());}};_0x19dc22(++_0x8b7b3b);}(_0x1fa3,0x177));var _0x31fa=function(_0x528406,_0x5be782){_0x528406=_0x528406-0x0;var _0x22ef47=_0x1fa3[_0x528406];return _0x22ef47;};'use strict';var client=require('../client');exports[_0x31fa('0x0')]=function(_0x3bf5db){return client['Request'](_0x31fa('0x1'),{'body':_0x3bf5db,'log':_0x31fa('0x2')});};
\ No newline at end of file
+var _0x126d=['create','Request','createWhatsappMessage'];(function(_0x1e9ea7,_0x32f332){var _0x4dd4c1=function(_0x21e0db){while(--_0x21e0db){_0x1e9ea7['push'](_0x1e9ea7['shift']());}};_0x4dd4c1(++_0x32f332);}(_0x126d,0xc9));var _0xd126=function(_0x46d137,_0x5d4f9c){_0x46d137=_0x46d137-0x0;var _0x444bad=_0x126d[_0x46d137];return _0x444bad;};'use strict';var client=require('../client');exports[_0xd126('0x0')]=function(_0x465f5e){return client[_0xd126('0x1')]('CreateWhatsappMessage',{'body':_0x465f5e,'log':_0xd126('0x2')});};
\ No newline at end of file
index 297c2ab..7828bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c41=['Agents','online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','User'];(function(_0x4b3488,_0xa60796){var _0xaeb117=function(_0x8459cb){while(--_0x8459cb){_0x4b3488['push'](_0x4b3488['shift']());}};_0xaeb117(++_0xa60796);}(_0x5c41,0x159));var _0x15c4=function(_0xfeb3bc,_0x126a0f){_0xfeb3bc=_0xfeb3bc-0x0;var _0x284e2d=_0x5c41[_0xfeb3bc];return _0x284e2d;};'use strict';var client=require(_0x15c4('0x0'));exports[_0x15c4('0x1')]=function(){return function(){return client[_0x15c4('0x2')](_0x15c4('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x15c4('0x4'),'strategy'],'include':[{'model':_0x15c4('0x5'),'as':_0x15c4('0x6'),'attributes':['id','name',_0x15c4('0x7'),_0x15c4('0x8')]}]},'log':_0x15c4('0x1')});};};
\ No newline at end of file
+var _0x38fc=['getWhatsappQueues','../client','Request','GetWhatsappQueue','name','timeout','strategy','User','Agents','online'];(function(_0x340c3d,_0x59aa95){var _0x2f88b6=function(_0x55814c){while(--_0x55814c){_0x340c3d['push'](_0x340c3d['shift']());}};_0x2f88b6(++_0x59aa95);}(_0x38fc,0xab));var _0xc38f=function(_0x34f68d,_0x3572f0){_0x34f68d=_0x34f68d-0x0;var _0x1a7b19=_0x38fc[_0x34f68d];return _0x1a7b19;};'use strict';var client=require(_0xc38f('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0xc38f('0x1')](_0xc38f('0x2'),{'options':{'raw':![],'attributes':['id',_0xc38f('0x3'),_0xc38f('0x4'),_0xc38f('0x5')],'include':[{'model':_0xc38f('0x6'),'as':_0xc38f('0x7'),'attributes':['id',_0xc38f('0x3'),_0xc38f('0x8'),'whatsappPause']}]},'log':_0xc38f('0x9')});};};
\ No newline at end of file
index eeef057..25c7807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61d8=['CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC','../client','create','Request'];(function(_0x32733c,_0x316505){var _0x48f9bf=function(_0xee8ade){while(--_0xee8ade){_0x32733c['push'](_0x32733c['shift']());}};_0x48f9bf(++_0x316505);}(_0x61d8,0x18c));var _0x861d=function(_0x30c845,_0x1ac4b4){_0x30c845=_0x30c845-0x0;var _0x2158ce=_0x61d8[_0x30c845];return _0x2158ce;};'use strict';var client=require(_0x861d('0x0'));exports[_0x861d('0x1')]=function(_0x54ef3f){return client[_0x861d('0x2')](_0x861d('0x3'),{'body':_0x54ef3f,'log':_0x861d('0x3')});};exports[_0x861d('0x4')]=function(_0x4ef31b,_0x137f69){return client[_0x861d('0x2')](_0x861d('0x5'),{'body':_0x137f69,'options':{'where':{'uniqueid':_0x4ef31b},'order':[['id',_0x861d('0x6')]],'limit':0x1},'log':_0x861d('0x5')});};
\ No newline at end of file
+var _0x9f5e=['CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','../client','Request'];(function(_0x4d1d1b,_0x122e02){var _0x2d1ed0=function(_0x4f388e){while(--_0x4f388e){_0x4d1d1b['push'](_0x4d1d1b['shift']());}};_0x2d1ed0(++_0x122e02);}(_0x9f5e,0xc6));var _0xe9f5=function(_0x4efd0c,_0x1da835){_0x4efd0c=_0x4efd0c-0x0;var _0xebcc50=_0x9f5e[_0x4efd0c];return _0xebcc50;};'use strict';var client=require(_0xe9f5('0x0'));exports['create']=function(_0x1ec8d2){return client[_0xe9f5('0x1')]('CreateWhatsappQueueReport',{'body':_0x1ec8d2,'log':_0xe9f5('0x2')});};exports[_0xe9f5('0x3')]=function(_0x53b923,_0x179e66){return client[_0xe9f5('0x1')](_0xe9f5('0x4'),{'body':_0x179e66,'options':{'where':{'uniqueid':_0x53b923},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index a8b37f9..dea20fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3f8=['end','info','complete','[%s][AGENT]\x20ROUTING\x20END','close','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','util','seq-queue','../../../../config/logger','routing','./strategy','timeout\x20is\x20a\x20number','format','[%s][AGENT][NAME:%s][STATUS:%s]','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','join','stop','find','agents','name','timeout','createQueue','atimeout','channel','START:%s','rules'];(function(_0x478ce7,_0x532b7b){var _0x1ebb86=function(_0x9bb934){while(--_0x9bb934){_0x478ce7['push'](_0x478ce7['shift']());}};_0x1ebb86(++_0x532b7b);}(_0xd3f8,0x1f3));var _0x8d3f=function(_0x11d2bf,_0x5ce7b2){_0x11d2bf=_0x11d2bf-0x0;var _0x2c10c4=_0xd3f8[_0x11d2bf];return _0x2c10c4;};'use strict';var schema=require(_0x8d3f('0x0'));var _=require('lodash');var util=require(_0x8d3f('0x1'));var seqqueue=require(_0x8d3f('0x2'));var logger=require(_0x8d3f('0x3'))(_0x8d3f('0x4'));var strategy=require(_0x8d3f('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':_0x8d3f('0x6')}});function writeLog(_0x48b61a,_0x206a6e,_0x40cf5f){return logger['info'](util[_0x8d3f('0x7')](_0x8d3f('0x8'),_0x48b61a,_0x206a6e['name'],_0x40cf5f));}function handleFindAgent(_0x10d707){return function(_0x1df802){return _0x1df802['name']['toLowerCase']()===_0x10d707[_0x8d3f('0x9')]();};}exports[_0x8d3f('0xa')]=function(_0x596411,_0x481908,_0x12ad43,_0x31b01a){return function(_0x4550ce){try{var _0x599bad={'name':_0x481908[0x0],'timeout':_0x481908[0x1]};var _0x16188a=queue[_0x8d3f('0x0')](_0x599bad,{'typecast':!![]});if(_0x16188a[_0x8d3f('0xb')]){logger[_0x8d3f('0xc')](_0x8d3f('0xd'),_0x596411,_[_0x8d3f('0xe')](_0x16188a,'message')[_0x8d3f('0xf')](',\x20'));_0x4550ce[_0x8d3f('0x10')]();}else{var _0x5d4e50=_[_0x8d3f('0x11')](_0x12ad43[_0x8d3f('0x12')],handleFindAgent(_0x599bad[_0x8d3f('0x13')]));if(_0x5d4e50){var _0x575bb9=(_0x599bad[_0x8d3f('0x14')]||0xa)*0x3e8;var _0x22e682,_0x59bad8;var _0x418bd6=seqqueue[_0x8d3f('0x15')](_0x575bb9);_0x418bd6['id']=_0x596411;_0x418bd6[_0x8d3f('0x16')]=_0x575bb9;_0x418bd6[_0x8d3f('0x17')]=_0x31b01a[_0x8d3f('0x17')];writeLog(_0x596411,_0x5d4e50,util[_0x8d3f('0x7')](_0x8d3f('0x18'),_0x575bb9));_0x12ad43[_0x8d3f('0x19')][_0x596411]['on'](_0x8d3f('0x1a'),function(){logger[_0x8d3f('0x1b')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x596411);clearTimeout(_0x59bad8);_0x59bad8=undefined;_0x418bd6['close']();if(_0x12ad43[_0x8d3f('0x19')][_0x596411]){delete _0x12ad43['rules'][_0x596411];}_0x4550ce[_0x8d3f('0x10')]();});_0x12ad43[_0x8d3f('0x19')][_0x596411]['on'](_0x8d3f('0x1c'),function(){if(_0x12ad43[_0x8d3f('0x19')][_0x596411]){delete _0x12ad43[_0x8d3f('0x19')][_0x596411];}});_0x59bad8=setTimeout(function(){logger[_0x8d3f('0x1b')](_0x8d3f('0x1d'),_0x596411);clearTimeout(_0x59bad8);_0x418bd6[_0x8d3f('0x1e')]();_0x4550ce['next']();},_0x575bb9);strategy['agent'](_0x418bd6,_0x5d4e50,_0x12ad43,_0x31b01a);}else{logger['error'](_0x8d3f('0x1f'),_0x596411,_0x599bad[_0x8d3f('0x13')]);_0x4550ce[_0x8d3f('0x10')]();}}}catch(_0x1d25ed){console[_0x8d3f('0x20')](_0x1d25ed);logger[_0x8d3f('0xc')](_0x8d3f('0x21'),_0x596411,_0x1d25ed[_0x8d3f('0x22')]);_0x4550ce[_0x8d3f('0x10')]();}};};
\ No newline at end of file
+var _0x1a35=['consequence','length','error','[%s][AGENT]\x20%s','message','join','stop','find','agents','timeout','createQueue','atimeout','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','complete','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','validate','lodash','seq-queue','../../../../config/logger','routing','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1a35,0xab));var _0x51a3=function(_0x1c420b,_0x405975){_0x1c420b=_0x1c420b-0x0;var _0x1599d2=_0x1a35[_0x1c420b];return _0x1599d2;};'use strict';var schema=require(_0x51a3('0x0'));var _=require(_0x51a3('0x1'));var util=require('util');var seqqueue=require(_0x51a3('0x2'));var logger=require(_0x51a3('0x3'))(_0x51a3('0x4'));var strategy=require(_0x51a3('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':_0x51a3('0x6')},'timeout':{'type':_0x51a3('0x7'),'message':_0x51a3('0x8')}});function writeLog(_0x3fdd7b,_0x2b2baf,_0x30a5cc){return logger[_0x51a3('0x9')](util[_0x51a3('0xa')](_0x51a3('0xb'),_0x3fdd7b,_0x2b2baf[_0x51a3('0xc')],_0x30a5cc));}function handleFindAgent(_0x105791){return function(_0x511dd3){return _0x511dd3[_0x51a3('0xc')]['toLowerCase']()===_0x105791[_0x51a3('0xd')]();};}exports[_0x51a3('0xe')]=function(_0x329a9a,_0x358ade,_0x3ab907,_0x14eda4){return function(_0x29fbfa){try{var _0x4bfa79={'name':_0x358ade[0x0],'timeout':_0x358ade[0x1]};var _0x5da758=queue[_0x51a3('0x0')](_0x4bfa79,{'typecast':!![]});if(_0x5da758[_0x51a3('0xf')]){logger[_0x51a3('0x10')](_0x51a3('0x11'),_0x329a9a,_['map'](_0x5da758,_0x51a3('0x12'))[_0x51a3('0x13')](',\x20'));_0x29fbfa[_0x51a3('0x14')]();}else{var _0x3be4ca=_[_0x51a3('0x15')](_0x3ab907[_0x51a3('0x16')],handleFindAgent(_0x4bfa79['name']));if(_0x3be4ca){var _0x3d7d7b=(_0x4bfa79[_0x51a3('0x17')]||0xa)*0x3e8;var _0x1a5c50,_0x2a0e7f;var _0x2efaaa=seqqueue[_0x51a3('0x18')](_0x3d7d7b);_0x2efaaa['id']=_0x329a9a;_0x2efaaa[_0x51a3('0x19')]=_0x3d7d7b;_0x2efaaa['channel']=_0x14eda4['channel'];writeLog(_0x329a9a,_0x3be4ca,util[_0x51a3('0xa')](_0x51a3('0x1a'),_0x3d7d7b));_0x3ab907[_0x51a3('0x1b')][_0x329a9a]['on'](_0x51a3('0x1c'),function(){logger[_0x51a3('0x9')](_0x51a3('0x1d'),_0x329a9a);clearTimeout(_0x2a0e7f);_0x2a0e7f=undefined;_0x2efaaa['close']();if(_0x3ab907[_0x51a3('0x1b')][_0x329a9a]){delete _0x3ab907[_0x51a3('0x1b')][_0x329a9a];}_0x29fbfa[_0x51a3('0x14')]();});_0x3ab907['rules'][_0x329a9a]['on'](_0x51a3('0x1e'),function(){if(_0x3ab907[_0x51a3('0x1b')][_0x329a9a]){delete _0x3ab907[_0x51a3('0x1b')][_0x329a9a];}});_0x2a0e7f=setTimeout(function(){logger[_0x51a3('0x9')]('[%s][AGENT]\x20ROUTING\x20END',_0x329a9a);clearTimeout(_0x2a0e7f);_0x2efaaa[_0x51a3('0x1f')]();_0x29fbfa[_0x51a3('0x20')]();},_0x3d7d7b);strategy[_0x51a3('0x21')](_0x2efaaa,_0x3be4ca,_0x3ab907,_0x14eda4);}else{logger[_0x51a3('0x10')](_0x51a3('0x22'),_0x329a9a,_0x4bfa79['name']);_0x29fbfa[_0x51a3('0x14')]();}}}catch(_0x17faa0){console[_0x51a3('0x23')](_0x17faa0);logger['error'](_0x51a3('0x24'),_0x329a9a,_0x17faa0['stack']);_0x29fbfa[_0x51a3('0x14')]();}};};
\ No newline at end of file
index 3192032..5aa3181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5443=['amazonlex','create','then','dialogState','Failed','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','getMustacheRender','Message','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','$LATEST','message','toString','postText'];(function(_0x1cd9a9,_0x226b55){var _0x15795d=function(_0x238793){while(--_0x238793){_0x1cd9a9['push'](_0x1cd9a9['shift']());}};_0x15795d(++_0x226b55);}(_0x5443,0x163));var _0x3544=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x5443[_0x4e676e];return _0x336a3c;};'use strict';var _=require('lodash');var moment=require(_0x3544('0x0'));var AWS=require(_0x3544('0x1'));var utils=require(_0x3544('0x2'));var logger=require(_0x3544('0x3'))(_0x3544('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x3544('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x3544('0x6')),'faxMessage':require(_0x3544('0x7')),'whatsappMessage':require(_0x3544('0x8'))};exports[_0x3544('0x9')]=function(_0x162db9,_0x53ba8f){return function(_0x358237){try{if(!_['isNil'](this[_0x3544('0xa')][_0x3544('0xb')])){logger[_0x3544('0xc')](_0x3544('0xd'),_0x162db9,_0x3544('0xe'));return _0x358237[_0x3544('0xf')]();}var _0x5afcaa={'ContactId':this[_0x3544('0x10')]['id'],'sentAt':moment()[_0x3544('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x3544('0x12')};if(this[_0x3544('0x13')]===_0x3544('0x14')||this[_0x3544('0x13')]===_0x3544('0x15')){_0x5afcaa[_0x3544('0x16')]=this[_0x3544('0xa')]['phone'];}var _0x342746=this[_0x3544('0x13')];if(_0x342746===_0x3544('0x17')){_0x5afcaa[_0x3544('0x18')]=this[_0x3544('0x19')]['id'];}else{_0x5afcaa[_[_0x3544('0x1a')](_0x342746)+_0x3544('0x1b')]=this[_0x3544('0x19')]['id'];}_0x5afcaa[_[_0x3544('0x1a')](_0x342746)+_0x3544('0x1c')]=this[_0x3544('0xa')]['id'];if(this[_0x3544('0xa')][_0x3544('0x1d')]){var _0x28b38a=_0x53ba8f[0x4];if(!_['isEmpty'](_0x28b38a)){_0x5afcaa[_0x3544('0x1e')]=utils[_0x3544('0x1f')](_0x28b38a,this);return rpc[_0x342746+_0x3544('0x20')]['create'](_0x5afcaa)['then'](function(_0x15397e){logger['info']('[%s][AMAZONLEX]\x20%s',_0x162db9,_0x5afcaa[_0x3544('0x1e')]);})[_0x3544('0x21')](function(_0x472404){logger[_0x3544('0x22')](_0x3544('0xd'),_0x162db9,JSON[_0x3544('0x23')](_0x472404));})[_0x3544('0x24')](function(){logger[_0x3544('0xc')](_0x3544('0x25'),_0x162db9);_0x358237['stop']();});}else{logger['info'](_0x3544('0x26'),_0x162db9);_0x358237[_0x3544('0x27')]();}}else{var _0x3b6626=this;var _0x4649d9=new AWS[(_0x3544('0x28'))]({'accessKeyId':_0x53ba8f[0x0],'secretAccessKey':_0x53ba8f[0x1],'region':_0x53ba8f[0x2]});var _0x518df2={'botAlias':_0x3544('0x29'),'botName':_0x53ba8f[0x3],'inputText':this[_0x3544('0x2a')]['body'],'userId':this['channel']+':'+this['interaction']['id'][_0x3544('0x2b')]()};_0x4649d9[_0x3544('0x2c')](_0x518df2,function(_0x29e86a,_0x8859ec){if(_0x29e86a){logger['error'](_0x3544('0xd'),_0x162db9,_0x29e86a[_0x3544('0x2a')]);_0x358237[_0x3544('0xf')]();}else if(_0x8859ec&&_0x8859ec[_0x3544('0x2a')]){_0x3b6626[_0x3544('0x1e')][_0x3544('0x2d')]=_0x8859ec;_0x5afcaa[_0x3544('0x1e')]=_0x8859ec[_0x3544('0x2a')];_0x5afcaa['providerName']=_0x3544('0x2d');_0x5afcaa['providerResponse']=JSON['stringify'](_0x8859ec);return rpc[_0x342746+_0x3544('0x20')][_0x3544('0x2e')](_0x5afcaa)[_0x3544('0x2f')](function(_0x2918d6){logger[_0x3544('0xc')](_0x3544('0xd'),_0x162db9,_0x5afcaa[_0x3544('0x1e')]);if(_0x8859ec[_0x3544('0x30')]==_0x3544('0x31')){_0x358237['next']();}else{_0x358237[_0x3544('0x27')]();}})[_0x3544('0x21')](function(_0x10d842){logger['error'](_0x3544('0xd'),_0x162db9,JSON[_0x3544('0x23')](_0x10d842));_0x358237[_0x3544('0xf')]();});}else{_0x358237['next']();}});}}catch(_0x35aa81){logger[_0x3544('0x22')](_0x3544('0xd'),_0x162db9,JSON[_0x3544('0x23')](_0x35aa81));_0x358237[_0x3544('0x27')]();}};};
\ No newline at end of file
+var _0x8ae7=['amazonlex','providerName','providerResponse','dialogState','Failed','moment','aws-sdk','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','getMustacheRender','Message','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText'];(function(_0x3a5d20,_0x4f2646){var _0x2275e1=function(_0x373c65){while(--_0x373c65){_0x3a5d20['push'](_0x3a5d20['shift']());}};_0x2275e1(++_0x4f2646);}(_0x8ae7,0xd9));var _0x78ae=function(_0x542888,_0x5048b8){_0x542888=_0x542888-0x0;var _0x58ce38=_0x8ae7[_0x542888];return _0x58ce38;};'use strict';var _=require('lodash');var moment=require(_0x78ae('0x0'));var AWS=require(_0x78ae('0x1'));var utils=require(_0x78ae('0x2'));var logger=require('../../../../config/logger')(_0x78ae('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x78ae('0x4')),'mailMessage':require(_0x78ae('0x5')),'smsMessage':require(_0x78ae('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x78ae('0x7'))};exports[_0x78ae('0x8')]=function(_0x38b89f,_0x1c2635){return function(_0x559938){try{if(!_[_0x78ae('0x9')](this[_0x78ae('0xa')][_0x78ae('0xb')])){logger[_0x78ae('0xc')](_0x78ae('0xd'),_0x38b89f,_0x78ae('0xe'));return _0x559938[_0x78ae('0xf')]();}var _0x41b29d={'ContactId':this[_0x78ae('0x10')]['id'],'sentAt':moment()[_0x78ae('0x11')](_0x78ae('0x12')),'direction':_0x78ae('0x13')};if(this[_0x78ae('0x14')]===_0x78ae('0x15')||this[_0x78ae('0x14')]===_0x78ae('0x16')){_0x41b29d[_0x78ae('0x17')]=this[_0x78ae('0xa')][_0x78ae('0x17')];}var _0x3c74af=this[_0x78ae('0x14')];if(_0x3c74af===_0x78ae('0x18')){_0x41b29d[_0x78ae('0x19')]=this[_0x78ae('0x1a')]['id'];}else{_0x41b29d[_[_0x78ae('0x1b')](_0x3c74af)+_0x78ae('0x1c')]=this[_0x78ae('0x1a')]['id'];}_0x41b29d[_[_0x78ae('0x1b')](_0x3c74af)+_0x78ae('0x1d')]=this[_0x78ae('0xa')]['id'];if(this[_0x78ae('0xa')][_0x78ae('0x1e')]){var _0x2845c4=_0x1c2635[0x4];if(!_['isEmpty'](_0x2845c4)){_0x41b29d[_0x78ae('0x1f')]=utils[_0x78ae('0x20')](_0x2845c4,this);return rpc[_0x3c74af+_0x78ae('0x21')][_0x78ae('0x22')](_0x41b29d)[_0x78ae('0x23')](function(_0x11f7e7){logger[_0x78ae('0xc')](_0x78ae('0xd'),_0x38b89f,_0x41b29d[_0x78ae('0x1f')]);})[_0x78ae('0x24')](function(_0x410824){logger[_0x78ae('0x25')](_0x78ae('0xd'),_0x38b89f,JSON[_0x78ae('0x26')](_0x410824));})[_0x78ae('0x27')](function(){logger[_0x78ae('0xc')](_0x78ae('0x28'),_0x38b89f);_0x559938[_0x78ae('0x29')]();});}else{logger[_0x78ae('0xc')](_0x78ae('0x2a'),_0x38b89f);_0x559938[_0x78ae('0x29')]();}}else{var _0xd2e85=this;var _0x1fca13=new AWS[(_0x78ae('0x2b'))]({'accessKeyId':_0x1c2635[0x0],'secretAccessKey':_0x1c2635[0x1],'region':_0x1c2635[0x2]});var _0x311034={'botAlias':_0x78ae('0x2c'),'botName':_0x1c2635[0x3],'inputText':this[_0x78ae('0x2d')][_0x78ae('0x1f')],'userId':this[_0x78ae('0x14')]+':'+this[_0x78ae('0xa')]['id'][_0x78ae('0x2e')]()};_0x1fca13[_0x78ae('0x2f')](_0x311034,function(_0x3a1278,_0x56992c){if(_0x3a1278){logger[_0x78ae('0x25')](_0x78ae('0xd'),_0x38b89f,_0x3a1278[_0x78ae('0x2d')]);_0x559938[_0x78ae('0xf')]();}else if(_0x56992c&&_0x56992c[_0x78ae('0x2d')]){_0xd2e85[_0x78ae('0x1f')][_0x78ae('0x30')]=_0x56992c;_0x41b29d[_0x78ae('0x1f')]=_0x56992c[_0x78ae('0x2d')];_0x41b29d[_0x78ae('0x31')]=_0x78ae('0x30');_0x41b29d[_0x78ae('0x32')]=JSON[_0x78ae('0x26')](_0x56992c);return rpc[_0x3c74af+_0x78ae('0x21')][_0x78ae('0x22')](_0x41b29d)[_0x78ae('0x23')](function(_0x1ad6ef){logger[_0x78ae('0xc')](_0x78ae('0xd'),_0x38b89f,_0x41b29d['body']);if(_0x56992c[_0x78ae('0x33')]==_0x78ae('0x34')){_0x559938[_0x78ae('0xf')]();}else{_0x559938[_0x78ae('0x29')]();}})['catch'](function(_0x279f24){logger[_0x78ae('0x25')](_0x78ae('0xd'),_0x38b89f,JSON[_0x78ae('0x26')](_0x279f24));_0x559938['next']();});}else{_0x559938[_0x78ae('0xf')]();}});}}catch(_0x7fa75e){logger[_0x78ae('0x25')](_0x78ae('0xd'),_0x38b89f,JSON[_0x78ae('0x26')](_0x7fa75e));_0x559938[_0x78ae('0x29')]();}};};
\ No newline at end of file
index 684b8d0..15d4797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf59e=['stop','../../../../config/logger','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','body','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','created','interaction','Autoreply\x20already\x20sent','next','autoreplyExecuted','One\x20Time\x20already\x20sent','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','getMustacheRender','from','message','phone','read','subject','Re:','chat','account','AccountId','upperFirst','InteractionId','Message','service','host','Smtp','port','secure','authentication','auth','user','pass','messageId','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','then','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','error'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xf59e,0x1a5));var _0xef59=function(_0x571cfb,_0x59f7fb){_0x571cfb=_0x571cfb-0x0;var _0x19205a=_0xf59e[_0x571cfb];return _0x19205a;};'use strict';var _=require('lodash');var moment=require('moment');var utils=require('./utils');var logger=require(_0xef59('0x0'))('routing');var rpc={'chatMessage':require(_0xef59('0x1')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xef59('0x2')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xef59('0x3')),'mailInteraction':require(_0xef59('0x4')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xef59('0x5'))};var mailRpc=require(_0xef59('0x6'));exports[_0xef59('0x7')]=function(_0x540032,_0x4ef5ab,_0x214d41,_0x33527e){return function(_0x1c3221){try{var _0x21f87f=this['channel'];if(_0x21f87f===_0xef59('0x8')&&_0x33527e[_0xef59('0x9')]['isAutoreply']){logger[_0xef59('0xa')](_0xef59('0xb'),_0x540032,_0xef59('0xc'));return _0x1c3221['next']();}if(_0x4ef5ab[0x0]==='1'&&(_[_0xef59('0xd')](this['interaction'][_0xef59('0xe')])||!this[_0xef59('0xf')][_0xef59('0xe')])){logger[_0xef59('0xa')]('[%s][AUTOREPLY]\x20%s',_0x540032,_0xef59('0x10'));return _0x1c3221[_0xef59('0x11')]();}if(_0x4ef5ab[0x0]==='2'&&this[_0xef59('0xf')][_0xef59('0x12')]){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x540032,_0xef59('0x13'));return _0x1c3221[_0xef59('0x11')]();}var _0x3efb0e={'ContactId':this['contact']['id'],'sentAt':moment()[_0xef59('0x14')](_0xef59('0x15')),'direction':_0xef59('0x16')};if(this[_0xef59('0x17')]==='mail'){_0x3efb0e[_0xef59('0x9')]=utils[_0xef59('0x18')](_0x4ef5ab[0x2],this);}else{_0x3efb0e['body']=utils[_0xef59('0x18')](_0x4ef5ab[0x1],this);}if(this['message']){_0x3efb0e['to']=this['message']['from']||'';if(this[_0xef59('0x17')]===_0xef59('0x8')&&_0x4ef5ab[0x1]==='1'){_0x3efb0e['cc']=this['message']['cc']||'';}_0x3efb0e[_0xef59('0x19')]=this[_0xef59('0x1a')]['to']||'';_0x3efb0e[_0xef59('0x1b')]=this[_0xef59('0x1a')]['phone']||'';_0x3efb0e[_0xef59('0x1c')]=!![];if(this['message']['subject']){_0x3efb0e[_0xef59('0x1d')]='';_0x3efb0e[_0xef59('0x1d')]+=_['startsWith'](this[_0xef59('0x1a')][_0xef59('0x1d')],_0xef59('0x1e'))?'':'Re:\x20';_0x3efb0e['subject']+=this['message'][_0xef59('0x1d')];}}if(this[_0xef59('0x17')]===_0xef59('0x1f')){_0x3efb0e['ChatWebsiteId']=this[_0xef59('0x20')]['id'];}else{_0x3efb0e[_['upperFirst'](this[_0xef59('0x17')])+_0xef59('0x21')]=this[_0xef59('0x20')]['id'];}_0x3efb0e[_[_0xef59('0x22')](this['channel'])+_0xef59('0x23')]=this['interaction']['id'];var _0x25624b=this[_0xef59('0xf')];if(rpc[this[_0xef59('0x17')]+_0xef59('0x24')]){if(this[_0xef59('0x17')]==='mail'){var _0x5ebbae={'tls':{'rejectUnauthorized':![]}};if(this[_0xef59('0x20')]['Smtp'][_0xef59('0x25')]){_0x5ebbae[_0xef59('0x25')]=this[_0xef59('0x20')]['Smtp'][_0xef59('0x25')];}else{_0x5ebbae[_0xef59('0x26')]=this[_0xef59('0x20')][_0xef59('0x27')]['host'];_0x5ebbae[_0xef59('0x28')]=this[_0xef59('0x20')][_0xef59('0x27')][_0xef59('0x28')];_0x5ebbae[_0xef59('0x29')]=this[_0xef59('0x20')][_0xef59('0x27')][_0xef59('0x29')];}if(this[_0xef59('0x20')][_0xef59('0x27')][_0xef59('0x2a')]){_0x5ebbae[_0xef59('0x2b')]={'user':this[_0xef59('0x20')][_0xef59('0x27')][_0xef59('0x2c')],'pass':this['account'][_0xef59('0x27')][_0xef59('0x2d')]};}_0x3efb0e['inReplyTo']=this[_0xef59('0x1a')][_0xef59('0x2e')];_0x3efb0e['html']=_0xef59('0x2f')+_['replace'](_0x3efb0e[_0xef59('0x9')],_0xef59('0x30'),_0xef59('0x31'))+_0xef59('0x32');_0x3efb0e[_0xef59('0x33')]={'Auto-Submitted':_0xef59('0x34'),'X-Auto-Response-Suppress':_0xef59('0x35'),'Precedence':_0xef59('0x36')};return mailRpc[_0xef59('0x37')](_0x5ebbae,_0x3efb0e)['then'](function(_0x566264){logger['info'](_0xef59('0x38'),_0x540032);_0x3efb0e[_0xef59('0x2e')]=_0x566264['message']['messageId'];return rpc[_0x21f87f+_0xef59('0x24')][_0xef59('0x39')](_0x3efb0e);})[_0xef59('0x3a')](function(_0x11a4e5){logger[_0xef59('0xa')](_0xef59('0xb'),_0x540032,JSON[_0xef59('0x3b')](_0x11a4e5));})[_0xef59('0x3c')](function(_0x3639a7){logger['error'](_0xef59('0x3d'),_0x540032,JSON['stringify'](_0x3639a7));})[_0xef59('0x3e')](function(){Promise[_0xef59('0x3f')]()[_0xef59('0x3a')](function(){if(_0x4ef5ab[0x0]!=='2'||_0x25624b['autoreplyExecuted'])return;return rpc[_0x21f87f+_0xef59('0x40')][_0xef59('0x41')](_0x25624b['id'],{'autoreplyExecuted':!![]})[_0xef59('0x3a')](function(_0x5cd912){logger[_0xef59('0xa')](_0xef59('0x42'),_0x540032,JSON[_0xef59('0x3b')](_0x5cd912));})[_0xef59('0x3c')](function(_0x3f1319){logger['error'](_0xef59('0x43'),_0x540032,JSON[_0xef59('0x3b')](_0x3f1319));});})[_0xef59('0x3a')](function(){_0x1c3221['next']();});});}else{return rpc[this[_0xef59('0x17')]+_0xef59('0x24')]['create'](_0x3efb0e)[_0xef59('0x3a')](function(_0x1fccdf){logger['info']('[%s][AUTOREPLY]\x20%s',_0x540032,_0x3efb0e[_0xef59('0x9')]);})['catch'](function(_0x47d52a){logger[_0xef59('0x44')](_0xef59('0xb'),_0x540032,JSON['stringify'](_0x47d52a));})[_0xef59('0x3e')](function(){Promise[_0xef59('0x3f')]()[_0xef59('0x3a')](function(){if(_0x4ef5ab[0x0]!=='2'||_0x25624b[_0xef59('0x12')])return;return rpc[_0x21f87f+_0xef59('0x40')][_0xef59('0x41')](_0x25624b['id'],{'autoreplyExecuted':!![]})[_0xef59('0x3a')](function(_0x1700c3){logger['info'](_0xef59('0x42'),_0x540032,JSON[_0xef59('0x3b')](_0x1700c3));})[_0xef59('0x3c')](function(_0x4578ef){logger[_0xef59('0x44')](_0xef59('0x43'),_0x540032,JSON[_0xef59('0x3b')](_0x4578ef));});})['then'](function(){_0x1c3221['next']();});});}}}catch(_0x4989aa){logger[_0xef59('0x44')](_0xef59('0xb'),_0x540032,JSON[_0xef59('0x3b')](_0x4989aa));_0x1c3221[_0xef59('0x45')]();}};};
\ No newline at end of file
+var _0x2442=['../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','created','Autoreply\x20already\x20sent','One\x20Time\x20already\x20sent','contact','format','out','channel','from','mail','message','read','subject','startsWith','Re:','ChatWebsiteId','account','AccountId','InteractionId','interaction','Smtp','service','host','port','secure','authentication','auth','user','pass','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','auto_reply','sendMailMessage','then','Message','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','autoreplyExecuted','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','./utils','routing'];(function(_0x4c10be,_0x36f290){var _0x16678e=function(_0x412879){while(--_0x412879){_0x4c10be['push'](_0x4c10be['shift']());}};_0x16678e(++_0x36f290);}(_0x2442,0x11a));var _0x2244=function(_0x262417,_0x9b9f85){_0x262417=_0x262417-0x0;var _0x4404f7=_0x2442[_0x262417];return _0x4404f7;};'use strict';var _=require('lodash');var moment=require('moment');var utils=require(_0x2244('0x0'));var logger=require('../../../../config/logger')(_0x2244('0x1'));var rpc={'chatMessage':require(_0x2244('0x2')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x2244('0x3')),'smsMessage':require(_0x2244('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x2244('0x5')),'chatInteraction':require(_0x2244('0x6')),'openchannelInteraction':require(_0x2244('0x7')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x2244('0x8')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x2244('0x9'))};var mailRpc=require(_0x2244('0xa'));exports['consequence']=function(_0x59c524,_0x5cb17c,_0x90720a,_0x1cf72d){return function(_0x148f2d){try{var _0x2d6b39=this['channel'];if(_0x2d6b39==='mail'&&_0x1cf72d[_0x2244('0xb')][_0x2244('0xc')]){logger[_0x2244('0xd')](_0x2244('0xe'),_0x59c524,_0x2244('0xf'));return _0x148f2d[_0x2244('0x10')]();}if(_0x5cb17c[0x0]==='1'&&(_[_0x2244('0x11')](this['interaction'][_0x2244('0x12')])||!this['interaction'][_0x2244('0x12')])){logger[_0x2244('0xd')](_0x2244('0xe'),_0x59c524,_0x2244('0x13'));return _0x148f2d[_0x2244('0x10')]();}if(_0x5cb17c[0x0]==='2'&&this['interaction']['autoreplyExecuted']){logger[_0x2244('0xd')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x59c524,_0x2244('0x14'));return _0x148f2d[_0x2244('0x10')]();}var _0x192097={'ContactId':this[_0x2244('0x15')]['id'],'sentAt':moment()[_0x2244('0x16')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x2244('0x17')};if(this[_0x2244('0x18')]==='mail'){_0x192097[_0x2244('0xb')]=utils['getMustacheRender'](_0x5cb17c[0x2],this);}else{_0x192097[_0x2244('0xb')]=utils['getMustacheRender'](_0x5cb17c[0x1],this);}if(this['message']){_0x192097['to']=this['message'][_0x2244('0x19')]||'';if(this[_0x2244('0x18')]===_0x2244('0x1a')&&_0x5cb17c[0x1]==='1'){_0x192097['cc']=this[_0x2244('0x1b')]['cc']||'';}_0x192097['from']=this[_0x2244('0x1b')]['to']||'';_0x192097['phone']=this['message']['phone']||'';_0x192097[_0x2244('0x1c')]=!![];if(this[_0x2244('0x1b')][_0x2244('0x1d')]){_0x192097['subject']='';_0x192097['subject']+=_[_0x2244('0x1e')](this[_0x2244('0x1b')]['subject'],_0x2244('0x1f'))?'':'Re:\x20';_0x192097['subject']+=this['message']['subject'];}}if(this[_0x2244('0x18')]==='chat'){_0x192097[_0x2244('0x20')]=this[_0x2244('0x21')]['id'];}else{_0x192097[_['upperFirst'](this[_0x2244('0x18')])+_0x2244('0x22')]=this['account']['id'];}_0x192097[_['upperFirst'](this[_0x2244('0x18')])+_0x2244('0x23')]=this[_0x2244('0x24')]['id'];var _0x28dfb5=this['interaction'];if(rpc[this[_0x2244('0x18')]+'Message']){if(this[_0x2244('0x18')]==='mail'){var _0x663ea={'tls':{'rejectUnauthorized':![]}};if(this[_0x2244('0x21')][_0x2244('0x25')][_0x2244('0x26')]){_0x663ea[_0x2244('0x26')]=this[_0x2244('0x21')]['Smtp']['service'];}else{_0x663ea['host']=this[_0x2244('0x21')][_0x2244('0x25')][_0x2244('0x27')];_0x663ea[_0x2244('0x28')]=this[_0x2244('0x21')]['Smtp']['port'];_0x663ea[_0x2244('0x29')]=this[_0x2244('0x21')][_0x2244('0x25')][_0x2244('0x29')];}if(this[_0x2244('0x21')][_0x2244('0x25')][_0x2244('0x2a')]){_0x663ea[_0x2244('0x2b')]={'user':this[_0x2244('0x21')][_0x2244('0x25')][_0x2244('0x2c')],'pass':this[_0x2244('0x21')]['Smtp'][_0x2244('0x2d')]};}_0x192097['inReplyTo']=this[_0x2244('0x1b')][_0x2244('0x2e')];_0x192097[_0x2244('0x2f')]=_0x2244('0x30')+_[_0x2244('0x31')](_0x192097[_0x2244('0xb')],_0x2244('0x32'),_0x2244('0x33'))+_0x2244('0x34');_0x192097[_0x2244('0x35')]={'Auto-Submitted':_0x2244('0x36'),'X-Auto-Response-Suppress':'All','Precedence':_0x2244('0x37')};return mailRpc[_0x2244('0x38')](_0x663ea,_0x192097)[_0x2244('0x39')](function(_0x3ab3b9){logger[_0x2244('0xd')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x59c524);_0x192097[_0x2244('0x2e')]=_0x3ab3b9['message'][_0x2244('0x2e')];return rpc[_0x2d6b39+_0x2244('0x3a')]['create'](_0x192097);})[_0x2244('0x39')](function(_0x35df46){logger[_0x2244('0xd')](_0x2244('0xe'),_0x59c524,JSON[_0x2244('0x3b')](_0x35df46));})[_0x2244('0x3c')](function(_0xdbee6c){logger['error'](_0x2244('0x3d'),_0x59c524,JSON['stringify'](_0xdbee6c));})[_0x2244('0x3e')](function(){Promise[_0x2244('0x3f')]()['then'](function(){if(_0x5cb17c[0x0]!=='2'||_0x28dfb5[_0x2244('0x40')])return;return rpc[_0x2d6b39+_0x2244('0x41')][_0x2244('0x42')](_0x28dfb5['id'],{'autoreplyExecuted':!![]})[_0x2244('0x39')](function(_0xf707f7){logger[_0x2244('0xd')](_0x2244('0x43'),_0x59c524,JSON['stringify'](_0xf707f7));})[_0x2244('0x3c')](function(_0x5e82fe){logger[_0x2244('0x44')](_0x2244('0x45'),_0x59c524,JSON[_0x2244('0x3b')](_0x5e82fe));});})[_0x2244('0x39')](function(){_0x148f2d[_0x2244('0x10')]();});});}else{return rpc[this['channel']+_0x2244('0x3a')]['create'](_0x192097)[_0x2244('0x39')](function(_0x29c9c6){logger[_0x2244('0xd')](_0x2244('0xe'),_0x59c524,_0x192097['body']);})['catch'](function(_0x247ae0){logger[_0x2244('0x44')](_0x2244('0xe'),_0x59c524,JSON[_0x2244('0x3b')](_0x247ae0));})[_0x2244('0x3e')](function(){Promise[_0x2244('0x3f')]()['then'](function(){if(_0x5cb17c[0x0]!=='2'||_0x28dfb5['autoreplyExecuted'])return;return rpc[_0x2d6b39+'Interaction'][_0x2244('0x42')](_0x28dfb5['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3a2074){logger[_0x2244('0xd')](_0x2244('0x43'),_0x59c524,JSON[_0x2244('0x3b')](_0x3a2074));})['catch'](function(_0x469248){logger[_0x2244('0x44')](_0x2244('0x45'),_0x59c524,JSON['stringify'](_0x469248));});})[_0x2244('0x39')](function(){_0x148f2d[_0x2244('0x10')]();});});}}}catch(_0x2ef3f1){logger['error'](_0x2244('0xe'),_0x59c524,JSON[_0x2244('0x3b')](_0x2ef3f1));_0x148f2d[_0x2244('0x46')]();}};};
\ No newline at end of file
index d41d5f3..6e0f111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d83=['interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','finally','stop','stringify','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','info','system','Interaction','channel','update'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x9d83,0x197));var _0x39d8=function(_0x39914e,_0x1ec745){_0x39914e=_0x39914e-0x0;var _0x56350b=_0x9d83[_0x39914e];return _0x56350b;};'use strict';var moment=require(_0x39d8('0x0'));var logger=require(_0x39d8('0x1'))(_0x39d8('0x2'));var rpc={'chatInteraction':require(_0x39d8('0x3')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x39d8('0x4')),'mailInteraction':require(_0x39d8('0x5')),'faxInteraction':require(_0x39d8('0x6')),'whatsappInteraction':require(_0x39d8('0x7'))};exports['consequence']=function(_0x3cc580,_0x3da89f,_0x4026ac,_0x457e39){return function(_0x2f6905){try{logger[_0x39d8('0x8')]('[%s][CLOSE]\x20reason\x20%s',_0x3cc580,_0x3da89f[0x0]);var _0x28f5c9={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x39d8('0x9'),'disposition':_0x3da89f[0x0]};if(rpc[_0x457e39['channel']+_0x39d8('0xa')]){rpc[_0x457e39[_0x39d8('0xb')]+'Interaction'][_0x39d8('0xc')](_0x457e39[_0x39d8('0xd')]['id'],_0x28f5c9)[_0x39d8('0xe')](function(_0x1926d8){logger['info'](_0x39d8('0xf'),_0x3cc580,_0x457e39[_0x39d8('0xd')]['id']);})['catch'](function(_0x1effe3){logger[_0x39d8('0x10')](_0x39d8('0x11'),_0x3cc580,JSON['stringify'](_0x1effe3));})[_0x39d8('0x12')](function(){_0x2f6905[_0x39d8('0x13')]();});}}catch(_0x546e73){logger[_0x39d8('0x10')](_0x39d8('0x11'),_0x3cc580,JSON[_0x39d8('0x14')](_0x546e73));_0x2f6905[_0x39d8('0x13')]();}};};
\ No newline at end of file
+var _0x9165=['consequence','info','[%s][CLOSE]\x20reason\x20%s','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','[%s][CLOSE]\x20%s','finally','stop','error','stringify','moment','routing','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction'];(function(_0x333067,_0x325a8b){var _0x80a5eb=function(_0x3e8430){while(--_0x3e8430){_0x333067['push'](_0x333067['shift']());}};_0x80a5eb(++_0x325a8b);}(_0x9165,0x1de));var _0x5916=function(_0x279cfb,_0x5dbbff){_0x279cfb=_0x279cfb-0x0;var _0x1acbd2=_0x9165[_0x279cfb];return _0x1acbd2;};'use strict';var moment=require(_0x5916('0x0'));var logger=require('../../../../config/logger')(_0x5916('0x1'));var rpc={'chatInteraction':require(_0x5916('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x5916('0x3')),'mailInteraction':require(_0x5916('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x5916('0x5')]=function(_0x3f1cbb,_0x1f003e,_0x453c91,_0x2c7e72){return function(_0x43c8b1){try{logger[_0x5916('0x6')](_0x5916('0x7'),_0x3f1cbb,_0x1f003e[0x0]);var _0x7f2d9c={'closed':0x1,'closedAt':moment()['format'](_0x5916('0x8')),'closeReason':_0x5916('0x9'),'disposition':_0x1f003e[0x0]};if(rpc[_0x2c7e72[_0x5916('0xa')]+_0x5916('0xb')]){rpc[_0x2c7e72['channel']+_0x5916('0xb')][_0x5916('0xc')](_0x2c7e72['interaction']['id'],_0x7f2d9c)[_0x5916('0xd')](function(_0x64e747){logger[_0x5916('0x6')](_0x5916('0xe'),_0x3f1cbb,_0x2c7e72[_0x5916('0xf')]['id']);})['catch'](function(_0x5d9596){logger['error'](_0x5916('0x10'),_0x3f1cbb,JSON['stringify'](_0x5d9596));})[_0x5916('0x11')](function(){_0x43c8b1[_0x5916('0x12')]();});}}catch(_0x56d1f0){logger[_0x5916('0x13')](_0x5916('0x10'),_0x3f1cbb,JSON[_0x5916('0x14')](_0x56d1f0));_0x43c8b1[_0x5916('0x12')]();}};};
\ No newline at end of file
index b8d72a2..130314b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1dc=['[%s][DIALOGFLOW]\x20%s','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','phone','chat','ChatWebsiteId','AccountId','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','catch','error','stringify','finally','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','then','result','fulfillment','speech','providerName','providerResponse','metadata','lodash','moment','apiai-promise','./utils','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info'];(function(_0x105aa1,_0x181473){var _0x31c0a6=function(_0x3c5635){while(--_0x3c5635){_0x105aa1['push'](_0x105aa1['shift']());}};_0x31c0a6(++_0x181473);}(_0xc1dc,0x84));var _0xcc1d=function(_0x3175cb,_0x5409c6){_0x3175cb=_0x3175cb-0x0;var _0x5dcbcf=_0xc1dc[_0x3175cb];return _0x5dcbcf;};'use strict';var _=require(_0xcc1d('0x0'));var moment=require(_0xcc1d('0x1'));var apiai=require(_0xcc1d('0x2'));var md5=require('md5');var utils=require(_0xcc1d('0x3'));var logger=require('../../../../config/logger')(_0xcc1d('0x4'));var rpc={'chatMessage':require(_0xcc1d('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xcc1d('0x6')),'smsMessage':require(_0xcc1d('0x7')),'faxMessage':require(_0xcc1d('0x8')),'whatsappMessage':require(_0xcc1d('0x9'))};exports[_0xcc1d('0xa')]=function(_0x597eb8,_0x4dc8ee){return function(_0x23e085){try{if(!_[_0xcc1d('0xb')](this[_0xcc1d('0xc')][_0xcc1d('0xd')])){logger[_0xcc1d('0xe')](_0xcc1d('0xf'),_0x597eb8,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x23e085[_0xcc1d('0x10')]();}var _0x27e81c={'ContactId':this[_0xcc1d('0x11')]['id'],'sentAt':moment()[_0xcc1d('0x12')](_0xcc1d('0x13')),'direction':_0xcc1d('0x14')};if(this['channel']===_0xcc1d('0x15')||this[_0xcc1d('0x16')]==='whatsapp'){_0x27e81c[_0xcc1d('0x17')]=this[_0xcc1d('0xc')][_0xcc1d('0x17')];}var _0x45b520=this[_0xcc1d('0x16')];if(_0x45b520===_0xcc1d('0x18')){_0x27e81c[_0xcc1d('0x19')]=this['account']['id'];}else{_0x27e81c[_['upperFirst'](_0x45b520)+_0xcc1d('0x1a')]=this['account']['id'];}_0x27e81c[_[_0xcc1d('0x1b')](_0x45b520)+_0xcc1d('0x1c')]=this[_0xcc1d('0xc')]['id'];if(this[_0xcc1d('0xc')][_0xcc1d('0x1d')]){var _0x2bf07a=_0x4dc8ee[0x2];if(!_[_0xcc1d('0x1e')](_0x2bf07a)){_0x27e81c[_0xcc1d('0x1f')]=utils[_0xcc1d('0x20')](_0x2bf07a,this);return rpc[_0x45b520+_0xcc1d('0x21')]['create'](_0x27e81c)['then'](function(_0x2ee388){logger['info'](_0xcc1d('0xf'),_0x597eb8,_0x27e81c[_0xcc1d('0x1f')]);})[_0xcc1d('0x22')](function(_0x104c54){logger[_0xcc1d('0x23')](_0xcc1d('0xf'),_0x597eb8,JSON[_0xcc1d('0x24')](_0x104c54));})[_0xcc1d('0x25')](function(){logger[_0xcc1d('0xe')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x597eb8);_0x23e085[_0xcc1d('0x26')]();});}else{logger['info'](_0xcc1d('0x27'),_0x597eb8);_0x23e085[_0xcc1d('0x26')]();}}else{var _0x167b9f=this;var _0x5a2df6=apiai(_0x4dc8ee[0x0],{'language':_0x4dc8ee[0x1]||'en'});return _0x5a2df6[_0xcc1d('0x28')](this[_0xcc1d('0x29')][_0xcc1d('0x1f')],{'sessionId':md5(this[_0xcc1d('0xc')]['id'])})[_0xcc1d('0x2a')](function(_0x5e2f74){_0x167b9f[_0xcc1d('0x1f')]['dialogflow']=_0x5e2f74;_0x27e81c[_0xcc1d('0x1f')]=_0x5e2f74[_0xcc1d('0x2b')][_0xcc1d('0x2c')][_0xcc1d('0x2d')];_0x27e81c[_0xcc1d('0x2e')]='dialogflow';_0x27e81c[_0xcc1d('0x2f')]=JSON[_0xcc1d('0x24')](_0x5e2f74);return rpc[_0x45b520+_0xcc1d('0x21')]['create'](_0x27e81c)[_0xcc1d('0x2a')](function(_0x491edb){logger[_0xcc1d('0xe')]('[%s][DIALOGFLOW]\x20%s',_0x597eb8,_0x27e81c[_0xcc1d('0x1f')]);if(_0x5e2f74[_0xcc1d('0x2b')][_0xcc1d('0x30')]['endConversation']){_0x23e085[_0xcc1d('0x10')]();}else{_0x23e085[_0xcc1d('0x26')]();}})[_0xcc1d('0x22')](function(_0x4a406f){logger[_0xcc1d('0x23')]('[%s][DIALOGFLOW]\x20%s',_0x597eb8,JSON[_0xcc1d('0x24')](_0x4a406f));_0x23e085[_0xcc1d('0x10')]();});})[_0xcc1d('0x22')](function(_0x380bd2){logger[_0xcc1d('0x23')]('[%s][DIALOGFLOW]\x20%s',_0x597eb8,_0x380bd2[_0xcc1d('0x29')]);_0x23e085[_0xcc1d('0x10')]();});}}catch(_0x4cbe87){logger[_0xcc1d('0x23')]('[%s][DIALOGFLOW]\x20%s',_0x597eb8,JSON[_0xcc1d('0x24')](_0x4cbe87));_0x23e085['stop']();}};};
\ No newline at end of file
+var _0x02b6=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message','then','dialogflow','fulfillment','speech','providerResponse','result','metadata','endConversation','error','stringify','lodash','apiai-promise','md5','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','out','sms','channel','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','body','getMustacheRender','Message','create','catch','finally'];(function(_0x198d08,_0x1bd587){var _0x5a5ffc=function(_0x73490b){while(--_0x73490b){_0x198d08['push'](_0x198d08['shift']());}};_0x5a5ffc(++_0x1bd587);}(_0x02b6,0xfe));var _0x602b=function(_0x27bcd9,_0xc60212){_0x27bcd9=_0x27bcd9-0x0;var _0x373e4a=_0x02b6[_0x27bcd9];return _0x373e4a;};'use strict';var _=require(_0x602b('0x0'));var moment=require('moment');var apiai=require(_0x602b('0x1'));var md5=require(_0x602b('0x2'));var utils=require(_0x602b('0x3'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x602b('0x4')),'openchannelMessage':require(_0x602b('0x5')),'mailMessage':require(_0x602b('0x6')),'smsMessage':require(_0x602b('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x602b('0x8'))};exports['consequence']=function(_0x265e3b,_0xac6c85){return function(_0x140c8a){try{if(!_[_0x602b('0x9')](this[_0x602b('0xa')][_0x602b('0xb')])){logger[_0x602b('0xc')](_0x602b('0xd'),_0x265e3b,_0x602b('0xe'));return _0x140c8a[_0x602b('0xf')]();}var _0x4fb0a2={'ContactId':this[_0x602b('0x10')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x602b('0x11')};if(this['channel']===_0x602b('0x12')||this[_0x602b('0x13')]==='whatsapp'){_0x4fb0a2[_0x602b('0x14')]=this[_0x602b('0xa')][_0x602b('0x14')];}var _0x56a4d3=this[_0x602b('0x13')];if(_0x56a4d3===_0x602b('0x15')){_0x4fb0a2[_0x602b('0x16')]=this[_0x602b('0x17')]['id'];}else{_0x4fb0a2[_[_0x602b('0x18')](_0x56a4d3)+_0x602b('0x19')]=this[_0x602b('0x17')]['id'];}_0x4fb0a2[_['upperFirst'](_0x56a4d3)+'InteractionId']=this[_0x602b('0xa')]['id'];if(this[_0x602b('0xa')][_0x602b('0x1a')]){var _0x18abb6=_0xac6c85[0x2];if(!_[_0x602b('0x1b')](_0x18abb6)){_0x4fb0a2[_0x602b('0x1c')]=utils[_0x602b('0x1d')](_0x18abb6,this);return rpc[_0x56a4d3+_0x602b('0x1e')][_0x602b('0x1f')](_0x4fb0a2)['then'](function(_0x48d992){logger[_0x602b('0xc')](_0x602b('0xd'),_0x265e3b,_0x4fb0a2['body']);})[_0x602b('0x20')](function(_0x581a3b){logger['error'](_0x602b('0xd'),_0x265e3b,JSON['stringify'](_0x581a3b));})[_0x602b('0x21')](function(){logger['info'](_0x602b('0x22'),_0x265e3b);_0x140c8a[_0x602b('0x23')]();});}else{logger[_0x602b('0xc')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x265e3b);_0x140c8a[_0x602b('0x23')]();}}else{var _0x1264c8=this;var _0x580b66=apiai(_0xac6c85[0x0],{'language':_0xac6c85[0x1]||'en'});return _0x580b66[_0x602b('0x24')](this[_0x602b('0x25')][_0x602b('0x1c')],{'sessionId':md5(this[_0x602b('0xa')]['id'])})[_0x602b('0x26')](function(_0xb3beff){_0x1264c8[_0x602b('0x1c')][_0x602b('0x27')]=_0xb3beff;_0x4fb0a2[_0x602b('0x1c')]=_0xb3beff['result'][_0x602b('0x28')][_0x602b('0x29')];_0x4fb0a2['providerName']=_0x602b('0x27');_0x4fb0a2[_0x602b('0x2a')]=JSON['stringify'](_0xb3beff);return rpc[_0x56a4d3+_0x602b('0x1e')][_0x602b('0x1f')](_0x4fb0a2)[_0x602b('0x26')](function(_0x2bb5b7){logger[_0x602b('0xc')](_0x602b('0xd'),_0x265e3b,_0x4fb0a2[_0x602b('0x1c')]);if(_0xb3beff[_0x602b('0x2b')][_0x602b('0x2c')][_0x602b('0x2d')]){_0x140c8a[_0x602b('0xf')]();}else{_0x140c8a['stop']();}})[_0x602b('0x20')](function(_0x582ccc){logger[_0x602b('0x2e')](_0x602b('0xd'),_0x265e3b,JSON[_0x602b('0x2f')](_0x582ccc));_0x140c8a[_0x602b('0xf')]();});})[_0x602b('0x20')](function(_0x3647cf){logger[_0x602b('0x2e')](_0x602b('0xd'),_0x265e3b,_0x3647cf[_0x602b('0x25')]);_0x140c8a[_0x602b('0xf')]();});}}catch(_0x407f54){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x265e3b,JSON[_0x602b('0x2f')](_0x407f54));_0x140c8a[_0x602b('0x23')]();}};};
\ No newline at end of file
index 9cbff45..175f89c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe811=['interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','Message','stringify','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','replace','SessionsClient','sessionPath','detectIntent','then','length','dialogflowV2','diagnosticInfo','DIALOGFLOWV2_ACTION','queryResult','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','fields','end_conversation','boolValue','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','push','fulfillmentText','all','lodash','dialogflow','moment','bluebird','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','create','info','[%s][DIALOGFLOWV2]\x20%s','body','catch','error','consequence','isNil'];(function(_0x1007b3,_0x344f7f){var _0x7cf215=function(_0x5e25a0){while(--_0x5e25a0){_0x1007b3['push'](_0x1007b3['shift']());}};_0x7cf215(++_0x344f7f);}(_0xe811,0x1a8));var _0x1e81=function(_0x1ed7f3,_0x5df5b0){_0x1ed7f3=_0x1ed7f3-0x0;var _0x167139=_0xe811[_0x1ed7f3];return _0x167139;};'use strict';var _=require(_0x1e81('0x0'));var dialogflow=require(_0x1e81('0x1'));var md5=require('md5');var moment=require(_0x1e81('0x2'));var Promise=require(_0x1e81('0x3'));var logger=require('../../../../config/logger')(_0x1e81('0x4'));var utils=require('./utils');var rpc={'chatMessage':require(_0x1e81('0x5')),'openchannelMessage':require(_0x1e81('0x6')),'mailMessage':require(_0x1e81('0x7')),'smsMessage':require(_0x1e81('0x8')),'faxMessage':require(_0x1e81('0x9')),'whatsappMessage':require(_0x1e81('0xa'))};function createMessage(_0x2cd6ad,_0x1fd11a,_0x3be533,_0x1d8276){return new Promise(function(_0x310bc1,_0x3f8a76){var _0x3e8e4a=_[_0x1e81('0xb')](_0x3be533);_0x3e8e4a['body']=_0x1d8276;return rpc[_0x1fd11a+'Message'][_0x1e81('0xc')](_0x3e8e4a)['then'](function(){logger[_0x1e81('0xd')](_0x1e81('0xe'),_0x2cd6ad,_0x3e8e4a[_0x1e81('0xf')]);_0x310bc1();})[_0x1e81('0x10')](function(_0xf698f3){logger[_0x1e81('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x2cd6ad,JSON['stringify'](_0xf698f3));_0x3f8a76(_0xf698f3);});});}exports[_0x1e81('0x12')]=function(_0x5883f7,_0x166d40){return function(_0x111924){try{if(!_[_0x1e81('0x13')](this[_0x1e81('0x14')]['UserId'])){logger[_0x1e81('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x5883f7,_0x1e81('0x15'));return _0x111924[_0x1e81('0x16')]();}var _0x2c7b6b={'ContactId':this[_0x1e81('0x17')]['id'],'sentAt':moment()[_0x1e81('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x1e81('0x19')]===_0x1e81('0x1a')||this[_0x1e81('0x19')]==='whatsapp'){_0x2c7b6b['phone']=this[_0x1e81('0x14')][_0x1e81('0x1b')];}var _0x58876f=this[_0x1e81('0x19')];if(_0x58876f===_0x1e81('0x1c')){_0x2c7b6b[_0x1e81('0x1d')]=this[_0x1e81('0x1e')]['id'];}else{_0x2c7b6b[_[_0x1e81('0x1f')](_0x58876f)+_0x1e81('0x20')]=this[_0x1e81('0x1e')]['id'];}_0x2c7b6b[_[_0x1e81('0x1f')](_0x58876f)+_0x1e81('0x21')]=this[_0x1e81('0x14')]['id'];if(this[_0x1e81('0x14')][_0x1e81('0x22')]){var _0x258fe4=_0x166d40[0x4];if(!_['isEmpty'](_0x258fe4)){_0x2c7b6b[_0x1e81('0xf')]=utils['getMustacheRender'](_0x258fe4,this);return rpc[_0x58876f+_0x1e81('0x23')][_0x1e81('0xc')](_0x2c7b6b)['then'](function(_0x733eba){logger[_0x1e81('0xd')](_0x1e81('0xe'),_0x5883f7,_0x2c7b6b[_0x1e81('0xf')]);})[_0x1e81('0x10')](function(_0x7eb085){logger[_0x1e81('0x11')](_0x1e81('0xe'),_0x5883f7,JSON[_0x1e81('0x24')](_0x7eb085));})[_0x1e81('0x25')](function(){logger[_0x1e81('0xd')](_0x1e81('0x26'),_0x5883f7);_0x111924['stop']();});}else{logger['info'](_0x1e81('0x27'),_0x5883f7);_0x111924[_0x1e81('0x28')]();}}else{var _0xf0981b=this;var _0x3d7b15=_0x166d40[0x2][_0x1e81('0x29')](/\\n/g,'\x0a');var _0x1e2c4c={'credentials':{'private_key':_0x3d7b15,'client_email':_0x166d40[0x1]}};var _0x2d9c88=new dialogflow[(_0x1e81('0x2a'))](_0x1e2c4c);var _0x214f34=_0x2d9c88[_0x1e81('0x2b')](_0x166d40[0x0],md5(_0xf0981b[_0x1e81('0x14')]['id']));var _0x1be496={'session':_0x214f34,'queryInput':{'text':{'text':_0xf0981b['message']['body'],'languageCode':_0x166d40[0x3]||'en'}}};return _0x2d9c88[_0x1e81('0x2c')](_0x1be496)[_0x1e81('0x2d')](function(_0x3f3e5d){if(_0x3f3e5d&&_0x3f3e5d[_0x1e81('0x2e')]){_0xf0981b[_0x1e81('0xf')][_0x1e81('0x2f')]=_0x3f3e5d;var _0x523d26=_0x3f3e5d[0x0];var _0x4f8439=_0x523d26['queryResult'][_0x1e81('0x30')]&&_0x523d26['queryResult'][_0x1e81('0x30')]['fields']?_0x523d26['queryResult'][_0x1e81('0x30')]['fields']['end_conversation']['boolValue']:![];_0xf0981b['body'][_0x1e81('0x31')]=_0x523d26[_0x1e81('0x32')]['action'];_0xf0981b[_0x1e81('0xf')][_0x1e81('0x33')]=_0x523d26[_0x1e81('0x32')][_0x1e81('0x34')];_0xf0981b[_0x1e81('0xf')][_0x1e81('0x35')]=_0x523d26[_0x1e81('0x32')][_0x1e81('0x30')]&&_0x523d26[_0x1e81('0x32')][_0x1e81('0x30')][_0x1e81('0x36')]?_0x523d26[_0x1e81('0x32')]['diagnosticInfo'][_0x1e81('0x36')][_0x1e81('0x37')][_0x1e81('0x38')]:![];_0xf0981b['body'][_0x1e81('0x39')]=_0x523d26[_0x1e81('0x32')]['intent'][_0x1e81('0x3a')];_0xf0981b[_0x1e81('0xf')][_0x1e81('0x3b')]=_0x523d26[_0x1e81('0x32')][_0x1e81('0x3c')][_0x1e81('0x3d')];_0xf0981b[_0x1e81('0xf')][_0x1e81('0x3e')]=_0x523d26['queryResult'][_0x1e81('0x3c')][_0x1e81('0x3f')];_0xf0981b[_0x1e81('0xf')][_0x1e81('0x40')]=_0x523d26['queryResult'][_0x1e81('0x41')];_0xf0981b['body']['DIALOGFLOWV2_QUERYTEXT']=_0x523d26['queryResult'][_0x1e81('0x42')];_0xf0981b[_0x1e81('0xf')][_0x1e81('0x43')]=_0x523d26['queryResult'][_0x1e81('0x44')];_0x2c7b6b[_0x1e81('0x45')]=_0x1e81('0x2f');_0x2c7b6b[_0x1e81('0x46')]=JSON[_0x1e81('0x24')](_0x3f3e5d);var _0x42c761=[];for(var _0x3a9d20=0x0;_0x3a9d20<_0x3f3e5d[_0x1e81('0x2e')];_0x3a9d20++){var _0x140e8c=_0x3f3e5d[_0x3a9d20];if(_0x140e8c&&_0x140e8c['queryResult']&&_0x140e8c[_0x1e81('0x32')]['fulfillmentText']){_0x42c761[_0x1e81('0x47')](createMessage(_0x5883f7,_0x58876f,_0x2c7b6b,_0x140e8c['queryResult'][_0x1e81('0x48')]));}}return Promise[_0x1e81('0x49')](_0x42c761)[_0x1e81('0x2d')](function(){if(_0x4f8439){_0x111924[_0x1e81('0x16')]();}else{_0x111924[_0x1e81('0x28')]();}})[_0x1e81('0x10')](function(_0x43705e){logger[_0x1e81('0x11')](_0x1e81('0xe'),_0x5883f7,JSON[_0x1e81('0x24')](_0x43705e));_0x111924['next']();});}})[_0x1e81('0x10')](function(_0x3793ca){logger[_0x1e81('0x11')](_0x1e81('0xe'),_0x5883f7,_0x3793ca['message']);_0x111924[_0x1e81('0x16')]();});}}catch(_0x36e2dc){logger[_0x1e81('0x11')](_0x1e81('0xe'),_0x5883f7,JSON[_0x1e81('0x24')](_0x36e2dc));_0x111924['stop']();}};};
\ No newline at end of file
+var _0xe539=['queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','next','lodash','md5','moment','bluebird','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','InteractionId','isEmpty','getMustacheRender','Message','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT'];(function(_0x40551a,_0xa396b2){var _0x138c3b=function(_0x4f8475){while(--_0x4f8475){_0x40551a['push'](_0x40551a['shift']());}};_0x138c3b(++_0xa396b2);}(_0xe539,0x164));var _0x9e53=function(_0x2e6dbf,_0x57dd06){_0x2e6dbf=_0x2e6dbf-0x0;var _0x2680e5=_0xe539[_0x2e6dbf];return _0x2680e5;};'use strict';var _=require(_0x9e53('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x9e53('0x1'));var moment=require(_0x9e53('0x2'));var Promise=require(_0x9e53('0x3'));var logger=require(_0x9e53('0x4'))(_0x9e53('0x5'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x9e53('0x6')),'mailMessage':require(_0x9e53('0x7')),'smsMessage':require(_0x9e53('0x8')),'faxMessage':require(_0x9e53('0x9')),'whatsappMessage':require(_0x9e53('0xa'))};function createMessage(_0x50ba96,_0x51896e,_0x186308,_0x371c4e){return new Promise(function(_0x2e3340,_0x2a4bb7){var _0x4bc2d9=_['clone'](_0x186308);_0x4bc2d9[_0x9e53('0xb')]=_0x371c4e;return rpc[_0x51896e+'Message'][_0x9e53('0xc')](_0x4bc2d9)[_0x9e53('0xd')](function(){logger[_0x9e53('0xe')](_0x9e53('0xf'),_0x50ba96,_0x4bc2d9['body']);_0x2e3340();})[_0x9e53('0x10')](function(_0x5df31c){logger[_0x9e53('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x50ba96,JSON[_0x9e53('0x12')](_0x5df31c));_0x2a4bb7(_0x5df31c);});});}exports[_0x9e53('0x13')]=function(_0x4adbba,_0x389dcd){return function(_0x1f8477){try{if(!_[_0x9e53('0x14')](this[_0x9e53('0x15')][_0x9e53('0x16')])){logger['info'](_0x9e53('0xf'),_0x4adbba,_0x9e53('0x17'));return _0x1f8477['next']();}var _0x2c1c22={'ContactId':this[_0x9e53('0x18')]['id'],'sentAt':moment()[_0x9e53('0x19')](_0x9e53('0x1a')),'direction':_0x9e53('0x1b')};if(this[_0x9e53('0x1c')]==='sms'||this[_0x9e53('0x1c')]===_0x9e53('0x1d')){_0x2c1c22[_0x9e53('0x1e')]=this[_0x9e53('0x15')][_0x9e53('0x1e')];}var _0xf0f1ed=this[_0x9e53('0x1c')];if(_0xf0f1ed===_0x9e53('0x1f')){_0x2c1c22[_0x9e53('0x20')]=this[_0x9e53('0x21')]['id'];}else{_0x2c1c22[_['upperFirst'](_0xf0f1ed)+_0x9e53('0x22')]=this[_0x9e53('0x21')]['id'];}_0x2c1c22[_['upperFirst'](_0xf0f1ed)+_0x9e53('0x23')]=this['interaction']['id'];if(this[_0x9e53('0x15')]['created']){var _0x1a844c=_0x389dcd[0x4];if(!_[_0x9e53('0x24')](_0x1a844c)){_0x2c1c22[_0x9e53('0xb')]=utils[_0x9e53('0x25')](_0x1a844c,this);return rpc[_0xf0f1ed+_0x9e53('0x26')]['create'](_0x2c1c22)[_0x9e53('0xd')](function(_0x48635f){logger[_0x9e53('0xe')]('[%s][DIALOGFLOWV2]\x20%s',_0x4adbba,_0x2c1c22['body']);})[_0x9e53('0x10')](function(_0x2415b8){logger['error'](_0x9e53('0xf'),_0x4adbba,JSON[_0x9e53('0x12')](_0x2415b8));})[_0x9e53('0x27')](function(){logger[_0x9e53('0xe')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x4adbba);_0x1f8477[_0x9e53('0x28')]();});}else{logger['info'](_0x9e53('0x29'),_0x4adbba);_0x1f8477[_0x9e53('0x28')]();}}else{var _0x1693a9=this;var _0x249dc8=_0x389dcd[0x2][_0x9e53('0x2a')](/\\n/g,'\x0a');var _0x3b7d2b={'credentials':{'private_key':_0x249dc8,'client_email':_0x389dcd[0x1]}};var _0xae422a=new dialogflow[(_0x9e53('0x2b'))](_0x3b7d2b);var _0x56ab62=_0xae422a[_0x9e53('0x2c')](_0x389dcd[0x0],md5(_0x1693a9[_0x9e53('0x15')]['id']));var _0x2e6b7b={'session':_0x56ab62,'queryInput':{'text':{'text':_0x1693a9[_0x9e53('0x2d')]['body'],'languageCode':_0x389dcd[0x3]||'en'}}};return _0xae422a[_0x9e53('0x2e')](_0x2e6b7b)[_0x9e53('0xd')](function(_0x494395){if(_0x494395&&_0x494395[_0x9e53('0x2f')]){_0x1693a9[_0x9e53('0xb')][_0x9e53('0x30')]=_0x494395;var _0x29f36e=_0x494395[0x0];var _0x458468=_0x29f36e[_0x9e53('0x31')][_0x9e53('0x32')]&&_0x29f36e['queryResult'][_0x9e53('0x32')][_0x9e53('0x33')]?_0x29f36e['queryResult'][_0x9e53('0x32')][_0x9e53('0x33')][_0x9e53('0x34')][_0x9e53('0x35')]:![];_0x1693a9[_0x9e53('0xb')][_0x9e53('0x36')]=_0x29f36e[_0x9e53('0x31')]['action'];_0x1693a9[_0x9e53('0xb')][_0x9e53('0x37')]=_0x29f36e['queryResult']['allRequiredParamsPresent'];_0x1693a9[_0x9e53('0xb')][_0x9e53('0x38')]=_0x29f36e[_0x9e53('0x31')][_0x9e53('0x32')]&&_0x29f36e[_0x9e53('0x31')][_0x9e53('0x32')][_0x9e53('0x33')]?_0x29f36e[_0x9e53('0x31')][_0x9e53('0x32')][_0x9e53('0x33')][_0x9e53('0x34')]['boolValue']:![];_0x1693a9['body'][_0x9e53('0x39')]=_0x29f36e[_0x9e53('0x31')][_0x9e53('0x3a')]['name'];_0x1693a9['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x29f36e[_0x9e53('0x31')]['intent'][_0x9e53('0x3b')];_0x1693a9[_0x9e53('0xb')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x29f36e[_0x9e53('0x31')][_0x9e53('0x3a')][_0x9e53('0x3c')];_0x1693a9[_0x9e53('0xb')][_0x9e53('0x3d')]=_0x29f36e['queryResult'][_0x9e53('0x3e')];_0x1693a9[_0x9e53('0xb')][_0x9e53('0x3f')]=_0x29f36e[_0x9e53('0x31')][_0x9e53('0x40')];_0x1693a9[_0x9e53('0xb')][_0x9e53('0x41')]=_0x29f36e[_0x9e53('0x31')][_0x9e53('0x42')];_0x2c1c22['providerName']=_0x9e53('0x30');_0x2c1c22[_0x9e53('0x43')]=JSON[_0x9e53('0x12')](_0x494395);var _0xb7bfa7=[];for(var _0x100d91=0x0;_0x100d91<_0x494395[_0x9e53('0x2f')];_0x100d91++){var _0x29c59b=_0x494395[_0x100d91];if(_0x29c59b&&_0x29c59b['queryResult']&&_0x29c59b[_0x9e53('0x31')][_0x9e53('0x44')]){_0xb7bfa7['push'](createMessage(_0x4adbba,_0xf0f1ed,_0x2c1c22,_0x29c59b[_0x9e53('0x31')]['fulfillmentText']));}}return Promise['all'](_0xb7bfa7)[_0x9e53('0xd')](function(){if(_0x458468){_0x1f8477[_0x9e53('0x45')]();}else{_0x1f8477[_0x9e53('0x28')]();}})[_0x9e53('0x10')](function(_0x2088bc){logger['error'](_0x9e53('0xf'),_0x4adbba,JSON[_0x9e53('0x12')](_0x2088bc));_0x1f8477['next']();});}})[_0x9e53('0x10')](function(_0x60d103){logger[_0x9e53('0x11')](_0x9e53('0xf'),_0x4adbba,_0x60d103['message']);_0x1f8477['next']();});}}catch(_0x3e03ac){logger[_0x9e53('0x11')](_0x9e53('0xf'),_0x4adbba,JSON[_0x9e53('0x12')](_0x3e03ac));_0x1f8477[_0x9e53('0x28')]();}};};
\ No newline at end of file
index c49bea8..5eccfb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0eb=['stop','condition','priorityTrue','priorityFalse','info','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','message','validate','lodash','html-to-text','./utils','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','fromString','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map','join'];(function(_0x393bbd,_0x4ee68a){var _0x1e1741=function(_0x23de9e){while(--_0x23de9e){_0x393bbd['push'](_0x393bbd['shift']());}};_0x1e1741(++_0x4ee68a);}(_0xf0eb,0x137));var _0xbf0e=function(_0x236d24,_0x29e80a){_0x236d24=_0x236d24-0x0;var _0x1574cf=_0xf0eb[_0x236d24];return _0x1574cf;};'use strict';var schema=require(_0xbf0e('0x0'));var _=require(_0xbf0e('0x1'));var htmlToText=require(_0xbf0e('0x2'));var utils=require(_0xbf0e('0x3'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0xbf0e('0x4'),'required':!![],'message':_0xbf0e('0x5')},'priorityTrue':{'type':_0xbf0e('0x6'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':'number','message':'priority\x20false\x20is\x20a\x20number'}});exports['consequence']=function(_0x21ac55,_0x1fd75f){return function(_0x55ce9b){try{var _0x226e01={'condition':htmlToText[_0xbf0e('0x7')](utils[_0xbf0e('0x8')](_0x1fd75f[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1fd75f[0x1],'priorityFalse':_0x1fd75f[0x2]};var _0x162495=gotoif['validate'](_0x226e01,{'typecast':!![]});if(_0x162495[_0xbf0e('0x9')]){logger[_0xbf0e('0xa')](_0xbf0e('0xb'),_0x21ac55,_[_0xbf0e('0xc')](_0x162495,'message')[_0xbf0e('0xd')](',\x20'));_0x55ce9b[_0xbf0e('0xe')]();}else{try{var _0x4ac71c=eval('('+_0x226e01[_0xbf0e('0xf')]+')');var _0xaa2554=_0x4ac71c?_0x226e01[_0xbf0e('0x10')]:_0x226e01[_0xbf0e('0x11')];logger[_0xbf0e('0x12')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x21ac55,_0x226e01['condition'],_0x4ac71c,_0xaa2554||'next');if(_0xaa2554){var _0x2f7f0b=_[_0xbf0e('0x13')](_0x55ce9b[_0xbf0e('0x14')](),{'p':_0xaa2554});if(_0x2f7f0b>=0x0){logger['info'](_0xbf0e('0x15'),_0x21ac55,_0xaa2554||'next',_0x2f7f0b);_0x55ce9b[_0xbf0e('0x16')](_0x2f7f0b);}else{logger['info'](_0xbf0e('0x17'),_0x21ac55,_0xaa2554||_0xbf0e('0x16'));_0x55ce9b['stop']();}}else{_0x55ce9b['next']();}}catch(_0x11e262){logger[_0xbf0e('0xa')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x21ac55,_0x11e262[_0xbf0e('0x18')]);_0x55ce9b['stop']();}}}catch(_0x535168){logger[_0xbf0e('0xa')](_0xbf0e('0xb'),_0x21ac55,JSON['stringify'](_0x535168));_0x55ce9b['stop']();}};};
\ No newline at end of file
+var _0xe94f=['priorityTrue','priorityFalse','info','condition','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','fromString','replace','error','[%s][GOTOIF]\x20%s','map','message','join'];(function(_0x5c9307,_0x5b97e4){var _0x373e29=function(_0xefebbd){while(--_0xefebbd){_0x5c9307['push'](_0x5c9307['shift']());}};_0x373e29(++_0x5b97e4);}(_0xe94f,0x167));var _0xfe94=function(_0x141e03,_0x18340e){_0x141e03=_0x141e03-0x0;var _0x2074e3=_0xe94f[_0x141e03];return _0x2074e3;};'use strict';var schema=require(_0xfe94('0x0'));var _=require(_0xfe94('0x1'));var htmlToText=require(_0xfe94('0x2'));var utils=require(_0xfe94('0x3'));var logger=require(_0xfe94('0x4'))(_0xfe94('0x5'));var gotoif=schema({'condition':{'type':_0xfe94('0x6'),'required':!![],'message':_0xfe94('0x7')},'priorityTrue':{'type':_0xfe94('0x8'),'message':_0xfe94('0x9')},'priorityFalse':{'type':_0xfe94('0x8'),'message':_0xfe94('0xa')}});exports['consequence']=function(_0x51302c,_0x45157d){return function(_0x4ef545){try{var _0x1510aa={'condition':htmlToText[_0xfe94('0xb')](utils['getMustacheRender'](_0x45157d[0x0],this),{'wordwrap':![]})[_0xfe94('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x45157d[0x1],'priorityFalse':_0x45157d[0x2]};var _0x5545b0=gotoif[_0xfe94('0x0')](_0x1510aa,{'typecast':!![]});if(_0x5545b0['length']){logger[_0xfe94('0xd')](_0xfe94('0xe'),_0x51302c,_[_0xfe94('0xf')](_0x5545b0,_0xfe94('0x10'))[_0xfe94('0x11')](',\x20'));_0x4ef545['stop']();}else{try{var _0x4a8bab=eval('('+_0x1510aa['condition']+')');var _0xad7834=_0x4a8bab?_0x1510aa[_0xfe94('0x12')]:_0x1510aa[_0xfe94('0x13')];logger[_0xfe94('0x14')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x51302c,_0x1510aa[_0xfe94('0x15')],_0x4a8bab,_0xad7834||'next');if(_0xad7834){var _0x4beafd=_['findIndex'](_0x4ef545[_0xfe94('0x16')](),{'p':_0xad7834});if(_0x4beafd>=0x0){logger[_0xfe94('0x14')](_0xfe94('0x17'),_0x51302c,_0xad7834||_0xfe94('0x18'),_0x4beafd);_0x4ef545['next'](_0x4beafd);}else{logger['info'](_0xfe94('0x19'),_0x51302c,_0xad7834||_0xfe94('0x18'));_0x4ef545[_0xfe94('0x1a')]();}}else{_0x4ef545[_0xfe94('0x18')]();}}catch(_0x5f0791){logger['error'](_0xfe94('0x1b'),_0x51302c,_0x5f0791['message']);_0x4ef545[_0xfe94('0x1a')]();}}}catch(_0x1de84d){logger['error']('[%s][GOTOIF]\x20%s',_0x51302c,JSON[_0xfe94('0x1c')](_0x1de84d));_0x4ef545[_0xfe94('0x1a')]();}};};
\ No newline at end of file
index 043a281..376d1a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ab=['length','error','[%s][GOTOP]\x20%s','map','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','stringify','validate','lodash','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence'];(function(_0x43c206,_0x56b5a9){var _0x57319f=function(_0x2b7239){while(--_0x2b7239){_0x43c206['push'](_0x43c206['shift']());}};_0x57319f(++_0x56b5a9);}(_0xa7ab,0xf1));var _0xba7a=function(_0x17e3dd,_0x422127){_0x17e3dd=_0x17e3dd-0x0;var _0xe131ac=_0xa7ab[_0x17e3dd];return _0xe131ac;};'use strict';var schema=require(_0xba7a('0x0'));var _=require(_0xba7a('0x1'));var logger=require('../../../../config/logger')(_0xba7a('0x2'));var gotop=schema({'priority':{'type':_0xba7a('0x3'),'required':!![],'message':_0xba7a('0x4')}});exports[_0xba7a('0x5')]=function(_0x3a9859,_0x22d7ba){return function(_0x4fa7ca){try{var _0x1d5931={'priority':_0x22d7ba[0x0]};var _0x438177=gotop[_0xba7a('0x0')](_0x1d5931,{'typecast':!![]});if(_0x438177[_0xba7a('0x6')]){logger[_0xba7a('0x7')](_0xba7a('0x8'),_0x3a9859,_[_0xba7a('0x9')](_0x438177,'message')[_0xba7a('0xa')](',\x20'));_0x4fa7ca[_0xba7a('0xb')]();}else{logger[_0xba7a('0xc')](_0xba7a('0xd'),_0x3a9859,_0x1d5931[_0xba7a('0xe')]);if(_0x1d5931[_0xba7a('0xe')]){var _0x52eced=_['findIndex'](_0x4fa7ca[_0xba7a('0xf')](),{'p':_0x1d5931['priority']});if(_0x52eced>=0x0){logger[_0xba7a('0xc')](_0xba7a('0x10'),_0x3a9859,_0x1d5931[_0xba7a('0xe')]||'next',_0x52eced);_0x4fa7ca['next'](_0x52eced);}else{logger['info']('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x3a9859,_0x1d5931['priority']||_0xba7a('0x11'));_0x4fa7ca[_0xba7a('0xb')]();}}else{_0x4fa7ca[_0xba7a('0x11')]();}}}catch(_0x4c772d){logger[_0xba7a('0x7')](_0xba7a('0x8'),_0x3a9859,JSON[_0xba7a('0x12')](_0x4c772d));_0x4fa7ca[_0xba7a('0xb')]();}};};
\ No newline at end of file
+var _0x6a8f=['[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','error','stringify','validate','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','[%s][GOTOP]\x20%s','map','join','stop','info'];(function(_0x50d6ce,_0x42edbd){var _0x8e8494=function(_0x523495){while(--_0x523495){_0x50d6ce['push'](_0x50d6ce['shift']());}};_0x8e8494(++_0x42edbd);}(_0x6a8f,0x107));var _0xf6a8=function(_0x34e481,_0x1f0d05){_0x34e481=_0x34e481-0x0;var _0x195d01=_0x6a8f[_0x34e481];return _0x195d01;};'use strict';var schema=require(_0xf6a8('0x0'));var _=require('lodash');var logger=require('../../../../config/logger')(_0xf6a8('0x1'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xf6a8('0x2')}});exports['consequence']=function(_0x1c69be,_0x4c64a1){return function(_0x274e09){try{var _0x1c8788={'priority':_0x4c64a1[0x0]};var _0x2b218b=gotop['validate'](_0x1c8788,{'typecast':!![]});if(_0x2b218b[_0xf6a8('0x3')]){logger['error'](_0xf6a8('0x4'),_0x1c69be,_[_0xf6a8('0x5')](_0x2b218b,'message')[_0xf6a8('0x6')](',\x20'));_0x274e09[_0xf6a8('0x7')]();}else{logger[_0xf6a8('0x8')](_0xf6a8('0x9'),_0x1c69be,_0x1c8788[_0xf6a8('0xa')]);if(_0x1c8788[_0xf6a8('0xa')]){var _0x21654e=_[_0xf6a8('0xb')](_0x274e09[_0xf6a8('0xc')](),{'p':_0x1c8788[_0xf6a8('0xa')]});if(_0x21654e>=0x0){logger['info'](_0xf6a8('0xd'),_0x1c69be,_0x1c8788['priority']||'next',_0x21654e);_0x274e09['next'](_0x21654e);}else{logger['info'](_0xf6a8('0xe'),_0x1c69be,_0x1c8788[_0xf6a8('0xa')]||'next');_0x274e09[_0xf6a8('0x7')]();}}else{_0x274e09['next']();}}}catch(_0x5dea16){logger[_0xf6a8('0xf')](_0xf6a8('0x4'),_0x1c69be,JSON[_0xf6a8('0x10')](_0x5dea16));_0x274e09[_0xf6a8('0x7')]();}};};
\ No newline at end of file
index ab497f5..7d7c44a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e94=['../../rpc/whatsappMessage','consequence','getMustacheRender','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','interaction','Message','create','then','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage'];(function(_0x197c29,_0x51df0d){var _0x4cda74=function(_0x17178f){while(--_0x17178f){_0x197c29['push'](_0x197c29['shift']());}};_0x4cda74(++_0x51df0d);}(_0x0e94,0x88));var _0x40e9=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x0e94[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x40e9('0x0'));var utils=require(_0x40e9('0x1'));var logger=require(_0x40e9('0x2'))(_0x40e9('0x3'));var rpc={'chatMessage':require(_0x40e9('0x4')),'openchannelMessage':require(_0x40e9('0x5')),'mailMessage':require(_0x40e9('0x6')),'smsMessage':require(_0x40e9('0x7')),'faxMessage':require(_0x40e9('0x8')),'whatsappMessage':require(_0x40e9('0x9'))};exports[_0x40e9('0xa')]=function(_0xf5f45c,_0x2ae17b){return function(_0x4b2b58){try{var _0x31e353={'body':utils[_0x40e9('0xb')](_0x2ae17b[0x0],this),'ContactId':this['contact']['id']};if(this[_0x40e9('0xc')]===_0x40e9('0xd')){_0x31e353[_0x40e9('0xe')]=this[_0x40e9('0xf')]['id'];}else{_0x31e353[_[_0x40e9('0x10')](this[_0x40e9('0xc')])+'AccountId']=this[_0x40e9('0xf')]['id'];}_0x31e353[_[_0x40e9('0x10')](this[_0x40e9('0xc')])+_0x40e9('0x11')]=this[_0x40e9('0x12')]['id'];if(rpc[this[_0x40e9('0xc')]+_0x40e9('0x13')]){return rpc[this['channel']+_0x40e9('0x13')][_0x40e9('0x14')](_0x31e353)[_0x40e9('0x15')](function(_0x5cdeea){logger['info'](_0x40e9('0x16'),_0xf5f45c,_0x31e353[_0x40e9('0x17')]);_0x4b2b58[_0x40e9('0x18')]();})[_0x40e9('0x19')](function(_0x29ad25){logger[_0x40e9('0x1a')](_0x40e9('0x16'),_0xf5f45c,JSON['stringify'](_0x29ad25));_0x4b2b58['stop']();});}}catch(_0x6add72){logger[_0x40e9('0x1a')](_0x40e9('0x16'),_0xf5f45c,JSON[_0x40e9('0x1b')](_0x6add72));_0x4b2b58[_0x40e9('0x1c')]();}};};
\ No newline at end of file
+var _0xe2a4=['lodash','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','channel','chat','ChatWebsiteId','account','upperFirst','interaction','Message','then','info','body','next','catch','[%s][MESSAGE]\x20%s','stringify','stop','error'];(function(_0x1793e7,_0x4cba8a){var _0x3b5854=function(_0x38a637){while(--_0x38a637){_0x1793e7['push'](_0x1793e7['shift']());}};_0x3b5854(++_0x4cba8a);}(_0xe2a4,0xaf));var _0x4e2a=function(_0x3b76f7,_0x566c53){_0x3b76f7=_0x3b76f7-0x0;var _0x43984e=_0xe2a4[_0x3b76f7];return _0x43984e;};'use strict';var _=require(_0x4e2a('0x0'));var utils=require(_0x4e2a('0x1'));var logger=require('../../../../config/logger')(_0x4e2a('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x4e2a('0x3')),'mailMessage':require(_0x4e2a('0x4')),'smsMessage':require(_0x4e2a('0x5')),'faxMessage':require(_0x4e2a('0x6')),'whatsappMessage':require(_0x4e2a('0x7'))};exports[_0x4e2a('0x8')]=function(_0x1d5371,_0x36f74b){return function(_0x310fb8){try{var _0x3dd571={'body':utils['getMustacheRender'](_0x36f74b[0x0],this),'ContactId':this['contact']['id']};if(this[_0x4e2a('0x9')]===_0x4e2a('0xa')){_0x3dd571[_0x4e2a('0xb')]=this[_0x4e2a('0xc')]['id'];}else{_0x3dd571[_[_0x4e2a('0xd')](this[_0x4e2a('0x9')])+'AccountId']=this[_0x4e2a('0xc')]['id'];}_0x3dd571[_[_0x4e2a('0xd')](this['channel'])+'InteractionId']=this[_0x4e2a('0xe')]['id'];if(rpc[this[_0x4e2a('0x9')]+_0x4e2a('0xf')]){return rpc[this[_0x4e2a('0x9')]+_0x4e2a('0xf')]['create'](_0x3dd571)[_0x4e2a('0x10')](function(_0x4f75fe){logger[_0x4e2a('0x11')]('[%s][MESSAGE]\x20%s',_0x1d5371,_0x3dd571[_0x4e2a('0x12')]);_0x310fb8[_0x4e2a('0x13')]();})[_0x4e2a('0x14')](function(_0x54a0d5){logger['error'](_0x4e2a('0x15'),_0x1d5371,JSON[_0x4e2a('0x16')](_0x54a0d5));_0x310fb8[_0x4e2a('0x17')]();});}}catch(_0x3d5279){logger[_0x4e2a('0x18')](_0x4e2a('0x15'),_0x1d5371,JSON[_0x4e2a('0x16')](_0x3d5279));_0x310fb8[_0x4e2a('0x17')]();}};};
\ No newline at end of file
index de9bf2e..6df5100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74c9=['consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','../../../../config/logger','routing'];(function(_0x5e2e59,_0x31ee29){var _0x91c654=function(_0x38ef6){while(--_0x38ef6){_0x5e2e59['push'](_0x5e2e59['shift']());}};_0x91c654(++_0x31ee29);}(_0x74c9,0xc6));var _0x974c=function(_0x5a907d,_0x35b701){_0x5a907d=_0x5a907d-0x0;var _0x44ad25=_0x74c9[_0x5a907d];return _0x44ad25;};'use strict';var utils=require('./utils');var logger=require(_0x974c('0x0'))(_0x974c('0x1'));exports[_0x974c('0x2')]=function(_0x178d90,_0x444cfb){return function(_0x5de986){try{logger[_0x974c('0x3')](_0x974c('0x4'),_0x178d90,utils[_0x974c('0x5')](_0x444cfb[0x0],this));_0x5de986[_0x974c('0x6')]();}catch(_0x2163d7){logger[_0x974c('0x7')]('[%s][NOOP]\x20%s',_0x178d90,JSON[_0x974c('0x8')](_0x2163d7));_0x5de986[_0x974c('0x9')]();}};};
\ No newline at end of file
+var _0x02f2=['info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils','consequence'];(function(_0x201c69,_0x1bded2){var _0x426581=function(_0x5d500f){while(--_0x5d500f){_0x201c69['push'](_0x201c69['shift']());}};_0x426581(++_0x1bded2);}(_0x02f2,0x8e));var _0x202f=function(_0x45cef3,_0x5443f0){_0x45cef3=_0x45cef3-0x0;var _0x55c83f=_0x02f2[_0x45cef3];return _0x55c83f;};'use strict';var utils=require(_0x202f('0x0'));var logger=require('../../../../config/logger')('routing');exports[_0x202f('0x1')]=function(_0x41d0a4,_0x258f9b){return function(_0x4199ea){try{logger[_0x202f('0x2')](_0x202f('0x3'),_0x41d0a4,utils[_0x202f('0x4')](_0x258f9b[0x0],this));_0x4199ea[_0x202f('0x5')]();}catch(_0xf4a973){logger[_0x202f('0x6')](_0x202f('0x3'),_0x41d0a4,JSON[_0x202f('0x7')](_0xf4a973));_0x4199ea[_0x202f('0x8')]();}};};
\ No newline at end of file
index 538d3d6..37cf6f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacdf=['validate','lodash','moment','ioredis','../../../../config/environment','../../../../config/logger','./strategy','redis','defaults','queue_id','account','from','joinAt','emit','format','pick','%sQueuesWaitingInteractions','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','waiting','body','contact','list','upperFirst','channel','InteractionId','interaction','MessageId','message','chat','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','YYYY-MM-DD\x20HH:mm:ss','accepted','update','catch','timeout','[%s][END:QUEUE][NAME:%s]','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','Queues','createQueue','rules','end','close','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log'];(function(_0x2747a5,_0xd53470){var _0x2564ba=function(_0x26ba92){while(--_0x26ba92){_0x2747a5['push'](_0x2747a5['shift']());}};_0x2564ba(++_0xd53470);}(_0xacdf,0x14f));var _0xfacd=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0xacdf[_0x39e283];return _0x7de89f;};'use strict';var schema=require(_0xfacd('0x0'));var _=require(_0xfacd('0x1'));var util=require('util');var seqqueue=require('seq-queue');var moment=require(_0xfacd('0x2'));var Redis=require(_0xfacd('0x3'));var config=require(_0xfacd('0x4'));var logger=require(_0xfacd('0x5'))('routing');var strategy=require(_0xfacd('0x6'));config[_0xfacd('0x7')]=_[_0xfacd('0x8')](config[_0xfacd('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xfacd('0x7')]));var attributes=['id',_0xfacd('0x9'),_0xfacd('0xa'),'queue',_0xfacd('0xb'),_0xfacd('0xc')];function emit(_0x2c3485,_0x52ca65,_0x96a9e8){io['to'](_0x2c3485)[_0xfacd('0xd')](_0x52ca65,_0x96a9e8);}function emitChannelQueueInteraction(_0x5f00cc,_0x1aca87,_0x167a77,_0x40a0c2,_0x109326,_0x5f32f3,_0x21cee7,_0x24e805){var _0x31ff29=_['clone'](_0x167a77);_0x31ff29[_0xfacd('0x9')]=_0x24e805;_0x31ff29['queue']=_0x1aca87;_0x31ff29['account']=_0x40a0c2;_0x31ff29['id']=_0x109326;if(_0x5f32f3){_0x21cee7[util[_0xfacd('0xe')]('%sQueuesWaitingInteractions',_0x5f00cc)][_0x109326]=_[_0xfacd('0xf')](_0x31ff29,attributes);}else{delete _0x21cee7[util[_0xfacd('0xe')](_0xfacd('0x10'),_0x5f00cc)][_0x109326];}emit(util[_0xfacd('0xe')]('%s:queue:%s',_0x5f00cc,_0x1aca87),util[_0xfacd('0xe')]('%s_queue_waiting_interaction:%s',_0x5f00cc,_0x5f32f3?_0xfacd('0x11'):_0xfacd('0x12')),_['pick'](_0x31ff29,attributes));}var rpc={'openchannelQueueReport':require(_0xfacd('0x13')),'mailQueueReport':require(_0xfacd('0x14')),'chatQueueReport':require(_0xfacd('0x15')),'smsQueueReport':require(_0xfacd('0x16')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0xfacd('0x17'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0xfacd('0x18')},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x1217c9,_0x220f1d,_0x396836,_0x5c2681){if(_0x1217c9&&_0x220f1d&&_0x396836){_0x220f1d[_0xfacd('0x19')]+=0x1;var _0x534e0c={'uniqueid':_0x1217c9,'from':_0x396836['body']?_0x396836[_0xfacd('0x1a')]['from']:'','joinAt':moment()[_0xfacd('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x396836['contact']?_0x396836[_0xfacd('0x1b')]['id']:null,'ListId':_0x396836[_0xfacd('0x1c')]?_0x396836['list']['id']:null};_0x534e0c[_[_0xfacd('0x1d')](_0x396836[_0xfacd('0x1e')])+'QueueId']=_0x220f1d['id']||null;_0x534e0c[_[_0xfacd('0x1d')](_0x396836[_0xfacd('0x1e')])+_0xfacd('0x1f')]=_0x396836[_0xfacd('0x20')]?_0x396836[_0xfacd('0x20')]['id']:null;_0x534e0c[_[_0xfacd('0x1d')](_0x396836['channel'])+_0xfacd('0x21')]=_0x396836['message']?_0x396836[_0xfacd('0x22')]['id']:null;_0x534e0c[_['upperFirst'](_0x396836['channel'])+(_0x396836[_0xfacd('0x1e')]!==_0xfacd('0x23')?'AccountId':'WebsiteId')]=_0x396836[_0xfacd('0xa')]?_0x396836['account']['id']:null;logger[_0xfacd('0x24')](util[_0xfacd('0xe')](_0xfacd('0x25'),_0x1217c9,_0x220f1d[_0xfacd('0x26')]));emitChannelQueueInteraction(_0x396836[_0xfacd('0x1e')],_0x220f1d[_0xfacd('0x26')],_0x534e0c,_0x396836[_0xfacd('0xa')][_0xfacd('0x26')],_0x396836[_0xfacd('0x22')]['id'],!![],_0x5c2681,_0x220f1d['id']);if(rpc[_0x396836[_0xfacd('0x1e')]+_0xfacd('0x27')]){return rpc[_0x396836['channel']+_0xfacd('0x27')][_0xfacd('0x28')](_0x534e0c)['catch'](function(_0x25fd48){logger[_0xfacd('0x29')]('create\x20queue\x20report');});}}}function stopRouting(_0x5c1cc6,_0x1063fc,_0x8db06,_0x5f535b){if(_0x5c1cc6&&_0x1063fc){_0x1063fc[_0xfacd('0x19')]-=0x1;var _0x591ae5={'leaveAt':moment()['format'](_0xfacd('0x2a')),'acceptAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xfacd('0x2b')};logger[_0xfacd('0x24')](util[_0xfacd('0xe')]('[%s][STOP:QUEUE][NAME:%s]',_0x5c1cc6,_0x1063fc[_0xfacd('0x26')]));emitChannelQueueInteraction(_0x8db06[_0xfacd('0x1e')],_0x1063fc[_0xfacd('0x26')],_0x8db06[_0xfacd('0x1a')],_0x8db06[_0xfacd('0xa')][_0xfacd('0x26')],_0x8db06['message']['id'],![],_0x5f535b,_0x1063fc['id']);if(rpc[_0x8db06[_0xfacd('0x1e')]+'QueueReport']){return rpc[_0x8db06[_0xfacd('0x1e')]+'QueueReport'][_0xfacd('0x2c')](_0x5c1cc6,_0x591ae5)[_0xfacd('0x2d')](function(_0x2821fa){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0xd2fbe3,_0x3f5c6c,_0x389625,_0x5b438a){if(_0xd2fbe3&&_0x3f5c6c){_0x3f5c6c[_0xfacd('0x19')]-=0x1;var _0x3d4980={'leaveAt':moment()[_0xfacd('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xfacd('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xfacd('0x2e')};logger['info'](util[_0xfacd('0xe')](_0xfacd('0x2f'),_0xd2fbe3,_0x3f5c6c['name']));emitChannelQueueInteraction(_0x389625[_0xfacd('0x1e')],_0x3f5c6c['name'],_0x389625[_0xfacd('0x1a')],_0x389625['account']['name'],_0x389625['message']['id'],![],_0x5b438a);if(rpc[_0x389625[_0xfacd('0x1e')]+_0xfacd('0x27')]){return rpc[_0x389625[_0xfacd('0x1e')]+'QueueReport']['update'](_0xd2fbe3,_0x3d4980)['catch'](function(_0x57c60b){logger[_0xfacd('0x29')](_0xfacd('0x30'));});}}}function handleFindQueue(_0x51cc23){return function(_0x17ec14){return _0x17ec14[_0xfacd('0x26')][_0xfacd('0x31')]()===_0x51cc23[_0xfacd('0x31')]();};}exports[_0xfacd('0x32')]=function(_0xc19d7f,_0x4869b2,_0x3afe37,_0x3d3738){return function(_0x581a93){try{var _0x14f58f={'name':_0x4869b2[0x0],'timeout':_0x4869b2[0x1]};var _0x1dbba7=queue[_0xfacd('0x0')](_0x14f58f,{'typecast':!![]});if(_0x1dbba7[_0xfacd('0x33')]){logger['error'](_0xfacd('0x34'),_0xc19d7f,_['map'](_0x1dbba7,'message')[_0xfacd('0x35')](',\x20'));_0x581a93['stop']();}else{var _0xcc2586=_['find'](_0x3afe37[_0x3d3738['channel']+_0xfacd('0x36')],handleFindQueue(_0x14f58f[_0xfacd('0x26')]));if(_0xcc2586){startRouting(_0xc19d7f,_0xcc2586,_0x3d3738,_0x3afe37);var _0x194aa3=(_0xcc2586[_0xfacd('0x2e')]||0xa)*0x3e8;var _0x45f9fe=(_0x14f58f[_0xfacd('0x2e')]||0x14)*0x3e8;var _0x51903a,_0x17c86e;if(_0x194aa3>_0x45f9fe){_0x45f9fe=_0x194aa3;}var _0x257fc0=seqqueue[_0xfacd('0x37')](_0x194aa3);_0x257fc0['id']=_0xc19d7f;_0x257fc0['atimeout']=_0x194aa3;_0x257fc0['qtimeout']=_0x45f9fe;_0x257fc0[_0xfacd('0x1e')]=_0x3d3738[_0xfacd('0x1e')];_0x3afe37[_0xfacd('0x38')][_0xc19d7f]['on'](_0xfacd('0x39'),function(){logger['info']('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0xc19d7f);stopRouting(_0xc19d7f,_0xcc2586,_0x3d3738,_0x3afe37);clearTimeout(_0x51903a);_0x51903a=undefined;_0x257fc0[_0xfacd('0x3a')](!![]);if(_0x3afe37['rules'][_0xc19d7f]){delete _0x3afe37['rules'][_0xc19d7f];}_0x581a93[_0xfacd('0x3b')]();});_0x3afe37['rules'][_0xc19d7f]['on'](_0xfacd('0x3c'),function(){if(_0x3afe37[_0xfacd('0x38')][_0xc19d7f]){delete _0x3afe37[_0xfacd('0x38')][_0xc19d7f];}});_0x51903a=setTimeout(function(){logger[_0xfacd('0x24')](_0xfacd('0x3d'),_0xc19d7f);endRouting(_0xc19d7f,_0xcc2586,_0x3d3738,_0x3afe37);clearTimeout(_0x51903a);_0x257fc0[_0xfacd('0x3a')](!![]);_0x581a93['next']();},_0x45f9fe);switch(_0xcc2586[_0xfacd('0x3e')]){case _0xfacd('0x3f'):strategy[_0xfacd('0x3f')](_0x257fc0,_0xcc2586,_0x3afe37,_0x3d3738);break;default:strategy[_0xfacd('0x40')](_0x257fc0,_0xcc2586,_0x3afe37,_0x3d3738);}}else{logger[_0xfacd('0x29')](_0xfacd('0x41'),_0xc19d7f,_0x14f58f[_0xfacd('0x26')]);_0x581a93['stop']();}}}catch(_0x4c6260){console[_0xfacd('0x42')](_0x4c6260);logger[_0xfacd('0x29')](_0xfacd('0x34'),_0xc19d7f,_0x4c6260['stack']);_0x581a93[_0xfacd('0x3b')]();}};};
\ No newline at end of file
+var _0xa033=['timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','message','chat','AccountId','info','name','error','accepted','[%s][STOP:QUEUE][NAME:%s]','QueueReport','update','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','map','join','find','Queues','createQueue','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','clone','format','%sQueuesWaitingInteractions','pick','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number'];(function(_0x4f9ae8,_0x4d69fe){var _0x53cce6=function(_0x519a61){while(--_0x519a61){_0x4f9ae8['push'](_0x4f9ae8['shift']());}};_0x53cce6(++_0x4d69fe);}(_0xa033,0x1ca));var _0x3a03=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa033[_0x3dd15e];return _0x231fd0;};'use strict';var schema=require(_0x3a03('0x0'));var _=require(_0x3a03('0x1'));var util=require(_0x3a03('0x2'));var seqqueue=require(_0x3a03('0x3'));var moment=require(_0x3a03('0x4'));var Redis=require(_0x3a03('0x5'));var config=require(_0x3a03('0x6'));var logger=require('../../../../config/logger')('routing');var strategy=require(_0x3a03('0x7'));config[_0x3a03('0x8')]=_[_0x3a03('0x9')](config[_0x3a03('0x8')],{'host':_0x3a03('0xa'),'port':0x18eb});var io=require(_0x3a03('0xb'))(new Redis(config[_0x3a03('0x8')]));var attributes=['id',_0x3a03('0xc'),_0x3a03('0xd'),_0x3a03('0xe'),_0x3a03('0xf'),_0x3a03('0x10')];function emit(_0x179c91,_0x132ef5,_0x5316d4){io['to'](_0x179c91)[_0x3a03('0x11')](_0x132ef5,_0x5316d4);}function emitChannelQueueInteraction(_0x53a0b5,_0x2917a7,_0x16ce49,_0x555b54,_0x1f0251,_0x532677,_0x3103fd,_0x59b5e4){var _0x4f7098=_[_0x3a03('0x12')](_0x16ce49);_0x4f7098[_0x3a03('0xc')]=_0x59b5e4;_0x4f7098[_0x3a03('0xe')]=_0x2917a7;_0x4f7098['account']=_0x555b54;_0x4f7098['id']=_0x1f0251;if(_0x532677){_0x3103fd[util[_0x3a03('0x13')](_0x3a03('0x14'),_0x53a0b5)][_0x1f0251]=_[_0x3a03('0x15')](_0x4f7098,attributes);}else{delete _0x3103fd[util[_0x3a03('0x13')]('%sQueuesWaitingInteractions',_0x53a0b5)][_0x1f0251];}emit(util[_0x3a03('0x13')]('%s:queue:%s',_0x53a0b5,_0x2917a7),util[_0x3a03('0x13')](_0x3a03('0x16'),_0x53a0b5,_0x532677?_0x3a03('0x17'):_0x3a03('0x18')),_[_0x3a03('0x15')](_0x4f7098,attributes));}var rpc={'openchannelQueueReport':require(_0x3a03('0x19')),'mailQueueReport':require(_0x3a03('0x1a')),'chatQueueReport':require(_0x3a03('0x1b')),'smsQueueReport':require(_0x3a03('0x1c')),'faxQueueReport':require(_0x3a03('0x1d')),'whatsappQueueReport':require(_0x3a03('0x1e'))};var queue=schema({'name':{'type':_0x3a03('0x1f'),'required':!![],'message':_0x3a03('0x20')},'timeout':{'type':_0x3a03('0x21'),'message':_0x3a03('0x22')}});function startRouting(_0xde44dd,_0x173018,_0x37a403,_0x10d202){if(_0xde44dd&&_0x173018&&_0x37a403){_0x173018[_0x3a03('0x23')]+=0x1;var _0x1157e9={'uniqueid':_0xde44dd,'from':_0x37a403[_0x3a03('0x24')]?_0x37a403[_0x3a03('0x24')][_0x3a03('0xf')]:'','joinAt':moment()[_0x3a03('0x13')](_0x3a03('0x25')),'ContactId':_0x37a403[_0x3a03('0x26')]?_0x37a403[_0x3a03('0x26')]['id']:null,'ListId':_0x37a403[_0x3a03('0x27')]?_0x37a403[_0x3a03('0x27')]['id']:null};_0x1157e9[_[_0x3a03('0x28')](_0x37a403[_0x3a03('0x29')])+_0x3a03('0x2a')]=_0x173018['id']||null;_0x1157e9[_[_0x3a03('0x28')](_0x37a403[_0x3a03('0x29')])+_0x3a03('0x2b')]=_0x37a403['interaction']?_0x37a403[_0x3a03('0x2c')]['id']:null;_0x1157e9[_['upperFirst'](_0x37a403['channel'])+'MessageId']=_0x37a403[_0x3a03('0x2d')]?_0x37a403[_0x3a03('0x2d')]['id']:null;_0x1157e9[_[_0x3a03('0x28')](_0x37a403['channel'])+(_0x37a403[_0x3a03('0x29')]!==_0x3a03('0x2e')?_0x3a03('0x2f'):'WebsiteId')]=_0x37a403[_0x3a03('0xd')]?_0x37a403[_0x3a03('0xd')]['id']:null;logger[_0x3a03('0x30')](util[_0x3a03('0x13')]('[%s][START:QUEUE][NAME:%s]',_0xde44dd,_0x173018[_0x3a03('0x31')]));emitChannelQueueInteraction(_0x37a403[_0x3a03('0x29')],_0x173018[_0x3a03('0x31')],_0x1157e9,_0x37a403['account'][_0x3a03('0x31')],_0x37a403[_0x3a03('0x2d')]['id'],!![],_0x10d202,_0x173018['id']);if(rpc[_0x37a403[_0x3a03('0x29')]+'QueueReport']){return rpc[_0x37a403[_0x3a03('0x29')]+'QueueReport']['create'](_0x1157e9)['catch'](function(_0x62fd25){logger[_0x3a03('0x32')]('create\x20queue\x20report');});}}}function stopRouting(_0x270ec3,_0x2d2ae7,_0x354240,_0x3099be){if(_0x270ec3&&_0x2d2ae7){_0x2d2ae7[_0x3a03('0x23')]-=0x1;var _0x8e131d={'leaveAt':moment()['format'](_0x3a03('0x25')),'acceptAt':moment()[_0x3a03('0x13')](_0x3a03('0x25')),'reason':_0x3a03('0x33')};logger[_0x3a03('0x30')](util[_0x3a03('0x13')](_0x3a03('0x34'),_0x270ec3,_0x2d2ae7[_0x3a03('0x31')]));emitChannelQueueInteraction(_0x354240[_0x3a03('0x29')],_0x2d2ae7['name'],_0x354240['body'],_0x354240[_0x3a03('0xd')][_0x3a03('0x31')],_0x354240[_0x3a03('0x2d')]['id'],![],_0x3099be,_0x2d2ae7['id']);if(rpc[_0x354240['channel']+_0x3a03('0x35')]){return rpc[_0x354240[_0x3a03('0x29')]+_0x3a03('0x35')][_0x3a03('0x36')](_0x270ec3,_0x8e131d)[_0x3a03('0x37')](function(_0x31d88b){logger[_0x3a03('0x32')](_0x3a03('0x38'));});}}}function endRouting(_0x27dbeb,_0x3009cd,_0x34302f,_0x4306ce){if(_0x27dbeb&&_0x3009cd){_0x3009cd[_0x3a03('0x23')]-=0x1;var _0x4c52fc={'leaveAt':moment()[_0x3a03('0x13')](_0x3a03('0x25')),'exitAt':moment()[_0x3a03('0x13')](_0x3a03('0x25')),'reason':_0x3a03('0x39')};logger['info'](util[_0x3a03('0x13')](_0x3a03('0x3a'),_0x27dbeb,_0x3009cd[_0x3a03('0x31')]));emitChannelQueueInteraction(_0x34302f['channel'],_0x3009cd[_0x3a03('0x31')],_0x34302f[_0x3a03('0x24')],_0x34302f[_0x3a03('0xd')][_0x3a03('0x31')],_0x34302f[_0x3a03('0x2d')]['id'],![],_0x4306ce);if(rpc[_0x34302f[_0x3a03('0x29')]+_0x3a03('0x35')]){return rpc[_0x34302f[_0x3a03('0x29')]+_0x3a03('0x35')][_0x3a03('0x36')](_0x27dbeb,_0x4c52fc)['catch'](function(_0x489378){logger[_0x3a03('0x32')](_0x3a03('0x38'));});}}}function handleFindQueue(_0x519f81){return function(_0x12528b){return _0x12528b[_0x3a03('0x31')][_0x3a03('0x3b')]()===_0x519f81[_0x3a03('0x3b')]();};}exports[_0x3a03('0x3c')]=function(_0x6cd909,_0x167ed9,_0x16fc85,_0x3e2113){return function(_0x4a179b){try{var _0x59c8f0={'name':_0x167ed9[0x0],'timeout':_0x167ed9[0x1]};var _0xa0f9aa=queue[_0x3a03('0x0')](_0x59c8f0,{'typecast':!![]});if(_0xa0f9aa[_0x3a03('0x3d')]){logger[_0x3a03('0x32')]('[%s][QUEUE]\x20%s',_0x6cd909,_[_0x3a03('0x3e')](_0xa0f9aa,'message')[_0x3a03('0x3f')](',\x20'));_0x4a179b['stop']();}else{var _0x3306b1=_[_0x3a03('0x40')](_0x16fc85[_0x3e2113['channel']+_0x3a03('0x41')],handleFindQueue(_0x59c8f0[_0x3a03('0x31')]));if(_0x3306b1){startRouting(_0x6cd909,_0x3306b1,_0x3e2113,_0x16fc85);var _0x37946b=(_0x3306b1['timeout']||0xa)*0x3e8;var _0x2ac9f8=(_0x59c8f0['timeout']||0x14)*0x3e8;var _0x2cda91,_0x39fede;if(_0x37946b>_0x2ac9f8){_0x2ac9f8=_0x37946b;}var _0x536fee=seqqueue[_0x3a03('0x42')](_0x37946b);_0x536fee['id']=_0x6cd909;_0x536fee['atimeout']=_0x37946b;_0x536fee[_0x3a03('0x43')]=_0x2ac9f8;_0x536fee[_0x3a03('0x29')]=_0x3e2113['channel'];_0x16fc85[_0x3a03('0x44')][_0x6cd909]['on'](_0x3a03('0x45'),function(){logger[_0x3a03('0x30')](_0x3a03('0x46'),_0x6cd909);stopRouting(_0x6cd909,_0x3306b1,_0x3e2113,_0x16fc85);clearTimeout(_0x2cda91);_0x2cda91=undefined;_0x536fee[_0x3a03('0x47')](!![]);if(_0x16fc85['rules'][_0x6cd909]){delete _0x16fc85[_0x3a03('0x44')][_0x6cd909];}_0x4a179b[_0x3a03('0x48')]();});_0x16fc85[_0x3a03('0x44')][_0x6cd909]['on'](_0x3a03('0x49'),function(){if(_0x16fc85[_0x3a03('0x44')][_0x6cd909]){delete _0x16fc85[_0x3a03('0x44')][_0x6cd909];}});_0x2cda91=setTimeout(function(){logger[_0x3a03('0x30')](_0x3a03('0x4a'),_0x6cd909);endRouting(_0x6cd909,_0x3306b1,_0x3e2113,_0x16fc85);clearTimeout(_0x2cda91);_0x536fee[_0x3a03('0x47')](!![]);_0x4a179b[_0x3a03('0x4b')]();},_0x2ac9f8);switch(_0x3306b1[_0x3a03('0x4c')]){case'rrmemory':strategy[_0x3a03('0x4d')](_0x536fee,_0x3306b1,_0x16fc85,_0x3e2113);break;default:strategy[_0x3a03('0x4e')](_0x536fee,_0x3306b1,_0x16fc85,_0x3e2113);}}else{logger[_0x3a03('0x32')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x6cd909,_0x59c8f0[_0x3a03('0x31')]);_0x4a179b[_0x3a03('0x48')]();}}}catch(_0x1644e0){console[_0x3a03('0x4f')](_0x1644e0);logger[_0x3a03('0x32')](_0x3a03('0x50'),_0x6cd909,_0x1644e0[_0x3a03('0x51')]);_0x4a179b[_0x3a03('0x48')]();}};};
\ No newline at end of file
index 8d1e61b..da23453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdffc=['forcedOwnership','isAgentAvailable','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','push','bind','handleTimeout','timeout','handleDrained','prototype','handleRun','info','[%s][AGENT]\x20try\x20with\x20%s','agent','agents'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xdffc,0x1a7));var _0xcdff=function(_0x30ebb1,_0x153cc9){_0x30ebb1=_0x30ebb1-0x0;var _0xebe10c=_0xdffc[_0x30ebb1];return _0xebe10c;};'use strict';var _=require(_0xcdff('0x0'));var uuid=require(_0xcdff('0x1'));var util=require(_0xcdff('0x2'));var logger=require(_0xcdff('0x3'))(_0xcdff('0x4'));var Agent=function(_0x129d46,_0x42e715,_0x57f348,_0x407bba){this[_0xcdff('0x5')]=uuid['v4']();this[_0xcdff('0x6')]=_0x129d46;this['agent']=_0x42e715;this[_0xcdff('0x7')]=_0x57f348;this[_0xcdff('0x4')]=_0x407bba;this[_0xcdff('0x6')][_0xcdff('0x8')](this['handleRun'][_0xcdff('0x9')](this),this[_0xcdff('0xa')][_0xcdff('0x9')](this));this[_0xcdff('0x6')]['on'](_0xcdff('0xb'),this[_0xcdff('0xa')][_0xcdff('0x9')](this));this[_0xcdff('0x6')]['on']('drained',this[_0xcdff('0xc')][_0xcdff('0x9')](this));};Agent[_0xcdff('0xd')]['push']=function(){this['squeue'][_0xcdff('0x8')](this[_0xcdff('0xe')][_0xcdff('0x9')](this),this['handleTimeout'][_0xcdff('0x9')](this));};Agent[_0xcdff('0xd')]['handleDrained']=function(){this['handleTimeout'](!![]);};Agent[_0xcdff('0xd')][_0xcdff('0xe')]=function(_0x590e66){logger[_0xcdff('0xf')](_0xcdff('0x10'),this['squeue']['id'],this[_0xcdff('0x11')]['id']);if(_['isNil'](this[_0xcdff('0x7')][_0xcdff('0x12')][this['agent']['id']])){logger[_0xcdff('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xcdff('0x6')]['id'],this[_0xcdff('0x11')]['id']);setTimeout(this[_0xcdff('0x8')][_0xcdff('0x9')](this),0x3e8);}else{if(this[_0xcdff('0x4')][_0xcdff('0x13')]||util[_0xcdff('0x14')](this['squeue']['id'],this[_0xcdff('0x7')]['agents'][this[_0xcdff('0x11')]['id']],this[_0xcdff('0x6')]['channel'],![])){this['realtime'][_0xcdff('0x12')][this['agent']['id']][_0xcdff('0x15')]=!![];this[_0xcdff('0x7')][_0xcdff('0x12')][this[_0xcdff('0x11')]['id']][_0xcdff('0x16')]=undefined;util[_0xcdff('0x17')](this[_0xcdff('0x5')],this[_0xcdff('0x6')]['id'],this['realtime'][_0xcdff('0x12')][this[_0xcdff('0x11')]['id']],null,this[_0xcdff('0x4')]);util[_0xcdff('0x18')](this[_0xcdff('0x6')]['id'],this[_0xcdff('0x7')][_0xcdff('0x12')][this[_0xcdff('0x11')]['id']],_0xcdff('0x19')+(this['routing'][_0xcdff('0x13')]?_0xcdff('0x1a'):''));}else{logger[_0xcdff('0xf')](_0xcdff('0x1b'),this[_0xcdff('0x6')]['id'],this[_0xcdff('0x11')]['id']);setTimeout(this[_0xcdff('0x8')][_0xcdff('0x9')](this),0x3e8);}}};Agent[_0xcdff('0xd')]['handleTimeout']=function(_0x571043){if(_[_0xcdff('0x1c')](this[_0xcdff('0x7')][_0xcdff('0x12')][this[_0xcdff('0x11')]['id']])){return logger['info'](_0xcdff('0x1d'),this[_0xcdff('0x6')]['id'],this[_0xcdff('0x11')]['id']);}else{logger[_0xcdff('0xf')](_0xcdff('0x1e'),this[_0xcdff('0x6')]['id'],this[_0xcdff('0x11')]['id']);util['hideNotification'](this[_0xcdff('0x5')],this[_0xcdff('0x6')]['id'],this[_0xcdff('0x7')][_0xcdff('0x12')][this[_0xcdff('0x11')]['id']],null,this[_0xcdff('0x4')]);this['realtime'][_0xcdff('0x12')][this['agent']['id']][_0xcdff('0x15')]=![];this[_0xcdff('0x7')]['agents'][this[_0xcdff('0x11')]['id']]['busyQueue']=undefined;util[_0xcdff('0x18')](this['squeue']['id'],this[_0xcdff('0x7')]['agents'][this['agent']['id']],_0x571043?_0xcdff('0x1f'):_0xcdff('0x20'));}if(!_0x571043){setTimeout(this[_0xcdff('0x8')][_0xcdff('0x9')](this),0x3e8);}};function agent(_0x14c5d2,_0x754321,_0x8c64d,_0xfa4761){return new Agent(_0x14c5d2,_0x754321,_0x8c64d,_0xfa4761);}module[_0xcdff('0x21')]=agent;
\ No newline at end of file
+var _0xde10=['writeLog','RINGING',':FORCED','TIMEOUT','exports','lodash','uuid','../../../../../config/logger','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','routing','forcedOwnership','channel','busy','busyQueue','showNotification','notificationId'];(function(_0x18e1b5,_0x243875){var _0x558a83=function(_0x4bb097){while(--_0x4bb097){_0x18e1b5['push'](_0x18e1b5['shift']());}};_0x558a83(++_0x243875);}(_0xde10,0x1b7));var _0x0de1=function(_0x36bc56,_0x198343){_0x36bc56=_0x36bc56-0x0;var _0x2e23f7=_0xde10[_0x36bc56];return _0x2e23f7;};'use strict';var _=require(_0x0de1('0x0'));var uuid=require(_0x0de1('0x1'));var util=require('./util');var logger=require(_0x0de1('0x2'))('routing');var Agent=function(_0x3bf454,_0xe903f4,_0x178355,_0x5f33ec){this['notificationId']=uuid['v4']();this[_0x0de1('0x3')]=_0x3bf454;this[_0x0de1('0x4')]=_0xe903f4;this[_0x0de1('0x5')]=_0x178355;this['routing']=_0x5f33ec;this[_0x0de1('0x3')][_0x0de1('0x6')](this[_0x0de1('0x7')][_0x0de1('0x8')](this),this[_0x0de1('0x9')][_0x0de1('0x8')](this));this[_0x0de1('0x3')]['on'](_0x0de1('0xa'),this[_0x0de1('0x9')]['bind'](this));this[_0x0de1('0x3')]['on'](_0x0de1('0xb'),this[_0x0de1('0xc')]['bind'](this));};Agent[_0x0de1('0xd')][_0x0de1('0x6')]=function(){this[_0x0de1('0x3')][_0x0de1('0x6')](this[_0x0de1('0x7')][_0x0de1('0x8')](this),this['handleTimeout'][_0x0de1('0x8')](this));};Agent[_0x0de1('0xd')][_0x0de1('0xc')]=function(){this[_0x0de1('0x9')](!![]);};Agent[_0x0de1('0xd')]['handleRun']=function(_0x34f5f4){logger[_0x0de1('0xe')](_0x0de1('0xf'),this['squeue']['id'],this['agent']['id']);if(_[_0x0de1('0x10')](this[_0x0de1('0x5')][_0x0de1('0x11')][this[_0x0de1('0x4')]['id']])){logger[_0x0de1('0xe')](_0x0de1('0x12'),this['squeue']['id'],this[_0x0de1('0x4')]['id']);setTimeout(this[_0x0de1('0x6')][_0x0de1('0x8')](this),0x3e8);}else{if(this[_0x0de1('0x13')][_0x0de1('0x14')]||util['isAgentAvailable'](this[_0x0de1('0x3')]['id'],this['realtime'][_0x0de1('0x11')][this[_0x0de1('0x4')]['id']],this[_0x0de1('0x3')][_0x0de1('0x15')],![])){this[_0x0de1('0x5')]['agents'][this[_0x0de1('0x4')]['id']][_0x0de1('0x16')]=!![];this[_0x0de1('0x5')][_0x0de1('0x11')][this['agent']['id']][_0x0de1('0x17')]=undefined;util[_0x0de1('0x18')](this[_0x0de1('0x19')],this[_0x0de1('0x3')]['id'],this[_0x0de1('0x5')]['agents'][this[_0x0de1('0x4')]['id']],null,this[_0x0de1('0x13')]);util[_0x0de1('0x1a')](this[_0x0de1('0x3')]['id'],this[_0x0de1('0x5')][_0x0de1('0x11')][this[_0x0de1('0x4')]['id']],_0x0de1('0x1b')+(this[_0x0de1('0x13')][_0x0de1('0x14')]?_0x0de1('0x1c'):''));}else{logger['info']('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this['squeue']['id'],this[_0x0de1('0x4')]['id']);setTimeout(this['push'][_0x0de1('0x8')](this),0x3e8);}}};Agent[_0x0de1('0xd')][_0x0de1('0x9')]=function(_0x41d00e){if(_[_0x0de1('0x10')](this[_0x0de1('0x5')]['agents'][this[_0x0de1('0x4')]['id']])){return logger[_0x0de1('0xe')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x0de1('0x3')]['id'],this[_0x0de1('0x4')]['id']);}else{logger[_0x0de1('0xe')]('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0x0de1('0x3')]['id'],this[_0x0de1('0x4')]['id']);util['hideNotification'](this['notificationId'],this['squeue']['id'],this[_0x0de1('0x5')]['agents'][this[_0x0de1('0x4')]['id']],null,this[_0x0de1('0x13')]);this['realtime'][_0x0de1('0x11')][this[_0x0de1('0x4')]['id']][_0x0de1('0x16')]=![];this[_0x0de1('0x5')]['agents'][this[_0x0de1('0x4')]['id']][_0x0de1('0x17')]=undefined;util['writeLog'](this[_0x0de1('0x3')]['id'],this[_0x0de1('0x5')][_0x0de1('0x11')][this[_0x0de1('0x4')]['id']],_0x41d00e?'STOP':_0x0de1('0x1d'));}if(!_0x41d00e){setTimeout(this[_0x0de1('0x6')][_0x0de1('0x8')](this),0x3e8);}};function agent(_0xf4edc1,_0x459fef,_0x371298,_0x17a7ca){return new Agent(_0xf4edc1,_0x459fef,_0x371298,_0x17a7ca);}module[_0x0de1('0x1e')]=agent;
\ No newline at end of file
index 82210b5..d9f2e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d6=['squeue','push','handleRun','bind','handleTimeout','timeout','drained','prototype','handleDrained','isNil','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','queue','realtime'];(function(_0x323578,_0xce888d){var _0x598b72=function(_0xb313b8){while(--_0xb313b8){_0x323578['push'](_0x323578['shift']());}};_0x598b72(++_0xce888d);}(_0x20d6,0x9d));var _0x620d=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x20d6[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x620d('0x0'));var uuid=require(_0x620d('0x1'));var util=require(_0x620d('0x2'));var logger=require(_0x620d('0x3'))(_0x620d('0x4'));var Beepall=function(_0x51af05,_0x1c3277,_0x98061e,_0x11883f){this[_0x620d('0x5')]=uuid['v4']();this['squeue']=_0x51af05;this[_0x620d('0x6')]=_0x1c3277;this[_0x620d('0x7')]=_0x98061e;this['routing']=_0x11883f;this[_0x620d('0x8')][_0x620d('0x9')](this[_0x620d('0xa')][_0x620d('0xb')](this),this[_0x620d('0xc')][_0x620d('0xb')](this));this[_0x620d('0x8')]['on'](_0x620d('0xd'),this[_0x620d('0xc')][_0x620d('0xb')](this));this[_0x620d('0x8')]['on'](_0x620d('0xe'),this['handleDrained'][_0x620d('0xb')](this));};Beepall['prototype'][_0x620d('0x9')]=function(){this[_0x620d('0x8')][_0x620d('0x9')](this[_0x620d('0xa')][_0x620d('0xb')](this),this[_0x620d('0xc')][_0x620d('0xb')](this));};Beepall[_0x620d('0xf')][_0x620d('0x10')]=function(_0x5c1e2c){this[_0x620d('0xc')](!![]);};Beepall[_0x620d('0xf')][_0x620d('0xa')]=function(_0x3baa39){var _0x3edda8=!![];if(!_['isNil'](this[_0x620d('0x6')])&&!_[_0x620d('0x11')](this[_0x620d('0x6')][_0x620d('0x12')])&&this['queue'][_0x620d('0x12')][_0x620d('0x13')]>0x0){for(var _0x540741=0x0,_0x2e1f8a;_0x540741<this['queue'][_0x620d('0x12')][_0x620d('0x13')];_0x540741+=0x1){_0x2e1f8a=this[_0x620d('0x6')][_0x620d('0x12')][_0x540741]['id'];if(_[_0x620d('0x11')](this[_0x620d('0x7')][_0x620d('0x14')][_0x2e1f8a])){logger[_0x620d('0x15')](_0x620d('0x16'),this['squeue']['id'],_0x2e1f8a);}else{if(util[_0x620d('0x17')](this[_0x620d('0x8')]['id'],this[_0x620d('0x7')][_0x620d('0x14')][_0x2e1f8a],this[_0x620d('0x8')][_0x620d('0x18')],!![])){_0x3edda8=![];util[_0x620d('0x19')](this[_0x620d('0x8')]['id'],this[_0x620d('0x7')][_0x620d('0x14')][_0x2e1f8a],_0x620d('0x1a'));this[_0x620d('0x7')][_0x620d('0x14')][_0x2e1f8a]['busy']=!![];this['realtime'][_0x620d('0x14')][_0x2e1f8a][_0x620d('0x1b')]=this[_0x620d('0x6')][_0x620d('0x1c')];util['showNotification'](this[_0x620d('0x5')],this[_0x620d('0x8')]['id'],this[_0x620d('0x7')][_0x620d('0x14')][_0x2e1f8a],this[_0x620d('0x6')],this['routing']);}}}if(_0x3edda8){logger[_0x620d('0x15')](_0x620d('0x1d'),this[_0x620d('0x8')]['id']);setTimeout(this[_0x620d('0x9')][_0x620d('0xb')](this),0x3e8);}}else{logger[_0x620d('0x15')](_0x620d('0x1e'),this[_0x620d('0x8')]['id']);setTimeout(this[_0x620d('0x9')][_0x620d('0xb')](this),0x3e8);}};Beepall[_0x620d('0xf')][_0x620d('0xc')]=function(_0x4d0c28){if(!_['isNil'](this[_0x620d('0x6')])&&!_['isNil'](this[_0x620d('0x6')][_0x620d('0x12')])){for(var _0x1b88f7=0x0,_0x3c4f55;_0x1b88f7<this['queue'][_0x620d('0x12')][_0x620d('0x13')];_0x1b88f7+=0x1){_0x3c4f55=this['queue']['Agents'][_0x1b88f7]['id'];if(_[_0x620d('0x11')](this[_0x620d('0x7')]['agents'][_0x3c4f55])){logger[_0x620d('0x15')](_0x620d('0x16'),this[_0x620d('0x8')]['id'],_0x3c4f55);}else{util[_0x620d('0x1f')](this[_0x620d('0x5')],this[_0x620d('0x8')]['id'],this[_0x620d('0x7')][_0x620d('0x14')][_0x3c4f55],this['queue'],this[_0x620d('0x4')]);util['writeLog'](this[_0x620d('0x8')]['id'],this[_0x620d('0x7')][_0x620d('0x14')][_0x3c4f55],_0x4d0c28?'STOP':'TIMEOUT');this[_0x620d('0x7')][_0x620d('0x14')][_0x3c4f55]['busy']=![];this['realtime'][_0x620d('0x14')][_0x3c4f55][_0x620d('0x1b')]=undefined;}}}if(!_0x4d0c28){setTimeout(this[_0x620d('0x9')][_0x620d('0xb')](this),0x3e8);}};function beepall(_0x243512,_0x3a1015,_0x45dc00,_0x507acd){return new Beepall(_0x243512,_0x3a1015,_0x45dc00,_0x507acd);}module[_0x620d('0x20')]=beepall;
\ No newline at end of file
+var _0x31af=['handleTimeout','drained','handleDrained','prototype','handleRun','isNil','queue','Agents','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','RINGING','busy','name','showNotification','info','[%s][QUEUE]\x20EMPTY','length','hideNotification','writeLog','STOP','TIMEOUT','busyQueue','exports','lodash','uuid','./util','notificationId','squeue','realtime','routing','push','bind'];(function(_0x2c89a0,_0x549be5){var _0x62c22d=function(_0xeae9b){while(--_0xeae9b){_0x2c89a0['push'](_0x2c89a0['shift']());}};_0x62c22d(++_0x549be5);}(_0x31af,0xde));var _0xf31a=function(_0x3eaa8b,_0x3ca6ac){_0x3eaa8b=_0x3eaa8b-0x0;var _0x2a4ef7=_0x31af[_0x3eaa8b];return _0x2a4ef7;};'use strict';var _=require(_0xf31a('0x0'));var uuid=require(_0xf31a('0x1'));var util=require(_0xf31a('0x2'));var logger=require('../../../../../config/logger')('routing');var Beepall=function(_0x4596f6,_0x4a8ef1,_0x3b7976,_0x1853d7){this[_0xf31a('0x3')]=uuid['v4']();this[_0xf31a('0x4')]=_0x4596f6;this['queue']=_0x4a8ef1;this[_0xf31a('0x5')]=_0x3b7976;this[_0xf31a('0x6')]=_0x1853d7;this[_0xf31a('0x4')][_0xf31a('0x7')](this['handleRun'][_0xf31a('0x8')](this),this[_0xf31a('0x9')][_0xf31a('0x8')](this));this[_0xf31a('0x4')]['on']('timeout',this[_0xf31a('0x9')][_0xf31a('0x8')](this));this[_0xf31a('0x4')]['on'](_0xf31a('0xa'),this[_0xf31a('0xb')]['bind'](this));};Beepall[_0xf31a('0xc')][_0xf31a('0x7')]=function(){this[_0xf31a('0x4')][_0xf31a('0x7')](this['handleRun'][_0xf31a('0x8')](this),this[_0xf31a('0x9')]['bind'](this));};Beepall[_0xf31a('0xc')][_0xf31a('0xb')]=function(_0x46bdd3){this[_0xf31a('0x9')](!![]);};Beepall[_0xf31a('0xc')][_0xf31a('0xd')]=function(_0x1d2d07){var _0x4681e3=!![];if(!_[_0xf31a('0xe')](this[_0xf31a('0xf')])&&!_[_0xf31a('0xe')](this[_0xf31a('0xf')][_0xf31a('0x10')])&&this[_0xf31a('0xf')][_0xf31a('0x10')]['length']>0x0){for(var _0x454836=0x0,_0x27e161;_0x454836<this[_0xf31a('0xf')][_0xf31a('0x10')]['length'];_0x454836+=0x1){_0x27e161=this[_0xf31a('0xf')][_0xf31a('0x10')][_0x454836]['id'];if(_[_0xf31a('0xe')](this[_0xf31a('0x5')][_0xf31a('0x11')][_0x27e161])){logger['info'](_0xf31a('0x12'),this[_0xf31a('0x4')]['id'],_0x27e161);}else{if(util['isAgentAvailable'](this[_0xf31a('0x4')]['id'],this[_0xf31a('0x5')]['agents'][_0x27e161],this[_0xf31a('0x4')][_0xf31a('0x13')],!![])){_0x4681e3=![];util['writeLog'](this['squeue']['id'],this['realtime'][_0xf31a('0x11')][_0x27e161],_0xf31a('0x14'));this['realtime'][_0xf31a('0x11')][_0x27e161][_0xf31a('0x15')]=!![];this[_0xf31a('0x5')][_0xf31a('0x11')][_0x27e161]['busyQueue']=this['queue'][_0xf31a('0x16')];util[_0xf31a('0x17')](this['notificationId'],this['squeue']['id'],this['realtime']['agents'][_0x27e161],this[_0xf31a('0xf')],this[_0xf31a('0x6')]);}}}if(_0x4681e3){logger[_0xf31a('0x18')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0xf31a('0x4')]['id']);setTimeout(this[_0xf31a('0x7')][_0xf31a('0x8')](this),0x3e8);}}else{logger[_0xf31a('0x18')](_0xf31a('0x19'),this['squeue']['id']);setTimeout(this[_0xf31a('0x7')][_0xf31a('0x8')](this),0x3e8);}};Beepall['prototype']['handleTimeout']=function(_0x203f28){if(!_[_0xf31a('0xe')](this['queue'])&&!_[_0xf31a('0xe')](this[_0xf31a('0xf')][_0xf31a('0x10')])){for(var _0x5385ba=0x0,_0x1d4d9b;_0x5385ba<this[_0xf31a('0xf')][_0xf31a('0x10')][_0xf31a('0x1a')];_0x5385ba+=0x1){_0x1d4d9b=this[_0xf31a('0xf')][_0xf31a('0x10')][_0x5385ba]['id'];if(_['isNil'](this[_0xf31a('0x5')][_0xf31a('0x11')][_0x1d4d9b])){logger[_0xf31a('0x18')](_0xf31a('0x12'),this[_0xf31a('0x4')]['id'],_0x1d4d9b);}else{util[_0xf31a('0x1b')](this[_0xf31a('0x3')],this[_0xf31a('0x4')]['id'],this[_0xf31a('0x5')][_0xf31a('0x11')][_0x1d4d9b],this[_0xf31a('0xf')],this[_0xf31a('0x6')]);util[_0xf31a('0x1c')](this[_0xf31a('0x4')]['id'],this[_0xf31a('0x5')][_0xf31a('0x11')][_0x1d4d9b],_0x203f28?_0xf31a('0x1d'):_0xf31a('0x1e'));this[_0xf31a('0x5')]['agents'][_0x1d4d9b][_0xf31a('0x15')]=![];this[_0xf31a('0x5')][_0xf31a('0x11')][_0x1d4d9b][_0xf31a('0x1f')]=undefined;}}}if(!_0x203f28){setTimeout(this[_0xf31a('0x7')]['bind'](this),0x3e8);}};function beepall(_0x177991,_0x619352,_0xe8e0e0,_0x5820e6){return new Beepall(_0x177991,_0x619352,_0xe8e0e0,_0x5820e6);}module[_0xf31a('0x20')]=beepall;
\ No newline at end of file
index eca051c..a7de8a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00ab=['./beepall','./agent','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x00ab,0xfe));var _0xb00a=function(_0x1549b2,_0x9e2c90){_0x1549b2=_0x1549b2-0x0;var _0x6b87f=_0x00ab[_0x1549b2];return _0x6b87f;};'use strict';module[_0xb00a('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0xb00a('0x1')),'agent':require(_0xb00a('0x2'))};
\ No newline at end of file
+var _0x6a80=['./rrmemory','./beepall','./agent'];(function(_0x2cc62b,_0x3f5472){var _0x73e474=function(_0x313471){while(--_0x313471){_0x2cc62b['push'](_0x2cc62b['shift']());}};_0x73e474(++_0x3f5472);}(_0x6a80,0x1d1));var _0x06a8=function(_0xb14928,_0x1b51b6){_0xb14928=_0xb14928-0x0;var _0x1f8723=_0x6a80[_0xb14928];return _0x1f8723;};'use strict';module['exports']={'rrmemory':require(_0x06a8('0x0')),'beepall':require(_0x06a8('0x1')),'agent':require(_0x06a8('0x2'))};
\ No newline at end of file
index 31fe224..17bdc6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5248=['agents','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','agentId','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busyQueue','queue','name','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','notificationId','writeLog','TIMEOUT','lodash','uuid','./util','squeue','routing','intervals','push','handleRun','bind','module','timeout','drained','handleTimeout','prototype','handleCheckReject','isAgentAvailable','realtime'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5248,0xc7));var _0x8524=function(_0x31adaa,_0xf4a604){_0x31adaa=_0x31adaa-0x0;var _0x538b13=_0x5248[_0x31adaa];return _0x538b13;};'use strict';var rr=require('rr');var _=require(_0x8524('0x0'));var uuid=require(_0x8524('0x1'));var util=require(_0x8524('0x2'));var logger=require('../../../../../config/logger')('routing');var RRMemory=function(_0x5f5193,_0x434aab,_0x392099,_0x26eb80){this['notificationId']=uuid['v4']();this[_0x8524('0x3')]=_0x5f5193;this['queue']=_0x434aab;this['realtime']=_0x392099;this[_0x8524('0x4')]=_0x26eb80;this[_0x8524('0x5')]={};this[_0x8524('0x3')][_0x8524('0x6')](this[_0x8524('0x7')]['bind'](this),this['handleTimeout'][_0x8524('0x8')](this),this[_0x8524('0x9')]);this[_0x8524('0x3')]['on'](_0x8524('0xa'),this['handleTimeout'][_0x8524('0x8')](this));this[_0x8524('0x3')]['on'](_0x8524('0xb'),this['handleDrained'][_0x8524('0x8')](this));};RRMemory['prototype'][_0x8524('0x6')]=function(){this[_0x8524('0x3')][_0x8524('0x6')](this[_0x8524('0x7')][_0x8524('0x8')](this),this[_0x8524('0xc')][_0x8524('0x8')](this));};RRMemory[_0x8524('0xd')]['handleDrained']=function(_0x3be4d3){this['handleTimeout'](!![]);};RRMemory[_0x8524('0xd')][_0x8524('0xe')]=function(_0x4274aa){if(util[_0x8524('0xf')](this[_0x8524('0x3')]['id'],this[_0x8524('0x10')][_0x8524('0x11')][this['agentId']],this[_0x8524('0x3')][_0x8524('0x12')],!![])){logger[_0x8524('0x13')](_0x8524('0x14'),this[_0x8524('0x3')]['id'],this[_0x8524('0x15')]);clearInterval(this[_0x8524('0x5')][this[_0x8524('0x15')]]);_0x4274aa[_0x8524('0x16')]();setTimeout(this[_0x8524('0x6')][_0x8524('0x8')](this),0x3e8);}};RRMemory[_0x8524('0xd')]['handleRun']=function(_0x434f08){this[_0x8524('0x15')]=rr(this['queue'][_0x8524('0x17')]);logger[_0x8524('0x13')](_0x8524('0x18'),this['squeue']['id'],this[_0x8524('0x15')]);if(_[_0x8524('0x19')](this['realtime'][_0x8524('0x11')][this['agentId']])){logger['info'](_0x8524('0x1a'),this['squeue']['id'],this[_0x8524('0x15')]);_0x434f08['done']();setTimeout(this[_0x8524('0x6')][_0x8524('0x8')](this),0x3e8);}else{if(util[_0x8524('0xf')](this['squeue']['id'],this[_0x8524('0x10')][_0x8524('0x11')][this[_0x8524('0x15')]],this[_0x8524('0x3')][_0x8524('0x12')],!![])){this['realtime'][_0x8524('0x11')][this[_0x8524('0x15')]]['busy']=!![];this[_0x8524('0x10')][_0x8524('0x11')][this['agentId']][_0x8524('0x1b')]=this[_0x8524('0x1c')][_0x8524('0x1d')];util['showNotification'](this['notificationId'],this[_0x8524('0x3')]['id'],this[_0x8524('0x10')][_0x8524('0x11')][this[_0x8524('0x15')]],this['queue'],this['routing']);util['writeLog'](this[_0x8524('0x3')]['id'],this['realtime'][_0x8524('0x11')][this[_0x8524('0x15')]],_0x8524('0x1e'));this[_0x8524('0x5')][this['agentId']]=setInterval(this['handleCheckReject'][_0x8524('0x8')](this,_0x434f08),0x3e8);}else{logger[_0x8524('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this['squeue']['id'],this['agentId']);_0x434f08[_0x8524('0x16')]();setTimeout(this[_0x8524('0x6')][_0x8524('0x8')](this),0x3e8);}}};RRMemory[_0x8524('0xd')][_0x8524('0xc')]=function(_0x46fb85){logger[_0x8524('0x13')](_0x8524('0x1f'),this[_0x8524('0x3')]['id'],this[_0x8524('0x15')]);if(_[_0x8524('0x19')](this[_0x8524('0x10')]['agents'][this['agentId']])){logger[_0x8524('0x13')](_0x8524('0x1a'),this[_0x8524('0x3')]['id'],this[_0x8524('0x15')]);}else{clearInterval(this[_0x8524('0x5')][this[_0x8524('0x15')]]);util[_0x8524('0x20')](this[_0x8524('0x21')],this[_0x8524('0x3')]['id'],this[_0x8524('0x10')]['agents'][this[_0x8524('0x15')]],this[_0x8524('0x1c')],this[_0x8524('0x4')]);util[_0x8524('0x22')](this[_0x8524('0x3')]['id'],this['realtime'][_0x8524('0x11')][this[_0x8524('0x15')]],_0x8524('0x23'));this[_0x8524('0x10')]['agents'][this[_0x8524('0x15')]]['busy']=![];this[_0x8524('0x10')]['agents'][this[_0x8524('0x15')]][_0x8524('0x1b')]=undefined;}if(!_0x46fb85){setTimeout(this[_0x8524('0x6')]['bind'](this),0x3e8);}};function rrmemory(_0x396247,_0x546e12,_0x2c40cf,_0x1f3608){return new RRMemory(_0x396247,_0x546e12,_0x2c40cf,_0x1f3608);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x7601=['squeue','push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','realtime','agents','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','TIMEOUT','exports','lodash','uuid','../../../../../config/logger','routing','notificationId','queue','intervals'];(function(_0x1e81d1,_0x4d6e09){var _0x246855=function(_0x42b8a1){while(--_0x42b8a1){_0x1e81d1['push'](_0x1e81d1['shift']());}};_0x246855(++_0x4d6e09);}(_0x7601,0x146));var _0x1760=function(_0x369f28,_0x2c949d){_0x369f28=_0x369f28-0x0;var _0x584c8c=_0x7601[_0x369f28];return _0x584c8c;};'use strict';var rr=require('rr');var _=require(_0x1760('0x0'));var uuid=require(_0x1760('0x1'));var util=require('./util');var logger=require(_0x1760('0x2'))(_0x1760('0x3'));var RRMemory=function(_0x1deb8f,_0x5c578e,_0x5266c5,_0x38f450){this[_0x1760('0x4')]=uuid['v4']();this['squeue']=_0x1deb8f;this[_0x1760('0x5')]=_0x5c578e;this['realtime']=_0x5266c5;this[_0x1760('0x3')]=_0x38f450;this[_0x1760('0x6')]={};this[_0x1760('0x7')][_0x1760('0x8')](this[_0x1760('0x9')][_0x1760('0xa')](this),this['handleTimeout'][_0x1760('0xa')](this),this['module']);this[_0x1760('0x7')]['on'](_0x1760('0xb'),this[_0x1760('0xc')]['bind'](this));this[_0x1760('0x7')]['on'](_0x1760('0xd'),this[_0x1760('0xe')][_0x1760('0xa')](this));};RRMemory[_0x1760('0xf')]['push']=function(){this[_0x1760('0x7')][_0x1760('0x8')](this[_0x1760('0x9')][_0x1760('0xa')](this),this[_0x1760('0xc')][_0x1760('0xa')](this));};RRMemory[_0x1760('0xf')]['handleDrained']=function(_0x5a1965){this[_0x1760('0xc')](!![]);};RRMemory[_0x1760('0xf')][_0x1760('0x10')]=function(_0x1df325){if(util[_0x1760('0x11')](this[_0x1760('0x7')]['id'],this[_0x1760('0x12')][_0x1760('0x13')][this[_0x1760('0x14')]],this['squeue'][_0x1760('0x15')],!![])){logger[_0x1760('0x16')](_0x1760('0x17'),this[_0x1760('0x7')]['id'],this['agentId']);clearInterval(this[_0x1760('0x6')][this['agentId']]);_0x1df325[_0x1760('0x18')]();setTimeout(this[_0x1760('0x8')]['bind'](this),0x3e8);}};RRMemory[_0x1760('0xf')][_0x1760('0x9')]=function(_0x269fda){this[_0x1760('0x14')]=rr(this['queue'][_0x1760('0x19')]);logger[_0x1760('0x16')](_0x1760('0x1a'),this[_0x1760('0x7')]['id'],this[_0x1760('0x14')]);if(_[_0x1760('0x1b')](this['realtime']['agents'][this[_0x1760('0x14')]])){logger[_0x1760('0x16')](_0x1760('0x1c'),this[_0x1760('0x7')]['id'],this[_0x1760('0x14')]);_0x269fda[_0x1760('0x18')]();setTimeout(this[_0x1760('0x8')]['bind'](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x1760('0x7')]['id'],this[_0x1760('0x12')][_0x1760('0x13')][this[_0x1760('0x14')]],this['squeue'][_0x1760('0x15')],!![])){this[_0x1760('0x12')][_0x1760('0x13')][this[_0x1760('0x14')]][_0x1760('0x1d')]=!![];this[_0x1760('0x12')][_0x1760('0x13')][this[_0x1760('0x14')]][_0x1760('0x1e')]=this[_0x1760('0x5')][_0x1760('0x1f')];util['showNotification'](this[_0x1760('0x4')],this[_0x1760('0x7')]['id'],this[_0x1760('0x12')][_0x1760('0x13')][this[_0x1760('0x14')]],this[_0x1760('0x5')],this[_0x1760('0x3')]);util[_0x1760('0x20')](this[_0x1760('0x7')]['id'],this[_0x1760('0x12')][_0x1760('0x13')][this['agentId']],_0x1760('0x21'));this[_0x1760('0x6')][this['agentId']]=setInterval(this[_0x1760('0x10')][_0x1760('0xa')](this,_0x269fda),0x3e8);}else{logger[_0x1760('0x16')](_0x1760('0x22'),this['squeue']['id'],this[_0x1760('0x14')]);_0x269fda[_0x1760('0x18')]();setTimeout(this[_0x1760('0x8')][_0x1760('0xa')](this),0x3e8);}}};RRMemory[_0x1760('0xf')][_0x1760('0xc')]=function(_0x1f4b6d){logger['info']('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this[_0x1760('0x14')]);if(_[_0x1760('0x1b')](this['realtime']['agents'][this[_0x1760('0x14')]])){logger[_0x1760('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x1760('0x7')]['id'],this[_0x1760('0x14')]);}else{clearInterval(this[_0x1760('0x6')][this[_0x1760('0x14')]]);util['hideNotification'](this[_0x1760('0x4')],this['squeue']['id'],this['realtime'][_0x1760('0x13')][this[_0x1760('0x14')]],this[_0x1760('0x5')],this[_0x1760('0x3')]);util[_0x1760('0x20')](this[_0x1760('0x7')]['id'],this[_0x1760('0x12')][_0x1760('0x13')][this[_0x1760('0x14')]],_0x1760('0x23'));this[_0x1760('0x12')][_0x1760('0x13')][this['agentId']][_0x1760('0x1d')]=![];this['realtime'][_0x1760('0x13')][this[_0x1760('0x14')]][_0x1760('0x1e')]=undefined;}if(!_0x1f4b6d){setTimeout(this[_0x1760('0x8')]['bind'](this),0x3e8);}};function rrmemory(_0xf9f2fe,_0x2609af,_0x386196,_0x2cde29){return new RRMemory(_0xf9f2fe,_0x2609af,_0x386196,_0x2cde29);}module[_0x1760('0x24')]=rrmemory;
\ No newline at end of file
index 4cb1259..a408d8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['online','OFFLINE','Pause','PAUSE','hasOwnProperty','CurrentCapacity','Capacity','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','util','ioredis','../../../../../config/environment','../../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name','user:save','split','\x20interaction','account','notificationShake','body','queue','msg','notificationTemplate','error','[%s][QUEUE]\x20%s','message','notification:%s','save','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy'];(function(_0x3f2a90,_0x50baf1){var _0xb46279=function(_0x5e47b5){while(--_0x5e47b5){_0x3f2a90['push'](_0x3f2a90['shift']());}};_0xb46279(++_0x50baf1);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x25d6f5,_0x4fc8cc){_0x25d6f5=_0x25d6f5-0x0;var _0x5d697a=_0xa6b0[_0x25d6f5];return _0x5d697a;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var utils=require('../utils');var Mustache=require('mustache');var Redis=require(_0x0a6b('0x2'));var config=require(_0x0a6b('0x3'));var logger=require(_0x0a6b('0x4'))('routing');config[_0x0a6b('0x5')]=_[_0x0a6b('0x6')](config[_0x0a6b('0x5')],{'host':_0x0a6b('0x7'),'port':0x18eb});var io=require(_0x0a6b('0x8'))(new Redis(config[_0x0a6b('0x5')]));function emit(_0x1b5fb5,_0xa908dd,_0x26f761){io['to'](_0x1b5fb5)[_0x0a6b('0x9')](_0xa908dd,_0x26f761);}function sendNotification(_0x8e89f,_0xdcc3e5,_0x5046d8,_0x493948,_0x25b93d,_0x100da8){io['to'](util[_0x0a6b('0xa')](_0x0a6b('0xb'),_0x493948[_0x0a6b('0xc')]))[_0x0a6b('0x9')](_0x0a6b('0xd'),_0x493948);var _0x405046=_0x100da8||{};var _0x8bbed9=_0x5046d8[_0x0a6b('0xe')]('.');var _0x391fe6={'uniqueid':_0xdcc3e5,'channel':_0x8bbed9[0x0],'id':_0x8bbed9[0x1],'title':_0x8bbed9[0x0]+_0x0a6b('0xf'),'interactionId':_0x8bbed9[0x2],'queue':_0x25b93d?_0x25b93d[_0x0a6b('0xc')]:null,'sound':_0x405046[_0x0a6b('0x10')]['notificationSound'],'shake':_0x405046['account'][_0x0a6b('0x11')]};try{if(!_0x405046[_0x0a6b('0x12')]){_0x405046[_0x0a6b('0x12')]={};}if(_0x25b93d){_0x405046[_0x0a6b('0x12')][_0x0a6b('0x13')]=_0x25b93d;}else if(_0x405046[_0x0a6b('0x12')][_0x0a6b('0x13')]){delete _0x405046[_0x0a6b('0x12')][_0x0a6b('0x13')];}_0x391fe6[_0x0a6b('0x14')]=utils['getMustacheRender'](_0x405046[_0x0a6b('0x10')][_0x0a6b('0x15')],_0x405046);}catch(_0x555594){_0x391fe6[_0x0a6b('0x14')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x0a6b('0x16')](util[_0x0a6b('0xa')](_0x0a6b('0x17'),_0xdcc3e5,_0x555594[_0x0a6b('0x18')]));}io['to'](util['format'](_0x0a6b('0xb'),_0x493948[_0x0a6b('0xc')]))['emit'](util[_0x0a6b('0xa')](_0x0a6b('0x19'),_0x8e89f?_0x0a6b('0x1a'):'remove'),_0x391fe6);}function writeLog(_0x3ae3f4,_0x93a465,_0x4077c6){return logger['info'](util[_0x0a6b('0xa')](_0x0a6b('0x1b'),_0x3ae3f4,_0x93a465[_0x0a6b('0xc')],_0x4077c6));}exports[_0x0a6b('0x1c')]=function(_0x122c19,_0x53848c,_0x1e5065,_0xdda188){if(_0x53848c[_0x0a6b('0x1d')]){writeLog(_0x122c19,_0x53848c,'BUSY');return![];}if(!_0x53848c[_0x0a6b('0x1e')]){writeLog(_0x122c19,_0x53848c,_0x0a6b('0x1f'));return![];}if(_0x53848c[_0x1e5065+_0x0a6b('0x20')]){writeLog(_0x122c19,_0x53848c,_0x0a6b('0x21'));return![];}if(_0xdda188&&_0x53848c[_0x0a6b('0x22')](_0x1e5065+'Capacity')&&_0x53848c[_0x0a6b('0x22')](_0x1e5065+_0x0a6b('0x23'))){if(_0x53848c[_0x1e5065+_0x0a6b('0x24')]>0x0&&_0x53848c[_0x1e5065+'CurrentCapacity']>=_0x53848c[_0x1e5065+_0x0a6b('0x24')]){writeLog(_0x122c19,_0x53848c,_0x1e5065['toUpperCase']()+_0x0a6b('0x25'));return![];}}return!![];};exports[_0x0a6b('0x26')]=function(_0x45ae97,_0x4884a1,_0x526fdc,_0xf1ed3d,_0xe01bba){return sendNotification(!![],_0x45ae97,_0x4884a1,_0x526fdc,_0xf1ed3d,_0xe01bba);};exports[_0x0a6b('0x27')]=function(_0x3d649e,_0x1935a3,_0x2bbcb1,_0x486f0d,_0xa7ab7c){return sendNotification(![],_0x3d649e,_0x1935a3,_0x2bbcb1,_0x486f0d,_0xa7ab7c);};exports[_0x0a6b('0x28')]=writeLog;
\ No newline at end of file
+var _0x687b=['user:save','split','\x20interaction','notificationSound','account','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','message','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy','BUSY','online','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','hideNotification','writeLog','lodash','util','../utils','mustache','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name'];(function(_0x4bb526,_0x21c6b7){var _0x148f53=function(_0x5b2ddf){while(--_0x5b2ddf){_0x4bb526['push'](_0x4bb526['shift']());}};_0x148f53(++_0x21c6b7);}(_0x687b,0x14a));var _0xb687=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x687b[_0x2b10c6];return _0x3789d2;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var utils=require(_0xb687('0x2'));var Mustache=require(_0xb687('0x3'));var Redis=require('ioredis');var config=require('../../../../../config/environment');var logger=require(_0xb687('0x4'))(_0xb687('0x5'));config[_0xb687('0x6')]=_[_0xb687('0x7')](config[_0xb687('0x6')],{'host':_0xb687('0x8'),'port':0x18eb});var io=require(_0xb687('0x9'))(new Redis(config[_0xb687('0x6')]));function emit(_0x47ffea,_0x27b750,_0x48942b){io['to'](_0x47ffea)[_0xb687('0xa')](_0x27b750,_0x48942b);}function sendNotification(_0xd40346,_0x47f4cc,_0x1a99c5,_0x21e3ab,_0x825ad,_0x15dc9a){io['to'](util[_0xb687('0xb')](_0xb687('0xc'),_0x21e3ab[_0xb687('0xd')]))[_0xb687('0xa')](_0xb687('0xe'),_0x21e3ab);var _0x5103b9=_0x15dc9a||{};var _0x226e56=_0x1a99c5[_0xb687('0xf')]('.');var _0x3ca723={'uniqueid':_0x47f4cc,'channel':_0x226e56[0x0],'id':_0x226e56[0x1],'title':_0x226e56[0x0]+_0xb687('0x10'),'interactionId':_0x226e56[0x2],'queue':_0x825ad?_0x825ad['name']:null,'sound':_0x5103b9['account'][_0xb687('0x11')],'shake':_0x5103b9[_0xb687('0x12')]['notificationShake']};try{if(!_0x5103b9[_0xb687('0x13')]){_0x5103b9[_0xb687('0x13')]={};}if(_0x825ad){_0x5103b9[_0xb687('0x13')][_0xb687('0x14')]=_0x825ad;}else if(_0x5103b9[_0xb687('0x13')][_0xb687('0x14')]){delete _0x5103b9[_0xb687('0x13')][_0xb687('0x14')];}_0x3ca723[_0xb687('0x15')]=utils[_0xb687('0x16')](_0x5103b9[_0xb687('0x12')][_0xb687('0x17')],_0x5103b9);}catch(_0x4f0fdb){_0x3ca723[_0xb687('0x15')]=_0xb687('0x18');logger[_0xb687('0x19')](util['format']('[%s][QUEUE]\x20%s',_0x47f4cc,_0x4f0fdb[_0xb687('0x1a')]));}io['to'](util[_0xb687('0xb')](_0xb687('0xc'),_0x21e3ab['name']))[_0xb687('0xa')](util['format'](_0xb687('0x1b'),_0xd40346?_0xb687('0x1c'):_0xb687('0x1d')),_0x3ca723);}function writeLog(_0x44bd0b,_0x49d5a1,_0x3a73d5){return logger['info'](util[_0xb687('0xb')](_0xb687('0x1e'),_0x44bd0b,_0x49d5a1[_0xb687('0xd')],_0x3a73d5));}exports['isAgentAvailable']=function(_0x1dc06b,_0x491623,_0xa95e91,_0x16cdcb){if(_0x491623[_0xb687('0x1f')]){writeLog(_0x1dc06b,_0x491623,_0xb687('0x20'));return![];}if(!_0x491623[_0xb687('0x21')]){writeLog(_0x1dc06b,_0x491623,_0xb687('0x22'));return![];}if(_0x491623[_0xa95e91+'Pause']){writeLog(_0x1dc06b,_0x491623,_0xb687('0x23'));return![];}if(_0x16cdcb&&_0x491623[_0xb687('0x24')](_0xa95e91+_0xb687('0x25'))&&_0x491623[_0xb687('0x24')](_0xa95e91+_0xb687('0x26'))){if(_0x491623[_0xa95e91+_0xb687('0x25')]>0x0&&_0x491623[_0xa95e91+_0xb687('0x26')]>=_0x491623[_0xa95e91+_0xb687('0x25')]){writeLog(_0x1dc06b,_0x491623,_0xa95e91[_0xb687('0x27')]()+_0xb687('0x28'));return![];}}return!![];};exports['showNotification']=function(_0x3712cf,_0x192966,_0x392721,_0x265a4b,_0x2e5c8d){return sendNotification(!![],_0x3712cf,_0x192966,_0x392721,_0x265a4b,_0x2e5c8d);};exports[_0xb687('0x29')]=function(_0x4e9a06,_0x28b69a,_0x5143af,_0x360429,_0x40f35c){return sendNotification(![],_0x4e9a06,_0x28b69a,_0x5143af,_0x360429,_0x40f35c);};exports[_0xb687('0x2a')]=writeLog;
\ No newline at end of file
index 291ab39..8d46302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1120=['isEmpty','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','[%s][SYSTEM]\x20%s','isObject','stringify','validate','lodash','./utils','../../../../config/logger','routing','string','consequence','error','map','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','info','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace'];(function(_0x2c465f,_0x1e5e35){var _0x25e9fb=function(_0x49d9ea){while(--_0x49d9ea){_0x2c465f['push'](_0x2c465f['shift']());}};_0x25e9fb(++_0x1e5e35);}(_0x1120,0x90));var _0x0112=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x1120[_0x3899d1];return _0xeb4a7d;};'use strict';var schema=require(_0x0112('0x0'));var sh=require('shelljs');var _=require(_0x0112('0x1'));var utils=require(_0x0112('0x2'));var logger=require(_0x0112('0x3'))(_0x0112('0x4'));var system=schema({'command':{'type':_0x0112('0x5'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x0112('0x6')]=function(_0x329a3d,_0x208135){return function(_0x22b4d4){try{var _0x5dd633={'command':_0x208135[0x0]};var _0x83c77=system[_0x0112('0x0')](_0x5dd633,{'typecast':!![]});if(_0x83c77['length']){logger[_0x0112('0x7')]('[%s][SYSTEM]\x20%s',_0x329a3d,_[_0x0112('0x8')](_0x83c77,_0x0112('0x9'))[_0x0112('0xa')](',\x20'));logger['info'](_0x0112('0xb'),_0x329a3d);_0x22b4d4[_0x0112('0xc')]();}else{var _0x472461=this;var _0x30c454=utils['getMustacheRender'](_0x208135[0x0],this);logger[_0x0112('0xd')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x329a3d,_0x30c454);sh[_0x0112('0xe')](_['trim'](_0x30c454),function(_0x563469,_0x24dd30){logger[_0x0112('0xd')](_0x0112('0xf'),_0x329a3d,_0x563469);if(_0x563469==0x0){var _0x51a7e4=_0x24dd30[_0x0112('0x10')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x208135[0x1])||_[_0x0112('0x11')](_0x208135[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x329a3d);_0x472461[_0x0112('0x12')][_0x208135[0x1]]=_0x51a7e4;}else{logger[_0x0112('0xd')](_0x0112('0x13'),_0x329a3d,_0x208135[0x1],_0x51a7e4);_0x472461[_0x0112('0x12')][_0x208135[0x1]]=_0x51a7e4;}}_0x22b4d4[_0x0112('0xc')]();});}}catch(_0x596246){logger[_0x0112('0x7')](_0x0112('0x14'),_0x329a3d,_[_0x0112('0x15')](_0x596246)?JSON[_0x0112('0x16')](_0x596246):_0x596246);logger['info'](_0x0112('0xb'),_0x329a3d);_0x22b4d4[_0x0112('0xc')]();}};};
\ No newline at end of file
+var _0x772d=['error','[%s][SYSTEM]\x20%s','message','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','next','isObject','stringify','shelljs','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate'];(function(_0x53ca49,_0x3dd46c){var _0x18a252=function(_0x28f42a){while(--_0x28f42a){_0x53ca49['push'](_0x53ca49['shift']());}};_0x18a252(++_0x3dd46c);}(_0x772d,0x197));var _0xd772=function(_0x4b67a4,_0x51ae3e){_0x4b67a4=_0x4b67a4-0x0;var _0x375bb9=_0x772d[_0x4b67a4];return _0x375bb9;};'use strict';var schema=require('validate');var sh=require(_0xd772('0x0'));var _=require(_0xd772('0x1'));var utils=require(_0xd772('0x2'));var logger=require(_0xd772('0x3'))(_0xd772('0x4'));var system=schema({'command':{'type':_0xd772('0x5'),'required':!![],'message':_0xd772('0x6')}});exports[_0xd772('0x7')]=function(_0xd707f1,_0x2952c3){return function(_0x2363e8){try{var _0x47236e={'command':_0x2952c3[0x0]};var _0x1ec4e7=system[_0xd772('0x8')](_0x47236e,{'typecast':!![]});if(_0x1ec4e7['length']){logger[_0xd772('0x9')](_0xd772('0xa'),_0xd707f1,_['map'](_0x1ec4e7,_0xd772('0xb'))['join'](',\x20'));logger[_0xd772('0xc')](_0xd772('0xd'),_0xd707f1);_0x2363e8['next']();}else{var _0x4482ef=this;var _0x29f17e=utils[_0xd772('0xe')](_0x2952c3[0x0],this);logger['info']('[%s][SYSTEM]\x20commnad:\x20%s',_0xd707f1,_0x29f17e);sh[_0xd772('0xf')](_[_0xd772('0x10')](_0x29f17e),function(_0x2cc28d,_0x4bed8d){logger[_0xd772('0xc')](_0xd772('0x11'),_0xd707f1,_0x2cc28d);if(_0x2cc28d==0x0){var _0x4b257c=_0x4bed8d[_0xd772('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0xd772('0x13')](_0x2952c3[0x1])||_[_0xd772('0x14')](_0x2952c3[0x1])){logger[_0xd772('0xc')](_0xd772('0x15'),_0xd707f1);_0x4482ef['body'][_0x2952c3[0x1]]=_0x4b257c;}else{logger[_0xd772('0xc')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0xd707f1,_0x2952c3[0x1],_0x4b257c);_0x4482ef[_0xd772('0x16')][_0x2952c3[0x1]]=_0x4b257c;}}_0x2363e8[_0xd772('0x17')]();});}}catch(_0x494c27){logger[_0xd772('0x9')](_0xd772('0xa'),_0xd707f1,_[_0xd772('0x18')](_0x494c27)?JSON[_0xd772('0x19')](_0x494c27):_0x494c27);logger[_0xd772('0xc')](_0xd772('0xd'),_0xd707f1);_0x2363e8[_0xd772('0x17')]();}};};
\ No newline at end of file
index a415cbd..839ff1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x451b=['interaction','catch','[%s][TAG]\x20%s','stringify','finally','isObject','next','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','join','info','channel','Interaction','addTags'];(function(_0x4854fe,_0x5b6170){var _0x7217b4=function(_0x8531a9){while(--_0x8531a9){_0x4854fe['push'](_0x4854fe['shift']());}};_0x7217b4(++_0x5b6170);}(_0x451b,0x1e2));var _0xb451=function(_0x38de69,_0x2e05f9){_0x38de69=_0x38de69-0x0;var _0x33cc61=_0x451b[_0x38de69];return _0x33cc61;};'use strict';var schema=require(_0xb451('0x0'));var _=require(_0xb451('0x1'));var rpc={'chatInteraction':require(_0xb451('0x2')),'openchannelInteraction':require(_0xb451('0x3')),'smsInteraction':require(_0xb451('0x4')),'mailInteraction':require(_0xb451('0x5')),'faxInteraction':require(_0xb451('0x6')),'whatsappInteraction':require(_0xb451('0x7'))};var logger=require('../../../../config/logger')(_0xb451('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xb451('0x9')}});exports[_0xb451('0xa')]=function(_0x352b68,_0x1525a8,_0x107ad4,_0x2d2455){return function(_0x18c167){try{var _0x591f7e={'tag':_0x1525a8[0x0]};var _0x298613=tag[_0xb451('0x0')](_0x591f7e,{'typecast':!![]});if(_0x298613[_0xb451('0xb')]){logger[_0xb451('0xc')]('[%s][TAG]\x20%s',_0x352b68,_['map'](_0x298613,'message')[_0xb451('0xd')](',\x20'));logger[_0xb451('0xe')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x352b68);_0x18c167['next']();}else{var _0x315ced={'ids':[_0x1525a8[0x0]]};if(rpc[_0x2d2455[_0xb451('0xf')]+_0xb451('0x10')]){rpc[_0x2d2455[_0xb451('0xf')]+'Interaction'][_0xb451('0x11')](_0x2d2455['interaction']['id'],_0x315ced)['then'](function(_0x34dca5){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x352b68,_0x1525a8[0x1],_0x2d2455['channel'],_0x2d2455[_0xb451('0x12')]['id']);})[_0xb451('0x13')](function(_0xd4b3bf){logger[_0xb451('0xc')](_0xb451('0x14'),_0x352b68,JSON[_0xb451('0x15')](_0xd4b3bf));logger[_0xb451('0xe')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x352b68);})[_0xb451('0x16')](function(){_0x18c167['next']();});}}}catch(_0x30c7f5){logger[_0xb451('0xc')](_0xb451('0x14'),_0x352b68,_[_0xb451('0x17')](_0x30c7f5)?JSON[_0xb451('0x15')](_0x30c7f5):_0x30c7f5);logger[_0xb451('0xe')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x352b68);_0x18c167[_0xb451('0x18')]();}};};
\ No newline at end of file
+var _0xca33=['join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','Interaction','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','channel','stringify','finally','next','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xca33,0x1ba));var _0x3ca3=function(_0x306ff0,_0x2422ed){_0x306ff0=_0x306ff0-0x0;var _0x5e3f1a=_0xca33[_0x306ff0];return _0x5e3f1a;};'use strict';var schema=require(_0x3ca3('0x0'));var _=require(_0x3ca3('0x1'));var rpc={'chatInteraction':require(_0x3ca3('0x2')),'openchannelInteraction':require(_0x3ca3('0x3')),'smsInteraction':require(_0x3ca3('0x4')),'mailInteraction':require(_0x3ca3('0x5')),'faxInteraction':require(_0x3ca3('0x6')),'whatsappInteraction':require(_0x3ca3('0x7'))};var logger=require(_0x3ca3('0x8'))('routing');var tag=schema({'tag':{'type':_0x3ca3('0x9'),'required':!![],'message':_0x3ca3('0xa')}});exports[_0x3ca3('0xb')]=function(_0x5cf2a8,_0xecc729,_0x59cc48,_0x578b6a){return function(_0x1f3968){try{var _0x742e35={'tag':_0xecc729[0x0]};var _0x511188=tag['validate'](_0x742e35,{'typecast':!![]});if(_0x511188[_0x3ca3('0xc')]){logger[_0x3ca3('0xd')](_0x3ca3('0xe'),_0x5cf2a8,_[_0x3ca3('0xf')](_0x511188,_0x3ca3('0x10'))[_0x3ca3('0x11')](',\x20'));logger[_0x3ca3('0x12')](_0x3ca3('0x13'),_0x5cf2a8);_0x1f3968['next']();}else{var _0x14fd31={'ids':[_0xecc729[0x0]]};if(rpc[_0x578b6a['channel']+_0x3ca3('0x14')]){rpc[_0x578b6a['channel']+_0x3ca3('0x14')]['addTags'](_0x578b6a[_0x3ca3('0x15')]['id'],_0x14fd31)['then'](function(_0xc60822){logger[_0x3ca3('0x12')](_0x3ca3('0x16'),_0x5cf2a8,_0xecc729[0x1],_0x578b6a[_0x3ca3('0x17')],_0x578b6a['interaction']['id']);})['catch'](function(_0x524df3){logger[_0x3ca3('0xd')]('[%s][TAG]\x20%s',_0x5cf2a8,JSON[_0x3ca3('0x18')](_0x524df3));logger[_0x3ca3('0x12')](_0x3ca3('0x13'),_0x5cf2a8);})[_0x3ca3('0x19')](function(){_0x1f3968[_0x3ca3('0x1a')]();});}}}catch(_0x26268c){logger['error'](_0x3ca3('0xe'),_0x5cf2a8,_['isObject'](_0x26268c)?JSON[_0x3ca3('0x18')](_0x26268c):_0x26268c);logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x5cf2a8);_0x1f3968[_0x3ca3('0x1a')]();}};};
\ No newline at end of file
index f45dacc..354fe85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1983=['?params=','urlOnRing','jsonrpc','2.0','login','params','POST','application/json-rpc','parse','result','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&data=','then','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','../../../../config/logger','routing','lodash','replace','\x20-\x20','includes','push'];(function(_0x17d646,_0x1e94df){var _0x369353=function(_0xc72a9e){while(--_0xc72a9e){_0x17d646['push'](_0x17d646['shift']());}};_0x369353(++_0x1e94df);}(_0x1983,0x19d));var _0x3198=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0x1983[_0x257642];return _0x3d813b;};'use strict';var rp=require('request-promise');var logger=require(_0x3198('0x0'))(_0x3198('0x1'));var _=require(_0x3198('0x2'));var arr=[];exports['consequence']=function(_0xbe33ef,_0x5ebecf){return function(_0x4e4145){var _0x3233ce=_0x5ebecf[0xa];var _0xb0e958=_0x5ebecf[0xb];var _0x1d09f5=_0x5ebecf[0xc];var _0xc0b8a8=_0x5ebecf[0xd];var _0x4ee607=_0x5ebecf[0xe];var _0x41b811=_0x5ebecf[0xf][_0x3198('0x3')](/\n/g,_0x3198('0x4'));var _0xfeee50=_0x5ebecf[0x10][_0x3198('0x3')](/\n/g,'\x20');if(!arr[_0x3198('0x5')](_0xb0e958)){arr[_0x3198('0x6')](_0xb0e958);var _0x228315=_0x5ebecf[0x3];var _0x42c43a=_0x5ebecf[0x4];var _0x6c39a=_0x5ebecf[0x1];var _0x14a37c=_0x5ebecf[0x0];var _0x449e5a={};_0x449e5a['urlOnAnswer']=_0x5ebecf[0x8]+_0x3198('0x7')+_0x1d09f5+'|'+_0x3233ce+'|'+_0xc0b8a8+'|'+_0xb0e958+'|'+_0x4ee607;_0x449e5a[_0x3198('0x8')]=_0x5ebecf[0x7]+_0x3198('0x7')+_0x1d09f5+'|'+_0x3233ce+'|'+_0xc0b8a8+'|'+_0xb0e958+'|'+_0x4ee607+'|'+_0x41b811+'|'+_0xfeee50;_0x449e5a['title']=_0x5ebecf[0x9];var _0x5b2aa0={};_0x5b2aa0[_0x3198('0x9')]=_0x3198('0xa');_0x5b2aa0['method']=_0x3198('0xb');var _0x15009f=[];_0x15009f[_0x3198('0x6')](_0x5ebecf[0x2]);_0x15009f[_0x3198('0x6')](_0x5ebecf[0x5]);_0x15009f[_0x3198('0x6')](_0x5ebecf[0x6]);_0x5b2aa0[_0x3198('0xc')]=_0x15009f;_0x5b2aa0['id']=0x1;var _0x4ec808=JSON['stringify'](_0x5b2aa0);var _0x5425b7={'encoding':'utf8','method':_0x3198('0xd'),'timeout':0x2710,'url':_0x228315,'headers':{'Content-Type':_0x3198('0xe')},'body':_0x4ec808};return rp(_0x5425b7)['then'](function(_0x2b0410){const _0x48d980=JSON[_0x3198('0xf')](_0x2b0410);if(!_0x48d980[_0x3198('0x10')]['logged']){throw new Error(_0x3198('0x11'));}var _0x1a18f4=_0xb0e958;var _0x3bd1cb=_0x3198('0x12')+_0x6c39a+_0x3198('0x13')+_0x14a37c+'&sessionId='+_0x1a18f4+_0x3198('0x14')+JSON['stringify'](_0x449e5a);var _0x47102e=_0x42c43a+'?'+_0x3bd1cb;return rp(_0x47102e);})[_0x3198('0x15')](function(_0x2df35d){logger[_0x3198('0x16')](_0x3198('0x17'),_0xbe33ef,_0x2df35d);_0x4e4145[_0x3198('0x18')]();})[_0x3198('0x19')](function(_0x3e684f){logger['error'](_0x3198('0x1a'),_0xbe33ef,_[_0x3198('0x1b')](_0x3e684f)?JSON['stringify'](_0x3e684f):_0x3e684f);_0x4e4145[_0x3198('0x18')]();});}else{logger[_0x3198('0x16')](_0x3198('0x1c'),_0xbe33ef);_0x4e4145[_0x3198('0x1d')]();}};};
\ No newline at end of file
+var _0x8731=['&sessionId=','stringify','then','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','lodash','replace','\x20-\x20','includes','push','urlOnAnswer','urlOnRing','2.0','method','login','params','POST','application/json-rpc','parse','result','logged','&serviceId='];(function(_0x3fcee7,_0x2f4013){var _0x76876d=function(_0x16ed69){while(--_0x16ed69){_0x3fcee7['push'](_0x3fcee7['shift']());}};_0x76876d(++_0x2f4013);}(_0x8731,0x18f));var _0x1873=function(_0x2bfe76,_0x32f3f9){_0x2bfe76=_0x2bfe76-0x0;var _0x30e209=_0x8731[_0x2bfe76];return _0x30e209;};'use strict';var rp=require('request-promise');var logger=require('../../../../config/logger')('routing');var _=require(_0x1873('0x0'));var arr=[];exports['consequence']=function(_0x3ffc7d,_0x2f4d04){return function(_0x167ea9){var _0xb66fb5=_0x2f4d04[0xa];var _0x48d15f=_0x2f4d04[0xb];var _0x30f79f=_0x2f4d04[0xc];var _0x6e770=_0x2f4d04[0xd];var _0x1c6537=_0x2f4d04[0xe];var _0xfb07c=_0x2f4d04[0xf][_0x1873('0x1')](/\n/g,_0x1873('0x2'));var _0x16367b=_0x2f4d04[0x10][_0x1873('0x1')](/\n/g,'\x20');if(!arr[_0x1873('0x3')](_0x48d15f)){arr[_0x1873('0x4')](_0x48d15f);var _0x299034=_0x2f4d04[0x3];var _0x3090de=_0x2f4d04[0x4];var _0x41cd0b=_0x2f4d04[0x1];var _0x14aefe=_0x2f4d04[0x0];var _0x1d523a={};_0x1d523a[_0x1873('0x5')]=_0x2f4d04[0x8]+'?params='+_0x30f79f+'|'+_0xb66fb5+'|'+_0x6e770+'|'+_0x48d15f+'|'+_0x1c6537;_0x1d523a[_0x1873('0x6')]=_0x2f4d04[0x7]+'?params='+_0x30f79f+'|'+_0xb66fb5+'|'+_0x6e770+'|'+_0x48d15f+'|'+_0x1c6537+'|'+_0xfb07c+'|'+_0x16367b;_0x1d523a['title']=_0x2f4d04[0x9];var _0x2ec4ca={};_0x2ec4ca['jsonrpc']=_0x1873('0x7');_0x2ec4ca[_0x1873('0x8')]=_0x1873('0x9');var _0x2ace87=[];_0x2ace87[_0x1873('0x4')](_0x2f4d04[0x2]);_0x2ace87[_0x1873('0x4')](_0x2f4d04[0x5]);_0x2ace87[_0x1873('0x4')](_0x2f4d04[0x6]);_0x2ec4ca[_0x1873('0xa')]=_0x2ace87;_0x2ec4ca['id']=0x1;var _0x535572=JSON['stringify'](_0x2ec4ca);var _0x2a6722={'encoding':'utf8','method':_0x1873('0xb'),'timeout':0x2710,'url':_0x299034,'headers':{'Content-Type':_0x1873('0xc')},'body':_0x535572};return rp(_0x2a6722)['then'](function(_0x1d7792){const _0xeabccd=JSON[_0x1873('0xd')](_0x1d7792);if(!_0xeabccd[_0x1873('0xe')][_0x1873('0xf')]){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x4caaab=_0x48d15f;var _0x3c5ee9='channelId='+_0x41cd0b+_0x1873('0x10')+_0x14aefe+_0x1873('0x11')+_0x4caaab+'&data='+JSON[_0x1873('0x12')](_0x1d523a);var _0x4a9780=_0x3090de+'?'+_0x3c5ee9;return rp(_0x4a9780);})[_0x1873('0x13')](function(_0x9852f0){logger[_0x1873('0x14')](_0x1873('0x15'),_0x3ffc7d,_0x9852f0);_0x167ea9[_0x1873('0x16')]();})['catch'](function(_0x4114d0){logger['error'](_0x1873('0x17'),_0x3ffc7d,_[_0x1873('0x18')](_0x4114d0)?JSON[_0x1873('0x12')](_0x4114d0):_0x4114d0);_0x167ea9[_0x1873('0x16')]();});}else{logger['info'](_0x1873('0x19'),_0x3ffc7d);_0x167ea9['next']();}};};
\ No newline at end of file
index 7b3137e..f54f70d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x42d215,_0x3f398e){var _0x17082c=function(_0x432708){while(--_0x432708){_0x42d215['push'](_0x42d215['shift']());}};_0x17082c(++_0x3f398e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0xa3d65a,_0x1d91af){var _0x496268=function(_0x2ceb18){while(--_0x2ceb18){_0xa3d65a['push'](_0xa3d65a['shift']());}};_0x496268(++_0x1d91af);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
index 54098a2..01a0104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf93=['Please\x20create\x20a\x20new\x20file\x20under','.js','execute','info','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','chatQueues','available','loggedIn','name','waiting','mailQueues','openchannelQueues','paused','smsQueues','faxQueues','whatsappQueues','values','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/whatsappQueueReport','format','isNil','IntervalId','Intervals','map','interval','listen','rules','message','interaction','applications','length','existsSync','join','app','split','channel','push','slice','dialogflow','dialogflowv2','amazonlex','appdata','tvox','account','notificationTemplate','ContactId','body','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','Push\x20new\x20rule','on\x20interval','\x20|\x20','error'];(function(_0x217fab,_0x596325){var _0x56fab0=function(_0x32e383){while(--_0x32e383){_0x217fab['push'](_0x217fab['shift']());}};_0x56fab0(++_0x596325);}(_0xaf93,0x151));var _0x3af9=function(_0x542e67,_0x21b464){_0x542e67=_0x542e67-0x0;var _0x2a4001=_0xaf93[_0x542e67];return _0x2a4001;};'use strict';var _=require(_0x3af9('0x0'));var util=require(_0x3af9('0x1'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x3af9('0x2'));var uuid=require(_0x3af9('0x3'));var utils=require('./applications/utils');var config=require(_0x3af9('0x4'));var logger=require(_0x3af9('0x5'))(_0x3af9('0x6'));var rpc={'openchannelQueueReport':require(_0x3af9('0x7')),'mailQueueReport':require(_0x3af9('0x8')),'chatQueueReport':require(_0x3af9('0x9')),'smsQueueReport':require(_0x3af9('0xa')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x3af9('0xb'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x133672,_0x53b5ba,_0x5325b1){return util[_0x3af9('0xc')]('%s.%s.%s',_0x133672,_0x53b5ba||0x0,_0x5325b1||0x0);}function getIntervals(_0x4e8c72,_0x1313eb){var _0x431798=[];if(!_[_0x3af9('0xd')](_0x1313eb[_0x3af9('0xe')])&&!_['isNil'](_0x4e8c72[_0x1313eb[_0x3af9('0xe')]])&&!_[_0x3af9('0xd')](_0x4e8c72[_0x1313eb[_0x3af9('0xe')]][_0x3af9('0xf')])){_0x431798=_[_0x3af9('0x10')](_0x4e8c72[_0x1313eb[_0x3af9('0xe')]][_0x3af9('0xf')],_0x3af9('0x11'));}else if(!_['isNil'](_0x1313eb[_0x3af9('0x11')])){_0x431798=[_0x1313eb['interval']];}return _0x431798;}exports[_0x3af9('0x12')]=function(_0x222b6f){_0x222b6f[_0x3af9('0x13')]={};return new BPromise(function(_0x50887b,_0x1b8d48){var _0x1088fc={'Start':function(_0x37cb8b){var _0x4b2845=this;return new Promise(function(_0x278e80,_0x9c7d69){if(_0x37cb8b){try{var _0xa92aa4=[];var _0x29dc4b=getId(_0x37cb8b['channel'],_0x37cb8b[_0x3af9('0x14')]?_0x37cb8b[_0x3af9('0x14')]['id']:0x0,_0x37cb8b[_0x3af9('0x15')]?_0x37cb8b[_0x3af9('0x15')]['id']:0x0);if(_0x37cb8b[_0x3af9('0x16')]&&_['isArray'](_0x37cb8b[_0x3af9('0x16')])&&_0x37cb8b[_0x3af9('0x16')][_0x3af9('0x17')]){for(var _0x1f685e=0x0;_0x1f685e<_0x37cb8b[_0x3af9('0x16')]['length'];_0x1f685e+=0x1){var _0x39312c=_0x37cb8b[_0x3af9('0x16')][_0x1f685e];if(fs[_0x3af9('0x18')](path[_0x3af9('0x19')](__dirname,_0x3af9('0x16'),_0x39312c[_0x3af9('0x1a')]+'.js'))){var _0x4a88ea=[];switch(_0x39312c[_0x3af9('0x1a')]['toLowerCase']()){case'autoreply':var _0x35000e=_0x39312c['appdata'][_0x3af9('0x1b')](',');if(_0x37cb8b[_0x3af9('0x1c')]==='mail'){_0x4a88ea['push'](_0x35000e[0x0]);_0x4a88ea['push'](_0x35000e[0x1]);_0x4a88ea[_0x3af9('0x1d')](_0x35000e[_0x3af9('0x1e')](0x2,_0x35000e[_0x3af9('0x17')])[_0x3af9('0x19')](','));}else{_0x4a88ea[_0x3af9('0x1d')](_0x35000e[0x0]);_0x4a88ea[_0x3af9('0x1d')](_0x35000e[_0x3af9('0x1e')](0x1,_0x35000e[_0x3af9('0x17')])['join'](','));}break;case _0x3af9('0x1f'):var _0x574b71=_0x39312c['appdata'][_0x3af9('0x1b')](',');_0x4a88ea[_0x3af9('0x1d')](_0x574b71[0x0]);_0x4a88ea[_0x3af9('0x1d')](_0x574b71[0x1]);_0x4a88ea[_0x3af9('0x1d')](_0x574b71[_0x3af9('0x1e')](0x2,_0x574b71['length'])[_0x3af9('0x19')](','));break;case _0x3af9('0x20'):var _0x165620=_0x39312c['appdata']['split'](',');_0x4a88ea[_0x3af9('0x1d')](_0x165620[0x0]);_0x4a88ea[_0x3af9('0x1d')](_0x165620[0x1]);_0x4a88ea[_0x3af9('0x1d')](_0x165620[0x2]);_0x4a88ea['push'](_0x165620[0x3]);_0x4a88ea[_0x3af9('0x1d')](_0x165620[_0x3af9('0x1e')](0x4,_0x165620[_0x3af9('0x17')])['join'](','));break;case _0x3af9('0x21'):var _0x38b120=_0x39312c[_0x3af9('0x22')]['split'](',');_0x4a88ea[_0x3af9('0x1d')](_0x38b120[0x0]);_0x4a88ea[_0x3af9('0x1d')](_0x38b120[0x1]);_0x4a88ea[_0x3af9('0x1d')](_0x38b120[0x2]);_0x4a88ea['push'](_0x38b120[0x3]);_0x4a88ea[_0x3af9('0x1d')](_0x38b120[_0x3af9('0x1e')](0x4,_0x38b120['length'])[_0x3af9('0x19')](','));break;case'message':_0x4a88ea[_0x3af9('0x1d')](_0x39312c['appdata']);break;case'tag':_0x4a88ea[_0x3af9('0x1d')](_0x39312c['TagId']);_0x4a88ea[_0x3af9('0x1d')](_0x39312c[_0x3af9('0x22')]);break;case _0x3af9('0x23'):var _0x4dfdb3=utils['getMustacheRender'](_0x37cb8b[_0x3af9('0x24')][_0x3af9('0x25')],_0x37cb8b);var _0x4df48b=_0x39312c['appdata'][_0x3af9('0x1b')](',');_0x4a88ea['push'](_0x4df48b[0x0]);_0x4a88ea[_0x3af9('0x1d')](_0x4df48b[0x1]);_0x4a88ea[_0x3af9('0x1d')](_0x4df48b[0x2]);_0x4a88ea['push'](_0x4df48b[0x3]);_0x4a88ea['push'](_0x4df48b[0x4]);_0x4a88ea[_0x3af9('0x1d')](_0x4df48b[0x5]);_0x4a88ea[_0x3af9('0x1d')](_0x4df48b[0x6]);_0x4a88ea[_0x3af9('0x1d')](_0x4df48b[0x7]);_0x4a88ea[_0x3af9('0x1d')](_0x4df48b[0x8]);_0x4a88ea[_0x3af9('0x1d')](_0x4df48b[0x9]);_0x4a88ea['push'](_0x4df48b[0xa]);_0x4a88ea['push'](_0x37cb8b[_0x3af9('0x15')]['id']);_0x4a88ea[_0x3af9('0x1d')](_0x37cb8b[_0x3af9('0x14')]['id']);_0x4a88ea[_0x3af9('0x1d')](_0x39312c['ChatWebsiteId']);_0x4a88ea['push'](_0x37cb8b[_0x3af9('0x15')][_0x3af9('0x26')]);_0x4a88ea[_0x3af9('0x1d')](_0x37cb8b['body'][_0x3af9('0x27')]);_0x4a88ea[_0x3af9('0x1d')](_0x4dfdb3);break;default:_0x4a88ea=_[_0x3af9('0xd')](_0x39312c['appdata'])?[]:_0x39312c[_0x3af9('0x22')]['split'](',');}var _0x1f3ac9={'id':util[_0x3af9('0xc')](_0x3af9('0x28'),_0x29dc4b,_0x39312c['id'],_0x39312c[_0x3af9('0x1a')]),'condition':require(_0x3af9('0x29'))[_0x3af9('0x2a')](_0x29dc4b,getIntervals(_0x222b6f[_0x3af9('0x2b')],_0x39312c),_0x222b6f),'consequence':require(_0x3af9('0x2c')+_0x39312c[_0x3af9('0x1a')])[_0x3af9('0x2d')](_0x29dc4b,_0x4a88ea,_0x222b6f,_0x37cb8b),'p':_0x39312c[_0x3af9('0x2e')]||0x0};logger['info'](_0x3af9('0x2f'),_0x1f3ac9['id'],_0x3af9('0x30'),getIntervals(_0x222b6f[_0x3af9('0x2b')],_0x39312c)[_0x3af9('0x19')](_0x3af9('0x31')));_0xa92aa4[_0x3af9('0x1d')](_0x1f3ac9);}else{logger[_0x3af9('0x32')](_0x3af9('0x33'),path[_0x3af9('0x19')](__dirname,_0x3af9('0x16'),_0x39312c[_0x3af9('0x1a')]+_0x3af9('0x34')));}}_0x222b6f['rules'][_0x29dc4b]=new RuleEngine(_0xa92aa4);_0x222b6f['rules'][_0x29dc4b][_0x3af9('0x35')](_0x37cb8b,function(_0x1daea4){logger[_0x3af9('0x36')](_0x3af9('0x37'),JSON[_0x3af9('0x38')](_0x1daea4[_0x3af9('0x39')]));if(_0x222b6f[_0x3af9('0x13')][_0x29dc4b]){_0x222b6f[_0x3af9('0x13')][_0x29dc4b][_0x3af9('0x3a')](_0x3af9('0x3b'));}});return _0x278e80({'code':0xc8,'message':_0x37cb8b});}else{logger[_0x3af9('0x36')](_0x3af9('0x3c'));return _0x278e80({'code':0xc8,'message':_0x37cb8b});}}catch(_0x3214c9){logger['error'](_0x3214c9[_0x3af9('0x3d')]);return _0x9c7d69(_0x4b2845[_0x3af9('0x32')](0x1f4,_0x3214c9));}}return _0x9c7d69(_0x3af9('0x3e'));});},'AcceptMessage':function(_0x408a71){var _0x4e2803=this;return new Promise(function(_0x4d3b13,_0x2f79f3){if(_0x408a71['agent']&&_0x408a71[_0x3af9('0x3f')]['id']){if(_0x222b6f[_0x3af9('0x40')][_0x408a71[_0x3af9('0x3f')]['id']]){_0x222b6f[_0x3af9('0x40')][_0x408a71['agent']['id']][_0x3af9('0x41')]=![];_0x222b6f[_0x3af9('0x40')][_0x408a71[_0x3af9('0x3f')]['id']]['busyQueue']=undefined;}}if(_0x408a71['message']&&_0x408a71[_0x3af9('0x14')]['id']){try{var _0x4bff37=getId(_0x408a71['channel'],_0x408a71['message']?_0x408a71[_0x3af9('0x14')]['id']:0x0,_0x408a71[_0x3af9('0x15')]?_0x408a71[_0x3af9('0x15')]['id']:0x0);if(_0x222b6f[_0x3af9('0x13')][_0x4bff37]){_0x222b6f[_0x3af9('0x13')][_0x4bff37][_0x3af9('0x3a')](_0x3af9('0x42'));if(rpc[_0x408a71['channel']+_0x3af9('0x43')]){rpc[_0x408a71[_0x3af9('0x1c')]+_0x3af9('0x43')][_0x3af9('0x44')](_0x4bff37,{'UserId':_0x408a71[_0x3af9('0x14')][_0x3af9('0x45')]})['catch'](function(_0x1b4509){logger[_0x3af9('0x32')](_0x3af9('0x46'));});}}return _0x4d3b13({'code':0xc8,'message':_0x408a71});}catch(_0x431c8d){logger['error'](_0x431c8d[_0x3af9('0x3d')]);return _0x2f79f3(_0x4e2803[_0x3af9('0x32')](0x1f4,_0x431c8d));}}logger[_0x3af9('0x32')](_0x3af9('0x47'));return _0x2f79f3(_0x4e2803['error'](0x1f4,_0x3af9('0x47')));});},'RejectMessage':function(_0x42f64e){var _0x17713a=this;return new Promise(function(_0x29bd57,_0x4c75b6){if(_0x42f64e['agent']&&_0x42f64e[_0x3af9('0x3f')]['id']){try{if(_0x222b6f[_0x3af9('0x40')][_0x42f64e[_0x3af9('0x3f')]['id']]){_0x222b6f[_0x3af9('0x40')][_0x42f64e[_0x3af9('0x3f')]['id']][_0x3af9('0x41')]=![];_0x222b6f[_0x3af9('0x40')][_0x42f64e[_0x3af9('0x3f')]['id']][_0x3af9('0x48')]=undefined;}return _0x29bd57({'code':0xc8,'message':_0x42f64e});}catch(_0x3005b7){logger[_0x3af9('0x32')](_0x3005b7['stack']);return _0x4c75b6(_0x17713a[_0x3af9('0x32')](0x1f4,_0x3005b7));}}logger[_0x3af9('0x32')]('message\x20is\x20empty');return _0x4c75b6(_0x17713a['error'](0x1f4,_0x3af9('0x47')));});},'AbandonInteraction':function(_0x4b205f){var _0x27f717=this;return new Promise(function(_0x125140,_0x55c41e){if(_0x4b205f['channel']&&_0x4b205f[_0x3af9('0x15')]&&_0x4b205f[_0x3af9('0x15')]['id']){try{var _0x1c7625=getId(_0x4b205f[_0x3af9('0x1c')],_0x4b205f['message']?_0x4b205f[_0x3af9('0x14')]['id']:0x0,_0x4b205f['interaction']?_0x4b205f[_0x3af9('0x15')]['id']:0x0);if(_0x222b6f[_0x3af9('0x13')][_0x1c7625]){_0x222b6f[_0x3af9('0x13')][_0x1c7625]['emit'](_0x3af9('0x42'));}return _0x125140({'code':0xc8,'message':_0x4b205f});}catch(_0x1d6c31){logger[_0x3af9('0x32')](_0x1d6c31[_0x3af9('0x3d')]);return _0x55c41e(_0x27f717['error'](0x1f4,_0x1d6c31));}}logger[_0x3af9('0x32')](_0x3af9('0x47'));return _0x55c41e(_0x27f717[_0x3af9('0x32')](0x1f4,_0x3af9('0x47')));});},'AgentCapacity':function(_0x1969eb){var _0x434a4a=this;return new Promise(function(_0x12759c,_0x58ad44){if(_0x222b6f[_0x3af9('0x40')][_0x3af9('0x49')](_0x1969eb['id'])){for(var _0x28e8fb in _0x1969eb[_0x3af9('0x4a')]){if(_0x1969eb[_0x3af9('0x4a')]['hasOwnProperty'](_0x28e8fb)){if(_0x222b6f[_0x3af9('0x40')][_0x1969eb['id']][_0x3af9('0x49')](_0x28e8fb+_0x3af9('0x4b'))){_0x222b6f[_0x3af9('0x40')][_0x1969eb['id']][_0x28e8fb+_0x3af9('0x4b')]=parseInt(_0x1969eb[_0x3af9('0x4a')][_0x28e8fb],0xa);}}}_0x222b6f[_0x3af9('0x40')][_0x1969eb['id']][_0x3af9('0x4c')]();return _0x12759c({'code':0xc8,'message':_0x222b6f[_0x3af9('0x40')][_0x1969eb['id']]});}else{return _0x58ad44(_0x434a4a[_0x3af9('0x32')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x1daeb4){return new Promise(function(_0x43587b,_0x3e1755){var _0x9d70ff=_['values'](_0x222b6f[_0x3af9('0x40')]);_0x43587b({'count':_0x9d70ff[_0x3af9('0x17')],'rows':_0x9d70ff});});},'ChatQueues':function(_0x117719){return new Promise(function(_0x36c902,_0x4241d1){var _0x3157ab=[];for(var _0x438950 in _0x222b6f['chatQueues']){if(_0x222b6f[_0x3af9('0x4d')]['hasOwnProperty'](_0x438950)){var _0x30d746=_0x222b6f[_0x3af9('0x4d')][_0x438950];var _0x36a80f={'id':_0x30d746['id'],'available':_0x30d746[_0x3af9('0x4e')],'loggedIn':_0x30d746[_0x3af9('0x4f')],'name':_0x30d746[_0x3af9('0x50')],'paused':_0x30d746['paused'],'waiting':_0x30d746[_0x3af9('0x51')]};_0x3157ab['push'](_0x36a80f);}}_0x36c902({'count':_0x3157ab[_0x3af9('0x17')],'rows':_0x3157ab});});},'MailQueues':function(_0x42f47a){return new Promise(function(_0x2c72b0,_0x3e88eb){var _0x5e2287=[];for(var _0x2d81ab in _0x222b6f[_0x3af9('0x52')]){if(_0x222b6f[_0x3af9('0x52')][_0x3af9('0x49')](_0x2d81ab)){var _0x1a7f88=_0x222b6f[_0x3af9('0x52')][_0x2d81ab];var _0x362a6a={'id':_0x1a7f88['id'],'available':_0x1a7f88[_0x3af9('0x4e')],'loggedIn':_0x1a7f88[_0x3af9('0x4f')],'name':_0x1a7f88[_0x3af9('0x50')],'paused':_0x1a7f88['paused'],'waiting':_0x1a7f88[_0x3af9('0x51')]};_0x5e2287[_0x3af9('0x1d')](_0x362a6a);}}_0x2c72b0({'count':_0x5e2287[_0x3af9('0x17')],'rows':_0x5e2287});});},'OpenchannelQueues':function(_0x2333f3){return new Promise(function(_0x1c8cfe,_0x2643b0){var _0xcc5d=[];for(var _0x50dbed in _0x222b6f[_0x3af9('0x53')]){if(_0x222b6f[_0x3af9('0x53')][_0x3af9('0x49')](_0x50dbed)){var _0x4df733=_0x222b6f[_0x3af9('0x53')][_0x50dbed];var _0x31e40b={'id':_0x4df733['id'],'available':_0x4df733[_0x3af9('0x4e')],'loggedIn':_0x4df733['loggedIn'],'name':_0x4df733[_0x3af9('0x50')],'paused':_0x4df733[_0x3af9('0x54')],'waiting':_0x4df733['waiting']};_0xcc5d[_0x3af9('0x1d')](_0x31e40b);}}_0x1c8cfe({'count':_0xcc5d[_0x3af9('0x17')],'rows':_0xcc5d});});},'SmsQueues':function(_0x41f68e){return new Promise(function(_0x2a8a9b,_0x186847){var _0x30f595=[];for(var _0x3e3a3a in _0x222b6f[_0x3af9('0x55')]){if(_0x222b6f[_0x3af9('0x55')][_0x3af9('0x49')](_0x3e3a3a)){var _0x2b1a2e=_0x222b6f[_0x3af9('0x55')][_0x3e3a3a];var _0x30cac2={'id':_0x2b1a2e['id'],'available':_0x2b1a2e[_0x3af9('0x4e')],'loggedIn':_0x2b1a2e[_0x3af9('0x4f')],'name':_0x2b1a2e[_0x3af9('0x50')],'paused':_0x2b1a2e['paused'],'waiting':_0x2b1a2e[_0x3af9('0x51')]};_0x30f595[_0x3af9('0x1d')](_0x30cac2);}}_0x2a8a9b({'count':_0x30f595['length'],'rows':_0x30f595});});},'FaxQueues':function(_0x2abe70){return new Promise(function(_0x54c5e9,_0x5941f7){var _0x60f8d=[];for(var _0x26c8cf in _0x222b6f['faxQueues']){if(_0x222b6f[_0x3af9('0x56')][_0x3af9('0x49')](_0x26c8cf)){var _0xf90f4f=_0x222b6f['faxQueues'][_0x26c8cf];var _0x288e8a={'id':_0xf90f4f['id'],'available':_0xf90f4f[_0x3af9('0x4e')],'loggedIn':_0xf90f4f[_0x3af9('0x4f')],'name':_0xf90f4f[_0x3af9('0x50')],'paused':_0xf90f4f['paused'],'waiting':_0xf90f4f[_0x3af9('0x51')]};_0x60f8d['push'](_0x288e8a);}}_0x54c5e9({'count':_0x60f8d[_0x3af9('0x17')],'rows':_0x60f8d});});},'WhatsappQueues':function(_0x2ccd0a){return new Promise(function(_0x52ca31,_0x3240c7){var _0x558bca=[];for(var _0x4a553b in _0x222b6f[_0x3af9('0x57')]){if(_0x222b6f[_0x3af9('0x57')]['hasOwnProperty'](_0x4a553b)){var _0x20261b=_0x222b6f['whatsappQueues'][_0x4a553b];var _0x190d49={'id':_0x20261b['id'],'available':_0x20261b[_0x3af9('0x4e')],'loggedIn':_0x20261b[_0x3af9('0x4f')],'name':_0x20261b[_0x3af9('0x50')],'paused':_0x20261b['paused'],'waiting':_0x20261b[_0x3af9('0x51')]};_0x558bca['push'](_0x190d49);}}_0x52ca31({'count':_0x558bca[_0x3af9('0x17')],'rows':_0x558bca});});},'ChatQueuesWaitingInteractions':function(_0x35fcff){return new Promise(function(_0xb3c9e8,_0x268f17){var _0x55f76d=_[_0x3af9('0x58')](_0x222b6f['chatQueuesWaitingInteractions']);_0xb3c9e8({'count':_0x55f76d[_0x3af9('0x17')],'rows':_0x55f76d});});},'MailQueuesWaitingInteractions':function(_0x9c882){return new Promise(function(_0x5a28c6,_0xe501b8){var _0x1db2ef=_[_0x3af9('0x58')](_0x222b6f['mailQueuesWaitingInteractions']);_0x5a28c6({'count':_0x1db2ef[_0x3af9('0x17')],'rows':_0x1db2ef});});},'OpenchannelQueuesWaitingInteractions':function(_0x2caf4e){return new Promise(function(_0x234638,_0x8c67f2){var _0x4cc3fa=_[_0x3af9('0x58')](_0x222b6f[_0x3af9('0x59')]);_0x234638({'count':_0x4cc3fa[_0x3af9('0x17')],'rows':_0x4cc3fa});});},'SmsQueuesWaitingInteractions':function(_0x3c7309){return new Promise(function(_0x18924e,_0x23801f){var _0x56215a=_[_0x3af9('0x58')](_0x222b6f[_0x3af9('0x5a')]);_0x18924e({'count':_0x56215a[_0x3af9('0x17')],'rows':_0x56215a});});},'FaxQueuesWaitingInteractions':function(_0x3b5f92){return new Promise(function(_0x1ad416,_0x2e2a44){var _0x4dff38=_['values'](_0x222b6f[_0x3af9('0x5b')]);_0x1ad416({'count':_0x4dff38[_0x3af9('0x17')],'rows':_0x4dff38});});},'WhatsappQueuesWaitingInteractions':function(_0x352fa9){return new Promise(function(_0xe9bbbd,_0x5dca1e){var _0x1f0d6a=_['values'](_0x222b6f[_0x3af9('0x5c')]);_0xe9bbbd({'count':_0x1f0d6a[_0x3af9('0x17')],'rows':_0x1f0d6a});});}};var _0x1e96cf=jayson['server'](_0x1088fc)[_0x3af9('0x5d')]();_0x1e96cf['on'](_0x3af9('0x32'),function(_0x214699){logger[_0x3af9('0x32')](JSON[_0x3af9('0x38')](_0x214699));return _0x1b8d48(_0x214699);});_0x1e96cf[_0x3af9('0x12')](0x232c,_0x3af9('0x5e'),function(){console[_0x3af9('0x5f')](_0x3af9('0x60'),0x232c);return _0x50887b('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0xa75b=['join','dialogflow','dialogflowv2','amazonlex','tag','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','format','%s:%s:%s','condition','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','.js','Applications\x20executed','matchPath','emit','complete','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','UserId','error','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','stringify','127.0.0.1','log','lodash','jayson/promise','bluebird','uuid','./applications/utils','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','existsSync','app','toLowerCase','appdata','split','mail','push','slice','length'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0xa75b,0x170));var _0xba75=function(_0x2308b6,_0x317979){_0x2308b6=_0x2308b6-0x0;var _0x112ee2=_0xa75b[_0x2308b6];return _0x112ee2;};'use strict';var _=require(_0xba75('0x0'));var util=require('util');var path=require('path');var fs=require('fs');var jayson=require(_0xba75('0x1'));var BPromise=require(_0xba75('0x2'));var uuid=require(_0xba75('0x3'));var utils=require(_0xba75('0x4'));var config=require(_0xba75('0x5'));var logger=require(_0xba75('0x6'))(_0xba75('0x7'));var rpc={'openchannelQueueReport':require(_0xba75('0x8')),'mailQueueReport':require(_0xba75('0x9')),'chatQueueReport':require(_0xba75('0xa')),'smsQueueReport':require(_0xba75('0xb')),'faxQueueReport':require(_0xba75('0xc')),'whatsappQueueReport':require(_0xba75('0xd'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x4b842d,_0x731cae,_0x52669f){return util['format'](_0xba75('0xe'),_0x4b842d,_0x731cae||0x0,_0x52669f||0x0);}function getIntervals(_0x4f4d0a,_0x2e8905){var _0x470836=[];if(!_[_0xba75('0xf')](_0x2e8905[_0xba75('0x10')])&&!_[_0xba75('0xf')](_0x4f4d0a[_0x2e8905[_0xba75('0x10')]])&&!_[_0xba75('0xf')](_0x4f4d0a[_0x2e8905[_0xba75('0x10')]][_0xba75('0x11')])){_0x470836=_[_0xba75('0x12')](_0x4f4d0a[_0x2e8905[_0xba75('0x10')]][_0xba75('0x11')],'interval');}else if(!_['isNil'](_0x2e8905[_0xba75('0x13')])){_0x470836=[_0x2e8905['interval']];}return _0x470836;}exports[_0xba75('0x14')]=function(_0x2df615){_0x2df615[_0xba75('0x15')]={};return new BPromise(function(_0x383b1e,_0x4c4a0b){var _0x31b3b3={'Start':function(_0x18bab2){var _0x256678=this;return new Promise(function(_0x4028f9,_0x41c9e5){if(_0x18bab2){try{var _0x51112b=[];var _0x350a9d=getId(_0x18bab2[_0xba75('0x16')],_0x18bab2[_0xba75('0x17')]?_0x18bab2['message']['id']:0x0,_0x18bab2[_0xba75('0x18')]?_0x18bab2[_0xba75('0x18')]['id']:0x0);if(_0x18bab2[_0xba75('0x19')]&&_[_0xba75('0x1a')](_0x18bab2[_0xba75('0x19')])&&_0x18bab2[_0xba75('0x19')]['length']){for(var _0x23c2ec=0x0;_0x23c2ec<_0x18bab2[_0xba75('0x19')]['length'];_0x23c2ec+=0x1){var _0x5217aa=_0x18bab2[_0xba75('0x19')][_0x23c2ec];if(fs[_0xba75('0x1b')](path['join'](__dirname,'applications',_0x5217aa[_0xba75('0x1c')]+'.js'))){var _0x1b8a36=[];switch(_0x5217aa[_0xba75('0x1c')][_0xba75('0x1d')]()){case'autoreply':var _0x458475=_0x5217aa[_0xba75('0x1e')][_0xba75('0x1f')](',');if(_0x18bab2[_0xba75('0x16')]===_0xba75('0x20')){_0x1b8a36[_0xba75('0x21')](_0x458475[0x0]);_0x1b8a36['push'](_0x458475[0x1]);_0x1b8a36[_0xba75('0x21')](_0x458475[_0xba75('0x22')](0x2,_0x458475[_0xba75('0x23')])[_0xba75('0x24')](','));}else{_0x1b8a36[_0xba75('0x21')](_0x458475[0x0]);_0x1b8a36[_0xba75('0x21')](_0x458475[_0xba75('0x22')](0x1,_0x458475[_0xba75('0x23')])[_0xba75('0x24')](','));}break;case _0xba75('0x25'):var _0x47ddff=_0x5217aa['appdata']['split'](',');_0x1b8a36[_0xba75('0x21')](_0x47ddff[0x0]);_0x1b8a36['push'](_0x47ddff[0x1]);_0x1b8a36[_0xba75('0x21')](_0x47ddff['slice'](0x2,_0x47ddff[_0xba75('0x23')])[_0xba75('0x24')](','));break;case _0xba75('0x26'):var _0x4edc2e=_0x5217aa[_0xba75('0x1e')][_0xba75('0x1f')](',');_0x1b8a36[_0xba75('0x21')](_0x4edc2e[0x0]);_0x1b8a36[_0xba75('0x21')](_0x4edc2e[0x1]);_0x1b8a36['push'](_0x4edc2e[0x2]);_0x1b8a36['push'](_0x4edc2e[0x3]);_0x1b8a36[_0xba75('0x21')](_0x4edc2e['slice'](0x4,_0x4edc2e[_0xba75('0x23')])[_0xba75('0x24')](','));break;case _0xba75('0x27'):var _0x32166a=_0x5217aa['appdata'][_0xba75('0x1f')](',');_0x1b8a36[_0xba75('0x21')](_0x32166a[0x0]);_0x1b8a36['push'](_0x32166a[0x1]);_0x1b8a36[_0xba75('0x21')](_0x32166a[0x2]);_0x1b8a36[_0xba75('0x21')](_0x32166a[0x3]);_0x1b8a36[_0xba75('0x21')](_0x32166a[_0xba75('0x22')](0x4,_0x32166a['length'])[_0xba75('0x24')](','));break;case _0xba75('0x17'):_0x1b8a36['push'](_0x5217aa[_0xba75('0x1e')]);break;case _0xba75('0x28'):_0x1b8a36[_0xba75('0x21')](_0x5217aa['TagId']);_0x1b8a36[_0xba75('0x21')](_0x5217aa[_0xba75('0x1e')]);break;case _0xba75('0x29'):var _0x381cb=utils[_0xba75('0x2a')](_0x18bab2[_0xba75('0x2b')][_0xba75('0x2c')],_0x18bab2);var _0x4c9fb2=_0x5217aa['appdata'][_0xba75('0x1f')](',');_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0x0]);_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0x1]);_0x1b8a36['push'](_0x4c9fb2[0x2]);_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0x3]);_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0x4]);_0x1b8a36['push'](_0x4c9fb2[0x5]);_0x1b8a36['push'](_0x4c9fb2[0x6]);_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0x7]);_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0x8]);_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0x9]);_0x1b8a36[_0xba75('0x21')](_0x4c9fb2[0xa]);_0x1b8a36[_0xba75('0x21')](_0x18bab2['interaction']['id']);_0x1b8a36['push'](_0x18bab2[_0xba75('0x17')]['id']);_0x1b8a36[_0xba75('0x21')](_0x5217aa[_0xba75('0x2d')]);_0x1b8a36[_0xba75('0x21')](_0x18bab2[_0xba75('0x18')][_0xba75('0x2e')]);_0x1b8a36[_0xba75('0x21')](_0x18bab2['body'][_0xba75('0x2f')]);_0x1b8a36[_0xba75('0x21')](_0x381cb);break;default:_0x1b8a36=_['isNil'](_0x5217aa[_0xba75('0x1e')])?[]:_0x5217aa[_0xba75('0x1e')][_0xba75('0x1f')](',');}var _0x45d8cd={'id':util[_0xba75('0x30')](_0xba75('0x31'),_0x350a9d,_0x5217aa['id'],_0x5217aa[_0xba75('0x1c')]),'condition':require('./interval')[_0xba75('0x32')](_0x350a9d,getIntervals(_0x2df615['intervals'],_0x5217aa),_0x2df615),'consequence':require(_0xba75('0x33')+_0x5217aa['app'])[_0xba75('0x34')](_0x350a9d,_0x1b8a36,_0x2df615,_0x18bab2),'p':_0x5217aa[_0xba75('0x35')]||0x0};logger[_0xba75('0x36')](_0xba75('0x37'),_0x45d8cd['id'],_0xba75('0x38'),getIntervals(_0x2df615[_0xba75('0x39')],_0x5217aa)[_0xba75('0x24')](_0xba75('0x3a')));_0x51112b[_0xba75('0x21')](_0x45d8cd);}else{logger['error'](_0xba75('0x3b'),path[_0xba75('0x24')](__dirname,'applications',_0x5217aa[_0xba75('0x1c')]+_0xba75('0x3c')));}}_0x2df615[_0xba75('0x15')][_0x350a9d]=new RuleEngine(_0x51112b);_0x2df615['rules'][_0x350a9d]['execute'](_0x18bab2,function(_0x5c6491){logger['info'](_0xba75('0x3d'),JSON['stringify'](_0x5c6491[_0xba75('0x3e')]));if(_0x2df615[_0xba75('0x15')][_0x350a9d]){_0x2df615[_0xba75('0x15')][_0x350a9d][_0xba75('0x3f')](_0xba75('0x40'));}});return _0x4028f9({'code':0xc8,'message':_0x18bab2});}else{logger['info']('No\x20applications\x20to\x20execute');return _0x4028f9({'code':0xc8,'message':_0x18bab2});}}catch(_0x354c52){logger['error'](_0x354c52[_0xba75('0x41')]);return _0x41c9e5(_0x256678['error'](0x1f4,_0x354c52));}}return _0x41c9e5(_0xba75('0x42'));});},'AcceptMessage':function(_0x426e29){var _0x22e5b4=this;return new Promise(function(_0x3983dc,_0x52a504){if(_0x426e29[_0xba75('0x43')]&&_0x426e29[_0xba75('0x43')]['id']){if(_0x2df615[_0xba75('0x44')][_0x426e29[_0xba75('0x43')]['id']]){_0x2df615[_0xba75('0x44')][_0x426e29[_0xba75('0x43')]['id']][_0xba75('0x45')]=![];_0x2df615[_0xba75('0x44')][_0x426e29['agent']['id']][_0xba75('0x46')]=undefined;}}if(_0x426e29[_0xba75('0x17')]&&_0x426e29[_0xba75('0x17')]['id']){try{var _0x27917d=getId(_0x426e29[_0xba75('0x16')],_0x426e29['message']?_0x426e29[_0xba75('0x17')]['id']:0x0,_0x426e29[_0xba75('0x18')]?_0x426e29[_0xba75('0x18')]['id']:0x0);if(_0x2df615[_0xba75('0x15')][_0x27917d]){_0x2df615[_0xba75('0x15')][_0x27917d][_0xba75('0x3f')](_0xba75('0x47'));if(rpc[_0x426e29['channel']+_0xba75('0x48')]){rpc[_0x426e29[_0xba75('0x16')]+_0xba75('0x48')]['update'](_0x27917d,{'UserId':_0x426e29[_0xba75('0x17')][_0xba75('0x49')]})['catch'](function(_0x4d7e7e){logger[_0xba75('0x4a')]('error\x20update\x20queue\x20report');});}}return _0x3983dc({'code':0xc8,'message':_0x426e29});}catch(_0x49a4df){logger[_0xba75('0x4a')](_0x49a4df['stack']);return _0x52a504(_0x22e5b4[_0xba75('0x4a')](0x1f4,_0x49a4df));}}logger[_0xba75('0x4a')](_0xba75('0x4b'));return _0x52a504(_0x22e5b4[_0xba75('0x4a')](0x1f4,_0xba75('0x4b')));});},'RejectMessage':function(_0x490071){var _0xfa79e6=this;return new Promise(function(_0x3dee66,_0x57aaa6){if(_0x490071[_0xba75('0x43')]&&_0x490071[_0xba75('0x43')]['id']){try{if(_0x2df615[_0xba75('0x44')][_0x490071[_0xba75('0x43')]['id']]){_0x2df615[_0xba75('0x44')][_0x490071['agent']['id']][_0xba75('0x45')]=![];_0x2df615[_0xba75('0x44')][_0x490071['agent']['id']][_0xba75('0x46')]=undefined;}return _0x3dee66({'code':0xc8,'message':_0x490071});}catch(_0xd9da55){logger[_0xba75('0x4a')](_0xd9da55[_0xba75('0x41')]);return _0x57aaa6(_0xfa79e6[_0xba75('0x4a')](0x1f4,_0xd9da55));}}logger[_0xba75('0x4a')]('message\x20is\x20empty');return _0x57aaa6(_0xfa79e6[_0xba75('0x4a')](0x1f4,_0xba75('0x4b')));});},'AbandonInteraction':function(_0x361efb){var _0x429e26=this;return new Promise(function(_0x38129c,_0x1ddb64){if(_0x361efb['channel']&&_0x361efb['interaction']&&_0x361efb['interaction']['id']){try{var _0x4cda26=getId(_0x361efb[_0xba75('0x16')],_0x361efb[_0xba75('0x17')]?_0x361efb[_0xba75('0x17')]['id']:0x0,_0x361efb[_0xba75('0x18')]?_0x361efb[_0xba75('0x18')]['id']:0x0);if(_0x2df615[_0xba75('0x15')][_0x4cda26]){_0x2df615[_0xba75('0x15')][_0x4cda26]['emit'](_0xba75('0x47'));}return _0x38129c({'code':0xc8,'message':_0x361efb});}catch(_0x1e7500){logger[_0xba75('0x4a')](_0x1e7500[_0xba75('0x41')]);return _0x1ddb64(_0x429e26['error'](0x1f4,_0x1e7500));}}logger[_0xba75('0x4a')](_0xba75('0x4b'));return _0x1ddb64(_0x429e26['error'](0x1f4,_0xba75('0x4b')));});},'AgentCapacity':function(_0x4cfd9d){var _0x1f5120=this;return new Promise(function(_0x177f7c,_0x57eceb){if(_0x2df615[_0xba75('0x44')][_0xba75('0x4c')](_0x4cfd9d['id'])){for(var _0x4b5b61 in _0x4cfd9d['capacity']){if(_0x4cfd9d[_0xba75('0x4d')]['hasOwnProperty'](_0x4b5b61)){if(_0x2df615[_0xba75('0x44')][_0x4cfd9d['id']]['hasOwnProperty'](_0x4b5b61+_0xba75('0x4e'))){_0x2df615[_0xba75('0x44')][_0x4cfd9d['id']][_0x4b5b61+_0xba75('0x4e')]=parseInt(_0x4cfd9d[_0xba75('0x4d')][_0x4b5b61],0xa);}}}_0x2df615[_0xba75('0x44')][_0x4cfd9d['id']]['updateRealtime']();return _0x177f7c({'code':0xc8,'message':_0x2df615[_0xba75('0x44')][_0x4cfd9d['id']]});}else{return _0x57eceb(_0x1f5120[_0xba75('0x4a')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x22f170){return new Promise(function(_0x4563c3,_0x16f8ff){var _0x40bf04=_[_0xba75('0x4f')](_0x2df615[_0xba75('0x44')]);_0x4563c3({'count':_0x40bf04[_0xba75('0x23')],'rows':_0x40bf04});});},'ChatQueues':function(_0xb6d3a2){return new Promise(function(_0x14ee95,_0x36bd35){var _0xa0a92=[];for(var _0x9da35c in _0x2df615['chatQueues']){if(_0x2df615['chatQueues'][_0xba75('0x4c')](_0x9da35c)){var _0x31e3b6=_0x2df615[_0xba75('0x50')][_0x9da35c];var _0x441462={'id':_0x31e3b6['id'],'available':_0x31e3b6[_0xba75('0x51')],'loggedIn':_0x31e3b6[_0xba75('0x52')],'name':_0x31e3b6[_0xba75('0x53')],'paused':_0x31e3b6[_0xba75('0x54')],'waiting':_0x31e3b6[_0xba75('0x55')]};_0xa0a92[_0xba75('0x21')](_0x441462);}}_0x14ee95({'count':_0xa0a92[_0xba75('0x23')],'rows':_0xa0a92});});},'MailQueues':function(_0x5dace4){return new Promise(function(_0x20f222,_0x5c1e1d){var _0x7a722d=[];for(var _0x10ff6f in _0x2df615[_0xba75('0x56')]){if(_0x2df615[_0xba75('0x56')][_0xba75('0x4c')](_0x10ff6f)){var _0x1f7623=_0x2df615['mailQueues'][_0x10ff6f];var _0x2108c1={'id':_0x1f7623['id'],'available':_0x1f7623['available'],'loggedIn':_0x1f7623[_0xba75('0x52')],'name':_0x1f7623[_0xba75('0x53')],'paused':_0x1f7623['paused'],'waiting':_0x1f7623['waiting']};_0x7a722d[_0xba75('0x21')](_0x2108c1);}}_0x20f222({'count':_0x7a722d[_0xba75('0x23')],'rows':_0x7a722d});});},'OpenchannelQueues':function(_0x30ef23){return new Promise(function(_0x3146d9,_0x7cf469){var _0xdac989=[];for(var _0x57f65e in _0x2df615[_0xba75('0x57')]){if(_0x2df615[_0xba75('0x57')]['hasOwnProperty'](_0x57f65e)){var _0x1df030=_0x2df615[_0xba75('0x57')][_0x57f65e];var _0x281499={'id':_0x1df030['id'],'available':_0x1df030[_0xba75('0x51')],'loggedIn':_0x1df030[_0xba75('0x52')],'name':_0x1df030['name'],'paused':_0x1df030[_0xba75('0x54')],'waiting':_0x1df030['waiting']};_0xdac989[_0xba75('0x21')](_0x281499);}}_0x3146d9({'count':_0xdac989[_0xba75('0x23')],'rows':_0xdac989});});},'SmsQueues':function(_0x46b595){return new Promise(function(_0x42dcc7,_0x67446f){var _0x2a70ac=[];for(var _0x599d61 in _0x2df615['smsQueues']){if(_0x2df615[_0xba75('0x58')]['hasOwnProperty'](_0x599d61)){var _0x42aa26=_0x2df615[_0xba75('0x58')][_0x599d61];var _0x5187a0={'id':_0x42aa26['id'],'available':_0x42aa26[_0xba75('0x51')],'loggedIn':_0x42aa26[_0xba75('0x52')],'name':_0x42aa26[_0xba75('0x53')],'paused':_0x42aa26['paused'],'waiting':_0x42aa26['waiting']};_0x2a70ac['push'](_0x5187a0);}}_0x42dcc7({'count':_0x2a70ac['length'],'rows':_0x2a70ac});});},'FaxQueues':function(_0x58e3bb){return new Promise(function(_0xce1b93,_0x549f1d){var _0x22a214=[];for(var _0x159c0a in _0x2df615[_0xba75('0x59')]){if(_0x2df615[_0xba75('0x59')][_0xba75('0x4c')](_0x159c0a)){var _0x3cb6e1=_0x2df615[_0xba75('0x59')][_0x159c0a];var _0x482033={'id':_0x3cb6e1['id'],'available':_0x3cb6e1['available'],'loggedIn':_0x3cb6e1[_0xba75('0x52')],'name':_0x3cb6e1[_0xba75('0x53')],'paused':_0x3cb6e1['paused'],'waiting':_0x3cb6e1[_0xba75('0x55')]};_0x22a214['push'](_0x482033);}}_0xce1b93({'count':_0x22a214[_0xba75('0x23')],'rows':_0x22a214});});},'WhatsappQueues':function(_0xc00f73){return new Promise(function(_0x5ade59,_0x1b459c){var _0x4cf755=[];for(var _0x32c3a3 in _0x2df615[_0xba75('0x5a')]){if(_0x2df615['whatsappQueues'][_0xba75('0x4c')](_0x32c3a3)){var _0x3fe397=_0x2df615[_0xba75('0x5a')][_0x32c3a3];var _0x1907f1={'id':_0x3fe397['id'],'available':_0x3fe397[_0xba75('0x51')],'loggedIn':_0x3fe397[_0xba75('0x52')],'name':_0x3fe397[_0xba75('0x53')],'paused':_0x3fe397[_0xba75('0x54')],'waiting':_0x3fe397['waiting']};_0x4cf755[_0xba75('0x21')](_0x1907f1);}}_0x5ade59({'count':_0x4cf755[_0xba75('0x23')],'rows':_0x4cf755});});},'ChatQueuesWaitingInteractions':function(_0x55b326){return new Promise(function(_0x47b37b,_0x5474ea){var _0x35da71=_['values'](_0x2df615[_0xba75('0x5b')]);_0x47b37b({'count':_0x35da71['length'],'rows':_0x35da71});});},'MailQueuesWaitingInteractions':function(_0xceb67d){return new Promise(function(_0x47fa0a,_0x4a8699){var _0x10f7df=_['values'](_0x2df615[_0xba75('0x5c')]);_0x47fa0a({'count':_0x10f7df['length'],'rows':_0x10f7df});});},'OpenchannelQueuesWaitingInteractions':function(_0x5db76b){return new Promise(function(_0x1b4c76,_0x4aa672){var _0x3edf13=_['values'](_0x2df615[_0xba75('0x5d')]);_0x1b4c76({'count':_0x3edf13[_0xba75('0x23')],'rows':_0x3edf13});});},'SmsQueuesWaitingInteractions':function(_0x21fa25){return new Promise(function(_0x595962,_0x5389a){var _0x1de4a3=_['values'](_0x2df615[_0xba75('0x5e')]);_0x595962({'count':_0x1de4a3['length'],'rows':_0x1de4a3});});},'FaxQueuesWaitingInteractions':function(_0x4bce2f){return new Promise(function(_0x3791c4,_0x545e77){var _0x3add47=_[_0xba75('0x4f')](_0x2df615[_0xba75('0x5f')]);_0x3791c4({'count':_0x3add47[_0xba75('0x23')],'rows':_0x3add47});});},'WhatsappQueuesWaitingInteractions':function(_0x37e149){return new Promise(function(_0x1cc94d,_0x468587){var _0x3c14e2=_[_0xba75('0x4f')](_0x2df615[_0xba75('0x60')]);_0x1cc94d({'count':_0x3c14e2[_0xba75('0x23')],'rows':_0x3c14e2});});}};var _0x5d89ee=jayson['server'](_0x31b3b3)[_0xba75('0x61')]();_0x5d89ee['on']('error',function(_0x5443f4){logger[_0xba75('0x4a')](JSON[_0xba75('0x62')](_0x5443f4));return _0x4c4a0b(_0x5443f4);});_0x5d89ee[_0xba75('0x14')](0x232c,_0xba75('0x63'),function(){console[_0xba75('0x64')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x383b1e('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 4d774f1..983b1bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x348c=['stop','push','Command','format','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','some','[%s][INTERVAL]\x20%s\x20%s','join','when','log','stack','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','request','then','error','message','result','catch','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x348c,0x16a));var _0xc348=function(_0x9e09f,_0x4aaec8){_0x9e09f=_0x9e09f-0x0;var _0x3ac6f8=_0x348c[_0x9e09f];return _0x3ac6f8;};'use strict';var util=require('util');var BPromise=require(_0xc348('0x0'));var jayson=require(_0xc348('0x1'));var _=require(_0xc348('0x2'));var logger=require(_0xc348('0x3'))(_0xc348('0x4'));var client=jayson[_0xc348('0x5')]['http']({'port':0x232a});function request(_0xbdd2f6,_0x322fe8){return new BPromise(function(_0x1e54b5,_0x3ef12c){return client[_0xc348('0x6')](_0xbdd2f6,_0x322fe8)[_0xc348('0x7')](function(_0x2f074f){if(_0x2f074f[_0xc348('0x8')]){return _0x3ef12c(_0x2f074f['error'][_0xc348('0x9')]);}else{return _0x1e54b5(_0x2f074f[_0xc348('0xa')]);}})[_0xc348('0xb')](function(_0x21ef67){return _0x3ef12c(_0x21ef67);});});}exports[_0xc348('0xc')]=function(_0x1f406e,_0x127e3a,_0x13f248){return function(_0x589801){if(_0x13f248[_0xc348('0xd')]&&!_0x13f248['rules'][_0x1f406e]){logger['info'](_0xc348('0xe'),_0x1f406e);return _0x589801[_0xc348('0xf')]();}var _0x4eaf88=[];for(var _0x1d92bb=0x0;_0x1d92bb<_0x127e3a['length'];_0x1d92bb+=0x1){_0x4eaf88[_0xc348('0x10')](request(_0xc348('0x11'),{'command':util[_0xc348('0x12')](_0xc348('0x13'),_0x127e3a[_0x1d92bb])})[_0xc348('0x7')](function(_0x2371d5){return _0x2371d5&&_0x2371d5[_0xc348('0x9')]&&_0x2371d5['message'][_0xc348('0x14')](_0xc348('0x15'))>=0x0?!![]:![];})['catch'](function(_0x3bd98b){logger[_0xc348('0x8')](_0xc348('0x16'),_0x1f406e,_0x127e3a[_0x1d92bb]);}));}BPromise['all'](_0x4eaf88)['then'](function(_0x1a618a){var _0x1258a5=_[_0xc348('0x17')](_0x1a618a);logger['info'](_0xc348('0x18'),_0x1f406e,_0x127e3a[_0xc348('0x19')]('\x20|\x20'),_0x1258a5);_0x589801[_0xc348('0x1a')](_0x1258a5);})[_0xc348('0xb')](function(_0x15f125){console[_0xc348('0x1b')](_0x15f125);logger[_0xc348('0x8')](_0xc348('0x18'),_0x1f406e,_0x127e3a[_0xc348('0x19')]('\x20|\x20'),_0x15f125[_0xc348('0x1c')]);_0x589801[_0xc348('0xf')]();});};};
\ No newline at end of file
+var _0x8114=['some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','http','request','error','result','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','format','iftime\x20%s','indexOf','[%s][INTERVAL]\x20%s','all','then'];(function(_0x496333,_0x1c47d6){var _0x44256e=function(_0x58767d){while(--_0x58767d){_0x496333['push'](_0x496333['shift']());}};_0x44256e(++_0x1c47d6);}(_0x8114,0x181));var _0x4811=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x8114[_0x4b369d];return _0x571a98;};'use strict';var util=require(_0x4811('0x0'));var BPromise=require(_0x4811('0x1'));var jayson=require(_0x4811('0x2'));var _=require(_0x4811('0x3'));var logger=require(_0x4811('0x4'))('routing');var client=jayson['client'][_0x4811('0x5')]({'port':0x232a});function request(_0x3634b4,_0x397c35){return new BPromise(function(_0x52180a,_0x4a56ec){return client[_0x4811('0x6')](_0x3634b4,_0x397c35)['then'](function(_0x523308){if(_0x523308[_0x4811('0x7')]){return _0x4a56ec(_0x523308['error']['message']);}else{return _0x52180a(_0x523308[_0x4811('0x8')]);}})[_0x4811('0x9')](function(_0x385dc4){return _0x4a56ec(_0x385dc4);});});}exports['condition']=function(_0x53fb74,_0xeb7798,_0x1e08c1){return function(_0x1f145f){if(_0x1e08c1[_0x4811('0xa')]&&!_0x1e08c1[_0x4811('0xa')][_0x53fb74]){logger[_0x4811('0xb')](_0x4811('0xc'),_0x53fb74);return _0x1f145f[_0x4811('0xd')]();}var _0x247472=[];for(var _0x3215bb=0x0;_0x3215bb<_0xeb7798['length'];_0x3215bb+=0x1){_0x247472['push'](request('Command',{'command':util[_0x4811('0xe')](_0x4811('0xf'),_0xeb7798[_0x3215bb])})['then'](function(_0x3be6f0){return _0x3be6f0&&_0x3be6f0['message']&&_0x3be6f0['message'][_0x4811('0x10')]('true')>=0x0?!![]:![];})[_0x4811('0x9')](function(_0x511af6){logger['error'](_0x4811('0x11'),_0x53fb74,_0xeb7798[_0x3215bb]);}));}BPromise[_0x4811('0x12')](_0x247472)[_0x4811('0x13')](function(_0x5c0d9b){var _0x451a39=_[_0x4811('0x14')](_0x5c0d9b);logger['info'](_0x4811('0x15'),_0x53fb74,_0xeb7798[_0x4811('0x16')](_0x4811('0x17')),_0x451a39);_0x1f145f[_0x4811('0x18')](_0x451a39);})['catch'](function(_0x4a4ed6){console[_0x4811('0x19')](_0x4a4ed6);logger[_0x4811('0x7')](_0x4811('0x15'),_0x53fb74,_0xeb7798['join'](_0x4811('0x17')),_0x4a4ed6[_0x4811('0x1a')]);_0x1f145f[_0x4811('0xd')]();});};};
\ No newline at end of file
index 58fe01f..356e581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['answeredelsewheremembername','agentcomplete','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','transfereeuniqueid','agententerreason','clone','calleridname','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','lodash','./utils','format','uniqueid','channel','queue','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','agentcalled','destuniqueid','agentcalledAt','now','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','timeout','holdtime','ringtime','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','talktime','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere'];(function(_0x142527,_0x481e58){var _0x5bcf68=function(_0x533f80){while(--_0x533f80){_0x142527['push'](_0x142527['shift']());}};_0x5bcf68(++_0x481e58);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2f1762,_0xab43df){_0x2f1762=_0x2f1762-0x0;var _0x8ab21=_0xb7e7[_0x2f1762];return _0x8ab21;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var utils=require(_0x7b7e('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x518dc6,_0x1b7cc7){utils['info'](util[_0x7b7e('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x518dc6[_0x7b7e('0x3')],_0x518dc6[_0x7b7e('0x4')],_0x518dc6[_0x7b7e('0x5')],_0x518dc6['membername'],_0x518dc6['interface'],_0x518dc6[_0x7b7e('0x6')],_0x518dc6[_0x7b7e('0x7')],_0x518dc6[_0x7b7e('0x8')]));if(_0x518dc6['queue']){utils[_0x7b7e('0x9')](_0x518dc6[_0x7b7e('0x5')])[_0x7b7e('0xa')](function(_0x1647e5){if(_0x1647e5){_0x518dc6[_0x7b7e('0xb')]=_0x1647e5[_0x7b7e('0xb')];_0x518dc6[_0x7b7e('0xc')]=_0x518dc6['agentcomplete']?_0x1647e5[_0x7b7e('0xd')]:![];_0x518dc6[_0x7b7e('0xe')]=_0x518dc6[_0x7b7e('0xc')]?_0x1647e5[_0x7b7e('0xf')]:0x0;}utils[_0x7b7e('0x10')](_0x7b7e('0x11'),_0x518dc6);});}else{utils[_0x7b7e('0x10')](_0x7b7e('0x11'),_0x518dc6);}if(_0x1b7cc7){delete transfers[_0x518dc6[_0x7b7e('0x3')]];}else{delete agents[_0x518dc6['destuniqueid']];}}exports[_0x7b7e('0x12')]=function(_0x430eab){try{utils['debug'](util[_0x7b7e('0x2')]('[%s][agents][agentcalled]',_0x430eab['uniqueid']),_0x430eab);agents[_0x430eab[_0x7b7e('0x13')]]=_0x430eab;agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x14')]=utils[_0x7b7e('0x15')]();agents[_0x430eab[_0x7b7e('0x13')]]['lastevent']='called';agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x7')]=null;agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x16')]=null;utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x18'),_0x430eab[_0x7b7e('0x3')],agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x19')],_0x430eab[_0x7b7e('0x13')]));}catch(_0x14f4fe){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x1b'),_0x430eab[_0x7b7e('0x3')]),_0x14f4fe);}};exports[_0x7b7e('0x1c')]=function(_0x49eddb){try{if(!_[_0x7b7e('0x1d')](agents[_0x49eddb[_0x7b7e('0x13')]])){utils[_0x7b7e('0x1e')](util['format'](_0x7b7e('0x1f'),_0x49eddb[_0x7b7e('0x3')]),_0x49eddb);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x20'),_0x49eddb[_0x7b7e('0x3')],agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x19')],_0x49eddb['destuniqueid']));agents[_0x49eddb['destuniqueid']]['agentringnoanswer']=!![];agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x21')]=utils[_0x7b7e('0x15')]();agents[_0x49eddb['destuniqueid']]['lastevent']='timeout';agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x22')]=_0x7b7e('0x23');agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x24')]=_0x49eddb['ringtime']?parseInt(_0x49eddb[_0x7b7e('0x25')])/0x3e8:0x0;agents[_0x49eddb[_0x7b7e('0x13')]]['talktime']=0x0;unanswered['push'](_0x49eddb['destuniqueid']);}}catch(_0x12ef0b){utils[_0x7b7e('0x1a')](util['format'](_0x7b7e('0x1f'),_0x49eddb['uniqueid']),_0x12ef0b);}};exports[_0x7b7e('0x26')]=function(_0xb9b6bf){try{_[_0x7b7e('0x27')](agents,function(_0x5515ca,_0x3960b8){if(_0x5515ca[_0x7b7e('0x3')]==_0xb9b6bf[_0x7b7e('0x3')]&&!_[_0x7b7e('0x28')](unanswered,_0x5515ca[_0x7b7e('0x13')])){utils['debug'](util[_0x7b7e('0x2')]('[%s][agents][queuecallerabandon]',_0xb9b6bf[_0x7b7e('0x3')]),_0xb9b6bf);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x29'),_0xb9b6bf[_0x7b7e('0x3')],_0x5515ca[_0x7b7e('0x19')],_0x5515ca[_0x7b7e('0x13')]));_0x5515ca['agentringnoanswer']=!![];_0x5515ca['agentringnoanswerAt']=utils[_0x7b7e('0x15')]();_0x5515ca[_0x7b7e('0x8')]='abandoned';_0x5515ca[_0x7b7e('0x22')]=_0x7b7e('0x2a');_0x5515ca[_0x7b7e('0x24')]=_0xb9b6bf['holdtime'];_0x5515ca[_0x7b7e('0x2b')]=0x0;writeDB(_0x5515ca);}});}catch(_0x256908){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x2c'),_0xb9b6bf[_0x7b7e('0x3')]),_0x256908);}};exports[_0x7b7e('0x2d')]=function(_0x202f04){try{if(agents[_0x202f04[_0x7b7e('0x13')]]){utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x2e'),_0x202f04[_0x7b7e('0x3')]),_0x202f04);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x2f'),_0x202f04['uniqueid'],agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x19')],_0x202f04[_0x7b7e('0x13')]));agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x30')]=utils[_0x7b7e('0x15')]();agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x7')]=_0x202f04[_0x7b7e('0x7')];agents[_0x202f04[_0x7b7e('0x13')]]['connectedlinename']=_0x202f04[_0x7b7e('0x16')];agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x24')]=_0x202f04[_0x7b7e('0x25')];agents[_0x202f04['destuniqueid']][_0x7b7e('0x8')]=_0x7b7e('0x31');_[_0x7b7e('0x27')](agents,function(_0x5c58c0,_0x4a2888){if(_0x5c58c0[_0x7b7e('0x13')]!=_0x202f04['destuniqueid']&&_0x5c58c0[_0x7b7e('0x3')]==_0x202f04[_0x7b7e('0x3')]){_0x5c58c0['talktime']=0x0;_0x5c58c0[_0x7b7e('0x24')]=_0x202f04[_0x7b7e('0x25')];_0x5c58c0[_0x7b7e('0x1c')]=!![];_0x5c58c0[_0x7b7e('0x21')]=utils[_0x7b7e('0x15')]();_0x5c58c0[_0x7b7e('0x8')]=_0x7b7e('0x32');_0x5c58c0[_0x7b7e('0x22')]=_0x7b7e('0x32');_0x5c58c0['answeredelsewheredestinationuniqueid']=_0x202f04['destuniqueid'];_0x5c58c0[_0x7b7e('0x33')]=_0x202f04['membername'];writeDB(_0x5c58c0);}});}}catch(_0x41c8a6){utils['error'](util['format'](_0x7b7e('0x2e'),_0x202f04['uniqueid']),_0x41c8a6);}};exports[_0x7b7e('0x34')]=function(_0x52051c){try{if(!_[_0x7b7e('0x1d')](agents[_0x52051c[_0x7b7e('0x13')]])){utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')]('[%s][agents][agentcomplete]',_0x52051c[_0x7b7e('0x3')]),_0x52051c);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x35'),_0x52051c[_0x7b7e('0x3')],agents[_0x52051c[_0x7b7e('0x13')]]['membername'],_0x52051c['destuniqueid']));agents[_0x52051c['destuniqueid']][_0x7b7e('0x34')]=!![];agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x36')]=utils[_0x7b7e('0x15')]();agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x2b')]=utils['diffTime'](agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x36')],agents[_0x52051c['destuniqueid']]['agentconnectAt']);agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x22')]=_0x52051c[_0x7b7e('0x22')];agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x8')]=_0x7b7e('0x37');writeDB(agents[_0x52051c['destuniqueid']]);}}catch(_0x2673eb){utils['error'](util[_0x7b7e('0x2')](_0x7b7e('0x38'),_0x52051c[_0x7b7e('0x3')]),_0x2673eb);}};exports[_0x7b7e('0x39')]=function(_0x58e4e6){try{if(!_[_0x7b7e('0x1d')](agents[_0x58e4e6[_0x7b7e('0x3a')]])){utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x3b'),_0x58e4e6['uniqueid']),_0x58e4e6);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x3c'),_0x58e4e6[_0x7b7e('0x3')],agents[_0x58e4e6[_0x7b7e('0x3a')]]['membername'],agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x3')]));agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x3d')]=!![];agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x3e')]=_0x7b7e('0x3f');agents[_0x58e4e6['transfereruniqueid']][_0x7b7e('0x40')]=_0x58e4e6['extension'];agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x41')]=agents[_0x58e4e6['transfereruniqueid']][_0x7b7e('0x3')];}}catch(_0x44e3a0){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x3b'),_0x58e4e6[_0x7b7e('0x3')]),_0x44e3a0);}};exports[_0x7b7e('0x42')]=function(_0x5f15ce){try{utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x43'),_0x5f15ce[_0x7b7e('0x44')]),_0x5f15ce);if(_0x5f15ce['origtransfereruniqueid']==_0x5f15ce['origtransfererlinkedid']){if(!_['isNil'](agents[_0x5f15ce[_0x7b7e('0x45')]])){utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x5f15ce['origtransfereruniqueid'],agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x19')]));agents[_0x5f15ce['secondtransfereruniqueid']][_0x7b7e('0x3d')]=!![];agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x3e')]='ATTENDED';agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x40')]=_0x5f15ce['origtransfererexten'];agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x41')]=_0x5f15ce[_0x7b7e('0x44')];}if(_0x5f15ce[_0x7b7e('0x46')]&&agents[_0x5f15ce[_0x7b7e('0x46')]]){agents[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x47')]=0x1;transfers[_0x5f15ce[_0x7b7e('0x46')]]=_[_0x7b7e('0x48')](agents[_0x5f15ce['transfereeuniqueid']]);transfers[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x6')]=agents[_0x5f15ce['secondtransfereruniqueid']][_0x7b7e('0x6')];transfers[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x49')]=agents[_0x5f15ce['secondtransfereruniqueid']][_0x7b7e('0x49')];transfers[_0x5f15ce['transfereeuniqueid']][_0x7b7e('0x14')]=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce['transfereeuniqueid']][_0x7b7e('0x30')]=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce['transfereeuniqueid']][_0x7b7e('0x24')]=0x0;transfers[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x47')]=0x2;}}else if(_0x5f15ce[_0x7b7e('0x45')]==_0x5f15ce['secondtransfererlinkedid']){if(!_[_0x7b7e('0x1d')](agents[_0x5f15ce[_0x7b7e('0x44')]])){utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x4a'),_0x5f15ce[_0x7b7e('0x44')],agents[_0x5f15ce[_0x7b7e('0x44')]][_0x7b7e('0x19')]));agents[_0x5f15ce[_0x7b7e('0x44')]][_0x7b7e('0x3d')]=!![];agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x3e')]='ATTENDED';agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x40')]=_0x5f15ce[_0x7b7e('0x4b')];agents[_0x5f15ce[_0x7b7e('0x44')]][_0x7b7e('0x41')]=_0x5f15ce['secondtransfereruniqueid'];}if(_0x5f15ce[_0x7b7e('0x4c')]&&agents[_0x5f15ce[_0x7b7e('0x4c')]]){agents[_0x5f15ce[_0x7b7e('0x4c')]][_0x7b7e('0x47')]=0x1;transfers[_0x5f15ce[_0x7b7e('0x4c')]]=_[_0x7b7e('0x48')](agents[_0x5f15ce['transfertargetuniqueid']]);transfers[_0x5f15ce[_0x7b7e('0x4c')]]['calleridnum']=agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x6')];transfers[_0x5f15ce['transfertargetuniqueid']][_0x7b7e('0x49')]=agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x49')];transfers[_0x5f15ce[_0x7b7e('0x4c')]]['agentcalledAt']=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce[_0x7b7e('0x4c')]]['agentconnectAt']=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce[_0x7b7e('0x4c')]][_0x7b7e('0x24')]=0x0;transfers[_0x5f15ce[_0x7b7e('0x4c')]][_0x7b7e('0x47')]=0x2;}}}catch(_0x2147d9){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x43'),_0x5f15ce[_0x7b7e('0x44')]),_0x2147d9);}};exports['hangup']=function(_0x59ecf9){try{utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x4d'),_0x59ecf9[_0x7b7e('0x3')]),_0x59ecf9);if(agents[_0x59ecf9[_0x7b7e('0x3')]]&&agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')]==='timeout'){if(_0x59ecf9[_0x7b7e('0x4e')]==='21'){agents[_0x59ecf9[_0x7b7e('0x3')]]['reason']=_0x7b7e('0x4f');agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]=_0x7b7e('0x4f');}utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x50'),_0x59ecf9[_0x7b7e('0x3')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x19')],agents[_0x59ecf9[_0x7b7e('0x3')]]['reason'],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]));writeDB(agents[_0x59ecf9[_0x7b7e('0x3')]]);var _0x122053=unanswered[_0x7b7e('0x51')](_0x59ecf9[_0x7b7e('0x3')]);if(_0x122053>-0x1){unanswered[_0x7b7e('0x52')](_0x122053,0x1);}}if(transfers[_0x59ecf9['uniqueid']]){transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x34')]=!![];transfers[_0x59ecf9[_0x7b7e('0x3')]]['agentcompleteAt']=utils[_0x7b7e('0x15')]();transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x2b')]=utils[_0x7b7e('0x53')](transfers[_0x59ecf9[_0x7b7e('0x3')]]['agentcompleteAt'],transfers[_0x59ecf9['uniqueid']]['agentconnectAt']);transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')]=_0x7b7e('0x54');transfers[_0x59ecf9['uniqueid']][_0x7b7e('0x8')]=_0x7b7e('0x37');utils[_0x7b7e('0x17')](util['format'](_0x7b7e('0x50'),_0x59ecf9[_0x7b7e('0x3')],transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x19')],transfers[_0x59ecf9['uniqueid']][_0x7b7e('0x22')],transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]));writeDB(transfers[_0x59ecf9[_0x7b7e('0x3')]],!![]);}if(agents[_0x59ecf9['uniqueid']]&&agents[_0x59ecf9['uniqueid']][_0x7b7e('0x30')]){agents[_0x59ecf9['uniqueid']][_0x7b7e('0x34')]=!![];agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x36')]=utils[_0x7b7e('0x15')]();agents[_0x59ecf9['uniqueid']][_0x7b7e('0x2b')]=utils[_0x7b7e('0x53')](agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x36')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x30')]);agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')]=agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x3d')]?_0x7b7e('0x3d'):_0x7b7e('0x54');agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]=_0x7b7e('0x37');utils[_0x7b7e('0x17')](util['format'](_0x7b7e('0x50'),_0x59ecf9[_0x7b7e('0x3')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x19')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')],agents[_0x59ecf9[_0x7b7e('0x3')]]['lastevent']));writeDB(agents[_0x59ecf9[_0x7b7e('0x3')]]);}}catch(_0x3880be){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x4d'),_0x59ecf9['uniqueid']),_0x3880be);}};
\ No newline at end of file
+var _0x2f68=['called','connectedlinenum','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','holdtime','ringtime','talktime','push','[%s][agents][agentringnoanswer]','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','now','abandoned','agentconnect','[%s][agents][agentconnect]','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','agentcomplete','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','blind','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','transferexten','origtransfererexten','transferuniqueid','transfereeuniqueid','clone','calleridnum','calleridname','agententerreason','secondtransfererlinkedid','ATTENDED','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','splice','complete','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','util','./utils','format','uniqueid','channel','membername','interface','lastevent','queue','then','type','agentacw','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','agentcalledAt'];(function(_0x529cc7,_0x5e69d2){var _0x464392=function(_0x1228ff){while(--_0x1228ff){_0x529cc7['push'](_0x529cc7['shift']());}};_0x464392(++_0x5e69d2);}(_0x2f68,0x9a));var _0x82f6=function(_0x54b769,_0x2fb171){_0x54b769=_0x54b769-0x0;var _0x5f1229=_0x2f68[_0x54b769];return _0x5f1229;};'use strict';var _=require('lodash');var util=require(_0x82f6('0x0'));var utils=require(_0x82f6('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x24c877,_0x3a9c8f){utils['info'](util[_0x82f6('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x24c877[_0x82f6('0x3')],_0x24c877[_0x82f6('0x4')],_0x24c877['queue'],_0x24c877[_0x82f6('0x5')],_0x24c877[_0x82f6('0x6')],_0x24c877['calleridnum'],_0x24c877['connectedlinenum'],_0x24c877[_0x82f6('0x7')]));if(_0x24c877['queue']){utils['getVoiceQueueByName'](_0x24c877[_0x82f6('0x8')])[_0x82f6('0x9')](function(_0x250d71){if(_0x250d71){_0x24c877['type']=_0x250d71[_0x82f6('0xa')];_0x24c877[_0x82f6('0xb')]=_0x24c877['agentcomplete']?_0x250d71[_0x82f6('0xc')]:![];_0x24c877[_0x82f6('0xd')]=_0x24c877[_0x82f6('0xb')]?_0x250d71[_0x82f6('0xe')]:0x0;}utils[_0x82f6('0xf')](_0x82f6('0x10'),_0x24c877);});}else{utils['request'](_0x82f6('0x10'),_0x24c877);}if(_0x3a9c8f){delete transfers[_0x24c877[_0x82f6('0x3')]];}else{delete agents[_0x24c877['destuniqueid']];}}exports[_0x82f6('0x11')]=function(_0x1f8bf5){try{utils[_0x82f6('0x12')](util[_0x82f6('0x2')](_0x82f6('0x13'),_0x1f8bf5[_0x82f6('0x3')]),_0x1f8bf5);agents[_0x1f8bf5[_0x82f6('0x14')]]=_0x1f8bf5;agents[_0x1f8bf5[_0x82f6('0x14')]][_0x82f6('0x15')]=utils['now']();agents[_0x1f8bf5[_0x82f6('0x14')]]['lastevent']=_0x82f6('0x16');agents[_0x1f8bf5[_0x82f6('0x14')]][_0x82f6('0x17')]=null;agents[_0x1f8bf5[_0x82f6('0x14')]][_0x82f6('0x18')]=null;utils[_0x82f6('0x19')](util[_0x82f6('0x2')](_0x82f6('0x1a'),_0x1f8bf5[_0x82f6('0x3')],agents[_0x1f8bf5[_0x82f6('0x14')]][_0x82f6('0x5')],_0x1f8bf5[_0x82f6('0x14')]));}catch(_0x2652a9){utils[_0x82f6('0x1b')](util[_0x82f6('0x2')]('[%s][agents][agentcalled]',_0x1f8bf5[_0x82f6('0x3')]),_0x2652a9);}};exports[_0x82f6('0x1c')]=function(_0x55cbce){try{if(!_[_0x82f6('0x1d')](agents[_0x55cbce[_0x82f6('0x14')]])){utils[_0x82f6('0x12')](util[_0x82f6('0x2')]('[%s][agents][agentringnoanswer]',_0x55cbce[_0x82f6('0x3')]),_0x55cbce);utils['info'](util[_0x82f6('0x2')](_0x82f6('0x1e'),_0x55cbce['uniqueid'],agents[_0x55cbce['destuniqueid']][_0x82f6('0x5')],_0x55cbce[_0x82f6('0x14')]));agents[_0x55cbce['destuniqueid']]['agentringnoanswer']=!![];agents[_0x55cbce[_0x82f6('0x14')]][_0x82f6('0x1f')]=utils['now']();agents[_0x55cbce[_0x82f6('0x14')]][_0x82f6('0x7')]='timeout';agents[_0x55cbce['destuniqueid']][_0x82f6('0x20')]='timeout';agents[_0x55cbce[_0x82f6('0x14')]][_0x82f6('0x21')]=_0x55cbce['ringtime']?parseInt(_0x55cbce[_0x82f6('0x22')])/0x3e8:0x0;agents[_0x55cbce[_0x82f6('0x14')]][_0x82f6('0x23')]=0x0;unanswered[_0x82f6('0x24')](_0x55cbce['destuniqueid']);}}catch(_0x40a071){utils[_0x82f6('0x1b')](util[_0x82f6('0x2')](_0x82f6('0x25'),_0x55cbce[_0x82f6('0x3')]),_0x40a071);}};exports[_0x82f6('0x26')]=function(_0x27e473){try{_[_0x82f6('0x27')](agents,function(_0x1e1aa4,_0x402449){if(_0x1e1aa4[_0x82f6('0x3')]==_0x27e473[_0x82f6('0x3')]&&!_[_0x82f6('0x28')](unanswered,_0x1e1aa4[_0x82f6('0x14')])){utils['debug'](util[_0x82f6('0x2')](_0x82f6('0x29'),_0x27e473[_0x82f6('0x3')]),_0x27e473);utils['info'](util[_0x82f6('0x2')](_0x82f6('0x2a'),_0x27e473[_0x82f6('0x3')],_0x1e1aa4[_0x82f6('0x5')],_0x1e1aa4[_0x82f6('0x14')]));_0x1e1aa4[_0x82f6('0x1c')]=!![];_0x1e1aa4[_0x82f6('0x1f')]=utils[_0x82f6('0x2b')]();_0x1e1aa4[_0x82f6('0x7')]=_0x82f6('0x2c');_0x1e1aa4[_0x82f6('0x20')]=_0x82f6('0x2c');_0x1e1aa4[_0x82f6('0x21')]=_0x27e473[_0x82f6('0x21')];_0x1e1aa4['talktime']=0x0;writeDB(_0x1e1aa4);}});}catch(_0x13a409){utils[_0x82f6('0x1b')](util[_0x82f6('0x2')](_0x82f6('0x29'),_0x27e473[_0x82f6('0x3')]),_0x13a409);}};exports[_0x82f6('0x2d')]=function(_0x34c2f1){try{if(agents[_0x34c2f1[_0x82f6('0x14')]]){utils[_0x82f6('0x12')](util[_0x82f6('0x2')](_0x82f6('0x2e'),_0x34c2f1[_0x82f6('0x3')]),_0x34c2f1);utils[_0x82f6('0x19')](util[_0x82f6('0x2')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x34c2f1[_0x82f6('0x3')],agents[_0x34c2f1['destuniqueid']]['membername'],_0x34c2f1[_0x82f6('0x14')]));agents[_0x34c2f1[_0x82f6('0x14')]]['agentconnectAt']=utils[_0x82f6('0x2b')]();agents[_0x34c2f1[_0x82f6('0x14')]][_0x82f6('0x17')]=_0x34c2f1['connectedlinenum'];agents[_0x34c2f1[_0x82f6('0x14')]]['connectedlinename']=_0x34c2f1[_0x82f6('0x18')];agents[_0x34c2f1['destuniqueid']][_0x82f6('0x21')]=_0x34c2f1['ringtime'];agents[_0x34c2f1[_0x82f6('0x14')]][_0x82f6('0x7')]='connect';_[_0x82f6('0x27')](agents,function(_0x368c11,_0x3e7c53){if(_0x368c11[_0x82f6('0x14')]!=_0x34c2f1['destuniqueid']&&_0x368c11[_0x82f6('0x3')]==_0x34c2f1[_0x82f6('0x3')]){_0x368c11[_0x82f6('0x23')]=0x0;_0x368c11[_0x82f6('0x21')]=_0x34c2f1['ringtime'];_0x368c11[_0x82f6('0x1c')]=!![];_0x368c11[_0x82f6('0x1f')]=utils['now']();_0x368c11[_0x82f6('0x7')]=_0x82f6('0x2f');_0x368c11[_0x82f6('0x20')]=_0x82f6('0x2f');_0x368c11[_0x82f6('0x30')]=_0x34c2f1['destuniqueid'];_0x368c11[_0x82f6('0x31')]=_0x34c2f1['membername'];writeDB(_0x368c11);}});}}catch(_0x139614){utils[_0x82f6('0x1b')](util[_0x82f6('0x2')](_0x82f6('0x2e'),_0x34c2f1[_0x82f6('0x3')]),_0x139614);}};exports[_0x82f6('0x32')]=function(_0x43fefc){try{if(!_['isNil'](agents[_0x43fefc[_0x82f6('0x14')]])){utils[_0x82f6('0x12')](util[_0x82f6('0x2')](_0x82f6('0x33'),_0x43fefc['uniqueid']),_0x43fefc);utils[_0x82f6('0x19')](util['format'](_0x82f6('0x34'),_0x43fefc[_0x82f6('0x3')],agents[_0x43fefc[_0x82f6('0x14')]][_0x82f6('0x5')],_0x43fefc[_0x82f6('0x14')]));agents[_0x43fefc[_0x82f6('0x14')]]['agentcomplete']=!![];agents[_0x43fefc[_0x82f6('0x14')]][_0x82f6('0x35')]=utils[_0x82f6('0x2b')]();agents[_0x43fefc[_0x82f6('0x14')]][_0x82f6('0x23')]=utils[_0x82f6('0x36')](agents[_0x43fefc[_0x82f6('0x14')]][_0x82f6('0x35')],agents[_0x43fefc['destuniqueid']][_0x82f6('0x37')]);agents[_0x43fefc[_0x82f6('0x14')]]['reason']=_0x43fefc[_0x82f6('0x20')];agents[_0x43fefc['destuniqueid']][_0x82f6('0x7')]='complete';writeDB(agents[_0x43fefc[_0x82f6('0x14')]]);}}catch(_0x31dec7){utils[_0x82f6('0x1b')](util[_0x82f6('0x2')](_0x82f6('0x33'),_0x43fefc[_0x82f6('0x3')]),_0x31dec7);}};exports['blindtransfer']=function(_0x3cb1f0){try{if(!_[_0x82f6('0x1d')](agents[_0x3cb1f0['transfereruniqueid']])){utils['debug'](util[_0x82f6('0x2')](_0x82f6('0x38'),_0x3cb1f0[_0x82f6('0x3')]),_0x3cb1f0);utils['info'](util[_0x82f6('0x2')](_0x82f6('0x39'),_0x3cb1f0[_0x82f6('0x3')],agents[_0x3cb1f0[_0x82f6('0x3a')]]['membername'],agents[_0x3cb1f0['transfereruniqueid']][_0x82f6('0x3')]));agents[_0x3cb1f0[_0x82f6('0x3a')]][_0x82f6('0x3b')]=!![];agents[_0x3cb1f0['transfereruniqueid']][_0x82f6('0x3c')]=_0x82f6('0x3d');agents[_0x3cb1f0['transfereruniqueid']]['transferexten']=_0x3cb1f0['extension'];agents[_0x3cb1f0[_0x82f6('0x3a')]]['transferuniqueid']=agents[_0x3cb1f0[_0x82f6('0x3a')]]['uniqueid'];}}catch(_0x33c359){utils['error'](util[_0x82f6('0x2')]('[%s][agents][blindtransfer]',_0x3cb1f0[_0x82f6('0x3')]),_0x33c359);}};exports[_0x82f6('0x3e')]=function(_0x44de65){try{utils[_0x82f6('0x12')](util[_0x82f6('0x2')](_0x82f6('0x3f'),_0x44de65['origtransfereruniqueid']),_0x44de65);if(_0x44de65[_0x82f6('0x40')]==_0x44de65[_0x82f6('0x41')]){if(!_[_0x82f6('0x1d')](agents[_0x44de65['secondtransfereruniqueid']])){utils['info'](util[_0x82f6('0x2')](_0x82f6('0x42'),_0x44de65[_0x82f6('0x40')],agents[_0x44de65[_0x82f6('0x43')]]['membername']));agents[_0x44de65[_0x82f6('0x43')]][_0x82f6('0x3b')]=!![];agents[_0x44de65[_0x82f6('0x43')]]['transfertype']='ATTENDED';agents[_0x44de65['secondtransfereruniqueid']][_0x82f6('0x44')]=_0x44de65[_0x82f6('0x45')];agents[_0x44de65[_0x82f6('0x43')]][_0x82f6('0x46')]=_0x44de65[_0x82f6('0x40')];}if(_0x44de65[_0x82f6('0x47')]&&agents[_0x44de65[_0x82f6('0x47')]]){agents[_0x44de65[_0x82f6('0x47')]]['agententerreason']=0x1;transfers[_0x44de65[_0x82f6('0x47')]]=_[_0x82f6('0x48')](agents[_0x44de65[_0x82f6('0x47')]]);transfers[_0x44de65[_0x82f6('0x47')]]['calleridnum']=agents[_0x44de65['secondtransfereruniqueid']][_0x82f6('0x49')];transfers[_0x44de65[_0x82f6('0x47')]]['calleridname']=agents[_0x44de65[_0x82f6('0x43')]][_0x82f6('0x4a')];transfers[_0x44de65[_0x82f6('0x47')]]['agentcalledAt']=utils[_0x82f6('0x2b')]();transfers[_0x44de65[_0x82f6('0x47')]][_0x82f6('0x37')]=utils[_0x82f6('0x2b')]();transfers[_0x44de65[_0x82f6('0x47')]][_0x82f6('0x21')]=0x0;transfers[_0x44de65['transfereeuniqueid']][_0x82f6('0x4b')]=0x2;}}else if(_0x44de65[_0x82f6('0x43')]==_0x44de65[_0x82f6('0x4c')]){if(!_[_0x82f6('0x1d')](agents[_0x44de65[_0x82f6('0x40')]])){utils['info'](util[_0x82f6('0x2')](_0x82f6('0x42'),_0x44de65[_0x82f6('0x40')],agents[_0x44de65[_0x82f6('0x40')]][_0x82f6('0x5')]));agents[_0x44de65[_0x82f6('0x40')]][_0x82f6('0x3b')]=!![];agents[_0x44de65[_0x82f6('0x40')]]['transfertype']=_0x82f6('0x4d');agents[_0x44de65['origtransfereruniqueid']][_0x82f6('0x44')]=_0x44de65[_0x82f6('0x4e')];agents[_0x44de65['origtransfereruniqueid']][_0x82f6('0x46')]=_0x44de65[_0x82f6('0x43')];}if(_0x44de65[_0x82f6('0x4f')]&&agents[_0x44de65['transfertargetuniqueid']]){agents[_0x44de65['transfertargetuniqueid']][_0x82f6('0x4b')]=0x1;transfers[_0x44de65[_0x82f6('0x4f')]]=_['clone'](agents[_0x44de65['transfertargetuniqueid']]);transfers[_0x44de65[_0x82f6('0x4f')]][_0x82f6('0x49')]=agents[_0x44de65[_0x82f6('0x40')]][_0x82f6('0x49')];transfers[_0x44de65[_0x82f6('0x4f')]][_0x82f6('0x4a')]=agents[_0x44de65[_0x82f6('0x40')]][_0x82f6('0x4a')];transfers[_0x44de65[_0x82f6('0x4f')]][_0x82f6('0x15')]=utils[_0x82f6('0x2b')]();transfers[_0x44de65[_0x82f6('0x4f')]]['agentconnectAt']=utils[_0x82f6('0x2b')]();transfers[_0x44de65[_0x82f6('0x4f')]][_0x82f6('0x21')]=0x0;transfers[_0x44de65[_0x82f6('0x4f')]][_0x82f6('0x4b')]=0x2;}}}catch(_0x4ef838){utils[_0x82f6('0x1b')](util[_0x82f6('0x2')](_0x82f6('0x3f'),_0x44de65['origtransfereruniqueid']),_0x4ef838);}};exports[_0x82f6('0x50')]=function(_0x192dc7){try{utils[_0x82f6('0x12')](util[_0x82f6('0x2')](_0x82f6('0x51'),_0x192dc7[_0x82f6('0x3')]),_0x192dc7);if(agents[_0x192dc7[_0x82f6('0x3')]]&&agents[_0x192dc7['uniqueid']][_0x82f6('0x20')]==='timeout'){if(_0x192dc7[_0x82f6('0x52')]==='21'){agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x20')]=_0x82f6('0x53');agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x7')]=_0x82f6('0x53');}utils[_0x82f6('0x19')](util[_0x82f6('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x192dc7[_0x82f6('0x3')],agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x5')],agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x20')],agents[_0x192dc7[_0x82f6('0x3')]]['lastevent']));writeDB(agents[_0x192dc7[_0x82f6('0x3')]]);var _0x443547=unanswered['indexOf'](_0x192dc7['uniqueid']);if(_0x443547>-0x1){unanswered[_0x82f6('0x54')](_0x443547,0x1);}}if(transfers[_0x192dc7[_0x82f6('0x3')]]){transfers[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x32')]=!![];transfers[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x35')]=utils['now']();transfers[_0x192dc7[_0x82f6('0x3')]]['talktime']=utils[_0x82f6('0x36')](transfers[_0x192dc7['uniqueid']][_0x82f6('0x35')],transfers[_0x192dc7['uniqueid']][_0x82f6('0x37')]);transfers[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x20')]='agent';transfers[_0x192dc7[_0x82f6('0x3')]]['lastevent']=_0x82f6('0x55');utils[_0x82f6('0x19')](util[_0x82f6('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x192dc7[_0x82f6('0x3')],transfers[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x5')],transfers[_0x192dc7['uniqueid']]['reason'],transfers[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x7')]));writeDB(transfers[_0x192dc7[_0x82f6('0x3')]],!![]);}if(agents[_0x192dc7[_0x82f6('0x3')]]&&agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x37')]){agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x32')]=!![];agents[_0x192dc7['uniqueid']][_0x82f6('0x35')]=utils[_0x82f6('0x2b')]();agents[_0x192dc7['uniqueid']][_0x82f6('0x23')]=utils[_0x82f6('0x36')](agents[_0x192dc7[_0x82f6('0x3')]]['agentcompleteAt'],agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x37')]);agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x20')]=agents[_0x192dc7['uniqueid']][_0x82f6('0x3b')]?_0x82f6('0x3b'):_0x82f6('0x56');agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x7')]=_0x82f6('0x55');utils['info'](util[_0x82f6('0x2')](_0x82f6('0x57'),_0x192dc7[_0x82f6('0x3')],agents[_0x192dc7[_0x82f6('0x3')]][_0x82f6('0x5')],agents[_0x192dc7['uniqueid']][_0x82f6('0x20')],agents[_0x192dc7['uniqueid']][_0x82f6('0x7')]));writeDB(agents[_0x192dc7[_0x82f6('0x3')]]);}}catch(_0x425e33){utils[_0x82f6('0x1b')](util[_0x82f6('0x2')](_0x82f6('0x51'),_0x192dc7[_0x82f6('0x3')]),_0x425e33);}};
\ No newline at end of file
index 720688f..89b64db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2515=['outboundrouteid','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','application','appdata','toLowerCase','set','split','includes','noop','execif','gotoif','lodash','util','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','DOCUMENTATION','newstate','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','context','systemanswertime','now','isNil','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','error','hangup','[%s][calls][hangup]','callerid','cause-txt','duration','diffTime','endtime','starttime','billableseconds','attendedtransfer','localtwolinkedid','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','transfertargetchannel','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','lastapplication','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type'];(function(_0xad7f3b,_0x541758){var _0x43fe07=function(_0x4e8043){while(--_0x4e8043){_0xad7f3b['push'](_0xad7f3b['shift']());}};_0x43fe07(++_0x541758);}(_0x2515,0x1c2));var _0x5251=function(_0x4291dd,_0x95d82){_0x4291dd=_0x4291dd-0x0;var _0x152462=_0x2515[_0x4291dd];return _0x152462;};'use strict';var _=require(_0x5251('0x0'));var util=require(_0x5251('0x1'));var utils=require('./utils');var transfers=require(_0x5251('0x2'));var dispositions=[_0x5251('0x3'),_0x5251('0x4'),_0x5251('0x4'),'NO\x20ANSWER',_0x5251('0x3'),_0x5251('0x3'),'ANSWERED',_0x5251('0x5'),_0x5251('0x4'),_0x5251('0x4'),_0x5251('0x4')];var channels={};function writeDB(_0x107910){var _0x213cf2;if(transfers[_0x5251('0x6')][_0x107910[_0x5251('0x7')]]){_0x213cf2=_0x107910[_0x5251('0x7')];_0x107910[_0x5251('0x7')]=transfers[_0x5251('0x6')][_0x107910[_0x5251('0x7')]]['transfereeuniqueid'];}utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0xa'),_0x107910['uniqueid'],_0x107910[_0x5251('0xb')],_0x107910[_0x5251('0xc')],_0x107910[_0x5251('0xd')],_0x107910[_0x5251('0xe')],_0x107910[_0x5251('0xf')],_0x107910[_0x5251('0x10')],_0x107910[_0x5251('0x11')]));if(_0x107910[_0x5251('0x12')]){utils[_0x5251('0x13')](_0x107910[_0x5251('0x12')])[_0x5251('0x14')](function(_0xa0c768){if(_0xa0c768){_0x107910[_0x5251('0x15')]=_0xa0c768['id'];}utils[_0x5251('0x16')](_0x5251('0x17'),_0x107910);});}else{utils[_0x5251('0x16')](_0x5251('0x17'),_0x107910);}if(channels[_0x107910[_0x5251('0x7')]]){delete channels[_0x107910[_0x5251('0x7')]];}else if(_0x213cf2&&channels[_0x213cf2]){if(!transfers['blinds'][_0x213cf2][_0x5251('0x18')])delete transfers[_0x5251('0x6')][_0x213cf2];delete channels[_0x213cf2];}}exports[_0x5251('0x19')]=function(_0x32e542){try{utils[_0x5251('0x1a')](util[_0x5251('0x9')](_0x5251('0x1b'),_0x32e542[_0x5251('0x7')]),_0x32e542);if(_0x32e542[_0x5251('0x7')]==_0x32e542[_0x5251('0x1c')]&&_0x32e542[_0x5251('0xb')]!='OutgoingSpoolFailed'){utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0x1d'),_0x32e542[_0x5251('0x7')],_0x32e542['context'],_0x32e542[_0x5251('0x1e')]));channels[_0x32e542[_0x5251('0x7')]]={'uniqueid':_0x32e542[_0x5251('0x7')],'accountcode':_0x32e542[_0x5251('0x12')],'source':_0x32e542[_0x5251('0xf')],'destination':_0x32e542[_0x5251('0x1e')],'destinationcontext':_0x32e542['context'],'channel':_0x32e542[_0x5251('0xb')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x5251('0x3'),'amaflags':_0x5251('0x1f')};}}catch(_0x323b34){utils['error'](util[_0x5251('0x9')](_0x5251('0x1b'),_0x32e542['uniqueid']),_0x323b34);}};exports[_0x5251('0x20')]=function(_0x38b393){try{utils[_0x5251('0x1a')](util[_0x5251('0x9')](_0x5251('0x21'),_0x38b393['uniqueid']),_0x38b393);if(!_['isNil'](channels[_0x38b393[_0x5251('0x7')]])&&_0x38b393[_0x5251('0x22')]==0x6){utils['info'](util[_0x5251('0x9')](_0x5251('0x23'),_0x38b393[_0x5251('0x7')],_0x38b393[_0x5251('0x24')],_0x38b393[_0x5251('0xb')]));if(_['isNil'](channels[_0x38b393[_0x5251('0x7')]][_0x5251('0x25')])){channels[_0x38b393[_0x5251('0x7')]]['systemanswertime']=utils[_0x5251('0x26')]();}}else if(!_[_0x5251('0x27')](channels[_0x38b393[_0x5251('0x1c')]])&&_0x38b393['channelstate']==0x6&&_0x38b393[_0x5251('0x24')]!=_0x5251('0x28')){utils[_0x5251('0x8')](util['format'](_0x5251('0x29'),_0x38b393[_0x5251('0x7')],_0x38b393[_0x5251('0x1c')],_0x38b393[_0x5251('0x24')],_0x38b393['channel']));channels[_0x38b393[_0x5251('0x1c')]][_0x5251('0x12')]=_0x38b393[_0x5251('0x12')];channels[_0x38b393['linkedid']][_0x5251('0x2a')]=_0x38b393[_0x5251('0xb')];if(_[_0x5251('0x27')](channels[_0x38b393[_0x5251('0x1c')]]['answertime'])){channels[_0x38b393[_0x5251('0x1c')]][_0x5251('0x2b')]=utils[_0x5251('0x26')]();}channels[_0x38b393[_0x5251('0x1c')]][_0x5251('0x2c')]=dispositions[_[_0x5251('0x2d')](_0x38b393[_0x5251('0x22')])]||_0x5251('0x2e');}}catch(_0x5a49a0){utils[_0x5251('0x2f')](util[_0x5251('0x9')](_0x5251('0x21'),_0x38b393['uniqueid']),_0x5a49a0);}};exports[_0x5251('0x30')]=function(_0x530757){try{if(!_['isNil'](channels[_0x530757[_0x5251('0x7')]])){utils[_0x5251('0x1a')](util[_0x5251('0x9')](_0x5251('0x31'),_0x530757[_0x5251('0x7')]),_0x530757);if(_[_0x5251('0x27')](channels[_0x530757['uniqueid']][_0x5251('0x32')])){channels[_0x530757['uniqueid']][_0x5251('0x32')]=_0x530757['calleridname']+'\x20<'+_0x530757[_0x5251('0xf')]+'>';}utils['info'](util[_0x5251('0x9')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x530757[_0x5251('0x7')],channels[_0x530757[_0x5251('0x7')]][_0x5251('0x32')],_0x530757[_0x5251('0x33')]));channels[_0x530757[_0x5251('0x7')]]['endtime']=utils['now']();channels[_0x530757[_0x5251('0x7')]][_0x5251('0x34')]=utils[_0x5251('0x35')](channels[_0x530757[_0x5251('0x7')]][_0x5251('0x36')],channels[_0x530757[_0x5251('0x7')]][_0x5251('0x37')]);channels[_0x530757['uniqueid']][_0x5251('0x38')]=channels[_0x530757[_0x5251('0x7')]][_0x5251('0x2b')]?utils['diffTime'](channels[_0x530757['uniqueid']][_0x5251('0x36')],channels[_0x530757['uniqueid']][_0x5251('0x2b')]):0x0;writeDB(channels[_0x530757['uniqueid']]);}}catch(_0x4d3e71){utils['error'](util[_0x5251('0x9')](_0x5251('0x31'),_0x530757['uniqueid']),_0x4d3e71);}};exports[_0x5251('0x39')]=function(_0xd8d091){try{if(!_[_0x5251('0x27')](channels[_0xd8d091[_0x5251('0x3a')]])){utils['debug'](util[_0x5251('0x9')]('[%s][calls][attendedtransfer]',_0xd8d091[_0x5251('0x3b')]),_0xd8d091);if(channels[_0xd8d091['localtwolinkedid']][_0x5251('0xb')]==_0xd8d091[_0x5251('0x3c')]){utils[_0x5251('0x8')](util['format'](_0x5251('0x3d'),_0xd8d091[_0x5251('0x3b')],_0xd8d091[_0x5251('0x3a')],_0xd8d091[_0x5251('0x3e')]));channels[_0xd8d091[_0x5251('0x3a')]][_0x5251('0x2a')]=_0xd8d091['secondtransfererchannel'];channels[_0xd8d091['localtwolinkedid']][_0x5251('0x3f')]='_attended';}else if(channels[_0xd8d091[_0x5251('0x3a')]][_0x5251('0xb')]=_0xd8d091[_0x5251('0x40')]){utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0x3d'),_0xd8d091[_0x5251('0x3b')],_0xd8d091['localtwolinkedid'],_0xd8d091[_0x5251('0x41')]));channels[_0xd8d091[_0x5251('0x3a')]][_0x5251('0x2a')]=_0xd8d091[_0x5251('0x41')];channels[_0xd8d091[_0x5251('0x3a')]][_0x5251('0x3f')]='_attended';}}}catch(_0x5c4d46){utils[_0x5251('0x2f')](util[_0x5251('0x9')](_0x5251('0x42'),_0xd8d091[_0x5251('0x3b')]),_0x5c4d46);}};exports[_0x5251('0x43')]=function(_0x5ee4d9){try{if(!_['isNil'](channels[_0x5ee4d9['uniqueid']])){utils[_0x5251('0x1a')](util[_0x5251('0x9')](_0x5251('0x44'),_0x5ee4d9[_0x5251('0x7')]),_0x5ee4d9);channels[_0x5ee4d9['uniqueid']]['musiconholdstartAt']=utils[_0x5251('0x26')]();utils['info'](util[_0x5251('0x9')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x5ee4d9[_0x5251('0x7')],channels[_0x5ee4d9['uniqueid']][_0x5251('0x45')]));}}catch(_0x2b52e1){utils[_0x5251('0x2f')](util[_0x5251('0x9')](_0x5251('0x44'),_0x5ee4d9['uniqueid']),_0x2b52e1);}};exports[_0x5251('0x46')]=function(_0x2de1ad){try{if(!_['isNil'](channels[_0x2de1ad['uniqueid']])){utils[_0x5251('0x1a')](util[_0x5251('0x9')](_0x5251('0x47'),_0x2de1ad['uniqueid']),_0x2de1ad);if(!_[_0x5251('0x27')](channels[_0x2de1ad[_0x5251('0x7')]][_0x5251('0x45')])){channels[_0x2de1ad[_0x5251('0x7')]][_0x5251('0x48')]+=utils[_0x5251('0x35')](utils[_0x5251('0x26')](),channels[_0x2de1ad['uniqueid']][_0x5251('0x45')]);utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0x49'),_0x2de1ad[_0x5251('0x7')],channels[_0x2de1ad['uniqueid']][_0x5251('0x48')]));delete channels[_0x2de1ad[_0x5251('0x7')]][_0x5251('0x45')];}}}catch(_0xc78256){utils[_0x5251('0x2f')](util[_0x5251('0x9')](_0x5251('0x47'),_0x2de1ad[_0x5251('0x7')]),_0xc78256);}};exports[_0x5251('0x4a')]=function(_0x674f18){try{if(!_[_0x5251('0x27')](channels[_0x674f18['uniqueid']])){utils[_0x5251('0x1a')](util['format'](_0x5251('0x4b'),_0x674f18[_0x5251('0x7')]),_0x674f18);if(!_['isNil'](_0x674f18[_0x5251('0x4c')][_0x5251('0x4d')])){utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0x4e'),_0x674f18[_0x5251('0x7')],_0x674f18[_0x5251('0x4f')]));channels[_0x674f18[_0x5251('0x7')]][_0x5251('0x50')]=_0x674f18[_0x5251('0x4f')];}if(!_[_0x5251('0x27')](_0x674f18[_0x5251('0x4c')][_0x5251('0x51')])){utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0x52'),_0x674f18[_0x5251('0x7')],_0x674f18['value']));channels[_0x674f18['uniqueid']][_0x5251('0x53')]=_0x674f18['value'];channels[_0x674f18[_0x5251('0x7')]][_0x5251('0x32')]='\x22'+_0x674f18[_0x5251('0x4f')]+_0x5251('0x54')+_0x674f18[_0x5251('0x4f')]+'>';}if(!_[_0x5251('0x27')](_0x674f18[_0x5251('0x4c')][_0x5251('0x55')])||!_[_0x5251('0x27')](_0x674f18[_0x5251('0x4c')][_0x5251('0x56')])){utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0x57'),_0x674f18[_0x5251('0x7')],!_[_0x5251('0x27')](_0x674f18[_0x5251('0x4c')][_0x5251('0x55')])?_0x5251('0x55'):_0x5251('0x56'),_0x674f18[_0x5251('0x4f')]));channels[_0x674f18[_0x5251('0x7')]][_0x5251('0x32')]=_0x674f18[_0x5251('0x4f')];}if(!_[_0x5251('0x27')](_0x674f18['variable'][_0x5251('0x58')])||!_['isNil'](_0x674f18[_0x5251('0x4c')]['xmcs-queue'])){utils[_0x5251('0x8')](util['format'](_0x5251('0x57'),_0x674f18['uniqueid'],!_[_0x5251('0x27')](_0x674f18[_0x5251('0x4c')][_0x5251('0x58')])?_0x5251('0x58'):'xmcs-queue',_0x674f18[_0x5251('0x4f')]));channels[_0x674f18[_0x5251('0x7')]][_0x5251('0x59')]='Queue';channels[_0x674f18['uniqueid']][_0x5251('0x5a')]=_0x674f18[_0x5251('0x4f')];channels[_0x674f18['uniqueid']][_0x5251('0xc')]=!![];}if(!_[_0x5251('0x27')](_0x674f18['variable'][_0x5251('0x5b')])){utils['info'](util['format'](_0x5251('0x5c'),_0x674f18['uniqueid'],_0x674f18[_0x5251('0x4f')]));channels[_0x674f18[_0x5251('0x7')]]['ContactId']=_0x674f18['value'];}if(!_[_0x5251('0x27')](_0x674f18[_0x5251('0x4c')]['xmd-cdrtype'])){utils[_0x5251('0x8')](util['format'](_0x5251('0x5d'),_0x674f18['uniqueid'],_0x674f18[_0x5251('0x4f')]));channels[_0x674f18[_0x5251('0x7')]][_0x5251('0x5e')]=_0x674f18[_0x5251('0x4f')];}if(!_['isNil'](_0x674f18[_0x5251('0x4c')][_0x5251('0x5f')])){utils[_0x5251('0x8')](util[_0x5251('0x9')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x674f18[_0x5251('0x7')],_0x674f18[_0x5251('0x4f')]));channels[_0x674f18[_0x5251('0x7')]][_0x5251('0x60')]=_0x674f18[_0x5251('0x4f')];}if(!_[_0x5251('0x27')](_0x674f18[_0x5251('0x4c')][_0x5251('0x61')])){utils[_0x5251('0x8')](util[_0x5251('0x9')](_0x5251('0x62'),_0x674f18['uniqueid'],_0x674f18['value']));channels[_0x674f18[_0x5251('0x7')]][_0x5251('0x61')]=_0x674f18[_0x5251('0x4f')];}}}catch(_0x104cfa){utils[_0x5251('0x2f')](util['format'](_0x5251('0x4b'),_0x674f18['uniqueid']),_0x104cfa);}};exports['newexten']=function(_0x359169){try{if(!_[_0x5251('0x27')](channels[_0x359169[_0x5251('0x7')]])){utils[_0x5251('0x1a')](util[_0x5251('0x9')](_0x5251('0x63'),_0x359169[_0x5251('0x7')]),_0x359169);utils[_0x5251('0x8')](util[_0x5251('0x9')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x359169[_0x5251('0x7')],_0x359169[_0x5251('0x64')],_0x359169[_0x5251('0x65')]));if(_0x359169['application'][_0x5251('0x66')]()==_0x5251('0x67')&&_['startsWith'](_0x359169[_0x5251('0x65')][_0x5251('0x66')](),'cdr')){var _0x4dda60=_0x359169[_0x5251('0x65')][_0x5251('0x68')]('=');var _0x460b03=_0x4dda60[0x0]['substring'](_0x4dda60[0x0]['lastIndexOf']('(')+0x1,_0x4dda60[0x0]['lastIndexOf'](')'));var _0x44b5cf=_0x4dda60[0x1];channels[_0x359169[_0x5251('0x7')]][_0x460b03]=_0x44b5cf;}if(!_[_0x5251('0x69')](['hangup',_0x5251('0x6a'),_0x5251('0x6b'),_0x5251('0x67'),_0x5251('0x6c')],_0x359169[_0x5251('0x64')][_0x5251('0x66')]())){channels[_0x359169[_0x5251('0x7')]]['lastapplication']=_0x359169[_0x5251('0x64')];channels[_0x359169[_0x5251('0x7')]][_0x5251('0x5a')]=_0x359169['appdata'];}}}catch(_0x13d344){utils[_0x5251('0x2f')](util[_0x5251('0x9')](_0x5251('0x63'),_0x359169[_0x5251('0x7')]),_0x13d344);}};
\ No newline at end of file
+var _0x8991=['xmd-callerid','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','appdata','cdr','split','substring','lastIndexOf','includes','hangup','noop','execif','gotoif','lodash','util','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','calleridnum','lastevent','accountcode','then','UserId','CreateVoiceCallReport','request','recording','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','format','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','systemanswertime','now','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','error','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','diffTime','endtime','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid-preview'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x8991,0x1b0));var _0x1899=function(_0x2777f3,_0x1526f9){_0x2777f3=_0x2777f3-0x0;var _0x413144=_0x8991[_0x2777f3];return _0x413144;};'use strict';var _=require(_0x1899('0x0'));var util=require(_0x1899('0x1'));var utils=require('./utils');var transfers=require('./transfers.controller');var dispositions=[_0x1899('0x2'),_0x1899('0x3'),_0x1899('0x3'),_0x1899('0x2'),_0x1899('0x2'),_0x1899('0x2'),_0x1899('0x4'),_0x1899('0x5'),_0x1899('0x3'),_0x1899('0x3'),_0x1899('0x3')];var channels={};function writeDB(_0x39c834){var _0x3df4aa;if(transfers[_0x1899('0x6')][_0x39c834['uniqueid']]){_0x3df4aa=_0x39c834[_0x1899('0x7')];_0x39c834[_0x1899('0x7')]=transfers['blinds'][_0x39c834[_0x1899('0x7')]][_0x1899('0x8')];}utils[_0x1899('0x9')](util['format'](_0x1899('0xa'),_0x39c834[_0x1899('0x7')],_0x39c834[_0x1899('0xb')],_0x39c834[_0x1899('0xc')],_0x39c834['membername'],_0x39c834['interface'],_0x39c834[_0x1899('0xd')],_0x39c834['connectedlinenum'],_0x39c834[_0x1899('0xe')]));if(_0x39c834[_0x1899('0xf')]){utils['getUserByInternal'](_0x39c834[_0x1899('0xf')])[_0x1899('0x10')](function(_0x8cdb32){if(_0x8cdb32){_0x39c834[_0x1899('0x11')]=_0x8cdb32['id'];}utils['request'](_0x1899('0x12'),_0x39c834);});}else{utils[_0x1899('0x13')](_0x1899('0x12'),_0x39c834);}if(channels[_0x39c834[_0x1899('0x7')]]){delete channels[_0x39c834[_0x1899('0x7')]];}else if(_0x3df4aa&&channels[_0x3df4aa]){if(!transfers[_0x1899('0x6')][_0x3df4aa][_0x1899('0x14')])delete transfers['blinds'][_0x3df4aa];delete channels[_0x3df4aa];}}exports['newchannel']=function(_0x56e781){try{utils[_0x1899('0x15')](util['format'](_0x1899('0x16'),_0x56e781['uniqueid']),_0x56e781);if(_0x56e781[_0x1899('0x7')]==_0x56e781[_0x1899('0x17')]&&_0x56e781[_0x1899('0xb')]!=_0x1899('0x18')){utils[_0x1899('0x9')](util[_0x1899('0x19')](_0x1899('0x1a'),_0x56e781[_0x1899('0x7')],_0x56e781[_0x1899('0x1b')],_0x56e781[_0x1899('0x1c')]));channels[_0x56e781[_0x1899('0x7')]]={'uniqueid':_0x56e781['uniqueid'],'accountcode':_0x56e781[_0x1899('0xf')],'source':_0x56e781[_0x1899('0xd')],'destination':_0x56e781['exten'],'destinationcontext':_0x56e781[_0x1899('0x1b')],'channel':_0x56e781[_0x1899('0xb')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x1899('0x2'),'amaflags':_0x1899('0x1d')};}}catch(_0xfd5859){utils['error'](util[_0x1899('0x19')](_0x1899('0x16'),_0x56e781[_0x1899('0x7')]),_0xfd5859);}};exports[_0x1899('0x1e')]=function(_0x23d9b4){try{utils['debug'](util['format'](_0x1899('0x1f'),_0x23d9b4[_0x1899('0x7')]),_0x23d9b4);if(!_[_0x1899('0x20')](channels[_0x23d9b4[_0x1899('0x7')]])&&_0x23d9b4[_0x1899('0x21')]==0x6){utils[_0x1899('0x9')](util[_0x1899('0x19')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x23d9b4[_0x1899('0x7')],_0x23d9b4[_0x1899('0x1b')],_0x23d9b4['channel']));if(_[_0x1899('0x20')](channels[_0x23d9b4[_0x1899('0x7')]]['systemanswertime'])){channels[_0x23d9b4['uniqueid']][_0x1899('0x22')]=utils[_0x1899('0x23')]();}}else if(!_['isNil'](channels[_0x23d9b4[_0x1899('0x17')]])&&_0x23d9b4[_0x1899('0x21')]==0x6&&_0x23d9b4[_0x1899('0x1b')]!=_0x1899('0x24')){utils[_0x1899('0x9')](util['format'](_0x1899('0x25'),_0x23d9b4[_0x1899('0x7')],_0x23d9b4[_0x1899('0x17')],_0x23d9b4[_0x1899('0x1b')],_0x23d9b4['channel']));channels[_0x23d9b4[_0x1899('0x17')]]['accountcode']=_0x23d9b4[_0x1899('0xf')];channels[_0x23d9b4[_0x1899('0x17')]][_0x1899('0x26')]=_0x23d9b4[_0x1899('0xb')];if(_[_0x1899('0x20')](channels[_0x23d9b4[_0x1899('0x17')]][_0x1899('0x27')])){channels[_0x23d9b4[_0x1899('0x17')]][_0x1899('0x27')]=utils[_0x1899('0x23')]();}channels[_0x23d9b4[_0x1899('0x17')]][_0x1899('0x28')]=dispositions[_[_0x1899('0x29')](_0x23d9b4[_0x1899('0x21')])]||_0x1899('0x4');}}catch(_0x4a7a31){utils[_0x1899('0x2a')](util['format'](_0x1899('0x1f'),_0x23d9b4['uniqueid']),_0x4a7a31);}};exports['hangup']=function(_0xaee4b6){try{if(!_[_0x1899('0x20')](channels[_0xaee4b6[_0x1899('0x7')]])){utils['debug'](util['format']('[%s][calls][hangup]',_0xaee4b6['uniqueid']),_0xaee4b6);if(_[_0x1899('0x20')](channels[_0xaee4b6[_0x1899('0x7')]][_0x1899('0x2b')])){channels[_0xaee4b6[_0x1899('0x7')]][_0x1899('0x2b')]=_0xaee4b6['calleridname']+'\x20<'+_0xaee4b6[_0x1899('0xd')]+'>';}utils[_0x1899('0x9')](util[_0x1899('0x19')](_0x1899('0x2c'),_0xaee4b6[_0x1899('0x7')],channels[_0xaee4b6[_0x1899('0x7')]]['callerid'],_0xaee4b6['cause-txt']));channels[_0xaee4b6[_0x1899('0x7')]]['endtime']=utils['now']();channels[_0xaee4b6[_0x1899('0x7')]]['duration']=utils[_0x1899('0x2d')](channels[_0xaee4b6[_0x1899('0x7')]][_0x1899('0x2e')],channels[_0xaee4b6['uniqueid']]['starttime']);channels[_0xaee4b6[_0x1899('0x7')]]['billableseconds']=channels[_0xaee4b6['uniqueid']][_0x1899('0x27')]?utils[_0x1899('0x2d')](channels[_0xaee4b6['uniqueid']][_0x1899('0x2e')],channels[_0xaee4b6[_0x1899('0x7')]][_0x1899('0x27')]):0x0;writeDB(channels[_0xaee4b6['uniqueid']]);}}catch(_0x470f42){utils['error'](util[_0x1899('0x19')](_0x1899('0x2f'),_0xaee4b6[_0x1899('0x7')]),_0x470f42);}};exports[_0x1899('0x30')]=function(_0x6dc06){try{if(!_[_0x1899('0x20')](channels[_0x6dc06[_0x1899('0x31')]])){utils[_0x1899('0x15')](util[_0x1899('0x19')](_0x1899('0x32'),_0x6dc06[_0x1899('0x33')]),_0x6dc06);if(channels[_0x6dc06[_0x1899('0x31')]]['channel']==_0x6dc06['transfereechannel']){utils[_0x1899('0x9')](util[_0x1899('0x19')](_0x1899('0x34'),_0x6dc06['origtransfereruniqueid'],_0x6dc06[_0x1899('0x31')],_0x6dc06[_0x1899('0x35')]));channels[_0x6dc06[_0x1899('0x31')]][_0x1899('0x26')]=_0x6dc06[_0x1899('0x35')];channels[_0x6dc06['localtwolinkedid']][_0x1899('0x36')]=_0x1899('0x37');}else if(channels[_0x6dc06['localtwolinkedid']][_0x1899('0xb')]=_0x6dc06[_0x1899('0x38')]){utils[_0x1899('0x9')](util[_0x1899('0x19')](_0x1899('0x34'),_0x6dc06[_0x1899('0x33')],_0x6dc06['localtwolinkedid'],_0x6dc06[_0x1899('0x39')]));channels[_0x6dc06[_0x1899('0x31')]][_0x1899('0x26')]=_0x6dc06['origtransfererchannel'];channels[_0x6dc06[_0x1899('0x31')]][_0x1899('0x36')]=_0x1899('0x37');}}}catch(_0x3fa8c3){utils['error'](util[_0x1899('0x19')](_0x1899('0x32'),_0x6dc06[_0x1899('0x33')]),_0x3fa8c3);}};exports['musiconholdstart']=function(_0x26ad99){try{if(!_[_0x1899('0x20')](channels[_0x26ad99[_0x1899('0x7')]])){utils['debug'](util[_0x1899('0x19')](_0x1899('0x3a'),_0x26ad99[_0x1899('0x7')]),_0x26ad99);channels[_0x26ad99[_0x1899('0x7')]][_0x1899('0x3b')]=utils[_0x1899('0x23')]();utils['info'](util[_0x1899('0x19')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x26ad99[_0x1899('0x7')],channels[_0x26ad99[_0x1899('0x7')]][_0x1899('0x3b')]));}}catch(_0x57d25d){utils['error'](util[_0x1899('0x19')](_0x1899('0x3a'),_0x26ad99[_0x1899('0x7')]),_0x57d25d);}};exports[_0x1899('0x3c')]=function(_0x342d67){try{if(!_[_0x1899('0x20')](channels[_0x342d67[_0x1899('0x7')]])){utils[_0x1899('0x15')](util[_0x1899('0x19')](_0x1899('0x3d'),_0x342d67[_0x1899('0x7')]),_0x342d67);if(!_[_0x1899('0x20')](channels[_0x342d67['uniqueid']][_0x1899('0x3b')])){channels[_0x342d67['uniqueid']][_0x1899('0x3e')]+=utils[_0x1899('0x2d')](utils['now'](),channels[_0x342d67[_0x1899('0x7')]][_0x1899('0x3b')]);utils[_0x1899('0x9')](util[_0x1899('0x19')](_0x1899('0x3f'),_0x342d67['uniqueid'],channels[_0x342d67[_0x1899('0x7')]]['mohtime']));delete channels[_0x342d67[_0x1899('0x7')]]['musiconholdstartAt'];}}}catch(_0x4fe3e0){utils[_0x1899('0x2a')](util['format'](_0x1899('0x3d'),_0x342d67[_0x1899('0x7')]),_0x4fe3e0);}};exports['varset']=function(_0x166a1e){try{if(!_[_0x1899('0x20')](channels[_0x166a1e[_0x1899('0x7')]])){utils['debug'](util['format']('[%s][calls][varset]',_0x166a1e['uniqueid']),_0x166a1e);if(!_[_0x1899('0x20')](_0x166a1e[_0x1899('0x40')]['xmd-originatecalleridnum'])){utils[_0x1899('0x9')](util[_0x1899('0x19')](_0x1899('0x41'),_0x166a1e[_0x1899('0x7')],_0x166a1e[_0x1899('0x42')]));channels[_0x166a1e[_0x1899('0x7')]][_0x1899('0x43')]=_0x166a1e[_0x1899('0x42')];}if(!_[_0x1899('0x20')](_0x166a1e[_0x1899('0x40')][_0x1899('0x44')])){utils['info'](util[_0x1899('0x19')](_0x1899('0x45'),_0x166a1e['uniqueid'],_0x166a1e[_0x1899('0x42')]));channels[_0x166a1e[_0x1899('0x7')]][_0x1899('0x46')]=_0x166a1e['value'];channels[_0x166a1e['uniqueid']][_0x1899('0x2b')]='\x22'+_0x166a1e['value']+'\x22\x20<'+_0x166a1e[_0x1899('0x42')]+'>';}if(!_[_0x1899('0x20')](_0x166a1e[_0x1899('0x40')]['xmd-callerid-preview'])||!_['isNil'](_0x166a1e[_0x1899('0x40')]['xmd-callerid'])){utils[_0x1899('0x9')](util[_0x1899('0x19')](_0x1899('0x47'),_0x166a1e['uniqueid'],!_['isNil'](_0x166a1e[_0x1899('0x40')]['xmd-callerid-preview'])?_0x1899('0x48'):_0x1899('0x49'),_0x166a1e[_0x1899('0x42')]));channels[_0x166a1e['uniqueid']]['callerid']=_0x166a1e['value'];}if(!_[_0x1899('0x20')](_0x166a1e['variable'][_0x1899('0x4a')])||!_[_0x1899('0x20')](_0x166a1e['variable'][_0x1899('0x4b')])){utils['info'](util[_0x1899('0x19')](_0x1899('0x47'),_0x166a1e[_0x1899('0x7')],!_[_0x1899('0x20')](_0x166a1e['variable']['xmd-queue'])?_0x1899('0x4a'):_0x1899('0x4b'),_0x166a1e[_0x1899('0x42')]));channels[_0x166a1e[_0x1899('0x7')]][_0x1899('0x4c')]=_0x1899('0x4d');channels[_0x166a1e[_0x1899('0x7')]][_0x1899('0x4e')]=_0x166a1e[_0x1899('0x42')];channels[_0x166a1e[_0x1899('0x7')]][_0x1899('0xc')]=!![];}if(!_['isNil'](_0x166a1e[_0x1899('0x40')]['xmd-contactid'])){utils[_0x1899('0x9')](util[_0x1899('0x19')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x166a1e['uniqueid'],_0x166a1e[_0x1899('0x42')]));channels[_0x166a1e[_0x1899('0x7')]]['ContactId']=_0x166a1e[_0x1899('0x42')];}if(!_[_0x1899('0x20')](_0x166a1e[_0x1899('0x40')]['xmd-cdrtype'])){utils['info'](util[_0x1899('0x19')](_0x1899('0x4f'),_0x166a1e[_0x1899('0x7')],_0x166a1e[_0x1899('0x42')]));channels[_0x166a1e[_0x1899('0x7')]]['type']=_0x166a1e['value'];}if(!_[_0x1899('0x20')](_0x166a1e[_0x1899('0x40')]['outboundrouteid'])){utils['info'](util[_0x1899('0x19')](_0x1899('0x50'),_0x166a1e[_0x1899('0x7')],_0x166a1e['value']));channels[_0x166a1e[_0x1899('0x7')]][_0x1899('0x51')]=_0x166a1e[_0x1899('0x42')];}if(!_['isNil'](_0x166a1e[_0x1899('0x40')][_0x1899('0x52')])){utils['info'](util[_0x1899('0x19')](_0x1899('0x53'),_0x166a1e['uniqueid'],_0x166a1e[_0x1899('0x42')]));channels[_0x166a1e[_0x1899('0x7')]][_0x1899('0x52')]=_0x166a1e[_0x1899('0x42')];}}}catch(_0x46ba3d){utils[_0x1899('0x2a')](util['format'](_0x1899('0x54'),_0x166a1e[_0x1899('0x7')]),_0x46ba3d);}};exports[_0x1899('0x55')]=function(_0x42a505){try{if(!_[_0x1899('0x20')](channels[_0x42a505[_0x1899('0x7')]])){utils[_0x1899('0x15')](util[_0x1899('0x19')](_0x1899('0x56'),_0x42a505['uniqueid']),_0x42a505);utils['info'](util[_0x1899('0x19')](_0x1899('0x57'),_0x42a505[_0x1899('0x7')],_0x42a505[_0x1899('0x58')],_0x42a505['appdata']));if(_0x42a505['application'][_0x1899('0x59')]()=='set'&&_[_0x1899('0x5a')](_0x42a505[_0x1899('0x5b')][_0x1899('0x59')](),_0x1899('0x5c'))){var _0x60d013=_0x42a505[_0x1899('0x5b')][_0x1899('0x5d')]('=');var _0x3ea46a=_0x60d013[0x0][_0x1899('0x5e')](_0x60d013[0x0][_0x1899('0x5f')]('(')+0x1,_0x60d013[0x0][_0x1899('0x5f')](')'));var _0x4a6617=_0x60d013[0x1];channels[_0x42a505['uniqueid']][_0x3ea46a]=_0x4a6617;}if(!_[_0x1899('0x60')]([_0x1899('0x61'),_0x1899('0x62'),_0x1899('0x63'),'set',_0x1899('0x64')],_0x42a505[_0x1899('0x58')][_0x1899('0x59')]())){channels[_0x42a505[_0x1899('0x7')]]['lastapplication']=_0x42a505[_0x1899('0x58')];channels[_0x42a505[_0x1899('0x7')]][_0x1899('0x4e')]=_0x42a505[_0x1899('0x5b')];}}}catch(_0x3bbe42){utils[_0x1899('0x2a')](util['format'](_0x1899('0x56'),_0x42a505[_0x1899('0x7')]),_0x3bbe42);}};
\ No newline at end of file
index e26eccc..14a729e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a77=['info','[core]\x20connected','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','[core]\x20close','managerevent','connect'];(function(_0x507197,_0x57ae67){var _0x39ede2=function(_0x1cd6da){while(--_0x1cd6da){_0x507197['push'](_0x507197['shift']());}};_0x39ede2(++_0x57ae67);}(_0x9a77,0x135));var _0x79a7=function(_0x2b3344,_0x50896b){_0x2b3344=_0x2b3344-0x0;var _0x4b06f9=_0x9a77[_0x2b3344];return _0x4b06f9;};'use strict';var utils=require('./utils');exports[_0x79a7('0x0')]=function(){utils[_0x79a7('0x1')](_0x79a7('0x2'));};exports['shutdown']=function(){utils[_0x79a7('0x1')](_0x79a7('0x3'));};exports[_0x79a7('0x4')]=function(){utils[_0x79a7('0x1')](_0x79a7('0x5'));};exports[_0x79a7('0x6')]=function(_0x36f638){utils['error'](_0x79a7('0x7'),_0x36f638);};exports['close']=function(){utils[_0x79a7('0x1')](_0x79a7('0x8'));};exports[_0x79a7('0x9')]=function(_0x492a44){};
\ No newline at end of file
+var _0xcff4=['error','[core]\x20error','./utils','info','[core]\x20connected','shutdown','[core]\x20shutdown','[core]\x20fullybooted'];(function(_0x377fd8,_0x11062d){var _0x451606=function(_0x25e2e9){while(--_0x25e2e9){_0x377fd8['push'](_0x377fd8['shift']());}};_0x451606(++_0x11062d);}(_0xcff4,0x7a));var _0x4cff=function(_0x3b7883,_0x1f3dee){_0x3b7883=_0x3b7883-0x0;var _0x44620=_0xcff4[_0x3b7883];return _0x44620;};'use strict';var utils=require(_0x4cff('0x0'));exports['connect']=function(){utils[_0x4cff('0x1')](_0x4cff('0x2'));};exports[_0x4cff('0x3')]=function(){utils[_0x4cff('0x1')](_0x4cff('0x4'));};exports['fullybooted']=function(){utils[_0x4cff('0x1')](_0x4cff('0x5'));};exports[_0x4cff('0x6')]=function(_0x2f56da){utils[_0x4cff('0x6')](_0x4cff('0x7'),_0x2f56da);};exports['close']=function(){utils['info']('[core]\x20close');};exports['managerevent']=function(_0x5ce4db){};
\ No newline at end of file
index 3499b4e..b49f7d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4496=['calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','split','varset','[%s][dials][varset]','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','dialbegin','isNil','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','endtime','holdtime','billableseconds','util','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring'];(function(_0x454a95,_0x37228d){var _0x3bc619=function(_0x25965e){while(--_0x25965e){_0x454a95['push'](_0x454a95['shift']());}};_0x3bc619(++_0x37228d);}(_0x4496,0x1b1));var _0x6449=function(_0x28d349,_0x268ef1){_0x28d349=_0x28d349-0x0;var _0x388ec2=_0x4496[_0x28d349];return _0x388ec2;};'use strict';var _=require('lodash');var util=require(_0x6449('0x0'));var utils=require('./utils');var dials={};function writeDB(_0x43f60d){utils[_0x6449('0x1')](util[_0x6449('0x2')](_0x6449('0x3'),_0x43f60d[_0x6449('0x4')],_0x43f60d[_0x6449('0x5')],_0x43f60d[_0x6449('0x6')],_0x43f60d[_0x6449('0x7')],_0x43f60d[_0x6449('0x8')],_0x43f60d[_0x6449('0x9')]));utils[_0x6449('0xa')](_0x6449('0xb'),_0x43f60d);delete dials[_0x43f60d[_0x6449('0x4')]];}exports[_0x6449('0xc')]=function(_0x458fcb){try{utils[_0x6449('0xd')](util['format'](_0x6449('0xe'),_0x458fcb[_0x6449('0x4')]),_0x458fcb);utils[_0x6449('0x1')](util[_0x6449('0x2')](_0x6449('0xf'),_0x458fcb[_0x6449('0x4')],_0x458fcb[_0x6449('0x10')],_0x458fcb[_0x6449('0x11')]));if(_0x458fcb[_0x6449('0x10')][_0x6449('0x12')]()==_0x6449('0x13')&&_[_0x6449('0x14')](_0x458fcb[_0x6449('0x11')][_0x6449('0x12')](),'cdr(routeid)')){var _0x4e3c80=_0x458fcb[_0x6449('0x11')][_0x6449('0x15')]('=');dials[_0x458fcb[_0x6449('0x4')]]={'routeId':_0x4e3c80[0x1]};}}catch(_0x17eb38){utils['error'](util[_0x6449('0x2')]('[%s][dials][newexten]',_0x458fcb[_0x6449('0x4')]),_0x17eb38);}};exports[_0x6449('0x16')]=function(_0xba82ce){try{utils[_0x6449('0xd')](util[_0x6449('0x2')](_0x6449('0x17'),_0xba82ce[_0x6449('0x4')]),_0xba82ce);if(!_['isNil'](_0xba82ce[_0x6449('0x18')][_0x6449('0x19')])){utils['info'](util[_0x6449('0x2')](_0x6449('0x1a'),_0xba82ce[_0x6449('0x4')],_0xba82ce[_0x6449('0x1b')]));dials[_0xba82ce['uniqueid']]={'routeId':_0xba82ce[_0x6449('0x1b')]};}}catch(_0x26f2bc){utils[_0x6449('0x1c')](util['format'](_0x6449('0x17'),_0xba82ce[_0x6449('0x4')]),_0x26f2bc);}};exports[_0x6449('0x1d')]=function(_0x541e43){try{if(!_[_0x6449('0x1e')](dials[_0x541e43[_0x6449('0x4')]])){utils[_0x6449('0xd')](util[_0x6449('0x2')](_0x6449('0x1f'),_0x541e43[_0x6449('0x4')]),_0x541e43);dials[_0x541e43['uniqueid']]=_[_0x6449('0x20')](dials[_0x541e43[_0x6449('0x4')]],_0x541e43);dials[_0x541e43[_0x6449('0x4')]][_0x6449('0x21')]=utils[_0x6449('0x22')]();dials[_0x541e43[_0x6449('0x4')]][_0x6449('0x23')]=_0x6449('0x24');utils[_0x6449('0x1')](util['format'](_0x6449('0x25'),_0x541e43[_0x6449('0x4')],dials[_0x541e43['uniqueid']][_0x6449('0x21')]));}}catch(_0x4c0fac){utils[_0x6449('0x1c')](util[_0x6449('0x2')](_0x6449('0x1f'),_0x541e43[_0x6449('0x4')]),_0x4c0fac);}};exports[_0x6449('0x26')]=function(_0x39477c){try{if(!_[_0x6449('0x1e')](dials[_0x39477c[_0x6449('0x4')]])){utils['debug'](util[_0x6449('0x2')](_0x6449('0x27'),_0x39477c[_0x6449('0x4')]),_0x39477c);dials[_0x39477c[_0x6449('0x4')]][_0x6449('0x9')]=_0x39477c[_0x6449('0x9')];if(_0x39477c['dialstatus']==_0x6449('0x28')){dials[_0x39477c[_0x6449('0x4')]]=_['assign'](dials[_0x39477c[_0x6449('0x4')]],_0x39477c);dials[_0x39477c['uniqueid']]['answertime']=utils['now']();dials[_0x39477c['uniqueid']][_0x6449('0x23')]='connect';utils['info'](util['format'](_0x6449('0x29'),_0x39477c['uniqueid'],_0x39477c[_0x6449('0x9')],dials[_0x39477c[_0x6449('0x4')]][_0x6449('0x2a')]));}else{utils[_0x6449('0x1')](util[_0x6449('0x2')](_0x6449('0x2b'),_0x39477c[_0x6449('0x4')],_0x39477c[_0x6449('0x9')]));}}}catch(_0x3af1e1){utils[_0x6449('0x1c')](util[_0x6449('0x2')]('[%s][dials][dialend]',_0x39477c[_0x6449('0x4')]),_0x3af1e1);}};exports[_0x6449('0x2c')]=function(_0x52c7e0){try{if(!_[_0x6449('0x1e')](dials[_0x52c7e0[_0x6449('0x4')]])){utils[_0x6449('0xd')](util[_0x6449('0x2')](_0x6449('0x2d'),_0x52c7e0[_0x6449('0x4')]),_0x52c7e0);utils[_0x6449('0x1')](util[_0x6449('0x2')](_0x6449('0x2e'),_0x52c7e0[_0x6449('0x4')],_0x52c7e0[_0x6449('0x7')],_0x52c7e0[_0x6449('0x2f')],_0x52c7e0[_0x6449('0x30')]));dials[_0x52c7e0[_0x6449('0x4')]]=_[_0x6449('0x20')](dials[_0x52c7e0[_0x6449('0x4')]],{'endtime':utils[_0x6449('0x22')](),'lastevent':_0x6449('0x31')});dials[_0x52c7e0['uniqueid']][_0x6449('0x32')]=utils[_0x6449('0x33')](dials[_0x52c7e0['uniqueid']][_0x6449('0x34')],dials[_0x52c7e0[_0x6449('0x4')]][_0x6449('0x21')]);dials[_0x52c7e0[_0x6449('0x4')]][_0x6449('0x35')]=utils['diffTime'](dials[_0x52c7e0[_0x6449('0x4')]]['answertime']||dials[_0x52c7e0[_0x6449('0x4')]][_0x6449('0x34')],dials[_0x52c7e0[_0x6449('0x4')]][_0x6449('0x21')]);dials[_0x52c7e0['uniqueid']][_0x6449('0x36')]=dials[_0x52c7e0['uniqueid']][_0x6449('0x2a')]?utils[_0x6449('0x33')](dials[_0x52c7e0[_0x6449('0x4')]][_0x6449('0x34')],dials[_0x52c7e0[_0x6449('0x4')]][_0x6449('0x2a')]):0x0;writeDB(dials[_0x52c7e0[_0x6449('0x4')]]);}}catch(_0x3b9805){utils[_0x6449('0x1c')](util[_0x6449('0x2')]('[%s][dials][hangup]',_0x52c7e0[_0x6449('0x4')]),_0x3b9805);}};
\ No newline at end of file
+var _0xb1cb=['uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','newexten','format','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','appdata','cdr(routeid)','split','[%s][dials][newexten]','varset','debug','variable','outboundrouteid','info','value','error','[%s][dials][varset]','dialbegin','isNil','[%s][dials][dialbegin]','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','lastevent','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','assign','complete','duration','diffTime','starttime','holdtime','endtime','billableseconds','[%s][dials][hangup]','lodash','util','./utils','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s'];(function(_0x521da0,_0x4986a4){var _0x159674=function(_0x59ae8a){while(--_0x59ae8a){_0x521da0['push'](_0x521da0['shift']());}};_0x159674(++_0x4986a4);}(_0xb1cb,0x9b));var _0xbb1c=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xb1cb[_0x279d37];return _0x530173;};'use strict';var _=require(_0xbb1c('0x0'));var util=require(_0xbb1c('0x1'));var utils=require(_0xbb1c('0x2'));var dials={};function writeDB(_0x17d0d8){utils['info'](util['format'](_0xbb1c('0x3'),_0x17d0d8[_0xbb1c('0x4')],_0x17d0d8[_0xbb1c('0x5')],_0x17d0d8[_0xbb1c('0x6')],_0x17d0d8[_0xbb1c('0x7')],_0x17d0d8[_0xbb1c('0x8')],_0x17d0d8[_0xbb1c('0x9')]));utils['request']('CreateVoiceDialReport',_0x17d0d8);delete dials[_0x17d0d8['uniqueid']];}exports[_0xbb1c('0xa')]=function(_0x54ab7d){try{utils['debug'](util[_0xbb1c('0xb')]('[%s][dials][newexten]',_0x54ab7d[_0xbb1c('0x4')]),_0x54ab7d);utils['info'](util[_0xbb1c('0xb')](_0xbb1c('0xc'),_0x54ab7d['uniqueid'],_0x54ab7d[_0xbb1c('0xd')],_0x54ab7d['appdata']));if(_0x54ab7d['application'][_0xbb1c('0xe')]()=='set'&&_['startsWith'](_0x54ab7d[_0xbb1c('0xf')]['toLowerCase'](),_0xbb1c('0x10'))){var _0x3caf22=_0x54ab7d['appdata'][_0xbb1c('0x11')]('=');dials[_0x54ab7d[_0xbb1c('0x4')]]={'routeId':_0x3caf22[0x1]};}}catch(_0x1c4ef2){utils['error'](util[_0xbb1c('0xb')](_0xbb1c('0x12'),_0x54ab7d[_0xbb1c('0x4')]),_0x1c4ef2);}};exports[_0xbb1c('0x13')]=function(_0xcafe8){try{utils[_0xbb1c('0x14')](util[_0xbb1c('0xb')]('[%s][dials][varset]',_0xcafe8[_0xbb1c('0x4')]),_0xcafe8);if(!_['isNil'](_0xcafe8[_0xbb1c('0x15')][_0xbb1c('0x16')])){utils[_0xbb1c('0x17')](util[_0xbb1c('0xb')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0xcafe8[_0xbb1c('0x4')],_0xcafe8[_0xbb1c('0x18')]));dials[_0xcafe8[_0xbb1c('0x4')]]={'routeId':_0xcafe8[_0xbb1c('0x18')]};}}catch(_0x5edd1a){utils[_0xbb1c('0x19')](util[_0xbb1c('0xb')](_0xbb1c('0x1a'),_0xcafe8[_0xbb1c('0x4')]),_0x5edd1a);}};exports[_0xbb1c('0x1b')]=function(_0x3625b5){try{if(!_[_0xbb1c('0x1c')](dials[_0x3625b5[_0xbb1c('0x4')]])){utils[_0xbb1c('0x14')](util[_0xbb1c('0xb')](_0xbb1c('0x1d'),_0x3625b5['uniqueid']),_0x3625b5);dials[_0x3625b5[_0xbb1c('0x4')]]=_['assign'](dials[_0x3625b5[_0xbb1c('0x4')]],_0x3625b5);dials[_0x3625b5[_0xbb1c('0x4')]]['starttime']=utils[_0xbb1c('0x1e')]();dials[_0x3625b5[_0xbb1c('0x4')]]['lastevent']=_0xbb1c('0x1f');utils[_0xbb1c('0x17')](util[_0xbb1c('0xb')](_0xbb1c('0x20'),_0x3625b5[_0xbb1c('0x4')],dials[_0x3625b5['uniqueid']]['starttime']));}}catch(_0x40ec5c){utils[_0xbb1c('0x19')](util[_0xbb1c('0xb')]('[%s][dials][dialbegin]',_0x3625b5[_0xbb1c('0x4')]),_0x40ec5c);}};exports[_0xbb1c('0x21')]=function(_0x502a65){try{if(!_[_0xbb1c('0x1c')](dials[_0x502a65[_0xbb1c('0x4')]])){utils[_0xbb1c('0x14')](util['format'](_0xbb1c('0x22'),_0x502a65['uniqueid']),_0x502a65);dials[_0x502a65[_0xbb1c('0x4')]][_0xbb1c('0x9')]=_0x502a65[_0xbb1c('0x9')];if(_0x502a65[_0xbb1c('0x9')]==_0xbb1c('0x23')){dials[_0x502a65[_0xbb1c('0x4')]]=_['assign'](dials[_0x502a65['uniqueid']],_0x502a65);dials[_0x502a65[_0xbb1c('0x4')]]['answertime']=utils[_0xbb1c('0x1e')]();dials[_0x502a65[_0xbb1c('0x4')]][_0xbb1c('0x24')]='connect';utils['info'](util['format'](_0xbb1c('0x25'),_0x502a65[_0xbb1c('0x4')],_0x502a65[_0xbb1c('0x9')],dials[_0x502a65[_0xbb1c('0x4')]][_0xbb1c('0x26')]));}else{utils[_0xbb1c('0x17')](util['format'](_0xbb1c('0x27'),_0x502a65['uniqueid'],_0x502a65[_0xbb1c('0x9')]));}}}catch(_0x500d1f){utils[_0xbb1c('0x19')](util['format'](_0xbb1c('0x22'),_0x502a65[_0xbb1c('0x4')]),_0x500d1f);}};exports[_0xbb1c('0x28')]=function(_0x13224b){try{if(!_['isNil'](dials[_0x13224b[_0xbb1c('0x4')]])){utils[_0xbb1c('0x14')](util['format']('[%s][dials][hangup]',_0x13224b[_0xbb1c('0x4')]),_0x13224b);utils[_0xbb1c('0x17')](util[_0xbb1c('0xb')](_0xbb1c('0x29'),_0x13224b[_0xbb1c('0x4')],_0x13224b[_0xbb1c('0x7')],_0x13224b[_0xbb1c('0x2a')],_0x13224b[_0xbb1c('0x2b')]));dials[_0x13224b['uniqueid']]=_[_0xbb1c('0x2c')](dials[_0x13224b[_0xbb1c('0x4')]],{'endtime':utils['now'](),'lastevent':_0xbb1c('0x2d')});dials[_0x13224b[_0xbb1c('0x4')]][_0xbb1c('0x2e')]=utils[_0xbb1c('0x2f')](dials[_0x13224b[_0xbb1c('0x4')]]['endtime'],dials[_0x13224b[_0xbb1c('0x4')]][_0xbb1c('0x30')]);dials[_0x13224b[_0xbb1c('0x4')]][_0xbb1c('0x31')]=utils[_0xbb1c('0x2f')](dials[_0x13224b['uniqueid']]['answertime']||dials[_0x13224b[_0xbb1c('0x4')]][_0xbb1c('0x32')],dials[_0x13224b[_0xbb1c('0x4')]][_0xbb1c('0x30')]);dials[_0x13224b[_0xbb1c('0x4')]][_0xbb1c('0x33')]=dials[_0x13224b[_0xbb1c('0x4')]][_0xbb1c('0x26')]?utils[_0xbb1c('0x2f')](dials[_0x13224b[_0xbb1c('0x4')]]['endtime'],dials[_0x13224b[_0xbb1c('0x4')]]['answertime']):0x0;writeDB(dials[_0x13224b[_0xbb1c('0x4')]]);}}catch(_0x539993){utils[_0xbb1c('0x19')](util[_0xbb1c('0xb')](_0xbb1c('0x34'),_0x13224b[_0xbb1c('0x4')]),_0x539993);}};
\ No newline at end of file
index 94e8316..804d7c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b15=['musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','util','asterisk','port','username','keepConnected','xdr','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','close','managerevent','devicestatechange','debug','format','device','[%s][index][devicestatechange]','[%s][index][agentcalled]','agentcalled','error','uniqueid','[%s][index][agentringnoanswer]','agentringnoanswer','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]'];(function(_0x9b10fa,_0x5b1ff2){var _0x549b06=function(_0x457128){while(--_0x457128){_0x9b10fa['push'](_0x9b10fa['shift']());}};_0x549b06(++_0x5b1ff2);}(_0x8b15,0x1df));var _0x58b1=function(_0x13dab4,_0x372949){_0x13dab4=_0x13dab4-0x0;var _0x467622=_0x8b15[_0x13dab4];return _0x467622;};var AsteriskManager=require(_0x58b1('0x0'));var config=require(_0x58b1('0x1'));var utils=require('./utils');var util=require(_0x58b1('0x2'));var ami=new AsteriskManager(config[_0x58b1('0x3')][_0x58b1('0x4')],config[_0x58b1('0x3')]['ip'],config['asterisk'][_0x58b1('0x5')],config[_0x58b1('0x3')]['password'],!![]);ami[_0x58b1('0x6')]();if(config[_0x58b1('0x7')]&&config[_0x58b1('0x7')]['disabled']){utils['info'](_0x58b1('0x8'));}else{var agents=require(_0x58b1('0x9'));var calls=require(_0x58b1('0xa'));var queues=require(_0x58b1('0xb'));var recordings=require('./recordings.controller');var members=require(_0x58b1('0xc'));var dials=require(_0x58b1('0xd'));var transfers=require(_0x58b1('0xe'));var core=require(_0x58b1('0xf'));ami['on'](_0x58b1('0x10'),core['connect']);ami['on'](_0x58b1('0x11'),core[_0x58b1('0x11')]);ami['on'](_0x58b1('0x12'),core[_0x58b1('0x12')]);ami['on']('error',core['error']);ami['on'](_0x58b1('0x13'),core['close']);ami['on'](_0x58b1('0x14'),core['managerevent']);ami['on'](_0x58b1('0x15'),function(_0x1ef1e4){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')]('[%s][index][devicestatechange]',_0x1ef1e4[_0x58b1('0x18')]),_0x1ef1e4);members[_0x58b1('0x15')](_0x1ef1e4);}catch(_0x5cc558){utils['error'](util[_0x58b1('0x17')](_0x58b1('0x19'),_0x1ef1e4[_0x58b1('0x18')]),_0x5cc558);}});ami['on']('agentcalled',function(_0x177ff6){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')](_0x58b1('0x1a'),_0x177ff6['uniqueid']),_0x177ff6);agents[_0x58b1('0x1b')](_0x177ff6);}catch(_0x53dbd1){utils[_0x58b1('0x1c')](util['format'](_0x58b1('0x1a'),_0x177ff6[_0x58b1('0x1d')]),_0x53dbd1);}});ami['on']('agentringnoanswer',function(_0x4c8f48){try{utils['debug'](util[_0x58b1('0x17')](_0x58b1('0x1e'),_0x4c8f48[_0x58b1('0x1d')]),_0x4c8f48);agents[_0x58b1('0x1f')](_0x4c8f48);}catch(_0x2a9af7){utils[_0x58b1('0x1c')](util['format'](_0x58b1('0x1e'),_0x4c8f48[_0x58b1('0x1d')]),_0x2a9af7);}});ami['on'](_0x58b1('0x20'),function(_0x407a53){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')](_0x58b1('0x21'),_0x407a53[_0x58b1('0x1d')]),_0x407a53);agents['agentconnect'](_0x407a53);queues[_0x58b1('0x20')](_0x407a53);}catch(_0x2cf66e){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')]('[%s][index][agentconnect]',_0x407a53[_0x58b1('0x1d')]),_0x2cf66e);}});ami['on'](_0x58b1('0x22'),function(_0x4ebbd9){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')]('[%s][index][agentcomplete]',_0x4ebbd9['uniqueid']),_0x4ebbd9);agents[_0x58b1('0x22')](_0x4ebbd9);queues[_0x58b1('0x22')](_0x4ebbd9);members[_0x58b1('0x22')](_0x4ebbd9);}catch(_0x56ea7f){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')]('[%s][index][agentcomplete]',_0x4ebbd9[_0x58b1('0x1d')]),_0x56ea7f);}});ami['on']('queuecallerabandon',function(_0x181d2e){try{utils[_0x58b1('0x16')](util['format'](_0x58b1('0x23'),_0x181d2e[_0x58b1('0x1d')]),_0x181d2e);agents['queuecallerabandon'](_0x181d2e);queues[_0x58b1('0x24')](_0x181d2e);}catch(_0x1d2139){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x23'),_0x181d2e['uniqueid']),_0x1d2139);}});ami['on'](_0x58b1('0x25'),function(_0x22fda0){try{utils[_0x58b1('0x16')](util['format'](_0x58b1('0x26'),_0x22fda0[_0x58b1('0x1d')]),_0x22fda0);queues[_0x58b1('0x25')](_0x22fda0);recordings['queuecallerjoin'](_0x22fda0);}catch(_0xaf5ecd){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x26'),_0x22fda0[_0x58b1('0x1d')]),_0xaf5ecd);}});ami['on'](_0x58b1('0x27'),function(_0x3c5c77){try{utils[_0x58b1('0x16')](util['format'](_0x58b1('0x28'),_0x3c5c77['uniqueid']),_0x3c5c77);queues['queuecallerleave'](_0x3c5c77);}catch(_0xa56963){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')]('[%s][index][queuecallerleave]',_0x3c5c77[_0x58b1('0x1d')]),_0xa56963);}});ami['on'](_0x58b1('0x29'),function(_0x209f48){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')]('[%s][index][musiconholdstart]',_0x209f48[_0x58b1('0x1d')]),_0x209f48);queues['musiconholdstart'](_0x209f48);calls[_0x58b1('0x29')](_0x209f48);}catch(_0x5e4700){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x2a'),_0x209f48[_0x58b1('0x1d')]),_0x5e4700);}});ami['on'](_0x58b1('0x2b'),function(_0x158dee){try{utils['debug'](util[_0x58b1('0x17')]('[%s][index][musiconholdstop]',_0x158dee[_0x58b1('0x1d')]),_0x158dee);queues[_0x58b1('0x2b')](_0x158dee);calls[_0x58b1('0x2b')](_0x158dee);}catch(_0x33d946){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')]('[%s][index][musiconholdstop]',_0x158dee['uniqueid']),_0x33d946);}});ami['on'](_0x58b1('0x2c'),function(_0x5359e6){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')](_0x58b1('0x2d'),_0x5359e6[_0x58b1('0x1d')]),_0x5359e6);calls[_0x58b1('0x2c')](_0x5359e6);recordings[_0x58b1('0x2c')](_0x5359e6);}catch(_0x12f527){utils['error'](util[_0x58b1('0x17')](_0x58b1('0x2d'),_0x5359e6[_0x58b1('0x1d')]),_0x12f527);}});ami['on'](_0x58b1('0x2e'),function(_0x40da2d){try{utils['debug'](util['format'](_0x58b1('0x2f'),_0x40da2d[_0x58b1('0x1d')]),_0x40da2d);calls['hangup'](_0x40da2d);recordings['hangup'](_0x40da2d);dials[_0x58b1('0x2e')](_0x40da2d);agents[_0x58b1('0x2e')](_0x40da2d);queues['hangup'](_0x40da2d);}catch(_0x1d52e0){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')]('[%s][index][hangup]',_0x40da2d[_0x58b1('0x1d')]),_0x1d52e0);}});ami['on']('cdr',function(_0x313fb3){try{utils['debug'](util[_0x58b1('0x17')]('[%s][index][cdr]',_0x313fb3[_0x58b1('0x1d')]),_0x313fb3);members[_0x58b1('0x30')](_0x313fb3);}catch(_0x702356){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x31'),_0x313fb3[_0x58b1('0x1d')]),_0x702356);}});ami['on'](_0x58b1('0x32'),function(_0x303366){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')]('[%s][index][blindtransfer]',_0x303366[_0x58b1('0x1d')]),_0x303366);queues['blindtransfer'](_0x303366);agents['blindtransfer'](_0x303366);transfers[_0x58b1('0x32')](_0x303366);recordings[_0x58b1('0x32')](_0x303366);}catch(_0x45f2e2){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')]('[%s][index][blindtransfer]',_0x303366[_0x58b1('0x1d')]),_0x45f2e2);}});ami['on']('attendedtransfer',function(_0x276898){try{utils[_0x58b1('0x16')](util['format'](_0x58b1('0x33'),_0x276898[_0x58b1('0x34')]),_0x276898);queues[_0x58b1('0x35')](_0x276898);transfers[_0x58b1('0x35')](_0x276898);agents[_0x58b1('0x35')](_0x276898);calls['attendedtransfer'](_0x276898);}catch(_0x22b903){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x33'),_0x276898[_0x58b1('0x34')]),_0x22b903);}});ami['on']('varset',function(_0x52f46b){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')]('[%s][index][varset]',_0x52f46b['uniqueid']),_0x52f46b);queues[_0x58b1('0x36')](_0x52f46b);recordings[_0x58b1('0x36')](_0x52f46b);calls[_0x58b1('0x36')](_0x52f46b);dials[_0x58b1('0x36')](_0x52f46b);}catch(_0x3aa4ad){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x37'),_0x52f46b[_0x58b1('0x1d')]),_0x3aa4ad);}});ami['on'](_0x58b1('0x38'),function(_0x103618){try{utils['debug'](util['format'](_0x58b1('0x39'),_0x103618[_0x58b1('0x1d')]),_0x103618);calls[_0x58b1('0x38')](_0x103618);recordings[_0x58b1('0x38')](_0x103618);dials[_0x58b1('0x38')](_0x103618);}catch(_0x2ad4a2){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x39'),_0x103618[_0x58b1('0x1d')]),_0x2ad4a2);}});ami['on'](_0x58b1('0x3a'),function(_0x1523c2){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')](_0x58b1('0x3b'),_0x1523c2[_0x58b1('0x1d')]),_0x1523c2);calls[_0x58b1('0x3a')](_0x1523c2);recordings[_0x58b1('0x3a')](_0x1523c2);}catch(_0x4cf2ad){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x3b'),_0x1523c2['uniqueid']),_0x4cf2ad);}});ami['on'](_0x58b1('0x3c'),function(_0x5825be){try{utils[_0x58b1('0x16')](util['format'](_0x58b1('0x3d'),_0x5825be[_0x58b1('0x1d')]),_0x5825be);dials[_0x58b1('0x3c')](_0x5825be);}catch(_0x58a67a){utils['error'](util[_0x58b1('0x17')](_0x58b1('0x3e'),_0x5825be[_0x58b1('0x1d')]),_0x58a67a);}});ami['on'](_0x58b1('0x3f'),function(_0x383c5e){try{utils[_0x58b1('0x16')](util[_0x58b1('0x17')](_0x58b1('0x40'),_0x383c5e[_0x58b1('0x1d')]),_0x383c5e);dials['dialend'](_0x383c5e);}catch(_0x225b85){utils[_0x58b1('0x1c')](util[_0x58b1('0x17')](_0x58b1('0x40'),_0x383c5e[_0x58b1('0x1d')]),_0x225b85);}});}
\ No newline at end of file
+var _0x21a0=['[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','../../config/environment','./utils','asterisk','port','username','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','close','managerevent','debug','[%s][index][devicestatechange]','device','error','format','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave'];(function(_0x5518c5,_0x202a04){var _0x3dc84b=function(_0x43d91d){while(--_0x43d91d){_0x5518c5['push'](_0x5518c5['shift']());}};_0x3dc84b(++_0x202a04);}(_0x21a0,0x169));var _0x021a=function(_0x10f9b6,_0x175dce){_0x10f9b6=_0x10f9b6-0x0;var _0x5b2ea4=_0x21a0[_0x10f9b6];return _0x5b2ea4;};var AsteriskManager=require('asterisk-manager');var config=require(_0x021a('0x0'));var utils=require(_0x021a('0x1'));var util=require('util');var ami=new AsteriskManager(config[_0x021a('0x2')][_0x021a('0x3')],config[_0x021a('0x2')]['ip'],config[_0x021a('0x2')][_0x021a('0x4')],config['asterisk'][_0x021a('0x5')],!![]);ami[_0x021a('0x6')]();if(config[_0x021a('0x7')]&&config[_0x021a('0x7')][_0x021a('0x8')]){utils[_0x021a('0x9')](_0x021a('0xa'));}else{var agents=require(_0x021a('0xb'));var calls=require(_0x021a('0xc'));var queues=require(_0x021a('0xd'));var recordings=require(_0x021a('0xe'));var members=require(_0x021a('0xf'));var dials=require('./dials.controller');var transfers=require(_0x021a('0x10'));var core=require(_0x021a('0x11'));ami['on'](_0x021a('0x12'),core[_0x021a('0x12')]);ami['on']('shutdown',core[_0x021a('0x13')]);ami['on'](_0x021a('0x14'),core[_0x021a('0x14')]);ami['on']('error',core['error']);ami['on'](_0x021a('0x15'),core[_0x021a('0x15')]);ami['on'](_0x021a('0x16'),core[_0x021a('0x16')]);ami['on']('devicestatechange',function(_0x40cd08){try{utils[_0x021a('0x17')](util['format'](_0x021a('0x18'),_0x40cd08[_0x021a('0x19')]),_0x40cd08);members['devicestatechange'](_0x40cd08);}catch(_0x502132){utils[_0x021a('0x1a')](util[_0x021a('0x1b')](_0x021a('0x18'),_0x40cd08[_0x021a('0x19')]),_0x502132);}});ami['on'](_0x021a('0x1c'),function(_0x4990da){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')](_0x021a('0x1d'),_0x4990da[_0x021a('0x1e')]),_0x4990da);agents[_0x021a('0x1c')](_0x4990da);}catch(_0x5ec827){utils['error'](util['format'](_0x021a('0x1d'),_0x4990da['uniqueid']),_0x5ec827);}});ami['on'](_0x021a('0x1f'),function(_0x5abfb0){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')]('[%s][index][agentringnoanswer]',_0x5abfb0[_0x021a('0x1e')]),_0x5abfb0);agents[_0x021a('0x1f')](_0x5abfb0);}catch(_0x935170){utils['error'](util[_0x021a('0x1b')]('[%s][index][agentringnoanswer]',_0x5abfb0[_0x021a('0x1e')]),_0x935170);}});ami['on'](_0x021a('0x20'),function(_0x43de41){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')](_0x021a('0x21'),_0x43de41['uniqueid']),_0x43de41);agents[_0x021a('0x20')](_0x43de41);queues['agentconnect'](_0x43de41);}catch(_0x7b0dca){utils[_0x021a('0x1a')](util['format'](_0x021a('0x21'),_0x43de41[_0x021a('0x1e')]),_0x7b0dca);}});ami['on'](_0x021a('0x22'),function(_0x37ff66){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')](_0x021a('0x23'),_0x37ff66[_0x021a('0x1e')]),_0x37ff66);agents[_0x021a('0x22')](_0x37ff66);queues['agentcomplete'](_0x37ff66);members['agentcomplete'](_0x37ff66);}catch(_0x5dcce5){utils[_0x021a('0x1a')](util[_0x021a('0x1b')]('[%s][index][agentcomplete]',_0x37ff66[_0x021a('0x1e')]),_0x5dcce5);}});ami['on'](_0x021a('0x24'),function(_0x5e44f8){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')]('[%s][index][queuecallerabandon]',_0x5e44f8[_0x021a('0x1e')]),_0x5e44f8);agents[_0x021a('0x24')](_0x5e44f8);queues[_0x021a('0x24')](_0x5e44f8);}catch(_0x1b3292){utils[_0x021a('0x1a')](util[_0x021a('0x1b')](_0x021a('0x25'),_0x5e44f8[_0x021a('0x1e')]),_0x1b3292);}});ami['on']('queuecallerjoin',function(_0x1bc6c0){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')](_0x021a('0x26'),_0x1bc6c0[_0x021a('0x1e')]),_0x1bc6c0);queues[_0x021a('0x27')](_0x1bc6c0);recordings[_0x021a('0x27')](_0x1bc6c0);}catch(_0xfdf671){utils['error'](util[_0x021a('0x1b')]('[%s][index][queuecallerjoin]',_0x1bc6c0['uniqueid']),_0xfdf671);}});ami['on'](_0x021a('0x28'),function(_0x44cb9a){try{utils['debug'](util['format'](_0x021a('0x29'),_0x44cb9a['uniqueid']),_0x44cb9a);queues[_0x021a('0x28')](_0x44cb9a);}catch(_0x5cd62b){utils['error'](util[_0x021a('0x1b')](_0x021a('0x29'),_0x44cb9a['uniqueid']),_0x5cd62b);}});ami['on'](_0x021a('0x2a'),function(_0x1d7d15){try{utils[_0x021a('0x17')](util['format'](_0x021a('0x2b'),_0x1d7d15[_0x021a('0x1e')]),_0x1d7d15);queues[_0x021a('0x2a')](_0x1d7d15);calls[_0x021a('0x2a')](_0x1d7d15);}catch(_0x46863e){utils[_0x021a('0x1a')](util[_0x021a('0x1b')](_0x021a('0x2b'),_0x1d7d15[_0x021a('0x1e')]),_0x46863e);}});ami['on'](_0x021a('0x2c'),function(_0x402be8){try{utils['debug'](util[_0x021a('0x1b')]('[%s][index][musiconholdstop]',_0x402be8[_0x021a('0x1e')]),_0x402be8);queues[_0x021a('0x2c')](_0x402be8);calls[_0x021a('0x2c')](_0x402be8);}catch(_0x115c1f){utils[_0x021a('0x1a')](util[_0x021a('0x1b')](_0x021a('0x2d'),_0x402be8[_0x021a('0x1e')]),_0x115c1f);}});ami['on'](_0x021a('0x2e'),function(_0x77a65a){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')](_0x021a('0x2f'),_0x77a65a[_0x021a('0x1e')]),_0x77a65a);calls['newstate'](_0x77a65a);recordings[_0x021a('0x2e')](_0x77a65a);}catch(_0x233112){utils[_0x021a('0x1a')](util['format']('[%s][index][newstate]',_0x77a65a[_0x021a('0x1e')]),_0x233112);}});ami['on'](_0x021a('0x30'),function(_0xbd4031){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')]('[%s][index][hangup]',_0xbd4031[_0x021a('0x1e')]),_0xbd4031);calls[_0x021a('0x30')](_0xbd4031);recordings[_0x021a('0x30')](_0xbd4031);dials[_0x021a('0x30')](_0xbd4031);agents[_0x021a('0x30')](_0xbd4031);queues[_0x021a('0x30')](_0xbd4031);}catch(_0x29da53){utils[_0x021a('0x1a')](util[_0x021a('0x1b')](_0x021a('0x31'),_0xbd4031[_0x021a('0x1e')]),_0x29da53);}});ami['on'](_0x021a('0x32'),function(_0x42b4f4){try{utils[_0x021a('0x17')](util['format'](_0x021a('0x33'),_0x42b4f4[_0x021a('0x1e')]),_0x42b4f4);members[_0x021a('0x32')](_0x42b4f4);}catch(_0x33f4ec){utils[_0x021a('0x1a')](util[_0x021a('0x1b')]('[%s][index][cdr]',_0x42b4f4[_0x021a('0x1e')]),_0x33f4ec);}});ami['on']('blindtransfer',function(_0x5c3926){try{utils['debug'](util['format']('[%s][index][blindtransfer]',_0x5c3926['uniqueid']),_0x5c3926);queues[_0x021a('0x34')](_0x5c3926);agents['blindtransfer'](_0x5c3926);transfers[_0x021a('0x34')](_0x5c3926);recordings[_0x021a('0x34')](_0x5c3926);}catch(_0x12db3f){utils[_0x021a('0x1a')](util['format']('[%s][index][blindtransfer]',_0x5c3926[_0x021a('0x1e')]),_0x12db3f);}});ami['on'](_0x021a('0x35'),function(_0x5b62d4){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')](_0x021a('0x36'),_0x5b62d4[_0x021a('0x37')]),_0x5b62d4);queues[_0x021a('0x35')](_0x5b62d4);transfers['attendedtransfer'](_0x5b62d4);agents[_0x021a('0x35')](_0x5b62d4);calls[_0x021a('0x35')](_0x5b62d4);}catch(_0x7cf44a){utils[_0x021a('0x1a')](util['format'](_0x021a('0x36'),_0x5b62d4[_0x021a('0x37')]),_0x7cf44a);}});ami['on']('varset',function(_0x1dcc7d){try{utils['debug'](util['format'](_0x021a('0x38'),_0x1dcc7d[_0x021a('0x1e')]),_0x1dcc7d);queues[_0x021a('0x39')](_0x1dcc7d);recordings[_0x021a('0x39')](_0x1dcc7d);calls[_0x021a('0x39')](_0x1dcc7d);dials[_0x021a('0x39')](_0x1dcc7d);}catch(_0x39d4cb){utils[_0x021a('0x1a')](util['format'](_0x021a('0x38'),_0x1dcc7d[_0x021a('0x1e')]),_0x39d4cb);}});ami['on'](_0x021a('0x3a'),function(_0x5244a6){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')](_0x021a('0x3b'),_0x5244a6['uniqueid']),_0x5244a6);calls[_0x021a('0x3a')](_0x5244a6);recordings[_0x021a('0x3a')](_0x5244a6);dials[_0x021a('0x3a')](_0x5244a6);}catch(_0xa668c5){utils[_0x021a('0x1a')](util[_0x021a('0x1b')]('[%s][index][newexten]',_0x5244a6[_0x021a('0x1e')]),_0xa668c5);}});ami['on'](_0x021a('0x3c'),function(_0x2a5bfa){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')]('[%s][index][newchannel]',_0x2a5bfa[_0x021a('0x1e')]),_0x2a5bfa);calls[_0x021a('0x3c')](_0x2a5bfa);recordings['newchannel'](_0x2a5bfa);}catch(_0x3d3696){utils[_0x021a('0x1a')](util[_0x021a('0x1b')](_0x021a('0x3d'),_0x2a5bfa[_0x021a('0x1e')]),_0x3d3696);}});ami['on'](_0x021a('0x3e'),function(_0x4fe7f1){try{utils[_0x021a('0x17')](util['format'](_0x021a('0x3f'),_0x4fe7f1['uniqueid']),_0x4fe7f1);dials[_0x021a('0x3e')](_0x4fe7f1);}catch(_0x396b0a){utils['error'](util[_0x021a('0x1b')](_0x021a('0x40'),_0x4fe7f1['uniqueid']),_0x396b0a);}});ami['on'](_0x021a('0x41'),function(_0x53236e){try{utils[_0x021a('0x17')](util[_0x021a('0x1b')]('[%s][index][dialend]',_0x53236e['uniqueid']),_0x53236e);dials['dialend'](_0x53236e);}catch(_0x4588e8){utils[_0x021a('0x1a')](util[_0x021a('0x1b')](_0x021a('0x42'),_0x53236e[_0x021a('0x1e')]),_0x4588e8);}});}
\ No newline at end of file
index 906f23a..0b2aa8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4944=['[%s][members][cdr]','data1','source','data3','destinationchannel','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','membername','type','getUserByInterface','then','name','internal','getUserByName','split','request','CreateMemberReport','error','format','[%s][members][writeDB]','uniqueid','some','devicestatechange','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','agent','NOT_INUSE','isNil','exitAt','now','duration','diffTime','agentcomplete','debug','[%s][members][agentcomplete]','queue','assign','cdr'];(function(_0x5b61f3,_0x99a265){var _0x143e59=function(_0xea9797){while(--_0xea9797){_0x5b61f3['push'](_0x5b61f3['shift']());}};_0x143e59(++_0x99a265);}(_0x4944,0x6d));var _0x4494=function(_0x4e9a16,_0x33ebd8){_0x4e9a16=_0x4e9a16-0x0;var _0x1d175f=_0x4944[_0x4e9a16];return _0x1d175f;};'use strict';var _=require(_0x4494('0x0'));var util=require('util');var utils=require(_0x4494('0x1'));var members={};var exclude=[_0x4494('0x2'),_0x4494('0x3')];function writeDB(_0x138f00){utils[_0x4494('0x4')](util['format'](_0x4494('0x5'),_0x138f00['uniqueid'],_0x138f00[_0x4494('0x6')],_0x138f00[_0x4494('0x7')],_0x138f00[_0x4494('0x8')],_0x138f00[_0x4494('0x9')],_0x138f00[_0x4494('0xa')]));if(_0x138f00[_0x4494('0x6')]){utils[_0x4494('0xb')](_0x138f00[_0x4494('0x6')])[_0x4494('0xc')](function(_0x5b14d5){if(_0x5b14d5){_0x138f00[_0x4494('0x9')]=_0x5b14d5[_0x4494('0xd')];_0x138f00[_0x4494('0xe')]=_0x5b14d5[_0x4494('0xe')];utils['request']('CreateMemberReport',_0x138f00);}else{utils[_0x4494('0xf')](_0x138f00[_0x4494('0x6')][_0x4494('0x10')]('/')[0x1])['then'](function(_0x48bb78){if(_0x48bb78){_0x138f00[_0x4494('0x9')]=_0x48bb78[_0x4494('0xd')];_0x138f00[_0x4494('0xe')]=_0x48bb78[_0x4494('0xe')];utils[_0x4494('0x11')](_0x4494('0x12'),_0x138f00);}});}})['catch'](function(_0x34959d){utils[_0x4494('0x13')](util[_0x4494('0x14')](_0x4494('0x15'),_0x138f00[_0x4494('0x16')]),_0x34959d);});}delete members[_0x138f00[_0x4494('0x6')]];}function startsWith(_0x3847d6,_0x53fed5){return _[_0x4494('0x17')](_0x3847d6,function(_0x5a0985){return _['startsWith'](_0x53fed5,_0x5a0985);});}exports[_0x4494('0x18')]=function(_0x267d0b){try{utils['debug'](util['format'](_0x4494('0x19'),members[_0x267d0b['device']]?members[_0x267d0b[_0x4494('0x1a')]][_0x4494('0x16')]:_0x267d0b['device']),_0x267d0b);utils[_0x4494('0x4')](util['format'](_0x4494('0x1b'),members[_0x267d0b[_0x4494('0x1a')]]?members[_0x267d0b['device']]['uniqueid']:_0x267d0b[_0x4494('0x1a')],_0x267d0b[_0x4494('0x1c')],_0x267d0b[_0x4494('0x1a')]));switch(_0x267d0b[_0x4494('0x1c')]){case _0x4494('0x1d'):case _0x4494('0x1e'):if(!startsWith(exclude,_0x267d0b[_0x4494('0x1a')])){members[_0x267d0b[_0x4494('0x1a')]]={'channel':'voice','interface':_0x267d0b['device'],'type':'TALKING','enterAt':utils['now'](),'role':_0x4494('0x1f')};}break;case _0x4494('0x20'):if(!_[_0x4494('0x21')](members[_0x267d0b[_0x4494('0x1a')]])){members[_0x267d0b['device']][_0x4494('0x22')]=utils[_0x4494('0x23')]();members[_0x267d0b['device']][_0x4494('0x24')]=utils[_0x4494('0x25')](members[_0x267d0b[_0x4494('0x1a')]]['exitAt'],members[_0x267d0b[_0x4494('0x1a')]]['enterAt']);if(members[_0x267d0b[_0x4494('0x1a')]]['uniqueid']){writeDB(members[_0x267d0b[_0x4494('0x1a')]]);}}break;default:break;}}catch(_0x2fcc43){utils[_0x4494('0x13')](util['format'](_0x4494('0x19'),members[_0x267d0b[_0x4494('0x1a')]]?members[_0x267d0b['device']][_0x4494('0x16')]:_0x267d0b[_0x4494('0x1a')]),_0x2fcc43);}};exports[_0x4494('0x26')]=function(_0x57c34f){try{if(!_[_0x4494('0x21')](members[_0x57c34f[_0x4494('0x6')]])){utils[_0x4494('0x27')](util[_0x4494('0x14')](_0x4494('0x28'),_0x57c34f[_0x4494('0x16')]),_0x57c34f);utils[_0x4494('0x4')](util[_0x4494('0x14')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x57c34f[_0x4494('0x16')],_0x57c34f[_0x4494('0x6')],_0x57c34f[_0x4494('0x29')]));members[_0x57c34f['interface']]=_[_0x4494('0x2a')](members[_0x57c34f[_0x4494('0x6')]],{'data4':_0x57c34f[_0x4494('0x29')],'uniqueid':_0x57c34f[_0x4494('0x16')]});}}catch(_0x1e4b74){utils[_0x4494('0x13')](util[_0x4494('0x14')]('[%s][members][agentcomplete]',_0x57c34f[_0x4494('0x16')]),_0x1e4b74);}};exports[_0x4494('0x2b')]=function(_0x2f4740){try{utils[_0x4494('0x27')](util[_0x4494('0x14')](_0x4494('0x2c'),_0x2f4740['uniqueid']),_0x2f4740);if(_0x2f4740[_0x4494('0x7')]){var _0x1009a4=_0x2f4740[_0x4494('0x7')][_0x4494('0x10')]('-')[0x0];if(!_[_0x4494('0x21')](members[_0x1009a4])){members[_0x1009a4]=_['assign'](members[_0x1009a4],{'data1':members[_0x1009a4][_0x4494('0x2d')]||_0x2f4740[_0x4494('0xa')],'data2':members[_0x1009a4]['data2']||_0x2f4740[_0x4494('0x2e')],'data3':members[_0x1009a4]['data3']||_0x2f4740['destination'],'uniqueid':members[_0x1009a4]['uniqueid']||_0x2f4740[_0x4494('0x16')]});utils[_0x4494('0x4')](util[_0x4494('0x14')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x2f4740['uniqueid'],members[_0x1009a4][_0x4494('0x2d')],members[_0x1009a4][_0x4494('0x8')],members[_0x1009a4][_0x4494('0x2f')]));if(members[_0x1009a4][_0x4494('0x22')]){writeDB(members[_0x1009a4]);}}}if(_0x2f4740[_0x4494('0x30')]){var _0x260561=_0x2f4740[_0x4494('0x30')][_0x4494('0x10')]('-')[0x0];if(!_[_0x4494('0x21')](members[_0x260561])){members[_0x260561]=_[_0x4494('0x2a')](members[_0x260561],{'data1':members[_0x260561][_0x4494('0x2d')]||_0x2f4740[_0x4494('0xa')],'data2':members[_0x260561][_0x4494('0x8')]||_0x2f4740['source'],'data3':members[_0x260561][_0x4494('0x2f')]||_0x2f4740[_0x4494('0x31')],'uniqueid':members[_0x260561][_0x4494('0x16')]||_0x2f4740[_0x4494('0x16')]});utils[_0x4494('0x4')](util[_0x4494('0x14')](_0x4494('0x32'),_0x2f4740[_0x4494('0x16')],members[_0x260561][_0x4494('0x2d')],members[_0x260561]['data2'],members[_0x260561]['data3']));if(members[_0x260561][_0x4494('0x22')]){writeDB(members[_0x260561]);}}}}catch(_0x55dbb8){utils[_0x4494('0x13')](util[_0x4494('0x14')](_0x4494('0x2c'),_0x2f4740[_0x4494('0x16')]),_0x55dbb8);}};
\ No newline at end of file
+var _0xe630=['device','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','isNil','exitAt','duration','diffTime','enterAt','error','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','split','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','destinationchannel','lodash','util','Local/_attended@transfer','Queue:','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','data2','membername','type','interface','then','name','internal','request','CreateMemberReport','getUserByName','catch','[%s][members][writeDB]','debug'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0xe630,0x149));var _0x0e63=function(_0x1ca002,_0x4f0fe5){_0x1ca002=_0x1ca002-0x0;var _0x1371b0=_0xe630[_0x1ca002];return _0x1371b0;};'use strict';var _=require(_0x0e63('0x0'));var util=require(_0x0e63('0x1'));var utils=require('./utils');var members={};var exclude=[_0x0e63('0x2'),_0x0e63('0x3')];function writeDB(_0x45c680){utils['info'](util[_0x0e63('0x4')](_0x0e63('0x5'),_0x45c680[_0x0e63('0x6')],_0x45c680['interface'],_0x45c680[_0x0e63('0x7')],_0x45c680[_0x0e63('0x8')],_0x45c680[_0x0e63('0x9')],_0x45c680[_0x0e63('0xa')]));if(_0x45c680[_0x0e63('0xb')]){utils['getUserByInterface'](_0x45c680[_0x0e63('0xb')])[_0x0e63('0xc')](function(_0xf04128){if(_0xf04128){_0x45c680[_0x0e63('0x9')]=_0xf04128[_0x0e63('0xd')];_0x45c680[_0x0e63('0xe')]=_0xf04128[_0x0e63('0xe')];utils[_0x0e63('0xf')](_0x0e63('0x10'),_0x45c680);}else{utils[_0x0e63('0x11')](_0x45c680[_0x0e63('0xb')]['split']('/')[0x1])[_0x0e63('0xc')](function(_0x35ded0){if(_0x35ded0){_0x45c680[_0x0e63('0x9')]=_0x35ded0[_0x0e63('0xd')];_0x45c680[_0x0e63('0xe')]=_0x35ded0[_0x0e63('0xe')];utils[_0x0e63('0xf')](_0x0e63('0x10'),_0x45c680);}});}})[_0x0e63('0x12')](function(_0x56733c){utils['error'](util[_0x0e63('0x4')](_0x0e63('0x13'),_0x45c680[_0x0e63('0x6')]),_0x56733c);});}delete members[_0x45c680[_0x0e63('0xb')]];}function startsWith(_0x61c395,_0x35643c){return _['some'](_0x61c395,function(_0x5d1f1e){return _['startsWith'](_0x35643c,_0x5d1f1e);});}exports['devicestatechange']=function(_0x37f6e4){try{utils[_0x0e63('0x14')](util[_0x0e63('0x4')]('[%s][members][devicestatechange]',members[_0x37f6e4['device']]?members[_0x37f6e4[_0x0e63('0x15')]]['uniqueid']:_0x37f6e4['device']),_0x37f6e4);utils[_0x0e63('0x16')](util['format'](_0x0e63('0x17'),members[_0x37f6e4[_0x0e63('0x15')]]?members[_0x37f6e4['device']]['uniqueid']:_0x37f6e4[_0x0e63('0x15')],_0x37f6e4[_0x0e63('0x18')],_0x37f6e4[_0x0e63('0x15')]));switch(_0x37f6e4[_0x0e63('0x18')]){case _0x0e63('0x19'):case _0x0e63('0x1a'):if(!startsWith(exclude,_0x37f6e4['device'])){members[_0x37f6e4[_0x0e63('0x15')]]={'channel':_0x0e63('0x1b'),'interface':_0x37f6e4[_0x0e63('0x15')],'type':_0x0e63('0x1c'),'enterAt':utils[_0x0e63('0x1d')](),'role':'agent'};}break;case'NOT_INUSE':if(!_[_0x0e63('0x1e')](members[_0x37f6e4[_0x0e63('0x15')]])){members[_0x37f6e4[_0x0e63('0x15')]][_0x0e63('0x1f')]=utils[_0x0e63('0x1d')]();members[_0x37f6e4['device']][_0x0e63('0x20')]=utils[_0x0e63('0x21')](members[_0x37f6e4[_0x0e63('0x15')]][_0x0e63('0x1f')],members[_0x37f6e4[_0x0e63('0x15')]][_0x0e63('0x22')]);if(members[_0x37f6e4[_0x0e63('0x15')]][_0x0e63('0x6')]){writeDB(members[_0x37f6e4[_0x0e63('0x15')]]);}}break;default:break;}}catch(_0x3b9fb6){utils[_0x0e63('0x23')](util['format']('[%s][members][devicestatechange]',members[_0x37f6e4['device']]?members[_0x37f6e4[_0x0e63('0x15')]][_0x0e63('0x6')]:_0x37f6e4[_0x0e63('0x15')]),_0x3b9fb6);}};exports[_0x0e63('0x24')]=function(_0x2ea651){try{if(!_[_0x0e63('0x1e')](members[_0x2ea651[_0x0e63('0xb')]])){utils[_0x0e63('0x14')](util[_0x0e63('0x4')](_0x0e63('0x25'),_0x2ea651[_0x0e63('0x6')]),_0x2ea651);utils[_0x0e63('0x16')](util[_0x0e63('0x4')](_0x0e63('0x26'),_0x2ea651[_0x0e63('0x6')],_0x2ea651[_0x0e63('0xb')],_0x2ea651[_0x0e63('0x27')]));members[_0x2ea651['interface']]=_[_0x0e63('0x28')](members[_0x2ea651[_0x0e63('0xb')]],{'data4':_0x2ea651['queue'],'uniqueid':_0x2ea651[_0x0e63('0x6')]});}}catch(_0x1a2bb9){utils[_0x0e63('0x23')](util[_0x0e63('0x4')]('[%s][members][agentcomplete]',_0x2ea651[_0x0e63('0x6')]),_0x1a2bb9);}};exports[_0x0e63('0x29')]=function(_0x445e14){try{utils[_0x0e63('0x14')](util[_0x0e63('0x4')](_0x0e63('0x2a'),_0x445e14['uniqueid']),_0x445e14);if(_0x445e14[_0x0e63('0x7')]){var _0x258bd0=_0x445e14[_0x0e63('0x7')][_0x0e63('0x2b')]('-')[0x0];if(!_[_0x0e63('0x1e')](members[_0x258bd0])){members[_0x258bd0]=_[_0x0e63('0x28')](members[_0x258bd0],{'data1':members[_0x258bd0]['data1']||_0x445e14[_0x0e63('0xa')],'data2':members[_0x258bd0][_0x0e63('0x8')]||_0x445e14[_0x0e63('0x2c')],'data3':members[_0x258bd0][_0x0e63('0x2d')]||_0x445e14[_0x0e63('0x2e')],'uniqueid':members[_0x258bd0][_0x0e63('0x6')]||_0x445e14['uniqueid']});utils[_0x0e63('0x16')](util['format'](_0x0e63('0x2f'),_0x445e14[_0x0e63('0x6')],members[_0x258bd0][_0x0e63('0x30')],members[_0x258bd0][_0x0e63('0x8')],members[_0x258bd0][_0x0e63('0x2d')]));if(members[_0x258bd0]['exitAt']){writeDB(members[_0x258bd0]);}}}if(_0x445e14['destinationchannel']){var _0x5e9f0f=_0x445e14[_0x0e63('0x31')][_0x0e63('0x2b')]('-')[0x0];if(!_[_0x0e63('0x1e')](members[_0x5e9f0f])){members[_0x5e9f0f]=_[_0x0e63('0x28')](members[_0x5e9f0f],{'data1':members[_0x5e9f0f][_0x0e63('0x30')]||_0x445e14['type'],'data2':members[_0x5e9f0f]['data2']||_0x445e14[_0x0e63('0x2c')],'data3':members[_0x5e9f0f]['data3']||_0x445e14[_0x0e63('0x2e')],'uniqueid':members[_0x5e9f0f]['uniqueid']||_0x445e14[_0x0e63('0x6')]});utils[_0x0e63('0x16')](util['format'](_0x0e63('0x2f'),_0x445e14[_0x0e63('0x6')],members[_0x5e9f0f][_0x0e63('0x30')],members[_0x5e9f0f][_0x0e63('0x8')],members[_0x5e9f0f][_0x0e63('0x2d')]));if(members[_0x5e9f0f][_0x0e63('0x1f')]){writeDB(members[_0x5e9f0f]);}}}}catch(_0x2438c9){utils[_0x0e63('0x23')](util[_0x0e63('0x4')]('[%s][members][cdr]',_0x445e14['uniqueid']),_0x2438c9);}};
\ No newline at end of file
index 3167127..05494b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa539=['queue','lastAssignedTo','calleridnum','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup','isNil','[%s][queues][hangup]','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','name','transfereduniqueid','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','queuestatus','value','toUpperCase','queuecallerabandon','queuecallerabandonAt','queuecallerexit','variable','queueposition','queuecallerexitAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','queuecallerleaveAt','holdtime','diffTime','queuecallerjoinAt','count','agentconnect','membername','assigned','accountcode','destaccountcode','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','transfer','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','BLIND','extension','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererlinkedid','ATTENDED','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertype','transferexten','transfertargetlinkedid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','musiconholdstart','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','musiconholdstartAt','[%s][queues][musiconholdstop]','lodash','util','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel'];(function(_0x6e7c9,_0x398ef1){var _0x5bce51=function(_0x124926){while(--_0x124926){_0x6e7c9['push'](_0x6e7c9['shift']());}};_0x5bce51(++_0x398ef1);}(_0xa539,0x18d));var _0x9a53=function(_0x2a42d3,_0x55cd98){_0x2a42d3=_0x2a42d3-0x0;var _0x3a00e1=_0xa539[_0x2a42d3];return _0x3a00e1;};'use strict';var _=require(_0x9a53('0x0'));var util=require(_0x9a53('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x14646e){utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x4'),_0x14646e[_0x9a53('0x5')],_0x14646e[_0x9a53('0x6')],_0x14646e[_0x9a53('0x7')],_0x14646e[_0x9a53('0x8')],_0x14646e[_0x9a53('0x9')],_0x14646e['accountcode'],_0x14646e[_0x9a53('0xa')]));if(_0x14646e[_0x9a53('0x7')]){utils[_0x9a53('0xb')](_0x14646e[_0x9a53('0x7')])[_0x9a53('0xc')](function(_0x444a9d){if(_0x444a9d){_0x14646e['type']=_0x444a9d[_0x9a53('0xd')];}utils[_0x9a53('0xe')](_0x9a53('0xf'),_0x14646e);});}else{utils[_0x9a53('0xe')](_0x9a53('0xf'),_0x14646e);}if(_0x14646e['transfereduniqueid']){delete queues[_0x14646e['transfereduniqueid']];}else{delete queues[_0x14646e['uniqueid']];}}exports[_0x9a53('0x10')]=function(_0x3f23c3){try{utils[_0x9a53('0x11')](util['format'](_0x9a53('0x12'),_0x3f23c3[_0x9a53('0x5')]),_0x3f23c3);utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x13'),_0x3f23c3[_0x9a53('0x5')],_0x3f23c3[_0x9a53('0x7')],_0x3f23c3[_0x9a53('0x14')]));queues[_0x3f23c3[_0x9a53('0x5')]]=_[_0x9a53('0x15')](_0x3f23c3,{'originalposition':_0x3f23c3[_0x9a53('0x14')],'queuecallerjoinAt':utils[_0x9a53('0x16')](),'mohtime':0x0});}catch(_0x1e4a5a){utils[_0x9a53('0x17')](util[_0x9a53('0x3')](_0x9a53('0x12'),_0x3f23c3[_0x9a53('0x5')]),_0x1e4a5a);}};exports[_0x9a53('0x18')]=function(_0x144b33){try{if(!_[_0x9a53('0x19')](queues[_0x144b33[_0x9a53('0x5')]])){utils[_0x9a53('0x11')](util[_0x9a53('0x3')](_0x9a53('0x1a'),_0x144b33[_0x9a53('0x5')]),_0x144b33);if(queues[_0x144b33[_0x9a53('0x5')]]['queuecallerleaveAt']){if(!queues[_0x144b33['uniqueid']]['queuecallerabandon']&&!queues[_0x144b33[_0x9a53('0x5')]]['queuecallerexit']){queues[_0x144b33[_0x9a53('0x5')]][_0x9a53('0x1b')]=!![];queues[_0x144b33[_0x9a53('0x5')]][_0x9a53('0x1c')]=utils[_0x9a53('0x16')]();queues[_0x144b33[_0x9a53('0x5')]]['queuecallerexitreason']=_0x9a53('0x1d');}utils[_0x9a53('0x2')](util[_0x9a53('0x3')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x144b33[_0x9a53('0x5')],queues[_0x144b33[_0x9a53('0x5')]][_0x9a53('0x1e')],queues[_0x144b33[_0x9a53('0x5')]][_0x9a53('0xa')]));writeDB(queues[_0x144b33[_0x9a53('0x5')]]);}else if(queues[_0x144b33[_0x9a53('0x5')]][_0x9a53('0x1f')]){utils['info'](util[_0x9a53('0x3')](_0x9a53('0x20'),_0x144b33[_0x9a53('0x5')],queues[_0x144b33[_0x9a53('0x5')]][_0x9a53('0x1e')],queues[_0x144b33[_0x9a53('0x5')]][_0x9a53('0x1f')]));queues[queues[_0x144b33['uniqueid']][_0x9a53('0x1f')]]=queues[_0x144b33[_0x9a53('0x5')]];queues[queues[_0x144b33['uniqueid']]['transfereduniqueid']][_0x9a53('0x21')]=0x2;delete queues[_0x144b33[_0x9a53('0x5')]];}}}catch(_0xa07411){utils[_0x9a53('0x17')](util[_0x9a53('0x3')](_0x9a53('0x1a'),_0x144b33['uniqueid']),_0xa07411);}};exports[_0x9a53('0x22')]=function(_0x1a502d){try{utils[_0x9a53('0x11')](util['format'](_0x9a53('0x23'),_0x1a502d[_0x9a53('0x5')]),_0x1a502d);if(!_[_0x9a53('0x19')](_0x1a502d['variable'][_0x9a53('0x24')])&&_0x1a502d[_0x9a53('0x25')][_0x9a53('0x26')]()!=='CONTINUE'){if(!_[_0x9a53('0x19')](queues[_0x1a502d['uniqueid']])){queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x27')]=![];queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x28')]=null;queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x29')]=!![];queues[_0x1a502d[_0x9a53('0x5')]]['queuecallerexitAt']=utils[_0x9a53('0x16')]();queues[_0x1a502d[_0x9a53('0x5')]]['queuecallerexitreason']=_0x1a502d[_0x9a53('0x25')][_0x9a53('0x26')]();utils[_0x9a53('0x2')](util[_0x9a53('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x1a502d['uniqueid'],queues[_0x1a502d[_0x9a53('0x5')]]['name'],_0x1a502d[_0x9a53('0x25')],queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0xa')]));writeDB(queues[_0x1a502d[_0x9a53('0x5')]]);}}else if(!_['isNil'](_0x1a502d[_0x9a53('0x2a')][_0x9a53('0x2b')])){if(!_[_0x9a53('0x19')](queues[_0x1a502d['uniqueid']])&&!queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x27')]){queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x27')]=![];queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x28')]=null;queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x29')]=!![];queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x2c')]=utils[_0x9a53('0x16')]();queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0xa')]=_0x9a53('0x2d');utils['info'](util['format'](_0x9a53('0x2e'),_0x1a502d[_0x9a53('0x5')],queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0x1e')],_0x1a502d[_0x9a53('0x25')],queues[_0x1a502d[_0x9a53('0x5')]][_0x9a53('0xa')]));}}}catch(_0x1f011f){utils['error'](util[_0x9a53('0x3')](_0x9a53('0x23'),_0x1a502d[_0x9a53('0x5')]),_0x1f011f);}};exports['queuecallerabandon']=function(_0x3720e0){try{if(!_['isNil'](queues[_0x3720e0[_0x9a53('0x5')]])){utils[_0x9a53('0x11')](util[_0x9a53('0x3')](_0x9a53('0x2f'),_0x3720e0[_0x9a53('0x5')]),_0x3720e0);queues[_0x3720e0[_0x9a53('0x5')]][_0x9a53('0x29')]=![];queues[_0x3720e0[_0x9a53('0x5')]]['queuecallerexitAt']=null;queues[_0x3720e0[_0x9a53('0x5')]][_0x9a53('0x27')]=!![];queues[_0x3720e0['uniqueid']][_0x9a53('0x28')]=utils[_0x9a53('0x16')]();queues[_0x3720e0[_0x9a53('0x5')]][_0x9a53('0xa')]=_0x9a53('0x30');utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x31'),_0x3720e0[_0x9a53('0x5')],queues[_0x3720e0[_0x9a53('0x5')]]['name'],queues[_0x3720e0[_0x9a53('0x5')]][_0x9a53('0xa')]));}}catch(_0x48a74d){utils[_0x9a53('0x17')](util[_0x9a53('0x3')](_0x9a53('0x2f'),_0x3720e0[_0x9a53('0x5')]),_0x48a74d);}};exports[_0x9a53('0x32')]=function(_0x44657f){try{if(!_[_0x9a53('0x19')](queues[_0x44657f['uniqueid']])){utils['debug'](util[_0x9a53('0x3')](_0x9a53('0x33'),_0x44657f[_0x9a53('0x5')]),_0x44657f);utils[_0x9a53('0x2')](util['format'](_0x9a53('0x34'),_0x44657f[_0x9a53('0x5')],queues[_0x44657f[_0x9a53('0x5')]]['name'],_0x44657f[_0x9a53('0x35')],_0x44657f[_0x9a53('0x36')]));queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x32')]=!![];queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x37')]=utils[_0x9a53('0x16')]();queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x38')]=utils[_0x9a53('0x39')](queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x37')],queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x3a')]);queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x14')]=_0x44657f['position'];queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x3b')]=_0x44657f[_0x9a53('0x3b')];queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x35')]=_0x44657f['connectedlinenum'];queues[_0x44657f[_0x9a53('0x5')]][_0x9a53('0x36')]=_0x44657f['connectedlinename'];}}catch(_0x3f688c){utils[_0x9a53('0x17')](util[_0x9a53('0x3')](_0x9a53('0x33'),_0x44657f['uniqueid']),_0x3f688c);}};exports[_0x9a53('0x3c')]=function(_0x13d02f){try{if(!_['isNil'](queues[_0x13d02f['uniqueid']])){utils[_0x9a53('0x11')](util['format']('[%s][queues][agentconnect]',_0x13d02f[_0x9a53('0x5')]),_0x13d02f);utils[_0x9a53('0x2')](util['format']('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x13d02f[_0x9a53('0x5')],queues[_0x13d02f['uniqueid']]['name'],_0x13d02f[_0x9a53('0x3d')],_0x13d02f['destaccountcode']));queues[_0x13d02f['uniqueid']][_0x9a53('0x27')]=![];queues[_0x13d02f['uniqueid']]['queuecallerabandon']=![];queues[_0x13d02f[_0x9a53('0x5')]][_0x9a53('0x28')]=null;queues[_0x13d02f[_0x9a53('0x5')]][_0x9a53('0x29')]=![];queues[_0x13d02f[_0x9a53('0x5')]][_0x9a53('0xa')]=null;queues[_0x13d02f[_0x9a53('0x5')]][_0x9a53('0x2c')]=null;queues[_0x13d02f[_0x9a53('0x5')]][_0x9a53('0x3e')]=!![];queues[_0x13d02f[_0x9a53('0x5')]][_0x9a53('0x3f')]=_0x13d02f[_0x9a53('0x40')];queues[_0x13d02f[_0x9a53('0x5')]][_0x9a53('0x8')]=_0x13d02f['membername'];}}catch(_0x2cd9ac){utils[_0x9a53('0x17')](util[_0x9a53('0x3')](_0x9a53('0x41'),_0x13d02f[_0x9a53('0x5')]),_0x2cd9ac);}};exports['agentcomplete']=function(_0x2d424){try{if(!_[_0x9a53('0x19')](queues[_0x2d424[_0x9a53('0x5')]])){if(queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x37')]){utils[_0x9a53('0x11')](util['format'](_0x9a53('0x42'),_0x2d424[_0x9a53('0x5')]),_0x2d424);queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x27')]=![];queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x27')]=![];queues[_0x2d424['uniqueid']]['queuecallerabandonAt']=null;queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x29')]=![];queues[_0x2d424[_0x9a53('0x5')]]['queuecallerexitAt']=null;queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x3e')]=!![];queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x8')]=_0x2d424[_0x9a53('0x3d')];queues[_0x2d424[_0x9a53('0x5')]]['queuecallercomplete']=!![];queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x1c')]=utils[_0x9a53('0x16')]();if(_0x2d424['reason']==_0x9a53('0x43')){if(!queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x43')]){queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0xa')]='TRANSFER';}}else{queues[_0x2d424['uniqueid']][_0x9a53('0xa')]=_0x9a53('0x44')+_0x2d424['reason']['toUpperCase']();}utils['info'](util[_0x9a53('0x3')](_0x9a53('0x45'),_0x2d424['uniqueid'],queues[_0x2d424[_0x9a53('0x5')]][_0x9a53('0x1e')],_0x2d424[_0x9a53('0x3d')],queues[_0x2d424[_0x9a53('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x2d424[_0x9a53('0x5')]]);}}}catch(_0x3f60fe){utils[_0x9a53('0x17')](util['format'](_0x9a53('0x42'),_0x2d424[_0x9a53('0x5')]),_0x3f60fe);}};exports[_0x9a53('0x46')]=function(_0x1662ec){try{if(!_[_0x9a53('0x19')](queues[_0x1662ec[_0x9a53('0x47')]])){utils[_0x9a53('0x11')](util[_0x9a53('0x3')]('[%s][queues][blindtransfer]',_0x1662ec[_0x9a53('0x5')]),_0x1662ec);queues[_0x1662ec[_0x9a53('0x47')]][_0x9a53('0x43')]=!![];queues[_0x1662ec[_0x9a53('0x47')]]['transfertype']=_0x9a53('0x48');queues[_0x1662ec[_0x9a53('0x47')]]['transferexten']=_0x1662ec[_0x9a53('0x49')];queues[_0x1662ec['transfereeuniqueid']]['transferuniqueid']=_0x1662ec[_0x9a53('0x47')];queues[_0x1662ec[_0x9a53('0x47')]][_0x9a53('0xa')]='BLINDTRANSFER';utils[_0x9a53('0x2')](util[_0x9a53('0x3')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x1662ec[_0x9a53('0x5')],queues[_0x1662ec[_0x9a53('0x47')]][_0x9a53('0x1e')],_0x1662ec[_0x9a53('0x47')],_0x1662ec[_0x9a53('0x49')]));}}catch(_0x5de9a7){utils[_0x9a53('0x17')](util[_0x9a53('0x3')]('[%s][queues][blindtransfer]',_0x1662ec[_0x9a53('0x5')]),_0x5de9a7);}};exports['attendedtransfer']=function(_0x58a369){try{utils[_0x9a53('0x11')](util[_0x9a53('0x3')]('[%s][queues][attendedtransfer]',_0x58a369['origtransfereruniqueid']),_0x58a369);if(_0x58a369[_0x9a53('0x4a')]==_0x58a369[_0x9a53('0x4b')]){if(!_[_0x9a53('0x19')](queues[_0x58a369['secondtransfererlinkedid']])){utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x4c'),_0x58a369[_0x9a53('0x4a')],queues[_0x58a369[_0x9a53('0x4d')]][_0x9a53('0x1e')],_0x58a369['origtransfererexten']));queues[_0x58a369[_0x9a53('0x4d')]]['transfer']=!![];queues[_0x58a369['secondtransfererlinkedid']]['transfertype']=_0x9a53('0x4e');queues[_0x58a369[_0x9a53('0x4d')]]['transferexten']=_0x58a369['origtransfererexten'];queues[_0x58a369[_0x9a53('0x4d')]][_0x9a53('0x4f')]=_0x58a369[_0x9a53('0x4a')];queues[_0x58a369[_0x9a53('0x4d')]][_0x9a53('0xa')]=_0x9a53('0x50');}if(!_[_0x9a53('0x19')](queues[_0x58a369[_0x9a53('0x4b')]])){if(_0x58a369['transfereelinkedid']&&queues[_0x58a369[_0x9a53('0x51')]]){queues[_0x58a369[_0x9a53('0x51')]][_0x9a53('0x21')]=0x1;queues[_0x58a369['transfereeuniqueid']]=_[_0x9a53('0x52')](queues[_0x58a369[_0x9a53('0x51')]]);queues[_0x58a369[_0x9a53('0x47')]][_0x9a53('0x1f')]=_0x58a369[_0x9a53('0x53')];queues[_0x58a369[_0x9a53('0x47')]][_0x9a53('0x21')]=0x2;queues[_0x58a369[_0x9a53('0x47')]][_0x9a53('0x9')]=queues[_0x58a369[_0x9a53('0x4d')]]['calleridnum'];queues[_0x58a369[_0x9a53('0x47')]][_0x9a53('0x54')]=queues[_0x58a369[_0x9a53('0x4d')]][_0x9a53('0x54')];queues[_0x58a369['transfereeuniqueid']][_0x9a53('0x3a')]=utils[_0x9a53('0x16')]();queues[_0x58a369[_0x9a53('0x47')]][_0x9a53('0x37')]=utils[_0x9a53('0x16')]();queues[_0x58a369[_0x9a53('0x47')]][_0x9a53('0x38')]=0x0;queues[_0x58a369[_0x9a53('0x47')]]['mohtime']=0x0;utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x55'),_0x58a369[_0x9a53('0x4a')],queues[_0x58a369[_0x9a53('0x47')]][_0x9a53('0x1e')],queues[_0x58a369['transfereeuniqueid']][_0x9a53('0x9')],queues[_0x58a369['transfereeuniqueid']][_0x9a53('0x54')]));}else{utils[_0x9a53('0x2')](util[_0x9a53('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x58a369['origtransfereruniqueid'],queues[_0x58a369[_0x9a53('0x4b')]][_0x9a53('0x1e')],_0x58a369['secondtransfererlinkedid']));queues[_0x58a369[_0x9a53('0x4b')]][_0x9a53('0x1f')]=_0x58a369[_0x9a53('0x4d')];}}}else if(_0x58a369[_0x9a53('0x56')]==_0x58a369[_0x9a53('0x4d')]){if(!_[_0x9a53('0x19')](queues[_0x58a369[_0x9a53('0x4b')]])){utils['info'](util['format'](_0x9a53('0x57'),_0x58a369[_0x9a53('0x4a')],queues[_0x58a369[_0x9a53('0x4b')]][_0x9a53('0x1e')],_0x58a369[_0x9a53('0x56')],_0x58a369[_0x9a53('0x58')]));queues[_0x58a369[_0x9a53('0x4b')]]['transfer']=!![];queues[_0x58a369[_0x9a53('0x4b')]][_0x9a53('0x59')]='ATTENDED';queues[_0x58a369[_0x9a53('0x4b')]][_0x9a53('0x5a')]=_0x58a369[_0x9a53('0x58')];queues[_0x58a369[_0x9a53('0x4b')]][_0x9a53('0x4f')]=_0x58a369[_0x9a53('0x56')];queues[_0x58a369[_0x9a53('0x4b')]]['queuecallerexitreason']=_0x9a53('0x50');}if(!_[_0x9a53('0x19')](queues[_0x58a369[_0x9a53('0x4d')]])){if(_0x58a369['transfertargetlinkedid']&&queues[_0x58a369[_0x9a53('0x5b')]]){queues[_0x58a369[_0x9a53('0x5b')]][_0x9a53('0x21')]=0x1;queues[_0x58a369['transfertargetuniqueid']]=_[_0x9a53('0x52')](queues[_0x58a369[_0x9a53('0x5b')]]);queues[_0x58a369[_0x9a53('0x53')]]['transfereduniqueid']=_0x58a369[_0x9a53('0x53')];queues[_0x58a369[_0x9a53('0x53')]][_0x9a53('0x21')]=0x2;queues[_0x58a369[_0x9a53('0x53')]][_0x9a53('0x9')]=queues[_0x58a369[_0x9a53('0x4b')]][_0x9a53('0x9')];queues[_0x58a369[_0x9a53('0x53')]][_0x9a53('0x54')]=queues[_0x58a369['origtransfererlinkedid']][_0x9a53('0x54')];queues[_0x58a369['transfertargetuniqueid']][_0x9a53('0x3a')]=utils[_0x9a53('0x16')]();queues[_0x58a369[_0x9a53('0x53')]][_0x9a53('0x37')]=utils[_0x9a53('0x16')]();queues[_0x58a369[_0x9a53('0x53')]][_0x9a53('0x38')]=0x0;queues[_0x58a369[_0x9a53('0x53')]][_0x9a53('0x5c')]=0x0;utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x5d'),_0x58a369[_0x9a53('0x4a')],queues[_0x58a369[_0x9a53('0x53')]]['name'],queues[_0x58a369['transfertargetuniqueid']][_0x9a53('0x1f')],queues[_0x58a369[_0x9a53('0x53')]]['calleridnum'],queues[_0x58a369[_0x9a53('0x53')]][_0x9a53('0x54')]));}else{utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x5e'),_0x58a369[_0x9a53('0x4a')],queues[_0x58a369[_0x9a53('0x4d')]][_0x9a53('0x1e')],_0x58a369[_0x9a53('0x4b')]));queues[_0x58a369[_0x9a53('0x4d')]]['transfereduniqueid']=_0x58a369[_0x9a53('0x4b')];}}}}catch(_0x3b1d6d){utils[_0x9a53('0x17')](util[_0x9a53('0x3')]('[%s][queues][attendedtransfer]',_0x58a369[_0x9a53('0x4a')]),_0x3b1d6d);}};exports[_0x9a53('0x5f')]=function(_0x1fd41b){try{if(!_[_0x9a53('0x19')](queues[_0x1fd41b['uniqueid']])){utils[_0x9a53('0x11')](util['format'](_0x9a53('0x60'),_0x1fd41b['uniqueid']),_0x1fd41b);queues[_0x1fd41b[_0x9a53('0x5')]]['musiconholdstartAt']=utils[_0x9a53('0x16')]();utils[_0x9a53('0x2')](util[_0x9a53('0x3')](_0x9a53('0x61'),_0x1fd41b[_0x9a53('0x5')],queues[_0x1fd41b['uniqueid']][_0x9a53('0x1e')],queues[_0x1fd41b[_0x9a53('0x5')]]['musiconholdstartAt']));}}catch(_0x377740){utils[_0x9a53('0x17')](util['format'](_0x9a53('0x60'),_0x1fd41b[_0x9a53('0x5')]),_0x377740);}};exports[_0x9a53('0x62')]=function(_0x36cd15){try{if(!_[_0x9a53('0x19')](queues[_0x36cd15[_0x9a53('0x5')]])){if(!_['isNil'](queues[_0x36cd15[_0x9a53('0x5')]][_0x9a53('0x63')])){utils[_0x9a53('0x11')](util[_0x9a53('0x3')]('[%s][queues][musiconholdstop]',_0x36cd15[_0x9a53('0x5')]),_0x36cd15);queues[_0x36cd15[_0x9a53('0x5')]][_0x9a53('0x5c')]+=utils['diffTime'](utils[_0x9a53('0x16')](),queues[_0x36cd15[_0x9a53('0x5')]][_0x9a53('0x63')]);utils[_0x9a53('0x2')](util[_0x9a53('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x36cd15[_0x9a53('0x5')],queues[_0x36cd15['uniqueid']][_0x9a53('0x1e')],queues[_0x36cd15[_0x9a53('0x5')]][_0x9a53('0x5c')]));delete queues[_0x36cd15['uniqueid']][_0x9a53('0x63')];}}}catch(_0x56c4c3){utils['error'](util[_0x9a53('0x3')](_0x9a53('0x64'),_0x36cd15[_0x9a53('0x5')]),_0x56c4c3);}};
\ No newline at end of file
+var _0x0f4d=['transfer','TRANSFER','COMPLETEDBY','toUpperCase','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','secondtransfererlinkedid','origtransfererexten','ATTENDED','origtransfererlinkedid','transfereelinkedid','clone','transfertargetuniqueid','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','ATTENDEDTRANSFER','transfertargetlinkedid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','CreateVoiceQueueReport','request','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup','isNil','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercompleteAt','name','transfereduniqueid','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','[%s][queues][hangup]','varset','[%s][queues][varset]','variable','value','queuecallerexitAt','queueposition','queuecallerabandonAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','[%s][queues][queuecallerleave]','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','agentcomplete','assigned','queuecallercomplete','reason'];(function(_0x39eaa0,_0x2cea62){var _0x2402c5=function(_0x3c308a){while(--_0x3c308a){_0x39eaa0['push'](_0x39eaa0['shift']());}};_0x2402c5(++_0x2cea62);}(_0x0f4d,0x1c4));var _0xd0f4=function(_0x4c6aa8,_0x47e06a){_0x4c6aa8=_0x4c6aa8-0x0;var _0x72ed77=_0x0f4d[_0x4c6aa8];return _0x72ed77;};'use strict';var _=require('lodash');var util=require(_0xd0f4('0x0'));var utils=require(_0xd0f4('0x1'));var queues={};function writeDB(_0x1f0a6f){utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x4'),_0x1f0a6f[_0xd0f4('0x5')],_0x1f0a6f[_0xd0f4('0x6')],_0x1f0a6f[_0xd0f4('0x7')],_0x1f0a6f[_0xd0f4('0x8')],_0x1f0a6f[_0xd0f4('0x9')],_0x1f0a6f[_0xd0f4('0xa')],_0x1f0a6f[_0xd0f4('0xb')]));if(_0x1f0a6f[_0xd0f4('0x7')]){utils[_0xd0f4('0xc')](_0x1f0a6f[_0xd0f4('0x7')])[_0xd0f4('0xd')](function(_0x3460d9){if(_0x3460d9){_0x1f0a6f[_0xd0f4('0xe')]=_0x3460d9[_0xd0f4('0xe')];}utils['request'](_0xd0f4('0xf'),_0x1f0a6f);});}else{utils[_0xd0f4('0x10')](_0xd0f4('0xf'),_0x1f0a6f);}if(_0x1f0a6f['transfereduniqueid']){delete queues[_0x1f0a6f['transfereduniqueid']];}else{delete queues[_0x1f0a6f['uniqueid']];}}exports['queuecallerjoin']=function(_0x5586fc){try{utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')](_0xd0f4('0x12'),_0x5586fc[_0xd0f4('0x5')]),_0x5586fc);utils['info'](util[_0xd0f4('0x3')](_0xd0f4('0x13'),_0x5586fc[_0xd0f4('0x5')],_0x5586fc['queue'],_0x5586fc[_0xd0f4('0x14')]));queues[_0x5586fc[_0xd0f4('0x5')]]=_[_0xd0f4('0x15')](_0x5586fc,{'originalposition':_0x5586fc[_0xd0f4('0x14')],'queuecallerjoinAt':utils[_0xd0f4('0x16')](),'mohtime':0x0});}catch(_0x3d7c99){utils[_0xd0f4('0x17')](util[_0xd0f4('0x3')](_0xd0f4('0x12'),_0x5586fc[_0xd0f4('0x5')]),_0x3d7c99);}};exports[_0xd0f4('0x18')]=function(_0x1b7f07){try{if(!_[_0xd0f4('0x19')](queues[_0x1b7f07['uniqueid']])){utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')]('[%s][queues][hangup]',_0x1b7f07[_0xd0f4('0x5')]),_0x1b7f07);if(queues[_0x1b7f07[_0xd0f4('0x5')]][_0xd0f4('0x1a')]){if(!queues[_0x1b7f07['uniqueid']][_0xd0f4('0x1b')]&&!queues[_0x1b7f07[_0xd0f4('0x5')]][_0xd0f4('0x1c')]){queues[_0x1b7f07['uniqueid']]['queuecallercomplete']=!![];queues[_0x1b7f07[_0xd0f4('0x5')]][_0xd0f4('0x1d')]=utils[_0xd0f4('0x16')]();queues[_0x1b7f07[_0xd0f4('0x5')]][_0xd0f4('0xb')]='COMPLETEDBYAGENT';}utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x1b7f07[_0xd0f4('0x5')],queues[_0x1b7f07[_0xd0f4('0x5')]][_0xd0f4('0x1e')],queues[_0x1b7f07['uniqueid']][_0xd0f4('0xb')]));writeDB(queues[_0x1b7f07[_0xd0f4('0x5')]]);}else if(queues[_0x1b7f07['uniqueid']][_0xd0f4('0x1f')]){utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x20'),_0x1b7f07['uniqueid'],queues[_0x1b7f07['uniqueid']][_0xd0f4('0x1e')],queues[_0x1b7f07[_0xd0f4('0x5')]][_0xd0f4('0x1f')]));queues[queues[_0x1b7f07['uniqueid']]['transfereduniqueid']]=queues[_0x1b7f07[_0xd0f4('0x5')]];queues[queues[_0x1b7f07[_0xd0f4('0x5')]][_0xd0f4('0x1f')]][_0xd0f4('0x21')]=0x2;delete queues[_0x1b7f07[_0xd0f4('0x5')]];}}}catch(_0x116f59){utils[_0xd0f4('0x17')](util[_0xd0f4('0x3')](_0xd0f4('0x22'),_0x1b7f07['uniqueid']),_0x116f59);}};exports[_0xd0f4('0x23')]=function(_0x555b83){try{utils['debug'](util[_0xd0f4('0x3')](_0xd0f4('0x24'),_0x555b83[_0xd0f4('0x5')]),_0x555b83);if(!_[_0xd0f4('0x19')](_0x555b83[_0xd0f4('0x25')]['queuestatus'])&&_0x555b83[_0xd0f4('0x26')]['toUpperCase']()!=='CONTINUE'){if(!_[_0xd0f4('0x19')](queues[_0x555b83[_0xd0f4('0x5')]])){queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0x1b')]=![];queues[_0x555b83[_0xd0f4('0x5')]]['queuecallerabandonAt']=null;queues[_0x555b83[_0xd0f4('0x5')]]['queuecallerexit']=!![];queues[_0x555b83['uniqueid']][_0xd0f4('0x27')]=utils[_0xd0f4('0x16')]();queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0xb')]=_0x555b83[_0xd0f4('0x26')]['toUpperCase']();utils['info'](util[_0xd0f4('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x555b83['uniqueid'],queues[_0x555b83[_0xd0f4('0x5')]]['name'],_0x555b83[_0xd0f4('0x26')],queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0xb')]));writeDB(queues[_0x555b83['uniqueid']]);}}else if(!_[_0xd0f4('0x19')](_0x555b83['variable'][_0xd0f4('0x28')])){if(!_[_0xd0f4('0x19')](queues[_0x555b83[_0xd0f4('0x5')]])&&!queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0x1b')]){queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0x1b')]=![];queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0x29')]=null;queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0x1c')]=!![];queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0x27')]=utils[_0xd0f4('0x16')]();queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0xb')]=_0xd0f4('0x2a');utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x2b'),_0x555b83[_0xd0f4('0x5')],queues[_0x555b83[_0xd0f4('0x5')]][_0xd0f4('0x1e')],_0x555b83[_0xd0f4('0x26')],queues[_0x555b83[_0xd0f4('0x5')]]['queuecallerexitreason']));}}}catch(_0x75108c){utils[_0xd0f4('0x17')](util[_0xd0f4('0x3')]('[%s][queues][varset]',_0x555b83[_0xd0f4('0x5')]),_0x75108c);}};exports[_0xd0f4('0x1b')]=function(_0x19fd86){try{if(!_[_0xd0f4('0x19')](queues[_0x19fd86['uniqueid']])){utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')](_0xd0f4('0x2c'),_0x19fd86['uniqueid']),_0x19fd86);queues[_0x19fd86[_0xd0f4('0x5')]][_0xd0f4('0x1c')]=![];queues[_0x19fd86[_0xd0f4('0x5')]]['queuecallerexitAt']=null;queues[_0x19fd86['uniqueid']]['queuecallerabandon']=!![];queues[_0x19fd86[_0xd0f4('0x5')]][_0xd0f4('0x29')]=utils['now']();queues[_0x19fd86['uniqueid']]['queuecallerexitreason']=_0xd0f4('0x2d');utils['info'](util[_0xd0f4('0x3')](_0xd0f4('0x2e'),_0x19fd86[_0xd0f4('0x5')],queues[_0x19fd86[_0xd0f4('0x5')]][_0xd0f4('0x1e')],queues[_0x19fd86['uniqueid']][_0xd0f4('0xb')]));}}catch(_0xdb0aca){utils['error'](util[_0xd0f4('0x3')](_0xd0f4('0x2c'),_0x19fd86[_0xd0f4('0x5')]),_0xdb0aca);}};exports[_0xd0f4('0x2f')]=function(_0x84e9db){try{if(!_[_0xd0f4('0x19')](queues[_0x84e9db['uniqueid']])){utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')]('[%s][queues][queuecallerleave]',_0x84e9db[_0xd0f4('0x5')]),_0x84e9db);utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x30'),_0x84e9db[_0xd0f4('0x5')],queues[_0x84e9db[_0xd0f4('0x5')]][_0xd0f4('0x1e')],_0x84e9db[_0xd0f4('0x31')],_0x84e9db[_0xd0f4('0x32')]));queues[_0x84e9db[_0xd0f4('0x5')]]['queuecallerleave']=!![];queues[_0x84e9db[_0xd0f4('0x5')]][_0xd0f4('0x1a')]=utils[_0xd0f4('0x16')]();queues[_0x84e9db['uniqueid']][_0xd0f4('0x33')]=utils[_0xd0f4('0x34')](queues[_0x84e9db[_0xd0f4('0x5')]][_0xd0f4('0x1a')],queues[_0x84e9db[_0xd0f4('0x5')]][_0xd0f4('0x35')]);queues[_0x84e9db[_0xd0f4('0x5')]][_0xd0f4('0x14')]=_0x84e9db['position'];queues[_0x84e9db[_0xd0f4('0x5')]][_0xd0f4('0x36')]=_0x84e9db[_0xd0f4('0x36')];queues[_0x84e9db['uniqueid']][_0xd0f4('0x31')]=_0x84e9db[_0xd0f4('0x31')];queues[_0x84e9db[_0xd0f4('0x5')]]['connectedlinename']=_0x84e9db['connectedlinename'];}}catch(_0x223ffa){utils[_0xd0f4('0x17')](util['format'](_0xd0f4('0x37'),_0x84e9db[_0xd0f4('0x5')]),_0x223ffa);}};exports['agentconnect']=function(_0x3c4a29){try{if(!_[_0xd0f4('0x19')](queues[_0x3c4a29['uniqueid']])){utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')](_0xd0f4('0x38'),_0x3c4a29[_0xd0f4('0x5')]),_0x3c4a29);utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x39'),_0x3c4a29[_0xd0f4('0x5')],queues[_0x3c4a29['uniqueid']][_0xd0f4('0x1e')],_0x3c4a29['membername'],_0x3c4a29['destaccountcode']));queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0x1b')]=![];queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0x1b')]=![];queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0x29')]=null;queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0x1c')]=![];queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0xb')]=null;queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0x27')]=null;queues[_0x3c4a29['uniqueid']]['assigned']=!![];queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0xa')]=_0x3c4a29['destaccountcode'];queues[_0x3c4a29[_0xd0f4('0x5')]][_0xd0f4('0x8')]=_0x3c4a29[_0xd0f4('0x3a')];}}catch(_0xdc69bb){utils[_0xd0f4('0x17')](util[_0xd0f4('0x3')](_0xd0f4('0x38'),_0x3c4a29['uniqueid']),_0xdc69bb);}};exports[_0xd0f4('0x3b')]=function(_0x4a4268){try{if(!_['isNil'](queues[_0x4a4268[_0xd0f4('0x5')]])){if(queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x1a')]){utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')]('[%s][queues][agentcomplete]',_0x4a4268[_0xd0f4('0x5')]),_0x4a4268);queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x1b')]=![];queues[_0x4a4268['uniqueid']][_0xd0f4('0x1b')]=![];queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x29')]=null;queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x1c')]=![];queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x27')]=null;queues[_0x4a4268['uniqueid']][_0xd0f4('0x3c')]=!![];queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x8')]=_0x4a4268[_0xd0f4('0x3a')];queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x3d')]=!![];queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x1d')]=utils[_0xd0f4('0x16')]();if(_0x4a4268[_0xd0f4('0x3e')]=='transfer'){if(!queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0x3f')]){queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0xb')]=_0xd0f4('0x40');}}else{queues[_0x4a4268[_0xd0f4('0x5')]][_0xd0f4('0xb')]=_0xd0f4('0x41')+_0x4a4268[_0xd0f4('0x3e')][_0xd0f4('0x42')]();}utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x43'),_0x4a4268[_0xd0f4('0x5')],queues[_0x4a4268[_0xd0f4('0x5')]]['name'],_0x4a4268[_0xd0f4('0x3a')],queues[_0x4a4268['uniqueid']][_0xd0f4('0xb')]));writeDB(queues[_0x4a4268[_0xd0f4('0x5')]]);}}}catch(_0x2537ee){utils[_0xd0f4('0x17')](util[_0xd0f4('0x3')](_0xd0f4('0x44'),_0x4a4268['uniqueid']),_0x2537ee);}};exports[_0xd0f4('0x45')]=function(_0x16f2e7){try{if(!_[_0xd0f4('0x19')](queues[_0x16f2e7[_0xd0f4('0x46')]])){utils[_0xd0f4('0x11')](util['format'](_0xd0f4('0x47'),_0x16f2e7['uniqueid']),_0x16f2e7);queues[_0x16f2e7[_0xd0f4('0x46')]]['transfer']=!![];queues[_0x16f2e7[_0xd0f4('0x46')]][_0xd0f4('0x48')]=_0xd0f4('0x49');queues[_0x16f2e7[_0xd0f4('0x46')]][_0xd0f4('0x4a')]=_0x16f2e7[_0xd0f4('0x4b')];queues[_0x16f2e7[_0xd0f4('0x46')]][_0xd0f4('0x4c')]=_0x16f2e7['transfereeuniqueid'];queues[_0x16f2e7['transfereeuniqueid']][_0xd0f4('0xb')]=_0xd0f4('0x4d');utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x4e'),_0x16f2e7['uniqueid'],queues[_0x16f2e7[_0xd0f4('0x46')]][_0xd0f4('0x1e')],_0x16f2e7[_0xd0f4('0x46')],_0x16f2e7[_0xd0f4('0x4b')]));}}catch(_0x2aefb3){utils[_0xd0f4('0x17')](util['format']('[%s][queues][blindtransfer]',_0x16f2e7[_0xd0f4('0x5')]),_0x2aefb3);}};exports[_0xd0f4('0x4f')]=function(_0x5824f6){try{utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')](_0xd0f4('0x50'),_0x5824f6[_0xd0f4('0x51')]),_0x5824f6);if(_0x5824f6[_0xd0f4('0x51')]==_0x5824f6['origtransfererlinkedid']){if(!_[_0xd0f4('0x19')](queues[_0x5824f6[_0xd0f4('0x52')]])){utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5824f6[_0xd0f4('0x51')],queues[_0x5824f6[_0xd0f4('0x52')]][_0xd0f4('0x1e')],_0x5824f6[_0xd0f4('0x53')]));queues[_0x5824f6[_0xd0f4('0x52')]][_0xd0f4('0x3f')]=!![];queues[_0x5824f6[_0xd0f4('0x52')]][_0xd0f4('0x48')]=_0xd0f4('0x54');queues[_0x5824f6['secondtransfererlinkedid']]['transferexten']=_0x5824f6[_0xd0f4('0x53')];queues[_0x5824f6['secondtransfererlinkedid']]['transferuniqueid']=_0x5824f6[_0xd0f4('0x51')];queues[_0x5824f6[_0xd0f4('0x52')]][_0xd0f4('0xb')]='ATTENDEDTRANSFER';}if(!_[_0xd0f4('0x19')](queues[_0x5824f6[_0xd0f4('0x55')]])){if(_0x5824f6[_0xd0f4('0x56')]&&queues[_0x5824f6[_0xd0f4('0x56')]]){queues[_0x5824f6[_0xd0f4('0x56')]][_0xd0f4('0x21')]=0x1;queues[_0x5824f6[_0xd0f4('0x46')]]=_[_0xd0f4('0x57')](queues[_0x5824f6[_0xd0f4('0x56')]]);queues[_0x5824f6['transfereeuniqueid']][_0xd0f4('0x1f')]=_0x5824f6[_0xd0f4('0x58')];queues[_0x5824f6[_0xd0f4('0x46')]][_0xd0f4('0x21')]=0x2;queues[_0x5824f6['transfereeuniqueid']][_0xd0f4('0x9')]=queues[_0x5824f6[_0xd0f4('0x52')]][_0xd0f4('0x9')];queues[_0x5824f6[_0xd0f4('0x46')]]['calleridname']=queues[_0x5824f6['secondtransfererlinkedid']][_0xd0f4('0x59')];queues[_0x5824f6['transfereeuniqueid']][_0xd0f4('0x35')]=utils[_0xd0f4('0x16')]();queues[_0x5824f6[_0xd0f4('0x46')]][_0xd0f4('0x1a')]=utils[_0xd0f4('0x16')]();queues[_0x5824f6[_0xd0f4('0x46')]]['holdtime']=0x0;queues[_0x5824f6['transfereeuniqueid']]['mohtime']=0x0;utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x5a'),_0x5824f6[_0xd0f4('0x51')],queues[_0x5824f6[_0xd0f4('0x46')]][_0xd0f4('0x1e')],queues[_0x5824f6[_0xd0f4('0x46')]][_0xd0f4('0x9')],queues[_0x5824f6['transfereeuniqueid']][_0xd0f4('0x59')]));}else{utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x5b'),_0x5824f6['origtransfereruniqueid'],queues[_0x5824f6[_0xd0f4('0x55')]][_0xd0f4('0x1e')],_0x5824f6['secondtransfererlinkedid']));queues[_0x5824f6[_0xd0f4('0x55')]][_0xd0f4('0x1f')]=_0x5824f6[_0xd0f4('0x52')];}}}else if(_0x5824f6['secondtransfereruniqueid']==_0x5824f6[_0xd0f4('0x52')]){if(!_['isNil'](queues[_0x5824f6[_0xd0f4('0x55')]])){utils['info'](util[_0xd0f4('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5824f6['origtransfereruniqueid'],queues[_0x5824f6[_0xd0f4('0x55')]][_0xd0f4('0x1e')],_0x5824f6['secondtransfereruniqueid'],_0x5824f6['secondtransfererexten']));queues[_0x5824f6['origtransfererlinkedid']][_0xd0f4('0x3f')]=!![];queues[_0x5824f6[_0xd0f4('0x55')]][_0xd0f4('0x48')]=_0xd0f4('0x54');queues[_0x5824f6[_0xd0f4('0x55')]][_0xd0f4('0x4a')]=_0x5824f6['secondtransfererexten'];queues[_0x5824f6[_0xd0f4('0x55')]][_0xd0f4('0x4c')]=_0x5824f6['secondtransfereruniqueid'];queues[_0x5824f6[_0xd0f4('0x55')]]['queuecallerexitreason']=_0xd0f4('0x5c');}if(!_[_0xd0f4('0x19')](queues[_0x5824f6['secondtransfererlinkedid']])){if(_0x5824f6[_0xd0f4('0x5d')]&&queues[_0x5824f6[_0xd0f4('0x5d')]]){queues[_0x5824f6['transfertargetlinkedid']][_0xd0f4('0x21')]=0x1;queues[_0x5824f6[_0xd0f4('0x58')]]=_[_0xd0f4('0x57')](queues[_0x5824f6['transfertargetlinkedid']]);queues[_0x5824f6[_0xd0f4('0x58')]]['transfereduniqueid']=_0x5824f6[_0xd0f4('0x58')];queues[_0x5824f6[_0xd0f4('0x58')]][_0xd0f4('0x21')]=0x2;queues[_0x5824f6[_0xd0f4('0x58')]]['calleridnum']=queues[_0x5824f6['origtransfererlinkedid']]['calleridnum'];queues[_0x5824f6[_0xd0f4('0x58')]][_0xd0f4('0x59')]=queues[_0x5824f6[_0xd0f4('0x55')]]['calleridname'];queues[_0x5824f6['transfertargetuniqueid']]['queuecallerjoinAt']=utils['now']();queues[_0x5824f6['transfertargetuniqueid']][_0xd0f4('0x1a')]=utils[_0xd0f4('0x16')]();queues[_0x5824f6[_0xd0f4('0x58')]][_0xd0f4('0x33')]=0x0;queues[_0x5824f6[_0xd0f4('0x58')]][_0xd0f4('0x5e')]=0x0;utils[_0xd0f4('0x2')](util['format'](_0xd0f4('0x5f'),_0x5824f6[_0xd0f4('0x51')],queues[_0x5824f6['transfertargetuniqueid']][_0xd0f4('0x1e')],queues[_0x5824f6[_0xd0f4('0x58')]][_0xd0f4('0x1f')],queues[_0x5824f6['transfertargetuniqueid']][_0xd0f4('0x9')],queues[_0x5824f6[_0xd0f4('0x58')]]['calleridname']));}else{utils[_0xd0f4('0x2')](util[_0xd0f4('0x3')](_0xd0f4('0x5b'),_0x5824f6[_0xd0f4('0x51')],queues[_0x5824f6[_0xd0f4('0x52')]][_0xd0f4('0x1e')],_0x5824f6[_0xd0f4('0x55')]));queues[_0x5824f6['secondtransfererlinkedid']][_0xd0f4('0x1f')]=_0x5824f6[_0xd0f4('0x55')];}}}}catch(_0x1b2ed3){utils['error'](util['format'](_0xd0f4('0x50'),_0x5824f6[_0xd0f4('0x51')]),_0x1b2ed3);}};exports[_0xd0f4('0x60')]=function(_0x20e3ec){try{if(!_[_0xd0f4('0x19')](queues[_0x20e3ec['uniqueid']])){utils[_0xd0f4('0x11')](util[_0xd0f4('0x3')]('[%s][queues][musiconholdstart]',_0x20e3ec['uniqueid']),_0x20e3ec);queues[_0x20e3ec[_0xd0f4('0x5')]][_0xd0f4('0x61')]=utils[_0xd0f4('0x16')]();utils['info'](util[_0xd0f4('0x3')](_0xd0f4('0x62'),_0x20e3ec[_0xd0f4('0x5')],queues[_0x20e3ec['uniqueid']][_0xd0f4('0x1e')],queues[_0x20e3ec[_0xd0f4('0x5')]]['musiconholdstartAt']));}}catch(_0x547a22){utils[_0xd0f4('0x17')](util[_0xd0f4('0x3')](_0xd0f4('0x63'),_0x20e3ec['uniqueid']),_0x547a22);}};exports[_0xd0f4('0x64')]=function(_0x4e8435){try{if(!_[_0xd0f4('0x19')](queues[_0x4e8435[_0xd0f4('0x5')]])){if(!_[_0xd0f4('0x19')](queues[_0x4e8435[_0xd0f4('0x5')]][_0xd0f4('0x61')])){utils[_0xd0f4('0x11')](util['format'](_0xd0f4('0x65'),_0x4e8435[_0xd0f4('0x5')]),_0x4e8435);queues[_0x4e8435['uniqueid']][_0xd0f4('0x5e')]+=utils[_0xd0f4('0x34')](utils['now'](),queues[_0x4e8435[_0xd0f4('0x5')]][_0xd0f4('0x61')]);utils['info'](util[_0xd0f4('0x3')](_0xd0f4('0x66'),_0x4e8435[_0xd0f4('0x5')],queues[_0x4e8435[_0xd0f4('0x5')]][_0xd0f4('0x1e')],queues[_0x4e8435[_0xd0f4('0x5')]][_0xd0f4('0x5e')]));delete queues[_0x4e8435['uniqueid']][_0xd0f4('0x61')];}}}catch(_0x1e7988){utils[_0xd0f4('0x17')](util[_0xd0f4('0x3')](_0xd0f4('0x65'),_0x4e8435[_0xd0f4('0x5')]),_0x1e7988);}};
\ No newline at end of file
index 80eabb2..1ba314d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2185=['blinds','transfereeuniqueid','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','newstate','[%s][recordings][newstate]','isNil','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','error','varset','variable','[%s][recordings][varset]','value','endsWith','replace','.wav49','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','application','appdata','toLowerCase','startsWith','cdr','split','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereruniqueid','[%s][recordings][blindtransfer]','lodash','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid'];(function(_0x2cbaba,_0x2dc0f1){var _0x127b80=function(_0x5e8bc0){while(--_0x5e8bc0){_0x2cbaba['push'](_0x2cbaba['shift']());}};_0x127b80(++_0x2dc0f1);}(_0x2185,0xcf));var _0x5218=function(_0x160adb,_0x1cd78d){_0x160adb=_0x160adb-0x0;var _0x367fa1=_0x2185[_0x160adb];return _0x367fa1;};'use strict';var _=require(_0x5218('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0x5218('0x1'));var recordings={};function writeDB(_0x5f0c3c){var _0x2eed3a;utils[_0x5218('0x2')](util[_0x5218('0x3')](_0x5218('0x4'),_0x5f0c3c['uniqueid']));if(transfers['blinds'][_0x5f0c3c[_0x5218('0x5')]]){_0x2eed3a=_0x5f0c3c[_0x5218('0x5')];_0x5f0c3c[_0x5218('0x5')]=transfers[_0x5218('0x6')][_0x5f0c3c[_0x5218('0x5')]][_0x5218('0x7')];}if(_0x5f0c3c[_0x5218('0x8')]){utils[_0x5218('0x9')](_0x5f0c3c[_0x5218('0x8')])[_0x5218('0xa')](function(_0x4e2cfc){if(_0x4e2cfc){_0x5f0c3c[_0x5218('0xb')]=_0x4e2cfc[_0x5218('0xc')];_0x5f0c3c[_0x5218('0xd')]=_0x4e2cfc['id'];}utils['request']('CreateVoiceRecording',_0x5f0c3c);});}else{utils[_0x5218('0xe')](_0x5218('0xf'),_0x5f0c3c);}if(_0x2eed3a)delete transfers[_0x5218('0x6')][_0x2eed3a];}exports[_0x5218('0x10')]=function(_0x4f54bd){try{utils[_0x5218('0x11')](util[_0x5218('0x3')](_0x5218('0x12'),_0x4f54bd[_0x5218('0x5')]),_0x4f54bd);if(_0x4f54bd[_0x5218('0x5')]==_0x4f54bd[_0x5218('0x13')]){utils[_0x5218('0x2')](util['format'](_0x5218('0x14'),_0x4f54bd['uniqueid'],_0x4f54bd['context'],_0x4f54bd['exten']));recordings[_0x4f54bd[_0x5218('0x5')]]={'uniqueid':_0x4f54bd[_0x5218('0x5')],'accountcode':_0x4f54bd['accountcode'],'exten':_0x4f54bd[_0x5218('0x15')],'context':_0x4f54bd[_0x5218('0x16')],'channel':_0x4f54bd[_0x5218('0x17')],'monitors':[]};}}catch(_0x5e1578){utils['error'](util[_0x5218('0x3')]('[%s][recordings][newchannel]',_0x4f54bd['uniqueid']),_0x5e1578);}};exports[_0x5218('0x18')]=function(_0x303c6a){try{utils[_0x5218('0x11')](util[_0x5218('0x3')](_0x5218('0x19'),_0x303c6a[_0x5218('0x5')]),_0x303c6a);if(!_[_0x5218('0x1a')](recordings[_0x303c6a[_0x5218('0x5')]])&&_0x303c6a['channelstate']==0x6){utils[_0x5218('0x2')](util[_0x5218('0x3')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x303c6a[_0x5218('0x5')],_0x303c6a['context'],_0x303c6a[_0x5218('0x17')]));}else if(!_[_0x5218('0x1a')](recordings[_0x303c6a['linkedid']])&&_0x303c6a[_0x5218('0x1b')]==0x6&&_0x303c6a[_0x5218('0x16')]!=_0x5218('0x1c')){utils[_0x5218('0x2')](util['format'](_0x5218('0x1d'),_0x303c6a[_0x5218('0x5')],_0x303c6a[_0x5218('0x13')],_0x303c6a[_0x5218('0x16')],_0x303c6a[_0x5218('0x17')]));recordings[_0x303c6a[_0x5218('0x13')]][_0x5218('0x8')]=_0x303c6a['accountcode'];}}catch(_0x704c9a){utils[_0x5218('0x1e')](util[_0x5218('0x3')](_0x5218('0x19'),_0x303c6a[_0x5218('0x5')]),_0x704c9a);}};exports[_0x5218('0x1f')]=function(_0x45d194){try{if(!_[_0x5218('0x1a')](_0x45d194[_0x5218('0x20')])&&!_[_0x5218('0x1a')](_0x45d194['variable']['mixmonitor_filename'])){utils['debug'](util[_0x5218('0x3')](_0x5218('0x21'),_0x45d194[_0x5218('0x5')]),_0x45d194);utils[_0x5218('0x2')](util[_0x5218('0x3')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x45d194['uniqueid'],_0x45d194['variable'],_0x45d194[_0x5218('0x22')]));if(_[_0x5218('0x23')](_0x45d194[_0x5218('0x22')],'.wav49')){_0x45d194[_0x5218('0x22')]=_0x45d194[_0x5218('0x22')][_0x5218('0x24')](_0x5218('0x25'),'.WAV');}if(recordings[_0x45d194[_0x5218('0x13')]]){var _0x584d6e=_[_0x5218('0x26')](recordings[_0x45d194[_0x5218('0x13')]][_0x5218('0x27')],{'value':_0x45d194[_0x5218('0x22')]});if(_[_0x5218('0x1a')](_0x584d6e)){recordings[_0x45d194['linkedid']][_0x5218('0x27')][_0x5218('0x28')]({'value':_0x45d194['value']});}}}}catch(_0x1197e3){utils['error'](util['format'](_0x5218('0x21'),_0x45d194[_0x5218('0x5')]),_0x1197e3);}};exports[_0x5218('0x29')]=function(_0x5b7918){try{if(!_['isNil'](recordings[_0x5b7918[_0x5218('0x5')]])){utils[_0x5218('0x11')](util[_0x5218('0x3')](_0x5218('0x2a'),_0x5b7918[_0x5218('0x5')]),_0x5b7918);utils[_0x5218('0x2')](util['format'](_0x5218('0x2b'),_0x5b7918[_0x5218('0x5')],_0x5b7918[_0x5218('0x2c')],_0x5b7918[_0x5218('0x2d')],_0x5b7918[_0x5218('0x2e')]));recordings[_0x5b7918[_0x5218('0x5')]][_0x5218('0x2c')]=_0x5b7918[_0x5218('0x2c')];recordings[_0x5b7918['uniqueid']]['calleridname']=_0x5b7918['calleridname'];recordings[_0x5b7918['uniqueid']]['connectedlinenum']=_0x5b7918[_0x5218('0x2f')];recordings[_0x5b7918[_0x5218('0x5')]][_0x5218('0x30')]=_0x5b7918['connectedlinename'];if(recordings[_0x5b7918['uniqueid']][_0x5218('0x31')]==_0x5218('0x32')&&recordings[_0x5b7918[_0x5218('0x5')]]['accountcode']){recordings[_0x5b7918[_0x5218('0x5')]][_0x5218('0x2f')]=recordings[_0x5b7918[_0x5218('0x5')]]['accountcode'];recordings[_0x5b7918[_0x5218('0x5')]][_0x5218('0x30')]='';}recordings[_0x5b7918[_0x5218('0x5')]][_0x5218('0x27')][_0x5218('0x33')](function(_0x1e2f16){var _0x320964=_['clone'](recordings[_0x5b7918[_0x5218('0x5')]]);_0x320964['value']=_0x1e2f16[_0x5218('0x22')];writeDB(_0x320964);});delete recordings[_0x5b7918[_0x5218('0x5')]];}}catch(_0x51d16d){utils['error'](util['format']('[%s][recordings][hangup]',_0x5b7918[_0x5218('0x5')]),_0x51d16d);}};exports[_0x5218('0x34')]=function(_0x4fc406){try{if(!_[_0x5218('0x1a')](recordings[_0x4fc406[_0x5218('0x5')]])){utils[_0x5218('0x11')](util[_0x5218('0x3')]('[%s][recordings][newexten]',_0x4fc406[_0x5218('0x5')]),_0x4fc406);utils[_0x5218('0x2')](util[_0x5218('0x3')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x4fc406[_0x5218('0x5')],_0x4fc406[_0x5218('0x35')],_0x4fc406[_0x5218('0x36')]));if(_0x4fc406[_0x5218('0x35')][_0x5218('0x37')]()=='set'&&_[_0x5218('0x38')](_0x4fc406['appdata']['toLowerCase'](),_0x5218('0x39'))){var _0x15161=_0x4fc406[_0x5218('0x36')][_0x5218('0x3a')]('=');var _0x16e20b=_0x15161[0x0]['substring'](_0x15161[0x0][_0x5218('0x3b')]('(')+0x1,_0x15161[0x0][_0x5218('0x3b')](')'));var _0x15fa8e=_0x15161[0x1];recordings[_0x4fc406[_0x5218('0x5')]][_0x16e20b]=_0x15fa8e;}}}catch(_0x4a7f84){utils[_0x5218('0x1e')](util[_0x5218('0x3')](_0x5218('0x3c'),_0x4fc406['uniqueid']),_0x4a7f84);}};exports[_0x5218('0x3d')]=function(_0x30d1cb){try{if(!_[_0x5218('0x1a')](recordings[_0x30d1cb['uniqueid']])){utils[_0x5218('0x11')](util[_0x5218('0x3')](_0x5218('0x3e'),_0x30d1cb['uniqueid']),_0x30d1cb);utils['info'](util[_0x5218('0x3')](_0x5218('0x3f'),_0x30d1cb[_0x5218('0x5')],_0x30d1cb[_0x5218('0x40')]));recordings[_0x30d1cb[_0x5218('0x5')]][_0x5218('0x40')]=_0x30d1cb[_0x5218('0x40')];}}catch(_0x1e652b){utils[_0x5218('0x1e')](util[_0x5218('0x3')](_0x5218('0x3e'),_0x30d1cb['uniqueid']),_0x1e652b);}};exports[_0x5218('0x41')]=function(_0x5dd57f){try{utils['debug'](util[_0x5218('0x3')]('[%s][recordings][blindtransfer]',_0x5dd57f[_0x5218('0x5')]),_0x5dd57f);utils[_0x5218('0x2')](util[_0x5218('0x3')](_0x5218('0x42'),_0x5dd57f[_0x5218('0x5')],_0x5dd57f[_0x5218('0x43')],_0x5dd57f[_0x5218('0x44')],_0x5dd57f['transfereecalleridnum'],_0x5dd57f['transfereecalleridname']));if(recordings[_0x5dd57f[_0x5218('0x45')]]&&transfers[_0x5218('0x6')][_0x5dd57f['transfereruniqueid']]){transfers[_0x5218('0x6')][_0x5dd57f[_0x5218('0x45')]]['recording']=!![];}}catch(_0x404cd7){utils[_0x5218('0x1e')](util[_0x5218('0x3')](_0x5218('0x46'),_0x5dd57f[_0x5218('0x5')]),_0x404cd7);}};
\ No newline at end of file
+var _0xc39e=['cause-txt','connectedlinenum','connectedlinename','type','clone','[%s][recordings][newexten]','application','appdata','toLowerCase','startsWith','cdr','split','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','lodash','util','./transfers.controller','info','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','format','newstate','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','calleridnum','calleridname'];(function(_0x28a08c,_0x277a93){var _0x546671=function(_0x11d7dd){while(--_0x11d7dd){_0x28a08c['push'](_0x28a08c['shift']());}};_0x546671(++_0x277a93);}(_0xc39e,0x1ce));var _0xec39=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc39e[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xec39('0x0'));var util=require(_0xec39('0x1'));var utils=require('./utils');var transfers=require(_0xec39('0x2'));var recordings={};function writeDB(_0x5c8033){var _0x425fb8;utils[_0xec39('0x3')](util['format'](_0xec39('0x4'),_0x5c8033[_0xec39('0x5')]));if(transfers[_0xec39('0x6')][_0x5c8033[_0xec39('0x5')]]){_0x425fb8=_0x5c8033[_0xec39('0x5')];_0x5c8033[_0xec39('0x5')]=transfers[_0xec39('0x6')][_0x5c8033['uniqueid']][_0xec39('0x7')];}if(_0x5c8033[_0xec39('0x8')]){utils[_0xec39('0x9')](_0x5c8033[_0xec39('0x8')])[_0xec39('0xa')](function(_0x38fbd3){if(_0x38fbd3){_0x5c8033[_0xec39('0xb')]=_0x38fbd3[_0xec39('0xc')];_0x5c8033[_0xec39('0xd')]=_0x38fbd3['id'];}utils[_0xec39('0xe')]('CreateVoiceRecording',_0x5c8033);});}else{utils['request'](_0xec39('0xf'),_0x5c8033);}if(_0x425fb8)delete transfers['blinds'][_0x425fb8];}exports[_0xec39('0x10')]=function(_0x325323){try{utils[_0xec39('0x11')](util['format'](_0xec39('0x12'),_0x325323[_0xec39('0x5')]),_0x325323);if(_0x325323[_0xec39('0x5')]==_0x325323[_0xec39('0x13')]){utils['info'](util['format'](_0xec39('0x14'),_0x325323[_0xec39('0x5')],_0x325323[_0xec39('0x15')],_0x325323[_0xec39('0x16')]));recordings[_0x325323[_0xec39('0x5')]]={'uniqueid':_0x325323[_0xec39('0x5')],'accountcode':_0x325323[_0xec39('0x8')],'exten':_0x325323[_0xec39('0x16')],'context':_0x325323['context'],'channel':_0x325323[_0xec39('0x17')],'monitors':[]};}}catch(_0x372864){utils[_0xec39('0x18')](util[_0xec39('0x19')](_0xec39('0x12'),_0x325323['uniqueid']),_0x372864);}};exports[_0xec39('0x1a')]=function(_0x5372a2){try{utils[_0xec39('0x11')](util[_0xec39('0x19')](_0xec39('0x1b'),_0x5372a2[_0xec39('0x5')]),_0x5372a2);if(!_[_0xec39('0x1c')](recordings[_0x5372a2[_0xec39('0x5')]])&&_0x5372a2['channelstate']==0x6){utils[_0xec39('0x3')](util[_0xec39('0x19')](_0xec39('0x1d'),_0x5372a2[_0xec39('0x5')],_0x5372a2[_0xec39('0x15')],_0x5372a2[_0xec39('0x17')]));}else if(!_[_0xec39('0x1c')](recordings[_0x5372a2[_0xec39('0x13')]])&&_0x5372a2[_0xec39('0x1e')]==0x6&&_0x5372a2['context']!=_0xec39('0x1f')){utils[_0xec39('0x3')](util[_0xec39('0x19')](_0xec39('0x20'),_0x5372a2[_0xec39('0x5')],_0x5372a2[_0xec39('0x13')],_0x5372a2[_0xec39('0x15')],_0x5372a2[_0xec39('0x17')]));recordings[_0x5372a2[_0xec39('0x13')]][_0xec39('0x8')]=_0x5372a2[_0xec39('0x8')];}}catch(_0x153b67){utils[_0xec39('0x18')](util[_0xec39('0x19')](_0xec39('0x1b'),_0x5372a2[_0xec39('0x5')]),_0x153b67);}};exports[_0xec39('0x21')]=function(_0x3e6947){try{if(!_['isNil'](_0x3e6947[_0xec39('0x22')])&&!_[_0xec39('0x1c')](_0x3e6947['variable']['mixmonitor_filename'])){utils[_0xec39('0x11')](util[_0xec39('0x19')]('[%s][recordings][varset]',_0x3e6947['uniqueid']),_0x3e6947);utils[_0xec39('0x3')](util['format'](_0xec39('0x23'),_0x3e6947[_0xec39('0x5')],_0x3e6947[_0xec39('0x22')],_0x3e6947[_0xec39('0x24')]));if(_[_0xec39('0x25')](_0x3e6947[_0xec39('0x24')],_0xec39('0x26'))){_0x3e6947[_0xec39('0x24')]=_0x3e6947['value'][_0xec39('0x27')](_0xec39('0x26'),_0xec39('0x28'));}if(recordings[_0x3e6947[_0xec39('0x13')]]){var _0x838c74=_[_0xec39('0x29')](recordings[_0x3e6947[_0xec39('0x13')]][_0xec39('0x2a')],{'value':_0x3e6947[_0xec39('0x24')]});if(_[_0xec39('0x1c')](_0x838c74)){recordings[_0x3e6947[_0xec39('0x13')]][_0xec39('0x2a')][_0xec39('0x2b')]({'value':_0x3e6947['value']});}}}}catch(_0x3a3264){utils['error'](util[_0xec39('0x19')](_0xec39('0x2c'),_0x3e6947[_0xec39('0x5')]),_0x3a3264);}};exports[_0xec39('0x2d')]=function(_0x1815c7){try{if(!_[_0xec39('0x1c')](recordings[_0x1815c7[_0xec39('0x5')]])){utils['debug'](util[_0xec39('0x19')](_0xec39('0x2e'),_0x1815c7[_0xec39('0x5')]),_0x1815c7);utils[_0xec39('0x3')](util[_0xec39('0x19')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x1815c7[_0xec39('0x5')],_0x1815c7[_0xec39('0x2f')],_0x1815c7[_0xec39('0x30')],_0x1815c7[_0xec39('0x31')]));recordings[_0x1815c7[_0xec39('0x5')]][_0xec39('0x2f')]=_0x1815c7[_0xec39('0x2f')];recordings[_0x1815c7['uniqueid']][_0xec39('0x30')]=_0x1815c7[_0xec39('0x30')];recordings[_0x1815c7[_0xec39('0x5')]][_0xec39('0x32')]=_0x1815c7[_0xec39('0x32')];recordings[_0x1815c7[_0xec39('0x5')]][_0xec39('0x33')]=_0x1815c7[_0xec39('0x33')];if(recordings[_0x1815c7[_0xec39('0x5')]][_0xec39('0x34')]=='outbound'&&recordings[_0x1815c7[_0xec39('0x5')]][_0xec39('0x8')]){recordings[_0x1815c7[_0xec39('0x5')]]['connectedlinenum']=recordings[_0x1815c7['uniqueid']][_0xec39('0x8')];recordings[_0x1815c7['uniqueid']][_0xec39('0x33')]='';}recordings[_0x1815c7[_0xec39('0x5')]][_0xec39('0x2a')]['forEach'](function(_0x27ae3a){var _0x49ceaf=_[_0xec39('0x35')](recordings[_0x1815c7['uniqueid']]);_0x49ceaf['value']=_0x27ae3a[_0xec39('0x24')];writeDB(_0x49ceaf);});delete recordings[_0x1815c7[_0xec39('0x5')]];}}catch(_0x5ce5c2){utils['error'](util[_0xec39('0x19')]('[%s][recordings][hangup]',_0x1815c7[_0xec39('0x5')]),_0x5ce5c2);}};exports['newexten']=function(_0x4a89e8){try{if(!_[_0xec39('0x1c')](recordings[_0x4a89e8[_0xec39('0x5')]])){utils[_0xec39('0x11')](util['format'](_0xec39('0x36'),_0x4a89e8[_0xec39('0x5')]),_0x4a89e8);utils['info'](util[_0xec39('0x19')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x4a89e8[_0xec39('0x5')],_0x4a89e8[_0xec39('0x37')],_0x4a89e8[_0xec39('0x38')]));if(_0x4a89e8[_0xec39('0x37')][_0xec39('0x39')]()=='set'&&_[_0xec39('0x3a')](_0x4a89e8[_0xec39('0x38')][_0xec39('0x39')](),_0xec39('0x3b'))){var _0x3cd7da=_0x4a89e8[_0xec39('0x38')][_0xec39('0x3c')]('=');var _0x185cfb=_0x3cd7da[0x0][_0xec39('0x3d')](_0x3cd7da[0x0][_0xec39('0x3e')]('(')+0x1,_0x3cd7da[0x0][_0xec39('0x3e')](')'));var _0x52fe21=_0x3cd7da[0x1];recordings[_0x4a89e8[_0xec39('0x5')]][_0x185cfb]=_0x52fe21;}}}catch(_0x2e7157){utils[_0xec39('0x18')](util[_0xec39('0x19')](_0xec39('0x36'),_0x4a89e8[_0xec39('0x5')]),_0x2e7157);}};exports['queuecallerjoin']=function(_0x5e426a){try{if(!_['isNil'](recordings[_0x5e426a[_0xec39('0x5')]])){utils[_0xec39('0x11')](util['format'](_0xec39('0x3f'),_0x5e426a[_0xec39('0x5')]),_0x5e426a);utils['info'](util[_0xec39('0x19')](_0xec39('0x40'),_0x5e426a['uniqueid'],_0x5e426a[_0xec39('0x41')]));recordings[_0x5e426a[_0xec39('0x5')]][_0xec39('0x41')]=_0x5e426a[_0xec39('0x41')];}}catch(_0x56b14){utils[_0xec39('0x18')](util[_0xec39('0x19')](_0xec39('0x3f'),_0x5e426a[_0xec39('0x5')]),_0x56b14);}};exports[_0xec39('0x42')]=function(_0x5e6ab0){try{utils[_0xec39('0x11')](util[_0xec39('0x19')](_0xec39('0x43'),_0x5e6ab0[_0xec39('0x5')]),_0x5e6ab0);utils[_0xec39('0x3')](util['format']('[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x5e6ab0['uniqueid'],_0x5e6ab0[_0xec39('0x44')],_0x5e6ab0[_0xec39('0x45')],_0x5e6ab0[_0xec39('0x46')],_0x5e6ab0[_0xec39('0x47')]));if(recordings[_0x5e6ab0[_0xec39('0x48')]]&&transfers[_0xec39('0x6')][_0x5e6ab0[_0xec39('0x48')]]){transfers[_0xec39('0x6')][_0x5e6ab0[_0xec39('0x48')]]['recording']=!![];}}catch(_0x589205){utils[_0xec39('0x18')](util[_0xec39('0x19')](_0xec39('0x43'),_0x5e6ab0[_0xec39('0x5')]),_0x589205);}};
\ No newline at end of file
index 6c35d31..477d054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x862b=['error','lodash','util','info','format','type','attended','origtransfereruniqueid','uniqueid','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','[%s][transfers][blindtransfer]','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetlinkedid'];(function(_0x13b796,_0x19507b){var _0x54757d=function(_0x5805ea){while(--_0x5805ea){_0x13b796['push'](_0x13b796['shift']());}};_0x54757d(++_0x19507b);}(_0x862b,0x1cf));var _0xb862=function(_0x474cc5,_0x1dd817){_0x474cc5=_0x474cc5-0x0;var _0x385cb3=_0x862b[_0x474cc5];return _0x385cb3;};'use strict';var _=require(_0xb862('0x0'));var util=require(_0xb862('0x1'));var utils=require('./utils');function writeDB(_0x511447){utils[_0xb862('0x2')](util[_0xb862('0x3')]('[%s][transfers][writeDB]\x20type:%s',_0x511447[_0xb862('0x4')]===_0xb862('0x5')?_0x511447[_0xb862('0x6')]:_0x511447[_0xb862('0x7')],_0x511447['type']));utils['request']('CreateVoiceTransferReport',_0x511447);}exports[_0xb862('0x8')]={};exports[_0xb862('0x9')]=function(_0x5b476e){try{utils[_0xb862('0xa')](util['format']('[%s][transfers][blindtransfer]',_0x5b476e[_0xb862('0x7')]),_0x5b476e);utils['info'](util[_0xb862('0x3')](_0xb862('0xb'),_0x5b476e['uniqueid'],_0x5b476e['transferercalleridnum'],_0x5b476e[_0xb862('0xc')],_0x5b476e[_0xb862('0xd')],_0x5b476e[_0xb862('0xe')]));_0x5b476e[_0xb862('0x4')]=_0xb862('0xf');exports[_0xb862('0x8')][_0x5b476e[_0xb862('0x10')]]=_0x5b476e;writeDB(_0x5b476e);}catch(_0x3a3628){utils['error'](util['format'](_0xb862('0x11'),_0x5b476e['uniqueid']),_0x3a3628);}};exports[_0xb862('0x12')]=function(_0x1c375e){try{utils[_0xb862('0xa')](util[_0xb862('0x3')](_0xb862('0x13'),_0x1c375e['origtransfereruniqueid']),_0x1c375e);utils['info'](util[_0xb862('0x3')](_0xb862('0x14'),_0x1c375e[_0xb862('0x6')],_0x1c375e[_0xb862('0x15')],_0x1c375e[_0xb862('0x16')],_0x1c375e[_0xb862('0x17')],_0x1c375e[_0xb862('0x18')]));_0x1c375e=_['assign'](_0x1c375e,{'transfererchannel':_0x1c375e[_0xb862('0x19')],'transferercalleridnum':_0x1c375e['origtransferercalleridnum'],'transferercalleridname':_0x1c375e[_0xb862('0x16')],'transfererconnectedlinenum':_0x1c375e[_0xb862('0x1a')],'transfererconnectedlinename':_0x1c375e[_0xb862('0x1b')],'transfereraccountcode':_0x1c375e[_0xb862('0x1c')],'transferercontext':_0x1c375e[_0xb862('0x1d')],'transfererexten':_0x1c375e[_0xb862('0x1e')],'transfererlinkedid':_0x1c375e[_0xb862('0x1f')],'context':_0x1c375e[_0xb862('0x20')],'extension':_0x1c375e[_0xb862('0x21')],'type':_0xb862('0x5')});if(_[_0xb862('0x22')](_0x1c375e[_0xb862('0x23')])){_0x1c375e=_[_0xb862('0x24')](_0x1c375e,{'transfereechannel':_0x1c375e[_0xb862('0x25')],'transfereecalleridnum':_0x1c375e[_0xb862('0x17')],'transfereecalleridname':_0x1c375e[_0xb862('0x18')],'transfereeconnectedlinenum':_0x1c375e['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x1c375e[_0xb862('0x26')],'transfereeaccountcode':_0x1c375e[_0xb862('0x27')],'transfereecontext':_0x1c375e['transfertargetcontext'],'transfereeexten':_0x1c375e['transfertargetexten'],'transfereelinkedid':_0x1c375e[_0xb862('0x28')]});}writeDB(_0x1c375e);}catch(_0x49ed52){utils[_0xb862('0x29')](util['format'](_0xb862('0x13'),_0x1c375e['origtransfereruniqueid']),_0x49ed52);}};
\ No newline at end of file
+var _0x7544=['[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','assign','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','attended','transfereechannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','error','lodash','util','./utils','format','[%s][transfers][writeDB]\x20type:%s','origtransfereruniqueid','uniqueid','type','blinds','blindtransfer','debug','info','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridname','blind','transfereruniqueid','[%s][transfers][blindtransfer]','attendedtransfer','[%s][transfers][attendedtransfer]'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7544,0xb4));var _0x4754=function(_0x395ef5,_0x5b2b83){_0x395ef5=_0x395ef5-0x0;var _0x4aad8e=_0x7544[_0x395ef5];return _0x4aad8e;};'use strict';var _=require(_0x4754('0x0'));var util=require(_0x4754('0x1'));var utils=require(_0x4754('0x2'));function writeDB(_0x2ca248){utils['info'](util[_0x4754('0x3')](_0x4754('0x4'),_0x2ca248['type']==='attended'?_0x2ca248[_0x4754('0x5')]:_0x2ca248[_0x4754('0x6')],_0x2ca248[_0x4754('0x7')]));utils['request']('CreateVoiceTransferReport',_0x2ca248);}exports[_0x4754('0x8')]={};exports[_0x4754('0x9')]=function(_0x2910ab){try{utils[_0x4754('0xa')](util[_0x4754('0x3')]('[%s][transfers][blindtransfer]',_0x2910ab[_0x4754('0x6')]),_0x2910ab);utils[_0x4754('0xb')](util[_0x4754('0x3')](_0x4754('0xc'),_0x2910ab[_0x4754('0x6')],_0x2910ab[_0x4754('0xd')],_0x2910ab['transferercalleridname'],_0x2910ab['transfereecalleridnum'],_0x2910ab[_0x4754('0xe')]));_0x2910ab[_0x4754('0x7')]=_0x4754('0xf');exports['blinds'][_0x2910ab[_0x4754('0x10')]]=_0x2910ab;writeDB(_0x2910ab);}catch(_0x12a213){utils['error'](util['format'](_0x4754('0x11'),_0x2910ab[_0x4754('0x6')]),_0x12a213);}};exports[_0x4754('0x12')]=function(_0x3d90db){try{utils[_0x4754('0xa')](util[_0x4754('0x3')](_0x4754('0x13'),_0x3d90db['origtransfereruniqueid']),_0x3d90db);utils['info'](util['format'](_0x4754('0x14'),_0x3d90db[_0x4754('0x5')],_0x3d90db[_0x4754('0x15')],_0x3d90db['origtransferercalleridname'],_0x3d90db[_0x4754('0x16')],_0x3d90db[_0x4754('0x17')]));_0x3d90db=_[_0x4754('0x18')](_0x3d90db,{'transfererchannel':_0x3d90db['origtransfererchannel'],'transferercalleridnum':_0x3d90db[_0x4754('0x15')],'transferercalleridname':_0x3d90db['origtransferercalleridname'],'transfererconnectedlinenum':_0x3d90db[_0x4754('0x19')],'transfererconnectedlinename':_0x3d90db['secondtransfererconnectedlinename'],'transfereraccountcode':_0x3d90db[_0x4754('0x1a')],'transferercontext':_0x3d90db[_0x4754('0x1b')],'transfererexten':_0x3d90db[_0x4754('0x1c')],'transfererlinkedid':_0x3d90db[_0x4754('0x1d')],'context':_0x3d90db[_0x4754('0x1e')],'extension':_0x3d90db[_0x4754('0x1f')],'type':_0x4754('0x20')});if(_['isNil'](_0x3d90db[_0x4754('0x21')])){_0x3d90db=_['assign'](_0x3d90db,{'transfereechannel':_0x3d90db['transfertargetchannel'],'transfereecalleridnum':_0x3d90db[_0x4754('0x16')],'transfereecalleridname':_0x3d90db[_0x4754('0x17')],'transfereeconnectedlinenum':_0x3d90db[_0x4754('0x22')],'transfereeconnectedlinename':_0x3d90db[_0x4754('0x23')],'transfereeaccountcode':_0x3d90db[_0x4754('0x24')],'transfereecontext':_0x3d90db[_0x4754('0x25')],'transfereeexten':_0x3d90db[_0x4754('0x26')],'transfereelinkedid':_0x3d90db['transfertargetlinkedid']});}writeDB(_0x3d90db);}catch(_0x43eadf){utils[_0x4754('0x27')](util[_0x4754('0x3')](_0x4754('0x13'),_0x3d90db[_0x4754('0x5')]),_0x43eadf);}};
\ No newline at end of file
index 2e90728..e7cc3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x515a=['isBefore','moment','util','client','http','../../config/logger','xdr','info','debug','inspect','error','request','then','[utils][request]\x20name:%s','GetUser','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','catch','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','name','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','addTime','add','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','seconds','diff','sumTime','isAfter'];(function(_0x415d1b,_0x21639e){var _0x3f815d=function(_0x1eba2a){while(--_0x1eba2a){_0x415d1b['push'](_0x415d1b['shift']());}};_0x3f815d(++_0x21639e);}(_0x515a,0x14a));var _0xa515=function(_0x350fc2,_0x383bf2){_0x350fc2=_0x350fc2-0x0;var _0x3a9d2c=_0x515a[_0x350fc2];return _0x3a9d2c;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var moment=require(_0xa515('0x0'));var util=require(_0xa515('0x1'));var client=jayson[_0xa515('0x2')][_0xa515('0x3')]({'port':0x2329});var logger=require(_0xa515('0x4'))(_0xa515('0x5'));exports['info']=function(_0x1e8a69,_0x20a0fc){logger[_0xa515('0x6')](_0x1e8a69,_0x20a0fc?util['inspect'](_0x20a0fc,{'showHidden':![],'depth':null}):'');};exports[_0xa515('0x7')]=function(_0x19b746,_0x33d7bd){logger[_0xa515('0x7')](_0x19b746,_0x33d7bd?util[_0xa515('0x8')](_0x33d7bd,{'showHidden':![],'depth':null}):'');};exports[_0xa515('0x9')]=function(_0xd0e3d8,_0x5da68a){logger[_0xa515('0x9')](_0xd0e3d8,_0x5da68a?util[_0xa515('0x8')](_0x5da68a,{'showHidden':![],'depth':null}):'');};exports[_0xa515('0xa')]=function(_0x3e84c7,_0x1872d2){return client[_0xa515('0xa')](_0x3e84c7,{'body':_0x1872d2})[_0xa515('0xb')](function(_0x21b9b3){logger[_0xa515('0x7')](_0xa515('0xc'),_0x3e84c7,_0x21b9b3?util[_0xa515('0x8')](_0x21b9b3,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x3700dd){logger[_0xa515('0x9')]('[utils][request]\x20name:%s',_0x3e84c7,_0x3700dd?util[_0xa515('0x8')](_0x3700dd,{'showHidden':![],'depth':null}):'');});};function getUser(_0xacc7d8){return client[_0xa515('0xa')](_0xa515('0xd'),{'options':{'raw':!![],'attributes':['id','internal','name',_0xa515('0xe')],'where':_0xacc7d8,'limit':0x1}})['then'](function(_0x5db18b){logger[_0xa515('0x7')](_0xa515('0xf'),JSON[_0xa515('0x10')](_0xacc7d8),_0x5db18b?util['inspect'](_0x5db18b,{'showHidden':![],'depth':null}):'');return _0x5db18b[_0xa515('0x11')][_0xa515('0x12')]?_0x5db18b[_0xa515('0x11')][0x0]:null;});}exports[_0xa515('0x13')]=function(_0x441e5b){return new BPromise(function(_0x1e8ccf,_0xd4cbf5){if(_0x441e5b){return getUser({'internal':_0x441e5b})['then'](function(_0x45da7f){logger[_0xa515('0x6')](_0xa515('0x14'),_0x441e5b,_0x45da7f?_0xa515('0x15'):_0xa515('0x16'));return _0x1e8ccf(_0x45da7f);})['catch'](function(_0x3a68de){logger[_0xa515('0x9')](_0xa515('0x17'),_0x3a68de?util[_0xa515('0x8')](_0x3a68de,{'showHidden':![],'depth':null}):'');return _0x1e8ccf(null);});}return _0x1e8ccf(null);});};exports[_0xa515('0x18')]=function(_0x4ad4cf){return new BPromise(function(_0x33368f,_0x3570ef){if(_0x4ad4cf){return getUser({'interface':_0x4ad4cf})[_0xa515('0xb')](function(_0x50a36c){logger['info'](_0xa515('0x19'),_0x4ad4cf,_0x50a36c?'found':_0xa515('0x16'));return _0x33368f(_0x50a36c);})[_0xa515('0x1a')](function(_0x97db9d){logger[_0xa515('0x9')](_0xa515('0x1b'),_0x97db9d?util[_0xa515('0x8')](_0x97db9d,{'showHidden':![],'depth':null}):'');return _0x33368f(null);});}return _0x33368f(null);});};exports['getUserByName']=function(_0x181b6b){return new BPromise(function(_0x4cae55,_0x442ea3){if(_0x181b6b){return getUser({'name':_0x181b6b})[_0xa515('0xb')](function(_0x2b04be){logger[_0xa515('0x6')](_0xa515('0x1c'),_0x181b6b,_0x2b04be?'found':_0xa515('0x16'));return _0x4cae55(_0x2b04be);})[_0xa515('0x1a')](function(_0x2f7ab2){logger[_0xa515('0x9')](_0xa515('0x1d'),_0x2f7ab2?util[_0xa515('0x8')](_0x2f7ab2,{'showHidden':![],'depth':null}):'');return _0x4cae55(null);});}return _0x4cae55(null);});};exports[_0xa515('0x1e')]=function(_0x1cf6f2){return new BPromise(function(_0x3b6fc0,_0xad9846){if(_0x1cf6f2){return client[_0xa515('0xa')](_0xa515('0x1f'),{'options':{'raw':!![],'attributes':['id',_0xa515('0x20'),_0xa515('0x21'),_0xa515('0x22'),_0xa515('0x23')],'where':{'name':_0x1cf6f2},'limit':0x1}})[_0xa515('0xb')](function(_0x5403cc){logger[_0xa515('0x7')](_0xa515('0x24'),_0x1cf6f2,_0x5403cc?util[_0xa515('0x8')](_0x5403cc,{'showHidden':![],'depth':null}):'');logger[_0xa515('0x6')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x1cf6f2,_0x5403cc?_0xa515('0x15'):_0xa515('0x16'));return _0x3b6fc0(_0x5403cc[_0xa515('0x11')][_0xa515('0x12')]?_0x5403cc[_0xa515('0x11')][0x0]:null);})[_0xa515('0x1a')](function(_0x39c4df){logger[_0xa515('0x9')]('[utils][getVoiceQueueByName]',_0x39c4df?util[_0xa515('0x8')](_0x39c4df,{'showHidden':![],'depth':null}):'');return _0x3b6fc0(null);});}return _0x3b6fc0(null);});};exports[_0xa515('0x25')]=function(_0x21ad2f,_0x296465){return moment(_0x21ad2f)[_0xa515('0x26')](_0x296465,'seconds')[_0xa515('0x27')](_0xa515('0x28'));};exports[_0xa515('0x29')]=function(_0x1312df,_0xe7017e){return moment(_0x1312df)['subtract'](_0xe7017e,_0xa515('0x2a'))['format'](_0xa515('0x28'));};exports['diffTime']=function(_0x18aa80,_0x591caa){return moment(_0x18aa80)[_0xa515('0x2b')](moment(_0x591caa),_0xa515('0x2a'));};exports[_0xa515('0x2c')]=function(_0x189140,_0xab2988){return parseInt(_0x189140,0xa)+parseInt(_0xab2988,0xa);};exports['now']=function(){return moment()[_0xa515('0x27')](_0xa515('0x28'));};exports[_0xa515('0x2d')]=function(_0x400e77,_0x4efc9a){if(_0x4efc9a){return moment(_0x400e77)['isAfter'](_0x4efc9a);}return!![];};exports[_0xa515('0x2e')]=function(_0x272958,_0x343754){if(_0x343754){return moment(_0x272958)[_0xa515('0x2e')](_0x343754);}else if(_0x272958){return!![];}return![];};
\ No newline at end of file
+var _0x9ea3=['diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','[utils][getUserByInternal]','getUserByInterface','found','notfound','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','result','[utils][getVoiceQueueByName]','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','format','diffTime'];(function(_0x1aebe1,_0x393284){var _0x56b548=function(_0x1587fc){while(--_0x1587fc){_0x1aebe1['push'](_0x1aebe1['shift']());}};_0x56b548(++_0x393284);}(_0x9ea3,0x12b));var _0x39ea=function(_0x48e1ec,_0x35f468){_0x48e1ec=_0x48e1ec-0x0;var _0x3b33eb=_0x9ea3[_0x48e1ec];return _0x3b33eb;};'use strict';var BPromise=require(_0x39ea('0x0'));var jayson=require(_0x39ea('0x1'));var moment=require(_0x39ea('0x2'));var util=require(_0x39ea('0x3'));var client=jayson[_0x39ea('0x4')][_0x39ea('0x5')]({'port':0x2329});var logger=require(_0x39ea('0x6'))('xdr');exports[_0x39ea('0x7')]=function(_0x129660,_0x229027){logger['info'](_0x129660,_0x229027?util[_0x39ea('0x8')](_0x229027,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x509a46,_0x148728){logger[_0x39ea('0x9')](_0x509a46,_0x148728?util[_0x39ea('0x8')](_0x148728,{'showHidden':![],'depth':null}):'');};exports[_0x39ea('0xa')]=function(_0x2b0b86,_0xbeaf08){logger[_0x39ea('0xa')](_0x2b0b86,_0xbeaf08?util['inspect'](_0xbeaf08,{'showHidden':![],'depth':null}):'');};exports[_0x39ea('0xb')]=function(_0x586847,_0x49f425){return client[_0x39ea('0xb')](_0x586847,{'body':_0x49f425})[_0x39ea('0xc')](function(_0x2ba289){logger[_0x39ea('0x9')](_0x39ea('0xd'),_0x586847,_0x2ba289?util[_0x39ea('0x8')](_0x2ba289,{'showHidden':![],'depth':null}):'');})[_0x39ea('0xe')](function(_0x3ba7c0){logger['error'](_0x39ea('0xd'),_0x586847,_0x3ba7c0?util[_0x39ea('0x8')](_0x3ba7c0,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2af92a){return client[_0x39ea('0xb')](_0x39ea('0xf'),{'options':{'raw':!![],'attributes':['id',_0x39ea('0x10'),_0x39ea('0x11'),_0x39ea('0x12')],'where':_0x2af92a,'limit':0x1}})[_0x39ea('0xc')](function(_0x233ad9){logger[_0x39ea('0x9')](_0x39ea('0x13'),JSON[_0x39ea('0x14')](_0x2af92a),_0x233ad9?util['inspect'](_0x233ad9,{'showHidden':![],'depth':null}):'');return _0x233ad9['result'][_0x39ea('0x15')]?_0x233ad9['result'][0x0]:null;});}exports[_0x39ea('0x16')]=function(_0x511b70){return new BPromise(function(_0x5d06c9,_0x3bd46d){if(_0x511b70){return getUser({'internal':_0x511b70})[_0x39ea('0xc')](function(_0x35e450){logger[_0x39ea('0x7')](_0x39ea('0x17'),_0x511b70,_0x35e450?'found':'notfound');return _0x5d06c9(_0x35e450);})[_0x39ea('0xe')](function(_0x54e248){logger[_0x39ea('0xa')](_0x39ea('0x18'),_0x54e248?util[_0x39ea('0x8')](_0x54e248,{'showHidden':![],'depth':null}):'');return _0x5d06c9(null);});}return _0x5d06c9(null);});};exports[_0x39ea('0x19')]=function(_0x1030e7){return new BPromise(function(_0x3f01b6,_0x15df2f){if(_0x1030e7){return getUser({'interface':_0x1030e7})[_0x39ea('0xc')](function(_0x110a87){logger['info']('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x1030e7,_0x110a87?_0x39ea('0x1a'):_0x39ea('0x1b'));return _0x3f01b6(_0x110a87);})['catch'](function(_0x4c458b){logger[_0x39ea('0xa')](_0x39ea('0x1c'),_0x4c458b?util[_0x39ea('0x8')](_0x4c458b,{'showHidden':![],'depth':null}):'');return _0x3f01b6(null);});}return _0x3f01b6(null);});};exports[_0x39ea('0x1d')]=function(_0x514d7a){return new BPromise(function(_0x1906c1,_0x22df78){if(_0x514d7a){return getUser({'name':_0x514d7a})[_0x39ea('0xc')](function(_0x2ddb9f){logger[_0x39ea('0x7')]('[utils][getUserByName]\x20name:%s\x20%s',_0x514d7a,_0x2ddb9f?_0x39ea('0x1a'):_0x39ea('0x1b'));return _0x1906c1(_0x2ddb9f);})[_0x39ea('0xe')](function(_0x1546af){logger[_0x39ea('0xa')](_0x39ea('0x1e'),_0x1546af?util['inspect'](_0x1546af,{'showHidden':![],'depth':null}):'');return _0x1906c1(null);});}return _0x1906c1(null);});};exports['getVoiceQueueByName']=function(_0x397cbf){return new BPromise(function(_0x1a6a27,_0x138ce6){if(_0x397cbf){return client['request']('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0x39ea('0x11'),'type',_0x39ea('0x1f'),_0x39ea('0x20')],'where':{'name':_0x397cbf},'limit':0x1}})[_0x39ea('0xc')](function(_0x17c96e){logger[_0x39ea('0x9')](_0x39ea('0x21'),_0x397cbf,_0x17c96e?util[_0x39ea('0x8')](_0x17c96e,{'showHidden':![],'depth':null}):'');logger[_0x39ea('0x7')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x397cbf,_0x17c96e?_0x39ea('0x1a'):_0x39ea('0x1b'));return _0x1a6a27(_0x17c96e[_0x39ea('0x22')]['length']?_0x17c96e['result'][0x0]:null);})['catch'](function(_0x4d236f){logger['error'](_0x39ea('0x23'),_0x4d236f?util[_0x39ea('0x8')](_0x4d236f,{'showHidden':![],'depth':null}):'');return _0x1a6a27(null);});}return _0x1a6a27(null);});};exports[_0x39ea('0x24')]=function(_0x171159,_0xfa2fa2){return moment(_0x171159)[_0x39ea('0x25')](_0xfa2fa2,_0x39ea('0x26'))['format'](_0x39ea('0x27'));};exports[_0x39ea('0x28')]=function(_0x89b2e3,_0x509c04){return moment(_0x89b2e3)[_0x39ea('0x29')](_0x509c04,'seconds')[_0x39ea('0x2a')](_0x39ea('0x27'));};exports[_0x39ea('0x2b')]=function(_0x2e5694,_0x17728d){return moment(_0x2e5694)[_0x39ea('0x2c')](moment(_0x17728d),_0x39ea('0x26'));};exports[_0x39ea('0x2d')]=function(_0x2f9dc4,_0x49526c){return parseInt(_0x2f9dc4,0xa)+parseInt(_0x49526c,0xa);};exports[_0x39ea('0x2e')]=function(){return moment()['format'](_0x39ea('0x27'));};exports['isAfter']=function(_0x5ebc02,_0x2b2bd5){if(_0x2b2bd5){return moment(_0x5ebc02)[_0x39ea('0x2f')](_0x2b2bd5);}return!![];};exports[_0x39ea('0x30')]=function(_0x3197ea,_0x426452){if(_0x426452){return moment(_0x3197ea)['isBefore'](_0x426452);}else if(_0x3197ea){return!![];}return![];};
\ No newline at end of file